Historique

Machine de Van Neumann

Processus en 3 phases

  1. Fetch : alimentation
  2. Decode : décode
  3. Execute : exécution

Exemple: LOAD R1, 5 (lecture RAM), ADD R1, 3 (artihmétique), STORE R1,$100 (écriture RAM)

Évolution

Des machines de Von Neumann au CISC (Pentium IV), RISC (Motorola) et aux Pipeline.

Des instruction de 0 adresse à 3 adresses.

  • CISC: Pentiumm IV/68332/VAX, plus de 250 instructions.
  • RISC: Motorola-Power PC, SUN, Dec Alpha, ATMEGA32, moins de 100 instructions, presque 1 instruction/cycle.

Mode d'adressage

Implicite
CLR R1 : accès au registre CPU R1. Coût de l'instruction: 16 bits
Immédiate
LDI R1, 5 : mettre une valeur dans le rgistre R1.
Direct
ADD R3, $00FA : additionne le registre r3 à la valeur à l'adresse $00FA dans la ram. Code 16 bits + adresse 32 bits.
Indirect
MUL D3, ($00B4) : multiplie D3 par la valeur à l'adresse contenu dans la RAM à l'adresse $00B4. Code 16 bits + adresse 32 bits.

Pipeline

Permet d'exécuter plusieurs instructions dans le même cycle en parallèle

A = alimentation, D = décode, E = exécution

Ancien CPU:
A D E | A D E | A D E |

Pipeline:
A D E A D E A D E
  A D E A D E A D E
    A D E A D E A D E

Permet de passer de 3 cycles par instruction à 1 instruction prend 3 cycles, mais peut avoir plusieurs instructions.

On pourrait dire que théoriquement, le CPU fait 100 M instructions/s à 100 MHz.

Problème du pipeline: les prédictions (lecture à l'avance) sont perdus lors des branchements (JMP: if, fonction). Les instructions bouleversent aussi les prédictions du pipeline.

Le temps d'exécution réel est difficile à prédire.

Avantage chez Intel: la communication pipeline, contrôleur de cache est très bien fait.

Si on sépare une instruction en trois partie: Head (entête), Body (corps) et Tail (queue), on sait que le body des instructions ne peut être recouvert par une autre instruction dépendante. Dans les CPU CISC, le body peut prendre beaucoup de cycle. Il y a donc perte.

ALU/FPU

Le processeur contient une ou plusieurs ALU (Unité Arithmétique et Logique).

L'ALU effectue les opération comme l'addition, la soustraction, la division et la multiplication (+, -, ÷, ×) sur des entiers. Il peut effectuer des opérations sur des points flottants (float) en les traitants comme des entiers.

Le FPU est habituellement 2 fois plus rapide que l'ALU pour les instructions à point flottant direct. Plus rapide, plus de performance.

Il existe des co-processeur à point flottant externe au processeur. Le co-processeur 387 du vieux 386 par exemple. Il étend le répertoire des instructions. Il n'exécute pas le traitement en parallèle. Il permet juste d'exécuter les instructions.

Un FPGA permet de traiter en parallèle des opérations. On peut aussi parler de processeur vectoriel qui effectue des opérations sur des vecteurs de nombre.

Digital Signal Processor - DSP

Lors des traitements numériques des signaux (modem, appareil photo, ...), il est préférable d'utiliser un processeur DSP.

Cache

Les bus de RAM sont trop lent pour le processeur généralement. C'est pourquoi on utilise une mémoire cache dans le CPU. La mémoire cache surveille les instructions qui se rende au CPU et si elle s'aperçoit d'un bout d'instruction qui se répète souvent, elle les stockent en mémoire.

 _______________________       _______       _____
|          CPU          |     |  L2   |     |     |
|                       | <=> | Cache | <=> | RAM |
| Registre <-> L1 cache | <=> |  RAM  |     | ... |
|              Ram 16Kb |     | 256Kb |     |     |
|_______________________|     |_______|     |_____|

Du plus rapide au plus lent: registre, cache 1er niveau, cache 2e niveau, mémoire RAM, disque dur.

Cache
Mécanisme (Contrôleur de copie) qui garde une copie de la RAM en mémoire cache (beaucoup plus rapide) pour les régions mémoires accédés fréquemment.
La cache regarde le hit-ratio, temps et fréquence d'accès. Elle regarde tout ce qui est envoyés sur le bus d'adresses/de données. Elle surveilles les instructions sur le BUS pour une resynchronisation (Exemple, un CPU d'une architecteur multi-processeur modifie une valeur de la RAM où accès I/O via DMA).
La mémoire cache est habituellement de la SRAM. (8 mo de cache?)
I-cache
stocke les sections de code accédées souvent (instruction)
D-cache
stocke les sections de données accédées souvent (data)
L1
Cache Level 1: sur le CPU, très coûteuse, à la vitesse du CPU
L2
Cache Level 2: sur ou près du CPU, coûteuse, à la moitié de la vitesse du CPU

RAM

  • Électro-aimant, résiste aux rayons cosmisque, 10 micros.
  • Dynamique (DRAM/SDRAM), coût faible, rapide - 100-133 Mhz.
  • Statique (SRAM), coût élevé, extrêmement rapide
  • RDRAM (disparu des PC), 16 bits, PlayStation II et PS3. Plus que 800 Mhz.
  • DDRRAM, 64 bits, plus que 800 Mhz (double data rate - RAM) - 200-333 Mhz

Problème avec la SDRAM/DDRRAM: condensateur/transistor se décharge rapidement, on doit les recharger souvent.

Périphériques

Les périphériques contiennent généralement 3 registres: configuration, status et data.

Canaux

Canal programmé E/S. CPU Load $03C8 (mémoire ram). IN $03C8 (Uart) E/S.

Camal d'E/S projeté en mémoire (motorola 68332 par exemple). Accès ram ou périphérique de la me façon avec un décodeur adresse. Désavantage: si le mode est synchrone, l'accès est rallentit au périphérique le plus lent (wait state / état d'attente)

Étape d'un transfert DMA (Accès direct en mémoire)

  1. Le périphérique (E/S) initie le processus en lançant une requête de transfert DMA. (DMARQ RQ = request))
  2. Le contrôleur DMA reçoit DMARQ et retourne DMACK (ACK = ackowledge) et envoit un BUS Grant (Interdiction au CPU de faire un accès BUS).
  3. Le contrôleur DMA prend le contrôle du BUS et fait un transfert d'un bloc de RAM (SATA, ATA, ATAPI, IDE). Exemple copier 2/3 Ko. Environ 10 fois plus rapide.
  4. Retrait du BUS_GRANT.

Contrôleur DMA : spécialiste du copier/coller de bloc mémoire.