Arquitectura de Computadores
Notas de estudo
Alberto José Proença
1999/00
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.
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).
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.
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:
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:
Eventos que podem causar alteração ao fluxo normal de execução de programas:
Modos de operação do CPU