Log   |   Assignments   |   Source   |   Discussion   |   Feedback   |   Summary  |   About Me  |

Course Summary for Advanced Computer Architecture (Spring 2011)

The Advanced Computer Architecture was a totally different experience to me in all aspects. I have tried to summarize what I've learned till now in this page.

1 Lectures

1.1 Data Representation

The course started with discussions on data representation. We learned that text is the most fundamental form of data presently used. We also had detailed discussions on how characters are mapped on to corresponding symbols in the computer and properties of a good mapping.

Integers – The discussion then proceeded to number representation and we learned about 2's complement and packed decimal representations.

Floating Point Numbers – We learned about the representation and the professor told us multiple times to be careful when using floating point numbers – because (a+b)+c is not necessarily equal to a+(b+c) for all floating point numbers.

1.2 CPU

We learned about the Von Neumann architecture, instruction formats and how the nature of operation and the address of operands are encoded into the instruction. The professor compared the 8086 / PDP-11 / Motorola 68k CPUs at each phase of the discussion. It is interesting to note that though the M68k is superior in many ways, the x86 finally became the most popular (general purpose) computing platform on the planet. We had detailed discussions on the various addressing modes available and why they are needed.

1.3 Programs

We learned that about the structure of programs and that most practical programs require temporary storage and the stack is used in such cases. In this context, the professor introduced the SP and PC relative addressing modes provided by the M68k and PDP-11 processors. We also learned the difference between relocatable code and position independent code and the complexity involved in executing relocatable code.

1.4 Building A System

We had long discussions on the design of the IBM-PC platform and the various near tricks used by the designers. We learned that hardware should not force specific requirements on each software application running on it. We also learned about how complex it is to interface with a seemingly simple device like the keyboard. We had interesting discussions on how a CPU is initialized on power up and how it accesses system functions using the INT instruction. The professor also told us how a debugger uses the INT instruction and hardware trace facility to single step through the code.

Handling Unforeseen Events – We had elaborate discussions on how to handle unforeseen conditions that arise, like division by 0 or an integer overflow.

1.5 I / O

The professor taught us different ways of interfacing with I/O devices - I/O mapped I/O and memory mapped I/O. We also had discussions on how to keep the CPU synchronized with the external world. We learned about programmed I/O and why it is not suitable when there are multiple devices present in the system.

1.6 Interrupts and DMA

We also learned techniques for handle multiple interrupts and how interrupt priorities are handled. The professor also told us about old PDP-11 systems with magnetic core memory which could save the state on a power failure and return from where they stopped on restoring power. We also had detailed discussions on handling power failures and the non-mask-able interrupt (NMI). We also had a short discussion on DMA and the cycle-stealing technique.

1.7 Serial Data

The professor then told us about scenarios where there is a huge amount of serial data coming in at high data rates, like in satellite communications. In such cases, we have to use device buffering to ensure that data is not lost. We were then given an introduction to sources of serial data like serial communication links and hard disks.

1.8 Devices and Drivers

We then learned about the general classification of devices into character, block and network devices. We had a detailed discussion on device drivers and how the device drivers from a layer between the hardware and the OS so that the OS components need not change when the hardware changes. We also learned about strategy routines that handle multiple requests efficiently and also got introduced to the concept of installable device drivers.

1.9 Filesystems

We learned about disk geometry parameters and filesystems. The professor built the concepts from ground up, discussing the basic requirements at first and then going ahead to explain how FAT and Unix filesystems are organized.

1.10 Documents and Presentation

The professor gave us two lectures dedicated to the properties of a document and presenting data on the screen. We learned that, for maximum portability, we should put only the bare minimum data in the document. We also learned about the data and meta-data can be sent together using markup languages. The professor also talked to us about presenting data and how the presentation should match the intent of the creator. We also had discussions on how to handle the presentation of data when hardware capabilities at the user end are not known a-priory. We also learned about fonts and how the serif fonts look good on paper, but horrible on computer monitors.

2 Lab Sessions

The professor made us write a wide variety of programs, ranging from ncurses/console applications to Xlib applications to bare assembly code. I enjoyed writing those programs and I can say with confidence that the code I write today is much better than what I used to write in the last semester. I also learned a great deal about UI design and input validation – the golden rule that the program should never crash.

3 General

Authors of most of the cs410/cs260 summaries I looked at say that they were able to stick on to the promises that they made. I am slightly disappointed that I was not able to keep my promises at times. But more importantly, I now know the importance and benefits of regular, hard work and discipline. I like the way the professor takes classes and I have never felt left out in class due to my EE background. If I ever become a teacher, I will conduct my classes based on my experience with this course.