Operation Cell Data Processor Systems and Methods
Computer program instruction oriented data processor logic cell that independently determines when its instruction should be processed, data processors made of the aforementioned logic cells, networks made of the aforementioned data processors, and methods of operating the aforementioned.
The following is a tabulation of some prior art that presently appears relevant:
U.S. Patents
Data processors are apparatuses that take one or more pieces of data, perform one or more functions on that data, and output one or more pieces of result data. Data processors have been known in the art in mechanical form for centuries, such as the Greek Antikythera Mechanism, Pascal's calculator, Charles Babbage's Difference Engine, Konrad Zuse's Z1 Computer, and Curt Herzstark's Curta Calculator. Data processors have also been known to have been constructed electromechanically, such as the Harvard Mark I. However, predominantly today, data processors are constructed using solid state electronics. Examples of modern data procesors are Intel's i7 processors, AMD's Ryzen processors, Qualcomm's Snapdragon processors, nVidia's Graphic Processing Units (GPUs), Texas Instrument's Digital Signal Processors (DSPs), Xilinx' Field Programmable Gate Arrasy (FPGAs), Samsung's Exynos Mobile Processors, China's ShenWei processor, and large numbers of microcontrollers by companies such as Zilog, ST, Infineon, Renesas, Microchip, and NXP. There are also efforts in progress to construct data processors from photonic (i.e. light) components and components that are designed to exploit features of quantum mechanics.
For the later half of the 20th century and the very early years of the 21st century, data processor speeds increased exponentially at a pace that was commonly described as Moore's Law. Unfortunately, the pace of increasing data processor speeds has slowed dramatically in recent years. New technological innovations are required to increase the speed of data processors.
Data processors that are able to execute programs that are composed of a stream of instructions are generally referred to as general purpose computers, general purpose data processors, or general purpose processors. Processors such as Intel's i7 processors, AMD's Ryzen processors, Qualcomm's Snapdragon processors, nVidia's GPUs, Texas Instrument's DSPs, and microcontrollers are examples of these kinds of general purpose computers. More examples of general purpose computers are U.S. Pat. No. 8,516,225 to Kitagishi el al., U.S. Pat. No. 3,287,703 to Slotnick, U.S. Pat. No. 3,820,079 to Hamilton et al., U.S. Pat. No. 4,654,857 to Samson et al., and U.S. Pat. No. 5,115,510A to Okamoto.
Gate Arrays are collections of general logic cells. Logic is the underlying circuit elements of a data processor. A logic cell is a collection of logic to perform one or more functions. Logic cells are also a type of data processor component. A general logic cell is a logic cell that has the possibility to perform many possible functions, but does not perform a particular function until it has been configured. Examples of general logic cells are shown in U.S. Pat. No. 8,058,899 to Vorbach et al., U.S. Pat. No. 8,471,593 to Vorbach et al., U.S. Pat. No. 5,065,308 to Evans, U.S. Pat. No. 5,386,154 to Goetting et al., U.S. Pat. No. 4,706,216 to Carter, and U.S. Pat. No. 4,558,236 to Burrows. General logic cells are also a type of data processor component.
Field Programmable Gate Arrays (FPGAs) are arrangements of configurable general logic cells and configurable communication links between these general logic cells. Some FPGAs can be configured to be general purpose data processors that can execute a set of computer program instructions. Examples of FPGAs are exhibited in U.S. Pat. No. 6,449,7088 to Dewhurst et al., U.S. Pat. No. 7,191,312 to Ikeda et al., U.S. Pat. No. 5,426,378 to Ong., and U.S. Pat. No. 5,600,845 to Gilson.
Reconfigurable general purpose processors are general purpose computers whose underlying components can be re-configured for some computational advantage. Examples of reconfigurable computers are shown in U.S. Pat. No. 6,058,469 to Baxter, U.S. Pat. No. 5,784,636 to Rupp, U.S. Pat. No. 3,544,973 to Borck et al., and U.S. Pat. No. 9,037,807 to Vorbach.
Array data processors are data processors that are themselves composed of a connected network of data processors. Examples of array data processors and their components are WO Application 2004053718 by Stefan et al., and U.S. Pat. No. 6,738,891 to Fujii et al., U.S. Pat. No. 6,145,072 to Shams et al., U.S. Pat. No. 6,167,501 to Barry et al., U.S. Pat. No. 4,905,143 to Takahashi et al., U.S. Pat. No. 5,765,015 to Wilkinson et al., U.S. Pat. No. 5,963,746 to Barker et al., U.S. Pat. No. 4,943,912 to Aoyama et al., U.S. Pat. No. 4,933,895 to Grinberg et al., U.S. Pat. No. 4,873,626 to Gifford, U.S. Pat. No. 3,979,728 to Reddaway, U.S. Pat. No. 3,815,095 to Wester, U.S. Pat. No. 3,473,160 to Wahlstrom, and U.S. Pat. No. 5,717,943 to Barker et al.
In general, to achieve future speed increases in data processors, improvements need to be made to the aforementioned technologies.
SUMMARYThe present invention is directed to systems and methods that satisfy the need to increase the speed of data processors.
One embodiment is directed towards a logic cell that holds computer instruction data and independently determines when its associated computer instructions should execute. This logic cell embodiment is a type of operation cell.
Another embodiment is directed towards a data processor comprised of operation cells.
Another embodiment is directed towards a network of data processors that are comprised of data processors that are comprised of operation cells.
Another embodiment is directed towards a method for executing a computer instruction in a data processor comprised of operation cells.
Another embodiment is directed towards a method of forwarding the responsibility to execute an instruction from one operation cell to another operation cell in a data processor system.
Another embodiment is directed towards a method of determining the storage location for the result of an instruction execution in a data processor system comprised of operation cells.
These and other features, aspects, and advantages of the present invention will become better understood with reference to the following description and appended claims.
In the Summary above and in the Detailed Description, and the claims below, and in the accompanying drawings, reference is made to particular features (including method steps) of the invention. It is to be understood that the disclosure of the invention in this specification includes all possible combinations of such particular features. For example, where a particular feature is disclosed in the context of a particular aspect or embodiment of the invention, or a particular claim, that feature can also be used, to the extend possible, in combination with and/or in the context of other particular aspects and embodiments of the invention, and in the invention generally.
The term “comprises” and grammatical equivalents thereof are used herein to mean that other components, ingredients, steps, etc. are optionally present. For example, an article “comprising” (or “which comprises”) components A, B, and C can consist of (i.e., contains only) components A, B, and C but also one or more other components.
Where reference is made herein to a method comprising two or more defined steps, the defined steps can be carried out in any order or simultaneously (except where the context excludes that possibility), and the method can include one or more other steps which are carried out before any of the defined steps (except where the context excludes that possibility).
The term “at least” followed by a number is used herein to denote the start of a range beginning with that number (which may be a range having an upper limit or no upper limit, depending on the variable being defined). For examples, “at least 1” means 1 or more than 1.
The term “operation cell” is used herein to denote a computer program instruction oriented logic cell that that independently determines when its associated instructions are ready to execute. When it has been determined that an instruction is ready to execute, it is said that the instruction has fired or it is said that the operation cell has fired. Operation cells can be used as data processor components which distribute the instruction firing decisions throughout a data processor and generally allow for more opportunities to perform parallel instruction processing than data processors with centralized instruction firing decision units. Additionally, operation cells can be used to forward instruction execution responsibilities from itself to another operation cell in the same data processor or in another data processor. This also presents the opportunity to distribute a program around one or more data processors and provides more opportunities to execute the instructions of that program in parallel. Creating additional parallel execution opportunities in data processors increases the potential speed of those data processors.
One embodiment is directed to a data processor component that comprises one or more computer program instruction data memories, memory, logic to determine when the instructions associated with the component should execute, and logic to interface to other processing elements in a data processing system. This embodiment satisfies the need to make instruction oriented logic cells and the need to make decentralized instruction execution firing decisions in a data processor system. This embodiment is type of operation cell.
Another embodiment is directed to a data processor comprising one or more operation cells, one or more arithmetic logic units, at least one input unit, and at least one output unit. This embodiment satisfies the need for a data processor with decentralized instruction execution firing decisions and the need to make a general purpose computation device. This embodiment is a type of operation cell data processor.
Another embodiment is directed to a network of operation cell data processors. This embodiment satisfies the need to make larger data processors with decentralized execution firing decisions. This embodiment also enables the responsibility of instruction executions to be moved between individual operation cell data processors and increase parallel execution opportunities.
Another embodiment is directed to a method for an operation cell to trigger the execution of an instruction.
Another embodiment is directed to a method for forwarding the handling of an instruction from a source operation cell to another operation cell.
Another embodiment is directed to a method of handling the rej ection of the forwarding of the handling of an instruction by a destination operation cell to a source operation cell.
Another embodiment is directed to a method of determining the location to store the results of an instruction in an operation cell data processor.
While various embodiments of the invention have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible within the scope of the invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their equivalents.
Claims
1. A data processor component comprising:
- a. one or more memories to hold at least one of computer instructions, pieces of data, and pieces of data associated with said data processor component's past behavior.
- b. logic to interface said data processor component to at least one external communication means,
- c. logic having means to interface with said memories so as to determine when said computer instructions are ready to execute,
- d. logic having means to interface with said external communication means logic and said memories so as to transfer at least one of said computer instructions, said pieces of data, and said pieces of data associated with said data processor component's past behavior,
- f. logic having means to interface with said external communication means logic, said computer instruction execution determination logic, and said memory transfer logic so as to control the behavior of said data processor component.
2. A data processor component according to claim 1, further comprising a means to communicate between said memories and said behavior control logic.
3. A data processor comprising:
- a. at least one arithmetic logic unit,
- b. at least one input component,
- c. at least one output component, and
- d. a plurality of operation cell components each having means to interface with at least one of said arithmetic logic units, said input components, said output components, and said operation cell components.
4. A data processor according to claim 3, further comprising logic having means to interface to one or more said operation cell components to permit said operation cell components to send at least one of instructions and pieces of data to at least one of said arithmetic logic units, said input components, and said output components.
5. A processing unit according to claim 3, further comprising logic to control access to one or more of said interface means.
6. A network of data processors comprising a plurality of operation cell data processors each having means to communicate to at least one other said operation cell data processor in said network.
7. A network of data processors according to claim 6, further comprising logic with means to interface to one or more of said data processors to transfer data between at least two of said data processors.
8. A network of data processors according to claim 6, further comprising one or more data processing units with means to interface to one or more of said data processors in said network.
9. A method of executing an instruction in a data processor with a plurality of operation cell components comprising the steps of:
- a. examining one or more memories in an operation cell component by said operation cell component to determine when said instruction is ready to execute,
- b. requesting permission to use one or more arithmetic logic units in said data processor from access permission logic by said operation cells components,
- c. granting permission for said operation cell component to send at least one of said instructions and said data to said arithmetic logic units by access permission logic,
- d. sending at least one of said instructions and said data to said arithmetic logic units by said operation cell component.
10. A method of forwarding the execution responsibility of an instruction in a network of data processors with a plurality of operation cell components from one of said operation cell components in one of said data processors to another of said operation cell components comprising the steps of:
- a. examining one or more memories in said originating operation cell component to determine when the forwarding the execution of one or more instructions in said memories of said originating operation cell component to said destination operation cell component is to be performed,
- b. requesting permission to use one or more output components in said originating operation cell component's data processor from access permission logic,
- c. granting permission for said originating operation cell component to use one or more of said output components by said access permission logic,
- d. sending at least one of said instructions and data associated with said instructions to said output components,
- e. sending at least one of said instructions and said data to an input component, and
- f. sending at least one of said instructions and said data by said input component to a said operation cell component.
11. A method according to claim 10, further comprising:
- a. determining the rejection of at least one of said instruction and said data by said receiving operation cell component by examining one or more memories in said receiving operation cell component,
- b. informing said input component of said rejection by said receiving operation cell component,
- c. informing said output component of said rejection by said input component, and
- d. informing said forwarding operation cell component of said rejection by said output component.
12. A method of determining one or more memory locations of one or more instruction execution results in a data processor with a plurality of operation cell components comprising the steps of:
- a. determining said memory locations of said results by an arithmetic logic unit, and
- b. requesting permission to store said results in said memory locations from at least one of access permission logic and said operation cell components by said arithmetic logic unit.
13. A method according to claim 12, further comprising:
- a. granting permission to store said results in said memory locations by at least one of said access permission logic and said operation cell components, and
- b. storing said results in said memory locations.
14. A method according to claim 12, further comprising:
- a. rejecting the storage of said results by said operation cell components,
- b. providing alternative memory locations for said results by one of said arithmetic logic unit and said operation cell components, and
- c. storing said results in said alternative memory locations.
Type: Application
Filed: Dec 18, 2017
Publication Date: May 24, 2018
Inventor: David Raymond Hentrich (Kildeer, IL)
Application Number: 15/844,810