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,70*TPM+0,30*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. The use of tools like Copilot and ChatGPT is allowed, but must be reported through the insertion of commentaries in the source code submitted; these annotations will be crutial if the delivered code is subjected to plagiarism detection software.
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 the grading of the 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 NEPi = 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.