# Simple-V (Parallelism Extension Proposal) Vector Block Format
* Copyright (C) 2017, 2018, 2019 Luke Kenneth Casson Leighton
-* Status: DRAFTv0.6
-* Last edited: 13 aug 2019
+* Status: DRAFTv0.7
+* Last edited: 30 aug 2019
[[!toc ]]
| 31:30 | 29 | 28:26 | 25:24 | 23:22 | 21 | 20:5 | 4:0 |
|--------|-------|-------|-------|-------|------|-------|-------|
-| status | vlset | 16xil | pplen | rplen | mode | vlblk | opptr |
+| status | vlset | 16xil | pplen | rplen | mode | vblock2 | opptr |
| 2 | 1 | 3 | 2 | 2 | 1 | 16 | 5 |
* status is the key field that effectively exposes the inner FSM (Finite
VBLOCK opcode.
* status = 0b01 indicates that vlset, 16xil, pplen, rplen and mode have
all been copied directly from the VBLOCK so that they do not need to be
- read again from the instruction stream.
+ read again from the instruction stream,
+ and that VBLOCK2 has also been read and stored, if 16xil was
+ equal to 0b111.
* status=0b10 indicates that the VL Block has been read from the
- instruction stream and decoded (and copied into vlblk).
+ instruction stream and actioned.
+ (This means that a SETVL instruction has been created and executed).
* status=0b11 indicates that the Predicate and Register Blocks have been
read from the instruction stream (and put into internal Vector Context)
Simpler implementations are permitted to reset status back to 0b10 and
re-read the data after return from a trap that happened to occur in the
middle of a VBLOCK. They are not however permitted to destroy opptr in
the process, and after re-reading the Predicate and Register Blocks must
- resume execution pointed to by opptr.
+ resume execution pointed to by opptr.
* opptr points to where instructions begin in the VBLOCK. 0 indicates
- the start of the opcodes, and is in multiples of 16 bits (2 bytes).
+ the start of the opcodes
+ (not the start of the VBLOCK),
+ and is in multiples of 16 bits (2 bytes).
This is the equivalent of a Program Counter, for VBLOCKs.
* at the end of a VBLOCK, when the last instruction executes (assuming it
does not change opptr to earlier in the block), status is reset to 0b00