UCPs: Um apanhado geral para uma escolha inteligente - Parte I
Autor: Marco Vidal | Publicado: 2008-01-21T22:25:00-08:00

Como bem sabemos, a UCP (Unidade Central de Processamento) é um dos principais componentes da formação de um computador. É ela quem desempenha funções de, como o próprio nome diz, processamento de dados, o que inclui decodificações, cálculos aritméticos e toda espécie de cálculos lógicos, enfim, tudo o que o ser humano detesta fazer, encarregando a pobre máquina a fazer esse maçante trabalho.Por desempenhar tantas funções e por se tratar de uma das peças vitais da formação do computador, a UCP deve ser poderosa e eficiente para o que lhe foi destinado. Antigamente, muito se falava em medir o potencial de uma UCP analisando somente a freqüência de operação. Entretanto, com a tamanha diferenciação dos projetos de engenharia dos processadores atuais, um veredicto final analisando apenas esta característica seria no mínimo irresponsável, pois há muitos outros fatores que influenciam no desempenho.Tendo em vista que a quantidade de fatores na escolha de uma UCP é grande, este pequeno guia vem para auxiliar na observação desses fatores, ajudando a você, meu caro leitor, na escolha de uma UCP adequada às necessidades requeridas.1. ArquiteturaA arquitetura da UCP consiste na estrutura e no funcionamento dos componentes internos da UCP. Em uma definição mais prática, poderíamos dizer que é a característica mais importante, pois é ela quem determina o funcionamento da UCP, assim como determinadas aptidões de determinadas UCPs para certas tarefas e dificuldades para outras.A estrutura básica do processamento de instruções de uma UCP x86, isto é, o padrão vigente de arquiteturas dos atuais PCs, consiste nas seguintes unidades: Pipeline (a linha de produção que a instrução passa para ser executada), ALU (Arithmetic Logic Unit ou Unidade de Lógica Aritmética, usada na execução de operações aritméticas e lógicas), BPU (Branch Prediction Unit ou Unidade de Predição Sucursal, usada para antecipação de atitudes da UCP) e FPU (Floating Point Unit ou Unidade de Ponto Flutuante, usada na execução de operações matemáticas de daods representados em pontos flutuantes). Das unidades aqui destacadas, o que nos é mais relevante é o Pipeline e a FPU e por isso, são itens que terão mais atenção.1.1 PipelineO Pipeline, como já foi mencionado acima, é a linha de produção por onde a instrução passa. Ele é divido em estágios pelo quais a instrução é “montada” para que ela saia pronto ao término do mesmo, o que é feito em frações de segundo, sendo que após ter passado pelo primeiro estágio, esse já se encontra pronto para receber uma nova instrução para ser processada.Existe uma lógica para a dosagem de estágios de pipeline: Quanto mais estágios, mas simples eles serão, sendo que o contrário é válido.O acréscimo de estágios em quantidade de estágios de pipeline acresce também complexidade e mais transistores a UCP. Quanto mais simples são estágios, maior o potencial de escalabilidade de freqüências de operação, sendo que contrário é igualmente válido. A grande desvantagem de uma UCP com muitos estágios de pipeline ocorre em aplicações de natureza imprevisível (jogos, por exemplo), onde, supostamente, uma instrução pode vir a pegar um rumo incorreto em função de uma falha no recurso de predição, resultando no reinício do pipeline. Em uma comparação hipotética, supondo que fossem comparadas duas UCPs, tendo uma 15 estágios e outra, 25 estágios, a segunda sairia muito mais prejudicada em função de um erro dessa espécie, pois seriam 10 ciclos que teriam que ser refeitos adicionalmente em relação à primeira.Os principais fabricantes de UCPs, a Intel e a AMD, pareceram ter encontrado um valor bastante equilibrado de estágios para integração de seus UCPs, sendo que os processadores das arquiteturas K8 e K10 da AMD possuem 12 estágios de pipeline, enquanto que os processadores da arquitetura Core da Intel possuem 14 estágios estágios de pipeline.