Запустить компьютер без оперативной памяти? [Дубликат]


14

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

Тогда я задумался о том, что произойдет, когда мы будем использовать только жесткий диск, но без оперативной памяти?



1
@Cornelius спасибо за ваш ответ, я проверю это :)
akash ujjwal

12
Происходит несколько звуковых сигналов, затем экран гаснет.
Arch Abit

1
У меня вопрос, могу ли я хотя бы проверить работоспособность видеокарты? Будет ли видео или монитор работать минимально?
Маршал ремесло

Ответы:


27

В какой-то момент возникает вопрос, что даже считается «оперативной памятью». Существует много процессоров и микроконтроллеров, которые имеют достаточно встроенной памяти для работы с небольшими операционными системами без отдельных чипов оперативной памяти. На самом деле, это на самом деле относительно распространено в мире встроенных систем. Итак, если вы просто ссылаетесь на отсутствие отдельных чипов ОЗУ, то да, вы можете сделать это с помощью многих современных чипов, особенно тех, которые предназначены для встраиваемых систем. Я сделал это сам на работе. Однако, поскольку единственная реальная разница между адресуемой внутрикристальной памятью и отдельными микросхемами ОЗУ заключается только в расположении (и, очевидно, в задержке), вполне разумно считать, что внутрипроцессорная память сама по себе является ОЗУ. Если вы считаете это как ОЗУ, то число текущих,

Если вы имеете в виду обычный ПК, нет, вы не можете запустить его без подключенных отдельных флешек, но это только потому, что BIOS не пытается загружаться без установленной RAM (что, в свою очередь, потому что все современные операционные системы ПК требуют ОЗУ для работы, тем более что машины x86 обычно не позволяют напрямую обращаться к памяти на кристалле; она используется исключительно как кеш.)

Наконец, как сказал Zeiss, нет теоретической причины, по которой вы не можете проектировать компьютер для работы вообще без ОЗУ, за исключением пары регистров. Оперативная память существует исключительно потому, что она дешевле встроенной памяти и намного быстрее дисков. Современные компьютеры имеют иерархию памяти, которая варьируется от больших, но медленных до очень быстрых, но маленьких. Нормальная иерархия выглядит примерно так:

  • Регистры - очень быстрые (могут управляться инструкциями ЦП напрямую, как правило, без дополнительной задержки), но обычно очень маленькие (например, ядра 64-битных процессоров x86 имеют только 16 регистров общего назначения, причем каждое из них может хранить одно 64-битное число.) Размеры регистров, как правило, невелики, поскольку регистры очень дороги на байт.
  • Кэш-память ЦП - все еще очень быстрая (часто с задержкой 1-2 цикла) и значительно больше, чем регистры, но все же намного меньше (и намного быстрее), чем обычный DRAM. Кэш-память процессора также намного дороже за байт, чем DRAM, поэтому обычно она намного меньше. Кроме того, многие процессоры на самом деле имеют иерархии даже внутри кеша. Обычно они имеют меньшие, более быстрые кэши (L1 и L2) в дополнение к большим и более медленным кэшам (L3.)
  • DRAM (то, что большинство людей воспринимают как «RAM») - намного медленнее, чем кэш (задержка доступа обычно составляет от десятков до сотен тактов), но намного дешевле на байт и, следовательно, обычно намного больше, чем кэш. DRAM по-прежнему, однако, во много раз быстрее, чем доступ к диску (обычно в сотни-тысячи раз быстрее).
  • Диски - они, опять же, намного медленнее, чем DRAM, но, как правило, намного дешевле на байт и, следовательно, намного больше. Кроме того, диски, как правило, являются энергонезависимыми, что означает, что они позволяют сохранять данные даже после завершения процесса (а также после перезагрузки компьютера).

Обратите внимание, что вся причина иерархий памяти - просто экономика. Нет теоретической причины (по крайней мере, в области компьютерных наук), почему мы не могли иметь терабайт энергонезависимых регистров на кристалле ЦП. Проблема в том, что его было бы просто безумно сложно и дорого построить. Наличие иерархий, варьирующихся от небольших объемов очень дорогой памяти до больших объемов дешевой памяти, позволяет нам поддерживать высокую скорость при разумных затратах.


теперь, наконец, я получаю то, что мне нужно. Вы ответили именно то, что я аспектирую. Большое спасибо :)
akash ujjwal

Фактически, причина, по которой компьютеры не загружаются без оперативной памяти, - это BIOS, если код BIOS не может найти адрес перемещения в оперативной памяти, которую он прерывает. Все, что вы услышите, это гудение блока питания, шум вентиляторов и, возможно, вращающихся дисков, но компьютер в основном мертвый. Процессор никогда не получает возможности заставить все это работать. Так что да, оперативная память очень важна.
Arch Abit

@ arch-abit да, это правда, но является ли ОЗУ необходимым компонентом для запуска компьютера?
Акаш Уджвал

2
В дополнение к тому, что @reirab сказал, можно запускать «ПК» без DRAM в смысле выполнения инструкций - это режим, в котором система работает до инициализации контроллера DRAM (это выполняется BIOS / EFI / Coreboot и т. Д.). Однако маловероятно, что вы сможете сделать что-нибудь полезное, поскольку большинство компонентов, вероятно, все равно используют DMA .
Мацей Пехотка

1
32-разрядные регистры процессора x86 имеют только 32 бита, а не 64, а 64-битные процессоры x86 имеют 32, а не 8 из них.
psusi 28.12.14

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; конечно значительный, но далеко от 1000000 раз. Там, где ОЗУ значительно превосходит HDD, наблюдается задержка поиска, но вы можете значительно уменьшить это, используя SSD. DDR3 имеет задержку в области 10 нс, а быстрый SSD может иметь задержку в области 10000 нс (100 тыс. Операций ввода-вывода в секунду) для фактора 1000; все еще далеко от 1000000.
CVn

1
@PeterCordes Отредактировано, поэтому не похоже, что я утверждаю, что Win / Linux может работать без оперативной памяти.
Zeiss Ikon

10

Вы можете это сделать, поскольку при запуске процессора x86 кэш L2 изначально является SRAM, а затем используется в качестве кэша. Таким образом, вы можете написать свой собственный BIOS, чтобы не инициализировать ОЗУ и использовать только небольшое количество SRAM внутри ЦП в качестве ОЗУ, а не кэш-памяти L2 / L3.

Просто прочитайте рекомендации BIOS от производителей процессоров.


4
+1 за это Фактически, каждая система (компьютер) x86 запускается «без использования оперативной памяти». Код Bios сначала определяет, есть ли баран, и издает звуковой сигнал, если его нет. Этот код может работать без оперативной памяти;) (ofc не так много можно сделать без оперативной памяти, наверняка регистров будет недостаточно для обработки жесткого диска и использования его «как оперативная память»)
Sebi

10

ВСЕ современные, стандартные универсальные процессоры в основном работают так:

  • CPU поддерживает регистр, который указывает в своем адресном пространстве следующую инструкцию
  • CPU выбирает все, что находится в этом адресном пространстве, и приращения, которые регистрируются
  • Если инструкция нуждается в дополнительной информации, такой как адрес назначения или другой операнд, она также выбирается
  • CPU выполняет инструкцию
  • Если инструкция представляет собой переход, вызов, возврат, возврат из прерывания или переход, она может изменить регистр, который указывает на следующую инструкцию.
  • Повторение

CPU выбирает все, что находится в этом адресном пространстве, и приращения, которые регистрируются

Что может «жить» в адресном пространстве?

  • Ничего (может вернуть нули, случайные данные или вызвать зависание процессора)
  • ОЗУ (ОЗУ материнской платы, ОЗУ от устройства PCI, такого как графический адаптер и т. Д.)
  • ПЗУ
  • Регистры устройства ввода-вывода (включая «внутренние устройства ввода-вывода», такие как локальная APIC ЦП)
  • Современные процессоры допускают «кэш как ОЗУ», поэтому часть кэша ЦП может появляться в адресном пространстве

Обратите внимание, «жесткого диска» нет в этом списке. Жесткий диск не подключен напрямую к процессору. Данные поступают на жесткий диск и обратно через устройство ввода-вывода (хост-адаптер SATA), подключенное к ЦПУ.

Устройство ввода / вывода использует DMA для загрузки / сохранения данных на / с жесткого диска. Это означает, что устройство ввода-вывода непосредственно считывает / записывает ОЗУ без вмешательства ЦП, а также полагается на наличие ОЗУ. Но если данные не были загружены в ОЗУ устройством ввода-вывода, ЦП не имеет возможности их увидеть.

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


Что происходит во время ошибки страницы:

  • CPU пытается получить доступ к странице памяти, которая помечена как выгруженная в локальных таблицах страниц CPU (которые всегда присутствуют в RAM).
  • Этот доступ вызывает исключение ошибки страницы в CPU.
  • CPU, находящийся в режиме ядра, просматривает страницу, к которой пытался получить доступ другой процесс.
  • Ядро замечает, что пользовательский процесс пытается получить доступ к выгруженной странице, и вызывает обычный процесс ввода-вывода, чтобы вернуть эту страницу обратно с диска. Это тот же процесс, который будет использоваться при загрузке / сохранении любых других данных с диска. Это не отличается только потому, что процессор подкачки в подкачки памяти.
  • Затем процессор передает управление обратно прерванному процессу, который продолжается, как будто ничего не произошло.

Таким образом, ЦПУ, нуждающемуся в получении данных с диска, поскольку память выгружается, ничем не отличается.


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

@ultrasawblade, почему у процессора нет возможности увидеть данные, даже если запрос ЦП на страницу (информация) и если он недоступен в оперативной памяти (основной памяти), то возникает сбой страницы, то запрос ЦП на жесткий диск для что желаемые данные. Это означает, что процессор, наконец, должен перейти на жесткий диск для получения необходимой информации.
Акаш Уджвал

2
Смотрите правки. Пейджинг ядра в подкачанной памяти не отличается от загрузки программы или чтения / записи программы на диск. Это просто происходит внутри ядра и за кулисами пользовательского процесса, но не за кулисами ядра.
LawrenceC

Обратите внимание, что, по крайней мере, x86 может использовать кэш-память в качестве ОЗУ в режиме без заполнения, но тогда вы находитесь в той же области, что и микроконтроллеры, которые поставляются со встроенной ОЗУ. Запуск ЦП только с ПЗУ и без адресного пространства для записи правдоподобен (если все ваше состояние соответствует регистрам, и обратите внимание, что самые последние процессоры x86 имеют тридцать два 512b векторных регистра ZMM ...) Но согласились, что это невозможно сделать без читаемое адресное пространство для кода (и GDT / LDT / IDT и другие таблицы для x86).
Питер Кордес

7

Персональный компьютер требует оперативной памяти для запуска. Каждое приложение, запущенное с жесткого диска, будет скопировано в ОЗУ перед его выполнением.

Поэтому, если у вас нет ОЗУ на вашем компьютере, ваш компьютер не запустится, возможно, вы услышите несколько предупреждающих звуковых сигналов, чтобы вы знали, что не установлено ОЗУ.


5
Затем вы стучите по лбу и говорите: «Мне не следовало пытаться установить эти RAM-карты в ковровое покрытие с влажностью менее 10%, 27 декабря в Северном полушарии?» Да?
Arch Abit

@LPChip, почему он хранится в Ram, какова основная цель этого. Чтобы сделать систему быстрой или сократить время доступа, для этого есть встроенный кеш. Я прав или нет?
Акаш Уджвал

1
ОЗУ - это быстрое хранилище, доступ к диску медленный, энергонезависимое хранилище и кэш-память ЦП существует по другим причинам.
Fiasco Labs

1
@FiascoLabs На самом деле, кэш-память ЦП существует по той же причине, что и ОЗУ: это действительно быстрое хранилище. Это намного быстрее, чем ОЗУ, но дороже на байт.
Рейраб

И компьютер не будет работать на нем автономно, отсюда и «другие причины»
Fiasco Labs

5

Компьютер не будет работать. Оперативная память является неотъемлемой частью успешного поста от материнской платы. Когда ОЗУ отсутствует или повреждено, многие материнские платы обычно дают звуковые коды, чтобы указать, где искать неисправности.


Да, это были маленькие металлические кольца, которые намагничивались / размагничивались. en.wikipedia.org/wiki/Magnetic-core_memory (в ответ на комментарий о старых компьютерах с вакуумными трубками, который был удален)
Fiasco Labs

2

На самом деле вы могли бы по крайней мере в двух случаях запустить компьютер без так называемой оперативной памяти.

  1. Первые старые механические «компьютеры» (конструкция Конрада Цузе и компьютер Чарльза Бэббиджа были механическими устройствами без ОЗУ, которые до сих пор назывались компьютерами)

  2. Современный компьютер без оперативной памяти и только с процессором (чипом) с регистрами . В большинстве случаев у вас есть SRAM (кэш-память) на процессоре, но самая быстрая компьютерная память называется регистрами, расположенными на чипе, и технически регистры на чипе не являются RAM.


1
Спасибо за этот ответ - я впервые вспоминаю, что слышал о Цузе и его ранних электромеханических компьютерах (хотя самые ранние чтения, которые я вспоминаю о компьютерах, всегда говорили о «реле» как переключающих устройствах, все другие ранние компьютеры, похоже, использовали вакуумные трубки ).
Zeiss Ikon

1

Это просто не будет работать. Материнская плата, скорее всего, издаст необычный звуковой сигнал и отключится. Если у вас недостаточно оперативной памяти, даже 128 МБ для Windows XP, она откажется от установки (на самом деле пробовала это на старом компьютере; один из чипов был неправильно установлен). Итак, при текущих настройках это невозможно. Даже если вы можете отключить проверки материнской платы, ЦП не может считывать данные напрямую с жесткого диска и ему требуется ОЗУ для каждой операции.

Я предполагаю, что теоретически было бы возможно построить машину, которая использует мало или не использует ОЗУ, но это было бы неэффективно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.