1 2 – Revisão de Hardware 2.1 – Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 – Sistema Computacional – Hardware 2.1.1 – Processador O Processador ou CPU (Central Unit Processor – Unidade Central de Processamento) é o principal responsável pelo funcionamento do computador. A função do processador é executar os programas que estão na memória principal. Figura 2.2 – Processador 2 O processador é constituído por unidade de controle, unidade lógica e aritmética e registradores. A unidade de controle (UC) é a responsável por todas as atividades do computador, é ela quem faz o gerenciamento dos dispositivos. A unidade lógica e aritmética (ULA) é a responsável pelas operações lógicas, como fazer as comparações, verdadeiro ou falso, etc. e por fazer as operações matemáticas. Os registradores têm a função de armazenar dados temporariamente, funciona como uma memória interna do processador, de alta velocidade, mas com baixa capacidade de armazenamento. O número de registradores varia de acordo com cada processador. Alguns registradores podem ser manipulados diretamente, enquanto alguns têm como função armazenar informações relativas ao sistema operacional, entre eles: - Contador de Instruções (CI) ou Program Counter (PC) – esse registrador tem como função básica armazenar o endereço da próxima instrução a ser executada pelo processador. Quando essa instrução for executada, esse registrador é atualizado com o endereço da nova instrução. - Apontador de Pilha (AP) ou Stack Pointer (SP) – armazena o endereço de memória do topo da pilha onde o sistema mantém informações sobre os programas que estavam em execução e foram interrompidos - Registrador de status ou Program Status Word(PSW) – armazena informações sobre o status da execução das instruções para possíveis detecções de problemas. 2.1.1.1 – Pipeline Pipeline é uma técnica que consiste em dividir o processador em vários estágios, sendo cada estágio responsável por apenas uma parte da instrução a ser executada como a busca de um dado na memória principal ou a cálculo de uma operação de soma. 3 Assim, era possível ter vários processos dividindo o processador, sendo que cada processo estaria em um estágio diferente dentro do pipeline, gerando um ganho de desempenho considerável. Complementando, pipelining é uma técnica que permite ao processador executar múltiplas tarefas paralelamente em estágios diferentes, também chamados de paralelização de processos. Neste conceito, uma tarefa é divida em várias subtarefas e são executadas pelo processador sequencialmente. É uma técnica muito utilizada para aumentar o desempenho de sistemas computacionais. Figura 2.3 - Pipeline 4 2.1.2 – Memória Principal A memória principal, também conhecida como memória primária ou memória RAM, é onde ficam armazenados os programas para serem executados. Nenhum programa pode ser executado sem que esteja na memória principal. Figura 2.4 – Memória Principal ou Memória RAM A memória é composta por módulos de acesso que são chamados de células, sendo cada célula composta por um determinado número de bits ou bytes. O acesso a cada célula da memória é feito através de um endereço, que é representado em hexadecimal e cada endereço de memória é único. Para especificar o endereço de memória utiliza-se um registrador chamado Registrador de Endereço de Memória (Memory Access Register - MAR). Outro registrador usado em operações com a memória e o Registrador de Dados da Memória (Memory Buffer Register – MBR), que é usado pra guardar o conteúdo de uma célula. 5 O número de células endereçadas da memória principal é limitado pelo tamanho do Registrador de Endereço de Memória. Se a memória possuir n bits, a memória poderá endereçar 2n células, começando no endereço 0 até o endereço (2n – 1). A memória pode ser classificada de acordo com a sua volatilidade, sendo as do tipo RAM (Random Access Memory) voláteis, e as do tipo ROM (Read Only Memory) e EPROM (Erasable Programmable ROM) não voláteis. Abaixo uma demonstração passo a passo de como seriam as operações de leitura e gravação na memória principal. Operação de Leitura Operação de Gravação 1 – O processador solicita no registrador 1 – O processador armazena no de endereço de memória o endereço da registrador de endereço de memória o célula a ser lida endereço da célula a ser gravada 2 – Então, o processador manda um 2 – O processador armazena no sinal para a memória solicitando a registrador de dados o que será gravado leitura de uma célula. na célula anteriormente endereçada 3 – O conteúdo da célula é então lido e 3 – Então, o processador manda um transferido para o Registrador de Dados sinal da Memória para a memória principal solicitando uma operação de gravação 4 – O conteúdo do registrador é então 4 – Os dados contidos no registrador de transferido para um registrador interno dados da memória são transferidos para do processador a memória principal 2.2.3 – Memória Cache A memória cache é volátil e de alta velocidade, porém com capacidade de armazenamento bastante reduzido se comparado com a memória principal, devido aos altos custos de produção deste tipo de memória. O tempo de acesso aos 6 dados na memória cache é menor se comparado à memória principal. A idéia de utilizar a memória cache é para diminuir a diferença de tempo entre a velocidade do processador e a velocidade da memória. Figura 2.5 – Memória cache A memória cache armazena uma pequena parte do que esta na memória principal. Quando o processador necessita de algum dado, antes de verificar se este está na memória principal ele verifica antes na memória cache e caso encontre, não há a necessidade de verificar a memória principal, o que torna o processo mais rápido, esse processo é chamado de cache hit. Caso o dado não esteja na cache, o processador então verificar a memória e já transfere uma parte desse bloco para a memória cache, esse processo é conhecido como cache miss. 2.2.4 – Memória Secundária A memória secundária é uma memória não-volátil e é usada para armazenamento permanente de dados e programas. A velocidade de acesso a memória secundária é lenta se comparada à memória RAM, mas a capacidade de armazenamento é infinitamente maior. Exemplos de memória secundária são o HD, fitas magnéticas, flash drives, etc. 7 Figura 2.6 – Exemplos de dispositivos de memória secundária O desempenho entre os tipos de memórias apresentados é inversamente proporcional à capacidade de armazenamento da mesma, ou seja, quanto mais rápida for a memória, menor será o a capacidade de armazenamento e vice-versa. Abaixo um esquema que mostra essa relação. Figura 2.7 – Relação Memória – Velocidade de Acesso x Capacidade de Armazenamento 8 2.2.5 – Dispositivos de Entrada/Saída Os dispositivos de entrada/saída são divididos em duas categorias: os que fazem as operações de leitura/gravação de dados, como a memória secundária e os que fazem a interface homem-máquina, como o monitor de vídeo, teclado, mouse e etc. Figura 2.8 – Dispositivos de Entrada/Saída 2.2.6 – Barramento O barramento ou bus é o meio físico de comunicação entre os componentes do computador. Um barramento possui linhas de controle e linhas de dados. Nas linhas de controle trafegam informações de sinalização, como o tipo de operação que esta sendo realizada, como um pedido de leitura da memória, por exemplo. Nas linhas de dados, trafegam informações como instruções, endereço, etc. 9 Os barramentos são classificados em três tipos: barramentos processadormemória, barramentos de entrada/saída e barramentos de backplane. Os barramentos processador-memória, como o Hyper Transport da AMD e o Front Side Bus da Intel, são pequenos e de alta velocidade, em virtude do trafego de informações entre o processador e a memória. Os barramentos de Entrada/Saída são maiores e mais lentos que os barramentos processador-memória, mas permitem a conexão com diversos dispositivos. Os barramentos de entrada e saída estão conectados diretamente ao barramento processador-memória. Os barramentos de backplane são utilizados em sistemas de alto desempenho, onde, os barramentos de entrada/saída não se comunicam diretamente com o barramento processador memória, quem faz essa ligação é o barramento de backplane. Isso faz com que haja menos adaptadores no barramento processador-memória. Figura 2.9 - Barramento 2.2.7 – Arquitetura RISC e CISC A linguagem de máquina é a única que o processador realmente entende e consegue executar. Um programa escrito em linguagem de máquina pode ser 10 diretamente executado pelo processador. Cada processador tem uma arquitetura específica, mas um programa escrito em linguagem de máquina para um determinado processador pode ser executado somente naquele processador. Em uma arquitetura RISC (Reduced Instruction Set Computer) o processador possui poucas instruções e essas instruções são executadas diretamente pelo hardware, enquanto que em uma arquitetura CISC (Complex Instruction Set Computer) o processador possui muitas instruções no seu núcleo e essas instruções são executadas por microprogramas que são executadas pelo hardware. Figura 2.10 - Processador que usa arquitetura CISC Figura 2.11 - Processador que usa arquitetura RISC