Lors de la conception d’un système, l’une des premières choses qui est placée sur la table de conception est la façon dont la RAM sera organisée, car cela indiquera non seulement à quoi ressemblera l’architecture du système, mais également ses performances. , son coût de fabrication et son extensibilité.
UMA signifie Uniform Memory Access et fait référence à tous les systèmes où la RAM est un seul puits partagé en termes d’accès par le CPU et le reste des processeurs du système. Ce type de configuration est principalement utilisé dans les SoC d’aujourd’hui, où les différents composants partagent l’accès à la mémoire.
Le système UMA est également celui utilisé dans les consoles de jeux vidéo, en général c’est le système de mémoire utilisé dans chaque système où ses composants sont montés sur une carte commune, où le routage de deux types différents de puits de mémoire est une complication sur les routes. . et les lignes de communication qui traversent l’assiette.
C’est donc le moyen le plus simple de créer un système de mémoire sur n’importe quel type d’ordinateur, mais cela conduit à une série de problèmes tels que le fait que le partage de l’accès à la mémoire finit par créer un effet de contention, dans lequel une «liste d’attente» est créée pour accéder aux données, ce qui ne peut être allégé qu’avec l’utilisation de types de mémoire RAM avec différents canaux d’accès.
L’organisation de la mémoire NUMA ou Non-Uniform Memory Access. Désigne les systèmes dans lesquels plusieurs récepteurs de mémoire différents sont utilisés dans le même système. C’est le cas du PC où, par exemple, on peut voir comment les cartes graphiques ont leur propre mémoire différente de la RAM principale du système.
Les systèmes NUMA ne souffrent pas du problème de contention dans l’accès mémoire des systèmes UMA, mais en fait, afin de communiquer entre eux les différents composants du système, le résultat est un système très complexe. La raison en est que chacun des composants doit avoir des mécanismes d’accès RAM principaux pour communiquer avec le CPU, par exemple les GPU ont des unités DMA qui leur permettent d’accéder à la RAM principale du système et de faire des copies de certaines données de la RAM vers la VRAM.
Ce type d’organisation de la mémoire est utilisé lorsque nous voulons créer un système avec des capacités d’extension, pour eux, il est nécessaire de créer des ports dits d’extension, qui sont utilisés pour la communication du processeur système avec les systèmes de mémoire RAM du système lui-même. chaque composant faisant partie du système.
L’un des idéaux du PC est le système de mémoire totalement cohérent, dans lequel l’adressage des différents composants qu’il contient est commun à tous. Cela signifie que si nous changeons l’adresse, disons, par exemple, F4. Ensuite, tous les composants lors du passage à l’adresse mémoire F4, tout autre composant du PC doit se référer à la même adresse mémoire.
On pourrait penser d’emblée que parce que les systèmes UMA ont toujours leur mémoire partagée au niveau physique, il en sera de même pour le niveau d’adressage, puisque nous parlons du même pool de mémoire au niveau physique. La réalité est très différente, car il faut que les différents composants soient cohérents en terme de mémoire, ce qui signifie qu’en prenant l’exemple précédent si l’on écrit la valeur 30 dans l’adresse F4 alors tous les composants savent qu’il y a une valeur de 30 là-bas.
La manière de s’assurer que tous les composants d’un SoC sont parfaitement cohérents n’est donc pas d’utiliser le même contrôleur mémoire, mais d’ajouter un dernier niveau de cache juste avant ledit contrôleur, qui serait au-delà du CPU, à partir du GPU. Et d’autres composants et seraient considérés par tout le monde comme un dernier niveau de cache.
L’ajout d’un cache de dernier niveau avant le contrôleur de mémoire est typique des systèmes PostPC, puisque tous ont été conçus pour les SoC dès le départ, il n’y a pas de programmes qui font des copies de données d’un espace à un autre. Sur PC, en revanche, ce n’est pas courant et bien qu’Intel et AMD lancent depuis des années des SoC où tous les composants sont unifiés dans une seule puce, l’accès aux différents éléments du SoC ne l’est pas et certaines parties de la RAM le sont. isolé exclusivement pour un composant spécifique. Par exemple, lorsque nous avons un graphique intégré et que nous allouons une quantité de mémoire pour lesdits graphiques, ce que nous faisons, c’est dire au processeur que son espace ne peut pas le toucher car il est hors de son allocation.