Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

Architecture 16 bits

Un article de Wikipédia, l'encyclopédie libre.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet articlene cite pas suffisamment ses sources().

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant lesréférences utiles à savérifiabilité et en les liant à la section « Notes et références ».

En pratique :Quelles sources sont attendues ?Comment ajouter mes sources ?
LeWDC 65C816S, un microprocesseur 16 bits

Eninformatique, l’architecture 16 bits est un type de structure d'ordinateur exploitant desmots (processeur, mémoire,busetc.) d'une taille de 16 bits (soit deuxoctets).

Un mot de 16 bits peut stocker 216 valeurs différentes, soit 65 536 valeurs. Un processeur 16 bits peut doncdirectement adresser 64 kio demémoire.

Histoire

[modifier |modifier le code]

Au milieu des années 1960, les premiers ordinateurs 16 bits commercialisés incluent le HP-2116[1] deHP, lePDP-11 deDEC et leNova de Data General. Ils sont conçus et fabriqués à base decomposants discrets et de ce fait relativement complexes et volumineux.

Vers le milieu des années 1970, des microprocesseurs816 bits (bus de données 8 bits, bus d'adresse de 16 bits) se multiplient, comme leZilog Z80, leMOS Technology 6502 ou leMotorola 6809[réf. nécessaire].

LeTMS9900 (en) deTexas Instruments est un des premiers microprocesseurs 16 bits, et a été utilisé dans les ordinateurs familiauxTI-99/4 à partir de 1979[2].

Au début des années 1980, les constructeurs développent desmicroprocesseurs 16 bits, comme l’Intel 8086, l’Intel 80286 et leWDC 65C816. Lesregistres et les instructions arithmétiques de l'Intel 8088 opéraient sur des entiers de 16 bits, mais sa mémoire et son bus de données externe ne sont que de8 bits de large[3].

Unentier de 16 bits permet de stocker 216 (soit 65 536) valeurs différentes. Dans une représentation non signée, ces valeurs sont des entiers compris entre 0 et 65 535. Dans une représentation encomplément à deux, ces valeurs sont comprises entre −32 768 et 32 767. Par conséquent, un processeur gérant desadresses mémoire de 16 bits peut accéder directement à 64 kio de mémoire.

Modèles de la mémoire 16 bits

[modifier |modifier le code]
Cette section a besoin d'êtrerecyclée (novembre 2014).
Une réorganisation et une clarification du contenu sont nécessaires.Améliorez-la oudiscutez des points à améliorer.
Cette sectionne cite pas suffisamment ses sources (août 2013)
Pour l'améliorer, ajoutezdes références de qualité et vérifiables (comment faire ?) ou le modèle{{Référence nécessaire}} sur les passages nécessitant une source.

Les processeurs 16 bits ont disparu de l'industrie des ordinateurs personnels actuels (remplacé par les32 bits puis les64 bits), mais ils restent en service dans une grande variété d'applications embarquées. Par exemple, le processeur XAP 16 bits est utilisé dans de nombreux circuitsASIC.

Intel 8086, 80186 et 80286

[modifier |modifier le code]

En 1978, Intel utilise des registres 16 bits dans son8086. Une adresse peut représenter un espace de 64 Ko comme sur le 8080/8085 mais le processeur utilise différents registres de segment 16 bits selon les instructions. Chaque segment pointe sur une zone de la mémoire et élargit l'adresse à 20 bits, la véritable adresse physique est calculée par segment * 16 + offset (l'offset étant celui spécifié comme adresse). Le 8086 peut ainsi accéder à 1 Mo de mémoire malgré ses registres 16 bits, à condition de jouer sur les contenus des registres de segment pendant l'exécution.

Les registres de segment sont au nombre de quatre :

  • CS est utilisé par le pointeur de code, il indique où exécuter la prochaine instruction, il est implicite dans les instructions de saut ou d'appel de routines ;
  • SS pointe sur lapile d'exécution pour les adresses de retour des CALL ou le passage de paramètres, il est lui aussi implicite ;
  • DS et ES sont en usage libre pour l'accès aux données.

Ce mode d'accès à la mémoire est assez lourd puisqu'à un moment donné, seuls 64 Ko de code, 64 Ko de pile et deux blocs de 64 Ko de données sont accessibles sans modifier le contenu des registres de segment.

Ce mode est ditréel car le registre segment et l'offset représententdirectement la véritable adresse physique. Il est dangereux puisque le programme peut écrire à n'importe quelle adresse, pire encore il peut le faire de plusieurs façons différentes (une même adresse physique peut être représentée de multiples manières avec des segments et offsets différents). Néanmoins, le modèle permet une transposition assez simple des programmes développés pour les processeurs 8 bits, et facilite l'architecture interne en utilisant un bus interne de 16 bits qui n'induit aucun retard pour véhiculer les données de registre à registre ou de registre à mémoire. Il permet aussi de séparer physiquement le code et les données si l'on gère correctement le calcul des segments.

Le80186 qui lui succède en 1982 fonctionne comme le 8086 en matière d'adressage mémoire. Il sera principalement employé comme un 8086 plus rapide, ses fréquences allant au delà de celles de son prédécesseur.

Avec le80286 qui apparait lui aussi début 1982, Intel met en place un modeprotégé : le registre de segment pointe alors vers un bloc de données appelédescripteur, qui pointe vers la véritable zone mémoire et l'isole des autres segments. De plus, le segment de code est protégé contre l'écriture pendant l'exécution. La largeur du bus d'adresse passe à 24 bits, le processeur peut donc adresser 16 Mo de mémoire. Le mode protégé possède aussi des dispositifs de commutation de tâches.

Unmode réel compatible avec le 8086 reste accessible sur le 80286, mais cela le cantonne dans le rôle d'un super 8086 plus rapide pour MS-DOS et Windows 3. Le changement de mode implique un reset du processeur et implique généralement de rester dans le mode protégé, interdisant la compatibilité avec les programmes MS-DOS. En dehors des systèmesXENIX etOS/2, peu d'applications bénéficient du mode protégé du 80286. Il ouvre néanmoins la porte au mode protégé du futur 32 bitsIntel 80386.

Motorola 68000 et 68010

[modifier |modifier le code]

De son côté, Motorola choisit en 1979 de reproduire dans son68000 le modèle des processeurs 8 bits : données sur 16 bits (au lieu de 8), adresses sur 32 (au lieu de 16). Mais Motorola va plus loin car tous les registres ont une taille de 32 bits : les instructions peuvent ainsi gérer les données sur 8, 16 ou 32 bits bien que l'ALU et le bus interne soient de 16 bits.

Les adresses peuvent être exprimées sur 32 bits linéaires, toutefois l'espace physique réellement accessible est de 16 Mo en raison des limites du bus à 24 signaux d'adresse.

Ce modèle est lui aussi unmode réel et les adresses physiques correspondent directement aux adresses dans les registres. Toutefois le 68000 possède quatre états qui permettent de séparer la mémoire en quatre zones protégées les unes des autres selon l'état, pour empêcher par exemple le programme utilisateur d'écrire dans les zones superviseur.

Motorola ajoute quelques améliorations dans le68010 mais le modèle mémoire ne change pas fondamentalement.

Modèles mémoire des compilateurs sur 16 bits Intel

[modifier |modifier le code]

Les compilateurs de langages de programmation sont confrontés au modèle de la mémoire segmentée sur les processeurs Intel. En raison du mode mémoire linéaire sur le Motorola 68000, les compilateurs n'ont généralement pas à gérer la taille des pointeurs, bien que manière les pointeurs 32 bits soient ralentis par un bus interne de 16 bits seulement.

LeTurbo Pascal 3.0[4] deBorland fait l'impasse et les registres segment ne changent pas de valeur tout au long de la vie du programme : on peut donc avoir un programme d'au maximum 64 Ko de code, utilisant au maximum 64 Ko de données et 64 Ko de pile (la pile cependant peut dépasser la limite). Des librairies deTurbo Power[5] pour ce compilateur gèrent les segments pour relier plusieurs parties de code ou utiliser davantage de données, au détriment de la vitesse d'exécution.

Mais la plupart des compilateurs vont s'écarter de ce modèle simpliste, y compris Borland à partir deTurbo Pascal 4.0 et vont utiliser soit des adressagesnear sur seulement 16 bits d'adresse, soit des adressagesfar combinant 16 bits de segment et 16 bits d'adresse. L'utilisation des pointeurs far pénalise la vitesse d'exécution, mais donne accès à tout l'espace mémoire surtout à partir du 80286 qui peut accéder à 16 Mo.

Dans les compilateursTurbo Pascal, le choix des pointeurs near ou far pour le code est effectué par le compilateur selon la proximité du code, et les données sont toujours en pointeurs far. L'utilisateur peut forcer le compilateur à n'utiliser que des pointeurs far dans le code à l'aide d'une option ou d'une directive de compilation.

Dans le compilateur Borland C++, le choix est accessible par le biais des mots clés ajoutés au langagenear far ethuge, et des options de compilation choisissent le modèle mémoire à employer par le compilateur[6] :

Modèles mémoire de Borland C++ 3.1
ModèlePointeur de codePointeur de donnéesRemarque
tinynear (16)near (16)Code et données sont dans le même segment (les registres CS, DS, ES, SS pointent vers le même segment). Les pointeursnear sont toujours utilisés. Code, données et pile ensemble ne peuvent pas excéder 64 Ko
smallnear (16)near (16)Code et données sont dans des segments différents, et les pointeursnear sont toujours utilisés. Il y a 64 Ko d'espace disponible pour le code et 64 Ko pour les données et la pile.
mediumfar (32)near (16)Le code utilise des pointeursfar permettant l'accès à 1 Mo de code. Les pointeurs de données restent du typenear limitant les données à 64 Ko.
compactnear (16)far (32)Les données utilisent des pointeursfar pour 1 Mo de données, le code reste sur des pointeursnear permettant 64 Ko de code. Les donnéesstatiques utilisent des pointeursnear et sont limitées à 64 Ko séparés.
largefar (32)far (32)Code et données peuvent accéder à 1 Mo chacun. Les donnéesstatiques utilisent des pointeursnear et sont limitées à 64 Ko séparés.
hugefar (32)far (32)Code et données accèdent à 1 Mo, y compris les données statiques.

Des modèles similaires sont disponibles avec le compilateur Microsoft C/C++ dès 1983[7].

Types de données compilateurs sur processeur 16 bits

[modifier |modifier le code]

Lescompilateurs de l'ère 16 bits proposent généralement des types de données entières d'une taille prédéterminée :

Types de nombres entiers 16 bits
Modèle de donnéesshortintlongPointeurs
IP16L32 (near)16163216
I16LP32 (far)16163232

Lors du passage aux processeurs 32 bits et au modes protégés, les entiersint passeront parfois à 32 bits en particulier en langageC etC++ : ils ne définissent pas strictement la taille du typeint qui est laissée à l'appréciation du compilateur. Le typeint étant facultatif car type par défaut, les modificateursshort etlong exprimés seuls sont gérés comme des synonymes deshort int etlong int par le compilateur.

En langage Pascal il n'y a pas de type de données par défaut, Borland propose alors plusieurs types de données entières[8] pour un usage optimal selon les besoins :

Types de données Turbo Pascal
TypeValeursTaille en octetsEquivalent C
Byte0 à 2551unsigned char
Shortint-128 à 1271char
Integer-32768 à 327672short (int) ou int
Word0 à 655352unsigned short (int) ou unsigned int
Longint-2147483648 à 21474836474long (int)

Le Motorola 16/32 68000 et l'Intel 386SX

[modifier |modifier le code]
Cette sectionne cite pas suffisamment ses sources (janvier 2023)
Pour l'améliorer, ajoutezdes références de qualité et vérifiables (comment faire ?) ou le modèle{{Référence nécessaire}} sur les passages nécessitant une source.

LeMotorola 68000 est parfois qualifié de 16 bits parce que sonbus de données et sonunité arithmétique et logique ont 16 bits de large, et son bus mémoire ne peut adresser que 16 Mio demémoire vive. Il expose toutefois unearchitecture 32 bits dans la mesure où ses registres généraux ont une capacité de 32 bits et que la plupart des instructions arithmétiques supportent des entiers de 32 bits. Les programmes écrits pour leMotorola 68000 sont donc compatibles avec les processeurs 32 bits de la familleM68k et exploitent pleinement leurs capacités 32 bits.

Le processeur 68000 de laSegaMega Drive fut très mis en avant dans les publicités, la console ayant même une inscription « 16-bit » sur le dessus de sa coque, ce qui conduisit cette période de l'histoire des consoles dejeux vidéo à être qualifiée d'« ère 16 bits ».[réf. nécessaire]

De nombreuses machines familiales de l'époque utilisèrent le microprocesseur 68000 : leMacintosh, l'Amiga 500, l'Atari ST[9], leSharp X68000 mais également la consoleNeo-Geo AES. Le 68000 fut utilisé dans la consoleJaguar d'Atari, présentée à l'époque comme la première 64 bits du marché (alors que seule une partie de son architecture était effectivement 64 bits).

Une analyse similaire s'applique à l'Intel 80386SX, microprocesseur bas de gamme, qui est également un processeur 32 bits associé à un bus de données 16 bits.

Notes et références

[modifier |modifier le code]
  1. Name: 2116B, surhpmuseum.net, consulté le 24 décembre 2012
  2. (en) Walden C. Rhines, « The Inside Story of Texas Instruments’ Biggest Blunder: The TMS9900 Microprocessor »,
  3. (en) « Intel 8088 microprocessor family », surwww.cpu-world.com(consulté le)
  4. (en)Turbo Pascal Reference Manual, Borland International,, 438 p.(ISBN 0-87524-003-8,lire en ligne),p. 226
  5. « TurboPower Software Company », surwww.turbopower.com(consulté le)
  6. (en)Borland C++ 3.1 Programmers Guide, Borland International,, 483 p.(lire en ligne),p. 346
  7. Computer Language - Issue 06 (1985-02)(CL Publications)(US),(lire en ligne)
  8. (en)Turbo Pascal 6.0 User's Guide, Borland International,, 271 p.(lire en ligne),p. 31
  9. «ST» signifiantSixteen/Thirty-two, indiquant l'architecture du processeur en1632 bits.

Annexes

[modifier |modifier le code]

Articles connexes

[modifier |modifier le code]
v ·m
Technologies deprocesseur
Modèles
Architecture
Général
Mots
Instruction
Jeu
Famille
Exécution
Performance
Types
Général
Par usage
On chip
Accélération
matérielle
Microarchitecture
Parallélisme
Général
Processus
Taxonomie de Flynn
Circuiterie et unité
Général
Exécution
Porte logique
Registre
Contrôle
Chemin de données
Cadencement
Gestion de l'alimentation
Fabrication
Articles liés
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Architecture_16_bits&oldid=233323746 ».
Catégories :
Catégories cachées :

[8]ページ先頭

©2009-2026 Movatter.jp