Baixe o app para aproveitar ainda mais
Prévia do material em texto
25/05/2020 1 Computadores Multicore Slides elaborados pelo Prof. Anderson Oliveira da Silva Paralelismo Organização Paralela – Computadores Multicore Índice Questões sobre Desempenho de Hardware Questões sobre Desempenho de Software Organização Multicore Organização Multicore Heterogênea Arquitetura de conjunto de instruções diferentes CPU combinada com GPU Arquitetura de conjunto de instruções equivalentes Core de Alto Desempenho combinado com Core de Baixo Consumo de Energia Intel Core I7-990X ARM Cortex-A15 MPCore Organização Paralela – Computadores Multicore Questões sobre Desempenho de Hardware: Aumento no paralelismo e na complexidade: Pipeline: com mais estágios, há necessidade de mais lógica, mais interconexões e mais sinais de controle. Superescalar: com mais pipelines paralelos, mais lógica é necessária para gerenciar os hazards e para organizar os recursos de instruções. Multithreading simultâneo (SMT): limita o número de threads e o número de pipelines que podem ser usados efetivamente. O aumento na complexidade para lidar com todas as questões de lógica de controle significa que uma grande área do chip é ocupada com lógica de coordenação e transferência de sinais. Organização Paralela – Computadores Multicore Questões sobre Desempenho de Hardware Consumo de energia: Uma maneira de controlar o consumo de energia é usar mais área do chip para a memória cache pois os transistores de memória são menores e possuem uma densidade de energia em ordem de magnitude menor do que os da lógica. Questões sobre Desempenho de Hardware Organizações alternativas de chip: Superescalar Organização Paralela – Computadores Multicore Questões sobre Desempenho de Hardware Organizações alternativas de chip: Multithreading SMT (Simultaneous multithreading) Organização Paralela – Computadores Multicore Questões sobre Desempenho de Hardware Organizações alternativas de chip: Multicore Organização Paralela – Computadores Multicore Questões sobre Desempenho de Software Lei de Amdhal Mesmo uma quantidade pequena de código serial tem um impacto evidente. Por exemplo, para 10% de código serial, f=0,9 e speedup=4,7 para 8 processadores. Softwares e SO precisam ser reescritos para que se possa usufruir dos benefícios da arquitetura multicore. Organização Paralela – Computadores Multicore Questões sobre Desempenho de Software McDougall, 2005 O software normalmente provoca sobrecarga como o resultado da comunicação e a distribuição de trabalho para vários processadores e sobrecarga de coerência de cache. Por causa dessa sobrecarga, o desempenho alcança picos e depois começa a degradar principalmente em função da sobrecarga imposta ao SO com coordenação e gerenciamento. Organização Paralela – Computadores Multicore Organização Multicore No nível mais alto de descrição, as principais variáveis em uma organização multicore são as seguintes: Número de cores processadores no chip. Número de níveis da memória cache. Quantidade de memória cache que é compartilhada. Se o multithreading simultâneo (SMT) é empregado. Tipos de cores. Organização Paralela – Computadores Multicore Organização Multicore Cache L1 dedicada: Ex: ARM11 MPCore Organização Paralela – Computadores Multicore Organização Multicore Cache L2 dedicada: Ex: AMD Opteron Organização Paralela – Computadores Multicore Organização Multicore Cache L2 compartilhada: Ex: Intel Core Duo Organização Paralela – Computadores Multicore Organização Multicore Cache L1 dedicada, L2 compartilhada e L3 global aos cores: Ex: Intel Core i7 Organização Paralela – Computadores Multicore Organização Multicore (Tendência) Cache L1 dedicada a um core, L2 compartilhada entre 2 ou 4 cores e L3 global aos cores: Organização Paralela – Computadores Multicore Multithreading Simultâneo Uma outra decisão de projeto organizacional em um sistema multicore é se os cores individuais vão implementar multithreading simultâneo (SMT). Por exemplo, o Intel Core Duo utiliza cores superescalares puros, ao passo que o Intel Core i7 faz uso de cores SMT. O SMT tem o efeito de ampliar o número de threads em nível de hardware que o sistema multicore suporta. Um sistema multicore com quatro cores e o SMT que suporta quatro threads simultâneos em cada core parecem os mesmos em nível de aplicação. Organização Paralela – Computadores Multicore Multithreading Simultâneo Intel Core i7 Organização Paralela – Computadores Multicore Organização Multicore heterogênea Um caso típico para o uso de múltiplos cores é um chip com cores múltiplos idênticos, conhecido como organização multicore homogênea. Para atingir melhores resultados, em termos de desempenho e/ou consumo de potência, uma escolha cada vez mais popular é a organização multicore heterogênea, que se refere ao chip processador que inclui mais do que um tipo de core. A abordagem que recebeu mais atenção da indústria é o uso de cores que têm ISAs distintas. Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções diferentes A tendência mais proeminente em termos de projeto multicore heterogêneo é o uso tanto de CPUs como de unidades de processamento gráfico (GPUs) no mesmo chip, conhecidas como Multicore CPU/GPU. As GPUs são caracterizadas pela capacidade de suportar milhares de threads de execução paralelos. São bem adaptadas para as aplicações que processam grandes quantidades de dados vetoriais e matriciais. Uma mistura heterogênea, todavia, apresenta questões de coordenação e correção. Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções diferentes Elementos de chip multicore heterogêneo: Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções diferentes Parâmetros operacionais do processador multicore heterogêneo AMD 5100K: Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções diferentes Outro exemplo comum de um chip multicore heterogêneo é a mistura de CPUs e processadores digitais de sinais (DSPs), conhecidos como Multicore CPU/DSP. Um DSP proporciona sequências de instrução ultrarrápidas, que costumam ser usadas em aplicações de processamento digital de sinais com utilização intensiva da matemática. Os DSPs são usados para processar dados analógicos a partir de fontes como som, satélites de acompanhamento das condições climáticas e monitores de terremotos. Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções diferentes Chip multicore heterogêneo CPU/DSP da Texas Instruments (TI) 66AK2H12: Utilizado em aplicações de ponta de imagens (ex: automação indus- trial, vigilância por vídeo, etc). Fornece até 352 GMACS (Giga Operações de Multiplicar- Acumular Por Segundo), 198 GFLOPS e 19.600 MIPS. Esse chip T1 inclui 4 cores ARM Cortex-A15 e 8 cores T1 C66x DSP. Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções equivalentes Outra abordagem recente à organização multicore heterogênea é o uso de diversos cores que têm ISAs equivalentes, mas variam no desempenho ou na eficiência de energia. O principal exemplo disso é a arquitetura big.Little da ARM, formada por um chip processador multicore que contém dois cores Cortex-A15 de alto desempenho, e ainda dois cores Cortex-A7 de baixo desempenho e baixo consumo de energia. Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções equivalentes O processador A7 é projetado para a máxima eficiência e desempenho suficientemente alto para direcionar tudo, exceto os períodos mais intensos de trabalho. Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções equivalentes O A15 é projetado para o máximo desempenho dentro da disponibilidade de energia dos dispositivos móveis. Organização Paralela – Computadores Multicore Arquiteturas de conjuntos de instruções equivalentes Comparação de desempenho entre o Cortex-A7 e o A15: Organização Paralela – Computadores Multicore Exynos (Samsung) Todos os membros da família Exynos integram múltiplos processadores e a GPU (SoCs – System-on-Chips). Exynos 9820 (9 Series) – 8nm LPP FinFET Custom CPU Dual + Cortex-A75 Dual + Cortex-A55 Quad, Mali G76 MP12 GPU Exynos 8 Octa (8890) – 14nm FinFET Custom CPU 2.3GHz Quad + Cortex-A53 1.6GHz Quad, Mali T880 MP12 GPU Exynos 7 Octa (7420) – 14nm FinFET Ciotex-A57 2.1GHz Quad + Cortex-A53 1.5GHz Quad, Mali T750 MP8 GPU Samsung Exynos – Samsung URL: https://www.samsung.com/semiconductor/minisite/exynos/products/all-processors Organização Paralela – Computadores Multicore A11 Bionic (Apple) Design da Apple e fabricado pela TSMC (Taiwan Semiconductor Manufactoring Company). Introduzido no iPhone 8, iPhone 8 Plus e iPhone X. Características: ARMv8-A six-core CPU – 64 bits (10nm FinFET), com dois cores de alto desempenho de 2.39GHz (chamados Monsoon) e quatro cores com eficiência de energia (chamados Mistral). Integrado com uma GPU de três cores desenvolvida pela Apple. Integrado com um coprocessador de movimento (M11 Motion Coprocessor) iPhone X Benchmarks – Geekbench Browser URL: http://browser.geekbench.com/ios_devices/52 Apple 2017: The iPhone X (Ten) Announced – AnandTech URL: https://www.anandtech.com/show/11835/apple-2017-the-iphone-x-ten Organização Paralela – Computadores Multicore Intel Core i7-990X Diagrama de bloco: 192bits * 1,33 GT/s = 31,92 GB/s Unidirecional: 16bits * 6,4 GT/s = 12,8 GB/s Bidirecioonal: 32bits * 6,4 GT/s = 25,6 GB/s Organização Paralela – Computadores Multicore ARM Cortex-A15 MPCore Diagrama de bloco: O Controlador de Interrupção Genérico (GIC) distribui as interrupções para os cores. Cache L1 dedicada para cada core. Cache L2 compartilhada entre os cores. Unidade de Controle de Monitoração (SCU – Snoop Control Unit) mantém a coerência entre as caches L1/L2. Organização Paralela – Computadores Multicore Detectando o número de processadores disponíveis nos sistemas UNIX: sys/sysinfo.h: get_nprocs_conf Retorna o número de processadores configurados no sistema. extern int get_nprocs_conf (void); sys/sysinfo.h: get_nprocs Retorna o número de processadores disponíveis no sistema. extern int get_nprocs (void); Organização Paralela – Computadores Multicore Detectando o número de processadores disponíveis nos sistemas UNIX: Exemplo: get_nprocs_v1.c #include <stdio.h> #include <sys/sysinfo.h> int main(int argc, char *argv[]) { printf("This system has %d processors configured and " "%d processors available.\n", get_nprocs_conf(), get_nprocs()); return 0; } $ gcc -o get_procs_v1 get_procs_v1.c $ ./get_procs_v1 This system has 16 processors configured and 16 processors available. Organização Paralela – Computadores Multicore Detectando o número de processadores lógicos disponíveis no processador Intel: Instrução: CPUID CPUID_Level: 11 (0Bh) CPUID Leaf: 1 (01h) cpuid.h: __cpuid_count(11, 1, eax, ebx, ecx, edx); O número de processadores lógicos é retornado no registrador EBX e o ID do processador que executou a chamada é retornado no registrador EDX. Organização Paralela – Computadores Multicore Detectando o número de processadores lógicos disponíveis no processador Intel: Exemplo: get_nprocs_v2.c #include <cpuid.h> #include <stdio.h> int main(int argc, char *argv[]) { unsigned int cpuid_required_level = 11, cpuid_leaf = 1, max_level =0, vendor_id =0; unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0; /* Check if extended feature information is available */ max_level = __get_cpuid_max(0, &vendor_id); if (max_level < cpuid_required_level) { printf("Error: cpuid does not provide cpu feature informattion.\n"); return 1; } Organização Paralela – Computadores Multicore Detectando o número de processadores lógicos disponíveis no processador Intel: Exemplo: get_nprocs_v2.c #include <cpuid.h> #include <stdio.h> int main(int argc, char *argv[]) { ………………………………………………………………………….……… __cpuid_count(cpuid_required_level, cpuid_leaf, eax, ebx, ecx, edx); printf(“Logical Processors: %\n", ebx); return 0; } Organização Paralela – Computadores Multicore Detectando o número de processadores lógicos disponíveis no processador Intel: Exemplo: get_nprocs_v2.c $ gcc -o get_npprocs_v2 get_nprocs_v2.c $ ./get_nprocs_v2 Logical Processors: 16 Organização Paralela – Computadores Multicore Detectando informações sobre a CPU no Linux: $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 13 Model name: QEMU Virtual CPU version 2.5+ Stepping: 3 CPU MHz: 2992.644 BogoMIPS: 5985.28 Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 4096K NUMA node0 CPU(s): 0,1 Flags: fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx xsr sse sse2 syscall nx lm rep_good nopl eagerfpu pni cx16 hypervisor lahf_lm Organização Paralela – Computadores Multicore Detectando informações sobre a CPU no Linux: $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 94 Model name: Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz Stepping: 3 CPU MHz: 799.822 CPU max MHz: 3700.0000 CPU min MHz: 800.0000 BogoMIPS: 6624.00 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 8192K NUMA node0 CPU(s): 0-3 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov ..................................................................................... Organização Paralela – Computadores Multicore Detectando informações sobre a CPU no Linux: $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 63 Model name: Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz Stepping: 2 CPU MHz: 1212.773 CPU max MHz: 3500.0000 CPU min MHz: 1200.0000 BogoMIPS: 5999.98 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 20480K NUMA node0 CPU(s): 0-15 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov ..................................................................................... Organização Paralela – Computadores Multicore Detectando informações sobre a CPU no Linux: $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 32 On-line CPU(s) list: 0-31Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 79 Model name: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz Stepping: 1 CPU MHz: 2544.855 CPU max MHz: 3000.0000 CPU min MHz: 1200.0000 BogoMIPS: 4190.44 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 20480K NUMA node0 CPU(s): 0-31 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov ..................................................................................... Organização Paralela – Computadores Multicore Perguntas?
Compartilhar