by support »
Hello,
The communication with Xillybus is done with DMA, so there's no waste of CPU cycles for the actual I/O. The data is however copied into DMA buffers by the processor by the write() call, and vice versa with read(). As memory copying is a very common task for processors, it's also well optimized. The overhead for this is usually negligible in the context of an algorithm that does something useful.
The alternative, which Xillybus doesn't offer, is to make the PL logic fetch the data directly from the array used by the software (and same in the other direction). This makes the software considerably more complicated and hardware specific, as it needs to manage the physical memory pages directly. This is common in graphics API for GPUs, as there's a lot of data (image maps etc.) that is shuffled back and forth.
And since we're at it, I'd mentioned that there's a section in the docs related to coprocessing with Xillybus: Xillybus host application programming guide for Linux, section 6.6 (
http://xillybus.com/downloads/doc/xilly ... _linux.pdf ).
Regards,
Eli
Hello,
The communication with Xillybus is done with DMA, so there's no waste of CPU cycles for the actual I/O. The data is however copied into DMA buffers by the processor by the write() call, and vice versa with read(). As memory copying is a very common task for processors, it's also well optimized. The overhead for this is usually negligible in the context of an algorithm that does something useful.
The alternative, which Xillybus doesn't offer, is to make the PL logic fetch the data directly from the array used by the software (and same in the other direction). This makes the software considerably more complicated and hardware specific, as it needs to manage the physical memory pages directly. This is common in graphics API for GPUs, as there's a lot of data (image maps etc.) that is shuffled back and forth.
And since we're at it, I'd mentioned that there's a section in the docs related to coprocessing with Xillybus: Xillybus host application programming guide for Linux, section 6.6 ( http://xillybus.com/downloads/doc/xillybus_host_programming_guide_linux.pdf ).
Regards,
Eli