stringtranslate.com

Модифицированная архитектура Гарварда

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

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

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

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

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

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

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

Модифицированная архитектура Гарварда

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

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

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

Архитектура «инструкция-память-как-данные»

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

Архитектура «данные-память-как-инструкция»

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

Сравнения

Для отличия модифицированных гарвардских машин от чистых гарвардских и фон-неймановских машин можно использовать три характеристики:

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

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

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

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

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

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

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

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

Существуют также процессоры, которые являются машинами Гарварда по самому строгому определению (программная память и память данных занимают разные адресные пространства) и модифицируются только в слабом смысле, что существуют операции чтения и/или записи программной памяти как данных. Например, инструкции LPM (Load Program Memory) и SPM (Store Program Memory) в Atmel AVR реализуют такую ​​модификацию. Аналогичные решения встречаются в других микроконтроллерах, таких как PIC и Z8Encore!, во многих семействах цифровых сигнальных процессоров, таких как ядра TI C55x и других. Поскольку выполнение инструкций по-прежнему ограничено адресным пространством программы, эти процессоры очень непохожи на машины фон Неймана. Внешняя проводка также может преобразовать ядро ​​ЦП строго гарвардского типа в модифицированное гарвардское ядро, например, просто объединив сигналы `PSEN#` (чтение пространства программы) и `RD#` (чтение внешнего пространства данных) внешне через логический элемент И на микроконтроллере семейства Intel 8051 ; говорят, что микроконтроллер «фон-неймановски связан», поскольку внешние адресные пространства данных и программы становятся едиными.

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

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

Примечания

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

Ссылки

  1. Руководство по эксплуатации автоматического последовательного управляемого калькулятора. OXFORD UNIVERSITY PRESS. 1946. стр. 4.
  2. ^ "AVR109: Самопрограммирование" (PDF) (Примечание к применению). Atmel. Июнь 2004 г. Получено 29 января 2015 г.
  3. ^ "Руководство пользователя семейства MAXQ". Maxim Integrated . Сентябрь 2008 г. Разделы 1.2 "Архитектура памяти Гарварда" и 2.5 "Доступ к псевдофон-неймановской памяти".
  4. ^ Конарк Гоэль и др. О порте MAXQ GCC.