SISTEMAS DE MÉDIO E GRANDE PORTE Características importantes • Sistemas microprocessados maiores normalmente possuem duas características importantes: o Uso de transferências por DMA o Organização de memórias através de mapeamento virtual e cache DMA (“Direct Memory Access”) • Normalmente nas transferências entre periférico e memória, a CPU age como intermediário • O DMA permite uma transferência direta, sem a necessidade de a CPU buscar as instruções na memória de programa o Aumenta muito a velocidade de transferência • Figura 8.11: Hardrware para suporte a DMA o O DMAC (Controlador DMA) é um CI de controle (um tipo de coprocessador) e pode tomar controle do barramento o Conexão básica: barramentos de endereços, dados e controle 1 o Conexões extras: Ao periférico: Busy e Done À CPU: DMA Grant, DMA request e IRQ* o A CPU acessa o DMAC como qualquer outro periférico, lendo dos e escrevendo nos registradores internos do CI • Conjunto mínimo de registradores do DMAC: o Reg. de Endereço: Aponta para o endereço fonte / destino dos dados o Reg. de Contagem: Contém o número de bytes ainda a serem transferidos o Regs. de Controle e de Status • Sequência de operação: o A CPU programa o DMAC (escreve os parâmetros da transferência nos registradores) o O DMAC requisita o acesso ao barramento Na fig. 8.11, desliga switch 1 e liga switch 2 e 3 o O DMAC coloca o endereço em Axx e gera os sinais de controle, emulando a CPU para mover os dados entre peridérico e memória Usa os sinais Busy e Done para o handshake com o 2 periférico o Após cada transferência o DMAC incrementa o reg. de endereço e decrementa o reg. de contagem o Quando o reg. de contagem chega a zero, o DMAC retorna o controle de barramento à CPU (modo burst), podendo usar interrupção para isto • Os detalhes de operação variam para cada DMAC o O DMAC deve sempre emular a CPU o Modo burst: só retorna o controle à CPU quando acaba de transferir tudo o Modo interleave: alterna controle entre DMAC e CPU. A CPU cede o controle ao DMAC durante suas operações internas. O DMAC 68430 • Existe o 68450, bastante complexo e caro. Uma alternativa é o 68430. • Estrutura: fig. 8.12 o Linhas padrão do barramento de controle e de endereços são bidirecionais Entradas durante a programação do DMAC 3 Saídas quando o DMAC controla o barramento o Para manter um limite de 48 pinos, os barramentos de dados e de endereços (A08 – A23) são multiplexados Linhas OWN* e DBEN* controlam a multiplexação • Hardware adicional: fig. 8.13 o Saída OWN* (coletor aberto) ativa quando o DMA toma o controle o Saída DBEN* (coletor aberto) ativa quando o DMA é acessado pela CPU (via CS* ou IACK* com interrupção pendente no DMAC) • Comunicação com o periférico: 5 linhas de controle o REQ* (Request): Periférico requisita serviço (faz o DMAC requisitar controle) o ACK* (Acknowledge): DMAC sinaliza dizendo que tem o controle (ativa no início do ciclo e inativa no final do ciclo) o RDY* (Ready): Periférico indica que um dado válido foi armazenado ou colocado no barramento. Se permanecer inativo, o DMAC pode executar wait states. 4 o DTC* (Device Transfer Complete): O DMAC indica que a transferência daquele dado se completou Se for escrita, indica que a memória já armazenou o dado Se for leitura, indica que o dado está no barramento para ser lido pelo periférico o DONE*: Como saída (coletor aberto) indica que a operação toda foi concluída. Como entrada, força o DMAC a abortar o ciclo Operação do DMAC: • Inicialmente, a CPU programa os registradores do DMAC: o Quantidade de dados a transferir o Endereço inicial na memória o Direção da transferência o Tipo de transferência • Depois, o periférico requisita o serviço: o P ativa REQ* → DMAC ativa BR* → DMAC espera BG* → DMAC ativa BGACK* • O DMAC gera todos os sinais para a transferência o Modo burst: vários operandos são transferidos em ciclos 5 consecutivos o Modo cycle-stealing ou interleave: O barramento pode ser liberado entre transferências sucessivas • Registradores do 68430: o Com 7 bits de endereço, poderíamos ter 128 registradores, mas o 68430 só usa 12 Compatibilidade com o 68450, que possui 4 canais DMA independentes o Tabela 8.1: os registradores usam endereços não sequenciais (subset do 68450) o MAC: Registrador de endereço (24 bits), incrementa de 1, 2 ou 4 a cada transferência o MTC: Registrador de contagem (16 bits), decrementa de 1 a cada transferência o IVR: Vetor de interrupção O bit zero indica se houve sucesso (0) ou erro (1) o Modo de operação definido por DCR (device), OCR (operation) e CCR (channel). o CSR: Status do DMAC o CER: Indica erros de operação 6 • Operação geral: fig. 8.14 Arbitragem de barramento • Pode-se implementar sistemas com múltiplos bus masters. Exemplo: uso de DMA, múltiplas CPUs. • Normalmente o 68000 controla o barramento, mas pode ceder o controle através dos sinais BR*, BG* e BGACK* • Fig. 7.3: Ligações • Fig. 7.2: Protocolo. o O 68000 responde obrigatoriamente a BR*. Se for desejada máscara ou priorização, será necessário lógica externa. o CPU ativa BG* para avisar que o barramento será cedido ao final do presente ciclo de barramento. Se o AS* ainda não foi ativado, a CPU atrasa o BG* até que AS* seja ativado o Periférico aguarda desativação de AS* (CPU não está acessando) e DTACK* (memória não está acessando). Verifica se BGACK* está desativado (outro bus master pode estar requisitando) e ativa o próprio BGACK*. o Periférico pode negar o BR* após BGACK* 7 o CPU nega BG* e não mais acessa barramento enquanto BGACK* estiver ativo Neste tempo outro bus master pode requisitar usando BR* • Fig. 7.4: Diagrama de tempo. Gerenciamento de memória • Sistemas grandes usam dois espaços de endereçamento: o Lógico (LAS, Logic Address Space), gerado pela CPU o Físico (PAS, Physical Address Space), acessado pela memória / periférico • Por que se utilizam estes dois espaços, e não um único? 1. Implementação de sistemas com espaço físico maior que o espaço de endereçamento disponível na CPU. Figs. 7.41 e 7.42 2. Implementação de sistemas com espaço físico menor que o espaço de endereçamento disponível na CPU (memória virtual). Fig. 7.43 3. Proteção de áreas de memória 4. Garantia de uso eficiente da memória 5. Liberar o programador de considerações de localização 8 de áreas físicas de memória Mapeamento de memória por chaveamento de bancos: • Figs. 7.44 e 7.45 • CPU pode escrever um número em um latch, que determina através do decodificador qual dos bancos de memória será utilizado. • Problema: Instruções JUMP de um banco para outro necessitam um chaveamento prévio. Mapeamento indexado • Mais eficiente. Permite JUMP entre bancos sem instruções adicionais o A identificação do banco faz parte do endereço lógico o Fig. 7.46: Tabela de 2p posições (campo de p bits) Cada posição da tabela possui q bits (q > p) Campo de deslocamento com d bits, mapeia diretamente • Exemplo: Espaço lógico com apenas 16 bits (64kB) o Se p = 4, teremos 16 (24) páginas de 4kB (endereçáveis com 16 – 4 = 12 bits) o Se q = 8, o tamanho fídico da memória poderá ser de 9 28 x 4kB = 256 x 4kB = 1MB o Observe que temos 256 páginas físicas, mas apenas 16 delas podem ser acessadas em um dado momento. Para acessarmos outras páginas, é preciso modificar a tabela, o que é feito pelo SO. o Espaço de memória: fig. 7.47 Memória Virtual • Tem-se o espaço lógico maior que o físico • Exemplo de ambiente multitarefa: fig. 7.48 o Os dados são compartilhados pelas tarefas A e B, mas os endereços lógicos são distintos em cada tarefa • Mapeamento por MMU (Memory Mapping Unit): o SO programa as tabelas de mapeamento, modificando-as de acordo com a necessidade • Permissões: podem ser dos tipos Read-only, Write-only, exclusivo do SO, ou para algumas tarefas específicas • Translação de endereços: fig. 7.49 • CPU de 24 bits de endereçamento, usando deslocamento de 16 bits (página com 64kB e endereço de página de 8 bits (256 valores possíveis) 10 • Endereço físico de 19 bits (512kB), com os 16 de deslocamento e mais 3 vindos da tabela • Campos da tabela: o Endereço da página (8 bits) o Bits do enderço físico (3): page frame o Bit R (Resident): ativo se a frame está na memória física naquele momento o Bit M (Modified): ativo se houve escrita na área de memória da frame • O SO deve buscar o bloco em memória auxiliar (ex. HD), colocar em uma página e atualizar a tabela • Se houve escrita na memória (Bit M setado), o SO deve gravar a página no HD antes de liberar o espaço A MMU MC68451 • Projetada para o 68000 • Possui 32 registradores, permitindo 32 blocos lógicos • Cada bloco possui tamanho definível (potência de 2) de 256B a 16MB; os blocos podem ter tamanhos diferentes • Pode-se usar até 8 MMUs em um sistema (256 blocos) 11 • Estrutura geral: fig. 7.50 • Exemplo de gerenciamento de memória segmentada: fig. 7.51 • A MMU possui uma tabela de 32 descritores, com 72 bits cada, divididos em 6 campos: o LBA, LAM, PBA de 16 bits cada o ASN, SSR e ASM de 8 bits cada • Os bits A08 a A23 são passados aos 32 registradores simultaneamente (16 bits para mapeamento) o Qualquer descritor que apresentar coincidência participa da translação o Se nenhum descritor coincidir, é gerada uma page fault • Bits A01 a A07 são passados direto para o endereço físico (256 Bytes mínimos por página) • Fig. 7.52: Relações entre LBA, PBA, LAM e translação de endereços • LBA (Logical Base Address): Bits mais significativos do endereço lógico. Determina o início do segmento lógico. o 16 bits determinam um segmento lógico de 256 Bytes o Para segmentos maiores, deve-se mascarar alguns bits 12 do LBA, reduzindo o número de bits usados de 16 para 1-15 • LAM (Logical Address Mask): define os bits do LBA a serem usados o Se um bit é 1, o bit correspondente no LBA é usado; se for zero, o bit no LBA não participa do endereço do segmento lógico o Exemplo: Um segmento lógico inicia em $04 0000, portanto o LBA contém $0400 O LAM contém $FFF0 Usamos apenas os 12 bits mais significativos do LBA, correspondendo a A12 – A23. Segmento endereçado possui 4kB (12 bits de endereçamento interno), ocupando o espaço $04 0000 a $04 0FFF • PBA (Physical Base Address): Determina o primeiro endereço do segmento físico o As linhas A01 – A07, mais as mascaradas em 0 pelo LAM, passam direto para o endereço físico o O restante é suprido pelo PBA do descritor o No exemplo anterior, com PBA = $1830 (em binário 13 temos 0001 1000 0011 0000): A CPU gera o endereço $04 0123, que cai dentro da faixa do descritor visto anteriormente Como os 12 bits mais significativos do LAM estão ativos, os 12 bits mais significativos do PBA (0001 1000 0011) passam como A12 – A23 do endereço físico Como os 4 bits menos significativos do LAM estão inativos, os 4 bits menos significativos do LBA (0001) passam como A08 – A11 do endereço físico Os bits originais A01 – A07 passam direto (0010 0011) Endereço final: (0001 1000 0011 0001 0010 0011)2 = $18 3123 • Proteção de segmentos: Usa-se FC0 – FC3, com 16 possibilidades o FC0 – FC2 vêm direto da CPU; FC3 é gerado a partir do BGACK* 8 possibilidades para a CPU, 8 para outros masters o Os FCs acessam a AST (Address Space Table), com 16 posições, de 8 bits cada (CASN – Cycle Address Space 14 Number) CASN especifica o número da tarefa em um ambiente multitarefa o ASN (Address Space Number): Associa o segmento do descritor com um número de tarefa o ASM (Address Space Mask): Determina quais bits do ASN devem ser levados em conta Similar ao LAM – LBA Permite um segmento ser partilhado por mais de uma tarefa o Estrutura: fig. 7.53 o Exemplo: FC3 – FC0 = 0110 (CPU acessando memória de programa, modo supervisor) CASN(0110) = 0001 1010 (tarefa número $1A) ASN = 1100 1010 ASM = 0000 1111 Libera-se o acesso para qualquer tarefa com um número binário XXXX 1010 ($XA) Houve space match, acesso é liberado Memória “cache” 15 • Memória “escondida” para o programador • Usa-se SRAM: cara, pequena, de alta velocidade (tempo de acesso 15-45ns) • O segredo é fazer com que a maior parte dos acessos à memória pela CPU ocorra na área da cache • Estrutura geral: fig. 7.73 • Os dados na cache também estão na memória principal • Princípio da localidade de referência: o próximo item normalmente está nas proximidades do item corrente • Controlador de cache: verifica se o dado sendo acessado tem cópia na cache (Hit) ou se está apenas na memória principal (Miss) 16