Чи може процесор функціонувати лише з джерелом живлення та ПЗУ, використовуючи лише внутрішній кеш як ОЗУ?


61

Чи може процесор (наприклад, Intel i3 / i5 / i7 / Xeon) з оперативною пам'яттю кешу оперативної пам'яті використовувати його як єдину функціональну оперативну пам’ять, не маючи жодних зовнішніх банків пам'яті?

Або повинна бути зовнішня оперативна пам'ять, і кеш не може бути доступний або використаний самостійно?

Сучасні процесори настільних / серверів часто мають більше внутрішньої оперативної пам’яті кешу, ніж у багатьох комп’ютерів 1990 р. У всій системній пам’яті, тому для роботи простого коду повинно бути достатньо.

Процесори раніше, ніж існував кеш-пам'ять, наприклад 6502, нічого не зможуть зробити, оскільки внутрішня оперативна пам’ять склала лише кілька байт для лічильника адрес та акумуляторів.

Це не питання запуску будь-яких сучасних операційних систем, а запуск простого коду, запрограмованого на користувальницький ПЗУ, або введеного вручну за допомогою шестигранної вхідної клавіатури.


1
Цілком залежить від процесора та того, що саме ви маєте на увазі під кешем, оскільки деякі процесори мають вбудований таран і не потребують зовнішніх чіпів.
ПлазмаHH

42
в основному, якщо ви включите адресну пам'ять у сам процесор, ви будуєте те, що ми називаємо мікроконтролером. Вони існують.
Маркус Мюллер

1
Хто каже, що вам взагалі потрібна оперативна пам'ять?
Кріс Страттон

1
Залежить від того, як ви визначаєте "функцію". Надіюсь, i7 цілком здатний виробляти тепло лише з підключеним до нього акумулятором.
Дмитро Григор’єв

2
Існує ряд речей, які можна виконати лише за допомогою декількох регістрів і без додаткової оперативної пам’яті. Наприклад, генератор функцій.
Девід Шварц

Відповіді:


67

Дивіться цей надзвичайно детальний виклад послідовності завантаження ПК: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

Оскільки на даний момент жодна DRAM не доступна, код спочатку працює в бездоганному середовищі. Більшість сучасних процесорів мають внутрішній кеш, який можна налаштувати як оперативну пам’ять, щоб забезпечити стек програмного забезпечення. Розробники повинні писати надзвичайно жорсткий код при використанні цієї функції кешування оперативної пам'яті, оскільки виселення було б неприйнятним для системи в даний момент у послідовності завантаження; немає пам'яті для підтримки узгодженості. Ось чому процесори працюють у режимі "Без виведення" (NEM) в цей момент процесу завантаження, коли вони працюють на основі кеш-пам'яті. У NEM пропуск кеш-лінії в процесорі не призведе до виселення. Розробка коду з наявним стеком програмного забезпечення набагато простіше, і код ініціалізації часто виконує мінімальну настройку для використання стека ще до ініціалізації DRAM.

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

Я також бачив таку поведінку на деяких процесорах ARM. Всередині SoC будуть створені регістри конфігурації, які дозволять використовувати кеш як оперативну пам'ять на початку послідовності завантаження, щоб запустити програму, яка знаходить, перераховує та конфігурує DRAM.



2
Детальніше про те, як працює режим "кеш-а-рам" (CAR) x86 у відповіді, яка відображає його як випадок використання INVD(при виході з режиму CAR недійсний кеш, замість того, що в пам'ять не записуються непотрібні дані, можливо щось цінне).
Пітер Кордес

Що не так із виселенням, коли DRAM недоступний? Чи не проблема читання, а не запис у оперативну пам’ять?
Мехрдад

14

Як правило, пам'ять кешу не адресована. Програма не може навмисно зберігати або отримувати дані з неї.


2
+1 Це дуже прониклива відповідь. Кешліни завантажуються та звільняються за бажанням з адресного доступу з основної пам'яті майже випадковим чином.
Ale..chenski

17
Так, для цього потрібен спеціальний режим (як у відповіді pjc) або якась особлива хитрість. Іншим варіантом (окрім прийнятої відповіді) може бути змусити систему думати, що вона має деяку кількість DRAM, але фактична пам'ять запису просто викидає дані та зчитує видавати всі нулі (або фактичні дані з ПЗУ для певного регіону адрес). Поки всі навантаження потрапляють у кеш, система буде вести себе правильно. IDK достатньо про те, як завантажуються x86, щоб знати, чи можна потрапити в 64-бітовий режим, не потребуючи справжніх кеш-флешів.
Пітер Кордес

3
Однак процесори Skylake з кешем eDRAM в пакеті використовують його як кеш на стороні пам'яті (між контролером пам’яті та всім іншим, на відміну від Broadwell), тому він може навіть кешувати доступ до DMA з системних пристроїв, які не є процесором, або завантаження процесора / зберігається в "не збережених" областях пам'яті (які обходять L1 / L2 / L3).
Пітер Кордес

3
@PeterCordes Однак відповідь не "ні", тільки тому, що потрібен спеціальний режим - питання полягає в тому, чи існує спеціальний режим.
користувач253751

1
Питання - що станеться, якщо ви все-таки використовуєте кеш і переконайтеся, що він ніколи не пропускає і не розмивається - він стає адресальним з того моменту, коли щось записано на адресу в неіснуючій ОЗУ, ні? Фактична запис падає на підлогу, але читання подається з кешу все-таки?
rackandboneman

9

Хоча це безпосередньо не стосується сімейств процесорів, зазначених у питанні, схема, наведена нижче, буде працювати на більш ранніх процесорах x86, так, так, можна працювати без оперативної пам'яті чи кешу, хоча такий підхід вимагає певних навичок творчого програмування.

Ще в 1980-х роках я натрапив на дизайн радіоприймача, який розшифровував сигнали часу MSF, що транслюються у Великобританії. Ця конструкція використовувала процесор Z80 і мала лише ПЗУ для зберігання програми. Вся обробка та зберігання даних проводилася за допомогою внутрішніх регістрів всередині процесора. Це, очевидно, означало, що не може бути ніяких викликів підпрограми, оскільки для зберігання стека була доступна пам'ять.

Тоді вартість оперативної пам’яті була високою, а оскільки це був проект хобі, важливим було зниження витрат, окрім того, що це було цікавим навчальним завданням. Це було ще до днів широко доступних мікроконтролерів (8751 з eprom коштував понад 100 фунтів IIRC).


Обмеження себе даними, які можна зберігати в регістрах, дійсно обмежує корисні функції, які ви можете виконувати. Думаю, питання стосувалося кеш-пам'яті в сучасних процесорах.
Марк Рансом

Звичайно, само собою зрозуміло, що не використання оперативної пам'яті обмежує можливу функціональність. Програма, що цитується, показує, наскільки це можливо з дуже обмеженими ресурсами для зберігання даних, передньою частиною радіо та РК-дисплеєм.
uɐɪ

-3

Зазвичай для процесора знадобиться зовнішній годинник. Але при цьому, так, може.


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