pencil and rubber

Logo of Triple-A Level WCAG-1 Conformance, W3C-WAI Web Content Accessibility Guidelines 1.0

XHTML 1.0 Conformance Validation CSS 3 Conformance Validation
Logo of Department of Mathematics and Computer Science, Course on Dedicated systems, link to Forum

Hardware interfaces

Lecture 11 on Dedicated systems

Teacher: Giuseppe Scollo

University of Catania
Department of Mathematics and Computer Science
Graduate Course in Computer Science, 2018-19

Table of Contents

  1. Hardware interfaces
  2. lecture topics
  3. functions of the coprocessor hardware interface
  4. layout of the coprocessor hardware interface
  5. data addressing
  6. multiplexing and masking
  7. control design
  8. hierarchical control
  9. address map
  10. instruction set
  11. references

lecture topics

outline:

functions of the coprocessor hardware interface

a hardware interface connects a custom hardware module to a coprocessor bus or an on-chip bus

  • the hardware interface steers the I/O ports of the custom hardware module

hardware interface design should match the flexibility of custom hardware design to the realities of the hardware/software interface

typical functions of the hardware interface:

Schaumont, Figure 12.1 - The hardware interface maps a 
          custom-hardware module to a hardware-software interface

Schaumont, Figure 12.1 - The hardware interface maps a custom-hardware module to a hardware-software interface

layout of the coprocessor hardware interface

Schaumont, Figure 12.2 - Layout of a coprocessor hardware interface

Schaumont, Figure 12.2 - Layout of a coprocessor hardware interface

components commonly found in a hardware interface:

  • a data input buffer for argument storage
  • a data output buffer for result storage
  • a command interpreter for local control based on software commands

from the perspective of the custom hardware module, it is common to partition the collection of ports into data input/output ports and control/status ports

the separation of control and data is an important design aspect, for, in a coprocessor design, the granularity of interaction between data and control is chosen by the designer

data addressing

features of a coprocessor data port: wordlength, direction and update rate

to make a good mapping of actual hardware ports to custom interface ports, it is convenient to start from the features of the actual hardware ports

when this module is implemented as a memory-mapped coprocessor, the ports of the hardware interface will be implemented as memory-mapped registers

however, it may not always be possible to allocate an arbitrary number of memory-mapped ports in the hardware interface—in that case, one needs to multiplex the custom-hardware module ports over the hardware interface ports

multiplexing and masking

multiplexing can be implemented in different ways: the first is time-multiplexing of the hardware module ports; the second is to use an index register in the hardware interface

Schaumont, Figure 12.3 - Time-multiplexing of two hardware-module 
                                   ports over a single control-shell port

Schaumont, Figure 12.3 - Time-multiplexing of two hardware-module ports over a single control-shell port

Schaumont, Figure 12.4 - Index-register to select one of eight 
                                   output ports

Schaumont, Figure 12.4 - Index-register to select one of eight output ports

multiplexing is also useful to handle long operands piecewise, whereby the operand can be provided one piece at a time by means of time-multiplexing

masking is a technique to work with very short operands, e.g. to group several single-bit ports of the hardware module in a hardware interface port: a mask register is used to this purpose, to bit-mask the module ports involved in an update, e.g.: new_hw_port = (old_hw_port & ~mask) | (upd_value & mask)

control design

control design in a coprocessor is the collection of activities to generate control signals and to capture status signals

figure 12.5 shows a generic architecture to control a custom hardware module

Schaumont, Figure 12.5 - Command design of a hardware interface

Schaumont, Figure 12.5 - Command design of a hardware interface

  • a command interpreter, the top-level controller in the coprocessor, accepts commands from the software and returns status information
  • while a command is a one-time control operation, a configuration is a value which will affect the execution of the coprocessor over an extended period of time, possibly over multiple commands

hierarchical control

figure 12.6 shows the architecture of a coprocessor that can achieve communication/computation overlap, as illustrated in figure 12.7

Schaumont, Figure 12.6 - Hierarchical control in a coprocessor

Schaumont, Figure 12.6 - Hierarchical control in a coprocessor

Schaumont, Figure 12.7 - Execution overlap using 
                                   hierarchical control

Schaumont, Figure 12.7 - Execution overlap using hierarchical control

the command interpreter analyzes each command from software and splits it up into a combination of commands for the lower-level FSMs

to effectively achieve execution overlap, a pipelining of the FSM actions is to be organized, where the command interpreter should adapt to the individual schedules of the lower-level FSMs

address map

programmer’s model = control design + data design

the address map reflects the organization of software-readable and software-writable storage elements of the hardware module; its design should consider the viewpoint of the software designer rather than the hardware designer, thus:

instruction set

the design of a good instruction set is a hard problem, that requires the codesigner to make a proper trade-off between flexibility and efficiency

here are a few generic design guidelines:

references

recommended readings:

for further consultation: