Untitled

publicité
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
Téléchargement