JP2007048411A - 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 - Google Patents
連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 Download PDFInfo
- Publication number
- JP2007048411A JP2007048411A JP2005234806A JP2005234806A JP2007048411A JP 2007048411 A JP2007048411 A JP 2007048411A JP 2005234806 A JP2005234806 A JP 2005234806A JP 2005234806 A JP2005234806 A JP 2005234806A JP 2007048411 A JP2007048411 A JP 2007048411A
- Authority
- JP
- Japan
- Prior art keywords
- data
- entry
- memory
- input
- stored
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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/04—Digital 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】 データの登録を行う際の処理速度を向上させる連想メモリシステムを提供する。
【解決手段】 V=0優先検出部24は、Vビット記憶部に記憶されている情報に基づいて、CAM部13に空きエントリがある場合に、1つの空きエントリを選択する。そして、GATE部23は、CAM部13に対する書き込みデータが入力された場合に、V=0優先検出部24によって選択されたエントリに対して、該書き込みデータを書き込む制御を行う。
【選択図】 図1
【解決手段】 V=0優先検出部24は、Vビット記憶部に記憶されている情報に基づいて、CAM部13に空きエントリがある場合に、1つの空きエントリを選択する。そして、GATE部23は、CAM部13に対する書き込みデータが入力された場合に、V=0優先検出部24によって選択されたエントリに対して、該書き込みデータを書き込む制御を行う。
【選択図】 図1
Description
本発明は、複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択されるCAMと、CAMに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、CAMにおいて選択されたエントリに対応するデータを出力するRAMとを備える連想メモリシステムに関するものである。
例えばRAM(Random Access Memory)などの記憶装置では、記憶領域におけるアドレスが入力されることによって記憶されているデータの読み出しが行われる。これに対して、連想メモリと呼ばれる記憶装置では、データが入力されることによって、該データに一致する記憶データが特定され、それに応じた出力が行われるようになっている。このような連想メモリは、CAM(content-addressable memory)と称されるメモリによって実現される。
CAMは、検索すべき内容が与えられると、それに一致するデータが格納されているエントリに対応する信号がONとなるように動作するようになっている。通常は、CAMはRAMとセットにして用いられる。
ここで、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に入力すると、一致するエントリがONとなり、RAMに登録されている該当するデータ「1,2」が出力されることになる。
このような連想メモリにおいて、検索すべきデータに一致するエントリが複数存在する場合が考えられる。この場合、RAMの読み出しに競合が生じることになり、競合を解消するための構成が必要となる。この問題に対して、例えば特許文献1には、プライオリティエンコーダを設けることによって、マルチマッチの問題を解決する技術が開示されている。
図19は、CAMおよびRAMを備えた従来の連想メモリシステム100の構成例を示している。同図に示すように、連想メモリシステム100は、Vビット記憶部101、空検出回路102、CAM部103、プライオリティエンコーダ104、アドレスデコーダ105、およびRAM部を備えている。
上記の連想メモリシステム100において検索が行われる際には、次のような処理が行われる。まず検索すべきデータがCAM部103に入力され、一致するエントリが検索される。一致したエントリが検出されると、検出信号がプライオリティエンコーダ104に入力される。プライオリティエンコーダ104は、一致したエントリが複数存在した場合に、優先すべき1つのエントリを選択する処理を行い、選択結果をアドレスデコーダ105に送信する。アドレスデコーダ105は、選択結果に対応するアドレスを生成し、RAM部106に送信し、RAM部106は、指示されたアドレスに対応するデータを読み出しデータとして出力する。
特開平11-126486号公報(平成11(1999)年5月11日公開)
上記のような連想メモリシステムにおいて、従来は、次のような手順でデータの登録処理が行われていた。まず連想メモリシステムにデータを登録しようとする外部装置が、連想メモリシステムに対して空きエントリのアドレスを問い合わせ、連想メモリシステムは、空きエントリを探し出してそのアドレス情報を上記外部装置に通知する。そして、外部装置は、通知された空きエントリのアドレスを指定して登録すべきデータを連想メモリシステムに登録する。
このような登録処理が行われる場合、外部装置による空きエントリの問い合わせのステップ、連想メモリシステムによる空きエントリの通知のステップ、および外部装置による連想メモリシステムに対する書き込みステップの3つのステップを外部装置と連想メモリシステムとの間で行う必要がある。これにより、データ登録処理速度の向上が抑制されているという問題がある。
また、図19に示す構成で設けられているプライオリティエンコーダは、一致したエントリの数、すなわちマッチライン数の増加とともに対数オーダにて回路ディレイが増大するという特性を有している。このため、CAMにおけるエントリ数が多い場合、多くのマッチラインが生じる可能性が高くなるので、プライオリティエンコーダが処理速度におけるボトルネックとなることが予想される。すなわち、プライオリティエンコーダを設けることが、連想メモリシステムにおける処理の高速化の障害となるという問題がある。
また、マッチライン数が増加すると、プライオリティエンコーダ自身の消費電力も増大し、これにより連想メモリシステムにおける消費電力も増大するという問題もある。
さらに、図19に示した構成の場合、検索の結果一致したCAM部に記憶されているエントリの内容を読み出す際には、改めて読み出しサイクルを設ける必要がある、という問題もある。詳しく説明すると、CAM部103で一致エントリの検索が行われた後に、プライオリティエンコーダ104によって選択されたエントリの情報が再度CAM部103に与えられ、これにより、CAM部に記憶されているエントリの内容が読み出されることになる。すなわち、検索の結果一致したエントリの内容を取得することが必要な場合には、検索サイクルとは別にさらに読み出しサイクルが必要となり、処理速度の低下を招くことになる。
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、データの登録を行う際の処理速度を向上させる連想メモリシステム、連想メモリシステムの制御方法、およびこれを備えたデータ処理装置を提供することにある。
また、その他の目的としては、連想メモリシステムにおいて従来必要であったプライオリティエンコーダを不要とすることにより、処理の高速化および消費電力の低減を実現する連想メモリシステムを提供することにある。
また、さらの他の目的としては、検索の結果一致したCAM部に記憶されているエントリの内容を読み出す際の処理を高速化する連想メモリシステムを提供することにある。
本発明に係る連想メモリシステムは、上記課題を解決するために、複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第1のメモリと、上記第1のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第1のメモリにおいて選択されたエントリに対応するデータを出力する第2のメモリとを備える連想メモリシステムであって、上記第1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶部と、上記空きエントリ記憶部に記憶されている情報に基づいて、上記第1のメモリに空きエントリがある場合に、1つの空きエントリを選択する空きエントリ選択部と、上記第1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制御部とを備えることを特徴としている。
また、本発明に係る連想メモリシステムの制御方法は、複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第1のメモリと、上記第1のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第1のメモリにおいて選択されたエントリに対応するデータを出力する第2のメモリとを備える連想メモリシステムの制御方法であって、上記第1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶ステップと、上記空きエントリ記憶ステップにおいて記憶された情報に基づいて、上記第1のメモリに空きエントリがある場合に、1つの空きエントリを選択する空きエントリ選択ステップと、上記第1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択ステップにおいて選択されたエントリに対して、該書き込みデータを書き込む書き込み制御ステップとを有することを特徴としている。
上記の連想メモリシステムは、入力データが入力されると、第1のメモリにおいて、該入力データに一致するエントリが選択され、選択されたエントリに対応する第2のメモリにおけるデータが出力されるものとなっている。このような連想メモリシステムに対するデータの登録処理の際に、従来では、前記したように、外部装置による空きエントリの問い合わせのステップ、連想メモリシステムによる空きエントリの通知のステップ、および外部装置による連想メモリシステムに対する書き込みステップの3つのステップを外部装置と連想メモリシステムとの間で行う必要があった。
これに対して、上記の構成によれば、書き込みデータが入力されると、空きエントリ選択部によって選択された空きエントリに対して、該書き込みデータを書き込むように書き込み制御部が制御するようになっている。したがって、外部装置は、連想メモリシステムに対して書き込みデータを入力するステップのみを行えばよいことになり、データ登録処理に必要とされる時間を大幅に低減することが可能となる。
また、本発明に係る連想メモリシステムは、上記の構成において、上記書き込み制御部が、上記第1のメモリに対する書き込みデータが入力された場合に、該書き込みデータが上記第1のメモリに既に記憶されているか否かを判定し、記憶されていない場合に該書き込みデータを上記選択されたエントリに書き込む一方、既に記憶されている場合には、該書き込みデータの書き込みを行わない構成としてもよい。
上記の構成によれば、入力された書き込みデータが第1のメモリに登録されていない場合にのみ、該第1のメモリに登録されることになる。この場合、第1のメモリにおいて、同じ内容のデータが複数のエントリに登録されることがないことになる。このような構成であれば、1つの入力データに対して複数のエントリが一致するエントリとして選択されることがないので、従来では必要であったプライオリティエンコーダを設ける必要がないことになる。
よって、上記の構成によれば、プライオリティエンコーダを設けないことによる構成の簡素化を実現できる。また、プライオリティエンコーダによる処理の遅延が生じないため、処理速度の向上を実現できる。さらに、マッチライン数の増加に伴うプライオリティエンコーダ自身の消費電力の増大の問題も解消することができる。
また、本発明に係る連想メモリシステムは、上記の構成において、上記第1のメモリが、記憶すべきデータをビット単位で格納するメモリセルを複数備えているとともに、上記メモリセルが、上記書き込みデータに含まれるビットを当該メモリセルに入力するビットラインと、検索データに含まれるビットを当該メモリセルに入力するビットラインとを兼用したビットラインを備えており、上記書き込み制御部が、上記第1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対応するワードラインを駆動することにより、上記ビットラインにセットされたビットが、選択されたエントリに対応するメモリセルに書き込まれる構成としてもよい。
上記の構成によれば、各メモリセルに対して、検索データおよび書き込みデータが共に共通のビットラインにセットされ、書き込み時には、書き込み制御部の制御に基づき、該当メモリセルのワードラインが駆動されて書き込みが行われることになる。したがって、検索処理と書き込み処理との切り替えが、ワードラインの駆動/非駆動によって行うことが可能となる。これにより、書き込みデータが第1のメモリに既に記憶されているか否かの判定処理から、記憶されていない場合に該書き込みデータを選択されたエントリに書き込む処理への移行を迅速に行うことが可能となり、処理の高速化を図ることができる。
また、本発明に係る連想メモリシステムは、上記の構成において、上記第1のメモリが、記憶すべきデータをビット単位で格納するデータ領域と、該データ領域に記憶されている各ビットの有効/無効を示すマスクビットを格納するマスクビット領域とを備えているとともに、上記第2のメモリが、上記第1のメモリに記憶されている複数のエントリのそれぞれに対応したマスクビットをさらに記憶しており、上記第1のメモリにおいて、検索データとしての入力データに一致するエントリが選択された場合に、上記第2のメモリに記憶されている、選択されたエントリに対応するマスクビットと、該入力データとが出力される構成としてもよい。
従来では、前記したように、検索の結果、一致したエントリの第1のメモリに記憶されているデータを読み出すには、改めて読み出しサイクルを設ける必要があった。これに対して、上記の構成によれば、第2のメモリに、第1のメモリに記憶されている複数のエントリのそれぞれに対応したマスクビットが記憶されており、第2のメモリに記憶されている、選択されたエントリに対応するマスクビットと、該入力データとが出力されるようになっている。すなわち、第2のメモリの読み出しのサイクルにおいて、マスクビットと入力データとが出力されるので、これらを組み合わせることにより、一致したエントリの第1のメモリに記憶されているデータを認識することが可能となる。よって、検索の結果一致したエントリの内容を取得することが必要な場合における処理速度の低下を防止することができる。
また、本発明に係る連想メモリシステムは、上記の構成において、上記第1のメモリが、複数のサブブロックに分割されており、上記空きエントリ選択部が、上記第1のメモリに対する書き込みデータが入力された場合に、該書き込みデータの少なくとも一部に基づいて決定されるサブブロックの中から空きエントリを選択するとともに、検索データが入力された際には、該検索データの少なくとも一部に基づいて決定されるサブブロックに対して検索動作が行われる構成としてもよい。
上記の構成によれば、書き込みデータは、該書き込みデータの少なくとも一部に基づいて決定されるサブブロックに登録され、検索時には、検索データの少なくとも一部に基づいて決定されるサブブロックに対して検索動作が行われる。よって、検索対象となる第1のメモリにおけるエントリの数を低減することができるので、検索処理にかかる時間の低減、および、検索時に必要とされる消費電力の低減を実現することができる。
また、本発明に係る連想メモリシステムは、上記の構成において、上記第1のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合、直前の書き込みデータが登録されたサブブロックとは異なるサブブロックに、該書き込みデータが登録される構成としてもよい。
上記の構成によれば、連続する書き込みデータは、それぞれ異なるサブブロックに登録されることになる。よって、特定のサブブロックに偏って書き込みデータが登録されることを抑制することができる。ここで、特定のサブブロックに書き込みデータが偏って登録されてしまうと、そのサブブロックのエントリの数が多くなることにより、検索対象となるエントリの数の低減の効果が小さくなる。すなわち、上記の構成によれば、検索対象となるエントリの数をより的確に低減することが可能となる。
また、本発明に係る連想メモリシステムは、上記の構成において、上記第1のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合として、上記第1のメモリに対して書き込みデータが登録されたエントリに対応して上記第2のメモリに登録されるデータが、次に登録を行うべき上記第1のメモリのサブブロックおよびエントリの情報である構成としてもよい。
上記の構成によれば、一致比較すべきデータが複数の部分に分割可能な場合に、各部分を順次第1のメモリに登録することが可能となる。よって、一致比較すべきデータの長さが比較的長い場合でも、第1のメモリに該データを登録することが可能となる。
また、本発明に係るデータ処理装置は、主記憶手段から命令区間を読み出し、演算処理を行った結果を主記憶手段に書き込む処理を行うデータ処理装置において、上記主記憶手段から読み出した命令区間に基づく演算を行う第1の演算手段と、上記第1の演算手段による上記主記憶手段に対する読み出しおよび書き込み時に用いられるレジスタと、上記第1の演算手段によって命令区間の演算が行われたときの入力パターンおよび出力パターンからなる入出力グループを生成する入出力生成手段と、上記入出力生成手段によって生成された入出力グループを記憶する命令区間記憶手段とを備え、上記第1の演算手段が、命令区間を実行する際に、該命令区間の入力パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致した場合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力パターンをレジスタおよび/または主記憶手段に出力する再利用処理を行い、上記命令区間記憶手段が、請求項1〜7のいずれか一項に記載の連想メモリシステムによって構成されることを特徴としている。
上記の構成では、第1の演算手段が命令区間を実行する際に、該命令区間の入力パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致した場合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力パターンをレジスタおよび/または主記憶手段に出力する再利用処理を行う構成となっている。このような構成において、命令区間記憶手段が、上記本発明に係る連想メモリシステムによって構成されているので、データ登録処理に必要とされる時間を大幅に低減することが可能となり、より処理速度の高いデータ処理装置を提供することが可能となる。
本発明に係る連想メモリシステムは、以上のように、上記第1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶部と、上記空きエントリ記憶部に記憶されている情報に基づいて、上記第1のメモリに空きエントリがある場合に、1つの空きエントリを選択する空きエントリ選択部と、上記第1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制御部とを備える構成である。これにより、データ登録処理に必要とされる時間を大幅に低減することが可能となるという効果を奏する。
本発明の一実施形態について図面に基づいて説明すると以下の通りである。
(データ処理装置の構成)
まず、本実施形態に係る連想メモリシステム1の適用例としてのプロセッサモデルについて説明する。なお、本発明に係る連想メモリシステム1は、以下に示すプロセッサモデルへの適用に限定されるものではなく、データが入力されることによって、該データに一致する記憶データが特定され、それに応じた出力が行われる連想メモリを利用する種々の構成に適用可能である。このような構成としては、例えば並列データプロセッサ、通信ネットワークに設けられるルータにおけるパケットフィルタリングシステムなどが挙げられる。
まず、本実施形態に係る連想メモリシステム1の適用例としてのプロセッサモデルについて説明する。なお、本発明に係る連想メモリシステム1は、以下に示すプロセッサモデルへの適用に限定されるものではなく、データが入力されることによって、該データに一致する記憶データが特定され、それに応じた出力が行われる連想メモリを利用する種々の構成に適用可能である。このような構成としては、例えば並列データプロセッサ、通信ネットワークに設けられるルータにおけるパケットフィルタリングシステムなどが挙げられる。
図10は、該プロセッサモデルとしてのデータ処理装置30の構成および動作の概略を示す図である。同図に示すように、データ処理装置30は、主プロセッサとしてのMP(第1の演算手段)31、副プロセッサとしての第1SP32Aおよび第2SP32B、予測処理部35、および、L2cacheにおける記憶領域としてのSBin/out(命令区間記憶手段)33ならびにRegionTable34を備えている。なお、本実施形態に係る連想メモリシステム1は、SBin/out33に適用される。
MP31、第1SP32Aおよび第2SP32Bは、それぞれL1cacheを備えており、該L1cacheに、命令区間(サブルーチンまたはループ)の入力として使用したデータおよび出力したデータを記録する記録領域としてのRBin/out(入出力生成手段)を備えている。そして、MP31、第1SP32Aおよび第2SP32Bは、命令区間を実行中に該命令区間の実行内容をRBin/outに順次登録し、該命令区間の実行が完了した際に、RBin/outの内容を全プロセッサが共有するSBin/out33に登録する。
なお、同図に示す構成では、副プロセッサを2つ備えた構成となっているが、1つあるいは3つ以上備えた構成となっていてもよい。また、副プロセッサが備えられていない構成であっても構わない。
以下に、図10を参照しながら、上記の処理についてより具体的に説明する。MP31は、命令区間#2の実行を完了した際に、RBinに記録した命令区間の入力をRegionTable34に送信し、履歴#2として記録する(図中(a))。
予測処理部35は、RegionTable34に記録されているMP31によって実行された命令区間入力の履歴(履歴#1、履歴#2)に基づいて、例えばストライド予測などにより将来の命令区間入力の予測値を算出する。そして、この入力予測値が第1SP32Aおよび第2SP32Bに送信される(図中(b))。
第1SP32Aおよび第2SP32Bは、与えられた入力予測値に基づいて命令区間を実行し(図中(c))、実行結果をRBin/outに記録する(図中(d))。図10に示す例では、第1SP32Aは、与えられた入力予測値に基づいて命令区間#4を実行し、第2SP32Bは、与えられた入力予測値に命令区間#5を実行している。
その後、第1SP32Aおよび第2SP32Bは、命令区間の実行を完了した際に、RBin/outに記録されている実行結果をSBin/out33に送信する(図中(e))。SBin/out33は、第1SP32Aおよび第2SP32Bから送られた実行結果のデータを登録する。
一方、MP31は、命令区間を実行しようとする際に、SBinの連想検索を行い、MP31で実行中の入力データ、すなわち、現在のレジスタおよび主記憶アドレスの値と同一であるエントリがあるか否かを判定する。ここで、入力データと一致したエントリが検出された場合には、対応する出力セットであるSBoutの内容を、該命令区間の出力データとして出力する(図中(f))。すなわち、過去の実行結果、および第1SP32Aおよび第2SP32Bにおいて事前実行された結果を再利用することにより、命令区間の実行を省略して処理の高速化が実現される。図10では、命令区間#4および命令区間#5が再利用によってMP31による実際の演算が行われることなしに出力を得ている。
なお(f)において再利用を行った場合にも、(a)における処理と同様に、MP31において再利用が行われた命令区間の入力パターンをRegionTable34に送信するために、再利用が行われた命令区間の入力パターンがSBinから読み出される。
(RBin/outの構成)
図11(a)は、RBin/outの構成を示している。同図に示すように、RBin/outは、スタックポインタを示す%sp、RBin部、およびRBout部を備えている。RBin部には、CompareFlag領域、Type領域、Reg./Mem.Address領域、データ領域、およびマスク領域が設けられている。また、RBout部には、Type領域、Reg./Mem.Address領域、データ領域、およびマスク領域が設けられている。RBin部に命令区間実行時の入力データが格納され、RBout部に出力データが格納される。
図11(a)は、RBin/outの構成を示している。同図に示すように、RBin/outは、スタックポインタを示す%sp、RBin部、およびRBout部を備えている。RBin部には、CompareFlag領域、Type領域、Reg./Mem.Address領域、データ領域、およびマスク領域が設けられている。また、RBout部には、Type領域、Reg./Mem.Address領域、データ領域、およびマスク領域が設けられている。RBin部に命令区間実行時の入力データが格納され、RBout部に出力データが格納される。
CompareFlag領域は、該エントリの検証が必要であるか否かを示すフラグを格納する。すなわち、CompareFlagは、次に比較すべきレジスタ番号または主記憶アドレスの内容が更新されたことを示している。Type領域は、該エントリに格納されるデータがどのタイプのデータであるか否かを示す情報を格納する。Reg./Mem.Address領域は、該当エントリに格納されるデータが、レジスタまたは主記憶のどのアドレスに格納されていたものであるかを示す情報を格納する。データ領域は、該エントリに格納される実データを格納し、マスク領域は、データ領域におけるどのビットが有効であるかを示すマスクビットデータを格納する。
図11(b)は、命令区間としてサブルーチンが実行された場合の入力データおよび出力データがRBin/outに格納された状態を示しており、図11(c)は、命令区間としてループが実行された場合の入力データおよび出力データがRBin/outに格納された状態を示している。
図12(a)および図12(b)に、RBinおよびRBoutのより詳細な動作例を示す。同図では、図13に示す関数が実行された状態を示している。図13において、strlen(str)は、NULL文字によって終端された文字列の長さを求める関数である。この関数を命令区間として実行した結果、引数に文字列"ABCDEF"が与えられた場合、および、引数に文字列"ABCDEFG"が与えられた場合に、命令区間の入力および出力を記録すると、それぞれ図12(a)および図12(b)に示すRBinおよびRBoutが得られる。この2つの記録を木構造によって表現したものを図12(c)に示す。
以上のようなプロセッサモデルにおいて、連想メモリシステム1によって構成されるSBin/out33に対して要求される機能は次の通りである。
図10の(e)において、RBinの内容をSBin/out33に登録する際には、次の処理が行われる。まず、RBinの内容に基づいて、SBin/out33の連想検索が行われる。連想検索の結果、RBinの内容がSBin/out33に既に登録されている場合には、SBin/out33に対する登録処理は行われない。一方、RBinの内容がSBin/out33に登録されていない場合には、連想メモリシステム1の空きエントリに対してRBinの内容が書き込まれる。
図10の(f)において、MP31がSBin/out33を検索する際には、次の処理が行われる。まず、SBinの連想検索を行い,実行中の入力データ、すなわち、現在のレジスタおよび主記憶アドレスの値と同一であるエントリがあるか否かを判定する。実行中の入力データと同じ内容のエントリがある場合には、該エントリに属するSBinおよびSBoutの内容を読み出す。一方、実行中の入力データと同じ内容のエントリがない場合には、検索を終了する。
(再利用処理の概略)
ここで、再利用処理の概略について、関数およびループのそれぞれの場合について説明する。
ここで、再利用処理の概略について、関数およびループのそれぞれの場合について説明する。
まず、関数の場合について説明する。関数から復帰するまでに次の関数を呼び出した場合、または、登録すべき入出力が再利用表の容量を超える、引数の第7ワードを検出する、途中でシステムコールや割り込みが発生する、などの擾乱が発生しなかった場合、復帰命令を実行した時点で、登録中のエントリを有効にする。
以降、関数を呼び出す前に、(1)SBin/out33に登録されているエントリにおける関数の先頭アドレスに、該当関数の先頭アドレスと一致するものがあるかを検索する。一致するものがある場合には、(2)SBin/out33に登録されている該当関数に関するエントリにおける引数が、呼び出す関数の引数と完全に一致するエントリを選択する。そして、(3)関連する主記憶アドレスすなわち少なくとも1つのMaskが有効であるReadアドレスをSBin/out33からすべて参照して、(4)SBin/out33に登録されている内容と一致比較を行う。全ての入力が一致した場合に、(5)SBin/out33に登録済の出力(返り値、大域変数、およびAの局所変数)を主記憶に書き戻すことによって、関数の実行を省略する、すなわち関数の再利用を実現することができる。
次に、ループの場合について説明する。ループが完了する以前に関数から復帰したり、前記した擾乱が発生したりするなど、ループの入出力登録が中止されなければ、登録中のループに対応する後方分岐命令を検出した時点で、登録中の入出力表エントリを有効にし、そのループの登録を完了する。
さらに、後方分岐命令が成立する場合は、次のループが再利用可能かどうかを判断する。すなわち、後方分岐する前に、(1)SBin/out33に登録されているエントリにおけるループの先頭アドレスに、該当ループの先頭アドレスと一致するものがあるかを検索する。一致するものがある場合には、(2)SBin/out33に登録されている該当ループに関するレジスタ入力値が、呼び出すループのレジスタ入力値と完全に一致するエントリを選択する。そして、(3)関連する主記憶アドレスをSBin/out33から全て参照して、(4)SBin/out33に登録されている内容と一致比較を行う。全ての入力が一致した場合に、(5)SBin/out33に登録済の出力(レジスタおよび主記憶出力値)を主記憶に書き戻すことによってループの実行を省略する、すなわちループの再利用を実現することができる。
再利用した場合、SBin/out33に登録されている分岐方向に基づいて、さらに次のループに関して同様の処理を繰り返す。一方、次のループが再利用不可能であれば、次のループを通常に実行し、SBin/out33への登録を開始する。
(連想メモリシステムの概略構成)
図2は、本実施形態に係る連想メモリシステム1の概略構成を示すブロック図である。同図に示すように、連想メモリシステム1は、Vビット記憶部(空きエントリ記憶部)11、空検出回路(空きエントリ選択部)12、CAM部(第1のメモリ)13、およびRAM部(第2のメモリ)14を備えた構成となっている。
図2は、本実施形態に係る連想メモリシステム1の概略構成を示すブロック図である。同図に示すように、連想メモリシステム1は、Vビット記憶部(空きエントリ記憶部)11、空検出回路(空きエントリ選択部)12、CAM部(第1のメモリ)13、およびRAM部(第2のメモリ)14を備えた構成となっている。
CAM部13は、データが入力されることによって、該データに一致する記憶データが特定され、それに応じた出力が行われるCAMによって構成されている。このCAM部103は、複数のエントリを記憶しており、入力データが記憶されているエントリと一致した場合に、該エントリに対応したマッチラインからMATCH信号がRAM部14に対して出力される。また、CAM部103は、各エントリに対応して記憶されているデータをビット単位で格納するデータ領域と、該データ領域に記憶されている各ビットのうち、どのビットが有効であるかを示すマスクビットを格納するマスクビット領域とを備えている。
RAM部14は、いわゆるRAMによって構成されており、CAM部13からMATCH信号が出力されたエントリに対応する記憶データを出力するようになっている。また、RAM部14には、CAM部13に記憶されている複数のエントリのそれぞれに対応したマスクビットをさらに記憶している。
Vビット記憶部11は、CAM部13に含まれるエントリのそれぞれに対応したVビットを記憶するものである。Vビットは、該エントリが有効であるか否かを示すビットである。本実施形態では、有効である場合にVビットを1とし、無効である場合にVビットを0としている。
空検出回路12は、Vビット記憶部11を参照することにより、CAM部13における空きエントリを検出する回路である。CAM部13に対してデータが書き込まれる際には、空検出回路12で検出された空きエントリに対して書き込みが行われる。
以上のような構成の連想メモリシステム1において、本実施形態では、検索が行われた場合に、入力データに一致するエントリが1個または0個となるように、CAM部13へのデータの登録が行われるように制御が行われるようになっている。これにより、従来技術では必要であったプライオリティエンコーダを省略することが可能となる。
従来のCAMでは、データの登録を行う際には、次のような手順で行われる。まずCAMにおける空きのエントリのアドレス情報が取得され、該アドレスに対してデータの登録が行われる。このようなデータ登録処理のみの場合、複数のエントリに対して同一のデータが記録されることが考えられ、前述したRAMの読み出しに競合が生じるという問題が発生する。
これに対して、本実施形態における連想メモリシステム1では、指定した書き込みデータが既にCAM部13に登録されている場合には、該書き込みデータの登録が行われず、未登録である場合にのみ空きエントリに対して該書き込みデータが登録されるように、回路が構成されている。これにより、高々1つのマッチラインがアサートされることが保証される。
また、本実施形態では、RAM部14にCAM部13に記憶されているマスクビットと同じマスクビットを記憶させている。これにより、CAM部13の検索結果を受けてRAM部14が読み出される際に、該マスクビットパターンが同時に読み出され、検索データ自身と組み合わせることにより、検索の結果一致したCAM部13のエントリの内容を読み出すことを実現している。以下、上記の内容を実現する構成について、より詳細に説明する。
(連想メモリシステムの具体構成)
図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に相当する。
図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に相当する。
検索すべきデータを示す信号であるSDおよびSDの反転信号であるXSDは、CAM部13に入力される。CAM部13は、SD/XSDに基づいて連想検索を行い、検索結果を示すMATCH信号をGATE部23に出力する。
一方、Vビット記憶部11から出力される、各エントリに対応するVビット情報を示す信号であるVおよびVの反転信号であるXVは、Vビット検索部22に入力される。Vビット検索部22は、CAM部13における各エントリに対応するVビット情報を格納するとともに、有効なエントリ、すなわち、V=1に設定されているエントリに対してMATCH信号をGATE部23に出力する。このように、Vビット検索部22を設けることによって、CAM部13における検索結果のうち、有効なエントリのみを対象としてGATE部23にMATCH信号を出力することができる。
また、Vビット記憶部11から出力されるV/XVは、Vビット読み出し部25にも入力される。Vビット読み出し部25は、Vビット検索部22と同様に、CAM部13における各エントリに対応するVビット情報を格納するとともに、V=0となっているエントリの情報をV=0優先検出部24に出力する。
なお、図1に示す構成では、Vビット検索部22とVビット読み出し部25とを両方設けた構成となっているが、どちらか一方のみを備えた構成としてもよい。例えばVビット検索部22のみを設けた場合、該Vビット検索部22とGATE部23との間にV=0優先検出部24を設けることによって、同様の動作を行うことが可能である。しかしながら、この構成の場合、Vビット検索部22とGATE部23との間の距離が長くなることになり、信号伝達の遅延により、高速動作の障害となるという問題がある。
V=0優先検出部24は、Vビット読み出し部25から入力されたV=0となっているエントリの情報の中から、所定の優先順位(例えばエントリ番号の小さい順など)に従って1つのエントリを選択し、選択したエントリの情報をGATE部23に出力する。
GATE部23は、以上の情報に基づいて、検索データに一致するエントリが存在する場合にはRAM部14に対してRead動作を指示し、存在しない場合には、CAM部13およびRAM部14に対してWrite動作を指示する。
なお、Vビット検索部22は、上記したように、CAM部13における有効なエントリのみを検索対象とするために、検索データと一体となって、V=1であるエントリのみを検索するための追加ビットであり、Vビット読み出し部25と同じ値を保持するように構成されている。すなわち、検索時には、Vビット検索部22においてV=1を用いて検索が行われると同時に、空きエントリ検出時には、Vビット読み出し部25においてV=0のエントリの選択が行われる。空きエントリに有効データが書き込まれる際には、Vビット検索部22およびVビット読み出し部25の両方において、該エントリのビットにV=1が書き込まれる。
(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であるか否かを示すALL0信号が入力されている。また、GATE部23における動作サイクルを規定するクロック信号として、CK1、CK2、CK3、CK4、ならびに、これらの反転信号であるXCK1、XCK2、XCK3、XCK4が入力されている。
図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であるか否かを示すALL0信号が入力されている。また、GATE部23における動作サイクルを規定するクロック信号として、CK1、CK2、CK3、CK4、ならびに、これらの反転信号であるXCK1、XCK2、XCK3、XCK4が入力されている。
なお、CK1、CK2、CK3、CK4は、後述するサイクル1A/2A/3A/4A前半、1A/2A/3A/4A後半、サイクル1B/2B/3B/4B前半、1B/2B/3B/4B後半に1となるように外部から与えるクロック信号である。
WRITE信号が1、すなわちWrite動作が行われている際に、MATCH信号が1である場合には、ALL0信号は0となる。この場合、RAM部14のリードイネーブル信号であるRRENおよびRAM部14のセンスイネーブル信号であるRSENが出力されることにより、RAM部14におけるRead動作が行われる。
また、WRITE信号が1、すなわちWrite動作が行われている際に、MATCH信号が0であり、ALL0信号が0である場合には、他の行でRAM部14におけるRead動作が行われることになる。
また、WRITE信号が1、すなわちWrite動作が行われている際に、MATCH信号が0であり、ALL0信号が1である場合には、Write動作対象となる入力データと一致するエントリが存在しなかったことになる。
ここで、D信号によって該当行がV=0であることが示されている場合には、該当行に入力データを登録する処理が行われる。すなわち、この場合には、RAM部14の該当行を駆動するためのRWL、CAM部13の該当行を駆動するためのCWL、RAM部14のライトイネーブル信号であるRWENが出力される。一方、D信号によって該当行がV=1であることが示されている場合には、該当行には有効なデータが登録されているので、CAM部13およびRAM部14に対する書き込み処理は行われない。
一方、WRITE信号が0、すなわちSearch動作が行われている際に、MATCH信号が0であり、ALL0信号が0である場合には、他の行でRAM部14におけるRead動作が行われることになる。
また、WRITE信号が0、すなわちSearch動作が行われている際に、MATCH信号が0であり、ALL0信号が1である場合には、検索データと一致したエントリが存在しなかったことになるので、Read動作は行われない。
(CAM部の具体構成例)
図4は、CAM部13の具体的な構成例を示している。同図に示す例では、CAM部13を、深さ32行、幅128ビット(8ビットごとに1ビットのマスクを伴うので、計144ビット)としている。なお、行はエントリに対応しており、幅は各エントリに格納可能なデータのビット数に対応している。また、8ビットごとに設けられるマスクは、該8ビットの情報が有効であるか否かを示すビットであり、1の場合に有効、0の場合に無効となる。
図4は、CAM部13の具体的な構成例を示している。同図に示す例では、CAM部13を、深さ32行、幅128ビット(8ビットごとに1ビットのマスクを伴うので、計144ビット)としている。なお、行はエントリに対応しており、幅は各エントリに格納可能なデータのビット数に対応している。また、8ビットごとに設けられるマスクは、該8ビットの情報が有効であるか否かを示すビットであり、1の場合に有効、0の場合に無効となる。
図1に示したように、CAM部13に対しては、検索すべきデータを示す信号であるSDおよび反転信号であるXSDが入力されている。このSD/XSDは、CAM部13に入力されると、正負入力信号としてのWD/XWDとしてCAM部13が備える各サブブロックに入力される。ここでは、WD/XWDは、128ビット分のデータおよび8ビット分のマスクを示す信号WD/XWD<0:143>となっている。
また、同図に示すように、CAM部13は、SBA00〜SBA15の16個のサブブロックを備えている。そして、各サブブロックに対して、WD/XWD<0:143>のうち、8ビット分のデータおよびそれに対応する1ビット分のマスクを示す信号がそれぞれ入力される。例えばサブブロックSBA00には、WD/XWD<0:8>が入力され、サブブロックSBA01には、WD/XWD<9:17>が入力され、以降、9ビット分ずつ各サブブロックに入力される。
また、各サブブロックからは、8ビット分のデータおよびそれに対応する1ビット分のマスクを示す読み出し信号がそれぞれ出力されるようになっている。例えばサブブロックSBA00からは、正負出力信号としてのRD/XRD<0:8>が出力され、サブブロックSBA01からは、RD/XRD<9:17>が出力され、以降、9ビット分ずつ各サブブロックから出力される。そして、各サブブロックから出力されたRD/XRDがまとめてRD/XRD<0:143>としてCAM部13からの読み出し信号として出力される。
なお、詳細は後述するが、本実施形態では、CAM部13の検索結果を受けてRAM部14が読み出される際に、RAM部14に記録されているマスクビットパターンが同時に読み出され、検索データ自身と組み合わせることにより、検索の結果一致したCAM部13のエントリの内容が読み出されるようになっている。よって、基本的には、上記のRD/XRDの読み出し信号の出力は行われる必要はないので、これに関する構成を設けない構成としてもよい。
各サブブロックには、各行に対応するワードライン信号としてのWL<0:31>、内容を読み出すために必要なビットラインプリチャージ信号としてのBPRE・SPRE、ライトイネーブル信号としてのWEN、リードイネーブル信号としてのREN、センスアンプイネーブル信号としてのSENが入力されている。また、各サブブロックからは、各行に対応するマッチライン信号としてのMATCH<0:31>が出力されている。
図5は、図4に示すSBA00〜SBA15の各サブブロックに対応する、深さ32行、幅8ビット(マスク1ビットを含むので計9ビット)のサブブロック構成例を示している。なお、同図に示す例では、上記のSBA00のサブブロックを示しているが、その他のサブブロックも同様の構成となる。
SBA00のサブブロックは、センスアンプブロックSABおよび32個のサブブロックとしてのSBB00〜SBB31を備えている。センスアンプブロックSABには、WD/XWD<0:8>、BPRE・SPRE、WEN、REN、およびSENが入力される。また、センスアンプブロックSABからは、RD/XRD<0:8>が出力されている。
SBB00〜SBB31は各行に対応しており、それぞれに対して、ワードライン信号としてのWL<0>〜WL<31>が入力されている。また、SBB00〜SBB31のそれぞれからは、マッチライン信号としてのMATCH<0>〜MATCH<31>が出力されている。
センスアンプブロックSABに入力されたWD/XWD<0:8>は、ビットライン信号としてのBL/XBL<0:8>として、SBB00〜SBB31のそれぞれに対して入力される。また、SBB00〜SBB31からの読み出し信号は、BL/XBL<0:8>としてセンスアンプブロックSABに入力され、これに応じてRD/XRD<0:8>が出力されている。
図6は、図5に示すSBB00〜SBB31の各サブブロックに対応する、8ビットデータおよび1ビットマスクのサブブロック構成例を示している。なお、同図に示す例では、上記のSBB00のサブブロックを示すものとするが、その他のサブブロックも同様の構成となる。
SBB00のサブブロックは、8個のSBC00〜SBC07、および、1個のSBMを備えている。SBC00〜SBC07のそれぞれは1ビットCAM(メモリセル)に相当するものであり、SBMは1ビットマスクに相当するものである。ワードライン信号としてのWLは、SBC00〜SBC07およびSBMのそれぞれに対して共通に入力される。
また、SBC00〜SBC07、およびSBMのそれぞれには、各ビットのメモリセルに対して書き込み、読み出し、検索を行うためのビットライン信号としてのBL/XBL<0>〜BL/XBL<8>が入力される。
また、SBC00〜SBC07のそれぞれから出力されるマッチライン信号としてのMLは、一旦SBMに入力される。そして、SBMは、SBC00〜SBC07からのMLが全て1となり、かつ、自身におけるマスクビットの比較においても一致した場合に、MATCH信号を出力する。
図7は、図5に示すセンスアンプブロックSABの構成例を示している。センスアンプブロックSABは、9個のセンスアンプSA00〜SA08を備えている。ここでSA00〜SA07は8ビットデータのそれぞれのビットに対応しており、SA08は1ビットマスクのビットに対応している。なお、センスアンプSA00〜SA08は一般的に用いられる構成のものでよいので、ここではその説明を省略する。
図8は、図6に示すSBC00〜SBC07の各サブブロックに対応する、1ビットCAMの構成例を示している。また、図9は、図6に示すSBMに対応する1ビットマスクの構成例を示している。
1ビットCAMは、トランジスタN0〜N3、P0、P2によって構成されるRAM機能部と、トランジスタN5〜N8によって構成されるCAM機能部とによって構成される。RAM機能部にはWLおよびBL/XBLが接続されており、CAM機能部にMLが接続されている。
1ビットマスクは、トランジスタN0〜N3、P0、P2によって構成されるRAM機能部と、トランジスタN11・N12によって構成されるCAM機能部とによって構成される。RAM機能部にはWLおよびKL/XKLが接続されており、CAM機能部にMLおよびMATCHが接続されている。
検索時には、1ビットマスクにおいてMATCHが1にプリチャージされた後に、1ビットCAMにおいて各BL/XBLに検索データがセットされる。マスクビットの値が0である場合、1ビットマスクにおいてトランジスタN11およびN12がOFFとなり、MATCHがMLから切り離されるため、対応する8個の1ビットCAMにいかなる比較値を与えられても、1にプリチャージされたMATCHを0に変化させることはできないことになる。すなわち、マスクビットが0である場合には、必ずMATCHが1となり、入力データと一致していると判定される。
一方、マスクビットの値が1である場合、1ビットマスクにおいてトランジスタN11およびN12はONとなり、MATCHがMLに接続されるため、対応する8個の1ビットCAMの全てが比較値と一致した場合にのみ、1にプリチャージされたMATCHが1を保持され、入力データと一致していると判定される。
書き込み時には、BL/XBLに書き込み値がセットされた後、WLがオンされる。これにより、RAM機能部に書き込み値が格納される。読み出し時には、BL/XBLが1にプリチャージされた後、WLがオンされ、さらに外部のセンスアンプが稼働されることにより、BL/XBLに値が出力される。
以上、図4〜図9を参照しながらCAM部13の構成について説明したが、RAM部14は、上記のCAM部13の構成から、データ部のMLに関わる回路、マスク部、ML、および、MATCHを全て除去した構成となる。よって、データの書き込み時、および読み出し時の動作はCAM部13における動作を同様となる。すなわち、書き込み時には、BL/XBLに書き込み値がセットされた後、WLがオンされる。これにより、RAM機能部に書き込み値が格納される。読み出し時には、BL/XBLが1にプリチャージされた後、WLがオンされ、さらに外部のセンスアンプが稼働されることにより、BL/XBLに値が出力される。
(連想メモリシステムにおけるタイミングチャート)
以上のような構成の連想メモリシステム1におけるタイミングチャートを図14および図15に示す。図14は、RBin/outの各レコードをSBin/out33としての連想メモリシステム1に登録する際に行われる検索および書き込み動作のタイミングチャートを示しており、図15は、MP31が命令区間を実行する際のSBin/out33に対する再利用のための検索および読み出し動作のタイミングチャートを示している。
以上のような構成の連想メモリシステム1におけるタイミングチャートを図14および図15に示す。図14は、RBin/outの各レコードをSBin/out33としての連想メモリシステム1に登録する際に行われる検索および書き込み動作のタイミングチャートを示しており、図15は、MP31が命令区間を実行する際のSBin/out33に対する再利用のための検索および読み出し動作のタイミングチャートを示している。
まず、図14に示すタイミングチャートについて説明する。サイクル1A前半では、CAM部13における連想検索に備えて、CAM部13の全てのマッチラインが1にプリチャージされる。図中では、MATCH−prechargeがサイクル1A前半でHIGHとなっていることが示されている。
同様に、RAM部14の読み出しに備えて、RAM部14の全てのビットラインが1にプリチャージされる。図中では、RAM−BL−prechargeがサイクル1A前半でHIGHとなっていることが示されている。
また、VALIDビットが0である全エントリの中から最も優先順位が高い空きエントリを探す動作がV=0優先検出部24にて開始される。図中では、V=0:priority−0−detectorがサイクル1A前半でHIGHとなっていることが示されている。なお、この動作は、検索データに一致するエントリがない、すなわち検索データが未登録であることが判明した場合に、該検索データを登録するための空きエントリを1つ準備するために行われる。V=0優先検出部24におけるこの動作は、プライオリティエンコーダと同様に、ある程度の時間を必要とするので、サイクル1Aにて開始しておくことが好ましい。
サイクル1A後半では、まず、書き込みデータがCAM部13のSD/XSDおよびRAM部14のWD/XWDに与えられる。図中では、SD/XSD/WD/XWDがサイクル1A後半でHIGHとなっていることが示されている。
また、CAM部13では、RBinの内容が書き込みデータとして与えられることによって、各エントリが書き込みデータと一致するかの評価、すなわち、MATCHの評価が開始されると同時に、全てのMATCHが0、すなわち、一致するエントリが全くない(ALL0?YES)ことを調査するために、ALL0信号のプリチャージが開始される。図中では、ALL0−prechargeがサイクル1A後半でHIGHとなっていることが示されている。
サイクル1Bでは、CAM部13におけるMATCHの評価結果に基づき、MATCH?YESであることが判明した行に対応するRAM部14のワードライン(RWL)がGATE部23によって駆動され、RAM部14に記憶されているデータの読み出しが準備される。そして、GATE部23は、ALL0信号がLOWであることをそのまま用いて、RAM読み出しのためのセンスアンプに必要なリードイネーブル信号としてのRRENをLOWに切り替える。これにより、一致したエントリに対応するRAM部14におけるデータの読み出しが行われる。なお、この例では、RAM部14は、RRENがLOWの時にデータの読み出しが行われるものとしている。
RAM部14から読み出されたデータが次のエントリのアドレスに関する情報を示している場合、RBin/outの次のエントリの内容と比較されて検証が行われる。この時、実行しているプログラムが正常なプログラムである限り検証が失敗することはないが、例えばプログラムにバグがある場合には、検証に失敗することになる。この場合、検証に失敗したことを示す信号が出力されるようになっていてもよい。
引続きサイクル2Aでは、サイクル1Aと同様に、次のCAM部13の連想検索に備えて、CAM部13の全マッチラインが1にプリチャージされる。図中では、MATCH−prechargeがサイクル2A前半でHIGHとなっていることが示されている。
同様に、RAM部14の読み出しに備えて、RAM部14の全てのビットラインが1にプリチャージされる。図中では、RAM−BL−prechargeがサイクル2A前半でHIGHとなっていることが示されている。
また、検索データが未登録であることが判明した際の空きエントリを1つ準備するために、VALIDビットが0である全エントリの中から最も優先順位が高い空きエントリを探す動作がV=0優先検出部24にて開始される。図中では、V=0:priority−0−detectorがサイクル2A前半でHIGHとなっていることが示されている。
サイクル2A後半では、まず、次のRBin/outのエントリが書き込みデータとしてCAM部13のSD/XSDおよびRAM部14のWD/XWDに与えられる。図中では、SD/XSD/WD/XWDがサイクル2A後半でHIGHとなっていることが示されている。
また、CAM部13では、検索データが与えられることによって、各エントリが検索データと一致するかの評価、すなわち、MATCHの評価が開始されると同時に、全てのMATCHが0、すなわち、一致するエントリが全くない(ALL0?YES)ことを調査するために、ALL0信号のプリチャージが開始される。図中では、ALL0−prechargeがサイクル2A後半でHIGHとなっていることが示されている。
サイクル2Bでは、CAM部13におけるMATCHの評価結果に基づき、MATCH?NOであることが判明すると、RAM部14からの読み出し動作は行われない。すなわち、1つもマッチしない場合にはALL0信号がHIGH(ALL0?YES)となることを受けて、予めV=0優先検出部24にて探しておいた空きエントリに対応するCAM部13およびRAM部14におけるWL(CWL/RWL)がオンされ、該空きエントリに対する書き込みデータの書き込みが準備される。そして、SD/XSD/WD/XWDに用意されている書き込みデータをCAM部13およびRAM部14内のビットラインに伝えるために、ALL0信号を受けてセンスアンプのライトイネーブル信号としてのCWENおよびRWENがオンされる。これにより、書き込みデータがCAM部13およびRAM部14に書き込まれる。
次に、図15に示すタイミングチャートについて説明する。サイクル3A前半では、CAM部13における連想検索に備えて、CAM部13の全てのマッチラインが1にプリチャージされる。図中では、MATCH−prechargeがサイクル3A前半でHIGHとなっていることが示されている。
同様に、RAM部14の読み出しに備えて、RAM部14の全てのビットラインが1にプリチャージされる。図中では、RAM−BL−prechargeがサイクル3A前半でHIGHとなっていることが示されている。
サイクル3A後半では、まず、検索すべきレジスタ値などの入力データがCAM部13のSD/XSDおよびRAM部14のWD/XWDに与えられる。図中では、SD/XSD/WD/XWDがサイクル3A後半でHIGHとなっていることが示されている。
また、CAM部13では、入力データが与えられることによって、各エントリが入力データと一致するかの評価、すなわち、MATCHの評価が開始されると同時に、全てのMATCHが0、すなわち、一致するエントリが全くない(ALL0?YES)ことを調査するために、ALL0信号のプリチャージが開始される。図中では、ALL0−prechargeがサイクル3A後半でHIGHとなっていることが示されている。
サイクル3Bでは、CAM部13におけるMATCHの評価結果に基づき、MATCH?YESであることが判明した行に対応するRAM部14のワードライン(RWL)がGATE部23によって駆動され、RAM部14に記憶されているデータの読み出しが準備される。そして、GATE部23は、ALL0信号がLOWであることをそのまま用いて、RAM読み出しのためのセンスアンプに必要なリードイネーブル信号としてのRRENをLOWに切り替える。これにより、一致したエントリに対応するRAM部14におけるデータの読み出しが行われる。
ここで、RAM部14には、CAM部13に記憶されているマスクビットパターンと同様のマスクビットパターンが格納されており、このマスクビットパターンも同時に読み出される。入力データとマスクビットパターンとを組み合わせたデータは、CAM部13に記憶されているエントリの内容を読み出したものと同等となる。すなわち、CAM部13に記憶されているエントリの内容を読み出すサイクルを改めて行うことなく、該内容と同等の情報を得ることができる。
引続きサイクル4Aでは、サイクル3Aと同様に、次のCAM部13の連想検索に備えて、CAM部13の全マッチラインが1にプリチャージされる。図中では、MATCH−prechargeがサイクル4A前半でHIGHとなっていることが示されている。
同様に、RAM部14の読み出しに備えて、RAM部14の全てのビットラインが1にプリチャージされる。図中では、RAM−BL−prechargeがサイクル4A前半でHIGHとなっていることが示されている。
同時に、前回の検索の結果RAM部14から得た、次に比較すべきレジスタ等のアドレスを元に、現レジスタ等の読み出しが開始される。サイクル4A後半では、次に比較すべき現レジスタ等の内容をCAM部13のSD/XSDに入力し、未登録であればサイクル4Bにおいて全MATCHが0となるので、これを検知して検索が終了する。この場合、MP31は、再利用が不可能であるので、該当命令区間を実際に実行することになる。
(連想メモリシステムへのデータの登録処理)
次に、上記のプロセッサシステムにおいて、SBin/out33としての連想メモリシステム1に対してデータを登録する際の処理の具体例について説明する。図16(a)は、図13に示す命令区間において、strlen(”ABCDEF”)が実行された場合のRBinの具体例を示しており、図16(b)は、図16(a)に示すRBinをSBinに登録し、RBoutをSBoutに登録した状態の例を示している。
次に、上記のプロセッサシステムにおいて、SBin/out33としての連想メモリシステム1に対してデータを登録する際の処理の具体例について説明する。図16(a)は、図13に示す命令区間において、strlen(”ABCDEF”)が実行された場合のRBinの具体例を示しており、図16(b)は、図16(a)に示すRBinをSBinに登録し、RBoutをSBoutに登録した状態の例を示している。
RBinの第1レコードをSBinに登録する際には、まず初期キー(−1)を含むエントリがCAM部13における適当な空き領域(例えばエントリ番号200)に書き込まれる。
RBinの第2レコードを登録する際には、まず、第1レコードを登録したCAM部13におけるエントリ(エントリ番号200)に対応するRAM部14に第2レコードのCompareFlag、type、およびaddressの情報が書き込まれる。そして、キー(200)を含むエントリがCAM部13における次に適当な空き領域(例えばエントリ番号210)に書き込まれる。
RBinの第3レコードを登録する際には、第2レコードを登録したCAM部13におけるエントリ(エントリ番号210)に対応するRAM部14に第3レコードのCompareFlag、type、およびaddressの情報が書き込まれる。そして、キー(210)を含むエントリをCAM部13における次に適当な空き領域に書き込む。
RBinの内容が終了した場合には、最後に登録したCAM部13におけるエントリに対応するRAM部14に、終了を示すendが登録され、出力値が格納されるべきSBoutのアドレスが該エントリに記録される。そして、SBoutにRBoutの内容が格納される。
図16(b)となっている状態で、MP31が、文字列”ABCDEF”を”ABCDEFG”に変更する処理を行ったとする。この場合、RBinの登録時には主記憶アドレス”00010010”の一致比較を行う必要はない状態であったが、該アドレスの値が変更されることによって、該アドレスの一致比較を行う必要が生じることになる。この場合、図17(a)に示すようにSBinが変更される。
まず、内容が変更された主記憶アドレスである”00010010”をキーにして、SBin(RAM)におけるAddr.の列に対して検索がかけられる。これによって、エントリ番号210のラインが選択される。そして、該ラインのキーとなっているエントリ番号200のラインが認識される。そして、エントリ番号200のラインにおいて、次に比較すべき主記憶アドレスよりも優先して比較すべき主記憶アドレスを示すAlt.keyに、内容が変更された主記憶アドレスである”00010010”が書き込まれる。
以上のようにSBinの更新が行われることによって、次に比較すべき主記憶アドレスよりも優先して比較すべき主記憶アドレスを示すAlt.keyが設けられることにより、主記憶アドレス”00010000”の内容とキー200による検索をスキップして、主記憶アドレス”00010010”の内容とキー210による検索が可能となる。したがって、検索動作の処理ステップを低減することができるので、処理の高速化を図ることができる。
図17(a)に示す状態から、MP31がStrlen(”ABCDEFG”)を実行し、RBin/outが生成された状態を図17(b)に示す。このRBin/outがSBin/out33に登録されると、図17(c)に示す状態となる。
図17(c)に示す状態における検索動作は次のように行われる。まず,初期キー(−1)と関数先頭アドレス(strlen)と引数(0001000C)とを用いてSBinのCAM部13を連想検索してエントリ(200)が検出される。そして、該エントリに対応するRAM部14から次に参照すべき主記憶アドレス”00010010”と次の検索に使用するキー(210)が検出される。主記憶アドレスを参照した結果が”454600XX”であれば、図中丸4で示されるエントリに一致し、”45464700”であれば図中丸5で示されるエントリに一致し、それぞれ対応するSBoutの値が出力される。
(連想メモリシステムをサブブロックに分割する構成例)
上記した図16(b)、図17(a)、および図17(c)に示した連想メモリシステムの登録処理の場合、検索対象となる登録入力データは、複数(N個)の部分(レコード)に分割されてSBinに登録されることになる。この場合、検索時には、登録入力データの先頭から順次一致が検証され、一致しないことが判明した時点で検索が終了する。
上記した図16(b)、図17(a)、および図17(c)に示した連想メモリシステムの登録処理の場合、検索対象となる登録入力データは、複数(N個)の部分(レコード)に分割されてSBinに登録されることになる。この場合、検索時には、登録入力データの先頭から順次一致が検証され、一致しないことが判明した時点で検索が終了する。
すなわち、上記の構成は、深さをD行(エントリの数をD個)、幅をWビットとする連想メモリシステムを構成する場合に、深さを同じくD行、かつ、幅をW/Nビットとする副連想メモリをNブロック分設けた構成とすることと等価となる。この場合、先頭から順次プリチャージするマッチラインを絞り込みつつN回の連想検索を繰り返すことにより、マッチラインのプリチャージおよびディスチャージに伴う消費電力を抑えつつ、最終的にD行×Wビットの連想検索結果を出力することができる。
しかしながら、この構成の場合、Wビットの連想検索に必要な時間がN倍に増加するので、消費電力は抑えられるものの、処理速度を大幅に犠牲にしていることになる。
これに対して、連想メモリシステムを深さ方向に複数個(M個)のサブブロックに分割し、登録または検索するデータの一部を用いてサブブロックを特定し、該サブブロック内で検索を行うようにする構成が考えられる。この構成の場合、同時にプリチャージすべきマッチライン数を1/Mに削減されることになる。よって、消費電力を抑えつつ、処理速度の低下も抑えることが可能となる。
図18は、図2に示す連想メモリシステム1を、深さ方向に4つのサブブロックに分割した構成を示している。このように構成した場合における、SBin/out33としての連想メモリシステム1に対してデータを登録する際の処理の具体例について以下に説明する。
まず、図16(a)に示すRBinをSBinに登録し、RBoutをSBoutに登録する処理について説明する。RBinの第1レコードをSBinに登録する際には、まず初期キー(−1)を含むエントリが、CAM部13における特定のサブブロックにおける空きエントリ(例えばサブブロック1−エントリ001)に書き込まれる。このサブブロックは、例えば該当命令区間の先頭アドレス(strlen)の一部に基づいて特定される。すなわち、例えば、先頭アドレスの一部の情報と、それに対応するサブブロックの情報とを示したサブブロック特定テーブルが連想メモリシステム1に記憶され、このサブブロック特定テーブルに従って、空検出回路12が、特定されるサブブロックの中から空きエントリを検出し、該空きエントリに対して登録が行われるようにすればよい。
RBinの第2レコードを登録する際には、まず、第1レコードを登録したCAM部13におけるエントリ(サブブロック1−エントリ001)に対応するRAM部14に第2レコードのCompareFlag、type、およびaddressの情報が書き込まれる。そして、キー(サブブロック1−エントリ001)を含むエントリが、別のサブブロック、例えば次のサブブロック(例えばサブブロック2)における空きエントリ(例えばサブブロック2−エントリ005)に書き込まれる。
RBinの第3レコードを登録する際には、第2レコードを登録したCAM部13におけるエントリ(サブブロック2−エントリ005)に対応するRAM部14に第3レコードのCompareFlag、type、およびaddressの情報が書き込まれる。そして、キー(サブブロック2−エントリ005)を含むエントリが、別のサブブロック、例えばさらに次のサブブロック(例えばサブブロック3)における空きエントリに書き込まれる。
以上の処理が行われた場合、図16(b)に示すSBin/out33において、第1行目がサブブロック1のエントリ001の行に格納され、第2行目がサブブロック2のエントリ005の行に格納され、第3行目がサブブロック3の行に格納された状態となる。
また、上記の状態から、MP31が、文字列”ABCDEF”を”ABCDEFG”に変更する処理を行った場合、図17(a)に示すSBin/out33において、第1行目がサブブロック1のエントリ001の行に格納され、第2行目がサブブロック2のエントリ005の行に格納され、第3行目がサブブロック3の行に格納された状態となる。
さらに、上記の状態から、MP31がStrlen(”ABCDEFG”)を実行し、図17(b)に示すRBin/outが生成され、このRBin/outがSBin/out33に登録された場合、図17(c)に示すSBin/out33において、第1行目がサブブロック1のエントリ001の行に格納され、第2行目がサブブロック2のエントリ005の行に格納され、第3行目がサブブロック3の行に格納された状態となる。
この状態における検索動作は次のように行われる。まず、関数先頭アドレス(strlen)の一部から特定されたサブブロック(サブブロック1)において、初期キー(−1)と、関数先頭アドレス(strlen)と、引数(0001000C)とを用いて、SBinのCAM部13を連想検索してエントリ(サブブロック1−エントリ001)が検出される。そして、該エントリに対応するRAM部14から次に参照すべき主記憶アドレス”00010010”と次の検索に使用するキー(サブブロック2−エントリ005)が検出される。次に、キーが含むブロック番号2に1を加えたブロック番号3のサブブロックに対して、該主記憶アドレスの内容およびキーと一致するエントリが検索される。ここで、主記憶アドレスを参照した結果が”454600XX”であれば、図中丸4で示されるエントリに一致し、”45464700”であれば、図中丸5で示されるエントリに一致し、それぞれ対応するSBoutの値が出力される。
以上のように、連想メモリシステム1を複数のサブブロックに分割しない場合には、連想メモリシステム1の全ての行に対する検索が必要であるのに対し、複数のサブブロックに分割する場合には、分割数に応じて検索範囲を大幅に縮小することができる。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
本発明に係る連想メモリシステムは、CAMおよびRAMによって構成される種々の連想メモリシステムに適用可能である。このような連想メモリシステムは、例えば並列データプロセッサ、通信ネットワークに設けられるルータにおけるパケットフィルタリングシステムなどにおいて利用可能である。
また、本発明に係るデータ処理装置は、SPARC(Scalable Processor ARChitecture)プロセッサに適用することが可能である。また、SPARCプロセッサと同様に、32本以上の汎用レジスタを有する多くのRISCプロセッサにも適用することが可能である。また、このようなプロセッサを備えたゲーム機器、携帯型電話機、および情報家電などに適用することができる。
1 連想メモリシステム
11 Vビット記憶部(空きエントリ記憶部)
12 空検出回路(空きエントリ選択部)
13 CAM部(第1のメモリ)
14 RAM部(第2のメモリ)
22 Vビット検索部
23 GATE部(書き込み制御部)
24 V=0優先検出部
25 Vビット読み出し部
30 データ処理装置
31 MP
32A 第1SP
32B 第2SP
33 SBin/out
34 RegionTable
35 予測処理部
11 Vビット記憶部(空きエントリ記憶部)
12 空検出回路(空きエントリ選択部)
13 CAM部(第1のメモリ)
14 RAM部(第2のメモリ)
22 Vビット検索部
23 GATE部(書き込み制御部)
24 V=0優先検出部
25 Vビット読み出し部
30 データ処理装置
31 MP
32A 第1SP
32B 第2SP
33 SBin/out
34 RegionTable
35 予測処理部
Claims (9)
- 複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第1のメモリと、
上記第1のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第1のメモリにおいて選択されたエントリに対応するデータを出力する第2のメモリとを備える連想メモリシステムであって、
上記第1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶部と、
上記空きエントリ記憶部に記憶されている情報に基づいて、上記第1のメモリに空きエントリがある場合に、1つの空きエントリを選択する空きエントリ選択部と、
上記第1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対して、該書き込みデータを書き込む書き込み制御部とを備えることを特徴とする連想メモリシステム。 - 上記書き込み制御部が、上記第1のメモリに対する書き込みデータが入力された場合に、該書き込みデータが上記第1のメモリに既に記憶されているか否かを判定し、記憶されていない場合に該書き込みデータを上記選択されたエントリに書き込む一方、既に記憶されている場合には、該書き込みデータの書き込みを行わないことを特徴とする請求項1記載の連想メモリシステム。
- 上記第1のメモリが、記憶すべきデータをビット単位で格納するメモリセルを複数備えているとともに、上記メモリセルが、上記書き込みデータに含まれるビットを当該メモリセルに入力するビットラインと、検索データに含まれるビットを当該メモリセルに入力するビットラインとを兼用したビットラインを備えており、
上記書き込み制御部が、上記第1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択部によって選択されたエントリに対応するワードラインを駆動することにより、上記ビットラインにセットされたビットが、選択されたエントリに対応するメモリセルに書き込まれることを特徴とする請求項2記載の連想メモリシステム。 - 上記第1のメモリが、記憶すべきデータをビット単位で格納するデータ領域と、該データ領域に記憶されている各ビットの有効/無効を示すマスクビットを格納するマスクビット領域とを備えているとともに、
上記第2のメモリが、上記第1のメモリに記憶されている複数のエントリのそれぞれに対応したマスクビットをさらに記憶しており、
上記第1のメモリにおいて、検索データとしての入力データに一致するエントリが選択された場合に、上記第2のメモリに記憶されている、選択されたエントリに対応するマスクビットと、該入力データとが出力されることを特徴とする請求項1記載の連想メモリシステム。 - 上記第1のメモリが、複数のサブブロックに分割されており、
上記空きエントリ選択部が、上記第1のメモリに対する書き込みデータが入力された場合に、該書き込みデータの少なくとも一部に基づいて決定されるサブブロックの中から空きエントリを選択するとともに、
検索データが入力された際には、該検索データの少なくとも一部に基づいて決定されるサブブロックに対して検索動作が行われることを特徴とする請求項1記載の連想メモリシステム。 - 上記第1のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合、直前の書き込みデータが登録されたサブブロックとは異なるサブブロックに、該書き込みデータが登録されることを特徴とする請求項5記載の連想メモリシステム。
- 上記第1のメモリに対して書き込みデータが登録された後に、該書き込みデータに連続する書き込みデータをさらに登録する場合として、上記第1のメモリに対して書き込みデータが登録されたエントリに対応して上記第2のメモリに登録されるデータが、次に登録を行うべき上記第1のメモリのサブブロックおよびエントリの情報であることを特徴とする請求項6記載の連想メモリシステム。
- 複数のデータを複数のエントリとして記憶するとともに、入力データが入力されると、記憶されているエントリのうち、該入力データに一致するエントリが選択される第1のメモリと、
上記第1のメモリに記憶されている複数のエントリのそれぞれに対応してデータを記憶し、上記第1のメモリにおいて選択されたエントリに対応するデータを出力する第2のメモリとを備える連想メモリシステムの制御方法であって、
上記第1のメモリにおける各エントリが空き状態であるか否かを示す空きエントリ情報を記憶する空きエントリ記憶ステップと、
上記空きエントリ記憶ステップにおいて記憶された情報に基づいて、上記第1のメモリに空きエントリがある場合に、1つの空きエントリを選択する空きエントリ選択ステップと、
上記第1のメモリに対する書き込みデータが入力された場合に、上記空きエントリ選択ステップにおいて選択されたエントリに対して、該書き込みデータを書き込む書き込み制御ステップとを有することを特徴とする連想メモリシステムの制御方法。 - 主記憶手段から命令区間を読み出し、演算処理を行った結果を主記憶手段に書き込む処理を行うデータ処理装置において、
上記主記憶手段から読み出した命令区間に基づく演算を行う第1の演算手段と、上記第1の演算手段による上記主記憶手段に対する読み出しおよび書き込み時に用いられるレジスタと、上記第1の演算手段によって命令区間の演算が行われたときの入力パターンおよび出力パターンからなる入出力グループを生成する入出力生成手段と、上記入出力生成手段によって生成された入出力グループを記憶する命令区間記憶手段とを備え、
上記第1の演算手段が、命令区間を実行する際に、該命令区間の入力パターンと、上記命令区間記憶手段に記憶されている入力パターンとが一致した場合、該入力パターンと対応して上記命令区間記憶手段に記憶されている出力パターンをレジスタおよび/または主記憶手段に出力する再利用処理を行い、
上記命令区間記憶手段が、請求項1〜7のいずれか一項に記載の連想メモリシステムによって構成されることを特徴とするデータ処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005234806A JP2007048411A (ja) | 2005-08-12 | 2005-08-12 | 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 |
PCT/JP2006/312900 WO2007020751A1 (ja) | 2005-08-12 | 2006-06-28 | 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 |
TW095125304A TW200710850A (en) | 2005-08-12 | 2006-07-11 | Associative memory system, method of controlling associative memory system, and data processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005234806A JP2007048411A (ja) | 2005-08-12 | 2005-08-12 | 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007048411A true JP2007048411A (ja) | 2007-02-22 |
Family
ID=37757420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005234806A Pending JP2007048411A (ja) | 2005-08-12 | 2005-08-12 | 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP2007048411A (ja) |
TW (1) | TW200710850A (ja) |
WO (1) | WO2007020751A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009026437A (ja) * | 2007-06-21 | 2009-02-05 | Nippon Telegr & Teleph Corp <Ntt> | 連想メモリ装置におけるドントケア格納、検索方法 |
Citations (3)
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 | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
-
2005
- 2005-08-12 JP JP2005234806A patent/JP2007048411A/ja active Pending
-
2006
- 2006-06-28 WO PCT/JP2006/312900 patent/WO2007020751A1/ja active Application Filing
- 2006-07-11 TW TW095125304A patent/TW200710850A/zh unknown
Patent Citations (3)
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 | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009026437A (ja) * | 2007-06-21 | 2009-02-05 | Nippon Telegr & Teleph Corp <Ntt> | 連想メモリ装置におけるドントケア格納、検索方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2007020751A1 (ja) | 2007-02-22 |
TW200710850A (en) | 2007-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004157593A (ja) | 多ポート統合キャッシュ | |
JP5440067B2 (ja) | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 | |
KR100955433B1 (ko) | 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법 | |
KR102554799B1 (ko) | 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행 | |
US11308171B2 (en) | Apparatus and method for searching linked lists | |
KR20160065144A (ko) | 데이터 처리장치 및 추론적 벡터 액세스 연산의 수행방법 | |
KR950006590B1 (ko) | 캐시 메모리를 갖는 마이크로 프로세서 | |
JP3798998B2 (ja) | 分岐予測装置および分岐予測方法 | |
JP7070384B2 (ja) | 演算処理装置、メモリ装置、及び演算処理装置の制御方法 | |
JP2007048411A (ja) | 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 | |
US20020138236A1 (en) | Processor having execution result prediction function for instruction | |
JP3906363B2 (ja) | クラスタ化スーパスカラプロセッサ及びクラスタ化スーパスカラプロセッサにおけるクラスタ間の通信制御方法 | |
JP4254954B2 (ja) | データ処理装置 | |
JP3577049B2 (ja) | 分岐予測回路 | |
KR960015231A (ko) | 향상된 어드레스 지정 방법 및 시스템 | |
KR100517765B1 (ko) | 캐시 메모리 및 그 제어 방법 | |
TWI740860B (zh) | 基於截斷的確定性有限自動機利用硬體過濾器施行複雜正規表示法樣式匹配的方法與設備 | |
JP5206385B2 (ja) | バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム | |
JP2009199384A (ja) | データ処理装置 | |
JP4159586B2 (ja) | 情報処理装置および情報処理の高速化方法 | |
JP3895314B2 (ja) | データ処理装置、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体 | |
CN116661872A (zh) | 支持同时预测连续跳转的两条非条件分支指令的预测方法及装置 | |
JP2005535045A (ja) | Vliw命令を処理するためのプロセッサおよび方法 | |
JPH09114733A (ja) | キャッシュ記憶装置における非整列データ転送機構 | |
JP2001014162A (ja) | 分岐予測方法およびデータ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080717 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110628 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111025 |