The code and documentation for CIMFlow is currently under construction. Stay tuned!
CIMFlow LogoCIMFlow
Instruction Set ArchitectureInstruction Design

Instructions

Instruction Overview

The instruction set is designed based on the RISC philosophy, with each fundamental instruction corresponding to one of four basic operations: compute, communication, and control flow.

Operation TypeMnemonicDescriptionKey Operands
Matrix–Vector OperationCIM_MVMMatrix–vector multiply-accumulate on in-memory-computing arrayinput-address, input-length, optional-flags, weight,batch
Vector OperationVEC_OPSingle-instruction multiple-data operationsrc1, src2, length, dst, functor
REDUCEVector reduction/aggregation operationsrc, length, dst, functor
Scalar OperationSC_RRScalar data operationrs, rt, rd, functor
SC_RIrs, rd, functor
SC_LDScalar data load/storers, rd, offset
SC_STrs, rt, offset
G_LIScalar assignmentrd, imm
S_LIrd, imm
GS_MOVrs, rd
SG_MOVrs, rd
Data MovementMEM_CPYData copy among memory resources (local / global memory)src, length, dst
Inter-Core CommunicationSENDSend data across coressrc, dst, core-id, length, tag
RECVReceive data across coressrc, dst, core-id, length, tag
Intra-Core ControlBRANCHConditional branchrs, rt, offset, cond
JMPUnconditional jumpoffset
Inter-Core SynchronizationWAITSynchronize instructions across corescore-id
BARRIERcore-count, tag

Specific Instruction Encoding

Instruction31-2625-2120-1615-1110-65-10
CIM_MVM000000rsrtrerfflags
VEC_OP01XX00rsrtrdrefunct
REDUCE010001rsrtrd0 0000funct
SC_RR100000rsrtrd0 0000funct
SC_RI100100rsrdfunctimm
SC_LD101000rsrdimm
SC_ST101001rsrtimm
G_LI101100rdimm
S_LI101101rdimm
GS_MOV101110rsrd0000 0000 0000 0000
SG_MOV101111rsrd0000 0000 0000 0000
MEM_CPY1100XYrsrtrdimm
SEND110100rsrtrdrerf
RECV110110rsrtrdrerf
BRANCH1110XXrsrtimm
JMP111100imm
WAIT111101rd0 0000 0000 0000 0000 0000
BARRIER111110rsrt0000 0000 0000 0000

On this page