You are here

Course Overview

26 March, 2015 - 17:13

ELEC S333 is an advanced level course focusing on the designs and implementations of modern computer systems. Materials presented in this course rely heavily on your knowledge of two middle-level advisory pre-requisite courses — ELEC S224 Microprocessor-Based Computers and COMP S260 Computer Architecture and Operating Systems. In these courses, you have learned fundamental concepts such as computer arithmetic and organization, basic execution of machine instructions and instruction set architecture, data representation in the computer and basic memory management, the role of operating systems such as resources interface and scheduler, and so on. As much as we plan to structure ELEC S333 into a self-contained course using brief reviews of related materials, you are strongly recommended to review the materials presented in ELEC S224 and COMP S260, and use them as references as you proceed through this course.

Armed with the knowledge of computer system organization you acquired in ELEC S224 and COMP S260, it is a natural step for you to explore these techniques more deeply, the designs and the implementations of today’s computer systems. The aim of this course is to provide an avenue for you to explore and to understand the hardware organization of computer systems. The in-depth understanding of the system hardware organization helps you to gain the necessary knowledge to analyse and criticize existing systems, as well as paving the road for you to become an excellent computer system designer.

The primary responsibility of a computer system designer is to construct a system that performs well with minimal costs. This requires a thorough understanding of the hardware organization as well as the mechanisms that interface the system hardware with the user programs. A typical computer system today consists of many individual components tightly interconnected together, such as:

  • a processor core for executing program instructions
  • a cache unit to store frequently used data
  • a memory system where program and data reside
  • an external disk storage system for storing programs and permanent data
  • a set of external connectors (buses) that connects the computer to networks and other electronic devices
  • a chipset that orchestrates the communications between these components.

As you might have noticed already, the key terminology here is the word performance. Therefore, the rest of the Unit 1 material will focus on discussing the meaning of performing well and on the various techniques we use to measure the performance of computer systems.

Specifically, this unit:

  • explains the role of a computer system designer;
  • explains various ways to classify computer system performance including system throughput, response time and execution time;
  • illustrates how to calculate cycles per instruction (CPI);
  • relates instruction count, cycle per instruction and clock rate;
  • explains the differences between theoretical and effective performance;
  • distinguishes among and between various performance metrics including MIPS, MOPS and FLOPS;
  • explains the differences between various popular performance benchmarks, in particular, the SPEC, TPC, INPACK and LAPACK, and ScienceMark;
  • relates application performance with benchmarks results;
  • describes the concepts of parallelism and critical path; and
  • explains and estimates application performance using Amdahl's Law.

In addition to hardware organization, it is important for you to have a comprehensive knowledge of the instruction set architecture — the interface between the user programs and the computer hardware. Unit 2 will include a brief review of instruction set architecture, with an in-depth discussion of how instruction set architecture affects modern processor designs.

In Units 3 and 4, we will explore and examine various techniques that processor designers use today to improve the performance of the microprocessor. These include latency hiding and exploring parallelism at various levels.

A processor alone cannot perform computations — it requires memory to store the computation instructions and the data. In Unit 5, you will learn various memory designs and implementation techniques, and find out more importantly why they are crucial to the performance of a computer system.

As computer systems are used in different capacities, the connectivity of the system to the outside world is a very important topic. We devote Units 6 and Unit 7 to computer system external connectivity issues. Virtually all computers today are externally connected in one form or another. In Unit 6, you will be presented with materials that discuss and examine the various ways computers are connected through networking. In Unit 7, you will learn how computer systems are connected with external devices, the protocols they use, and examine the organization and performance of various peripheral buses.

Last but not least, in Unit 8, we conclude the course with an in-depth investigation of today’s computer systems, and apply the knowledge learned throughout the course to analyse the performance results obtained from the example systems.