Escolar Documentos
Profissional Documentos
Cultura Documentos
Computação Paralela
- Computadores paralelos.
Instruções de 1 palavra
Instruções especiais de
RISC acesso à memória
Decodificação “direta”
Execução em hardware
Hazard de dados
Instrução Ocorre quando algum operando
não está disponível no momento
da fase de execução (EM ROXO)
de uma instrução.
I1 B1 D1 E1 W1
I2 B2 D2 E2 W2
I3 B3 D3 E3 W3
1 2 3 4 5 6 7 Ciclos
Prof. João Roberto de T Quadros 15
Pipeline
Em geral, uma instrução MUL (CISC) precisa de 3 ciclos de relógio para executar
EX: ADD R2, R1
MUL R5, R3
ADD R4, R6
SHF R7 Hazard estrutural
Ocorre quando duas instruções
Instrução
disputam (necessitam) o uso de
algum hardware (por exemplo, a
memória) no mesmo instante de
tempo.
I1 B1 D1 E1 W1
I2 B2 D2 E2 W2
I3 B3 D3 E3 W3
I4 B4 D4 E4 W4
1 2 3 4 5 6 7 8 9 Ciclos
faddl -8(%esi,%eax)
movl -40104(%ebp),%edi
fstl (%edi,%eax)
for (i=1; i<=100; i=i+1) { faddl (%ecx,%eax)
A[i+1] = A[i] + B[i]; /* S1 */ incl %edx
} addl $8,%eax
cmpl $999,%edx
jle .L75
- Nem todas linguagens produzem códigos que sejam tratados com vetorização;
S4
ALU
ALU
S1 S2 S3 S5
Intruction
Intruction Operand Write back
decode LOAD
fetch unit fetch unit unit
unit
STORE
Floating
point
Processadores Vetoriais
Processadores Vetoriais
• Os processadores vetoriais são arquiteturas pipelined do tipo SIMD, ou seja, uma única
instrução opera sobre vários dados, no caso, um vetor.
• Uma operação vetorial típica pode adicionar dois vetores com 64 elementos em notação
ponto flutuante para obter um único vetor de resultado com 64 elementos.
• Uma instrução vetorial é equivalente a um “loop” inteiro, onde cada iteração computa
um dos 64 elementos do resultado, atualiza os índices e retorna para o início.
Processadores Vetoriais
Memória-Memória
Arquiteturas mais antigas
Registrador-Registrador
Características:
3 tipos de clusters:
Clusters x Grid
Clusters
Multicore : Multithreading
Escalonador : Vetorização/pipeline
Grid : Hibrido
• Threads - Uma thread ou linha de execução ou ainda fio de execução é a menor seqüência
de instruções programadas que podem ser gerenciados de forma independente por um sistema
operacional.
• Processos filhos (fork)- É uma técnica de cria um novo processo através da duplicação de um
processo existente. O novo processo, conhecido como filho, é uma cópia exata do processo
de chamada, conhecido como o pai. O processo filho tem um conjunto próprio de recursos de
memória, PID, tempos de CPU, entre outros atributos como bloqueios.