Due to the lack of caches and only a single core design
available, modifications were necessary. For teaching we used
the ZPU to build a multi-core processor – the Dual-ZPU.
The simplified structure of the multi-core design is shown in
Figure 3. Apart from a second core, the system was expanded
with several components. These include data and instruction
caches (D-Cache, I-Cache) to speed up memory access and a
shared register file (Shared Registers) for fast communication
between the cores. Furthermore, a cordic coprocessor (Cordic)
for efficiently calculating trigonometric functions was added as
well as a communication system (Write Logic) for accessing
the main memory. For accessing the shared registers, the cordic
or further possible coprocessors (Co-Procs.), a switching unit
(Address Switch) was developed. The different components can
be accessed through adjustable memory addresses which are
mapped to each component. To save pins for IC-fabrication,
the communication system splits data and address words into
bytes which are then reassembled in the FPGA-Board where
the memory (Main Memory) resides.