INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA Engenharia de Eletrónica e Telecomunicações e de Computadores e Engenharia Informática e de Computadores INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA 1.º Trabalho Prático de Arquitetura de Computadores Estudo de um processador 3 de outubro de 2016
1 Objetivos Este trabalho prático tem como principal objetivo o estudo do funcionamento de um processador. Neste contexto, são abordadas as problemáticas de uma codificação eficiente de um ISA, o projeto do correspondente descodificador de instruções para a unidade de controlo do processador e a codificação de programas usando a linguagem máquina. 2 Descrição da arquitetura O processador considerado neste trabalho, que é de ciclo único, implementa uma arquitetura de Harvard a 8 bits, em que as instruções são codificadas com 12 bits e a memórias de dados e de código contêm, respetivamente, 256 e 1024 posições. A arquitetura disponibiliza ao programador quatro registos de uso geral (r0, r1, r2 e r3) e uma Unidade Lógica e Aritmética (ALU) com capacidade para realizar duas operações aritméticas (soma e subtração) e duas operações lógicas (AND e XOR), conforme é ilustrado na Figura 1 do Anexo A. A arquitetura inclui ainda um registo de estado do processador (PSW) que disponibiliza os indicadores zero (Z) e transporte (C). A Tabela 1 apresenta o conjunto de instruções suportado pela arquitetura, em que: rx, ry e rz representam um dos quatro registos de uso geral do processador (r0, r1, r2, r3); const4 simboliza o valor de uma constante, codificada com 4 bits sem sinal; direct6 e direct8 simbolizam os valores de constantes, codificadas sem sinal com 6 bits e 8 bits, respetivamente, que são usadas como parte de menor peso na síntese de endereços de memória (os bits de maior peso dos endereços são colocados a zero); offset8 simboliza o valor de uma constante, codificada com 8 bits com sinal, que é usada como parte de menor peso na síntese do endereço relativo de memória (os bits de maior peso são estendidos com o bit de sinal). Instrução Descrição ldi rx, #const6 Carrega o valor da constante const6 no registo rx. rx const6 ld rx, [ry, #const4] st rx, direct6 Transfere para rx o conteúdo da posição de memória cujo endereço é definido pela soma do conteúdo de ry com a constante const4. Transfere o conteúdo de rx para a posição de memória com endereço direct6. rx mem[ry + const4] mem[direct6] rx add rx, ry, rz Adiciona ry e rz e coloca o resultado em rx. rx ry + rz sub rx, ry, #const4 Subtrai const4 a ry e coloca o resultado em rx. rx ry - const4 anl rx, ry, rz xrl rx, ry, rz Realiza a operação lógica AND entre ry e rz e coloca o resultado em rx. Realiza a operação lógica XOR entre ry e rz e coloca o resultado em rx. rx ry AND rz rx ry XOR rz jnc offset8 jz offset8 Quando a flag C apresenta o valor 0, muda a execução para o endereço resultante da adição ao PC do deslocamento representado por offset8. Quando a flag Z apresenta o valor 1, muda a execução para o endereço resultante da adição ao PC do deslocamento representado por offset8. PC PC + offset8 se C == 0 PC PC + offset8 se Z == 1 jmp direct8 Muda a execução para o endereço representado por direct8. PC direct8 Tabela 1 Conjunto de instruções do processador. 1.º Trabalho Prático Projeto de um Processador 2
Na Tabela 2 apresenta-se a codificação de algumas instruções do ISA. Instrução b11 b8 b7 b6 b5 b4 b3 b2 b1 b0 ldi rx, #const6 1100 rx const6 ld rx, [ry, #const4] 0000 rx ry const4 add rx, ry, rz 0100 rx ry rz -- anl rx, ry, rz 0110 rx ry rz -- jnc offset8 1001 offset8 jz offset8 1010 offset8 jmp direct8 1011 direct8 opcode Tabela 2 Codificação das instruções. 3 Trabalho a realizar Respeitando o ISA e a microarquitetura apresentados, pretende-se completar o projeto do processador proposto e validar o seu correto funcionamento. Para tal, devem ser realizadas quatro tarefas. 3.1 Codificação das instruções do ISA Codifique as instruções st, sub e xrl apresentadas na Tabela 1, procurando minimizar a complexidade do circuito descodificador de instruções do processador. 3.2 Projeto do descodificador de instruções Projete o descodificador de instruções do processador, apresentando, numa tabela, o valor lógico das saídas deste circuito para cada uma das instruções descritas na Tabela 1. Os sinais obtidos diretamente da instrução, devem ser explicitados nessa tabela. 3.3 Realização do descodificador de instruções Usando o Logisim, implemente o subcircuito Instruction Decode descrito no ficheiro cpu.circ 1 concretizando as definições dos pontos anteriores e utilizando apenas uma ROM. 3.4 Teste da arquitetura Considere a seguinte sequência de instruções, que deverá utilizar para testar o funcionamento do processador utilizando a aplicação Logisim. ldi r0, #9 xrl r1, r1, r1 ld r2, [r0, #0] add r1, r1, r2 sub r0, r0, #1 jnc -3 st r1, 100 jmp 7 a) Usando uma linguagem de alto nível (e.g. Java ou C), escreva a função realizada por esta sequência de instruções. 1 O ficheiro cpu.circ está disponível na plataforma Thoth em anexo ao enunciado. 1.º Trabalho Prático Projeto de um Processador 3
b) Codifique as instruções apresentadas e carregue-as na memória de código do processador no Logisim. Carregue também as primeiras 10 posições da memória de dados com os números de aluno de dois elementos do grupo (um dígito por posição de memória). c) Execute o troço código no Logisim, registando os sinais à saída do descodificador de instruções para cada uma das suas instruções. Compare o resultado da execução do troço de código com o resultado esperado. 4 Avaliação O trabalho deve ser realizado em grupo e conta para a avaliação da unidade curricular. A apresentação da solução proposta por cada grupo decorre em sessão de laboratório, em data a combinar com o docente responsável pela lecionação das aulas da respetiva turma. Após esta apresentação, cada grupo deverá entregar o relatório do trabalho ao docente, no qual deve constar: Uma descrição sucinta da solução proposta, que deve ser acompanhada dos esquemas de todos os circuitos e subcircuitos desenvolvidos; As respostas às perguntas formuladas no enunciado; As conclusões. 1.º Trabalho Prático Projeto de um Processador 4
Anexo A. Diagramas de blocos Figura 1 Diagramas de blocos do processador. 1.º Trabalho Prático Projeto de um Processador 5
Figura 2 Diagrama de blocos do banco de registos. Figura 3 Diagrama de blocos da ALU. 1.º Trabalho Prático Projeto de um Processador 6