Você está na página 1de 9

Prof. Mario F. G.

Boaratti - Arquitetura de Computadores

EXECUÇÃO PARALELA DE INSTRUÇÕES

A busca por máquinas mais rápidas é uma constante pelos projetistas. As máquinas
podem ser aceleradas simplesmente aumentando a velocidade do hardware, por
exemplo, aumentando a freqüência do clock. Contudo limites físicos como a velocidade
de propagação no cobre que é de aproximadamente 20 cm/ns é um problema. Isto
significa que, para construir um computador com tempo de instrução de
1 nanossegundo, a distância total que os sinais elétricos podem viajar dentro da CPU,
para a memória, e de volta à CPU não pode ser maior que 20 centímetros, Tanenbaum
(2000). A solução é miniaturizar para diminuir o tempo de propagação dos sinais no
chip. Isto gera problemas como o efeito de dissipação térmica (efeito Joule)
potencializados com o aumento do número de componentes no chip. Pela Lei de Moore
o número de transistores integrados em um chip dobra a cada dezoito meses. Só que
isto tem um limite físico, o tamanho do componente.
Os supercomputadores necessitam de sistemas especiais para retirar o calor do
processador, tais como radiadores com água ou com fréon líquido (CFC, um
refrigerante já proibido).
Como solução, em vez de se utilizar uma única CPU de alta velocidade, implementa-se
uma máquina com muitas ULAs mais lentas e mais baratas, ou CPUs completas em
paralelo para se obter o mesmo poder computacional a um custo menor.
Segundo Hennessy e Patterson (2008), há cerca de 40 anos, Flynn [1966] propôs um
modelo simples de categorizar todos computadores, o qual ainda é útil hoje. Ele viu o
paralelismo nos fluxos de instrução e dados exigidos pelas instruções no componente
mais restrito do multiprocessador e colocou todos os computadores em uma dentre
quatro categorias: SISD, SIMD, MIND E MISD.
As máquinas paralelas podem ser divididas em quatro categorias baseando-se nos
fluxos de instruções e de dados que elas têm, Tanenbaum (2000) e Hennessy e
Patterson (2008):
1. SISD: Single Instruction, Single Data. Fluxo único de instruções e de dados;
• Essa categoria é caracterizada pelo processador único e serial.
• Dados armazenados em memória única.
• Arquitetura de um computador serial, que tem uma ULA e um barramento de
dados com uma unidade de controle.

INSTRUÇÃO DADOS
UC UP UM

Figura 1

2. SIMD: Single Instruction, Multiple Data. Fluxo único de instruções e múltiplo de


dados;
• A mesma instrução é executada por múltiplos processadores que usam diferentes
fluxos de dados.
• Computadores SIMD exploram o paralelismo em nível de dados aplicando as
mesmas operações a múltiplos itens de dados em paralelo.
• Cada processador tem sua própria memória de dados (logo, múltiplos dados), mas
existe uma única memória de instrução e processador de controle, que apanha e
despacha as instruções.
• Para aplicações que exibem um paralelismo em nível de dados significativo, a
técnica de SIMD pode ser muito eficiente. As extensões de multimídia são uma

1
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

forma de paralelismo SIMD. As arquiteturas de vetor são a maior classe de


arquiteturas SIMD.
• As técnicas SIMD experimentaram um renascimento nos últimos anos com a
importância crescente do desempenho de gráficos, especialmente para o mercado
de jogos. As técnicas SIMD são o método favorito para se alcançar o alto
desempenho necessário para criar ambientes realistas, tridimensionais, em tempo
real.
D
UP1 ML1

D
UP2 ML2
INSTRUÇÃO
UC
D
UPn MLn

Figura 2

3. MIMD: Multiple Instruction, Multiple Data. Fluxo múltiplo de instruções e de


dados.
• Cada processador apanha suas próprias instruções e opera sobre seus próprios
dados.
• Computadores MIMD exploram o paralelismo em nível de thread, pois múltiplos
threads operam em paralelo. Em geral, o paralelismo em nível de thread é mais
flexível do que o paralelismo em nível de dados e, assim, se aplica de modo mais
geral.
• Como o modelo MIMD pode explorar o paralelismo em nível de thread, ele é a
arquitetura escolhida para processadores de uso geral. Dois outros fatores também
contribuíram para a ascensão dos multiprocessadores, MIMD:
a) Os MIMDs oferecem flexibilidade. Com o suporte correto de hardware e
software, os MIMDs podem funcionar como multiprocessadores de único
usuário, focalizando alto desempenho para uma aplicação, à medida que
multiprocessadores multiprogramados executam muitas tarefas
simultaneamente, ou como alguma combinação dessas funções.
b) Os MIMDs podem se basear nas vantagens de custo-desempenho dos
processadores de prateleira. Na verdade, quase todos os multiprocessadores
montados hoje utilizam os mesmos microprocessadores encontrados nas
estações de trabalho e servidores de único processador. Além do mais, chips
multicore aproveitam o investimento de projeto em um núcleo de único
processador, replicando-o.
c) Uma classe popular de computadores MIMD são os clusters, que normalmente
utilizam componentes padrões e tecnologia de rede padrão, de modo a
aproveitar o máximo possível da tecnologia de commodity (utilizam
processadores de terceiros).

2
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

• Exemplos de MIMD:
a) Com memória compartilhada.
INSTRUÇÃO DADOS
UC1 UP1

Compartilhada
INSTRUÇÃO DADOS

Memória
UC2 UP2

INSTRUÇÃO DADOS
UCn UPn

Figura 3

b) Com memória distribuída.


INSTRUÇÃO DADOS
UC1 UP1 LM1

Interconexão
INSTRUÇÃO DADOS

Rede de
UC2 UP2 LM2

INSTRUÇÃO DADOS
UCn UPn LMn

Figura 4

c) Clusters
ƒ Um grupo de computadores completos interconectados;
ƒ Trabalham juntos como um único recurso;
ƒ Ilusão de ser uma única máquina;
ƒ Cada computador é chamado de nó (node);
ƒ Comunicação via conexões de rede ou diretas.

Standby Server - No Shared Disk

P P P P

High Speed Message Link


M I/O I/O I/O I/O M

Figura 5

Shared Disk (discos compartilhados)

High Speed Message Link


P P I/O I/O P P

M I/O I/O I/O I/O M

RAID

Figura 6

3
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

4. MISD: Multiple Instruction, Single Data. Fluxo múltiplo de instruções e único de


dados.
• Uma sequência de dados é transmitida para um conjunto de processadores;
• Cada processador executa seqüências de instruções deferentes;
• Nenhum multiprocessador comercial desse tipo foi criado até o momento.

Resumindo:
A máquina tradicional de John Von Neumann é SISD. Ela tem apenas um fluxo de
instruções, ou seja, um programa, executado por uma única CPU, e uma memória
contendo seus dados processados.
O paralelismo pode-se dar de duas formas gerais:
1. O paralelismo a nível de instrução, onde o paralelismo é explorado dentro de
instruções individuais para se obter máquinas mais rápidas;
2. O paralelismo ao nível de processador, onde vários processadores trabalham
juntos para a solução de um problema.

PARALELISMO AO NÍVEL DE INSTRUÇÃO

O processo de buscar instruções na memória é um grande gargalo na velocidade de


execução da instrução. Uma solução é a realizar a busca de instruções na memória
antecipadamente, de maneira que estas estejam presentes quando necessárias, em
vez de se esperar pela conclusão de uma leitura da memória. Essas instruções são
armazenadas em um conjunto de registradores denominado buffer de busca
antecipada, ou prefetch buffer. O IBM Stretch (1959), já tinha esta capacidade. A busca
antecipada divide a execução da instrução em duas partes: a busca e a execução
propriamente ditas.
O conceito de pipeline (encadeado, paralelismo, linha de montagem), amplia muito
mais essa estratégia. Em vez de dividir a execução da instrução em apenas duas
partes, muitas vezes ela é dividida em muitas partes (uma dúzia ou mais), cada uma
manipulada por uma parte dedicada do hardware, sendo executadas em paralelo,
Tanenbaum (2007).
Na figura 7 é apresentado um pipeline com cinco unidades, também denominadas
estágios. O estágio 1 (E1) busca a instrução na memória e a coloca em um buffer até
que ela seja necessária. O estágio 2 (E2) decodifica a instrução, determina seu tipo e
de quais operandos ela necessita. O estágio 3 (E3) localiza e busca os operandos, seja
nos registradores, seja na memória. O estágio 4 (E4) realiza o trabalho de executar a
instrução. O estágio 5 (E5) escreve o resultado de volta no registrador adequado.

E1 E2 E3 E4 E5
Unidade de Unidade de Unidade de Unidade de
Unidade de
busca da decodificação da busca de execução da
gravação
Instrução instrução operando instrução

Tanenbaum (2007) pág. 35

Figura 7

4
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

INSTRUÇÃO

E E1 1 2 3 4 5 6 7 8 9
S
T E2 1 2 3 4 5 6 7 8
Á
E3 1 2 3 4 5 6 7 ...
G
I E4 1 2 3 4 5 6
O
S E5 1 2 3 4 5

Tanenbaum (2007) pág. 35

Figura 8

Na figura 8 vemos como a seqüência de instruções é tratada ao longo do tempo pelo


pipeline. No 1º ciclo de relógio, o estágio E1 está trabalhando na instrução 1,
buscando-a na memória. Durante o 2º ciclo do relógio, o estágio E2 decodifica a
instrução 1, enquanto o estágio E1 busca a instrução 2. Durante o 3º ciclo, o estágio E3
busca os operandos para a instrução 1, o estágio E2 decodifica a instrução 2, e o
estágio E1 busca a terceira instrução. Durante o 4º ciclo, o estágio E4 executa a
instrução 1, E3 busca os operandos para a instrução 2, E2 decodifica a instrução 3 e
E1 busca a instrução 4. No 5º ciclo, E5 grava o resultado da instrução 1 no registrador,
o estágio E4 executa a instrução 2 e assim por diante.
O processo é semelhante ao de uma linha de produção, quando um operador termina
de fazer a sua peça ele passa para o seguinte e fica livre para pegar uma nova peça
para trabalhar, a qual veio de um operador anterior.
No pipeline das Figuras 7 e 8, vamos supor que o tempo de ciclo dessa máquina seja
de1 ns (1 x 10-9 s). Para percorrer todo o caminho de cinco estágios uma instrução leva
5 ns. Se a máquina não tivesse pipeline, ela poderia funcionar com uma taxa de
200 MIPS (milhões de instruções por segundo). Como ela tem pipeline ela pode
funcionar muito mais rápido, isto quer dizer que ela entrega uma instrução concluída a
cada ciclo de relógio, ou seja, 1 ns, após a saída da 1ª instrução. O que dá uma taxa
de 1000 MIPS.
Latência: tempo de execução de uma instrução = n x T, onde n é o número de estágios
do pipeline e T é o tempo do ciclo do relógio.
Banda Passante: número de instruções executadas por segundo, cuja unidade é MIPS
- Milhões de Instruções por Segundo.
Instruções de desvio prejudicam o desempenho do pipeline, pois a seqüência de
execução é interrompida.
Segundo Tanenbaum (2000), embora seja empregado um paralelismo interno, uma
máquina pipeline é ainda uma máquina SISD, pois há apenas um programa e um
conjunto de dados.

• Arquitetura Superescalar
A figura 9 mostra uma estrutura com dois pipelines, onde uma única unidade de busca
de instruções busca pares de instruções ao mesmo tempo e coloca cada uma delas em
seu próprio pipeline, completo com sua própria ALU para operação paralela. Para
poder executar em paralelo, as duas instruções não devem ter conflito de utilização de
5
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

recursos (por exemplo, registradores) e nenhuma deve depender do resultado da outra.


Assim como em um pipeline único, ou o compilador deve garantir que essa situação
aconteça ou os conflitos são detectados e eliminados durante a execução usando
hardware extra.

E1 E2 E3 E4 E5
Unidade de Unidade de Unidade de
Unidade de
decodificação busca de execução da
gravação
da instrução operando instrução
Unidade de
busca da
Instrução
Unidade de Unidade de Unidade de Unidade de
decodificação busca de execução da
da instrução operando instrução
gravação

Figura 9 Tanenbaum (2007) pág. 36

Segundo Tanenbaum (2007), A definição de superescalar é usada para descrever


processadores que executam múltiplas instruções freqüentemente quatro ou seis em
um único ciclo de relógio. A CPU superescalar deve ter várias unidades funcionais
pelas quais passam todas as instruções.
Na figura 10 vemos um processador superescalar com cinco unidades funcionais. É um
pipeline único, mas dotado de vários estágios de execução trabalhando em paralelo. O
ganho de desempenho se deve ao fato que os estágios anteriores do pipeline são
capazes de distribuir instruções a uma velocidade bem maior do que o estágio de
execução tem capacidade para executá-las.

E4

ULA

ULA
E1 E2 E3 E5
Unidade de Unidade de Unidade de
Unidade de
busca da decodificação busca de LOAD
gravação
Instrução da instrução operando

STORE

Ponto
flutuante

Tanenbaum (2007) pág. 37

Figura 10

6
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

• Arquitetura com Paralelismo de Processador

o Máquina vetorial
As máquinas do tipo SIMD operam com muitos conjuntos de dados em paralelo.
Por exemplo, na previsão do tempo onde muitos cálculos devem ser realizados
em paralelo com dados diferentes. Uma arquitetura apropriada para esta tarefa é
uma máquina vetorial, vista na figura 11a, onde o fluxo de dados é distribuído
entre várias ULAS, na forma de um vetor de n entradas. Esta ULA vetorial é
capaz de realizar uma adição vetorial como mostrada na figura 11b, gerando na
saída um novo vetor.

Tanenbaum (2000) pág. 9

Figura 11

o Processador Matricial
Um processador matricial é uma máquina que possui um grande número de
processadores idênticos os quais efetuam a mesma seqüência de instruções em
diferentes conjuntos de dados. Segundo Tanenbaum (2007), o primeiro
processador matricial do mundo foi o ILLIAC IV da Universidade de Illinois,
ilustrado na Figura 12. O plano original era construir uma máquina que
consistisse em quatro quadrantes, cada um deles com uma grade quadrada
8 X 8 de elementos de processador/memória. Uma única unidade de controle
por quadrante transmitia instruções, que eram efetuadas no mesmo passo por
todos os processadores, cada um usando seus próprios dados de sua própria
memória (carregada durante a fase de inicialização). Em função do custo
somente um quadrante foi construído, com desempenho de 50 Megaflops (50
milhões de operações de ponto flutuante por segundo). O processador matricial
é também um exemplo de máquina tipo SIMD.
Os elementos de processamento em um processador matricial não são CPUs
independentes, pois há só uma única unidade de controle compartilhada por
todos eles. Esta unidade de controle distribui instruções em broadcast para
todos os processadores.

7
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

Tanenbaum (2007) pág. 38

Processador matricial do tipo ILLIAC IV

Figura 12

o Multiprocessador
Uma terceira categoria é a máquina tipo MIMD, na qual CPUs diferentes (cada
qual com a sua própria unidade de controle) executam programas diferentes, às
vezes compartilhando alguma memória comum.
Como exemplo pode-se citar um processo de reserva de passagem aérea, onde
reservas simultâneas múltiplas (múltiplos dados) não seguem em paralelo,
instrução por instrução. Deste modo tem-se um fluxo múltiplo de instrução e um
fluxo múltiplo de dados.
Na figura 13a tem-se um exemplo de uma máquina multiprocessada com
memória compartilhada e na figura 13b tem-se um exemplo de uma máquina
multiprocessada com memórias locais, as quais só são acessadas pelo
processador, podendo ser utilizada para itens de programa ou para dados. O
acesso a estas memórias se dá por barramentos locais o que diminui o trafego
do barramento principal e reduz o efeito de conflitos na hora dos acessos à
memória principal.

Tanenbaum (2007) pág. 38

Figura 13
8
Prof. Mario F. G. Boaratti - Arquitetura de Computadores

Referências bibliográficas:
TANENBAUM, Andrew S. Organização estruturada de computadores. 5ª edição. São
Paulo, Ed. Prentice Hall do Brasil, 2007.
TANENBAUM, Andrew S. Organização estruturada de computadores. 3ª edição. Rio de
Janeiro, LTC, 2000.
MONTEIRO, M. A. Introdução à organização de computadores. 3ª edição. Rio de
Janeiro, LTC, 1996.
HENNESSY, J. L. e PATTERSON, D.A. Arquitetura de Computadores. Uma
abordagem quantitativa. 4ª edição. Rio de Janeiro, Elsevier, 2008.

Você também pode gostar