한국   대만   중국   일본 
SIMD ? Wikipedia, a enciclopedia livre Saltar para o conteudo

SIMD

Origem: Wikipedia, a enciclopedia livre.
Single instruction, multiple data [Instrucao unica, dados multiplos]

O modelo Single Instruction, Multiple Data (conhecido pelo acronimo SIMD ) e um metodo de operacao de computadores com varias unidades operacionais em computacao paralela ; onde a mesma comando/ instrucao e aplicada simultaneamente a diversos dados para produzir mais resultados - modelo adequado para o tratamento de conjuntos regulares de dados como matrizes e vetores trabalhados com um unico comando - tecnicamente, sendo uma maquina que aplique a "n" elementos uma determinada instrucao e o vetor "t" contenha os elementos a serem processados, "t" tera todos seus elementos calculados "n" vezes mais rapido que uma maquina SISD na mesma tarefa.

Historia [ editar | editar codigo-fonte ]

As primeiras maquinas SIMD foram os supercomputadores, estas maquinas sao tambem chamadas de “processadores de vetor”, por funcionarem com vetores de comprimento. Depois se tornaram mais frequentes em computadores pessoais, com o surgimento dos jogos de video em tempo real. Isso criou uma grande demanda para um determinado tipo de poder computacional, fazendo com que os fabricantes migrassem para o SIMD. A primeira implantacao ampla de jogos de video foram para as extensoes SIMD MMX para a arquitetura x86 da Intel. Depois para a IBM e a Motorola com a AltiVec para a arquitetura POWER, houve varias extensoes para ambos os conjuntos de arquiteturas SIMD. Todos estes desenvolvimentos foram orientados para o apoio real, graficos, tempo e, portanto, vetores orientados de dois, tres ou quatro dimensoes. Atualmente, um supercomputador quase sempre e um grupo de maquinas MIMD, com instrucoes SIMD sendo aplicadas com vetores de curto prazo, nas maquinas desktop sao usados multiprocessadores MIMD, onde cada processador pode executar instrucoes Short SIMD. As instrucoes SIMD foram adicionadas para processadores modernos para melhorar a velocidade de processamento em calculos envolvendo numeros de ponto flutuante. [ 1 ] [ 2 ]

Arquitetura [ editar | editar codigo-fonte ]

Computadores SIMD sao utilizados para a resolucao de problemas computacionalmente intensivos da area cientifica e de engenharia, em que existem estruturas de dados como vetores e matrizes. Essas maquinas sao caracterizadas por possuirem apenas uma unidade de controle que executa uma instrucao de cada vez, mas cada instrucao opera sobre varios dados. E uma classe importante de processadores, devido a fatores como: simplicidade de conceitos e programacao, regularidade da estrutura, facilidade de escalabilidade em tamanho e desempenho, aplicacao direta em uma serie de aplicacoes que requerem paralelismo para obter o desempenho necessario , os processadores executam sincronizadamente a mesma instrucao sobre dados diferentes.Utiliza-se varios processadores especiais muito mais simples, organizados em geral de forma matricial. Muito eficiente em aplicacoes onde cada processador pode ser associado a uma sub-matriz independente de dados (processamento de imagens, algoritmos matematicos, etc.).

Tipos de arquiteturas [ editar | editar codigo-fonte ]

Existem duas categorias de maquinas SIMD: processadores matriciais (array processors) e processadores vetoriais (vector processors). Os processadores matriciais nao implementam funcoes escalares e, geralmente, sao configurados como perifericos de outras arquiteturas (mainframes e minicomputadores)para a execucao da porcao vetorial dos programas. Ja os processadores vetoriais sao mais bem sucedidos comercialmente que os matriciais. Parte do seu sucesso deve-se ao fato de que um processador vetorial e uma arquitetura de uso geral, capaz de executar todas as operacoes escalares normais. Uma primeira caracterizacao dos processadores vetoriais diz respeito ao acesso a memoria, e a arquiteturas orientadas a registradores e as arquiteturas orientadas a memoria. A grande maioria dos computadores vetoriais produzidos a partir de 1980 sao orientados a registradores. Quanto as unidades funcionais, os computadores vetoriais podem ser de dois tipos:

  • ULAs pipeline;
  • ULAs paralelas;

Na pratica, poucos computadores vetoriais sao construidos com ULAs paralelas, muito mais por razoes economicas do que por razoes tecnicas. Um projeto com 64ULAs de alta velocidade pode inviabilizar a comercializacao, mesmo de um supercomputador (que custa em torno de 10 a 15 milhoes de dolares). O metodo mais utilizado e a combinacao de processamento vetorial com arquitetura pipeline. Operacoes com ponto flutuante sao complexas e necessitam de uma serie de passos (varios passos? pipeline!) para serem executadas. A realizacao das operacoes envolve a comparacao dos expoentes, o ajuste dos expoentes, a execucao da operacao propriamente dita e a normalizacao do resultado. Uma grande diferenca entre a utilizacao de pipeline em processamento vetorial e em processamento de uso geral e a ausencia de desvios na operacao vetorial. Desta forma, todos os ciclos sao utilizados e nao ocorrem paradas (stalls).

Vantagens [ editar | editar codigo-fonte ]

As aplicacoes que utilizam o SIMD sao aquelas em que o mesmo valor esta sendo adicionado (ou subtraido) em um grande numero de pontos de dados, uma operacao comum em muitas aplicacoes multimidia. Um exemplo seria mudar o brilho de uma imagem. Cada pixel da imagem e composto por tres valores para o brilho das porcoes vermelho, verde e azul da cor. Para alterar o brilho, o RG e os valores de B sao lidos da memoria, um valor e adicionado (ou subtraido) a partir deles, e os valores resultantes sao gravados de volta a memoria. Com um processador SIMD, uma serie de valores podem ser carregados de uma so vez. Em vez de uma serie de instrucoes, um processador SIMD tera uma unica instrucao que efetivamente obtem lotes de pixels. Por uma serie de razoes, isto pode demorar muito menos tempo do que obter cada pixel individualmente, como na concepcao tradicional da CPU. Outra vantagem e que os sistemas de SIMD geralmente incluem apenas as instrucoes que podem ser aplicados a todos os dados em uma unica operacao. Em outras palavras, se o sistema SIMD funciona atraves do carregamento de oito pontos de dados de uma so vez, a operacao aplicada aos dados acontecera com todos os oito valores, ao mesmo tempo. O nivel de paralelismo em um sistema SIMD e normalmente muito mais elevado.

Desvantagens [ editar | editar codigo-fonte ]

  • Nem todos os algoritmos podem ser vetorizados. Por exemplo, um fluxo de controle de tarefas pesadas como analise de codigo nao se beneficiaria com o SIMD.
  • A implementacao de um algoritmo com as instrucoes SIMD geralmente requer trabalho humano, a maioria dos compiladores nao geram instrucoes SIMD de um programa C comum.
  • Programacao com conjuntos de instrucoes SIMD particulares podem envolver numerosos desafios de baixo nivel. [ 3 ]

Software [ editar | editar codigo-fonte ]

O desenvolvimento de software para computadores pessoais SIMD inicialmente avancou lentamente. Isto era devido a duas ameacas simultaneas. O primeiro problema foi devido ao fato de que a Intel e a AMD decidiram salvar registros para usar como instrucoes para a CPU. O segundo problema foi a gestao deficiente dos compiladores. Inicialmente, os compiladores nao foram capazes de gerar eficazmente as instrucoes SIMD e, portanto, muitas vezes os programadores que queriam usar essas instrucoes foram obrigados a programar em assembly. O software SIMD teve um inicio lento em maquinas x86, apos o melhoramento dos compiladores, a Intel lancou as instrucoes SSE que resolveram os principais problemas das instrucoes anteriores do SIMD. Atualmente o software SIMD esta se espalhando rapidamente. As unidades computacionais AltiVec usadas pela Apple disponibilizam tambem instrucoes SIMD, semelhantes as instrucoes MMX da Intel . A Apple tambem coloca enfase nas instrucoes SIMD porque muitos de seus programas como o QuickTime e o iTunes usam instrucoes SIMD.

Referencias

  1. ≪MIMD1 - XP/S, CM-5≫ (PDF)  
  2. Conte, G.; Tommesani, S.; Zanichelli, F. (2000). ≪The long and winding road to high-performance image processing with MMX/SSE≫. Proc. Fifth IEEE Int'l Workshop on Computer Architectures for Machine Perception . doi : 10.1109/CAMP.2000.875989 . hdl : 11381/2297671  
  3. Patterson, David; Waterman, Andrew (18 de setembro de 2017). ≪SIMD Instructions Considered Harmful≫ . SIGARCH  

Ligacoes externas [ editar | editar codigo-fonte ]

Ícone de esboço Este artigo sobre computacao e um esboco . Voce pode ajudar a Wikipedia expandindo-o .