Changes between Version 63 and Version 64 of library_stdio
- Timestamp:
- Apr 11, 2015, 10:57:52 PM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
library_stdio
v63 v64 45 45 == __Coprocessors related system calls__ == 46 46 47 The GIET_VM allows user applications to use hardware accelerators (called coprocessors). These coprocessors can be distributed in the architecture, but there is at most one coprocessor per cluster , identified by the cluster (x,y) coordinares. To be supported by the GIET_VM, a coprocessor must use the ''vci_mwmr_dma'' component, that is amulti-channels DMA controller.47 The GIET_VM allows user applications to use hardware accelerators (called coprocessors). These coprocessors can be distributed in the architecture, but there is at most one coprocessor per cluster. To be supported by the GIET_VM, a coprocessor must use the ''vci_mwmr_dma'' component, that is a generic multi-channels DMA controller. 48 48 49 49 On the coprocessor side, it provides TO_COPROC or FROM_COPROC ports, that implement FIFO interfaces. Coprocessor can request to transfer one or several bursts of 32 bits words on a TO_COPROC or FROM_COPROC port, without address. The burst size (generally a cache line), the number of TO_COPROC and FROM_COPROC ports, and the number of bursts for a given port are hardware parameters. Each port define a private communication channel between the coprocessor and a user memory buffer. The total number of channels cannot be larger than 16. A channel is identified by an index, and the TO_COPROC channels have the smallest indexes. … … 56 56 '''WARNING''' : For all channels, the memory buffer address and size must be multiple of the hardware burst size. 57 57 58 Several channels can simultaneously run in different modes.The VCI transactions corresponding to different channels are interleaved and parallelized on the VCI network.58 The VCI transactions corresponding to different channels are interleaved and parallelized on the VCI network. 59 59 60 60 Besides these communication channels, the ''vci_mwmr_dma'' component support up to 16 coprocessor-specific configurarion/status registers. The ''configuration'' registers are Read and Write. The ''status'' registers are Read only. 61 61 62 62 63 The list of supported coprocessors and their characteristics are defined below:63 The list of currently supported coprocessors and their characteristics are defined below: 64 64 || coproc_type || Function ||nb_to_coproc || nb_from_coproc || nb_config || nb_status || 65 65 || COPROC_TYPE_GCD || Greater Common Divider || 2 || 1 || 1 || 0 || … … 67 67 || COPROC_TYPE_CPY || Memory Copy || 1 || 1 || 1 || 0 || 68 68 69 === 1) void '''giet_coproc_alloc'''( unsigned int coproc_type, unsigned int* info, unsigned int* cluster_xy) ===69 === 1) void '''giet_coproc_alloc'''( unsigned int coproc_type, unsigned int* coproc_key, unsigned int* coproc_info ) === 70 70 This function allocates a private coprocessor to the calling task, taking a lock to grant exclusive ownership. 71 71 In the current implementation, the task exit if there is no coprocessor of requested type in the same cluster as the calling task. 72 72 In case of success, it returns the coprocessor characteristics in the '''coproc_info''' and '''cluster_xy''' variables. 73 73 * '''coproc_type''' : see supported types above 74 * '''coproc_info''' : nb_to_coprocs = info[7:0] / nb_from_coproc = info[15:8] / nb_config = info[23:16] / nb_status = info[31:24] 75 * '''cluster_xy''' : cluster coordinates 76 77 === 2) void '''giet_coproc_release'''( unsigned int cluster_xy ) === 74 * '''coproc_key''' (return value) : identifier for coprocessor access 75 * '''coproc_info''' (return value) : nb_to_coprocs = info[7:0] / nb_from_coproc = info[15:8] / nb_config = info[23:16] / nb_status = info[31:24] 76 77 78 === 2) void '''giet_coproc_release'''( unsigned int coproc_key ) === 78 79 This function releases the coprocessor allocated to the calling task. 79 80 * '''cluster_xy''' cluster coordinates … … 315 316 316 317 317