Organização de Computadores

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Modelos de Microprocessadores
Arquitetura de Computadores
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Barramentos Introdução.
Entrada e Saída Introdução.
Técnicas para operações E/S
SOFTWARE BÁSICO.
Software Básico Silvio Fernandes
ARQUITETURAS RISC E CISC
Chip-Select e Controle de Interrupção
Chip-Select e Controle de Interrupção Sistemas Embarcados.
Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados.
Arquitetura dos Microprocessadores 8086 e 8088
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
Sistemas Operacionais
CISC e RISC.
Problemas com Entrada e Saída
Maria Aparecida Castro Livi
Maria Aparecida Castro Livi
Introdução à Informática
Sistemas Operacionais
Professor: Erivelto Tschoeke – UDESC/CEPLAN
O MICROPROCESSADOR INTEL 8080
+ = MOTIVAÇÃO ARQUITETURA DE COMPUTADORES CIRCUITOS LOGICOS
Arquitetura de Sistemas Operacionais
Autor: Fernando de Mesentier Silva
Arquitectura de Computadores II
Sistemas Operacionais I
Introdução à Programação
Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação – CECOMP PIC16F877A - Parte III Jadsonlee da Silva Sá
EEL Microprocessadores
PIC 8259 PIC 8259.
Linguagem de Montagem.
Sistemas Operacionais
João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis.
Sistemas Operacionais
Família Intel P5 e P6 P5 P6 NetBurst Incluindo cache L2.
Sistemas Operacionais I
Prática de Programação Assembly 8086
Interface Hardware/Software
Organização e Arquitetura de Computadores
Entrada e Saída (E/S ou I/O)
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Agenda - Aula 03 Introdução (Computador Digital) Memória
Unidade Central De Processamento: Processador
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Unidade Central De Processamento: Processador
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
Arquitetura de Computadores
8088 Assembly Software Básico Mitsuo Takaki.
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Rotinas do BIOS e DOS Serviços de vídeo (INT 10H)
Parte 3 Seção de Dados e Unidade de Controle
Introdução à Computação Componentes Básicos dos Computadores
Arquitetura de Computadores
Sistemas Operacionais IV – Gerenciamento de E/S
Arquitetura de Sistemas Operacionais
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
Arquitetura do ARM RISC (Reduced Instruction Set Computer) – Conjunto relativamente grande de registradores – Modelo “load/store “de processamento Operações.
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Ney Laert Vilar Calazans Exemplo de Apresentação de TP1 Descrição Resumida de uma Arquitetura de Processador: o estudo de caso do Intel 8086 ORGANIZAÇÃO.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais Prof.: Gustavo Wagner
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
Transcrição da apresentação:

Organização de Computadores Paulo Maciel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3ª Gera₤₧o (1965 - 1980) Simula Multiprograma₤₧o Pascal C Timesharing ML Smalltalk Multiprograma₤₧o Timesharing

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

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)

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

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

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

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

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

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

Arquitetura de Computadores Diagrama de Estado do Ciclo de Instrução Busca Inst. Lê 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

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

Arquitetura de Computadores Interrupções na Arquitetura x86 Hardware Internas Externas Mascarável Não-Mascarável Software Sistema Operacional Usuário

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 1149.1)

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)

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

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

Sistema de Memória Memória ROM Diagrama em Bloco Vcc An-1 Dm-1 A0 D0 D1 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

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 D0 D1 D m-1 Estrutura Interna

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

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

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

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

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

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

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

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

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

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

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 20 7 5 Endereço de 32 bits TAG Dado 1 127 TAG Dado . . Número de Linhas 27 = 128 TAG Dado 25 = 32 bytes

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

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

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.

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

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

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

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

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

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-

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

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

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

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

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

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)

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

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

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

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

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 M1 - 2048 bytes + ECC M2 - 2336 sem ECC 00 FF×10 00 End M 2048 bytes 288 bytes ou ECC Sync Id Dados M2=dados, M1=ECC

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 80387 interno

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

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

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

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

Modos de Endereçamento de Dados Imediato Ex.: mov cx,1024H Registrador Ex.: mov al,ah Op_Code Dado Op_Code Regist. Regist. Dado

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

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

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

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

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

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

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

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 - 64 bits Add. Bus Unit Data Data bus - 64 bits Control bus Add. Bus 32 bits

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

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

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

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

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

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

Arquitetura do Pentium Execução Super-Escalar Ciclos 1 2 3 4 5 de clock I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 PF D1 D2 EX WB I1 I2 I3 I4 I5 I6 I7 I8 I1 I2 I3 I4 I5 I6 I1 I2 I3 I4 I1 I2

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 .

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

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

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

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

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

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

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 20 7 5 Endereço de 32 bits TAG Dado 1 127 TAG Dado Número de Linhas 27 = 128 . . TAG Dado 25 = 32 bytes

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

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

Memória Cache Organização do Pentium Two-way-set - associative 128 Conjuntos - 256 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

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 - 64 bits Add. Bus Unit Data Data bus - 64 bits Control bus Add. Bus 32 bits

Memória Cache Translation Lookaside Buffer Endereço linear Endereço Físico para Cache Tag Linha 16 4 12 Endereço Linear TLB T End . 1 15 20 12 Endereço Físico para Cache

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.

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

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

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

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.

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

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

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

Opera₤ões de Barramento Ciclos Especiais BE7 BE6 BE5 BE4 BE3 BE2 BE1 BE0 Ciclo 1 1 1 1 1 1 1 0 shutdown 1 1 1 1 1 1 0 1 flush cache 1 1 1 1 1 0 1 1 halt 1 1 1 1 0 1 1 1 writeback 1 1 1 0 1 1 1 1 flush ack. 1 1 0 1 1 1 1 1 br. tr. mess

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

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. 0 8 10 18 8 0 18 10 10 18 0 8 18 10 8 0

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

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.

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

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

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

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

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

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

Transferência de Dados 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 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

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

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

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

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

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

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

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

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

Transfer₨ncia de Dados Sintaxe: POPA/POPAD todos reg/32 bits EX.: POPA POPAD

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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’

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

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

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 402BH Z DB 01001110B

Diretivas do Macro-Assembler EQU - DEFINE CONSTANTE FORMATO: NOME EQU VALOR EXEMPLO: CONST1 EQU 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 02H ROT PROC NEAR MOV AX,WORD PTR X .... CALL FAR PTR ROT RET ... ROT ENDP

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

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]]>

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

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]]

Diretivas do Macro-Assembler DADOS SEGMENT PARA '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 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

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)

Arquitetura de Computadores Interrupções na Arquitetura x86 Hardware Internas Externas Mascarável Não-Mascarável Software Sistema Operacional Usuário

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.

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

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

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.

Diagrama em Blocos - PIC 8259

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.

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.

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

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.

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.

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.

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.

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.

Configuração em Cascata PIC 8259

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.

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.

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;

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.

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.

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.

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 A0 D7 D6 D5 D4 D3 D2 D1 D0

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 A0 D7 D6 D5 D4 D3 D2 D1 D0 1 = IR INPUT SLAVE 0 = NO IR INPUT SLAVE S7 1 S6 S5 S4 S3 S2 S1 S0 A0 D7 D6 D5 D4 D3 D2 D1 D0 SLAVE ID (000 - 111) 1 ID2 ID1 ID0 A0 D7 D6 D5 D4 D3 D2 D1 D0

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 A0 D7 D6 D5 D4 D3 D2 D1 D0 1 SFNM BUF M/S AEOI PM

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

Palavra de Controle de Operação - OCW1/2 INTERRUPT MASK 1 = MASK SET 0 = MASK RESET M7 1 M6 M5 M4 M3 M2 M0 A0 D7 D6 D5 D4 D3 D2 D1 D0 IR LEVEL TO BE ACTED UPON (000 - 111) A0 D7 D6 D5 D4 D3 D2 D1 D0 R SL EOI L2 L1 L0 0 0 1  NON-SPECIFIC EOI COMMAND 0 1 1  SPECIFIC EOI COMMAND 1 0 1  ROTATE ON NOM-SPECIFIC EOI COMMAND 1 0 0  ROTATE IN AUTO EOI MODE (SET) 0 0 0  ROTATE IN AUTO EOI MODE (CLEAR) 1 1 1  ROTATE ON SPECIFIC EOI COMMAND ** 1 1 0  SET PRIORITY COMMAND ** ** L0 - L2 ARE USED END OF INTERRUPT AUTO ROTATION SPECIFIC ROTATION

Palavra de Controle de Operação - OCW3 A0 D7 D6 D5 D4 D3 D2 D1 D0 ESMM SMM 1 P RR RIS 1 0  READ IRR ON NEXT RD PULSE 1 1  READ ISR ON NEXT RD 1 = POLL COMMAND 0 = NO POLL COMMAND 1 0  RESET SPECIAL MASK 1 1  SET SPECIAL MASK

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

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

Arquitetura de Computadores 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 .......... 12h 640×480 gr, 16 cores INT 10h - Vídeo Especificação do modo Chama-se com: AH = 0 AL = Modo

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

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 0-7 0-3 (placas SVGA) * Modos gráficos * - depende dos modos suportados por cada placa.

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

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

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)

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.

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.

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 = 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

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

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 - 128 b/s 01h - 256 b/s 02h - 512 b/s 03h - 1024 b/s

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

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

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

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

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

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.

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

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

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

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.

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

Arquitetura de Computadores Endereços da Porta Paralela Porta Reg de Dados Reg de Status Reg de Controle LPT1 378h 379h 37Ah LPT2 278h 279h 27Ah 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

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)

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

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

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

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; }

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;

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

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;

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

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