Computer Architecture
Objectives
Knowledge:
- Identify the fundamental components of a computer''s architecture and explain their role in the whole.
- Identify the fundamental components of a processor and explain their role in the whole.
- Identify the different types of machine instructions and the mechanisms for executing them.
- Understand how instructions and data are stored in memory and interpreted by the processor.
- Understand how a programme written in a high-level language is executed, including the role of the compiler, assembler and loader.
- Understand the importance of a hierarchical memory structure and its role in application performance.
- Understand how interrupts/exceptions work, as well as the interface with a processor''s peripherals
Competencies and aptitudes:
- Design and realise solutions to simple problems using C and Assembly languages.
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
Basic knowledge of Bool algebra, number bases and digital circuits and information representation, as well as basic knowledge of computer programming.
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
The lectures present and discuss the topics on the course programme, presenting the problems and discussing the respective solutions and alternatives using examples of concrete architectures. The class materials and topics (slides and other materials available in the public domain) to be covered are made available in advance, encouraging students to study in advance.
Practical classes accompany the knowledge acquired in the course, giving students hands-on experience in system-level programming for a specific processor and architecture. The weekly exercises accompany the syllabus of the lectures, and the project allows students to consolidate the knowledge acquired in the course. The quizzes, to be answered in selected practical classes, promote the study and consolidation of knowledge throughout the semester.
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.
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.