Это очень сложный вопрос, ожидайте несколько ответов, поскольку люди лучше, чем ответы других :)
Профессор сказал, что лучшее место для запуска программ - это кеш.
Помните, что кеш во много раз дороже обычной оперативной памяти. В те времена, когда «большой» компьютер занимал 8 МБ (не гигабайты, мегабайты), вы могли обнаружить, что все машины были «кэш-памятью» (технически это особый тип ОЗУ, называемый SRAM), но они были более дорогими. Теперь у вас есть домашние машины с 4 ГБ памяти, 4 ГБ SRAM, подключенного к чипу, будут ОЧЕНЬ дорогими. Кроме того, у вас есть много умных людей, играющих с программами и компиляторами, чтобы наилучшим образом использовать кеш. При правильном алгоритме кеширования вы получаете 95% кеша с небольшим процентом от стоимости. Конечно, догадки не всегда верны. Google 'прогноз ветви' для получения дополнительной информации.
Мне было интересно, почему программы не могут быть запущены в регистрах?
Регистры - это то, что на самом деле загружать и хранить данные и адреса. Думайте о них как о такси. Они могут доставлять вещи туда и обратно, то, что они доставляют, это данные и адреса вашей программы. Каждая часть вашей программы, которая «запускается», проходит через регистр.
Я предполагаю, что вы спрашиваете, почему вы не можете просто запустить полностью из регистров. Одна из причин - их так мало. Классические Intel x86 регистры считаются в байтах, но программы в мегабайтах, гигабайтах. Вы были бы достаточно богатым человеком, чтобы иметь чип, который мог бы запускать MS-Word из регистров.
Кроме того, как программа может загрузить себя в кеш?
Программа не. ОС запускает программу и использует чип модуля управления памятью для загрузки областей программы из обычного ОЗУ. Несмотря на то, что он делает это, MMU умный и помещает часть памяти также в кеш, с той идеей, что я только что использовал его, мне может понадобиться снова использовать его в ближайшее время.
Разве кэш не управляется процессором и работает автоматически без программного контроля?
Да, технически чип управления памятью, а не процессор. Раньше это был отдельный чип, но теперь он является частью блока ЦП, чтобы ускорить обмен данными.