Hardware Software Co-Design

                   Hardware Software Co-Design

   Fundamental Issues in Hardware Software Co-Design
1. Selecting the model
2. Selecting the architecture
3. Selecting the language
4. Partitioning system requirements into Hardware and Software

1. Selecting the model 

  • Models are used for capturing and describing the system characteristics
  • A model is a formal system consisting of objects and composition rules
  • Designers switch between variety of models from the requirements specifications to the implementation aspect of the system design
  • Specifications stage --> functionality
  • Implementation stage --> system components, system structure

2.  Selecting the architecture

       Architecture specifies how a system is going to implement in terms number of and type of different components and their interconnection
      
      Architecture are controller architecture, Datapath architecture, Complex Instruction Set Computing(CISC), Reduced Instruction Set Computing (RISC),  Very long Instruction Word (VLIW), Single Instruction Multiple Data (MIMD)

  1. Application specific architecture class -> Controller architecture, etc.
  2. General purpose architecture class -> CISC, RISC, etc.
  3. Parallel processing class -> VLIW, SIMD, MIMD, etc.

a) Controller architecture

  • Implements the finite state machine model using a state register and two combinational circuits
  • State register holds the present state, and
  • Combinational circuits implement the logic for next state and output

b) Datapath architecture

  • Implements the data flow graph model
  • The output is generated as a result of a set of predefined computations on the input data 
  • Datapath represents a channel between the input and output
  • Datapath contain registers, counters, register files, memories and ports, high speed arithmetic units  

c) Finite State Machine Datapath (FSMD)

  • Combines controller architecture with data-path architecture
  • It implements a controller with data-path
  • Controller generates the control input
  • Datapath processes the data
  • Datapath contains two types of I/O ports
  1.  Control port for receiving/ sending the control signals from / to the controller unit
  2.  Datapath port interfaces the external world for data input and data output
  •  Datapath is implemented in a chip

d) CISC

  •  Use of a single complex instruction in place of multiple simple instructions reduces the program memory access and program memory size requirement
  • Datapath for CISC is complex
  • EX: CJNE instruction for 8051 ISA

e) RISC

  •  Uses Instruction set representing simple operation
  •  Datapath of RISC architecture contains a large register file for string operands and output
  •  RISC supports pipelining

f) VLIW

  •  Implements multiple functional units(ALU'S, multipliers, etc.) in the data-path
  •  VLIW instruction packages one standard instruction for functional unit of data-path

g) Parallel processing architecture

  • Implements multiple concurrent processing elements (PEs) and each PE associates a data-path containing register and local memory
  •  SMID --> Single instruction is executed in parallel with the help of PEs
  • Single controller schedules the instruction  execution and controls each PE
  • SMID forms basis of re-configurable processor
  • MIMD--> PEs execute different instructions at a given point of time
  • MIMD forms the basis of multiple processor systems
  • PES communicates through mechanism like shared memory and memory passing

3. Selecting the language

  • Language  should capture the computational model easily and maps it into architecture
  •  Software implementation --> C, C++, C#, Java, etc.
  •  Hardware implementation --> VHDL, System C, Verilog, etc.
  • A single language can be used for capturing a variety of models
  • EX: C++ captures an object oriented model

4. Partitioning System Requirements into Hardware and Software

  • From implementation point of view,  it may be possible to implement the system requirements in either hardware or software (firmware)

No comments:

Post a Comment