Você está na página 1de 30

PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL

FACULDADE DE ENGENHARIA
Vanessa Borba de Souza
Mrcia Federizzi
Arquitetura Intel x8086 Simuladores
Trabalho desenvolvido para a disciplina de
Arquitetura de Computadores - EC.



Prof. Eduardo Bezerra
Poro A!e"re# $% de A&r'! de $(()
1
Sumrio
Introduo..........................................................................................................................3
Arquitetura do microprocessador !6............................................................................."
Re"'*radore* de U*o Gera!................................................................................#
Re"'*radore* de Se"+e,o................................................................................6
A-o,ador de I,*ru./o0 IP..................................................................................$
Re"'*rador de FLAGS............................................................................................$
1e+2r'a......................................................................................................................%
1odo* de E,dere.a+e,o.................................................................................1!
&in'ua'em Assemb()......................................................................................................11
Introduo ao *ro+eto dos Simu(adores...........................................................................1,
De3od'43a./o da* I,*ru.5e*...........................................................................13
E6e+-!o de F!u6o de I,*ru.5e* ,o D'a"ra+a de B!o3o*......................16
So&re o ar7u'8o e*e..........................................................................................1$
Simu(adores.....................................................................................................................1
S'+u!ador da ar7u'eura %(%9 : Se+ P'-e!',e.........................................1
E6e3ua,do o -ro"ra+a.................................................................................1
Fu,3'o,a+e,o..................................................................................................1%
C;!3u!o do CPI.....................................................................................................,1
S'+u!ador da ar7u'eura %(%9 : Co+ P'-e!',e.........................................,,
O P'-e!',e.............................................................................................................,,
Co,<'o* do P'-e!',e........................................................................................,,
Hazard* E*ruura'*..........................................................................................,,
Hazard* de Co,ro!e........................................................................................,,
Hazard* de Dado*.............................................................................................,3
E6e3ua,do o -ro"ra+a.................................................................................,"
Fu,3'o,a+e,o..................................................................................................,"
C;!3u!o do CPI.....................................................................................................,6
S',a'* de Co,ro!e.............................................................................................,$
-onc(uso........................................................................................................................,%
.e/er0ncias Bib(io'r/icas...............................................................................................3!
,
Introduo
1 !6 2 um dos mais anti'os e con3ecidos microprocessadores de 16 bits. Sua
popu(aridade se de4e a ter sido esco(3ido como processador para a (in3a de
computadores pessoais da IBM. 5a 4erdade6 o IBM7*- tradiciona( usa uma 4erso
simp(i/icada do !66 o !. 5o4os membros da /am8(ia IBM7*- 9como o *- A: e o
*S;,< usam e=tens>es 94ers>es me(3oradas e parcia(mente compat84eis< do !6.
3
Arquitetura do microprocessador 8086
1 microprocessador !6 da Inte( 2 um microprocessador de 16 bits6 de /orma que
sua unidade (?'ica e aritm2tica6 os seus re'istradores internos6 e a maior parte das suas
instru>es /oram pro+etados para traba(3ar com pa(a4ras de 16 bits.
A(2m disso6 o !6 tem um barramento de dados de 16 bits6 ou se+a6 pode (er e
escre4er na mem?ria ou nos portos de @;S uti(izando 16 bits de uma s? 4ez. 1
barramento de endereos 2 de ,! bits6 de /orma que o !6 pode enderear 1 MB 9,,!<
posi>es de mem?ria. -ada uma destas posi>es de mem?ria 2 ocupada por um B)te.
1 processador est di4idido em duas unidades /uncionais que cooperam entre siA
B A Unidade de Execuo !"Execution Unit" - EU#$ @sta unidade 2
respons4e( e=c(usi4amente pe(a e=ecuo das instru>es. @(a no se ocupa da
trans/er0ncia de in/orma>es entre o microprocessador e os demais componentes
do sistema. Cuando a e=ecuo de uma instruo e=i'e o acesso a a('um
operando e=terno ao microprocessador6 a @D 'era uma so(icitao E BID.
B A Unidade de %nter&ace com o 'arramento !"Bus Interface Unit" - '%U#$
@sta unidade se ocupa e=c(usi4amente com a trans/er0ncia de in/orma>es entre
o microprocessador e o restante do sistema6 ou se+a6 2 respons4e( pe(o
endereamento do barramento de endereos6 (0 instru>es da mem?ria6 (0 e
escre4e dados nas portas e na mem?ria.
(i)ura *.+: Fia'rama de b(ocos da arquitetura interna de um processador !6;
"
A Fi'ura 1.! mostra a arquitetura interna dos microprocessadores !6 e !.
@=istem basicamente duas di/erenas entre e(esA a (ar'ura do barramento e=terno de
dados 9 bits no !6 e 16 bits no !6<6 e o taman3o do b(oco G/i(a de instru>esG 9"
b)tes no ! e 6 b)tes no !6<.5esta mesma /i'ura podem ser 4isua(izados os
principais b(ocos so da arquitetura6 sendo e(es abai=o descritosA
%. Unidade Aritm,tica e -.)ica !A-U #$ unidade capaz de e=ecutar opera>es sobre
ou 16 bits. @=ecuta opera>es (?'icas e aritm2ticas6 rea(iza a manuteno do estado
do microprocessador e das /(a's de contro(e6 a(2m de manipu(ar os re'istros de uso
'era( e dos operandos das instru>es.
%%. 'anco de /e)istradores6 constitu8do deA
.e'istradores de Dso Hera(A AI6 BI6 -I6 FI6 S*6 B*6 SI e FIJ
.e'istradores de Se'mentoA -S6 FS6 SS e @SJ
Apontador de InstruoA I*J
.e'istrador de F&AHS.
Registradores de Uso Geral

So re'istradores de 16 bits6 uti(izados para armazenar qua(quer in/ormao durante
a e=ecuo do pro'rama.
1s re'istradores de uso 'era( so subdi4ididos em dois con+untos de " re'istradoresA
/e)istradores de 0ados$ AI6 BI6 -I e FI. Seus b)tes superiores 9AK6 BK6
-K e FK< e in/eriores 9A&6 B&6 -& e F&< podem ser acessados de modo
independentes6 ou se+a6 cada re'istrador pode ser usado como um re'istrador de
ou 16 bits. @4itando assim o uso de re'istradores de 16 bits quando se
rea(izam opera>es de bits. @(es podem ser uti(izados sem restri>es na
maioria das opera>es (?'icas e aritm2ticas6 mas a('umas instru>es uti(izam
certos re'istradores de /orma imp(8cita6 permitindo uma poderosa /orma de
codi/icao.
/e)istradores Apontadores e de %ndexao$ S*6 B*6 SI e FI. 1 acesso a esses
re'istradores 2 sempre /eito em 16 bits.
*odem tamb2m participar da maioria das opera>es (?'icas e aritm2ticas.
/e)istrador A1 !A2 e A-#$
L tamb2m denominado Acumu(ador *rimrio. :odas as opera>es de I;1 so
rea(izadas atra42s deste re'istrador. As opera>es que uti(izam dados imediatos
necessitam de menos mem?ria quando so /eitas atra42s de AI.
Hera(mente 2 uti(izado como 3ospedeiro para 4a(ores retornados de sub7rotinas.
/e)istrador '1 !'2 e '-#$
L tamb2m denominado .e'istrador Base. Dsado pre/erencia(mente como apontador
da base de uma tabe(a de dados. :odas as re/er0ncias E mem?ria que usam esse
re'istrador no c(cu(o do endereo usam o re'istrador FS como se'mento padro.
#
/e)istrador C1 !C2 e C-#$
L tamb2m denominado -ontador6 sendo usado prioritariamente para contar o nMmero
de intera>es no interior de um (oop e tamb2m na manipu(ao de strin's. @(e 2
decrementado durante as opera>es en4o(4endo (oops e strin's. :amb2m uti(izado na
rotao e des(ocamento de 4rios bits.
/e)istrador 01 !02 e 0-#$
L tamb2m c3amado de re'istrador de dados ou endereador de I;1. L usado para
'uardar dados de 16 bits nas opera>es com a D&A e contro(e indireto de I;1. *ode ser
usado por compi(adores para retornar 4a(ores de subrotinas.
/e)istrador S3$
L denominado StacN *ointer 9*onteiro de *i(3a<. Dti(izado +untamente com B* para
acessar dados no se'mento da pi(3a. Armazena o Oo//setP do endereo do topo da pi(3a.
:odas as re/er0ncias ao S*6 por de/inio6 uti(izam +untamente o re'istrador de se'mento
SS. :amb2m pode ser usado como operando em opera>es (?'icas e aritm2ticas de 16
bits.
/e)istrador '3$
L denominado Base *ointer 9*onteiro da Base<. *ermite acessar dados no se'mento
da pi(3a. :ipicamente 2 usado para acessar parQmetros que /oram passados pe(a pi(3a.
:amb2m pode ser usado como operando em opera>es (?'icas e aritm2ticas de 16 bits.
/e)istradores de %ndexao !S% e 0%#$
So denominados Source Inde= 9Rndice de 1ri'em< e Festination Inde= 9Rndice de
Festino<. So usados para acessar dados na mem?ria de dados. So e=tensi4amente
usados nas opera>es com strin's. :amb2m podem ser usados como operando em
opera>es (?'icas e aritm2ticas de 16 bits.
Registradores de Segmento
A mem?ria do !6; 2 di4idida em se'mentos (?'icos de at2 6" Sb. A -*D tem
acesso simu(tQneo a at2 " se'mentos6 uti(izando os re'istradores -S6 FS6 SS e @S como
se(etores de endereo. @stes re'istradores esto (oca(izados na BID6 sendo acess84eis
para pro'ramas6 podendo ser manipu(ados por 4rias instru>es. As principais /un>es
de cada um destes re'istradoresA
/e)istrador CS$
L denominado -ode Se'ment 9Se'mento de -?di'o<. L uti(izado para montar o
endereo de uma instru 9code< a ser buscada 9/etc3< na mem?ria. @ste de/ine o
endereo base 9se'mento< e de4e ser somado ao re'istrador I* 9tamb2m (oca(izado na
BID< para /ormar o endereo de ,! bits da instruo. @m outras pa(a4ras6 aponta para o
se'mento de c?di'o de instruo em uso.
6
/e)istrador 0S$
L denominado Fata Se'ment 9Se'mento de Fados<. Aponta para os se'mentos de
dados onde 'era(mente so armazenadas as 4ari4eis de pro'rama. @m con+unto com I*
de/ine o endereo e/eti4o do dado a ser (ido ou escrito na mem?ria.
/e)istrador SS$
L denominado StacN Se'ment 9Se'mento de *i(3a<. Aponta para o se'mento da pi(3a
em uso. :odos os acessos E pi(3a uti(izam os re'istradores S* e B* e uti(izam como
re/er0ncia o re'istrador de se'mento de pi(3a 9SS<.
/e)istrador ES$
L denominado @=tra Se'ment 9Se'mento @=tra<. L uma opo e=tra para apontar a
base de um se'mento de dados 9strin's<. *or e=emp(o6 e(e 2 uti(izado +untamente com o
FI para /ormar o endereo da base de strin's de dados.
Apontador de Instruo: I
L denominado Instruction *ointer 9*onteiro de Instru>es<. @ste re'istrador 2
atua(izado pe(a BID e cont2m a distQncia em b)tes 9o//set< da pr?=ima instruo em
re(ao ao in8cio do c?di'o que est sendo e=ecutado6 isto 26 e(e aponta para a pr?=ima
instruo. 1s pro'ramadores no t0m acesso direto a esse re'istrador.
Registrador de !"AGS
1 microprocessador !6 cont2m em seu interior um tota( de % sina(izadores6
tamb2m con3ecidos como /(a's. @(es e=istem para indicar resu(tados obtidos sempre na
M(tima operao (?'ica ou aritm2tica e=ecutada6 ou para de/inir o comportamento do
microprocessador na e=ecuo de certas instru>es. @stes % /(a's esto a'rupados6 para
/aci(idade de acesso6 em um re'istrador de 16 bits6 c3amado de .e'istrador de F(a's6
.e'istrador de @stado ou *a(a4ra de @stado do *ro'rama6 sendo (oca(izado na unidade
@D.
-omo mostra a /i'ura ,.!6 e(e uti(iza bits para armazenar in/orma>es de estado
9status< e de contro(e.
1# 1" 13 1, 11 1! % $ 6 # " 3 , 1 !
7 7 7 7 1F FF IF :F SF TF 7 AF 7 *F 7 -F
(i)ura 4.+ U.e'istrador dos F(a's.
$
(la)s de Estado$
1s bits de estado re/(etem certas propriedades de resu(tados de opera>es (?'icas e
aritm2ticas rea(izadas na @D6 a qua( 2 respons4e( por OsetarP estes bits no re'istrador.
AF 7 F(a' de -arr) Au=i(iarA indica o transporte para /ora do nibb(e menos
si'ni/icati4o 7 do bit 3 para o bit " 7 do resu(tado produzido pe(a D&A. L
uti(izado quando se manipu(a operandos representados em c?di'o B-F ou
AS-II6 ou se+a6 AF V 1 7W caso e=ista o G4ai umG do bit 3 para o bit " de uma
adio caso no e=ista Gempr2stimoG do bit " para o bit 3 numa subtraoJ
AF V ! 7W caso contrrio.
-F 7 F(a' de -arr)A -F V 1 7W ap?s instru>es de soma que 'eram G4ai umG
ap?s instru>es de subtrao que no 'eram Gempr2stimoG 9Gempresta umG<J
-F V ! 7W caso contrrio.
1F 7 F(a' de 14er/(oX$ 1F V 1 7W qua(quer operao que produza overflowJ
1F V ! 7W caso contrrio.
SF 7 F(a' de Sina(A uti(izado para indicar se o nMmero resu(tado 2 positi4o ou
ne'ati4o em termos da aritm2tica em -omp(emento de , 9se no ocorrer erro
de transbordamento 7 overflow<. SF V 1 7W nMmero ne'ati4o SF V ! 7W
nMmero positi4o.
TF 7 F(a' de TeroA TF V 1 7W caso o resu(tado da M(tima operao aritm2tica
ou (?'ica se+a i'ua( a zeroJ TF V ! 7W caso contrrio.
*F 7 F(a' de paridadeA @ste sina(izador 2 ati4ado6 quando o nMmero de 1s nos
bits menos si'ni/icati4os do resu(tado produzido pe(a D&A 2 par6 e
desati4ado caso contrrio6 ou se+a *F V 1 7W caso o b)te in/erior do resu(tado
de a('uma operao aritm2tica ou (?'ica apresentar um nMmero par de G1YsGJ
*F V ! 7W caso contrrio 9nMmero impar<.
(la)s de Controle
So os /(a's que podem ser setados pe(os pro'ramas6 a(terando as opera>es do
processadorA
FF 7 F(a' de FireoA K instru>es que en4o(4em os re'istradores de 8ndice
na /ormao do endereo e/eti4o dos operandos. A('umas destas instru>es
imp(icam na a(terao do conteMdo do re'istrador de 8ndice. Fependendo do
conteMdo deste sina(izador6 os re'istradores de 8ndice sero incrementados
ou decrementados automaticamente6 quando tais instru>es so e=ecutadas.
FF V 1 7W decremento do endereo de mem?ria 9F1Z5<J FF V ! 7W
incremento do endereo de mem?ria 9D*<.
IF7 F(a' de InterrupoA este sina(izador determina6 se o processador est
3abi(itado ou desabi(itado a atender interrup>es. IF V 1 7W 3abi(ita a
ocorr0ncia de interrup>esJ[IF V ! 7W inibe interrup>es tipo I5: e=ternas.
:F 7 F(a' de :rap 9armadi(3a<A :F V 1 7W ap?s a e=ecuo da pr?=ima
instruo6 ocorrer uma interrupoJ a pr?pria interrupo /az :F V !J :F V !
7W caso contrrio.

#em$ria
Fo ponto de 4ista do pro'ramador6 a mem?ria se comporta como um con+unto de
endereos onde 2 poss84e( Oescre4erP e O(erP in/orma>es. -ada (ocao6 ou endereo 2
identi/icado por um nMmero.
A mem?ria pode ser 4ista como uma (on'a (ista de endereos6 ou como um
a'rupamento de endereos em b(ocos denominados p'inas. 1s d8'itos mais
si'ni/icati4os do endereo representam a p'ina6 e os d8'itos menos si'ni/icati4os
identi/icam a posio dentro da p'ina6 como por e=emp(o6 a p'ina 1! compreender
os endereos de 1!!! a 1!FF.
-om 16 bits para endereamento 2 poss84e( enderear ,16 V 6"S (oca>es. *ara
aumentar essa /ai=a de endereos pode7se estender o taman3o de pa(a4ra de endereo6
ou uti(izar t2cnicas de 'erenciamento de mem?ria. 1s microprocessadores !6;
uti(izam o 'erenciamento de mem?ria por se'mentos.
Furante a e=ecuo de um pro'rama no !66 3 " se'mentos ati4osA
se'mento de c?di'oA endereado por -S
se'mento de dadosAendereado por FS
se'mento de pi(3aA endereado por SS 9stacN se'ment<
se'mento e=traA endereado por @S.
5erenciamento de mem.ria por se)mentao$
1 !6 possui ,! bits para acessar posi>es de mem?ria /8sica o que corresponde a
,,! V 1.!".#$6 b)tes 91 Mb)te< de posi>es endere4eis. [@=emp(os de endereosA
!!!! !!!! !!!! !!!! !!!!b 7W !!!!!3
!!!! !!!! !!!! !!!! !!!1b 7W !!!!13
1111 1111 1111 1111 1111b 7W FFFFF3
1 !6 opera internamente com 16 bits para 'erar endereos com ,! bits e(e uti(iza a
id2ia de se'mentao de mem?ria.
-ada se'mento de mem?ria corresponde a um b(oco de 6" Sb)tes de posi>es de
mem?ria consecuti4as6 identi/icado por um nMmero de se'mento.
*ara acessar um b)te ou pa(a4ra particu(ar na mem?ria6 2 necessrio um o//set6 ou
se+a6 uma distQncia em b)tes do in8cio do se'mento. 1 endereo rea( de mem?ria de ,!
bits 2 o resu(tado da soma de um re'istrador de se'mento 9des(ocado de " bits para a
esquerda< e um o//set de 16 bits . 1 re'istrador de se'mento e a /onte do o//set
dependem do tipo de re/er0ncia E mem?ria dese+adoA
%
Tipo de /e&er6ncia a
7em.ria
Se)mento
0e&ault
Se)mento
Alternativo
8&&set
Busca de instruo -S nen3um I*
*i(3a SS 5en3um S*
Vari4e( FS -S6@S6SS @ndereo
e/eti4o
Strin' /onte FS -S6@S6SS SI
Strin' destino @S 5en3um FI
B* como re'istrador base SS -S6@S6SS @ndereo
e/eti4o
Fi'ura 3.!7 :ipos de .e/er0ncia a mem?ria.
1 endereo e/eti4o mencionado na tabe(ada /i'ura 3.! corresponde ao resu(tado da
a4a(iao de um modo de endereamento. 5os casos em que um se'mento a(ternati4o
aparece na tabe(a6 o se'mento de/au(t pode ser substitu8do usando7se um pre/i=o de
se'mento.
A re/er0ncia a uma posio de mem?ria 2 dada porA
re'\se'mento A re'\o//set
*or e=emp(oA -SAI*6 SSAS*6 FSASI6 FSAFI
#odos de %ndereamento
1s processadores !=6 permitem acessar a mem?ria de 4rios modos di/erentes. 1s
modos de endereamento de mem?ria do !=6 o/erecem /(e=ibi(idade no acesso E
mem?ria6 permitindo acessar /aci(mente 4ari4eis6 arra)s6 re'istros6 ponteiros e outros
tipos de dados mais comp(e=os.
7odo /e)istrador e %mediato
/e)istrador$ os operandos /onte6 destino ou ambos esto contidos em re'istradores.
@=emp(oA M1V -I6 BI
%mediato$ os dados em ou 16 bits podem ser especi/icados como parte da
instruo. @=emp(oA M1V -I6 ,"3
7odo de Endereamento de 7em.ria
0ireto$ 1 endereo e/eti4o do operando 9o//set< no correspondente se'mento 2
obtido diretamente a partir de um determinado dado6 sem en4o(4er quaisquer
re'istradores. @=emp(oA
.FA:A
S:A.: FZ 3%FAK
...
M1V BI6 S:A.:
1!
%ndireto re)istrador$ 1 endereo e/eti4o de um operando na mem?ria pode ser
obtido a partir de um dos re'istradores de base ou 8ndice. 9BI6 B*6 SI6FI<
'aseado$ 1 endereo e/eti4o 2 ca(cu(ado a partir de uma constante e dos
re'istradores de base BI ou B*. Cuando no se e=cede E pi(3a o endereo de ,! bits 2
ca(cu(ado a partir de FSABI. Cuando se e=cede E pi(3a esse endereo 2 ca(cu(ado a
partir de SSAB*.
%ndexadoA 1 endereo e/eti4o 2 obtido a partir de uma constante e dos re'istradores
de 8ndice SI u FI.
%ndexado baseado$ 1 endereo e/eti4o 2 ca(cu(ado a partir de uma constante6 dos
re'istradores de base 9BI6 B*< e dos re'istradores de indice 9SI6 FI<.
0e strin)sA uti(iza7se o re'istrador SI para apontar para o primeiro b)te ou Xord de
uma strin' ori'em e o re'istrador FI para apontar para o primeiro b)te ou Xord do
destino6 quando 2 uti(izada uma instruo para strin's.
"inguagem Assem&l9
1 processador =!6 possui um 'rande con+unto de instru>es6 que podem ser
di4ididas emA instru>es de mo4imentao de dados6 instru>es aritm2ticas6 instru>es
(?'icas6 instru>es de manipu(ao de strin's6 instru>es de des4io e contro(e de /(u=o.
Aqui somente sero descritas as instru>es do subcon+unto /ormado para
imp(ementao nos simu(adores.
11
Introduo ao ro'eto dos Simuladores
1 pro+eto 4isa aprendiza'em da arquitetura =!6. A imp(ementao dos simu(adores
consiste em uma imp(ementao simp(i/icada da arquitetura do microprocessador !6
com um subcon+unto restrito de instru>es assim como a('umas /unciona(idades bsicas
desta arquitetura.
Ap?s o estudo da arquitetura =!6 /oi rea(izado um estudo do con+unto de
instru>es do processador e a maneira como este as decodi/ica. *ara tanto6 de/inimos
apenas o subcon+unto de instru>es /ormado pe(as instru>esA M1V@ 9Im;.e'6
.e';.e'6 Mem;.e'6 Mem;Acum<6 AFF e &11*. 5a decodi/icao documentada +
est apresentada tamb2m a('uma re(ao com a pro'ramao dos simu(adores.
1 desen4o(4imento do pro+eto /oi di4ido em tr0s etapas de imp(ementao6 4isando
/aci(itar a compreenso e or'anizao da estrutura do simu(ador. 5a primeira etapa6
desen4o(4eu7se o simu(ador sem recurso de pipe(ine. -om base no /uncionamento
descrito no datas3eet do =!66 criou7se o pro+eto para simu(ar as unidades bsicas de
/uncionamento do microprocessador estudado6 sendo estruturadas rotinas para simu(ar a
unidade de mem?ria 9di4idida em se'mentos de dados6 de c?di'o e de re'istradores6
mas /isicamente uma unidade<6 a unidade de processamento (?'ico e aritm2tico 9u(a<6 a
unidade de c(cu(o de endereos 9somador<6 o banco de instru>es e unidade de
e=ecuo 9recon3ecimento da instruo e busca de re'istradores ou in/ormao da
mem?ria<. .otinas au=i(iares /oram imp(ementadas de4ido E (imitao da (in'ua'em
esco(3ida para monta'em do simu(ador6 tais como rotina para con4erso de nMmeros
3e=adecimais para binrios e de nMmeros binrios para decimais.
A /i'ura ".! mostra o dia'rama de b(ocos da arquitetura imp(ementada nos
simu(adores.
(i)ura :.+ UFia'rama de B(ocos da Arquitetura Interna Imp(ementada na Simu(ao da Arquitetura
!6.
1,
A se'unda etapa do pro+eto consiste em6 dado que a imp(ementao da seq]0ncia
de rotinas para simu(ar as etapas de processamento do =!6 para o con+unto de
instru>es mo4 re';re'6 mo4 re'acum;mem?ria6 mo4 re';imediato6 mo4 re';mem?ria6
add e (oop esta4a correta6 imp(ementar as rotinas e contro(es que tornem poss84eis as
ap(ica>es do recurso de pipe(ine para o simu(ador.
(ecodi)cao das Instru*es
As instru>es do processador =!6 no apresentam taman3o /i=o 9quantidade de
bits de cada uma das instru>es<6 4ariando de acordo com cada uma de(as6 assim como o
nMmero de bits que podemos considerar como opcode da instruo.
5a decodi/icao das instru>es 2 necessrio con3ecer o si'ni/icado de a('uns bits
uti(izados no /ormato da instruo. Se'ue abai=o a /orma de decodi/icaoA
1OVE
Im;.e'6 .e';.e'6 Mem;.e' 6 Mem;Acum
Im;.e'A mo4e um imediato para um re'istrador.
Formato da instruoA
$ ! $ ! $ !
1 ! 1 1 X re' data 9parte bai=a< data se XV1 9arte a(ta<
.e' 2 o c?di'o do re'istrador destino da operao.
Se XV1 si'ni/ica que o 4a(or do imediato esta ocupando 16 bits6 se XV! o imediato
esta apenas ocupando a parte bai=a do dados6 isto 26 somente bits 9instruo operando
com Xord ou com b)te<.
1 opcode da instruo mo4e de imediato para re'istrador 2 de/inido pe(os bits de $7"
V B em 3e=a.
*ara decodi/icao desta instruo nos simu(adores uti(izamos a conta'em dos bits
seq]encia(mente iniciando em 16 /ormando a se'uinte tabe(aA
1 " # % 16 1$ ,"
$ " 3 ! $ ! $ !
1 ! 1 1 X re' Fata Fata se XV1
B 7 7 7
As posi>es dos bitsA 17" V opcode 6 # V X6 67V .e'6 dependendo de X o imediato
pode estar de %716 ou %7,"6
Instruo de (eitura da mem?ria e escrita no banco de re'istradores.
13
.e';.e'A mo4e o conteMdo de um re'istrador para outro re'istrador.
Formato da instruoA
$ ! $ !
1 ! ! ! 1 ! d X mod re' r;m
Z identi/ica instruo operando com Zord se XV1 ou com b)te XV !.
F de/ini a direo dos dados6 no caso como a direo 2 de re'istrador para re'istrador
este ser sempre i'ua( a zero.
-omo operamos com dois re's6 mod ter o 4a(or 11 imp(icando no campo r;m ser um
re'istrador.
1s bits de r;m simbo(izam o re'istrador destino da operao sendo os bits de re' o
re'istrador /onte.
&o'o a identi/icao da instruo poder ser /eita porA ou %.
*ara decodi/icao desta instruo nos simu(adores uti(izamos a conta'em dos bits
seq]encia(mente iniciando em 16 /ormando a se'uinte tabe(aA
1 " # % 1, 13 16
$ 6 # " 3 , 1 ! $ 6 # " 3 , 1 !
1 ! ! ! 1 ! d X mod re' re' r;m
6 se XV! 11 = = = = = =
% se X V1
As posi>es dos bitsA 17 V opcode6 V X6 11713 V .e'6 1"716 V .;m.
Instruo de (eitura e escrita no do banco de re'istradores.
Mem;.e' A mo4e um 4a(or da mem?ria para um re'istrador.
Formato da instruoA
$ ! $ !
1 ! ! ! 1 ! d X mod re' r;m
Z identi/ica instruo operando com Xord se XV1 ou com b)te XV !.
F de/ini a direo dos dados6 no caso como a direo 2 de memoria para re'istrador
este ser sempre i'ua( a um.
.e' 2 o re'istrador destino.
&o'o a identi/icao da instruo poder ser /eita porA A ou B 9considerando os
bits $7<.
*ara decodi/icao desta instruo nos simu(adores uti(izamos a conta'em dos bits
seq]encia(mente iniciando em 16 /ormando a se'uinte tabe(aA
1 " # % 1, 13 16
$ 6 # " 3 , 1 ! $ 6 # " 3 , 1 !
1 ! ! ! 1 ! d X Mod .e' .e' rm;m
B6 se XV1
A6 se XV!
As posi>es dos bitsA 17 V opcode6 V X611713 V .e'
Instruo de &eitura da mem?ria e escrita no banco de re'istradores.
1"
Mem;AcumA mo4e um 4a(or contido na mem?ria para o re'istrador acumu(ador de
16nits A=6 ou acumu(ador bits AK.
Formato da InstruoA
$ ! $ ! $ !
1 ! 1 ! ! ! ! X Addr7(oX Addr73i'3
Z identi/ica instruo operando com Zord se XV1 ou com b)te XV !.
Mo4e da mem?ria para o re'istrador A= cumu(ador 16bits6 ou AK acumu(ador bits.
A identi/icao da instruo poder ser /eita porA A.
*ara decodi/icao desta instruo nos simu(adores uti(izamos a conta'em dos bits
seq]encia(mente iniciando em 16 /ormando a se'uinte tabe(aA
1 " # % 16 1$ ,"
$ 6 # " 3 , 1 ! $ 6 # " 3 , 1 ! $ 6 # " 3 , 1 !
1 ! 1 ! ! ! ! X Addr\(oX Addr\3i'3
A ! ! !
As posi>es dos bitsA 17" V opcode6 V X6 endereo da mem?ria V
A= ou A& V !!! V .e'
Instruo de (eitura da mem?ria e escrita no banco de re'istradores
A00
.e';.e'A soma do conteMdo de dois re'istradores.
Formato da InstruoA
$ ! $ !
! ! ! ! ! ! d X mod re' r;m
Z identi/ica instruo operando com Zord se XV1 ou com b)te XV !.
F de/ini a direo dos dados6 no caso como a direo 2 de re'istrador para
re'istrador este ser sempre i'ua( a zero.
-omo operamos com dois re's6 mod ter o 4a(or 11 imp(icando no campo r;m ser um
re'istrador.
1s bits de r;m simbo(izam o re'istrador destino da operao sendo os bits de re' o
re'istrador /onte.
&o'o a identi/icao da instruo poder ser /eita por A !1 ou !!.
*ara decodi/icao desta instruo nos simu(adores uti(izamos a conta'em dos bits
seq]encia(mente iniciando em 16 /ormando a se'uinte tabe(aA
1 " # % 1! 11 13 1" 16
$ 6 # " 3 , 1 ! $ 6 # " 3 , 1 !
! ! ! ! ! ! d X mod .e' .;m
! 16 se XV16
!6 se XV!
1#
As posi>es dos bitsA 17 V opcode6 V X6 11713 V .e'6 1"716 V .;m.
Instruo de (eitura e escrita no do banco de re'istradores.
-883
A instruo 2 um sa(to condiciona(6 que testa o 4a(or do re'istrador -=6 4eri/icando
se este 2 di/erente de !6 se /or e=ecuta o sa(to6 caso contrrio6 no rea(iza o sa(to.
Formato da instruoA
$ ! $ !
1 1 1 ! ! ! 1 ! disp
Fisp 2 o des(ocamento que de4e ser subtra8do do endereo do I* para ac3ar o
endereo a partir do qua( recomea o (ao. @ste 4a(or est representado em
comp(emento de dois.
&o'o a identi/icao da instruo poder ser /eita porA@,.
*ara decodi/icao desta instruo nos simu(adores uti(izamos a conta'em dos bits
seq]encia(mente iniciando em 16 /ormando a se'uinte tabe(aA
As posi>es dos bitsA 17 V opcode6 %716 V des(ocamento.
%xemplo de !luxo de Instru*es no (iagrama de
+locos
*ara me(3or compreenso do /uncionamento da arquitetura6 e/etuamos o /(u=o da
instruo AFF no dia'rama de b(ocos6 con/orme mostra a /i'ura #.!.
1 " # % 16
$ 6 # " 3 , 1 ! $ 6 # " 3 , 1 !
1 1 1 ! ! ! 1 ! disp
@ ,
16
(i)ura ;.+ U @=ecuo da Instruo AFF
Inicia(mente6 a instruo AFF 2 (ida da mem?ria pe(a Dnidade de Inter/ace de
Barramento 9BID<. @m se'uida6 a Dnidade de @=ecuo 9@D< decodi/ica a instruo e
so(icita a BID os 4a(ores dos operandos. *or sua 4ez6 a BID retorna para a @D os
4a(ores (idos nos re'istradores. Fepois a @D 2 no4amente acionada para que a unidade
D&A processe a operao de soma. @m se'uida6 a BID trans/ere o 4a(or da sa8da da
D&A para o re'istrador destino. Furante esse processo a unidade sinais de contro(e est
sendo atua(izada. :oda a e=ecuo 2 sincronizada pe(o -ontro(e de :empo 9c(ocN<.
So&re o arqui,o teste
*ara testar o /uncionamento dos simu(adores /oi imp(ementado o pro'rama 9arqui4o
pro'rama/unciona.asm<6 em (in'ua'em de monta'em para o processador =!66 que
e=ecuta a s2rie de Fibonacci para os dez primeiros nMmeros da s2rie6 apresentando o
4a(or do d2cimo nMmero da s2rie. 5o desen4o(4imento do pro'rama teste6 /oram
a4a(iadas as instru>es que poderiam ser uti(izadas para esse e=ecuo6 se'undo o
crit2rio de opcode di/erenciado o que /aci(itou a imp(ementao das instru>es mo4
re';re'6 mo4 re';imm6 mo4 mem;re'6 mo4 mem;acumu(ador6 add e (oop. 1 c?di'o
ob+eto do arqui4o assemb(er /oi 'erado no montador 5ASM em sistema operaciona(
&inu=6 con/orme consta no cabea(3o dos /ontes dos simu(adores.
1$
Simuladores
Simulador da arquitetura 8086 Sem ipeline
%xecutando o programa
Ap?s iniciar a e=ecuo do pro'rama 9dup(o c(ique sobre o arqui4o
SimuladorS3ipeline.exe<6 abrir a te(a do simu(ador con/orme mostra a /i'ura 6.!. 5o
campo OIn/orme o camin3o do arqui4o 9.(st<6 c(ique no boto de abrir6 para que a +ane(a
de busca de arqui4os se+a aberta. Se(ecione e abra arqui4o com e=tenso .(st 'erado a
partir de c?di'o pro'ramado em assemb() no montador 5ASM.
*ara abrir o arqui4o teste busque porA
Firet?rioA^:1MarciaFederizzi\VanessaBorba^Simu(adorS*ipe(ine
pro'rama/unciona.(st
(i)ura <.+ U Simu(ador Sem *ipe(ine. @m destaque os bot>es de se(eo de arqui4o e e=ecuo do
pro'rama.
1
8bserva=es$
1 7 Antes de abrir o arqui4o .(st 2 necessrio edit7(o (in3a a (in3a. A edio 2
re/erente ao caracter de quebra de (in3a6 que no arqui4o ori'ina( no 2 o caracter padro
para enter. 5esse caso6 ao /ina( de cada (in3a tec(e enter para marcar o /ina( de (in3a no
arqui4o. Ap?s abrir o arqui4o6 c(ique em Executar 3ro)rama para iniciar a simu(ao
de processamento do =!6.
, 7 1 arqui4o .(st de4er ser 'erado no nasm6 no sistema operaciona( &inu=6 atra42s
do comandoA diretorio;nasm U/ e(/ U( arqui4o.(st arqui4o.asm
!uncionamento
Inicia(mente o sistema ir acessar o arqui4o in/ormado e carre'7(o6 (in3a a (in3a6
para a (ista Seq>6ncia e instru=es do pro)rama. Ao 'ra4ar as (in3as nessa (ista6 o
pro'rama + est tratando e desconsiderando (in3as em branco e poss84eis comentrios
contidos no arqui4o6 por meio da rotina ArmazenaLinha. A rotina LeArquivoLST 2
respons4e( por 'erenciar a (eitura das (in3as do arqui4o e e/etuar a c3amada da rotina
Armazena&in3a. @ssa (ista 2 composta de duas co(unasA 8ndice e instruo. Sua
monta'em e e=ibio /oram pro+etadas para /aci(itar o acompan3amento das instru>es
que sero processadas pe(o simu(ador. *ara tanto6 a co(una 8ndice que /az re/er0ncia a
cada (in3a de pro'rama do arqui4o6 tamb2m ser e=ibida nas (istas especi/icadas abai=oA
3osio de 7em.ria?%nstruo$ cont2m o pro'rama no /ormato de c?di'o ob+eto
permitindo acompan3ar como cada (in3a do c?di'o em assemb() /oi montada para
e=ecuo. 1 preenc3imento dessa (ista 2 imp(ementado pe(a rotina CarregaMemoria
que percorre o ob+eto Seq>6ncia e instru=es do pro)rama e monta o que simu(aria o
modo como o !6 trata a mem?ria6 isto 26 se'mento de dados e se'mento de c?di'o
representados pe(a (ista *osio de Mem?ria;Instruo e a rea de re'istradores de uso
'era(6 representada pe(a (ista Conte@do dos re)istradores6 mas que simbo(izam serem
/isicamente uma Mnica mem?ria. Fespreza a co(una de instru>es escritas em assemb()6
montando apenas a co(una de 8ndices 9re/er0ncia constante no simu(ador para a (in3a de
processamento<.
3rocessamento das %nstru=es$ e=ibe a sequ0ncia de dados em cada re'istrador
durante a e=ecuo do pro'rama.
Conte@do dos re)istradores$ simu(a a rea de re'istradores de uso 'era(6 tendo os
4a(ores constantemente atua(izados con/orme seq]0ncia do pro'rama. Mostra o
conteMdo dos re'istradores ap?s o t2rmino do pro'rama.

As rotinas de simu(ao da arquitetura !6 comeam a serem e=ecutadas no instante
em que o pro'rama + /oi carre'ado na mem?ria 9no simu(ador6 ap?s carre'ar a (ista
*osio de Mem?ria Instruo<.
As (in3as de pro'rama so processadas em s2rie e somente ap?s o t2rmino dos
est'ios de e=ecuo de uma instruo6 o simu(ador reinicia a rotina buscando no4a
instruo. A busca 2 rea(izada at2 que a rea de pro'rama ten3a sido e=ecutada por
comp(eto.
1%
A rotina ProcessaInstrucoes percorre a (ista mem?ria e 'erencia o recon3ecimento
de cada instruo. Ap?s identi/icar a instruo6 por meio do opcode6 o contro(e de
processamento 2 passado para as rotinas de tratamento das instru>es. 1s m2todos
MovMeme6 Movegeg6 MovIme!eg6 MovMemAcum6 Loo" e A!! imp(ementam
as instru>es mo4 memoria;re'istrador6 mo4 re'istrador;re'istrador6 mo4
imediado;re'istrador6 mo4 memoria;re'istrador acumu(ador6 (oop e add. 5a
imp(ementao de cada um dos m2todos citados6 3 a c3amada para procedimentos que
simu(am a unidade de contro(e que e=ecuta a instruo e determina6 con/orme
posicionamento das in/orma>es na instruo6 o pr?=imo passo de e=ecuo6 isto 26
busca de dado no re'istrador6 na mem?ria ou c(cu(o de endereos. *ara essas tr0s
tare/as6 a unidade (?'ica aritm2tica 2 acionada. :a( unidade est sendo representada no
sistema pe(as rotinasA
I!entegistra!orA /uno que recebe por parQmetro o c?di'o destinado para os
re'istradores concatenado com o 4a(or de X e retorna o re'istrador uti(izado na
instruo.
Ca#cu#aEn!erecoA respons4e( por e/etuar c(cu(o do endereo de sa(to6 a partir do
endereo atua( e do endereo e/eti4o passados na decodi/icao da instruo.
etornaIPA /uno que retorna o I* ca(cu(ado e in/ormado na co(una de endereo da
(ista 3osio de 7em.ria?%nstruo.
Leegistra!orA /uno que recebe o endereo do re'istrador e retorna o conteMdo
re/erenciado pe(o mesmo.
Loca#iza$a!oA /uno que recebe um endereo da rea de dados e retorna o conteMdo
re/erenciado por esse endereo de mem?ria.
ULAA /uno que representa a unidade aritm2tica6 imp(ementando as opera>es de
soma e subtrao. A unidade (?'ica6 para comparao de 4a(ores6 2 imp(ementada entre
as rotinas (istadas acima6 como a de recon3ecimento do re'istrador na instruo
9IdentRegistrador<.
Ao t2rmino da e=ecuo da instruo6 ainda no procedimento ProcessaInstrucoes% a
seq]0ncia de processamento da instruo 2 inc(usa na (ista 3rocessamento de
%nstru=es.
-omp(ementando as rotinas que representam as /unciona(idades do processador6 a
/uno Escreveegistra!or6 2 uti(izada pe(as instru>es que buscam dados na mem?ria
e armazenam em re'istradores. Seu /uncionamento consiste em receber por parQmetro o
endereo do re'istrador e o conteMdo 9dado< e armazen7(o na posio de mem?ria
re/erenciada pe(o re'istrador.
As (in3as de pro'rama so processadas em s2rie e somente ap?s o t2rmino dos
est'ios de e=ecuo de uma instruo6 o simu(ador reinicia a rotina buscando no4a
instruo. A busca 2 rea(izada at2 que a rea de pro'rama ten3a sido e=ecutada por
comp(eto.
Fe4ido a esco(3a por uma (in'ua'em de pro'ramao que permitisse maiores
recursos 'r/icos para a monta'em do simu(ador6 mas que no 2 pro+etada para
manipu(ar in/orma>es em binrio e 3e=adecima(6 /oi necessrio imp(ementar a('umas
rotinas para simu(ar unidades + e=istentes em (in'ua'ens pr?pria para pro'ramao de
processadores. Abai=o sero (istadas essas rotinas com descrio de sua /unciona(idade.
&exaBinA /uno que recebe um caracter em 3e=adecima( e retorna seu 4a(or em
binrio.
,!
Binario$ecima#A /uno que recebe como parQmetro um 4a(or binrio e retorna o
4a(or correpondente em decima(.
Ex"oenteA /uno para e(e4ar um nMmero a qua(quer e=poente.
.otinas imp(ementadas apenas para a parte 4isua( do simu(adorA
Lim"aCam"osA (impa os ob+etos na te(a do simu(ador antes de iniciar no4a e=ecuo
do pro'rama.
egistraProcessoA inc(uso das in/orma>es processadas na (ista de *rocessamento
das instru>es.
-.lculo do -I
*ara au=i(iar a 4isua(izao das 4anta'ens do pipe(ine sobre a arquitetura6 /oi inc(usa
a rotina de c(cu(o de -*I 9-ic(os por Instruo<. 5esse simu(ador6 em cada est'io da
instruo /oi inc(uso um contador para simbo(izar a quantidade de cic(os 'astos por
instruo6 + que na (in'ua'em Fe(p3i6 no 2 poss84e( ati4ar a rotina se'undo um c(ocN
de/inido. Ao t2rmino da e=ecuo do simu(ador6 2 contabi(izado o nMmero tota( de
instru>es contidas no pro'rama. 1 tota( de cic(os 'astos 2 di4idido pe(o tota( de
instru>es e=ecutadas e resu(tado 2 in/ormado no campo -*I.
,1
Simulador da arquitetura 8086 -om ipeline
/ ipeline
L uma t2cnica de imp(ementao de processadores que permite a sobreposio
tempora( de di4ersas /ases da e=ecuo de instru>es6 sendo a base para imp(ementao
de t2cnicas que permitem aos processadores atuais6 rodarem os pro'ramas mais
rapidamente.
L 4a(ido ressa(tar que o pipe(ine otimiza a per/ormance do processador por meio do
aumento do t3rou'3put das instru>es6 ou se+a6 aumentando o nMmero de instru>es
e=ecutadas por unidade de tempo6 e no por meio da diminuio do tempo de e=ecuo
de cada instruo.
-on0itos do ipeline
A di/icu(dade de imp(ementar o pipe(ine est na possibi(idade de termos
inconsist0ncias ao processar instru>es durante a e=ecuo de um pro'rama6
dependendo da seq]0ncia de instru>es do c?di'o. :ais con/(itos6 tamb2m c3amados de
3azards6 podem ser tratados com a inc(uso de unidades que permitam detectar
antecipadamente o con/(ito e que insiram um tratamento durante o processo de pipe(ine6
em meio E e=ecuo das instru>es.
1s 3azards so di4ididos emA estruturais6 de contro(e e de dados.
1a2ards %struturais
1correm quando o 3ardXare no pode suportar a combinao de instru>es que o
pipe(ine dese+a e=ecutar no mesmo cic(o de c(ocN. @=emp(oA em uma arquitetura que
possui uma mem?ria para instru>es e dados6 no seria poss84e( adiantar a (eitura de
uma instruo se uma instruo de (eitura de dados esti4esse sendo e=ecutada no mesmo
cic(o de c(ocN. 5o simu(ador =!66 a unidade de contro(e de4er testar o tipo de
instruo antes de (iberar sua e=ecuo para o pr?=imo est'io. -aso a instruo no
possa ser e=ecutada6 a primeira tentati4a de so(uo seria o adiantamento do resu(tado6
caso esse tamb2m no /osse poss84e(6 a so(uo dada 2 a inc(uso da instruo de 5o
1perante 951*< para os est'ios do pipe(ine6 a/im de que a instruo comp(ete a parte
do cic(o con/(itante6 para dar se'mento ao est'io.
1a2ards de -ontrole
1ri'ina7se da necessidade de se tomar uma deciso com base nos resu(tados de uma
instruo6 enquanto outras esto sendo e=ecutadas. @=emp(oA instru>es com sa(to
condiciona(6 (oops. *ara esses casos as so(u>es propostas di4idem7seA
,,
3arada ou 'olhaA insero de uma instruo 51* para que no 3a+a Opro'ressoP no
processamento da in/ormao enquanto o resu(tado da instruo anterior no esti4er
e=ecutado. *rob(emaA essa so(uo embora se+a mais /ci( de imp(ementar imp(ica em
perda da per/ormance do processamento6 pois o pipe(ine 2 e/iciente ap?s seu
preenc3imento tota(. -om a parada6 3 perda de cic(os e perde7se mais tempo para
Oenc3erP no4amente o pipe(ine depois de interromper o pro'resso das instru>es por
interm2dio do pipe(ine. @sse recurso 2 ap(ic4e( no simu(ador proposto nesse traba(3o6
pois embora no imp(emente instru>es de des4io condiciona(6 3 seq]0ncias de
instru>es em que no ser poss84e( e/etuar o adiantamento do resu(tado e para esses
casos6 o uso da bo(3a impede o con/(ito de dados.
3redio$ 3ardXare para Oadi4in3arP qua( a pr?=ima instruo a ser e=ecutada em caso
de des4ios condicionais 9se sa(ta para um dado endereo ou e=ecuta a instruo
se'uinte<. @m 'era( os processadores adotam a predio para tratar os des4ios
condicionais e=ecutados em pipe(ine. Dm esquema simp(es 2 sempre predizer que os
des4ios condicionais 4o /a(3ar. @stando certo6 o pipe(ine prosse'ue na 4e(ocidade
m=ima. Se errado6 3 a necessidade de atrasar o a4ano norma( das instru>es por meio
do pipe(ine e 'arantir que as instru>es + e=ecutadas no iro inter/erir no resu(tado
correto. @sse recurso satis/az o con/(ito que pode ocorrer com o uso da instruo (oop.
*retende7se imp(ementar uma (ista de predio dinQmica em que os resu(tados das
quatro primeiras ocorr0ncias so armazenados e a m2dia de ocorr0ncia determinar a
ao que de4er ser assumida para a pr?=ima e=ecuo. @m caso de erro da predio6
inc(uso de bo(3as para (impar o pipe(ine6 caso o resu(tado processado a/ete a seq]0ncia
do pro'rama.
1a2ards de (ados
1correm quando a e=ecuo de uma instruo depende do resu(tado de outra6 que
ainda est no pipe(ine. @=emp(oA processar uma soma em que um dos operadores ainda
no te4e seu 4a(or a(terado pe(a instruo anterior6 sa(4o no re'istrador.
*ara so(ucionar esse con/(ito 2 necessria a inc(uso de uma unidade que
constantemente 4eri/ica os conteMdos dos re'istradores e os compara6 para 4eri/icar se
3a4er a('um con/(ito de dado em a('um est'io. *ara que essa unidade possa e/etuar os
testes6 torna7se indispens4e( um con+unto de sinais de contro(e que de4er ser
constantemente atua(izado durante processamento das instru>es de cada est'io. Ao
e/etuar compara>es entre a ao indicada pe(os sinais de contro(e 9e=emp(o
escrita;(eitura da mem?ria ou escrita;(eitura de um re'istrador< e os endereos de
mem?ria e os dados apontados por cada instru>es6 em cada est'io do pipe(ine6 2
poss84e( detectar que ocorrer um con/(ito. 5esse instante6 rea(iza7se um teste para
4eri/icar se 2 poss84e( adiantar o resu(tado de a('um est'io antes de ocorrer o
processamento da instruo em que ocorreria o con/(ito. @m caso positi4o6 a unidade de
adiantamento 9ForXardin'< ir buscar o resu(tado contido em um dos re'istradores 9ou
o camin3o para encontrar o re'istrador e o dado< para inc(uso como uma entrada para o
processamento da instruo se'uinte. Fessa /orma6 no e=emp(o da soma6 os operandos
seriam processados com os 4a(ores corretos antes mesmo do resu(tado da instruo
anterior ter sido 'ra4ado no re'istrador destino.
1 simu(ador imp(ementa esse conceito e o resu(tado adiantado 2 sa(4o nos
re'istradores de est'io do pipe(ine para serem passados aos re'istradores manipu(ados
nas instru>es.
,3
%xecutando o programa
Ap?s iniciar a e=ecuo do pro'rama 9dup(o c(ique sobre o arqui4o
Simu(adorS*epi(ine.e=e<6 abrir a te(a do simu(ador con/orme mostra a /i'ura 1.!. 5o
campo OIn/orme o camin3o do arqui4o 9.(st<6 c(ique no boto de abrir6 para que a +ane(a
de busca de arqui4os se+a aberta. Se(ecione e abra arqui4o com e=tenso .(st 'erado a
partir de c?di'o pro'ramado em assemb() no montador 5ASM.
*ara abrir o arqui4o teste busque porA
Firet?rio^:1MarciaFederizzi\VanessaBorba^Simu(adorS*ipe(ine^pro'rama/unciona.(
st
8bserva=es$
1 7 Antes de abrir o arqui4o .(st 2 necessrio edit7(o (in3a a (in3a. A edio 2
re/erente ao caracter de quebra de (in3a6 que no arqui4o ori'ina( no 2 o caracter padro
para enter. 5esse caso6 ao /ina( de cada (in3a tec(e enter para marcar o /ina( de (in3a no
arqui4o. Ap?s abrir o arqui4o6 c(ique em @=ecutar *ro'rama para iniciar a simu(ao de
processamento do =!6.
, 7 1 arqui4o .(st de4er ser 'erado no nasm6 no sistema operaciona( &inu=6 atra42s
do comandoA diretorio;nasm U/ e(/ U( arqui4o.(st arqui4o.asm
!uncionamento
1 simu(ador da arquitetura com pipe(ine possui uma inter/ace parecida com a
inter/ace do simu(ador sem pipe(ine6 como podemos 4er na /i'ura #.!. Foram
acrescentadas as (istas /e)istradores do 3ipeline e Est)ios do 3ipeline. As demais
(ista'ens e=istentes na imp(ementao anterior permanecem com as mesmas
/unciona(idades6 permitindo 4isua(izar6 ao /ina( do pro'rama6 a seq]0ncia de e=ecuo e
os 4a(ores dos re'istradores nas (istas 3rocessamento das %nstru=es e Conte@do dos
re)istradores6 respecti4amente6 para 4eri/icao da e=ecuo do pro'rama /ornecido
para a arquitetura do simu(ador. :amb2m as rotinas e=postas em Simu(ador Sem
*ipe(ine /oram mantidas nesse pro+eto com *ipe(ine.
*ara imp(ementao do pipe(ine /oi necessrio modi/icar a estrutura dos
procedimentosA MovMemRe6 MovRegReg6 MovImedReg6 MovMemAcum6 Loop e Add. A
a(terao consiste em6 para cada cic(o que a instruo em e=ecuo /or processada6
a('uns dados de contro(e6 tais como endereos de re'istradores6 dado (ido6 endereo de
mem?ria6 etc6 de4em ser armazenadas em re'istradores de contro(e do pipe(ine
correspondente ao est'io de e=ecuo da instruo. -omo a (in'ua'em esco(3ida para
desen4o(4er o simu(ador6 no permite e=ecuo simu(tQnea de rotinas6 no 2 poss84e(
inc(uir6 e/eti4amente6 mais de uma instruo no mesmo cic(o de processamento. 5o
entanto6 montamos a estrutura ana(isando como seria imp(ementado em uma (in'ua'em
sem essa restrio6 con/orme ser e/etuado na se'unda etapa do pro+eto6 quando o
processador ser imp(ementado em (in'ua'em VKF&6 que permite para(e(ismo na
e=ecuo de rotinas. Fessa /orma6 o pipe(ine /oi pro+etado para ser imp(ementado em
cinco est'ios6 contro(ados por quatro re'istradores de pipe(ine IFIF6 IF@I6 @IM@M6
M@MZB. A se'uir sero especi/icados cada est'io e in/orma>es passadas para cada
re'istrador de contro(e.
,"
'usca da %nstruo !%(#A est'io que e/etua a (eitura da instruo na mem?ria
usando para tanto o endereo armazenado em I*. A instruo e o I* incrementado so
armazenados no re'istrador de contro(e IFIF.
0ecodi&icao da %nstruo e leitura dos re)istradores de uso )eral !%0#A 2
respons4e( pe(a decodi/icao e (eitura dos operandos6 se+a na mem?ria ou no banco de
re'istradores. Fa parte inicia( desse est'io6 a in/ormao de qua(9is< o9s< endereo9s<
do9s< re'istrador9es< uti(izado9s< na instruo6 + decodi/icado9s<6 2 armazenada ainda
no re'istrador IFIF.
Execuo ou clculo de endereo !E1#A processa a instruo 9e=ecuta<. So
'uardados no re'istrador IF@I o endereo dos re'istradores ori'em e destino6 se
3ou4er6 os sinais que indicam se 2 escrita;(eitura no banco de re'istrador6 se 2
escrita;(eitura na mem?ria6 o endereo do dado imediato no ca(cu(ado e o I*
incrementado.
Acesso A mem.ria !7E#A est'io reser4ado para escrita na mem?ria. Armazena no
re'istrador de contro(e @IM@M o re'istrador destino6 os sinais deA escrita;(eitura no
banco de re'istrador6 contro(e do des4io condiciona(6 escrita;(eitura da mem?ria e o
endereo ca(cu(ado na D&A.
Escrita no banco de re)istradores !B'#A processo de escrita no banco de
re'istradores. Armazena no re'istrador M@MZB o re'istrador destino6 os sinais deA
escrita;(eitura no banco de re'istrador6 escrita;(eitura da mem?ria e o dado (oca(izado
que ser armazenado.
-om base nas in/orma>es armazenadas nos re'istradores de est'ios do pipe(ine6
durante cada cic(o de e=ecuo das instru>es6 2 poss84e( testar esses 4a(ores e
identi/icar se 3a4er con/(itos de contro(e ou dados.
1 procedimento Atua#izaEstagios 2 c3amado a /ina( da e=ecuo de cada cic(o da
instruo para armazenar os dados con/orme o est'io que a instruo est sendo
processada. As in/orma>es armazenadas so 4is84eis no simu(ador6 sendo os
re'istradores de est'ios representados pe(as co(unas da (ista /e)istradores de
Est)ios.
Furante a passa'em do cic(o atua( para o no4o cic(o6 a(2m da atua(izao dos dados
nos re'istradores 2 e=ecutada a c3amada da rotina Unidade0ect2aCard. @ssa /uno
imp(ementa o /uncionamento da unidade para detectao de 3azards de dados e de
contro(e6 por meio de testes com os 4a(ores dos sinais de contro(e e endereos de
re'istradores uti(izados em cada instruo6 in/orma>es essas contidas nos re'istradores
de est'io do pipe(ine. Cuando 2 poss84e( tratar o 3azard6 a Unidade0ect2aCard
e/etua a c3amada da rotina de adiantamento 9/orXardin'<.
'or(ar!ingA /uno que6 con/orme so(icitao passada por parQmetro pe(a unidade
de deteco de 3azard6 retorna o 4a(or a ser adiantado para um re'istrador que ir
uti(izar essa in/ormao6 no dispon84e( ainda pe(a instruo anterior6 no est'io
se'uinte.
-on/orme mencionado anteriormente6 no 2 poss84e( e=ecutar essas /unciona(idades
em para(e(o. 5o entanto6 para simu(ar a pro'resso dos est'ios con/orme a entrada e
sa8da de instru>es no pipe(ine6 /oi imp(ementada a rotina ExecutaInstrucoesPi"e. @sse
procedimento 2 disparado assim que o arqui4o contendo as instru>es do pro'rama 2
inteiramente processado. 5esse instante6 a (ista /e)istradores do 3ipeline que cont2m
a seq]0ncia de armazenamentos dos re'istradores do pipe(ine est comp(eta. A partir
dessa (ista6 a rotina ExecutaInstrucoesPi"e simu(a a e=ecuo da entrada das instru>es
por cic(o6 o que resu(ta6 ap?s o pipe(ine estar Oc3eioP6 em cinco instru>es sendo
e=ecutadas em para(e(o. -omo resu(tado6 o simu(ador apresenta a pro'resso de est'ios
,#
na (ista Est)ios do 3ipeline. 1s est'ios so simbo(izados con/orme si'(a in/ormada
acima6 entre par0nteses6 para descrio dos est'ios do pipe(ine. Cuando a unidade de
deteco de 3azard 4eri/icar que no 2 poss84e( e/etuar adiantamentos6 a instruo 51
95o 1perante< ser in/ormada para o9s< est'io9s< at2 que a in/ormao do est'io
anterior este+a dispon84e( para o est'io que no est operante.
A inter/ace a(terada com a inc(uso das no4as (istas para o simu(ador com pipe(ine
pode ser 4isua(izada na /i'ura $.!.
(i)ura D.+ U Simu(ador -om *ipe(ine.
-.lculo do -I
L poss84e( comparar o -*I do simu(ador sem pipe(ine com esse simu(ador em que o
recurso est imp(ementado. Ao e=ecutar o pro'rama e=emp(o no simu(ador sem pipe(ine
o tempo o -*I resu(tou em 36%$,6!6%#6#,,.
@=ecutando o pro'rama e=emp(o no simu(ador com pipe(ine esse 4a(or /oi reduzido
para 161$#$1",#$1"3.
*ara contabi(izar o nMmero de cic(os 'astos no pro'rama e=ecutado6 a conta'em
passou a ser rea(izada ao /ina( da rotina ExecutaInstrucoesPi"e. *ara tanto6 o nMmero
,6
de est'ios na M(tima (in3a da (ista de Est)ios do 3ipeline 2 contado6 e esse 4a(or 2
di4idido pe(o tota( de instru>es e=ecutadas. 1 resu(tado 2 in/ormado no campo -*I.
Ana(isando os 4a(ores obtidos 2 poss84e( notar que a di/erena entre os -*I_s est
e(e4ada6 se considerarmos o nMmero de instru>es e=ecutadas no pro'rama e=emp(o.
Mas 2 4(ido (embrar que para uma representao precisa dos -*I_s seria necessrio um
c(ocN no sistema6 o que no 2 poss84e( imp(ementar 9(imitao da (in'ua'em uti(izada
para o simu(ador<. @ssa rotina /oi imp(ementada6 com base nas rotinas que simu(ariam
os cic(os6 apenas para dar noo da di/erena entre processadores com t2cnicas
di/erentes para e=ecuo de instru>es.
Sinais de -ontrole
*ara 'erenciar as in/orma>es sobre as unidades uti(izadas durante a e=ecuo de
uma instruo6 bem como a ao e=ecutada6 se 3a4er (eitura ou escrita no banco de
dados ou re'istradores6 por e=emp(o6 /oi imp(ementada a unidade de contro(e
representada pe(a rotina Atua#izaSinaisContro#e. 1 princ8pio de /uncionamento dessa
rotina consiste em inicia(izar os sinais de contro(e para 'erenciamento de 3azard6 (eitura
e escrita de dados em re'istradores ou endereos de mem?ria. A tabe(a 1.! mostra a
con/i'urao de sinais passada para a unidade de contro(e con/orme o est'io do
pipe(ine e instruo e=ecutada.
:abe(a 1.! 7 -onteMdo dos re'istradores do pipe(ine.
.e'istrador
do *ipe(ine
Instruo -onteMdo 9Sinais nos re'istradores<
IDEX
Hera(
mov memreg
mov regreg
mov imedreg
mov memacum
mov add
loop
RegDest1+RegDest2
reg1vazio+reg2+rw=1(escreve)+rm='0'
reg1+reg2+rw=1(escreve)+rm=' '(ioperate)
reg1vazio+reg2+rw=1(escreve)+rm=' '(ioperate)
reg1vazio+reg2+rw=1(escreve)+rm='0'
reg1+reg2+rw=1(escreve)+rm=' '(ioperate)
reg1vazio+reg2+rw=1+rm=' '(ioperate)
EX!E!
Hera(
mov memreg
mov regreg
mov imedreg
mov memacum
mov add
loop
RegDestE!+R"mem+R"Reg+ Dv#$
reg2+rw=1(escreve)+rm='0'+'0'(sem desvio)
reg2+rw=1(escreve)+rm=' '(ioperate)+ '0'(sem desvio)
reg2+rw=1(escreve)+rm=' '(ioperate)+'0'(sem desvio)
reg2+rw=1(escreve)+rm='0'+'0'(sem desvio)
reg2+rw=1(escreve)+rm=' '(ioperate)+ '0'(sem desvio)
reg2+rw=1+rm=' '(ioperate)+ '1'(com desvio)
!E!"%
Hera(
mov memreg
mov regreg
mov imedreg
mov memacum
mov add
loop
RegDest!"+R"+ !em&'aReg$
reg2+rw = 1(escreve)+rm='0'
reg2+rw = 1(escreve)+rm=' '(ioperate)
reg2+rw = 1(escreve)+rm=' '(ioperate)
reg2+rw = 1(escreve)+rm='0'
reg2+rw = 1(escreve)+rm=' '(ioperate)
reg2+rw = 1+rm=' '(ioperate)
,$
Abai=o sero especi/icados os sinais uti(izados pe(a unidade de contro(e6 com
respecti4a ordenao de preenc3imento e nMmero de posi>es ocupadas 9caracteres< por
cada sina(A
SinaisI'I$$ 2 um 4etor contendo o con+unto de posi>es que representam os
re'istradores ori'em 9.e'Fest1 U 3 posi>es< e destino 9.e'Fest, U 3 posi>es< da
instruo6 armazenados em ordem da esquerda para a direita.
SinaisIFIF`.e'Fest1a.e'Fest,b

SinaisI$E)$ do est'io IF em diante /az necessrio contro(ar as a>es que a
instruo6 + identi/icada ir e=ecutar na seq]0ncia do pipe(ine. *ara tanto6 esse 4etor
cont2m os sinais em seq]0ncia6 da esquerda para a direita6 que identi/icam o re'istrador
ori'em 9.e'FestI@ U 3 posi>es<6 re'istrador destinto 9.e'FestI@, U 3 posi>es<6 sina(
de que comanda a (eitura;escrita no banco de re'istradores 7 .Z.e' 9! 7 &er;1 U
@scre4erJ 1 posio< e por /im6 o re'istrador que comanda (eitura;escrita na mem?ria 7
.XMem9! 7 &er;1 U @scre4eJ 1 posio<.
SinaisIF@I`.e'FestI@a.e'FestI@,a.Z.e'a.XMemb
SinaisE)MEMA 4etor composto pe(os sinais de re'istrador destinto 9.e'Fest@M U 3
posi>es<6 contro(e se e=ecuta des4io condiciona( 9! U sem des4io; 1 U com des4io6 1
posio<6 sina( de que comanda a (eitura;escrita no banco de re'istradores 7 .Z.e' 9! 7
&er;1 U @scre4erJ 1 posio< e o re'istrador que comanda (eitura;escrita na mem?ria 7
.XMem9! 7 &er;1 U @scre4eJ 1 posio<.
Sinais@IM@M`.e'Fest@MaF4-a.Zmema.Z.e'b
SinaisMEM*B$ 4etor composto dos sinais de re'istrador destinto 9.e'FestMZ U 3
posi>es<6 de contro(e para 4eri/icar se o dado 2 /ornecido a partir da sa8da da D&A ou
da mem?ria de dados 7 MemD&a.e' 9! U Fado da mem?ria;1 U Fado da D&A U 1
posio< e o sina( de que comanda se 2 escrita no banco de re'istradores ou na mem?ria
7 .Z9! U @scre4e na mem?ria; 1 7 @scre4e no banco de re'istradores<.
SinaisM@MZBAV .e'FestMZaMemD&a.e'a.ZJ
,
-oncluso
-om o pro+eto dos simu(adores da arquitetura do processador =!6 podemos
adquirir um con3ecimento mais amp(o sobre seu /uncionamento o que imp(ica numa
maior /aci(idade de desen4o(407(o em uma (in'ua'em que atenda as necessidades de
simu(taneidade para imp(ementao da arquitetura6 principa(mente com o uso da t2cnica
de imp(ementao *ipe(ine. 5o pro+eto dos simu(adores no /oi imp(ementada uma
arquitetura comp(eta6 mas apenas as suas unidades bsicas e necessrias para a e=ecuo
do subcon+unto de instru>es de/inido. 5o entanto6 /oi o su/iciente para que
conse'u8ssemos identi/icar as principais di/erenas6 4anta'ens e des4anta'ens6 entre
arquiteturas que imp(ementam e que no imp(ementam a t2cnica de pipe(ine.
*ara a se'unda parte do traba(3o6 com imp(ementao em (in'ua'em VKF&6 sero
necessrias modi/ica>es6 pois o c?di'o ser adaptado de uma e=ecuo no para(e(a
para uma e=ecuo para(e(a. Isso imp(ica6 entre outras modi/ica>es6 em a(terar a /orma
de representao das unidades da arquitetura6 pois no simu(ador6 /oram uti(izados
recursos pr?prios da (in'ua'em Fe(p3i para representar as estruturas /8sicas da
arquitetura de /orma simp(i/icada. *ara a no4a imp(ementao do pro+eto6 que 4isa o
desen4o(4imento em uma (in'ua'em pr?pria para descrio de 3ardXare6 VKF&6 tem7
se a 4iso de que6 os resu(tados sero mais satis/at?rios do que a rea(izada em uma
(in'ua'em mais (imitada re/erente E simu(ao de /uncionamento de um 3ardXare.
,%
Re3er4ncias +i&liogr.)cas
3ttpA;;XXX.ee.pucrs.br;cdbarros;d,!!#\1;Microproc;Hrupo\#;t17
microprocessadores.pd/
3ttpA;;XXX.dee.u/c'.edu.br;cscaico;/acisa;oac;!67!\9s(ides<.pd/
3ttpA;;pessoa(.ut/pr.edu.br;'usta4o;asm!6.pd/
3tttpA;;pessoa(.ut/pr.edu.br;'usta4o;modosd,!ded,!enderecamento.doc
3ttpA;;XXX.dee.u/c'.edu.br;cscaico;/acisa;
3ttpA;;in/obase.,it.com.br;up(oad;)%)du,mb3#\obc(m\ee\cap3.pd/
3ttpA;;XXX.pp'ia.pucpr.br;csantin;cc;,!!$;1;arquitetura.3tm(
3ttpA;;XXX.pp'ia.pucpr.br;csantin;cc;
1r'anizao e *ro+etos de -omputadoresA A Inter/ace KardXare;So/tXare U eo3n &.
Keness)6 Fa4id A. *atterson6 eames .. &arus ,f @ditora &:-6 .io de eaneiro6 cap.6 U
*ipe(ine.
3!

Você também pode gostar