2017-01-26 13 views
5

В расширениях руководства Intel ISA описания для pcommit является немного загадочным:Что делает инструкция PCOMMIT?

PCOMMIT инструкции вызывает определенные операции магазина-память для постоянной памяти диапазонов к становится постоянными (защищенный сбой питания) , В частности, PCOMMIT применяется к тем магазинам, которые были приняты в память , принятой в память.
[...]
Если PCOMMIT выполняются после того, как магазин на постоянная область памяти принимается в память, магазин становится упорной, когда PCOMMIT становится видимой в глобальном масштабе.
[...]
Данные в хранилище в постоянной памяти становится постоянным (долговечный) только после того, как он либо был написан на целевом энергонезависимого устройства, или в какой-то промежуточной сбоев питания защищаемого хранения/буфера.

Он называет такие понятия, как постоянной памяти находится в диапазоне, хранит принимаются в память, магазины становятся постоянными и энергонезависимое устройство .

Каков конкретный контекст?


Это не может быть классическими NV устройства, такими как NOR Flash ROM или устройства NVMe (читайте: новый SSD), поскольку они находятся за переменное числом мостов, в том числе субтрактивных тех декодирований, что процессор имеет без контроля.

ответ

8

Прежде всего pcommithas been deprecated before even shipping to an actual CPU.
Большая часть этого ответа основывается на содержании ссылки выше.


Intel, совместно с Micron, разработали новую форму Non-volatile memory (NVM) под названием 3D XPoint (от его внутренней структуры).
actual implementation, как кэш диска, уже доступен, и Intel начала готовиться к более широкому внедрению своей технологии NVM некоторое время назад.

В частности, Intel представила, что некоторые модули DIMM могут содержать часть, выполненную с использованием технологии 3D XPoint, и, таким образом, представляют собой энергонезависимое устройство.

Это позволит сделать диапазоны один или более памяти упорной, сбор этих стойких диапазонов называются упорного домена.
Одной из основных особенностей постоянного домена является его способность быть с защитой от сбоев.

Когда магазин сделан он проходит через:

  • В магазине буфера.
    Магазин выполнен/видим локально, но не глобально.
    Буфер хранилища можно промыть различными инструкциями (например, sfence).
  • Иерархия кэш-памяти.
    Хранилище доступно во всем мире (протокол когерентности кэш обеспечивает это).
    Кэш можно очистить различными инструкциями (например, clflush, clflushopt, clwb и др.).
  • Контроллер памяти Write Pending Queue (WPQ).
    Магазин принят к памяти, но он еще не написан на DIMM.
    WPQ может быть сброшен через определенные регистры конфигурации PCIe контроллера памяти или с pcommit.
  • Память.
    Магазин выполнен/записан в память.

В какой точке пути данных над хранилищем находится в постоянном домене и, следовательно, он не будет потерян в случае сбоя питания?
Некоторые контроллеры памяти имеют функцию Asynchronous DRAM Refresh, которая гарантирует, что даже в случае потери мощности WPQ будет правильно разряжен (например, благодаря батарее).
Для этих платформ постоянный домен начинается с WPQ.

Intel, однако, обеспокоена тем, что не все платформы имели бы функцию ADR и создали инструкцию pcommit как способ убедиться, что хранилища, введенные в домен сохранения (pcommit, исполняются в пользовательском режиме).

Это как магазин был предназначен, чтобы быть стойкими

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 

Оказалось, что каждая платформа, которая планирует поддерживать новую технологию Intel NVM также планирует поддержать ADR, поэтому Intel осуждается pcommit в преимущество более простой модели программирования:

mov [X], rax 
clwb [X] 
sfence   

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