Модифицированная архитектура Гарварда
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Модифицированная Гарвардская архитектура — это разновидность Гарвардской компьютерной архитектуры , которая, в отличие от чистой Гарвардской архитектуры, позволяет обращаться к памяти, содержащей инструкции, как к данным. Большинство современных компьютеров, зарегистрированных как Гарвардская архитектура, на самом деле являются модифицированной Гарвардской архитектурой.
Гарвардская архитектура [ править ]
В оригинальном компьютере Гарвардской архитектуры, Harvard Mark I , для хранения инструкций и данных использовались совершенно отдельные системы памяти. ЦП . извлек следующую инструкцию и одновременно загрузил или сохранил данные [1] и независимо. В этом отличие от компьютера с архитектурой фон Неймана , в котором и инструкции, и данные хранятся в одной и той же системе памяти и (без сложности кэша ЦП ) должны быть доступны по очереди.
Физическое разделение памяти инструкций и данных иногда считается отличительной особенностью современных компьютеров Гарвардской архитектуры. С появлением микроконтроллеров (целых компьютерных систем, интегрированных в один чип) использование различных технологий памяти для инструкций (например, флэш-памяти ) и данных (обычно памяти чтения/записи ) в машинах фон Неймана становится популярным. Истинное отличие гарвардской машины состоит в том, что память инструкций и данных занимают разные адресные пространства . Другими словами, адрес памяти не идентифицирует однозначно место хранения (как это происходит в машине фон Неймана); также необходимо знать область памяти (инструкцию или данные), которой принадлежит адрес.
Архитектура фон Неймана [ править ]
Компьютер с архитектурой фон Неймана имеет преимущество перед гарвардскими машинами, описанными выше, в том, что к коду также можно получить доступ и обращаться с ним так же, как с данными, и наоборот. Это позволяет, например, считывать данные из дискового хранилища в память, а затем выполнять их в виде кода, или самооптимизирующиеся программные системы, использующие такие технологии, как своевременная компиляция, для записи машинного кода в собственную память и последующего его выполнения. . Другой пример — самомодифицирующийся код , который позволяет программе изменять себя.
Недостатком этих методов являются проблемы с защитой исполняемого пространства , которые повышают риски от вредоносных программ и дефектов программного обеспечения.
Гарварда Модифицированная архитектура
Соответственно, некоторые чисто Гарвардские машины являются специализированными продуктами. Вместо этого большинство современных компьютеров реализуют модифицированную Гарвардскую архитектуру. Эти модификации представляют собой различные способы ослабить строгое разделение между кодом и данными, сохраняя при этом более высокую производительность одновременного доступа к данным и инструкциям Гарвардской архитектуры.
кэшем (или почти фон Неймана разделенным Архитектура с )
Наиболее распространенная модификация строит иерархию памяти с отдельными кэшами ЦП для инструкций и данных на более низких уровнях иерархии. Для инструкций и данных существует единое адресное пространство, что обеспечивает модель фон Неймана, но ЦП извлекает инструкции из кэша инструкций и извлекает данные из кэша данных. [ нужна ссылка ] Большинству программистов никогда не нужно осознавать тот факт, что ядро процессора реализует (модифицированную) гарвардскую архитектуру, хотя они и получают выгоду от ее преимуществ в скорости. Только программисты, которые генерируют и сохраняют инструкции в памяти, должны знать о таких проблемах, как согласованность кэша , если хранилище не изменяет и не делает недействительной кэшированную копию инструкции в кэше инструкций.
инструкции-память как данные « » Архитектура
Другое изменение сохраняет природу «отдельного адресного пространства» гарвардской машины, но обеспечивает специальные машинные операции для доступа к содержимому памяти команд как к данным. Поскольку данные не могут быть выполнены напрямую в виде инструкций, такие машины не всегда рассматриваются как «модифицированная» гарвардская архитектура:
- Доступ для чтения: начальные значения данных могут быть скопированы из памяти команд в память данных при запуске программы. Или, если данные не подлежат изменению (это может быть постоянное значение, такое как число «пи » или текстовая строка ), к ним может получить доступ работающая программа непосредственно из памяти команд, не занимая места в памяти данных (что часто с наценкой).
- Доступ для записи: обычно требуется возможность перепрограммирования; немногие компьютеры основаны исключительно на ПЗУ . Например, микроконтроллер обычно имеет операции записи во флэш-память, используемую для хранения его инструкций. [2] Эта возможность может использоваться для целей, включая обновления программного обеспечения. Замена EEPROM /PROM является альтернативным методом.
память данных как » инструкция Архитектура «
Некоторые процессоры с гарвардской архитектурой, такие как Maxim Integrated MAXQ, могут выполнять инструкции, извлеченные из любого сегмента памяти — в отличие от исходного процессора Гарварда, который может выполнять только инструкции, извлеченные из сегмента программной памяти.Такие процессоры, как и другие процессоры с гарвардской архитектурой – и в отличие от чистой архитектуры фон Неймана – могут одновременно считывать инструкцию и значение данных, если они находятся в отдельных сегментах памяти, поскольку процессор имеет (по крайней мере) два отдельных сегмента памяти с независимыми шины данных.Наиболее очевидное, видимое программисту, различие между такой модифицированной гарвардской архитектурой и чистой архитектурой фон Неймана заключается в том, что при выполнении инструкции из одного сегмента памяти к одному и тому же сегменту памяти нельзя одновременно получить доступ как к данным. [3] [4]
Сравнения [ править ]
Чтобы отличить модифицированные Гарвардские машины от чистых Гарвардских машин и машин фон Неймана, можно использовать три характеристики:
- Память инструкций и данных занимают разные адресные пространства.
Для чисто Гарвардских машин существует адрес «ноль» в пространстве команд, который относится к месту хранения инструкций, и отдельный адрес «ноль» в пространстве данных, который относится к отдельному месту хранения данных. Напротив, машины фон Неймана и модифицированные гарвардские машины с разделенным кэшем хранят как инструкции, так и данные в одном адресном пространстве, поэтому адрес «нуль» относится только к одному местоположению, и определяется, интерпретируется ли двоичный шаблон в этом месте как инструкция или данные. тем, как написана программа. Однако, как и чистые гарвардские машины, модифицированные гарвардские машины с памятью инструкций как данными имеют отдельные адресные пространства, поэтому имеют отдельные «нулевые» адреса для пространства инструкций и данных, поэтому это не отличает этот тип модифицированных гарвардских машин от чистого гарвардского. машины.
- Память инструкций и данных имеет отдельные аппаратные пути к центральному процессору (ЦП).
В этом суть чистых или модифицированных гарвардских машин и того, почему они сосуществуют с более гибкой и общей архитектурой фон Неймана: отдельные пути памяти к ЦП позволяют одновременно получать инструкции и получать доступ к данным, улучшая пропускную способность. . Чистые гарвардские машины имеют отдельные пути с отдельными адресными пространствами. Модифицированные гарвардские машины с разделенным кэшем имеют такие отдельные пути доступа для кэшей ЦП или другой тесно связанной памяти, но единый путь доступа охватывает остальную часть иерархии памяти . Процессор фон Неймана имеет только этот единый путь доступа. С точки зрения программиста, модифицированный гарвардский процессор, в котором память инструкций и данных разделяют одно адресное пространство, обычно рассматривается как машина фон Неймана до тех пор, пока не возникает проблема с когерентностью кэша, как в случае самомодифицирующегося кода и загрузки программы. Это может сбивать с толку, но такие проблемы обычно видны только системным программистам и интеграторам . [ нужны разъяснения ] Другие модифицированные гарвардские машины в этом отношении подобны чистым гарвардским машинам.
- Доступ к памяти инструкций и данных можно получить разными способами.
Оригинальная гарвардская машина Mark I хранила инструкции на перфоленте , а данные — в электромеханических счетчиках. Однако это было полностью связано с ограничениями технологий, доступных в то время. Сегодня гарвардская машина, такая как микроконтроллер PIC, может использовать 12-битную флэш-память для инструкций и 8-битную SRAM для данных. Напротив, микроконтроллер фон Неймана, такой как ARM7TDMI или модифицированное ядро Harvard ARM9 , обязательно обеспечивает единый доступ к флэш-памяти и SRAM (в этих случаях в виде 8-битных байтов).
архитектуры Гарварда модифицированной использование Современное
безкэшовый DSP или микроконтроллер За пределами приложений, где требуется , большинство современных процессоров имеют кеш ЦП , который разделяет инструкции и данные.
Существуют также процессоры, которые по самому строгому определению являются гарвардскими машинами (память программ и данных занимают разные адресные пространства) и модифицируются лишь в том слабом смысле, что существуют операции по чтению и/или записи памяти программ в виде данных. Например, команды LPM (загрузка памяти программ) и SPM (сохранение памяти программ) в Atmel AVR реализуют такую модификацию. Подобные решения встречаются и в других микроконтроллерах, таких как PIC и Z8Encore! , многие семейства процессоров цифровых сигналов, такие как ядра TI C55x , и другие. Поскольку выполнение инструкций по-прежнему ограничено адресным пространством программы, эти процессоры очень отличаются от машин фон Неймана. Внешняя проводка также может преобразовать строго гарвардское ядро ЦП в модифицированное гарвардское, например, путем простого объединения сигналов PSEN# (чтение пространства программы) и RD# (чтение внешнего пространства данных) снаружи через логический элемент И на процессоре Intel. Микроконтроллер семейства 8051 считается «подключенным по фон Нейману», поскольку внешние данные и адресное пространство программы становятся унифицированными.
Наличие отдельных адресных пространств создает определенные трудности при программировании на языках высокого уровня, которые напрямую не поддерживают идею о том, что таблицы данных, доступных только для чтения, могут находиться в адресном пространстве, отличном от обычных записываемых данных (и, следовательно, их необходимо читать с использованием других инструкций). . Язык программирования C может поддерживать несколько адресных пространств либо посредством нестандартных расширений. [а] или через стандартизированные расширения для поддержки встроенных процессоров .
См. также [ править ]
Примечания [ править ]
- ^ Разработчики стандартной библиотеки C для порта GCC на микроконтроллер Atmel AVR, которая имеет отдельные адресные пространства для кода и данных, заявляют в книге «Данные в программном пространстве» , что отдельные адресные пространства подразумевают гарвардскую архитектуру. Далее они объясняют, что язык C имеет только одно адресное пространство указателя и поэтому не был разработан для машин с гарвардской архитектурой. Затем они описывают нестандартные расширения, принятые GCC для AVR и библиотеки C AVR, чтобы обеспечить доступ к данным, хранящимся в памяти инструкций (программ). Они даже объясняют, почему ключевое слово const не может быть задействовано для различения объектов данных, которые должны быть помещены в память инструкций.
Ссылки [ править ]
- ^ Руководство по эксплуатации калькулятора с автоматическим управлением последовательностью . ОКСФОРДСКИЙ УНИВЕРСИТЕТ ПРЕСС. п. 4.
- ^ «AVR109: Самопрограммирование» (PDF) (Примечания по применению). Атмел. Июнь 2004 года . Проверено 29 января 2015 г.
- ^ «Руководство пользователя семейства MAXQ» . Максим Интегрированный . Сентябрь 2008 г. Разделы 1.2 «Гарвардская архитектура памяти» и 2.5 «Доступ к памяти псевдофон Неймана».
- ^ Конарк Гоэль и др. О порте MAXQ GCC .