Модифицированная архитектура Гарварда - Википедия - Modified Harvard architecture

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

Гарвардская архитектура

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

Физическое разделение памяти команд и данных иногда считается отличительной чертой современных компьютеров с гарвардской архитектурой. С микроконтроллеры (целые компьютерные системы, интегрированные в отдельные микросхемы), использование различных технологий памяти для инструкций (например, флэш-память ) и данные (обычно чтение / запись памяти ) в машинах фон Неймана становится популярным. Истинное различие гарвардской машины состоит в том, что память команд и данных занимают разные адресные пространства. Другими словами, адрес памяти не определяет однозначно место хранения (как это происходит в машине фон Неймана); также необходимо знать пространство памяти (инструкции или данные), которому принадлежит адрес.

Архитектура фон Неймана

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

Недостатком этих методов являются проблемы с исполняемая защита пространства, которые увеличивают риски от вредоносное ПО и программные дефекты. Кроме того, в этих системах, как известно, очень сложно документировать поток кода, а также может значительно усложнить отладку.

Измененная архитектура Гарварда

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

Архитектура с разделенным кешем (или почти фон Неймана)

Самая распространенная модификация строит иерархия памяти с отдельными Кеши процессора для инструкций и данных на более низких уровнях иерархии. Существует единое адресное пространство для инструкций и данных, обеспечивающее модель фон Неймана, но ЦП выбирает инструкции из кэша инструкций и данные из кэша данных.[1] Большинству программистов никогда не нужно знать о том, что ядро ​​процессора реализует (модифицированную) гарвардскую архитектуру, хотя они выигрывают от ее преимущества в скорости. Только программисты, которые генерируют и хранят инструкции в памяти, должны знать о таких проблемах, как согласованность кеша, если хранилище не изменяет или не делает недействительной кэшированную копию инструкции в кэше инструкций.

Память инструкций как архитектура данных

Другое изменение сохраняет природу «отдельного адресного пространства» машины Гарварда, но предоставляет специальные машинные операции для доступа к содержимому памяти команд как к данным. Поскольку данные не могут быть непосредственно выполнены в виде инструкций, такие машины не всегда рассматриваются как «модифицированная» гарвардская архитектура:

  • Доступ для чтения: начальные значения данных могут быть скопированы из памяти команд в память данных при запуске программы. Или, если данные не подлежат изменению (это может быть постоянное значение, например число Пи, или текстовая строка ), к нему может получить доступ запущенная программа непосредственно из памяти команд, не занимая места в памяти данных (что часто имеет большое значение).
  • Доступ для записи: обычно требуется возможность перепрограммирования; несколько компьютеров чисто ПЗУ -основан. Например, микроконтроллер обычно есть операции для записи в флэш-память используется, чтобы держать его инструкции.[2] Эта возможность может использоваться для целей, включая обновления программного обеспечения. EEPROM Замена / PROM - альтернативный метод.

Архитектура памяти данных как инструкций

Некоторые процессоры с архитектурой Гарварда, такие как MAXQ, могут выполнять инструкции, извлеченные из любого сегмента памяти - в отличие от исходного процессора Гарварда, который может выполнять только команды, извлеченные из сегмента памяти программ. Архитектура фон Неймана - может читать инструкцию и считывать значение данных одновременно, если они находятся в разных сегментах памяти, поскольку процессор имеет (по крайней мере) два отдельных сегмента памяти с независимыми шинами данных. Наиболее очевидное различие, видимое программистом. Вид модифицированной гарвардской архитектуры и чистой архитектуры фон Неймана заключается в том, что при выполнении инструкции из одного сегмента памяти к одному и тому же сегменту памяти нельзя одновременно обращаться как к данным.[3][4]

Сравнения

Чтобы отличить модифицированные машины Гарварда от чистых машин Гарварда и фон Неймана, можно использовать три характеристики:

Память инструкций и данных занимают разные адресные пространства

Для чисто гарвардских машин существует адрес «ноль» в пространстве команд, который относится к месту хранения команд, и отдельный адрес «ноль» в пространстве данных, который относится к отдельному месту хранения данных. Напротив, машины Гарварда с модифицированным фон Нейманом и с разделенным кешем хранят как инструкции, так и данные в одном адресном пространстве, поэтому адрес «ноль» относится только к одному месту, и определяется, интерпретируется ли двоичный шаблон в этом месте как инструкция или данные. по тому, как написана программа. Однако, как и чистые гарвардские машины, гарвардские машины с модифицированной памятью инструкций как данными имеют отдельные адресные пространства, поэтому имеют отдельные адреса «ноль» для инструкций и пространства данных, так что это не отличает этот тип модифицированных гарвардских машин от чисто гарвардских. машины.

Память инструкций и данных имеет отдельные аппаратные пути к центральному процессору (ЦП)

В этом суть чистых или модифицированных машин Гарварда и почему они сосуществуют с более гибкой и общей архитектурой фон Неймана: отдельные пути из памяти к ЦП позволяют одновременно извлекать инструкции и получать доступ к данным, повышая пропускную способность. . У чистых гарвардских машин есть отдельные пути с отдельными адресными пространствами. Гарвардские машины с модифицированным разделенным кешем имеют такие отдельные пути доступа к кэшам ЦП или другой тесно связанной памяти, но унифицированный путь доступа охватывает остальную часть иерархия памяти. У процессора фон Неймана есть только этот унифицированный путь доступа. С точки зрения программиста, модифицированный гарвардский процессор, в котором память команд и данных разделяет адресное пространство, обычно рассматривается как машина фон Неймана до тех пор, пока согласованность кеша не станет проблемой, как в случае с самомодифицирующийся код и загрузка программы. Это может сбивать с толку, но обычно такие проблемы видны только системные программисты и интеграторы.[требуется разъяснение ] Другие модифицированные гарвардские машины в этом отношении похожи на чистые гарвардские машины.

Доступ к памяти инструкций и данных можно получить разными способами.

Оригинальная гарвардская машина, Марк I, сохраненные инструкции на перфорированная бумажная лента и данные в электромеханических счетчиках. Однако это было полностью связано с ограничениями технологий, доступных в то время. Сегодня такая гарвардская машина, как Микроконтроллер PIC может использовать ширину 12 бит флэш-память для инструкций и шириной 8 бит SRAM для данных. Напротив, микроконтроллер фон Неймана, такой как ARM7TDMI, или модифицированный Гарвардский ARM9 core, обязательно обеспечивает единый доступ к флеш-памяти и SRAM (в таких случаях как 8-битные байты).

Современное использование модифицированной гарвардской архитектуры

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

Существуют также процессоры, которые по самому строгому определению являются гарвардскими машинами (память для программ и данных занимают разные адресные пространства) и только модифицированный в слабом смысле, что есть операции по чтению и / или записи памяти программ как данных. Например, инструкции LPM (загрузка памяти программ) и SPM (сохранение памяти программ) в Atmel AVR реализовать такую ​​модификацию. Подобные решения встречаются и в других микроконтроллерах, таких как ПОС и Z8Encore!, многие семейства процессоров цифровых сигналов, такие как Ядра TI C55x, и больше. Поскольку выполнение инструкций по-прежнему ограничено адресным пространством программы, эти процессоры очень не похожи на машины фон Неймана.

Наличие отдельных адресных пространств создает определенные трудности при программировании на языках высокого уровня, которые напрямую не поддерживают представление о том, что таблицы данных только для чтения могут находиться в адресном пространстве, отличном от обычных записываемых данных (и, следовательно, должны быть прочитаны с использованием других инструкций) . В Язык программирования C может поддерживать несколько адресных пространств либо через нестандартные расширения[а] или через теперь стандартизированные расширения для поддержки встроенных процессоров.

Смотрите также

Примечания

  1. ^ Сопровождающие стандартную библиотеку C для порта GCC на микроконтроллер Atmel AVR, который имеет отдельные адресные пространства для кода и данных, заявляют в Данные в пространстве программы что отдельные адресные пространства подразумевают архитектуру Гарварда. Далее они объясняют, что язык C имеет только одно адресное пространство указателя и, следовательно, не был разработан для машин с архитектурой Гарварда. Затем они описывают нестандартные расширения, принятые GCC для AVR и библиотеки AVR C, чтобы разрешить доступ к данным, хранящимся в памяти команд (программ). Они даже объясняют, почему ключевое слово const нельзя задействовать, чтобы различать объекты данных, помещаемые в память команд.

Рекомендации

  1. ^ Модифицированная Гарвардская архитектура: прояснение путаницы
  2. ^ «AVR109: Самопрограммирование» (PDF) (Примечание по применению). Атмель. Июнь 2004 г.. Получено 29 января 2015.
  3. ^ Руководство пользователя MAXQ Family. Разделы 1.2 «Гарвардская архитектура памяти» и 2.5 «Псевдо-фон Нейманнский доступ к памяти».
  4. ^ Конарк Гоэль и другие. О порте MAXQ GCC.