Anzeige
Hardware-Software Codesign
Hardware-Software Codesign
Hardware-Software Codesign
Hardware-Software Codesign
Anzeige
Hardware-Software Codesign
Hardware-Software Codesign
Hardware-Software Codesign
Hardware-Software Codesign
Nächste SlideShare
Hardware Software CodesignHardware Software Codesign
Wird geladen in ... 3
1 von 8
Anzeige

Más contenido relacionado

Anzeige
Anzeige

Hardware-Software Codesign

  1. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune 1. Define hardware & Software. Explain in brief Hardware-software co-designwith the help of co-designmodel.  Software refers to the flexible part and Hardware refers to the fixed part in hardware –software co- design.  The flexible part(software) includes C programs, configuration data, parameter settings, bitstreams, and so forth.  We will model software as single-thread sequential programs, written in C or assembly. The choice for single-thread sequential C is simply because it matches so well to the actual execution model of a typical microprocessor.  The fixed part(hardware) consists of programmable components such as microprocessors and coprocessors.  We will model hardware by means of single-clock synchronous digital circuits created using word- level combinational logic and flip-flops.  These circuits can be modeled with building blocks such as registers, adders, and multiplexers(also called register-transfer-level (RTL) modeling because the behavior of a circuit can be thought of as a sequence of transfers between registers, with logical and arithmetic operations performed on the signals during the transfers). Co-design model: Figure 1.3 shows an 8051 microcontroller and an attached coprocessor. The coprocessor is attached to the 8051 microcontroller through two 8-bit ports P0 and P1. A C program executes on the 8051 microcontroller, and this program contains instructions to write data to these two ports. When a given, predefined value appears on port P0, the coprocessor will make a copy of the value present on port P1 into an internal register. This very simple design can be addressed using hardware/software codesign; it includes the design of a hardware model and the design of a C program. The model contains the 8051 processor, the coprocessor, and the connections between them. During execution, the 8051 processor will execute a software program written in C.
  2. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune Definition of hardware/- software codesign: Hardware/Software codesign is the design of cooperating hardware components and software components in a single design effort. However, In reality, there are many forms of hardware and software, and the distinction between them can easily become blurred. Consider the following examples. _A Field Programmable gate Array (FPGA) is a hardware circuit that can be reconfigured to a user- specified netlist of digital gates. The program for an FPGA is a ‘bitstream’, and it is used to configure the netlist topology. Writing ‘software’ for an FPGA really looks like hardware development – even though it is software. _ A Digital-Signal Processor (DSP) is a processor with a specialized instruction set, optimized for signal- processing applications. Writing efficient programs for a DSP requires detailed knowledge of these specialized instructions. Very often, this means writing assembly code, or making use of a specialized software library. Hence, there is a strong connection between the efficiency of the software and the capabilities of the hardware. Hardware/Software co-design is the partitioning and design of an application in terms of fixed and flexible components. 2. Explain driving factors in Hardware-SoftwareCo-design. _ Performance: The classic argument in favor of dedicated hardware design has been increased performance: more work done per clock cycle. Increased performance is obtained by reducing the flexibility of an application or by specializing the architecture that the application is mapped onto _ Energy Efficiency: Almost every electronic consumer product today carries a battery (iPod, PDA, mobile phone, Bluetooth device, ..). This makes these products energy-constrained. In order to become sufficiently energy-efficient, consumer devices are implemented using a combination of embedded software and dedicated hardware components. Thus, a well-known use of hardware–software codesign is to trade function specialization and energy- efficiency by moving (part of) the flexible software of a design into fixed hardware. _ Power Densities of modern high-end processors are such that their performance can no longer be increased by making them run faster. Instead, there is a broad and fundamental shift toward parallel computer architectures. However, at this moment, there is no dominant parallel computer architecture that has shown to cover all applications. _ Design Complexity: Today, it is common to integrate multiple microprocessors together with all related peripherals and hardware components on a single chip {system-on-chip (SoC)}. Modern SoC are
  3. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune extremely complex. The conception of such a component is impossible without a detailed planning and design phase. Extensive simulations are required to test the design upfront, before committing to a costly implementation phase. Since software bugs are easier to address than hardware bugs, there is a tendency to increase the amount of software. _ Design Cost: New chips are very expensive to design. As a result, hardware designers make chips programmable so that these chips can be reused over multiple products or product generations. The SoC is a good example of this trend. However, ‘programmability’ can be found in many different forms other than embedded processors: reconfigurable systems are based on the same idea of reuse-through-reprogramming. _ Shrinking Design Schedules: Each new generation of technology tends to replace the older one more quickly. In addition, each of these new technologies is exponentially more complex than the previous generation. For a design engineer, this means that each new product generation brings more work that needs to be completed in a shorter period of time. Shrinking design schedules require engineering teams to work on multiple tasks at once: hardware and software are developed concurrently. A software development team will start software development as soon as the characteristics of the hardware platform are established, even before an actual hardware prototype is available. _ Deep-Submicron Effects: Designing new hardware from-scratch in high-end silicon processes is difficult due to second-order effects in the implementation. For example, each new generation of silicon technology has an increased variability and a decreased reliability. Programmable, flexible technologies make the hardware design process simpler, more straightforward, and easier to control. In addition, programmable technologies can be created to take the effects of variations into account. 3. Explain five abstractions levels commonly used by computer engineers for the design of electronic hardware-software systems. There are five abstraction levels commonly used by computer engineers for the design of electronic hardware–software systems. Continuous Time: At the lowest abstraction level, we describe operations as continuous actions.  For example, electric networks can be described as systems of interacting differential equations. Solving these equations leads to an estimate for voltages and currents in these electric networks.  This is a very detailed level, useful to analyze analog effects. However, this level of abstraction is not used to describe typical hardware–software systems. Discrete-event: At the next abstraction level, we lump activity at discrete points in time called events. Those events can be possibly irregularly spaced.  For example, when the inputs of a digital combinatorial circuit change, the effect of those changes will ripple from inputs to outputs, toggling nets at intermediate circuit nodes as they change.  Discrete-event simulation is very popular to model hardware at low abstraction level. It gets rid of the differential equations and the complexity of continuous-time simulation, yet it captures all relevant information such as glitches and clock cycle edges.
  4. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune  Discrete-event simulation is also used to model systems at high abstraction level, to simulate abstract event with irregular spacing in time.  In the context of hardware–software system design however, discrete-event modeling refers to a low abstraction level. Cycle-accurate: Single-clock synchronous hardware circuits have the important property that all interesting things happen at regularly spaced intervals, namely at the clock edge.  A cycle-accurate model does not capture propagation delays or glitches. All activities that fall ‘in between’ clock edges are concentrated at the clock edge itself. As a result, activities happen either immediately (for combinatorial circuits for example), or else after an integral number of clock cycles (for sequential circuits).  The cycle-accurate level is very important for hardware–software system modeling and very often serves as the ‘golden reference’ for a hardware–software implementation. Instruction-accurate: The instruction-accurate modeling level expresses activities in steps of one microprocessor instruction. Each instruction lumps together several cycles of processing.  RTL models are great but may be too slow for complex systems. For example, a laptop has a processor that probably clocks over 1 GHz (one billion cycles), for which lower level of abstraction is not suitable. Clearly, further abstraction can be useful to build leaner and faster models.  Instruction-accurate simulators are used to verify complex software systems, such as complete operating systems. Instruction-accurate simulators count time in terms of an instruction count, but not a cycle count. Transaction-accurate: In this type of model, the behavior is expressed in terms of the interactions between the components of a system. These interactions are called transactions.  For very complex systems, even instruction-accurate models may be too slow or require too much modeling effort. For these models, yet another abstraction level is introduced: the transaction- accurate level.  Transaction-accurate models are important in the exploratory phases of a design, where a designer is interested in defining the overall characteristics of a design without going through the effort of developing detailed models.
  5. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune 4. Explain The Hardware–Software Codesign Space The Platform Design Space A specification is a description of the desired application. A new application could be for example a novel way of encoding audio in a more economical format than current encoding methods. The objective of the design process is to implement the application on a target platform. Software as well as hardware have a very different meaning depending on the platform. _ In the case of a RISC processor, software is written in C, while the hardware is a general-purpose processor. _ In the case of a FPGA, software is written in a HDL. When the FPGA contains a soft-core processor, as discussed above, we will also write additional platform software in C. _ A DSP uses a combination of C and assembly code for software. The hardware is a specalized processor architecture, adapted to signal processing operations. _ An ASIP is a processor that can be specialized to a particular application domain, for example, by adding new instructions and by extending the processor datapath. The ‘software’ of an ASIP thus can contain C code as well as a hardware description of the processor extensions. _ Finally, in the case of an ASIC, the application is written in HDL, which is then converted into a hardcoded netlist. In contrast to other platforms, ASICs are nonprogrammable. In an ASIC, the application and the platform have merged to a single entity. Application Mapping Mapping an application ontoa platform means writing software for that platform, and if needed, customizing the hardware of the platform.
  6. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune Flexibility means how well the platform can be adapted to different applications. Flexibility in platforms is desired because it allows designers to make changes to the application after the platform is fabricated Very flexible platforms, such as RISC and FPGA, are programmed with general-purpose languages. When a platform becomes more specialized, the programming tends to become more specialized as well. We visualize this by drawing the application closer to the platform. This expresses that the software becomes more specific to the hardware. 5. The Dualism of Hardware Design and Software Design Design Paradigm: In a hardware model, circuit elements operate in parallel. Thus, by using more circuit elements, more work can be done within a single clock cycle. Software, onthe other hand, operates sequentially. By using more operations, a software program will take more time to complete. Thus, a hardware designer solves problems by spatial decomposition, while a software designer solves problems by temporal decomposition. _ Resource Cost: Decomposition in space, as used by a hardware designer, means that more gates are required for when a more complex design needs to be implemented. Decomposition in time, as used by a software designer, implies that a more complex design will take more instructions to complete. Therefore, the resource cost for hardware is circuit area, while the resource cost for software is execution time. _ Design Constraints: A hardware designer is constrained by the clock cycle period of a design. A software designer, on the other hand, is limited by the capabilities of the processor instruction set and the memory space available with the processor. Thus, the design constraints for hardware are in terms of a time budget, while the design constraints for software are fixed by the CPU. _ Flexibility: Flexibility is the ease by which the application can be modified or adapted after the target architecture for that application is manufactured. In software, flexibility is essentially free. In hardware on the other hand, flexibility is not trivial A hardware designer has to think carefully about such reuse: flexibility needs to be designed into the circuit by means of multiplexers and additional control signals! Parallelism: A dual of flexibility can be found in the ease with which parallel implementations can be created. For hardware, parallelism comes for free as part of the design paradigm. For software, on the other hand, parallelism is a major challenge.
  7. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune When a software written for a single processor is run on multiple processors, inter-processor communication and synchronization become a challenge. _ Modeling: In software, modeling and implementation are very close. Indeed, when a designer writes a C program, the compilation of that program for the appropriate target processor will also result in the implementation of the program! In hardware the model and the implementation of a design are distinct concepts. Initially, a hardware design is modeled using a HDL. Such a hardware description can be simulated, but it is not an implementation of the actual circuit. Hardware designers use a hardware description language, and their programs are models which are later transformed to implementation. Software designers use a software programming language, and their programs are an implementation by itself. _ Reuse: The idea of IP-reuse is that a component of a larger circuit or a program can be packaged, and later reused in the context of a different design. In software, IP-reuse has known dramatic changes in recent years due to open source software and the proliferation of open platforms. When designing a complex program these days, designers will start from a set of standard libraries that are well-documented and available on a wide range of platforms. For hardware design, IP-reuse is still in its infancy. Hardware Designers are only starting to define standard exchange mechanisms.
  8. Hardware-Software Codesign SystemonChip Notesfrom:PatrickSchaumaunt A Practical IntroductiontoHardware/Software Codesign2ndEdition CompiledBy:SudhanshuJanwadkar,MITCOE,Pune 6. Define concurrency and Parallelism.  Concurrency is the ability to execute simultaneous operations because these operations are completely independent.  Parallelism is the ability to execute simultaneous operations because the operations can run on different processors or circuit elements. Thus, concurrency relates to an application model, while parallelism relates to the implementation of that model.  Hardware is always parallel. Software on the other hand can be sequential, concurrent, or parallel.  Sequential and concurrent software requires a single processor, parallel software requires multiple processors.
Anzeige