Computer Architecture

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2017/2018
Year: 
1
Academic year in which the course will be held: 
2017/2018
Course type: 
Basic compulsory subjects
Language: 
Italian
Credits: 
9
Period: 
First Semester
Standard lectures hours: 
80
Detail of lecture’s hours: 
Lesson (56 hours), Exercise (24 hours)
Requirements: 

No specific knowledge is required.

A good knowledge of written English can be useful in order to get access to the large amount of didactic material, publications, manuals, programs, web-pages etc.

Final Examination: 
Orale

The final exam consists of a written test, three hours long. In the test, the student is asked solve a sequence of problem which span the entire contents of the course. On the designated web-page, a number of example exams are made available.

In a few cases, if required by the professor, an oral exam can be required to complete the exam.

Assessment: 
Voto Finale

The course aims to provide the basic knowledge and the basic skills required for understanding and programming computers. The topic selection follows a well-established teaching tradition for this subject: the computer is understood as a sequence of abstraction layers each corresponding to a physical or a virtual machines, which are studied in succession. Concepts are presented with a bottom-up approach, that is, starting from the basic elements of the lower abstraction level (logic ports), and stops at the level of assembly languages. This level represents the final destination of this course, and, at the same time, the basis for further abstractions, and namely for the mid- and high-level programming languages which are the subject of the Programming courses.

More in details, the course aims to provide the following knowledge and skills:

* Introductory knowledge of the concept of abstraction levels, virtual machines, languages, instructions and operations, compilers and interpreters;

* knowledge and ability to use the formalisms normally employed to describe circuits and computer parts;

* knowledge of the methods of digital representation of numerical (naturals, integers, rationals) and textual entities, inclusive of the limits, benefits and costs of possible alternatives. Correspondingly, familiarization with the corresponding methods of encoding and decoding information (skills)

* knowledge of the fundamentals of electronic circuits, the implemented logic functions, and the basic methodologies of their design;

* ability to analyze, design, evaluate, and optimize simple combinatorial circuits, using techniques based on Boolean algebra knowledge (skill)

* ability to analyze, design, evaluate, and optimize complex combinatorial circuits (such as an ALU) using standard library components using hierarchical approach (ability)

* ability to evaluate the conflicting requirements that arise in circuit design (cost of design, component cost, processing speed) and make decisions about it.

* knowledge of the constructive principles and characteristics of electronic memories commonly used in computers;

* knowledge of the basic constructive principles and the functional features of cache memories.

* knowledge of the hierarchical structure of the memories, as a prerequisite to the ability of designing and assessing efficient and resource aware computer programs;

* knowledge of the functions delegated to Operating Systems;

* knowledge of constructive principles for CPU datapaths and control units.

* knowledge and ability to design microprogramming control units;

* knowledge of a real processor (MIPS machine); MIPS serves as a the concrete example of an Instruction Set to guide the three previous arguments;

* Basic programming skills in assembly language, using the same MIPS language;

* ability to implement algorithms to solve simple tasks in that language (skills);

Finally, the course also contributes at covers the technical language of Computer Science, with a focus on the commonly used English terminology.

Layered architecture of computers. Building princles and building blocks of a typical electronic computers.
Lessons: 3 hours; exercises: none.

Binary representation of numbers, characters and othe rinformation
Lessons: 7 hours; exercises: 1 hour.

Boolean algebra operators and properties. Relationship between Boolean operators and logic ports.
Lessons: 4 hours; exercises: 1 hour.

Combinatorial circuits – Combinatorial network synthesis, normal forms, Karnaugh maps.
Lessons: 4 hours; exercises: 3 hours.

Combinatorial circuit libraries, ALU, combinatorial circuit design using library elements.
Lessons: 3 hours; exercises: 2 hours.

Bistables, sequential library elements (especially registers). Sequential circuit design.
Lessons: 5 hours; exercises: 1 hour.

Memories. Principle of locality and memory hierarchies, cache, virtual memory, paging.
Lessons: 4 hours; exercises: 2 hours.

Data path building. Single cycle CPU. Multi-cycle CPU.
Lessons: 6 hours; exercises: none.

Hardwired and microprogrammed control unit.Implementing instructions via microprogramming.
Lessons: 6 hours; exercises: 2 hours.

Pipeline architecture (essentials)
Lessons: 2 hours; exercises: none.

I/O (programmed, interrupt, DMA), BUS
Lessons: 4 hours; exercises: none.

Machine language structure and instructions. MIPS machine Instruction Set Architecture.
Lessons: 4 hours; exercises: none.

MIPS assembly programming: instructions, procedures, stack; activation record, recursion (essentials).
Lessons: 4 hours; exercises: 12 hours.

The personal commitment of self-re-elaboration by the student is, as standard, 25-hour canonical value for each CFU.

Lecture and exercise slides are available on the University e-learning site.

Reading the following books is recommended:

Patterson & Hennessy, “Computer organization and design – The hardware/software interface”, Elsevier
(Note 1: any of the numerous editions of this book can be equivalently employed)
(Note 2: an Italian translation is also available)
(Note 3: it is recommended to check the order of the two authors, as there is a separate textbook by the same two authors, but in inverted order, that is a worse fit to the contents of this course)

Bolchini & Sciuto, “Informatica 2 sistemi digitali”, Progetto Leonardo, Soc. Editrice Esculapio Bologna

Frontal lessons (for a total of 56 hours) and exercises (for a total of 24 hours) are held.
Lessons on assembly programming are carried out with employing a tool for instruction-level simulation of a MIPS machine.

During the semester when this course it is held, the Lecturer is available to tutor the students at a scheduled weekly time. After the end of the course, the tutoring requires scheduling an appointment.

Professors

TARINI MARCO