ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Computador Cleópatra Interface Hardware e Software Alexandre Amory Edson Moreno
2 / 9 Nas Aulas Anteriores Vimos como descrever e implementar circuitos combinacionais Como descrever a ULA da Cleo usando lógica combinacional Vimos como descrever e implementar circuitos sequenciais e máquinas de estados
3 / 9 Na Aula de Hoje Retomamos a Arquitetura Cleópatra Foco no fluxo de dados/instruções internamente ao processador Como as instruções Assembly são executadas Relação: instrução+me com a máquina de estados e ULA
4 / 9 Arquitetura Cleópatra - Von Neumann CPU ck µinst BLOCO DE CONTROLE n z c v IR PROGRAMA ARMAZENADO - dados - instruções ck reset ce rw µinst n z c v IR ck reset BLOCO DE DADOS dados endereços MEMÓRIA dados e programa
5 / 9 Bloco de Dados µinst n z c v IR DATAMEM escreve na memória CE RW ck reset Bloco de Dados ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
6 / 9 Bloco de Controle CPU ck BLOCO DE CONTROLE µinst n z c v IR ck reset ce rw µinst ck reset n z c v IR BLOCO DE DADOS dados endereços MEMÓRIA dados e programa
7 / 9 Diagrama de Estados da Cleo
8 / 9 Cleo: Carrega Endereço da Instrução Memória CPU ADD #5 200 ADD, # 201 5 PC 200 200 MAR
9 / 9 Cleo: Carrega Endereço da Instrução DATAMEM escreve na memória CE RW ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
10 / 9 Cleo: Lê Instrução da Memória Memória CPU ADD #5 200 ADD, # 201 5 endereço dado MAR 200 MDR ADD, I
11 / 9 Cleo: Lê Instrução da Memória DATAMEM escreve na memória CE RW ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
12 / 9 Cleo: Decodifica Instrução Memória CPU ADD #5 200 ADD, # 201 5 IR ADD, I MDR ADD, I
13 / 9 Cleo: Decodifica Instrução DATAMEM escreve na memória CE RW ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
14 / 9 Cleo: Inicia Busca do Operando Memória CPU ADD #5 200 ADD, # 201 5 PC 201 201 MAR
15 / 9 Cleo: Inicia Busca do Operando DATAMEM escreve na memória CE RW ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
16 / 9 Cleo: Leitura do Operando Memória CPU ADD #5 200 ADD, # 201 5 endereço dado MAR 201 MDR 5
17 / 9 Cleo: Leitura do Operando DATAMEM escreve na memória CE RW ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
18 / 9 Cleo: Realiza a Operação CPU AC AC + MDR MDR 5
19 / 9 DATAMEM escreve na memória Cleo: ADD Imediato CE RW ADDRESS Exemplo: ADD #5 lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
20 / 9 Datapath Cleo ULA DATAMEM escreve na memória CE RW ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
21 / 9 Bloco de Controle - Máquina de Estados Finita
22 / 9 Modo de Endereçamento Imediato Operando é o próprio dado Usado para representar constantes Direto Ex.: Número 45 do trecho de código C Operando é endereço do dado Usado para representar variáveis Ex. Variável entrada do trecho de código C int valor; int *p = &valor; int entrada = 8; *p = entrada + 45; Indireto Operando é endereço do endereço do dado Usado para representar ponteiros Ex. Ponteiro *p (que aponta para valor) do trecho de código C
23 / 9 Descrição das Instruções Mnemônico NOT STA oper LDA oper ADD oper OR oper AND oper JMP oper JC oper JV oper JN oper JZ oper JSR oper RTS HLT Operação Complementa (inverte) todos os bits de AC. Armazena AC na memória dada por oper. Carrega AC com conteúdos de memória da posição dada por oper. Adiciona AC ao conteúdo da memória dada por oper. Realiza OU lógico do AC com conteúdo da memória dada por oper. Realiza E lógico do AC com conteúdo da memória dada por oper. PC recebe dado especificado por oper (desvio incondicional). Se C=1, então PC recebe valor dado por oper (desvio condicional). Se V=1, então PC recebe valor dado por oper (desvio condicional). Se N=1 então PC recebe valor dado por oper (desvio condicional). Se Z=1, então PC recebe valor dado por oper (desvio condicional). RS recebe conteúdo de PC e PC recebe dado de oper (subrotina). PC recebe conteúdos de RS (retorno de subrotina). Suspende processo de busca e execução de instruções.
24 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C, JAVA) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I
25 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C, JAVA) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I Carrega a variável A no reg interno
26 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C, JAVA) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I Soma o conteúdo do reg interno (A) com a constante 3. o resultado é salvo no reg interno. Utiliza Modo Imediato.
27 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C, JAVA) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I Carrega conteúdo do reg interno (A+3) na variável C
28 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I
29 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I
30 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I DATAMEM escreve na memória CE RW ADDRESS lê da memória 0 mux 1 sel MAR MDR IR BUS_B BUS_A CE RW PC AC RS w Codificação de escrita ULA u lnz lcv r Codificação de leitura NZCV
31 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I
32 / 9 Meu Primeiro Prog Assembly Linguagem alto nível (e.g. C) *C = A+3 Assembly da Cleo LDA A ADD #3 STA C,I
33 / 9 Resumo Como um programa Assembly é executado O que acontece dentro do processador durante a execução de uma instrução