Mikro-ohjelma
Mikro-ohjelma tai mikrokoodi on osassa suorittimia käytetty suorittimen sisäinen ohjelma, jonka avulla varsinaiset konekielen käskyt on toteutettu.
HistoriaMuokkaa
Varhainen käyttökohde mikro-ohjelmalle oli IBM S/360, jossa sen avulla toteutettiin taaksepäin yhteensopivuus aiempien mallien kanssa kuten suositun IBM 1401:n.[1]
Intel on käyttänyt x86-sarjan P6-suorittimista lähtien mikrokoodia, joka voidaan päivittää ohjelmallisesti suorittimen virheiden korjaamiseen.[2] Käyttöjärjestelmät kuten Linux, Solaris ja Windows sisältävät ajuritukea mikrokoodin päivittämiseen ilman BIOSin päivitystä.[3]
Mikro-ohjelman piirteitäMuokkaa
Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. |
Mikro-ohjelmalle on tyypillistä pitkä käskysana, jonka bitit ohjaavat suoraan suorittimen sisäisiä toimintoja. Mikro-ohjelmalle näkyvät suorittimen eri toimiyksiköt, kuten rekisterit tai akut, väylät, liukuhihnat, aritmeettis-looginen yksikkö ja niin edelleen. Tästä seuraa se, että ohjelman abstraktiotaso on erittäin matala, mutta hyvä ohjelmoija pystyy käyttämään suorittimen sisäistä rinnakkaisuutta hyväkseen.
Mikro-ohjelmat olivat aiemmin erittäin yleisiä niin sanotuissa CISC-tyyppisissä koneissa, joissa käskyt ja osoitusmuodot olivat monimutkaisia. Näiden taas tuli olla monimutkaisia, jotta pieneen keskusmuistiin mahtuisi koko tarvittava ohjelma. RISC-arkkitehtuuri toi mukanaan ajatuksen, että käskyjen tulee olla yksinkertaisia. Tällöin ei tarvita mikro-ohjelmaa konekäskyjen toteuttamiseen.
Tyypillisesti pienet suorittimet eivät ole mikro-ohjelmoituja tai vain hankalimmat käskyt on toteutettu mikro-ohjelmalla. Mitä monimutkaisempi suoritin, sitä todennäköisemmin sen toteutuksessa on hyödynnetty myös mikro-ohjelmaa.
Samankaltaisia lähestymistapojaMuokkaa
Erityistarkoituksiin on suunniteltu koneita, joissa ei ole varsinaisia konekäskyjä, vaan niitä ohjelmoidaan samaan tapaan kuin mikro-ohjelmaa. Tällainen laite oli esimerkiksi FPS-164. [4][5] Myöhemmin on kehitetty leveän käskysanan (VLIW) arkkitehtuuri, jossa käskysanan eri osat sisältävät eri toimilohkojen konekäskyjä. Leveällä käskysanalla päästään suorittimen sisäisen rinnakkaisuuden hyödyntämiseen, mutta ohjaus ei ole niin yksityiskohtaista kuin varsinaisessa mikro-ohjelmassa.
Mikro-ohjelman muokattavuudestaMuokkaa
Mikro-ohjelma on tavallisesti ollut kiinteä, eli sitä ei ole voinut vaihtaa. Alun perin sanalla firmware tarkoitettiinkin lähinnä mikro-ohjelmaa.lähde? Toisaalta osa koneista (Burroughs B1700 ja sen sukulaiset[6][7]) mahdollisti jopa sen, että prosessinvaihdon yhteydessä vaihdettiin myös mikro-ohjelma. Näin voitiin tehdä eri ohjelmointikielille niille sopivin käskykanta. Myös mikro-ohjelmakääntäjiä on olemassa.
LähteetMuokkaa
- ↑ James W. Cortada: Building the System/360 Mainframe Nearly Destroyed IBM spectrum.ieee.org. 5.4.2019. Viitattu 25.9.2020. (englanniksi)
- ↑ Microprocessor Types and Specifications informit.com. 8.6.2001. Viitattu 26.9.2020. (englanniksi)
- ↑ Security Analysis of x86 Processor Microcode dcddcc.com. 11.12.2014. Viitattu 26.9.2020. (englanniksi)
- ↑ http://www.rz.rwth-aachen.de/computing/etc/historie.php?navbar=off
- ↑ http://www.scl.ameslab.gov/Publications/Gus/Replicated/ReplicatedVLSI.html
- ↑ http://www.answers.com/topic/burroughs-b1700
- ↑ http://www.mdronline.com/publications/epw/issues/epw_16.html
Aiheesta muuallaMuokkaa
- Reverse Engineering x86 Processor Microcode (PDF) (englanniksi)
KirjallisuuttaMuokkaa
- Agrawala, Ashok K. & Rauscher, Tomlinson G.: Foundations of Microprogramming. Academic Press, 1976. ISBN 978-0120451500.