Modern Computers and technological evolution. The role of performance. Introduction to Assembly languages. The MIPS language. The SPIM simulator. Logic circuits (combinatorial and sequential). Fundamentals of number representation and binary arithmetic. The design of an ALU. Multiplication and division. Floating point numbers. Design of a CPU (single cycle and multiple cycles). Exceptions. Pipelining. The interrupt system. Interactions with devices.
D. Patterson, J. Hennessy. Computer Organization and Design (The Hardware/Software Interface), Morgan & Kaufmann, 4/e, 2009 (edizione italiana dello stesso testo: Struttura e Progetto dei Calcolatori, 3/e, Zanichelli, 2010).
C. Bolchini, C. Brandolese, F. Salice e D. Sciuto. Reti logiche, 2/e, Apogeo, 2009.
Learning Objectives
The course aims to provide the basic elements in order to understand computer architecture and the interface between this and the higher levels of abstraction of a computation system. Moreover, teaching an assembly language (MIPS) intends to give the elements to understand assembly languages and the interface that they constitute between hardware architecture and the higher level of abstraction of a computation system.
Teaching Methods
Total hours of the course: 300
Hours reserved to private study and other individual formative activities: 194
Prof. Andrea Bondavalli, by appointment.
Contact professor by phone number or e-mail (bondavalli@unifi.it).
DiMaI, Universita' di Firenze, Viale Morgagni, 65 - 50134 Firenze
Tel. 055 4237457
Dott. Paolo Lollini, by appointment.
Contact professor by phone number or e-mail (lollini@unifi.it).
DiMaI, Universita' di Firenze, Viale Morgagni, 65 - 50134 Firenze
Tel. 055 4237460
Fax 055 4237436
Type of Assessment
Written and Oral
Course program
Modern computers and technological evolution.
The role of performance.
Combinatorial logic circuits: specification, synthesis, minimization.
Clock and memory elements.
Finite state machine and sequential circuits.
Introduction to assembly language of MIPS system.
QtSpim simulator.
Lab activities: programming in QtSpim environment.
Fundamental notions of numbers representation and binary arithmetic.
Design of an ALU.
Multiplication and division.
Floating points numbers.
Design of a single cycle CPU: data progress and control.
Design of a multiple cycle CPU: data progress and control.
Exceptions.
Enhancing performance by Pipeling: data progress and control.
Memory hierarchy.
Peripheral interactions and interrupt system.