Técnico de Gestão e Programação de Sistemas Informáticos
2
Arquitetura de Microprocessadores
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.
3
Memória cache
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.
4
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.
5
Memória cache
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);
6
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.
7
A
Memória cache L1
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).
8
A
Memória cache L2
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.
9
Atualmente
Memória cache L2
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.
10
A
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.
11
Memórias cache CPU Núcleo 1
Núcleo 2
Cache L1
Cache L1
Cache L2
Cache L2
Cache L3
12
Técnicas de processamento paralelo
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”.
13
Técnicas de processamento 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).
14
Técnicas de processamento paralelo
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.
15
Técnicas de processamento paralelo Tempo
CPU
CPU
CPU
CPU
CPU
CPU
Ciclo 1
Ciclo 2
Ciclo 3
Ciclo 1
Ciclo 2
Ciclo 3
Fetch
Decode
Execute
Fetch
Decode
Execute
Primeira instrução
Num
Segunda instrução
processador sem pipelining as instruções são atendidas sequencialmente; A segunda instrução só é atendida quando a primeira termina a execução.
16
Técnicas de processamento paralelo
Estágio 1 Estágio 2
Pipelining
Tempo
CPU
CPU
CPU
CPU
CPU
CPU
Ciclo 1
Ciclo 2
Ciclo 3
Ciclo 4
Ciclo 5
Ciclo 6
Fetch
Decode
Execute
Primeira instrução
Fetch
Decode Segunda instrução
Execute
17
Num
Técnicas de processamento paralelo
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).
18
Técnicas de processamento paralelo
Estágio 2 Estágio 3
Pipelining
Estágio 1
Tempo
CPU
CPU
CPU
CPU
CPU
CPU
Ciclo 1
Ciclo 2
Ciclo 3
Ciclo 4
Ciclo 5
Ciclo 6
Fetch
Decode
Execute
Primeira instrução
Fetch
Decode
Execute
Segunda instrução
Fetch
Decode Terceira instrução
Execute
19
Técnicas de processamento paralelo
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).
20
Técnicas de processamento paralelo
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).
O
Pentium 4 Prescot contava com 31 pipelines; Mas no processador seguinte optou-se por baixar esse número.
21
Técnicas de processamento paralelo
Por
um lado, este tipo de tecnologia levava o processador a consumir cada vez mais energia;
Por
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.
22
Estes
Técnicas de processamento paralelo
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.
23
Técnicas de processamento paralelo
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).
24
Com
Técnicas de processamento paralelo
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.
25
Técnicas de processamento paralelo
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.
Na
série Core 2, a Intel deixou de implementar esta técnica, mas voltou em força com a série Core i.
26
Técnicas de processamento paralelo
Assim um processador Core i de 2 núcleos
aparecerá no SO com 4 núcleos.
27
Técnicas de processamento paralelo
Um processador Core i de 4 núcleos aparecerá no
SO com 8 núcleos.
28
Processadores de vários 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.
29
O
Processadores de vários núcleos
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.
30
Aos
Processadores de vários núcleos
olhos do Sistema Operativo um processador com 6 núcleos físicos com tecnologia Hyperthreading é visto como um processador de 12 núcleos.
31
Processadores de vários 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.
32
Bibliografia
SÉRGIO, Ricardo, Arquitetura de Computadores, 1ª Edição, Areal Editores, 2011.