Architecture X86

owercase Le x86 de limite générique se rapporte à l'ensemble d'instruction de l'architecture le plus commercialement réussie de l'unité centrale de traitement dans l'histoire du calcul personnel . Il est employé dans les processeurs du Intel , du AMD , du PAR L'INTERMÉDIAIRE de , et de d'autres, et vers l'arrière dérivé des numéros de type des générations premières des processeurs, le - compatible avec l'unité centrale de traitement de 16 bits originale du 8086 d'Intel, plus dont finissaient dans 86. Depuis lors, beaucoup d'additions et de prolongements ont été ajoutés à l'ensemble d'instruction x86, presque compatible à la pleine ascendant compatibilité.

Car la limite x86 est devenue commun après l'introduction du 80386 , elle implique habituellement une compatibilité binaire avec l'ensemble d'instruction à 32 bits des 80386. Ceci peut parfois être souligné comme X86-32 pour le distinguer du x86-16 de 16 bits original ou du 64-bit plus nouveau X86-64 (également appelé le X64 ).

Le moderne x86-hardware a habituellement des possibilités 64-bit, au moins dans des PCs et les serveurs cependant, pour éviter des problèmes de compatibilité, le x86-software implique habituellement seulement à 32 bits, avec la limite x86-64 ou le X64 réservés pour dénoter le logiciel 64-bit.

Aujourd'hui, l'architecture x86 tient un monopole efficace parmi des processeurs d'ordinateur de bureau et de cahier, aussi bien qu'une majorité croissante parmi des serveurs et des postes de travail. Elle est généralement moins commune dans les systèmes inclus par , et les places telles que les appareils et les jouets manquent de n'importe quelle présence x86 significative. Un grand nombre de logiciel soutient la plate-forme, y compris les logiciels d'exploitation tel que le MS-DOS , le Windows , le Linux , le schéma , les Solaris , et le Mac de OS x .

Chronologie

La table au-dessous des marques de listes de consommateur commun a visé des processeurs mettant en application l'ensemble d'instruction du x86 , groupé par les générations qui accentuent des aspects importants dans l'histoire x86. Note : Les générations d'unité centrale de traitement de ne sont pas strictes - chaque génération est rudement marquée par des conceptions sensiblement améliorées ou commercialement réussies de Microarchitecture de processeur.

Histoire

L'architecture x86 est apparue la première fois comme unité centrale de traitement d'Intel 8086 libérée en 1978, une conception entièrement de 16 bits basée sur le plus tôt Intel 8085 . Bien que compatible non binaire, il ait été conçu pour permettre à des programmes langage d'assemblage de écrits pour les 8085 soit mécaniquement traduit en équivalent 8086. Ceci a fait au nouveau processeur un itinéraire de migration tempting pour 8085 matériel et fournisseurs de logiciel, mais - principalement en raison d'un databus plus large - pas sans conception significative de matériel de système. Pour adresser ceci, Intel a présenté presque l'identique, mais extérieurement à 8 bits, le 8088 qui a permis des cartes électronique plus simples de que morceaux a exigé peu de (1-bit au loin) de DRACHME , et plus facilement pourrait être connecté (c. peu coûteux) au système à 8 bits déjà établi et aux morceaux périphériques. Parmi autre, non technique, facteurs, ceci a contribué au fait qu'IBM a construit leur PC d'IBM de autour des 8088, en dépit d'une présence (alors) de meilleurs microprocesseurs de 16 bits de Motorola, de Zilog, et de semi-conducteur national. Plus tard, le PC d'IBM est devenu la plate-forme d'ordinateur personnel dominante et les 8088 et ses successeurs sont devenus l'architecture dominante d'unité centrale de traitement pour l'ordinateur de bureau et les ordinateurs portables.

À de diverses heures, les compagnies telles que le IBM , le NEC , le AMD , le TI , le MCE , le Fujitsu , le OKI , le Siemens , le Cyrix , le Intersil , le C&T , le NexGen , et le UMC commencés pour concevoir et/ou fabriquer les processeurs du x86 ont prévu pour des PCs aussi bien que les systèmes inclus. De telles réalisations x86 sont rarement des copies en clair mais utilisent souvent le interne différent Microarchitectures aussi bien que différentes solutions aux niveaux électroniques et physiques. Tout à fait naturellement, les morceaux compatibles tôt étaient de 16 bits, alors que les conceptions à 32 bits semblaient beaucoup plus tardives. Pour le marché d'ordinateur personnel du , les vraies quantités commencés pour apparaître environ 1990 avec les processeurs compatibles du I386 et du I486 , souvent appelés pareillement aux morceaux originaux d'Intel. D'autres compagnies, qui ont conçu ou ont fabriqué x86 ou processeurs du X87 , incluent le ITT Corporation , le semi-conducteur national , la technologie de système du ULSI , et le Weitek .

Après entièrement le le canalisé I486 , Intel de a présenté le nom de marque du Pentium (qui, à la différence des nombres, pourrait être trademarked) pour leur nouvelle ligne de conceptions de Superscalar x86 de . Avec l'arrangement de nomination x86 s'est maintenant légalement dégagé, IBM partnered avec le Cyrix pour produire le 5x86 et puis les lignes très efficaces du 6x86 (M1) et du 6x86MX ( MII ) des conceptions de Cyrix , qui étaient les premiers morceaux x86 mettant en application le registre de retitrant pour permettre l'exécution spéculative . AMD a en attendant conçu et a fabriqué l'avancé mais le retardé 5k86 ( K5 ), qui, le intérieurement , a été fortement basé sur la première conception du RISC du 29K d'AMD ; semblable le Nx586 , il de s de NexGen à le 'a employé une stratégie où les étapes consacrées de canalisation décodent les instructions x86 selon l'uniforme et les Micro-opérations facilement manipulées une méthode qui est demeurée standard à ce jour.

Quelques versions tôt de ces morceaux ont eu des problèmes de dissipation thermique. Le 6x86 a été également affecté par quelques issues mineures de compatibilité, le Nx586 a manqué d'un FPU et (de la goupille-compatibilité le crucial puis), alors que le K5 avait l'exécution légèrement décevante quand il (par la suite) a été lancé. Une basse conscience de client des solutions de rechange à la ligne encore de Pentium contribué à ces conceptions étant comparativement non réussies, malgré le fait que le K5 a eu la compatibilité très bonne et le 6x86 de Pentium était sensiblement plus rapide que le Pentium sur le code de nombre entier. Le AMD plus tard est parvenu à s'établir comme compétiteur sérieux avec la ligne du K6 des processeurs, qui ont mené au fortement - réussi Athlon et Opteron . Il y avait également d'autres compétiteurs, tels que la technologie de centaure de , ( IDT ), la technologie d'élévation de , et le Transmeta . Le PAR L'INTERMÉDIAIRE les processeurs de rendement optimum du C3 et du C7 des technologies de 'ont été conçus par le centaure et sont dans la pleine production aujourd'hui.

L'architecture a été deux fois prolongée à une plus grande longueur de mot . En 1985, Intel a libéré les 386 à 32 bits pour remplacer graduellement les morceaux de 16 bits plus tôt (qui ont été vendus pendant beaucoup plus d'années). Cette prolongation à l'architecture s'appelle parfois le x86-32 pour la différencier du " original ; x86-16" ; ou la prolongation plus nouvelle du X86-64 . Cependant, elle désigné à l'origine sous le nom d'i386 par Intel (et d'autres) et le retitré postérieur IA-32 (pour 32 de rchitecture- de A de ntel de I - mordu) quand Intel a dévoilé son architecture 64-bit indépendante d'Itanium , désigné sous le nom du IA-64 . En 1999-2003, le AMD promeuvent a prolongé l'architecture à 64 bits, à l'origine appelés le X86-64 dans des documents d'AMD, mais maintenant le AMD64 . Intel a bientôt adopté les prolongements architectual d'AMD sous le nom du IA-32e qui plus tard a été retitré le EM64T et finalement le Intel 64 (ne pas être confondu avec l'architecture indépendante de IA-64 ). Le Microsoft et le Sun Microsystems ont employé leur propre fournisseur-neutre X64 pour cette même architecture du X86-64 .

Vue d'ensemble

Propriétés de base de l'architecture
L'architecture x86 est une longueur d'instruction variable, principalement deux adresses, " ; " de CISC ; conception avec l'accent sur la compatibilité ascendante . L'ensemble d'instruction n'est pas CISC typique cependant, mais fondamentalement une version prolongée et orthogonalized de l'architecture de huit bits simple du 8085 . Des mots sont stockés dans le petit-endian ordre du et des accès de 16 bits et à 32 bits sont permis aux adresses de mémoire unaligned.

Pour conserver l'espace d'opcode, la plupart enregistrer-adresse sont trois bits, et tout au plus un opérande peut être dans la mémoire (un certain " fortement orthogonal ; CISC" ; conçoit, comme le PDP-11 , peut employer deux opérandes de mémoire), mais cet opérande de mémoire peut également être la destination de , alors que l'autre opérande, la source de , peut être l'un ou l'autre registre de ou immédiat. Ceci contribue, entre d'autres facteurs, à une empreinte de pas de code que les machines de huit bits de rivaux et permet l'utilisation efficace de l'antémémoire d'instruction. Le nombre relativement petit de registres généraux (également hérités de 8085) a rendu enregistrer-relatif adressant (using de petits excentrages immédiats) une méthode importante d'accéder à des opérandes, particulièrement sur la pile. Beaucoup de travail a été donc investi en faisant des accès tels que rapidement comme accès de registre, c. une sortie d'instruction d'un cycle dans la plupart des circonstances.

Réalisations courantes
Pendant l'exécution , les processeurs x86 courants utilisent quelques étapes supplémentaires de décodage pour couper la plupart des instructions en plus petits morceaux, micro-opérations (μ-ops). Ceux-ci sont aisément exécutés par une Micro-architecture qui pourrait être décrite (simplisticly) comme un ensemble de assez grand ALU et la CHARGE de / STOCKENT les unités de fonctionnant en parallèle et qui sont alimentées par un boîtier de commande avancée qui protègent des μ-ops et les programme dans l'accord à la sémantique x86, mais '' commandé à nouveau '' de sorte que plusieurs μ-ops (souvent extraits à partir de plusieurs x86-instructions différents) puissent être publiés simultanément.

Quand Intel a présenté la première fois cette technique, ils se sont référés à elle comme " ; RISC Core" ; , mais bientôt laissé tomber cette limite. C'est semblable au microcode traditionnel , mais diffère principalement dans le fait que la traduction de l'ensemble d'instruction externe au micro-ops se produit asynchrone, ainsi les ALU et la canalisation pas lockstepped aux frontières de l'instruction d'ensemble d'instruction. Juste comme dans le microcode traditionnel, il y a des deux des approches forces à la conception de l'ensemble d'instruction interne : verticale, avec micro-ops, et horizontal étroits, avec au loin micro-ops. La sagesse populaire était qu'Intel a favorisé le " vertical ; RISC-like" ; micro-ops, alors qu'AMD horizontal le preferred, mais lui est probable que tous les deux emploient le micro-ops vertical plus-facile-programmé maintenant.

Une variante intéressante (mais commercialement non réussie) a été présentée par le Transmeta , avec un processeur qui n'a pas une unité de traduction séparée, mais utilise un moteur juste à temps de traduction de logiciel en progiciels pour convertir des instructions x86 en leur propre microcode. Ceci a été prévu pour réduire la complexité du morceau et pour permettre une meilleure exécution dans des applications de basse puissance.

Segmentation

voient également :

du [[segment de mémoire x86]] Les mini-ordinateurs pendant la fin des années 1970 fonctionnaient vers le haut contre les 64 de 16 bits - limite d'adresse du KB , car la mémoire était devenue meilleur marché. La plupart des telles compagnies ont donc remodelé leurs processeurs pour traiter directement l'adressage et les données à 32 bits. Les 8086 originaux, développé à partir du microprocesseur simple du 8085 et de viser principalement un autre marché, ont au lieu de cela adopté un concept beaucoup-critiqué des registres de segment qui ont élevé la limite d'adresse de mémoire par seulement 4 bits, à 20 bits (1 méga-octet ).

Des données et/ou le code ont pu être contrôlés dans le " ; near" ; les segments de 16 bits dans cet 1 espace d'adressage du mb , ou un compilateur ont pu fonctionner dans un " ; far" ; mode using le segment à 32 bits : offset appareille atteindre (seulement) 1 mb. Tandis que cela s'avérerait également limiter tout à fait par le milieu des années 80, cela fonctionnait pour le marché naissant de PC, et fait lui très simple pour traduire le logiciel du plus ancien 8080 , du 8085 , et du Z80 au processeur plus nouveau. Sept ans après, en 1985, ce modèle de adressage encombrant effectivement a été factorisé dehors par l'introduction des registres à 32 bits d'excentrage, dans la conception du 386 .

En vrai mode , la segmentation est réalisée par le décalage l'adresse de segment laissée 4 bits et en ajoutant un excentrage afin de recevoir une adresse finale du bit 20. Par exemple, si le DS est A000h et le SI est 5677h, DS : Le SI se dirigera aux × de DS d'adresse absolue ; 16 + SI = A5677h. Ainsi tout le espace d'adressage en vrai mode est les bytes 220, ou 1 mb , tout à fait une figure impressionnante de pour 1978. Toutes les adresses de mémoire se composent d'un segment et de l'excentrage ; chaque type d'accès (code, données, ou pile) a un registre de segment de défaut lié à lui (pour des données le registre est habituellement DS, parce que le code est CS, et pour la pile c'est des solides solubles). Pour des accès de données, le registre de segment peut être explicitement spécifié (using un préfixe de priorité de segment) pour utiliser les registres quadripartites l'uns des.

Dans cet arrangement, deux segments différents/paires excentrées peuvent se diriger à un endroit absolu simple. Ainsi, si le DS est A111h et le SI est 4567h, DS : Le SI se dirigera au même A5677h comme ci-dessus. Cet arrangement le rend impossible d'employer plus de quatre segments immédiatement. Le CS et les solides solubles sont essentiels pour le fonctionnement correct du programme, de sorte que seulement le DS et l'es puissent être employés pour indiquer des segments de données en dehors du programme (ou, plus avec précision, en dehors du segment de courant-exécution du programme) ou de la pile. Cet arrangement a été prévu comme mesure de compatibilité avec le Intel 8085 .

Dans le le mode protégé , un registre de segment ne contient plus l'adresse physique du commencement d'un segment, mais contient un " ; selector" ; cela indique une structure au niveau système appelée un descripteur de segment. Un descripteur de segment contient l'adresse physique du commencement du segment, de la longueur du segment, et des permissions d'accès à ce segment. L'excentrage est vérifié contre la longueur du segment, avec des excentrages se rapportant à des endroits en dehors du segment causant une exception. Des excentrages se rapportant à des endroits à l'intérieur du segment sont combinés avec l'adresse physique du commencement du segment pour obtenir l'adresse physique correspondant à celle ont compensé.

La nature segmentée peut faire la programmation et les compilateurs pour concevoir difficile parce que l'utilisation des indicateurs proches et lointains affectent l'exécution. L'introduction de la commutation de banque complote comme EEMS fait programmation bien plus compliqué avant l'adoption du bit 32 adressant des méthodes avec les processeurs postérieurs.

Modes d'adressage

Des modes d'adressage pour les processeurs x86 de 16 bits peuvent être récapitulés par cette formule :

\ commencer {le CS de Bmatrix} : \ \ DS : \ \ SOLIDES SOLUBLES : \ \ ES : \ extrémité {Bmatrix} \ commencent {bmatrix} \ commencent {Bmatrix} BX \ \ BP \ extrémité {} de Bmatrix \ extrémité {bmatrix} + \ commencent {bmatrix} \ commencent {Bmatrix} SI \ \ DI \ extrémité {} de Bmatrix \ extrémité {bmatrix} +

Des modes d'adressage pour le code à 32 bits sur les processeurs à 32 bits x86 ou 64-bit peuvent être récapitulés par cette formule :

\ commencer {le CS de Bmatrix} : \ \ DS : \ \ SOLIDES SOLUBLES : \ \ ES : \ \ FS : \ \ GS : \ extrémité {Bmatrix} \ commencent {bmatrix} \ commencent {Bmatrix} EAX \ \ EBX \ \ ECX \ \ EDX \ \ EN PARTICULIER \ \ EBP \ \ ESI \ \ EDI \ extrémité {} de Bmatrix \ extrémité {bmatrix} + \ commencent {bmatrix} \ commencent {Bmatrix} EAX \ \ EBX \ \ ECX \ \ EDX \ \ EBP \ \ ESI \ \ EDI \ extrémité {Bmatrix} * \ commencent {Bmatrix} 1 \ \ 2 \ \ 4 \ \ 8 \ extrémité {} de Bmatrix \ extrémité {bmatrix} +

Des modes d'adressage pour le code 64-bit sur les processeurs x86 64-bit peuvent être récapitulés par ces formules :

\ commencer {Bmatrix} : \ \ FS : \ \ GS : \ extrémité {Bmatrix} \ commencer {le generalregister de bmatrix} \ extrémité {bmatrix} + \ commencent {generalregister* de bmatrix} \ commencent {Bmatrix} 1 \ \ 2 \ \ 4 \ \ 8 \ extrémité {} de Bmatrix \ extrémité {bmatrix} +

et

DÉCHIRURE +

Les 8086 ont eu 64 KBs (ou alternativement 32 à mot-clé de 16 bits) de l'espace à 8 bits de l'entrée-sortie , et une pile de 64 KBs (un segment) dans la mémoire soutenue par le matériel . Seulement des mots (2 bytes) peuvent être poussés à la pile. La pile se développe en bas (vers numériquement plus bas des adresses), son fond dirigé par des solides solubles : ESPÈCES. Il y a 256 interruptions qui peuvent être appelées par le matériel et le logiciel. Les interruptions peuvent cascader, using la pile pour stocker l'adresse de retour .

registres x86

Le pour une description de la notion générale d'un registre d'unité centrale de traitement, voient le processeur de enregistrer .

de 16 bits

Le original 8086 d'Intel et le 8088 ont quatorze 16 - des registres du peu . Quatre d'entre eux (HACHE, BX, CX, DX) sont les registres généraux (bien que chacun a un but additionnel ; par exemple seulement la CX peut être employée comme compteur avec l'instruction de la boucle de ). Chacun peut être accédé en tant que deux bytes séparés (ainsi le byte élevé de BX peut être accédé comme le BH et le bas byte comme BL). Les registres quadripartites (CS, DS, solides solubles et es) sont utilisés pour former une adresse de mémoire. Il y a deux registres d'indicateur. Le PS indique le fond de la pile et de BP qui est employée pour se diriger à un autre endroit dans la pile ou la mémoire (compenser). Deux registres (SI et DI) sont pour l'indexation de rangée. Le registre de DRAPEAUX de contient les drapeaux de que tels que le portent le drapeau , le drapeau de débordement de et le drapeau zéro . En conclusion, l'indicateur d'instruction (IP) indique l'instruction courante.

à 32 bits

Avec l'arrivée du processeur 80386 à 32 bits, les registres d'usage universel de 16 bits, des registres de base, les registres d'index, l'indicateur d'instruction, et le registre de DRAPEAUX de , mais pas les registres de segment, n'ont été augmentés à 32 bits. Ceci est représenté en mettant en tête un " ; " du E ; (pour prolongé par ) au Opcodes de registre (ainsi la HACHE augmentée est devenue EAX, SI est devenue ESI et ainsi de suite). Les registres d'usage universel, des registres de base, et les registres d'index pourraient tout être utilisés comme base dans des modes d'adressage, et tous ces registres excepté l'indicateur de pile pourraient être utilisés comme index dans des modes d'adressage. Deux nouveaux registres de segment (FS et GS) ont été ajoutés. Avec un plus grand nombre de registres, instructions et opérandes, le format du code machine a été augmenté. Pour fournir à la compatibilité ascendante, des segments le code exécutable peuvent être marqués en tant que contenir des instructions de 16 bits ou à 32 bits. Les préfixes spéciaux permettent l'inclusion des instructions à 32 bits dans un segment de 16 bits ou vice versa.

64-bit

Commençant par le processeur d'AMD Opteron, le x86 en long mode 64-bit (comme sous-ensemble de mode de AMD64 ou de X86-64 ) a prolongé les registres à 32 bits d'une manière semblable que le mode protégé à 32 bits a fait avant lui (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, DÉCHIRURE). Cependant, AMD a également ajouté 8 registres généraux 64-bit additionnels (R8, R9,…, R15). Les modes d'adressage n'ont pas été nettement changés du mode à 32 bits, sauf que l'adressage a été prolongé à 64 bits, l'adressage physique est maintenant signe prolongé (ainsi mémoire s'ajoute toujours également au dessus et au bas de la mémoire ; noter que ceci n'affecte pas l'adressage linéaire ou virtuel), et d'autres détails de sélecteur ont été nettement réduits.

But divers/spécial

les processeurs x86 incluent également divers registres spéciaux/divers tels que les compteurs d'instruction (CR0 par 4), corrigent les registres (DR0 par 3, plus 6 et 7), essai de enregistre (TR4 par 7), registres de descripteur (GDTR, LDTR, IDTR), et un registre de tâche (TR).

But

Bien que les registres principaux soient " ; général-purpose" ; et peut être employé pour n'importe quoi, il a été envisagé qu'ils soient employés pour les buts suivants :
AX/EAX/RAX : accumulateur
BX/EBX/RBX : base
CX/ECX/RCX : compteur
DX/EDX/RDX : données/général
SI/ESI/RSI : " ; index" de source ; pour des opérations de la corde .
DI/EDI/RDI : " ; index" de destination ; pour des opérations de corde.
SP/ESP/RSP : Indicateur de pile pour l'adresse supérieure de la pile.
BP/EBP/RBP : indicateur bas de pile pour tenir l'adresse de l'élément de pile courant .
IP/EIP/RIP : Indicateur d'instruction. Tient l'adresse d'instruction courante.

Aucun but particulier n'a été envisagé pour les 8 autres registres disponibles seulement dans le mode 64-bit.

Quelques instructions compilent et s'exécutent plus efficacement à l'aide de ces registres pour leur but conçu. Par exemple, using AL comme accumulateur et ajouter une valeur immédiate de byte à lui produit l'efficace s'ajoutent au Opcode d'AL de 04h, tout en à l'aide du registre de BL produit le générique et s'ajoute plus longtemps à l'opcode de registre de 80C3h.

Structure

Registres d'usage universel (A, B, C et D)

Modes d'opération

Vrai mode

voient également :

du vrai mode

Le vrai mode est un mode d'opération du 80286 et du postérieur X86 - les unités centrales de traitement compatibles . Le vrai mode est caractérisé par 20 par bits un espace d'adressage segmenté de mémoire (signification que seulement 1 mb de mémoire peut être adressé), l'accès direct de logiciel aux routines de BIOS et le matériel périphérique, et aucun concept de la protection de mémoire ou du traitement multitâche au niveau de matériel. Tous les unités centrales de traitement x86 de la série du 80286 et plus tard démarrent vers le haut en vrai mode à puissance-sur ; les unités centrales de traitement du 80186 et plus tôt ont eu seulement un mode opérationnel, qui est équivalent au vrai mode dans les morceaux postérieurs.

Afin d'employer plus que 64K de mémoire, les registres de segment doivent être utilisés. Ceci a créé de grandes complications pour les réalisateurs de compilateur C qui ont présenté des modes impairs d'indicateur tels que le " ; near" ; , " ; far" ; et " ; huge" ; pour accroître la nature implicite de l'architecture segmentée à différents degrés, avec quelques indicateurs contenant des excentrages de 16 bits dans des segments implicites et d'autres indicateurs contenant des adresses et des excentrages de segment dans des segments.

Mode protégé

voient également :

du mode protégé

En plus du vrai mode, d'Intel 80286 appuis mode protégé, mémoire physique en expansion accessible au mb de 16 et mémoire virtuelle virtuelleee accessible à 1 gigaoctet , et fourniture de la mémoire protégée par , qui empêche des programmes de corrompre un un autre. Ceci est fait en utilisant les registres de segment seulement pour stocker un index sur un à table de segments. Il y avait deux telles tables, le Tableau global (terminal graphique) de descripteur de et le Tableau local (LDT), chacun supportant à 8192 descripteurs de segment, chaque segment de descripteur de donnant l'accès à 64 KBs de mémoire. L'à table de segments a fourni des 24 adresses de base de de bit , qui peut être ajoutée à l'excentrage désiré pour créer une adresse absolue. Chaque segment peut être assigné un de quatre niveaux de l'anneau utilisés pour le degré de sécurité d'ordinateur réalisé par matériel .

Le Intel 80386 a présenté l'appui en mode protégé pour la pagination , un mécanisme de permettant pour employer la mémoire virtuelle virtuelleee .

La pagination et l'accès mémoire segmenté sont exigés pour les logiciels d'exploitation multitâche modernes. Le Linux , le 386BSD et le Windows NT ont été développés pour les 386 parce que c'était la première unité centrale de traitement d'architecture d'Intel pour soutenir la pagination et les excentrages à 32 bits de segment. L'architecture 386 est devenue la base de tout le développement ultérieur de la série x86. Le succès de Windows 3.1 , le premier a largement accepté la version du Microsoft Windows , était en grande partie dû à sa capacité de tirer profit de 386 dispositifs, quoiqu'il ait été employé principalement pour courir des sessions multiples plutôt que pour tirer profit de l'ensemble d'instruction à 32 bits indigène .

processeurs x86 qui soutiennent la botte de mode protégé dans le vrai mode pour la compatibilité ascendante avec la classe 8086 plus âgée des processeurs. Sur puissance-sur (initialisation d'aka), le processeur se lance dans le vrai mode, et alors il commence des chargeurs automatiquement dans le RAM à partir du disque de ROM et de . Un programme inséré quelque part le long de l'ordre de la botte peut être employé pour mettre le processeur dans le mode protégé . L'ensemble d'instruction en mode protégé est en arrière - compatible avec celui utilisé dans le vrai mode.

Mode 8086 virtuel

voient également :

du [[mode 8086 virtuel]] Il y a également un sous-modèle d'opération en mode protégé à 32 bits, appelé le 8086 le mode virtuel . C'est fondamentalement un mode hybride d'opération de special qui permet à des programmes de vrai mode et à des logiciels d'exploitation de fonctionner tandis que sous la commande d'un surveillant de mode protégé du système d'exploitation. Ceci tient compte de beaucoup de flexibilité dans des programmes fonctionnants de mode protégé et des programmes de vrai mode simultanément. Ce mode est disponible dans la version à 32 bits du mode protégé ; le mode 8086 virtuel n'existe pas précédemment dans la version de 16 bits du mode protégé, ou en long mode 64-bit.

long mode 64-bit

voient également : X86-64

D'ici 2002, il était évident que l'espace d'adressage à 32 bits de l'architecture x86 ait limité son exécution dans les applications exigeant de grands ensembles de données. Un espace d'adressage à 32 bits permettrait au processeur d'adresser directement seulement 4 gigaoctets de données, une taille surpassée par des applications telles que la vidéo de traitant et moteurs de base de données tout en en utilisant l'adresse 64-bit, on peut directement adresser 16777216 le TiB (plus de 16 milliards de mb) des données, bien que la plupart des architectures 64-bit ne soutiennent pas l'accès au plein espace d'adressage 64-bit (AMD64, par exemple, soutient seulement 48 bits, fente dans 4 niveaux de pagination, d'une adresse 64-bit).

Le AMD , qui suivrait traditionnellement l'exemple d'Intel, a pris l'initiative de prolonger l'architecture x86 à 32 bits au 64-bit, l'appelle au commencement le x86-64 , le retitrant plus tard le AMD64 . Le Opteron , le Athlon 64 , le Turion 64 , et les plus défuntes familles de Sempron des processeurs emploient cette architecture. Le succès de la ligne AMD64 des processeurs ajoutés à la réception tiède du renversé-ingénieur incité par architecture d'IA-64 Intel et adoptent l'ensemble d'instruction, ajoutant de nouveaux prolongements de ses propres et les stigmatisant l'architecture du EM64T , et re-les stigmatisant plus tard Intel 64 .

Dans ses noms de version de littérature et de produit, Microsoft et Sun se rapportent à AMD64/Intel 64 collectivement comme x64 dans les logiciels d'exploitation de Windows et du Solaris respectivement. Les distributions du Linux se rapportent à lui l'un ou l'autre comme " ; x86-64" ; , son " variable ; x86_64" ; , ou " ; amd64" ;. " d'utilisation de systèmes du schéma ; amd64" ; tandis que le Mac de OS x emploie le " ; x86_64" ;.

Le long mode est la plupart du temps une prolongation de l'ensemble d'instruction à 32 bits, mais à la différence de la transition de 16 to-32-bit, beaucoup d'instructions ont été abandonnées en mode de 64 bits. Ceci n'affecte pas la compatibilité ascendante binaire réelle (qui exécuterait le code de legs en d'autres modes qui maintiennent le soutien de ces instructions), mais il change l'assembleur de manière et les compilateurs pour le nouveau code doivent fonctionner.

C'était la première fois qu'une mise à niveau du commandant l'architecture x86 a été lancée et a commencé par un fabricant autre qu'Intel. C'était également la première fois qu'Intel a accepté la technologie de cette nature d'une source extérieure.

Prolongements

Unité de virgule flottante

voient également :

du [[unité de virgule flottante]] Au commencement, IA-32 a inclus des possibilités à point mobile seulement sur les processeurs ajoutés (8087, 80287 et 80387.) Avec introduction des 80486, ces 8 registres de la virgule flottante 80x87, connus sous le nom de rue (0) par la rue (7) sont incorporés à l'unité centrale de traitement. Chaque registre est 80 bits au loin et stocke des nombres dans le double format de précision prolongée de la norme à point mobile d'IEEE de .

Ces registres ne sont pas accessibles directement, mais sont accessibles comme une pile du LIFO . Les nombres de registre ne sont pas fixes, mais sont relativement au dessus de la pile ; la rue de (0) est le dessus de la pile, rue de (1) est le prochain registre au-dessous du dessus de la pile, rue de (2) est deux au-dessous du dessus de la pile, etc. Cela signifie que ces données sont toujours abaissées à partir du dessus de la pile, et des opérations sont toujours faites contre le dessus de la pile. Ainsi vous ne pourriez simplement accéder aucun registre directement, il doit être fait dans l'ordre de pile.

MMX

voient également : MMX

MMX est un ensemble d'instruction du SIMD conçu par Intel, présenté en 1997 pour des microprocesseurs du Pentium MMX de . Il s'est développé hors d'une unité semblable d'abord utilisée sur le Intel i860 . Il est apparu la première fois dans le Pentium MMX . Il est soutenu sur la plupart des processeurs IA-32 suivants par Intel et des autres fournisseurs. MMX est typiquement employé pour les applications visuelles.

MMX a ajouté le nouveau " 8 ; registers" ; à l'architecture, connue sous le nom de MM0 par MM7 (dorénavant désigné sous le nom de MMn ). En réalité, ces nouveau " ; registers" ; étaient juste les noms d'emprunt pour les registres existants de pile de x87 FPU. Par conséquent, quelque chose qui a été fait à la pile de virgule flottante affecterait également les registres MMX. À la différence de la pile de point de gel, ces registres de MMn étaient fixes, pas parent, et donc ils étaient aléatoirement accessibles. L'ensemble d'instruction n'a pas adopté empiler-comme la sémantique de sorte que les logiciels d'exploitation existants aient pu néanmoins correctement sauf et reconstituer l'état de registre quand traitement multitâche sans modifications.

Chacun des registres de MMn est des nombres entiers 64-bit. Cependant, un des concepts principaux de l'ensemble d'instruction MMX est le concept des types de données condensées de , qui signifie au lieu d'utiliser le registre de totalité pour un seul nombre entier 64-bit (mot quadruple ), deux nombres entiers à 32 bits (mot doublé ), quatre nombres entiers de 16 bits (le mot ) ou huit nombres entiers à 8 bits (byte ) peuvent être employés. Également parce que les registres 64-bit de MMn du MMX aliased à la pile de FPU, et chacun des registres de pile est le bit 80 au loin, les 16 bits supérieurs des registres de pile disparaissent inutilisés dans MMX, et ce peu sont placés à tout le, qui lui fait le ressembler à NaN ou les infinis dans la vue de virgule flottante. Ceci le facilite pour dire si vous travaillez à des données ou à MMX de virgule flottante des données.

3DNow !

voient également : 3DNow !

Dans 1997 AMD 3DNow présenté ! L'introduction de cette technologie a coïncidé avec l'élévation d'applications de divertissement du 3D et a été conçue pour améliorer le vecteur du de l'unité centrale de traitement traitant l'exécution de des applications graphique-intensives. les lotisseurs du jeu vidéo 3D et les fournisseurs de matériel des graphiques 3D emploient 3DNow ! pour augmenter leur exécution sur le K6 d'AMD et les séries d'Athlon de processeurs.

3DNow ! a été conçu pour être l'évolution normale de MMX des nombres entiers à la virgule flottante. En soi, elle emploie l'exact la même convention de nomination de registre que MMX, celui est MM0 par MM7. La seule différence est celle au lieu de byte d'emballage aux nombres entiers de mot quadruple dans ces registres, une emballerait des virgules flottantes de la précision simple dans ces registres. L'avantage des inscriptions de crénelage aux registres de FPU est que les mêmes structures d'instruction et de données employées pour sauver l'état des registres de FPU peuvent également être employées pour sauver 3DNow ! états de registre. Ainsi aucune modification spéciale n'est exigée pour être apportée aux logiciels d'exploitation qui ne sauraient pas autrement.

SSE

voient également : coulant les prolongements , SSE2 , SSE3 , SSSE3 , SSE4 ,

SIMD du SSE5

En 1999, Intel a présenté l'ensemble d'instruction coulant (SSE) de de prolongements de SIMD , suivant en 2000 avec SSE2. La première addition faite MMX presque désuet et le deuxième a permis aux instructions d'être normalement visées par les compilateurs conventionnels. Présenté en 2004 avec la révision de de '' Prescott '' de du processeur du Pentium 4 , SSE3 a ajouté le fil spécifique - manipulation de mémoire et de des instructions d'amplifier l'exécution de la technologie de HyperThreading du d'Intel. AMD a autorisé l'ensemble d'instruction SSE3 et a mis en application la plupart des instructions SSE3 pour sa révision E et plus défunt Athlon 64 processeurs. L'Athlon 64 ne soutient pas HyperThreading et ne manque pas de ces instructions SSE3 utilisées seulement pour HyperThreading.

SSE a jeté tous les raccordements de legs à la pile de FPU. Ceci a également signifié que cet ensemble d'instruction a jeté tous les raccordements de legs aux générations précédentes des ensembles d'instruction de SIMD comme MMX. Mais il a libéré les concepteurs vers le haut, leur permettant d'utiliser de plus grands registres, non limités par la taille des registres de FPU. Les concepteurs ont créé huit 128 registres de bit, appelés XMM0 par XMM7. (note de : dans le AMD64 , le nombre de registres de MMX de SSE a été grimpé de 8 jusqu'à 16.) Cependant, le du côté incliné était que les logiciels d'exploitation ont dû avoir une conscience de ce nouvel ensemble d'instructions afin de pouvoir sauver leurs états de registre. Ainsi Intel a créé une version légèrement modifiée de mode protégé, appelée le mode augmenté qui permet l'utilisation des instructions de SSE, tandis qu'ils restent handicapés en mode protégé régulier. Un OS qui se rend compte de SSE activera le mode augmenté, tandis qu'un OS ignorant entrera seulement dans le mode protégé traditionnel.

SSE est un ensemble d'instruction de SIMD qui travaille seulement sur des valeurs de virgule flottante, comme 3DNow !. Cependant, à la différence de 3DNow ! il divise tout le raccordement de legs à la pile de FPU. Puisqu'il a de plus grands registres que 3DNow ! , SSE peut emballer deux fois le nombre de flotteurs de la précision simple dans ses registres. Le SSE original a été limité seulement aux nombres de simple-précision, comme 3DNow !. Le SSE2 a présenté les possibilités pour emballer les nombres à double précision du aussi, qui 3DNow ! n'a eu aucune possibilité de faire puisqu'un nombre à double précision est 64-bit dans la taille qui serait la normale d'un 3DNow simple ! Registre de MMn. Au bit 128, les registres de SSE XMMn ont pu emballer deux flotteurs à double précision dans un registre. Ainsi SSE2 est beaucoup plus approprié aux calculs scientifiques que SSE1 ou 3DNow ! , qui étaient seulement précision simple limitée. SSE3 ne présente aucun registre additionnel.

Prolongation d'adresse physique (PAE)

voient également :

la prolongation d'adresse physique de Par défaut, les adresses physiques sont à 32 bits, cependant, là existe un mode de prolongation de page appelé la prolongation ou PAE d'adresse physique de , d'abord supplémentaire dans le Pentium pro d'Intel, qui permet les 4 bits additionnels de l'adressage physique. La taille de la mémoire en mode protégé est habituellement limitée à la contre-clavette de 4 . Par des tours dans les systèmes de gestion de la mémoire principale de la page et du segment du processeur, les logiciels d'exploitation x86 peuvent pouvoir accéder à plus de 32 bits d'espace d'adressage, même sans changement au paradigme 64-bit. Ce mode ne change pas la longueur des excentrages de segment ou des adresses linéaires ; tels sont toujours seulement 32 bits.

Virtualisation

la virtualisation du x86 est difficile parce que l'architecture n'a pas répondu au Popek et aux exigences de Goldberg jusque récemment. Néanmoins, il y a plusieurs produits commerciaux de la virtualisation du X86, tels que le VMware , les parallèles et le PC virtuel de Microsoft de , aussi bien que la virtualisation de la source ouverte projette comme le QEMU + KQEMU , VirtualBox . D'autres solutions, telles que la machine virtuelle Grain-basée par (" ; KVM" ;), exiger de plus nouveaux processeurs qui fournissent un meilleur appui de matériel pour la virtualisation.

Intel et AMD ont présenté les processeurs x86 avec les prolongements réalisés par matériel de virtualisation qui surmontent les limitations classiques de virtualisation de l'architecture x86. Ces prolongements sont connus en tant que VT d'Intel de (IVT ou simplement VT) qui était " appelé ; Vanderpool, " ; et AMD-V qui était " appelé ; Pacifica." ; Bien que la plupart des x86 modernes serveur-basés et beaucoup de processeurs ordinateur de bureau-basés par x86 modernes incluent ces prolongements, la technologie est généralement considérée non mûre en ce moment avec la plupart de virtualisation articulée autour d'un logiciel surpassant ces prolongements. On s'attend à ce que ceci change pendant que la technologie mûrit.

Voir également

IA-32
X86 langage d'assemblage
Listes d'instruction du X86
X87
&mdash du vrai mode ; &mdash irréel du mode ; &mdash virtuel du mode 8086 ; &mdash du mode protégé ; Long mode
X86-64
IA64
Microarchitecture
Liste de des microprocesseurs d'Intel
Liste de des microprocesseurs d'AMD
Liste de de PAR L'INTERMÉDIAIRE des microprocesseurs
Liste de x86 des fabricants
Adresse de base d'entrée-sortie
Demande d'interruption

Apostilles

eflist

.

Random links:Tour de siège | Tailles de vacances, New Jersey | Huaso | Ô de malala de relais Tanindrazanay ! | Arquitectura_X86