Может ли процессор работать только с источником питания и ПЗУ, используя только внутренний кеш в качестве ОЗУ?

Может ли процессор (например, Intel i3 /i5 /i7 /Xeon) с встроенной кэш-памятью использовать в качестве единственной функциональной ОЗУ без каких-либо внешних банков памяти?

Или должен находиться внешнее ОЗУ, и кэш не может быть доступен или использован отдельно?

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

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

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

58 голосов | спросил Dale Mahalko 19 J0000006Europe/Moscow 2017, 17:25:20

4 ответа


67

См. этот чрезвычайно подробный отчет о последовательности загрузки ПК: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

  

Поскольку на данный момент нет DRAM, код изначально работает в среде без стека. Большинство современных процессоров имеют внутренний кеш, который можно настроить как оперативную память для обеспечения стека программного обеспечения. Разработчики должны писать чрезвычайно жесткий код при использовании этой функции кэша в качестве ОЗУ, поскольку выселение было бы неприемлемым для системы в этот момент в последовательности загрузки; нет памяти для поддержания согласованности. Вот почему процессоры работают в режиме «No Evict Mode» (NEM) в этот момент процесса загрузки, когда они работают на основе кеша в виде ОЗУ. В NEM ошибка прошивки в кэше в процессоре не приведет к выселению. Разработка кода с доступным программным стеком намного проще, а код инициализации часто выполняет минимальную настройку для использования стека даже до инициализации DRAM.

Вы можете наблюдать это, запустив ПК без ОЗУ: он будет воспроизводить ряд звуковых сигналов. Программа, которая воспроизводит их, запускается из BIOS Flash ROM.

Я также видел это поведение на некоторых ARM-процессорах. Внутри SoC будут регистры конфигурации, которые позволят вам использовать кеш как оперативную память в начале последовательности загрузки, чтобы запустить программу, которая находит, перечисляет и настраивает DRAM.

ответил pjc50 19 J0000006Europe/Moscow 2017, 18:23:38
14

Как правило, кэш-память не адресуется. Программа не может хранить или извлекать данные намеренно из нее.

ответил Lior Bilia 19 J0000006Europe/Moscow 2017, 17:29:40
8

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

Еще в 1980-х годах я наткнулся на дизайн радиоприемника, который расшифровал Сигналы времени MSF , транслируемые в Великобритании. Этот дизайн использовал процессор Z80 и имел только ПЗУ для хранения программ. Вся обработка и хранение данных выполнялись с использованием внутренних регистров в процессоре. Это, очевидно, означало, что вызовов подпрограмм не было, поскольку для хранения стека имелась память.

В то время стоимость ОЗУ была высокой, и поскольку это был проект для хобби, снижение расходов было важно, совершенно не говоря уже о том, что это интересное академическое упражнение. Это было также до дней широко доступных микроконтроллеров (8751 с стоимостью eprom свыше 100 фунтов стерлингов).

ответил ʎəʞo uɐɪ 20 J0000006Europe/Moscow 2017, 11:42:16
-3

Обычно для процессора требуется внешний тактовый генератор. Но с этим, да, это возможно.

ответил John Hamilton 5 Jpm1000000pmFri, 05 Jan 2018 19:17:01 +030018 2018, 19:17:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132