Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Relatorio PC 1 Lab AOC

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 16

UNIVERSIDADE FEDERAL SÃO PAULO

INSTITUTO DE CIÊNCIA E TECNOLOGIA


CAMPUS SÃO JOSÉ DOS CAMPOS

LUCAS PRAXEDES FISCHER DE MATTOS | RA:156697

DESENVOLVIMENTO DE UM PROCESSADOR NA ARQUITETURA DE


COMPUTADORES MIPS
Ponto de Controle 1

SÃO JOSÉ DOS CAMPOS


Abril de 2024
Lucas Praxedes Fischer de Mattos | RA:156697

Desenvolvimento de um Processador na Arquitetura de Computadores MIPS


Ponto de Controle 1

Relatório 1 apresentado à Universidade Federal


de São Paulo como parte dos requisitos
para aprovação na disciplina de Laboratório
de Sistemas Computacionais: Arquitetura e
Organização de Computadores - Noturno.

Docente: Prof. Dr. Tiago de Oliveira

São José dos Campos


Abril de 2024
RESUMO

A arquitetura MIPS de 32 bits surgiu da necessidade de um processador eficiente e de fácil


implementação. Baseada em um conjunto reduzido de instruções (RISC), apresenta um
pipeline de execução dividido em etapas distintas, permitindo a execução simultânea de
múltiplas instruções. Com registradores de 32 bits, é altamente eficiente e versátil, sendo
amplamente adotada em roteadores, consoles de videogame e dispositivos móveis. Seu legado
influenciou significativamente o design de processadores modernos, permanecendo como uma
escolha popular para desenvolvedores de hardware e software.

Palavras-chave: MIPS; Datapath; Conjunto de Instrução; Processador; Hardware.


LISTA DE FIGURAS

4.1 Datapath utilizado no projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8


LISTA DE TABELAS

4.1 Formatos de instruções utilizado no projeto . . . . . . . . . . . . . . . . . . . . . 6


4.2 Conjunto de Instruções utilizado no projeto . . . . . . . . . . . . . . . . . . . . . 7
SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1 Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 REVISÃO BIBLIOGRÁFICA . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 Unidade Lógica e Aritmética . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.4 Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1 Conjunto de Instrução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Datapath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.3 Entrada e Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
6 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1

1 INTRODUÇÃO

Os computadores desempenham um papel vital em diversas atividades, desde o uso


diário de celulares até o funcionamento de supercomputadores e sistemas de foguetes. Esses
dispositivos compartilham o princípio fundamental de processamento de dados por meio de
processadores e memória.
Os processadores executam instruções e programas, realizam cálculos rapidamente e
armazenam dados, permitindo uma ampla gama de tarefas, como operar sistemas operacionais,
interfaces gráficas, navegadores e jogos.
Existem diferentes tipos de processadores, como o MIPS, Intel x86 e o ARM, cada um
com arquiteturas e conjuntos de instruções distintos, evoluindo ao longo do tempo. Enquanto o
MIPS é comum em sistemas embarcados, o x86 domina em computadores pessoais e laptops,
assim como os processadores ARM em celulares.
A arquitetura e organização de computadores são onipresentes na vida cotidiana,
integrando-se em dispositivos como de chipsets, celulares, smartwatches, assistentes pessoais e
microcontroladores. Portanto, compreender essa área é fundamental para entender o mundo
digital ao nosso redor e futuro da informação digital.
Este projeto visa aplicar esses conhecimentos para desenvolver e, posteriormente,
implementar um processador utilizando Verilog em um Kit FPGA Altera DE2-115. Para isso,
serão projetados caminhos de dados, unidades lógicas e aritméticas, memória, módulos de
entrada e saída, entre outras partes essenciais do processador.
2

2 OBJETIVOS

2.1 Gerais

Neste trabalho, o objetivo geral é definir os parâmetros básicos da arquitetura MIPS


(Microprocessor without Interlocked Pipeline Stages) de um processador e implementá-lo na
linguagem de descrição de hardware Verilog, visando a sua execução em um Kit FPGA Altera
DE2-115. Serão utilizados Blocos Funcionais essenciais, como Registradores, Unidade de
Controle e Unidade Lógica e Aritmética, os quais desempenham papéis cruciais na operação
do processador. Além disso, será adotado um conjunto de Instruções do formato RISC
(Reduced Instruction Set Computing), conhecido por sua eficiência e simplicidade,
proporcionando um ambiente propício para a implementação e execução eficiente de
algoritmos e programas. A implementação desses elementos permitirá a criação de um
processador MIPS funcional, capaz de executar uma ampla gama de tarefas computacionais de
forma eficaz e precisa no ambiente FPGA.

2.2 Específico

Para o PC1, os objetivos abrangem não apenas a definição do conjunto de instruções da


arquitetura, mas também aspectos cruciais como o tamanho da palavra, o número de
registradores, os datapaths das instruções, além da organização da memória e da unidade de
controle. Esses parâmetros fundamentais são essenciais para estabelecer as bases sólidas do
projeto, garantindo sua viabilidade e funcionalidade. A definição cuidadosa desses elementos é
crucial para orientar o desenvolvimento futuro do processador MIPS, desde sua concepção até
sua implementação e execução no ambiente FPGA.
3

3 REVISÃO BIBLIOGRÁFICA

3.1 Arquitetura

Conforme observado por Stallings (2010, p. 6), a arquitetura de um processador, ou


conjunto de instruções, é a interface direta entre o programador e o hardware do sistema. Essa
arquitetura define não apenas o conjunto de instruções disponíveis, mas também o formato dos
dados e a forma como as operações são realizadas. É importante ressaltar que, embora os
programadores possam escrever código em linguagens de alto nível, como C++ ou Python,
eventualmente esse código é traduzido para instruções de linguagem de máquina pelo
compilador.
Em um nível mais fundamental, o hardware do computador opera utilizando apenas a
linguagem binária, composta exclusivamente por sequências de 0s e 1s. Assim, para realizar
qualquer operação, desde uma simples adição até operações mais complexas, como acessar
a memória ou realizar operações lógicas, é necessário que o programa forneça instruções em
linguagem de máquina que o processador possa entender e executar.
O conjunto de instruções de uma arquitetura de processador é crucial, pois determina as
operações que o processador é capaz de executar e como elas podem ser combinadas para
realizar tarefas mais complexas. Por exemplo, algumas arquiteturas podem oferecer instruções
especializadas para manipular vetores ou realizar operações de ponto flutuante com alta
precisão, enquanto outras podem priorizar operações de manipulação de dados em massa.
Portanto, compreender a arquitetura de um processador e seu conjunto de instruções é
fundamental para os desenvolvedores de software, pois isso influencia diretamente a eficiência
e o desempenho de seus programas. Além disso, para os projetistas de hardware, a escolha da
arquitetura correta pode afetar significativamente o custo, o consumo de energia e a capacidade
de escalabilidade de um sistema computacional.

3.2 Processador

O processador, conhecido como o “cérebro” de um computador, desempenha um papel


central na execução de operações aritméticas, processamento de instruções e manipulação de
dados necessários para a execução de programas.
Sua estrutura fundamental consiste no caminho de dados e na unidade de controle, que
coordenam e supervisionam suas operações. O caminho de dados é responsável pela execução
das operações e instruções, seguindo caminhos predefinidos para cada instrução recebida.
Esses caminhos são determinados pela unidade de controle, que direciona o caminho de
dados e a memória sobre como proceder. Além disso, o processador conta com uma memória
interna onde armazena os dados que serão processados.
Os dados mais frequentemente utilizados são mantidos no banco de registradores,
4

dispositivos de hardware que armazenam informações em formato binário. As instruções, por


sua vez, são armazenadas na memória de instruções, organizadas de acordo com a sequência
de execução do programa.
Para dados adicionais, o processador recorre a memórias externas. Essa estrutura
complexa e interligada permite ao processador executar uma ampla variedade de tarefas de
forma eficiente e precisa, contribuindo diretamente para o funcionamento e desempenho dos
sistemas computacionais.

3.3 Unidade Lógica e Aritmética

A unidade lógica e aritmética (ULA) desempenha um papel fundamental no


processamento de dados em um computador. Conforme destacado por Hennessy (2016, p.
157), a ULA é responsável por realizar uma variedade de operações, incluindo adição,
subtração e operações lógicas como AND e OR. Além dessas operações básicas, a ULA
também pode ser responsável por outras operações mais complexas, dependendo da
arquitetura do processador. Por exemplo, em algumas arquiteturas, a ULA pode ser capaz de
realizar multiplicação e divisão.
É importante ressaltar que a ULA opera em conjunto com o restante do hardware do
computador, recebendo instruções e dados do caminho de dados e da memória. Ela executa
essas operações de forma rápida e eficiente, contribuindo diretamente para o desempenho geral
do sistema. Além disso, a ULA é um dos componentes-chave na execução de algoritmos e
programas, realizando as operações necessárias para processar os dados conforme as
instruções do programa. Assim, a ULA é essencial para garantir a funcionalidade e eficiência
dos computadores modernos.

3.4 Memória

A memória RAM (Random Access Memory), em uma arquitetura MIPS, é um


componente essencial que armazena temporariamente dados e instruções que estão sendo
atualmente utilizados pelo processador. Em conjunto com o processador, a memória RAM
forma o núcleo do subsistema de memória de um sistema computacional. Ela funciona como
uma área de armazenamento volátil, onde os dados podem ser rapidamente acessados e
modificados pelo processador durante a execução de programas.
Na arquitetura MIPS, a memória RAM desempenha um papel crucial no armazenamento
de dados temporários utilizados pelo processador durante a execução de instruções. Por
exemplo, os dados necessários para operações aritméticas ou lógicas são frequentemente
carregados da memória RAM para os registradores do processador, onde são manipulados e
processados. Da mesma forma, as instruções do programa são buscadas na memória RAM e
transferidas para o registrador de instrução do processador para execução.
5

É importante destacar que a memória RAM é volátil, o que significa que ela perde seu
conteúdo quando o computador é desligado. Portanto, ela é principalmente utilizada para
armazenamento temporário de dados durante a execução de programas. Além disso, na
arquitetura MIPS, a memória RAM pode ser organizada em várias hierarquias, como caches
de nível 1, 2 e 3, cada uma com diferentes tempos de acesso e capacidades de armazenamento,
visando otimizar o desempenho do sistema. Assim, a memória RAM desempenha um papel
crucial no funcionamento eficiente dos sistemas baseados em arquitetura MIPS, garantindo
que os dados e instruções sejam acessados e processados de forma rápida e eficiente durante a
execução de programas.
6

4 DESENVOLVIMENTO

Para o dado projeto, a compreensão da arquitetura MIPS é fundamental. Essa arquitetura,


reconhecida por sua eficiência e simplicidade, é frequentemente utilizada como base para o
design de processadores em uma ampla variedade de dispositivos. A arquitetura MIPS apresenta
um conjunto reduzido de instruções (RISC), o que facilita sua implementação e otimiza o
desempenho do processador.

4.1 Conjunto de Instrução

Nesse sentido, os formatos de instruções e as instruções definidas estão presentes nas


Tabela 1 e Tabela 2, respectivamente. Os formatos de instruções são os seguintes: Tipo R, Tipo
I e Tipo J.
Uma instrução do tipo R em arquiteturas MIPS é uma instrução de formato específico
que opera exclusivamente em registradores. Essas instruções executam operações aritméticas,
lógicas ou de deslocamento diretamente entre dois registradores. Já as instruções do tipo I é
uma instrução de formato específico que opera com um valor imediato e um registrador. Essas
instruções são utilizadas para realizar operações que envolvem acesso à memória e operações
com condicionais. Por fim, uma instrução do tipo J é utilizada para realizar saltos
incondicionais, ou seja, para transferir o controle de execução do programa para um endereço
específico na memória.

Tipo opcode rs rt rd shamt funct


R 31-26 25-21 20-16 15-11 10-6 5-0
opcode rs rt imediato
I 31-26 25-21 20-16 15-0
opcode endereço/imediato
J 31-26 25-0
Tabela 4.1 – Formatos de instruções utilizado no projeto
7

ADD R soma dois valores


SUB R subtrai dois valores
MULT R multiplica dois valores
DIV R divide dois valores
JUMP J desvia o programa para um imediato
JUMPAL J desvia o programa e salva a instrução
BEQ I compara se dois valores sao iguais e pula
BNE I compara se dois valores sao diferentes e pula
LW I carrega da memória em um registrador
SW I salva um registrador na memória
AND R comparar bit a bit se forem iguais
OR R comparar bit a bit se pelo menos 1 é verdadeiro
MFHI R Move um valor de HI a um registrador.
MFLO R Move um valor de LO a um registrador.
SLT R testa se um registrador é menor que outro
SLL R dobra o valor
SRL R divide por 2 o valor
Tabela 4.2 – Conjunto de Instruções utilizado no projeto

4.2 Datapath

Um datapath em arquiteturas de processadores é uma parte crucial do design do


processador que é responsável por realizar operações aritméticas, lógicas e de movimentação
de dados. Nesse sentido, o Datapath de uma arquitetura MIPS consiste em uma rede de
unidades funcionais, registradores e caminhos de dados que permitem que as instruções sejam
executadas.
Além disso, o datapath do MIPS opera em ciclos de clock, onde cada ciclo representa uma
unidade de tempo durante a qual uma série de operações pode ser realizada. Durante a execução
de uma instrução, o datapath busca a instrução da memória, decodifica-a para determinar a
operação a ser realizada e os operandos envolvidos, executa a operação e armazena o resultado
de volta na memória ou em registradores, conforme necessário. A Figura 1 mostra o datapath
utilizado neste trabalho.
8

Figura 4.1 – Datapath utilizado no projeto

4.3 Entrada e Saída

A arquitetura MIPS de 32 bits é comumente utilizada em projetos FPGA devido à sua


eficiência e versatilidade. Os processadores MIPS de 32 bits oferecem um bom equilíbrio entre
desempenho e consumo de recursos em dispositivos FPGA.
No contexto do FPGA, é importante considerar também o formato de dados e a largura
dos barramentos. A arquitetura MIPS de 32 bits utiliza instruções e registradores de 32 bits, o
que significa que os dados e instruções serão processados em palavras de 32 bits. Isso influencia
diretamente o design e a implementação do sistema, incluindo o layout do barramento de dados
e a alocação de recursos no FPGA.
Além disso, é relevante mencionar que as entradas e saídas do sistema serão os switches,
botões, LEDs, displays de 7 segmentos e o display LCD. Esses componentes serão utilizados
para interagir com o sistema, permitindo entrada de dados, controle e visualização de
informações. A integração desses dispositivos com o processador MIPS no FPGA requer uma
cuidadosa configuração dos pinos de entrada e saída, bem como o desenvolvimento de
interfaces de comunicação adequadas para garantir uma interação eficiente e confiável do
sistema com o ambiente externo.
9

5 CONCLUSÃO

As etapas iniciais do projeto abordaram os aspectos fundamentais da arquitetura,


incluindo o conjunto de instruções, o datapath e a organização da memória, juntamente com as
entradas e saídas do processador. Com isso, estabeleceu-se a estrutura necessária para interação
com o sistema, permitindo a entrada de dados e a visualização de resultados conforme o
algoritmo carregado na memória de instruções. Cada instrução é processada pelo processador,
que realiza os cálculos e exibe os resultados, representando a base funcional do sistema.
Para as próximas etapas do projeto, está prevista a implementação da unidade de
processamento em Verilog, utilizando a arquitetura definida no relatório. Isso inclui o
desenvolvimento da Unidade Lógica e Aritmética (ULA), dos bancos de registradores e das
memórias, os quais devem funcionar integralmente no Kit FPGA. Essa fase de implementação
é crucial para a concretização do projeto, uma vez que transformará os conceitos teóricos em
uma implementação prática e funcional do processador MIPS no ambiente FPGA.
10

6 REFERÊNCIAS

1 STALLINGS, William. Arquitetura e Organização de Computadores. Editora Pearson,


2010. E-book. ISBN: 9788576055648. Disponível em:
https://plataforma.bvirtual.com.br/Leitor/Publicacao/1247/pdf/0 . Acesso em 17 abr.2024
2 HENNESSY, John. Organização e Projeto de Computadores. Grupo GEN, 2017.
E-book. ISBN 9788595152908. Disponível em:
https://integrada.minhabiblioteca.com.br//books/9788595152908/. Acesso em: 17 abr. 2024.

Você também pode gostar