Компьютер без оперативной памяти, но с диском, эквивалентным компьютеру с оперативной памятью?

18

Память используется для многих вещей, как я понимаю. Он служит дисковым кешем и содержит инструкции программ, их стек и кучу. Вот мысленный эксперимент. Если кто-то не заботится о скорости и времени, которые требуются компьютеру для выполнения хруста, то какой минимальный объем памяти можно иметь, если у него очень большой диск? Можно ли покончить с памятью и просто иметь диск?

Кэширование диска явно не требуется. Если мы установим пространство подкачки на диск, программный стек и куча также не потребуют памяти. Есть ли что-то, что требует присутствия памяти?

вздор
источник
3
Какова идея этого вопроса?
Ив Дауст
12
Определите «диск». Мы быстро движемся к бездисковому миру (я рад, что Терри Пратчетту не приходится это наблюдать). Это означает, что все хранилище будет в каком-то твердом или другом виде, что как бы отвечает на ваш вопрос, хотя, вероятно, и наоборот.
Питер - Восстановить Монику
2
Память это память это память
Эдуард
8
Насколько мне известно, произвольно адресуемая память не является требованием к компьютерам. Лента с машины Тьюринга не имеет произвольной адресации. Ничто не мешает вам читать / писать только один бит на блок, если хотите.
Эдуар

Ответы:

24

Конечно. В принципе, при наличии соответствующего оборудования у вас может быть только диск со всем, что хранится на диске. Каждый раз, когда процессор выполнял команду загрузки или сохранения, может быть какое-то оборудование, которое превращает это в чтение или запись на диск. Это будет очень медленно: на магнитном диске каждый поиск занимает около 10 мс, поэтому вы можете делать около 100 операций чтения и записи с произвольным доступом в секунду.

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

DW
источник
6
@MSalters отмечает, что если мы модифицируем диск (или накладываем на него дополнительное оборудование), чтобы сделать его похожим на RAM, то мы могли бы просто назвать его RAM. Проблема в том, что вопрос «Можно ли покончить с памятью и просто иметь диск» слишком расплывчатый. Что мы подразумеваем под памятью и диском? Мы имеем в виду те, которые существуют в современном настольном ПК? Тогда ответ - нет. Мы имеем в виду гипотетическую память и диск? Тогда в этом случае различие между ними в любом случае размыто, и вопрос эквивалентен «возможно ли иметь компьютер с ОЗУ на механической основе?» ,
JBentley
1
AS / 400 вроде работает следующим образом. Существует одноуровневое хранилище и только одно адресное пространство. Прошивка платформы объединяет диск и память в одну абстракцию хранилища, сама ОС видит только одно единое единое пространство хранения. Там нет указателей, только ссылки на объекты. Объекты прозрачно перемещаются из памяти на диск и обратно с помощью встроенного программного обеспечения платформы (BIOS на языке ПК, SLIC на языке AS / 400). Это не будет иметь никакого значения для ОС и приложений, если вы удалили диски и имели только ОЗУ или удалили ОЗУ и имели только диски.
Йорг Миттаг
Также я думаю, что жизнь HDD будет намного короче. И еще хуже для SSD. Скорее всего, причина, по которой телефоны Android не имеют подкачки
Suici Doga
16

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

Конечно, нет жестких дисков с «неограниченным пространством», но нет и неограниченной оперативной памяти.

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

jmite
источник
14

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

Интересно, что он поставлялся с уже устаревшим инструментом, известным как «оптимизирующий ассемблер» - т.е. ассемблер не только генерировал машинные инструкции, но и выписывал их на барабан последовательно, чтобы минимизировать для каждой инструкции количество времени в ожидании вращения барабана к следующему.

PMar
источник
3
Возможно, вы думаете о зебре Stantec - archive.computerhistory.org/resources/text/Standard/… . Когда я поступил в университет в 1967 году, у них еще был один на кафедре CS.
Дэвид Маршалл,
3
На самом деле, я думаю, что мог думать о IBM 1408.
PMar
8
См. Также «Историю Мела» ( catb.org/jargon/html/story-of-mel.html ), в которой рассказывается о программисте, работавшем над Royal McBee LPG-30, у которого была барабанная память.
db48x
@ db48x: Я забыл, как крута эта история. Я, вероятно, не читал это в течение 10 лет.
Питер Кордес
7

Нет. Диски не имеют произвольной адресации, как RAM. Вместо этого они блокируют устройства хранения. Вы не можете прочитать или написать байт из них. И ваш процессор не может прочитать весь сектор сразу, им нужен этот произвольный доступ. Операционные системы скрывают этот уровень детализации от вас, но они делают это, считывая целый сектор в ОЗУ, изменяя его и записывая обратно.

В результате вам понадобится один блок хранилища с произвольным доступом. Это может быть кеш ЦП, который сделан из SRAM (быстрый тип ОЗУ).

Это не только диски. Флэш-память построена из блоков, что является ключом к ее низкой цене. У него даже есть блоки, намного большие, чем у обычных секторов диска, но он использует оперативную память, чтобы скрыть это от ОС.

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

MSalters
источник
5
Я думаю, что ваше «Нет» должно быть «Да, но это потребует пользовательских дисков».
Темыр
3
Вы, конечно, можете прочитать байт на обоих. Чего вы не можете сделать, так это записать один байт, потому что для записи требуется одновременная запись всего блока. Однако в принципе нет причин, по которым вы не можете изменить блок, скопировав немодифицированные данные из исходного блока в новый блок, записав новые данные вместо этого, где это необходимо, а затем скопировав их обратно в исходный блок. Вы быстро изнашиваете свой диск, но это все равно неизбежно из-за вопроса ОП.
Грэм
3
А «блокирование» осуществляется для эффективного использования физического дискового пространства: вам нужно пространство вокруг каждого фрагмента «реальных» данных для идентификации блока, обеспечения «защитного» пространства между блоками и т. Д. Нет технической причины, по которой блоки не могут быть единым целым. байт (но скорость будет падать еще больше, как и емкость).
TripeHound
6
На самом деле, даже текущая оперативная память не имеет байтовой адресации - DDR3 работает в пакетном режиме, а минимальный размер чтения / записи составляет 8 64-битных слов (т.е. 64 байта); Я не эксперт, но я бы поспорил, что требуется согласованный доступ. Все это не так сильно отличается от старых дисков, где размер блока был порядка 512 байт, поэтому я бы сказал, что эти различия в основном исторические, линия действительно размыта.
Matteo Italia
1
(кроме того, ничто не мешает вам использовать целый блок - какого бы размера он ни был - просто для удержания одного байта - немного неэффективно, но пока я не тот, кто платит за диски, все в порядке)
Matteo Italia
1

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

Если бы у вас был процессор, похожий на массивный 12-ядерный Xeon с 30 МБ кэш-памяти, возможно, вы могли бы иметь систему без ОЗУ или жесткого диска, но использовать только кэш-память. (Не уверен, что это действительно работает или если по какой-то причине требуется ОЗУ).

gnasher729
источник
IIRC, x86 имеет режим, в котором он использует внутренний кеш в качестве основной памяти. electronics.stackexchange.com/questions/16485/… имеет некоторые подробности. Я думаю, что это иногда называют «режимом без заполнения», то есть процессор не пытается фактически заполнить строки кэша из внешней памяти. Это может препятствовать использованию DMA для ввода-вывода жесткого диска, потому что «системный агент» не может DMA в кэш L3. Он может работать на Skylake с L4 eDRAM, потому что он настроен как кэш на стороне памяти (в отличие от Broadwell), который может кэшировать все , включая DMA. Запрограммированный ввод-вывод все равно будет работать на диске.
Питер Кордес
Конечно, в этот момент вы используете System-on-Chip с 128 МБ ОЗУ, что было неплохо 15 лет назад. Имея только кэш-память L3 SRAM, это все еще составляет от 4 до 8 МБ в настольном чипе, что может быть достаточно для очень урезанного Linux, но достаточно легко для DOS. Если большая часть вашего кода находится в ПЗУ, а не в ОЗУ, то это нормально.
Питер Кордес
1

Это концептуально возможно. RAM - это просто уровень кеширования. В современном компьютере существует множество уровней кэширования (см. Кэш-память ЦП L1, L2, L3 .., разумеется, Ram, область подкачки, которая является логическим разделом диска, используемого в качестве ОЗУ ...-), если вы установите или добавить один, машина будет работать. Например, живой компакт-диск Ubuntu может не использовать уровень кэширования жесткого диска. Тем не менее, я не думаю, что есть какая-либо ОС, которая может поддерживать отсутствие уровня оперативной памяти.

Picci
источник
1
Это не ОС, а аппаратное обеспечение, которое требует инструкций для оперативной памяти (на самом деле, отображенных в адресном пространстве).
Анхель
@ Ангел, действительно ли требуется в современной ОС, чтобы текст (инструкции), bss, стек и куча загружались в память для выполнения программы? Разве они не могут быть на свопе (диске)? В Linux, скажем.
Тош
1
Мы говорим о информатике или компьютерной инженерии? Я не знаю ни реализации ОС, ни аппаратного уровня, я опираюсь только на тезис Черча-Тьюринга. Возможно, это невозможно при использовании имеющегося на рынке аппаратного обеспечения или при использовании существующих ОС, но это возможно в теоретическом сценарии.
Picci
1
@ Это не проблема ОС, а аппаратного обеспечения. Ваш ЦП выполняет одну инструкцию, расположенную по адресу памяти, указанному указателем инструкции. Так что просто наличие диска не сработает (без изменения вашего оборудования). Отвечая на ваш вопрос, не все разделы должны были бы быть загружены в память, фактически ОС может загружать их только тогда, когда программа пытается получить к ним доступ. В качестве крайнего примера, вы можете запустить программу «с диска», используя эмулятор, который читает по одному слову * за раз с жесткого диска. Но ваша память должна быть в памяти, поэтому вам все равно понадобится немного оперативной памяти.
Анхель
1
Извините, @Tosh: "ваш эмулятор должен быть в памяти".
Анхель
-1

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

Санкет Гупте
источник
Добро пожаловать в CS.SE! Можете ли вы обосновать свое утверждение о том, что дополнительные затраты на чтение и запись увеличивают вероятность частого сбоя системы? Это не звучит правильно для меня.
DW
Это зависит от того, что вы используете. Как и в Unix / Linux, существует концепция, известная как буферный кеш. Он может использоваться для хранения предварительно выбранных блоков или блоков, помеченных для отложенной записи. Но в Windows или Mac такого понятия нет. Следовательно, вы должны получить доступ к необходимым блокам из вторичного хранилища. Теперь при выполнении параллельных процессов накладные расходы на чтение и чтение будут увеличиваться, а скорость обработки будет соответственно уменьшаться. Процессы не смогут выполняться, тем самым замедляя работу компьютера, в результате чего он начинает
зависать
2
Это звучит как заблуждение. Замедление компьютера не означает, что компьютер потерпит крах.
DW