(57)【要約】【課題】  データの登録を行う際の処理速度を向上させる連想メモリシステムを提供する。【解決手段】  Ｖ＝０優先検出部２４は、Ｖビット記憶部に記憶されている情報に基づいて、ＣＡＭ部１３に空きエントリがある場合に、１つの空きエントリを選択する。そして、ＧＡＴＥ部２３は、ＣＡＭ部１３に対する書き込みデータが入力された場合に、Ｖ＝０優先検出部２４によって選択されたエントリに対して、該書き込みデータを書き込む制御を行う。【選択図】  図１
2007048411.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第１のメモリと、
上記第１のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第１のメモリにおいて選択されたエントリに対応するデータを出力する第２のメモリとを備える連想メモリシステムであって、
上記第１のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶部と、
上記空きエントリ記憶部に記憶されている情報に基づいて、上記第１のメモリに空きエントリがある場合に、１つの空きエントリを選択する空きエントリ選択部と、
上記第１のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制御部とを備えることを特徴とする連想メモリシステム。
【請求項２】
上記書き込み制御部が、上記第１のメモリに対する書き込みデータが入力された場合に、該書き込みデータが上記第１のメモリに既に記憶されているか否かを判定し、記憶されていない場合に該書き込みデータを上記選択されたエントリに書き込む一方、既に記憶されている場合には、該書き込みデータの書き込みを行わないことを特徴とする請求項１記載の連想メモリシステム。
【請求項３】
上記第１のメモリが、記憶すべきデータをビット単位で格納するメモリセルを複数備えているとともに、上記メモリセルが、上記書き込みデータに含まれるビットを当該メモリセルに入力するビットラインと、検索データに含まれるビットを当該メモリセルに入力するビットラインとを兼用したビットラインを備えており、
上記書き込み制御部が、上記第１のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対応するワードラインを駆動することにより、上記ビットラインにセットされたビットが、選択されたエントリに対応するメモリセルに書き込まれることを特徴とする請求項２記載の連想メモリシステム。
【請求項４】
上記第１のメモリが、記憶すべきデータをビット単位で格納するデータ領域と、該データ領域に記憶されている各ビットの有効／無効を示すマスクビットを格納するマスクビット領域とを備えているとともに、
上記第２のメモリが、上記第１のメモリに記憶されている複数のエントリのそれぞれに対応したマスクビットをさらに記憶しており、
上記第１のメモリにおいて、検索データとしての入力データに一致するエントリが選択された場合に、上記第２のメモリに記憶されている、選択されたエントリに対応するマスクビットと、該入力データとが出力されることを特徴とする請求項１記載の連想メモリシステム。
【請求項５】
上記第１のメモリが、複数のサブブロックに分割されており、
上記空きエントリ選択部が、上記第１のメモリに対する書き込みデータが入力された場合に、該書き込みデータの少なくとも一部に基づいて決定されるサブブロックの中から空きエントリを選択するとともに、
検索データが入力された際には、該検索データの少なくとも一部に基づいて決定されるサブブロックに対して検索動作が行われることを特徴とする請求項１記載の連想メモリシステム。
【請求項６】
上記第１のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合、直前の書き込みデータが登録されたサブブロックとは異なるサブブロックに、該書き込みデータが登録されることを特徴とする請求項５記載の連想メモリシステム。
【請求項７】
上記第１のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合として、上記第１のメモリに対して書き込みデータが登録されたエントリに対応して上記第２のメモリに登録されるデータが、次に登録を行うべき上記第１のメモリのサブブロックおよびエントリの情報であることを特徴とする請求項６記載の連想メモリシステム。
【請求項８】
複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第１のメモリと、
上記第１のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第１のメモリにおいて選択されたエントリに対応するデータを出力する第２のメモリとを備える連想メモリシステムの制御方法であって、
上記第１のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶ステップと、
上記空きエントリ記憶ステップにおいて記憶された情報に基づいて、上記第１のメモリに空きエントリがある場合に、１つの空きエントリを選択する空きエントリ選択ステップと、
上記第１のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択ステップにおいて選択されたエントリに対して、該書き込みデータを書き込む書き込み制御ステップとを有することを特徴とする連想メモリシステムの制御方法。
【請求項９】
主記憶手段から命令区間を読み出し、演算処理を行った結果を主記憶手段に書き込む処理を行うデータ処理装置において、
上記主記憶手段から読み出した命令区間に基づく演算を行う第１の演算手段と、上記第１の演算手段による上記主記憶手段に対する読み出しおよび書き込み時に用いられるレジスタと、上記第１の演算手段によって命令区間の演算が行われたときの入力パターンおよび出力パターンからなる入出力グループを生成する入出力生成手段と、上記入出力生成手段によって生成された入出力グループを記憶する命令区間記憶手段とを備え、
上記第１の演算手段が、命令区間を実行する際に、該命令区間の入力パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致した場合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力パターンをレジスタおよび／または主記憶手段に出力する再利用処理を行い、
上記命令区間記憶手段が、請求項１〜７のいずれか一項に記載の連想メモリシステムによって構成されることを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択されるＣＡＭと、ＣＡＭに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、ＣＡＭにおいて選択されたエントリに対応するデータを出力するＲＡＭとを備える連想メモリシステムに関するものである。
【背景技術】
【０００２】
例えばＲＡＭ（Random Access Memory）などの記憶装置では、記憶領域におけるアドレスが入力されることによって記憶されているデータの読み出しが行われる。これに対して、連想メモリと呼ばれる記憶装置では、データが入力されることによって、該データに一致する記憶データが特定され、それに応じた出力が行われるようになっている。このような連想メモリは、ＣＡＭ（content-addressable memory）と称されるメモリによって実現される。
【０００３】
ＣＡＭは、検索すべき内容が与えられると、それに一致するデータが格納されているエントリに対応する信号がＯＮとなるように動作するようになっている。通常は、ＣＡＭはＲＡＭとセットにして用いられる。
【０００４】
ここで、ＣＡＭとＲＡＭとの連携動作について、具体例を挙げて説明する。ＣＡＭに、「５，５，５，５，５」、「１，３，１，１，１」、「１，３，３，５，２」、「６，６，６，６，６」というデータ列がエントリとして登録されており、ＲＡＭに、ＣＡＭにおける各データ列に対応して、「５，５」、「１，１」、「１，２」、「６，６」というデータが登録されているとする。ここで、検索すべきデータ列として、「１，３，３，５，２」をＣＡＭに入力すると、一致するエントリがＯＮとなり、ＲＡＭに登録されている該当するデータ「１，２」が出力されることになる。
【０００５】
このような連想メモリにおいて、検索すべきデータに一致するエントリが複数存在する場合が考えられる。この場合、ＲＡＭの読み出しに競合が生じることになり、競合を解消するための構成が必要となる。この問題に対して、例えば特許文献１には、プライオリティエンコーダを設けることによって、マルチマッチの問題を解決する技術が開示されている。
【０００６】
図１９は、ＣＡＭおよびＲＡＭを備えた従来の連想メモリシステム１００の構成例を示している。同図に示すように、連想メモリシステム１００は、Ｖビット記憶部１０１、空検出回路１０２、ＣＡＭ部１０３、プライオリティエンコーダ１０４、アドレスデコーダ１０５、およびＲＡＭ部を備えている。
【０００７】
上記の連想メモリシステム１００において検索が行われる際には、次のような処理が行われる。まず検索すべきデータがＣＡＭ部１０３に入力され、一致するエントリが検索される。一致したエントリが検出されると、検出信号がプライオリティエンコーダ１０４に入力される。プライオリティエンコーダ１０４は、一致したエントリが複数存在した場合に、優先すべき１つのエントリを選択する処理を行い、選択結果をアドレスデコーダ１０５に送信する。アドレスデコーダ１０５は、選択結果に対応するアドレスを生成し、ＲＡＭ部１０６に送信し、ＲＡＭ部１０６は、指示されたアドレスに対応するデータを読み出しデータとして出力する。
【特許文献１】特開平11-126486号公報（平成11(1999)年5月11日公開）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記のような連想メモリシステムにおいて、従来は、次のような手順でデータの登録処理が行われていた。まず連想メモリシステムにデータを登録しようとする外部装置が、連想メモリシステムに対して空きエントリのアドレスを問い合わせ、連想メモリシステムは、空きエントリを探し出してそのアドレス情報を上記外部装置に通知する。そして、外部装置は、通知された空きエントリのアドレスを指定して登録すべきデータを連想メモリシステムに登録する。
【０００９】
このような登録処理が行われる場合、外部装置による空きエントリの問い合わせのステップ、連想メモリシステムによる空きエントリの通知のステップ、および外部装置による連想メモリシステムに対する書き込みステップの３つのステップを外部装置と連想メモリシステムとの間で行う必要がある。これにより、データ登録処理速度の向上が抑制されているという問題がある。
【００１０】
また、図１９に示す構成で設けられているプライオリティエンコーダは、一致したエントリの数、すなわちマッチライン数の増加とともに対数オーダにて回路ディレイが増大するという特性を有している。このため、ＣＡＭにおけるエントリ数が多い場合、多くのマッチラインが生じる可能性が高くなるので、プライオリティエンコーダが処理速度におけるボトルネックとなることが予想される。すなわち、プライオリティエンコーダを設けることが、連想メモリシステムにおける処理の高速化の障害となるという問題がある。
【００１１】
また、マッチライン数が増加すると、プライオリティエンコーダ自身の消費電力も増大し、これにより連想メモリシステムにおける消費電力も増大するという問題もある。
【００１２】
さらに、図１９に示した構成の場合、検索の結果一致したＣＡＭ部に記憶されているエントリの内容を読み出す際には、改めて読み出しサイクルを設ける必要がある、という問題もある。詳しく説明すると、ＣＡＭ部１０３で一致エントリの検索が行われた後に、プライオリティエンコーダ１０４によって選択されたエントリの情報が再度ＣＡＭ部１０３に与えられ、これにより、ＣＡＭ部に記憶されているエントリの内容が読み出されることになる。すなわち、検索の結果一致したエントリの内容を取得することが必要な場合には、検索サイクルとは別にさらに読み出しサイクルが必要となり、処理速度の低下を招くことになる。
【００１３】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、データの登録を行う際の処理速度を向上させる連想メモリシステム、連想メモリシステムの制御方法、およびこれを備えたデータ処理装置を提供することにある。
【００１４】
また、その他の目的としては、連想メモリシステムにおいて従来必要であったプライオリティエンコーダを不要とすることにより、処理の高速化および消費電力の低減を実現する連想メモリシステムを提供することにある。
【００１５】
また、さらの他の目的としては、検索の結果一致したＣＡＭ部に記憶されているエントリの内容を読み出す際の処理を高速化する連想メモリシステムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明に係る連想メモリシステムは、上記課題を解決するために、複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第１のメモリと、上記第１のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第１のメモリにおいて選択されたエントリに対応するデータを出力する第２のメモリとを備える連想メモリシステムであって、上記第１のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶部と、上記空きエントリ記憶部に記憶されている情報に基づいて、上記第１のメモリに空きエントリがある場合に、１つの空きエントリを選択する空きエントリ選択部と、上記第１のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制御部とを備えることを特徴としている。
【００１７】
また、本発明に係る連想メモリシステムの制御方法は、複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第１のメモリと、上記第１のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第１のメモリにおいて選択されたエントリに対応するデータを出力する第２のメモリとを備える連想メモリシステムの制御方法であって、上記第１のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶ステップと、上記空きエントリ記憶ステップにおいて記憶された情報に基づいて、上記第１のメモリに空きエントリがある場合に、１つの空きエントリを選択する空きエントリ選択ステップと、上記第１のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択ステップにおいて選択されたエントリに対して、該書き込みデータを書き込む書き込み制御ステップとを有することを特徴としている。
【００１８】
上記の連想メモリシステムは、入力データが入力されると、第１のメモリにおいて、該入力データに一致するエントリが選択され、選択されたエントリに対応する第２のメモリにおけるデータが出力されるものとなっている。このような連想メモリシステムに対するデータの登録処理の際に、従来では、前記したように、外部装置による空きエントリの問い合わせのステップ、連想メモリシステムによる空きエントリの通知のステップ、および外部装置による連想メモリシステムに対する書き込みステップの３つのステップを外部装置と連想メモリシステムとの間で行う必要があった。
【００１９】
これに対して、上記の構成によれば、書き込みデータが入力されると、空きエントリ選択部によって選択された空きエントリに対して、該書き込みデータを書き込むように書き込み制御部が制御するようになっている。したがって、外部装置は、連想メモリシステムに対して書き込みデータを入力するステップのみを行えばよいことになり、データ登録処理に必要とされる時間を大幅に低減することが可能となる。
【００２０】
また、本発明に係る連想メモリシステムは、上記の構成において、上記書き込み制御部が、上記第１のメモリに対する書き込みデータが入力された場合に、該書き込みデータが上記第１のメモリに既に記憶されているか否かを判定し、記憶されていない場合に該書き込みデータを上記選択されたエントリに書き込む一方、既に記憶されている場合には、該書き込みデータの書き込みを行わない構成としてもよい。
【００２１】
上記の構成によれば、入力された書き込みデータが第１のメモリに登録されていない場合にのみ、該第１のメモリに登録されることになる。この場合、第１のメモリにおいて、同じ内容のデータが複数のエントリに登録されることがないことになる。このような構成であれば、１つの入力データに対して複数のエントリが一致するエントリとして選択されることがないので、従来では必要であったプライオリティエンコーダを設ける必要がないことになる。
【００２２】
よって、上記の構成によれば、プライオリティエンコーダを設けないことによる構成の簡素化を実現できる。また、プライオリティエンコーダによる処理の遅延が生じないため、処理速度の向上を実現できる。さらに、マッチライン数の増加に伴うプライオリティエンコーダ自身の消費電力の増大の問題も解消することができる。
【００２３】
また、本発明に係る連想メモリシステムは、上記の構成において、上記第１のメモリが、記憶すべきデータをビット単位で格納するメモリセルを複数備えているとともに、上記メモリセルが、上記書き込みデータに含まれるビットを当該メモリセルに入力するビットラインと、検索データに含まれるビットを当該メモリセルに入力するビットラインとを兼用したビットラインを備えており、上記書き込み制御部が、上記第１のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対応するワードラインを駆動することにより、上記ビットラインにセットされたビットが、選択されたエントリに対応するメモリセルに書き込まれる構成としてもよい。
【００２４】
上記の構成によれば、各メモリセルに対して、検索データおよび書き込みデータが共に共通のビットラインにセットされ、書き込み時には、書き込み制御部の制御に基づき、該当メモリセルのワードラインが駆動されて書き込みが行われることになる。したがって、検索処理と書き込み処理との切り替えが、ワードラインの駆動／非駆動によって行うことが可能となる。これにより、書き込みデータが第１のメモリに既に記憶されているか否かの判定処理から、記憶されていない場合に該書き込みデータを選択されたエントリに書き込む処理への移行を迅速に行うことが可能となり、処理の高速化を図ることができる。
【００２５】
また、本発明に係る連想メモリシステムは、上記の構成において、上記第１のメモリが、記憶すべきデータをビット単位で格納するデータ領域と、該データ領域に記憶されている各ビットの有効／無効を示すマスクビットを格納するマスクビット領域とを備えているとともに、上記第２のメモリが、上記第１のメモリに記憶されている複数のエントリのそれぞれに対応したマスクビットをさらに記憶しており、上記第１のメモリにおいて、検索データとしての入力データに一致するエントリが選択された場合に、上記第２のメモリに記憶されている、選択されたエントリに対応するマスクビットと、該入力データとが出力される構成としてもよい。
【００２６】
従来では、前記したように、検索の結果、一致したエントリの第１のメモリに記憶されているデータを読み出すには、改めて読み出しサイクルを設ける必要があった。これに対して、上記の構成によれば、第２のメモリに、第１のメモリに記憶されている複数のエントリのそれぞれに対応したマスクビットが記憶されており、第２のメモリに記憶されている、選択されたエントリに対応するマスクビットと、該入力データとが出力されるようになっている。すなわち、第２のメモリの読み出しのサイクルにおいて、マスクビットと入力データとが出力されるので、これらを組み合わせることにより、一致したエントリの第１のメモリに記憶されているデータを認識することが可能となる。よって、検索の結果一致したエントリの内容を取得することが必要な場合における処理速度の低下を防止することができる。
【００２７】
また、本発明に係る連想メモリシステムは、上記の構成において、上記第１のメモリが、複数のサブブロックに分割されており、上記空きエントリ選択部が、上記第１のメモリに対する書き込みデータが入力された場合に、該書き込みデータの少なくとも一部に基づいて決定されるサブブロックの中から空きエントリを選択するとともに、検索データが入力された際には、該検索データの少なくとも一部に基づいて決定されるサブブロックに対して検索動作が行われる構成としてもよい。
【００２８】
上記の構成によれば、書き込みデータは、該書き込みデータの少なくとも一部に基づいて決定されるサブブロックに登録され、検索時には、検索データの少なくとも一部に基づいて決定されるサブブロックに対して検索動作が行われる。よって、検索対象となる第１のメモリにおけるエントリの数を低減することができるので、検索処理にかかる時間の低減、および、検索時に必要とされる消費電力の低減を実現することができる。
【００２９】
また、本発明に係る連想メモリシステムは、上記の構成において、上記第１のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合、直前の書き込みデータが登録されたサブブロックとは異なるサブブロックに、該書き込みデータが登録される構成としてもよい。
【００３０】
上記の構成によれば、連続する書き込みデータは、それぞれ異なるサブブロックに登録されることになる。よって、特定のサブブロックに偏って書き込みデータが登録されることを抑制することができる。ここで、特定のサブブロックに書き込みデータが偏って登録されてしまうと、そのサブブロックのエントリの数が多くなることにより、検索対象となるエントリの数の低減の効果が小さくなる。すなわち、上記の構成によれば、検索対象となるエントリの数をより的確に低減することが可能となる。
【００３１】
また、本発明に係る連想メモリシステムは、上記の構成において、上記第１のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合として、上記第１のメモリに対して書き込みデータが登録されたエントリに対応して上記第２のメモリに登録されるデータが、次に登録を行うべき上記第１のメモリのサブブロックおよびエントリの情報である構成としてもよい。
【００３２】
上記の構成によれば、一致比較すべきデータが複数の部分に分割可能な場合に、各部分を順次第１のメモリに登録することが可能となる。よって、一致比較すべきデータの長さが比較的長い場合でも、第１のメモリに該データを登録することが可能となる。
【００３３】
また、本発明に係るデータ処理装置は、主記憶手段から命令区間を読み出し、演算処理を行った結果を主記憶手段に書き込む処理を行うデータ処理装置において、上記主記憶手段から読み出した命令区間に基づく演算を行う第１の演算手段と、上記第１の演算手段による上記主記憶手段に対する読み出しおよび書き込み時に用いられるレジスタと、上記第１の演算手段によって命令区間の演算が行われたときの入力パターンおよび出力パターンからなる入出力グループを生成する入出力生成手段と、上記入出力生成手段によって生成された入出力グループを記憶する命令区間記憶手段とを備え、上記第１の演算手段が、命令区間を実行する際に、該命令区間の入力パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致した場合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力パターンをレジスタおよび／または主記憶手段に出力する再利用処理を行い、上記命令区間記憶手段が、請求項１〜７のいずれか一項に記載の連想メモリシステムによって構成されることを特徴としている。
【００３４】
上記の構成では、第１の演算手段が命令区間を実行する際に、該命令区間の入力パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致した場合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力パターンをレジスタおよび／または主記憶手段に出力する再利用処理を行う構成となっている。このような構成において、命令区間記憶手段が、上記本発明に係る連想メモリシステムによって構成されているので、データ登録処理に必要とされる時間を大幅に低減することが可能となり、より処理速度の高いデータ処理装置を提供することが可能となる。
【発明の効果】
【００３５】
本発明に係る連想メモリシステムは、以上のように、上記第１のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶部と、上記空きエントリ記憶部に記憶されている情報に基づいて、上記第１のメモリに空きエントリがある場合に、１つの空きエントリを選択する空きエントリ選択部と、上記第１のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制御部とを備える構成である。これにより、データ登録処理に必要とされる時間を大幅に低減することが可能となるという効果を奏する。
【発明を実施するための最良の形態】
【００３６】
本発明の一実施形態について図面に基づいて説明すると以下の通りである。
【００３７】
（データ処理装置の構成）
まず、本実施形態に係る連想メモリシステム１の適用例としてのプロセッサモデルについて説明する。なお、本発明に係る連想メモリシステム１は、以下に示すプロセッサモデルへの適用に限定されるものではなく、データが入力されることによって、該データに一致する記憶データが特定され、それに応じた出力が行われる連想メモリを利用する種々の構成に適用可能である。このような構成としては、例えば並列データプロセッサ、通信ネットワークに設けられるルータにおけるパケットフィルタリングシステムなどが挙げられる。
【００３８】
図１０は、該プロセッサモデルとしてのデータ処理装置３０の構成および動作の概略を示す図である。同図に示すように、データ処理装置３０は、主プロセッサとしてのＭＰ（第１の演算手段）３１、副プロセッサとしての第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂ、予測処理部３５、および、Ｌ２ｃａｃｈｅにおける記憶領域としてのＳＢｉｎ／ｏｕｔ（命令区間記憶手段）３３ならびにＲｅｇｉｏｎＴａｂｌｅ３４を備えている。なお、本実施形態に係る連想メモリシステム１は、ＳＢｉｎ／ｏｕｔ３３に適用される。
【００３９】
ＭＰ３１、第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂは、それぞれＬ１ｃａｃｈｅを備えており、該Ｌ１ｃａｃｈｅに、命令区間（サブルーチンまたはループ）の入力として使用したデータおよび出力したデータを記録する記録領域としてのＲＢｉｎ／ｏｕｔ（入出力生成手段）を備えている。そして、ＭＰ３１、第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂは、命令区間を実行中に該命令区間の実行内容をＲＢｉｎ／ｏｕｔに順次登録し、該命令区間の実行が完了した際に、ＲＢｉｎ／ｏｕｔの内容を全プロセッサが共有するＳＢｉｎ／ｏｕｔ３３に登録する。
【００４０】
なお、同図に示す構成では、副プロセッサを２つ備えた構成となっているが、１つあるいは３つ以上備えた構成となっていてもよい。また、副プロセッサが備えられていない構成であっても構わない。
【００４１】
以下に、図１０を参照しながら、上記の処理についてより具体的に説明する。ＭＰ３１は、命令区間＃２の実行を完了した際に、ＲＢｉｎに記録した命令区間の入力をＲｅｇｉｏｎＴａｂｌｅ３４に送信し、履歴＃２として記録する（図中（ａ））。
【００４２】
予測処理部３５は、ＲｅｇｉｏｎＴａｂｌｅ３４に記録されているＭＰ３１によって実行された命令区間入力の履歴（履歴＃１、履歴＃２）に基づいて、例えばストライド予測などにより将来の命令区間入力の予測値を算出する。そして、この入力予測値が第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂに送信される（図中（ｂ））。
【００４３】
第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂは、与えられた入力予測値に基づいて命令区間を実行し（図中（ｃ））、実行結果をＲＢｉｎ／ｏｕｔに記録する（図中（ｄ））。図１０に示す例では、第１ＳＰ３２Ａは、与えられた入力予測値に基づいて命令区間＃４を実行し、第２ＳＰ３２Ｂは、与えられた入力予測値に命令区間＃５を実行している。
【００４４】
その後、第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂは、命令区間の実行を完了した際に、ＲＢｉｎ／ｏｕｔに記録されている実行結果をＳＢｉｎ／ｏｕｔ３３に送信する（図中（ｅ））。ＳＢｉｎ／ｏｕｔ３３は、第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂから送られた実行結果のデータを登録する。
【００４５】
一方、ＭＰ３１は、命令区間を実行しようとする際に、ＳＢｉｎの連想検索を行い、ＭＰ３１で実行中の入力データ、すなわち、現在のレジスタおよび主記憶アドレスの値と同一であるエントリがあるか否かを判定する。ここで、入力データと一致したエントリが検出された場合には、対応する出力セットであるＳＢｏｕｔの内容を、該命令区間の出力データとして出力する（図中（ｆ））。すなわち、過去の実行結果、および第１ＳＰ３２Ａおよび第２ＳＰ３２Ｂにおいて事前実行された結果を再利用することにより、命令区間の実行を省略して処理の高速化が実現される。図１０では、命令区間＃４および命令区間＃５が再利用によってＭＰ３１による実際の演算が行われることなしに出力を得ている。
【００４６】
なお（ｆ）において再利用を行った場合にも、（ａ）における処理と同様に、ＭＰ３１において再利用が行われた命令区間の入力パターンをＲｅｇｉｏｎＴａｂｌｅ３４に送信するために、再利用が行われた命令区間の入力パターンがＳＢｉｎから読み出される。
【００４７】
（ＲＢｉｎ／ｏｕｔの構成）
図１１（ａ）は、ＲＢｉｎ／ｏｕｔの構成を示している。同図に示すように、ＲＢｉｎ／ｏｕｔは、スタックポインタを示す％ｓｐ、ＲＢｉｎ部、およびＲＢｏｕｔ部を備えている。ＲＢｉｎ部には、ＣｏｍｐａｒｅＦｌａｇ領域、Ｔｙｐｅ領域、Ｒｅｇ．／Ｍｅｍ．Ａｄｄｒｅｓｓ領域、データ領域、およびマスク領域が設けられている。また、ＲＢｏｕｔ部には、Ｔｙｐｅ領域、Ｒｅｇ．／Ｍｅｍ．Ａｄｄｒｅｓｓ領域、データ領域、およびマスク領域が設けられている。ＲＢｉｎ部に命令区間実行時の入力データが格納され、ＲＢｏｕｔ部に出力データが格納される。
【００４８】
ＣｏｍｐａｒｅＦｌａｇ領域は、該エントリの検証が必要であるか否かを示すフラグを格納する。すなわち、ＣｏｍｐａｒｅＦｌａｇは、次に比較すべきレジスタ番号または主記憶アドレスの内容が更新されたことを示している。Ｔｙｐｅ領域は、該エントリに格納されるデータがどのタイプのデータであるか否かを示す情報を格納する。Ｒｅｇ．／Ｍｅｍ．Ａｄｄｒｅｓｓ領域は、該当エントリに格納されるデータが、レジスタまたは主記憶のどのアドレスに格納されていたものであるかを示す情報を格納する。データ領域は、該エントリに格納される実データを格納し、マスク領域は、データ領域におけるどのビットが有効であるかを示すマスクビットデータを格納する。
【００４９】
図１１（ｂ）は、命令区間としてサブルーチンが実行された場合の入力データおよび出力データがＲＢｉｎ／ｏｕｔに格納された状態を示しており、図１１（ｃ）は、命令区間としてループが実行された場合の入力データおよび出力データがＲＢｉｎ／ｏｕｔに格納された状態を示している。
【００５０】
図１２（ａ）および図１２（ｂ）に、ＲＢｉｎおよびＲＢｏｕｔのより詳細な動作例を示す。同図では、図１３に示す関数が実行された状態を示している。図１３において、ｓｔｒｌｅｎ（ｓｔｒ）は、ＮＵＬＬ文字によって終端された文字列の長さを求める関数である。この関数を命令区間として実行した結果、引数に文字列"ABCDEF"が与えられた場合、および、引数に文字列"ABCDEFG"が与えられた場合に、命令区間の入力および出力を記録すると、それぞれ図１２（ａ）および図１２（ｂ）に示すＲＢｉｎおよびＲＢｏｕｔが得られる。この２つの記録を木構造によって表現したものを図１２（ｃ）に示す。
【００５１】
以上のようなプロセッサモデルにおいて、連想メモリシステム１によって構成されるＳＢｉｎ／ｏｕｔ３３に対して要求される機能は次の通りである。
【００５２】
図１０の（ｅ）において、ＲＢｉｎの内容をＳＢｉｎ／ｏｕｔ３３に登録する際には、次の処理が行われる。まず、ＲＢｉｎの内容に基づいて、ＳＢｉｎ／ｏｕｔ３３の連想検索が行われる。連想検索の結果、ＲＢｉｎの内容がＳＢｉｎ／ｏｕｔ３３に既に登録されている場合には、ＳＢｉｎ／ｏｕｔ３３に対する登録処理は行われない。一方、ＲＢｉｎの内容がＳＢｉｎ／ｏｕｔ３３に登録されていない場合には、連想メモリシステム１の空きエントリに対してＲＢｉｎの内容が書き込まれる。
【００５３】
図１０の（ｆ）において、ＭＰ３１がＳＢｉｎ／ｏｕｔ３３を検索する際には、次の処理が行われる。まず、ＳＢｉｎの連想検索を行い，実行中の入力データ、すなわち、現在のレジスタおよび主記憶アドレスの値と同一であるエントリがあるか否かを判定する。実行中の入力データと同じ内容のエントリがある場合には、該エントリに属するＳＢｉｎおよびＳＢｏｕｔの内容を読み出す。一方、実行中の入力データと同じ内容のエントリがない場合には、検索を終了する。
【００５４】
（再利用処理の概略）
ここで、再利用処理の概略について、関数およびループのそれぞれの場合について説明する。
【００５５】
まず、関数の場合について説明する。関数から復帰するまでに次の関数を呼び出した場合、または、登録すべき入出力が再利用表の容量を超える、引数の第７ワードを検出する、途中でシステムコールや割り込みが発生する、などの擾乱が発生しなかった場合、復帰命令を実行した時点で、登録中のエントリを有効にする。
【００５６】
以降、関数を呼び出す前に、(1)ＳＢｉｎ／ｏｕｔ３３に登録されているエントリにおける関数の先頭アドレスに、該当関数の先頭アドレスと一致するものがあるかを検索する。一致するものがある場合には、(2)ＳＢｉｎ／ｏｕｔ３３に登録されている該当関数に関するエントリにおける引数が、呼び出す関数の引数と完全に一致するエントリを選択する。そして、(3)関連する主記憶アドレスすなわち少なくとも１つのMaskが有効であるReadアドレスをＳＢｉｎ／ｏｕｔ３３からすべて参照して、(4)ＳＢｉｎ／ｏｕｔ３３に登録されている内容と一致比較を行う。全ての入力が一致した場合に、(5)ＳＢｉｎ／ｏｕｔ３３に登録済の出力（返り値、大域変数、およびＡの局所変数）を主記憶に書き戻すことによって、関数の実行を省略する、すなわち関数の再利用を実現することができる。
【００５７】
次に、ループの場合について説明する。ループが完了する以前に関数から復帰したり、前記した擾乱が発生したりするなど、ループの入出力登録が中止されなければ、登録中のループに対応する後方分岐命令を検出した時点で、登録中の入出力表エントリを有効にし、そのループの登録を完了する。
【００５８】
さらに、後方分岐命令が成立する場合は、次のループが再利用可能かどうかを判断する。すなわち、後方分岐する前に、(1)ＳＢｉｎ／ｏｕｔ３３に登録されているエントリにおけるループの先頭アドレスに、該当ループの先頭アドレスと一致するものがあるかを検索する。一致するものがある場合には、(2)ＳＢｉｎ／ｏｕｔ３３に登録されている該当ループに関するレジスタ入力値が、呼び出すループのレジスタ入力値と完全に一致するエントリを選択する。そして、(3)関連する主記憶アドレスをＳＢｉｎ／ｏｕｔ３３から全て参照して、(4)ＳＢｉｎ／ｏｕｔ３３に登録されている内容と一致比較を行う。全ての入力が一致した場合に、(5)ＳＢｉｎ／ｏｕｔ３３に登録済の出力（レジスタおよび主記憶出力値）を主記憶に書き戻すことによってループの実行を省略する、すなわちループの再利用を実現することができる。
【００５９】
再利用した場合、ＳＢｉｎ／ｏｕｔ３３に登録されている分岐方向に基づいて、さらに次のループに関して同様の処理を繰り返す。一方、次のループが再利用不可能であれば、次のループを通常に実行し、ＳＢｉｎ／ｏｕｔ３３への登録を開始する。
【００６０】
（連想メモリシステムの概略構成）
図２は、本実施形態に係る連想メモリシステム１の概略構成を示すブロック図である。同図に示すように、連想メモリシステム１は、Ｖビット記憶部（空きエントリ記憶部）１１、空検出回路（空きエントリ選択部）１２、ＣＡＭ部（第１のメモリ）１３、およびＲＡＭ部（第２のメモリ）１４を備えた構成となっている。
【００６１】
ＣＡＭ部１３は、データが入力されることによって、該データに一致する記憶データが特定され、それに応じた出力が行われるＣＡＭによって構成されている。このＣＡＭ部１０３は、複数のエントリを記憶しており、入力データが記憶されているエントリと一致した場合に、該エントリに対応したマッチラインからＭＡＴＣＨ信号がＲＡＭ部１４に対して出力される。また、ＣＡＭ部１０３は、各エントリに対応して記憶されているデータをビット単位で格納するデータ領域と、該データ領域に記憶されている各ビットのうち、どのビットが有効であるかを示すマスクビットを格納するマスクビット領域とを備えている。
【００６２】
ＲＡＭ部１４は、いわゆるＲＡＭによって構成されており、ＣＡＭ部１３からＭＡＴＣＨ信号が出力されたエントリに対応する記憶データを出力するようになっている。また、ＲＡＭ部１４には、ＣＡＭ部１３に記憶されている複数のエントリのそれぞれに対応したマスクビットをさらに記憶している。
【００６３】
Ｖビット記憶部１１は、ＣＡＭ部１３に含まれるエントリのそれぞれに対応したＶビットを記憶するものである。Ｖビットは、該エントリが有効であるか否かを示すビットである。本実施形態では、有効である場合にＶビットを１とし、無効である場合にＶビットを０としている。
【００６４】
空検出回路１２は、Ｖビット記憶部１１を参照することにより、ＣＡＭ部１３における空きエントリを検出する回路である。ＣＡＭ部１３に対してデータが書き込まれる際には、空検出回路１２で検出された空きエントリに対して書き込みが行われる。
【００６５】
以上のような構成の連想メモリシステム１において、本実施形態では、検索が行われた場合に、入力データに一致するエントリが１個または０個となるように、ＣＡＭ部１３へのデータの登録が行われるように制御が行われるようになっている。これにより、従来技術では必要であったプライオリティエンコーダを省略することが可能となる。
【００６６】
従来のＣＡＭでは、データの登録を行う際には、次のような手順で行われる。まずＣＡＭにおける空きのエントリのアドレス情報が取得され、該アドレスに対してデータの登録が行われる。このようなデータ登録処理のみの場合、複数のエントリに対して同一のデータが記録されることが考えられ、前述したＲＡＭの読み出しに競合が生じるという問題が発生する。
【００６７】
これに対して、本実施形態における連想メモリシステム１では、指定した書き込みデータが既にＣＡＭ部１３に登録されている場合には、該書き込みデータの登録が行われず、未登録である場合にのみ空きエントリに対して該書き込みデータが登録されるように、回路が構成されている。これにより、高々１つのマッチラインがアサートされることが保証される。
【００６８】
また、本実施形態では、ＲＡＭ部１４にＣＡＭ部１３に記憶されているマスクビットと同じマスクビットを記憶させている。これにより、ＣＡＭ部１３の検索結果を受けてＲＡＭ部１４が読み出される際に、該マスクビットパターンが同時に読み出され、検索データ自身と組み合わせることにより、検索の結果一致したＣＡＭ部１３のエントリの内容を読み出すことを実現している。以下、上記の内容を実現する構成について、より詳細に説明する。
【００６９】
（連想メモリシステムの具体構成）
図１は、図２に示す連想メモリシステム１をより具体的に示したブロック図である。同図に示すように、連想メモリシステム１は、ＣＡＭ部１３、ＲＡＭ部１４に加えて、Ｖビット検索部２２、ＧＡＴＥ部（書き込み制御部）２３、Ｖ＝０優先検出部２４、および、Ｖビット読み出し部２５を備えている。なお、同図において、図２に示したＶビット記憶部１１は図示されていない。また、図２に示した空検出回路１２は、Ｖビット検索部２２、Ｖ＝０優先検出部２４、および、Ｖビット読み出し部２５に相当する。
【００７０】
検索すべきデータを示す信号であるＳＤおよびＳＤの反転信号であるＸＳＤは、ＣＡＭ部１３に入力される。ＣＡＭ部１３は、ＳＤ／ＸＳＤに基づいて連想検索を行い、検索結果を示すＭＡＴＣＨ信号をＧＡＴＥ部２３に出力する。
【００７１】
一方、Ｖビット記憶部１１から出力される、各エントリに対応するＶビット情報を示す信号であるＶおよびＶの反転信号であるＸＶは、Ｖビット検索部２２に入力される。Ｖビット検索部２２は、ＣＡＭ部１３における各エントリに対応するＶビット情報を格納するとともに、有効なエントリ、すなわち、Ｖ＝１に設定されているエントリに対してＭＡＴＣＨ信号をＧＡＴＥ部２３に出力する。このように、Ｖビット検索部２２を設けることによって、ＣＡＭ部１３における検索結果のうち、有効なエントリのみを対象としてＧＡＴＥ部２３にＭＡＴＣＨ信号を出力することができる。
【００７２】
また、Ｖビット記憶部１１から出力されるＶ／ＸＶは、Ｖビット読み出し部２５にも入力される。Ｖビット読み出し部２５は、Ｖビット検索部２２と同様に、ＣＡＭ部１３における各エントリに対応するＶビット情報を格納するとともに、Ｖ＝０となっているエントリの情報をＶ＝０優先検出部２４に出力する。
【００７３】
なお、図１に示す構成では、Ｖビット検索部２２とＶビット読み出し部２５とを両方設けた構成となっているが、どちらか一方のみを備えた構成としてもよい。例えばＶビット検索部２２のみを設けた場合、該Ｖビット検索部２２とＧＡＴＥ部２３との間にＶ＝０優先検出部２４を設けることによって、同様の動作を行うことが可能である。しかしながら、この構成の場合、Ｖビット検索部２２とＧＡＴＥ部２３との間の距離が長くなることになり、信号伝達の遅延により、高速動作の障害となるという問題がある。
【００７４】
Ｖ＝０優先検出部２４は、Ｖビット読み出し部２５から入力されたＶ＝０となっているエントリの情報の中から、所定の優先順位（例えばエントリ番号の小さい順など）に従って１つのエントリを選択し、選択したエントリの情報をＧＡＴＥ部２３に出力する。
【００７５】
ＧＡＴＥ部２３は、以上の情報に基づいて、検索データに一致するエントリが存在する場合にはＲＡＭ部１４に対してＲｅａｄ動作を指示し、存在しない場合には、ＣＡＭ部１３およびＲＡＭ部１４に対してＷｒｉｔｅ動作を指示する。
【００７６】
なお、Ｖビット検索部２２は、上記したように、ＣＡＭ部１３における有効なエントリのみを検索対象とするために、検索データと一体となって、Ｖ＝１であるエントリのみを検索するための追加ビットであり、Ｖビット読み出し部２５と同じ値を保持するように構成されている。すなわち、検索時には、Ｖビット検索部２２においてＶ＝１を用いて検索が行われると同時に、空きエントリ検出時には、Ｖビット読み出し部２５においてＶ＝０のエントリの選択が行われる。空きエントリに有効データが書き込まれる際には、Ｖビット検索部２２およびＶビット読み出し部２５の両方において、該エントリのビットにＶ＝１が書き込まれる。
【００７７】
（ＧＡＴＥ部の具体構成例）
図３は、ＧＡＴＥ部２３における各行の具体的な構成例を示している。なお、ここでいう行とは、ＣＡＭ部１３におけるエントリに対応するものである。すなわち、実際には、図３で示す構成が、ＧＡＴＥ部２３に設けられている行の数だけ設けられていることになる。ＧＡＴＥ部２３の各行には、ＣＡＭ部１３から出力されるＭＡＴＣＨ信号、Ｖ＝０優先検出部２４から出力されるＤ信号、Ｗｒｉｔｅ動作の場合には１、Ｓｅａｒｃｈ動作の場合には０となるＷＲＩＴＥ信号、および、全てのＭａｔｃｈ−ｌｉｎｅが０であるか否かを示すＡＬＬ０信号が入力されている。また、ＧＡＴＥ部２３における動作サイクルを規定するクロック信号として、ＣＫ１、ＣＫ２、ＣＫ３、ＣＫ４、ならびに、これらの反転信号であるＸＣＫ１、ＸＣＫ２、ＸＣＫ３、ＸＣＫ４が入力されている。
【００７８】
なお、ＣＫ１、ＣＫ２、ＣＫ３、ＣＫ４は、後述するサイクル１Ａ／２Ａ／３Ａ／４Ａ前半、１Ａ／２Ａ／３Ａ／４Ａ後半、サイクル１Ｂ／２Ｂ／３Ｂ／４Ｂ前半、１Ｂ／２Ｂ／３Ｂ／４Ｂ後半に１となるように外部から与えるクロック信号である。
【００７９】
ＷＲＩＴＥ信号が１、すなわちＷｒｉｔｅ動作が行われている際に、ＭＡＴＣＨ信号が１である場合には、ＡＬＬ０信号は０となる。この場合、ＲＡＭ部１４のリードイネーブル信号であるＲＲＥＮおよびＲＡＭ部１４のセンスイネーブル信号であるＲＳＥＮが出力されることにより、ＲＡＭ部１４におけるＲｅａｄ動作が行われる。
【００８０】
また、ＷＲＩＴＥ信号が１、すなわちＷｒｉｔｅ動作が行われている際に、ＭＡＴＣＨ信号が０であり、ＡＬＬ０信号が０である場合には、他の行でＲＡＭ部１４におけるＲｅａｄ動作が行われることになる。
【００８１】
また、ＷＲＩＴＥ信号が１、すなわちＷｒｉｔｅ動作が行われている際に、ＭＡＴＣＨ信号が０であり、ＡＬＬ０信号が１である場合には、Ｗｒｉｔｅ動作対象となる入力データと一致するエントリが存在しなかったことになる。
【００８２】
ここで、Ｄ信号によって該当行がＶ＝０であることが示されている場合には、該当行に入力データを登録する処理が行われる。すなわち、この場合には、ＲＡＭ部１４の該当行を駆動するためのＲＷＬ、ＣＡＭ部１３の該当行を駆動するためのＣＷＬ、ＲＡＭ部１４のライトイネーブル信号であるＲＷＥＮが出力される。一方、Ｄ信号によって該当行がＶ＝１であることが示されている場合には、該当行には有効なデータが登録されているので、ＣＡＭ部１３およびＲＡＭ部１４に対する書き込み処理は行われない。
【００８３】
一方、ＷＲＩＴＥ信号が０、すなわちＳｅａｒｃｈ動作が行われている際に、ＭＡＴＣＨ信号が０であり、ＡＬＬ０信号が０である場合には、他の行でＲＡＭ部１４におけるＲｅａｄ動作が行われることになる。
【００８４】
また、ＷＲＩＴＥ信号が０、すなわちＳｅａｒｃｈ動作が行われている際に、ＭＡＴＣＨ信号が０であり、ＡＬＬ０信号が１である場合には、検索データと一致したエントリが存在しなかったことになるので、Ｒｅａｄ動作は行われない。
【００８５】
（ＣＡＭ部の具体構成例）
図４は、ＣＡＭ部１３の具体的な構成例を示している。同図に示す例では、ＣＡＭ部１３を、深さ３２行、幅１２８ビット（８ビットごとに１ビットのマスクを伴うので、計１４４ビット）としている。なお、行はエントリに対応しており、幅は各エントリに格納可能なデータのビット数に対応している。また、８ビットごとに設けられるマスクは、該８ビットの情報が有効であるか否かを示すビットであり、１の場合に有効、０の場合に無効となる。
【００８６】
図１に示したように、ＣＡＭ部１３に対しては、検索すべきデータを示す信号であるＳＤおよび反転信号であるＸＳＤが入力されている。このＳＤ／ＸＳＤは、ＣＡＭ部１３に入力されると、正負入力信号としてのＷＤ／ＸＷＤとしてＣＡＭ部１３が備える各サブブロックに入力される。ここでは、ＷＤ／ＸＷＤは、１２８ビット分のデータおよび８ビット分のマスクを示す信号ＷＤ／ＸＷＤ＜０：１４３＞となっている。
【００８７】
また、同図に示すように、ＣＡＭ部１３は、ＳＢＡ００〜ＳＢＡ１５の１６個のサブブロックを備えている。そして、各サブブロックに対して、ＷＤ／ＸＷＤ＜０：１４３＞のうち、８ビット分のデータおよびそれに対応する１ビット分のマスクを示す信号がそれぞれ入力される。例えばサブブロックＳＢＡ００には、ＷＤ／ＸＷＤ＜０：８＞が入力され、サブブロックＳＢＡ０１には、ＷＤ／ＸＷＤ＜９：１７＞が入力され、以降、９ビット分ずつ各サブブロックに入力される。
【００８８】
また、各サブブロックからは、８ビット分のデータおよびそれに対応する１ビット分のマスクを示す読み出し信号がそれぞれ出力されるようになっている。例えばサブブロックＳＢＡ００からは、正負出力信号としてのＲＤ／ＸＲＤ＜０：８＞が出力され、サブブロックＳＢＡ０１からは、ＲＤ／ＸＲＤ＜９：１７＞が出力され、以降、９ビット分ずつ各サブブロックから出力される。そして、各サブブロックから出力されたＲＤ／ＸＲＤがまとめてＲＤ／ＸＲＤ＜０：１４３＞としてＣＡＭ部１３からの読み出し信号として出力される。
【００８９】
なお、詳細は後述するが、本実施形態では、ＣＡＭ部１３の検索結果を受けてＲＡＭ部１４が読み出される際に、ＲＡＭ部１４に記録されているマスクビットパターンが同時に読み出され、検索データ自身と組み合わせることにより、検索の結果一致したＣＡＭ部１３のエントリの内容が読み出されるようになっている。よって、基本的には、上記のＲＤ／ＸＲＤの読み出し信号の出力は行われる必要はないので、これに関する構成を設けない構成としてもよい。
【００９０】
各サブブロックには、各行に対応するワードライン信号としてのＷＬ＜０：３１＞、内容を読み出すために必要なビットラインプリチャージ信号としてのＢＰＲＥ・ＳＰＲＥ、ライトイネーブル信号としてのＷＥＮ、リードイネーブル信号としてのＲＥＮ、センスアンプイネーブル信号としてのＳＥＮが入力されている。また、各サブブロックからは、各行に対応するマッチライン信号としてのＭＡＴＣＨ＜０：３１＞が出力されている。
【００９１】
図５は、図４に示すＳＢＡ００〜ＳＢＡ１５の各サブブロックに対応する、深さ３２行、幅８ビット（マスク１ビットを含むので計９ビット）のサブブロック構成例を示している。なお、同図に示す例では、上記のＳＢＡ００のサブブロックを示しているが、その他のサブブロックも同様の構成となる。
【００９２】
ＳＢＡ００のサブブロックは、センスアンプブロックＳＡＢおよび３２個のサブブロックとしてのＳＢＢ００〜ＳＢＢ３１を備えている。センスアンプブロックＳＡＢには、ＷＤ／ＸＷＤ＜０：８＞、ＢＰＲＥ・ＳＰＲＥ、ＷＥＮ、ＲＥＮ、およびＳＥＮが入力される。また、センスアンプブロックＳＡＢからは、ＲＤ／ＸＲＤ＜０：８＞が出力されている。
【００９３】
ＳＢＢ００〜ＳＢＢ３１は各行に対応しており、それぞれに対して、ワードライン信号としてのＷＬ＜０＞〜ＷＬ＜３１＞が入力されている。また、ＳＢＢ００〜ＳＢＢ３１のそれぞれからは、マッチライン信号としてのＭＡＴＣＨ＜０＞〜ＭＡＴＣＨ＜３１＞が出力されている。
【００９４】
センスアンプブロックＳＡＢに入力されたＷＤ／ＸＷＤ＜０：８＞は、ビットライン信号としてのＢＬ／ＸＢＬ＜０：８＞として、ＳＢＢ００〜ＳＢＢ３１のそれぞれに対して入力される。また、ＳＢＢ００〜ＳＢＢ３１からの読み出し信号は、ＢＬ／ＸＢＬ＜０：８＞としてセンスアンプブロックＳＡＢに入力され、これに応じてＲＤ／ＸＲＤ＜０：８＞が出力されている。
【００９５】
図６は、図５に示すＳＢＢ００〜ＳＢＢ３１の各サブブロックに対応する、８ビットデータおよび１ビットマスクのサブブロック構成例を示している。なお、同図に示す例では、上記のＳＢＢ００のサブブロックを示すものとするが、その他のサブブロックも同様の構成となる。
【００９６】
ＳＢＢ００のサブブロックは、８個のＳＢＣ００〜ＳＢＣ０７、および、１個のＳＢＭを備えている。ＳＢＣ００〜ＳＢＣ０７のそれぞれは１ビットＣＡＭ（メモリセル）に相当するものであり、ＳＢＭは１ビットマスクに相当するものである。ワードライン信号としてのＷＬは、ＳＢＣ００〜ＳＢＣ０７およびＳＢＭのそれぞれに対して共通に入力される。
【００９７】
また、ＳＢＣ００〜ＳＢＣ０７、およびＳＢＭのそれぞれには、各ビットのメモリセルに対して書き込み、読み出し、検索を行うためのビットライン信号としてのＢＬ／ＸＢＬ＜０＞〜ＢＬ／ＸＢＬ＜８＞が入力される。
【００９８】
また、ＳＢＣ００〜ＳＢＣ０７のそれぞれから出力されるマッチライン信号としてのＭＬは、一旦ＳＢＭに入力される。そして、ＳＢＭは、ＳＢＣ００〜ＳＢＣ０７からのＭＬが全て１となり、かつ、自身におけるマスクビットの比較においても一致した場合に、ＭＡＴＣＨ信号を出力する。
【００９９】
図７は、図５に示すセンスアンプブロックＳＡＢの構成例を示している。センスアンプブロックＳＡＢは、９個のセンスアンプＳＡ００〜ＳＡ０８を備えている。ここでＳＡ００〜ＳＡ０７は８ビットデータのそれぞれのビットに対応しており、ＳＡ０８は１ビットマスクのビットに対応している。なお、センスアンプＳＡ００〜ＳＡ０８は一般的に用いられる構成のものでよいので、ここではその説明を省略する。
【０１００】
図８は、図６に示すＳＢＣ００〜ＳＢＣ０７の各サブブロックに対応する、１ビットＣＡＭの構成例を示している。また、図９は、図６に示すＳＢＭに対応する１ビットマスクの構成例を示している。
【０１０１】
１ビットＣＡＭは、トランジスタＮ０〜Ｎ３、Ｐ０、Ｐ２によって構成されるＲＡＭ機能部と、トランジスタＮ５〜Ｎ８によって構成されるＣＡＭ機能部とによって構成される。ＲＡＭ機能部にはＷＬおよびＢＬ／ＸＢＬが接続されており、ＣＡＭ機能部にＭＬが接続されている。
【０１０２】
１ビットマスクは、トランジスタＮ０〜Ｎ３、Ｐ０、Ｐ２によって構成されるＲＡＭ機能部と、トランジスタＮ１１・Ｎ１２によって構成されるＣＡＭ機能部とによって構成される。ＲＡＭ機能部にはＷＬおよびＫＬ／ＸＫＬが接続されており、ＣＡＭ機能部にＭＬおよびＭＡＴＣＨが接続されている。
【０１０３】
検索時には、１ビットマスクにおいてＭＡＴＣＨが１にプリチャージされた後に、１ビットＣＡＭにおいて各ＢＬ／ＸＢＬに検索データがセットされる。マスクビットの値が０である場合、１ビットマスクにおいてトランジスタＮ１１およびＮ１２がＯＦＦとなり、ＭＡＴＣＨがＭＬから切り離されるため、対応する８個の１ビットＣＡＭにいかなる比較値を与えられても、１にプリチャージされたＭＡＴＣＨを０に変化させることはできないことになる。すなわち、マスクビットが０である場合には、必ずＭＡＴＣＨが１となり、入力データと一致していると判定される。
【０１０４】
一方、マスクビットの値が１である場合、１ビットマスクにおいてトランジスタＮ１１およびＮ１２はＯＮとなり、ＭＡＴＣＨがＭＬに接続されるため、対応する８個の１ビットＣＡＭの全てが比較値と一致した場合にのみ、１にプリチャージされたＭＡＴＣＨが１を保持され、入力データと一致していると判定される。
【０１０５】
書き込み時には、ＢＬ／ＸＢＬに書き込み値がセットされた後、ＷＬがオンされる。これにより、ＲＡＭ機能部に書き込み値が格納される。読み出し時には、ＢＬ／ＸＢＬが１にプリチャージされた後、ＷＬがオンされ、さらに外部のセンスアンプが稼働されることにより、ＢＬ／ＸＢＬに値が出力される。
【０１０６】
以上、図４〜図９を参照しながらＣＡＭ部１３の構成について説明したが、ＲＡＭ部１４は、上記のＣＡＭ部１３の構成から、データ部のＭＬに関わる回路、マスク部、ＭＬ、および、ＭＡＴＣＨを全て除去した構成となる。よって、データの書き込み時、および読み出し時の動作はＣＡＭ部１３における動作を同様となる。すなわち、書き込み時には、ＢＬ／ＸＢＬに書き込み値がセットされた後、ＷＬがオンされる。これにより、ＲＡＭ機能部に書き込み値が格納される。読み出し時には、ＢＬ／ＸＢＬが１にプリチャージされた後、ＷＬがオンされ、さらに外部のセンスアンプが稼働されることにより、ＢＬ／ＸＢＬに値が出力される。
【０１０７】
（連想メモリシステムにおけるタイミングチャート）
以上のような構成の連想メモリシステム１におけるタイミングチャートを図１４および図１５に示す。図１４は、ＲＢｉｎ／ｏｕｔの各レコードをＳＢｉｎ／ｏｕｔ３３としての連想メモリシステム１に登録する際に行われる検索および書き込み動作のタイミングチャートを示しており、図１５は、ＭＰ３１が命令区間を実行する際のＳＢｉｎ／ｏｕｔ３３に対する再利用のための検索および読み出し動作のタイミングチャートを示している。
【０１０８】
まず、図１４に示すタイミングチャートについて説明する。サイクル１Ａ前半では、ＣＡＭ部１３における連想検索に備えて、ＣＡＭ部１３の全てのマッチラインが１にプリチャージされる。図中では、ＭＡＴＣＨ−ｐｒｅｃｈａｒｇｅがサイクル１Ａ前半でＨＩＧＨとなっていることが示されている。
【０１０９】
同様に、ＲＡＭ部１４の読み出しに備えて、ＲＡＭ部１４の全てのビットラインが１にプリチャージされる。図中では、ＲＡＭ−ＢＬ−ｐｒｅｃｈａｒｇｅがサイクル１Ａ前半でＨＩＧＨとなっていることが示されている。
【０１１０】
また、ＶＡＬＩＤビットが０である全エントリの中から最も優先順位が高い空きエントリを探す動作がＶ＝０優先検出部２４にて開始される。図中では、Ｖ＝０：ｐｒｉｏｒｉｔｙ−０−ｄｅｔｅｃｔｏｒがサイクル１Ａ前半でＨＩＧＨとなっていることが示されている。なお、この動作は、検索データに一致するエントリがない、すなわち検索データが未登録であることが判明した場合に、該検索データを登録するための空きエントリを１つ準備するために行われる。Ｖ＝０優先検出部２４におけるこの動作は、プライオリティエンコーダと同様に、ある程度の時間を必要とするので、サイクル１Ａにて開始しておくことが好ましい。
【０１１１】
サイクル１Ａ後半では、まず、書き込みデータがＣＡＭ部１３のＳＤ／ＸＳＤおよびＲＡＭ部１４のＷＤ／ＸＷＤに与えられる。図中では、ＳＤ／ＸＳＤ／ＷＤ／ＸＷＤがサイクル１Ａ後半でＨＩＧＨとなっていることが示されている。
【０１１２】
また、ＣＡＭ部１３では、ＲＢｉｎの内容が書き込みデータとして与えられることによって、各エントリが書き込みデータと一致するかの評価、すなわち、ＭＡＴＣＨの評価が開始されると同時に、全てのＭＡＴＣＨが０、すなわち、一致するエントリが全くない（ＡＬＬ０？ＹＥＳ）ことを調査するために、ＡＬＬ０信号のプリチャージが開始される。図中では、ＡＬＬ０−ｐｒｅｃｈａｒｇｅがサイクル１Ａ後半でＨＩＧＨとなっていることが示されている。
【０１１３】
サイクル１Ｂでは、ＣＡＭ部１３におけるＭＡＴＣＨの評価結果に基づき、ＭＡＴＣＨ？ＹＥＳであることが判明した行に対応するＲＡＭ部１４のワードライン（ＲＷＬ）がＧＡＴＥ部２３によって駆動され、ＲＡＭ部１４に記憶されているデータの読み出しが準備される。そして、ＧＡＴＥ部２３は、ＡＬＬ０信号がＬＯＷであることをそのまま用いて、ＲＡＭ読み出しのためのセンスアンプに必要なリードイネーブル信号としてのＲＲＥＮをＬＯＷに切り替える。これにより、一致したエントリに対応するＲＡＭ部１４におけるデータの読み出しが行われる。なお、この例では、ＲＡＭ部１４は、ＲＲＥＮがＬＯＷの時にデータの読み出しが行われるものとしている。
【０１１４】
ＲＡＭ部１４から読み出されたデータが次のエントリのアドレスに関する情報を示している場合、ＲＢｉｎ／ｏｕｔの次のエントリの内容と比較されて検証が行われる。この時、実行しているプログラムが正常なプログラムである限り検証が失敗することはないが、例えばプログラムにバグがある場合には、検証に失敗することになる。この場合、検証に失敗したことを示す信号が出力されるようになっていてもよい。
【０１１５】
引続きサイクル２Ａでは、サイクル１Ａと同様に、次のＣＡＭ部１３の連想検索に備えて、ＣＡＭ部１３の全マッチラインが１にプリチャージされる。図中では、ＭＡＴＣＨ−ｐｒｅｃｈａｒｇｅがサイクル２Ａ前半でＨＩＧＨとなっていることが示されている。
【０１１６】
同様に、ＲＡＭ部１４の読み出しに備えて、ＲＡＭ部１４の全てのビットラインが１にプリチャージされる。図中では、ＲＡＭ−ＢＬ−ｐｒｅｃｈａｒｇｅがサイクル２Ａ前半でＨＩＧＨとなっていることが示されている。
【０１１７】
また、検索データが未登録であることが判明した際の空きエントリを１つ準備するために、ＶＡＬＩＤビットが０である全エントリの中から最も優先順位が高い空きエントリを探す動作がＶ＝０優先検出部２４にて開始される。図中では、Ｖ＝０：ｐｒｉｏｒｉｔｙ−０−ｄｅｔｅｃｔｏｒがサイクル２Ａ前半でＨＩＧＨとなっていることが示されている。
【０１１８】
サイクル２Ａ後半では、まず、次のＲＢｉｎ／ｏｕｔのエントリが書き込みデータとしてＣＡＭ部１３のＳＤ／ＸＳＤおよびＲＡＭ部１４のＷＤ／ＸＷＤに与えられる。図中では、ＳＤ／ＸＳＤ／ＷＤ／ＸＷＤがサイクル２Ａ後半でＨＩＧＨとなっていることが示されている。
【０１１９】
また、ＣＡＭ部１３では、検索データが与えられることによって、各エントリが検索データと一致するかの評価、すなわち、ＭＡＴＣＨの評価が開始されると同時に、全てのＭＡＴＣＨが０、すなわち、一致するエントリが全くない（ＡＬＬ０？ＹＥＳ）ことを調査するために、ＡＬＬ０信号のプリチャージが開始される。図中では、ＡＬＬ０−ｐｒｅｃｈａｒｇｅがサイクル２Ａ後半でＨＩＧＨとなっていることが示されている。
【０１２０】
サイクル２Ｂでは、ＣＡＭ部１３におけるＭＡＴＣＨの評価結果に基づき、ＭＡＴＣＨ？ＮＯであることが判明すると、ＲＡＭ部１４からの読み出し動作は行われない。すなわち、１つもマッチしない場合にはＡＬＬ０信号がＨＩＧＨ（ＡＬＬ０？ＹＥＳ）となることを受けて、予めＶ＝０優先検出部２４にて探しておいた空きエントリに対応するＣＡＭ部１３およびＲＡＭ部１４におけるＷＬ（ＣＷＬ／ＲＷＬ）がオンされ、該空きエントリに対する書き込みデータの書き込みが準備される。そして、ＳＤ／ＸＳＤ／ＷＤ／ＸＷＤに用意されている書き込みデータをＣＡＭ部１３およびＲＡＭ部１４内のビットラインに伝えるために、ＡＬＬ０信号を受けてセンスアンプのライトイネーブル信号としてのＣＷＥＮおよびＲＷＥＮがオンされる。これにより、書き込みデータがＣＡＭ部１３およびＲＡＭ部１４に書き込まれる。
【０１２１】
次に、図１５に示すタイミングチャートについて説明する。サイクル３Ａ前半では、ＣＡＭ部１３における連想検索に備えて、ＣＡＭ部１３の全てのマッチラインが１にプリチャージされる。図中では、ＭＡＴＣＨ−ｐｒｅｃｈａｒｇｅがサイクル３Ａ前半でＨＩＧＨとなっていることが示されている。
【０１２２】
同様に、ＲＡＭ部１４の読み出しに備えて、ＲＡＭ部１４の全てのビットラインが１にプリチャージされる。図中では、ＲＡＭ−ＢＬ−ｐｒｅｃｈａｒｇｅがサイクル３Ａ前半でＨＩＧＨとなっていることが示されている。
【０１２３】
サイクル３Ａ後半では、まず、検索すべきレジスタ値などの入力データがＣＡＭ部１３のＳＤ／ＸＳＤおよびＲＡＭ部１４のＷＤ／ＸＷＤに与えられる。図中では、ＳＤ／ＸＳＤ／ＷＤ／ＸＷＤがサイクル３Ａ後半でＨＩＧＨとなっていることが示されている。
【０１２４】
また、ＣＡＭ部１３では、入力データが与えられることによって、各エントリが入力データと一致するかの評価、すなわち、ＭＡＴＣＨの評価が開始されると同時に、全てのＭＡＴＣＨが０、すなわち、一致するエントリが全くない（ＡＬＬ０？ＹＥＳ）ことを調査するために、ＡＬＬ０信号のプリチャージが開始される。図中では、ＡＬＬ０−ｐｒｅｃｈａｒｇｅがサイクル３Ａ後半でＨＩＧＨとなっていることが示されている。
【０１２５】
サイクル３Ｂでは、ＣＡＭ部１３におけるＭＡＴＣＨの評価結果に基づき、ＭＡＴＣＨ？ＹＥＳであることが判明した行に対応するＲＡＭ部１４のワードライン（ＲＷＬ）がＧＡＴＥ部２３によって駆動され、ＲＡＭ部１４に記憶されているデータの読み出しが準備される。そして、ＧＡＴＥ部２３は、ＡＬＬ０信号がＬＯＷであることをそのまま用いて、ＲＡＭ読み出しのためのセンスアンプに必要なリードイネーブル信号としてのＲＲＥＮをＬＯＷに切り替える。これにより、一致したエントリに対応するＲＡＭ部１４におけるデータの読み出しが行われる。
【０１２６】
ここで、ＲＡＭ部１４には、ＣＡＭ部１３に記憶されているマスクビットパターンと同様のマスクビットパターンが格納されており、このマスクビットパターンも同時に読み出される。入力データとマスクビットパターンとを組み合わせたデータは、ＣＡＭ部１３に記憶されているエントリの内容を読み出したものと同等となる。すなわち、ＣＡＭ部１３に記憶されているエントリの内容を読み出すサイクルを改めて行うことなく、該内容と同等の情報を得ることができる。
【０１２７】
引続きサイクル４Ａでは、サイクル３Ａと同様に、次のＣＡＭ部１３の連想検索に備えて、ＣＡＭ部１３の全マッチラインが１にプリチャージされる。図中では、ＭＡＴＣＨ−ｐｒｅｃｈａｒｇｅがサイクル４Ａ前半でＨＩＧＨとなっていることが示されている。
【０１２８】
同様に、ＲＡＭ部１４の読み出しに備えて、ＲＡＭ部１４の全てのビットラインが１にプリチャージされる。図中では、ＲＡＭ−ＢＬ−ｐｒｅｃｈａｒｇｅがサイクル４Ａ前半でＨＩＧＨとなっていることが示されている。
【０１２９】
同時に、前回の検索の結果ＲＡＭ部１４から得た、次に比較すべきレジスタ等のアドレスを元に、現レジスタ等の読み出しが開始される。サイクル４Ａ後半では、次に比較すべき現レジスタ等の内容をＣＡＭ部１３のＳＤ／ＸＳＤに入力し、未登録であればサイクル４Ｂにおいて全ＭＡＴＣＨが０となるので、これを検知して検索が終了する。この場合、ＭＰ３１は、再利用が不可能であるので、該当命令区間を実際に実行することになる。
【０１３０】
（連想メモリシステムへのデータの登録処理）
次に、上記のプロセッサシステムにおいて、ＳＢｉｎ／ｏｕｔ３３としての連想メモリシステム１に対してデータを登録する際の処理の具体例について説明する。図１６（ａ）は、図１３に示す命令区間において、ｓｔｒｌｅｎ（”ＡＢＣＤＥＦ”）が実行された場合のＲＢｉｎの具体例を示しており、図１６（ｂ）は、図１６（ａ）に示すＲＢｉｎをＳＢｉｎに登録し、ＲＢｏｕｔをＳＢｏｕｔに登録した状態の例を示している。
【０１３１】
ＲＢｉｎの第１レコードをＳＢｉｎに登録する際には、まず初期キー（−１）を含むエントリがＣＡＭ部１３における適当な空き領域（例えばエントリ番号２００）に書き込まれる。
【０１３２】
ＲＢｉｎの第２レコードを登録する際には、まず、第１レコードを登録したＣＡＭ部１３におけるエントリ（エントリ番号２００）に対応するＲＡＭ部１４に第２レコードのＣｏｍｐａｒｅＦｌａｇ、ｔｙｐｅ、およびａｄｄｒｅｓｓの情報が書き込まれる。そして、キー（２００）を含むエントリがＣＡＭ部１３における次に適当な空き領域（例えばエントリ番号２１０）に書き込まれる。
【０１３３】
ＲＢｉｎの第３レコードを登録する際には、第２レコードを登録したＣＡＭ部１３におけるエントリ（エントリ番号２１０）に対応するＲＡＭ部１４に第３レコードのＣｏｍｐａｒｅＦｌａｇ、ｔｙｐｅ、およびａｄｄｒｅｓｓの情報が書き込まれる。そして、キー（２１０）を含むエントリをＣＡＭ部１３における次に適当な空き領域に書き込む。
【０１３４】
ＲＢｉｎの内容が終了した場合には、最後に登録したＣＡＭ部１３におけるエントリに対応するＲＡＭ部１４に、終了を示すｅｎｄが登録され、出力値が格納されるべきＳＢｏｕｔのアドレスが該エントリに記録される。そして、ＳＢｏｕｔにＲＢｏｕｔの内容が格納される。
【０１３５】
図１６（ｂ）となっている状態で、ＭＰ３１が、文字列”ＡＢＣＤＥＦ”を”ＡＢＣＤＥＦＧ”に変更する処理を行ったとする。この場合、ＲＢｉｎの登録時には主記憶アドレス”０００１００１０”の一致比較を行う必要はない状態であったが、該アドレスの値が変更されることによって、該アドレスの一致比較を行う必要が生じることになる。この場合、図１７（ａ）に示すようにＳＢｉｎが変更される。
【０１３６】
まず、内容が変更された主記憶アドレスである”０００１００１０”をキーにして、ＳＢｉｎ（ＲＡＭ）におけるＡｄｄｒ．の列に対して検索がかけられる。これによって、エントリ番号２１０のラインが選択される。そして、該ラインのキーとなっているエントリ番号２００のラインが認識される。そして、エントリ番号２００のラインにおいて、次に比較すべき主記憶アドレスよりも優先して比較すべき主記憶アドレスを示すＡｌｔ．ｋｅｙに、内容が変更された主記憶アドレスである”０００１００１０”が書き込まれる。
【０１３７】
以上のようにＳＢｉｎの更新が行われることによって、次に比較すべき主記憶アドレスよりも優先して比較すべき主記憶アドレスを示すＡｌｔ．ｋｅｙが設けられることにより、主記憶アドレス”０００１００００”の内容とキー２００による検索をスキップして、主記憶アドレス”０００１００１０”の内容とキー２１０による検索が可能となる。したがって、検索動作の処理ステップを低減することができるので、処理の高速化を図ることができる。
【０１３８】
図１７（ａ）に示す状態から、ＭＰ３１がＳｔｒｌｅｎ（”ＡＢＣＤＥＦＧ”）を実行し、ＲＢｉｎ／ｏｕｔが生成された状態を図１７（ｂ）に示す。このＲＢｉｎ／ｏｕｔがＳＢｉｎ／ｏｕｔ３３に登録されると、図１７（ｃ）に示す状態となる。
【０１３９】
図１７（ｃ）に示す状態における検索動作は次のように行われる。まず，初期キー（−１）と関数先頭アドレス（ｓｔｒｌｅｎ）と引数（０００１０００Ｃ）とを用いてＳＢｉｎのＣＡＭ部１３を連想検索してエントリ（２００）が検出される。そして、該エントリに対応するＲＡＭ部１４から次に参照すべき主記憶アドレス”０００１００１０”と次の検索に使用するキー（２１０）が検出される。主記憶アドレスを参照した結果が”４５４６００ＸＸ”であれば、図中丸４で示されるエントリに一致し、”４５４６４７００”であれば図中丸５で示されるエントリに一致し、それぞれ対応するＳＢｏｕｔの値が出力される。
【０１４０】
（連想メモリシステムをサブブロックに分割する構成例）
上記した図１６（ｂ）、図１７（ａ）、および図１７（ｃ）に示した連想メモリシステムの登録処理の場合、検索対象となる登録入力データは、複数（Ｎ個）の部分（レコード）に分割されてＳＢｉｎに登録されることになる。この場合、検索時には、登録入力データの先頭から順次一致が検証され、一致しないことが判明した時点で検索が終了する。
【０１４１】
すなわち、上記の構成は、深さをＤ行（エントリの数をＤ個）、幅をＷビットとする連想メモリシステムを構成する場合に、深さを同じくＤ行、かつ、幅をＷ／Ｎビットとする副連想メモリをＮブロック分設けた構成とすることと等価となる。この場合、先頭から順次プリチャージするマッチラインを絞り込みつつＮ回の連想検索を繰り返すことにより、マッチラインのプリチャージおよびディスチャージに伴う消費電力を抑えつつ、最終的にＤ行×Ｗビットの連想検索結果を出力することができる。
【０１４２】
しかしながら、この構成の場合、Ｗビットの連想検索に必要な時間がＮ倍に増加するので、消費電力は抑えられるものの、処理速度を大幅に犠牲にしていることになる。
【０１４３】
これに対して、連想メモリシステムを深さ方向に複数個（Ｍ個）のサブブロックに分割し、登録または検索するデータの一部を用いてサブブロックを特定し、該サブブロック内で検索を行うようにする構成が考えられる。この構成の場合、同時にプリチャージすべきマッチライン数を１／Ｍに削減されることになる。よって、消費電力を抑えつつ、処理速度の低下も抑えることが可能となる。
【０１４４】
図１８は、図２に示す連想メモリシステム１を、深さ方向に４つのサブブロックに分割した構成を示している。このように構成した場合における、ＳＢｉｎ／ｏｕｔ３３としての連想メモリシステム１に対してデータを登録する際の処理の具体例について以下に説明する。
【０１４５】
まず、図１６（ａ）に示すＲＢｉｎをＳＢｉｎに登録し、ＲＢｏｕｔをＳＢｏｕｔに登録する処理について説明する。ＲＢｉｎの第１レコードをＳＢｉｎに登録する際には、まず初期キー（−１）を含むエントリが、ＣＡＭ部１３における特定のサブブロックにおける空きエントリ（例えばサブブロック１−エントリ００１）に書き込まれる。このサブブロックは、例えば該当命令区間の先頭アドレス（ｓｔｒｌｅｎ）の一部に基づいて特定される。すなわち、例えば、先頭アドレスの一部の情報と、それに対応するサブブロックの情報とを示したサブブロック特定テーブルが連想メモリシステム１に記憶され、このサブブロック特定テーブルに従って、空検出回路１２が、特定されるサブブロックの中から空きエントリを検出し、該空きエントリに対して登録が行われるようにすればよい。
【０１４６】
ＲＢｉｎの第２レコードを登録する際には、まず、第１レコードを登録したＣＡＭ部１３におけるエントリ（サブブロック１−エントリ００１）に対応するＲＡＭ部１４に第２レコードのＣｏｍｐａｒｅＦｌａｇ、ｔｙｐｅ、およびａｄｄｒｅｓｓの情報が書き込まれる。そして、キー（サブブロック１−エントリ００１）を含むエントリが、別のサブブロック、例えば次のサブブロック（例えばサブブロック２）における空きエントリ（例えばサブブロック２−エントリ００５）に書き込まれる。
【０１４７】
ＲＢｉｎの第３レコードを登録する際には、第２レコードを登録したＣＡＭ部１３におけるエントリ（サブブロック２−エントリ００５）に対応するＲＡＭ部１４に第３レコードのＣｏｍｐａｒｅＦｌａｇ、ｔｙｐｅ、およびａｄｄｒｅｓｓの情報が書き込まれる。そして、キー（サブブロック２−エントリ００５）を含むエントリが、別のサブブロック、例えばさらに次のサブブロック（例えばサブブロック３）における空きエントリに書き込まれる。
【０１４８】
以上の処理が行われた場合、図１６（ｂ）に示すＳＢｉｎ／ｏｕｔ３３において、第１行目がサブブロック１のエントリ００１の行に格納され、第２行目がサブブロック２のエントリ００５の行に格納され、第３行目がサブブロック３の行に格納された状態となる。
【０１４９】
また、上記の状態から、ＭＰ３１が、文字列”ＡＢＣＤＥＦ”を”ＡＢＣＤＥＦＧ”に変更する処理を行った場合、図１７（ａ）に示すＳＢｉｎ／ｏｕｔ３３において、第１行目がサブブロック１のエントリ００１の行に格納され、第２行目がサブブロック２のエントリ００５の行に格納され、第３行目がサブブロック３の行に格納された状態となる。
【０１５０】
さらに、上記の状態から、ＭＰ３１がＳｔｒｌｅｎ（”ＡＢＣＤＥＦＧ”）を実行し、図１７（ｂ）に示すＲＢｉｎ／ｏｕｔが生成され、このＲＢｉｎ／ｏｕｔがＳＢｉｎ／ｏｕｔ３３に登録された場合、図１７（ｃ）に示すＳＢｉｎ／ｏｕｔ３３において、第１行目がサブブロック１のエントリ００１の行に格納され、第２行目がサブブロック２のエントリ００５の行に格納され、第３行目がサブブロック３の行に格納された状態となる。
【０１５１】
この状態における検索動作は次のように行われる。まず、関数先頭アドレス（ｓｔｒｌｅｎ）の一部から特定されたサブブロック（サブブロック１）において、初期キー（−１）と、関数先頭アドレス（ｓｔｒｌｅｎ）と、引数（０００１０００Ｃ）とを用いて、ＳＢｉｎのＣＡＭ部１３を連想検索してエントリ（サブブロック１−エントリ００１）が検出される。そして、該エントリに対応するＲＡＭ部１４から次に参照すべき主記憶アドレス”０００１００１０”と次の検索に使用するキー（サブブロック２−エントリ００５）が検出される。次に、キーが含むブロック番号２に１を加えたブロック番号３のサブブロックに対して、該主記憶アドレスの内容およびキーと一致するエントリが検索される。ここで、主記憶アドレスを参照した結果が”４５４６００ＸＸ”であれば、図中丸４で示されるエントリに一致し、”４５４６４７００”であれば、図中丸５で示されるエントリに一致し、それぞれ対応するＳＢｏｕｔの値が出力される。
【０１５２】
以上のように、連想メモリシステム１を複数のサブブロックに分割しない場合には、連想メモリシステム１の全ての行に対する検索が必要であるのに対し、複数のサブブロックに分割する場合には、分割数に応じて検索範囲を大幅に縮小することができる。
【０１５３】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０１５４】
本発明に係る連想メモリシステムは、ＣＡＭおよびＲＡＭによって構成される種々の連想メモリシステムに適用可能である。このような連想メモリシステムは、例えば並列データプロセッサ、通信ネットワークに設けられるルータにおけるパケットフィルタリングシステムなどにおいて利用可能である。
【０１５５】
また、本発明に係るデータ処理装置は、ＳＰＡＲＣ(Scalable Processor ARChitecture)プロセッサに適用することが可能である。また、ＳＰＡＲＣプロセッサと同様に、３２本以上の汎用レジスタを有する多くのＲＩＳＣプロセッサにも適用することが可能である。また、このようなプロセッサを備えたゲーム機器、携帯型電話機、および情報家電などに適用することができる。
【図面の簡単な説明】
【０１５６】
【図１】本発明の一実施形態に係る連想メモリシステムの具体的な構成を示すブロック図である。
【図２】上記連想メモリシステムの概略構成を示すブロック図である。
【図３】上記連想メモリシステムが備えるＧＡＴＥ部における各行の具体的な構成例を示す回路図である。
【図４】上記連想メモリシステムが備えるＣＡＭ部の具体的な構成例を示す回路図である。
【図５】図４に示す各サブブロックに対応する、深さ３２行、幅８ビットのサブブロック構成例を示す回路図である。
【図６】図５に示す各サブブロックに対応する、８ビットデータおよび１ビットマスクのサブブロック構成例を示す回路図である。
【図７】図５に示すセンスアンプブロックの構成例を示す回路図である。
【図８】図６に示す各サブブロックに対応する、１ビットＣＡＭの構成例を示す回路図である。
【図９】１ビットマスクの構成例を示す回路図である。
【図１０】本実施形態に係るデータ処理装置の構成および動作の概略を示す図である。
【図１１】（ａ）は、ＲＢｉｎ／ｏｕｔの構成を示す図であり、（ｂ）は、命令区間としてサブルーチンが実行された場合の入力データおよび出力データがＲＢｉｎ／ｏｕｔに格納された状態を示す図であり、（ｃ）は、命令区間としてループが実行された場合の入力データおよび出力データがＲＢｉｎ／ｏｕｔに格納された状態を示す図である。
【図１２】（ａ）および（ｂ）は、ＲＢｉｎおよびＲＢｏｕｔのより詳細な動作例を示す図であり、（ｃ）は、（ａ）および（ｂ）に示す２つの記録を木構造によって表現した状態を示す図である。
【図１３】命令区間の一例を示す図である。
【図１４】ＲＢｉｎ／ｏｕｔの各レコードをＳＢｉｎ／ｏｕｔとしての連想メモリシステムに登録する際に行われる検索および書き込み動作のタイミングチャートである。
【図１５】ＭＰが命令区間を実行する際のＳＢｉｎ／ｏｕｔに対する再利用のための検索および読み出し動作のタイミングチャートである。
【図１６】（ａ）は、図１３に示す命令区間において、ｓｔｒｌｅｎ（”ＡＢＣＤＥＦ”）が実行された場合のＲＢｉｎの具体例を示す図であり、（ｂ）は、（ａ）に示すＲＢｉｎをＳＢｉｎに登録し、ＲＢｏｕｔをＳＢｏｕｔに登録した状態の例を示す図である。
【図１７】（ａ）は、図１６（ｂ）となっている状態で、ＭＰが文字列”ＡＢＣＤＥＦ”を”ＡＢＣＤＥＦＧ”に変更する処理を行った場合のＳＢｉｎの状態を示す図であり、（ｂ）は、（ａ）に示す状態から、ＭＰがＳｔｒｌｅｎ（”ＡＢＣＤＥＦＧ”）を実行し、ＲＢｉｎ／ｏｕｔが生成された状態を示す図であり、（ｃ）は、（ｂ）に示すＲＢｉｎ／ｏｕｔがＳＢｉｎ／ｏｕｔに登録された状態を示す図である。
【図１８】連想メモリシステムを、深さ方向に４つのサブブロックに分割した構成を示すブロック図である。
【図１９】従来の連想メモリシステムの概略構成を示すブロック図である。
【符号の説明】
【０１５７】
１  連想メモリシステム
１１  Ｖビット記憶部（空きエントリ記憶部）
１２  空検出回路（空きエントリ選択部）
１３  ＣＡＭ部（第１のメモリ）
１４  ＲＡＭ部（第２のメモリ）
２２  Ｖビット検索部
２３  ＧＡＴＥ部（書き込み制御部）
２４  Ｖ＝０優先検出部
２５  Ｖビット読み出し部
３０  データ処理装置
３１  ＭＰ
３２Ａ  第１ＳＰ
３２Ｂ  第２ＳＰ
３３  ＳＢｉｎ／ｏｕｔ
３４  ＲｅｇｉｏｎＴａｂｌｅ
３５  予測処理部
【図１】
2007048411.tif 000003
【図２】
2007048411.tif 000004
【図３】
2007048411.tif 000005
【図４】
2007048411.tif 000006
【図５】
2007048411.tif 000007
【図６】
2007048411.tif 000008
【図７】
2007048411.tif 000009
【図８】
2007048411.tif 000010
【図９】
2007048411.tif 000011
【図１０】
2007048411.tif 000012
【図１１】
2007048411.tif 000013
【図１２】
2007048411.tif 000014
【図１３】
2007048411.tif 000015
【図１４】
2007048411.tif 000016
【図１５】
2007048411.tif 000017
【図１６】
2007048411.tif 000018
【図１７】
2007048411.tif 000019
【図１８】
2007048411.tif 000020
【図１９】
2007048411.tif 000021