INTRODUÇÃO A UM COMPUTADOR SIMPLES AULA 06 – Arquitetura de Computadores Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro “Princípios Básicos de Arquitetura e Organização de Computadores” – Linda Null e Julia Labur. Introdução – Organização e Componentes básicos da UCP Pelos estudos efetuados anteriormente sabemos que os dados manipulados dentro de um computador são codificados em números binários. Vimos ainda que a memória é utilizada para armazenar as instruções dos programas (também em binário). O programa deve ser executado e os dados processados corretamente, para isso, a Unidade Central de Processamento é responsável por carregar instruções de programas, decodificar cada instrução e realizar a sequência indicada de operações sobre os dados corretos. Todos os computadores possuem uma UCP que pode ser dividida em duas partes. A primeira é o caminho de dados (datapath), que é uma rede de unidades de armazenamento (registradores) e de unidades aritméticas e lógica (para executar diversas operações sobre dados) que estão conectados por barramentos (capazes de mover dados de um lugar para o outro) em que o ritmo é controlado por relógio. A segunda parte da UCP é a unidade de controle, módulo responsável por sequenciar operações e assegurar que os dados corretos estão onde eles devem estar no momento correto. Juntos estes componentes realizam as tarefas da UCP: carregar instruções, decodificá-las e realizar a sequência indicada de operações. Os Registradores São usados para armazenamento de uma grande variedade de dados, tais como endereços de memória, contadores de programa ou dados necessários para a execução do mesmo. Mais simplesmente o resgistrador é um dispositivo de hardware que armazena dados binários. Tem como grande vantagem estarem localizados no processador, permitindo que a informação seja acessada de forma muito rápida. Circuitos lógicos denominados flip-flops são utilizados para implementação de registradores. Um flip-flop “D”, por exemplo, equivale a um registrador de apenas 1 bit, e, assim, com uma coleção deles é possível construir registradores para armazenar vários bits. Registradores devem ser controlados por um relógio para trabalharem de forma síncrona, a cada pulso do relógio, a entrada vai para o registrador, sendo armazenada, como mostra o circuito abaixo. O dado só será alterado novamente quando houver um novo pulso do relógio. Figura 01: Estrutura de um flip-flop “D”. Em sistemas de computação modernos existem muitos tipos de registradores especializados: registradores para armazenamento de informação, registradores para comparar valores, registradores temporários (armazenam valores temporários) e registradores de contagem. A maioria dos computadores possui conjuntos de registradores, e cada conjunto é usado de uma maneira específica. Como exemplo podemos citar a arquitetura Pentium que possui um conjunto de registradores de dados e um conjunto de registradores de endereços. A ULA – Unidade Lógica Aritmética A unidade lógica aritmética se encarrega das operações lógicas (tais como comparações) e das operações aritméticas (tais como adição ou multiplicação) requeridas durante a execução do programa. Normalmente uma ULA possui duas entradas e uma saída de dados. A ULA sabe quais operações deve efetuar porque é controlada por sinais da unidade de controle. A Unidade de Controle (UC) A unidade de controle é quem “policia” ou “gerencia” a UCP. Ela monitora a execução de todas as instruções e a transferência de todas as informações. A UCP extrai instruções da memória, as decodifica, assegura que os dados estão no lugar certo e no momento correto, informa a ULA quais registradores usar, atende as interrupções e ativa o circuito apropriado da ULA para executar a operação desejada. A unidade de controle utiliza um contador de programa para encontrar a próxima instrução para execução. O Barramento A UCP se comunica com os outros componentes via barramento. Um barramento é um conjunto de fios que atuam como um caminho de dados comum, porém compartilhado, para conectar vários subsistemas dentro do computador. Barramentos têm baixo custo, mas são bem versáteis e facilitam a conexão de um novo dispositivo com o sistema. Em um dado instante apenas um dispositivo (seja ULA, a memória ou qualquer outro componente) pode usar o barramento, e por esse compartilhamento muitas vezes temos como resultado o congestionamento de comunicações. A velocidade do barramento é afetada pelo seu comprimento. Dispositivos também podem ser divididos nas categorias mestre (master) e escravo (slave), onde o dispositivo mestre inicia as ações e o dispositivo escravo responde a requisições de um mestre. Abaixo são apresentados tipos de barramento: o ponto-a-ponto que conecta dois dispositivos específicos e o caminho comum que conecta diversos dispositivos, requerendo que estes dispositivos compartilhem o barramento, chamado de multiponto. O barramento é formado por linhas de dados que são utilizadas para transferência dos dados reais que devem ser movidos, pelas linhas de controle que informam qual dispositivo tem permissão para usar o barramento e qual sua finalidade do uso, pelas linhas de endereços que indicam a posição em que o dado deve ser lido ou escrito e as linhas de energia que fornecem a energia elétrica necessária para o seu funcionamento. Figura 02: Barramentos ponto-a-ponto Figura 03: Barramentos compartilhados. Tipos de transações típicas em barramentos incluem enviar um endereço (para leitura ou escrita), transferir dados da memória para um registrador (leitura de memória) e transferir dados de um registrador para memória (escrita na memória). Além disso, barramentos são usados para leituras e escritas de dispositivos de E/S ou periféricos. Figura 04: Componentes de um barramento. Tipos de Barramentos Existem diferentes tipos de barramentos, de acordo com as informações que transportam e os dispositivos que os usam. Os Barramentos processador-memória são curtos e de alta velocidade, fortemente associados a um sistema de memória na máquina para maximizar a largura de banda (transferência de dados). Os Barramentos de E/S geralmente são mais longos que os de processador-memória e admitem muito mais tipos de dispositivos com largura de banda variáveis. Os Barramentos externos ou de expansão que conectam dispositivos externos, periféricos e portas de E/S ao restante do computador. Relógios Os computadores possuem um relógio interno que regula quão rapidamente as instruções podem ser executadas. Este relógio também tem a tarefa de sincronizar todos os componentes do sistema. A Unidade Central de Processamento (UCP) utiliza este relógio para regular o seu progresso. A frequência do relógio (pulsos de clock) é medida em megahertz (Mhz) ou gigahertz (Ghz). Parece óbvio concluir que quanto maior a velocidade do relógio maior será a velocidade do computador, entretanto há um limite para isso, visto que quando o relógio pulsa novos dados são carregados nos registradores, e sua saída vai mudar, esses valores devem ser propagados ao restante dos circuitos da máquina, sendo assim o ciclo do relógio deve ser suficientemente longo para permitir que essas alterações alcancem o restante dos circuitos. Quando falamos em overclocking estamos nos referindo a tentativa de melhorar a performance do sistema através da alteração da velocidade do relógio da UCP fazendo com que ela trabalhe acima do limite superior especificado pelo fabricante. Embora isso possa aumentar o rendimento do sistema, pode também criar falhas de temporização nele, ou ainda pior, superaquecer a UCP. O Subsistema de Entrada e Saída Dispositivos de Entrada e Saída nos permitem a comunicação com o sistema de computação. E/S é a transferência de dados entre a memória primária e os diversos periféricos de E/S. Dispositivo de entrada e saída tais como teclados, mouses, leitoras de cartões, scanners, sistemas de reconhecimento de voz e telas sensíveis ao toque nos permitem fornecer dados ao computador. Já dispositivos de saída como monitores, impressoras e alto-falantes nos permitem obter informações do computador. Estes dispositivos não são conectados diretamente a uma UCP, ao invés disso há uma interface que trata a transferência de dados. A comunicação acontece através do mapeamento de dispositivos de entrada e saída na memória do computador, de acordo com a escrita/leitura dessa área o computador e o dispositivos de E/S se comunicam. As interrupções desempenham um papel importante na E/S, porque elas são uma maneira eficiente de notificar a UCP sobre qual entrada ou saída está disponível para uso. Interrupções Alguns eventos são necessário para alterar o fluxo normal de execução no sistema, a este evento damos o nome de interrupção. Uma interrupção pode ser disparada por diversas razões, incluindo: → Requisições de E/S → Erros Aritméticos (divisões por 0) → Mau funcionamento do hardware → Pontos de parada definidos pelo usuário (depuração de programas) → Instruções Inválidas (geralmente, problemas com ponteiros) As ações executadas por cada um desses tipos de interrupções (chamadas de tratamento de interrupções) são muito diferentes. Informar a UCP, por exemplo, que uma requisição de E/S terminou é muito diferente de terminar um programa devido uma divisão por 0, porém ambas as a ações são manipuladas por interrupções porque elas exigem uma mudança do fluxo normal de execução do programa.