Чи можемо ми запустити Linux в чомусь швидшому, ніж оперативна пам'ять?


21

Це, мабуть, дурне питання, а може бути наслідком непорозуміння. Я зараз вивчаю процесор, і пам'ять зокрема. Я просто читав про те, наскільки швидше SRAM, ніж DRAM, але дорожче. SRAM коштує дуже дорого: я покупив трохи і знайшов SRAM-карту, що працює на батареї, потужністю 16 Мб, приблизно 400 доларів.

Нещодавно друг згадав, що він запускає linux щеняти в оперативній пам'яті, і це швидко. Однак я помітив, що крихітний основний linux може бути ще меншим ... аж 8 Мб! Це змусило мене задуматися: чи можна запустити Linux в SRAM? Це питання навіть добре сформоване?

Гугл це питання виявилося неефективним, але воно викликало ще більше питань. Чи міг би запустити Linux у кеші L3? Intel Core i7 може мати кеш L3 достатньо великий для розміщення 8 Мб ... але чи я роблю категоричну помилку? Яка різниця між цим та "вбудованим" Linux?

Це питання: чи можемо ми запустити Linux в SRAM або L3 Cache? Чи є щось швидше? Як швидко ми можемо linux !?

z.


3
Вбудовані Linux часто працюють у оперативної або нелетучій пам'яті. Вбудовані Linux часто знімають лише для конкретного обладнання або використовують такі менш поширені параметри ядра, як низька затримка
Journeyman Geek

2
Цікаво, чи є практичне використання цього питання?
Роберт Неєстрой

4
+1 за використання "linux" як дієслова (в останньому реченні)!
Vorac

Відповіді:


20

Linux або будь-яка інша ОС не знають, як працює оперативна пам'ять. Якщо контролер пам'яті налаштовано належним чином (наприклад, частота оновлення встановлена ​​для не-SRAM), то ОС не хвилює, чи вона працює на звичайній динамічній пам’яті (звичайна оперативна пам’ять), оперативному режимі швидкої сторінки (FP RAM, від C64-ish разів), розширений режим виведення даних RAM (EDO), синхронна оперативна пам'ять (SDRAM), будь-яка з подвійних швидкостей передачі даних SDRAMS (DDR 1/2/3) незалежно.

Всі вони підтримують читання і письмо з випадкових місць. Всі працюватимуть.

Зараз кеш дещо інший. Не потрібно писати на нього, щоб вміст мінявся. Це перешкодить. І все-таки вона дещо корисна. Я знаю, що coreboot використовує кеш як своєрідну пам'ять під час завантаження, перш ніж контролер пам'яті буде правильно налаштований. (Щоб отримати детальну інформацію, перегляньте відео з обговорень основної завантаження під час FOSDEM 2011).

Тож теоретично так, ви могли б це використати.

АЛЕ : Для практичних завдань система з 1 Гб 'звичайної' 'середньої швидкості' пам'яті буде працювати набагато краще, ніж лише у кількох МБ супершвидкої пам'яті. Що означає, що у вас є три варіанти:

  1. Будуйте речі звичайним «дешевим» способом. Якщо вам потрібна більша швидкість, додайте кілька десятків додаткових комп’ютерів (усі з 'повільною' пам'яттю)
  2. Або побудувати єдиний комп’ютер з десятком кратних цін і значно меншим, ніж у десяток разів продуктивнішим.

За винятком дуже рідкісних випадків, останні не є розумними.


6
Багато процесорів підтримують режим «кеш-пам'ять» через специфічні регістри процесора (MSR). Також зауважте, що SRAM споживає більше енергії, ніж DRAM, і це також фактор дизайну. Якщо кеш процесора був досить великим або ядро ​​достатньо малим, ви можете ввімкнути цей режим кешування оперативної пам’яті та зберегти його виконання повністю в SRAM на процесорі. У вас буде обмежена кількість оперативної пам’яті для запуску програм тощо. тому що кеш-пам'ять AFAIK-кеш-пам'яті та звичайний режим працюватимуть не одночасно. Я можу помилитися з цього приводу. Навіть якщо це було так, більша частина швидкості процесора в ці дні пов'язана з використанням кешу L2, L3.
LawrenceC

@Hennes це те, що Linux піклується лише про (картографічні) адреси пам'яті?
Елвін Вонг

SDRAM - це синхронна D (інамічна) оперативна пам'ять, тоді як SRAM - статична оперативна пам'ять. Я не знаю, на кого ви хотіли посилатися в першому пункті, і я не маю представника, щоб вносити "тривіальні" зміни, але, можливо, ви могли це виправити? Крім цього, хороша відповідь.
CVn

Я не проти уточнення, але я не впевнений, що ви хочете уточнити. Чи можете ви додати це в коментарі, і я його відредагую.
Геннес

Коли я вперше прочитав цей коментар, я побачив, що "Linux або будь-яка інша ОС гине, не знаючи, як працює оперативна пам'ять". Ваша поломка хороша: я думаю, я не мав ілюзій, що це буде "краще". Я просто задумався, чи можна це зробити.
Ziggy

8

Так, ви можете, і це насправді, як це вже робиться, автоматично. Найчастіше використовувані частини оперативної пам'яті копіюються в кеш-пам'ять. Якщо ваше загальне використання оперативної пам’яті менше, ніж розмір кешу (як ви гадаєте), існуючий механізм кешування скопіював усе в оперативну пам'ять.

Єдиний час, коли кеш-пам'ять потім буде скопійовано в звичайну оперативну пам’ять, - це коли ПК перейде в режим сну S3. Це необхідно, оскільки кеші вимикаються в режимі S3.


1
Не всі можуть / будуть скопійовані. Для структури кешу Intel / x86: Якщо у мене є кеш 256KiB та кеш 1024KiB, я можу прочитати адресу 0. Він буде зберігатися в кеші в розташуванні 0. Потім я можу прочитати адресу 1, і він буде збережений у кеші за адресою 1 Однак, якщо я прочитаю адресу (256Kib + 1), яка також буде зберігатися за адресою 1 у кеші. Кеш використовує додатковий (тег) SRAM, щоб вказати, який із двох зберігається. Це означає, що читання з декількох розмірів кешів не буде добре працювати. (Зауважте, що це було б рідкісною справою і зазвичай її можна ігнорувати).
Геннес

Це проникливий! Чому б я незграбно записував те, що, на мою думку, важливо, в кеш L3, коли я міг би дозволити армії геніїв визначити оптимальну річ, і запрограмувати центральний процесор, щоб зробити цю оптимальну річ. Правильно?
Ziggy

3

Багато процесорів дозволяють кеш-пам'ять використовувати як оперативну пам'ять. Наприклад, більшість нових процесорів x86 можуть конфігурувати певні регіони як зворотне записування з не заповненням читання через MTRR. Це можна використовувати для позначення області адресного простору як - ефективно - кеш-а-рам.

Чи корисно це буде - це інше питання - це заблокує ядро ​​в оперативній пам'яті, але в той же час зменшить ефективний розмір кешу. Можуть бути й побічні ефекти (наприклад, вимкнення кешування для решти системи), що зробить це набагато повільніше.


2

"чи можемо ми запустити Linux в кеш-пам'яті L3?"

Ні , це неможливо, оскільки кеш-пам'ять не адресована безпосередньо / лінійно.
Через те, як створена кеш-пам'ять, реєстр лічильників програмних лічильників процесора (IP) не може вказувати на місце в кеш-пам'яті.

Кеш процесора має власну "асоціативність", і ця асоціативність визначає спосіб "нормальної" пам'яті "відображення" в кеш-пам'ять. Ця особливість кеш-пам’яті є однією з причин того, що запам'ятовування кешу так швидко.


1

"чи можемо ми запустити Linux в кеш-пам'яті L3?"

Ні, кеш призначений для конкретної роботи щодо зберігання програмних даних та інструкцій, готових до того, коли процесор їх потребує. Ви все одно знайдете операційну систему в кеші, оскільки її постійно використовують. Завантаження всіх ОС в кеш не є ефективним, оскільки ви не використовуєте одразу кожен шлях коду в ядрі.

"чи можемо ми запустити Linux в SRAM?"

Звичайно, ви можете використовувати SRAM з підтримкою акумулятора як завантажувальний розділ, ви можете використовувати вбудований прапор Execute на місці. Це може призвести до швидшого завантаження та трохи швидших операцій. Однак головним фактором є пропускна здатність між кешем L3 і місцем розташування ядра (завантажувальний диск або оперативна пам'ять).

"Чи є щось швидше? Як швидко ми можемо linux !?"

Зазвичай виробники обладнання та розробники операційних систем працюють над тим, щоб зробити обробку якомога швидшою. Однак ваше запитання дуже загальне, чи хочете ви прискорити час завантаження, оптимізувати доступ до файлової системи, прискорити обчислення чи щось інше. Після виникнення більш конкретного питання, ви, звичайно, можете почати знаходити вузьке місце і видалити його. Ваш привід SRAM, безумовно, пришвидшить процес завантаження. Потрапити до GUI за 3 секунди було б дуже здорово.


1

Ще в часи 486-х років раніше були машини, де вся ОЗУ була SRAM. Це повертається, коли 8 МБ було багато, але, здається, відповідає вашим обмеженням. Я впевнений, що 8 Мб оперативної пам’яті SRAM набагато дешевше, ніж тоді.

Отже, ви могли запустити Linux в SRAM, якби машина була зроблена саме так. Це не теоретично; це зроблено.

Але, не в кеші. Кеш підключений по-різному, а ще важливіше по-різному. Ви не можете вирішити це так само. Шматки відображаються по-різному, а не як суцільний шматок. І вміст не обов’язково такий, який ви бачите на диску - новіші мікросхеми Intel роблять своєрідне «збирання» (більше CISC => перекодування RISC-micro-op), де мікро-операції - це речі які закінчуються в кеші. Коротше кажучи, те, що є в кеші, - це не ваша програма, а змінене уявлення про неї, тому ви більше не можете використовувати її як представлення пам'яті вашої програми.

Питання - чому. Окрім "тому, що я можу", для цього не так багато причин. Система кешу отримує більшу частину вигоди від швидкості із значно меншими витратами. І пам'ятайте, що вартість коштує не лише долари .... SRAM бере більше транзисторів, а це означає більше електроенергії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.