Document

advertisement
Instructie set: principes
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 1
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)
 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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 2
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 3
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 4
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)

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 5
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)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 6
operaties

verschillende categorieën: zie fig. 2.10


enkele eenvoudige instructies maken vaak een heel groot
deel uit van de gebruikte instructies


nieuwe categorie: multimedia 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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 7
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 8
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 9
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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 10
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 11
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 12
de rol van compilers (vervolg)

doelstellingen van compilers
correcte code
 snelheid van gecompileerde code
 snelle compilatie
 ondersteuning voor debugging
 code van meerdere talen samen gebruiken

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 13
de rol van compilers (vervolg)

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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 14
de rol van compilers (vervolg)

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:


Yolande Berbers
vaak complexere gegevensstructuren en bereikbaar via
pointers
niet geschikt voor registers
Structuur en Organisatie van Computersystemen: deel 2
slide 15
de rol van compilers (vervolg)

allocatie van variabelen en hun impact (2)

heap:


Yolande Berbers
vaak complexere gegevensstructuren en bereikbaar via
pointers
niet geschikt voor registers
Structuur en Organisatie van Computersystemen: deel 2
slide 16
de rol van compilers (vervolg)

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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 17
fouten en valstrikken

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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 18
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 19
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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 20
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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 21
karakteristieken van RISC architecturen (vervolg)
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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 22
karakteristieken van RISC architecturen (vervolg)
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

Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 23
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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 24
voordelen van RISC-filosofie (vervolg)

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)
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 25
voordelen van RISC-filosofie (vervolg)

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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 26
voordelen van RISC-filosofie (vervolg)

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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 27
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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 28
overzicht van RISC architecturen (vervolg)

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
Yolande Berbers
Structuur en Organisatie van Computersystemen: deel 2
slide 29
Download