INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.

Slides:



Advertisements
Présentations similaires
Le Concept du programme enregistré
Advertisements

Architecture de machines Le microprocesseur
Plan du cours : 2ème Partie
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
2.Les différentes architectures (Louis)
Les systèmes à microprocesseur
Chapitre 8 : L’architecture de base des ordinateurs
Exercices sur la conception de processeurs
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Cours #9 Conception et réalisation de processeurs à usage général
Architecture de base d’un ordinateur
Cours #6 Conception d’unités de contrôle
Cours #8 Flot de conception d’un circuit numérique
Cours #4 Éléments à mémoire et circuits séquentiels synchrones de base
1 Exercice : longueur d’un mot est-elle paire ?  Test fonctionnel  Quel ensemble de valeur choisir / spécification  Test structurel  Soit le code d’un.
LES SYSTEMES AUTOMATISES
Systèmes Superscalaires et VLIW
Cours #7 Vérification d’un modèle VHDL
Cours #5 Conception de chemins des données
Chap. 2 - Structure d’un ordinateur
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Lycée ELKHAWARIZMI De SAFI
Modélisation VHDL d’un chemin des données
CORDIC Sujets de ce thème
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Représentation et opérations.
Circuits intégrés numériques Quelques bases
Banc d’essai pour un circuit combinatoire
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Synthèse d’un circuit.
Modélisation VHDL du chemin des données d’un processeur à usage général Sujets de ce thème
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois La technique du pipeline.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse de machines.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Implémentation d’un.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Description d’un circuit.
Synthèse et implémentation de circuits arithmétiques sur FPGA
Processeurs et chemins des données
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Entrées et sorties par.
Cours de Structure et Technologie des composants d’ordinateurs
Conception de processeurs – partie 1
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Vérification de circuits.
Chemin critique et fréquence maximale d’horloge
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Le problème du déphasage.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Arithmétique entière.
Les Microcontrôleurs 68HCXX
Concepts intermédiaires de VHDL
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
L’architecture du processeur Xtensa de Tensilica
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
Synthèse et implémentation d’un circuit combinatoire
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Simulation d’un modèle.
Rappel - analyse et synthèse de fonctions combinatoires
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Banc d’essai pour un.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Objets des catégories.
Architectures des ordinateurs
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse détaillée du.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Chemin des données d’un.
Architecture et technologie des ordinateurs II
INFOR 101 Chapitre 5 Marianne Morris.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
Implémentation de la division sur FPGA
VHDL pour circuits séquentiels
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Flot de conception de.
BEP Electronique - Systèmes microprogrammés
Architecture et technologie des ordinateurs II
Patricia Renault UPMC 2005/2006
Architecture et technologie des ordinateurs II
Architecture des ordinateurs
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Transcription de la présentation:

INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions d’un processeur à usage général

INF3500 : Conception et implémentation de systèmes numériques Encodage du jeu d’instructions d’un processeur à usage général Sujets de ce thème Rappel: processeur PolyRISC Les jeux d’instructions Encodage du jeu d’instructions: – Opérations sur les registres – Opérations registre-valeur – Branchements – Opérations avec la mémoire Exemples Écrire un programme 2

INF3500 : Conception et implémentation de systèmes numériques Le processeur à usage général PolyRISC 3

INF3500 : Conception et implémentation de systèmes numériques Jeu d’instructions d’un processeur à usage général Le jeu d’instructions (Instruction Set Architecture – ISA) est la spécification de toutes les instructions pouvant être effectuées par le processeur, leur encodage numérique, et l’inventaire des ressources mises à la disponibilité des programmeurs (comme des registres, des piles, des coprocesseurs, etc.). Le jeu d’instructions est le contrat entre les concepteurs du processeur et les programmeurs. On peut catégoriser les jeux d’instructions selon plusieurs dimensions. Une dimension concerne la forme du chemin des données du processeur, selon qu’il contient ou non des registres et de la mémoire. Les processeurs de type registre-registre (register- register ou load-store) sont les plus populaires. Pour ce type de processeur, les opérations peuvent être effectuées uniquement sur des valeurs gardées dans des registres. Il est possible de transférer des données entre les registres et la mémoire. On distingue aussi : – Architecture Harvard: mémoires séparées pour le programme et les données – Architecture Von Neumann: une seule mémoire 4

INF3500 : Conception et implémentation de systèmes numériques Choix d’approche pour l’encodage des instructions Le code d’une instruction doit spécifier sans ambiguïté tous les signaux de contrôle du chemin des données. Il y a trois grandes approches: – CISC: complex instruction set computing – RISC: reduced instruction set computing – NISC: no instruction set computing Nous choisissons l’approche RISC. Les signaux de contrôle du chemin des données sont encodés, ce qui réduit la taille du programme. La spécification du processeur monte alors au niveau du jeu d’instructions. L’implémentation peut être différente pour deux processeurs qui ont le même comportement. 5 NISC Technology and Toolset, University of California Irvine, [en ligne: consulté le 2009/11/11

INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire Considérations pour le format des instructions et de leur encodage en mémoire – C’est un problème à plusieurs solutions possibles. – On favorise la régularité, ce qui simplifie le décodage et accélère le processeur. – L’encodage, le jeux d’instructions et les modes d’adressage sont intimement liés. Choix effectués ici: – Encodage sur un seul mot de 32 bits: chaque instruction s’exécute en un seul cycle. – Le mot d’instruction est divisé en 6 champs. – Modes d’adressage limités conformément à la philosophie RISC. 6 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0)

INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire Catégorie 0: opération sur les registres Le processeur a 32 registres de 16 bits de large. Avec 4 bits pour les détails, l’UAL pourrait effectuer 16 opérations différentes, dont: – A, B, A + B, A – B, A ET B, A OU B, NON(A), A OUX B – A(15:0) × B(15:0), décaleG(A, B), décaleD(A, B) – etc. 7 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0) Bits 29:26 0: F <= A 1: F <= B 2: F <= A + B 3: F <= A – B 4: F <= A ET B 5: F <= A OU B 6: F <= NON A 7: F <= A OUX B

INF3500 : Conception et implémentation de systèmes numériques Exemples d’encodage d’instructions 8 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 R7 := R5 + R R9 := R0 – R R8 := R Bits 29:26 (cat. 0 et 1) 0: F <= A 1: F <= B 2: F <= A + B 3: F <= A – B 4: F <= A ET B 5: F <= A OU B 6: F <= NON A 7: F <= A OUX B Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0) Bits 29:26 (cat. 2) 0: si = 1: si != 2: si < 3: si > 4: si <= 5: si >= 6: toujours 7: jamais

INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire Catégorie 1: opération sur un registre et une valeur codée dans l’instruction Les bits 29:26 spécifient l’opération, comme pour la catégorie 0. Les bits 15:0 de l’instruction contiennent la valeur à utiliser. 9 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0) Bits 29:26 0: F <= A 1: F <= B 2: F <= A + B 3: F <= A – B 4: F <= A ET B 5: F <= A OU B 6: F <= NON A 7: F <= A OUX B

INF3500 : Conception et implémentation de systèmes numériques Exemples d’encodage d’instructions 10 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 R31 := R0 ET 0xFF Bits 29:26 (cat. 0 et 1) 0: F <= A 1: F <= B 2: F <= A + B 3: F <= A – B 4: F <= A ET B 5: F <= A OU B 6: F <= NON A 7: F <= A OUX B Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0) Bits 29:26 (cat. 2) 0: si = 1: si != 2: si < 3: si > 4: si <= 5: si >= 6: toujours 7: jamais

INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire Catégorie 2: branchement Les bits 29:26 permettent d’avoir 16 conditions de branchement possibles. En pratique, 8 suffisent. =, ≠,, ≤, ≥, toujours (sans condition), jamais (= NOP) Les branchements sont limités à ±2 15 adresses par rapport au CP, encodées sur les bits 15:0. La valeur des bits 15:0 est étendue sur 32 bits et ajoutée à la valeur incrémentée du CP. On peut donc brancher vers l’avant (valeurs positives) ou l’arrière (valeurs négatives). 11 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0)

INF3500 : Conception et implémentation de systèmes numériques Exemples d’encodage d’instructions 12 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 Si R8 = R9, goto PC Bits 29:26 (cat. 0 et 1) 0: F <= A 1: F <= B 2: F <= A + B 3: F <= A – B 4: F <= A ET B 5: F <= A OU B 6: F <= NON A 7: F <= A OUX B Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0) Bits 29:26 (cat. 2) 0: si = 1: si != 2: si < 3: si > 4: si <= 5: si >= 6: toujours 7: jamais

INF3500 : Conception et implémentation de systèmes numériques Encodage des instructions en mémoire Catégorie 3: mémoire (Load-Store) L’adresse effective est composée de la somme d’un registre et d’une valeur de déplacement. Ceci facilite l’accès aux éléments d’un tableau. La mémoire des données peut avoir jusqu’à 2 32 mots de 32 bits (16 Go). 13 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0)

INF3500 : Conception et implémentation de systèmes numériques Exemples d’encodage d’instructions 14 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 R12 := MD[R ] R14 := MD[R7 + 4] MD[R0 + 28] := R Bits 29:26 (cat. 0 et 1) 0: F <= A 1: F <= B 2: F <= A + B 3: F <= A – B 4: F <= A ET B 5: F <= A OU B 6: F <= NON A 7: F <= A OUX B Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0) Bits 29:26 (cat. 2) 0: si = 1: si != 2: si < 3: si > 4: si <= 5: si >= 6: toujours 7: jamais

INF3500 : Conception et implémentation de systèmes numériques Exemples d’encodage d’instructions 15 Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 R7 := R5 + R R9 := R0 – R R8 := R R31 := R0 ET 0xFF Si R8 = R9, goto PC R12 := MD[R ] MD[R0 + 28] := R R14 := MD[R7 + 4] Bits 29:26 (cat. 0 et 1) 0: F <= A 1: F <= B 2: F <= A + B 3: F <= A – B 4: F <= A ET B 5: F <= A OU B 6: F <= NON A 7: F <= A OUX B Instruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 RC := RA ◊ RB00code de ◊RCRA-RB RC := RA ◊ valeur01code de ◊RCRAvaleur(15:0) si (RA ◊ RB) goto (CP + valeur) 10code de ◊RBRAvaleur(15:0) RC := MD[RA + valeur]110000RCRAvaleur(15:0) MD[RA + valeur] := RB110001RBRAvaleur(15:0) Bits 29:26 (cat. 2) 0: si = 1: si != 2: si < 3: si > 4: si <= 5: si >= 6: toujours 7: jamais

INF3500 : Conception et implémentation de systèmes numériques Exemple de programme 16 AdresseInstruction bits catégorie bits 29:26 détails bits 25:21bits 20:16bits 15:5bits 4:0 0R0 := M[0] 1R1 := M[1] 2Si R0 > R1, goto 5 3R12 := R1 – R0 4goto 6 5R12 := R0 – R1 6M[3] := R12 7Goto 7

INF3500 : Conception et implémentation de systèmes numériques Le problème du logiciel L’écriture directe d’un programme en codes de 32 bits est ardue. Pour simplifier la tâche, on utilise un assembleur qui donne automatiquement les codes numériques des instructions à partir de leur représentation symbolique. Pour les programmes très complexes, cependant, on utilise plutôt un compilateur qui accepte en entrée un programme dans un langage de haut niveau comme C ou Python et qui produit les codes des instructions. Le compilateur doit s’appuyer sur une connaissance approfondie des instructions pouvant être réalisées par le processeur ainsi que des architectures de son chemin des données et de son unité de contrôle. Un simulateur et un débogueur seraient bien aussi … 17

INF3500 : Conception et implémentation de systèmes numériques Vous devriez maintenant être capable de … Expliquer comment effectuer l’encodage et le décodage des instructions. (B2) Interpréter et écrire des programmes simples pour le processeur. (B3) 18 CodeNiveau ( B1Connaissance – mémoriser de l’information. B2Compréhension – interpréter l’information. B3Application – confronter les connaissances à des cas pratiques simples. B4Analyse – décomposer un problème, cas pratiques plus complexes. B5Synthèse – expression personnelle, cas pratiques plus complexes.