Prosessorit sisältä. Prosessorit sisältä Tietokoneen emolevyn suunnittelu

Tällä hetkellä yleisten mikroprosessorien päämarkkinaosuus on 32- ja 64-bittisten mikroprosessorien vallassa. Tässä luvussa kuvataan Intelin 32-bittiset mikroprosessorit, jotka muodostavat IA-32- (Intel Architecture-32) -perheen. Tämä arkkitehtuuri muodostaa perustan Intelin 64-bittiselle x86-64-arkkitehtuurille ja AMD:n AMD-64-arkkitehtuurille.

2.1 Rekisterien kokoonpano ja toiminnot

Rekisterit kutsutaan nopeaksi muistiksi, joka sijaitsee CPU:n sisällä ja on suunniteltu tietojen online-tallennukseen ja nopeaan pääsyyn niihin prosessorin sisäisistä komponenteista. Esimerkiksi optimoitaessa ohjelmasilmukoita nopeuden suhteen, silmukan sisällä käytettävät muuttujat sijaitsevat prosessorin rekistereissä, eivät muistissa. Kaikkien tällaisten rekisterien kokonaisuutta kutsutaan joskus scratchpad-muistiksi (CoRAM).

2.1.1 Perusrekisterit

Kuva 2.1 esittää päärekisterien rakenteen ja heidän nimensä. Rekisterejä on 8 kappaletta yleinen tarkoitus(RON), 6 segmenttirekisteriä, lippurekisteri, käskyosoitinrekisteri sekä järjestelmärekisterit, virheenkorjaus- ja testirekisterit.

Yleiskäyttöiset rekisterit (RON). Näitä rekistereitä käytetään pääasiassa aritmeettisten operaatioiden suorittamiseen ja tiedonsiirtoon. Jokaiseen RON:iin voidaan päästä 32-bittisenä rekisterinä tai 16-bittisenä rekisterinä. Jotkut rekisterit ovat käytettävissä 8-bittisinä. Esimerkiksi EAX-rekisteri on 32-bittinen, mutta sen alempia 16 bittiä kutsutaan AX-rekisteriksi. AX-rekisterin ylempiä 8 bittiä kutsutaan nimellä AH ja alempaa 8 bittiä kutsutaan nimellä AL. Indeksirekisterien ja osoitinrekisterien 16-bittisiä osia käytetään yleensä vain kirjoitettaessa ohjelmia todelliseen osoitemoodiin, ts. MS-DOS:lle tai sen emuloinnille Windowsissa.

Rekisterin nimilyhenteiden merkitys:

Rekisterinimien alussa oleva E-etuliite laajenee.

Postiliite X rekisterin nimien lopussa tarkoittaa varsinaista rekisteriä.

AX - Akku (käyttö).

BX - Perusrekisteri (perusrekisteri).

CX - Laskuri (laskuri).

DX - Data (data).

AL - Akku matala (AX-rekisterin alapuoli).

AH - Akku korkea (AX-rekisterin korkeampi puolisko).

BL - Base low (alempi puolisko BX-rekisteristä).

BH - Peruskorkeus (BX-rekisterin korkeampi puolisko).

CL - Counter low (alempi puolisko CX-rekisteristä).

CH - Counter high (ylempi puolikas CX-rekisteristä).

DL - Data alhainen (DX-rekisterin alapuoli).

DH - Data korkea (korkea puoli DX-rekisteristä).

SI - Lähdeindeksi (lähdeindeksi). Sisältää nykyisen lähdeosoitteen.

DI - Destination index (vastaanottajaindeksi). Sisältää vastaanottajan nykyisen osoitteen.

BP - Perusosoitin (perusosoitin). Pinon sisällä olevien tietojen satunnaiseen käyttöön

SP - Pinoosoitin (pinoosoitin). Sisältää pinon yläosoittimen.

CS - Koodisegmentti (koodisegmentti).

DS - Datasegmentti (datasegmentti).

ES - Extra Data -segmentti (lisätietosegmentti).

FS - Extended Data -segmentti (lisätietosegmentti).

GS - Extended Data -segmentti (lisätietosegmentti).

SS - Pinosegmentti (pinosegmentti).

IP - Ohjeosoitin (käskyosoitin tai käskylaskuri).

F - Liput (lippurekisteri).

GDTR - Maailmanlaajuinen kuvaajataulukkorekisteri (yleisen kuvaajataulukon rekisteri).

IDTR - Keskeytyskuvaustaulukkorekisteri (keskeytyskuvaustaulukkorekisteri).

TR - Tehtävärekisteri (tehtävärekisteri).

LDTR - Local descriptor table register (paikallinen deskriptoritaulukkorekisteri).

DR - Debug register (debug register).

TR - Testirekisteri (testirekisteri).

CR - Ohjausrekisteri (ohjausrekisteri).

Rekisterien käytön ominaisuudet. Kun prosessori suorittaa käskyjä, joillakin yleiskäyttöisillä rekistereillä on erityinen tarkoitus.

    EAX-rekisterin sisältöä käytetään automaattisesti suoritettaessa kerto- ja jakokäskyjä. Koska tämä rekisteri liittyy yleensä aritmeettisten käskyjen suorittamiseen, sitä kutsutaan usein nimellä laajennettu akkurekisteri (laajennettu akku).

    Prosessori käyttää automaattisesti ECX-rekisteriä jaksolaskurina.

    ESP-rekisteri käyttää pinoon tallennettuja tietoja. Pino on järjestelmän muistialue, johon päästään FILO-periaatteen (First input - last output) "ensimmäinen kirjoitus, viimeinen luku" mukaisesti. Tätä rekisteriä ei yleensä koskaan käytetä normaalien aritmeettisten ja tiedonsiirtokäskyjen suorittamiseen. Sen usein jota kutsutaan laajennetuksi pinon osoitinrekisteriksi (laajennettu pino osoitin). ESP-rekisteri osoittaa pinon yläosan osoitteeseen (osoite, johon PUSH-komento työntää seuraavan muuttujan).

    ESI- ja EDI-rekistereitä käytetään yleisesti nopeisiin tiedonsiirtokomentoihin muistipaikasta toiseen. Siksi niitä joskus kutsutaan laajennetut lähdeindeksirekisterit Ja vastaanottaja tiedot (laajennettu lähde indeksi Ja laajennettu määränpäähän indeksi). ESI-rekisteri on lähdeosoite ja sisältää "Move block" -operaation tietolohkon alun osoitteen (täysi osoite DS:ESI) ja EDI-rekisteri on kohdeosoite (täysi osoite ES:EDI).

    Korkean tason kielenkääntäjät käyttävät yleisesti EBP-rekisteriä viittaamaan toimintoparametreihin ja pinoon allokoituihin paikallisiin muuttujiin. Sitä ei tule käyttää tavallisten aritmeettisten operaatioiden suorittamiseen tai tietojen siirtämiseen, paitsi jos kokeneet ohjelmoijat käyttävät erityisiä ohjelmointitekniikoita. Sitä kutsutaan usein laajennetuksi tapaukseksi pino kehyksen osoitin (laajennettu kehys osoitin). EUR-rekisteri sisältää osoitteen, josta tietoa työnnetään tai pomppataan pinoon (tai pinon "syvyyden"). Toimintoparametreilla on positiivinen muutos suhteessa EBP:hen, paikallisilla muuttujilla on negatiivinen muutos, ja tämän muistipaikan täydellinen osoite on tallennettu SS:EBP-rekisteripariin.

    EIP-rekisteri tallentaa käskyosoitteen offsetin. Seuraavan suoritettavan käskyn täydellinen osoite on tallennettu CS:EIP-rekisteripariin.

    Rekisterit ESP, EBP, ESI, EDI tallentavat dataosoitteen siirtymän.

segmenttirekisterit. Näitä rekistereitä käytetään perusrekistereinä käytettäessä RAM:n ennalta varattuja alueita, joita kutsutaan segmenttejä. Segmenttejä ja vastaavasti segmenttirekistereitä on kolmenlaisia:

    koodi (CS), ne tallentavat vain prosessorikomennot, ts. ohjelman konekoodi;

    data (DS, ES, FS ja GS), ne tallentavat muistialueita, jotka on varattu ohjelmamuuttujille ja datalle;

    pino (SS), ne tallentavat järjestelmämuistialueen nimeltä pino, jossa ohjelman paikalliset (väliaikaiset) muuttujat ja funktioille niitä kutsuttaessa välitetyt parametrit jaetaan.

Segmenttirekisterit ladataan segmenttivalitsimilla, jotka ovat siirtymiä joko globaaliin kuvaajataulukkoon (GDT) tai paikalliseen kuvaajataulukkoon (LDT).

Segmenttirekisteribitit sisältävät seuraavat tiedot:

0 - 1. RPL – vaadittu etuoikeustaso. Pyydetty käyttöoikeustaso.

2. TI - Taulukon ilmaisin. Indikaattoritaulukon bitti. Kertoo prosessorille, mistä etsittävä valitsin. Jos bitti on asetettu, prosessori lukee valitsimen paikallisesta kuvaajataulukosta. Jos bitti on selvä, prosessori lukee valitsimen globaalista kuvaajataulukosta.

3 - 15. Nämä bitit tallentavat globaalin tai paikallisen kuvaajataulukon indeksin.

CS-rekisteri on liian pieni koodisegmentille, joten se on asetettava suoritettavaan segmenttiin. SS-rekisteri on liian pieni pinosegmentin säilyttämiseen, joten se on asetettava kirjoitettavaksi datasegmentiksi.

CS-segmenttirekisteriin asetettu käyttöoikeustaso on käynnissä olevan ohjelman käyttöoikeustaso, ja sitä kutsutaan nykyiseksi käyttöoikeustasoksi (CPL). Segmenttirekisterit DS, ES, FS, GS ovat dataa varten ja ne on asetettava datasegmentille, jolla on kirjoitusoikeus. Jokaisen valitsimen vaatimien käyttöoikeustasojen on oltava suurempia kuin nykyinen CPL-käyttöoikeustaso.

Varjokuvaajarekisterit liittyvät kuhunkin kuudesta segmenttirekisteristä. Segmentin 32-bittinen perusosoite, 20-bittinen raja ja attribuutit (oikeudet) deskriptoritaulukoista kirjoitetaan varjorekistereihin suojatussa tilassa.

Ohjeiden osoitinrekisteri. EIP-rekisteri tallentaa siirtymän suhteessa seuraavan suoritettavan käskyn ohjelman alkuun (offset). Prosessorissa on useita ohjeita, jotka vaikuttavat tämän rekisterin sisältöön. EIP-rekisteriin tallennetun osoitteen muuttaminen siirtää ohjauksen uuteen ohjelman osaan.

Lippurekisteri EF (EFLAGZ) . Tämän rekisterin bittejä kutsutaan lipuiksi, ja ne vastaavat joko joidenkin CPU-käskyjen suorittamisen erityispiirteistä tai heijastavat ALU:n suorittamien komentojen tulosta. Rekisterin liput on lueteltu taulukossa 2.1. Bitit 22-31 on varattu.

Taulukko 2.1 Lippurekisteri

Tämän rekisterin bittien analysoimiseksi annetaan erityiset prosessoriohjeet. He sanovat lippu asennettu, kun lippubitti on 1, ja että lippu pudonnut, Kun sen bittiarvo on 0. Lisäksi laajennettu EF-rekisteri sisältää viisi uutta lippua F-rekisteriin verrattuna.

Ohjausliput. Ohjelmoija voi muuttaa ohjauslippuja vastaavien EFLAGS-rekisterin bittien tilaa erityisillä prosessorikomennoilla. Nämä liput (DF, IF, TF) ohjaavat joidenkin CPU-käskyjen suorittamista:

8. TF - Trap lippu. Jäljityslippu (vaihetila). Kun se on asetettu (TF=1), jokaisen käskyn suorittamisen jälkeen kutsutaan sisäinen keskeytys INT 1, joka pysäyttää laskentaprosessin ja mahdollistaa rekisterien sisällön tarkistamisen.

9.IF - Keskeytys-aktivointilippu. Keskeytysaktivointimerkki. Kun IF=1, peitetyt laitteistokeskeytykset ovat käytössä. Jos IF=0, se ei ole käytössä.

10. DF - Suuntamerkki. Lippu, jolla ohjataan taulukon käsittelyn suuntaa merkkijonokomentoissa. Kun DF=1, merkkijonokäskyihin osallistuvia indeksirekistereitä SI, DI pienennetään automaattisesti operanditavujen määrällä, jolloin merkkijonoja käsitellään alusta loppuun. Kun DF=0, niitä kasvatetaan, prosessoimalla merkkijonon alusta loppuun.

Tilan liput. Nämä liput heijastavat erilaisia ​​osoitteita aritmeettisten ja loogisten CPU-käskyjen suorittamisen tuloksista:

0.CF - Kantolippu. Siirtolippu asetetaan, jos etumerkitöntä aritmeettista toimintoa suoritettaessa saadaan luku, jonka bittileveys ylittää sille varatun tuloskentän bittileveyden. Siirtokäskyissä CF-lippu kiinnittää merkittävimmän bitin arvon.

2. PF - Pariteettilippu. Pariteetti/pariteettilippu asetetaan, kun tuloksessa on parillinen määrä ykkösiä.

4. AF - Auxiliary Carry. Lippu lisäsiirtoa/lainausta varten alemmasta tetradista vanhempaan (kolmannesta neljänteen numeroon). Sitä käytetään 8-bittisten tietojen, useimmiten BCD-numeroiden, käsittelemiseen.

6. ZF - Nolla lippu. Nollalippu asetetaan, jos aritmeettinen tai looginen operaatio johtaa luvun, joka on yhtä suuri kuin nolla (eli tuloksen kaikki bitit ovat 0).

7. SF - Sign flag. Etumerkkilippu kopioi tuloksen merkittävimmän bitin arvon. SF=0 positiiviselle, SF=1 negatiiviselle.

11. OF - Ylivuotolippu. ylivuoto lippu , tai ) on asetettu, jos aritmeettista toimintoa suoritettaessa etumerkillä saadaan luku, jonka bittisyvyys ylittää sille varatun tuloskentän bittileveyden.

Liput, lisätty EF-rekisteriin:

12-13. IOPL on lyhenne sanoista I/O Privilege Level. I/O-käyttöoikeustason lippu. Käytetään mikroprosessorin suojatussa tilassa ohjaamaan pääsyä I / O-komentoihin tehtävän oikeuksista riippuen.

14. NT - Sisäkkäisen tehtävän lippu. Tehtävän sisäkkäinen lippu. Käytetään mikroprosessorin suojatussa tilassa tallentamaan, että yksi tehtävä on sisäkkäinen toiseen.

16. RF - Jatka-merkki. Jatka lippu. Virheenkorjaustilassa yksi RF-arvo mahdollistaa komennon käynnistämisen uudelleen keskeytysten jälkeen. Käytetään yhdessä virheenkorjauspisterekisterien kanssa.

17. VM - Virtuaalitilan lippu. Virtuaalitilan lippu. Merkki mikroprosessorin toiminnasta virtuaalisessa 8086-tilassa 1 – prosessori toimii virtuaalisessa 8086-tilassa; 0 - Prosessori toimii todellisessa tai suojatussa tilassa.

18. AC - kohdistuksen tarkistus. Prosessorin toimintatilan lippu, jossa kohdistuksen ohjaus tapahtuu. Käytetään vain käyttöoikeustasolla 3. Jos AC=1 ja AM=1 (AM on bitti CR0-ohjausrekisterissä), niin jos käytetään operandia, jota ei ole kohdistettu sopivaan rajaan (2 tai 4 tai 8) tavua, poikkeus 17 korotetaan Operandin kohdistus rajoissa 2,4,8 tarkoittaa, että operandin osoite on vastaavasti luvun 2,4,8 kerrannainen.

19. VIF - Virtual Interrupt Flag. Keskeytyksen salliminen -lippu virtuaaliprosessoritilassa.

20. VIP - Virtuaalinen keskeytys odottaa. Keskeytysviiveen lippu virtuaaliprosessoritilassa.

21. ID - CPU Identification. Prosessorin tunnistuslippu. Lippua voidaan muuttaa, jos prosessori tukee CPUID-komentoa.

Ohjausrekistereissä CR0-CR3 ovat tallennettuja prosessorin tilamerkkejä, jotka ovat yhteisiä kaikille tehtäville. Rekisterissä CR0 on seuraavat bitit:

0. PE - Suojaus käytössä. Suojatun tilan lippu. Jos PE=1, prosessoritila on suojattu.

1. MP - Matemaattinen läsnäolo. Lippu matemaattisen apuprosessorin läsnäolosta. Jos MP=1, matemaattinen apuprosessori on läsnä.

2. EM - Emuloi numeerista laajennusta. Liukulukukäskyemuloinnin lippu. Kun lippu on asetettu, reaalilukujen kanssa työskentelyä koskevia komentoja voidaan emuloida ohjelmistossa.

3.TS - Tehtävä vaihdettu. Tehtävän kytkimen lippu. Lippu asetetaan tehtävän vaihdon jälkeen.

4. ET - laajennustyyppi. Laajennustyypin lippu. Aseta, jos aritmeettinen apuprosessori 387 tai uudempi on olemassa.

5. NE - Numeerinen virhe käytössä. Apuprosessorin virheenratkaisulippu. Jos lippu on asetettu, apuprosessorissa tapahtuu virhe, poikkeus 16 generoidaan.

16.WP - kirjoitussuojaus. Kirjoita suojauslippu. Jos lippu on asetettu, käyttöjärjestelmän ytimelle osoitetaan muistisivut vain luku -tilassa (vain luku).

18.AM - Alignment Mask. Tasauksen peittävä lippu. Kun lippu on asetettu, tasaamattomiin operandeihin pääsyä varten generoidaan poikkeus 17. Jos lippu tyhjennetään, tällainen poikkeus peitetään.

29. NW - Ei kirjoita läpi. Kirjoituksen eston lippu.

30. CD - välimuisti pois käytöstä. Poista välimuistin lippu käytöstä.

31.PG - Haku käytössä. Muistin hakutilan lippu. Kun lippu on asetettu, käyttöjärjestelmä toimii hakutilassa.

Rekisterin CR0 jäljellä olevat bitit on varattu.

Rekisteri CR1 on varattu. Rekisteri CR2 tallentaa 32-bittisen lineaarisen osoitteen, jossa sivuvirhe vastaanotettiin. CR3:n 20 MSB:tä tallentavat sivuhakemistotaulukon fyysisen kantaosoitteen ja välimuistin ohjausbitit. CR4-rekisteri sisältää aktivointibitit MP:n arkkitehtonisia laajennuksia varten. Yleensä näitä rekistereitä käytetään järjestelmän ohjelmoinnissa ja niissä asetetaan prosessorin toimintatila (normaali, suojattu jne.), muistin haku ja niin edelleen.

Järjestelmän osoiterekisterit. GDTR-yleiskuvaustaulukko ja IDTR-keskeytystaulukon järjestelmän osoitinrekisterit tallentavat 32-bittisiä perusosoitteita ja 16-bittisiä taulukkorajoituksia. Järjestelmätehtäväsegmentin rekisterit TR ja paikallinen kuvaajataulukko LDTR ovat 16-bittisiä valitsimia. Ne vastaavat varjokuvausrekistereitä, jotka sisältävät segmentin 32-bittisen perusosoitteen, 20-bittisen rajan ja lupatavun.

Debug-rekistereissä DR0-DR3 sisältää 32-bittisiä keskeytyspisteosoitteita virheenkorjaustilassa; DR4-DR5 on varattu eikä käytetty; DR6 näyttää tarkistuspisteen tilan; DR7 - hallitsee ohjauspisteiden sijoittamista ohjelmaan.

Testirekisterit TR ovat osa mallikohtaisten rekisterien ryhmää, niiden koostumus ja lukumäärä riippuvat prosessorin tyypistä: MP 386 käyttää kahta rekisteriä TR6 ja TR7 ohjaamaan käyttöjärjestelmän muistin allokoinnin hakujärjestelmää. Pentium II ja uudemmat käyttävät kahtatoista rekisteriä TR1-TR12. Tämä rekisteriryhmä sisältää myös MP- ja välimuistin testauksen tulokset.

Artikkeli paljastaa termin "64 bittiä" merkityksen. Artikkelissa tarkastellaan lyhyesti 64-bittisten järjestelmien kehityshistoriaa, kuvataan tällä hetkellä yleisimmät Intel 64 -arkkitehtuurin 64-bittiset prosessorit ja 64-bittinen Windows-käyttöjärjestelmä.

Johdanto

Tietokonearkkitehtuurin puitteissa termi "64-bittinen" viittaa 64-bittisiin kokonaislukuihin ja muuntyyppisiin tietoihin, joiden koko on 64 bittiä. "64-bittiset" järjestelmät voivat viitata 64-bittisiin (esim. EM64T, IA-64) tai 64-bittisiin käyttöjärjestelmiin (esim. Windows XP Professional x64 Edition). Voimme puhua kääntäjistä, jotka luovat 64-bittistä ohjelmakoodia.

Tämä artikkeli käsittelee useita 64-bittisiin teknologioihin liittyviä kysymyksiä. Artikkeli on tarkoitettu ohjelmoijille, jotka haluavat aloittaa 64-bittisten ohjelmien kehittämisen, ja se on suunnattu Windows-kehittäjille, koska 64-bittisten järjestelmien tuntemus on heille olennaisin.

64-bittisten järjestelmien historia

64-bittinen on vasta äskettäin tullut useimpien käyttäjien ja sovellusohjelmoijien elämään. 64-bittisten tietojen kanssa työskentelyllä on kuitenkin pitkä historia.

1961: IBM julkaisee IBM 7030 Stretch -supertietokoneen, joka käyttää 64-bittisiä datasanoja, 32-bittisiä tai 64-bittisiä konekäskyjä.

1974: Control Data Corporation lanseeraa CDC Star-100 -vektorisupertietokoneen, joka käyttää 64-bittistä sanaarkkitehtuuria (aiemmissa CDC-järjestelmissä oli 60-bittinen arkkitehtuuri).

1976: Cray Research julkaisee ensimmäisen Cray-1-supertietokoneen, joka toteuttaa 64-bittisen sanaarkkitehtuurin ja toimii kaikkien myöhempien Cray-vektorisupertietokoneiden perustana.

1985: Cray julkaisee UNICOSin, ensimmäisen 64-bittisen Unix-käyttöjärjestelmän toteutuksen.

1991: MIPS Technologies julkaisee ensimmäisen 64-bittisen prosessorin, R4000:n, joka toteuttaa yrityksensä MIPS-arkkitehtuurin kolmannen iteraation. Tätä prosessoria on käytetty SGI-grafiikkatyöasemissa IRIS Crimson -mallista lähtien. Kendall Square Research julkaisee ensimmäisen KSR1-supertietokoneensa, joka on rakennettu heidän omalle 64-bittiselle RISC-arkkitehtuurilleen, jossa on OSF/1.

1992: Digital Equipment Corporation (DEC) esittelee 64-bittisen Alpha-arkkitehtuurin, PRISM-projektin idean.

1993: DEC julkaisee 64-bittisen Unix-tyyppisen DEC OSF/1 AXP -käyttöjärjestelmän (myöhemmin nimeltään Tru64 UNIX) Alpha-järjestelmilleen.

1994: Intel ilmoittaa suunnitelmistaan ​​kehittää 64-bittinen IA-64-arkkitehtuuri (Hewlett-Packardin kanssa) 32-bittisten IA-32-suorittimien seuraajaksi. Julkaisupäiväksi asetettu 1998-1999. SGI julkaisee IRIX 6.0:n, jossa on 64-bittinen tuki R8000-piirisarjalle.

1995: Sun lanseeraa 64-bittisen SPARC UltraSPARC -prosessoriperheen. Fujitsun tytäryhtiö HAL Computer Systems lanseeraa työasemia, jotka perustuvat HAL:n itsenäisesti kehittämään ensimmäisen sukupolven 64-bittiseen SPARC64-prosessoriin. IBM julkaisee A10- ja A30-mikroprosessorit sekä 64-bittiset PowerPC AS -prosessorit. IBM julkaisee myös 64-bittisen päivityksen AS/400:lle, joka voi muuttaa käyttöjärjestelmän, tietokannat ja sovellukset.

1996: Nintendo esittelee Nintendo 64 -pelikonsolin, joka perustuu MIPS R4000:n halvempaan versioon. HP julkaisee 64-bittisen 2.0-toteutuksen omasta PA-RISC PA-8000 -arkkitehtuuristaan.

1997: IBM lanseeraa 64-bittisten PowerPC/PowerPC AS -suorittimien RS64-sarjan.

1998: Sun julkaisee Solaris 7:n täydellä 64-bittisellä UltraSPARC-tuella.

1999: Intel julkaisee ohjesarjan IA-64-arkkitehtuurille. AMD julkistaa 64-bittiset laajennukset IA-32:lle, jonka nimeksi tuli x86-64 (myöhemmin AMD64).

2000: IBM julkaisee ensimmäisen ESA/390-yhteensopivan 64-bittisen zSeries z900 -mainframensa sekä uuden z/OS-käyttöjärjestelmän.

2001: Intel julkaisee vihdoin sarjan 64-bittisiä prosessoreita, nyt nimeltään Itanium, korkean suorituskyvyn palvelimille. Projekti ei vastannut odotuksia lukuisten viivästysten vuoksi IA-64:n markkinoille saattamisessa. NetBSD:stä tulee ensimmäinen käyttöjärjestelmä, joka toimii Intel Itanium -prosessorilla sen julkaisun jälkeen. Lisäksi Microsoft julkaisee myös Windows XP 64-Bit Editionin Itanium-perheen IA-64-arkkitehtuurille, vaikka se säilyttää mahdollisuuden ajaa 32-bittisiä sovelluksia WoW64-kerroksen avulla.

2003: AMD esittelee AMD64-arkkitehtuuriin perustuvat Opteron- ja Athlon 64 -suoritinlinjat, joka on ensimmäinen 64-bittinen x86-arkkitehtuuriin perustuva prosessoriarkkitehtuuri. Apple alkaa käyttää IBM:n 64-bittistä "G5" PowerPC 970 -suoritinta. Intel väittää, että Itanium-perheen prosessorisirut jäävät ainoaksi yrityksensä kehittämään 64-bittisiin prosessoreihin.

2004: Vastauksena AMD:n kaupalliseen menestykseen Intel myöntää, että he olivat kehittämässä AMD64-laajennusten kloonia, jolle he antoivat nimen IA-32e (myöhemmin nimettiin EM64T ja sitten jälleen Intel 64). Intel julkaisee myös päivitetyt versiot Xeon- ja Pentium 4 -suoritinperheet, jotka tukevat uusia komentoja.

2004: VIA Technologies esittelee 64-bittisen Isaiah-prosessorin.

2005: 31. tammikuuta Sun julkaisee AMD64/Intel 64 -suorittimia tukevan Solaris 10:n 30. huhtikuuta Microsoft julkaisee Windows XP Professional x64 Editionin AMD64/Intel 64 -prosessoreille.

2006: Sony, IBM ja Toshiba lanseeraavat 64-bittisen Cell-prosessorin PlayStation 3:lle, palvelimille, työasemille ja muille laitteille. Microsoft julkaisee Windows Vistan mukana toimitetun 64-bittisen version AMD64/Intel 64 -prosessoreille, joka tukee 32-bittistä yhteensopivuutta. Kaikki Windows-sovellukset ja -komponentit ovat 64-bittisiä, mutta monissa niistä on 32-bittiset versiot sisällytettynä laajennuksina yhteensopivuuden varmistamiseksi.

2009: Kuten Windows Vista, myös Microsoftin Windows 7 sisältää täyden 64-bittisen version AMD64/Intel 64 -suorittimille, ja useimmissa uusissa tietokoneissa on oletuksena 64-bittinen versio. Yrityksen käyttöjärjestelmä on julkaistu Apple Mac OS X 10.6, "Snow Leopard", jossa on 64-bittinen ydin ja joka on suunniteltu AMD64 / Intel 64 -prosessoreille, mutta tämä järjestelmä on asennettu oletusarvoisesti vain joihinkin uusimpiin Apple-tietokoneisiin. Useimmat Mac OS X 10.6:n mukana toimitetut sovellukset ovat nyt myös 64-bittisiä.

Lisätietoja 64-bitin kehityksen historiasta on John Mashan artikkelissa "The Long Road to 64-bit" ja Wikipedian tietosanakirjassa "64-bit".

Sovellusohjelmointi ja 64-bittiset järjestelmät

Tätä kirjoitettaessa vuonna 2010 tunnetuin ja yleisin on kaksi 64-bittistä mikroprosessoriarkkitehtuuria: IA64 ja Intel 64.
  1. IA-64 Intelin ja Hewlett Packardin yhdessä kehittämä 64-bittinen mikroprosessoriarkkitehtuuri. Toteutettu Itanium- ja Itanium 2 -mikroprosessoreissa. Yksityiskohtaisemman perehtymisen IA-64-arkkitehtuuriin voit katsoa seuraavista Wikipedian artikkeleista: "IA-64", "Itanium", "Itanium 2". Itanium-arkkitehtuuri on tuettu suuri määrä palvelinvalmistajat: Bull, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, NEC, SGI ja Unisys. Nämä toimittajat ovat liittyneet Intelin ja useiden ohjelmistokehittäjien kanssa muodostaakseen Itanium Solutions Alliancen, joka edistää arkkitehtuuria ja nopeuttaa ohjelmistojen siirtämistä.
  2. Intel 64(AMD64 / x86-64 / x64 / EM64T) - tämä arkkitehtuuri on x86-arkkitehtuurin laajennus, jossa on täydellinen taaksepäin yhteensopivuus. Tämän arkkitehtuurin nimestä on monia muunnelmia, mikä johtaa sekaannukseen, vaikka itse asiassa kaikki nämä nimet tarkoittavat samaa asiaa: x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e , Intel 64, x64. Saat lisätietoja siitä, kuinka monet nimet syntyivät, katso Wikipedian artikkeli: "X86-64". Prosessoreita, joissa on Intel 64 -arkkitehtuuri, käytetään laajasti henkilökohtaisissa tietokoneissa. Ja todennäköisesti tietokoneesi on varustettu prosessorilla, jolla on tämä arkkitehtuuri.
On tärkeää ymmärtää, että IA-64 ja Intel 64 (AMD64) ovat täysin erilaisia, yhteensopimattomia mikroprosessoriarkkitehtuureja. Lisäksi artikkelissa tarkastelemme vain Intel 64 (x64 / AMD64) -arkkitehtuuria, koska se on suositumpi sovelluskehittäjien keskuudessa. ohjelmisto Windows-käyttöjärjestelmälle. Lyhyyyden vuoksi 64-bittisessä Windows-järjestelmässä ohjelmoijan käytettävissä oleva Intel 64 -ohjelmointimalli on nimeltään Win64.

Intel 64 -arkkitehtuuri (AMD64)

Kyseinen Intel 64 -arkkitehtuuri on yksinkertainen mutta tehokas taaksepäin yhteensopiva laajennus vanhalle teolliselle x86-arkkitehtuurille. Se lisää 64-bittisen osoitetilan ja laajentaa rekisteriresursseja tukeakseen uudelleen käännettyjen 64-bittisten ohjelmien parempaa suorituskykyä. Arkkitehtuuri tukee vanhoja 16- ja 32-bittisiä sovelluskoodeja ja käyttöjärjestelmiä ilman muutoksia tai uudelleenkääntämistä.

Intel 64:n erottuva piirre on tuki kuudelletoista 64-bittiselle yleiskäyttöiselle rekisterille (x86-32:ssa oli kahdeksan 32-bittistä rekisteriä). 64-bittinen aritmetiikka ja loogisia operaatioita kokonaislukujen yli. 64-bittisiä virtuaaliosoitteita tuetaan. Uusien komentorekisterien käsittelemiseksi on otettu käyttöön "rekisterin laajennusetuliitteet", joille on valittu INC-komentoihin käytetty koodialue 40h-4Fh.<регистр>ja DEC<регистр>32- ja 16-bittisissä tiloissa. INC- ja DEC-komennot 64-bittisessä tilassa on koodattava yleisempään kaksitavuiseen muotoon.

Rekisterit:

16 64-bittistä kokonaislukurekisteriä (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15),
8 80-bittistä liukulukurekisteriä (ST0 - ST7),
8 64-bittistä multimedialaajennusrekisteriä (MM0 - MM7, jakaa tilaa ST0 - ST7 -rekisterien kanssa),
16 128-bittistä SSE-rekisteriä (XMM0 - XMM15),
64-bittinen RIP-osoitin ja 64-bittinen RFLAGS-lippurekisteri.

64-bittisen arkkitehtuurin tarpeen määräävät sovellukset, jotka tarvitsevat suuren osoitetilan. Ensinnäkin nämä ovat korkean suorituskyvyn palvelimia, tietokannan hallintajärjestelmiä, CAD-järjestelmiä ja tietysti pelejä. Tällaiset sovellukset hyötyvät suuresti 64-bittisestä osoiteavaruudesta ja useammista rekistereistä. Vanhassa x86-arkkitehtuurissa käytettävissä olevien rekisterien alhainen määrä rajoittaa suorituskykyä laskentatehtävissä. Lisääntynyt rekisterien määrä tarjoaa riittävän suorituskyvyn monille sovelluksille.

Korostamme x86-64-arkkitehtuurin tärkeimpiä etuja:

  • 64-bittinen osoiteavaruus;
  • laajennettu joukko rekistereitä;
  • joukko kehittäjille tuttuja komentoja;
  • kyky ajaa vanhoja 32-bittisiä sovelluksia 64-bittisessä käyttöjärjestelmässä;
  • kyky käyttää 32-bittisiä käyttöjärjestelmiä.

64-bittiset käyttöjärjestelmät

Lähes kaikissa nykyaikaisissa käyttöjärjestelmissä on nyt versiot Intel 64 -arkkitehtuurille. Esimerkiksi Microsoft tarjoaa Windows XP x64:n. Tärkeimmät kehittäjät UNIX-järjestelmät tarjoavat myös 64-bittisiä versioita, kuten Linux Debian 3.5 x86-64. Tämä ei kuitenkaan tarkoita, että tällaisen järjestelmän koko koodi olisi täysin 64-bittinen. Osa käyttöjärjestelmäkoodista ja monet sovellukset voivat hyvinkin jäädä 32-bittisiksi, koska Intel 64 tarjoaa taaksepäin yhteensopivuuden 32-bittisten sovellusten kanssa. Esimerkiksi 64-bittinen Windows-versio käyttää erikoistilaa WoW64 (Windows-on-Windows 64), joka kääntää puhelut 32-bittisistä sovelluksista 64-bittisen käyttöjärjestelmän resursseihin.

WoW64

Windows-on-Windows 64-bittinen (WoW64) on Windows-käyttöjärjestelmän alijärjestelmä, jonka avulla voit suorittaa 32-bittisiä sovelluksia kaikissa Windowsin 64-bittisissä versioissa.

WoW64-alijärjestelmä ei tue seuraavia ohjelmia:

  • 16-bittisille käyttöjärjestelmille käännetyt ohjelmat;
  • ydintilan ohjelmat, jotka on käännetty 32-bittisille käyttöjärjestelmille.
WoW64:ssä on eroja prosessorin arkkitehtuurista riippuen. Esimerkiksi 64-bittinen Windows-versio, joka on suunniteltu Intel Itanium 2 -prosessorille, käyttää WoW64:ää x86-ohjeiden emulointiin. Tämä emulointi on erittäin resurssiintensiivinen verrattuna Intel 64 -arkkitehtuurin WoW64:ään, koska se vaihtaa 64-bittisestä tilasta yhteensopivuustilaan suoritettaessa 32-bittisiä ohjelmia.

WoW64 Intel 64 (AMD64/x64) -arkkitehtuurissa ei vaadi käskyemulointia. Tässä WoW64-alijärjestelmä emuloi vain 32-bittistä ympäristöä 32-bittisen sovelluksen ja 64-bittisen Windows API:n välisen lisäkerroksen vuoksi. Jossain tämä kerros on ohut, jossain ei niin paljon. varten toissijainen ohjelma Tällaisen kerroksen esiintymisestä johtuvat suorituskykyhäviöt ovat noin 2 %. Joissakin ohjelmissa tämä arvo voi olla suurempi. Kaksi prosenttia ei ole paljon, mutta muista, että 32-bittiset sovellukset toimivat hieman hitaammin 64-bittisessä Windows-käyttöjärjestelmässä kuin 32-bittisessä ympäristössä.

64-bittisen koodin kääntäminen ei ainoastaan ​​poista WoW64:n tarvetta, vaan myös parantaa suorituskykyä. Tämä johtuu mikroprosessorin arkkitehtonisista muutoksista, kuten yleiskäyttöisten rekisterien määrän kasvusta. Keskivertoohjelmassa voit odottaa 5–15 %:n suorituskyvyn paranemista yksinkertaisella uudelleenkäännöksellä.

WoW64-kerroksen vuoksi 32-bittiset ohjelmat toimivat vähemmän tehokkaasti 64-bittisessä ympäristössä kuin 32-bittisessä ympäristössä. Silti yksinkertaiset 32-bittiset sovellukset voivat hyötyä niiden käyttämisestä 64-bittisessä ympäristössä. Tiedät luultavasti, että /LARGEADDRESSAWARE:YES-kytkimellä käännetty ohjelma voi varata jopa 3 gigatavua muistia, jos 32-bittinen Windows-käyttöjärjestelmä käynnistetään /3gb-kytkimellä. Joten sama 32-bittinen ohjelma, joka toimii 64-bittisessä järjestelmässä, voi varata lähes 4 Gt muistia (käytännössä noin 3,5 Gt).

WoW64-alijärjestelmä eristää 32-bittiset ohjelmat 64-bittisistä ohjelmista uudelleenohjaamalla tiedostojen ja rekisterin käyttöoikeudet. Tämä estää 32-bittisiä ohjelmia käyttämästä vahingossa 64-bittisiä sovellustietoja. Esimerkiksi 32-bittinen sovellus, joka suorittaa DLL-tiedoston %systemroot%\System32-hakemistosta, saattaa vahingossa käyttää 64-bittistä DLL-tiedostoa, joka ei ole yhteensopiva 32-bittisen ohjelman kanssa. Tämän välttämiseksi WoW64-alijärjestelmä uudelleenohjaa pääsyn %systemroot%\System32-kansiosta %systemroot%\SysWOW64-kansioon. Tämä uudelleenohjaus auttaa estämään yhteensopivuusvirheet, koska se vaatii DLL-tiedoston, joka on erityisesti suunniteltu toimimaan 32-bittisten sovellusten kanssa.

Lue lisää uudelleenohjausmekanismeista tiedostojärjestelmä ja rekisteri löytyy MSDN-osiosta "Running 32-bit Applications".

Win64 ohjelmointimalli

Aivan kuten Win32:ssa, Win64:n sivukoko on 4 kt. Osoiteavaruuden ensimmäistä 64 kt:ta ei koskaan kartoiteta, joten pienin kelvollinen osoite on 0x10000. Toisin kuin Win32, järjestelmän DLL-tiedostoja ladataan yli 4 Gt.

Intel 64:n kääntäjien erikoisuus on, että ne voivat tehokkaimmin käyttää rekistereitä siirtääkseen parametreja funktioille pinon käyttämisen sijaan. Tämä antoi Win64-arkkitehtuurin kehittäjille mahdollisuuden päästä eroon sellaisesta asiasta kuin soittokonvention (puhelukonvention). Win32:ssa voit käyttää erilaisia ​​käytäntöjä: __stdcall, __cdecl, __fastcall ja niin edelleen. Win64:ssä on vain yksi soittokäytäntö. Harkitse esimerkkiä siitä, kuinka neljä kokonaislukutyyppistä argumenttia välitetään rekistereissä:

  • RCX: ensimmäinen argumentti
  • RDX: toinen argumentti
  • R8: Kolmas argumentti
  • R9: neljäs argumentti
Argumentit neljän ensimmäisen kokonaisluvun jälkeen välitetään pinossa. Float-argumenteille käytetään XMM0-XMM3-rekistereitä sekä pinoa.

Ero kutsumiskäytännöissä tarkoittaa, että sekä 64-bittistä että 32-bittistä koodia ei voida käyttää samassa ohjelmassa. Toisin sanoen, jos sovellus on käännetty 64-bittiseen tilaan, kaikkien käytettyjen kirjastojen (DLL) on myös oltava 64-bittisiä.

Parametrien välittäminen rekistereiden kautta on yksi innovaatioista, joka tekee 64-bittisistä ohjelmista tehokkaampia kuin 32-bittiset. Lisää suorituskykyä voidaan saada käyttämällä 64-bittisiä tietotyyppejä.

Osoitetila

Vaikka 64-bittinen prosessori voi teoriassa käsitellä 16 eksatavua muistia (2^64), Win64 tukee tällä hetkellä 16 teratavua (2^44). Tähän on useita syitä. Nykyiset prosessorit voivat käyttää vain 1 teratavua (2^40) fyysistä muistia. Arkkitehtuuri (mutta ei laitteisto) voi laajentaa tätä tilaa jopa 4 petabyyttiin (2^52). Tässä tapauksessa muistikartoitettuja sivutaulukoita varten tarvitaan kuitenkin valtava määrä muistia.

Näiden rajoitusten lisäksi 64-bittisen Windows-käyttöjärjestelmän tietyssä versiossa käytettävissä olevan muistin määrä riippuu myös Microsoftin kaupallisista näkökohdista. Seuraavassa on tietoja Windowsin 64-bittisten versioiden eri versioiden tukemasta muistin määrästä:

Windows XP Professional - 128 Gt;
Windows Server 2003, Standard - 32 Gt;
Windows Server 2003, Enterprise - 1 Ttavu;
Windows Server 2003, Datacenter - 1 Ttavu;
Windows Server 2008, Datacenter - 2 Ttavua;
Windows Server 2008, Enterprise - 2 Ttavua;
Windows Server 2008, Standard - 32 Gt;
Windows Server 2008, Web Server - 32 Gt;
Vista Home Basic - 8 Gt;
Vista Home Premium - 16 Gt;
Vista Business - 128 Gt;
Vista Enterprise - 128 Gt;
Vista Ultimate - 128 Gt;
Windows 7 Home Basic - 8 Gt;
Windows 7 Home Premium - 16 Gt;
Windows 7 Professional - 192 Gt;
Windows 7 Enterprise - 192 Gt;
Windows 7 Ultimate - 192 Gt;

64-bittisten sovellusten kehittäminen

64-bittisten sovellusten kehittämisen kysymyksiä käsitellään laajimmin kurssilla "

Vuonna 1985 yritys Intel julkaisi 32-bittisen mikroprosessorin, josta tuli perheen esi-isä IA-32. Tämän perheen kehitys on käynyt läpi useita vaiheita, joista voidaan erottaa seuraavat: lohkon toteutus liukulukujen käsittelemiseksi suoraan MP-sirulle (mikroprosessori I486), esittely MMX-periaatteen mukainen kiinteän pisteen tietojenkäsittelytekniikka SIMD - yhden käskyn monidata(yksi käskyvirta - monta datavirtaa) mikroprosessorissa Pentium MMX ja tämän tekniikan kehittäminen liukulukuille ( SSE - suoratoisto SIMD-laajennus), joka ilmestyi ensimmäistä kertaa MP-julkaisussa Pentium III. Tämän arkkitehtuurin pääpiirteet ovat kuitenkin pysyneet muuttumattomina tähän päivään asti.

32-bittisen mikroprosessorin arkkitehtuuri eroaa merkittävästi 16-bittisen prosessorin arkkitehtuurista. Jotkut näistä eroista ovat puhtaasti määrällisiä, kun taas toiset ovat perustavanlaatuisia.

Suurin ulkoinen ero on tietoväylän ja osoiteväylän leveyden lisäys 32 bittiin. Tämä puolestaan ​​liittyy muutoksiin mikroprosessorin sisäisten elementtien bittisyvyydessä ja joidenkin prosessien suoritusmekanismissa, esimerkiksi fyysisen osoitteen muodostamisessa.

Kiinteän pisteen käsittely-yksikön rekisterit muuttuivat 32-bittisiksi. Jokainen niistä on käytettävissä yhtenä kaksoissanana (32 bittiä). Näiden rekistereiden alempia 16 bittiä pääsee käsiksi samalla tavalla kuin 16-bittisessä mikroprosessorissa.

Segmenttirekisterien lohkossa tapahtui sekä määrällisiä että laadullisia muutoksia. Reaalitilassa käytettävien neljän rekisterin, CS, DS, SS ja ES, lisäksi on lisätty kaksi muuta: FS ja GS. Vaikka tämän lohkon rekisterien bittisyvyys pysyi samana (kukin 16 bittiä), niitä käytetään eri tavalla RAM:n fyysisen osoitteen muodostamisessa. Kun mikroprosessori toimii ns. suojatussa tilassa, ne on tarkoitettu etsimään segmenttikuvaajaa (deskriptoria) vastaavista järjestelmätaulukoista, ja perusosoite ja segmenttiattribuutit on jo tallennettu kuvaajaan. Osoitteen luonti suoritetaan tässä tapauksessa muistinhallinnan segmentointilohkolla.

Jos muisti on segmenttien lisäksi jaettu myös sivuihin, fyysisten osoitteiden lopullisen laskennan suorittaa sivun ohjauslohko.

I486-mikroprosessorista alkaen mikroprosessorisiru sisältää liukulukuprosessointiyksikön, joka sisältää kahdeksan 80-bittistä rekisteriä tällaisten lukujen etumerkkien, mantissien ja eksponentien esittämiseksi.

Mikroprosessorisirussa on myös sisäinen välimuisti, joka on erityisesti järjestetty nopea puskurimuisti, joka on suunniteltu tallentamaan useimmin käytettyä tietoa (komennot ja tiedot). Erilaisissa mikroprosessorimalleissa välimuistin määrä vaihtelee 8 kilotavusta 512 kilotavuun.

Laitteistotason mikroprosessori tukee tietokoneen moniohjelmointitilaa, eli kykyä pitää muistissa useita suoritusvalmiita ohjelmia samanaikaisesti, jotka käyttöjärjestelmä käynnistää toimintansa algoritmien mukaisesti tai riippuen. ulkoisten laitteiden toiminnassa kehittyvistä erityistilanteista.

Tähän ominaisuuteen liittyvät erottamattomasti muistisuojat, jotka hallitsevat yksittäisten ohjelmien välistä luvatonta vuorovaikutusta. Näitä ovat muistinhallinnan suojaus ja etuoikeuksien suojaus.

Laajennetun komentomuodon pääominaisuuksia ovat kyky käyttää mitä tahansa yleiskäyttöistä rekistereistä missä tahansa osoitemoodissa, sekä yhden osoitusmoodin lisääminen - suhteellinen perusindeksi skaalauttamalla. Tässä tapauksessa toimiva osoite muodostetaan seuraavasti:

EA = (perus) + (indeksi) asteikko + disp,

missä (kanta) on perusrekisterin arvo; (indeksi) - indeksirekisterin arvo; asteikko - skaalaustekijän arvo (asteikko = 1,2,3,4); disp on itse komentoon koodattu offset-arvo.

Huomaa, että 32-bittisessä arkkitehtuurissa tehollista osoitetta kutsutaan yleensä siirtymäksi, samalla kun se erotetaan itse käskyssä koodatusta offsetista (siirtymä).

PC:n bittiarkkitehtuuri.

Win64-koodi yhdistää 32-bittisen koodin ydinominaisuudet ja sisältää myös bittejä parantavia muutoksia. Ohjelmoijalla on:

· 64-bittiset osoittimet;

· 64-bittiset tietotyypit;

· 32-bittiset tietotyypit;

Win64 API käyttöliittymä.

Huomaa, että 32-bittiset tietotyypit eivät hävinneet, kun alustan bittimäärä lisääntyi (kuten ne tekivät 16-bittisille tietotyypeille siirryttäessä Win32:een). Tämä johtuu siitä, että jopa 64-bittisissä sovelluksissa muuttujat eivät useimmissa tapauksissa vaadi 8 tavua muistia, joten 64-bittisten tyyppien käyttäminen tällaisissa tapauksissa olisi erittäin tehotonta. käyttöjärjestelmä Minun pitäisi lisätä nollia korkeisiin bitteihin, jotta tietokoko kasvaisi 8 tavuksi (sellainen data on myös erittäin hankalaa lukea). Tämä johtaisi suorituskyvyn heikkenemiseen.

32-bittisille osoittimille sattui erilainen kohtalo: ne katosivat kokonaan. Tosiasia on, että 32-bittisten osoittimien käyttö rajoittaa osoitettavan muistin määrää. Esimerkiksi yksi litteän muistimallin (joka on tärkein 32-bittisten sovellusten ohjelmointiin NT-alustalle) tärkeimmistä eduista 32-bittisten osoittimien avulla on kyky luoda jopa 4 Gt:n kokoisia segmenttejä. Uudet 64-bittiset osoittimet tarjoavat mahdollisuuden käsitellä jopa 16 Tt muistia (1 Tt = 1012 Mt). Nykyaikaiset yrityssovellukset vaativat tätä määrää melkoisesti.

Win64 API:n toimintoihin on tehty pieniä muutoksia. Vain joidenkin nimet on muutettu vastaamaan 64-bittistä alustaa. Useimmissa tapauksissa vain parametrien tyypit, jotka ovat funktiokutsujen argumentteja, ovat muuttuneet. Kaikki muut edut (mahdollisuus lopettaa sivutustiedostojen käyttö jne.) liittyvät joko lisääntyneeseen osoitteiden määrään tai uusiin tietotyyppeihin.

Emolevyjen suunnittelu. Muotoseikka

Tietokoneen emolevyn suunnittelu

Emolevy(eng. emolevy, MB, käytetään myös englanninkielisen emolevyn nimeä - päälevy; slang. mom, mother, motherboard) on monimutkainen monikerroksinen painettu piirilevy, jolle pääkomponentit on asennettu henkilökohtainen tietokone(keskusprosessori, RAM-ohjain ja varsinainen RAM, käynnistysROM, ohjaimet perus I/O-liitäntöihin). Pääsääntöisesti emolevy sisältää liitännät (paikat) lisäohjaimien liittämistä varten, joihin yleensä käytetään USB-, PCI- ja PCI-Express-väyliä.

prosessori

Järjestelmälogiikkasarja (englanninkielinen piirisarja) - sarja siruja, jotka yhdistävät suorittimen RAM-muistiin ja oheislaitteiden ohjaimiin. Yleensä nykyaikaiset järjestelmälogiikkajoukot rakennetaan kahden VLSI:n perusteella: "pohjoinen" ja "eteläinen silta".

pohjoinen silta(Englanti Northbridge), MCH (Memory controller hub), järjestelmäohjain - tarjoaa CPU:n liittämisen solmuihin, joissa käytetään korkean suorituskyvyn väyliä: RAM, grafiikkaohjain.

FSB:itä, kuten Hyper-Transport ja SCI, voidaan käyttää keskusyksikön liittämiseen järjestelmäohjaimeen.

Yleensä RAM on kytketty järjestelmäohjaimeen. Tässä tapauksessa se sisältää muistiohjaimen. Siten käytetyn järjestelmäohjaimen tyyppi riippuu yleensä suurin äänenvoimakkuus RAM-muistia sekä henkilökohtaisen tietokoneen muistiväylän kaistanleveyttä. Mutta nykyinen suuntaus on rakentaa RAM-ohjain suoraan prosessoriin (esimerkiksi muistiohjain on sisäänrakennettu prosessoriin AMD K8:ssa ja Intel Core i7:ssä), mikä yksinkertaistaa järjestelmäohjaimen toimintoja ja vähentää lämmöntuotantoa.

PCI Expressiä käytetään väylänä näytönohjaimen liittämiseen nykyaikaisilla emolevyillä. Käytettiin aiemmin jaettuja väyliä (ISA, VLB, PCI) ja AGP-väylää.

eteläinen silta(eng. Southbridge), ICH (I / O controller hub), oheisohjain - sisältää oheislaitteiden ohjaimia ( kovalevy, Ethernet, audio), väyläohjaimia oheislaitteiden liittämiseen (PCI-, PCI-Express- ja USB-väylät) sekä väyläohjaimia sellaisten laitteiden liittämiseen, jotka eivät vaadi suurta kaistanleveyttä (LPC - käytetään käynnistys-ROMin liittämiseen; myös LPC-väylä, jota käytetään yhdistä moniohjain (englanniksi Super I / O) - mikropiiri, joka tukee "vanhentuneita" matalan suorituskyvyn tiedonsiirtoliitäntöjä: sarja- ja rinnakkaisliitännät, näppäimistö- ja hiiriohjain).

Pääsääntöisesti pohjoinen ja eteläinen silta toteutetaan erillisinä VLSI:nä, mutta olemassa on myös yksisiruisia ratkaisuja. Se on järjestelmälogiikka, joka määrittää kaiken Avainominaisuudet emolevy ja mitkä laitteet voivat liittää siihen.

Random access memory (myös hajasaantimuisti, RAM) - tietojenkäsittelytieteessä - muisti, osa tietokoneen muistijärjestelmää, johon prosessori pääsee yhdellä toimenpiteellä (hyppää, liikkuu jne.). Se on tarkoitettu prosessorin toimintojen suorittamiseen tarvittavien tietojen ja komentojen väliaikaiseen tallentamiseen. RAM siirtää tiedot prosessorille suoraan tai välimuistin kautta. Jokaisella RAM-solulla on oma yksilöllinen osoite.

RAM voidaan valmistaa erillisenä yksikkönä tai sisällyttää yksisiruisen tietokoneen tai mikro-ohjaimen suunnitteluun.

Boot ROM - tallentaa ohjelmiston, joka suoritetaan välittömästi virran kytkemisen jälkeen. Pääsääntöisesti käynnistysROM sisältää BIOSin, mutta se voi sisältää myös ohjelmiston, joka toimii EFI:ssä.

64-bittisen MP:n arkkitehtoniset ominaisuudet


5.1. Itanium 2 Intel

Prosessori kehitettiin tyhjästä ja rinnakkain kahdessa versiossa kerralla: Intelin ja Hewlett-Packardin insinöörien toimesta. Molemmat sirut perustuivat kuitenkin luonnollisesti samoihin ideoihin, koska ne kuitenkin luotiin yhdessä ja molemmista olisi pitänyt tulla saman perheen perustajia. Sementointikoostumus oli tietysti yksi ideologia, joka korvasi CISC:n - EPIC:n (Explicitly Parallel Instruction Computing) ja uuden arkkitehtuurin - IA-64, joka sisältää joukon ohjeita, rekisterien kuvauksen ja muita vastaavia asioita. Arkkitehtuuri on kuitenkin vain muuttuva asia, riittää kun muistetaan, miten sellaiset CISC-prosessorit kuten 8086 ja i80486 eroavat toisistaan, molemmat 80x86 pohjalta luotuja.
Samoin Mercedin ja McKinleyn kanssa, Itanium ja Itanium 2 - molemmat on rakennettu saman ideologian pohjalta, mutta eri arkkitehtuurimuodoissa. Kerran sama tarina oli yleensä Pentiumin ja Pentium Pron kanssa. Niissä oli kuitenkin yhteisiä piirteitä, ja niitä on myös näissä, EPIC on "vastuussa" tästä. Ensinnäkin puhumme täysimittaisesta suuren mittakaavan superskalaarisuudesta, eli kyvystä suorittaa useita käskyjä samanaikaisesti. Mitä varten prosessori sisältää luonnollisesti executive-moduuleja - operaatioita varten kokonaislukujen kanssa, liukulukujen kanssa jne.
Toisin kuin Pentium ja sen seuraajat, jotka ymmärtävät koodin yksin, EPIC-prosessorit luottavat suuresti kääntäjään, jonka on itse analysoitava koodi löytääkseen optimaaliset paikat sen suorittamisen rinnakkaisuudelle ja annettava prosessorille nämä tiedot. Siksi käytetään "nimenomaan" - prosessorin ei pitäisi yrittää ymmärtää, mitä voidaan suorittaa rinnakkain ja mitä ei jne. - kääntäjä selittää kaiken tämän hänelle etukäteen. Lisäksi tehokkaat mekanismit haarojen ennustamiseen, koodin osien esisuoritukseen, datan esilataukseen ja vastaaviin - suoritusyksiköiden lataus tulisi jakaa mahdollisimman tasaisesti.
Rekistereihin liittyvä ongelma on ratkaistu radikaalisti, joiden määrää on lisätty useaan otteeseen: Itaniumilla niiden lukumäärä on 128 yleisiin tarkoituksiin (kuva 1), 128 liukulukujen tallentamiseen, 8 siirtymärekisteriä ja 64 vastuuhenkilöä. ennustusmekanismien ra -botille. Kaikki on selvää täällä - tällainen määrä rekistereitä, jopa todella 64-bittisiä, riittää tallentamaan tarvittavat numerot mille tahansa kohtuulliselle määrälle toimeenpanomoduuleita. Itaniumilla, perheen ensimmäisellä edustajalla, on vain viisi tällaista rekisteriä - kaksi kokonaislukua, kaksi muistitoimintoja varten ja neljä liukulukuoperaatioita. Fyysinen muisti on osoitettu 44-bittisillä numeroilla, mikä itse asiassa rajoittaa sen koon "vain" 17,6 teratavuun, liukulukulohkot toimivat numeroiden kanssa 82-bittisenä esityksenä.

Intel luopui ajatuksesta toteuttaa 32-bittinen 80x86 ydin laitteistomuodossa, koska se piti sitä liian tehottomana suulakealueen käyttöä. Joten Itanium 80x86 -koodin suorittamiseksi luotiin käännösjärjestelmä, joka muuntaa 80x86 koodin IA-64:ksi lennossa.
On selvää, että muiden asioiden ollessa samat, tällaisen ratkaisun suorituskyky on pienempi kuin puhtaalla samalla taajuudella toimivan x86:n. Kukaan ei kuitenkaan odottanut Itaniumilta x86-ohjelmien nopeaa suorittamista - tämän arkkitehtuurin tuki on enemmän siirtymäkauden kustannuksia. Siitä huolimatta tosiasia on, että tämä perhe ei sovellu 32-bittisten ongelmien ratkaisemiseen. Tuskin kukaan kuitenkaan käyttää Itaniumia sellaisiin tarkoituksiin täysimittaisen 64-bittisen ohjelmiston läsnä ollessa.
Lisäksi Itanium itsessään oli melko pitkälti pilottiprojekti, kuten myös Pentium Pro, joten prosessoria tulisi yleensä nähdä enemmän arkkitehtuurin ominaisuuksien osoituksena. Ominaisuus - Itaniumin piirisarja 460GX tukee vain PC100 SDRAM:ia muistina, mikä kertoo jotain nopeudesta, jolla prosessori pystyy sulattamaan dataa. Toisaalta, mutta jossain määrin ei liian nopea käyttöliittymä RAM kompensoi erittäin suuri L3-välimuisti - 2 tai 4 Mt, joka toimii täydellä prosessorin taajuudella (733 tai 800 MHz) ja suorituskyvyllä jopa 12,8 Gt / s.
Toinen Itaniumin tehtävä oli ratkaista ongelma kääntäjien kanssa - loppujen lopuksi EPIC-prosessorit, kuten jo mainittiin, ovat erittäin riippuvaisia ​​niistä. Toisin kuin 80x86-prosessorien kääntäjät, joilla ei ollut juuri mitään vaikutusta suorituskykyyn, täällä kääntäjät ovat prosessorin täysiä kumppaneita - loppujen lopuksi he toimittavat sille tietoja, jotka ovat erittäin tarpeellisia työhön, ja kuinka laadukas se on, riippuu on - ripustaa prosessorin tämän ohjelman suoritusnopeus.
Itanium 2 on jo paljon kaupallisesti kiinnostavampi tuote. Hewlett-Packardin luoma siru, joka sai käsiinsä PA-RISC-sarjan 64-bittisten prosessorien luomisen, osoittautui paljon edistyneemmäksi. Hieman pienemmällä L3-määrällä (1,5 tai 3 MB) ja hieman korkeammalla taajuudella, 900 MHz tai 1 GHz, se tarjoaa puolitoista tai kaksi kertaa nopeamman suorituskyvyn samoissa tehtävissä kuin Itanium. Hän on itse asiassa ensimmäinen IA-64-arkkitehtuurin edustaja.
Lisäksi suunnitteilla on nykypäivän muodikkaimmalla tavalla vielä suurempaa rinnakkaisuutta: prosessorin on vaihdettava kahteen fyysiseen ytimeen, mikä lähes kaksinkertaistaa suorituskyvyn melko kohtuulliseen hintaan - ainakin lopputulos on paljon halvempi. kuin jos sama määrä executive-moduuleja, rekistereitä jne. yrittäisi saavuttaa yhdellä sirulla.

5.2. Athlon 64 AMD

Ensinnäkin huomautamme, että Athlon 64 -prosessori on täsmälleen se 64-bittinen työpöytäprosessori, jonka AMD alun perin suunnitteli julkaisevansa. Myöhemmin, kun otetaan huomioon nopeiden Pentium 4 -prosessorien julkaisu, 800 MHz:n väylän ja niissä olevien Hyper-Threading-tekniikan ilmestyminen, AMD päätti kiireellisesti kohdistaa yksiprosessorisen Opteronin pöytäkonemarkkinoille ja antoi sille nimen Athlon. 64 FX. Palvelinalkuperänsä vuoksi Athlon 64 FX osoittautui kuitenkin kalliiksi ja sitä ei käytetty laajalti. Juuri Athlon 64:n pitäisi todella edistää AMD64-arkkitehtuuria massakäyttöön.
Alla on taulukko 1, jossa on tekniset tiedot 64-bittisille Athlon 64 3200+, Athlon 65 FX-51 ja Athlon XP 3200+ MP:ille:

pöytä 1

* Huomaa, että Athlon 64:n ja Athlon 64 FX:n muisti on kellotettu suhteessa ydinkelloon, joten todelliset muistikellot ovat tässä tapauksessa 129,4, 157,1 ja 200 MHz.
Itse asiassa Athlon 64 eroaa vanhemmasta vastineestaan ​​Athlon 64 FX:stä kotelon muodon ja mittojen lisäksi vain muistiohjaimella. Vaikka samaan aikaan molemmat prosessorit on valmistettu samoista kiteistä. Athlon 64:n muistiohjain on yksikanavainen, ja tämä on sekä sen heikkous että etu verrattuna Athlon 64 FX:ään. Athlon 64:n yksikanavaisen muistiohjaimen haittapuoli on ilmeinen: se on pienempi teoreettinen kaistanleveys.
Koska Athlon 64 pystyy toimimaan DDR400-muistin kanssa, CPU:n sisäänrakennetun muistiohjaimen maksimikaistanleveys on 3,2 Gt sekunnissa. Tämä on kaksi kertaa vähemmän kuin Athlon 64 FX:n vastaava ominaisuus. Athlon 64 -muistiohjaimen etuna on, että toisin kuin Athlon 64 FX -ohjain, se tukee perinteisiä rekisteröimättömiä muistimoduuleja. Tällaiset moduulit ovat halvempia kuin rekisterimoduulit, niillä on aggressiivisemmat ajoitukset ja ne toimivat nopeammin, jopa samoilla asetuksilla kuin rekisterimoduulit. Toisin sanoen Athlon 64 -muistiohjaimen tarjoamalla pienemmällä kaistanleveydellä sitä käyttävällä muistialijärjestelmällä on pienempi latenssi, jonka näytämme alla.
AMD Athlon 64 ulkomuoto samanlainen kuin Opteron ja Athlon 64 FX.
Erot löytyvät vain merkinnöistä ja vähemmän tapeista kääntöpuolella, koska Athlon 64 -prosessorit on asennettu emolevyt Socket 754:n kanssa eivätkä ne ole yhteensopivia Athlon 64 FX- ja Opteron CPU -perheille suunniteltujen Socket 940 -korttien kanssa.
Yllä lueteltujen ominaisuuksien lisäksi uusissa Athlon 64 -prosessoreissa on yksi lisää. Nämä prosessorit tukevat Cool'n'Quiet-tekniikkaa, joka itse asiassa tuli heille mobiilivaihtoehdot MP. Itse asiassa Cool'n'Quiet on eräänlainen virtaa säästävä PowerNow!-tekniikka, jota on pitkään käytetty AMD:n mobiili-MP:issä. Mutta nyt tämä tekniikka on vihdoin tullut yrityksen työpöytäprosessoreihin. Cool'n'Quiet-tuki on toinen Athlon 64:n etu verrattuna Athlon 64 FX/Opteroniin, jossa ei vielä ole tällaisia ​​tekniikoita. AMD on jo pitkään kiinnittänyt erityistä huomiota pöytätietokoneiden prosessorien lämmönpoistotason alentamiseen.
On sanottava, että yhtiö on jo pitkään ollut Inteliä parempi tässä: vanhemmat AMD-prosessorit tuottavat huomattavasti vähemmän lämpöä maksimikuormituksella kuin vanhemmat Pentium 4 -mallit.. Lisäksi prosessoreissa käytetään teknologioita, jotka vähentävät lämmön haihtumista pienelläkin kuormituksella. Lisää kansanedustajaperheitä
Athlon XP:n ominaisuuksilla oli mahdollisuus siirtyä "valmiustilaan" (Halt/Stop Grant) HALT-komentoa suoritettaessa, mikä johti prosessorin lämpötilan laskuun, kun se oli ladattu alle 100%. Nyt AMD on kuitenkin mennyt vielä pidemmälle. Uusissa Athlon 64 -prosessoreissa on entistä älykkäämpi lämmönpoistojärjestelmä.
Pysäytys-/pysäytystilojen lisäksi Athlon 64 voi nollata kellonopeudensa ja jännitteensä vähentääkseen lämmön haihtumista entisestään. Tällä tekniikalla käytettäessä prosessorin kellotaajuutta ohjaa prosessoriohjain, joka nollaa tai nostaa sitä kuormitustietojen perusteella. Itse asiassa, jos prosessori selviytyy täysin sille osoitetusta työstä ja sen kuormitus on paljon alle 100%, sen kellotaajuutta on mahdollista pienentää vaikuttamatta koko järjestelmän toimintaan: tämä ei vaikuta toimintaan järjestelmästä millään tavalla. Esimerkiksi, kun prosessori on käyttämättömänä, työskentelee toimistosovelluksissa, katselet videoita, eheyttää levyjä ja vastaavia tehtäviä, prosessorin tehoa ei käytetä täysin. Tällaisissa tapauksissa prosessoriohjain vaihtaa Athlon 64:n pienemmälle kellotaajuudelle. Kun prosessoria vaaditaan antamaan täysi teho esimerkiksi peleissä, laskentaongelmia ratkaistaessa, datan koodaustehtävissä jne., prosessorin taajuus nousee nimellisarvoon. Juuri näin Cool'n'Quiet-tekniikka toimii.
Käytännössä se näyttää tältä. Normaaleissa olosuhteissa, minimaalisella MP-kuormalla, prosessoriohjain nollaa Athlon 64 3200+:n taajuuden tavallisesta 2 GHz:stä 800 MHz:iin. Prosessorin jännite lasketaan sitten 1,3 V:iin. Kuten näette, kellotaajuuden vähennys saadaan aikaan vähentämällä prosessorin kerrointa 4x. Tämä muuten määrittää myös sen tosiasian, että Athlon 64 3200+ -prosessorit toimitetaan kiinteällä kertoimella. Tässä tilassa prosessori jatkaa toimintaansa, kunnes sen kuormitus ylittää 70-80%. Erityisesti pystyimme samanaikaisesti suorittamaan levyn eheyttämisen, toistamaan mp3-tiedostoja (äänitiedostoja) ja katsomaan MPEG-4 (videotiedostot) -videoita, samalla kun prosessori jatkoi toimintaansa 800 MHz:n taajuudella.
Kun Athlon 64 -prosessorin kuormitus 800 MHz:llä ylittää sallitun rajan, ohjain vaihtaa MP:n seuraavaan tilaan, jossa Athlon 64 3200+ -taajuus on 1,8 GHz ja syöttöjännite 1,4 V. Tämä saavutetaan jälleen pienentämällä kerrointa, tällä kertaa 9x. Ja vain jos tässä tapauksessa prosessorin kuorma osoittautuu jälleen liian suureksi, ohjain vaihtaa MP:n normaalitilaan: taajuus on 2 GHz, syöttöjännite on 1,5 V.
Huomaa, että Athlon 64 3200+ -prosessorin lämmönpoisto laskee jyrkästi pienitehoisissa ja matalataajuisissa tiloissa. Vertailun vuoksi esitämme taulukon 4, jossa on tämän prosessorin lämmönpoisto päätiloissa.

Näin ollen Cool'n'Quiet-tekniikan käyttö mahdollistaa prosessorin lämpötilan alentamisen merkittävästi paitsi joutokäyntien aikana, myös useiden tehtävien aikana, jotka eivät vaadi MP:ltä maksimaalista suorituskykyä. Tärkeää on, että MP:n suorituskyky prosessoriresursseja vaativissa tehtävissä ei heikkene ollenkaan. Tämän seurauksena Cool'n'Quiet-teknologian käyttö voi merkittävästi vähentää melutasoa käytettäessä jäähdytysjärjestelmiä, joissa on säädettävä nopeus.