Instructie set: principes

29
slide 1 Structuur en Organisatie van Computersystemen: deel 2 Yolande Berbers Instructie set: principes

description

Instructie set: principes. classificatie van instructie sets. classificatie gebaseerd op type intern geheugen op CPU zie fig. 2.1 stapel-architectuur (impliciete operanden) accumulator-architectuur (één operand is impliciet) register-architectuur (expliciete operanden) - PowerPoint PPT Presentation

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)