Модифікована Гарвардська архітектура: відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Рядок 15: Рядок 15:
{{головна стаття|Гарвардська архітектура}}
{{головна стаття|Гарвардська архітектура}}


Найперша обчислювальна машина, від якої пішла назва архітектури — [[Harvard Mark I]] — мала повністю розділені системи пам'яті для збереження програм і даних. [[Процесор]] здійснював вибірку інструкції і завантаження даних одночасно і незалежно одне від одного. Такий механізм є фундаментальною відмінністю в порівнянні з архітектурою фон Неймана, де інструкції і дані зберігаються в одній і тій самій пам'яті, і (за відсутності [[кеш]]а можуть бути завантажені лише послідовно.
У Гарвардській архітектурі характеристики пристроїв пам'яті програм і пам'яті даних не завжди виконуються однаковими. У пам'яті даних і команд можуть відрізнятися розрядність [[Шина даних|шини даних]] і розподіл [[Адреса (інформатика)|адрес пам'яті]]. Часто адресні простори пам'яті програм і пам'яті даних виконують різними. Це призводить до відмінності розрядності шини адреси для цих видів пам'яті. У [[Мікроконтролер|мікроконтролерах]] пам'ять програм зазвичай реалізується у вигляді [[Постійний запам'ятовувач|постійної пам'яті]], а пам'ять даних — у вигляді [[Пам'ять з довільним доступом|оперативної пам'яті]]. У [[Процесор цифрових сигналів|сигнальних процесорах]] пам'ять програм змушені виконувати у вигляді [[Пам'ять з довільним доступом|ОЗП]]. Це пов'язано з більш високою швидкодією оперативного запам'ятовуючого пристрою, однак при цьому в процесі роботи здійснюється захист від запису в цю область пам'яті.
У «чисто» гарвардській ЕОМ адресні простори програм і даних мають бути ''повністю'' розділені: адреса інструкції і адреса даних — це різні сутності, що ідентифікують, відповідно, команду процесора і байт чи слово даних у двох різних просторах пам'яті.
Через таку розділеність гарвардська архітектура уможливлює різну розрядність (і взагалі, різні характеристики) пам'яті програм і даних. Наприклад, спеціалізований процесор може мати 10-розрядну шину адреси (тобто, адресувати не більше ніж 1024 машинних слів), при цьому оперувати 128-розрядними даними.

== розділ ==

У [[Мікроконтролер|мікроконтролерах]] пам'ять програм зазвичай реалізується у вигляді [[Постійний запам'ятовувач|постійної пам'яті]], а пам'ять даних — у вигляді [[Пам'ять з довільним доступом|оперативної пам'яті]]. У [[Процесор цифрових сигналів|сигнальних процесорах]] пам'ять програм змушені виконувати у вигляді [[Пам'ять з довільним доступом|ОЗП]]. Це пов'язано з більш високою швидкодією оперативного запам'ятовуючого пристрою, однак при цьому в процесі роботи здійснюється захист від запису в цю область пам'яті.


Застосування двох системних [[Комп'ютерна шина|шин]] для звернення до пам'яті програм і пам'яті даних в Гарвадській архітектурі має два недоліки — високу вартість і велику кількість зовнішніх виводів [[Мікропроцесор|мікропроцесора]]. При використанні двох шин для передачі команд і даних, мікропроцесор повинен мати майже вдвічі більше виводів, оскільки шина адреси і шина даних складають їх основну частину. Для зменшення кількості виводів процесора фірми-виробники мікросхем об'єднали шини даних і шини адреси для зовнішньої пам'яті даних і програм, залишивши тільки різні сигнали управління (WR, RD, IRQ), а усередині мікропроцесора зберегли класичну гарвардську архітектуру. Таке рішення отримало назву модифікована Гарвардська архітектура.
Застосування двох системних [[Комп'ютерна шина|шин]] для звернення до пам'яті програм і пам'яті даних в Гарвадській архітектурі має два недоліки — високу вартість і велику кількість зовнішніх виводів [[Мікропроцесор|мікропроцесора]]. При використанні двох шин для передачі команд і даних, мікропроцесор повинен мати майже вдвічі більше виводів, оскільки шина адреси і шина даних складають їх основну частину. Для зменшення кількості виводів процесора фірми-виробники мікросхем об'єднали шини даних і шини адреси для зовнішньої пам'яті даних і програм, залишивши тільки різні сигнали управління (WR, RD, IRQ), а усередині мікропроцесора зберегли класичну гарвардську архітектуру. Таке рішення отримало назву модифікована Гарвардська архітектура.

Версія за 20:11, 16 січня 2018

Блок-схема гарвардської архітектури комп'ютера.

Модифікована Гарвардська архітектура — варіант Гарвардської архітектури ЕОМ, що дозволяє доступ до пам'яті інструкцій як до даних. Більшість сучасних комп'ютерів, у назві яких фігурує «Гарвардська архітектура», насправді реалізують таку модифікацію.

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

Комп'ютер з архітектурою фон Неймана має перевагу над «чистим» гарвардським через легкість роботи з кодом програми як даними (як і навпаки — роботи з даними як кодом). Наприклад, читання програми з носія інформації до пам'яті в принципі нічим не відрізняється від читання даних. Також легко здійснені такі прийомии, як JIT-компіляція чи код, що модифікує сам себе. З недоліків можна відзначити проблеми з захистом ділянок пам'яті для програми (недозволений запис у пам'ять програм може використовуватися шкідливими програмами) і складності з відлагоджуванням програми, код якої динамічно змінюється.

Гарвардська архітектура

Найперша обчислювальна машина, від якої пішла назва архітектури — Harvard Mark I — мала повністю розділені системи пам'яті для збереження програм і даних. Процесор здійснював вибірку інструкції і завантаження даних одночасно і незалежно одне від одного. Такий механізм є фундаментальною відмінністю в порівнянні з архітектурою фон Неймана, де інструкції і дані зберігаються в одній і тій самій пам'яті, і (за відсутності кеша можуть бути завантажені лише послідовно. У «чисто» гарвардській ЕОМ адресні простори програм і даних мають бути повністю розділені: адреса інструкції і адреса даних — це різні сутності, що ідентифікують, відповідно, команду процесора і байт чи слово даних у двох різних просторах пам'яті. Через таку розділеність гарвардська архітектура уможливлює різну розрядність (і взагалі, різні характеристики) пам'яті програм і даних. Наприклад, спеціалізований процесор може мати 10-розрядну шину адреси (тобто, адресувати не більше ніж 1024 машинних слів), при цьому оперувати 128-розрядними даними.

розділ

У мікроконтролерах пам'ять програм зазвичай реалізується у вигляді постійної пам'яті, а пам'ять даних — у вигляді оперативної пам'яті. У сигнальних процесорах пам'ять програм змушені виконувати у вигляді ОЗП. Це пов'язано з більш високою швидкодією оперативного запам'ятовуючого пристрою, однак при цьому в процесі роботи здійснюється захист від запису в цю область пам'яті.

Застосування двох системних шин для звернення до пам'яті програм і пам'яті даних в Гарвадській архітектурі має два недоліки — високу вартість і велику кількість зовнішніх виводів мікропроцесора. При використанні двох шин для передачі команд і даних, мікропроцесор повинен мати майже вдвічі більше виводів, оскільки шина адреси і шина даних складають їх основну частину. Для зменшення кількості виводів процесора фірми-виробники мікросхем об'єднали шини даних і шини адреси для зовнішньої пам'яті даних і програм, залишивши тільки різні сигнали управління (WR, RD, IRQ), а усередині мікропроцесора зберегли класичну гарвардську архітектуру. Таке рішення отримало назву модифікована Гарвардська архітектура.

Модифікована гарвардська структура застосовується в сучасних мікросхемах сигнальних процесорів. Ще далі по шляху зменшення вартості кристала за рахунок зменшення площі, займаної системна шина пішли виробники однокристальних ЕОМ — мікроконтролерів. У цих мікросхемах застосовується одна системна шина для передачі команд і даних (модифікована Гарвардська архітектура) і всередині кристала.

У сигнальних процесорах для реалізації таких алгоритмів є швидке перетворення Фур'є і цифрова фільтрація; часто потрібна ще більша кількість внутрішніх шин. Зазвичай застосовуються дві шини для читання даних, одна шина для запису даних і одна шина для читання інструкцій. Подібна структура мікропроцесора отримала назву розширеної гарвардської архітектури. Цей підхід практикують виробники сигнальних процесорів — фірми Analog Devices (сімейства сигнальних процесорів BlackFin і Tiger Shark), Texas Instruments (сімейства сигнальних процесорів C5000™ і C6000™), Freescale (сімейства сигнальних процесорів MSC8251 і DSP56K).

Сучасне застосування модифікованої Гарвардської архітектури

Кеш-пам'ять сучасних процесорів, зокрема кеш першого рівня, зазвичай розділена на окремі частини для команд і для даних.

Існують також процесори, що можуть вважатися гарвардськими у найбільш строгому сенсі (програма і дані знаходяться у різних адресних просторах), «модифіковані» лише з метою можливості запису програми у пам'ять як послідовності байтів (даних). Для прикладу, інструкції LPM (Load Program Memory) і SPM (Store Program Memory) у контролерах Atmel AVR реалізують таку модифікацію. Схожі рішення застосовані і в інших мікропроцесорах, таких як PIC і Z8 Encore!, і у багатьох цифрових сигнальних процесорах (наприклад, TMS320 від Texas Instruments). Через те, що виконання програми строго лімітоване окремим адресним простором, такі процесори дуже несхожі на традиційні фон-Нойманівські.

Розділені адресні простори створюють певні незручності при програмуванні на мовах високого рівня. Не всі компілятори підтримують модель, де дані лише для читання розташовуються в абсолютно іншому адресному просторі (і, як наслідок, вимагають особливих інструкцій для читання), в порівнянні з даними на читання і на запис. Компілятори з мови C, що підтримують розділені адресні простори, роблять це або за допомогою нестандартних розширень, або через механізми Embedded C, що лише нещодавно став стандартом.

Див. також