Topic outline

  • Course Introduction

    Modern computer technology requires an understanding of both hardware and software, as the interaction between the two offers a framework for mastering the fundamentals of computing. The purpose of this course is to cultivate an understanding of modern computing technology through an in-depth study of the interface between hardware and software. In this course, you will study the history of modern computing technology before learning about modern computer architecture and a number of its important features, including instruction sets, processor arithmetic and control, the Von Neumann architecture, pipelining, memory management, storage, and other input/output topics. The course will conclude with a look at the recent switch from sequential processing to parallel processing by looking at the parallel computing models and their programming implications.

  • Unit 1: Introduction to Computer Technology

    In this unit, we will discuss various advances in technology that have led to the development of modern computers. You will begin your study with a look at the different components of a computer. We will then discuss the ways in which we measure hardware and software performance before discussing the importance of computing power and how it motivated the switch from a single-core to a multi-core processor.

    Completing this unit should take you approximately 10 hours.

  • 1.1: Introduction to Computer Processors

  • 1.2: Components of a Computer

  • 1.4: The Power Problem

  • 1.5: The Switch to Parallel Processing

  • 1.6: Case Study: A Recent Intel Processor

  • Unit 2: Instructions: Hardware Language

    In order to understand computer architecture, you need to understand the components that comprise a computer and their interconnections. Sets of instructions, called programs, describe the computations that computers carry out. The instructions are strings of binary digits. When symbols are used for the binary strings, the instructions are called assembly language instructions. Components interpret the instructions and send signals to other components that cause the instruction to be carried out.

    In this unit, you will build on your knowledge of programming from CS102 to learn how to program with an assembly language. You will use the instructions of a real processor, MIPS, to understand the basics of hardware language. We will also discuss the different classes of instructions typically found in computers and compare the MIPS instructions to those found in other popular processors made by Intel and ARM.

    Completing this unit should take you approximately 12 hours.

  • 2.1: Computer Hardware Operations

  • 2.2: Number Representation in Computers

  • 2.3: Instruction Representation

  • 2.4: Logical and Arithmetic Instructions

  • 2.5: Control Instructions

  • 2.6: Instructions for Memory Operations

  • 2.7: Different Modes for Addressing Memory

  • 2.8: Case Study: Intel and ARM Instructions

  • Unit 3: Fundamentals of Digital Logic Design

    We will begin this unit with an overview of digital components, identifying the building blocks of digital logic. We will build on that foundation by writing truth tables and learning about more complicated sequential digital systems with memory. This unit serves as background information for the processor design techniques we learn in later units.

    Completing this unit should take you approximately 13 hours.

  • 3.1: Beginning Design: Logic Gates, Truth Table, and Logic Equations

  • 3.2: Combinational Logic

  • 3.3: Flip-Flops, Latches, and Registers

  • 3.4: Sequential Logic Design

  • 3.5: Case Study: Design of a Finite State Machine (FSM) to Control a Vending Machine

  • Unit 4: Computer Arithmetic

    In this unit, you will build upon your knowledge of computer instructions and digital logic design to discuss the role of computer arithmetic in hardware design. We will also discuss the designs of adders, multipliers, and dividers. You will learn that there are two types of arithmetic operations performed by computers: integer and floating point. Finally, we will discuss the basics of floating point representation for carrying out operations with real numbers.

    Completing this unit should take you approximately 11 hours.

  • 4.1: Number Representation

  • 4.2: Addition and Subtraction Hardware

  • 4.3: Multiplication

  • 4.4: Floating Point Arithmetic

  • 4.5: Division

  • 4.6: Case Study: Floating Point Arithmetic in an x86 Processor

  • Unit 5: Designing a Processor

    In this unit, we will discuss various components of MIPS processor architecture and then take a subset of MIPS instructions to create a simplified processor in order to better understand the steps in processor design. This unit will ask you to apply the information you learned in units 2, 3, and 4 to create a simple processor architecture. We will also discuss a technique known as pipelining, which is used to improve processor performance. We will also identify the issues that limit the performance gains that can be achieved from it.

    In previous units, you learned about how computer memory stores information, in particular how numbers are represented in a computer memory word (typically, 32 or 64 bits); hardware elements that perform logic functions; the use of these elements to design larger hardware components that perform arithmetic computations, in particular addition and multiplication; and the use of these larger components to design additional components that perform subtraction and division. You also looked at machine language and assembly language instructions that provide control to hardware components in carrying out computations. In this unit, you will learn about how the larger components are used in designing a computer system.

    Completing this unit should take you approximately 8 hours.

  • 5.1: Von Neumann Architecture

  • 5.2: Simple MIPS Processor Components

  • 5.3: Designing a Datapath for a Simple Processor

  • 5.4: Alternative Approach to Datapath Design and Design of a Control for a Simple Processor

  • 5.5: Pipelining and Hazards

  • 5.6: Pipelined Processor

  • 5.7: Instruction Level Parallelism

  • Unit 6: The Memory Hierarchy

    In prior units, you have studied elementary hardware components, e.g., combinational circuits and sequential circuits; functional hardware components, such as adders, arithmetic logical units, data buses; and computational components, such as processors.

    This unit will address the memory hierarchy of a computer and will identify different types of memory and how they interact with one another. This unit will look into a memory type known as cache and will discuss how caches improve computer performance. This unit will then discuss the main memory, DRAM (or the Dynamic Random Access Memory), and the associated concept of virtual memory. You will take a look at the common framework for memory hierarchy. The unit concludes with a review of the design of a cache hierarchy for an industrial microprocessor.

    Completing this unit should take you approximately 8 hours.

  • 6.1: Elements of Memory Hierarchy and Caches

  • 6.2: Cache Architectures and Improving Cache Performance

  • 6.3: Main Memory and Virtual Memory

  • 6.4: Performance Tuning

  • Unit 7: Storage and I/O

    In this unit, we will discuss the input/output devices that enable communication between computers and the outside world in some form. The reliability of these devices is important; we will accordingly discuss the related issues of dependability, availability, and reliability. You will also take a look at non-volatile storage mediums, such as disk and flash memory, before learning about mechanisms used to connect the computer to input/output devices. This unit will conclude by discussing disk system performance measures.

    Completing this unit should take you approximately 4 hours.

  • 7.1: I/O Devices

  • 7.2: Connecting I/O Devices to the Processor

  • 7.3: Measuring Disk Performance

  • 7.4: Redundant Array of Inexpensive Disks (RAID)

  • Unit 8: Parallel Processing

    This unit will address several advanced topics in computer architecture, focusing on the reasons for and the consequences of the recent switch from sequential processing to parallel processing by hardware producers. You will learn that parallel programming is not easy and that parallel processing imposes certain limitations in performance gains, as seen in the well-known Amdahl's law. You will also look into the concepts of shared memory multi-processing and cluster processing as two common means of improving performance with parallelism. The unit will conclude with a look at some of the programming techniques used in the context of parallel machines.

    Completing this unit should take you approximately 16 hours.

  • 8.1: The Reason for the Switch to Parallel Processing

  • 8.2: Limitations in Parallel Processing: Amdahl's Law

  • 8.3: Shared Memory and Distributed Memory Multiprocessing

  • 8.4: Multicore Processors and Programming with OpenMP and MPI

  • Unit 9: Look Back and Look Ahead

    This unit looks back at important concepts of computer architecture that were covered in this course and looks ahead at some additional topics of interest. Computer architecture is both a depth and breadth subject. It is an in depth subject that is of particular interest if you are interested in computer architecture for a professional researcher, designer, developer, tester, manager, manufacturer, etc. and you want to continue with additional study in advanced computer architecture. On the other hand, computer architecture is a rich source of ideas and understanding for other areas of computer science, giving you a broad and stronger foundation for the study of programming, computer languages, compilers, software architecture, domain specific computing (e.g., scientific computing), etc.

    In this unit, you will look back at some of the theoretical laws and analysis techniques that were introduced during the course. Looking ahead, you will be introduced to special purpose processors, application specific processing, high volume data storage, and network computing.

    Completing this unit should take you approximately 8 hours.

  • 9.1: Theory and Laws

  • 9.2: Special Purpose Computing Architectures