Datortehnikā datoru arhitektūra ir datorsistēmas konceptuālais dizains un darbības pamatstruktūra. Tā ir visu konstrukcijas prasību (jo īpaši ātruma un starpsavienojumu) tehniskie rasējumi un funkcionālais apraksts, tas ir veids, kā projektēt un realizēt dažādas datora daļas - galvenokārt koncentrējoties uz to, kā centrālais procesors (CPU) darbojas iekšēji un kā tas piekļūst adresēm atmiņā.

To var definēt kā zinātni un mākslu izvēlēties un savstarpēji savienot aparatūras komponentus, lai izveidotu datorus, kas atbilst funkcionālajiem, veiktspējas un izmaksu mērķiem.

Datoru arhitektūra ietver vismaz trīs galvenās apakškategorijas:

  1. Instrukciju kopuma arhitektūra jeb ISA ir abstraktais skaitļošanas sistēmas modelis, ko redz mašīnvalodas (vai asembleru valodas) programmētājs, tostarp instrukciju kopums, atmiņas adrešu režīmi, procesora reģistri, kā arī adrešu un datu formāti.
  2. Mikroarhitektūra, saukta arī par datora organizāciju, ir zemāka līmeņa detalizēts sistēmas apraksts, kas ir pietiekams, lai pilnībā aprakstītu visu skaitļošanas sistēmas daļu darbību un to, kā tās ir savstarpēji savienotas un sadarbojas, lai īstenotu ISA. Piemēram, datora kešatmiņas lielums ir organizatorisks jautājums, kam parasti nav nekāda sakara ar ISA.
  3. Sistēmas projektēšana, kas ietver visus pārējos skaitļošanas sistēmas aparatūras komponentus, piemēram:

·         Sistēmu starpsavienojumi, piemēram, datoru kopnes un komutatori.

·         Atmiņas kontrolieri un hierarhijas.

·         procesora atslogošanas mehānismi, piemēram, tiešā piekļuve atmiņai.

·         Tādi jautājumi kā daudzprocesoru apstrāde.

Kad ir noteikta gan ISA, gan mikroarhitektūra, faktiskā skaitļošanas sistēma ir jāprojektē aparatūrā. Šo projektēšanas procesu sauc par implementāciju. Īstenošana parasti ir aparatūras inženierijas projektēšanas process.

Īstenošanu var iedalīt trijās, bet ne pilnībā atsevišķās daļās:

  • Loģikas īstenošana: Loģiskā loģika: mikroarhitektūrā definēto bloku projektēšana, galvenokārt reģistru pārneses un vārtu līmenī.
  • Ķēžu īstenošana: (vārti, multipleksori, flip-flopi u. c.), kā arī dažu lielāku bloku (ALU, kešatmiņas u. c.), kurus veiktspējas apsvērumu dēļ var realizēt šajā līmenī vai pat zemākā fiziskajā līmenī, projektēšana tranzistora līmenī.
  • Fiziskā īstenošana: Fiziskais izpildījums: tiek uzzīmētas fiziskās shēmas, dažādi shēmas komponenti tiek izvietoti mikroshēmas plānā vai uz plates, un tiek izvietoti tos savienojošie vadi.

Procesoru gadījumā visu ieviešanas procesu bieži sauc par procesora projektēšanu; tā var būt arī radniecīgu procesoru projektu saime, piemēram, RISC un CISC.

Instrukciju kopuma arhitektūra (ISA) — kas tas nosaka un kāpēc tā ir svarīga

ISA nosaka, ko programmētājs un kompilators var sagaidīt no procesora abstraktajā līmenī. Tur ietilpst:

  • instrukciju veidi (aritmētiskas, loģiskas, pārvietošanas, zaru, ieejas/izejas u. tml.),
  • datu formāti (piemēram, 8/16/32/64 bitu vārdi, peldošā komata formāti),
  • >reģistru kopums un to nozīme,
  • adresēšanas režīmi (kā veido adreses, indeksēšana, pārsūtīšana),
  • privileģētās instrukcijas un izsaukumu/režīmu pārvaldība operētājsistēmai,
  • ABI (Application Binary Interface) — bināra saderība starp programmatūru un aparatūru.

Praktiskos piemēros: x86, ARM, MIPS, un jauno RISC-V — visi ir dažādu ISA piemēri. ISA ietekmē programmu saderību (piem., vecas programmas var darboties uz jaunākas ISA versijas, ja tiek saglabāta atpakaļsaderība) un programmatūras rīku ķēdi (kompilatori, debageri).

Mikroarhitektūra — kā ISA tiek īstenota reālajā procesorā

Mikroarhitektūra ir detalizētāks apraksts par to, kā tieši ISA tiek realizēta — kāda ir datu ceļa (datapath) un vadības (control) struktūra, kā tiek organizētas kešatmiņas, kā darbojas instrukciju cauruļvadi u. c. Galvenie elementi un paņēmieni mikroarhitektūrā:

  • Pipelines (cauruļvada izpilde) — instrukcijas tiek dalītas posmos (fetch, decode, execute, memory, writeback), kas uzlabo caurlaidspēju;
  • Superskalaritāte — spēja izpildīt vairākas instrukcijas vienlaikus;
  • Out-of-order (OOO) izpilde — instrukcijas var tikt veiksmīgi izpildītas ne secīgi, lai izvairītos no gaidīšanas;
  • Brāņu prognozēšana (branch prediction) un reģistru pārdēvēšana (register renaming) — lai mazinātu zaru un atkarību ietekmi uz cauruļvadu;
  • Kešatmiņu hierarhija un TLB — samazina piekļuves laiku galvenajai atmiņai;
  • Microcode un citu vadības mehānismu izmantošana kompleksu ISA instrukciju īstenošanai;
  • Enerģijas pārvaldība un termiskā kontrole — mūsdienu mikroarhitektūrās strādā arī efektivitātes režīmi, dinamiska takts frekvence un frekvenču samazināšana.

Atšķirības: divi procesori ar to pašu ISA var būt ļoti atšķirīgi mikroarhitektūrā — viens var būt vienkāršs, bet ļoti zemas jaudas ierīcēm paredzēts, bet otrs — sarežģīts, augstas veiktspējas servera CPU ar daudzveidīgiem optimizācijas mehānismiem.

Sistēmas projektēšana un aparatūras komponenti

Sistēmas projektēšana aptver visu, kas nav tieši CPU mikroarhitektūra, bet kas ir būtisks sistēmas darbībai un veiktspējai. Nozīmīgākie aspekti:

  • Sistēmu starpsavienojumi (kopnes, komutatori, tīkla interfeisi) un to protokoli;
  • Atmiņas hierarhijas izveidošana — kešatmiņu līmeņi (L1/L2/L3), galvenā DRAM atmiņa, SSD un cita nevolatīva krātuve;
  • Atmiņas kontrolieri, keškoherences protokoli (piem., MESI), NUMA arhitektūras apstākļi daudzkodolu sistēmās;
  • Procesora atteices mehānismi un perifērijas piekļuve (DMA, I/O kontrolieri);
  • Drošības un aizsardzības mehānismi: privileētie režīmi, atmiņas izpildes aizliegumi (NX), aparatūras šifrēšana, uzticama izpildes vide (TEEs).

Īstenošana — no dizaina līdz fiziskai mikroshēmai

Šo posmu bieži sauc par implementāciju, un to var dalīt vairākos soļos (dažkārt pārliecīgi pārklājošos):

  • Loģikas dizains — dizainēšana reģistru un loģisko bloku līmenī; parasti izmanto aparatūras apraksta valodas (HDL) kā Verilog vai VHDL;
  • Ķēžu dizains — vārtu, multipleksoru, flip‑flopu u. c. ķēžu izvēle un projektēšana; daļu komponentu (ALU, kešatmiņa) var optimizēt tranzistoru līmenī;
  • Fiziskā īstenošana — place & route, izkārtojuma zīmēšana mikroshēmā vai plates līmenī, vadu izvietošana, lai nodrošinātu signālu integritāti un laika prasības;
  • Sinteze un verificēšana — loģikas simulācija, formal verification, laika analīze (timing closure), kļūdu meklēšana un labošana;
  • Fabrication vs. prototipēšana — ASIC ražošana pret ātrāku prototipu izmantošanu uz FPGA (lai pārbaudītu mikroarhitektūru pirms dārgas ražošanas);
  • Testēšana un validācija — funkcionalitātes testi, veiktspējas mērījumi, termiskie testi un izturības pārbaudes ražošanas posmā.

Veiktspējas un dizaina kompromisi

Datoru arhitektūrā pastāv tipiski kompromisi:

  • veiktspēja pret enerģijas patēriņu (ātrāks dizains parasti patērē vairāk enerģijas),
  • kompleksitāte pret izmaksām (sarežģīta mikroarhitektūra palielina izstrādes un ražošanas izmaksas),
  • latence pret caurlaidspēju (piem., kešatmiņu dizains ietekmē abu parametru attiecību),
  • saderība pret optimizācijām (atpakaļsaderība ISA līmenī var ierobežot mikroarhitektūras iespējas).

Kā arhitektūras izvēles ietekmē programmatūru

ISA ļauj programmatūrai (kompilatoriem, operētājsistēmām, lietojumprogrammām) saprast aparatūras iespējas. Mikroarhitektūra nosaka, cik efektīvi konkrētas programmas darbosies — piemēram, cik labi tiek izmantota caurlaidspēja, cik bieži rodas cache miss vai cik bieži zars prognozes kļūst par veiktspējas robu. No arhitekta skatpunkta svarīgi ir arī nodrošināt rīku atbalstu (simulatori, debageri, profili), kas ļauj programmatūras izstrādātājiem optimizēt kodu.

Secinājums

Datoru arhitektūra aptver gan augstā līmeņa abstrakcijas (ISA), gan zemāka līmeņa realizācijas detaļas (mikroarhitektūra un aparatūras implementācija). Sapratne par šiem līmeņiem un to mijiedarbību ir būtiska, lai izstrādātu efektīvas, drošas un izmaksu ziņā pamatotas skaitļošanas sistēmas. Mūsdienu arhitektūras paplašinātas prasības — energoefektivitāte, drošība, paralēlisms un mērogojamība — padara arhitektūras lēmumus par centrālu faktoru datoru un iekārtu izstrādē.