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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
(примітивний вступ)
Рядок 9: Рядок 9:
 
== Архітектура фон Неймана ==
 
== Архітектура фон Неймана ==
 
{{головна стаття|Архітектура фон Неймана}}
 
{{головна стаття|Архітектура фон Неймана}}
  +
  +
Комп'ютер з архітектурою фон Неймана має перевагу над «чистим» гарвардським через легкість роботи з кодом програми як даними (як і навпаки — роботи з даними як кодом). Наприклад, читання програми з носія інформації до [[оперативна пам'ять|пам'яті]] в принципі нічим не відрізняється від читання даних. Також легко здійснені такі прийомии, як [[JIT-компіляція]] чи код, що модифікує сам себе. З недоліків можна відзначити проблеми з захистом ділянок пам'яті для програми (недозволений запис у пам'ять програм може використовуватися [[malware|шкідливими програмами]]) і складності з відлагоджуванням програми, код якої динамічно змінюється.
   
 
== Гарвардська архітектура ==
 
== Гарвардська архітектура ==

Версія за 19:49, 16 січня 2018

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

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

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

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

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

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

Застосування двох системних шин для звернення до пам'яті програм і пам'яті даних в Гарвадській архітектурі має два недоліки — високу вартість і велику кількість зовнішніх виводів мікропроцесора. При використанні двох шин для передачі команд і даних, мікропроцесор повинен мати майже вдвічі більше виводів, оскільки шина адреси і шина даних складають їх основну частину. Для зменшення кількості виводів процесора фірми-виробники мікросхем об'єднали шини даних і шини адреси для зовнішньої пам'яті даних і програм, залишивши тільки різні сигнали управління (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, що лише нещодавно став стандартом.

Див. також