
En informatique et en génie informatique , l' architecture d'un ordinateur désigne sa conception conceptuelle et sa structure opérationnelle. Elle définit l'organisation et l'interaction de ses composants pour une exécution efficace des programmes . Il s'agit souvent d'une description générale qui ignore les détails d'implémentation précis. Elle englobe l' architecture du jeu d'instructions , la microarchitecture du processeur , la mémoire et les systèmes d'entrée/sortie .
L'architecture informatique prend également en compte les compromis entre performance , coût, consommation d'énergie, fiabilité et sécurité.
Histoire
La première architecture informatique documentée figure dans la correspondance entre Charles Babbage et Ada Lovelace , qui décrit la machine analytique . Lors de la construction de l'ordinateur Z1 en 1936, Konrad Zuse décrit dans deux demandes de brevet pour ses projets futurs que les instructions machine pourraient être stockées dans le même espace de stockage que les données, c'est-à-dire le concept de programme enregistré . Deux autres exemples importants et anciens sont :
- Le document de John von Neumann de 1945, Premier brouillon d'un rapport sur l'EDVAC , qui décrivait une organisation d'éléments logiques ; et
- La proposition plus détaillée d' Alan Turing pour la machine à calculer automatique , également de 1945 et qui citait l'article de John von Neumann .
Le terme « architecture » en informatique trouve son origine dans les travaux de Lyle R. Johnson et Frederick P. Brooks Jr. , membres du département d'organisation des machines du principal centre de recherche d'IBM en 1959. Johnson eut l'opportunité de rédiger une communication de recherche confidentielle sur le Stretch , un supercalculateur développé par IBM pour le Laboratoire national de Los Alamos (alors connu sous le nom de Laboratoire scientifique de Los Alamos). Afin de préciser le niveau de détail requis pour décrire cet ordinateur aux fonctionnalités sophistiquées, il indiqua que sa description des formats, des types d'instructions, des paramètres matériels et des gains de vitesse relevait de l'« architecture système », un terme qui lui semblait plus pertinent que celui d'« organisation des machines ».
Par la suite, Brooks, un concepteur de Stretch, a ouvert le chapitre 2 d'un livre intitulé Planning a Computer System: Project Stretch en déclarant : « L'architecture informatique, comme toute autre architecture, est l'art de déterminer les besoins de l'utilisateur d'une structure, puis de concevoir pour répondre à ces besoins aussi efficacement que possible dans les limites des contraintes économiques et technologiques. »
Brooks a ensuite contribué au développement de la gamme d'ordinateurs IBM System/360 , où le terme « architecture » est devenu un nom commun désignant « ce que l'utilisateur a besoin de savoir ». La gamme System/360 a été remplacée par plusieurs gammes d'ordinateurs compatibles, dont l'actuelle gamme IBM Z. Par la suite, les utilisateurs d'ordinateurs ont employé ce terme de manière beaucoup moins explicite.
Les premières architectures informatiques étaient conçues sur papier, puis directement intégrées au matériel final. Par la suite, des prototypes d'architectures informatiques ont été construits physiquement sous la forme d' ordinateurs à logique transistor-transistor (TTL) — tels que les prototypes du 6800 et du PA-RISC — testés et optimisés avant d'être intégrés au matériel final. Depuis les années 1990, les nouvelles architectures informatiques sont généralement « construites », testées et optimisées — soit au sein d'une autre architecture informatique dans un simulateur d'architecture informatique ; soit au sein d'un FPGA en tant que microprocesseur logiciel ; soit les deux — avant d'être intégrées au matériel final.
Sous-catégories
La discipline de l'architecture informatique comporte trois sous-catégories principales :
- Architecture du jeu d'instructions (ISA) : définit le code machine qu'un processeur lit et sur lequel il agit, ainsi que la taille des mots , les modes d'adresse mémoire , les registres du processeur et le type de données .
- Microarchitecture : également appelée « organisation de l’ordinateur », elle décrit comment un processeur particulier implémente l’ISA. La taille du cache du processeur d’un ordinateur , par exemple, est une question qui n’a généralement rien à voir avec l’ISA.
- Conception de systèmes : comprend tous les autres composants matériels d'un système informatique, tels que le traitement des données autre que le processeur (par exemple, l'accès direct à la mémoire ), la virtualisation et le multiprocesseur .
D'autres technologies existent en architecture informatique. Les technologies suivantes sont utilisées dans de grandes entreprises comme Intel et représentaient, selon les estimations de 2002 1 % de l'ensemble de l'architecture informatique :
- Macroarchitecture : couches architecturales plus abstraites que la microarchitecture
- Architecture du jeu d'instructions d'assemblage : un assembleur intelligent peut convertir un langage d'assemblage abstrait commun à un groupe de machines en un langage machine légèrement différent pour différentes implémentations .
- Macroarchitecture visible par le programmeur : les outils de langage de haut niveau, tels que les compilateurs, peuvent définir une interface ou un contrat cohérent pour les programmeurs qui les utilisent, en masquant les différences entre les ISA et les microarchitectures sous-jacentes . Par exemple, les normes C , C++ et Java définissent différentes macroarchitectures visibles par le programmeur.
- Microcode : le microcode est un logiciel qui traduit les instructions pour qu'elles s'exécutent sur une puce. Il agit comme une surcouche du matériel, présentant une version privilégiée de l'interface du jeu d'instructions. Cette fonctionnalité de traduction d'instructions offre aux concepteurs de puces une grande flexibilité : par exemple, 1. Une nouvelle version améliorée de la puce peut utiliser le microcode pour présenter le même jeu d'instructions que l'ancienne version. Ainsi, tous les logiciels ciblant ce jeu d'instructions fonctionneront sur la nouvelle puce sans modification. 2. Le microcode peut présenter différents jeux d'instructions pour une même puce, lui permettant d'exécuter une plus grande variété de logiciels.
- Architecture des broches : fonctions matérielles qu’un microprocesseur doit fournir à une plateforme matérielle, par exemple les broches x86 A20M, FERR/IGNNE ou FLUSH. Sont également concernés les messages que le processeur doit émettre pour permettre l’invalidation (le vidage) des caches externes . Les fonctions d’architecture des broches sont plus flexibles que les fonctions ISA, car le matériel externe peut s’adapter à de nouveaux encodages ou passer d’une broche à un message. Le terme « architecture » est approprié, car ces fonctions doivent être fournies pour des systèmes compatibles, même si la méthode détaillée change.
Rôles
Définition
L'architecture informatique vise à optimiser les performances, l'efficacité, le coût et la fiabilité d'un système informatique. L'exemple de l'architecture des jeux d'instructions permet d'illustrer cet équilibre entre ces facteurs contradictoires. Des jeux d'instructions plus complexes permettent aux programmeurs d'écrire des programmes plus compacts, puisqu'une seule instruction peut encoder une abstraction de haut niveau (comme l' instruction Loop x86 ). Cependant, des instructions plus longues et plus complexes nécessitent un temps de décodage plus important pour le processeur et peuvent s'avérer plus coûteuses à implémenter efficacement. La complexité accrue due à un jeu d'instructions étendu augmente également le risque d'erreurs de fiabilité lorsque les instructions interagissent de manière inattendue.
La mise en œuvre comprend la conception de circuits intégrés , le conditionnement, l'alimentation et le refroidissement . L'optimisation de la conception nécessite une bonne connaissance des compilateurs , des systèmes d'exploitation, de la conception logique et du conditionnement.
Architecture du jeu d'instructions
L'ISA d'un ordinateur est généralement décrite dans un petit manuel d'instructions, qui explique comment les instructions sont encodées. Ce manuel peut également définir des noms mnémotechniques courts (et parfois vagues) pour les instructions. Ces noms peuvent être reconnus par un outil de développement logiciel appelé assembleur . Un assembleur est un programme informatique qui traduit une forme lisible par l'humain de l'ISA en une forme lisible par la machine. Des désassembleurs sont également largement disponibles, généralement intégrés aux débogueurs et aux logiciels permettant d'isoler et de corriger les dysfonctionnements des programmes binaires.
La qualité et l'exhaustivité des ISA varient. Une bonne ISA offre un compromis entre la facilité de programmation (la lisibilité du code), la taille du code (la quantité de code nécessaire pour réaliser une action spécifique), le coût d'interprétation des instructions par l' ordinateur (une plus grande complexité implique un besoin accru de matériel pour le décodage et l'exécution des instructions) et la vitesse de l'ordinateur (un matériel de décodage plus complexe engendre un temps de décodage plus long). L'organisation de la mémoire définit la manière dont les instructions interagissent avec la mémoire, et dont la mémoire interagit avec elle-même.
Lors de l'émulation de conception , les émulateurs peuvent exécuter des programmes écrits dans un jeu d'instructions proposé. Les émulateurs modernes peuvent mesurer la taille, le coût et la vitesse afin de déterminer si un jeu d'instructions particulier atteint ses objectifs.
Organisation informatique
L'efficacité énergétique est un autre critère important pour les ordinateurs modernes. Une meilleure efficacité énergétique peut souvent se faire au détriment de la vitesse ou du coût. Historiquement, l'unité de mesure typique de la consommation énergétique en architecture informatique était le MIPS/W (millions d'instructions par seconde par watt), bien que les conceptions modernes utilisent des mesures plus sophistiquées telles que les tests de performance par watt et l'énergie par instruction.
Les circuits intégrés modernes consomment davantage d'énergie malgré les améliorations de l'efficacité énergétique par transistor obtenues grâce à la miniaturisation des procédés de fabrication. Cette augmentation est due à la croissance rapide du nombre de transistors par puce , qui exige des réseaux d'alimentation de plus en plus complexes. De plus, la densité de puissance (watts par unité de surface) augmente avec la réduction de la taille des composants (par exemple, la taille des transistors), ce qui rend la gestion thermique plus complexe. L'élévation des températures de fonctionnement aggrave encore ces problèmes thermiques en augmentant la résistance des interconnexions , créant ainsi une boucle de rétroaction positive entre la consommation d'énergie et la production de chaleur.
Avec le ralentissement de la miniaturisation des transistors et les contraintes de consommation d'énergie devenues des facteurs limitants, l'efficacité énergétique prend une importance au moins égale, voire supérieure, à celle de l'intégration d'un nombre toujours croissant de transistors sur une seule puce. Les processeurs récents témoignent de cette priorité, privilégiant l'efficacité énergétique à la simple concentration de transistors sur une puce. Dans le domaine des systèmes embarqués , l'efficacité énergétique est depuis longtemps un objectif majeur, au même titre que le débit et la latence.
Évolution de la demande du marché
Ces dernières années, la fréquence d'horloge a progressé plus lentement que la consommation énergétique. Ce ralentissement est dû à la fin de la loi de Moore et à la demande croissante d'autonomie et de miniaturisation des appareils mobiles . Ce changement d'orientation, des fréquences d'horloge élevées à la consommation énergétique et à la miniaturisation, est illustré par les réductions significatives de consommation, jusqu'à 50 %, annoncées par Intel lors du lancement de la microarchitecture Haswell . Intel a ainsi abaissé son seuil de consommation de 30-40 watts à 10-20 watts . Si l'on compare ce résultat à l'augmentation de la vitesse de traitement de 3 GHz à 4 GHz (entre 2002 et 2006), on constate que la recherche et le développement se concentrent désormais moins sur la fréquence d'horloge et moins sur la consommation énergétique et l'encombrement