WO2007020751A1 - 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 - Google Patents

連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 Download PDF

Info

Publication number
WO2007020751A1
WO2007020751A1 PCT/JP2006/312900 JP2006312900W WO2007020751A1 WO 2007020751 A1 WO2007020751 A1 WO 2007020751A1 JP 2006312900 W JP2006312900 W JP 2006312900W WO 2007020751 A1 WO2007020751 A1 WO 2007020751A1
Authority
WO
WIPO (PCT)
Prior art keywords
entry
data
memory
input
stored
Prior art date
Application number
PCT/JP2006/312900
Other languages
English (en)
French (fr)
Inventor
Yasuhiko Nakashima
Original Assignee
Kyoto University
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 Kyoto University filed Critical Kyoto University
Publication of WO2007020751A1 publication Critical patent/WO2007020751A1/ja

Links

Classifications

    • 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
    • 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

Definitions

  • Content addressable memory system Content addressable memory system control method, and data processing apparatus
  • the present invention stores a plurality of data as a plurality of entries, and when input data is input, a CAM that selects an entry that matches the input data among the stored entries;
  • the present invention relates to an associative memory system including a RAM that stores data corresponding to each of a plurality of entries stored in the CAM and outputs data corresponding to the entry selected in the CAM.
  • a storage device such as a RAM (Random Access Memory)
  • stored data is read by inputting an address in the storage area.
  • an associative memory when data is input, stored data matching the data is specified, and output is performed accordingly.
  • Such an associative memory is realized by a memory called CAM (content-addressable memory).
  • the CAM When a content to be searched is given, the CAM operates so that data corresponding to the content is stored and a signal corresponding to a new entry is turned ON. Normally, CAM is used as a set with RAM.
  • CAM ⁇ 5, 5, 5, 5, 5 '', ⁇ 1, 3, 1, 1, 1 '', ⁇ 1, 3, 3, 5, 2 '', ⁇ 6, 6, 6, 6, 6 '' ⁇ ⁇
  • Data columns are registered as entries, and “5, 5”, “1, 1”, “1, 2”, “6, 6” corresponding to each data column in the CAM Is registered.
  • the matching entry is turned ON and the corresponding data “1, 2” registered in the RAM is output. Will be.
  • Patent Document 1 discloses a technique for solving the multi-match problem by providing a priority encoder.
  • FIG. 19 shows a configuration example of a conventional content addressable memory system 100 including a CAM and a RAM.
  • the associative memory system 100 includes a V bit storage unit 101, an empty detection circuit 102, a CAM unit 103, a priority encoder 104, an address decoder 105, and a RAM unit.
  • a search is performed in the associative memory system 100, the following processing is performed.
  • data to be searched is input to the CAM unit 103, and a matching entry is searched.
  • a detection signal is input to the priority encoder 104.
  • the priority encoder 104 performs a process of selecting one entry to be prioritized when there are a plurality of matching entries, and transmits the selection result to the address decoder 105.
  • the address decoder 105 generates an address corresponding to the selection result and transmits it to the RAM unit 106, and the RAM unit 106 reads out the data corresponding to the instructed address and outputs it as read data.
  • Patent Document 1 Japanese Published Patent Publication “Japanese Patent Laid-Open No. 11-126486 (published on May 11, 1999)”
  • an external device that attempts to register data in the associative memory system.
  • the associative memory system is inquired about the address of the empty entry, and the associative memory system searches for the empty entry and notifies the external device of the address information. Then, the external device specifies the address of the notified empty entry and registers data to be registered in the associative memory system.
  • the priority encoder provided in the configuration shown in FIG. 19 has a characteristic that the circuit delay increases in a logarithmic order as the number of matched entries, that is, the number of match lines increases. . For this reason, if the number of entries in the CAM is large, there is a high possibility that many match lines will be generated, so the priority encoder is expected to become a bottleneck in processing speed. That is, there is a problem that providing a priority encoder becomes an obstacle to high-speed processing in an associative memory system.
  • the present invention has been made in view of the above problems, and an object of the present invention is to provide an associative memory system, an associative memory system control method, and a method for controlling the associative memory system, which improve the processing speed when registering data. It is to provide a data processing apparatus provided.
  • an associative memory system that realizes a high-speed processing and a reduction in power consumption by eliminating a priority encoder that has been conventionally required in an associative memory system. It is to provide.
  • Another object is to provide an associative memory system that speeds up the processing when reading the contents of an entry stored in a CAM unit that matches as a result of a search.
  • the associative memory system stores a plurality of data as a plurality of entries and stores the input data when the input data is input.
  • a first memory in which the entry matching the input data is selected, and the first memory stores data corresponding to each of the plurality of entries, and the first memory
  • An associative memory system comprising: a second memory that outputs data corresponding to a selected entry in the memory, storing free entry information indicating whether each entry in the first memory is empty
  • a free entry storage unit that selects one free entry when there is a free entry in the first memory based on information stored in the free entry storage unit; and When write data to the first memory is input, the write data is written to the entry selected by the empty entry selection unit. It features a write control unit.
  • the associative memory system control method stores a plurality of data as a plurality of entries, and when input data is input, the input data is stored among the stored entries.
  • the first memory in which an entry matching the above is selected and the data stored in the first memory corresponding to each of the plurality of entries, and the entry selected in the first memory
  • a second memory that outputs data corresponding to the empty memory for storing empty entry information indicating whether each entry in the first memory is empty or not. Based on the storage step and the information stored in the empty entry storage step, if there is an empty entry in the first memory, one empty error is stored.
  • the write control unit controls to write the write data to the empty entry selected by the empty entry selection unit. It is like that. Therefore, the external device need only perform the step of inputting write data to the associative memory system, and the time required for the data registration process can be greatly reduced.
  • the write control unit when the write control unit receives write data to the first memory, the write data is stored in the first memory. If it is not stored, the write data is written to the selected entry. If it is already stored, the write data is written. Don't do it as a configuration.
  • the configuration can be simplified by not providing the priority encoder.
  • the processing by the priority encoder is not delayed, the processing speed can be improved.
  • the problem of increase in power consumption of the priority encoder itself accompanying the increase in the number of match lines can be solved.
  • an associative memory system includes a plurality of memory cells that store data to be stored in bit units in the first memory force in the above-described configuration.
  • the bit line When write data is input to the first memory, the bit line is set by driving the word line corresponding to the entry selected by the empty entry selector. It is also possible to write a bit to the memory cell corresponding to the selected entry!
  • both the search data and the write data are set to the common bit line for each memory cell, and at the time of writing, the word line of the corresponding memory cell is controlled based on the control of the write control unit. Is driven to perform writing. Therefore, it is possible to switch between search processing and write processing by driving the word line and not driving Z. As a result, the write data is already stored in the first memory !, and the process of determining whether or not the power is stored is shifted to the process of writing the write data to the selected entry. It is possible to perform the process quickly, and the processing speed can be increased.
  • the first memory is a data area for storing data to be stored in bit units, and each bit stored in the data area.
  • the second memory has a mask bit corresponding to each of the plurality of entries stored in the first memory.
  • the mask bit and the input data may be output.
  • the mask bits corresponding to each of the plurality of entries stored in the first memory are stored in the second memory and stored in the second memory.
  • the mask bit corresponding to the selected entry and the input data are output.
  • the mask bit and input data are output in the read cycle of the second memory, it is possible to recognize the data stored in the first memory of the matching entry by combining them. It becomes. Therefore, it is possible to prevent a decrease in processing speed when it is necessary to acquire the contents of entries that match as a result of the search.
  • the first memory power is divided into a plurality of sub-blocks, and the empty entry selection unit writes to the first memory.
  • the sub-block's intermediate empty entry determined based on at least a part of the write data is selected, and when search data is input, at least a part of the search data is selected.
  • the search operation may be performed on the sub-block determined based on the above.
  • the write data is registered in the sub-block determined based on at least a part of the write data, and the sub-data determined based on at least a part of the search data during the search.
  • a search operation is performed on the block. Therefore, since the number of entries in the first memory to be searched can be reduced, it is possible to reduce the time required for search processing and the power consumption required for search. it can.
  • the write data continuous to the write data is further registered.
  • the sub-block and entry information of the first memory to be registered A certain configuration may be adopted.
  • the data processing device is a data processing device for performing processing of reading out an instruction section from the main storage means and writing the result of the arithmetic processing into the main storage means.
  • First arithmetic means for performing an arithmetic operation based on the instruction interval, a register used for reading and writing to the main memory means by the first arithmetic means, and an arithmetic operation for the instruction interval by the first arithmetic means.
  • An input / output generation means for generating an input / output group that is an input pattern and an output pattern force when executed, and an instruction interval storage means for storing the input / output group generated by the input / output generation means.
  • the input pattern of the instruction interval and the input pattern stored in the instruction interval storage means are In the case of a match, the output pattern stored in the instruction interval storage means corresponding to the input pattern is output to the register and Z or the main storage means, and the instruction interval storage means power is applied. It is comprised by the content addressable memory system as described in any one of 7.
  • the instruction interval storage means is configured by the content addressable memory system according to the present invention, it is possible to greatly reduce the time required for the data registration process, and to increase the processing speed. It is possible to provide a high data processing device.
  • FIG. 1 is a block diagram showing a specific configuration of an associative memory system according to an embodiment of the present invention.
  • FIG. 2 is a block diagram showing a schematic configuration of the content addressable memory system.
  • FIG. 3 is a circuit diagram showing a specific configuration example of each row in the GATE unit included in the content addressable memory system.
  • FIG. 4 is a circuit diagram showing a specific configuration example of a CAM unit included in the associative memory system.
  • FIG. 5 is a circuit diagram showing a sub-block configuration example of 32 rows deep and 8 bits wide corresponding to each sub block shown in FIG.
  • FIG. 6 is a circuit diagram showing a sub-block configuration example of 8-bit data and 1-bit mask corresponding to each sub-block shown in FIG.
  • FIG. 7 is a circuit diagram showing a configuration example of a sense amplifier block shown in FIG. 5.
  • FIG. 8 is a circuit diagram showing a configuration example of a 1-bit CAM corresponding to each sub-block shown in FIG. 6.
  • FIG. 9 is a circuit diagram showing a configuration example of a 1-bit mask.
  • FIG. 10 is a diagram showing an outline of the configuration and operation of the data processing apparatus according to the present embodiment.
  • FIG. Ll (a) is a diagram showing the configuration of RBinZout.
  • FIG. 12 (a) is a diagram showing a more detailed operation example of RBin and RBout.
  • FIG. 12 (b) is a diagram showing a more detailed operation example of RBin and RBout.
  • FIG. 12 (c) is a diagram showing a state in which the two records shown in FIGS. 12 (a) and 12 (b) are represented by a tree structure.
  • FIG. 13 is a diagram illustrating an example of an instruction interval.
  • FIG. 14 is a timing chart of search and write operations performed when each record of RBinZout is registered in an associative memory system as SBinZout.
  • FIG. 15 is a timing chart of a search and read operation for reusing SBinZout when an MP executes an instruction interval.
  • FIG. 16 (a) is a diagram showing a specific example of RBin when strlen (“ABCDEF”) is executed in the instruction section shown in FIG.
  • FIG. 16 (a) is a diagram showing an example of a state in which RBin shown in FIG. 16 (a) is registered in SBin and RBout is registered in SBout.
  • FIG. 17 (a) In the state shown in FIG. 16 (b), this is a diagram showing the state of SBin when the MP performs the process of changing the character string “ABCDEF” to “ABCDEFG”.
  • FIG. 17 (b) From the state shown in FIG. 17 (a), the MP executes Strlen (“ABCDEFG”), and shows a state where RBin Zout is generated.
  • ABSCDEFG Strlen
  • FIG. 17 (c) is a diagram showing a state where RBinZout shown in FIG. 17 (b) is registered in SBinZout.
  • FIG. 18 is a block diagram showing a configuration in which the content addressable memory system is divided into four sub-blocks in the depth direction.
  • FIG. 19 is a block diagram showing a schematic configuration of a conventional content addressable memory system.
  • the associative memory system 1 specifies stored data matching the data by inputting data that is not limited to the application to the processor model shown below, and responds accordingly.
  • the present invention can be applied to various configurations using associative memories that perform output. Examples of such a configuration include a parallel data processor and a packet filtering system in a router provided in a communication network.
  • FIG. 10 is a diagram showing an outline of the configuration and operation of the data processing device 30 as the processor model.
  • the data processor 30 includes an MP (first arithmetic means) 31 as a main processor, first SP32A and second SP32B as sub processors, a prediction processing unit 35, and a storage area in the L2cache.
  • SBinZout (command section storage means) 33 and RegionTable 34 are provided.
  • the associative memory system 1 according to the present embodiment is applied to SBinZout33.
  • the MP31, the first SP32A, and the second SP32B each have an Llcache, and the L1 cache serves as a recording area for recording the data used as the input of the instruction section (subroutine or loop) and the output data.
  • RBinZout input / output generation means
  • the MP31, the first SP32A, and the second SP32B sequentially register the execution contents of the instruction section in RBinZout during execution of the instruction section, and all processors share the contents of RBinZout when the execution of the instruction section is completed. Register with SBinZout 33.
  • the configuration includes two sub-processors. However, the configuration may include one, or three or more. Also, V or configuration without a secondary processor can be used! /.
  • the prediction processing unit 35 Based on the history of command segment input (history # 1, history # 2) executed by the MP31 recorded in the RegionTable 34, the prediction processing unit 35, for example, inputs future command segment inputs by stride prediction or the like. Calculate the predicted value. Then, the input predicted value is transmitted to the first SP32A and the second SP32B ((b) in the figure).
  • the first SP32A and the second SP32B execute the instruction section based on the given input prediction value ((c) in the figure), and record the execution result in RBinZout ((d) in the figure).
  • the first SP32A executes instruction interval # 4 based on the given input prediction value
  • the second SP32B executes instruction interval # 5 on the given input prediction value.
  • the first SP 32A and the second SP 32B when completing the execution of the instruction section, transmit the execution result recorded in RBinZout to SBinZout33 ((e) in the figure).
  • SBinZ out33 registers the execution result data sent by the first SP32A and the second SP32B.
  • the MP31 performs an associative search of SBin when trying to execute the instruction section, and the input data being executed in the MP31, that is, the entry that is the same as the current register and main memory address values. Determine if there is any power. If an entry that matches the input data is detected, the contents of the corresponding output set, SBout, are output as the output data for the instruction section ((f) in the figure). In other words, by reusing the past execution results and the results pre-executed in the first SP32A and the second SP32B, the execution of the instruction section is omitted and a high-speed processing is realized. In Fig. 10, the instruction interval # 4 and the instruction interval # 5 are reused and the output is obtained without the actual operation by the MP31 being performed.
  • Figure 11 (a) shows the configuration of RBinZout.
  • RBinZout is % Sp , RBin part, and RBout part indicating the stack pointer are provided.
  • the RBin section is provided with a CompareFlag area, a Type area, a Reg./Mem. Address area, a data area, and a mask area.
  • a Type area, a Reg./Mem. Address area, a data area, and a mask area are provided in the RBout portion.
  • the input data at the time of execution of the instruction section is stored in the RBin section, and the output data is stored in the RBout section.
  • the CompareFlag area stores a flag indicating whether or not the entry needs to be verified. That is, CompareFlag indicates that the register number or main memory address to be compared next has been updated.
  • the Type area stores information indicating what type of data is stored in the entry.
  • the Reg. / Mem. Ad dress area stores the data power register stored in the corresponding entry or information indicating the address stored in the main memory.
  • the data area stores actual data stored in the entry, and the mask area stores mask bit data indicating which bits in the data area are valid.
  • Fig. 11 (b) shows the state where the input data and output data are stored in RBinZout when the subroutine is executed as the instruction interval
  • Fig. 11 (c) shows the loop as the instruction interval. This shows the state where the input data and output data are stored in RBinZout when is executed.
  • Figs. 12 (a) and 12 (b) show more detailed operation examples of RBin and RBout.
  • strlen (str) is a function for obtaining the length of a character string terminated by a NULL character.
  • this function is a function for obtaining the length of a character string terminated by a NULL character.
  • Fig. 10 (e) when the contents of RBin are registered in SBinZout33, the following processing is performed. First, associative search of SBinZout33 is performed based on the contents of RBin . If the contents of RBin are already registered in SBinZout33 as a result of the associative search, the registration process for SBinZout33 is not performed. On the other hand, if the contents of RBin are registered in SBinZout33,!, NA! /, The contents of RBin are written to the free entry in associative memory system 1.
  • FIG. 2 is a block diagram showing a schematic configuration of the associative memory system 1 according to the present embodiment.
  • the associative memory system 1 includes a V bit storage unit (empty entry storage unit) 11, an empty detection circuit (empty entry selection unit) 12, a CAM unit (first memory) 13, and a RAM unit ( (Second memory) 14 is provided.
  • the CAM unit 13 is configured by a CAM that, when data is input, stores data that matches the data is specified and output is performed accordingly.
  • the CAM unit 103 stores a plurality of entries. When the input data matches an entry stored therein, a match line marker corresponding to the entry is output to the RAM unit 14. Is done.
  • the CAM unit 103 has a data area for storing data stored in correspondence with each entry in units of bits, and which of the bits stored in the data area is valid. And a mask bit area for storing a mask bit indicating the above.
  • the RAM unit 14 is constituted by a so-called RAM, and outputs storage data corresponding to the entry to which the MATCH signal is output from the CAM unit 13! /.
  • the RAM unit 14 further stores mask bits corresponding to each of the plurality of entries stored in the CAM unit 13.
  • the V bit storage unit 11 stores V bits corresponding to each entry included in the CAM unit 13.
  • the V bit is a bit indicating whether or not the entry is valid. In this embodiment, the V bit is 1 when it is valid, and the V bit is 0 when it is invalid.
  • the empty detection circuit 12 is a circuit that detects an empty entry in the CAM unit 13 by referring to the V bit storage unit 11. When data is written to the CAM unit 13, writing is performed on the empty entry detected by the empty detection circuit 12.
  • the CAM unit when a search is performed, the CAM unit is configured so that the number of entries matching the input data is 1 or 0. 1 Control is being performed so that data registration to 3 is performed! This makes it possible to omit the priority encoder that was necessary in the prior art.
  • a conventional CAM when data is registered, the following procedure is performed. First, the address information of an empty entry in the CAM is acquired, and data registration is performed for the address. In the case of only such data registration processing, it is considered that the same data is recorded for a plurality of entries, and there arises a problem that contention occurs in the above-described RAM reading.
  • the write data when the specified write data is already registered in the CAM unit 13, the write data is not registered and is not registered.
  • the circuit is configured so that the write data is registered for the empty entry only in some cases. This ensures that at most one match line is asserted.
  • the same mask bits as the mask bits stored in the CAM unit 13 are stored in the RAM unit 14.
  • the RAM unit 14 is read out in response to the search result of the CAM unit 13, the mask bit pattern is read out at the same time, and the search data
  • the configuration for realizing the above contents will be described in more detail.
  • FIG. 1 is a block diagram showing the associative memory system 1 shown in FIG. 2 more specifically.
  • the V bit storage unit 11 shown in FIG. 2 is not shown.
  • SD which is a signal indicating data to be searched
  • XSD which is an inverted signal of SD
  • the CAM unit 13 performs an associative search based on SDZXSD and outputs a MATCH signal indicating the search result to the GATE unit 23.
  • V and XV which is a signal indicating V bit information corresponding to each entry and output from V bit storage unit 11, are input to V bit search unit 22.
  • V bit search unit 22 it is possible to output a MATCH signal to the GATE unit 23 for only valid entries among the search results in the CAM unit 13.
  • the configuration shown in FIG. 1 may be configured to include only one of the forces provided with both the V-bit search unit 22 and the V-bit read unit 25.
  • the distance between the V-bit search unit 22 and the GATE unit 23 becomes long, and there is a problem that high-speed operation is hindered due to signal transmission delay.
  • the GATE unit 23 instructs the RAM unit 14 to perform a read operation when there is an entry matching the search data, and when there is no entry, the CAM unit 13 and Instructs the RAM unit 14 to perform a write operation.
  • FIG. 3 shows a specific configuration example of each row in the GATE unit 23.
  • the line here corresponds to an entry in the CAM unit 13. In other words, the number of rows provided in the component power GATE unit 23 shown in FIG. 3 is actually provided.
  • the WRITE signal and the AL LO signal indicating whether all Match-lines are 0 are input.
  • CK1, CK2, CK3, CK4 and their inverted signals XCK1, XCK2, XCK3, XCK4 are input as clock signals that define the operation cycle in the GATE section 23.
  • CK1, CK2, CK3, CK4 are the cycle 1AZ2AZ3AZ4A first half, 1 AZ2AZ3AZ4A second half, cycle 1BZ2BZ3BZ4B first half, 1BZ2BZ3BZ4B later This is a clock signal given from the outside so as to be 1 in half.
  • the WRITE signal is 1, that is, when the MATCH signal is 1 when the Write operation is being performed, the ALLO signal is 0.
  • the read operation in the RAM unit 14 is performed by outputting RREN which is a read enable signal of the RAM unit 14 and RSEN which is a sense enable signal of the RAM unit 14.
  • the WRITE signal is 1, that is, when the Write operation is performed, if the MATCH signal is 0 and the ALLO signal is 0, the Read operation in the RAM unit 14 is performed in another row. It will be.
  • FIG. 4 shows a specific configuration example of the CAM unit 13.
  • the CAM unit 13 has a depth of 32 rows and a width of 128 bits (a total of 144 bits because a mask of 1 bit is included every 8 bits).
  • the row corresponds to the entry, and the width corresponds to the number of bits of data that can be stored in each entry.
  • the mask provided for every 8 bits is the 8-bit information. This bit indicates whether or not the force is valid. Valid when 1 and invalid.
  • SD that is a signal indicating data to be searched and XSD that is an inverted signal are input.
  • XSD that is an inverted signal
  • this SDZXSD is input to the CAM unit 13, it is input to each sub block of the CAM unit 13 as WDZXWD as a positive / negative input signal.
  • WD / XWD becomes the signal WDZXWD ⁇ 0: 143> indicating the 128-bit data and 8-bit mask!
  • the CAM unit 13 includes 16 sub-blocks SBAOO to SBA15. Then, for each sub-block, a signal indicating 8-bit data and a corresponding 1-bit mask among WD / XWD 0: 143> is input. For example, WDZXWD 0: 8> is input to sub-block SBAOO, WDZXWD 9:17> is input to sub-block SBA01, and each sub-block is then manually powered by 9 bits.
  • each sub-block outputs a read signal indicating 8-bit data and a corresponding 1-bit mask.
  • the sub-block SBAOO force outputs 13 ⁇ 437: ⁇ 0 ⁇ 0: 8> as a positive / negative output signal
  • subblock SBA01 outputs RDZXRD 9:17>.
  • RDZXRD output from each sub-block is collectively output as a read signal from the CAM unit 13 as RDZXRD 0: 143>.
  • the RAM unit 14 when the RAM unit 14 is read in response to the search result of the CAM unit 13, the mask bit pattern recorded in the RAM unit 14 is read at the same time. In combination with the search data itself, the contents of the entry of the CAM section 13 that matches as a result of the search are read out. Therefore, basically, it is not necessary to output the above RDZXRD read signal, so do not provide a configuration for this.
  • Each sub-block has WL 0:31> as a word line signal corresponding to each row, BPRE ⁇ SPRE as a bit line precharge signal necessary for reading the contents, and a write enable signal. WEN, REN as a read enable signal, and SEN as a sense enable signal are input.
  • MATCH 0:31> is output as the match line signal corresponding to the line!
  • FIG. 5 shows an example of a sub-block configuration corresponding to each of the sub-blocks SBAOO to SBA15 shown in FIG.
  • the force and other sub-blocks indicating the SBAOO sub-block have the same configuration.
  • the sub-block of SBAOO includes a sense amplifier block SAB and SBBOO to SBB31 as 32 sub-blocks.
  • WD / XW D ⁇ 0: 8>, BPRE 'SPRE, WEN, REN, and SEN are input to the sense amplifier block SAB.
  • the sense amplifier block SAB outputs RD / XRD ⁇ 0: 8>!
  • SBBOO to SBB31 correspond to each row, and WL ⁇ 0> to WL ⁇ 31> are input as word line signals to each.
  • Each of SBBOO to SBB31 outputs MATCH 0> to MATCH 31> as match line signals.
  • WDZXWD 0: 8> input to the sense amplifier block SAB is input to each of SBBOO to SBB31 as BL / XBL 0: 8> as a bit line signal.
  • the read signal from SBBOO to SBB31 is input to the sense amplifier block SAB as BL / XBL 0: 8>, and RDZXRD 0: 8> is output accordingly!
  • FIG. 6 shows an example of sub-block configuration of 8-bit data and 1-bit mask corresponding to the sub-blocks SBBOO to SBB31 shown in FIG.
  • the force and other sub-blocks indicating the above SBBOO sub-blocks have the same structure.
  • the sub-block of SBBOO includes eight SBC00 to SBC07 and one SBM.
  • Each of SBC00 to SBC07 corresponds to a 1-bit CAM (memory cell), and SBM corresponds to a 1-bit mask.
  • WL as a word line signal is input in common to each of SB C00 to SBC07 and SBM.
  • Each of SBC00 to SBC07 and SBM has BLZXBL ⁇ 0> as a bit line signal for writing, reading, and searching for each bit of the memory cell.
  • ⁇ BL / XBL ⁇ 8> force S input.
  • ML as a match line signal output from each of SBC00 to SBC07 is input to SBM.
  • the SBM outputs a MATCH signal when the MLs from SBC00 to SBC07 are all 1 and they match in the mask bit comparison.
  • FIG. 7 shows a configuration example of the sense amplifier block SAB shown in FIG.
  • the sense amplifier block SAB includes nine sense amplifiers SA00 to SA08.
  • SAOO to SA07 correspond to each bit of 8-bit data
  • SA08 corresponds to 1-bit mask bit.
  • the sense amplifiers SA00 to SA08 may have a generally used configuration, and thus the description thereof is omitted here.
  • FIG. 8 shows a configuration example of 1-bit CAM corresponding to each sub-block of SBC00 to SBC07 shown in FIG.
  • Fig. 9 shows an example of a 1-bit mask configuration corresponding to the SBM shown in Fig. 6.
  • the 1-bit CAM is configured by a RAM function unit configured by transistors NO to N3, PO, and P2 and a CAM function unit configured by transistors N5 to N8.
  • WL and BLZXBL are connected to the RAM function part, and ML is connected to the CAM function part.
  • the 1-bit mask is configured by a RAM function unit configured by transistors NO to N3, PO, and P2 and a CAM function unit configured by transistors Nil ⁇ ⁇ 12. WL and KLZXKL are connected to the RAM function, and ML and M ATCH are connected to the CAM function!
  • the force RAM unit 14 described for the configuration of the CAM unit 13 with reference to FIGS. 4 to 9 is based on the configuration of the CAM unit 13 described above. , And MATCH are all removed. Therefore, the operation at the time of data writing and reading is the same as the operation at the CAM unit 13. In other words, at the time of writing, WL is turned on after the write value is set in BLZXBL. As a result, the write value is stored in the RAM function unit. When reading, BLZXBL is pre-initialized to 1, WL is turned on, and the external sense amplifier is activated, so that the value is output to BL ZXBL.
  • Fig. 14 shows the timing chart of the search and write operations performed when each record of RBinZout is registered in the associative memory system 1 as SBinZout33. A timing chart of search and read operations for reuse is shown.
  • RAM—BL—precharge is HIGH in the first half of cycle 1A. It will be shown!
  • the write data is stored in SDZXSD and RA in CAM section 13.
  • the data read out by the RAM unit 14 indicates information related to the address of the next entry, it is compared with the contents of the next entry of RBinZout and verified. At this time, As long as the program being executed is a normal program, verification will not fail. For example, if there is a bug in the program, verification will fail. In this case, a signal indicating that the verification has failed is output!
  • cycle 2A as in cycle 1A, all match lines in CAM unit 13 are precharged to 1 in preparation for the next associative search in CAM unit 13.
  • MATCH—p recharge becomes HIGH in the first half of cycle 2A! /.
  • ALLO signal precharge is initiated to check that there is no matching entry (ALLO? YES).
  • ALLO-precharge goes HIGH in the second half of cycle 3A! /.
  • the RAM unit 14 stores a mask bit pattern similar to the mask bit pattern stored in the CAM unit 13, and this mask bit pattern is also read out simultaneously.
  • the combined data of the input data and the mask bit pattern is recorded in the CAM section 13. This is equivalent to reading the contents of the remembered entry. That is, it is possible to obtain the same information as the content without repeating the cycle for reading the content of the entry stored in the CAM unit 13.
  • cycle 4A as in cycle 3A, all match lines in CAM unit 13 are precharged to 1 in preparation for the next associative search in CAM unit 13.
  • MATCH—p recharge becomes HIGH in the first half of cycle 4A! /.
  • reading of the current register or the like is started based on the address of the register or the like to be compared next obtained from the RAM unit 14 as a result of the previous search.
  • the contents of the current register to be compared next are input to SDZXSD of CAM section 13, and if not registered, all MATCH in 0B 4B is detected, so this is detected and the search is completed. To do. In this case, since MP31 cannot be reused, the corresponding instruction section is actually executed.
  • FIG. 16 (a) shows a specific example of RBin when strlen ("ABCDEF") is executed in the instruction section shown in Fig. 13, and Fig. 16 (b) shows Fig. 16 (a).
  • ABCDEF strlen
  • the search operation in the state shown in Fig. 17 (c) is performed as follows. First, the initial key (one The entry (200) is detected by associatively searching the CAM part 13 of SBin using 1), the function start address (strlen), and the argument (OOOIOOOC). Then, the main storage address “00010010” to be referred to next and the key (210) used for the next search are detected from the RAM section 14 corresponding to the entry. If the result of referring to the main memory address is "454600XX", it matches the entry indicated by circle 4 in the figure, and if it is "45464700", it matches the entry indicated by circle 5 in the figure, and the corresponding SBout value is Is output.
  • the registration input data to be searched includes multiple (N) parts (records). ) And will be registered in SBin.
  • the initial force of the registered input data is also verified sequentially, and the search ends when it is determined that they do not match.
  • the content addressable memory system is divided into a plurality of (M) sub-blocks in the depth direction, sub-blocks are identified using a part of data to be registered or searched, and the sub-pro A configuration in which a search is performed within a network is conceivable.
  • the number of match lines to be pre-cursed at the same time is reduced to 1ZM. Therefore, it is possible to suppress a decrease in processing speed while reducing power consumption.
  • FIG. 18 shows a configuration in which the associative memory system 1 shown in FIG. 2 is divided into four sub-blocks in the depth direction.
  • a specific example of processing when registering data in the associative memory system 1 as SBinZout33 in such a configuration will be described below. Light up.
  • the entry power CAM unit 13 including the initial key (1 1) is first written in an empty entry (for example, subblock 1 entry 001) in a specific subblock.
  • This sub-block is specified based on a part of the start address (strlen) of the corresponding instruction section, for example. That is, for example, a sub-block specifying table indicating a part of information of the head address and sub-block information corresponding to the information is stored in the associative memory system 1, and the empty detection circuit 12 is operated according to the sub-block specifying table. Detecting a free entry from the specified sub-block and registering the free entry!
  • the second record CompareFlag, type is stored in the RAM unit 14 corresponding to the entry (sub-block 1 entry 001) in the CAM unit 13 that registered the first record. , And address information is written. Then, it is written in an empty entry (for example, subblock 2 entry 005) in the entry block including the key (subblock 1—entry 001), for example, the next subblock (for example, subblock 2).
  • the third record's CompambleFlag, type is stored in the RAM unit 14 corresponding to the entry (subblock 2 entry 005) in the CAM unit 13 that registered the second record. , And address information is written. Then, it is written in an entry entry including the key (subblock 2 entry 005), for example, a free entry in the next subblock (eg, subblock 3).
  • the first row is stored in the row of entry 001 in sub-block 1
  • the second row is stored in the row of entry 005 in sub-block 2
  • the third row is stored in the row of sub-block 3. It will be in the state.
  • the search operation in this state is performed as follows. First, in the subblock (subblock 1) specified from a part of the function start address (strlen), using the initial key (1), the function start address (strlen), and the argument (0001000C), SBin An associative search is performed on the CAM section 13 of the first to detect an entry (subblock 1—entry 001). Then, the main storage address “00010010” to be referred to next and the key (sub-block 2—entry 005) used for the next search are detected from the RAM unit 14 corresponding to the entry. Next, for the subblock of block number 3 in which 1 is added to the block number 2 included in the key, the contents matching the main storage address and the key are searched.
  • the associative memory system according to the present invention can be applied to various associative memory systems including a CAM and a RAM.
  • Such an associative memory system can be used in, for example, a parallel data processor and a packet filtering system in a router provided in a communication network.
  • the data processing apparatus according to the present invention can be applied to a SPARC (Scalable Processor ARChitecture) processor. As with SPARC processors, it can be applied to many RISC processors with more than 32 general-purpose registers.
  • the present invention can be applied to game machines, mobile phones, information appliances, and the like that include such a processor.

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 V=0優先検出部は、Vビット記憶部に記憶されている情報に基づいて、CAM部に空きエントリがある場合に、1つの空きエントリを選択する。そして、GATE部は、CAM部に対する書き込みデータが入力された場合に、V=0優先検出部によって選択されたエントリに対して、該書き込みデータを書き込む制御を行う。これにより、データの登録を行う際の処理速度を向上させる連想メモリシステムを提供することが可能となる。

Description

明 細 書
連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装 置
技術分野
[0001] 本発明は、複数のデータを複数のエントリとして記憶するとともに、入力データが入 力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択さ れる CAMと、 CAMに記憶されて!、る複数のエントリのそれぞれに対応してデータを 記憶し、 CAMにおいて選択されたエントリに対応するデータを出力する RAMとを備 える連想メモリシステムに関するものである。
背景技術
[0002] 例えば RAM (Random Access Memory)などの記憶装置では、記憶領域における アドレスが入力されることによって記憶されているデータの読み出しが行われる。これ に対して、連想メモリと呼ばれる記憶装置では、データが入力されることによって、該 データに一致する記憶データが特定され、それに応じた出力が行われるようになって いる。このような連想メモリは、 CAM (content-addressable memory)と称されるメモリ によって実現される。
[0003] CAMは、検索すべき内容が与えられると、それに一致するデータが格納されて!ヽ るエントリに対応する信号が ONとなるように動作するようになっている。通常は、 CA Mは RAMとセットにして用いられる。
[0004] ここで、 CAMと RAMとの連携動作につ!、て、具体例を挙げて説明する。 CAMに 、「5, 5, 5, 5, 5」、「1, 3, 1, 1, 1」、「1, 3, 3, 5, 2」、「6, 6, 6, 6, 6」と!ヽぅデータ 列がエントリとして登録されており、 RAMに、 CAMにおける各データ列に対応して、 「5, 5」、「1, 1」、「1, 2」、「6, 6」というデータが登録されているとする。ここで、検索 すべきデータ列として、「1, 3, 3, 5, 2」を CAMに入力すると、一致するエントリが O Nとなり、 RAMに登録されている該当するデータ「1, 2」が出力されることになる。
[0005] このような連想メモリにおいて、検索すべきデータに一致するエントリが複数存在す る場合が考えられる。この場合、 RAMの読み出しに競合が生じることになり、競合を 解消するための構成が必要となる。この問題に対して、例えば特許文献 1には、ブラ ィオリティエンコーダを設けることによって、マルチマッチの問題を解決する技術が開 示されている。
[0006] 図 19は、 CAMおよび RAMを備えた従来の連想メモリシステム 100の構成例を示 している。同図に示すように、連想メモリシステム 100は、 Vビット記憶部 101、空検出 回路 102、 CAM部 103、プライオリティエンコーダ 104、アドレスデコーダ 105、およ び RAM部を備えている。
[0007] 上記の連想メモリシステム 100において検索が行われる際には、次のような処理が 行われる。まず検索すべきデータが CAM部 103に入力され、一致するエントリが検 索される。一致したエントリが検出されると、検出信号がプライオリティエンコーダ 104 に入力される。プライオリティエンコーダ 104は、一致したエントリが複数存在した場 合に、優先すべき 1つのエントリを選択する処理を行い、選択結果をアドレスデコーダ 105に送信する。アドレスデコーダ 105は、選択結果に対応するアドレスを生成し、 R AM部 106に送信し、 RAM部 106は、指示されたアドレスに対応するデータを読み 出しデータとして出力する。
特許文献 1 :日本国公開特許公報「特開平 11-126486号公報(平成 11(1999)年 5月 11 日公開)」
発明の開示
[0008] 上記のような連想メモリシステムにおいて、従来は、次のような手順でデータの登録 処理が行われて 、た。まず連想メモリシステムにデータを登録しょうとする外部装置 力 連想メモリシステムに対して空きエントリのアドレスを問い合わせ、連想メモリシス テムは、空きエントリを探し出してそのアドレス情報を上記外部装置に通知する。そし て、外部装置は、通知された空きエントリのアドレスを指定して登録すべきデータを連 想メモリシステムに登録する。
[0009] このような登録処理が行われる場合、外部装置による空きエントリの問い合わせのス テツプ、連想メモリシステムによる空きエントリの通知のステップ、および外部装置によ る連想メモリシステムに対する書き込みステップの 3つのステップを外部装置と連想メ モリシステムとの間で行う必要がある。これにより、データ登録処理速度の向上が抑 制されて 、ると!/、う問題がある。
[0010] また、図 19に示す構成で設けられているプライオリティエンコーダは、一致したェン トリの数、すなわちマッチライン数の増加とともに対数オーダにて回路ディレイが増大 するという特性を有している。このため、 CAMにおけるエントリ数が多い場合、多くの マッチラインが生じる可能性が高くなるので、プライオリティエンコーダが処理速度に おけるボトルネックとなることが予想される。すなわち、プライオリティエンコーダを設け ることが、連想メモリシステムにおける処理の高速ィ匕の障害となるという問題がある。
[0011] また、マッチライン数が増加すると、プライオリティエンコーダ自身の消費電力も増 大し、これにより連想メモリシステムにおける消費電力も増大するという問題もある。
[0012] さらに、図 19に示した構成の場合、検索の結果一致した CAM部に記憶されている エントリの内容を読み出す際には、改めて読み出しサイクルを設ける必要がある、と いう問題もある。詳しく説明すると、 CAM部 103で一致エントリの検索が行われた後 に、プライオリティエンコーダ 104によって選択されたエントリの情報が再度 CAM部 1 03に与えられ、これにより、 CAM部に記憶されているエントリの内容が読み出される ことになる。すなわち、検索の結果一致したエントリの内容を取得することが必要な場 合には、検索サイクルとは別にさらに読み出しサイクルが必要となり、処理速度の低 下を招くことになる。
[0013] 本発明は、上記の問題点に鑑みてなされたものであり、その目的は、データの登録 を行う際の処理速度を向上させる連想メモリシステム、連想メモリシステムの制御方法 、およびこれを備えたデータ処理装置を提供することにある。
[0014] また、その他の目的としては、連想メモリシステムにお 、て従来必要であったプライ オリティエンコーダを不要とすることにより、処理の高速ィ匕および消費電力の低減を 実現する連想メモリシステムを提供することにある。
[0015] また、さらの他の目的としては、検索の結果一致した CAM部に記憶されているェン トリの内容を読み出す際の処理を高速化する連想メモリシステムを提供することにあ る。
[0016] 本発明に係る連想メモリシステムは、上記課題を解決するために、複数のデータを 複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているェ ントリのうち、該入力データに一致するエントリが選択される第 1のメモリと、上記第 1の メモリに記憶されて 、る複数のエントリのそれぞれに対応してデータを記憶し、上記 第 1のメモリにおいて選択されたエントリに対応するデータを出力する第 2のメモリとを 備える連想メモリシステムであって、上記第 1のメモリにおける各エントリが空き状態で ある力否かを示す空きエントリ情報を記憶する空きエントリ記憶部と、上記空きエントリ 記憶部に記憶されている情報に基づいて、上記第 1のメモリに空きエントリがある場 合に、 1つの空きエントリを選択する空きエントリ選択部と、上記第 1のメモリに対する 書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたェ ントリに対して、該書き込みデータを書き込む書き込み制御部とを備えることを特徴と している。
[0017] また、本発明に係る連想メモリシステムの制御方法は、複数のデータを複数のェン トリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち 、該入力データに一致するエントリが選択される第 1のメモリと、上記第 1のメモリに記 憶されて 、る複数のエントリのそれぞれに対応してデータを記憶し、上記第 1のメモリ において選択されたエントリに対応するデータを出力する第 2のメモリとを備える連想 メモリシステムの制御方法であって、上記第 1のメモリにおける各エントリが空き状態 であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶ステップと、上記空 きエントリ記憶ステップにおいて記憶された情報に基づいて、上記第 1のメモリに空き エントリがある場合に、 1つの空きエントリを選択する空きエントリ選択ステップと、上記 第 1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択ステ ップにおいて選択されたエントリに対して、該書き込みデータを書き込む書き込み制 御ステップとを有することを特徴として 、る。
[0018] 上記の連想メモリシステムは、入力データが入力されると、第 1のメモリにおいて、該 入力データに一致するエントリが選択され、選択されたエントリに対応する第 2のメモ リにおけるデータが出力されるものとなっている。このような連想メモリシステムに対す るデータの登録処理の際に、従来では、前記したように、外部装置による空きエントリ の問い合わせのステップ、連想メモリシステムによる空きエントリの通知のステップ、お よび外部装置による連想メモリシステムに対する書き込みステップの 3つのステップを 外部装置と連想メモリシステムとの間で行う必要があった。
[0019] これに対して、上記の構成によれば、書き込みデータが入力されると、空きエントリ 選択部によって選択された空きエントリに対して、該書き込みデータを書き込むように 書き込み制御部が制御するようになっている。したがって、外部装置は、連想メモリシ ステムに対して書き込みデータを入力するステップのみを行えばよいことになり、デー タ登録処理に必要とされる時間を大幅に低減することが可能となる。
[0020] また、本発明に係る連想メモリシステムは、上記の構成にぉ 、て、上記書き込み制 御部が、上記第 1のメモリに対する書き込みデータが入力された場合に、該書き込み データが上記第 1のメモリに既に記憶されているか否かを判定し、記憶されていない 場合に該書き込みデータを上記選択されたエントリに書き込む一方、既に記憶され て 、る場合には、該書き込みデータの書き込みを行わな 、構成としてもょ 、。
[0021] 上記の構成によれば、入力された書き込みデータが第 1のメモリに登録されていな い場合にのみ、該第 1のメモリに登録されることになる。この場合、第 1のメモリにおい て、同じ内容のデータが複数のエントリに登録されることがないことになる。このような 構成であれば、 1つの入力データに対して複数のエントリが一致するエントリとして選 択されることがな 、ので、従来では必要であったプライオリティエンコーダを設ける必 要がないことになる。
[0022] よって、上記の構成によれば、プライオリティエンコーダを設けないことによる構成の 簡素化を実現できる。また、プライオリティエンコーダによる処理の遅延が生じないた め、処理速度の向上を実現できる。さらに、マッチライン数の増加に伴うプライオリティ エンコーダ自身の消費電力の増大の問題も解消することができる。
[0023] また、本発明に係る連想メモリシステムは、上記の構成において、上記第 1のメモリ 力 記憶すべきデータをビット単位で格納するメモリセルを複数備えて 、るとともに、 上記メモリセル力 上記書き込みデータに含まれるビットを当該メモリセルに入力する ビットラインと、検索データに含まれるビットを当該メモリセルに入力するビットラインと を兼用したビットラインを備えており、上記書き込み制御部が、上記第 1のメモリに対 する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択され たエントリに対応するワードラインを駆動することにより、上記ビットラインにセットされ たビットが、選択されたエントリに対応するメモリセルに書き込まれる構成としてもよ!ヽ
[0024] 上記の構成によれば、各メモリセルに対して、検索データおよび書き込みデータが 共に共通のビットラインにセットされ、書き込み時には、書き込み制御部の制御に基 づき、該当メモリセルのワードラインが駆動されて書き込みが行われることになる。した がって、検索処理と書き込み処理との切り替え力 ワードラインの駆動 Z非駆動によ つて行うことが可能となる。これにより、書き込みデータが第 1のメモリに既に記憶され て!、る力否かの判定処理から、記憶されて 、な 、場合に該書き込みデータを選択さ れたエントリに書き込む処理への移行を迅速に行うことが可能となり、処理の高速ィ匕 を図ることができる。
[0025] また、本発明に係る連想メモリシステムは、上記の構成において、上記第 1のメモリ 力 記憶すべきデータをビット単位で格納するデータ領域と、該データ領域に記憶さ れている各ビットの有効 Z無効を示すマスクビットを格納するマスクビット領域とを備 えているとともに、上記第 2のメモリが、上記第 1のメモリに記憶されている複数のェン トリのそれぞれに対応したマスクビットをさらに記憶しており、上記第 1のメモリにおい て、検索データとしての入力データに一致するエントリが選択された場合に、上記第 2のメモリに記憶されている、選択されたエントリに対応するマスクビットと、該入力デ ータとが出力される構成としてもよい。
[0026] 従来では、前記したように、検索の結果、一致したエントリの第 1のメモリに記憶され ているデータを読み出すには、改めて読み出しサイクルを設ける必要があった。これ に対して、上記の構成によれば、第 2のメモリに、第 1のメモリに記憶されている複数 のエントリのそれぞれに対応したマスクビットが記憶されており、第 2のメモリに記憶さ れている、選択されたエントリに対応するマスクビットと、該入力データとが出力される ようになつている。すなわち、第 2のメモリの読み出しのサイクルにおいて、マスクビット と入力データとが出力されるので、これらを組み合わせることにより、一致したエントリ の第 1のメモリに記憶されているデータを認識することが可能となる。よって、検索の 結果一致したエントリの内容を取得することが必要な場合における処理速度の低下 を防止することができる。 [0027] また、本発明に係る連想メモリシステムは、上記の構成において、上記第 1のメモリ 力 複数のサブブロックに分割されており、上記空きエントリ選択部が、上記第 1のメ モリに対する書き込みデータが入力された場合に、該書き込みデータの少なくとも一 部に基づいて決定されるサブブロックの中力 空きエントリを選択するとともに、検索 データが入力された際には、該検索データの少なくとも一部に基づいて決定される サブブロックに対して検索動作が行われる構成としてもよい。
[0028] 上記の構成によれば、書き込みデータは、該書き込みデータの少なくとも一部に基 づいて決定されるサブブロックに登録され、検索時には、検索データの少なくとも一 部に基づいて決定されるサブブロックに対して検索動作が行われる。よって、検索対 象となる第 1のメモリにおけるエントリの数を低減することができるので、検索処理にか 力る時間の低減、および、検索時に必要とされる消費電力の低減を実現することがで きる。
[0029] また、本発明に係る連想メモリシステムは、上記の構成において、上記第 1のメモリ に対して書き込みデータが登録された後に、該書き込みデータに連続する書き込み データをさらに登録する場合、直前の書き込みデータが登録されたサブブロックとは 異なるサブブロックに、該書き込みデータが登録される構成としてもょ ヽ。
[0030] 上記の構成によれば、連続する書き込みデータは、それぞれ異なるサブブロックに 登録されることになる。よって、特定のサブブロックに偏って書き込みデータが登録さ れることを抑制することができる。ここで、特定のサブブロックに書き込みデータが偏 つて登録されてしまうと、そのサブブロックのエントリの数が多くなることにより、検索対 象となるエントリの数の低減の効果が小さくなる。すなわち、上記の構成によれば、検 索対象となるエントリの数をより的確に低減することが可能となる。
[0031] また、本発明に係る連想メモリシステムは、上記の構成において、上記第 1のメモリ に対して書き込みデータが登録された後に、該書き込みデータに連続する書き込み データをさらに登録する場合として、上記第 1のメモリに対して書き込みデータが登録 されたエントリに対応して上記第 2のメモリに登録されるデータ力 次に登録を行うベ き上記第 1のメモリのサブブロックおよびエントリの情報である構成としてもよい。
[0032] 上記の構成によれば、一致比較すべきデータが複数の部分に分割可能な場合に、 各部分を順次第 1のメモリに登録することが可能となる。よって、一致比較すべきデー タの長さが比較的長い場合でも、第 1のメモリに該データを登録することが可能となる
[0033] また、本発明に係るデータ処理装置は、主記憶手段から命令区間を読み出し、演 算処理を行った結果を主記憶手段に書き込む処理を行うデータ処理装置において、 上記主記憶手段から読み出した命令区間に基づく演算を行う第 1の演算手段と、上 記第 1の演算手段による上記主記憶手段に対する読み出しおよび書き込み時に用 いられるレジスタと、上記第 1の演算手段によって命令区間の演算が行われたときの 入力パターンおよび出力パターン力 なる入出力グループを生成する入出力生成手 段と、上記入出力生成手段によって生成された入出力グループを記憶する命令区間 記憶手段とを備え、上記第 1の演算手段が、命令区間を実行する際に、該命令区間 の入力パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致 した場合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力 パターンをレジスタおよび Zまたは主記憶手段に出力する再利用処理を行い、上記 命令区間記憶手段力 請求項 1〜7のいずれか一項に記載の連想メモリシステムに よって構成されることを特徴として 、る。
[0034] 上記の構成では、第 1の演算手段が命令区間を実行する際に、該命令区間の入力 パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致した場 合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力パター ンをレジスタおよび Zまたは主記憶手段に出力する再利用処理を行う構成となって いる。このような構成において、命令区間記憶手段が、上記本発明に係る連想メモリ システムによって構成されているので、データ登録処理に必要とされる時間を大幅に 低減することが可能となり、より処理速度の高いデータ処理装置を提供することが可 能となる。
図面の簡単な説明
[0035] [図 1]本発明の一実施形態に係る連想メモリシステムの具体的な構成を示すブロック 図である。
[図 2]上記連想メモリシステムの概略構成を示すブロック図である。 [図 3]上記連想メモリシステムが備える GATE部における各行の具体的な構成例を示 す回路図である。
[図 4]上記連想メモリシステムが備える CAM部の具体的な構成例を示す回路図であ る。
[図 5]図 4に示す各サブブロックに対応する、深さ 32行、幅 8ビットのサブブロック構成 例を示す回路図である。
[図 6]図 5に示す各サブブロックに対応する、 8ビットデータおよび 1ビットマスクのサブ ブロック構成例を示す回路図である。
[図 7]図 5に示すセンスアンプブロックの構成例を示す回路図である。
[図 8]図 6に示す各サブブロックに対応する、 1ビット CAMの構成例を示す回路図で ある。
[図 9] 1ビットマスクの構成例を示す回路図である。
圆 10]本実施形態に係るデータ処理装置の構成および動作の概略を示す図である [図 ll(a)]RBinZoutの構成を示す図である。
圆 11(b)]命令区間としてサブルーチンが実行された場合の入力データおよび出力 データが RBinZoutに格納された状態を示す図である。
圆 11(c)]命令区間としてループが実行された場合の入力データおよび出力データが
RBinZoutに格納された状態を示す図である。
[図 12(a)]RBinおよび RBoutのより詳細な動作例を示す図である。
[図 12(b)]RBinおよび RBoutのより詳細な動作例を示す図である。
[図 12(c)]図 12 (a)および図 12 (b)に示す 2つの記録を木構造によって表現した状態 を示す図である。
[図 13]命令区間の一例を示す図である。
[図 14]RBinZoutの各レコードを SBinZoutとしての連想メモリシステムに登録する 際に行われる検索および書き込み動作のタイミングチャートである。
[図 15]MPが命令区間を実行する際の SBinZoutに対する再利用のための検索お よび読み出し動作のタイミングチャートである。 [図 16(a)]図 13に示す命令区間において、 strlen("ABCDEF")が実行された場合 の RBinの具体例を示す図である。
[図 16(b)]図 16 (a)に示す RBinを SBinに登録し、 RBoutを SBoutに登録した状態の 例を示す図である。
[図 17(a)]図 16 (b)となっている状態で、 MPが文字列" ABCDEF"を" ABCDEFG" に変更する処理を行った場合の SBinの状態を示す図である。
[図 17(b)]図 17 (a)に示す状態から、 MPが Strlen ("ABCDEFG")を実行し、 RBin Zoutが生成された状態を示す図である。
[図 17(c)]図 17 (b)に示す RBinZoutが SBinZoutに登録された状態を示す図であ る。
[図 18]連想メモリシステムを、深さ方向に 4つのサブブロックに分割した構成を示すブ ロック図である。
[図 19]従来の連想メモリシステムの概略構成を示すブロック図である。
符号の説明
1 連想メモリシステム
11 Vビット記憶部(空きエントリ記憶部)
12 空検出回路 (空きエントリ選択部)
13 CAM部(第 1のメモリ)
14 RAM部(第 2のメモリ)
22 Vビット検索部
23 GATE部(書き込み制御部)
24 V=0優先検出部
25 Vビット読み出し部
30 データ処理装置
31 MP
32A 第 ISP
32B 第 2SP
33 SBinZout 34 RegionTable
35 予測処理部
発明を実施するための最良の形態
[0037] 本発明の一実施形態について図面に基づいて説明すると以下の通りである。
[0038] (データ処理装置の構成)
まず、本実施形態に係る連想メモリシステム 1の適用例としてのプロセッサモデルに ついて説明する。なお、本発明に係る連想メモリシステム 1は、以下に示すプロセッサ モデルへの適用に限定されるものではなぐデータが入力されることによって、該デ ータに一致する記憶データが特定され、それに応じた出力が行われる連想メモリを利 用する種々の構成に適用可能である。このような構成としては、例えば並列データプ 口セッサ、通信ネットワークに設けられるルータにおけるパケットフィルタリングシステ ムなどが挙げられる。
[0039] 図 10は、該プロセッサモデルとしてのデータ処理装置 30の構成および動作の概略 を示す図である。同図に示すように、データ処理装置 30は、主プロセッサとしての M P (第 1の演算手段) 31、副プロセッサとしての第 1SP32Aおよび第 2SP32B、予測 処理部 35、および、 L2cacheにおける記憶領域としての SBinZout (命令区間記憶 手段) 33ならびに RegionTable34を備えている。なお、本実施形態に係る連想メモ リシステム 1は、 SBinZout33に適用される。
[0040] MP31、第 1SP32Aおよび第 2SP32Bは、それぞれ Llcacheを備えており、該 L1 cacheに、命令区間(サブルーチンまたはループ)の入力として使用したデータおよ び出力したデータを記録する記録領域としての RBinZout (入出力生成手段)を備 えている。そして、 MP31、第 1SP32Aおよび第 2SP32Bは、命令区間を実行中に 該命令区間の実行内容を RBinZoutに順次登録し、該命令区間の実行が完了した 際に、 RBinZoutの内容を全プロセッサが共有する SBinZout 33に登録する。
[0041] なお、同図に示す構成では、副プロセッサを 2つ備えた構成となっているが、 1つあ るいは 3つ以上備えた構成となっていてもよい。また、副プロセッサが備えられていな V、構成であっても構わな!/、。
[0042] 以下に、図 10を参照しながら、上記の処理についてより具体的に説明する。 MP31 は、命令区間 # 2の実行を完了した際に、 RBinに記録した命令区間の入力を Regio nTable34に送信し、履歴 # 2として記録する(図中(a) )。
[0043] 予測処理部 35は、 RegionTable34に記録されている MP31によって実行された 命令区間入力の履歴 (履歴 # 1、履歴 # 2)に基づいて、例えばストライド予測などに より将来の命令区間入力の予測値を算出する。そして、この入力予測値が第 1SP32 Aおよび第 2SP32Bに送信される(図中(b) )。
[0044] 第 1SP32Aおよび第 2SP32Bは、与えられた入力予測値に基づいて命令区間を 実行し(図中(c) )、実行結果を RBinZoutに記録する(図中(d) )。図 10に示す例で は、第 1SP32Aは、与えられた入力予測値に基づいて命令区間 # 4を実行し、第 2S P32Bは、与えられた入力予測値に命令区間 # 5を実行している。
[0045] その後、第 1SP32Aおよび第 2SP32Bは、命令区間の実行を完了した際に、 RBi nZoutに記録されている実行結果を SBinZout33に送信する(図中(e) )。 SBinZ out33は、第 1SP32Aおよび第 2SP32B力 送られた実行結果のデータを登録す る。
[0046] 一方、 MP31は、命令区間を実行しょうとする際に、 SBinの連想検索を行い、 MP 31で実行中の入力データ、すなわち、現在のレジスタおよび主記憶アドレスの値と 同一であるエントリがある力否かを判定する。ここで、入力データと一致したエントリが 検出された場合には、対応する出力セットである SBoutの内容を、該命令区間の出 力データとして出力する(図中(f) )。すなわち、過去の実行結果、および第 1SP32A および第 2SP32Bにおいて事前実行された結果を再利用することにより、命令区間 の実行を省略して処理の高速ィ匕が実現される。図 10では、命令区間 # 4および命令 区間 # 5が再利用によって MP31による実際の演算が行われることなしに出力を得 ている。
[0047] なお(f)において再利用を行った場合にも、 (a)における処理と同様に、 MP31に おいて再利用が行われた命令区間の入力パターンを RegionTable34に送信するた めに、再利用が行われた命令区間の入力パターンが SBin力も読み出される。
[0048] (RBinZoutの構成)
図 11 (a)は、 RBinZoutの構成を示している。同図に示すように、 RBinZoutは、 スタックポインタを示す%sp、 RBin部、および RBout部を備えている。 RBin部には、 CompareFlag領域、 Type領域、 Reg. /Mem. Address領域、データ領域、およ びマスク領域が設けられている。また、 RBout部には、 Type領域、 Reg. /Mem. A ddress領域、データ領域、およびマスク領域が設けられている。 RBin部に命令区間 実行時の入力データが格納され、 RBout部に出力データが格納される。
[0049] CompareFlag領域は、該エントリの検証が必要であるか否かを示すフラグを格納 する。すなわち、 CompareFlagは、次に比較すべきレジスタ番号または主記憶アド レスの内容が更新されたことを示している。 Type領域は、該エントリに格納されるデ ータがどのタイプのデータであるか否かを示す情報を格納する。 Reg. /Mem. Ad dress領域は、該当エントリに格納されるデータ力 レジスタまたは主記憶のどのアド レスに格納されていたものであるかを示す情報を格納する。データ領域は、該エントリ に格納される実データを格納し、マスク領域は、データ領域におけるどのビットが有 効であるかを示すマスクビットデータを格納する。
[0050] 図 11 (b)は、命令区間としてサブルーチンが実行された場合の入力データおよび 出力データが RBinZoutに格納された状態を示しており、図 11 (c)は、命令区間と してループが実行された場合の入力データおよび出力データが RBinZoutに格納 された状態を示している。
[0051] 図 12 (a)および図 12 (b)に、 RBinおよび RBoutのより詳細な動作例を示す。同図 では、図 13に示す関数が実行された状態を示している。図 13において、 strlen (str )は、 NULL文字によって終端された文字列の長さを求める関数である。この関数を 命令区間として実行した結果、引数に文字列" ABCDEF"が与えられた場合、および 、引数に文字列" ABCDEFG"が与えられた場合に、命令区間の入力および出力を記 録すると、それぞれ図 12 (a)および図 12 (b)に示す RBinおよび RBoutが得られる。 この 2つの記録を木構造によって表現したものを図 12 (c)に示す。
[0052] 以上のようなプロセッサモデルにおいて、連想メモリシステム 1によって構成される S BinZout33に対して要求される機能は次の通りである。
[0053] 図 10の(e)において、 RBinの内容を SBinZout33に登録する際には、次の処理 が行われる。まず、 RBinの内容に基づいて、 SBinZout33の連想検索が行われる 。連想検索の結果、 RBinの内容が SBinZout33に既に登録されている場合には、 SBinZout33に対する登録処理は行われない。一方、 RBinの内容が SBinZout3 3に登録されて!、な!/、場合には、連想メモリシステム 1の空きエントリに対して RBinの 内容が書き込まれる。
[0054] 図 10の(f)において、 MP31が SBinZout33を検索する際には、次の処理が行わ れる。まず、 SBinの連想検索を行い,実行中の入力データ、すなわち、現在のレジ スタおよび主記憶アドレスの値と同一であるエントリがあるか否かを判定する。実行中 の入力データと同じ内容のエントリがある場合には、該エントリに属する SBinおよび S Boutの内容を読み出す。一方、実行中の入力データと同じ内容のエントリがない場 合には、検索を終了する。
[0055] (再利用処理の概略)
ここで、再利用処理の概略について、関数およびループのそれぞれの場合につい て説明する。
[0056] まず、関数の場合について説明する。関数から復帰するまでに次の関数を呼び出 した場合、または、登録すべき入出力が再利用表の容量を超える、引数の第 7ワード を検出する、途中でシステムコールや割り込みが発生する、などの擾乱が発生しなか つた場合、復帰命令を実行した時点で、登録中のエントリを有効にする。
[0057] 以降、関数を呼び出す前に、(l)SBinZout33に登録されているエントリにおける 関数の先頭アドレスに、該当関数の先頭アドレスと一致するものがあるかを検索する 。一致するものがある場合には、(2)SBinZout33に登録されている該当関数に関す るエントリにおける引数力 呼び出す関数の引数と完全に一致するエントリを選択す る。そして、(3)関連する主記憶アドレスすなわち少なくとも 1つの Maskが有効である R eadアドレスを SBinZout33からすべて参照して、(4)SBinZout33に登録されてい る内容と一致比較を行う。全ての入力が一致した場合に、(5)SBinZout33に登録済 の出力(返り値、大域変数、および Aの局所変数)を主記憶に書き戻すことによって、 関数の実行を省略する、すなわち関数の再利用を実現することができる。
[0058] 次に、ループの場合について説明する。ループが完了する以前に関数から復帰し たり、前記した擾乱が発生したりするなど、ループの入出力登録が中止されなければ 、登録中のループに対応する後方分岐命令を検出した時点で、登録中の入出力表 エントリを有効にし、そのループの登録を完了する。
[0059] さらに、後方分岐命令が成立する場合は、次のループが再利用可能かどうかを判 断する。すなわち、後方分岐する前に、(l)SBinZout33に登録されているエントリに おけるループの先頭アドレスに、該当ループの先頭アドレスと一致するものがあるか を検索する。一致するものがある場合には、(2)SBinZout33に登録されている該当 ループに関するレジスタ入力値力 呼び出すループのレジスタ入力値と完全に一致 するエントリを選択する。そして、(3)関連する主記憶アドレスを SBinZout33から全 て参照して、(4)SBinZout33に登録されている内容と一致比較を行う。全ての入力 がー致した場合に、(5)SBinZout33に登録済の出力(レジスタおよび主記憶出力 値)を主記憶に書き戻すことによってループの実行を省略する、すなわちループの再 利用を実現することができる。
[0060] 再利用した場合、 SBinZout33に登録されている分岐方向に基づいて、さらに次 のループに関して同様の処理を繰り返す。一方、次のループが再利用不可能であれ ば、次のループを通常に実行し、 SBinZout33への登録を開始する。
[0061] (連想メモリシステムの概略構成)
図 2は、本実施形態に係る連想メモリシステム 1の概略構成を示すブロック図である 。同図に示すように、連想メモリシステム 1は、 Vビット記憶部(空きエントリ記憶部) 11 、空検出回路 (空きエントリ選択部) 12、 CAM部(第 1のメモリ) 13、および RAM部( 第 2のメモリ) 14を備えた構成となっている。
[0062] CAM部 13は、データが入力されることによって、該データに一致する記憶データ が特定され、それに応じた出力が行われる CAMによって構成されている。この CAM 部 103は、複数のエントリを記憶しており、入力データが記憶されているエントリと一 致した場合に、該エントリに対応したマッチラインカゝら MATCH信号が RAM部 14に 対して出力される。また、 CAM部 103は、各エントリに対応して記憶されているデー タをビット単位で格納するデータ領域と、該データ領域に記憶されて 、る各ビットのう ち、どのビットが有効であるかを示すマスクビットを格納するマスクビット領域とを備え ている。 [0063] RAM部 14は、いわゆる RAMによって構成されており、 CAM部 13から MATCH 信号が出力されたエントリに対応する記憶データを出力するようになって!/、る。また、 RAM部 14には、 CAM部 13に記憶されて!、る複数のエントリのそれぞれに対応した マスクビットをさらに記憶して 、る。
[0064] Vビット記憶部 11は、 CAM部 13に含まれるエントリのそれぞれに対応した Vビット を記憶するものである。 Vビットは、該エントリが有効である力否かを示すビットである 。本実施形態では、有効である場合に Vビットを 1とし、無効である場合に Vビットを 0 としている。
[0065] 空検出回路 12は、 Vビット記憶部 11を参照することにより、 CAM部 13における空 きエントリを検出する回路である。 CAM部 13に対してデータが書き込まれる際には、 空検出回路 12で検出された空きエントリに対して書き込みが行われる。
[0066] 以上のような構成の連想メモリシステム 1にお 、て、本実施形態では、検索が行わ れた場合に、入力データに一致するエントリが 1個または 0個となるように、 CAM部 1 3へのデータの登録が行われるように制御が行われるようになって!/、る。これにより、 従来技術では必要であったプライオリティエンコーダを省略することが可能となる。
[0067] 従来の CAMでは、データの登録を行う際には、次のような手順で行われる。まず C AMにおける空きのエントリのアドレス情報が取得され、該アドレスに対してデータの 登録が行われる。このようなデータ登録処理のみの場合、複数のエントリに対して同 一のデータが記録されることが考えられ、前述した RAMの読み出しに競合が生じる という問題が発生する。
[0068] これに対して、本実施形態における連想メモリシステム 1では、指定した書き込みデ ータが既に CAM部 13に登録されている場合には、該書き込みデータの登録が行わ れず、未登録である場合にのみ空きエントリに対して該書き込みデータが登録される ように、回路が構成されている。これにより、高々 1つのマッチラインがアサートされる ことが保証される。
[0069] また、本実施形態では、 RAM部 14に CAM部 13に記憶されているマスクビットと同 じマスクビットを記憶させている。これにより、 CAM部 13の検索結果を受けて RAM 部 14が読み出される際に、該マスクビットパターンが同時に読み出され、検索データ 自身と組み合わせることにより、検索の結果一致した CAM部 13のエントリの内容を 読み出すことを実現している。以下、上記の内容を実現する構成について、より詳細 に説明する。
[0070] (連想メモリシステムの具体構成)
図 1は、図 2に示す連想メモリシステム 1をより具体的に示したブロック図である。同 図に示すように、連想メモリシステム 1は、 CAM部 13、 RAM部 14に加えて、 Vビット 検索部 22、 GATE部(書き込み制御部) 23、 V=0優先検出部 24、および、 Vビット 読み出し部 25を備えている。なお、同図において、図 2に示した Vビット記憶部 11は 図示されていない。また、図 2に示した空検出回路 12は、 Vビット検索部 22、 V=0優 先検出部 24、および、 Vビット読み出し部 25に相当する。
[0071] 検索すべきデータを示す信号である SDおよび SDの反転信号である XSDは、 CA M部 13に入力される。 CAM部 13は、 SDZXSDに基づいて連想検索を行い、検索 結果を示す MATCH信号を GATE部 23に出力する。
[0072] 一方、 Vビット記憶部 11から出力される、各エントリに対応する Vビット情報を示す信 号である Vおよび Vの反転信号である XVは、 Vビット検索部 22に入力される。 Vビット 検索部 22は、 CAM部 13における各エントリに対応する Vビット情報を格納するととも に、有効なエントリ、すなわち、 V= lに設定されているエントリに対して MATCH信 号を GATE部 23に出力する。このように、 Vビット検索部 22を設けることによって、 C AM部 13における検索結果のうち、有効なエントリのみを対象として GATE部 23に MATCH信号を出力することができる。
[0073] また、 Vビット記憶部 11から出力される VZXVは、 Vビット読み出し部 25にも入力さ れる。 Vビット読み出し部 25は、 Vビット検索部 22と同様に、 CAM部 13における各ェ ントリに対応する Vビット情報を格納するとともに、 V=0となっているエントリの情報を V=0優先検出部 24に出力する。
[0074] なお、図 1に示す構成では、 Vビット検索部 22と Vビット読み出し部 25とを両方設け た構成となっている力 どちらか一方のみを備えた構成としてもよい。例えば Vビット 検索部 22のみを設けた場合、該 Vビット検索部 22と GATE部 23との間に V=0優先 検出部 24を設けることによって、同様の動作を行うことが可能である。しかしながら、 この構成の場合、 Vビット検索部 22と GATE部 23との間の距離が長くなることになり 、信号伝達の遅延により、高速動作の障害となるという問題がある。
[0075] V=0優先検出部 24は、 Vビット読み出し部 25から入力された V=0となっているェ ントリの情報の中から、所定の優先順位 (例えばエントリ番号の小さい順など)に従つ て 1つのエントリを選択し、選択したエントリの情報を GATE部 23に出力する。
[0076] GATE部 23は、以上の情報に基づいて、検索データに一致するエントリが存在す る場合には RAM部 14に対して Read動作を指示し、存在しない場合には、 CAM部 13および RAM部 14に対して Write動作を指示する。
[0077] なお、 Vビット検索部 22は、上記したように、 CAM部 13における有効なエントリの みを検索対象とするために、検索データと一体となって、 V= lであるエントリのみを 検索するための追加ビットであり、 Vビット読み出し部 25と同じ値を保持するように構 成されている。すなわち、検索時には、 Vビット検索部 22において V= lを用いて検 索が行われると同時に、空きエントリ検出時には、 Vビット読み出し部 25において V= 0のエントリの選択が行われる。空きエントリに有効データが書き込まれる際には、 Vビ ット検索部 22および Vビット読み出し部 25の両方において、該エントリのビットに V= 1が書き込まれる。
[0078] (GATE部の具体構成例)
図 3は、 GATE部 23における各行の具体的な構成例を示している。なお、ここでい う行とは、 CAM部 13におけるエントリに対応するものである。すなわち、実際には、 図 3で示す構成力 GATE部 23に設けられている行の数だけ設けられていることに なる。 GATE部 23の各行には、 CAM部 13から出力される MATCH信号、 V=0優 先検出部 24から出力される D信号、 Write動作の場合には 1、 Search動作の場合 には 0となる WRITE信号、および、全ての Match— lineが 0であるか否かを示す AL LO信号が入力されている。また、 GATE部 23における動作サイクルを規定するクロ ック信号として、 CK1、 CK2、 CK3、 CK4、ならびに、これらの反転信号である XCK 1、 XCK2、 XCK3、 XCK4が入力されている。
[0079] なお、 CK1、 CK2、 CK3、 CK4は、後述するサイクル 1AZ2AZ3AZ4A前半、 1 AZ2AZ3AZ4A後半、サイクル 1BZ2BZ3BZ4B前半、 1BZ2BZ3BZ4B後 半に 1となるように外部から与えるクロック信号である。
[0080] WRITE信号が 1、すなわち Write動作が行われている際に、 MATCH信号が 1で ある場合には、 ALLO信号は 0となる。この場合、 RAM部 14のリードイネ一ブル信号 である RRENおよび RAM部 14のセンスィネーブル信号である RSENが出力される ことにより、 RAM部 14における Read動作が行われる。
[0081] また、 WRITE信号が 1、すなわち Write動作が行われている際に、 MATCH信号 が 0であり、 ALLO信号が 0である場合には、他の行で RAM部 14における Read動作 が行われることになる。
[0082] また、 WRITE信号が 1、すなわち Write動作が行われている際に、 MATCH信号 が 0であり、 ALLO信号が 1である場合には、 Write動作対象となる入力データと一致 するエントリが存在しな力つたことになる。
[0083] ここで、 D信号によって該当行が V=0であることが示されている場合には、該当行 に入力データを登録する処理が行われる。すなわち、この場合には、 RAM部 14の 該当行を駆動するための RWL、 CAM部 13の該当行を駆動するための CWL、 RA M部 14のライトイネーブル信号である RWENが出力される。一方、 D信号によって該 当行が V= 1であることが示されている場合には、該当行には有効なデータが登録さ れて 、るので、 CAM部 13および RAM部 14に対する書き込み処理は行われな!/、。
[0084] 一方、 WRITE信号が 0、すなわち Search動作が行われて!/、る際に、 MATCH信 号が 0であり、 ALLO信号が 0である場合には、他の行で RAM部 14における Read動 作が行われることになる。
[0085] また、 WRITE信号が 0、すなわち Search動作が行われて!/、る際に、 MATCH信 号が 0であり、 ALLO信号が 1である場合には、検索データと一致したエントリが存在 しなかったことになるので、 Read動作は行われな!/、。
[0086] (CAM部の具体構成例)
図 4は、 CAM部 13の具体的な構成例を示している。同図に示す例では、 CAM部 13を、深さ 32行、幅 128ビット(8ビットごとに 1ビットのマスクを伴うので、計 144ビット )としている。なお、行はエントリに対応しており、幅は各エントリに格納可能なデータ のビット数に対応している。また、 8ビットごとに設けられるマスクは、該 8ビットの情報 が有効である力否かを示すビットであり、 1の場合に有効、 0の場合に無効となる。
[0087] 図 1に示したように、 CAM部 13に対しては、検索すべきデータを示す信号である S Dおよび反転信号である XSDが入力されている。この SDZXSDは、 CAM部 13に 入力されると、正負入力信号としての WDZXWDとして CAM部 13が備える各サブ ブロックに入力される。ここでは、 WD/XWDは、 128ビット分のデータおよび 8ビット 分のマスクを示す信号 WDZXWD< 0: 143 >となって!/、る。
[0088] また、同図に示すように、 CAM部 13は、 SBAOO〜SBA15の 16個のサブブロック を備えている。そして、各サブブロックに対して、 WD/XWDく 0 : 143 >のうち、 8ビ ット分のデータおよびそれに対応する 1ビット分のマスクを示す信号がそれぞれ入力 される。例えばサブブロック SBAOOには、 WDZXWDく 0 : 8 >が入力され、サブブ ロック SBA01には、 WDZXWDく 9 : 17>が入力され、以降、 9ビット分ずつ各サブ ブロック〖こ人力される。
[0089] また、各サブブロックからは、 8ビット分のデータおよびそれに対応する 1ビット分の マスクを示す読み出し信号がそれぞれ出力されるようになっている。例えばサブプロ ック SBAOO力らは、正負出力信号としての 1¾37:^0< 0 : 8 >が出力され、サブブ ロック SBA01からは、 RDZXRDく 9 : 17>が出力され、以降、 9ビット分ずつ各サブ ブロックから出力される。そして、各サブブロックから出力された RDZXRDがまとめ て RDZXRDく 0: 143 >として CAM部 13からの読み出し信号として出力される。
[0090] なお、詳細は後述する力 本実施形態では、 CAM部 13の検索結果を受けて RA M部 14が読み出される際に、 RAM部 14に記録されているマスクビットパターンが同 時に読み出され、検索データ自身と組み合わせることにより、検索の結果一致した C AM部 13のエントリの内容が読み出されるようになつている。よって、基本的には、上 記の RDZXRDの読み出し信号の出力は行われる必要はないので、これに関する 構成を設けな 、構成としてもょ 、。
[0091] 各サブブロックには、各行に対応するワードライン信号としての WLく 0 : 31 >、内 容を読み出すために必要なビットラインプリチャージ信号としての BPRE · SPRE、ラ イトイネ一ブル信号としての WEN、リードィネーブル信号としての REN、センスアン プィネーブル信号としての SENが入力されている。また、各サブブロックからは、各 行に対応するマッチライン信号としての MATCHく 0: 31 >が出力されて!、る。
[0092] 図 5は、図 4に示す SBAOO〜SBA15の各サブブロックに対応する、深さ 32行、幅 8ビット(マスク 1ビットを含むので計 9ビット)のサブブロック構成例を示して 、る。なお 、同図に示す例では、上記の SBAOOのサブブロックを示している力 その他のサブ ブロックも同様の構成となる。
[0093] SBAOOのサブブロックは、センスアンプブロック SABおよび 32個のサブブロックと しての SBBOO〜SBB31を備えている。センスアンプブロック SABには、 WD/XW D< 0 : 8 >、 BPRE' SPRE、 WEN, REN、および SENが入力される。また、センス アンプブロック SABからは、 RD/XRD< 0: 8 >が出力されて!ヽる。
[0094] SBBOO〜SBB31は各行に対応しており、それぞれに対して、ワードライン信号とし ての WLく 0>〜WLく 31 >が入力されている。また、 SBBOO〜SBB31のそれぞれ からは、マッチライン信号としての MATCHく 0 >〜MATCHく 31 >が出力されて いる。
[0095] センスアンプブロック SABに入力された WDZXWDく 0: 8 >は、ビットライン信号と しての BL/XBLく 0: 8 >として、 SBBOO〜SBB31のそれぞれに対して入力される 。また、 SBBOO〜SBB31からの読み出し信号は、 BL/XBLく 0 : 8 >としてセンス アンプブロック SABに入力され、これに応じて RDZXRDく 0: 8 >が出力されて!、る
[0096] 図 6は、図 5に示す SBBOO〜SBB31の各サブブロックに対応する、 8ビットデータ および 1ビットマスクのサブブロック構成例を示している。なお、同図に示す例では、 上記の SBBOOのサブブロックを示すものとする力 その他のサブブロックも同様の構 成となる。
[0097] SBBOOのサブブロックは、 8個の SBC00〜SBC07、および、 1個の SBMを備えて いる。 SBC00〜SBC07のそれぞれは 1ビット CAM (メモリセル)に相当するものであ り、 SBMは 1ビットマスクに相当するものである。ワードライン信号としての WLは、 SB C00〜SBC07および SBMのそれぞれに対して共通に入力される。
[0098] また、 SBC00〜SBC07、および SBMのそれぞれには、各ビットのメモリセルに対 して書き込み、読み出し、検索を行うためのビットライン信号としての BLZXBL< 0> ~BL/XBL < 8 >力 S入力される。
[0099] また、 SBC00〜SBC07のそれぞれから出力されるマッチライン信号としての MLは 、ー且 SBMに入力される。そして、 SBMは、 SBC00〜SBC07からの MLが全て 1と なり、かつ、自身におけるマスクビットの比較においても一致した場合に、 MATCH 信号を出力する。
[0100] 図 7は、図 5に示すセンスアンプブロック SABの構成例を示している。センスアンプ ブロック SABは、 9個のセンスアンプ SA00〜SA08を備えている。ここで SAOO〜S A07は 8ビットデータのそれぞれのビットに対応しており、 SA08は 1ビットマスクのビ ットに対応している。なお、センスアンプ SA00〜SA08は一般的に用いられる構成 のものでよいので、ここではその説明を省略する。
[0101] 図 8は、図 6に示す SBC00〜SBC07の各サブブロックに対応する、 1ビット CAM の構成例を示している。また、図 9は、図 6に示す SBMに対応する 1ビットマスクの構 成例を示している。
[0102] 1ビット CAMは、トランジスタ NO〜N3、 PO、 P2によって構成される RAM機能部と 、トランジスタ N5〜N8によって構成される CAM機能部とによって構成される。 RAM 機能部には WLおよび BLZXBLが接続されており、 CAM機能部に MLが接続され ている。
[0103] 1ビットマスクは、トランジスタ NO〜N3、 PO、 P2によって構成される RAM機能部と 、トランジスタ Ni l ·Ν12によって構成される CAM機能部とによって構成される。 RA M機能部には WLおよび KLZXKLが接続されており、 CAM機能部に MLおよび M ATCHが接続されて!、る。
[0104] 検索時には、 1ビットマスクにおいて MATCHが 1にプリチャージされた後に、 1ビッ ト CAMにおいて各 BLZXBLに検索データがセットされる。マスクビットの値力 ^であ る場合、 1ビットマスクにおいてトランジスタ Ni lおよび N12が OFFとなり、 MATCH が ML力 切り離されるため、対応する 8個の 1ビット CAMにいかなる比較値を与えら れても、 1にプリチャージされた MATCHを 0に変化させることはできないことになる。 すなわち、マスクビットが 0である場合には、必ず MATCHが 1となり、入力データと 一致していると判定される。 [0105] 一方、マスクビットの値が 1である場合、 1ビットマスクにおいてトランジスタ Ni lおよ び N12は ONとなり、 MATCHが MLに接続されるため、対応する 8個の 1ビット CA Mの全てが比較値と一致した場合にのみ、 1にプリチャージされた MATCHが 1を保 持され、入力データと一致していると判定される。
[0106] 書き込み時には、 BLZXBLに書き込み値がセットされた後、 WLがオンされる。こ れにより、 RAM機能部に書き込み値が格納される。読み出し時には、 BLZXBLが 1 にプリチャージされた後、 WLがオンされ、さらに外部のセンスアンプが稼働されること により、 BLZXBLに値が出力される。
[0107] 以上、図 4〜図 9を参照しながら CAM部 13の構成について説明した力 RAM部 1 4は、上記の CAM部 13の構成から、データ部の MLに関わる回路、マスク部、 ML、 および、 MATCHを全て除去した構成となる。よって、データの書き込み時、および 読み出し時の動作は CAM部 13における動作を同様となる。すなわち、書き込み時 には、 BLZXBLに書き込み値がセットされた後、 WLがオンされる。これにより、 RA M機能部に書き込み値が格納される。読み出し時には、 BLZXBLが 1にプリチヤ一 ジされた後、 WLがオンされ、さらに外部のセンスアンプが稼働されることにより、 BL ZXBLに値が出力される。
[0108] (連想メモリシステムにおけるタイミングチャート)
以上のような構成の連想メモリシステム 1におけるタイミングチャートを図 14および 図 15に示す。図 14は、 RBinZoutの各レコードを SBinZout33としての連想メモリ システム 1に登録する際に行われる検索および書き込み動作のタイミングチャートを 示しており、図 15は、 MP31が命令区間を実行する際の SBinZout33に対する再 利用のための検索および読み出し動作のタイミングチャートを示している。
[0109] まず、図 14に示すタイミングチャートについて説明する。サイクル 1A前半では、 CA M部 13における連想検索に備えて、 CAM部 13の全てのマッチラインが 1にプリチヤ ージされる。図中では、 MATCH— prechargeがサイクル 1A前半で HIGHとなって いることが示されている。
[0110] 同様に、 RAM部 14の読み出しに備えて、 RAM部 14の全てのビットラインが 1にプ リチャージされる。図中では、 RAM— BL— prechargeがサイクル 1A前半で HIGH となって!/ヽることが示されて!/、る。
[0111] また、 VALIDビットが 0である全エントリの中力も最も優先順位が高い空きエントリを 探す動作が V=0優先検出部 24にて開始される。図中では、 V=0 : priority—O— d etectorがサイクル 1A前半で HIGHとなっていることが示されている。なお、この動作 は、検索データに一致するエントリがない、すなわち検索データが未登録であること が判明した場合に、該検索データを登録するための空きエントリを 1つ準備するため に行われる。 V=0優先検出部 24におけるこの動作は、プライオリティエンコーダと同 様に、ある程度の時間を必要とするので、サイクル 1Aにて開始しておくことが好まし い。
[0112] サイクル 1A後半では、まず、書き込みデータが CAM部 13の SDZXSDおよび RA
M部 14の WDZXWDに与えられる。図中では、 SDZXSDZWDZXWDがサイク ル 1 A後半で HIGHとなって!/、ることが示されて!/、る。
[0113] また、 CAM部 13では、 RBinの内容が書き込みデータとして与えられることによつ て、各エントリが書き込みデータと一致するかの評価、すなわち、 MATCHの評価が 開始されると同時に、全ての MATCHが 0、すなわち、一致するエントリが全くない( ALL0? YES)ことを調査するために、 ALL0信号のプリチャージが開始される。図 中では、 ALLO— prechargeがサイクル 1A後半で HIGHとなっていることが示されて いる。
[0114] サイクル 1Bでは、 CAM部 13における MATCHの評価結果に基づき、 MATCH ? YESであることが判明した行に対応する RAM部 14のワードライン (RWL)が GAT E部 23によって駆動され、 RAM部 14に記憶されているデータの読み出しが準備さ れる。そして、 GATE部 23は、 ALL0信号力LOWであることをそのまま用いて、 RA M読み出しのためのセンスアンプに必要なリードィネーブル信号としての RRENを L OWに切り替える。これにより、一致したエントリに対応する RAM部 14におけるデー タの読み出しが行われる。なお、この例では、 RAM部 14は、 RREN力LOWの時に データの読み出しが行われるものとしている。
[0115] RAM部 14力も読み出されたデータが次のエントリのアドレスに関する情報を示して いる場合、 RBinZoutの次のエントリの内容と比較されて検証が行われる。この時、 実行して 、るプログラムが正常なプログラムである限り検証が失敗することはな 、が、 例えばプログラムにバグがある場合には、検証に失敗することになる。この場合、検 証に失敗したことを示す信号が出力されるようになって!/ヽてもよ!/、。
[0116] 引続きサイクル 2Aでは、サイクル 1Aと同様に、次の CAM部 13の連想検索に備え て、 CAM部 13の全マッチラインが 1にプリチャージされる。図中では、 MATCH— p rechargeがサイクル 2A前半で HIGHとなって!/、ることが示されて!/、る。
[0117] 同様に、 RAM部 14の読み出しに備えて、 RAM部 14の全てのビットラインが 1にプ リチャージされる。図中では、!^01—:61^— じ11& 6がサィクル2八前半で111011 となって!/ヽることが示されて!/、る。
[0118] また、検索データが未登録であることが判明した際の空きエントリを 1つ準備するた めに、 VALIDビットが 0である全エントリの中力も最も優先順位が高 、空きエントリを 探す動作が V=0優先検出部 24にて開始される。図中では、 V=0 : priority—O— d etectorがサイクル 2A前半で HIGHとなって!/、ることが示されて!/、る。
[0119] サイクル 2A後半では、まず、次の RBinZoutのエントリが書き込みデータとして CA M部 13の SDZXSDおよび RAM部 14の WDZXWDに与えられる。図中では、 SD /XSD/WD/XWDがサイクル 2A後半で HIGHとなって!/、ることが示されて!/、る。
[0120] また、 CAM部 13では、検索データが与えられることによって、各エントリが検索デ ータと一致するかの評価、すなわち、 MATCHの評価が開始されると同時に、全て の MATCHが 0、すなわち、一致するエントリが全くない(ALLO ? YES)ことを調査 するために、 ALL0信号のプリチャージが開始される。図中では、 ALLO-precharg eがサイクル 2A後半で HIGHとなって!/、ることが示されて!/、る。
[0121] サイクル 2Bでは、 CAM部 13における MATCHの評価結果に基づき、 MATCH ? NOであることが判明すると、 RAM部 14からの読み出し動作は行われない。すな わち、 1つもマッチしない場合には ALL0信号が HIGH (ALL0? YES)となることを 受けて、予め V=0優先検出部 24にて探しておいた空きエントリに対応する CAM部 13および RAM部 14における WL (CWLZRWL)がオンされ、該空きエントリに対す る書き込みデータの書き込みが準備される。そして、 SDZXSDZWDZXWDに用 意されている書き込みデータを CAM部 13および RAM部 14内のビットラインに伝え るために、 ALLO信号を受けてセンスアンプのライトイネーブル信号としての CWEN および RWENがオンされる。これ〖こより、書き込みデータが CAM部 13および RAM 部 14に書き込まれる。
[0122] 次に、図 15に示すタイミングチャートについて説明する。サイクル 3A前半では、 C AM部 13における連想検索に備えて、 CAM部 13の全てのマッチラインが 1にプリチ ヤージされる。図中では、 MATCH— prechargeがサイクル 3A前半で HIGHとなつ ていることが示されている。
[0123] 同様に、 RAM部 14の読み出しに備えて、 RAM部 14の全てのビットラインが 1にプ リチャージされる。図中では、 RAM— BL— prechargeがサイクル 3A前半で HIGH となって!/ヽることが示されて!/、る。
[0124] サイクル 3A後半では、まず、検索すべきレジスタ値などの入力データが CAM部 1 3の SDZXSDおよび RAM部 14の WDZXWDに与えられる。図中では、 SD/XS DZWDZXWDがサイクル 3A後半で HIGHとなって!/、ることが示されて!/、る。
[0125] また、 CAM部 13では、入力データが与えられることによって、各エントリが入力デ ータと一致するかの評価、すなわち、 MATCHの評価が開始されると同時に、全て の MATCHが 0、すなわち、一致するエントリが全くない(ALLO ? YES)ことを調査 するために、 ALLO信号のプリチャージが開始される。図中では、 ALLO-precharg eがサイクル 3A後半で HIGHとなって!/、ることが示されて!/、る。
[0126] サイクル 3Bでは、 CAM部 13における MATCHの評価結果に基づき、 MATCH ? YESであることが判明した行に対応する RAM部 14のワードライン (RWL)が GAT E部 23によって駆動され、 RAM部 14に記憶されているデータの読み出しが準備さ れる。そして、 GATE部 23は、 ALLO信号力LOWであることをそのまま用いて、 RA M読み出しのためのセンスアンプに必要なリードィネーブル信号としての RRENを L OWに切り替える。これにより、一致したエントリに対応する RAM部 14におけるデー タの読み出しが行われる。
[0127] ここで、 RAM部 14には、 CAM部 13に記憶されているマスクビットパターンと同様 のマスクビットパターンが格納されており、このマスクビットパターンも同時に読み出さ れる。入力データとマスクビットパターンとを組み合わせたデータは、 CAM部 13に記 憶されているエントリの内容を読み出したものと同等となる。すなわち、 CAM部 13に 記憶されているエントリの内容を読み出すサイクルを改めて行うことなぐ該内容と同 等の情報を得ることができる。
[0128] 引続きサイクル 4Aでは、サイクル 3Aと同様に、次の CAM部 13の連想検索に備え て、 CAM部 13の全マッチラインが 1にプリチャージされる。図中では、 MATCH— p rechargeがサイクル 4A前半で HIGHとなって!/、ることが示されて!/、る。
[0129] 同様に、 RAM部 14の読み出しに備えて、 RAM部 14の全てのビットラインが 1にプ リチャージされる。図中では、!^01—:61^— じ11& 6がサィクル4八前半で111011 となって!/ヽることが示されて!/、る。
[0130] 同時に、前回の検索の結果 RAM部 14から得た、次に比較すべきレジスタ等のアド レスを元に、現レジスタ等の読み出しが開始される。サイクル 4A後半では、次に比較 すべき現レジスタ等の内容を CAM部 13の SDZXSDに入力し、未登録であればサ イタル 4Bにおいて全 MATCHが 0となるので、これを検知して検索が終了する。この 場合、 MP31は、再利用が不可能であるので、該当命令区間を実際に実行すること になる。
[0131] (連想メモリシステムへのデータの登録処理)
次に、上記のプロセッサシステムにおいて、 SBinZout33としての連想メモリシステ ム 1に対してデータを登録する際の処理の具体例について説明する。図 16 (a)は、 図 13に示す命令区間において、 strlen ("ABCDEF")が実行された場合の RBinの 具体例を示しており、図 16 (b)は、図 16 (a)に示す RBinを SBinに登録し、 RBoutを SBoutに登録した状態の例を示して 、る。
[0132] RBinの第 1レコードを SBinに登録する際には、まず初期キー(― 1)を含むエントリ が CAM部 13における適当な空き領域 (例えばエントリ番号 200)に書き込まれる。
[0133] RBinの第 2レコードを登録する際には、まず、第 1レコードを登録した CAM部 13に おけるエントリ(エントリ番号 200)に対応する RAM部 14に第 2レコードの CompareF lag, type,および addressの情報が書き込まれる。そして、キー(200)を含むェント リが CAM部 13における次に適当な空き領域 (例えばエントリ番号 210)に書き込ま れる。 [0134] RBinの第 3レコードを登録する際には、第 2レコードを登録した CAM部 13におけ るエントリ(エントリ番号 210)に対応する RAM部 14に第 3レコードの CompareFlag 、 type,および addressの情報が書き込まれる。そして、キー(210)を含むエントリを CAM部 13における次に適当な空き領域に書き込む。
[0135] RBinの内容が終了した場合には、最後に登録した CAM部 13におけるエントリに 対応する RAM部 14に、終了を示す endが登録され、出力値が格納されるべき SBo utのアドレスが該エントリに記録される。そして、 SBoutに RBoutの内容が格納され る。
[0136] 図 16 (b)となっている状態で、 MP31力 文字列" ABCDEF"を" ABCDEFG"に 変更する処理を行ったとする。この場合、 RBinの登録時には主記憶アドレス" 0001 0010"の一致比較を行う必要はない状態であった力 該アドレスの値が変更されるこ とによって、該アドレスの一致比較を行う必要が生じることになる。この場合、図 17 (a) に示すように SBinが変更される。
[0137] まず、内容が変更された主記憶アドレスである" 00010010"をキーにして、 SBin ( RAM)における Addr.の列に対して検索がかけられる。これによつて、エントリ番号 2 10のラインが選択される。そして、該ラインのキーとなっているエントリ番号 200のライ ンが認識される。そして、エントリ番号 200のラインにおいて、次に比較すべき主記憶 アドレスよりも優先して比較すべき主記憶アドレスを示す Alt. keyに、内容が変更さ れた主記憶アドレスである" 00010010"が書き込まれる。
[0138] 以上のように SBinの更新が行われることによって、次に比較すべき主記憶アドレス よりも優先して比較すべき主記憶アドレスを示す Alt. keyが設けられることにより、主 記憶アドレス" 00010000"の内容とキー 200による検索をスキップして、主記憶アド レス" 00010010"の内容とキー 210による検索が可能となる。したがって、検索動作 の処理ステップを低減することができるので、処理の高速ィ匕を図ることができる。
[0139] 図 17 (a)に示す状態から、 MP31が Strlen ("ABCDEFG")を実行し、 RBin/ou tが生成された状態を図 17 (b)に示す。この RBinZoutが SBinZout33に登録され ると、図 17 (c)に示す状態となる。
[0140] 図 17 (c)に示す状態における検索動作は次のように行われる。まず,初期キー(一 1)と関数先頭アドレス(strlen)と引数(OOOIOOOC)とを用いて SBinの CAM部 13 を連想検索してエントリ(200)が検出される。そして、該エントリに対応する RAM部 1 4から次に参照すべき主記憶アドレス" 00010010"と次の検索に使用するキー(210 )が検出される。主記憶アドレスを参照した結果が" 454600XX"であれば、図中丸 4 で示されるエントリに一致し、 "45464700"であれば図中丸 5で示されるエントリに一 致し、それぞれ対応する SBoutの値が出力される。
[0141] (連想メモリシステムをサブブロックに分割する構成例)
上記した図 16 (b)、図 17 (a)、および図 17 (c)に示した連想メモリシステムの登録 処理の場合、検索対象となる登録入力データは、複数 (N個)の部分 (レコード)に分 割されて SBinに登録されることになる。この場合、検索時には、登録入力データの先 頭力も順次一致が検証され、一致しないことが判明した時点で検索が終了する。
[0142] すなわち、上記の構成は、深さを D行 (エントリの数を D個)、幅を Wビットとする連想 メモリシステムを構成する場合に、深さを同じく D行、かつ、幅を WZNビットとする副 連想メモリを Nブロック分設けた構成とすることと等価となる。この場合、先頭カゝら順次 プリチャージするマッチラインを絞り込みつつ N回の連想検索を繰り返すことにより、 マッチラインのプリチャージおよびディスチャージに伴う消費電力を抑えつつ、最終 的に D行 XWビットの連想検索結果を出力することができる。
[0143] し力しながら、この構成の場合、 Wビットの連想検索に必要な時間が N倍に増加す るので、消費電力は抑えられるものの、処理速度を大幅に犠牲にしていることになる
[0144] これに対して、連想メモリシステムを深さ方向に複数個(M個)のサブブロックに分 割し、登録または検索するデータの一部を用いてサブブロックを特定し、該サブプロ ック内で検索を行うようにする構成が考えられる。この構成の場合、同時にプリチヤ一 ジすべきマッチライン数を 1ZMに削減されることになる。よって、消費電力を抑えつ つ、処理速度の低下も抑えることが可能となる。
[0145] 図 18は、図 2に示す連想メモリシステム 1を、深さ方向に 4つのサブブロックに分割 した構成を示している。このように構成した場合における、 SBinZout33としての連 想メモリシステム 1に対してデータを登録する際の処理の具体例について以下に説 明する。
[0146] まず、図 16 (a)に示す RBinを SBinに登録し、 RBoutを SBoutに登録する処理に ついて説明する。 RBinの第 1レコードを SBinに登録する際には、まず初期キー(一 1 )を含むエントリ力 CAM部 13における特定のサブブロックにおける空きエントリ(例 えばサブブロック 1 エントリ 001)に書き込まれる。このサブブロックは、例えば該当 命令区間の先頭アドレス(strlen)の一部に基づいて特定される。すなわち、例えば、 先頭アドレスの一部の情報と、それに対応するサブブロックの情報とを示したサブブ ロック特定テーブルが連想メモリシステム 1に記憶され、このサブブロック特定テープ ルに従って、空検出回路 12が、特定されるサブブロックの中から空きエントリを検出し 、該空きエントリに対して登録が行われるようにすればよ!、。
[0147] RBinの第 2レコードを登録する際には、まず、第 1レコードを登録した CAM部 13に おけるエントリ(サブブロック 1 エントリ 001)に対応する RAM部 14に第 2レコードの CompareFlag、 type,および addressの情報が書き込まれる。そして、キー(サブブ ロック 1—エントリ 001)を含むエントリ力 別のサブブロック、例えば次のサブブロック( 例えばサブブロック 2)における空きエントリ(例えばサブブロック 2 エントリ 005)に 書き込まれる。
[0148] RBinの第 3レコードを登録する際には、第 2レコードを登録した CAM部 13におけ るエントリ(サブブロック 2 エントリ 005)に対応する RAM部 14に第 3レコードの Co mpareFlag、 type,および addressの情報が書き込まれる。そして、キー(サブブロッ ク 2 エントリ 005)を含むエントリ力 別のサブブロック、例えばさらに次のサブブロッ ク(例えばサブブロック 3)における空きエントリに書き込まれる。
[0149] 以上の処理が行われた場合、図 16 (b)に示す SBinZout33において、第 1行目 がサブブロック 1のエントリ 001の行に格納され、第 2行目がサブブロック 2のエントリ 0 05の行に格納され、第 3行目がサブブロック 3の行に格納された状態となる。
[0150] また、上記の状態から、 MP31力 文字列" ABCDEF"を" ABCDEFG"に変更す る処理を行った場合、図 17 (a)に示す SBinZout33において、第 1行目がサブブロ ック 1のエントリ 001の行に格納され、第 2行目がサブブロック 2のエントリ 005の行に 格納され、第 3行目がサブブロック 3の行に格納された状態となる。 [0151] さらに、上記の状態から、 MP31が Strlen ("ABCDEFG")を実行し、図 17 (b)に 示す RBinZoutが生成され、この RBinZoutが SBinZout33に登録された場合、 図 17 (c)に示す SBinZout33において、第 1行目がサブブロック 1のエントリ 001の 行に格納され、第 2行目がサブブロック 2のエントリ 005の行に格納され、第 3行目が サブブロック 3の行に格納された状態となる。
[0152] この状態における検索動作は次のように行われる。まず、関数先頭アドレス(strlen )の一部から特定されたサブブロック (サブブロック 1)において、初期キー(一 1)と、 関数先頭アドレス(strlen)と、引数(0001000C)とを用いて、 SBinの CAM部 13を 連想検索してエントリ(サブブロック 1—エントリ 001)が検出される。そして、該エントリ に対応する RAM部 14から次に参照すべき主記憶アドレス" 00010010"と次の検索 に使用するキー(サブブロック 2—エントリ 005)が検出される。次に、キーが含むプロ ック番号 2に 1をカ卩えたブロック番号 3のサブブロックに対して、該主記憶アドレスの内 容およびキーと一致するエントリが検索される。ここで、主記憶アドレスを参照した結 果が" 454600XX"であれば、図中丸 4で示されるエントリに一致し、 "45464700" であれば、図中丸 5で示されるエントリに一致し、それぞれ対応する SBoutの値が出 力される。
[0153] 以上のように、連想メモリシステム 1を複数のサブブロックに分割しない場合には、 連想メモリシステム 1の全ての行に対する検索が必要であるのに対し、複数のサブブ ロックに分割する場合には、分割数に応じて検索範囲を大幅に縮小することができる
[0154] 本発明は上述した実施形態に限定されるものではなぐ請求項に示した範囲で種 々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段 を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。 産業上の利用可能性
[0155] 本発明に係る連想メモリシステムは、 CAMおよび RAMによって構成される種々の 連想メモリシステムに適用可能である。このような連想メモリシステムは、例えば並列 データプロセッサ、通信ネットワークに設けられるルータにおけるパケットフィルタリン グシステムなどにお 、て利用可能である。 また、本発明に係るデータ処理装置は、 SPARC(Scalable Processor ARChitecture )プロセッサに適用することが可能である。また、 SPARCプロセッサと同様に、 32本 以上の汎用レジスタを有する多くの RISCプロセッサにも適用することが可能である。 また、このようなプロセッサを備えたゲーム機器、携帯型電話機、および情報家電な どに適用することができる。

Claims

請求の範囲
[1] 複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、 記憶されているエントリのうち、該入力データに一致するエントリが選択される第 1のメ モリと、
上記第 1のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記 憶し、上記第 1のメモリにおいて選択されたエントリに対応するデータを出力する第 2 のメモリとを備える連想メモリシステムであって、
上記第 1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情 報を記憶する空きエントリ記憶部と、
上記空きエントリ記憶部に記憶されている情報に基づいて、上記第 1のメモリに空き エントリがある場合に、 1つの空きエントリを選択する空きエントリ選択部と、
上記第 1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選 択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制 御部とを備えることを特徴とする連想メモリシステム。
[2] 上記書き込み制御部が、上記第 1のメモリに対する書き込みデータが入力された場 合に、該書き込みデータが上記第 1のメモリに既に記憶されている力否かを判定し、 記憶されて 、な 、場合に該書き込みデータを上記選択されたエントリに書き込む一 方、既に記憶されている場合には、該書き込みデータの書き込みを行わないことを特 徴とする請求項 1記載の連想メモリシステム。
[3] 上記第 1のメモリが、記憶すべきデータをビット単位で格納するメモリセルを複数備 えているとともに、上記メモリセル力 上記書き込みデータに含まれるビットを当該メモ リセルに入力するビットラインと、検索データに含まれるビットを当該メモリセルに入力 するビットラインとを兼用したビットラインを備えており、
上記書き込み制御部が、上記第 1のメモリに対する書き込みデータが入力された場 合に、上記空きエントリ選択部によって選択されたエントリに対応するワードラインを 駆動することにより、上記ビットラインにセットされたビットが、選択されたエントリに対 応するメモリセルに書き込まれることを特徴とする請求項 2記載の連想メモリシステム
[4] 上記第 1のメモリが、記憶すべきデータをビット単位で格納するデータ領域と、該デ ータ領域に記憶されている各ビットの有効 Z無効を示すマスクビットを格納するマスク ビット領域とを備えて 、るとともに、
上記第 2のメモリが、上記第 1のメモリに記憶されている複数のエントリのそれぞれに 対応したマスクビットをさらに記憶しており、
上記第 1のメモリにおいて、検索データとしての入力データに一致するエントリが選 択された場合に、上記第 2のメモリに記憶されている、選択されたエントリに対応する マスクビットと、該入力データとが出力されることを特徴とする請求項 1記載の連想メ モリシステム。
[5] 上記第 1のメモリが、複数のサブブロックに分割されており、
上記空きエントリ選択部が、上記第 1のメモリに対する書き込みデータが入力された 場合に、該書き込みデータの少なくとも一部に基づいて決定されるサブブロックの中 力 空きエントリを選択するとともに、
検索データが入力された際には、該検索データの少なくとも一部に基づいて決定さ れるサブブロックに対して検索動作が行われることを特徴とする請求項 1記載の連想 メモリシステム。
[6] 上記第 1のメモリに対して書き込みデータが登録された後に、該書き込みデータに 連続する書き込みデータをさらに登録する場合、直前の書き込みデータが登録され たサブブロックとは異なるサブブロックに、該書き込みデータが登録されることを特徴 とする請求項 5記載の連想メモリシステム。
[7] 上記第 1のメモリに対して書き込みデータが登録された後に、該書き込みデータに 連続する書き込みデータをさらに登録する場合として、上記第 1のメモリに対して書き 込みデータが登録されたエントリに対応して上記第 2のメモリに登録されるデータが、 次に登録を行うべき上記第 1のメモリのサブブロックおよびエントリの情報であることを 特徴とする請求項 6記載の連想メモリシステム。
[8] 複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、 記憶されているエントリのうち、該入力データに一致するエントリが選択される第 1のメ モリと、 上記第 1のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記 憶し、上記第 1のメモリにおいて選択されたエントリに対応するデータを出力する第 2 のメモリとを備える連想メモリシステムの制御方法であって、
上記第 1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情 報を記憶する空きエントリ記憶ステップと、
上記空きエントリ記憶ステップにお 、て記憶された情報に基づ 、て、上記第 1のメモ リに空きエントリがある場合に、 1つの空きエントリを選択する空きエントリ選択ステップ と、
上記第 1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選 択ステップにおいて選択されたエントリに対して、該書き込みデータを書き込む書き 込み制御ステップとを有することを特徴とする連想メモリシステムの制御方法。
主記憶手段から命令区間を読み出し、演算処理を行った結果を主記憶手段に書き 込む処理を行うデータ処理装置において、
上記主記憶手段から読み出した命令区間に基づく演算を行う第 1の演算手段と、 上記第 1の演算手段による上記主記憶手段に対する読み出しおよび書き込み時に 用いられるレジスタと、上記第 1の演算手段によって命令区間の演算が行われたとき の入力パターンおよび出力パターン力 なる入出力グループを生成する入出力生成 手段と、上記入出力生成手段によって生成された入出力グループを記憶する命令区 間記憶手段とを備え、
上記第 1の演算手段が、命令区間を実行する際に、該命令区間の入力パターンと 、上記命令区間記憶手段に記憶されている入力パターンとがー致した場合、該入力 パターンと対応して上記命令区間記憶手段に記憶されている出力パターンをレジス タおよび Zまたは主記憶手段に出力する再利用処理を行い、
上記命令区間記憶手段が、
複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、 記憶されているエントリのうち、該入力データに一致するエントリが選択される第 1のメ モリと、
上記第 1のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記 憶し、上記第 1のメモリにおいて選択されたエントリに対応するデータを出力する第 2 のメモリとを備える連想メモリシステムであって、
上記第 1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情 報を記憶する空きエントリ記憶部と、
上記空きエントリ記憶部に記憶されている情報に基づいて、上記第 1のメモリに空き エントリがある場合に、 1つの空きエントリを選択する空きエントリ選択部と、
上記第 1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選 択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制 御部とを備えることを特徴とするデータ処理装置。
PCT/JP2006/312900 2005-08-12 2006-06-28 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 WO2007020751A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-234806 2005-08-12
JP2005234806A JP2007048411A (ja) 2005-08-12 2005-08-12 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置

Publications (1)

Publication Number Publication Date
WO2007020751A1 true WO2007020751A1 (ja) 2007-02-22

Family

ID=37757420

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/312900 WO2007020751A1 (ja) 2005-08-12 2006-06-28 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置

Country Status (3)

Country Link
JP (1) JP2007048411A (ja)
TW (1) TW200710850A (ja)
WO (1) WO2007020751A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009026437A (ja) * 2007-06-21 2009-02-05 Nippon Telegr & Teleph Corp <Ntt> 連想メモリ装置におけるドントケア格納、検索方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06333395A (ja) * 1993-05-19 1994-12-02 Kawasaki Steel Corp 連想メモリ
JPH0917188A (ja) * 1995-06-30 1997-01-17 Oki Electric Ind Co Ltd パケット処理装置のメモリ回路
JP2005092354A (ja) * 2003-09-12 2005-04-07 Japan Science & Technology Agency データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06333395A (ja) * 1993-05-19 1994-12-02 Kawasaki Steel Corp 連想メモリ
JPH0917188A (ja) * 1995-06-30 1997-01-17 Oki Electric Ind Co Ltd パケット処理装置のメモリ回路
JP2005092354A (ja) * 2003-09-12 2005-04-07 Japan Science & Technology Agency データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体

Also Published As

Publication number Publication date
TW200710850A (en) 2007-03-16
JP2007048411A (ja) 2007-02-22

Similar Documents

Publication Publication Date Title
US12087386B2 (en) Parallel access to volatile memory by a processing device for machine learning
CN102841865B (zh) 高性能缓存系统和方法
US7565514B2 (en) Parallel condition code generation for SIMD operations
JP3784766B2 (ja) 多ポート統合キャッシュ
JP3098071B2 (ja) 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム
CN102855121B (zh) 分支处理方法与系统
JPH02153428A (ja) キャッシュ装置と命令読出し装置
JPH0664911B2 (ja) 内容でアドレス指定可能なメモリ・アレイ
KR20080036940A (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
CN103176914B (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
US5943493A (en) Retargetable VLIW computer architecture and method of executing a program corresponding to the architecture
US7346737B2 (en) Cache system having branch target address cache
US20050138613A1 (en) Method and system for code modification based on cache structure
WO2007020751A1 (ja) 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置
JP4243463B2 (ja) 命令スケジューリングのシミュレーション方法とシミュレーションシステム
JP4254954B2 (ja) データ処理装置
JP2006072625A (ja) クラスタ化スーパスカラプロセッサ及びクラスタ化スーパスカラプロセッサにおけるクラスタ間の通信制御方法
KR960015231A (ko) 향상된 어드레스 지정 방법 및 시스템
TWI740860B (zh) 基於截斷的確定性有限自動機利用硬體過濾器施行複雜正規表示法樣式匹配的方法與設備
CN100538666C (zh) 访问控制器和访问控制方法
JP3855077B2 (ja) データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体
JPH09114733A (ja) キャッシュ記憶装置における非整列データ転送機構
JP2005535045A (ja) Vliw命令を処理するためのプロセッサおよび方法
JP3895314B2 (ja) データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体
CN117935877A (zh) 一种存算一体芯片的刷新控制方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06767517

Country of ref document: EP

Kind code of ref document: A1