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 Version, Thomas 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.
- if NTPi >= 50, NEPi = minimum( 20 , NGi )
- else if NTPi >= 20, NEPi = mínimum( 12, NGi )
- 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.