Jak CPU zapisuje informacje do pamięci RAM?

10

Moje pytanie brzmi: w jaki sposób CPU zapisuje dane do pamięci RAM?

Z tego, co rozumiem, współczesne procesory używają różnych poziomów pamięci podręcznej, aby przyspieszyć dostęp do pamięci RAM. Pamięć RAM otrzymuje polecenie informacji, a następnie wysyła serię danych do procesora, który przechowuje wymagane dane (i garść dodatkowych danych, które były zbliżone do adresu, którego żądał procesor) do pamięci podręcznej najwyższego poziomu, a następnie procesor stopniowo pyta różne pamięci podręczne do wysyłania coraz mniejszych fragmentów danych w dół poziomów pamięci podręcznej, dopóki nie znajdzie się w pamięci podręcznej poziomu 1, która następnie zostaje odczytana bezpośrednio do rejestru procesora.

Jak działa ten proces, gdy procesor zapisuje w pamięci? Czy komputer cofa się w dół poziomów pamięci podręcznej (w odwrotnej kolejności niż w przypadku odczytu)? Jeśli tak, to co powiesz na synchronizację informacji w różnych pamięciach podręcznych z pamięcią główną? Jaka jest też szybkość operacji zapisu w porównaniu z operacją odczytu? Co się stanie, jeśli ciągle piszę do pamięci RAM, na przykład w przypadku sortowania z użyciem segmentu?

Z góry dziękuję,

-Fake

Edycja: Nadal nie otrzymałem odpowiedzi, którą mogę w pełni zaakceptować. Chcę wiedzieć zwłaszcza o części synchronizacji zapisu w pamięci RAM. Wiem, że piszemy do pamięci podręcznej L1 bezpośrednio z procesora i że dane są przesuwane w dół poziomów pamięci podręcznej, gdy synchronizujemy różne poziomy pamięci podręcznej, a ostatecznie główna pamięć RAM zostaje zsynchronizowana z pamięcią podręczną najwyższego poziomu. Chciałbym jednak wiedzieć, KIEDY pamięci podręczne synchronizują się i scynocronizują z główną pamięcią RAM oraz jak szybkie są ich prędkości w stosunku do poleceń odczytu.

Tamara Wijsman
źródło

Odpowiedzi:

11

Ach, to jedno z tych prostych pytań, które mają naprawdę złożone odpowiedzi. Prosta odpowiedź brzmi: cóż, zależy to od tego, jak napisano, i jaki jest bufor. Oto przydatne informacje na temat działania pamięci podręcznych .

Procesory mogą zapisywać dane na różne sposoby. Bez buforowania dane są natychmiast zapisywane w pamięci, a procesor oczekuje na zakończenie zapisu. Podczas buforowania CPU zwykle przechowuje dane w kolejności programu, tj. Jeśli program zapisuje adres A, to adres B, to pamięć A zostanie zapisana przed pamięcią B, niezależnie od buforowania. Buforowanie wpływa tylko wtedy, gdy pamięć fizyczna jest aktualizowana, a to zależy od rodzaju użytego buforowania (patrz powyższy link). Niektóre procesory mogą także przechowywać dane w sposób nieokreślony, co oznacza, że ​​zapisy mogą być ponownie uporządkowane, aby maksymalnie wykorzystać przepustowość pamięci. Tak więc pisanie do A, potem B, a następnie (A + 1) można zmienić na pisanie do A, a następnie A + 1 w jednej serii, a następnie B.

Inną komplikacją jest obecność więcej niż jednego procesora. W zależności od sposobu zaprojektowania systemu, zapisy jednego procesora nie będą widoczne dla innych procesorów, ponieważ dane nadal znajdują się w pamięci podręcznej pierwszego procesora (pamięć podręczna jest zabrudzona). W wielu systemach CPU dopasowanie pamięci podręcznej każdego procesora do pamięci fizycznej jest nazywane spójnością pamięci podręcznej. Można to osiągnąć na różne sposoby.

Oczywiście powyższe dotyczy głównie procesorów Pentium. Inne procesory mogą robić rzeczy na inne sposoby. Weźmy na przykład procesor Cell na PS3. Podstawową architekturą procesora komórki jest jeden rdzeń PowerPC z kilkoma rdzeniami komórek (na PS3 jest osiem komórek, z których jedna jest zawsze wyłączona, aby poprawić wydajność). Każda komórka ma własną pamięć lokalną, coś w rodzaju pamięci podręcznej L1, która nigdy nie jest zapisywana w systemowej pamięci RAM. Dane mogą być przesyłane między tą lokalną pamięcią RAM a systemową pamięcią RAM za pomocą transferu DMA (Direct Memory Access). Komórka może uzyskiwać dostęp do pamięci RAM systemu i pamięci RAM innych komórek za pomocą czegoś, co wydaje się być normalnym odczytem i zapisem, ale to po prostu uruchamia transfer DMA (więc jest wolny i naprawdę należy go unikać). Idea tego systemu polega na tym, że gra nie jest tylko jednym programem,

Podsumowując, pisanie do pamięci RAM było bardzo proste w czasach, gdy szybkość procesora odpowiadała szybkości RAM, ale wraz ze wzrostem prędkości procesora i wprowadzaniem pamięci podręcznych proces ten stał się bardziej złożony przy użyciu wielu różnych metod.

Skizz

Skizz
źródło
2

tak, to jest cofanie się w dół poziomów pamięci podręcznej i zapisywanie w pamięci, ale ważna uwaga jest w systemie Multi Processing, pamięć podręczna jest dzielona między 2 lub więcej procesorami (rdzeniami) i dane muszą być spójne, zostało to zrobione przez utworzenie wspólnej pamięci podręcznej dla wszystkich wieloprocesorowych lub inną pamięć podręczną, ale zachowaj spójność za pomocą sekcji Krytyczne (jeśli dane w jednej pamięci podręcznej uległy zmianie, wymusza zapis w pamięci i aktualizację innej pamięci podręcznej)

Am1rr3zA
źródło