CDA-4101 Lecture 1 Notes



Machines and Languages


Interpretation vs. Translation

Interpreted Compiled Both
Perl C Java
Python C++ C##
Visual Basic Fortran  
Javascript Cobol  

Machine Specifications


Virtual Machines


Advantages of Virtual Machines

Decoupling implementation details from the programmers view is extremely important at all levels of hardware and software (e.g., C++ interfaces and class specifications).


Hierarchy of Abstractions


From L++ to L

All of these are possible. Decision depends on many factors: e.g., the difficulty/complexity of designing each interpreter/compiler.

Someone can then define 'L+++' and so on.

In reality, the motivation and causes for where and when to define each level is fairly complicated and changes over time as software and hardware evolves.


Example: Compilers


Reducing Complexity


Multilevel Machines

We will define some standard levels of modern computers broadly and subsequent lectures will concentrate on specific levels in depth.


Level 0: The Hardware


Decoupling Not Always Perfect

The book says:

If this was completely true, then this course would not be relevant to someone just interested in being a C++, Java or other.


Below Level 0

Example: NAND gates


Transitor Level


Level 1: Microarchitecture Level

Example: AMD K5


Level 2: Instruction Set Architecture (ISA) Level


Implementation at Level 1 and 2

Level 1 can either be software or hardware.

When Level 1 is in software:

When Level 1 is hardware:

Level 2 is pretty standard, this is the machine language and the only real variation below this is whether level 1 has a microprogram or not. However, above Level 2 there tends to be a lot more variation.


Level 3: Operating System Machine Level

Example: OSes


Importance of OS Level

Examples of OS Conveniences: Processes and Memory

An application programmer can think about the virtual specification defined by an operating system and concentrate on the more critical parts of solving their problem. They are free from worrying about the details of process and memory management.

It is the system programmers who have written an interpreter (i.e., the operating system) that handles the conversion from the Level 3 language to the level 2 ISA language.


Level 3: The Dividing Line


Level 4: Assembly Language Level


Level 5: High-level Language Level


Java: Level 5 or 6?

Book claims Java at Level 5, but is it?


Architecture vs. Organization


Interchangability of Software and Hardware


History of Computers


Example Processors


Course Roadmap