Команда инженеров из MIT разработала объектно-ориентированную иерархию памяти для более эффективной работы с данными. В статье разбираемся с тем, как она устроена.


/ PxHere / PD

Как известно, рост производительности современных CPU не сопровождается соответствующим снижением задержки при обращении к памяти. Разница в изменении показателей от года к году может доходить до 10 раз (PDF, стр.3). Как результат — возникает бутылочное горлышко, которое не дает в полной мере пользоваться имеющими ресурсами и замедляет обработку данных.

Ущерб производительности наносит так называемая декомпрессионная задержка. В некоторых случаях на подготовительную декомпрессию данных может уходить до 64 процессорных циклов.

Для сравнения: сложение и умножение чисел с плавающей точкой занимают не больше десяти циклов. Проблема в том, что память работает с блоками данных фиксированного размера, а приложения — оперируют объектами, которые могут содержать различные типы данных и отличаться друг от друга по размеру. Чтобы решить проблему, инженеры из MIT разработали объектно-ориентированную иерархию памяти, которая оптимизирует обработку данных.

Как устроена технология


В основе решения лежат три технологии: Hotpads, Zippads и алгоритм сжатия COCO.

Hotpads — это программно-управляемая иерархия сверхоперативной регистровой памяти (scratchpad). Эти регистры называются пэдами (pads) и их три штуки — от L1 до L3. В них хранятся объекты разных размеров, метаданные и массивы указателей.

По сути, архитектура представляет собой систему кэшей, но заточенную для работы с объектами. Уровень пэда, на котором находится объект, зависит от того, как часто его используют. Если один из уровней «переполняется», система запускает механизм, аналогичный «сборщикам мусора» в языках Java или Go. Он анализирует, какие объекты используется реже остальных и автоматически перемещает их между уровнями.

Zippads работает на основе Hotpads — архивирует и разархивирует данные, которые поступают или покидают два последних уровня иерархии — пэд L3 и основную память. В первом и втором пэдах данные хранятся в неизменном виде.



Zippads сжимает объекты, чей объем не превышает 128 байт. Более крупные объекты делятся на части, которые затем размещаются в разных участках памяти. Как пишут разработчики, такой подход повышает коэффициент эффективно используемой памяти.

Для сжатия объектов применяется алгоритм COCO (Cross-Object COmpression), о котором мы расскажем далее, хотя система способна работать и с Base-Delta-Immediate или FPC. Алгоритм COCO представляет собой разновидность разностного сжатия (differential compression). Он сравнивает объекты с «базовыми» и удаляет повторяющиеся биты — см. схему ниже:



По словам инженеров из MIT, их объектно-ориентированная иерархия памяти на 17% производительнее классических подходов. Она гораздо ближе по своему устройству к архитектуре современных приложений, поэтому у нового метода есть потенциал.

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

Наши дополнительные ресурсы и источники:

«Как мы строим IaaS»: материалы о работе 1cloud

Эволюция архитектуры облака 1cloud
Услуга объектного хранилища в 1cloud

Потенциальные атаки на HTTPS и способы защиты от них
Чем похожи и чем различаются подходы Continuous Delivery и Continuous Integration
Как защитить сервер в интернете: опыт 1cloud

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


  1. Tzimie
    11.05.2019 21:30
    +1

    17% неплохо как очередной шаг оптимизации, но совершенно недостаточно для вау фактора


  1. Tyusha
    11.05.2019 22:07
    +1

    Так а кто этим должен заниматься? Не прикладная ж программа?! В моёй наивной картине мира это задача для контроллера памяти или же операционной системы. Поэтому я не поняла вот это:

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


    1. a5b
      12.05.2019 06:49

      Ссылка на пересказываемую работу — https://people.csail.mit.edu/poantsai/papers/2019.zippads.asplos.pdf
      Po-An Tsai, Compress Objects, Not Cache Lines: An Object-Based Compressed Memory Hierarchy. / ASPLOS '19 Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, ISBN: 978-1-4503-6240-5, Pages 229-242 doi:10.1145/3297858.3304006


      Новость https://www.csail.mit.edu/event/redesigning-memory-hierarchy-exploit-static-and-dynamic-application-information


      we design reconfigurable cache hierarchies… Hardware monitors application memory behavior at low overhead, and a software runtime uses this information to periodically reconfigure the system.

      Предложен подход с редизайном аппаратуры, запретом "сырых" указателей, и с дополнительным управлением со стороны софта. ("Zippads directly rewrites pointers to objects as it moves objects across hierarchy levels… Zippads builds on Hotpads" = hotpads 2018 "Hotpads ISA (Sec. IV) prevents programs from reading or manipulating raw pointers… This avoids the need for associative caches.… Fig. 5: Hotpads pointer format 14 bit size, 48 bit address")
      Про оборудование для zippads: "We have written the RTL for these circuits… The compression circuit requires an area equivalent to 810 NAND2 gates… decompression circuit requires an area equivalent to 592 NAND2 gates… COCO is practical and simple to implement in hardware… architectures should somehow convey object boundaries to COCO, which would require runtime and hardware changes"
      Кажется, Po-An Tsai пишет PhD http://people.csail.mit.edu/poantsai/ — "final-year Ph.D. student advised by Prof. Daniel Sanchez at MIT CSAIL", June 2019 (expected), "..will be joining Nvidia Research… in 2019 summer."