Download - Organização de Computadores
Organização de Computadores
Paulo Maciel
Arquitetura de Computadores
Introdu₤₧oResumo HistóricoComponentes computadorComponentes de um
processadorOpera₤ões de um
processador Sistema de Interconex₧o
Estruturas Estáticas e Dinâmicas
Barramentos Memória Interna
Memória SemicondutoraMemó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 OperacionalVis₧o Geral de um Sistema
OperacionalEscalonamentoGerenciamento de Memória
Unidade de ProcessamentoComponentes
Via de DadosUnidade de Controle
Aritm₫ticaControle HardwiredControle MicroprogramadoRISC versus CISC
Arquitetura de Computadores
SoftwareModos de endere₤amento
de dados e programaInstru₤õesIntrodu₤₧o à programa₤
₧o Interrup₤ões
Classifica₤₧oProcessamento de
Interrup₤ões Macroassembly Programando com Servi₤os
do Sistema Operacional
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
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
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» 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
Unidadede
ControleULA
Entrada Saída
Acumulador
Arquitetura de von Neumann
Camadas de um Sistema Computacional
Linguagens
Sistemas Operacionais
Máquinas
MáquinaMáquina
SOSO
Aplica₤õesAplica₤ões
1ª Gera₤₧o (1945-1955)
Máquinas
– UNIVAC
– IBM 7090
LinguagensLinguagens Código AbsolutoCódigo Absoluto
Fios e PaineisFios e Paineis
Nesta ₫poca os Nesta ₫poca os conceitos de linguagemconceitos de linguagemde programa₤₧o e dede programa₤₧o e desistemas operacioniassistemas operacioniasn₧o estavam clarosn₧o estavam claros
Um único grupo de Um único grupo de pessoas projetava, pessoas projetava, construia, programava, construia, programava, operava e efetuava operava e efetuava manuten₤₧o das máquinasmanuten₤₧o das máquinas
2ª Gera₤₧o (1955 - 1965)
Advento do Transistor– redu₤₧o de dimensões– redu₤₧o do consumo de
pot₨ncia– possibilita a constru₤₧o de
equipamentos mais complexos
TX-0» 1° Computador transistorizado
– MIT PDP-1
– Metade do desempenho do IBM 7090
– ~5% o valor do IBM 7090
– DEC IBM 1401 IBM 7094
2ª Gera₤₧o (1955 - 1965)
Sistema Operacional Batch
– Fortran Monitor System
– IBSYS
Distin₤₧o clara das atividades e grupos de pessoas na execu₤₧o de tarefas
Linguagens de Alto Nível Linguagens de Alto Nível
FORTRANFORTRAN
ALGOLALGOL
3ª Gera₤₧o (1965 - 1980)
Circuitos Integrados– redu₤₧o de dimensões– redu₤₧o do consumo de
pot₨ncia– possibilita a constru₤₧o de
equipamentos mais complexos– melhoria de desempenho
Microprocessadores
IBM System/360– Família de Computadores com
diferentes desempenhos, precos, mas compatíveis.
DEC PDP-11– Minicomputador de 16 bits.
Microprocessadores– INTEL
» 4004,8008,8080,8085,8086– ZILOG
» Z80– Motorola
» 68000
3ª Gera₤₧o (1965 - 1980)
Multiprograma₤₧o
Timesharing
Simula
Pascal
C
ML
Smalltalk
4ª Gera₤₧o (1980 - ?)
Very Large Scale Integration
Computadores Pessoais
Workstations
Computadores– Cray– SUN - 20– IBM SP2
Processadores
– Intel PENTIUM
– ALPHA Digital
– PowerPC
4ª Gera₤₧o (1980 - ?)
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
Seqü₨ncia de Fun₤ões Aritm₫tica
e Lógicas
Dados Resultados
Programa₤₧o em Hardware Fun₤ões Aritm₫tica
e Lógicas dePropósito Geral
Dados Resultados
Programa₤₧o em Software
Interpretadorde
Instru₤ões
Códigos deInstru₤ões
Controle
Arquitetura de Computadores
Diagrama em Bloco
I/O Paralelo I/O Serial Circuitos de Interrup₤₧o
Circuitos de Temporiza₤₧o CPU Memória
Sistema de Memória
Hierárquia– Interna
» Registradores
» Cache
» Memória Principal
– Externa» Disco Magn₫tico
» Fita
Desempenho × Custo
Princípio da Localidade
Memória de Massa
Memória Principal
Reg.
Processador Hipot₫tico
Reg. UsoGeral
Data buffer
Latch End.
A
Unidade de Controle
Reg. Inst
Dec. InstFlags
Reg. Aux.ALU
.......................
Barramento de Dados
Barramento de Endere₤osBarramento de Controle
•Desempenho•Espa₤o de endere₤amento
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
BuscaInst.
Cal. End.Prox. Inst.
Lê Operand.
Cal. End.Operand.
Exec.Operaç.
Cal. End.Operand.
Escrev.Operand.
Dec.Inst.
MúltiplosOperandos
Múltiplos Resultados
Retorna para string ou vetorInstrução Finalizada. BuscaNova Instrução
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
12
ii+1
m
Arquitetura de Computadores
Diagrama de Estado do Ciclo de Instrução com Interrupção
BuscaInst.
Cal. End.Prox. Inst.
L₨ Operand.
Cal. End.Operand.
Exec.Operaç.
Cal. End.Operand.
Escrev.Operand.
Dec.Inst.
MúltiplosOperandos
Múltiplos Resultados
Retorna para string ou vetorInstrução Finalizada. BuscaNova Instrução
Verif. sehá interrp.
Interrupção
Sem Interrup.
Arquitetura de Computadores
Programa do Usuário Serviço da Interrupção X
12
ii+1
jj+1
m
Serviço da Interrupção Y
Múltiplas Interrupções
Arquitetura de Computadores
Programa do Usuário Serviço da Interrupão X
12
ii+1
m
Serviço da Interrupção Y
Interrupções Aninhadas
Jj+1
Arquitetura de Computadores
I/O I/O
CPU Memória
Barramento
Dados
Endereço
Controle
•Desempenho•Espaço de endereçamento
Arquitetura de Computadores
Barramento
Linhas de Controle TípicasEscrita em memóriaLeitura de memóriaEscrita em I/OLeitura de I/OSolicitação de BarramentoReconhecimento da Solicitação do BarramentoSolicitação de InterrupçãoReconhecimento de InterrupçãoClockReset
Arquitetura de Computadores
Barramento Hierárquico
CPU Cache
Memória
Modem I/O Serial SCSI Network
ControladorLocoal de I/O
Interfacede Expansão
Barr. Local
Barr. do Sistema
Expansão do Bus
Arquitetura de Computadores
Elementos de Projeto de um Barramento Tipo
Multiplexado Dedicado
I/O Paralelo I/O Serial
CPU Memória
Vantagem•Menos linhas•Possível menor Custo
Desvantagem•Circuitos dosmódulos émais complexo•Desempenho
Arquitetura de Computadores
Elementos de Projeto de um Barramento Tipo
Multiplexado Dedicado
I/O Paralelo I/O Serial
CPU Memória
Vantagem•Menor contenção•Desempenho
Desvantagem•Mais linhas•Custo
Adaptador
Barr. de I/O
Adaptador
Barr. local
Arquitetura de Computadores
Elementos de Projeto de um Barramento Método de Arbitragem
CentralizadoDistribuído
P0LM0P1
LM1Árbitro
Req0 Req1
Gnt0 Gnt1
I/OSM
Arquitetura de Computadores
Elementos de Projeto de um Barramento Método de Arbitragem
CentralizadoDistribuído
P0LM0
I/OSM
P1LM1 P2LM2
Term.Barr.
Term.Barr.
BPI BPI BPIBPO BPO
BPOBusy
Arquitetura de Computadores
Elementos de Projeto de um Barramento Temporização
SíncronoAssíncrono
Válido
P/ CPU
mrq
rd
add
data
clk
Leitura de Memória
CPU Memória
Circuitos de Temporiza₤₧o
clk
mrq
rd
AD bus
Arquitetura de Computadores
Elementos de Projeto de um Barramento Temporização
SíncronoAssíncrono
Válido
P/ CPU
msyn
rd
add
data
Leitura de Memóriassyn
CPU Memória
msyn
ssyn
rd
AD bus
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
CPU
Ponte/Controlador de
Memória
Áudio
Dispositivos I/O
SCSI
Ponte paraExpansão
Barr. Local
Barramento PCI
Expansão do Bus
DRAM
Contolador deVídeo
Vídeo
Cache
Network
Arquitetura de Computadores
PCI - Peripherical Component InterconnectEstrutura
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 InterconnectComandos
Reconhecimento de InterrupçãoCiclo Especial - (Utilizado por um iniciador para enviar comando para mais de um destino ao memo tempo)Leitura e Escrita de I/OLeitura de Memória
LeituraLeitura de LinhaLeitura Múltipla
Escrita em MemóriaEscrita em Memória com InvalidaçãoLeitura de Configuração de DispositivoEscrita de Configuração de DispositivoCiclo de Endereçamento Dual - (Endereçamento de 64 bits)
Sistema de Memória
Hierárquia– Registradores
– Cache
– Memória Principal
– Disco Magnético
– CDROM
– Fita
• Memória Interna
• Memória Externa
• Memória Off-line
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
A0
An-1 Dm-1
D0CS
n mROM
Diagrama em Bloco
Vcc
Vcc
Vcc
D0 D1 D m-1
A0
An-1
CS
Estrutura Interna
Lógicade
Decod.
Sistema de Memória
Memória PROM
A0
An-1 Dm-1
D0CS
n mPROM
Diagrama em Bloco
Vcc
Vcc
Vcc
D0 D1 D m-1
A0
An-1
CS
Estrutura Interna
Lógicade
Decod.
Fusível
Sistema de Memória
Memória EPROM
A0
An-1 Dm-1
D0CS
n mEPROM
Diagrama em Bloco
OE/Vpp
Modo Entradas Saídas
CS OE/Vpp
Ler/ VL VL dados_saídaVerificarSaída VL VH Alta Imp.Desabilitada Standby VH X Alta Imp.
Programa VL VPP Dados_entrada
Sistema de Memória
Memória EEPROM
A0
An-1 Dm-1
D0CS
n mEEPROM
Diagrama em Bloco
A0
An-1OE
Modo Entradas Saídas
CS OE WE
Ler VL VL VH Dados_saída
Escreve VL VH VL Dados_ent.
Standby VH X X Alta imp. WE
Sistema de Memória
Memória RAM Estática
A0
An-1 Dm-1
D0CS
n mRAM
Diagrama em Bloco
A0
An-1RW
A0
An-1
CS
Lógicade
Decod.
Buffer de Saída
Buffer de Entrada
Registradores
R/WEnt_ Dados
Saída_Dados
Célula
Sistema de Memória
Memória RAM Estática
A0
An-1
A0
An-1
CS
Lógicade
Decod.
Buffer de Saída
Buffer de Entrada
Registradores
R/WEnt_ Dados
Saída_Dados
CélulaVdd
Q1 Q2
Q3 Q4
Célula
Sistema de Memória
Memória RAM Dinâmica
A0/Ak
Ak-1/An-1 Din
Dout
RAS
n 1RAM
Diagrama em Bloco
A0
An-1RW
A0
An-1
CS
Lógicade
Decod. Matrix
R/WEnt_ Dados
Saída_Dados
Célula
CAS
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],AXINC SILOOP 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
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
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
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
20 7 5 Endereço de 32 bits
Tag Linha
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
0
1
127
25 = 32 bytes
Número de Linhas27 = 128
Memória Cache Organização
Completamente Associativa
– Vantagem
Flexibilidade
– Desvantagem
Complexidade do Hardware
27 5 Endereço de 32 bits
Tag Linha
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
0
1
127
25 = 32 bytes
Memória Cache Organização
Associativa por Conjunto (Set Associative)
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
0
1
63
25 = 32 bytes
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
25 = 32 bytes
21 6 5 Endereço de 32 bits
Tag Linha
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
Barramento
Icache
Dcache
X=7
X=30X=10
P1
P2
p3
p4
Icache
Dcache
Icache
Dcache
Icache
Dcache Memória
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
Sistema de Interconex₧o
P1 P2 Pn
I/O SM1 SMm
MemóriaCompartilhada•Fortemente Acoplados
•Aplica₤ões Gerais Time-sharing
Multiprocessadores - NUMA
GSM
Rede de Interconex₧o Global
Modelo Cedar - University Illinios
GSM GSM
P CSM
P
P
P CSM CSM
CSM
C1 C2
Multiprocessadores - COMA
P
Rede de Interconex₧o Global
P P
Cache Cache Cache
•DDM - Swedish Institute of Computer Science
Multicomputadores
M P
M P
M P
M P
Redede
Inter-conex₧o
•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)
•
Memória Externa
• Disco Magnético
Setor Trilha
Gap
Superficies
Cabeças de Leitura/Gravação
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
VelocidadeAngular Constante
VelocidadeLinear Constante
•DesvantagemCapacidade dossetores externos ficalimitada a do mais interno
VantagemSimplicidade noendereçamento desetores
VantagemMaior capacidadede armazenamento
DesvantagemSistema de endereçamentomais complexo
* CD-ROM
Memória Externa
• CD-ROM
r=32,55m
•Espaçamento entretrilhas (eet)= 1.6 m
#trilhas = r/eet =20344 (aparentes)
•De fato, tem-se uma espiral!•Comprimento da espiral = 5,27Km•VLC = 1,2 m/sTempo para percorrer o disco = 4391s = 73,2 min•Densidade de Armazenamento = 176,4 Kbytes/s Capacidade = 774,57 Mbytes
Memória Externa
• CD-ROM
– Organização dos Dados• Superfícies
• Trilhas (separadas por gaps)
• Blocos
– Formato do Bloco
Sync Id Dados M2=dados, M1=ECC
00 FF×1000 End M 2048 bytes 288 bytesou ECC
Modos
•M0 - campo de dados em branco
•M1 - 2048 bytes + ECC•M2 - 2336 sem ECC
Memória Externa
• WORM (Write Once Read Many)– Tecnologia
• Disco feito de resina• Coberto por alumínio reflexivo• Pré-formatação feita através de raios lazer que cria uma
série de “bolhas”• Gravação feita por um sistema lazer (não tão poderoso)
que rompe as “bolhas”• Leitura feita através da relexão de raios lazer sobre a
superfície
– Layout - VAC
– Capacidade característica = 650 Mbytes
Memória Externa
• Erasable Optical Disk– Tecnologia
• Disco feito de resina• Coberto por um material cuja reflexibilidade pode ser Alta, Baixa ou
indeterminada.• A gravação é feita através de raio lazer que altera o estado
de reflexivo do material• Leitura feita através da relexão de raios lazer sobre a
superfície
– Layout - VAC
– Capacidade Característica : 650 Mbytes
Memória Externa
• Fita Magnética– Tecnologia
• Material recoberto por oxido magnético.
– Organização dos dados
Gap
Registro
Trilhas
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
Módulo I/O
Disp. Externo
Bus de end.Bus de dados
Bus de controle
status e controle
dados
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
Lógicade
ControleTransdutor
Buffer
Dados de/para o ambiente
Dados de/para o módulo I/OStatus para módulo I/OControle do módulo I/O
Entrada/Saída
• Modelo Genérico do Módulo I/O
Reg. de dados
Regs. Status e de Controle
Lógicade I/O
InterfacecomDisp.
Externos
InterfacecomDisp.
Externos
Dados
Endereço
Controle
Dados
Controle
Status
Dados
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
Envia Comando de Leitura
para Módulo I/OLê status doMódulo I/O
Lê palavra doMódulo I/O
Escreve palavra na Memória
Ver.status
Feito ?
Não estápronto
Condição de erro
pronto
não
sim
Próxima Instrução
Entrada/Saída
• Técnicas para Controle de I/O – Baseado em Interrupção
Envia Comando de Leitura
para Módulo I/OLê status doMódulo I/O
Lê palavra doMódulo I/O
Escreve palavra na Memória
Ver.status
Feito ?
Condição de erro
pronto
não
sim
Próxima Instrução
Vai fazer qualquer coisa
Interrupção
Entrada/Saída
PUSH FLAGSPUSH IPFETCH ISR ADDRESS
POP IPPOP FLAGS
INTERRUPTSERVICE
PROCEDURE
Restaura EstadoRetorno
•Técnicas para Controle de I/O - Baseado em Interrupção Hardware Software
Controlador ou Periférico solicita
Interrupção
Processador Finaliza
Execução de Instrução Corrente
Processador Reconhece Interrupção
Salva Estado
Processa Interrupção
Processamento da Interrupção
Entrada/Saída
• Técnicas para Controle de I/O – Baseado em DMA
Quantidadede Dados
Reg. deDados
Reg. de Endereço
Lógicade
Controle
DMA_Req
DMA_AckInt_req
Rd
Wr
Bus de Dados
Bus de Endereço
Diagrama Genéricodo Controlador de DMA
Entrada/Saída
• Técnicas para Controle de I/O – Baseado em DMA
Escreve na Memória ou
no Dispositivo
Feito ?não
sim
Próxima Instrução
Solicitação de DMA
Vai fazer qualquer coisa
Suspensão
Reconhecimentoda solicitação DMA
Retira Solicitação de DMA
Processador
Controlador DMAEnviaSolicitação de DMA
AguardaReconh.
Solicitação de DMA
Envia Reconh. DMA
Envia Comando de Leitura/Escrita
DMApara Módulo I/O
Lê dados do Dispositivo ou
da Memória
Arquitetura de Computadores
Arquiteturas RISC X CISC
– Complex Instruction Set Computer
– Reduced Instruction Set Computer
» RISC : SPARC
» CISC : Intel 386
Arquitetura de Computadores
Problemas CISC– Desempenho
– ROM interna aumenta as dimensões da pastilha
– Mau uso, pelos programadores, das instruções e modos de endereçamento disponíveis
Caracteristicas CISC– Instruções complexas
– Modos de endereçamento complexos
– Controle implementado por ROM
– Micro-instruções
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
MEMÓRIA DE MICROPROGRAMA
CONTADOR DE MICROPROGRAMA
LÓGICA DE SELEÇÃO DE ENDEREÇO
REGISTRADOR DE INSTRUÇÃO
VIA DE DADOS
PC
MEMÓRIA
+1
CONTROLE
STATUS
UNIDADE DE CONTROLE
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
STATE REGISTER
INSTRUCTION REG.
REGISTER
FILE
MEMORY
CONTROL
STATUS
CONTROL UNIT
INSTR.
CACHE
DATA
CACHE
ALU
DATAPATH
Arquitetura de Computadores Petium
8086– 16 bits
– Espaço de endereçamento : 1 Mb
– Endereço da primeira instrução executada: FFFF0H
286– 16 bits
– Espaço de endereçamento : 16 Mb (24 bits)
– Memória Virtual
386– 32 bits
– Espaço de endereçamento : 32 bits
– Registradores de 32 bits
486– Cache interna de 8K
– Co-processador 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– 1 Mbyte
Modo Protegido– 4 Gbytes– Multitarefa– Memória Virtual– Gerenciamento e Proteção de Memória
Modo Virtual Modo de Gerenciamento
Modelo de Software
EAX
EBX
ECX
EDX
EBP
ESI
EDI
AX
BX
CX
DX
BP
SI
DI
AL
BL
CL
DL
AH
BH
CH
DH
IP
SP
Flags
EIP
ESP
EFlags
CS
DS
SS
ES
FS
GS
Registradores de SegmentoRegistradores de Uso Geral
Acumulador
Base
Contador
Dados
Base de Pilha
Índice Fonte
Índice Dest.
Apont. Inst.
Apont.Topo de Pilha
Flags
Codigo
Dados
Pilha
Extras
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.
DadoBX,SI,DI Ender.
Modos de Endereçamento de Dados
Indexado
– Ex.: mov ch,[bx]
Op_Code Regist. de Índice
SI,DI
Desl.
Desl.
DadoEnder.
Modos de Endereçamento de Dados
Base
– Ex.: mov ch,[bx+02]
Op_Code Regist. de Base
BX,BP
Desl.
Desl.
DadoEnder.
Modos de Endereçamento de Dados
Base Indexado
– Ex.: mov ch,[bx+si]
Op_Code Regist. de Base
BX,BP
Regist. de Índice
DadoEnder.
Regist. de Índice
Modos de Endereçamento de Dados
Base Indexado com Deslocamento
– Ex.: mov ch,[bx+si+03]
Op_Code Regist. de Base
BX,BP
Regist. de Índice
DadoEnder.
Regist. de Índice Desl.
Desl.
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 bitsReg. de Seg.
Reg. de Base
Reg. de Índice
Fator de Escala
Deslocamento
Endereço
*
CS,DS,ES,FS,GS,SS
EAX,EBX,ECX,EDX,EBP,ESI,EDI,ESP
EAX,EBX,ECX,EDX,EBP,ESI,EDI
{1,2,4,8}
Nada, 8 bits, 32 bits
Ex.: MOV EAX,[EBX],[ECX*4+6]
Arquitetura do Pentium
Bus Unit
Page Unit
8kbinstruction
cache
TLB
Branchtargetbuffer
P b I dr u n ee f s cf f t oe e r dt r u ec t.h
Control ROM
C o
n u t nr io tl
8kbdata
cache
TLB
Floatingpoint registers
256
Data bus - 64 bitsAdd. Bus 32 bits
Control bus
Add. Data
32Address bus - 32 bits
Data bus - 64 bits
Add.generateV pipe
Add.generateU pipe
Integerregisterfile
ALUV pipe
ALUU pipe
Shifter
Instruction pointer
Branch target address
32
Floatingpoint unit
Prefetchaddress
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
256 bits
P b I dr u n ee f s cf f t oe e r dt r u ec t.h
Prefet.Buffer
V64 bytes
Prefet.Buffer
U64 bytes
256 bits
Decod.D1V
Decod.D1U
Decod.D2V
Decod.D2U
Arquitetura do Pentium
Decod.D1V
Decod.D1U
Ger.End.
V
Ger.End.
U
Para o BTB
Para o BTB
Decod.D2V
Decod.D2U
Arquitetura do Pentium
Decod.D1V
Decod.D1U
Unidade de Microcódigo
ALUV
ALUU
REG
Decod.D2V
Decod.D2U
Arquitetura do Pentium
Decod.D1V
Decod.D1U
Unidade de Microcódigo
Conrole
ADD DIV MUL
FPU
Reg. File
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-EscalarCiclos 1 2 3 4 5
de clockI1 I2 I3 I4 I5 I6 I7 I8 I9 I10
I1 I2 I3 I4 I5 I6 I7 I8
I1 I2 I3 I4 I5 I6
I1 I2 I3 I4
I1 I2
PF
D1
D2
EX
WB
Previsão Dinâmica de Desvio
8kbinstruction
cache
TLB
Branchtargetbuffer
P b I dr u n ee f s cf f t oe e r dt r u ec t.h
256
Instruction pointer
Branch target address
Prefetchaddress
H:11P:T
H:10P:T
H:00P:NT
H:01P:T
NT
T
NTT
NT
T
NT
T
Address Instruction Targ. Add. History Prediction
. . .
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
Usada para decidir quando e quais informações buscar na CACHE
– Demanda
– Pré-busca
Memória Cache
Política de Busca
Usada para decidir quando e quais informações buscar na CACHE
– Demanda
» Busca uma linha i quando esta se faz necessário
– Pré-busca» Busca a linha i+1
quando a linha i for referida
Memória Cache
Política de Escrita
O momento em que uma palavra deve ser alterada na memória principal, após uma escrita, depende da política de escrita.
– Writethrough» Garante consistência dos
dados
» Aumenta o tráfego no barramento
– Writeback» Reduz o tráfego no
barramento
» Necessita de mecanismos para manutenção de concist₨ncia
Memória Cache
Política de Substituição
Define como uma linha da memória CACHE deve ser substituída.
– RAND - Aleatório
– FIFO - First in First Out
– LRU - Least Recently Used
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
20 7 5 Endereço de 32 bits
Tag Linha
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
0
1
127
25 = 32 bytes
Número de Linhas27 = 128
Memória Cache Organização
Completamente Associativa
– Vantagem
Flexibilidade
– Desvantagem
Complexidade do Hardware
27 5 Endere₤o de 32 bits
Tag Linha
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
0
1
127
25 = 32 bytes
Memória Cache Organização
Associativa por Conjunto (Set Associative)
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
0
1
63
25 = 32 bytes
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
25 = 32 bytes
21 6 5 Endereço de 32 bits
Tag Linha
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
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
Set 0
Set 1
Set 127
25 = 32 bytes
TAG
TAG
TAG
Dado
Dado
Dado
.
.
.
.
.
.
25 = 32 bytes
Arquitetura do Pentium
Bus Unit
Page Unit
8kbinstruction
cache
TLB
Branchtargetbuffer
P b I dr u n ee f s cf f t oe e r dt r u ec t.h
Control ROM
C o
n u t nr io tl
8kbdata
cache
TLB
Floatingpoint registers
256
Data bus - 64 bitsAdd. Bus 32 bits
Control bus
Add. Data
32Address bus - 32 bits
Data bus - 64 bits
Add.generateV pipe
Add.generateU pipe
Integerregisterfile
ALUV pipe
ALUU pipe
Shifter
Instruction pointer
Branch target address
32
Floatingpoint unit
Prefetchaddress
Memória Cache Translation Lookaside Buffer
16 4 12 Endereço Linear
Tag Linha
Endereço linear
Endereço Físico para Cache
TLB T
T
T
EndEnd
End
.
.
.
.
.
.
0
1
T
T
T
End
End
End
.
.
.
.
.
.
T
T
T
EndEnd
End
.
.
.
.
.
.
0
1
15
T
T
T
End
End
End
.
.
.
.
.
.
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
Barramento
Icache
Icache
Icache
Icache
Dcache
Dcache
Dcache
Dcache
X=7
X=30X=10
P1
P2
p3
p4
Dimensões das Caches
Pentium– Um nível de cache interno.– Cache de dados : 8kb– Cache de instruções: 8kb
Pentium MMX– Um nível de cache interno– Cache de dados: 16kb– Cache de Instruções: 16kb
Pentium Pro– Dois níveis de cache internos.– Cache dados nível 1: 8kb– Cache de instrução nível 1:
8kb– Cache nível 2: 256kb, 512kb,
1MB
Dimensões das Caches
Petium II– Dois níveis de cache internos.– Cache de dados nível 1: 16kb– Cache de instrução nível 1:
16kb– Cache nível 2: 512kb
Petium III– Dois níveis de cache internos.– Cache de dados nível 1: 16kb– Cache de instrução nível 1:
16kb– Cache nível 2: 512kb
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
PF D1 D2 EX
X1X2WFER
Bypass
Fluxo deinstruçõese de dados
Pipeline U
Fluxo dedados
ST(0)ST(1)ST(2)ST(3)ST(4)ST(5)ST(6)ST(7)
Registradoresde
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
Clk
ADS
Address
W/R
BRDY
Data
Válido Válido
P/ CPU da CPU
t1 t2 ti t1 t2 ti
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
CACHEKEN
Data
Válido
t1 t2 t2 t2 t2 ti
P/ CPU P/CPUP/ CPU P/ CPU
Operações Locked e BOFF
Lock– Operacões atômicas não podem
ser quebradas em operações menores
– Semáforos– Requerem leitura seguida de
escrita– XCHG– LOCK é ativado indicando que
o ciclo no ciclo corrente o barramento está bloqueado e não pode ser interrompido
BOFF– Este sinal de entrada prover
uma forma para que em sistemas multiprocessados um Pentium possa “tomar conta” do barramento.
– Este terminal(BOFF) ₫ verificado a cada ciclo de clock. Caso o seu valor seja baixo, o barramento ₫ colocado em alta impedância.
Operações Bus Hold e Reconhecimento de Interrupção
Bus Hold– Uma segunda forma para
que o processador “tome conta”do barramento.
– A entrada HOLDé verificada a cada ciclo de clock, caso seja alto, no final do ciclo de barramento, o barramento é colocado em alta impedância.
– A saída HLDA é ativada para indicar que o Pentium está neste estado.
Reconhecimento de Interrupção.– Dois destes ciclos são
gerados em reconhecimento a solicitação de interrupção (INTR).
– M/IO=D/C=W/R =0– CACHE = 1
Reconhecimento de Interrupção
‘148 ‘374
D Qclk
Pentium
vcc
.
.
.
.
.
.
vcc
clr
D0
D7
M/IOD/CW/RADS
INTR
INT0
INT7
A2A1A0
GS
EI
Cache Flush e Shutdown
Cache Flush– Como resposta a uma entrda
ativa no terminal FLUSH o Pentium executa o writeback nas linhas modificadas e as torna inválidas
– BE1 =0
– Quando o writeback é executado o processador executa um cache ack. para informar que na cache foi realizado um flush.
– BE4 =0
Shutdown– Se o processador
detecta um erro de paridade um ciclo shutdown é gerado.
– A execução é suspensa até o processador que ocorrar um NMI, INIT ou RESET
– Cache internas permancem inalteradas
– BE0=0
Halt e Inquire Cycles
Halt
– Ciclo realizado quando da execução de uma instrução HLT
– Similar ao shutdown exceto que a execução só será retomada pelo sinal INTR
– BE2 = 0
Inquire Cycle– Usado para manter a
coerência de cache
– Ao detectar-se (no snooping cycle) um acesso, por outro processador, a uma posição de memória, o processador gera um inquire interno para verificar se esta posição esta na cache interna. Caso esteja, a cache pode ser modificada.
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 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
Instruções
– MOV movimenta₤₧o– MOVSX ext. sinal– MOVZX ext. c/ zero– PUSH empilhamento– PUSHW/PUSHD imedit./ 32 bits– PUSHA/PUSHAD todos reg/ 32 bits– PUSHF/PUSHFD 16 bits flags/32
bits
– POP desemp.– POPA/POPAD todos reg/32 bits – POPF/POPFD 16 bits flags/32 bits – IN input– OUT output– XCHG permuta– XLAT translate-table– LEA carga de end. efetivo– LDS e similares carga de ponteiro– BSWAP troca– LAHF carga de flags em AH– SAHF arm. de AH nos flags
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
20 20 30
AL BL CL
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
Bloqueia o barramento
EX.: LOCK XCHG
Sintaxe:
NOP - No operation
N₧o executa nada.
Strings
Sintaxe:
REP - Instru₤₧o prefixo
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
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
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 - moveMove 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,5HCLD
MOV AL,4EHREP MOVSB
Strings
Sintaxe:
CMPS/ CMPSB/ CMPSW/ CMPSD - comparaCompara 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,5HCLD
MOV AL,4EHREPE CMPSB
Strings
Sintaxe:
SCAS/ SCASB/ SCASW/ SCASD - scanCompara 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 - carregaCarrega 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 - armazenaArmazena 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
MACRO -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?
– É 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 FLAGSCLEAR IFCLEAR TFPUSH CSPUSH IPFETCH ISR ADDRESS
POP IPPOP CSPOP FLAGS
INTERRUPTSERVICE
PROCEDURE
PUSH REGISTERS
POP REGISTERSIRET
Vetores de InterrupçãoProcessadores da Família 8086
INT (Hex) IRQ COMMON USES00 - 01 Exeption Handlers -
02 Non-Maskable IRQ Non-Maskable IRQ (Parity Errors)03 - 07 Exeption Handlers -
08 Hardware IRQ0 System Timer09 Hardware IRQ1 Keyboard0A Hardware IRQ2 Redirected0B Hardware IRQ3 Serial Comms. COM2/COM40C Hardware IRQ4 Serial Comms. COM1/COM30D Hardware IRQ5 Reserved / Sound Card0E Hardware IRQ6 Floppy Disk Controller0F Hardware IRQ7 Parallel Comms.
10 - 6F Software Interrups -70 Hardware IRQ8 Real Time Clock71 Hardware IRQ9 Redirected IRQ272 Hardware IRQ10 Reserved73 Hardware IRQ11 Reserved74 Hardware IRQ12 PS/2 Mouse75 Hardware IRQ13 Math's Co-Processor76 Hardware IRQ14 Hard Disk Drive77 Hardware IRQ15 Reserved
78-FF Software Interrups -
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çõesPROGRAMAPRINCIPAL
INICIALIZA 8259AIR2, IR4 UNMASK
STI
ROTINAIR4STI ROTINA
IR2STI
EOIRETI
EOIRETI
PROGRAMAPRINCIPAL
INICIALIZA 8259AIR2, IR4 UNMASK
STIROTINA IR4
ROTINA IR2
EOIRETI
EOIRETI
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.
Control Logic:– INT: envia o pedido de interrupção para a
entrada INTR do processador;– INTA: recebe dois pulsos de
reconhecimento de interrupção vindos da saída INTA do processador. O primeiro pulso é utilizado no modo cascata e o segundo pulso solicita o byte que indica que tipo de interrupção foi requisitada ao processador.
Diagrama em Blocos - PIC 8259
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.
– É enviado um segundo pulso no pino INTA para o PIC, durante o qual é enviado, pelo bus de dados, o número do tipo de interrupção solicitada;
– A CPU determina o endereço associado à ISR (rotina de serviço de interrupção), buscando e executando esta ISR;
– Caso esteja configurado o modo automático de fim de interrupção (AEOI) o bit ISR correspondente será resetado ao final do segundo pulso INTA, caso contrário este bit será resetado pelo comando EOI presente na rotina de interrupção.
Etapas de uma Interrupção
Configuração em CascataPIC 8259
Configuração em CascataPIC 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
A70 A6 A5 1 LTIM ADI SNGL IC4
A7 - A5 OF INTERRUPTVECTOR ADDRESS(MCS-80/85 MODE ONLY )
1 = ICW4 NEEDEDO = NO ICW4 NEEDED
1 = SINGLEO = CASCADE MODE
CALL ADDRESS INTERVAL1 = INTERVAL OF 4O = INTERVAL OF 8
1 = LEVEL TRIGGERED MODE0 = EDGE TRIGGERED MODE
A0 D7 D6 D5 D4 D3 D2 D1 D0
Palavra de Controle de Inicialização - ICW2/3
ICW2
ICW3 (MESTRE)
ICW3 (ESCRAVO)
T7 - T3 OF INTERRUPTVECTOR ADDRESS(8086 / 8088 MODE)
T71 T6 T5 T4 T3 A10 A9 A8
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 = IR INPUT SLAVE0 = NO IR INPUT SLAVE
S71 S6 S5 S4 S3 S2 S1 S0
A0 D7 D6 D5 D4 D3 D2 D1 D0
SLAVE ID (000 - 111)
01 0 0 0 0 ID2 ID1 ID0
A0 D7 D6 D5 D4 D3 D2 D1 D0
Palavra de Controle de Inicialização - ICW4
1 = 8086/8086 MODEO = MCS-80/85 MODE
1 = AUTO EOIO = NORMAL EOI
0 X NON BUFFERED MODE 1 0 BUFFERED MODE / SLAVE 1 1 BUFFERED MODE / MASTER
1 = SPECIAL FULLY NESTED MODE0 = NOT SPECIAL FULLY NESTED MODE
A0 D7 D6 D5 D4 D3 D2 D1 D0
01 0 0 SFNM BUF M/S AEOI PM
Diagrama de Fluxo da Inicialização do PIC 8259
ICW1
ICW2
IN CASCADE MODEICW3
ICW4
READY TO ACCEPT INTERRUPT REQUESTS
IS ICW4 NEEDED
YES (SNGL=0)
YES (IC4=1)
NO (SNGL=1)
NO (IC4=0)
Palavra de Controle deOperação - OCW1/2
OCW1
OCW2INTERRUPT MASK1 = MASK SET0 = MASK RESET
M71 M6 M5 M4 M3 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
R0 SL EOI 0 0 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 deOperação - OCW3
A0 D7 D6 D5 D4 D3 D2 D1 D0
00 ESMM SMM 0 1 P RR RIS
1 0 READ IRR ON NEXT RD PULSE
1 1 READ ISR ON NEXT RD PULSE
1 = POLL COMMAND0 = NO POLL COMMAND
1 0 RESET SPECIAL MASK 1 1 SET SPECIAL MASK
Programa de Inicializaçãodo 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
– INT 10h - Vídeo
» Especificação do modo
• Chama-se com:
AH = 0
AL = Modo
Modo Resolução Caract.
0h 40×25 tx, preto/branco
1h 40×25 tx, 16 cores
2h 80×25 tx, preto/branco
3h 80×25 tx, 16 cores
4h 320×200 gr, 4 cores
5h 320×200 gr, preto/branco
6h 640×200 gr, 2 cores
..........
12h 640×480 gr, 16 cores
..........
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
caracterCX = 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/05hAL= número de setores
CH= número do cilindroCL= número do setor
(1, se AH=5)DH= número da cabeçaDL= número da unidadeES: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
• Recebe-se em AH = código ASCII estendido
AL = 00h
» Verifica se um caracter está pronto
• Chama-se com: AH = 11h
Se um caractere ASCII foi
digitado ZF=0 e AH = código de varredura
AL = código ASCII
Caso contrário, ZF=1
Obs.: Não remove do buffer
Arquitetura de Computadores
– INT 16h - Teclado» Obtêm status do teclado
• Chama-se com: AH = 12h
• Recebe-se emAL = status
01h - shift direito ativo02h - shift esquerdo ativo04h - crtl ativo08h - alt ativo10h - num lock ativo20h - scroll lock ativo40h - caps lock ativo80h - 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
• Chama-se com: AH = 01h DX = número da impressora
» Obtêm status da impressora• Chama-se com:
AH = 02h DX = número da impressora
• Recebe-se em
AH = status01h - 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• Chama-se com: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
• Chama-se com:AH = 05h
CH = século (19 ou 20) em BCD
CL = ano em BCD DH = mês em BCD
DL = dia em BCD
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 PoralelaHoje 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 37AhLPT2 278h 279h 27Ah
D7D6D5D4D3D2D1D0
Busy (LI)
#AckPESELECT#ERROR#IRQReservadoReservado
Reservado (Todos são LI)
ReservadoDireção (não conctado)
IRQ ENABLE (não conctado)
# SELECT INPUTINIT#AUTOFEED#STROBE
Lógica Invertida:escrevendo-se 0, tem-se 1 na saída
23456789
1110121315 17
1614 1
Arquitetura de Computadores
– Teste de Presença de Porta
MOV AH,3MOV 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
D0 2
BUSY 11
(378h)
(379H)
330
10K
+5V
+5V
Arquitetura de Computadores
– Controle sobre a Porta Paralela .................. MOV AL,01h ;apaga LED
MOV DX,378h OUT DX,ALT: MOV DX,379h IN AL,DX ; lê reg de status
TEST AL,80h ; e verifica se tecla foi
JNZ T1 ; pressionada
MOV AL,00h ; se foi, acende-se o LED
OUT DX,AL CALL DELAY
T1:MOV AL,01h; apaga-se o LED
OUT DX,AL MOV AH,01h ; verifica-se
INT 16h; se uma tecla foi pres-
JNZ T2; sionada
JMP TT2: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,0x378asm mov al,0xf0asm mov ah,alasm out dx,alasm xor al,alasm mov dx,0x378
asm in al,dx
asm xor al,ah
asm jnz t
printf("LPT1 presente!\n");
t:
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;
.MODEL SMALL
.CODEPUBLIC xplusyxplus PROC NEARPUSH BPMOV BP,SPSUB SP,02MOV AX,[BP+04]ADD AX,[BP+06]MOV [BP-02],AXMOV SP,BPPOP BPRETxplusy ENDP
END
C com Assembly
.MODEL SMALL
.CODEPUBLIC xplusyxplus PROC NEARPUSH BPMOV BP,SPSUB SP,02MOV AX,[BP+04]ADD AX,[BP+06]MOV [BP-02],AXMOV SP,BPPOP BPRETxplusy ENDP
END
.
1004 12 z1006 valor de BP1008 endereço de retorno100A 5 a100C 7 b
Topo da Pilha do Main
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;
.MODEL SMALL,C
.CODE
PUBLIC xplusy
xplus PROC NEAR C, x:word,
y:word
LOCAL z:word
MOV AX,x
ADD AX,y
MOV z,AX
RET
xplusy ENDP
END
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 BPMOV BP,SPSUB SP,02MOV AX,[BP+04]ADD AX,[BP+06]MOV [BP-02],AXMOV SP,BPPOP BPRET
C com Assembly
• bcc -S nome.asm nome.c
- converte arquivo C em assembly
• bc - BorlandC
• tasm - TurboAssembler
• td - TurboDebugger