Arquitetura de Computador Paralelo - Modelos

O processamento paralelo foi desenvolvido como uma tecnologia eficaz em computadores modernos para atender à demanda por maior desempenho, menor custo e resultados precisos em aplicações da vida real. Os eventos simultâneos são comuns nos computadores de hoje devido à prática de multiprogramação, multiprocessamento ou multicomputação.

Os computadores modernos possuem pacotes de software extensos e poderosos. Para analisar o desenvolvimento do desempenho dos computadores, primeiro temos que entender o desenvolvimento básico de hardware e software.

  • Computer Development Milestones - Existem dois estágios principais de desenvolvimento do computador - mechanical ou electromechanicalpartes. Os computadores modernos evoluíram após a introdução de componentes eletrônicos. Elétrons de alta mobilidade em computadores eletrônicos substituíram as partes operacionais em computadores mecânicos. Para a transmissão de informações, o sinal elétrico que viaja quase à velocidade de uma luz substituiu as engrenagens ou alavancas mecânicas.

  • Elements of Modern computers - Um sistema de computador moderno consiste em hardware de computador, conjuntos de instruções, programas aplicativos, software de sistema e interface de usuário.

Os problemas de computação são categorizados como computação numérica, raciocínio lógico e processamento de transações. Alguns problemas complexos podem precisar da combinação de todos os três modos de processamento.

  • Evolution of Computer Architecture- Nas últimas quatro décadas, a arquitetura do computador passou por mudanças revolucionárias. Começamos com a arquitetura Von Neumann e agora temos multicomputadores e multiprocessadores.

  • Performance of a computer system- O desempenho de um sistema de computador depende da capacidade da máquina e do comportamento do programa. A capacidade da máquina pode ser aprimorada com melhor tecnologia de hardware, recursos arquitetônicos avançados e gerenciamento de recursos eficiente. O comportamento do programa é imprevisível, pois depende do aplicativo e das condições de tempo de execução

Multiprocessadores e multicomputadores

Nesta seção, discutiremos dois tipos de computadores paralelos -

  • Multiprocessors
  • Multicomputers

Multicomputadores de memória compartilhada

Os três modelos mais comuns de multiprocessadores de memória compartilhada são -

Acesso uniforme à memória (UMA)

Neste modelo, todos os processadores compartilham a memória física uniformemente. Todos os processadores têm igual tempo de acesso a todas as palavras de memória. Cada processador pode ter uma memória cache privada. A mesma regra é seguida para dispositivos periféricos.

Quando todos os processadores têm acesso igual a todos os dispositivos periféricos, o sistema é chamado de symmetric multiprocessor. Quando apenas um ou alguns processadores podem acessar os dispositivos periféricos, o sistema é chamado deasymmetric multiprocessor.

Acesso não uniforme à memória (NUMA)

No modelo de multiprocessador NUMA, o tempo de acesso varia com a localização da palavra de memória. Aqui, a memória compartilhada é fisicamente distribuída entre todos os processadores, chamados de memórias locais. A coleção de todas as memórias locais forma um espaço de endereço global que pode ser acessado por todos os processadores.

Arquitetura de memória somente cache (COMA)

O modelo COMA é um caso especial do modelo NUMA. Aqui, todas as memórias principais distribuídas são convertidas em memórias cache.

  • Distributed - Memory Multicomputers- Um sistema multicomputador de memória distribuída consiste em vários computadores, conhecidos como nós, interconectados por rede de passagem de mensagens. Cada nó atua como um computador autônomo com um processador, uma memória local e, às vezes, dispositivos de E / S. Nesse caso, todas as memórias locais são privadas e acessíveis apenas aos processadores locais. É por isso que as máquinas tradicionais são chamadasno-remote-memory-access (NORMA) máquinas.

Computadores multivetores e SIMD

Nesta seção, discutiremos supercomputadores e processadores paralelos para processamento vetorial e paralelismo de dados.

Supercomputadores vetoriais

Em um computador vetorial, um processador vetorial é conectado ao processador escalar como um recurso opcional. O computador host primeiro carrega o programa e os dados na memória principal. Em seguida, a unidade de controle escalar decodifica todas as instruções. Se as instruções decodificadas são operações escalares ou operações de programa, o processador escalar executa essas operações usando pipelines funcionais escalares.

Por outro lado, se as instruções decodificadas são operações vetoriais, as instruções serão enviadas para a unidade de controle vetorial.

Supercomputadores SIMD

Em computadores SIMD, o número 'N' de processadores é conectado a uma unidade de controle e todos os processadores têm suas unidades de memória individuais. Todos os processadores são conectados por uma rede de interconexão.

Modelos PRAM e VLSI

O modelo ideal oferece uma estrutura adequada para desenvolver algoritmos paralelos sem considerar as restrições físicas ou detalhes de implementação.

Os modelos podem ser aplicados para obter limites teóricos de desempenho em computadores paralelos ou para avaliar a complexidade VLSI na área do chip e no tempo operacional antes que o chip seja fabricado.

Máquinas paralelas de acesso aleatório

Sheperdson e Sturgis (1963) modelaram os computadores convencionais de Uniprocessador como máquinas de acesso aleatório (RAM). Fortune e Wyllie (1978) desenvolveram um modelo de máquina de acesso aleatório paralelo (PRAM) para modelar um computador paralelo idealizado com sobrecarga de acesso à memória zero e sincronização.

Um N-processador PRAM tem uma unidade de memória compartilhada. Essa memória compartilhada pode ser centralizada ou distribuída entre os processadores. Esses processadores operam em uma memória de leitura, memória de gravação e ciclo de computação sincronizados. Portanto, esses modelos especificam como as operações simultâneas de leitura e gravação são tratadas.

A seguir estão as possíveis operações de atualização de memória -

  • Exclusive read (ER) - Neste método, em cada ciclo, apenas um processador pode ler de qualquer local da memória.

  • Exclusive write (EW) - Neste método, pelo menos um processador tem permissão para gravar em um local da memória por vez.

  • Concurrent read (CR) - Permite que vários processadores leiam as mesmas informações do mesmo local de memória no mesmo ciclo.

  • Concurrent write (CW)- Permite operações de gravação simultâneas no mesmo local da memória. Para evitar conflito de gravação, algumas políticas são definidas.

Modelo de Complexidade VLSI

Os computadores paralelos usam chips VLSI para fabricar arrays de processadores, arrays de memória e redes de comutação em grande escala.

Hoje em dia, as tecnologias VLSI são bidimensionais. O tamanho de um chip VLSI é proporcional à quantidade de espaço de armazenamento (memória) disponível nesse chip.

Podemos calcular a complexidade espacial de um algoritmo pela área do chip (A) da implementação do chip VLSI desse algoritmo. Se T é o tempo (latência) necessário para executar o algoritmo, então AT fornece um limite superior no número total de bits processados ​​por meio do chip (ou E / S). Para certos cálculos, existe um limite inferior, f (s), de modo que

AT 2 > = O (f (s))

Onde A = área do chip e T = tempo

Trilhas de desenvolvimento arquitetônico

A evolução dos computadores paralelos que divulgo nas seguintes trilhas -

  • Várias trilhas de processador
    • Faixa de multiprocessador
    • Faixa multicomputador
  • Multiple data track
    • Trilha de vetor
    • Pista SIMD
  • Acompanhamento de vários tópicos
    • Faixa multithread
    • Faixa de fluxo de dados

Dentro multiple processor track, presume-se que diferentes threads executam simultaneamente em diferentes processadores e se comunicam por meio de memória compartilhada (trilha de multiprocessador) ou sistema de passagem de mensagens (trilha de multicomputador).

Dentro multiple data track, presume-se que o mesmo código seja executado na grande quantidade de dados. É feito executando as mesmas instruções em uma seqüência de elementos de dados (trilha de vetor) ou por meio da execução de uma mesma seqüência de instruções em um conjunto de dados semelhante (trilha SIMD).

Dentro multiple threads track, presume-se que a execução intercalada de vários threads no mesmo processador para ocultar atrasos de sincronização entre threads em execução em diferentes processadores. A intercalação de thread pode ser grosseira (trilha multithread) ou fina (trilha de fluxo de dados).