Mandag 26. januar

Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
ITPE/DATS 2400: Datamaskinarkitektur og
Nettverk
Instruksjonsettarkitektur
Knut Nygård / T. M. Jonassen
Institute of Computer Science
Faculty of Technology, Art and Design
Oslo and Akershus University College of Applied Sciences
27. Januar 2015
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Oversikt
1
Sekvensiell logikk
2
En enkel maskinmodell
3
Om ARC - A RISC COMPUTER
4
ARC - instruksjonsettet
5
ARC - pseudo-operasjoner
6
ARC - syntetiske instruksjoner
7
ARC - et eksempel
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Mønstergjenkjenner
Eksempel med sekvensiell krets med D-vipper som gjenkjenner
mønsteret 1101 i en bit-strøm.
Gjøres på whiteboard.
Eksemplet er gitt som eksamensoppgave våren 2013, se
oppgave 1 b.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Bus
Data bus: Kommunikasjonslinjer for å overføre informasjon.
Addresse bus: Kommunikasjonslinjer dedikert for å sende
adressser.
Control bus: Kommunikasjonslinjer for å sende kontrollsignaler
(styringssignaler).
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
CPU
En modell av en CPU med ALU (aritmetisk-logisk enhet),
registerfil og kontrollenhet.
ALU og registerfil kalles en datapath, og utfører operasjoner
(dekodede instruksjoner) som kalles mikrooperasjoner.
Kontrollenheten dekoder instruksjoner fra minnet (og andre
ting).
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
CPUs arbeidssteg skjematisk
1. Hent neste instruksjon fra minnet som skal utføres.
2. Dekode opcode (operation code).
3. Les eventelle operand(er) fra minnet.
4. Utfør instruksjonen og lagre eventuelle resultater.
5. Start på nytt med ny instruksjon.
Viktige registere:
Programteller (PC): Inneholder adressen til neste instruksjon
som skal utføres.
Instruksjonsregister (IR): Inneholder instruksjonen som skal
utføres før den dekodes.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Datapath
Skjematisk fremstilling av en datapath.
Vi skal se nøyere på denne senere (kap. 5).
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Minnet
Minnemodellen for ARC arkitekturen vi skal bruke som
eksempel i dette kurset.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Mer om ARC-minnemodellen 1
Flatt minne.
Minste adresserbare enhet er en byte.
Ordstørrelse (word) er fire byte.
Bruker big-endian.
Big-endian: Første bit på adresse mest signifikant.
Little-endian: Første bit på adresse minst signifikant.
32-bits adresser, derfor er en adresse 32/4 = 8
heksadesimale siffer.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Mer om ARC-minnemodellen 2
Deler av minnet reservert OS.
Deler av minnet reservert stack.
Deler av minnet reservert I/O-enheter.
Resten kalles user space. Minne for programmer.
Bruker hard-alignment modellen: To halvord (2 byte hver)
må settes sammen like-byte adresser, og to ord (4 byte
hver) må settes sammen på like-ord adresser.
Halvord har adresser som er like, ord har adresser som er
multipler av 4.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
ARC - A RISC Computer
Forfatterene av læreboken har laget en tenkt og forenklet
maskinmodell: ARC - A Risc Computer.
RISC - Reduced Instruction Set Computer.
Det er laget en simulator for denne etter modell av SPARC
prossorene fra Sun (open doc ca 1992).
Simulator (i Java) kan lastes ned fra
bluemaster.cs.hioa.no under:
/edu/darknet-15/files/ARCToolsv2.1.2.zip
Arkivet inneholder simulator, eksempler og README-filer.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Om ARC
Vi skal i det følgende se litt mer detaljert på modellen ARC.
Minnet.
Registerfilen, andre registere.
ARC assemblerspråket generelt.
Instruksjonsettet.
ARC simulatoren.
Noen enkle eksempler på ARC assembler programmer.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Minnet
Detaljer:
Resevert OS: Adresse 0 til 211 − 1 altså 2048 bytes.
User space: Fra adresse 2048 til topp på stack.
Stack: Starter på adresse 231 − 4 og vokser mot lavere
adresser.
Reservert I/O enheter: Adresser mellom 231 og 232 − 1.
(Memory mapped I/O).
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Memory modell
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Registerfil - registere
ARC har en registerfil med 32 registere, hvert på 32 bit (ett
ord).
Disse betegnes med %r0 til %r31.
Tre av disse har spesiell bruk: %r0 er alltid 0, %r14 brukes
som stackpeker, %sp og%r15 er et link register, brukes ved
kall av subrutiner.
I tillegg finnes %pc (32 bits) som inneholder adressen til
insrtuksjonen som utføres.
Vi har også %psr (processor status register) som
inneholder informasjon om status til prossessor.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Traps
Registeret PSR har bits som støtter traps.
Dette er en mekanisme for å stoppe vanlig flyt av
instruksjoner.
PÅ noen prossessorer kalles dette interupts.
På x86 prossessorer brukes dette for kommunikasjon med
annen hardware.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Om instruksjonene generelt
Alle instruksjoner har 32 bits størrelse.
ARC er en load - store maskin.
Dette betyr at minne bare kan aksesseres gjennom slike
operasjoner.
Alle operasjoner utføres på data i registere.
ARC instruksjonene (50) er en delmengde av SPARC
prossessoren instruksjoner (200).
ARC og SPARC instruksjoner har samme syntaks (nesten
alltid sant).
ARC er en 2-komplement maskin.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Instruksjonstyper
Aritmetiske instruksjoner.
Logiske instruksjoner.
Load/store instruksjoner.
Kontroll (branch) instruksjoner
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Eksempel 1
add rs1, reg or imm, rd
vil medføre
rd ← rs1 + rs2
hvor rs2 er reg eller imm.
add %r1, %r2, %r3
gir %r3 ← %r1 + %r2.
add %r1, 12, %r2
gir %r2 ← %r1 + 12.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Mer om instruksjoner
Notasjonen a ← b + c kalles register transfer language
(RTL).
Alle instruksjoner lagres på 32 bits.
Dette gir 13 bits til konstanter, så disse må være mellom
−4196 og 4195.
Konstanter tolkes i base 10.
Konstanter som starter med 0x tolkes heksadesimalt.
En instruksjon har inntil seks felt: Label, opcode, opptil tre
operander, kommentar
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Load/store 1
Load:
ld [address], rd
rd ← M[address]
Store:
st rd, [address]
M[address] ← rd
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Load/store 2
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Kontroll operasjoner
Brukes til å komme til en annen del av programmet.
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Pseudo-operasjoner
Pseudo-operasjoner er ikke instruksjoner, men direktiver til
assembleren.
Eksempler:
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Syntetiske instruksjoner (makro)
En “syntetisk” instruksjon er ikke en instruksjon men noe som
omformes av assembler til instruksjoner under assemblingen.
Eksempler:
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
Addere to tall
! Legg sammen to tall
.begin
.org 2048
prog1: ld [x], %r1 ! Legg x i r1
ld [y], %r2 ! Legg y i r2
addcc %r1, %r2, %r3 ! r3 = r1 + r2
st %r3, [z] ! Lagre r3 i z
jmpl %r15 + 4, %r0 ! Avslutt
! Data
x:
15
y:
12
z:
0
.end
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
bin - filen
00000800
00000800
00000804
00000808
0000080c
00000810
00000814
00000818
0000081c
c2002814
c4002818
86804002
c620281c
81c3e004
0000000f
0000000c
00000000
university-logo
Sekvensiell logikk En enkel maskinmodell Om ARC - A RISC COMPUTER ARC - instruksjonsettet ARC - pseudo-operasjoner
lst -filen
(ARCTools Version 2.0.2)
HexLoc
DecLoc
MachWord
Label
00000800
00000804
00000808
0000080c
00000810
0000002048
0000002052
0000002056
0000002060
0000002064
c2002814
c4002818
86804002
c620281c
81c3e004
prog1:
00000814
00000818
0000081c
0000002068
0000002072
0000002076
0000000f
0000000c
00000000
x:
y:
z:
Instruction
.org 2048
ld [2068], %r1
ld [2072], %r2
addcc %r1, %r2, %r3
st %r3, [2076]
jmpl %r15, 4, %r0
Comment
!
!
!
!
!
!
Legg x i
Legg y i
r3 = r1
Lagre r3
Avslutt
Data
r1
r2
+ r2
i z
--- Symbol Table --x: 2068
z: 2076
prog1: 2048
y: 2072
university-logo