
Программисты освобождают большую пропускную способность, сжимая «объекты» в иерархии памяти.
Новая технология, разработанная исследователями MIT, переосмысливает аппаратное сжатие данных, чтобы освободить больше памяти, используемой компьютерами и мобильными устройствами, позволяя им работать быстрее и выполнять больше задач одновременно. Сжатие данных использует избыточные данные для освобождения емкости хранения, повышения скорости вычислений и предоставления других преимуществ. В современных компьютерных системах доступ к основной памяти очень велик по сравнению с фактическими вычислениями. Из-за этого использование сжатия данных в памяти помогает повысить производительность, поскольку уменьшает частоту и объем данных, которые программы должны извлекать из основной памяти. Память в современных компьютерах управляет и передает данные в виде фрагментов фиксированного размера, на которых должны работать традиционные методы сжатия. Программное обеспечение, однако, не хранит свои данные в виде фрагментов фиксированного размера. Вместо этого он использует «объекты», структуры данных, которые содержат различные типы данных и имеют переменные размеры. Поэтому традиционные аппаратные методы сжатия плохо обрабатывают объекты.
В документе, представленном на этой неделе на Международной конференции ACM по архитектурной поддержке языков программирования и операционных систем, исследователи MIT описывают первый подход к сжатию объектов в иерархии памяти.Это уменьшает использование памяти при одновременном повышении производительности и эффективности.
Программисты могли бы извлечь выгоду из этой техники при программировании на любом современном языке программирования — таком как Java, Python — который хранит и управляет данными в объектах, не изменяя их код. С их стороны потребители увидят компьютеры, которые могут работать намного быстрее или могут запускать гораздо больше приложений с той же скоростью. Поскольку каждое приложение потребляет меньше памяти, оно работает быстрее, поэтому устройство может поддерживать больше приложений в пределах выделенной памяти.
В экспериментах с использованием модифицированной виртуальной машины Java этот метод сжимал вдвое больше данных и сокращал использование памяти вдвое по сравнению с традиционными методами, основанными на кеше.
«Мотивация заключалась в том, чтобы придумать новую иерархию памяти, которая могла бы выполнять сжатие на основе объектов вместо сжатия строк кэша, потому что именно так большинство современных языков программирования управляют данными», — говорит автор, аспирант в лаборатории информатики и искусственного интеллекта (CSAIL). «Все компьютерные системы выиграют от этого», — добавляет соавтор Дэниел Санчес, профессор компьютерных наук и электротехники и исследователь в CSAIL.«Программы становятся быстрее, потому что они перестают быть узкими из-за пропускной способности памяти». Исследователи основывались на своей предыдущей работе, которая реструктурирует архитектуру памяти для непосредственного управления объектами. Традиционные архитектуры хранят данные в блоках в иерархии постепенно увеличивающейся и более медленной памяти, называемой «кэшами». Недавно используемые блоки увеличиваются до меньших и более быстрых кэшей, в то время как старые блоки перемещаются в более медленные и более крупные кэши, в конце концов возвращаясь обратно в основную память. Хотя эта организация является гибкой, для доступа к памяти каждый кэш должен искать адрес среди своего содержимого.
«Поскольку естественной единицей управления данными в современных языках программирования являются объекты, почему бы просто не создать иерархию памяти, которая имеет дело с объектами?» — говорит Санчес.
В статье, опубликованной в октябре прошлого года, исследователи подробно описали систему под названием Hotpads, в которой хранятся целые объекты, плотно упакованные в иерархические уровни или «площадки». Эти уровни полностью основаны на эффективных, встроенных в кристаллы, непосредственно адресованных упоминаниях — без сложных поисков. Затем программы напрямую ссылаются на расположение всех объектов в иерархии площадок. Вновь выделенные и недавно ссылающиеся объекты, а также объекты, на которые они указывают, остаются на более быстром уровне.
Когда более быстрый уровень заполняется, он запускает процесс «выселения», который сохраняет объекты, на которые недавно ссылаются, но отбрасывает более старые объекты на более медленные уровни и перерабатывает ненужные объекты, чтобы освободить пространство. Затем указатели обновляются в каждом объекте, чтобы указывать на новые местоположения всех перемещенных объектов.
Таким образом, программы могут получить доступ к объектам гораздо быстрее, чем поиск по уровням кэша. Для своей новой работы исследователи разработали методику, называемую «Zippads», которая использует архитектуру Hotpads для сжатия объектов. Когда объекты сначала запускаются на более быстром уровне, они не сжимаются. Но когда их выселяют на более медленные уровни, они все сжаты. Указатели на всех объектах на уровнях затем указывают на эти сжатые объекты, что облегчает их запрос к более быстрым уровням и позволяет хранить их более компактно, чем предыдущие методы.
Затем алгоритм сжатия эффективно использует избыточность объектов. Этот метод раскрывает больше возможностей сжатия, чем предыдущие методы, которые были ограничены нахождением избыточности в каждом блоке фиксированного размера. Алгоритм сначала выбирает несколько представительных объектов в качестве «базовых» объектов. Затем в новых объектах хранятся только разные данные между этими объектами и репрезентативными базовыми объектами.
Брэндон Люсия, доцент кафедры электротехники и вычислительной техники в Университете Карнеги-Меллона, высоко оценивает работу по использованию возможностей объектно-ориентированных языков программирования для лучшего сжатия памяти. «Абстракции, такие как объектно-ориентированное программирование, добавляются в систему, чтобы упростить программирование, но часто приводят к снижению производительности или эффективности системы», — говорит он.«Интересно, что в этой работе она использует существующую абстракцию объектов как способ повышения эффективности сжатия памяти, что, в свою очередь, делает систему более быстрой и эффективной благодаря новым возможностям компьютерной архитектуры».
Как в том анекдоте: ничего не понятно, но безумно интересно.
Это новый метод сжатия данных, судя по всему, какой-то оптимизированный. И должен еще больше оптимизировать работу железа.