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

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

Organização de Computadores

Apresentações semelhantes


Apresentação em tema: "Organização de Computadores"— Transcrição da apresentação:

1 Organização de Computadores
Paulo Maciel

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

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

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

5 Arquitetura de Computadores
Material Didático: Computer Organization and Architecture Autor: William Stallings Editora : Prentice-Hall, Inc The Pentium Microprocessosr Autor - James L. Antonakos Editora: Prentice-Hall, Inc. 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 Máquinas de Aiken
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 (1945-1955) ENIAC UNIVAC IBM 7090
Tecnologia - Válvulas e rel₫s Arquitetura: 20 registradores 10 digitos decimais Programa₤₧o: Chaves Jonh Mauchley UNIVAC IBM 7090

10 1ª Gera₤₧o (1945-1955) 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 Entrada Saída Acumulador Arquitetura de von Neumann

11 Camadas de um Sistema Computacional
Linguagens Sistemas Operacionais Máquinas Aplica₤ões SO Máquina

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

13 2ª Gera₤₧o (1955 - 1965) PDP-1 IBM 1401 IBM 7094 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 Advento do Transistor redu₤₧o de dimensões redu₤₧o do consumo de pot₨ncia possibilita a constru₤₧o de equipamentos mais complexos

14 2ª Gera₤₧o (1955 - 1965) Sistema Operacional Batch
Fortran Monitor System IBSYS Linguagens de Alto Nível FORTRAN ALGOL Distin₤₧o clara das atividades e grupos de pessoas na execu₤₧o de tarefas

15 3ª Gera₤₧o (1965 - 1980) Circuitos Integrados IBM System/360
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 (1965 - 1980) Simula Multiprograma₤₧o Pascal C Timesharing
ML Smalltalk Multiprograma₤₧o Timesharing

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

18 4ª Gera₤₧o (1980 - ?) C++ VisualBasic Java
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 Códigos de Instru₤ões Seqü₨ncia de Fun₤ões Aritm₫tica e Lógicas Interpretador de Instru₤ões Dados Resultados Controle Fun₤ões Aritm₫tica e Lógicas de Propósito Geral Dados Resultados Programa₤₧o em Hardware Programa₤₧o em Software

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

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

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

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. Operand. Escrev. Operand. Múltiplos Operandos Múltiplos Resultados Cal. End. Prox. Inst. Dec. Inst. Cal. End. Operand. Exec. Operaç. Cal. End. Operand. Instrução Finalizada. Busca Nova Instrução Retorna para string ou vetor

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 Hardware Internas 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. L₨ Operand. Escrev. Operand. Verif. se há interrp. Sem Interrup. Múltiplos Operandos Múltiplos Resultados Cal. End. Prox. Inst. Dec. Inst. Cal. End. Operand. Exec. Operaç. Cal. End. Operand. Interrupção Instrução Finalizada. Busca Nova Instrução Retorna para string ou vetor

30 Arquitetura de Computadores
Múltiplas Interrupções 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

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

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

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 Barr. Local CPU Cache Controlador Locoal de I/O Memória Barr. do Sistema Interface de Expansão Modem I/O Serial SCSI Network Expansão do Bus

35 Arquitetura de Computadores
Elementos de Projeto de um Barramento Tipo Multiplexado Dedicado Vantagem Menos linhas Possível menor Custo Desvantagem Circuitos dos módulos é mais complexo Desempenho I/O Paralelo I/O Serial Memória CPU

36 Arquitetura de Computadores
Elementos de Projeto de um Barramento Tipo Multiplexado Dedicado Vantagem Menor contenção Desempenho Desvantagem Mais linhas Custo I/O Paralelo I/O Serial Barr. de I/O Adaptador Adaptador Barr. local CPU Memória

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

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

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

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

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 Barr. Local Ponte/ Controlador de Memória CPU DRAM Cache Network SCSI Vídeo Contolador de Vídeo Áudio Barramento PCI Ponte para Expansão Dispositivos I/O Expansão do Bus

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 Interna
Memória Principal Disco Magnético CDROM Fita Memória Interna Memória Externa Memória Off-line Memória de Massa

46 Memória Principal - semicondutora -
Sistema de Memória Memória Principal - semicondutora - Volateídade Categoria Tipo Apagamento Escrita Volátil E/L RAM Elétrico Elétrico Só leitura ROM Ñ é Possível Máscara PROM Elétrico Ñ volátil Quase só EPROM UV de leitura EEPROM Elétrico

47 Sistema de Memória Memória ROM Diagrama em Bloco Vcc An-1 Dm-1 A0
D D D m-1 A0 An-1 CS Estrutura Interna Lógica de Decod. An-1 Dm-1 n  m ROM A0 D0 CS Diagrama em Bloco

48 Sistema de Memória Memória PROM Diagrama em Bloco Vcc Fusível Vcc An-1
Dm-1 A0 An-1 Lógica de Decod. n  m PROM Vcc A0 D0 CS Diagrama em Bloco CS D D D m-1 Estrutura Interna

49 Sistema de Memória Memória EPROM Diagrama em Bloco
Modo Entradas Saídas CS OE/Vpp Ler/ VL VL dados_saída Verificar Saída VL VH Alta Imp. Desabilitada Standby VH X Alta Imp. Programa VL VPP Dados_entrada An-1 Dm-1 n  m EPROM OE/ Vpp A0 D0 CS Diagrama em Bloco

50 Sistema de Memória Memória EEPROM Diagrama em Bloco
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. An-1 Dm-1 A0 An-1 n  m EEPROM A0 D0 WE CS OE Diagrama em Bloco

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

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

53 Sistema de Memória Memória RAM Dinâmica Diagrama em Bloco Ent_ Dados
R/W Célula Ak-1/An-1 A0 An-1 Din Lógica de Decod. A0 An-1 Matrix Dout n  1 RAM CS A0/Ak RW RAS CAS Diagrama em Bloco Saída_Dados

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, Tacc= 17 ns Processador Cache Memória

56 Memória Cache Política de Busca Demanda Pré-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 Writethrough Writeback
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 RAND - Aleatório
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 Diversos blocos de memória são mapeados na mesma linha da CACHE Tag Linha Endereço de 32 bits TAG Dado 1 127 TAG Dado . . Número de Linhas 27 = 128 TAG Dado 25 = 32 bytes

60 Memória Cache Organização
Completamente Associativa Vantagem Flexibilidade Desvantagem Complexidade do Hardware Tag Linha Endereço de 32 bits TAG Dado 1 127 TAG Dado . . TAG Dado 25 = 32 bytes

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

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
X=7 I cache D I cache D Barramento P2 p4 I cache D I cache D Memória X=10 X=30

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
Pn Sistema de Interconex₧o SMm I/O SM1 Memória Compartilhada Fortemente Acoplados Aplica₤ões Gerais Time-sharing

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

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

68 Multicomputadores M P M P M P M P Intel iPSC/1 - Intel Paragon -
Rede de Inter- conex₧o M P M P M P M P 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 Cabeças de Leitura/Gravação Taxatransf = bytes transf./ Tacesso
Memória Externa Disco Magnético Cabeças de Leitura/Gravação Superficies Setor Trilha Gap Tacesso=Tseek + Tlat + Ttrans Taxatransf = bytes transf./ Tacesso

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 * CD-ROM Velocidade Velocidade
Angular Constante Velocidade Linear Constante Desvantagem Capacidade dos setores externos fica limitada a do mais interno Vantagem Simplicidade no endereçamento de setores Desvantagem Sistema de endereçamento mais complexo Vantagem Maior capacidade de armazenamento

78 Memória Externa CD-ROM 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 r=32,55m

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

80 Memória Externa WORM (Write Once Read Many) Tecnologia Layout - VAC
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 Layout - VAC
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 Organização dos dados
Material recoberto por oxido magnético. Organização dos dados Gap Trilhas Registro

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 Bus de end.
Bus de dados Bus de controle Módulo I/O status e controle dados Disp. Externo 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 Transdutor
Dados de/para o módulo I/O Controle do módulo I/O Status para módulo I/O Lógica de Controle Buffer Transdutor Dados de/para o ambiente

88 Regs. Status e de Controle
Entrada/Saída Modelo Genérico do Módulo I/O Dados Interface com Disp. Externos Dados Reg. de dados Controle Status Regs. Status e de Controle Dados Lógica de I/O Interface com Disp. Externos Endereço Controle 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
Condição de erro Envia Comando de Leitura para Módulo I/O pronto Escreve palavra na Memória Lê status do Módulo I/O Lê palavra do Módulo I/O Ver. status Não está pronto Feito ? não sim Próxima Instrução

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

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

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

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

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
Caracteristicas CISC Instruções complexas Modos de endereçamento complexos Controle implementado por ROM Micro-instruções 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

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 CONTROLE MEMÓRIA DE MICROPROGRAMA VIA DE DADOS CONTADOR DE MICROPROGRAMA PC +1 LÓGICA DE SELEÇÃO DE ENDEREÇO STATUS MEMÓRIA REGISTRADOR DE INSTRUÇÃO 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 DATAPATH CONTROL REGISTER FILE STATE REGISTER ALU STATUS DATA CACHE INSTR. CACHE INSTRUCTION REG. MEMORY CONTROL UNIT

102 Arquitetura de Computadores Petium
8086 16 bits Espaço de endereçamento : 1 Mb Endereço da primeira instrução executada: FFFF0H 286 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 Modo Protegido Modo Virtual
1 Mbyte Modo Protegido 4 Gbytes Multitarefa Memória Virtual Gerenciamento e Proteção de Memória Modo Virtual Modo de Gerenciamento

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

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 DF IF TF SF ZF AF PF 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_Code Dado Op_Code Regist. Regist. Dado

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

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

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

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

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

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 = 65536 Op_Code Ender. ou DX

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

115 Arquitetura do Pentium
Floating point unit Floating point registers Instruction pointer Branch target buffer Branch target address 32 Prefetch address 8kb instruction cache 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 Add. generate V pipe ALU V pipe 8kb data cache 256 Integer register file Add. generate U pipe ALU U pipe TLB Shifter TLB Page Unit 32 Address bus - 32 bits Data bus bits Add. Bus Unit Data Data bus - 64 bits Control bus Add. Bus 32 bits

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
Prefet. Buffer V 64 bytes U 256 bits Decod. D1 V U 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

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

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

120 Arquitetura do Pentium
FPU Decod. D1 V U Decod. D2 V Conrole Reg. File ADD DIV MUL Decod. D2 U Unidade de Microcódigo 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 I I2 I I4 I I6 I I8 I I10 PF D1 D2 EX WB I I2 I I4 I I6 I I8 I I2 I I4 I I6 I I2 I I4 I I2

123 Previsão Dinâmica de Desvio
NT T H:11 P:T H:10 P:T T Instruction pointer Branch target buffer NT T Branch target address T H:00 P:NT H:01 P:T Prefetch address NT 8kb instruction cache 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 NT 256 Address Instruction Targ. Add. History Prediction TLB .

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, Tacc= 17 ns Processador Cache Memória

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

127 Memória Cache Política de Busca Demanda Pré-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 Writethrough Writeback
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 RAND - Aleatório
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 Diversos blocos de memória são mapeados na mesma linha da CACHE Tag Linha Endereço de 32 bits TAG Dado 1 127 TAG Dado Número de Linhas 27 = 128 . . TAG Dado 25 = 32 bytes

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

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

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 . 25 = 32 bytes Set 0 Set 1 Set 127 TAG Dado TAG Dado . . TAG Dado 25 = 32 bytes

134 Arquitetura do Pentium
Floating point unit Floating point registers Instruction pointer Branch target buffer Branch target address 32 Prefetch address 8kb instruction cache 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 Add. generate V pipe ALU V pipe 8kb data cache 256 Integer register file Add. generate U pipe ALU U pipe TLB Shifter TLB Page Unit 32 Address bus - 32 bits Data bus bits Add. Bus Unit Data Data bus - 64 bits Control bus Add. Bus 32 bits

135 Memória Cache Translation Lookaside Buffer
Endereço linear Endereço Físico para Cache Tag Linha Endereço Linear TLB T End . 1 15 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
X=7 I cache I cache D cache D cache Barramento P2 p4 I cache D cache I cache D cache X=10 X=30

138 Dimensões das Caches Pentium Pentium MMX Pentium Pro
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 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 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
Pipeline U PF D1 D2 EX Fluxo de instruções e de dados Bypass ER Fluxo de dados WF X2 X1 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
Pipeline U PF D1 D2 EX Fluxo de instruções e de dados Bypass 2 Bypass 1 ER Fluxo de dados WF X2 X1 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 Leit. de Código ñ cache Leit. de Código em Rajada de 32 bytes x Leit. Mem. Acima de 8 bytes ñ cache x 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 BE7 BE6 BE5 BE4 BE3 BE2 BE1 BE0 Ciclo shutdown flush cache halt writeback flush ack. br. tr. mess

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

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 Válido CACHE KEN Data
t t t t t ti Clk ADS Address W/R BRDY CACHE KEN Data Válido P/ CPU P/CPU P/ CPU P/ CPU

148 Operações Locked e BOFF
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
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
vcc Pentium INT0 INT7 ‘148 ‘374 . D0 D7 A2 A1 A0 GS . EI vcc D Q clk INTR M/IO D/C W/R ADS clr

151 Cache Flush e Shutdown Cache Flush Shutdown
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 Inquire Cycle Halt
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. 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

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 Diádicas 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
POP desemp. POPA/POPAD todos reg/32 bits POPF/POPFD 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 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 bits flags/32 bits

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 (imedit./ 32 bits) EX.: PUSHW 34ADh PUSHD EAX PUSHD 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 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 todos reg/32 bits EX.: POPA POPAD

165 Transfer₨ncia de Dados
Sintaxe: POPF/POPFD 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_DEST - 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_DEST - registrador de 32 bits EX.: MOV EAX, H BSWAP EAX EAX = H

173 Transfer₨ncia de Dados
Sintaxe: LAHF Carrega AH com flags EX.: POPF LAHF

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

175 Aritmética Instruções ADD adiçã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 - adi₤₧o com vai um
EX.: ADC AL,CH ADC [BX],DX ADC DX,4

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

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

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

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

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

183 Aritm₫tica Sintaxe: CMPXCHG OP_DEST, OP_FONTE - compara e permuta
Compara 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 10 10 30 10 30 30 AL BL CL AL BL CL 10 20 30 AL BL CL 20 20 30 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.: CBW CWDE CWD CDQ

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 atribui 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 - procura 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 - testa, 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 - Parada
Para o sistema. O processador fica neste estado at₫ ocorrer um reset ou uma interrup₤₧o NMI ou INTR.

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

207 Strings Sintaxe: REP - Instru₤₧o prefixo EX.: REP MOSVB
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 - Instru₤₧o prefixo EX.: REPE CMPSB
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 - Instru₤₧o prefixo EX.: REPNE SCASW
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 EX.: MOV AX,0300H
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 EX.: MOV AX,0300H
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 EX.: MOV AX,0300H
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 MOV AL,4EH REPNZ SCASB

213 Strings Sintaxe: LODS/ LODSB/ LODSW/ LODSD - carrega EX.: MOV AX,0510H
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 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’ DW 100 DUP(?) S1 ENDS D1 SEGMENT DEFINIÇÃO DE VARIÁVEIS D1 ENDS C1 SEGMENT ASSUMECS:C1, DS:D1,ES:D1,SS:S1 P1 PROC FAR MOV AX,D1 MOV DS,AX MOV ES,AX CoRPO DO PROGRAMA MOV AH,4CH INT 21H P1 ENDP R1 PROC NEAR CORPO DA ROTINA RET 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 DEFINIÇÃO DE VARIÁVEIS P1 PROC NEAR CORPO DO PROGRAMA MOV AH,4CH INT 21H P1 ENDP R1 PROC CORPO DA ROTINA RET 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 ROT PROC NEAR P1 PROC FAR RET CALL ROT ROT ENDP ... RET P1 ENDP 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: X DB 2AH LISTA DB 30D,43D,74D Y DW BH Z DB B

225 Diretivas do Macro-Assembler
EQU - DEFINE CONSTANTE FORMATO: NOME EQU VALOR EXEMPLO: CONST1 EQU 0 CONST EQU 4 CONST 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 02H ROT PROC NEAR MOV AX,WORD PTR X CALL FAR PTR ROT RET 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 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: MENS DB ‘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 <[valor_inicial [,valor_inicial]]>

228 Diretivas do Macro-Assembler
ESTRUTURAS - date STRUC month db ? day db ? year dw ? date ENDS DADOS SEGMENT PARA 'DATA' yesterday date <09,03,2000> today date <09,04,2000> tomorrow date <09,05,2000> anotherday date <> someotherdays date 20 DUP (<>) DADOS ENDS CODIGO SEGMENT PARA 'CODE' ASSUME CS:CODIGO,DS:DADOS,SS:PILHA INICIO PROC FAR 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
DADOS SEGMENT PARA 'DATA' RenataN db 06 RenataN 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 INICIO PROC FAR 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? Quais os tipos de 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 Hardware Internas 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 Diagrama em Blocos - PIC 8259
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 IR2 EOI RETI PROGRAMA PRINCIPAL INICIALIZA 8259A IR2, IR4 UNMASK STI ROTINA IR4 ROTINA IR2 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 Diagrama em Blocos - PIC 8259
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.

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 Etapas de uma Interrupção
É 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.

246 Configuração em Cascata PIC 8259

247 Configuração em Cascata PIC 8259
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
A6 A5 1 LTIM ADI SNGL IC4 A7 - A5 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 D D D D D D D D0

254 Palavra de Controle de Inicialização - ICW2/3
ICW3 (MESTRE) ICW3 (ESCRAVO) T7 - T3 OF INTERRUPT VECTOR ADDRESS (8086 / 8088 MODE) T7 1 T6 T5 T4 T3 A10 A9 A8 A D D D D D D D D0 1 = IR INPUT SLAVE 0 = NO IR INPUT SLAVE S7 1 S6 S5 S4 S3 S2 S1 S0 A D D D D D D D D0 SLAVE ID ( ) 1 ID2 ID1 ID0 A D D D D D D D D0

255 Palavra de Controle de Inicialização - ICW4
1 = 8086/8086 MODE O = MCS-80/85 MODE 1 = AUTO EOI O = NORMAL EOI X  NON BUFFERED MODE  BUFFERED MODE / SLAVE  BUFFERED MODE / MASTER 1 = SPECIAL FULLY NESTED MODE 0 = NOT SPECIAL FULLY NESTED MODE A D D D D D D D D0 1 SFNM BUF M/S AEOI PM

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

257 Palavra de Controle de Operação - OCW1/2
INTERRUPT MASK 1 = MASK SET 0 = MASK RESET M7 1 M6 M5 M4 M3 M2 M0 A D D D D D D D D0 IR LEVEL TO BE ACTED UPON ( ) A D D D D D D D D0 R SL EOI L2 L1 L0  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 ** ** L0 - L2 ARE USED END OF INTERRUPT AUTO ROTATION SPECIFIC ROTATION

258 Palavra de Controle de Operação - OCW3
A D D D D D D D D0 ESMM SMM 1 P RR RIS  READ IRR ON NEXT RD PULSE  READ ISR ON NEXT RD 1 = POLL COMMAND 0 = NO POLL COMMAND  RESET SPECIAL MASK  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
Modo Resolução Caract. 0h × tx, preto/branco 1h × tx, 16 cores 2h × tx, preto/branco 3h × tx, 16 cores 4h × gr, 4 cores 5h × gr, preto/branco 6h × gr, 2 cores 12h × gr, 16 cores INT 10h - Vídeo Especificação do modo Chama-se com: AH = 0 AL = Modo

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 00 - 7Fh floppy disk 80 - FFh hard disk Recebe-se em: CF = sem erro 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 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 AH = 01h 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 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 AH = 05h

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 LPT x x x037a LPT x x x027a LPT x03bc 0x03bd x03be 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 Porta Reg de Dados Reg de Status Reg de Controle LPT h h Ah LPT h h Ah Lógica Invertida: escrevendo-se 0, tem-se 1 na saída 2 3 4 5 6 7 8 9 D7 D6 D5 D4 D3 D2 D1 D0 11 10 12 13 15 Busy (LI) #Ack PE SELECT #ERROR #IRQ Reservado 17 16 14 1 Reservado (Todos são LI) Reservado Direção (não conctado) IRQ ENABLE (não conctado) # SELECT INPUT INIT #AUTOFEED #STROBE

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
+5V 330 (378h) (379H) D0 2 BUSY 11 +5V 10K

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 T ; pressionada MOV AL,00h ; se foi, acende-se o LED 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 <stdio.h> 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 in al,dx asm xor al,ah asm jnz t printf("LPT1 presente!\n"); t: return 0; }

289 C com Assembly .MODEL SMALL /* C com Assembly - Inline - .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 /* C com Assembly - Inline - Teste de Presenca de Paralela - */ #include <stdio.h> 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;

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 valor de BP 1008 endereço de retorno 100A a 100C b Topo da Pilha do Main

291 C com Assembly .MODEL SMALL,C /* C com Assembly - Inline - .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 /* C com Assembly - Inline - Teste de Presenca de Paralela - */ #include <stdio.h> 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;

292 C com Assembly /* C com Assembly - Inline -
Teste de Presenca de Paralela - */ #include <stdio.h> 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"

Apresentações semelhantes


Anúncios Google