12.07.2015 Views

Intel(R) IQ80315 I/O Processor DMA and XOR Library APIs and ...

Intel(R) IQ80315 I/O Processor DMA and XOR Library APIs and ...

Intel(R) IQ80315 I/O Processor DMA and XOR Library APIs and ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Intel</strong> ® GW80314 I/O <strong>Processor</strong> <strong>DMA</strong> <strong>and</strong> <strong>XOR</strong> <strong>Library</strong>General NotesBy setting the interrupt enable for error conditions, the interrupt h<strong>and</strong>ler can record the stateinformation of the <strong>DMA</strong>/<strong>XOR</strong> engine registers. The register information includes the address ofthe subsequent descriptor to the descriptor causing the error condition (Channel Next DescriptorAddress Register). Determine the descriptor address of the descriptor causing the interrupt <strong>and</strong>invoke the application error h<strong>and</strong>ling routine.8.6 <strong>DMA</strong>/<strong>XOR</strong> Channel Arbitration for the SFN PortThe four channels use round robin to arbitrate for the port. The port can execute a read <strong>and</strong> write todifferent destinations ports concurrently. Each Channel can have 2 reads <strong>and</strong> 2 writes outst<strong>and</strong>ing.Each read or write can be up to the size of the 256 byte buffers.8.7 GNUPro Toolset Compiler OptimizationThe GNUPro toolset offers compiler setting of -O0 through -O3. Each level has its uniquecharacteristic in terms of level of optimization <strong>and</strong> object size. Level -O2 was found to provide thebest performance for descriptor processing. Level -O0 is the default.8.8 Reclamation of DescriptorsThere are alternate methods to select the time when to do reclamation of executed descriptors.These include:• Wait until a request for a free descriptor returns a null pointer indicating there are no freedescriptors remaining in that channel.• Wait till slack time in processing <strong>and</strong> call lib_reclaim().• Set timer <strong>and</strong> call in intervals.8.9 Extending <strong>Library</strong> to Run with Multiple ThreadsThe <strong>Library</strong> is single threaded. However, all functions take a pointer to the data structure<strong>XOR</strong>Dma_GW80314_Type. This feature simplifies porting to multiple threads applications. Theissue becomes mapping the <strong>DMA</strong> <strong>and</strong> <strong>XOR</strong> controllers to multiple threads.8.10 When Using Append / Resume SequenceAPPEND(LAST,NEXT,PORT)• LAST should be the uncached/unbuffered address of the last descriptor for that channel.Thiseliminates a cache clean.• NEXT should be the physical address of the descriptor appended.• PORT is the port where the descriptor resides (sdram = 4, sram = 3)• The append followed by the resume operation should only be separated by ”,” operator toeliminate possibility of instruction reordering by compiler.<strong>APIs</strong> <strong>and</strong> Testbench White Paper 29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!