PAYLOAD_EXECUTOR¶
Executes the DRAM payload from memory
Instruction decoder
All instructions are 32-bit. The format of most instructions is the same, except for the LOOP instruction, which has a constant TIMESLICE of 1.
NOOP with a TIMESLICE of 0 is a special case which is interpreted as STOP instruction. When this instruction is encountered execution gets finished immediately.
NOTE: TIMESLICE is the number of cycles the instruction will take. This means that instructions other than NOOP that use TIMESLICE=0 are illegal (although will silently be executed as having TIMESLICE=1).
NOTE2: LOOP instruction will jump COUNT times, meaning that the “code” inside the loop will effectively be executed COUNT+1 times.
Op codes:
Op |
Value |
---|---|
NOOP |
0b000 |
LOOP |
0b111 |
ACT |
0b100 |
PRE |
0b101 |
REF |
0b110 |
ZQC |
0b001 |
READ |
0b010 |
Instruction format:
LSB MSB dfi: OP_CODE | TIMESLICE | ADDRESS noop: OP_CODE | TIMESLICE_NOOP loop: OP_CODE | COUNT | JUMP stop: <NOOP> | 0
Where ADDRESS depends on the DFI command and is one of:
LSB MSB RANK | BANK | COLUMN RANK | BANK | ROW
Register Listing for PAYLOAD_EXECUTOR¶
Register |
Address |
---|---|
PAYLOAD_EXECUTOR_START¶
Address: 0xf0004000 + 0x0 = 0xf0004000
Writing to this register initializes payload execution
PAYLOAD_EXECUTOR_STATUS¶
Address: 0xf0004000 + 0x4 = 0xf0004004
Payload executor status register
Field |
Name |
Description |
---|---|---|
[0] |
READY |
Indicates that the executor is not running |
[1] |
OVERFLOW |
Indicates the scratchpad memory address counter has overflown due to the number of READ commands sent during execution |
PAYLOAD_EXECUTOR_READ_COUNT¶
Address: 0xf0004000 + 0x8 = 0xf0004008
Number of data from READ commands that is stored in the scratchpad memory