Simetria do processadorEditar
Num sistema multiprocessamento, todas as CPUs podem ser iguais, ou algumas podem ser reservadas para fins especiais. Uma combinação de considerações de hardware e de projeto de software do sistema operacional determina a simetria (ou falta dela) em um determinado sistema. Por exemplo, considerações de hardware ou software podem exigir que apenas uma determinada CPU responda a todas as interrupções de hardware, enquanto todo o restante trabalho no sistema pode ser distribuído igualmente entre CPUs; ou a execução do código do modo kernel pode ser restrita a apenas uma determinada CPU, enquanto o código do modo usuário pode ser executado em qualquer combinação de processadores. Sistemas de multiprocessamento são frequentemente mais fáceis de projetar se tais restrições forem impostas, mas tendem a ser menos eficientes do que sistemas nos quais todas as CPUs são utilizadas.
Sistemas que tratam todas as CPUs igualmente são chamados sistemas de multiprocessamento simétrico (SMP). Em sistemas onde todas as CPUs não são iguais, os recursos do sistema podem ser divididos de várias maneiras, incluindo multiprocessamento assimétrico (ASMP), multiprocessamento de acesso não uniforme à memória (NUMA) e multiprocessamento em cluster.
Sistema multiprocessador mestre/escravoEditar
Em um sistema multiprocessador mestre/escravo, a CPU mestre está no controle do computador e a(s) CPU(s) escrava(s) executa(m) tarefas atribuídas. As CPUs podem ser completamente diferentes em termos de velocidade e arquitetura. Algumas (ou todas) das CPUs podem ter barramento comum, cada uma também pode ter um barramento privado (para recursos privados), ou podem estar isoladas, exceto por um caminho de comunicação comum. Da mesma forma, as CPUs podem compartilhar RAM comum e/ou ter RAM privada que o(s) outro(s) processador(es) não pode(m) acessar. As funções de mestre e escravo podem mudar de uma CPU para outra.
Um exemplo antigo de um sistema multiprocessador mestre/escravo é o Tandy/Radio Shack TRS-80 Modelo 16, que saiu em fevereiro de 1982 e rodou o sistema operacional Xenix multiusuário/multi-tarefa, a versão UNIX da Microsoft (chamada TRS-XENIX). O Modelo 16 tem 3 microprocessadores, um CPU Zilog Z80 de 8 bits executado a 4MHz, um CPU Motorola 68000 de 16 bits executado a 6MHz e um Intel 8021 no teclado. Quando o sistema foi inicializado, o Z-80 era o master e o processo de inicialização do Xenix inicializou o escravo 68000, e então transferiu o controle para o 68000, onde as CPUs mudaram de funções e o Z-80 tornou-se um processador escravo responsável por todas as operações de E/S incluindo disco, comunicações, impressora e rede, bem como o teclado e monitor integrado, enquanto o sistema operacional e aplicativos rodavam no CPU 68000. O Z-80 podia ser usado para fazer outras tarefas.
O anterior TRS-80 Modelo II, que foi lançado em 1979, também podia ser considerado um sistema multiprocessador, pois tinha tanto uma CPU Z-80 quanto um microprocessador Intel 8021 no teclado. O 8021 fez do Modelo II o primeiro sistema de computador desktop com um teclado leve destacável conectado por um único fio flexível fino, e provavelmente o primeiro teclado a usar um microprocessador dedicado, ambos atributos que seriam copiados anos mais tarde pela Apple e pela IBM.
Instrução e fluxos de dadosEditar
Em multiprocessamento, os processadores podem ser usados para executar uma única sequência de instruções em múltiplos contextos (instrução única, múltiplos dados ou SIMD, frequentemente usado em processamento vectorial), seqüências múltiplas de instruções em um único contexto (instruções múltiplas, dados únicos ou MISD, usado para redundância em sistemas à prova de falhas e, às vezes, aplicado para descrever processadores encanados ou hiper-rotações), ou seqüências múltiplas de instruções em contextos múltiplos (instruções múltiplas, dados múltiplos ou MIMD).
Acoplamento de processadorEdit
Sistema multiprocessador firmemente acopladoEdit
Sistemas multiprocessador firmemente acoplados contêm várias CPUs que estão conectadas ao nível do barramento. Essas CPUs podem ter acesso a uma memória central compartilhada (SMP ou UMA), ou podem participar de uma hierarquia de memória com memória local e compartilhada (SM)(NUMA). A IBM p690 Regatta é um exemplo de um sistema SMP de alto nível. Os processadores Intel Xeon dominaram o mercado de multiprocessadores para PCs empresariais e foram a única opção x86 importante até o lançamento da gama de processadores Opteron da AMD em 2004. Ambas as gamas de processadores tinham seu próprio cache onboard mas forneciam acesso à memória compartilhada; os processadores Xeon via um pipe comum e os processadores Opteron via caminhos independentes para a RAM do sistema.
Multiprocessadores de chip, também conhecidos como computação multi-core, envolvem mais de um processador colocado em um único chip e podem ser pensados na forma mais extrema de multiprocessamento firmemente acoplado. Sistemas mainframe com vários processadores são frequentemente acoplados firmemente.
Sistema multiprocessador frouxamente acopladoEditar
Sistemas multiprocessadores frouxamente acoplados (geralmente chamados de clusters) são baseados em vários computadores de commodity de processador simples ou duplo autônomo interligados através de um sistema de comunicação de alta velocidade (Gigabit Ethernet é comum). Um cluster Linux Beowulf é um exemplo de um sistema frouxamente acoplado.
Sistemas rigidamente acoplados têm melhor desempenho e são fisicamente menores que os sistemas frouxamente acoplados, mas historicamente têm exigido maiores investimentos iniciais e podem depreciar-se rapidamente; nós em um sistema frouxamente acoplado são geralmente computadores de commodities baratos e podem ser reciclados como máquinas independentes após a aposentadoria do cluster.
O consumo de energia também é uma consideração. Sistemas rigidamente acoplados tendem a ser muito mais eficientes em termos energéticos do que os clusters. Isto porque a economia considerável pode ser realizada projetando componentes para trabalharem juntos desde o início em sistemas rigidamente acoplados, enquanto sistemas frouxamente acoplados usam componentes que não foram necessariamente destinados especificamente para uso em tais sistemas.
Sistemas frouxamente acoplados têm a capacidade de executar diferentes sistemas operacionais ou versões de SO em diferentes sistemas.