An overview of processors#
We can use digital circuits for solving various digital design problems. A well-known example is the central processing unit (CPU) typically implemented as a microprocessor. However there are also other kinds of processors which may solve your problem at a lower cost, higher reliability, less energy consumption etc.
Learning goals#
Apply various processor types to a given problem scenario
Introductory problem#
You are working as an hardware engineer as part of an space avionics group that builds a data handling subsystem:
The fault-tolerant processor is a microprocessor and you are responsible for the FPGA design.
You are given the following task: The operating system running on the microprocessor has to write logging data to a large array of radiation-tolerant flash memory chips. The microprocessor does not have enough pins, so the flash memory chips are interfaced by the FPGA.
The microprocessor-FPGA link is based on a packet-based communication, where the packets are buffered in a FIFO with the following interface:
clk
, clockdata
, 1 byteread_enable
, 1 bit: Reads one data word of the packets sent by the microprocessor in everyclk
cycle
The write packet has the following structure:
address
, 1 bytelength
, 1 bytepayload
, 0-255 bytes
The flash interface has the following interface:
clk
address
, 1 bytedata
, 1 bytewrite_enable
, 1 bit
Sketch an architecture for the hardware design on the FPGA by answering the following questions:
What are the inputs and outputs of your design?
How does the architecture of your design look like? Would you call your design a processor?
Is your design programmable?
Optional: Implement a sketch of your design in HDL.
Tasks#
Read chapter 4: The variety of processors and computational engines, ch4, Comer, 2017.
Quiz#
Mini-lecture#
See this whiteboard.
Processor#
Processor categories based on flexibility#
Hierarchy in a complex processor#
Conventional processor#
Processor categories based on their role#
Two basic computer architectures#
Fetch-execute cycle#
Instructions#
Solution for the introductory problem#
The inputs and outputs will be based on the ports of the described FIFO and flash interfaces. For example,
mp_read_enable
,mp_data
,fl_address
,fl_write_enable
will be an output, input, output, output of our FPGA design, respectively.This problem could be solved by a state machine with the following states:
read_address
,read_length
,read_payload
,write_flash
. The design would be a non-programmable logic processor, because it does not store any program that is executed at every clock cycle.Our design is non-programmable and fixed.
Note
We discuss here a very simplified interface for didactic purposes. In our example, the microprocessor does not read any data, so a FIFO for packets sent by the FPGA is unnecessary. However a more practical implementation will very likely contain a second FIFO for sending at least acknowledge packets back to the microprocessor.
Moreover, the link between the microprocessor and the FPGA probably requires a protocol controller (e.g., UART, CAN, SpaceWire controller) for dealing with the physical (if applicable) and link-layer of the link.
Homework#
Exercises 4.1, 4.3, 4.4, 4.5 from the end of the chapter in the reading.