-
What is computer architecture?[1]
Computer architecture is the study of how computer systems are designed, built, and organized.
-
Why is it important?
Faster, smaller, more power-efficient, and more domain-specific computing is a necessity in almost every field. Consider: mobile phones, wearable electronics, architectures for ML, scientific computing, low-latency networking, or simply running a web browser — all these are cases where building progressively “better” computer systems is critical.
-
Why is it interesting?[2]
It’s a complete answer to the question: “What’s really inside your computer, and how does it work?”
-
What are the current challenges in computer architecture?[3]
In past years, the industry relied on Moore’s law for improvement in computer speeds. Unfortunately, we’re fast approaching the theoretical limit of transistor size, meaning we must rethink the architecture of computers to better utilize the resources we have available.
-
I’m interested in computer architecture, where should I start learning?
A great place to start is coming to SIGARCH meetings! Outside SIGARCH, there are various routes you can take.
1) Classes
The ECE and CS departments at UIUC both offer classes in computer architecture and related topics:
Class Content Comments ECE 120 Digital logic, basic computer organization, assembly programming. Uses LC-3. As a first course in computer architecture, covers extremely important fundamental concepts (critical paths, logic minimization, FSMs). CS 233 Basic Verilog[4], basic computer organization, assembly programming and optimization. Uses MIPS. Lots of MIPS programming and learning how C compiles down. The honors section lets you build a project with FPGAs[5] at the end. ECE 220 Interrupts and privilege. Mostly a programming class outside the first two weeks. Not really an architecture class outside what’s mentioned. Though C is useful to know. ECE 385 SystemVerilog and FPGA class. One lab implements a subset of LC-3 on an FPGA. Class is being reworked as of SP23 to use Xilinx. Does not cover SystemVerilog in enough detail to do modern RTL design/verification. CS 433 Performance evaluation, ILP, caches, parallelism, multi-core. Some advanced topics on pipeline and cache optimization. No MPs, the class is homework and exam based. There are projects and presentations for both the undergraduate and graduate sections. ECE 411 Modern computer architecture: performance evaluation, caches, pipelining, memory systems, types of I/O, parallel processing, some advanced concepts. Uses RISC-V. Requires ECE 391[6]. The final project is an excellent opportunity to build something ambitious. 2) Self-study
There are two parallel tracks: learning theory and writing implementations.
Theory — book recommendations
- Patt & Patel: Introduction to Computing Systems
- Bryant & O’Hallaron: Computer Systems: A Programmer’s Perspective (philosophy)
- Patterson & Hennessy: Computer Organization and Design (RISC-V edition)
- Hennessy & Patterson: Computer Architecture: A Quantitative Approach
- Synthesis Lectures on Computer Architecture
Projects / Implementation
- Learn Verilog — HDLBits
- Implement a processor (LC-3) and run programs in simulation[7]
- Pipeline it, add caches, branch prediction, prefetching, OOO, superscalar, multi-core, coherence, MMU/TLBs. Try booting xv6 or Linux.
SIGARCH workshops provide hardware & guidance for projects.