Beruflich Dokumente
Kultur Dokumente
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 ,
id id if if if if if
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
, , , ,
COMP( . . . ) ; CONTROLE( . . .
);
E/S E E
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.
id if pcindex
32 bits
S S S
S S S S S S
S S S S S S S
S S S
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
E E S S
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
fw if id stall ,
id id id id id id fw fw
fw fw fw fw fw fw id id
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
input input input input input input input input input input input input input input input input
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
);
E/S E E
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.
E E E S
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
Sinal
lock reset
E/S E E
fw if id stall
E E E E E E S
fw id regb
ex fw wbvalue
ex 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