Запустити комп’ютер без оперативної пам’яті? [дублікат]


14

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

Тоді я поцікавився, що буде, коли ми будемо використовувати лише жорсткий диск, але немає оперативної пам'яті?



1
@Cornelius дякую за вашу відповідь, я перевірю це :)
akash ujjwal

12
Що відбувається - це кілька звукових сигналів, тоді екран стає порожнім.
arch-abit

1
Моє запитання: чи можу я хоча б перевірити, чи працює відеокарта? Чи буде відео чи монітор працювати мінімально?
маршалське ремесло

Відповіді:


27

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

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

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

  • Регістри - Дуже швидкі (ними можна керуватися інструкціями процесора безпосередньо, як правило, без додаткової затримки), але зазвичай дуже малі (64-розрядні процесорні ядра x86 мають лише 16 регістрів загального призначення, наприклад, кожен з яких може зберігати одне 64-розрядне число.) Розміри регістрів, як правило, невеликі, оскільки регістри дуже дорогі за один байт.
  • Кеш процесорів - все ще дуже швидкий (часто на 1-2 циклу затримки) і значно більший, ніж регістри, але все ж набагато менший (і набагато швидший), ніж звичайний DRAM. Кеш процесора також набагато дорожчий за байт, ніж DRAM, тому він, як правило, значно менший. Крім того, багато процесорів насправді мають ієрархії навіть у кеші. Зазвичай вони мають менші, швидші кеші (L1 і L2) на додаток до більших і повільніших кешів (L3.)
  • DRAM (те, що більшість людей вважають оперативною пам’яттю) - набагато повільніше, ніж кеш (затримка доступу, як правило, становить десятки-сотні циклів тактових годин), але набагато дешевша за байт і, отже, зазвичай набагато більша за кеш. DRAM все ще є, однак у багато разів швидшим, ніж доступ до диска (як правило, сотні до тисяч разів швидше.)
  • Диски - знову ж таки, вони набагато повільніші, ніж DRAM, але в цілому набагато дешевші за байт і, отже, набагато більші. Крім того, диски, як правило, не енергонезалежні, це означає, що вони дозволяють зберігати дані навіть після закінчення процесу (а також після перезавантаження комп'ютера.)

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


тепер нарешті я отримую те, що мені потрібно. Ви відповіли саме на те, що я в аспекті. Дуже дякую :)
akash ujjwal

Власне, причина, через яку ПК не завантажуються без оперативної пам’яті, є BIOS, якщо код BIOS не в змозі знайти адресу переміщення в оперативній пам’яті. Все, що ви хочете почути, - це гудіння джерела живлення та шум вентиляторів і, можливо, крутяться диски - але комп'ютер, в основному, мертвий. Процесор ніколи не отримує шансу змусити його працювати. Так що так, оперативна пам'ять є досить важливою.
arch-abit

@ arch-abit так, це правда, але чи є оперативна пам'ять необхідним компонентом для роботи з комп'ютером?
akash ujjwal

2
На додаток до того, що @reirab сказав, що можна запустити 'ПК' без DRAM в сенсі виконання інструкцій - це режим, в якому система працює до ініціалізації контролера DRAM (це робиться BIOS / EFI / Coreboot тощо). Однак навряд чи ви зможете зробити щось корисне, оскільки більшість компонентів, ймовірно, використовують DMA так чи інакше.
Maciej Piechotka

1
32-бітні регістри процесорів x86 - це лише 32 біти, а не 64, а 64-бітний x86-процесор має 32, а не 8 з них.
psusi

23

Було б теоретично можливо створити комп'ютер для роботи з дуже мало (варто кілька регістрів) чи ні оперативної пам'яті (дивіться вгору визначення машини Тьюринга - яка на самому ділі може бути побудована в досить великий / швидкої реалізації життя Конвея моделювання).

Причина, по якій всі комп'ютери реального світу використовують оперативну пам’ять, по-перше, історична: основна пам'ять (прототип для оперативної пам’яті, лише напівлетуча) значною мірою передує масовому сховищу, як магнітний барабан або диск (хоча це сталося після перфокарт і паперової стрічки - колишній з яких в первісному вигляді бере свій початок в 1801 році (так, початок 19 століття; жакардові верстати використовували перфокарти, щоб автоматично плести кольоровий візерунок довільної складності десятиліттями, перш ніж навіть Двигуни з різницею різниці або таблокатори Холлеріта); по-друге , ОЗП (як основна пам'ять), будучи електронним, набагато швидше, ніж будь-який пристрій, який залежить від фізичного руху носія інформації для подання даних до механізму читання / запису.

Система або схожа складність на сучасному комп'ютері з ОС Windows або Linux, що працює без оперативної пам’яті (подібно до справжньої машини Тьюрінга), потребували б лише днів для запуску та годин, щоб оновити екран для графічного інтерфейсу при сучасних резолюціях. Навіть текстовій операційній системі, порівнянній з CP / M або ранніми версіями DOS, знадобиться дуже багато часу, щоб досягти початкового командного рядка.


4
Я думаю, ви могли б вважати деякі DSP (цифрові процесори сигналу) та подібні мікропроцесори комп'ютери, які працюють без оперативної пам’яті, оскільки вони по суті роблять обчислення в безперервному потоці даних.
jamesqf

1
Я вважаю, що ваші оцінки повільності роботи машини "лише для віртуальної пам'яті" трохи перебільшені, але в принципі вірні.
Ліворуч близько

1
Оскільки диск на> 1 000 000 повільніше, ніж оперативна пам'ять, я думаю, що оцінка є, якщо що, на низькій стороні.
Dancrumb

2
@Dancrumb Я не впевнений, звідки взялися ваші 1 000 000 (разів?) DDR3 SDRAM може дати вам 10 Гб / с , тоді як навіть обертовий жорсткий диск 7200 об / хв отримає вам близько 100 МБ / с (0,1 ГБ / с) послідовним. Це коефіцієнт 100; безумовно, значущий, але далекий від 1000 000 разів. Там, де оперативна пам’ять значно перевершує жорсткий диск, він шукає затримки, але ви можете значно полегшити це за допомогою SSD. DDR3 має затримку в області 10 нс, а швидкий SSD може мати затримку в області 10 000 нс (100 к IOPS), для коефіцієнта 1000; все ще далеко від 1000 000.
CVn

1
@PeterCordes Відредаговано, тому, схоже, я не стверджую, що Win / Linux може працювати без оперативної пам'яті.
Zeiss Ikon

10

Можна, тому що коли запускається процесор x86, кеш L2 спочатку є SRAM, перш ніж використовуватись як кеш. Таким чином, ви можете записати власні біоси, щоб не ініціалізувати оперативну пам’ять і використовувати лише невелику кількість SRAM всередині процесора як оперативної пам'яті, а не кеш-пам'ять L2 / L3.

Просто прочитайте вказівки щодо BIOS від виробників процесорів.


4
+1, заявивши про це. Насправді кожна система x86 (комп'ютер) запускається "без використання оперативної пам'яті". Біос-код спочатку визначає, чи є якийсь баран, і подає звукові сигнали, якщо таких немає. Цей код може працювати без оперативної пам’яті;) (часто не багато можна обійтися без оперативної пам’яті; напевно, регістри не будуть достатніми для обробки HDD і використання його «як таран»)
Sebi

10

ВСІ сучасні, стандартні процесори загального призначення принципово працюють так:

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

Процесор отримує все, що є в цьому адресному просторі та кроки, які реєструються

Що може «жити» в адресному просторі?

  • Нічого (може повернути нулі, випадкові дані або призвести до блокування процесора)
  • ОЗУ (оперативна пам'ять материнської плати, оперативна пам'ять від пристрою PCI, такого як графічний адаптер тощо)
  • ПЗУ
  • Регістри пристрою вводу / виводу (сюди входять "внутрішні пристрої вводу-виводу", наприклад локальний процесор APIC)
  • Сучасні процесори дозволяють "кешувати як оперативну пам'ять", тому частина кешу процесорів може з'являтися в адресному просторі

Помітьте, що "жорсткий диск" немає в цьому списку. Жорсткий диск не підключений безпосередньо до процесора. Дані надходять на жорсткий диск і виходять за допомогою пристрою вводу-виводу (адаптера хостингу SATA), підключеного до процесора.

Пристрій вводу / виводу використовує DMA для завантаження / збереження даних на / з жорсткого диска. Це означає, що пристрій вводу / виводу безпосередньо зчитує / записує оперативну пам’ять - без втручання процесора - і також покладається на те, що оперативна пам'ять знаходиться там. Але якщо дані не були завантажені в оперативну пам'ять пристроєм вводу-виводу, процесор не має шансів побачити їх.

Таким чином, ви не можете отримати інструкції щодо отримання процесора безпосередньо з жорсткого диска.


Що відбувається під час помилки сторінки:

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

Таким чином, процесор, який потребує отримання даних з диска, оскільки пам'ять замінена, не відрізняється.


2
+1за те, що тут є єдиною відповіддю, яка займається справжнім питанням не тільки того, що трапиться , але й чому .

@ultrasawblade чому б процесор не має шансів побачити дані, навіть якщо попит на процесор для сторінки (інформація), а якщо вона недоступна в операційній пам’яті (первинна пам'ять), то виникає помилка сторінки, то запитайте процесор на жорсткий диск для потрібні дані. Це означає, що процесор нарешті повинен перейти на жорсткий диск для необхідної інформації.
akash ujjwal

2
Див. Правки. Пейджинг ядра в обміненій пам'яті не відрізняється від завантаження програми чи читання / запису програми на диск. Це просто відбувається в межах ядра і за лаштунками користувальницького процесу, але не за кадром ядра.
LawrenceC

Зауважте, що x86 принаймні може використовувати кеш пам'яті як оперативну пам’ять у режимі без заповнення, але тоді ви знаходитесь в тому ж човні, що і мікроконтролери, які постачаються з деякою вбудованою оперативною пам’яттю. Запуск процесора лише з ROM та відсутнім адресом простору для запису є правдоподібним (якщо весь ваш стан вписується в регістри, і зауважте, що останні процесори x86 мають тридцять два 512b ZMM векторні регістри ...) Але погодились, що це не правдоподібно читабельний адресний простір для коду (і GDT / LDT / IDT та інших таблиць для x86).
Пітер Кордес

7

Для роботи персонального комп’ютера потрібна оперативна пам'ять. Кожна програма, запущена з жорсткого диска, буде скопійована спочатку в оперативну пам'ять перед її виконанням.

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


5
Тоді ти стукаєш лобом і кажеш: "Я не повинен був би намагатися встановити ці RAM-палички в килимове середовище з вологістю менше 10%, 27 грудня на Північній півкулі?" Так?
arch-abit

@LPChip, чому він зберігається в Рам, яка головна мета цього. Щоб зробити систему швидкою або скоротити час доступу, для цього є вбудований кеш. Я прав чи неправильний?
akash ujjwal

1
Оперативна пам’ять - це швидке зберігання пам’яті, доступ до диска повільний, енергонезалежне зберігання пам’яті, а кеш процесора є з інших причин.
Лабораторії Фіаско

1
@FiascoLabs Насправді кеш процесора є з тієї ж причини, що і ОЗУ: Це дійсно швидке зберігання. Це набагато швидше оперативної пам'яті, але дорожче за байт.
reirab

І комп'ютер не буде працювати на ньому самостійно, отже, "інші причини"
Fiasco Labs

5

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


Так, це були маленькі металеві кільця, які були намагнічені / знемагнічені. en.wikipedia.org/wiki/Magnetic-core_memory (У відповідь на коментар про старі комп'ютери з вакуумними трубками, які були видалені)
Labs Fiasco

2

Насправді ви могли б принаймні у двох випадках запустити комп’ютер без того, що технічно називається оперативною пам'яттю

  1. Перші старі механічні «комп’ютери» (конструкція Конрада Зузе і комп’ютер Чарльза Беббіджа були механічними пристроями без оперативної пам'яті, що називаються комп'ютерами)

  2. Сучасний комп’ютер без оперативної пам’яті та лише процесор (чіп) з регістрами . У більшості випадків у вас є процесор SRAM (кеш-пам'ять), але найшвидшою пам'яттю комп'ютера називаються регістри, розташовані на мікросхемі, а технічно регістри на мікросхемі не є ОЗУ.


1
Дякую за цю відповідь - я вперше пригадую почуття про Зузе та його ранніх електромеханічних комп'ютерах (навіть якщо найдавніші читання, які я пам'ятаю про комп'ютери, завжди говорили про "реле" як комутаційні блоки, всі інші ранні комп'ютери, здається, використовували вакуумні трубки ).
Zeiss Ikon

1

Він просто не запуститься. Материнська плата, швидше за все, подасть звуковий сигнал незвичним чином і вимкнеться. Якщо у вас недостатньо оперативної пам’яті, навіть 128 Мб для Windows XP, вона відмовиться встановлювати (насправді випробував це на старому комп’ютері; одна з мікросхем була неправильно розміщена). Отже, при поточних налаштуваннях неможливо. Навіть якщо ви могли відключити перевірки материнської плати, процесор не може читати дані безпосередньо з жорсткого диска і для кожної операції потрібна оперативна пам'ять.

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

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