Куда относится кодовая память в гарвардской архитектуре?

Гарвардская архитектура - это компьютерная архитектура с отдельной шиной для кода и памяти данных. Это архитектура, ссылающаяся на память кода, которая находится в ОЗУ или ПЗУ (для микроконтроллеров). Я был смущен, когда архитектура говорит о памяти кода. Насколько я знаю, для небольших встроенных систем код всегда будет выполняться из ПЗУ, тогда как в средних и сложных встроенных системах память кода может быть перенесена в ОЗУ из ПЗУ для более быстрого выполнения. В этом случае ОЗУ связано с двумя шинами, одна для кода, а другая для памяти данных. Может ли кто-нибудь, пожалуйста, помогите мне понять это.

3 ответа

Возможно, вы захотите увидеть это https://en.wikipedia.org/wiki/Modified_Harvard_architecture

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

Гарвардская Архитектура - по большей части академическое упражнение. Сначала вы должны спросить, как они определяют разделение на четыре шины? Внутренний фон Неймана, который разделяется по адресу? многие реализации фон Нуманна, если не все разделены по адресу, и если вы рисуете большую рамку, вы видите много отдельных шин, иногда данные и инструкции объединяются, иногда нет.

Поскольку вы не можете использовать чистый гарвард для загрузчика или операционной системы, это просто умственное упражнение. Такой лейбл, как von neumann, о котором любят метаться, если по какой-либо другой причине не возникает путаницы. Реальный мир находится где-то посередине. AMBA/AXI и другие шины помечены как модифицированный гарвард, потому что они помечают транзакции данных и команд как таковые, но совместно используют одни и те же шины (на некоторых из них нет одной шины, есть отдельный адрес чтения, данные чтения, адрес записи, данные записи). процессор долгое время не был узким местом процессора, и эти шины могут быть и простаивают, так что вы можете иметь место для инструкций и данных и периферийных устройств на одном и том же наборе шин, особенно если вы разделяете адрес чтения, чтение данных, запись адрес, запись данных в отдельные шины с тегами id, которые используются для подключения точек и выполнения транзакций.

как уже упоминалось в википедии, ближе всего, что вы действительно увидите в реальном мире, это что-то вроде микроконтроллера. И когда они говорят о памяти, действительно просто подразумевают адресное пространство, то, что находится на другом конце шины, может быть sram, dram, flash, eeprom и т. Д. Или их комбинацией. С обеих сторон, а также все периферийные устройства на этой шине. Таким образом, в микроконтроллере в этой модели инструкции находятся во флэш-памяти, а sram - это данные, и если для чисто гарвардской архитектуры нет способа загрузить код в sram и запустить его там, также вы не можете использовать шину данных для программирования флэш-памяти. или для буферизации данных, подлежащих перепрошивке, rom / flash волшебным образом загружается по пути, не указанному в архитектуре жесткого диска. вероятно пересечение между ресурсами шины ввода-вывода и ресурсами шины команд, что позволяет называть модифицированный гарвард.

для фон Неймана у вас есть ранние адресные декодеры, которые разбивают шину на команды, данные, ввод-вывод и их подразделы, возможно, данные и инструкции остаются объединенными, но у вас нет единой чистой шины от конца до конца. не практично.

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

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

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

Однако в "реальных" реализациях, таких как микроконтроллеры AVR, шина инструкций обращается к Flash ROM, а шина без инструкций (я специально не пишу "шину данных", это что-то другое) обращается к SRAM. Вы даже не "видите" эти шины на AVR - они являются чисто внутренними для большинства этих MCU.

Другие вопросы по тегам