560 likes | 922 Views
SSC114 Arquitetura de Computadores Paralelismo no nível de instrução e de tarefas. Aula 8 01/09/10 (Turmas 1 e 2) Profa. Sarita. Tipos de Paralelismo. BLP: Bit Level Parallelism Interno a instrução Explorado desde a década de 70 ILP: Instruction Level Parallelism
E N D
SSC114 Arquitetura de ComputadoresParalelismo no nível de instrução e de tarefas Aula 8 01/09/10 (Turmas 1 e 2) Profa. Sarita
Tipos de Paralelismo • BLP: Bit Level Parallelism • Interno a instrução • Explorado desde a década de 70 • ILP: Instruction Level Parallelism • Paralelismo entre instruções • Explorado a partir do final da década de 80 • Processadores cada vez mais complexos • DLP: Data Level Parallelism (em paralelo) • Explorado em arquiteturas SIMD, Arranjos Sistólicos, etc.
Tipos de Paralelismo • TLP: Task Level Parallelism • Vários enfoques: • Processo • Thread • Job • Para cada enfoque tem-se diferentes arquiteturas
Paralelismo a nível de instrução • Processadores Escalares • Processadores Superescalares • Processadores Pipelined • Processadores Superpipelined • Processadores VLIW
Processadores Superescalares • Processadores Escalares • Uma instrução por ciclo • Uma instrução terminada por ciclo • Processadores Superescalares • Múltiplas instruções consideradas em um único ciclo • Múltiplas instruções podem ser terminadas em um ciclo • Desenvolvidos como uma alternativa a processadores vetoriais
Processadores Superescalares • Processador pipeline de 4 estágios
Processadores Superescalares • Processador Superescalar com grau = 3 e com pipeline de 4 estágios
Processadores Superescalares • Um processador superescalar com grau mpode finalizar até m instruções por ciclo • Depende da dependência de dados, conflito por recurso e dos desvios
O que significa Superescalar? • Instruções comuns • aritméticas, load/store e desvios condicionais podem ser iniciados e executados independentemente • Aplicável igualmente a RISC e CISC • na prática é implementado usualmente em máquinas RISC
Por que Superescalar? • Maioria das operações realizadas em valores escalares • Melhora desempenho dessas operações para melhorar o desempenho total • Proposta foi aceita rapidamente • Máquinas superescalares comerciais surgiram apenas +/- 2 anos após o surgimento do termo superescalar • Máquinas RISCs comerciais levaram +/- 8 anos
Organização superescalar genérica • Várias unidades funcionais organizadas em pipeline • Ex.: duas op com inteiros duas op com ponto flutuante uma op de carga/armazenamento
Limitações • Paralelismo a nível de instrução • Nível que as instruções podem ser executadas em paralelo • Otimizações baseadas: • No compilador e em técnicas de hardware • Limitações intrínsecas: • Dependência de dados verdadeira (escrita-leitura) • Dependências de desvio • Conflitos no uso de recursos • Dependência de saída (escrita-escrita) • Antidependência (leitura-escrita)
Processadores VLIW • VLIW – Very Large Instruction Word • Explora paralelismo em nível de instrução • Instruções de 128-1024 bits • Cada instrução consiste de múltiplas instruções independentes • Diversas unidades funcionais interligadas por um único registrador compartilhado
Abordagem VLIW Single multi-operation instruction Cache/memory FetchUnit FU FU FU Register file multi-operation instruction [Ref : Sima et al]
Abordagem Superescalar Decode and issue unit Cache/memory FetchUnit Multiple instruction FU FU FU Sequential stream of instructions Instruction/control Register file Data FU Funtional Unit [Ref : Sima et al]
Comparações: Pipeline, Superescalar e VLIW [Ref : Hwang et al]
Processadores VLIW x Superescalar • Porque VLIW é menos popular que superescalar? • Compatibilidade entre códigos binários • Mesmo compilador pode ser utilizado para escalar e superescalar • Exemplo de Superescalar: IBM RS/6000 • Exemplo de VLIW: Crusoe TM 5400
Arquiteturas Superpipeline • É um pipeline com muitos estágios • Estágios necessitam tempos de ciclo menores • Normalmente menos que a metade • Velocidade interna de clock duplicada • Executa duas "atividades“ por ciclo de clock externo • Superescalar permite executar a busca em paralelo
Pontos importantes • Processador superescalar: • Emprega vários pipelines de instrução independentes • Cada pipeline com seus estágios, executando instruções diferentes simultaneamente • Novo nível de paralelismo: diversos fluxos de instrução cada vez • Processador precisa buscar várias instruções: • Instruções próximas que sejam independentes e possam ser executadas em paralelo (ao mesmo tempo) • Problemas com a dependência de dados • Identificadas as dependências, execução pode ser feita fora de ordem
Pontos importantes • Dependências de dados podem ser solucionadas com: • Registradores adicionais e renomeação de referências a registradores • Dependências de controle • RISCs puros empregam desvio atrasado • Técnica não é adequada para processadores superescalares • São usados métodos tradicionais de predição de desvio
Paralelismo a nível de tarefas • Paralelismo a nível de thread • Considera aplicações com múltiplas threads • Várias opções: • Multithreading (MT) • Superthreading • Simultaneous Multithreading (SMT) ou Hyperthreading • Múltiplos Cores
CPU com uma thread • RAM: 4 programas em execução • Front End: busca até 4 instruções • Sete pipelines de execução • Programa vermelho em execução • Quadrados brancos: estágios vazios • Programas possuem uma ou mais threads
Simultaneous Multiprocessing (SMP) • Arquitetura com mais de um processador que compartilham recursos de memória, discos e executam o mesmo SO. • Dois processos executam simultaneamente em dois processadores • No final – contexto é salvo e dois novos processos são colocados nas CPUs
Simultaneous Multiprocessing (SMP) • Maior quantidade de recursos • Nenhum procedimento para melhor utilização dos recursos • Menor utilização dos processadores • Evita chaveamento de contexto
Multithread • Técnica para diminuir as perdas associadas com processamento de uma única thread • A técnica é chamada de time-slice multithreading ou superthreading • O processador que utiliza essa técnica é chamado processador multithreaded • Processador multithreaded é capaz de executar mais de uma thread em um instante
Multithread • Threads compartilham suporte em hardware para troca entre threads em execução sem intervenção de software. • CPU possui informações sobre os estados associados com cada thread (contador de programa, registradores, etc.). • O hardware também deve conter um mecanismo para o escalonamento de thread, fetch e decodificação de instruções.
Multithread • Número menor de estados perdidos • Um estágio do pipeline só pode ter instrução de uma thread • Front End – 4 instruções por clock • Processador – 7 unidades funcionais
Multithreading L1 D-Cache D-TLB Integer Floating Point Schedulers Uop queues L2 Cache and Control Rename/Alloc BTB Trace Cache uCode ROM Decoder Bus BTB and I-TLB Thread 1: floating point
Multithreading L1 D-Cache D-TLB Integer Floating Point Schedulers Uop queues L2 Cache and Control Rename/Alloc BTB Trace Cache uCode ROM Decoder Bus BTB and I-TLB Thread 2: integer operation
Multithread • Multthreading auxilia nas esperas pela memória • Continua não explorando paralelismo dentro de threads
Simultaneous Multithreading (SMT) • Também denominado Hyperthreading - HT • Explora TLP (thread-level parallelism) e ILP (instruction-level parallelism) • Apresenta um melhor aproveitamento dos recursos • Enquanto uma thread pode estar usando uma unidade de ponto flutuante, outra pode estar usando a unidade de inteiro
Simultaneous Multithreading (SMT) • 4 Programas na Memória • Front End recebe instruções de diferentes threads
Simultaneous Multithreading (SMT) L1 D-Cache D-TLB • Com SMT Integer Floating Point Schedulers Uop queues L2 Cache and Control Rename/Alloc BTB Trace Cache uCode ROM Decoder Bus BTB and I-TLB Thread 2:integer operation Thread 1: floating point
Empty Slot Thread 1 Clock cycles Thread 2 Thread 3 Thread 4 Issue slots Formas de execução das threads Superescalar Multithreading Simultaneous Multithreading
Simultaneous Multithreading (SMT) • Simula em um único processador físico dois processadores lógicos, não sendo um processador paralelo real • Cada processador lógico possui um controlador de interrupção programável e conjunto de registradores • Outros recursos são compartilhados entre os processadores lógicos: cache de memória, unidade de execução, unidade lógica e aritmética, unidade de ponto flutuante e barramentos
Simultaneous Multithreading (SMT) • O sistema operacional envia tarefas para os processadores lógicos como se estivesse enviando para processadores físicos • Os sistemas operacionais e software aplicativos têm que suportar a tecnologia HyperThreading
Formas de execuçãdo das threads AS - registradores e controlador de interrupção
Simultaneous Multithreading (SMT) • A denominação HyperThreading foi utilizada inicialmente pela Intel • Segundo a Intel, a HyperThreading oferece um aumento de desempenho de até 30% dependendo da configuração do sistema
Simultaneous Multithreading (SMT)Desempenho • HT: • P4 melhora de ~52.5% • Xeons melhora de ~28% Sandra (the System ANalyser, Diagnostic and Reporting Assistant)
Simultaneous Multithreading (SMT)Desempenho • Melhora no desempenho depende da disponibilidade dos recursos compartilhados pelas threads em execução • Uma opção para obter melhor desempenho é considerar mais de um núcleo em cada processador • Duplicidade de recursos
Multi Core • Múltiplos núcleos de CPU em um processador • Execuções simultâneas de tarefas • Cada núcleo com o seu pipeline • Cada núcleo com os recursos necessários para execução de seu programa
Multi Core • Possibilidade de Múltiplos núcleos • Intel – 2 núcleos • Mainframes – diversos núcleos
Multi Core L1 D-Cache D-TLB L1 D-Cache D-TLB Integer Floating Point Integer Floating Point Schedulers Schedulers L2 Cache and Control Uop queues Uop queues L2 Cache and Control Rename/Alloc Rename/Alloc BTB Trace Cache uCode ROM BTB Trace Cache uCode ROM Decoder Decoder Bus Bus BTB and I-TLB BTB and I-TLB Thread 1 Thread 3 Thread 2 Thread 4
Multi CoreExemplo • Programa de renderização de imagem • Dividir a tela em blocos e associar uma thread para cada bloco • HyperThreading – processa duas ou mais threads simultaneamente • Sem HyperThreading - processa apenas uma thread de cada vez. • Processador Dual Core - pode executar o mesmo programa de renderização e mais um outro qualquer.
Multi CoreVantagens • Maior eficácia do sistema e desempenho aprimorado de aplicativos em computadores executando vários aplicativos simultaneamente • Desempenho aprimorado para aplicativos multi-threaded • Bom desempenho para única aplicação com uma thread – processos do SO em outro núcleo • Desempenho superior em aplicativos que utilizam processamento de forma intensiva
Comparando • Núcleos podem usar SMT ou não • Possíveis combinações: • Um único núcleo, sem SMT (processador normal) • Um único núcleo, com SMT • Mútiplos núcleos, sem SMT • Mútliplos núcleos, com SMT • Números de possíveis threads simultaneamente: 2, 4, ou 8