Sie sind auf Seite 1von 12

Organizao de Computadores II (DCC006) ca Arquitetura de Computadores (DCC819) Trabalho Prtico - MIPS Pipeline a Parte 1 - Entrega E

Omar Parana 1 , Allan Jones1 , Diogo Renn1 ba o


{omar, allan, renno}@dcc.ufmg.br

Departamento de Cincia da Computao e ca Universidade Federal de Minas Gerais (UFMG)

Unidade de Decodicao de Instrues ca co Unidade de Repasse Unidade de Execuo ca

1. Cronograma Entrega at o dia 18 de outubro de 2011. e

2. Unidade de Decodicao de Instrues (Decode) ca co No estgio de decodicao, so recuperados os valores dos registradores utilizaa ca a dos, gerados os sinais de controle e calculados os desvios para instruoes do tipo branch c e jump. As informaoes de desvio so devolvidos ao estgio de busca. O resultado da c a a decodicao repassado para a etapa de execuo. Dentro do Decode, so instanciados ca e ca a os mdulos de comparao (Comp) e de controle (Controle). Tambm so necessrios o ca e a a multiplexadores para os sinais selfontepc e id ex regdest. O mdulo de decodicao dever conter as seguintes estruturas: o ca a Unidade de controle (mdulo Controle): recebe os campos op, rt e fn da inso truo e gera os sinais de controle para todo o caminho de dados do processador, ca inclusive para utilizao no prprio estgio de decodicao. ca o a ca Unidade de comparao (mdulo Comp): testa as condioes para instruoes de ca o c c desvio, permitindo saber neste estgio se a prxima instruo (em Fetch) ser a o ca a ou no descartada. Os valores utilizados na comparao so obtidos no banco a ca a de registradores. A sa da unidade de comparao (j implementada) apenas da ca a e um bit, indicando se haver ou no um desvio. a a

Somador para clculo do endereo de desvio em instruoes branch: calcula o a c c endereo de destino relativo ao valor do registrador PC da instruo seguinte ` c ca a do desvio. Recebe como entrada o valor if id proximopc e o campo imediato deslocado dois bits ` esquerda com extenso de sinal. a a Multiplexador para fonte do PC: ser necessrio um multiplexador para selecionar a a a fonte do prximo valor do PC devolvido a Fetch, selecionando entre 0 (no o a e instruo de desvio), 1 (instruo jump) ou o resultado da unidade de comparao ca ca ca no caso de branch. Banco de registradores: nesta etapa ocorrem as leituras no barramento A e B do banco de registradores. O endereos utilizados para leitura so respectivamente c a os valores dos campos rs e rt. Os valores recuperados e os endereos dos c registradores so repassados a unidade de Forwarding, que realizar o tratamento a a de conitos de dados entre as instrues no pipeline. co Os poss veis endereos de destino para os desvios so enviados ao ciclo de busca, c a juntamente com os sinais de controle necessrios para multiplexao destes sinais. Exite a ca tambm a possibilidade de ocorrer um stall no ciclo de decodicao em decorrncia de e ca e dependncias de dados geradas por instruoes do tipo load. Neste caso deve ser inserido e c uma bolha no pipeline, gravando 0s nos registradores de sa da.
i n c l u d e Comp . v i n c l u d e Controle . v module Decode ( input input input // F e t c h input input output reg output output reg output reg output reg // E x c e c u t e output reg output reg output reg output reg output reg output reg output reg output output reg output reg output reg output reg output reg output reg output output reg output reg output reg output reg clock , reset , fw if id stall ,

[31:0] if [31:0] if id [31:0] id [31:0] id [31:0] id [1:0] id

id id if if if if if

instrucao , proximopc , selfontepc , rega , pcimd2ext , pcindex , seltipopc ,

[2:0] [1:0] [4:0] [31:0] [2:0] [2:0]

[31:0] [31:0] [31:0] [2:0] [4:0]

id id id id id id id id id id id id id id id id id id id

ex selalushift , ex selimregb , ex selsarega , ex aluop , ex unsig , ex shiftop , ex shiftamt , ex rega , ex msm , ex msl , ex readmem , ex writemem , ex mshw , ex lshw , ex regb , ex imedext , ex proximopc , ex selwsource , ex regdest ,

output reg output reg // F o r w a r d i n g output [4:0] output output [4:0] output [4:0] output [31:0] output [31:0] input [31:0] input [31:0] // R e g i s t r a d o r e s output [4:0] output [4:0] input [31:0] input [31:0] output output ); //... //Comp // C o n t r o l e endmodule

id ex writereg , id ex writeov ,

id id id id id id fw fw

fw fw fw fw fw fw id id

regdest , load , addra , addrb , rega , regb , rega , regb ,

id reg id reg reg id reg id id reg id reg

addra addrb dataa datab ena , enb

, , , ,

COMP( . . . ) ; CONTROLE( . . .

);

Tabela 1. Descrio dos sinais do Decode ca

Sinal clock reset

E/S E E

Tamanho 1 bit 1 bit

fw if id stall

1 bit

if id instrucao if id proximopc

E E

32 bits 32 bits

id if selfontepc

1 bit

id if rega

32 bits

Descrio ca Utilizado para sincronizao entre os mdulos. ca o Esta operao deve ser acionada na transio de ca ca 0 para 1 deste sinal. Os sinais propagados ao estgio de execuo devem receber o valor 0. a ca Sinal de stall vindo da unidade de Forwarding para resoluo de dependncia de dados em instrues ca e co seguintes a de load. Se ativo (n lgico 1) deve vel o ser atribu o valor 0 aos sinais propagados para o do estgio de execuo, assim como ocorre em reset. a ca Instruo para decodicao. ca ca Este valor poder ser utilizado em instrues que a co registram o prximo PC como ponto de retorno. o Portanto, poder ser repassado at o estgio de a e a escrita em registradores. Seletor de fonte do PC repassado ao mdulo o Fetch. O valor atribu vem de um multipledo xador selecionado por selbrjumpz da unidade de controle. 00: 1b0; // instruo com uxo normal ca 01: 1b1; // instruo tipo jump (desvio semca pre tomado) 10: compout; // instruo tipo branch (desvio ca depende do comparador) 11: 1b0; // default: desvio no tomado a Valor do registrador A (campo rs) recuperado. Ser utilizado em Fecth para desvio em instrues a co JR e JALR.

Continua na pgina seguinte. a

Continuando pgina anterior. a


id if pcimd2ext S 32 bits Valor composto pelo PC + Imediato << 2 c/ sinal extendido. Utilizado como endereo de c instruo em branches. ca Valor composto pelo PC[31:28], 26 bits (index) << 2. Utilizado nas instrues J e co JAL. Recebe o valor de seltipopc vindo da unidade de controle. Recebe o valor de selalushift vindo da unidade de controle. Recebe o valor de selimregb vindo da unidade de controle. Seleciona entre um valor do campo imediato e um lido no registrador B. Recebe o valor de selsarega vindo da unidade de controle. Recebe o valor de aluop vindo da unidade de controle. Recebe o valor de unsig vindo da unidade de controle. Recebe o valor de shiftop vindo da unidade de controle. Recebe o valor do campo sa da instruo. ca Valor do registrador A repassado ao estgio de a execuo aps tratamento de conito de dados. ca o Em Execute deve ser utilizado o valor vindo da lgica de repasse (mdulo Forwarding ). Recebe o o o valor de fw id rega. Recebe o valor de msm vindo da unidade de controle. Recebe o valor de msl vindo da unidade de controle. Recebe o valor de readmem vindo da unidade de controle. Recebe o valor de writemem vindo da unidade de controle. Recebe o valor de mshw vindo da unidade de controle. Recebe o valor de lshw vindo da unidade de controle. Valor do registrador B repassado ao estgio de a execuo aps tratamento de conito de dados. ca o Em Execute deve ser utilizado o valor vindo da lgica de repasse (mdulo Forwarding ). Recebe o o o valor de fw id regbc. Recebe o valor do campo de imediato com mais 16 bits (mais signicativos) de extenso de sinal. a Valor de if id proximopc repassado ao mdulo Execute (a ser implementado). o Seleciona a fonte de dados para o estgio Write a Back realizar a escrita. Este sinal ser utilizado a nos estgios Execute e Memory. Recebe o vaa lor do sinal selwsource vindo da unidade de controle.

id if pcindex

32 bits

id if seltipopc id ex selalushift id ex selimregb

S S S

2 bits 1 bit 1 bit

id ex selsarega id ex aluop id ex unsig id ex shiftop id ex shiftamt id ex rega

S S S S S S

1 bit 3 bits 1 bit 2 bits 5 bits 32 bits

id ex msm id ex msl id ex readmem id ex writemem id ex mshw id ex lshw id ex regb

S S S S S S S

3 bits 3 bits 1 bit 1 bit 1 bit 1 bit 32 bits

id ex imedext id ex proximopc id ex selwsource

S S S

32 bits 32 bits 3 bits

Continua na pgina seguinte. a

Continuando pgina anterior. a


id ex regdest S 5 bits Endereo do registrador de destino para instrues c co que realizam escrita em registradores. As opes co so os campos rt, rd, e o registrador 31. Este a ultimo utilizado em instrues de desvio que re e co gistram o endereo de retorno. Este valor mulc e tiplexado pelo sinal selregdest vindo da unidade de controle. 00: if id instrucao[20:16]; // Campo rt 01: if id instrucao[15:11]; // Campo rd 10: 5d31; // Endereo de retorno c 11: 5dx; // Caso no previsto (utilizando a dont care para propagao do erro em simulao) ca ca Indica se a instruo grava em um registrador de ca destino. Recebe valor do sinal writereg vindo da unidade de controle. Indica se a instruo grava o resultado em caso de ca overow. Recebe valor do sinal writeov vindo da unidade de controle. Recebe o mesmo valor atribu do a id ex regdest. Valor utilizado na lgica de repasse de dados do o pipeline para deteco de conitos em instrues ca co tipo load. Recebe o valor readmem. Endereo de registrador lido no barramento A. Enc viado ao mdulo de repasse para deteco de cono ca ito de dados. Recebe o valor do campo rs. Endereo de registrador lido no barramento B. Enc viado ao mdulo de repasse para deteco de cono ca ito de dados. Recebe o valor do campo rt. Valor do registrador lido no barramento A. Enviado ao mdulo de repasse para que o mesmo o manipule os valores na resoluo de conitos de ca dados. Recebe o valor de reg id dataa. Valor do registrador lido no barramento B. Enviado ao mdulo de repasse para que o mesmo o manipule os valores na resoluo de conitos de ca dados. Recebe o valor de reg id datab. Valor de registrador A recebido do mdulo de reo passe aps tratamento de conito de dados. Este o valor ser enviado ao estgio de execuo. a a ca Valor de registrador B recebido do mdulo de reo passe aps tratamento de conito de dados. Este o valor ser enviado ao estgio de execuo. a a ca Endereo do registrador A enviado ao banco de c registradores para leitura durante o ciclo de decodicao. Recebe o valor do campo rs. ca

id ex writereg

1 bit

id ex writeov

1 bit

id fw regdest id fw load

S S

5 bits 1 bit

id fw addra

5 bits

id fw addrb

5 bits

id fw rega

32 bits

id fw regb

32 bits

fw id rega

32 bits

fw id regb

32 bits

id reg addra

5 bits

Continua na pgina seguinte. a

Continuando pgina anterior. a


id reg addrb S 5 bits Endereo do registrador B enviado ao banco de c registradores para leitura durante o ciclo de decodicao. Recebe o valor do campo rt ou ca o endereo do registrador 0 para instrues do c co tipo branch. Devero ser vericadas as instrues a co BLTZ, BGEZ, BLTZAL, BGEZAL, BLEZ e BGTZ como condies para o uso do registrador 0. co Valor do registrador lido em A. Valor do registrador lido em B. Sinal que habilita a leitura em A. Sinal que habilita a leitura em B.

reg id reg id id reg id reg

dataa datab ena enb

E E S S

32 bits 32 bits 1 bit 1 bit

3. Unidade de repasse (Forwarding) A organizao dos estgios de processamento em pipeline possibilita uma meca a lhora no desempenho devido ao paralelismo em que as instrues so processadas. No co a entanto, essa organizao introduz conitos, classicados como estruturais, de controle ca e de dados, que devem ser tratados. Nesta implementao, os conitos estruturais so ca a resolvidos pela adio dos sinais de stall vindos da lgica de repasse (este mdulo) e do ca o o estgio de memria. Os conitos de dados so tratados identicando dependncias de a o a e registradores entre instrues que vo para o estgio de execuo e instruoes que no co a a ca c a sero gravadas a tempo de serem recuperadas no estgio de decodicao. a a ca Armazenando o endereo dos registradores de destino das instruoes que esto c c a no pipeline poss identicar se existe conito de dados e em qual estgio est o e vel a a valor da dependncia. Dever ser implementado uma la de quatro posies tal que, e a co sempre que uma instruo passa pelo estgio de decodicao, o endereo de destino ca a ca c e enleirado. A cada ciclo, um novo endereo entra na la e o mais antigo eliminado. Os c e valores das trs ultimas posioes correspondem aos registradores de destino das instruoes e c c nos estgios de execuo, memria e escrita, nesta ordem. A la incrementada sempre a ca o e na borda de subida do clock. Os valores destas trs ultimas posioes so multiplexados e c a utilizando-se os endereos-fonte A e B do estgio de decodicao como critrio de c a ca e seleo. Se existe mais de uma dependncia para o mesmo valor lido, o valor do estgio ca e a mais prximo tem prioridade de atribuio feita no multiplexador. A atribuio tambm o ca ca e ca condicionada ao ag de escrita do estgio. Se houver dependncia de um registrador a e que no ser escrito, o repasse deste valor ser desconsiderado e ser atribu o valor a a a a do lido no banco de registradores. No caso de no haver dependncia de dados, o valor a e atribu tambm ser o dos registradores. do e a Para que esta unidade funcione, ela precisa ter acesso aos dados dos registradores lidos para o endereo vericado e aos dados correntes das instrues nos demais estgios. c co a Utilizando este mdulo, quase todos os stalls so resolvidos. A unica dependncia de o a e dados que no pode ser completamente tratada sem insero de bolha a de instruo a ca e ca dependente de valor de load. Quando esta dependncia ocorre, o forwarding no e a e realizado para a instruo decodicada e uma bolha adicionada no estgio de execuo. ca e a ca Os registradores encaminhados pelos estgios de busca e decodicao no so alterados, a ca a a fazendo com que as instrues permaneam nestes estgios durante o stall. co c a

A tabela 2 descreve os sinais para lgica de forwarding. o


module F o r w a r d i n g ( input input // F e t c h output // Decode input input input input input input output reg output reg clock , reset ,

fw if id stall ,

[4:0] [4:0] [4:0] [31:0] [31:0] [31:0] [31:0]

id id id id id id fw fw

fw fw fw fw fw fw id id

regdest , load , addra , addrb , rega , regb , rega , regb ,

// E x e c u t e input [ 3 1 : 0 ] ex fw wbvalue , input ex fw writereg , // Memory input input

[ 3 1 : 0 ] mem fw wbvalue , mem fw writereg ,

// W r i t e b a c k input [ 3 1 : 0 ] wb fw wbvalue , input wb fw writereg ); r e g [ 4 : 0 ] TableFW [ 3 : 0 ] ; ... endmodule

4. Unidade de Execuo (Execute) ca No ciclo de execuo, so realizadas as operaoes de instrues lgico-aritmticas ca a c co o e e tambm o clculo de endereos utilizados em loads e stores. Nesta verso do MIPS, so e a c a a implementados apenas instrues inteiras de 32 bits. No so implementadas instruoes co a a c de multiplicao. Neste mdulo, sero utilizadas as unidades Alu e Shifter (especicados ca o a nas entregas anteriores).
i n c l u d e Alu . v i n c l u d e S h i f t e r . v module E x e c u t e ( input input // Decode input input input input input clock , reset ,

[2:0]

id id id id id

ex ex ex ex ex

selalushift , selimregb , selsarega , aluop , unsig ,

input input input input input input input input input input input input input input input input

[1:0] [4:0] [31:0] [2:0] [2:0]

[31:0] [31:0] [31:0] [2:0] [4:0]

id id id id id id id id id id id id id id id id

ex shiftop , ex shiftamt , ex rega , ex msm , ex msl , ex readmem , ex writemem , ex mshw , ex lshw , ex regb , ex imedext , ex proximopc , ex selwsource , ex regdest , ex writereg , ex writeov ,

// F o r w a r d i n g output [ 3 1 : 0 ] ex fw wbvalue , output ex fw writereg , // F e t c h output reg // Memory output reg [2:0] output reg [2:0] output reg output reg output reg output reg output reg [ 3 1 : 0 ] output reg [2:0] output reg [4:0] output reg output reg [ 3 1 : 0 ] output reg [ 3 1 : 0 ] ); ... // A l u // S h i f t e r endmodule ALU ( . . . ) ; SHIFTER ( . . .

ex if stall ,

ex mem msm , ex mem msl , ex mem readmem , ex mem writemem , ex mem mshw , ex mem lshw , ex mem regb , ex mem selwsource , ex mem regdest , ex mem writereg , ex mem aluout , ex me m wb val ue

);

Tabela 3. Descrio dos sinais do Execute. ca

Sinal clock reset

E/S E E

Tamanho 1 bit 1 bit

id ex selalushift

1 bit

id ex selimregb

1 bit

id ex selsarega

1 bit

verbcid ex aluop id ex unsig id ex shiftop id ex shiftamt id ex rega id ex msm id ex msl id ex readmem id ex writemem id ex mshw id ex lshw id ex regb id ex imedext

E E E E E E E E E E E E E

3 bits 1 bit 2 bits 5 bits 32 bits 3 bits 3 bits 1 bit 1 bit 1 bit 1 bit 32 bits 32 bits

Descrio ca Utilizado para sincronizao entre os mdulos. ca o Esta operao deve ser acionada na transio de ca ca 0 para 1 deste sinal. Os sinais propagados ao estgio de memria devem receber o valor 0. a o Seleciona entre o resultado das unidades Alu e Shifter. Declare o o mux alusft para receber um valor multiplexado pelo sinal selalushift: 0: aluout // Valor da operao lgicoca o aritmtica. e 1: result // Valor do deslocamento de bits. Seleciona entre o valor do campo imediato e um valor lido no registrador B. Declare o o mux imregb para receber um valor multiplexado pelo sinal selimregb. O valor do o a mux imregb servir como fonte do sinal b da Alu. 0: id ex regb // Valor do registrador B. 1: id ex imedext // Valor imediato com extenso de sinal. a Seleciona entre o regitrador A e o campo sa da instruo. Declare o o mux sarega ca para receber um valor multiplexado pelo sinal selsarega. Este o fonte do sinal e shiftamt da unidade Shifter. 0: id ex rega[4:0] // Valor do registrador A. 1: id ex shiftamt // Valor do campo sa. Sinal de controle do mdulo Alu. o Sinal de controle para operao sem sinal no ca mdulo Alu. o Sinal de controle para a unidade de deslocamento. Quantidade de bits deslocados no mdulo Shifter. o Valor do registrador A utilizado nas operaes. co Fonte do sinal a da Alu. Este valor deve ser apenas repassado para unidade de memria. o Este valor deve ser apenas repassado para unidade de memria. o Este valor deve ser apenas repassado para unidade de memria. o Este valor deve ser apenas repassado para unidade de memria. o Este valor deve ser apenas repassado para unidade de memria. o Este valor deve ser apenas repassado para unidade de memria. o Valor do registrador B utilizado nas operaes. co Fonte do sinal value in da unidade Shifter. Valor do campo de valor imediato com extenso a de sinal.

Continua na pgina seguinte. a

Continuado de pgina anterior. a


id ex proximopc id ex selwsource E E 32 bits 3 bits Valor do prximo PC. Este valor ser multiplexado o a para escrita no banco de registradores. Seleciona a fonte de dados para o estgio Wria teback realizar a escrita. Este sinal ser utilia zado tambm no estgio Memory. Declare o o e a mux wbvalue para receber um valor multiplexado por selwsource. 0: mux alusft // Valor multiplexado por selalushift. 2: id ex imedext // Valor imediato com extenso de sinal. a 3: id ex proximopc // Valor do prximo o PC. 4: 31b0,compout // Resultado de comparao (Alu) completado com zeros a esquerda. ca default: 32bz; Este valor deve ser apenas repassado para unidade de memria. o Sinal de entrada que indica se a instruo escreve ca em registradores. Indica se a instruo escreve em registradores ca quando ocorre overow. Valor atual da instruo em execuo que ser ca ca a gravado no estgio de escrita. Recebe o valor do a o mux wbvalue. Sinal enviado para a unidade de Forwarding indicando se o valor atual do ciclo poder ser utilizado a (indica se este ser gravado). a Ativo em n lgico 1 somente quando ocorre vel o um acesso a memria para leitura ou escrita. o Este valor deve ser apenas repassado para unidade de memria. o Este valor deve ser apenas repassado para unidade de memria. o Indica se haver leitura em memria. a o Indica se haver escrita em memria. a o Este valor deve ser apenas repassado para unidade de memria. o Este valor deve ser apenas repassado para unidade de memria. o Valor do registrador B. Tambm deve ser repase sado para unidade de memria. o Seleciona fonte de dados para escrita em registrador. Endereo do registrador de destino ( rt | rd c | rt31 ). Indica se haver ou no escrita em registradores. a a O valor condicionado ao sinal writeov que ine dica se escreve com overow, ao sinal aluov que o sinal de overow, e ao valor de writereg e que indica se a instruo faz escrita. Este sica nal pode ser implementado como ( aluov | id ex writeov) & id ex writereg.

id ex regdest id ex writereg id ex writeov ex fw wbvalue

E E E S

5 bits 1 bit 1 bit 32 bits

ex fw writereg

1 bit

ex if stall ex mem msm ex mem msl ex mem readmem ex mem writemem ex mem mshw ex mem lshw ex mem regb ex mem selwsource ex mem regdest ex mem writereg

S S S S S S S S S S S

1 bit 3 bits 3 bits 1 bit 1 bit 1 bit 1 bit 32 bits 3 bits 5 bits 1 bit

Continua na pgina seguinte. a

Continuado de pgina anterior. a


ex mem aluout ex mem wbvalue S S 32 bits 32 bits Resultado de ( Shift| Alu). Valor atual da instruo em execuo que ser ca ca a gravado no estgio de escrita. Recebe o valor do a o mux wbvalue.

Tabela 2. Descrio dos sinais de Forwarding ca

Sinal
lock reset

E/S E E

fw if id stall

id fw regdest id fw load id fw addra id fw addrb id fw rega id fw regb fw id rega

E E E E E E S

fw id regb

ex fw wbvalue

ex fw writereg

mem fw wbvalue mem fw writereg

E E

wb fw wbvalue wb fw writereg

E E

Tamanho Descrio ca 1 bit Utilizado para sincronizao entre os ca mdulos. o 1 bit Quando ativo reseta os valores da la e os registradores de sa fw id rega e da e a fw id regb. Tambm poder ser utilizado para resetar outros registradores internos necessrios a implmentao. a ca 1 bit Sinal de stall enviado para as unidades Fetch e Decode para tratar dependncias e de dados em instruoes seguintes `s de c a load. Ativo em n lgico 1 se a instruo vel o ca que est em execuo for do tipo load e a ca a instruo decodicada tiver dependncia ca e de dados com a primeira. 5 bits Registrador de destino, vindo da instruo ca decodicada. 1 bit Registra se a intruo decodicada do ca e tipo load. 5 bits Endereo do registrador lido no barrac mento A do banco de registradores. 5 bits Endereo do registrador lido no barrac mento B do banco de registradores. 32 bits Valor do registrador lido no barramento A. 32 bits Valor do registrador lido no barramento B. 32 bits Valor do registrador lido em A que ser a enviado do estgio de decodicao para a ca o de execuo aps tratamento de conito ca o de dados. 32 bits Valor do registrador lido em B que ser a enviado do estgio de decodicao para a ca o de execuo aps tratamento de conito ca o de dados. 32 bits Valor que poder ser gravado no estgio a a Write Back vindo do nal do estgio a de decodicao encaminhado pelo de ca execuo. Valor pr-execuo. ca e ca 1 bit Sinal que indica se o registrador vindo de pr-execuoser gravado ou no em e ca a a Write Back. 32 bits Valor a ser gravado no estgio Write Back a vindo do nal do estgio de execuo. a ca 1 bit Sinal que indica se o registrador vindo do estgio de memria ser gravado ou no a o a a em Write Back. 32 bits Valor a ser gravado no estgio Write Back a vindo do nal do estgio de memria. a o 1 bit Sinal que indica se o registrador vindo do estgio de escrita ser gravado ou no. a a a

Das könnte Ihnen auch gefallen