7fc8145fb39cf55dee7edbbe9420404ee508f366
[matthijs/projects/internship.git] / Report / Main / Context / Montium.tex
1 \section{Montium Tile Processor}
2 The Montium Tile Processor (Montium) is the main product of Recore Systems. It
3 is a reconfigurable processor that is aimed for inclusion in a tiled,
4 heterogenous multi-core system on chip (SoC), connected to other tiles and the
5 outside world throug a network on chip (NoC).
6
7 The Montium has a number of fundamental differences with "regular" processors
8 and DSP engines, that make it both interesting and challenging to program for
9 both application programmers and compilers.
10
11 \begin{figure}
12   \epsfig{file=Img/MontiumOverview.eps, width=.5\textwidth}
13   \caption{Overview of the Montium design}
14 \end{figure}
15
16 \subsection{Overall design}
17 The Montium is built from a few parts. The central part is the interconnect,
18 which ties memories, Arithmetic and Logic Units (ALU) and the Communication
19 and Configuration Unit (CCU) together. The memories store data locally, the
20 ALU's process data and the CCU moves data and configuration on and off the
21 Montium. Furthermore, the sequencer is the closest thing to a normal processor
22 in the Montium: It accepts and executes instructions one by one, is capable of
23 performing (conditional) jumps and some other limited control flow. 
24
25 \subsubsection{Sequencer}
26 The Sequencer executes its instructions one by one and controls all other
27 elements through the configuration registers (CR). To keep the size of sequencer
28 instructions limited, while not limiting the flexibility of the other elements,
29 a level of configuration registers is introduced. These registers are wide and
30 contain multiple sets of input signals to the various multiplexers, function
31 units, etc.
32
33 The sequencer instructions in turn contain indices into these configuration
34 registers. This way, every sequencer instruction can select a configuration for
35 the entire Montium for the cycle during which the instruction is executed. This
36 also means that the Montium is reconfigured on every cycle, for maximum
37 flexibility and performance.
38
39 \subsubsection{Memories}
40 The Montium contains ten memories (two for each ALU). Each of these memories has
41 its own Address Generation Unit (AGU), which can generate different memory
42 patterns. This means that the instructions or CR's never contain direct memory
43 addresses, only modifications to the current address. Each memory simply reads
44 from its current address and offers the value read to the interconnect (which
45 can then further distribute it to wherever it is needed). Writing works in the
46 same way (though a memory can only read or write in the same cycle).
47
48 \subsubsection{ALU's}
49 The main processing elements of the Montium are its 5 ALU's. Each of them has
50 four (16 bit) inputs, each with a number of input registers. Each ALU contains a
51 number of function units, a multiplier, a few adders and some miscelaneous
52 logic. Each of the elements in the ALU can be controlled seperately and data can
53 be routed in different ways through configuration of multiplexers inside the
54 ALU. The ALU has two output ports, without registers.
55
56 The ALU also has no internal registers, so data travels through the entire ALU
57 in a single cycle, to arrive at the outputs before the end of the cycle. This
58 means that the ALU can perform a lot of computation in a single clock cycle. For
59 example, using four of the five ALU's, an FFT butterfly operation (two complex
60 multiplications and four complex additions) can be exected in a single clock
61 cycle.
62
63 \subsubsection{CCU}
64 The CCU controls communication with the external world, usually a
65 network-on-chip. During normal operations, the CCU can take values from the
66 interconnect and stream them out onto one of the lanes of the NoC, or vice
67 versa. Additionally, the CCU can be used from external to the Montium to start
68 and stop execution and move configuration registers, sequencer instructions and
69 memory contents into and out of the Montium.
70
71 \subsubsection{Interconnect}
72 The central part of the Montium is the interconnect, which is a mostly connected
73 crossbar of lines. There are a total of 10 global busses in the interconnect, to
74 which every input and output port of the various components can be connected.
75 This way, every output of the memories, ALU's and CCU can be routed to every
76 input (provided that there are enough global busses). Additionally, each pair of
77 memories belonging to a specific ALU can be routed directly to the inputs and
78 outputs of that ALU, without requiring a global bus.
79
80 \subsection{Design changes}
81 Currently, the Montium design is experiencing a major overhaul. During work with
82 the original design, a number of flaws or suboptimal constructs have been found.
83 In particular, the ALUs are capable of performing a large number of
84 operations in a single cycle, but since they operate sequentially, this severly
85 limits clock speeds. In the new design, the number of ALUs is reduced, but each
86 ALU is subdivided in multiple parallel-operating function units.
87
88 This approach requires computations to be properly pipelined to be efficiently
89 use all those function units in parallel, but since data only travels through a
90 single function unit in each cycle, this allows for much higher clock speeds
91 than the old design.
92
93 During my internship I have mainly been working with the old Montium design, and
94 unless otherwise stated, that is what is meant when referring to the "Montium".
95 Some of the work has been done with the new design in mind, but only during the
96 final weeks of my internship I have been involved with the new design enough to
97 see most of the picture.