Следующим шагом эволюции компьютеров (который уже буквально на пороге) может стать постоянная энергонезависимая память большой ёмкости. Твёрдотельные накопители на несколько терабайт обеспечивают одновременно и длительное хранение данных, и функции оперативной памяти.

Это идеальный путь для развития компьютерных систем, так как он устраняет одно из фундаментальных противоречий современной компьютерной архитектуры. Но он вполне может хорошенько перемешать фигуры на доске существующей компьютерной индустрии, поскольку придётся изменить не только компьютеры, но и софт.

Независимость — это свобода



Общий принцип организации перекрёстной матрицы памяти RRAM

Всем хорошо известны отличия энергозависимой памяти от энергонезависимой. Данные, хранящиеся в энергозависимой памяти живы только до тех пор, пока система работает. Как только подача энергии прекращается, данные становятся недоступными. Именно так работает оперативная память компьютера (ОЗУ) и кэш-память процессора.

Энергонезависимая память сохраняет информацию при отключении питания и хранит значительно бóльшие объёмы данных. Но работает она, на сегодняшний день неэкономично и гораздо медленнее, хотя именно в ней и содержится основная часть данных. Именно поэтому оперативная память остаётся первичной и применяется для хранения данных, необходимых ЦП для работы ОС и программ.

Сегодня существуют несколько видов быстрой энергозависимой памяти. Это динамическая, например, широко распространённая DRAM, разные версии которой используются в качестве ОЗУ, в ячейках она имеет транзистор и конденсатор, статическая (SRAM, применяется в качестве кэш-памяти ядра процессора), с шестью транзисторами в ячейке.

Но главная проблема состоит с том, что энергозависимая память, сколь быстра бы она ни была, отключаясь, теряет всю информацию. Это неудобно, но так работают сегодня большинство компьютерных систем. Пока.


Матрица RRAM под микроскопом

Поэтому и появились новые разработки быстрой, но уже энергонезависимой памяти. Это, например, резистивная память с произвольным доступом (RRAM, ReRAM, Resistive random-access memory). В её основе лежит свойство диэлектриков создавать внутри себя проводящие каналы при приложении высокого напряжения. Причём, изменив уровень напряжения проводящий канал можно разрушить, а затем создать снова. Получается так называемый мемристор, из которых и собираются матрицы памяти ReRAM.

Сдвиг по фазе? Нет, фазовый переход!



Эскизная схема двухслойной памяти 3D XPoint. На пересечении линий (серый) показаны запоминающие ячейки (зелёный) и селектор (жёлтый)


В качестве ещё одного примера энергонезависимой памяти, претендующей на место ОЗУ, часто приводят 3D XPoint от Intel (торговая марка Optane). Она использует уже другой эффект — phase-change memory (PCM), изменение фазового состояния материала ячейки (кристалла халькогенида) при нагреве электрическим током. Халькогениды — бинарные химические соединения халькогенов (к которым относятся кислород, сера, селен, теллур, полоний, ливерморий) с металлами. В случае 3D XPoint используется халькогенидное стекло на основе сплава антимонида и теллурида германия Ge-Sb-Te). Память состоит из селектора и, собственно, ячейки, которые находятся в точках пересечения перпендикулярно друг к другу проложенных проводников (wordline и bitline). Селектор (ключ) включается при подаче на него напряжения и меняет состояние ячейки либо позволяет считать информацию. Память имеет многослойную структуру (она построена на базе вертикально интегрированных ячеек PCMS), что позволяет масштабировать плотность её размещения на кристаллах.

Phase-change memory на сегодняшний день считается наиболее перспективной технологией, которая может прийти на замену энергозависимой оперативной памяти. Она наиболее полно сочетает преимущества, которые присущи NAND, NOR, EEPROM и DRAM. При этом наиболее серьёзные недостатки всех этих видов памяти у PCM отсутствуют. Зато, преимущества очевидны. Изменение фазы вещества исключает возможные сбои в виде электрических помех, как это бывает в DRAM. Минимальные размеры стабильных ячеек — до 5 нм, что обеспечивает глубокую масштабируемость технологии. Phase-change memory позволяет выполнять побитное изменение данных, что возможно в DRAM, но нельзя сделать в NAND (там приходится оперировать крупными блоками).

Поскольку PCM обеспечивает высокую скорость чтения и произвольный доступ к ячейкам памяти, код можно запускать оттуда, без дополнительного сохранения его ещё куда-либо. К сожалению, пока скорость записи Phase-change memory не столь высока, как хотелось бы (она сравнима с этим показателем у NAND) но время начальной задержки у PCM, примерно в сто раз ниже. Кроме того, отсутствует цикл стирания.



Впрочем, у существующих разработок Phase-change memory на халькогенидах есть недостатки. Активный нагретый материал влияет на связанные с ним диэлектрик и электрод, что неизбежно вызывает постепенную их деградацию. Значительное изменение температуры извне может провоцировать утечку заряда и тем самым негативно влиять на длительность хранения данных. Для смены фазы ячейки требуется обеспечить высокую плотность тока, что непросто при нанометровых размерах матрицы и сокращает активную зону воздействия. Но часть этих недостатков может быть устранена благодаря недавним исследованиям учёных.

Чудеса в слоистых никелатах



Рендер phase-change memory

В недавнем исследовании, опубликованном в журнале Advanced Science, сообщается об экспериментах с термически обратимым изменением электрического сопротивления при комнатной температуре в слоистых никелатах. Слоистые никелаты представляют собой класс сложных оксидных материалов, состоящих из ионов никеля. Они имеют сложную структуру, в которой слои атомов никеля и водорода перемежаются слоями, содержащими другие элементы, часто щёлочноземельные или редкоземельные. Именно эта уникальная слоистая структура привлекла интерес исследователей из-за свойств электронов, которые сулят слоистым никелатам применение в таких областях, как сверхпроводимость и электроника.

Свойства никелатов исследуются уже давно. В 2020 году учёные из Женевского университета (UNIGE) в сотрудничестве со швейцарским федеральным технологическим институтом в Лозанне EPFL), Цюрихским университетом и Льежским университетами, а также Нью-Йоркским институтом Флэтайрон выяснили, что слоистые никелаты по энергоэффективности могут превзойти кремний, причём с более низким энергопотреблением, обеспечив снижение дополнительных выбросов CO2 при производстве.


Схематическое изображение гетероструктур со сверхрешёткой, включая слои никелата самария поверх слоёв никелата неодима

Такие никелаты образуются из оксида никеля и атома редкоземельного элемента. В соответствии с тем, какой элемент использован, меняется и температура порога проводимости. Для самария она составит 130° C, для неодима −73° C. Столь значительная разница возникает из-за редкоземельных элементов, которые по-разному деформируют кристаллическую решётку никелата.

Команда учёных проанализировала поведение материала из нескольких слоёв никелата самария, поверх слоёв никелата неодима. Выяснилось, что если слои относительно толстые, то они работают на стандартной для составляющих их материалов температуре, но если сделать их тонкими, то образец становится «сэндвичем», в котором возникает эффект «скачка» проводимости в одном определённом промежуточном диапазоне температур. Причём всё это происходит без искажения кристаллической структуры материала, что предполагает надёжность, термическую и химическую стабильность процесса (никаких фазовых переходов и аморфных состояний, как в случае с халькогенидами, никакого перегрева и высоких температур), а значит — беспрецедентные перспективы для использования никелатов в электронике.


На схеме отражён процесс переключения электрического сопротивления в Sr2,5Bi0,5NiO5. Два объекта вверху — это кристаллические структуры Sr2,5Bi0,5NiO5 с различным расположением Sr/Bi. Внизу приведена кристаллическая структура двойного перовскита Sr2BiNiO4,5. Синее значение показывает электрическое сопротивление каждого слоя

Но вернёмся к недавнему исследованию, опубликованному Advanced Science. Созданный учёными никелат состоит из слоёв образований атомов стронция, висмута и кислорода, по структуре напоминающих каменную соль, чередующихся со слоями образований из атомов стронция, никеля и кислорода, по структуре напоминающих перовскит (псевдокубическая форма из геологии, иссечённая короткими штрихами). Эта специфичная кристаллическая структура формируется из двух положительно заряжённых атомов и одного с отрицательным зарядом, обладая свойствами сверхпроводимости и сегнетоэлектричества (явление спонтанной электрической поляризации в кристалле при определённой температуре даже в отсутствии внешнего электрического поля). Термически реентерабельное изменение полярности в слоистых никелатах (которое достигается подачей определённого напряжения) обеспечивает обратимое переключение электрического сопротивления при комнатной температуре, что позволяет разработать многоуровневую энергонезависимую память.

Если удастся довести исследования до логического завершения, слоистые никелаты могут привести к революции в компьютерной технике. Оксиды переходных металлов (более широкое понятие, включающее никелаты) в природе встречаются чаще, чем халькогениды, что потенциально может привести к снижению затрат на производство электроники и сделать процесс более экологичным.

ReRAM+PCM — взболтать, но не смешивать!



Гибридные мемристоры с фазовым переходом открывают новые вычислительные возможности

Новые технологии, способные заменить энергозависимую память, продолжают появляться. Недавно команда учёных из университета Рочестера разработала новый материал для создания энергонезависимой памяти. По словам разработчиков, этот гибрид технологии, основанной на мемристорах (о ней шла речь выше) и памяти с фазовым переходом сочетает в себе лучшие свойства обоих видов резистивных переключателей. Разработчики технологии анонсируют низкое энергопотребление такой памяти и высокую плотность упаковки матрицы в кристалле. Технология основана на материале толщиной всего в один слой атомов.

В оригинальных технологиях не устранён целый ряд недостатков. Мемристоры, которые имеют ничтожный размер и постоянно разогреваются до высоких температур, не так надёжны, как хотелось бы. В свою очередь, материалы, обеспечивающие запоминание, при помощи фазового перехода вещества (фактически, его расплавления), требуют для работы больших токов, что, как уже говорилось выше, не так просто обеспечить при плотной упаковке ячеек в кристалле. Гибридная разработка состоит в том, что на кристалл воздействует небольшой ток, который не плавит его, а переводит в состояние, когда его сопротивление меняется.

Чтобы обеспечить неустойчивое состояние кристалла, которое легко изменить небольшим током, потребовалось создать специальный материал, растянутый до состояния тончайшей плёнки в одном направлении и сжатый в другом. В экспериментах использовался дителлурид молибдена (MoTe2). Напряжение, необходимое для переключения ячейки составило 90 мВ, а время переключения — 5 нс. Все параметры такой памяти можно регулировать путём изменения технологии производства и подаваемого на ячейки напряжения. Сейчас исследователи заняты повышением надёжности своей разработки.

Файловые системы — на свалку истории


Начиная с эпохи мейнфреймов компьютеры использовали жёсткие диски и два уровня хранения данных: оперативную память и дисковое хранилище, доступ к которому осуществлялся через дисковый контроллер с использованием файловой системы для индексации и последующего извлечения содержимого. Если постоянное хранилище будет на карте памяти процессора, необходимость в дисковых контроллерах, файлах и файловой системе исчезнет. Трудно представить, что разработчикам удастся адаптировать к новым условиям существующие сегодня Unix-подобные операционные системы, с самого первого дня своего создания ориентированные на работу с файлами, каталогами и метаданными, которые являются их фундаментальной основой. Они тоже могут исчезнуть. Потребуются ОС и программное обеспечение с совершенно иной компьютерной архитектурой.

Содержимое оперативной памяти будет сохраняться от выключения до следующего включения компьютера. Причём храниться можно будет не только «снимок» оперативной памяти, регистры, но и состояние программ перед выключением, которое уже и не станет «шатдауном», в полном смысле этого слова.

Если создать ОС, которая обеспечит независимость сохранённых данных за счёт некой спецификации, то наличие самого компьютера и его физическая конфигурация могут оказаться не таким уж важным элементом системы. Это вполне может привести к ещё одной, пока неочевидной революции в компьютерной отрасли. Например, блок памяти может быть у каждого свой, его станет возможным носить в кармане, как сейчас карту SSD и при подключении начинать работу с того места, где она была завершена, со своими, привычными только вам настройками. Некоторые серверы необязательно должны будут всегда находиться во включённом состоянии. Может сильно упростится жизнь и для программистов, которым во многих случаях уже не потребуется производить сериализацию состояния программы. Пока это звучит как фантастика, но персистентная память и персистентные ОС уже существуют и постоянно совершенствуются, так что изменения однажды произойдут.

ОС нового типа есть, но это не точно


Пока одни разработчики только строят планы и подбирают технологии для создания персистентной ОС, другие уже работают над подобными проектами.



Одна из операционных систем, опирающихся на новые принципы — ОС «Фантом» от известного разработчика Дмитрия Завалишина. Концепция ориентации на файлы, стандартная для Unix-подобных систем в ней изменена на концепцию, главным элементом которой является объект. ОС представляет собой виртуальную машину, обеспечивающую восстановление системы с момента последнего выключения за счёт того, что периодически делает и сохраняет снимки своего состояния. Новые принципы, заложенные в проекте, позволяют ОС не замечать перезагрузок и сохранять состояние компьютера, в том числе и при аварийном завершении работы. Все приложения работают в едином адресном пространстве и обмениваются данными через ссылки, а разделение доступа обеспечивается тем, что любые данные обрабатываются, как отдельные объекты и получить объект, принадлежащий другому процессу нельзя. В системе много интересных «фишек». Проект ещё в стадии разработки.



Существуют и другие ОС, включающие отдельные элементы и идеи, использованные в ОС «Фантом». Это IBM i, EROS, Singularity, и PalmOS. Из них, наиболее полно критериям персистентной ОС отвечает проект IBM i, наследник OS/400. Эта операционная система является объектно-ориентированной, содержит одноуровневую память, управляемую среду и поддерживает, собственно, персистентность. Но на сегодняшний день это не ОС для домашних компьютеров, а довольно дорогое платное серверное решение для бизнеса.



Будущее


Вполне вероятно, что грядёт эра энергонезависимого ОЗУ, совмещающего ещё и функции хранилища данных. И возможно, что встретим мы её не только с другими компьютерами, но и с иными операционными системами и другими программами, так как существующий софт не совсем подходит под новую концепцию.



Читайте также:


Комментарии (43)


  1. ar2rsoft
    25.12.2023 08:16

    Содержимое оперативной памяти будет сохраняться от выключения до следующего включения компьютера

    То есть самый действенный сейчас метод починки поломок в ОС/программах перестанет работать (выкл/вкл)


    1. Akina
      25.12.2023 08:16

      Ну то есть по сути мы будем просто иметь эдакий супер-спящий режим - когда состояние оперативной памяти не надо сбрасывать на накопитель. Но тогда при старте именно процедуры БИОС должны будут запрашивать либо определять, запустить ОС "с нуля" или с текущего состояния - сама ОС этого сделать не сможет.

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


      1. doo000
        25.12.2023 08:16

        Вообще-то периферия, о которой вы говорите, прямо таки нормально работает и прямо щас. Т.е. с точки зрения современной операционной система вытаскивание флешки или шнурка монитора прям щас, на ходу - не является чем-то запредельно сложным в обработке. А теперь следим за руками :) - остановка работающей машины и продолжение ее программы с того же места с точки зрения программы - не остановка. Следовательно - выключили (засуспендили) программу, вытащили флешку, включили - с точки зрения программы это всего лишь выдергивание флешки 'в процессе". Ничего страшного.


        1. Akina
          25.12.2023 08:16

          Совсем ничего страшного, если программа в этот момент вообще не общается с устройством. Насчёт флешки согласен - максимум получим армагеддон на самой флешке и сбой файловой операции в программе. А с подключенным устройством, которое требует для общения предварительных настроек/согласований или синхронизации операций ввода и вывода, всё будет не так шоколадно. Опять же сетевые протоколы, следящие, например, за последовательностью пакетов или штампами времени - развалятся. В общем, ПО обязано будет учитывать такие временнЫе лакуны в работе.


          1. Sly_tom_cat
            25.12.2023 08:16

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


    1. RichardMerlock
      25.12.2023 08:16

      А ведь это можно и сделать и сейчас, спроектировав энергонезависимое питание контроллера памяти DRAM.


      1. unreal_undead2
        25.12.2023 08:16

        Вроде были такие решения, но как то дороговато получается.


        1. RichardMerlock
          25.12.2023 08:16

          Скорее всего, не дороже ИБП, который эту проблему решает в том числе.


          1. unreal_undead2
            25.12.2023 08:16

            Может, и дороже, поскольку надо ещё обеспечивать регенерацию, просто подать питание недостаточно. ИБП не совсем то, данные в памяти после ребута не сохраняет.


      1. arheops
        25.12.2023 08:16

        Зачем? Сейчас есть куча вполне спроэктированных NVME дисков с внутренним DRAM кешем. Работают, успевают сбросится.


        1. unreal_undead2
          25.12.2023 08:16

          Идея в том, чтобы иметь терабайты адресного пространства, к которому можно обращаться просто по указателям без явных I/O операций и не терять после выключения питания или перезагрузки.


  1. kovserg
    25.12.2023 08:16

    Потребуются ОС и программное обеспечение с совершенно иной компьютерной архитектурой

    Это ещё зачем? Чем существующие не устраивают?


    1. ivankudryavtsev
      25.12.2023 08:16

      del. не туда


    1. unreal_undead2
      25.12.2023 08:16

      Базовая поддержка в ядре - это конечно, хорошо, но дальше нужно либо полностью писать поддержку на пользовательском уровне (ядро даст по сути только девайс с поддержкой DAX), либо добавлять в ОС удобные механизмы для написания PM-specific кода. Скажем, делать что то типа IBM i (она же AS 400) с общим пространством объектов без разделения память/диск (реально на традиционном железе используется checkpointing). Упомянутый в статье Фантом задумывался похожим образом (по крайней мере во времена, когда dz писал в ЖЖ в основном на технические темы), и вроде он даже до сих пор развивается, но не знаю, насколько готов для реального использования.


  1. ivankudryavtsev
    25.12.2023 08:16

    Современные ОС созданы под фон-неймановскую архитектуру. Кажется, что наличие персистентной RAM принципиально ничего не должно менять. Могут появляться какие-то подсистемы более эффективных инкрементных состояний, но, по-сути, все сейчас уже готово. Вообще, особого профита с этого разработчики пока не увидели, как я понимаю: идея, конечно, красивая, храним все в памяти всегда, а про ФС просто забыли.

    Однако, не совсем очевидны революционные преимущества, оптимизационные вполне понятны - прогрева меньше надо, но ведь и сбросить некорректное состояние уже не так тривиально.

    Кажется, что прорывом будет - когда RAM станет сильно "ближе" к CPU или вообще совмещена с вычислителем (но это уже, возможно, не фон-неймановская архитектура).


    1. yatanai
      25.12.2023 08:16

      Увы рэвольюции не будет.

      Первое - вычислители у памяти это нейросети. Такое уже есть но стоит как крыло самолёта.

      Второе - у памяти с CPU есть огромные, чисто физические проблемы. Первая это время задержки, она чисто физическая - чем больше память тем дольше время доступа к ней. Потому кэш L1 досихпор в +-30КБ делают, ибо так сохраняются нормальные задержки. Вторая проблема это невыровненых доступ к памяти. Из-за довольно фундаментальных проблем память может быть эффективно реализована только постранично-построчно, что напрочь убивает скорость рандомного доступа. На современных DRAM она что-то порядка 400МТ, в то время как выровненная может доходить до +5000МТ. У L-кэшей она в несколько раз выше, но невыровненый доступ также делает несколько циклов доступа к шине, что дропает скорость не в 10 раз но раза в 2 точно.

      Из всех этих нюансов и возникает что единственный эффективный метод сделать универсальную ЭВМ это фигачить её память как бутерброд. В этом плане дна ещё не нащупали. Ибо пока инженеры осваивают L3 кэш в сотню мегабайт, умные дяди потирают ручки в ожидании L4 кэша со сверх широкой шиной в пару гигабайт. Так что всё ещё впереди.

      Физически непонятно как делать память которая бы не была организованна постранично-построчно и имела нормальную пропускную способность/скорость доступа/время рандомного чтения. У любой существующей технологии есть только одна сильная сторона, но никогда несколько.


  1. pavel_kudinov
    25.12.2023 08:16

    думаю, для нашего классического программного обеспечения это не даст какого-то существенного выигрыша, потому что нет прикладной проблемы, которую эта технология решает:

    - десктопный софт всё равно будет иметь функции загрузки/сохранения для обмена данными или для "отката из бекапа"
    - облачные пакеты вроде гугловых таблиц уже и так давно хранят состояние без нажатия "сохранить"
    - серверное ПО работает за счёт бесперебойного энергоснабжения, а при возникновении проблем всё равно весь софт должен (и умеет) переинициализироваться

    если нет реальной решаемой проблемы, то технология будет буксовать на внедрении, даже если технически всё уже будет возможно, на практике - будет никому не нужно

    думаю, ближайшее будущее, где такая память может найти применение - это ИИ агенты, которые должны будут удерживать в памяти объёмы данных, не позволяющие перегружать их достаточно быстро из места постоянного хранения в нейроморфный чип для обработки

    для таких систем может быть ценна возможность "уснуть" без потери состояния, удерживая какой-нибудь петабайтный/эксабайтный слепок состояния сознания прямо в нейроморфном чипе


    1. Didntread
      25.12.2023 08:16

      если нет реальной решаемой проблемы, то технология будет буксовать на внедрении, даже если технически всё уже будет возможно, на практике - будет никому не нужно

      сейчас вы файл открываете и читаете с диска используя буфер в цикле, а будете сразу указатель на данные получать. Это ли не zero-copy к которому все стремятся?


      1. pavel_kudinov
        25.12.2023 08:16

        пример хороший, согласен

        для баз данных такой подход действительно сулит много хорошего, по сути там давно есть запрос на возможность постоянного хранения больших объёмов данных со скоростью доступа как у оперативной памяти

        однако, у меня есть несколько сомнений касательно экстраполяции того, по какому именно пути пойдёт прогресс

        1. самое простое, при чтении данных конечная цель, как правило, состоит не в получении указателя на буфер данных в памяти, а инициализация/парсинг этих данных. zero-copy там будет в одном месте, но потом в процессе работы программы данные как правило неоднократно копируются, особенно с учётом современной всеобщей любви к иммутабельности и чистым функциям, в которых принято копировать все данные ради того чтобы поменять их часть. конечно, когда это будет реализовано как copy-on-write паттерн на уровне ядра - некоторый прогресс, скорее всего, будет достигнут, но обращу ваше внимание, что тот же copy-on-write был изобретён десятки лет назад, однако не привёл к автоматическому и повсеместному zero-copy, как об этом мечтали идеалисты fork подхода к порождению процессов

        2. "zero-copy к которому все стремятся" - громкое заявление в прикладном контексте. утрирую, вот например, из моих коллег наверное примерно никто ни к какому zero-copy не стремится, а решают совсем другие задачи и проблемы. zero-copy это, безусловно, хорошее направление развития, как и, например, выше упомянутые чистые функции и иммутабельность. отрасль помаленьку становится умнее. но не стоит переоценивать прогресс, на 98% реальный бизнес заинтересован далеко не в красоте и эффективности концепций, а в эффективном производстве и продажах. Слишком быстрый рост прогресса и повсеместное применение космических технологий там где надо, и там где не надо (возьмём хоть микросервисный холивар) - часто, наоборот, вредят бизнесу. итого, я бы сказал, что 98% людей от ИТ не то что не стремятся к zero-copy, а даже и не в курсе про этот паттерн, они вместо этого заняты реальным миром и реально полезными вещами

        3. следом за скоростью чтения данных автоматически встаёт вопрос о скорости их обработки. серверные CPU безусловно будут развивать многоядерность и дальше, но реальная следующая революция - уверен, в SIMD обработке данных на GPGPU или им подобных платформах. GPGPU эффективно работает только с памятью, расположенной очень рядом с чипом (а лучше - воообще на нём). Поэтому данные из CPU RAM копируются в GPU RAM для обработки и обратно, и по сравнению со скоростью, с которой GPU может их перелопатить - время переброса данных по шине примерно так же (в тысячи раз) медленнее, как время чтения данных с диска по сравнению с чтением их из CPU RAM. итого, к моменту когда где-то реально понадобятся петабайты энергонезависимой памяти со скоростью работы CPU RAM, будет стоять уже совсем другая проблема - как достичь от этой памяти скорости работы GPU RAM и разместить так близко к чипу, чтобы пропускная способность была достаточна для загрузки всех ядер. и снова получим ту же ситуацию - данные из "медленной" энергонезависимой CPU RAM будут грузится для обработки в быструю энергозависимую GPU RAM

        4. когда дойдём до нейроморфных чипов, оптических компьютеров и, если повезёт, квантовых - цикл снова повторится. итого, разделение на медленную энергонезависимую доступную в большом объёме память и быструю энергозависимую доступную в небольшом объёме память - скорее всего будет сохраняться. приведённая выше технология решает проблему, которая уже почти успела устареть


      1. slonopotamus
        25.12.2023 08:16

        Погуглите про mmap.


        1. unreal_undead2
          25.12.2023 08:16

          Под капотом mmap на обычном диске блочные операции. Персистентная память даёт возможность записывать отдельные кеш линейки. А так да, тот же интеловский 3DXPoint в персистентном режиме поддерживается в линуксе через mmap и DAX.


          1. slonopotamus
            25.12.2023 08:16

            Не чувствую принципиальной разницы между "блоками читаем с диска в оперативку" и "кэшлиниями читаем из оперативы в кэш процессора". По сути получили просто двухуровневое кэширование (а если вспомнить что в современных процессорах несколько кэшей, то скорей четырёхуровневое).


            1. unreal_undead2
              25.12.2023 08:16

              Разница в производительности при случайном доступе к памяти, блоками много данных зачитывается зря.


  1. Tyusha
    25.12.2023 08:16

    Вопреки окружающей действительности в МФТИ имеются передовые разработки по этой теме на мировом уровне. Хотя конечно о коммерчески успешном внедрении, как это повелось ещё с СССР, говорить не приходится. И скорее всего получится "как всегда".


    1. SergeyMax
      25.12.2023 08:16

      Ну тут одно из двух: или разработки не такие передовые, или просто место проклятое.


  1. hurtavy
    25.12.2023 08:16

    Это идеальный путь для развития компьютерных систем, так как он устраняет одно из фундаментальных противоречий современной компьютерной архитектуры
    Хоть бы написали, что за противоречие...


  1. Karopka
    25.12.2023 08:16

    Во время учебы в ВУЗе пришлось изучать одну советскую ЭВМ ("ЭВМ А-40"). В ТЗ к разработке ее было требование "Энергонезависимая оперативная память", чтобы после сбоя питания можно было продолжить вычисления с того же места. Ну, сделали ОЗУ на ферритовых сердечниках, в итоге ничего хорошего, кроме дополнительного геморроя, не получили: ЭВМ - это не только оперативная память, но и регистры процессора, и периферия, и самоё главное - это унаследованный софт. При сбоях питания (случалось довольно часто) комплекс обычно тупо зависал. А ещё он зависал на некоторых "сырых" прикладных задачах, приходилось перезапускает ручками; другого дешёвого способа образумить зависшую ОС вроде как до сих пор не придумали.

    Ладно, это давно было. В современных условиях, имхо, энергонезависимая RAM уменьшила бы время входа/выхода в/из спящего режима. Вот и вся революция.


    1. unreal_undead2
      25.12.2023 08:16

      Естественно, софт должен писаться явно с использованием persistent memory. Есть, скажем, набор библиотек PMDK ( https://pmem.io/pmdk/ ) для упрощения реализации поддержки. Но основные сложности скорее в редизайне - для примера можно посмотреть описание поддержки PM в SAP HANA ( https://www.vldb.org/pvldb/vol10/p1754-andrei.pdf ) - не знаю, дошло ли оно до production.


      1. Gutt
        25.12.2023 08:16

        Дошло, у нас HANA на Optane крутится. Не очень понятно, какие преимущества мы получили.


        1. unreal_undead2
          25.12.2023 08:16

          По идее должно после перезагрузки или выключения питания стартовать быстрее.


  1. unreal_undead2
    25.12.2023 08:16

    А что конкретно сейчас на рынке есть из persistent memory? Интеловский 3DXPoint уже всё; у Микрона раздел на сайте есть, но конкретных моделей с ценами сходу не вижу.


    1. Wizard_of_light
      25.12.2023 08:16

      HP вроде до сих пор продаёт планки стандарта NVDIMM.


      1. unreal_undead2
        25.12.2023 08:16

        Они на страничке Intel Optane упоминают, подозреваю что распродают остатки (ну или Интел для них по контракту обязался какое то время продолжать выпуск - в любом случае это ненадолго).

        У HP была интересная идея архитектуры, по сути основанной на PM (The Machine), но там всё вроде осталось на стадии прототипа.


    1. arheops
      25.12.2023 08:16

      Интел все еще продает оптан. Но поскольку современные NVME по сути его догнали практически, это бесполезно.

      Реклама оптана и новые разработки - свернуты.

      Даже кеш из оптана - не взлетел, драм-буфер + батарейка все так же эффективнее.

      В США интеловский оптан все так же доступен в планах хостинга IBM.


  1. akurilov
    25.12.2023 08:16

    Помнится, в 10х годах обещали революцию с мемристорами. Где оно все сейчас?


  1. arheops
    25.12.2023 08:16

    Прошлая такая инициатива под названием Intel Optane провалилася, ибо 1) дорого 2) дорого 3) выигрышь минимальный.4) требуется переписывать софт(никто не хочет).


  1. t-jet
    25.12.2023 08:16

    Предложенный подход потребует и новой архитектуры всей вычислительной системы, новой ОС, с другой идеологией (виртуальная память не очень хорошо ложится на этот подход, хотя и нельзя сказать, что это нерабочий подход).
    Логично, что и программы будут работать несколько по другому (на низком уровне, тк не будет острой необходимости выполнять ввод-вывод с постоянной памяти, а можно работать, как с обычной, да и работа с регистрами и обычной памятью, может быть немного переделана ....) Очень интересно и ждём первых прототипов, хотя бы на уровне виртуальных машин.
    Спасибо за статью, заставила задуматься :-)


    1. unreal_undead2
      25.12.2023 08:16

      Почитайте Солтиса про архитектуру AS/400, она как раз должна подойти, хотя сама система работает на обычном железе.


    1. 0x131315
      25.12.2023 08:16

      Сейчас если что-то есть в постоянной памяти, его не обязательно загружать в оперативную, можно просто отобразить, тогда получаем почти прямое чтение из постоянной памяти при обращении к оперативной, но немножко буферизированное, для снижения iops нагрузки. Так что тут какой-то проблемы давно нет, и все упирается только в скорость диска. С этой точки зрения быстрый классический ssd или быстрая постоянная память - практической разницы нет, чтение идет точно также только при доступе к конкретным страничкам данных.

      А вот что касается регистров, уйти от них нельзя. Чтобы процессор был быстрым, все данные у него должны физически находится на расстоянии не больше нескольких миллиметров от ядра. Любые попытки увеличить расстояние закономерно увеличивают и длину линий, и задержки, что снижает частотный потенциал и производительность. А это значит что не смотря на постоянную память, софт продолжит иметь часть состояния за пределами этой постоянной память, и продолжит терять свою память при любых сбоях. Конечно частично это можно обойти костылями, например сбрасывать регистры на диск при сбое по питанию, пока емкости подсистемы питания еще держат заряд и есть несколько сотен миллисекунд все сохранить. Но ровно тоже самое можно делать и сейчас, только это никому не нужно, надежнее просто обеспечить постоянное питание.

      А от программных и аппаратных ошибок не застрахован никто, так что даже при наличии постоянной памяти любую программу нужно будет время от времени перезапускать.

      Вот и выходит что как бы постоянная память это шаг вперед, как минимум потому что ssd должны будут приблизиться к параметрам оперативной память, но в тоже время по факту она ничего не меняет, как это пытаются расписать в статьях: те же регистры, тот же образ программы в памяти (пусть физически теперь этот образ и не в оперативке а в каком-нибудь служебном файле на диске), и все те же проблемы со сбоями и ошибками, с перезапуском программ и ОС.


  1. vvnab
    25.12.2023 08:16

    Этой "революции" лет двадцать уже. РазбудИте когда наконец состоится...


  1. Alex_Sage
    25.12.2023 08:16

    Я листал страницу, читая заголовки, и остановился на мейнфреймах, там прямо был порыв мысли. Прочитав пару абзацев, стал спотыкаться на опечатках и ошибках. Я выписал те фразы, что нашёл, на случай если вам не будет жаль времени на редактирование статьи. К запятым решил не докапываться, статья и без них вполне грамотная и научная :)

    "обладая свойствами сверхпроводимости и сегнетоэлектричества" --> "и получает свойства сверхпроводимости и сегнетоэлектричества";
    "Причём храниться можно будет не только «снимок» оперативной памяти" --> видна рука редактора, точнее, незаконченная правка: нужно убрать либо постфикс у глагола ("хранить можно будет"), либо слово "можно" ("храниться будет");
    "перед выключением, которое уже и не станет «шатдауном»" --> или "которое уже не будет «шатдауном»", или "которое станет уже не «шатдауном»";
    "носить в кармане, как сейчас карту SSD" --> тут у меня уже поползла улыбка: либо это опечатка смешала вместе планки SSD и карты памяти SD, либо это часть описываемой фантазии;
    "необязательно должны будут всегда находиться во включённом состоянии" --> снова два варианта: либо убрать "обязательно" и оставить только частицу "не", либо убрать "всегда".

    Спасибо за публикации!


  1. gorpsys
    25.12.2023 08:16

    Перестанет существовать одна из самых больших проблем - необходимость загрузки данных в память для работы с ними. Можно будет данные обрабатывать прямо там, где они хранятся.
    Такие системы будут идеальны для баз данных


  1. 0x131315
    25.12.2023 08:16

    Звучит красиво, но по факту сказка, потому что память программы размазана по внутренним структурам ОС и железа. Наличие постоянной памяти никак не избавляет программу от зависимости от состояния ОС/железа. И нет даже теоретического способа надежно снять такую зависимость.