Pourquoi le temps d'accès à la RAM (tout type) diminue-t-il si lentement?

22

Cet article montre que la SDRAM DDR4 possède environ 8 fois plus de bande passante DDR1 SDRAM. Mais le délai entre la définition de l'adresse de la colonne et la date à laquelle les données sont disponibles n'a diminué que de 10% (13,5 ns). Une recherche rapide montre que le temps d'accès de l'async le plus rapide. SRAM (18 ans) est à 7ns. Pourquoi le temps d'accès à la SDRAM a-t-il diminué si lentement? La raison est-elle économique, technologique ou fondamentale?

Arseniy
la source
1
Une autre raison possible pourrait-elle être que ce n'est tout simplement pas nécessaire?
Sebastiaan van den Broek
Par exemple, un temps d'accès faible est nécessaire pour accélérer la recherche de données dans la mémoire.
Arseniy
Je me rends compte que la vitesse supplémentaire est toujours agréable, mais venant du point de vue d'un développeur de logiciels, peut-être par rapport à toutes les autres E / S et architecture (y compris les microservices qui peuvent littéralement fonctionner sur différents centres de données), la vitesse de la RAM n'est tout simplement pas un goulot d'étranglement plus. Parfois, «assez bon» est bon, ou du moins ne garantit pas la R&D supplémentaire pour l'accélérer. J'envisagerais d'ajouter cela comme une raison potentielle dans votre question également.
Sebastiaan van den Broek
1
Selon Wikipedia DDR3-2200 a une latence de premier mot de 6,36 ns, c'est-à-dire combien de temps il faut un signal pour se propager autour de 3 pieds sur FR4, je dirais que nous sommes assez proches des limites physiques
Mark Omo

Réponses:

33

C'est parce qu'il est plus facile et moins cher d'augmenter la bande passante de la DRAM que de diminuer la latence. Pour obtenir les données d'une ligne ouverte de RAM, une quantité de travail non triviale est nécessaire.

L'adresse de la colonne doit être décodée, les multiplexeurs sélectionnant les lignes auxquelles accéder doivent être pilotés, et les données doivent se déplacer à travers la puce vers les tampons de sortie. Cela prend un peu de temps, d'autant plus que les puces SDRAM sont fabriquées selon un processus adapté à des densités de RAM élevées et non à des vitesses logiques élevées. Pour augmenter la bande passante, par exemple en utilisant le DDR (1, 2, 3 ou 4), la majeure partie de la logique peut être soit élargie soit canalisée, et peut fonctionner à la même vitesse que dans la génération précédente. La seule chose qui doit être plus rapide est le pilote d'E / S pour les broches DDR.

En revanche, pour diminuer la latence, toute l'opération doit être accélérée, ce qui est beaucoup plus difficile. Très probablement, des parties du RAM devraient être réalisées sur un processus similaire à celui des processeurs à haute vitesse, ce qui augmente considérablement le coût (le processus à grande vitesse est plus cher, et chaque puce doit passer par 2 processus différents).

Si vous comparez les caches CPU avec la RAM et le disque dur / SSD, il existe une relation inverse entre le stockage volumineux et le stockage rapide. Un L1 $ est très rapide, mais ne peut contenir qu'entre 32 et 256 Ko de données. La raison pour laquelle il est si rapide est qu'il est petit:

  • Il peut être placé très près du CPU l'utilisant, ce qui signifie que les données doivent parcourir une distance plus courte pour y accéder
  • Les fils peuvent être raccourcis, ce qui signifie encore une fois qu'il faut moins de temps pour que les données les traversent
  • Il ne prend pas beaucoup de place ou de nombreux transistors, donc le faire sur un processus à vitesse optimisée et utiliser beaucoup d'énergie par bit stocké n'est pas si cher

Au fur et à mesure que vous montez dans la hiérarchie, chaque option de stockage augmente en capacité, mais également en surface et en s'éloignant de l'appareil qui l'utilise, ce qui signifie que l'appareil doit ralentir.

C_Elegans
la source
21
Très bonne réponse. Je veux juste souligner le facteur de distance physique: à peut-être 10 cm pour le bâton de RAM le plus éloigné, 1/3 à 1/2 de la vitesse de la lumière comme vitesse du signal, plus une certaine longueur supplémentaire pour acheminer et faire correspondre les pistes du PCB, vous pourriez être facilement à 2ns aller-retour. Si ~ 15% de votre retard est causé par la limite de vitesse universelle incassable ... vous faites vraiment du bien à mon avis.
mbrig
1
L1 est également organisé de manière unique, est directement dans le noyau qui l'utilise et utilise SRAM.
forêt
@forest Et a également une limite de taille assez stricte - rendez-la trop grande, et il n'y a aucun moyen de la garder si rapide.
Luaan
Le cache L1d peut également être fortement optimisé pour la latence, par exemple en récupérant des balises et des données en parallèle pour toutes les manières définies. Ainsi, lorsqu'une correspondance de balise multiplexe simplement les données dans la sortie, au lieu de devoir les récupérer dans SRAM. Cela peut également se produire en parallèle avec la recherche TLB sur les bits hauts de l'adresse, si les bits d'index proviennent tous de la partie offset dans la page d'une adresse. (C'est donc une limite stricte de taille, comme @Luaan l'a mentionné: taille / associativité <= taille de page pour que ce piratage de vitesse VIPT = PIPT fonctionne. Voir Cache VIPT: Connexion entre TLB et Cache? )
Peter Cordes
6

C_Elegans fournit une partie de la réponse - il est difficile de diminuer la latence globale d'un cycle de mémoire.

L'autre partie de la réponse est que dans les systèmes de mémoire hiérarchiques modernes (plusieurs niveaux de mise en cache), la bande passante mémoire a une influence beaucoup plus forte sur les performances globales du système que la latence de la mémoire , et c'est donc là que tous les derniers efforts de développement ont été concentrés.

Cela est vrai à la fois pour l'informatique générale, où de nombreux processus / threads s'exécutent en parallèle, ainsi que pour les systèmes embarqués. Par exemple, dans le travail vidéo HD que je fais, je me fiche des latences de l'ordre des millisecondes, mais j'ai besoin de plusieurs gigaoctets / seconde de bande passante.

Dave Tweed
la source
Et il faut certainement mentionner que les logiciels peuvent être conçus pour la latence «élevée» assez facilement dans la plupart des cas, par rapport à la difficulté et au coût de la diminution de la latence. Les processeurs et leurs logiciels sont très efficaces pour éliminer la latence effective dans la plupart des cas. En fin de compte, vous n'atteignez pas la limite de latence aussi souvent que vous le pensez, sauf si vous n'avez aucune idée du fonctionnement de l'architecture de la mémoire et de la mise en cache / préchargement du processeur, etc. L'approche simple fonctionne généralement assez bien pour la plupart des logiciels, en particulier monofil.
Luaan
Sur les processeurs Intel modernes, la latence de la mémoire est le facteur limitant de la bande passante à cœur unique : la bande passante ne peut pas dépasser max_concurrency / latency, et un cœur unique a une capacité limitée pour les demandes hors cœur en vol à la fois. Un Xeon à plusieurs cœurs (avec une latence uncore plus élevée à partir de plus de sauts sur le bus en anneau) a une bande passante monocœur pire qu'une puce de bureau à quatre cœurs, bien qu'il ait plus de contrôleurs DRAM. Pourquoi Skylake est-il tellement meilleur que Broadwell-E pour le débit de mémoire à un seul thread? . Il faut beaucoup plus de threads pour saturer la mémoire N / B sur un Xeon à plusieurs cœurs.
Peter Cordes
Dans l'ensemble, votre point principal est correct: la plupart des accès se trouvent dans le cache pour une faible latence afin d'éviter de bloquer le back-end hors service. La pré-lecture matérielle a généralement juste besoin de bande passante pour suivre les accès séquentiels et avoir les données prêtes dans le cache avant que le cœur n'en ait besoin. La latence DRAM représente des centaines de cycles d'horloge de base, donc un logiciel efficace doit être réglé pour utiliser des modèles d'accès qui ne mettent pas en cache les échecs en détruisant à la fois la localité spatiale / temporelle et la pré-lecture HW. Surtout pour les charges, car les mémoires tampons de magasin peuvent dissocier la latence du magasin du reste du backend hors service.
Peter Cordes
Pour les E / S de disque, les latences de millisecondes auraient de l'importance si nous n'avions pas de lecture anticipée en lecture anticipée pour le masquer pour les accès séquentiels. Mais plus la latence est élevée, plus il est difficile de se cacher. (Plus vos algorithmes de prélecture doivent être performants et plus vos schémas d'accès doivent être prévisibles.) Et plus vous devez conserver en vol les octets de requêtes / données pour obtenir la bande passante souhaitée.
Peter Cordes
2

Je n'ai pas beaucoup d'informations, mais je m'attends à ce que ce soit un peu tout.

Économique

Pour la majorité des ordinateurs / téléphones, la vitesse est largement suffisante. Pour des stockages de données plus rapides, le SSD a été développé. Les gens peuvent utiliser la vidéo / musique et d'autres tâches gourmandes en vitesse en (presque) temps réel. Il n'y a donc pas tellement besoin de plus de vitesse (sauf pour des applications spécifiques comme la prévision météorologique, etc.).

Une autre raison est de traiter une vitesse RAM très élevée, des CPU rapides sont nécessaires. Et cela vient avec beaucoup d'énergie. Étant donné que la tendance à les utiliser dans des appareils à batterie (comme les téléphones mobiles), empêche l'utilisation de RAM très rapide (et de processeurs), ce qui rend également leur utilisation économiquement inutile.

Technique

Par la taille décroissante des puces / circuits intégrés (niveau nm maintenant), la vitesse augmente, mais pas de manière significative. Il est plus souvent utilisé pour augmenter la quantité de RAM, ce qui est plus difficile (également pour une raison économique).

Fondamental

À titre d'exemple (les deux sont des circuits): la façon la plus simple d'obtenir plus de vitesse (utilisée par le SSD) est de simplement répartir la charge sur plusieurs composants, de cette façon, les vitesses de `` traitement '' s'additionnent également. Comparez en utilisant 8 clés USB en lisant en même temps et en combinant les résultats, au lieu de lire les données d'une clé USB l'une après l'autre (cela prend 8 fois plus de temps).

Michel Keijzers
la source
1
Qu'est-ce que les SSD ont exactement à voir avec la latence SDRAM?
C_Elegans
@C_Elegans ce sont deux circuits, pour cette question "générique" je ne pense pas qu'il y ait tellement de différence.
Michel Keijzers
2
Le temps nécessaire pour ouvrir une page n'a pas vraiment diminué à cause du cycle de précharge; la quantité d'énergie requise n'est pas très différente aujourd'hui de ce qu'elle était il y a dix ans. Cela domine le temps d'accès selon mon expérience.
Peter Smith
5
@MichelKeijzers Bien qu'ils soient tous les deux des circuits, les SSD et la SDRAM servent des cas d'utilisation très différents et utilisent différentes techniques pour stocker les données. De plus, dire que les processeurs n'ont pas vraiment besoin de RAM plus rapide n'a pas beaucoup de sens, la raison pour laquelle la plupart des processeurs modernes ont 3 niveaux de caches est que leur RAM ne peut pas être créé assez rapidement pour servir le processeur.
C_Elegans
1
Vous avez dit que pour un stockage plus important , il existe des SSD. Voulez-vous dire plus vite ? Il est plus coûteux d'obtenir la même quantité de stockage sur un disque SSD que sur un disque dur. Le principal argument de vente des SSD est la vitesse, et peut-être le bruit et la fiabilité. Pour la capacité, les disques durs sont encore meilleurs
user198712