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 .