Computer Architecture

Objectives

Knowledge

  • The general organization of computer hardware, and the inner workings of the CPU.
  • The hardware representation of data and instructions.
  • The translation process from C programs to assembly language and machine language.
  • The low level interfaces to I/O devices.
  • The organization and characteristics of memory units.

Competencies and aptitudes

  • C programming, assembly programming, translating between the two.
  • Detailled knowledge about the components of the Von Neumann architecture.

General characterization

Code

11152

Credits

9.0

Responsible teacher

Pedro Abílio Duarte de Medeiros

Hours

Weekly - 5

Total - 70

Teaching language

Português

Prerequisites

Introduction to Programming (Introdução à Programação) and Digital Systems (Sistemas Lógicos).

Bibliography

Dive Into Systems: A Gentle Introduction to Computer Systems, Suzanne Matthews et al., No Starch Press, 2022  https://diveintosystems.org/#_read_the_book

Operating Systems: Three Easy Pieces v1.00 (2018) , Remzi Arpaci-Dusseau e Andrea Arapci-Dusseau, https://pages.cs.wisc.edu/~remzi/OSTEP/#book-chapters

How to Think Like a Computer Scientist - C VersionThomas Scheffler and Allen B. Downey,  June 27th, 2019, https://github.com/tscheffl/ThinkC/


Teaching method

In lectures we will explain and discuss the sequence of points in the course program. 

 During lab classes students will develop a series of practical programming assignments, whose objective is to apply and consolidate the concepts that were learned in lecture. 

Evaluation method

The final mark (FM) is obtained using two components: theoretical-practical mark (TPM) and laboratory mark (ML):

FM = 0,75*TPM+0,25*ML

theoretical-practical mark (TPM) is obtained in two tests or in final exam

TPM = (mark of test 1 + mark of test 2 ) / 2   or

TPM = mark of final exam

To pass the course TPM should be higher than 9,5

laboratory mark (ML): is obtained through 4 programmig assignments with marks NEP1, NEP2, NEP3, NEP4.  Programming assignments are developed in groups of two students.

ML = (NEP1 + NEP2 + NEP3 + NEP4) / 4

To pass the course and to have access to the final exam, ML should be higher than 6,0

Each mark NEPi has two components:

- NGi  group mark between 0 an 20, which is related with the functionality of the code delivered

- NTPi individual mark between 0 and 100, obtained through answers to a special part of the test with questions about programming assignments: in test 1 about 1st and 2nd assignment and in test 2 about 3rd and 4th assignment.

  1. if NTPi >= 50,  NEPi = minimum( 20 , NGi )
  2. else if NTPi >= 20,  NEPi = mínimum( 12, NGi )
  3. else the student shoud answer to oral questions. His answers will define NEPi that will be between  minimum( 10, NGi ) and  0

Subject matter

1. Levels in a computational system. Von Neumann architecture. Operating system level. Operating system functions; the file abstraction. The operating system command interpreter.

2. The CPU component: general organization, data representation, machine instruction types and formats, suport of high level programming language concepts by CPU instructions. 

3. The main memory (RAM) component: Levels of the memory hierarchy; Cache memory. Physical and Virtual Adresses. Paging. Compiling, linking  and loading.

4. The input/output system component: input/output devices, device support by the operating system.

Programs

Programs where the course is taught: