ECE 520.422

Computer Architecture

3 Credits

Updated 11/2/00.

Fall 1999, meeting in room 114 Maryland, Thursday 1:30-4:00 PM

Instructor: Robert Jenkins, Senior Lecturer ECE.

Office: Barton Hall 404

Telephone: (410) 516-7380

E-Mail: robert.jenkins@jhuapl.edu

Course Catalog Description

Textbooks and other class material

Course Objectives

Course Syllabus Outline

Grading

Ethical Standards

Homework and Schedule

Figure 4.8 revised

Things to know for the final….Know List for the Final


Description

A study of the structure and organization of classical von Neuman uniprocessor computers. Topics include: a brief history of modern machines starting from the Turing computer model, instruction sets, addressing, RISC versus CISC, traps and interrupt handling, twos complement arithmetic, adders and ALUs, CSA's, Booth's algorithm, multiplication and division, control unit design, micro-programming, dynamic versus static linking, memory systems and the memory hierarchy, paging, segmentation, cache hardware, cache organizations, and replacement policies.

Textbooks Required

1. Tanenbaum, Structure and Organization of Computers, 4th edition, Prentice-Hall

2. Printed and bound set of class notes and problems- Computer Architecture, by R. Jenkins et al

3. Classic published papers from the literature as reading assignments-

Back to top


Course Objectives

This is a lecture course, whose overall objective is to provide students with a thorough grounding in the architecture of classical von Neuman computers. The emphasis is on modern methods, however one objective is knowledge of the historical roots and evolution of these methods, and why things evolved as they did. The material is limited to non-parallel processing with the exception of instruction pipelining in RISC machines. (Considerations of pipelining, ILP, and multiprocessors is deferred to the follow-on course, ECE 520.426, Parallel Processing Architectures.)

A second objective is to create an understanding of the tradeoffs involved in computer design, along with an understanding of the methods used to evaluate performance and obtain the data needed for trade studies. The tradeoff and boundary between hardware and software is explicitly examined. The material is slanted toward hardware, and an objective is an understanding of how computer features and CPU control are implemented via finite state logic, buses, EPROM, and registers.

Another objective is to give design experience through problems requiring architectural decisions. The course stresses the hierarchical model of a computer system and the hierarchical approach to managing complexity in systems design. A final explicit goal, and not the least, is to prepare the students to be able to read and understand the current literature in computer architecture. This goal is considered of major importance for such a constantly evolving subject.

Back to top


Course Syllabus and Schedule

Dates

Lecture Topics

Week1 -9/7/00

Hierarchical models of computers, virtual machines and interpreters, the Turing model of computing, Turing machines and universal Turing machines with analogy to virtual machines, Turing machine examples.

Week 2 -

Early development of modern Von Neuman machines, the IAS machine, review of early developments in decades after IAS, the PDP-11 is examined as a model for modern microprocessors with bus type architectures and memory mapped IO, printer example of device drivers and memory mapped IO.

Week 3 -

Instruction set design, expanding opcodes, register-level descriptions of instructions, addressing modes, PDP-11 instruction set, stacks, use of stacks in argument passing and dynamic storage, traps and interrupt handling.

Week 4 -

completion of interrupt handling, instruction set usage, RISC philosophy, RISC vs CISC, discussion of RISC-I and RISC-II architecture.

Week 5 -

2's complement binary arithmetic, review of other encoding approaches, adders, carry look-ahead, CSA's, ALU's, bit slicing.

Week 6 -

2's complement multiplication and division, Booth's algorithm, modified Booth's algorithm, CSA trees, introduction to CPU data control, internal CPU buses, register tri-stating, control signals and clock phasing.

Week 7 -

2 1/2 hour midterm exam on Thurs, 10/21/99.

Week 8 -

discuss midterm, control unit design, control unit for a Booth's algorithm multiplier, introduction to micro-programming and microstore using multiplier controller as example. CPU Performance-CPI,MIPS, the Virtual JAVA Machine

Week 9 -

Tanenbaum's Mic-1 micro-architecture, discussion of the microprogram for a Virtual JAVA Machine, take-home micro-programming problems assigned, trade-offs at the microarchitecture level,

Week 10 -

Horizontal versus vertical microcoding, Nanoprogramming versus microprogramming. Further discussion of the Mic-2, -3, and -4, overlapped micro-ops and pipelining, handling interrupts at microprogram level, RISC re-visited from point of view of control, RISC instruction pipelining, the picoJava II cpu.

Week 11 -

Compiling, linking, and loading, Static and dynamic linking/loading, dynamic link libraries in Windows systems, introduction to memory systems, error correcting hardware for single-event upsets.

Week 12 -

Virtual memory and the RAM/Disk hierarchy, principle of locality revisited, hit ratios, access speed vs storage tradeoff, paging vs. segmentation, replacement strategies.

Week 13 -

Cache, cache mapping schemes, replacement strategies, write-through, write-back, read-through, cache management and directory hardware.

Week 14 -

2 1/2 final exam.

Back to top


Grading

Two 2.5 hour Exams, Midterm and Final, each worth 100 points toward final grade.

Approx. 11 homework assignments, each worth 4 points if turned in. Weekly homework assignments are due the following week, and will be gone over in class. Homework will be accepted 1 week late if a student misses class for a valid reason.

There may be an in-class or take-home problem that will be worth 30 points.

Students must do the homework assignments themselves, as the problems are important to learning the course material, and are similar to the problems on the exams.

 

Ethics

As an Engineering student at this University you carry the obligation to uphold the highest standard of academic and professional integrity. For this class, you are expected to follow the general University guidelines regarding ethical behavior. Unless given specific instructions to the contrary, it is not permitted to collaborate with other students in the class when solving homework or graded take-home projects. It is not permitted, under any circumstances, to consult or plagiarize past homework or take-home design problems. Cheating during an exam is considered a serious violation of ethical integrity. Academic misconduct will be reported to the University's academic ethics board for further consideration. For more information, please refer to the following material:

The Johns Hopkins University Undergraduate and Graduate Programs Catalogue, 1998-1999, pp. 31, 32, 40.

The Johns Hopkins University Undergraduate Advising Manual, Fall 1998, pp. 36, 37.

http://jhunix.hcf.jhu.edu/ethicsbd

Back to top


Homework and Reading Assignments (updated weekly) 11-02-00

CA = Computer Architecture, notes by Jenkins et al

SCO = Structured Computer Organization, by Tanenbaum

Class No.

HW No.

Date

HW Problems (due next class)

Reading

1

 

9/7

No class held

 

2

1

9/14

CA2-1, CA2-5

CA-Chapter 1 and 2; SCO-Chap 1

3

2

9/21

CA3-1, CA3-2 (see note 2 below)

Read IEEE MICRO article by D. Fairclough as background for RISC thinking. Study SCO-Chap. 2 as background material. I expect you to be familiar with most of the material in SCO-Chap. 3. Cover all the discussion in SCO of the PicoJava-II, which is to be our microprogramming example machine.

4

3

9/28

SCO5-6, CA3-4

CA-Chap. 3 and 4; and sections 11.1-11.4; SCO-Chapter 5 (We will come back to SCO-Chap. 4 in a few weeks)

5

4

10/5

CA5-9, CA5-10, SCO Appendix A-7, 9

CA-Chap. 5, SCO-Section 5.6.

6

 5

10/12

CA6-3 Study for Midterm

CA-Chap. 6, SCO-Appendix A, SCO-Chap.3 (See note 5 below) Study for midterm to be given next week

7

 

10/19

 Midterm covers CA1-6, SCO-1, 2, 5

Start to Read sections in SCO on the JVM and picoJava chip

8

 

10/26

 HW-6 not assigned

CA-sections 7.1 -7.2

9

7

11/2

 Handout - HW7 (Problems on MIC-1)

CA-Chap. 7, SCO-Sections 4.1-4.3.

10

 

11/9

 Handout - HW8 (Multiply on the MIC1)

SCO-Sections 4.1-4.3, CA-Section 7.5. Study thoroughly the MIC-1 microprogram for IJAVA.

11

8

11/16

Handout - HW9 - Use this MULT microcode

 SCO-Sections 4.4-4.6, Thoroughly browse website: http:// www.vcc.com/intro2.html on reconfigurable computing

 

 

11/23

Thanksgiving

 SCO -Section 4.5. Study the Mic3 and Mic-4 and Compare to Pentium-II Description.

12

9

11/30

 

 CA-Chap 8 (skip parity discussion),

13

10

12/7

 

 

14

 

12/14

Final

MD-114, 1:30-4:00, 12/14

 

 

 

 

 

Notes

2. Note for problem CA3-2: In proving redundancy by showing an equivalent sequence of instructions, remember that you must only use instructions from the residual language set. You can't use an instruction in a replacement sequence if it is targeted for later elimination.

 

 

4.  Expansion of problem CA4-1: In addition to working CA4-1, as a second part of problem, think about how to somehow quantify the basis for the decision about how many stack items to offload into memory on a HW stack overflow. You might consider, for example, the two cases where there are 15 straight PUSHes immediately after the overflow versus15 alternating PUSH/POP's. Try to quantify these cases assuming that the stack holds 10 items, each micro-operation (such as load a register from another register, or shift the stack) takes one clock, and that a memory read or write takes 8 clocks.

5. Comments on SCO-Chap. 3: We will review some of the material on digital circuits in class, but it is mainly assumed you are familiar with this. Also, we will cover only a limited discussion of buses in class, however you should read the material in sections 3.4-3.7 to at least become familiar with the PCI bus and the Universal Serial bus, used extensively in current generation desktop PC's. To understand the internal workings of the CPU at the micro-program level, I believe it helps to work with a simple structure, so the details don't begin to obscure the central ideas. Consequently, in the course we will focus only on a very simple model of asynchronous buses internal to the CPU and with a single, external memory data bus. You should, however, understand the difference between an asynchronous and a synchronous bus. Although most modern computers look more akin to SCO-figure 3.34, we will ignore any issues associated with bus bridging and bus arbitration. This is not to say these are not important areas, and it is only in the interests of time that we reduce this coverage. There is always a new synchronous bus on the horizon, and it is hard to keep up with the details. However, if you understand the basic principles, you can always learn the details of this or that specific bus if you need to use it in a design.

THINGS YOU SHOULD UNDERSTAND FOR THE MID-TERM:

1. Hierarchical machine levels, "virtual machines," interpretation versus translation

2. Turing Machines, Universal Turing Machine

3. Generic Von Neumann architecture, "Von Neumann bottleneck"

4. Standard CPU registers and their functions, fetch/execute cycles, micro-operations

5. Memory-mapped I/O, programmed I/O

6. Instruction set design, expanding opcodes, RISC versus CISC

7. Operand addressing modes (immediate, direct, indirect, indexed, base register, etc.)

8. Stack operation, stack arithmetic, stacks for local variables, subroutine calls, and interrupt handling.

9. Branching, subroutine calls, traps, interrupts

10. Interrupt generating/handling structures (level, priorities), Vectored Interrupt scheme

11. Two's complement addition and subtraction, overflow detection, adders and ALU's

12. Simple CPU register-level datapath structures, synchronized control signals for CPU data transfers

13. Booth's algorithm for two's complement multiplication, "recoding" of the multiplier for Booth's algorithm

14. Carry-save adders and Wallace trees for summing partial products

 


520.422 - Things You Should Know for the Final

1. CPU Data Paths - internal buses, register functions, ALU/Shifter operations, memory interface

2. CPU Control - necessary control signals, clock cycles and sub-cycles for micro-control, single cycle execution versus multi-cycle execution, pipelined operation, causes and handling of CPU stalls

3. Micro-programmed Control - factors affecting control store size, encoded versus unencoded control information, nano-programming, methods of handling micro-jumps

4. CPU Performance - CPI and MIPS rate, computation of CPI from benchmark statistics, estimating the effect on CPI of pipeline stalls and miss ratio information

5. Memory System Hierarchy - virtual versus physical memory, steps involved in address binding, estimating average access time of the hierarchy, factors affecting hit ratios, high-order versus low-order interleaving of memory modules

6. Virtual Memory Support - paging versus segmentation, page and segment tables for address translation, replacement policies, operation of TLB, handling page faults and TLB misses

7. Cache - block placement (e.g. mapping) methods, cache controllers, tags, multi-level versus single level cache, estimating cache performance and factors affecting performance, virtual versus physical cache addressing

Back to top