1 Exemple de parallélisme rentrant dans toutes les catégories ci-dessus : multi-coeur ARM 2 • Control-driven • activité dépendant des instructions • données demandées suivant les besoins • Data-driven • activité dépendant des données • opérations effectuées suivant la disponibilité des données • Demand-driven • opérations effectués si le résultat est nécessaire pour une autre opération • Event-driven computing • activité dépendant d'événements internes ou externes • Bio-inspired • Réseaux de neurones 3 SISD : mono processeur " classique" ( par exemple l'ARM 9) www.tommesani.com/ProgrammingModels.html 4 SIMD : même instruction exécutées par plusieurs processeurs ou unités de traitement, par exemple les processeurs vectoriels traitent un grand nombre de données en parallèle avec une même instruction www.tommesani.com/ProgrammingModels.html 5 MISD : structure peu ou pas usitée www.tommesani.com/ProgrammingModels.html 6 MIMD : architecture multi-processeur par exemple www.tommesani.com/ProgrammingModels.html 7 Histoire de la technique de pipeleine ARM http://cmsc411.com/history-arm-integer-pipeline 8 Definition Superscalar describes a microprocessor design that makes it possible for more than one instruction at a time to be executed during a single clock cycle . In a superscalar design, the processor or the instruction compiler is able to determine whether an instruction can be carried out independently of other sequential instructions, or whether it has a dependency on another instruction and must be executed in sequence with it. The processor then uses multiple execution units to simultaneously carry out two or more independent instructions at a time. (http://whatis.techtarget.com) 9 10 11 Après ces rappels de base des cours précédent sur le processeur, son architecture et les instructions, nous allons aborder l’objectif de ce cours. Comment optimiser le traitement d’un flot d’instruction dans un processeur? Je vais vous présenter la notion de pipeline avec un exemple de la vie courante Ensuite nous allons la transposer au cas qui nous concerne, c’est-à-dire le processeur 12 Considérons le service de restauration et le passage de 3 personnes La 1ere méthode est de …. Soit Te=10s, le temps de passage à chaque étape Alors Tp=4xTe=40s, 4 étant le nombre d’étapes n Donc, le temps total Tt pour 3 personnes (m) est de 3x40s=120s, soit 2mn Formule Tt=nxmxTe 13 Soit Te=10s, le temps de passage à chaque étape Toujours Tp=4xTe=40s, 4 étant le nombre d’étapes n On voit ici qu’il faut 1xTe par personne supplémentaire, ici 2xTe, soit 20s Autrement dit, m-1, m étant le nombre d’étage Donc, le temps total Tt pour 3 personnes est de 3x40s+2xTe=60s, soit 1mn=> 2 fois moins de temps Formule Tt=(nxTe)+(m-1)xTe=(n+m-1)xTe Que peut-on conclure de cette méthode? 14 => Inconvénients du deuxième mode. • Nécessite des synchronisations supplémentaires et des éléments dont le parcours prend un temps proche pour une bonne optimisation 15 Donc, qu’as t on vu précédememment? Que peut’on en retirer Comment peut on définir un traitement en pipeline Comment optimiser? En utilisant une technique qui permet d’optimiser le temps d’exécution d’un processus répétitif ici des instructions, c’est ce qu’on appelle le pipeline En voici les principes: recouvrement des instructions A chaque étapes = une ressource indépendante Optimiser le temps d’utilisation Afin de mettre en œuvre un pipeline, la première tâche est de découper l'exécution des instructions en plusieurs étapes. Chaque étape est prise en charge par un étage du pipeline. Si le pipeline possède n étages, il y a n instructions en cours d'exécution simultanée, chacune dans une étape différente. La technique du pipeline consiste à améliorer les performances du processeur en même temps que son rendement. Le pipeline permet de superposer les souscycles d'exécution des instructions. 16 Jeu d’instruction : Le jeu d'instructions est l'ensemble des instructions machines qu'un processeur d'ordinateur peut exécuter. Ces instructions machines permettent d'effectuer des opérations élémentaires (addition, ET logique…) ou plus complexes (division, passage en mode basse consommation…). Le jeu d'instructions définit quelles sont les instructions supportées par le processeur. Le jeu d'instructions précise aussi quels sont les registres du processeur manipulables par le programmeur (les registres architecturaux). Opcode‐Operande‐operande Histoire generalités page 44 17 Le temps passé par une instruction dans un étage est appelé(temps de) cycle processeur La longueur d’un cycle est déterminée par l’étage le plus lent. Souvent égal à un cycle d’horloge, parfois 2 18 Debit= nombre d’opérations exécutées par unités de temps 19 Cas réel = Insertion de registres intermédiaires entre les étages 20 21 22 23 24 1/Texi Texécution par instruction 1/(Tt/n) Tt divisé par le nbre d’instruction 25 I7 => 20-24 etages 26 Exercice : L’horloge du processeur est 400MHz Le pipeline est à 6 niveaux. Quel est le temps nécessaire pour traiter 1000 instructions, a) si le traitement n’est pas pipeliné, b) si le traitement est pipeliné ? Corrigé : P = 1/400 x 10-6 = 2.5 ns a) T = 1000 x 6 x 2.5 ns = 15 us b) T = (6+999) x 2.5 ns = 1005 x 2.5 ns = 2512.5 ns 27 Le premier ordinateur à posséder un pipeline d'instruction serait l'IBM 7030 Stretch construit en 1961. Il comprenait une unité de calcul flottant avec les performances suivantes : Addition 2 µs, multiplication 3 µs et division 9 µs. ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ 28 ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ 29 Notez que chaque étage est séparé par un registre. Instruction Fetch Cet étage comporte le Program Counter qui stocke l’adresse de l’instruction à traiter . A partir de cette adresse, l’instruction est lue dans la mémoire d’instruction. Instruction Decode Dans cette étage l’instruction est décodée pour en extraire l’opcode et les numéros des registres opérandes et destination (et éventuellement une valeur en cas d’adressage immédiat). Les données contenues dans les registres opérandes sont fournis à la sortie de la banque de registre. Execution Les opérations arithmétiques et logiques sont effectuées par l’ALU. Memory access Cet étage gère les écritures et les lectures dans la mémoire de données. Write back Le résultat d’une opération (ou la donnée lue en mémoire) est écrit dans la banque de registre. 30 31 32 Notez la présence d’une unité de traitement arithmétique et logique des entiers et d’une autre pour les flottants. Plusieurs unités de traitement travaillent en parallèle. 33 I1 nécessite 2 cycles de traitement dans la phase Execute. I3 et I4 ont besoin de la même unité de traitement. I4 est décalée d’une cycle. I5 utilise le résultat de I4. I5 et I6 ont besoin de la même unité de traitement. I6 est décalée d’une cycle. 34 I2 et I3 sont exécutés avant I1. Ceci règle le conflit I3/I4. I6 est exécuté avant I5. Donc I4 a fini son traitement un cycle avant et le résultat est disponible 35 Architecture de type out-of-order: L’ordre d’exécution des instructions est modifiable. Voir la slide suivante. 36 daff 37 Overview The Dual-Core Intel Itanium processor 9000 and 9100 series employs Explicitly Parallel Instruction Computing (EPIC) design concepts for a tighter coupling between hardware and software. In this design style, the interface between hardware and software is engineered to enable the software to exploit all available compile-time information and efficiently deliver this information to the hardware. It addresses several fundamental performance bottlenecks in modern computers, such as memory latency, memory address disambiguation, and control flow dependencies. The EPIC constructs provide powerful architectural semantics and enable the software to make global optimizations across a large scheduling scope, thereby exposing available Instruction Level Parallelism (ILP) to the hardware. The hardware takes advantage of this enhanced ILP, and provides abundant execution resources. Additionally, it focuses on dynamic runtime optimizations to enable the compiled code schedule to flow at high throughput. This strategy increases the synergy between hardware and software, and leads to greater overall performance. The Dual-Core Intel Itanium processor 9000 and 9100 series provides a 6-wide and 8-stage deep pipeline, running at up to 1.6 GHz. This provides a combination of abundant resources to exploit ILP as well as increased frequency for minimizing the latency of each instruction. The resources consist of six integer units, six multimedia units, two load and two store units, three branch units, two extended-precision floating-point units, and one additional single-precision floating-point unit per core. The hardware employs dynamic prefetch, branch prediction, a register scoreboard, and nonblocking caches to optimize for compile-time non-determinism. Three levels of on-die cache minimize overall memory latency. This includes up to a 24 MB L3 cache, accessed at core speed, providing up to 8.53 GB/sec. of data bandwidth. The system bus is designed to support up to four physical processors (on a single system bus), and can be used as an effective building block for very large systems. The balanced core and memory subsystem provide high performance for a wide range of applications ranging from commercial workloads to high-performance technical computing. Intel Itanium Datasheet 38 ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 39 Les adresses d’instructions proviennent de l’Address Generation Unit (AGU). Le bloc Instruction Fetch contient le mécanisme de prédiction de branchement avec le BTB (Branch Target Buffer) et le GHB (Global History Buffer) Pipeline Fetch : 2 étages Decode : 5 étages Execute : 6 étages ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 40 _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ 41 Les adresses d’instructions proviennent de l’Address Generation Unit (AGU). Le bloc Instruction Fetch contient le mécanisme de prédiction de branchement avec le BTB (Branch Target Buffer) et le GHB (Global History Buffer) Le BTB est une mémoire cache contenant uniquement des adresses de saut. La BTB est directement adressée par l’adresse d’un instruction de saut. Si le saut est prédit (pris ou non pris) l’adresse de saut est délivrée par le BTB. Le GHB contient l’historique des branchements. Le RS (Return Stack) contient dans une pile les adresses de retour. 42 _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ _______________________________________________________________ 43 ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 44 ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ ________________________________________________________________ 45