はじめに
Intel FPGA Runtime for OpenCL Software Technologyは、下記のようび github に公開されています。
最近、HAL (レジスタ部分)が公開されたので、みてみます。
HAL 部分を眺める
今回更新されたHALの部分は、
です。
下記の部分は、アドレスマップです。
// Address map // For unit tests to work, these defines must match those in the unit test // header file #define OFFSET_KERNEL_VERSION_ID ((dev_addr_t)0x0000) #define OFFSET_KERNEL_CRA_SEGMENT ((dev_addr_t)0x0020) #define OFFSET_SW_RESET ((dev_addr_t)0x0030) #define OFFSET_KERNEL_CRA ((dev_addr_t)0x1000) #define OFFSET_CONFIGURATION_ROM ((dev_addr_t)0x2000)
- 0x0000 : KERNEL_VERSION_ID
- 0x0020 : KERNEL_CRA_SEGMENT
- 0x0030 : SW_RESET
- 0x1000 : KERNEL_CRA
- 0x2000 : CONFIGURATION_ROM
になっています。
CRA の部分は、下記のようなアドレスマップになっています。
// Byte offsets into the CRA: // For CSR version >= 5 byte offsets are pushed back with the proper // value except for the CSR later on in the runtime execution #define KERNEL_OFFSET_CSR 0 #define KERNEL_OFFSET_PRINTF_BUFFER_SIZE 0x4 #define KERNEL_OFFSET_CSR_PROFILE_CTRL 0xC #define KERNEL_OFFSET_CSR_PROFILE_DATA 0x10 #define KERNEL_OFFSET_CSR_PROFILE_START_CYCLE 0x18 #define KERNEL_OFFSET_CSR_PROFILE_STOP_CYCLE 0x20 #define KERNEL_OFFSET_FINISH_COUNTER 0x28 #define KERNEL_OFFSET_INVOCATION_IMAGE 0x30 // CSR version >= 5 byte offsets #define KERNEL_OFFSET_START_REG 0x8
KERNEL_OFFSET_CSR のビット割り当ては、下記のようになっています。
// Bit positions #define KERNEL_CSR_START 0 #define KERNEL_CSR_DONE 1 #define KERNEL_CSR_STALLED 3 #define KERNEL_CSR_UNSTALL 4 #define KERNEL_CSR_PROFILE_TEMPORAL_STATUS 5 #define KERNEL_CSR_PROFILE_TEMPORAL_RESET 6 #define KERNEL_CSR_LAST_STATUS_BIT KERNEL_CSR_PROFILE_TEMPORAL_RESET #define KERNEL_CSR_STATUS_BITS_MASK \ ((unsigned)((1 << (KERNEL_CSR_LAST_STATUS_BIT + 1)) - 1)) #define KERNEL_CSR_LMEM_INVALID_BANK 11 #define KERNEL_CSR_LSU_ACTIVE 12 #define KERNEL_CSR_WR_ACTIVE 13 #define KERNEL_CSR_BUSY 14 #define KERNEL_CSR_RUNNING 15 #define KERNEL_CSR_FIRST_VERSION_BIT 16 #define KERNEL_CSR_LAST_VERSION_BIT 31
どのように使っているかは、コードを詳しく解析しないといけませんが、この部分のコードが公開されて、わかりやすくなったと思います。
おわりに
Slideshare なのが、色々申し訳ないのですが、Altera の時の「Altera SDK for OpenCL」の資料を下記にアップしてあります。