Plan du site  
français  English
pixel
pixel

Articles - Étudiants SUPINFO

Chapitre 07 - La construction des mémoires

PLAN DU CHAPITRE

Les mémoires étudiées dans les parties de ce chapitre, peuvent :

  • être lues et écrites et nous avons des RAM (Random Acess Memory). Les RAM sont utiles pour l’utilisation de conservation des instructions et données des programmes utilisateurs. Les RAM sont volatiles et les données ne sont pas conservées dans le long terme.

  • être simplement lues et nous avons des ROM (Read Only Memory). Les ROM sont des espaces de stockages concepteurs (architecte de la machine) qui ne peuvent pas être réécrite par les utilisateurs. Les ROM ne sont pas volatiles et les données sont conservées dans le long terme.

  • être de type ROM et pourtant avoir un comportement de RAM. Il s’agit des EPROM (Erasable Programmable Read Only Memory) dont le contenu peut être effacé par ultra-violets et réécrit avec des appareillages spécifiques. Il s’agit des EEPROM (Electrically Erasable Programmable Read Only Memory) reprogrammable par des appareillages électriques. Dans tous les cas, réécrire des ROM nécessite du matériel approprié parfois très coûteux (de dizaine de milliers d’euros).

OBJECTIF DU CHAPITRE

Une mémoire permet de conserver ou de récupérer une information soit de façon durable, soit de façon temporaire. Celles des ordinateurs stockent uniquement des informations numériques (binaires).

Les mémoires d’autrefois étaient magnétiques, celles d’aujourd’hui sont électroniques. Elles sont maintenant conçues avec des transistors, englobés dans des composants nommés bascules.

Les mémoires sont importantes pour le bon fonctionnement des programmes dans un ordinateur. Les données stockées sont rangées pour un meilleur accès et contrôle. Les accès à une mémoire se font via des contrôles et des adresses et les données sont organisées en mot. Un mot mémoire et à la fois un vocabulaire de manipulation et une norme constructeur pour identifier les déplacements des informations. Les mots sont en octets et donc divisible par 8 bits. Vos ordinateurs sont en 32, 64 voire 128 bits.

LES RAM

La RAM est la mémoire vive de l'ordinateur. Cette mémoire dispose d’un accès aléatoire (ou contrôlé par un système d’exploitation), signifiant que nous pouvons accéder directement en lecture et en écriture à n'importe quel emplacement de cette mémoire. Elle est volatile, elle nécessite d’être alimentée électriquement et elle est utile pour le bon fonctionnement d’un programme.

Figure 1.1. Architecture d’ordinateur

Architecture d’ordinateur

En regardant la figure ci-dessus, nous constatons que la RAM est dépendante d'une architecture d'un ordinateur et est un composant identifiable. Il est relié via des bus pour stoker des informations lors d'un fonctionnement d'un programme.

Notons d’abord, qu’un ordinateur dispose d’un cycle d'horloge et d'une fréquence.

Définition d'un cycle d'horloge : Cette notion représente la séquence de calcul standard qu’un processeur dispose pour effectuer les opérations sur les données.

Définition d'une fréquence d’un ordinateur : Il s’agit d’un ordre de grandeur donnant le nombre de fois que peut se reproduit une exécution à l'identique dans un temps donné. Pour une mémoire, il va s’agir d’une exécution d’aller et retour pour avoir une donnée stockée. La fréquence est en Hertz(Hz), il s’agit d’un nombre de période par seconde. Une période est le temps pour réaliser une fois la demande d’aller-retour.

Example 1.1. Lien entre fréquence et cycles d'horloge

si nous avons une fréquence à 4,2 Ghz, cela veut dire qu’il y a 4 200 000 cycles d'horloge.


La représentation

Une RAM est un boîtier électronique conçue comme une matrice contenant des cases (de valeur 1 ou 0). Elle est découpée selon le principe de ligne pouvant contenir chacune des cases. Nous pouvons accéder à chacune des lignes de cases par une adresse.

Si une RAM dispose de k lignes d'adresse pour accéder aux cases, et comme nous sommes en base 2 alors cela produit 2k lignes d’accès. La capacité de stockage est le nombre de valeurs contenues dans une mémoire. Si chaque ligne contient des mots de n bits (n cases, généralement multiple de 8) alors la capacité de cette mémoire est de 2k x n bits soit (2k octets si n est égal à 8).

Figure 1.2. Schéma block d’une RAM

Schéma block d’une RAM

La mémoire de la figure ci-dessus dispose de :

  • k lignes d'adresse pour accéder aux mots mémoire.

  • n lignes d'entrée pour envoyer l'information à écrire dans le mot mémoire.

  • n lignes de sortie pour recevoir l'information à lire du mot mémoire.

  • une ligne R/W (Read/Write) pour sélectionner l'accès en lecture ou en écriture.

  • une ligne CS (Control Storage) qui permet d'isoler la mémoire des autres circuits (pour ne pas altérer les informations qu'elle stocke).

L'intérieur du boîtier peut être organisé de différentes manières. La première méthode, la plus simple, consiste à placer un décodeur pour :

  • prendre en entrée les k lignes d'adresse.

  • fournir en sortie 2k lignes permettant d'activer simultanément les n points mémoire d'un mot.

Figure 1.3. Schéma d’une mémoire avec accès à un mot binaires via un décodeur

Schéma d’une mémoire avec accès à un mot binaires via un décodeur

Pour permettre de récupérer les données dans la mémoire, nous considérons que chaque case est alors une bascule qui contient un 1 ou un 0. Chaque bascule dispose d’une entrée et d’une sortie. L’entrée est la ligne d’adresse qui permet de solliciter la bascule la sortie peut être directement reliée au bus de données en sortie.

Figure 1.4. Schéma d’une mémoire avec accès à un mot binaires via un décodeur et distinction des bascules

Schéma d’une mémoire avec accès à un mot binaires via un décodeur et distinction des bascules

Cette architecture très simple n'est pas la plus économique en termes de nombre de portes. Nous considérons par exemple une mémoire contenant 512 mots de 4 bits (soient 2048 bits).

Cela signifie que k = 9 car 29 = 512 et n = 4. Pour réaliser le décodeur, il faut 521 portes :

  • 512 portes ET.

  • 9 portes NON.

Une économie de portes importante peut être obtenue en organisant la mémoire en une matrice de 64 lignes et 32 colonnes (2048 = 64 x 32).

Figure 1.5. Schéma d’une mémoire multiplexée

Schéma d’une mémoire multiplexée

Chacune de ces 64 lignes peut être sélectionnée en utilisant 6 bits d'adresse. Comme nous ne voulons que des mots de 4 bits, il faut encore utiliser 4 multiplexeurs, sélectionnant chacun une ligne sur 8. Les 3 derniers bits d'adresse sont affectés à ces multiplexeurs.

Si nous considérons d'autres variantes (pour le même nombre de cases mémoire), nous constatons que le minimum de portes est atteint lorsque le nombre de lignes est égal au nombre de colonnes. Très souvent, les blocs mémoires comportent autant de lignes que de colonnes. Les mêmes lignes d'adresse peuvent alors être utilisées pour identifier successivement la ligne puis la colonne. Cela permet de réduire le nombre de broches de connexion, donc l'encombrement et le coût des circuits.

Voici les comparaisons possibles pour obtenir les 2048 :

Table 1.1. Table de vérité du décodeur

Nombre de lignes Nombre de colonnes Décodeur Multiplexeur Total de portes
512 4 512 0 512
256 8 256 3 268
128 16 128 5 148
64 32 64 9 100
32 64 32 17 100
16 128 16 33 148
8 256 8 65 268

L’inconvénient de la réduction de portes demande à peu près 2 fois plus de temps pour transmettre l'adresse complète. Mais des solutions existent pour pallier à la perte de temps induit. Si nous cherchons à accéder à des informations stockées dans une même ligne, il peut est possible de définir une fois la ligne, puis pour chaque mot, il est possible d’envoyer ensuite que l'adresse de la colonne. Pour répondre à ces nouvelles hypothèses, il faut alors au moins un signal de commande supplémentaire pour indiquer que l'adresse correspond à une ligne ou une colonne. Et dans ce cas, il suffit de n+1 cycles d’adressage pour accéder à n colonnes d’une même ligne. Nous parlons alors d'accès en mode page. Pour multiplexer les adresses lignes et les adresses colonnes, il est nécessaire d'ajouter :

  • 2 signaux :

    1. RAS (Row Address Strobe) qui valide les bits d’adresse de la ligne de la mémoire.

    2. CAS (Column Address Strobe) qui valide les bits d’adresse de la colonne de la mémoire.

  • 2 registres internes pour stocker ces adresses :

    1. RAR (Row Address Register) qui stocke les bits d’adresse de la ligne de la mémoire.

    2. CAR (Column Address Register) qui stocke les bits d’adresse de la colonne de la mémoire.

Figure 1.6. Schéma d’une mémoire multiplexée contrôlée

Schéma d’une mémoire multiplexée contrôlée

Les demandes de lectures et/ou d’écriture portant sur des données d’une même colonne utilisent le mode page. Dans ce cas RAS est à 1 et CAS change pour passer de colonne en colonne.

Le fonctionnement

Nous avons 2 paramètres pour caractériser la vitesse d'une mémoire :

  • le temps d'accès (ta) représente le temps qui sépare une demande de lecture de l'obtention de l'information.

  • le temps de cycle (tc) correspond à l'intervalle de temps minimum qui sépare 2 demandes successives en lecture ou écriture.

La fréquence maximum de fonctionnement est égale à l'inverse du temps de cycle. Un autre paramètre est la bande passante qui caractérise le débit maximum en bits par seconde. En accès aléatoire cette bande passante est égale à B = n/tc où n est le nombre de bits transférés par cycle. Mais pour des données consécutives, certaines architectures (entrelacement, etc.) et certains modes de lecture (rafales, etc.) peuvent permettre d'approcher la limite Bmax = n/ ta.

Le cycle de lecture d’une RAM comporte les actions suivantes :

  • établir l'adresse.

  • afficher la fonction de lecture.

  • sélectionner le ou les boîtiers nécessaires.

  • après un certain délai, l'information apparaît sur la sortie qui passe en basse impédance. L'information reste présente jusqu'à la fin du cycle.

Nous pouvons établir les chronogrammes d’évolution. Il s'agit uniquement de chronogrammes de principe, puisque la polarité, la durée de stabilité de chaque signal, ainsi que les retards relatifs (ou phases) entre signaux sont précisés directement par le constructeur.

Le début de la requête est défini par l’établissement de l’adresse. C’est par rapport à cet instant que sont mesurés temps d’accès ta et temps de cycle tc.

Figure 1.7. Cycle de lecture d’une RAM

Cycle de lecture d’une RAM

Figure 1.8. Cycle de lecture d’une RAM avec CAS et RAS

Cycle de lecture d’une RAM avec CAS et RAS

Nous constatons sur la lecture du chronogramme de la figure 182 que lorsque les adresses de ligne et de colonne sont multiplexées, celles-ci doivent être stabilisées avant les signaux de chargement RAS et CAS respectivement (la ligne R/W à 1 indique une fonction de lecture).

La procédure du cycle d'écriture consiste à :

  • établir l'adresse.

  • sélectionner le ou les boîtiers nécessaires.

  • établir la donnée sur l'entrée.

  • établir une impulsion d'écriture.

L'adresse doit être stabilisée avant la sélection et les données doivent être stabilisées avant le signal de chargement.

Le cycle lecture – modification - écriture permet de lire une donnée à une certaine adresse, de modifier la donnée et de l'inscrire à la même adresse. Le même résultat pourrait être obtenu avec 2 cycles successifs de lecture et d'écriture, mais plus lentement car il faut alors présenter l'adresse 2 fois. Il faut que les lignes d'entrée et de sortie soient distinctes. La procédure du cycle lecture – modification – écriture consiste à :

  • établir l'adresse.

  • sélectionner le boîtier correspondant.

  • afficher la fonction lecture.

  • la donnée apparaît sur la sortie au bout du temps d'accès.

  • le système modifie la donnée qu'il applique sur l'entrée.

  • établir une impulsion d'écriture.

Au cours de l'exécution d'un programme, l'accès aux informations (instructions ou données) se fait plus souvent à des adresses consécutives qu'à des adresses isolées (par exemple lors du parcours d’un tableau). Il faut donc un mode dit page pour accéder plus rapidement aux données.

Le mode page concerne les mémoires avec multiplexage des adresses ligne et colonne. Il permet alors d'améliorer les temps d'accès. Lorsque l'adresse de la ligne (ou page) reste identique, il n'y a pas lieu de la présenter à nouveau. Dans un cycle en mode page, l'adresse de ligne est chargée une fois, chaque accès est ensuite défini par l'adresse de colonne.

Le temps du premier accès est équivalent à celui d'un accès aléatoire. Il est appelé latence. Par contre, les accès suivants sont plus rapides.

Figure 1.9. Séquence de 3 accès comprenant une écriture intercalée entre 2 lectures

Séquence de 3 accès comprenant une écriture intercalée entre 2 lectures

Un autre mode permet de réduire encore plus le temps nécessaire à l’adressage des colonnes. Il s'agit du mode d'accès en rafale (burst) qui concerne plusieurs colonnes consécutives. Son fonctionnement s’appuie sur un compteur interne qui permet d'éviter le temps nécessaire à l'établissement des signaux d'adresse et à leur chargement. Il suffit de préciser initialement l'adresse de départ et le nombre de colonnes.

Si votre ordinateur ne dispose de pas assez de mémoire vive (espace RAM), alors le processeur va utiliser une partie de son disque dur comme mémoire vive. C’est un mécanisme dit de SWAP induit par le système d’exploitation. Avec un accès beaucoup plus lent, le processeur pourra continuer à exécuter vos programmes. Cependant pour rendre une utilisation acceptable (rapide selon utilisation et programmes) et constante (sans constat de ralentissement excessif), il faudra envisager, si l’architecture le permet, d’augmenter la capacité de la mémoire vive ou d’exécuter moins de programmes en même temps.

Dans la pratique, nous distinguons 2 types de fonctionnement pour les mémoires :

  • FIFO (First-In First-Out) : Il s’agit par exemple d’un registre à décalage ou les mots mémoires sont accessibles dans l’ordre de leur écriture.

  • LIFO (Last-In First-Out) : Il s’agit de la stack (pile) manipulée avec les fonctions push et pop pour placer et récupérer en sommet de pile la donnée. Attention le mot pile est souvent utilisé (par exemple lors de description de fonctionnement de système) mais parfois elle est plus assimilable à des listes dans sa programmation bien que les données placées et retirées respectent les constructions en push et pop.

La composition de blocs de RAM

Les techniques d'intégration ne permettent pas d'obtenir des boîtiers ayant des capacités ou des formats suffisants pour toutes les applications. Il est alors nécessaire d'associer plusieurs boîtiers pour augmenter la longueur des mots ou le nombre de mots. D’autre part, l'association de plusieurs blocs peut permettre d'améliorer les performances temporelles de la mémoire en faisant fonctionner plusieurs blocs en parallèle. Nous pouvons associer 2 boîtiers de 2k mots de n bits pour obtenir un bloc de 2k mots de 2 x n bits. L'adressage doit être appliqué simultanément aux 2 circuits, l'un fournissant les n bits de bas poids et l'autre les n bits de haut poids.

Figure 1.10. Composition de RAM

Composition de RAM

Nous pouvons également réaliser, par exemple, un bloc de 4 x 2k mots de n bits à l'aide de 4 boîtiers de 2k x n bits. Il nous faut k + 2 lignes d'adresse. Les k bits de poids faible de l'adresse sont appliqués simultanément sur les 4 boîtiers. Les 2 bits de poids fort sont dirigés vers un décodeur 2 vers 4. Chacune de ces 4 lignes permet de sélectionner un boîtier (entrée de validation du boîtier : CS) : un seul boîtier est alors connecté aux lignes de sortie.

Figure 1.11. Composition de RAM avec décodeur

Composition de RAM avec décodeur

Suivant la figure ci-dessus, une mémoire entrelacée à n voies est constituée de n blocs. Le bloc numéro i appartenant à l'intervalle [0, n−1] contient toutes les cellules dont les adresses sont égales à i modulo n afin que 2 mots ayant des adresses consécutives soient rangés dans 2 blocs différents. Cette organisation permet de réduire le temps d'accès à la mémoire lors de la lecture ou de l'écriture par groupe de mots.

Figure 1.12. Composition de mémoire 2 * 4 * 64Ko et 2 * 8 * 1Mo

Composition de mémoire 2 * 4 * 64Ko et 2 * 8 * 1Mo

Il existe 2 types de RAM, les RAM statiques nommées SRAM (Static RAM) utilisées pour les mémoires caches de l’ordinateur et les RAM dynamiques nommées DRAM (Dynamic RAM) utilisées pour la mémoire principale d’un ordinateur. Le choix se porte sur les différences de rapidité, de capacité et de coût.

Les DRAM et SDRAM

La mémoire DRAM est principalement utilisée pour construire les barrettes placées dans les bancs mémoire de la carte mère. Elle est alors utilisée comme éléments de la mémoire principale (centrale) des ordinateurs. La petite taille de la DRAM, dont les points mémoires sont constitués d'un transistor et d'un condensateur, permet une grande intégration. Elle est qualifiée de dynamique car le circuit mémoire comporte un mécanisme de rafraîchissement pour maintenir l'intégrité de l'information qui est stockée.

Figure 1.13. Circuit électrique d’une DRAM

Circuit électrique d’une DRAM

A partir de la figure 186, la ligne Select est la ligne de commande (nommée ligne de contrôle ou ligne d’adresse). Si la valeur est à 0 alors le condensateur est isolé et il n’y a pas de décharge (la charge est gardée). D (Data) est la ligne pour les données, elle permet aussi bien la lecture que l’écriture. Si la ligne Select est à 1, alors il y a détection des valeurs, soit la lecture est faite en détectant la charge, soit l’écriture est faite par application d’une valeur sur D.

Dans son fonctionnement, les lignes mémoire d’une DRAM doivent être mises à jour régulièrement, nous parlons alors de rafraîchissement de de la mémoire. Il est possible d’avoir une programmation temporelle pour les rafraichissements par exemple chaque x millisecondes faire le rafraîchissement, nous les appelons des cycles de rafraichissement. Une lecture ou une écriture rafraichit les adresses d’une ligne également.

Pour faire un rafraichissement nous avons:

  • CBR (CAS Before RAS refresh) : Le cycle (un compteur sur le nombre de ligne à rafraichir) utilise CAS à 1 puis RAS à 1

  • ROR (RAS Only Refresh) : Le cycle (un compteur sur le nombre de ligne à rafraichir) utilise RAS à 1, CAS à 0.

Pour les cycles de rafraichissement nous trouvons :

  • burst refresh : Les lectures et écritures sont suspendues et les lignes mémoires sont rafraichies.

  • distributed refresh : Une mise en place circulaire de rafraîchissement de lignes mémoires est programmée entre les cycles de lectures et d’écritures

Nous avons deux types de RAM dynamiques, les DRAM et les SDRAM (Synchronous Dynamic Random Acces Memory). Leur différent est la communication avec le micro-processeur. La DRAM a une communication asynchrone tandis que la SDRAM a une communication synchrone.

Dans le mode asynchrone, le cycle du micro-processeur est d’abord une lecture de la donnée en mémoire, puis récupération de l’adresse, puis attente de la donnée en fonction de l’adresse. Il faut plusieurs cycles d’horloge pour récupérer une donnée stable. Dans un composant asynchrone, le cycle d’horloge est provoqué par le signal CAS (par incrémentation de son compteur). Il est également possible de faire appel à un signal d'horloge directement. Il faut noter qu’à chaque demande en direction de la mémoire le micro-processeur reste inactif.

Un mode permet de passer d’une mémoire asynchrone à une mémoire synchronisée. Nous obtenons alors une mémoire à accès synchronisés appelée SDRAM. Cette solution a pour avantage de simplifier la gestion de la mémoire. Ce qui permet un léger gain de vitesse, mais aussi allège la conception du contrôleur. Il est ainsi possible d'avoir un accès à chaque cycle d'horloge (non plusieurs cycles pour un accès). Et donc le micro-processeur peut demander une nouvelle lecture ou écriture sans avoir fini la demande précédente. Une structure de séquence est alors mise en place pour traiter toutes les demandes comparable à un pipeline.

Par contre le temps d'accès pour une seule donnée n'est pas inférieur à celui d'une mémoire asynchrone. Il peut même être plus important.

Pour parvenir à obtenir une fréquence intéressante les fabricants mettent également en œuvre d'autres techniques. Par exemple, à l'intérieur d'un même circuit la mémoire est organisée en 2 blocs (ou plus) qui peuvent être entrelacés. Cela permet l'ouverture simultanée de 2 pages. Il est alors possible de passer d'une page à une autre sans ralentir la vitesse d'accès.

Figure 1.14. Représentation d’une SDRAM

Représentation d’une SDRAM

Le temps d'accès à ce type de mémoire est rapide, c’est l’une des différences importantes avec les autres mémoires de stockage. La RAM est située proche du processeur et sert de mémoire rapide pour stocker les programmes actifs ainsi que les données et les résultats intermédiaires dont le processeur a besoin.

Apparue en 1996, la SDRAM est pilotée par des signaux. La SDRAM synchronise ses entrées/sorties avec l'horloge système, ce qui accélère considérablement les échanges. Elle n’impose aucun état d’attente en lecture comme écriture pour communiquer avec le microprocesseur. Elle fonctionne à 66, 100 et 133MHz, (PC100 et PC133) et s'il vaut mieux éviter le mélange de barrettes différentes, sur les PC récents, les PC anciens s'accommodent de barrettes plus rapides. Cependant un ordinateur ne pourra pas utiliser de la SDRAM s'il n'a pas été conçu dans ce but, il doit avoir un chipset adapté. Une mémoire SDRAM à 133 Mhz peut débiter un maximum de 133 millions d´informations par seconde.

Différentes types de SDRAM ont été mises au point :

  • SDR SDRAM (Single Data Rate SDRAM), une demande par cycle d’horloge.

  • DDR SDRAM II, III, IV … (Double Data Rate SDRAM), deux fois plus de demandes qu’une SDR.

Apparue en 1999, la DDR SDRAM est une évolution de la SDRAM qui exploite les fronts montants et descendant de l'horloge pour doubler son débit. Elle transfère 2 bits en un cycle d'horloge. A fréquence égale, la DDR fait circuler 2 fois plus d'informations. Une mémoire DDR cadencée à 133 Mhz peut débiter 266 millions d'informations par seconde. La mémoire qui fonctionne en bus 100 MHz est dite PC 1600 (parfois PC 200) celle qui utilise un bus à 133 MHz est dénommée PC 2100 (parfois PC 266) et celle qui utilise un bus à 166 MHz est dénommée PC 2700.

Apparue en 2003, La DDR II SDRAM est une évolution de la DDR SDRAM. Elle en transfère 4 bits en utilisant un double canal en un cycle d'horloge. Il fallait une nouvelle carte mère pour ce nouveau type de mémoire qui utilise une tension électrique plus faible. Il fallait aussi respecter la parité au niveau des barrettes.

Figure 1.15. DDRII

DDRII

Cette mémoire se justifie avec les nouveaux micro-processeurs utilisant un FSB (Front Side Bus ou bus système qui relie les principaux éléments d'une carte mère) de plus en plus rapide. Ainsi les derniers Pentium IV disposant d'un FSB de 533 MHz ont un débit théorique de 4264 Mo/s (533 x 8). Les nouvelles architectures utilisent des méthodes de parallélisassions pour accélérer les accès.

Apparue en 2003, la DDRIII SDRAM permet une économie de consommation de 40% par rapport à la DDRII. Elle transfère 8 bits en un cycle d'horloge.

Figure 1.16. DDRIII

DDRIII

En Avril 2011, le coréen Hynix fabrique un module de 2 Go de DDRIV SDRAM pour une fréquence record de 2,4 GHz. Le module de mémoire à double rangée de connexions DIMM (Dual Inline Memory Module) est un circuit imprimé supportant des puces SDRAM, DDR.

Figure 1.17. DDRIV

DDRIV

Apparue en 2008, les cartes graphiques pour avoir une autonomie de mémoire utiliseront de la GDDRV (Graphics Double Data Rate 5).

Pour caractériser la vitesse d’accès d’une mémoire, nous la mesurons en fonction des accès et récupérations des données. Nous distinguons 2 notions, sa latence et son débit :

  • une latence est le temps passé entre une demande de données (ensemble ordonné) et l’arrivée de la première donnée.

  • un débit est le nombre de données transmis après la latence.

Nous constatons qu’il est possible d’avoir une différence de vitesse entre les micro-processeurs et les mémoires. Les SDRAM augmentent le débit mais réduisent peu la latence. Pour éviter de perdre du temps, un dispositif de mémoire cache est mis en place. Placées entre la mémoire centrale et proche du micro-processeur (placées entre registre et mémoire), les mémoires caches vont permettre de garantir les temps d’accès.

Les SRAM pour mémoire cache

Les SRAM sont qualifiées de statiques car, lorsque l'information est stockée, elle n'est pas altérée au cours du temps. Elle est assez rapide mais plus chère que la DRAM car les points mémoire sont des bascules D ou RS. Elles sont principalement utilisées comme mémoire cache dans les ordinateurs ou dans les systèmes embarqués (pour sa faible consommation). Volatiles comme les DRAM, les SRAM ne peuvent pas se passer d’alimentation.

Figure 1.18. SRAM

SRAM

Les SRAM rapides et moins consommatrice sont principalement utilisées comme mémoire cache dans les ordinateurs ou dans les systèmes embarqués. Les mémoires cache contiennent les copies des données utiles au programme en cours d’exécution. Un premier principe de fonctionnement et de ne pas déposer une donnée déjà présente dans la mémoire cache.

Nous allons décrire le principe de fonctionnement d’une mémoire cache pour illustrer l’utilisation de ce type de RAM. Jusqu’au 80286, les ordinateurs fonctionnaient sans mémoire de cache car la vitesse d’accès aux informations ne constituait pas un facteur limitant de la performance de la machine. En effet, à cette époque les processeurs fonctionnaient à 12 Mhz, ils avaient une vitesse de fonctionnement en rapport avec la vitesse de la mémoire centrale de l’époque. A partir du 80386, la différence de vitesse entre la mémoire centrale et le processeur a commencé à se creuser. Il devenait nécessaire d’intercaler une petite mémoire, appelée cache, dont les performances étaient en rapport avec celle du processeur afin de ne pas trop dégrader les performances globale de l’ordinateur.

Figure 1.19. Représentation d’accès mémoire cache entre processeur et mémoire centrale

Représentation d’accès mémoire cache entre processeur et mémoire centrale

Nous voyons dans la figure ci-dessus que la mémoire cache est composée de lignes de données. Pour accéder aux lignes, le cache dispose d’adresse, souvent nommées tag donnant la correspondance avec l’adresse stockée en mémoire centrale. Le programmes d’accès dépend du processeur, si i l y a une correspondance entre la donnée demandée et un tag, alors il y a récupération de la donnée, sinon il faut charger en cache la donnée en provenance de la mémoire centrale. Dans le cas où il faut charger une donnée en cache, nous parlons de défaut de cache.

Une mémoire cache permet de garantir les temps d’exécution et la non rupture de données pour le programmes en cours d’utilisation. Le fonctionnement de la mémoire cache (antémémoire) repose sur 2 principes :

  • le principe de localité temporelle des données.

  • le principe de localité spatiale des données.

Ces 2 principes appliqués au fonctionnement des mémoires caches ont pour conséquence que les données ne sont pas copiées de façon isolée depuis la mémoire centrale. Autrement dit, des blocs de données sont copiés de la mémoire centrale vers la mémoire cache, il faut mettre en place une stratégie de correspondance entre les blocs de la mémoire cache et les blocs de la mémoire centrale.

Figure 1.20. Représentation de localité entre cache et mémoire centrale

Représentation de localité entre cache et mémoire centrale

Il existe différentes stratégies de correspondances entre les positions (les lignes) dans les caches et les blocs dans la mémoire centrale :

  • Direct mapped où chaque ligne de cache correspond à un bloc déterminé de la mémoire.

  • Fully associative où chaque ligne de cache peut gérer n´importe quel bloc de la RAM.

  • N-way associative, qui est un compromis des 2 autres méthodes. Nous regroupons N lignes de cache pour les affecter à un bloc déterminé.

[Note]

Nom de l’algorithme : Direct mapped

Donnée d’entrée : Une mémoire

Donnée produite : Une mémoire cache

But : Transférer des données d’un mémoire vers une mémoire cache

En Direct mapped, la mémoire est divisée (logiquement) en N sections. Chaque section, identifiable par une clé, est partagée en L blocs. A chaque bloc de mémoire nous faisons correspondre 1 seule ligne dans la mémoire cache. La position de la ligne sera toujours égale à la position relative du bloc dans la section. Ainsi, nième ligne d'un bloc X se retrouvera toujours dans la nième ligne du cache. Cette méthode est simple et économique mais présente le défaut de la liaison rigide entre la position du bloc de mémoire dans la section et la position (adresse) de la ligne qui lui correspond dans le cache (qui sera toujours la même).

Figure 1.21. Programme du Direct mapped

Programme du Direct mapped

Soit une mémoire centrale partagée en blocs de 4 octets et des adresses de 24 bits pour localiser un octet. Nous décomposons l'adresse en 3 parties, pour créer la correspondance avec un octet du cache :

  • C (8 bits) correspond au numéro de section de mémoire et constituera l'étiquette rattachée à chaque ligne du cache.

  • L (14 bits) identifie la ligne du cache, qui occupe une position identique à la position relative du bloc de 4 octets dans la section.

  • M (2 bits) permet de localiser l'octet dans la ligne.

Figure 1.22. Direct Mapped entre Mémoire et cache

Direct Mapped entre Mémoire et cache

La méthode en Direct mapped est simple à mettre en œuvre mais elle est très contraignante. Car toutes les lignes de cache ne peuvent pas être utilisées pour stocker n’importe quel bloc mémoire. Si un programme utilise en parallèle deux parties de la mémoire devant se placer dans la même ligne de cache, alors il y aura de nombreux chargements et changements de données dans le cache.

[Note]

Nom de l’algorithme : Fully associative

Donnée d’entrée : Une mémoire

Donnée produite : Une mémoire cache

But : Transférer des données d’un mémoire vers une mémoire cache.

La correspondance associative lève la restriction sur les adresses des blocs de mémoire en cache mais elle nécessite l’utilisation de circuits électroniques plus complexe.

Figure 1.23. Programme du Fully associate

Programme du Fully associate

Nous reprenons l’exemple de la mémoire centrale partagée en blocs de 4 octets et des adresses de 24 bits pour localiser un octet. L'adresse principale est en 2 parties :

  • C (22 bits) correspond à l’adresse du bloc de 4 octets et constituera l'étiquette rattachée à chaque ligne du cache.

  • M (2 bits) permet de localiser l'octet dans la ligne.

Figure 1.24. Fully associate entre Mémoire et cache

Fully associate entre Mémoire et cache

[Note]

Nom de l’algorithme : N-way associative

Donnée d’entrée : Une mémoire

Donnée produite : Une mémoire cache

But : Transférer des données d’un mémoire vers une mémoire cache.

L’algorithme de N-way associate est un compromis entre la correspondance directe et la correspondance associative. Comme pour la correspondance directe, la mémoire principale est décomposée en sections et chaque section en blocs de K mots (ou octets). Le bloc qui commence à l'adresse P de la section est copié dans la ligne P du cache à laquelle nous ajoutons une clé égale au numéro de la section. La différence intervient dans le fait qu'il y a plusieurs mémoires cache identiques et qu’il y a plusieurs possibilités équivalentes de placer le bloc de mémoire dans une ligne du cache.

Les lignes qui occupent la même position dans tous les caches forment l'ensemble. Pour trouver si une adresse de mémoire est dans le cache, il faut comparer les clés de chaque ligne de l'ensemble : c'est ici qu'intervient la recherche associative. Ainsi, la clé peut être courte et nous aboutissons à la réduction du nombre de circuits nécessaires à la recherche associative, tout en laissant une certaine souplesse au mécanisme de mise en cache d'une ligne : un ensemble étant composé de plusieurs lignes (ou voies), la mise en cache d'une adresse mémoire peut avoir lieu dans n'importe laquelle des lignes du même ensemble.

Figure 1.25. Programme du N-way associate

Programme du N-way associate

Nous reprenons l’exemple de la mémoire centrale partagée en blocs de 4 octets et des adresses de 24 bits pour localiser un octet. Nous utilisons cette fois-ci un cache à 2 voix. Nous décomposons l'adresse en 3 parties, pour créer la correspondance avec un octet d’un cache :

  • C (9 bits) correspond à l’adresse du bloc de 4 octets et constituera l'étiquette rattachée à chaque ligne du cache.

  • L (13 bits) est l’adresse dans un bloc.

  • M (2 bits) permet de localiser l'octet dans la ligne.

Figure 1.26. N-way associate entre Mémoire et cache

N-way associate entre Mémoire et cache

Nous avons 3 stratégies pour l’écriture :

  • Write through : La donnée est écrite en mémoire centrale juste après avoir été écrite dans le cache.

  • Write back : La donnée est écrite en mémoire centrale lorsqu’elle est expulsée du cache.

  • Posted Write through : La donnée est écrite en mémoire centrale juste après avoir été écrite dans le cache et dès que le bus est libre.

Les ordinateurs utilisent plusieurs niveaux de cache (entre 3 et 4 niveaux pour les plus performants) selon une hiérarchie établie entre les caches. Le cache de niveau 1 (Level 1 – L1) petit et rapide est le plus proche du micro-processeur (L1 est même maintenant directement intégré au processeur). Le cache L2 (Level 2) est plus grande que L1 et moins rapide (L2 fait partie du boitier du micro-processeur). Le cache L3 (Level 3) est plus grande que L2 et moins rapide (L3 est une mémoire cache qui peut se trouver sur la carte mère) … . Les caches (L1, L2, L3 et L4) peuvent fonctionner selon 2 manières :

  • Inclusif : méthode ancienne mais courante utilisée sur les microprocesseurs des ordinateurs individuels (sauf Duron et Thunderbird d´AMD). Le cache inclusif consiste à ne pas contrôler la redondance des informations entre les caches. Les caches ont des copies entre eux. Il faut que le cache L1 soit plus petit que le cache L2 et ainsi de suite pour tous les caches….

    Taille cache = Taille (L1+L2+L3+L4) - Taille (L1+L2+L3).

  • Exclusif : Apparu en 2000 avec les Duron et Thunderbird d´AMD. Le cache exclusif consiste à contrôler que les informations du cache L1 ne soient pas dupliquées dans le cache L2… . Les caches fonctionnent comme s´il n´y avait qu´un seul cache. La méthode exclusive résout la redondance des informations :

    Taille cache = Taille L1 + Taille L2 + …..

LES ROM

La ROM peut être vue comme une boîte contenant 2k cases pouvant contenir chacune un mot de n bits. La capacité de cette ROM est de 2k mots x n bits (soit 2k octets si n est égal à 8). Cette boite dispose de k lignes d'adresse pour désigner la case mémoire qui sera lue.

Figure 1.27. Schéma bloc d’une ROM

Schéma bloc d’une ROM

Pour construire une ROM, il est nécessaire de produire un schéma électrique qui sera transformé en masque pour le procédé de fabrication. Cette technique est employée lorsque nous construisons des ROM à grande échelle.

Une ROM dispose de:

  • n lignes de sortie pour recevoir l'information à lire de la case mémoire.

  • une ligne CS qui permet d'isoler la mémoire des autres circuits (pour ne pas altérer les informations qu'elle stocke).

  • un encodeur de 2k entrées et n sorties.

  • un décodeur pour activer une de ces 2k entrées.

Figure 1.28. Schéma bloc d’un Décodeur Encodeur pour ROM

Schéma bloc d’un Décodeur Encodeur pour ROM

Un encodeur peut être obtenu avec des diodes :

Figure 1.29. Schéma de connexion

Schéma de connexion

  • Pour former un 1, nous relions une ligne d'entrée avec une ligne de sortie de l'encodeur en utilisant une diode.

  • Pour former un 0, nous ne mettons pas de diode (les 2 lignes sont indépendantes).

Elle ne possède ni ligne d’entrée, ni ligne R/W car nous ne pouvons que lire des informations. Nous supposons avoir 2 entrées X1 et X2 pour faire le codage de l’accès des données de la ROM. Nous supposons 4 sorties Y3, Y2, Y1 et Y0.

Table 1.2. Table de codage

X1 X2 Y3 Y2 Y1 Y0
0 0 1 0 1 0
0 1 1 1 0 1
1 0 0 0 1 0
1 1 1 1 1 1

Une ROM peut être vue de 2 manières :

  • les m pattes en entrée permettent de sélectionner une case mémoire de n bits qui vont contrôler l’état des n bits de sortie.

  • l’état de chaque patte de sortie peut être vu comme la résultante d’une fonction booléenne des m entrées.

Avec la table de ci=odage ci-dessus et les connexions de la figure d'avant la table, nous produisons une ROM :

Figure 1.30. Schéma électrique d’une ROM

Schéma électrique d’une ROM

En conséquence, une ROM permet à la fois de conserver des informations binaires (les instructions de bases d’un PC par exemple) et de fonctionner comme un CLP (Circuit Logique Programmable).

LES PROM

Le procédé de fabrication des ROM est trop coûteux, car il faut faire des architectures spécifiques et produire une empreinte pour chaque différente ROM. Il est donc possible de faire un modèle plus générique et ainsi produire des PROM (Programmable ROM).

Un des procédés de fabrication des PROM utilise la méthode des fusibles :

  • pour chaque bit ou nœud de la matrice, il existe une diode et un fusible.

  • initialement les fusibles sont conducteurs, les bits sont tous à 1.

  • la définition des 0 se fait à l'aide d'un programmateur de PROM qui, en fonction de la table de vérité, détruit les fusibles en indiquant l'adresse du mot contenant le bit à modifier et en injectant un courant sur la sortie correspondante.

Figure 1.31. Schéma électrique d’une PROM

Schéma électrique d’une PROM

Cette méthode de programmation est irréversible (la construction peut se faire une fois seulement avec un équipement spécial) et elle présente en outre quelques risques pour l'ensemble du circuit. Il existe une autre technique dit des anti-fusibles :

  • chaque nœud comporte une diode et un diélectrique.

  • aucune connexion n'est initialement programmée.

  • nous créons un contact à l'intersection de chaque ligne et de chaque colonne en détruisant un diélectrique.

La technique précédente est adaptée pour construire des séries de taille moyenne afin de tester un circuit avant sa fabrication à grande échelle sous forme de ROM. Et cette technique est irréversible (lorsque les fusible ou les diélectriques sont détruits, il n’est plus possible de revenir en arrière pour corriger.

LES EPROM et EEPROM

Il y a des catégories de PROM (plus cher à construire) mais avec les possibilités de les multi-programmer, il s’agit :

  • des EPROM (Erasable Programmable Read Only Memory).

  • des EEPROM (Electrically Erasable Programmable Read Only Memory).

  • des UVEPROM (Ultra Violet Erasable Programmable Read Only Memory).

Pour ces PROM, chaque nœud contient un transistor à effet de champ à structure MOS (Métal-Oxyde-Semi-conducteur) avec une grille supplémentaire flottante. Dans un transistor MOS classique la grille est utilisée pour induire un canal entre la source et le drain.

Figure 1.32. PROM et coupe de MOS

PROM et coupe de MOS

Dans l'exemple de la figure ci-dessus, il se produit les phénomènes suivants dans le MOS :

  • une tension positive de la grille va attirer des électrons et repousser des trous.

  • une partie des électrons attirés se recombinent avec des trous.

  • une inversion de population se crée induisant un canal n entre les implants de la source et du drain (le transistor devient passant).

Pour programmer un tel nœud, nous faisons alors circuler un courant intense entre la source et le drain. Certains électrons acquièrent une énergie leur permettant d'atteindre la grille flottante. Ils y sont alors piégés. Lorsque la charge piégée est suffisante elle masque le champ électrique induit par la grille et le transistor est bloqué. Le courant de fuite étant très faible cette charge peut se conserver très longtemps.

La programmation est réversible, il suffit de décharger cette grille flottante. Une première solution consiste à exposer le circuit à un rayonnement ultraviolet pendant quelques dizaines de minutes.

Ces circuits sont équipés d'une fenêtre en quartz et encapsulés dans un boîtier en céramique pour résister à l'échauffement. Cette mise en œuvre augmente le prix des composants, mais cela n'est nécessaire que pour le développement.

Pour la production, le même circuit existe sans fenêtre et en boîtier plastique. Cette technique correspond aux mémoires mortes effaçables à savoir les EPROM.

Il est également possible de décharger la grille flottante par effet tunnel en appliquant des tensions suffisamment élevées entre la grille, la source et le drain. Cet effacement est plus rapide et n'impose pas de retirer le circuit du système dans lequel il est installé. Cela correspond à la famille des mémoires mortes programmables et effaçables électriquement à savoir les EEPROM.

La différence entre les EEPROM et les mémoires vives réside dans la vitesse d'écriture. Le cycle d'écriture d'une EEPROM est environ 1000 fois plus long que celui d'une RAM. Par contre les temps d'accès en lecture des mémoires RAM, ROM, PROM, EPROM et EEPROM sont comparables.

La mémoire flash, CF (CompactFlash), SM (SmartMedia cards), MMC (MultiMedia cards), SD (Secure Digital), MSD (Micro SD), MS (MemoryStick, MemoryStick Micro M2), xD Card, Transflash, … est un type d’EEPROM. Cette mémoire permet de modifier plusieurs espaces mémoires en une seule opération. Il existe 2 types de mémoire flash selon le type de portes utilisées pour construire les nœuds :

  • la flash NOR inventé par Intel en 1988 (un peu lente mais les écritures sont garanties à 100 %).

  • la flash NAND inventée par Toshiba en 1989 (un peu plus rapide mais existence d’un taux d’erreur sur les écritures).

Les accès d’une mémoire flash se font par :

  • lecture comme une RAM statique.

  • effacement : la mémoire flash est effacée (remise des bits à 1) pour être écrite.

  • écriture : les bits sont toujours à 1, l’obtention du 0 de fait en appliquant une tension. Une fois le 0 obtenu la conservation de la valeur est maintenue

Il est possible d'avoir des mémoires flash pour remplacer les disques durs, mais attention aux dégagements thermiques lors des modifications et transferts de données. L’avantage des mémoires flash est la possibilité de faire des effacements groupés (par secteur, en totalité) et non pas bit par bit.

La catégorie des UVEPROM ont des procédés d’écriture par ultra-violets cela nécessite des équipements spéciaux pour le utiliser.

LES CIRCUITS LOGIQUES PROGRAMMABLES

Pour utiliser une ROM comme un CLP, il faut modifier sa structure interne. Il faut utiliser des portes ET, OU et NON de manière à ce qu’une sortie soit une combinaison logique des m entrées.

Figure 1.33. Composant mémoire CLP

Composant mémoire CLP

La programmation s’effectue par claquage des fusibles, dans l’exemple de la figure 207, nous décidons d’avoir : O = I1 + /I1.I2.

Figure 1.34. Composant mémoire CLP

Composant mémoire CLP

Pour construire des schémas réduits (et ainsi minimiser le nombre de traits), une nouvelle représentation graphique a été adoptée pour dessiner les circuits logiques programmables. Par exemple une porte ET à 3 entrées se représentera de la manière suivante :

Figure 1.35. Représentation d’une porte ET 3 entrées

Représentation d’une porte ET 3 entrées

Figure 1.36. Représentation d’une mémoire CLP 4 bits

Représentation d’une mémoire CLP 4 bits

La figure ci-dessus donne une représentation symbolique simplifiée d'une PROM de 16 mots de 4 bits. Les portes ET reçoivent 4 variables directes ou inverses. Les connections de gauche, correspondant au décodeur et représentées par des disques noirs, sont figées. Les croix à droite représentent des connexions programmables. Les portes OU peuvent recevoir jusqu'à 16 variables. Chaque sortie d'une PROM est ainsi représentée comme une somme canonique de produits.

Les mémoires mortes programmables furent les premiers membres de la famille de composants des CLP ou PLD (Programmable Logique Device). Cette famille est aujourd'hui très nombreuse et très variée, comme l'illustre la multitude d'acronymes :

  • PAL (Programmable Array Logic) est un PLD où la matrice des connexions OU est figée et la matrice des connexions ET est programmable.

Figure 1.37. Représentation d’une mémoire PAL

Représentation d’une mémoire PAL

  • PLA (Programmable Logic Array) et FPLA (Field Programmable Gate Array) est plus souple car les 2 matrices sont programmables. La différence entre le PLA et le FPLA est la même que celle entre une ROM et un PROM :

    • le PLA est programmé par le constructeur.

    • le FPLA est programmé par le client en détruisant des fusibles.

Figure 1.38. Représentation d’une mémoire PLA et FPLA

Représentation d’une mémoire PLA et FPLA

  • SPLD (Simple Programmable Logic Device) et EPLD (Erasable Programmable Logic Device).

  • CPLD (Complex Programmable Logic Device) et FPGA (Field-Programmable Gate Array) sont de relativement gros ensembles de cellules logiques programmables (comparable à ce que nous venons de présenter) qui peuvent être connectées de différentes matières.

Un CPLD est un circuit composé d'un certain nombre de SPDL (nous les désignons alors sous le terme de macrocellule). Ces macro cellules sont regroupées (et interconnectées) au sein de blocs logiques eux-mêmes reliés par une matrice de connexion programmable.

Figure 1.39. Représentation du xilinx 9500, mémoire CPLD

Représentation du xilinx 9500, mémoire CPLD

Figure 1.40. Représentation du xilinx 9500, mémoire CPLD

Représentation du xilinx 9500, mémoire CPLD

Nous pouvons distinguer 2 types de FPGA selon le mode de programmation :

  • la programmation par anti-fusibles (irréversible).

  • la programmation par RAM.

Si nous considérons la programmation par RAM, les FPGA produit par la société Xilink dispose de petite RAM, appelé LUT (LookUp Table) qui contrôle le fonctionnement des blocs logiques).

La programmation de ces LUT s’effectue en un langage appelé VHDL (Very High Speed Integrated Circuit Hardware Description Language). Les PROM, les PAL, les PLA et les FPAL forment la famille des Simple Programmable Logic Device (SPLD). A l’instar des EPROM et des EEPROM, il existe des PLD effaçables :

  • EPLD (Erasable Programmable Logic Device).

  • EEPLD (Electrically Erasable Programmable Logic Device).

BILAN

Nous venons d’étudier 2 types de mémoire en utilisant comme principe les bascules. Nous pouvons faire un parallèle avec les mémoires au niveau des transistors. Chaque élément d’une mémoire peut être formé de 6 transistors. 4 transistors constituent 2 inverseurs et les 2 autres relient les inverseurs aux lignes de données.

Figure 1.41. Composant mémoire

Composant mémoire

Les programmes comportes des instructions liées avec des données. Si l’instruction est exécutée par le micro-processeur alors les données doivent être au minimum dans la mémoire centrale pour optimiser la rapidité d’exécution.

Un ordinateur a différents types de mémoires. La mémoire rapide coûte cher. C’est alors qu’une hiérarchie entre des mémoires va se fait pour maintenir et garantir la vitesse d’accès aux données. Nous pouvons les classer de la mémoire proche du micro-processeur vers la loin. Les registres internes, limités en nombre, constituent la mémoire rapide. Puis nous aurons les caches, faits de mémoires rapides mais limitées en taille, ensuite la mémoire vive, et enfin les disques durs permettant de stocker de grandes quantités de données, mais très lent, trop lent.

Les transferts et accès à la mémoire centrale sont lents c’est pour cela que des méthodes d’organisation et de pilotage de la mémoire vont se mettre en place avec un système d’exploitation.

Généralement les systèmes d’exploitation seront placés dans des zones protégées de la mémoire pour qu’un utilisateur ne l’accède pas et ne le modifie pas. Ces programmes doivent aussi être placés dans des mémoires non éphémères. Nous pouvons ainsi retrouver les systèmes d’exploitation dans les ROM.

La mémoire ROM est non volatile, rapide et facile d’accès. Les programmes de démarrages (Boot, BIOS, Micro-instruction, …) seront dedans.

Nous n’avons pas tenu compte qu’un accès mémoire peut ne pas aboutir, nous l’appelons: "l’échec d’accès mémoire". Pour des systèmes embarqués, des systèmes sollicitant régulièrement la mémoire, … le taux d’échecs d’accès devra être évalué pour en minimiser l’impact sur le fonctionnement voire le redémarrage ou l’arrêt de la machine. C’est aussi pour ces raisons qu’un système d’exploitation sera utile pour l’utilisation et la coordination du matériel.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels