joaocarlos/udlx-verilog

Describe Execute block and Pin/Port definicionts

Closed this issue · 3 comments

Describe Execute block and Pin/Port definicionts

João,
Eu adicionei a figura ex_block.eps na pasta pictures/block.
Eu tentei adicionar no latex, mas não consegui compilar :(

Bom,
Eu fiz esse block mas eu ainda fiquei com uma dúvida, não sei se está completamente correto.
Os sinais para memória, ou seja, o endereço e o dado, devem ser passados pro estágio de Memory Access através do Execute, correto?
Nesse caso, esses sinais estariam representados pelas saídas data_alu_a e data_alu_b do Instruction Decode?
Então, teria que adicionar essas saídas no bloco de Execute, e consequentemente, adicionar esses registradores no pipeline?

Igo,

Sobre o dado que determina o endereço da memória, em geral é o dado em data_alu_a, quando for um endereçamento direto e data_alu_b quando indireto. Neste caso, antes você precisa calcular o novo endereço. Logo, eles seriam representados pelas saídas data_alu_a e alu_data. Já corrigi isso na lista de registradores de pipeline.

Além disso, você esqueceu que faremos a resolução dos saltos no Execute. Logo, tem que ter uma saída chamada branch_result. Ainda sobre isso, verifiquei agora que como vamos implementar um preditor de saltos, o resultado do preditor também precisa ser propagado. Aproveite e adicione uma entrada chamada bpb_branch_taken. Farei as correções nos módulos que eu já fiz e na lista de registradores de pipeline.

update