Multiple Instruction Single Data - MISD


Na taxonomia de Flynn, MISD significa “Multiple Instruction, Single Data” (Múltiplas Instruções, Dado Único).

Nesse modelo, várias instruções diferentes são aplicadas a um único conjunto de dados de forma independente. Cada unidade de processamento executa uma operação distinta sobre o mesmo dado, geralmente em paralelo ou em sequência, dependendo da implementação.

Principais características:

  • Múltiplas instruções operam sobre o mesmo dado.
  • Não há paralelismo de dados (apenas um conjunto de dados é processado), mas há diversidade nas operações.
  • É um modelo teórico raro em arquiteturas reais, pois não é comum em computadores de propósito geral.

O MISD é mais um conceito abstrato do que uma arquitetura amplamente implementada. No entanto, ele pode ser associado a sistemas onde o mesmo dado é analisado por diferentes algoritmos ou pipelines, como em sistemas tolerantes a falhas (onde várias operações verificam a integridade de um dado) ou em experimentos teóricos de computação.

Exemplo

Imagine um sistema de controle de qualidade em uma linha de produção que verifica a Ascensão e descida de uma peça metálica. O mesmo dado (a peça) é submetido a múltiplas verificações independentes:

  1. Verificar o peso da peça.
  2. Medir a espessura da peça.
  3. Testar a resistência à corrosão.

Aqui, o dado único é a peça metálica, e cada teste (instrução) é uma operação distinta aplicada a ela. Esses testes podem ser realizados em paralelo por diferentes máquinas ou módulos, mas todos operam sobre o mesmo objeto (dado).

Aplicação em Código (C++)

Como o MISD não é uma arquitetura comum em hardware real, vamos simular o conceito em software, onde diferentes funções (instruções) processam o mesmo dado. No exemplo abaixo, aplicaremos três operações distintas (adição, multiplicação e subtração) a um único valor de entrada.

#include <iostream>
using namespace std;
 
// Funções representando diferentes instruções
int adicionar(int dado, int valor) {
    return dado + valor;
}
 
int multiplicar(int dado, int valor) {
    return dado * valor;
}
 
int subtrair(int dado, int valor) {
    return dado - valor;
}
 
int main() {
    // Dado único
    int dado = 10;
    int valor = 5;
 
    // Aplicação de múltiplas instruções ao mesmo dado
    int resultado1 = adicionar(dado, valor);     // Instrução 1: Adição
    int resultado2 = multiplicar(dado, valor);   // Instrução 2: Multiplicação
    int resultado3 = subtrair(dado, valor);      // Instrução 3: Subtração
 
    // Exibição dos resultados
    cout << "Dado original: " << dado << endl;
    cout << "Resultado da adição: " << resultado1 << endl;
    cout << "Resultado da multiplicação: " << resultado2 << endl;
    cout << "Resultado da subtração: " << resultado3 << endl;
 
    return 0;
}
  1. Dado único:

    • A variável dado (valor 10) representa o conjunto único de dados que será processado por todas as instruções.
  2. Múltiplas instruções:

    • Três funções (adicionar, multiplicar, subtrair) simulam diferentes operações aplicadas ao mesmo dado. Cada função é uma “instrução” distinta.
    • O parâmetro valor (5) é usado como operando adicional para as operações.
  3. Execução:

    • As instruções são aplicadas sequencialmente no código, mas em um sistema MISD teórico, elas poderiam ser executadas em paralelo por diferentes unidades de processamento, cada uma com sua própria lógica.
    • Resultados:
      • Adição: 10 + 5 = 15
      • Multiplicação: 10 * 5 = 50
      • Subtração: 10 - 5 = 5
  4. Saída:

    • O programa exibe o dado original e os resultados das três operações.

Warning

Esse código é uma simplificação, pois em uma CPU real as instruções são executadas sequencialmente (SISD). Para refletir o MISD de forma mais fiel, precisaríamos de uma arquitetura hipotética com múltiplas unidades de processamento, cada uma executando uma instrução diferente sobre o mesmo dado em paralelo. Na prática, isso poderia ser simulado com threads ou processos paralelos, mas o exemplo acima ilustra o conceito em um contexto mais acessível.

Referências


Aula 06-03-2025