Arquitectura de Computadores

Notas de estudo

Alberto José Proença

1999/00

 

Índice geral

  1. Organização e arquitectura dum computador
  2. Análise do funcionamento do CPU dum computador
  3. Mecanismos para execução de programas
  4. Modelo de programação dum processador
  5. Metodologia de construção de programas em assembly
  6. Alternativas às arquitecturas RISC genéricas
  7. Computação aritmética
  8. Arquitectura interna dum processador simples - o datapath
  9. Interface do CPU com periféricos
  1. Arquitectura típica dum computador
  2. Barramentos internos num computador
  3. Interface de periféricos com o processador/memória
  4. Funções do SO na comunicação com periféricos
  5. Mecanismos de interrupção
  6. Algumas causas de excepção/interrupção no MIPS
  7. Manuseamento de excepções/interrupções (no MIPS)

 

A organização da arquitectura interna dum CPU foi analisada no capítulo anterior, com o exemplo detalhado duma arquitectura simplificada do MIPS. Nesta secção vai-se iniciar o estudo do modo como o CPU implementa o interface com o exterior - mais concretamente com os controladores de periféricos - através da análise dos barramentos presentes num computador, e da análise dos mecanismos de interface entre o par CPU/memória e os periféricos de I/O. O papel do CPU na execução de funções do sistema operativo é também abordado, quer nas situações em que a intervenção do CPU é explícita e directa, quer nos casos em que a intervenção do CPU é mínima: com o apoio dum controlador de acessos directos à memória (DMAC) e através de mecanismos de interrupção. O tratamento dos mecanismos de interrupção é ainda analisado de modo mais abrangente - incluindo as excepções - e com certo detalhe na arquitectura do MIPS. Este assunto aparece tratado no livro recomendado duma forma dispersa: a primeira parte em 8.1, 8.4 e início de 8.5, o acesso directo à memória e as interrupções são introduzidas em 8.5, as excepções em 5.6 e o manuseamento de excepções e interrupções é feito de novo em A.7. As figuras referenciadas ao longo deste capítulo são as usadas na íntegra no livro recomendado, e estão disponíveis aqui em formato WMF compactado (36K para todas as figuras do cap. 8).

Parte destas notas de estudo não são mais que o conteúdo dos acetatos apresentados nas aulas; nestes casos torna-se imprescindível o estudo do assunto através da bibliografia recomendada.

 

  1. Arquitectura típica dum computador

A fig. 8.1 dá-nos uma visão mais completa da organização de um computador típico, face ao modelo que se tem vindo a apresentar. Nesta figura realçam-se os barramentos que permitem não apenas ligar o CPU à memória principal, como permitem ainda a comunicação deste par com os controladores de periféricos, exemplificando ainda alguns desses periféricos. O tema de estudo desta semana centra-se precisamente à volta destes 2 aspectos: os barramentos internos dum computador, e a comunicação entre o CPU e os periféricos (apresentado apenas de modo esquemático).

  1. Barramentos internos num computador

Vários tipos de barramentos de barramentos poderão estar presentes dentro dum computador, consoante o tipo de tráfego que por eles circular (fig. 8.9):

A fig 8.15 apresenta algumas características essenciais dos barramentos standard mais populares no início da década de 90.

  1. Interface de periféricos com o processador/memória

As secções anteriores concentraram-se na análise do modo como a comunicação interna de informação se processava, enquanto modo físico de transporte da informação de umas unidades funcionais para outras (através de barramentos).

É agora pertinente analisar quais as tarefas que devem ser executadas para permitir uma comunicação de informação controlada e fiável entre o par processador/memória e as restantes unidades funcionais, muito em particular as responsáveis pela gestão do interface com os periféricos. Mais concretamente, é importante saber como é que:

As principais responsabilidades do SO nesta área estão directamente ligadas a caracterísiticas dos próprios periféricos:

Em resumo, para executar estas funções ao serviço do utilizador, o SO deve:

  1. Funções do SO na comunicação com periféricos

As principais funções do SO na comunicação com periféricos foram identificadas na secção anterior, requerindo para a sua execução a existência de 3 tipos de comunicação: (i) os comandos do SO para os controladores de I/O; (ii) a notificação dos resultados das operações de I/O que os controladores deverão submeter ao processador; e (iii) a transferência de informação entre o periférico (através do seu controlador) e a memória.

Comando de controladores de I/O

Comunicação dos controladores de I/O com o CPU

Duas questões se colocam: como e quando passar a informação do estado do controlador para o processador.

O modo habitual de essa informação chegar ao processador, é o processador ler o(s) registo(s) de estado do controlador, onde toda a informação pertinente se encontra codificada e guardada.
A altura para o fazer pode ser (i) definida apenas por software - o processador de tempos em tempos executa uma função que faz a sondagem por todos os controladores para indagar quem precisa de ser atendido, i.e., lê os registos de estado dos controladores (polling na terminologia inglesa) - ou (ii) decidida com base num pedido físico de atendimento do controlador, i.e., activação de uma interrupção por hardware.

O mecanismo de sondagem (polling) é o mais económico de implementar, mas pode ter um impacto significativo no desempenho do computador, ou pode mesmo ser impossível de concretizar quando o período entre 2 sondagens consecutivas for demasiado curto. A quantificação, a título exemplificativo, deste overhead, é apresentado em exemplos no cap. 8.5.
Quanto à interrupção, uma questão adicional se coloca; como é feita a identificação do controlador/periférico que solicita a atenção do processador? Uma de duas alternativas é normalmente a escolhida pelos fabricantes do processador: envio do endereço do controlador em tabela de interrupção, ou o controlador envia a informação adicional necessária (envia pelo barramento) para colocar em registo especial.

Transferência de dados entre controladores de I/O e a memória

A transferência de dados entre controladores de I/O e a memória pode ser feita com ou sem a intervenção directa do CPU. Quando este intervém directamente no processo de transferência da informação, este é desencadeada por sondagem (polling) ou por interrupção (interrupt driven), e o processo consiste sempre em 2 fases - ler o conteúdo da(s) célula(s) de memória/registo de dados do controlador para um registo do processador, e depois escrever o conteúdo desse registo no registo de dados do controlador/célula(s) de memória - para além das operações de controlo de fim de transferência.

Quando a transferência de dados entre controladores de I/O e a memória é feita sem a intervenção directa do CPU, é utilizada uma unidade funcional adicional, o controlador de acesso directo à memória (DMAC).

O DMAC precisa de ser inicializado (pelo processador) através das seguintes operações sobre o DMAC:

Após ter sido inicializado, eis a sequência de passos a executar sempre que se pretenda efectuar uma transferência:

  1. Mecanismos de interrupção

Eventos que podem causar alteração ao fluxo normal de execução de programas:

Modos de operação do CPU

  1. Algumas causas de excepção/interrupção no MIPS

 

  1. Manuseamento de excepções/interrupções (no MIPS)