In this course, you will learn to design the computer architecture of complex modern microprocessors.
Learn the basic principles of computer architecture in this interactive computer science course from MIT.
Digital systems are at the heart of the information age in which we live, allowing us to store, communicate and manipulate information quickly and reliably. This computer science course is a bottom-up exploration of the abstractions, principles, and techniques used in the design of digital and computer systems. 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
- 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.