The present invention relates to data processing and storage systems. More specifically, a new architecture for universal matrix analog microprocessors and matrix memory for processing data using matrix computing is proposed. The present invention can be attributed to the category of microprocessors, since by the completeness of the functionality this device can be considered multipurpose. Unlike MPU, the basis of conventional microprocessors are arithmetic logic operations performed on bits, as well as integers and real numbers.
The following are a couple of examples of the prior art devices:
Google Tensor Processing Unit (Google TPU) [1]. TPU is not a universal microprocessor, it is designed to work on the narrowly specialized tasks. The main operation of the TPU is vector-matrix multiplication, mostly for small matrices, with a maximum size of 256×256. In addition, all calculations are digital, and therefore the dimensions of the device are quite large for a matrix of this small size, and the energy costs are commensurate with the costs of other microprocessor devices.
Optical microchip EnLight256 [2]. The main operation in this device, as in the TPU, is vector-matrix multiplication, and matrices size is 256×256. Unlike the TPU, the EnLight256 matrix multiplication unit is an optical analog device. EnLight256 is even more narrowly specialized device than TPU—this device single purpose is the vector-matrix multiplication.
In its most general aspect, the invention is a matrix processing apparatus having a three-dimensional slice access memory and an input-/output block. The slice access memory includes cells organized into cell slices, each slice storing an entire selected data matrix. The three-dimensional slice access memory is configured to allow read/write access to the entire data matrix at the same time. The input/output block is connected to the three-dimensional slice access memory and is configured to format data into a format acceptable to the three-dimensional slice access memory.
In one of its specific aspects, the matrix processing apparatus includes a set of devices for various matrix operations. These devices preferably include a Vector-Matrix Multiplication block (VMM), a Matrix-Matrix Multiplication block (MMM); a Hadamard Product block (HP) for element-wise multiplication of matrices, a Matrix Addition block (MA), and a Matrix Determinant calculation block (MD). As further explained herein, other blocks may also be included.
All listed and presumed matrix computing devices' inputs and outputs preferably include Matrix Registers (MR), which act as a temporary local matrix memory. Each computing device has its own local MR, inaccessible to other computing devices. The purpose of MR is to prepare the matrices which will be used in the calculations. It is also used in formation of matrices that represent the result of the calculations. These results are further stored in the permanent matrix memory—Slice Access Memory (SAM), described below.
Slice Access Memory (SAM) is the proposed shared distributed matrix memory used by the MPU. It is a special type of memory which allows simultaneous access to both read and write operations for the whole matrix. Communication of computing devices with SAM is carried out by a special Matrix Data Bus (MDB), which simultaneously transmits the entire matrix as a whole. SAM communication with external devices is performed via External Data Bus (EDB) by the Input/Output unit (IO). EDB IO unit converts data from the external device format to the SAM format. The operations of the matrix devices and memory is controlled by the Central Controller (CC). CC control is carried out by a flow of instructions (Instr), coming through the EDB (
Slice Access Memory (SAM) is an information storage device (memory) that provides read and write access to the entire matrix at the same time. Addressing in this type of memory is a pointer not of a single cell, but of a vector and even an entire matrix (
In the preferred embodiment, the Matrix Data Bus (MDB) is a data bus that provides communications between SAM and all matrix data processing devices. In order to avoid possible bottleneck generated within the system, the number of MDB bus channels must correspond to the selected matrix dimension. All devices are connected to the bus in parallel, and all devices are simultaneously provided with the same data. Data handling is controlled by CC commands passed on to the devices.
Input/Output Block (IO) is preferably a device which converts external data into the internal format of the disclosed system and vice versa. In addition, IO buffers (temporarily stores) external data in the form of a matrix, which is then written to SAM. The IO buffer is its Matrix Register (MR).
Central Controller (CC) is preferably a device providing programmatic control of the IO, SAM, and all matrix devices. The control is performed by the flow of instructions coming from the external data bus. CC can be a multi-core device that provides multi-threaded management of the Matrix Processing Unit (MPU).
Vector-Matrix Multiplication (VMM) is the device for matrix multiplication of the matrix W by a vector (column) X, where the number of columns of the matrix W is equal to the length of the vector X:
WX=Y
An alternative is also possible: it is a device for matrix multiplication of a vector (string) X by a matrix W whose number of rows is equal to the length of the vector X: XW=Y
An example of such a device, but not limited to it, can be the matrix multiplication block from Google TPU [1].
Matrix-Matrix Multiplication (MMM) block is the device for matrix multiplication of the matrix Xmxk by the matrix Wkxn, where the number of columns (k) of the matrix X is equal to the number of rows of the matrix W: XW=Y
An example of such a device is “Optical matrix-matrix multiplication method shown by the use of a multifocus hololens” [3].
Hadamard Product (HP) is the device performing element-wise multiplication of matrices with the same dimensions: X·W=Y, where yij=xijwij, for any i and j:
Matrix Addition (MA) is preferably the device for element-by-element addition of matrices with the same dimensions:
X+W=Y, where yij=xij+wij, for any i and j:
Finally, Matrix Determinant calculation (MD) is the device which calculates the determinant of a selected matrix.
It should be understood by a person skilled in the art, that the listed devices are not an exhaustive list of all devices utilized by the matrix processing unit and designed for matrix calculations. However, any other/additional device should be connected to a common MDB, that is, to work with a common matrix memory and a common data format. In addition, all these devices must be controlled by the CC with a set of predefined commands.
The described MPU provides computing resources for massively parallel matrix calculations of basic types, which makes the device not only an exceptionally fast processor, but also universal, and suitable for a wide range of tasks.
The invention is illustrated by way of examples which are not a limitation, and the figures of the accompanying drawings in which references denote corresponding parts, and in which:
As shown in
It should be further understood by a person skilled in the art that additional blocks/devices can be utilized within the architecture of the MPU of the present invention.
Slice Access Memory (SAM)
A prerequisite for coordinated and maximally efficient operation of all devices included in the described Matrix Processing Unit (MPU) is the use of a special type of non-volatile fast 3D-memory that provides read/write access simultaneously to the whole matrix.
Even though SAM can be constructed utilizing ordinary DRAM, DRAM is volatile, and consumes energy even at the absence of memory operations. This results in significant power consumption. This configurationwould also require to save and load memory each time processor power is turned off.
Further, the architecture of DRAM allows the use of only a small number of channels in parallel, making it slow. Non-volatile flash memory is not quite suitable for building SAM, since it can fail due to a large number of read/write cycles, which is unacceptable when working with a processor.
Memristor SAM
A seemingly suitable base for building SAM are non-volatile, energy-saving memristors with an almost unlimited tolerance for read/write cycles. A typical memristor crossbar, shown in
However, this approach requires storage of both positive and negative values, which are controlled by the opposite polarity of the voltage. This can be accomplished by using a two-layer architecture, as shown in
Building a multi-layer architecture from the same memristor crossbar layers (
The main disadvantage of this approach is the main feature of the memristor itself, i.e., the effect on the resistance of the memristor applied to the memristor voltage. Each operation of reading the resistance of the memristor leads to its change and requires periodic regeneration of the initial state. All this complicates the practical use of memristors as a matrix memory.
Photo-Memristor
To eliminate the issues of memristor-based SAM, the proposed system separates the recording and the reading processes as illustrated in
In this embodiment, the non-volatile memory medium is a layer of photochromic substance 4 fluorescing under the influence of illumination at a certain wavelength emitted by the light source 1. The light from the fluorescence of photochrom 4 falls on a resistive element whose resistance depends on the intensity of the light. A photo-resistive element can be, for example, a photoresistor 8 in
However, unlike an ordinary single-chain memristor, the proposed device contains three circuits: 5, 6 and 7, where circuit 5 is designed for read mode, causing fluorescence of photochromic 4; circuit 6 is designed for recording mode, increasing or decreasing the fluorescence level of photochrom 4, depending on the polarity of the voltage on the circuit 6; and circuit 7 is designed to read the resistance level of the resistive element 8 or 9. Separation of work into independent read and write modes eliminates the shortcomings of the memristors described above, but allows usage of the proposed photo-memristor in circuits designed for an ordinary memristor.
In spite of the described advantages of a photo-memristor, it has some limitations. The energy consumption of a photo-memristor can exceed the energy consumption of an ordinary memristor, since in an ordinary memristor the energy is expended only on the transmission of currents through the memristors themselves, but, in the photo-memristor, the energy is also expended on the illumination of the photochrom.
Photochromic SAM
To reduce energy consumption of Photo-Memristor SAM, the SAM architecture can be based on pairing a light source with memory and light receiver. An example of such a pair may be a pair of a photochrom and a photodiode. Photochrom is preferably a light source with memory, and the photodiode transforms light into electro-currents, as a light receiver, as shown in
Another example of the source and the receiver of light may be photoactive organic field-effect transistors (OFETs)—light-emitting organic field-effect transistors (LE-OFETs) and light-receiving organic field-effect transistors (LR-OFETs). LE-OFETs can function as non-volatile optical memories, and LR-OFETs, as phototransistors.
As shown in
Photochromic SAM (
For example, the recording of information on a photochromic film can be performed using a simple Passive-Matrix LED/OLED (
The simplest implementation of such a circuit for a recording layer is a double crossbar, as shown in
The formation of a multilayer structure (
Optical Summators in Photochromic SAM
Summation of light signals can be carried out not only by semiconductor (photodiode) circuits (14) shown in
The light from the fluorescent photochrom (22) falls on the fluorescent optical fiber (23) and is partially converted by it into fluorescence of the optical fiber itself. Further, the light propagates through the fiber. Thus, the light from the fluorescent photochrom (22), concentrated along the entire length of the fiber, is summed in it and arrives at the output as a total light signal (24).
Functions of the photochromic memory layer (25) and the optical concentrators can be combined using a fluorescent photochrome as the material of the optical concentrator, as shown in
Information Coding
Positional Coding
To encode numeric data, it is proposed to use a positional coding system, in which the number is represented in the form of a sum of digits multiplied by the corresponding position parameter. For example, a number consisting of the digits a, b, c, and d:
abcd=a
3
b
2
c
1
d
0
=aη
3
+bη
2
+cη
1
+dη
0,
where η—base of the numeral system (note that a3b2c1d0 represents a sequence of digits, not multiplication). This approach allows to store in memory any number in the form of a vector, regardless of the amount of information stored in one memory cell0. For example, for2 the decimal number system 618=621180=6·102+1·101+8·100, and three cells with values of 6, 1 and 8 will be occupied in memory. Binary encoding in this case will not differ from usual computer binary coding. The power of number of position parameters is conditional. For example, for nonnegative powers (from 0 and above) integers are encoded. For negative powers of the lower position parameters, real numbers are encoded. For example, 6.18=601−18−2=6·100+1·10−1+8·10−2.
Analog Positional Accumulation
With positional coding, analog summation is performed for digits with an equal digit:
a
3
b
2
c
1
d
0
+e
3
f
2
g
1
h
0=(aη3+bη2+cη1+dη0)+(eη3+fη2+gη1+hη0)=(a+e)η3+(b+f)η2+(c+g)η1+(d+h)η0
Analog Positional Multiplication
With positional coding, analog multiplication is performed for numbers like Matrix-Matrix Multiplication for two vectors of digits, forming a multiplication matrix:
where the multiplied digital factors can be represented in the form of a matrix product:
In this case, the positions, with the corresponding matrix multipliers, form the matrix of the power degrees:
It can be seen that the degrees are arranged along parallel diagonal lines, which allows an analogue summation of multipliers of the multiplication matrix:
The result of such analog summation is already very close to the normal form of positional coding:
a
3
b
2
c
1
d
0
·e
3
f
2
g
1
h
0
==ae·η
6+(be+af)·η5+(ce+bf+ag)·η4+(de+cf+bg+ah)·η3+(df+cg+bh)·η2+(dg+ch)·η1+dh·η0
It remains only to convert the multipliers represented by the analog sums to the positional form and perform the positional summation.
For example, in decimal notation: 124·3118=386632. We represent the product in the proposed matrix form:
Now add the factors with equal positions (diagonals):
0·106+(3+0)·105+(6+1+0)·104+(12+2+1+0)·103+(4+2+8)·102+(4+16)·101+32·100=0+300000+70000+15000+1400+200+32=386632
We have come to the right result.
The proposed mechanism for multiplying numbers can be implemented analogously and executed in one step. This mechanism is naturally implemented in some of the above MPU devices, for example, the matrix-to-matrix multiplication block (MMM).
As an example, we multiply two matrices with three-digit numbers in the decimal number system:
The numbers are encoded positionally, as was shown above. Moreover, the vectors of the numbers of the matrix A will be located in the columns, and the vectors of the numbers of
the matrix B will be located in the rows:
The result is a 9×9 matrix, or a 3×3 matrix consisting of 3×3 submatrices, each of which encodes an individual number of the resulting matrix:
where for a submatrix:
We add the factors with equal positions (diagonals):
0·104+(0±1)·103+(0+3+2)·102+(6+9)·101+24·100=0+1000+500+150+24=1674
For the submatrix:
We add the factors with equal positions (diagonals):
0·104+(0+3)·103+(0+30+3)·102+(37+15)·101+22·100=0+3000+3300+520+22=6842
Folding the obtained matrix, we get a result analogous to that obtained by the usual multiplication:
Encoding Negative Values
In connection with the features of the analog implementation of matrix calculations in the described MPU, the coding of negative values will differ from the methods used in classical computers.
Since direct analog calculations in the proposed device are performed only with absolute values, it is necessary to separate the positive and negative values and perform these calculations separately.
Separate positive and negative values can be either in space or in time.
Separation in space:
Independent parallel SAM layers are preferably utilized for this function. In SAM, positive storing layers preferably alternate with negative storing layers. As shown in
Thus, when reading the vector of values from these two layers, the vector (31) will be read from the alternating positive and negative values.
Computational operations with positive and negative matrix components should be carried out separately, so the matrix of positive and negative values stored in SAM must be divided in space not only by layers, but also by slices, as shown in
Separation in time:
The compactness of recording information in SAM can be improved by marking the sign of the value with a flag, just as it is done in modern computers. However, in that case a mechanism for managing access to memory is required, depending on the flag value.
For example, access to the values is via nMOS or pMOS transistors. The Gate signal is fed from the value sign flag. One control signal for SAM, allows access only to values with a positive flag another control signal access only to values with a negative flag set. In this scenario, the separation of matrices into positive and negative components will occur in time, since one-step access to the data will be provided only to either positive or negative values. Calculations with both will need to be performed sequentially.
Another way of separating positive and negative values can be the mixture of photochromes reacting to different wavelengths. Some wavelengths correspond only to negative values, while the others only to positive. This allows to work selectively with information, depending on the conventional sign.
Matrix Addition (MA)
The choice of two or more matrices in SAM simultaneously leads to their automatic summation, thus eliminating necessity to develop a separate device for this purpose.
When adding matrices, negative components add only with negative ones, and positive components only with positive ones. The result is the difference between the positive and negative sums.
Matrix Multiplication (MM)
For multiplication, it is also necessary to separate positive and negative values. As shown above, the matrix must be divided into two matrices, one of which contains only positive values, and the second only negative ones. Multiplication is performed separately for the positive and negative components of both matrices. Thus, there are four independent multiplications: Matrix 1+ (positive component of Matrix 1,
by Matrix 2+(positive component of Matrix 2,
Matrix 1− (negative component of Matrix 1,
by Matrix 2− (negative component of Matrix 2,
are the positive component of the resulting matrix,
are the negative component. To calculate the result of matrix multiplication, it is required to subtract its negative component from the positive component of the resulting matrix.
For example, for matrices
We divide the matrices A and B into positive and negative components:
We obtain the positive components of the matrix C:
As a result:
The negative components of the matrix C:
As a result:
And, finally:
We have arrived at the same result as in direct multiplication of matrices.
Vector-Matrix Multiplication (VMM)
In addition to devices such as TPU [1] and EnLight256 [2], VMM can be implemented, as shown above, on a single layer memristor crossbar (
As shown above, the VMM can be implemented on the basis of the crossbar of linear light sources and linear photodiodes, using a photochromic film (as shown in
As illustrated in
Matrix-Matrix Multiplication (MMM)
The complexity of computing VMM by definition is O(n2), while the complexity of calculating MMM by definition is O(n3), where n is the dimension of the side of the matrix. Use of unique algorithmic techniques led to reduction of the complexity of MMM in solving practical problems to about O(n2.52). Due to the “Coppersmith-Vinograd barrier” in asymptotic estimates of the speed of the algorithms, no further algorithmic increase in the speed of MMM calculation is foreseen. The transition from VMM to MMM means a radical (power-law) increase in the speed of computation.
The SAM architecture of the present invention, for example, based on photochromes, allows not only VMM on a separate layer, but also MMM, when using a multi-layer package, where MMM can be represented as n independent VMMs, the results of which (vectors) are collected in a matrix.
However, with this approach, n identical layers of SAM need to create n identical copies of the same matrix. Only in this case it will apply to MMM. The necessity of creation of preliminary multiple copies of one matrix is the bottleneck of such an approach. It negates the entire gain of time from the speed of calculations by the cost of copying. The Photochromic SAM architecture allows to build a device for MMM, which will copy only one copy of the matrix, where it is necessary, thus eliminating the copying issue.
MMM Using Transparent Modulator
If a layer of photochromic substance (11) with fluorescent pixels (12) of
The proposed architecture makes it possible to form a multilayer structure, as shown in
However, to multiply a vector by a matrix, it is also necessary to multiply the values of the matrix by the values of the vector, that is, it is necessary to further modulate the luminescence intensity of the pixel light sources, along the lines in the plane of the layer and perpendicular to the photodiode bands. Such modulation can be implemented in various ways. For example, a modulator can be a set of parallel bands with an adjustable transparency (for example, liquid crystal or photochrom), as shown in the embodiment of
In this embodiment, bands of the optical modulator with an adjustable transparency (38) are located between the grounding circuits (36) of the light sources (34) and the photodiode bands (37), and in the same plane, but perpendicular to the photodiode bands (37). For each band of the optical modulator with adjustable transparency (38) its signal is fed from the input vector, which establishes a certain transparency. Light from the sources (34), passing through the band of the optical modulator (38) actually multiplies the value of the input matrix by the value of the input vector. The modulated light is summed over the photodiode bands. This way VMM is implemented on one MMM layer. As was shown above, a copy of the same input matrix is formed on each layer of such a device, therefore, on each layer, the multiplication of different vectors is performed on the same matrix, resulting in MMM calculation on the described device.
The described device for calculating the MMM can be represented by a parallelepiped shown in
MMM Using TFT Modulator
In another preferred embodiment, shown in
An array of such nodes forms one layer of the device similar to one layer of Photochromic SAM, as shown in
Formation of a multilayer structure of layers of
Optical MMM
The above-described MMM implementations, both for the Transparent Modulator and for the TFT Modulator, describe the same MMM device concept illustrated in
This MMM architecture allows to create a purely optical device for implementing MMM. Specific miniature devices can be used, for example, nano-devices that generate a beam of light only if two beams with certain wavelengths fall at the same time on such nano-device. The intensity of the generated light depends on both beams that fell on this nano-device. This provides multiplication of the two initial values. If a transparent substance is uniformly filled with such optical nano-devices, the resulting optical composite can be used for MMM.
As shown in
Similarly, summation of the multiplied values is illustrated in
Hadamard Product (HP)
For element-by-element multiplication of matrices, optical modulation similar to the one proposed in Photochromic SAM can be used. As illustrated in
For the multiplication of numbers in the positional coding, the method of analogous digit multiplication proposed above can be used. However, in order not to use the complex MMM 3D model proposed above for computing HP (
For example, for the product abcd·efgh, matrices will be used:
As a result of the proposed device for calculating HP of
The result does not differ from the analogous position multiplication method proposed above. From the matrix obtained by summation over the diagonals, the result of multiplying the original numbers is obtained.
Example of multiplying two matrices with three-digit numbers in the decimal number system:
It is necessary to represent the matrices A and B in the proposed positional coding with duplication of the digit vectors:
Then:
The result is a 9×9 matrix, or a 3×3 matrix consisting of 3×3 submatrices, each of which encodes an individual number of the resulting matrix:
where for submatrix:
add the factors with equal positions (diagonals):
0·104+(0+0)·103+(0+0+0)·102+(0+3)·101+2·100=0+0+0+30+2=32
For submatrix:
add the factors with equal positions (diagonals):
0·104+(0+7)·103+(0+21+2)·102+(7+6)·101+2·100=0++7000+2300+130+2=9432
For submatrix:
we add the factors with equal positions (diagonals):
0·104+(0+0)·103+(10+0+0)·102+(10+0)·101+15·100=0+0+1000+100+15=1115
Folding the calculated matrix, we obtain a result similar to that obtained by the conventional HP:
Matrix Interface
Matrix Data Bus (MDB), Matrix memory (SAM) and matrix computing devices (such as VMM, MMM, MA, HP, etc.) will not function without the ability to provide them with the necessary information from the outside. It is necessary to provide a fast method of transferring the original matrices into and within the Matrix Processing Unit (MPU) and of extracting the results of matrix calculations. One possible method for providing a fast interface for the MPU can be a device built using matrices and light like all other sub-units of the MPU. It is proposed to share/mix light source matrices, for example, based on OLED, Quantum Dots or LE-OFETs, and photodetectors matrices, for example, based on photodiodes or LR-OFETs. As shown in
To ensure two-way information transfer, both sides include both a radiating matrix and a light-receiving matrix, for example, a photodiode array, as shown in
Central Controller
Central Controller (CC) is a device that provides programmatic control of the IO, SAM, and all of the matrix conversion devices. Control is performed by a stream of instructions coming from an instructions data bus (Instr) separately from the External Data Bus (EDB), where matrix data to be processed is transmitted through EDB. Unlike other MPU devices, CC can be implemented on a digital serial architecture. To provide multi-thread management, the MPU CC can have a multi-core architecture. CC performs arithmetic and logical operations and has its own memory, registers, data bus, etc. CC manages the operation of the MPU, has access to SAM data, and is capable of processing this data. It is not recommended to use CC to process significant amounts of data, since this will lead to a significant decrease in the performance of the MPU. For direct access to SAM from CC, a local Matrix Register (MR) CC is required.
In the preferred embodiment, the CC should execute the following instruction groups:
1. Work with IO
1.1 Read the matrix from the EDB and place it in the buffer (local MR IO)
1.2 Record the matrix from the buffer in EDB
2 Work with matrix computing devices (such as MMM, MA, HP, etc.)
2.1 Read the matrix from the MDB and write it into the indicated MR of the selected matrix computing device
2.2 Read the matrix from the indicated MR of the selected computing device and write it in MDB
2.3 Perform the calculation on the selected computing device and write the result to the indicated MR
3 Work with SAM
3.1 Read the matrix from the buffer and write it to SAM at the specified index
3.2 Read the matrix from SAM at the specified index and write it to the buffer
3.3 Read the matrix from SAM at the specified index and write it in MDB
3.4 Read the matrix from the MDB and write it to SAM at the specified index
3.5 Read the matrix from SAM at the specified index and write it in MR CC
3.6 Read the matrix from MR CC and write it to SAM at the specified index
3.7 Read the value from MR CC at the specified address in the matrix
3.8 Write the value in MR CC to the specified address in the matrix
3.9 Use SAM as a matrix computing device
The transition from the arithmetic logic concept of the processor to the matrix one, as well as from the use of electronic circuits to the use of opto-electronic, allows to radically increase the speed and ability to handle complexity of calculations, as well as to reduce power consumption and heating.
In the preceding specification, the invention has been described with reference to specific exemplary embodiments thereof. It will however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded in an illustrative manner rather than a restrictive sense.
This Application is a non-provisional application from and claims all rights of priority to U.S. Provisional Patent Application No. 62/673,297, filed on May 18, 2018. The '297 Application is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62673297 | May 2018 | US |