CIMFlow LogoCIMFlow

Register Files

General and special register files for CIM cores

Each core maintains two register files: a General Register File (GRF) for arithmetic and addressing, and a Special Register File (SRF) for hardware configuration.


General Register File (GRF)

32 general-purpose registers (r0r31) encoded with 5-bit addresses. Used for:

  • Arithmetic operations: Counters, loop indices, intermediate values
  • Address calculation: Base addresses, offsets, pointers
  • Temporary storage: Function arguments, return values

Register r0 is hardwired to zero. Writes to r0 are ignored.


Special Register File (SRF)

32 special-purpose registers configure the CIM and Vector execution units.

CIM Configuration (IDs 0-15)

Bit Widths

CIM_IBWID 0
Input bit width
CIM_OBWID 1
Output bit width
CIM_WBWID 2
Weight bit width

Array Configuration

CIM_GSZID 3
Macros per group
CIM_AGID 4
Active groups
CIM_AEID 5
Active elements per column
CIM_GSTEPID 6
Group input step offset

IDs 7-15 are reserved.


Vector Configuration (IDs 16-31)

Input Bit Widths

VEC_IBW1ID 16
Input 1 bit width
VEC_IBW2ID 17
Input 2 bit width
VEC_IBW3ID 18
Input 3 bit width
VEC_IBW4ID 19
Input 4 bit width

Output & Addresses

VEC_OBWID 20
Output bit width
VEC_IA3ID 21
Input 3 address
VEC_IA4ID 22
Input 4 address

IDs 23-31 are reserved.


Register Binding

Special-purpose registers can be bound to general-purpose registers to reduce assignment overhead.

[
  { "special": 3, "general": 30 },
  { "special": 4, "general": 31 }
]

This binds CIM_GSZ (ID 3) to r30 and CIM_AG (ID 4) to r31.

Last updated on