Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Especificação do Projeto da Disciplina Organização e Arquitetura de Computadores II, Notas de aula de Desvio

A especificação do projeto da disciplina organização e arquitetura de computadores ii, incluindo a especificação do registrador de deslocamento, registrador de 32 bits, registrador de instruções, banco de registradores, unidade de processamento e unidade de controle. Além disso, é fornecida a descrição dos desvios condicionais e não condicionais, e as instruções do tipo r, i e j. O documento também aborda a implementação da pilha e o cálculo do endereço de destino para os desvios.

Tipologia: Notas de aula

2022

Compartilhado em 07/11/2022

Maracana85
Maracana85 🇧🇷

4.2

(62)

227 documentos

1 / 10

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO
Especificação do Projeto de Processador
RISC
myCPU
Neste documento é apresentada a especificação do projeto da disciplina Organização e Arquitetura
de Computadores II. Tal documento tem como base a experiência adquirida durante o
doutoramento do professor da disciplina.
pf3
pf4
pf5
pf8
pf9
pfa

Pré-visualização parcial do texto

Baixe Especificação do Projeto da Disciplina Organização e Arquitetura de Computadores II e outras Notas de aula em PDF para Desvio, somente na Docsity!

UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO

Especificação do Projeto de Processador

RISC

myCPU

Neste documento é apresentada a especificação do projeto da disciplina Organização e Arquitetura de Computadores II. Tal documento tem como base a experiência adquirida durante o doutoramento do professor da disciplina.

1. INTRODUÇÃO

Esta especificação é composta por três sessões. Na primeira é apresentada a especificação e as várias etapas de apresentação do projeto. Na segunda é dada uma visão da CPU que será implementada. Nesta sessão também está presente o repertório de instruções que o processador desenvolvido deve conter e a descrição dos componentes fornecidos pelo professor da disciplina. Na última sessão é apresentada a especificação do relatório do projeto. Ainda está presente um anexo que ensina como configurar e carregar a memória que irá compor o projeto.

OBSERVAÇÂO É dever de cada equipe ler e entender o que está descrito neste documento. Caso existam dúvidas, o professor deverá ser consultado para esclarecer qualquer dúvida que possa existir durante a execução do projeto. Ao final de cada sessão existem algumas observações que devem ser atentamente seguidas. Caso algumas dessas observações não sejam seguidas, a nota no projeto será coerente com a falha cometida.

Os alunos devem ter profissionalismo ao fazer o projeto. E importante lembrar que as regras servem para facilitar o trabalho dos alunos e do professor e, caso elas sejam cumpridas a risca, não haverá problemas com relação à correção.

2. ESPECIFICAÇÃO DA CPU

O projeto consiste no desenvolvimento de um processador, a qual poderá ser feita com base na descrita na Figura 1. O processador deverá incluir três blocos básicos: Unidade de processamento , Unidade de Controle e Memória. A seguir é dada uma descrição sucinta do processador a ser projetado.

Figura 1 : Circuito Base para a Construção do Projeto

As tabelas a seguir apresentam todas as instruções que serão implementadas no projeto. Tabela 2 apresenta as instruções do tipo R

Tabela 2 : Instruções do tipo R Assembly op rs rt Rd shamt funct Comportamento add rd, rs, rt 0x0 rs rt Rd 0x0 0x20 rd <- rs + rt and rd, rs, rt 0x0 rs rt Rd 0x0 0x24 rd <- rs & rt jr rs 0x0 rs - - 0x0 0x8 PC <- rs sll rd, rt, shamt 0x0 - rt Rd shamt 0x0 rd <- rt << shamt sllv rd, rt, rs 0x0 rs rt Rd 0x0 0x4 rd <- rt << rs slt rd, rs, rt 0x0 rs rt Rd 0x0 0x2A rd <- (rs < rt)? 1 : 0 srl rd, rt, shamt 0x0 - rt Rd Shamt 0x2 rd <- rt >> shamt sub rd, rs, rt 0x0 rs rt Rd 0x0 0x22 rd <- rs – rt or rd, rs, rt 0x0 rs rt Rd 0x0 0x25 rd <- rs | rt xor rd, rs, rt 0x0 rs rt Rd 0x0 0x26 rd <- rs ^ rt

Tabela 3 : Instruções do tipo I Assembly op rs rt Offset/Immediate Comportamento addi rt, rs, imm 0x8 rs rt Imm rt <- rs + imm andi rt, rs, imm 0x9 rs rt Imm rt <- rs + imm beq rs, rt, offset 0x4 rs rt offset Se rs = rt, PC += offset bne rs, rt, offset 0x5 rs rt offset if rs !=tt, PC += offset lui rt, imm 0xF - rt Imm rt[31..15] <- imm; rt[15..0] <- 0 lw rt, offset(rs) 0x23 rs rt offset rt <- mem [rs + offset] slti rt, rs, imm 0xA rs rt Imm rt <- (rs < imm)? 1 : 0 sw rt, offset(rs) 0x2B rs rt offser Mem[offset + rs] <- rt ori rt, rs, imm 0xD rs rt imm rt <- rs | imm xori rt, rs, imm 0xE rs rt imm rt <- rs ^ imm

Tabela 4 : Instruções do tipo J Assembly op Offset Comportamento j offset 0x2 Offset $ra = PC + 4, PC = offset jal offset 0x3 Offset rt <- rs + imm

2.1. Pilha

Para permitir a chamada de rotinas reentrantes e recursivas, será possível o armazenamento do registrador 31 ($ra) numa estrutura do tipo pilha a qual será implementada numa parte da memória como mostrado na Figura 3.

Figura 3 : Estrutura da memória

O endereço do topo da pilha será guardado no registrador 29 ($sp) do banco de registradores, que funciona como o Stack Point. Quando o reset é ativado este registrador deverá apontar para o endereço onde começa a pilha. O salvamento e recuperação do registrador 31 ($ra) na pilha é sempre feito por software.

2.2. Desvios

Os desvios podem ser classificados como desvios condicionais ou incondicionais. Os desvios condicionais realizam algum teste ou verificação para, somente então executar o desvio. Os incondicionais sempre executam o desvio. O cálculo do endereço de destino é realizado diferentemente nos dois tipos de desvios:

2.2.1. Desvios condicionais

O valor de offset é multiplicado por 4 e somado ao PC atual. O resultado desta operação é o endereço de destino do salto (desvio), caso o resultado do teste condicional seja verdadeiro.

Exemplo : beq $t0, $t1, $t2 – Supondo que $t0 e $t1 sejam, ambos, iguais a 0x3A e que o PC atual seja 0x1C, a próxima instrução a ser executada é a que ocupa a posição (0xF * 4) + 0x1C, que é a 0x58.

Tabela 5 : Desvios condicionais Assembly Descrição beq rs, rt, offset Realiza o desvio se rs for igual a rt bne rs, rt, offset Realiza o desvio se rs for diferente de rt

2.2.2. Desvios incondicionais

No caso de instruções que utilizem offset, este deve ser multiplicado por 4, resultando em um endereço de 28 bits. Como todo endereço deve possuir 32 bits, os 4 bits restantes vêm do PC atual, representando os 4 bits mais significativos do endereço de destino. No caso de instruções que utilizam registrador, o conteúdo do registrador, o conteúdo do registrador já é o próprio endereço de destino.

Exemplo 1 : jal 0x1A2B – Supondo que o PC atual seja igual a 0xBA12FA00, o endereço de destino será igual a [(PC & 0xF0000000) | (0x1A2B * 0x4)], que é igual a 0Xb00068ac. Note que os 4 bits mais significativos do PC (1011) foram conservados.

Exemplo 2 : jr $t0 – Supondo que o $t0 seja igual a 0x1A2B, o endereço de destino será igual ao próprio valor de $t0, neste caso, 0x1A2B.

Tabela 5 : Desvios condicionais Assembly Descrição j offset Desvia, incondicionalmente, para o endereço calculado jal offset Desvia para endereço calculado, porém salva o endereço da instrução subsequente ao jal (endereço de retorno) no registrador 31. jr rs Desvio incondicional para o endereço apontado por rs.

Figura 5 : Entidade do Registrador de 32 bits

2.3.3. Banco de registradores

O banco de registradores é composto por 32 registradores de 32 bits. Dois registradores podem ser visíveis simultaneamente.

A leitura dos registradores é combinacional, isto é, se os valores nas entradas rr1 ou rr2 forem alteradas os valores nas saídas rd1 ou rd2 podem ser alterados. O registrador a ser escrito é selecionado pela entrada wr e quando a entrada rw é ativada (igual a 1) o registrador selecionado recebe o conteúdo da entrada wd. O sinal de reset limpa todos os registradores e é assíncrono.

Figura 6 : Entidade do Banco de Registradores

2.3.4. Registrador de deslocamento

O registrador de deslocamento deve ser capaz de deslocar um número inteiro de 32 bits para esquerda e para a direita. No deslocamento a direita o sinal pode ser preservado ou não.

O número de deslocamentos pode variar entre 0 e 32 e é especificado na entrada n (5 bits) do registrador de deslocamento. A funcionalidade desejada do registrador de deslocamento é especificada na entrada shift conforme Tabela 6. As atividades discriminadas na entrada shift são síncronas com o clock e o reset é assíncrono e ele funciona de forma semelhante como um registrador (demora 1 ciclo para sair o valor certo).

Figura 7 : Entidade do Registrador de Deslocamento

Tabela 6 : Funcionalidade do Registrador de Deslocamento Shift Descrição 000 Nada a fazer 001 Load no registrador 010 Shift à esquerda n vezes 011 Shift lógico à direita n vezes 100 Shift aritmético à direita n vezes 101 Rotação à direita n vezes 110 Rotação à esquerda n vezes

2.3.5.Unidade lógica e aritmética

A unidade lógica e aritmética (ALU) é um circuito combinacional que permite a operação com números de 32 bits na notação complemento de dois. A funcionalidade é especificada pela entrada f conforme descrito na Tabela 7.

Figura 8 : Entidade da ALU

Tabela 7 : Funcionalidade da ALU Função Operação Descrição Flags 000 S = A Carrega A Z, N 001 S = A + B Soma Z, N, O 010 S = A – B Subtração Z, N, O 011 S = A and B And lógico Z 100 S = A + 1 Incremento de A Z, N, O 101 S = not A Negação de A Z 110 S = A xor B Ou exclusivo Z 111 S = A comp B Comparação EQ, GT, LT

Tabela 10 : Instruções do tipo J para Primeira Etapa Assembly op Offset Comportamento j offset 0x2 Offset $ra = PC + 4, PC = offset

Observação

É obrigatória a presença das seguintes saídas na simulação no waveform exatamente com os mesmo nomes citados na Tabela 11, sob a possibilidade de haver penalidades caso não haja pinos ou estejam com os nomes diferentes. Podem haver outras saídas, desde que estas estejam presentes.

Sinais Descrição signal_memData Mostra o valor na saída da memória signal_address Mostra o endereço onde será feita a leitura ou escrita na memória. O sinal deve estar após o mux. signal_writeDataMem Valor que vai ser escrito na memória signal_writeRegister Mostra o dado que vai ser escrito no registrador signal_MDR Mostra o dado presente no Memory Data Register Signal_alu Mostra o valor que está saindo da ALU Signal_aluOut Mostra o valor presente na saída do Registrador AluOut signal_PC Valor presente no PC signal_RegDesloc Valor presente no registrador de deslocamento signal_wr Sinal que controla se o dado será lido ou escrito na memória signal_RegWrite Sinal que controla a escrita/leitura no banco de registradores Signal_IRWrite Sinal que controla a escrita no registrador de instruções