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:
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: 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”.