Як працює стиск в об'єктно-орієнтованій архітектурі пам'яті

Команда інженерів із MIT розробила об'єктно-орієнтовану ієрархію пам'яті для більш ефективної роботи з даними. У статті розуміємо, як вона влаштована.

Як працює стиск в об'єктно-орієнтованій архітектурі пам'яті
/ PxТут / PD

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

Збитки продуктивності завдає так звана декомпресійна затримка. У деяких випадках на підготовчу декомпресію даних може йти до 64 процесорних циклів.

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

Як влаштовано технологію

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

Hotpads - це програмно-керована ієрархія надоперативної регістрової пам'яті (скретчпад). Ці регістри називаються педами (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

Джерело: habr.com

Додати коментар або відгук