COMPUTER ARCHITECTURE

Academic Year 2022/2023 - Teacher: DAVIDE PLATANIA

Expected Learning Outcomes

The course has a twofold objective. First of all, it aims to introduce the knowledge of technologies and methodologies for the design of digital systems. A second objective is the knowledge of the organization of electronic computers, the architecture of the instruction set, and the techniques for efficient implementation. In this context, the student learns to program a processor using the C language and the specific Assembly language. The student also acquires skills on the most popular microcontrollers available on the market and on development environments.

Knowledge and understanding

  • The student will know:
  • the basic techniques for the design of combinational and sequential digital circuits.
  • the elementary modules that make up a processing system
  • the main architectures of the instruction set.
  • the basic architectures of RISC processors
  • the assembly of an educational processor
  • microcontrollers and related development environments

Applied knowledge and understanding

The student will be able to:

  • design simple combinational and synchronous sequential circuits
  • evaluate the performance of a computer
  • write programs in the assembly language of a compatible Intel x386 processor
  • use the development environment of a microcontroller

Autonomy of judgment

The student will be able to evaluate the impact of architectural choices on the performance of computers.

Communication skills

The student will be able to explain in a clear and rigorous way the acquired knowledge and the ways in which to apply these for the design of simple processing systems.

Ability to learn

The student will be able to independently learn:

  • additional basic characteristics of the processor architectures
  • the assembly of other processors

Course Structure

Frontal teaching

Required Prerequisites

Representation of information in electronic computers. Algorithms. Control Sequences. Data types. Pointers. Functions. State of a machine. Finite state machine.

Attendance of Lessons

Attendance of the course is not compulsory

Detailed Course Content

Part I - Design of digital systems

1.1 Design of combinatorial networks

Switching algebra. Minimum Boolean expressions. Minimization using the Karnaugh and Quine-McCluckey maps method.

1.2 Design of synchronous sequential networks

Introduction to sequential machines. The memory elements: the bistables. Synthesis of synchronous sequential networks. Minimization of finite state machines.

Part II - Computer architecture

2.1 The computer: abstraction and technologies

The types of calculators and their characteristics. The components of an electronic computer and their organization. Evaluation of the performance of a computer. Amdhal's law.

2.2 The computer language: Assembly

Instruction Set of processors. Instruction Set Architecture Intel x386. Creating and running executable Assembler, linker and loader. Configuration of the development environment for Linux. X386 instructions, Subroutine calls and System Call. Access to memory. Array. Strings. Stack Management.

2.3 Computer organization

Sequential organization of a processor. Datapath of a sequential processor. Control unit of a sequential processor. Pipeline organization of a processor.

2.4 The memory subsystem.

Static and dynamic RAM memories. Asynchronous and synchronous memories. Memory organization. Cache memories. Block placement, block identification, block replacement and writing policies. Memory performance evaluation. Techniques for improving cache performance.

2.5. The Input / Output subsystem:

Polling. Interrupts. Interrupt vector. Interrupt priority management. Direct Memory Access (DMA).

2.6 Microcontrollers

Microprocessors vs Microcontrollers (MCU). General characteristics of an MCU. Block diagram and on-chip integrated peripherals. Embedded Core. Memory. General Purpose IO (GPIO). Timers and Counters. Serial communication interfaces and peripherals. Development environment for microcontrollers - writing simple programs for managing GPIOs and peripherals.

Textbook Information

[T1] Fummi, Sami, Silvano, “Progettazione digitale”, 2/ed McGraw-Hill

[T2] Patterson, Hennessy, “Computer organization and design”

[T3] Bucci, “Architettura e organizzazione dei calcolatori elettronici: fondamenti”, McGraw-Hill 

[T4] Online learning resources provided by teacher

Course Planning

 SubjectsText References
1Design of combinatorial networks. Switching algebra. Minimal Boolean expressions. Minimization by the method of Karnaugh and Quine-McCluckey maps.T1 chapter 3 and 4, T4
2Design of synchronous sequential networks. Introduction to sequential machines. The elements of memory: the bistables. Synthesis of synchronous sequential networks. Minimization of finite state machines.T1 chapter 5 and 6, T4
3Components of a digital system. Multiplexer, Decoder, Encoder, Comparator, Registers, Register file.T1 chapter 7 and 8, T2 chapter 3, T4
4Carry Over propagation adder Carry-over advance adde.Multiplier and divider. Design of an ALUT1 chapter 7 an 8, Y2 chapter 3, T4
5The types of calculators and their characteristics. The components of a computer. Organization of electronic computers.T2 chapter 1, T3 chapter 5, T4
6Microprocessors Instruction Set ArchitercturesT2 chapter 2, T3 chapter 5, T4
7Sequential organization of a processor. Datapath of a sequential processor. Control Unit of a sequential processor: wired and microprogrammed design.T2 chapter 4, T3 chapter 7, T4
8Pipeline processorT2 chapter 4, T4
9Instruction Set Architecture Intel x386. General registers, pointer registers, segment registers, and flags. The 32-bit memory model. CPU RAM interaction. Compatibility with 64-bit Intel processors.T4
10ASM programming: Assembler, Linker and Loader. Configuration of the development environment for Linux. Schema of an x386 Assembler program in a Linux environment.T4
11Arithmetic and logical instructions. Addressing instructions. Flow control: conditional and unconditional jumps. LODS, STOS, MOVS – exercises. Linux services – int 80h. Files in Linux (STDIN, STDOUT and STDERR). ExercisesT4
12The Stack: PUSH-POP, CALL-RET, INT-IRET. Command-line applications and parameter passing. From C to Assembly with gcc and nasm. Passing parameters through the stack. Application examples.T4
13The Memory Subsystem. Classification of memories. Static Ram and Dynamic RAM. Read and write cycles. Asynchronous and synchronous DRAM. Organization of memory. Address decoding.T2 chapter 5, T3 chapter 8, T4
14Cache memories. Evaluation of cache memory performance. Block placement, block identification, block replacement and writing policies.T2 chapter 5, T3 chapter 8, T4
15Techniques for improving cache performance.T2 chapter 5, T3 chapter 8, T4
16The Input/Output subsystem: Polling. Breaks. Vectorized breaks. Priority management. Direct access to memory.T3 chapter 13, T4
17Structure of an MCU: A computer in a single chip. General characteristics. Typical applications. Core. Memory. GPIO. Serial communication devices. Comparisons with microprocessors. MCU Market.T4
18MCU applications. Exercises with Arduino or STM32T4

Learning Assessment

Learning Assessment Procedures

The exam consists of a single written and computer test.

First part (11 points)

  • three questions on logical networks;

Second part (21 points)

  • a question about assembly programming;
  • a question about calculating the performance of computers;
  • a question on computer architectures;
  • a question about microcontrollers

To pass the test it is necessary to obtain a minimum score of 18, with at least 6/11 points for the questions on logic networks and at least 12/21 points for the rest of the task.

Distance learning could be used if COVID emergency requires it

Examples of frequently asked questions and / or exercises

http://studium.unict.it 
VERSIONE IN ITALIANO