Você está na página 1de 73

Universidade Federal de Pernambuco UFPE Centro de Informtica CIn

Infraestrutura de Hardware if674ec Relatrio de Projeto

Recife 2 !!"!

ndice

Introduo""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""+ !" Unidade de Processamento , $escrio das Entidades"""""""""""""""""""""""""""""""""6 !"! -emria""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""6 !"2 Re%istrador de *2 bits""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""7

Infraestrutura de Hardware if674ec !"* 'anco de Re%istradores""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""".


!"4 Re%istrador de $eslocamento"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""". Es#ecifica o de Projeto !"+ Unidade /%ica e (ritmtica 0U/(1""""""""""""""""""""""""""""""""""""""""""""""""""2 !"6 3i%nE4tend!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""2 $ocumento desenvolvido #elo %ru#o de &ardware sob orienta o do !"7 3i%nE4tend2""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""! monitor'runo (lbu)uer)ue de 'arros e da #rofessora Edna !". 'arros" 3&ift/eft25!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""! !"2 3&ift/eft252""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!! !"! /UI""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!

!"!! Com#or""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!2 !"!2 67P"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!* !"!* $ivisor"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!* 2" Unidade de Controle""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!+ 2"! Instrues""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!7 2"2 Pil&a"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!. 2"* $iviso""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!2 2"4 $esvios""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!2 2"+ 8ratamento de E4cees""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""2 *" $escrio das 7#eraes"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""2! *"! Instrues ti#o R""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""2! *"2 Instrues ti#o I""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""2+ *"* Instrues ti#o 9""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*
2 *

4" $escrio dos Estados do Controle"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""*! +" $escrio da Instrues e Ciclos"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""+4 6" Conjunto de 3imulaes""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""6* 7" Ima%em CPU"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!4+ ." $ia%rama de Estados"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!46 Concluso""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!47

Introduo
7 #resente relatrio tem como objetivo a#resentar uma descrio %eral resultados obtidos na im#lementao de um #rocessador -IP3 #ara a e os disci#lina de Infra,Estrutura de Hardware: ministrada #ela #rofessora 'arros" Este #rocessador ca#a; de e4ecutar o conjunto de Edna fornecidas instrues na es#ecificao do #rojeto" 7 relatrio divido nas se%uintes #artes< Unidade de Processamento , $escrio das Entidades: Unidade de Controle: $escrio das 7#eraes: $escrio dos Estados do Controle: $escrio das Instrues e Ciclos: Conjunto de 3imulaes: Ima%em CPU: $ia%rama de Estados e Concluso" Foi #rocurado e4#licar cada uma destas #artes de forma clara e descrevendo todas as informaes concisa: necessrias" 6a descrio das entidades: foram descritas de forma detal&ada tanto entidades fornecidas #reviamente #elos monitores )uanto as as %ru#o: es#ecificando os sinais )ue entram e saem e o objetivo de cada elaboradas #elo =ale ressaltar )ue os multi#le4adores no foram descritos: visto )ue uma" funcionamento trivial" 6a descrio das o#eraes: foi a#resentado seu resumo sobre cada instruo: mostrando o #asso a #asso de cada uma: um destacando cada mdulo utili;ado" 6a descrio dos estados de foram mencionados #asso a #asso todos os estados com seus controle: sinais de controle" 9 na descrio das instrues e ciclos: foram res#ectivos )uantos e )uais so os estados 0ciclos1 utili;ados #or cada descritos instruo" 8ambm so a#resentados o $ia%rama de Estados e a Ima%em da CPU: facilitar a visuali;ao %eral do #rocessador #rojetado" Por fim: no #ara de simulaes so mostradas as waveforms dos mdulos e de cada conjunto tanto no instru o controle )uanto em toda a CPU" (s simulaes servem #ara consolidar a inte%ridade do #rojeto: %arantindo a corretude e a do #rocessador #rojetado" confiabilidade

!" Unidade de Processamento , $escrio das Entidades


7 #rocessador consiste em trs blocos bsicos< unidade de unidade de controle e memria" ( se%uir sero descritas as #rinci#ais #rocessamento: entidades do #rocessador elaborado neste #rojeto<

!"! -emria

( memria usada no #rojeto #ossui #alavras de *2 bits com #or b>te" (#esar do endereo #ossuir *2 bits: a memria s #ossui 2+6 endere amento (s entradas e sadas da memria so< b>tes" !" add < entrada de *2 bits 7 endereo de entrada da memria 0*2 bits1" 2" $ata5in< entrada de *2 bits ( entrada de $ados da memria 0*2 bits1" *" cloc? < entrada de ! bit 'it de cloc? comum a todo o @com#utador@" 4" wr < entrada de ! bit 7 bit )ue di; se vai ler ou escrever" +" $ata5out< sada de *2 bits ( sada de $ados da memria 0*2 bits1"

-emria Peculiaridades da -emria< !" En)uanto o bit @wr@ estiver com o valor 0;ero1 ele estar lendo: estiver )uando com o valor ! 0um1 ele estar escrevendo" 2" ( memria est tri%ada na subida do cloc?" *" (o se fa;er uma re)uisio de leitura: o valor #edido s estar no #r4imo dis#on vel #ulso de cloc? a#s o cloc? onde foi feito a re)uisio"
6

4" ( escrita leva a#enas um ciclo" +" Instrues e dados sero arma;enados na memria usando a little,endian" estrat%ia

!"2 Re%istrador de *2 bits


Para arma;enar instrues e dados: bem como o endereo de utili;ados de *2 bits: conforme ilustrado instrues:re%istradores sero abai4o"

Re%istrador de *2 bits Re%istrador ( Re%istrador au4iliar )ue ir arma;enar o contedo do re%istrador #or rs do 'anco de Re%istradores" endere ado Re%istrador ' Re%istrador au4iliar )ue ir arma;enar o contedo do re%istrador #or rt do 'anco de Re%istradores" endere ado Re%istrador IR Re%istrador au4iliar )ue ir arma;enar a instruo )ue est sendo e4ecutada" Re%istrador Causa Re%istrador au4iliar )ue ir arma;enar a causa da e4ceo 0 ine4istente A ! , overflow1" o#code Re%istrador EPC Re%istrador au4iliar )ue ir arma;enar o endereo da instruo em )ue ocorreu a e4ceo"
7

Re%istrador -$R Re%istrador au4iliar )ue ir arma;enar o contedo do endereo de a#ontado memria #or PC" Re%istrador U/(,7ut Re%istrador au4iliar )ue ir arma;enar os resultados de o#eraes )ue utili;am a U/( 0sada da U/(1"

!"* 'anco de Re%istradores


7 banco de re%istradores com#osto #or *2 re%istradores de *2 bits $ois cada"re%istradores #odem ser visveis simultaneamente" ( leitura dos re%istradores combinacional: isto se os valores nas entradas ou ReadRe%ister 2 forem alteradas: os valores nas sa das Read$ata! ReadRe%ister! Read$ata2 #odem ser alterados" 7 re%istrador a ser escrito ou entrada BriteRe%ister e )uando a entrada Re%Brite ativada 0i%ual a selecionado #ela re%istrador selecionado recebe o contedo da entrada Brite$ata" 7 !1 o reset lim#a todos os re%istradores e sinal de assncrono"

'anco de Re%istradores

!"4 Re%istrador de $eslocamento


7 re%istrador de deslocamento deve ser ca#a; de deslocar um n mero de *2 bits #ara es)uerda e #ara a direita" 6o deslocamento direita o inteiro #ode sinal ser #reservado ou no" 7 nmero de deslocamentos #ode variar 7 e es#ecificado na entrada n 0* bits1 do re%istrador de entre e funcionalidade do re%istrador de deslocamento es#ecificada deslocamento" desejada ( entrada s&ift 0* bits menos si%nificativos1 conforme fi%ura abai4o" (s na
.

atividades discriminadas na entrada s&ift so sncronas com o cloc? e o ass ncrono" reset

Re%istrador de $eslocamento

!"+ Unidade /%ica e (ritimtica 0U/(1


( Unidade /%ica e (ritmtica 0U/(1 um circuito combinacional )ue #ermite a o#erao com nmeros de *2 bits na notao com#lemento a ( funcionalidade es#ecificada #ela entrada F conforme descrito na dois" abai4o" tabela

U/(

!"6 3i%nE4tend!
Entrada 0!6 bits1< =etor de !6 bits a ser E4tend 0! bit1< 'it )ue determina se a e4tenso ser com ou sem estendido" sinal" 3ada 0*2 bits1< Entrada estendida #ara *2 bits"
2

3i%nE4tend! 7 objetivo do 3i%nE4tend! estender em !6 bits o contedo de InstructionC!+, D: #reservando o sinal 0E4tend E !1 ou no 0E4tend E 1"

!"7 3i%nE4tend2
Entrada 0! bit1< 'it a ser estendido 0fla% /81" 3ada 0*2 bits1< Entrada estendida #ara *2 bits"

3i%nE4tend2 7 objetivo do 3i%nE4tend2 estender a fla% /8 0! bit1 #ara *2 bits: %uardar no re%istrador destino do 3/8 0rd1 ou 3/8I #ara 0rt1"

!". 3&ift/eft25!

Entrada 0*2 bits1< =etor de *2 bits a ser multi#licado #or 4 0deslocada ve;es #ra es)uerda1" 2 3ada 0*2 bits1< Entrada multi#licada #or 4 0deslocada 2 ve;es #ra es)uerda1"

3&ift/eft25!
!

7 objetivo do 3&ift/eft25! multi#licar #or 4 o contedo do imediato estendido: colocando a sada na )uarta entrada do multi#le4ador cujo controle sinal de (/U3rc' 0(/U3rc'C*D1" Esta unidade usada #ara o clculo deslocamento do branc&" do

!"2 3&ift/eft252
Entrada 026 bits1< =etor de 26 bits a ser multi#licado #or 4 0deslocada ve;es #ra es)uerda1 e com#letado com 2 ;eros 0 Fs1 em sua #arte 2 si%nificativa" menos 3ada 02. bits1< Entrada multi#licada #or 4 0deslocada 2 ve;es #ra e com#letada com 2 ;eros 0 Fs1 em sua #arte menos es)uerda1 si%nificativa"

3&ift/eft252 7 objetivo do 3&ift/eft252 multi#licar InstructionC2+, D #or 4 e com 2 ;eros 0 Fs1 em sua #arte menos si%nificativa: resultando em um com#letar endereo de 2. bits: a ser estendido #ara *2 bits atravs da sua com PC C*!,2.D" Este endereo de *2 bits ento transferido ao PC" com#osi o unidade usada #ara desvios incondicionais 0j e Esta jal1"

!"!

/UI

Entrada 0!6 bits1< =etor de !6 bits a serem deslocados" 3ada 0*2 bits1< Entrada deslocada de !6 bits"

/UI
!!

7 objetivo do /UI com#letar os !6 bits da entrada com !6 ;eros frente: e4ecutando em se%uida o deslocamento es)uerda de !6 bits" 0 Fs1 sua eficiente e r#ido usar este mdulo do )ue usar o Re%istrador de mais $eslocamento"

!"!! Com#or
Entradas< -$R 0*2 bits1< =etor de *2 bits )ue contm o contedo do re%istrador -$R" Re%istrador ' 0*2 bits1< =etor de *2 bits )ue contm o contedo do re%istrador '" Controle 02 bits1< =etor #roveniente do controle )ue di; se a lb: um sb: instru o um um l& ou um s&" 3ada< 3ada 0*2 bits1< =etor de *2 bits )ue re#resenta a sada da unidade )ue #ode ser de um lb: de um sb: de um l& ou de um Com#or: s&"

Com#or 7 objetivo da unidade Com#or fa;er< G ( com#osio do b>te menos si%nificativo do re%istrador -$R ;eros com 24 0 Fs1 sua frente: caso a instruo seja um G /oad'>te ( com#osi o da metade 0&alf1 menos si%nificativa do re%istrador 0lb1" -$R com !6 ;eros 0 Fs1 sua frente: caso a instruo seja um /oadHalf 0l&1" G ( substituio do b>te menos si%nificativo do re%istrador -$R b>te menos si%nificativo do re%istrador ': caso a instru o seja #elo 3tore'>te 0sb1" um

!2

G ( substituio da metade 0&alf1 b>te menos si%nificativa do -$R #ela metade 0&alf1 menos si%nificativa do re%istrador ': re%istrador instru caso a o seja um 3toreHalf 0s&1"

!"!2 67P
Entradas< 7#code 06 bits1< =etor de 6 bits )ue re#resenta o o#code da 3&amtFunct 0!! bits1< =etor de !! bits )ue re#resenta InstructionC!!, instruo" seja: D: ou)ue re#resenta o s&amt 0InstructionC! ,6D1 e o funct instru o" 0InstructionC+, D1 da 3ada< 3ada 0! bit1< 'it )ue re#resenta a sada da unidade 67P e )ue di; se instru o um 67P 03ada E !1 ou no 03ada E a 1"

67P 7 objetivo da unidade 67P a#enas informar se a instruo um 67P 03ada E !1 ou no 03ada E 1: #ara diferenci,la da instruo 3//: cont )ue m mesmos o#code e funct"

!"!* $ivisor
Entradas< ( 0*2 bits1< =etor de *2 bits )ue re#resenta o ' 0*2 bits1< =etor de *2 bits )ue re#resenta o dividendo" $ivControl 0! bit1< 3inal )ue &abilita o $ivisor" divisor" Cloc? 0! bit1< Re#resenta o cloc? do sistema" Reset 0! bit1< 3inal )ue: )uando ativado ;era o contedo do re%istrador"
!*

3adas< HI 0*2 bits1< =etor de *2 bits )ue arma;enar o resto da /7 0*2 divis o" bits1< =etor de *2 bits )ue arma;enar o )uociente da diviso"

$ivisor 7 $ivisor tem como objetivo reali;ar a diviso: com sinal: entre 2 *2 bits e salvar o resultado 0)uociente e resto1 em 2 re%istradores de vetores de sem a utili;ao da Unidade /%ica e (ritmtica 0U/(1" 7 al%oritmo *2 bits: utili;ado na diviso se%ue abai4o<

!4

2" Unidade de Controle

Controle Entradas< 7#code 06 bits1< Indica )ual o o#code da instruo atual" Hero 0! bit1< Indica se os nmeros #assados #ara a U/( so i%uais" Funct 06 bits1< Indica )ual o funct da instruo atual" 6o# 0! bit1< Indica se a instruo atual 6o# ou no" 7verflow 0! bit1< Indica se &ouve overflow na U/(" Cloc? 0! bit1< 3inal de cloc? do sistema" Reset 0! bit1< 3inal )ue #ode levar o controle #ara o estado Reset " 3adas< ControleE4cecao 0! bit1< Indica se o valor a ser escrito no vem de PC3ource ou da com#osio de um b>te da memria com ;eros Re%istrador PC caso de E4cees1" 0no PCBrite 0! bit1< 3inal )ue ativa a escrita no re%istrador PC" Ior$ 02 bits1< 3inal )ue indica )ual endereo da memria ser lido -emBrite 0! bit1< 3inal )ue )uando ativado #ermite a escrita na Iuando memria"desativado #ermite a leitura da memria" -emtoRe% 04 bits1< 3inal )ue indica )ual das entradas ser escrita no de Re%istradores" 'anco IRBrite 0! bit1< 3inal )ue #ermite a escrita no re%istrador IR"
!+

Re%$st 02 bits1< Indica em )ual re%istrador o valor ser escrito" $ivControl 0! bit1< 3inal )ue )uando ativado &abilita a e4ecu o do al%oritmo de $iviso no module $ivisao" 3torer 0! bit1< Indica )ual valor ser escrito na -emria" Com#or 02 bits1< Indica )ual com#osio ser feita 0lb: sb: l&: s&1" CauseBrite 0! bit1< 3inal )ue )uanto ativado #ermite a escrita no Causa" re%istrador IntCause 0! bit1< Indica )ual valor ser escrito no re%istrador Causa" EPCBrite 0! bit1< 3inal )ue )uanto ativado #ermite a escrita no EPC" re%istrador PC3ource 0* bits1< Indica )ual ser o novo valor de re%istrador PC" (/U7# 0* bits1< 3inal )ue define )ual o#erao ser e4ecutada #ela U/(" (/U3rc( 0! bit1< 3inal )ue escol&e o #rimeiro o#erando da U/(" (/U3rc' 02 bit1< 3inal )ue escol&e o se%undo o#erando da U/(" E4tend 0! bit1< Indica se o module 3i%nE4tend! vai estender mantendo sinal ou no" o In3&ifter 0! bit1< Indica )uais sero as entradas do Re%istrador de $eslocamento 03&ifter1" 3&ifter 0* bits1< Es#ecifica )ual o ti#o de deslocamento )ue ser no Re%istrador de $eslocamento" e4ecutado Re%Brite 0! bit1< 3inal )ue )uanto ativado #ermite a escrita no 'anco Re%istradores" de Brite( 0! bit1< 3inal )ue )uanto ativado #ermite a escrita no re%istrador (" Brite' 0! bit1< 3inal )ue )uanto ativado #ermite a escrita no re%istrador '" Brite-$R 0! bit1< 3inal )ue )uanto ativado #ermite a escrita no -$R" re%istrador
!6

Brite(/U7ut 0! bit1< 3inal )ue )uando ativado #ermite a escrita no re%istrador U/(,7ut" 7 controle foi #rojetado #ara controlar toda a CPU: indicando sinais as instru #ara )uees sejam e4ecutadas" Ele funciona como uma -)uina de Finita 0F3-1" Ela tem um Estado )ue indica )ual o estado atual e )uais Estados #ossveis #r4imos estados" os

2"! Instrues
7 #rocessador #ossui *2 re%istradores de #ro#sito %eral: sendo cada *2 um bits" de Um subconjunto das instrues do -IP3 foi im#lementado: de com as tabelas a se%uir< acordo

Formato da Instrues (ssembl> 7#code rs rt rd s&amt funct Com#ortamento add rd: rs: rt 4 rs rt rd 4 42 rd K rs L rt and rd: rs: rt 4 rs rt rd 4 424 rd K rs M rt brea? 4 , , , 4 4d Para e4ecuo div rs: rt 4 rs rt , 4 4!a 0=er diviso1 inc rd: rs 4 rs , rd 4 427 rd K rs L ! jr rd 4 rs , , 4 4. PC K rs mf&i rd 4 , , rd 4 4! rd K &i mflo rd 4 , , rd 4 4!2 rd K lo no# 4 , , , 4 4 6o o#eration not rd: rs 4 rs , rd 4 42. rd K rs rte 4! , , , 4 4! PC K EPC sll rd: rt: s&amt 4 , rt rd s&amt 4 rd K rt NN s&amt sllv rd: rs: rt 4 rs rt rd 4 44 rd K rs NN rt slt rd: rs: rt 4 rs rt rd 4 42a rd K 0rs N rt1 O! < sra rd: rt: s&amt 4 , rt rd s&amt 4* rd K rt PP s&amtJ srav rd: rs: rt 4 rs rt rd 4 47 rd K rs PP rtJ srl rd: rt: s&amt 4 , rt rd s&amt 42 rd K rt PP s&amt sub rd: rs: rt 4 rs rt rd 4 422 rd K rs , rt 4or rd: rs: rt 4 rs rt rd 4 426 rd K rs Q rt Instrues Formato R
J Estas instrues estendem o sinal 0deslocamento aritmtico1"
!7

(ssembl> 7#code rs rt EndAImediato Com#ortamento addi rt: rs: im 4. rs rt imediato rt K rs L imediatoJJ addiu rt: rs: im 42 rs rt imediato rt K rs L imediatoJJ andi rt: rs: im 4c rs rt imediato rt K rs M imediatoJJ be) rs:rt: offset 44 rs rt offset 0ver desvios1 bne rs:rt: offset 4+ rs rt offset 0ver desvios1 lb rt: end0rs1 42 rs rt end rt K b>teCend0rs1DJJJ l& rt: end0rs1 42! rs rt end rt K &alfwordCend0rs1DJJJ lui rt: imediato 4f , rt imediato rt K imediato NN !6 lw rt: end0rs1 42* rs rt end rt K wordCend0rs1DJJJ sb rt: end0rs1 42. rs rt end end0rs1 K b>teCrtDJJJ s& rt: end0rs1 422 rs rt end end0rs1 K &alfwordCrtDJJJ slti rt: rs: imediato 4a rs rt imediato rt K 0rs N imediato1 O! < sw rt: end0rs1 42b rs rt end end0rs1 K wordCrtDJJJ subi rt: rs: im 4b rs rt imediato rt K rs , imediatoJJ subiu rt: rs: im 4d rs rt imediato rt K rs , imediatoJJ 4ori rt: rs: im 4e rs rt imediato rt K rs Q imediatoJJ Instrues Formato I
JJ 7 valor de RimediatoS estendido #ara *2 bits: estendendo seu sinal 0bit mais constante1" si%nificativo da JJJ 7 valor de RendS somado ao valor de RrsS 0re%istrador base1 #ara o clculo do lido da mem ria ou do endereo onde os dados sero endere o a ser escritos"

(ssembl> 7#code 7ffset Com#ortamento j offset 42 offset 0ver desvios1 jal offset 4* offset 0ver desvios1 Instrues Formato 9

2"2 Pil&a
Para #ermitir a c&amada de rotinas reentrantes e recursivas: estrutura utili;amos do umati#o #il&a: )ue foi im#lementada numa #arte da mem ria: arma;enar o re%istrador *!: como mostrado na fi%ura #ara abai4o<

Pil&a
!.

7 endereo do to#o da #il&a ser %uardado no re%istrador 22 do banco re%istradores: )ue funciona como o 3P 03tac? Pointer1" Iuando o de ativado reset este re%istrador a#onta #ara o endereo onde comea a #il&a 02271"

2"* $iviso

$ivide dois nmeros inteiros de *2 bits: com sinal: resultando em um de *2 bits: tambm com sinal" (lm das entradas ( e ' 0valores de *2 nmero serem bits a divididos1: esse com#onente tem um sinal de cloc? e um de ser o li%ados ao sinal de cloc? e reset %lobais" 7 reset lim#a todos os reset: )ue re%istradores internos do $ivisor: inclusive re%istradores tem#or rios e re%istradores de resultado" 7 resultado da diviso inteira dois re%istradores: o re%istrador HI )ue contm o resto e o arma;enado em cont m o )uociente" re%istrador /7 )ue

2"4 $esvios
7s desvios do -IP3 #odem ser classificados como desvios condicionais incondicionais" 7s desvios condicionais reali;am al%um teste ou ou #ara: somente ento: e4ecutar o desvio" 7s incondicionais sem#re verifica o desvio" 7 c e4ecutam olculo do endereo de destino reali;ado diferentemente nos ti#os de desvio< dois $esvios condicionais< 7 valor de RoffsetS multi#licado #or 4 e PC atual" 7 resultado desta o#erao o endereo de destino do salto somado ao 0desvio1: caso o resultado do teste condicional seja verdadeiro" E4em#lo< be) r*: r4: 4f , 3u#ondo )ue r* e r4 sejam: ambos: i%uais )ue o PC a 4*a e atual seja 4!c: a #r4ima instruo a ser e4ecutada a a #osi o 0 4f J 41 L 4!c: )ue a )ue ocu#a 4+."

$esvios incondicionais< 6o caso de instrues )ue utili;em offset: este deve ser multi#licado #or 4: resultando em um endereo de 2. bits" valor todo Como endereo deve #ossuir *2 bits: os 4 bits restantes vm do PC re#resentando os 4 bits mais si%nificativos do endereo de destino" 6o atual: instru es )ue utili;am re%istrador: o contedo do re%istrador j o caso de endere #r#rioo de destino"
!2

E4em#los< jal 4!a2b , 3u#ondo )ue o PC atual seja i%ual a endere o de: destino ser i%ual a C0PC M 4f 1 T 0 4!a2b J 4ba!2fa o 441D: i%ual a 6.(C" 6ote )ue os 4 bits mais si%nificativos do PC )ue4b foram 0! !!1 conservados" jr 6 , 3u#ondo )ue o r6 seja i%ual a 4!a2b: o de destino endere o ser i%ual ao #r#rio valor de r6: neste caso: 4!a2b"

2"+ 8ratamento de E4cees


7 #rocessador trata dois ti#os de e4cees< o#code ine4istente e ocorr ncia 6a de uma e4ceo: o endereo da instruo )ue causou a overflow" salvo no e4ce o re%istrador EPC e o PC carre%ado: #osteriormente: com o endere o da rotina de tratamento" 7 b>te menos si%nificativo do valor do rotina de tratamento est arma;enado nos se%uintes endereos de endere o da 2+4 0o#code ine4istente1 e 2++ 0overflow1" ( rotina de tratamento mem ria< arma;enada na memria a #artir do endereo 22. 0decimal1 at o 2+! 0decimal1" Esta rotina arma;ena o valor ! no re%istrador * e endere o e4ecu o de um #ro%rama no caso de um o#code ine4istente" 6o caso #ara a overflow: o valor 2 arma;enado no re%istrador * e a e4ecuo do de um continua" #ro%rama 7u seja: os #assos )ue ocorrem ao detectar uma e4ceo so< !" (o ser detectada uma e4ceo o endereo da instruo )ue a ser salvo no EPC" causou deve 2" 7 b>te locali;ado na #osio de memria 2+4 ou 2++ 0de#endendo da e4ceo1 dever ser lido e estendido #ara *2 bits" Essa e4tenso com feita;eros" a#enas *" 7 nmero de *2 bits resultante do #asso anterior dever ser o PC" s com#letar tais #assos a rotina de tratamento de e4ce o novo(# valor de arma;enada na memria ser e4ecutada: fa;endo assim #or software a )ue est de arma;enar o valor ade)uado no re%istrador tarefa * "

*" $escrio das 7#eraes


( se%uir sero descritas as instrues utili;adas neste #rojeto: )ue ocorre ono #rocessador #rojetado )uando as mesmas s o mostrando decodificadas" 8odas as instrues a serem descritas #assam #rimeiramente #ela instru o e atuali;ao do PC" Em se%uida: es#era,se um tem#o #ara busca da #ossa )ue seescrever a instruo no re%istrador de instrues 0IR1" /o%o a da decodificao da instruo: com a #osterior leitura dos a#fase s ocorre fonte" (#s estas eta#as: cada instruo #assa #or seus #r#rios re%istradores, descritos estados: a se%uir<

*"! Instrues ti#o R


G add re%!: re%2: re%* (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%2 e re%* do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" Em se%uida: um sinal de nos corres#ondente soma vai #ara a U/(: )ue e4ecuta a o#erao ( L controle resultado ento escrito no re%istrador de destino re%! e uma nova '" 7 buscada instruo na memria" Esta instruo #ode causar e4ceo #or overflow" G and re%!: re%2: re%* (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%2 e re%* do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" Em se%uida: um sinal de nos corres#ondente ao (6$ vai #ara a U/(: )ue e4ecuta a o#era o ( controle 7 resultado ento escrito no re%istrador de destino re%! e uma nova (6$ '" instruo buscada na memria" G brea? (#s identificar a instruo no est%io de decodificao: a e4ecuo do #ro%rama interrom#ida: atravs de um loo# infinito )ue im#ede a #r 4ima instruo" busca da G div re%!: re%2 (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%! e re%2 do 'anco de Re%istradores s o carre%ados nos
2!

re%istradores ( e ' #ara uso #osterior" Em se%uida: (: ' e um sinal controle vo #ara o divisor #ara )ue o mesmo comece a divis o entre de 3 rios e4atamente *2 ciclos no al%oritmo de diviso utili;ado" (o e necess '" Iuando se #assam estes *2 ciclos: o )uociente da diviso escrito no re%istrador /7 e o resto da diviso escrito no re%istrador HI" Em busca,se se%uida: uma nova instruo na memria" G inc re%!: re%2 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" Em se%uida: um sinal de controle corres#ondente re%istrador ( #ara #ara ao U/(: ne%a vai )ue e4ecuta a o#erao 678 ( 0(1" 7 resultado ento no re%istrador de destino re%! e uma nova instruo buscada na escrito memria" G jr re%! (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%! do 'anco de Re%istradores carre%ado no uso #osterior" Em se%uida: #assa,se o contedo do re%istrador ( re%istrador ( #ara busca,se #ara o PC uma e nova instruo na memria" G mf&i re%! (#s identificar a instruo no est%io de decodificao: escreve,se o contedo do re%istrador HI 0da sada do $ivisor1 no re%istrador re%! de e busca,se uma nova instruo na do Re%istradores 'anco memria" G mflo re%! (#s identificar a instruo no est%io de decodificao: escreve,se o contedo do re%istrador /7 0da sada do $ivisor1 no re%istrador re%! 'anco de Re%istradores e busca,se uma nova instru o na do memria" G no# (#s identificar a instruo no est%io de decodificao: busca,se a instru o na memria 0PC j foi incrementado em 4 no #rimeiro ciclo1" #r4ima G not re%!: re%2 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no re%istrador ( #ara 22

uso #osterior" Em se%uida: um sinal de controle corres#ondente ao vai #ara a U/(: )ue e4ecuta a o#erao ( L !" 7 resultado ento incremento re%istrador escrito no de destino re%! e uma nova instruo buscada na memria" G rte (#s identificar a instruo no est%io de decodificao: o valor do re%istrador EPC carre%ado em PC" Em se%uida: busca,se uma nova instruo na memria" G sll re%!: re%2: s&amt (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" Em se%uida: o contedo do re%istrador a ser deslocado re%istrador ' #ara n mero 0'1 e o de deslocamentos 0s&amt E InstructionC! ,6D1 #assam #ara o re%istrador de deslocamento 03&ifter1: juntamente com o sinal de corres#ondente ao 3&ift /eft" (#s a o#erao de deslocamento: o controle 0sa da do 3&ifter1 carre%ado no re%istrador re%! do 'anco de resultado busca,se uma e nova instruo na memria" Re%istradores G sllv re%!: re%2: re%* (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%2 e re%* do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" Em se%uida: o conte do do nos a ser deslocado 0(1 e o nmero de deslocamentos 0'C4, D1 #assam re%istrador re%istrador de deslocamento 03&ifter1: juntamente com o sinal de #ara o corres#ondente ao 3&ift /eft" (#s a o#erao de deslocamento: o controle 0sa da do 3&ifter1 carre%ado no re%istrador re%! do 'anco de resultado busca,se uma e nova instruo na memria" Re%istradores G slt re%!: re%2: re%* (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%2 e re%* do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" Em se%uida: um sinal de nos corres#ondente com#arao vai #ara a U/(: )ue e4ecuta a o#erao controle C7-P ': o )ue afetar a fla% /8 03e ( N ': /8 E !" 3e ( PE ': ( fla% /8 1" ser /8 E ( estendida #ara *2 bits na unidade 3i%nE4tend2 e de#ois carre%ada no re%istrador re%! do 'anco de Re%istradores" ( se%uir ser uma nova instruo na memria" busca,se
2*

G sra re%!: re%2: s&amt (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" Em se%uida: o contedo do re%istrador a ser deslocado re%istrador ' #ara n mero 0'1 e o de deslocamentos 0s&amt E InstructionC! ,6D1 #assam #ara o re%istrador de deslocamento 03&ifter1: juntamente com o sinal de corres#ondente ao 3&ift Ri%&t (rit&metic" (#s a o#erao de controle o resultado 0sada do 3&ifter1 carre%ado no re%istrador re%! do deslocamento: Re%istradores e busca,se uma nova instruo na 'anco de memria" G srav re%!: re%2: re%* (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%2 e re%* do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" Em se%uida: o conte do do nos a ser deslocado 0(1 e o nmero de deslocamentos 0'C4, D1 #assam re%istrador re%istrador de deslocamento 03&ifter1: juntamente com o sinal de #ara o corres#ondente ao 3&ift Ri%&t (rit&metic" (#s a o#erao de controle o resultado 0sada do 3&ifter1 carre%ado no re%istrador re%! do deslocamento: Re%istradores e busca,se uma nova instruo na 'anco de memria" G sll re%!: re%2: s&amt (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" Em se%uida: o contedo do re%istrador a ser deslocado re%istrador ' #ara n mero 0'1 e o de deslocamentos 0s&amt E InstructionC! ,6D1 #assam #ara o re%istrador de deslocamento 03&ifter1: juntamente com o sinal de corres#ondente ao 3&ift Ri%&t /o%ical" (#s a o#erao de controle resultado 0sada deslocamento: o do 3&ifter1 carre%ado no re%istrador re%! do 'anco Re%istradores e busca,se uma nova instruo na de memria" G sub re%!: re%2: re%* (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%2 e re%* do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" Em se%uida: um sinal de nos corres#ondente subtrao vai #ara a U/(: )ue e4ecuta a o#erao controle resultado ( , '" 7 ento escrito no re%istrador de destino re%! e uma nova buscada instruo na memria" Esta instruo #ode causar e4ceo #or overflow"
24

G 4or re%!: re%2: re%* (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%2 e re%* do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" Em se%uida: um sinal de nos corres#ondente ao U7R vai #ara a U/(: )ue e4ecuta a o#era o ( controle resultado U7R '" 7 ento escrito no re%istrador de destino re%! e uma nova buscada instruo na memria"

*"2 Instrues ti#o I


G addi re%!: re%2: imediato (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: imediato 0InstructionC!+, D1 re%istrador ( #ara sinal #ara com *2 bits na unidade 3i%nE4tend!" Em se%uida: um sinal de estendido corres#ondente soma vai #ara a U/(: )ue e4ecuta a o#erao ( L controle 0Estendido1" 7 resultado ento escrito no re%istrador de destino imediato nova instru re%! e umao buscada na memria" Esta instruo #ode causar overflow" e4ceo #or G addiu re%!: re%2: imediato (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: imediato 0InstructionC!+, D1 re%istrador ( #ara sinal #ara sem *2 bits na unidade 3i%nE4tend!" Em se%uida: um sinal de estendido corres#ondente soma vai #ara a U/(: )ue e4ecuta a o#erao ( L controle 0Estendido1" 7 resultado ento escrito no re%istrador de destino imediato nova instru re%! e umao buscada na memria" Esta instruo no #ode causar #or overflow: visto )ue trata,se de uma o#erao sem e4ce o sinal" G andi re%!: re%2: imediato (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: imediato 0InstructionC!+, D1 re%istrador ( #ara sinal #ara com *2 bits na unidade 3i%nE4tend!" Em se%uida: um sinal de estendido corres#ondente ao (6$ vai #ara a U/(: )ue e4ecuta a o#era o ( controle imediato 0Estendido1" 7 resultado ento escrito no re%istrador de (6$ re%! e uma nova instruo buscada na destino memria"
2+

G be) re%!: re%2: offset (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%! e re%2 do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" 7 endereo de salto do nos calculado branc& atravs da soma de PC com o offset estendido #ara *2 bits 03i%nE4tend!1 e multi#licado #or 4 03&ift/eft25!1" Em se%uida: um sinal controle corres#ondente subtrao vai #ara a U/(: )ue e4ecuta a de ( , ': o#era oo )ue afeta a fla% de ;ero 03e ( E ': H E !" 3e ( V ': H n o 1" se3e fa; E H nada E : 0PC j foi incrementado em 41" 3e H E !: PC recebe endereo de salto do branc&" Finalmente: busca,se uma nova instruo o mem na ria: no endereo a#ontado #or PC" G bne re%!: re%2: offset (#s identificar a instruo no est%io de decodificao: os valores dos re%istradores re%! e re%2 do 'anco de Re%istradores s o carre%ados re%istradores ( e ' #ara uso #osterior" 7 endereo de salto do nos calculado branc& atravs da soma de PC com o offset estendido #ara *2 bits 03i%nE4tend!1 e multi#licado #or 4 03&ift/eft25!1" Em se%uida: um sinal controle corres#ondente subtrao vai #ara a U/(: )ue e4ecuta a de ( , ': o#era oo )ue afeta a fla% de ;ero 03e ( E ': H E !" 3e ( V ': H n o 1" se3e fa; E H nada E !: 0PC j foi incrementado em 41" 3e H E : PC recebe endereo de salto do branc&" Finalmente: busca,se uma nova instruo o mem na ria: no endereo a#ontado #or PC" G lb re%!: endereco0re%21 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: endereco 0InstructionC!+, D1 re%istrador ( #ara com sinal #ara *2 bits na unidade 3i%nE4tend!" Em se%uida: calcula,se estendido endere o na memria< um sinal de controle corres#ondente soma vai o U/(: )ue e4ecuta a o#erao ( L endereco 0Estendido1" Ento: #ara a mem ria o na dado contido no endereo calculado 0sada de U/(,7ut1: e busca,se #osteriormente: carre%a,se este dado no Re%istrador de $ados da 0-$R1" -emriaPassa,se o contedo dos re%istradores -$R e ' #ara a Com#or: unidade )ue ir com#or os . bits menos si%nificativos de -$R com 24 0 Fs1 sua frente" Ento a sada da unidade Com#or ser escrita no ;eros de destino re%! e uma nova instruo ser buscada na re%istrador memria"
26

G l& re%!: endereco0re%21 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: endereco 0InstructionC!+, D1 re%istrador ( #ara com sinal #ara *2 bits na unidade 3i%nE4tend!" Em se%uida: calcula,se estendido endere o na memria< um sinal de controle corres#ondente soma vai o U/(: )ue e4ecuta a o#erao ( L endereco 0Estendido1" Ento: #ara a mem ria o na dado contido no endereo calculado 0sada de U/(,7ut1: e busca,se #osteriormente: carre%a,se este dado no Re%istrador de $ados da 0-$R1" -emriaPassa,se o contedo dos re%istradores -$R e ' #ara a Com#or: unidade )ue ir com#or os !6 bits menos si%nificativos de -$R com ;eros 0 Fs1 sua frente" Ento a sada da unidade Com#or ser !6 re%istrador escrita no de destino re%! e uma nova instruo ser buscada na memria" G lui re%!: imediato (#s identificar a instruo no est%io de decodificao: o valor do imediato cam#o 0InstructionC!+, D1 ser estendido #ara *2 bits e ter seu deslocado contedo !6 bits #ara a es)uerda: sendo #osteriormente escrito no de destino re%!" Em se%uida: uma nova instruo ser buscada na re%istrador memria" G lw re%!: endereco0re%21 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: endereco 0InstructionC!+, D1 re%istrador ( #ara com sinal #ara *2 bits na unidade 3i%nE4tend!" Em se%uida: calcula,se estendido endere o na memria< um sinal de controle corres#ondente soma vai o U/(: )ue e4ecuta a o#erao ( L endereco 0Estendido1" Ento: #ara a mem ria o na dado contido no endereo calculado 0sada de U/(,7ut1: e busca,se #osteriormente: carre%a,se este dado no Re%istrador de $ados da 0-$R1" -emriaEm se%uida: escreve,se o contedo de -$R no re%istrador de re%! e uma nova instruo ser buscada na destino memria" G sb re%!: endereco0re%21 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: endereco 0InstructionC!+, D1 re%istrador ( #ara com sinal #ara *2 bits na unidade 3i%nE4tend!" Em se%uida: calcula,se estendido endere o na memria< um sinal de controle corres#ondente soma vai o #ara a
27

U/(: )ue e4ecuta a o#erao ( L endereco 0Estendido1" Ento: mem ria o na dado contido no endereo calculado 0sada de U/(,7ut1: e busca,se #osteriormente: carre%a,se este dado no Re%istrador de $ados da 0-$R1" -emriaPassa,se o contedo dos re%istradores -$R e ' #ara a Com#or: )ue ir substituir os . bits menos si%nificativos de -$R #elos unidade menos . bits si%nificativos do re%istrador ' 0re%!1" Ento a sada da unidade Com#or ser escrita na memria 0no endereo calculado1 e uma nova instruo ser buscada na memria" G s& re%!: endereco0re%21 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: endereco 0InstructionC!+, D1 re%istrador ( #ara com sinal #ara *2 bits na unidade 3i%nE4tend!" Em se%uida: calcula,se estendido endere o na memria< um sinal de controle corres#ondente soma vai o U/(: )ue e4ecuta a o#erao ( L endereco 0Estendido1" Ento: #ara a mem ria o na dado contido no endereo calculado 0sada de U/(,7ut1: e busca,se #osteriormente: carre%a,se este dado no Re%istrador de $ados da 0-$R1" -emriaPassa,se o contedo dos re%istradores -$R e ' #ara a Com#or: unidade )ue ir substituir os !6 bits menos si%nificativos de -$R bits si%nificativos do re%istrador ' 0re%!1" Ento a sada da #elosmenos !6 Com#or ser escrita na memria 0no endereo calculado1 e uma nova unidade instruo ser buscada na memria" G slti re%!: re%2: imediato (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: imediato 0InstructionC!+, D1 re%istrador ( #ara sinal #ara com *2 bits na unidade 3i%nE4tend!" Em se%uida: um sinal de estendido corres#ondente com#arao vai #ara a U/(: )ue e4ecuta a o#erao controle C7-P Imediato 0estendido1: o )ue afetar a fla% /8 03e ( N Imediato ( 0estendido1: /8 E !" 3e ( PE Imediato 0estendido1: /8 E 1" ( fla% estendida /8 ser #ara *2 bits na unidade 3i%nE4tend2 e de#ois ser carre%ada re%istrador re%! do 'anco de Re%istradores" ( se%uir busca,se uma no instru nova o na memria" G sw re%!: endereco0re%21 (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: endereco 0InstructionC!+, D1 re%istrador ( #ara estendido
2.

com sinal #ara *2 bits na unidade 3i%nE4tend!" Em se%uida: calcula,se endereo na memria< um sinal de controle corres#ondente soma vai o U/(: )ue e4ecuta a o#erao ( L endereco 0Estendido1" 7 contedo #ara a re%istrador ' 0re%!1 ser escrito na memria 0no endereo calculado1 e do nova instruo ser buscada na memria" uma G subi re%!: re%2: imediato (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: imediato 0InstructionC!+, D1 re%istrador ( #ara sinal #ara com *2 bits na unidade 3i%nE4tend!" Em se%uida: um sinal de estendido corres#ondente subtrao vai #ara a U/(: )ue e4ecuta a o#erao ( controle imediato 0Estendido1" 7 resultado ento escrito no re%istrador de , re%! e uma nova instruo buscada na memria" Esta instruo #ode destino e4ce o #or overflow" causar G subiu re%!: re%2: imediato (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: imediato 0InstructionC!+, D1 re%istrador ( #ara sinal #ara sem *2 bits na unidade 3i%nE4tend!" Em se%uida: um sinal de estendido corres#ondente subtrao vai #ara a U/(: )ue e4ecuta a o#erao ( controle imediato 0Estendido1" 7 resultado ento escrito no re%istrador de , re%! e uma nova instruo buscada na memria" Esta instruo no destino causar e4ceo #or overflow: visto )ue trata,se de uma o#era o #ode sem sinal" G 4ori re%!: re%2: imediato (#s identificar a instruo no est%io de decodificao: o valor do re%istrador re%2 do 'anco de Re%istradores carre%ado no uso #osterior" (o mesmo tem#o: imediato 0InstructionC!+, D1 re%istrador ( #ara sinal #ara com *2 bits na unidade 3i%nE4tend!" Em se%uida: um sinal de estendido corres#ondente ao U7R vai #ara a U/(: )ue e4ecuta a o#era o ( controle imediato 0Estendido1" 7 resultado ento escrito no re%istrador de U7R re%! e uma nova instruo buscada na destino memria"

22

*"* Instrues ti#o 9


G j offset (#s identificar a instruo no est%io de decodificao: determinado endere o de salto do jum#" Para isso: InstructionC2+, D multi#licado o atrav #or 4s da unidade 3&ift/eft252 e so adicionados 2 ;eros 0 Fs1 em menos si%nificativos: resultando em um endereo de 2. bits: a ser seus bits #ara *2 bits atravs da sua com#osio com PCC*!,2.D" Este estendido bits ser de ent o transferido ao PC" Em se%uida: uma nova instruo ser endere o *2 buscada na memria" G jal offset (#s identificar a instruo no est%io de decodificao: determinado endere o de salto do jum#" Para isso: InstructionC2+, D multi#licado o atrav #or 4s da unidade 3&ift/eft252 e so adicionados 2 ;eros 0 Fs1 em menos si%nificativos: resultando em um endereo de 2. bits: a ser seus bits #ara *2 bits atravs da sua com#osio com PCC*!,2.D" Este estendido bits ser de ent o transferido ao PC: #orm: antes disso: o endereo de endere o *2 0PC L 41 ser escrito no re%istrador *! 0ra1 do 'anco de retorno Finalmente: uma nova instruo ser buscada na Re%istradores" memria"

4" $escrio dos Estados de Controle


Estado< Incio Estado inicial da m)uina" 'usca instruo e atuali;a o PC" Incrementa e a instruo do banco da memria #ara a entrada do o carre%a PC instru es" de re%istrador 3inais< G Ior$ E Passa o endereo )ue est em PC #ara a G mem -emBrite ria" E / um endereo da memria" G (/U3rc( E Passa PC #ara a U/( 0#rimeiro o#erando1" G (/U3rc' E ! Passa 4 #ara a U/( 0se%undo o#erando1" G (/U7# E ! -anda a U/( somar 0PC L 41" G PC3ource E Passa a sada da U/( 0resultado1 #ara o -u4 cujo sinal de ControleE4ce o" controle G ControleE4cecao E Passa o )ue vem de PC3ource #ara o PC 0PC E PC L 41 e n o endereo da subrotina de tratamento da o G e4ce PCBrite o" E ! Permite )ue o PC seja atuali;ado com PC L 4 0PC E PC L 41" Estado< BaitIR (%uarda subida do cloc? Estado< IRBrite Escreve o )ue vem da memria no re%istrador de instrues G IRBrite E ! Carre%a a instruo no re%istrador de instrues"

*!

Estado< $ecodifica Envia o o#code e o funct 0InstructionC+, D1 da instruo #ara o )ue a instru o seja decodificada" / 2 re%istradores" 7 contedo do controle #ara re%istrador 0rs1 #assado #ara o re%istrador ( e o contedo do 2W !W 0rt1 #assado #ara o re%istrador '" E4tende: como nmero com sinal: re%istrador bits menos si%nificativos InstructionC!+, D1" Esse valor ir ser os !6 #or 4 e ir #ara a entrada * do -u4 cujo sinal de controle multi#licado (/U3rc'" (/U7# fa; a U/( somar PC 0entrada do -u4 cujo sinal de controle (/U3rc(1 com o deslocamento multi#licado #or 4 0entrada * do -u4 sinal cujo de controle (/U3rc'1" 7 resultado arma;enado em U/(,7ut" estado: calcula,se o endereo de destino do branc& e o escreve em 6este 3e instruo no for aritmticaAl%ica ou branc&: estas aes no U/(,7ut" funcionamento #rejudicam o da CPU" 3inais< G E4tend< ! E4tende o deslocamento com sinal" G (/U3rc(< Passa PC #ara a U/( 0#rimeiro o#erando1" G (/U3rc'< !! Passa deslocamento multi#licado #or 4 #ara a U/( 0se%undo o#erando1" G Brite( E ! Permite )ue o contedo do re%istrador rs #asse #ara o G re%istrador Brite' E ! (" Permite )ue o contedo do re%istrador rt #asse #ara o G re%istrador (/U7#< !'" -anda a U/( somar 0PC E PC L deslocamento J 41" 7 resultado o#erao o endereo de destino do salto 0desvio1: caso o desta teste condicional seja verdadeiro" resultado do G Brite(/U7ut E ! Escreve no re%istrador U/( ,7ut" Estado< Clculo do endereo da memria Passa o endereo )ue vem do re%istrador ( 0(/U3rc( E !1 e o sinal estendido 0(/U3rc' E ! 1 #ara a U/(" ( U/( fa; a soma dos 0(/U7# E !1 e %uarda o resultado no re%istrador endereos U/(,7ut"
*2

3inais< G E4tend E ! E4tende o deslocamento com sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o sinal estendido 0deslocamento1 #ara a U/( 0se%undo o#erando1" G (/U7# E ! -anda a U/( somar 0PC E PC L G deslocamento1" Brite(/U7ut E ! Escreve no re%istrador U/( ,7ut" Estado< /UI Com#e com !6 ;eros na frente e desloca InstructionC!+, D !6 bits es)uerda: arma;enando,o no re%istrador destino #ara a rt" 3inais< G -emtoRe% E ! ! Passa a sada de /UI #ara Brite$ata do banco de G re%istradores" Re%$st E Escol&e rt como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rt" Estado< 'RE(X Para a e4ecuo" Estado< 'ranc& 0'EI e '6E1 $esvios condicionais" 'EI , Reali;a o desvio se rs E rt '6E , Reali;a o desvio se rs YE rt

**

3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E Passa o contedo do re%istrador ' #ara a U/( 0se%undo G o#erando1" (/U7# E ! -anda a U/( subtrair 0( , '1 #ara verificar se o 0( E '1 ou diferente de ;ero 0( YE resultado ;ero G '1" PC37urce E ! Passa o valor )ue est %uardado em U/(,7ut 0PC L #ara o -u4 cujo sinal de controle deslocamento J 41 G ControleE4ce ControleE4ce o" o E Passa o )ue vem de PC3ource #ara o PC 0PC E PC L e no o endere o da subrotina de tratamento da deslocamento J 41 e4ceo" Permite )ue PC receba PC L deslocamento J 4 se a fla% de ;ero for a instru o e a instruo i%ual a ! e for 'EI ou se a fla% de ;ero for for '6E" Estado< ($$ Reali;a a soma do contedo do re%istrador rs com o contedo do e %uarda o resultado no re%istrador re%istrador rt rd" 3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E Passa o contedo do re%istrador ' #ara a U/( 0se%undo G o#erando1" (/U7# E ! -anda a U/( somar 0( L '1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Caso ocorra e4ceo 0overflow1: 7verflow E !" Caso contrrio: 7verflow E " Estado< 3U' Reali;a a subtrao do contedo do re%istrador rs com o contedo do re%istrador rt e %uarda o resultado no re%istrador rd"
*4

3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E Passa o contedo do re%istrador ' #ara a U/( 0se%undo G o#erando1" (/U7# E ! -anda a U/( subtrair 0( , '1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Caso ocorra e4ceo 0overflow1: 7verflow E !" Caso contrrio: 7verflow E " Estado< (6$ Reali;a um (6$ entre o contedo do re%istrador rs e o contedo do %uarda o resultado no re%istrador rt e rd" 3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E Passa o contedo do re%istrador ' #ara a U/( 0se%undo G o#erando1" (/U7# E !! -anda a U/( fa;er (6$ 0( (6$ '1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Estado< U7R Reali;a um U7R entre o contedo do re%istrador rs e o contedo do %uarda o resultado no re%istrador rt e rd" 3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E Passa o contedo do re%istrador ' #ara a U/( 0se%undo G o#erando1" (/U7# E !! -anda a U/( fa;er U7R 0( U7R '1"
*+

G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Estado< ($$I Reali;a a soma do contedo do re%istrador rs com o contedo de InstructionC!+, D estendido #ara *2 bits 0imediato1 com sinal e %uarda resultado no re%istrador rt" o 3inais< G E4tend E ! E4tende o imediato com sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o contedo de InstructionC!+, D estendido #ara *2 bits #ara a U/( 0se%undo o#erando1" 0imediato1 G (/U7# E ! -anda a U/( somar 0( L Imediato1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Caso ocorra e4ceo 0overflow1: 7verflow E !" Caso contrrio: 7verflow E " Estado< ($$IU Reali;a a soma do contedo do re%istrador rs com o contedo de InstructionC!+, D estendido #ara *2 bits 0imediato1 sem sinal e %uarda resultado no re%istrador rt" o 3inais< G E4tend E E4tende o imediato sem sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o contedo de InstructionC!+, D estendido #ara *2 bits #ara a U/( 0se%undo o#erando1" 0imediato1 G (/U7# E ! -anda a U/( somar 0( L Imediato1"
*6

G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" 6o ocorre e4ceo #or overflow: visto )ue a o#erao sem sinal" Estado< 3U'I Reali;a a subtrao do contedo do re%istrador rs com o contedo de InstructionC!+, D estendido #ara *2 bits 0imediato1 com sinal e %uarda resultado no re%istrador rt" o 3inais< G E4tend E ! E4tende o imediato com sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o contedo de InstructionC!+, D estendido #ara *2 bits #ara a U/( 0se%undo o#erando1" 0imediato1 G (/U7# E ! -anda a U/( subtrair 0( , Imediato1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Caso ocorra e4ceo 0overflow1: 7verflow E !" Caso contrrio: 7verflow E " Estado< 3U'IU Reali;a a subtrao do contedo do re%istrador rs com o contedo de InstructionC!+, D estendido #ara *2 bits 0imediato1 sem sinal e %uarda resultado no re%istrador rt" o 3inais< G E4tend E E4tende o imediato sem sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o contedo de InstructionC!+, D estendido #ara *2 bits #ara a U/( 0se%undo o#erando1" 0imediato1
*7

G (/U7# E ! -anda a U/( subtrair 0( , Imediato1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" 6o ocorre e4ceo #or overflow: visto )ue a o#erao sem sinal" Estado< (6$I Reali;a a o#erao de (6$I entre o contedo do re%istrador rs e o de InstructionC!+, D estendido #ara *2 bits 0imediato1 com sinal e conte do resultado %uarda o no re%istrador rt" 3inais< G E4tend E ! E4tende o imediato com sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o contedo de InstructionC!+, D estendido #ara *2 bits #ara a U/( 0se%undo o#erando1" 0imediato1 G (/U7# E !! -anda a U/( fa;er (6$I 0( (6$I Imediato1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Estado< U7RI Reali;a a o#erao de U7RI entre o contedo do re%istrador rs e o de InstructionC!+, D estendido #ara *2 bits 0imediato1 com sinal e conte do resultado %uarda o no re%istrador rt" 3inais< G E4tend E ! E4tende o imediato com sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o contedo de InstructionC!+, D estendido #ara *2 bits #ara a U/( 0se%undo o#erando1" 0imediato1
*.

G (/U7# E !! -anda a U/( fa;er U7RI 0( U7RI Imediato1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Estado< 678 Reali;a a o#erao de 678 no contedo do re%istrador rs e %uarda o no re%istrador rd 0ne%ao1" resultado 3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U7# E ! ! -anda a U/( fa;er 678 0678 (1" G Brite(/U7ut E ! Escreve no re%istrador U/( ,7ut" Estado< I6C Reali;a a o#erao de I6C no contedo do re%istrador rs e %uarda o no re%istrador rd 0incremento1" resultado 3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U7# E ! -anda a U/( fa;er I6C 0I6C (1" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" Estado< 3/8 =erifica se rs menor )ue rt" Caso seja arma;ene ! em rd" Caso arma;ene contrrio: em rd" 3inais< G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro o#erando1"
*2

G (/U3rc' E Passa o contedo do re%istrador ' #ara a U/( 0se%undo G o#erando1" (/U7# E !!! -anda a U/( fa;er C7-P 0( (6$ Imediato1" G -emtoRe% E ! ! Passa /8 estendido sem sinal #ara Brite$ata do banco de re%istradores" G Re%$st E ! Escol&e rd como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rd" Estado< 3/8I =erifica se rs menor )ue o contedo de InstructionC!+, D estendido bits com sinal" Caso seja arma;ene ! em rt" Caso contr rio: #ara 0imediato1 *2 arma;ene em rt" 3inais< G E4tend E ! E4tende o imediato com sinal" G (/U3rc( E ! Passa o contedo do re%istrador ( #ara a U/( 0#rimeiro G o#erando1" (/U3rc' E ! Passa o contedo de InstructionC!+, D estendido #ara *2 bits #ara a U/( 0se%undo o#erando1" 0imediato1 G (/U7# E !!! -anda a U/( fa;er C7-P 0( (6$ Imediato1" G -emtoRe% E ! ! Passa /8 estendido sem sinal #ara Brite$ata do banco de re%istradores" G Re%$st E Escol&e rt como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rt" Estado< 9 $esvio incondicional" 6o caso de instrues )ue utili;em offset: este deve valor ser multi#licado #or 4: resultado em um endereo de 2. bits" endere o deve #ossuir *2 bits: os 4 bits restantes vm do PC atual: Como todo
4

re#resentando os 4 bits mais si%nificativos do endereo de destino" incondicionalmente #ara este endereo calculado" $esvia 3inais< G PC3ource E ! Passa o deslocamento 0o resultado da com#osio do endereo de bits 2. com os 4 bits mais si%nificativos de PC1 #ara o -u4 cujo controle sinal de ControleE4ceo" G ControleE4cecao E Passa o )ue vem de PC3ource #ara o PC 0deslocamento1 e n o o endereo da subrotina de tratamento da G e4ce PCBrite o" E ! Permite )ue o PC seja atuali;ado com o deslocamento 0salto1" Estado< 9R $esvio incondicional" 6o caso de instrues )ue utili;em offset: este deve valor ser multi#licado #or 4: resultado em um endereo de 2. bits" endere o deve #ossuir *2 bits: os 4 bits restantes vm do PC atual: Como todo re#resentando os 4 bits mais si%nificativos do endereo de destino" 6o instru es )ue utili;am re%istrador: o contedo do re%istrador j o caso de endere #r#rioo de destino" $esvia incondicionalmente #ara o endereo #or rs" a#ontado 3inais< G PC3ource E ! Passa rs #ara o -u4 cujo sinal de controle G ControleE4ce ControleE4cecao o" E Passa o )ue vem de PC3ource #ara o PC 0PC E rs1 e no o subrotina de tratamento da e4ceo" endereo da G PCBrite E ! Permite )ue o PC seja atuali;ado com rs" Estado< 9(/ $esvio incondicional" 6o caso de instrues )ue utili;em offset: este deve valor ser multi#licado #or 4: resultado em um endereo de 2. bits" endere o deve #ossuir *2 bits: os 4 bits restantes vm do PC atual: Como todo re#resentando os 4 bits mais si%nificativos do endereo de destino" incondicionalmente #ara o endereo calculado: #orm salva o endereo $esvia retorno 0PC L 41 no re%istrador ra de 0r*!1" 4!

3inais< G PC3ource E ! Passa PC L 4 #ara o -u4 cujo sinal de controle G ControleE4ce ControleE4cecao o" E Passa o )ue vem de PC3ource #ara o PC 0PC E PC L 41 e n o endereo da subrotina de tratamento da o G e4ce PCBrite o" E ! Permite )ue o PC seja atuali;ado com PC L 4 0PC E PC L 41" Estado< R8E Fa; PC receber o endereo )ue est em no re%istrador EPC" 3inais< G PC3ource E !! Passa a sada de EPC #ara o -u4 cujo sinal de controle ControleE4ceo" G ControleE4cecao E Passa o )ue vem de PC3ource #ara o PC 0PC E EPC1 e no o da subrotina de tratamento da endere o G e4ce PCBrite o" E ! Permite )ue o PC seja atuali;ado com EPC 0PC E EPC1" Estado< 3// Fa; o deslocamento l%ico de s&amt bits #ara a es)uerda do %uarda o resultado em rd" re%istrador rt e 3inais< G In3&ifter E Passa s&amt e rt como entradas do re%istrador de 03&ifter1" deslocamentos G 3&ifter E ! -anda o re%istrador de deslocamentos 03&ifter1 fa;er l %ico #ara a es)uerda" deslocamento

42

Estado< 3//= Fa; o deslocamento l%ico de rt bits #ara a es)uerda do re%istrador o rs resultado e %uarda em rd" 3inais< G In3&ifter E ! Passa rt e rs como entradas do re%istrador de deslocamentos G 03&ifter1" 3&ifter E ! -anda o re%istrador de deslocamentos 03&ifter1 fa;er l %ico #ara a es)uerda" deslocamento Estado< 3R( Fa; o deslocamento aritmtico de s&amt bits #ara a direita do %uarda o resultado em rd" re%istrador rt e 3inais< G In3&ifter E Passa s&amt e rt como entradas do re%istrador de deslocamentos 03&ifter1" G 3&ifter E ! -anda o re%istrador de deslocamentos 03&ifter1 fa;er aritm tico #ara a direita" deslocamento Estado< 3R(= Fa; o deslocamento aritmtico de rt bits #ara a direita do re%istrador %uarda o resultado em rd" rs e 3inais< G In3&ifter E ! Passa rt e rs como entradas do re%istrador de deslocamentos G 03&ifter1" 3&ifter E ! -anda o re%istrador de deslocamentos 03&ifter1 fa;er aritmtico #ara a direita" deslocamento

4*

Estado< 3R/ Fa; o deslocamento l%ico de s&amt bits #ara a direita do re%istrador %uarda o resultado em rd" rt e 3inais< G In3&ifter E Passa s&amt e rt como entradas do re%istrador de deslocamentos 03&ifter1" G 3&ifter E !! -anda o re%istrador de deslocamentos 03&ifter1 fa;er l %ico #ara a direita" deslocamento Estado< $iviso Reali;a a diviso de dois nmeros de *2 bits 0rs #or rt1: com sinal: em um nmero de *2 bits: tambm com sinal" Este resultado resultando internamente: em dois re%istradores #r#rios do divisor 0HI e /71" $ura arma;enado ciclos" *2 3inais< G $ivControl E ! ( o#erao de diviso comea e durar *2 ciclos de cloc?" (o #assarem estes *2 ciclos: vai,se buscar a #r4ima instruo" Estado< -FHI Co#ia a #arte alta do resultado da diviso , o resto 0*2 bits mais si%nificativos1 #ara o re%istrador rd" 3inais< G -emtoRe% E !!! Passa o )ue est em -FHI 0resto1 #ara Brite$ata do banco de re%istradores" G Re%$st E ! Escol&e rd como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rd"
44

Estado< -F/7 Co#ia a #arte bai4a do resultado da diviso , o )uociente 0*2 bits si%nificativos1 #ara o re%istrador rd" menos 3inais< G -emtoRe% E ! Passa o )ue est em -F/7 0)uociente1 #ara Brite$ata do banco re%istradores" de G Re%$st E ! Escol&e rd como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rd" Estado< 7#codeIne4istente 3er lido o b>te menos si%nificativo do endereo 2+4 #ara )ue se endere o da subrotina de tratamento: e4tendendo,o #ara *2 bits e em ten&a o levado ao PC" Esta subrotina arma;enar o valor ! no re%istrador * se%uida #arar e ir a e4ecuo do #ro%rama" 3inais< G Ior$ E ! Passa o endereo 2+4 #ara a memria" G -emBrite E / um endereo da memria" G (/U3rc( E Passa PC #ara a U/( 0#rimeiro o#erando1" G (/U3rc' E ! Passa 4 #ara a U/( 0se%undo o#erando1" G (/U7# E ! -anda a U/( subtrair 0PC , 41" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" G IntCause E $i; )ue a causa da e4ceo foi um o#code ine4istente"

4+

Estado< 7verflow 3er lido o b>te menos si%nificativo do endereo 2++ #ara )ue se endere o da subrotina de tratamento: e4tendendo,o #ara *2 bits e em ten&a o levado ao PC" Esta subrotina arma;enar o valor 2 no re%istrador * se%uida e4ecu e a o do #ro%rama dever continuar" 7 overflow ocorre #ara as instrues 0($$: 3U': ($$I: 3U'I1" se%uintes 3inais< G Ior$ E ! Passa o endereo 2++ #ara a memria" G -emBrite E / um endereo da memria" G (/U3rc( E Passa PC #ara a U/( 0#rimeiro o#erando1" G (/U3rc' E ! Passa 4 #ara a U/( 0se%undo o#erando1" G (/U7# E ! -anda a U/( subtrair 0PC , 41" G Brite(/U7ut E ! Escreve no re%istrador U/(,7ut" G IntCause E ! $i; )ue a causa da e4ceo foi um overflow" Estado< R$Brite Escreve no re%istrador destino rd" 3inais< G -emtoRe% E ! Passa o )ue est em U/(,7ut #ara Brite$ata do banco de re%istradores" G Re%$st E ! Escol&e rd como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rd" Estado< R8Brite Escreve no re%istrador destino rt"
46

3inais< G -emtoRe% E ! Passa o )ue est em U/(,7ut #ara Brite$ata do banco de re%istradores" G Re%$st E Escol&e rt como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rt" Estado< R(Brite Escreve o valor de PC no re%istrador de retorno ra" 3inais< G -emtoRe% E Passa PC #ara Brite$ata do banco de G re%istradores Re%$st E !! Escol&e ra 0r*!1 como re%istrador G destino" Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador 0r*! E PC1" destino ra Estado< Brite3&ift Escreve o resultado do deslocamento no re%istrador destino" 3inais< G -emtoRe% E ! Passa a sada do re%istrador 3&ifter #ara Brite$ata do banco re%istradores" de G Re%$st E ! Escol&e rd como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rd" Estado< /oadBord 7 Re%istrador de $ados da -emria 0-$R1 recebe o resultado da da U/( o#era o0#assando #ela memria1 atravs do re%istrador U/(,7ut 0Ior$ E
47

!!1" Instrues aritmticas A l%icas 0escrevem o contedo de U/(,7ut re%istrador destino1 e 3B 0escreve o contedo de ' na memria1 so no com#letadas" 7 endereo de memria calculado lido e o seu contedo #osto em -$R" Este contedo ser #osteriormente escrito no destino rt" re%istrador 3inais< G Ior$ E !! 7 endereo a ser lido da memria vem de U/(,7ut 0clculo do endereo de memria1" G -emBrite E / um endereo da memria" Estado< Bait/B (%uarda subida do cloc?" Estado< Brite-$R G Brite-$R E ! Escreve o contedo do endereo calculado da memria em -$R" Estado< 3toreBord 7 contedo do re%istrador ' escrito na memria: no endereo de calculado" memria 3B encerrada" 3inais< G Ior$ E !! 7 endereo a ser lido da memria vem de U/(,7ut 0clculo do endereo de memria1" G 3torer E $i; )ue o store de uma word" G -emBrite E ! Escreve na memria o contedo do re%istrador '" Estado< /oad'>te 7 endereo de memria calculado lido e o seu contedo #osto em $este -$R" contedo o b>te menos si%nificativo 0. bits1 ser estendido #ara com a insero de Fs na frente: #ara #osterior escrita o re%istrador *2 bits destino rt" 4.

3inais< G Ior$ E !! 7 endereo a ser lido da memria vem de U/(,7ut 0clculo do endereo de memria1" G -emBrite E / um endereo da memria" Estado< Bait/' (%uarda subida do cloc?" Estado< Brite-$R G Brite-$R E ! Escreve o contedo do endereo calculado da memria em -$R" Estado< /oadHalf 7 endereo de memria calculado lido e o seu contedo #osto em $este -$R" contedo os !6 bits menos si%nificativos sero estendidos #ara com a insero de Fs na frente: #ara #osterior escrita o re%istrador *2 bits destino rt" 3inais< G Ior$ E !! 7 endereo a ser lido da memria vem de U/(,7ut 0clculo do endereo de memria1" G -emBrite E / um endereo da memria" Estado< Bait/H (%uarda subida do cloc?"

Estado< Brite-$R G Brite-$R E ! Escreve o contedo do endereo calculado da memria em -$R"


42

Estado< 3tore'>te 7 endereo de memria calculado lido e o seu contedo #osto em $este contedo os . bits menos si%nificativos sero sobrescritos #elos -$R" menos . bits si%nificativos do re%istrador ' #ara #osterior escrita na memria" 3inais< G Ior$ E !! 7 endereo a ser lido da memria vem de U/(,7ut 0clculo do endereo de memria1" G -emBrite E / um endereo da memria" Estado< Bait3' (%uarda subida do cloc?" Estado< Brite-$R G Brite-$R E ! Escreve o contedo do endereo calculado da memria em -$R" Estado< 3toreHalf 7 endereo de memria calculado lido e o seu contedo #osto em $este -$R" contedo os !6 bits menos si%nificativos sero sobrescritos bits si%nificativos do re%istrador ' #ara #osterior escrita na #elosmenos !6 memria" 3inais< G Ior$ E !! 7 endereo a ser lido da memria vem de U/(,7ut 0clculo do endereo de memria1" G -emBrite E / um endereo da memria" Estado< Bait3H (%uarda subida do cloc?"

Estado< Brite-$R G Brite-$R E ! Escreve o contedo do endereo calculado da memria em -$R" Estado< /BBrite Escreve o contedo de -$R no re%istrador destino rt" 3inais< G -emtoRe% E ! Passa a sada do re%istrador -$R #ara Brite$ata do banco de re%istradores" G Re%$st E Escol&e rt como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rt" Estado< /'Brite Escreve a sada de Com#or 0. bits menos si%nificativos de -$R #ara *2 bits com Fs na frente1 no re%istrador estendido destino rt" 3inais< G Com#or E Com#e os . bits menos si%nificativos de -$R com ;eros na e4tendendo,o #ara *2 bits" frente: G -emtoRe% E !! Passa a sada de Com#or #ara Brite$ata do banco de G re%istradores" Re%$st E Escol&e rt como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rt" Estado< /HBrite Escreve a sada de Com#or 0!6 bits menos si%nificativos de -$R #ara *2 bits com Fs na frente1 no re%istrador estendido destino rt"
+!

3inais< G Com#or E ! Com#e os !6 bits menos si%nificativos de -$R com ;eros na e4tendendo,o #ara *2 bits" frente: G -emtoRe% E !! Passa a sada de Com#or #ara Brite$ata do banco de G re%istradores" Re%$st E Escol&e rt como re%istrador destino" G Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rt" Estado< 3'Brite Escreve a sada de Com#or 0. bits menos si%nificativos de -$R #elos . bits menos si%nificativos do re%istrador '1 na sobrescrito memria" 3inais< G Com#or E ! 3obrescreve os . bits menos si%nificativos de -$R com os . bits menos si%nificativos do re%istrador '" G 3torer E ! $i; )ue o store do )ue sair de G Com#or" -emBrite E ! Escreve na memria o )ue sai de Com#or" Estado< 3HBrite Escreve a sada de Com#or 0!6 bits menos si%nificativos de -$R #elos !6 bits menos si%nificativos do re%istrador '1 na sobrescrito memria" 3inais< G Com#or E !! 3obrescreve os !6 bits menos si%nificativos de -$R com os !6 menos si%nificativos do re%istrador '" bits G 3torer E ! $i; )ue o store do )ue sair de G Com#or" -emBrite E ! Escreve na memria o )ue sai de Com#or"

+2

Estado< BriteEPC Escreve PC em EPC 0salva a instruo na )ual ocorreu e4ceo1" causa no are%istrador de causa" 7#code ine4istente 0 1 ou Escreve overflow 0!1" 3inais< G EPCBrite E ! Permite )ue PC seja escrito em EPC" G CauseBrite E ! Escreve a causa 0o )ue sai do -u4 cujo sinal de controle re%istrador IntCause1 noCauseBrite" Estado< 8ratamentoE4ceo Escreve o b>te menos si%nificativo do endereo 2+4 0o#code 2++ 0overflow1: ine4istente1 ou estendido #ara *2 bits: no PC" 3inais< G Brite-$R E ! Escreve o contedo do endereo calculado da memria em G -$R" Com#or E Com#e os . bits menos si%nificativos de -$R com ;eros na e4tendendo,o #ara *2 bits" frente: G ControleE4ceo E ! Passa o endereo da subrotina de tratamento da e4ceo G #ara PCBrite PC" E ! Permite a escrita do endereo da subrotina de tratamento da PC" e4ceo no Estado< Reset Iuando o reset ativado o re%istrador 22 0s#1 dever a#ontar #ara o onde come endere o a a #il&a 02271" 3inais< G -emtoRe% E !! Passa 227 #ara Brite$ata do banco de G re%istradores" Re%$st E ! Escol&e s# 0r221 como re%istrador G destino" Re%Brite E ! Permite )ue o )ue est em Brite$ata v #ara o re%istrador destino rt" +*

+" $escrio das Instrues e Ciclos


7bs< 8odas as instrues tem o ciclo de decodificao" 6este ciclo: ocorrer e4ceo #or o#code ine4istente" 6este caso: os se%uintes #ode se%uidos< estados sero G Estado +< 7#codeIne4istente 0$ura ! ciclo de G Estado 6< BriteEPC 0$ura ! ciclo de cloc?1 G Estado 7< 8ratamentoE4ceo 0$ura 2 ciclos de cloc?1 cloc?1 Instruo< ($$ G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< ($$ 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R$Brite 0$ura ! ciclo de cloc?1 6esta instruo: #ode ocorrer e4ceo #or overflow" (ssim: os estados se%uintessero se%uidos< G Estado 7< 7verflow 0$ura ! ciclo de G Estado .< BriteEPC 0$ura ! ciclo de cloc?1 G Estado 2< 8ratamentoE4ceo 0$ura 2 ciclos de cloc?1 cloc?1 Instruo< ($$I G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< ($$I 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R8Brite 0$ura ! ciclo de cloc?1 6esta instruo: #ode ocorrer e4ceo #or overflow" (ssim: os estados se%uintessero se%uidos< G Estado 7< 7verflow 0$ura ! ciclo de G Estado .< BriteEPC 0$ura ! ciclo de cloc?1 G Estado 2< 8ratamentoE4ceo 0$ura 2 ciclos de cloc?1 cloc?1
+4

Instruo< ($$IU G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< ($$IU 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R8Brite 0$ura ! ciclo de cloc?1 6esta instruo: no #ode ocorrer e4ceo #or overflow: visto )ue a sem sinal" o#era o Instruo< 3U' G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< 3U' 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R$Brite 0$ura ! ciclo de cloc?1 6esta instruo: #ode ocorrer e4ceo #or overflow" (ssim: os estados se%uintessero se%uidos< G Estado 7< 7verflow 0$ura ! ciclo de G Estado .< BriteEPC 0$ura ! ciclo de cloc?1 G Estado 2< 8ratamentoE4ceo 0$ura 2 ciclos de cloc?1 cloc?1 Instruo< 3U'I G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< 3U'I 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R8Brite 0$ura ! ciclo de cloc?1 6esta instruo: #ode ocorrer e4ceo #or overflow" (ssim: os estados se%uintessero se%uidos< G Estado 7< 7verflow 0$ura ! ciclo de G Estado .< BriteEPC 0$ura ! ciclo de cloc?1 cloc?1

++

G Estado 2< 8ratamentoE4ceo 0$ura 2 ciclos de cloc?1 Instruo< 3U'IU G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< 3U'IU 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R8Brite 0$ura ! ciclo de cloc?1 6esta instruo: no #ode ocorrer e4ceo #or overflow: visto )ue a sem sinal" o#era o Instruo< (6$ G Estado !< G Estado 2< G Estado *< G Estado 4< cloc?1 G Estado +< cloc?1 G Estado 6< cloc?1 Instruo< (6$I G Estado !< G Estado 2< G Estado *< G Estado 4< cloc?1 G Estado +< cloc?1 G Estado 6< cloc?1 Instruo< U7R G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< 6< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de (6$ 0$ura ! ciclo de cloc?1 R$Brite 0$ura ! ciclo de

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de (6$I 0$ura ! ciclo de cloc?1 R8Brite 0$ura ! ciclo de

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de U7R 0$ura ! ciclo de cloc?1 R$Brite 0$ura ! ciclo de

+6

Instruo< U7RI G Estado !< G Estado 2< G Estado *< G Estado 4< cloc?1 G Estado +< cloc?1 G Estado 6< cloc?1 Instruo< 678 G Estado !< G Estado 2< G Estado *< G Estado 4< cloc?1 G Estado +< cloc?1 G Estado 6< cloc?1 Instruo< I6C Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de U7RI 0$ura ! ciclo de cloc?1 R8Brite 0$ura ! ciclo de

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 678 0$ura ! ciclo de cloc?1 R$Brite 0$ura ! ciclo de

G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< I6C 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R$Brite 0$ura ! ciclo de cloc?1 Instruo< 'RE(X G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 'RE(X 0$ura ! ciclo de cloc?1

Instruo< 3// G Estado G Estado G Estado G Estado cloc?1 cloc?1 !< 2< *< 4< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de
+7

G Estado +< 3// 0$ura ! ciclo de cloc?1 G Estado 6< R$Brite 0$ura ! ciclo de cloc?1 Instruo< 3//= G Estado !< G Estado 2< G Estado *< G Estado 4< cloc?1 G Estado +< cloc?1 G Estado 6< cloc?1 Instruo< 3R( Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 3//= 0$ura ! ciclo de cloc?1 R$Brite 0$ura ! ciclo de

G Estado !< Incio 0$ura ! ciclo de cloc?1 G Estado 2< BaitIR 0$ura ! ciclo de cloc?1 G Estado *< BriteIR 0$ura 2 ciclos de G Estado 4< $ecodifica 0$ura ! ciclo de cloc?1 G Estado +< 3R( 0$ura ! ciclo de cloc?1 cloc?1 G Estado 6< R$Brite 0$ura ! ciclo de cloc?1 Instruo< 3R(= G Estado !< G Estado 2< G Estado *< G Estado 4< cloc?1 G Estado +< cloc?1 G Estado 6< cloc?1 Instruo< 3R/ G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< 6< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 3R(= 0$ura ! ciclo de cloc?1 R$Brite 0$ura ! ciclo de

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 3R/ 0$ura ! ciclo de cloc?1 R$Brite 0$ura ! ciclo de

+.

Instruo< R8E G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 Instruo< 9 G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 Instruo< 9R G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 9R 0$ura ! ciclo de cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 9 0$ura ! ciclo de cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de R8E 0$ura ! ciclo de cloc?1

Instruo< 9(/ G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 Instruo< /UI G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de /UI 0$ura ! ciclo de cloc?1 !< 2< *< 4< +< 6< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de R(Brite 0$ura ! ciclo de 9(/ 0$ura ! ciclo de cloc?1

+2

Instruo< -FHI G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de -FHI 0$ura ! ciclo de cloc?1

Instruo< -F/7 G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de -F/7 0$ura ! ciclo de cloc?1

Instruo< 3/8 G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 3/8 0$ura ! ciclo de cloc?1

Instruo< 3/8I G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 3/8I 0$ura ! ciclo de cloc?1

Instruo< 'R(6CH 0'EI: '6E1 G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de 'R(6CH 0$ura 2 ciclos de cloc?1

Instruo< $I= G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 Instruo< /B G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 G Estado G Estado G Estado cloc?1 Instruo< /' G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 G Estado G Estado G Estado cloc?1 Instruo< /H G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 G Estado !< 2< *< 4< +< 6< 7< .< 2< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de Clculo Endereo da -emria 0$ura ! ciclo de /B 0$ura ! ciclo de cloc?1 Bait/B 0$ura ! ciclo de cloc?1 Brite-$R 0$ura ! ciclo de cloc?1 /BBrite 0$ura ! ciclo de !< 2< *< 4< +< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de $iviso 0$ura ! ciclo de cloc?1

!< 2< *< 4< +< 6< 7< .< 2<

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de Clculo Endereo da -emria 0$ura ! ciclo de /' 0$ura ! ciclo de cloc?1 Bait/' 0$ura ! ciclo de cloc?1 Brite-$R 0$ura ! ciclo de cloc?1 /'Brite 0$ura ! ciclo de

!< 2< *< 4< +< 6< 7<

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de Clculo Endereo da -emria 0$ura ! ciclo de /H 0$ura ! ciclo de cloc?1 Bait/H 0$ura ! ciclo de cloc?1
6!

G Estado .< Brite-$R 0$ura ! ciclo de cloc?1 G Estado 2< /HBrite 0$ura ! ciclo de cloc?1 Instruo< 3B G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 Instruo< 3' G Estado G Estado G Estado G Estado cloc?1 G Estado cloc?1 G Estado cloc?1 G Estado G Estado cloc?1 G Estado cloc?1 Instruo< 3H !< 2< *< 4< +< 6< 7< .< 2< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de Clculo Endereo da -emria 0$ura ! ciclo de 3' 0$ura ! ciclo de cloc?1 Bait3' 0$ura ! ciclo de Brite-$R 0$ura ! ciclo de cloc?1 3'Brite 0$ura ! ciclo de !< 2< *< 4< +< 6< Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de Clculo Endereo da -emria 0$ura ! ciclo de 3B 0$ura ! ciclo de cloc?1

G Estado !< G Estado 2< G Estado *< G Estado 4< cloc?1 G Estado +< cloc?1 G Estado 6< cloc?1 G Estado 7< G Estado .< G Estado 2< cloc?1 Instruo< 67P G Estado G Estado G Estado G Estado cloc?1 cloc?1 !< 2< *< 4<

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de Clculo Endereo da -emria 0$ura ! ciclo de 3H 0$ura ! ciclo de cloc?1 Bait3H 0$ura ! ciclo de cloc?1 Brite-$R 0$ura ! ciclo de cloc?1 3HBrite 0$ura ! ciclo de

Incio 0$ura ! ciclo de cloc?1 BaitIR 0$ura ! ciclo de cloc?1 BriteIR 0$ura 2 ciclos de $ecodifica 0$ura ! ciclo de
62

6" Conjunto de 3imulaes


Entidade< Com#or G $escrio das #ortas< G Entradas< re%istrador-$R< =alor do re%istrador -$R" re%istrador'< =alor do re%istrador '" com#or< 3inal )ue indicar )ual o ti#o de com#osio a ser reali;ada" G 3adas< saidaCom#or< =etor de sada"

G $escrio da 3imulao< Iuando o sinal com#or : ento deve,se fa;er a com#osio dos . menos si%nificativos do re%istrador -$R com ;eros" Esta com#osi o bits usado ser na instruo /' 0/oad'>te1" Iuando o sinal de com#or !: fa;er a com#osio dos !6 bits menos si%nificativos do re%istrador deve,se ;eros" Esta com#osio ser usada na instruo /H 0/oadHalf1" Iuando -$R com sinal com#or 2: ento deve,se fa;er a com#osio dos . bits menos o si%nificativos do re%istrador ' com os 24 bits mais si%nificativos do re%istrador -$R" Esta com#osio ser usada na instruo 3' Iuando o sinal com#or *: ento devemos fa;er a com#osio dos !6 03tore'>te1" menos si%nificativos do re%istrador ' com os !6 bits mais bits re%istrador -$R" si%nificativos do Esta com#osio ser usada na instruo 3H 03toreHalf1"
6*

Entidade< $ivisao G $escrio das #ortas< G Entradas< Re%(< =alor do re%istrador (" Re%'< =alor do re%istrador '" Control< 3inal )ue indicar )uando e4ecutar o al%oritmo" Reset< /im#a os re%istradores internos" G 3adas< /ow< Iuociente da diviso" Hi%&< Resto da diviso"

$iviso de nmero ne%ativo #or nmero ne%ativo G $escrio da 3imulao< Iuando o sinal Control : nada e4ecutado nesta entidade" -as sinal Control !: o al%oritmo da diviso e4ecutado: dividindo o valor )uando o re%istrador ( #elo re%istrador '" 7 )uociente da diviso fica do /ow e o resto arma;enado em da diviso fica arma;enado em Hi%&" 6ota,se #ela )ue todo simula o: al%oritmo da diviso e4ecutado em um ciclo de Cloc?" Esta #rimeira simulao: mostra a diviso de um nmero ne%ativo #or outro ne%ativo" (s #r4imas simulaes mostraro a diviso de um nmero #or um nmero ne%ativo: diviso de nmero ne%ativo #or nmero #ositivo divis o de nmero #ositivo #or nmero #ositivo e a ltima: mostrar os #ositivo: efeitos da ativao do sinal Reset"

64

$iviso de nmero #ositivo #or nmero ne%ativo

$iviso de nmero ne%ativo #or nmero #ositivo

$iviso de nmero #ositivo #or nmero #ositivo


6+

3inal Reset ativado Iuando o sinal Reset ativado: automaticamente: os valores de /ow e Hi%& se tornam ;ero e #ermanecem assim at )ue o sinal Reset volte a ser : inde#endente do valor de Control" Entidade< /UI G $escrio das #ortas< G Entradas< imediato< =alor de entrada" =alor do imediato da instru o" G 3adas< saida/UI< =alor de sada"

G $escrio da 3imulao< /UI assncrono: ou seja: no tem de#endncia com nen&um sinal de controle" ( entrada de !6 bits estendida #ara *2 bits e deslocada #ara es)uerda" Pela simulao #ode,se ver o funcionamento do /UI !6 ve;es claramente"
66

Entidade< -u42Causa G $escrio das #ortas< G Entradas< IntCause< 3inal do -u4" G 3adas< saidaParaCausa< 3inal de *2 bits )ue indica o ti#o de e4ce o 0 !1" ou

3imulao do -u42Causa Entidade< -u42-emoria G $escrio das #ortas< G Entradas< re%istrador'< =alor do re%istrador '" saidaCom#or< =alor de sada do Com#or" storer< 3inal de Controle do -u4" G 3adas< saidaParaCausa< 3inal de *2 bits indicando o ti#o de e4ce o 0 ou !1"

3imulao do -u42-emoria
67

Entidade< -u42PC G $escrio das #ortas< G Entradas< mu4PC3ource< =alor de entrada" com#or< =alor de entrada vindo de Com#or" controleE4cecao< 3inal de Controle do -u4" G 3adas< saidaParaPC< =alor de sada de *2 bits "

3imulao do -u42PC Entidade< -u423&ifter$eslocamento G $escrio das #ortas< G Entradas< s&amt< =alor de s&amt da instruo" #arteRe%'< =alor dos + bits menos si%nificativos do re%istrador '" in3&ifter< 3inal de Controle do -u4" G 3adas< saidaPara3&ifter< =alor de sada de + bits )ue definir a ve;es )ue o s&ift ser e4ecutado" )uantidade de

3imulao -u423&ifter$eslocamento
6.

Entidade< -u423&ifterRe%istrador G $escrio das #ortas< G Entradas< re%istrador(< =alor do re%istrador (" re%istrador'< =alor do re%istrador '" in3&ifter< 3inal de Controle do -u4" G 3adas< saidaPara3&ifter< =alor de sada"

3imulao -u423&ifterRe%istrador Entidade< -u42U/( G $escrio das #ortas< G Entradas< PC< =alor do re%istrador PC" re%istrador(< =alor do re%istrador (" (/U3rc(< 3inal de controle do -u4" G 3adas< saidaParaU/(< =alor do #rimeiro o#erando da U/("

3imulao -u42U/(
62

Entidade< -u44'ancoRe%istradores G $escrio das #ortas< G Entradas< rt< =alor do rt 0bits de 2 a !6 da instruo1" rd< =alor do rd0bits de !+ a !! da instruo1" Re%$st< 3inal de controle do -u4" G 3adas< saidaPara'ancoRe%istradores< 6mero do re%istrador )ue ser escrito"

3imulao -u44'ancoRe%istradores Entidade< -u44-emoria G $escrio das #ortas< G Entradas< PC< =alor do re%istrador PC" (/U7ut< =alor do re%istrador U/(,7ut" Ior$< 3inal de controle do -u4" G 3adas< saidaPara-emoria< =alor do endereo a ser lido da memria"

3imulao -u44-emoria
7

Entidade< -u44U/( G $escrio das #ortas< G Entradas< re%istrador'< =alor do re%istrador '" sinalEstendido< =alor do imediato com *2 bits" sinalEstendido=e;esIuatro< =alor do imediato com *2 bits multi#licado #or 4" (/U3rc'< 3inal de controle do -u4" G 3adas< saidaParaU/(< =alor do se%undo o#erando da U/("

3imulao -u44U/( Entidade< -u4+PC G $escrio das #ortas< G Entradas< saidaU/(< =alor da sada da U/(" branc&< =alor do branc&" jum#< =alor do desvio incondicional jum#" EPC< =alor do re%istrador EPC" rs< =alor do re%istrador de endereo rs do 'anco de PC3ource< 3inal de controle do -u4" re%istradores" G 3adas< saidaParaPC< 6ovo valor #ara o re%istrador PC"

3imulao -u4+PC
7!

Entidade< 67P G $escrio das #ortas< G Entradas< 7#code< =alor do o#code da instruo" 3&amtFunct< =alor de s&amt e de funct da instruo" G 3adas< 6o#7ut< 3inal indicando se a instruo atual um 67P ou no"

3imulao 67P

Entidade< -u4! 'ancoRe%istradores G $escrio das #ortas< G Entradas< PC< =alor do re%istrador PC" (/U7ut< =alor do re%istrador U/(,7ut" -$R< =alor do re%istrador -$R" 3&ifter< =alor da sada do Re%istrador de $eslocamento" /UI< =alor de sada do /UI" Com#or< =alor de sada do Com#or" HI< =alor do re%istrador Hi%& 0resto da diviso1" /7< =alor do re%istrador /ow 0)uociente da diviso1" /8Estendido< =alor da fla% /8 da U/( estendida #ara *2 bits" -emtoRe%< 3inal de controle do mu4" G 3adas< saidaPara'ancoRe%istradores< =alor a ser escrito em um do 'anco de Re%istradores" re%istrador
72

3imulao -u4! 'ancoRe%istradores

Entidade< 3&ift/eft25! G $escrio das #ortas< G Entradas< imediatoEstendido< =alor do imediato da instruo estendido #ra *2 bits" G 3adas< mu4(/U3rc'< =alor de sada"

3imulao 3&ift/eft25!
7*

Entidade< 3&ift/eft252 G $escrio das #ortas< G Entradas< offset< =alor do imediato da instruo estendido #ra *2 bits" G 3adas< endereco3aida< =alor de sada"

3imulao 3&ift/eft252 Entidade< 3i%nE4tend! G $escrio das #ortas< G Entradas< endereco< =alor do imediato da instruo estendido #ra *2 bits" E4tend< 3inal de controle indicando se vai estender com sinal ou n o" G 3adas< endereco3aida< =alor de sada"

3imulao 3i%nE4tend! com #ositivos


74

Você também pode gostar