Современные процессоры x86 имеют не менее 512 КБ кэш-памяти второго уровня. Есть приложения, которые полностью поместились бы в этот объем памяти. Можно ли запустить эти чипы без подключенной оперативной памяти? Если да, то есть ли способ сделать это, чтобы устранить штраф за время обратной записи, когда ЦП пытается поддерживать когерентность ОЗУ?
Я не имею в виду конкретное приложение, это просто праздное любопытство. Я уверен, что где-то есть нишевое приложение, где это было бы полезно.
Да, ты можешь. Подделывая чтение из последовательных (несуществующих) ячеек физической памяти, вы устанавливаете теги в кэше. Затем вы отключаете дальнейшее заполнение кэш-линий и вводите обратную запись, тем самым ограничивая чтение/запись в кэш, и он будет вести себя как обычная оперативная память.
Некоторые из проектов по замене биоса делают это, потому что тогда вы можете потратить гораздо больше кода на настройку чипсета и контроллера памяти чипсета, поэтому вы можете написать его, например, на C.
Эта практика широко используется для процессоров встроенного класса, а также для обработки загрузчиков. Методы превращения кэша в режим, подобный ОЗУ, немного различаются.
Для краткого введения на низком уровне вы можете проверить эту презентацию.
Обратите внимание, что, как указывали другие, вам все равно нужно откуда-то загрузить загрузочный код.
Когда процессор выходит из перезагрузки, кеш отключается. BIOS — это то, что изначально настраивает и очищает кеш. Так что нет, вы не можете запустить его без оперативной памяти, потому что в первую очередь нет оперативной памяти для загрузки.
Не знаю, насколько это верно, но вот мои мысли:
Я не думаю, что вы можете получить программный доступ к кешу. Вы не можете гарантировать от одной инструкции к другой, что будет в кеше и где оно будет расположено, поэтому вы не можете надежно использовать его в качестве ОЗУ, даже если бы вы могли получить к нему прямой доступ.
Вы можете запустить x86 без оперативной памяти, но вы не сможете заставить его делать что-то очень полезное. Вы будете ограничены использованием только внутренних регистров для хранения данных.
Юхонг Бао