O que é uma UCP

A UCP, acrónimo para Unidade Central de Processamento, é o Cérebro do computador. É aquele componente do computador que o faz ser diferente de uma qualquer máquina de calcular, ou mesmo de uma máquina de lavar.

E qual o porquê desta diferença?

A UCP é um Circuito Integrado (CI) que permite que o homem lhe confira diferentes comportamentos, através da programação. Esse CI dispõe de múltiplos circuitos lógicos no qual, pela introdução de sinais com os estados lógicos 0 ou 1, conseguimos criar combinações que resultam em determinados caminhos, as instruções, que se sucedem numa determinada sequência, formando no seu conjunto aquilo a que se chama um programa, que leva a UCP a executar uma determinada tarefa.

Para lidar com uma UCP é preciso saber como funciona e como podemos falar com ela. O 01beto da sua língua já conhecemos. Agora temos que formar palavras com ele, frases (instruções) com as palavras e finalmente textos (programas) com as frases. Foi precisamente com esse objetivo que iniciámos este trabalho. Facilitar o contacto com algo que é complexo, só que derivado da soma das mais elementares simplicidades.

Portanto, a UCP é um CI interativo, isto é, que interage com o meio que o envolve e com o homem. A UCP tem 3 componentes essenciais:

  • A ULA (Unidade de Lógica e Aritmética)
  • A Unidade de Controlo
  • Os Registadores

A ULA é a unidade que contém todos os circuitos lógicos e aritméticos do processador, os que já vimos quando tratámos de circuitos lógicos e muitos mais, tão mais complexos quanto a evolução da UCP.

A Unidade de Controlo é responsável pela emissão dos sinais de controle que fazem interligar os circuitos da forma desejada para que possam cumprir a sua tarefa. Ela é composta essencialmente por circuitos do tipo seleção e descodificação que vimos atrás. Descodificação das instruções que lhe chegam de uma forma composta e que têm que ser descodificada nos sinais que vão dar origem às operações essenciais que um a UCP conhece. Seleção através de MUX que acionam diferentes caminhos dentro dos circuitos da UCP de acordo com os bits de seleção, os sinais que lhes chegam vindos da descodificação das instruções.

Figura 7-1 Primeira abordagem, muito genérica a componentes da CPU e seus mais diretos colaboradores
Figura 1

Os Registadores são a memória interna da UCP, composta por Registos localizados no interior do seu núcleo, sendo o local onde a UCP memoriza temporariamente os dados e os endereços que necessita para a execução do programa. É a largura destes Registadores que define  o número de bits que a UCP consegue processar (p.e. 8, 16, 32, 64 bits).

Estes são as hospedarias que referimos quando falámos das Básculas, precisamente o local onde o conjunto de bits correspondente à largura de processamento da UCP esperam uns pelos outros ao fim de uma jornada de atividade.

A Figura 1 mostra uma composição muito básica de uma UCP, os caminhos de ligação com os mais próximos interlocutores e eles próprios, usando para isso termos que ainda não foram abordados:

  • O Núcleo da UCP.
  • O Chipset (Conjunto de chips), responsável pela comunicação entre a UCP e todos os periféricos.
  • A Memória Principal (MP) onde a UCP acede às instruções e aos dados de um programa em execução.
  • O FSB (Front Side Bus) ou Barramento Frontal constituído pelas linhas de comunicação com o Chipset, por onde circulam separados os dados, endereços e sinais de controlo.

Na arquitetura aqui desenhada a comunicação com a MP já é feita diretamente pelo Chip da UCP, que para isso contém o controlador de memória, aqui não evidenciado. Nas mais recentes arquiteturas também a comunicação com as placas gráficas já é gerida diretamente pelo Chip da UCP.

Estes componentes estão inseridos na Placa Mãe e por esta interligados. Desta trataremos já de seguida. Para o trabalho em que vamos entrar basta sabermos isto.

A UCP faz a única operação para que foi programada, um ciclo de busca, descodificação e execução. Mal se liga o interruptor do computador a UCP inicia um ciclo de busca, descodificação e execução feito ao endereço da memória que se encontra no ponteiro de instruções. Se nada estiver nesse endereço de memória a UCP continua indefinidamente o seu ciclo de busca, descodificação e execução com a frequência do clock e a esse endereço de memória, até que lhe seja cortada a alimentação ou o endereço de memória contido no ponteiro de instruções seja mudado. Mesmo quando acaba a execução de um programa a UCP continua no seu permanente ciclo de busca, descodificação e execução ao mesmo endereço de memória até que receba instruções em contrário. O Ponteiro de instruções é o nome dado ao Registador onde está sempre o próximo endereço de memória a que a busca será executada.

Portanto, a UCP procura na memória uma instrução para executar, descodifica-a, executa-a e volta a repetir o ciclo.

É aqui que nós, os humanos, entramos, elaborando programas que permitem o seu funcionamento como pretendido. Porque a  UCP vive em íntima ligação com a memória, vamos fazer uma ligeira abordagem à mesma.

A Memória do computador

Tipos de memória

A memória do computador divide-se em três tipos:

  • Memória primária, composta pelos Registadores, pela Cache e pela Memória Principal (MP).
  • Memória secundária, composta pelos dispositivos de armazenamento de massa, como os Discos Rígidos ou HDD (Hard Disc Drive).
  • Memória terciária, também composta por dispositivos de armazenamento de massa, como discos óticos (CD, DVD ou BRD), disquetes ou gravadores de fita magnética.

A distinção entre as memórias secundárias e terciárias, consiste na disponibilidade dos respetivos mídia:

  • Na secundária esses mídia estão sempre disponíveis sem a necessidade de intervenção humana.
  • Na terciária é necessária a intervenção humana, para a introdução desses mídia nos dispositivos.

A memória primária é um tipo de memória volátil, i.e. a manutenção dos seus registos depende do facto de ser eletricamente alimentada perdendo-os na totalidade quando a mesma lhe é cortada, divide-se em dois tipos, conforme a sua construção:

  • As memórias estáticas ou SRAM (Static Random Access Memory), cujas células são constituídas por circuitos lógicos. Este é o tipo de memória aplicado nos Registadores e nas Memórias Cache.
  • As memórias dinâmicas ou DRAM (Dinamic Random Access Memory), cujas células são constituídas por um condensador que armazena ou não energia elétrica, correspondendo aos valores lógicos 1 ou 0 respetivamente. Este é o tipo de memória usado na Memória Principal  (MP).

O termo dinâmica traduz o facto de este tipo de memória necessitar de constante refrescamento. Tal como um balde de água roto, o condensador perde rapidamente a sua carga pelo que é necessário estar sempre a recuperar o seu estado. A isto chama-se refrescamento, o que no caso do condensador é feito milhares de vezes por segundo.

O termo estática significa precisamente isso, que é estática e não necessita de refrescamento, pois a sua memorização encontra-se na saída de circuitos lógicos como aqueles que vimos antes (Básculas para os Registadores e Trincos para a Cache), que não dependem de qualquer armazenamento mas simplesmente de uma determinada combinação na forma de ligação dos seus transístores.

A memória secundária é uma memória do tipo persistente, i.e. não depende de nenhuma forma de alimentação para preservar os seus registos, é predominantemente composta por registo magnético feito nos HDD. Mais recentemente os SSD (Solid State Drive), constituídos por memória flash, um tipo de memória estática e persistente, estão crescendo em utilização devido ao muito mais rápido acesso às suas posições de memória e ao seu comportamento não eletromecânico. Devido ao mais elevado custo e menor capacidade de armazenamento dos SSD, o grande armazenamento continua a ser um privilégio dos discos magnéticos (HDD).

A memória terciária, também uma memória do tipo persistente, é compostas por formas de registo óticas, caso dos CD (Compact Disc), dos DVD (Digital Video Disc) e dos BD (Blu-ray Disc). As formas terciárias de registo magnético são essencialmente compostas por HDD amovíveis, pois as Disquetes estão praticamente abandonadas e as Tapes, usadas no Backup de grandes quantidades de dados, estão a ser substituídas pelos HDD.

Para que serve cada memória

A Memória Principal (MP)

do computador é o local onde são colocadas as instruções de um programa que esteja em execução, assim como os dados que ao mesmo são necessários. A MP é o grande espaço de armazenamento de acesso rápido utilizado pelo processador, que atualmente pode ser composta por muitos bilhões de células. Vamos definir como célula da MP a menor unidade de armazenamento, isto é, o bit, que só pode conter o valor 1 ou 0. No entanto, porque o acesso à memória nunca é feito a quantidades inferiores a um Byte (8 bits) designa-se por vezes por célula a porção de memória composta por 1 Byte. Para evitarmos confusões vamos definir o Byte como o conteúdo de uma posição da MP  definida pelo seu endereço. Tal até é fácil de entender se lembrarmos que o acesso à memória é sempre referenciado ao Byte.

Mas o tipo de memória que constitui a MP não suporta frequências de vibração idênticas à UCP e para além desse facto tem latências elevadas entre acessos, o que faz com  que a UCP tenha que aguardar muito tempo, por relação com o seu ritmo de trabalho, de cada vez que precisa de um valor da MP.

A Memória Cache

foi criada para reduzir este tempo de espera de forma muito significativa e foi interposta entre a UCP e a MP. Vamos considerar neste trabalho a existência de dois níveis de Cache.  A Cache de nível 1 (L1) e a Cache de nível 2 (L2).

Os dados em registo nas caches são uma cópia dos dados recolhidos na MP de acordo com um elaborado algoritmo estatístico. Os dados guardados na L1, podem ou não estar repetidos na L2. Para a UCP só existe a L1. Quando a UCP fala com a a memória é à L1 que se dirige.

Sempre que um valor procurado pela UCP é encontrado na Cache, temos aquilo que se designa por Cache Hit. O Hit Racio (taxa de acerto) atualmente conseguido  já supera, de acordo com estudos estatísticos, os 95% e com tendência para melhorar com as mais recentes UCP, tal a complexidade dos algoritmos de carregamento de registos da MP para a cache, o aumento da dimensão desta e o esforço dos compiladores de programas para se ajustarem aos parâmetros base que os mesmos programas seguem.

Admitindo por exemplo que o acesso à MP é de 50 ns e à Cache é de 2 ns, com um Hit Racio de 95% resulta um valor médio de tempo de acesso à memória de 4,4 ns o que reduz os tempos de acesso da UCP à memória em 91,2%. Penso que não precisamos dizer mais para explicar a importância da Cache no aumento da performance da UCP.

Desde a construção da UCP do Pentium da Intel que as Cache L1 estão separadas em dois blocos:

  • a memória de dados e
  • a memória de instruções,

o que tem o fim de criar ao processador a ilusão de que dispõe de 2 memórias separadas. A partir da L1 a memória é só uma, juntando dados e instruções, de acordo com a arquitetura de Von Neuhman.

A arquitetura de Von Neuhman, que ainda é usada nos computadores atuais, veio há muitos anos acabar com a separação das memórias de dados e de instruções, pois essa separação gerava situações em que frequentemente faltava espaço para instruções e sobrava espaço para dados ou vice-versa. Não havendo separação, o espaço é sempre aproveitado na totalidade e distribuído de acordo com as necessidades de dados e instruções.

No entanto a performance da UCP é muito melhorada com a introdução do conceito da arquitetura de Harvard, que consiste na separação das duas memórias. Nesta situação, a UCP pode aceder em simultâneo à memória de instruções e à memória de dados, simplificando as instruções e evitando a competição que se gerava no acesso à memória pela unidade de controlo, para instruções e dados.

A estratégia de criar duas caches L1 separadas para dados e instruções, sendo os níveis superiores integrados, veio resolver essa situação. A UCP fala com a L1 como se dispusesse de duas memórias separadas, mas na realidade só tem uma.

Em resumo, a Memória Cache é uma memória muito mais rápida do que a MP que, integrada entre a UCP e a MP, consegue melhorar em muito a performance da UCP.

Os Registadores

estão no topo da hierarquia das memórias, constituídos por circuitos lógicos, concretamente Registos iguais aos que já analisámos. Encontram-se dentro do núcleo da UCP que os usa para alocação temporária dos  dados e endereços com que executa o programa. São sempre em pequeno número, devido ao local onde se encontram e à sua elevada densidade em transístores por célula de memória. É essa mesma densidade de transístores que torna economicamente inviável a sua utilização em memórias de maior dimensão.

Eles são a ferramenta de que a UCP dispõe para se assegurar que as informações que circulam num circuito de computador estão organizadas e sincronizadas, por forma a que num dado instante possa congelar uma determinada configuração de bits e processá-la.

A Memória Secundária,

persistente, é onde estão guardados todos os programas e dados necessários ao funcionamento do computador. É verdadeiramente esta a grande Memória do computador.

Em conclusão

Figura-7-3
Figura 3

Ao que acabámos de descrever chama-se a hierarquia das memórias de um computador, que evoluem em dimensão na relação inversamente proporcional ao preço e diretamente proporcional aos tempos de acesso. Permitimo-nos concluir de uma forma simbólica que:

a MP é uma cache do HDD, a Memória Cache é a cache da MP e os Registadores são a memória de operação da UCP.

A Figura 3 mostra um melhor detalhe do que se passa dentro do chip da UCP, onde a MMU aparece como responsável pelo acesso à memória para além da L1. É à MMU (Memory Management Unit ou Unidade de Gestão de Memória) que compete gerir o complexo processo de acesso à memória por parte da UCP. A forma como o acesso da UCP à Memória é totalmente gerido pela MMU, como evoluíram as conexões diretas a partir do chip da UCP a outros componentes e mesmo como evoluíram esses componentes, serão temas a tratar separadamente e com o devido pormenor, tal como a MP e a Cache. Lá iremos em devido tempo e com o devido pormenor em Capítulos próprios.

Para já e porque é da UCP que estamos a tratar, ficamos assim, pois para o nosso objetivo basta. Mas antes de avançarmos mais dois conceitos importantes para o que se segue.

Endereço

O Endereço refere-se ao local da MP onde se encontra guardado um determinado valor.

De que interessaria guardar um valor numa memória com bilhões de posições se não registássemos o local onde o guardamos? Seria o mesmo que não o guardar.

Por essa razão o endereço é parte integrante de qualquer referência a um valor guardado na MP. A UCP referencia mesmo esses valores pelo seu endereço, não pelo seu valor.

A capacidade de endereçamento de uma UCP é definida pela largura dos Registadores (o tamanho da palavra) e define a dimensão máxima endereçável da MP.

No nosso imaginário a MP terá sempre as suas posições organizadas numa pilha, como se pode ver na Figura 2, cada posição sendo definida por uma numeração sequencial começando em 0.

DMA

O DMA (Direct Memory Access) referido na Figura 3, é responsável pela comunicação direta entre o HDD e a MP, através da MMU. Um tema que será abordado quando falarmos de Sistemas Operativos. Para já é de reter que a comunicação entre o HDD e a MP é feita normalmente sem o envolvimento direto da UCP, deixando-a livre para se ocupar de outras tarefas.

Também a comunicação com outros periféricos de uso intensivo de memória, como placas gráficas por exemplo, beneficiam de DMA.