A computer system generally consists of a processor and a memory. During a processing operation, the processor has the responsibility of locating and managing information in memory that is necessary for solving the problem at hand. In other words, memory operates as a slave to the processor and only supplies information to the processor when requested. A problem with this construction is that the processor is not free to process other information while locating or managing the information in memory to be processed.
For larger scale problems requiring high computational demands, parallel processing systems which include multiple processors have been developed for simultaneously solving various aspects of a problem. These systems typically include an array of processors linked to a common memory. Such parallel processing systems are well suited for solving problems involving matrix operations; however, difficulties arise in non-matrix problems because each processor must be programmed so that they are coordinated to timely access stored information to solve various aspects of the problem at hand. Problem solving for non-matrix type problems may often result in a memory bottleneck.
As an example, high-speed execution by parallel processing systems as applied to rule based systems is quite limited. The limited speed of execution is typically due to the large number of rules in such systems, the small number of rules relevant to each change in the data base, the large variation in the processing requirements of relevant rules, and the small number of changes made to the data base between synchronization steps.