Datora arhitektūra

**Datora arhitektūra** ir datorsistēmas konceptuālais modelis, tā darbības struktūra un resursi, kas pieejami programmētājam. Tā nosaka datora darbības principus, informatīvās saites un pamatmezglu savstarpējo saistību.

Datora arhitektūra tiek iedalīta vismaz trīs apakškategorijās:
* Instrukciju kopas arhitektūra ir datora abstraktais modelis no programmatūras (mašīnkoda) viedokļa, kas ietver instrukciju kopu, atmiņas adresēšanas veidus, procesora reģistrus un datu formātus.
* Mikroarhitektūra ir datorsistēmas organizācijas zemākais līmenis. Tā nosaka, kā konkrēta modeļa sistēmas daļas sadarbojas savā starpā saskaņā ar instrukciju kopas arhitektūru. 
* Sistēmas aparatūras modelis, kas ietver visas citas aparatūras komponentes datorsistēmā.

## Vēsture

Pirmo reizi datora arhitektūru dokumentēja Čārlzs Bebidžs un Ada Lovleisa savā sarakstē, aprakstot Analītisko mašīnu. 1936. gadā būvējot datoru Z1, Konrāds Cūze divos savos patent-projektu pieteikumos aprakstīja, ka mašīnas instrukcijas var glabāt tajā pašā atmiņā, ko izmanto datiem, t. i., uzglabāto programmu datora jēdziens. Divi citi agrīnie un svarīgie piemēri:
* Džona fon Neimana 1945. gada raksts, Pirmais EDVAC ziņojuma uzmetums, kurā aprakstīta loģisko elementu organizācija; un
*Alana Tjūringa detalizētais darbs *Ieteikumi elektroniskajam kalkulatoram* Automātiskās skaitļošanas ierīcei, arī rakstīts 1945. gadā, kurš citē Džona fon Neimana rakstu.

Termins “arhitektūra” literatūrā par datoreim ir saistīts ar IBM galvenā pētniecības centra Mašīnu organizācijas nodaļas locekļu Laila R. Džonsona un Frederika P. Brūksa, Jr. 1959. gadā paveikto darbu. Džonsonam bija iespēja uzrakstīt patentētu pētniecības darbu par Stretch, IBM izstrādātu superdatoru Los Alamos nacionālajai laboratorijai (tolaik saukta par Los Alamos zinātnisko laboratoriju). Lai aprakstītu grezni izrotātā datora detalizāciju, viņš norādīja, ka viņa sniegtais formātu, instrukciju tipu, aparatūras parametru un ātruma uzlabojumu apraksts ir "sistēmas arhitektūras" līmenī, un šis termins šķita lietderīgāks par "mašīnas organizāciju".

Pēc tam Brūkss, Stretch projektētājs, grāmatas *Datorsistēmas plānošana: Stretch projekts* 2. nodaļu iesāka ar vārdiem: “Datoru arhitektūra, kā cita veida arhitektūras, ir māksla noteikt struktūras lietotāja vajadzības un pēcāk projektēt tā, lai tās pēc iespējas efektīvāk apmierinātu, ievērojot ekonomiskos un tehnoloģiskos ierobežojumus.”

Brūkss turpināja palīdzēt attīstīt IBM System/360 (tagad to sauc par IBM zSeries) datoru līniju, kurā “arhitektūra” kļuva par lietvārdu, kas definē to, “kas lietotājam jāzina”. Vēlāk lietotāji sāka izmantot šo terminu daudzos mazāk skaidros veidos.

Agrīnās datoru arhitektūras tika izstrādātas uz papīra un pēc tam tieši iebūvētas galīgajā aparatūras formā. Vēlāk datora arhitektūras prototipi tika fiziski uzbūvēti tranzistora–tranzistora loģikas (TTL) datorformā, piemēram, 6800 prototipi un PA-RISC, kas tika testēti un uzlaboti, pirms tika nodoti galīgajai aparatūras formai. Kopš 20. gadsimta 90. gadiem jaunas datoru arhitektūras parasti "būvē", testē un pielāgo, kādas citas datora arhitektūras iekšpusē datora arhitektūras simulatorā, vai iekš FPGA, kā mīkstais mikroprocesors vai abējādi, pirms tiek pieņemts galīgais aparatūras variants.

## Termina "datoru arhitektūra" skaidrojumi
Dažādās ar datorzinībām saistītās publikācijās jēdzienam „datora arhitektūra” var atrast visdažādākos skaidrojumus un definīcijas.

Sākotnēji termins "datoru arhitektūra" radies *IBM*, kad *Amdahl*, *Blaauw* un *Brooks* (1964) definēja to kā programmētājam redzamo komandu kopu.

Tika uzskatīts, ka datori ar vienādu arhitektūru varēs izpildīt programmas bez izmaiņām tajās. Šī uzskata priekšrocības ir iespēja, precīzi definējot, realizēt arhitektūras dažādos veidos. Visas programmas, kas rakstītas vienādās komandu kopās ir iespējams izpildīt visās savietojamās realizācijās.

Mūsdienās jēdzienu "datoru arhitektūra" visbiežāk uztver kā *komandu kopas arhitektūra* + *organizācija*
*ISO (International Organization for Standardization)*:
Arhitektūru ISO definē, kā „datora loģisko struktūru un funkcionālo raksturojumu, ietverot aparatūras un programmatūras mijiedarbību” jeb oriģinālvalodā: - *the logical structure and functional characteristics of the computer, including, the interactions among its hardware and software*.

Kodolīgāku arhitektūras definīciju devusi organizācija, kas parasti standartus tieši izstrādā - *IEEE (Institute of Electrical and Electronics Engineers)*: - the organizational structure of a system or component - sistēmas vai tās komponentu organizācijas struktūra.

Eksistē arī daudzi citi skaidrojumi, kas sīkāk apraksta šo jēdzienu: arhitektūra atklāj kopīgo un atšķirīgo radniecīgu datoru saimes locekļiem, t.i., datora struktūru (loģiskos mezglus un to saites), modularitāti, izpildāmo instrukciju kopu, apstrādājamo datu veidus. Dažreiz to mazliet vienpusēji formulē kā to, ko nepieciešams zināt, programmējot asamblervalodā.
## Atsauces