|
Learning Objectives
On completion of 6.004, students will be able to
- understand the role of abstraction in the design of large digital
systems, and explain the major software and hardware abstractions
in contemporary computer systems.
- analyze the performance of digital systems using measures such
as latency and throughput.
- design simple hardware systems based on a variety of digital
abstractions such as ROMs and logic arrays, logic trees, state
machines, pipelining, and buses.
- synthesize digital systems from a library of representative components
and test the designs under simulation.
- understand the operation of a moderately complex digital system -- a
simple RISC-based computer -- down to the gate level, and be able to
synthesize, implement, and debug its components.
- appreciate the technical skills necessary to be a capable digital
systems engineer.
Measurable Outcomes
Upon completion of 6.004, students will be able to
- Identify flaws and limitations in simple systems implemented using
the static discipline (noise assumptions, etc)
- Identify flaws and limitations in simple systems implemented using
clocked registers with asynchronous inputs (metastability issues).
- Identify flaws and limitations in simple systems implemented using
pipelined processors (pipeline hazards).
- Identify flaws and limitations in simple systems implemented using
semaphores for process synchronization (deadlocks).
- Identify flaws and limitations in simple systems implemented using
shared-memory multiprocessors (sequential inconsistency).
- Characterize the logic function of combinational devices using CMOS,
ROM, or PLA technologies.
- Explain synthesis issues for combinational devices using CMOS, ROM, or
PLA technologies from their functional specification.
- Explain synthesis of acyclic circuits from combinational components.
- Calculate performance characteristics of acyclic circuits with
combinational components.
- Explain and calculate performance characteristics of single-clock
sequential circuits.
- Design, debug, and test combinational circuits of the
complexity of an arithmetic logic unit.
- Design, debug, and test a controller for a finite-state machine.
- Pipeline a combinational circuit for improved throughput.
- Understand issues affecting microprocessor instruction set design.
- Complete and debug the design of a simple CPU with a given RISC-based
intruction set.
- Measure the memory access performance of a processor, and tune
cache design parameters to improve performance.
- Analyze the operation of page-based virtual memory systems.
- Translate simple programs from C to machine language.
- Deduce processor state from a memory snapshot during execution.
|