В этом контексте (бюджетная потребительская аппаратура) Optane довольно явно просто ссылается на маленький / быстрый SSD с подключенным NVMe, использующий память 3D XPoint (вместо флэш-памяти NAND), что дает ей очень высокую стойкость при записи. (Таким образом, он не изнашивается, если используется как пространство подкачки).
Это все еще будет отстойным для многих рабочих нагрузок, потому что все равно требуется сбой страницы и много микросекунд для доступа по сравнению с ~ 70 наносекундами для доступа к DRAM (потеря кэша) ; он не отображается напрямую на шину памяти процессоров. Кроме того, выполнение не по порядку / предварительная выборка HW / другой параллелизм памяти может удерживать ~ 10 ошибок кэша в полете на физическое ядро, но ошибка страницы сериализуется. Никакой полезной работы не может быть (в этом потоке), пока ОС обслуживает сбой страницы, поэтому у OoO exec нет возможности скрыть любую из этих задержек жестких страниц. (Но даже 70 нс слишком долго, чтобы все равно спрятаться. Тем не менее, наличие нескольких пропусков при перелете на разные линии имеет большое значение для смягчения его для некоторых рабочих нагрузок.)
Использование крайне небольшого объема ОЗУ и зависимость от быстрого SSD для подкачки / файла подкачки - не единственный вариант использования для этого типа Optane. (И, вероятно, даже не хороший вариант использования). Как описывает https://www.tweaktown.com/articles/8119/intel-optane-memory-matters/index.html , его основной сценарий использования - это прозрачный кэш для магнитного жесткого диска. Я думаю, что Intel предоставляет драйверы для Windows, чтобы это произошло. Вы можете купить жесткие диски SATA с ротационным магнитным хранилищем со встроенной флэш-памятью в качестве буфера / кэша для часто используемых частей диска. Драйверы Optane HW + могут сделать это для любого диска.
Optane NVMe, по-видимому, имеет очень хорошую производительность случайного чтения на малой глубине очереди (дождитесь окончания одного чтения, прежде чем начинать другое, что, к сожалению, происходит, когда программе нужно прочитать один блок, прежде чем она сможет выяснить, что делать дальше, и предварительная загрузка программного обеспечения не выполняется. не помогаю). Так что это должно быть замечательно для ускорения времени запуска программы и загрузки.
Не особенно удивительно для больших непрерывных записей больших файлов; Надеемся, что программное обеспечение драйвера знает, как обойти кеш Optane и перейти прямо к соответствующему магнитному диску. Главная страница Intel Optane ссылается на https://www.intel.ca/content/www/ca/en/products/memory-storage/optane-memory/optane-16gb-m-2-80mm.html, на которой показан их 16- гигабайтный M .2 Optane имеет последовательное чтение 900 МБ / с, но только 145 МБ / с. Версия на 32 ГБ работает быстрее, со скоростью 1350 МБ / с на чтение, 290 МБ / с на запись. Но опять же, это не то, что Оптан лучше всего. Это IOPS с последовательным и случайным чтением - это 240 000 IOPS с задержкой чтения 7 мкс.
У Intel есть нечто, называемое IMDT (технология Intel Memory Drive), которое может включать в себя фактическое отображение хранилища PCIe NVMe в адресное пространство памяти, возможно, для прямого доступа в виде оперативной памяти. (Я не уверен, что это правильно.)
http://www.lmdb.tech/bench/optanessd/imdt.html имеет несколько тестов с твердотельным накопителем Optane DC P4800X. (Высококачественная версия дата-центра, а не потребительские вещи. Гораздо выше устойчивая способность записи.)
Я не изучал это, поэтому я не уверен, имеет ли это какое-то отношение к тому, как Windows может использовать потребительский Optane SSD.
Название бренда Optane (несколько странно) также используется для гораздо более интересных экзотических вещей:
3D XPoint Энергонезависимые модули DIMM, также известные как Apache Pass, или "Постоянная память Optane DC". https://www.anandtech.com/show/12828/intel-launches-optane-dimms-up-to-512gb-apache-pass-is-here.
Intel имеет свою собственную основном предпродажную страницу для этого здесь, с некоторыми ссылками на деталь технологий. "DC" означает Data-Centric, по-видимому.
Это энергонезависимое хранилище, которое подключается к слоту DDR4 DIMM и отображается как фактическая физическая память. По всей видимости, он полностью поддерживается только Xeons следующего поколения (а не текущей серией Skylake-X, известной как Skylake Scalable Processor).
Существуют и другие типы NVDIMM, например, обычная DRAM с батарейным питанием (опционально с флэш-памятью для сброса данных при длительном отключении, поэтому им нужен только суперконденсатор вместо химической батареи). https://en.wikipedia.org/wiki/NVDIMM содержит некоторые подробности.
https://www.electronicdesign.com/industrial-automation/why-are-nvdimms-suddenly-hot содержит более общую информацию о NVDIMM (и их стандартизации JEDEC, а также о том, как приложения OS + могут взаимодействовать, чтобы позволить приложениям взаимодействовать напрямую с область памяти, отображенная в хранилище NV, обеспечивающая порядок фиксации и т. д.). Суть в том, что они фактически стирают грань между оперативной памятью и хранилищем (в смысле архитектуры компьютера, а не в строго маркетинговом смысле обманной рекламы ноутбука, которую вы видели, которая требовала 4 + 16 ГБ.)
Операционная система может позволить процессу отображать эту энергонезависимую физическую память в собственное виртуальное адресное пространство, чтобы они могли получать доступ к хранилищу напрямую с нагрузками пользовательского пространства и сохранять по адресам памяти без каких-либо системных вызовов, что позволяет аппаратному обеспечению ЦП продолжать работу вне выполнение ордера пока есть ожидающие чтения / записи. (Существуют программные библиотеки, позволяющие разработчикам воспользоваться этим, в том числе возможность flush()
и убедиться, что данные действительно записываются в постоянное хранилище.
Это отображение может даже быть кэшируемым с обратной записью, поэтому использование данных полностью извлекает выгоду из кэша L3/L2/L1d до тех пор, пока не пришло время записать его обратно (если он был изменен). Для данных, предназначенных в основном для чтения, этот тип Optane действительно можно с полным основанием назвать 4+16 ГБ ОЗУ. (Конечно, в текущем сценарии использования ЦОД для Optane NVDIMM будут использоваться гораздо большие модули DIMM, например, 512 ГБ.)
(Это не похоже на файл mmap
ed на обычном диске, где вы просто отображаете кеш страницы ОС для этого файла, а ОС заботится о выполнении ввода-вывода в фоновом режиме для синхронизации грязных страниц ОЗУ с устройством хранения.)
Важно убедиться, что некоторые данные действительно достигли хранилища NV раньше других (чтобы обеспечить возможность восстановления после сбоя, например, файловой системы или журнала базы данных). С системными вызовами вы можете использовать POSIX fsync
или fdatasync
. Но так как приложение имеет хранилище, действительно отображаемое в памяти, именно здесь приходят вызовы библиотечных функций.
В x86 asm мы обращаемся к хранилищу с обычными загрузками / хранилищами, но мы заботимся о том, когда данные фактически записываются обратно в NVDIMM (где это безопасно от потери мощности), а не когда они видны другим ядрам или к когерентному DMA (как только он фиксируется из буфера хранилища в кэш L1d), поэтому обычные правила упорядочения памяти в x86 не полностью заботятся обо всем. Нам нужны специальные инструкции для очистки выбранных строк кэша из кэша процессора. (Для использования библиотеками хранения NV)
clflush
asm существует уже некоторое время, но хранилище NV является основной причиной, по которой Intel добавила clflushopt
в Skylake (хотя она также имеет другие варианты использования) и добавляет clwb
в Ice Lake (обратная запись без выселения).
Дэн Луу недавно написал интересную статью о преимуществах отказа ОС от доступа к хранилищу, подробно описав планы Intel на тот момент для clflush
/ clwb
и их семантику упорядочения памяти. Она была написана, когда Intel все еще планировала потребовать инструкцию под названием pcommit
(постоянная фиксация) как часть этого процесса, но позже Intel решила удалить эту инструкцию: У устаревшей инструкции PCOMMIT есть некоторая интересная информация о том, почему и как все работает в рамках капот.
(Это стало неуместным в деталях низкого уровня хранения x86 NV. Я должен найти где-нибудь еще, чтобы опубликовать большую часть этого раздела, но я так думаю)
Есть также твердотельные накопители Optane DC, такие как карта PCIe x4 или 2,5 ". Версия 750 Гбайт обеспечивает последовательное чтение до 2500 МБ / с, последовательную запись 2200 МБ / с и произвольное чтение или запись 550000 IOPS. Задержка чтения немного хуже, чем у M.2 NVMe, при 10 мкс.
Это то, что вам нужно, если вы используете сервер базы данных или что-то в этом роде (если вы не можете использовать NVDIMM), но это не сделает ваш 4-Гбайт ноутбук намного быстрее (для большинства типичных случаев использования), чем 16-Гб Оптан, с которым они продаются. Перестановка пространства подкачки часто приводит к большому количеству зависимых чтений, так как страница должна быть разбита на страницы и получать к ней доступ, прежде чем код с ошибкой страницы сможет перейти к тому, что он собирается делать дальше. Если памяти действительно мало, у ОС нет запасных страниц для агрессивной предварительной выборки, так что вы ожидаете малую глубину очереди, для которой оптимизирован потребительский Optane. (Низкая задержка.)