Тема 2 — Особености в архитектурата на съвременните компютри
Въпреки огромното разнообразие на съвременните компютърни архитектури, всички те почиват върху принципи, формулирани от Джон фон Нойман в началото на 40-те години на 20-ти век. Тези принципи са устойчиви именно защото отразяват фундаменталната логика на изчислението, а не конкретна технология. Трите характерни особености, които отличават архитектурата на съвременните компютри от техните предшественици, са: широкото използване на процесори с RISC архитектура, масовото приложение на паралелна обработка на различни нива, и използването на шината като основна среда за трансфер на информация.
1. Принципи на фон Нойман
Независимо от развитието на технологиите и програмирането през последните близо 80 години, два принципа, предложени от фон Нойман, остават в основата на архитектурата на практически всеки компютър:
- Принцип на програмното управление — компютърът изпълнява предварително съставена последователност от команди (програма), без да изисква намеса на оператора за всяка стъпка.
- Принцип на съхраняването на програми в паметта — програмата се съхранява в същата памет като данните, което позволява автоматично и последователно изпълнение и лесна модификация.
Начинът, по който тези принципи се въплъщават в конкретни архитектури, се е изменил коренно. Основните отлики на съвременните компютри спрямо тези от преди 30–40 години се свеждат до: широко използване на RISC процесори, масов паралелизъм и шина като комуникационна среда.

Архитектурата на фон Нойман: централен процесор (управляващо устройство + аритметично-логическо устройство), главна памет и устройства за вход/изход, свързани чрез шина — основата на практически всеки съвременен компютър. (Wikimedia Commons)
2. CISC процесори — същност, предимства и недостатъци
Всички съвременни процесори спадат към една от двете групи: CISC (Complex Instruction Set Computer) — процесори с комплексен (сложен) набор команди, или RISC (Reduced Instruction Set Computer) — процесори с редуциран набор команди. Тъй като архитектурата на процесора определя облика на цялата компютърна архитектура, думата Code в оригиналните съкращения (Complex/Reduced Instruction Set Code) е заменена с Computer.
В исторически план първите процесори са имали проста структура, близка до RISC. Бързо обаче архитектурата е мигрирала към CISC, тъй като добавянето на нови, по-сложни команди (апаратно или чрез микропрограмиране) е изглеждало като пряк начин за повишаване на производителността и за приближаване към примитивите на езиците от високо ниво.
Характерни особености на CISC архитектурата:
- Голям и разнообразен набор от команди с различна сложност.
- Различна дължина на командите (от 16 до 64 бита).
- Команди, които извършват едновременно операции с памет и регистри.
- Малък брой общи регистри — много операции се изпълняват директно в паметта.
- Сложно декодиране на командите, изискващо микропрограмно управляващо устройство.
- Изпълнение на команди за 2 до 10 и повече тактови цикъла.
Предимства: Плътен машинен код — за изпълнение на дадена задача са необходими по-малко команди, което спестява памет. Обратна съвместимост — наследената кодова база остава изпълнима на нови процесори.
Недостатъци: Сложното управляващо устройство заема голяма площ върху кристала (напр. при MC 68000 — първият 32-битов едночипов процесор с CISC архитектура — управляващото устройство заема 50% от площта на чипа). Голяма системна издръжка. Трудности при конвейерно изпълнение поради неравномерна дължина на командите.
3. RISC процесори — принципи, изисквания, предимства и недостатъци
Повторното появяване на RISC процесорите настъпва в края на 70-те и началото на 80-те години на 20-ти век. Теорията на компютрите с редуциран набор команди е разработена от Д. Петерсон от университета Бъркли, Калифорния. Отправна точка е наблюдението, че в традиционната CISC архитектура 60–80% от процесорното време се изразходва за изпълнение на сравнително малко на брой команди — предимно операции за зареждане и съхранение на операнди (LOAD/STORE), условни и безусловни преходи, и извиквания на подпрограми.
Идеята при RISC е постигане на максимално бързодействие чрез осигуряване на минимално время за изпълнение на тези най-често използвани команди. Към „чистата” RISC архитектура се предявяват следните изисквания:
а) Командите трябва да се изпълняват за еднакъв брой тактове — в идеалния случай за един такт.
б) Командите трябва да имат един и същ фиксиран формат.
в) Обръщението към паметта е свързано само с команди от тип LOAD и STORE.
г) Всички аритметични и логически операции се изпълняват на ниво регистър (register-to-register).
На практика не всички RISC процесори реализират едновременно и четирите изисквания. Най-често се нарушават изисквания а) и б).
3.1. Последствия от изисквания а) и б)
Фиксираната дължина на командите и еднаквото им времетраене опростяват управлението на процесора и изключват редица сложни проблеми при хардуерния дизайн и при разработката на компилатора. Като пряко следствие площта на управляващото устройство върху кристала намалява значително — при RISC I тя е само 6% от площта на чипа, в сравнение с 50% при MC 68000. Допълнително предимство е намаленото средно с два пъти време за разработка на управляващото устройство. Простите командни формати позволяват бързо и лесно декодиране, а изпълнението на командите може да се реализира чрез логически схеми вместо чрез микропрограми.

RISC I — първи RISC процесор, разработен в UC Berkeley (1982 г.). Управляващото устройство заема само 6% от площта на кристала; по-голямата част е отредена на регистровия файл — директен контраст с MC 68000, при който управляващата логика заема 50%. (Wikimedia Commons)
3.2. Последствия от изисквания в) и г)
Ограничаването на достъпа до паметта до LOAD/STORE и изпълнението на всички останали операции само между регистри налагат голям брой общи регистри. Операциите регистър–регистър се изпълняват 2–4 пъти по-бързо от операциите с кеш памет и 8–12 пъти по-бързо от операциите с оперативна памет. При ранните RISC разработки броят на регистрите е бил много голям: RISC II — 138, AMD 29000 — 192, Pyramid — 528. По-късно той намалява поради две причини:
а) Изследванията показват, че с 8 регистъра се постига 80% от бързодействието, съответстващо на неограничен брой регистри.
б) Разработват се и се разпространяват регистрово оптимизиращи компилатори, способни ефективно да използват наличните регистри.
3.3. Недостатъци на RISC архитектурата
Регистровата архитектура намалява натоварването на паметта за данни, но увеличава пропускателната способност, необходима за паметта за команди. Поради тази причина всеки RISC процесор разполага поне с кеш памет за команди. По-важен практически недостатък е, че за изпълнение дори на прости операции, реализирани с единствена CISC команда, са необходими няколко RISC команди. Това увеличава размера на програмата в паметта и броя на обръщенията към паметта, което влияе негативно на общата производителност. Иначе казано, RISC процесорът превъзхожда CISC при изпълнение на отделна команда, но предимството намалява при изпълнение на цяла програма. Освен това директното транслиране на асемблерски или обектни програми за CISC в RISC код е нецелесъобразно — необходима е нова компилация с компилатор, разработен специално за RISC.
4. Сравнение между CISC и RISC
Фиг. 2-1. Обща системна архитектура — нивата на хардуер и софтуер, в контекста на които се позиционират CISC и RISC подходите.
| Характеристика | CISC | RISC |
|---|---|---|
| Набор команди | Голям и разнообразен | Малък и редуциран |
| Дължина на командите | Променлива (16–64 бита) | Фиксирана (обикновено 32 бита) |
| Тактове за изпълнение | 2–10+ | 1 (идеален случай) |
| Обръщения към памет | При всяка команда | Само LOAD/STORE |
| Брой регистри | По-малък | По-голям |
| Управляващо устройство | Микропрограмно (сложно) | Логически схеми (просто) |
| Конвейеризация | Затруднена | Естествена |
| Размер на програмата | По-малък | По-голям |
| Примери | x86, Motorola 68k, VAX | ARM, MIPS, SPARC, RISC-V |
5. Шината като основна среда за трансфер на информация
Шината е въведена като среда за пренасяне на данни и команди в средата на 60-те години от DEC в компютъра PDP-8, като алтернатива на канала при мейнфреймите. Поради своята простота и ниска цена тя намира масово приложение — първо в микро- и мини-компютрите, а по-късно и при по-мощните системи.
Основният недостатък на шината е ниската й пропускателна способност. За преодоляването му се използват три подхода: увеличаване на ширината, повишаване на тактовата честота и разделяне чрез въвеждане на йерархия от шини. Кратка хронология на развитието при персоналните компютри:
- 1981 — IBM въвежда 8-битова системна шина при 4,77 MHz (по-късно разширена до 16 бита / 8 MHz и позната като ISA с пропускателна способност 16 MB/s).
- 1987 — IBM въвежда MCA (Micro Channel Architecture), 32-битова, несъвместима с ISA.
- 1988 — дебютира 32-битовата EISA (Extended Industry Standard Architecture), 33 MB/s.
- 1990 — Compaq въвежда йерархия на шините (Flex/MP, TriFlex), при която процесорната шина (процесор, кеш, RAM) е отделена от периферната (EISA).
- 1992 — VESA обявява 32-битовата локална шина VL-Bus, 133 MB/s.
- 1993 — анонсирана е PCI шината (32 бита, 33 MHz), която въвежда междинно ниво между процесорната шина и периферните устройства.

Йерархична организация на шините: северният мост (northbridge) свързва процесора, паметта и графичната карта; южният мост (southbridge) управлява USB, SATA и периферните устройства. (Wikimedia Commons)
В съвременните персонални компютри тази йерархия се реализира чрез чипсета на дънната платка — северният мост свързва бързодействащите компоненти (процесор, памет, графична карта), а южният мост свързва останалите — USB, SATA, PS/2 и др.
Резюме
- Принципите на фон Нойман — програмно управление и съхранение на програмата в паметта — остават в основата на всички съвременни компютри, независимо от технологичното им разнообразие.
- CISC процесорите предлагат богат набор от команди с различна дължина, което пести памет, но усложнява управляващото устройство и затруднява конвейерното изпълнение.
- RISC процесорите реализират прост, фиксиран набор от команди с акцент върху операциите регистър–регистър и LOAD/STORE достъп до паметта, което опростява хардуера, улеснява конвейеризацията и намалява площта на управляващото устройство до ~6% от кристала.
- Главният недостатък на RISC е по-дългият код — функционалността на една CISC команда изисква няколко RISC команди, с произтичащо увеличение на обема на програмата и натоварването на паметта.
- Шината се е развила от проста 8-битова връзка до йерархична система (ISA → EISA → PCI → PCIe), реализирана чрез северен и южен мост в чипсета на дънната платка.