За да разберете напълно как работи компютърът, трябва да знаете видове компютърни архитектури които съществуват. Сравнително непозната, но завладяваща тема. В тази статия ще се потопим дълбоко в нея, за да можете да научите всички подробности.
Какво е компютър?

Преди да започнем да разгадаваме тънкостите на архитектурите, първо е важно да знаем какво е компютър. По дефиниция, компютърът е основно система, съставена от:
- Централен процесор (CPU): Известен още като микропроцесор, централният процесор (CPU) е сърцето на системата. Неговата функция е да изпълнява инструкциите в ISA (архитектура на набора от инструкции) и да обработва данните, използвани от софтуера за изпълнение на задачи, включително стартиране на програми и управление на операционната система.
- Автобус: Шината се отнася до компонентите, които свързват различни части на компютъра. Тя включва варианти като шина за данни, адресна шина и управляваща шина, всяка от които има специфична роля в предаването и координирането на информация в системата.
- Основна памет: Това обикновено е RAM памет, където временно се съхраняват програмите, които ще се изпълняват. Тя съдържа данните и инструкциите, необходими за процесите, и които процесорът ще изисква при необходимост.
- Вход и изход (I/O): Компютрите се нуждаят от начин за получаване и изпращане на информация. Входните и изходните портове са от съществено значение за тази цел. Те осигуряват средствата за взаимодействие със системата, позволявайки комуникация с потребителя.
Вижте също части на процесора и тяхната функция
Какво е компютърна архитектура?

на компютърни архитектури Макроархитектурата (macroarchitecture) е основно логическата организация на хардуерните компоненти в компютрите. Това обхваща набор от концепции, които определят как са детайлизирани характеристиките на хардуера на компютъра и как те взаимодействат помежду си. Известна е още като архитектура на процесора или дизайн на компютърна система. Конфигурацията на компютъра, в архитектурен план, определя неговата производителност, поведение и ограничения.
Понятието за архитектура приема различни значения в зависимост от областта, в която се прилага. В контекста на компютърните системи, то обикновено се отнася до основна логика в изчислително устройство. Тази логика обхваща основите, които ръководят конструирането на процесори или чипове, както и техните модули и режими на работа. В тази статия ще отговорим на вашите въпроси относно структурата на компютърните системи, като разгледаме тяхното определение, примери, предимства и ограничения, наред с други аспекти.
Компютърната архитектура е от решаващо значение, защото тя установява как ще работи компютър и за какви цели може да се използва. Той определя аспекти като производителност, консумация на енергия, размер и свързаната с това цена на машината.
Структурата може да бъде съставена от комбинация от хардуер и софтуер, или да бъде съставена изключително от един от тези елементи. Хардуерната структура се отнася до въплъщението на основната логика в компютъра, докато софтуерната структура се отнася до въплъщението на функционалностите на компютъра. Важно е обаче да се подчертае, че софтуерната структура зависи до голяма степен от хардуерната структура.
Трябва да се отбележи, че термините компютърна архитектура и Софтуерна архитектура Те не са взаимозаменяеми и имат коренно различни значения. Докато структурата на компютърните системи се отнася до логиката, която управлява физическото устройство, структурата на софтуера се отнася до логиката, която ръководи функционалността на устройството.
Накратко, въз основа на структурата на компютърните системи се повдига следното: проектиране и строителство на тези машини. Следователно е изключително важно да се прави разлика между различните компоненти, които го съставят, както и видовете налични структури, тъй като тези фактори ще определят получения тип компютър, неговите възможности и функционалност, наред с други аспекти.
Какво е ISA?
Es Често срещано е да се бърка архитектурата с ISA и микроархитектурата.Често разликата не е напълно ясна. Затова ще разгледаме и какви са тези други понятия и как можем да ги разграничим. И, което е по-важно, как са свързани.
а ISA (Архитектура на набор от инструкции) Това е подробно описание на набора от инструкции които дадена компютърна архитектура може да изпълни. С други думи, това е наборът от основни инструкции, които процесорът може да разбере и изпълни. Той определя как програмите и инструкциите комуникират с централния процесор (CPU) и как операциите се извършват на най-ниското ниво на архитектурата.
ISA определя операциите, които процесорът може да изпълнява, видове данни, които може да обработва, режими на адресиране за достъп до паметта и регистрите и как се изпълняват инструкциите. Накратко, това е интерфейсът между софтуера и хардуера на компютърната система.
там различни ISA в зависимост от архитектурата на процесора, като например RISC-V, x86 (използвана от процесори Intel и AMD), IA-64, ARM, SPARC, POWER ISA, MIPS и много други. Всяка ISA има свой собствен уникален набор от инструкции и функции, които влияят върху производителността, ефективността и възможностите на процесора и в крайна сметка на целия компютър.
Може също да ви е интересно да знаете дали a Един процесор може да изпълнява няколко различни ISA.
Асемблерен език (ASM) и машинен код
Тясно свързани с ISA са асемблерен език и машинен код Това са концепции, свързани с програмирането на ниско ниво на процесор:
- Асемблерен език: Това е език за програмиране от ниско ниво, който се намира между машинния език и езиците за програмиране от високо ниво. Проектиран е да бъде по-четлив и разбираем за човека от машинния код, но все пак директно представя инструкции и операции, които процесорът може да разбере. Вместо да използва двоични и шестнадесетични кодове като машинния код, асемблерят използва мнемоника и съкращения за всяка от поддържаните ISA инструкции, регистри, типове данни и т.н. Асемблерят позволява на програмистите да пишат програми по по-ясен и по-структуриран начин от машинния код, но все още е много близо до хардуерното ниво и изисква подробни познания за архитектурата на използвания процесор.
- Машинен код: Машинният код е родният език на хардуера. Той се състои от поредици от двоични числа (0 и 1), които представляват инструкции, които процесорът може да изпълнява директно. Всяка операция, като събиране, изваждане или пренос на данни, има свое собствено кодиране в машинния код. Машинният код е единственият език, който процесорът може да изпълнява директно, тъй като това е начинът, по който той разбира операции и действия. Поради природата си на нули и единици обаче, е трудно за четене и разбиране от хората. Ето защо са разработени асемблерен език и езици за програмиране на високо ниво – за да се осигурят по-лесни за използване интерфейси за програмистите.
Тоест, ISA е представена под формата на език за програмиране, използващ асемблерен език или ASM. Този език трябва да бъде преведен в машинен код или двоичен код, за да може да бъде зареден в паметта и обработен от процесора.
Какво е микроархитектура?
La Микроархитектура на процесораМикроархитектурата, известна още като µarch, представлява специфичната имплементация на ISA (архитектура на набора от инструкции) в процесор. Начинът, по който се изпълняват инструкциите и какви типове инструкции или данни се поддържат, зависят от тази имплементация. Микроархитектурата обхваща различни области на процесора и технологиите, които той може да използва. Например:
- Тип и микрокод на управляващото устройство: В миналото някои процесори използваха по-бързи и по-ефективни хардуерно свързани управляващи устройства. Повечето съвременни процесори обаче използват по-сложни и програмируеми устройства. Това влияе върху броя на инструкциите, които процесорът може да интерпретира, включително приемането на целия ISA или само на някои инструкции (със или без разширения). Микрокодът, който може да се актуализира, е част от това устройство.
- Кеш: Микроархитектурата влияе върху размера, типа и йерархията на кеша. Това е предназначено да ускори достъпа до паметта и да намали влиянието на латентността върху основната памет или I/O системата. Решенията относно кеша включват аспекти като кеш паметта от последно ниво (LLC), броя на нивата на кеша, единиците за транслиране на адреси (TLB), типовете памет, капацитета, разделената или унифицираната организация, тактовата честота и други.
- Pipeline: Повечето съвременни процесори използват концепцията за конвейери, разделяйки изпълнението на няколко етапа. Това позволява едновременното обработване на множество инструкции. Дълбочината на конвейера влияе върху този капацитет.
- Изпълнителни единици: определя броя и вида на функционалните единици за изпълнение на инструкции, като ALU, FPU, AGU, MUL, MAC и др. Тези единици могат да бъдат проектирани за целочислени или плаващи данни и това разграничава скаларните от суперскаларните процесори.
- Спекулативно изпълнение: Много съвременни процесори използват спекулативно изпълнение, което позволява изпълнението на инструкции, преди резултатът от даден разклонение да е известен. Използват се техники за прогнозиране и единици за прогнозиране, за да се увеличи максимално процентът на попадения и да се минимизират санкциите за пропуски.
- Ред на изпълнение: Процесорите могат да се изпълняват по ред или извън ред. Последното е по-често срещано при високопроизводителните процесори. То позволява инструкциите да се обработват с налични данни, дори ако те не следват последователния ред на програмата.
- Преименуване на запис: При високопроизводителните микропроцесори може да се използва преименуване на регистри, което абстрахира връзката между логическите и физическите регистри. Това позволява елиминиране на някои зависимости от данни.
- Многопроцесорна обработка и многонишкова обработка: Може да бъде проектиран да поддържа множество ядра на един чип (многоядрен) или множество чипове в система (многопроцесорна обработка). Техники за многонишкова обработка, като SMT, също могат да бъдат внедрени за повишаване на производителността при изпълнение на инструкции.
Както можете да видите, микроархитектурата на процесора има значително влияние върху неговата производителност и характеристикиРешенията, взети в тези области, влияят върху начина, по който се изпълняват инструкциите и как се използват възможностите на процесора. Всяка микроархитектура може да бъде пригодена към специфичен ISA и могат да съществуват множество реализации за един и същ ISA, всяка със свои собствени функции и оптимизации.
съвместимост
Както споменах по-рано, микроархитектурата на процесора представлява специфична имплементация на ISA, което означава, че за една и съща ISA може да има няколко различни имплементации. В случая с AMD64 или EM64T ISA, обикновено наричани x86-64, има... разработени множество микроархитектури от различни компании, като AMD, Intel, Zhaoxin (VIA Technologies), Hygon Dhyana (лицензът Zen1 на AMD) и други. Дори в рамките на една и съща компания може да възникне поколение след поколение микроархитектури в търсене на подобрения в производителността и функциите.
Например, в рамките на AMD и нейния AMD64 ISA, съществуват микроархитектури като Zen, K10, K8, Zen 4, всяка със свои собствени особености.
Естествено, съществуват и микроархитектури, които не са съвместими с определени ISA, и вместо това са свързани с други, отделни ISA. Например, чип, проектиран за ARM (A64) ISA, като например Apple A15 Bionic с микроархитектура Avalanche+Blizzard, не би могъл да изпълнява двоични файлове, компилирани за x86 или за други, отделни ISA. Това прави изпълнението на софтуер, насочен към различен ISA, на машина с несъвместим ISA трудно, освен ако не се използват емулатори като QEMU или Rosetta 2.
Дори микропроцесор, който принадлежи към една и съща ISA не твърди, че е напълно съвместим с всички налични инструкции (може да е проектиран за подмножество) или с евентуално съществуващи разширения. Например, не всички процесори поддържат разширението за инструкции AVX512. Това показва, че производителността на софтуер, компилиран за една и съща архитектура, може да варира между различните процесори. Например, програма, компилирана за изпълнение на Raspberry Pi (ARM), няма да работи на Apple M1 (ARM) и обратно.
Кога компилира софтуер, обикновено се избира общ подход без специфични оптимизации за конкретна микроархитектура. Това гарантира съвместимост с възможно най-широк спектър от процесори. Дори ако на един AMD чип, например, липсват определени инструкции или разширения, той все пак ще може да изпълнява софтуера компетентно, въпреки че може да изисква повече инструкции за това. Въпреки това, компилация, оптимизирана специално за определена микроархитектура, може значително да подобри производителността, като се възползва от всички налични инструкции.
Заключение и разлики
Изключително важно е да се избягва объркването на микроархитектурата на процесора, неговата архитектура или ISA (архитектура на набора от инструкции) със системата като цяло или макроархитектурата. Въпреки че тези термини може да изглеждат сходни, те представят фундаментални разлики:
- Макроархитектура или системен дизайнТой обхваща интегралния дизайн на цялата компютърна система, не само до процесора, но и други основни компоненти като шината, контролера на паметта, основната памет, допълнителните процесорни устройства, които си сътрудничат с процесора, контролерите, системата за директен достъп до паметта (DMA), входно-изходните (I/O) портове за периферни устройства и други елементи, които изграждат дънната платка.
- ISA: отнася се до инструкциите, които процесорът е способен да разбере и изпълни. Той също така определя аспекти като размера на думата, броя на наличните регистри, режимите на адресиране на паметта и формата на манипулируемите данни. Той е тясно свързан с асемблерен език, тъй като мнемониката, използвана в инструкциите, се използва и в този език от ниско ниво (напр. ADD, SUB, MUL и др.).
- Микроархитектура или организацияТова се състои от специфична имплементация на ISA. Това включва конкретното представяне на пътищата за данни, изпълнителните устройства, банковите регистри, шините и други компоненти. Тази микроархитектура се преобразува в логически дизайн и впоследствие във физически или електронен дизайн, който е въплътен в интегралната схема на процесора.
Освен това, съществува и друга концепция, известна като UISA или μISA, която се отнася до архитектурата на набора от инструкции за микрокод, въпреки че задълбочаването на тази концепция е извън обхвата на това обяснение.
Видове компютърни архитектури
Сега нека видим видове компютърни архитектури от различни гледни точки:
Според неговата макроархитектура
Сред видовете макроархитектури или компютърни архитектури имаме следните:
Поток от данни
В парадигмата на архитектурата на поток от данниВ паралелна архитектура данните преминават през различни изчислителни етапи. Тук резултатите, генерирани от едно изчисление, се използват като входни данни за други изчисления. Тази паралелна структура се характеризира с прехвърляне на данни между различните етапи на обработка. Изчисленията се извършват едновременно с помощта на мрежа от процесори, взаимовръзка и някаква форма на съхранение.
фон Нойман
La архитектурата на фон Нойман Управлява се от последователен подход, при който изчисленията се изпълняват в линеен ред. Операциите се извършват последователно и се базират на централен процесор (CPU), памет и входно/изходни устройства. CPU е оборудван с регистри за инструкции и данни. Паметта, която съхранява инструкции и данни по време на обработка, действа като устройство за съхранение. Входно/изходните устройства, които включват елементи като клавиатури, дисплеи и принтери, се използват за взаимодействие с външната среда.
Харвард
La харвардска архитектура Това е адаптиран вариант на архитектурата фон Нойман. Този модел има две отделни памети: едната за програмни инструкции, а другата за данни.
Харвард модифициран
La Модифицирана харвардска архитектура Тя съчетава характеристики на архитектурата на потока от данни и архитектурата на Харвард. При тази схема програмна памет и памет за данни съществуват едновременно, взаимодействайки си при изпълнението на изчисленията.
Според ISA и плътността на инструкциите
Ако разгледаме вида на ISA с които разполагаме, особено плътността на инструкциите и как са представени тези инструкции, можем да разграничим архитектурите:
CISC (Компютър със сложен набор от инструкции)
В спектъра от архитектури откриваме модела CISC, характеризираща се с обширния си набор от инструкции, който обхваща сложни и разнообразни операции с паметта, придружени от различни режими на адресиране. Тази концепция води до сложно конструиран процесор, оборудван с управляващи устройства, базирани на микрокод, и малък брой регистрови банки с общо предназначение. Той се отличава с високата си абстракция между софтуер и хардуер, ефективното време за програмиране и компактните програми. Примери за този тип включват архитектурите IBM z/Architecture, x86 (IA-16, IA-32) и Motorola 68k.
RISC (Компютър с намален набор от инструкции)
В другия край е парадигмата RISC, който избира набор от прости, хомогенни инструкции с намален обхват. Този подход благоприятства по-кратко време за разработка, увеличава перспективите за мащабируемост на производителността и включва по-ефективни устройства с множество регистрови банки с общо предназначение и ограничен брой режими на адресиране. Въпреки че въвежда допълнителна сложност на компилацията, той благоприятства по-големи програми, предлага ниска абстракция между софтуер и хардуер и изисква повече време за програмиране. Забележителни примери за тази категория са архитектурите IBM POWER, SPARC, Arm и RISC-V.
Хибриден (RISC-подобен)
В настоящия сценарий, разликите между RISC и CISC са се разсеяли. Например, процесорите на Intel и AMD приемат CISC инструкции, които след това се преобразуват в по-прости, подобни на RISC микрооперации. Подобен подход е използван от AMD при изграждането на своя K5 процесор, базиран на 29k RISC архитектура, с x86 преобразуване на инструкции. Също така, „чистите“ RISC процесори като Arm са включили някои CISC функции, като например множество разширения на инструкциите. Intel направи нещо подобно със своя Pentium Pro и по-късни версии. В момента както Intel, така и AMD продължават с този хибриден дизайн в новите си процесори, използвайки RISC-стил микрооперации, за да разложат своите CISC x86 инструкции. Тоест, на предния край на процесора е необходима система за преобразуване…
VLIW (Много дълга инструкционна дума)
Въпреки че някои автори го разглеждат извън този набор от архитектури, уместно е да го включим тук. VLIW Конфигуриран е с много големи, но ограничени инструкции. Това опростява хардуера, но прави софтуера по-труден, тъй като изисква сложен компилатор. Процесорите Crusoe и Efficeon на Transmeta илюстрират тази архитектура, върху която Линус Торвалдс, в ранните си дни в Силициевата долина, работи, за да разработи Code Morphing, софтуерна програма, която преобразува x86 инструкции във VLIW и прави този процесор съвместим с процесори Intel и AMD.
MISC (Компютър с минимален набор от инструкции)
Друг вариант се състои от MISC, с малък брой инструкции. За разлика от други, стекът обикновено се използва за съхраняване на операнди вместо регистри, което опростява дизайна. Илюстративен пример е INMOS транспютърът.
ZISC (Компютър с нулев набор от инструкции)
Това необичайно предложение се характеризира с липсата на традиционни инструкции. Малко архитектури обаче ЗИСК са били успешни, а пример от миналото е ZISC35 на IBM.
SISC (Компютър със специфичен набор от инструкции)
Моделът SISC Той представя много редуциран набор от инструкции, оптимизирани за конкретна задача.
VISC (Виртуален компютър с набор от инструкции)
ВИСК, нетипична архитектура, въведена от Soft Machines, имплементира виртуални ядра върху хардуерната инфраструктура.
DISC (Компютър с динамичен набор от инструкции)
Архитектурата ДИСК Това позволява динамична модификация на набора от инструкции според нуждите на програмата. Това изисква използването на препрограмируеми FPGA и третира инструкциите като модули.
NISC (компютър без набор от инструкции)
НИСК Използва се за създаване на високоефективни устройства и хардуерни ускорители.
EDGE (Изпълнение на граф от данни)
С цел решаване на проблеми с пречките и подобряване на CISC, EDGE Той съдържа значителен набор от отделни инструкции в група, наречена хиперблок, изпълнявани паралелно по опростен начин. Тази структура е била използвана в устройства като TRIPS.
OISC (Компютър с един набор от инструкции) или URISC (Ultimate RISC)
а ОИСК Използва само една инструкция, без да ограничава разнообразието от изпълним софтуер. Въпреки че се използва за образователни цели, не е известна текуща имплементация.
Квантов или квантов
Un квантов процесор Квантовият компютър е вид процесорно устройство, което използва принципите на квантовата механика, за да извършва изчисления и да решава проблеми изключително бързо в сравнение с класическите компютри. Той използва кюбитове, които са единици квантова информация, за да представя и манипулира данни в суперпонирани и заплетени състояния, което позволява едновременното извършване на множество изчисления. Поради тази паралелна способност за обработка и квантовите явления като суперпозиция и квантова интерференция, квантовите процесори имат потенциала да решават определени видове сложни проблеми, като например факторизиране на големи числа и симулиране на квантови системи, много по-ефективно от конвенционалните компютри. Техническите предизвикателства при създаването и поддържането на стабилни и кохерентни кюбитове обаче ограничават мащаба и производителността на квантовите процесори днес.
Според размера на думата
Във връзка с брой битове (размер на думите) С чиповете, с които един компютър може да взаимодейства, съществуват разнообразни дизайни, вариращи от 1-битови, 2-битови, 4-битови, 8-битови, 16-битови, 32-битови, 64-битови до 128-битови, 256-битови, 512-битови и други. В много случаи настоящите дизайни са хибриди, комбиниращи различни възможности. Например, чиповете AMD64/EM64T са с обратна съвместимост, което позволява изпълнението на 64-битов, 32-битов и 16-битов софтуер. Те също така включват 128-битови, 256-битови и следващи разширения.
Този подход може да се отнася до размер на данните, които функционалните единици могат да обработват о Ал размер на адреса на паметта, определяне на количеството достъпна памет. Пример за това е, че при 32-битова архитектура могат да бъдат адресирани до 232 адреса на паметта, докато при 64-битова архитектура това се разширява до 264 уникални адреса на паметта.
За да разберете по-добре историческа еволюция, ето някои забележителни примери с различни размери:
- 1-малко: въплътена в Motorola MC14500B.
- 4-битоваПредставен е например в Intel 4004 и HP Saturn.
- 8-битоваможе да се види в процесори като Zilog Z80, Intel 8008 и Atmel AVR.
- 16-битова: присъства в Intel 8086, DEC PDP-11, Zilog Z8000 и други.
- 32-битоваСреща се в процесори като Pentium, Pentium II, Pentium III, Pentium 4, K5, K6, Athlon, Athlon XP и други.
- 64-малко: на процесори като Athlon64, Phenom, Sempron, Turion64, Ryzen, EPYC, Intel Core, Intel Xeon, Opteron, както и варианти, базирани на Arm AArch64, SPARCv9, IBM POWER, MIPS64 и други.
- 128-битоваНякои процесори на Intel и AMD включват разширения на инструкции с този размер.
- 256-битоваподобно на предишния случай, като дизайни като Transmeta Efficeon използват тази дължина.
- 512-малко: Подобно на предишни случаи, включително разширения като AVX-512 SIMD на Intel (наскоро включен и в AMD Zen 4). Въпреки че устройството е 64-битово, тези разширения позволяват на определени функционални устройства, като например FPU, предназначени за дълги инструкции, да работят с тези размери. Това се постига чрез използването на няколко свързани регистъра, което позволява работа като векторни устройства, работещи с множество точки от данни.
- Битово нарязване: е техника за изграждане на процесор от процесорни модули с по-малка битова ширина, с цел увеличаване на дължината на думата, теоретично за създаване на произволен n-битов централен процесор (CPU). Всеки от тези компонентни модули обработва битово поле или "секция" от операнд. Групираните процесорни компоненти след това биха имали капацитета да обработват пълната дължина на думата, избрана в даден софтуерен дизайн. Битовото нарязване до голяма степен е остаряло с появата на микропроцесорите. То се използва по-скоро в аритметично-логически устройства (ALU) за квантови компютри и като софтуерна техника, например за криптография на x86 процесори.
В днешно време, с работните натоварвания, свързани с изкуствен интелект (AI), данните във формати като РП8, РП16и т.н., стават все по-важни, тъй като тези натоварвания работят с малки набори от данни, а не с големи дължини на данни.
Трябва да се каже, че в момента много процесорите могат да работят в няколко режимаНапример, x86 процесорите са известни със своята обратна съвместимост и в момента могат да работят в 16-битов, 32-битов и 64-битов режим. Освен това, те обикновено имат специални FPU или ALU вътре, за да работят във векторен режим, т.е. с инструкции от тип SIMD, които могат да бъдат 128-битови, 256-битови или 512-битови. Същото важи и за други процесори, като ARM процесори и др., така че не е толкова лесно да се класифицира процесор според този критерий, тъй като той може да работи с различни размери...
Според таксономията на Флин
В рамките на класификациите на архитектурите, базирани на паралелизъм, е уместно да се спомене как са структурирани процесорните единици според... Таксономията на Флин:
SISD (Единична инструкция, единични данни)
Този тип архитектура използва една инструкция и един набор от данни в даден момент, без каквато и да е форма на паралелизъм. Въпреки че е най-основната, тя е и най-неефективната по отношение на производителността. Въпреки че е била по-често срещана в миналото, употребата ѝ в момента е ограничена.
SIMD (единична инструкция, множество данни)
Тук една инструкция се използва за работа с множество набори от данни. Тази архитектура е широко разпространена във векторните процесори, графичните процесори и много съвременни централни процесори, наред с други.
MISD (Множество инструкции, единични данни)
Те обикновено се намират в тензорни устройства и други специализирани процесори. В този случай множество инструкции се прилагат към един набор от данни.
MIMD (Множество инструкции, множество данни)
В този сценарий множество потоци от инструкции работят с множество потоци от данни. Това представлява най-модерната форма на паралелизъм, използвана във високопроизводителните изчислителни машини (HPC). Примери за това са чипът SW26010 на Sunway и IBM Cell, наред с други.
Според хомогенността
Според хомогенност от неговите процесорни единици, можем да имаме хомогенни системи, като повечето конвенционални, или хетерогенни, каквато се превръща в тенденция в днешно време.
Хомогенна архитектура
В този тип архитектура имаме хомогенни процесорни единици. Например, микропроцесорът или CPU е хомогенна единица, където всичките му процесорни ядра са идентични и работят под управлението на една и съща ISA. Това има своите предимства, като например улесняване на еднаквото изпълнение на софтуера на тези единици; но има и своите ограничения по отношение на производителността и енергийната ефективност.
Хетерогенна архитектура
В тези системи имаме разнообразни архитектури, разнородниТоест, изчислителните устройства с общо предназначение не са еднакви. Това е така или защото имаме микропроцесор с различни ядра, както е при ARM и неговия big.LITTLE или най-новите процесори на Intel с техните P-ядро и E-ядро, или защото се използват други ускорители с общо предназначение, като например GPGPU, специфични ускорители като невронни устройства и др.
Това води до подобрена производителност и ефективност, както и до възможност за ускоряване на специфични товари. Съществуват обаче и усложнения, като например софтуерното програмиране, което става по-сложно, за да се възползвате от тези хетерогенни устройства.
Някои примери за устройства, които могат да присъстват в хетерогенна SoC или ASIC, са копроцесори, GPU, DSP, PPU, VPU, TPU, мрежов процесор, защитен криптопроцесор, процесор за базова лента и др.
Според броя на ядрата

Можем също да разграничим архитектурите с едноядрени и такива, които имат няколко от тях. В този смисъл можем да кажем, че има:
- Едноядрен: Както подсказва името му, той има едно процесорно ядро на чипа. Това означава, че може да изпълнява само една задача или инструкция едновременно. Въпреки че може да изпълнява инструкции с висока скорост, не може да обработва множество задачи едновременно. Тези процесори са били често срещани в по-стари компютри и по-прости устройства.
- Многоядрен: Той има множество процесорни ядра на един чип. Всяко ядро е независимо процесорно ядро, което може да изпълнява свои собствени инструкции и задачи. Това позволява на многоядрения процесор да обработва множество задачи едновременно, тъй като всяко ядро може да работи върху различна задача. Многоядрените процесори са често срещани в днешните компютри и позволяват подобрена производителност при задачи, които могат да се възползват от паралелизма. Например, можем да открием DualCore, QuadCore, OctaCore и др. С други думи, те могат да варират от две ядра до 2 или повече.
- Многоядрен процесор: Това е усъвършенствана версия на многоядрени процесори, с още по-голям брой ядра (често наричани „плочки“ и обикновено малки, ефективни ядра, като ARM) на един чип. Разграничението между многоядрени и многоядрени процесори е донякъде неясно и варира в зависимост от контекста. Като цяло обаче, многоядрен се счита за чип с голям брой ядра, често десетки или дори стотици. Тези процесори се използват в приложения, които изискват висока степен на паралелизъм, като симулация, обработка на изображения, изкуствен интелект и високопроизводителни изчисления. В този случай говорим за устройства, които могат да имат стотици или хиляди ядра.
Не бъркайте това с многопроцесорна обработка (MP) Това е използването на два или повече централни процесора (CPU) в рамките на една компютърна система. Терминът се отнася и до способността на системата да поддържа повече от един процесор или способността да разпределя задачи между тях. Тоест, системи с два или повече гнезда на дънна платка…
Понякога не е толкова просто, колкото простото репликиране на всяко ядро в силиций, тъй като тези многоядрени системи изискват значителни архитектурни промени, като например създаване на шина или мрежа за свързване на тези устройства, както и нови начини за споделяне на кеш паметта, поддържане на кохерентност и т.н.
Според нивото на паралелизъм
И накрая, има други подходи към архитектурата които са ориентирани според степента на паралелизъм:
Да се изкачи
Това е прост процесор, без излишни функционални модули. Това беше така за повечето процесори преди 90-те години на миналия век, когато суперскаларните процесори започнаха да процъфтяват.
Тръбопровод
От тази перспектива, тръбопровод Процесорът фрагментира процеса на изпълнение на независими секции, които могат да работят едновременно. Това позволява инструкциите да не се налага да завършат всички етапи, преди да може да започне следващата.
Суперскаларен
Тази архитектура се стреми да засили паралелизъм на ниво инструкции чрез умножаване на изпълнителни устройства, като например ALU и FPU. Това позволява едновременното изпълнение на множество инструкции.
Многонишкова работа
Архитектурите на многонишков Те включват техники за обработка на повече от една нишка или поток от инструкции. Примерите включват 2-посочен, 4-посочен, 8-посочен SMT и др. Това позволява едновременна обработка на две нишки. Може също да се използва темпорален режим, при който процесорът се редува между нишките, за да ги обработва на интервали.
OoOE
La Извънредно изпълнение (OoOE) Това е друга архитектурна парадигма или алгоритъм, който се стреми да ускори изпълнението. Вместо да следва програмната последователност за изпълнение на инструкции, инструкциите се обработват не по ред въз основа на наличността на данни. След това те се реорганизират в буфер, за да се получи правилният резултат. Например, по-старите процесори работеха в последователен ред. Intel също така създаде по-нови дизайни, базирани на този подход, като например Atom, който се разви в по-усъвършенствани модели. В момента много високопроизводителни процесори се придържат към тази схема.
Лениво изпълнение
La мързеливо изпълнение Това е противоположно на нетърпеливото изпълнение и не включва спекулации. Включването на спекулативно изпълнение в имплементациите на мързеливия език за програмиране Haskell е актуална тема на изследване.
Спекулативно изпълнение
La спекулативно изпълнение Това е техника за оптимизация, при която компютърна система изпълнява задача, която може да не е необходима. Работата се извършва, преди да се разбере дали всъщност е необходима, за да се избегне забавяне, което би възникнало, ако работата бъде извършена, след като се е разбрало, че е необходима. Ако се окаже, че работата все пак не е била необходима, повечето от промените, направени от работата, се отменят и резултатите се игнорират.
Целта е да се осигури повече посещаемост ако са налични допълнителни ресурси. Този подход се използва в няколко области, включително прогнозиране на разклонения в конвейерни процесори, прогнозиране на стойности за използване на локалността на стойностите, предварително извличане на памет и файлове и оптимистичен контрол на паралелността в системи за бази данни.
Съвременните конвейерни микропроцесори използват спекулативно изпълнение, за да намалят разходите за изпълнение на инструкции. условно разклоняване чрез схеми, които предсказват (предсказване на разклонения) пътя на изпълнение на програма въз основа на историята на изпълненията на разклонения. За да се подобри производителността и използването на изчислителните ресурси, инструкциите могат да бъдат планирани в момент, когато все още не е определено, че трябва да бъдат изпълнени, преди разклонение.
Разбира се, спекулативното изпълнение, когато предсказващият фактор е правилен, позволява по-бърза обработка на резултатите, тъй като те се изпълняват мигновено. От друга страна, когато има грешка в предсказването, това ще означава изпразване на конвейера и рестартиране на обработката с правилния клон или път. Следователно, повредата предполага и загуба на тактови цикли… Ето защо има все по-големи усилия за подобряване на точността на тези устройства, дори с помощта на невронни мрежи.
Освен това, това не е единственият проблем, имаме и това, което е известно като „уязвимост на процесора, свързана с преходно изпълнение“Уязвимостите при преходно изпълнение на процесора са уязвимости в компютърна система, които използват спекулативна оптимизация на изпълнението, внедрена в микропроцесор, за да изтекат секретни данни на неоторизирана страна. Класическият пример е Spectre, който даде името си на категорията атаки по странични канали, известни като кеш атаки, но от януари 2018 г. насам са идентифицирани много различни уязвимости при кеш атаки.
На практика повечето съвременни микропроцесори използват комбинация от тези подходи и технологии. Например, AMD Ryzen има елементи на SMT, OoOE, суперскаларна и конвейерна обработка, 64-битов е и поддържа 128-битови и 256-битови разширения. Той също така разполага с хибридна архитектура, която комбинира RISC принципите с CISC транслация на инструкции. Може да работи и в SIMD режим, наред с други функции.
Клетъчен
La клетъчна архитектура Това е вид компютърна архитектура, известна в паралелните изчисления. Клетъчните архитектури са сравнително нови, като микропроцесорът STI (Sony Toshiba IBM) Cell е първият на пазара. Cellular довежда многоядрената архитектура до логичния ѝ край, като дава на програмиста възможността да изпълнява множество едновременни нишки в рамките на един процесор. Всяка „клетка“ е изчислителен възел, съдържащ нишки, памет и комуникационни устройства. Подобрението на скоростта се постига чрез използване на паралелизма на ниво нишка, присъщ на много приложения.
Процесорът Cell, който използва клетъчна архитектура и съдържа 9 ядра, се използва в PlayStation 3, с 1 основно ядро PowerPC и 8 копроцесора. Друга забележителна архитектура Cell е Cyclops64, масово паралелна архитектура, която в момента се разработва от IBM.
Клетъчните архитектури следват парадигма за програмиране на ниско ниво, която предоставя голяма част от базовия хардуер на програмиста. Това позволява на програмиста значително да оптимизира кода си за платформата, но същевременно прави разработването на софтуер по-трудно.
Заключение
Съществуват дори още видове архитектури, например тези, класифицирани според Це-юн Фън и др. Ето обаче най-важните, които трябва да знаете. Що се отнася до въпроса кое е по-добро или по-лошо, истината е, че това зависи от много фактори. Освен това, съвременните системи обикновено са смесица от няколко от тези парадигми; тоест, процесор на AMD, например, има 64-битова RISC-подобна архитектура, с разширения до 512-битова (AVX-512), а също така е конвейерна, суперскаларна, с изпълнение извън реда и многонишкова.