Микроархитектура | описание на електрическите схеми на компютър

В компютърната техника микроархитектурата (понякога съкратено µarch или uarch) е описание на електрическата схема на компютър, централен процесор или цифров сигнален процесор, което е достатъчно за пълно описание на работата на хардуера.

Учените използват термина "компютърна организация", докато хората от компютърната индустрия по-често казват "микроархитектура". Микроархитектурата и архитектурата на набора от инструкции (ISA) заедно представляват областта на компютърната архитектура.




 

Произход на термина

От 50-те години на миналия век в компютрите се използва микропрограмиране на логиката на управление. Централният процесор декодира инструкциите и изпраща сигнали по съответните пътища с помощта на транзисторни превключватели. Битовете вътре в микропрограмните думи управляват процесора на ниво електрически сигнали.

Терминът: микроархитектура се използва за описание на единиците, които се контролират от думите на микропрограмата, за разлика от термина: "архитектура", която беше видима и документирана за програмистите. Докато архитектурата обикновено трябваше да бъде съвместима между поколенията хардуер, основната микроархитектура можеше лесно да се променя.


 

Връзка с архитектурата на набора от инструкции

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

Микроархитектурните елементи могат да бъдат всякакви - от единични логически гейтове, през регистри, таблици за търсене, мултиплексори, броячи и т.н., до цялостни ALU, FPU и дори по-големи елементи. Нивото на електронните схеми може, от своя страна, да бъде разделено на детайли на ниво транзистор, като например кои основни структури за изграждане на гейтове се използват и какви типове логическа реализация (статична/динамична, брой фази и т.н.) се избират, в допълнение към действителния логически дизайн, използван за изграждането им.

Няколко важни момента:

  • Една-единствена микроархитектура, особено ако включва микрокод, може да се използва за реализиране на много различни набори от инструкции чрез промяна на хранилището за управление. Това обаче може да бъде доста сложно, дори когато е опростено чрез микрокод и/или таблични структури в ROM или PLA.
  • Две машини могат да имат една и съща микроархитектура и следователно една и съща блокова схема, но напълно различни хардуерни реализации. Това управлява както нивото на електронната схема, така и още повече физическото ниво на производство (както на интегрални схеми, така и на дискретни компоненти).
  • Машини с различни микроархитектури могат да имат една и съща архитектура на набора от инструкции и така и двете могат да изпълняват едни и същи програми. Новите микроархитектури и/или схемни решения, заедно с напредъка в производството на полупроводници, позволяват на по-новите поколения процесори да постигат по-висока производителност.

Опростени описания

Едно много опростено описание на високо ниво - често срещано в маркетинга - може да показва само доста основни характеристики, като например ширината на шината, заедно с различни видове единици за изпълнение и други големи системи, като например предсказване на разклонения и кеш-памети, изобразени като прости блокове - може би с отбелязани някои важни атрибути или характеристики. Понякога могат да бъдат включени и някои подробности относно структурата на конвейера (като извличане, декодиране, присвояване, изпълнение, запис и връщане).


 

Аспекти на микроархитектурата

Конвейерната пътека за данни е най-често използваният дизайн на пътека за данни в микроархитектурата днес. Тази техника се използва в повечето съвременни микропроцесори, микроконтролери и DSP. Архитектурата с конвейерна структура позволява на няколко инструкции да се застъпват при изпълнение, подобно на асемблерната линия. Конвейерът включва няколко различни етапа, които са от основно значение при проектирането на микроархитектури. Някои от тези етапи включват извличане на инструкциите, декодиране на инструкциите, изпълнение и връщане на запис. Някои архитектури включват и други етапи, например достъп до паметта. Проектирането на конвейери е една от основните задачи на микроархитектурата.

Изпълнителните единици също са от съществено значение за микроархитектурата. Изпълнителните единици включват аритметични логически единици (ALU), единици с плаваща запетая (FPU), единици за зареждане/запаметяване и предсказване на разклонения. Тези единици изпълняват операциите или изчисленията на процесора. Изборът на броя на единиците за изпълнение, тяхната латентност и пропускателна способност са важни задачи при проектирането на микроархитектурата. Размерът, латентността, пропускателната способност и свързаността на паметта в системата също са микроархитектурни решения.

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

За разлика от архитектурното проектиране, при което основната цел е постигането на определено ниво на производителност, при микроархитектурното проектиране се обръща по-голямо внимание на други ограничения. Трябва да се обърне внимание на такива въпроси като:

  • Площ на чипа/разходи.
  • Консумация на енергия.
  • Логическа сложност.
  • Лесно свързване.
  • Възможност за производство.
  • Лесно отстраняване на грешки.
  • Възможност за изпитване.

 

Концепции за микроархитектура

По принцип всички процесори, едночипови микропроцесори или многочипови реализации, изпълняват програми, като извършват следните стъпки:

  1. Прочетете инструкция и я декодирайте.
  2. Намерете всички свързани данни, които са необходими за обработката на инструкцията.
  3. Обработете инструкцията.
  4. Запишете резултатите.

Тази проста на пръв поглед поредица от стъпки се усложнява от факта, че йерархията на паметта, която включва кеширане, основна памет и енергонезависима памет, като например твърдите дискове (където се намират инструкциите на програмата и данните), винаги е била по-бавна от самия процесор. Стъпка (2) често води до забавяне (в термините на процесора често се нарича "застой"), докато данните пристигнат по компютърната шина. Голяма част от изследванията са насочени към проекти, които избягват тези забавяния, доколкото е възможно. През годините основната цел на проектирането беше да се изпълняват повече инструкции паралелно, като по този начин се увеличава ефективната скорост на изпълнение на програмата. Тези усилия доведоха до въвеждането на сложни логически структури и схеми. В миналото такива техники можеха да се прилагат само на скъпи мейнфреймове или суперкомпютри поради количеството схеми, необходими за тези техники. С напредването на производството на полупроводници все повече и повече от тези техники можеха да се прилагат в един полупроводников чип.

Следва преглед на микроархитектурните техники, които се използват в съвременните процесори.

Избор на набор от инструкции

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

Проектирането на набори от инструкции е преминало от CISC, RISC, VLIW, EPIC типове. Архитектурите, които се занимават с паралелизъм на данните, включват SIMD и вектори.

Конвейерна обработка на инструкциите

Една от първите и най-мощни техники за подобряване на производителността е използването на конвейера за инструкции. Ранните проекти на процесори изпълняваха всички горепосочени стъпки за една инструкция, преди да преминат към следващата. Голяма част от процесорните схеми са оставали бездействащи на всяка една стъпка; например схемата за декодиране на инструкциите е била бездействаща по време на изпълнението и т.н.

Конвейерите подобряват производителността, като позволяват на определен брой инструкции да преминат през процесора едновременно. В същия основен пример процесорът ще започне да декодира (стъпка 1) нова инструкция, докато последната изчаква резултати. Това би позволило до четири инструкции да бъдат "в полет" по едно и също време, което прави процесора четири пъти по-бърз. Въпреки че изпълнението на всяка една инструкция отнема също толкова време (все още има четири стъпки), процесорът като цяло "пенсионира" инструкциите много по-бързо и може да работи с много по-висока тактова честота.

Кеш

Усъвършенстването на производството на чипове позволи поставянето на повече схеми на един и същ чип и конструкторите започнаха да търсят начини за използването им. Един от най-разпространените начини беше да се добави все по-голямо количество кеш памет в чипа. Кеш паметта е много бърза памет, памет, до която може да се получи достъп за няколко цикъла в сравнение с това, което е необходимо за връзка с основната памет. Процесорът включва контролер на кеша, който автоматизира четенето и писането от кеша; ако данните вече са в кеша, те просто се "появяват", а ако не са, процесорът се "спира", докато контролерът на кеша ги прочете.

Проектите на RISC започват да добавят кеш памет в средата и края на 80-те години на миналия век, като често тя е само 4 KB. С течение на времето този брой нарасна и сега типичните процесори имат около 512 KB, а по-мощните процесори се предлагат с 1 или 2, или дори 4, 6, 8 или 12 MB, организирани на няколко нива на йерархията на паметта. Най-общо казано, повече кеш означава по-голяма скорост.

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

Предвиждане на разклонения и спекулативно изпълнение

Спирането на конвейера и промиването на данни поради разклонения са двете основни неща, които пречат на постигането на по-висока производителност чрез паралелизъм на ниво инструкции. От момента, в който декодерът на инструкциите на процесора установи, че е срещнал инструкция за условно разклонение, до момента, в който може да бъде прочетена стойността на регистъра за решаване на скока, конвейерът може да бъде спрян за няколко цикъла. Средно всяка пета изпълнена инструкция е разклонение, така че това е голямо количество престой. Ако разклонението е взето, това е още по-лошо, тъй като тогава всички следващи инструкции, които са били в конвейера, трябва да бъдат промити.

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

Изпълнение извън реда

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

Свръхскаларен

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

В горната схема процесорът обработва части от една инструкция в даден момент. Компютърните програми биха могли да се изпълняват по-бързо, ако се обработват няколко инструкции едновременно. Това се постига със суперскаларни процесори чрез репликиране на функционални единици като ALU. Репликирането на функционални единици стана възможно едва когато площта на интегралната схема (понякога наричана "матрица") на един процесор вече не надхвърляше границите на това, което можеше да бъде надеждно произведено. В края на 80-те години на миналия век на пазара започнаха да се появяват суперскаларни проекти.

В съвременните проекти често се срещат две единици за зареждане, една за съхраняване (много инструкции нямат резултати за съхраняване), две или повече целочислени математически единици, две или повече единици с плаваща запетая и често някаква SIMD единица. Логиката за издаване на инструкциите се усложнява чрез четене на огромен списък от инструкции от паметта и предаването им на различните изпълнителни единици, които са в покой в този момент. След това резултатите се събират и пренареждат накрая.

Преименуване на регистъра

Преименуването на регистрите се отнася до техника, използвана за избягване на ненужно сериализирано изпълнение на програмни инструкции поради повторното използване на едни и същи регистри от тези инструкции. Да предположим, че имаме групи инструкции, които ще използват един и същ регистър, едната група инструкции се изпълнява първа, за да остави регистъра на другата група, но ако другата група е присвоена на друг подобен регистър, и двете групи инструкции могат да се изпълняват паралелно.

Многопроцесорност и многонишковост

Поради нарастващата разлика между работните честоти на процесора и времето за достъп до DRAM, нито една от техниките, които подобряват паралелизма на ниво инструкции (ILP) в рамките на една програма, не може да преодолее дългите прекъсвания (забавяния), които възникват, когато трябва да се изтеглят данни от основната памет. Освен това големият брой транзистори и високите работни честоти, необходими за по-усъвършенстваните техники за ILP, изискват нива на разсейване на енергия, които вече не могат да бъдат евтино охлаждани. Поради тези причини по-новите поколения компютри започнаха да използват по-високи нива на паралелизъм, които съществуват извън рамките на една програма или програмна нишка.

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

Един от начините за постигане на този паралелизъм е чрез мултипроцесорни системи - компютърни системи с множество процесори. В миналото това беше запазено за високотехнологичните мейнфреймове, но сега малките (2-8) многопроцесорни сървъри станаха обичайни за пазара на малкия бизнес. За големите корпорации са разпространени мащабни (16-256) многопроцесорни сървъри. От 90-те години на миналия век се появяват дори персонални компютри с множество процесори.

Напредъкът в полупроводниковата технология намали размера на транзисторите; появиха се многоядрени процесори, при които няколко процесора са реализирани на един и същ силициев чип. Първоначално се използваха в чипове, предназначени за вградени пазари, където по-простите и по-малки процесори позволяваха на едно парче силиций да се поберат множество версии. До 2005 г. полупроводниковата технология позволи да се произвеждат серийно двойни CMP чипове за настолни компютри от висок клас. Някои проекти, като UltraSPARC T1, използваха по-прости (скаларни, в ред) проекти, за да се поберат повече процесори на едно парче силиций.

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

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

Допълнително подобрение е едновременната многонишковост. Тази техника позволява на суперскаларните процесори да изпълняват инструкции от различни програми/нишки едновременно в един и същи цикъл.


 

Свързани страници

 

Въпроси и отговори

В: Какво е микроархитектура?


О: Микроархитектурата е описание на електрическите схеми на компютър, централен процесор или цифров сигнален процесор, което е достатъчно за пълно описание на работата на хардуера.

В: Как учените се отнасят към това понятие?


О.: Когато говорят за микроархитектура, учените използват термина "компютърна организация".

В: Как хората от компютърната индустрия се отнасят към това понятие?


О: Хората от компютърната индустрия по-често казват "микроархитектура", когато говорят за това понятие.

В: Кои две области съставляват компютърната архитектура?


О: Микроархитектурата и архитектурата на набора от инструкции (ISA) заедно съставляват областта на компютърната архитектура.

В: Какво означава ISA?


О: ISA е съкращение от Instruction Set Architecture (архитектура на набора от инструкции).

В: Какво означава µarch? О: µArch е съкращение за микроархитектура.

AlegsaOnline.com - 2020 / 2023 - License CC3