Frequently Asked Questions

Computer Architecture @ SIGARCH (UIUC)
SIGARCH logo
  1. What is computer architecture?[1]

    Computer architecture is the study of how computer systems are designed, built, and organized.

  2. 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.

  3. Why is it interesting?[2]

    It’s a complete answer to the question: “What’s really inside your computer, and how does it work?”

  4. 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.

  5. 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:

    ClassContentComments
    ECE 120Digital 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 233Basic 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 220Interrupts 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 385SystemVerilog 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 433Performance 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 411Modern 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

    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.

Footnotes

  1. In contrast with computer science, which focuses on using computers to perform useful tasks.
  2. Also, “can you make it better?”
  3. The growing number of transistors on a single chip meant more computing power could fit into a single device.
  4. (System)Verilog is a hardware description language (HDL).
  5. An FPGA (field-programmable gate array) is a reprogrammable chip.
  6. ECE 391 is a systems class. Covers virtual memory & TLBs.
  7. Fun extension: write a Python assembler/emulator, or an LLVM backend.