protokół MESI
Transkrypt
protokół MESI
© Tomasz Jamrógiewicz ZDECENTRALIZOWANA KONTROLA SPÓJNOŚCI PAMIĘCI W systemach z pamięcią podręczną występują chwilowe braki zgodności pomiędzy zawartością wiersza pamięci operacyjnej a jego kopią w pamięci podręcznej. Z punktu widzenia danej jednostki centralnej ma to miejsce kiedy: 1. w wyniku działania jednostki centralnej (zapis), zmieniona zostaje zawartość jej pamięci podręcznej; 2. zmieniona zostaje, w wyniku działania innej jednostki centralnej (zapis), zawartość pamięci operacyjnej. JC ____________ Pamięć podręczna JC ____________ Pamięć podręczna JC ____________ Pamięć podręczna PAO Przywracanie, po zapisie, zgodności pomiędzy pamięcią podręczną i operacyjną może być realizowane: 1. bezpośrednio po zapisie do pamięci podręcznej (write-through) – zapis równoczesny; 2. podczas usuwania wiersza pamięci podręcznej (write-back) – zapis zwrotny. W systemach wieloprocesorowych, w których występuje kilka jednostek z pamięciami podręcznymi, brak zgodności pomiędzy pamięcią podręczną i operacyjną może powodować utratę spójności pamięci. W przypadku stosowania zapisu zwrotnego kopie tego samego wiersza pamięci operacyjnej mogą różnić się między sobą w zależności od tego, w której pamięci podręcznej się znajdują. 1 © Tomasz Jamrógiewicz Zgodnie z procedurą ZDECENTRALIZOWANEJ KONTROLI SPÓJNOŚCI PAMIĘCI odpowiedzialność za utrzymanie spójności ciąży na wszystkich kontrolerach pamięci podręcznych. Każdy z kontrolerów jest zobowiązany śledzić przesyłane zgłoszenia i odpowiednio reagować. W takim przypadku najczęściej stosowany jest protokół MESI. Zgodnie z tym protokołem każdej kopii wiersza pamięci operacyjnej przypisywany jest jeden z czterech atrybutów (dwa bity): Modified (zmieniona) - kopia znajdująca się tylko w jednej pamięci podręcznej, w której niektóre dane zostały zmienione; Exclusive (niezmieniona) - kopia znajdująca się tylko w jednej pamięci podręcznej, w której żadne dane nie zostały zmienione; Shared (wspólna) - niezmieniona kopia znajdująca się w kilku pamięciach podręcznych; Invalid (nieważna). Rozpatrzmy cztery możliwe przypadki: 1. chybiony odczyt, 2. trafiony odczyt, 3. chybiony zapis, 4. trafiony zapis. Chybiony odczyt Kontroler pamięci podręcznej wczytuje brakujący wiersz (na jedną z pozycji opatrzoną atrybutem kopia nieważna). A. Jeśli to jest jedyna kopia, to nadaje jej atrybut niezmieniona: (invalid exclusive). B. Jeśli, w którejś z pamięci podręcznych już znajduje się niezmieniona kopia tego samego wiersza, to obu tym kopiom zostanie nadany atrybut wspólna: (invalid shared i exclusive shared). C. Jeśli jest kilka wspólnych kopii (niezmienionych), to kontroler nadaje jej atrybut wspólna: (invalid shared a w pozostałych shared shared). 2 © Tomasz Jamrógiewicz D. Jeśli, w którejś z pamięci podręcznych znajduje się zmieniona kopia tego samego wiersza, to kontroler tej pamięci sygnalizuje, że operację odczytu należy powtórzyć. Następnie przejmuje kontrolę nad magistralą i aktualizuje zawartość tego wiersza pamięci operacyjnej a kopii nadaje atrybut wspólna: (modified shared). Po powtórzeniu odczytu kopia otrzymuje atrybut wspólna: (invalid shared). Trafiony odczyt Nic się nie zmienia. Chybiony zapis Kontroler inicjuje odczyt wiersza pamięci z zamiarem jego modyfikacji. A. Jeśli to jest jedyna kopia, to otrzyma atrybut zmieniona: (invalid modified). B. Jeśli istnieje kopia niezmieniona lub niezmienione kopie wspólne to zostaną unieważnione a wczytana kopia będzie miała atrybut zmieniona. (invalid modified, exclusive lub shared invalid). C. Jeśli istnieje kopia zmieniona, to kontroler pamięci, w której się ona znajduje przejmuje magistralę i zapisuje ją do pamięci operacyjnej a w pamięci podręcznej unieważnia: (modified invalid). Teraz po jej wczytaniu będzie to jedyna kopia i uzyska atrybut zmieniona: (invalid modified). Trafiony zapis Kopia wiersza pamięci będzie zmodyfikowana. A. Jeśli brak innych kopii to: (exclusive lub modified modified) B. Jeśli są inne kopie tego samego wiersza pamięci podręcznej, to powinny zostać unieważnione: (shared modified i shared invalid). 3