12

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

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

8 ответов8

24

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

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

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

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

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

23

Теоретически было бы возможно спроектировать компьютер для работы с очень небольшим (на несколько регистров) или отсутствующим ОЗУ (посмотрите определение машины Тьюринга - которая на самом деле может быть построена в достаточно большой / быстрой реализации жизни Конвея). моделирование).

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

Система или аналогичная сложность современного компьютера под управлением Windows или Linux, работающего без ОЗУ (аналогично реальной машине Тьюринга), потребует всего несколько дней для запуска и несколько часов, чтобы обновить экран для графического интерфейса в современных разрешениях. Даже текстовая операционная система, сравнимая с CP/M или ранними версиями DOS, может потребовать очень много времени для получения начальной командной строки.

11

ВСЕ современные стандартные стандартные процессоры общего назначения в основном работают следующим образом:

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

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

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

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

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

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

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


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

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

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

10

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

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

7

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

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

5

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

2

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

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

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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .