Quels sont les différents types d'architectures informatiques?

20

Je passe par le livre "Elements of computing systems". Ce livre enseigne comment construire un ordinateur entier à partir de zéro. Pendant que je parcourais les chapitres sur l'architecture informatique, j'ai remarqué que tout était axé sur l'architecture Von Neumann. J'étais simplement curieux de savoir quelles sont les autres architectures et quand et où elles sont utilisées.

Je n'en connais que deux, l'un est Von Neumann et le second est Harvard. Je connais également RISC qui est utilisé dans uC d'AVR.

Rick_2047
la source
2
Il y en a un troisième, qui est modifié Harvard. Un Harvard pur ne pourrait pas utiliser le même stockage pour conserver à la fois les programmes et les données. Par conséquent, presque toutes les implémentations de Harvard ont été modifiées pour permettre d'adresser la mémoire d'instructions en tant que données.
gorille
1
grande question.
Type anonyme

Réponses:

27

Il existe de nombreux types d'architectures informatiques.

Une façon de classer les architectures informatiques est le nombre d'instructions exécutées par horloge. De nombreuses machines informatiques lisent une instruction à la fois et l'exécutent (ou mettent beaucoup d'efforts pour agir comme siils le font, même si en interne ils font des trucs superscalaires et hors service). J'appelle ces machines des machines "von Neumann", car toutes ont un goulot d'étranglement von Neumann. Ces machines incluent les architectures CISC, RISC, MISC, TTA et DSP. Ces machines comprennent les machines à accumulateur, les machines à registre et les machines à empiler. D'autres machines lisent et exécutent plusieurs instructions à la fois (VLIW, super-scalaire), qui dépassent la limite d'une instruction par horloge, mais atteignent toujours le goulot d'étranglement de von Neumann avec un nombre légèrement plus élevé d'instructions par horloge. Pourtant, d'autres machines ne sont pas limitées par le goulot d'étranglement de von Neumann, car elles préchargent toutes leurs opérations une fois à la mise sous tension, puis traitent les données sans autre instruction. Ces machines non Von-Neumann incluent des architectures de flux de données,

Une autre façon de catégoriser les architectures informatiques est la ou les connexions entre le CPU et la mémoire. Certaines machines ont une mémoire unifiée, de sorte qu'une seule adresse correspond à un seul endroit en mémoire, et lorsque cette mémoire est RAM, on peut utiliser cette adresse pour lire et écrire des données, ou charger cette adresse dans le compteur de programme pour exécuter du code. J'appelle ces machines des machines Princeton. D'autres machines ont plusieurs espaces de mémoire distincts, de sorte que le compteur de programmes se réfère toujours à la "mémoire de programme", quelle que soit l'adresse qui y est chargée, et les lectures et écritures normales vont toujours à la "mémoire de données", qui est un emplacement séparé contenant généralement différents même lorsque les bits de l'adresse de données sont identiques aux bits de l'adresse de mémoire du programme. Ces machines sont "pure Harvard" ou "

Quelques personnes utilisent une définition étroite de "machine von Neumann" qui n'inclut pas les machines Harvard. Si vous êtes une de ces personnes, quel terme utiliseriez-vous pour le concept plus général de "machine qui a un goulot d'étranglement von Neumann", qui comprend à la fois les machines Harvard et Princeton, et exclut NON-VON?

La plupart des systèmes embarqués utilisent l'architecture Harvard. Quelques processeurs sont des «Harvard purs», ce qui est peut-être l'arrangement le plus simple à intégrer dans le matériel: le bus d'adresse vers la mémoire de programme en lecture seule est exclusivement connecté au compteur de programme, comme de nombreux premiers micropip PICchicricrip. De plus, certaines machines Harvard modifiées placent également des constantes dans la mémoire du programme, qui peuvent être lues avec une instruction spéciale "lire les données constantes de la mémoire du programme" (différente de l'instruction "lire dans la mémoire des données"). Le logiciel exécuté sur les types de machines Harvard ci-dessus ne peut pas modifier la mémoire du programme, qui est en fait la ROM de ce logiciel. Certains systèmes embarqués sont "auto-programmables", généralement avec une mémoire de programme dans la mémoire flash et un "bloc d'effacement de mémoire flash" spécial et une instruction spéciale "écriture de bloc de mémoire flash" (différente de l'instruction normale "écriture dans la mémoire de données"), en plus de l'instruction "lecture des données de la mémoire programme". Plusieurs Microchip PICmicros et Atmel AVR plus récents sont des machines Harvard modifiées auto-programmables.

Une autre façon de classer les processeurs est leur horloge. La plupart des ordinateurs sont synchrones - ils ont une seule horloge globale. Quelques CPU sont asynchrones - ils n'ont pas d'horloge - y compris les ILLIAC I et ILLIAC II, qui étaient à une époque les supercalculateurs les plus rapides sur terre.

Veuillez aider à améliorer la description de toutes sortes d'architectures informatiques sur http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture .

davidcary
la source
2
Wow, honte à vous d'avoir caché cette connaissance si longtemps APRÈS avoir posé la question.
Rick_2047
3
@Rick - Il semble que cette réponse a pris beaucoup de temps à composer. Soyez reconnaissant à David d'avoir pris le temps de répondre à votre question! Certaines personnes n'opèrent pas selon le même horaire que vous.
Kevin Vermeer
2
@reemrevnivek qui était censé être un mec de blague.
Rick_2047
Ce serait bien si cette réponse était marquée comme une réponse wiki communautaire.
Trygve Laugstøl
8

Le CISC est «l'opposé» du RISC. Alors que RISC préfère avoir des instructions simples, faciles à optimiser pour le compilateur et souvent de la même taille, CISC aime les instructions complexes de taille variable.

Par exemple, une instruction pop dans CISC modifiera le pointeur de pile et placera les données de la pile dans un autre registre. Cependant, un processeur RISC lirait les données avec une instruction et modifierait ensuite le pointeur de pile avec une seconde instruction. (généralement; il y a quelques exceptions, comme le PowerPC qui peut mettre à jour le pointeur de pile et pousser des données sur la pile, mais c'est une exception)

Étant donné que les instructions RISC sont toutes de la même taille, les démonteurs sont plus faciles à écrire. La conception du processeur est également plus facile, car le pipeline n'a pas à prendre en compte les différentes tailles d'instructions. Cependant, la densité de code CISC a tendance à être meilleure, à la fois parce que les instructions complexes nécessitent moins d'octets pour représenter le même nombre d'opérations, et parce que la longueur d'instruction variable permet une certaine "compression".

Il existe également d'autres architectures exotiques, comme VLIW / EPIC. Ce type d'architecture a été conçu avec un traitement parallèle à l'esprit. Cependant, ils n'ont pas très bien fait, car ils imposent une charge très lourde au compilateur à optimiser, tandis que d'autres architectures ont des fenêtres d'instructions sophistiquées qui soulagent une certaine charge d'optimisation du compilateur.

ajs410
la source
1
si vous l'aimez, acceptez-le.
Kortuk
5

Eh bien, il y a quelque chose comme l'ENIAC, où vous avez essentiellement des ALU individuelles et vous les "programmez" en câblant la sortie d'un alu à l'entrée d'un autre alu qui allait effectuer l'opération suivante sur cette variable intermédiaire. Vos "registres" et stockage sont les fils reliant l'alus.

J'ai récemment acheté le livre "Les premiers ordinateurs - histoire et architectures (histoire de l'informatique)", qui se concentre en partie sur ce sujet précis. Je ne recommande pas l'achat de ce livre, bien qu'il ne s'agisse que d'une collection d'articles universitaires, difficiles à lire et je pense qu'ils ont probablement été publiés (gratuitement) ailleurs. (J'ai abandonné avant de terminer l'introduction)

Une fois la mémoire inventée et devenue pratique, nous nous sommes installés dans les deux populaires Von Neumann et Harvard. L'exécution à partir d'un recâblage, de cartes perforées, de bandes de papier ou de choses de ce genre est devenue moins pratique. Et il y a la pile (le zpu par exemple), qui, je suppose, tombe probablement dans la catégorie Harvard et non la sienne.

Qu'en est-il des plates-formes von neumann qui démarrent à partir d'un flash en lecture seule (en utilisation normale) sur une interface mémoire et ont des données en lecture / écriture dans une autre (qui peuvent parfois fonctionner sur les deux en parallèle) mais du point de vue des programmes sont dans un espace d'adressage? Ou celles qui ont plusieurs mémoires / interfaces internes et externes fonctionnant toutes en parallèle mais qui sont von neumann pour être dans le même espace d'adressage.

Et à quoi sert une plate-forme Harvard où le processeur ne peut pas accéder à la mémoire d'instructions en tant que données afin de changer / mettre à niveau le chargeur de démarrage ou pour que le chargeur de démarrage charge le prochain programme à exécuter? Pourquoi n'est-ce pas une architecture von Neumann? Le processeur s'exécutant à partir de la même mémoire et fonctionnant sur la même interface d'une manière probablement séquentielle (les récupérations d'instructions et les écritures en mémoire ne se produisent pas en même temps)?

Les deux architectures basées sur la mémoire populaires sont plus proches qu'elles ne sont différentes dans les implémentations actuelles IMO.

Où tombe GPU? Ou l'entreprise dans laquelle je travaille, les processeurs réseau (NPU). Lorsque vous avez ces micro-moteurs (processeurs) à usage spécial relativement petits qui s'exécutent à partir d'un RAM de programme de type Harvard (adressable mais vous ne voulez tout simplement pas le faire pour des raisons de performances), opérez sur divers béliers de données ayant chacun leur propre espace d'adressage séparé (processeur séparé instructions pour chaque espace), (les espaces mémoire fonctionnant en parallèle) et à travers ces béliers transmettent des données intermédiaires pour que le prochain calcul soit effectué par le prochain micro-moteur dans un mode filaire alu (eniac)? Comment appelleriez-vous ça? Les npus et gpus sont-ils simplement des architectures harvard modifiées de fantaisie?

old_timer
la source
"à quoi sert une plate-forme harvard où le processeur ne peut pas ... charger le prochain programme à exécuter?" De nombreux processeurs ont un programme fixe qui ne peut pas être modifié par un logiciel exécuté sur ce processeur. Un avantage de cet arrangement est qu'il rend impossible de "brique" le système avec un bogue qui écrit dans la mémoire aléatoire, ou une mauvaise mise à jour logicielle, ou même avec une bonne mise à jour logicielle et une panne de courant intempestive. Il est plus difficile de mettre à jour le logiciel - mais vraiment, combien de fois avez-vous changé le logiciel dans votre micro-ondes?
davidcary
2
Sur le micro-ondes aucun, mais je passe une bonne partie de mon temps à coder pour les microcontrôleurs et à recharger les logiciels plusieurs fois par jour. Étant limité aux petits systèmes rom sans bug, le problème de brique est facilement résolu en utilisant von neumann. Les systèmes que vous décrivez ont peu d'utilité pour le gain de performances des bus séparés, l'autre caractéristique de l'architecture harvard. Donc, mon point de vue était que l'architecture harvard ne s'adapte pas bien sans un moyen de charger des programmes, ce qui la rend quelque peu obsolète.
old_timer
1
Hmm, ils appellent le cortex-m3 harvard quand il ne l'est vraiment pas, pareil avec avr (enfin ils l'appellent un harvard modifié). Je suis sûr qu'il existe des processeurs d'architecture Harvard purs (PIC), et qu'ils étaient plus purs von Neumann, mais la plupart sont des Harvard modifiés ou des von Neumann modifiés (accès aux données et aux instructions en parallèle), ce qui les rend plus identiques que différents. C'est là que je me dirigeais dans ma réponse, le pur harvard et le pur von neumann deviennent rapidement obsolètes. L'affiche veut savoir ce qu'il y a d'autre, enfin presque tout.
old_timer
4

Les architectures von Neumann et Harvard peuvent être utilisées avec des processeurs RISC tels que l'AVR et l'ARM. L'AVR utilise Harvard, tandis que certaines puces ARM utilisent von Neumann et certaines utilisent Harvard.

Leon Heller
la source
-1 pour vous trier ci-dessous les réponses les plus intéressantes.
Oskar Skog