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

Slides:



Advertisements
Apresentações semelhantes
Capitulo 6: Entrada e Saída
Advertisements

Organização de Computadores I
INTRODUÇÃO A INFORMÁTICA
CPU: Controle e processamento
Arquitetura de Computadores
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Arquitetura e organização de computadores
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Entrada e Saída Introdução.
Linguagem de Montagem Visão geral.
Organização de computadores Professora Marcela Santos Aula 7 – A arquitetura de von Neumann.
Arquitetura de Computadores
A Arquitetura: conjunto de instruções
Software Básico Silvio Fernandes
Unidades de Execução e de Controle Sistemas Digitais.
Arquitetura dos Microprocessadores 8086 e 8088
Sistemas Operacionais
Problemas com Entrada e Saída
Introdução à Informática
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Professor: Carlos Roberto da Silva Filho, M. Eng.
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Linguagens de Programação
Processadores – Aula 3 Professor: André Luis Meneses Silva
Processadores – Aula 3 Professor: André Luis Meneses Silva
Introdução à Programação
PROGRAMAÇÃO I UNIDADE 1.
Unidade Central de Processamento
Unidade Central de Processamento
Unidade Central de Processamento
Fundamentos da Arquitetura de Computadores
Representação de Instruções
Unidade Central de Processamento UCP
PCI- Introdução à Computação
Sistemas Operacionais I
Organização de um computador
Computador Simplificado Conceitos p.ex. FLUXO de execução
Organização e Arquitetura de Computadores
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Agenda Modos de Endereçamento.
Processamento de dados na UCP e memória UCP
Arquitetura de Computadores
Unidade Central De Processamento: Processador
Geração de Código aula-12-geração-de-código.pdf.
POLIMIG Curso Técnico em Informática Disciplina: Hardware
Sistemas Operacionais
Unidade Central De Processamento: Processador
Técnico em Informática
Unidade de Controle.
Microprocesadores x Microcontroladores
8088 Assembly Software Básico Mitsuo Takaki.
Tudo sobre o Processador
Fundamentos de linguagens de programação
Parte 3 Seção de Dados e Unidade de Controle
Curso: Sistemas de Informação Tópico 5
1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos.
Algoritmos e Programação MC102
Introdução à Computação Componentes Básicos dos Computadores
Arquitetura de Computadores
Arquitetura de Microcomputadores
Organização e Arquitetura de Computadores
Arquitetura de computadores
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Microprogramação Controlador Microprogramado RI Microcomandos UAL MICROMEMÓRIA MPC MIR DECOD.... Vamos então construir o controlador microprogramado do.
Transcrição da apresentação:

DCC 001 Programação de Computadores 2o Semestre de 2011 Aula Expositiva 4 2.4 Processadores 2.4.1 Micro-instruções 2.4.2 Desvios 2.4.3 Desvios Condicionais 2.4.4 Instruções e Programação em Assembler DCC 001 Programação de Computadores 2o Semestre de 2011 Prof. Osvaldo Carvalho DCC001 - 2011-2

Uma Calculadora DCC001 - 2011-2

Uma Calculadora DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

Etapa 1: Carregar Entrada de literal DCC001 - 2011-2

Etapa 2: Somar Entrada de literal DCC001 - 2011-2

Etapa 3: Armazenar Entrada de literal DCC001 - 2011-2

Programa Armazenado DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

Codificação dos Sinais de Controle em Micro-instruções DCC001 - 2011-2

Contador de Programa Soma 1 Registrador DCC001 - 2011-2

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 DCC001 - 2011-2

Caixa de Música DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

CPU-0 Micro-Instruções DCC001 - 2011-2

CPU-0: Nosso primeiro processador DCC001 - 2011-2

CPU-0: Nosso primeiro processador Calculadora Controle DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

Painel de um PDP11/70, de 1975 DCC001 - 2011-2

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 DCC001 - 2011-2

Arquivo e Memória Logisim DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

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! DCC001 - 2011-2

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? DCC001 - 2011-2

CPU-1 Micro-Instruções de Desvio DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

Unidade de Controle com micro-instrução de Desvio DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

CPU-2 Micro-instruções de Desvio Condicional DCC001 - 2011-2

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 DCC001 - 2011-2

Codificação de Desvios Condicionais Desviar para o endereço 10 se Bus > ACC DCC001 - 2011-2

CPU-2: Desvios Condicionais Registrador Compare Unidade de Controle DCC001 - 2011-2

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? DCC001 - 2011-2

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 DCC001 - 2011-2

A CPU Pipoca Instruções e Assembler DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

Instrução ADD DCC001 - 2011-2

Pipoca – Conjunto de Instruções ADD SUB LOAD STORE INPUT OUTPUT COMPARE JMP JMPEQ JMPGT JMPLT HALT DCC001 - 2011-2

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 DCC001 - 2011-2

Programa SumX: Código Fonte DCC001 - 2011-2

Programa SumX Instruções e Dados DCC001 - 2011-2

Programa SumX: Código Fonte Uso de Mnemônicos DCC001 - 2011-2

Programa SumX Loop e Finalização DCC001 - 2011-2

Montagem de uma Instrução Vem da tabela de códigos de instrução SUM é o nome dado à posição x14 da memória DCC001 - 2011-2

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! DCC001 - 2011-2

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 DCC001 - 2011-2

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 DCC001 - 2011-2

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. DCC001 - 2011-2

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 DCC001 - 2011-2