Você está na página 1de 35

Arquitetura de Computadores

CAPTULO 3 NVEL ISA 3.1 Introduo ao Nvel de Arquitetura do Conjunto de Instrues O Nvel de Arquitetura do Conjunto de Instrues (ISA - Instruction Set Architecture) a interface entre software e hardware. o nvel mais prximo ao hardware em que o usurio pode programar. Problema: programar neste nvel no muito amigvel. Soluo: organizao em nveis, Cada nvel da organizao possui uma linguagem associada. A medida que a organizao evolui em direo ao usurio, a linguagem se torna mais conveniente para ele. Usurio escreve um programa fonte em linguagem de alto nvel ou em linguagem de montagem, mais amigveis. Programa fonte traduzido para programa Objeto numa linguagem intermediria (Linguagem de Mquina); As instrues de mquina so interpretadas pelo Hardware.

Programa fonte em linguagem de alto nvel. Compilao de programa fonte para programa ISA Software Hardware

Programa fonte em linguagem de montagem. Montagem de programa fonte para programa ISA

Nvel ISA - Programa objeto em Linguagem de Mquina Programa ISA interpretado por microprograma ou pelo hardware Hardware

Figura 2.1. Nvel ISA - interface software / hardware.

Arquitetura de Computadores

Comparao entre as linguagens de cada nvel: Linguagem de alto nvel: Linguagem de montagem: Linguagem de mquina: Observaes: A linguagem de montagem e a linguagem de mquina possuem uma relao de uma para um, ou seja, cada instruo de montagem possui uma instruo de mquina equivalente; A diferena entre as linguagens de montagem e de mquina que a primeira uma representao simblica da segunda, que puramente numrica; A linguagem de alto nvel utiliza instrues que operam sobre estruturas de dados complexas. A compilao de uma seqncia de instrues em linguagem de alto nvel geralmente gera uma seqncia maior de instrues ISA que operam sobre estruturas de dados mais simples e diversas daquelas presentes no programa fonte. Caractersticas de projeto do nvel ISA: No nvel de linguagem de mquina est definida a interface entre Software e Hardware. Deve ser o mais simples possvel, para facilitar projeto do hardware. Deve facilitar a gerao de cdigo por parte do compilador. Projeto do nvel de linguagem de mquina deve dar suporte aos nveis superiores, possibilitando o uso de estruturas de dados tais como procedimentos, variveis locais, variveis globais, constantes, etc., utilizados pelas linguagens de alto nvel; Aspectos importantes no projeto desse nvel: Modelo da memria; Conjunto de registradores; Formato de instrues; Modos de endereamento; Tipos de instrues; Fluxo de controle; A=5; MOVE A, #5; 0011001100000101

Arquitetura de Computadores

3.2 Modelos de Memria Antes de ser executado o programa em linguagem de mquina armazenado na memria principal; Memria dividida em clulas referenciadas por endereos consecutivos; Clula pode ter qualquer tamanho, mas um byte padro atualmente; Os bytes so agrupados em palavras; Espao de endereamento: endereos comeam em 0 e vo at um valor mximo Duas alternativas adotadas: Espao de endereamento nico (mais comum). Exemplo: o espao de endereamento [0 (264-1)] requer 64 bits para especificar um endereo; Espao de endereamento separado para instrues e dados: busca de instruo no endereo 1000 e busca de dado no endereo 1000 no acessam o mesmo endereo. Exemplo: o espao [0 (264-1)], dividido em [0 (232-1)] para dados e [0 (232-1)] para instrues, requer 32 bits para especificar um endereo. Alinhamento de palavras: muitas arquiteturas exigem alinhamento das palavras nos endereos corretos, de acordo com o seu tamanho. Exemplo: palavras de oito bytes alinhadas s podem comear nos endereos 0, 8, 16, etc. CPU's costumam transferir os bytes de uma palavra de uma s vez. Freqentemente, a arquitetura utiliza apenas endereos mltiplos do tamanho da palavra. Neste caso, dados desalinhados teriam que ser buscados em duas referncias memria e os dados teriam de ser reconstrudos a partir das duas palavras lidas.
8 bytes Endereo 24 16 8 0 Endereo 24 16 8 0

15

14

13

12

11

10

(a) Palavra de 8 bytes alinhada


8 bytes 19 15 14 13 12 18 17 16

(b) Palavra de 8 bytes no alinhada Figura 3.2. Alinhamento de Palavra. a) Alinhada. b) No alinhada.

Arquitetura de Computadores

Organizao da memria no Pentium II: Espao de endereamento constitudo por 16 k segmentos, cada segmento com endereos de 0 a (232 - 1). Maioria dos sistemas operacionais s suporta um segmento com espao de endereamento linear de 0 a (232 - 1). Cada byte tem seu prprio endereo. Palavras de 32 bits, little-endian.

3.3 Registradores O nvel ISA disponibiliza um conjunto de registradores visveis ao programador. Registradores de propsito geral: utilizados para armazenar resultados intermedirios e variveis locais, agilizando o acesso a esses dados; Registradores de propsito especfico: PC (contador de programa): ponteiro que armazena o endereo da prxima instruo a ser executada. SP (apontador de pilha): aponta para o endereo no topo da pilha. Registrador de Status (PSW - Program Status Word): contm bits necessrios operao do processador. Exemplo: habilitao de interrupes, modo de execuo da mquina, cdigos de condio, etc. Cdigos de condio so modificados a cada ciclo de mquina e indicam o estado do resultado do processamento da ULA. Exemplos: N - Igual a 1 quando o resultado da ULA for negativo. Z - Igual a 1 quando o resultado da ULA for zero. V - Igual a 1 quando o resultado da ULA gerou um oVerflow. C - Igual a 1 quando o resultado da ULA gerou um Vai-um (carry) para o bit mais esquerda. A - Igual a 1 quando o bit 3 do resultado da ULA gerou um carry Auxiliar. P - Igual a 1 quando o resultado da ULA apresentar paridade par. Cdigos de condio so utilizados por instrues de comparao e desvio condicional.

Arquitetura de Computadores

Registradores do Pentium II Registradores de propsito geral, 32 bits, (compatibilidade com 16 e 8 bits): EAX (aritmtico), EBX (ponteiros), ECX (loops), EDX (multiplicao e diviso, junto com EAX). Registradores de propsito geral, 32 bits: ESI e EDI (ponteiros para manipulao de strings), EBP (ponteiro para base de quadro de pilha). Registrador de propsito especfico, 32 bits: ESP (apontador de pilha). Registrador de segmento, 32 bits: CS, SS, DS, ES, FS, GS. (compatibilidade com verses anteriores). Registrador de 32 bits: EIP (contador de programa). Registrador de 32 bits: EFLAGS (status),

(16 bits) (16 bits) (16 bits) (16 bits)

AX=AH (8 bits)+AL (8 bits) BX=BH (8 bits)+BL (8 bits) CX=CH (8 bits)+CL (8 bits) DX=DH (8 bits)+DL (8 bits) (32 bits) (32 bits) (32 bits) (32 bits) (16 bits) (16 bits) (16 bits) (16 bits) (16 bits) (16 bits) (32 bits) (32 bits)

EAX EAX EAX EAX ESI EDI EBP ESP CS SS DS ES FS GS EIP EFLAGS

Figura 3.3. Registradores do Pentium II.

Arquitetura de Computadores

3.4 Tipos de Dados Dados Numricos: Nmeros inteiros: 8, 16, 32, e 64 bits, com sinal (em complemento de dois) ou sem sinal. Nmeros decimais BCD: 4 bits por dgito (hardware no muito eficiente). Nmeros em ponto flutuante: 32 e 64 bits. 1 bit Sinal 8 bits Expoente (a) 1 bit 11 bits Sinal Expoente (b) Figura 3.4. Padro IEEE 754. a) Preciso simples. b) Preciso dupla. 52 bits Mantissa 23 bits Mantissa

Item
Bits no campo de sinal Bits no campo do expoente Bits no campo da mantissa Nmero total de bits Sistema de representao do expoente Faixa de variao do expoente Menor nmero normalizado Maior nmero normalizado Faixa de variao decimal Menor nmero no normalizado

Preciso Simples 1 8 23 32 Excesso de 127 -126 a 127 2-126 aprox. 2128 aprox. de 10-38 a 1038 aprox. 10-45

Preciso Dupla 1 11 52 64 Excesso de 1023 -1022 a 1023 2-1022 aprox. 21024 aprox. de 10-308 a 10308 aprox. 10-324

Figura 3.5. Caractersticas de nmeros em ponto flutuante. Padro IEEE 754.

Arquitetura de Computadores

Normalizado No normalizado Zero Infinito NaN

0 < Exp < Max 0 0 111111 ... 1 111111 ... 1

Qualquer combinao de bits Qualquer combinao de bits 0 0 0 Qualquer combinao de bits 0

Figura 3.6. Tipos numricos IEEE 754. Dados No Numricos: Strings de caracteres ASCII. Valores booleanos. Mapas de bits (matriz de valores booleanos). Ponteiros (endereos de mquina).

Tipos de dados no Pentium II: Nmeros inteiros em complemento de dois. Nmeros inteiros sem sinal. Nmeros decimais codificados em binrio (BCD). Nmeros em ponto flutuante padro IEEE 754. Strings de caracteres ASCII de comprimento conhecido. Strings de caracteres ASCII de comprimento desconhecido (final da string marcado por caractere especial). 8 bits x x x 16 bits x x 32 bits x x x 64 bits

Tipo Inteiro com sinal Inteiro sem sinal Inteiro BCD Ponto flutuante

Figura 3.7. Tipos de dados numricos no Pentium II.

Arquitetura de Computadores

3.5 Formato das Instrues Dois campos essenciais de uma instruo: Cdigo de operao (OP CODE): identifica a operao a ser realizada pelo processador. Deve identificar de forma nica cada ao a ser executada pelo processador; Pode ser de tamanho fixo ou varivel. Endereo: indica a localizao do dado (operando) a ser manipulado pela instruo. Em geral indica um endereo de memria ou de um registrador onde est contido o dado, ou onde ele ser armazenado; Cada instruo pode possuir 0, 1, 2 ou mais campos de endereo. Cdigo de Operao Cdigo de Operao Cdigo de Operao Cdigo de Operao Endereo1 Endereo 1 Endereo Endereo 2 Endereo 2 Endereo 3

Figura 3.8. Formatos de instrues tpicos. Na prtica os formatos de instruo so bem mais complexos: O conjunto de instrues pode possuir formatos diferentes; O comprimento das instrues tambm pode ser varivel, geralmente mltiplo ou submltiplo do tamanho da palavra: instrues menores que uma palavra; instrues maiores que uma palavra; instrues do tamanho de uma palavra. Uma palavra Instruo Instruo Instruo Instruo Uma palavra Instruo Instruo Instruo Instruo Instruo Instruo Instruo Instruo Uma palavra Instruo Instruo Inst Inst Instruo

Figura 3.9 Vrias relaes entre tamanho de instruo e de palavra.

Arquitetura de Computadores

Critrios de projeto de formatos de instruo: Tamanho da instruo: Vantagens das instrues curtas: Quanto maior o tamanho da instruo, maior o espao ocupado por um programa na memria. N instrues de 32 bits ocupam o dobro da memria ocupada por N instrues de 16 bits. Desempenho: Banda passante da memria: t bps. Tamanho mdio das instrues: r bits. Memria pode buscar no mximo t/r instrues por segundo. Velocidade que o processador pode executar as instrues limitada pelo tamanho das instrues. Quanto menor o tamanho das instrues mais rpido sero buscadas pelo processador. Desvantagens das instrues curtas: So mais difceis de decodificar. Tamanho do cdigo de operao: Deve possuir espao suficiente para identificar todas as operaes da mquina. Ex.: 2n instrues precisam de pelo menos n bits no campo de cdigo de operao. Numero de bits no campo de endereo: Tamanho maior: maior resoluo no acesso memria; espao de endereamento maior. Tamanho menor: menor espao necessrio para o armazenamento das instrues.

Arquitetura de Computadores

Expanso do cdigo de operao: Nmero de bits do campo cdigo de operao depende do nmero de instrues que a mquina possui. Ex.: Um conjunto com 256 = 28 instrues precisa de pelo menos 8 bits para representar o cdigo de qualquer uma das instrues da mquina. O cdigo de operao pode ser de tamanho fixo ou varivel. Cdigos de operao de tamanho fixo so mais fceis de implementar e manipular. Cdigo de operao com tamanho varivel muitas vezes til; Exemplo: Mquina com instrues de 16 bits; Endereos so representados por 4 bits; 15 instrues de 3 endereos; 14 instrues de 2 endereos; 31 instrues de 1 endereo; 16 instrues sem endereo. As 15 instrues de 3 endereos so identificadas pelos quatro bits mais significativos (b15, b14, b13, b12) com valor entre 0000 e 1110. Quando o cdigo de escape (b15, b14, b13, b12) = 1111 aparece no incio da instruo, os 4 bits (b 11, b10, b9, b8) com valores entre 0000 e 1101 podem ser usados para especificar as 14 instrues de 2 endereos. Quando os oito bits mais significativos assumem o cdigo de escape 1111 1110 ou 1111 1111, os prximos 4 bits podem ser usados para especificar 31 instrues de 1 endereo. Finalmente quando todos os primeiros 12 bits forem 1, os ltimos 4 bits podem ser usados para especificar 16 instrues sem endereo.

Arquitetura de Computadores

Cod Operao 0000 0001

15 Instrues de 3 endereos End1 End2 Xxxx yyyy Xxxx yyyy


End3 zzzz zzzz

1110

Xxxx

yyyy

zzzz

14 Instrues de 2 endereos Cod Operao End1 1111 0000 yyyy 1111 0001 yyyy 1111 1101 yyyy

End2 zzzz zzzz zzzz End1 zzzz zzzz zzzz zzzz zzzz zzzz

1111 1111 1111 1111 1111 1111


31 Instrues de 1 endereo Cod Operao 1110 0000 1110 0001 1110 1111 1111 1111

1111 0000 0001 1110

1111 1111 1111

16 Instrues sem endereo Cod Operao 1111 1111 1111 1111 1111 1111

1111

Figura 3.10. Expanso do cdigo de operao.

0000 0001

Arquitetura de Computadores

3.6 Modos de Endereamento Caractersticas da Especificao do Endereamento: As instrues em geral utilizam: pequena quantidade de bits parar o cdigo de operao. grande quantidade para especificar endereos dos dados. Exemplo: instruo de adio: Precisa dos endereos dos dois valores a serem somados. Precisa do endereo do local onde o valor deve ser armazenado. Supondo que os endereos de memria sejam de 32 bits: so necessrios 96 bits de endereos. Os endereos dos operandos na memria principal devem ser determinados em tempo de compilao. a 1 Soluo: utilizar registradores para armazenar os operandos. Mquina com 32 registradores, endereos de registrador de 5 bits: 15 bits de endereos, para o caso acima citado; Acesso mais rpido. Problema: precisa de instrues adicionais que utilizariam endereos de 32 bits para carregar os operandos da memria para os registradores. Uso repetido de uma varivel compensa o problema. 2a Soluo: indicar um ou mais endereos de forma implcita. Exemplo: instruo s precisa indicar o ENDEREO_1, quando o cdigo de operao decodificado j se sabe que o registrador R1 deve ser utilizado. R1:=R1+ENDEREO_1 Uma pilha tambm pode ser usada para que nenhum endereo seja especificado. Existem outros mtodos de codificar o campo de endereos. Estes podem utilizar mais ou menos bits e o endereo pode ser determinado estaticamente, em tempo de compilao, ou dinamicamente, em tempo de execuo. O mtodo utilizado para codificar o campo de endereo de uma instruo denominado Modo de Endereamento. Indica a forma pela qual o campo de endereo interpretado para buscar o dado.

Arquitetura de Computadores

para exemplificar os modos de endereamento existentes considere o seguinte formato de instruo: COD OPERAO ENDEREO

e a seguinte instruo neste formato: ADD FONTE

A instruo acima soma o valor endereado por FONTE a um registrador chamado ACUMULADOR e armazena a soma no prprio ACUMULADOR, ou seja, ACUMULADOR:=ACUMULADOR+FONTE; Endereamento Imediato: o campo de endereo contm o prprio dado. No ciclo de busca-decodificao-execuo, a memria s acessada para buscar a instruo. O dado obtido imediatamente quando a instruo buscada. O dado fica limitado ao tamanho do campo de endereo da instruo. utilizado para passar constantes de valor pequeno. Exemplo: ADD 4 ACUMULADOR:=ACUMULADOR+4; Se o valor inicial do acumulador for 16, o seu valor ser modificado para 16 + 4 = 20, aps a execuo da instruo acima. Instruo ADD Acumulador 16 4 Acumulador 20

Figura 3.11. Exemplo de endereamento imediato.

Arquitetura de Computadores

Endereamento Direto: o campo de endereo contm o endereo de memria onde est armazenado o dado. necessria uma referncia extra memria para buscar o dado, alm daquela feita para buscar a instruo. Dado no fica limitado ao tamanho do campo de endereo. Utilizado para implementar variveis globais. Endereo Memria 0 1 2 3 4 5 9 16 25 Acumulador Acumulador Instruo ADD (4)

Figura 3.12. Endereamento Direto. Endereamento Via Registrador: o endereo especificado no campo de endereo de um registrador onde est contido o dado. Utiliza um endereo de registrador, que menor que um endereo de memria principal; Acesso aos registradores mais rpido. Nmero de registradores limitado. utilizado para acessar variveis locais. Endereo Memria de Rascunho 0 1 2 3 4 5 9 16 25 Acumulador Acumulador Instruo ADD R4

Figura 3.13. Endereamento Via Registrador.

Arquitetura de Computadores

Endereamento Indireto Via Registrador: campo de endereo contm um endereo de registrador na memria de rascunho, onde est armazenado o endereo do dado na memria principal. Endereo intermedirio chamado de ponteiro. Quando o ponteiro se encontra em um registrador possvel acessar um endereo de memria atravs de um endereo de registrador. Acesso a vetores. Endereo Memria 0 1 2 3 4 5 6 Endereo Memria de Rascunho 0 1 2 3 4 2 Acumulador 16 Figura 3.14. Endereamento Indireto. Exemplo: soma dos elementos de um vetor com 1024 elementos. Elementos inteiros, palavras de 4 bytes. Elementos so somados um a um em lao. Registrador R1 armazena a soma acumulada. Registrador R2 armazena o endereo A do primeiro elemento. Registrador R3 armazena o primeiro endereo fora do vetor. As instrues do lao s endeream operandos em registradores. MOV R1, #0 MOV R2, #A MOV R3, #A+4096 LOOP: ADD R1, (R2) ADD R2, #4 CMP R2, R3 BLT LOOP
; acumula soma em R1; valor inicial zero ; R2 = endereo do vetor A ; R3 = endereo de 1a palavra aps A ; modo indireto de obter operando com base em R2 ; incrementa R2 de uma palavra (4 bytes) ; compara R2 e R3 para testar fim de lao ; se R2 < R3, no terminou, continua o lao

Instruo ADD (R4) Acumulador

22

Figura 3.15. Exemplo de uso de modos de endereamento.

Arquitetura de Computadores

Endereamento Indexado: endereo do dado obtido somando o valor no campo de endereo com o valor contido em um registrador de ndice. utilizado para acessar posies de memria localizadas a uma distncia conhecida a partir do contedo de um registrador. Registrador de ndice incrementado a cada utilizao de forma a acessar endereos contguos. Acesso a vetores e variveis locais.

Instruo: ADD

(R1)

Endereo do operando = 4 + (R1) = 4 + 2 = 6 Endereo Memria 0 1 2 3 4 5 6 7 Endereo Memria de Rascunho 0 1 2 3 4 Acumulador 16 Figura 3.16. Endereamento Indexado. Exemplo: soma dos elementos de um vetor, resultado da soma de dois vetores A e B, cada um com 1024 elementos. Elementos inteiros, palavras de 4 bytes. Elementos so somados um a um em lao. Registrador R1 armazena a soma acumulada dos elementos. Registrador R2 = ndice i usado para percorrer os vetores. Registrador R3 armazena o primeiro ndice fora dos vetores. Registrador R4 (rascunho) armazena a soma A(i) + B(i). Instruo MOV R4, A(R2): fonte usa modo indexado, com A sendo o deslocamento a ser somado ao contedo do registrador de ndice R2; destino endereado via registrador R4. Instruo ADD R4, B(R2): idem, com B = deslocamento. Acumulador 23 2

Arquitetura de Computadores

MOV R1,#0 MOV R2,#0 MOV R3,#4096 LOOP: MOV R4,A(R2) ADD R4,B(R2) ADD R1,R4 ADD R2,#4 CMP R2,R3 BLT LOOP

; Acumula soma de elementos em R1, valor inicial zero ; R2 = ndice i da soma corrente A(i) + B(i) ; valor do 1o valor invlido do ndice ; R4 = A(i) ; R4 = A(i) + B(i) ; soma acumulada dos elementos de A(i) + B(i) ; incrementa ndice do tamanho da palavra: i = i + 4 ; compara R2 e R3 para testar fim de lao ; se R2 < R3, no Terminou, continua o lao

Figura 3.17. Exemplo de uso de Endereamento Indexado. Endereamento Base-Indexado: endereo do dado calculado somando os valores armazenado em um registradores de ndice e o outro de base. O contedo da base fixo enquanto que o contedo do ndice incrementado, como no caso anterior. bastante semelhante ao endereamento indexado, diferenciando somente no uso do registrador de base. No exemplo acima, as instrues indexadas podem ser substitudas por base-indexadas, com os endereos de A e B em R5 e R6: LOOP: MOVE R4,(R2+R5) ADD R4, (R2+R6) ADD (R1+R4)

Instruo:

Endereo do operando = (R1) + (R4) = 2 + 3 = 5


Endereo Memria 0 1 2 3 4 5 6 16 Figura 3.18. Endereamento Base-Indexado. 33 17 Endereo Memria de Rascunho 0 1 2 3 4 3 Acumulador Acumulador 2

Arquitetura de Computadores

Endereamento Via Estrutura de Pilha: os dados so buscados a partir do topo da pilha; Estrutura de dados LIFO armazenada em endereos consecutivos. utiliza um registrador Ponteiro de Pilha (SP - Stack Pointer) que aponta para o topo da pilha (ltimo item armazenado). Instrues para gerenciar a pilha: PUSH POP X Y Empilha X SP :=SP+1; (SP) := X; Desempilha em Y Y := (SP); SP := SP-1;

Algumas instrues de pilha no necessitam especificar endereo. Os dados so buscados a partir de SP. PUSH LOAD 13 SP 1003 17 85 20 ACC 13 POP

SP 1002 ACC 35

1003 1002 1001 1000

1003 1002 1001 1000

35 17 85 20

SP 1002 ACC 35

1003 1002 1001 1000 17 85 20

Figura 3.19. Funcionamento da Pilha. Exemplo: adio de dois valores usando endereamento via estrutura de Pilha. Dois valores so desempilhados, Os valores so somados. O resultado empilhado. SP 1002 1003 1002 1001 1000 13 85 20 1003 SP 1001 1002 1001 1000 13 98 20

ADD

Figura 3.20. Exemplo de uso de endereamento via Estrutura de Pilha.

Arquitetura de Computadores

3.7 Tipos de Instrues Instrues de movimento de dados: criam uma cpia de um dado armazenado em algum lugar (fonte) e armazenam essa cpia em outro lugar (destino); precisam especificar o endereo da fonte e do destino; Operaes didicas: Combinam dois operandos para produzir um resultado; Exemplo: operaes aritmticas (adio, subtrao, multiplicao e diviso), funes booleanas (AND, OR, NOR, NAND, ...) Operaes mondicas: Utilizam um nico operando para produzir um resultado. Ex.: NOT lgico, negao, deslocamento, rotao, incremento. Instrues de movimentao de dados MOV DST, SRC Move SRC para DST PUSH SRC Coloca SRC na pilha POP DST Tira valor da pilha e armazena em DST XCHG DS1, DS2 Troca DS1 com DS2 Instrues aritmticas ADD DST, SRC Soma DST (destino) com SRC (fonte) SUB DST, SRC Subtrai DST de SRC MUL SRC Multiplica o valor de EAX por SRC INC DST Soma uma unidade a DST DEC DST Subtrai uma unidade de DST NEG DST Nega DST (subtrai seu valor de 0) Instrues booleanas AND DST, SRC AND booleano entre SRC e DST OR DST, SRC OR booleano entre SRC e DST XOR DST, SRC EXCLUSIVE OR booleano entre SRC e DST NOT DST Substitui DST por seu complemento a 1 Instrues de deslocamento/rotao SAL/ DST, #N Desloca DST para esquerda/direita #N bits SAR ROL/ DST, #N Rotaciona DST para esquerda/direita #N ROR bits Figura 3.21. Instrues de movimentao, aritmticas, booleanas e de deslocamento/rotao do Pentium II.

Arquitetura de Computadores

Instrues de comparao e desvio condicional: Alguns programas precisam testar seus dados e alterar a seqncia de instrues executadas de acordo com o teste feito. Exemplo: clculo do fatorial de um nmero ( n! ). Em linguagem de alto nvel teremos: if ( n >= 0 ){ . . // instrues para calcular n! . } else printf(ERRO: nmero negativo!\n); Instrues em linguagem de mquina geralmente testam algum bit da mquina e desviam para um label (rtulo) de acordo com o valor do bit testado; Programa em linguagem de alto nvel if(A!=B){ . //instrues . para A!=B . } else{ . . //instrues . para A==B } Programa em linguagem de montagem CMP A,B; JZS ELSE; . //instrues . para A!=B . ELSE: . . .

//instrues para A==B

Figura 3.22. Exemplo do uso de instrues de comparao e desvio. CMP SRC1, SRC2 JMP ADDR Jxx ADDR Liga os flags com base em SRC1 e SRC2 Desvia para ADDR Desvia condicionalmente para ADDR

Figura 3.23. Instrues de comparao e desvio no Pentium II.

Arquitetura de Computadores

Instrues de chamada de procedimento: Procedimentos: conjunto de instrues que realizam uma determinada tarefa. Podem ser chamados vrias vezes de qualquer parte do programa. Quando um procedimento chamado atravs de instruo de chamada de procedimento (CALL), o programa desviado para a primeira instruo do procedimento. Quando o procedimento termina sua tarefa o programa desviado para a instruo imediatamente seguinte a instruo de sua chamada atravs de instruo de retorno de procedimento (RET). Quando o procedimento chamado, necessrio armazenar o endereo de retorno. O endereo de retorno pode ser armazenado numa pilha, permitindo que um procedimento chame outro procedimento. Quando um procedimento termina o endereo de retorno desempilhado e colocado no PC. CALL RET ADDR Chama o procedimento em ADDR Retorno de procedimento

Figura 3.24. Instrues de procedimento no Pentium II. Instrues de Controle de Lao: Execuo de um grupo de instrues (lao) repetida um nmero fixo de vezes. Baseada em contador que incrementado ou decrementado a cada execuo do lao (loop). Contador deve ser testado a cada execuo do lao, quando o teste assumir uma determinada condio, o lao interrompido. Duas implementaes: com teste no final ou com teste no inicio do lao.

Arquitetura de Computadores

L1

LOAD R1, #1; 1a instruo do lao; . . . ltima instruo do lao; INC R1; CMP R1, #N; JLT L1; 1a instruo aps o lao;

L1

L2 (a)

LOAD R1, #1; CMP #N, R1; JLT L2; 1o instruo do lao; . . . ltima instruo do lao; INC R1; JMP L1 1a instruo aps o lao; (b)

Figura 3.25. Lao com teste: a) no fim, b) no comeo. Instrues de E/S (Entrada/Sada) de dados: (1) E/S programada com espera ocupada: Mtodo de implementao simples. Comum em sistemas de baixo desempenho (sistemas embarcados, sistemas em tempo real). Cada dispositivo possui dois registradores associados: status e buffer de dados. Processador testa registrador de status periodicamente, em lao, at verificar se o dispositivo esta pronto para receber (sada) ou se disponibilizou um dado (entrada). Espera Ocupada. Espera ocupada mantm o processador ocioso enquanto realiza operao de entrada ou sada. Baixo desempenho. Aplicaes dedicadas. Instrues IN e OUT so providas para ler e escrever nos registradores. Instrues selecionam um dos dispositivos de E/S disponveis. 1 caractere lido ou escrito por vez no registrador de dados. Processador precisa executar seqncia explcita de instrues para cada caractere lido ou escrito. Exemplo: terminal com dois dispositivos de E/S: 1 de entrada (teclado) e 1 de sada (vdeo).

Arquitetura de Computadores

Entrada: Processador fica em loop lendo registrador de status do teclado at que o bit Caractere disponvel seja ligado pelo dispositivo. Quando esse bit ligado significa que o teclado acaba de escrever um novo caractere no registrador buffer de dados do teclado. Quando isso ocorre, o programa l o caractere do registrador de dados do teclado, desligando o bit Caractere disponvel.
Processador

Caractere disponvel Loop


0

Status do Teclado
1

Caractere disponvel Status do Teclado

Interrupes Habilitadas Buffer do Teclado

Interrupes Habilitadas Buffer do Teclado Caractere recebido

Figura 3.26. Entrada Programada com Espera Ocupada. Sada: Processador fica em loop lendo registrador de status do vdeo at que o bit PRONTO seja ligado pelo dispositivo. Quando esse bit ligado significa que o vdeo est pronto para receber um novo caractere. Quando isso ocorre, o programa coloca o caractere no registrador de dados do vdeo, desligando o bit PRONTO.
Processador

Pronto Loop
1

Status do Vdeo
0

Pronto Status do Vdeo

Interrupes Habilitadas Buffer do Vdeo

Interrupes Habilitadas Buffer do Vdeo Caractere escrito

Figura 3.27. Sada Programada com Espera Ocupada.

Arquitetura de Computadores

(2) E/S dirigida por interrupo: Processador apenas inicia a operao de E/S. Processador habilita interrupes. Processador sai do processo, ficando livre para outras tarefas. Quando o caractere escrito ou recebido, o dispositivo gera uma interrupo, (ativa sinal no pino de interrupo do processador), avisando que a operao de E/S foi concluda. Sinal de interrupo = (bit Pronto ou bit Caractere Disponvel) AND (bit Habilita Interrupes). Vantagem: o processador no precisa esperar que o dispositivo acabe operao de E/S. Desvantagem: a cada caractere transmitido necessrio tratar uma interrupo. Exemplo de uso de interrupo em uma operao de sada de dados: Dispositivo est Pronto para receber um novo caractere. Processador coloca um caractere no registrador buffer de dados do dispositivo, o que desliga o bit Pronto. Processador liga o bit Habilita Interrupes e sai do processo; Dispositivo implementa a sada do caractere. Concluda a operao de sada, o dispositivo liga o bit Pronto. Sinal de interrupo para o processador gerado como (bit Habilita Interrupo) AND (bit Pronto). Processador desliga bit Habilita Interrupes. Processador interrompe o programa corrente e executa rotina de atendimento a interrupo. Processador retoma o programa interrompido.
Interrupo
Processador Processador

Pronto Status do Vdeo


0 1

Pronto Status do Vdeo


1 1

Interrupes Habilitadas Buffer do Vdeo Caractere escrito

Interrupes Habilitadas Buffer do Vdeo

Figura 3.28. Sada dirigida por Interrupo.

Arquitetura de Computadores

(3) E/S com acesso direto memria (DMA): Utiliza um controlador de DMA dedicado que toma posse do barramento e realiza E/S programada, avisando ao processador, por meio de interrupo, quando a operao de E/S estiver finalizada. Vantagens: O processador no precisa ficar em espera ocupada, assim fica livre para realizar outras tarefas. No necessrio tratar uma interrupo por caractere transmitido, a interrupo s gerada aps a transmisso de um bloco de caracteres de tamanho especificado. Desvantagens: Problema: toda vez que o controlador requisita o barramento, seja para acessar a memria ou para acessar o dispositivo, ele tem prioridade sobre o processador. Diz-se que o controlador de DMA rouba ciclos de barramento do processador. Controlador de DMA possui, no mnimo, quatro registradores: Endereo: armazena o endereo de memria a ser lido ou escrito. Contador: armazena o nmero de bytes a serem lidos ou escritos. Dispositivo: armazena o nmero do dispositivo E/S a ser usado. Direo: indica se operao de leitura ou escrita no dispositivo. Exemplo: escrever 256 bytes, armazenados na memria principal a partir do endereo 1023, para um dispositivo de sada identificado pelo nmero 7. Considere Leitura = 0, Escrita = 1. Processador inicia os registradores do controlador de DMA: Endereo = 1023, Contador = 256, Dispositivo = 7, Direo = 1. Controlador de DMA requisita barramento para ler o endereo 1023 da memria, fazendo a sua leitura e obtendo um byte. Controlador solicita escrita no dispositivo 7 para enviar um byte. Quando o byte for enviado, controlador incrementa o endereo e decrementa o contador, verificando se este chegou em zero. Caso o contador no seja igual a zero processo todo repetido para enviar o prximo byte. Quando o contador chegar a zero, o controlador de DMA para o processo e avisa o fim da operao de E/S ao processador por meio de uma interrupo.

Arquitetura de Computadores

DMA
Endereo = 1023 Processador Contador = 256 Dispositivo = 7 Direo = 1

Memria
. . .

Controlador do dispositivo 7

Barramento Figura 3.29. E/S baseada em Controlador de DMA. 3.8 Fluxo de Controle O fluxo de controle seqncia na qual as instrues so executadas. A execuo da maioria das instrues no altera o fluxo de controle. Em um fluxo de controle normal as instrues so buscadas em palavras consecutivas da memria. Aps a execuo de uma instruo, a prxima instruo buscada na memria incrementando o PC do tamanho da instruo que acaba de ser executada. O fluxo de controle normal alterado por desvios, chamadas de procedimentos, co-rotinas, armadilhas (traps) e interrupes. Desvios: quando ocorre um desvio em um programa a prxima instruo a ser buscada no mais a instruo na posio consecutiva da memria e sim a instruo armazenada no endereo de destino do desvio. as instrues de desvio (condicional ou incondicional) em baixo nvel so utilizadas para implementar as estruturas if, while, for e outras presentes na maioria das linguagens de alto nvel. PC Desvios

tempo Figura 3.30. Mudana do fluxo de controle em instrues de desvios.

Arquitetura de Computadores

Procedimentos: Procedimento uma seqncia de instrues que pode ser executada vrias vezes a partir de diferentes partes de um programa (ou de outro procedimento). Em lugar de repetir as linhas de cdigo correspondentes ao procedimento em vrias partes do programa, o procedimento aparece apenas uma vez. Duas instrues so fornecidas: Chamada de procedimento (CALL): substitui as instrues do procedimento em cada parte do programa onde elas deveriam ser executadas. Recebe como parmetro o endereo da primeira instruo do procedimento. A execuo da chamada desvia o fluxo de controle para a primeira instruo do procedimento. Exemplo: CALL PROCED. Retorno de procedimento (RET): ltima instruo do procedimento. Sua execuo desvia o fluxo para a instruo seguinte chamada corrente do procedimento correspondente.
Procedimento Chamador CALL Procedimento Chamado

CALL

RET CALL

Figura 3.31. Chamada de procedimento. Para poder retornar, preciso armazenar o endereo de retorno do procedimento em algum lugar. A pilha o lugar mais indicado para armazenar o endereo de retorno, pois permite implementar procedimentos que chamam outros procedimentos.

Arquitetura de Computadores

Os parmetros e variveis locais do procedimento so armazenados tambm na pilha. Quando um procedimento chamado, empilha-se uma estrutura de pilha, que contm os parmetros, variveis locais e endereo de retorno do procedimento. A estrutura no topo da pilha a estrutura do procedimento corrente; Alm do ponteiro de pilha (SP) necessrio outro ponteiro, a Base Local (LB - Local Base), que aponta para um endereo fixo da estrutura. Variveis locais e parmetros do procedimento so acessados utilizando um deslocamento fixo com relao a LB; LB necessrio, pois pode ser necessrio armazenar outros valores na pilha durante o procedimento, com isso o deslocamento das variveis locais e parmetros com relao a SP no fixo. Para exemplificar considere o seguinte programa em C: void soma( int, int, int); void subtracao( int, int, int); void multiplicacao( int i, int j, int k); int main(){ soma( 1, 1, 1); return 0; } void soma( int i, int j, int k){ int s; s = i+j+k; subtracao( s, j, k); multiplicacao( s, j, k); } void subtracao( int i, int j, int k){ int s; s = i-j-k; multiplicacao( s, j, k); } void multiplicacao( int i, int j, int k){ int m; m = i*j*k; }

Arquitetura de Computadores

Quando o programa principal vai fazer a chamada soma(1,1,1); primeiro so empilhados os trs parmetros e em seguida uma instruo CALL executada empilhando o endereo de retorno. Aps isso o procedimento faz o seguinte: Empilha LB anterior; Atualiza LB com o valor de SP; Avana SP para reservar espao para as variveis locais; Feito isso a pilha estar como mostrado em (a); Neste exemplo, onde os endereos aumentam a medida que a pilha cresce, as variveis locais do procedimento (no caso s) so acessadas utilizando um deslocamento positivo de endereos com relao a LB; Caso seja necessrio acessar os parmetros, feito um deslocamento negativo de endereos com relao a LB; Na seqncia do procedimento, s=3 calculado e feita a chamada subtracao(3,1,1); Uma nova estrutura empilhada e a pilha fica como em (b); Em seguida a funo subtracao calcula s=1 e chama multiplicacao(1,1,1); Aps essa chamada a pilha fica como mostrada em (c); A funo multiplicacao calcula m=1 e retorna, desempilhando uma estrutura; assim a pilha volta a ficar com a configurao anterior como mostra (d); Em seguida subtracao tambm retorna e a pilha fica como mostra (e); Quando soma retoma o controle do programa feita uma chamada para multiplicacao(3,1,1); Uma nova estrutura empilhada ficando a pilha como mostra (f) . Esse processo continua at que o controle volte para o programa principal;

Arquitetura de Computadores

m LB ant =1020 End de 1030 retorno k=1 j=1 i=1 s LB ant =1008 SP LB s=1 1028 1026 1024 1022

SP LB

s=1 LB ant =1008 End de 1018 retorno k=2 j=1 i=2 s=3 1016 1014 1012 1010

SP LB

s LB ant =1008 End de 1018 retorno k=1 j=1 i=3 s=3 LB ant End de retorno 1006 k=1 j=1 i=1 (e) 1004 1002 1000 SP LB s=3 1016 1014 1012 1010

SP LB

LB ant 1020 =1008 End de 1018 retorno k=1 j=1 i=3 s=3 1016 1014 1012 1010

End de 1018 retorno k=1 j=1 i=3 s LB ant End de retorno 1006 k=1 j=1 i=1 (a) 1004 1002 1000 SP LB s=3 LB ant 1016 1014 1012 1010 1008

LB ant 1008 End de retorno 1006 k=1 j=1 i=1 (c) 1004 1002 1000

LB ant 1008 End de 1006 retorno k=1 j=1 i=1 (d) 1004 1002 1000

LB ant 1008 End de 1006 retorno k=1 j=1 i=1 (f) 1004 1002 1000

End de retorno 1006 k=1 j=1 i=1 (b) 1004 1002 1000

Figura 3.32. Comportamento da pilha em procedimentos. Co-Rotinas: Co-Rotinas so pares de seqncias de instrues que executam tarefas interdependentes em paralelo. Aplicaes mais comuns: paralelismo simulado, teste de software para multiprocessadores. Implementadas atravs de instruo REATIVA: empilha endereo da prxima instruo da co-rotina corrente e desvia para a instruo seguinte instruo mais recentemente executada da outra co-rotina. Dadas duas co-rotinas A e B, quando A precisa retornar o controle para B (REATIVA B), desvia para o comando seguinte quele que originou a chamada a A (REATIVA A), (e vice-versa). A Instruo REATIVA desempilha o endereo de destino, empilha o PC (endereo de retorno) e coloca o endereo de destino no PC, ou seja, logicamente corresponde a uma troca entre o (PC) e o (SP).

Arquitetura de Computadores

Co-Rotina A REATIVA B

Co-Rotina B

REATIVA A REATIVA B REATIVA A REATIVA B

REATIVA A

Figura 3.33. Fluxo de controle em Co-Rotinas. Armadilhas (Traps): Uma armadilha uma chamada automtica de procedimento, causada pela ocorrncia de uma situao especial (exceo) na execuo do programa, detectada pelo hardware ou pelo microprograma. Durante a execuo de um programa, uma trap pode ser gerada, por exemplo, quando ocorre um overflow, uma violao de proteo de memria, uma diviso por zero, estouro de pilha, etc. Quando um ocorre uma trap, o fluxo de controle alterado para uma posio fixa da memria, que contm uma chamada para uma rotina de tratamento de trap. As traps so causadas pelo prprio programa. As traps so ditas sncronas, j que, na medida em que toda vez que um programa executado com uma mesma entrada, a trap gerada sempre no mesmo ponto.

Arquitetura de Computadores

Interrupes: Uma interrupo uma alterao no fluxo de controle causada por um evento externo ao programa (geralmente, operaes de E/S). Quando ocorre uma interrupo, o programa corrente para de ser executado e o controle transferido para o tratamento da interrupo atravs de uma Rotina de Servio de Interrupo (RSI). O endereo da primeira instruo da RSI est armazenado numa estrutura denominada Vetor de Interrupo. Os vrios dispositivos de E/S so identificados por um nmero, o qual utilizado para indexar o vetor de interrupo. Ao trmino da rotina de servio, o fluxo de controle retorna para o programa interrompido. Antes de uma rotina de tratamento de interrupo ser iniciada, o estado atual da mquina (valores do PC, do SP, etc., por exemplo), salvo, normalmente, na pilha. Quando a rotina de tratamento termina o estado da mquina anterior interrupo deve ser restaurado. A interrupo dita transparente ao programa interrompido, o qual continua a sua execuo como se nada tivesse acontecido. Ao contrrio das traps, as interrupes so assncronas, pois podem ocorrer aleatriamente, em qualquer ponto de um programa a cada nova execuo do mesmo. Problema: quando existem vrios dispositivos de E/S, uma interrupo pode ocorrer quando outra est em andamento. Soluo 1: quando uma interrupo iniciada, qualquer outra inibida. Esta soluo pode causar problemas de perda de dados em um dispositivo que receba os dados muito rapidamente. Soluo 2: atribuir prioridades aos dispositivos. Dispositivos com tempo crtico possuem maior prioridade. Quando uma nova interrupo ocorre com prioridade maior do que a RSI corrente, o estado atual empilhado e a nova RSI executada. Caso a nova interrupo tenha prioridade menor do que a atual, ela no atendida e fica pendente. Interrupes por software tambm so possveis. Programas mais crticos devem ter maior prioridade (armazenada na PSW). Programas do usurio tm a mais baixa prioridade.

Arquitetura de Computadores

Exemplo: computador com trs dispositivos de E/S, A, B e C, cada um com prioridade 2, 4 e 5 respectivamente. O programa do usurio, inicialmente em execuo, possui prioridade zero O programa do usurio interrompido pelo dispositivo A. O estado atual da mquina empilhado e a RSI de A executada. RSI de A interrompida pelo dispositivo C (prioridade maior). O estado atual da mquina empilhado e a RSI de C executada. Dispositivo B gera interrupo. Como a prioridade do dispositivo B menor que a prioridade do dispositivo C, o seu pedido de interrupo fica pendente e a RSI de C continua. Quando a RSI de C termina, o estado da RSI de A desempilhado e nesse mesmo instante a interrupo de B recebe acknowledge. O estado atual da mquina (correspondente RSI de A) empilhado novamente. E a RSI de B executada. Ao fim da RSI de B, o estado da RSI de A desempilhado e esta rotina continua at o fim. Ao fim da RSI de A, o estado do programa do usurio desempilhado e o programa continua a sua execuo a partir do ponto interrompido, como se nada tivesse ocorrido.
Interrupo do dispositivo B, prioridade 4, pendente Interrupo do dispositivo C prioridade 5

A RSI do dispositivo C termina, interrupo do dispositivo B atendida A RSI do dispositivo B termina A RSI do dispositivo A termina

Interrupo do dispositivo A, prioridade 2 0 10

15

20

25

35

40 Tempo Programa do usurio

Programa do usurio

RSI de A

RSI de C

RSI de B

RSI de A

usurio

usurio A

usurio A

usurio

Pilha

3.34. Atendimento a interrupes com nveis de prioridade.

Arquitetura de Computadores

Aes de Hardware e Software numa interrupo: Exemplo: imprimir uma linha de caracteres em um terminal. Caracteres armazenados em um buffer. Varivel global ptr (ponteiro) aponta para o prximo caractere a ser escrito. Varivel count armazena o nmero de caracteres a imprimir. Utilizando o esquema de E/S dirigida por interrupo, o processador verifica se o dispositivo est pronto. Caso esteja, um caractere colocado no buffer de dados. O processador vai realizar outra tarefa e fica a espera da interrupo. Quando o caractere exibido, a seguinte seqncia de eventos realizada: Aes do Hardware: 1. Controlador do dispositivo ativa a linha de interrupo no barramento para iniciar a interrupo. 2. Processador em condies de atender a interrupo ativa linha de reconhecimento (acknowledge) da interrupo no barramento. 3. Controlador do dispositivo coloca nmero inteiro (vetor de interrupo) que o identifica na via de dados do barramento. 4. Processador l o vetor de interrupo e o armazena. 5. Processador empilha PC e registrador de Status (PSW). 6. Processador localiza o endereo da RSI do dispositivo utilizando o vetor de interrupo como ndice para uma tabela no incio da memria. Este endereo carregado no PC. Aes do Software: 7. Rotina de tratamento salva (na pilha, por exemplo), o valor atual de todos os registradores. 8. Dispositivo que causou a interrupo identificado. 9. Cdigos de estado e outros dados podem ser obtidos agora. 10. Eventuais erros de E/S podem ser tratados neste momento. 11. ptr incrementado de um byte e count decrementado de uma unidade, caso o contador count seja maior do que zero, ainda h caracteres a serem transferidos. O byte apontado por ptr colocado no buffer de dados do dispositivo. 12. Se necessrio, gera-se cdigo especial para avisar ao dispositivo que uma interrupo est sendo processada. 13. Os registradores salvos na pilha so restaurados. 14. A rotina de tratamento retorna (instruo RETURN FROM INTERRUPT) e tudo volta ao estado anterior interrupo.

Arquitetura de Computadores