データ記憶装置
【課題】メモリ管理アルゴリズムに基づいてエントリデータの並べ替えを行う場合でも少ないメモリ消費量で動作し、処理速度の低下を抑制できるデータ記憶装置を提供する。
【解決手段】データ記憶装置11は、エントリデータを保持する複数のデータ記憶領域を有するエントリ保持回路12を備える。各データ記憶領域は、エントリデータを有効にする有効値またはエントリデータを無効にする無効値を持つ有効フラグを格納する有効フラグ領域と、実体データを格納するデータ領域とを有する。エントリ制御回路13は、エントリデータの書き込みが実行されない間に、空き領域の順位よりも上位のデータ記憶領域に保持されているエントリデータを下位のデータ記憶領域にシフトさせ、最上位のデータ記憶領域に無効値を持つ有効フラグを書き込む。
【解決手段】データ記憶装置11は、エントリデータを保持する複数のデータ記憶領域を有するエントリ保持回路12を備える。各データ記憶領域は、エントリデータを有効にする有効値またはエントリデータを無効にする無効値を持つ有効フラグを格納する有効フラグ領域と、実体データを格納するデータ領域とを有する。エントリ制御回路13は、エントリデータの書き込みが実行されない間に、空き領域の順位よりも上位のデータ記憶領域に保持されているエントリデータを下位のデータ記憶領域にシフトさせ、最上位のデータ記憶領域に無効値を持つ有効フラグを書き込む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置に対するデータの保存や読み出しを行う技術に関し、特に、LRU(Least Recently Used)アルゴリズムなどのメモリ管理アルゴリズムに基づいて記憶装置に対するデータの保存や読み出しを行う技術に関する。
【背景技術】
【0002】
従来から、ハードディスクドライブ(HDD)やキャッシュメモリや仮想メモリなどの記憶装置に対するデータの保存や読み出しを制御する手段として、記憶装置に保存されるデータまたはその記憶領域に優先順位を付与するメモリ管理アルゴリズムが広く使用されている。メモリ管理アルゴリズムを使用すれば、記憶装置に保存されているデータのうち最も優先順位の低いデータを選択し、これを必要に応じて記憶装置から削除する(追い出す)ことにより、記憶装置の限られた記憶領域内にできるだけ有意なデータを保存する領域を確保することができる。この種のメモリ管理アルゴリズムとしては、たとえば、時間的な局所性原理(Locality Principle)に基づくLRUアルゴリズムやLFU(Least Frequently Used)アルゴリズムが広く知られている。LRUアルゴリズムは、最も長い間参照されていないデータを、近い将来参照される可能性が最も低いものとして選択するアルゴリズムであり、LFUアルゴリズムは、最も参照頻度が低いデータを、近い将来参照される可能性が最も低いものとして選択するアルゴリズムである。
【0003】
LRUアルゴリズムに関する先行技術文献としては、たとえば、特開平9−288617号公報(特許文献1)及び特許第4369524号明細書(特許文献2)が挙げられる。特許文献1に開示されているLRU制御方式は、検索対象データをテーブルから検索する手段と、この検索対象データがテーブル内に存在したときは、検索対象データをテーブルの先頭に位置するように並び替える手段とを有するものである。一方、特許文献2に開示されているLRU制御装置は、複数のエントリをそれぞれ識別するための複数の識別情報(たとえば、エントリごとに一意に付与されたID)からなるLRU情報を記憶する記憶手段と、これら複数のエントリの中のいずれかのエントリが使用された場合に、LRU情報の中から使用されたエントリの識別情報を取り出すとともに最後尾に移動させてLRU情報を更新する手段とを備えている。LRU情報を構成する複数の識別情報は、エントリの最終使用時の古い順に書き込まれる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平9−288617号公報
【特許文献2】特許第4369524号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
メモリ管理アルゴリズムの1つとして並べ替え方式と呼ばれるものがある。並べ替え方式は、エントリの登録や削除や更新ごとに、データ記憶領域においてエントリデータを優先順位に従って並べ替える方式である。特許文献1に開示されているLRU制御方式は、並べ替え方式の一種である。しかしながら、並べ替え方式には、エントリデータを並べ替えている間は、エントリデータを格納するデータ記憶領域にアクセスすることができない期間が発生し、これが処理速度の低下を招くという問題がある。
【0006】
特許文献2に開示されているLRU制御装置は、エントリデータを格納するデータ記憶領域とは別の記憶領域にLRU情報を構築し、エントリの登録や削除や更新ごとに、LRU情報内の複数の識別情報を最終使用時が古い順に並べ替えて記憶することでLRU情報を更新する。このため、LRU制御により識別情報が並べ替えられている最中であっても、データ記憶領域にアクセスしてエントリデータを読み出すことができる。しかしながら、LRU制御のために別の記憶領域を確保する必要があるのでメモリ消費量が多くなる。また、LRU制御の対象となるエントリ数が増えると、LRU制御を実現するために必要なビット数が増大するという問題もある。
【0007】
上記に鑑みて本発明の目的は、メモリ管理アルゴリズムに基づいてエントリデータの並べ替えを行う場合でも少ないメモリ消費量で動作し、処理速度の低下を抑制することができるデータ記憶装置を提供することである。
【課題を解決するための手段】
【0008】
本発明によるデータ記憶装置は、所定のメモリ管理アルゴリズムに基づく優先順位を有する複数のエントリデータをそれぞれ保持し、該複数のエントリデータの優先順位に対応する順位がそれぞれ割り当てられた複数のデータ記憶領域を有するエントリ保持回路と、外部装置からのアクセス要求に応じて、前記複数のデータ記憶領域に対して前記エントリデータの読み出し及び書き込みを実行するエントリ制御回路と、を備え、前記各データ記憶領域は、当該各データ記憶領域に保持されるエントリデータを有効にする有効値及び当該各データ記憶領域に保持されるエントリデータを無効にする無効値のうちのいずれか一方の値を持つ有効フラグを格納する有効フラグ領域と、実体データを格納するデータ領域と、を有し、前記エントリ制御回路は、前記複数のデータ記憶領域の中から前記無効値を持つ有効フラグを保持する無効化データ領域を空き領域として検出する領域検出部と、前記複数のデータ記憶領域に対して前記エントリデータの書き込みが実行されない間に、前記複数のデータ記憶領域のうち前記無効化データ領域の順位よりも上位のデータ記憶領域に保持されているエントリデータを、前記上位のデータ記憶領域よりも下位の当該データ記憶領域にシフトさせるシフト操作を行うとともに、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記無効値を持つ有効フラグを書き込むメモリ制御部と、を含むことを特徴とする。
【発明の効果】
【0009】
本発明によれば、有効フラグと実体データとを含むエントリデータがデータ記憶領域に保持される。データ記憶領域に対するエントリデータの書き込みが実行されない間に、有効フラグを使用したシフト操作によりエントリデータの並び替えを効率的に行うことができる。
【図面の簡単な説明】
【0010】
【図1】本発明に係る実施の形態1のデータ処理システムの概略構成を示す機能ブロック図である。
【図2】実施の形態1のデータ記憶装置のエントリ保持回路内のデータ記憶領域の構成を示す図である。
【図3】実施の形態1のデータ記憶装置のエントリ制御回路の構成の一例を示す機能ブロック図である。
【図4】実施の形態1のエントリ保持回路の好適な構成を示す図である。
【図5】実施の形態1に係るエントリ並べ替え処理の手順を概略的に示すフローチャートである。
【図6】図5のエントリ並べ替え処理が実行されたときのデータ記憶領域の状態遷移の様子を示す図である。
【図7】実施の形態1に係るエントリ削除処理の手順を概略的に示すフローチャートである。
【図8】実施の形態1に係るエントリ登録処理の手順の一例を概略的に示すフローチャートである。
【図9】実施の形態1に係るエントリ登録処理の手順の他の例を概略的に示すフローチャートである。
【図10】本発明に係る実施の形態2のデータ記憶領域の構成を示す図である。
【図11】実施の形態2に係るエントリ削除処理の手順を概略的に示すフローチャートである。
【図12】実施の形態2に係るエントリ登録処理の手順を概略的に示すフローチャートである。
【図13】図12のエントリ検索処理(ステップS326)の手順を示すフローチャートである。
【図14】本発明に係る実施の形態3のデータ記憶領域の構成を示す図である。
【図15】実施の形態3に係る制御処理の一例を概略的に示すフローチャートである。
【図16】本発明に係る実施の形態4に係るエントリ更新処理の手順を概略的に示すフローチャートである。
【図17】実施の形態4に係るエントリ更新処理が実行されたときのデータ記憶領域の状態遷移の様子を示す図である。
【図18】実施の形態1〜4の変形例のデータ記憶領域の構成を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明に係る種々の実施の形態について図面を参照しつつ説明する。
【0012】
実施の形態1.
図1は、本発明に係る実施の形態1のデータ処理システム1の概略構成を示す機能ブロック図である。このデータ処理システム1は、データ処理を実行する入出力装置14と、そのデータ処理の際に参照される実体データを含むエントリデータを一時的に記憶するデータ記憶装置11とを備える。入出力装置14としては、たとえば、通信ネットワークにおいて通信データを処理する通信装置(中継装置や集線装置など)が挙げられるが、これらに限定されるものではない。データ処理にメモリを必要とする装置であれば、任意の装置にデータ記憶装置11を適用することが可能である。
【0013】
データ記憶装置11は、複数のエントリデータを記憶する複数のデータ記憶領域を有するエントリ保持回路12と、LRUアルゴリズムなどのメモリ管理アルゴリズムに基づいてエントリ保持回路12に対するエントリデータの書き込み及び読み出しを制御するエントリ制御回路13とを含む。エントリ制御回路13は、メモリ管理アルゴリズムに基づいて複数のエントリデータのうち優先順位の最も低いエントリデータを選択し、選択されたエントリデータを無効化することによりエントリ保持回路12内に空き領域を確保する機能を有する。
【0014】
図2(A),(B),(C)は、エントリ保持回路12内のn個のデータ記憶領域M0,M1,M2,…,Mn−3,Mn−2,Mn−1(nは正整数)を模式的に示す図である。ここで、nは、エントリ保持回路12に確保可能な最大エントリ数を示す整数値である。図2(A)には6個以上のデータ記憶領域M0〜Mn−1が示されているが、少なくとも2個のデータ記憶領域が確保されていればよい。データ記憶領域M0〜Mn−1はそれぞれエントリデータを保持するための記憶容量を有する。また、データ記憶領域M0,M1,…,Mn−1には、エントリデータの優先順位に対応する順位(以下、アクセス順位と呼ぶ。)がそれぞれ割り当てられている。エントリ制御回路13においては、データ記憶領域M0,M1,…,Mn−1に対してそれぞれのアクセス順位に対応する識別子#(0),#(1),…,#(n−3),#(n−2),#(n−1)が設定されている。エントリ制御回路13は、これら識別子#(0)〜#(n−1)に基づいて、データ記憶領域M0〜Mn−1に保持されているエントリデータにアクセスすることができる。
【0015】
図2(A)に示されるように、識別子#(n−1)を有するデータ記憶領域Mn−1のアクセス順位が最上位であり、この最上位のデータ記憶領域Mn−1に優先順位の最も高いエントリデータが格納される。LRUアルゴリズムが採用される場合には、最後に参照された時からの経過時間が短いほどエントリデータの優先順位は高くなる。また、識別子#(0)を有するデータ記憶領域M0のアクセス順位が最下位であり、この最下位のデータ記憶領域M0に優先順位の最も低いエントリデータが格納される。後述するように、エントリ保持回路12にエントリデータが登録されるとき、このエントリデータは、最初に最上位のデータ記憶領域Mn−1に記憶される。その後、エントリデータは、他のエントリデータの登録や更新や削除のたびに、上位のデータ記憶領域Mi(iは1〜n−1のいずれかの整数)から1つ下位のデータ記憶領域Mi−1にシフトさせられる。
【0016】
図2(B)は、識別子#(i)のデータ記憶領域Miの構成の一例を示す概略図である。図2(B)に示されるように、各データ記憶領域Miは、データ処理の際に参照される実体データ(エントリデータ本体)を格納するデータ領域21と、データ記憶領域Miに保持されるエントリデータの有効性を示す制御フラグの一種である有効フラグを格納するフラグ領域22とを有する。有効フラグは、エントリデータを有効にする有効値(たとえば「1」の値)及びエントリデータを無効にする無効値(たとえば「0」の値)のうちのいずれか一方の値を有する。以下、無効値を持つ有効フラグを「無効フラグ」と呼ぶこととする。また、エントリ制御回路13は、フラグ領域22に無効フラグを保持するデータ記憶領域Miをエントリの欠けた空き領域であると判断する。エントリ制御回路13は、データ記憶領域Miのフラグ領域22に無効フラグを書き込むことによりデータ記憶領域Miにおけるエントリを無効化して空き領域をつくることができる。
【0017】
本実施の形態では、データ領域21には、単一の実体データが格納されるが、これに限定されるものではない。データ領域21は、構築すべきシステムに応じて、図2(C)に示されるように互いに関連する複数の実体データをそれぞれ格納する領域21A,21B,…に機能的に分割されていてもよい。これにより、エントリ保持回路12を検索テーブルとして利用することができる。たとえば、入出力装置14がLAN(Local Area Network)に接続された集線装置の場合には、データ領域21内の2つの領域21A,21Bにアドレス検索テーブルの実体データを格納することができる。具体的には、データ領域21内の2つの領域21A,21Bに、データ送信元のMAC(Media Access Control)アドレスと通信ポート番号という2つの実体データを格納すれば、エントリ保持回路12を、MACアドレステーブルを保持するアドレス検索回路として利用できる。エントリ制御回路13は、入出力装置14からの問い合わせ要求に応じて、MACアドレスに対応する通信ポート番号をエントリ保持回路12から取得しこれを検索結果として返すことができる。
【0018】
また、本実施の形態では、フラグ領域22に単一の制御フラグ(有効フラグ)が格納されるが、これに限定されるものではない。図2(C)に示されるように、フラグ領域22が複数の制御フラグを格納する領域22A,22B,…を有していてもよい。後述するように実施の形態2,3では、フラグ領域22に2種類の制御フラグが格納される。
【0019】
図3は、エントリ制御回路13の構成の一例を示す機能ブロック図であり、図4は、エントリ保持回路12の好適な構成を示す図である。図3に示されるように、エントリ制御回路13は、入出力装置14との間でデータの送受信を行う送受信部131と、エントリ保持回路12内の全てのデータ記憶領域M0〜Mn−1から並列に出力されたエントリデータ群31を受信するエントリデータ受信部132と、エントリ更新制御部133とを含む。エントリデータ受信部132は、エントリ保持回路12から受信したエントリデータ群31を送受信部131とエントリ更新制御部133とに供給する。エントリ更新制御部133は、処理サイクルごとに、エントリデータ受信部132から供給されるエントリデータ群31に基づいてエントリ保持回路12の状態を把握し、エントリ保持回路12の動作状態を制御することができる。ここで、1処理サイクルは、1クロックサイクルまたは所定数のクロックサイクルからなる。エントリ更新制御部133は、データ検索部133A、領域検出部133B及びメモリ制御部133Cを含む。
【0020】
また、エントリ更新制御部133は、制御データ群32をエントリ保持回路12に供給している。エントリ保持回路12は、処理サイクルごとに、エントリ更新制御部133から供給された制御データ群32に従って動作する。
【0021】
送受信部131は、入出力装置14からアクセス要求RQを受信し解析する機能を有する。送受信部131は、アクセス要求RQの解析結果をエントリ更新制御部133に出力する。エントリ更新制御部133は、その解析結果に応じた処理を実行し、その処理結果RSを送受信部131を介して入出力装置14に返す。アクセス要求RQとしては、たとえば、エントリ登録指示、エントリ削除指示、有効エントリ数の通知指示、データ検索要求及びデータ読み出し指示が挙げられる。これらアクセス要求RQのうち、データ検索要求、データ読み出し指示及び有効エントリ数の通知指示は、データ記憶領域M0〜Mn−1におけるエントリの変更を伴わないものである。
【0022】
データ読み出し指示を含むアクセス要求RQを受信したとき、送受信部131は、エントリデータ受信部132から供給されるエントリデータ群31から全ての実体データを抽出し、これら実体データを入出力装置14に送信する機能を有する。
【0023】
送受信部131が検索キーデータ付きのデータ検索要求を含むアクセス要求RQを受信したときは、データ検索部133Aは、データ検索要求に応じて、エントリデータ受信部132から供給されるエントリデータ群31のうち有効値を持つ有効フラグを含むエントリデータの中から検索キーデータと一致する実体データを検索し、その検索結果を送受信部131を介して入出力装置14に返す。たとえば、エントリ保持回路12が上記MACアドレステーブルを保持する場合、データ検索部133Aは、MACアドレスを検索キーデータとして使用し、対応する通信ポート番号を検索結果として返すことができる。
【0024】
有効エントリ数の通知指示を含むアクセス要求RQが受信されたときは、データ検索部133Aは、通知指示に応じて、エントリデータ受信部132から供給されるエントリデータ群31のうち有効値を持つ有効フラグを含むエントリデータを計数し、その計数結果、すなわちエントリ保持回路12における有効なエントリの数を送受信部131を介して入出力装置14に通知する。
【0025】
エントリ登録指示やエントリ削除指示といったエントリの変更を伴う指示(以下、エントリ操作指示と呼ぶ。)を含むアクセス要求RQを送受信部131が受信されたときは、メモリ制御部133Cがそのエントリ操作指示に応じた処理を実行するエントリ操作機能を有する。
【0026】
エントリ登録指示を含むアクセス要求RQが受信されたとき、メモリ制御部133Cは、エントリ登録指示に応じて、最上位のデータ記憶領域Mn−1に無効フラグが保持されているか否かを判定する。領域検出部133Bは、エントリデータ受信部132から供給されるエントリデータ群31に基づいて、データ記憶領域M0〜Mn−1の中から無効フラグを有する空き領域Me(eは1〜n−1の整数)を検出し、その検出結果をメモリ制御部133Cに与える機能を有する。メモリ制御部133Cは、領域検出部133Bによる検出結果から最上位のデータ記憶領域Mn−1に無効フラグが保持されているか否かを判定することができる。
【0027】
データ記憶領域Mn−1が無効フラグを保持する空き領域であると判定した場合、メモリ制御部133Cは、有効値を持つ有効フラグと登録すべき実体データとを含むエントリデータを空き領域Mn−1に書き込む。これによりエントリの登録が完了する。一方、データ記憶領域Mn−1に無効フラグが保持されていない場合、言い換えれば、データ記憶領域Mn−1が有効値を持つ有効フラグを含むエントリデータを保持する場合は、メモリ制御部133Cは、先ず、最下位のデータ記憶領域M0に無効フラグを書き込む。その後、後述するシフト操作の実行によりデータ記憶領域M1〜Mn−1のエントリデータはそれぞれ1つ下位のデータ記憶領域M0〜Mn−2にシフトされるので、このシフト操作の実行後、メモリ制御部133Cは、有効値を持つ有効フラグと登録すべき実体データとを含むエントリデータを最上位のデータ記憶領域Mn−1に書き込む。これによりエントリの登録が完了する。
【0028】
エントリ削除指示を含むアクセス要求RQが受信されたときは、データ検索部133Aが、このエントリ削除指示に応じて、エントリデータ受信部132から供給されるエントリデータ群31のうち有効値を持つ有効フラグを含むエントリデータの中から特定データと一致する削除すべき実体データを検索する。データ検索部133Aは、実体データを探し出すことができなかったときは、その検索結果を送受信部131を介して入出力装置14に通知する。一方、実体データが探し出されたときは、メモリ制御部133Cが、その一致する実体データを保持するデータ記憶領域Md(dは0〜n−1の整数)に無効フラグを書き込むことでデータ記憶領域Mdのエントリを無効化する。そして、メモリ制御部133Cは、その結果を送受信部131を介して入出力装置14に通知する。この空き領域Mdには、後述するシフト操作により1つ上位のデータ記憶領域Md+1に保持されているエントリデータがシフトさせられる。
【0029】
全てのエントリの削除指示(一斉削除指示)を含むアクセス要求RQが受信されたときは、メモリ制御部133Cは、1処理サイクル内に、データ記憶領域M0〜Mn−1の全てに無効フラグを書き込むことで全てのエントリを無効化し、一斉削除が完了した旨を送受信部131を介して入出力装置14に通知する。
【0030】
また、メモリ制御部133Cは、データ記憶領域M0〜Mn−1において有効値を持つ有効フラグを含むエントリデータを並び替えて(再配置して)有効なエントリを連続的に詰めて配置するエントリ並べ替え機能(エントリ再配置機能)を有する。具体的には、データ記憶領域M0〜Mn−1に対してエントリデータの書き込みが実行されない処理サイクル期間内に、メモリ制御部133Cは、空き領域Mdの順位よりも上位のデータ記憶領域Md+1〜Mn−1に保持されているエントリデータを、1つ下位のデータ記憶領域Md〜Mn−2にシフトさせるシフト操作を実行し、最上位のデータ記憶領域Mn−1に無効フラグを書き込む。シフト操作は、1処理サイクルで実行される。たとえば、識別子#(1)のデータ記憶領域M1が空き領域である場合、メモリ制御部133Cは、空き領域M1よりも上位のデータ記憶領域M2〜Mn−1に保持されるエントリデータを、それぞれ、1つ下位のデータ記憶領域M1〜Mn−2にシフトさせる。あるいは、識別子#(n−2)のデータ記憶領域Mn−2が空き領域である場合は、メモリ制御部133Cは、空き領域Mn−2よりも上位のデータ記憶領域Mn−1に保持されているエントリデータを、1つ下位のデータ記憶領域Mn−2にシフトさせる。
【0031】
このようなエントリ並べ替え機能により、データ記憶領域M0〜Mn−1において有効値を持つ有効フラグを含むエントリデータを連続的に配置する(並び替える)ことができ、有効値を持つ有効フラグを保持するデータ記憶領域間に空き領域が介在すること(空き領域の断片化)を解消することができる。また、最上位のデータ記憶領域Mn−1を含む上位のデータ記憶領域群をできるだけ空き領域にすることができる。上記のエントリ登録指示に応じて新規エントリを最上位のデータ記憶領域Mn−1に登録する際、最上位のデータ記憶領域Mn−1が空き領域であれば、シフト操作によりデータ記憶領域Mn−1が空き領域になるのを待つことなく、このデータ記憶領域Mn−1に実体データを書き込むことができる。
【0032】
また、エントリ並べ替え機能により、有効値を持つ有効フラグを含むエントリデータが連続的に配置されるようになるので、データ検索指示や特定エントリの削除指示があったときに検索範囲を限定することができる。したがって、データ検索処理とエントリ削除処理の高速化を実現することができる。
【0033】
次に、図4を参照しつつ、エントリ保持回路12の好適な構成について説明する。エントリ保持回路12は、n段のレジスタ回路400,…,40n−3,40n−2,40n−1を有するシフトレジスタ回路である。各レジスタ回路40j(jは0〜n−1のうちの任意の整数)は、図4に示されるように、たとえばクロック信号に同期して動作するフリップ・フロップなどのレジスタ50jと、エントリセレクタ60jと、自エントリデータ制御回路70jとを有する。レジスタ500,…,50n−1はそれぞれ図2のデータ記憶領域M0,…,Mn−2,Mn−1を構成する記憶素子である。
【0034】
エントリ制御回路13は、制御データ群32をエントリ保持回路12に供給する。制御データ群32は、エントリセレクタ600,…,60n−2,60n−1にそれぞれ供給される選択制御信号SEL0,…,SELn−2,SELn−1と、自エントリデータ制御回路700,…,70n−2,70n−1にそれぞれ供給される制御信号C0,…,Cn−2,Cn−1とからなる。各エントリセレクタ60jは、選択制御信号SELjの値に応じて3個の入力端子のいずれか1つに入力したデータを選択し、このデータをレジスタ50jの入力端子に出力する機能を有する。
【0035】
最上位のレジスタ回路40n−1では、エントリセレクタ60n−1の3個の入力端子には、エントリ制御回路13から供給された登録データ(実体データ)ODnと、自エントリデータ制御回路70n−1の出力データADn−1と、レジスタ50n−1のフィードバック出力ODn−1とが入力される。エントリセレクタ60n−1がレジスタ50n−1のフィードバック出力ODn−1を選択したとき、レジスタ50n−1の出力端子と入力端子との間にフィードバックループが形成され、レジスタ50n−1は同一のビット値(エントリデータ)を保持し続ける。エントリセレクタ60n−1が自エントリデータ制御回路70n−1の出力データADn−1を選択したときは、レジスタ50n−1は、クロック信号のパルスエッジに応じて、自エントリデータ制御回路70n−1の出力データADn−1をラッチ(保持)する。そして、エントリセレクタ60n−1がエントリ制御回路13から供給されたデータODnを選択したときは、レジスタ50n−1は、クロック信号のパルスエッジに応じてデータODnをラッチする。
【0036】
自エントリデータ制御回路70n−1は、制御信号Cn−1に応じて、レジスタ50n−1に保持されているエントリデータの一部または全てを変更するための置換データADn−1を生成する機能を有する。レジスタ50n−1の出力データODn−1はフィードバックして自エントリデータ制御回路70n−1にも入力されている。自エントリデータ制御回路70n−1は、制御信号Cn−1の値に応じて有効値を持つ有効フラグ及び無効フラグのうちのいずれか一方の制御フラグと、フィードバック出力ODn−1に含まれる実体データとを含むエントリデータADn−1を構成し、このエントリデータADn−1をエントリセレクタ60n−1に出力することができる。
【0037】
一方、他のレジスタ回路40k(kは0〜n−2のいずれか)では、エントリセレクタ60kの3個の入力端子には、前段のレジスタ50k+1の出力データODk+1と、自エントリデータ制御回路70kの出力データADkと、レジスタ50kの出力データODkとが入力される。エントリセレクタ60kがレジスタ50kのフィードバック出力ODkを選択したとき、レジスタ50kの出力端子と入力端子との間にフィードバックループが形成され、レジスタ50kは同一のビット値(エントリデータ)を保持し続ける。エントリセレクタ60kが自エントリデータ制御回路70kの出力データADkを選択したときは、レジスタ50kは、クロック信号のパルスエッジに応じて、自エントリデータ制御回路70kの出力データADkをラッチ(保持)する。そして、エントリセレクタ60kが前段のレジスタ50k+1の出力データODk+1を選択したときは、レジスタ50kは、クロック信号のパルスエッジに応じてデータODk+1をラッチする。
【0038】
自エントリデータ制御回路70kは、制御信号Ckに応じて、レジスタ50kに保持されているエントリデータの一部または全部を変更するための置換データADkを生成する機能を有する。レジスタ50kの出力データODkはフィードバックして自エントリデータ制御回路70kにも入力されている。自エントリデータ制御回路70kは、制御信号Ckの値に応じて有効値を持つ有効フラグ及び無効フラグのうちのいずれか一方の制御フラグと、フィードバック出力ODkに含まれる実体データとを含むエントリデータADkを構成し、このエントリデータADkをエントリセレクタ60n−1に出力することができる。
【0039】
レジスタ500〜50n−1は、出力データOD0〜ODn−1からなるエントリデータ群31をエントリ制御回路13に並列に出力しているので、エントリ制御回路13は、レジスタ500〜50n−1に保持されている全てのエントリデータを一度に取得することができる。
【0040】
エントリ制御回路13は、制御データ群32を供給することでエントリ保持回路12の動作を制御することができる。エントリ登録指示やエントリ削除指示といったエントリ操作指示に応じた処理を実行しない処理サイクル期間には、メモリ制御部133Cは、全てのエントリセレクタ600〜60n−1にレジスタ500〜50n−1のフィードバック出力OD0〜ODn−1を選択させる選択制御信号SEL0〜SELn−1を出力する。これによりレジスタ500〜50n−1は同一のエントリデータ群を保持し続ける。
【0041】
エントリデータを無効化してエントリ保持回路12からエントリを削除するときは、メモリ制御部133Cは、無効化対象のエントリデータを保持するレジスタ回路40dのエントリセレクタ60dに自エントリデータ制御回路70dの出力データADdを選択させる選択制御信号SELdを供給し、自エントリデータ制御回路70dに無効フラグを含む置換データADdを生成させる制御信号Cdを供給する。これによりレジスタ50dは無効フラグを保持する。
【0042】
エントリ登録指示に応じてエントリデータをエントリ保持回路12に記憶させるときは、メモリ制御部133Cは、最上位のエントリセレクタ60n−1に置換データODnを選択させる選択制御信号SELn−1を供給し、エントリセレクタ60n−1に新たなエントリデータを置換データODnとして供給する。レジスタ50n−1は、クロック信号のパルスエッジに応じて、エントリセレクタ60n−1を介して入力されたエントリデータODnをラッチ(保持)する。これにより、最上位のレジスタ50n−1にエントリデータが登録される。
【0043】
データ記憶領域M0〜Mn−1内に空き領域Meが存在するとき、エントリ操作指示に応じたエントリデータの書き込みが実行されない処理サイクル期間内に、有効値を持つ有効フラグを含むエントリデータが再配置される。具体的には、メモリ制御部133Cは、空き領域Meを有するレジスタ回路40eの順位よりも上位のレジスタ回路40e+1〜40n−1内のレジスタ50e+1〜50n−1の出力データODe+1〜ODn−1を選択させる選択制御信号SELe〜SELn−2をエントリセレクタ60e〜60n−2に供給する。さらに、メモリ制御部133Cは、最上位のレジスタ回路40n−1のエントリセレクタ60n−1に自エントリデータ制御回路70n−1の出力データADn−1を選択させる選択制御信号SELn−1を供給し、自エントリデータ制御回路70n−1に無効フラグを含む置換データADn−1を生成させる制御信号Cn−1を供給する。これによりレジスタ50e〜50n−2は、それぞれ、前段のレジスタ50e+1〜50n−1の出力データODe+1〜ODn−1をラッチ(保持)するシフト動作を実行する。また、最上位のレジスタ50n−1に無効フラグが保持される。
【0044】
次に、図5〜図9を参照しつつ、上記構成を有する実施の形態1のデータ記憶装置11の動作を説明する。
【0045】
図5は、入出力装置14からのエントリ操作指示がない場合に実行されるエントリ並べ替え処理の手順を概略的に示すフローチャートであり、図6は、エントリ並べ替え処理が実行されたときのデータ記憶領域の状態遷移の様子を示す図である。また、図7は、エントリ削除指示に応じて実行されるエントリ削除処理の手順を概略的に示すフローチャートであり、図8及び図9は、エントリ登録指示に応じて実行されるエントリ登録処理の手順を概略的に示すフローチャートである。なお、データ検索要求、データ読み出し指示及び有効エントリ数の通知指示といったエントリの変更を伴わないアクセス要求RQに対する処理は、エントリ保持回路12がシフトレジスタ回路の構成を有するので、常時実行可能な処理である。これらの処理は、エントリ並べ替え処理、エントリ削除処理及びエントリ登録処理が実行される処理サイクル期間中でも、並行して実行することができる。
【0046】
最初に、図5を参照しつつ、エントリ操作指示がない場合に実行されるエントリ並べ替え処理について説明する。エントリ更新制御部133のメモリ制御部133Cは、エントリデータ受信部132から供給されるエントリデータ群31に基づいてエントリ保持回路12の動作状態を把握し、適切な処理サイクル期間にエントリ並べ替え処理を開始する。
【0047】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS101)。次に、メモリ制御部133Cは、識別子#(i)を有するレジスタ回路40iに保持されているエントリデータ(以下、識別子#(i)のエントリデータと呼ぶ。)が無効であるか否かを判定する(ステップS103)。識別子#(i)のエントリデータが有効であると判定したとき(ステップS103のNO)、メモリ制御部133Cは、変数iがn−2に達したかどうかを判定する(ステップS115)。変数iがn−2に達したとき(ステップS115のYES)、エントリ並べ替え処理は終了する。一方、変数iがn−2に達していないとき(ステップS115のNO)、メモリ制御部133Cは、変数iを1だけインクリメントし(ステップS117)、ステップS103に手順を戻す。
【0048】
最下位のエントリデータから上位のエントリデータに向かって順番に無効か否かの判定(ステップS103)を実行した結果、無効フラグを含む無効なエントリデータが存在していたとき(ステップS103のYES)、メモリ制御部133Cは、変数jに変数iの値を設定する(ステップS105)。次いで、メモリ制御部133Cは、識別子#(j)のエントリに識別子#(j+1)のエントリデータをシフトさせる制御を実行する(ステップS107)。具体的には、メモリ制御部133Cは、識別子#(j)を有するレジスタ回路40jのエントリセレクタ60jに、識別子#(j+1)を有する前段レジスタ回路40j+1の出力データODj+1を選択させる選択制御信号SELjを供給する。次いで、変数jを1だけインクリメントする(ステップS109)。その後、メモリ制御部133Cは、変数jが最上位のレジスタ回路40n−1の識別子番号n−1に達したか否かを判定する(ステップS111)。変数jがn−1に達していなければ(ステップS111のNO)、処理手順はステップS107に戻る。このようにステップS111で変数jがn−1に達するとの判定(ステップS111のYES)がなされるまで、上記ステップS107,S109の処理が繰り返し実行される。この結果、レジスタ50i〜50n−2は、それぞれ、前段のレジスタ50i+1〜50n−1の出力データODi+1〜ODn−1をラッチ(保持)するシフト動作を実行する。
【0049】
シフト動作の実行後(ステップS111のYES)、メモリ制御部133Cは、識別子#(n−1)の最上位エントリを無効化する(ステップS113)。具体的には、メモリ制御部133Cは、最上位のレジスタ回路40n−1のエントリセレクタ60n−1に自エントリデータ制御回路70n−1の出力データADn−1を選択させる選択制御信号SELn−1を供給し、自エントリデータ制御回路70n−1に無効フラグを含む置換データADn−1を生成させる制御信号Cn−1を供給する。これによりレジスタ50n−1に無効フラグが保持される。その後、ステップS115で変数iがn−2に達するとの判定(ステップS115のYES)がなされるまで、ステップS117以後の処理が実行される。
【0050】
図6(A)〜(C)は、上記エントリ並べ替え処理が実行されたときに、最大エントリ数nが7の場合のデータ記憶領域M0〜M6の状態遷移の様子を示す図である。図6(A)に示すように、最初の状態では、識別子#(1),#(2),#(4)のエントリが有効であり、その他のエントリは無効であるとする。
【0051】
上記エントリ並べ替え処理の実行により、先ず、識別子#(i=0)のエントリデータが無効であると判定される(ステップS103のYES)。次いで、識別子#(0)のエントリに識別子#(1)のエントリデータをシフトさせ、識別子#(1)のエントリに識別子#(2)のエントリデータをシフトさせ、識別子#(2)のエントリに識別子#(3)のエントリデータをシフトさせ、識別子#(3)のエントリに識別子#(4)のエントリデータをシフトさせ、識別子#(4)のエントリに識別子#(5)のエントリデータをシフトさせ、識別子#(5)のエントリに識別子#(6)のエントリデータをシフトさせるというシフト操作が実行される(ステップS105〜S111)。その後、識別子#(6)のエントリの無効化処理が実行される(ステップS113)。これにより、図6(B)に示されるように識別子#(0),#(1),#(3)のエントリに有効なエントリデータがシフトする。以上のシフト操作及びエントリの無効化処理は、最初の処理サイクル期間内に実行される。
【0052】
次の処理サイクル期間では、識別子#(i=2)のエントリデータが無効であると判定される(ステップS103のYES)。次いで、識別子#(2)のエントリに識別子#(3)のエントリデータをシフトさせ、識別子#(3)のエントリに識別子#(4)のエントリデータをシフトさせ、識別子#(4)のエントリに識別子#(5)のエントリデータをシフトさせ、識別子#(5)のエントリに識別子#(6)のエントリデータをシフトさせるというシフト操作が実行される(ステップS105〜S111)。その後、識別子#(6)のエントリの無効化処理が実行される(ステップS113)。この結果、図6(C)に示されるように識別子#(0),#(1),#(2)のエントリに有効なエントリデータがシフトする。
【0053】
次の処理サイクル期間では、識別子#(i=3)のエントリデータが無効であると判定される(ステップS103のYES)。次いで、識別子#(3)のエントリに識別子#(4)のエントリデータをシフトさせ、識別子#(4)のエントリに識別子#(5)のエントリデータをシフトさせ、識別子#(5)のエントリに識別子#(6)のエントリデータをシフトさせるというシフト操作が実行される(ステップS105〜S111)。その後、識別子#(6)のエントリの無効化処理が実行される(ステップS113)。
【0054】
メモリ制御部133Cは、上記エントリ並べ替え処理を、エントリデータの書き込みを実行しない処理サイクル期間に常に実行することで、図6(C)に示すように有効なエントリが詰まって配置された状態を実現することができる。図6(A)〜(C)に示したように、エントリデータの並び替えが完了するまで複数の処理サイクルを要することになるが、図4に示したように、レジスタ500〜50n−1はエントリデータ群31をエントリ制御回路13に供給しているので、並び替え処理を中断することなく、エントリデータ群31を読み出すことができる。
【0055】
次に、図7を参照しつつ、特定データと一致する実体データを含むエントリデータを無効化するためのエントリ削除処理について説明する。
【0056】
エントリ保持回路12は、シフトレジスタ回路の構成を有し、エントリデータをシフトさせるので、ある処理サイクル期間に識別子#(i)のデータ記憶領域Miに存在していたエントリデータが、その次の処理サイクル期間に同じ識別子#(i)のデータ記憶領域Miに存在している保証はない。そのため、本実施の形態では、特定データを検索キーとした検索を実行して削除対象となるエントリを特定する方法が採用される。入出力装置14からエントリ削除指示を含むアクセス要求RQが受信されると、メモリ制御部133Cは、このエントリ削除指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間にエントリ削除処理を開始する。
【0057】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS201)。次に、メモリ制御部133Cは、レジスタ回路40iに保持されている識別子#(i)のエントリデータが、特定データと一致する削除すべき実体データを含むか否かを判定する(ステップS203)。エントリデータが削除すべき実体データを含まない場合(ステップS203のNO)、メモリ制御部133Cは、変数iが最上位のエントリを指す識別子番号n−1に達したか否かを判定し(ステップS209)、変数iがn−1に達していなければ(ステップS209のNO)、変数iを1だけインクリメントして(ステップS213)、処理手順をステップS203に戻す。全てのエントリについて削除すべき実体データを含むエントリデータを探し出すことができなかったときは、変数iはn−1に達する(ステップS209のYES)。このとき、メモリ制御部133Cは、送受信部131を介して入出力装置14に削除不能の旨を通知し(ステップS211)、エントリ削除処理を終了する。
【0058】
一方、識別子#(i)のエントリデータが削除すべき実体データを含むと判定された場合(ステップS203のYES)、メモリ制御部133Cは、識別子#(i)のエントリを無効化する(ステップS205)。具体的には、データ検索部133Aは、削除すべき実体データを保持するデータ記憶領域Miに無効フラグを書き込む。その後、メモリ制御部133Cは、送受信部131を介して入出力装置14に削除完了の旨を通知し(ステップS207)、エントリ削除処理を終了する。
【0059】
なお、上記エントリ削除処理は、エントリ保持回路12において同一の実体データが重複して記憶されていない場合に適用されるものである。そのため、ステップS203において識別子#(i)のエントリデータが削除すべき実体データを含むと判定されれば、識別子#(i+1)のエントリに削除すべき実体データが存在しないことが保証されている。同一の実体データの重複が許可されている場合には、ステップS205の実行後、メモリ制御部133Cは、変数iをインクリメントしてステップS203を実行する手順を採用することができる。
【0060】
次に、図8を参照しつつ、エントリ保持回路12に実体データを登録するためのエントリ登録処理について説明する。メモリ制御部133Cは、入出力装置14からのエントリ登録指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間でエントリ登録処理を開始する。
【0061】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS301)。次に、メモリ制御部133Cは、レジスタ回路40iに保持されている識別子#(i)のエントリデータが、登録すべき特定データと一致する実体データを含むか否かを判定する(ステップS303)。エントリデータが当該実体データを含まない場合(ステップS303のNO)、メモリ制御部133Cは、変数iが最上位のエントリを指す識別子番号n−1に達したか否かを判定し(ステップS321)、変数iがn−1に達していなければ(ステップS321のNO)、変数iを1だけインクリメントして(ステップS323)、処理手順をステップS303に戻す。
【0062】
一方、識別子#(i)のエントリデータが、登録すべき特定データと一致する実体データを含むと判定された場合(ステップS303のYES)、メモリ制御部133Cは、識別子#(i)のエントリを無効化する(ステップS305)。具体的には、データ検索部133Aは、当該実体データを保持するデータ記憶領域Miに無効フラグを書き込む。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)のエントリが無効化されるまで待機する(ステップS307のNO)。
【0063】
識別子#(n−1)のエントリの無効化が完了したとき(ステップS307のYES)、メモリ制御部133Cは、識別子#(n−1)のエントリ(空きエントリ)への特定データの書き込み制御を行う(ステップS309)。具体的には、メモリ制御部133Cは、最上位のエントリセレクタ60n−1に置換データODnを選択させる選択制御信号SELn−1を供給し、エントリセレクタ60n−1に特定データを含む新たなエントリデータを置換データODnとして供給する。これによりレジスタ50n−1は、エントリセレクタ60n−1を介して入力されたエントリデータODnをラッチ(保持)する。その後、メモリ制御部133Cは、送受信部131を介して入出力装置14に更新完了の旨を通知し(ステップS311)、エントリ登録処理を終了する。
【0064】
一方、全てのエントリについて、登録すべき特定データと一致する実体データを含むエントリデータを探し出すことができなかったときは、変数iはn−1に達する(ステップS303のNO及びステップS321のYES)。このとき、メモリ制御部133Cは、エントリデータ受信部132から供給されるエントリデータ群31に基づいて、識別子#(n−1)の最上位のエントリが無効か否かを判定する(ステップS325)。最上位のエントリが無効である場合(ステップS325のYES)、メモリ制御部133Cは、識別子#(n−1)のエントリへの特定データの書き込み制御を行う(ステップS331)。その後、メモリ制御部133Cは、送受信部131を介して入出力装置14に登録完了の旨を通知し(ステップS333)、エントリ登録処理を終了する。
【0065】
上記ステップS325において最上位のエントリが無効ではない場合(ステップS325のNO)、メモリ制御部133Cは、識別子#(0)の最下位のエントリを無効化する(ステップS327)。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)のエントリが無効化されるまで待機する(ステップS329のNO)。識別子#(n−1)のエントリの無効化が完了したとき(ステップS329のYES)、メモリ制御部133Cは、ステップS331,S333を順次実行し、エントリ登録処理を終了する。
【0066】
上記の図8のエントリ登録処理は、エントリ保持回路12に同一の実体データが重複して記憶されることを許可しない場合の処理である。図9は、エントリ保持回路12において同一の実体データが重複することを許可する場合のエントリ登録処理の手順を概略的に示すフローチャートである。図9のフローチャートは、図8のステップS303〜311が存在しない点を除いて図8のフローチャートと同じである。図8のステップS303の判定処理が行われないため、特定データは常に登録される。
【0067】
なお、図2(C)に示したようにデータ領域21が、複数の実体データを格納する複数の領域に機能的に分割されている場合、メモリ制御部133Cは、これら複数の実体データのうちの一部を書き換えることもできる。具体的には、メモリ制御部133Cは、レジスタ回路40iのエントリセレクタ60iに自エントリデータ制御回路70iの出力データADiを選択させる選択制御信号SELiを供給し、自エントリデータ制御回路70iにフィードバック出力ODiの中の複数の実体データの一部を別の実体データに置換させる制御信号Ciを供給する。ここで、メモリ制御部133Cは、当該別の実体データを制御信号Ciに含めて自エントリデータ制御回路70iに供給することができる。たとえば、上記したように入出力装置14が集線装置であり、MACアドレスと通信ポート番号との対応関係を登録するアドレス検索回路としてエントリ保持回路12を使用する場合、メモリ制御部133Cは、MACアドレスに対応する通信ポート番号を書き換えることができる。また、メモリ制御部133Cは、必ず、エントリ保持回路12に保持されているエントリデータ群31の内容を確認することができるので、特定の対応関係を有する実体データの組み合わせをエントリ保持回路12に保持させないようにすることができる。たとえば、エントリ保持回路12において、1つのMACアドレスが関連付けられた通信ポート番号が複数個存在しないように制御することができる。
【0068】
以上に説明したように、実施の形態1のデータ記憶装置11では、エントリ制御回路13のメモリ制御部133Cは、データ記憶領域M0〜Mn−1に対してエントリデータの書き込みを実行しない処理サイクル期間に、データ記憶領域M0〜Mn−1の中の空き領域Meの順位よりも上位のデータ記憶領域Me+1〜Mn−1に保持されているエントリデータを、下位のデータ記憶領域にシフトさせるシフト操作を行い、最上位のデータ記憶領域Mn−1に無効フラグを書き込む。これにより、有効値を持つ有効フラグを含むエントリデータを連続的に配置することができ、最上位のデータ記憶領域Mn−1を含む上位のデータ記憶領域を空き領域にすることができる。よって、上記特許文献2(特許第4369524号明細書)に開示されている技術のようにメモリ管理制御のために別の記憶領域を確保する必要がない。また、メモリ制御部133Cは有効なエントリを連続的に再配置して上位の空き領域を形成するので、データ検索処理、エントリ登録処理(図8及び図9)及びエントリ削除処理(図7)の処理速度を高速化することができる。データ記憶装置11を実装する際には、エントリデータの登録や削除(無効化)といった操作と、エントリデータに対するシフト操作とが競合しないようにシステムを容易に設計することができ、しかも、LRUアルゴリズムなどのメモリ管理アルゴリズムに基づく制御に必要な記憶領域を別に確保せずに済むという利点がある。
【0069】
また、エントリ保持回路12がシフトレジスタ回路の構成を有しているので、エントリ制御回路13は、メモリ制御部133Cによるエントリ保持回路12に対する操作に影響を与えることなく、レジスタ500〜50n−1の並列出力(エントリデータ群31)から所望の実体データを取得する(読み出す)ことができる。また、メモリ制御部133Cは、レジスタ500〜50n−1の並列出力に基づいて、エントリ保持回路12の動作状態及び記憶内容を常時監視しながら最適な制御を行うこともできる。
【0070】
したがって、実施の形態1のデータ記憶装置11は、メモリ管理アルゴリズムに基づく制御を少ないメモリ消費量で効率良く実行することができる。特に、LRUアルゴリズムに基づく完全な制御を少ないメモリ消費量で効率良く実行することが可能である。
【0071】
実施の形態2.
次に、本発明に係る実施の形態2について説明する。実施の形態2のデータ記憶装置の構成は、動作モードが異なる点を除いて、実施の形態1のデータ記憶装置11の構成と同一である。実施の形態1については、エントリ保持回路12におけるデータ記憶領域Miのフラグ領域22が単一の制御フラグ(有効フラグ)を格納する場合の動作を説明した。本実施の形態では、データ記憶領域Miのフラグ領域22は、図10(A),(B)に示されるように2つの領域22A,22Bに機能的に分割されており、一方の領域22Aには上記有効フラグが格納され、他方の領域22Bには静的フラグが格納される。静的フラグは、データ記憶領域Miに保持されるエントリデータの無効化を許可する許可値(たとえば「0」の値)と、エントリデータの無効化を許可しないマスク値(たとえば「1」の値)とのうちのいずれか一方を有するものである。
【0072】
エントリ更新制御部133のメモリ制御部133Cは、上記実施の形態1に関して説明したエントリ登録処理やエントリ削除処理の際に、マスク値を持つ静的フラグを保持するデータ記憶領域Mm(mは0〜n−1のいずれかの整数)を検出した場合には、そのデータ記憶領域Mmに無効フラグを書き込まない、言い換えれば、データ記憶領域Mmにおける登録済みのエントリを無効化しない機能を有する。これにより、データ記憶領域M0〜Mn−1のフラグ領域22に要する記憶容量が増加するものの、より柔軟にエントリデータの登録や削除(無効化)などの操作を行うことが可能となる。
【0073】
静的フラグは、新規の実体データの登録の際に設定される。実体データと無効フラグと静的フラグとを含むエントリデータがエントリ保持回路12に登録された後、メモリ制御部133Cは、静的フラグの値に基づいて、登録済みのエントリデータに対する削除操作を行うのか否かを決めることができる。このため、メモリ管理アルゴリズムに基づく制御に関わらず、変更されないエントリデータをエントリ保持回路12に記憶させることができる。
【0074】
以下、図11〜図13を参照しつつ、実施の形態2のデータ記憶装置11の動作を説明する。図11は、実施の形態2に係るエントリ削除処理の手順を概略的に示すフローチャートである。図11のフローチャートは、ステップS204,S214を除いて、図7のフローチャートと同じ手順を有する。また、図12は、実施の形態2に係るエントリ登録処理の手順を概略的に示すフローチャートであり、図13は、図12のエントリ検索処理(ステップS326)の手順を示すフローチャートである。図13のフローチャートは接続子C1を介して図12のフローチャートと接続されている。また、図12のフローチャートは、ステップS304,S326,S328,S335を除いて、図8のフローチャートと同じ手順を有する。
【0075】
最初に、図11を参照しつつ、エントリ削除処理について説明する。入出力装置14からエントリ削除指示を含むアクセス要求RQが受信されると、メモリ制御部133Cは、このエントリ削除指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間にエントリ削除処理を開始する。
【0076】
ステップS203で識別子#(i)のエントリデータが削除すべき実体データを含むと判定された場合(ステップS203のYES)、メモリ制御部133Cは、識別子#(i)を有するレジスタ回路40iに保持されている静的フラグ(以下、識別子#(i)の静的フラグと呼ぶ。)が有意か否かを判定する(ステップS204)。静的フラグが有意である場合、すなわち、静的フラグがマスク値を有する場合(ステップS204のYES)、メモリ制御部133Cは、識別子#(i)のエントリの無効化(ステップS205)を実行せずに、静的フラグによる更新不能の旨を送受信部131を介して入出力装置14に通知し(ステップS214)、エントリ削除処理を終了する。一方、静的フラグが有意でない場合(ステップS204のNO)、メモリ制御部133Cは、ステップS205,S207を実行した後に、エントリ削除処理を終了する。
【0077】
ところで、メモリ制御部133Cは、静的フラグを参照せずにエントリ削除を実行する動作モードをも有する。具体的には、入出力装置14からエントリ強制削除指示を含むアクセス要求RQが受信されたとき、メモリ制御部133Cは、このエントリ強制削除指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に、静的フラグを参照するエントリ削除処理(図11)ではなく、図7のエントリ削除処理を実行する。これにより、状況に応じて、有意な静的フラグを含むエントリデータを強制的に無効化して空き領域を確保することができる。
【0078】
次に、図12及び図13を参照しつつ、特定データと一致する実体データを含むエントリデータを登録するためのエントリ登録処理について説明する。入出力装置14からエントリ登録指示を含むアクセス要求RQが受信されると、メモリ制御部133Cは、このエントリ登録指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に図12のエントリ登録処理を開始する。
【0079】
ステップS303で識別子#(i)のエントリデータが、登録すべき特定データと一致する実体データを含むと判定された場合(ステップS303のYES)、メモリ制御部133Cは、識別子#(i)を有するレジスタ回路40iに保持されている静的フラグが有意か否かを判定する(ステップS304)。静的フラグが有意である場合、すなわち、静的フラグがマスク値を有する場合(ステップS304のYES)、メモリ制御部133Cは、識別子#(i)のエントリの無効化(ステップS305)をせずに、静的フラグによる更新不能の旨を送受信部131を介して入出力装置14に通知し(ステップS335)、エントリ登録処理を終了する。
【0080】
一方、全識別子#(0)〜#(n−1)のエントリデータが、登録すべき特定データと一致する実体データを含まず、識別子#(n−1)のエントリが有効であると判定した場合(ステップS325のNO)、メモリ制御部133Cは、空き領域をつくるためにエントリ検索処理(ステップS326)を実行する。
【0081】
図13を参照すると、メモリ制御部133Cは、変数kにゼロ値を設定し(ステップS341)、識別子#(k)の静的フラグが有意か否かを判定する(ステップS342)。識別子#(k)の静的フラグが有意である場合(ステップS342のYES)、メモリ制御部133Cは、変数kが最上位のエントリを指す識別子番号n−1に達したか否かを判定し(ステップS343)、変数kがn−1に達していなければ(ステップS343のNO)、変数kを1だけインクリメントして(ステップS345)、手順をステップS342に戻す。
【0082】
図13のフローチャートにおいて全識別子#(0)〜#(n−1)の静的フラグが有意である場合は、変数kはn−1に達する(ステップS343のYES)。この場合、メモリ制御部133Cは、登録不能の旨を送受信部131を介して入出力装置14に通知し(ステップS347)、エントリ登録処理を終了する。なお、登録不能の旨の通知(ステップS347)に代えて、別の処理を行うことも可能である。
【0083】
ステップS342で識別子#(k)の静的フラグが有意ではないと判定した場合(ステップS342のNO)、メモリ制御部133Cは、図12のフローチャートに処理を戻す。次いで、メモリ制御部133Cは、識別子#(k)のエントリを無効化する(ステップS328)。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)のエントリが無効化されるまで待機する(ステップS329のNO)。識別子#(n−1)のエントリの無効化が完了したとき(ステップS329のYES)、メモリ制御部133Cは、ステップS331,S333を順次実行し、エントリ登録処理を終了する。
【0084】
ところで、メモリ制御部133Cは、静的フラグを参照せずにエントリ登録を実行する動作モードを有する。具体的には、入出力装置14からエントリ強制登録指示を含むアクセス要求RQが受信されたとき、メモリ制御部133Cは、このエントリ強制登録指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に、静的フラグを参照するエントリ登録処理(図12及び図13)ではなく、図8のエントリ登録処理を実行する。これにより、状況に応じて、静的フラグの値に関わりなくエントリ登録を強制的に行うことができる。
【0085】
以上に説明したように実施の形態2によれば、特定のエントリデータが変更されないようにすることができるので、エントリデータの登録や削除(無効化)などの操作の柔軟性を向上させることができる。
【0086】
なお、メモリ制御部133Cは、データ記憶領域M0〜Mn−1のうち有意な静的フラグを保持しないデータ記憶領域に無効フラグを書き込むことで、有意ではない静的フラグを含むエントリデータを一斉に削除する操作を簡易に組み込むこともできる。
【0087】
実施の形態3.
次に、本発明に係る実施の形態3について説明する。実施の形態3のデータ記憶装置の構成は、動作モードが異なる点を除いて、実施の形態1のデータ記憶装置11の構成と同一である。実施の形態1については、エントリ保持回路12におけるデータ記憶領域Miのフラグ領域22が単一の制御フラグ(有効フラグ)を格納する場合の動作を説明した。本実施の形態では、データ記憶領域Miのフラグ領域22は、図14(A),(B)に示されるように2つの領域22A,22Bに機能的に分割されており、一方の領域22Aには上記有効フラグが格納され、他方の領域22Bには削除フラグが格納される。削除フラグは、データ記憶領域Miに保持されているエントリデータの無効化が予定されていることを示す有効値(たとえば「1」の値)と、データ記憶領域Miに保持されているエントリデータの無効化が予定されていないことを示す無効値(たとえば「0」の値)とのうちのいずれか一方の値を有する。以下、有効値を持つ削除フラグを「有効な削除フラグ」と呼び、無効値を持つ削除フラグを「無効な削除フラグ」と呼ぶこととする。
【0088】
メモリ制御部133Cは、或る処理サイクル期間TAにデータ記憶領域M0〜Mn−1の全部または一部に有効な削除フラグを書き込み、所定の設定期間ΔT経過後の処理サイクル期間TBに、有効な削除フラグを保持する当該データ記憶領域の全てに無効フラグを書き込むことにより有効な削除フラグを含むエントリデータを一括して無効化(削除)する機能を有する。これにより、エントリ保持回路12に空き領域をまとめて確保することができる。ただし、メモリ制御部133Cは、設定期間ΔT内にエントリデータのいずれかを更新したとき、当該更新されたエントリデータを保持するデータ記憶領域には無効な削除フラグを書き込む。設定期間ΔT内に登録されたエントリデータはいずれも無効な削除フラグを含む。よって、設定期間ΔT経過後の処理サイクル期間TBでは、設定期間ΔT内に更新または登録されたエントリデータが無効化(削除)されない。
【0089】
また、メモリ制御部133Cは、外部の入出力装置14から削除フラグ付与指示を含むアクセス要求RQが受信されたとき、この削除フラグ付与指示に応じて、データ記憶領域M0〜Mn−1の全部または一部に有効な削除フラグを書き込み、所定の設定期間ΔT経過後の処理サイクル期間に、有効な削除フラグを保持する当該データ記憶領域の全てに無効フラグを書き込むことにより有効な削除フラグを含むエントリデータを一括して削除する機能をも有する。この場合も、メモリ制御部133Cは、設定期間ΔT内にエントリデータのいずれかを更新したとき、当該更新されたエントリデータを保持するデータ記憶領域には無効な削除フラグを書き込む。また、設定期間ΔT内に登録されたエントリデータはいずれも無効な削除フラグを含む。
【0090】
さらに、メモリ制御部133Cは、外部の入出力装置14からの空き領域確保指示に応じて、設定期間ΔTの経過を待つことなく、有効な削除フラグを保持する当該データ記憶領域の全てに無効フラグを書き込むことにより有効な削除フラグを含むエントリデータを一括して無効化(削除)する機能をも有する。
【0091】
上記機能を有することにより、データ記憶装置11は、エントリ保持回路12の空き領域をまとめて確保する制御を行うことができる。たとえば、エントリ保持回路12が有効なエントリで満杯となる前であっても、登録または更新されてから一定期間経過したエントリデータを自動的に抹消し、優先順位の低いエントリデータをエントリ保持回路12内に残さないような制御を行うことができる。
【0092】
次に、図15を参照しつつ、上記削除フラグを使用する実施の形態3のデータ記憶装置11の動作を説明する。図15は、実施の形態3に係るエントリ操作の制御処理の一例を概略的に示すフローチャートである。或る時刻に達したとき、あるいは、外部の入出力装置14から削除フラグ付与指示を含むアクセス要求RQが受信されたとき、これに応じて図15の制御処理が開始される。
【0093】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS401)。次に、メモリ制御部133Cは、識別子#(i)のエントリに有効な削除フラグを設定する(ステップS403)。具体的には、メモリ制御部133Cは、識別子#(i)のレジスタ回路40i(図4)のエントリセレクタ60iに自エントリデータ制御回路70iの出力データADiを選択させる選択制御信号SELiを供給し、自エントリデータ制御回路70iに有効な削除フラグを含む置換データADiを生成させる制御信号Ciを供給する。有効な削除フラグの設定(ステップS403)の後、変数iが識別子番号n−1に達したか否かを判定する(ステップS405)。変数iがn−1に達していなければ(ステップS405のNO)、メモリ制御部133Cは、変数iを1だけインクリメントし(ステップS407)、手順をステップS403に戻す。
【0094】
変数iがn−1に達すると(ステップS405のYES)、メモリ制御部133Cは、設定期間ΔTが経過して設定時刻が到来するまで待機する(ステップS409のNO)。設定時刻が到来すると(ステップS409のYES)、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS411)。次に、メモリ制御部133Cは、識別子#(i)の削除フラグが有効であるか否かを判定する(ステップS413)。削除フラグが有効であれば(ステップS413のYES)、メモリ制御部133Cは、識別子#(i)のエントリを無効化する(ステップS415)。次いで、変数iがn−1に達したか否かを判定する(ステップS417)。一方、削除フラグが有効でなければ(ステップS413のNO)、メモリ制御部133Cは、エントリの無効化(ステップS415)をスキップして、変数iがn−1に達したか否かを判定する(ステップS417)。変数iがn−1に達していなければ(ステップS417のNO)、メモリ制御部133Cは、変数iを1だけインクリメントし(ステップS419)、手順をステップS413に戻す。その後、変数iがn−1に達すると(ステップS417のYES)、処理を終了する。
【0095】
以上の処理により、一定期間経過後、登録あるいは更新のなされていないエントリデータの削除を行うことができる。なお、上記ステップS401〜S407の処理は1処理サイクル期間内に完了し、ステップS411〜S417の処理も1処理サイクル期間内に完了する。
【0096】
ところで、上記制御処理においては、有効な削除フラグを含むエントリデータの無効化(ステップS415)を実行後、後に無効化すべきエントリに有効な削除フラグを設定する処理を実行する手順を追加してもよい。また、上記ステップS401〜S407の処理と、ステップS411〜S419の処理とは別々の処理として実行されてもよい。さらに、ステップS411〜S419の処理の実行後、ステップS401〜S407の処理が実行されてもよい。
【0097】
以上に説明したように、実施の形態3のデータ記憶装置を用いれば、エントリデータに要する記憶容量が増加するものの、一定期間内に登録または更新されなかったエントリデータに対して一括削除を行うことができる。また、LRUアルゴリズムなどのメモリ管理アルゴリズムに基づく制御を継続して実行することができる。
【0098】
実施の形態4.
次に、本発明に係る実施の形態4について説明する。実施の形態4のデータ記憶装置は、実施の形態1のデータ記憶装置11と同一の構成を有する。実施の形態4では、エントリ更新制御部133が、上記機能に加えて、エントリ保持回路12内のデータ記憶領域M0〜Mn−1に保持されているエントリデータのうち、直近に参照されたエントリデータを最上位のデータ記憶領域Mn−1に保持させる機能を有している。図16は、この機能を実現するためのエントリ更新処理の手順を概略的に示すフローチャートである。
【0099】
入出力装置14からデータ参照要求を含むアクセス要求RQが受信されると、データ検索部133Aは、このデータ参照要求に応じて、エントリデータ群31の中からデータ参照要求で指定される実体データを取得し、この実体データを送受信部131を介して入出力装置14に送信する。一方、メモリ制御部133Cは、データ参照要求に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に図16のエントリ更新処理を開始する。
【0100】
まず、メモリ制御部133Cは、データ参照要求により参照されたエントリデータ(以下「参照データ」と呼ぶ。)を保持するデータ記憶領域Mpのアクセス順位が最上位であるか否かを判定する(ステップS501)。参照データが最上位のデータ記憶領域Mn−1に保持されていると判定したとき(ステップS501のYES)、メモリ制御部133Cは、エントリ更新処理を終了する。一方、参照データが最上位のデータ記憶領域Mn−1に保持されていないと判定したとき(ステップS501のNO)、メモリ制御部133Cは、識別子#(n−1)の最上位のエントリが無効か否かを判定する(ステップS503)。最上位のエントリが無効である場合(ステップS503のYES)、メモリ制御部133Cは、識別子#(n−1)のエントリへの参照データの書き込み制御を実行する(ステップS509)。具体的には、メモリ制御部133Cは、最上位のエントリセレクタ60n−1に置換データODnを選択させる選択制御信号SELn−1を供給し、エントリセレクタ60n−1に参照データを置換データODnとして供給する。これによりレジスタ50n−1は、エントリセレクタ60n−1を介して入力された参照データODnをラッチ(保持)する。
【0101】
一方、ステップS503で最上位のエントリが無効ではないと判定したとき(ステップS503のNO)、メモリ制御部133Cは、参照データを保持する識別子#(p)のエントリを無効化する(ステップS505)。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)の最上位エントリが無効化されるまで待機する(ステップS507のNO)。最上位エントリの無効化が完了したとき(ステップS507のYES)、メモリ制御部133Cは、最上位エントリに対する参照データの書き込み制御を実行し(ステップS509)、エントリ更新処理を終了する。
【0102】
図17(A)〜(D)は、最大エントリ数が7の場合のデータ記憶領域M0〜M6に対して図16のエントリ更新処理が実行されたときの、データ記憶領域M0〜M6の状態遷移の様子を示す図である。図17(A)に示されるように、最初の状態では、全てのデータ記憶領域M0〜M6のエントリは有効であり、データ記憶領域M0〜M6はそれぞれエントリデータD0〜D6を保持している。データ参照要求に応じてエントリデータD3が参照されたとき、図17(B)に示されるように、参照データD3を保持する識別子#(3)のエントリが無効化される(図16のステップS505)。次の処理サイクル期間にシフト操作と最上位エントリの無効化処理とが実行される。これにより、図17(C)に示されるように、識別子#(3),#(4),#(5)のエントリにそれぞれエントリデータD4,D5,D6がシフトする。その後、図17(D)に示されるように、識別子#(6)のデータ記憶領域M6に参照データD3が書き込まれる(図16のステップS509)。
【0103】
以上に説明したように、実施の形態4によれば、直近に参照されたエントリデータを最上位のデータ記憶領域Mn−1に常に保持させることができる。したがって、直近に参照されたエントリデータの優先順位を最も高くするメモリ管理アルゴリズムを実現することができる。
【0104】
実施の形態1〜4の変形例.
以上、図面を参照して本発明に係る種々の実施の形態について述べたが、これらは本発明の例示であり、上記以外の様々な形態を採用することができる。たとえば、図18(A),(B)に示されるように、データ記憶領域Miのフラグ領域22を3つの領域22A,22B,22Cに機能的に分割し、領域22Aには上記有効フラグを格納し、領域22Bに上記静的フラグを格納し、領域22Cに上記削除フラグを格納してもよい。これにより、データ記憶装置11は、有効フラグ、静的フラグ及び削除フラグを用いた処理を実行することができる。具体的には、設定期間ΔT内に未登録あるいは未更新のエントリデータでも、有意な静的フラグを含むエントリデータは一括削除の対象外とすることができる。たとえば、識別子#(i)の静的フラグが有意であるか否かを判定し、静的フラグが有意であれば、図15のステップS403において有効な削除フラグを設定せず、静的フラグが有意でなければ、ステップS403において有効な削除フラグを設定してもよい。
【0105】
また、上記実施の形態1〜3においては、エントリ保持回路12はシフトレジスタ回路の構成を有しているが、これに限定されるものではない。エントリ保持回路12へのアクセス速度が高速であることが要求されないシステムにデータ記憶装置11が適用される場合は、エントリ保持回路12をRAM(ランダム・アクセス・メモリ)で構成してもよい。
【0106】
また、エントリ制御回路13の全部または一部の機能は、ハードウェアで実現されてもよいし、あるいは、CPU(Central Processing Unit)などのマイクロプロセッサにより実行されるコンピュータプログラムで実現されてもよい。当該機能がコンピュータプログラムで実現される場合、マイクロプロセッサは、コンピュータ読み取り可能な記録媒体からコンピュータプログラムをロードし実行することにより当該機能を実現することが可能である。
【符号の説明】
【0107】
1 データ処理システム、 11 データ記憶装置、 12 エントリ保持回路、 13 エントリ制御回路、 131 送受信部、 132 エントリデータ受信部、 133 エントリ更新制御部、 133A データ検索部、 133B 領域検出部、 133C メモリ制御部、 14 入出力装置、 M0〜Mn−1 データ記憶領域、 21 データ領域、 400〜40n−1 レジスタ回路、 500〜50n−1 レジスタ、 600〜60n−1 エントリセレクタ、 700〜70n−1 自エントリデータ制御回路。
【技術分野】
【0001】
本発明は、記憶装置に対するデータの保存や読み出しを行う技術に関し、特に、LRU(Least Recently Used)アルゴリズムなどのメモリ管理アルゴリズムに基づいて記憶装置に対するデータの保存や読み出しを行う技術に関する。
【背景技術】
【0002】
従来から、ハードディスクドライブ(HDD)やキャッシュメモリや仮想メモリなどの記憶装置に対するデータの保存や読み出しを制御する手段として、記憶装置に保存されるデータまたはその記憶領域に優先順位を付与するメモリ管理アルゴリズムが広く使用されている。メモリ管理アルゴリズムを使用すれば、記憶装置に保存されているデータのうち最も優先順位の低いデータを選択し、これを必要に応じて記憶装置から削除する(追い出す)ことにより、記憶装置の限られた記憶領域内にできるだけ有意なデータを保存する領域を確保することができる。この種のメモリ管理アルゴリズムとしては、たとえば、時間的な局所性原理(Locality Principle)に基づくLRUアルゴリズムやLFU(Least Frequently Used)アルゴリズムが広く知られている。LRUアルゴリズムは、最も長い間参照されていないデータを、近い将来参照される可能性が最も低いものとして選択するアルゴリズムであり、LFUアルゴリズムは、最も参照頻度が低いデータを、近い将来参照される可能性が最も低いものとして選択するアルゴリズムである。
【0003】
LRUアルゴリズムに関する先行技術文献としては、たとえば、特開平9−288617号公報(特許文献1)及び特許第4369524号明細書(特許文献2)が挙げられる。特許文献1に開示されているLRU制御方式は、検索対象データをテーブルから検索する手段と、この検索対象データがテーブル内に存在したときは、検索対象データをテーブルの先頭に位置するように並び替える手段とを有するものである。一方、特許文献2に開示されているLRU制御装置は、複数のエントリをそれぞれ識別するための複数の識別情報(たとえば、エントリごとに一意に付与されたID)からなるLRU情報を記憶する記憶手段と、これら複数のエントリの中のいずれかのエントリが使用された場合に、LRU情報の中から使用されたエントリの識別情報を取り出すとともに最後尾に移動させてLRU情報を更新する手段とを備えている。LRU情報を構成する複数の識別情報は、エントリの最終使用時の古い順に書き込まれる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平9−288617号公報
【特許文献2】特許第4369524号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
メモリ管理アルゴリズムの1つとして並べ替え方式と呼ばれるものがある。並べ替え方式は、エントリの登録や削除や更新ごとに、データ記憶領域においてエントリデータを優先順位に従って並べ替える方式である。特許文献1に開示されているLRU制御方式は、並べ替え方式の一種である。しかしながら、並べ替え方式には、エントリデータを並べ替えている間は、エントリデータを格納するデータ記憶領域にアクセスすることができない期間が発生し、これが処理速度の低下を招くという問題がある。
【0006】
特許文献2に開示されているLRU制御装置は、エントリデータを格納するデータ記憶領域とは別の記憶領域にLRU情報を構築し、エントリの登録や削除や更新ごとに、LRU情報内の複数の識別情報を最終使用時が古い順に並べ替えて記憶することでLRU情報を更新する。このため、LRU制御により識別情報が並べ替えられている最中であっても、データ記憶領域にアクセスしてエントリデータを読み出すことができる。しかしながら、LRU制御のために別の記憶領域を確保する必要があるのでメモリ消費量が多くなる。また、LRU制御の対象となるエントリ数が増えると、LRU制御を実現するために必要なビット数が増大するという問題もある。
【0007】
上記に鑑みて本発明の目的は、メモリ管理アルゴリズムに基づいてエントリデータの並べ替えを行う場合でも少ないメモリ消費量で動作し、処理速度の低下を抑制することができるデータ記憶装置を提供することである。
【課題を解決するための手段】
【0008】
本発明によるデータ記憶装置は、所定のメモリ管理アルゴリズムに基づく優先順位を有する複数のエントリデータをそれぞれ保持し、該複数のエントリデータの優先順位に対応する順位がそれぞれ割り当てられた複数のデータ記憶領域を有するエントリ保持回路と、外部装置からのアクセス要求に応じて、前記複数のデータ記憶領域に対して前記エントリデータの読み出し及び書き込みを実行するエントリ制御回路と、を備え、前記各データ記憶領域は、当該各データ記憶領域に保持されるエントリデータを有効にする有効値及び当該各データ記憶領域に保持されるエントリデータを無効にする無効値のうちのいずれか一方の値を持つ有効フラグを格納する有効フラグ領域と、実体データを格納するデータ領域と、を有し、前記エントリ制御回路は、前記複数のデータ記憶領域の中から前記無効値を持つ有効フラグを保持する無効化データ領域を空き領域として検出する領域検出部と、前記複数のデータ記憶領域に対して前記エントリデータの書き込みが実行されない間に、前記複数のデータ記憶領域のうち前記無効化データ領域の順位よりも上位のデータ記憶領域に保持されているエントリデータを、前記上位のデータ記憶領域よりも下位の当該データ記憶領域にシフトさせるシフト操作を行うとともに、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記無効値を持つ有効フラグを書き込むメモリ制御部と、を含むことを特徴とする。
【発明の効果】
【0009】
本発明によれば、有効フラグと実体データとを含むエントリデータがデータ記憶領域に保持される。データ記憶領域に対するエントリデータの書き込みが実行されない間に、有効フラグを使用したシフト操作によりエントリデータの並び替えを効率的に行うことができる。
【図面の簡単な説明】
【0010】
【図1】本発明に係る実施の形態1のデータ処理システムの概略構成を示す機能ブロック図である。
【図2】実施の形態1のデータ記憶装置のエントリ保持回路内のデータ記憶領域の構成を示す図である。
【図3】実施の形態1のデータ記憶装置のエントリ制御回路の構成の一例を示す機能ブロック図である。
【図4】実施の形態1のエントリ保持回路の好適な構成を示す図である。
【図5】実施の形態1に係るエントリ並べ替え処理の手順を概略的に示すフローチャートである。
【図6】図5のエントリ並べ替え処理が実行されたときのデータ記憶領域の状態遷移の様子を示す図である。
【図7】実施の形態1に係るエントリ削除処理の手順を概略的に示すフローチャートである。
【図8】実施の形態1に係るエントリ登録処理の手順の一例を概略的に示すフローチャートである。
【図9】実施の形態1に係るエントリ登録処理の手順の他の例を概略的に示すフローチャートである。
【図10】本発明に係る実施の形態2のデータ記憶領域の構成を示す図である。
【図11】実施の形態2に係るエントリ削除処理の手順を概略的に示すフローチャートである。
【図12】実施の形態2に係るエントリ登録処理の手順を概略的に示すフローチャートである。
【図13】図12のエントリ検索処理(ステップS326)の手順を示すフローチャートである。
【図14】本発明に係る実施の形態3のデータ記憶領域の構成を示す図である。
【図15】実施の形態3に係る制御処理の一例を概略的に示すフローチャートである。
【図16】本発明に係る実施の形態4に係るエントリ更新処理の手順を概略的に示すフローチャートである。
【図17】実施の形態4に係るエントリ更新処理が実行されたときのデータ記憶領域の状態遷移の様子を示す図である。
【図18】実施の形態1〜4の変形例のデータ記憶領域の構成を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明に係る種々の実施の形態について図面を参照しつつ説明する。
【0012】
実施の形態1.
図1は、本発明に係る実施の形態1のデータ処理システム1の概略構成を示す機能ブロック図である。このデータ処理システム1は、データ処理を実行する入出力装置14と、そのデータ処理の際に参照される実体データを含むエントリデータを一時的に記憶するデータ記憶装置11とを備える。入出力装置14としては、たとえば、通信ネットワークにおいて通信データを処理する通信装置(中継装置や集線装置など)が挙げられるが、これらに限定されるものではない。データ処理にメモリを必要とする装置であれば、任意の装置にデータ記憶装置11を適用することが可能である。
【0013】
データ記憶装置11は、複数のエントリデータを記憶する複数のデータ記憶領域を有するエントリ保持回路12と、LRUアルゴリズムなどのメモリ管理アルゴリズムに基づいてエントリ保持回路12に対するエントリデータの書き込み及び読み出しを制御するエントリ制御回路13とを含む。エントリ制御回路13は、メモリ管理アルゴリズムに基づいて複数のエントリデータのうち優先順位の最も低いエントリデータを選択し、選択されたエントリデータを無効化することによりエントリ保持回路12内に空き領域を確保する機能を有する。
【0014】
図2(A),(B),(C)は、エントリ保持回路12内のn個のデータ記憶領域M0,M1,M2,…,Mn−3,Mn−2,Mn−1(nは正整数)を模式的に示す図である。ここで、nは、エントリ保持回路12に確保可能な最大エントリ数を示す整数値である。図2(A)には6個以上のデータ記憶領域M0〜Mn−1が示されているが、少なくとも2個のデータ記憶領域が確保されていればよい。データ記憶領域M0〜Mn−1はそれぞれエントリデータを保持するための記憶容量を有する。また、データ記憶領域M0,M1,…,Mn−1には、エントリデータの優先順位に対応する順位(以下、アクセス順位と呼ぶ。)がそれぞれ割り当てられている。エントリ制御回路13においては、データ記憶領域M0,M1,…,Mn−1に対してそれぞれのアクセス順位に対応する識別子#(0),#(1),…,#(n−3),#(n−2),#(n−1)が設定されている。エントリ制御回路13は、これら識別子#(0)〜#(n−1)に基づいて、データ記憶領域M0〜Mn−1に保持されているエントリデータにアクセスすることができる。
【0015】
図2(A)に示されるように、識別子#(n−1)を有するデータ記憶領域Mn−1のアクセス順位が最上位であり、この最上位のデータ記憶領域Mn−1に優先順位の最も高いエントリデータが格納される。LRUアルゴリズムが採用される場合には、最後に参照された時からの経過時間が短いほどエントリデータの優先順位は高くなる。また、識別子#(0)を有するデータ記憶領域M0のアクセス順位が最下位であり、この最下位のデータ記憶領域M0に優先順位の最も低いエントリデータが格納される。後述するように、エントリ保持回路12にエントリデータが登録されるとき、このエントリデータは、最初に最上位のデータ記憶領域Mn−1に記憶される。その後、エントリデータは、他のエントリデータの登録や更新や削除のたびに、上位のデータ記憶領域Mi(iは1〜n−1のいずれかの整数)から1つ下位のデータ記憶領域Mi−1にシフトさせられる。
【0016】
図2(B)は、識別子#(i)のデータ記憶領域Miの構成の一例を示す概略図である。図2(B)に示されるように、各データ記憶領域Miは、データ処理の際に参照される実体データ(エントリデータ本体)を格納するデータ領域21と、データ記憶領域Miに保持されるエントリデータの有効性を示す制御フラグの一種である有効フラグを格納するフラグ領域22とを有する。有効フラグは、エントリデータを有効にする有効値(たとえば「1」の値)及びエントリデータを無効にする無効値(たとえば「0」の値)のうちのいずれか一方の値を有する。以下、無効値を持つ有効フラグを「無効フラグ」と呼ぶこととする。また、エントリ制御回路13は、フラグ領域22に無効フラグを保持するデータ記憶領域Miをエントリの欠けた空き領域であると判断する。エントリ制御回路13は、データ記憶領域Miのフラグ領域22に無効フラグを書き込むことによりデータ記憶領域Miにおけるエントリを無効化して空き領域をつくることができる。
【0017】
本実施の形態では、データ領域21には、単一の実体データが格納されるが、これに限定されるものではない。データ領域21は、構築すべきシステムに応じて、図2(C)に示されるように互いに関連する複数の実体データをそれぞれ格納する領域21A,21B,…に機能的に分割されていてもよい。これにより、エントリ保持回路12を検索テーブルとして利用することができる。たとえば、入出力装置14がLAN(Local Area Network)に接続された集線装置の場合には、データ領域21内の2つの領域21A,21Bにアドレス検索テーブルの実体データを格納することができる。具体的には、データ領域21内の2つの領域21A,21Bに、データ送信元のMAC(Media Access Control)アドレスと通信ポート番号という2つの実体データを格納すれば、エントリ保持回路12を、MACアドレステーブルを保持するアドレス検索回路として利用できる。エントリ制御回路13は、入出力装置14からの問い合わせ要求に応じて、MACアドレスに対応する通信ポート番号をエントリ保持回路12から取得しこれを検索結果として返すことができる。
【0018】
また、本実施の形態では、フラグ領域22に単一の制御フラグ(有効フラグ)が格納されるが、これに限定されるものではない。図2(C)に示されるように、フラグ領域22が複数の制御フラグを格納する領域22A,22B,…を有していてもよい。後述するように実施の形態2,3では、フラグ領域22に2種類の制御フラグが格納される。
【0019】
図3は、エントリ制御回路13の構成の一例を示す機能ブロック図であり、図4は、エントリ保持回路12の好適な構成を示す図である。図3に示されるように、エントリ制御回路13は、入出力装置14との間でデータの送受信を行う送受信部131と、エントリ保持回路12内の全てのデータ記憶領域M0〜Mn−1から並列に出力されたエントリデータ群31を受信するエントリデータ受信部132と、エントリ更新制御部133とを含む。エントリデータ受信部132は、エントリ保持回路12から受信したエントリデータ群31を送受信部131とエントリ更新制御部133とに供給する。エントリ更新制御部133は、処理サイクルごとに、エントリデータ受信部132から供給されるエントリデータ群31に基づいてエントリ保持回路12の状態を把握し、エントリ保持回路12の動作状態を制御することができる。ここで、1処理サイクルは、1クロックサイクルまたは所定数のクロックサイクルからなる。エントリ更新制御部133は、データ検索部133A、領域検出部133B及びメモリ制御部133Cを含む。
【0020】
また、エントリ更新制御部133は、制御データ群32をエントリ保持回路12に供給している。エントリ保持回路12は、処理サイクルごとに、エントリ更新制御部133から供給された制御データ群32に従って動作する。
【0021】
送受信部131は、入出力装置14からアクセス要求RQを受信し解析する機能を有する。送受信部131は、アクセス要求RQの解析結果をエントリ更新制御部133に出力する。エントリ更新制御部133は、その解析結果に応じた処理を実行し、その処理結果RSを送受信部131を介して入出力装置14に返す。アクセス要求RQとしては、たとえば、エントリ登録指示、エントリ削除指示、有効エントリ数の通知指示、データ検索要求及びデータ読み出し指示が挙げられる。これらアクセス要求RQのうち、データ検索要求、データ読み出し指示及び有効エントリ数の通知指示は、データ記憶領域M0〜Mn−1におけるエントリの変更を伴わないものである。
【0022】
データ読み出し指示を含むアクセス要求RQを受信したとき、送受信部131は、エントリデータ受信部132から供給されるエントリデータ群31から全ての実体データを抽出し、これら実体データを入出力装置14に送信する機能を有する。
【0023】
送受信部131が検索キーデータ付きのデータ検索要求を含むアクセス要求RQを受信したときは、データ検索部133Aは、データ検索要求に応じて、エントリデータ受信部132から供給されるエントリデータ群31のうち有効値を持つ有効フラグを含むエントリデータの中から検索キーデータと一致する実体データを検索し、その検索結果を送受信部131を介して入出力装置14に返す。たとえば、エントリ保持回路12が上記MACアドレステーブルを保持する場合、データ検索部133Aは、MACアドレスを検索キーデータとして使用し、対応する通信ポート番号を検索結果として返すことができる。
【0024】
有効エントリ数の通知指示を含むアクセス要求RQが受信されたときは、データ検索部133Aは、通知指示に応じて、エントリデータ受信部132から供給されるエントリデータ群31のうち有効値を持つ有効フラグを含むエントリデータを計数し、その計数結果、すなわちエントリ保持回路12における有効なエントリの数を送受信部131を介して入出力装置14に通知する。
【0025】
エントリ登録指示やエントリ削除指示といったエントリの変更を伴う指示(以下、エントリ操作指示と呼ぶ。)を含むアクセス要求RQを送受信部131が受信されたときは、メモリ制御部133Cがそのエントリ操作指示に応じた処理を実行するエントリ操作機能を有する。
【0026】
エントリ登録指示を含むアクセス要求RQが受信されたとき、メモリ制御部133Cは、エントリ登録指示に応じて、最上位のデータ記憶領域Mn−1に無効フラグが保持されているか否かを判定する。領域検出部133Bは、エントリデータ受信部132から供給されるエントリデータ群31に基づいて、データ記憶領域M0〜Mn−1の中から無効フラグを有する空き領域Me(eは1〜n−1の整数)を検出し、その検出結果をメモリ制御部133Cに与える機能を有する。メモリ制御部133Cは、領域検出部133Bによる検出結果から最上位のデータ記憶領域Mn−1に無効フラグが保持されているか否かを判定することができる。
【0027】
データ記憶領域Mn−1が無効フラグを保持する空き領域であると判定した場合、メモリ制御部133Cは、有効値を持つ有効フラグと登録すべき実体データとを含むエントリデータを空き領域Mn−1に書き込む。これによりエントリの登録が完了する。一方、データ記憶領域Mn−1に無効フラグが保持されていない場合、言い換えれば、データ記憶領域Mn−1が有効値を持つ有効フラグを含むエントリデータを保持する場合は、メモリ制御部133Cは、先ず、最下位のデータ記憶領域M0に無効フラグを書き込む。その後、後述するシフト操作の実行によりデータ記憶領域M1〜Mn−1のエントリデータはそれぞれ1つ下位のデータ記憶領域M0〜Mn−2にシフトされるので、このシフト操作の実行後、メモリ制御部133Cは、有効値を持つ有効フラグと登録すべき実体データとを含むエントリデータを最上位のデータ記憶領域Mn−1に書き込む。これによりエントリの登録が完了する。
【0028】
エントリ削除指示を含むアクセス要求RQが受信されたときは、データ検索部133Aが、このエントリ削除指示に応じて、エントリデータ受信部132から供給されるエントリデータ群31のうち有効値を持つ有効フラグを含むエントリデータの中から特定データと一致する削除すべき実体データを検索する。データ検索部133Aは、実体データを探し出すことができなかったときは、その検索結果を送受信部131を介して入出力装置14に通知する。一方、実体データが探し出されたときは、メモリ制御部133Cが、その一致する実体データを保持するデータ記憶領域Md(dは0〜n−1の整数)に無効フラグを書き込むことでデータ記憶領域Mdのエントリを無効化する。そして、メモリ制御部133Cは、その結果を送受信部131を介して入出力装置14に通知する。この空き領域Mdには、後述するシフト操作により1つ上位のデータ記憶領域Md+1に保持されているエントリデータがシフトさせられる。
【0029】
全てのエントリの削除指示(一斉削除指示)を含むアクセス要求RQが受信されたときは、メモリ制御部133Cは、1処理サイクル内に、データ記憶領域M0〜Mn−1の全てに無効フラグを書き込むことで全てのエントリを無効化し、一斉削除が完了した旨を送受信部131を介して入出力装置14に通知する。
【0030】
また、メモリ制御部133Cは、データ記憶領域M0〜Mn−1において有効値を持つ有効フラグを含むエントリデータを並び替えて(再配置して)有効なエントリを連続的に詰めて配置するエントリ並べ替え機能(エントリ再配置機能)を有する。具体的には、データ記憶領域M0〜Mn−1に対してエントリデータの書き込みが実行されない処理サイクル期間内に、メモリ制御部133Cは、空き領域Mdの順位よりも上位のデータ記憶領域Md+1〜Mn−1に保持されているエントリデータを、1つ下位のデータ記憶領域Md〜Mn−2にシフトさせるシフト操作を実行し、最上位のデータ記憶領域Mn−1に無効フラグを書き込む。シフト操作は、1処理サイクルで実行される。たとえば、識別子#(1)のデータ記憶領域M1が空き領域である場合、メモリ制御部133Cは、空き領域M1よりも上位のデータ記憶領域M2〜Mn−1に保持されるエントリデータを、それぞれ、1つ下位のデータ記憶領域M1〜Mn−2にシフトさせる。あるいは、識別子#(n−2)のデータ記憶領域Mn−2が空き領域である場合は、メモリ制御部133Cは、空き領域Mn−2よりも上位のデータ記憶領域Mn−1に保持されているエントリデータを、1つ下位のデータ記憶領域Mn−2にシフトさせる。
【0031】
このようなエントリ並べ替え機能により、データ記憶領域M0〜Mn−1において有効値を持つ有効フラグを含むエントリデータを連続的に配置する(並び替える)ことができ、有効値を持つ有効フラグを保持するデータ記憶領域間に空き領域が介在すること(空き領域の断片化)を解消することができる。また、最上位のデータ記憶領域Mn−1を含む上位のデータ記憶領域群をできるだけ空き領域にすることができる。上記のエントリ登録指示に応じて新規エントリを最上位のデータ記憶領域Mn−1に登録する際、最上位のデータ記憶領域Mn−1が空き領域であれば、シフト操作によりデータ記憶領域Mn−1が空き領域になるのを待つことなく、このデータ記憶領域Mn−1に実体データを書き込むことができる。
【0032】
また、エントリ並べ替え機能により、有効値を持つ有効フラグを含むエントリデータが連続的に配置されるようになるので、データ検索指示や特定エントリの削除指示があったときに検索範囲を限定することができる。したがって、データ検索処理とエントリ削除処理の高速化を実現することができる。
【0033】
次に、図4を参照しつつ、エントリ保持回路12の好適な構成について説明する。エントリ保持回路12は、n段のレジスタ回路400,…,40n−3,40n−2,40n−1を有するシフトレジスタ回路である。各レジスタ回路40j(jは0〜n−1のうちの任意の整数)は、図4に示されるように、たとえばクロック信号に同期して動作するフリップ・フロップなどのレジスタ50jと、エントリセレクタ60jと、自エントリデータ制御回路70jとを有する。レジスタ500,…,50n−1はそれぞれ図2のデータ記憶領域M0,…,Mn−2,Mn−1を構成する記憶素子である。
【0034】
エントリ制御回路13は、制御データ群32をエントリ保持回路12に供給する。制御データ群32は、エントリセレクタ600,…,60n−2,60n−1にそれぞれ供給される選択制御信号SEL0,…,SELn−2,SELn−1と、自エントリデータ制御回路700,…,70n−2,70n−1にそれぞれ供給される制御信号C0,…,Cn−2,Cn−1とからなる。各エントリセレクタ60jは、選択制御信号SELjの値に応じて3個の入力端子のいずれか1つに入力したデータを選択し、このデータをレジスタ50jの入力端子に出力する機能を有する。
【0035】
最上位のレジスタ回路40n−1では、エントリセレクタ60n−1の3個の入力端子には、エントリ制御回路13から供給された登録データ(実体データ)ODnと、自エントリデータ制御回路70n−1の出力データADn−1と、レジスタ50n−1のフィードバック出力ODn−1とが入力される。エントリセレクタ60n−1がレジスタ50n−1のフィードバック出力ODn−1を選択したとき、レジスタ50n−1の出力端子と入力端子との間にフィードバックループが形成され、レジスタ50n−1は同一のビット値(エントリデータ)を保持し続ける。エントリセレクタ60n−1が自エントリデータ制御回路70n−1の出力データADn−1を選択したときは、レジスタ50n−1は、クロック信号のパルスエッジに応じて、自エントリデータ制御回路70n−1の出力データADn−1をラッチ(保持)する。そして、エントリセレクタ60n−1がエントリ制御回路13から供給されたデータODnを選択したときは、レジスタ50n−1は、クロック信号のパルスエッジに応じてデータODnをラッチする。
【0036】
自エントリデータ制御回路70n−1は、制御信号Cn−1に応じて、レジスタ50n−1に保持されているエントリデータの一部または全てを変更するための置換データADn−1を生成する機能を有する。レジスタ50n−1の出力データODn−1はフィードバックして自エントリデータ制御回路70n−1にも入力されている。自エントリデータ制御回路70n−1は、制御信号Cn−1の値に応じて有効値を持つ有効フラグ及び無効フラグのうちのいずれか一方の制御フラグと、フィードバック出力ODn−1に含まれる実体データとを含むエントリデータADn−1を構成し、このエントリデータADn−1をエントリセレクタ60n−1に出力することができる。
【0037】
一方、他のレジスタ回路40k(kは0〜n−2のいずれか)では、エントリセレクタ60kの3個の入力端子には、前段のレジスタ50k+1の出力データODk+1と、自エントリデータ制御回路70kの出力データADkと、レジスタ50kの出力データODkとが入力される。エントリセレクタ60kがレジスタ50kのフィードバック出力ODkを選択したとき、レジスタ50kの出力端子と入力端子との間にフィードバックループが形成され、レジスタ50kは同一のビット値(エントリデータ)を保持し続ける。エントリセレクタ60kが自エントリデータ制御回路70kの出力データADkを選択したときは、レジスタ50kは、クロック信号のパルスエッジに応じて、自エントリデータ制御回路70kの出力データADkをラッチ(保持)する。そして、エントリセレクタ60kが前段のレジスタ50k+1の出力データODk+1を選択したときは、レジスタ50kは、クロック信号のパルスエッジに応じてデータODk+1をラッチする。
【0038】
自エントリデータ制御回路70kは、制御信号Ckに応じて、レジスタ50kに保持されているエントリデータの一部または全部を変更するための置換データADkを生成する機能を有する。レジスタ50kの出力データODkはフィードバックして自エントリデータ制御回路70kにも入力されている。自エントリデータ制御回路70kは、制御信号Ckの値に応じて有効値を持つ有効フラグ及び無効フラグのうちのいずれか一方の制御フラグと、フィードバック出力ODkに含まれる実体データとを含むエントリデータADkを構成し、このエントリデータADkをエントリセレクタ60n−1に出力することができる。
【0039】
レジスタ500〜50n−1は、出力データOD0〜ODn−1からなるエントリデータ群31をエントリ制御回路13に並列に出力しているので、エントリ制御回路13は、レジスタ500〜50n−1に保持されている全てのエントリデータを一度に取得することができる。
【0040】
エントリ制御回路13は、制御データ群32を供給することでエントリ保持回路12の動作を制御することができる。エントリ登録指示やエントリ削除指示といったエントリ操作指示に応じた処理を実行しない処理サイクル期間には、メモリ制御部133Cは、全てのエントリセレクタ600〜60n−1にレジスタ500〜50n−1のフィードバック出力OD0〜ODn−1を選択させる選択制御信号SEL0〜SELn−1を出力する。これによりレジスタ500〜50n−1は同一のエントリデータ群を保持し続ける。
【0041】
エントリデータを無効化してエントリ保持回路12からエントリを削除するときは、メモリ制御部133Cは、無効化対象のエントリデータを保持するレジスタ回路40dのエントリセレクタ60dに自エントリデータ制御回路70dの出力データADdを選択させる選択制御信号SELdを供給し、自エントリデータ制御回路70dに無効フラグを含む置換データADdを生成させる制御信号Cdを供給する。これによりレジスタ50dは無効フラグを保持する。
【0042】
エントリ登録指示に応じてエントリデータをエントリ保持回路12に記憶させるときは、メモリ制御部133Cは、最上位のエントリセレクタ60n−1に置換データODnを選択させる選択制御信号SELn−1を供給し、エントリセレクタ60n−1に新たなエントリデータを置換データODnとして供給する。レジスタ50n−1は、クロック信号のパルスエッジに応じて、エントリセレクタ60n−1を介して入力されたエントリデータODnをラッチ(保持)する。これにより、最上位のレジスタ50n−1にエントリデータが登録される。
【0043】
データ記憶領域M0〜Mn−1内に空き領域Meが存在するとき、エントリ操作指示に応じたエントリデータの書き込みが実行されない処理サイクル期間内に、有効値を持つ有効フラグを含むエントリデータが再配置される。具体的には、メモリ制御部133Cは、空き領域Meを有するレジスタ回路40eの順位よりも上位のレジスタ回路40e+1〜40n−1内のレジスタ50e+1〜50n−1の出力データODe+1〜ODn−1を選択させる選択制御信号SELe〜SELn−2をエントリセレクタ60e〜60n−2に供給する。さらに、メモリ制御部133Cは、最上位のレジスタ回路40n−1のエントリセレクタ60n−1に自エントリデータ制御回路70n−1の出力データADn−1を選択させる選択制御信号SELn−1を供給し、自エントリデータ制御回路70n−1に無効フラグを含む置換データADn−1を生成させる制御信号Cn−1を供給する。これによりレジスタ50e〜50n−2は、それぞれ、前段のレジスタ50e+1〜50n−1の出力データODe+1〜ODn−1をラッチ(保持)するシフト動作を実行する。また、最上位のレジスタ50n−1に無効フラグが保持される。
【0044】
次に、図5〜図9を参照しつつ、上記構成を有する実施の形態1のデータ記憶装置11の動作を説明する。
【0045】
図5は、入出力装置14からのエントリ操作指示がない場合に実行されるエントリ並べ替え処理の手順を概略的に示すフローチャートであり、図6は、エントリ並べ替え処理が実行されたときのデータ記憶領域の状態遷移の様子を示す図である。また、図7は、エントリ削除指示に応じて実行されるエントリ削除処理の手順を概略的に示すフローチャートであり、図8及び図9は、エントリ登録指示に応じて実行されるエントリ登録処理の手順を概略的に示すフローチャートである。なお、データ検索要求、データ読み出し指示及び有効エントリ数の通知指示といったエントリの変更を伴わないアクセス要求RQに対する処理は、エントリ保持回路12がシフトレジスタ回路の構成を有するので、常時実行可能な処理である。これらの処理は、エントリ並べ替え処理、エントリ削除処理及びエントリ登録処理が実行される処理サイクル期間中でも、並行して実行することができる。
【0046】
最初に、図5を参照しつつ、エントリ操作指示がない場合に実行されるエントリ並べ替え処理について説明する。エントリ更新制御部133のメモリ制御部133Cは、エントリデータ受信部132から供給されるエントリデータ群31に基づいてエントリ保持回路12の動作状態を把握し、適切な処理サイクル期間にエントリ並べ替え処理を開始する。
【0047】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS101)。次に、メモリ制御部133Cは、識別子#(i)を有するレジスタ回路40iに保持されているエントリデータ(以下、識別子#(i)のエントリデータと呼ぶ。)が無効であるか否かを判定する(ステップS103)。識別子#(i)のエントリデータが有効であると判定したとき(ステップS103のNO)、メモリ制御部133Cは、変数iがn−2に達したかどうかを判定する(ステップS115)。変数iがn−2に達したとき(ステップS115のYES)、エントリ並べ替え処理は終了する。一方、変数iがn−2に達していないとき(ステップS115のNO)、メモリ制御部133Cは、変数iを1だけインクリメントし(ステップS117)、ステップS103に手順を戻す。
【0048】
最下位のエントリデータから上位のエントリデータに向かって順番に無効か否かの判定(ステップS103)を実行した結果、無効フラグを含む無効なエントリデータが存在していたとき(ステップS103のYES)、メモリ制御部133Cは、変数jに変数iの値を設定する(ステップS105)。次いで、メモリ制御部133Cは、識別子#(j)のエントリに識別子#(j+1)のエントリデータをシフトさせる制御を実行する(ステップS107)。具体的には、メモリ制御部133Cは、識別子#(j)を有するレジスタ回路40jのエントリセレクタ60jに、識別子#(j+1)を有する前段レジスタ回路40j+1の出力データODj+1を選択させる選択制御信号SELjを供給する。次いで、変数jを1だけインクリメントする(ステップS109)。その後、メモリ制御部133Cは、変数jが最上位のレジスタ回路40n−1の識別子番号n−1に達したか否かを判定する(ステップS111)。変数jがn−1に達していなければ(ステップS111のNO)、処理手順はステップS107に戻る。このようにステップS111で変数jがn−1に達するとの判定(ステップS111のYES)がなされるまで、上記ステップS107,S109の処理が繰り返し実行される。この結果、レジスタ50i〜50n−2は、それぞれ、前段のレジスタ50i+1〜50n−1の出力データODi+1〜ODn−1をラッチ(保持)するシフト動作を実行する。
【0049】
シフト動作の実行後(ステップS111のYES)、メモリ制御部133Cは、識別子#(n−1)の最上位エントリを無効化する(ステップS113)。具体的には、メモリ制御部133Cは、最上位のレジスタ回路40n−1のエントリセレクタ60n−1に自エントリデータ制御回路70n−1の出力データADn−1を選択させる選択制御信号SELn−1を供給し、自エントリデータ制御回路70n−1に無効フラグを含む置換データADn−1を生成させる制御信号Cn−1を供給する。これによりレジスタ50n−1に無効フラグが保持される。その後、ステップS115で変数iがn−2に達するとの判定(ステップS115のYES)がなされるまで、ステップS117以後の処理が実行される。
【0050】
図6(A)〜(C)は、上記エントリ並べ替え処理が実行されたときに、最大エントリ数nが7の場合のデータ記憶領域M0〜M6の状態遷移の様子を示す図である。図6(A)に示すように、最初の状態では、識別子#(1),#(2),#(4)のエントリが有効であり、その他のエントリは無効であるとする。
【0051】
上記エントリ並べ替え処理の実行により、先ず、識別子#(i=0)のエントリデータが無効であると判定される(ステップS103のYES)。次いで、識別子#(0)のエントリに識別子#(1)のエントリデータをシフトさせ、識別子#(1)のエントリに識別子#(2)のエントリデータをシフトさせ、識別子#(2)のエントリに識別子#(3)のエントリデータをシフトさせ、識別子#(3)のエントリに識別子#(4)のエントリデータをシフトさせ、識別子#(4)のエントリに識別子#(5)のエントリデータをシフトさせ、識別子#(5)のエントリに識別子#(6)のエントリデータをシフトさせるというシフト操作が実行される(ステップS105〜S111)。その後、識別子#(6)のエントリの無効化処理が実行される(ステップS113)。これにより、図6(B)に示されるように識別子#(0),#(1),#(3)のエントリに有効なエントリデータがシフトする。以上のシフト操作及びエントリの無効化処理は、最初の処理サイクル期間内に実行される。
【0052】
次の処理サイクル期間では、識別子#(i=2)のエントリデータが無効であると判定される(ステップS103のYES)。次いで、識別子#(2)のエントリに識別子#(3)のエントリデータをシフトさせ、識別子#(3)のエントリに識別子#(4)のエントリデータをシフトさせ、識別子#(4)のエントリに識別子#(5)のエントリデータをシフトさせ、識別子#(5)のエントリに識別子#(6)のエントリデータをシフトさせるというシフト操作が実行される(ステップS105〜S111)。その後、識別子#(6)のエントリの無効化処理が実行される(ステップS113)。この結果、図6(C)に示されるように識別子#(0),#(1),#(2)のエントリに有効なエントリデータがシフトする。
【0053】
次の処理サイクル期間では、識別子#(i=3)のエントリデータが無効であると判定される(ステップS103のYES)。次いで、識別子#(3)のエントリに識別子#(4)のエントリデータをシフトさせ、識別子#(4)のエントリに識別子#(5)のエントリデータをシフトさせ、識別子#(5)のエントリに識別子#(6)のエントリデータをシフトさせるというシフト操作が実行される(ステップS105〜S111)。その後、識別子#(6)のエントリの無効化処理が実行される(ステップS113)。
【0054】
メモリ制御部133Cは、上記エントリ並べ替え処理を、エントリデータの書き込みを実行しない処理サイクル期間に常に実行することで、図6(C)に示すように有効なエントリが詰まって配置された状態を実現することができる。図6(A)〜(C)に示したように、エントリデータの並び替えが完了するまで複数の処理サイクルを要することになるが、図4に示したように、レジスタ500〜50n−1はエントリデータ群31をエントリ制御回路13に供給しているので、並び替え処理を中断することなく、エントリデータ群31を読み出すことができる。
【0055】
次に、図7を参照しつつ、特定データと一致する実体データを含むエントリデータを無効化するためのエントリ削除処理について説明する。
【0056】
エントリ保持回路12は、シフトレジスタ回路の構成を有し、エントリデータをシフトさせるので、ある処理サイクル期間に識別子#(i)のデータ記憶領域Miに存在していたエントリデータが、その次の処理サイクル期間に同じ識別子#(i)のデータ記憶領域Miに存在している保証はない。そのため、本実施の形態では、特定データを検索キーとした検索を実行して削除対象となるエントリを特定する方法が採用される。入出力装置14からエントリ削除指示を含むアクセス要求RQが受信されると、メモリ制御部133Cは、このエントリ削除指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間にエントリ削除処理を開始する。
【0057】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS201)。次に、メモリ制御部133Cは、レジスタ回路40iに保持されている識別子#(i)のエントリデータが、特定データと一致する削除すべき実体データを含むか否かを判定する(ステップS203)。エントリデータが削除すべき実体データを含まない場合(ステップS203のNO)、メモリ制御部133Cは、変数iが最上位のエントリを指す識別子番号n−1に達したか否かを判定し(ステップS209)、変数iがn−1に達していなければ(ステップS209のNO)、変数iを1だけインクリメントして(ステップS213)、処理手順をステップS203に戻す。全てのエントリについて削除すべき実体データを含むエントリデータを探し出すことができなかったときは、変数iはn−1に達する(ステップS209のYES)。このとき、メモリ制御部133Cは、送受信部131を介して入出力装置14に削除不能の旨を通知し(ステップS211)、エントリ削除処理を終了する。
【0058】
一方、識別子#(i)のエントリデータが削除すべき実体データを含むと判定された場合(ステップS203のYES)、メモリ制御部133Cは、識別子#(i)のエントリを無効化する(ステップS205)。具体的には、データ検索部133Aは、削除すべき実体データを保持するデータ記憶領域Miに無効フラグを書き込む。その後、メモリ制御部133Cは、送受信部131を介して入出力装置14に削除完了の旨を通知し(ステップS207)、エントリ削除処理を終了する。
【0059】
なお、上記エントリ削除処理は、エントリ保持回路12において同一の実体データが重複して記憶されていない場合に適用されるものである。そのため、ステップS203において識別子#(i)のエントリデータが削除すべき実体データを含むと判定されれば、識別子#(i+1)のエントリに削除すべき実体データが存在しないことが保証されている。同一の実体データの重複が許可されている場合には、ステップS205の実行後、メモリ制御部133Cは、変数iをインクリメントしてステップS203を実行する手順を採用することができる。
【0060】
次に、図8を参照しつつ、エントリ保持回路12に実体データを登録するためのエントリ登録処理について説明する。メモリ制御部133Cは、入出力装置14からのエントリ登録指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間でエントリ登録処理を開始する。
【0061】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS301)。次に、メモリ制御部133Cは、レジスタ回路40iに保持されている識別子#(i)のエントリデータが、登録すべき特定データと一致する実体データを含むか否かを判定する(ステップS303)。エントリデータが当該実体データを含まない場合(ステップS303のNO)、メモリ制御部133Cは、変数iが最上位のエントリを指す識別子番号n−1に達したか否かを判定し(ステップS321)、変数iがn−1に達していなければ(ステップS321のNO)、変数iを1だけインクリメントして(ステップS323)、処理手順をステップS303に戻す。
【0062】
一方、識別子#(i)のエントリデータが、登録すべき特定データと一致する実体データを含むと判定された場合(ステップS303のYES)、メモリ制御部133Cは、識別子#(i)のエントリを無効化する(ステップS305)。具体的には、データ検索部133Aは、当該実体データを保持するデータ記憶領域Miに無効フラグを書き込む。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)のエントリが無効化されるまで待機する(ステップS307のNO)。
【0063】
識別子#(n−1)のエントリの無効化が完了したとき(ステップS307のYES)、メモリ制御部133Cは、識別子#(n−1)のエントリ(空きエントリ)への特定データの書き込み制御を行う(ステップS309)。具体的には、メモリ制御部133Cは、最上位のエントリセレクタ60n−1に置換データODnを選択させる選択制御信号SELn−1を供給し、エントリセレクタ60n−1に特定データを含む新たなエントリデータを置換データODnとして供給する。これによりレジスタ50n−1は、エントリセレクタ60n−1を介して入力されたエントリデータODnをラッチ(保持)する。その後、メモリ制御部133Cは、送受信部131を介して入出力装置14に更新完了の旨を通知し(ステップS311)、エントリ登録処理を終了する。
【0064】
一方、全てのエントリについて、登録すべき特定データと一致する実体データを含むエントリデータを探し出すことができなかったときは、変数iはn−1に達する(ステップS303のNO及びステップS321のYES)。このとき、メモリ制御部133Cは、エントリデータ受信部132から供給されるエントリデータ群31に基づいて、識別子#(n−1)の最上位のエントリが無効か否かを判定する(ステップS325)。最上位のエントリが無効である場合(ステップS325のYES)、メモリ制御部133Cは、識別子#(n−1)のエントリへの特定データの書き込み制御を行う(ステップS331)。その後、メモリ制御部133Cは、送受信部131を介して入出力装置14に登録完了の旨を通知し(ステップS333)、エントリ登録処理を終了する。
【0065】
上記ステップS325において最上位のエントリが無効ではない場合(ステップS325のNO)、メモリ制御部133Cは、識別子#(0)の最下位のエントリを無効化する(ステップS327)。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)のエントリが無効化されるまで待機する(ステップS329のNO)。識別子#(n−1)のエントリの無効化が完了したとき(ステップS329のYES)、メモリ制御部133Cは、ステップS331,S333を順次実行し、エントリ登録処理を終了する。
【0066】
上記の図8のエントリ登録処理は、エントリ保持回路12に同一の実体データが重複して記憶されることを許可しない場合の処理である。図9は、エントリ保持回路12において同一の実体データが重複することを許可する場合のエントリ登録処理の手順を概略的に示すフローチャートである。図9のフローチャートは、図8のステップS303〜311が存在しない点を除いて図8のフローチャートと同じである。図8のステップS303の判定処理が行われないため、特定データは常に登録される。
【0067】
なお、図2(C)に示したようにデータ領域21が、複数の実体データを格納する複数の領域に機能的に分割されている場合、メモリ制御部133Cは、これら複数の実体データのうちの一部を書き換えることもできる。具体的には、メモリ制御部133Cは、レジスタ回路40iのエントリセレクタ60iに自エントリデータ制御回路70iの出力データADiを選択させる選択制御信号SELiを供給し、自エントリデータ制御回路70iにフィードバック出力ODiの中の複数の実体データの一部を別の実体データに置換させる制御信号Ciを供給する。ここで、メモリ制御部133Cは、当該別の実体データを制御信号Ciに含めて自エントリデータ制御回路70iに供給することができる。たとえば、上記したように入出力装置14が集線装置であり、MACアドレスと通信ポート番号との対応関係を登録するアドレス検索回路としてエントリ保持回路12を使用する場合、メモリ制御部133Cは、MACアドレスに対応する通信ポート番号を書き換えることができる。また、メモリ制御部133Cは、必ず、エントリ保持回路12に保持されているエントリデータ群31の内容を確認することができるので、特定の対応関係を有する実体データの組み合わせをエントリ保持回路12に保持させないようにすることができる。たとえば、エントリ保持回路12において、1つのMACアドレスが関連付けられた通信ポート番号が複数個存在しないように制御することができる。
【0068】
以上に説明したように、実施の形態1のデータ記憶装置11では、エントリ制御回路13のメモリ制御部133Cは、データ記憶領域M0〜Mn−1に対してエントリデータの書き込みを実行しない処理サイクル期間に、データ記憶領域M0〜Mn−1の中の空き領域Meの順位よりも上位のデータ記憶領域Me+1〜Mn−1に保持されているエントリデータを、下位のデータ記憶領域にシフトさせるシフト操作を行い、最上位のデータ記憶領域Mn−1に無効フラグを書き込む。これにより、有効値を持つ有効フラグを含むエントリデータを連続的に配置することができ、最上位のデータ記憶領域Mn−1を含む上位のデータ記憶領域を空き領域にすることができる。よって、上記特許文献2(特許第4369524号明細書)に開示されている技術のようにメモリ管理制御のために別の記憶領域を確保する必要がない。また、メモリ制御部133Cは有効なエントリを連続的に再配置して上位の空き領域を形成するので、データ検索処理、エントリ登録処理(図8及び図9)及びエントリ削除処理(図7)の処理速度を高速化することができる。データ記憶装置11を実装する際には、エントリデータの登録や削除(無効化)といった操作と、エントリデータに対するシフト操作とが競合しないようにシステムを容易に設計することができ、しかも、LRUアルゴリズムなどのメモリ管理アルゴリズムに基づく制御に必要な記憶領域を別に確保せずに済むという利点がある。
【0069】
また、エントリ保持回路12がシフトレジスタ回路の構成を有しているので、エントリ制御回路13は、メモリ制御部133Cによるエントリ保持回路12に対する操作に影響を与えることなく、レジスタ500〜50n−1の並列出力(エントリデータ群31)から所望の実体データを取得する(読み出す)ことができる。また、メモリ制御部133Cは、レジスタ500〜50n−1の並列出力に基づいて、エントリ保持回路12の動作状態及び記憶内容を常時監視しながら最適な制御を行うこともできる。
【0070】
したがって、実施の形態1のデータ記憶装置11は、メモリ管理アルゴリズムに基づく制御を少ないメモリ消費量で効率良く実行することができる。特に、LRUアルゴリズムに基づく完全な制御を少ないメモリ消費量で効率良く実行することが可能である。
【0071】
実施の形態2.
次に、本発明に係る実施の形態2について説明する。実施の形態2のデータ記憶装置の構成は、動作モードが異なる点を除いて、実施の形態1のデータ記憶装置11の構成と同一である。実施の形態1については、エントリ保持回路12におけるデータ記憶領域Miのフラグ領域22が単一の制御フラグ(有効フラグ)を格納する場合の動作を説明した。本実施の形態では、データ記憶領域Miのフラグ領域22は、図10(A),(B)に示されるように2つの領域22A,22Bに機能的に分割されており、一方の領域22Aには上記有効フラグが格納され、他方の領域22Bには静的フラグが格納される。静的フラグは、データ記憶領域Miに保持されるエントリデータの無効化を許可する許可値(たとえば「0」の値)と、エントリデータの無効化を許可しないマスク値(たとえば「1」の値)とのうちのいずれか一方を有するものである。
【0072】
エントリ更新制御部133のメモリ制御部133Cは、上記実施の形態1に関して説明したエントリ登録処理やエントリ削除処理の際に、マスク値を持つ静的フラグを保持するデータ記憶領域Mm(mは0〜n−1のいずれかの整数)を検出した場合には、そのデータ記憶領域Mmに無効フラグを書き込まない、言い換えれば、データ記憶領域Mmにおける登録済みのエントリを無効化しない機能を有する。これにより、データ記憶領域M0〜Mn−1のフラグ領域22に要する記憶容量が増加するものの、より柔軟にエントリデータの登録や削除(無効化)などの操作を行うことが可能となる。
【0073】
静的フラグは、新規の実体データの登録の際に設定される。実体データと無効フラグと静的フラグとを含むエントリデータがエントリ保持回路12に登録された後、メモリ制御部133Cは、静的フラグの値に基づいて、登録済みのエントリデータに対する削除操作を行うのか否かを決めることができる。このため、メモリ管理アルゴリズムに基づく制御に関わらず、変更されないエントリデータをエントリ保持回路12に記憶させることができる。
【0074】
以下、図11〜図13を参照しつつ、実施の形態2のデータ記憶装置11の動作を説明する。図11は、実施の形態2に係るエントリ削除処理の手順を概略的に示すフローチャートである。図11のフローチャートは、ステップS204,S214を除いて、図7のフローチャートと同じ手順を有する。また、図12は、実施の形態2に係るエントリ登録処理の手順を概略的に示すフローチャートであり、図13は、図12のエントリ検索処理(ステップS326)の手順を示すフローチャートである。図13のフローチャートは接続子C1を介して図12のフローチャートと接続されている。また、図12のフローチャートは、ステップS304,S326,S328,S335を除いて、図8のフローチャートと同じ手順を有する。
【0075】
最初に、図11を参照しつつ、エントリ削除処理について説明する。入出力装置14からエントリ削除指示を含むアクセス要求RQが受信されると、メモリ制御部133Cは、このエントリ削除指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間にエントリ削除処理を開始する。
【0076】
ステップS203で識別子#(i)のエントリデータが削除すべき実体データを含むと判定された場合(ステップS203のYES)、メモリ制御部133Cは、識別子#(i)を有するレジスタ回路40iに保持されている静的フラグ(以下、識別子#(i)の静的フラグと呼ぶ。)が有意か否かを判定する(ステップS204)。静的フラグが有意である場合、すなわち、静的フラグがマスク値を有する場合(ステップS204のYES)、メモリ制御部133Cは、識別子#(i)のエントリの無効化(ステップS205)を実行せずに、静的フラグによる更新不能の旨を送受信部131を介して入出力装置14に通知し(ステップS214)、エントリ削除処理を終了する。一方、静的フラグが有意でない場合(ステップS204のNO)、メモリ制御部133Cは、ステップS205,S207を実行した後に、エントリ削除処理を終了する。
【0077】
ところで、メモリ制御部133Cは、静的フラグを参照せずにエントリ削除を実行する動作モードをも有する。具体的には、入出力装置14からエントリ強制削除指示を含むアクセス要求RQが受信されたとき、メモリ制御部133Cは、このエントリ強制削除指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に、静的フラグを参照するエントリ削除処理(図11)ではなく、図7のエントリ削除処理を実行する。これにより、状況に応じて、有意な静的フラグを含むエントリデータを強制的に無効化して空き領域を確保することができる。
【0078】
次に、図12及び図13を参照しつつ、特定データと一致する実体データを含むエントリデータを登録するためのエントリ登録処理について説明する。入出力装置14からエントリ登録指示を含むアクセス要求RQが受信されると、メモリ制御部133Cは、このエントリ登録指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に図12のエントリ登録処理を開始する。
【0079】
ステップS303で識別子#(i)のエントリデータが、登録すべき特定データと一致する実体データを含むと判定された場合(ステップS303のYES)、メモリ制御部133Cは、識別子#(i)を有するレジスタ回路40iに保持されている静的フラグが有意か否かを判定する(ステップS304)。静的フラグが有意である場合、すなわち、静的フラグがマスク値を有する場合(ステップS304のYES)、メモリ制御部133Cは、識別子#(i)のエントリの無効化(ステップS305)をせずに、静的フラグによる更新不能の旨を送受信部131を介して入出力装置14に通知し(ステップS335)、エントリ登録処理を終了する。
【0080】
一方、全識別子#(0)〜#(n−1)のエントリデータが、登録すべき特定データと一致する実体データを含まず、識別子#(n−1)のエントリが有効であると判定した場合(ステップS325のNO)、メモリ制御部133Cは、空き領域をつくるためにエントリ検索処理(ステップS326)を実行する。
【0081】
図13を参照すると、メモリ制御部133Cは、変数kにゼロ値を設定し(ステップS341)、識別子#(k)の静的フラグが有意か否かを判定する(ステップS342)。識別子#(k)の静的フラグが有意である場合(ステップS342のYES)、メモリ制御部133Cは、変数kが最上位のエントリを指す識別子番号n−1に達したか否かを判定し(ステップS343)、変数kがn−1に達していなければ(ステップS343のNO)、変数kを1だけインクリメントして(ステップS345)、手順をステップS342に戻す。
【0082】
図13のフローチャートにおいて全識別子#(0)〜#(n−1)の静的フラグが有意である場合は、変数kはn−1に達する(ステップS343のYES)。この場合、メモリ制御部133Cは、登録不能の旨を送受信部131を介して入出力装置14に通知し(ステップS347)、エントリ登録処理を終了する。なお、登録不能の旨の通知(ステップS347)に代えて、別の処理を行うことも可能である。
【0083】
ステップS342で識別子#(k)の静的フラグが有意ではないと判定した場合(ステップS342のNO)、メモリ制御部133Cは、図12のフローチャートに処理を戻す。次いで、メモリ制御部133Cは、識別子#(k)のエントリを無効化する(ステップS328)。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)のエントリが無効化されるまで待機する(ステップS329のNO)。識別子#(n−1)のエントリの無効化が完了したとき(ステップS329のYES)、メモリ制御部133Cは、ステップS331,S333を順次実行し、エントリ登録処理を終了する。
【0084】
ところで、メモリ制御部133Cは、静的フラグを参照せずにエントリ登録を実行する動作モードを有する。具体的には、入出力装置14からエントリ強制登録指示を含むアクセス要求RQが受信されたとき、メモリ制御部133Cは、このエントリ強制登録指示に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に、静的フラグを参照するエントリ登録処理(図12及び図13)ではなく、図8のエントリ登録処理を実行する。これにより、状況に応じて、静的フラグの値に関わりなくエントリ登録を強制的に行うことができる。
【0085】
以上に説明したように実施の形態2によれば、特定のエントリデータが変更されないようにすることができるので、エントリデータの登録や削除(無効化)などの操作の柔軟性を向上させることができる。
【0086】
なお、メモリ制御部133Cは、データ記憶領域M0〜Mn−1のうち有意な静的フラグを保持しないデータ記憶領域に無効フラグを書き込むことで、有意ではない静的フラグを含むエントリデータを一斉に削除する操作を簡易に組み込むこともできる。
【0087】
実施の形態3.
次に、本発明に係る実施の形態3について説明する。実施の形態3のデータ記憶装置の構成は、動作モードが異なる点を除いて、実施の形態1のデータ記憶装置11の構成と同一である。実施の形態1については、エントリ保持回路12におけるデータ記憶領域Miのフラグ領域22が単一の制御フラグ(有効フラグ)を格納する場合の動作を説明した。本実施の形態では、データ記憶領域Miのフラグ領域22は、図14(A),(B)に示されるように2つの領域22A,22Bに機能的に分割されており、一方の領域22Aには上記有効フラグが格納され、他方の領域22Bには削除フラグが格納される。削除フラグは、データ記憶領域Miに保持されているエントリデータの無効化が予定されていることを示す有効値(たとえば「1」の値)と、データ記憶領域Miに保持されているエントリデータの無効化が予定されていないことを示す無効値(たとえば「0」の値)とのうちのいずれか一方の値を有する。以下、有効値を持つ削除フラグを「有効な削除フラグ」と呼び、無効値を持つ削除フラグを「無効な削除フラグ」と呼ぶこととする。
【0088】
メモリ制御部133Cは、或る処理サイクル期間TAにデータ記憶領域M0〜Mn−1の全部または一部に有効な削除フラグを書き込み、所定の設定期間ΔT経過後の処理サイクル期間TBに、有効な削除フラグを保持する当該データ記憶領域の全てに無効フラグを書き込むことにより有効な削除フラグを含むエントリデータを一括して無効化(削除)する機能を有する。これにより、エントリ保持回路12に空き領域をまとめて確保することができる。ただし、メモリ制御部133Cは、設定期間ΔT内にエントリデータのいずれかを更新したとき、当該更新されたエントリデータを保持するデータ記憶領域には無効な削除フラグを書き込む。設定期間ΔT内に登録されたエントリデータはいずれも無効な削除フラグを含む。よって、設定期間ΔT経過後の処理サイクル期間TBでは、設定期間ΔT内に更新または登録されたエントリデータが無効化(削除)されない。
【0089】
また、メモリ制御部133Cは、外部の入出力装置14から削除フラグ付与指示を含むアクセス要求RQが受信されたとき、この削除フラグ付与指示に応じて、データ記憶領域M0〜Mn−1の全部または一部に有効な削除フラグを書き込み、所定の設定期間ΔT経過後の処理サイクル期間に、有効な削除フラグを保持する当該データ記憶領域の全てに無効フラグを書き込むことにより有効な削除フラグを含むエントリデータを一括して削除する機能をも有する。この場合も、メモリ制御部133Cは、設定期間ΔT内にエントリデータのいずれかを更新したとき、当該更新されたエントリデータを保持するデータ記憶領域には無効な削除フラグを書き込む。また、設定期間ΔT内に登録されたエントリデータはいずれも無効な削除フラグを含む。
【0090】
さらに、メモリ制御部133Cは、外部の入出力装置14からの空き領域確保指示に応じて、設定期間ΔTの経過を待つことなく、有効な削除フラグを保持する当該データ記憶領域の全てに無効フラグを書き込むことにより有効な削除フラグを含むエントリデータを一括して無効化(削除)する機能をも有する。
【0091】
上記機能を有することにより、データ記憶装置11は、エントリ保持回路12の空き領域をまとめて確保する制御を行うことができる。たとえば、エントリ保持回路12が有効なエントリで満杯となる前であっても、登録または更新されてから一定期間経過したエントリデータを自動的に抹消し、優先順位の低いエントリデータをエントリ保持回路12内に残さないような制御を行うことができる。
【0092】
次に、図15を参照しつつ、上記削除フラグを使用する実施の形態3のデータ記憶装置11の動作を説明する。図15は、実施の形態3に係るエントリ操作の制御処理の一例を概略的に示すフローチャートである。或る時刻に達したとき、あるいは、外部の入出力装置14から削除フラグ付与指示を含むアクセス要求RQが受信されたとき、これに応じて図15の制御処理が開始される。
【0093】
先ず、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS401)。次に、メモリ制御部133Cは、識別子#(i)のエントリに有効な削除フラグを設定する(ステップS403)。具体的には、メモリ制御部133Cは、識別子#(i)のレジスタ回路40i(図4)のエントリセレクタ60iに自エントリデータ制御回路70iの出力データADiを選択させる選択制御信号SELiを供給し、自エントリデータ制御回路70iに有効な削除フラグを含む置換データADiを生成させる制御信号Ciを供給する。有効な削除フラグの設定(ステップS403)の後、変数iが識別子番号n−1に達したか否かを判定する(ステップS405)。変数iがn−1に達していなければ(ステップS405のNO)、メモリ制御部133Cは、変数iを1だけインクリメントし(ステップS407)、手順をステップS403に戻す。
【0094】
変数iがn−1に達すると(ステップS405のYES)、メモリ制御部133Cは、設定期間ΔTが経過して設定時刻が到来するまで待機する(ステップS409のNO)。設定時刻が到来すると(ステップS409のYES)、メモリ制御部133Cは、変数iを初期化して変数iにゼロ値を設定する(ステップS411)。次に、メモリ制御部133Cは、識別子#(i)の削除フラグが有効であるか否かを判定する(ステップS413)。削除フラグが有効であれば(ステップS413のYES)、メモリ制御部133Cは、識別子#(i)のエントリを無効化する(ステップS415)。次いで、変数iがn−1に達したか否かを判定する(ステップS417)。一方、削除フラグが有効でなければ(ステップS413のNO)、メモリ制御部133Cは、エントリの無効化(ステップS415)をスキップして、変数iがn−1に達したか否かを判定する(ステップS417)。変数iがn−1に達していなければ(ステップS417のNO)、メモリ制御部133Cは、変数iを1だけインクリメントし(ステップS419)、手順をステップS413に戻す。その後、変数iがn−1に達すると(ステップS417のYES)、処理を終了する。
【0095】
以上の処理により、一定期間経過後、登録あるいは更新のなされていないエントリデータの削除を行うことができる。なお、上記ステップS401〜S407の処理は1処理サイクル期間内に完了し、ステップS411〜S417の処理も1処理サイクル期間内に完了する。
【0096】
ところで、上記制御処理においては、有効な削除フラグを含むエントリデータの無効化(ステップS415)を実行後、後に無効化すべきエントリに有効な削除フラグを設定する処理を実行する手順を追加してもよい。また、上記ステップS401〜S407の処理と、ステップS411〜S419の処理とは別々の処理として実行されてもよい。さらに、ステップS411〜S419の処理の実行後、ステップS401〜S407の処理が実行されてもよい。
【0097】
以上に説明したように、実施の形態3のデータ記憶装置を用いれば、エントリデータに要する記憶容量が増加するものの、一定期間内に登録または更新されなかったエントリデータに対して一括削除を行うことができる。また、LRUアルゴリズムなどのメモリ管理アルゴリズムに基づく制御を継続して実行することができる。
【0098】
実施の形態4.
次に、本発明に係る実施の形態4について説明する。実施の形態4のデータ記憶装置は、実施の形態1のデータ記憶装置11と同一の構成を有する。実施の形態4では、エントリ更新制御部133が、上記機能に加えて、エントリ保持回路12内のデータ記憶領域M0〜Mn−1に保持されているエントリデータのうち、直近に参照されたエントリデータを最上位のデータ記憶領域Mn−1に保持させる機能を有している。図16は、この機能を実現するためのエントリ更新処理の手順を概略的に示すフローチャートである。
【0099】
入出力装置14からデータ参照要求を含むアクセス要求RQが受信されると、データ検索部133Aは、このデータ参照要求に応じて、エントリデータ群31の中からデータ参照要求で指定される実体データを取得し、この実体データを送受信部131を介して入出力装置14に送信する。一方、メモリ制御部133Cは、データ参照要求に応じて、エントリ保持回路12の動作状態を把握し、適切な処理サイクル期間に図16のエントリ更新処理を開始する。
【0100】
まず、メモリ制御部133Cは、データ参照要求により参照されたエントリデータ(以下「参照データ」と呼ぶ。)を保持するデータ記憶領域Mpのアクセス順位が最上位であるか否かを判定する(ステップS501)。参照データが最上位のデータ記憶領域Mn−1に保持されていると判定したとき(ステップS501のYES)、メモリ制御部133Cは、エントリ更新処理を終了する。一方、参照データが最上位のデータ記憶領域Mn−1に保持されていないと判定したとき(ステップS501のNO)、メモリ制御部133Cは、識別子#(n−1)の最上位のエントリが無効か否かを判定する(ステップS503)。最上位のエントリが無効である場合(ステップS503のYES)、メモリ制御部133Cは、識別子#(n−1)のエントリへの参照データの書き込み制御を実行する(ステップS509)。具体的には、メモリ制御部133Cは、最上位のエントリセレクタ60n−1に置換データODnを選択させる選択制御信号SELn−1を供給し、エントリセレクタ60n−1に参照データを置換データODnとして供給する。これによりレジスタ50n−1は、エントリセレクタ60n−1を介して入力された参照データODnをラッチ(保持)する。
【0101】
一方、ステップS503で最上位のエントリが無効ではないと判定したとき(ステップS503のNO)、メモリ制御部133Cは、参照データを保持する識別子#(p)のエントリを無効化する(ステップS505)。その後、次の処理サイクル期間に上記エントリ並べ替え処理(図5)が実行されて識別子#(n−1)の最上位エントリが無効化されるまで待機する(ステップS507のNO)。最上位エントリの無効化が完了したとき(ステップS507のYES)、メモリ制御部133Cは、最上位エントリに対する参照データの書き込み制御を実行し(ステップS509)、エントリ更新処理を終了する。
【0102】
図17(A)〜(D)は、最大エントリ数が7の場合のデータ記憶領域M0〜M6に対して図16のエントリ更新処理が実行されたときの、データ記憶領域M0〜M6の状態遷移の様子を示す図である。図17(A)に示されるように、最初の状態では、全てのデータ記憶領域M0〜M6のエントリは有効であり、データ記憶領域M0〜M6はそれぞれエントリデータD0〜D6を保持している。データ参照要求に応じてエントリデータD3が参照されたとき、図17(B)に示されるように、参照データD3を保持する識別子#(3)のエントリが無効化される(図16のステップS505)。次の処理サイクル期間にシフト操作と最上位エントリの無効化処理とが実行される。これにより、図17(C)に示されるように、識別子#(3),#(4),#(5)のエントリにそれぞれエントリデータD4,D5,D6がシフトする。その後、図17(D)に示されるように、識別子#(6)のデータ記憶領域M6に参照データD3が書き込まれる(図16のステップS509)。
【0103】
以上に説明したように、実施の形態4によれば、直近に参照されたエントリデータを最上位のデータ記憶領域Mn−1に常に保持させることができる。したがって、直近に参照されたエントリデータの優先順位を最も高くするメモリ管理アルゴリズムを実現することができる。
【0104】
実施の形態1〜4の変形例.
以上、図面を参照して本発明に係る種々の実施の形態について述べたが、これらは本発明の例示であり、上記以外の様々な形態を採用することができる。たとえば、図18(A),(B)に示されるように、データ記憶領域Miのフラグ領域22を3つの領域22A,22B,22Cに機能的に分割し、領域22Aには上記有効フラグを格納し、領域22Bに上記静的フラグを格納し、領域22Cに上記削除フラグを格納してもよい。これにより、データ記憶装置11は、有効フラグ、静的フラグ及び削除フラグを用いた処理を実行することができる。具体的には、設定期間ΔT内に未登録あるいは未更新のエントリデータでも、有意な静的フラグを含むエントリデータは一括削除の対象外とすることができる。たとえば、識別子#(i)の静的フラグが有意であるか否かを判定し、静的フラグが有意であれば、図15のステップS403において有効な削除フラグを設定せず、静的フラグが有意でなければ、ステップS403において有効な削除フラグを設定してもよい。
【0105】
また、上記実施の形態1〜3においては、エントリ保持回路12はシフトレジスタ回路の構成を有しているが、これに限定されるものではない。エントリ保持回路12へのアクセス速度が高速であることが要求されないシステムにデータ記憶装置11が適用される場合は、エントリ保持回路12をRAM(ランダム・アクセス・メモリ)で構成してもよい。
【0106】
また、エントリ制御回路13の全部または一部の機能は、ハードウェアで実現されてもよいし、あるいは、CPU(Central Processing Unit)などのマイクロプロセッサにより実行されるコンピュータプログラムで実現されてもよい。当該機能がコンピュータプログラムで実現される場合、マイクロプロセッサは、コンピュータ読み取り可能な記録媒体からコンピュータプログラムをロードし実行することにより当該機能を実現することが可能である。
【符号の説明】
【0107】
1 データ処理システム、 11 データ記憶装置、 12 エントリ保持回路、 13 エントリ制御回路、 131 送受信部、 132 エントリデータ受信部、 133 エントリ更新制御部、 133A データ検索部、 133B 領域検出部、 133C メモリ制御部、 14 入出力装置、 M0〜Mn−1 データ記憶領域、 21 データ領域、 400〜40n−1 レジスタ回路、 500〜50n−1 レジスタ、 600〜60n−1 エントリセレクタ、 700〜70n−1 自エントリデータ制御回路。
【特許請求の範囲】
【請求項1】
所定のメモリ管理アルゴリズムに基づく優先順位を有する複数のエントリデータをそれぞれ保持し、該複数のエントリデータの優先順位に対応する順位がそれぞれ割り当てられた複数のデータ記憶領域を有するエントリ保持回路と、
外部装置からのアクセス要求に応じて、前記複数のデータ記憶領域に対して前記エントリデータの読み出し及び書き込みを実行するエントリ制御回路と、
を備え、
前記各データ記憶領域は、
当該各データ記憶領域に保持されるエントリデータを有効にする有効値及び当該各データ記憶領域に保持されるエントリデータを無効にする無効値のうちのいずれか一方の値を持つ有効フラグを格納する有効フラグ領域と、
実体データを格納するデータ領域と、
を有し、
前記エントリ制御回路は、
前記複数のデータ記憶領域の中から前記無効値を持つ有効フラグを保持する無効化データ領域を空き領域として検出する領域検出部と、
前記複数のデータ記憶領域に対して前記エントリデータの書き込みが実行されない間に、前記複数のデータ記憶領域のうち前記無効化データ領域の順位よりも上位のデータ記憶領域に保持されているエントリデータを、前記上位のデータ記憶領域よりも下位の当該データ記憶領域にシフトさせるシフト操作を行うとともに、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記無効値を持つ有効フラグを書き込むメモリ制御部と、
を含むことを特徴とするデータ記憶装置。
【請求項2】
請求項1に記載のデータ記憶装置であって、
前記エントリ保持回路は、
前記複数のデータ記憶領域をそれぞれ構成する複数段のレジスタと、
前記メモリ制御部から供給された選択制御信号に応じて、前記複数段のレジスタの中から指定されたレジスタにより出力された当該エントリデータを選択し、当該選択されたエントリデータを、前記指定されたレジスタよりも1つ後段の当該レジスタに出力する複数のセレクタと、
を含むシフトレジスタ回路であり、
前記メモリ制御部は、前記領域検出部により前記無効化データ領域が検出されたとき、前記複数段のレジスタのうち前記上位のデータ記憶領域を構成するレジスタを指定する制御信号を前記選択制御信号として前記複数のセレクタに供給する、
ことを特徴とするデータ記憶装置。
【請求項3】
請求項2に記載のデータ記憶装置であって、前記複数段のレジスタの並列出力が前記エントリ制御回路に供給されていることを特徴とするデータ記憶装置。
【請求項4】
請求項3に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記アクセス要求として検索キーデータとともに検索要求が受信されたとき、前記検索要求に応じて、前記複数段のレジスタの並列出力に基づいて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータの中から前記検索キーデータと一致する実体データを検索し、その検索結果を前記外部装置に返すデータ検索部
をさらに含むことを特徴とするデータ記憶装置。
【請求項5】
請求項4に記載のデータ記憶装置であって、
前記データ記憶領域は、互いに関連付けされた複数の前記実体データを含み、
前記データ検索部は、前記複数のデータ記憶領域を検索テーブルとして使用する、
ことを特徴とするデータ記憶装置。
【請求項6】
請求項3に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記アクセス要求として有効エントリ数通知指示が受信されたとき、前記有効エントリ数通知指示に応じて、前記複数段のレジスタの並列出力に基づいて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータを計数し、その計数結果を前記外部装置に通知するデータ検索部
をさらに含むことを特徴とするデータ記憶装置。
【請求項7】
請求項1から3のうちのいずれか1項に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記アクセス要求として特定データの削除指示が受信されたとき、前記削除指示に応じて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータの中から前記特定データと一致する削除すべき実体データを検索するデータ検索部
をさらに含み、
前記メモリ制御部は、前記データ検索部により前記削除すべき実体データが探し出されたとき、前記複数のデータ記憶領域のうち前記削除すべき実体データを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込み、その結果を前記外部装置に通知する、
ことを特徴とするデータ記憶装置。
【請求項8】
請求項7に記載のデータ記憶装置であって、前記データ検索部は、前記削除すべき実体データを探し出すことができなかったとき、その結果を前記外部装置に通知することを特徴とするデータ記憶装置。
【請求項9】
請求項1から8のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ制御部は、前記アクセス要求として一斉削除指示が受信されたとき、前記複数のデータ記憶領域の全てに前記無効値を持つ有効フラグを書き込み、その結果を前記外部装置に通知することを特徴とするデータ記憶装置。
【請求項10】
請求項1から3のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ制御部は、前記アクセス要求としてエントリ登録指示が受信されたとき、前記エントリ登録指示に応じて、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記無効値を持つ有効フラグが保持されている場合は、前記エントリ登録指示で指定される登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記最上位のデータ記憶領域に書き込む、ことを特徴とするデータ記憶装置。
【請求項11】
請求項10に記載のデータ記憶装置であって、前記メモリ制御部は、前記エントリ登録指示に応じて、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記有効値を持つ有効フラグが保持されている場合は、前記複数のデータ記憶領域のうち最下位のデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、前記登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記最上位のデータ記憶領域に書き込む、ことを特徴とするデータ記憶装置。
【請求項12】
請求項10または11に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記エントリ登録指示に応じて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータの中から、前記登録すべき実体データと一致する実体データを検索するデータ検索部、
をさらに含み、
前記メモリ制御部は、前記データ検索部により前記登録すべき実体データと一致する実体データが探し出されたときは、前記登録すべき実体データと一致する実体データを含むエントリデータを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、前記登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記複数のデータ記憶領域のうち最上位のデータ記憶領域に書き込む、
ことを特徴とするデータ記憶装置。
【請求項13】
請求項1から9のうちのいずれか1項に記載のデータ記憶装置であって、
前記各データ記憶領域は、
当該各データ記憶領域に保持されるエントリデータの無効化を許可する許可値及び当該各データ記憶領域に保持されるエントリデータの無効化を許可しないマスク値のうちのいずれか一方の値を持つ静的フラグを格納する静的フラグ領域をさらに有し、
前記メモリ制御部は、前記複数のデータ記憶領域のうち前記マスク値を持つ静的フラグを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込まないことを特徴とするデータ記憶装置。
【請求項14】
請求項13に記載のデータ記憶装置であって、
前記メモリ制御部は、前記アクセス要求としてエントリ登録指示が受信されたとき、前記エントリ登録指示に応じて、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記有効値を持つ有効フラグが保持されている場合は、前記複数のデータ記憶領域のうち前記許可値を持つ静的フラグを保持する最も優先順位の低いデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、前記エントリ登録指示で指定される登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記最上位のデータ記憶領域に書き込む、
ことを特徴とするデータ記憶装置。
【請求項15】
請求項1から14のうちのいずれか1項に記載のデータ記憶装置であって、
前記各データ記憶領域は、
当該各データ記憶領域に保持されているエントリデータの無効化が予定されていることを示す値と当該各データ記憶領域に保持されているエントリデータの無効化が予定されていないことを示す値とのうちのいずれか一方の値を持つ削除フラグを格納する削除フラグ領域をさらに有し、
前記メモリ制御部は、前記複数のデータ記憶領域のいずれかに前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを書き込み、所定の設定期間経過後、前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを保持する当該データ記憶領域の全てに前記無効値を持つ有効フラグを書き込む、
ことを特徴とするデータ記憶装置。
【請求項16】
請求項15に記載のデータ記憶装置であって、前記メモリ制御部は、前記設定期間内に、前記複数のエントリデータのいずれかを更新したとき、当該更新されたエントリデータを保持する当該データ記憶領域に前記エントリデータの無効化が予定されていないことを示す値を持つ削除フラグを書き込むことを特徴とするデータ記憶装置。
【請求項17】
請求項1から14のうちのいずれか1項に記載のデータ記憶装置であって、
前記各データ記憶領域は、
当該各データ記憶領域に保持されているエントリデータの無効化が予定されていることを示す値と当該各データ記憶領域に保持されているエントリデータの無効化が予定されていないことを示す値とのうちのいずれか一方の値を持つ削除フラグを格納する削除フラグ領域をさらに有し、
前記メモリ制御部は、前記アクセス要求として削除フラグ付与指示が受信されたときに前記複数のデータ記憶領域のいずれかに前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを書き込み、所定の設定期間経過後、前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを保持する当該データ記憶領域の全てに前記無効値を持つ有効フラグを書き込む、ことを特徴とするデータ記憶装置。
【請求項18】
請求項1から17のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ管理アルゴリズムは、最も長い間参照されていない実体データを含むエントリデータの優先順位を最も低くするアルゴリズムであることを特徴とするデータ記憶装置。
【請求項19】
請求項1から18のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ制御部は、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち、直近に参照された実体データを含む参照データを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、最上位の前記データ記憶領域に前記参照データを書き込むことを特徴とするデータ記憶装置。
【請求項20】
請求項1に記載のデータ記憶装置であって、前記エントリ保持回路は、ランダム・アクセス・メモリであることを特徴とするデータ記憶装置。
【請求項1】
所定のメモリ管理アルゴリズムに基づく優先順位を有する複数のエントリデータをそれぞれ保持し、該複数のエントリデータの優先順位に対応する順位がそれぞれ割り当てられた複数のデータ記憶領域を有するエントリ保持回路と、
外部装置からのアクセス要求に応じて、前記複数のデータ記憶領域に対して前記エントリデータの読み出し及び書き込みを実行するエントリ制御回路と、
を備え、
前記各データ記憶領域は、
当該各データ記憶領域に保持されるエントリデータを有効にする有効値及び当該各データ記憶領域に保持されるエントリデータを無効にする無効値のうちのいずれか一方の値を持つ有効フラグを格納する有効フラグ領域と、
実体データを格納するデータ領域と、
を有し、
前記エントリ制御回路は、
前記複数のデータ記憶領域の中から前記無効値を持つ有効フラグを保持する無効化データ領域を空き領域として検出する領域検出部と、
前記複数のデータ記憶領域に対して前記エントリデータの書き込みが実行されない間に、前記複数のデータ記憶領域のうち前記無効化データ領域の順位よりも上位のデータ記憶領域に保持されているエントリデータを、前記上位のデータ記憶領域よりも下位の当該データ記憶領域にシフトさせるシフト操作を行うとともに、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記無効値を持つ有効フラグを書き込むメモリ制御部と、
を含むことを特徴とするデータ記憶装置。
【請求項2】
請求項1に記載のデータ記憶装置であって、
前記エントリ保持回路は、
前記複数のデータ記憶領域をそれぞれ構成する複数段のレジスタと、
前記メモリ制御部から供給された選択制御信号に応じて、前記複数段のレジスタの中から指定されたレジスタにより出力された当該エントリデータを選択し、当該選択されたエントリデータを、前記指定されたレジスタよりも1つ後段の当該レジスタに出力する複数のセレクタと、
を含むシフトレジスタ回路であり、
前記メモリ制御部は、前記領域検出部により前記無効化データ領域が検出されたとき、前記複数段のレジスタのうち前記上位のデータ記憶領域を構成するレジスタを指定する制御信号を前記選択制御信号として前記複数のセレクタに供給する、
ことを特徴とするデータ記憶装置。
【請求項3】
請求項2に記載のデータ記憶装置であって、前記複数段のレジスタの並列出力が前記エントリ制御回路に供給されていることを特徴とするデータ記憶装置。
【請求項4】
請求項3に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記アクセス要求として検索キーデータとともに検索要求が受信されたとき、前記検索要求に応じて、前記複数段のレジスタの並列出力に基づいて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータの中から前記検索キーデータと一致する実体データを検索し、その検索結果を前記外部装置に返すデータ検索部
をさらに含むことを特徴とするデータ記憶装置。
【請求項5】
請求項4に記載のデータ記憶装置であって、
前記データ記憶領域は、互いに関連付けされた複数の前記実体データを含み、
前記データ検索部は、前記複数のデータ記憶領域を検索テーブルとして使用する、
ことを特徴とするデータ記憶装置。
【請求項6】
請求項3に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記アクセス要求として有効エントリ数通知指示が受信されたとき、前記有効エントリ数通知指示に応じて、前記複数段のレジスタの並列出力に基づいて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータを計数し、その計数結果を前記外部装置に通知するデータ検索部
をさらに含むことを特徴とするデータ記憶装置。
【請求項7】
請求項1から3のうちのいずれか1項に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記アクセス要求として特定データの削除指示が受信されたとき、前記削除指示に応じて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータの中から前記特定データと一致する削除すべき実体データを検索するデータ検索部
をさらに含み、
前記メモリ制御部は、前記データ検索部により前記削除すべき実体データが探し出されたとき、前記複数のデータ記憶領域のうち前記削除すべき実体データを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込み、その結果を前記外部装置に通知する、
ことを特徴とするデータ記憶装置。
【請求項8】
請求項7に記載のデータ記憶装置であって、前記データ検索部は、前記削除すべき実体データを探し出すことができなかったとき、その結果を前記外部装置に通知することを特徴とするデータ記憶装置。
【請求項9】
請求項1から8のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ制御部は、前記アクセス要求として一斉削除指示が受信されたとき、前記複数のデータ記憶領域の全てに前記無効値を持つ有効フラグを書き込み、その結果を前記外部装置に通知することを特徴とするデータ記憶装置。
【請求項10】
請求項1から3のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ制御部は、前記アクセス要求としてエントリ登録指示が受信されたとき、前記エントリ登録指示に応じて、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記無効値を持つ有効フラグが保持されている場合は、前記エントリ登録指示で指定される登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記最上位のデータ記憶領域に書き込む、ことを特徴とするデータ記憶装置。
【請求項11】
請求項10に記載のデータ記憶装置であって、前記メモリ制御部は、前記エントリ登録指示に応じて、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記有効値を持つ有効フラグが保持されている場合は、前記複数のデータ記憶領域のうち最下位のデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、前記登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記最上位のデータ記憶領域に書き込む、ことを特徴とするデータ記憶装置。
【請求項12】
請求項10または11に記載のデータ記憶装置であって、
前記エントリ制御回路は、
前記エントリ登録指示に応じて、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち前記有効値を持つ有効フラグを含むエントリデータの中から、前記登録すべき実体データと一致する実体データを検索するデータ検索部、
をさらに含み、
前記メモリ制御部は、前記データ検索部により前記登録すべき実体データと一致する実体データが探し出されたときは、前記登録すべき実体データと一致する実体データを含むエントリデータを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、前記登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記複数のデータ記憶領域のうち最上位のデータ記憶領域に書き込む、
ことを特徴とするデータ記憶装置。
【請求項13】
請求項1から9のうちのいずれか1項に記載のデータ記憶装置であって、
前記各データ記憶領域は、
当該各データ記憶領域に保持されるエントリデータの無効化を許可する許可値及び当該各データ記憶領域に保持されるエントリデータの無効化を許可しないマスク値のうちのいずれか一方の値を持つ静的フラグを格納する静的フラグ領域をさらに有し、
前記メモリ制御部は、前記複数のデータ記憶領域のうち前記マスク値を持つ静的フラグを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込まないことを特徴とするデータ記憶装置。
【請求項14】
請求項13に記載のデータ記憶装置であって、
前記メモリ制御部は、前記アクセス要求としてエントリ登録指示が受信されたとき、前記エントリ登録指示に応じて、前記複数のデータ記憶領域のうち最上位のデータ記憶領域に前記有効値を持つ有効フラグが保持されている場合は、前記複数のデータ記憶領域のうち前記許可値を持つ静的フラグを保持する最も優先順位の低いデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、前記エントリ登録指示で指定される登録すべき実体データと前記有効値を持つ有効フラグとを含むエントリデータを前記最上位のデータ記憶領域に書き込む、
ことを特徴とするデータ記憶装置。
【請求項15】
請求項1から14のうちのいずれか1項に記載のデータ記憶装置であって、
前記各データ記憶領域は、
当該各データ記憶領域に保持されているエントリデータの無効化が予定されていることを示す値と当該各データ記憶領域に保持されているエントリデータの無効化が予定されていないことを示す値とのうちのいずれか一方の値を持つ削除フラグを格納する削除フラグ領域をさらに有し、
前記メモリ制御部は、前記複数のデータ記憶領域のいずれかに前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを書き込み、所定の設定期間経過後、前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを保持する当該データ記憶領域の全てに前記無効値を持つ有効フラグを書き込む、
ことを特徴とするデータ記憶装置。
【請求項16】
請求項15に記載のデータ記憶装置であって、前記メモリ制御部は、前記設定期間内に、前記複数のエントリデータのいずれかを更新したとき、当該更新されたエントリデータを保持する当該データ記憶領域に前記エントリデータの無効化が予定されていないことを示す値を持つ削除フラグを書き込むことを特徴とするデータ記憶装置。
【請求項17】
請求項1から14のうちのいずれか1項に記載のデータ記憶装置であって、
前記各データ記憶領域は、
当該各データ記憶領域に保持されているエントリデータの無効化が予定されていることを示す値と当該各データ記憶領域に保持されているエントリデータの無効化が予定されていないことを示す値とのうちのいずれか一方の値を持つ削除フラグを格納する削除フラグ領域をさらに有し、
前記メモリ制御部は、前記アクセス要求として削除フラグ付与指示が受信されたときに前記複数のデータ記憶領域のいずれかに前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを書き込み、所定の設定期間経過後、前記エントリデータの無効化が予定されていることを示す値を持つ削除フラグを保持する当該データ記憶領域の全てに前記無効値を持つ有効フラグを書き込む、ことを特徴とするデータ記憶装置。
【請求項18】
請求項1から17のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ管理アルゴリズムは、最も長い間参照されていない実体データを含むエントリデータの優先順位を最も低くするアルゴリズムであることを特徴とするデータ記憶装置。
【請求項19】
請求項1から18のうちのいずれか1項に記載のデータ記憶装置であって、前記メモリ制御部は、前記複数のデータ記憶領域に保持されている前記複数のエントリデータのうち、直近に参照された実体データを含む参照データを保持するデータ記憶領域に前記無効値を持つ有効フラグを書き込み、前記シフト操作の実行後、最上位の前記データ記憶領域に前記参照データを書き込むことを特徴とするデータ記憶装置。
【請求項20】
請求項1に記載のデータ記憶装置であって、前記エントリ保持回路は、ランダム・アクセス・メモリであることを特徴とするデータ記憶装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2011−221900(P2011−221900A)
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願番号】特願2010−92255(P2010−92255)
【出願日】平成22年4月13日(2010.4.13)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願日】平成22年4月13日(2010.4.13)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]