Mill Computing, Inc. › Forums › The Mill › Architecture › SIMS architecture › Reply To: SIMS architecture
Control-flow
While traditional control flow is used, this is intended only to support flexible flow of control around/between convergence points. A point of convergence is where two sub graphs connect. You can think of a sub graph as being like an EBB, although EBBs are not actually used in this architecture.
Data-flow
Data-flow is a term that only makes sense in terms of software pipe-lining; the data flow through the operations specified in the software pipe-lining kernel, but the instructions execute in parallel.
Execution modes
The modes are as follows: SIMS only; SIMS and software pipe-lining; Single stream and software pipe-lining
Graph-flow
Graph-flow occurs within a sub graph, but this type of control flow isn’t achieved by using JUMP instructions; instead, the CPU maintains a real graph representation of the program, and a binary array is used as a look up table to determine which graph node needs to be executed next within a compute unit.
Software pipe-lining kernel
The compiler emits a software pipe-lining kernel in cases where it’s possible; the CPU is required to respect program semantics, but can dynamically adjust execution behaviour within CUs, and can borrow functional units if necessary.
Vectorisation
There is no vector size in the SIMS architecture; instead, it is the program execution that is ‘vectorised’. The number of program execution streams active at once can be any number up to the CPU limit. If the user acquires a new CPU with a larger compute unit count, it is not necessary to recompile the program.