並行計算將大任務分割成能夠同時執行的小任務,SIMD和MIMD是兩種使用多處理器甚至多機器進行並行計算的架構。SIMD表明一條指令處理多條數據組成的數據流,MIMD支持多條指令處理多條數據組成的數據流。SIMD和SIMD實現類似的基本功能,可是它們在實際使用和技術實現上都是不一樣的。算法
SIMD架構在多條數據上同時執行同一條命令,包括查詢、計算和存儲信息的命令。一個使用的示例是同時檢索多個文件。具備局部內存的處理器以同步的方式使用同一條命令處理不一樣的數據,經過多處理器間通訊來實現移位分配。架構
MIMD架構在大量數據集上同時執行多條命令。一個使用示例是執行各類數學運算(如加法,乘法),使用不少分離的計算組件,按照順序同時解決複雜的數學問題。MIMD多是也可能不是同步的,比SIMD計算愈來愈常見。併發
SIMD一般用於處理器執行大量計算的問題,這些計算須要處理器並行執行相同命令。MIMD經常使用於以下場景:將複雜算法分割爲無關的、獨立的部分,每一個部分分配給一個不一樣的處理器來併發處理的解決方案。翻譯
SIMD和MIMD在技術實現上也不一樣。SIMD的處理器一般更簡單、更小、更便宜,也比MIMD處理器更快。可是MIMD可以處理複雜的多的操做。使用SIMD模擬實現MIMD操做,會花費更多的時間。SIMD要順序的執行復雜操做,但是SIMD處理器可以並行的處理。內存