CPU-8E - Specs - v2.0

9
UCP-8E-v2.2 Uma UCP educacional de 8-bits Copyright © 2009/10 Joel Guilherme da Silva Filho. É concedida a permissão para copiar, distribuir e modificar este documento sob os termos da ‘Licença para Documentação Livre GNU, “GNU Free Documentation License” (Copyleft), Versão 1.3 ou subsequente, publicada pela Free Software Foundation. Uma cópia desta licença acompanha este documento na forma do arquivo texto denominado “Copiando(FDL).txt”. a. Objetivos: Especificar uma UCP (Unidade Central de Processamento) de 8-bits para fins educacionais, de forma a permitir sua implementação de diversas formas e em diversos ambientes, como, por exemplo, na forma de um simulador em software ou em um ambiente de hardware simulado como o MMLogic 1 ., ou mesmo em hardware real. Uma vez tendo-se uma implementação desta UCP, a mesma pode ser utilizada em um curso de Arquitetura de Computadores, não somente como exemplo, mas como um exemplo vivo que poderá ser totalmente manuseado pelo aluno, inclusive com alterações do projeto e acréscimo de novas funcionalidades. b. Motivações: Em nossa experiência lecionando a disciplina de graduação “Arquitetura de Computadores”, temos feito uso de diversos simuladores ou monitores para UCPs reais e virtuais como ferramentas auxiliares para o ensino da disciplina, tanto como ferramenta de demonstração, em aulas teóricas, quanto como ferramenta de trabalho em aulas práticas. Infelizmente nenhuma das ferramentas que tivemos até hoje à nossa disposição reunem, simultaneamente, as características de descreverem uma arquitetura simples porém representativa de uma arquitetura clássica típica de um modelo de von Neuman, facilidade de uso, possibilidade de visualização e acompanha- mento de todas fases de execução de uma instrução, e facilidade de programação utilizando uma ferramenta de montagem similar aos assemblers para UCPs reais. Em função desta experiência, julgamos que seria conveniente definirmos uma nova UCP, com recursos suficientes para exemplificar as características básicas e o modo de operação de um pequeno processador, e com possibilidades de ser também implementada com facilidade, tanto em software (simulador), quanto em hardware (simulado ou real), contemplando aquelas características mencionadas para uma ferramenta educacional. Além disto, procuramos deixar amplo espaço para que o projeto possa ser ampliado ou modificado, particularmente na forma de exercícios e projetos práticos inseridos em uma disciplina que cubra este assunto nas áreas de engenharia ou ciência da computação. Assim é que nasceu este projeto, denominado CPU-8E (CPU Educacional de 8 Bits), do qual este documento é o documento central, onde são apresentadas as especificações da UCP a nível de arquitetura, assim como a definição da Unidade de Controle (UC) a nível de microoperações. Este projeto é uma evolução de uma experiência anterior nossa, em que alunos de nossa disciplina no curso de Engenharia do IESB (Instituto de Educação Superior de Brasília) tiveram excelente experiência no desenvolvimento de um projeto semelhante a este, embora menos ambicioso. Para possibilitar plenamente o uso da CPU-8E como ferramenta educacional, fazem parte deste pacote, juntamente com estas especificações, um simulador (CUP8E Simulator) e um assembler (ASM8E), para permitir o manuseio prático da CPU-8E. c. Especificações Básicas da CPU-8E: Esta é a versão 2.2 da CPU-8E, que contem a primeira alteração efetiva de suas especificações, ampliando seu conjunto de instruções de 20 para 35 Opcodes distintos, desde a versão 0.9 1 MMLogic (MultiMedia Logic), programa freeware e opensource da Softronix para simulação de circuitos lógicos digitais (http://www.softronix.com/logic.html). Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Transcript of CPU-8E - Specs - v2.0

Page 1: CPU-8E - Specs - v2.0

UCP-8E-v2.2Uma UCP educacional de 8-bits

Copyright © 2009/10 Joel Guilherme da Silva Filho.

É concedida a permissão para copiar, distribuir e modificar este documento sob os termos da ‘Licença para Documentação Livre GNU, “GNU Free Documentation License” (Copyleft), Versão 1.3 ou subsequente, publicada pela Free Software Foundation. Uma cópia desta licença acompanha este documento na forma do arquivo texto denominado “Copiando(FDL).txt”.

a. Objetivos:Especificar uma UCP (Unidade Central de Processamento) de 8-bits para fins educacionais,

de forma a permitir sua implementação de diversas formas e em diversos ambientes, como, por exemplo, na forma de um simulador em software ou em um ambiente de hardware simulado como o MMLogic1., ou mesmo em hardware real. Uma vez tendo-se uma implementação desta UCP, a mesma pode ser utilizada em um curso de Arquitetura de Computadores, não somente como exemplo, mas como um exemplo vivo que poderá ser totalmente manuseado pelo aluno, inclusive com alterações do projeto e acréscimo de novas funcionalidades.

b. Motivações:Em nossa experiência lecionando a disciplina de graduação “Arquitetura de Computadores”,

temos feito uso de diversos simuladores ou monitores para UCPs reais e virtuais como ferramentas auxiliares para o ensino da disciplina, tanto como ferramenta de demonstração, em aulas teóricas, quanto como ferramenta de trabalho em aulas práticas. Infelizmente nenhuma das ferramentas que tivemos até hoje à nossa disposição reunem, simultaneamente, as características de descreverem uma arquitetura simples porém representativa de uma arquitetura clássica típica de um modelo de von Neuman, facilidade de uso, possibilidade de visualização e acompanha-mento de todas fases de execução de uma instrução, e facilidade de programação utilizando uma ferramenta de montagem similar aos assemblers para UCPs reais.

Em função desta experiência, julgamos que seria conveniente definirmos uma nova UCP, com recursos suficientes para exemplificar as características básicas e o modo de operação de um pequeno processador, e com possibilidades de ser também implementada com facilidade, tanto em software (simulador), quanto em hardware (simulado ou real), contemplando aquelas características mencionadas para uma ferramenta educacional. Além disto, procuramos deixar amplo espaço para que o projeto possa ser ampliado ou modificado, particularmente na forma de exercícios e projetos práticos inseridos em uma disciplina que cubra este assunto nas áreas de engenharia ou ciência da computação.

Assim é que nasceu este projeto, denominado CPU-8E (CPU Educacional de 8 Bits), do qual este documento é o documento central, onde são apresentadas as especificações da UCP a nível de arquitetura, assim como a definição da Unidade de Controle (UC) a nível de microoperações. Este projeto é uma evolução de uma experiência anterior nossa, em que alunos de nossa disciplina no curso de Engenharia do IESB (Instituto de Educação Superior de Brasília) tiveram excelente experiência no desenvolvimento de um projeto semelhante a este, embora menos ambicioso. Para possibilitar plenamente o uso da CPU-8E como ferramenta educacional, fazem parte deste pacote, juntamente com estas especificações, um simulador (CUP8E Simulator) e um assembler (ASM8E), para permitir o manuseio prático da CPU-8E.

c. Especificações Básicas da CPU-8E:Esta é a versão 2.2 da CPU-8E, que contem a primeira alteração efetiva de suas especificações, ampliando seu conjunto de instruções de 20 para 35 Opcodes distintos, desde a versão 0.9

1 MMLogic (MultiMedia Logic), programa freeware e opensource da Softronix para simulação de circuitos lógicos digitais (http://www.softronix.com/logic.html).

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Page 2: CPU-8E - Specs - v2.0

original de 01/02/2009.Esta versão apresenta as seguintes especificações básicas:

• palavras de 8-bits (Byte);• operação com Acumulador, ACC, obrigatoriamente fonte e destino de qualquer instrução

envolvendo operações aritméticas/lógicas com a ULA (Unidade Lógica e Aritmética);• ULA de 8 bits, operando com inteiros em complemento de 2 (-128 a +127);• Instruções de 1 ou 2 palavras:

o 1 palavra: a instrução contém apenas um OpCode de 8-bits;o 2 palavras; a instrução contém um OpCode de 8-bits mais uma segunda palavra de 8

bits definindo um operando com endereçamento imediato ou direto. O endereçamento direto permite acessar 256 palavras de 8-bits (Bytes) na memória principal.

• Estrutura de “pilha” no topo da memória principal, para permitir chamadas de sub-rotinas, endereçada por um Stack Pointer.

d. Diagrama de Blocos da CPU-8E:Os seguintes blocos de componentes são utilizados para a construção desta versão da UCP-8E:• Memória Principal – externa, com 256 Bytes, endereçáveis por um Barramento de Ende-

reços (BE) de 8-bits e transferência de dados por um Barramento de Dados (BD) também de 8-bits.

• ULA – unidade lógica e aritmética, implementando as operações aritméticas de Soma e Subtração (em complemento de 2) e as operações lógicas AND, OR, XOR, NOT, SHL, SHR, SRA, ROL e ROR. Além dos resultados das operações, a ULA alimenta três bits de status: Z, indicativo de que a última operação deu um resultado nulo (zero); N, indicativo que o resultado é um número negativo; e C, indicativo de que ocorreu um carry do bit mais significativo. Os bits de status permanecem válidos enquanto não for realizada outra operação envolvendo a ULA.

• MAR – registrador de 8-bits, responsável por manter o endereço da palavra em memória a ser acessada, para leitura ou escrita.

• MDR – registrador de 8-bits, responsável por receber os dados lidos da memória ou conter os dados a serem escritos na memória.

• PC – registrador de 8-bits, responsável por conter o endereço da próxima instrução a ser lida da memória. O PC opera normalmente como um contador, podendo receber também um valor específico, no caso de instruções do tipo Jump. Na inicialização, o endereço contido no PC será zero, que deve ser o endereço inicial do programa em memória a ser executado.

• SP – ponteiro da pilha (Stack Pointer), aponta para a posição atual disponível na pilha (topo da pilha), que é implementada na memória alta, sendo inicializado com o valor FFH. A pilha, em conjunto com o SP, é utilizada apenas para controle de chamada de procedimentos (sub-rotinas), quando o PC é salvo no topo da pilha na execução da instrução Call e recuperado na execução da instrução Return.

• ACC – registrador acumulador de 8-bits que opera como destino dos operandos lidos em memória e fonte dos operandos a serem escritos na memória. Nas operações lógicas e aritméticas é também fonte de um dos operandos e destino do resultado.

• A – registrador de 8-bits que serve como armazenamento temporário para o primeiro operando (correspondente ao ACC) nas operações com a ULA.

• B – registrador de 8-bits que serve como armazenamento temporário para o segundo operando nas operações com a ULA e como contador nas operações de Shifts e Rotates.

• RI – registrador de instruções, de 8-bits, que armazena o OpCode da instrução presentemente sendo executada pela UCP.

• DI – decodificador de instrução, composto pela lógica necessária para decodificar cada possível instrução contida no RI.

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Page 3: CPU-8E - Specs - v2.0

• UC – unidade de controle, composta pela lógica necessária para a geração dos sinais de controle apropriados para o sequenciamento das microoperações que constituirão a execução de cada possível instrução.

• Clock – gerador da temporização primária para a UC.

Todas estas unidades são devidamente interconectadas por um barramento interno (BI) e os necessários sinais de controle que irão gerar a execução das microoperações descritas mais adiante, que levarão à execução das instruções contidas em um programa armazenado em memória. A figura 1 abaixo ilustra o diagrama de blocos de CPU.

figura 1. Diagrama de Blocos da CPU-8E-v2.0.

e. Conjunto de Instruções:Na tabela-1 que se segue, a coluna “Mnem” indica o menmônico da instrução; “Bytes” indica o número de bytes que compõem a instrução, sendo sempre o primeiro o OpCode, e o segundo, se existente, especifica o operando; “Descrição” descreve a operação correspondente; e “End” indica as opções de endereçamento disponível: I = imediato, D = direto.

Tabela-1: conjunto de instruções da CPU-8Ev2.2.Mnem Bytes Descrição End

.HLT 1 Halt – Pára: interrompe a operação do processador. -NOP 1 No Operation – Nenhuma Operação: nenhuma operação é realizada. -NOT 1 NOT – Negação: realiza o ‘NOT’ lógico, bit-a-bit, do ACC. -RET 1 Return – Retorno de Procedimento: retorna de procedimento chamado -JMP 2 Jump – Salto incondicional: salta para instrução especificada. DJEQ 2 Jump if Equal – Salte se Igual: salta para instrução especificada se Z = 1. DJGT 2 Jump if Greater – Salte se Maior: salta se (N = 0) ∧ (Z = 0). DJGE 2 Jump IF Greater or Equal – Salte se Maior ou Igual: salta se (N = 0). DJCY 2 Jump if Carry – Salte se carry setado (C = 1). DCAL 2 Call – Chamada de Procedimento: desvia para procedimento no endereço indicado DSHL 2 Shift-Left – desloca ACC à esquerda no de bits especificado pelo operando. I/DSHR 2 Shift-Right – desloca ACC à direita no de bits especificado pelo operando. I/DSRA 2 Shift-Right-Arithmetic – desloca ACC à direita em modo aritmético (mantém sinal). I/DROL 2 Rotate-Left – rotaciona ACC à esquerda no de bits especificado pelo operando. I/DROR 2 Rotate-Right – rotaciona ACC à direita no de bits especificado pelo operando. I/D

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Page 4: CPU-8E - Specs - v2.0

STO 2 Store – Armazena: armazena o ACC no endereço indicado em memória. DLOD 2 Load – Carrega: carrega o ACC com o operando. I/DCMP 2 Compare – Compara ACC com operando, setando flags de acordo. Não altera ACC.2 I/DADD 2 Add – Soma: soma o conteúdo do ACC com o operando. I/DSUB 2 Subtract – Subtrai: subtrai o operando do ACC. I/DAND 2 AND – E: realiza o ‘AND’ lógico, bit-a-bit, do ACC com o operando. I/DXOR 2 XOR – XOR: realiza o ‘XOR’, bit-a-bit, do ACC com o operando. I/DORL 2 OR – OU: realiza o ‘OR’ lógico, bit-a-bit, do ACC com o operando. I/D

f. Códigos de Operação (OpCodes)Para simplificar a decodificação das instruções, as seguintes atribuições de bits foram feitas:• I7: Indica instrução de uma/duas palavras (0/1);• I6: Indica endereçamento imediato/direto (0/1);• I5: Não utilizados nesta versão;• I4-I0: Atribução de códigos individuais para cada instrução. As lacunas na sequência de

codificação são propositais, para exercícios ou futuras expansões do conjunto de instruções da CPU-8E.

A tabela a seguir ilustra a atribuição de códigos para cada operação definida.

Tabela-2: Códigos de Operação (OpCodes) para a CPU-8Ev2.2.I7 I6 I5 I4 I3 I2 I1 I0 OpCode Hex Flags afetados0 0 0 0 0 0 0 0 HLT 00 -0 0 0 0 0 0 0 1 NOP 01 -0 0 0 0 0 0 1 0 NOT 02 Z,N,C0 0 0 0 0 0 1 1 RET 03 -1 1 0 0 0 1 0 0 JMP C4 -1 1 0 0 0 1 0 1 JEQ C5 -1 1 0 0 0 1 1 0 JGT C6 -1 1 0 0 0 1 1 0 JGE C7 -1 1 0 0 0 0 1 1 JCY C8 -1 1 0 0 0 0 0 1 CAL C9 -1 X 0 0 1 0 1 0 SHL 8A/CA Z,N,C1 X 0 0 1 0 1 1 SHR 8B/CB Z,N,C1 X 0 0 1 1 0 0 SRA 8C/CC Z,N,C1 X 0 0 1 0 1 1 ROL 8D/CD Z,N,C1 X 0 0 1 1 0 0 ROR 8E/CE Z,N,C1 1 0 0 0 0 0 0 STO D0 -1 X 0 1 0 0 0 1 LOD 91/D1 Z,N,C1 X 0 1 0 1 0 0 CMP 94/D4 -1 X 0 1 0 1 0 1 ADD 95/D5 Z,N,C1 X 0 1 0 1 1 0 SUB 96/D6 Z,N,C1 X 0 1 1 0 1 0 AND 9A/DA Z,N,C1 X 0 1 1 0 1 1 XOR 9B/DB Z,N,C1 X 0 1 1 1 0 0 ORL 9C/DC Z,N,C

Realçado em amarelo as novas instruções introduzidas nesta versão.

Temos portanto 23 instruções e 35 opcodes distintos definidos, do total de 256 possíveis, sendo 4 correspondentes a instruções de uma só palavra (HLT, NOP, NOT e RET), 7 instruções de duas palavras com endereçamento direto apenas (JMP, JEQ, JGT, JGE, JCY, CAL e STO), e 12

2 A operação compare é realizada subtraindo-se do acumulador o valor do operando, afetando os bits de flag de acordo com o resultado mas sem alterar o valor do acumulador.

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Page 5: CPU-8E - Specs - v2.0

instruções de duas palavras que aceitam tanto endereçamento direto quanto imediato (SHL, SHR, SRA, ROL, ROR, LOD, CMP, ADD, SUB, OR, AND e XOR).Obs.: Quando assinalado com X, o bit I6 indica que podemos ter endereçamento imediato ou direto para o operando na instrução em questão.

Como notação simbólica para diferenciar os operandos com endereçamento direto dos com endereçamento imediato sugerimos que estes últimos sejam representados por ‘X’, indicando que o valor do operando é ‘X’ e este segue o OpCode, enquanto os primeiros serão indicados por ‘[X]’, indicando que o valor ‘X’, contido na instrução, representa o endereço do operando em memória. Como exemplo, poderíamos ter

LOD 15 ; indica o carregamento do acumulador com o valor imediato ‘15’LOD [15] ; indica o carregamento do acumulador com o valor contido no endereço

; de memória ‘15’, ou seja M[15]

g. Ciclo de Instrução:Com estas definições, podemos determinar as microperações necessárias para a execução de cada uma das instruções especificadas. Consideramos aqui que em uma primeira fase do ciclo de instruções será feito o fetch do OpCode, em uma segunda fase a obtenção do endereço do operando, se especificado, e em uma terceira fase, ou fase final, a execução da instrução.Instruções são dos tipos: ‘Oper’, ‘Oper X’, ou ‘Oper [X]’, onde “Oper” indica uma das instru-ções definidas e X é o operando ou o endereço do operando, se presente. As fases de processa-mento de uma instrucão serão controladas por uma máquina de estados finitos de 4 (quatro), designados por S. A saída de 2 (dois) Flip-Flops representarão os estados, como abaixo indicados.

(S = 00) Busca (fetch) da Instrução (obtém o OpCode):t0: MAR PC ; Endereça a instruçãot1: MDR M(MAR) ; Lê o OpCode

PC PC+1 ; Aponta para a próxima palavra em memóriat2: IR MDR ; IR contém agora o OpCodeS´ = (‘01’I7) (‘10’ 7I )

(S = 01) Obtenção do endereço do operandoSe I7 = 1, operando especificado (2 palavras)

t0: MAR PC ; MAR contém endereço do operando ou de seu endereço (endereço da palavra que segue o OpCode)

t1: PC PC+1 ; Aponta para a próxima palavra em memóriat1I6: MDR M(MAR) ; Se end. Direto, carrega endereço do operandot2I6: MAR MDR ; MAR contém agora endereço do operandoS´ = ‘10’

(S = 10) Execução das Instruções:• HLT

t0: “STOP”• NOP

t0: -• NOT

t0: A ACCt1: ACC ULA(A,NOT) ; Negação Lógica do ACC

• RETt0: SP SP+1 ; Incrementa Stack Pointert1: MAR SP ; Endereça último elemento da pilha

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Page 6: CPU-8E - Specs - v2.0

t2: MDR [MAR] ; Lê endereço de retornot3: PC MDR ; Faz um jump de retorno

• JMPt0: PC MAR ; Jump incondicional

• JEQt0Z: PC MAR ; Salta se Z=1

• JGTt0[/(NZ)]: PC MAR ; Salta se N=0 e Z=0

• JGEt0[/(N)]: PC MAR ; Salta se N=0

• JCYt0C]: PC MAR ; Salta se C=1

• CALt0: MDR PC ; Endereço de retornot1: PC MAR ; Endereço da rotina chamada

MAR SP ; Endereça topo da pilhat2: M[MAR] MDR ; Salva endereço de retorno na pilhat3: SP SP-1 ; Nono topo da pilha

PC MDR ; Recupera endereço de retorno (Jump)• SHL

t0: MDR M[MAR] ; Lê contagem para o ShiftA ACC

t1: B MDRt2: ACC ULA(A,B,SHL) ; Deslocamento à esquerda do ACC

• SHRt0: MDR [MAR] ; Lê contagem para o Shift

A ACCt1: B MDRt2: ACC ULA(A,B,SHR) ; Deslocamento à direita do ACC

• SRAt0: MDR [MAR] ; Lê contagem para o Shift

A ACCt1: B MDRt2: ACC ULA(A,B,SRA) ; Deslocamento à esquerda do ACC

• ROLt0: MDR [MAR] ; Lê contagem para o Rotate

A ACCt1: B MDRt2: ACC ULA(A,B,ROL) ; Rotação à esquerda do ACC

• RORt0: MDR [MAR] ; Lê contagem para o Rotate

A ACCt1: B MDRt2: ACC ULA(A,B,ROL) ; Rotação à direita do ACC

• STOt0: MDR ACC ; Operando é o ACCt1: [MAR] MDR ; ACC armazenado em memória

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Page 7: CPU-8E - Specs - v2.0

• LODt0: MDR [MAR] ; Lê operandot1: A MDRt2: ACC ULA(A,B,A) ; Carrega A em ACC, via ULA

• CMPt0: MDR [MAR] ; Lê segundo operando

A ACCt1: B MDRt2: ULA(A,B,−) ; Subtrai operandos, sem alterar ACC

• ADDt0: MDR [MAR] ; Lê segundo operando

A ACCt1: B MDRt2: ACC ULA(A,B,+) ; Soma operandos

• SUBt0: MDR [MAR] ; Lê segundo operando

A ACCt1: B MDRt2: ACC ULA(A,B,−) ; Subtrai operandos

• ANDt0: MDR [MAR] ; Lê segundo operando

A ACCt1: B MDRt2: ACC ULA(A,B,AND) ; E Lógico dos operandos

• XORt0: MDR [MAR] ; Lê segundo operando

A ACCt1: B MDRt2: ACC ULA(A,B,XOR) ; XOR Lógico dos operandos

• ORLt0: MDR [MAR] ; Lê segundo operando

A ACCt1: B MDRt2: ACC ULA(A,B,OR) ; OU Lógico dos operandos

Obs.: O estado seguinte ao término da execução de qualquer instrução é o estado S = ‘00’, exceto pela instrução Halt, que leva ao estado S = ‘11’, do qual o sistema sairá apenas por um Reset por “hardware”.

(S = 11) UCP parada (resultado de um Halt):• Nenhuma operação é realizada, ficando a UCP indefinidamente neste estado até que um

Reset por hardware seja executado.

h.Detalhamento da Unidade de Controle e Decodificador de InstruçõesO decodificador de instruções terá a seguinte lógica, de acordo com os códigos atribuídos:DW = I7 → Indica instrução de 2 palavrasED = I6 → Indica endereçamento diretoHLT = I 4 I 3 I 2 I 1 I 0 → Operação HaltNOP = I 4 I 3 I 2 I1 I 0 → Operação NOPNOT = I 4 I 3 I 2 I 1 I 0 → Operação NOT

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

Page 8: CPU-8E - Specs - v2.0

RET = I 4 I 3 I 2 I 1 I 0 → Operação RETJMP = I 4 I 3 I 2 I1 I 0 → Operação JumpJEQ = I 4 I3 I 2 I 1 I 0 → Operação Jump if EqualJGT = I 4 I3 I 2 I 1 I 0 → Operação Jump if GreaterJGE = I 4 I 3 I 2 I1 I 0 → Operação Jump if Greater or EqualJCY = I 4 I 3 I 2 I1 I 0 → Operação Jump if Carry SetCAL = I 4 I3 I 2 I 1 I 0 → Operação Call RoutineSHL = I 4 I3 I 2 I 1 I 0 → Operação Shift LeftSHR = I 4 I 3 I 2 I1 I 0 → Operação Shift RightSRA = I 4 I3 I 2 I 1 I 0 → Operação Shift Right ArithmeticROL = I 4 I3 I 2 I 1 I 0 → Operação Rotate LeftROR = I 4 I 3 I 2 I 1 I 0 → Operação Rotate RightSTO = I 4 I 3 I 2 I1 I 0 → Operação StoreLOD = I 4 I3 I 2 I 1 I 0 → Operação LoadCMP = I 4 I3 I 2 I 1 I 0 → Operação LoadADD = I 4 I3 I 2 I 1 I 0 → Operação AddSUB = I 4 I 3 I 2 I 1 I 0 → Operação SubtractAND = I 4 I 3 I 2 I 1 I 0 → Operação ANDXOR = I 4 I 3 I 2 I 1 I 0 → Operação XORORL = I 4 I 3 I 2 I 1 I 0 → Operação OR

A máquina de estados da UC terá o seguinte comportamento:Estado (S1S0) Entrada Próximo Estado

00T1 = S1 S 0∧t2∧DW 01T2 = S1 S 0∧t2∧DW 10

01 T3 = S1 S 0 ( t1 ED t2 ED ) 10

10T4 = S1 S 0 [(NOPJMPJEQJGTJGEJCY)t0(LODSTONOT)t1(ADDSUBANDXOR)t2]

00

T5 = S1 S 0 ∧HLT∧t0 1111 X 11XX RESET 00

correspondendo à seguinte máquina de estado:

fgura 2: Máquina de Estados da UC.

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010

0

10

1

T1

T2

T3

T5

T4

X

Reset

Page 9: CPU-8E - Specs - v2.0

i. Histórico• v0.9 de 01/02/2009 – primeira versão implementada em um simulador por software,

acompanhada do correspondente assembler;• v1.0a de 04/02/2009 - primeira revisão, com pequenas correções;• v1.0b de 04/03/2009 - revisão da sequência de controle;• v2.0 de 17/10/2010 - esta versão, com ampliação do conjunto de instruções.

Contribuiram para esta ampliação:- Anderson de S. Freitas ([email protected])- Daniel M. Vasconcelos ([email protected])

Autor: Prof. Joel Guilhermeda Silva Filhoe-mail: [email protected]

Organizaçào: IESB – Instituto de Educação Superior de BrasíliaLocal: Brasília/DF – Brasil

Prof. Joel Guilherme UCP8E-V2.2 - 16/10/2010