Issuu on Google+

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.


Arquitetura de Microprocessadores - Parte 4