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

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

Organização de Computadores Paulo Maciel. Arquitetura de Computadores 1 Introdu₤₧o 1 Resumo Histórico 1 Componentes computador 1 Componentes de um processador.

Apresentações semelhantes


Apresentação em tema: "Organização de Computadores Paulo Maciel. Arquitetura de Computadores 1 Introdu₤₧o 1 Resumo Histórico 1 Componentes computador 1 Componentes de um processador."— Transcrição da apresentação:

1 Organização de Computadores Paulo Maciel

2 Arquitetura de Computadores 1 Introdu₤₧o 1 Resumo Histórico 1 Componentes computador 1 Componentes de um processador 1 Opera₤ões de um processador 1 Sistema de Interconex₧o 1 Estruturas Estáticas e Dinâmicas 1 Barramentos 1 Memória Interna 1 Memória Semicondutora 1 Memória Cache 1 Memória Externa 1 Disco Magn₫tico 1 CD-ROM 1 Fita Magn₫tica 1 Dispositivos de Entrada e Saída 1 I/O Programado 1 Tratado por Interrup₤₧o 1 DMA 1 Canais 1 SCSI

3 Arquitetura de Computadores 1 Suporte do Sistema Operacional 1 Vis₧o Geral de um Sistema Operacional 1 Escalonamento 1 Gerenciamento de Memória 1 Unidade de Processamento 1 Componentes 1 Via de Dados 1 Unidade de Controle 1 Aritm₫tica 1 Controle Hardwired 1 Controle Microprogramado 1 RISC versus CISC

4 Arquitetura de Computadores 1 Software 1 Modos de endere₤amento de dados e programa 1 Instru₤ões 1 Introdu₤₧o à programa₤₧o 1 Interrup₤ões 1 Classifica₤₧o 1 Processamento de Interrup₤ões 1 Macroassembly 1 Programando com Servi₤os do Sistema Operacional 1 Arquitetura X86 1 Modos de opera₤₧o 1 Modelo de software 1 Descri₤₧o funcional 1 Opera₤ões sobre o barramento 1 Pipelining 1 Processador Super-escalar 1 Previs₧o de desvio 1 Memória cache 1 Cache de instru₤₧o e de dados 1 Unidade de Ponto Flutuante

5 Arquitetura de Computadores Material Didático: 1 Computer Organization and Architecture Autor: William Stallings Editora : Prentice-Hall, Inc 1 The Pentium Microprocessosr Autor - James L. Antonakos Editora: Prentice-Hall, Inc. 1 Outros Livros

6 Computadores Mecânicos = Máquina de Pascal – Opera₤ões:Soma e Subtra₤₧o – Manivela Blaise Pascal ( ) = Máquina Analítica – Componentes: » Armazenamento » Engenho » Se₤₧o de Entrada » Se₤₧o de Saída – Cartões Perfurados – Charles Babbage ( ) – Ada Lovelace

7 Computador El₫trico = Advento da Energia El₫trica = Desenvolvimento da tecnologia eletrot₫cnica – dispositivos eletromagn₫ticos – rel₫s = Automatiza₤₧o dos processos mecânicos = Máquinas de Aiken – Rel₫s – Dígitos decimais – Fita de papel perfurado

8 Computador Eletrônico –Máquina Enigma = COLOSSUS (1943) » 1° computador eletrônico Alan Turing

9 1ª Gera₤₧o ( ) –ENIAC » Tecnologia - Válvulas e rel₫s » Arquitetura: 20 registradores 10 digitos decimais » Programa₤₧o: Chaves Jonh Mauchley –UNIVAC –IBM 7090

10 1ª Gera₤₧o ( ) = EDSAC - Jonh von Neumann – Tecnologia - Válvulas e rel₫s – Arquitetura: » Componentes Memória Unidade lógico-aritm₫tica Unidade de controle Equipamentos de entrada Equipamentos de saída » Aritm₫tica binária – Programa em linguagem de baixo nível armazenado em memória Memória Unidade de Controle ULA EntradaSaída Acumulador Arquitetura de von Neumann

11 Camadas de um Sistema Computacional = Linguagens = Sistemas Operacionais = MáquinasMáquinaSO Aplica₤ões

12 1ª Gera₤₧o ( ) = Máquinas – UNIVAC – IBM 7090 = Linguagens ¥ Código Absoluto Fios e Paineis Nesta ₫poca os conceitos de linguagem de programa₤₧o e de sistemas operacionias n₧o estavam claros Um único grupo de pessoas projetava, construia, programava, operava e efetuava manuten₤₧o das máquinas

13 2ª Gera₤₧o ( ) = Advento do Transistor – redu₤₧o de dimensões – redu₤₧o do consumo de pot ₨ ncia – possibilita a constru₤₧o de equipamentos mais complexos = TX-0 »1° Computador transistorizado – MIT = PDP-1 – Metade do desempenho do IBM 7090 – ~5% o valor do IBM 7090 – DEC = IBM 1401 = IBM 7094

14 2ª Gera₤₧o ( ) = Sistema Operacional Batch – Fortran Monitor System – IBSYS 1 Distin₤₧o clara das atividades e grupos de pessoas na execu₤₧o de tarefas  Linguagens de Alto Nível FORTRANALGOL

15 3ª Gera₤₧o ( ) = Circuitos Integrados – redu₤₧o de dimensões – redu₤₧o do consumo de pot ₨ ncia – possibilita a constru₤₧o de equipamentos mais complexos – melhoria de desempenho = Microprocessadores = IBM System/360 – Família de Computadores com diferentes desempenhos, precos, mas compatíveis. = DEC PDP-11 – Minicomputador de 16 bits. = Microprocessadores – INTEL » 4004,8008,8080,8085,8086 – ZILOG » Z80 – Motorola » 68000

16 3ª Gera₤₧o ( ) = Multiprograma₤₧o = Timesharing = Simula = Pascal = C = ML = Smalltalk

17 4ª Gera₤₧o ( ?) = Very Large Scale Integration = Computadores Pessoais = Workstations = Computadores – Cray – SUN - 20 – IBM SP2 = Processadores – Intel PENTIUM – ALPHA Digital – PowerPC

18 4ª Gera₤₧o ( ?) = Sistemas Operacionais para Redes = Sistemas Operacionais Distribuídos ¥ Unix, Windows NT = C++ = VisualBasic (Programa₤₧o Visual) = Java (Aplica₤ões para WEB)

19 Arquitetura de Computadores = Abordagens de Hardware e de Software Seqü ₨ ncia de Fun₤ões Aritm₫tica e Lógicas Dados Resultados Programa₤₧o em Hardware Fun₤ões Aritm₫tica e Lógicas de Propósito Geral Dados Resultados Programa₤₧o em Software Interpretador de Instru₤ões Códigos de Instru₤ões Controle

20 Arquitetura de Computadores = Diagrama em Bloco I/O Paralelo I/O Serial Circuitos de Interrup₤₧o Circuitos de Temporiza₤₧o CPU Memória

21 Sistema de Memória = Hierárquia – Interna » Registradores » Cache » Memória Principal – Externa » Disco Magn₫tico » Fita = Desempenho × Custo = Princípio da Localidade Memória de Massa Memória Principal Reg.

22 Processador Hipot₫tico Reg. Uso Geral Data buffer Latch End. A Unidade de Controle Reg. Inst Dec. Inst Flags Reg. Aux. ALU Barramento de Dados Barramento de Endere₤os Barramento de Controle Desempenho Espa₤o de endere₤amento

23 Arquitetura de Computadores = Ciclo de Instrução – Ciclo de Busca – Ciclo de Decodificação – Ciclo de Leitura – Ciclo de Execução – Ciclo de Escrita

24 Arquitetura de Computadores = Formato Genérico de Uma Instrução = Exemplos: – mov al,01h – mov al,[0400] – mov al,[bx+si] Código da Instrução Dado, Endereço ou Modo de Endereçamento

25 Arquitetura de Computadores = Diagrama de Estado do Ciclo de Instrução Busca Inst. Cal. End. Prox. Inst. Lê Operand. Cal. End. Operand. Exec. Operaç. Cal. End. Operand. Escrev. Operand. Dec. Inst. Múltiplos Operandos Múltiplos Resultados Retorna para string ou vetor Instrução Finalizada. Busca Nova Instrução

26 Arquitetura de Computadores = Interrupções –Internas- erro de paridade, divisão por zero –Externas - relógio, teclado –Mascarável- pode ser inibida –Não Mascarável - não pode ser inibida

27 Arquitetura de Computadores = Interrupções na Arquitetura x86 – HardwareInternas Externas Mascarável Não-Mascarável – Software Sistema Operacional Usuário

28 Arquitetura de Computadores Programa do Usuário Servi,co de Interrupção 1 2 i i+1 m

29 Arquitetura de Computadores = Diagrama de Estado do Ciclo de Instrução com Interrupção Busca Inst. Cal. End. Prox. Inst. L ₨ Operand. Cal. End. Operand. Exec. Operaç. Cal. End. Operand. Escrev. Operand. Dec. Inst. Múltiplos Operandos Múltiplos Resultados Retorna para string ou vetor Instrução Finalizada. Busca Nova Instrução Verif. se há interrp. Interrupção Sem Interrup.

30 Arquitetura de Computadores Programa do Usuário Serviço da Interrupção X 1 2 i i+1 j j+1 m Serviço da Interrupção Y Múltiplas Interrupções

31 Arquitetura de Computadores Programa do Usuário Serviço da Interrupão X 1 2 i i+1 m Serviço da Interrupção Y Interrupções Aninhadas J j+1

32 Arquitetura de Computadores I/O CPU Memória Barramento Dados Endereço Controle Desempenho Espaço de endereçamento

33 Arquitetura de Computadores Barramento " Linhas de Controle Típicas " Escrita em memória " Leitura de memória " Escrita em I/O " Leitura de I/O " Solicitação de Barramento " Reconhecimento da Solicitação do Barramento " Solicitação de Interrupção " Reconhecimento de Interrupção " Clock " Reset

34 Arquitetura de Computadores " Barramento Hierárquico CPU Cache Memória Modem I/O Serial SCSI Network Controlador Locoal de I/O Interface de Expansão Barr. Local Barr. do Sistema Expansão do Bus

35 Arquitetura de Computadores Elementos de Projeto de um Barramento  Tipo  Multiplexado  Dedicado I/O ParaleloI/O SerialCPUMemória Vantagem Menos linhas Possível menor Custo Desvantagem Circuitos dos módulos é mais complexo Desempenh o

36 Arquitetura de Computadores Elementos de Projeto de um Barramento  Tipo  Multiplexado  Dedicado I/O ParaleloI/O SerialCPUMemória Vantagem Menor contenção Desempenho Desvantagem Mais linhas Custo Adaptador Barr. de I/O Adaptador Barr. local

37 Arquitetura de Computadores Elementos de Projeto de um Barramento  Método de Arbitragem  Centralizado  Distribuído P0 LM0 P1 LM1 Árbitro Req0 Req1 Gnt0 Gnt1 I/OSM

38 Arquitetura de Computadores Elementos de Projeto de um Barramento  Método de Arbitragem  Centralizado  Distribuído P0 LM0 I/O SM P1 LM1 P2 LM2 Term. Barr. Term. Barr. BPI BPO Busy

39 Arquitetura de Computadores Elementos de Projeto de um Barramento  Temporização  Síncrono  Assíncrono Válido P/ CPU mrq rd add data clk Leitura de Memória CPUMemória Circuitos de Temporiza₤₧o clk mrq rd AD bus

40 Arquitetura de Computadores Elementos de Projeto de um Barramento  Temporização  Síncrono  Assíncrono Válido P/ CPU msyn rd add data Leitura de Memória ssyn CPUMemória msyn ssyn rd AD bus

41 Arquitetura de Computadores Elementos de Projeto de um Barramento  Largura  Baramento de Dados : desempenho  Barramento de Endereço: espaço de endereçamento

42 Arquitetura de Computadores " PCI - Peripherical Component Interconnect CPU Ponte/ Controlador de Memória Áudio Dispositivos I/O SCSI Ponte para Expansão Barr. Local Barramento PCI Expansão do Bus DRAM Contolador de Vídeo Cache Network

43 Arquitetura de Computadores " PCI - Peripherical Component Interconnect " Estrutura " Pinos de Sistema ( reset e clock ) " Pinos de Dados e Endereços ( 32 linhas multiplexadas de dados e endereços, erro de paridade ) " Pinos de Controle de Interface ( Coodernação e controle de transações entre dispositivos - IRDY, TRDY, IDSEL, DEVSEL ) " Pinos de Arbitragem - ( Req, GNT ) " Pinos de Erro - ( PERR,SERR ) " Pinos de Interrupção - ( INTA,INTB,INTC,INTD ) " Pinos de Suporte à Cache - ( SOB,SDONE ) " Pinos de Extensão para Barr. de 64 Bits - ( Linhas de endereço e dados multipliexadas, linhas de erro etc ) " Pinos JTAG - ( Procedimentos de teste definidos no padrão IEEE ) "

44 Arquitetura de Computadores " PCI - Peripherical Component Interconnect " Comandos " Reconhecimento de Interrupção " Ciclo Especial - ( Utilizado por um iniciador para enviar comando para mais de um destino ao memo tempo) " Leitura e Escrita de I/O " Leitura de Memória " Leitura " Leitura de Linha " Leitura Múltipla " Escrita em Memória " Escrita em Memória com Invalidação " Leitura de Configuração de Dispositivo " Escrita de Configuração de Dispositivo " Ciclo de Endereçamento Dual - ( Endereçamento de 64 bits ) "

45 Sistema de Memória  Hierárquia – Registradores – Cache – Memória Principal – Disco Magnético – CDROM – Fita Memória de Massa Memória Interna Memória Externa Memória Off-line

46 Sistema de Memória Memória Principal - semicondutora - VolateídadeCategoriaTipoApagamentoEscrita Volátil E/L RAM Elétrico Elétrico Só leitura ROM Ñ é PossívelMáscara PROMElétrico Ñ volátilQuase só EPROM UV de leitura EEPROM Elétrico

47 Sistema de Memória  Memória ROM A0A0 A n-1 D m-1 D0D0 CS n  m ROM Diagrama em Bloco Vcc D 0 D 1 D m-1 A 0 An-1 CS Estrutura Interna Lógica de Decod.

48 Sistema de Memória  Memória PROM A0A0 A n-1 D m-1 D0D0 CS n  m PROM Diagrama em Bloco Vcc D 0 D 1 D m-1 A 0 An-1 CS Estrutura Interna Lógica de Decod. Fusível

49 Sistema de Memória  Memória EPROM A0A0 A n-1 D m-1 D0D0 CS n  m EPROM Diagrama em Bloco OE/ V pp Modo Entradas Saídas CS OE/V pp Ler/ VL VL dados_saída Verificar Saída VL VH Alta Imp. Desabilitada Standby VH X Alta Imp. Programa VL VPP Dados_entrada

50 Sistema de Memória  Memória EEPROM A0A0 A n-1 D m-1 D0D0 CS n  m EEPROM Diagrama em Bloco A 0 An-1 OE Modo Entradas Saídas CS OE WE Ler VL VL VH Dados_saída Escreve VL VH VL Dados_ent. Standby VH X X Alta imp. WE

51 Sistema de Memória  Memória RAM Estática A0A0 A n-1 D m-1 D0D0 CS n  m RAM Diagrama em Bloco A 0 An-1 RW A 0 An-1 CS Lógica de Decod. Buffer de Saída Buffer de Entrada Registradores R/W Ent_ Dados Saída_Dados Célula

52 Sistema de Memória  Memória RAM Estática A 0 An-1 A 0 An-1 CS Lógica de Decod. Buffer de Saída Buffer de Entrada Registradores R/W Ent_ Dados Saída_Dados Célula Vdd Q1 Q2 Q3 Q4 Célula

53 Sistema de Memória  Memória RAM Dinâmica A 0 /A k A k-1 /A n-1 D in D out RAS n  1 RAM Diagrama em Bloco A 0 An-1 RW A 0 An-1 CS Lógica de Decod. Matrix R/W Ent_ Dados Saída_Dados Célula CAS

54 Memória Cache = Princípio da Localidade – Instruções – Dados = Operação Processador Cache Memória MOV CX,1000 SUB AX,AX Next: ADD AX,[SI] MOV [SI],AX INC SI LOOP Next

55 Memória Cache = Princípio da Localidade – Tacc=HitRate  Tcache+(1- HitRate)  (Tcache+Tmem) – Tcache=10 ns – Tmem= 70 ns – HitRate= 0,9 Tacc= 17 ns Processador Cache Memória

56 Memória Cache = Política de Busca Define quando e quais informações buscar na CACHE – Demanda » Busca uma linha i quando esta se faz necessário – Pré-busca » Busca a linha i+1 quando a linha i for referida

57 Memória Cache = Política de Escrita Define quando uma palavra deve ser alterada na memória principal. – Writethrough » Garante consistência dos dados » Aumenta o tráfego no barramento – Writeback » Reduz o tráfego no barramento » Necessita de mecanismos para manutenção de consistência

58 Memória Cache = Política de Substituição Define como uma linha da memória CACHE deve ser substituída. – RAND - Aleatório – FIFO - First in First Out – LRU - Least Recently Used

59 Memória Cache Organização = Mapeamento Direto – Vantagem Simplicidade do Hardware Algoritmo de Substituição ₫ simples – Desvantagem Não é flexível D iversos blocos de memória são mapeados na mesma linha da CACHE Endereço de 32 bits Tag Linha TAG Dado = 32 bytes Número de Linhas 27 = 128

60 Memória Cache Organização = Completamente Associativa – Vantagem Flexibilidade – Desvantagem Complexidade do Hardware 27 5 Endereço de 32 bits Tag Linha TAG Dado = 32 bytes

61 Memória Cache Organização = Associativa por Conjunto (Set Associative) TAG Dado = 32 bytes TAG Dado = 32 bytes Endereço de 32 bits Tag Linha

62 Coer ₨ ncia de Cache em Sistemas Multiprocessadores = Protocolo de coerência de Cache MESI – Modified - a linha corrente foi modificada (diferente da informação na memória principal) e pertence a uma única cache. – Exclusive - linha são modificada e exclusiva de uma única cache. Escrevendo-se nesta linha, esta passa para o estado Modified. – Shared - linha corrente pertence a mais de uma cache. Ao escrever-se nesta linha, um writethrough é gerado e invalidam-se as outras cópias em outras caches. – Invalid - a linha corrente está vazia. Uma leitura desta linha gera um miss.

63 Coerência de Cache em Sistemas Multiprocessadores Barramento I cache D cache X=7 X=30 X=10 P1 P2 p3 p4 I cache D cache I cache D cache I cache D cache Memória

64 Arquitetura de Computadores = Classifica₤₧o de Flyn – SISD - Processadores von Neumann – SIMD - Array Processors – MISD – MIMD - Multiprocessadores /Multicomputadores = Classifica₤₧o para Arquiteturas Paralelas – Computadores Pipeline – Array Processors – MIMD

65 Multiprocessadores - UMA Sistema de Interconex₧o P1P2Pn I/OSM1 SMm Memória Compartilhada Fortemente Acoplados Aplica₤ões Gerais Time-sharing

66 Multiprocessadores - NUMA GSM Rede de Interconex₧o Global Modelo Cedar - University Illinios GSM P CSM P P P C1 C2

67 Multiprocessadores - COMA P Rede de Interconex₧o Global P P Cache DDM - Swedish Institute of Computer Science

68 Multicomputadores M P Rede de Inter- conex₧o Intel iPSC/1 - Intel Paragon - MIT J-Machine-

69 Memória Externa Disco Magnético –Organização dos Dados Superfícies Trilhas (separadas por gaps) Setores (separados por gaps) Densidade Setor Trilha Gap

70 Memória Externa Disco Magnético –Características Físicas Cabeças Móveis Trilhas Cabeça

71 Memória Externa Disco Magnético –Características Físicas Cabeças Fixas Trilhas Cabeças

72 Memória Externa Disco Magnético –Características Físicas Cabeças Fixas Cabeças Móveis Removíveis (Floppy disk)

73 Memória Externa Disco Magnético –Características Físicas Cabeças Fixas Cabeças Móveis Removíveis (Floppy disk) Fixos (hard disk)

74 Memória Externa Disco Magnético –Características Físicas Sistema das Cabeças de R/W –Contact (Floppy disk) –Fixed Gap –Gap Aerodinâmico (Winchester)

75 Memória Externa Disco Magnético Setor Trilha Gap Superficies Cabeças de Leitura/Gravação T acesso =T seek + T lat + T trans Taxa transf = bytes transf./ T acesso

76 Memória Externa CD-ROM –Tecnologia Disco feito de resina Coberto por alumínio reflexivo Informação gravada através criados por raios lazer Proteção final feita por um lacquer Leitura feita através da relexão de raios lazer sobre a superfície

77 Memória Externa CD-ROM Velocidade Angular Constante Velocidade Linear Constante Desvantagem Capacidade dos setores externos fica limitada a do mais interno Vantagem Simplicidade no endereçamento de setores Vantagem Maior capacidade de armazenamento Desvantagem Sistema de endereçamento mais complexo * CD-ROM

78 Memória Externa CD-ROM r=32,55  m Espaçamento entre trilhas (eet)= 1.6  m #trilhas = r/eet =20344 (aparentes) De fato, tem-se uma espiral! Comprimento da espiral = 5,27Km VLC = 1,2 m/s Tempo para percorrer o disco = 4391s = 73,2 min Densidade de Armazenamento = 176,4 Kbytes/s  Capacidade = 774,57 Mbytes

79 Memória Externa CD-ROM –Organização dos Dados Superfícies Trilhas (separadas por gaps) Blocos –Formato do Bloco Sync Id Dados M2=dados, M1=ECC 00 FF×1000 End M2048 bytes 288 bytes ou ECC Modos M0 - campo de dados em branco M bytes + ECC M sem ECC

80 Memória Externa WORM (Write Once Read Many) –Tecnologia Disco feito de resina Coberto por alumínio reflexivo Pré-formatação feita através de raios lazer que cria uma série de “bolhas” Gravação feita por um sistema lazer (não tão poderoso) que rompe as “bolhas” Leitura feita através da relexão de raios lazer sobre a superfície –Layout - VAC –Capacidade característica = 650 Mbytes

81 Memória Externa Erasable Optical Disk –Tecnologia Disco feito de resina Coberto por um material cuja reflexibilidade pode ser Alta, Baixa ou indeterminada. A gravação é feita através de raio lazer que altera o estado de reflexivo do material Leitura feita através da relexão de raios lazer sobre a superfície –Layout - VAC –Capacidade Característica : 650 Mbytes

82 Memória Externa Fita Magnética –Tecnologia Material recoberto por oxido magnético. –Organização dos dados Gap Registro Trilhas

83 Memória Externa Fita Magnética –Número Típico de Trilhas - 9, 18, 36 –Acesso Seqüencial –Vantagem : Custo –Desvantagem : Tempo de Acesso

84 Entrada/Saída Técnicas para Controle de I/O –I/O programado –Baseado em Interrupções –Baseado em DMA

85 Entrada/Saída Modelo de Genérico de Dispositivo de I/O Módulo I/O Disp. Externo Bus de end. Bus de dados Bus de controle status e controle dados Dados do/para o ambiente

86 Entrada/Saída Categorias de Dispositivo Externo –Para Interação com Pessoas (Teclado, vídeo etc) –Para Interação com Máquinas (Unidade de disco) –Para Comunicações (Dispositivo remoto)

87 Entrada/Saída Modelo Genérico de um Dispositivo Externo Lógica de Controle Transdutor Buffer Dados de/para o ambiente Dados de/para o módulo I/O Status para módulo I/OControle do módulo I/O

88 Entrada/Saída Modelo Genérico do Módulo I/O Reg. de dados Regs. Status e de Controle Lógica de I/O Interface com Disp. Externos Interface com Disp. Externos Dados Endereço Controle Dados Controle Status Dados Controle Status

89 Entrada/Saída Técnicas para Controle de I/O –I/O programado Comandos –Controle - informa ao periférico o que fazer –Teste - testa condições –Leitura - ler dados do periférico –Escrita - escreve dados no periférico

90 Entrada/Saída Técnicas para Controle de I/O –I/O programado Envia Comando de Leitura para Módulo I/O Lê status do Módulo I/O Lê palavra do Módulo I/O Escreve palavra na Memória Ver. status Feito ? Não está pronto Condição de erro pronto não sim Próxima Instrução

91 Entrada/Saída Técnicas para Controle de I/O – Baseado em Interrupção Envia Comando de Leitura para Módulo I/O Lê status do Módulo I/O Lê palavra do Módulo I/O Escreve palavra na Memória Ver. status Feito ? Condição de erro pronto não sim Próxima Instrução Vai fazer qualquer coisa Interrupção

92 Entrada/Saída PUSH FLAGS PUSH IP FETCH ISR ADDRESS POP IP POP FLAGS INTERRUPT SERVICE PROCEDURE Restaura Estado Retorno Técnicas para Controle de I/O - Baseado em Interrupção Hardware Software Controlador ou Periférico solicita Interrupção Processador Finaliza Execução de Instrução Corrente Processador Reconhece Interrupção Salva Estado Processa Interrupção Processamento da Interrupção

93 Entrada/Saída Técnicas para Controle de I/O – Baseado em DMA Quantidade de Dados Reg. de Dados Reg. de Endereço Lógica de Controle DMA_Req DMA_Ack Int_req Rd Wr Bus de Dados Bus de Endereço Diagrama Genérico do Controlador de DMA

94 Entrada/Saída Técnicas para Controle de I/O – Baseado em DMA Escreve na Memória ou no Dispositivo Feito ? não sim Próxima Instrução Solicitação de DMA Vai fazer qualquer coisa Suspensão Reconhecimento da solicitação DMA Retira Solicitação de DMA Processador Controlador DMA Envia Solicitação de DMA Aguarda Reconh. Solicitação de DMA Envia Reconh. DMA Envia Comando de Leitura/Escrita DMA para Módulo I/O Lê dados do Dispositivo ou da Memória

95 Arquitetura de Computadores = Arquiteturas RISC X CISC – Complex Instruction Set Computer – Reduced Instruction Set Computer » RISC : SPARC » CISC : Intel 386

96 Arquitetura de Computadores = Problemas CISC – Desempenho – ROM interna aumenta as dimensões da pastilha – Mau uso, pelos programadores, das instruções e modos de endereçamento disponíveis = Caracteristicas CISC – Instruções complexas – Modos de endereçamento complexos – Controle implementado por ROM – Micro-instruções

97 Arquitetura de Computadores CISC SE CARACTERIZA POR: CONJUNTO DE INSTRUÇOES E MODOS DE ENDEREÇAMENTO SOFISTICADOS CONTROLE MICROPROGRAMADO UM NÚMERO REDUZIDO DE INSTRUÇÕES NO CÓDIGO COMPILADO COMPILADOR DE CONSTRUÇÃO MAIS SIMPLES

98 Arquitetura de Computadores CISC MEMÓRIA DE MICROPROGRAMA CONTADOR DE MICROPROGRAMA LÓGICA DE SELEÇÃO DE ENDEREÇO REGISTRADOR DE INSTRUÇÃO VIA DE DADOS PC MEMÓRIA +1 CONTROLE STATUS UNIDADE DE CONTROLE

99 Arquitetura de Computadores RISC = Objetivos das Maquinas RISC – Melhoria de desempenho – Reduzir acesso à memória principal (arq. load/store) – Instruções e modos de endere₤amento simples (Controle hardware wired) – Bom uso dos registradores – Pipelining (execução super-escalar) – Uso extensivo do compilador

100 Arquitetura de Computadores RISC SE CARACTERIZA POR: CÓDIGOS DE INSTRUÇÃO MAIS SIMPLES COMPILADORES MAIS SOFISTICADOS PEQUENOS CICLOS DE CLOCK PEQUENOS NÚMEROS DE CICLOS POR INSTRUÇÃO EFICIENTE PIPELINING DE FLUXO DE INSTRUÇÕES

101 Arquitetura de Computadores RISC HARDWIRED OUTPUT AND NEXT-STATE LOGIC STATE REGISTER INSTRUCTIO N REG. REGISTE R FILE MEMORY CONTROL STATUS CONTROL UNIT INSTR. CACHE DATA CACHE ALU DATAPATH

102 Arquitetura de Computadores Petium = 8086 – 16 bits – Espaço de endereçamento : 1 Mb – Endereço da primeira instrução executada: FFFF0H = 286 – 16 bits – Espaço de endereçamento : 16 Mb (24 bits) – Memória Virtual = 386 – 32 bits – Espaço de endereçamento : 32 bits – Registradores de 32 bits = 486 – Cache interna de 8K – Co-processador interno

103 Arquitetura de Computadores Petium = Pentium é uma máquina CISC com características de RISC –Pipelines - Superescalar –Cache Interna - Dados, Instrução –Registradores de uso geral - 32 –Previsão dinâmica de desvios –Co-processador aritmético interno com 7 registradores de ponto flutuante de 80 bits

104 Modos de Operação = Modo Real –1 Mbyte = Modo Protegido –4 Gbytes –Multitarefa –Memória Virtual –Gerenciamento e Proteção de Memória = Modo Virtual = Modo de Gerenciamento

105 Modelo de Software EAX EBX ECX EDX EBP ESI EDI AX BX CX DX BP SI DI AL BL CL DL AH BH CH DH IP SP Flags EIP ESP EFlags CS DS SS ES FS GS Registradores de Segmento Registradores de Uso Geral Acumulador Base Contador Dados Base de Pilha Índice Fonte Índice Dest. Apont. Inst. Apont.Topo de Pilha Flags Codigo Dados Pilha Extras

106 Modelo de Software = Registrador de Flags »CF - Vai-um »PF - Paridade »AF - Vai-um auxiliar »ZF - Zero »SF - Sinal »OF - Estouro NT IOPL OF DFIF TF SF ZF AFPF CF » IF – Interrupção »DF - Direção »TF - Passo Simples »IOPL - Nível de Prioridade da Tarefa »NT - Tarefa Aninhada

107 Modos de Endereçamento de Dados = Imediato –Ex.: mov cx,1024H = Registrador –Ex.: mov al,ah Op_CodeDado Op_CodeRegist. Dado

108 Modos de Endereçamento de Dados = Direto –Ex.: mov al,[0300h] mov ax,counter = Registrador Indireto –Ex.: mov ch,[bx] Op_CodeEnder. Dado Op_CodeRegist. Dado BX,SI,DI Ender.

109 Modos de Endereçamento de Dados = Indexado –Ex.: mov ch,[bx] Op_CodeRegist. de Índice SI,DI Desl.  Dado Ender.

110 Modos de Endereçamento de Dados = Base –Ex.: mov ch,[bx+02] Op_CodeRegist. de Base BX,BP Desl.  Dado Ender.

111 Modos de Endereçamento de Dados = Base Indexado –Ex.: mov ch,[bx+si] Op_CodeRegist. de Base BX,BP Regist. de Índice  Dado Ender. Regist. de Índice

112 Modos de Endereçamento de Dados = Base Indexado com Deslocamento –Ex.: mov ch,[bx+si+03] Op_CodeRegist. de Base BX,BP Regist. de Índice  Dado Ender. Regist. de ÍndiceDesl.

113 Modos de Endereçamento de Dados = Porta –Ex.: in al,80h ;espaço de in al,dx ; endereçamento = 256 out 90h,al ; espaço de out dx,al ; endereçamento = Op_CodeEnder. ou DX

114 Modos de Endereçamento de Dados = Modo de Endereçamento de 32 bits Reg. de Seg. Reg. de Base Reg. de Índice Fator de Escala Deslocamento Endereço   * CS,DS,ES,FS,GS,SS EAX,EBX,ECX,EDX,EBP,ESI,EDI,ESP EAX,EBX,ECX,EDX,EBP,ESI,EDI {1,2,4,8} Nada, 8 bits, 32 bits Ex.: MOV EAX,[EBX],[ECX*4+6]

115 Arquitetura do Pentium Bus Unit Page Unit 8kb instruction cache TLB Branch target buffer P b I d r u n e e f s c f f t o e e r d t r u e c t. h Control ROM C o n u t n r i o t l 8kb data cache TLB Floating point registers 256 Data bus - 64 bits Add. Bus 32 bits Control bus Add. Data 32 Address bus - 32 bits Data bus - 64 bits Add. generate V pipe Add. generate U pipe Integer register file ALU V pipe ALU U pipe Shifter Instruction pointer Branch target address 32 Floating point unit Prefetch address

116 Arquitetura do Pentium = Dois pipelines de 5 estágios: U e V –Estágios »PF - prefetch »D1 - instruction decode »D2 - address generate »EX - execute, cache, ALU access »WB - writeback

117 Arquitetura do Pentium 256 bits P b I d r u n e e f s c f f t o e e r d t r u e c t. h Prefet. Buffer V 64 bytes Prefet. Buffer U 64 bytes 256 bits Decod. D1 V Decod. D1 U

118 Decod. D2 V Decod. D2 U Arquitetura do Pentium Decod. D1 V Decod. D1 U Ger. End. V Ger. End. U Para o BTB Para o BTB

119 Decod. D2 V Decod. D2 U Arquitetura do Pentium Decod. D1 V Decod. D1 U Unidade de Microcódigo ALU V ALU U REG

120 Decod. D2 V Decod. D2 U Arquitetura do Pentium Decod. D1 V Decod. D1 U Unidade de Microcódigo Conrole ADDDIVMUL FPU Reg. File Dados

121 Arquitetura do Pentium = Execução Super-Escalar – Ambas as instruções devem ser simples. – Sem dependência de dados. – As instruções não podem ter modos de endereçamento imediato e indireto. – Instruções com prefixo só podem ser executadas no pipelin U. Não requerem micro-código para serem executadas. Normalmente levam 1 ciclo de clock para serem executadas. ADD AX,BX (não podem ser executadas ADD AX,CX em paralelo) MOV TABLE[SI],7 MOV ES:[DI],AL

122 Arquitetura do Pentium = Execução Super-Escalar Ciclos de clock I1 I2I3 I4I5 I6I7 I8I9 I10 I1 I2I3 I4 I5 I6I7 I8 I1 I2I3 I4I5 I6 I1 I2 I3 I4 I1 I2 PF D1 D2 EX WB

123 Previsão Dinâmica de Desvio 8kb instruction cache TLB Branch target buffer P b I d r u n e e f s c f f t o e e r d t r u e c t. h 256 Instruction pointer Branch target address Prefetch address H:11 P:T H:10 P:T H:00 P:NT H:01 P:T NT T T T T Address Instruction Targ. Add. History Prediction.

124 Memória Cache = Princípio da Localidade – Instruções – Dados = Operação Processador Cache Memória MOV CX,1000 SUB AX,AX Next: ADD AX,[SI] MOV [SI],AX INC SI LOOP Next

125 Memória Cache = Princípio da Localidade – Tacc=HitRate  Tcache+(1- HitRate)  (Tcache+Tmem) – Tcache=10 ns – Tmem= 70 ns – HitRate= 0,9 Tacc= 17 ns Processador Cache Memória

126 Memória Cache = Política de Busca Usada para decidir quando e quais informações buscar na CACHE – Demanda – Pré-busca

127 Memória Cache = Política de Busca Usada para decidir quando e quais informações buscar na CACHE – Demanda » Busca uma linha i quando esta se faz necessário – Pré-busca » Busca a linha i+1 quando a linha i for referida

128 Memória Cache = Política de Escrita O momento em que uma palavra deve ser alterada na memória principal, após uma escrita, depende da política de escrita. – Writethrough » Garante consistência dos dados » Aumenta o tráfego no barramento – Writeback » Reduz o tráfego no barramento » Necessita de mecanismos para manutenção de concist ₨ ncia

129 Memória Cache = Política de Substituição Define como uma linha da memória CACHE deve ser substituída. – RAND - Aleatório – FIFO - First in First Out – LRU - Least Recently Used

130 Memória Cache Organização = Mapeamento Direto – Vantagem Simplicidade do Hardware Algoritmo de Substituição ₫ simples – Desvantagem Não é flexível D iversos blocos de memória são mapeados na mesma linha da CACHE Endereço de 32 bits Tag Linha TAG Dado = 32 bytes Número de Linhas 27 = 128

131 Memória Cache Organização = Completamente Associativa – Vantagem Flexibilidade – Desvantagem Complexidade do Hardware 27 5 Endere₤o de 32 bits Tag Linha TAG Dado = 32 bytes

132 Memória Cache Organização = Associativa por Conjunto (Set Associative) TAG Dado = 32 bytes TAG Dado = 32 bytes Endereço de 32 bits Tag Linha

133 Memória Cache Organização do Pentium = Two-way-set - associative = 128 Conjuntos linhas (entradas) = 32 bytes por linha (64 por conjunto) = 8Kb de CACHE de instrução = 8Kb de CACHE de dados = Triple ported – Pipeline U – Pipeline V – Opera₤ões de Bus snooping = Estrutura TAG Dado Set 0 Set 1 Set = 32 bytes TAG Dado = 32 bytes

134 Arquitetura do Pentium Bus Unit Page Unit 8kb instruction cache TLB Branch target buffer P b I d r u n e e f s c f f t o e e r d t r u e c t. h Control ROM C o n u t n r i o t l 8kb data cache TLB Floating point registers 256 Data bus - 64 bits Add. Bus 32 bits Control bus Add. Data 32 Address bus - 32 bits Data bus - 64 bits Add. generate V pipe Add. generate U pipe Integer register file ALU V pipe ALU U pipe Shifter Instruction pointer Branch target address 32 Floating point unit Prefetch address

135 Memória Cache Translation Lookaside Buffer Endereço Linear Tag Linha Endereço linear Endereço Físico para Cache TLB T T T End T T T T T T T T T End Endereço Físico para Cache

136 Coerência de Cache em Sistemas Multiprocessadores = Protocolo de coerência de Cache MESI – Modified - a linha corrente foi modificada (diferente da informação na memória principal) e pertence a uma única cache. – Exclusive - linha não modificada e exclusiva de uma única cache. Escrevendo-se nesta linha, esta passa para o estado Modified. – Shared - linha corrente pertence a mais de uma cache. Ao escrever-se nesta linha, um writethrough é gerado e invalia-se as outras cópias em outras caches. – Invalid - a linha corrente está vazia. Uma leitura desta linha gera um miss.

137 Coerência de Cache em Sistemas Multiprocessadores Barramento I cache I cache I cache I cache D cache D cache D cache D cache X=7 X=30 X=10 P1 P2 p3 p4

138 Dimensões das Caches = Pentium – Um nível de cache interno. – Cache de dados : 8kb – Cache de instruções: 8kb = Pentium MMX – Um nível de cache interno – Cache de dados: 16kb – Cache de Instruções: 16kb = Pentium Pro – Dois níveis de cache internos. – Cache dados nível 1: 8kb – Cache de instrução nível 1: 8kb – Cache nível 2: 256kb, 512kb, 1MB

139 Dimensões das Caches = Petium II – Dois níveis de cache internos. – Cache de dados nível 1: 16kb – Cache de instrução nível 1: 16kb – Cache nível 2: 512kb = Petium III – Dois níveis de cache internos. – Cache de dados nível 1: 16kb – Cache de instrução nível 1: 16kb – Cache nível 2: 512kb

140 Unidade de Ponto Flutuante = PF - pré-busca = D1 - decodificação de instrução = D2 - geração de endereço = EX - leitura de memória e registradores. Converção do formato de ponto flutuante em formato de memória. Escrita em memória. = X1 - primeiro estágio de execução. Dados da memória são convertidos no formato ponto flutuante. Escreve o operando para os registradores de ponto flutuante. = X2 - segundo estágio de execução. = WF - arrendonda o resultado e escreve nos registradores de ponto flutuante. = ER - sinalização de erro e atualização da palavra de status.

141 Unidade de Ponto Flutuante PFD1D2EX X1X2WF ER Bypass Fluxo de instruções e de dados Pipeline U Fluxo de dados ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7) Registradores de Ponto Flutuante 80 bits

142 Unidade de Ponto Flutuante PFD1D2EX X1X2WF ER Bypass 2 Bypass 1 Fluxo de instruções e de dados Pipeline U Fluxo de dados ST(0) ST(1) ST(2) ST(3) ST(4) ST(5) ST(6) ST(7) Registradores de Ponto Flutuante 80 bits

143 Operações de Barramento M/IO D/C W/R Cache KEN Descrição x Recon. Int x Ciclo Especial x Leit. I/O x Escr. I/O x Leit. de Código ñ cache x 1 Leit. de Código ñ cache Leit. de Código em Rajada de 32 bytes x Leit. Mem. Acima de 8 bytes ñ cache x 1 Leit. Mem. Acima de 8 bytes ñ cache Leit. Mem em Rajada de 32 bytes x Escr. Mem. Acima de 8 bytes ñ cache x Escrita de 32 bytes - writeback

144 Opera₤ões de Barramento Ciclos Especiais BE7BE6BE5BE4BE3BE2BE1BE0Ciclo shutdown flush cache halt writeback flush ack br. tr. mess

145 Ciclos de Leitura/Escrita Clk ADS Address W/R BRDY Data Válido P/ CPU da CPU t1 t2 ti

146 Ciclos Burst = O pentium suporta ciclos de leitura e escrita em rajada de 32 bytes. – Cada oito bytes são transferidos a cada ciclo de clock. – O Processador passa o endere₤o inicial, os demais endere₤o devem ser gerados pelo sistema de memória 1° end.2 ° end.3° end.4° end

147 Ciclos Burst Clk ADS Address W/R BRDY CACHE KEN Data Válido t1 t2 t2 t2 t2 ti P/ CPU

148 Operações Locked e BOFF = Lock – Operacões atômicas não podem ser quebradas em operações menores – Semáforos – Requerem leitura seguida de escrita – XCHG – LOCK é ativado indicando que o ciclo no ciclo corrente o barramento está bloqueado e não pode ser interrompido = BOFF – Este sinal de entrada prover uma forma para que em sistemas multiprocessados um Pentium possa “tomar conta” do barramento. – Este terminal(BOFF) ₫ verificado a cada ciclo de clock. Caso o seu valor seja baixo, o barramento ₫ colocado em alta impedância.

149 Operações Bus Hold e Reconhecimento de Interrupção = Bus Hold – Uma segunda forma para que o processador “tome conta”do barramento. – A entrada HOLDé verificada a cada ciclo de clock, caso seja alto, no final do ciclo de barramento, o barramento é colocado em alta impedância. – A saída HLDA é ativada para indicar que o Pentium está neste estado. = Reconhecimento de Interrupção. – Dois destes ciclos são gerados em reconhecimento a solicitação de interrupção (INTR). – M/IO=D/C=W/R =0 – CACHE = 1

150 Reconhecimento de Interrupção ‘148‘374 D Q clk Pentium vcc clr D0D7D0D7 M/IO D/C W/R ADS INTR INT0 INT7 A2 A1 A0 GS EI

151 Cache Flush e Shutdown = Cache Flush – Como resposta a uma entrda ativa no terminal FLUSH o Pentium executa o writeback nas linhas modificadas e as torna inválidas – BE1 =0 – Quando o writeback é executado o processador executa um cache ack. para informar que na cache foi realizado um flush. – BE4 =0 = Shutdown – Se o processador detecta um erro de paridade um ciclo shutdown é gerado. – A execução é suspensa até o processador que ocorrar um NMI, INIT ou RESET – Cache internas permancem inalteradas – BE0=0

152 Halt e Inquire Cycles = Halt – Ciclo realizado quando da execução de uma instrução HLT – Similar ao shutdown exceto que a execução só será retomada pelo sinal INTR – BE2 = 0 = Inquire Cycle – Usado para manter a coerência de cache – Ao detectar-se (no snooping cycle) um acesso, por outro processador, a uma posição de memória, o processador gera um inquire interno para verificar se esta posição esta na cache interna. Caso esteja, a cache pode ser modificada.

153 Tipo de Instruções = Transferência de dados = Aritmética = Manipulação de bit = Laços e saltos = Subrotinas e interrupções = Controle = String

154 Tipo de Instruções = Instruções Monádicas – inst opr dest opr dest - operando destino = Instruções Diádicas – inst opr dest, opr fonte opr dest - operando destino opr fonte - operando fonte

155 Transferência de Dados Instruções – MOV movimenta₤₧o – MOVSX ext. sinal – MOVZX ext. c/ zero – PUSH empilhamento – PUSHW/PUSHD imedit./ 32 bits – PUSHA/PUSHAD todos reg/ 32 bits – PUSHF/PUSHFD 16 bits flags/32 bits – POP desemp. – POPA/POPAD todos reg/32 bits – POPF/POPFD 16 bits flags/32 bits – IN input – OUT output – XCHG permuta – XLAT translate-table – LEA carga de end. efetivo – LDS e similares carga de ponteiro – BSWAP troca – LAHF carga de flags em AH – SAHF arm. de AH nos flags

156 Transferência de Dados Sintaxe: MOV OP_DEST,OP_DEST EX.: MOV AL,01 MOV AX,[BX+2] MOV AL,[0400H]

157 Transfer ₨ ncia de Dados Sintaxe: MOVSX OP_DEST,OP_DEST EX.: MOVSX AX,AL

158 Transfer ₨ ncia de Dados Sintaxe: MOV OP_DEST,OP_FONT EX.: MOVZX AX,AL

159 Transfer ₨ ncia de Dados Sintaxe: PUSH OP_FONTE EX.: PUSH BX

160 Transfer ₨ ncia de Dados Sintaxe: PUSHW/PUSHD OP_FONTE (i medit./ 32 bits) EX.: PUSHW 34ADh PUSHD EAX - PU SHD pode ser usado para empilhar valor de um reg. de 32 bits

161 Transfer ₨ ncia de Dados Sintaxe: PUSHA/PUSHAD (todos reg/ 32 bits) EX.: PUSHA PUSHAD

162 Transfer ₨ ncia de Dados Sintaxe: PUSHF/PUSHFD 16 bits flags/32 bits EX.: PUSHF PUSHFD

163 Transfer ₨ ncia de Dados Sintaxe: POP OP_DEST EX.: POP BX

164 Transfer ₨ ncia de Dados Sintaxe: POPA/POPAD t odos reg/32 bits EX.: POPA POPAD

165 Transfer ₨ ncia de Dados Sintaxe: POPF/POPFD 16 bits flags/32 bits EX.: POPF POPFD

166 Transfer ₨ ncia de Dados Sintaxe: IN ACUMULADOR,END/DX input EX.: IN AL,60H IN AL,DX

167 Transfer ₨ ncia de Dados Sintaxe: OUT END/DX,ACUMULADOR output EX.: OUT DX,AL OUT 80H,AX

168 Transfer ₨ ncia de Dados Sintaxe: XCHG OP_DEST,OP_FONTE permuta EX.: XCHG AL,AH XCHG AL[BX]

169 Transfer ₨ ncia de Dados Sintaxe: XLAT translate-table O registrador BX deve ter o endere₤o inicial da lista. O valor de AL ₫ o índice. EX.: MOV AL,3 MOV BX,0400H XLAT

170 Transfer ₨ ncia de Dados Sintaxe: LEA OP_DEST,LABEL carga de end. EX.: LEA BX,LISTA

171 Transfer ₨ ncia de Dados Sintaxe: LDS OP_DEST,OP_FONTE carga de ponteiro OP_D EST - registrador LES,LFS,LGS,LSS -s₧o similares EX.: LDS BX,[SI] LES DX,end_lista

172 Transfer ₨ ncia de Dados Sintaxe: BSWAP OP_DEST - troca (swapping) - OP_D EST - registrador de 32 bits EX.: MOV EAX, H BSWAP EAX EAX = H

173 Transfer ₨ ncia de Dados Sintaxe: LAHF - C arrega AH com flags EX.: POPF LAHF

174 Transfer ₨ ncia de Dados Sintaxe: SAHF - A rmazena AH nos flags EX.: MOV AH,0FFH SAHF

175 Aritmética Instruções – ADDadição – ADC – INC incremento – SUB subtração – SBB – DEC decremento – CMP comparação – MUL multiplicação – IMUL – DIV divisão – IDIV – NEG complemento a 2 – CBW mudança de módulo – CWD – DAA ajuste BCD – DAS – AAA ajuste ASCII – AAS – AAM – AAD

176 Aritm₫tica Sintaxe: ADD OP_DEST,OP_DEST - adi₤₧o EX.: ADD AL,CH ADD CX,[SI] ADD DX,4

177 Aritm₫tica Sintaxe: ADC OP_DEST,OP_DEST - a di₤₧o com vai um EX.: ADC AL,CH ADC [BX],DX ADC DX,4

178 Aritm₫tica Sintaxe: INC OP_DEST - I ncremento EX.: INC AL INC [BX] INC [0400H]

179 Aritm₫tica Sintaxe: SUB OP_DEST,OP_DEST - S ubtra₤₧o EX.: SUB AL,CH SUB CX,[0300H] SUB DX,4

180 Aritm₫tica Sintaxe: SBB OP_DEST,OP_DEST - S ubtra₤₧o com vem um EX.: SBB AL,CH SBB CX,[0300H] SBB DX,4

181 Aritm₫tica Sintaxe: DEC OP_DEST - D ecremento EX.: DEC AL DEC [BX] DEC [0400H]

182 Aritm₫tica Sintaxe: CMP OP_DEST,OP_DEST - C ompara₤₧o EX.: CMP AL,CH CMP CX,[0300H] CMP DX,4

183 Aritm₫tica Sintaxe: CMPXCHG OP_DEST, OP_FONTE - c ompara e permuta Com para o operando destino com o acumulador e caso o acumulador seja igual ao operando destino, o operando fonte ₫ copiado no destino. Caso sejam diferentes, o valor do acumulador ₫ substituído pelo valor do destino. EX.: CMPXCHG BL,CL CMPXCHG CX,[0300H] CMPXCHG EDX,EBX AL BL CL AL BL CL

184 Aritmética Sintaxe: MUL OP_FONTE - multiplicação EX.: MUL BL MUL DX MUL ECX

185 Aritmética Sintaxe: IMUL OP_FONTE - multiplicação sinalizada EX.: IMUL BL IMUL DX IMUL ECX

186 Aritmética Sintaxe: DIV OP_FONTE - divisão EX.: DIV BL DIV DX DIV ECX

187 Aritmética Sintaxe: IDIV OP_FONTE - divisão sinalizada EX.: IDIV BL IDIV DX IDIV ECX

188 Aritm₫tica Sintaxe: NEG OP-DEST - complemento de dois EX.: NEG AL NEG [0200H] NEG DX

189 Aritm₫tica Sintaxe: CBW - converte byte de AL em palavra etendendo-se o sinal CWD - converte a palavra de AX em dupla- palavra estendendo-se o sinal (DX:AX) CWDE - converte a palavra de AX em dupla- palavra estendendo-se o sinal (EAX) CDQ - converte a dupla-palavra de EAX em quádrupla-palavra estendendo-se o sinal (EDX:EAX) EX.: CBWCWDE CWDCDQ

190 Aritm₫tica Sintaxe: DAA - ajuste decimal para adi₤₧o (BCD compactado) EX.: MOV AL,15H MOV BL,25H ADD AL,BL;AL=3AH DAA;AL=40H

191 Aritm₫tica Sintaxe: DAS - ajuste decimal para subtra₤₧o (BCD- compactado) EX.: MOV AL,10H MOV BL,02H SUB AL,BL;AL=0EH DAS;AL=08H

192 Aritm₫tica Sintaxe: AAA - ajuste ASCII para adi₤₧o EX.: MOV AX,0033H MOV BL,39H ADD AL,BL;AL=6CH AAA;AX=0102H

193 Aritm₫tica Sintaxe: AAS - ajuste ASCII para subtra₤₧o AAM - ajuste ASCII para multiplica₤₧o AAD- ajuste ASCII para divis₧o

194 Lógica e Manipulação de Bit Instruções Lógicas – NOT – AND – OR – XOR – TEST Algumas Instruções Manipulação de bit – SHL/SAL - desloc. esquerda – SHR - deslc. direita – SAR – ROL - rotação – ROR – RCL – RCR

195 Lógicas Sintaxe: NOT OP-DEST - complemento de um EX.: NOT AL NOT [0200H] NOT DX

196 Lógicas Sintaxe: AND OP_DEST,OP_FONTE - opera₤₧o lógica e EX.: AND AL,CH AND CX,[SI] AND DX,FFFFH

197 Lógicas Sintaxe: OR OP_DEST,OP_FONTE - opera₤₧o lógica ou EX.: OR AL,00H OR CX,[SI] OR DX,FFFFH

198 Lógicas Sintaxe: XOR OP_DEST,OP_FONTE - opera₤₧o lógica ou exclusivo EX.: XOR AL,CH XOR CX,[SI] XOR DX,DX

199 Lógicas Sintaxe: TEST OP_DEST,OP_FONTE - opera₤₧o lógica e EX.: TEST AL,CH TEST CX,[SI] TEST DX,FFFFH

200 Lógicas Sintaxe: SETcc OP_DEST - a tribui 01 a operando destino se a condi₤₧o testada for verdadeira. Caso contrário, atribui-se 00. EX.: SETZ AL SETLE AX SETNC DX

201 Lógicas Sintaxe: BSF/BSR OP_DEST,OP_FONTE - p rocura pelo 1°bit igual a um no operando fonte a partir do LSB ou MSB. A posi₤₧o encontrada será informada em operando destino. OP_DEST deve ser REG. de 16 ou 32 bits OP_FONTE deve ser REG. ou mem de 16 ou 32 bits EX.: BSF EAX,EBX

202 Lógicas Sintaxe: BT/BTC,BTS,BTR OP_DEST,OP_FONTE - t esta, complementa, seta ou reseta um bit do operando destino especificado no opernado fonte. OP_DEST deve ser REG. de 16 ou 32 bits OP_FONTE deve ser REG. ou mem de 16 ou 32 bits EX.: BT AX,BX BTC AX,15 BTS AX,1 BTR AX,0

203 Laços, Desvios, Subrotinas e Interrupções Laços e Desvios – JMP -desvio incondicional – Jcc - desvio condicional – JCXZ – LOOP - laço – LOOPE – LOOPNE Subrotinas e Interrupções – CALL - subrotinas – INT - interrupções – INTO – RET - retorno – IRET

204 Controle – CLC - Limpa CF – STC - Faz CF=1 – CMC - Complementa CF – CLD - Limpa DF – STD - Faz DF=1 – CLI - Limpa IF – STI - Faz IF=1

205 Controle Sintaxe: HLT- P arada Para o sistema. O processador fica neste estado at₫ ocorrer um reset ou uma interrup₤₧o NMI ou INTR.

206 Controle Sintaxe: LOCK- I nstru₤₧o prefixo Bloqueia o barramento EX.: LOCK XCHG Sintaxe: NOP- N o operation N₧o executa nada.

207 Strings Sintaxe: REP- I nstru₤₧o prefixo Repete enquanto CX for diferente de zero. Deve ser usada antes das instru₤ões MOVS, STOS, INS e OUTS EX.: REP MOSVB

208 Strings Sintaxe: REPE/REPZ- I nstru₤₧o prefixo Repete enquanto CX for diferente de zero e ZF = 1. Deve ser usada antes das instru₤ões C,MPS e SCAS. EX.: REPE CMPSB

209 Strings Sintaxe: REPNE/REPNZ- I nstru₤₧o prefixo Repete enquanto CX for diferente de zero e ZF = 0. Deve ser usada antes das instru₤ões C,MPS e SCAS. EX.: REPNE SCASW

210 Strings Sintaxe: MOVS/ MOVSB/ MOVSW/ MOVSD - move Move o elemento apontado por SI no segmento de dados para área apontada por dI no segmento de extra. DI e SI ser₧o incrementados ou decrementados de 1, 2, 0u 4 dependendo do flag DF e do tipo do dado. EX.: MOV AX,0300H MOV ES,AX XOR DI,DIH MOV AX,0500H MOV DS,AX XOR SI,SIH MOV CX,5H CLD MOV AL,4EH REP MOVSB

211 Strings Sintaxe: CMPS/ CMPSB/ CMPSW/ CMPSD - compara Compara o elemento apontado por DI no segmento extra com o elemento apontado por SI no segmento de dados. DI e SI ser₧o incrementados ou decrementados de 1, 2, 0u 4 dependendo do flag DF e do tipo do dado. EX.: MOV AX,0300H MOV ES,AX XOR DI,DIH MOV AX,0500H MOV DS,AX XOR SI,SIH MOV CX,5H CLD MOV AL,4EH REPE CMPSB

212 Strings Sintaxe: SCAS/ SCASB/ SCASW/ SCASD - scan Compara o elemento apontado por DI no segmento extra com o conteúdo do acumulador (AL,AX ou EAX). DI será incrementado ou decrementado de 1, 2, 0u 4 dependendo do flag DF e do tipo do dado. EX.: MOV AX,0300H MOV ES,AX MOV DI,6H MOV CX,6H STD MOVAL,4EH REPNZ SCASB

213 Strings Sintaxe: LODS/ LODSB/ LODSW/ LODSD - carrega Carrega o elemento apontado por SI no segmento de dados no acumulador (AL,AX ou EAX). SI será incrementado ou decrementado de 1, 2, 0u 4 dependendo do flag DF e do tipo do dado. EX.: MOV AX,0510H MOV DS,AX MOV SI,5H STD LODSW

214 Strings Sintaxe: STOS/ STOSB/ STOSW/ STOSD - armazena Armazena na área apontada por DI no segmento de extra o conteúdo do acumulador (AL,AX ou EAX). DI será incrementado ou decrementado de 1, 2, 0u 4 dependendo do flag DF e do tipo do dado. EX.: MOV AX,04A8H MOV ES,AX MOV DI,8H CLD MOV AL,’M’ REP STOSB

215 Diretivas do Macro-Assembler Programa.EXE Programa.COM – Tamanho: memória total 64 Kbytes – Ponto de Entrada: qualquer ponto offset 100h – Arquivo produzido deve ser convertido pelo link: executável pelo EXE2BIN – PSP: apontado por DS nos 100h bytes iniciais e ES do segmento

216 Formato de um Programa.EXE S1 SEGMENT STACK ‘STACK’ DW100 DUP(?) S1ENDS D1 SEGMENT D EFINIÇÃO DE VARIÁVEIS D1 ENDS C1 SEGMENT ASSUMECS:C1, DS:D1,ES:D1,SS:S1 P1PROC FAR MOV AX,D1 MOV DS,AX MOV ES,AX Co RPO DO PROGRAMA MOV AH,4CH INT 21H P1ENDP R1PROC NEAR C ORPO DA ROTINA R ET R1 ENDP C1 ENDS END P1

217 Formato de um Programa.COM C1 SEGMENT ASSUMECS:C1, DS:C1,ES:C1,SS:C1 ORG 100H I:JMP P1 D EFINIÇÃO DE VARIÁVEIS P1PROC NEAR C ORPO DO PROGRAMA MOV AH,4CH INT 21H P1ENDP R1PROC CO RPO DA ROTINA RE T R1 ENDP C1 ENDS END

218 Diretivas do Macro-Assembler = COMMENT - INSERÇÃO DE COMENTÁRIO – FORMATO: COMMENT * COMENTÁRIO * – EXEMPLO: COMMENT * MEU PRIMEIRO PROGRAMA* = ASSUME - INFORMA AO MONTADOR A FUNÇÃO DE CADA SEGMENTO. – FORMATO: ASSUME REG_SEG:NOME_SEG,..., REG_SEG:NOME_SEG – EXEMPLO: ASSUME CS:C1,DS:D1,ES:D2,SS:S1 = ORG - ESPECIFICA O ENDEREÇO PARA UMA INSTRUÇÃO OU DADO. – FORMATO: ORG EXPRESSÃO – EXEMPLO: ORG 100H

219 Diretivas do Macro-Assembler = SEGMENT - DEFINE SEGMENTO – FORMATO: NOME SEGMENT [ALINHM.][COMB.][CLASSE] – ALINHAMENTO: Define onde inicia o segemento BYTE - 1° byte livre WORD - 1° endereço par livre DWORD - 1° endereço divisível por 4 livre PARA - 1° endereço divisível por 16 livre PAGE - 1° endereço divisível por 256 livre

220 Diretivas do Macro-Assembler = SEGMENT - DEFINE SEGMENTO – FORMATO: NOME SEGMENT [ALINHM.][COMB.][CLASSE] – COMBINAÇÃO: Define como combinar segmentos de mesmo nome PUBLIC - concatena todos os segementos de mesmo nome de forma a se obter um único segemento STACK - O mesmo que o tipo PUBLIC. Para segementos de pilha. COMMOM - cria um segmento pela superposição de segmentos com mesmo nome. AT endereço - define o endereço inicial de um segemento. Este segmento não contém inicialização de dados o código. Usado para definir um segmento em uma área de dados ou código já existentes na memória.

221 Diretivas do Macro-Assembler = SEGMENT - DEFINE SEGMENTO – FORMATO: NOME SEGMENT [ALINHM.][COMB.][CLASSE] – CLASSE: Define que os segmentos, embora de nomes diferente, mas de mesma classe, devem ser agrupados na linkedição. ‘CODE’ ‘DATA’ ‘STACK’

222 Diretivas do Macro-Assembler = ENDS - FINALIZAÇÃO DE SEGMENTO – FORMATO: NOME ENDS – EXEMPLO: INICIO SEGMENT ROTPROC NEAR P1 PROCFAR RET CALL ROTROTENDP... RET P1ENDP INICIO ENDS

223 Diretivas do Macro-Assembler = END - Finalização do programa – FORMATO: END nome nome é o ponto de entrada do programa.

224 Diretivas do Macro-Assembler DEFINIÇÃO DE ÁREA DE ARMAZENAMENTO = DB - DEFINE COMO BYTE = DW - DEFINE COMO WORD = DD - DEFINE COMO DOUBLE WORD = DQ - DEFINE COMO QUADWORD = DT - DEFINE COMO DEZ BYTES – FORMATO: NOME DB/DW/DD/DQ/DT VALOR/LISTA DEVALORES – EXEMPLO:XDB2AH LISTA DB30D,43D,74D Y DW 402BH ZDB B

225 Diretivas do Macro-Assembler = EQU - DEFINE CONSTANTE – FORMATO: NOME EQUVALOR – EXEMPLO: CONST1EQU 0 CONST2 EQU 4 CONST3 EQU CONST2 + 3 = BYTE/WORD/..../NEAR/FAR PTR - FORÇA EXPRESSÃO A SER DE UM TIPO BYTE, WORD,....OU GERAR UM CÓDIGO DO TIPO NEAR OU FAR. – FORMATO: BYTE/WORD/DWORD/QWORD/TBYTES/NEAR/FAR PTR EXPRESSÃO EXEMPLO: X DB 02HROT PROC NEAR MOV AX,WORD PTR X.... CALL FAR PTR ROTRET...ROT ENDP

226 Diretivas do Macro-Assembler = SHORT - USANDO-SE EM UMA INSTRUÇÃO JMP FAZ COM QUE O MONTADOR GERE UM CÓDIGO SEJA DE APENAS DOIS BYTES. O DESVIO NÃO PODE SER SUPERIOR A -128 OU +127 BYTES. – FORMATO: JMP SHORT NOME = OFFSET - FORNECE O DESLOCAMENTO DE UMA VARIÁVEL OU RÓTULO DENTRO DO SEGMENTO ONDE ESTÁ DEFINIDO. – FORMATO: OFFSET EXPRESSÃO – EXEMPLO: MENSDB‘Bom Dia$ MOV DX,OFFSET MENS = SEG - FORNECE O SEGMENTO DE UMA VARIÁVEL OU RÓTULO. – FORMATO: SEG EXPRESSÃO – EXEMPLO : MOV AX, SEG MENS

227 Diretivas do Macro-Assembler = ESTRUTURAS - É uma coleção de objetos (dados) os quais podem ser lidos/escritos como um único objeto. Os dados de uma estrutura podem ter diferentes tamanhos e podem acessados simbolicamente. – FORMATO DA DECLARAÇÃO: nome struc declarações nome ends – FORMATO DA DEFINIÇÃO DA VARIÁVEL [nome] nome_da_estrutura

228 Diretivas do Macro-Assembler  ESTRUTURAS - date STRUC month db ? day db ? year dw ? date ENDS DADOS SEGMENTPARA 'DATA' yesterday date today date tomorrow date anotherday date <> someotherdays date 20 DUP (<>) DADOS ENDS CODIGO SEGMENT PARA 'CODE' ASSUME CS:CODIGO,DS:DADOS,SS:PILHA INICIOPROCFAR MOV AX,DADOS MOV DS,AX MOV AL,yesterday.day MOV AH,today.day MOV DL,tomorrow.day MOV anotherday.day,DL LEA BX,someotherdays MOV [BX].day,dl

229 Diretivas do Macro-Assembler = MACRO - Possibilita atribuir um nome a um bloco de código e utiliza-lo, através deste nome, no seu programa. – FORMATO DA DECLARAÇÃO: nome macro [parâmetro[,parâmetro]] statements nome endm – FORMATO PARA CHAMAR A MACRO nome [argumento [,argumento]]

230 Diretivas do Macro-Assembler = MACRO - DADOS SEGMENTPARA 'DATA' RenataN1 db 06 RenataN2 db 08 Renatatpontos db ? DADOS ENDS totalpontos MACRO n1,n2 MOV AL,n1 MOV AH,n2 CLC ADD AH,AL ENDM CODIGO SEGMENT PARA 'CODE' ASSUME CS:CODIGO,DS:DADOS,SS:PILHA INICIOPROCFAR MOV AX,DADOS MOV DS,AX totalpontos RenataN1,RenataN2 MOV Renatatpontos,AH MOV AH,4CH INT 21H INICIO ENDP CODIGO ENDS END INICIO

231 Interrupções = O que é uma interrupção? – É um evento interno ou externo ao processador provocado por um usuário que solicita sua atenção. = Quais os tipos de interrupção? – Interrupções por software » Instruções INT – Interrupções por hardware » NMI » IRQ’s conectadas ao pino INTR – Exception Handlers (Int. Excepcionais)

232 Arquitetura de Computadores = Interrupções na Arquitetura x86 – HardwareInternas Externas Mascarável Não-Mascarável – Software Sistema Operacional Usuário

233 Interrupções = Exemplos de Exception Handlers – Erro irrecuperável de HW; – Divisão por zero; – Breakpoint; – Passo a Passo; – Overflow; – Violação dos limites da memória.

234 Resposta do Processador a uma Interrupção PUSH FLAGS CLEAR IF CLEAR TF PUSH CS PUSH IP FETCH ISR ADDRESS POP IP POP CS POP FLAGS INTERRUPT SERVICE PROCEDURE PUSH REGISTERS POP REGISTERS IRET

235 Vetores de Interrupção Processadores da Família 8086

236 Controlador de Interrupção Programável - PIC 8259 = Foi projetado para permitir priorização e tratamento de interrupções de dispositivos periféricos, multiplexando vários sinais de interrupção na entrada de interrupção do processador.

237 Diagrama em Blocos - PIC 8259

238 = Interrupt Request Register (IRR): Monitora as entradas de interrupção para verificar as que estão ativas. Se uma interrupção estiver não mascarada e sua entrada ativa o bit correspondente a esta entrada será setado no IRR.

239 Diagrama em Blocos - PIC 8259 = Priority Resolver: Envia um novo sinal interrupção para o processador após o reset do bit de maior prioridade do ISR. Se a nova interrupção tiver maior prioridade que a interrupção que está sendo atendida o respectivo bit no ISR será setado e é ativado o circuito que envia um novo sinal de INT para o processador.

240 Diagrama em Blocos - PIC 8259 = Exemplo: ocorrência de interrupções PROGRAMA PRINCIPAL INICIALIZA 8259A IR2, IR4 UNMASK STI ROTINA IR4 STI ROTINA IR2 STI EOI RETI EOI RETI PROGRAMA PRINCIPAL INICIALIZA 8259A IR2, IR4 UNMASK STI ROTINA IR4 ROTINA IR2 EOI RETI EOI RETI

241 Diagrama em Blocos - PIC 8259  In-Service Register (ISR): Sinaliza as instruções que estão sendo atendidas pelo processador. Para cada interrupção que estiver sendo atendida um bit correspon- dente será setado neste registrador.

242 Diagrama em Blocos - PIC 8259 = Interrupt Mask Register (MR): Desabilita (mask) ou habilita (unmask) individualmente entradas de interrupção. Cada bit do registrador corresponde a uma entrada de interrupção, e quando em 1 indica que a interrupção está desabilitada.

243 = Control Logic: – INT: envia o pedido de interrupção para a entrada INTR do processador; – INTA: recebe dois pulsos de reconhecimento de interrupção vindos da saída INTA do processador. O primeiro pulso é utilizado no modo cascata e o segundo pulso solicita o byte que indica que tipo de interrupção foi requisitada ao processador. Diagrama em Blocos - PIC 8259

244 Etapas de uma Interrupção – É requisitada uma interrupção via uma das entradas IR’s do PIC, sendo setado o bit correspondente no IRR; – O PIC ativa a linha INT, que está conectada ao pino INTR do processador; – Se INTR estiver habilitado o processador conclui a instrução corrente e envia um pulso no pino INTA para o PIC; – O PIC seta no ISR o bit correspondente à IR ativa de maior prioridade e reseta o respectivo bit no IRR.

245 – É enviado um segundo pulso no pino INTA para o PIC, durante o qual é enviado, pelo bus de dados, o número do tipo de interrupção solicitada; – A CPU determina o endereço associado à ISR (rotina de serviço de interrupção), buscando e executando esta ISR; – Caso esteja configurado o modo automático de fim de interrupção (AEOI) o bit ISR correspondente será resetado ao final do segundo pulso INTA, caso contrário este bit será resetado pelo comando EOI presente na rotina de interrupção. Etapas de uma Interrupção

246 Configuração em Cascata PIC 8259

247 = Sistema Mestre/Escravo: quando em cascata o PIC 8259 de cujo pino INT está ligado à entrada INTR do processador é chamado de mestre, enquanto os PIC’s cuja saída INT estiver ligada às entradas IR’s do mestre são chamados de escravos.

248 Configuração em Cascata PIC 8259 = Conexões do modo cascata – CAS0/CAS1/CAS2: estes três bits são utilizados para identificação (ID) dos escravos. Os pinos do mestre são conectados aos correspondentes pinos dos escravos. Para o mestre estes pinos funcionam como saídas e para os escravos como entradas. – SP/EN: diferencia o mestre dos escravos, sendo mantido em nível 0 para os escravos e em nível 1 para os mestres.

249 Configuração em Cascata PIC 8259 = Etapas de uma interrupção do escravo – Ocorre um pedido de interrupção em uma das entradas IR do escravo; – Dependendo da prioridade e da habilitação da interrupção, o escravo envia um sinal INT para a entrada IR do mestre; – De mesma forma, dependendo da prioridade e da habilitação da interrupção, o mestre envia um sinal INT para a entrada INTR do processador;

250 Configuração em Cascata PIC 8259 = Etapas de uma interrupção do escravo – Estando INTR habilitada, o processador irá executar a rotina de interrupção e enviará dois pulsos INTA para ambos os PIC’s; – No primeiro pulso o mestre seleciona o escravo solicitante através dos pinos CAS. – No segundo pulso o escravo selecionado enviará através das linhas de dados o número do tipo de interrupção solicitada.

251 Configuração em Cascata PIC 8259 = Cuidado ao se trabalhar em cascata! – Quando no mestre se trabalha ao mesmo tempo com IR’s para escravos e entradas comuns não deve-se usar a IR0 para um escravo, pois quando uma entrada comum for ativada os pinos de CAS ficarão em nível lógico baixo e o escravo que estiver em IR0 será selecionado, causando um erro no sistema.

252 Configuração em Cascata PIC 8259 = Modo totalmente aninhado – Permite que uma interrupção de maior prioridade de um escravo seja atendida, mesmo que o processador esteja atendendo uma interrupção deste mesmo escravo (ISR em nível alto). – Para verificar a existência de outra interrupção no mesmo escravo é ressetado o bit ISR do escravo através de um EOI, que é lido em seguida. Caso seja zero é enviado um EOI para o mestre.

253 Palavra de Controle de Inicialização - ICW1 A7A7 0A6A6 A5A5 1LTIMADISNGLIC4 A 7 - A 5 OF INTERRUPT VECTOR ADDRESS (MCS-80/85 MODE ONLY ) 1 = ICW4 NEEDED O = NO ICW4 NEEDED 1 = SINGLE O = CASCADE MODE CALL ADDRESS INTERVAL 1 = INTERVAL OF 4 O = INTERVAL OF 8 1 = LEVEL TRIGGERED MODE 0 = EDGE TRIGGERED MODE A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

254 Palavra de Controle de Inicialização - ICW2/3 = ICW2 = ICW3 (MESTRE) = ICW3 (ESCRAVO) T7 - T3 OF INTERRUPT VECTOR ADDRESS (8086 / 8088 MODE) T7T7 1T6T6 T5T5 T4T4 T3T3 A 10 A9A9 A8A8 A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 1 = IR INPUT SLAVE 0 = NO IR INPUT SLAVE S7S7 1S6S6 S5S5 S4S4 S3S3 S2S2 S1S1 S0S0 A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 SLAVE ID ( ) ID 2 ID 1 ID 0 A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

255 Palavra de Controle de Inicialização - ICW4 1 = 8086/8086 MODE O = MCS-80/85 MODE 1 = AUTO EOI O = NORMAL EOI 0 X  NON BUFFERED MODE 1 0  BUFFERED MODE / SLAVE 1 1  BUFFERED MODE / MASTER 1 = SPECIAL FULLY NESTED MODE 0 = NOT SPECIAL FULLY NESTED MODE A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D SFNM BUFM/SAEOI  PM

256 Diagrama de Fluxo da Inicialização do PIC 8259 ICW1 ICW2 IN CASCADE MODE ICW3 ICW4 READY TO ACCEPT INTERRUPT REQUESTS IS ICW4 NEEDED YES (SNGL=0) YES (IC4=1) NO (SNGL=1) NO (IC4=0)

257 Palavra de Controle de Operação - OCW1/2 = OCW1 = OCW2 INTERRUPT MASK 1 = MASK SET 0 = MASK RESET M7M7 1M6M6 M5M5 M4M4 M3M3 M3M3 M2M2 M0M0 A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 IR LEVEL TO BE ACTED UPON ( ) A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 R0SLEOI 0 0L2L2 L1L1 L0L  NON-SPECIFIC EOI COMMAND  SPECIFIC EOI COMMAND  ROTATE ON NOM-SPECIFIC EOI COMMAND  ROTATE IN AUTO EOI MODE (SET)  ROTATE IN AUTO EOI MODE (CLEAR)  ROTATE ON SPECIFIC EOI COMMAND **  SET PRIORITY COMMAND ** ** L 0 - L 2 ARE USED END OF INTERRUPT AUTO ROTATION SPECIFIC ROTATION

258 Palavra de Controle de Operação - OCW3 A 0 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 00ESMMSMM 0 1PRRRIS 1 0  READ IRR ON NEXT RD PULSE 1 1  READ ISR ON NEXT RD PULSE 1 = POLL COMMAND 0 = NO POLL COMMAND 1 0  RESET SPECIAL MASK 1 1  SET SPECIAL MASK

259 Programa de Inicialização do PIC 8259 ;initialize 8259A MOV AL, B;Edge triggered, single, ICW4 MOV DX, 0FF00H;point at 8259A control OUT DX, AL;send ICW1 MOV AL, B;type 64 is first 8259A type MOV DX, 0FF02H;point at ICW2 address OUT DX, AL;send ICW2 MOV AL, B;ICW4, 8086 mode OUT DX, AL;send ICW4 MOV AL, B;OCW1 to unmask IR0 & IR2 OUT DX, AL;send OCW1

260 Arquitetura de Computadores = Interrupções do BIOS –INT 5h - Print screen »Imprime conteúdo da tela –INT 10h - Vídeo »Interrupção do BIOS que trata o vídeo »Os serviços são passados através do registrador AH

261 Arquitetura de Computadores –INT 10h - Vídeo »Especificação do modo Chama-se com: AH = 0 AL = Modo Modo Resolução Caract. 0h 40×25 tx, preto/branco 1h 40×25 tx, 16 cores 2h 80×25 tx, preto/branco 3h 80×25 tx, 16 cores 4h 320×200 gr, 4 cores 5h 320×200 gr, preto/branco 6h 640×200 gr, 2 cores h 640×480 gr, 16 cores

262 Arquitetura de Computadores –INT 10h - Vídeo »Ajusta formato do cursor Chama-se com: AH = 1 CH = linha inicial CL = linha final - número de linhas = 7 »Posiciona o cursor Chama-se com: AH = 2 DH = linha DL = coluna BH = número da página

263 Arquitetura de Computadores –INT 10h - Vídeo »Ler posição do cursor Chama-se com: AH = 3 BH = número da página Recebe-se em: DH = linha inicial DL = linha final CX = tipo do cursor »Selecionar página Chama-se com: AH = 5 AL = página Páginas Modos (placas SVGA) * Modos gráficos * - depende dos modos suportados por cada placa.

264 Arquitetura de Computadores –INT 10h - Vídeo »Rolar para cima a janela de vídeo Chama-se com: AH = 6 AL = número de linhas a serem roladas (Zero (0) rola todas) CH = linha do canto superior esquerdo CL = coluna do canto superior esquerdo DH = linha do canto inferior direito DL = coluna do canto inferior direito BH = atributo a ser usado nas novas linhas »Rolar para baixo a janela de vídeo Chama-se com: AH = 7 AL = número de linhas a serem roladas (Zero (0) rola todas) CH = linha do canto superior esquerdo CL = coluna do canto superior esquerdo DH = linha do canto inferior direito DL = coluna do canto inferior direito BH = atributo a ser usado nas novas linhas

265 Arquitetura de Computadores –INT 10h - Vídeo »Ler o caracter e o atributo da posição do cursor Chama-se com: AH = 8 BH = número da página Recebe-se em: AL = caracter AH = atributo do caracter »Escreve caracter e atributo Chama-se com: AH = 9 BH = número da página AL = caracter BL = atributo do caracter CX = número de repetições

266 Arquitetura de Computadores –INT 10h - Vídeo »Escreve caracter Chama-se com: AH = 10 BH = número da página AL = caracter CX = número de repetições »Escreve um ponto (pixel) Chama-se com: AH = 12 AL = cor do pixel. Caso o bit 7 de AL seja 1, a cor do pixel será o ou-exclusivo com a cor atual. BH = página CX = coordenada X (coluna) DX = coordenada Y (linha)

267 Arquitetura de Computadores –INT 10h - Vídeo »Ler um ponto (pixel) Chama-se com: AH = 13 BH = página CX = coordenada X (coluna) DX = coordenada Y (linha) Recebe-se em: AL = cor do pixel »Escreve caracter em modo TTY Chama-se com: AH = 14 BH = número da página AL = caracter BL = cor do 2º plano * Avança posição do cursor automaticamente. ** Aceita caracteres de controle como bell, avanço de linha, carriage return e backspace.

268 Arquitetura de Computadores –INT 10h - Vídeo »Obtém o modo do vídeo Chama-se com: AH = 15 Recebe-se em: AH = número de colunas da tela AL = modo BH = página ativa »Escreve caracter em modo TTY Chama-se com: AH = 14 BH = número da página AL = caracter BL = cor do 2º plano * Avança posição do cursor automaticamente. ** Aceita caracteres de controle como bell, avanço de linha, carriage return e backspace.

269 Arquitetura de Computadores –INT 13h - DISCO »Reseta sistema de dico Chama-se com: AH = 00h AL = número do driver Fh floppy disk 80 - FFh hard disk Recebe-se em: CF = 0 sem erro 1 erro AH = código do erro »Código do Erro 00h - sem erro 01h - comando inválido 02h - “address mark” não encontrado 03h - disco protegido 04h - setor não encontrado 05h - falha de reset 06h - disco removido 08h - erro de DMA 09h - erro de limite de DMA 10h - setor com erro 20h - falha do controlador 40h - trilha não encontrada 80h - time-out

270 Arquitetura de Computadores –INT 13h - DISCO »Obtém status Chama-se com: AH = 01h Recebe-se em: AL = código do erro »Ler/Escreve/Verifica/Formata Chama-se com: AH=02h/03h/04h/05h AL= número de setores CH= número do cilindro CL= número do setor (1, se AH=5) DH= número da cabeça DL= número da unidade ES:BX= buffer Recebe-se em: CF= 0 sem erro 1 erro AH= código do erro

271 Arquitetura de Computadores –INT 13h - DISCO »Se AH=05h (Formatar) ES:BX = 4 campos de entrada para cada setor byte 0 - número do cilindro byte 1 - número da cabeça byte 2 - número do setor byte 3 - código do tamanho do setor 00h b/s 01h b/s 02h b/s 03h b/s

272 Arquitetura de Computadores –INT 16h - Teclado »Aguarda a diigitação de um caracter e o lê Chama-se com: AH = 10h Se um caractere ASCII foi digitado Recebe-se em AH = código de varredura AL = código ASCII Se um caractere especial foi digitado Recebe-se em AH = código ASCII estendido AL = 00h »Verifica se um caracter está pronto Chama-se com: AH = 11h Se um caractere ASCII foi digitado ZF=0 e AH = código de varredura AL = código ASCII Caso contrário, ZF=1 Obs.: Não remove do buffer

273 Arquitetura de Computadores –INT 16h - Teclado »Obtêm status do teclado Chama-se com: AH = 12h Recebe-se em AL = status 01h - shift direito ativo 02h - shift esquerdo ativo 04h - crtl ativo 08h - alt ativo 10h - num lock ativo 20h - scroll lock ativo 40h - caps lock ativo 80h - inserção ativa

274 Arquitetura de Computadores –INT 17h - Impressora »Imprime caractere Chama-se com: AH = 00h AL = caractere DX = número da impressora Recebe-se em AH = status »Inicializa impressora Chama-se com: AH = 01h DX = número da impressora »Obtêm status da impressora Chama-se com: AH = 02h DX = número da impressora Recebe-se em AH = status 01h - time-out 08h - erro de I/O 10h - impressora selecionada 20h - sem papel 40h - reconhecimento 80h - impressora desocupada

275 Arquitetura de Computadores –INT 19h - Warm Start –INT 1Ah - Obtém / atualiza tempo / data »Ler contador do relógio Chama-se com: AH = 00h Recebe-se em: AL = 0, se não se passaram 24h da última leitura CX = parte de alta- ordem do contador DX = parte de baixa- ordem do contador »Atualiza contador do relógio Chama-se com: AH = 01h CX = parte de alta-ordem do contador DX = parte de baixa-ordem do contador »Ler relógio Chama-se com: AH = 02h Recebe-se em: CH = horas em BCD CL = minutos em BCD DH = segundos em BCD DL = milesegundos em BCD

276 Arquitetura de Computadores –INT 1Ah - Obtém / atualiza tempo / data »Atualiza relógio Chama-se com: AH = 03h CH = horas em BCD CL = minutos em BCD DH = segundos em BCD DL = milesegundos em BCD »Ler data Chama-se com: AH = 04h Recebe-se em: CH = século (19 ou 20) em BCD CL = ano em BCD DH = mês em BCD DL = dia em BCD »Atualiza data Chama-se com: AH = 05h CH = século (19 ou 20) em BCD CL = ano em BCD DH = mês em BCD DL = dia em BCD

277 Conexao Prot Board Vamos aqui mostar como foi implementada a conecção entre o porta Paralela e o Prot Board. O computador geralmente possui 3 portas: LPT1, LPT2 e LPT3 (alguns possuem LPT4). Cada porta dessas possui 3 endereços: data, status e control. Esses endereços estão numa ordem sequencial. Isso quer dizer que se a porta data tem o endereço 0x038, então o endereço correspondente de status é 0x0379 e o control é 0x037a.

278 Conexao entre a Porta Paralela e o Prot Board Endereços de Acesso a Porta Poralela Hoje em dia, os computadores estão basicamente configurados da seguinte maneira: Printer Data Port Status Control LPT1 0x0378 0x0379 0x037a LPT2 0x0278 0x0279 0x027a LPT3 0x03bc 0x03bd 0x03be Obs: A porta normalmente utilizada e a LPT1

279 Conexao entre a Porta Paralela e o Prot Board Abaixo temos a a função dos pinos no conector DB25:

280 Conexao entre a Porta Paralela e o Prot Board Na figura temos a direção dos pinos de acordo com função

281 Conexao entre a Porta Paralela e o Prot Board Desta forma utilizamos para a montagem os bits de dados D0 ~ D4 como saída, e como entrada Ack no pino 10, Busy no pino 11, Paper end no pino 12, Slct out no pino 13 e Error no pino 15. A saídas foram conectadas nas 4 entrada do 2º display de sete segmentos da Placa (que possui decodificador), de acordo com a sequência; D0 -> I0 ; D1 -> I1 etc... A saída D4 não esta sendo utilizada e de D5~D7 não foram conectadas.

282 Conexao entre a Porta Paralela e o Prot Board As Entradas estão conectadas as primeiras chaves da placa e ligada também ao 1º display de sete segmentos, não lembro qual foi bit foi utilizado como mais significativo e qual como menos significativo. Desta forma quando se comuta as chaves de entrada, verifica-se a alteração no valor do 1º display na placa. O pino 25 do conector estar servindo de com sinal de referência(GND) para a Placa. Obs: o Lembrando que o sinal de Controle BUSY invertido pelo hardware da Porta Paralela

283 Arquitetura de Computadores –Endereços da Porta Paralela »PortaReg de Dados Reg de Status Reg de Controle LPT1 378h 379h 37Ah LPT2 278h 279h 27Ah D7 D6 D5 D4 D3 D2 D1 D0 Busy (LI) #Ack PE SELECT #ERROR #IRQ Reservado Reservado (Todos são LI) Reservado Direção (não conctado) IRQ ENABLE (não conctado) # SELECT INPUT INIT #AUTOFEED #STROBE Lógica Invertida: escrevendo-se 0, tem-se 1 na saída

284 Arquitetura de Computadores –Teste de Presença de Porta MOV AH,3 MOV AL,AH MOV DX,378H OUT DX,AL XOR AL,AL IN AL,DX CMP AH,AL JNZ PortNotPresent (Verificar o endereço 0040:0008h)

285 Arquitetura de Computadores D0 2 BUSY 11 (378h) (379H) 330  10K  +5V

286 Arquitetura de Computadores –Controle sobre a Porta Paralela MOV AL,01h ; apaga LED MOV DX,378h OUT DX,AL T: MOV DX,379h IN AL,DX ; lê reg de status TEST AL,80h ; e verifica se tecla foi JNZ T1 ; pressionada MOV AL,00h ; se foi, acende-se o LED OUT DX,AL CALL DELAY T1:MOV AL,01h ; apaga-se o LED OUT DX,AL MOV AH,01h ; verifica-se INT 16h ; se uma tecla foi pres- JNZ T2; sionada JMP T T2:MOV AH,4CH INT 21h ; fim

287 Arquitetura de Computadores –INT 14h - serial (BIOS) –INT 21h »CONSOLE:SERVIÇOS Ch »AJUSTE DE INTERRUPÇÃO: 25h,35h »DATA E HORA: 2Ah-2Dh »FINALIZAÇÃO DE PROGRAMA: 4Ch,31h »DIRETÓRIO E ARQUIVO:39h-43h

288 C com Assembly /*C com Assembly - Inline - Teste de Presenca de Paralela - */ #include int main() { printf("Teste da Paralela \n"); asm mov dx,0x378 asm mov al,0xf0 asm mov ah,al asm out dx,al asm xor al,al asm mov dx,0x378 asm in al,dx asm xor al,ah asm jnz t printf("LPT1 presente!\n"); t: return 0; }

289 C com Assembly /*C com Assembly - Inline - Teste de Presenca de Paralela - */ #include extern int xplusy(int x, int y); int main() { int a,b a=5; b=7; printf(“A soma é %d”,xplusy(a,b)); return 0;.MODEL SMALL.CODE PUBLIC xplusy xplus PROC NEAR PUSH BP MOV BP,SP SUB SP,02 MOV AX,[BP+04] ADD AX,[BP+06] MOV [BP-02],AX MOV SP,BP POP BP RET xplusy ENDP END

290 C com Assembly.MODEL SMALL.CODE PUBLIC xplusy xplus PROC NEAR PUSH BP MOV BP,SP SUB SP,02 MOV AX,[BP+04] ADD AX,[BP+06] MOV [BP-02],AX MOV SP,BP POP BP RET xplusy ENDP END z 1006 valor de BP 1008 endereço de retorno 100A 5 a 100C 7 b Topo da Pilha do Main

291 C com Assembly /*C com Assembly - Inline - Teste de Presenca de Paralela - */ #include extern int xplusy(int x, int y); int main() { int a,b a=5; b=7; printf(“A soma é %d”,xplusy(a,b)); return 0;.MODEL SMALL,C.CODE PUBLIC xplusy xplus PROC NEAR C, x:word, y:word LOCAL z:word MOV AX,x ADD AX,y MOV z,AX RET xplusy ENDP END

292 C com Assembly /*C com Assembly - Inline - Teste de Presenca de Paralela - */ #include extern int xplusy(int x, int y); int main() { int a,b a=5; b=7; printf(“A soma é %d”,xplusy(a,b)); return 0; Código gerado para xplusy: PUSH BP MOV BP,SP SUB SP,02 MOV AX,[BP+04] ADD AX,[BP+06] MOV [BP-02],AX MOV SP,BP POP BP RET

293 C com Assembly bcc -S nome.asm nome.c - converte arquivo C em assembly bc - BorlandC tasm - TurboAssembler td - TurboDebugger


Carregar ppt "Organização de Computadores Paulo Maciel. Arquitetura de Computadores 1 Introdu₤₧o 1 Resumo Histórico 1 Componentes computador 1 Componentes de um processador."

Apresentações semelhantes


Anúncios Google