39
Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Embed Size (px)

Citation preview

Page 1: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Arquitetura dos Microprocessadores 8086 e 8088

Sistemas Embarcados

Page 2: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

IntroduçãoMicroprocessadores Intel

Linha X86Linha Pentium

Primeira Geração

Segunda Geração

Terceira Geração

Quarta Geração

Quinta Geração

8086 8088 80186 80286 80386 80486 PentiumAno Surgimento 1978 1979 1982 1982 1985 1989 1993Nº bits barramento 16 8 16 16 32 32 32/64Nº transistores 2900029000 100000 134000 375000 1200000 3100000

Vel. MHz4,77 a

104,77 a

10 8 a 16 8 a 12,5 16 a 40 25, 33 e 50 60, 66 e 90Co-Processador 8087 8087 8087 80287 80387 80487 Interno

Page 3: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Introdução

Vamos concentrar nossos estudos no 8086/8088!

Por que?

Motivos históricos: o primeiro PC (o IBM PC) possuía um 8088 embarcado

Todo software produzido para a família 80X86 mantém compatibilidade com os microprocessadores futuros

Page 4: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Arquitetura do 8086/8088

Arquitetura Von Neumann (CISC): dados e endereço no mesmo barramento 20 bits de endereço => 1Mbyte 16 bits de dados do barramento comum (8086) 8/16 bits de dados do barramento comum (8088) Barramento de controle: 16 bits independentes do barramento comum

8086 e 8088 possuem arquiteturas internas semelhantes, com interfaces com o barramento diferentes!

Page 5: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Pinagem do 8086/8088

Page 6: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Diagrama Funcional do 8086/8088

EU obtém instruções de uma fila gerenciada pela BIU

Quando uma instrução requer acesso à memória ou a um dispositivo periférico, então a EU solicita à BIU uma leitura/escrita de dados.

Page 7: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Unidade de Execução do 8086/8088

Contém uma ALU para realização de operações aritméticas (+,-,* e /) e lógicas (AND, OR, NOT e XOR)

Contém registradores endereçados por nome para armazenamento temporário durante operações

A ALU pode realizar operações de 8 ou 16 bits

Page 8: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Unidade de Controle do 8086/8088

Controla a comunicação de dados entre a Unidade de Execução e os dispositivos periféricos (memória e E/S)

Controla a transmissão de sinais de endereço, de dados e de controle

Controla a sequência de busca e execução de instruções

Mecanismo de pre-fetch: busca até 6 instruções futuras, deixando-as na fila de instruções => Aumento de velocidade

Page 9: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Modos Máximo e Mínimo do 8086/8088

Modo Mínimo O processador gera todos os sinais de controle do barramento Não permite o uso de coprocessador

Modo Máximo Alguns sinais de controle do barramento são gerados pelo 8286/8288 Permite o uso do coprocessador 8087

Page 10: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

O 8086/8088 no Modo Mínimo

Page 11: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

O 8086/8088 no Modo Máximo

Page 12: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Operação de Barramento

Um esquema de multiplexação permite a utilização de um único barramento físico hora para endereçamento e hora para transmissão/recepção de dados (arquitetura Von Newman)

Vantagem: uso eficiente do hardware disponível (minimização do hardware necessário)

Desvantagem: lentidão no processo de transmissão/recepção de dados

Page 13: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Temporização no Modo Mínimo

Page 14: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Temporização no Modo Máximo

Page 15: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Conjunto de RegistradoresDe Uso Geral

Uso Preferencial

Usados em operações aritméticas de 8 ou 16 bits

Usados em operações aritméticas e para acessar variáveis de memória.

Page 16: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Conjunto de RegistradoresDe Uso Específico

Usados para particionamento de memória

Permite que a CPU possa acessar até 4 seguimentos distintos ao mesmo tempo

Cada segmento lógico possui 64kB

Page 17: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Onde são usados?Algumas instruções usam certos registros implicitamente.

MUL CX => AX*CX->resultado em DX:AX

DIV CX => DX:AX/CX->resultado: quociente em AL e resto em AX

IN AX,0C8hIN AX,DXOUT 0C8h,AXOUT DX,AX

Page 18: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Segmentação da Memória

As Famílias 8086/8088 e 80186/80188 possuem um espaço de memória de 1MB (de 00000h a FFFFFh) Um segmento (unidade lógica de memória) pode ter no máximo 64kB (de 0000h a FFFFh)

Page 19: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Segmentação da MemóriaOs segmentos podem ser adjacentes, disjuntos, parcialmente sobrepostos ou completamente sobrepostos Uma memória física pode ser mapeada em um ou mais segmentos lógicos

Page 20: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Segmentação da Memória

Veremos em laboratório como podemos fazer o papel do sistema operacional e assim obter controle sobre os segmentos, alterando o valor dos registradores de segmento (DS, CS, SS e ES)

Page 21: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Segmentação da Memória

Page 22: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Segmentação da Memória

O Seletor e o Descritor de segmento são controlados pelo sistema operacional O Offset é controlado pelo programa de aplicação

Normalmente o Descritor de segmento possui alguns bits associados para determinação de características de proteção do segmento, isto é, permissões para leitura, escrita e/ou execução

Um Cache de Descritor de segmento evita dois acessos simultâneos à memória

Page 23: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Geração do Endereço Físico

Operação Realizada pela BIU

Um eventual carry gerado pela adição é ignorado!

O endereço físico é um valor de 20 bits que identifica a localização de um byte na memória.

Page 24: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Endereço Físico versus Endereço Lógico

Page 25: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Endereço Lógico• O endereço lógico de memória pode vir de diferentes fontes, dependendo do tipo de referência que está sendo feito. • A BIU (Unidade de Interface de Barramento) é quem determina a fonte do endereço lógico com base no tipo de referência de memória .• Entretanto, o programador é capaz de direcionar a BIU para usar um segmento endereçável qualquer. Exemplo: MOV ax,1000h MOV ds,ax

Page 26: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Endereço Lógico• As instruções são sempre buscadas no segmento de código corrente• O registrador CS possui a base do segmento, enquanto que o registrador IP possui o offset, formando, assim, o endereço lógico de uma instrução

• Instruções de pilha sempre operam no segmento de pilha corrente• O registrador SS possui a base do segmento, enquanto que o registrador SP possui o offset que leva ao topo da pilha. Entretanto, o endereço lógico de uma instrução envolvendo a pilha usa o registrador BP para apontar a base da pilha.

Page 27: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Implementação de Pilha• Um sistema pode possuir múltiplas pilhas, só uma é diretamente endereçável por vez através dos registradores SS e SP• Uma pilha pode ter até 64kB, sendo que SS determina a base e SP o topo• O ponto de origem da pilha é o topo (não a base)• As pilhas armazenam palavras de 16 bits• Portanto, para armazenar um elemento na pilha, deve-se decrementar SP de 2 (2 bytes), e então escrever a palavra em SP• Ao ler um elemento da pilha, deve-se incrementar SP de 2• A pilha cresce em direção à sua base• Operações de pilha nunca movem ou apagam os elementos armazenados

Page 28: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Implementação de Pilha

Page 29: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Memória Reservada

RESET

Instrução JUMP

Até 256 Interrupções distintas

16 bits de endereçamento de segmento16 bits de endereçamento de offsetTotalizando um apontador de 4 bytes

Page 30: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Endereçamento de Entrada/Saída

Operações de Entrada/Saída podem endereçar um máximo de 64k de registradores de 8 bits (1 byte) ou 32k de registradores de 16 bits (1 word)

O endereçamento de Entrada/Saída apresenta o mesmo formato que o endereçamento de memória no barramento formado por A15-A0, porém com A19-A16 iguais a zero

O registrador DX é usado como apontador de endereço de Entrada/Saída

Page 31: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Interface Externa – Reset de Processador e Inicialização

RESET = HIGH por um período superior a 4 CLK

Todas as operações já em andamento no instante em que o RESET vai para nível alto são terminadas, permanecendo o processador em estado de espera logo após isso e enquanto RESET=HIGH

A transição de RESET para nível baixo aciona uma sequência de resets internos por aproximadamente 10 CLKs

Finalmente, executa-se a instrução no endereço FFFF0H

Page 32: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

RESET

Instrução JUMP

Interface Externa – Reset de Processador e Inicialização

Page 33: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Interface Externa – Operações de Interrupção

Existem duas classes de interrupções: de hardware e de softwareInterrupções de software são tratadas posteriormente quando falarmos dos conjuntos de instruçõesInterrupções de hardware são classificadas ainda como Não-Mascaráveis (NMI) ou Mascaráveis (INTR)

Page 34: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Até 256 Interrupções distintas

Interface Externa – Operações de Interrupção

Page 35: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Interface Externa – Interrupção Não-Mascarável (NMI)

Interrupção NMI possui maior prioridade do que uma mascarável (INTR)

Um uso típico de uma interrupção NMI seria para ativação de uma rotina para tratar uma falha de alimentação

Interrupção NMI é ativada durante uma transição LOW-to-HIGH, permanecendo HIGH por pelo menos 2 CLKs

Page 36: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Interface Externa – Interrupção Mascarável (INTR)

Interrupção INTR pode ser mascarada internamente via software, resetando o bit status FLAG

Uma interrupção mascarável é ativada durante uma transição LOW-to-HIGH em INTR

BUSCAR MAIS DETALHES!

Page 37: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Conjunto de RegistradoresDe Uso Específico

CS aponta para o Segmento de Código, onde há instruções a serem buscadas SS aponta para o Segmento de Pilha, usado para operações de colocar e/ou retirar dados da pilha DS aponta para o Segmento de Dados, onde normalmente estão armazenadas as variáveis de programa ES aponta para o Segmento Extra, tipicamente usado para armazenamento de dados

SITUAÇÃO DE RESETCS inicializa em FFFFhSS, DS e ES inicializam em 0000h

Programas podem acessar e manipular qualquer registrador de segmento Exemplo: DEBUG do DOS->Comandos d e e

Page 38: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Organização da Memória

O 8086/8088 é um microprocessador little-endian!

Page 39: Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados

Registro de FlagsProcessor Status Word (PSW)

Os flags CF, PF, AF, ZF, SF e OF são alterados pela EU de acordo com resultados de operações lógicas ou aritméticas Os flags TF, IF e DF são usados para alterar operações do processador, podendo ser setados ou resetados O Reset inicializa o PSW como F000h

1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0