sexta-feira, 16 de maio de 2008

Componentes de um Computador e Arquiteturas Convencionais

Um computador típico possui três componentes básicos:

  • · Unidade Central de Processamento (UCP ou CPU, como é mais conhecida);
  • · Memória Principal e
  • · um sistema de Entrada e Saída.

A CPU exerce o controle do computador, sendo responsável pela busca (fetching) das instruções (as quais estão em seqüência), pela sua decodificação (ou interpretação) e execução.

A busca e a decodificação das instruções são realizadas pela Unidade de Controle, enquanto que a execução fica ao encargo da Unidade Operativa. A unidade operativa, por sua vez, é composta pela Unidade Lógica e Aritmética e por um conjunto de Registradores de uso genérico.

A Memória Principal armazena as instruções e os dados a serem processados pela CPU. O Sistema de Entrada e Saída (I/O - Input/Output system, em inglês) têm como função conectar o computador ao meio externo, a fim de torná-lo verdadeiramente útil ao ser humano.

Este sistema é composto por um meio físico de conexão chamado barramento (bus) e um conjunto de dispositivos de entrada e saída, chamados periféricos. Os periféricos geralmente são sistemas mistos, do tipo eletromecânicos, que permitem ao ser humano entrar com os dados ou obter ou visualizar os resultados. Exemplos de periféricos são teclado, vídeo, impressora, mouse, unidades de disco flexível (disquetes), unidades de disco rígido (winchester), unidades de fita magnética, modem, placa de som, scanner, vídeo touch-screen, plotter etc. Alguns periféricos permitem somente a entrada de dados (e.g., teclado), outros só permitem a saída (e.g., vídeo e impressora) e outros permitem tanto a entrada como a saída (e.g., unidades de discos magnéticos e unidades de fitas magnéticas). Associado a cada periférico existente num computador, há um circuito específico de controle de interface de E/S (I/O interface processor), cuja função é adaptar os sinais gerados pelo periférico conforme as necessidades do computador.A estrutura descrita nos últimos parágrafos é mostrada na figura 1.

As funções possíveis de serem executadas pela CPU estão definidas no seu conjunto de instruções. Um computador típico possui algo entre 50 e 200 instruções distintas. As instruções podem ser divididas em três grupos, conforme sua natureza [2]:

  • · Instruções de transferência de dados;
  • · Instruções de processamento de dados e
  • · Instruções de controle.

As instruções de transferência de dados apenas movem as informações, sem alterar seu conteúdo. As transferências podem ocorrer dentro da CPU, entre a CPU e a memória principal, entre algum periférico e a CPU ou entre algum periférico e a memória principal.

As instruções de processamento de dados transformam as informações utilizando os recursos de hardware disponíveis na unidade operativa da CPU. Neste grupo encontram-se as instruções aritméticas, tais como adição, subtração, multiplicação e incremento, e as instruções lógicas, tais como adição lógica (ou), multiplicação lógica (e), complementação (ou inversão) e ou-exclusivo.

Figura 1 - Diagrama de blocos de um computador com arquitetura convencional.

As instruções de controle determinam a seqüência segundo a qual as instruções são executadas, permitindo que o controle seja transferido de uma parte do programa para outra, ou entre diferentes subprogramas. Exemplos de instruções deste tipo são jump (salto), chamada de sub-rotina e retorno de sub-rotina.

A unidade de controle é responsável pelo controle do endereço da memória principal no qual estão armazenadas as instruções. Para tanto, existe um registrador especial, denominado contador de programa (program counter - PC), cuja função é armazenar o endereço no qual está armazenada a instrução que está sendo executada. Como normalmente as instruções são armazenadas e carregadas em seqüência, a operação mais comum realizada sobre o conteúdo do PC é o incremento (soma um). Na realidade, o PC é um registrador-contador. Adicionalmente, instruções de controle podem influenciar a seqüência de execução de um programa alterando o conteúdo do PC. Existem ainda outros registradores que facilitam o acesso a instruções e dados.

Por exemplo, uma região contínua da memória, denominada pilha (stack), é utilizada enquanto da transferência do controle do sistema (computador) entre subprogramas. O apontador de pilha

(stack pointer - SP), é um registrador usado no controle da posição de memória para colocar/retirar dados do topo da pilha.

A informação é armazenada, transferida e manipulada em grupos de bits chamados palavras. Num mesmo computador são empregadas palavras de tamanhos diferentes. A memória principal armazena palavras de um tamanho fixo, as quais recebem o nome específico de palavra de memória. Um tamanho típico para palavra de memória é 8 bits (1 byte). O tamanho da palavra utilizada para endereçar a memória depende do número de endereços disponíveis. Assim, para uma memória com 1024 endereços, por exemplo, o tamanho da palavra para endereçamento da memória será 10 (pois 210 = 1024). A palavra interna à CPU, por sua vez, geralmente tem tamanho distinto do das demais. Uma CPU projetada para trabalhar com n bits é dita ser um processador de n bits. Existem processadores de 1 a 64 bits (ou até mais). Nos computadores pessoais tipo IBM/PCcompatíveis, são empregados processadores de 16 e 32 bits, conforme o modelo.

O diagrama de blocos da figura 1 representa o modelo convencional de computador, também conhecido como modelo (ou arquitetura) de von Neumann, por ser descendente direto do computador desenvolvido em 1946 por von Neumann e sua equipe. A maior parte dos computadores ainda hoje apresentam traços desta arquitetura. Suas principais características são

[3]:

  • · Possuir uma unidade de processamento central, para a execução de operações lógicas e aritméticas;
  • · Possuir uma unidade de controle de programa, a qual determina o seqüenciamento das instruções a serem executadas por meio de sinais de controle;
  • · Instruções dos programas armazenadas de maneira seqüencial, facilitando sua busca;
  • · Existência de registradores dedicados ao armazenamento dos operandos e dos resultados das operações;
  • · Unidade de armazenamento central, na qual são guardados programas e dados, de forma compartilhada;
  • · Existência de um único barramento do sistema, o qual deve ser usado de forma compartilhada para a transferência de dados e instruções entre os diversos blocos.

Dentre todas as características, as duas últimas resultam em restrições severas para a tentativa de aumento do desempenho de computadores baseados no modelo de von Neumann. O fato de instruções e dados utilizarem o mesmo caminho para serem transferidos da memória principal para a CPU inviabiliza a possibilidade de se explorar o paralelismo de operações para acelerar o processamento. Levando-se em conta que os tempos de execução das instruções que envolvem apenas operações internas à CPU são muito menores do que o tempo necessário para transferências entre memória e CPU, caso fosse possível carregar instruções e dados ao mesmo tempo, o computador como um todo ficaria mais veloz. Porém, com um único barramento e um único bloco de memória, isto é impossível. Este problema é comumente referido como gargalo do modelo de von Neumann.

2 comentários:

Anônimo disse...

EDITE ISSO !

Rogério P C do Nascimento, PhD disse...

muito bem, garotos!

começaram atrasados, mas já começaram bem! não falo desse post extenso ;) mas dos variados posts que já puseram em pouco tempo..

bom caminho..

R

p.s. relamente nao recebi o aviso do comentario de voces.. vim checar no blogger e tive a grata satisfação de encontrar o blog nesse estado a meio caminho do alvo..