620 likes | 733 Views
Sistemas Multiprocessados. Curso Sistemas Multiprocessados Prof. Helano de Sousa Castro Departamento de Teleinformática/DETI helano@lesc.ufc.br. Programa da disciplina. 1. Evolução das arquiteturas de computadores: aspectos históricos, computador pessoal, bases numéricas
E N D
Sistemas Multiprocessados Curso Sistemas Multiprocessados Prof. Helano de Sousa Castro Departamento de Teleinformática/DETI helano@lesc.ufc.br
Programa 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ção • Três avaliações escritas (50%) • Projeto de final de disciplina (50%)
Projeto • 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.
Registros 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) • 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 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 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.
EFlags • 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) • 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) • 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 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) • 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
Sinais 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 • 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.
M/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. Pinos do 8086 no modo mínimo
INTA • Interrup Acknowledge. Sinal de saída, indica que o 8086 irá responder a um pedido de interrupção feito no pino INTR. • 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.
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. • 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.
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. • HLDA • Hold Acknowledge. Sinal de saída, indica que o 8086 entrou em um estado de HOLD.
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. Pinos no modo má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
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 Gerador de Clock 8284A
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. • READY • Sinal de saída para ser conectado no pino READY do 8086. Este sinal está sincronizado com RDY1 e RDY2. • 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.
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. • 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.
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. • RES • Reset é uma entrada ativo baixo para o 8284. Este pino é normalmente conectado a uma rede RC que fornece power-on reset. • 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.