Jeu d'instructions 216342 31496663 2008-07-11T15:01:18Z 81.255.105.59 {{ébauche|informatique}} Le '''jeu d'instructions''' est l'ensemble des opérations qu'un [[processeur]] d'[[ordinateur]] peut exécuter. Chaque opération est spécifié par un code, dit code-opération, abrégé opcode, auquel peuvent être associées des opérandes. Une suite d'instructions, associée à des données, forme un [[programme informatique]]. Les instructions, ainsi que les opérandes, sont des valeurs stockées dans la mémoire. Chaque processeur, à son démarrage, commence à exécuter ces instructions à partir d'une adresse fixe (spécifiée par le constructeur). Le jeu d'instruction d'un processeur donné est aussi communément appelé [[langage machine]]. On distingue les microprocesseurs à jeu d'instructions complexe ([[CISC]]) ou réduit ([[RISC]]). == Classes des jeux d'instructions == Les jeux d'instructions des processeurs diffèrent surtout dans la façon dont sont spécifiés les opérandes des instructions. Voici schématiquement représentées différentes classes. Légende : * Les registres, l'accumulateur ou la pile sont représente dans les tons jaunes. * La [[Mémoire informatique|mémoire centrale]] est représentée dans les tons mauves. * Le chemin de données (mode ''lecture'') entre registres (ou l'accumulateur ou la pile) est en vert, * Le chemin de données (mode ''écriture'') entre la sortie de l'[[Unité arithmétique et logique|Unité Arithmétique et Logique]] et les registres (ou l'accumulateur ou la pile) est en bleu ; * Le chemin de données (mode ''lecture'' ou ''écriture'') avec la mémoire est en violet. === « 0 adresse » === [[Image:Is0addr.png|right|Architecture d'un processeur « 0 adresse », dite « à [[Pile (informatique)|pile]] ».]] Dans cette architecture, les instructions vont directement agir sur la [[Pile (informatique)|pile]]. Les opérandes sont automatiquement chargés depuis le pointeur de pile (SP, Stack Pointer), et le résultat est à son tour empilé. L'opération A = B + C sera traduite par la séquence suivante : PUSH B ; Empile B PUSH C ; Empile C ADD ; Additionne B et C POP A ; Stocke le haut de la pile à l'adresse A et dépile Ce type d'architecture est populaire chez les utilisateurs de [[calculatrice]]s [[Hewlett-Packard|HP]] fonctionnant en [[notation polonaise inversée]] (post-fixée), en tout cas plus que ceux qui ont pu utiliser les machines [[Burroughs Corporation|Burroughs]] de la gamme [[B 5000]] ou des [[miniordinateurs]] [[Hewlett-Packard]] de la gamme [[HP 3000]]. <br style="clear:both;"> === « à accumulateur » === [[Image:Isaccumulator.png|right|Architecture d'un processeur avec un accumulateur ».]] Sur une machine de ce type, historiquement ne disposant que d'un seul [[registre (informatique)|registre]], appelé [[Accumulateur (informatique)|Accumulateur]], tous les calculs se font implicitement sur celui ci. L'opération A = B + C sera traduite par la séquence suivante : LOAD B ; copie le contenu de l'adresse B dans l'accumulateur ADD C ; ajoute le contenu de l'adresse C avec le contenu de l'accumulateur, stocke le résultat dans l'accumulateur STORE A ; stocke la valeur de l'accumulateur à l'adresse A <br style="clear:both;"> === « une adresse, registre - mémoire » === [[Image:Isregmem.png|right|Architecture d'un processeur « registre vers mémoire ».]] Ici une instruction peut avoir comme opérande un ou plusieurs registres (typiquement un ou deux) et une adresse mémoire. L'exemple A = B + C peut donc être traduit par la séquence : LOAD R0, B ; copie le contenu de l'adresse B dans le registre R0 ADD R1, R0, C ; R1 = R0 + C STORE R1, A ; stocke la valeur de R1 à l'adresse A <br style="clear:both;"> === « registre - registre » === [[Image:Isreg2reg.png|right|Architecture d'un processeur « registre vers registre ».]] Si les instructions ne peuvent avoir que des registres comme opérandes, il faut deux instructions, LOAD et STORE par exemple, pour respectivement charger un registre depuis une location mémoire et stocker le contenu d'un registre à une adresse donnée. Le nombre de registres est un facteur important. Les processeurs RISC actuels sont tous de ce type. La séquence A = B + C sera traduite en : LOAD R0, B ; charge B dans le registre R0 LOAD R1, C ; charge C dans le registre R1 ADD R2, R0, R1 ; R2 <- R0 + R1 STORE R2, A ; stocke R2 à l'adresse A <br style="clear:both;"> === « mémoire - mémoire » === [[Image:Ismem2mem.png|right|Architecture d'un processeur « mémoire vers mémoire ».]] Tous les opérandes d'une instruction sont des adresses mémoire. C'est par exemple le cas pour le [[superordinateur]] [[Processeur vectoriel|vectoriel]] [[CDC]] [[Cyber 205]]. Cette machine était le concurrent du [[Cray 1]] qui lui ''devait'' charger les vecteurs dans des registres ''préalablement'' à chaque calcul. Le [[VAX]] de [[Digital Equipment Corporation|DEC]] peut aussi être programmé de cette façon. L'expression A = B + C : ADD A, B, C ; Stocke a l'adresse A la somme B + C == [[RISC]] vs. [[CISC]] == Tous les processeurs [[RISC]] sont dans la classe « registre-registre ». == Voir aussi == *[[Jeu d'instruction x86]] *[[MMX (processeur)|MMX]] *[[3DNow!]] *[[Streaming SIMD Extensions|SSE]] *[[AltiVec]] *[[Registre (informatique)|Registre]] *[[Microprocesseur]] *[[Assembleur]] {{Portail informatique}} [[Catégorie:Processeur]] [[ar:مجموعة التعليمات]] [[de:Befehlssatz]] [[en:Instruction set]] [[es:Conjunto de instrucciones]] [[ga:Tacar treoracha]] [[he:סט פקודות]] [[hu:Utasításkészlet]] [[id:Set instruksi]] [[it:Instruction set]] [[ja:命令セット]] [[ko:명령어 집합]] [[lv:Instrukciju kopa]] [[nl:Instructieset]] [[pl:Model programowy procesora]] [[ru:Система команд]] [[sv:Instruktionsuppsättning]] [[th:ชุดของคำสั่งเครื่อง]] [[tr:Komut kümesi]] [[uk:Архітектура системи команд]] [[zh:指令集架構]]