Харвардска архитектура

от Уикипедия, свободната енциклопедия
Харвардска архитектура

Харвардската архитектура е компютърна архитектура с отделно съхранение и сигнални пътища за инструкциите и данните. Тя контрастира с архитектурата на фон Нойман, където програмните инструкции и данните споделят една и съща памет и пътища.

Терминът произлиза от реле-базирания компютър Mark I, който съхранява инструкции на перфолента (широка 24 бита) и данни в електро-механични броячи (въпреки че както произходът, така и значението, което обикновено се дава на термина „Харвардска архитектура“, се оспорва в „Митът за Харвардската архитектура“, публикуван от IEEE Annals of the History of Computing [1]). Хранилището за данни на тези ранни машини е вътрешна част от централния процесор. Те не предоставят достъп до инструкциите като данни. Такъв тип процесор не може да се инициализира сам. Нужен е оператор, който ръчно да зареди програмата.

Съвременните процесори се представят за потребителя като системи с архитектура на фон Нойман, като програмният код се съхранява в същата основна памет като данните. С цел по-висока производителност, вътрешно и до голяма степен невидимо за потребителя, повечето процесори имат отделни кешове за инструкциите и данните, с отделни пътища към процесора за всеки. Това е една от формите на така наречената модифицирана Харвардска архитектура.

Архитектурата на Харвард исторически и традиционно е разделена на две адресни пространства, но наличието на три, т.е. две допълнителни (и всички достъпни във всеки цикъл) също се случва,[2] макар и рядко.

Подробности за паметта[редактиране | редактиране на кода]

В Харвардската архитектура няма нужда паметта за инструкции и паметта за данни да споделят характеристики. По-специално, ширината на думата, скоростта, имплементационната технология и структурата на адреса на паметта могат да се различават. В някои системи инструкциите за предварително програмирани задачи могат да се съхраняват в ROM паметта, докато паметта за данни обикновено изисква възможност за четене и запис. В някои системи има много повече памет за инструкции, отколкото памет за данни, така че адресите на инструкциите са по-широки от адресите на данните.

Разлики с фон Ноймановата архитектура[редактиране | редактиране на кода]

В система с чиста фон Нойманова архитектура инструкциите и данните се съхраняват в една и съща памет, така че инструкциите се извличат по същите пътища както данните. Това означава, че процесорът не може едновременно да чете инструкция и да чете или записва данни. В компютър с Харвардска архитектурата, процесорът може едновременно да прочете инструкция и да извърши достъп до паметта за данни,[3] дори без кеш. Това посзволява постигането на по-висока скорост при една и съща сложност на схемата.

Освен това машина с архитектура на Харвард има различни адресни пространства за код и данни: нулев адрес за инструкция не е същият като нулев адрес за данни. Нулевият адрес за инструкция може да идентифицира двадесет и четири-битова стойност, докато нулевият адрес за данни може да указва осем-битов байт, който не е част от тази двадесет и четири-битова стойност.

Разлики с модифицираната Харвардска архитектура[редактиране | редактиране на кода]

Модифицираната Харвардска архитектура много прилича на оригиналната Харвардска архитектура, но с не толкова стриктно разделение между инструкции и данни, като същевременно позволява на процесора да осъществява едновременно достъп до две (или повече) шини на паметта. Най-често срещаната модификация включва отделни кешове за инструкции и данни, поддържани от общо адресно пространство. Докато инструкциите се изпълнява от кеша, процесора действа като чиста Харвардска машина. Когато осъществява достъп до резервната памет, той действа като машина на фон Нойман. Тази модификация е широко разпространена в съвременните процесори, като архитектурата ARM, Power ISA и процесорите x86. Понякога се нарича просто Харвардска архитектура, като се пренебрегва фактът, че тя всъщност е „модифицирана“.

Друга модификация осигурява връзка между паметта за инструкции (като ROM или флашпамет) и процесора, за да позволи думите от паметта за инструкции да се третират като данни само четене. Тази техника се използва в някои микроконтролери, включително Atmel AVR. Това позволява достъп до константи, като например текстови низове или функционални таблици, без първо да се налага да бъдат копирани в RAM паметта.

Скорост[редактиране | редактиране на кода]

През последните години скоростта на процесорите нарасна многократно в сравнение със скоростта на достъп на основната памет. За да се осигури добра производителност, достъпа до паметта трябва е ограничен. Например, ако всяка инструкция, изпълнявана в процесора, изисква достъп до паметта, компютърът не печели нищо от повишена скорост на процесора – скоростта е ограничена от скоростта на паметта.

Възможно е да се направи изключително бърза памет, но това е практично само за малки количества памет поради висока цена, висок разход на енергия и необходимостта от допълнителни сигнали. Решението е да се осигури малко количество много бърза памет, известна като CPU кеш, която съхранява наскоро достъпвани данни. Докато данните, от които процесорът се нуждае, са в кеша, производителността е много по-висока, отколкото когато процесорът трябва да получи данните от основната памет.

Вътрешен и външен дизайн[редактиране | редактиране на кода]

Модерните високопроизводителни дизайни на CPU чипове включват аспекти както на Харвардската архитектура, така и на фон Ноймановата. По-специално, версията „разделен кеш“ на модифицираната Харвардска архитектура е много разпространена. Кеш паметта на процесора е разделена на кеш за инструкции и кеш за данни. Харвардската архитектура се използва когато процесорът има достъп до кеша. В случай на пропуск в кеша обаче данните се извличат от основната памет, която не е формално разделена на отделни секции с инструкции и данни, въпреки че може да има отделни контролери на паметта, използвани за едновременен достъп до RAM, ROM и (NOR) флаш памет.

По този начин, въпреки че процесорът изглежда като фон Нойманова архитектура, хардуерната реализация получава ефективността на Харвардската архитектурата за достъп до кеша и поне някои от достъпите до основната памет.

В допълнение, процесорите често имат буфери за запис, които им позволяват да продължат след запис в некеширани региони. За да се запази модела на фон Нойман са нужни допълнителни синхронизации при записване на буфера.

Съвременни употреби на Харвардската архитектурата[редактиране | редактиране на кода]

Модифицираната Харвардска архитектура с модерни CPU кеш системи доближава по скорост „чистия" вариант. Машините с относително чиста Харвардска архитектура се използват най-вече в приложения, където ползите, като по-ниската цена и намаленото използване на енергия, надвишават трудностите за програмиране предизвикани от включването на различни адресни пространства за код и данни.

  • Цифровите сигнални процесори (DSP) обикновено изпълняват малки, силно оптимизирани алгоритми за аудио или видео обработка. Те избягват кешовете, защото поведението им трябва да бъде изключително възпроизводимо. Трудностите при справянето с множество адресни пространства са от второстепенно значение за скоростта на изпълнение. Следователно, някои DSP разполагат с множество памети за данни в отделни адресни пространства, за да улеснят обработката на SIMD и VLIW. Процесорите TMS320 C55x на Texas Instruments, например, разполагат с множество паралелни шини за данни (две за запис, три за четене) и една шина за инструкции.
  • Микроконтролерите се характеризират с малки количества програмна (флашпамет) и памет за данни (SRAM) и се възползват от предимствата на Харвардската архитектура, за да ускорят обработката чрез едновременни инструкции и достъп до данни. Отделното съхранение означава, че паметта за програми и данни може да включва различни битови ширини, например използване на 16-битови инструкции и 8-битови данни. Те също така означават, че предварителното извличане на инструкции може да се извършва успоредно с други дейности. Примерите включват PIC от Microchip Technology, Inc. и AVR от Atmel Corp (сега част от Microchip Technology).

Дори в тези случаи е обичайно да се използват специални инструкции за достъп до програмната памет, сякаш са данни за таблици само за четене или за препрограмиране; тези процесори са процесори с модифицирана Харвардска архитектура.

Източници[редактиране | редактиране на кода]

  1. Pawson, Richard. The Myth of the Harvard Architecture // IEEE Annals of the History of Computing 44 (3). 30 September 2022. DOI:10.1109/MAHC.2022.3175612. с. 59 – 69.
  2. Kalimba DSP: User guide // Посетен на 2022-09-23. this is a three-bank Harvard architecture.
  3. "386 vs. 030: the Crowded Fast Lane". Dr. Dobb's Journal, January 1988.

Външни препратки[редактиране | редактиране на кода]

  Тази страница частично или изцяло представлява превод на страницата Harvard architecture в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​