• Nenhum resultado encontrado

2.4 Processadores Micro-instruções Desvios Desvios Condicionais Instruções e Programação em Assembler

N/A
N/A
Protected

Academic year: 2021

Share "2.4 Processadores Micro-instruções Desvios Desvios Condicionais Instruções e Programação em Assembler"

Copied!
61
0
0

Texto

(1)

DCC001 - 2011-2 1

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

(2)
(3)

Uma Calculadora

(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 de operandos (endereços, valores a serem

somados ou armazenados, …) no registrador In

(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:

1. Carregar no acumulador o conteúdo da posição

1 da RAM

2. Somar ao acumulador o conteúdo da posição 2

da RAM

3. Armazenar o conteúdo do acumulador na

posição 3 da RAM

(6)

Sinal Comentários ACC_Clear = 1 ACC_Clear = 0 Input = 1 In_Clk = 1 In_Clk = 0 In_Bus = 1 MAR_Clk = 1 MAR_Clk = 0 In_Bus = 0 RAM_Bus = 1 ACC_Clk = 1 ACC_Clk = 0 Carrega no acumulador o conteúdo da posição 1 da RAM

Etapa 1: Carregar

Entrada de operando

(7)

Input = 2 In_Clk = 1 In Clk = 0 In_Bus = 1 MAR_Clk = 1 MAR_Clk = 0 In_Bus = 0 RAM_Bus = 1 ACC_Clk = 1 ACC_Clk = 0 RAM_Bus = 0 Soma ao acumulador o conteúdo da posição 2 da RAM

Etapa 2: Somar

DCC001 - 2011-2 7

Entrada de operando

(8)

Etapa 3: Armazenar

Input = 3 In_Clk = 1 In_Clk = 0 In_Bus = 1 MAR_Clk = 1 MAR_Clk = 0 In_Bus = 0 ACC_Bus = 1 RAM_Clk = 1 RAM_Clk = 0 ACC_Bus = 0 Armazena o conteúdo do acumulador na posição 3 da RAM

(9)

Programa Armazenado

(10)

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

(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

(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

(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

(14)

In->D bus In_ C lk M AR _C lk R AM _B us R AM _C lk D R -> B us D R _C lk Subt ra ct O ut _C lk C om pa re _C lk AC C -> B us AC C _C lk AC C _C le ar 0 0 0 0 0 0 0 0 0 0 0 0 1 ACC_Clear = 1 ACC = 0

0 0 1 0 0 0 0 0 0 0 0 0 0 ACC_Clear = 0; MAR_Clk=1; MAR = Bus

0 0 0 1 0 0 0 0 0 0 0 0 0 MAR_Clk = 0; RAM_Bus = 1; Bus = RAM

0 0 0 1 0 0 0 0 0 0 0 1 0 ACC_Clk = 1; ACC = ACC + Bus

Sinais

Clicks

Equivalentes Efeito

Codificação dos Sinais de Controle em

Micro-instruções

Micro-instruções

(15)

Contador de Programa

DCC001 - 2011-2 15

Soma 1

(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

(17)

Caixa de Música

(18)

Operandos

 No uso da calculadora a intervenção do operador se

dá também na entrada de operandos (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 operandos já possam ser especificados no

programa

 Os operandos devem ser fornecidos pela unidade de

controle à (ex-) calculadora nos momentos adequados

(19)

Codificação de Operandos em Micro-Instruções

DCC001 - 2011-2 19 Operando nos 16 bits menos significativos = 2 Sinal Adicional coloca Operando no Barramento Bit 23 indica se a palavra codifica um operando

(20)

CPU-0

(21)

CPU-0: Nosso primeiro processador

(22)

CPU-0: Nosso primeiro processador

Calculadora

(23)

Unidade de Controle da CPU-0

Sinais e Operando

DCC001 - 2011-2 23

fornece tempos para atualizações: t0: PC t1: mIR t2: Sinais ou Oper Micro-instrução corrente Sinais Operando

(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

(25)

Painel de um PDP11/70, de 1975

(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

(27)

Arquivo e Memória Logisim

(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

(29)

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

(30)

Dois “programas”

O pe r->B us In->D bus In_ Cl k M AR _C lk RAM _B us RAM _C lk D R->B us D R_ Cl k Subt ra ct O ut _C lk Com pa re _C lk AC C->B us AC C_ Cl k AC C_ Cl ea r 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Sinais O pe ra nd o? O pe r->B us In->D bus In_ Cl k M AR _C lk RAM _B us RAM _C lk D R->B us D R_ Cl k Subt ra ct O ut _C lk Com pa re _C lk AC C->B us AC C_ Cl k AC C_ Cl ea r 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Sinais O pe ra nd o?

Soma de 2 parcelas Soma de 5 parcelas

Problema: o programa

cresce quando o número

(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?

(32)

CPU-1

(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

(34)

Formato de Micro-instruções contemplando

Desvios

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D es vi o? O pe ra nd o? O pe r->D bus In->D bus In_ Cl k M AR _C lk RAM _D bus RAM _C lk D R->D bus D R_ Cl k Subt ra ct O ut _C lk Com pa re _C lk AC C->D bus AC C_ Cl k AC C_ Cl ea r 1 1 1 1 1 1 1 1 Sinais 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D es vi o? O pe ra nd o? O pe r->D bus In->D bus In_ Cl k M AR _C lk RAM _D bus RAM _C lk D R->D bus D R_ Cl k Subt ra ct O ut _C lk Com pa re _C lk AC C->D bus AC C_ Cl k AC C_ Cl ea r 1 1 1 1 1 1 1 1 Sinais Micro-instrução de desvio para a posição 1 na memória de programa Bit 23: Desvio?

(35)

Unidade de Controle com micro-instrução de

Desvio

(36)

O Contador de Programa

Decisão sobre o próximo valor do PC Endereço de Desvio

(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

(38)

CPU-2

(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

(40)

Codificação de Desvios Condicionais

23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D es vi o? O pe ra nd o? M eno r Igua l M ai or O pe r->D bus In->D bus In_ Cl k M AR _C lk RAM _D bus RAM _C lk D R->D bus D R_ Cl k Subt ra ct O ut _C lk Com pa re _C lk AC C->D bus AC C_ Cl k AC C_ Cl ea r 1 1 1 1 1 1 1 1 1 1 1 1 1 Sinais Desviar para o endereço 4 se Bus > ACC

(41)

CPU-2: Desvios Condicionais

DCC001 - 2011-2 41 Unidade de Controle Registrador Compare

(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

(43)

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

(44)

A CPU Pipoca

(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

(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

(47)

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

(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

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OpCode Mode Operand

(49)

Instrução ADD

DCC001 - 2011-2 49

Descrição

M

ne

mo

ni

c

O

pCo

de

10

O

pCo

de

2

Adiciona o

operando a

ACC, deixando

o resultado em

ACC

ADD

0

0000

(50)

Pipoca – Conjunto de Instruções

ADD

SUB

LOAD

STORE

INPUT

OUTPUT

COMPARE

JMP

JMPEQ

JMPGT

JMPLT

HALT

(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

(52)

Programa SumX: Código Fonte

Lab el Si ze Ad dress1 0 Ad dress1 6 In structio n M od e Operan d Comentários 1 0 00 LOAD 0 0 Zera o acumulador

1 1 01 STORE 0 SUM Coloca 0 em SUM

1 2 02 LOAD 0 X Carrega o endereço X no acumulador 1 3 03 STORE 0 P Coloca o endereço X em P

LOOP 1 4 04 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador 1 5 05 ADD 2 P Soma o conteúdo da posição de memória cujo

endereço é P ao acumulador 1 6 06 STORE 0 SUM Coloca o resultado na posição SUM 1 7 07 LOAD 1 P Carrega o conteúdo de P

1 8 08 ADD 0 1 Soma 1

1 9 09 STORE 0 P Coloca o resultado em P

1 10 0A COMPARE 0 XEND Compara XEND com o acumulador 1 11 0B JMPLT 0 FINISH Se for menor, desvia para FINISH 1 12 0C JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 0D OUTPUT 1 SUM Coloca o resultado na saída 1 14 0E HALT Para. X 1 15 0F 3142 1 16 10 4542 1 17 11 3325 1 18 12 1234 XEND 1 19 13 8786 SUM 1 20 14 0

(53)

Programa SumX

Instruções e Dados

DCC001 - 2011-2 53 Lab el Si ze Ad dress1 0 In structio n M od e Operan d Comentários 1 0 LOAD 0 0 Zera o acumulador

1 1 STORE 0 SUM Coloca 0 em SUM

1 2 LOAD 0 X Carrega o endereço X no acumulador 1 3 STORE 0 P Coloca o endereço X em P

LOOP 1 4 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador 1 5 ADD 2 P Soma o conteúdo da posição de memória cujo

endereço é P ao acumulador 1 6 STORE 0 SUM Coloca o resultado na posição SUM 1 7 LOAD 1 P Carrega o conteúdo de P

1 8 ADD 0 1 Soma 1

1 9 STORE 0 P Coloca o resultado em P

1 10 COMPARE 0 XEND Compara XEND com o acumulador 1 11 JMPLT 0 FINISH Se for menor, desvia para FINISH 1 12 JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 OUTPUT 1 SUM Coloca o resultado na saída 1 14 HALT Para. X 1 15 3142 1 16 4542 1 17 3325 1 18 1234 XEND 1 19 8786 SUM 1 20 0 P 1 21 0

Números a serem somados

Instruções

Dados

(54)

Programa SumX: Código Fonte

Uso de Mnemônicos

DCC001 - 2011-2 54 Lab el Si ze Ad dress1 0 Ad dress1 6 In structio n M od e Operan d Comentários

1 0 00 LOAD 0 0 Zera o acumulador

1 1 01 STORE 0 SUM Coloca 0 em SUM

1 2 02 LOAD 0 X Carrega o endereço X no acumulador 1 3 03 STORE 0 P Coloca o endereço X em P

LOOP 1 4 04 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador 1 5 05 ADD 2 P Soma o conteúdo da posição de memória cujo

endereço é P ao acumulador

1 6 06 STORE 0 SUM Coloca o resultado na posição SUM 1 7 07 LOAD 1 P Carrega o conteúdo de P

1 8 08 ADD 0 1 Soma 1

1 9 09 STORE 0 P Coloca o resultado em P

1 10 0A COMPARE 0 XEND Compara XEND com o acumulador 1 11 0B JMPLT 0 FINISH Se for menor, desvia para FINISH 1 12 0C JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 0D OUTPUT 1 SUM Coloca o resultado na saída

1 14 0E HALT Para. X 1 15 0F 3142 1 16 10 4542 1 17 11 3325 1 18 12 1234 XEND 1 19 13 8786

Números a serem somados

Lab el Si ze Ad dress1 0 Ad dress1 6 In structio n M od e Operan d Comentários

1 0 00 LOAD 0 0 Zera o acumulador

1 1 01 STORE 0 SUM Coloca 0 em SUM

1 2 02 LOAD 0 X Carrega o endereço X no acumulador 1 3 03 STORE 0 P Coloca o endereço X em P

LOOP 1 4 04 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador 1 5 05 ADD 2 P Soma o conteúdo da posição de memória cujo

endereço é P ao acumulador

1 6 06 STORE 0 SUM Coloca o resultado na posição SUM 1 7 07 LOAD 1 P Carrega o conteúdo de P

1 8 08 ADD 0 1 Soma 1

1 9 09 STORE 0 P Coloca o resultado em P

1 10 0A COMPARE 0 XEND Compara XEND com o acumulador 1 11 0B JMPLT 0 FINISH Se for menor, desvia para FINISH 1 12 0C JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 0D OUTPUT 1 SUM Coloca o resultado na saída

1 14 0E HALT Para. X 1 15 0F 3142 1 16 10 4542 1 17 11 3325 1 18 12 1234 XEND 1 19 13 8786 SUM 1 20 14 0 P 1 21 15 0

(55)

Programa SumX

Loop e Finalização

DCC001 - 2011-2 55

LOOP 1 4 04 LOAD 1 SUM Carrega o conteúdo de SUM no acumulador 1 5 05 ADD 2 P Soma o conteúdo da posição de memória

cujo endereço é P ao acumulador 1 6 06 STORE 0 SUM Coloca o resultado na posição SUM 1 7 07 LOAD 1 P Carrega o conteúdo de P

1 8 08 ADD 0 1 Soma 1

1 9 09 STORE 0 P Coloca o resultado em P

1 10 0A COMPARE 0 XEND Compara XEND com o acumulador 1 11 0B JMPLT 0 FINISH Se for menor, desvia para FINISH 1 12 0C JMP 0 LOOP Senão, volta para LOOP

FINISH 1 13 0D OUTPUT 1 SUM Coloca o resultado na saída

La be l Si ze Addr es s1 0 Addr es s1 6 Ins tr uc tion Mod e Ope ra nd Comentários

(56)

Montagem de uma Instrução

SUM é o nome dado à posição x14 da memória Vem da tabela de

códigos de instrução

OpCode

Mode

Operand

Instrução

LOAD

1

SUM

Códigos

1000

01

0000010100

Binário

Hexa

1000 0100 0001 0100

8414

(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!

(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

(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

(60)

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

(61)

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

Referências

Documentos relacionados

Outrossim, não se pode desconsiderar a responsabilidade, também estabelecida em todas as normas disciplinares do futebol, na lei de regência do torcedor no Brasil

Quando se decidiu enviar um grupo de caça à Europa, a Força Aérea Brasileira optou pelo emprego dos Republic P-47 (os North American P-51 também foram oferecidos ao Brasil).. A

O profissional selecionado para atuar na REDE E-TEC BRASIL será remunerado na forma de concessão de bolsas conforme o Manual de Gestão da Rede e-Tec disponível em

Visando à manutenção da vida e diminuição de sequelas nós temos viaturas de suporte para fornecer assistência nesses tipos de ocorrência de socorro imediato, sendo elas

A Vale informa ainda que os desembolsos para as prorrogações antecipadas de concessões ferroviárias já vinham sendo considerados no planejamento de longo prazo

o denominador da expressão acima é facilmente obtido através de uma tabela de propriedades termodinâmicas da água entrando-se com a temperatura (de bulbo seco) do ar úmido e

Acordo Coletivo de Trabalho, Aditivo à Convenção Coletiva de Trabalho 2018/2020, que celebram, de um lado, como empregador, o Banco do Nordeste do Brasil S/A –

Interno: 12 (doze) prateleiras fixas (divididas em número igual para cada parte do armário) em MDF BP 18mm de espessura, revestido em laminado melamínico de baixa