Ordinateurs: Structure et Applications GIF-1001

Bienvenue sur le site web du cours d'OSA pour la session d'hiver 2020!

Ce cours présente l'architecture interne de l'ordinateur et l'organisation de ses principaux éléments. Il prépare à l'exploitation de l'ordinateur dans des problèmes d'ingénierie tels l'acquisition et le traitement de données, la commande industrielle et la gestion de périphériques. Afin de bien dégager la vision physique et logique, il utilise principalement le langage d'assemblage. L'architecture ARM sert de cas d'étude dans la discussion des divers concepts et lors de travaux pratiques.

Équipe

Jean-Francois Lalonde

Jean-François Lalonde
Professeur

jflalonde@gel.ulaval.ca
PLT-1138E
Marc-Antoine Dion

Marc-Antoine Dion
Assistant

Piazza
PLT-0103
Lundi 14h30-15h30
Jeudi 13h30-14h30
Nicolas Gariépy

Nicolas Gariépy
Assistant

Piazza
PLT-0103
Lundi 10h30-11h30
Mercredi 10h30-11h30
Philippe Trépanier

Philippe Trépanier
Assistant

Piazza

Logistique

Les notes de cours de la première semaine sur la logistique sont également disponibles ici: Logistique du cours.

Horaire

Jour Heure Local
Mardi 14h30 à 16h20 classe virtuelle
Vendredi 10h30 à 11h20 classe virtuelle

Pour joindre les classes virtuelles:

Plan de cours

Formule pédagogique

Plutôt que d'employer le format « traditionnel » avec cours magistraux de 3h par semaine et de l'étude personnelle à la maison, le cours opte maintenant pour la formule suivante:

  • La matière de la semaine est publiée chaque mardi sur le site de cours. La matière est disponible sous forme de capsules vidéos accompagnées de notes en format PDF. Les étudiants ont une semaine pour visionner et étudier les capsules à leur propre rythme et selon leur propre horaire.
  • Le cours du mardi (14h30 à 16h20) est séparé en deux parties:
    • Les 30 premières minutes (14h30 à 15h) sont réservées à une récapitulation magistrale de la matière de la semaine précédente.
    • Le reste de la période de cours (15h10 à 16h20) est dédié à des exercices dirigés par le professeur. Les exercices porteront sur la matière de la semaine précédente, ou sur le travail pratique en cours.
  • Le cours du vendredi (10h30 à 11h20) sera une période de questions.

Forum de discussions

Nous utilisons Piazza pour toutes questions, discussions, etc.

Évaluations

Travaux pratiques

Les travaux pratiques devront être remis sur le portail des cours.

Tous les travaux doivent être faits individuellement et aucun retard n'est permis.

Travail Date de disponibilité Date de remise Pondération
TP0: Format des nombres en binaire 14 janvier 27 janvier, 23h59 1%
TP1: Devenez un microprocesseur 21 janvier 10 février, 23h59 3%
TP2: Initiation à l'assembleur ARM
Partie 1: questionnaire
Partie 2: code
11 février 21 février (vendredi), 23h59 3%
TP3: Branchements et appels de fonction 25 février 16 mars, 23h59 3%
TP4: Interruptions et ordonnancement 17 mars 30 mars, 23h59 4%
TP5: Gestion d'une mémoire paginée 31 mars 13 avril, 23h59 4%
TP6: Récapitulation 14 avril 24 avril (vendredi), 23h59 2%

Examens

Examen Date et heure Lieu Pondération
Mi-session 25 février, 14h30 à 17h20 PLT-1112 40%
Final 28 avril, 14h30 à 17h30 En ligne 40%

Modules de cours

Cliquez sur le module pour révéler plus d'informations. Les informations manquantes seront mises à jour durant la session.

1. Introduction et format des données

14 au 20 janvier 2020

Messages

Le TP0 est disponible! Date de remise: 27 janvier, 23h59

SVP remplissez le doodle suivant pour déterminer les disponibilités des assistants durant la semaine!

Objectifs d'apprentissage
  • Connaître les principaux événements dans l'historique des ordinateurs
  • Identifier les façons de représenter les données sur un ordinateur
  • Convertir des données du format binaire au décimal, et vice-versa
  • Convertir des données du format hexadécimal au décimal, et vice-versa
  • Convertir des données du format binaire complément-2 au décimal, et vice-versa
  • Convertir des données du format binaire IEEE754 au décimal, et vice-versa
  • Convertir des chaînes de caractères (ASCII) en binaire, et vice-versa
Exercices dirigés du mardi (exportés de Wooclap)

2. Composantes principales des ordinateurs

21 au 27 janvier 2020

Objectifs d'apprentissage
  • Décoder un programme simplifié
  • Reconnaître les principales composantes des ordinateurs: microprocesseur, mémoire, entrées-sorties, bus
  • Reconnaître les trois principaux types de bus: données, adresses, contrôle
  • Connaître les trois étapes du cycle d'instructions
  • Comprendre les interactions entre le microprocesseur et la mémoire via les bus
  • Reproduire le comportement d'un microprocesseur pour des instructions simples
Exercices dirigés du mardi (exportés de Wooclap)

3. Instructions et jeu d'instructions

28 janvier au 3 février 2020

Objectifs d'apprentissage
  • Reconnaître et différencier les types d'instructions
  • Comprendre l'utilité des registres
  • Comprendre la signification des instructions principales (MOV, LDR/STR, ADD/SUB, JZE)
  • Distinguer les instructions MOV des instructions LDR/STR
  • Décoder une instruction en binaire
  • Connaître les différences entre RISC et CISC
  • Écrire un programme simple en assembleur simplifié
  • Décoder un programme simple en assembleur simplifié

4. Introduction à l'architecture ARM

4 au 10 février 2020

Objectifs d'apprentissage
  • S'initier à la programmation en assembleur ARM
  • Connaître les principales caractéristiques de l'architecture ARM (32 bits)
  • Distinguer la notation « Big Endian » et « Little Endian »
  • Comprendre l'utilisation de variables en ARM
  • Savoir utiliser les différents modes d'adressage en ARM
  • Distinguer les assignations des allocations (ASSIGN vs ALLOC)
Documentation ARM

5. Assembleur ARM: conditions, branchements et fonctions

11 au 17 février 2020

Messages

Le TP2 est disponible! Il est divisé en 2 parties: 1) questionnaire et 2) code. La date de remise (pour les 2 parties) est le vendredi 21 février, 23h59

Lien vers l'appréciation de l'enseignement en cours de session.

Objectifs d'apprentissage
  • Distinguer l'assembleur du compilateur de l'éditeur de liens
  • Comprendre l'utilisation de variables en ARM
  • Expliquer l'avantage des instructions relatives à PC
  • Établir le lien entre les instructions conditionnelles et les drapeaux de l'ALU
  • Implémenter des programmes simples en assembleur ARM utilisant des instructions conditionnelles
  • Comprendre le fonctionnement des branchements et de l'utilisation du registre LR
  • Implémenter des programmes simples faisant des appels de fonctions
  • Utiliser la pile pour sauvegarder et restaurer les registres lors d'appels de fonction
Documentation ARM

6. Révision mi-session (pas de nouvelle matière)

18 au 24 février 2020

7. Examen mi-session

25 février 2020, 14h30-17h20, PLT-1112

Informations sur l'examen de mi-session
  • Local: PLT-1112
  • Vous avez droit à une calculatrice approuvée et une feuille aide-mémoire 8.5x11, recto-verso, écrite à la main.
  • Les annexes suivantes vous seront données à l'examen, pas besoin de les prendre en note!
  • Brève révision de mi-session
Examens des années antérieures

Attention: regarder immédiatement les solutions des examens antérieurs ne constitue pas une façon appropriée d'étudier! Pratiquez-vous d'abord sérieusement, sans regarder les solutions. Ne les consultez qu'après avoir essayé de répondre aux questions. Notez également que la matière peut avoir changé légèrement (surtout depuis 2016).

7. Les interruptions

26 février au 9 mars 2020

Messages

Le TP3 est disponible! Date de remise: 16 mars, 23h59

Objectifs d'apprentissage
  • Distinguer les différents types d'interruptions
  • Comprendre le fonctionnement d'une table des vecteurs d'interruptions
  • Comprendre la sauvegarde du contexte et le changement des registres lors d'une interruption
  • Connaître l'utilité d'un contrôleur d'interruptions
  • Implanter un système de gestion d'une interruption simple

8. Semaine de lecture

2 au 6 mars 2020

9. Introduction aux systèmes d'exploitation

10 au 16 mars 2020

Objectifs d'apprentissage
  • Connaître les rôles d'un système d'exploitation
  • Distinguer divers types de systèmes d'exploitation
  • Comprendre comment un système d'exploitation est chargé en mémoire
  • Connaître les rôles du BIOS

10. Gestion des processus

17 au 23 mars 2020

Messages

Le TP4 est disponible! Date de remise: 30 mars, 23h59

Nous tiendrons une classe virtuelle vendredi de 10h30 à 11h30.

Objectifs d'apprentissage
  • Comprendre la nécessité d'ordonnancer les processus
  • Indiquer l'ordre d'exécution des processus en fonction d'algorithmes d'ordonnancement simples
  • Exécuter l'algorithme du tourniquet (avec ou sans priorité)
  • Comprendre l'interaction entre les interruptions et l'ordonnancement des processus
  • S'initier aux algorithmes d'ordonnancement des systèmes d'exploitation modernes
Modules de cours Lectures facultatives Capsules à étudier Devoirs à faire
23. Les processus Chapitres 15.3, 18 (jusqu'à 18.5) 23a. Introduction aux processus
23b. Les états des processus
23c. Ordonnancement des processus
23d. L'algorithme du tourniquet
23e. Priorité des processus
23f. Processus et entrées-sorties
Questionnaire: Les processus
Classe virtuelle du vendredi

11. Gestion de la mémoire

24 au 30 mars 2020

Messages
Objectifs d'apprentissage
  • Déterminer l'organisation de la mémoire en allocation contigüe avec partitions de taille fixe et variable
  • Distinguer les adresses virtuelles des adresses physiques
  • Distinguer les pages des trames
  • Utiliser une table des pages pour traduire une adresse virtuelle en une adresse physique
  • Comprendre le mécanisme des fautes de page
  • Calculer la taille d'une table de pages
  • Mettre à jour les tables après une série d'accès mémoire
Modules de cours Lectures facultatives Capsules à étudier Devoirs à faire
24. Allocation mémoire contigüe Chapitres 18.6-18.7 24a. Allocation mémoire introduction
24b. Partitions de taille fixe
24c. Partitions de taille variable
24d. Mémoire virtuelle et mémoire physique
25. Allocation mémoire paginée Chapitres 18.6-18.7 25a. Pages et trames
25b. Taille de la table des pages
25c. Traduction d'adresses
25d. Allocation dynamique
Questionnaire: Gestion de la mémoire
Classe virtuelle du mardi
Classe virtuelle du vendredi

12. Entrées-sorties

31 mars au 6 avril 2020

Messages
Objectifs d'apprentissage
  • Connaître les fonctions principales d'un contrôleur de périphériques
  • Comprendre le fonctionnement de trois modes d'accès aux périphériques: programmées, par interruptions, et par DMA.
  • Connaître les avantages et inconvénients principaux de ces modes d'accès aux périphériques
Modules de cours Lectures facultatives Capsules à étudier Devoirs à faire
26. Modules d'entrées-sorties 26a. Introduction aux entrées-sorties
26b. Modules d'entrées-sorties
26c. Modules d'entrées-sorties, suite
27. Entrées-sorties Chapitres 9, 11.2, 11.2 27a. E-S programmées
27b. E-S par interruptions
27c. Le DMA
27d. E-S et ordonnancement
Questionnaire: Les entrées-sorties
Classe virtuelle du mardi
Classe virtuelle du vendredi

13. Mémoire cache

7 au 13 avril 2020

Rappel: il n'y aura pas de classe virtuelle ce vendredi 10 avril. Joyeuses Pâques!

Objectifs d'apprentissage
  • Comprendre pourquoi on utilise des caches
  • Déterminer pourquoi l'ordre d'exécution de deux boucles imbriquées est important
  • Distinguer une cache « write-back » d'une cache « write-through »
  • Énumérer les étapes d'accès mémoire lors d'un « hit » et d'un « miss » en cache
  • Calculer des temps d'accès en mémoire en présence de « hit » et de « miss » en cache

14. Série/USB

14 au 20 avril 2020

Messages
  • Le TP6 (le dernier!) est disponible. Date de remise: 24 avril (vendredi) 23h59. Il s'agit d'un questionnaire sur le portail des cours. À faire individuellement, il comporte 42 questions évaluées sur un total de 75 points et il compte pour 2% de la session.
  • Courage! Ces modules sont les deux derniers, lâchez pas vous êtes presque rendus à la fin!
Objectifs d'apprentissage
  • Traduire une chaîne de bits à envoyer sur une ligne série RS-232 en voltage, et vice-versa
  • Comprendre le mode différentiel
  • Calculer le temps de transfert d'une chaîne de bits sur une ligne série
  • Connaître l'organisation hiérarchique du bus USB
  • Connaître les principales caractéristiques du bus USB: adresses, ordonnancement temporel et organisation par paquets
Modules de cours Lectures facultatives Capsules à étudier Devoirs à faire
30. Communication série 30a. Protocole RS-232
30b. Signaux
30c. Exercice
30d. Mode différentiel
31. USB Spécifications USB 2.0 (pour les curieux) 31a. USB - connecteurs
31b. USB - paquets et transactions
31c. USB - transferts
Questionnaire: Série USB
Classe virtuelle du mardi
Classe virtuelle du vendredi

15. Révision finale (pas de nouvelle matière)

21 au 27 avril 2020

Classe virtuelle du mardi
Classe virtuelle du vendredi

16. Examen final

28 avril 2020, 14h30-17h30, à distance

Informations sur l'examen final

Conformément à la politique universitaire pour les évaluations à distance, « les étudiantes et étudiants devront désormais joindre à chaque travail et examen réalisé à distance une déclaration d’intégrité relative aux travaux et aux examens, à défaut de quoi le travail ou l’examen ne sera pas corrigé. »
Assurez-vous de remplir et signer la déclaration, et de la téléverser dans la boîte de dépot.

Examens des années antérieures

Livre

Bien que non obligatoire, le livre suivant pourrait vous être utile:

Irv Englander, "The architecture of computer hardware, systems software, and networking", 4e édition, Wiley, 2014, ISBN : 9780471715429.

Remerciements

Merci à Marc-André Gardner, Yannick Hold-Geoffroy, Étienne Dubeau, Jonathan Goudreault et Jessica Déziel pour le développement de notre simulateur ARM. Merci à Julien Lavoie-Bernier pour les exercices sur le portail des cours. Merci également à Étienne Tremblay pour le matériel original et l'aide apportés à l'élaboration du contenu initial de ce cours. Je donne la permission à quiconque d'utiliser le contenu présent sur ce cours, à condition de créditer les sources originales.