Virtual Signal Processing (VDSP) [Mellinger et al., 1991] was an environment for digital signal processing in terms of a virtual processors and its associated virtual data. This environment for vectorized signal processing was implemented in Smalltalk-80 and it was hardware independent. As Javelina, VDSP is currently discontinued.
In VDSP a virtual processor is an object that provides a means for allocating and deallocating data objects, a standard set of vectors, scalar and vector-scalar operations, input/output to external devices capable of handling data formats commonly used in signal processing, and it provides communication between real processors and the user's computing environment.
Virtual data encapsulates the data and offered the following functionality: they provide a handle that is used by the virtual processor, they provide representations of useful data types, and they respond to messages requesting operations on their data by invoking the corresponding operation on a virtual processor. For instance, multiplying two arrays of integers using a virtual processor means: (1) send a message telling the virtual processor to allocate two vector objects whose contents are obtained from the two Arrays; (2) tell one vector to multiply itself by the other; (3) tell the result vector to make a new Smalltalk Array whose contents are the data of the result vector.
VDSP is not an optimizing compiler but rather a portable high-level interface to common signal-processing functionality. It is not a stream computation system, at user request it performs one operation on one block of data at a time. It has a primitive kernel made up of operations such as addition or multiplication.