INF1600: Architecture des micro-ordinateurs Introduction STRY: Attention step, a clip from 2001 Space Odissey - https://www.youtube.com/watch?v=UgkyrW2NiwM STXT: introduce instructor STXT: today we will start a set of lessons on the principles of computer engineering, and today in particular, we will try to understand the basics of computer architecture. Whether you like it or not, almost every device you use nowadays contains a computer, being a vending machine, a plane or a car. Although the current trend is trying to make computers more “ user-friendly”, these things might still be somewhat tricky to use. What’s more important, computers sometimes fail. Having a base understanding of their behaviour might save a lot of stress, headaches and panic.
Objectifs de la leçon 1 2 3 4 5 Faire une liste des objectifs du cours Décrire le programme du cours Décrire comment les apprentissages seront évalués Faire une liste de composants d'un ordinateur Expliquer le comportement d'un inverseur CMOS 1 2 3 4 STXT: at the end of today, you will be able to draw a diagram of the most common computer structure, namely the Von Neumann Architecture. You will also Learn how this architecture executes arbitrary programs. You will see how the complexity of these machines is kept under control by structuring their architecture. Finally, you will keep your grip on reality and will be able to match the components of a Von Neumann Architecture with the parts of a physical computer board. TR: So, to learn these things we will look at 5 2
Agenda Objectifs Introduction à INF1600 Vue d'ensemble d'un ordinateur Logique électronique numérique 1 2 3 4 5 Objectifs STXT: First what is a Von Neumann Architecture, then how this device behaves and allows computer to do things. Finally we will see how this all boils down to a physical device. Qu’est-ce que vous attendez de ce cours???? Sujets, objectifs, usage ?
Architecture des micro-ordinateurs 3 crédits (3 – 1.5 – 4.5) Objectifs Le cours vise à: Démontrer l'importance du microprocesseur Expliquer l’organisation d’un micro-ordinateur Impact de ses composants sur le coût et la performance Expliquer comment le microprocesseur exécute les programmes Développer les aptitudes requises pour la programmation en assembleur INF1600 constitue un élément clé de la chaîne « architecture » Suite de INF1500 - Logique des systèmes numériques Nécessaire pour : INF1995 Projet initial en ingénierie informatique INF2610 Noyau d’un système d’exploitation 4
Great Reality #1: You’ve Got to Know Assembly Vous n’écrirez probablement jamais des programmes complets en assembleur Les compilateurs sont beaucoup plus patients que nous ! Mais comprendre l’assembleur est primordial Le comportement des bogues Le modèle des langages à haut niveau ne marche pas toujours Optimiser nos programmes Comprendre les optimisations du compilateur Trouver les sources d’inefficacité bas niveau Implémentation des noyaux Créer ou éliminer le malware x86 est le langage approprié!
Great Reality #1: You’ve Got to Know Assembly « To be a great programmer, you really do need to know how the machine works, I believe. You need to really understand what can be done efficiently, and what needs a lot of work from the CPU or the system. » Linus Torvald, Simple Talk 2011 « Well, I fondly remember the days when I was an assembly language programmer. » - Jim, Senior Developer « And that first time you knocked out your wife with a club to claim her as yours. » - Gimbal2, Just a guy
Exemples pratiques 1 Time Stamp Counter Application Registre spécial à 64-bit dans les processeurs Intel Incrémenté à chaque cycle d’horloge Lu avec l’instruction rdtsc – « read time stamp counter » Application Mesurer le temps (en cycles) requis par une fonction P. double t; start_counter(); P(); t = get counter(); printf("P required %f clock cycles\n", t);
Code pour lire le compteur 1 Code pour lire le compteur /* Initialize the cycle counter */ static unsigned cyc_hi = 0; static unsigned cyc_lo = 0; /* Set *hi and *lo to the high and low order bits of the cycle counter. Implementation requires assembly code to use the rdtsc instruction. */ void access_counter(unsigned *hi, unsigned *lo) { asm("rdtsc; movl %%edx,%0; movl %%eax,%1“ /* Read cycle counter */ : "=r" (*hi), "=r" (*lo) /* and move results to */ : /* No input */ /* the two outputs */ : "%edx", "%eax"); } GCC Extended assembly syntax asm( assembler syntax : output operands /*optional */ : input operands /* optional */ : list of clobbered registers /* optional */ );
1 Great Reality #2: Memory Matters La mémoire avec accès aléatoire est une abstraction loin de l’implantation physique La mémoire a des limites Doit être allouée et gérée Les performances de la plupart des applications sont dominées par la mémoire Les performances des mémoires ne sont pas uniformes La mémoire cache et la mémoire virtuelle peuvent changer beaucoup les performances Adapter un programme aux caractéristiques de la mémoire peut améliorer largement sa vitesse d’exécution
Exemple des effets de la mémoire 1 Exemple des effets de la mémoire void copyij(int src[2048][2048], int dst[2048][2048]) { int i,j; for (i = 0; i < 2048; i++) for (j = 0; j < 2048; j++) dst[i][j] = src[i][j]; } void copyji(int src[2048][2048], int dst[2048][2048]) { int i,j; for (j = 0; j < 2048; j++) for (i = 0; i < 2048; i++) dst[i][j] = src[i][j]; } 30 times slower (Core i7) Organisation hiérarchique Les performances dépendent des trames d’accès Incluant comment explorer des structures multidimensionnelles Explain why: a[10][10] layed out as: a[0][0] a[0][1] ... a[0][9] a[1][0] ... a[1][9] ..... a[9][0] ... a[9][9] Copyij accesses memory in linear fashion, Copyji in strided. Bad locality Bad point on memory mountain.
La montagne de la mémoire 1 Intel Core i7 2.67 GHz 32 KB L1 d-cache 256 KB L2 cache 8 MB L3 cache La montagne de la mémoire Mémoire en cascade, plus petite et plus rapide vers plus grand plus lent. Plus gros paquets (plusieurs lignes simultanées) => plus lent débit.
Great Reality #3: Computers do more than execute programs Carnegie Mellon 1 Great Reality #3: Computers do more than execute programs Ils ont besoin d’importer et d'exporter les données Les entrées/sorties sont critiques pour la fiabilité et les performances des ordinateurs Ils communiquent à travers les réseaux Les réseaux introduisent plusieurs défis : Opérations simultanées Utilisation de médias peu fiables Compatibilité sur plusieurs plateformes Problèmes complexes de performance Etc.
Programme du cours 2 Théorie Travaux Pratiques Introduction Organisation interne du microprocesseur TP4 Lien entre C++ et assembleur TP0 Introduction aux outils TP2 Architecture du microprocesseur Hierarchie de mémoire Micro-ordinateur et périphériques Programmation en assembleur TP5 Mémoires TP1 Périphériques et architecture TP3 Programmation en assembleur STXT: this lesson is the beginning of a longer course at the end of which you will approach the dusty black box under your desk with confidence. Today we start with the basics. Architecture d'un microprocesseur C++ et assembleur Théorie Travaux Pratiques
Plan du cours 2 Introduction (1h) Vue d’ensemble d’un micro-ordinateur et périphériques (5h) Architecture et boucle d’exécution d’un microprocesseur (6h) Accès mémoires, exécution, entrées-sorties et interruptions… Organisation interne d’un microprocesseur (3h) Horloges, unités de traitement, registres… Programmation d’un microprocesseur (13h) Instructions, registres, modes d’adressage, indicateurs, lien avec C++… Hiérarchie de mémoire (9h) Limitations d’une seule mémoire, compromis coût/performance… 5 travaux pratiques (15h) 14
Documentation et organisation 2 Documentation et organisation Toute documentation sur Moodle Manuel (pas obligatoire) : Computer Systems Design and Architecture V.P. Heuring and H.F. Jordan Pearson Prentice Hall, 2004 Chaque semaine, mini-tests (quiz) formatifs comptabilisés sur Moodle 15
3 Évaluation des apprentissages Mini-tests formatifs 10% Travaux pratiques 30% Contrôle périodique (2h) 30% Examen final (2h30) 30% Un aide mémoire de 1 page (recto-verso) permise Le ratio points/temps est faible pour les quiz, mais ils sont là pour bien appliquer les concepts. Il faut programmer en lab pour comprendre la programmation; on ne devient pas bon en programmation en regardant juste la théorie. Toute documentation raisonnable papier permise: vous pouvez apporter livres, notes de cours, anciens examens, dictionnaires, etc. mais pas de charriot de livre; doit entrer dans l’espace disponible. Attention: les étudiants ayant des besoins particuliers pour les examens doivent me le mentioner et mentioner au registrariat le format MoodleQuiz. 16
Agenda Introduction à INF1600 Vue d'ensemble d'un ordinateur Logique électronique numérique 1 2 3 4 5 STXT: First what is a Von Neumann Architecture, then how this device behaves and allows computer to do things. Finally we will see how this all boils down to a physical device.
(pas micro) processeur ENIAC Faire remarquer que j’indique la provenance de chaque image. Copier en faisant croire que c’est notre propre travail est du plagiat, même si la copie vient des notes de cours. Lorsqu’on utilise du texte ou une image venant de quelqu’un d’autre il faut que ce soit clair quelle est la source. Pour la publication on ne peut pas utiliser une figure ou une image venant de quelqu’un d’autre même si on indique la source, puisqu’elles sont considérées comme des œuvres artistiques, et par conséquent il faut normalement demander à l’auteur. Dans le cadre du cours, ni les devoirs ni les notes de cours sont publiées (il y a un mot de passe pour accéder à la section des notes de cours), et par conséquent il est acceptable de prendre les figures si la source est spécifiée. Concepts clés: pas d’unité centrale, calculs via accumulateurs et operations arithm., une horloge electro. pour paralléliser Terminer après la guerre (1945) et dépasse 2x le budget. Les opérateurs de la machine étaient presque exclusivement des femmes: les premières ingénieures logicielles. Source: ds-wordpress.haverford.edu 18
Un voyage dans l'ordinateur 4 Un voyage dans l'ordinateur LAB!!
On ouvre la boite 4 Si l´on enlève quelques morceaux... STXT: This what we see when we open the case LOQ: Can you recognize any of the components? TR: If we remove all those, we can see the core of this PC
Composants de l'ordinateur 4 Composants de l'ordinateur Mémoire Bus Processeur Entrées/Sorties STXT: the computer has three main components: Processor Memory Input-Output These are interconnected by a web of wires generally referred to as the bus. STXT: what you see here is the LOGICAL structure of the computer TR: If we abstract from its physical appearance…
Architecture de base 4 Mémoire Entrées/Sorties Processeur Bus Processeur Entrées/Sorties Entrées/Sorties TR: we get what is called the Von Neumann Architecture, that is usually drawn in this way.
L'architecture de Von Neumann 4 L'architecture de Von Neumann Inventé par John Von Neumann in 1950 Idée: fonctionnalité traitée comme les données Suivre une recette (programme) Appliquer chaque étape au ingrédients (données) Frigo/Table Comptoir Memory Input/Output Processor Bus Recette/ Programme ? STXT: This architecture was invented by John Von Neumann around 1950. The novelty of the architecture stands in the fact that it is a completely general purpose machine. The functionality of the machine is treated like data. This means one can instruct the machine on what to do by feeding it instructions. This is similar to cooking: the computer follows a recipe, executing each step (instruction) to ingredients (data). The processor acts as a cook and its cooking tools, I/O is where ingredients come from and cooked food goes to, for example Fridge for Input or dining table for output. Memory acts as the cook’s workplace, where ingredients are put temporarily during their manipulation. LOQ: So, where is the recipe? STXT: The idea of Von Neumann was to put the recipe or program in the computer’s memory, so that it can be easily changed. TR: But how does this architecture execute our favorite programs? Cuisinier / outils
4 Processeur Memory Processor Input/Output Bus STXT: Called the CPU, or Central Processing Unit in the old days, it is usually a small square with a large number of “pins” or contacts with which to connect it to the rest of the system. Usually the size of a personal computer processor is around 4cm and can or cannot be covered by a little protective metal sheet, as shown in the pictures. The actual processor is under the metal sheet and is called the “core”. Processors are generally tough and can be manipulated without fear, paying a little attention when the core is exposed. Here you see a commercial Intel Core2 processor and a processor for use in space. Except for the actual packaging and pins, these do not look too different. Generally processors generate a lot of heat due to electrical dissipation and need a heat sink, usually with an associated fan, to be placed on top. Processors are installed on special « processor sockets », that we will see in a minute. CS: On Earth some processors do not sport a fan on top of their heat sinks, because convection is sufficient to take away excess heat. However, in space there is no free convection, and a fan is mandatory. Haut Bas
Microprocesseur Exécute des instructions simples Arithmétique Logique Branchement (condition) Accompli des tâches complexes Programmable Centre de la majorité des systèmes numériques Aussi appelé CPU (Central Processing Unit) ou UCT (Unité Centrale de Traitement) Types plus spécialisés: Microcontrôleur Emphase sur autosuffisance et faible coût DSP (Digital Signal Processor) 25
Mémoire 4 DIMM: Dual In-Line Memory Module Processor Input/Output Bus DIMM: Dual In-Line Memory Module STXT: Memory appears in modern personal computers as MODULES. Modules are sets of memory chips assembled on a mini-board for easy installation and removal. What you see here is a DIMM, one of the most used memory modules in desktop personal computers, i.e. a Dual In-Line Memory Module. CS: Dual because it sports two memory modules on the same component A DIMM can be easily installed in a DIMM slot, and these modules have an installation orientation but they are designed so that it is impossible to connect them in the wrong direction. CS: The colours refer to the « memory channels » of this particular PC. Mounting memory on separate channels first can increase the computer performance significantly, because separate channels can be accessed simultaneously.
Chaque tore était traversé par trois fils: 4 Mémoire vive Version originale de l’ENIAC: bascule bistable (deux triodes) Magnetic core memory (~1955) Anneaux de ferrite Microélectronique: Bascule bistable (registres) Capacitance (DRAM) Mémoires émergeantes (spin-torque transfer, nanotubes, DNA, etc.) Source: oldcomputers.arcula.co.uk Chaque tore était traversé par trois fils: 2 fils pour l'adressage (1 par ligne et 1 par colonne) 1 fil par bloc pour la commande (lecture ou écriture). La fabrication des blocs de tore était manuel et de ce fait d'un coup élevé par rapport aux mémoires électroniques 27
4 Entrées/Sorties Memory Processor Input/Output Bus STXT: Input/Output in computers is implemented both internally and externally. We have interfaces for common devices like keyboard, mouse, speakers, etc. I/O interfaces can also be inside the computer, connecting hard drives, CDROM, expansion cards, etc. TR: What about the bus?
Systèmes modernes Plusieurs processeurs Mémoire souvent intégrée dans la puce Réseau sur puce Wafer empilés Connections optiques Exemples:
Dissipateur de chaleur Exemple ARM v8 Dissipateur de chaleur Substrate Mémoire TSVs Logique Substrat Interposer Socket Carte mère
Agenda Introduction à INF1600 Vue d'ensemble d'un ordinateur Logique électronique numérique 1 2 3 4 5 STXT: First what is a Von Neumann Architecture, then how this device behaves and allows computer to do things. Finally we will see how this all boils down to a physical device.
-Porte 3/4 états pour les bus à plusieurs composants 5 Logique électronique numérique Portes logiques non (inverseur), et, ou, ou-exclusif … anglais: not, and, or, xor … Bascule bistable (D) Porte 3 états: 0, 1, Z Z=Haute impédance (grande résistance) Basé sur les transistors Plus utilisé présentement: CMOS Transistors NMOS et PMOS sur la même puce MOS = metal oxide semiconductor « Taille »: 180nm … 65nm … 26nm (réalisé; pas disponible) Plus petite largeur du « fil » utilisé comme canal de transistor Appelé la longueur du transistor, ce fil étant perpendiculaire au lien source-drain Résolution deux fois plus fine -Bascules D: 2 verrous D en série, retient la donnée 1 cycle. (assemblage de porte et/ou ou seulement de portes et) -Porte 3/4 états pour les bus à plusieurs composants Copyright © 2017 http://www.electronics-tutorials.ws 32
5 Inverseur CMOS de base avec p et n en parallèle, table de vérité? Copyright © 2017 http://www.electronics-tutorials.ws Copyright © 2000 by Prentice Hall, Inc. Digital Design Principles and Practices, 3/e Inverseur CMOS de base avec p et n en parallèle, table de vérité? - le cercle représente l’inversion. (n-channel) Copyright © 2000 by Prentice Hall, Inc. Digital Design Principles and Practices, 3/e
Pour quelle(s) valeur(s) de A,B,C la sortie sera à Z (haute impédance) Pour quelle(s) valeur(s) de A,B,C la sortie sera à Z (haute impédance)? (où +V vaut la valeur logique 1, et la mise à la terre vaut la valeur logique 0) : C=0, A=1, B=1 C=0, A=0, B=1 C=0, A=1, B=0
Sortie à 1 ? Court-circuit ? A=1 B=0, C=0, D=1, E=1 A=0, B=1, C=0, D=1, E=1 A=0, B=0, C=1, D=1, E=1 .... A=0, B=0
Agenda Introduction à INF1600 Vue d'ensemble d'un ordinateur Logique électronique numérique 1 2 3 4 5 STXT: First what is a Von Neumann Architecture, then how this device behaves and allows computer to do things. Finally we will see how this all boils down to a physical device.
Sommaire Faire une liste des objectifs du cours 1 Démontrer l'importance du microprocesseur Expliquer l’organisation d’un micro-ordinateur Expliquer comment le microprocesseur exécute les programmes Développer les aptitudes requises pour la programmation en assembleur STXT: The logical structure of almost every computer is given by the Von Neumann Architecture, where we have an Instruction Processor, a Memory, and Input/Output interfaces, interconnected by a bus.
Sommaire Décrire le programme du cours 2 Introduction Organisation interne du microprocesseur Hierarchie de mémoire Micro-ordinateur et périphériques Programmation en assembleur Architecture d'un microprocesseur C++ et assembleur STXT: The logical structure of almost every computer is given by the Von Neumann Architecture, where we have an Instruction Processor, a Memory, and Input/Output interfaces, interconnected by a bus. 3 Décrire comment les apprentissages seront évalués
Sommaire Faire une liste de composants d'un ordinateur 4 Expliquer le comportement d'un invertisseur CMOS 4 Memory Input/Output Processor Bus STXT: The logical structure of almost every computer is given by the Von Neumann Architecture, where we have an Instruction Processor, a Memory, and Input/Output interfaces, interconnected by a bus. 5