Processadores para computação de alto desempenho Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos
Introdução Nesta aula apresentaremos características de processadores e como elas influenciam no desempenho de um sistema Mostraremos também alguns processadores reais, de várias épocas Começaremos falando da arquitetura do conjunto de instruções, ou ISA.
O debate CISC x RISC O que é CISC e RISC? São formas de estruturar as instruções do processador quanto aos padrões de codificação e execução Processadores RISC usam poucas instruções com formatos rígidos Processadores CISC usam muitas instruções com formatos distintos
O debate CISC x RISC RISC é mais eficiente, porém mais complexo e usa mais memória. Mesmo sendo menos eficiente, quem reinava era o CISC (até começo dos anos 90)
Problemas da primeira geração RISC A não adoção inicial de RISC se deu por: Falta de sistemas operacionais e compiladores adaptados aos RISC Os executáveis eram muito grandes por terem muitas instruções A pouca variedade de instruções de máquina exigia a construção de instruções de software
(R)evolução do RISC Aumento no número de transistores por chip Pipelining é mais fácil se instruções têm mesmo tamanho Surgimento de compiladores mais otimizados
Características de processadores RISC Uso intensivo de pipelining Todo o projeto RISC é voltado para o uso de pipelines Instruções de mesmo tamanho Essa característica é a que mais reforça o conceito de pipeline, uma vez que é possível uniformizar todo o processo de transferência de dados e instruções
Características de processadores RISC Arquitetura LOAD/STORE Todo acesso à memória ocorre apenas através de instruções LOAD ou STORE, não sendo possível outras operações nela Endereçamento simples Como apenas LOAD e STORE acessam a memória não são necessárias variações nesse formato. As outras instruções acessam apenas registradores
Características de processadores RISC Ponto flutuante em pipelines Como todas as instruções têm mesmo formato, incluindo as de ponto flutuante, é possível executá-las em pipelines Tratamento de desvios São necessários para evitar esvaziamentos frequentes do pipeline. Usa técnicas de predição, delay slot e execução condicional
A técnica de delay slot
Segunda geração RISC Chegada dos processadores SUPER Superescalares Permitem a execução simultânea de várias instruções através de vias de execução paralelas Superpipelines Fazem a construção de estágios cada vez mais especializados, chegando a 31 estágios (geração Prescott do Pentium 4)
Outros caminhos CISC e RISC não são as únicas soluções possíveis. A família pentium, por exemplo, misturava os dois conceitos Outra saída é o uso de processadores VLIW (verylong instruction word)
Modelos arquiteturais básicos
Modelos arquiteturais básicos
Modelo de arquitetura CISC
Modelo de arquitetura RISC
Arquitetura POWER (32 bits)
Arquitetura VLIW Modelo de processador
Arquitetura VLIW Formato de instrução e execução
Antigo cenário sobre microprocessadores
Cenário atual sobre microprocessadores
Cenário atual sobre microprocessadores Preocupação com consumo de energia Design orientado pela aplicação, ou seja, menos clock e instruções por ciclo quando é preciso economizar energia Para alto desempenho a preocupação é como refrigerar os processadores...
Lei de Moore Continua aplicável Não se resume a número de transistores ou velocidade da CPU Na verdade é uma referência econômica sobre gerações de microprocessadores
Lei de Moore Avanços na tecnologia de litografia (20nm) Avanços na construção dos transistores (3D)
Pipelines O uso de pipelines é uma das formas de se acelerar o processamento Pipelines surgem em duas formas: Pipeline aritméticos Pipeline de instruções
Pipelines aritméticos Envolvem a decomposição de operações aritméticas em etapas funcionais São mais simples de implementar e não envolvem problemas de predição ou de esvaziamentos
Pipelines aritméticos 400 ns
Pipelines aritméticos 150 ns
Pipeline de instruções Envolve as várias etapas de execução de uma instrução, como busca, decodificação, etc É mais complicado pois essas etapas possuem comportamentos distintos para tipos de instruções distintas
Pipeline de instruções
Pipeline de instruções
Antigamente... Pipelines podiam ainda ser classificados como sendo lineares ou não-lineares Com o aumento na complexidade dos pipelines o conceito de linearidade (típico nos antigos pipelines RISC) foi abandonado Mas ainda é útil no entendimento dos hazards de um pipeline
Pipelines lineares Caracterizados como uma linha de produção serial típica Mais simples de serem compreendidos O fluxo dos dados/instruções pode ser feito de forma síncrona (latches e relógio único), ou assíncrona (sinais de requisição e reconhecimento)
Pipeline linear síncrono
Pipeline linear assíncrono
Pipeline não-linear É um pipeline em que o fluxo pelos estágios pode sofrer grandes desvios ou até formar ciclos Fundamental para CISC, pois instruções de formatos diferentes demandam caminhos de execução diferentes Seu controle é tipicamente assíncrono
Exemplo pipeline não-linear assíncrono
Pipelines superescalares São pipelines com uma grande quantidade de estágios e caminhos possíveis São característicos dos processadores modernos Permitem, em determinados estágios, a execução de vários caminhos (instruções) simultaneamente
Pipelines superescalares Permitem o escalonamento de instruções fora de ordem (out-of-order execution), a partir do momento em que a instrução: Tem dados disponíveis Tem unidade operacional disponível Não criará conflitos
Pipelines superescalares
Pipelines superescalares
Pipeline superescalar (threads)
Pipeline família Power
Pipeline processadores MIPS
Arquitetura de alguns processadores
MIPS 64bits
Sandy Bridge Observar o anel ligando as caches locais (nível 1) Observar também os elementos especializados
Sandy Bridge
Sandy Bridge
Haswell Quarta geração da família i3,5,7 Do ponto de vista da Intel representa avanços mais significativos do que a geração anterior
Haswell
Haswell
Haswell
AMD Bulldozer
AMD Bulldozer
Sistema de multiprocessadores (Power cells)
Sistema de multiprocessadores (Power cells)
Como o Power Cell funciona Processador Power (PPE) cuida do SO e controle das SPE Processadores sinergísticos (SPE) fazem o processamento real, através de sua unidade de processamento (SPU) e de interface (MFC) Comunicação ocorre por 4 anéis de 16 bytes de largura cada
Diagrama interno de um SPE
Anéis da rede interna
Arquitetura Power (64 bits)
Arquitetura Power8
Arquitetura Power8
Sparc M7
Sparc M7
Sparc M7
Estrutura mista do Roadrunner Uso do Opteron (dual core) e do PowerXcell 8i (célula) para aceleração de operações aritméticas Uso de Infiniband como elemento de conexão
Arquitetura do Opteron Processadores Opteron trabalham com 64 bits, sendo suas principais características: Endereços virtuais de 48 bits Endereços físicos de 40 bits Caches L1 e L2 separadas para cada núcleo Cache L1 é composta por 64Kbytes para dados e 64Kbytes para instruções 3 conexões para E-S (16 bits em cada direção) suportam conexões entre processadores
Placa vetorial Cray Y-MP
Arquitetura Cray XT4
Processador vetorial Cray XT5
Processador reconfigurável Cray XT5 Uso de FPGA s como elemento para adaptação ao software
Processadores de baixo consumo Uma alternativa hoje é o uso de uma grande quantidade de processadores de baixo consumo de energia para fazer um paralelismo em larga escala Nessa categoria aparecem processadores como o ATOM, Vortex e as GPU s
ATOM (Intel)
ATOM (Intel)
Graphical Processing Units O uso de GPUs como elementos de aceleração de processamento tem crescido A idéia é usar GPUs como processadores das partes não sequenciais de um programa A GPU Fermi, da Nvidia, apresenta até 512 núcleos por chassi A GPU Kepler, da Nvidia, chega a 2688 núcleos, atingindo 1.31 Tflops
Nvidia - Kepler
Nvidia - Kepler
Nvidia - Kepler
Nvidia - Kepler Kepler Tesla
Graphical Processing Units Além da NVIDIA temos também GPUs da Intel, através da família Xeon Phi Atinge desempenho de 1TFlops, através de 60 núcleos executando até 240 threads
Arquitetura do Xeon Phi
Modos de execução
Xeon Phi (Knights Landing)
Processadores ARM São processadores de consumo de energia muito baixo, chegando a menos de 2 watts no processador e menos de 12 watts num sistema completo Uso inicial em dispositivos móveis Tem se tornado uma alternativa para uso como processador auxiliar
ARM processors Cortex A9
Rex Neo processors
Rex Neo processors
Rex Neo processors
Processadores para HPC Tendência para uso de processadores comuns, em organização manycores e multicomputadores Cuidados recentes (nem tanto) com economia de energia Problemas de conectividade a serem resolvidos para sistemas exascale
Processadores para HPC