An extension of the pipelining approach to processor design where a number of processing elements, usually arranged as a one- or two-dimensional array, form a compound processing unit capable of high throughput. The configuration may be programmable to be optimal for a specific computing requirement and available memory or I/O bandwidth. Such arrays communicate with memory or I/O only at their boundaries. Data is “pulsed” from the memory into processor(s) at an array boundary and then pulses through the array, undergoing processing by each element, until it exits at another boundary and is returned to memory. Each element of the array can contribute to the overall processing required and hence a high data throughput is achievable. The name derives from the systolic (pumping) action of the heart.