Multithreading
Multithread
Índice
1. Introdução
2. Processos
3. Threads
3.1 Ambiente Monothread
3.2 Ambiente Multithread
3.3 Vantagens
4. Arquitetura e Implementação
4.1 Threads em Modo Usuário
4.2 Threads em Modo Kernel
4.3 Threads em Modo Híbrido
4.4 Scheduler Activations
4.5 Processadores Multithread
5. Pthreads
5.1 Arquitetura
5.2 Sincronização
6. Modelos de Programação
6.1 Modelo de Grupo de Trabalho
6.2 Modelo Mestre-Escravo
6.3 Modelo de Pipeline
1. Introdução Atualmente, os microprocessadores topo de linha são máquinas superescalares com largura de quatro instruções, ou seja, microprocessadores que podem realizar o fetch e completar a execução de até quatro instruções por ciclo. Estas máquinas utilizam unidades funcionais pipelinizadas, predição agressiva de desvio, renomeação dinâmica de registradores e execução fora de ordem de instruções, de forma a maximizar o paralelismo e tolerar atrasos de memória. Mesmo os microprocessadores do estado da arte não conseguem atingir o IPC (instruções por ciclo) potencial de 4, tipicamente, conseguem um IPC entre 0.5 e 1.5 para programas do mundo real.
Pior ainda, a maioria dos estudos realizados indicam que a eficiência das máquinas cai ainda mais quando extrapolamos para máquinas mais “largas”. Um estudo recente indica que uma máquina hipotética de largura de 2 instruções alcança um IPC entre 0.65 e 1.40, uma máquina hipotética similar de largura de 6 instruções alcançará apenas entre 1.2 e 2.3 IPC. Isso indica que o atual paradigma dos superescalares está indo em direção a uma grande diminuição de performance.
Muitos autores acreditam que a única forma de aumentar significativamente a performance dos futuros processadores seja através de um aumento na sua capacidade computacional. Em geral isso significa um aumento do paralelismo; em todas as suas formas. Atualmente, somente certas formas de paralelismo estão sendo exploradas. Os processadores superescalares atuais, por exemplo,