BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade Fax Interface de Barramento de expansão Modem Interface serial Barramento de alta velocidade No nível mais alto, um computador é composto pela CPU, memória e dispositivos de E/S, podendo conter um ou mais de cada um desses componentes. Essa visão global da estrutura e do funcionamento de um computador é importante para que se possa entender sua natureza, além de questões cada vez mais complexas, relativas à avaliação de seu desempenho. Uma boa compreensão da estrutura e do funcionamento de um computador permite identificar pontos críticos para o desempenho do sistema, visualizar e avaliar a dificuldade em introduzir melhorias de desempenho. COMPONENTES DE COMPUTADOR Praticamente todos os projetos de computadores atuais são fundamentados nos conceitos desenvolvidos por John Von Neumann no Instituto de Estudos Avançados de Princeton. Esse projeto conhecido como Arquitetura von Neumann, é baseado em três conceitos básicos: Os dados e as instruções são armazenados em uma única memória de leitura e escrita. O conteúdo dessa memória é endereçado pela sua posição, independentemente do tipo de dados nela contidos. A execução de instruções ocorre de modo seqüencial (exceto quando essa seqüência é explicitamente alterada de uma instrução para a seguinte).
O computador é composto de um pequeno conjunto de componentes lógicos básicos, que podem ser combinados de vários modos para armazenar dados binários e executar operações aritméticas e lógicas sobre esses dados. Ë possível obter, para cada aplicação particular, uma configuração de componentes lógicos projetada especificamente para executar essa aplicação. Esse processo de conectar os diferentes componentes do sistema para obter a configuração desejada pode ser concebido como uma forma de programação. O programa resultante é formado pelo hardware e é chamado programa hardwire. Hardware dedicado Seqüência de funções lógicas e aritméticas Resultados Programação em hardware Considere agora outra alternativa: suponha que construímos uma configuração de funções lógicas e aritméticas de propósito geral. Esse conjunto de componentes de hardware é capaz de executar várias funções sobre os dados, dependendo dos sinais de controle que lhe são aplicados. Na situação anterior, em que o hardware é dedicado para uma aplicação particular, o sistema apenas lê dados e produz resultados. Um hardware de propósito geral é capaz de ler dados e sinais de controle e produzir resultados. Assim, em vez de projetar um novo hardware para cada aplicação nova, o programador simplesmente precisa fornecer um novo conjunto de sinais de controle. Códigos de instruções Interpretador de instruções Sinais de controle Seqüência de funções lógicas e aritméticas Resultados Programa em software Programar então ficou muito mais fácil. Em vez de projetar um novo hardware para cada aplicação nova, precisamos apenas fornecer uma nova seqüência de códigos. Cada código corresponde a uma instrução; uma parte do hardware interpreta essas instruções e
gera os sinais de controle correspondentes. Para distinguir esse novo método de programação, uma seqüência de códigos ou instruções é chamada de software. A figura acima indica os dois componentes mais importantes do sistema: o modulo que interpreta as instruções e o módulo que executa as funções lógicas e aritméticas de propósito geral. Esses componentes constituem a CPU. A CPU troca dados com a memória. Para isso, ela tipicamente usa dois registradores internos: um registrador de endereçamento à memória (memory address register MAR), que especifica o endereço da memória a ser usado pela próxima instrução de leitura ou escrita, e um registrador temporário de dados (memory buffrer register - MBR), que contém um valor a ser gravado na memória ou recebe um valor lido da memória. Da mesma maneira, o registrador de endereçamento de E/S (I/O address register I/O AR) específica um determinado dispositivo de E/S. Um registrador temporário de E/S (I/O buffer register I/O BR) é usado para a troca de dados entre um módulo de E/S e a CPU. Um módulo de memória é constituído de um conjunto de posições de memória identificadas por endereços numerados seqüencialmente. Cada posição contém um número binário que pode ser interpretado como uma instrução ou como um dado. Um módulo de E/S transfere dados de dispositivos externos para a CPU e para a memória e vice-versa. Ele contém áreas de armazenamento temporário (buffers) internas, para guardar temporariamente esses dados até que possam ser enviados. CPU Módulo de E/S Instrução PC MAR MBR Instrução IR I/O AR I/O BR Áreas de armazenamento temporário PC Contador de programa; IR registrador de instruções; MAR Registrador de endereçamento à memória; MBR registrador temporário de dados; I/O AR registrador de endereçamento de E/S; I/O BR registrador de armazenamento temporário de dados de E/S. FUNCÕES DOS COMPUTADORES A função básica desempenhada por um computador é executar um programa que é constituído por um conjunto de instruções armazenada na memória. O processador realiza o trabalho efetivo de executar as instruções especificadas no programa. Em forma mais simples, há dois passos para o processamento de instruções: o processador lê (busca) instruções na memória, uma de cada vez, e executa cada uma. A execução de um programa consiste na repetição desse processo de busca e execução de instruções. O processamento necessário para a execução de uma instrução é chamado de ciclo de instrução básico. Os dois passos são denominados ciclo de busca e ciclo de execução.
Ciclo de busca Ciclo de execução INÍCIO Busca da próxima intrução Execução da instrução PARADA Ciclo de instrução Básico No início de cada ciclo de instrução, o processador busca uma instrução da memória. Em um processador típico, um registrador chamado contador de instruções ou contador de programa (program counter PC) é usado para guardar o endereço da próxima instrução a ser buscada na memória. Normalmente, o processador sempre incrementa o PC depois de cada busca de instrução, de modo que a próxima instrução esteja em uma seqüência (isto é, ela está localizada no endereço de memória seguinte). Por exemplo, considere um computador no qual cada palavra de memória tem 16 bits. Suponha que o PC contenha o endereço 300. O processador buscará a próxima instrução na posição de memória de endereço 300. Nos ciclos de instruções seguintes, ele buscará as instruções armazenadas nas posições de memória de endereços 301, 302, 303, e assim por diante. Essa seqüência pode ser alterada. A instrução buscada na memória é carregada nos registrador do processador conhecido como registrador de instruções (instruction register IR). Ela contém bits que especificam a ação que o processador deve executar. O processador interpreta a instrução e executa a ação requisitada. Em geral, essas ações são classificadas em quatro categorias: Processador-memória: Transferência de dados do processador para a memória ou da memória para o processador. Processador-E/S: Transferência de dados entre o processador e um dispositivo periférico por meio de um módulo de E/S. Processamento de dados: Execução de operações aritméticas ou lógicas sobre os dados. Controle:Determinadas instruções podem especificar que a seqüência de execução de instruções seja alterada. Por exemplo, o processador pode buscar uma instrução na posição de memória de endereço 149, que especifica que a próxima instrução a ser executada é aquela contida na posição de memória de endereço 182. A execução dessa instrução consiste em armazenar o endereço 182 no PC. Assim, no próximo ciclo de busca, a instrução será obtida do endereço 182, e não do endereço 150. A execução de uma instrução pode envolver uma combinação dessas ações. Considere um exemplo simples, que utiliza uma máquina hipotética com as características abaixo. O processador possui apenas um registrador de armazenamento de dados, denominado acumular (AC). Instruções e dados têm, ambos, tamanho de 16 bits. É conveniente, portanto, organizar a memória em palavras de 16 bits. O formato das instruções contém 4 bits para o código de operação, podendo existir, assim, 2 4 = 16 códigos de operações distintos e até 2 12 = 4.096 (4K) palavras de memória que podem ser endereçadas diretamente.
0 3 4 15 Código da operação Endereço formato de instruções 0 1 15 S Magnitude formato de números inteiros Contador de programa (PC) endereço da próxima instrução Registrador de instruções (IR) instrução que está sendo executada Acumulador (AC) armazenamento temporário de dados Registradores internos da CPU 0001 carregar AC a partir do endereço de memória especificado 0010 armazenar o valor contido em AC no endereço de memória especificado 0101 acrescentar ao valor contido em AC o valor contido no endereço de memória especificado Lista parcial de códigos de operação Características de uma máquina hipotética O próximo exemplo ilustra a execução de um programa em nosso computador hipotético, mostrando as partes da memória e os registradores relevantes. O trecho do programa acrescenta o conteúdo da palavra de memória de endereço 940 ao conteúdo da palavra de memória de endereço 941 e armazena o resultado nesse último endereço. São necessários três instruções, que podem ser descritas em três ciclos de busca e de execução: 1 O conteúdo do PC é 300, o endereço da primeira instrução. Essa instrução é carregada dentro do registrador de instrução, IR. Note que esse processo envolve o uso do registrador de endereçamento à memória (MAR) e do registrador temporário de dados (MBR).Por simplicidade, esses registradores intermediários são ignorados. 2 Os quatro primeiros bits do IR indicam que um valor deve ser armazenado no registrador AC. Os 12 bits restantes especificam o endereço 940, de onde o valor deve obtido. 3 O PC é incrementado e a próxima é buscada. 4 O conteúdo de AC é somado com o conteúdo da posição de memória de endereço 941 e o resultado é armazenado em AC. 5 O PC é incrementado e a próxima instrução é buscada. 6 O conteúdo de AC é armazenado na posição de memória de endereço 941.
300 = 1940 300 PC 301 = 5941 Vazio AC 302 = 2941 1940 IR Passo1 300 = 1940 301 PC 301 = 5941 0003 AC 302 = 2941 5941 IR Passo 3 300 = 1940 302 PC 301 = 5941 0005 AC 302 = 2941 2941 IR Passo5 300 = 1940 301 PC 301 = 5941 0003 AC 302 = 2941 1940 IR Passo 2 300 = 1940 302 PC 301 = 5941 0005 AC 302 = 2941 5941 IR 3+2=5 Passo 4 300 = 1940 303 PC 301 = 5941 0005 AC 302 = 2941 2941 IR 941= 0005 Passo 6 Exercícios: Considere um outro exemplo, que utiliza uma máquina hipotética com as características abaixo. O processador possui apenas um registrador de armazenamento de dados, denominado acumular (AC). 1 O conteúdo de 300 e 14, o conteúdo de 301 e 09 e de 302 e 1959, o conteúdo de 940 é Marcio, o conteúdo de 941 é Ferreira, o conteúdo de 303 deve ser carregado com o mês atual, o conteúdo de 304 deve ser carregado com o ano atual. O conteúdo do PC é 304, o endereço da primeira instrução. Essa instrução é carregada dentro do registrador de instrução. 2 Os bits do IR indicam que um valor deve ser armazenado no registrador AC. 3 O PC é decrementado em 2 e a próxima é buscada.
4 O conteúdo de AC é subtraído com o conteúdo da posição de memória de PC o resultado é armazenado na posição 942. 5 O PC é incrementado e a próxima instrução é buscada. 6 O conteúdo de IR é armazenado em AC. 7 O PC e decrementado em 2 e a próxima instrução é buscada e armazenada em IR. 8 Caso o conteúdo de AC for menor que IR, então PC deve ser incrementado em 641 seu conteúdo armazenado em IR e colocado para AC onde o mesmo deverá ser subtraído de 1 e o resultado armazenado no registrador 942. 9 Exibir o conteúdo do registrador 940 10 Exibir o conteúdo do registrador 941 11 - Exibir o conteúdo do registrador 942