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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[неперевірена версія][неперевірена версія]
(трохи переклав)
(перші чотири абзаци дослівно повторюють такі зі статті "Гарвардська архітектура")
Рядок 3: Рядок 3:
 
{{Вступ|дата=грудень 2015}}
 
{{Вступ|дата=грудень 2015}}
 
{{Wikify|дата=грудень 2015}}
 
{{Wikify|дата=грудень 2015}}
'''Га́рвардська архітекту́ра''' ({{lang-en|Harvard architecture}}) — [[архітектура обчислювальної машини|архітектура]] [[електронна обчислювальна машина|обчислювальних машин]], головною відмінністю якої від інших подібних архітектур (див. напр. [[Архітектура фон Неймана]]) є те, що дані та [[машинна команда|оператори]] (алгоритм) зберігаються окремо. Першим [[Комп'ютер|комп'ютером]], який застосовував гарвардську архітектуру, був [[Марк I (обчислювальна машина)|Mark I]], який експлуатувався в [[Гарвард]]і (звідки назва архітектури) та зберігав команди окремо на перфокартах, а дані в релейному запам'ятовуючому пристрої.
 
   
  +
{{пишу}}
Така структура має одну важливу перевагу над [[архітектура фон Неймана|фон-нейманівською архітектурою]]: дані можна завантажувати для обробки з [[запам'ятовувальний пристрій|запам'ятовувального пристрою]] одночасно з командами. В [[Архітектура фон Неймана|фон-нейманівській архітектурі]] для зв'язку операційного та керувального пристроїв (які разом складають [[центральний процесор]]), використовується одна [[Комп'ютерна шина|шина]], тому необхідно спочатку завантажити в процесор команду, а вже потім, звернувшись по тій же шині за адресою, яка вказана в команді — завантажити дані. Наявність в гарвардській архітектурі двох незалежних підсистем пам'яті з окремими шинами дозволяє вести процес завантаження команд і даних практично паралельно.
 
 
Головним недоліком гарвардської архітектури є порівняна з [[Архітектура фон Неймана|фон-нейманівською]] складність реалізації. Адже для кожного з [[Комп'ютерна пам'ять|запам'ятовуючих пристроїв]] необхідний свій контролер і своя [[Комп'ютерна шина|шина]], що зі збільшенням [[розрядність|розрядності]] призводить до зростання кількості з'єднань у системі, і це негативно впливає як на складність проектування, так і на швидкодію.
 
 
Гарвардська архітектура широко застосовується в спеціалізованих обчислювачах, зокрема в [[мікроконтролер]]ах та [[Процесор цифрових сигналів|цифрових сигнальних процесорах]], де необхідний високоінтенсивний обмін даними. Також за гарвардською архітектурою зазвичай організується кеш-пам'ять в ЕОМ загального призначення, яка розділяється окремо на кеш-пам'ять команд та кеш-пам'ять даних (але, точніше, це стосується внутрішньої організації процесора, а не [[архітектура ЕОМ|архітектури ЕОМ]])
 
   
 
У Гарвардській архітектурі характеристики пристроїв пам'яті програм і пам'яті даних не завжди виконуються однаковими. У пам'яті даних і команд можуть відрізнятися розрядність [[Шина даних|шини даних]] і розподіл [[Адреса (інформатика)|адрес пам'яті]]. Часто адресні простори пам'яті програм і пам'яті даних виконують різними. Це призводить до відмінності розрядності шини адреси для цих видів пам'яті. У [[Мікроконтролер|мікроконтролерах]] пам'ять програм зазвичай реалізується у вигляді [[Постійний запам'ятовувач|постійної пам'яті]], а пам'ять даних — у вигляді [[Пам'ять з довільним доступом|оперативної пам'яті]]. У [[Процесор цифрових сигналів|сигнальних процесорах]] пам'ять програм змушені виконувати у вигляді [[Пам'ять з довільним доступом|ОЗП]]. Це пов'язано з більш високою швидкодією оперативного запам'ятовуючого пристрою, однак при цьому в процесі роботи здійснюється захист від запису в цю область пам'яті.
 
У Гарвардській архітектурі характеристики пристроїв пам'яті програм і пам'яті даних не завжди виконуються однаковими. У пам'яті даних і команд можуть відрізнятися розрядність [[Шина даних|шини даних]] і розподіл [[Адреса (інформатика)|адрес пам'яті]]. Часто адресні простори пам'яті програм і пам'яті даних виконують різними. Це призводить до відмінності розрядності шини адреси для цих видів пам'яті. У [[Мікроконтролер|мікроконтролерах]] пам'ять програм зазвичай реалізується у вигляді [[Постійний запам'ятовувач|постійної пам'яті]], а пам'ять даних — у вигляді [[Пам'ять з довільним доступом|оперативної пам'яті]]. У [[Процесор цифрових сигналів|сигнальних процесорах]] пам'ять програм змушені виконувати у вигляді [[Пам'ять з довільним доступом|ОЗП]]. Це пов'язано з більш високою швидкодією оперативного запам'ятовуючого пристрою, однак при цьому в процесі роботи здійснюється захист від запису в цю область пам'яті.

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

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

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

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

Див. також