A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

DCC 001 Programação de Computadores 2o Semestre de 2011

Apresentações semelhantes


Apresentação em tema: "DCC 001 Programação de Computadores 2o Semestre de 2011"— Transcrição da apresentação:

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


Carregar ppt "DCC 001 Programação de Computadores 2o Semestre de 2011"

Apresentações semelhantes


Anúncios Google