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 multi-channels DMA controller. |
48 | | |
49 | | On the coprocessor side, it provides TO_COPROC and FROM_COPROC ports, that implement FIFO interfaces. Coprocessor can request to read (or write) one or several bursts of 32 bits words on a TO_COPROC port (FROM_COPROC port for a write), without address. The burst size (generally a cache line) is a global hardware parameter. The number of TO_COPROC and FROM_COPROC ports, and the number of bursts for a given port depends on each coprocessor implementation. Each port define a private communication channel |
50 | | between the coprocessor and an 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. |
| 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, and a coprocessor is identified by the (x,y) coordinares. To be supported by the GIET_VM, a coprocessor must use the ''vci_mwmr_dma'' component, that is a multi-channels DMA controller. |
| 48 | |
| 49 | On the coprocessor side, it provides ''TO_COPROC'' or ''FROM_COPROC'' ports, that implement FIFO interfaces. Coprocessor can request to read (or write) one or several bursts of 32 bits words on a TO_COPROC port (FROM_COPROC port for a write), without address. The burst size (generally a cache line) is a global hardware parameter. The number of TO_COPROC and FROM_COPROC ports, and the number of bursts for a given port depends on each coprocessor implementation. 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. |
280 | | === 5) void '''giet_vobj_get_vbase'''( char* vspace_name, char* vobj_name, unsigned int* vbase) === |
281 | | This function returns in argument ''vbase'' the virtual base address of a vobj defined in the mapping_info data structure. The vobj is identified by the two arguments ''vspace_name'' and ''vobj_name''. In case of error (such as undefined vspace or undefined vobj), it makes a giet_exit(). |
282 | | |
283 | | === 6) void '''giet_vobj_get_length'''( char* vspace_name, char* vobj_name, unsigned int* length) === |
284 | | This function returns in argument ''length'' the length (bytes) of a vobj defined in the mapping_info data structure. The vobj is identified by the two arguments ''vspace_name'' and ''vobj_name''. In case of error (such as undefined vspace or undefined vobj), it makes a giet_exit(). |
| 285 | === 5) void '''giet_vseg_get_vbase'''( char* vspace_name, char* vseg_name, unsigned int* vbase) === |
| 286 | This function returns in argument ''vbase'' the virtual base address of a vseg defined in the mapping_info data structure. The vseg is identified by the two arguments ''vspace_name'' and ''vseg_name''. In case of error (such as undefined vspace or undefined vseg), it makes a giet_exit(). |
| 287 | |
| 288 | === 6) void '''giet_vseg_get_length'''( char* vspace_name, char* vseg_name, unsigned int* length) === |
| 289 | This function returns in argument ''length'' the length (bytes) of a vseg defined in the mapping_info data structure. The vseg is identified by the two arguments ''vspace_name'' and ''vseg_name''. In case of error (such as undefined vspace or undefined vseg), it makes a giet_exit(). |