Buscar

Projeto SEL0632 MIPS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SEL0632 – Linguagens de Descrição de Hardware
Projeto Final
Processador MIPS de 32 bits 
O MIPS é um exemplo de processador com conjunto reduzido de instruções (RISC) desenvolvido na década de 1980, para fins didáticos. Ele tem instruções de 32 bits e trinta e dois registradores de 32 bits de uso geral. O registrador 0 sempre contém o valor 0. A memória também é de 32 bits.
Como mostrado na tabela 1, o MIPS tem apenas três formatos de instrução. Somente as instruções I-Format LOAD e STORE referenciam operandos da memória. Instruções R-Format como ADD, AND e OR realizam operações somente em dados nos registradores. Elas requerem dois registradores de operandos, RS e RT. O resultado da operação é armazenado num terceiro registrador, RD. Os campos Shift e Function da R-format são usados como um campo de instrução estendida. Instruções J-Format incluem as instruções de desvio.
Tabela 1 – Formatos de Instruções do MIPS 32 bits
	Field Size
	6-bits
	5-bits
	5-bits
	5-bits
	5-bits
	6-bits
	R-Format
	Opcode
	Rs
	Rt
	Rd
	Shift
	Function
	I-Format
	Opcode
	Rs
	Rt
	Address/Immediate value
	J-Format
	Opcode
	Branch target address
Um resumo das instruções básicas do MIPS é mostrado na tabela 2 abaixo.
Tabela 2 – Instruções do processador MIPS
	Mnemonic
	Format
	Opcode
Field
	Function
Field
	Instruction
	Implementada
	Add
	R
	0
	32
	Add
	S
	Sub
	R
	0
	34
	Subtract
	S
	And
	R
	0
	36
	Bitwise And
	S
	Or
	R
	0
	37
	Bitwise Or
	S
	Slt
	R
	0
	42
	Set If Less Than
	S
	Addi
	I
	8
	-
	Add Immediate
	S
	Lw
	I
	35
	-
	Load Word
	S
	Sw
	I
	43
	-
	Store Word
	S
	Beq
	I
	4
	-
	Branch on Equal
	S
	J
	J
	2
	-
	Jump
	S
	Sltu
	R
	0
	43
	Set if Less Than Unsigned
	N
	Xor
	R
	0
	38
	Add Unsigned
	N
	Nor
	R
	0
	39
	Add Unsigned
	N
	Jr
	R
	0
	8
	Jump Register (used for Return)
	N
	Sll
	R
	0
	0
	Shift Left logical
	N
	Srl
	R
	0
	2
	Shift Right Logical
	N
	Sra
	R
	0
	3
	Shift Right Arithmetical
	N
	Andi
	I
	12
	-
	And immediate
	N
	Ori
	I
	13
	-
	Or immediate
	N
	Xori
	I
	14
	-
	Xor Imediate
	N
	Bne
	I
	5
	-
	Branch Not Equal
	N
	Blez
	I
	6
	-
	Branch less than or equal zero
	N
	Bgtz
	I
	7
	-
	Branch greater than zero 
	N
	Bltz
	I
	1
	0
	Branch less than zero
	
	Jal
	J
	3
	-
	Jump and Link (used for Call)
	N
Uma implementação núcleo do processador MIPS, baseado no exemplo do livro Digital Design and Computer Architecture, de David Money Harris & Sarah L. Harris, é mostrada na figura 1 abaixo. Esta implementação realiza a busca, decodificação e execução de instruções em um único ciclo de clock. O Contador de Programa (PC) é utilizado para buscar o próximo endereço na memória de instrução. Uma vez que a memória é endereçada byte a byte, o PC é incrementado de 4 para buscar a próxima palavra de 32 bits na memória. Ao mesmo tempo em que a instrução é buscada, um somador (abaixo da memória) é usado para somar 4 ao PC para gerar o próximo endereço. A saída da memória de instrução é a próxima instrução de 32 bits.
Figura 1 - Implementação Ciclo único do MIPS
Figura 1 - Esquema do processador MIPS de ciclo único
O código da instrução é enviado à unidade de controle e o código da função é enviado à unidade de controle da ULA. Os campos de endereço de registradores da instrução são usados para endereçar o banco de registradores de duas portas de entrada. Este banco pode realizar duas leituras e uma escrita independentes em um único ciclo de clock. Isto implementa a decodificação de instrução.
As duas saídas do banco de registradores alimentam as entradas de dados da ULA. A unidade de controle identifica a operação da ULA necessária para a execução da instrução. Depois, dependendo da instrução, uma série de ações são tomadas. As instruções LOAD e STORE lêem ou escrevem na memória de dados. Instruções R-Format passam direto pela memória de dados utilizando um multiplexador. Por último, as instruções de leitura e R-Format escrevem de volta um novo valor no banco de registradores.
Instruções de desvios relativos ao PC usam um somador e um multiplexador para calcular o endereço de desvio. O multiplexador é necessário para operações de desvio condicional. Depois que todas as saídas tiverem sido estabilizadas, o próximo clock carrega o novo valor do PC e o processo repete para a próxima instrução.
Já foi preparada uma descrição em VHDL da arquitetura acima para ser utilizada como base para o projeto. Ela foi retirada do livro Digital Design and Computer Architecture, mas algumas partes foram removidas para que os alunos utilizem seus conhecimentos para implementar as partes faltantes.
A primeira parte do projeto será realizar a implementação destas partes faltantes. Além disso, toda a estrutura terá que ser parametrizada. Ou seja, não será aceito declaração de objetos bit_vector, por exemplo, com os índices numéricos. Constantes ou genéricos terão que ser utilizados para a definição do tamanho do vetor. Abaixo temos um exemplo de implementação não aceita e outra aceita:
Não aceito: dado1_s: bit_vector (31 downto 0);
Aceito: dado1_s: bit_vector (n_dados_c – 1 downto 0);
Para os campos das instruções, será exigido o uso de alias. Todos os sinais criados terão que ser em letra minúscula, terminando com ‘_g’, ‘_c’, ‘_s’ ou ‘_v’, se forem genéricos, constantes, sinais ou variáveis, respectivamente. Parâmetros de entrada e saída de entidades/componentes e subrotinas deverão começar com ‘i_’, no caso de entradas, e ‘o_’, no caso de saídas.
Será aceito como resultado, além do código em VHDL, o resultado da compilação no Quartus II, com a indicação do consumo de lógica e do RTL das partes integrantes da arquitetura.
A data de entrega da primeira parte será no dia:
12/06 – Turma 01
13/06 – Turma 02
A segunda parte será a implementação de um conjunto extra de instruções. A arquitetura implementada possui apenas as instruções indicadas com S na tabela 1. Cada grupo irá implementar uma das instruções indicadas com N na tabela 1, conforme a tabela 2 abaixo.
	Grupo
	Instrução 1
	Instrução 2
	Instrução 3
	Instrução 4
	Instrução 5
	1
	Xor
	Bgtz
	Jal
	Jr
	Bne
	2
	Nor
	Blez
	Jal
	Jr
	Bne
	3
	Sltu
	Bltz
	Jal
	Jr
	Bne
	4
	Sll
	Andi
	Jal
	Jr
	Bne
	5
	Srl
	Ori
	Jal
	Jr
	Bne
	6
	Sra
	Xori
	Jal
	Jr
	Bne
	7
	Xor
	Bltz
	Jal
	Jr
	Bne
	8
	Sra
	Andi
	Jal
	Jr
	Bne
Definição de novos tipos, constantes, alias, subrotinas, etc., deverão ser implementadas em pacotes. Serão entregues aos grupos testbenchs para testar as implementações no Modelsim. Serão aceitos como resultados prints do console e da tela do waveform do Modelsim, mostrando a correta execução das instruções implementadas.
A data de entrega da segunda parte será no dia:
26/06 – Turma 01
27/06 – Turma 02
A terceira parte consistirá em modificar a arquitetura para uma das possíveis implementações:
Pipeline – Turma 01
Multiciclo – Turma 02
A figura 2 apresenta a implementação da arquitetura tipo Pipeline. O grande desafio é inserir corretamente os pipelines de forma a garantir o correto funcionamento da arquitetura. Esta estrutura de pipeline divide a execução das instruções em 5 estágio: Fecth, Decode, Execute, Mem, Writeback.
Figura 2 - Implementação Pipeline do MIPS
Na figura 3 é apresentada a implementação multiciclo. Nesta, o grande desafio, além de unidades adicionais de controle de fluxo de dados (registradores), é a montagem da unidade de controle que irá coordenar a execução das instruções. Esta unidade de controle terá como base uma máquina de 12 estados, conforme descrito no livro base.
Figura 3 - Implementação Multiciclo do MIPS
A avaliação será dividida em duas partes: Documentação e Implementação.
Na Documentação, será avaliado: uma descrição detalhada do projeto; a estrutura interna dos arquivos (cabeçalhos,comentários, tabulação, identação, etc.); e a organização em pastas dos arquivos, que deverá respeitar alguma estrutura similar à utilizada em projetos de sistemas digitais tipo opensource do site Opencores. Este critério corresponderá a 40% da nota do trabalho.
Na Implementação, será avaliado: o uso adequado da linguagem VHDL. Para isso, será avaliado o correto uso obrigatório dos aspectos funcionais da linguagem listados abaixo. Este critério corresponderá a 60% da nota do trabalho.
A data de entrega da terceira parte será no dia:
06/07 – Turma 01
07/07 – Turma 02
A seguir são apresentados os critérios de avaliação no critério Implementação do trabalho.
Notas de Trabalho – SEL0632 – Linguagens de Descrição de Hardware
	Turma-__
	
	Grupos
	Critérios
	Pontos
	01
	02
	03
	04
	05
	06
	Comandos concorrentes
	0,4
	
	
	
	
	
	
	Comandos seqüenciais
	0,4
	
	
	
	
	
	
	Atributos
	0,4
	
	
	
	
	
	
	Componentes
	0,6
	
	
	
	
	
	
	Esquemas de iteração
	0,6
	
	
	
	
	
	
	Genéricos
	0,6
	
	
	
	
	
	
	Subprogramas
	0,6
	
	
	
	
	
	
	Bibliotecas
	0,6
	
	
	
	
	
	
	Pacotes
	0,6
	
	
	
	
	
	
	Pseudônimos
	0,6
	
	
	
	
	
	
	Tipos
	0,6
	
	
	
	
	
	
	Total
	6,0
	
	
	
	
	
	
Mais detalhes serão repassados durante a execução do projeto. Este documento estará em constante atualização.
Atenciosamente
Prof. Maximiliam Luppe

Continue navegando