Wat is Instructiesetarchitectuur (ISA)?
Specificatie van de processor zoals die voor software zichtbaar is, zoals de uitvoerbare instructies en registers. Voorbeelden: x86, Arm, RISC-V.
Japanse benaming: 命令セットアーキテクチャ(ISA)
“Instructiesetarchitectuur (ISA)” komt voor in 12 oefenvragen uit 4 onderwerpen, bijv. Instructieset en assembly, CPU en architectuur, Prestatiemeting en profiling.
Vakgebied: CPU en architectuur
Wat een ISA vastlegt
Een instructiesetarchitectuur (ISA) is het contract tussen software en processorhardware. Ze definieert de instructies en hun bitcoderingen, de registers die voor programma's zichtbaar zijn, de datatypen en adresseringsmodi, de volgorde van geheugentoegangen, de privilegeniveaus en het gedrag van interrupts en exceptions. Alles wat de ISA definieert, is architecturale toestand die machinecode kan waarnemen en waarop ze kan vertrouwen. Een assembler vertaalt assemblymnemonics vrijwel één-op-één naar deze coderingen, en daarom heeft elke ISA haar eigen assemblytaal.
ISA versus microarchitectuur
De microarchitectuur is de manier waarop een bepaalde processor de ISA implementeert: pipelinediepte, cachegroottes, branch predictors, het aantal instructies dat per cyclus wordt uitgegeven. Eén ISA kan worden geïmplementeerd door zeer kleine low-power cores en door grote out-of-order cores die dezelfde machinecode met zeer verschillende snelheden uitvoeren. In de prestatievergelijking, uitvoeringstijd = aantal instructies × cycli per instructie (CPI) × cyclustijd, bepalen de ISA en de compiler vooral het aantal instructies, de microarchitectuur de CPI, en de schakelingen en procestechnologie de cyclustijd. Aanvallen van het type Spectre misbruiken die grens: architecturale toestand na een verkeerde speculatie wordt teruggedraaid, maar de cache-inhoud niet.
Modulaire en open ISA's
RISC-V is een open ISA waarvan iedereen de specificatie zonder licentiekosten mag implementeren. Ze combineert een kleine basisset voor gehele getallen (RV32I of RV64I, ongeveer 40 instructies) met optionele extensies: M voor vermenigvuldigen en delen, A voor atomaire bewerkingen, F en D voor floating point, C voor gecomprimeerde instructies, V voor vectoren, plus eigen (custom) instructies. Een extensie weglaten bespaart oppervlak maar kost snelheid: zonder M zet de compiler een vermenigvuldiging in C om in een aanroep van een bibliotheekroutine die met schuif- en optelbewerkingen vermenigvuldigt. Arm en x86 zijn propriëtair en worden door hun eigenaars in licentie gegeven of geïmplementeerd.
Veelgestelde vragen
Wat is het verschil tussen een ISA en een microarchitectuur?
De ISA is de specificatie die software ziet: instructies, registers en gedrag. De microarchitectuur is een specifiek hardwareontwerp dat die specificatie implementeert, zodat twee processors met verschillende microarchitecturen dezelfde programma's kunnen uitvoeren als ze dezelfde ISA delen.
Zijn x86, Arm en RISC-V instructiesetarchitecturen?
Ja. Het zijn drie verschillende ISA's, dus machinecode die voor de ene is gecompileerd, kan niet direct op een andere draaien, ook al wordt elk door veel verschillende processorontwerpen geïmplementeerd.
Wat is het verschil tussen een ISA en een ABI?
De ISA definieert wat de processor uitvoert, terwijl de ABI een softwareconventie daarbovenop is die calling conventions, groottes van datatypen en systeemaanroepen regelt. Eén ISA kan meerdere ABI's hebben, bijvoorbeeld voor verschillende besturingssystemen.