Joskus pohtinut että missä ISA loppuu ja arkkitehtuuri alkaa. Vai meneekö homma toisinpäin? ARM on tästä hyvä esimerkki. Onko Aarch64 ISA vai arkkitehtuuri? Entä ARMv8.4 tai CortexA53? Vähän sama homma Intel puolella. Ovatko E ytimet oma ISA vai arkkitehtuuri vai jotain muuta?
Sinänsä RISC-V on minun kirjoissani vain ISA joka on samaan tapaan muokattavissa kuin Aarch64. Toki sillä on toteutuksia jotka ovat enemmän tai vähemmän soveltuvia eri asioihin mutta en nyt lähtisi lyttäämään sitä ihan alkutaipaleella. Pitkälle ovat ARM, Power ja x86 tulleet vuosikymmenten varrella.
Käskykanta-arkkitehtuurin määritelmä on ihan selkeä, se määrittelee mitä käskyt tekevät ja millaisilla sivuvaikutuksilla, mutta ei ota kantaa siihen, että koska ne sen tekevät. Jos kaksi prosessoria ymmärtävät samat binäärikoodin käskyt samallat tavalla ja laskevat aina saman vastauksen, kyse on samasta käskykanta-arkkitehtuurista(ISA).
Tietokoneen
arkkitehtuuri taas on hyvin korkean tason sana, jolla voidaan tarkoittaa melko montaa asiaa. Se ei ole mikään vastakohta käskykanta-arkkitehtuurille, vaan käskykanta-arkkitehtuuri on yksi arkkitehtuurin
osa-alue.
Mikroarkkitehtuuri taas tarkoittaa prosessoriytimen toteutuksen arkkitehtuuria, asioita jotka ei näy käskykannassa.
Eli käskykanta-arkkitehtuurin ja mikroarkkitehtuurin raja menee siinä, tuottaako samaa binäärikoodi saman vai eri vastauksen.
Muita arkkitehtuurin osa-alueita on esim.
muistiarkkitehtuuri joka määrittelee muistityypit, muistiväylien leveydet, välimuistihierarkiat jne
Se, kuinka paljon käskykanta-arkkitehtuuri rajoittaa mikroarkkitehtuuria sitten riippuu sen käskykanta-arkkkitehtuurin filosofiasta ja abstraktiotasosta. CISC-prossuille joista löytyy korkeamman tason käskyjä voi tehdä enemmän selvästi erilaisia mikroarkkitehtuureita, kun taas jollain TTA:lla (transport triggered archtecture) juuri mitään abstraktiotasoa ei ole vaan käskykannassa näkyy käytännössä koko prosessorin sisäinen rakenne, jolloin samasta käskykannasta ei voi tehdä juuri erilaisia mikroarkkitehtuureita.
VLIW on sitten tässä lähempänä TTA:ta ja RISC lähempänä CISCiä.
Ja mihin sitten (mikro)arkkitehtuuri loppuu ja mistä alkaa fyysinen implementointi?
Mikroarkkiarkkitehtuuria on vielä se laitteistonkuvauskielinen toteutus prossusta, mutta se, että mitä synteesikirjastoja käytetään ja mitä kellotaajuustavoitteita asetetaan ja millainen fyysinen sijoittelu makro-blokeille laitetaan on sitten fyysistä implementaatiota. Eli zen4 ja zen4c ovat samaa mikroarkkitehtuuria, ne ytimen osalta käännetään samasta laitteistonkuvauskielisestä koodissa, niiden ero tulee pääosin logiikkakirjastoista ja kellotaajuustavoitteista, matalan kellon ja korkean kellon fyysinen implementaatio samasta mikroarkkitehtuurista.
Mutta sitten jos matalan kellon mallissa liukuhihnaa alettaisiin lyhentämään, se olisi jo selvästi muutos mikroarkkitehtuurissa, eikä vaan fyysisen implementionnin ero.