Rozumiem, że główna różnica między tymi dwiema metodami polega na tym, że w metodzie „z zapisem” dane są natychmiast zapisywane do pamięci głównej poprzez pamięć podręczną, podczas gdy w przypadku „zapisu zwrotnego” dane są zapisywane „później”.
Nadal musimy czekać na pamięć w „ostatnim czasie”, więc jaka jest korzyść z „zapisywania”?
caching
cpu-architecture
cpu-cache
Naftaly
źródło
źródło
write back
lepszą wydajność?write back
ma lepszą wydajność, ponieważ zapis do pamięci głównej jest znacznie wolniejszy niż zapis do pamięci podręcznej procesora, a dane mogą być krótkie w trakcie (oznacza to, że mogą się ponownie zmienić wcześniej i nie ma potrzeby umieszczania starej wersji w pamięci). Jest złożony, ale bardziej wyrafinowany, większość pamięci we współczesnych procesorach korzysta z tej zasady.Odpowiedzi:
Zaletą zapisu w pamięci głównej jest to, że upraszcza on projekt systemu komputerowego. W przypadku zapisu w pamięci głównej zawsze znajduje się aktualna kopia wiersza. Zatem po zakończeniu odczytu pamięć główna może zawsze odpowiedzieć żądanymi danymi.
Jeśli używany jest zapis z powrotem, czasami aktualne dane znajdują się w pamięci podręcznej procesora, a czasami w pamięci głównej. Jeśli dane znajdują się w pamięci podręcznej procesora, procesor ten musi zatrzymać odpowiedź pamięci głównej na żądanie odczytu, ponieważ pamięć główna może mieć nieaktualną kopię danych. Jest to bardziej skomplikowane niż zapisywanie.
Ponadto zapis może uprościć protokół spójności pamięci podręcznej, ponieważ nie wymaga stanu modyfikacji . Stan Modify rejestruje, że pamięć podręczna musi ponownie zapisać wiersz pamięci podręcznej, zanim unieważni lub wykluczy wiersz. W przypadku zapisu w pamięci podręcznej wiersz pamięci podręcznej można zawsze unieważnić bez ponownego zapisywania, ponieważ pamięć ma już aktualną kopię wiersza.
Jeszcze jedno - w oprogramowaniu o architekturze z zapisem zwrotnym, które zapisuje do rejestrów we / wy mapowanych w pamięci, należy podjąć dodatkowe kroki, aby upewnić się, że zapisy są natychmiast wysyłane z pamięci podręcznej. W przeciwnym razie zapisy nie będą widoczne poza rdzeniem, dopóki wiersz nie zostanie odczytany przez inny procesor lub linia nie zostanie usunięta.
źródło
Spójrzmy na to na przykładzie. Załóżmy, że mamy bezpośrednio mapowaną pamięć podręczną i używana jest zasada zapisu zwrotnego. Mamy więc prawidłowy bit, brudny bit, tag i pole danych w linii pamięci podręcznej. Załóżmy, że mamy operację: napisz A (gdzie A jest mapowane do pierwszej linii pamięci podręcznej).
Dzieje się tak, że dane (A) z procesora są zapisywane w pierwszej linii pamięci podręcznej. Ustawione są prawidłowe bity i bity znacznika. Brudny bit jest ustawiony na 1.
Brudny bit po prostu wskazuje, że linia pamięci podręcznej została kiedykolwiek zapisana od czasu jej ostatniego wprowadzenia do pamięci podręcznej!
Teraz załóżmy, że wykonywana jest inna operacja: przeczytaj E (gdzie E jest również odwzorowane na pierwszą linię pamięci podręcznej)
Ponieważ mamy bezpośrednio mapowaną pamięć podręczną, pierwszą linię można po prostu zastąpić blokiem E, który zostanie przeniesiony z pamięci. Ale ponieważ blok ostatnio zapisany w linii (blok A) nie jest jeszcze zapisany w pamięci (wskazywany przez brudny bit), więc kontroler pamięci podręcznej najpierw wyda zapis z powrotem do pamięci, aby przenieść blok A do pamięci, a następnie zastąpi wiersz blokiem E przez wykonanie operacji odczytu do pamięci. brudny bit jest teraz ustawiony na 0.
Tak więc polityka zapisu z powrotem nie gwarantuje, że blok będzie taki sam w pamięci i związanej z nim linii pamięci podręcznej. Jednak za każdym razem, gdy linia ma zostać zastąpiona, najpierw wykonywany jest zapis zwrotny.
Polityka zapisywania jest dokładnie odwrotna. W związku z tym w pamięci zawsze będą aktualne dane. Oznacza to, że jeśli zostanie zapisany blok pamięci podręcznej, pamięć również zostanie odpowiednio zapisana. (bez brudnych bitów)
źródło
może ten artykuł pomoże ci połączyć się tutaj
Zapis: zapis jest wykonywany synchronicznie zarówno do pamięci podręcznej, jak i do magazynu zapasowego.
Zapis z powrotem (lub z tyłu): Zapis jest wykonywany tylko do pamięci podręcznej. Zmodyfikowany blok pamięci podręcznej jest zapisywany z powrotem do sklepu, tuż przed jego zastąpieniem.
Zapisywanie: gdy dane są aktualizowane, są zapisywane zarówno w pamięci podręcznej, jak i w pamięci masowej zaplecza. Ten tryb jest łatwy w obsłudze, ale wolno zapisuje dane, ponieważ dane muszą być zapisywane zarówno w pamięci podręcznej, jak i w magazynie.
Zapis zwrotny: gdy dane są aktualizowane, są zapisywane tylko w pamięci podręcznej. Zmodyfikowane dane są zapisywane w pamięci wewnętrznej tylko wtedy, gdy dane są usuwane z pamięci podręcznej. Ten tryb zapewnia dużą prędkość zapisu danych, ale dane zostaną utracone, jeśli awaria zasilania nastąpi przed zapisaniem zaktualizowanych danych do pamięci.
źródło
Zasady opisujące zasady zapisu zwrotnego i zapisu w czasie, gdy wystąpi trafienie zapisu , czyli gdy pamięć podręczna zawiera żądane informacje. W tych przykładach zakładamy, że pojedynczy procesor zapisuje w pamięci głównej z pamięcią podręczną.
Zapis: informacje są zapisywane w pamięci podręcznej i pamięci, a zapis kończy się po zakończeniu obu. Ma to tę zaletę, że jest prostsze w implementacji, a pamięć główna jest zawsze spójna (zsynchronizowana) z pamięcią podręczną (w przypadku jednoprocesorowego - jeśli jakieś inne urządzenie modyfikuje pamięć główną, ta zasada nie wystarczy), a brak odczytu nigdy nie powoduje zapisów do pamięci głównej. Oczywistą wadą jest to, że każde trafienie zapisu musi wykonać dwa zapisy, z których jeden uzyskuje dostęp do wolniejszej pamięci głównej.
Zapis zwrotny: informacje są zapisywane w bloku w pamięci podręcznej. Zmodyfikowany blok pamięci podręcznej jest zapisywany w pamięci tylko wtedy, gdy jest zastępowany (w efekcie zapis z opóźnieniem ). Specjalny bit dla każdego bloku pamięci podręcznej, brudny bit , oznacza, czy blok pamięci podręcznej został zmodyfikowany w pamięci podręcznej, czy nie. Jeśli brudny bit nie jest ustawiony, blok pamięci podręcznej jest „czysty”, a błąd zapisu nie musi zapisywać bloku w pamięci.
Zaletą jest to, że zapisy mogą następować z prędkością pamięci podręcznej, a jeśli zapisuje się w tym samym bloku, potrzebny jest tylko jeden zapis do pamięci głównej (podczas zastępowania poprzedniego bloku). Wadą jest to, że ten protokół jest trudniejszy do zaimplementowania, pamięć główna może nie być spójna (nie zsynchronizowana) z pamięcią podręczną, a odczyty powodujące zamianę mogą powodować zapisanie brudnych bloków do pamięci głównej.
Zasady dotyczące braku zapisu są szczegółowo opisane w moim pierwszym linku.
Te protokoły nie zajmują się przypadkami z wieloma procesorami i wieloma pamięciami podręcznymi, jak to jest powszechne w nowoczesnych procesorach. W tym celu potrzebne są bardziej skomplikowane mechanizmy spójności pamięci podręcznej . Pamięci podręczne z zapisem mają prostsze protokoły, ponieważ zapis do pamięci podręcznej jest natychmiast odzwierciedlany w pamięci.
Dobre zasoby:
źródło
Zapis zwrotny jest bardziej złożony i wymaga skomplikowanego protokołu Cache Coherence Protocol (MOESI), ale jest tego wart, ponieważ sprawia, że system jest szybki i wydajny.
Jedyną zaletą Write-Through jest to, że implementacja jest niezwykle prosta i nie jest wymagany żaden skomplikowany protokół spójności pamięci podręcznej.
źródło