Comment le processeur écrit-il les informations dans la mémoire RAM?

10

Ma question est la suivante: comment le processeur écrit-il les données dans la mémoire RAM?

D'après ce que je comprends, les processeurs modernes utilisent différents niveaux de cache pour accélérer l'accès au RAM. La RAM reçoit une commande d'informations et envoie ensuite une rafale de données au CPU qui stocke les données requises (et un tas de données supplémentaires qui était proche de l'adresse que le CPU voulait) dans le cache de plus haut niveau, le CPU demande alors progressivement les différents caches pour envoyer des blocs de données de plus en plus petits vers le bas des niveaux de caches jusqu'à ce qu'ils soient dans le cache de niveau 1 qui est ensuite lu directement dans un registre CPU.

Comment fonctionne ce processus lorsque le CPU écrit en mémoire? L'ordinateur fait-il reculer les niveaux de cache (dans l'ordre inverse par rapport à la lecture)? Si oui, qu'en est-il de la synchronisation des informations dans les différents caches avec la mémoire principale? De plus, quelle est la vitesse d'une opération d'écriture par rapport à une opération de lecture? Que se passe-t-il si j'écris en continu sur la RAM, comme dans le cas d'un tri par compartiment?

Merci d'avance,

-Faken

Edit: Je n'ai toujours pas vraiment obtenu de réponse que je puisse accepter pleinement. Je veux en savoir plus sur la partie synchronisation de l'écriture RAM. Je sais que nous écrivons dans le cache L1 directement à partir du processeur et que les données sont poussées vers le bas au niveau des caches lorsque nous synchronisons les différents niveaux de caches et, éventuellement, la RAM principale est synchronisée avec le cache de niveau le plus élevé. Cependant, ce que je voudrais savoir, c'est quand les caches se synchronisent et scynocronisent avec la RAM principale et à quelle vitesse sont leurs vitesses par rapport aux commandes de lecture.

Tamara Wijsman
la source

Réponses:

11

Ah, c'est une de ces questions simples qui ont des réponses vraiment complexes. La réponse simple est, eh bien, cela dépend de la façon dont l'écriture a été effectuée et du type de mise en cache. Voici une introduction utile au fonctionnement des caches .

Les processeurs peuvent écrire des données de différentes manières. Sans mise en cache, les données sont immédiatement stockées en mémoire et le CPU attend la fin de l'écriture. Avec la mise en cache, le CPU stocke généralement les données dans l'ordre du programme, c'est-à-dire que si le programme écrit à l'adresse A puis à l'adresse B, la mémoire A sera écrite avant la mémoire B, quelle que soit la mise en cache. La mise en cache n'affecte que lorsque la mémoire physique est mise à jour, et cela dépend du type de mise en cache utilisé (voir le lien ci-dessus). Certains processeurs peuvent également stocker des données de manière non temporelle, c'est-à-dire que les écritures peuvent être réorganisées pour tirer le meilleur parti de la bande passante mémoire. Ainsi, l'écriture dans A, puis B, puis (A + 1) pourrait être réordonnée pour écrire dans A puis A + 1 en une seule rafale, puis B.

Une autre complication est lorsque plusieurs CPU sont présents. Selon la façon dont le système est conçu, les écritures d'un processeur ne seront pas vues par les autres processeurs car les données sont toujours dans le premier cache de CPU (le cache est sale). Dans plusieurs systèmes de CPU, faire correspondre le cache de chaque CPU à ce qui se trouve dans la mémoire physique est appelé cohérence du cache. Il y a plusieurs façons de réaliser cela.

Bien sûr, ce qui précède est destiné aux processeurs Pentium. D'autres processeurs peuvent faire les choses autrement. Prenez, par exemple, le processeur Cell de la PS3. L'architecture de base d'un CPU Cell est un noyau PowerPC avec plusieurs cœurs Cell (sur la PS3, il y a huit cellules dont l'une est toujours désactivée pour améliorer les rendements). Chaque cellule possède sa propre mémoire locale, une sorte de cache L1 qui n'est jamais écrit dans la mémoire RAM du système. Les données peuvent être transférées entre cette RAM locale et la RAM système à l'aide de transferts DMA (Direct Memory Access). La cellule peut accéder à la RAM du système et à la RAM des autres cellules en utilisant ce qui semble être des lectures et des écritures normales, mais cela déclenche simplement un transfert DMA (il est donc lent et devrait vraiment être évité). L'idée derrière ce système est que le jeu n'est pas seulement un programme,

Pour résumer, l'écriture dans la RAM était très simple à l'époque où la vitesse du processeur correspondait à la vitesse de la RAM, mais à mesure que la vitesse du processeur augmentait et que des caches étaient introduits, le processus devenait plus complexe avec de nombreuses méthodes différentes.

Skizz

Skizz
la source
2

oui, il revient en arrière dans les niveaux de cache et enregistre dans la mémoire, mais la note importante est dans le système multi-traitement, le cache est partagé entre 2 ou plusieurs processeurs (core) et les données doivent être cohérentes, cela a été fait en créant un cache partagé pour tous les multiprocesseurs ou un cache différent mais économisez la cohérence en utilisant la section Critique (si les données d'un cache ont changé, le forcer à écrire en mémoire et à mettre à jour l'autre cache)

Am1rr3zA
la source