Bne: n toteuttaminen MIPS-prosessoripiirissä

Yritän sisällyttää BNE-käskyn seuraavaan piiriin ottamatta käyttöön uutta ohjauslinjaa. Olen ajatellut monia mahdollisia tapoja, kuten muxien tai porttien jne. Lisääminen sen toteuttamiseksi, mutta toteutuksen jälkeen ongelmana oli aina jokin kolmesta ohjeesta, PC+4, BEQ ja joskus itse BNE. Tarvitsen nyt asiantuntijoilta vähän neuvoja siitä, miten voin toteuttaa bne ottamatta käyttöön uutta ohjauslinjaa. Tässä on piiri:

Piirikaavio täällä

Kommentit

  • En ole EE, mutta kuinka vaikeaa olisi muuntaa nollasignaali ehtona tyytyväinen / haara otettu signaali? On selvää, että ALU ja sen hallinta olisivat monimutkaisempia, joten se vain näyttää muuttavan monimutkaisuutta – jälleen kerran, en ole EE. (BTW, mielestäni jotkut varhaiset MIPS-toteutukset tekivät haaran kunnon arvioinnin erillisessä logiikassa ja haarakohteen laskennan ALU: ssa.)

Vastaus

Yllä kuvasi MIPS-arkkitehtuuri sisältää jo tarvittavan laitteiston BNE-käskyä varten.

Kaksi BNE-käskyyn kuuluvaa rekisterinumeroa siirretään rekisteritiedostoon, joka välittää sitten tiedot ALU: lle. Jos ne ovat yhtä suuret, nollalippu asetetaan. Käskydekoodausyksikkö määrittää, asetetaanko haaralippu kokonaisen joukon ohjaussignaaleja, jotka ovat jo läsnä (edellä mainittu 0 lippu ja joukko bittejä käskyn opkoodissa). Sitten ohjelmalaskurin seuraava osoite lasketaan yläosassa olevan ALU: n perusteella, joka hoitaa offsetosoitteen lisäämisen nykyiseen osoitteeseen.

Monet ihmiset ovat ottaneet tämän ohjeen olemassa olevaan MIPS-laitteistoon, joten olen hyvin varma, ettet tarvitse ylimääräisiä ohjaussignaaleja. Tarkempia tietoja saat MIPS-käskyjoukosta ja arkkitehtuurin toteutuksesta. Tässä on yksi tällainen esimerkki, joka tehdään VHDL: ssä.

Kommentit

  • Oikeastaan, jos tarkastelet VHDL-tiedostoa, ' näen, että ohjausyksiköllä on todellakin KAKSI signaalia välittämään kaaviomaisesti yhtenä yhtenäinen kuva " haara " -ohjaussignaali: on erillinen " -haara " ja " branch_ne " -signaalit.

Vastaa

Anna pääohjaimesi tuottaa seuraavat ALUOp-signaalit: ALUop-kaavio Huomaa, että ALUop-koodi 11 ei käytetä, joten BNE voidaan määritellä, kun ALUop = 11, silloin ALU-ohjaustulo olisi 1110, joka joudutaan myös vähentämään (sama kuin 0110). Nyt bne: n tapauksessa tiedämme, että ALUop on 11 ja jotta PC voidaan asettaa, ”nolla” -signaali on poistettava käytöstä (eli ne eivät ole yhtä suuria). Joten nyt pitäisi olla selvää, että voimme käyttää seuraava logiikka bne-tuloksen määrittämiseksi: ALUop1 JA ALUop2 JA ~ (”nolla”)

Tämä väitetään, kun tietokone on asetettava bne-operaation lähdön perusteella. ohjaa samaa muxia kuin kaaviossasi jo oleva AND-portti.

Vastaukseni perustuu Pattersonin ja Hennessyn kirjaan ”Computer Organization and Design”.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *