Przede wszystkim pcommit
has 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