Architecture modifiée de Harvard

Une architecture Harvard modifiée est une variante de l'architecture informatique Harvard qui, contrairement à l'architecture de Harvard pure, permet d'accéder à la mémoire contenant des instructions comme à des données. La plupart des ordinateurs modernes d'architecture Harvard sont en réalité des architectures Harvard modifiées.

Architecture de Harvard (pure)

modifier

L'origine de l'architecture Harvard est le Harvard Mark I. Cet ordinateur utilisait des systèmes de mémoire entièrement séparés pour stocker les instructions et les données. Ainsi à chaque cycle le processeur récupère l'instruction suivante et charge ou stocke des données simultanément[1] et indépendamment.

La séparation physique de la mémoire d'instructions et de la mémoire de données est souvent considérée comme la caractéristique distinctive des ordinateurs modernes à architecture Harvard. La véritable particularité d'une machine Harvard est que la mémoire d'instructions et la mémoire de données occupent des espaces d'adressage différents. Autrement dit, une adresse mémoire n'identifie pas de manière unique un emplacement de stockage (comme c'est le cas dans une machine de von Neumann) ; il est également nécessaire de connaître l'espace mémoire (instruction ou données) auquel appartient l'adresse.

Le fait de disposer d'espaces d'adressage séparés crée certaines difficultés dans la programmation. La plupart des langages ne prennent pas nativement en charge les différents espaces d'adressage (qui devraient donc être lus à l'aide d'instructions différentes).

Architecture de Von Neumann

modifier

Dans une architecture von Neumann, les instructions et les données sont stockées dans le même espace d'adressage. Une architecture de Von Neumann doit attendre d'avoir traiter une donnée avant de pouvoir chargé l'instruction suivante.

Un ordinateur doté d'une architecture de von Neumann présente l'avantage de pouvoir traiter le code peut de la même manière que les données, et vice versa. Cela permet, par exemple :

  • de lire des données depuis un disque dur vers la mémoire puis de les exécuter sous forme de code ;
  • la compilation juste-à-temps pour écrire du code machine dans leur propre mémoire puis l'exécuter ultérieurement ;
  • le code automodificateur, qui permet à un programme de se modifier lui-même.

Du fait de cette spécificité les machines de von Neumann présentent des problèmes de protection de l'espace exécutable, ce qui peut augmenter les risques liés aux logiciels malveillants ou aux défauts logiciels.

Architecture de Harvard modifiée

modifier

Les machines à architecture Harvard stricte occupent une niche de marché. La plupart des processeurs dit « Harvard » utilisent une architecture Harvard modifiée. Ces modifications prennent la forme de différentes manières d'assouplir la séparation stricte entre le code et les données, tout en prenant en charge l'accès concurrent aux données et aux instructions à hautes performances de l'architecture Harvard.

Architecture à cache divisé (ou presque von Neumann)

modifier

La modification la plus courante consiste à créer une hiérarchie de mémoire avec des caches CPU séparés pour les instructions et les données aux niveaux inférieurs de la hiérarchie. Il existe un espace d'adressage unique pour les instructions et les données, conformément au modèle de von Neumann, mais le processeur récupère les instructions dans le cache d'instructions et les données dans le cache de données[réf. nécessaire]. La plupart des développeurs n'ont pas besoin de savoir que le cœur du processeur implémente une architecture Harvard (modifiée), même s'ils bénéficient de ses avantages en termes de vitesse. Seuls les programme qui génèrent et stockent des instructions (compilation juste-à-temps, le code automodificateur – permet à un programme de se modifier lui-même) en mémoire nécessitent la prise en compte de l'architecture matériel et des problèmes tels que la cohérence du cache[pas clair].

Architecture de mémoire d'instructions en tant que données

modifier

Cette autre modification préserve la nature « d'espace d'adressage séparé » d'une machine Harvard, mais ajoute des instructions machine spécifiques pour accéder au contenu de la mémoire d'instructions en tant que données. Comme les données ne sont pas directement exécutables sous forme d'instructions, cette modification n'est pas toujours considéré comme une architecture Harvard « modifié ».

Architecture de données et de mémoire sous forme d'instructions

modifier

Certains processeurs d'architecture Harvard, tels que le Maxim Integrated MAXQ, peuvent exécuter des instructions extraites de n'importe quel segment de mémoire – contrairement au processeur Harvard d'origine, qui ne peut exécuter que des instructions extraites du segment de mémoire programme. Ces processeurs, comme les autres processeurs d'architecture Harvard peuvent lire une instruction une valeur de données simultanément, si elles se trouvent dans des segments de mémoire séparés, puisque le processeur possède (au moins) deux segments de mémoire séparés avec des bus de données indépendants.

Utilisations modernes de l'architecture modifiée de Harvard

modifier

En dehors des applications nécessitant un DSP ou un microcontrôleur sans cache, la plupart des processeurs modernes disposent d'un cache CPU qui répartit les instructions et les données.

Il existe toutefois des processeurs qui implémentent des machines Harvard selon la définition la plus rigoureuse (mémoire programme et mémoire de données occupant des espaces d'adressage distincts), et qui ne sont que légèrement modifiés par l'introduction d'opérations de lecture et/ou d'écriture de la mémoire programme en tant que données :

  • les instructions LPM (Load Program Memory) et SPM (Store Program Memory) de l'Atmel AVR implémentent une telle modification ;
  • des solutions similaires existent dans d'autres microcontrôleurs tels que le « PIC » et le « Z8Encore! » (microcontrôleurs 8 bits basés sur le Zilog Z8), de nombreuses familles de processeurs de signaux numériques tels que les cœurs TI C55x.

Un câblage externe peut également convertir un cœur de processeur Harvard strict en un cœur Harvard modifié, par exemple en combinant simplement les signaux « PSEN# » (Program Store Enable — lecture de l'espace programme) et « RD# » (Read — lecture de l'espace de données externe) via une porte ET sur un microcontrôleur de la famille Intel 8051. On dit alors que le microcontrôleur est « connecté von Neumann », car les espaces d'adressage de données externes et de programme deviennent unifiés.

Voir aussi

modifier
  1. ↑ A Manual of Operation for the Automatic Sequence Controlled Calculator, OXFORD UNIVERSITY PRESS, , 4 p. (lire en ligne)

Références

modifier