Tietokonearkkitehtuuri - Computer architecture

Yksittäisen suorittimen sisältävän perustietokoneen lohkokaavio. Mustat viivat osoittavat datavirtaa, kun taas punaiset viivat osoittavat ohjausvirtaa. Nuolet osoittavat virtaussuunnan.

In Computer Engineering , atk arkkitehtuuri on joukko sääntöjä ja menetelmiä, jotka kuvaavat toimintoja, organisaatio ja täytäntöönpano atk -järjestelmät. Järjestelmän arkkitehtuuri viittaa sen rakenteeseen järjestelmän erikseen määriteltyjen komponenttien ja niiden keskinäisten suhteiden kannalta.

Jotkut arkkitehtuurin määritelmät määrittelevät sen kuvaavan tietokoneen ominaisuuksia ja ohjelmointimallia, mutta eivät tiettyä toteutusta. Muissa määritelmissä tietokonearkkitehtuuri sisältää käskyjoukon arkkitehtuurin suunnittelun, mikroarkkitehtuurin suunnittelun, logiikan suunnittelun ja toteutuksen .

Historia

Ensimmäinen dokumentoitu tietokonearkkitehtuuri oli Charles Babbagein ja Ada Lovelacen välisessä kirjeenvaihdossa , joka kuvaa analyyttistä moottoria . Rakennettaessa tietokonetta Z1 vuonna 1936 Konrad Zuse kuvasi tulevissa projekteissaan kahdessa patenttihakemuksessa, että konekäskyt voitaisiin tallentaa samaan tietovarastoon eli tallennettujen ohjelmien konseptiin. Kaksi muuta varhaista ja tärkeää esimerkkiä ovat:

Tietokonekirjallisuuden termi "arkkitehtuuri" voidaan jäljittää Lyle R.Johnsonin ja Frederick P.Brooksin, Jr. , IBM: n tärkeimmän tutkimuskeskuksen koneorganisaatio -osaston jäsenten työhön vuonna 1959. Johnsonilla oli tilaisuus kirjoittaa oma tutkimus viestinnästä vastaava Stretch , IBM kehittynyt supertietokone varten Los Alamos National Laboratory (tuolloin nimeltään Los Alamos Scientific Laboratory). Kuvatakseen yksityiskohtien tasoa ylellisesti koristeltuun tietokoneeseen, hän totesi, että hänen kuvauksensa muodoista, käskyjen tyypeistä, laitteistoparametreista ja nopeuden parannuksista olivat "järjestelmäarkkitehtuurin" tasolla, termi, joka vaikutti hyödyllisemmältä kuin "koneorganisaatio" ”.

Myöhemmin Stretch -suunnittelija Brooks avasi kirjan 2. luvun Tietokonejärjestelmän suunnittelu: Project Stretch -kirjan luvun 2 toteamalla: ”Tietokonearkkitehtuuri, kuten muu arkkitehtuuri, on taidetta määrittää rakenteen käyttäjän tarpeet ja suunnitella sitten vastaamaan näihin tarpeisiin mahdollisimman tehokkaasti taloudellisten ja teknisten rajoitteiden puitteissa. ”

Brooks auttoi kehittämään IBM System/360 (nykyään IBM zSeries ) -tietokoneita, joissa "arkkitehtuurista" tuli substantiivi, joka määrittelee "mitä käyttäjän tarvitsee tietää". Myöhemmin tietokoneen käyttäjät alkoivat käyttää termiä monilla vähemmän selkeillä tavoilla.

Varhaisimmat tietokonearkkitehtuurit suunniteltiin paperille ja sisällytettiin sitten suoraan lopulliseen laitteistoon. Myöhemmin tietokonearkkitehtuurin prototyypit rakennettiin fyysisesti transistori-transistorilogiikka (TTL) -tietokoneen muodossa, kuten 6800- ja PA-RISC- prototyypit , ja testattiin, ennen kuin he sitoutuivat lopulliseen laitteistomuotoon. 1990 -luvulta lähtien uusia tietokonearkkitehtuureja tyypillisesti "rakennetaan", testataan ja säädetään jonkin muun tietokoneen arkkitehtuurin sisällä tietokonearkkitehtuurisimulaattorissa ; tai FPGA: n sisällä pehmeänä mikroprosessorina ; tai molemmat - ennen lopullista laitteistolomaketta.

Alakategoriat

Tietokonearkkitehtuurin kurinalaisuudella on kolme pääluokkaa:

Tietokonearkkitehtuurissa on muitakin tekniikoita. Seuraavia tekniikoita käytetään suurissa yrityksissä, kuten Intel, ja niiden arvioitiin vuonna 2002 olevan 1% kaikista tietokonearkkitehtuureista:

  • Mikrokoodi : mikrokoodi on ohjelmisto, joka kääntää sirulle suoritettavat ohjeet. Se toimii laitteiston ympärillä kääreenä ja esittää laitteiston ohjejoukon käyttöliittymän ensisijaisen version. Tämä ohjeiden kääntämismahdollisuus antaa sirujen suunnittelijoille joustavia vaihtoehtoja: Esim. 1. Uusi sirun parannettu versio voi käyttää mikrokoodia esittämään täsmälleen saman käskysarjan kuin vanha siruversio, joten kaikki kyseiseen käskysarjaan kohdistuvat ohjelmistot toimivat uudella sirulla ilman kaipaa muutoksia. Esim. 2. Mikrokoodi voi esittää erilaisia ​​käskyjoukkoja samalle taustalla olevalle sirulle, jolloin se voi käyttää laajempaa ohjelmistoa.
  • UISA : Käyttäjä Instruction Set Architecture, viittaa yhteen kolmesta alaryhmiä RISC CPU antamien ohjeiden PowerPC RISC-prosessorit. UISA -osajoukko on niitä RISC -ohjeita, jotka kiinnostavat sovelluskehittäjiä. Kaksi muuta alaryhmää ovat virtualisointijärjestelmien kehittäjien käyttämät VEA (Virtual Environment Architecture) -ohjeet ja Operation System -kehittäjien käyttämät OEA (Operating Environment Architecture).
  • Nasta -arkkitehtuuri : Laitteisto -toiminnot, jotka mikroprosessorin tulee tarjota laitteistoalustalle, esim. X86 -nastat A20M, FERR/IGNNE tai FLUSH. Myös viestit, jotka prosessorin tulisi lähettää, jotta ulkoiset välimuistit voidaan mitätöidä (tyhjentää). Nasta -arkkitehtuuritoiminnot ovat joustavampia kuin ISA -toiminnot, koska ulkoinen laitteisto voi sopeutua uusiin koodauksiin tai muuttua nastasta viestiksi. Termi "arkkitehtuuri" sopii, koska toiminnot on toimitettava yhteensopiville järjestelmille, vaikka yksityiskohtainen menetelmä muuttuisi.

Roolit

Määritelmä

Tietokonearkkitehtuurin tarkoituksena on tasapainottaa tietokonejärjestelmän suorituskyky, tehokkuus, kustannukset ja luotettavuus. Opetusjoukkoarkkitehtuuria voidaan käyttää havainnollistamaan näiden kilpailevien tekijöiden tasapainoa. Monimutkaisemmat käskysarjat mahdollistavat ohjelmoijien kirjoittaa enemmän tilaa säästäviä ohjelmia, koska yksi käsky voi koodata jonkin korkeamman tason abstraktion (kuten x86-silmukkakäskyn). Kuitenkin pidemmät ja monimutkaisemmat ohjeet vievät enemmän aikaa prosessorin purkamiseen ja voivat olla kalliimpia toteuttaa tehokkaasti. Suuren käskyjoukon monimutkaisuus luo myös enemmän tilaa epäluotettavuudelle, kun ohjeet ovat vuorovaikutuksessa odottamattomilla tavoilla.

Toteutus sisältää integroidun piirin suunnittelun, pakkaamisen, tehon ja jäähdytyksen. Suunnittelun optimointi edellyttää perehtymistä kääntäjiin, käyttöjärjestelmiä logiikan suunnitteluun ja pakkaamiseen.

Ohjejoukon arkkitehtuuri

Käskyjoukon arkkitehtuuri (ISA) on tietokoneen ohjelmiston ja laitteiston välinen rajapinta, ja sitä voidaan pitää myös ohjelmoijan näkemyksenä koneesta. Tietokoneet eivät ymmärrä korkean tason ohjelmointikieliä , kuten Java, C ++ tai useimmat käytetyt ohjelmointikielet. Prosessori ymmärtää vain jotkin numeerisesti koodatut ohjeet, yleensä binäärilukuina . Ohjelmistotyökalut, kuten kääntäjät , kääntävät nämä korkean tason kielet ohjeiksi, joita prosessori voi ymmärtää.

Lisäksi ohjeet, ISA määritellään kohdetta tietokoneen, jotka ovat käytettävissä ohjelman-esimerkiksi, tietotyypit , rekisterit , osoitusmuotoja , ja muisti. Ohjeet löytävät nämä käytettävissä olevat kohteet rekisterihakemistoilla (tai nimillä) ja muistin osoitetiloilla.

Tietokoneen ISA kuvataan yleensä pienessä käyttöoppaassa, jossa kuvataan, miten ohjeet koodataan. Se voi myös määritellä ohjeille lyhyitä (epämääräisesti) mnemonisia nimiä. Nimet voidaan tunnistaa ohjelmistokehitystyökalulla, jota kutsutaan kokoonpanijaksi . Assembler on tietokoneohjelma, joka muuntaa ihmisen luettavan ISA-muodon tietokoneella luettavaksi. Purkimet ovat myös laajalti saatavilla, yleensä debuggereissa ja ohjelmistoissa, jotka eristävät ja korjaavat binaaristen tietokoneohjelmien toimintahäiriöt.

ISA: t vaihtelevat laadultaan ja täydellisyydeltään. Hyvä ISA vaarantaa ohjelmoijan mukavuuden (kuinka helppo koodi on ymmärtää), koodin koon (kuinka paljon koodia tarvitaan tietyn toiminnon suorittamiseen), tietokoneen kustannukset ohjeiden tulkitsemiseksi (monimutkaisempi tarkoittaa enemmän laitteistoa dekoodaa ja suorita ohjeet) ja tietokoneen nopeus (monimutkaisemman dekoodauslaitteiston kanssa dekoodausaika on pidempi). Muistiorganisaatio määrittelee, miten ohjeet ovat vuorovaikutuksessa muistin kanssa ja miten muisti on vuorovaikutuksessa itsensä kanssa.

Suunnittelun emuloinnin aikana emulaattorit voivat ajaa ohjelmia, jotka on kirjoitettu ehdotetulla käskysarjalla. Nykyaikaiset emulaattorit voivat mitata kokoa, kustannuksia ja nopeutta määrittääkseen, täyttääkö tietty ISA tavoitteensa.

Tietokoneorganisaatio

Tietokoneorganisaatio auttaa optimoimaan suorituskykyyn perustuvia tuotteita. Esimerkiksi ohjelmistosuunnittelijoiden on tiedettävä prosessorien prosessointiteho. Heidän on ehkä optimoitava ohjelmistoja saadakseen parhaan suorituskyvyn alhaisimmalla hinnalla. Tämä voi vaatia melko yksityiskohtaisen analyysin tietokoneen organisaatiosta. Esimerkiksi SD -kortilla suunnittelijoiden on ehkä järjestettävä kortti siten, että suurin osa tiedoista voidaan käsitellä nopeimmalla mahdollisella tavalla.

Tietokoneorganisaatio auttaa myös suunnittelemaan prosessorin valinnan tietylle projektille. Multimediaprojektit saattavat tarvita erittäin nopean pääsyn tietoihin, kun taas virtuaalikoneet voivat tarvita nopeita keskeytyksiä. Joskus tietyt tehtävät tarvitsevat myös lisäosia. Esimerkiksi tietokone, joka pystyy suorittamaan virtuaalikoneen, tarvitsee virtuaalimuistilaitteiston, jotta eri virtuaalitietokoneiden muisti voidaan pitää erillään. Tietokoneen organisaatio ja ominaisuudet vaikuttavat myös virrankulutukseen ja suorittimen hintaan.

Toteutus

Kun ohjesarja ja mikroarkkitehtuuri on suunniteltu, on kehitettävä käytännön kone. Tätä suunnitteluprosessia kutsutaan toteutukseksi . Toteutus ei yleensä pidetä arkkitehtonisen suunnittelun, vaan laitteiston suunnitteluajattelun . Toteutus voidaan jakaa useisiin vaiheisiin:

  • Logiikan toteutus suunnittelee tarvittavat piirit logiikkaporttitasolla .
  • Piirin toteutus tekee transistoritasoisia peruselementtejä (esim. Portit, multiplekserit , salvat ) sekä joitain suurempia lohkoja ( ALU: t , välimuistit jne.), Jotka voidaan toteuttaa logiikkaporttitasolla tai jopa fyysisellä tasolla jos malli sitä vaatii.
  • Fyysinen toteutus piirtää fyysisiä piirejä. Eri piirikomponenttien sijoitetaan siru pohjakuva tai levylle ja johtoja ne luodaan.
  • Suunnittelun validointi testaa tietokoneen kokonaisuudessaan nähdäkseen, toimiiko se kaikissa tilanteissa ja kaikissa ajoituksissa. Kun suunnittelun validointiprosessi alkaa, logiikan tason suunnittelu testataan käyttämällä logiikkaemulaattoreita. Tämä on kuitenkin yleensä liian hidasta realistisen testin suorittamiseksi. Ensimmäisen testin perusteella tehtyjen korjausten jälkeen prototyypit rakennetaan kenttäohjelmoitavilla porttisarjoilla ( FPGA ). Useimmat harrastusprojektit pysähtyvät tässä vaiheessa. Viimeinen vaihe on testata integroitujen piirien prototyyppejä, jotka voivat vaatia useita uudelleensuunnitelmia.

Varten suorittimet , koko prosessin täytäntöönpanoon on organisoitu eri tavalla ja on usein kutsutaan CPU suunnitteluun .

Suunnittele tavoitteita

Tietokonejärjestelmän tarkka muoto riippuu rajoituksista ja tavoitteista. Tietokonearkkitehtuurit yleensä sopivat standardeihin, tehoon verrattuna suorituskykyyn, hintaan, muistikapasiteettiin, latenssiin (latenssi on aika, joka kuluu, kun tiedot yhdestä solmusta kulkevat lähteeseen) ja suorituskyky. Joskus muut tekijät, kuten ominaisuudet, koko, paino, luotettavuus ja laajennettavuus, ovat myös tekijöitä.

Yleisin malli tekee perusteellisen tehon analyysin ja selvittää, kuinka pitää virrankulutus alhaisena ja samalla säilyttää riittävä suorituskyky.

Esitys

Nykyaikaisen tietokoneen suorituskyky on usein kuvattu ohjeet jaksoa kohti (IPC), joka mittaa tehokkuutta arkkitehtuurin tahansa kellotaajuudella; nopeampi IPC -nopeus tarkoittaa, että tietokone on nopeampi. Vanhempien tietokoneiden IPC -lukumäärä oli niinkin alhainen kuin 0,1, kun taas nykyaikaiset prosessorit saavuttavat helposti lähelle 1. Superskalaariset prosessorit voivat saavuttaa 3–5 IPC: tä suorittamalla useita ohjeita kellojaksoa kohden.

Konekielisten ohjeiden laskeminen olisi harhaanjohtavaa, koska ne voivat tehdä vaihtelevaa työtä eri ISA-laitteissa. Vakiomittausten "käsky" ei ole ISA: n konekielisten ohjeiden lukumäärä, vaan mittayksikkö, joka yleensä perustuu VAX- tietokonearkkitehtuurin nopeuteen .

Monet ihmiset mitasivat tietokoneen nopeuden kellotaajuudella (yleensä MHz tai GHz). Tämä viittaa CPU: n pääkellon jaksoihin sekunnissa. Tämä mittari on kuitenkin hieman harhaanjohtava, koska koneella, jolla on korkeampi kellotaajuus, ei välttämättä ole parempaa suorituskykyä. Tämän seurauksena valmistajat ovat siirtyneet pois kellonopeudesta suorituskyvyn mittana.

Muut tekijät vaikuttavat nopeuteen, kuten toiminnallisten yksiköiden yhdistelmä , väylän nopeudet, käytettävissä oleva muisti ja ohjelmien ohjeiden tyyppi ja järjestys.

Nopeutta on kahta päätyyppiä: latenssi ja suorituskyky. Latenssi on aika prosessin alkamisen ja sen päättymisen välillä. Suorituskyky on työyksikköä kohti tehty työmäärä. Keskeytysviive on järjestelmän taattu enimmäisvasteaika elektroniseen tapahtumaan (kuten silloin, kun levyasema lopettaa jonkin tiedon siirtämisen).

Suorituskykyyn vaikuttaa hyvin laaja valikoima suunnitteluvaihtoehtoja - esimerkiksi prosessorin putkijohtaminen yleensä pahentaa latenssia, mutta parantaa suorituskykyä. Tietokoneet, jotka ohjaavat koneita, tarvitsevat yleensä pieniä keskeytysviiveitä. Nämä tietokoneet toimivat reaaliaikaisessa ympäristössä ja epäonnistuvat, jos toimintoa ei suoriteta loppuun tietyssä ajassa. Esimerkiksi tietokoneohjattujen lukkiutumattomien jarrujen on aloitettava jarrutus ennustettavissa olevan ja rajoitetun ajan kuluessa jarrupolkimen havaitsemisen jälkeen tai muuten jarru vioittuu.

Benchmarking ottaa kaikki nämä tekijät huomioon mittaamalla ajan, joka tietokoneella kuluu useiden testiohjelmien suorittamiseen. Vaikka vertailuanalyysi osoittaa vahvuuksia, sen ei pitäisi olla tapa valita tietokone. Usein mitatut koneet jakautuvat eri mitoilla. Esimerkiksi yksi järjestelmä voi käsitellä tieteellisiä sovelluksia nopeasti, kun taas toinen saattaa renderoida videopelejä tasaisemmin. Lisäksi suunnittelijat voivat kohdistaa ja lisätä tuotteisiinsa erityisominaisuuksia laitteiston tai ohjelmiston avulla, jotka mahdollistavat tietyn vertailuarvon suorittamisen nopeasti, mutta eivät tarjoa samanlaisia ​​etuja yleisiin tehtäviin.

Virrankulutus

Virtatehokkuus on toinen tärkeä mitta nykyaikaisissa tietokoneissa. Suurempi energiatehokkuus voidaan usein vaihtaa pienempään nopeuteen tai korkeampaan hintaan. Tyypillinen mittaus, kun viitataan tietokoneen arkkitehtuurin virrankulutukseen, on MIPS/W (miljoonia ohjeita sekunnissa/wattia).

Nykyaikaisilla piireillä tarvitaan vähemmän virtaa transistoria kohden, kun transistorien määrä sirua kohti kasvaa. Tämä johtuu siitä, että jokainen transistori, joka asetetaan uuteen siruun, vaatii oman virtalähteen ja vaatii uusien reittien rakentamista sen syöttämiseksi. Kuitenkin transistorien määrä sirua kohti alkaa kasvaa hitaammin. Siksi virrankäytön tehokkuudesta on alkanut tulla yhtä tärkeää, ellei jopa tärkeämpää kuin yhä useamman transistorin sovittaminen yhteen siruun. Viimeaikaiset prosessorisuunnittelut ovat osoittaneet tämän korostuksen, koska niissä keskitytään enemmän virrankäytön tehokkuuteen sen sijaan, että ne saisivat mahdollisimman monta transistoria yhteen siruun. Sisäisten tietokoneiden maailmassa virrankäytön tehokkuus on pitkään ollut tärkeä tavoite läpäisyn ja latenssin ohella.

Markkinoiden kysynnän muutokset

Kellotaajuuden nousu on kasvanut hitaammin viime vuosina verrattuna tehonvähennysparannuksiin. Tämä on johtunut Mooren lain päättymisestä ja tarpeesta pidentää akun käyttöikää ja pienentää mobiilitekniikan kokoa. Tämä muutos keskittymisessä korkeammista kellotaajuuksista virrankulutukseen ja pienentämiseen voidaan osoittaa merkittävällä, jopa 50%: n vähennyksellä virrankulutuksessa, joista Intel ilmoitti julkaistessaan Haswell -mikroarkkitehtuurin ; jossa he laskivat energiankulutuksen vertailuarvon 30: stä 40 wattiin 10-20 wattiin. Vertaamalla tätä prosessointinopeuden kasvuun 3 GHz - 4 GHz (2002-2006) voidaan nähdä, että tutkimuksen ja kehityksen painopiste siirtyy pois kellotaajuudesta ja siirtyy kohti vähemmän virtaa ja vie vähemmän tilaa.

Katso myös

Viitteet

Lähteet

Ulkoiset linkit