Você está na página 1de 16

Computadores

multicore
Eduardo Pereira
João Vitor
Histórico
• Precursores da CPU moderna: anos 40, 50 e 60(Eniac,EDVAC,etc...);
• Lei de Moore;
• Microprocessadores(Intel 4004);
• Microprocessadores X86 e 16bits(Intel 80186 , Intel 80188);
• Cpu’s 32bits;
• Intel Versus AMD;
• Multicore (Fim da lei de Moore);
Multicore
• Oque é?

• De onde surgiu?
Curiosidades
Principais inventores/colaboradores
• Intel;

• AMD;

• Passado;
Principais técnicas/tecnologias utilizadas
• Pipeline

• Superescalar

• Multithreading Simultaneo (SMT)


Funcionamento
• Histórico: Pipeline, Superescalar, Multithreading Simultaneo (SMT)

• Computador multicore: dois ou mais processadores (núcleos) em um


único chip.

• Cada núcleo tem todos os componentes de um processador


independente.
Organização
• Principais váriaveis: número de núcleos, número de níveis de cache,
quantidade de cache compartilhado.
Exemplo: Intel Core Duo
• Introduzido em 2006
• Dois processadores x86 superescalares
• Cada núcleo tem cache L1 dedicada
• cache L2 compartilhada

• Cada núcleo tem uma unidade de controle


térmica.
Intel Core Duo
• Possui um controlador programável avançado de
interrupções (APIC)

• APIC pode prover interrupções entre


processadores.
• Qualquer processador pode interromper outro
processador.
• uma thread pode gerar uma interrupção aceita
pelo APIC local, encaminhada para o APIC do
outro núcleo.
• O APIC pode aceitar interrupções de E/S e
mandar para o núcleo adequado.
Aplicações
• Beneficio de desempenho depende da habilidade de explorar os
recursos paralelamente

• Aplicações com múltiplos processos: vários processos de thread única.


Exemplo: banco de dados Oracle, SAP

• Aplicações Java: JVM é um processo multithread que cuida do


agendamento e gerenciamento de memoria de Aplicações Java.
Exemplo: Source Engine
• Motor de jogos da Valve, usado no Counter-Strike

• Foi reprogramado para explorar multithreading

• granularidade grossa: módulos individuais, são atribuídos a processadores


individuais. Cada sistema (renderização, IA, física) roda em uma thread
separada, a coordenação envolve sincronizar todas as threads com uma
thread da linha de tempo.

• Granularidade fina: tarefas semelhantes são espalhadas por vários


processadores. Ex: uma iteração sobre uma matriz de dados pode ser
dividia em várias tarefas espalhadas em threads individuais, que podem ser
agendadas em paralelo.
Exemplo: Source Engine
• A granularidade grossa não garante um grande ganho em
performance em cenários do mundo real.

• O uso efetivo da granularidade fina é dificil.

• A solução foi uma abordagem hibrida: Alguns módulos rodando em


threads únicas e outros compartilhando threads.

• Solução mais promissora com a chegada de processadores com 8 ou


16 núcleos
Tendencias para o futuro
• Ampliação do uso de processadores com muitos núcleos (8 e 16).

• Estilo de programação e linguagens voltadas para multithreading.


Ex: Linguagem Go

• Áreas em destaque: Desenvolvimento de jogos, Criptomoedas,


Realidade virtual.

• Digno de nota: Processadores Quânticos


Conclusão do grupo
• Dados problemas como: densidade de transistors crescente, super-
aquecimento e limitações físicas, o foco nos processadores multicore
vem sendo a alternativa.

• Algumas aplicações se beneficiam mais que outras devido a sua


natureza.

• Impacto no desenvolvimento: Software deve ser escrito com o


paralelismo em mente .

Você também pode gostar