Instructie set: principes
-
Upload
karleigh-wilkinson -
Category
Documents
-
view
48 -
download
0
description
Transcript of Instructie set: principes
slide 1Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
Instructie set: principes
slide 2Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
classificatie van instructie sets classificatie gebaseerd op type intern geheugen op
CPUzie fig. 2.1 stapel-architectuur (impliciete operanden) accumulator-architectuur (één operand is impliciet) register-architectuur (expliciete operanden)
register-geheugen-architectuur register-register-architectuur geheugen-geheugen-architectuur
verdere verdeling van register-architectuur (fig. 2.2) aantal operanden die uit het geheugen mogen komen 2 of 3 operanden voor een ALU operatie
voor en nadelen van deze varianten: fig. 2.3
slide 3Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
classificatie van instructie sets voordelen van registers
gemakkelijker te gebruiken voor compiler dan stapel of accumulator
efficiënter dan stapel of accumulator voor lange expressies
registers kunnen variabelen bevatten minder verkeer met geheugen
– vermindert de geheugen-bottleneck– sneller
compactere code– geen echte lange instructies– vermindert de geheugen-bottleneck
slide 4Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
classificatie van instructie sets aantal registers
nodig voor evaluatie van expressies, doorgeven van parameters, bijhouden van variabelen
voor compiler: liefst allemaal algemeen bruikbaar indien teveel: veel werk bij saven bij procedure
oproepen
slide 5Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
geheugen adressering little endian ; big endian (2143 ; 1234) bytes, half-woorden, woorden, dubbel-woorden aligneren adresseringsmodes
fig. 2.5 geeft een mooi overzicht meest gebruikte: immediate, displacement, register
indirect keuze van adressingsmodes beïnvloeden:
aantal instructies in een programma (IC) complexiteit van de processor gemiddelde duur van een instructie (CPI)
slide 6Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
geheugen adressering (vervolg) adresseringsmodes (vervolg)
fig. 2.6-2.9 tonen statistieken van gebruik van deze adresseringsmodes
fig 2.6: immediate, displacement, register deferred of indirect stellen 75% tot 99% van de adresseringsmodes voor
displacement: de grootte die aangeboden wordt beïnvloedt direct de instructielengte (fig 2.7)
immediate:– aangeboden in welke operaties ? (fig. 2.8)– de grootte die aangeboden wordt beïnvloedt
direct de instructielengte (fig 2.9)
slide 7Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
operaties
verschillende categorieën: zie fig. 2.10 nieuwe categorie: multimedia instructies
enkele eenvoudige instructies maken vaak een heel groot deel uit van de gebruikte instructies bv intel : 10 instructies worden 96% van de tijd
gebruikt (zie fig. 2.11)
instructies voor control flow voorwaardelijke sprongen sprongen procedure-oproepen procedure-terugkomst fig 2.12 toont hun relatief gebruik
slide 8Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
operaties (vervolg) adres specifiëren
relatief aan de programma teller (PC) is meest gebruikte gebruikt weinig bits is onafhankelijk van plaats van code moet gekend zijn op moment van compilatie maakt de code adres-onafhankelijk sprongafstand beïnvloedt weer instructielengte (fig.
2.13) dynamisch adres: meestal register indirect jump
terugkeer van procedure case bevelen dynamisch gedeelde bibliotheken virtuele functies in OO-talen
slide 9Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
operaties (vervolg) 3 belangrijke technieken voor het specifiëren van
spronginstructie (fig. 2.14) met behulp van conditiecode met behulp van een conditieregister compare and branch instructie fig 2.15 toont de frequentie van het gebruik van
verschillende soorten testen bij voorwaardelijke sprongen
twee belangrijke methoden voor het saven van registers caller saving callee saving soms gebruikt de compiler een combinatie van de twee
slide 10Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
type en grootte van de operanden twee alternatieven om types te specifiëren
in de opcode van de instructie als een veld bij de operand (bv symbolics machine),
zie museums floating point: IEEE standard 754 heel soms nog 4-bit-binary coded decimal voorlopig is een woord nog typisch 32 bit in de toekomst zal dat 64 bit worden
slide 11Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
codering van instructie set codering bepaalt
grootte van het gecompileerde programma implementatie van de CPU
elementen met invloed op grootte van instructie aantal registers aantal adresseringsmodes
fig 2.17: drie klassieke keuzen voor encodering handige lengtes
zeker een veelvoud van bytes liefst een veelvoud van woorden vaste lengte: geeft eenvoudigere implementatie maar
grotere programma’s
slide 12Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
de rol van compilers vroeger: architectuurbeslissingen moesten het
programmeren in assembler gemakkelijk maken nu: architectuurbeslissingen moeten het werk van
de compiler vergemakkelijken de structuur van een moderne compiler (fig. 2.18)
bestaat uit meerdere passen vermindert de complexiteit van compilers geeft soms problemen: sommige hoog-niveau
optimisaties moeten gebeuren voordat bepaalde details gekend zijn
bevat taal-onafhankelijke delen die gedeeld kunnen worden door meerdere talen
slide 13Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
doelstellingen van compilers correcte code snelheid van gecompileerde code snelle compilatie ondersteuning voor debugging code van meerdere talen samen gebruiken
de rol van compilers (vervolg)
slide 14Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
classificatie van optimisaties (zie fig. 2.19) hoog-niveau optimisaties: op source code niveau lokale optimisaties: in stukken code zonder sprongen
(basic block) globale optimisaties: in stukken code over sprongen
heen toekenning van registers: gebruikt een algoritme van
grafen kleuren dat goed werkt vanaf 16 registers machine-afhankelijke optimisaties: maken gebruik van
kennis van de architectuur fig 2.20: vb van effect van optimisaties
de rol van compilers (vervolg)
slide 15Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
allocatie van variabelen en hun impact (1) stapel:
gebruikt voor lokale variabelen deze worden relatief van stapelwijzer geadresseerd deze zijn meestal enkelvoudig: geschikt voor register
behalve indien een pointer er naar kan wijzen stapel wordt niet gebruikt om uitdrukkingen te
evalueren globale gegevens-ruimte:
vaak complexere gegevensstructuren en bereikbaar via pointers
niet geschikt voor registers
de rol van compilers (vervolg)
slide 16Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
allocatie van variabelen en hun impact (2) heap:
vaak complexere gegevensstructuren en bereikbaar via pointers
niet geschikt voor registers
de rol van compilers (vervolg)
slide 17Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
basisprincipe van compilerconstructie maak het veelvoorkomend geval snel maak het zeldzame geval correct
goede architectuur voor een compiler is regelmatig
weinig uitzonderingen, voorziet alle gevallen orthogonaal (bv operaties en adresseringsmodes)
biedt primitieven, geen zogenaamde oplossingen (RISC vs CISC)
laat geen moeilijke keuzen tussen alternatieven wat gekend is bij compilatie moet als constante kunnen
opgenomen worden
de rol van compilers (vervolg)
slide 18Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
fout: er bestaat zoiets als een typisch programma fig. 2.31: vb van de grootte van gegevens gebruikt in
4 programma’s van SPEC92
fout: een architectuur met fouten kan niet succesvol zijn vb: de Intel 80x86
ondersteunt segmentatie en niet paginatie, heeft een accumulator en niet algemene registers, gebruikt een stapel voor FP-data, ...
fout: je kunt een foutloze architectuur ontwerpen wat een goede architecturale beslissing lijkt vandaag zal
binnen een paar jaar als een architecturale fout aanzien worden
fouten en valstrikken
slide 19Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
fouten en valstrikken (vervolg) valstrik: CISC aanpak (Complex Instruction Set
Computer) doel: verkleinen van de semantic gap (= afstand tussen
semantische waarde van assembler-instr. en hogere programmeertaal-instructies)
grote stijging van kost software in jaren 70 (software crisis)
meer gebruik van hogere programmeertaal hoe: ontwerp van complexe instructies om hogere
programmeertalen te ondersteunen complexe instructies werden uitgevoerd door
microprogrammatie
slide 20Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
fouten en valstrikken (vervolg) CISC aanpak mislukte omdat
moeilijk om instructies te ontwerpen goed voor alle HLL instructies doen vaak meer dan nodig instructies slechts gebruikt in beperkte context
(semantic clash) CISC compilers gebruiken uiteindelijk vaak vooral de
meer eenvoudige instructies (dus het zogenaamde voordeel van de complexe instructies wordt niet gebruikt)
complexe instructies compliceren de controle eenheid op de CPU, en dit resulteert in tragere simpele instructies
slide 21Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
karakteristieken van RISC architecturen
1 klein aantal instructies (nog steeds waar ???) kleinere opcodes gemakkelijker te decoderen
2 klein aantal adresseringsmodes doe complexe adressering in software dit vergemakkelijkt de instructie set, het decoderen en
de controle-eenheid
3 klein aantal instructie-formaten vaste lengte, veelvoud van woordlengte, vaste lay-out instructies mogen niet over pagina’s heengaan tegelijk decoderen en registers ophalen eenvoudigere controle-eenheid
slide 22Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
4 één machine-instructie per klokcyclus RISC instructies zijn niet ingewikkelder dan de
microinstructies in een CISC-architectuur vereenvoudigt de pipeline
5 geheugen-adressering enkel via LOAD/STORE instructies eenvoudigere instructie set
karakteristieken van RISC architecturen (vervolg)
slide 23Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
6 CPU heeft een relatief groot aantal registers meeste operaties zijn register-register vereenvoudigt de instructie set en de controle-eenheid
(vgl: VAX: 25 ADD instructies; RISC I en RISC II: 1 of 2 ADD's)
registers zijn bij RISC het algemeen geval, bij CISC waren ze de uitzondering
7 controle-eenheid volledig in hardware (geen microprogrammatie)
8 gerichte inspanning om HLL te ondersteunen procedures lokale variabelen arrays
karakteristieken van RISC architecturen (vervolg)
slide 24Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
voordelen van RISC-filosofie RISC en VLSI realisatie
relatief weinig instructies, weinig adresseringsmodes, weinig instructie formaten
eenvoudig decoderings- en uitvoerings-subsysteem in hardw
(= controle eenheid is kleiner) RISC I 6% RISC II 10% MC68020 68% CISC >50% (in het algemeen)
meer plaats op de chip vrij voor andere doeleinden (registers, cache, I/O poorten, delen van het hoofdgeheugen)
minder verschillende soorten elementen op de chip maakt de chip gemakkelijker te ontwerpen
attractief om op 1 chip te implementeren
slide 25Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
RISC en snelheid eenvoudigere en kleinere controle-eenheid is sneller kleinere instructie set, weinig adresseringsmodes en
instructie-formaten betekent een snellere decodering een groot aantal registers betekent minder
geheugentoegangen register-register operaties zijn sneller dan operaties
met geheugentoegang veel registers maken het mogelijk om parameters via
registers door te geven gestroomlijnde instructieafhandeling is heel geschikt
voor een implementatie met pipeline (zie H3 en H4)
voordelen van RISC-filosofie (vervolg)
slide 26Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
RISC en ontwerpkost, betrouwbaarheid eenvoudige controle-eenheid
algemene ontwerpkosten verlagen minder kans op ontwerpfouten gemakkelijk om de fouten te vinden en te verbeteren kortere tijd om een ontwerp te maken
– goedkoper
– minder kans dat het product verouderd is als het klaar is
eenvoudiger ontwerp van Virtual Memory Management Unit omdat instructies pagina-grenzen niet overschrijden
voordelen van RISC-filosofie (vervolg)
slide 27Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
RISC en ondersteuning voor hogere programmeertalen compilers zijn gemakkelijker te schrijven
omdat er minder instructies zijn om tussen te kiezen compilers kunnen af zijn als de machine af is
je kunt beter optimiseren in compilers omdat er meer mogelijkheden zijn om code te herorganiseren
groter aantal registers: mogelijk om hun gebruik te optimiseren
voordelen van RISC-filosofie (vervolg)
slide 28Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
overzicht van RISC architecturen Appendix C:
Hewlett Packard PA-RISC IBM en Motorola PowerPC SGI MIPS Sun SPARC DLX: voorbeeld-machine van Patterson en Hennessy
figuur C.1: overzicht van de belangrijkste kenmerken van
de eerste versies van deze architecturen merk de grote gelijkenis op
figuur C.12 overzicht van dezelfde kenmerken bij enkele
CISC-architecturen
slide 29Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers
figuur C.14: toegevoegde kenmerken aan de verschillende architecturen
stamboom van de bestaande RISC-architecturen (fig. C.13) Patterson (auteur van het boek) is de vader van de
Berkeley RISC Hennessy (auteur van het boek) is de vader van de
Stanford MIPS
overzicht van RISC architecturen (vervolg)