X86 -prosessoriarkkitehtuurin räjäytys

Breaking the x86 Instruction Set (Heinäkuu 2019).

$config[ads_text] not found
Anonim

X86 -prosessoriarkkitehtuurin räjäytys


Mikroprosessoreiden perusmuoto

Vaikka tämän artikkelisarjan kohde perustuu x86-prosessoriarkkitehtuurin kokoonpanokielen käyttämiseen, jotkin x86-prosessoreihin liittyvät taustatiedot ovat hyödyllisiä. Tämä on ensimmäinen sarjassa.

Keskusyksikkö (CPU) on silloin, kun kaikki laskelmat ja logiikka toimivat. CPU sisältää rajallisen määrän tallennuspaikkoja tai rekistereitä, suurtaajuinen kello, kuten ohjausyksikkö ja aritmeettinen logiikkayksikkö.

Kello synkronoi CPU: n sisäiset toiminnot järjestelmän muiden osien kanssa.
Ohjausyksikkö (CU) järjestää järjestelmäohjeiden suorittamiseen liittyvien vaiheiden järjestyksen.
Aritmeettinen logiikkayksikkö (ALU) suorittaa aritmeettisia operaatioita, kuten lisäys- ja vähennyslaskuja ja logiikkaoperaatioita, kuten AND, OR ja NOT.

Kun katsot järjestelmää, CPU on kytketty muuhun tietokoneeseen tietokoneen emolevyn CPU-liitäntään kiinnitetyillä tapilla. Suurin osa CPU: n nastoista on kytketty dataväylään, ohjausväylälle ja osoitevälille. Muistitallennusyksikkö on silloin, kun ohjeet ja tiedot tallennetaan tilapäisesti tietokoneohjelman ollessa käynnissä. Tallennusyksikkö vastaanottaa tietopyynnön CPU: sta ja sitten siirtää kaikki RAM-muistista tallennetut tiedot CPU: lle ja lopulta siirtää tietoja CPU: sta muistiin. Kaikki tietojenkäsittely tapahtuu CPU: n sisällä, joten muistissa olevat ohjelmat on kopioitava CPU: lle ennen kuin ne voivat suorittaa komentoja. Yksittäiset ohjelmointiohjeet tai toiminnot voidaan kopioida CPU: hon yksi kerrallaan tai ryhmät voidaan kopioida samanaikaisesti.

Linja-auto on ryhmä rinnakkaisia ​​johtoja, jotka siirtävät tietoja tietojärjestelmän yhdestä osasta toiseen. Tietokonejärjestelmä sisältää yleensä neljä väylätyyppiä: data, input & output (I / O), ohjaus ja osoite. Tietoväylä siirtää ohjeita ja tietoja CPU: n ja muistin välillä. I / O-väylä siirtää tietoja CPU: n ja tietokonejärjestelmien laitteiden välillä, joissa on syöttö / ulostekomennot. Ohjausväylä käyttää binäärisiä signaaleja synkronoimaan minkä tahansa laitteen, joka on liitetty järjestelmäväylään. Lopuksi osoitebussilla on ohjeiden ja tietojen osoitteet, kun suoritettava käsky siirtää tietoja CPU: n ja muistin välillä. Alla on esimerkki mikrotietokoneen lohkokaaviosta.

Opetuksen toteutuskierros

Yhden koneen käskyn toteutus voidaan erottaa yksittäisten operaatioiden sekvenssiksi, jota kutsutaan käskyjen toteutusjaksoksi. Ennen kuin mitään teloituksia voi esiintyä, ohjelma ladataan muistiin. Ohje-osoitin sisältää seuraavan suoritettavan ohjeen osoitteen. Koneen ohjeiden suorittamisen yhteydessä tarvitaan kolmea perusvaihetta: noudetaan, dekoodataan ja suoritetaan. Kaksi muuta vaihetta tarvitaan, jos käsky käyttää muistioperaatiota: noudata operandia ja lähtöoperaatiota. Kukin vaiheista voidaan kuvata seuraavasti:

Hae: Ohjausyksikkö hakee seuraavan suorituksen ohjeet käskystä ja kasvattaa käskyosoitinta (IP). IP tunnetaan ohjelmalaskurina.
Dekoodaus: Ohjausyksikkö dekoodaa käskyn toiminnan määrittääkseen, mitä käskyä tehdään. Ohjeen syöttöoperaatiot siirretään ALU: lle, ja signaalit lähetetään LAU: lle osoittamalla suoritettava toimenpide.
Hälytysoperaatiot: Jos käsky käyttää muistiin sijoitettua syöttöoperaatiota, CU käyttää lukutoimintoa operandin noutamiseksi ja kopioimiseksi sisäisiin rekistereihin. Sisäiset rekisterit eivät näy millekään käyttäjäohjelmille.
Suorita: ALU suorittaa käskyn käyttäen nimettyjä rekistereitä ja sisäisiä rekistereitä operandina ja lähettää tuotoksen nimettyihin rekistereihin ja / tai muistiin.
Säilytä ulostulooperaatio: Jos lähtötoiminto on muistissa, CU käyttää kirjoitustoimintoa tietojen tallentamiseen.

Alla on kaavio, jonka avulla voidaan näyttää suhteita komponenttien välillä, jotka toimivat vuorovaikutuksessa opetuksen toteutusjakson aikana. Jos ohjelman ohjeet on luettava muistista, osoiterivi sijoitetaan osoitteeseen. Seuraavaksi muistinohjain asettaa pyydetyn koodin dataväylään, anna koodin olla käytettävissä koodikeskipisteen sisällä. Opetuksen osoittimen arvo määrittää, mitkä ohjelmakäskyt suoritetaan seuraavaksi. Ohjaus analysoidaan käskysekoodauksella, mikä aiheuttaa asianmukaisten digitaalisten signaalien lähettämisen ohjausyksikköön, joka koordinoi ALU- ja liukulukuyksikköä. Ohjausväylää ei ole esitetty kuvassa, mutta siinä on erilaisia ​​signaaleja, jotka käyttävät järjestelmäkelloa koordinoimaan datan siirtoa eri keskusyksiköiden välillä.

Lukeminen muistista

Ohjelman läpimeno riippuu usein muistin käytön nopeudesta. CPU-kellon nopeus voi olla kahdeksan gigahertsää, kun taas pääsy muistiin tapahtuu järjestelmäbussilla, joka kulkee paljon hitaammin kuin kellon nopeus. CPU: n on odotettava yhtä tai useampaa kellojaksoa, kunnes operandit on haettu muistiin ennen kuin nykyinen käsky voi suorittaa täydellisen suorituksen. Hukattuja kellojaksoja kutsutaan odotustiloiksi.

Useita vaiheita tarvitaan, kun luet ohjeita tai tietoja muistista, jota prosessorin kellonaika ohjaa. Alla oleva kaavio kuvaa suorittimen kelloa (CLK), joka nousee ja laskee säännöllisin väliajoin. Tässä kuvassa kellojakso alkaa vasta kun kellosignaali muuttuu suuresta alhaalta (1: stä 0: een). Nämä muutokset tunnetaan takareunoiksi, ja ne ilmaisevat siirtymisen jokaisen valtion välillä.

Seuraavassa on lyhyt kuvaus siitä, mitä tapahtuu jokaisen kellojakson aikana, kun muistia on luettu:

Työkierto 1: Muistitoiminnon osoitebitit sijoitetaan osoitevylle (ADDR). Osoiterivit kaavion risteyksessä osoittavat, että jotkut bittiä ovat yhtä suuret ja muut vastaavat 0.
Työkierto 2: Lukulinjalla (RD) asetettu alhainen (o) ilmoittaa muistiin, että arvo on luettava.
Työkierto 3: CPU odottaa yhtä sykettä, jotta muistiaikaa voidaan vastata. Tämän ajanjakson aikana muistinohjain sijoittaa operandin dataväylälle (DATA).
Työkierto 4: Lukulinjalla menee 1, mikä merkitsee CPU: n lukea dataväylän tietoja.

Tulossa

Tässä vaiheessa sinun pitäisi olla peruskäsitys x86-prosessorin arkkitehtuurista, koska he käyttävät tietokonejärjestelmää. Tulevat artikkelit keskittyvät x86-arkkitehtuurin yksityiskohtiin, kuten ohjelmien suorittamiseen ja monitoimiin. Muita tarkempia aiheita ovat toimintotapahtumien ympäristö, toteutusrekisterit ja x86-muistin hallinta, jotta voit ymmärtää ja parantaa x86-prosessorin tietämystesi.

Seuraava artikkeli sarjassa: x86-arkkitehtuuri: prosessit ja toteutusympäristöt