Чи є комп'ютер без оперативної пам’яті, але з диском, еквівалентний одному з оперативною пам’яттю?


18

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

Кешування диска, очевидно, не потрібно. Якщо ми встановимо місця для swap на диску, стек програми та купа також не потребують пам'яті. Чи є щось, для чого потрібна пам'ять?



3
Яка ідея стоїть за цим питанням?
Ів Дауст

12
Визначте "диск". Ми швидко рухаємося до бездискового світу (радий, що Террі Пратчетту не доведеться цього свідчити). Це означає, що всі сховища будуть у якомусь твердому стані чи іншому, що відповідає на ваше запитання, хоч, мабуть, і зворотно.
Пітер - Відновіть Моніку

2
Пам'ять - це пам'ять
Едуар

8
Наскільки випадково адресована пам'ять, наскільки я не знаю, не є вимогою до комп'ютерів. Стрічка від машини Тьюрінга не може бути адресована випадковим чином. Ніщо не заважає вам читати / писати лише один біт на блок, якщо хочете.
Édouard

Відповіді:


24

Звичайно. В принципі, з урахуванням відповідного обладнання, у вас міг бути лише диск із усім, що зберігається на диску. Будь-який час, коли процесор виконував інструкції з завантаження або зберігання, може бути деяке обладнання, яке перетворює його на диск для читання чи запису. Це було б дуже повільно: на магнітному диску кожне прагнення займає близько 10 мс, тож ви могли б робити близько 100 зчитування та запису з випадковим доступом за секунду.

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


6
@MSalters вказує на те, що якщо ми модифікуємо диск (або шар додаткового обладнання на його вершині), щоб зробити його подібним до ОЗУ, то ми можемо просто назвати його ОЗУ. Проблема полягає в тому, що питання "Чи можна покінчити з пам'яттю та просто мати диск" є надто розпливчастим. Що ми маємо на увазі під пам'яттю та диском? Чи маємо на увазі ті, які існують у сучасному настільному ПК? Тоді відповідь - ні. Ми маємо на увазі якусь гіпотетичну пам'ять і диск? Тоді в такому випадку відмінність між ними все-таки розмивається, і питання еквівалентно "чи можливо мати комп'ютер з механічною оперативною пам'яттю?" .
JBentley

1
Робочий тип AS / 400 працює так. Є єдиний рівень зберігання даних і лише один адресний простір. Диск і пам'ять об'єднуються в одне абстрагування пам’яті прошивкою платформи, сама ОС бачить лише один плоский єдиний простір для зберігання даних. Немає покажчиків, лише посилання на об'єкти. Об'єкти переміщуються з пам'яті на диск і назад прозоро за допомогою прошивки платформи (BIOS в PC-говорі, SLIC в AS / 400-говорінні). Це не матиме ніякої різниці для ОС та додатків, якби ви видалили диски і мали лише оперативну пам’ять або видалили оперативну пам’ять і мали лише диски.
Йорг W Міттаг

Також я думаю, що термін експлуатації жорстких дисків буде набагато коротшим. А ще гірше для SSD. Найімовірніша причина, чому на Android-телефонів немає підкачки
Suici Doga

16

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

Звичайно, жорстких дисків "необмеженого простору" немає, але оперативної пам'яті також немає.

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


14

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

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


3
Можливо, ви думаєте про Зебра Stantec - archive.computerhistory.org/resources/text/Standard/… . Їх ще було у відділі CS, коли я пішов до університету в 1967 році.
Девід Маршалл

3
Насправді, я думаю, я, можливо, думав про IBM
1408.

8
Дивіться також Історію Мела ( catb.org/jargon/html/story-of-mel.html ), яка стосується програміста, який працював на Royal McBee LPG-30, який мав барабанну пам'ять.
db48x

@ db48x: Я забув, наскільки класною була ця історія. Я, мабуть, не читав його вже 10 років.
Пітер Кордес

7

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

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

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

Ви можете зробити постійне сховище, яке безпосередньо може використовуватися процесором. Сховища EEPROM потрапляли б до цієї категорії (електронно стирається програмована пам’ять «Тільки для читання» - хоча «Оптимізований для читання» був би фактично кращим описом).


5
Я думаю, що ваше "Ні" має бути "Так, але для цього потрібні вбудовані диски".
Taemyr

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

3
А "блокування" робиться для ефективного використання простору фізичного диска: вам потрібно простір навколо кожного фрагмента "реальних" даних для ідентифікації блоку, надання "охоронного" простору між блоками тощо. Немає технічної причини, чому блоки не могли бути одним байт довго (але швидкість знизиться ще більше, як і потужність).
TripeHound

6
На насправді, навіть поточний RAM на комп'ютері не дуже байт адресацією - DDR3 працює в пачках і мінімальне читання / запису розмір 8 64-бітових слів (тобто 64 байт); Я не фахівець, але я б сказав, що також потрібен узгоджений доступ. Все це не так вже й відрізняється від старих дисків, де розмір блоку був у розмірі 512 байт, тому я б сказав, що ці розрізнення здебільшого є історичними, лінія дійсно розмита.
Маттео Італія

1
(також, ніщо не заважає вам використовувати цілий блок - незалежно від розміру - просто тримати один байт - трохи неефективно, але поки я не той, хто платить диски, це нормально)
Matteo Italia

1

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

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


IIRC, x86 має режим, коли він використовує внутрішній кеш як основну пам'ять. electronics.stackexchange.com/questions/16485/… має деякі деталі. Я думаю, що його іноді називають "режимом без заповнення", тобто процесор не намагається фактично заповнити кеш-рядки із зовнішньої пам'яті. Це може виключати використання DMA для вводу-виводу жорсткого диска, оскільки "системний агент" не може DMA в кеш-пам'ять L3. Він може працювати на Skylake з L4 eDRAM, оскільки він створений як кеш-пам'ять на стороні пам'яті (на відміну від Broadwell), який може кешувати все , включаючи DMA. Програмований-IO все ще буде працювати на диску.
Пітер Кордес

Звичайно, в цей момент ви працюєте з системою на чіпі зі 128 Мбіт оперативної пам'яті, що було пристойною сумою 15 років тому. Маючи лише кеші L3 SRAM, це все ще від 4 до 8 Мбіт в настільному чіпі, що, можливо, достатньо для дуже збитого Linux, але досить легко для DOS. Якщо більша частина вашого коду знаходиться в ПЗУ, а не в ОЗУ, то це добре.
Пітер Кордес

1

Це концептуально можливо. ОЗУ - це лише рівень кешування. У сучасному комп’ютері є багато рівнів кешування (див. Кеші L1, L2, L3 .., кеш-пам'ять, звичайно, Ram, область swap-що є логічним розділом диска, що використовується як оперативна пам'ять ...-), якщо поставити або додати його, машина працюватиме. Наприклад, живий cd Ubuntu може не використовувати рівень кешування жорсткого диска. Однак я не думаю, що існує ОС, яка може підтримувати відсутність рівня оперативної пам’яті.


1
Це не ОС, а обладнання, яке розроблено, вимагаючи, щоб інструкції були в оперативному режимі (насправді, відображені на адресному просторі).
Анхель

@Angel чи справді потрібно в сучасній ОС текст (інструкції), bss, стек та купу завантажувати в пам'ять для виконання програми? Вони не можуть бути на свопі (диску)? Скажімо, в Linux.
Тош

1
Ми говоримо про інформатику чи комп’ютерну техніку? Я не знаю впровадження ОС, ані апаратного рівня, я ґрунтуюся лише на тезі Церкви Тьюрінга. Можливо, це неможливо за допомогою поточного обладнання, доступного на ринку, або використання існуючих ОС, але це можливо в теоретичному сценарії.
Пікчі

1
@Tosh це не проблема ОС, а обладнання. Ваш процесор виконує одну інструкцію, розташовану за адресою пам'яті, вказаною вказівником інструкції. Тому просто мати диск не вийде (не змінюючи обладнання). Відповідаючи на ваше запитання, не весь розділ потрібно буде завантажити в пам'ять, адже ОС може завантажувати їх лише тоді, коли програма намагається отримати доступ до них. Як крайній приклад лічильника, ви можете запустити програму "з диска", використовуючи емулятор, який одночасно читає * слово з hdd. Але вам знадобиться пам'ять, тому вам все одно знадобиться деяка оперативна пам'ять.
Ángel

1
Вибачте, @Tosh: "ваш емулятор повинен бути в пам'яті".
Анхель

-1

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


Ласкаво просимо на CS.SE! Чи можете ви обґрунтувати своє твердження, що більше накладних витрат на читання та записування збільшує ймовірність частого збою системи? Це мені не здається правильним.
DW

Це залежить від того, що ви використовуєте. Як і в unix / Linux, існує концепція, відома як буфер кешу. Його можна використовувати для зберігання попередньо встановлених блоків або блоків, позначених для затримки запису. Але в Windows або Mac такої концепції немає. Отже, вам потрібно отримати доступ до необхідних блоків із вторинного сховища. Тепер під час виконання паралельних процесів накладні витрати на читання збільшуватимуться, а отже, швидкість обробки зменшиться. Процеси не вдасться виконати, тим самим сповільнюючи роботу комп'ютера, так що він починає висіти і згодом виходить з ладу
Sanket Gupte

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