WO2016199808A1 - メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。 - Google Patents

メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。 Download PDF

Info

Publication number
WO2016199808A1
WO2016199808A1 PCT/JP2016/067044 JP2016067044W WO2016199808A1 WO 2016199808 A1 WO2016199808 A1 WO 2016199808A1 JP 2016067044 W JP2016067044 W JP 2016067044W WO 2016199808 A1 WO2016199808 A1 WO 2016199808A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
record
address
bit
Prior art date
Application number
PCT/JP2016/067044
Other languages
English (en)
French (fr)
Inventor
井上 克己
Original Assignee
井上 克己
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 井上 克己 filed Critical 井上 克己
Publication of WO2016199808A1 publication Critical patent/WO2016199808A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to a memory type processor, a device including the memory type processor, and a method of using the same.
  • the first issue is the Neumann bus bottleneck.
  • the data in the memory is like a playing card that is turned upside down, and there is no other way than searching for information by turning (accessing) each piece (one address, one address).
  • the CPU or GPU performs information processing that sequentially searches for information in the memory and finds specific information, the amount of information processing becomes extremely large and the waiting time increases.
  • the information search process the information on the memory needs to be accessed repeatedly over and over, so that the influence of the bus bottleneck is greater than other information processing. This is the fate of the Neumann computer and the information search bus bottleneck.
  • the second problem is an arithmetic unit of CPU or GPU.
  • ALU Arimetic and Logic Unit
  • ALU Arimetic and Logic Unit
  • arithmetic and Logic Unit which is the heart of CPU and GPU, has a function to perform both arithmetic (arithmetic) operations and logical (Boolean) operations based on Boolean algebra. Since the width (for example, 32 bits or 64 bits) needs to be calculated in parallel, the circuit scale of one unit must be increased. Therefore, increasing the parallelism increases the chip size and the power consumption. A solution to this problem has not been found even today, when the limits of miniaturization technology are approaching.
  • the present invention realizes various operations such as a process of searching for target information in a memory, a comparison operation, a count operation, and an arithmetic operation at a high speed only by incorporating a very small amount (space-saving) circuit in a general memory.
  • the purpose is to realize a new concept information processing memory, that is, a memory-type processor, equipped with a parallel arithmetic element whose unit circuit scale is extremely small.
  • Patent No. 4588114 of the invention by the present inventor A memory having an information narrowing detection function is a memory that is good at logical product operations such as pattern matching.
  • PCT / JP2013 / 059260 a memory with a set operation function, can expand and expand the concept of a memory with the above-described information narrowing detection function, and freely perform logical product operation, logical sum operation, logical negation operation, etc. It is memory that can.
  • a memory with an arithmetic function aims at improving chip efficiency by providing an arithmetic circuit for each block as shown in the figure.
  • Japanese Patent Laid-Open No. 1-297724 the learning type character search device and the control method of the same device realize the search of text data and have a configuration similar to the information processing of the patent of the present application. It is limited to text index search (with / without), and is not intended for advanced and versatile information processing involving various calculations of data values as in the present invention.
  • the arithmetic unit uses an ALU, and in the configuration in which the ALUs are simply arranged as in this example, the degree of parallelism is high. As described in the effect of the invention, it can be presumed that “a considerable effect can be expected in personal use”. What is important is to improve the degree of parallelism and sophisticate the contents of operations and overcome conflicting issues.
  • Japanese Patent Application No. 2013-264863 of the invention by the inventor of the present application a memory having an information search function, a method of using the same, an apparatus, and an information processing method did not specifically show an arithmetic circuit. It was limited to searching, data value matching and range searching. It is an object of the present invention to provide a memory type processor using an arithmetic circuit most suitable for realizing various data operations in parallel without being limited to a process of searching for information such as a search. Note that the entire contents of Patent No. 4588114, PCT / JP2013 / 059260, and Japanese Patent Application No. 2013-264863, which are inventions by the inventors of the present application, are incorporated herein by reference.
  • the present invention drastically eliminates problems such as searching and collating information for which the effects of Neumann bus bottlenecks are the most problematic, and proposes an arithmetic unit suitable for parallel arithmetic and its usage. It is intended to drastically solve many of the problems of information processing centered on sequential processing processors such as CPUs and GPUs. In other words, the calculation of a large amount of data is not left to the CPU or GPU alone, but the calculation that can be realized in the memory is performed by the memory, so that the load on the CPU and GPU is heavy, complicated, and a non-specialist can be put out. It is to realize a memory device having an information calculation function based on a completely new concept of information processing that is ideal for information processing in a big data society and can simplify power processing and reduce power consumption.
  • a 1-bit arithmetic unit (logic arithmetic unit and four arithmetic units) capable of various information processing in combination with a memory cell reduces the circuit space for parallel operation and reduces power consumption.
  • a memory cell having a large number of bits capable of storing data to be operated inputted from an external input circuit is provided, and one memory cell includes an address and a record. Connected to the designated memory and the memory for each record, reads the data stored in each memory cell of the record for each bit, executes the substitution operation, and the calculation result is the same 1 for each bit.
  • An arithmetic circuit for writing in a predetermined memory cell of a record, the input and output of the arithmetic circuit being limited to 1 bit, an arithmetic storage circuit, a logical product arithmetic circuit, a logical sum arithmetic circuit, a logical negative arithmetic circuit, For the arithmetic circuit and all the arithmetic circuits, which perform logical operation or arithmetic operation by repeatedly calculating 1-bit operand data.
  • An arithmetic condition specifying circuit for performing operations in parallel by specifying calculation condition, memory type processor, characterized by comprising an external output circuit, the outputs of the operation result of each record to the outside is provided.
  • any one or all of an exclusive OR operation circuit, a half addition operation circuit, and a full addition operation circuit are incorporated in the operation circuit.
  • Memory type processor any one or all of an exclusive OR operation circuit, a half addition operation circuit, and a full addition operation circuit are incorporated in the operation circuit.
  • a data matrix conversion circuit for performing matrix conversion on the data to be operated from the outside and writing to each memory cell specified by an address and a record A memory type processor.
  • the external output circuit (1) outputs the addresses of the records in order of priority, (2) divides the records into several, Output in order of priority for each divided record, (3) output whether any of the records has a calculation result, (4) output all the records in parallel, (5) or more (1) to (4) And a memory type processor comprising any one of the output circuits described above.
  • a memory type processor comprising a transfer circuit for transferring the data to be calculated to another record.
  • a memory type processor according to the first main aspect of the present invention, wherein the memory type processor is incorporated in a circuit of a CPU and other functions.
  • a memory type processor according to the first main aspect of the present invention, which is implemented by an FPGA.
  • a device including a memory type processor according to the first main aspect of the present invention includes a memory type processor according to the first main aspect of the present invention.
  • a method of using a memory type processor wherein the operation target data and the operation result are temporarily saved in the memory.
  • Both of the work area data to be processed are allocated to the address, and the 1-bit calculation function is repeated using both data, so that (1) all records of the calculation target data are in parallel Index search calculation, (2) All-record parallel comparison (match, large, small, range, maximum / minimum) calculation of the calculation target data, (3) All-record parallel count (up, down) calculation of the calculation target data, (4) All-record parallel addition / subtraction operation of the calculation target data, (5) All-record parallel multiplication / division calculation of the calculation target data, (6) All of the calculation target data Code-parallel plaintext encryption, plaintext decryption operation of ciphertext, (7) all-record parallel matrix transformation operation of the operation target data, (8) all-record parallel data creation operation of the operation target data, (9) There is provided a method of
  • a third main aspect of the present invention there is provided a method of using a memory type processor according to the first main aspect of the present invention, wherein it is determined whether or not there is a record remaining after winning the operation result. Then, there is provided a method of using a memory type processor characterized by giving an arithmetic condition expression based on the determination result.
  • a fourth main aspect of the present invention there is provided a method of using a memory type processor according to the first main aspect of the present invention, wherein a plurality of record memory cells are selected from the plurality of arranged records.
  • a method of using a memory-type processor is provided in which the above-described data is allocated to a set of data for use.
  • the memory type processors according to the first main aspect of the present invention are (1) connected in series, parallel, or series-parallel, (2) hierarchical connection, There is provided a method of using a memory type processor characterized by being used in connection with either or both of the above.
  • FIG. 1 is a configuration example of a general memory.
  • FIG. 2 is a configuration example of a memory type processor.
  • FIG. 3 is a circuit configuration (example) of a 1-bit logic (Boolean) arithmetic unit of the memory type processor.
  • Example 1 FIG. 4 is an explanatory diagram of an index search calculation method (example) of a memory type processor using a 1-bit logic (Boolean) calculator.
  • FIG. 5 is an explanatory diagram of a data comparison arithmetic expression (example) of a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • FIG. 1 is a configuration example of a general memory.
  • FIG. 2 is a configuration example of a memory type processor.
  • FIG. 3 is a circuit configuration (example) of a 1-bit logic (Boolean) arithmetic unit of the memory type processor.
  • Example 1 FIG. 4 is an explanatory
  • FIG. 6 is an explanatory diagram of a data match comparison calculation (match search) method (example) of a memory type processor using a 1-bit logic (Boolean) calculator.
  • FIG. 7 is an explanatory diagram of a data size comparison operation (above, less than search) method (example) of a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • FIG. 8 is an explanatory diagram of a maximum / minimum comparison operation (maximum / minimum search) method (example) of a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • FIG. 5 FIG.
  • FIG. 9 is an explanatory diagram of address allocation (example) of the data count calculation method of the memory type processor by the 1-bit logic (Boolean) arithmetic unit.
  • FIG. 10 is an explanatory diagram of an addition count calculation method (example) of a memory type processor using a 1-bit logic (Boolean) calculator.
  • FIG. 11 is an explanatory diagram of a subtraction count calculation method (example) of a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • FIG. 7 is an explanatory diagram of address allocation (example) of the data count calculation method of the memory type processor by the 1-bit logic (Boolean) arithmetic unit.
  • FIG. 12 is an explanatory diagram of a full addition operation method (example) of a memory type processor by a 1-bit logic (Boolean) arithmetic unit.
  • FIG. 13 is an explanatory diagram of a multiplication operation method (example) of a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • FIG. 14 is a circuit configuration (example) of a 1-bit four arithmetic unit of a memory type processor.
  • FIG. 15 is an explanatory diagram of a multi-bit parallel arithmetic operation method (example) by a memory type processor. (Example 11) FIG.
  • FIG. 16 is a circuit configuration (example) of an arithmetic unit having a data shift function of a memory type processor.
  • Example 12 FIG. 17 is an explanatory diagram (1) of the data matrix conversion method (example) by the memory-type processor.
  • FIG. 18 is an explanatory diagram (2) of the data matrix conversion method (example) by the memory type processor.
  • FIG. 19 shows an example of series-parallel connection of memory type processors.
  • FIG. 20 shows an example of hierarchical connection of memory type processors.
  • FIG. 21 is an example A of a feature database by a memory type processor.
  • FIG. 22 is an example B of the feature database by the memory type processor.
  • FIG. 23 is an explanatory diagram of a parallel data creation method (example) by a memory type processor. (Example 16)
  • FIG. 1 is a typical memory configuration example.
  • the memory 100 shown in FIG. 1 does not include functional circuits such as an address decoder and a data bus.
  • the memory 100 has a configuration in which information data can be freely written and read, and each word has an n-bit width 103 and an N address 104.
  • the memory cell 102 is composed of N ⁇ n bit cells, and generally, addresses from 1 to N can be selected and designated from the outside by means such as an address decoder.
  • Information processing by the current CPU is that the data width 103 of the memory 100 is a constant data width such as 8 bits, 16 bits, 32 bits, and the address space of the given memory such as 1M address or 1G address is used when searching for information data.
  • the CPU sequentially accesses the address, reads data, and performs sequential processing.
  • the information processing according to the present invention is based on the idea of reversing the concept of data width and address in the above general memory structure and database table structure, and is based on parallel operation in 1-bit units.
  • FIG. 2 shows a configuration example of a memory-type processor, which has a large number of memory cells capable of storing data to be calculated input from an external input circuit, and one memory cell is designated by an address and a record.
  • the memory is connected to the memory for each record, the data stored in each memory cell of the record is read for each bit, the substitution operation is executed, and the result of the operation is predetermined for the same record for each bit.
  • This arithmetic circuit is composed of an arithmetic memory circuit, a logical product arithmetic circuit, a logical sum arithmetic circuit, and a logical negation arithmetic circuit, while the input and output are limited to 1 bit.
  • An arithmetic condition specifying circuit for performing operations in parallel by specifying calculation condition is a memory-type processor, characterized by comprising an external output circuit, the outputs of the operation result of each record to the outside. Details will be described below.
  • the width 103 of 1 word n bits of a normal memory corresponds to the number of records (n) in the database, and data of 1 record is arranged in a column, and N of the address 104 is a field of 1 record. It is easy to understand if it is considered as a structure corresponding to the data length. That is, the memory unit (database unit) of the memory-type processor 101 is a data table of n records in which one record has a field data length of N bits.
  • the 1-bit computing unit 105 provided in the lower part of the data table performs logical storage 116, logical product 112, logical sum 113, logical negation (NOT) for each bit cell data of the storage cell 102 at the address 104 selected and designated 110. ) 114, exclusive OR 115, full addition 211, other optional functions, and a calculation condition 111 specified by the combination computing unit, all the records can be operated in parallel. Details will be described later.
  • a calculation result output 106 function such as a priority order output circuit (priority address encoder output circuit) 214 is provided to output the calculation result of the 1-bit calculator 105.
  • a calculation result output 106 function such as a priority order output circuit (priority address encoder output circuit) 214 is provided to output the calculation result of the 1-bit calculator 105.
  • the 1-bit operation function 105 is roughly divided into two types: a 1-bit logic (Boolean) operation function 123 and a 1-bit four arithmetic (arithmetic) operation function 124.
  • the logical operation may be true or false, or 1 bit of 0 or 1, whereas the arithmetic operation requires 2 bits of the operation result and carry.
  • the 1-bit logic (Boolean) operation function 123 will be described. *
  • FIG. 3 shows an example of the circuit configuration of the 1-bit logic (Boolean) operation function of the memory-type processor.
  • the 1-bit logic (Boolean) operation for calculating the data of the 1-bit memory storage cell 102 selected by the address 104 of the memory-type processor 101.
  • the circuit of the device 123 and the contents of the calculation will be described.
  • the circuit configuration is a very simple configuration including a logical product 112, a logical sum 113, an exclusive logical sum 115, a logical negation 114, a flip-flop (FF) 202, and a selection circuit 203. Since the exclusive OR 115 can be calculated by a combination of the logical product 112, the logical sum 113, and the logical negation 114, it is not always necessary. However, the exclusive OR 115 may be incorporated when the usage frequency is high, such as four arithmetic operations described later. In the case of an ordinary arithmetic unit, for example, an ALU, the input operand has a large number of bits such as 32 bits, but this configuration is characterized by a 1-bit operand.
  • the exclusive OR 115 can be used for encryption.
  • plaintext data is encrypted
  • the plaintext data is encrypted by performing an exclusive OR operation with the encrypted data
  • the encrypted ciphertext data can be plainly obtained by performing an exclusive OR operation with the encrypted data. It is well known. Therefore, the exclusive OR 115 of the 1-bit Boolean calculator 105 can encrypt and decrypt a large amount of plaintext data at a very high speed.
  • 1-bit data from the memory storage cell 102 selected by the address 104 can be selected by the selection circuit 203 as positive logic or negative logic (logic negation 114).
  • the result output 205 of the flip-flop 202 can be selected from positive logic or negative logic (logic negation 114).
  • the positive logic or negative logic memory data 204 and the result 107 of the positive logic or negative logic output 205 of the flip-flop 202 which is the operation result 107 are ANDed. Any one of the logical sum 113 and the exclusive logical sum 115 can be executed, and the result can be substituted (stored) in the flip-flop 202.
  • the above-described calculation can be specified in parallel for all records, and the calculation condition specifying function 111 is provided.
  • the 1-bit logic (Boolean) operation result can be stored in the memory cell 102 selected by the address 104 by setting the switch 201 to the 3 position.
  • the record address is output to the outside for each record from the operation result output 106 function such as the priority address encoder output circuit.
  • the number of output pins of the processor 101 chip can be minimized. Details will be described later.
  • the ALU 217 needs to calculate two sets of 32-bit data in a lump, so the circuit scale of one unit must be large.
  • the 1-bit logic (Boolean) operation of this configuration is necessary. Since the unit 105 can be realized with a circuit scale of about 150 transistors and several hundred transistors including the operation result output 106, it is optimal as a parallel processing operation unit.
  • FIG. 4 is an example of an index search calculation method for a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • the index search operation has various uses such as Internet search, patent search, and full-text search.
  • a key index such as “information processing”, “information search”, “CPU” and a logical index, 112, logical sum 113, and logical negation 114 can be calculated.
  • the records are narrowed down, and if there are documents (records) that match these keywords and logical operation conditions, or if there are any documents (records)
  • vocabulary such as “information processing”, “information retrieval”, “patent”, “CPU” is assigned as an index to addresses 1 to N, and one record corresponds to one document. That is, if there is at least one character such as “information processing”, “information retrieval”, “patent”, “CPU” in one document, “1” is written in the corresponding memory cell (field). Register every time. ("0" is omitted, and so on).
  • N vocabularies (indexes) and n books (n records) are registered as a database.
  • the address 18 is “information processing”
  • the address 5 is “information retrieval”
  • the address 24 is “patent”
  • the address 10 is “CPU”
  • the index vocabulary (key vocabulary) is assigned, and the calculation condition is (“The case will be described where “information processing” + “information search” vocabulary is included) * (documents not including the “patent” vocabulary) * (documents including the “CPU” vocabulary).
  • the lower part of FIG. 4 shows the above keyword search calculation method.
  • the records of the documents including both vocabularies are 3, 4, 5, 13, 14, 16, 19, 21 , 25.
  • the documents that do not include the “patent” vocabulary at the address 24 are 4, 8.11, 16, 22, and 25 as a result of the logical NOT operation.
  • the result of the previous operation, the document records 3, 4, 5, 13, 14, 16, 19, 21, 25 and the result of performing the logical product (AND) operation of this logical negation (NOT) operation result is 4 winning documents. 16, 25.
  • the address N is temporarily stored. It can be realized by using it as the buffer 207.
  • the document 16 is (a document including any vocabulary of “information processing” + “information search”) * (a document not including a patent vocabulary) * (a document including a CPU vocabulary).
  • the above results may be read sequentially from the operation result output 106 such as a priority address encoder output circuit.
  • the CPU or GPU simply detects the target information from the memory type processor 101 without performing any search for the information of the entire memory space by simply performing the address selection designation 110 and the calculation condition designation 111 to the memory type processor 101. It becomes possible to do.
  • the above document search is index data with or without data consisting of 1 bit, but information processing of data in which data is stored (registered) by value will be described.
  • FIG. 5 is an explanatory diagram of an example of a data comparison arithmetic expression of a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • the symbol “/” represents a logical negation 114 operation
  • “*” represents a logical product 112 operation
  • “+” represents a logical sum 113 operation.
  • This example shows an arithmetic expression for performing a comparison operation of data in the case of a binary number and 4 bits, that is, a coincidence, magnitude, and range operation.
  • decimal numbers are converted to binary numbers, and in any case, “8”, “4”, “2”, “1” assigned from MSB “8” to LSB “1”.
  • the calculation condition can be set to the following or range, and the calculation condition expression for comparing multiple bit data can be easily described.
  • the address N is used as the temporary temporary operation buffer 207. This can be applied to any of the following operations.
  • FIG. 6 shows an example of a data match comparison calculation method using a 1-bit logic (Boolean) arithmetic unit of a memory type processor.
  • This example is an example of binary, 8-bit data matching operation using a memory having a 1-bit logic (Boolean) operation function.
  • the address 10 is the most significant bit (MSB) “128” and the address 17 is the least significant bit (LSB) “1” eight times. It is only necessary to calculate and detect data that is “00001010”.
  • calculation is performed in the order of “128”, “64”, “32”, “16”, “8”, “4”, “2”, “1” from the MSB address 10. It is carried out.
  • the digit “00001010” in the digit “0” the logical negation is performed, and in the case of the digit “1”, the positive logic is performed.
  • Two records have the decimal data value “10”. By repeating the 1-bit operation as described above, an arbitrary data value can be detected.
  • FIG. 7 is an example of a data size comparison operation method of a memory type processor using a 1-bit logic (Boolean) arithmetic unit.
  • Boolean 1-bit logic
  • the logical value of the lower 4 bits of the addresses 15 and 16 and the address 14 are subjected to a logical product operation to obtain a decimal data value “10” or more and less than “16”.
  • a logical OR with the record it is possible to detect a record having a data value of decimal data value “10” or more. Further, as shown in the figure, if a record having a data value of decimal data “10” or more is negated, a record of less than “10”, that is, “9” or less is detected.
  • the same 1-bit operation may be repeated.
  • the above calculation results in that all records are processed in parallel with the number of calculation steps within the number of digits. If the data value is 16 bits, it will be twice as much as the above, and if it becomes 32 bits, it will be 4 times as long as it is a perfect match. A range search operation can be realized. Further, even when the data width is increased from 8 bits to 9 bits or 10 bits, it is very simple, and it is not always necessary that the addresses are continuous, and the data width can be increased by 1 bit to 17 bits or 33 bits without discomfort.
  • this memory-type processor can allocate data having an arbitrary data width, such as one bit data with or without one to 256 bit width, as field data in a record.
  • data width varies, such as “name”, “address”, “workplace”, “birth date”, “height”, “weight”, “gender”, etc.
  • the data width can be allocated so that only necessary data bits are calculated, and unnecessary bits are not calculated. Details will be described later. *
  • FIG. 8 shows an example of a maximum / minimum comparison calculation method using a 1-bit logic (Boolean) arithmetic unit of a memory type processor. 8-bit data of MSB “128” is assigned to address X and LSB “1” is assigned to address X + 7. Data to be compared is represented in each record, decimal numbers “69, 109, 21, 14, 5, 105, 5-34 "are written.
  • the address “128” of the MSB is selected and the calculation result is judged. As a result, since there is no data in any record, an operation of “/ 128” is performed. (Can be omitted) Next, an operation of “/ 128” * “64” is performed, and since data exists in any record, an operation of “/ 128” * “64” * “32” is performed. As a result, since there is data in any of the records, an operation of “/ 128” * “64” * “32” * “16” is performed. As a result, since there is no data in any record, an operation of “/ 128” * “64” * “32” * “/ 16” is performed.
  • the minimum value of 5 is detected in two records.
  • the maximum / minimum calculation is to determine the remaining calculation result and set the condition based on the determination result.
  • the calculation result output is not only output of the address of each record, but it is possible to perform efficient condition determination calculation by providing an output that can determine only whether any record has a winning bit or not.
  • FIG. 9 shows an example of address allocation in a data count calculation method by a 1-bit logic (Boolean) arithmetic unit of a memory type processor.
  • This example shows an example of address allocation when performing addition / subtraction counting of binary numbers and 4-bit data.
  • Address X to address X + 3 are count data 206, “8”, “4”, “2”, “1” bit storage areas, address X + 4 is temporary temporary buffer 207, and addresses X + 5 to X8 are “8”. , “4”, “2”, and “1”, a configuration in which each bit of carry data 208 (or borrow data 209) necessary for count calculation of each bit is allocated. *
  • FIG. 10 shows an example of an addition count calculation method using a 1-bit logic (Boolean) arithmetic unit in a memory type processor.
  • This example shows an example of addition count of record data, and shows an example of allocation of addresses and records for executing addition count of binary number and 4-bit data.
  • 4-bit data is assigned count data from address X to address X + 3.
  • the left record As an initial value, count data “0, 8, 1, 15, 7, 3, 5,...
  • the result of the 1-bit logic operation unit (the remaining winning) is shown as “0, 1, 0, 1, 1, 1, 1, 0 to 1” from the record on the left, and the 1-bit operation unit ( FF) calculation results (remaining winnings) are added, and the concept of calculating the calculation results “0, 9, 1, 0, 8, 4, 5,...
  • the counter function can be realized by using the carry address of the addition result and the buffer address for temporarily storing the 1-bit calculator result as the work area.
  • the address X + 4 is a 1-bit arithmetic unit buffer 207, and the addresses X + 5 to X + 8 are carry data 208 of each bit. In the initial state, these addresses are cleared and all are set to “0”. The address assignment is not limited to this.
  • the following shows an example of addition counting using the count data 206 and work address assigned above.
  • step 1 the contents of the 1-bit logic unit are saved in the 1-bit unit buffer 207 and the address X + 4.
  • the contents of the 1-bit calculator (FF) do not change.
  • step 2 the bit of the count data “1” and the contents of the address X + 3 are substituted, and the logical result 112 is calculated with the operation result of the 1-bit arithmetic unit (FF).
  • the operation result data is the carry data 208 of “1” bit. is there.
  • this carry data 208 is assigned to address X + 8.
  • step 4 the data of the 1-bit arithmetic unit in the initial state (added value) is substituted from the address X + 4 which is the 1-bit logical arithmetic unit buffer 207.
  • An exclusive OR operation is performed by substituting the addition value substituted in step 5 and the digit “1” of the count data 206 and the address X + 3.
  • the calculation result is the calculation result of the digit “1”.
  • this result is written as new data “1” at address X + 3, and the bit calculation of “1” is completed.
  • step 7 to step 24 the bit calculation of “2”, the bit calculation of “4”, and the bit calculation of “8” are repeated to rewrite the data of the digits “2”, “4”, and “8”. .
  • the above count calculation is extremely efficient when used continuously after some calculation processing. For example, if the search ranking counter of the hit record is incremented by 1 after completion of the search operation of record data like the search ranking that counts the number of searches on the Internet, the counter is automatically set in the memory. It is very convenient because it can be updated. It goes without saying that the values of these counters can be read at a high speed from the size comparison, range comparison, and maximum / minimum records.
  • the present invention is not limited to the above-described search ranking, and various uses such as a majority decision operation of various data, such as a majority decision of identification results of a plurality of features such as eyelid recognition and vein authentication, and a class decision operation are possible. *
  • FIG. 11 is an example of a subtraction count operation by a 1-bit logic (Boolean) arithmetic unit of a memory type processor.
  • the difference between the addition and the subtraction described above is that the carry is replaced with a borrow and the complement operation is performed.
  • the carry data 208 is replaced with the borrow data 209 and assigned an address.
  • the borrow data can be realized in the same manner as the addition by a complement operation that performs logical negation 114 on the target data. Therefore, in the logical product operation of Steps 2, 8, 14, and 20, it is realized by calculating with logical negative data of “1”, “2”, “4”, and “8”.
  • the result is “0, 7, 1, 14, 8, 2, 5,... 9”, which indicates that the target subtraction count operation can be correctly realized by the 1-bit logic (Boolean) operation.
  • the above example shows an example of 4 bits, but for calculating a larger number of digits, the required number of digits may be repeatedly calculated.
  • FIG. 12 is an example of a full addition operation by a 1-bit logic (Boolean) arithmetic unit of a memory type processor.
  • the upper part of the figure represents a truth table for a binary 4-digit full addition operation.
  • Each figure is a truth table of the arithmetic output S and carry Co output after performing full addition operation of three inputs of input A, input B, and input Ci (carry).
  • Addresses X + 8 to X + 11 are areas for storing the calculation result of the calculation result output S.
  • Address X + 12 is an MSB “8” digit carry storage area.
  • Addresses X + 13 to X + 20 are areas for determining which of the eight inputs A, B, and Ci is in eight states and temporarily storing the results. As shown in the figure, ABCi determinations 1 to 8, “/ A” * “/ B” * “/ Ci” in address X + 13, that is, “0” in all three values, “A” * “B” * in address X + 20 “Ci”, that is, all three values are “1”, and all eight combinations of three values are calculated, and the result is stored in a predetermined address.
  • the eight determination results from ABCi determination 1 to 8 are “1” for only one address from address X + 13 to address X + 20 per record. Therefore, according to the truth table of the full addition operation shown above, if there is “1” in any of 2, 3, 5, and 8 of the above ABCi determination, the output S is set to “1”, otherwise The logical sum 113 operation to make “0” is performed, and the result is temporarily stored in the address X + 21, and the operation result for each digit of the output S is stored in any of the address X + 8 to the address X + 11.
  • the logical sum 113 operation is performed to set the Co output to “1” and set it to “0” otherwise.
  • the result is stored at address X + 22.
  • 8 ⁇ 3 24 steps of determination calculation for determining any of the eight combinations
  • 8 steps of determination calculation for determining the calculation result S and C (carry) and a total of 32 steps of calculation may be executed. .
  • the above is the calculation for one digit. In the case of 4 bits, this may be repeated four times, that is, 128 steps. In the case of 8 bits, 256 steps may be repeated.
  • FIG. 13 is an explanatory diagram of a multiplication operation method (example) of a memory type processor using a 1-bit logic (Boolean) arithmetic unit. It is known that a multiplication operation can be realized by shifting the result calculated for each digit of the multiplicand for each digit of the multiplicand and shifting each digit of the result for each digit.
  • decimal multiplicand “11” ⁇ multiplier “14” “154”
  • Add all four operations above "10011010”
  • the procedure in the case where this calculation content is executed by a multiplication operation by a 1-bit logic (Boolean) calculator of the memory type processor 101 is shown up to the second digit calculation result S3.
  • 4-bit multiplicand data A is stored from address X to address X + 3
  • 4-bit multiplicand data B is stored from address X + 4 to address X + 7.
  • Addresses X + 8 to X + 15 are areas for temporarily storing the calculation result of the first digit of the multiplier for each digit.
  • Addresses X + 16 to X + 39 are areas for temporarily storing the calculation results of the second to fourth multipliers for each digit. Calculation of the digits of the multiplicand A and the multiplier B is performed, and the storage data of each area is shifted by 1 bit and the calculation result is stored. This calculation is a simple process with a total of 16 steps since no carry data 208 is output.
  • the above four-digit calculation result is subjected to the above-described full addition calculation, and the result is stored as the final result from address X + 40 to address X + 47. Although this calculation is a little complicated because the carry data 208 is output, the calculation may be performed by the full addition calculation method described above. 4-digit multiplication can be realized in a total of 1056 steps.
  • FIG. 14 is a circuit designed to enable efficient implementation of the four arithmetic (arithmetic) operations 124 of the memory type processor.
  • the data for each 1 bit from the memory is three flip-flops 202 for sequentially storing data of each of the three inputs A, B, and Ci of the full adder 211 composed of two half adders 210 and a logical sum 113. And any one of them is selected and specified by a logical product 112 gate, and is added to the full adder 211.
  • the S output and C output of the full adder 211 are temporarily stored in the two flip-flops 202 once, and the output selected and designated by the OUT S selection input or the OUT C selection input is stored in the memory 100 through the switch 201. It is configured to be stored in the cell 102.
  • an arithmetic unit capable of realizing four-digit arithmetic operation with one digit in five steps is completed.
  • the above configuration is described as an adder, but as described above, it can be used for a subtracter and multiplication / division calculation.
  • the above 1-bit four arithmetic (arithmetic) operation 124 is optimal for information processing in which four arithmetic operations are frequently used.
  • a multi-bit data calculation method and data shift circuit capable of maximizing the performance of the four arithmetic (arithmetic) arithmetic units will be introduced.
  • FIG. 15 shows an example of the multi-bit data parallel arithmetic operation method of the memory type processor. All the calculation methods so far have been completed and executed within one record. However, this calculation method calculates a plurality of records as one record group. That is, the record group is one data, and the record width (data length) is arbitrary. In the case of this example, nine records from record Y to record Y + 8 are assigned as one record group and assigned as one data, and the assignment is 8-bit data with record Y + 8 as LSB and record Y + 1 as MSB. Record Y is a carry output that is output as a result of four arithmetic operations.
  • the address X is assigned the operation input data Ai
  • the address X + 1 is assigned the operation input data Bi
  • the address X + 2 is assigned the operation output data Co
  • the address X + 3 is assigned the operation output data So.
  • a temporary storage device for temporarily storing data from the memory and data to the memory and an arithmetic operation device for performing the four arithmetic operations are arranged in parallel.
  • the 1-bit four arithmetic (arithmetic) arithmetic unit 124 described so far has been an operation completed within one record, but this multi-bit arithmetic unit 122 has a function of laterally feeding data to other records, that is, from LSB to MSB.
  • a carry Co output which is carry data 208 of each bit, is input to an upper carry Ci input.
  • This connection is necessary for the width of the data, and it can be configured such that any record can be arbitrarily specified for each record, such as connecting from which record to which record or not connecting.
  • the input data of Ai and Bi assigned in parallel from the memory address X and the address X + 1 is stored in the temporary memory, and the output of the temporary memory is connected to the input of the four arithmetic units. Therefore, the four arithmetic units for each record from the LSB to the MSB execute the calculation in parallel for each record and output the calculation output So and the carry output Co to the temporary storage unit and output the result to the memory address Y + 2 and the address.
  • Y + 3 can be stored as a calculation result.
  • the input data (A, B) can be signed, and the calculation result has a maximum data width, for example, multiplication, and a data width (record) considering carry, borrow, and sign. It is better to make an allocation considering the width.
  • this 1-bit operation function (logical operation, four arithmetic operations) has a large feature not found in a normal ALU because it can perform bi-directional operation of rows and columns.
  • the appropriate calculation method can be selected by properly using the data to be calculated in.
  • the data conversion function indispensable for performing data conversion in the row direction and column direction and various operations will be described.
  • FIG. 16 is a circuit configuration example of a memory type processor having a data shift function.
  • record data 215 is stored in the memory cell 102 for each address.
  • a 1-bit calculator 105 is connected for each record.
  • the register of the 1-bit arithmetic unit 105 is the flip-flop 202.
  • the data in the same record can be freely moved and operated for each 1-bit, but the data is moved between the records and operated. I could't do it.
  • the flip-flop 202 described so far is used as the shift register 212, the clock signal 216 is given from the outside, and the flip-flop result output 205 (in this case, the shift register output) and the clock signal 216 are shifted to the next record.
  • the flip-flop result output 205 in this case, the shift register output
  • the clock signal 216 is given from the outside
  • the flip-flop result output 205 in this case, the shift register output
  • the clock signal 216 are shifted to the next record.
  • a normal shift register can only realize data shift for one record in one clock, but it is also possible to adopt a shift register configuration that fast forwards 8 records or 16 records in one clock.
  • the multi-bit arithmetic unit 112 and the shift register 212 described above are one of functions for transferring data to be calculated to other records, and this function greatly increases the performance of the memory processor.
  • 17 and 18 show an example of data matrix conversion by a memory type processor.
  • a memory type processor having a 1-bit operation function has a feature that can perform bi-directional operation of rows and columns.
  • FIG. 17 shows a pre-processing calculation step in performing matrix transformation.
  • Data to be subjected to matrix conversion is written from address 1 to address 4.
  • This data is data having a 4-bit data width that is a set of 4 bits of records 5 to 8, records 9 to 12, and records 13 to 16.
  • the mask data which is operation auxiliary data, is written in addresses 5 to 8 of the record.
  • the address X is assigned the logical product of addresses 1 and 5.
  • the logical product of address 1 and address 6 is assigned to address X + 1.
  • the logical multiplication result of address 1 and address 7 is assigned to address X + 2.
  • the logical product of address 1 and address 8 is assigned to address X + 3.
  • the logical product operation result at the address X is not shifted.
  • the logical product operation result at address X + 1 is shifted by -1 (one shift to the left).
  • the logical product operation result at address X + 2 is shifted by -2 (two shifts to the left).
  • the logical product operation result at the address X + 3 is shifted by -3 (three shifts to the left).
  • the preprocessing calculation related to the data at address 1 is completed.
  • the operation related to the data of address 2 is performed in the same manner from address X + 4 to address X + 7.
  • An operation related to the data at address 3 is performed from address X + 8 to address X + 11.
  • An operation related to the data at address 4 is performed from address X + 12 to address X + 15.
  • the above is the preprocessing operation for matrix conversion.
  • FIG. 18 shows a step of performing matrix transformation on the above preprocessing calculation result. All of the addresses X + 3 from the address X, which is the result of the preprocessing operation on the data at the address 1, are not shifted. All of the addresses X + 4 to X + 7, which are the result of the preprocessing operation on the data at address 2, are shifted by +1 (one shift to the right). Address X + 8 to address X + 11, which are the pre-processing calculation results of the data at address 3, are all shifted by +2 (2 shifts to the right). Address X + 12 to address X + 15, which are the results of the preprocessing operation on the data at address 4, are all +3 shifted (3 shifted to the right).
  • the logical sum operation of the address X, the address X + 4, the address X + 8, and the address X + 12 is assigned to the address X + 16.
  • the logical sum operation of address X + 1, address X + 5, address X + 9, and address X + 13 is assigned to address X + 17.
  • the logical sum operation of address X + 2, address X + 6, address X + 10, and address X + 14 is assigned to address X + 18.
  • the logical sum operation of address X + 3, address X + 7, address X + 11, and address X + 15 is assigned to address X + 19.
  • the 4-bit data width data from the address X + 16 to the address X + 19, the records 9 to 12, the records 9 to 12, and the records 13 to 16, which are the above calculation results, are obtained by performing matrix conversion on the data from the address 1 to the address 4.
  • the pre-processing operation necessary for performing matrix operation on addresses 5 to 8 is performed using auxiliary data and matrix conversion is performed using the shift register function.
  • This memory type processor greatly expands the utilization method by utilizing the auxiliary data as described above.
  • the biggest consideration of this technology is how to store record data.
  • external data can be written and read through the flip-flop 202 of the 1-bit arithmetic unit.
  • this memory type processor 101 has an array in which normal database data is inverted vertically and horizontally, and therefore, for example, array data such as record data 64 bits * 64 bits stored in the normal memory 100 Is transferred from the memory 100, the matrix conversion is performed in the memory processor 101, and only the 64 flip-flops 202 of the designated write destination record are valid (does not affect the memory cells of other records).
  • external data can be stored by storing data 64 times for each write destination address. That is, it is only necessary to sequentially write 64-bit data every 64 addresses. In this case, even if the data for one record is changed, it is overwritten for the width of 64 records.
  • the priority order output circuit (priority encoder) 214 may output the operation result record address for each record.
  • the priority order output circuit (priority encoder) 214 is convenient when the operation result is narrowed down. Considering that many records are searched, if the operation result output 106 such as the priority address encoder output circuit is divided into several blocks and can be read out in units of blocks, It becomes possible to increase the address output of records.
  • the operation results of the main records may be output in parallel as long as the output pins can be drawn from the chip.
  • the miniaturization technology based on Moore's Law is approaching its limit, and it is said that the improvement of integration after that will only be switched to other methods such as 3D packaging. So far, the parallelism of multi-cores and manycores using ALU has been improved according to Moore's Law, but if Moore's Law reaches the limit, the improvement of parallelism cannot be expected. Since the arithmetic unit according to the present invention has a very simple circuit configuration as described above, it has about 1000 (1K) transistors in the case of a standard function.
  • the memory capacity per chip at the present time is about 1 Tbit. Therefore, the memory type processor 101 having a nonvolatile 1-bit arithmetic function of 1 M (million) bits in the vertical and horizontal directions is realized.
  • the degree of integration does not increase like DRAM and FLASH memory, high-speed computation can be expected, and the semiconductor development cost can be realized at a relatively low cost.
  • any of the arithmetic units shown in FIGS. 3, 14, 15, and 17 is characterized in that the input operand is 1 bit and the 1-bit operation is repeated repeatedly.
  • This memory is an in-memory database, and a memory processor equipped with a self-contained operation function that does not rely on the CPU for operation is a memory processor.
  • the memory type processor is not necessarily intended for large data, and is optimal for information processing that requires repeated calculation even for small data. Therefore, the algorithm of the memory type processor 101 can be easily implemented in an FPGA. .
  • the multi-bit computing unit 122 and the like in which various cases exist can be used flexibly if it is an FPGA. It is also effective for a device configuration in which the memory type processor and the CPU are integrated, and a cache memory of the CPU.
  • FIG. 19 shows an example of series-parallel connection of memory type processors.
  • This memory 101 is a completely independent memory and can be expanded in the vertical direction (address direction) or in the horizontal direction (data width direction), so that the expansion of the system is extremely simple and the system is made persistent. I can do it.
  • address direction address direction
  • data width direction data width direction
  • the memory type processor 101 it is possible to perform parallel processing of all memories even if the data is, for example, 10 TB data, and the address selection 110 and the calculation condition specification 111 can be performed several times to several tens of times. Just repeat it a hundred times.
  • the access speed varies depending on the storage element, for example, if the speed of one logical operation is 10 ns, if 1 s, 1 million seconds can be realized, and 100,000 operations can be realized. Even for big data of a large size, the target record can be found in several hundreds of nanoseconds to microseconds and 1 milliseconds regardless of the size. In other words, it can be said that the greatest feature of this technology is that the effect is as remarkable as big data.
  • the idea of reversing the vertical / horizontal relationship between the memory structure and the data of the present invention clearly shows that the number of times of information processing is greatly reduced and the processing time is greatly reduced.
  • FIG. 20 shows an example of hierarchical connection of memory type processors.
  • the memory type processor 101 shown in the uppermost part of the figure is used as a master so that the sub memory type processor 101 storing more detailed data for each record can be searched corresponding to each record.
  • the sub memory type processor 101 storing more detailed data for each record can be searched corresponding to each record.
  • FIG. 21 shows an example of the feature database A using a memory type processor. Matching operations that require brute force operations or a large number of combination operations of all records and all field data can make the most effective use of this memory feature.
  • This example is an extremely small data table that only shows an image of the configuration, but five types of feature data from features A to E of 4-bit data are stored in a database from address 1 to address 20 as record data 215.
  • a to E of comparison data 213 to be compared are compared with this database, and the number of matched features, the number of approximate features, and the difference between the database and the verification data are calculated.
  • the collation results obtained by performing various operations such as accumulating the results are stored at addresses 21 and below, and the addresses are assigned so as to determine the results.
  • the data width of the feature data can be increased or decreased individually, or the number of features can be greatly increased.
  • FIG. 22 shows an example of the feature database B by the memory type processor.
  • the database of this example is the same as that described above, but is a feature database of 8-bit data using the multi-bit four arithmetic operation method described above.
  • 8-bit feature data from feature data A to feature data T up to the address 20 of the memory type processor is written for every 12 record groups.
  • the database is collated in parallel (in this example, 12 record groups) for each feature collation data given from the outside. This method can perform computations much faster than the feature database A described above.
  • the collation data is substituted into the address 21, and the target feature and collation are repeated.
  • the 8-bit data at the address 21 is exactly the same data as the parallel number (12 sets in this example). Need to write.
  • the record group becomes large (the degree of parallelism becomes large)
  • the transfer time of verification data becomes a problem.
  • extremely high-speed collation data can be obtained by using the following method. *
  • FIG. 23 shows an example of parallel data creation by a memory type processor. As shown in the figure 4-bit auxiliary data from address X to address X + 3 8-bit auxiliary data from address X + 4 to address X + 11 16-bit auxiliary data is written in advance from address X + 12 to address X + 27.
  • the address X + 28 is data obtained by ORing the address X of the 4-bit data and the address X + 2.
  • the address X + 29 is data obtained by ORing the address X + 6, the address X + 9, and the address X + 11 of 8-bit data.
  • the address X + 30 is data obtained by ORing the address X + 27 from the address X + 12 of 16-bit data.
  • the address X + 31 is data obtained by ORing the address X + 28, the address X + 29, and the address X + 30.
  • Auxiliary data is also effective when the memory cell at a specific address of a specific record is set to “0” or “1”, or when data is overlaid.
  • auxiliary data By preparing the auxiliary data as described above in advance, arbitrary data having an arbitrary data width can be obtained in parallel (at high speed). The above is an example of utilization of auxiliary data, and auxiliary data greatly expands the capacity of the memory type processor.
  • the data for verifying the bag is about 1KB per person. Since the data for 1,000 people is 1 MByte, real-time processing is not so difficult even with a normal personal computer. However, the data for 1 million people becomes 1 GByte, which is difficult for a normal personal computer and has many CPUs and GPUs. The dedicated system used is necessary. Furthermore, in the case of Japan as a whole, a system that is 100 times as large as 100 GBytes, and if you try to process the faces of people all over the world in real time, it will become a huge system with 100 times as many as 10 TBytes. It's not realistic. If this invention is used, it is only necessary to prepare many memory type processors 101 of this invention.
  • the database for collation of all human beings is completed.
  • a database for collation of all human beings will be completed with only eight.
  • collation determination calculation is possible in about several tens of microseconds, and as described above, the biggest feature is that the record time is the same time for 1 million records or 10 billion records, for example. . Less heat is generated and complicated peripheral circuits are not required, so that the system can be greatly reduced in size and saved in power.
  • the effect is more remarkable as the number of records increases, and it is most suitable for all uses such as fingerprint data verification, voiceprint authentication, character recognition data feature verification, etc. It is.
  • This technology greatly improves the performance by incorporating it into a part of artificial intelligence that has a lot of combined information processing.
  • the learning function used in artificial intelligence needs to read a lot of sample information and learn until the expected answer is obtained, but it takes a very long time if the scale or class of information to be learned increases. If this technology is used, complicated information processing can be eliminated even with large-scale knowledge information, so the learning time can be shortened and the recognition ability can be greatly improved.
  • it is ideal for analysis and data mining of weather information where various conditions are intricately intertwined.
  • a binary search is a typical example.
  • This algorithm is a standard technology for information processing as a technology that can extremely reduce the number of searches for information data.
  • data values are written in a data table on a memory, for example, prior arrangement is made such that data is arranged in order from small data to large data. It is necessary to rearrange the data on the memory (data maintenance) whenever preparation is necessary and data increases or decreases.
  • this algorithm reduces the burden on the CPU when searching for a specific data value, but the burden on pre-processing and data maintenance before that is quite small.
  • the above is an example of binary search, but other algorithms such as a hash table and a B-tree structure (index) are exactly the same.
  • the CPU that controls the memory type processor 101 and controls the entire information processing does not need to be high speed, it is possible to greatly reduce the power related to the information processing. Therefore, the burden on the user involved in information processing and the burden on the CPU, GPU, and peripheral circuits are greatly reduced at the same time.
  • the current information processing is such that the CPU sequentially accesses the address, reads the data, and sequentially performs the information processing with a constant data width such as the data width of the memory 100 of 32 bits, 64 bits, and 128 bits.
  • a constant data width such as the data width of the memory 100 of 32 bits, 64 bits, and 128 bits.
  • the memory-type processor 101 of the present invention can perform parallel calculation in an arbitrary data width of 1 bit or more and in a row direction, a column direction, and an arbitrary data width, and therefore can perform information processing with no wasteful bits.
  • a memory having an information narrowing detection function is a memory that is good at AND operations such as pattern matching.
  • PCT / JP2013 / 059260 a memory with a set operation function, can expand and expand the concept of a memory with the above-described information narrowing detection function, and freely perform logical product operation, logical sum operation, logical negation operation, etc. It is a memory type device that can
  • a feature of the memory type device is that the processing time is always constant regardless of whether the capacity of information processing is large or small. Therefore, the effect increases as the information processing capacity increases.
  • Demonstration machines using FPGAs with relatively small information processing capacities have been verified to be tens of thousands of times more powerful than conventional information processing. If an ASIC chip with a large information processing capacity is created, several hundreds It has been verified that the speed can be increased 10,000 times.
  • the search time which takes about 76 ms in normal software processing is 207 nsec and 370,000. It has been demonstrated that it can be realized twice as fast.
  • the above content is widely disclosed as a “technology for speeding up data retrieval 1 million times” through academic conferences, exhibitions, and the media, and practical products are being developed.
  • the present invention provides an arithmetic circuit capable of extracting various features of the memory type device to the maximum and various usage methods, and can perform a wide range of information processing as follows. It shows that. 1. Index calculation ⁇ Search, database search 2. Data comparison (match, big, small, range, maximum / minimum) ... database search. Calculation result judgment Conditional calculation 4. Addition and subtraction counters ⁇ Accumulation of calculation results Adder, subtracter: Addition / subtraction of data 6. Cryptographic processing: Plain text encryption, cipher text decryption 7. Matrix transformation Creation of data 9. The above combination operation.
  • the feature of this technology is that by using abundant memory resources as a data area and work area, a variety of operations can be performed with only a 1-bit logic (Boolean) arithmetic unit using a Boolean operation element (logical operation element) with an extremely simple circuit configuration. It is specifically shown that it is possible. In addition, when the use frequency of numerical operations is high, it is specifically shown that efficient numerical operation processing can be performed by adding and incorporating a 1-bit four arithmetic (arithmetic) operation element. In addition, by providing a data transfer function between records, it is possible to perform more effective and high-speed operations, such as performing data operations as a group of records and performing matrix transformations. It is shown in.
  • Arithmetic elements such as logical product (AND), logical sum (OR), logical negation (NOT), exclusive logical sum (XOR) and an adder combining them are the basis of information processing (computer).
  • the usage and application methods are widely introduced in various documents and the Internet.
  • a typical element is ALU, and CPUs and GPUs using ALU 217, which is usually a multi-bit arithmetic unit 122 of 8 bits or more, are used in every corner of our lives and industries.
  • performing all operations with a 1-bit arithmetic unit has not been studied, introduced, or used because it takes time for repeated operations as described above.
  • the calculation method introduced in the present invention cannot be produced except for knowing the ability of a 1-bit arithmetic unit having various advantages as described above by massively parallel calculation.
  • the calculation method introduced in the patent of the present application was originally invented and systematized by the inventor of the present application, but it summarizes the information processing method in which rows and columns are reversed from a state that is completely blank to the present application. It took a lot of patience and time.
  • the introduced calculation methods show typical calculation methods that are frequently used in information processing and the most suitable calculators.
  • various optional functions can be added to the necessary minimum. It is also free to use. There are innumerable calculation methods and their applications as well as CPU.
  • This invention is a memory type processor that pursues the ideal form of a computer in a big data society, solves many of the computer technology problems of information processing using only a CPU and GPU, and complements the weak points of the CPU and GPU.
  • the memory-type processor according to the present invention can be widely used as a part of functions of a general database, a super-large database, a super-large parallel arithmetic processing, various types of authentication and verification processing, and an artificial intelligence device.
  • this technology reduces the burden on engineers involved in information processing development, and can significantly reduce the power of information processing, so it has great significance in solving environmental problems in IT equipment.
  • memory-type processors with advanced information processing functions such as multi-bit, space-saving massively parallel computing elements, XY 2-axis bidirectional address access, and 2-axis bidirectional record parallel computing elements Can be expected.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

【課題】 現在の情報処理技術の課題は、情報を探しだす処理の様々な課題の解決であるとともに、省スペースで様々な演算が可能な演算器の実現による並列度の向上、これに伴う省電力化と開発負担の削減である。 【解決手段】 一般のメモリに回路規模が極めて省スペースな論理演算ならびに四則演算機能を備えた1bit演算器を組み込むことにより、情報を探し出す処理や数値演算など多様な情報処理を高速に実現出来る超並列能動型メモリ、メモリ型プロセッサを提供する。

Description

メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。
 本発明はメモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法に関する。
 現在のコンピュータはCPUやGPUなど逐次処理型プロセッサが情報処理の全てをこなすものであるので、CPUはCPUが得意な処理も苦手な処理も一手に引き受けざるを得ない。ビックデータの活用を本質的に考える上で、あらためて現在のノイマン型コンピュータの2つの大きな課題を明らかにしておく必要がある。
 第1の課題はノイマンバスボトルネックである。CPUやGPUにとってメモリ上のデータは裏返しになったトランプのような存在であり、一枚一枚(1アドレス、1アドレス)ごとにめくって(アクセス)して情報を探す以外にない。CPUやGPUがメモリ上の情報を逐次検索し特定の情報を見つけ出すような情報処理を行った場合、極めて多くの情報処理量となり待ち時間が多くなる。情報探し処理は、メモリ上の情報を何度も繰り返しアクセスする必要があるので他の情報処理に比較してバスボトルネックの影響が大きい。これがノイマン型コンピュータの宿命、情報探しバスボトルネックである。
 従って、特定の情報を見つけ出すような情報処理をする場合CPUやGPUの負担、情報処理の負担を軽減するために様々な利用技術(ソフトウエアアルゴリズム)を考案し利用する以外方法はない。情報を探し出すために利用される代表的なアルゴリズムとして、ハッシュテーブル、インデックス、木構造、バイナリサーチ、クラスタリング、これらの組合せなど無数に存在する。これらのアルゴリズムはアルゴリズム毎にメタデータ(構造化データ)を必要とする。これらの利用技術(ソフトウエアアルゴリズムとメタデータ)は、CPUの負担、情報処理の回数を軽減する手段、宿命を持って生まれたCPUやGPUを活かすための利用技術に他ならない。
つまり以上のようなアルゴリズムは、いずれもメモリ上のどこにどのような情報があるのかを事前に整理し、CPUが情報を探しやすいよう見出しやそのルートを作成、小さい順から順序よくデータを並べるなどの方法である。
この様なアルゴリズムによって検索時のCPUやGPUの負担は解消されるものの、前処理や後処理で複雑な情報処理を余儀なくされている、例えばデータの修正、挿入や削除に代表されるように情報データが修正、追加または削除される度に利用するアルゴリズムで作成されたメタデータの配列の並べ替えや、順番の変更など、これらのアルゴリズムのための前処理や後処理の情報処理が必要になっている。
 以上の様なソフトウエアアルゴリズムとメタデータは、データベースの種類や規模によって適切なものを幾つか選択し最適化システムを構築する必要があるので、情報の検索、照合、認証など情報を探す処理を含む情報処理は知識と経験を持った専門家以外は手が出せないという大きな問題を抱えている。
第2の課題はCPUやGPUの演算器である。CPUやGPUの心臓部であるALU(Arithmetic and Logic Unit)は四則(算術)演算とブール代数に基づく論理(ブール)演算の双方を演算するための機能を持っている、ALUは一定のデータの幅(たとえば32bit,や64bitを)並列に演算する必要があるので、1ユニットの回路規模が大きくならざるを得ない。従って並列度を上げるとチップサイズが大きくなり、消費電力も膨大になる。微細化技術の限界が間近に近づいている現在に至ってもこの問題の解決策は見出されていない。
 本発明は一般のメモリに極めて少量(省スペース)の回路を組み込むだけで、メモリ内で目的の情報を探し出す処理や、比較演算、カウント演算、四則演算など多様な演算を高速に実現する、1ユニットの回路規模が極めて小さい並列演算素子を備えた新しい考え方の情報処理メモリ、つまりメモリ型のプロセッサを実現することが目的である。
 本願発明者による発明の特許第4588114号 情報絞り込み検出機能を備えたメモリはパターンマッチなど論理積演算が得意なメモリである。またPCT/JP2013/059260号 集合演算機能を備えたメモリは以上の情報絞り込み検出機能を備えたメモリの概念を拡大発展させて、論理積演算、論理和演算、論理否定演算などを自由に行うことができるメモリである。
 特開2000-67573号公報、演算機能付きメモリは図に示されているようにブロック単位に演算回路を設けチップ効率の向上を目指すものである。
 特開平1-297724号公報、学習型文字検索装置と同装置の制御方式は、テキストデータの検索を実現するものであり、本願特許の情報処理と似た構成であるが、情報処理の内容はテキストのインデックス検索(あり/なし)のみに限定されており、本願発明のように、データ値の様々な演算を伴う高度で多目的な情報処理を目的としたものではない。また学習型文字検索装置と同装置の制御方式文献の図2に示されるように演算器はALUを用いたものであり、本例のようにALUを単純に並べただけの構成では並列度が上がらず、発明の効果で記述されるように「パーソナルユーズでかなりの効果が期待できる程度」となっているものと推定出来る。重要なことは並列度の向上と、演算内容の高度化と、相反する課題を克服することである。
 また本願発明者による発明の特願2013-264763号、情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法は演算回路が具体的に示されていなかった、また演算の内容もインデックス検索やデータ値の一致や範囲の検索に限定されたものであった。本願発明では単に検索など情報を探す処理にとどまることなく多様なデータの演算を超並列で実現するに最も相応しい演算回路を用いたメモリ型プロセッサを提供することである。尚、上記本願発明者による発明である特許第4588114号、PCT/JP2013/059260号、及び特願2013-264763号については、この参照によりその内容全体が本明細書に組み込まれるものである。
特開2000-67573号公報 特開平1-297724号公報
 この発明は、ノイマンバスボトルネックの影響が一番問題になる情報の検索や照合などの課題を抜本的に解消するとともに、並列演算に適した演算器、とその使い方を提案することで、これまでのCPUやGPUなど逐次処理型プロセッサが中心になった情報処理の課題の多くを抜本的に解消しようとするものである。つまり、大量のデータの演算をCPUやGPUのみに任せるのではなく、メモリ内で実現可能な演算はメモリに演算させることにより、CPUやGPUの負担が大きく、複雑で、専門家以外手が出せない情報処理を簡素化すると共に、消費電力を削減出来る、ビッグデータ社会の情報処理に最適な全く新しい情報処理の考え方に基づく情報演算機能をもったメモリ素子を実現することである。
 具体的にはメモリセルとのコンビネーションで多様な情報処理が可能な1bit演算器(論理演算器と四則演算器)で並列演算の回路スペースを削減し、消費電力を削減する。 
 (1)この発明の第1の主要な観点によれば、外部入力回路から入力される演算対象のデータを記憶可能な多数bitのメモリセルを有し、1のメモリセルがアドレスとレコードとで指定されるメモリと、前記メモリに、1レコード毎に接続され、当該1レコードの各メモリセルに記憶されたデータを1bit毎に読み込んで代入演算を実行し、その演算結果を1bit毎に同じ1レコードの所定のメモリセルに書き込む演算回路であって、この演算回路は、入力及び出力が1bitに制限されると共に、演算記憶回路と、論理積演算回路、論理和演算回路、論理否定演算回路、で構成され、1bitオペランドデータを繰り返し演算することにより論理演算もしくは算術演算を実行するものである、演算回路と、全ての演算回路に対して演算条件を指定して並列に演算を実行させる演算条件指定回路と、各レコードの前記演算結果を外部に出力する外部出力回路と、を具備することを特徴とするメモリ型プロセッサが提供される。
 この発明の第1の主要な観点によれば、以下の(2)~(8)の実施態様が提供される。
 (2)この発明の第1の主要な観点のメモリ型プロセッサにおいて、前記演算回路に、排他論理和演算回路、半加算演算回路、全加算演算回路、の何れかまたは全てを組み込んだことを特徴とするメモリ型プロセッサ。
 (3)この発明の第1の主要な観点のメモリ型プロセッサにおいて、外部からの前記演算対象のデータを行列変換して、アドレスとレコードで指定されるそれぞれのメモリセルに書き込みするデータ行列変換回路を具備すること特徴とするメモリ型プロセッサ。
 (4)この発明の第1の主要な観点のメモリ型プロセッサにおいて、前記外部出力回路は、(1)前記レコードの番地を優先順序順に出力、(2)前記レコードを幾つかに分割して、分割したレコード毎に優先順序順に出力、(3)何れかの前記レコードに演算結果があるか否かを出力、(4)前記全レコードを並列に出力、(5)以上(1)から(4)の組み合わせの出力、以上の何れかの出力回路を具備することを特徴とするメモリ型プロセッサ。
 (5)この発明の第1の主要な観点のメモリ型プロセッサにおいて、前記演算対象のデータを他の前記レコードへ転送する転送回路を具備することを特徴とするメモリ型プロセッサ。
 (6)この発明の第1の主要な観点のメモリ型プロセッサにおいて、CPUならびにその他の機能の回路に組み込みされたことを特徴とするメモリ型プロセッサ。
 (7)この発明の第1の主要な観点のメモリ型プロセッサにおいて、FPGAで実装したことを特徴とするメモリ型プロセッサ。
 (8)この発明の第1の主要な観点のメモリ型プロセッサを含んだ装置。
 (9)この発明の第2の主要な観点によれば、この発明の第1の主要な観点のメモリ型プロセッサの使用方法であり、このメモリに前記演算対象のデータと、演算結果を一時退避するためのワークエリアデータと、の双方を前記アドレスに割り付けし、双方のデータを用いて1bit演算機能を繰り返すことで任意のデータ幅のデータの、(1)前記演算対象のデータの全レコード並列インデックス検索演算、(2)前記演算対象のデータの全レコード並列比較(一致、大小、範囲、最大・最小)演算、(3)前記演算対象のデータの全レコード並列カウント(アップ、ダウン)演算、(4)前記演算対象のデータの全レコード並列加減算演算、(5)前記演算対象のデータの全レコード並列乗除算演算、(6)前記演算対象のデータの全レコード並列平文の暗号化と、暗号文の平文復号演算、(7)前記演算対象のデータの全レコード並列行列変換演算、(8)前記演算対象のデータの全レコード並列データ作成演算、(9)以上の組み合わせ演算、以上の何れかの演算をすることを特徴とするメモリ型プロセッサの使用方法が提供される。
 (10)この発明の第3の主要な観点によれば、この発明の第1の主要な観点のメモリ型プロセッサの使用方法であって、前記演算結果に勝ち残りの前記レコードがあるかないかを判定し、その判定結果をもとに演算条件式を与えることを特徴とするメモリ型プロセッサの使用方法が提供される。
 (11) この発明の第4の主要な観点によれば、この発明の第1の主要な観点のメモリ型プロセッサの使用方法であって、前記多数配列されたレコードの中から複数レコードのメモリセルのデータを一組のデータと割り付けして使用することを特徴とするメモリ型プロセッサの使用方法が提供される。
 (12)この発明の第5の主要な観点によれば、この発明の第1の主要な観点のメモリ型プロセッサを(1)直列、並列、もしくは直並列に接続、(2)階層的接続、以上の何れか、もしくは双方の接続で使用することを特徴とするメモリ型プロセッサの使用方法が提供される。
図1は、一般的なメモリの構成例である。 図2は、メモリ型プロセッサの構成例である。 図3は、メモリ型プロセッサの1bit論理(ブール)演算器の回路構成(例)である。(実施例1) 図4は、1bit論理(ブール)演算器によるメモリ型プロセッサのインデックス検索演算方法(例)の説明図である。(実施例2) 図5は、1bit論理(ブール)演算器によるメモリ型プロセッサのデータ比較演算式(例)の説明図である。 図6は、1bit論理(ブール)演算器によるメモリ型プロセッサのデータ一致比較演算(一致検索)方法(例)の説明図である。(実施例3) 図7は、1bit論理(ブール)演算器によるメモリ型プロセッサのデータ大小比較演算(以上、未満検索)方法(例)の説明図である。(実施例4) 図8は、1bit論理(ブール)演算器によるメモリ型プロセッサの最大・最小比較演算(最大・最小検索)方法(例)の説明図である。(実施例5) 図9は、1bit論理(ブール)演算器によるメモリ型プロセッサのデータカウント演算方法のアドレス割り付け(例)の説明図である。 図10は、1bit論理(ブール)演算器によるメモリ型プロセッサの加算カウント演算方法(例)の説明図である。(実施例6) 図11は、1bit論理(ブール)演算器によるメモリ型プロセッサの減算カウント演算方法(例)の説明図である。(実施例7) 図12は、1bit論理(ブール)演算器によるメモリ型プロセッサの全加算演算方法(例)の説明図である。(実施例8) 図13は、1bit論理(ブール)演算器によるメモリ型プロセッサの乗算演算方法(例)の説明図である。(実施例9) 図14は、メモリ型プロセッサの1bit四則演算器の回路構成(例)である。(実施例10) 図15は、メモリ型プロセッサによる多ビット並列四則演算方法(例)の説明図である。(実施例11) 図16は、メモリ型プロセッサのデータシフト機能を備えた演算器の回路構成(例)である。(実施例12) 図17は、メモリ型プロセッサによるデータの行列変換方法(例)の説明図(1)である。(実施例13) 図18は、メモリ型プロセッサによるデータの行列変換方法(例)の説明図(2)である。 図19は、メモリ型プロセッサの直並列接続の例である。 図20は、メモリ型プロセッサの階層接続の例である。 図21は、メモリ型プロセッサによる特徴データベースの例Aである。(実施例14) 図22は、メモリ型プロセッサによる特徴データベースの例Bである。(実施例15) 図23は、メモリ型プロセッサによる並列データ作成方法(例)の説明図である。(実施例16)
 図1は、一般的なメモリの構成例である。図1のメモリ100はアドレスデコーダやデータバスなどの機能回路は省略されており、このメモリに自由に情報データが書き込み読み出し可能な構成で、1ワードがn bitの幅103で、Nのアドレス104を持つ、N×n bitセルからなる記憶セル102からなり立っており、一般的にはアドレスデコーダなどの手段で外部から1からNまでのアドレスを選択指定可能になっている。現在のCPUによる情報処理は、メモリ100のデータ幅103が8bit、16bit、32bitなど一定のデータ幅で、情報データの検索の場合アドレス数が1Mアドレスや1Gアドレスなど与えられたメモリのアドレス空間をCPUが順次アドレスをアクセスしデータを読み込み逐次処理を行って行くものである。この発明の情報処理は以上の一般のメモリ構造やデータベーステーブル構造のデータの幅とアドレスの概念を逆転させる考えでなり立っており、また1bit単位の並列演算を基本とするものである。
 図2は、メモリ型プロセッサの構成例であり、外部入力回路から入力される演算対象のデータを記憶可能な多数bitのメモリセルを有し、1のメモリセルがアドレスとレコードとで指定されるメモリと、前記メモリに、1レコード毎に接続され、当該1レコードの各メモリセルに記憶されたデータを1bit毎に読み込んで代入演算を実行し、その演算結果を1bit毎に同じ1レコードの所定のメモリセルに書き込む演算回路であって、この演算回路は、入力及び出力が1bitに制限されると共に、演算記憶回路と、論理積演算回路、論理和演算回路、論理否定演算回路、で構成され、1bitオペランドデータを繰り返し演算することにより論理演算もしくは算術演算を実行するものである、演算回路と、全ての演算回路に対して演算条件を指定して並列に演算を実行させる演算条件指定回路と、各レコードの前記演算結果を外部に出力する外部出力回路と、を具備することを特徴とするメモリ型プロセッサである。以下に詳細を説明する。
 図1同様図2においてもアドレスデコーダやデータバスなどの機能回路は省略されており、このメモリ型プロセッサ101の記憶セル102に自由に情報データが書き込み読み出し可能な構成になっている。
 通常のメモリの1ワードn bitの幅103は、本メモリ型プロセッサ101の場合データベースのレコード数(n)に相当し、1レコードのデータが縦列に配列され、アドレス104のNは1レコードのフィールドデータ長に相当する構造と考えると理解しやすい。つまり、このメモリ型プロセッサ101のメモリ部(データベース部)は、1レコードがNbitのフィールデータ長でnレコードのデータテーブルとなっている。
 データテーブルの下段に設けられた1bit演算器105は、選択指定110されたアドレス104の記憶セル102のbitセルのデータ毎に対し、論理記憶116、論理積112、論理和113、論理否定(NOT)114、排他論理和115、全加算211、その他のオプション機能、ならびにその組合せの演算器が指定した演算条件111で全レコード並列に演算が実行できる構成となっている。詳細は後述する。
 またこの1bit演算器105の演算結果を出力するため優先順出力回路(プライオリティアドレスエンコーダ出力回路)214などの演算結果出力106機能が備えられている。後述するがこのメモリの大半はメモリセルそのものであり、そのごく一部のみが1bit演算器105ならびに演算結果出力106機能であるので、一般メモリに省スペースでこれらの機能を組み込みすることが可能でありデータベースに最適な大容量のメモリとすることが出来る。
 詳しくは後述するが1bit演算機能105は大きく分けて、1bit論理(ブール)演算機能123、ならびに1bit四則(算術)演算機能124の二種類がある。論理演算は、結果が真か偽か、0か1の1bitでよいのに対し、四則演算は、演算結果と桁上げの2bitが必要である。最初に1bit論理(ブール)演算機能123について説明を行う。 
 図3はメモリ型プロセッサの1bit論理(ブール)演算機能の回路構成の例であり、メモリ型プロセッサ101のアドレス104によって選択された1bitのメモリ記憶セル102のデータを演算する1bit論理(ブール)演算器123の回路と演算の内容を説明する。
 本例ではスイッチ201を1のポジションに切り替えると、1bitの論理(ブール)演算123が実現出来る構成となっている。図に示す通り、回路構成は論理積112、論理和113、排他論理和115、論理否定114、フリップフロップ(FF)202、選択回路203で構成される極めて単純な構成である。排他論理和115は、論理積112、論理和113、論理否定114の組合せで演算できるので、必ずしも必要ではないが、後述する四則演算など利用頻度が高い場合には組み込んでおくとよい。通常の演算器、例えばALUの場合入力オペランドが32bitなど多数bitであるのに対し、この構成は1bitオペランドであることが最大の特徴である。
 また排他論理和115は暗号化に利用することができる。平文データを暗号化する場合、暗号データとの排他論理和演算を行うことにより平文データは暗号化され、暗号化された暗号文データは、暗号データと排他論理和115演算することにより平文化可能であることは周知のことである。従ってこの1bitブール演算器105の排他論理和115は、大量の平文データを超高速に暗号化、復号化することができる。
 この回路はアドレス104により選択されたメモリ記憶セル102からの1bitのデータは、選択回路203で正論理、または負論理(論理否定114)が選択可能になっている。同様にフリップフロップ202の結果出力205も正論理、または負論理(論理否定114)が選択可能な構成となっている。
 以下に演算可能な内容を説明する。第1にメモリから読み出された正論理もしくは負論理のデータをメモリデータ204として、フリップフロップ202へ直接代入(記憶させる)することが出来る。第2に演算結果であるフリップフロップ202の正論理もしくは負論理の結果出力205を、再度フリップフロップ202へ直接代入(記憶させる)することが出来る。
第3に正論理もしくは負論理のメモリデータ204と演算結果107であるフリップフロップ202の正論理もしくは負論理の結果出力205を、論理積112.論理和113、排他論理和115のいずれかの演算を実行し、その結果をフリップフロップ202へ代入(記憶させる)することが出来る。以上の演算を全レコード並列に指定できる構成、演算条件指定機能111になっている。
 また、この1bit論理(ブール)演算結果は、スイッチ201を3のポジションにすることによって、アドレス104により選択された記憶セル102に記憶することが出来る構成である。
 1bit論理演算結果は、通常勝ち残りレコードとなりレコード数が大幅に絞り込まれるのでプライオリティアドレスエンコーダ出力回路などの演算結果出力106機能から1レコード毎に、レコードの番地を外部に出力する方式とすると、メモリ型プロセッサ101チップの出力ピンのピン数を最小限のものとすることが出来る。詳細は後述する。
 背景技術で述べた通りALU217は、たとえば32bitデータ2組を一括して演算する必要があるので1ユニットの回路の規模が大規模にならざるを得ないが、この構成の1bit論理(ブール)演算器105は1ユニットの回路規模が150トランジスタ程度、演算結果出力106を含めても数百トランジスタ程度で実現できるので、並列処理の演算ユニットとして最適である。
後述する、1bit四則(算術)演算機能124も極めて省スペースな演算回路である。
 以上の省スペースな演算機能でも超高速でしかも多様な演算が実現出来ることを順次以下に紹介する。 
 図4は、1bit論理(ブール)演算器によるメモリ型プロセッサのインデックス検索演算方法の例である。インデックス検索演算はインターネット検索、特許検索、全文検索など様々な用途がある。通常文字列情報は、キーワードだけの検索とキーワードと演算式のその双方を条件指定する方法の2通りがある。
 本例では特許文献の検索のように例えば「情報処理」、「情報検索」、「CPU」などのキーインデックスと論理積,112、論理和113、論理否定114の演算を可能にした検索で、キーとなる語彙と演算式の双方を与えることにより、レコードの絞り込みが行われ、これらのキーワードと論理演算条件に合致する文献(レコード)があるかないか、あればどの文献(レコード)にあるかを判定するインデックス検索を対象とする。
 以下にこのメモリ型プロセッサ101を用いて文献検索などインデックス検索演算に利用した例を説明する。
 本例の場合、1からNまでのアドレスには、「情報処理」、「情報検索」、「特許」、「CPU」などの語彙をインデックスとして割り付けし、1レコードを1文献に対応させる。つまり1つの文献中に、「情報処理」、「情報検索」、「特許」、「CPU」などの文字が1つでもあれば、対応するメモリセル(フィールド)に「1」を書き込んで、文献毎に登録をしておく。(「0」は省略されている、以降同様)。
 従って本例の場合、N個の語彙(インデックス)と、n冊の文献(nレコード)がデータベースとして登録されていることになる。
 本例ではアドレス18が「情報処理」、アドレス5が「情報検索」、アドレス24が「特許」、アドレス10が「CPU」としてインデックス語彙(キー語彙)が割り付けられており、演算条件は(「情報処理」+「情報検索」の語彙を含む)*(「特許」の語彙を含まない文献)*(「CPU」の語彙を含む文献)とする場合で説明する。
 図4の下段に以上のキーワード検索の演算方法が示されている。アドレス18の「情報処理」とアドレス5の「情報検索」の論理和(OR)演算の結果、双方の語彙が含まれる文献のレコードは3、4、5、13、14、16、19、21、25である。次に、アドレス24の「特許」の語彙が含まれない文献は論理否定演算の結果、4、8.11、16、22、25である。先ほどの演算結果、文献レコード3、4、5、13、14、16、19、21、25と、この論理否定(NOT)演算結果の論理積(AND)演算を行った結果の勝ち残り文献は4、16、25となる。
 最後にアドレス10の「CPU」を含む文献レコード3、7、9、12、15、16、22と直前の勝ち残り文献との論理積(AND)演算を行うことにより最終勝ち残り文献107はレコード16になっている。
 1つのレジスタで構成される1bit演算器で様々な演算を実施する場合、( )内の演算の結果など中間の演算結果を一時退避して記憶する必要がある場合、例えばアドレスNをテンポラリな一時バッファー207として利用することにより実現することが可能になる。
 つまり、文献16は(「情報処理」+「情報検索」いずれかの語彙を含む文献)*(特許の語彙を含まない文献)*(CPUの語彙を含む文献)である。以上の結果を、プライオリティアドレスエンコーダ出力回路などの演算結果出力106から順次読み出せばよい。
 CPUやGPUは、このメモリ型プロセッサ101にアドレス選択指定110と、演算条件指定111を行うだけで、全メモリ空間の情報を全く探しまわることなしに、目的の情報をこのメモリ型プロセッサ101から検出することが可能になる。
 以上の説明は文献検索演算の例であったが、レコードをURLに置き換えすればインターネット検索用のデータベースに利用可能である。
 以上の文献検索は、全てが1bitからなるデータ有り無しのインデックスデータであったが、データが値で記憶(登録)されたデータの情報処理について説明する。
 図5は、1bit論理(ブール)演算器によるメモリ型プロセッサのデータ比較演算式の例の説明図である。「/」の記号は論理否定114演算、「*」は論理積112演算、「+」は論理和113演算を表している。本例は2進数、4bitの場合のデータの比較演算つまり、一致、大小、範囲演算を行う場合の演算式を示したものである。図示するように、10進数は2進数に変換され、何れの場合も、MSBである「8」からLSBである「1」まで割り付けされた「8」、「4」、「2」、「1」の各bitのアドレス104を、比較する演算条件に適合するように選択し、論理否定114、論理積112、論理和113することで、一致、以上、未満のデータを検出することが可能であることを示している。本表を参考にすれば演算条件を以下や範囲にすることも、多数bitデータの比較の演算条件式も容易に記述することができる。
 先にも説明したが、これらの演算を実施する上で、中間の演算結果を一時退避して記憶する必要がある場合、例えばアドレスNをテンポラリな一時演算バッファー207として利用する。このことは以下の何れの演算にも応用することが出来る。 
 図6は、メモリ型プロセッサの、1bit論理(ブール)演算器によるデータ一致比較演算方法の例である。本例は1bit論理(ブール)演算機能を備えたメモリによる2進数、8bitのデータ一致演算の例である。
 例えば、アドレス10を最上位bit(MSB)「128」としてアドレス17を最下位bit(LSB)「1」とする8bitのデータをフィールドに割りつけた場合を考える。8bitのデータであるので、256通りのデータを記憶することが可能であり、アドレス10からアドレス17の8つのアドレスを適切に選択することにより、256通りのデータの中から完全一致のデータを検出してそのレコードの番地を出力することが可能になる。
 例えば、10進データ値「10」=2進数「00001010」を完全一致で探す場合、アドレス10を最上位bit(MSB)「128」としてアドレス17を最下位bit(LSB)「1」まで8回演算し「00001010」であるデータを検出すればよい。
 図の下方に示す通り、本例では、MSBのアドレス10から「128」、「64」、「32」、「16」、「8」、「4」、「2」、「1」の順に演算を行っている。この際、2進数「00001010」の「0」の桁の場合は論理否定、「1」の桁の場合は正論理で、8回の論理積演算(勝ち抜き演算)を繰り返し勝ち残った13および25の2つのレコードが10進データ値「10」になっている。以上のような1bit演算を繰り返すことにより任意の値のデータ値を検出することが出来る。 
 図7は、1bit論理(ブール)演算器によるメモリ型プロセッサのデータ大小比較演算方法の例である。これまでの説明は、10進データ値「10」の完全一致を求めるものであったが、10進データ値「10」以上を探す場合、図に示す通りMSBのアドレス10からアドレス13まで4回アドレスの論理和を取ることにより10進データ値が「16」以上のレコードをまとめて検出することが出来る。
 更に下位4bitのアドレスの15と16の論理和と、アドレス14を論理積演算することにより10進データ値「10」以上「16」未満を求め、先ほどの10進データ値が「16」以上のレコードと論理和をとることにより、10進データ値「10」以上のデータ値のレコードを検出することが出来る。更に図に示す通り10進データ「10」以上のデータ値のレコードを否定すれば「10」未満つまり「9」以下のレコードが検出される。
 その他のデータ値や範囲検索も以上と同様な1bit演算を繰り返し行えばよい。以上の演算は桁数以内の演算ステップ数で全レコードを並列に処理する結果になっている、データ値が16bitであれば以上の2倍、32bitになれば4倍になるだけで完全一致から範囲検索演算を実現することが出来る。また、データ幅を8bitから9bitや10bitに増やす場合でも、極めて単純であり、必ずしもアドレスが連続されている必要もなくデータ幅を1bit増やし17bitや33bitにすることも違和感なく実現出来る。
 つまりこのメモリ型プロセッサは、ある/なしの1bitデータから256bit幅など、任意のデータ幅のデータをレコード内のフィールドデータとして割付することができる。例えば個人情報などの場合、「氏名」、「住所」、「勤務先」、「生年月日」、「身長」、「体重」、「性別」など、データ幅は様々であり、必要最低限のデータ幅を割付し、必要なデータbitだけ演算させ、無駄なbitは演算させないように出来ることも特徴の1つである。詳細は後述する。 
 図8は、メモリ型プロセッサの、1bit論理(ブール)演算器による最大・最小比較演算方法の例である。アドレスXにはMSB「128」、アドレスX+7にはLSB「1」、の8bitのデータが割り付けされており、それぞれのレコードには比較するデータ、10進数「69、109、21、14、5、105、5~34」が書き込まれている。
 このような、データの中から、最大値を探すためには、いずれかのレコードにデータがあるのか無いのかの演算結果を利用して、その判定結果に基づき演算条件式を設定するとよい。以下にその手順を示す。
 最初にMSBの「128」のアドレスを選択しその演算結果を判定する。その結果どのレコードにもデータが無いので、「/128」の演算を行う。(省略することもできる)
次に「/128」*「64」の演算を行い、何れかのレコードにデータがあるので、「/128」*「64」*「32」の演算を行う。 
その結果何れかのレコードにデータがあるので、「/128」*「64」*「32」*「16」の演算を行う。 
その結果どのレコードにもデータが無いので、「/128」*「64」*「32」*「/16」の演算を行う。 
その結果何れかのレコードにデータがあるので、「/128」*「64」*「32」*「/16」*「8」の演算を行う。 
その結果何れかのレコードにデータがあるので、「/128」*「64」*「32」*「/16」*「8」*「4」の演算を行う。 
その結果何れかのレコードにデータがあるので、「/128」*「64」*「32」*「/16」*「8」*「4」*「2」の演算を行う。 
その結果どのレコードにもデータが無いので、「/128」*「64」*「32」*「/16」*「8」*「4」*「/2」の演算を行う。 
その結果何れかのレコードにデータがあるので、「/128」*「64」*「32」*「/16」*「8」*「4」*「/2」*「1」の演算を行う。 
その結果勝ち残ったレコードが最大値であり、その値は、64+8+4+1=109であることが分かる。 
この8bitの最大値検出演算は合計48ステップである。
 次に最小を求めるには、図に示す通り最大とは反対に、それぞれのデータの補数データが勝ち残りするよう繰り返し演算することに求めることが可能である。本例では、2つのレコードに最小値である5が検出されている。
 以上のように最大・最小演算は勝ち残りの演算結果を判定して、そのあり/なしの判定結果をもとに条件設定を行うものである。
 このような演算はCPUの条件判定演算と同様に様々な演算に応用が出来る。従って、演算結果出力は、それぞれのレコードの番地を出力するだけでなく、何れかのレコードに勝ち残りbitがあるかないかのみを判定できる出力を設けると効率的な条件判定演算が可能になる。
 これまで主にデータを探すための演算について説明を行ったが、以下にその他の演算例を紹介する。
 図9は、メモリ型プロセッサの、1bit論理(ブール)演算器によるデータカウント演算方法のアドレス割り付けの例である。本例は2進数、4bitデータの加減算カウントを行う場合の、アドレスの割り付けの例を示したものである。アドレスXからアドレスX+3はカウントデータ206、「8」、「4」、「2」、「1」の各bitの記憶エリア、アドレスX+4はテンポラリな一時バッファー207、アドレスX+5からアドレスX+8は「8」、「4」、「2」、「1」の各bitのカウント演算に必要なキャリーデータ208(またはボローデータ209)の各bitに割り付けした構成を示すものである。 
 図10はメモリ型プロセッサの、1bit論理(ブール)演算器による加算カウント演算方法の例である。本例は、レコードデータの加算カウントの例を示すものであり、2進数、4bitデータの加算カウントを実行するためのアドレス、レコードの割り付けの例を示している。
 図の上段の初期状態に示す通り、「8」、「4」、「2」、「1」の4bitデータはアドレスXからアドレスX+3番地までカウントデータが割り付けられ、本例の場合、左側のレコードより初期値として、「0、8、1、15、7、3、5、~10」のカウントデータが書き込まれている。1bit論理演算器の演算結果(勝ち残り)が左側のレコードより「0、1、0、1、1、1、0~1」であることが示されており、現在のカウントデータに1bit演算器(FF)の演算結果(勝ち残り)を加算し、演算結果「0、9、1、0、8、4、5、~11」を求める場合の考え方を示す。
 1bit論理(ブール)演算を繰り返し加算処理を行う場合、加算結果の桁上げ(Carry)アドレスと1bit演算器結果を一時記憶するバッファアドレスをワークエリアとして利用することによりカウンタ機能を実現することが出来る。本例ではアドレスX+4を1bit演算器バッファー207、アドレスX+5~アドレスX+8を各bitのキャリーデータ208としている。
初期状態ではこれらのアドレスはクリアし、オール「0」状態としておく。
アドレス割り付けはこれに限定されるものではない。
 以下に以上割り付けされた、カウントデータ206ならびにワークアドレスを利用して加算カウントを行う場合の例を示す。
 図の上から順番に、初期状態、「1」のbit演算、「2」のbit演算、「4」のbit演算、「8」のbit演算、演算結果が示されている。
 ステップ1で1bit論理演算器の内容を1bit演算器バッファー207、アドレスX+4に退避させておく。1bit演算器(FF)の内容は変化しない。ステップ2でカウントデータの「1」のbit、アドレスX+3の内容を代入し、1bit演算器(FF)の演算結果と論理積112演算させる、演算結果データは「1」のbitのキャリーデータ208である。ステップ3でこのキャリーデータ208をアドレスX+8に代入する。ステップ4で1bit論理演算器バッファー207である、アドレスX+4から、初期状態(加算値)の1bit演算器のデータを代入する。ステップ5で代入された加算値と、カウントデータ206の「1」の桁、アドレスX+3を代入し排他論理和演算を行う、この演算結果は、「1」の桁の演算結果となる。ステップ6で、アドレスX+3にこの結果を「1」の新データとして書き込み、「1」のbit演算が完了する。
 以降同様にステップ7からステップ24まで、「2」のbit演算、「4」のbit演算、「8」のbit演算を繰り返し、「2」、「4」、「8」の桁のデータを書き換える。
 図の最下段にはカウンタデータが更新され「0、9、1、0、8、4、5、~11」となっていることが示されており、1bit論理(ブール)演算により加算カウントが正常に実現されていることが示されている。
 4bitデータの場合、以上の24ステップであるが、8bitデータの場合はその倍の48ステップであり、16bitデータであれば96ステップ必要である。
 以上のように1bit演算は一見非効率的であるように思えるが、数千、数万、100万レコードというように超並列が出来る場合、その演算効率は極めて高く高速である。
 以上のカウント演算は、何らかの演算処理の後に連続して活用すると極めて効率的である。例えば、インターネットの検索回数をカウントする検索ランキングのようにレコードデータの検索演算の完了後、ヒットしたレコードの検索ランキングカウンタをそれぞれ1カウントアップするように利用すれば、メモリ内で自動的にカウンターを更新できるので誠に好都合である。これ等のカウンタの値は、大小比較や範囲比較、最大・最小の対象となるレコードを高速に読み出すことが可能であることは言うまでもない。以上のような検索ランキングに限らず顏認識や静脈認証などの複数の特徴の識別結果の多数決判定など各種データの多数決演算、クラス決定演算など様々な利用が可能である。 
 図11は、メモリ型プロセッサの、1bit論理(ブール)演算器による減算カウント演算の例である。以上説明の加算と減算の違いは、キャリーをボローに変えて補数演算させることである。キャリーデータ208をボローデータ209に置き換えアドレス割り付けする。ボローデータは対象データを論理否定114する補数演算で加算同様に実現できることは周知の事である。従ってステップ2、8、14、20の論理積演算の際、「1」、「2」、「4」、「8」の論理否定データで演算することにより実現される。その結果は「0、7、1、14、8、2、5、~9」であり、1bit論理(ブール)演算により目的の減算カウント演算が正しく実現出来ていることが示されている。
 以上の例は4bitの例を示したものであるが、さらに多数の桁の演算は、必要桁数を繰り返し演算すれば良い。 
図12は、メモリ型プロセッサの、1bit論理(ブール)演算器による全加算演算の例である。図の上段は2進数4桁の全加算演算の真理値表を表すものである。各桁とも入力A、入力B、入力Ci(キャリー)の3入力の全加算演算を行い、その演算出力SならびにキャリーCo出力の真理値表である。
 1桁目の場合、入力A「1」、入力B「1」、入力Ci「1」の3入力の全加算演算を行いその結果、出力S「1」、出力Co「1」が出力される、通常1桁目にCiは入力されない。2桁目は入力A「2」、入力B「2」、入力Ci「2」の3入力の全加算演算を行いその結果、出力S「2」、出力Co「2」が出力される、この入力Ci「2」は一桁目の出力Co「1」である。従って2桁目は、8通りの組合せが存在する。3桁目、4桁目も2桁目と同様な演算となる。
従って、1bit論理(ブール)演算器により全加算を行う場合には、入力の3値が「0」、「1」の何れの状態であるかの8通り(1桁目は4通りでもよい)の判定演算を行い、その結果を一時記憶し、その結果から真理値表にもとづき出力Sならびに出力Coを求めれば良い。図の下段には、以上の考え方を基に、入力A、入力B、それぞれ4bit同士の全加算演算を実行する場合のアドレスの割付が示されている。アドレスXからアドレスX+3はA「8」からA「1」、アドレスX+4からアドレスX+7はB「8」からB「1」のデータが記憶されている。アドレスX+8からアドレスX+11は演算結果の出力Sの演算結果を記憶するエリアである。アドレスX+12は、MSB「8」桁のキャリーの記憶エリアである。アドレスX+13からアドレスX+20は入力A、入力B、入力Ciの3つの入力が8通りのどの状態であるかどうかを判定しその結果を一時記憶するエリアである。図に示すようにABCi判定1から8まで、アドレスX+13には「/A」*「/B」*「/Ci」つまり3値とも「0」、アドレスX+20には「A」*「B」*「Ci」つまり3値とも「1」、のように3値の全ての組合せ8通りの演算を行い、その結果を所定のアドレスに記憶する。
 ABCi判定1から8までのこの8つの判定結果で「1」となっているのは、1レコード当たり、アドレスX+13からアドレスX+20までの1アドレスのみである。従って、先に示した全加算演算の真理値表に従い、以上のABCi判定の2、3、5、そして8の何れかに「1」がある場合、出力Sを「1」にしてそれ以外は「0」にするための論理和113演算を行い、その結果をアドレスX+21に一時記憶するとともに、出力Sの桁ごとの演算結果はアドレスX+8からアドレスX+11の何れかに記憶する。
 次に、ABCi判定の4、6、7、そして8のいずれかに「1」がある場合、Co出力を「1」にしてそれ以外は「0」にするための論理和113演算を行いその結果をアドレスX+22に記憶する。つまり、8つの組合せどれかを判定するための8×3=24ステップの判定演算と演算結果SならびにC(キャリー)判定するための8ステップの判定演算、合計32ステップの演算を実行すればよい。以上が1桁分の演算であり、4bitの場合これを4回つまり128ステップ繰り返せば良い。8bitの場合は256ステップ繰り返せば良い。
 以上は、加算の例であるが、減算はキャリーデータをボローデータに変換し補数演算を行えば実現できることは周知のことであり、ここでは省略する。 
 図13は、1bit論理(ブール)演算器によるメモリ型プロセッサの乗算演算方法(例)説明図である。被乗数に対し、乗数の各桁毎に演算した結果を各桁毎に1bit毎にシフトしその結果の各桁を加算することにより乗算演算が実現できることが知られている。
 例えば10進数被乗数「11」×乗数「14」=「154」
2進数被乗数「1011」×乗数「1110」を乗算演算する場合、
乗数1桁目の演算は「1011」×「0」=「0000」、演算結果シフト0 「00000000」
乗数2桁目の演算は「1011」×「1」=「1011」、演算結果シフト1 「00010110」
乗数3桁目の演算は「1011」×「1」=「1011」、演算結果シフト2 「00101100」
乗数4桁目の演算は「1011」×「1」=「1011」、演算結果シフト3 「01011000」
以上4回の全ての演算を加算 =「10011010」
この演算内容をメモリ型プロセッサ101の、1bit論理(ブール)演算器による乗算演算で実施する場合の手順を2桁目演算結果S3の所まで示したものである。
アドレスXからアドレスX+3には4bitの被乗数データAが記憶されている、アドレスX+4からアドレスX+7には、4bitの被乗数データBが記憶されている。アドレスX+8からアドレスX+15には乗数1桁目の演算結果を各桁毎に一時記憶するエリアである。アドレスX+16からアドレスX+39には乗数2桁目から4桁目の演算結果を各桁毎に一時記憶するエリアである。被乗数A、乗数Bそれぞれの桁の演算を行い、各エリアの記憶データを1bitずつずらして演算結果を記憶する。この演算はキャリーデータ208が出ないので合計16ステップの単純な処理である。
 以上の4桁の演算結果を、先に示した全加算演算し、その結果をアドレスX+40からアドレスX+47に最終結果として記憶する。この演算はキャリーデータ208が出るので少し複雑になるが先に示した全加算演算の手法により演算すればよい。合計1056ステップで4桁の乗算が実現出来る。
 除算の場合は、被除数Aの上位の桁から除数Bで割り切れる桁まで演算を繰り返せばよいことが知られている、1bit論理(ブール)演算機能123のこの手法で乗除演算が出来る。ここまでの説明は、半加算器、全加算器などの四則(算術)演算器を用いることなく、ブール演算素子のみで、様々な四則演算を含む様々な演算を実行することが可能になることを示したものである。通常これまで説明して来た演算手法は繰り返し演算の手間(時間)がかかり意味のないことのように考えられるが超並列演算が実現できること、CPUやGPUの力を借りることなくメモリ内部で演算を完結出来ることを考慮すれば大きな意義をもつ。
 以下に、四則(算術)演算を多用するような情報処理の場合、算術演算特有のキャリーデータ208ならびにボローデータ209の処理の負担を軽減する方法を紹介する。 
 図14は、メモリ型プロセッサの、四則(算術)演算124を効率的に実現出来るようにするために考えられた回路である。本例ではスイッチ201を2に切り替えると、1bitの四則(算術)演算124が実現出来るような構成となっている。メモリからの1bit毎のデータは、2つの半加算器210と論理和113で構成される全加算器211の、A、B、Ciの3つの各入力のデータを順次記憶する3つのフリップフロップ202とその何れかを指定する論理積112ゲートで選択指定され、全加算器211に加えられるように構成されている。
 さらにその結果全加算器211のS出力、ならびにC出力は一旦2つのフリップフロップ202に順次記憶され、OUT S選択入力もしくはOUT C選択入力で選択指定された出力が、スイッチ201を通じてメモリ100の記憶セル102に記憶されるように構成されている。以上のように構成することで1桁の四則演算を5ステップで実現できる、演算器が完成する。以上の構成は加算器で記載されているが、減算器、そして乗除演算に利用することが可能であることはこれまでの説明の通りである。
 以上の1bitの四則(算術)演算124は、四則演算が多用される情報処理には最適である。さらにこの四則(算術)演算器の性能を最大限に発揮できる多ビットデータの演算方法ならびにデータシフト回路を紹介する。 
 図15は、メモリ型プロセッサの、多ビットデータ並列四則演算方法の例である。これまでの演算方法は全て1つのレコード内で完結され実行されるものであたが、この演算方法は複数のレコードを1つのレコード群として演算をするものである。つまりレコード群を一つのデータとするもので、レコードの幅(データ長)は任意である。本例の場合レコードYからレコードY+8の9つのレコードを1つのレコード群とし1つのデータとなるように割り付けされており、その割り付けは、レコードY+8をLSBとして、レコードY+1をMSBとする8bitデータ、レコードYは四則演算結果で出力される桁上げ出力になっている。また、アドレスXは演算入力データAi、アドレスX+1は演算入力データBi、アドレスX+2は演算出力データCo、アドレスX+3は演算出力データSoが割り付けされている。
 図の下段部の演算部には、メモリからのデータ、メモリへのデータを一時記憶する一時記憶器と、四則演算を実施する四則演算器がそれぞれ並列に配列されている。
 これまで説明の1bit四則(算術)演算器124は、1つのレコード内で完結される演算であったが、この多bit演算器122は、データを他のレコードに横送りする機能つまりLSBからMSB各bitのキャリーデータ208であるキャリーCo出力を上位のキャリーCi入力に入力する接続が付加された構成である。この接続は、データの幅分必要であり、どのレコードからどのレコードまでを接続する、または接続しないなどレコード毎に任意に指定可能な構成にすることもできる。
 この構成とすることにより、メモリのアドレスXならびにアドレスX+1から並列に代入されたAi、Biの入力データは一時記憶器に記憶され、その一時記憶器の出力が四則演算器の入力に接続されているので、LSBからMSB各レコードの四則演算器は、各レコード並列に演算を実行してその結果の演算出力Soならびにキャリー出力Coを、一時記憶器に出力しその結果をメモリのアドレスY+2並びにアドレスY+3に演算結果として記憶させることができる。
 この演算方法は詳しくは後述するがこれまでの何れの演算方法に比較して極めて効率的で高速であるが、この四則演算器に、例えば乗算器やキャリー先読み機能などのオプション機能を設けることによりさらに高速な演算が実現できる。キャリー先読み回路はデータ幅が広くなると回路構成が大きくなるので、演算のデータ幅を8bitや16bit幅程度に抑え、データ幅の広い演算はキャリーを含んだ演算を繰り返し行うこととすれば省スペースで高速な演算回路を実現することができる。
 これまでの手法では、例えば1bit論理(ブール)演算器で8bitの加算演算をする場合には256ステップ、1bit四則演算器の場合には40ステップ程度の演算が必要であったが、この演算の場合、データ幅に関わらず合計5ステップ程度の演算で四則演算が実現できるのでこれまでの演算方法に比較して極めて効率的である。この桁上げ演算方法は、これまで説明した、カウンタ演算、加減乗除演算の全てに応用できることは言うまでもない。
 この演算方法は、四則演算で不可欠なキャリーデータ208やボローデータ209のレコード間データ転送をデータの横送り機能により実現したものである、言うまでもなくこの手法は1組のレコード群のデータに制限されるものではなく多数のレコード群で使用することができる。並列度が上がるほどその効果が大きくなるので、レコード全体に利用することも可能である。
 本方式の場合、入力データ(A、B)には符号をつけることが出来る、また演算結果は、例えば乗算の場合など最大となるデータ幅と、キャリー、ボロー、符号を考慮したデータ幅(レコード幅)を考慮した割り付けをするとよい。
 以上の説明の通りこの1bit演算機能(論理演算、四則演算)は、行ならびに列の双方向の演算が出来るので通常のALUにない大きな特徴があり、データベースを行方向で演算するデータ、列方向で演算するデータなど適切に使い分けすることにより、最適な演算方法を選択することが出来る。以下に、行方向、列方向のデータ変換や、様々な演算を行う上で不可欠なデータシフト機能を説明する。 
 図16はデータシフト機能を備えたメモリ型プロセッサの回路構成例である。図に示すようにアドレス毎の記憶セル102にレコードデータ215が記憶されている。このレコード毎に1bit演算器105が接続されている。これまでの説明では1bit演算器105のレジスタはフリップフロップ202であった、この場合同一レコード内のデータは1bit毎に自由に移動し演算させることが出来るが、レコード間にまたがりデータを移動し演算することは出来なかった。
 図に示すように、これまで説明のフリップフロップ202をシフトレジスタ212として、外部からクロック信号216を与え、フリップフロップ結果出力205(この場合シフトレジスタ出力)と、クロック信号216を隣のレコードのシフトレジスタの入力に接続することによりレコード間のデータ移動(シフト転送)が可能になる。
 以上のような、データのレコード間のシフト転送が可能になると、これまでの演算機能をさらに高度で高速なものにすることが可能なる。
 通常のシフトレジスタは1クロックで1レコード分のデータシフトしか実現出来ないが、1クロックで8レコードや16レコード早送りするようなシフトレジスタ構成とすることも可能である。以上説明の多bit演算器112ならびにシフトレジスタ212は、演算対象のデータを他のレコードへ転送する機能の一つであり、この機能によりメモリ型プロセッサの性能は大きく拡大する。 
 図17、図18はメモリ型プロセッサによるデータの行列変換の例をし示すものである。先に述べた通り、1bit演算機能を備えたメモリ型プロセッサは行ならびに列の双方向の演算が出来る特徴がある。以上の特徴を上手く利用するために、先に説明のシフト機能を利用して演算データを行列変換するための手法を紹介する。
 図17では行列変換をする上での前処理演算のステップが示されている。アドレス1からアドレス4には行列変換の対象になるデータが書き込まれている。このデータはレコード5から8、レコード9から12、レコード13から16の4bitで1組みとなる4bitデータ幅のデータである。
 同上レコードのアドレス5からに8には、演算補助データであるマスクデータが書き込まれている。
 アドレスXにはアドレス1とアドレス5の論理積演算結果が代入されている。 
 アドレスX+1にはアドレス1とアドレス6の論理積演算結果が代入されている。 
 アドレスX+2にはアドレス1とアドレス7の論理演積算結果が代入されている。 
 アドレスX+3にはアドレス1とアドレス8の論理積演算結果が代入されている。
 アドレスXの論理積演算結果はシフトされていない。 
 アドレスX+1の論理積演算結果は-1シフト(左に1シフト)されている。 
 アドレスX+2の論理積演算結果は-2シフト(左に2シフト)されている。 
 アドレスX+3の論理積演算結果は-3シフト(左に3シフト)されている。 
以上でアドレス1のデータに関わる前処理演算が完了する。
 全く同様に
 アドレス2のデータに関わる演算が、アドレスX+4からアドレスX+7で行われている。 
 アドレス3のデータに関わる演算が、アドレスX+8からアドレスX+11で行われている。 
 アドレス4のデータに関わる演算が、アドレスX+12からアドレスX+15で行われている。 
 以上が行列変換をする上での前処理演算である。 
 図18では、以上の前処理演算結果を行列変換するステップが示されている。 
 アドレス1のデータの前処理演算結果であるアドレスXからアドレスX+3は全てシフトされない。 
 アドレス2のデータの前処理演算結果であるアドレスX+4からアドレスX+7は全て+1シフト(右に1シフト)されている。 
 アドレス3のデータの前処理演算結果であるアドレスX+8からアドレスX+11は全て+2シフト(右に2シフト)されている。 
 アドレス4のデータの前処理演算結果であるアドレスX+12からアドレスX+15は全て+3シフト(右に3シフト)されている。
 アドレスX+16には、アドレスX、アドレスX+4、アドレスX+8、アドレスX+12の論理和演算が代入されている。 
 アドレスX+17には、アドレスX+1、アドレスX+5、アドレスX+9、アドレスX+13の論理和演算が代入されている。 
 アドレスX+18には、アドレスX+2、アドレスX+6、アドレスX+10、アドレスX+14の論理和演算が代入されている。 
 アドレスX+19には、アドレスX+3、アドレスX+7、アドレスX+11、アドレスX+15の論理和演算が代入されている。
 以上の演算結果であるアドレスX+16からアドレスX+19のレコード5から8、レコード9から12、レコード13から16の4bitデータ幅のデータはアドレス1からアドレス4のデーが行列変換されたものである。
 本例では4bitデータであったが、8bitでも16bitでもさらに大きなデータでも可能である。繰り返し演算の回数は増えるが、並列演算が出来ることを考えれば効果的な行列変換であることはこれまで説明の通りである。
 本例では、アドレス5からアドレス8を行列演算する上で必要な前処理演算を補助データを利用し、シフトレジスタ機能で行列変換を行ったものである。本メモリ型プロセッサは、以上のような補助データを活用することより、活用方法が大幅に拡大する。
 次にこのメモリ型プロセッサ101のデータ入力機能について説明する。
この技術の最大の検討課題は、レコードデータの記憶方法である。比較的簡単に実現できる方法として、このメモリ型プロセッサ101に目的のデータを書き込みする場合、1bit演算器のフリップフロップ202を通じて外部からのデータを、書き込み、読み出しすることが出来る。
 この場合原則的に1bit毎の書き込みとなり、このメモリ型プロセッサ101は通常のデータベースのデータを縦横反転した配列となるため、例えば通常のメモリ100に記憶されているレコードデータ64bit*64bitなどの配列データを、このメモリ100から転送する際、メモリ型プロセッサ101内部で行列変換し、指定した書き込み先のレコードの64個のフリップフロップ202のみが有効(他のレコードのメモリセルに影響を与えない)になるように回路構成し、書き込み先のアドレス毎に64回データを記憶させることで外部データを記憶させることが出来る。つまり64bit幅のデータを64回アドレス毎に順次書き込めば良い。この場合1レコード分のデータの変更でも64レコード幅を対象にして上書きする。
 次にこのメモリ型プロセッサ101の出力機能について説明する。レコード幅が比較的少数であれば、演算結果を並列に出力することも可能である。然しながら、レコード数が数千以上になった場合、このメモリのチップに出力ピンを引き出すことは現実的でない。従ってレコード数が大きい場合は優先順出力回路(プライオリテイエンコ-ダ)214により演算結果のレコードの番地を1レコード毎に出力すると良い。優先順出力回路(プライオリテイエンコ-ダ)214は演算結果が絞込みされている場合には好都合である。沢山のレコードが検索される事を勘案して、プライオリティアドレスエンコーダ出力回路などの演算結果出力106をいくつかのブロックに分割して、ブロック単位で読み出し出来るように構成すれば、分割したブロック分、レコードの番地出力を高速にすることが可能になる。また先に述べたように、勝ち残りレコードがあるかないかを判断する出力があると、条件判断が多い処理に効率的である。言うまでもなく、チップから出力ピンを引き出せる範囲で、主要なレコードの演算結果を並列に出力しても構わない。
 これまで様々な回路構成を紹介してきたが1bit演算器の最小構成は1ユニット(1レコード)は回路を単一機能に限定すれば数百トランジスタ程度から標準的な回路構成でも1000(1K)個程度のトランジスタ回路規模で実現できる。
 以上のことを前提に本発明を半導体で実現する場合を考えてみる。現時点の半導体微細化技術では1チップ上に100億個のトランジスタが実装出来るレベルにあり、1チップのDRAMのメモリ容量は8Gbit程度である。将来はその1桁程度、1000億個のトランジスタが実装出来る見通しである。
 しかしながら、ムーアの法則による微細化技術も間近に限界を迎えており、それ以降の集積度の向上は3次元実装など他の手法に転換する以外にないとされている。これまでムーアの法則に従ってALUを使ったマルチコアーやメニーコアの並列度が向上してきたが、ムーアの法則が限界に達すれば並列度の向上は望めない。本発明による演算器はこれまで説明の通り極めて単純な回路構成であるので標準的な機能の場合1000(1K)トランジスタ程度である。
 従って1万ユニット(レコード)では10Mトランジスタ、10万ユニットでは100M(1億)トランジスタ程度、100万ユニット(1Mレコード)では10億トランジスタ程度である。1Mレコードの場合でも、現時点で1チップに搭載可能な100億個のトランジスタの10%を占める程度である。微細化の限界時点では1%を占める程度で済むので、その省スペース性は特筆される。
 1Mのレコードなど幅の広いアドレスをアクセスする場合、レコードを幾つかのバンクに分散させて、微小時間アクセス時間を遅延させて演算するなどの回路構成とすることにより突入電流を最小限に抑え省電力で演算可能なチップにすることができる。また未使用のレコードを演算対象外として、省電力を図ることも可能である。
 積層化技術が進むFLASHメモリの場合現時点での1チップ当りのメモリ容量は1Tbit程度である。従って、縦横1M(100万)bitの不揮発性の1bit演算機能を備えたメモリ型プロセッサ101が実現される。SRAMの場合、DRAMやFLASHメモリなどのように集積度は上がらないもの、高速な演算が期待できる、また半導体開発コストが比較的低コストで実現可能である。
 以上のDRAM、FLASH、SRAM、以外最近は不揮発、省電力が期待される磁気記憶型のメモリセルも盛んに研究されておりこの様なメモリにも共通に利用可能である、本メモリはチップのごく一部に論理演算機能を加えるのみであるので極めて大容量で超高速で簡便な情報処理が出来る。
 これまでに示したとおり図3、図14、図15、図17のいずれの演算器も入力オペランドが1bitであり、繰り返し1bit演算を繰り返すことが特徴である。このメモリはインメモリデータベースでしかもCPUに演算を頼らない自己完結型演算機能を搭載したメモリがメモリ型プロセッサである。メモリ型プロセッサは必ずしも大きなデータを対象とするものでなく、小さなデータでも繰り返し演算する必要がある情報処理に最適であるので、FPGAにもこのメモリ型プロセッサ101のアルゴリズムを容易に実装することが出来る。多様なケースが存在する多bit演算器122などはFPGAであればフレキシブルに利用することが出来るようになる。このメモリ型プロセッサとCPUを一体化したデバイス構成や、CPUのキャッシュメモリにも有効である。
 図19は、メモリ型プロセッサの、直並列接続の例である。このメモリ101は完全に独立したメモリとして、縦方向(アドレス方向)にも横方向(データ幅方向)に拡張することが出来るので、システムの拡張が極めて単純でありシステムに永続性を持たせることが出来る。全文検索であれば、アドレスは数十万にも上る、しかしながら個人情報であれば一人当たり数Kから数十Kのアドレスがあれば十分である。
 通常、全く配列の定義やインデックスのないメモリの中から1つのCPUが、特定の情報を見つけ出す場合には、例えば10n秒平均でメモリをアクセスし照合するだけでも、1Mアドレスの場合10m秒程度、1Gの場合10秒、1Tの場合10,000秒(3時間程度)の時間が必要になる。CPUを並列に使用し分散処理すれば、原則的にCPUの数に比例して処理時間を削減することが出来る。しかしながら1TBを超えるようなインメモリ型のデータベースをリアルタイム(例えば1秒以内)で検索演算やデータマイニングするのは困難とされている。
 本メモリ型プロセッサ101の場合どのように直並列されていて、例えば10TBのデータであっても全メモリの並列処理が可能で、アドレス選択110と演算条件指定111を数回から数十回、数百回繰り返すだけで良い。
 記憶素子によりアクセススピードは様々であるが例えば一回の論理演算のスピードを10n秒とすると、1m秒あれば、100、000回の演算を実現することが出来る、完全並列処理が出来るのでどのようなサイズのビッグデータであっても、そのサイズの関わりなく数百n秒からマイクロ秒、1m秒程度で目的のレコードを探し当てることが出来る。つまりビックデータほど効果が著しいことがこの技術の最大の特徴と言える。この発明のメモリ構造とデータの縦横関係を逆転する考え方は、情報処理の回数を大幅に削減し、処理時間を大幅に削減する事を如実に示している。
 このことは様々な仮定に基づき検索を繰り返す必要があるビッグデータのデータマイニングや総当たり的な演算が必要なデータの照合処理に極めて効果的である、詳細は後述する。
 図20はメモリ型プロセッサの、階層接続の例である。図の例では図の最上段に示すメモリ型プロセッサ101をマスタとしてそのそれぞれの、レコードに対応させて、レコード毎に更に詳細なデータを格納したサブのメモリ型プロセッサ101を検索できるように構成したものである、特にビッグデータであればこのような階層化データベースを利用することによりどのような規模のデータベースであっても対応可能になる。 
 図21はメモリ型プロセッサによる特徴データベースAの例である。全てのレコードと全てのフィールドデータの総当り的な演算や大量の組合せ演算を必要とするような照合演算はこのメモリの特徴を最も効果的に利用することができる。本例は構成のイメージを示すだけの極めて小さなデータテーブルであるが、4bitデータの特徴AからEまで5種類の特徴データがレコードデータ215としてアドレス1からアドレス20までデータベース化され記憶されている。
 比較される照合データ213の特徴AからEまで5種類のデータと、このデータベースとの照合を行い、一致した特徴の数、近似する特徴の数、さらにはデータベースと照合データとの差を演算してその結果を累計するなどの様々な演算を行った照合結果をアドレス21以下に記憶しその結果を判定するようアドレスの割り付けがなされた構成である。特徴データのデータ幅を個別に増減することも、特徴の数を大幅に増やすことも自由である。 
 図22はメモリ型プロセッサによる特徴データベースBの例である。本例のデータベースも先に説明のものと同様のものであるが、先に示した、多bit四則演算方式を使った8bitデータの特徴データベースである。
 本例の場合、メモリ型プロセッサのアドレス20まで特徴データAから特徴データTまでの8bit特徴データが、12レコード群毎に書き込みされている。外部から与えられた、特徴照合データ毎にデータベースを並列(本例では12レコード群)に照合することになる。この方式は、先に述べた特徴データベースAより遥かに高速な演算が可能である。
 本例ではアドレス21にその照合データを代入し、対象となる特徴と照合を繰り返し行くことになるが、この時、アドレス21の8bitデータは全く同じデータを並列数分(本例では12組)書き込みする必要がある。レコード群が大きく(並列度が大きく)なると照合データの転送時間が問題になる。このような場合、以下に示す方法を利用すると、極めて高速な照合データを得ることができる。 
 図23はメモリ型プロセッサによる並列データ作成の例である。図に示すように、
 アドレスXからアドレスX+3には4bit幅の補助データ
 アドレスX+4からアドレスX+11には8bit幅の補助データ
 アドレスX+12からアドレスX+27には16bit幅の補助データ
が事前に書き込みされている。
 これらの補助データが事前に用意されていると、
 例えば
 アドレスX+28は、4bitデータのアドレスX、アドレスX+2の論理和演算されたデータである。 
 アドレスX+29は、8bitデータのアドレスX+6、アドレスX+9、アドレスX+11の論理和演算されたデータである。 
 アドレスX+30は、16bitデータのアドレスX+12、からアドレスX+27の論理和演算されたデータである。 
 さらにアドレスX+31は、アドレスX+28、アドレスX+29、アドレスX+30の論理和演算されたデータである。
 特定のレコードの特定のアドレスの記憶セルを「0」もしくは「1」にする場合やデータ同士を重ね合わせする際にも補助データは有効である。以上のような補助データを事前に用意しておくことにより、任意のデータ幅の任意のデータを並列に(高速に)得ることができる。以上は補助データ活用の一例であり補助データはメモリ型プロセッサの能力を大幅に拡大する。
 一例であるが、顏を照合するためのデータは1人当たり1KB程度とされている。1,000人分のデータであれば1MByteであるので通常のパソコン程度でもリアルタイム処理はそれほど困難ではない、しかしながら100万人分のデータとなれば1GByteとなり通常のパソコンでは困難でCPUやGPUを多数用いた専用のシステムが必要である。まして日本全体の場合は、その100倍の100GByte、世界中の人の顔をリアルタイムで処理させようとすると、さらにその100倍の10TByteと、膨大なシステムとなるため、CPUやGPUの情報処理では現実的ではなくなる。この発明を使えば、この発明のメモリ型プロセッサ101を沢山用意すればよいだけである。先に示した、1TbitのFLASHメモリが、80個あれば全人類の顏照合のデータベースが完成する。近未来に誕生する10TbitのFLASHメモリであればわずか8個で全人類の顏照合のデータベースが完成する。演算内容により異なるが多くの場合数十マイクロ秒程度で照合判定演算を可能にし、先に述べた通り、レコード件が例えば100万レコードでも100億レコードでも同一時間であることが最大の特徴である。発熱も少なく、複雑な周辺回路も不要になるので、システムを大幅に小型化し、省電力にすることが出来る。
 以上は特徴データの照合演算であったが、特徴データを、データのカテゴリー、データのクラス、データのエリア、など様々なものにあてはめればその他応用は無限である。個人情報であれば、「氏名」、「住所」、「勤務先」、「生年月日」、「身長」、「体重」、「性別」など、様々なデータ幅のデータをデータカテゴリーとして割付すればよい。これらの個人情報は情報探しの様々なインデックスを用意する必要がなく、データの登録が完了すれば直ちに演算開始することができる。いくらCPUやGPUの性能が向上してもこのようなインデックスが不要な情報処理環境を得ることは出来ない。この技術の大きな特徴である、詳細は後述する。
 従ってレコードの件数が多いほどその効果は顕著で、先に述べた人類全体70億人の顏データの照合のみならず、指紋データの照合、声紋認証、文字認識データの特徴照合などあらゆる用途に最適である。
 この技術は、組合せ情報処理が極めて多い人工知能の一部に組み込むことによりその性能を大幅に向上することになる。人工知能で利用される学習機能は、サンプルになる情報を多数読み込みこみ期待する答えがでるまで学習させる必要があるが、学習する情報の規模やクラスが大きくなると極めて大きな時間が掛る。この技術を使えば、大規模な知識情報であっても複雑な情報処理が解消されるので学習時間を短縮し、認識能力を大幅に向上することが出来る。
また、様々な条件が複雑に絡み合う気象情報などの解析やデータマイニングに最適である。
 以降この技術で得られる様々な効果について説明をする。このメモリ型プロセッサ101を利用してデータベースを構築するには、レコード、とフィールドデータのアドレスの割り付けのみで、後は演算条件指定111するだけで利用することが出来る。従ってこのメモリ型プロセッサ101のアプリケションインターフェースを準備することにより、従来一般的である検索アルゴリズム、例えばSQL等のデータベースに組み込み利用することができる。
 CPUを用いた情報探しは、CPUの負担を軽減するために様々な利用上のテクニックが存在する。バイナリサーチはその典型的な例である。このアルゴリズムは情報データの検索回数を極めて少なくすることが出来る技術として情報処理の定番技術であるが、メモリ上のデータテーブルにデータ値を書き込む際、例えば小さいデータから大きいデータ順に並べておくような事前準備が必要でありデータが増えたり、減ったりするたびに、メモリ上のデータを並べ変えする(データメンテナンス)必要がある。
 つまり、このアルゴリズムにより、CPUが特定のデータ値を探す時の負担は短縮されるが、その前の事前処理、データメンテナンスに掛る負担はけして少なくない。以上はバイナリサーチの例であるが、ハッシュテーブルやB木構造(インデックス)などその他のアルゴリズムも全く同様である。
 本発明を利用すると、以上のようなアルゴリズムを使用する必要がなくなるので、事前準備やメンテナンスなどの情報処理は全く不要となるので、レコードのどこか、アドレスのどこかを指定して、データを登録するか抹消するだけであり煩わしい配列の変更、データの並べ替えなどのデータメンテナンスは一切不要である。
 この事は従来のCPUやGPUのみの情報処理に比較して格段に情報処理の構成が簡素化し平易化することを示している。これまで紹介してきた様々な情報処理は情報処理の中心的な処理であるので、情報処理に携わる多くの利用者(技術者)の負担を大幅に軽減する結果となる。
 また、本メモリ型プロセッサ101をコントロールし情報処理の全体をコントロールするCPUは高速である必要がなくなるので情報処理に関わる電力を大幅に削減することが可能になる。したがって情報処理に携わる利用者の負担とCPUやGPUならびに周辺回路の負担を同時に大幅軽減する結果となる。
 現在の情報処理は、メモリ100のデータ幅が32bit、64bit、128bitなど一定のデータ幅でCPUが順次アドレスをアクセスしデータを読み込み逐次情報処理を行って行くものである。データ幅(バス幅)が広い程、情報処理の効率は高いが、デバイスの入出力ピン数が増えること、デバイスを実装するプリント基板の配線負担が多いことなどデータのバス幅の拡大には限界がある。
 また、個人データベースなどの場合、年齢は7bitデータ(最大127)、性別は1bitなどデータ幅が少なくてもよいデータもデータ幅の広い演算器を利用するので無駄なbitの処理も多く存在することになる。この発明のメモリ型プロセッサ101は、1bit以上任意のデータ幅で、行方向、列方向、任意のデータ幅の並列演算可能であるので全く無駄bitがない情報処理が可能である。
 本願発明者はこれまで様々なメモリ型デバイスの研究を行ってきた、特許第4588114号 情報絞り込み検出機能を備えたメモリはパターンマッチなど論理積演算が得意なメモリである。またPCT/JP2013/059260号 集合演算機能を備えたメモリは以上の情報絞り込み検出機能を備えたメモリの概念を拡大発展させて、論理積演算、論理和演算、論理否定演算などを自由に行うことができるメモリ型デバイスである。メモリ型デバイスの特徴は、情報処理の容量が大きくても少なくても常に一定の処理時間であることが大きな特徴であるので、情報処理容量が大きいほどその効果が大きくなる。
 情報処理容量が比較的小さいFPGAを用いたデモ機でも従来の情報処理に比較して数万倍以上の能力があることを検証済みであり、情報処理容量の大きなASICのチップを創れば数百万倍高速化できることが検証されている。
 また本願発明者による発明の特願2013-264763、情報検索機能を備えたメモリ、でFPGAによる文献検索システムを開発した結果、通常のソフト処理では76m秒程度掛かる検索時間が、207n秒と37万倍も高速に実現できることが実証されている。以上の内容は「データ検索を100万倍高速にする技術」として、学会、展示会やマスコミを通じて広く公開されており実用化製品を開発中である。
 この発明では以上の実績をもとに、メモリ型デバイスの様々な特徴を最大限に引き出すことが可能な演算回路と様々な使用方法を提供し、以下のような広範囲な情報処理が可能であることを示したものである。 
 1.インデックス演算・・・・・・検索、データベース検索
 2.データの比較(一致、大小、範囲、最大・最小)・・・・・・データベース検索
 3.演算結果判定・・・・・条件演算
 4.加算、減算カウンタ・・・・・演算結果の累計
 5.加算器、減算器・・・・・データ同志の加減算
 6.暗号処理・・・・・・平文の暗号化、暗号文の復号
 7.行列変換
 8.データの作成
 9.以上の組み合わせ演算。
 この技術の特徴は、豊富なメモリ資源をデータエリアやワークエリアとして利用することにより、極めて単純な回路構成のブール演算素子(論理演算素子)による1bit論理(ブール)演算器のみでも、多彩な演算を可能であることを具体的に示したものである。また数値演算の利用頻度が多い場合には、1bitの四則(算術)演算素子を追加して組み込むことにより効率的な数値演算処理が出来ることを具体的に示したものである。さらにレコード間のデータ転送機能を持たせることにより、複数のレコードをまとめてレコード群としてデータ演算することや行列変換することが可能になるなど、さらに効果的で高速な演算が出来ることを具体的に示したものである。
 論理積(AND)、論理和(OR)、論理否定(NOT)さらに、排他論理和(XOR)とこれらを組合せした加算器などの演算素子が、情報処理(コンピュータ)の基本であることは周知の事実であり、その利用方法や応用方法は様々な文献やインターネット上で幅広く紹介されている。その典型的な素子がALUであり、通常8bit以上の多bit演算器122であるALU217を用いたCPUやGPUが我々の生活や産業の隅々で利用されている。当然のことながら1bit演算器で全ての演算を行うことは、以上紹介した通り、繰り返し演算の手間がかかるため研究されることも紹介されることも利用されたこともない。
 しかしながらこれまで説明をしてきた入力オペランドが1bitの演算器によるメモリ型プロセッサ演算の要点をまとめると以下の通りである。 
 1.入力オペランドが1bit演算器による演算は一見非効率的であるが超並列演算をすると極めて高速な演算となる、また行列双方向の演算が可能である。 
 2.データ量(レコード数)が大きくても小さくても何時も一定の演算時間である、従ってビックデータに最適である。 
 3.CPUやGPUの負担が軽減され、情報処理装置の電力を削減する。
 4.複雑な情報処理アルゴリズムとそのメタデータを考える必要がなくなるので開発者の負担が軽減される。 
 5.インデックスなどのメタデータが不要になるので、事前準備やメタデータのデータメンテナンスが不要になる。 
 6.基データをメモリに記憶させるだけですぐに演算が可能になる。
 本願発明で紹介の演算手法は超並列演算によって以上のような様々なメリットをもつ1bit演算器の実力を知るもの以外生み出すことが出来ない。本願特許で紹介した演算手法は本願発明者が独自に考案し体系化させたものであるが、行と列が反転された情報処理の手法を全く白紙に近い状態から今回の出願に至るまでとりまとめるには多くの忍耐と時間が必要であった。
 紹介した演算手法は情報処理で頻繁に利用される代表的な演算手法とこれに最適な演算器を示したものであり、更に様々なオプション機能を付けることも、反対に必要最低限に限定して利用することも自由である。演算手法やその応用はCPU同様無数に存在する。
 これらの演算手法を標準的なライブラリとしておくことにより利用者はハードウエアを意識することなく、一般のソフトウエアに組み込み利用することができるようになる。
 この発明は、ビッグデータ社会のコンピュータのあるべき姿を追い求めて、CPUやGPUのみの情報処理のコンピュータ技術の課題の多くを解決し、CPUやGPUの弱点を補完するメモリ型プロセッサである。
 この発明によるメモリ型プロセッサは、一般データベースはもとより、超大型データベース、超大型並列演算処理、各種認証、照合処理などの装置、そして人工知能の装置の一部の機能として幅広く利用することが出来る。またこの技術は情報処理開発に携わる技術者の負担を軽減し、しかも情報処理の電力を大幅に抑制することが出来るのでIT機器の環境問題の解消に大きな意義をもつ。将来に渡っては、多bitで省スペースな超並列演算素子や、XY2軸双方向アドレスアクセス、2軸双方向レコード並列演算可能な素子の実現などにより高度な情報処理機能を持ったメモリ型プロセッサとしての発展が期待できる。
 100 メモリ
 101 メモリ型プロセッサ
 102 記憶セル
 103 ワード幅(レコード数)
 104 アドレス
 105 1bit演算器(演算機能)
 106 演算結果出力
 107 演算結果
 110 アドレス選択
 111 演算条件指定機能
 112 論理積
 113 論理和
 114 論理否定
 115 排他論理和
 116 論理記憶 
 122 多bit演算器(演算機能)
 123 1bit論理(ブール)演算器(演算機能)
 124 1bit四則(算術)演算器(演算機能)
 201 スイッチ
 202 フリップフロップ(FF)
 203 選択回路
 204 メモリデータ
 205 フリップフロップ結果出力
 206 カウントデータ
 207 1bit演算器バッファー
 208 キャリーデータ
 209 ボローデータ
 210 半加算器
 211 全加算器
 212 シフトレジスタ
 213 照合データ
 214 優先順出力回路(プライオリテイエンコーダ出力)
 215 レコードデータ
 216 クロック信号
 217 ALU

Claims (12)

  1.  外部入力回路から入力される演算対象のデータを記憶可能な多数bitのメモリセルを有し、1のメモリセルがアドレスとレコードとで指定されるメモリと、
     前記メモリに、1レコード毎に接続され、当該1レコードの各メモリセルに記憶されたデータを1bit毎に読み込んで代入演算を実行し、その演算結果を1bit毎に同じ1レコードの所定のメモリセルに書き込む演算回路であって、
     この演算回路は、入力及び出力が1bitに制限されると共に、演算記憶回路と、論理積演算回路、論理和演算回路、論理否定演算回路、で構成され、1bitオペランドデータを繰り返し演算することにより論理演算もしくは算術演算を実行するものである、演算回路と、
     全ての演算回路に対して演算条件を指定して並列に演算を実行させる演算条件指定回路と、
     各レコードの前記演算結果を外部に出力する外部出力回路と、
     を具備することを特徴とするメモリ型プロセッサ。
  2.  前記演算回路に、排他論理和演算回路、半加算演算回路、全加算演算回路、の何れかまたは全てを組み込んだことを特徴とする請求項1記載のメモリ型プロセッサ。
  3.  外部からの前記演算対象のデータを行列変換して、アドレスとレコードで指定されるそれぞれのメモリセルに書き込みするデータ行列変換回路を具備すること特徴とする、請求項1記載のメモリ型プロセッサ。
  4.  前記外部出力回路は、
     (1)前記レコードの番地を優先順序順に出力
     (2)前記レコードを幾つかに分割して、分割したレコード毎に優先順序順に出力
     (3)何れかの前記レコードに演算結果があるか否かを出力
     (4)前記全レコードを並列に出力
     (5)以上(1)から(4)の組み合わせの出力
     以上の何れかの出力回路を具備することを特徴とする、請求項1記載のメモリ型プロセッサ。
  5.  前記演算対象のデータを他の前記レコードへ転送する転送回路を具備することを特徴とする、請求項1記載のメモリ型プロセッサ。
  6.  CPUならびにその他の機能の回路に組み込みされたことを特徴とする、請求項1記載のメモリ型プロセッサ。
  7.  FPGAで実装したことを特徴とする、請求項1記載のメモリ型プロセッサ。
  8.  請求項1記載のメモリ型プロセッサを含んだ装置。
  9.  請求項1記載のメモリ型プロセッサの使用方法であり、
     このメモリに前記演算対象のデータと、演算結果を一時退避するためのワークエリアデータと、の双方を前記アドレスに割り付けし、双方のデータを用いて1bit演算機能を繰り返すことで任意のデータ幅のデータの、
     (1)前記演算対象のデータの全レコード並列インデックス検索演算
     (2)前記演算対象のデータの全レコード並列比較(一致、大小、範囲、最大・最小)演算
     (3)前記演算対象のデータの全レコード並列カウント(アップ、ダウン)演算
     (4)前記演算対象のデータの全レコード並列加減算演算
     (5)前記演算対象のデータの全レコード並列乗除算演算
     (6)前記演算対象のデータの全レコード並列平文の暗号化と、暗号文の平文復号演算
     (7)前記演算対象のデータの全レコード並列行列変換演算
     (8)前記演算対象のデータの全レコード並列データ作成演算
     (9)以上の組み合わせ演算
     以上の何れかの演算をすることを特徴とする、メモリ型プロセッサの使用方法。
  10.  請求項1記載のメモリ型プロセッサの使用方法であって、
     前記演算結果に勝ち残りの前記レコードがあるかないかを判定し、その判定結果をもとに演算条件式を与えることを特徴とする、メモリ型プロセッサの使用方法。
  11.  請求項1記載のメモリ型プロセッサの使用方法であって、
     前記多数配列されたレコードの中から複数レコードのメモリセルのデータを一組のデータと割り付けして使用することを特徴とする、メモリ型プロセッサの使用方法。
  12.  請求項1記載のメモリ型プロセッサを
    (1)直列、並列、もしくは直並列に接続
    (2)階層的接続
    以上の何れか、もしくは双方の接続で使用することを特徴とする、メモリ型プロセッサの使用方法。
PCT/JP2016/067044 2015-06-08 2016-06-08 メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。 WO2016199808A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015-116086 2015-06-08
JP2015116086A JP2018139017A (ja) 2015-06-08 2015-06-08 メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。

Publications (1)

Publication Number Publication Date
WO2016199808A1 true WO2016199808A1 (ja) 2016-12-15

Family

ID=57503814

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/067044 WO2016199808A1 (ja) 2015-06-08 2016-06-08 メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。

Country Status (2)

Country Link
JP (1) JP2018139017A (ja)
WO (1) WO2016199808A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112085644A (zh) * 2019-06-12 2020-12-15 上海赜睿信息科技有限公司 多列数据排序方法、装置、可读存储介质和电子设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6986309B1 (ja) * 2021-09-22 2021-12-22 明男 三水 データ処理装置、データ処理方法、及びプログラム
JP7296550B2 (ja) * 2021-10-01 2023-06-23 浩二 尊田 非ノイマン型の回路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01297724A (ja) * 1988-05-25 1989-11-30 Nec Corp 学習型文字列検索装置と同装置の制御方式
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
WO2015021114A1 (en) * 2013-08-08 2015-02-12 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01297724A (ja) * 1988-05-25 1989-11-30 Nec Corp 学習型文字列検索装置と同装置の制御方式
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ
WO2015021114A1 (en) * 2013-08-08 2015-02-12 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112085644A (zh) * 2019-06-12 2020-12-15 上海赜睿信息科技有限公司 多列数据排序方法、装置、可读存储介质和电子设备
CN112085644B (zh) * 2019-06-12 2024-05-14 上海赜睿信息科技有限公司 多列数据排序方法、装置、可读存储介质和电子设备

Also Published As

Publication number Publication date
JP2018139017A (ja) 2018-09-06

Similar Documents

Publication Publication Date Title
Li et al. Drisa: A dram-based reconfigurable in-situ accelerator
KR20220054357A (ko) 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템
Kaplan et al. PRINS: Processing-in-storage acceleration of machine learning
Kaplan et al. BioSEAL: In-memory biological sequence alignment accelerator for large-scale genomic data
US20200233803A1 (en) Efficient hardware architecture for accelerating grouped convolutions
Lee et al. Application codesign of near-data processing for similarity search
US11977600B2 (en) Machine learning architecture support for block sparsity
JP6229024B2 (ja) 情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法。
Yavits et al. GIRAF: General purpose in-storage resistive associative framework
US20190235780A1 (en) Computational processor-in-memory with enhanced strided memory access
Sutradhar et al. Look-up-table based processing-in-memory architecture with programmable precision-scaling for deep learning applications
Finkbeiner et al. In-memory intelligence
WO2016199808A1 (ja) メモリ型プロセッサ、メモリ型プロセッサを含んだ装置、その使用方法。
CN114341802A (zh) 用于执行存储器内处理操作的方法及相关存储器装置和***
Imani et al. CAP: Configurable resistive associative processor for near-data computing
Prasad et al. Memristive data ranking
CN113627618A (zh) 使用启用列读取的存储器来实行随机稀疏提升和普罗克拉斯提斯正交稀疏散列的技术
Garzón et al. AIDA: Associative in-memory deep learning accelerator
Li et al. ReSQM: Accelerating database operations using ReRAM-based content addressable memory
US9135984B2 (en) Apparatuses and methods for writing masked data to a buffer
US9570125B1 (en) Apparatuses and methods for shifting data during a masked write to a buffer
Wu et al. DRAM-CAM: General-purpose bit-serial exact pattern matching
US20230385258A1 (en) Dynamic random access memory-based content-addressable memory (dram-cam) architecture for exact pattern matching
Imani et al. Processing acceleration with resistive memory-based computation
Yantir Efficient acceleration of computation using associative in-memory processing

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16807514

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16807514

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP