Go to:
You are here: Start > EIC0016

Microprocessors and Personal Computers

Code: EIC0016     Acronym: MPCP

Classification Keyword
OFICIAL Computer Arquitechture

Instance: 2020/2021 - 2S Ícone do Moodle

Active? Yes
Responsible unit: Department of Electrical and Computer Engineering
Course/CS Responsible: Master in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
MIEIC 265 Syllabus since 2009/2010 1 - 6 56 162

Teaching Staff - Responsibilities

Teacher Responsibility
João Paulo de Castro Canas Ferreira

Teaching - Hours

Lectures: 2,00
Recitations: 2,00
Type Teacher Classes Hour
Lectures Totals 1 2,00
João Paulo de Castro Canas Ferreira 2,00
Recitations Totals 10 20,00
João Paulo de Castro Canas Ferreira 2,00
António José Duarte Araújo 6,00
Daniel Miranda Malafaia Granhão 4,00
Bruno Miguel Carvalhido Lima 8,00
Mais informaçõesLast updated on 2021-04-14.

Fields changed: Calculation formula of final grade, Componentes de Avaliação e Ocupação, Programa

Teaching language




The PC-compatible desktop and mobile platforms are an everyday tool in modern societies. Their architecture reflects the current technological development, but also defines the limits of the computer's capabilities and performance. Variants of the ARM instruction set are used today n most mobile platforms (tablets, mobile phones)in use today. Both system architecture and ISA have a deep impact on the day-to-day practice of informatics engineers.


The course unit Microprocessors and Personal Computers aims to develop, combine and apply concepts in the areas of Computer Architecture and Programming Languages. On the one hand, the course explores the relationships between the CPU instruction set and low-level programming (assembly language). On the other hand, recognizing that the architecture of modern personal computers goes far beyond the architecture of the CPU, the course addresses the general architecture of a computational platform, including data storage subsystem and other peripherals. The discussion is based on the ARMv8 64-bit CPU architecture. Upon successful completion of this course, students will have acquired the ability to identify and describe the architecture of the computational platforms in use today, as well as the ability to apply assembly programming to the implementation of algorithms.


  • Scientific component: 60%
  • Technological component: 40%

Learning outcomes and competences

After completing this course, students will be able to:

  • Identify and describe the major subsystems of a personal computer;
  • Describe and assess the performance of data storage systems (magnetic disks);
  • Describe, select and evaluate the performance of different methods of communicating with peripherals (polling, interrupts, DMA)
  • Explain the principles of operation of buses for communication with peripherals.
  • Explain and evaluate the contribution of each subsystem to the overall performance;
  • Use tools for compiling and debugging (assembler, debugger);
  • Describe the architecture of instruction set ARMv8 (64-bit version);
  • Develop short programs in ARMv8 assembly language ;
  • Explain the operation of programs written in ARMv8 assembly language;
  • Explain the mechanisms for invocation of subroutines;
  • Use modular subroutines to implement programs;
  • Use floating-point instructions;
  • Employ SIMD instructions for explicit exploitation of data parallelism;
  • Establish a correspondence between assembly code and C/C++ source code.

Working method


Pre-requirements (prior knowledge) and co-requirements (common knowledge)


EIC0083: principles of assembly language programming and computer organization.


EIC0012: basic principles of C/C++ language programming.


  1. Introduction to computational platforms.

  2. Direct-mapped cache memories.

  3. Peripheral Interface: polling, interrupts, DMA. Buses for communication with peripherals.

  4. Data storage subsystem.

  5.  Programming model of an ARMv8 microprocessor. Addressing modes. Functionality and organization of an "assembler".

  6. Instructions for data transfer, arithmetic and logic. Flow control instructions: conditional and unconditional jumps.

  7. Subroutines (invocation, parameter passing). Modular programming.

  8. Floating-point data processing;

  9. SIMD instructions for explicit data parallelism.

Mandatory literature

David Patterson, John Hennessy; Computer Organization and Design: The Hardware/Software Interface ARM Edition, Elsevier / Morgan Kaufmann, 2016. ISBN: 9780128017333 (Note that other versions do not use the same CPU.)
João Canas Ferreira; Apresentações das aulas teóricas

Complementary Bibliography

Bruce Jacob; Spencer W. Ng ; David T.Wang; Memory Systems - Cache, DRAM, Disk (May be accessed through the Knovel Portal)

Teaching methods and learning activities

Theoretical classes: Oral presentation of the different topics of the course. This presentation will be supported, when possible, with examples and its discussion.

Practical classes: The methodology of the practical classes is based in the presentation, discussion, and resolution of problems that will be tested on a computational platform or CPU emulator.


DS-5 Community Edition


Technological sciences > Engineering > Computer engineering

Evaluation Type

Distributed evaluation with final exam

Assessment Components

Designation Weight (%)
Exame 50,00
Teste 20,00
Participação presencial 10,00
Trabalho prático ou de projeto 20,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Estudo autónomo 86,00
Frequência das aulas 56,00
Trabalho laboratorial 20,00
Total: 162,00

Eligibility for exams

The student cannot miss more than 25% of the planned practical sessions.

Only students that already attended more than 75% of the planned practical sessions in the last two years (2018/19 and 2019/20) are not subject to this requirement.

Calculation formula of final grade

Distributed assessment comprises:

  • Assembly programming exercises (A): 40% (4 best scores out of 5);
  • Written test (T) : 40%
  • Participation in TP  sessions (P): 20%.
    (Grades by instructor.)

The grade for the distributed assessment (AD) is calculated as:

AD = 0.4×A + 0.4×T + 0.2×P

The course assessment comprises:

  • Distributed assessment (AD)
  • Final exam (E)

The final grade is calculated as:

Final grade = maximum(0.5×E + 0.5×AD; E)

Missing components count as zero.

The test has two parts: 1) multiple-choice questionnaire, with a duration of 45 minutes; 2) open questions (45 minutes).

For successful course completion, students must fulfil all the following conditions:
  • Grade for distributed assessment equal to or greater than 5.0 (in 20) in the current or in previous years;
  • Exam grade equal to or greater than 5.0 (in 20);
  • Final grade (rounded to units) equal to or greater than 10 (in 20).

Classification improvement

The course  grade can be improved by taking the retake exam (similar to the regular exam).


The development of microcomputer applications requires knowledge of computer architecture, microprocessors, low-level programming languages (assembly) and interfacing to external physical devices. This course unit comes in course plan after the course “Computer Architecture and Organization” and its objective is to develop and apply these concepts in the context of the AArch64 architecture.

Recommend this page Top
Copyright 1996-2023 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2023-09-23 at 17:48:53 | Acceptable Use Policy | Data Protection Policy | Complaint Portal