
Сначала экскурс в историю. Термин RAM (Random Access Memory – память с произвольным доступом) возник в 50-х в отличие от разрядно-последовательной (Serial Access Memory) памяти на ртутных линиях задержки. А годом рождения оперативной памяти RAM можно считать 1947 год, когда Фредерик Уильямс и Том Килбурн изобрели «Трубку Уильямса» - первое устройство памяти с произвольным доступом. На экране электронно-лучевой трубки можно было хранить 1024 бита (2048 в последующей версии). Электронный луч создавал маленькие заряженные точки статического электричества на экране, а специальная металлическая пластина позволяла считывать этот заряд. Нюанс заключался во времени жизни этого заряда – долей секунды. То есть хранимую информацию было необходимо регулярно перезаписывать. И, не поверите, хотя с 1947 года человечество научилось делать транзисторы размером в нанометры, но фундаментальный принцип хранения заряда остался неизменным.

Тем не менее, сам принцип произвольного доступа стал важной вехой в отличие от традиционного чтения магнитных лент, как представителя последовательного доступа.
В 1951 году появились магнитные или ферритовые сердечники, которые стали стандартом запоминающих устройств на последующие 20 лет. Использовались в некоторых моделях БЭСМ, например. Теоретически можно было увидеть биты памяти – это были маленькие металлические кольца, прошитые проводами. Причем делались они вручную. В последствии научились объединять несколько пластин в кубы. Но процесс чтения был разрушающим: после чтения из памяти информацию надо было перезаписывать.

Во второй половине 1960-х Роберт Деннард из IBM изобрел и запатентовал ячейку памяти из одного транзистора и одного конденсатора (патент на изобретение выдан в 1968 году). Фактически, это и есть современная оперативная память и ей исполнилось, дайте подумать… почти 60 лет? Ну ладно, архитектуре. Идее, если хотите. Как и в наши дни, оперативная память состоит из ячеек, созданных в полупроводниковом материале в виде емкости. Каждая ячейка хранит свой бит, причем, поскольку существует «ток утечки», то каждую ячейку требуется подзаряжать. Этим и объясняется то, что при выключении все, что хранится в оперативной памяти, теряется. И отсюда взялся термин DRAM (Dynamic Random Access Memory – динамическая память с произвольным доступом). Динамическая именно в том смысле, что ячейкам требуется постоянная подзарядка.
Первой практической коммерческой реализацией DRAM стал Intel 1103 «убивший» память на сердечниках в 1970 году. Емкость 1К (1024 бита). Можно считать, что с этого момента оперативная память стала не самостоятельным устройством, а частью ЭВМ, «черным ящиком» на плате.

В 1993 году появилась SDRAM (Synchronous Dynamic Random Access Memory – синхронная динамическая память с произвольным доступом) – память, синхронизированная с тактовой частотой процессора. Пожалуй, это был последний раз, когда оперативная память как-то обратила внимание, что в компьютере существуют и другие элементы, например, процессор.
Что можно еще улучшить? Можно удвоить поток. Так в 2000 году вместо SDR (Single Data Rate – передача данных за один такт) появился DDR (Double Data Rate удвоенная частота). А потом DDR2, DDR3, … DDR5.
Специалисты хорошо знают и часто ссылаются на эмпирическое наблюдение, сделанное Гордоном Муром в 1965 году, которое называется Законом Мура, согласно которому количество транзисторов на кристалле интегральной схемы удваивается каждые 24 месяца (если учитывать тактовые частоты процессоров, то многим более известна формулировка Дэвида Хауса об удвоении производительности каждые 18 месяцев). Можно спорить работает ли Закон Мура на сегодняшний день, когда прогресс закончится, уперевшись в физические пределы плотности и скорости света, но нельзя не отмечать, что до 90% времени современные процессоры, с удвоенной за последние 18 месяцев производительностью и удвоенным количеством транзисторов за последние 24 месяца, проводят в ожидании данных из памяти.

Ну да, 90% это конечно гипербола, однако, достижимая в задачах с узким «бутылочным горлышком» (bottleneck). Но проблема, о которой идет речь, «Memory Wall» (стена памяти), описанная еще в 90-х годах, никуда не делась: процессоры стали в разы быстрее памяти. На реальных ресурсоемких нагрузках (AI, Big Data, научные расчеты) CPU/GPU большую часть времени заняты ожиданием данных из памяти или кэша. Согласно статье «AI and Memory Wall» (https://arxiv.org/abs/2403.14123) вычислительная мощность в серверных чипах утраивается каждые 2 года в то время, как пропускная способность памяти увеличивается в 1.6 раза за тот же период.
То есть, чем быстрее процессоры, тем дольше они ждут данных из памяти.
Но, если бы дело обходилось только этой проблемой… К сожалению, есть и другие.
Связанный с законом Мура закон Деннарда (Dennard scaling), принцип, согласно которому при уменьшении размеров транзисторов (техпроцесса) их плотность растет, а энергопотребление остается примерно тем же, перестал работать с середины 2000-х. Уплотнение привело к росту токов утечки, что сделало невозможным снижение электропитания без потери производительности. То есть, наоборот, с повышением плотности энергопотребление начало расти.
Для ресурсоемкой нагрузки стало требоваться больше и больше памяти. Не вдаваясь глубоко в экономический анализ, подметим только, что ее стоимость начала резко расти. То, что стоило 3-5$ за Гб в 21-22 году сейчас легко переваливает за 8-12$ и продолжает дорожать. В то время, кстати, как стоимость Гб на жестком диске упала с десятков тысяч долларов в 1980-х до 2-3 центов сейчас. Да, есть SSD, где в 2010-х гигабайт стоил от 2$ и опустился к 7-10 центам сейчас.
И условно у нас получается иерархия:

И производительность и стоимость падают сверху вниз. Чем выше в иерархии, тем меньше объем хранимой информации, чем ниже, тем дольше время доступа. Для понимания и осознания давайте сделаем вот такую табличку:
Тип памяти | Время доступа (такты CPU) | Время доступа (нс) | Аналогия (если 1 такт = 1 с) | Прикидочная стоимость за Гб |
|---|---|---|---|---|
Регистр | 0 – 1 | < 0.3 | Посмотреть в книгу, которая лежит в руке | $5,000,000 |
L1 кэш | 4 – 5 | 1.2 | Взять книгу со стола (5 сек) | $500,000 |
L2 кэш | 12 – 15 | 4 | Потянуться к книжной полке (15 сек) | $50,000 |
L3 кэш | 40 – 60 | 15 | Подойти к книжному шкафу в углу (1 мин) | $1,000 |
RAM | 200 – 300 | 80 | Сходить в соседний дом в магазин (5 мин) | $4 – $8 |
NVMe SSD | — | 50,000 | Съездить за книгой в соседний город (4-5 ч) | $0.08 – $0.15 |
SATA SSD | — | 200,000 | Слетать в соседнюю страну (несколько дней) | $0.05 – $0.09 |
HDD 7200 RPM | — | 5,000,000 | Совершить кругосветное путешествие (месяцы) | $0.015 – $0.03 |
Вообще не претендуя на точность цифр, исключительно оценка для понимания масштабов бедствия.
И тут мы подобрались к самому интересному вопросу. Довольно очевидно, что если нужно уменьшить время доступа к данным, то их надо переместить выше в этой иерархии. Если стоит задача снизить стоимость хранения, то переместить вниз на более дешевое.
Переносом данных между различными типами дисков и даже дальнейшее архивирование на, например, лентах, занимается различное программное обеспечение – эта задача известна и в какой-то степени решена. Вопрос кэширования как-то решен: перенос данных из кэша в регистры, из оперативной памяти в кэш и вытеснения из кэша решается модулем управления памяти (Memory Management Unit – MMU) и контроллерами кэша.
А вот сфера нашего фокуса сейчас это перенос страниц памяти между RAM и SSD/HDD. Это сладкое слово swapping – процесс перемещения неактивных данных из оперативной памяти на жесткий диск (файл подкачки/swap file) с целью высвобождения места для активных задач. Еще буквально 30-35 лет назад, если при запуске задачи или игры было слышно раскручивание диска до частот готовности к взлету, то можно было сходить за кофе – памяти не хватает, начался своп… С тех пор технология дисков шагнула далеко вперед и их не слышно, а вот сам процесс принципиально не менялся десятилетиями. И суть его не изменилась – если идет swap, то задача будет исполняться существенно дольше, чем того бы хотелось, поскольку памяти для нее не хватает.
Собственно концепция своп-а появилась в 1960-х годах как один из механизмов реализации «виртуальной памяти». Выгружаемые и подгружаемые из/в оперативной памяти страницы обычно попадают в специальный файл или раздел жесткого диска (swap partition).
Технически процессор обращается за данными по определенному адресу виртуальной памяти. Если они есть – отлично. Если нет, возникает прерывание и идет обращение на уровень выше, чтобы их предоставить. И тут, с одной стороны, перед глазами возникает время доступа из таблички выше. А с другой, задача, куда разместить в реальной памяти эти данные. Ведь, «чтобы купить что-то ненужное, надо сначала продать что-то ненужное», то есть необходимо найти место для размещения этих данных и, значит, отправить какие-то другие данные на уровень ниже.
Примерно в те же 60-70е годы прошлого столетия были разработаны алгоритмы определения устаревших страниц (вытеснения). Пожалуй, основной из них:
Least recently used (страницы, доступ к которым, производился наиболее давно).
Наиболее простая и эффективная реализация – часы (clock): страницы располагаются в циклическом порядке (циферблат) и «стрелка» проверяет бит обращения. Если этот бит = 0, страница вытесняется, если 1 то меняется на 0.
Конечно, есть и другие. Например, ARC (Adaptive Replacement Cache), аналогичный используемому в ZFS для кэширования. Он пытается адаптироваться под конкретную нагрузку, динамически балансируя между LRU (недавние обращения) и LFU (частые обращения).
А вот для упреждающего чтения, если утрировать, то есть:
Sequential Read-ahead (последовательное чтение вперед) – хорошо работает в предположении, что если несколько блоков понадобились, то и следующие за ними тоже понадобятся. Ну, а почему нет…
Stripe Prefetching – фактически то же самое, но с некоторым шагом.
И вот, постепенно мы и подобрались к основному вопросу современности в контексте данной статьи.
Процессоры развиваются как не в себя уже десятки лет. И тактовые частоты, и размеры, и ядра, многопоточность… А сверху на все это - виртуализация, параллельные вычисления… Прогресс не то, чтобы не стоит на месте – он мчится.
В устройствах хранения данных появились механизмы RAID, потом аппаратные ускорители (контроллеры), своя кэш память, сами диски каждые несколько лет удваивают емкость. Скорость дисков повышается, размер уменьшается. Появилась абсолютно новая технология flash, SSD. Виртуализируется уже все, что может быть виртуализировано в полной степени, иллюстрируя концепцию SDS (Software-Define Storage).
А, получается в секторе оперативной памяти, RAM идет неспешная эволюция технологий полувековой давности?
И это при том, что стоимость только RAM может составлять до 60% стоимости самого сервера. А самую перчинку добавляет недавний взлет цен на собственно память и образовавшийся ее дефицит. И это же относится не только к стоимости закупки, но и к стоимости владения памятью. Диски останавливают вращение при неиспользовании, все, кто могут, засыпают, если надо, и только оперативная память продолжает потреблять электричество, накручивая счетчики, в силу своего устройства – чтобы не забыть все-все.
Справедливости ради нельзя не отметить, что, конечно, работы ведутся. Появился и развивается открытый стандарт CXL (Compute Express Link) на физическом слое PCIe – попытка объединить оперативную память различных CPU, GPU на разных устройствах (серверах в пределах стойки), виртуализировать ее и использовать как один многоярусный ресурс всеми участниками. Вроде, уже объявлено о создании свитча на 4Тб/сек (Marvell Structera S 30260, анонс - март 2026, само устройство ожидается в Q3 2026), но практической реализации этой «NUMA-like» архитектуры в современной реинкарнации, как я понимаю, пока еще нет, до него еще 1-2 года. Да и главный вопрос открыт – сколько это будет стоить. Не дешевле обойдется, в конечном итоге, просто, по старинке, добавить пусть и супер дорогой памяти в сервер. И не стоит забывать, что это аппаратное решение, которое потребует частичную или полную замену существующего сейчас оборудования.
Другое направление, давайте назовем его «элитарным», в современных технологиях это HBM (High Bandwidth Memory). Чипы памяти располагаются не на плате, а трамбуются в вертикальные «стеки» и размещаются максимально близко к самому процессору или GPU. При этом получается обеспечить сумасшедшую пропускную способность – до 3,3Тб/сек на один стек. Это на порядок больше, чем у DDR5. Оборотная сторона медали – сложность производства, что делает эту технологию в 5-10 раз дороже обычной DRAM. Эта технология используется во многих AI ускорителях.
Но есть и изящное решение от ребят из стартапа MEXT.ai. Хотя называть их «ребятами» несколько самонадеянно: в команду этого стартапа входят такие ветераны индустрии, как:
David Reed (CTO и сооснователь) - один из главных архитекторов протоколов TCP/IP и создателей протокола UDP. Соавтор фундаментального «принципа сквозной передачи» (End-to-End Principle), который является базовым законом построения интернета. Его диссертация 1978 года в MIT ввела понятие MVCC (Multiversion Concurrency Control), технологии, на которой сегодня работают почти все современные базы данных (PostgreSQL, Oracle и др.) для обеспечения одновременного доступа к данным.
Carl Waldspurger - один из ключевых разработчиков в истории VMware. Автор фундаментальных технологий виртуализации памяти, таких как Memory Ballooning и Content-Based Page Sharing. Обладатель более 150 патентов и создатель алгоритма Lottery Scheduling.
И другие специалисты, занимавшие ключевые позиции в компаниях IBM, SAP, AMD, HP, LSI…
MEXT.ai фактически использовал AI (Artificial Intelligence – искусственный интеллект) для решения проблемы AI. Классический тяжеловесный процесс swap преобразуется в оригинальный и низкозатратный способ расширения оперативной памяти. AI, обученный на разнообразных нагрузках, определяет, какие страницы памяти стоит предварительно загрузить в оперативную память, а какие выгрузить из нее. И именно здесь кроется резерв для оптимизации.
Исследования компаний META и Google показывают, что в рамках ЦОДов 40-60% всей памяти это «холодные» страницы, которые почти никогда не используются. Фактически это сотни миллиардов долларов, замороженных в кремнии.

Подход MEXT.ai, реализующий оптимизацию страниц в памяти, позволяет радикально увеличить утилизацию оперативной памяти DRAM и не требует никаких изменений в аппаратном или программном обеспечении. Только за счет установки дополнительного ПО MEXT, а, по сути, дополнительного драйвера Linux, который оптимизирует подгрузку и выгрузку страниц памяти, становится возможно удвоить оперативную память! Или увеличить производительность. И занимает процесс инсталляции этого драйвера от 2 до 5 минут.
Предвосхищая резонный вопрос, не станет ли лекарство хуже самой болезни. Модель содержит всего сотни тысяч параметров по сравнению с сотнями миллиардов для, например, ChatGPT и для функционирования задействуется одно ядро ЦП. При этом точность предсказания следующего обращения достигает 95%-98% в зависимости от нагрузки. То есть одно ядро за удвоение оперативной памяти.
Сам механизм организации предиктивного анализа памяти запатентован компанией MEXT и в нем заключается основное новшество. Партнерами MEXT уже стали компании AMD, AWS, Google Cloud, Oracle Cloud. На их сайте можно найти подтвержденные отзывы с реально достигнутыми результатами. Пользователи отмечают рост утилизации оперативной памяти на 80-120% и снижении ТСО (стоимости владения) на 40-60%.
Однако, самое целесообразное, это не читать про то, как «космические корабли бороздят просторы мирового океана», а запросить демо или сразу оформить подписку, хотя бы на месяц, и оценить технологию на своих задачах и своей нагрузке. Ну, если конечно не боитесь увидеть сколько зомби-памяти живет в ваших продуктивных стойках.
Контакт: https://www.mext.ai/contact.
Пока применимость ограничена ОС Linux, однако, если будет востребовано, теоретически возможна адаптация технологии для Windows.
Если есть вопросы или нужна помощь – всегда буду рад.
