% INF2171 — Organisation des ordinateurs et assembleur % UQAM — Département d'informatique % Plan de cours — Été 2023 * Horaires, locaux et enseignants: * Site web du cours: Responsable(s) du cours ======================= Coordination ------------ Beaudry, Éric PK-4635 Enseignement ------------- Giraldeau, Francis PK-4820 Groupes: 020 Description du cours ==================== Objectifs --------- Maîtriser la programmation en assembleur et les fondements de l'architecture des ordinateurs, de manière à comprendre la façon dont l'information est représentée et traitée au niveau machine. Sommaire du contenu ------------------- - Étude des composants des ordinateurs: processeur, mémoire, bus, et périphériques. - Fondements de l'architecture des ordinateurs: circuits logiques, registres, unité arithmétique, format d'instructions. - Représentation de l'information numérique: bits, octets, entiers signés et non signés, nombres flottants, pointeurs, tableaux, et enregistrements. - Organisation et accès à la mémoire: pile, tas, et les modes d'adressages. - Programmes en assembleur: jeux d'instructions, sous-programmes, convention d'appel, et entrées-sorties. Modalité d'enseignement ----------------------- Ce cours comporte une séance obligatoire de laboratoire (2 heures). Préalables académiques ---------------------- INF1120 Programmation I Objectif du cours ================= Le cours INF2171 permettra à l'étudiant d'acquérir une formation théorique et pratique des principes de fonctionnement des ordinateurs et des microprocesseurs. On étudiera les concepts fondamentaux des processeurs et de leur programmation à bas-niveau. Nous utiliserons l'architecture RISC-V comme plateforme d'apprentissage. L'étudiant.e sera en mesure d'appliquer ses connaissances dans une foule de domaines reliés, notamment les compiltateurs, la sécurité informatique, et les systèmes d'exploitation. Contenu du cours ================ Aperçu des thèmes traités avant l'examen intratrimestriel : - Ordinateurs, microprocesseurs. Architecture générale d'un ordinateur: CPU, mémoire, disques, périphériques. - Concepts de la programmation en langage machine et en langage assembleur. Codage de l'informatique arithmétique sur ordinateur: addition, soustraction, multiplication, division. Codes de condition. Registres. - Éléments de base de l'assembleur. Instructions et directives. - Modes d'adressage et instructions du processeur RISC-V. Codes de condition, branchements, boucles et tableaux. Structure, documentation et mise au point des programmes. - Pile et sous-programmes: appels simples. Aperçu des thèmes traités après l'examen intratrimestriel: - Sous-programmes: appels, paramètres, utilisation de la pile. Sauvegarde des registres. Modes d'adressage sur la pile. - Structures de données : structures, pointeurs, utilisation du tas. - Instructions arithmétiques et logiques. Arithmétique réelle. - Interruptions: Vecteurs d'interruption. - Éléments de base des circuits logiques. Les séances de laboratoire font partie intégrante du cours. Modalités d'évaluation ====================== Description Pondération Échéance -------------- ------------- ------------------- Quiz 1 5% 9 juin 2023 Quiz 2 5% 28 juillet 2023 Examen intra 25% 23 juin 2023 Examen final 25% 11 août 2023 TP 1 10% Remise semaine 6 TP 2 15% Remise semaine 10 TP 3 15% Remise semaine 14 Le TP1 portera sur les structures de contrôle simples (boucles et conditions). Le TP2 portera sur les sous-programmes et les tableaux. Le TP3 portera sur l'allocation dynamique, l'utilisation de pointeurs et la récursivité. L'étudiant doit obtenir une moyenne cumulée aux examens égale ou supérieure à 50% et une moyenne cumulée aux devoirs égale ou supérieure à 50%. Si ce seuil n'est pas atteint, la mention échec sera automatiquement attribuée au cours et ce, quelles que soient les notes obtenues. La qualité du français constitue un critère d'évaluation. Tous travaux remis sera corrigé. Toutefois, une pénalité de 10% s'applique pour chaque 24h de retard. La note zéro sera attribuée pour un travail remis avec plus de 72h de retard. Ceci a pour but de corriger et remettre les notes rapidement. La note finale (en lettre, A+, A, etc.) pour le trimestre sera attribuée en fonction de l'atteinte des objectifs spécifiques à travers les évaluations. La distribution des résultats dans le groupe pourrait aussi être utilisée. Aucune autre opportunité (travail supplémentaire, etc.) d'augmenter le nombre de points ne sera accordée. Materiel de cours ================= Le cours utilise un simulateur RISC-V qui sera fourni aux étudiants, ainsi qu'une banque d'exemples et d'exercices. Le matériel pédagogique est accessible sur Moodle. Calendrier ========== Plan prévisionnel (par semaine) 1. Introduction. Structure d'un ordinateur 2. Codage, langage machine, instructions 3. Arithmétique sur ordinateur 4. Éléments de base de l'assemblage 5. Adressage des opérandes, boucles et tableaux 6. Instructions 7. Structure et documentation 8. Examen intratrimestriel 9. Sous-programmes 10. Sous-programmes (suite) 11. Structures et données 12. Arithmétique réelle 13. Interruptions 14. Éléments de base des circuits logiques 15. Examen final Intégrité académique -------------------- En cas de plagiat ou de fraude, la sanction peut aller de la note zéro pour le travail ou l'examen, jusqu'à l'exclusion de l'université. Les règlements concernant le plagiat seront strictement appliqués. Pour plus de renseignements, consultez le site suivant : Médiagraphie ============ Les ressources suivantes sont recommandées. - HARRIS, D and HARRIS, S. -- Digital Design and Computer Architecture RISC-V Edition -- Morgan Kaufmann, 2021. ISBN 978-0-12-820064-3. - PATTERSON, D.A. and Hennessy, J.L. -- Computer Organisation and Design, RISC-V EDITION -- Morgan Kaufmann Publishers, 2018. ISBN 978-0-12-812275-4. Des ressources complémentaires sont disponibles - Warford, J.S. Computer Systems -- 4th edition, Jones and Bartlett, 2010, 699 pages. - Privat, J. Diapositives de cours. Sur le site ()