- A unidade central de processamento, ou CPU (central processing unit), responsável pela execução das instruções do programa;
- A memória, responsável pelo armazenamento tanto das instruções do programa (que traduzem o algoritmo de solução do problema) quanto dos dados (que servem de operandos para as instruções do programa);
- Os dispositivos de entrada e saída, ou dispositivos de I/O (input/output), responsáveis por traduzir os dados de algum meio externo (ex.: cartões perfurados e teclados) para o formato interno de armazenamento na memória, ou do formato interno da memória para um formato externo de armazenamento por longo período (ex.: fitas ou discos magnéticos) ou para um formato externo legível para seres humanos (ex.: telas de vídeo e impressoras).
- Unidade de controle, ou control unit, responsável pela interpretação das instruções do programa e pelo sequenciamento temporal das atividades necessárias para a sua execução;
- Unidade aritmética e lógica, ou ALU (arithmetical and logical unit), onde estão os circuitos eletrônicos para execução das operações unitárias aritméticas (somas, subtrações, etc.) e lógicas (comparações, AND, OR, etc.) sobre os operandos das instruções;
- Registradores, que são pequenas áreas de memória interna à CPU, que são usados para armazenamento temporário de operandos e resultados de instruções (registradores de uso geral ou general-purpose registers), e também para armazenar dados sobre o estado interno da CPU e sobre o programa em execução (registradores de controle ou control registers).
Desde o tempo das válvulas eletrônicas o esquema básico de construção e funcionamento dos computadores eletrônicos digitais é esse. Daí para a frente as melhorias foram principalmente nos elementos de construção física da máquina (ex.: a transição da válvula para o transistor, e do transistor discreto para circuitos integrados), a algumas coisinhas adicionais ao modelo básico.
Inicialmente toda transferência de dados entre CPU e memória e entre memória e dispositivos de I/O ocorria sobre um mesmo meio de comunicação: o barramento da máquina. O barramento normalmente é composto por dois conjuntos de vias de comunicação independentes. Um deles é usado para mensagens de controle (origem, destino e sentido da transferência de dados), e o outro para a transferência dos dados propriamente ditos. Cada via (controle e dados) é formada por n caminhos individuais, cada um com capacidade de transmitir um bit. e o conjunto dos caminhos na via transfere n bits (de controle ou de dados) em paralelo.
O número n para a via de dados é o tamanho da palavra de memória da máquina (o número de bits que podem ser transferidos entre memória e CPU em uma única operação). Coloquialmente nos referimos ao tamanho da palavra de memóriaquando falamos do "número de bits" do processador (8, 16, 32, 64 bits...). A figura abaixo representa esquematicamente um barramento com via de controle de 4 bits e via de dados de 8 bits.
Com o desenvolvimento da tecnologia dos processadores a diferença entre o tempo de acesso à memória pela CPU e o tempo de acesso à memória pelos dispositivos de I/O tornou-se um fator de limitação do desempenho da máquina. Então foi introduzido um novo barramento, apenas para a comunicação entre dispositivos de I/O e a memória. Finalmente, para permitir que o processador possa aproveitar o tempo ocioso durante a execução de operações de I/O (vamos entender melhor isso mais tarde), introduziram-se as controladoras de dispositivos, que tem uma "inteligência" local suficiente para efetuar toda a operação de transferência de dados entre a memória e os dispositivos de I/O controlados por ela sem depender do processador. Isto é conhecido como DMA (direct memory access).
À medida que os processadores ficavam ainda mais velozes, até mesmo a diferença de desempenho entre o chip do processador e os chips da memória tornou-se um fator de limitação da performance. Construir toda a memória com chips do mesmo nível de desempenho do processador seria muito caro. Mas, usando o princípio da localidade referencial, pode-se construir uma hierarquia de memória, onde o nível mais baixo (e mais lento) é a memória principal, o nível mais alto (e mais veloz) são os registradores da CPU, e níveis intermediarios, chamados de memórias cache, para compatibilizar as diferenças de desempenho entre os extremos. As máquinas modernas tipicamente usam uma memória cache em três níveis: o cache L1 (e, geralmente, também o cache L2) são incorporados no próprio chip do processador, e o cache L3 normalmente é um chip separado.
Então podemos agora desenhar um diagrama geral para uma máquina moderna baseada na arquitetura von Neumann.
No próximo post dessa série vamos analisar a estrutura das instruções de máquina e seus operandos
Nenhum comentário:
Postar um comentário