![]() | This articleis written like apersonal reflection, personal essay, or argumentative essay that states a Wikipedia editor's personal feelings or presents an original argument about a topic. Pleasehelp improve it by rewriting it in anencyclopedic style.(April 2017) (Learn how and when to remove this message) |
![]() | This article mayrequirecleanup to meet Wikipedia'squality standards. The specific problem is:Subsubsectionclassification controversy contains near-duplicate content ofSystolic array#Classification controversy that may need consolidation. Please helpimprove this article if you can.(July 2025) (Learn how and when to remove this message) |
Flynn's taxonomy |
---|
Single data stream |
Multiple data streams |
SIMD subcategories[1] |
See also |
Incomputing,multiple instruction, single data (MISD) is a type ofparallel computingarchitecture where many functional units perform different operations on the same data.Pipeline architectures belong to this type, though a purist might say that the data is different after processing by each stage in the pipeline.Fault tolerance executing the same instructions redundantly in order to detect and mask errors, in a manner known astask replication, may be considered to belong to this type. Applications for this architecture are much less common thanMIMD andSIMD, as the latter two are often more appropriate for common data parallel techniques. Specifically, they allow better scaling and use of computational resources. However, one prominent example of MISD in computing are theSpace Shuttle flight control computers.[2]
Systolic arrays (<wavefront processors), first described byH. T. Kung andCharles E. Leiserson are an example ofMISD architecture. In a typical systolic array,parallel inputdata flows through a network of hard-wiredprocessornodes, resembling the humanbrain which combine, process,merge orsort the input data into a derived result.
Systolic arrays are often hard-wired for a specific operation, such as "multiply and accumulate", to perform massivelyparallel integration,convolution,correlation,matrix multiplication or data sorting tasks. A systolic array typically consists of a large monolithic network of primitive computingnodes, which can be hardwired or software-configured for a specific application. The nodes are usually fixed and identical, while the interconnect is programmable. More general wavefront processors, by contrast, employ sophisticated and individually programmable nodes which may or may not be monolithic, depending on the array size and design parameters. Because thewave-like propagation of data through asystolic array resembles thepulse of the human circulatory system, the name systolic was coined from medical terminology.
A significant benefit of systolic arrays is that all operand data and partial results are contained within (passing through) the processor array. There is no need to access external buses, main memory, or internal caches during each operation, as with standard sequential machines. The sequential limits on parallel performance dictated byAmdahl's law also do not apply in the same way because data dependencies are implicitly handled by the programmable node interconnect.
Therefore, systolic arrays are extremely good at artificial intelligence, image processing, pattern recognition, computer vision, and other tasks that animal brains do exceptionally well. Wavefront processors, in general, can also be very good at machine learning by implementing self-configuring neural nets in hardware.
While systolic arrays are officially classified as MISD, their classification is somewhat problematic. Because the input is typically a vector of independent values, the systolic array is notSISD. Since theseinput values are merged and combined into the result(s) and do not maintain theirindependence as they would in aSIMD vector processing unit, thearray cannot be classified as such. Consequently, the array cannot be classified as aMIMD either, since MIMD can be viewed as a mere collection of smaller SISD and SIMD machines.
Finally, because the dataswarm is transformed as it passes through the array from node to node, the multiple nodes are not operating on the same data, which makes the MISD classification amisnomer. The other reason why a systolic array should not qualify as aMISD is the same as the one which disqualifies it from the SISD category: The input data is typically a vector, not asingledata value, although one could argue that any given input vector is a single dataset.
The above notwithstanding, systolic arrays are often offered as a classic example of MISD architecture in textbooks on parallel computing and in the engineering class. If the array is viewed from the outside asatomic it should perhaps be classified asSFMuDMeR =single function, multiple data, merged result(s).[3][4][5][6]
{{cite book}}
: CS1 maint: location (link)