(57)【要約】【課題】大規模データに対する検索においてシステムの負荷を大幅に軽減することができるメモリコントローラを提供する。【解決手段】本発明のメモリコントローラは、  メモリ１２から読み込まれた複数の検索対象データを保持するラインバッファ１５と、前記複数の検索対象データを読み込んでラインバッファ１５に格納するための制御回路１６と、ＣＰＵ１３からの検索値を保持するレジスタ１９と、レジスタ１９に保持されている検索値とラインバッファ１５に保持されている検索対象データとを順次比較する比較器２０と、レジスタ１９および比較器２０を備え、比較器２０の比較結果に基づいて、制御回路１６に対して次の検索対象データの読み込みを要求する信号を生成するか、または、所望の検索結果を生成するサーチエンジン１７と、を有する。【選択図】  図１
2011128735.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリから読み込まれた複数の検索対象データを保持する保持手段と、
前記複数の検索対象データを読み込んで前記保持手段に格納するための制御手段と、
外部ＣＰＵからの検索値を保持するレジスタと、
前記レジスタに保持されている前記検索値と前記保持手段に保持されている前記検索対象データとを順次比較する比較手段と、
前記レジスタおよび前記比較手段を備え、前記比較手段の比較結果に基づいて、前記制御手段に対して次の検索対象データの読み込みを要求する信号を生成するか、または、所望の検索結果を生成する検索手段と、
を有することを特徴とするメモリコントローラ。
【請求項２】
前記検索手段において前記検索結果が生成された場合に、外部ＣＰＵに対する割り込み信号を生成することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記検索結果に基づいて前記検索対象データに対して演算処理を行い新たな検索結果を生成する演算処理手段をさらに有することを特徴とする請求項１または請求項２のいずれか１項に記載のメモリコントローラ。
【請求項４】
前記検索結果に基づいて前記検索対象データに対して演算処理を行い新たな検索結果を生成する外部演算処理装置を接続するためのインターフェース手段をさらに有することを特徴とする請求項１または請求項２のいずれか１項に記載のメモリコントローラ。
【請求項５】
外部メモリから読み込まれた複数の検索対象データを保持する保持手段と、
前記複数の検索対象データを読み込んで前記保持手段に格納するための制御手段と、
外部ＣＰＵからの検索値と前記保持手段に保持されている前記検索対象データとを順次比較し、その比較結果に基づいて、前記制御手段に対して次の検索対象データの読み込みを要求する信号を生成するか、または、所望の検索結果を生成する外部検索装置を接続するための第１のインターフェース手段と、
外部検索装置が生成した検索結果に基づいて前記検索対象データに対して演算処理を行い新たな検索結果を生成する外部演算処理装置を接続するための第２のインターフェース手段と、を有することを特徴とするメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラに係り、特に、大容量メモリに格納されている情報の中から所望のデータを検索抽出する機能を備えたシステムに用いられるメモリコントローラに関する。
【背景技術】
【０００２】
近年、組込用マイコン（ＣＰＵ：Central Processing Unit）などを使用したシステムにおいて、大容量メモリとしてＮＡＮＤ型フラッシュメモリが搭載されるようになっている。ＮＡＮＤ型フラッシュメモリは、大容量メモリを小さなチップ面積で実現できるというメリットがある反面、メモリセルの構造上の特徴やメモリセルアレイの構成上の特徴（例えば、「特許文献１」を参照。）からページ単位でアクセスしなければならず、また、読み出し/書き込みに時間がかかるという制約が存在する。
【０００３】
特に、メモリに格納されている大規模なファイル（検索対象データ）の中から所望の情報を検索する場合には、ＣＰＵの負荷が重くなりシステムバスを長時間占有してしまうという問題があった。すなわち、従来のメモリコントローラを用いたこのようなシステムでは、メモリ内の情報の検索はＣＰＵ上のプログラムが行っており、１つの検索対象データをメモリからロードし、ターゲットの値に近いかどうかを判定し、近くなければさらにメモリから次の検索対象データを読み込むというシーケンスを繰り返していた。このため、結果として、ＣＰＵの負荷が重くなり検索時間が長くかかるとともにシステムバスの占有時間も長くなっていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２５０９５７号公報（図２）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、大規模データに対する検索においてシステムの負荷を大幅に軽減することができるメモリコントローラを提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、外部メモリから読み込まれた複数の検索対象データを保持する保持手段と、前記複数の検索対象データを読み込んで前記保持手段に格納するための制御手段と、外部ＣＰＵからの検索値を保持するレジスタと、前記レジスタに保持されている前記検索値と前記保持手段に保持されている前記検索対象データとを順次比較する比較手段と、前記レジスタおよび前記比較手段を備え、前記比較手段の比較結果に基づいて、前記制御手段に対して次の検索対象データの読み込みを要求する信号を生成するか、または、所望の検索結果を生成する検索手段と、を有することを特徴とするメモリコントローラが提供される。
【０００７】
また、本発明の別の一態様によれば、外部メモリから読み込まれた複数の検索対象データを保持する保持手段と、前記複数の検索対象データを読み込んで前記保持手段に格納するための制御手段と、外部ＣＰＵからの検索値と前記保持手段に保持されている前記検索対象データとを順次比較し、その比較結果に基づいて、前記制御手段に対して次の検索対象データの読み込みを要求する信号を生成するか、または、所望の検索結果を生成する外部検索装置を接続するための第１のインターフェース手段と、外部検索装置が生成した検索結果に基づいて前記検索対象データに対して演算処理を行い新たな検索結果を生成する外部演算処理装置を接続するための第２のインターフェース手段と、を有することを特徴とするメモリコントローラが提供される。
【発明の効果】
【０００８】
本発明によれば、大規模データに対する検索におけるシステムパフォーマンスを大幅に向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例１に係るメモリコントローラを示す回路ブロック図。
【図２】本発明の実施例２に係るメモリコントローラを示す回路ブロック図。
【図３】本発明の実施例３に係るメモリコントローラを示す回路ブロック図。
【図４】本発明の実施例４に係るメモリコントローラを示す回路ブロック図。
【図５】本発明の実施例５に係るメモリコントローラを示す回路ブロック図。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明の実施の形態を説明する。
【実施例１】
【００１１】
図１は、本発明の実施例１に係るメモリコントローラ１１を示す回路ブロック図である。ここでは、主に、ＮＡＮＤ型フラッシュメモリ１２（以下、「フラッシュメモリ１２」という。）に格納されている情報（検索対象データ）の中から所望のデータを検索抽出する機能にかかわる部分を示した。検索以外の通常のアクセスに関わる部分は省略した。また、メモリコントローラ１１のシステム全体での位置づけを明確にするためＣＰＵ１３、システムバス１４などシステムの主要構成要素も図示した。
【００１２】
本発明の実施例１に係るメモリコントローラ１１は、ラインバッファ１５、制御回路１６、およびサーチエンジン１７を備えている。また、サーチエンジン１７は、スタートレジスタ１８、検索値レジスタ１９、および比較器２０を備えている。
【００１３】
メモリコントローラ１１の第１の入出力はシステムバス１４に接続され、メモリコントローラ１１の第２の入出力はフラッシュメモリ１２の入出力に接続されている。ラインバッファ１５の第１の入力はシステムバス１４に接続され、ラインバッファ１５の第２の入力はフラッシュメモリ１２の出力に接続され、ラインバッファ１５の第１の出力はシステムバス１４に接続され、ラインバッファ１５の第２の出力は比較器２０の第１の入力に接続されている。
【００１４】
スタートレジスタ１８の入力はシステムバス１４に接続され、検索値レジスタ１９の入力はシステムバス１４に接続され、検索値レジスタ１９の出力は比較器２０の第２の入力に接続されている。比較器２０の出力は制御回路１６の入力に接続され、制御回路１６の出力はフラッシュメモリ１２の入力に接続されている。
【００１５】
ラインバッファ１５は、制御回路１６によって読み出されたフラッシュメモリ１２からのデータ（検索対象データ）を１ページ分とそれらのデータに対応する配列インデックス（アドレス）を保持する。  
制御回路１６は比較器２０からの比較結果に基づいて、フラッシュメモリ１２から次の１ページ分の検索対象データをラインバッファ１５に読み込むよう動作する。
【００１６】
サーチエンジン１７は、ＣＰＵ１３からの検索指示（ロード命令）に基づいてラインバッファ１５を検索し、所望のデータが抽出されるとその配列インデックスを返り値として（ロード命令のロードデータとして）ＣＰＵ１３に返す。  
スタートレジスタ１８は、ＣＰＵ１３からの検索指示（ロード命令）の値が書き込まれるマップドレジスタであり、検索値レジスタ１９は、所望の検索値データが書き込まれるマップドレジスタである。
【００１７】
比較器２０は、検索値レジスタ１９の値とラインバッファ１５からの検索対象データを順次比較し、ラインバッファ１５に保持されている検索対象データの中から検索値データに等しいか、あるいは所定の条件を満たす最も近いデータを抽出する。また、比較器２０は、ラインバッファ１５内で所望のデータが見つからない場合には次の１ページ分の検索対象データをフラッシュメモリ１２からラインバッファ１５に読み込むための要求を制御回路１６に対して生成する。
【００１８】
次に、上述した構成を持つメモリコントローラ１１の検索動作について説明する。  
ＣＰＵ１３がシステムバス１４を介して検索値レジスタ１９に所望の検索値データをセットし、スタートレジスタ１８にＲＵＮ（検索指示）に相当する値をロード命令によってセットすると、サーチエンジン１７は、メモリコントローラ１１内のラインバッファ１５から検索対象データとそのデータに対応する配列インデックス（アドレス）を順次取得し、各データについて、値が最も近いかどうかを比較器２０によって判断する。
【００１９】
具体的な検索方法としては種々のものが考えられるが、ここでは最もシンプルな方法を採用する。すなわち、小さい値から大きくなる方向（昇順）へ順番に比較検索し、検索対象データが検索値データに等しいかあるいは初めて大きくなった場合に、そのデータを検索値データに「最も近い値」として認識し、そのデータに相当する配列インデックスを検索結果としてロード命令のロードデータとしてＣＰＵ１３に返す。この間、ＣＰＵ１３は、ロードデータが返って来るまで待たされる（ブロッキング動作）。
【００２０】
比較器２０での比較結果がどの検索対象データも検索値データに近くない場合には、サーチエンジン１７は、フラッシュメモリ１２からラインバッファ１５に次の１ページ分の検索対象データを読み込むために制御回路１６をキックする。そして、新しく読み込まれたラインバッファ１５の検索対象データに対して上記の検索を繰り返す。フラッシュメモリ１２上の検索対象データを全て検索しても、所望の検索値データに「最も近い値」が見つからなかった場合は、サーチエンジン１７はその旨を示す特別な値をＣＰＵ１３に返して一連の検索動作を終了する。
【００２１】
上記実施例１によれば、ラインバッファ１５およびサーチエンジン１７が搭載されているので、大規模データに対する検索におけるシステムパフォーマンスを大幅に向上させるメモリコントローラを実現することができる。
【００２２】
上述の実施例１では、ラインバッファ１５は１ページ分の検索対象データを保持するとしたが、本発明はこれに限られるものではなく、ラインバッファ１５を複数ページに拡張しても原理的には適用可能である。
【００２３】
また、上述の実施例１では、サーチエンジン１７での検索方法は昇順であるとしたが、本発明はこれに限られるものではなく、例えば、大きな値から小さくなる方向（降順）へ順番に検索する方法や、真ん中の値のどちらにあるか比較して、ある方の半分を取っていく方法（クイックサーチ）などターゲットシステムに合わせて適正な方法を採用可能である。
【００２４】
さらに、上述の実施例１では、ＣＰＵ１３は検索動作中待たされるとしたが、本発明はこれに限られるものではなく、ＣＰＵ１３がいったん他の作業に移行するノンブロッキング動作をしても良い。
【００２５】
さらに、上述の実施例１では、「最も近い値」は検索値データに等しいかまたははじめてそれを上回ったデータであるとしたが、本発明はこれに限られるものではなく、例えば、所望の検索値データに所定の誤差分を付加したものなどターゲットシステムに合わせて適正なものを採用可能である。
【実施例２】
【００２６】
図２は、本発明の実施例２に係るメモリコントローラ２１を示す回路ブロック図である。ここでは、主に、フラッシュメモリ１２に格納されている情報（検索対象データ）の中から所望のデータを検索抽出する機能にかかわる部分を示した。検索以外の通常のアクセスに関わる部分は省略した。また、メモリコントローラ２１のシステム全体での位置づけを明確にするためＣＰＵ１３ａおよび１３ｂ、システムバス１４などシステムの主要構成要素も図示した。
【００２７】
本発明の実施例２に係るメモリコントローラ２１は、ラインバッファ２５、制御回路２６、およびサーチエンジン２７を備えている。また、サーチエンジン２７は、最近傍インデックスレジスタ２２、スタートレジスタ２８、検索値レジスタ２９、および比較器３０を備えている。
【００２８】
メモリコントローラ２１の第１の入出力はシステムバス１４に接続され、メモリコントローラ２１の第２の入出力はフラッシュメモリ１２の入出力に接続されている。ラインバッファ２５の第１の入力はシステムバス１４に接続され、ラインバッファ２５の第２の入力はフラッシュメモリ１２の出力に接続され、ラインバッファ２５の第１の出力はシステムバス１４に接続され、ラインバッファ２５の第２の出力は比較器３０の第１の入力に接続されている。
【００２９】
最近傍インデックスレジスタ２２の出力はシステムバス１４に接続され、スタートレジスタ２８の入力はシステムバス１４に接続され、検索値レジスタ２９の入力はシステムバス１４に接続され、検索値レジスタ２９の出力は比較器３０の第２の入力に接続されている。比較器３０の出力は制御回路２６の入力に接続され、制御回路２６の出力はフラッシュメモリ１２の入力に接続されている。
【００３０】
ラインバッファ２５、制御回路２６、スタートレジスタ２８、検索値レジスタ２９、および比較器３０の構成、機能、および動作は実施例１と同様であるので、詳しい説明は省略する。実施例１との違いは、システムがマルチプロセッサ構成（ＣＰＵ１３ａおよび１３ｂを有する。）であることと、サーチエンジン２７への検索指示がストア命令によって起動され、サーチエンジン２７が検索結果を格納する最近傍インデックスレジスタ２２（マップドレジスタ）を備え、検索終了時にサーチエンジン２７がＣＰＵ１３ａまたは１３ｂに対して割り込みを発生して検索終了を知らせることである。
【００３１】
すなわち、例えば、ＣＰＵ１３ａがシステムバス１４を介して検索値レジスタ２９に所望の検索値データをセットし、スタートレジスタ２８にＲＵＮ（検索指示）に相当する値をストア命令によってセットすると、サーチエンジン２７は、メモリコントローラ２１内のラインバッファ２５から検索対象データとそのデータに対応する配列インデックス（アドレス）を順次取得し、各データについて、値が最も近いかどうかを比較器３０によって判断する。
【００３２】
具体的な検索方法は実施例１と同様に昇順で行い、検索対象データが検索値データに等しいかあるいは初めて大きくなった場合に、サーチエンジン２７はそのデータを検索値データに「最も近い値」として認識し、そのデータに相当する配列インデックスを検索結果として最近傍インデックスレジスタ２２に格納する。そして、サーチエンジン２７はＣＰＵ１３ａに割り込みをかけて一連の検索動作を終了する。ＣＰＵ１３ａは、当該割り込みにより新たにロード命令を発行し、最近傍インデックスレジスタ２２の値を読みに行く。
【００３３】
比較器３０での比較結果がどの検索対象データも検索値データに近くない場合には、サーチエンジン２７は、フラッシュメモリ１２からラインバッファ２５に次の１ページ分の検索対象データを読み込むために制御回路２６をキックする。そして、新しく読み込まれたラインバッファ２５の検索対象データに対して上記の検索を繰り返す。フラッシュメモリ１２上の検索対象データを全て検索しても、所望の検索値データに「最も近い値」が見つからなかった場合は、サーチエンジン２７はその旨を示す特別な値を最近傍インデックスレジスタ２２に格納し、ＣＰＵ１３ａに割り込みをかけて一連の検索動作を終了する。
【００３４】
上記実施例２によれば、実施例１と同様の効果が得られるばかりでなく、検索結果を最近傍インデックスレジスタ２２に入れてＣＰＵ１３ａまたは１３ｂに対して割り込みをかけるので、検索期間中はＣＰＵ１３ａおよび１３ｂ、およびシステムバス１４を占有せず、ＣＰＵ１３ａおよび１３ｂ、およびシステムバス１４の利用効率が向上し、システムのパフォーマンスをさらに向上させることができる。
【００３５】
上述の実施例２では、ラインバッファ２５は１ページ分の検索対象データを保持するとしたが、実施例１と同様に、本発明はこれに限られるものではない。
【００３６】
また、上述の実施例２では、サーチエンジン２７での検索方法は昇順であるとしたが、本発明はこれに限られるものではなく、実施例１と同様にターゲットシステムに合わせて適正な方法を採用可能である。
【００３７】
さらに、上述の実施例２では、「最も近い値」は検索値データに等しいかまたははじめてそれを上回ったデータであるとしたが、本発明はこれに限られるものではなく、実施例１と同様にターゲットシステムに合わせて適正なものを採用可能である。
【実施例３】
【００３８】
図３は、本発明の実施例３に係るメモリコントローラ３１を示す回路ブロック図である。ここでは、主に、フラッシュメモリ１２に格納されている情報（検索対象データ）の中から所望のデータを検索抽出する機能にかかわる部分を示した。検索以外の通常のアクセスに関わる部分は省略した。また、メモリコントローラ３１のシステム全体での位置づけを明確にするためＣＰＵ１３、システムバス１４などシステムの主要構成要素も図示した。
【００３９】
本発明の実施例３に係るメモリコントローラ３１は、ラインバッファ３５、制御回路３６、サーチエンジン３７、および演算処理回路３３を備えている。また、サーチエンジン３７は、最近傍インデックスレジスタ３２、スタートレジスタ３８、検索値レジスタ３９、および比較器４０を備えている。さらに、演算処理回路３３は演算結果レジスタ３４を備えている。
【００４０】
メモリコントローラ３１の第１の入出力はシステムバス１４に接続され、メモリコントローラ３１の第２の入出力はフラッシュメモリ１２の入出力に接続されている。ラインバッファ３５の第１の入力はシステムバス１４に接続され、ラインバッファ３５の第２の入力はフラッシュメモリ１２の出力に接続され、ラインバッファ３５の第１の出力はシステムバス１４に接続され、ラインバッファ３５の第２の出力は比較器４０の第１の入力に接続されている。
【００４１】
最近傍インデックスレジスタ３２の出力はシステムバス１４に接続され、スタートレジスタ３８の入力はシステムバス１４に接続され、検索値レジスタ３９の入力はシステムバス１４に接続され、検索値レジスタ３９の出力は比較器４０の第２の入力に接続されている。比較器４０の出力は制御回路３６の入力に接続され、制御回路３６の出力はフラッシュメモリ１２の入力に接続されている。
【００４２】
演算処理回路３３の入力はサーチエンジン３７の出力に接続され、演算処理回路３３の第１の出力はサーチエンジン３７の入力に接続され、演算処理回路３３の第２の出力はシステムバス１４に接続されている。
【００４３】
ラインバッファ３５、制御回路３６、スタートレジスタ３８、検索値レジスタ３９、および比較器４０の構成、機能、および動作は実施例２と同様であるので、詳しい説明は省略する。実施例２との違いは、メモリコントローラ３１が演算処理回路３３を備えていることと、最近傍インデックスレジスタ３２の値およびこれに関連する値に基づいて演算処理回路３３が演算処理を実行し、その結果を検索結果として演算結果レジスタ３４に格納し、ＣＰＵ１３が最近傍インデックスレジスタ３２の替わりに演算結果レジスタ３４を読みにいくことである。
【００４４】
演算処理回路３３は、演算処理として、以下のような線形補間を実行する。  
所望の検索値データｘで検索抽出された最近傍インデックス値ｉと、インデックス値ｉに対応する検索対象データ値Ｘ[ｉ] 、そして、当該インデックスの一つ前の（ｉ−１）に対応するＸ[ｉ−１] と、さらに、あらかじめメモリコントローラ３１内のレジスタにＣＰＵ１３がセットしたオフセット値Ｂをインデックス値ｉに加えた（ｉ＋Ｂ）および（ｉ＋Ｂ−１）に対応するＹ[ｉ] ＝ Ｘ[ｉ＋Ｂ] 、Ｙ[ｉ−１] ＝ Ｘ[ｉ＋Ｂ−１] とを使って、演算処理回路３３は、
ｙ＝Ｙ[ｉ−１]＋(ｘ−Ｘ[ｉ−１])×(Ｙ[ｉ]−Ｙ[ｉ−１])／(Ｘ[ｉ]−Ｘ[ｉ−１]）
を演算する機能を提供する。このために、メモリコントローラ３１は、フラッシュメモリ１２をアクセスして、Ｘ[ｉ] 、Ｘ[ｉ−１] 、Ｘ[ｉ＋Ｂ] (＝Ｙ[ｉ]）、Ｘ[ｉ＋Ｂ−１] (＝Ｙ[ｉ−１]）を読み込む。
【００４５】
次に、上述した構成を持つメモリコントローラ３１の検索動作について説明する。
【００４６】
ＣＰＵ１３がシステムバス１４を介して検索値レジスタ３９に所望の検索値データをセットし、スタートレジスタ３８にＲＵＮ（検索指示）に相当する値をストア命令によってセットすると、サーチエンジン３７は、メモリコントローラ３１内のラインバッファ３５から検索対象データとそのデータに対応する配列インデックス（アドレス）を順次取得し、各データについて、値が最も近いかどうかを比較器４０によって判断する。
【００４７】
具体的な検索方法は実施例１と同様に昇順で行い、検索対象データが検索値データに等しいかあるいは初めて大きくなった場合に、サーチエンジン３７はそのデータを検索値データに「最も近い値」として認識し、そのデータに相当する配列インデックスを検索結果として最近傍インデックスレジスタ３２に格納する。
【００４８】
演算処理回路３３は、最近傍インデックスレジスタ３２の値およびこれに関連する値（Ｘ[ｉ] 、Ｘ[ｉ−１] 、Ｘ[ｉ＋Ｂ] 、Ｘ[ｉ＋Ｂ−１]など。）に基づいて上述した演算処理を実行し、その演算結果ｙを検索結果として演算結果レジスタ３４に格納する。そして、演算処理回路３３は、ＣＰＵ１３に割り込みをかけて一連の検索動作を終了する。ＣＰＵ１３は、当該割り込みにより新たにロード命令を発行し、演算結果レジスタ３４の値を読みに行く。
【００４９】
比較器４０での比較結果がどの検索対象データも検索値データに近くない場合には、サーチエンジン３７は、フラッシュメモリ１２からラインバッファ３５に次の１ページ分の検索対象データを読み込むために制御回路３６をキックする。そして、新しく読み込まれたラインバッファ３５の検索対象データに対して上記の検索を繰り返す。フラッシュメモリ１２上の検索対象データを全て検索しても、所望の検索値データに「最も近い値」が見つからなかった場合は、サーチエンジン３７はその旨を示す特別な値を最近傍インデックスレジスタ３２に格納し、ＣＰＵ１３に割り込みをかけて一連の検索動作を終了する。
【００５０】
上記実施例３によれば、実施例２と同様の効果が得られるばかりでなく、演算処理回路３３で線形補間を実行するので、より高精度の検索が可能となり、システムのパフォーマンスをさらに向上させることができる。
【００５１】
上述の実施例３では、ラインバッファ３５は１ページ分の検索対象データを保持するとしたが、実施例１と同様に、本発明はこれに限られるものではない。
【００５２】
また、上述の実施例３では、サーチエンジン３７での検索方法は昇順であるとしたが、本発明はこれに限られるものではなく、実施例１と同様にターゲットシステムに合わせて適正な方法を採用可能である。
【００５３】
さらに、上述の実施例３では、「最も近い値」は検索値データに等しいかまたははじめてそれを上回ったデータであるとしたが、本発明はこれに限られるものではなく、実施例１と同様にターゲットシステムに合わせて適正なものを採用可能である。
【００５４】
さらに、上述の実施例３では、検索終了時にＣＰＵ１３に対して割り込みをかけるとしたが、本発明はこれに限られるものではなく、例えば、実施例１と同様に、ロード命令で検索開始を指示し、検索終了時に演算処理回路３３がロード命令のロードデータとして演算結果ｙをＣＰＵ１３に返すように構成することもできる。
【００５５】
さらに、上述の実施例３では、演算処理回路３３は線形補間を実行するとしたが、本発明はこれに限られるものではなく、ターゲットシステムに合わせて適切な演算を実行するようにしても良い。
【実施例４】
【００５６】
図４は、本発明の実施例４に係るメモリコントローラ４１を示す回路ブロック図である。ここでは、主に、フラッシュメモリ１２に格納されている情報（検索対象データ）の中から所望のデータを検索抽出する機能にかかわる部分を示した。検索以外の通常のアクセスに関わる部分は省略した。また、メモリコントローラ４１のシステム全体での位置づけを明確にするためＣＰＵ１３、システムバス１４、および外部に接続する演算処理装置４３などシステムの主要構成要素も図示した。
【００５７】
本発明の実施例４に係るメモリコントローラ４１は、ラインバッファ４５、制御回路４６、サーチエンジン４７、およびインターフェース回路４４を備えている。また、サーチエンジン４７は、最近傍インデックスレジスタ４２、スタートレジスタ４８、検索値レジスタ４９、および比較器５０を備えている。
【００５８】
メモリコントローラ４１の第１の入出力はシステムバス１４に接続され、メモリコントローラ４１の第２の入出力はフラッシュメモリ１２の入出力に接続され、メモリコントローラ４１の第３の入出力は演算処理装置４３の入出力に接続されている。
【００５９】
ラインバッファ４５の第１の入力はシステムバス１４に接続され、ラインバッファ４５の第２の入力はフラッシュメモリ１２の出力に接続され、ラインバッファ４５の第１の出力はシステムバス１４に接続され、ラインバッファ４５の第２の出力は比較器５０の第１の入力に接続されている。
【００６０】
最近傍インデックスレジスタ４２の出力はシステムバス１４に接続され、スタートレジスタ４８の入力はシステムバス１４に接続され、検索値レジスタ４９の入力はシステムバス１４に接続され、検索値レジスタ４９の出力は比較器５０の第２の入力に接続されている。比較器５０の出力は制御回路４６の入力に接続され、制御回路４６の出力はフラッシュメモリ１２の入力に接続されている。
【００６１】
サーチエンジン４７の入力はインターフェース回路４４を介して外部に接続された演算処理装置４３の第１の出力に接続され、サーチエンジン４７の出力はインターフェース回路４４を介して外部に接続された演算処理装置４３の入力に接続されている。また、外部の演算処理装置４３の第２の出力がインターフェース回路４４を介してシステムバス１４に接続されている。
【００６２】
ラインバッファ４５、制御回路４６、サーチエンジン４７、最近傍インデックスレジスタ４２、スタートレジスタ４８、検索値レジスタ４９、および比較器５０の構成、機能、および動作は実施例３と同様であるので、詳しい説明は省略する。実施例３との違いは、メモリコントローラ４１が外部に演算処理装置４３を接続するインターフェース回路４４を備えていることと、最近傍インデックスレジスタ４２の値およびこれに関連する値に基づいて外部に接続された演算処理装置４３が演算処理を実行し、その結果を検索結果としてインターフェース回路４４を介してＣＰＵ１３に返すことである。
【００６３】
インターフェース回路４４は、最近傍インデックスレジスタ４２の値を演算処理装置４３に提供するインターフェース機能と、例えば実施例３におけるオフセット値Ｂなどの値を演算処理装置４３に与えるためのメモリマップドレジスタへのアクセスを提供するインターフェース機能と、演算処理装置４３で別途必要になるデータ(例えば、実施例３のＸ[ｉ] 、Ｘ[ｉ−１] 、Ｘ[ｉ＋Ｂ] 、およびＸ[ｉ＋Ｂ−１]など。）のリクエストを受けるインターフェース機能などを備えている。
【００６４】
これらのインターフェース機能により、メモリコントローラ４１は外部に接続された演算処理装置４３を実施例３で述べた演算処理回路３３と同様に扱うことができる。演算処理装置４３を含めたメモリコントローラ４１の検索動作は、実施例３と同様であるので詳しい説明は省略する。
【００６５】
演算処理の種類はアプリケーション（ターゲットシステム）に合わせて適正に変更、選択することが望ましく、これをメモリコントローラ４１内部に固定的に形成しておくことはシステム全体の柔軟性を損なう結果となる。本実施例のように、メモリコントローラ４１にインターフェース回路４４を用意し、演算処理装置４３をＣＰＵにおけるコプロセッサのように接続可能とすることで、アプリケーションに応じた柔軟なシステム構成を実現することができる。
【００６６】
上記実施例４によれば、実施例３と同様の効果が得られるばかりでなく、アプリケーションに合わせて種々の演算処理装置４３をメモリコントローラ４１の外部に接続できるので、より柔軟で高精度な検索が容易に可能となり、システムのパフォーマンスをさらに向上させることができる。
【実施例５】
【００６７】
図５は、本発明の実施例５に係るメモリコントローラ５１を示す回路ブロック図である。ここでは、主に、フラッシュメモリ１２に格納されている情報（検索対象データ）の中から所望のデータを検索抽出する機能にかかわる部分を示した。検索以外の通常のアクセスに関わる部分は省略した。また、メモリコントローラ５１のシステム全体での位置づけを明確にするためＣＰＵ１３、システムバス１４、外部に接続するサーチエンジン５７、および外部に接続する演算処理装置５３などシステムの主要構成要素も図示した。
【００６８】
本発明の実施例５に係るメモリコントローラ５１は、ラインバッファ５５、制御回路５６、およびインターフェース回路５４を備えている。
【００６９】
メモリコントローラ５１の第１の入出力はシステムバス１４に接続され、メモリコントローラ５１の第２の入出力はフラッシュメモリ１２の入出力に接続され、メモリコントローラ５１の第３の入出力はサーチエンジン５７の入出力に接続され、メモリコントローラ５１の第４の入出力は演算処理装置５３の入出力に接続されている。
【００７０】
ラインバッファ５５の第１の入力はシステムバス１４に接続され、ラインバッファ５５の第２の入力はフラッシュメモリ１２の出力に接続され、ラインバッファ５５の第１の出力はシステムバス１４に接続され、ラインバッファ５５の第２の出力はインターフェース回路５４を介して外部に接続されたサーチエンジン５７の第１の入力に接続されている。
【００７１】
制御回路５６の入力にはインターフェース回路５４を介して外部に接続されたサーチエンジン５７の出力が接続され、制御回路５６の出力はフラッシュメモリ１２の入力に接続されている。また、外部のサーチエンジン５７の第２の入力がインターフェース回路５４を介してシステムバス１４に接続され、外部の演算処理装置５３の出力がインターフェース回路５４を介してシステムバス１４に接続されている。
【００７２】
ラインバッファ５５、および制御回路５６の構成、機能、および動作は実施例３と同様であるので、詳しい説明は省略する。実施例３との違いは、メモリコントローラ５１が外部にサーチエンジン５７および演算処理装置５３を接続するインターフェース回路５４を備えていることと、外部に接続されたサーチエンジン５７および演算処理装置５３がインターフェース回路５４を介して渡される検索値データおよび検索対象データに基づいて検索および演算処理を実行し、その結果を検索結果としてインターフェース回路５４を介してＣＰＵ１３に返すことである。
【００７３】
インターフェース回路５４は、サーチエンジン５７のメモリマップドレジスタにアクセスするインターフェース機能と、ラインバッファ５５のデータをサーチエンジン５７に提供するインターフェース機能と、新しいデータを読みたいというサーチエンジン５７からのリクエストを受けるインターフェース機能などを備えている。
【００７４】
これらのインターフェース機能により、メモリコントローラ５１は外部に接続されたサーチエンジン５７や演算処理装置５３を実施例３で述べたサーチエンジン３７や演算処理回路３３と同様に扱うことができる。サーチエンジン５７および演算処理装置５３を含めたメモリコントローラ５１の検索動作は、実施例３と同様であるので詳しい説明は省略する。
【００７５】
検索方法の種類や演算処理の種類はアプリケーション（ターゲットシステム）に合わせて適正に変更、選択することが望ましく、これをメモリコントローラ５１内部に固定的に形成しておくことはシステム全体の柔軟性を損なう結果となる。本実施例のように、メモリコントローラ５１にインターフェース回路５４を用意し、サーチエンジン５７および演算処理装置５３をＣＰＵにおけるコプロセッサのように接続可能とすることで、アプリケーションに応じた柔軟なシステム構成を実現することができる。
【００７６】
上記実施例５によれば、実施例３と同様の効果が得られるばかりでなく、アプリケーションに合わせて種々のサーチエンジン５７および演算処理装置５３をメモリコントローラ５１の外部に接続できるので、より柔軟で高精度な検索が容易に可能となり、システムのパフォーマンスをさらに向上させることができる。
【符号の説明】
【００７７】
１１、２１、３１、４１、５１  メモリコントローラ
１２  フラッシュメモリ
１３、１３ａ、１３ｂ  ＣＰＵ
１４  システムバス
１５、２５、３５、４５、５５  ラインバッファ
１６、２６、３６、４６、５６  制御回路
１７、２７、３７、４７  サーチエンジン
１８、２８、３８、４８  スタートレジスタ
１９、２９、３９、４９  検索値レジスタ
２０、３０、４０、５０  比較器
２２、３２、４２  最近傍インデックスレジスタ
３３  演算処理回路
３４  演算結果レジスタ
４４、５４  インターフェース回路
【図１】
2011128735.tif 000003
【図２】
2011128735.tif 000004
【図３】
2011128735.tif 000005
【図４】
2011128735.tif 000006
【図５】
2011128735.tif 000007