Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLucca Chaparro Alterado mais de 10 anos atrás
1
DCC 001 Programação de Computadores 2o Semestre de 2011
Aula Expositiva Processadores Micro-instruções Desvios Desvios Condicionais Instruções e Programação em Assembler DCC 001 Programação de Computadores 2o Semestre de 2011 Prof. Osvaldo Carvalho DCC
2
Uma Calculadora DCC
3
Uma Calculadora DCC
4
Calculadora Fluxos de Dados
As rotas de dados da calculadora permitem controlar diversos fluxos de dados, envolvendo a memória RAM, as entradas e saídas, o acumulador e os registradores de dados e de endereços O controle de fluxos é feito pelo usuário Logisim, que se encarrega de mudar de 0 para 1 ou de 1 para 0 os sinais de controle de posse de barramentos e de cópia de registradores, entrar com valores literais (endereços, valores a serem somados ou armazenados, …) no registrador In na sequência adequada ao efeito desejado DCC
5
Um Fluxo na Calculadora
Somar os conteúdos das posições 1 e 2 da memória, e colocar o resultado na posição 3 Etapas: Carregar no acumulador o conteúdo da posição 1 da RAM Somar ao acumulador o conteúdo da posição 2 da RAM Armazenar o conteúdo do acumulador na posição 3 da RAM DCC
6
Etapa 1: Carregar Entrada de literal DCC
7
Etapa 2: Somar Entrada de literal DCC
8
Etapa 3: Armazenar Entrada de literal DCC
9
Programa Armazenado DCC
10
A troca de programa não deve envolver modificações no circuito
Processador Processador: circuito de comportamento flexível, comandado por um programa O programa é escrito por um ser humano, que deseja resolver um problema de transformação de informação A troca de programa não deve envolver modificações no circuito DCC
11
Da Calculadora ao Processador
O programa em seu formato final deve ser também informação codificada em bits Para ser executado, o programa deve estar carregado em alguma memória Uma unidade de controle deve ser adicionada à calculadora Os sinais de controle (tomadas de barramentos, clocks de registradores, ...) devem ser emitidos pela unidade de controle de forma a obter a computação determinada pelo programa DCC
12
Programa como Codificação dos Sinais de Controle - 1
O programa fica armazenado como uma sequência de palavras em uma memória Por razões que veremos mais tarde, chamamos cada palavra destes programas de micro-instrução A cada bit da micro-instrução corresponde um sinal DCC
13
Programa como Codificação dos Sinais de Controle - 2
A unidade de controle implementa um ciclo de leitura em seqüência de micro-instruções da memória de programa Os bits de cada palavra lida são encaminhados para as saídas da unidade de controle, que estão ligadas aos pontos de controle da (ex-) calculadora DCC
14
Codificação dos Sinais de Controle em Micro-instruções
DCC
15
Contador de Programa Soma 1 Registrador DCC
16
Unidade de Controle Somente Sinais
Contador de Programa armazena o endereço da próxima micro-instrução a ser executada Memória de Programa DCC
17
Caixa de Música DCC
18
Valores Literais No uso da calculadora a intervenção do operador se dá também na entrada de valores literais (p. ex. um endereço de palavra a ser carregada, ou um valor a ser adicionado ao acumulador) Para eliminar esta necessidade de intervenção humana, uma unidade de controle deve permitir que estes valores já possam ser especificados no programa Os literais devem ser fornecidos pela unidade de controle à (ex) calculadora nos momentos adequados Por fornecer entenda-se: colocar no barramento DCC
19
Codificação de Operandos em Micro-Instruções
Sinal Adicional coloca Literal no Barramento Bit 23 indica se a palavra codifica um literal Literal nos 16 bits menos significativos = 2 DCC
20
CPU-0 Micro-Instruções
DCC
21
CPU-0: Nosso primeiro processador
DCC
22
CPU-0: Nosso primeiro processador
Calculadora Controle DCC
23
Unidade de Controle da CPU-0 Sinais e Literais
fornece tempos para atualizações: t0: PC t1: mIR t2: Sinais ou Literal Saída de Sinais Micro-instrução corrente Saída de Literal DCC
24
Carga de um Programa São programas chamados “loaders”, que lêm programas de discos ou de outra mídia, e os carregam na memória Sim, mas quem carrega o loader? Em computadores atuais, um loader primitivo fica gravado em uma memória ROM Este loader carrega outro loader mais sofisticado, que carrega outro mais sofisticado ainda, que carrega o sistema operacional Em computadores antigos, loaders eram carregados palavra por palavra, através do painel do computador DCC
25
Painel de um PDP11/70, de 1975 DCC
26
Logisim e Memórias No Logisim você pode: Escrever diretamente valores para posições de memória Ler de um arquivo um mapa da memória. Os valores de cada palavra da memória ficam escritos em hexadecimal no arquivo Nós vamos fazer uso destas possibilidades para carregar programas e para colocar valores em memórias DCC
27
Arquivo e Memória Logisim
DCC
28
Passos para a Programação da CPU-0
Em uma tabela com 24 posições, se bit 23 = 0, cada um dos outros bits deve ser igual a 1 se desejarmos ligar o sinal de controle correspondente bit 23 = 1, os 16 bits menos significativos codificam um operando Depois, cada micro-instrução (cada linha da tabela) é codificada em hexadecimal O código em hexadecimal é transferido para um arquivo No site vocês encontrarão uma planilha muito útil para isso DCC
29
Basta acrescentar ao programa mais passos de somas ao acumulador
Mais um Programa Queremos agora somar os conteúdos das posições 1, 2, 3, 4 e 5 da memória, colocando o resultado na posição 6 Basta acrescentar ao programa mais passos de somas ao acumulador DCC
30
Problema: o programa cresce quando o número de operações cresce!
Dois “programas” Soma de 2 parcelas Soma de 5 parcelas Problema: o programa cresce quando o número de operações cresce! DCC
31
Balanço – CPU-0 Sabíamos que podíamos realizar computações com a calculadora, aplicando manualmente os sinais de controle, e entrando também manualmente com operandos Mostramos que é possível automatizar essas operações, com o uso de uma unidade de controle impulsionada por um clock Problema: O programa cresce de tamanho com o número de operações que realiza Qual seria o tamanho de um programa que some um milhão de parcelas? DCC
32
CPU-1 Micro-Instruções de Desvio
DCC
33
CPU-1: Loops Para conseguir escrever programas cujo tamanho não cresça com o número de operações que realiza, precisamos alterar o nosso modelo de execução seqüencial de micro-instruções Vamos introduzir uma micro-instrução especial que desvia o fluxo de execução para um endereço designado na memória de programa Usando essa instrução de desvio, vamos construir um programa que repetidamente soma 1 ao acumulador DCC
34
Formato de Micro-instruções contemplando Desvios
Bit 23: Desvio? Bit 22: Literal? Micro-instrução de desvio para a posição 4 na memória de programa DCC
35
Unidade de Controle com micro-instrução de Desvio
DCC
36
Decisão sobre o próximo valor do PC
O Contador de Programa Endereço de Desvio Decisão sobre o próximo valor do PC DCC
37
CPU-1: Balanço Conseguimos construir programas que prescrevem a repetição de ações pela (ex-) calculadora Mas como fazer para interromper as repetições? Afinal, um loop precisa parar DCC
38
CPU-2 Micro-instruções de Desvio Condicional
DCC
39
CPU-2: Desvios Condicionais
Precisamos de micro-instruções de desvio condicional O resultado de comparações é usado para decidir se um desvio é realizado ou não Vamos desenvolver um programa que, como antes, adiciona 1 ao acumulador repetidamente, mas somente enquanto o valor do acumulador não supera um valor colocado pelo usuário na entrada In DCC
40
Codificação de Desvios Condicionais
Desviar para o endereço 10 se Bus > ACC DCC
41
CPU-2: Desvios Condicionais
Registrador Compare Unidade de Controle DCC
42
CPU-2: Unidade de Controle com Desvio Condicional
Lógica de Decisão: Condições na micro-instrução coincidem com o status do registrador de comparação? DCC
43
Precisamos melhorar a vida do programador
CPU-2: Balanço Conseguimos implantar desvios condicionais, que nos permitem prescrever loops A forma de se programar, lidando diretamente com sinais, torna difícil a descrição de algoritmos mais ambiciosos Precisamos melhorar a vida do programador DCC
44
A CPU Pipoca Instruções e Assembler
DCC
45
A CPU Pipoca Características - 1
Programas são formados por instruções A execução de cada instrução é feita pela execução de várias micro-instruções Operandos ficam codificados nas instruções Uma única memória RAM abriga dados e programa DCC
46
A CPU Pipoca Características - 2
O conjunto de micro-instruções é fixo, e fica gravado em uma memória ROM O processador executa um ciclo de leitura e execução de instruções A programação pode ser feita em linguagem de montagem (assembler), o que, relativamente à programação por sinais de controle, é um grande avanço DCC
47
O ciclo de instrução exige:
Novos Registradores O ciclo de instrução exige: PC – Program Counter contém o endereço da instrução a ser executada IR – Instruction Register contém a instrução em execução Sinc Entrada e Sinc Saída para sincronização de entrada e saída DCC
48
Pipoca – Formato de Instrução
Cada instrução ocupa 16 bits, sendo 4 bits para o código da instrução 2 bits para o modo de endereçamento, que indica se o operando é o que está codificado na instrução, ou se é o conteúdo da posição de memória cujo endereço está na instrução, ou outras alternativas de indireção 10 bits para o operando, cuja interpretação depende do modo de endereçamento DCC
49
Instrução ADD DCC
50
Pipoca – Conjunto de Instruções
ADD SUB LOAD STORE INPUT OUTPUT COMPARE JMP JMPEQ JMPGT JMPLT HALT DCC
51
Programação em Assembler
Nenhum ser humano com saúde mental consegue fazer um programa diretamente em binário O processo de programação consiste em preencher uma tabela usando mnemônicos das instruções, dando nomes a posições de memória, sendo assim mais compreensível para humanos, e depois, cuidadosamente, substituir estes mnemônicos e nomes de posições de memória pelos códigos binários correspondentes – processo que chamamos de montagem do programa DCC
52
Programa SumX: Código Fonte
DCC
53
Programa SumX Instruções e Dados
DCC
54
Programa SumX: Código Fonte Uso de Mnemônicos
DCC
55
Programa SumX Loop e Finalização
DCC
56
Montagem de uma Instrução
Vem da tabela de códigos de instrução SUM é o nome dado à posição x14 da memória DCC
57
Programas Montadores - 1
A tradução da tabela-programa para binário é uma tarefa insana, com fortes exigências de verificação Mas essa tarefa só foi feita manualmente pelos pioneiros da computação Cedo se percebeu que computadores são uma excelente ferramenta para ... programar computadores! DCC
58
Programas Montadores Montadores ou assemblers são programas que lêm tabelas-programas, e geram arquivos com imagens binárias a serem carregadas na memória, substituindo os mnemônicos pelos bits adequados. A planilha Pipoca.xls foi utilizada como montador para os programas exemplo DCC
59
Resumo – 1 Um processador básico possui memória, registradores, unidade lógico-aritmética, e uma unidade de controle O processamento é feito por deslocamentos de dados entre memória e registradores, e transformações de dados realizadas pela ULA DCC
60
A unidade de controle segue um programa armazenado em uma memória,
Resumo – 2 A unidade de controle segue um programa armazenado em uma memória, emitindo sinais de controle (posse de barramentos, cópias de entradas de registradores) que comandam os deslocamentos de informação no processador, e fornecendo operandos como endereços ou valores numéricos. DCC
61
Um programa tem formatos apropriados para
Resumo – 3 Um programa é escrito – e lido – por humanos executado por um processador Um programa tem formatos apropriados para a escrita por um programador a execução por um processador A transformação de um formato em outro é normalmente feita por … um programa DCC
Apresentações semelhantes
© 2025 SlidePlayer.com.br Inc.
All rights reserved.