Comment savoir si mon ordinateur est de type Harvard ou von Neumann?

12

Je comprends que la différence entre les deux architectures est la séparation des instructions et des données dans l'architecture Harvard. Mais comment savoir sur quel type de système je suis? Est-il possible d'écrire un programme tel que le programme détermine si le système est von Neumann ou Harvard? Pourrait-il y avoir une autre architecture ou ces architectures sont-elles les seules connues?

Niklas
la source
3
Usages modernes de l'architecture de Harvard . Tout le reste en usage typique est Von Neumann.
Robert Harvey
1
Alors que les systèmes modernes ne sont pas strictement von-Neumann non plus. penser aux GPU et à toutes ces autres choses :)
johannes
1
Il existe d'autres types d'architecture. L'architecture de flux de données est ma préférée. Mais il est peu probable que vous le voyiez dans la nature.
Martin York
1
À moins que vous ne fassiez quelque chose de vraiment très bas, je ne sais pas pourquoi vous auriez besoin de connaître la différence (écrivez-vous du code auto-modifiant?). Même si la plupart des machines modernes sont von-Neumann, le système d'exploitation marque généralement les pages de codes différemment des pages de données pour éviter des modifications accidentelles (malveillantes) du code.
Martin York

Réponses:

13

Votre ordinateur est une machine von Neumann. Tous les ordinateurs à usage général le sont. Les seules exceptions sont les co-processeurs spécialisés comme les GPU. Ce n'est pas que vous ne pouvez pas avoir une machine Harvard (ou toute autre architecture). C'est juste que personne ne les construit, surtout pas à vendre (co-processeurs modulo, bien sûr).

Ross Patterson
la source
3
Cela dépend sûrement de la définition. Si vous remplacez la dichotomie plutôt obsolète par une trichotomie , la plupart des ordinateurs à usage général actuels sont l'architecture Harvard modifiée.
maaartinus
3
De nombreux microcontrôleurs intégrés utilisent des architectures Harvard. Ils exécutent généralement du code à partir d'une sorte ou d'une ROM ou d'une mémoire flash, et peu serait gagné en utilisant un bus commun pour le code et les données.
supercat
6

La plupart des processeurs à usage général actuels utilisent l'architecture Harvard modifiée . Les cœurs de processeur peuvent accéder au programme et aux données indépendamment dans leurs caches L1 séparés. À l'extérieur, il n'y a pas de mémoire de programme et de données séparée (ni les autres niveaux de cache ne sont séparés).

Pourrait-il y avoir une autre architecture ou ces architectures sont-elles les seules connues?

Toutes les autres architectures sont plutôt limitées dans leur utilisation. En raison de l'extrême complexité et des coûts associés au développement de processeurs, je ne pense pas que quiconque essaierait à nouveau sérieusement.

Cependant, alors que les processeurs modernes sont fondamentalement von Neumann, ils intègrent de nombreuses idées comme l' architecture de flux de données en interne.

maaartinus
la source
4

Les architectures Von Neumann et Harvard appartiennent toutes deux au paradigme des flux de contrôle.

Il existe un autre paradigme, le flux de données .

Un exemple courant de calcul de flux de données, bien qu'implémenté sur des ordinateurs de flux de contrôle, est la feuille de calcul (de Visicalc et Multiplan à Excel).

Les réseaux de neurones appartiennent également à cette catégorie.

Les FPGA sont un autre exemple d'architecture de flux de données. Ils sont programmés avec des langages de description matérielle tels que VHDL .

mouviciel
la source
3

L'architecture Harvard n'est généralement utilisée que dans les microprocesseurs intégrés où le programme est stocké dans la mémoire eeprom intégrée. Le seul que vous verrez probablement est un AVR Atmel tel qu'utilisé dans l' Arduino

Martin Beckett
la source
1

Lorsque vous le programmez: Modifiez une région mémoire puis sautez-y et exécutez-la.

Si c'est Havard, vous ne pouvez pas le faire.

Utilisateur
la source
Ou il peut s'agir d'une machine Von Neumann avec un gestionnaire de mémoire W ^ X.