Örgjörvi

**Örgjörvi** er samrás sem geymir miðverk tölvu (nú orðið er örgjörvi eiginlega samheiti yfir miðverk, og aðeins fyrrnefnda orðið notað yfir það, og það jafnvel bara stytt niður í gjörvi, því ör- forskeytið á sér sögulegar rætur og á alltaf við núna). Hugtakið örgjörvi á oftast við eina kísilflögu sem situr á móðurborði, en hugtakið gjörvi er notað um fleiri en eina einingu sem sinna sama verki.

Örgjörvi framkvæmir forritaðar skipanir sem geta snúist um að framkvæma reikniaðgerðir eða samskipti við jaðartæki og minni.

Örgjörva er ekki bara að finna í nútíma farsímum og öðrum forritanlegum tölvum, heldur líka í reiknivélum, og í nánast öllum rafeindatækjum (þ.e. þeim með tölvustýringu), eins og t.d. bifreiðum (öllum nema mjög gömlum), hraðamælum (fyrir t.d. hjól), nútíma sjónvörpum (t.d. e. smart TV), geislaspilurum, myndbandstækjum, örbylgjuofnum, flestum þvottavélum og vélmennum (þjörkum).

## Klukkun örgjörva
Einn þekktasti eiginleiki örgjörva er klukkutíðni og er það einn sá eiginleiki sem fólk lítur helst á við kaup á einkatölvu. Klukkutíðni örgjörva er mæld í riðum (táknað Hz, e. hertz, en núorðið oftast mælt í GHz, gígaherts, eða gígarið). Árið 2006 var klukkutíðni í nýjum einkatölvum oftast á bilinu eitt til fjögur gígarið, núorðið jafnvel upp í fimm, og sjaldan undir þremur í keyrslu, ekki einu sinni fyrir farsíma, en mörg raftæki fara aldrei yfir 200 kHz, og tölvur geta líka farið lágt í hvíld, og jafnvel alveg í svefn þegar slökkt er á klukku.

Rafrásir örgjörvans innihalda m.a. rásaeiningar sem kallast vippur (e. *flip flops*). Þegar vippur eru klukkaðar (þ.e. stjórnað af rafmerki sem kallast klukkupúlsar) finnast ýmis gagnleg not fyrir þær sem notuð eru í örgjörvum. Eftir því sem örgjörvinn er klukkaður hraðar því fljótari er hann að framkvæma skipanirnar. Það sem kemur í veg fyrir að hægt sé að auka klukkuhraða upp úr öllu valdi er að erfitt er að framkalla nægilega nákvæman óbjagaðan klukkupúls og láta öll innri merki hans ná að halda skýru gildi sem er annaðhvort af eða á (núll eða einn). Örgjörvi hitnar einnig meira eftir því sem hann er klukkaður hraðar. Það er vegna þess að aðalbyggingareining hans er svokallaður CMOS smári sem hitnar hraðar við aukna klukkutíðni (CMOS notar mjög litla orku þegar hann heldur óbreyttri stöðu en notar fast magn af orku við að skipta um stöðu og sú orka umbreytist einmitt í varmaorku). Yfirleitt er ofhitnun örgjörva ráðandi þáttur í að ekki sé hægt að klukka örgjörva hraðar og hafa áhugamenn yfirklukkað tölvunar sínar annað hvort í stuttan tíma eða með kælibúnaði (gjarnan frumlegum og framandlegum) og þannig fengið tölvur sínar til að vinna örlítið hraðar.

## Helstu einingar örgjörva
Gisti (e. *[[:en:processor register|register]]*) eru mjög hraðvirk minnishólf sem oftast geyma eitt orð hvert. Gistin eru notuð til að geyma ýmis gildi á meðan örgjörvinn er að vinna með þau. Sum gisti gegna ákveðnu hlutverki (e. *special-purpose register*), sem forritari hefur engan beinan aðgang að, eða getur alla vega ekki notað í almenna útreikninga, og önnur eru eru til „almennra nota“ og getur forritari sem forritar á smalamáli (e. *[[:en:assembly language|assembly language]]*) fengið beinan aðgang að þeim og getur notað þau í hvað sem honum dettur í hug (e. *[[:en:general-purpose register|General-Purpose Register]]*; GPR, oftast bara kallað register). GPR er þó oftast aðeins fyrir heiltölur, og hefðbundið eru sér gisti fyrir kommutölur (þó eru þó ekki special-purpose registers í framangreinda skilningnum, þó vel megi rökstyðja það; stundum eru gistunum fyrir heiltölur líka skipt eftir hlutverkum t.d. fyrir address og data, en frekar í öreldum örgjörvum; eða t.d. CX fyrir count register, en í nýrri örgjörvum er CX ekki bara fyrir teljara). Dæmi um gisti með ákveðið hlutverk eru forritsteljari (e. *[[:en:program counter|Program Counter]]*; PC) sem inniheldur vistfang næstu skipunar, skipanagisti (e. *[[:en:instruction register|Instruction Register]]*; IR) sem inniheldur skipanakóða (e. *[[:en:opcode|opcode]]*) skipunarinnar sem verið er að framkvæma, *[[:en:memory data register|Memory Data Register]]* (MDR) sem inniheldur gagnaorð sem verið er að flytja í eða úr minni og *[[:en:memory address register|Memory Address Register]]* (MAR) sem inniheldur vistfang sem á að lesa úr minni eða minnisvistfang sem á að skrifa í.

Reikniverk (e. *ALU*; *[[:en:arithmetic logic unit|Arithmetic Logic Unit]]*) eru stafrænar rásir sem geta framkvæmt reikniaðgerðir eins og t.d. samlagningu, frádrátt, hliðrun og rökaðgerðir eins og EKKI (skilar andstæðu þess sem það fær), OG/EÐA (annað eða bæði—einig kallað EÐA—skilar jákvæðu eða sanni ef það fær e–r sannindi), EÐA (þ.e. EKKI OG/EÐA; skilar sannindum ef reikniverkið fær mismun), NÉ (þ.e. OG/EÐA EKKI skilar sannindum ef reikniverkið fær einungis ósannindi) og OG (þ.e. EKKI OG/EÐA EKKI, EKKI NÉ eða EÐA EKKI; skilar einungis ósannindum ef rökaðgerðin fær ósannindi (e. *[[:en:negation|NOT]]*, *[[:en:logical disjunction|OR]]*, *[[:en:exclusive or|XOR]]*, *[[:en:logical conjunction|AND]]*, *[[:en:NOR logic|NOR]]*, *[[:en:NAND gate|NAND]]*). Allar rökaðgerðirnar taka við tveim kostum (e. *input*) nema EKKI (e. *[[:en:NOT gate|NOT]]*) – sem tekur bara við einum og er hægt að mynda þær allar með grunnaðgerðunum tveim: EKKI (e. *NOT*) og OG/EÐA (e. *OR*). 

Braut (e. *bus*) er flutningsleið milli eininga örgjörvans. Ef leggja á saman gildi í gistum eða flytja gildi milli gista þá eru brautir sú flutningsleið sem er notuð til að færa gildi milli gistanna og reikniverksins þar sem samlagnin er framkvæmd. Algengt er að örgjörvar hafi fleiri en eina braut og sinna þær oft mismunandi hlutverkum, t.d. flytja sumar brautir bara vistföng, aðrar flytja gildi einungis ákveðnar leiðir (t.d. tildæmis flytja sumar einungis frá gistum (e. *[[:en:general-purpose register|general-purpose registers]]*) til reikniverks meðan aðrar flytja frá reikniverki til gista).

Skipana afkóðari er stundum hluti af stýrieiningu. Skipana afkóðarinn afkóðar skipanakóðann og færir niðurstöðuna til stýrieingarinnar.

Stýrieining (e. *[[:en:control unit|Control Unit]]*), Stýrieiningin framkallar stýrimerki sem stjórna framkvæmd hverrar skipanar. Flest stýrimerki eiga sér sér línu sem er annaðhvort kveikt á eða slökkt á. Dæmi um stýrimerki geta t.d. verið: merki sem lætur gildi gistis út á braut, merki sem lætur gisti taka gildið sem er á braut og merki sem lætur reikniverkið leggja saman og skila niðurstöðunni í ákveðið gisti.

Ílags- og frálagseining (e. *[[:en:I/O device|I/O device]]*; I/O = *input/output*). Sér um samskipti við jaðartæki eins og t.d. prentara, skjá, lyklaborð, mýs.

Skyndiminni (e. *cache*) geyma gildi úr aðalminni sem mikið eru notuð og er einskonar speglun á hluta þess. Aðgangur að skyndiminni er margfalt hraðari (færri klukkupúlsar til að ná í gögn, jafnvel einn ef í L1) heldur en að aðalminni. Allir gjörvar hafa aðgang að aðalminni, og stundum er það á sér kísilflögu límt ofaná örgjörvann, í raun gerir það að einni heild, og þá er aðalminnið yfirleitt ekki stækkanlegt, en skyndiminnið er alltaf á sömu flögu og örgjörvinn og því hraðara (L1 eða *level 1 cache*), L2 eða *level 2 cache*, er hægara en stærra og er líka yfirleitt á sömu flögu. Flestir örgjörvar hafa bæði, og margir líka L3, því hærra level því hægari, en þó alltaf hraðari en aðalminnið, sem því hjálpar alltaf upp á hraða. L3 er orðið mjög algengt (jafnvel líka L4 þó er það sjaldgæft), og L2 nánast regla. L4 er yfirleitt ekki á sömu flögu, og það þá stundum við um last-level-cache, sem er L3 eða L4. Sögulega séð var L1 ekki einu sinni á flögunni, ef það var þá til staðar, og þá ekki möguleiki á L2.

## Afköst örgjörva
Afköst örgjörva eru gjarnan mæld með svokölluðum SPEC prófum. SPEC er stofnun sem er ekki er rekin í hagaðarskini sem sér um að framkvæma prófin. Prófin ganga út á það að láta örgörva keyra sér valin forrit og bera tíman sem það tekur saman við tíman sem það tekur valda viðmiðunarvél að keyra sama forrit.

Klukkutíðni er ekki eini þátturinn sem ræður afkastagetu örgjörva heldur má setja fram eftir farandi jöfnu fyrir henni:
t = {n \cdot s \over r} þar sem *t* er tíminn sem það tekur örgjörva (ásamt aðalminni og e.t.v. fleiri einingum) að keyra eitthvert tiltekið forrit. *n* er fjöldi skipana í forritinu, *s* er fjöldi klukkupúlsa sem það tekur að meðaltali að framkvæma hverja skipun í forritinu. *r* er klukkutíðni örgjörvans. Auðvelt er að sjá að ekki bara klukkutíðnin; *r* hefur áhrif á afkastagetu örgjörvans heldur einnig fjöldi skipana sem þarf að framkvæma; *n* og fjöldi klukkupúlsar sem það þarf til að framkvæma hverja skipun; *s*. Til að minnka *s* er algengt að notuð sé pípun (e. *piping*, *pipelining*), þá er byrjað að keyra skipun áður en að búið er að keyra skipunina á undan. Til að keyra skipun þarf fyrst að ná í hana (e. *fetch*) síðan afkóða hana (e. *decode*), og að lokum framkvæma hana (e. *execute*). Þessi þrjú stig eru unnin af mismunandi hlutum örgjörvans og geta allar einingarnar verið meðhöndlað mismunandi skipanir samtímis (oft þarf þó fleiri einingar eins og t.d. fleiri brautir til þess að það sé hægt). Pípun getur látið *s* (meðal klukkupúlsafjöldi per skipun í forriti) stefna á 1. Hægt er að notast við superscalar arkítektúr sem þýðir að fleiri en ein skipun á sama pípustigi (e. *pipestage*); m.ö.o. er hægt að ljúka keyrslu fleiri en einnar skipunar á sama klukkupúlsi, þ.a. hægt er að ná *s* niður fyrir 1. Notkun skyndiminnis (e. *cache*) getur stytt allverulega sóknartíma í minni og þannig sem gerir einnig kleift að halda *s* sem lægstu. Að minnka *n* (fjöldi skipana í forriti) er oftast í höndum þýðandans (e. *compiler*, hugbúnaður sem breyrir forritskóða af hærra stigs forritunarmáli (e. *higher level programing language*) í skipanir á vélamáli), einnig getur forritari haft áhrif á það (sérstaklega ef hann forritar á smalamáli en smalamál krefst ekki þýðanda). Einnig eru CISC (e. *complex instrucion set computer*) með oftast með lærra *n* þar sem þeir hafa stærra skipana sett (einnig kallað skipana mengi) og sérhæfðari skipanir en aftur á móti hafa CISC örgjörvar oftast hærra s, þar sem erfiðara er að pípa þá og hanna superscalar CISC gjörva auk þess sem þeir eru oftast með svokallaða örforritaða stýriseiningu (e. *microprogrammed control unit*) meðan RISC (e. *reduced instruction set computer*) örgjörvi hefur t.d oftastsvokallaða harðvíraða (e. *hardwired*) stýriseiningu sem er erfiðari að hanna (sérstaklega fyrir stórt og flókið skipanasett) en er hraðvirkari. RISC örgjörvar ná meiri afkastagetu því að þó að þeir hafi hærri *n* því að reynslan er sú að flóknu skipanirnar í CISC örgjörvans (sem RISC örgjörvinn hefur ekki og þarf því að keyra nokkrar skipanir til að vinna sama verk), eru ekkert rosalega tíðar í flestum forritum sem tölva þarf að framkvæma, þess fyrir utan má oftast klukka RISC örgjörva hraðar. Það ber að taka fram að til eru örgjörvar sem eru hannaðir til að sinna ákveðnum sérhæfðum hlutverkum og eru þá hannaðir með skipanasett í samræmi það og CISC örgjörvar geta verið fljótari að vinna sum sérhæfð verkefni.

## Helstu framleiðendur og hönnuðir örgjörva

* AMD
Hanna örgjörva með nánast samskonar skipanasetti og x86 örgjörvar frá Intel, nema AMD endurbætti. AMD framleiddu sína örgjörva áður, en seldu síðar eigin verksmiðjur (eins og flest fyrirtæki í bransanum hafa gert), en hanna enn nýjar útgáfur af örgjörvum (og láta aðra framleiða þá í sínu nafni) og eru enn í harðri samkeppni við Intel. AMD er líka stór skjákortaframleiðandi, og skjákort frá þeim hafa keppt við Nvidia, en ofurtölvur frá báðum aðilum hafa komist á top top500 listans, og þá að miklu leiti af því að skjákort eru líka notuð í útreikninga en ekki bara örgjörvar (CPU).
* IBM
Hafa hannað fullt af örgjörvum og voru stærstir og leiðandi framan af, og framleiddu líka örgjörva. Hönnuðu POWER örgjörva seríuna (hér einu sinni PowerPC, þær útgáfur í samstarfi við Motorola), hanna enn nýja örgjörva í seríunni, og líka eigin örgjörva í stórtölvur, núna kallað z/Architecture, en láta aðra framleiða kubbana, í þeim tveimur eftirlifandi seríum af kubbum þeirra.
* Intel
Einn helstu örgjörvaframleiðandi fyrir einkatölvur frá og með 9. áratugnum, eitt af fáum fyrirtækjum eftir sem á sínar eigin verksmiðjur, en Intel hefur þó líka farið út í að láta aðra framleiða kubba fyrir sig. Hönnuðu og framleiddu x86 línuna sem m.a. Pentium örgjörvar tilheyra. Þannig örgjörvar og aðrir samhæfðir, t.d. frá AMD, keyra DOS og Windows stýrikerfin. Nýlegt flaggskip Intel var Quad Core örgjörvinn sem keyrir bæði Windows og var líka notað fyrir macOS stýrikerfi (áður en Apple skipti yfir í Arm örgjörva). Í seinni tíð er Intel líka skjákortaframleiðandi, og upphaflega framleiddi Intel eingöngu minni, en gerir ekki lengur.
* Motorola
Hönnuðu og framleiddu örgjörva í Apple tölvur (og fleiri tölvur) fram til ársins 2006. Framleiddu 68k línuna (líka notuð í t.d. Amiga og sumar Atari tölvur) og síðar PowerPC í samstarfi við IBM. Er nú komið út af örgjörvamarkaðinum og er nú eitt af mörgum sem framleiðir farsíma, og var eitt einu sinni leiðandi á því sviðið, en ekki lengur.

Einnig má nefna fleiri eins og t.d. Samsung (á eigin verksmiðjur), Toshiba, Texas Instruments, Microchip (sem selur PIC örgjörva) og Siemens. Og Arm hannar örgjörva (en aðrir framleiða fyrir), og t.d. notar Apple þannig gerð.

## Heimildir
* 
* Hamacher, Vranesic og Zaky - Computer Organisation

## Ytri tenglar
*