Professional Documents
Culture Documents
Apunts de La Màquina Rudimentària PDF
Apunts de La Màquina Rudimentària PDF
Bus de dades
Bus dadreces
Bus de control
CPU
UP
UC
MEMRIA
E/S
a travs del Bus de Control es transmeten els senyals que possibiliten que les
tres unitats actun de manera coordinada.
Els tres mduls de larquitectura von Neumann constitueixen la circuiteria electrnica o nivell
fsic dun computador, o hardware. El hardware s gestionat pels programes, que
constitueixen el software. El software sestructura en nivells (Figura 1.2):
Aplicacions
Llenguatges dalt nivell
Sistema operatiu
Llenguatge mquina
Nivell fsic
CPU
Memria
Bus de dades
UP
3
11
UC
16
Min
Mout
M@
L/E
16
Bus dadreces
Bus de control
La memria
Les instruccions i les dades de lMR es codifiquen en 16 bits; per tant, les paraules de
memria i els busos de dades sn de 16 bits damplada. La memria t 256 paraules, i per
tant el bus dadreces s de 8 bits. Pel bus de control hi viatja un sol senyal, L/E, que indica en
cada moment a la memria si es vol realitzar una operaci de lectura (0) o una escriptura (1).
Per referir-nos al contingut de la paraula que hi ha a ladrea a usarem la notaci M[a]. Per
exemple, a la Figura 1.4 es compleix que M[FDh] = D964h.
ADREA
CONTINGUT
01h
2346h
02h
8675h
03h
0005h
04h
0087h
...
6D62h
...
00h
FDh
D964h
FEh
CA10h
FFh
0091h
Banc de Registres: conjunt de registres que permeten guardar les dades amb
qu treballen els programes quan es porten de la memria a la CPU per a operar
amb elles o consultar-les. Hi ha 8 registres de 16 bits, que sidentifiquen pels
noms R0, R1, ..., R7. El registre R0 t la particularitat que no shi pot escriure i
sempre cont un 0.
Bits de Condici (flags): sn dos bits que indiquen en tot moment si el resultat
de lltima operaci realitzada per lALU ha estat negatiu (bit N) o zero (bit Z).
Unitat de Control
Unitat de Procs
11
Banc
de
Registres
PC
IR
3
Bits N Z
de condici
ALU
Tipus dinstruccions
El Llenguatge Mquina de lMR t tres tipus dinstruccions:
Cada instrucci t un cert nombre doperands. Els operands font indiquen on sn les dades
que ha de fer servir la instrucci, i loperand dest indica on sha de guardar el resultat de
lexecuci de la instrucci, en cas que nhi hagi. Les instruccions de salt no utilitzen cap dada
ni generen cap resultat, noms indiquen a quina adrea shaur de saltar en cas que es
compleixi la condici.
Lexecuci dalgunes instruccions (no totes) fa que els bits de condici sactualitzin dacord
amb el resultat:
1 si el resultat < 0
N :=
0 si no
1 si el resultat = 0
Z :=
0 si no
adrea_base(Ri)
on adrea_base s un nmero natural en el rang [0, 255] i Ri s el nom dun registre del
Banc, que en aquest context es diu que fa el paper de registre ndex. Ladrea efectiva de
loperand, s a dir, la seva adrea a la memria, es calcula aix:
DESPRS
0Ch
R1
R3
Bit Z
Bit N
Memria
Registres
LOAD 12(R2), R2
ABANS
DESPRS
0Bh
0Ch
R2
Bit Z
Bit N
ABANS
DESPRS
0Bh
R0
R5
Bit Z
Bit N
Memria
Registres
Memria
Registres
Codificaci en LM
Les instruccions daccs a memria es codifiquen en Llenguatge Mquina de la manera
segent:
2
CO
15
3
Rd/Rf
13
adrea_base
Ri
10
LOAD
00
Rd
Ri
adrea_base
STORE
01
Rf
Ri
adrea_base
els camps que codifiquen registres (Rd, Rf i Ri) tenen 3 bits, donat que el Banc t
8 registres; per fer referncia al registre Rx es codifica el nmero x en binari
natural
8
Llenguatge
Assemblador
Llenguatge Mquina
en hexadecimal:
LOAD 10(R3), R1
0B0Ah
LOAD 0(R0), R1
0800h
4364h
7FFFh
Arithmetic shift right, desplaament aritmtic cap a la dreta dun bit; el bit de ms
pes es replica per tal de mantenir el signe. s equivalent a una divisi entera per
2.
AND font1, font2, dest
#nmero
on nmero [-16, 15].
A continuaci es mostren alguns exemples dexecuci dinstruccions A-L.
DESPRS
R3
R4
R5
Bit Z
Bit N
ABANS
DESPRS
R1
R2
Bit Z
Bit N
ABANS
DESPRS
R2
R5
Bit Z
Bit N
ABANS
DESPRS
R0
R1
Bit Z
Bit N
ASR R2, R5
10
Codificaci en LM
Les instruccions A-L es codifiquen en Llenguatge Mquina de la manera segent:
2
Instruccions A-L amb un
operand immediat
CO
15
Rd
13
immediat
Rf1
10
3
OP
ADDI
11
Rd
Rf1
immediat
000
SUBI
11
Rd
Rf1
immediat
001
Rd
CO
15
13
3
7
00
Rf2
Rf1
10
2
4
OP
0
ADD
11
Rd
Rf1
Rf2
00
100
SUB
11
Rd
Rf1
Rf2
00
101
ASR
11
Rd
Rf2
00
110
AND
11
Rd
Rf2
00
111
Rf1
En totes elles el camp CO t el valor 11. Per distingir entre elles es fa servir el camp OP
(Operaci, bits 2:0); observem que hi ha dues combinacions daquests 3 bits que no es fan
servir, donat que noms hi ha 6 instruccions A-L.
Per codificar els operands immediats calen 5 bits (7:3), donat que el rang de valors
possibles s [-16, 15] i es codifiquen en complement a 2. En les instruccions amb tots els
operands en registres els bits 4:3 no es fan servir, i contenen el valor 00.
La instrucci ASR t un valor indefinit en els bits 10:8 (camp Rf1), donat que noms t un
operand font.
A continuaci es mostren alguns exemples de codificaci dinstruccions A-L en LM.
Llenguatge
Assemblador
Llenguatge Mquina
en hexadecimal:
EC04h
DB09h
ASR R2, R2
D046h
FFE7h
11
Instruccions de salt
Les instruccions de salt donen al processador la possibilitat de trencar el seqenciament
implcit. Per qu es produeixi aquest trencament sha de complir la condici de salt. Si no es
compleix, es segueixen executant les instruccions en seqncia; si es compleix, es diu que el
processador salta o pren el salt. Les instruccions de salt sn necessries per implementar
sentncies dalt nivell de tipus condicional i iteratiu.
Hi ha diverses instruccions de salt, que es distingeixen perqu la condici de salt que
savalua s diferent en cadascuna delles. La sintaxi s
codi_doperaci adrea_dest_del_salt
on codi_doperaci s el nom de la instrucci i adrea_dest_del_salt indica ladrea de la
instrucci que sexecutar a continuaci en cas que es prengui el salt; per tant, s un nmero
entre 0 i 255.
La condici de salt savalua en funci del resultat de lltima instrucci aritmtica o de
crrega que ha executat el processador; la utilitat dels bits de condici s justament facilitar
aquesta avaluaci. En concret, les instruccions de salt de la Mquina Rudimentria sn les
segents:
...lower
BG
...greater
BEQ
...equal
BNE
...not equal
BLE
...lower or equal
BGE
...greater or equal
BR
Branch
Qu savalua
...menor que 0
N=1
N=0iZ=0
...igual a 0
Z=1
...diferent de 0
Z=0
N=1oZ=1
N=0
Salt incondicional
En la instrucci de salt incondicional, BR, no savalua cap condici, sempre es pren el salt. En
executar les instruccions de salt no es modifiquen el bits de condici.
A continuaci es mostren alguns exemples dexecuci dinstruccions de salt.
BR 25
ABANS
DESPRS
xxxx xxxx
0001 1010
Bit Z
Bit N
PC
12
BGE 174
ABANS
DESPRS
0001 1000
0001 1001
Bit Z
Bit N
ABANS
DESPRS
0001 1000
1010 1111
Bit Z
Bit N
PC
BGE 174
PC
Codificaci en LM
Les instruccions de salt es codifiquen en LM aix:
2
CO COND
15
13
@_dest_del_salt
000
10
BR
10
000
000
@_dest_del_salt
BEQ
10
001
000
@_dest_del_salt
BL
10
010
000
@_dest_del_salt
BLE
10
011
000
@_dest_del_salt
BNE
10
101
000
@_dest_del_salt
BGE
10
110
000
@_dest_del_salt
BG
10
111
000
@_dest_del_salt
En totes elles el camp CO t el valor 10. Per distingir entre elles es fa servir el camp COND
(Condici, bits 13:11); observem que hi ha una combinaci daquests 3 bits que no es fa
servir, donat que noms hi ha 7 instruccions de salt.
El camp dels bits 10:8 no susa, i t el valor 000 per totes les instruccions de salt. Els bits
7:0 codifiquen ladrea dest del salt.
13
Llenguatge
Assemblador
Llenguatge Mquina
en hexadecimal:
BR 25
8019h
BL 0
9000h
BEQ 136
8888h
les variables a, b i mul es guarden a les adreces 00h, 01h i 02h respectivament
14
en hexadecimal
LOAD 0(R0), R1
LOAD 1(R0), R2
ADDI R0, #0, R3
SUBI R2, #0, R0
BLE 0Bh
ADD R3, R1, R3
SUBI R2, #1, R2
BR 06h
STORE R3, 2(R0)
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
000Ah
0005h
0000h
0800h
1001h
D800h
C201h
980Bh
DB24h
D209h
8006h
5802h
carregar
dades
clculs
guardar
resultat
15
LOAD
00
Rd
Ri
adrea_base
15
13
2
STORE
10
15
A-L ENTRE
REGISTRES
Rd
13
5
7
Rf2
Rf1
OP
0
3
10
immediat
Rf1
10
11
15
@_dest_del_salt
7
Rd
000
10
13
COND
11
15
adrea_base
7
Ri
10
13
Rf
13
2
SALTS
01
15
10
3
OP
00
4
Instrucci
de salt
COND
Instrucci
A-L
OP
BR
000
ADDI
000
BEQ
001
SUBI
001
BL
010
ADD
100
BLE
011
SUB
101
BNE
101
ASR
110
BGE
110
AND
111
BG
111
16
Tal com ja havem vist, la Unitat de Procs s el conjunt de dispositius electrnics de la CPU
que permeten dur a terme totes les tasques necessries per a lexecuci dinstruccions.
Vegem quines sn aquestes funcions que la UP ha de ser capa de fer.
En totes les figures daquesta secci sescriuen en cursiva els noms dels senyals generats
per la Unitat de Control (que sestudiaran a la secci segent).
16
Memria
load
Mout
IR
L/E
Ld_IR
L/E
17
ladrea de la instrucci a executar lespecifica la prpia instrucci de salt (que est guardada
a lIR), en els bits 7:0. Per tant, hi ha tamb una connexi entre els bits 7:0 de lIR i el bus
dadreces de la memria. El multiplexor SELADR (Figura 3.2), governat per la UC (senyal
PC/@), permet discriminar amb quin dels dos valors sha dadrear la memria en cada
moment.
PC/@
IR7-0
8
M@
8
8
IR
Memria
PC
PC
load
Ld_PC
+1
1
SELADR
els bits IR10:8 i IR7:5 quan sest executant una instrucci A-L. En aquest moment,
aquests camps corresponen a Rf1 i Rf2 respectivament, s a dir, indiquen quins
sn els operands font.
tamb els bits IR10:8 quan sexecuten instruccions daccs a memria. En aquest
cas corresponen al camp Ri, s a dir, codifiquen el registre ndex.
SL
R0
SL
B.R.
SE
Dout
SE
16
Din
16
val
16
16
load
R1
load
R2
load
R3
load
R4
16
load
R5
16
load
R6
16
load
R7
16
16
16
Dout
16
16
1
Din
El multiplexor SELREG possibilita la connexi daquests tres camins amb lentrada SL del
Banc (Figura 3.4). SELREG est governat per la UC a travs del senyal CRf, de dos bits ja
que s un multiplexor 4-1.
Les escriptures al Banc de Registres es fan en acabar lexecuci duna instrucci A-L o un
LOAD. En tots dos casos el registre dest est codificat en els bits 13:11, i per aix hi ha una
connexi entre els bits IR13:11 i lentrada SE del Banc de Registres. La UC donar ordre
descriptura quan pertoqui mitjanant el senyal ERd.
3
3
no usat
SELREG
SL
B.R.
CRf
13
11 10
87
IR
SE
Dout
ERd
Din
16
19
16
B
16
16
Sumador
Desplaador
Restador
16
16
16
16
AND
16
C0
C1
0
1
mux1
16
0
1
mux2
16
......
16
O15
C2
Els senyals C1 i C0 permeten triar entre una de les 4 operacions A-L. Els 4 mduls operadors
20
estan connectats a les entrades del multiplexor mux1 en un ordre tal que els senyals C1 i C0
es poden connectar amb els bits 1 i 0 de lIR, que mentre sexecuten instruccions A-L
corresponen als 2 bits ms baixos del camp OP (vegeu la Figura 2.1).
El multiplexor mux2 permet triar entre el resultat duna operaci i el valor de lentrada B;
est governat pel senyal OPERAR, generat per la UC. La Figura 3.6 resumeix el paper dels
senyals que controlen lALU.
C2
C1
C0
Sortida
A+B
16
16
B
A-B
B >> 1
A and B
C2
N
Z
ALU
O
C1
C0
OPERAR
IR1
IR0
16
(a)
(b)
Sortida O
El resultat que genera lALU sempre sha descriure al Banc de Registres, i per
aix la sortida O es connecta amb lentrada Din del Banc.
Sortides N i Z
Fan falta dos registres dun bit, RZ i RN, per guardar els bits de condici que
genera lALU a partir del resultat calculat. Les ordres de crrega Ld_RZ i Ld_RN
les dna la UC.
IR7-3
5
B.R.
Dout
IR
EXT
16
16
Din
Ld_RA
load
0
1
SELDAT
RA
Ld_RZ
load
16
Mout
16
3 2
16
16
16
OPERAR
IR2
16
RZ
OPERAR
RN
ALU
load
IR1:0
Ld_RN
Memria
ERd
16
22
Rx15-0
DE
REGISTRES
IR7-0
Ld_R@
load
Rx7-0
BANC
Min
16
16
PC/@
R@
Dout
8
1
SELADR
M@
PC
0
8
Ld_PC
Memria
load
+1
IR
Aquesta circuiteria modifica lleugerament lesquema que shavia proposat per executar
instruccions de salt a la Figura 3.2, ja que ara els bits 7:0 de lIR (adrea dest del salt) passen
pel sumador i pel registre R@ abans darribar a SELADR. Per tal que ladrea dest del salt
no es modifiqui, el valor que se li suma ha de ser 0; aix es pot aconseguir llegint el registre
R0 en aquest moment. s per aquesta ra que les instruccions de salt tenen el valor 000 en
els bits 10:8.
La figura segent mostra tota la circuiteria de la UP. Es pot veure que en total la Unitat de
Control envia 11 senyals per governar la UP. Les informacions que fa servir la UC per donar
valors a aquests 11 senyals sn el tipus dinstrucci que sest executant (bits IR15:14, camp
CO) i el senyal Cond (que indica si sha de prendre o no el salt en executar instruccions de
salt).
23
CLCUL DADRECES
GESTI DEL BANC DE REGISTRES
Min
16
Ld_R@
Rx7-0
3
IR7-5 (Rf2)
no usat
SELREG
2
IR7-0
SL
16
8
1
SELADR
2
CRf
IR13-11 (Rd)
SE
Rx15-0
BANC Dout
DE
REGISTRES
16
+1
IR7-3
Ld_PC
24
UNITAT DE CONTROL
Ld_IR
Ld_PC
Ld_IR
16
ERd
M@
Din
Ld_R@
IR
EXT
MEMRIA
IR10-8 (Rf1/Ri)
PC/@
R@
PC
IR13-11 (Rf)
Ld_RA
Ld_RZ
Ld_RN
Ld_RA
ERd
PC / @
2
CRf
Cond
Avaluaci
de la condici
OPERAR
IR2 (OP2)
16
16
B
OPERAR
ALU
RN
2
3
IR13-11(COND)
GESTI DE
LALU
IR1-0 (OP1-0)
Ld_RN
ALU15-0
L/E
RA
RZ
SELDAT 1
Ld_RZ
Z
IR15-14 (CO)
AVALUACI DE LA
CONDICI DE SALT
Mout
16
16
OPERAR
16
16 16 16 16
16
L/E
25
Fase de fetch: es porta la instrucci que sha dexecutar des de la memria fins al
registre IR. La instrucci es llegeix de ladrea apuntada pel PC, que es carrega
amb el valor que tenia incrementat en 1.
Les dues primeres fases sn comunes a totes les instruccions, i a partir daqu les accions
concretes varien. En les instruccions daccs a memria, abans de la lectura dels operands
cal calcular ladrea efectiva de loperand que sigui a memria; no hi ha fase dexecuci,
perqu loperand font sescriu sense modificar sobre loperand dest. En les instruccions de
salt, les tres ltimes fases es substitueixen per:
26
Min
16
Ld_R@
Rx7-0
0
IR7-5 (Rf2)
SELREG
SL
16
8
1
SELADR
IR7-0
2
CRf
IR13-11 (Rd)
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
Ld_PC
IR7-3
5
16
Ld_IR
Din
Ld_IR
M@
ERd
Unitat de Control
PC
no usado
PC/@
IR
EXT
Ld_PC
Ld_R@
Memria
R@
IR13-11 (Rf)
IR10-8 (Rf1/Ri)
16
Ld_RA
16
Ld_RZ
16
16
16
16
SELDAT 1
ERd
Mout
16
Ld_RA
Ld_RN
16
OPERAR
IR2 (OP2)
RA
PC / @
2
Ld_RZ
CRf
OPERAR
IR15-14 (CO)
Cond
Z
Avaluaci
de la condici
RZ
16
B
OPERAR
ALU
RN
IR13-11(COND)
16
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
Totes les accions que shan de dur a terme durant la fase de fetch es poden fer en un
cicle. Els registres PC i IR no es carregaran fins al final del cicle, coincidint amb el flanc
ascendent del rellotge, i per tant el valor del PC que arriba al bus dadreces es mant
constant al llarg de tot lestat de fetch (Figura 4.2).
Desprs de la fase de fetch es passar sempre a la fase de decodificaci,
independentment de quina instrucci sestigui executant (Figura 4.3).
27
Estat de FETCH
Estat de DECODIFICACI
rellotge
temps
PC/@:= 0, L/E:= 0,
Ld_PC:= 1, Ld_IR:= 1
IR:= M[PC]
PC:= PC+1
ESTAT
SORT
01x
00x
FETCH
F
xxx
STORE
LOAD
DEC
DE
11x
A-L
10x
Salt
Sortides
DE
Ld_IR
Ld_PC
Ld_R@
Ld_RA
Ld_RZ
Ld_RN
ERd
L/E
PC/@
CRf
xx
xx
OPERAR
28
xxx
FETCH xxx
F
DEC
DE
0xx
ADR1
x1x
AD
STORE
S
Sortides
AD
Ld_IR
Ld_PC
Ld_R@
Ld_RA
Ld_RZ
Ld_RN
ERd
L/E
PC/@
CRf
01
xx
00
OPERAR
x0x
LOAD
L
Min
16
Ld_R@
Rx7-0
SELREG
3
SL
16
8
1
SELADR
IR7-0
2
CRf
IR13-11 (Rd)
Unitat de Control
PC/@
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
Ld_PC
IR7-3
Ld_IR
16
Ld_IR
ERd
Ld_PC
M@
Memria
no usado
R@
IR7-5 (Rf2)
PC
IR13-11 (Rf)
IR10-8 (Rf1/Ri)
Din
Ld_R@
IR
EXT
Ld_RA
16
Ld_RZ
Ld_RN
16
16
OPERAR
IR15-14 (CO)
Avaluaci
de la condici
Cond
16
IR13-11(COND)
B
OPERAR
ALU
RN
IR2 (OP2)
16
RZ
OPERAR
Ld_RZ
Z
RA
CRf
Mout
16
16
SELDAT 1
PC / @
2
16
16
Ld_RA
ERd
16
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
(a)
Min
16
Ld_R@
Rx7-0
0
IR7-5 (Rf2)
no usado
SELREG
8
1
SELADR
IR7-0
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
Ld_PC
IR7-3
Ld_IR
16
Ld_IR
ERd
M@
PC
CRf
IR13-11 (Rd)
Unitat de Control
16
Ld_PC
PC/@
SL
Din
Ld_R@
IR
EXT
Memria
R@
IR13-11 (Rf)
IR10-8 (Rf1/Ri)
Ld_RA
16
Ld_RZ
Ld_RN
16
16
Cond
Avaluaci
de la condici
RZ
16
Mout
OPERAR
IR2 (OP2)
16
B
OPERAR
ALU
RN
IR13-11(COND)
0
1
0
Ld_RZ
Z
IR15-14 (CO)
RA
CRf
OPERAR
SELDAT
PC / @
2
16
16
16
Ld_RA
ERd
16
16
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
(b)
Figura 4.5. Activitat a la UP durant els estats ADR1 (a) i LOAD (b).
30
FETCH
F
xxx
DEC
DE
11x
LPO
PO
xxx
LSOE
SOE
Sortides
PO
SOE
Ld_IR
Ld_PC
Ld_R@
Ld_RA
Ld_RZ
Ld_RN
ERd
L/E
PC/@
CRf
01
10
OPERAR
Min
16
Ld_R@
Rx7-0
no usado
SELREG
3
SL
16
8
1
SELADR
IR7-0
2
CRf
IR13-11 (Rd)
Unitat de Control
PC/@
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
Ld_PC
IR7-3
Ld_IR
16
Ld_IR
ERd
Ld_PC
M@
Din
Ld_R@
IR
EXT
Memria
IR7-5 (Rf2)
R@
PC
IR13-11 (Rf)
IR10-8 (Rf1/Ri) 3
Ld_RA
16
Ld_RZ
Ld_RN
16
16
OPERAR
IR15-14 (CO)
Avaluaci
de la condici
Cond
16
B
OPERAR
ALU
RN
IR13-11(COND)
IR2 (OP2)
16
RZ
OPERAR
Ld_RZ
Z
RA
CRf
Mout
16
16
SELDAT 1
PC / @
2
16
16
Ld_RA
ERd
16
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
(a)
Min
16
Ld_R@
Rx7-0
0
IR7-5 (Rf2)
no usado
+
SL
8
1
SELADR
IR7-0
IR13-11 (Rd)
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
IR7-3
Ld_IR
16
Ld_PC
8
Ld_IR
ERd
M@
PC
CRf
Unitat de Control
16
Ld_PC
PC/@
SELREG
Din
Ld_R@
IR
EXT
Memria
R@
IR13-11 (Rf)
IR10-8 (Rf1/Ri)
Ld_RA
16
Ld_RZ
16
Ld_RN
16
16
Cond
Mout
0
1
OPERAR
IR2 (OP2)
0
16
16
Ld_RZ
Z
IR15-14 (CO)
RA
OPERAR
SELDAT
PC / @
CRf
16
16
16
Ld_RA
ERd
16
Avaluaci
de la condici
RZ
OPERAR
ALU
RN
IR13-11(COND)
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
(b)
Figura 4.7. Activitat a la UP durant els estats LPO (a) i LSOE (b).
32
Instruccions de salt
Calen tres cicles desprs de la decodificaci per completar lexecuci de les
instruccions de salt.
AVALUACI DE LA CONDICI DE SALT (estat ACS)
No es fa res, simplement la UC examina lentrada Cond per decidir si sha de saltar o
no. En cas que no shagi de saltar lestat futur s el de FETCH, per seguir lexecuci del
programa en seqncia (Figura 4.8).
Observem que les sortides en aquest estat tenen els mateixos valors que en lestat de
decodificaci (la UP est inactiva).
CLCUL DE LADREA DEST DEL SALT (estat ADR2)
En cas que shagi de saltar, sescriu al registre R@ (Ld_R@ = 1) ladrea dest del salt,
que s als bits 7:0 de lIR. Perqu aquesta adrea no es modifiqui en passar pel
sumador, es llegeix el registre R0 del Banc (CRf = 01, els bits IR10:8 tenen el valor 000
en les instruccions de salt).
Les sortides en aquest estat tenen els mateixos valors que en lestat ADR1.
SALT (estat BRANCH)
Es fa el fetch de la instrucci dest del salt: al bus dadreces hi arriba el contingut dR@
(PC/R@ = 1), es llegeix la memria (L/E = 0) i sescriu el que arriba per Mout al registre
IR (Ld_IR = 1). A ms, el PC es carrega (Ld_PC = 1) amb ladrea dest del salt ms 1.
Per tant, lestat futur daquest cicle s el de decodificaci, donat que el fetch de la
instrucci que sexecutar a continuaci ja est fet (Figura 4.8).
Sortides
DE
AD
Ld_IR
Ld_PC
Ld_R@
Ld_RA
ADR2
Ld_RZ
AD
Ld_RN
ERd
L/E
PC/@
CRf
xx
01
xx
OPERAR
xx0
FETCH xxx
F
DEC
DE
10x
ACS
DE
xx1
xxx
xxx
BRANCH
33
Min
16
Ld_R@
Rx7-0
0
IR7-5 (Rf2)
SELREG
SL
8
1
SELADR
IR7-0
CRf
IR13-11 (Rd)
Unitat de Control
16
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
Ld_PC
IR7-3
5
16
Ld_IR
ERd
M@
Ld_IR
Ld_PC
PC
no usado
PC/@
Din
Ld_R@
IR
EXT
Memria
R@
IR13-11 (Rf)
IR10-8 (Rf1/Ri)
Ld_RA
16
Ld_RZ
Ld_RN
16
16
Cond
Avaluaci
de la condici
RZ
16
Mout
0
1
OPERAR
IR2 (OP2)
16
B
OPERAR
ALU
RN
IR13-11(COND)
16
16
Ld_RZ
Z
IR15-14 (CO)
RA
CRf
OPERAR
SELDAT
PC / @
2
16
16
Ld_RA
ERd
16
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
34
xxx
FETCH
DEC
ADR1
0xx
DE
A-L
SOE
PO
00x
xxx
LSOE
LOAD
LOAD
AD
01x
STORE
STORE
S
10x
ACS
xx0
xx1
DE
ADR2
xxx
BRANCH
B
AD
SALT
xxx
Sortides
DE
AD
PO
SOE
Ld_IR
Ld_PC
Ld_R@
Ld_RA
Ld_RZ
Ld_RN
ERd
L/E
PC/@
CRf
01
xx
00
01
10
xx
OPERAR
El cicle dedicat a avaluar la condici de salt (estat ACS) es pot estalviar, ja que el
valor del senyal Cond s conegut per la UC des del principi de lestat de
decodificaci, i per tant desprs daquest estat ja es pot triar entre diferents estats
35
futurs en funci de Cond. Es poden unificar doncs els estats DEC i ACS (que
tenen les mateixes sortides).
Durant els estats ADR1 i ADR2 es donen exactament les mateixes ordres a la UP.
Es poden unificar en un sol estat, ADR, i discriminar entre instruccions daccs a
memria i instruccions de salt posteriorment. El graf queda aix:
xxx
xxx
xxx
LPO
11x
xxx
LSOE
LOAD
xxx
FETCH
F
00x
DEC
100
DE
0xx
101
ADR
A-L
SOE
PO
01x
LOAD
STORE
STORE
AD
10x
xxx
BRANCH
B
SALT
Les sortides dels estats LPO i ADR es diferencien noms en qu el primer dna
ordre de carregar el registre RA i el segon dna ordre de carregar el registre R@.
Es poden unificar els dos estats, i donar totes dues ordres de crrega. Si
finalment resulta que la instrucci en execuci s A-L, el valor carregat al registre
R@ no es far servir per res, per tampoc no afectar al correcte funcionament
del processador. Igualment, si la instrucci en execuci s daccs a memria o
de salt, el valor escrit al registre RA no tindr cap efecte sobre lexecuci.
A ms, aquestes tasques es poden fer durant lestat de decodificaci, encara que
no se spiga encara quina instrucci sest executant, ja que en aquest estat la
UP no estava fent cap feina.
A lestat de decodificaci modificat li diem DECO. La Figura 4.10.a mostra
lactivitat a la UP durant aquest estat.
A la Figura 4.11 es mostra com queda finalment el graf destats i la taula de sortides
corresponent.
36
Min
16
Ld_R@
Rx7-0
0
+
SL
no usado
16
8
1
SELADR
IR7-0
2
CRf
IR13-11 (Rd)
Unitat de Control
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
Ld_PC
IR7-3
Ld_IR
16
Ld_IR
ERd
Ld_PC
M@
Din
Ld_R@
IR
EXT
Memria
SELREG
IR7-5 (Rf2)
PC/@
R@
3
3
PC
IR13-11 (Rf)
IR10-8 (Rf1/Ri)
Ld_RA
16
Ld_RZ
Ld_RN
16
16
Ld_RZ
Z
IR15-14 (CO)
Avaluaci
de la condici
Cond
16
IR13-11(COND)
OPERAR
IR2 (OP2)
B
OPERAR
ALU
RN
0
1
16
RZ
Mout
16
16
RA
CRf
OPERAR
SELDAT
PC / @
2
16
16
Ld_RA
ERd
16
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
(a)
Min
16
Ld_R@
Rx7-0
0
no usado
SL
SELREG
3
8
1
SELADR
IR7-0
CRf
IR13-11 (Rd)
Unitat de Control
16
3
2
SE
BANC Dout
DE
REGISTRES
Rx15-0
8
16
+1
IR7-3
5
16
Ld_PC
8
Ld_IR
ERd
M@
Ld_IR
Ld_PC
PC
IR7-5 (Rf2)
PC/@
Din
Ld_R@
IR
EXT
Memria
R@
IR13-11 (Rf)
IR10-8 (Rf1/Ri)
Ld_RA
16
Ld_RZ
16
Ld_RN
16
16
Cond
Avaluaci
de la condici
RZ
16
Mout
OPERAR
IR2 (OP2)
16
B
OPERAR
ALU
RN
IR13-11(COND)
0
1
0
Ld_RZ
Z
IR15-14 (CO)
RA
CRf
OPERAR
SELDAT
PC / @
2
16
16
16
Ld_RA
ERd
16
IR1-0 (OP1-0)
Ld_RN
ALU15-0
16
L/E
L/E
(b)
Figura 4.10. Activitat a la UP durant els estats DECO (a) i ARIT (b).
37
xxx
xxx
LOAD
L
00x
xxx
FETCH
DECO
100
01x
STORE
S
xxx
xxx
101
11x
ARIT
BRANCH
Sortides
Ld_IR
Ld_PC
Ld_R@
Ld_RA
Ld_RZ
Ld_RN
ERd
L/E
PC/@
CRf
xx
01
10
xx
00
xx
OPERAR
Figura 4.11. Graf destats i taula de sortides de la Unitat de Control de la Mquina Rudimentria.
Dacord amb aquest disseny per a la Unitat de Control, les instruccions daccs a memria
triguen 3 cicles en executar-se. Les instruccions A-L es pot considerar que triguen 2 cicles, ja
que en lestat ARIT es fa el fetch de la instrucci segent. I les instruccions de salt triguen
tamb 2 cicles: FETCH i DECO, perqu lestat BRANCH pot considerar-se tamb part de la
instrucci segent.
La Unitat de Control de lMR, igual que qualsevol sistema seqencial, es pot implementar
38
Tmem
Tinc
temps
39
el vector V es guarda en les posicions 02h...05h; els valors dels seus elements
sn 2, 8, 5 i -3
Llenguatge Mquina
en hexadecimal
LOAD 1(R0), R2
LOAD 0(R0), R3
LOAD 2(R2), R1
ADD R1, R3, R3
SUBI R2, #1, R2
BGE 08h
STORE R3, 0(R0)
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0000h
0003h
0002h
0008h
0005h
FFFDh
1001h
1800h
0A02h
D964h
D209h
B008h
5800h
carregar
dades
clculs
guardar
resultat
Es pot observar que lavaluaci de la condici del bucle es fa desprs del cos del bucle i no
abans. Aix es pot fer sempre que es tingui la certesa que sexecutar almenys una volta del
bucle (o en sentncies repeat).
Observem tamb que el valor dR2 s diferent a cada iteraci, i per tant la instrucci LOAD
02h(R2), R1 accedeix a cada volta a un element diferent del vector.
40
LOAD 01h(R0), R2
ESTAT
LOAD 00h(R0), R3
LOAD 02h(R2), R1
BGE 08h
FETCH
DECO
LOAD
FETCH
DECO
LOAD
FETCH
DECO
LOAD
FETCH
DECO
ARIT
DECO
ARIT
DECO
BRANCH
DECO
Ld_IR
Ld_PC
Ld_R@
Ld_RA
Ld_RZ
Ld_RN
ERd
L/E
PC/@
CRf
OPERAR
M@
06h
01h
07h
00h
08h
05h
09h
0Ah
0Bh
08h
Mout
1001h
0003h
1800h
0000h
0A02h
D209h
B008h
0A02h
Min
0000h
0000h
0003
FFFDh
0000h
0003h
0000h
0000h
0002h
Din
0003h
0000h
FFFDh
FFFDh
0002h
PC
06h
07h
07h
07h
08h
08h
08h
09h
09h
09h
0Ah
0Ah
0Bh
0Bh
0Ch
0Ch
09h
IR
1001h
1001h
1001h
1800h
1800h
1800h
0A02h
0A02h
0A02h
D964h
D209h
B008h
B008h
0A02h
R@
01h
01h
01h
00h
00h
00h
05h
05h
05h
61h
0Ch
0Ch
08h
08h
RA
0000h
0000h
0000h
0000h
0000h
0000h
0003h
0003h
0003h
FFFDh
0003h
0000h
0000h
RZ
RN
R0
R1
FFFDh
FFFDh FFFDh
R2
0003h
0003h
0003h
0003h
0003h
0003h
0003h
0003h
0003h
0003h
R3
0000h
0000h
0000h
0000h
0000h
0000h
FFFDh D964h
D964h D209h
61h
FFFDh 0003h
0003h
41
0002h
0002h
0002h
Com ja hem vist, el Llenguatge Assemblador (LA) permet escriure programes en Llenguatge
Mquina de manera ms cmoda que les tires de 0s i 1s. Els programes escrits en LA sn
traduts a LM per lassemblador. Lassemblador rep com a entrada un fitxer contenint un
programa escrit en LA, i genera com a sortida un fitxer que cont el programa tradut a LM i
algunes informacions ms que lMR s capa dinterpretar i que sn necessries per qu
pugui executar correctament els programes.
En la Mquina Rudimentria, els programes en LM subiquen sempre a partir de ladrea
de memria 00h. Mentre tradueix, lassemblador mant el compte de quantes paraules de
memria shan ocupat fins al moment i per tant a quina adrea subicar el que tradueixi a
continuaci.
A ms del repertori dinstruccions, el Llenguatge Assemblador de lMR t aquests altres
elements: etiquetes, directives i comentaris.
Etiquetes
Sn cadenes alfanumriques seguides del carcter : que sescriuen al comenament duna
lnia dun programa en LA. Letiqueta permet identificar ladrea de memria on subicar el
que es tradueixi a continuaci.
Per exemple, suposem que el segent fragment de codi estar ubicat a partir de ladrea
0Ah de memria una vegada tradut a LM:
etiq:
LOAD 0(R3), R1
BNE 13
ADD R2, R0, R1
ASR R1, R1
Directives
Sn sentncies del LA que no sexecutaran. Permeten definir la zona de dades de la memria
i indicar on comena i acaba la part executable del programa. En les lnies en LA que
continguin directives tamb shi poden definir etiquetes.
El LA de lMR t 5 directives:
42
=
Permet donar un nom a valors constants. Si escrivim per exemple
Num_elements = 100
lidentificador Num_elements es podr fer servir en tot el programa per referir-se
al valor 100. La definici de constants no implica ocupar cap espai de memria.
vector:
.dw 0
.dw 10, 11, 12, -1
.begin
CONTINGUT
00h
000Ah
01h
FFFFh
02h
03h
04h
0064h
...
ADREA
...
resultats:
.dw 10, -1
.rw 2
.dw 100
Serveix per indicar a lMR quina instrucci haur dexecutar en primer lloc. En
concret, sescriu
.begin etiq_inici
on etiq_inici s una etiqueta definida just abans de la primera instrucci a
executar del programa. Hi ha dhaver una i noms una directiva .begin a tots els
programes en LA. Es pot escriure a qualsevol lloc del programa.
La directiva .begin no es tradueix a LM, sin que s una de les informacions
addicionals que hi ha al fitxer generat per lassemblador que permet a lMR
executar correctament els programes.
.end
43
Comentaris
Sn textos que sescriuen en els programes per tal de fer-los ms entenedors a possibles
lectors i al propi programador; es solen posar a la dreta de la instrucci o directiva a qu fan
referncia. En una lnia qualsevol dun programa en LA, sentn que s un comentari tot el
que apareix desprs del carcter ;. Si escrivim
resul:
ini:
;
.rw 1
ADD R0, R0, R1
SUB R1, R2, R3
la instrucci SUB no es traduir a LM, lassemblador assumir que forma part dun comentari.
El procs dassemblatge
Al programa assemblador se li dna com a entrada un fitxer contenint un programa en LA.
Lassemblador llegeix el programa dues vegades (es diu que els assembladors i compiladors
sn programes de dos passos).
La primera vegada, cada cop que troba una definici de constant o detiqueta apunta el
nom i el valor associat a la Taula de Smbols. En el cas de les constants el valor associat s
el que apareix a la dreta del =, en el cas detiquetes s ladrea on es defineix;
lassemblador de lMR sempre assumeix que el programa subicar a partir de ladrea de
memria 00h.
La segona vegada va tradunt cada lnia duna manera o altra segons la directiva o
instrucci que contingui. Quan troba una referncia a una etiqueta o constant, la tradueix pel
valor que ha apuntat anteriorment a la Taula de Smbols. Si a la Taula de Smbols no hi ha
letiqueta o la constant, dna un missatge al programador de qu ha coms lerror dusar un
identificador sense haver-lo definit.
44
Per a assemblar-lo, sha dinvocar la comanda enmr amb el nom de fitxer com a
argument. El programa enmr genera dos fitxers:
un amb extensi .asm que cont el mateix codi que loriginal per sense
comentaris
Per a simular lexecuci del programa sha dinvocar la comanda mr amb el nom
del programa com a argument.
prog.asm
> mr prog
prog.mr
prog.cod
45
simulaci