2017-01-26 17 views
5

W podręczniku rozszerzeniem Intel ISA opisu pcommit jest nieco tajemnicze:Co robi instrukcja PCOMMIT?

Dyspozycja PCOMMIT powoduje pewne sklep-pamięć operacje pamięci trwałej zakresy do stać trwałe (chronione awaria zasilania) . W szczególności, PCOMMIT dotyczy sklepów, które zostały przyjęte do pamięci.
[...]
Jeśli PCOMMIT jest wykonywany po sklepie do uporczywego zakresie pamięci jest akceptowana w pamięci, sklep staje uporczywy gdy PCOMMIT staje się widoczna globalnie.
[...]
Dane w magazynie do pamięci trwałej stanie stałym (trwałym) dopiero po albo został zapisany do ukierunkowanego urządzeniu nieulotnej lub w pewnym pośrednim zasilaniem fail chronioną przechowywaniu /bufor.

nim nazwy pojęcia takie jak uporczywego pamięci waha, sklepy przyjęte do pamięci, sklepy staje się uporczywy i nieulotna Urządzenie .

Jaki jest dokładny kontekst?


To nie może być klasyczne urządzenia NV takie jak NOR Flash ROM lub urządzeń NVMe (czytaj: nowe dyski SSD), ponieważ są one za zmienną liczbę mostów, w tym subtraktywnymi te dekodujących, że procesor ma bez kontroli.

Odpowiedz

8

Przede wszystkim pcommithas been deprecated before even shipping to an actual CPU.
Większość tej odpowiedzi opiera się na treści linku powyżej.


Intel, w połączeniu z mikronów opracował nową formę Non-volatile memory (NVM) zwanego 3D XPoint (od jego wewnętrznej struktury).
An actual implementation, jako pamięć podręczna dysku, jest już dostępna i Intel zaczął przygotowywać się do szerszego zastosowania technologii NVM jakiś czas temu.

W szczególności Intel wyobrażał sobie, że niektóre moduły DIMM mogą zawierać część wykonaną w technologii 3D XPoint i tym samym stanowią nielotne urządzenie .

byłoby to zrobić w zakresie jednego lub więcej pamięci trwałej, zbieranie tych uporczywych zakresach nazywa się uporczywe domenę.
Jedną z głównych cech domeny trwałej jest jej zdolność do bezpiecznego wyłączania zasilania.

Gdy sklep jest to przechodzi:

  • The buforze sklepu.
    Magazyn został ukończony/widoczny lokalnie, ale nie globalnie.
    Bufor sklepu można przepłukać różnymi instrukcjami (np. sfence).
  • Hierarchia pamięci podręcznej.
    Magazyn jest widoczny globalnie (zapewnia to protokół koherencji pamięci podręcznej).
    Pamięć podręczną można przepłukać różnymi instrukcjami (na przykład clflush, clflushopt, clwb i inni).
  • Kontroler pamięci Zapisuj oczekującą kolejkę (WPQ).
    Sklep jest przyjęty do pamięci, ale nie jest jeszcze zapisany w pamięci DIMM.
    WPQ można przepłukać przez określone rejestry konfiguracyjne PCIe kontrolera pamięci lub pcommit.
  • Pamięć.
    Sklep został zatwierdzony/zapisany w pamięci.

W którym punkcie ścieżki danych powyżej magazyn znajduje się w domenie trwałej, a zatem nie zostanie utracony w przypadku awarii zasilania?
Niektóre kontrolery pamięci mają funkcję Asynchronous DRAM Refresh, która zapewnia, że ​​nawet w przypadku zaniku zasilania WPQ jest prawidłowo przepłukane (np. Dzięki baterii).
Dla tych platform trwała domena zaczyna się od WPQ. Firma Intel obawia się jednak, że nie wszystkie platformy miałyby funkcję ADR i utworzyły instrukcję pcommit, aby upewnić się, że sklepy wprowadziły domenę trwałości (pcommit jest wykonywalna w trybie użytkownika).

ten sposób sklep miał być trwały

mov [X], rax  ;Store 

;Here the store has started moving to the store buffer 

clwb [X] 

;Here the store has moved to the cache (CLWB is ordered with previous stores) 
;and then starting moving to the memory controller WPQ 
;(the line containing X has been written back) 

sfence   ;Wait for CLWB to become globally visible 

;Here the store is in the WPQ 

pcommit   

;The store is being committed 

sfence   ;Wait for pcommit to become globally visible 

;The store is committed 

Okazało się, że każda platforma planuje wesprzeć nową technologię Intel NVM planuje również wspierać ADR, więc Intel przestarzałe pcommit w korzyść z prostszego modelu programowania:

mov [X], rax 
clwb [X] 
sfence   

;Here the store is in the WPQ and that's enough