If you have a rudimentary knowledge of electricity and some exposure to programming, roll up your sleeves, join in and design a computer system!
This is Part 2 of a 3-part series on digital systems, teaching the fundamentals of computer architecture and is based on a course offered by the MIT Department of Electrical Engineering and Computer Science. Topics include instruction set architectures and assembly language, stacks and procedures, 32-bit computer architecture, the memory hierarchy, and caches.
Using your browser for design entry and simulation, you’ll implement a 32-bit computer using our gate library and write assembly language programs to explore the hardware/software interface.
What you'll learn:
- The design of an instruction set for computer systems
- How to translate high-level programs into sequences of computer instructions
- The design of the datapath and control logic for a 32-bit computer
- The role of caches in the memory hierarchy
Syllabus
- Instruction Set Architectures: datapaths and FSMs, programmable datapaths, the von Neumann model, storage, ALU instructions, constant operands, memory access, branches, jumps.
- Assembly Language: from assembly language to binary, symbols and labels, instruction macros.
- Models of Computation: computability, universality, uncomputable functions.
- Compilers: interpretation vs. compilation, compiling expressions, compiling statements, compiler frontend, optimization and code generation.
- Procedures and Stacks: procedural abstraction, activation records and stacks, stack frame organization, compiling a procedure, stack detective.
- Building the Beta: circuit building blocks, ALU instructions, load and store, jumps and branches, exceptions.
- The Memory Hierarchy: memory technologies, hierarchical memory systems, the locality principle and caching, direct-mapped caches, block size, cache conflicts, associative caches, write strategies.
- Labs: simple assembly programming, Quicksort procedure, designing the 32-bit Beta processor.