04/12/2015 22:59

04/12/2015 22:59
Praktiska kommenterar
●
●
Laborationsanmälan tillgänglig
–
Simuleringslabbar => kan köras hemifrån
–
Redovisa på labbtillfälle
MIA (labb 4) kräver X-windows
TSEA28 Datorteknik Y (och U)
Föreläsning 11
–
Grafiskt interface
–
Fungerar inte med putty under windows 7/8/8.1
Kent Palmkvist
Datorteknik, ISY
2
Bus A
Agenda
Agenda
Bus B Bus C
Maskininstruktioner
MAR
CMAR
Read
Write
●
Närmare titt på 68000 implementering
●
Generella egenskaper hos CISC
●
Alternativ struktur: RISC
CMBR
●
Introduktion Pipelining
CPC
Address
Minne
●
Data
MBR
EMBR,B
EIR,B
R0
ER0,B
CR0
ER1,B
CR1
A
F2
F1
F0
B
ALU
C
VCNZ
4
ER0,C
●
R1
TSEA28 Datorteknik Y 2015
Op-code
000
001
010
011
100
101
110
111
EPC,B
CIR
2015-01-05
EMBR,C
PC
IR
3
Exempel på maskininstruktioner som ska kunna
utföras
Op-code |
M eller T
ER1,C
Namn
LOAD R0,M
LOAD R1,M
STORE M,R0
STORE M,R1
ADD
R1,R0
SUB
R1,R0
BRA
T
BEQ
T
Operation
[R0] <- [M]
[R1] <- [M]
[M] <- [R0]
[M] <- [R1]
[R1] <- [R1] + [R0]
[R1] <- [R1] - [R0]
[PC] <- T
Om [Z] = 1 då [PC] <- T
Mikroprogrammet beskriver för varje instruktion
alla styrsignaler och steg för implementering av
instruktionen
–
Hämta instruktion (fetch)
–
Utför instruktion (beror på vilken instruktion som hämtats)
CCR
2015-01-05
TSEA28 Datorteknik Y 2015
04/12/2015 22:59
Bus A
Bus B Bus C
CMAR
Read
Write
Address
Minne
Data
●
MBR
EMBR,B
CMBR
EMBR,C
Minne Read
Data
Minne Write
Clock CXXX
EPC,B
IR
CU
Z
Cxx,Exx,F
R0
ER0,B
CR0
R1
A
F2
F1
F0
ER1,B
ER0,C
ER1,C
B
ALU
C
●
VCNZ
MBR
EMBR,B
CMBR
Läs från minne och placera värde i
EMBR,C
EPC,B
CPC
IR
EIR,B
CIR
R0
ER0,B
CR0
R1
ER1,B
CR0
A
F2
F1
F0
–
Kopiera PC till MAR
–
Öka PC med 1 (peka på instruktion efter)
–
Läs minne till MBR
–
Kopiera MBR till IR
–
Välj rätt mikroprogram baserat på aktuell operation
–
Motsvarande styrsignaler (en av flera möjliga lösningar)
●
ER0,C
Funktion motsvarar ett case-uttryck eller switch i högnivåspråk
uaddr Addrsel kontrollsignal
0
+1
EPC,B = 1, F2F1F0 = 0,0,0, CMAR
1
+1
EPC,B = 1, F2F1F0 = 0,1,0, CPC
2
+1
Read=1,CMBR
3
+1
EMBR,B = 1, F2F1F0 = 0,0,0, CIR
4
K1
-
ER1,C
B
ALU
C
Addr
-
CCR
VCNZ
6
TSEA28 Datorteknik Y 2015
Fetch: Läs instruktion från minne till IR, öka PC
med 1
PC
Effektivt sätt realisera sekvenser av styrsignaler
2015-01-05
2015-01-05
TSEA28 Datorteknik Y 2015
Bus B Bus C
CMAR
Read
Write
Address
Minne
●
Data
MBR
EMBR,B
CMBR
EMBR,C
EPC,B
CPC
IR
CIR
EIR,B
R0
ER0,B
CR0
R1
ER1,B
CR1
A
CU
ER0,C
IR
●
Kopiera R0 till MBR
–
Kopiera IR till MAR (får bara med adressdelen av
instruktionen)
–
Skriv minne från MBR, starta om mikroprogrammet
–
Motsvarande styrsignaler (en av flera möjliga
lösningar)
Addrsel
+1
+1
1
kontrollsignal
ER0,B = 1, F2F1F0 = 0,0,0, CMBR
EIR,B = 1, F2F1F0 = 0,0,0, CMAR
Write=1
K2
0
1
01
0
Addr
0
●
addr addrsel
0
8
Z
C
V
N
1
0
–
Styr enskilda kontrollsignaler i arkitekturen (Cxx,EXX)
–
Välj vad som kan ge nästa address (+1, addr, K1, K2)
–
Alternativ nästa address till mikroprogrammet
–
Mikroprogramminne inte samma som programminne!
IR består av operationskod,
addresseringsmod samt argument
ROM
CCR
TSEA28 Datorteknik Y 2015
1
Register
5
2015-01-05
Databitarna i varje address i ROM
(mikroprogramminnet) har olika funktion
+1
K1 pekar för opcode 010 på adress k (inte bestämd
ännu)
uaddr
k
k+1
k+2
ER1,C
Kontrollenhet CU
Cxx,Exx,F
K1
–
●
B
ALU
C
VCNZ
Z
Utför instruktion 010 (STORE M,R0)
PC
F2
F1
F0
IR
Exekvering av instruktion, del 2
MAR
7
●
Data
CCR
5
Bus A
Address
Minne
Read
Write
CU är mikroprogrammerad
–
Exekvering av instruktion, del 1
CMAR
Skriv värde i Data till minnesaddress
Spara värde i register XXX
(MBR, MAR, PC, IR, R0, R1)
Enable EXXX,B Kopiera värde från XXX till buss B
(MBR,PC,IR,R0,R1)
Enable EXXX,C Kopiera värde från XXX till buss C
(MBR,R0,R1)
ALU
F2F1F0 Välj funktion i ALU
EIR,B
CIR
Bus B Bus C
MAR
Styrsignaler definierade i arkitekturen styrs av
kontrollenhet CU (ansluten mot IR, flaggor och
alla styrsignaler i systemet)
PC
CPC
CR1
Bus A
Arkitektur, styrsignaler
MAR
–
Operationskod (Add, Move, etc.) går via K1
–
Addresseringsmod (direkt, omedelbar, etc) går via K2
ctl
Cxx,Exx,F
Indikerar funktion hos olika
bitar av mikrokodsinstruktionen
2015-01-05
TSEA28 Datorteknik Y 2015
04/12/2015 22:59
Mikroprogram för exemplet
(delar av programmet)
IR
uaddr Addrsel
0
+1
1
+1
2
+1
3
+1
4
K1
k (5)
+1
k+1 (6) +1
k+2 (7) 1
l (8)
Z
l+1 (9) 1
l+2 (10) 1
K2
K1
0
1
+1
01
0
1
Register
0
1
2
3
4
5
6
7
8
9
10
ROM
addr addrsel
5
0
9
Z
C
V
N
1
0
ctl
Cxx,Exx,F
2015-01-05
kontrollsignal
EPC,B = 1, F2F1F0 = 0,0,0, CMAR
EPC,B = 1, F2F1F0 = 0,1,0, CPC
Read=1,CMBR
EMBR,B = 1, F2F1F0 = 0,0,0, CIR
ER0,B = 1, F2F1F0 = 0,0,0, CMBR
EIR,B = 1, F2F1F0 = 0,0,0, CMAR
Write=1
EIR,B = 1, F2F1F0 = 0,0,0, CPC
Designmål för tidiga (< 1990)
mikroprocressorer
Addr
0
l+2
0
0
●
●
●
●
–
DBEQ D0,addr
; test condition, if not true decrement
register and branch
●
11
10
Bakåtkompatibla
2015-01-05
●
●
Avkodning inte allt för svår
Tidigare skriven kod fungerade även på nya
processorer
TSEA28 Datorteknik Y 2015
Processor i Amiga 500
–
Ganska populär hemdator
–
Samtida ungefär med första IBM PC
Baserat bl a på ”reverse engineering”
–
●
Större och längre mikrokod
●
Känd som CISC (Complex Instruction Set Computer)
TSEA28 Datorteknik Y 2015
Numera används högnivåspråk (kompileras)
Analys av 68000
Totalt sett ger det all mer
styrlogik/mikroprogramminne
2015-01-05
Förenkla programmering om möjligt
–
Allt mer och längre instruktionssekvenser
–
●
Låt varje instruktion göra så mycket som möjligt
–
●
Fler allt mer komplexa instruktioner och
addressmoder (exempel från 68000)
MOVM.L D1-D3/A0-A2, -(A7) ; flytta D1-D3, A0-A2 till
stacken
–
Få register, enkel dataväg, få olika instruktioner
Fler styrsignaler behövs
–
Instruktionsorden var korta (8 eller 16 bitar)
Programmering gjordes ofta i assembler
–
Fler interna register
–
IBM PC: Mer än 640 kByte RAM behöver man inte...
–
●
Vidareutveckling från 16 bitars
datorer och framåt
●
–
●
00000 00000 000001 01000000 000 00
00000 00000 000100 01000000 010 00
00000 00000 000000 00000000 000 10
00000 00000 001000 10000000 000 00
00000 10000 000000 00000000 000 00
00000 00000 000010 00010000 000 00
00000 00000 000001 00100000 000 00
00000 00001 000000 00000000 000 01
01010 00101 000000 00000000 000 00
00000 00001 000000 00000000 000 00
00000 00001 000100 00100000 000 00
TSEA28 Datorteknik Y 2015
Minne var dyrt
Motsvarande patent och vetenskapliga
tidningsartiklar finns även för aktuella
processordesigner
70% av ytan till avkodning/kontroll av
processor
–
12
Görs även idag, finns många websiter med
intressanta bilder från aktuella designer
2015-01-05
30% utför beräkningar/flytt av data
TSEA28 Datorteknik Y 2015
04/12/2015 22:59
Alternativ för bättre
prestanda/effektivitet
Analys av prestanda
●
CISC (Complex Instruction Set Computer)
●
RISC (Reduced Instruction Set Computer)
–
Stor och komplicerad instruktionsavkodning
–
Färre och enklare instruktioner än för CISC
–
Långa (många klockcykler) per instruktion
–
Minnesaccess ofta begränsad
–
Långsamma klockcykler
–
Färre addresseringsmoder
●
–
Stora minnen används för avkodning
●
Exempel på RISC-processorer
Viss parallellism mellan olika interna operationer
●
–
Flytta mellan register
●
Räkna upp PC
●
Beräkna minnesadresser
●
–
13
2015-01-05
TSEA28 Datorteknik Y 2015
14
2015-01-05
Load-Store arkitekturer
●
Ofta sedda som RISC-arkitekturer
●
Endast två instruktioner får tillgång till minne
–
–
●
●
●
Fler men enklare instruktioner
TSEA28 Datorteknik Y 2015
Load-Store arkitektur, forts.
●
Exampel på instruktioner som INTE finns i en
typisk RISC
LOAD : läs från minnet
STORE: Skriv till minnet
Oftast begränsat antal adresseringsmoder
●
–
move.b $10080,$4000 ; två minneåtkomster
–
or.b #$04,$10084 ; läs och skriv till minne, inte bara
skriv eller läs
Eventuellt möjlig RISC instruktion
Ofta får maximalt ett register ändras per
instruktion
–
move.b (a0)+,d0 ; två register ändras!
RISC har lite olika betydelse
–
15
ARM (finns i smartphones), MIPS (t ex routrar etc.)
Program tar ofta större plats i minnet för RISC
än för CISC
2015-01-05
Ingen exakt definition finns
TSEA28 Datorteknik Y 2015
16
2015-01-05
TSEA28 Datorteknik Y 2015
04/12/2015 22:59
Villkorliga hopp i RISC
Antal operander
●
En typisk RISC brukar ofta ta tre register som
parametrar till instruktionen istället för två
●
68000: add.b d0,d1 ; d1 = d1 + d0
●
ARM: add r0,r1,r2 ; r0 = r1 + r2
–
●
Villkorliga hopp fungerar ofta som vanligt
–
●
Undantag finns
Omvänd ordning på destination jämfört med 68000
●
–
Flaggregister kan saknas, villkor ligger istället inbakat
i hoppinstruktionen
–
Ex: MIPS: beq r1,r2,label ; hoppa till label om r1=r2
Även villkorlig exekvering av andra
instruktioner kan finnas
–
17
2015-01-05
TSEA28 Datorteknik Y 2015
18
●
subrutin1:
push lr
....
bl subrutin2
....
pop lr
bx
lr
Dessa instruktioner läser/skriver i minnet utan att
vara rena LOAD/STORE instruktioner
Alternativ till JSR/RTS: Länkregister
–
Vid subrutinanrop sparas återhoppsadressen i ett
länkregister (på ARM: lr = r14)
–
Vid återhopp: Sätt PC = länkregister
subrutin2:
....
bx
●
19
2015-01-05
TSEA28 Datorteknik Y 2015
TSEA28 Datorteknik Y 2015
Subrutin med länkregister,
exempel
I en strikt load-store-arkitektur får inte
JSR/RTS finnas
–
Ex: ARM: ADDEQ r1,r2,r3; Om Z = 1 utför r1=r2+r3
2015-01-05
Subrutiner och länkregister i
RISC
●
Uppdatera programräknare om flagga/flaggor
stämmer med villkor
20
lr
; Spara undan återhoppsadress
; Hoppa och länka aktuell PC
; Återställ LR och hoppa
; tillbaks
; Denna subrutin anropar inte någon
; annan subrutin. Alltså behöver inte
; lr sparas undan
; hoppa tillbaks
Mer beskrivning av detta hittas i avsnitt 3.8.1 i
kursboken
2015-01-05
TSEA28 Datorteknik Y 2015
04/12/2015 22:59
Enklare instruktionsformat
●
Sammanfattning RISC
Enklare instruktionsformat ger enklare
avkodning
–
Jfr MIA-systemet
–
Fasta registerfält (avkodar alltid register på samma
sätt)
–
Vissa kombinationer onödiga/har samma funktion
●
–
●
●
31 30
26 25
21 20
16 15
●
and r0,r0,r0
●
or r0,r0,r0
Enklare instruktionsformat => Lättare bygga
avkodare
0
●
Mindre logik/yta för avkodare
Få instruktioner => Lättare bygga avkodare
och styrmodul
Insparad yta/transistorer kan användas bättre
–
Fler eller snabbare exekveringsenheter
–
Fler register
Alternativt sparad yta => Billigare chip
Dest.
Reg Källa1 Omedelbar operand
1 Opkod Dest.
Ej använt
Reg Källa1 Källa2
26 25 21 20
16 15
11 10
0
3130
0 Opkod
21
2015-01-05
TSEA28 Datorteknik Y 2015
22
2015-01-05
Datorprestanda
●
●
23
Prestandaexempel + area
Klockfrekvens har dålig koppling till prestanda
●
Prestandamått MIPS: Million Instructions Per
Second
●
Prestandasiffror från boken ”Embedded
software development with C”
MIPS:
Bättre mått än klockfrekvens
–
MC68000: Ca 1 MIPS vid 8 MHz
68000
–
Fortfarande otydligt: Vad består en instruktion av?
–
MC68020: Ca 4 MIPS vid 20 MHz
200000
–
80386DX: Ca 8.5 MIPS vid 25 MHz
275000
–
ARM2: Ca 4 MIPS vid 4 MHz
RISC behöver fler instruktioner än CISC?
Bättre mått: SPEC (Standard Performance
Evaluation Corporation)
2015-01-05
#Transistorer
–
●
●
TSEA28 Datorteknik Y 2015
–
Benchmarkprogram fokuserar på tid för att slutföra en
definierad uppgift (källkod finns)
–
Fortfarande inte samma som upplevd hastighet hos dator
–
Flera olika delar testas (heltal, flyttal) med olika
deluppgifter
TSEA28 Datorteknik Y 2015
24
2015-01-05
TSEA28 Datorteknik Y 2015
25000
04/12/2015 22:59
Ytterligare förbättringar
●
●
Analysera sekvens av operationer i en processor
–
Hämta instruktion
–
Avkoda instruktion
–
Hämta operander
–
Utför instruktion
–
Spara resultat
De flesta delar i processorn används inte hela
tiden
–
Borde gå att hämta nästa instruktion medan föregående
instruktion avkodas
●
–
25
Alternativ datorarkitektur
●
Minne
Program
och data
Processor
●
●
Von Neumann
27
Processor
Minne
data
●
TSEA28 Datorteknik Y 2015
26
–
RISC-arkitektur av LOAD-STORE typ
–
Alla register placerade i ”Register file” (klockad)
●
–
Programminne för sig
–
Dataminne för sig
–
Känt som Harvard-arkitektur
2015-01-05
TSEA28 Datorteknik Y 2015
Exekveringstid i exemplet
●
Klockfrekvens begränsas av längsta väg från
register till nästa register
Två register kan läsas och 1 register skrivas samtidigt
TSEA28 Datorteknik Y 2015
Går inte med arkitektur som använts hittills: von
Neumann.
Ny arkitektur: Dela minnet
Harvard
Inte säkert den kan användas om t ex hopp utförs
Enkelt exempel från kursboken (avsnitt 7.2)
2015-01-05
Förenklas om nästa instruktion kan läsas
parallellt med att data läses och skrivs i
minnet
–
Minne
data
Enkel RISC-baserad struktur
Chapter 7 Handout från
http://alanclements.org/supplements.html
Förenklas om få olika möjliga sekvenser
Ide: Överlappa operationer från olika instruktioner
2015-01-05
●
Ide att överlappa flera instruktioner kallas
pipelining
28
2015-01-05
–
Instruktion LDR D,(S1,#L)
–
tcycle = tpc + tImem + tRF + tALU + tDmem + tMPLX + tRF
TSEA28 Datorteknik Y 2015
04/12/2015 22:59
Pipelining, 1:a försöket
●
Korta ned tcycle genom att läsa nästa
instruktion innan föregående är slut
–
Utan pipelining
tPC
Läs Imem
Läs RF
Pipelining: Fler steg
●
Kan dela upp instruktionen ytterligare (Ex 5 steg)
Kräver ett register mellan Imem och resten av
processor
ALU t MPLX
Läs Dmem
t MPLXSkriv RF
tid
●
tPC
ALU tMPLX
–
Läs Dmem
tMPLXSkriv RF
Läs Imem
tPC
Läs RF
t PC
29
2015-01-05
ALU t MPLX
Läs Imem
TSEA28 Datorteknik Y 2015
www.liu.se
Läs Dmem
Läs Imem
t MPLXSkriv RF
Läs RF
Hämta instruktion
●
Läs operand
●
Beräkna (ALU-operation)
●
Minnesaccess
●
Skriv till registerfil
Borde ge upp till 4 gånger högre klockfrekvens
Med pipelining
Läs RF
●
Ger andra problem
●
Hoppaddress beräknas sent
●
Läsning från dataminne till register
●
Användning av registervärde innan värdet tillgängligt
ALU
30
2015-01-05
TSEA28 Datorteknik Y 2015