(57)【要約】【課題】高速メモリを用いたＭＡＰ引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供すること【解決手段】検索用データ２４を記憶する第１の記憶手段１５と、第１の記憶手段１５のアドレスに従い、検索用データ２４を一様方向に読み出す読み出し手段２３と、読み出し手段が読み出した、検索用データ２４の複製を記憶する第２の記憶手段１３と、第２の記憶手段１３に複製された検索用データ２４を被検索値xinに基づき検索する検索手段２５が、検索用データを２４インクリメントサーチするかデクリメントサーチするかによって、検索用データ２４の複製を読み出す方向を、第１の記憶手段１５のアドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段２１と、を有することを特徴とするデータマップ読み取り装置１００を提供する。【選択図】図５
2011013913.tif 000002
【特許請求の範囲】
【請求項１】
検索用データを記憶する第１の記憶手段と、
第１の記憶手段のアドレスに従い、前記検索用データを一様方向に読み出す読み出し手段と、
前記読み出し手段が読み出した、前記検索用データの複製を記憶する第２の記憶手段と、
前記第２の記憶手段に複製された前記検索用データを被検索値に基づき検索する検索手段と、
前記検索手段が、前記検索用データをインクリメントサーチするかデクリメントサーチするかによって、前記検索用データの複製を読み出す方向を、第１の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段と、
を有することを特徴とするデータマップ読み取り装置。
【請求項２】
前記切り替え手段は、前記被検索値の大きさに応じて、前記検索用データの複製を読み出す方向を、第１の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項１記載のデータマップ読み取り装置。
【請求項３】
第１の記憶手段は、前記検索用データの読み出し方向を指示する指定情報を記憶しており、
前記切り替え手段は、前記指定情報に基づき、前記検索用データの複製を読み出す方向を、第１の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項１記載のデータマップ読み取り装置。
【請求項４】
前記切り替え手段は、前記検索手段が指定する、前記検索用データの読み出し方向を指示する指定情報に基づき、前記検索用データの複製を読み出す方向を、第１の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項１記載のデータマップ読み取り装置。
【請求項５】
前記検索手段と、
前記検索手段が検索した前記被検索値に最も近い大小１対の前記検索用データ、に対応する１対の対応値を、第１の記憶手段から読み出す対応値読み出し手段と、
前記１対の対応値から、前記被検索値に対応する補間値を補間して算出する補間手段と、
を有することを特徴とする請求項１〜４いずれか１項記載のデータマップ読み取り装置。
【請求項６】
前記読み出し手段が、前記検索用データの複製と共に、前記第１の記憶手段から一様方向に、前記対応値の対応値データの複製を前記検索用データと同じ数だけ読み出して前記第２の記憶手段に記憶する際、
前記切り替え手段は、前記第１の記憶手段に記憶された前記検索用データの読み出し方向を指示する指定情報、又は、前記検索手段が指定する、前記検索用データの読み出し方向を指示する指定情報に基づき、
前記検索用データ及び前記対応値データの複製を読み出す方向を、第１の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項５記載のデータマップ読み取り装置。
【請求項７】
前記対応値読み出し手段及び前記補間手段をＣＰＵとは別の回路で実装する、
ことを特徴とする請求項５記載のデータマップ読み取り装置。
【請求項８】
検索用データを記憶する第１の記憶手段のアドレスに従い、読み出し手段が、前記検索用データを一様方向に読み出すステップと、
前記読み出し手段が読み出した、前記検索用データの複製を第２の記憶手段に記憶させるステップと、
前記第２の記憶手段に複製された前記検索用データを被検索値に基づき検索する検索手段が、前記検索用データをインクリメントサーチするかデクリメントサーチするかによって、切り替え手段が、前記検索用データの複製を読み出す方向を、第１の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替えるステップと、
前記検索手段が、前記第２の記憶手段に複製された前記検索用データを被検索値に基づき検索するステップと、
を有することを特徴とするデータマップ読み取り方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＡＰ引きにより所望の値を取得するデータマップ読み取り装置及びデータマップ読み取り方法に関する。
【背景技術】
【０００２】
エンジンやブレーキなどの車載装置を電子制御する車載電子制御システムでは、非常に高負荷な演算を車両の動作状態に合わせて逐次行い、かつ、その演算結果を非常に短時間に動作状態に反映させなければならない。すなわち、制御系の演算は、情報処理系の演算と異なり、リアルタイム性が要求される。マイコンの負荷を低減しリアルタイム性が確保されるよう、車両用電子制御システムでは、演算をそのまま実行するのでなくマップ引きと呼ばれる処理により演算と同等の値を決定する手法が導入されることがある（例えば、特許文献１参照。）。特許文献１には、スロットル開度とアイドル制御弁駆動信号のデューティ比に対するエンジン吸入空気量の関係を記憶しておき、スロットル開度とデューティ比に演算を施すことなく、記憶してある関係からエンジン吸入空気量を推定するマップ引き処理が開示されている。
【０００３】
図１（ａ）はマップ引き処理を説明するフローチャート図を、図１（ｂ）はＭＡＰデータの一例をそれぞれ示す。ＭＡＰデータは電子制御システムのマイコンが有するＲＯＭ１５に記憶されている。ＭＡＰデータのうち、「ｘ１〜ｘ１００」は入力値ｘinの近似値候補であり、「ｙ１〜ｙ１００」は入力値ｘinに対する結果候補である。以下、「ｘ１〜ｘ１００」を近似値候補「ｘi」、「ｙ１〜ｙ１００」を結果候補「yi」という。
【０００４】
マイコンには、何らかのセンサ（例えば、水温センサ、油圧センサ、エンジン回転数センサ等）から何らかの入力値ｘinが入力される。ＭＡＰ引きの際、マイコンはｘinに最も近い近似値を近似値候補ｘiからサーチする。このため、マイコンは、ＭＡＰの近似値候補ｘiと入力値ｘinを順番に比較する（Ｓ１０）。比較する場合、近似値候補ｘiの小さいものから順に入力値ｘinと比較していく方法（インクリメントサーチ）と、近似値候補ｘiの大きいものから順に比較していく方法（デクリメントサーチ）と、があるが、車両ではデクリメントサーチが採用される場合が多い。これは、マイコンに高負荷がかかる際、入力値ｘinの値も近似値候補ｘiの最大値であるｘ_maxに近い値になる場合が多く、デクリメントサーチした方が入力値ｘinの近似値を少ない比較回数で見つけることができるからである。
【０００５】
マイコンは、ｘin＜ｘiか否かを比較する（Ｓ２０）。近似値候補ｘiの方が大きい場合（Ｓ２０のＹｅｓ）、マイコンは「ｉ」をデクリメントして、入力値ｘinと近似値候補ｘiとの比較を繰り返す。
【０００６】
入力値ｘinが近似値候補ｘi以上となった場合（Ｓ２０のＮｏ）、マイコンはその時の近似値候補ｘiと近似値候補ｘiより１つ大きい近似値候補ｘi＋１を特定する（Ｓ３０）。入力値ｘinは、近似値候補ｘiとｘi＋１の間にあることが分かる。図のＭＡＰを例に説明すると、入力値ｘinが方近似値候補「ｘ３５」以上の場合、近似値候補ｘiは「ｘ３５」に、ｘi＋１は「ｘ３６」となる。説明を分かりやすくするため、フローチャート図では、改めて近似値候補ｘiを近似値ｘn、近似値候補ｘi＋１を近似値ｘn+1とおいた。
【０００７】
次に、マイコンは、近似値ｘnに対応する出力近似値ｙn、ｘn+1に対応する出力近似値ｙn+1をＭＡＰから読み出す（Ｓ４０）。近似値候補ｘiと結果候補yiは一意に対応しているので、出力近似値ｙnとｙn+1はサーチすることなく読み出すことができる。図ではｙ３５が出力近似値ｙn、ｙ３６が出力近似値ｙn+1である。
【０００８】
マイコンは、入力値ｘinに相当する補間値ｙoutを、出力近似値ｙnとｙn+1の補間演算により求める（Ｓ５０）。以上が、図１の処理である。
【０００９】
しかしながら、このような処理では、近似値候補ｘiをサーチする度にＲＯＭ１５にアクセスしなければならない。ＲＯＭ１５からの読み出しは、命令実行と比較しても低速であり、また、命令フェッチとも競合するので、バスの調停が必要となる。また、ステップＳ１０、Ｓ２０に示したように、近似値ｘｎ、ｘn+1を見つけるまで、比較の度にループ処理が必要なので、入力値ｘinによっては最大１００回、比較処理しなければならない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平３−９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
このような課題に対し、プリロードバッファやキャッシュと呼ばれる高速メモリ１３をＣＰＵ１２とＲＯＭ１５の間に配置することが考えられる。
図２は、高速メモリ１３を備えたマイコンの概略構成図の一例を示す。ＣＰＵ１２はデータバス１６と命令バス１７にそれぞれ接続されている。データバス１６には高速メモリ１３が接続され、高速メモリ１３にはＲＯＭ１５が接続されている。また、ＲＯＭ１５には命令バス１７が接続されている。ＲＯＭ１５のＭＡＰデータの一部を高速メモリ１３にキャッシュすることで、マイコンは、ＲＯＭ１５の近似値候補ｘiをサーチするよりも高速に近似値ｘｎを特定できる。
【００１２】
しかしながら、単に高速メモリ１３を設けただけでは以下のような問題がある。
図３は、ＲＯＭ１５に記憶されたＭＡＰデータの高速メモリ１３への読み込み（キャッシュ）を模式的に説明する図の一例である。図３の高速メモリ１３は、５つのラインＬ（１アクセスでＲＯＭ１５から読み出すことができるデータのサイズ）を有し、１ラインには５つの近似値候補ｘiを格納できる。すなわち、図３の高速メモリ１３には５×５＝２５個の近似値候補ｘiが格納される。ｘiを２byteとすると、１ラインは１０byte＝８０bitである。
【００１３】
図１のフローチャート図で説明したように、ＭＡＰ引きにおいてマイコンはデクリメントサーチするので、高速メモリ１３はｘ１００以下のｘiを、高速メモリ１３の最も小さいアドレスを有するラインＬ１に読み込む。１ラインには５つのｘiが格納できるので、Ｌ１には「ｘ９６〜ｘ１００」が読み込まれる。
【００１４】
そして、高速メモリ１３は、次にアドレスの小さいＬ２〜Ｌ５にもＭＡＰデータをキャッシュするが、ＭＡＰデータを高速メモリ１３がキャッシュする方向は、ＭＡＰデータのアドレスの昇順である。これは、ＭＡＰ引きプログラム２５の命令の実行順はＰＣ（プログラムカウンタ）により指示されるが、分岐等がなければ、ＰＣは所定量ずつインクリメントされるためである。すなわち、プログラムの実行方向と同じ方向に、ＭＡＰデータもＲＯＭ１５から読み出される（キャッシュされる）。この結果、Ｌ２には、「ｙ１〜ｙ５」が、Ｌ３には、「ｙ６〜ｙ１０」が、Ｌ４には、「ｙ１１〜ｙ１５」が、Ｌ５には、「ｙ１６〜ｙ２０」が、それぞれ読み込まれる。
【００１５】
そして、マイコンが近似値候補ｘiをデクリメントサーチすると、ｘ１００から順番に入力値ｘin比較することになる。この場合、ラインＬ１にｘinの近似値が格納されていればよいが、ｘinの近似値が格納されていない場合、ｘ９６まで比較した後、ミスヒットが生じる。高速メモリ１３は、ミスヒットにより、Ｌ１〜Ｌ５のデータを入れ替える（リフィル）。すなわち、最も小さいアドレスのラインＬ１には「ｘ９１〜ｘ９５」が読み出され、以降、ＲＯＭ１５のアドレスの昇順に、Ｌ２には「ｘ９６〜ｘ１００」が、Ｌ３には「ｙ１〜ｙ５」が、Ｌ４には「ｙ６〜ｙ１０」が、Ｌ５には「ｙ１１〜ｙ１５」が、それぞれ読み出される。そして、マイコンは同様に、ｘinとｘ９５との比較を開始する。
【００１６】
「ｘ９１〜ｘ９５」に入力値ｘinの近似値が見つからずにｘ９１までサーチすると、マイコンは、再度、高速メモリ１３の内容を入れ替える。したがって、２５個のＭＡＰデータが高速メモリ１３に格納されているにも拘わらず、比較を５回する毎に１回、高速メモリ１３の入れ替え処理を実行しなければならない。換言すれば、５つラインのうち、Ｌ２〜Ｌ５は全く、近似値候補ｘiのサーチに利用されていないことになる。これでは、高速メモリ１３の内容の入れ替えに時間がかかってしまい、ＭＡＰ引き（入力値ｘinの近似値を見つける処理）の速度が低下してしまうという問題がある。
【００１７】
本発明は、上記課題に鑑み、高速メモリを用いたＭＡＰ引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
検索用データを記憶する第１の記憶手段と、第１の記憶手段のアドレスに従い、前記検索用データを一様方向に読み出す読み出し手段と、読み出し手段が読み出した、前記検索用データの複製を記憶する第２の記憶手段と、第２の記憶手段に複製された検索用データを被検索値に基づき検索する検索手段が、検索用データをインクリメントサーチするかデクリメントサーチするかによって、検索用データの複製を読み出す方向を、第１の記憶手段のアドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段と、を有することを特徴とするデータマップ読み取り装置を提供する。
【発明の効果】
【００１９】
高速メモリを用いたＭＡＰ引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】マップ引き処理を説明するための図のフローチャート図、ＭＡＰデータの一例を示す図である。
【図２】高速メモリを備えたマイコンの概略構成図の一例である。
【図３】ＲＯＭに記憶されたＭＡＰデータの高速メモリへの読み込みを模式的に説明する図の一例である。
【図４】データマップ読み取り装置の概略構成図の一例である。
【図５】高速メモリに読み込まれるＭＡＰデータを模式的に説明する図の一例である。
【図６】データマップ読み取り装置の概略構成図の一例である（実施例２）。
【図７】データマップ読み取り装置の概略構成図の一例である（実施例３）。
【図８】ＭＡＰデータに登録された昇降指定情報の一例を示す図である。
【図９】マップ引き処理を説明するための図のフローチャート図の一例である（実施例３）。
【図１０】ＭＡＰデータを模式的に示す図の一例である（実施例４）。
【図１１】マップ引き処理を説明するための図のフローチャート図の一例である（実施例４）。
【図１２】データマップ読み取り装置の概略構成図の一例である（実施例５）。
【図１３】マップ引き処理を説明するための図のフローチャート図の一例である（実施例５）。
【図１４】ラインＬ１〜Ｌ６のｘi、yiを模式的に示す図の一例である（実施例５）。
【発明を実施するための形態】
【００２１】
以下、本発明を実施するための最良の形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００２２】
本実施例では、ＭＡＰデータのアドレスの降順に高速メモリ１３へ読み出すデータマップ読み取り装置１００について説明する。
【００２３】
図４は、データマップ読み取り装置１００の概略構成図の一例を示す。ＣＰＵ１２はデータバス１６及び命令バス１７にそれぞれ接続されている。データバス１６には高速メモリ１３が接続され、高速メモリ１３にはＲＯＭ１５が接続されている。また、ＲＯＭ１５には命令バス１７が接続されている。ＲＯＭ１５には、ＭＡＰデータ２４及びＭＡＰ引きプログラム２５が記憶されている。この他、データマップ読み取り装置１００は、一般のマイコンと同様にセンサからセンサ信号を取得するため、データバス１６にＩ／Ｏ１８が接続されている。このセンサ信号が、ＭＡＰ引きのための入力値ｘinとなる。
【００２４】
〔ＣＰＵ１２の演算〕
ＣＰＵ１２は、命令実行制御回路、プログラムカウンタ、命令デコーダ、演算ユニット、レジスタファイル等を備えている。命令フェッチ機構１４は、プログラムカウンタが指示するアドレスのＭＡＰ引きプログラム２５を予めＲＯＭ１５から読み出す、命令キャッシュを備える。命令フェッチ機構１４は、プログラムカウンタが指示するアドレス以降の所定量の命令をＲＯＭ１５から読み出しておく。ＣＰＵ１２が命令フェッチする際は、命令キャッシュから命令を読み出すことができる。
【００２５】
ＣＰＵ１２が補間演算する手順を説明する。手順自体は図１のフローチャート図と同じなので、図１に基づき説明する。
【００２６】
＜Ｓ１０、Ｓ２０＞
Ｉ／Ｏ１８がＣＰＵ１２に入力値ｘinの検出を知らせる、例えば割り込みがＣＰＵ１２に生じると、ＣＰＵ１２がこの入力値ｘinに対応したＭＡＰ引きプログラム２５を呼び出して実行を開始する。ＭＡＰ引きにおいてＣＰＵ１２が実行するＭＡＰ引きプログラム２５は、高速メモリ１３からの近似値候補ｘiのロード命令と、近似値候補ｘiと入力値ｘinとの比較命令を実行する。まず、ＣＰＵ１２は、入力値ｘinをレジスタファイルにストア（格納）する。そして、命令デコーダがロード命令を検出するので、ＣＰＵ１２は近似値候補ｘiのうち最大値のｘ_maxを高速メモリ１３からデータフェッチして例えばアキュムレータに記憶する。データフェッチにより、ＲＯＭ１５からラインＬ１〜Ｌ５にＭＡＰデータが読み込まれる。読み込みについては後に詳述する。
【００２７】
次に、命令デコーダが比較命令を検出するので、ＣＰＵ１２はレジスタファイルに記憶された入力値ｘinとアキュムレータに記憶された近似値候補ｘiを演算ユニットにて比較する。演算ユニットによる比較結果は、レジスタファイルのフラグに示される。ｘin＜ｘiの判定がＮｏとなるまで、ＣＰＵ１２は高速メモリ１３からのデータフェッチを繰り返し、近似値候補ｘiと入力値ｘinとの比較を繰り返す。
【００２８】
＜Ｓ３０＞
ｘin＜ｘiの判定がＮｏになると、図１のＭＡＰデータ２４にて説明したように、ＣＰＵ１２は現在のｘi（以下、ｘiを近似値ｘnという）に対応する出力近似値ｙn、ｘi＋１（以下、近似値ｘn＋１という）に対応する出力近似値ｙn+1を特定する。
【００２９】
＜Ｓ４０＞
近似値ｘnと出力近似値ｙnには１対１の対応関係があるので、近似値ｘnとｘn+1のアドレスに定数（ｘnのサイズ及び数により定まる）を加えたＭＡＰデータ２４のアドレスに、ｘnに対応する出力近似値ｙn及びｘn+1に対応する出力近似値ｙn+1が格納されている。ＣＰＵ１２はＭＡＰ引きプログラム２５中に予め記述されている定数を近似値ｘn、ｘn+1のアドレスに加えて出力近似値ｙnとｙn+1をロードする。これらはレジスタファイルに記憶される。
【００３０】
＜Ｓ５０＞
そして、ＭＡＰ引きプログラム２５は出力近似値ｙnとｙn+1に補間演算を施す。補間は、例えば、線形補間や２次補間等を用いればよく、本実施例に限定されるものではない。線形補間の場合、ＣＰＵ１２は次式で表される補間演算を実行する。補間演算により算出される補間値ｙoutが、入力値ｘinに演算を施して得られる演算結果に相当する目的の値である。
ｙout  ＝  ｛（ｘin−ｘn）／（ｘn+1−ｘn）｝×（ｙn+1−ｙn）＋ｙn
【００３１】
〔高速メモリ１３への読み込み、入れ替え制御〕
高速メモリ１３へのＭＡＰデータ２４の読み込み及び入れ替えについて説明する。高速メモリ１３は、プリロードバッファ、又は、Ｃａｃｈｅと呼ばれる揮発性のメモリであり、例えばＳＤＲＡＭ、ＳＲＡＭ等を実体とする。プリロードバッファとＣａｃｈｅはメモリ容量が異なるだけと考えてよいので、両者を区別せず、単に「高速メモリ」１３という。高速メモリ１３は、５つのラインＬ１〜Ｌ５を有する。１ラインは、ＲＯＭ１５への１回のアクセスで読み込み可能なメモリ容量の単位である。１ラインは例えば１０byteである。近似値候補ｘiの大きさが２byteであるとすると、１ラインには５つの近似値候補ｘiを読み込むことができる。この１ラインは、ＲＯＭ１５のアクセス単位でもあるので、ＲＯＭ１５のメモリ容量は８０bit×ｎである。（ｎ＝ＭＡＰデータのデータ数／５）。
【００３２】
高速メモリ１３は、「タグアドレス」と「インデックスアドレス」、および、ライン毎のデータが対応づけられて構成されている。ＭＡＰデータ２４のアクセス単位毎の先頭アドレスのうち上位ビットがタグ、下位ビットがインデックスである。近似値候補補ｘiをロードする際、ＣＰＵ１２は仮想アドレスを指定して高速メモリ１３にアクセスするので、高速メモリ１３は仮想アドレスをＴＬＢにより物理アドレスに変換する。高速メモリ１３は、物理アドレスの上位ビットをタグアドレスと比較して、サーチ対象の近似値候補ｘiが格納されているラインを特定する。
【００３３】
高速メモリ１３は入れ替え制御部２３を有する。入れ替え制御部２３は、ＭＡＰデータ２４を高速メモリ１３に読み込むと共に、入力値ｘinが高速メモリ１３に読み込まれた近似値候補ｘiにヒットしなかった場合（ミスヒットした場合）、全てのラインＬ１〜Ｌ５のＭＡＰデータ２４を入れ替える。すなわち、タグアドレスにより、次の近似値候補ｘiが格納されているラインを特定できない場合、ラインＬ１〜Ｌ５を入れ替える。高速メモリ１３のどのラインを入れ替えるかを決定する方法について、ラウンドロビンやＬＲＵ  (Least  Recently  Used)  等の方法が知られているが、本実施例ではミスヒットが生じると一連のラインＬ１〜Ｌ５を全て入れ替える。
【００３４】
図５は、高速メモリ１３に読み込まれるＭＡＰデータ２４を模式的に説明する図の一例である。これまで説明したように、ＭＡＰ引きプログラム２５はｘiをデクリメントサーチするので、ＭＡＰ引きプログラム２５が最初にＲＯＭ１５から読み込む近似値候補ｘiは最大値であるｘ_maxである。このため、入れ替え制御部２３は、ｘ_maxを含む１つのアクセス単位（８０bit）のＭＡＰデータ２４を、高速ラインのラインＬ1に読み込む。図示するように、ＭＡＰデータ２４は、ｘ１〜ｘ１００の近似値候補とｙ１〜ｙ１００の結果候補を有する。ｘ_max＝ｘ１００が、ｘ９６〜ｘ１００の１アクセス単位に含まれるとすると、入れ替え制御部２３は、「ｘ９６〜ｘ１００」をラインＬ１に読み込む。
【００３５】
そして、入れ替え部制御部２３は、ＲＯＭ１５のアドレスの降順に、ＭＡＰデータ２４をラインＬ２〜Ｌ５に読み込む（プリロード）。図示するように、ＲＯＭ１５には近似値候補ｘiが、ＲＯＭ１５のアドレスの昇順に格納されているので、ラインＬ２には「ｘ９１〜ｘ９５」が、ラインＬ３には「ｘ８６〜ｘ９０」が、読み込まれる。
【００３６】
入れ替え制御部２３は、読み込むＭＡＰデータ２４をアドレスで指定するアドレスレジスタ２２を有し、ＭＡＰ引きプログラム２５がｘ_maxを読み出す場合、ＲＯＭ１５においてｘ_maxが格納されているＲＯＭ１５の1アクセス単位の先頭のアドレスをアドレスレジスタ２２に記憶する。従来であれば、ラインＬにＭＡＰデータ２４を読み込む毎に、アドレスレジスタ２２の値を、１アクセス単位（８０bit）ずつインクリメントしていたが、本実施例ではラインＬ１〜Ｌ５に１アクセス単位のＭＡＰデータ２４を読み込む毎に、アドレスレジスタ２２の値を、１アクセス単位（８０bit）ずつデクリメントする。こうすることで、入れ替え制御部２３は、ＲＯＭ１５のアドレスの降順に、ＭＡＰデータ２４をラインＬ１〜Ｌ５に読み込むことができる。
【００３７】
したがって、最初にｘ_maxをＲＯＭ１５から読み出す際、プリロードと合わせ、高速メモリ１３はｘ７６〜Ｘ１００（２５個）の近似値候補ｘiをラインＬ１〜Ｌ５に読み込むことができる。ＭＡＰ引きプログラム２５は、１つの入力値ｘinに対しｘiをデクリメントサーチするので、ラインＬ１のx_maxからｘinとの比較を開始して、先頭であるｘ９６まで到達すると、ラインＬ２の近似値候補ｘ９５から入力値ｘinとの比較を繰り返すことができる。すなわち、ＭＡＰ引きプログラム２５が近似値候補ｘ７５と入力値ｘinとを比較するまで、ミスヒットしないのでラインＬ１〜Ｌ５の入れ替えが発生しない。
【００３８】
ｘ７５とｘinを比較する際はミスヒットが生じ、入れ替え制御部２３がＬ１〜Ｌ５に「ｘ５１〜ｘ７５」を読み込むので、次は、ｘ５０と入力値ｘinを比較するまではミスヒットが生じず、高速メモリ１３の入れ替えが発生しないことになる。サーチ方向と、ＭＡＰデータの読み込み方向を一致させることで、ミスヒットの頻度を大幅に低減できる。
【００３９】
このように、本実施例の高速メモリ１３は、高速メモリ１３に記憶可能な近似値候補ｘiの数までは、ミスヒット（入れ替え）の生じないようにするこができる。近似値ｘnがサーチされるまでの平均的な比較回数が分かれば、比較回数の平均値以上の数の近似値候補ｘiを高速メモリ１３に記憶できるように、メモリ容量を設計することができる。この場合、１つの入力値ｘinに対し、２回に１回は、高速メモリ１３の入れ替えなしに、近似値ｘnを特定できる。また、メモリ容量を平均値＋２σ（σ：標準偏差）にすれば、１つの入力値ｘinに対し、１００回に９５回は、高速メモリ１３の入れ替えなしに、近似値ｘnを特定できる。
【００４０】
以上説明したように、本実施例のデータマップ読み取り装置１００は、車両の電子制御ユニットのように、デクリメントサーチによりＭＡＰ引きする場合でも、ＭＡＰ引きによる入力値ｘinの近似値を特定する際、ＭＡＰ引きの処理速度を数倍以上に向上させることができる。
【実施例２】
【００４１】
本実施例では、ＭＡＰ引き専門のハードウェアを有するデータマップ読み取り装置１００について説明する。
図６は、データマップ読み取り装置１００の概略構成図の一例を示す。図６において図４と同一部には同一の符号を付しその説明は省略する。図６では、データバス１６にＭＡＰ引きエンジン１９が接続されている。
【００４２】
ＭＡＰ引きエンジン１９は、以下の機能を有する。
（１）近似値ｘnの取得
（２）出力近似値ｙnとｙn+1の取得
（３）補間値ｙoutの演算
すなわち、ＭＡＰ引きエンジン１９は、実施例１にて説明したＣＰＵ１２の演算内容をハードウェアにより実現する。なお、高速メモリ１３がＭＡＰデータ２４を読み込む順番は、ＲＯＭ１５におけるＭＡＰデータ２４のアドレスの降順である。
【００４３】
ＭＡＰ引きエンジン１９は、ＣＰＵ１２がＭＡＰ引きエンジン１９のレジスタに書き込んだ入力値ｘinを受け取る。または、Ｉ／Ｏ１８から直接、入力値ｘinを受け取ってもよい。入力値ｘinを受け取ると、ＭＡＰ引きエンジン１９は、高速メモリ１３をデクリメントサーチする。デクリメントサーチの間、高速メモリ１３の入れ替え制御部２３がミスヒットを検出すると、ＲＯＭ１５のアドレスの降順にＭＡＰデータ２４を読み込む。
【００４４】
ＭＡＰ引きエンジン１９は、入力値ｘinに対し近似値ｘnとｘn+1を特定すると、予め定められている定数を近似値ｘn、ｘn+1のアドレスに加えて、高速メモリ１３から出力近似値ｙnとｙn+1をロードする。これらは、ＭＡＰ引きエンジン１９のレジスタに一時的に記憶される。なお、近似値ｘn、ｘn+1のアドレスに加えられる「定数」は、ＣＰＵ１２が実行するＭＡＰ引きプログラム２５がＭＡＰ引きエンジン１９に書き込んでもよいし、予めＭＡＰ引きユニットに記憶されていてもよい。
【００４５】
そして、ＭＡＰ引きエンジン１９は、出力近似値ｙnとｙn+1に補間演算を施し補間値ｙoutを算出する。補間演算の演算方法は実施例１と同様である。ＭＡＰ引きエンジン１９は、例えばＣＰＵ１２に割り込みして補間演算の結果が得られたことをＣＰＵ１２に通知する。ＭＡＰ引きエンジン１９は、補間値ｙoutは直接ＣＰＵ１２のレジスタに書き込んでもよいし、ＲＡＭ１１等のメモリ経由でＣＰＵ１２に渡してもよい。
【００４６】
（１）（２）の処理では、原則的に、ＭＡＰ引きエンジン１９と高速メモリ１３間で処理が完結し、（３）の処理はＭＡＰ引きエンジン１９内で完結する。すなわち、ＣＰＵ１２の処理を妨げない。（１）（２）の処理で、例外的に、ＭＡＰ引きユニットとＣＰＵ１２がＲＯＭ１５へのアクセスが競合するのは、ミスヒットの場合だけである。
【００４７】
また、ＭＡＰ引きエンジン１９はＭＡＰ引きプログラム２５を実行するわけではないので、命令バス１７にアクセスする必要もなく、ＣＰＵ１２が命令バス１７とデータバス１６からそれぞれＲＯＭ１５にアクセスする際に生じるアクセス調停を低減することができる。
【００４８】
したがって、ＣＰＵ１２は入力値ｘinをＭＡＰ引きエンジン１９に渡した後、補間値ｙoutを取得するまで、別の処理を実行できる。例えば、入力値ｘinは１つとは限らないので（水温、油圧、エンジン回転数等）、別の入力値ｘinに対する補間値ｙoutを算出する処理を実行してもよい。この場合、ＭＡＰ引きエンジン１９とＣＰＵ１２が（１）（２）の処理の際、データバス１６の使用権の競合が生じるおそれがある。しかし、この場合でもＣＰＵ１２の演算処理の妨げにはならない。なお、ＭＡＰ引きエンジン１９が高速メモリ１３にアクセスする必要と、ＣＰＵ１２が高速メモリ１３にアクセスする必要があるため、データバス１６はマルチマスタ仕様のバスである。
【実施例３】
【００４９】
実施例１、２では、ＭＡＰデータ２４を降順に高速メモリ１３に読み込むデータマップ読み取り装置１００について説明したが、本実施例では、高速メモリ１３にＭＡＰデータ２４を読み込む順番を、降順又は昇順のいずれかに切り替えることができるデータマップ読み取り装置１００について説明する。１つのＣＰＵ１２が異なるＭＡＰ引きプログラム２５を実行する場合、ＭＡＰ引きプログラム２５によってはデクリメントサーチでなくインクリメントサーチする場合もあるし、ＣＰＵ１２がＭＡＰ引き以外の処理でＲＯＭ１５にアクセスする場合はＭＡＰ引きプログラム２５カウント同じようにデータの昇順にアクセスすることが多い。したがって、高速メモリ１３にＭＡＰデータ２４を読み込む順番を、降順又は昇順のいずれかに切り替えることで、ＭＡＰ引きプログラム２５やＣＰＵ１２の処理に適切な方向でＲＯＭ１５のＭＡＰデータ２４を読み込むことができる。
【００５０】
図７は、データマップ読み取り装置１００の概略構成図の一例を示す。図７において図６と同一部には同一の符号を付しその説明は省略する。図７の高速メモリ１３は昇降指定レジスタ２６を有する。昇降指定レジスタ２６は、例えばフラグであり「１」の場合にＲＯＭ１５のアドレスの降順にＭＡＰデータ２４を読み込むことを、「０」の場合にＲＯＭ１５のアドレスの昇順にＭＡＰデータ２４を読み込むことを、それぞれ意味する。昇降指定レジスタ２６の初期値は「０」である。
【００５１】
〔昇降指定レジスタ２６の設定〕
昇降指定レジスタ２６は、ＣＰＵ１２が有する昇降設定部２１が「０」又は「１」に設定する。昇降設定部２１は、例えばＭＡＰ引きプログラム２５のメイン関数から読み出されるサブルーチンである。昇降設定部２１は、例えば以下の方法で昇降指定レジスタ２６を設定する。
（３−１）ＭＡＰ引きプログラム２５に記述された昇降指定情報に従う。
（３−２）ＭＡＰデータ２４に記述された昇降指定情報に従う。
【００５２】
（３−１）の場合、昇降設定部２１（ＭＡＰ引きプログラム２５）が昇降指定レジスタ２６を「０」又は「１」のいずれに設定するかを示す昇降指定情報３１を有している。すなわち、昇降設定部２１は呼び出されると、昇降指定情報３１に従い昇降指定レジスタ２６を「０」又は「１」に設定することができる。昇降指定情報３１で、昇順と降順のどちらを指定するかは、入力値ｘinの性質（大きい値が多いか小さい値が多いか）により、プログラマにより記述される。ＭＡＰ引きプログラム２５に記述することで、昇降指定情報３１を固定にするのでなく、昇降設定部２１が入力値ｘinの過去１０個程度の性質（大きい値が多いか小さい値が多いか）の統計を取り、統計結果に応じて昇降指定情報３１を「０」又は「１」のいずれかに設定してもよい。なお、昇降指定情報３１は、「昇降する」又は「昇降しない」を指定できればよいので、最小１bitの情報である。
【００５３】
（３−２）の場合、昇降設定部２１はＭＡＰ引きを開始する前に、ＲＯＭ１５のＭＡＰデータ２４の所定の位置から昇降指定情報３１を読み出す。
図８は、ＭＡＰデータ２４に登録された昇降指定情報３１の一例を示す。ＭＡＰデータ２４の先頭に昇降指定情報３１が登録されている。したがって、昇降設定部２１は、ＭＡＰデータ２４の先頭アドレスを指定して昇降指定情報３１をロードし、昇降指定レジスタ２６に「１」又は「０」を設定する。なお、昇降指定情報３１をロードする際、昇降設定部２１が昇降指定レジスタ２６に「１」又は「０」を設定する前に、高速メモリ１３がＭＡＰデータ２４を読み込んでしまわないよう、昇降指定レジスタ２６には比較を開始する前に「１」又は「０」が設定される。
【００５４】
（３−２）のように、ＭＡＰ引きプログラム２５と昇降指定情報３１を分離しておけば、ＭＡＰ引きプログラム２５の開発時には昇降指定情報３１を意識する必要がなく、ＭＡＰ引きプログラム２５の開発効率が向上するというメリットもある。
【００５５】
なお、（３−１）及び（３−２）のいずれの場合も、ＣＰＵ１２でなくＭＡＰ引きエンジン１９が昇降指定レジスタ２６を設定することができる。（３−１）の場合は、ＣＰＵ１２から昇降指定情報３１を取得したＭＡＰ引きエンジン１９が、昇降指定情報３１に従い昇降指定レジスタ２６を「０」又は「１」に設定する。（３−２）の場合は、ＭＡＰデータ２４に昇降指定情報３１が記述されている。ＣＰＵ１２がＭＡＰデータ２４の先頭アドレスをＭＡＰ引きエンジン１９に通知すれば、ＭＡＰ引きエンジン１９は昇降指定情報３１をロードし、昇降指定レジスタ２６に「１」又は「０」を設定することができる。
【００５６】
〔ＭＡＰデータ２４の読み込み〕
そして、高速メモリ１３の入れ替え制御部２３は、ＭＡＰ引きプログラム２５が指定する近似値候補ｘiを読み出す場合、まず、昇降指定レジスタ２６を参照する。入れ替え制御部２３は、ＲＯＭ１５において近似値候補ｘiが格納されている1アクセス単位の先頭のアドレスをアドレスレジスタ２２に記憶し、ラインＬ１にアドレスレジスタ２２の１アクセス単位のＭＡＰデータ２４を読み込む。
【００５７】
２つめ以降のラインＬ２〜Ｌ５にＭＡＰデータ２４を読み込むため、入れ替え制御部２３は、以下のようにＭＡＰデータ２５を読み込む。
・昇降指定レジスタ２６が「０」の場合は、ラインＬ２〜Ｌ５に１アクセス単位のＭＡＰデータ２４を読み込む毎に、アドレスレジスタ２２の値を１アクセス単位（８０bit）ずつインクリメントする。
・昇降指定レジスタ２６が「１」の場合は、ラインＬ２〜Ｌ５に１アクセス単位のＭＡＰデータ２４を読み込む毎に、アドレスレジスタ２２の値を１アクセス単位（８０bit）ずつデクリメントする。
【００５８】
アドレスレジスタ２２の値が、昇降指定レジスタ２６の設定に応じて増加又は減少するので、昇降指定情報３１により、高速メモリ１３にＭＡＰデータ２４を読み込む順番を、降順又は昇順のいずれかに切り替えることができる。
【００５９】
〔動作手順〕
図９は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図９において実施例１にて説明したステップの説明は省略する。まず、昇降設定部２１は、昇降指定レジスタ２６を「１」又は「０」に設定する（Ｓ１）。上記のとおり、昇降設定部２１は、ＭＡＰ引きプログラム２５中に記述された昇降指定情報３１、又は、ＭＡＰデータ２４に登録された昇降指定情報３１に基づき、昇降指定レジスタ２６を「１」又は「０」に設定する。なお、昇降設定部２１は、ＭＡＰ引きエンジン１９が有していてもよい。昇降指定レジスタ２６の設定により、入れ替え制御部２３がＭＡＰデータ２４を読み込む方向が定まるので、高速メモリ１３にＭＡＰデータ２４を昇順又は降順に読み込むことができる。以降の処理は、実施例１と同様である。
【００６０】
本実施例のデータマップ読み取り装置１００は、高速メモリ１３にＭＡＰデータ２４を読み込む順番を、降順又は昇順のいずれかに切り替えることで、ＭＡＰ引きプログラム２５やＣＰＵ１２の処理に適切な方向でＲＯＭ１５のデータを高速メモリにキャッシュできる。ＭＡＰデータ２４を読み込む順番を固定する必要がないので、処理に応じて比較回数を抑制できる。
【実施例４】
【００６１】
本実施例では、入力値ｘinに応じて、高速メモリ１３にＭＡＰデータ２４を読み込む順番を、降順又は昇順のいずれかに切り替えるデータマップ読み取り装置１００について説明する。データマップ読み取り装置１００の概略構成図は実施例３と同様なので省略する。
【００６２】
図１０は、ＭＡＰデータ２４を模式的に示す図の一例である。ＭＡＰデータ２４の近似値候補ｘ１〜ｘ１００のうち、中央の近似値候補ｘ_midは固定である。例えば、１００個の近似値候補ｘiがある場合、ｘ_midはｘ５０又はｘ５１である。なお、ｘ_midの値が中央の値を示すとは限らず、中央の近似値候補ｘ_midとはアドレスにおける中央を意味する。したがって、ｘ_midの値としてｘ５０又はｘ５１の値が既知であれば、ｘinがｘ_midより小さいか、ｘ_midより大きいかを判定できることになる。
【００６３】
例えば、ｘinがｘ３０位の値の場合、ｘ１からインクリメントサーチした方が、ｘ１００からデクリメントサーチするよりも、早く近似値ｘnを特定できる。逆に、ｘinがｘ８０位の値の場合、ｘ１００からデクリメントサーチした方が、ｘ１からインクリメントサーチするよりも、早く近似値ｘnを特定できる。
【００６４】
これを利用して、本実施例の昇降設定部２１は、定数として記憶しているｘ_midの値とｘinを比較して、次のように昇降指定レジスタ２６に「１」又は「０」を設定する。ｘ_midの値は、ＭＡＰ引きプログラム２５又はＭＡＰデータ２４のどちらに記述されていてもよい。
（４−１）ｘin≦ｘ５０  の場合、昇降指定レジスタ２６に「０」を設定する。
（４−２）ｘin＞ｘ５０  の場合、昇降指定レジスタ２６に「１」を設定する。
【００６５】
したがって、入力値ｘinがｘ_maxよりもｘ_minに近ければ、ＭＡＰ引きプログラム２５はインクリメントサーチでき、入力値ｘinがｘ_minよりもｘ_maxに近ければ、ＭＡＰ引きプログラム２５はデクリメントサーチすることができる。したがって、入力値ｘinと近似値候補ｘiの比較回数を必ず５０回以下にすることができる。
【００６６】
なお、このような昇降指定レジスタ２６の設定は、ＣＰＵ１２が実行するＭＡＰ引きプログラム２５又はＭＡＰ引きエンジン１９のどちらでも行うこともできる。
【００６７】
〔動作手順〕
図１１は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図１１において実施例１にて説明したステップの説明は省略する。
【００６８】
まず、昇降設定部２１は、入力値ｘinがｘ５０以下か否かを判定する（Ｓ２）。入力値ｘinがｘ５０以下の場合（Ｓ２のＹｅｓ）、昇降設定部２１は昇降指定レジスタ２６に「０」を設定する（Ｓ３）。これにより、ＭＡＰ引きプログラム２５はインクリメントサーチできる。入力値ｘinがｘ５０より大きい場合（Ｓ２のＮｏ）、昇降設定部２１は昇降指定レジスタ２６に「１」を設定する（Ｓ４）。これにより、ＭＡＰ引きプログラム２５はデクリメントサーチできる。以降の処理は、実施例１と同様である。
【００６９】
本実施例のデータマップ読み取り装置１００は、入力値ｘinに応じて高速メモリ１３にＭＡＰデータ２４を読み込む順番を、降順又は昇順のいずれかに切り替えることができる。したがって、ＭＡＰ引きプログラム２５やＭＡＰデータ２４により固定されることなく、入力値ｘinとｘiの比較回数を低減し、近似値ｘnを特定するまでの時間を短縮できる。
【実施例５】
【００７０】
本実施例では、１つのｘinに対し、近似値候補ｘi、結果候補yiの両方に対し、昇順又は降順の順番で、高速メモリ１３にＭＡＰデータ２４を読み込むことができるデータマップ読み取り装置１００について説明する。
【００７１】
図１２は、データマップ読み取り装置１００の概略構成図の一例を示す。図１２において図７と同一部には同一の符号を付しその説明は省略する。図１２の高速メモリ１３は、昇降指定レジスタ２６−１、昇降指定レジスタ２６−２、開始アドレスレジスタ２７−１、及び、開始アドレス指令レジスタ２７−２、を有する。
【００７２】
昇降指定レジスタ２６−１は、ラインＬ１〜Ｌ３に読み出すＭＡＰデータ２４を、降順に読み出すか又は昇順に読み出すかを指定する。開始アドレスレジスタ２７−１には、昇降指定レジスタ２６−１の指定に応じて、昇順又は降順に読み出しを開始するＲＯＭ１５のアドレスが格納されている。
【００７３】
昇降指定レジスタ２６−２は、ラインＬ４〜Ｌ６に読み出すＭＡＰデータ２４を、降順に読み出すか又は昇順に読み出すかを指定する。開始アドレスレジスタ２７−２には、昇降指定レジスタ２６−２の指定に応じて、昇順又は降順に読み出しを開始するＲＯＭ１５のアドレスが格納されている。
【００７４】
そして、本実施例では、ラインの数を昇順用と降順用で等しくして（これまでの実施例より１つ多くして）、偶数のラインＬ１〜Ｌ６を用意する。上記のように、ラインＬ１〜Ｌ３に読み込まれるＭＡＰデータ２４は、昇降指定レジスタ２６−１により昇順か降順かが、開始アドレスレジスタ２７−１により読み出しを開始するＲＯＭ１５のアドレスが、それぞれ指定される。ラインＬ４〜Ｌ６に読み込まれるＭＡＰデータ２４は、昇降指定レジスタ２６−２により昇順か降順かが、開始アドレスレジスタ２７−２により読み出しを開始するＲＯＭ１５のアドレスが、それぞれ指定される。
【００７５】
このようなレジスタを備え、開始アドレスレジスタ２７−１，２７−２に適切なアドレスを格納しておくことで、ラインＬ１〜Ｌ６に近似値候補ｘiと結果候補yiを混在させて読み出すことができる。
【００７６】
例えば、開始アドレスレジスタ２７−１にはｘ_maxのアドレスが格納され、開始アドレスレジスタ２７−２にはy_maxのアドレスが格納される。そして、昇降指定レジスタ２６−１、２６−２には、降順に読み出すべきことが指定される（例えば、フラグに「１」が格納される。
【００７７】
図１３は、ラインＬ１〜Ｌ３に近似値候補ｘiが降順に、ラインＬ４〜Ｌ６に結果候補yiが降順に、それぞれ格納されている高速メモリ１３の一例を示す図である。ラインＬ１〜Ｌ３に近似値候補ｘiが降順に、ラインＬ４〜Ｌ６に結果候補yiが降順に、それぞれ格納されているので、入力値ｘinが高速メモリ１３に読み込まれた近似値候補ｘiにヒットした場合、対応する結果候補yiも高速メモリ１３に格納されている。したがって、ＭＡＰ引きを高速化することができる。図１３では、ｘ８８に対応したｙ８８を再ロードすることなく高速メモリ１３から読み出すことができる。
【００７８】
なお、昇降設定部２１は、実施例３と同様に、ＭＡＰ引きプログラム２５中に記述された昇降指定情報３１、又は、ＭＡＰデータ２４に登録された昇降指定情報３１に基づき、昇降指定レジスタ２６−１、２６−２に「１」又は「０」に設定する。一方が降順で他方が昇順ということはないので、昇降指定情報３１は昇降指定レジスタ２６−１、２６−２に共通でよい。
【００７９】
昇降設定部２１は、降順の場合、ｘ_maxのアドレスを開始アドレスレジスタ２７−１に設定し、昇順の場合、ｘ_minのアドレスを開始アドレスレジスタ２７−１に設定する。また、昇降設定部２１は、降順の場合、y_maxのアドレスを開始アドレスレジスタ２７−２に設定し、昇順の場合、y_minのアドレスを開始アドレスレジスタ２７−２に設定する。
【００８０】
昇降設定部２１は、ＭＡＰデータ２４のサイズ、近似値候補ｘi（又は結果候補yi）の数、及び、近似値候補ｘi（又は結果候補yi）１つのサイズ（バイト数）、からｘ_max及びｙ_maxのアドレスを算出する。ＭＡＰデータ２４のサイズは、固定であるので昇降設定部２１が予め記憶しているか、ＲＯＭ１５に記憶されたＭＡＰデータ２４の先頭に記述されている。近似値候補ｘi、結果候補yiの数も固定であるので、昇降設定部２１が予め記憶しているか、ＲＯＭ１５に記憶されたＭＡＰデータ２４の先頭に記述されている。ｘi、yiのバイト数も決まっている。なお、ｘiとyiの数は等しい。したがって、昇降設定部２１は次のようにしてｘ_maxのアドレス、y_max、ｘ_minのアドレス、y_min、のアドレスを決定する。
ｘ_maxのアドレス  ＝  ＭＡＰデータ２４の先頭アドレス＋ｘiのサイズ×ｘiの数
ｙ_maxのアドレス  ＝  ｘ_maxのアドレス＋ＭＡＰデータ２４の先頭アドレス＋yiのサイズ×yiの数
ｘ_minのアドレス  ＝  ＭＡＰデータ２４の先頭アドレス
ｙ_minのアドレス  ＝  ｘ_maxのアドレス＋yiのサイズ
昇降設定部２１は、ＭＡＰ引きプログラム２５から呼び出されると、昇降指定情報３１に基づき昇降指定レジスタ２６−１、２６−２に「１」又は「０」に設定する。昇降設定部２１は、昇降指定レジスタ２６−１が「１」の場合は、ｘ_maxのアドレスを開始アドレスレジスタ２７−１に、昇降指定レジスタ２６−１が「０」の場合は、ｘ_minのアドレスを開始アドレスレジスタ２７−１に設定する。同様に、昇降設定部２１は、昇降指定レジスタ２６−２が「１」の場合は、y_maxのアドレスを開始アドレスレジスタ２７−２に、昇降指定レジスタ２６−２が「０」の場合は、y_minのアドレスを開始アドレスレジスタ２７−２に設定する。
【００８１】
入れ替え制御部２３は、昇降指定レジスタ２６−１、２６−２を参照して、降順に読み出すか昇順に読み出すかを決定する。読み出し先のアドレスは、開始アドレスレジスタ２７−１、２７−２に記憶されている。
【００８２】
図１４は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図１４において実施例１にて説明したステップの説明は省略する。まず、昇降設定部２１は、昇降指定レジスタ２６−１、２６−２に「１」又は「０」を設定する（Ｓ１）。昇降指定レジスタ２６−１、２６−２の設定により、入れ替え制御部２３がＭＡＰデータ２４を読み込む方向が定まる。
【００８３】
ついで、昇降設定部２１は、ｘ_maxのアドレスを算出して、開始アドレスレジスタ２７−１に記憶する（Ｓ５）。また、昇降設定部２１は、ｙ_maxのアドレスを算出して、開始アドレスレジスタ２７−２に記憶する（Ｓ６）。
【００８４】
以上の設定により、ＭＡＰ引きエンジン１９は、Ｌ１〜Ｌ３にＭＡＰデータ２４の近似値候補ｘiを降順に、Ｌ４〜Ｌ６にＭＡＰデータ２４の結果候補yiを降順に、それぞれ読み込む。したがって、入力値ｘinの近似値ｘnを特定できた場合、ＭＡＰ引きプログラム２５は、高速メモリ１３から出力近似値ｙnとｙｎ＋１を読み出すことができる。したがって、ＭＡＰ引きを高速化することができる。
【００８５】
なお、以降の処理は、実施例３と同様である。また、実施例４と同様に、入力値ｘinに応じて、高速メモリ１３にＭＡＰデータ２４を読み込む順番を、降順又は昇順のいずれかに切り替えてもよい。
【００８６】
以上説明したように、本実施形態のデータマップ読み取り装置１００は、ＭＡＰ引きの際のサーチ方向に応じて、近似値候補ｘi、結果候補yiの両方を昇順又は降順に高速メモリ１３に読み出すことができるので、ＭＡＰ引きの処理を高速化することができる。
【符号の説明】
【００８７】
１１    ＲＡＭ
１２    ＣＰＵ
１３    高速メモリ
１４    命令フェッチ機構
１５    ＲＯＭ
１９    ＭＡＰ引きエンジン
２１    昇降設定部
２３    入れ替え制御部
２４    ＭＡＰデータ
２５    ＭＡＰ引きプログラム
【図１】
2011013913.tif 000003
【図２】
2011013913.tif 000004
【図３】
2011013913.tif 000005
【図４】
2011013913.tif 000006
【図５】
2011013913.tif 000007
【図６】
2011013913.tif 000008
【図７】
2011013913.tif 000009
【図８】
2011013913.tif 000010
【図９】
2011013913.tif 000011
【図１０】
2011013913.tif 000012
【図１１】
2011013913.tif 000013
【図１２】
2011013913.tif 000014
【図１３】
2011013913.tif 000015
【図１４】
2011013913.tif 000016