Grid Processing Electronic Memory
The invention adds execution units to a conventional memory bank, and connects memory units in two dimensions in a grid. Highly enabled execution units occur in every row in the grid; individual grid units are also enabled to varying degrees with reduced execution capabilities. The multiple execution units follow a single instruction. Row-aligned or vector operations, and cross-row or vector-internal operations, can be performed simultaneously without crossing the front-side bus. Constant-time list copying and read-write array accessing, and linear- and sublinear-time sorting are possible as a result. Extended content-addressing is introduced. The running times of matrix multiplication and Gaussian elimination are improved by factors of the size of the matrix.
Field of the Invention
The present application relates to computer memory device, in particular, to a novel design of computer memory device that performs computational operations in units that are located within the memory bank. Like a vector processor, multiple computational operations are performed in replicated computation units and performed simultaneously.
Description of Related Art
Using conventional designs to add the respective items in two lists, the numbers must be transferred from memory to the processor one at a time, the operations performed one at a time, and the results transferred back one at a time. Other operations, such as sorting, searching, summing, or copying a list, have the same limitation; and in the case of sorting, each transfer might be performed many times. Therefore, serial transferring on the front-side bus is a bottleneck. Serial processing is also a problem. Even with data that already exist in processor-local registers, the processor can only perform one operation at a time.
There are many existing improvements on the basic conventional design in existence today. One kind of “vector processor”, such as the MMX, SSE, or AltiVec processors, transfers data from memory to the processor and performs operations 4 at a time instead of one (see http://en.wikipedia.org/wiki/Vector_processor). A “physics processing unit” consists of an “array of custom floating-point units” (see http://en.wikipedia.org/wiki/Physics_processing_unit). Some supercomputers had “many limited functionality processors that would work in parallel”, doing “64,000 multiplications on 64,000 pairs of numbers at a time” (see http://en.wikipedia.org/wiki/SIMD). Content-addressable memory or associative memory “is designed such that the user supplies a data word and the CAM searches its entire memory to see if that data word is stored anywhere in it” (see http://en.wikipedia.org/wiki/Content-addressable_memory).
“Random access memory (RAM) is a form of computer data storage . . . that allow[s] stored data to be accessed in any order” (see http://en.wikipedia.org/wiki/Random-access_memory). “A front-side bus (FSB) is a computer communication interface . . . [which] typically carries data between the central processing unit (CPU) and a memory controller hub.” “Simple symmetric multiprocessors place a number of CPUs on an FSB, though performance does not scale linearly due to the architecture's bandwidth bottleneck” (see http://en.wikipedia.org/wiki/Front-side_bus).
BRIEF SUMMARY OF THE INVENTIONMany or most software programs perform a repeated sequence of steps on multiple data. In this case, the data has a parallel structure. With this invention, the respective steps of the sequence can be performed on all the data simultaneously. The invention has two major divisions: one, performing operations in a memory bank itself, instead of transferring data to the central processor, enabling many simultaneous operations; two, connecting the storage and computation units in two dimensions, enabling list-internal or cross-row operations. Operations performed on respective rows simultaneously but not involving other rows are vector operations. The applicable instructions are a subset of computer instructions, only applying to single-instruction multiple-data operations. This subset is free of the synchronization demands and overhead associated with general multiprocessing.
Conventional processing models interpret a memory module as a single long indexed list. In this invention the memory design interprets it as a grid: individual information storage units or “cells” are assigned indices in two dimensions. Rows and columns are formed consisting of all the cells that have been assigned the same index in either dimension. Pathways are made to connect the cells in the same rows and columns.
On one instruction, the memory bank performs one type of operation replicated in many replicated units in the bank simultaneously, like a vector processor. However, the elimination of the front-side bus allows a greater range of vector operations and an asymptotic speed improvement.
Hybridized forms of the following operations are described.
-
- Unary, binary, and ternary arithmetic operations
- Content-addressable and searching functions
- Multiple extended forms of copying and read-write accessing
These will form the “ABC”s of hybrid processing. Combinations of them are expected to improve the speed of many common tasks. For example, sorting tasks, discussed later, can make use of them for faster performance. The responsibilities for using it that are delegated to the manufacturer of the hardware, the operating system, and the software authors are also briefly discussed.
On account of spatial limitations, individual cells are not enabled with the full range of computational capabilities otherwise available to a central processor; these are delegated to computation units located at the end of every row. However, cells are able to perform computations in a limited selection: comparison operations in cells, especially for equality, are expected to be the most widely used.
The description herein makes use of the notion of a list in memory. Items in lists can exist in cells that are consecutive in either dimension. For the discussion, lists will be depicted as residing in a single row or column, and the items will be numbers. In reality, lists will sometimes span multiple columns, causing a limit in the design's speed improvements; however the improvements will still be substantial: a constant factor of the number of rows in a column in the bank.
Asymptotic speed is described by reference to a common notation in the computer field, “Big Oh”. A process is described as running in O(F(N)) time, for some function F(N), for a list of N items, meaning that the process takes an amount of time proportional to F(N), even given the worst possible list of N, that input which causes the process to take the most time possible, when N can also be arbitrarily large.
In this application, the subset of possible operations in the examples consists of those operations in which data can travel along independent pathways, and be handled independently.
In an example of the “time-space trade-off” often encountered in software, further capabilities of the cells will result in faster speeds, but lower storage densities on a given chip. Losses of density of up to 90% or more in favor of computational capabilities could be possible, only offering 10 gigabytes of storage on a chip that would otherwise hold 100 gigabytes; as such the particular end user's purposes are relevant.
The process shown in
Additional capabilities in the per-row computation units do not have the same demands on space as those offered per-cell. Multiple storage units can make use of the capabilities while not costing additional space themselves. Therefore, the per-row units for vector operations are expected to be the next most widely demanded, including: unary, binary, ternary, searching, and folding operations, as well as the two slower sorting algorithms, shown in
Further enabled cells will provide the remainder of the operations at the cost of density as the manufacturer desires. The former implementation of the process in
Two useful arithmetical operations not depicted in the diagrams that are expected to benefit from the invention are matrix multiplication and Gaussian and Gauss-Jordan elimination. The running time of these operations can be improved, by factors depending on the operations that are available in the cells. The argument matrices are not required to be square. For matrices M×P and P×N, conventional multiplication takes O(MNP) time. With the following capabilities available respectively, running time can be brought to:
-
- Row-only operations: O(MN) vector multiplications, O(MN) folding sums
- Cell addition: O(MN) vector multiplications, O(1) folding sum
- Cell multiplication and addition: O(M+N) list copies, O(1) vector multiplications, O(1) folding sum
Gaussian elimination takes O(N̂3) time conventionally for a matrix with N rows. It can be brought to:
-
- Row-only operations: O(N̂2) vector multiplications, O(N̂2) vector additions
- Cell multiplication and addition: O(N) vector multiplications, O(N) vector additions
An entire bank need not be enabled with an operation for it to be available: if cells enabled with either form of transpose occur somewhere in a row, then the entire row can use it, and copy a list to other cells which are. For example, if a 16×4 block of cells are enabled with vector multiplication and folding addition, and every row is capable of transposing a list of size 4, then the two matrices can be copied to the enabled block and multiplied faster than they could be with row-only operations, while still consuming very little extra space.
In addition, Trigonometry functions are single-argument unary functions, but are computed as composites. Numerical methods can be used to derive the functions' values, but the values can also be precomputed and stored in tables, simplifying the computations. To provide row-based access to the values, the tables could be replicated in the per-row computation units, or made available as dedicated lists, to be accessed and operated on with the operations in our design.
As is, a memory bank enabled with the invention could serve as a normal memory bank, albeit less dense and potentially slower depending on other factors. The operating system could make moderate use of a memory bank enabled with the invention in implementing standard C-Language library functions such as “memcpy”, “memmove”, “memset”, “memcmp”, “memchr”, and other C string and array functions, without needing changes to application software. A memory bank enabled with the invention on a video card, or other peripherals, could implement specific driver functions with the designs for the operations in the invention, transparently to application or operating system software. Low-level software such as the operating system and device firmware would need memory management routines such as “malloc” and “free” that can accommodate the two-dimensional layout, as well as possibly allow one or more extra parameters to specify which operations will be needed by the block the caller is requesting. It's possible that the operating system or CPU could perform some run-time code analysis to convert a serialized vector operation into the equivalent instruction for the memory bank transparently.
Next we discuss vector operations, simultaneous and independent computations on the respective items in a list or lists. The operations have many variations, due to the possible combinations of arrangements of arguments. In general, an argument to an operation can be a column list, a row list, or a single value, sometimes loosely called a “register” value. In addition, if cells possess the corresponding abilities, then multiple operations can be simultaneously performed in multiple locations, even in overlapping rows, sometimes called “multi-column” or “cell-wise” operations.
Binary operations have further variations. The next variation,
In the variation in
In
For ternary operations, similarly to binary operations, column-column-row, column-row-column, and column-register-row operations can be defined. 9 combinations of inputs for binary operations in all are possible, some being redundant: the square of the set of column lists, row lists, and register operands, all having multi-column versions. 27 input combinations of ternary operations are possible: the cube of that set.
In
Next we discuss list-internal operations, which involve transferring data on the vertical axis, by which rows are able to share data in a way.
The results of the comparison can be made available in many forms, not shown except where noted: 1. The row indices of the items on which the test succeeds are emitted along a horizontal pathway and form a new list, shown in
Combined with the binary operations, the searching operations offer progress on the problem of generating unique keys for sparse-key containers, which otherwise limits their speed. Using the invention, keys are maintained in sorted order, as insertion and removal can be performed in constant time with the process in
In the direct form, as shown in
In the deferred form, as shown in
For extended copying it involves transferring data on both axes. Copying with a conventional front-side bus is painstakingly slow. Some faster mechanisms are described.
In an aligned copy, as stated, the cells containing a list emit their respective items onto horizontal pathways, and cells in a new column are able to commit it. But an aligned copy is only useful in limited cases, as programs only rarely wish to only copy lists to locations aligned with the first. In the operation shown in
As shown in
For an ordinary transpose, the index list is an increasing consecutive list of indices, which can be generated in two steps with an address copy and binary subtraction. For the reversing form, shown in
Improvement to sorting is also described herein. Conventional sorting has been proven to run in O(N Log N) time at best. Our design enables us to perform multiple simultaneous comparisons, while still taking items only two per comparison. Four sorting algorithms are described making use of the our invention, running in O(N), O(N), O(Log N), and O(1) time respectively. All four are stable.
In
In
As shown in
The merge step only is depicted in the diagrams: two sorted lists of size 8 are merged into a list of size 16. The bottom list is transposed to be perpendicular to the top list,
As shown in
A copy of the list is transposed into a row. A greater than (GT) test, shown in
We contemplate the architecture instruction set to grow significantly when dealing with multiple lists. Selection of the rows and columns to participate in a given operation is expected to consume many bits in an instruction. Every instruction has as many as 5 or more parameters: a top row index, a bottom row index, 0 to 3 input column indices, and an output index. With the cell-wise variations, column selection takes a left column index and an additional right column index. In the vector operations, selection of the column to contain the result can also be specified by a range, with a left and right column index; the result would be copied into several new lists, creating multiple copies, though aligned copying to a selection of columns could be performed in a separate step. Then combined with the register-argument unary operation, one value can be made to fill an entire rectangular region in O(1) time.
Even further parameters can be specified in the domain of single-instruction multiple-data, in particular stepping and substepping in both dimensions for particular operations. This can be accomplished with the ternary operation, performing an operation throughout a range of rows, then selecting between the results and the original contents based on stored or computed selection criteria, but it could also participate directly in the instruction set. Due to the vast improvement in speed, comprising an instruction with multiple system words, due to the larger instruction set, might be faster than conditionally selecting results. However, the conditional selection method allows more advanced criteria, such as early termination of numerical procedures, such as once a tolerance is reached. For example, with the column-register-register form of the ternary operation, a new list can be populated with 1's or 0's to indicate the success or failure of a condition.
It is contemplated that the central processor would continue to drive the operations in the bank. However, we are not far from eliminating it along with the bus. By placing an instruction counter in the memory bank, the execution units in the bank can be run asynchronously from the central clock for brief periods to increment through a sequence of instructions also present in the bank. By designating one row as primary and adding registers, there is little difference from a CPU. Instruction counters could even be placed in every row: in this case, rows could execute independent operations, so long as they don't need access to data in other rows.
We use addition above as an example of binary and folding operations, and negation as an example of a unary operation. These were examples only. The following table of operations expresses more thoroughly the selection of operations that can be enabled in any or all rows, columns, and cells. The table is arranged by number of arguments and operation type. The results are not counted as an argument. The operations can be performed in parallel as described, multi-column variations taking the corresponding extra arguments:
0 arguments: column list or row list:
-
- Address copy
1 argument: column list or row list:
-
- Direct and deferred folding, associative:
- Add, multiply
- Logical and, or, xor
- Bitwise and, or, xor
- Min, max
- Direct only folding, non-associative:
- Subtract, divide, exponent, modulo
- Logical nand, nor, nxor, imp
- Bitwise nand, nor, nxor, imp
- Concurrent bubble sort
- Concurrent insertion sort
- Concurrent merge sort
- Cartesian sort
- Direct and deferred folding, associative:
1 argument: column list, row list, or register:
-
- Identity (register fill or list copy)
- Additive inverse (negative)
- 2's compliment
- Logical inverse (Boolean not)
- Bitwise inverse (1's compliment/bitwise not)
- Trig:
- sin, cos, tan, sec, csc, cot (4 more)
- sin h, cos h, tan h, sech, csch, cot h
- arcsin, arccos, arctan, arcsec, arccsc, arccot
- arsinh, arcosh, artanh, arsech, arcsch, arcoth
- log, abs, floor, ceil, ln
2 arguments: 2 column lists:
-
- Transpose
- Non-consecutive transpose
2 arguments: 1 column list, 1 row list:
-
- Reverse non-consecutive transpose
2 arguments: column list(s)+row list(s)+register(s):
-
- Add, subtract, multiply, divide, exponent, modulo
- Comparison:
- Less than (LT), less than or equal to (LTE), equal to (EQ/NXOR),
- greater than or equal to (GTE), greater than (GT),
- not equal to (NE/XOR)
- Bit shift left and right, bit roll left and right
- Trig:
- 2-arg a tan (a tan 2)
- 2-arg log
- Sign extension
- Search (Content-addressing)
- Logical and, or, xor, nand, nor, nxor, imp
- Bitwise and, or, xor, nand, nor, nxor, imp
- Min, max
2-3 arguments: 1 list, 1-2 registers (second register for filling):
-
- Word shift up and down, word roll up and down
3 arguments: column list(s)+row list(s)+register(s):
-
- Conditional value: if a then b else c
Per-row arguments: 1 column list+1 row list per row:
-
- Concurrent list element read
Per-row results: Arguments: 2 column lists+1 row list per row:
-
- Concurrent list element write
The potential applicability of the invention is very wide. We expect such applications will include:
-
- Graphics: vertices, splines, pixels used in video memory, shading, rendering, polygons, spatial transformations, and ray tracing
- Image processing and manipulation and “filter” effects
- Media and data compression and codecs
- Audio data processing and manipulation: array indices and the sine function in constant time for multiple sample points
- Signal processing and signal encoding and decoding
- Robotics and neural nets
- Fourier analysis and transforms
- Numerical methods and computations
- Formal languages and finite automata
- Taylor series and differential equations
- Trigonometry and integrals
- Modeling and simulation
- Statistics and financial
- Cryptography
- Matrix multiplication and sparse matrices
As will be recognized by those skilled in the art, the innovative concepts described in the present application can be modified and varied over a tremendous range of applications, and accordingly the scope of patented subject matter is not limited by any of the specific exemplary teachings given. It is intended to embrace all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims.
None of the description in the present application should be read as implying that any particular element, step, or function is an essential element which must be included in the claim scope: THE SCOPE OF PATENTED SUBJECT MATTER IS DEFINED ONLY BY THE ALLOWED CLAIMS. Moreover, none of these claims are intended to invoke paragraph six of 35 USC section 112 unless the exact words “means for” are followed by a participle.
The claims as filed are intended to be as comprehensive as possible, and NO subject matter is intentionally relinquished, dedicated, or abandoned.
Claims
1. An electronic memory device, comprising:
- a plurality of memory cells configured in a grid having a plurality of rows and columns;
- a plurality of horizontal pathways, each connecting between neighboring individual memory cells in said plurality of rows respectively; and
- a plurality of vertical pathways, each connecting between neighboring individual memory cells in said plurality of columns respectively,
- wherein each individual of said plurality of memory cells is configured to function as a storage unit or a computation unit or both, and computation operations are configured to be performed in situ said plurality of memory cells.
2. The electronic memory device of claim 1, wherein multiple simultaneous computation operations are configured to be performed in situ said plurality of memory cells.
3. The electronic memory device of claim 1, wherein a row of said memory cells are configured to be computation units, and a primary computation unit is connected to said row via a horizontal pathway.
4. The electronic memory device of claim 1, wherein a column of said memory cells are configured to be computation units, and a primary computation unit is connected to said column via a vertical pathway.
5. The electronic memory device of claim 1, wherein said plurality of horizontal or vertical pathways are configured in two logical dimensions along which contents of memory cells are configured to be transferred.
6. The electronic memory device of claim 5, wherein said horizontal pathways connecting computation units are configured to transfer data.
7. The electronic memory device of claim 1, wherein said computation operations include Unary operations, Binary operations in 9 configurations given by the square of the set {column list, row list, register}, Ternary operations in the 27 configurations given by the cube of the set {column list, row list, register}, Address copy, Multiple result columns, Offset read, Offset write, Addressable content operations with equality criteria, Addressable content operations with inequality criteria, Producing the indices of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing the values that are matched in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing Boolean values indicating the outcome of the test in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Counting the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Access to the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) by indices counted among the results only, Shifting or collating the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) to remove entries for failed outcomes, Direct folding, Deferred folding, Transpose, Reverse transpose, Offset transpose, Reverse offset transpose, Word shift, Concurrent bubble sort, Concurrent insertion sort, Concurrent merge sort, and/or Cartesian sort, or the combination thereof.
8. The electronic memory device of claim 1, wherein a plurality of neighboring columns of said memory cells are configured to function as computation units, and a plurality of neighboring rows of said memory cells are configured to function as computation units, and a single computation operation is dividedly configured to be conducted simultaneously between said neighboring columns of said memory cells or to be conducted simultaneously between said neighboring rows of said memory cells.
9. The electronic memory device of claim 8, wherein said single computation operation is related to Unary operations, Binary operations in 9 configurations given by the square of the set {column list, row list, register}, Ternary operations in the 27 configurations given by the cube of the set {column list, row list, register}, Address copy, Multiple result columns, Offset read, Offset write, Addressable content operations with equality criteria, Addressable content operations with inequality criteria, Producing the indices of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing the values that are matched in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing Boolean values indicating the outcome of the test in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Counting the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Access to the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) by indices counted among the results only, Shifting or collating the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) to remove entries for failed outcomes, Direct folding, Deferred folding, Transpose, Reverse transpose, Offset transpose, Reverse offset transpose, Word shift, Concurrent bubble sort, Concurrent insertion sort, Concurrent merge sort, and/or Cartesian sort, or the combination thereof.
10. The electronic memory device of claim 1, further comprising:
- an independent instruction counter configured to be located in one of said memory cells or a row of said memory cells or a column of said memory cells, wherein said independent instruction counter contains addresses of a computation operation.
11. The electronic memory device of claim 1, further comprising:
- a set of unique keys configured to be located in one of said memory cells or a row of said memory cells or a column of said memory cells, wherein said set of unique keys link to a set of associative containers.
12. A method for conducting computation operations in memory bank, comprising the steps of:
- constructing a memory bank having a plurality of memory cells configured in a grid having a plurality of rows and columns;
- constructing a plurality of horizontal pathways on said memory bank, each connecting between neighboring individual memory cells in said plurality of rows respectively; and
- constructing a plurality of vertical pathways on said memory bank, each connecting between neighboring individual memory cells in said plurality of columns respectively,
- wherein each individual of said plurality of memory cells is configured to function as a storage unit or a computation unit or both, and computation operations are configured to be performed in situ said plurality of memory cells.
13. The method for conducting computation operations in memory bank of claim 11, wherein multiple simultaneous computation operations are configured to be performed in situ said plurality of memory cells.
14. The method for conducting computation operations in memory bank of claim 11, wherein a row of said memory cells are configured to be computation units, and a primary computation unit is connected to said row via a horizontal pathway.
15. The method for conducting computation operations in memory bank of claim 11, wherein a column of said memory cells are configured to be computation units, and a primary computation unit is connected to said column via a vertical pathway.
16. The method for conducting computation operations in memory bank of claim 11, wherein said plurality of horizontal or vertical pathways are configured in two logical dimensions along which contents of memory cells are configured to be transferred.
17. The method for conducting computation operations in memory bank of claim 15, wherein said horizontal pathways connecting computation units are configured to transfer data.
18. The method for conducting computation operations in memory bank of claim 11, wherein said computation operations include Unary operations, Binary operations in 9 configurations given by the square of the set {column list, row list, register}, Ternary operations in the 27 configurations given by the cube of the set {column list, row list, register}, Address copy, Multiple result columns, Offset read, Offset write, Addressable content operations with equality criteria, Addressable content operations with inequality criteria, Producing the indices of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing the values that are matched in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing Boolean values indicating the outcome of the test in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Counting the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Access to the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) by indices counted among the results only, Shifting or collating the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) to remove entries for failed outcomes, Direct folding, Deferred folding, Transpose, Reverse transpose, Offset transpose, Reverse offset transpose, Word shift, Concurrent bubble sort, Concurrent insertion sort, Concurrent merge sort, and/or Cartesian sort, or the combination thereof.
19. The method for conducting computation operations in memory bank of claim 11, wherein a plurality of neighboring columns of said memory cells are configured to function as computation units, and a plurality of neighboring rows of said memory cells are configured to function as computation units, and a single computation operation is dividedly configured to be conducted simultaneously between said neighboring columns of said memory cells or to be conducted simultaneously between said neighboring rows of said memory cells.
20. The method for conducting computation operations in memory bank of claim 19, wherein said single computation operation is related to Unary operations, Binary operations in 9 configurations given by the square of the set {column list, row list, register}, Ternary operations in the 27 configurations given by the cube of the set {column list, row list, register}, Address copy, Multiple result columns, Offset read, Offset write, Addressable content operations with equality criteria, Addressable content operations with inequality criteria, Producing the indices of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing the values that are matched in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Producing Boolean values indicating the outcome of the test in (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Counting the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria), Access to the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) by indices counted among the results only, Shifting or collating the results of (Addressable content operations with equality criteria) and (Addressable content operations with inequality criteria) to remove entries for failed outcomes, Direct folding, Deferred folding, Transpose, Reverse transpose, Offset transpose, Reverse offset transpose, Word shift, Concurrent bubble sort, Concurrent insertion sort, Concurrent merge sort, and/or Cartesian sort, or the combination thereof.
21. The method for conducting computation operations in memory bank of claim 11, further comprising:
- an independent instruction counter configured to be located in one of said memory cells or a row of said memory cells or a column of said memory cells, wherein said independent instruction counter contains instructions for a computation operation.
22. The method for conducting computation operations in memory bank of claim 11, further comprising:
- a set of unique keys configured to be located in one of said memory cells or a row of said memory cells or a column of said memory cells, wherein said set of unique keys link to a set of associative containers.
Type: Application
Filed: Dec 23, 2013
Publication Date: Feb 2, 2017
Inventor: Aaron Brady (Naperville, IL)
Application Number: 14/138,160