Caso II: Necessidade de um controlador simples Este caso ocorre em três situações: II.1) Quando o número de unidades lógico-aritméticas é menor do que o número
3.4. ARQUITETURAS PARA PROCESSAMENTO PARALELO
3.4.3. MÁQUINAS MIMD
Máquinas MIMD (Multiple Instruction Stream, Multiple Data Stream) executam vários fluxos de instruções sobre diferentes fluxos de dados, ao mesmo tempo. Nesta categoria se inclui a maioria dos sistemas multiprocessadores. A diferença em relação a multiprocessadores SISD está no fato de que os processadores de um computador MIMD tratam diferentes partes de uma mesma tarefa, interagindo entre si. Um computador MIMD é dito fortemente acoplado se o grau de interação entre os processadores é alto; caso contrário, é considerado fracamente acoplado. A maioria dos computadores MIMD existentes é fracamente acoplada. A figura 3.10 mostra a arquitetura básica de uma máquina MIMD.
Tal como ocorre com máquinas SIMD, máquinas MIMD podem ser divididas em duas categorias, uma vez que os fluxos de dados são derivados ou de uma memória compartilhada pelos processadores ou de um sistema de memória distribuída. Estas categorias são descritas na seqüência.
UC ==> Unidade de Controle UP ==> Unidade de Processamento SM ==> Sistema de Memória ML ==> Memória Local de cada UP FI ==> Fluxo de Instruções FD ==> Fluxo de Dados UC1 FI0 FI1 FIn FD FD FI0 FIn FI1 UP0 UC0 UP1 UPn UCn SM ML0 ML1 MLn
Figura 3.10. Arquitetura básica de uma máquina MIMD.
3.4.3.1. MÁQUINAS SM-MIMD
A máquina vetorial uniprocessadora mostrada na figura 3.7 pode ser considerada uma subclasse de máquinas SM-MIMD, constituindo-se num caso especial de um tipo mais genérico. Naquela figura, é possível a inserção de mais de um FPU, IP ou VPU, transformando aquela arquitetura em uma máquina vetorial multiprocessadora.
O principal problema em máquinas de memória compartilhada está na interconexão de CPUs e destas com a memória. Conforme mais CPUs forem adicionadas, o ideal seria a largura da banda de memória (bandwidth) aumentar linearmente com o número de processadores. Outra situação ideal seria a de processadores se comunicarem diretamente um com o outro, sem usar a memória como intermediária. Entretanto, esta situação encareceria em muito o custo da interconexão, a qual cresceria na ordem de O(n2) para um crescimento no número de processadores de ordem O(n).
A figura 3.11 apresenta algumas alternativas de estrutura de interconexão. A estrutura crossbar utiliza n2 conexões, a rede Ω utiliza nlogΩ 2n conexões e o barramento
utiliza somente uma conexão. Na estrutura crossbar, cada canal de comunicação é direto e não é compartilhado com outros elementos. Na rede ΩΩ há log n estágios de chaveamento, limitando neste valor a quantidade de itens de dados que podem competir por alguma conexão. No barramento, todos os dados devem compartilhar o mesmo meio, de maneira que n itens de dados possam competir por vez [18].
A conexão por barramento é a opção mais barata, embora seja a mais propensa a causar queda de desempenho devido à ocorrência de contenções. Há projetos que associam caches à CPU para minimizar o tráfego no barramento. Contudo, isto leva a uma estrutura mais complicada, elevando o custo. Na prática, é difícil projetar barramentos que sejam
UC ==> Unidade de Controle UP ==> Unidade de Processamento SM ==> Sistema de Memória ML ==> Memória Local de cada UP FI ==> Fluxo de Instruções FD ==> Fluxo de Dados UP0 FI0 UC0 UP1 FI1 UC1 UPn FIn UCn FI0 FI1 FIn FDn FD1 FD0 ML0 ML1 MLn SM
rápidos o suficiente para atender a crescente velocidade dos processadores, o que limita o número de processadores ligados desta forma a uma quantidade entre 10 e 20 unidades. Em relação a custo e capacidade, a rede ΩΩ constitui uma opção intermediária entre o barramento centralizado e a estrutura crossbar. Em máquinas com um grande número de processadores, as nlog2n conexões tornam-se mais atrativas do que as n² conexões de uma
estrutura crossbar, desde que as chaves nos níveis intermediários sejam suficientemente rápidas para atender a largura de banda exigida. Na rede ΩΩ a largura dos canais de comunicação entre os processadores também é importante: uma rede que utilize 16 links paralelos terá uma largura de banda 16 vezes maior do que uma rede de igual topologia implementada com links seriais.
Em todas as máquinas vetoriais multiprocessadoras, estruturas crossbar são utilizadas [18]. Isto é possível porque o número de processadores nestas máquinas ainda é pequeno (32 na maioria deles). Problemas tecnológicos surgirão à medida que este número aumentar. Ficará mais difícil construir um crossbar de velocidade suficiente para atender a um grande número de processadores, os quais, por sua vez, terão sua velocidade individual incrementada, aumentando o problema de tornar a velocidade do crossbar compatível com a largura de banda exigida pelos processadores.
Figura 3.11. Exemplos de estruturas de interconexão para máquinas SM-MIMD.
a) crossbar entrada saída 0 1 2 3 4 56 7 0 1 2 3 4 5 6 7 c) barramento 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 b) rede Ω 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Memória Rede de Interconexão
Os sistemas discutidos aqui são máquinas MIMD e, como tais, permitem a execução de diferentes tarefas rodando em diferentes processadores simultaneamente. Muitas vezes faz- -se necessária a sincronização entre tarefas e, novamente, a estrutura de interconexão é de suma importância. A maioria dos processadores vetoriais (VPUs) utiliza registradores de comunicação especiais dentro da CPU, os quais possibilitam comunicação direta com outras CPUs durante a sincronização. Alguns sistemas fazem sincronização através da memória compartilhada. Por ser muito mais lento, este mecanismo é aceitável em casos onde a necessidade por sincronização é pouco freqüente. Em sistemas baseados em barramento, a comunicação também é feita via barramento. Na maioria destes sistemas, o barramento de comunicação (visando propósitos de sincronização) é separado do barramento de dados.
3.4.3.2. MÁQUINAS DM-MIMD
Grande parte dos computadores de alto desempenho é de sistemas MIMD com memória distribuída. Estes sistemas são mais difíceis de tratar do que máquinas com memória compartilhada e máquinas DM-SIMD. Nos processadores matriciais (DM-SIMD), as estruturas de dados candidatas à paralelização (vetores e matrizes) são submetidas automaticamente ao arranjo de processadores, através de um sistema em software. Nos sistemas de memória compartilhada, a distribuição dos dados é transparente para o usuário. Já em sistemas DM-MIMD, a distribuição e a troca de dados entre os processadores devem ser explicitadas pelo usuário, o que não é uma tarefa trivial. Entretanto, tal situação tende a mudar com o surgimento de um padrão de software de comunicação nestes sistemas [19].
Sistemas DM-MIMD possuem vantagens claras sobre máquinas de memória compartilhada. O problema de largura de banda é evitado, uma vez que esta aumenta automaticamente com o aumento no número de processadores. Além disso, a velocidade da memória tem menor impacto, porque mais processadores podem ser configurados sem a preocupação com os problemas relativos à largura de banda. Para obterem desempenho máximo comparável com máquinas DM-MIMD, os processadores de máquinas com memória compartilhada deveriam ser muito rápidos, o que obrigaria o aumento de velocidade da memória, para que esta não estrangulasse o sistema.
As desvantagens de sistemas DM-MIMD residem em dois fatores. O primeiro é que a comunicação entre processadores é muito mais lenta do que em sistemas SM-MIMD, prejudicando o desempenho durante a execução de tarefas que exigem uma sobrecarga (overhead) de sincronização. O segundo fator é a baixa velocidade do acesso remoto (em comparação a acesso local) a dados que não estão presentes na memória local de um dado processador. Desta forma, quando a aplicação em execução exige uma troca freqüente de dados entre processadores ou requer muitas sincronizações, é provável que somente uma parcela do ganho teórico de velocidade esperado seja obtida.
Tal como nos sistemas SM-MIMD, aspectos cruciais no projeto de máquinas DM-MIMD recaem na topologia e na velocidade da estrutura de conexão. Uma das estruturas mais utilizadas é a topologia hipercubo (figura 3.12).
Uma característica interessante da topologia hipercubo é que, para um hipercubo com 2d nós, o número máximo de links a serem percorridos entre dois nós (processadores) quaisquer é d. Desta forma, a dimensão da rede cresce logaritmeticamente com o número de nós. Além disso, teoricamente, é possível simular qualquer outra topologia sobre um
hipercubo como, por exemplo, árvores, anéis, meshes bi- ou tri-dimensionais. Na prática, a topologia exata para hipercubos não interessa tanto, uma vez que os sistemas atuais empregam o chamado roteamento wormhole, no qual é montada dinamicamente uma conexão direta entre dois processadores que necessitam comunicar-se: quando a conexão está pronta, os dados são enviados de um processador para o outro, sem interferir na operação dos nós intermediários. Exceto pelo pequeno tempo gasto na montagem da conexão, o tempo de comunicação tende a ser virtualmente independente da distância entre os nós.
Figura 3.12. Conexões hipercubo de 1, 2, 3 e 4 dimensões.
Muitos dos sistemas DM-MIMD maciçamente paralelos adotam a estrutura mesh bi- ou tri-dimensional. A razão para isso parece ser que a maioria de simulações físicas em alta- -escala pode ser eficientemente mapeada sobre esta topologia, além do fato de que estruturas mais sofisticadas dificilmente vingam [18]. Entretanto, há sistemas que mantêm uma ou mais redes agregadas ao mesh para tratar certos gargalos na distribuição e recuperação de dados [20].
Boa parte dos sistemas DM-MIMD emprega estrutura crossbar. Crossbars de 1 estágio são empregados em sistemas com um número relativamente pequeno de processadores (em torno de 64). Para sistemas com um grande número de processadores, são utilizados
crossbars multi-estágio, nos quais as conexões de um crossbar no nível 1 estão também
conectadas a um crossbar no nível 2, e assim por diante, ao invés de existirem ligações diretas entre nós muito distantes. Desta forma, é possível conectar alguns milhares de nós, utilizando- -se somente de alguns estágios de chaveamento. Redes ΩΩ também são utilizadas em sistemas DM-MIMD, dentre outros tipos de interconexão.
Tal como ocorre em máquinas SM-MIMD, a princípio um nó pode ser qualquer tipo de processador (escalar ou vetorial), trabalhando com memória local (com ou sem cache) ou acionando (na maioria dos casos) processadores especializados em comunicação, que conectam um nó com a sua vizinhança. Atualmente, a maioria dos nós é de processadores comerciais RISC, algumas vezes acompanhados de processadores vetoriais.
d = 1
d = 2