OS: Linux CentOS 7.3 (Kernel 3.10).
Test Motherboards:
Motherboard A: ASUS P9X79 WS, ASUS X270 WS.
MotherBoard B: ASRock Xeon D1541 CPU(8-core, 12MB cache).
FPGA PCIe card 1, Virtex-7 FPGA board. Gen 3 PCIe x8 slot. Utilize on-board 4GB DDR3 SDRAM as deep FIFO for DMA. (proven high performance and good card).
FPGA PCIe card 2, Kintex UltraScale FPGA card Gen 3 PCIe x8. Utilize Internal FPGA RAM(Block RAM) as small FIFO for DMA.
Test Purpose: to verify the FPGA card can run on motherboard and transfer data for long duration and there is no data loss.
Test Results 1:
Card 1, Card 2 tested well on MotherBoard _A. it can acquire PCIe data at minimum 1.6GB/s to host for 8GB amount of data no problem.
Teat Result 2: Card 1 on MotherBard B. It can collect good data on Mother board B, but up to 4GB only(which is the FIFO size of Card 1). After the 4GB, there is periodic data loss after every 4GB. That means card 1 can run at least for 1 second good. Motherboard B(CPU Xeon D1541) can also collect for 1second of data all good.
Test Result 3: Card 2 on motherboard B. it can collect good data on motherboard B, for up to 24MB per ADC input only. After 24MB of data, there is periodic data los for every 24MB data at total speed of 1.6GB/s. This is about 0.03 second on CPU Xeon D1541.
Questions:
1). From the test results, it shows that if the FPGA board has a deep on-board FIFO, then DMA can run for longer duration(also means CPU can handle this speed at 4GB/s).
2). But if the FIFO size on FPGA is small, the CPU can only handle a short duration of data. But for this same FPGA board, it can run on ASUS motherboard for long duration.
3). I would like to check what could be the reason the CPU (Xeon D1541) can only handle small amount of data for the FPGA card 2(small FIFO size)?
4). What are the registers/settings we can set in Xeon D for improved performance?