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


61

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

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

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

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

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


1
Полностью зависит от процессора и того, что именно вы подразумеваете под «кешем», так как некоторые процессоры имеют встроенную память и не нуждаются во внешних чипах.
PlasmaHH

42
в основном, если вы включаете адресную память в сам процессор, вы создаете то, что мы называем микроконтроллером. Они существуют.
Маркус Мюллер

1
Кто сказал, что вам вообще нужна оперативная память?
Крис Страттон

1
Зависит от того, как вы определяете «функцию». Бьюсь об заклад, i7 вполне способен производить тепло только с подключенной к нему батареей.
Дмитрий Григорьев

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

Ответы:


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.



2
Подробнее о том, как работает режим «кэша как оперативной памяти» (CAR) в x86 , в ответе, который приводит его в качестве варианта использования для INVD(при выходе из режима CAR, аннулировать кэш вместо того, чтобы бесполезные данные записывались в память, потенциально более что-то ценное).
Питер Кордес

Что не так с выселением, когда DRAM недоступен? Разве проблема не в чтении, а не записи в ОЗУ?
Мердад

14

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


2
+1 Это очень проницательный ответ. Кешлины загружаются и удаляются по желанию из адресуемых обращений из основной памяти почти случайным образом.
Ale..chenski

17
Да, именно поэтому он требует особого режима (как в ответе pjc) или какой-то особой хитрости. Другой вариант (помимо принятого ответа) может заключаться в том, чтобы заставить систему думать, что она имеет некоторый DRAM, но фактические операции записи в память просто отбрасывают данные, а чтения производят все нули (или фактические данные из ПЗУ для некоторого региона адресов). Пока все загрузки попадают в кеш, система будет вести себя правильно. IDK достаточно о том, как x86 загружается, чтобы узнать, можно ли перейти в 64-битный длинный режим без каких-либо реальных сбросов кеша.
Питер Кордес

3
Тем не менее, процессоры Skylake с встроенным кешем eDRAM используют его в качестве кеша на стороне памяти (между контроллером памяти и всем остальным, в отличие от Broadwell), так что он может даже кешировать доступ к DMA с системных устройств без использования ЦП или загрузки / загрузки ЦП / сохраняет в «не кэшируемых» областях памяти (которые обходят L1 / L2 / L3).
Питер Кордес

3
@PeterCordes Однако ответ не «нет» только потому, что нужен специальный режим - вопрос заключается в том, существует ли специальный режим.
user253751

1
Вопрос в том, что произойдет, если вы все же используете кеш и убедитесь, что он никогда не пропустит или не очистится - он становится адресуемым в тот момент, когда что-то записывается по адресу в несуществующей ОЗУ, нет? Фактическая запись сбрасывается на пол, но чтение все равно подается из кэша?
сторожевик

9

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

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

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


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

Конечно, само собой разумеется, что не использование ОЗУ ограничивает функциональность, которая возможна. Приведенное приложение показывает, насколько это возможно с очень ограниченными ресурсами хранения данных, радиоприемником и ЖК-дисплеем.
uɐɪ

-3

Обычно процессор требует внешних часов. Но с этим, да, это может.


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