WO2007119539A1 - アドレス生成器 - Google Patents

アドレス生成器 Download PDF

Info

Publication number
WO2007119539A1
WO2007119539A1 PCT/JP2007/056497 JP2007056497W WO2007119539A1 WO 2007119539 A1 WO2007119539 A1 WO 2007119539A1 JP 2007056497 W JP2007056497 W JP 2007056497W WO 2007119539 A1 WO2007119539 A1 WO 2007119539A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
output
function
address generator
vector
Prior art date
Application number
PCT/JP2007/056497
Other languages
English (en)
French (fr)
Inventor
Tsutomu Sasao
Original Assignee
Kyushu Institute Of Technology
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 Kyushu Institute Of Technology filed Critical Kyushu Institute Of Technology
Priority to US12/294,791 priority Critical patent/US8285922B2/en
Priority to JP2008510866A priority patent/JP4892693B2/ja
Publication of WO2007119539A1 publication Critical patent/WO2007119539A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • 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 an address generator that outputs a unique address corresponding to an input vector, and more particularly to an address generator that can be easily rewritten and can be mounted with a small area.
  • a set of k different binary vectors (k is a natural number) is set as a registered vector set.
  • An address generation function (address generation flmction) is a function that injects a unique address (intrinsic address) from 1 to k for an input that matches each element of the registered vector set, and 0 for other inputs. And Les.
  • a circuit that performs an operation of an address generation function is called an address generator.
  • a vector input to the address generator is called an input vector.
  • Input vector force An address generation function that is a dimensional vector.
  • a circuit that performs an n-input address generation function is called an n-input address generator.
  • An address generator is an associative memory or content search memory (Content Addressable Memory:
  • CAM CAM
  • TLB Translation Lookaside Buffer
  • FIG. 9 is a block diagram showing an example of a basic configuration of a conventional address generator (CAM) (see Patent Document 1).
  • the address generator 100 includes a comparison register 101, a search bit line driver 102, k words W to W, k match sense circuits MSC to MSC, k match flags.
  • the comparison register 101 is a register that stores an n-bit input vector.
  • the search bit line driver 102 drives each bit of the comparison register 101 onto the search bit line.
  • Each node W to W has n-bit CAM cells.
  • FIG. 10 is a configuration circuit diagram of the CAM cell in FIG.
  • the CAM cell 103 illustrated in FIG. 10 is of a mismatch detection type.
  • the CAM cell 103 includes a memory cell 104 and a coincidence comparison circuit 105.
  • Memory 'cell 104 is an SRAM-configured memory' cell that stores 1-bit data.
  • D represents data
  • DN represents inverted data.
  • the coincidence comparison circuit 105 compares the 1-bit data stored in the memory cell 104 with the input vector driven on the search bit line pair SL and SLN, and outputs the coincidence comparison result on the coincidence line ML. .
  • the coincidence comparison circuit 105 includes three nMOS transistors (hereinafter referred to as “nM0S”) 106, 10 7, and 108.
  • the nMOSs 106 and 107 are connected in series between the search bit line SLN and the search bit line SL.
  • the gates of the nMOSs 106 and 107 are connected to the data D and the inverted data DN of the memory cell 104, respectively.
  • the nMOS 108 is connected and connected between the match line ML and the diode.
  • the gate of the nMOS 108 is connected to the node 109 between the nMOSs 106 and 107.
  • each word W to W of the address generator 100 is assigned a search pair.
  • a registration vector that is an elephant is stored.
  • data is written into the memory 'cell 104 and data is read from the memory' cell 104 in the same manner as in ordinary SRAM.
  • an input vector is stored in the comparison register 101.
  • Each bit of the input vector is driven by the search bit line driver 102 onto the corresponding search bit line.
  • each word W to W a registered vector stored in advance in each CAM cell 103 is stored.
  • the match flag is '1'
  • Each match flag output is input to a priority 'encoder PE.
  • the priority 'encoder PE selects and outputs the address of the highest priority word (highest priority match address: HMA) from the detected words according to the predetermined prioritization.
  • the priority order of each word is as follows.
  • each bit of the input vector stored in the comparison register 101 is input to each CAM cell 103 via the search bit line.
  • the input vector S either one of the search bit line pair SL, SLN becomes “H” and the other becomes “L”.
  • the level of the node 109 is “L”, and the nMOS 108 is held in the off state.
  • the CAM word match line ML composed of n-bit CAM cells 103 constitutes a wired 0R circuit in which the nMOSs 108 of the CAM cells 103 are connected in parallel. Therefore, the match line ML is held in the state of “H” (“match”) only when a match is detected in all of the n-bit CAM cells 103 constituting the 1-node. On the other hand, even 1 bit CAM cell If a mismatch is detected at 103, the match line ML becomes 'L'("mismatch").
  • the match flag registers MFR to MFR are set to “0” as a match flag.
  • priority 'encoder ⁇ is the most preferred order k 1
  • the match flag stored in is cleared to '0' so that the next highest priority word
  • W address can be output as HMA. In the same manner, a match is detected.
  • the address of each word can be output sequentially.
  • FIG. 11 is a configuration circuit diagram of another example of the CAM cell in FIG.
  • the CAM cell 103 ′ shown in FIG. 11 is of a coincidence detection type, and includes an SRAM-configured memory cell 104 and a coincidence comparison circuit 105 as in FIG.
  • the CAM cell 103 ′ differs from the CAM cell 103 in FIG. 10 in the connection of the nMOS 108 of the coincidence comparison circuit 105.
  • the nMOS 108 in FIG. 11 is connected between the match line ML and the match line ML.
  • the gate of nMOS 108 is nMOS 1 a b
  • the bit line pair SL and SLN are both set to “H” as an initialization operation at the time of search.
  • one of the nMOSs 106 and 107 of the coincidence comparison circuit 105 is turned on and the other is turned off. Therefore, the level force S′H of the node 109 between the nMOSs 106 and 107 is turned on via the on state, and the nMOS 108 is turned on.
  • the n-bit CAM cell 103 and the coincidence line ML of the powerful CAM word constitute an AND circuit in which the nMOSs 108 of the respective CAM snorets 103 are serially connected. Therefore, the match lines ML and ML of each CAM cell are connected to 'H' through the nMOS 108 of each CAM cell 103 and a b
  • each bit of the input vector stored in the comparison register 101 is input to each CAM cell 103 ′ via the search bit line.
  • one of the search bit line pairs SL and SLN is set to “H” and the other is set to “L”.
  • the match comparison result is “L”, that is, a match state.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 2004-295967
  • Patent Document 2 Japanese Patent Application No. 2003-389264 Specification
  • Patent Document 3 Japanese Patent Application Laid-Open No. 2004-258799
  • Patent Document 4 US Pat. No. 5,063,573
  • Non-Patent Document 1 Supervised by Takuo Kanno, Satoshi Kayama, “Ultra High-Speed Device Series 2 Ultra High-Speed MO S Device”, First Edition, Baifukan, February 1986, pp. 324-325.
  • Non-Patent Document 2 The Institute of Electronics, Information and Communication Engineers, “LSI Handbook”, 1st edition, Ohmsha, November 1994, pp. 523-525.
  • Non-Patent Document 4 T. Sasao, M. Matsuura, and Y. Iguchi, "A cascade realization of multi-o utput function for reconfigurable hardware, International Workshop on Logic and Synthesis (IWLS01), Lake Tahoe, CA, June 12 -15, 2001, pp.225-230.
  • Non-Patent Document 5 T. Sasao and M. Matsuura, "BDD representation for incompletely sped fied multiple-output logic functions and its applications to functional decomposition,
  • An n-input address generation function usually has a number k of input vectors whose output values are non-zero. This is a sparse logic function that is sufficiently small compared to the number 2 n of all combinations of dimension vectors.
  • the conventional address generator is faster than a RAM because it can be searched in parallel, but the device configuration is complicated. Therefore, the price per bit (bit cost) of this address generator is higher than that of RAM.
  • power consumption per bit is much larger than that of RAM (see Non-Patent Document 3). This is because all CAM cells are accessed simultaneously as described above. Therefore, the power consumption per bit is about tens of times that of normal RAM.
  • an object of the present invention is to provide an address generator that can be mounted in a small area by reducing power consumption and simplifying the structure of a device while maintaining high speed search. There is to be.
  • the value of k is assumed to be sufficiently smaller than the total number of combinations 2 n input base Tatonore (k ⁇ 2 n).
  • a registered vector set This set of vectors is called a registered vector set, and each vector belonging to the registered vector set is called a registered vector.
  • Table 1 shows a registered vector table consisting of 7 4-bit registered vectors.
  • the address generation function corresponding to this registered vector table is shown in (Table 2). In either case, the address corresponding to the input vector that matches the registered vector is output as a 3-bit number (eg, '001'). If there is no registered vector matching the input vector in the registered vector table, '00 0 'is output.
  • the resulting table is called the decomposition table of f.
  • Each row and column has a binary code label, and the set of column and row labels consists of all patterns of n and n bits, respectively.
  • Each element of the table is a combination of column and row labels corresponding to that element (X, X) Is the truth value f (X, X) of f.
  • X is a bound variable and X is a free variable.
  • the maximum value of the column complexity of the answer table is the C scale of f.
  • the column complexity of the decomposition table is equal to the width of MTBDD (multi-terminal binary decision graph). Therefore, the C measure of the logical function is the maximum MTBDD width in the order of the given input variables. equal. For a given logical function f (x, ⁇ , ⁇ , ⁇ ), the C scale is easily calculated and unique
  • the C measure is a measure of the complexity of implementing a logical function with a LUT cascade.
  • the C scale of the logical function f with weight k is at most k + 1.
  • the function f can be realized by the circuit shown in FIG. In this case, the number of signal lines connecting the two blocks H and G is at most
  • the number of signal lines connecting two blocks is smaller than the number of variables in X.
  • Each partial function G, G,,, G is realized with a lookup table (LUT) and each LUT is transmitted.
  • LUT lookup table
  • a cascade connection with a line is called a LUT cascade.
  • Each LUT representing 1 2 s is called a cell.
  • a signal line that connects adjacent cells is called a rail.
  • a logical function with a C scale of / can be implemented with an LUT cascade consisting of cells with at most q + 1 inputs and q outputs.
  • n the number of external inputs
  • s the number of cells
  • q the maximum number of rails (number of signal lines between cells)
  • p the maximum number of input cells
  • the C scale of the function f.
  • the address generation function with the weight k has the number of rails [0059] 6 girls
  • Equation 9 (Yi) max MY ⁇ b) (n 2 is the prime number of
  • auxiliary memory auxiliary (AUX) memory
  • f (X, X) converts the hashed bound variable Y of ⁇ (Y, X) to bound variable X.
  • function I (Y, X) is called master address generation function
  • This address generator hash 'Memory 3' efficiently implements the address generation function, but some registration vectors cannot be expressed due to hash collisions.
  • reconfigurable logic such as LUT cascade and reconfigurable PLA
  • the circuit realizes the address generation function with certainty, but the efficiency is poor when the value of k is large. Therefore, the address generator shown in Fig. 5 combines these two methods so that the address generation function can be realized efficiently.
  • This address generator is effective when the value of n is large and the value of k is sufficiently smaller than 2 n .
  • the address space is hashed as in (1), and the address generation function ⁇ (, X) is realized using the hash 'memory 3' and auxiliary memory 4 '(see Fig. 7). And add
  • f (X, X) changes the hashed bound variable Y of ⁇ (Y, X) to bound variable X.
  • the sub-address generation function f (X, X) to be realized by the reconfigurable logic circuit is smaller and smaller than the hybrid method.
  • the number of inputs in the first hash memory is ( q + i)
  • the number of outputs is q
  • the number of inputs in the first auxiliary memory is q
  • the number of outputs is (n_q_l)
  • the second hash The number of inputs to the memory is (q_l)
  • the number of outputs is (q_2)
  • the number of inputs to the second auxiliary memory is (q_2)
  • the number of outputs is (n_q + 2). Therefore, the total amount of memory is
  • the first configuration of the address generator according to the present invention is:
  • input vector For input binary vector (hereinafter referred to as “input vector”) X, if the input vector X is a registered vector, the corresponding unique address A is output, otherwise an invalid value is set.
  • An address generator that calculates the output address generation function f (X).
  • a sub-address generator that performs a sub-address generation function f (X) that outputs a unique address A corresponding to the vector X;
  • the output value of the main address generator or the sub address generator is other than an invalid value, the output value is output as the unique address A; otherwise, the output synthesizer outputs an invalid value.
  • Each main address generator is
  • the unique address A has a one-to-one correspondence with the assignment to the bound variable Y.
  • the unique address A is output as a temporary address A '. Otherwise (when hash collision occurs), either an arbitrary value or the corresponding unique address A is output.
  • a temporary address generator that outputs one of them as a temporary address A ';
  • the bound variable X is converted to Y by shuffling, and the input vector X is the hash input beta.
  • the temporary address generator uses ⁇ for a hash collision if Y does not occur.
  • the corresponding unique address A is output as temporary address A '.
  • any one of the arbitrary values or the corresponding unique address A is output as the temporary address A ′.
  • the data regenerator outputs the reproduction vector ⁇ ' ⁇ ⁇ ⁇ ⁇ ') corresponding to the obtained temporary address A '.
  • the unique address detector compares X "and X, and outputs a temporary address A 'if they match. Otherwise, it outputs an invalid value. Outputs the correct unique address A or invalid value for the input vector X.
  • the output synthesizer outputs a non-invalid value among the output value of the unique address detector and the output value of the sub address generator as the unique address A. If both are invalid values, the invalid value is output. Thus, if there is a registered vector matching the input vector X, the output synthesizer outputs the correct unique address A for X. [0085]
  • the hash function used for hashing is selected using the value of Y so that the probability of uniquely determining A is as large as possible.
  • the generator can be realized with a small circuit.
  • the sub-address generator calculates A as a function of all elements of X. At this time, since X is limited to those that cause hash collisions, the number of combinations of A that need to be calculated by the subaddress generator is small. Therefore, the sub address generator can be realized by a small circuit.
  • the circuit scale of the entire address generator can be reduced, and power consumption can be suppressed.
  • the device structure can be simplified and mounted in a small area.
  • the percentage of registered vectors in which the address generation function is realized by the main address generator increases. Therefore, the number of registered vectors for realizing the address generation function can be reduced by the ij address generator, and the address generator can be configured with a smaller circuit.
  • binary vector refers to a vector vector in which each component of the vector is binary.
  • Hashing is the replacement of the order of some or all vector components of the input vector X so that non-zero elements are distributed over many columns in the decomposition table of the address generation function.
  • the "data regeneration function” is an inverse function of the address generation function f (X), that is, a function that maps the unique address A to the corresponding input vector X.
  • Invalid value refers to a value indicating that an address is invalid (does not exist). Invalid values include those with all address components set to 0, those with all components set to 1, and those that do not actually exist.
  • a "slave address generation function” refers to the operation value of the address generation function f (X) for the input vector X when the unique address detector outputs an invalid value.
  • an LUT cascade or other logic circuit can be used as the sub-address generator.
  • the sub-address generator in the first configuration, is the hashed bundle variable Y that is hashed in any of the main address generators.
  • the corresponding unique address A is output, and otherwise, an invalid value is output.
  • the sub-address generator outputs a correct unique address when a hash collision occurs, and always outputs an invalid value when no hash collision occurs. Therefore, the IJ address generator can be configured to check X when a crash occurs, and to calculate the unique address A for some X obtained as a result. Therefore, the configuration of the logical operation circuit in the sub address generator is facilitated.
  • the temporary address generator in the first configuration, does not cause a hash collision in the hashed bound variable Y.
  • the temporary address generation function that outputs the unique address A corresponding to the bound variable ⁇ e as the temporary address A ' is a hash memory stored as a lookup table (LUT).
  • the data regenerator in the first configuration, includes an auxiliary memory in which the data replay function f_1 (A) is stored as a LUT. It is characterized by.
  • the sub-address generator in the first configuration, includes a LUT cascade logic including a plurality of partial function memories connected in cascade. It consists of a circuit,
  • the sub-address generation function f (X) is obtained by functional decomposition.
  • a plurality of partial functions are stored as LUTs.
  • the circuit scale is also configured with PLA (programmable 'logic' array) It can be made smaller than Also, reconfiguration by rewriting the memory can be performed easily.
  • PLA programmable 'logic' array
  • a hash circuit that hashes an input vector and a temporary address generator that outputs a unique address from the hash input vector are provided, and a unique address that cannot be calculated by the temporary address generator is provided.
  • a sub-address generator for calculation is provided, and a temporary address generator and sub-address generator are complementarily combined to generate a unique address.
  • the temporary address generator and data regenerator are configured with a memory storing the LUT, and the sub address is configured.
  • the generator in the LUT cascade it is possible to easily perform reconfiguration by rewriting the memory while maintaining high calculation speed.
  • FIG. 1 is a diagram illustrating a case where a logical function is realized by function decomposition.
  • FIG. 2 is a diagram representing a LUT cascade having an intermediate output.
  • FIG. 3 A conceptual diagram showing a decomposition table of the hashing function ⁇ ( ⁇ , X).
  • FIG. 4 is a block diagram showing a functional configuration of an address generator according to Embodiment 1 of the present invention.
  • FIG. 5 is a block diagram showing a specific hardware configuration of the address generator 1 in FIG. 4.
  • FIG. 6 A diagram showing an example in which a six-variable function is realized by a hash 'memory.
  • FIG. 7 is a block diagram showing a hardware configuration of an address generator according to Embodiment 1 of the present invention.
  • FIG. 8 is a diagram showing a configuration of a reconfigurable PLA 6 ′ using registers and gates.
  • FIG. 9 is a block diagram showing an example of a basic configuration of a conventional address generator (CAM).
  • CAM address generator
  • FIG. 10 is a configuration circuit diagram of the CAM cell in FIG. 6.
  • FIG. 11 is a configuration circuit diagram of another example of the CAM cell in FIG. 6.
  • FIG. 4 is a block diagram showing a functional configuration of the address generator according to Embodiment 1 of the present invention.
  • the address generator 1 according to the present embodiment includes a node circuit 2, a temporary address generator 3, a data regenerator 4, a unique address detector 5, a sub address generator 6, and an output synthesizer 7.
  • the address generator 1 is an arithmetic unit that performs an operation of an address generation function f (X) with a weight k. In other words, when the input vector X is input from the outside, the address generator 1 outputs the unique address A of the registered vector if there is a registered beta corresponding to the input vector X. Otherwise, an invalid value 0 is output.
  • the input vector X is an n-dimensional vector.
  • the unique address A takes a value from l to k and is expressed by a q-bit binary number.
  • q is expressed by the above equation (3).
  • the hash circuit 2 converts a part or all of the input vector X into a hash according to a predetermined hash function.
  • X is a bound variable, X is free
  • Hash circuit 2 hashes the bound variable X of X
  • the temporary address generator 3 generates a temporary address A '.
  • the temporary address A ' is determined as follows:
  • the unique address A corresponding to the allocation is designated as a temporary address A ′;
  • the function to be imaged is called a temporary address generation function and is denoted as (Y).
  • the data regenerator 4 outputs a replay vector,, ⁇ 8 ′) to the temporary address A ′ input from the temporary address generator 3.
  • the input vector X, the reproduction vector X ", and the temporary address A ' are input to the unique address detector 5.
  • the unique address detector 5 compares the reproduction vector X" with the input vector X. Guess. If they match, the temporary address A 'is output, otherwise the invalid value 0 is output.
  • the subaddress generator 6 complements the address generation function f (X) with a subaddress that is complementary to the operation of the temporary address A 'by the temporary address generator 3, the data regenerator 4, and the unique address detector 5. This is an arithmetic unit that performs the operation of the address generation function f "") and outputs the sub address A ".
  • the address generation function f "(X) is the following function:
  • the sub address generator 6 may be configured by combining logic gates, or may be configured by using a LUT cascade logic circuit.
  • the output synthesizer 7 receives the output value of the unique address detector 5 and the output value of the sub address generator 6. If one or both of these output values are other than the invalid value 0, the output synthesizer 7 outputs that value as the unique address A. If both are invalid values 0, invalid value 0 is output.
  • the main address generator 8 is composed of the hash circuit 2, the temporary address generator 3, the data regenerator 4, and the unique address detector 5.
  • FIG. 5 is a block diagram showing a specific hardware configuration of address generator 1 in FIG. Components corresponding to those in Fig. 4 are given the same reference numerals.
  • the temporary address generator 3 is configured by a hash “memory 3”.
  • the data regenerator 4 is composed of an auxiliary memory 4 ′.
  • the unique address detector 5 includes a comparison circuit 10 and an AND circuit 11.
  • the sub address generator 6 is composed of a LUT cascade 6 '.
  • the output synthesizer 7 is composed of an OR circuit 7 '.
  • the memory 3 is composed of a rewritable memory.
  • the temporary address generation function h' (Y) shown in the expression (2a) or (2b) is stored as the LUT.
  • the auxiliary memory 4 ' is constituted by a rewritable memory.
  • a data recovery function ⁇ 1 which is an inverse function of the address generation function f is stored as an LUT.
  • the LUT cascade 6 ' includes a plurality of rewritable memories (cells) cascade-connected by a plurality of signal lines (rails) as shown in FIG.
  • the sub-address generation function f (X) is configured as a LUT cascade.
  • the subaddress generator 6 is not limited to the LUT cascade 6 ′, and may be configured by other reconfigurable logic circuits such as a combination of logic gates and reconfigurable PLA.
  • (X, X) is a partition of X and X is a binding
  • X is a free variable.
  • the number of variables in vector X is denoted as d (X).
  • d (X) n, d (X)
  • the hashed bound variable Y1 generated in the hash circuit 2 is input to the hash 'memory 3'.
  • the hash function is preset in the hash circuit 2 in conformity with the address generation function f. A method for generating this hash function will be described later.
  • No, 'memory 3' is a temporary key defined by the expression (2a) or (2b) based on the bound variable Y.
  • the temporary address A ' is generated by the address generation function (Y).
  • the temporary address A ′ is input to the auxiliary memory 4 ′ and the AND circuit 11.
  • the auxiliary memory 4 generates a reproduction vector corresponding to the temporary address A'.
  • the comparison circuit 10 is supplied with the reproduction vector X "and the original vector vector X".
  • the comparison circuit 10 compares the two, and outputs 1 to the NAND circuit 11 if both match, and 0 otherwise.
  • the AND circuit 11 performs an AND operation on the output value of the comparison circuit 10 and each bit of the temporary address A ′. The calculation result is output to the ⁇ R circuit 7 ′.
  • the temporary address A is equal to the correct unique address A for X
  • the temporary address A ′ is output from the AND circuit 11 to the R circuit 7 ′, otherwise the invalid value 0 Is output. That is, the output value of the AND circuit 11 is the smallest non-zero value for a column having two or more non-zero elements in the decomposition table of the hashed address generation function f "(Y, X).
  • this function is called the main address generation function (called master address generation function) and f (Y, X).
  • the input vector X is also input to the LUT cascade 6 '.
  • the performance of the slave address generation function f (X, X) is performed.
  • sub-address generation function f (X, X) has the address generation function after hashing as described above.
  • the hashed subaddress generation function f ′ (Y, X) is converted into the main address generation function f.
  • Address generation function f (X, X) by performing O operation with 6 'output value f (X, X)
  • the hash function for hashing the bound variable X is an address generator.
  • any function can be used as long as it uniformly distributes the nonzero elements in the decomposition table of the generation function f.
  • the shush function is used.
  • W be the number of.
  • can be selected using various known algorithms (nonlinear programming and heuristic algorithms).
  • ⁇ (a, X) is a function that replaces the value other than the smallest non-zero output value with 0.
  • the value of the function IT (Y) can be different from the value of the main address generation function f "( ⁇ , X).
  • the dress generation function f (Y, X) is realized by the LUT cascade 6 '.
  • Fig. 6 shows an overall diagram of a circuit that implements the function f using this method.
  • the part of the LUT cascade 6 ' is realized by a cascade of AND gates.
  • the non-zero output is 4 in the force binary representation (1, 0, 0)
  • the OR circuit 7 ′ since the most significant output bit of the AND circuit 11 is output. ORed with the output of the cascade.
  • Table 5 Decomposition table for hashed function / (X 2 )
  • the comparison part with X in the comparison circuit 10 can be omitted. The reason is as follows
  • the value of X may also match due to the relationship in equation (8).
  • the output of the auxiliary memory 4 ′ is (X 1, X 2, X 3).
  • the ratio of registered vectors that can be realized by the temporary address generator 3 (hash 'memory 3').
  • k indicates the total number of non-zero elements in the decomposition table.
  • the temporary address generator 3 realizes only one nonzero element for a column with two or more nonzero elements, the ratio ⁇ of addresses that can be expressed by the temporary address generator 3 is 18).
  • X15 l, 351, 680bits.
  • the amount of memory per cell other than the last stage is 2 1Q X8bits at most.
  • the memory capacity of the final cell is at most 2 10 Xllbits.
  • word table 1 As an application example of the address generation circuit 1, consider a table of frequently used English words.
  • word table 2 Three types of word tables (word table 1, word table 2, word table 3) were used as benchmarks.
  • the maximum number of characters in the word book is 13 characters. Only the first 8 characters are handled. For words shorter than 8 characters, a space is added at the end to make it 8 characters. If each English character is expressed in 5 bits, each English word can be expressed in 40 bits.
  • the numbers of words in Word Table 1, Word Table 2, and Word Table 3 are 1730 words, 3366 words, and 4705 words, respectively.
  • a unique index (natural number) is added to each word. At this time, the index of the word becomes l lbits, 12 bits, and 13 bits, respectively.
  • a hash function is generated.
  • the number of inputs of the hash function is (number of bits in the index of the word book) + 2.
  • Table 11 shows the experimental results when an equivalent address generation function is realized using pseudorandom numbers (an average of 100).
  • the number of columns containing one non-zero element is 138.4
  • the number of columns containing two or more non-zero elements is 160.0
  • the number of registration vectors that can be realized with hash 'memory 3' is 171. 6 was.
  • a similar experiment was performed for word books 2 and 3.
  • Table 12 shows the results of comparing the required memory. As can be seen from (Table 12), the total amount of memory required is significantly less than that achieved with a single LUT cascade.
  • FIG. 7 is a block diagram showing a hardware configuration of the address generator according to Embodiment 1 of the present invention.
  • the same components as those in FIG. 5 are denoted by the same reference numerals.
  • the address generator 1 of the first embodiment has one main address generator 8 whereas the address generator 1 ′ of the present embodiment has the main address generators 8, 8 It differs in that it has two '.
  • the main address generator 8 uses the main address generator for the division (X, X) for the input vector X.
  • the generator function ⁇ (Y, X) is calculated. Where Y is a vectored hash of X
  • the main address generator 8 ′ calculates the main address generation function ⁇ ′ (Y ′, X ′) for the division (X ′, X ′) with respect to the input vector X. This
  • Y ' is a vector vector obtained by hashing X' and is calculated in the same manner as in equation (8).
  • the division is different from 2 1, X '). Specifically, optimal
  • a simple division (X ′, X ′) may be determined by the following procedure.
  • the number of inputs of the first hash memory is (q + 1), the number of outputs is q, the number of inputs of the first auxiliary memory Divide the variables in order so that the power number is q and the output number is (n_q_l).
  • the hash function is calculated so that the non-zero elements of the decomposition table (1—2) are distributed.
  • the function represented by the unique address realized with this configuration is ⁇ (in the case of a random function,
  • the hash function is calculated so that the non-zero elements of the decomposition table (2-2) are distributed.
  • the function represented by the unique address realized with this configuration is ⁇ (in the case of a random function,
  • the circuit scale of the sub address generator 6 (reconfigurable PLA 6 ") can be further reduced.
  • FIG. 8 shows the configuration of a reconfigurable PLA 6 "using registers and gates.
  • the reconfigurable PLA 6 includes n registers 15, n EXNOR gates 16, and It consists of one AND gate 17.
  • any word with a width of -221 can be constructed and reconstructed at high speed. If the number of inputs is n, the number of outputs is q, and the weight of the address generation function to be realized is k, the number of LR (Logic Elements) required to configure the reconfigurable PLA 6 "in Figure 8 with an FPGA is
  • the number of registration vectors to be realized in reconfigurable PLA 6 " is 1730. Therefore, from equation (23), the number of LEs required to implement reconfigurable PLA 6" is 84, 478.
  • the ratio ⁇ of addresses that can be expressed by the temporary address generator 3 is
  • the number of registration vectors realized in reconfigurable PLA 6 is 173. [0210] [Super 'hybrid method]
  • the ratio of the addresses that can be expressed by the temporary address generator 3 is calculated from the equation (19). [0211] Woman 41]
  • the number of registration vectors realized in reconfigurable PLA 6 " is 43 It is. Therefore, in this example, the super 1 hybrid method can reduce the amount of hardware.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

消費電力を抑え且つデバイスの構造を簡単化して小面積で実装することが可能なアドレス生成器を提供する。 入力ベクトルX=(X1,X2)に対しX1をハッシュ化したY1を出力するハッシュ回路、Y1にハッシュ衝突が生じなければアドレス生成関数f(X)を仮アドレスA’とし、それ以外は固有アドレスAの一つをA’とする仮アドレス生成器、X”=f-1(A’)を出力するデータ再生器、X”とXとが一致する場合はA’を出力し、それ以外は無効値を出力する固有アドレス検出器、固有アドレス検出器が無効値を出力するXに対しf(X)を出力し、それ以外は無効値を出力する補完アドレス生成器、及び固有アドレス検出器及び補完アドレス生成器の出力のうち無効値以外のものがあればその値を固有アドレスAとして出力し、それ以外は無効値をAとして出力する出力合成器を備えた。

Description

明 細 書
アドレス生成器
技術分野
[0001] 本発明は、入力ベクトルに対し対応する固有アドレスを出力するアドレス生成器に 関し、特に、書き換えが容易で且つ小面積で実装可能なアドレス生成器に関する。 背景技術
[0002] k個(kは自然数)の異なる 2値ベクトルの集合を登録ベクトル集合(set of registered vectors)とする。登録ベクトル集合の各要素と一致する入力に対して 1から kまでの 固有アドレス(intrinsic address)に単射し、それ以外の入力に対して 0となる関数をァ ドレス生成関数(address generation flmction)とレ、う。また、アドレス生成関数の演算 を行う回路をアドレス生成器(address generator)という。アドレス生成器に入力される ベクトルを、入力べクトノレ(input vector)という。入力ベクトル力 次元べタトルであるァ ドレス生成関数を、 n入力のアドレス生成関数という。また、 n入力のアドレス生成関数 の演算を行う回路を n入力のアドレス生成器という。
[0003] アドレス生成器は、連想メモリ又は内容検索メモリ (Content Addressable Memory :
CAM)とも呼ばれ、パターン 'マッチング、インターネットのルータ、プロセッサのキヤ ッシュ、 TLB (Translation Lookaside Buffer)、データ圧縮、データベースのァクセラレ ータ、ニューラルネット、メモリパッチなど幅広い分野において利用されている。
[0004] アドレス生成器の機能をソフトウェアで実現することも可能である力 ソフトウェアで 実現したものは大幅に低速である。そのため、専用のハードウェア(半導体メモリ)を 用いてアドレス生成器を実現することが多い。以下、ハードウェアで構成された従来 のアドレス生成器にっレ、て説明する。
[0005] 図 9は、従来のアドレス生成器(CAM)の基本構成の一例を表すブロック図である( 特許文献 1参照)。アドレス生成器 100は、比較レジスタ 101、検索ビット線ドライバ 1 02、 k個のワード W〜W、 k個の一致センス回路 MSC〜MSC、 k個の一致フラグ
1 k l k
レジスタ MFR〜MFR、及びプライオリティ 'エンコーダ (優先度付符号化回路) PE
1 k
を備えている。 [0006] 比較レジスタ 101は、 nビットの入力ベクトルを格納するレジスタである。検索ビット 線ドライバ 102は、比較レジスタ 101の各ビットを検索ビット線上にドライブする。各ヮ ード W〜Wは、それぞれ nビットの CAMセルを備えている。
1 k
[0007] 図 10は、図 9の CAMセルの構成回路図である。図 10に例示した CAMセル 103 は、不一致検出型のものである。 CAMセル 103は、メモリ'セル 104及び一致比較 回路 105から構成される。メモリ'セル 104は、 1ビットのデータを記憶する SRAM構 成のメモリ'セルである。図 10において Dがデータ、 DNが反転データを表す。一致 比較回路 105は、メモリ'セル 104に記憶された 1ビットのデータと検索ビット線対 SL , SLN上にドライブされる入力ベクトルとを比較し、その一致比較結果を一致線 ML 上に出力する。
[0008] 一致比較回路 105は、 3つの nMOSトランジスタ(以下「nM〇S」という。) 106, 10 7, 108を備えている。 nMOS 106, 107は、検索ビット線 SLNと検索ビット線 SLとの 間に直列に接続されている。 nMOS 106, 107のゲートは、それぞれ、メモリ'セル 1 04のデータ D,反転データ DNに接続されている。 nMOS 108は、一致線 MLとダラ ンドとの間に接続されてレヽる。 nMOS 108のゲートは、 nMOS 106, 107の間のノ ード 109に接続されている。
[0009] まず、検索を行う前に、アドレス生成器 100のそれぞれのワード W〜Wに、検索対
1 k
象である登録ベクトルが記憶される。各ワード内の各 CAMセル 103において、メモリ 'セル 104へのデータの書き込み及びメモリ'セル 104からのデータの読み出しは、 通常の SRAMと同様にして行われる。
[0010] 検索時には、まず、比較レジスタ 101に入力ベクトルが格納される。入力ベクトルの 各のビットは、検索ビット線ドライバ 102により、各々対応する検索ビット線上にドライ ブされる。
[0011] 各々のワード W〜Wでは、各 CAMセル 103に予め記憶されている登録べクトノレ
1 k
と検索ビット線上にドライブされた入力ベクトルとの一致検索が同時(並歹 [J)に実行さ れ、その結果が一致線 ML〜ML上に出力される。これらの検索結果は、それぞれ
1 k
一致センス回路 MSC〜MSCに入力される。各一致センス回路 MSC〜MSCは
1 k l k
、各検索結果を増幅し、一致センス出力として一致センス出力線 MT〜MTに出力 する。各一致センス出力は、一致フラグレジスタ MFR〜MFRに格納され、一致フ
1 k
ラグ出力として一致フラグ出力出力線 MF〜MFに出力される。一致フラグは、 ' 1 '
1 k
力 S「一致あり」、 '0'が「一致なし」を表すものとする。
[0012] 各一致フラグ出力は、プライオリティ 'エンコーダ PEに入力される。プライオリティ' エンコーダ PEでは、所定の優先順位付けに従って、一致が検出されたワードの中か ら最優先順位のワードのアドレス(最優先一致アドレス: HMA)を選択し出力する。各 ワードの優先順位は、ワード Wが最も高 Wに向力 に従って順次優先順位が低
1 k
くなるものとする。
[0013] 尚、各ワード W〜W内の各 CAMセル 103における一致検索は、次のようにして
1 k
実行される。
[0014] まず、初期化動作を実行する。初期化動作では、検索ビット線対 SL, SLNがともに
'L' (= '0' )とされる。一方、メモリ'セル 104に記憶されているデータに応じて、一致 比較回路 105の nMOS 106, 107のうち一方がオン状態、他方がオフ状態となる。 従って、 nMOS 106, 107のうちオン状態の方を介して、両者の間のノード 109のレ ベルが' L'となり、 nMOS 108はオフ状態となる。この状態で、一致線 MLが 'H' (= ' 1 ' )状態にプリチャージされる。尚、一致線 MLは 'H'が「一致」を表す。
[0015] 次に、検索ビット線を介して比較レジスタ 101に記憶された入力ベクトルの各ビット が各 CAMセル 103に入力される。これにより、入力ベクトル Sに応じて、検索ビット線 対 SL, SLNの何れか一方が 'H'、他方が 'L'となる。
[0016] メモリ'セル 104に記憶されているデータ Dと入力べクトノレ Sとが一致する場合、ノー ド 109のレベルは' L'であり、 nMOS 108はオフ状態に保持される。
[0017] 一方、データ Dと入力ベクトル Sとが一致しない場合、ノード 109のレベルは 'H,と なり、 nMOS 108はオン状態になる。これにより、一致線 MLはデイスチャージされて 'L'状態となる。
[0018] nビットの CAMセル 103からなる CAMワードの一致線 MLは、各 CAMセル 103の nMOS 108がパラレルに接続されたワイヤード〇R回路を構成している。従って、 1ヮ ードを構成する nビットの CAMセル 103のすべてにおいて一致が検出された場合に 限り、一致線 MLは 'H' (「一致」)の状態に保持される。一方、 1ビットでも CAMセル 103で不一致が検出されると、一致線 MLは' L' (「不一致」)の状態となる。
[0019] 例えば、検索の結果、一致フラグレジスタ MFR〜MFRに、一致フラグとして' 0' ,
1 k
Ί ' , Ί ' , 'Ο' ,■· · , Ί ' , '0'が格納されたとする。この場合、ワード W , W ,■· · , W
2 3 で一致が検出されている。従って、プライオリティ 'エンコーダ ΡΕは、最も優先順 k 1
位が高いワード Wのアドレスを HMAとして出力する。また、一致フラグレジスタ MFR
2
に格納された一致フラグを' 0'にクリアすることで、その次に優先順位が高いワード
2
Wのアドレスを HMAとして出力することができる。以下同様にして、一致が検出され
3
たワードのアドレスを順次出力することができる。
[0020] 図 11は、図 9の CAMセルの別の例の構成回路図である。図 11に示す CAMセル 103 'は一致検出型のものであり、図 10と同様、 SRAM構成のメモリ'セル 104及び 一致比較回路 105を備えている。 CAMセル 103 'は、図 10の CAMセル 103におい て、一致比較回路 105の nMOS 108の接続が異なる。図 11の nMOS 108は、一 致線 MLと一致線 MLとの間に接続されている。 nMOS 108のゲートは、 nMOS 1 a b
06, 107の間のノード 109に接続されている。
[0021] CAMセル 103 'では、検索時には、初期化動作として、ビット線対 SL, SLNが共 に 'H'とされる。一方、メモリ'セル 104に記憶されているデータに応じて、一致比較 回路 105の nMOS 106, 107のうち一方がオン状態、他方がオフ状態となる。従つ て、 nMOS 106, 107のうちオン状態の方を介して、両者の間のノード 109のレベル 力 S 'H'となり、 nMOS 108はオン状態となる。この状態で、一致線 MLの一端が 'H' (= ' 1 ' )状態にプリチャージされる。尚、一致線 MLは 'H'が「不一致」を表す。
[0022] nビットの CAMセル 103,力 なる CAMワードの一致線 MLは、各 CAMセノレ 103, の nMOS 108がシリアルに接続された AND回路を構成する。従って、各々の CAM セルの一致線 ML, MLは、各々の CAMセル 103,の nMOS 108を介して 'H,に a b
プリチャージされる。
[0023] その後、検索ビット線を介して比較レジスタ 101に記憶された入力ベクトルの各ビッ トが各 CAMセル 103'に入力される。これにより、入力ベクトル Sに応じて、検索ビット 線対 SL, SLNの何れか一方が 'H'、他方が 'L'となる。
[0024] メモリ'セル 104に記憶されているデータ Dと入力ベクトル Sとが一致する場合、ノー ド 109のレベルは 'H'であり、 nMOS 108はオン状態に保持される。
[0025] 一方、データ Dと入力ベクトル Sとが一致しない場合、ノード 109のレベルは' L,とな り、 nMOS 108はオフ状態になる。
[0026] CAMワードの nビットの CAMセル 103 'のすベての状態が確定した後、一致線 M
Lの一方の端部からデイスチャージを開始し、他方の端部で一致比較結果を判定す る。このとき、 1ビットでも不一致の CAMセル 103 'がある場合には、一致比較結果は
'H'、すなわち、不一致の状態に保持される。一方、すべての CAMセル 103 'で一 致が検出された場合のみ、一致比較結果は' L'、すなわち一致状態となる。
特許文献 1 :特開 2004— 295967号公報
特許文献 2 :特願 2003— 389264号明細書
特許文献 3:特開 2004— 258799号公報
特許文献 4 :米国特許第 5, 063, 573号公報
非特許文献 1 :菅野卓雄監修,香山晋編, 「超高速デバイス ·シリーズ 2 超高速 MO Sデバイス」,初版,培風館, 1986年 2月, pp. 324- 325.
非特許文献 2 :電子情報通信学会編, 「LSIハンドブック」,第 1版,オーム社, 1994 年 11月, pp. 523 - 525.
特 3午文献 3: Kostas Pagiamtzis and Ali bheikholeslami, A Low-Power Content _A ddressable Memory (CAM) Using Pipelined Hierarchical Search Scheme", IEEE Jour nal of Solid-State Circuits, VoL39, No.9, Sept.2004, pp.1512— 1519.
非特許文献 4 : T.Sasao, M.Matsuura, and Y.Iguchi, "A cascade realization of multi-o utput function for reconfigurable hardware , International Workshop on Logic and S ynthesis (IWLS01), Lake Tahoe, CA, June 12-15, 2001, pp.225-230.
非特許文献 5 : T.Sasao and M.Matsuura, "BDD representation for incompletely sped fied multiple-output logic functions and its applications to functional decomposition,
" Design Autonmation Conference, June 2005, (pp.373-378).
発明の開示
発明が解決しょうとする課題
[0027] n入力のアドレス生成関数は、通常、出力値が非零となる入力ベクトルの数 kが、 n 次元ベクトルのすべての組み合わせの数 2nに比べて十分に小さレ、、いわゆる疎な論 理関数、 sparse logic function)である。
[0028] 例えば、 n=128, k=40000の登録ベクトル集合について考える。この場合、入力 ベクトルの取り得る場合の数に対する登録ベクトルの数の割合は、 40000/2128 =1. 17549 X 10— 34である。この登録ベクトル集合に対するアドレス生成器を実現する最も 単純な方法は、真理値表である。しかし、このような真理値表を直接メモリに記憶する のは、メモリが大きくなりすぎるため現実的ではない。
[0029] また、上述の従来のアドレス生成器や 2段論理回路, PLA (Programmable Logic Ar ray)でも実現可能である。しかし、この登録ベクトル集合では、 LSIにした場合、チッ プ面積や消費電力が大きくなりすぎるという問題がある。また、上述の従来のアドレス 生成器は、 RAMに比べると 1ビットあたりの価格(ビットコスト)が高価となる。
[0030] 例えば、上記従来のアドレス生成器は、 RAMに比べると、並列に検索可能である ため高速であるが、デバイスの構成は複雑となる。そのため、このアドレス生成器の 1 ビットあたりの価格(ビットコスト)は、 RAMに比べる高価なものになる。
[0031] また、 1ビットあたりの消費電力が RAMに比べて遙かに大きい(非特許文献 3参照) 。これは、上で説明したように、すべての CAMセルを同時にアクセスするためである 。そのため、 1ビットあたりの消費電力は、通常の RAMの数十倍程度にもなる。
[0032] そこで、本発明の目的は、検索の高速性を維持しつつも、消費電力を抑え且つデ ノ イスの構造を簡単化して小面積で実装することが可能なアドレス生成器を提供す ることにある。
課題を解決するための手段
[0033] 本発明の構成を説明する前に、まず、本明細書において使用する用語を定義し、 本発明の基本原理について説明する。
[0034] 〔1〕用語の定義及びいくつかの定理
〔定義 1〕(アドレス生成関数)
関数 f(X):Bn→{0, 1, ···, k}(B={0, 1}, ke自然数)において、 k個の異なる登 録ベクトル ^ΕΒη(ί=1, 2, ···, k)に対して ^)=1(1=1, 2, ···, k)が成立し、それ 以外の(2n— k)個の入力ベクトル aに対しては、 f (a) =0が成立するとき、 f(X)を重 み kのアドレス生成関数 (address generation f nction)とレ、う。アドレス生成関数は、 k 個の異なる 2値ベクトルに対して、 1力 kまでの固有アドレスを生成する。
(定義終わり)
本明細書においては、 kの値は入力べタトノレの組み合わせ総数 2nに比べて十分に 小さい (k< < 2n)と仮定する。
[0035] 〔定義 2〕(登録ベクトル,登録ベクトル表)
k個の nビットのベクトルの集合を考える。このベクトルの集合を登録ベクトル集合と レ、い、登録ベクトル集合に属する各ベクトルを登録ベクトルという。登録ベクトル集合 に属するすべての登録ベクトルに 1から kまでの整数を 1対 1に対応させる表を登録べ タトル表という。
(定義終わり)
[0036] (例 1)
(表 1)は、 4ビットの 7個の登録ベクトルからなる登録ベクトル表を示す。この登録べ タトル表に対応するアドレス生成関数を (表 2)に示す。いずれも、登録ベクトルに一 致した入力ベクトルに対応するアドレスを 3ビットの数(例えば、 ' 001 ' )として出力す る。入力ベクトルと一致する登録ベクトルが登録ベクトル表の中にない場合には、 ' 00 0 'を出力する。
(例終わり)
[0037] [表 1]
表 1: 登録べク トル表
Figure imgf000009_0001
[0038] [表 2] 表 2: アドレス生成関数
*4 ^'3 X'2 X\ h /()
0 0 0 0 0 0 0
0 0 0 I 1 1 i
0 0 1 0 0 0 1
0 0 1 1 1 0 1
0 1 0 0 0 0 0
0 1 0 1 1 0 0
0 1 1 0 0 0 0
0 1 1 1 0 1 0
1 0 0 0 0 0 0
1 0 0 1 0 0 0
1 0 1 0 0 0 0
1 0 1 1 1 1 0
1 1 0 0 0 0 0
1 1 0 1 0 1 1
1 1 1 0 0 0 0
1 1 1 1 0 0 0
[0039] 〔定義 3〕(分割)
入力ベクトルを X=(x , χ ,…, χ )とする。 Xの変数の集合を {X}で表す。 {X } U {
1 2 η 1
X } = {Χ}1 {Χ } Π {X } = φのとき、 Χ=(Χ, X )を Xの分割(partition)という。こ
2 1 2 1 2
こで、 Φは空集合を表す。
(定義終わり)
[0040] 〔定義 4〕(分解表,基本分解表,列複雑度)
完全定義関数 f(X): Bn→Bq(B={0, 1}, Χ= (χ , X , ■··, X ), n, qe自然数)が
1 2 n
与えられているとする。 (X , X )を Xの分割とする。 Xの次元(変数の個数)を d(X)と
L H
記す。関数 f(X)及び Xの分割 Χ= (Χ , X )に対して、以下の(1)〜(3)の条件を満
L H
たす表を fの分解表という。
(1) 2nL列 2nH行の表である。ここで、 n =d(X ), n =d(X )とする。
L L H H
(2)各行,各列に 2進符号のラベルを持ち、列及び行のラベルの集合は、それぞれ n , n ビットのすべてのパターンを要素とする。
L H
(3)表の各要素が、その要素に対応する列及び行のラベルの組み合わせ (X , X ) に対する fの真理値 f (X, X )である。
Xを束縛変数、 X を自由変数という。分解表の異なる列パターンの個数を分解表
L "
の列列複複雑度といい、 βと記す。分解表の特別な場合として、 X =Χ, X = φの場合も 考える。
ままたた、、関数 fの分解表のうちで、 X = (X, X,…, X )且つ X = (X , X
, X )となるものを基本分解表という c
(定義終わり)
[0041] (例 2)
(表 3)の分解表では、 n = 3, n = 2, μ : 2である。
(例終わり)
[0042] [表 3]
表 3: 分解表の例
X L
0 0 0 0 1 1 1 1 χ3
0 0 1 1 0 0 1 1 ¾2
0 1 0 1 0 1 0 1 2:1
0 0 0 1 0 0 0 1 1 0
0 1 1 1 1 1 1 1 1 1
Η 1 0 1 0 1 丄 1 0 0 1
1 1 0 1 0 0 0 1 1 0
a¾ , 4
[0043] 〔定義 5〕(C尺度)
ベクトル Xの変数の順序を X= (X , X , ■· · , X )としたとき、論理関数 f (X)の基本分
1 2 n
解表の列複雑度の最大値を fの C尺度とレ、う。
(定義終わり)
[0044] (例 3)
f =x X Vx X Vx Xの C尺度は 3であるが、 f =x X Vx X Vx Xの C尺度は 8
1 1 2 3 4 5 6 2 1 5 2 6 3 4 である。
(例終わり)
[0045] 分解表の列複雑度は、 MTBDD (多端子二分決定グラフ)の幅に等しい。従って、 論理関数の C尺度は、与えられた入力変数の順における MTBDDの幅の最大値に 等しい。与えられた論理関数 f(x ,χ , · · ·,χ )に対して、 C尺度は容易に計算でき、一意
1 n
的に定まる。後述するように、 C尺度が小さい関数は、 LUTカスケードで効率的に実 現可能である。従って、 C尺度は、論理関数を LUTカスケードで実現する際の複雑さ の尺度となる。
[0046] 〔補題 1〕
重み kの論理関数 fの C尺度は高々 k + 1である。
(補題終わり)
[0047] 〔定理 1〕
与えられた関数 f (X)に対して、 Xを分解表の自由変数、 X を束縛変数とし、 μを
L Η
分解表の列複雑度とする。このとき、関数 fは図 1に示す回路で実現可能である。この 場合、 2つのブロック H, Gの間を結ぶ信号線数は高々
[0048] [数 1]
である。
(定理終わり)
[0049] 〔定義 6〕(関数分解)
一つの関数 f (X) = f (X, X )を分解し 2つの関数 G, H (但し、 f (X) = (G (H (X )
L H 1 L
), X ) )として実現することを関数分解という。関数分解により得られる関数 G, Hを分
H
解の部分関数という。
(定義終わり)
[0050] 図 1において、 2つのブロック間を結ぶ信号線数が X中の変数の個数よりも少ない
L
とき、関数を実現するためのメモリ量を削減できる可能性がある。与えられた関数を繰 り返し関数分解することにより、図 2に示すような LUTカスケードが得られる。
[0051] 〔定義 7〕(LUTカスケード)
一つの関数 f (X)に対して関数分解を繰り返し行って得られる部分関数を G, G ,
1 2
…, Gと記す。
s
[0052] ほ女 2]
Figure imgf000013_0001
f(X) = R,
X― (X[ 7 2 …, Xs) 各部分関数 G, G ,■· · , Gをルックアップ'テーブル (LUT)で実現し、各 LUTを信
1 2 s
号線でカスケード接続したものを LUTカスケードという。各部分関数 G, G ,■· · , G
1 2 s を表す各 LUTをセルという。隣接するセル間を接続する信号線をレイルという。
(定義終わり)
[0053] 〔定理 2〕
C尺度が/ の論理関数は、入力数が高々 q+ 1で、出力数が qのセルから構成され た LUTカスケードで実現可能である。ここで、
[0054] [数 3]
Figure imgf000013_0002
である。
(定理終わり)
[0055] 〔定理 3〕
関数 fを実現する LUTカスケードを考える。レ、ま nを外部入力数、 sをセル数、 qを最 大レイル数 (セル間の信号線数)、 pをセルの最大入力数、および μを関数 fの C尺度 とする。
[0056] 國
Ό >「1ο μ] h 1
が成立するとき、以下の関係を満たす関数 fを実現する LUTカスケードが存在する。
[0057] [¾5]
n― q
s <
ν - <ι
(定理終わり)
[0058] 重みが kのアドレス生成関数は、レイル数が [0059] ほ女 6コ
「log2(fc + l)]
の LUTカスケードで実現可能である。し力し、 kの値が大きいときは、単一のカスケ一 ドでは、セルが大きくなり過ぎ、実現困難となる。例えば、 k=40000のとき、 17入力 1 6出力のセルが必要となる。この場合、ベクトルの集合をレ、くつかに分解して、各べク トルの集合を別々のカスケードで実現すると、必要メモリ量を削減することが可能であ る。しかし、この場合には、複数のカスケードの出力を纏めるエンコーダが必要となる
[0060] 〔2〕本発明の原理
(1) 1個のハッシュ 'メモリを使用する方法(ノ、イブリツド法(Hybrid Method) ) 重み kのアドレス生成関数 f (X , X )において、入力変数 (X
1 2 1, X )を (Y , X )と一
2 1 2 次変換し、アドレス空間をハッシュ化する。ハッシュ化した後の関数
[0061] ほ女 7] fix 1, 2 ) の分解表(図 3)を考える。尚、以下では
[0062] [¾8]
のようにに」が付された表記をテキスト上では「Γ」のように記す。 Υの変数 (束縛変数
1
)の個数を Ρとする。非零要素が分解表で一様に分布していると仮定すると、 2p>kの とき、分解表は、平均すると各列に高々 1個の非零要素を持つ。いま、簡単のために 、分解表は各列に高々 1個の非零要素を持つと仮定する。次に、
[0063] [数 9]
Figure imgf000014_0001
(Yi) max MY^ b) (n2は X2の |g素数 とし、 h" (Y )をハッシュ 'メモリ(Hash memory) 3'で実現する(図 5参照)。 [0064] 関数 Γの入力は(Y, X )であるのに対し、 h" (Y )は Yの値のみで Γの値を予測
1 2 1 1
するので、 h" (Y )の値は Γとは異なる可能性がある。そこで、 h (Y )の値が正しい
1 1
か否かを補助メモリ(auxiliary (AUX) memory) 4'により検查する。補助メモリ 4'の入 力数は
[0065] ほ女 10] =「1( 2( + 1)1 ( で、出力数は nである(実際には、 n_pまで削減できる)。補助メモリ 4'の各アドレスに 、対応する登録ベクトルを格納しておく。補助メモリ 4'の出力と入力の検索パターン が等しい場合には、ハッシュ 'メモリ 3'は、正しい値を出力しており、ハッシュ 'メモリ 3' の出力値をそのまま出力する。等しくない場合は、ハッシュ 'メモリ 3'は Γと異なった 値を出力しているので、 0を出力する。
[0066] ある列に、非零要素が 2個以上ある場合 (ハッシュ衝突がある場合)には、上記の方 法は利用できないため、 Γ(Υ , X )を
1 2
[0067] [数 11]
Ι(Υι,Χ2) ::
Figure imgf000015_0001
V ( ,X2),
f1(Y X2} -f2{Y1,X2) = 0 と関数分解し、関数 Γ (Y , X )の分解表の各列では非零要素が高々 1個となるよう
1 1 2
にする。また、関数 Γ (Y , X ) =f (X , X )に関しては、 LUTカスケードや再構成
2 1 2 2 1 2
可能 PLA (例えば、特許文献 4参照)等の再構成可能論理回路で実現する。ここで、 f (X, X )は、 Γ (Y , X )のハッシュ化された束縛変数 Yを束縛変数 Xに変換し
2 1 2 2 1 2 1 1 て得られる関数を表す。
尚、関数 I (Y, X )を王アドレス生成関数 master address generation function)と
1 1 2
レ、つ。 た、関数 f (X, Xリ ¾rg[|アドレス生成関奴 (slave address generation function
2 1 2
)という。
[0068] このアドレス生成器の特徴は、次の通りである。ハッシュ 'メモリ 3'は、アドレス生成 関数を能率よく実現するが、ハッシュ衝突が起こるため、一部の登録ベクトルは表現 することができない。一方、 LUTカスケードや再構成可能 PLA等の再構成可能論理 回路は、アドレス生成関数を確実に実現するが、 kの値が大きい場合には能率が悪 レ、。そこで、図 5のアドレス生成器は、これら 2つの手法をうまく組み合わせてアドレス 生成関数を能率よく実現できるようにしたものである。このアドレス生成器は、 nの値が 大きく、 kの値が 2nに比べて十分に小さい場合に有効である。ノ、ッシュ 'メモリ 3'と補 助メモリ 4'で、およそ 90%の登録ベクトルの集合を実現し、残りの 10%の登録べタト ルの集合を LUTカスケードや再構成可能 PLA等の再構成可能論理回路 6,で実現 する。
[0069] (2) 2個以上のハッシュ 'メモリを使用する方法(スーパ一.ハイブリッド法(Super Hybr id Method) )
[0070] 入力変数 Xに対して M個の異なる分割 (X , X ) (i=l, ···, M)を考える。これらの
li 2i
各分割に対して、(1)と同様にアドレス空間をハッシュ化し、ハッシュ 'メモリ 3'と補助 メモリ 4'を用いてアドレス生成関数 Γ (Υ , X )を実現する(図 7参照)。そして、アド
li li 2i
レス生成関数 Γ(Υ , X )を
1 2
[0071] [数 12] f(r X2):二 fn(Yu,X2.i) V… V flk(Yik,X2k) V f2(Y X2).
fu(Yli}X2i) ' f2(Y X2) 0 (i = 1, ... , M) と関数分解し、主アドレス生成関数 Γ (Y , X )の分解表の各列では非零要素が高
li li 2i
々 1個となるようにする。また、畐 IJアドレス生成関数 Γ (Y , X )=f (X , X )に関して
2 1 2 2 1 2
は、 LUTカスケードや再構成可能 PLA等の再構成可能論理回路で実現する。ここ で、 f (X, X )は、 Γ (Y, X )のハッシュ化された束縛変数 Yを束縛変数 Xに変
2 1 2 2 1 2 1 1 換して得られる関数を表す。
[0072] 一例として、 k = 2の場合(図 7参照)を考えると、分割 (X , X ), (X , X ) (図 7
11 21 12 22 においては、 X =X, X =X, X =X,, X =X,と記す。)に対して、 2つのハ
11 1 21 2 12 1 22 2
ッシュ 'メモリ 3,、 3'及び 2つの補助メモリ 4,、 4'を用いて、主アドレス生成関数 Γ (
11 γ , χ ), Γ (γ , χ )を実現したとする。主アドレス生成関数 r (γ , X )は、
11 21 12 12 22 11 11 21 登録べクトノレのうちの約 80%に対してアドレス Αを返し、 Γ (Υ , X )は、登録べク
12 12 22
トルのうち約 16%に対してアドレス Aを返す。 Y , Y のハッシュ化が完全にランダム
11 12
に行われた場合、主アドレス生成関数 Γ (γ , χ ), Γ (γ , χ )により、すべて
11 11 21 12 12 22 の登録ベクトルのうちの約 96%の登録ベクトルに対してアドレス生成関数が実現され る。したがって、副アドレス生成関数 f (X , X )は残りの約 4%の登録ベクトルに対し
2 1 2
てアドレス生成関数を実現すればよい。したがって、再構成可能論理回路で実現す べき副アドレス生成関数 f (X , X )は、ハイブリッド法に比べて更に小さくなり、より小
2 1 2
規模な回路により実現することが可能となる。
[0073] (例 4)
重みが kの n変数のアドレス生成関数 f (X)を考える。
[0074] 〔ハイブリッド法〕
ノ、イブリツド法の場合、ハッシュ 'メモリ 3,の入力数は p = q + 2,出力数は qである。 ここで、 qは式(3)により表される。また、補助メモリの入力数は q,出力数は (n— q— 2 )である。従って、総メモリ量は、
[0075] [数 13] q . 2q+'2 I (n — ( — 2) . 2"■ -(½, I 12q― 8) , 2«- 2 となる。
[0076] 〔スーパー 'ノ、イブリツド法〕
スーパー.ハイブリッド法の場合、第 1のハッシュメモリの入力数は(q + i) ,出力数 は q、第 1の補助メモリの入力数は q,出力数は (n_q_ l)、第 2のハッシュメモリの入 力数は (q_ l),出力数は (q_ 2)、第 2の補助メモリの入力数は (q_ 2),出力数は( n_q + 2)である。従って、総メモリ量は、
[0077] ほ女 14] q - 2,;+ |■+■ (n - f/ - 1)■ 2" + ( — 2) · 2q~l -\ (n― q十 2) . 2q~2 = (5n■+■ 5q― 6) . '2q-2 となる。
[0078] 上の 2つの式より、
[0079] [数 15] n < 71og2( 1)— 2 が成立するとき、スーパー ·ハイブリッド法の方力 ハイブリッド方よりも、必要メモリ量 が少なくなる。
(例終わり)
〔3〕本発明の構成
本発明に係るアドレス生成器の第 1の構成は、
入力される 2値ベクトル(以下「入力ベクトル」という。)Xに対し、当該入力ベクトル X が登録ベクトルの場合にはそれに対応する固有アドレス Aを出力し、それ以外の場 合には無効値を出力するアドレス生成関数 f (X)の演算を行うアドレス生成器であつ て、
A. 1乃至複数個設けられ、前記入力ベクトル Xが前記登録ベクトル集合の所定の 部分集合に属す場合にはそれに対応する固有アドレス Aを出力し、それ以外の場合 には無効値を出力する主アドレス生成器と、
B.すべての前記主アドレス生成器の出力が無効値となり且つ前記登録ベクトル集 合に属す前記入力ベクトル Xに対しては、対応する固有アドレス Aを出力し、それ以 外には無効値又は入力ベクトル Xに対応する固有アドレス Aを出力する副アドレス生 成関数 f (X)の演算を行う副アドレス生成器と、
2
C.主アドレス生成器又は副アドレス生成器の出力値が無効値以外であればその 値を固有アドレス Aとして出力し、それ以外の場合は無効値を出力する出力合成器と を備え、
前記各主アドレス生成器は、
a.前記入力ベクトル Xの所定の分割 (X , X ) (iは各主アドレス生成器を識別する
li 2i
インデックス)に対し束縛変数 X をハッシュ化し、ハッシュ化された束縛変数 Y を出
li li 力するハッシュ回路と、
b.前記束縛変数 Y に対する割り当てに対し、前記固有アドレス Aが一対一対応す
li
る場合 (ハッシュ衝突が生じない場合)には当該固有アドレス Aを仮アドレス A'として 出力し、それ以外の場合 (ハッシュ衝突が生じる場合)には任意の値又は対応する固 有アドレス Aの何れか一つを仮アドレス A'として出力する仮アドレス生成器と、
c アドレス生成関数 f (X)の逆関数であるデータ再生関数 Γ1 (A)の演算を行う演 算器であって、前記仮アドレス生成器が出力する仮アドレス A'が入力されると、それ に対応する再生ベクトル X"ニ厂1 (Α' )を出力するデータ再生器と、
d.前記再生ベクトル X"と前記入力ベクトル Xとを比較し、両者が一致する場合には 前記仮アドレス A'を出力し、それ以外の場合には無効値を出力する固有アドレス検 出器と、
を備えたことを備えたことを特徴とする。
[0081] この構成によれば、アドレス生成器に外部から入力ベクトル Xが入力された場合、ハ ッシュ回路が入力ベクトル X= (X , X )に対し束縛変数 X をハッシュ化し、ハッシュ
li 2i li
化された束縛変数 Y として出力する。ここで、 Χ= (Χ , X )は Xの分割とする。また、
li li 2i
ノ、ッシュ化により束縛変数 X は Y に変換され、入力ベクトル Xはハッシュ入力べタト
li li
ル X, = (Y, X )となる。
i li 2i
[0082] 次に、仮アドレス生成器は、 Y についてハッシュ衝突が生じない場合には Υ に対
li li 応する固有アドレス Aを仮アドレス A'として出力する。ハッシュ衝突が生じる場合には 任意の値又は対応する固有アドレス Aのうちの何れか一つを、仮アドレス A'として出 力する。データ再生器は、得られた仮アドレス A'からそのアドレスに対応する再生べ タトル Χ'^Γ^Α' )を出力する。固有アドレス検出器は、 X"と Xを比較し、両者が一 致する場合には仮アドレス A'を出力する。それ以外の場合には無効値を出力する。 これにより、固有アドレス検出器からは、入力ベクトル Xに対して正しい固有アドレス A 又は無効値が出力される。
[0083] 一方、畐 IJアドレス生成器は、固有アドレス検出器の出力が無効値となる入力べタト ノレ Xに対しては、 Xに対応する正しい固有アドレス A=f (X) (固有アドレスがない場合 は無効値)を出力する。一方、固有アドレス検出器の出力が無効値以外となる場合に は、無効値を出力するか、又は Xに対応する正しい固有アドレス A=f (X)を出力する
[0084] 最後に、出力合成器は、固有アドレス検出器の出力値及び副アドレス生成器の出 力値のうち無効値でないものがあれば、それを固有アドレス Aとして出力する。両者と も無効値の場合は無効値を出力する。これにより、入力ベクトル Xに一致する登録べ タトルがあれば、出力合成器からは、 Xに対する正しい固有アドレス Aが出力される。 [0085] 入力ベクトル Xをー且ハッシュ化することにより、アドレス生成関数 A= f (X) = f (X li
, X )は、 Α= Γ (Υ, X )に変換される。固有アドレス Αの数 kが η次元の入力べクト
2i li 2i
ル Xの組み合わせの数 2nに対して十分に小さい場合、 Y に対応する Aの数は平均し
li
て高々 1個となる。すなわち、ハッシュ関数をうまく選択すれば、 Y の割り当てと Aとは
li
ほぼ一対一対応の関係となる。そこで、ハッシュ化の際に使用するハッシュ関数を、 Y の値を用いて、 Aを一意的に決定できる確率をできるだけ大きくなるように選択す li
る。そうすれば、大部分の Aは、束縛変数 Y の関数 A= G (Y )として表される。 Gの
li li
入力ベクトル Y の要素数が入力ベクトル Xの要素数に比べて少ないため、仮ァドレ
li
ス生成器は小規模な回路で実現することができる。
[0086] そして、残りのハッシュ衝突を生じる入力ベクトル Xについては、副アドレス生成器 において、 Aを Xの全要素の関数として計算する。このとき、 Xはハッシュ衝突を生じる ものに限定されているため、副アドレス生成器で計算することが必要な Aの組み合わ せの数は少ない。従って、副アドレス生成器は小規模な回路により実現することがで きる。
[0087] 故に、全体として、アドレス生成器全体の回路規模を小さくすることができ、消費電 力を抑えることができる。また、デバイスの構造を簡単化し、小面積で実装することが 可能となる。
[0088] また、主アドレス生成器を 2つ以上備える場合には、各主アドレス生成器での分割( X , X )を互いに異なる分割とすることで、主アドレス生成器が 1つの場合に比べて、 li 2i
主アドレス生成器によりアドレス生成関数が実現される登録ベクトルの割合が大きくな る。したがって、畐 ijアドレス生成器によりアドレス生成関数を実現すべき登録ベクトル の数を減らすことができ、より小規模な回路でアドレス生成器を構成することが可能と なる。
[0089] ここで、 「2値ベクトル (binary vector)」とは、ベクトルの各成分が 2値であるべクトノレ をいう。
[0090] 「ハッシュ化(hashing)」とは、アドレス生成関数の分解表において非零要素が多く の列に分散するように、入力ベクトル Xの一部又は全部のベクトル成分の順序を置換 することをいう。 「ハッシュ衝突(hash collision)が生じる」とは、ハッシュ入力ベクトル X 'のベクトル成分からハッシュ化されていないベクトル成分を除いた束縛変数 Yの割 り当てに対し、複数の固有アドレス Αが対応することをいう。
[0091] 「データ再生関数(data- regeneration function)」とは、アドレス生成関数 f (X)の逆 関数、すなわち、固有アドレス Aをそれに対応する入力ベクトル Xに写像する関数を いう。
[0092] 「無効値(invalid value)」とは、アドレスが無効である(存在しなレ、)ことを表す値をレヽ う。無効値としては、アドレスのすべての成分を 0としたもの,すべての成分を 1とした もの,実際に存在しないアドレス値としたものなどが使用される。
[0093] 「副アドレス生成関数(slave address generation function)」とは、前記固有アドレス 検出器が無効値を出力する場合には、当該入力ベクトル Xに対しアドレス生成関数 f (X)の演算値を出力し、それ以外の場合には無効値又はアドレス生成関数 f (X)の 演算値を出力する関数をいう。すなわち、副アドレス生成関数は、前者の場合には、 当該入力ベクトル Xをそれに対応する固有アドレス Aに写像し、後者の場合には無効 値又は当該入力ベクトル Xに対応する固有アドレス Aに写像する。
[0094] 副アドレス生成器としては、 LUTカスケード、その他の論理回路を使用することがで きる。
[0095] 本発明に係るアドレス生成器の第 2の構成は、前記第 1の構成において、前記副ァ ドレス生成器は、前記主アドレス生成器のいずれかにおいて前記ハッシュ化された束 縳変数 Y がハッシュ衝突を生じる入力ベクトル Xに対しては、当該入力ベクトル Xに
li
対応する前記固有アドレス Aを出力し、それ以外の場合には無効値を出力するもの であることを特徴とする。
[0096] この構成によれば、副アドレス生成器は、ハッシュ衝突を生ずる場合には正しい固 有アドレスを出力し、ノ、ッシュ衝突を生じない場合には、常に無効値を出力する。従 つて、畐 IJアドレス生成器は、ノ、ッシュ衝突が生じる場合の Xを調べ、その結果得られる レ、くつかの Xに対して固有アドレス Aを演算するように構成すればよレ、。従って、副ァ ドレス生成器における論理演算回路の構成が容易となる。
[0097] 本発明に係るアドレス生成器の第 3の構成は、前記第 1の構成において、前記仮ァ ドレス生成器は、前記ハッシュ化された束縛変数 Yにおいてハッシュ衝突が生じな い場合には、当該束縛変数 ¥ェに対応する固有アドレス Aを前記仮アドレス A'として 出力する仮アドレス生成関数が、ルックアップ ·テーブル (LUT)として格納されたハ ッシュ 'メモリであることを特徴とする。
[0098] このように、仮アドレス生成器をハッシュ 'メモリで構成することにより、演算速度を高 速に維持しつつも、メモリの書き換えによる再構成も簡単に行うことが可能である。
[0099] 本発明に係るアドレス生成器の第 4の構成は、前記第 1の構成において、前記デー タ再生器は、前記データ再生関数 f_ 1 (A)が、 LUTとして格納された補助メモリである ことを特徴とする。
[0100] このように、データ再生器を補助メモリで構成することにより、演算速度を高速に維 持しつつも、メモリの書き換えによる再構成も簡単に行うことが可能である。
[0101] 本発明に係るアドレス生成器の第 5の構成は、前記第 1の構成において、前記副ァ ドレス生成器は、カスケード状に接続された複数の部分関数メモリを備えた LUTカス ケード論理回路により構成されており、
前記各部分関数メモリには、前記副アドレス生成関数 f (X)を関数分解して得られ
2
る複数の部分関数が LUTとして格納されていることを特徴とする。
[0102] このように、畐 IJアドレス生成器を LUTカスケード論理回路で構成することにより、演 算速度を高速に維持しつつも、回路規模も、 PLA (プログラマブル'ロジック 'アレイ) で構成する場合に比べて小規模化することができる。また、メモリの書き換えによる再 構成も簡単に行うことが可能である。 発明の効果
[0103] 以上のように、本発明によれば、入力ベクトルをハッシュするハッシュ回路及びハツ シュ入力ベクトルから固有アドレスを出力する仮アドレス生成器を備えるとともに、仮 アドレス生成器で計算できない固有アドレスを計算するための副アドレス生成器を備 え、仮アドレス生成器及び副アドレス生成器を相補的に組み合わせて固有アドレスの 生成を行う構成とした。これにより、アドレス生成器全体の回路規模を小さくすることが でき、消費電力を抑え且つデバイスの構造を簡単化して小面積で実装することが可 能となる。
[0104] また、仮アドレス生成器やデータ再生器を LUTを格納したメモリで構成し、副ァドレ ス生成器を LUTカスケードにより構成することで、演算速度を高速に維持しつつも、 メモリの書き換えによる再構成も簡単に行うことが可能である。
図面の簡単な説明
[図 1]論理関数を関数分解により実現した場合を表す図である。
[図 2]中間出力を有する LUTカスケードを表す図である。
[図 3]ハッシュ化関数 Γ (Υ , X )の分解表を表す概念図である。
1 2
[図 4]本発明の実施例 1に係るアドレス生成器の機能構成を表すブロック図である。
[図 5]図 4のアドレス生成器 1の具体的なハードウェア構成を表すブロック図である。
[図 6]6変数関数をハッシュ 'メモリで実現した例を示す図である。
[図 7]本発明の実施例 1に係るアドレス生成器のハードウェア構成を表すブロック図で ある。
[図 8]レジスタとゲートを用いた再構成可能 PLA 6 'の構成を表す図である。
[図 9]従来のアドレス生成器 (CAM)の基本構成の一例を表すブロック図である。
[図 10]図 6の CAMセルの構成回路図である。
[図 11]図 6の CAMセルの別の例の構成回路図である。
符号の説明
1, 1 ' アドレス生成器
2 ハッシュ回路
3 仮アドレス生成器
3, ハッシュ 'メモリ
4 データ再生器
4, 補助メモリ (AUX memory)
5 固有アドレス検出器
6 副アドレス生成器
6, LUTカスケード
6" 再構成可能 PLA
7 出力合成器
7 ' 〇R回路 8, 8 ' 主アドレス生成器
10 比較回路
11 AND回路
15 レジスタ
16 EXNORゲート
17 ANDゲート
発明を実施するための最良の形態
[0107] 以下、本発明を実施するための最良の形態について、図面を参照しながら説明す る。
実施例 1
[0108] 本実施例では、主アドレス生成器力 ^個の場合 (ハイブリッド法)について説明する
[0109] 生成器の構成
図 4は、本発明の実施例 1に係るアドレス生成器の機能構成を表すブロック図であ る。本実施例に係るアドレス生成器 1は、ノ、ッシュ回路 2、仮アドレス生成器 3、データ 再生器 4、固有アドレス検出器 5、副アドレス生成器 6、及び出力合成器 7を備えてい る。
[0110] アドレス生成器 1は、重み kのアドレス生成関数 f (X)の演算を行う演算器である。す なわち、アドレス生成器 1は、外部から入力ベクトル Xが入力されると、入力ベクトル X に対応する登録べタトノレがある場合にはその登録ベクトルの固有アドレス Aを出力す る。それ以外の場合には無効値 0を出力する。
[0111] [数 16]
χ)、 I A (if X e R)
1 0 (otherwise) (4) (i し、 A e {1, 2, . . . J-}, は登録ベク トルの集合)
[0112] ここで、入力ベクトル Xは n次元のベクトルである。また、固有アドレス Aは l〜kまで の値をとり、 qビットの 2進数で表現されている。ここで、 qは上述の式(3)により表され る。 [0113] ハッシュ回路 2は、入力ベクトル Xの一部又は全部を、所定のハッシュ関数に従って ノ、ッシュ化する。ここで、 Xの分割を X= (X , X )とする。 Xは束縛変数、 Xは自由
1 2 1 2 変数である。 X =Xの場合も考える。ハッシュ回路 2は、 Xの束縛変数 Xをハッシュ化
1 1 しハッシュ入力ベクトル X' = (Y, X )を生成する。
1 2
[0114] 仮アドレス生成器 3は、仮アドレス A'を生成する。この場合、仮アドレス A'は次のよ うに決定される:
(1)ハッシュ化された束縛変数 Yに対する一つの割り当てが、ハッシュ衝突が生じな
1
レ、場合、その割り当てに対応する固有アドレス Aを仮アドレス A'とする;
(2)ハッシュ化された束縛変数 Yに対する一つの割り当てが、ハッシュ衝突が生じる
1
場合、その割り当てに対応する固有アドレス Aの集合 {A }の中で最も小さいものを仮
1
アドレス A,とする。
[0115] 以下、束縛変数 Yに対する一つの割り当て(全部で 2P個ある)を仮アドレス A'に写
1
像する関数を仮アドレス生成関数と呼び、 (Y )と記す。
[0116] データ再生器 4は、アドレス生成関数 A=f (X)の逆関数 X=f_ 1 (A)を演算する演 算器である。データ再生器 4は、仮アドレス生成器 3から入力される仮アドレス A'に対 して、再生ベクトル ,,ニ厂 八')を出力する。
[0117] 固有アドレス検出器 5には、入力ベクトル X,再生ベクトル X",及び仮アドレス A'が 入力される。固有アドレス検出器 5は、再生ベクトル X"と入力ベクトル Xとの比較を行 う。そして、両者が一致する場合は、仮アドレス A'を出力し、それ以外は無効値 0を 出力する。
[0118] 副アドレス生成器 6は、アドレス生成関数 f (X)に対し、仮アドレス生成器 3,データ 再生器 4,及び固有アドレス検出器 5による仮アドレス A'の演算と補完関係にある副 アドレス生成関数 f "" )の演算を行レ、、副アドレス A"を出力する演算器である。畐 IJ
2
アドレス生成関数 f " (X)は、次のような関数である:
2
(1)固有アドレス検出器 5が無効値 0を出力する場合には、入力ベクトル Xをそれに 対応する固有アドレス Aに写像する;
(2)それ以外の場合には、入力ベクトル Xを無効値 0又は対応する固有アドレス Aに 写像する。 [0119] 副アドレス生成器 6は、論理ゲートを組み合わせることによって構成してもよいし、 L UTカスケード論理回路を用いて構成してもよレ、。
[0120] 出力合成器 7には、固有アドレス検出器 5の出力値、及び副アドレス生成器 6の出 力値が入力される。出力合成器 7は、これらの出力値のうち、一方又は両方が無効値 0以外の場合には、その値を固有アドレス Aとして出力する。両方とも無効値 0の場合 には、無効値 0を出力する。
[0121] 尚、図 4においては、ハッシュ回路 2,仮アドレス生成器 3,データ再生器 4,及び固 有アドレス検出器 5により、主アドレス生成器 8が構成される。
[0122] 図 5は、図 4のアドレス生成器 1の具体的なハードウェア構成を表すブロック図であ る。図 4と対応するものには同一符号を付している。図 5においては、仮アドレス生成 器 3は、ハッシュ 'メモリ 3 'によって構成されている。データ再生器 4は、補助メモリ 4 ' により構成されている。固有アドレス検出器 5は、比較回路 10及び AND回路 1 1によ り構成されている。副アドレス生成器 6は、 LUTカスケード 6 'により構成されている。 また、出力合成器 7は、 OR回路 7 'により構成されている。
[0123] ノ、ッシュ 'メモリ 3,は書き換え可能メモリにより構成される。ハッシュ 'メモリ 3,には、 式(2a)又は式(2b)に示した仮アドレス生成関数 h' (Y )が LUTとして記憶されてい
1
る。
[0124] 補助メモリ 4 'は書き換え可能メモリにより構成される。補助メモリ 4 'には、アドレス生 成関数 fの逆関数であるデータ再生関数 Γ1が LUTとして記憶されている。
[0125] LUTカスケード 6 'は、図 2のように複数の信号線(レイル)によってカスケード接続さ れた複数の書き換え可能メモリ(セル)により構成される。 LUTカスケード 6 'には、副 アドレス生成関数 f (X)が LUTカスケードとして構成されている。尚、本実施例にお
2
いては、副アドレス生成器 6は、 LUTカスケード 6 'に限られるものではなぐ例えば、 論理ゲートの組み合わせや再構成可能 PLA等の他の再構成可能論理回路により構 成してもよい。
[0126] 〔2〕アドレス生成器の動作
まず、アドレス生成器 1に n次元ベクトルの入力ベクトル Xが入力される。ハッシュ回 路 2は、所定のハッシュ関数に従って入力ベクトル X= (X , X )を (Υ , X )に一次変 換し、アドレス空間をハッシュ化する。ここで、 (X , X )は Xの分割であり、 Xは束縛
1 2 1 変数、 Xは自由変数である。ベクトル Xの変数の個数を d(X)と記す。 d(X)=n, d(X
2
) =d(Y )=p, d(X ) =r=n_pとする。また、 qは式(3)で表される。
1 1 2
[0127] ハッシュ回路 2において生成されたハッシュ化された束縛変数 Y1は、ハッシュ 'メモ リ 3'に入力される。
[0128] ここで、ハッシュ関数は、アドレス生成関数 fに適応してあらかじめハッシュ回路 2に 設定されている。このハッシュ関数の生成方法に関しては、後述する。
[0129] ノ、ッシュ化した後のアドレス生成関数を Γ (Υ , X )と記す。関数 Γ (Υ , X )の分解
1 2 1 2 表は、図 3に示したようなものとなる。ハッシュ回路 2でのハッシュ化によって、分解表 における非零要素は分散される。また、アドレス生成関数 fの重み kは、 2nに比べて十 分に小さいものとし、束縛変数 Xの個数 pは、 2Pが kよりも大きいものとする。ハッシュ 化により、非零要素が均等に分散されると、図 3の分解表の殆どの列は、高々 1個の 非零要素を持つ。
[0130] ノ、ッシュ 'メモリ 3'は、束縛変数 Yに基づき、式(2a)又は式(2b)で定義される仮ァ
1
ドレス生成関数 (Y )により仮アドレス A'を生成する。ここで、 d(A') =qである。尚 、 Yの値のみで、 Aの値を予測しているので、 A, =h' (Y )は正しい値 Α=Γ (Υ , X
1 1 1
)とは異なる値をとる場合がある。
2
[0131] 仮アドレス A'は、補助メモリ 4'及び AND回路 11に入力される。
[0132] 補助メモリ 4'は、仮アドレス A'に対応する再生ベクトル ,,ニ厂 八')を生成する。
比較回路 10には、再生ベクトル X"ともとの入力べクトノレ Xとが入力される。
[0133] 比較回路 10は、両者を比較し、両者が一致する場合には 1、それ以外は 0を、 AN D回路 11に出力する。 AND回路 11は、比較回路 10の出力値と仮アドレス A'の各 ビットとの AND演算を行う。この演算結果は、〇R回路 7'に出力される。
[0134] これにより、仮アドレス A,が Xに対する正しい固有アドレス Aと等しい場合には、 AN D回路 11から〇R回路 7'へ仮アドレス A'が出力され、それ以外の場合は無効値 0が 出力される。すなわち、 AND回路 11の出力値は、ハッシュ化後のアドレス生成関数 f "(Y, X )の分解表において、非零要素が 2個以上存在する列について最小の非零
1 2
要素以外のものを 0に置き換えた関数となる。以下、この関数を主アドレス生成関数( master address generation function)と呼び、 f (Y , X )と目己す。
1 1 2
[0135] 一方、入力ベクトル Xは、 LUTカスケード 6'にも入力される。 LUTカスケード 6,に おいては、副アドレス生成関数(slave address generation function) f (X, X )の演
2 1 2 算を LUTカスケードにより行レ、、その結果を副アドレス A"として〇R回路 7'に出力す る。
[0136] 尚、副アドレス生成関数 f (X , X )は、上述のようにハッシュ化後のアドレス生成関
2 1 2
数を Γ(Υ, X )を式(5)のように関数分解し、 f "(Υ , X )の変数 Yをハッシュ関数
1 2 2 1 2 1
の逆関数によって Xに変換することによって得られる。
[0137] [数 17]
Figure imgf000028_0001
従って、ハッシュ化された副アドレス生成関数 f ' (Y, X )は、主アドレス生成関数 f
2 1 2 1
'(Υ , X )が決まれば、一意的に次式 (6)により求まる。
2
Figure imgf000028_0002
f {Y = { (6)
10 (otherwise!.
[0139] 尚、具体的な副アドレス生成関数 f (X, X )の構成方法に関しては後述する。
2 1 2
[0140] 主アドレス生成関数 f ' (Υ , X )と副アドレス生成関数 f (X , X )は、アドレス生成
1 1 2 2 1 2
関数 f(X, X )に対して相補的である。すなわち、式 (5)より、
1 2
[0141] [数 19]
/(Χ,,,Χ^ = h(Y X2) f2(X1:X ) (7) となる。そこで、〇R回路 7'は、 AND回路 11の出力値 f "(Y, X )と LUTカスケード
1 1 2
6'の出力値 f (X , X )との〇R演算を行うことによって、アドレス生成関数 f(X, X )
2 1 2 1 2 の値を算出する。
[0142] 〔3〕ハッシュ関数の構成方法
ハッシュ回路 2において、束縛変数 Xをハッシュ化するハッシュ関数は、アドレス生
1
成関数 fの分解表における非零要素を一様に分布させるものであれば、どのような関 数でも利用することができる。ここでは、実現の容易さを考慮して、一例として、次の ノ、ッシュ関数を用いる。
[0143] ほ女 20]
Figure imgf000029_0001
(8)
[0144] 〔3 _1〕ハッシュ関数の生成アルゴリズム
アドレス生成関数 f (X , X )において、束縛変数を X = (X
1 2 1 1, X
2,…, X )、 自由変 p 数を X = (x , X ,…, X )とする。束縛変数 Xを Y = (y , y ,…, y )に置換し
2 p+1 p+2 n 1 1 1 2 p た関数を Γ(Υ, X )とする。関数 Γ(Υ
1, X )の分解表の列中で、非零要素を含む列
1 2 2
の個数を Wとする。ハッシュ 'メモリ 3'に多くのアドレスを格納するためには、 Wを最大 化するような Υを選択すればよい。 Υは、種々の公知のアルゴリズム(非線形計画法 や発見的アルゴリズム)を用いて選択すればょレ、。
[0145] 〔アルゴリズム 1〕
Xの各要素 X (i=l, 2,■··, p)に対して、
[0146] [数 21]
Vi = Xi Φ Xj. としたとき、 wが最大となる x '≡ {Χ }を選択する。この操作を wが増加しなくなるまで ϋ 2
繰り返す。
(アルゴリズム終わり)
[0147] このようにして求めた X = (X , X , ···, X )によりハッシュ関数を構成する。
j jl j2 jp
[0148] 〔3— 2〕ハッシュ関数の実現法
重み kのアドレス生成関数 f (X , X )において、束縛変数 X = (X , X , ···, X )を
1 2 1 1 2 p
[0149] [数 22]
U/i ® ,¾Φ ,...,ί/ρ®:¾,) (9) で置き換えて得られる関数を Γ (Υ , X )とする。ここで、束縛変数の個数 ρは次式(1
1 2
0)の条件を満たすものとする。
[0150] [数 23]
Ρ≥「log2 ( + 1)1 (10) [0151] p次元の 2値ベクトル a(EY )に対して r(a, X )の非零出力値が 2個以上ある場合
1 2
、 Γ (a, X )の最小の非零出力値以外の値を 0に置き換えた関数を主アドレス生成関
2
数 f '(Y, X )とする。主アドレス生成関数 f "(Y, X )は次式(11)で表される。
1 1 2 1 1 2
[0152] ほ女 24]
., , ί{Υι. 2· ) (if/(rJ; 2) := mm f{Y b))
(11) 次に、関数 f '(Υ , X )を式(6)により求める。このとき、式(7)の関係が成り立つ。
2 1 2
[0153] 主アドレス生成関数 f '(Υ , X )の分解表の各列において、非零出力値は高々 1
1 1 2
個しか存在しない。次に、次式(12)で定義される関数 h'(Y )をハッシュ 'メモリ 3'で 実現する。
[0154] [数 25]
Figure imgf000030_0001
[0155] 但し、関数 IT (Y )の値は主アドレス生成関数 f " (Υ , X )の値と異なってレ、る可能
1 1 1 2
性があるので、補助メモリ 4'を用いて出力値が正しいか確認する。また、関数 f "(Y
2 1
, X )から次式(13)の置換を行って副アドレス生成関数 f (Y, X )を生成する。副ァ
2 2 1 2
ドレス生成関数 f (Y, X )は、 LUTカスケード 6'で実現される。
2 1 2
[0156] ほ女 26]
Xi = yi ® xk (13)
[0157] (例 5)
重みが k = 7の 6変数のアドレス生成関数 f(X , X )の分解表を (表 4)に示す。この
1 2
関数で束縛変数 X = (X , X , X )を次式(14)のように Yに置換し、ハッシュ化した
1 1 2 3 1
関数 Γ (Y, X )の分解表を (表 5)に示す。
1 2
[0158] ほ女 27]
Y% = {yi,y2,ify) '= (xi Θ^,α^θ^δ,^θ ^) (14)
[0159] ノ、ッシュ化した関数では、元の関数の列が入れ替わつている。また、入れ替えの方 法は、行ごとに異なっている。元の関数では、 (X , X , X ) = (0, 0, 0), (0, 1, 0),
1 2 3 (0, 0, 1)の列に非零要素が 2個存在する。一方、(表 5)に示すハッシュ化後の関数 Γ (Χ, X )では、 (y , y, y ) = (0, 1 , 0)の列にのみ、非零要素が 2個存在する。
1 2 1 2 3
そのうち、大きい方の非零要素の 4を 0に置き換えた関数 f " (Y, X )の分解表を (表
1 1 2
6)に示す。また、 (表 7)に LUTカスケード 6 'で実現すべき関数 f " (Υ , X )の分解
2 1 2 表を示す。この例の場合、わずか 1個の非零要素しかない。残りの関数は、(表 8)に 示すハッシュ 'メモリ 3,と(表 9)の補助メモリ 4,で実現する。ハッシュ 'メモリ 3,の出力 h" (Y )は、(y , y , y )のみの値を用いて、関数 f 'の値を予測しており、 f 'とは異
1 1 2 3 1 1 なっている可能性がある。そのため、(表 9)に示す補助メモリ 4'を用いて、その出力 が正しいか否かを検証する。 LUTカスケード 6 'で実現すべき関数は、非零出力値 4 をとる。その入力時の組み合わせは(X , X , X , X , X , X ) = (0, 0, 1, 0, 1 , 1)で
1 2 3 4 5 6
ある。
[0160] 図 6に、本方式で、関数 fを実現する回路の全体図を示す。 LUTカスケード 6 'の部 分は、 ANDゲートのカスケードで実現している。また、非零出力は 4である力 2進表 現では(1 , 0, 0)であるので、 OR回路 7'においては、 AND回路 11の出力ビットのう ち、最上位の出力ビットのみ、カスケードの出力との ORをとつている。
(例終わり)
[0161] [表 4] 表4: 関数/ ( 1 : 2)の分解表
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
000 0 0 0 0 0 0 0 0
001 0 0 0 0 0 0 0 0
010 1 0 2 ϋ 3 0 0 0
011 0 0 0 0 4 0 0 0
100 0 0 0 0 0 0 ϋ 0
101 0 0 0 0 0 0 0 0
110 0 0 0 0 0 0 0 6
111 0 0 7 0 0 0 0 0
X6X5X4
[0162] [表 5] 表 5: ハッシュ化後の関数 /( X2)の分解表
0 0 0 0 1 1 1 1 yz
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
000 0 0 0 0 0 0 0 0
001 () 0 0 0 0 0 0 0
010 2 0 1 0 0 0 3 0
011 0 0 4 0 0 0 0 0
100 0 5 0 0 0 0 0 0
101 0 0 0 0 0 0 0 0
110 () 0 0 0 6 0 0 0
111 () 0 0 0 0 7 0 0 a¾:i¾: '4:
[0163] [表 6]
表 6: 関数 )の分解表
0 0 0 0 1 1 1 1 '!:
0 0 1 1 0 0 1 1 V2
0 1 0 1 0 1 0 1 yi ϋϋϋ ϋ ο ϋ 0 ϋ ϋ ο ϋ
001 0 0 0 0 ο 0 0 ϋ
010 2 0 1 0 0 0 3 ο
011 0 ο 0 0 ϋ ϋ 0 0
100 0 5 0 0 0 0 0 0
101 ϋ 0 0 0 ϋ ο 0 ϋ
110 0 0 (} 0 6 0 0 0
111 ϋ 0 0 0 ϋ 7 0 ϋ
[0164] [表 7] 0 0 0 0 1 1 1 1
0 o 1 1 0 0 1 1 V2
0 1 0 1 ϋ 1 0 1
000 ϋ 0 ο ο ϋ 0 0 ϋ
001 0 0 0 0 0 0 0 0
010 0 0 0 0 0 0 0 0
on 0 0 4 0 0 0 0 0
100 0 0 0 0 0 0 0 0
101 0 0 0 0 ο 0 0 ϋ
110 0 0 0 0 0 0 0 0
111 ϋ 0 ϋ ϋ ϋ 0 0 ϋ
; ϊ¾ίί¾ίϊ;4
[0165] [表 8コ
表 8: ハッシュメモリで実現する関数 ( )
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
y、. 0 1 0 1 0 1 0 1
2 0 1 0 6 7 3 0
[0166] [表 9コ
表 9:補助メモリの内容
1 Z'iZi' £ ' '2 ¾3 ¾4 :c5
000 0 0 0 0 0 0
001 0 0 0 ϋ 1 0
010 0 1 0 0 1 0
Oil 0 0 1 ϋ 1 0
100 0 0 0 0 0 0
101 0 0 0 ϋ ϋ 1
110 1 1 1 0 1 1
111 0 1 0 1 1 1 尚、ハッシュ関数として式(8)を用いた場合、補助メモリ 4'の Xの部分の出力及び
1
比較回路 10での Xとの比較部分は省略することができる。理由は、以下の通りであ
1
る。 [0168] ノ、ッシュ 'メモリ 3,で実現する関数は、 IT (Y^である。この出力値で、補助メモリ 4 ' の値を参照するが、ハッシュ化したアドレス生成関数 Γの分解表では、元のアドレス 生成関数 fの分解表で行の要素が置換されている。従って、ハッシュ 'メモリ 3 'の出力 値が正しいことを確認するためには、 Xの値を調べれば十分である。つまり、補助メ
2
モリ 4 'の出力値と Xの値が一致すれば、式(8)の関係より、 Xの値も一致することが
2 1
保証される。従って、ハッシュ 'メモリ 3 'の出力が正しいことが分かる。また、一致しな ければ比較回路 10の出力値は 0である。
[0169] 例えば、図 6の回路の場合、補助メモリ 4 'の出力は、(X , X , X )があれば十分で
4 5 6
あり、比較回路 10の入力も(X , X , X )は省略可能である。
1 2 3
[0170] 〔4〕ハッシュ 'メモリで実現可能な登録ベクトルの割合
次に、本発明に係るアドレス生成器において、回路規模をどの程度小さくすること が可能であるかを評価するため、仮アドレス生成器 3 (ハッシュ 'メモリ 3 ' )で実現可能 な登録ベクトルの割合を評価する。
まず、仮アドレス生成器 3で実現可能な登録ベクトルの割合に関しては、次の定理 が成り立つ。
[0171] 〔定理 4〕
fを重み kの n入力アドレス生成関数とし、非零要素が分解表中に一様に分布してレ、 ると仮定する。このとき、図 4における仮アドレス生成器 3で実現可能なアドレスの割 合 δは、次式 ()で表される。ここで、 Ρ = I Υ I は Γ (Υ, X )の分解表の束縛変数
1 1 2
の個数である。
[0172] ほ女 28] 1 ( )
(定理終わり)
[0173] (証明)
kは分解表中の非零要素の総数を示す。 α =k/2nは、分解表中での非零要素の 割合を示す。 ;3 = 1— αは、分解表中での零要素の割合を示す。 r=n— ρ= | X |
2 は、 Γ (Υ , X )の分解表の自由変数の個数を表す。このとき、ある列の要素がすべ て 0となる確率 P、及びある列の要素中に少なくとも 1つの非零要素が含まれる確率
0
Pは、次式(16) , (17)により表される。
1
[0174] ほ 9]
H)一 β2'. (16) ί一
P ^ l - if' (17) 一
全体では 2P個の列が存 12 1在し、非零要素数は kである。非零要素が 2個以上ある列に 関しては、仮アドレス生成器 3で 1個だけ非零要素を実現すると仮定すると、仮ァドレ ス生成器 3で表現可能なアドレスの割合 δは、式(18)により表される。
[0175] [数 30]
6 = (1 - 0 '') - (18) k
二 (1— (1—ひ)2' ) .
' 2
二: ( / ) *—-
Figure imgf000035_0001
ん : ( (― i)" , J tf) また、 s = n_qとおくと、関ィ系 r = n_pより、 r_ s = q_pとなる。 s >rである力ら、上 式の各項の絶対値は、 iの増加とともに減少する。次に、 δを式(18)の右辺最後の式 の第 3項までを用いて近似すると、式(19)で表される。
[0176] [数 31]
Figure imgf000035_0002
2P
(証明終わり)
[0177] 例えば、 k/2P= 1/4とすると、 δ =0. 8854となる。また、 lZ4≤k/2P≤l/2 の領域では、 δは、 kZ2Pの単調減少関数となる。
[0178] (例 6)
n=40, k= 1730の場合を考える。このとき、 [0179] ほ女 32] q 「log2( l)] == Γΐο&(173ϋ+ 1)] 11 であるから、束縛変数の変数の個数を ρ= 13とする。
[0180] (l)LUTカスケードのみで実現した場合
セルの入力数を p = 13とすると、カスケードの段数は、(定理 2)より、
[0181] ほ女 33]
n― q1 「40― 11, 「29Ί , セル 1個当たりのメモリ量は、 2PXq = 2 Xllbits。従って、総メモリ量は、 2 X11
X15 = l, 351, 680bitsとなる。
[0182] (2)本発明のアドレス生成器 1で実現した場合
s = n-q = 40-ll = 29, r = n_p = 40_13 = 27である力ら、(定理 4)の近似式 の仮定は成立する。 (定理 4)より、
[0183] ほ女 34]
Figure imgf000036_0001
となる。ハッシュ 'メモリ 3,は、 p=13入力 q=ll出力、補助メモリ 4'は、 q=ll入力 n =40出力。 LUTカスケード 6,は、重みが 1730 X (1-0. 901) = 170のアドレス生 成関数を実現する。このとき、 LUTカスケードのセルの出力数は、
[0184] [数 35]
「1ο¾(170+ 1)1 - 8 となる。セルの入力数を 10とすると、実現すべき LUTカスケードの段数は、
[0185] [数 36]
•η - αΊ 「40— 8, Γ32Ί
^1 = ίΪ0^8Ι = [ 1 = 16
となる。最終段以外のセル 1個当たりのメモリ量は、高々 21QX8bits。最終段のセルの メモリ量は、高々 210Xllbits。カスケードの総メモリ量は、 Ζ^ΧδΧΙδ + ζ χΐΙ: 134, 144bits0 ノヽッシュ 'メモリ 3,の容量 ίま、 2 X l l = 901112bitsoネ膚助メモリ 4' の容量は、 211 X 40 = 81920bitsとなる。従って、 ϋメモリ量は、 306, 176bitsとなる 従って、この例の場合、本発明のアドレス生成器 1を使用した方が、 LUTカスケード のみでアドレス生成関数を構成するよりも総メモリ量は少なくてよい。
(例終わり)
[0186] 〔5〕実験結果
アドレス生成回路 1の応用例として、頻繁に使用する英単語を表にしたものを考え る。ここでは、ベンチマークとして 3種類の単語表(単語表 1 ,単語表 2,単語表 3)を 用いた。単語帳中の単語の文字数は、最大 13文字である力 最初の 8文字のみを取 り扱う。また、 8文字より短い単語は、最後に空白を追加して 8文字とした。各英文字を 5ビットで表現すると、各英単語は 40ビットで表現することができる。また、単語表 1, 単語表 2,単語表 3の中の単語数は、それぞれ、 1730語, 3366語, 4705語である 。各表において、各単語に固有のインデックス(自然数)を付加する。このとき、単語 のインデックスは、それぞれ、 l lbits, 12bits, 13bitsとなる。
[0187] 次に、ハッシュ関数を生成する。ハッシュ関数の入力数は、(単語帳のインデックス のビット数) + 2とする。単語表 1の場合、単語数は k= 1730、インデックスのビット数 は
[0188] ほ女 37] :: ::: [log2(l 1 k)) 二 log2(l 1730)] :::: 11 (21) 束縛変数の個数は、 p = q + 2 = 130分解表の列の個数は 2P= 213 = 8192。非零要 素を 1個含む列の数は 1389。非零要素を 2個以上含む列の数は、 165。 ノ、ッシュ 'メ モリ 3'で実現不可能な登録べクトノレ数は、 176である。つまり、全単語の 90%がハツ シュ'メモリ 3 'で実現可能であり、残りの 10%を LUTカスケードで実現する必要があ る。実験結果を (表 10)に示す。
[0189] [表 10] 表 1ϋ: 英単語表の実現
Figure imgf000038_0001
[0190] 次に、疑似乱数を用いて同等のアドレス生成関数を実現した場合(100個の平均) の実験結果を (表 11)に示す。この場合、非零要素を 1個含む列の数は 1398. 4、非 零要素を 2個以上含む列の数は 160. 0、ハッシュ 'メモリ 3'で実現可能な登録べタト ル数は 171. 6であった。同様の実験を単語帳 2, 3に関しても行った。
[0191] [表 11]
表 11:擬似乱数で生成したァドレス生成関数の実現
Figure imgf000038_0002
[0192] 実際の単語表の結果、及び疑似乱数で生成したアドレス生成関数に対する結果は 、(定理 4)で理論的に求めた結果と大差はない。従って、上記(アルゴリズム 1)を用 レ、て生成したハッシュ関数は、非零要素をランダムに分布させる関数として、有効で あることが分かる。
[0193] また、必要メモリ量を比較した結果を (表 12)に示す。 (表 12)から明らかなように、 必要な総メモリ量は、 1つの LUTカスケードで実現する場合に比べて、大幅に少ない
[0194] [表 12] 表 12: メモリ量の比較(英単語帳)
Figure imgf000039_0001
実施例 2
[0195] 本実施例では、主アドレス生成器が 2個の場合 (スーパー 'ハイブリッド法)について 説明する。
[0196] 図 7は、本発明の実施例 1に係るアドレス生成器のハードウェア構成を表すブロック 図である。図 7において、図 5と同様の構成部分については同一の符号が付してある
[0197] 図 5と比較すると、実施例 1のアドレス生成器 1は主アドレス生成器 8が 1つであった のに対し、本実施例のアドレス生成器 1 'は主アドレス生成器 8, 8 'を 2つ備えている 点で異なる。
[0198] 主アドレス生成器 8では、入力ベクトル Xに対する分割(X , X )について、主ァドレ
1 2
ス生成関数 Γ (Y , X )の演算を行う。ここで、 Yは Xをハッシュ化したベクトノレであ
1 1 2 1 1
り、式 (8)と同様に計算される。また、主アドレス生成器 8'では、入力ベクトル Xに対 する分割 (X ', X ' )について、主アドレス生成関数 Γ ' (Y ' , X ' )の演算を行う。こ
1 2 1 1 2
こで、 Y 'は X 'をハッシュ化したベクトノレであり、式(8)と同様に計算される。
[0199] ここで、分割 (X
1, X )と分割 (X '
2 1, X ' )とは異なる分割とする。具体的には、最適
2
な分割 (X ' , X ' )については次のような手順により決定すればよい。
1 2
[0200] (1)アドレス生成関数 fに対して、
(1 1)第 1のハッシュメモリの入力数は(q+ 1) , 出力数は q、第 1の補助メモリの入 力数は q,出力数は (n_q_l)となるように、変数を順に分割する。
(1— 2)なるベぐ分解表の非零要素が分散するようにハッシュ関数を求める。この 構成で実現された固有アドレスが表現する関数を Γ とする (ランダム関数の場合は
11
元の固有アドレスの約 80%が表現できる)。
(2)上記操作で実現されない固有アドレスが表現する関数、つまり f一 Γ に対して、
11
(2— 1)第 2のハッシュメモリの入力数は(q_l), 出力数は(q_2)、第 2の補助メモ リの入力数は (q_ 2),出力数は (n_q + 2)となるように、変数を順に分割する。
(2— 2)なるベぐ分解表の非零要素が分散するようにハッシュ関数を求める。この 構成で実現された固有アドレスが表現する関数を Γ とする(ランダム関数の場合は
12
元の固有アドレスの約 16%が表現できる)。
(3)上記何れの操作でも実現されない固有アドレスが表現する関数に対しては、 LU Tカスケード又は再構成可能 PLAなどの方法で実現する。
[0201] このように、主アドレス生成器 8, 8'を 2つ備えたことで、実施例 1の場合に比べると 、主アドレス生成器 8, 8' により固有アドレスが決定される登録ベクトルの割合が多く なる。したがって、副アドレス生成関数 Γ (X , X )により固有アドレスが決定される登
2 1 2
録ベクトルの数は少なくなるため、副アドレス生成器 6 (再構成可能 PLA 6")の回路 規模をより小さくすることが可能となる。
[0202] (例 7)
重み k=1730で変数の数が n = 40のアドレス生成関数 f (X)を、図 7のアドレス生 成器 1'を用いて実現する場合を考える。尚、比較のため、図 5のアドレス生成器 1に ついても考察する。
この場合、
[0203] ほ女 38] q = [log2 ( + 1)] = log2(l + 1730)] ■= H (22) である。
[0204] 〔再構成可能 PLA〕
再構成可能 PLA 6"を実現する方法としては、種々の方法がある力 ここでは、入 力ベクトルの各ビットの値を記憶するレジスタと ANDゲートを使用したレジスタ -ゲート 'アプローチ(register and gates a卯 roach)を採用する。図 8は、レジスタとゲートを用 いた再構成可能 PLA 6"の構成を表す図である。図 8において、再構成可能 PLA 6 "は、 n個のレジスタ 15、 n個の EXNORゲート 16、及び 1個の ANDゲート 17により構 成されている。
[0205] このアプローチでは、ど - - 221のような幅のワードであっても構成することができ、高速に再 構成することが可能である。入力数を n、出力数を q、実現すべきアドレス生成関数の 重みを kとすると、図 8の再構成可能 PLA 6"を FPGAで構成する場合に必要な LR ( Logic Element)の数は、
[0206] [数 39]
Figure imgf000041_0002
となる。
[0207] この例では、再構成可能 PLA 6"において実現すべき登録ベクトルの数は 1730で ある。従って、式(23)より、再構成可能 PLA 6"を実装するのに必要な LE数は、 84 , 478となる。
[0208] 〔ハイブリッド法〕
仮アドレス生成器 3で表現可能なアドレスの割合 δは、式(19)より、
[0209] ほ女 40]
Figure imgf000041_0001
となる。図 5のハッシュ 'メモリ 3 'の入力数は ρ= 13、出力数は q= l lである。補助メモ リ 4,の入力数は q= l l、出力数は r=n—p = 27である。ハッシュ 'メモリ 3 'のサイズ は 213 X I I = 90, 112 (bits)である。補助メモリ 4,のサイズは 2^ X 27 = 55, 297 (bit s)である。故に、メモリ'サイズの総量は、 145, 408 (bits)である。再構成可能 PLA 6"で実現される登録ベクトルの数は 173である。 [0210] 〔スーパー 'ハイブリッド法〕
仮アドレス生成器 3により表現可能なアドレスの割合 δは、式(19)より、 [0211] ほ女 41]
Figure imgf000042_0001
となる。図 7の第 1のハッシュ 'メモリ 3'の入力数は ρ =12、出力数は q =11である。
1 1
第 1の補助メモリ 4,の入力数は q =11、出力数は r =n— p =27である。第 2のハツ
1 1 1
シュ'メモリ 3,の入力数は p =10、出力数は q =9である。第 2の補助メモリ 4,の入
2 2
力数は q =9、出力数は r =n-p =30である。
2 2 2
[0212] 第 1のハッシュ 'メモリ 3,のサイズは、 212X 11=45, 056 (bits)、第 1の補助メモリ 4
'のサイズは 2"X 28 = 57, 344 (bits)、第 2のハッシュ 'メモリ 3,のサイズは、 210X9 =9, 216(bits)、第 2のネ甫助メモリ 4'のサイズ fま 29X30 = 15, 360 (bits)である。故 に、メモリ ·サイズの総量は、 126, 976(bits)である。再構成可能 PLA 6"で実現さ れる登録ベクトルの数は 43である。従って、この例では、スーパ一'ハイブリッド法の 方がハードウェア量をより少なくすることができる。
(例終わり)

Claims

請求の範囲
入力される 2値ベクトル (以下「入力ベクトル」という。)Xに対し、当該入力ベクトル X が登録ベクトルの場合にはそれに対応する固有アドレス Aを出力し、それ以外の場 合には無効値を出力するアドレス生成関数 f (X)の演算を行うアドレス生成器であつ て、
A. 1乃至複数個設けられ、前記入力ベクトル Xが前記登録ベクトル集合の所定の 部分集合に属す場合にはそれに対応する固有アドレス Aを出力し、それ以外の場合 には無効値を出力する主アドレス生成器と、
B.すべての前記主アドレス生成器の出力が無効値となり且つ前記登録ベクトル集 合に属す前記入力ベクトル Xに対しては、対応する固有アドレス Aを出力し、それ以 外には無効値又は入力ベクトル Xに対応する固有アドレス Aを出力する副アドレス生 成関数 f (X)の演算を行う副アドレス生成器と、
2
C.主アドレス生成器又は副アドレス生成器の出力値が無効値以外であればその 値を固有アドレス Aとして出力し、それ以外の場合は無効値を出力する出力合成器と を備え、
前記各主アドレス生成器は、
a.前記入力ベクトル Xの所定の分割 (X , X ) (iは各主アドレス生成器を識別する
li 2i
インデックス)に対し束縛変数 X をハッシュ化し、ハッシュ化された束縛変数 Y を出
li li 力するハッシュ回路と、
b.前記束縛変数 Y に対する割り当てに対し、前記固有アドレス Aが一対一対応す
li
る場合 (ハッシュ衝突が生じない場合)には当該固有アドレス Aを仮アドレス A'として 出力し、それ以外の場合 (ハッシュ衝突が生じる場合)には任意の値又は対応する固 有アドレス Aの何れか一つを仮アドレス A'として出力する仮アドレス生成器と、
c アドレス生成関数 f (X)の逆関数であるデータ再生関数 Γ1 (A)の演算を行う演 算器であって、前記仮アドレス生成器が出力する仮アドレス A'が入力されると、それ に対応する再生ベクトル X" = f_ 1 (Α' )を出力するデータ再生器と、
d.前記再生ベクトル X"と前記入力ベクトル Xとを比較し、両者が一致する場合には 前記仮アドレス A'を出力し、それ以外の場合には無効値を出力する固有アドレス検 出器と、
を備えたことを特徴とするアドレス生成器。
[2] 前記副アドレス生成器は、すべての前記主アドレス生成器において前記ハッシュ化 された束縛変数 Y がハッシュ衝突を生じる入力ベクトル Xに対しては、当該入力べク
li
トル Xに対応する前記固有アドレス Aを出力し、それ以外の場合には無効値を出力 するものであることを特徴とする請求項 1記載のアドレス生成器。
[3] 前記仮アドレス生成器は、前記ハッシュ化された束縛変数 Yにおいてハッシュ衝突 が生じない場合には、当該束縛変数 Yに対応する固有アドレス Aを前記仮アドレス
1
A'として出力する仮アドレス生成関数力 ルックアップ ·テーブル (LUT)として格納 されたハッシュ 'メモリであることを特徴とする請求項 1記載のアドレス生成器。
[4] 前記データ再生器は、前記データ再生関数 Γ1 (A)が、 LUTとして格納された補助 メモリであることを特徴とする請求項 1記載のアドレス生成器。
[5] 前記副アドレス生成器は、カスケード状に接続された複数の部分関数メモリを備え た LUTカスケード論理回路により構成されており、
前記各部分関数メモリには、前記副アドレス生成関数 f (X)を関数分解して得られ
2
る複数の部分関数が LUTとして格納されていることを特徴とする請求項 1記載のアド レス生成器。
PCT/JP2007/056497 2006-03-31 2007-03-27 アドレス生成器 WO2007119539A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/294,791 US8285922B2 (en) 2006-03-31 2007-03-27 Address generator using LUT cascade logic network
JP2008510866A JP4892693B2 (ja) 2006-03-31 2007-03-27 アドレス生成器

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006101104 2006-03-31
JP2006-101104 2006-03-31

Publications (1)

Publication Number Publication Date
WO2007119539A1 true WO2007119539A1 (ja) 2007-10-25

Family

ID=38609317

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2007/056497 WO2007119539A1 (ja) 2006-03-31 2007-03-27 アドレス生成器

Country Status (3)

Country Link
US (1) US8285922B2 (ja)
JP (1) JP4892693B2 (ja)
WO (1) WO2007119539A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016027829A1 (ja) * 2014-08-21 2016-02-25 学校法人明治大学 連想記憶装置、インデックス生成器、及び登録情報更新方法
JP2016533072A (ja) * 2013-07-16 2016-10-20 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. Hdr画像のための汎用コードマッピングのためのeotf関数を生成するための方法及び装置、並びにこれらの画像を用いる方法及び処理

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495157B2 (en) 2007-03-07 2013-07-23 International Business Machines Corporation Method and apparatus for distributed policy-based management and computed relevance messaging with remote attributes
US20100332640A1 (en) * 2007-03-07 2010-12-30 Dennis Sidney Goodrow Method and apparatus for unified view
WO2008109848A2 (en) 2007-03-07 2008-09-12 Bigfix, Inc. Pseudo-agent
GB2463414B (en) * 2007-07-03 2012-03-14 Fujitsu Ltd Relay apparatus and data control method
US8966110B2 (en) 2009-09-14 2015-02-24 International Business Machines Corporation Dynamic bandwidth throttling
US9690488B2 (en) * 2015-10-19 2017-06-27 Intel Corporation Data compression using accelerator with multiple search engines

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6476320A (en) * 1987-09-18 1989-03-22 Fujitsu Ltd Registration/retrieval control system for memory table
JP2004229163A (ja) * 2003-01-27 2004-08-12 Internatl Business Mach Corp <Ibm> 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3744075A1 (de) * 1987-12-24 1989-07-13 Licentia Gmbh Verfahren zur entzerrung von dispersiven, linearen oder naeherungsweise linearen kanaelen zur uebertragung von digitalen signalen sowie anordnung zum ausfuehren des verfahrens
US6493793B1 (en) * 2000-06-16 2002-12-10 Netlogic Microsystems, Inc. Content addressable memory device having selective cascade logic and method for selectively combining match information in a CAM device
US8112578B2 (en) * 2001-11-01 2012-02-07 Micron Technology, Inc. Low power, hash-content addressable memory architecture
JP2004258799A (ja) 2003-02-24 2004-09-16 Kitakyushu Foundation For The Advancement Of Industry Science & Technology ルックアップテーブル・カスケード論理回路
JP2004295967A (ja) 2003-03-26 2004-10-21 Kawasaki Microelectronics Kk 連想メモリ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6476320A (en) * 1987-09-18 1989-03-22 Fujitsu Ltd Registration/retrieval control system for memory table
JP2004229163A (ja) * 2003-01-27 2004-08-12 Internatl Business Mach Corp <Ibm> 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HUI QIN, TSUTOMU SASAO, BUTLER J.T.: "Implementation of LPM address generators on FPGAs", RECONFIGURABLE COMPUTING: ARCHITECTURES AND APPLICATIONS. SECOND INTERNATIONAL WORKSHOP, ARC2006. (LECTURE NOTES IN COMPUTER SCIENCE), vol. 3985, 3 March 2006 (2006-03-03), pages 170 - 181, XP019037601 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016533072A (ja) * 2013-07-16 2016-10-20 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. Hdr画像のための汎用コードマッピングのためのeotf関数を生成するための方法及び装置、並びにこれらの画像を用いる方法及び処理
WO2016027829A1 (ja) * 2014-08-21 2016-02-25 学校法人明治大学 連想記憶装置、インデックス生成器、及び登録情報更新方法
JPWO2016027829A1 (ja) * 2014-08-21 2017-04-27 学校法人明治大学 連想記憶装置、インデックス生成器、及び登録情報更新方法
US9865350B2 (en) 2014-08-21 2018-01-09 Meiji University Content addressable memory, an index generator, and a registered information update method

Also Published As

Publication number Publication date
JP4892693B2 (ja) 2012-03-07
JPWO2007119539A1 (ja) 2009-08-27
US20100228947A1 (en) 2010-09-09
US8285922B2 (en) 2012-10-09

Similar Documents

Publication Publication Date Title
WO2007119539A1 (ja) アドレス生成器
CA3034597C (en) A homomorphic processing unit (hpu) for accelerating secure computations under homomorphic encryption
Ullah et al. Z-TCAM: an SRAM-based architecture for TCAM
US9342462B2 (en) Systems and methods for implementing low-latency lookup circuits using sparse hash functions
Ullah et al. UE-TCAM: an ultra efficient SRAM-based TCAM
TW202127238A (zh) 可重組態架構的編譯器流程邏輯
Sharmin et al. Design of a compact reversible random access memory
Wille et al. Effect of BDD optimization on synthesis of reversible and quantum logic
JP2012074051A (ja) 任意のアルゴリズムを並列計算するための再構成可能な論理回路装置
Pang et al. Positive Davio-based synthesis algorithm for reversible logic
Xu et al. The stochastic loss of spikes in spiking neural P systems: Design and implementation of reliable arithmetic circuits
JP4934825B2 (ja) 連想メモリ
Kerntopf et al. Synthesis of reversible circuits: A view on the state-of-the-art
Jarollahi et al. Algorithm and architecture of fully-parallel associative memories based on sparse clustered networks
US11120874B2 (en) Electronic memory device and a method of manipulating the electronic memory device
Sasao A Design method of address generators using hash memories
Pang et al. A novel method of synthesizing reversible logic
JP4742281B2 (ja) 多段論理回路の再構成装置及び再構成方法、論理回路修正装置、並びに再構成可能な多段論理回路
Yang et al. Techniques for dual forms of Reed–Muller expansion conversion
Borowik et al. Logic synthesis method for pattern matching circuits implementation in FPGA with embedded memories
Heyse et al. Attacking code-based cryptosystems with information set decoding using special-purpose hardware
Wang et al. Gray codes over certain run-length sequences for local rank modulation
Li A new CAM based S/S/sup-1/-box look-up table in AES
RU2331937C2 (ru) Способ запоминания цифровой информации
Voudouris et al. Variable reordering for reversible wave cascades

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: 07739935

Country of ref document: EP

Kind code of ref document: A1

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2008510866

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07739935

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 12294791

Country of ref document: US

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)