Arquitetura de Microprocessadores - Parte 4 by Raquel Saraiva - issuu
Conteúdos 
Memória cache: – L1 (Cache nível 1); – L2 (Cache nível 2); – L3 (Cache nível 3).
Técnicas de processamento paralelo;
Processadores de vários núcleos.
 Os processadores estão
continuamente a elevar a sua velocidade de relógio interno (lei de Moore) e os componentes deixaram de acompanhar essa evolução;  Assim
o acesso à RAM tornou-se lento de mais, atrasando o trabalho do processador;  Para esse efeito, desenvolveu-se uma solução baseada em buffers chamada memória cache.
Trata-se de uma memória de alta velocidade que permite guardar pequenas quantidades de dados, que terão maior probabilidade de vir a ser necessárias ao CPU.
Esta memória é acedida antes de se procurar (fetch) a instrução na memória principal RAM, através do que se denomina por unidade de prefetch;  Pretende-se assim, conseguir evitar ao máximo o recurso à memória RAM que torna o processo mais lento. 
 Existem três tipos de memória cache:
– L1 – Cache de nível 1 (Level 1); – L2 – Cache de nível 2 (Level 2); – L3 – Cache de nível 3 (Level 3);
Memória cache L1
 A cache L1 foi integrada num
microprocessador pela primeira vez com o Intel 486 DX;  Todas as caches L1 possuem uma capacidade muito reduzida (desde 4 KB a 64 KB);  O seu grande objetivo é serem rápidas;  A cache L1 encontra-se integrada no próprio CPU, pelo que consegue acompanhar a sua velocidade interna, não dependendo da velocidade do BUS, como acontece no acesso à memória RAM.
memória cache L1 parece inteligente, pois prevê o tipo de informação que o CPU irá necessitar, pela regularidade com que determinada informação é usada e consultada;  Normalmente 90% das vezes (cache hit rate – taxa de sucesso) o CPU irá encontrar o que necessita na memória cache, aumentando assim, a performance do sistema;  Quando a informação pedida é diferente do habitual existirá uma falha de cache (cache miss) sendo necessário recorrer à memória principal (ou L2, L3).
memória cache L2 foi desenvolvido para os 10% de vezes que o processador não encontrava a informação pretendida na memória cache L1;  Inicialmente estas caches eram externas, a sua velocidade de acesso dependia da velocidade do BUS.
 Atualmente
este tipo de caches encontra-se integrada no próprio microprocessador, tal como a caches L1, funcionando as duas à mesma velocidade (velocidade do relógio interno), reduzindo assim ainda mais o tempo de pesquisa;  Esta cache possui maior capacidade, geralmente 256 KB, uma vez que é menos vezes acedida;  Garante igualmente que 90% das vezes, a informação procurada pelo CPU estará presente no seu conteúdo.
Memória cache L3
memória cache L3 está a ser cada vez mais utilizada principalmente devido às recentes arquiteturas de processadores que envolvem vários núcleos de processamento;  Estes núcleos geralmente partilham a memória cache L3 que é a de maior capacidade de todos, possui geralmente entre 4 a 8 MB;  Também esta cache se encontra integrada no microprocessador.
Memórias cache CPU Núcleo 1
 Um processador com um único
núcleo só realiza um processo de cada vez, o que significa quase sempre subaproveitamento, assim, novas técnicas tiveram de emergir para o rentabilizar.  Uma dessas técnicas é o paralelismo:
– Como o processador executa cada programa de forma sequencial (passo a passo), quando existem duas instruções, que não têm dependência entre si, torna-se vantajoso que ambas sejam realizadas em simultâneo "em paralelo".
 A primeira abordagem chamou-se pipelining:  Este
método permite ao processador não necessitar de esperar o término de uma instrução para iniciar o processamento de uma nova, por exemplo: – Duas instruções sequenciais (X+Y) e (Z+K) em nada dependem uma da outra; – Antes da introdução dos processadores X86 os processadores começavam por somar (X+Y) e depois somavam (Z+K).
Com aplicação da tecnologia de pipelining foi possível atender a mais de uma instrução em simultâneo (dependendo do número de estágios envolvidos). CPU sem
pipelining X+Y
CPU com pipelining
Estágio 1 X+Y
Estágio 2 Z+K
Z+K 
É no ciclo fetch-decode-execute (procura-descodificaexecuta) que residem as grandes diferenças entre um CPU com e sem pipelining.
Técnicas de processamento paralelo Tempo
 Num
processador sem pipelining as instruções são atendidas sequencialmente;  A segunda instrução só é atendida quando a primeira termina a execução.
Decode Segunda instrução
processador com pipelining as instruções são executadas em menos ciclos do que a abordagem sem pipelining, isso deve-se ao paralelismo de atendimento das instruções;  Se existisse uma terceira instrução num terceiro estágio de pipelining, começaria a ser processada no terceiro ciclo juntamente com a fase de execução (da 1ª instrução) e descodificação (2ª instrução);  Assim seria possível realizar uma instrução por cada ciclo aumentando a velocidade de processamento (throughput).
Estágio 2 Estágio 3
Decode Terceira instrução
 Quanto
mais estágios de pipeline maior o número de instruções podem ser atendidas em simultâneo desde que estas sejam distribuídas pelo mesmo número de estágios;  Em vez de uma instrução partida em 3 partes (fetch-decode-execute) temos uma instrução dividida em várias partes;  Passando, por cada vez menos, tempo de relógio em cada parte da instrução (apesar do tempo total ser o mesmo).
Virtualmente o número de instruções a serem processadas em paralelo tende para infinito;  Isto aumentaria a velocidade de processamento (throughput) num fator igual ao número de estágios (chamado de profundidade de pipeline ou pipeline deep). 
Pentium 4 Prescot contava com 31 pipelines;  Mas no processador seguinte optou-se por baixar esse número.
um lado, este tipo de tecnologia levava o processador a consumir cada vez mais energia;
outro lado, tornava-se difícil sincronizar todos estes estágios entre si, já que as fases em que eram divididas as instruções não gastavam o mesmo tempo a processar: – Exemplo: o tempo de execução é mais longo que o tempo de procura na memória.
 Estes
tempos de inatividade (pipelining stall) levaram ao abaixamento do número de estágios de pipelining;  A profundidade era também um inconveniente quando algo corria mal, sendo necessário esvaziar (flush) o conteúdo do pipeline que demorava tanto ou mais tempo quanto o número de estágios;  Nos microprocessadores atuais o número de estágios baixou, situando-se entre 10 e 20.
 Outra
técnica implementada para aumentar o rendimento de um processador foi o Hyper-threading (HT), o primeiro processador a usar esta técnica foi o Pentium IV HT.
 Basicamente
o Hyper-threading permite dividir um processador físico em dois processadores lógicos, que aos olhos do SO passa a ser visto como um processador de dois núcleos (dual core).
o Hyper-threading, o mesmo programa é dividido em threads que são tratados em simultâneo pelos dois núcleos virtuais, permitindo um melhor aproveitamento do CPU;  Porém, para que isso aconteça o programa tem de prever a divisão em threads, algo que é realizado pelos programadores durante a implementação do código;  Hoje em dia, cada vez mais a programação é orientada a multi-thread e a multiprocessamento para racionalizar o uso do CPU.
Claramente não é possível obter os mesmos resultados através de núcleos virtuais como será se existirem núcleos reais (diferença de cerca de 20 a 25%);  No entanto, o custo é consideravelmente menor implementando a técnica Hyper-threading face ao custo de microprocessadores físicos. 
série Core 2, a Intel deixou de implementar esta técnica, mas voltou em força com a série Core i.
 Assim um processador Core i de 2 núcleos
aparecerá no SO com 4 núcleos.
 Um processador Core i de 4 núcleos aparecerá no
SO com 8 núcleos.
Para aumentar a capacidade dos processadores existem duas opções: – Aumentar a velocidade do relógio interno; – Ou implementar formas de processamento paralelo.
A aposta da Intel e AMD tem sido o processamento paralelo (quer através de HT e multi-core).
 Em 2005 Intel e AMD
lançam os multi-core: – Pentium D; – Athlon 64 X2.
processamento de vários núcleos é ideal para aplicações que promovam o multi-threading ou que corram diversas aplicações em simultâneo;  Apenas nestas situações estes processadores se tornam realmente proveitosos;  O número de núcleos tem vindo a aumentar e a série Core i da Intel já tem à venda processadores de 6 núcleos físicos com tecnologia HT;  Em 2010 a AMD lançou também o Phenom II X6 com 6 núcleos de processamento.
 Aos
olhos do Sistema Operativo um processador com 6 núcleos físicos com tecnologia Hyperthreading é visto como um processador de 12 núcleos.
A indústria dos jogos, aplicações multimédia e cinematográfica, exigem cada vez mais capacidade de processamento;  Os Sistemas Operativos e as aplicações desenvolvidas são cada vez mais direcionadas para o aproveitamento de vários núcleos de processamento. 