Sistemas MultiprocessadosSistemas Multiprocessados
Curso Sistemas Multiprocessados
Prof. Helano de Sousa Castro
Departamento de Teleinformática/DETI
Programa da disciplinaPrograma da disciplina 1. Evolução das arquiteturas de computadores: aspectos históricos, computador pessoal,
bases numéricas 2. Arquitetura de microprocessador: arquitetura interna, modo de endereçamento de
memória real e protegido, paginação 3. Modos de endereçamento 4. Programação assembly 5. Arquitetura do processador 8086: especificações técnicas, pinagem, geração de clock
(8284), demultiplexação e buferização de barramentos, temporização dos barramentos, estados de espera (WAIT), modo máximo e mínimo
6. Interface de memória: dispositivos de memória, endereçamento, interface de memória do 8086.
7. Interface básica de Entrada/Saída: introdução a interface E/S, decodificação de endereços de portas, Interface Programável de Periféricos (8255), Interface Programável de Teclado/Vídeo (8279), Temporizador Programável (8254), Interface Programável de Comunicação, Conversor analógico-digital e digital-analógico.
8. Interrupções: atendimento de interrupções, interrupção de hardware, expandindo a estrutura de interrupção, Controlador Programável de Interrupção (8259A)
9. Acesso Direto à Memória (DMA): operação do DMA, Controlador de DMA 8237
AvaliaçãoAvaliação
Três avaliações escritas (50%)Projeto de final de disciplina (50%)
ProjetoProjeto
Hardware: placa com processador 8086; memória RAM de (no mínimo) 16KB ememória EPROM de mesmo tamanho; interface serial (8251); interface paralela (8255); contador/temporizador programável (8253); controlador de interrupções (8259A);
Diferencial: controlador de teclado/video (8275); controlador de DMA (8257);
Software: drivers para dispositivos acima; aplicação demonstrado operacionalidade do hardware.
PipeliningPipelining
Organização de memória 1Organização de memória 1
Organização de memória 2Organização de memória 2
Organização de memória 3Organização de memória 3
RegistrosRegistros
Registro de flagsRegistro de flags
Registro de FlagsRegistro de Flags
Registros de uso geralRegistros de uso geral
EAX: Acumulador : Referenciado como EAX, AX, AL ou AH. – Usado em instruções mult, div, etc. – Usado para armazenar um offset.
EBX: Base Index : – Usado para armazenar o offset do ponteiro de
dados.
Registros de uso geral (cont)Registros de uso geral (cont)
ECX: Count : – Usado para armazenar contagem em algumas
instruções, REP e LOOP. – Usado para armazenar o offset de um ponteiro
de dados. EDX: Data :
– Usado para armazenar uma parte do resultado de mult, e de operando para div.
– Usado para armazenar o offset de um ponteiro de dados.
Registros de uso geralRegistros de uso geral EBP: Base Pointer :
– Armazena o ponteiro base para transferências de dados em memória
EDI: Destination Index : – Armazena o ponteiro base do destino para
instruções string.
ESI: Source Index : – Armazena o ponteiro destino da origem para
instruções string.
Registros de propósito especialRegistros de propósito especial
EIP: Instruction Pointer : – Aponta para a próxima instrução no segmento
de código. – 16-bits (IP) no modo real e 32-bits no modo
protegido.
ESP: Stack Pointer : – Usado em operações na pilha e intruções call
and ret.
EFlagsEFlags
C (Carry) : Armazena o “vai 1” após operações de adição ou
“empresta 1” após operações de Também indica condições de erro.
P (Parity) : 0 para números ímpares e 1 para pares. Característica obsoleta do 80x86.
A (Auxiliary Carry) : Flag altamente especializado usado em instruções
DAA e DAS após instruções de adição e subtração em BCD.
Flags (cont)Flags (cont)
Z (Zero) : 1 se o resultado de uma instrução lógica ou
aritmética for 0.
S (Sign) : 1se o sinal do resultado de uma instrução aritmética
ou lógica for negativo.
T (Trap) : Habilita Trap. O microprocessador interrompe o
fluxo de instruções de acordo com condições indicada pelos registros de controle e debug.
Flags (cont)Flags (cont)I (Interrupt) :
Controla a operação do pino de interrupção INTR (Interrupt request). Se1, interrupções são habilitadas. Modificado pelas instruções STI e CLI.
D (Direction) : Seleciona o modo de incremento ou decremento
para o registro DI e/ou SI durante instruções string. Se1, os registros são automaticamente decrementados. Modificado pelas instruções STD e CLD.
O (Overflow) : Modificado (set) para instruções de adição e
subtração
Registros de SegmentoRegistros de Segmento CS (Code Segment) : No modo real, especifica o inicio de um segmento
de memória de 64KB. No modo protegido, seleciona um descritor de
segmento. O segmento de código é limitado a 64KB no 8086-
80286 e 4 GB a partir do 386. DS (Data Segment) : Similar ao CS exceto que esse segmento armazena
dados. ES (Extra Segment) : Data segmento de dados usado por algumas
instruções string para armazenar dados.
Registros de segmento (cont)Registros de segmento (cont)
SS (Stack Segment) : Similar a CS exceto que armazena a pilha. ESP e EBP armazenam os offsets nesse
segmento.FS and GS : 80386 e acima. Permitem definir outros segmentos de
memória
Mapeamento de endereçosMapeamento de endereços
SegmentaçãoSegmentação
Pinagem do 8086Pinagem do 8086
Característica elétrica do 8086Característica elétrica do 8086
Sinais do 8086Sinais do 8086
AD7-AD0
Barramento de sinais multiplexados de dados e endereços (byte menos significativo). O sinal ALE indica presença de endereços no barramento. Os pinos ficam em estado de alta impedância durante um hold acknowledge
AD15-AD8
Barramento de sinais multiplexados de dados e endereços (byte mais significativo). O sinal ALE indica presença de endereços no barramento. Os pinos ficam em estado de alta impedância durante um hold acknowledge
AD19/S6-A16/S3
Barramento de sinais multiplexados de endereços (4 bits mais significativos) e status. O bit indicativo de status S6 sempre permanece em zero; o bit S5 indica a condição dos bits de flag IF. S3 e S4 podem ser usados para endereçar 4 bancos de memória separados de 1MB, decodificando-os como A20 e A21. Os pinos ficam em estado de alta impedância durante um hold acknowledge
S4 S3 Função
0 0 segmento extra
0 1 segmento de pilha
1 0 segmento de código ou nenhum segmento
1 1 segmento de dados
RD
Sinal de saída. Sempre que for zero, indica que o 8086 está pronto para efetuar uma leitura de memória ou E/S . O pino fica em estado de alta impedância durante um hold acknowledge.
READY
Sinal de entrada. Usado para introduzir estados de espera (WAIT) na temporização do processador. Se for colocado em nível 0, o 8086 entra em estados de espera e permanece ocioso (idle). Se colocado em nível 1, não tem nenhum efeito na operação do processador.
INTR
Sinal de entrada que indica um pedido de interrupção (Interrupt request). Quando mantido em 1, se IF=1, o 8086 entra em um ciclo de reconhecimento de interrupção (Interrupt acknowledge, INTA torna-se ativo) após a instrução atual ser concluída. Conhecida por interrupção mascarável por poder ser não reconhecida através da colocação de IF em 0.
TEST
Sinal de entrada que é testado pela instrução WAIT. Se TEST = 0, a instrução WAIT funciona como um NOP; sefor 1, a instrução WAIT espera que TEST torne-se 0.
NMI
Sinal de entrada para indicar um pedido de interrupção não mascarável (non-maskable interrupt). Similar a INTR exceto que o status do flag IF não é testado. Se NMI é ativado, a interrupção usa o vetor 2.
RESET
Sinal de entrada usado para resetar o 8086 por um mínimo de 4 períodos de clock. O processador começa a executar a partir da posição de memória FFFF0H e interrupções mascaráveis são desabilitadas através da colocação de IF em 0.
CLK
Sinal de entrada, fornece o sinal de temporização básico para o microprocessador. O sinal de clock deve ter um duty cycle de 33% de forma a garantir temporizações internas necessárias.
Vcc
Sinal de entrada, fornece a tensão de +5V +/-10%, para o processador.
GND
Conexão de terra para retorno da fonte de potência. O 8086 tem 2 pinos de terra e AMBOS devem ser aterrados.
MN/MX
Sinal de entrada, seleciona o modo de operação mínimo ou máximo do processador. Se o mínimo é requerido, o pino deve ser conectado a +5V.
BHE/S7
Sinal de entrada, fornece a tensão de +5V +/-10%, para o processador.
Pinos do 8086 no modo mínimoPinos do 8086 no modo mínimoM/IO
Sinal de saída usado para indica que o processador irá efetuar acesso à memoria ou à dispositivos de entrada/saída.Quando 1, indica que o barramento de endereços contém um endereço válido de memória. O pino fica em estado de alta impedância durante um hold acknowledge.
WR
Sinal de saída, é usado como strobe que indica que o 8086 está enviando dados para memória ou Entrada/Saída. Durante o tempo que WR está em lógica 0, o barramento de dados contém dados válidos para memória ou E/S. O pino fica em estado de alta impedância durante um hold acknowledge.
ALE
Address Latch Enable. Sinal de saída, indica que o barramento multiplexado endereços/dados contém informação de endereços. O endereços pode se referir a memória ou número da porta de E/S. Usado normalmente junto com um Latch para demultiplexar o barramento enderços/dados. Este pino não flutua com HOLDA.
INTA
Interrup Acknowledge. Sinal de saída, indica que o 8086 irá responder a um pedido de interrupção feito no pino INTR.
HOLD
Sinal de entrada, usada para solicitar DMA (Direct Memory Access), Acesso Direto à Memória. Se HOLD=1, o processador para de executar o programa e coloca seus barramentos em alta impedância. Se HOLD=0 o processador executa normalmente.
DT/R
Sinal de saída, indica que o processador está transmitindo ou recebendo no/do barramento de dados. Esse sinal é usado para habilitar buffers externos de dados.
DEN
Data bus enable. Sinal de saída, usado para ativar buffer externos de dados.
HLDA
Hold Acknowledge. Sinal de saída, indica que o 8086 entrou em um estado de HOLD.
SS0
Linha de status (saída), é equivalente ao pino S0 no modo operação máximo. Este sinal, combinado com M/IO e DT/R , é usado para decodificar a função do ciclo de barramento atual.
Pinos no modo máximoPinos no modo máximo
S2, S1, S0
Bits de status (saída) indicam a função corrente do ciclo de barramento. Estes sinais são, normalmente, decodificados usando-se o controlador de barramento 8288.
R1/GT1 e RO/GT0
Request/Grant. Usados para pedidos de DMA no modo de operação máximo. Essas linhas são bi-direcionais, e são usadas tanto para pedido como para concessão de operação de DMA.
Configuração no modo Configuração no modo máximomáximo
S2 S1 S2 Função
0 0 0 INT ACK
0 0 1 I/O Read
0 1 0 I/O Write
0 1 1 Halt
1 0 0 Opcode Fetch
1 0 1 Memory Read
1 1 0 MemoryWrite
1 1 1 Passivo
Funções do barramento de controle geradas pelo barramento de controle (8288) usando S2, S1 e S0
LOCK
Sinal de saída, é usado para “travar” periféricos. Este pino é ativado usando o prefixo LOCK: em qualquer instrução.Hold Acknowledge.
QS1 e QS2
Sinais de status (saída), mostram o status da fila interna de instruções. Esses pinos são fornecidos para acesso ao coprocessador numérico
QS1 QS2 Função
0 0 Fila está inativa
0 1 Primeiro byte de um opcode
1 0 Fila vazia
1 1 Byte subsequente de um opcode
Status da Fila interna de instruções
Diagrama de bloco do 8284Diagrama de bloco do 8284
Gerador de Clock 8284AGerador de Clock 8284A
AEN1 e AEN2
Pinos Address Enable (entradas) são fornecidos para habilitar os sinais de Ready, RDY1 e RDY2, respectivamente, usados para causar ciclos de WAIT.
RDY1 e RDY2 (entradas)
Pinos de entrada usados em conjunção com AEN1 e AEN2 para causar ciclos de WAIT no
X1 e X2
Pinos para conexão do oscilador de cristal externo, usado como fonte de temporização para todos os tempos no 8484. Sua frequência deve ser 3 vezes maior que o valor desejado para CLK.
READY
Sinal de saída para ser conectado no pino READY do 8086. Este sinal está sincronizado com RDY1 e RDY2.
ASYNC
A entrada de seleção de sincronização de ready seleciona um ou dois estágios de sincronização para as entradas RDY1 e RDY2. Possui resistor de pull-up interno.
CLK
Pino de saída do clock para o 8086 e outros componentes do sistema. Sua freqüência é 1/3 da freqüência do cristal ou de EFI, e tem um ciclo de trabalho de 33%, requerido pelo processador.
F/C
Entrada frequency/crystal select seleciona a fonte de clock do 8284. Se o pino é mantido em 1, um clock externo é fornecido pela entrada EFI; se mantido em 0, o oscilador de cristal interno fornece o sinal de temporização.
EFI
A entrada External frequency input é usada quando o pino F/C é colocado em 1, caso em que ele fornece a temporização. Sua frequência deve ser 3 vezes maior que o valor desejado para CLK.
PCLK
A saída peripheral clock tem 1/6 da freqüência do cristal ou de EFI, e tem ciclo de trabalho de 50%. PCLK fornece sinal de clock para equipamento periférico do sistema.
RES
Reset é uma entrada ativo baixo para o 8284. Este pino é normalmente conectado a uma rede RC que fornece power-on reset.
OSC
A saída oscilator tem um nível de sinal TTL que é da mesma freqüência que o cristal ou EFI. OSC fornece uma entrada EFI para outros geradores de clock 8284 em sistemas multiprocessadores. Contanto que se tenha um cristal conectado a X1 e X2, sempre esta saída fornecerá um clock, mesmo se, mesmo se F/C estiver em alto.
GND
Pino de terra.
RESET
Saída conectado ao pino de RESET do 8086.
CSYNC
A entrada clock synchronization é usada sempre que a entrada EFI fornecer a sincronização em sistemas multiprocessadores. Se o oscilador de cristal interno for usado, essa entrada deve ser aterrada.
Vcc
Deve ser ligado a uma fonte de +5V, +/- 10%.
Clock do processadorClock do processador
Circuito de reset e clockCircuito de reset e clock
LatchingLatching
82888288
Temporização no 8086Temporização no 8086
8086 usa memória e E/S em períodos chamados de ciclos de barra (ou barramento)
Cada ciclo corresponde a 4 períodos de clock (estados T)
Se f = 5 MHz, T = 200ns e ciclo = 800nsVelocidade de Leitura ou escrita máxima
Ciclo de barraCiclo de barra
T1 – ALE, DT/R, M/IO, Endereços
T2 – RD ou RD, DEN
Se ciclo de escrita -> DATA OUT
Se ciclo de leitura -> barramento A/D em tri-state
Ready – amostrado no final de T2
T3 – Fornecido para dar tempo para memória acessar dado
Se o ciclo for de leitura (READ) o dado é amostrado no fim de T3
T4 – Sinais desativados. Preparação para o próximo ciclo
Subida de WR
Cálculo para tempo de acesso da memória
Considerando processador a 5MHz -> T = 200 ns
Ciclo de leitura = 3 X T = 3 X 200 ns + 600 ns (Access Time)
Deve-se considera o retardo introduzido por:
ALE (TCLAV) = 110 ns
Access Time = 600 ns – 110 ns
= 490 ns
Data Setup (TDVCL) = 30 ns
Access Time = 490 ns – 30 ns = 460 ns
OBS: Incluir retardo de 40 ns (propagação portas)
Access Time = 420 ns
Top Related