データマップ読み取り装置、データマップ読み取り方法
【課題】高速メモリを用いたMAP引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供すること
【解決手段】検索用データ24を記憶する第1の記憶手段15と、第1の記憶手段15のアドレスに従い、検索用データ24を一様方向に読み出す読み出し手段23と、読み出し手段が読み出した、検索用データ24の複製を記憶する第2の記憶手段13と、第2の記憶手段13に複製された検索用データ24を被検索値xinに基づき検索する検索手段25が、検索用データを24インクリメントサーチするかデクリメントサーチするかによって、検索用データ24の複製を読み出す方向を、第1の記憶手段15のアドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段21と、を有することを特徴とするデータマップ読み取り装置100を提供する。
【解決手段】検索用データ24を記憶する第1の記憶手段15と、第1の記憶手段15のアドレスに従い、検索用データ24を一様方向に読み出す読み出し手段23と、読み出し手段が読み出した、検索用データ24の複製を記憶する第2の記憶手段13と、第2の記憶手段13に複製された検索用データ24を被検索値xinに基づき検索する検索手段25が、検索用データを24インクリメントサーチするかデクリメントサーチするかによって、検索用データ24の複製を読み出す方向を、第1の記憶手段15のアドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段21と、を有することを特徴とするデータマップ読み取り装置100を提供する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、MAP引きにより所望の値を取得するデータマップ読み取り装置及びデータマップ読み取り方法に関する。
【背景技術】
【0002】
エンジンやブレーキなどの車載装置を電子制御する車載電子制御システムでは、非常に高負荷な演算を車両の動作状態に合わせて逐次行い、かつ、その演算結果を非常に短時間に動作状態に反映させなければならない。すなわち、制御系の演算は、情報処理系の演算と異なり、リアルタイム性が要求される。マイコンの負荷を低減しリアルタイム性が確保されるよう、車両用電子制御システムでは、演算をそのまま実行するのでなくマップ引きと呼ばれる処理により演算と同等の値を決定する手法が導入されることがある(例えば、特許文献1参照。)。特許文献1には、スロットル開度とアイドル制御弁駆動信号のデューティ比に対するエンジン吸入空気量の関係を記憶しておき、スロットル開度とデューティ比に演算を施すことなく、記憶してある関係からエンジン吸入空気量を推定するマップ引き処理が開示されている。
【0003】
図1(a)はマップ引き処理を説明するフローチャート図を、図1(b)はMAPデータの一例をそれぞれ示す。MAPデータは電子制御システムのマイコンが有するROM15に記憶されている。MAPデータのうち、「x1〜x100」は入力値xinの近似値候補であり、「y1〜y100」は入力値xinに対する結果候補である。以下、「x1〜x100」を近似値候補「xi」、「y1〜y100」を結果候補「yi」という。
【0004】
マイコンには、何らかのセンサ(例えば、水温センサ、油圧センサ、エンジン回転数センサ等)から何らかの入力値xinが入力される。MAP引きの際、マイコンはxinに最も近い近似値を近似値候補xiからサーチする。このため、マイコンは、MAPの近似値候補xiと入力値xinを順番に比較する(S10)。比較する場合、近似値候補xiの小さいものから順に入力値xinと比較していく方法(インクリメントサーチ)と、近似値候補xiの大きいものから順に比較していく方法(デクリメントサーチ)と、があるが、車両ではデクリメントサーチが採用される場合が多い。これは、マイコンに高負荷がかかる際、入力値xinの値も近似値候補xiの最大値であるx_maxに近い値になる場合が多く、デクリメントサーチした方が入力値xinの近似値を少ない比較回数で見つけることができるからである。
【0005】
マイコンは、xin<xiか否かを比較する(S20)。近似値候補xiの方が大きい場合(S20のYes)、マイコンは「i」をデクリメントして、入力値xinと近似値候補xiとの比較を繰り返す。
【0006】
入力値xinが近似値候補xi以上となった場合(S20のNo)、マイコンはその時の近似値候補xiと近似値候補xiより1つ大きい近似値候補xi+1を特定する(S30)。入力値xinは、近似値候補xiとxi+1の間にあることが分かる。図のMAPを例に説明すると、入力値xinが方近似値候補「x35」以上の場合、近似値候補xiは「x35」に、xi+1は「x36」となる。説明を分かりやすくするため、フローチャート図では、改めて近似値候補xiを近似値xn、近似値候補xi+1を近似値xn+1とおいた。
【0007】
次に、マイコンは、近似値xnに対応する出力近似値yn、xn+1に対応する出力近似値yn+1をMAPから読み出す(S40)。近似値候補xiと結果候補yiは一意に対応しているので、出力近似値ynとyn+1はサーチすることなく読み出すことができる。図ではy35が出力近似値yn、y36が出力近似値yn+1である。
【0008】
マイコンは、入力値xinに相当する補間値youtを、出力近似値ynとyn+1の補間演算により求める(S50)。以上が、図1の処理である。
【0009】
しかしながら、このような処理では、近似値候補xiをサーチする度にROM15にアクセスしなければならない。ROM15からの読み出しは、命令実行と比較しても低速であり、また、命令フェッチとも競合するので、バスの調停が必要となる。また、ステップS10、S20に示したように、近似値xn、xn+1を見つけるまで、比較の度にループ処理が必要なので、入力値xinによっては最大100回、比較処理しなければならない。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平3−952号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
このような課題に対し、プリロードバッファやキャッシュと呼ばれる高速メモリ13をCPU12とROM15の間に配置することが考えられる。
図2は、高速メモリ13を備えたマイコンの概略構成図の一例を示す。CPU12はデータバス16と命令バス17にそれぞれ接続されている。データバス16には高速メモリ13が接続され、高速メモリ13にはROM15が接続されている。また、ROM15には命令バス17が接続されている。ROM15のMAPデータの一部を高速メモリ13にキャッシュすることで、マイコンは、ROM15の近似値候補xiをサーチするよりも高速に近似値xnを特定できる。
【0012】
しかしながら、単に高速メモリ13を設けただけでは以下のような問題がある。
図3は、ROM15に記憶されたMAPデータの高速メモリ13への読み込み(キャッシュ)を模式的に説明する図の一例である。図3の高速メモリ13は、5つのラインL(1アクセスでROM15から読み出すことができるデータのサイズ)を有し、1ラインには5つの近似値候補xiを格納できる。すなわち、図3の高速メモリ13には5×5=25個の近似値候補xiが格納される。xiを2byteとすると、1ラインは10byte=80bitである。
【0013】
図1のフローチャート図で説明したように、MAP引きにおいてマイコンはデクリメントサーチするので、高速メモリ13はx100以下のxiを、高速メモリ13の最も小さいアドレスを有するラインL1に読み込む。1ラインには5つのxiが格納できるので、L1には「x96〜x100」が読み込まれる。
【0014】
そして、高速メモリ13は、次にアドレスの小さいL2〜L5にもMAPデータをキャッシュするが、MAPデータを高速メモリ13がキャッシュする方向は、MAPデータのアドレスの昇順である。これは、MAP引きプログラム25の命令の実行順はPC(プログラムカウンタ)により指示されるが、分岐等がなければ、PCは所定量ずつインクリメントされるためである。すなわち、プログラムの実行方向と同じ方向に、MAPデータもROM15から読み出される(キャッシュされる)。この結果、L2には、「y1〜y5」が、L3には、「y6〜y10」が、L4には、「y11〜y15」が、L5には、「y16〜y20」が、それぞれ読み込まれる。
【0015】
そして、マイコンが近似値候補xiをデクリメントサーチすると、x100から順番に入力値xin比較することになる。この場合、ラインL1にxinの近似値が格納されていればよいが、xinの近似値が格納されていない場合、x96まで比較した後、ミスヒットが生じる。高速メモリ13は、ミスヒットにより、L1〜L5のデータを入れ替える(リフィル)。すなわち、最も小さいアドレスのラインL1には「x91〜x95」が読み出され、以降、ROM15のアドレスの昇順に、L2には「x96〜x100」が、L3には「y1〜y5」が、L4には「y6〜y10」が、L5には「y11〜y15」が、それぞれ読み出される。そして、マイコンは同様に、xinとx95との比較を開始する。
【0016】
「x91〜x95」に入力値xinの近似値が見つからずにx91までサーチすると、マイコンは、再度、高速メモリ13の内容を入れ替える。したがって、25個のMAPデータが高速メモリ13に格納されているにも拘わらず、比較を5回する毎に1回、高速メモリ13の入れ替え処理を実行しなければならない。換言すれば、5つラインのうち、L2〜L5は全く、近似値候補xiのサーチに利用されていないことになる。これでは、高速メモリ13の内容の入れ替えに時間がかかってしまい、MAP引き(入力値xinの近似値を見つける処理)の速度が低下してしまうという問題がある。
【0017】
本発明は、上記課題に鑑み、高速メモリを用いたMAP引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供することを目的とする。
【課題を解決するための手段】
【0018】
検索用データを記憶する第1の記憶手段と、第1の記憶手段のアドレスに従い、前記検索用データを一様方向に読み出す読み出し手段と、読み出し手段が読み出した、前記検索用データの複製を記憶する第2の記憶手段と、第2の記憶手段に複製された検索用データを被検索値に基づき検索する検索手段が、検索用データをインクリメントサーチするかデクリメントサーチするかによって、検索用データの複製を読み出す方向を、第1の記憶手段のアドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段と、を有することを特徴とするデータマップ読み取り装置を提供する。
【発明の効果】
【0019】
高速メモリを用いたMAP引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供することができる。
【図面の簡単な説明】
【0020】
【図1】マップ引き処理を説明するための図のフローチャート図、MAPデータの一例を示す図である。
【図2】高速メモリを備えたマイコンの概略構成図の一例である。
【図3】ROMに記憶されたMAPデータの高速メモリへの読み込みを模式的に説明する図の一例である。
【図4】データマップ読み取り装置の概略構成図の一例である。
【図5】高速メモリに読み込まれるMAPデータを模式的に説明する図の一例である。
【図6】データマップ読み取り装置の概略構成図の一例である(実施例2)。
【図7】データマップ読み取り装置の概略構成図の一例である(実施例3)。
【図8】MAPデータに登録された昇降指定情報の一例を示す図である。
【図9】マップ引き処理を説明するための図のフローチャート図の一例である(実施例3)。
【図10】MAPデータを模式的に示す図の一例である(実施例4)。
【図11】マップ引き処理を説明するための図のフローチャート図の一例である(実施例4)。
【図12】データマップ読み取り装置の概略構成図の一例である(実施例5)。
【図13】マップ引き処理を説明するための図のフローチャート図の一例である(実施例5)。
【図14】ラインL1〜L6のxi、yiを模式的に示す図の一例である(実施例5)。
【発明を実施するための形態】
【0021】
以下、本発明を実施するための最良の形態について図面を参照しながら実施例を挙げて説明する。
【実施例1】
【0022】
本実施例では、MAPデータのアドレスの降順に高速メモリ13へ読み出すデータマップ読み取り装置100について説明する。
【0023】
図4は、データマップ読み取り装置100の概略構成図の一例を示す。CPU12はデータバス16及び命令バス17にそれぞれ接続されている。データバス16には高速メモリ13が接続され、高速メモリ13にはROM15が接続されている。また、ROM15には命令バス17が接続されている。ROM15には、MAPデータ24及びMAP引きプログラム25が記憶されている。この他、データマップ読み取り装置100は、一般のマイコンと同様にセンサからセンサ信号を取得するため、データバス16にI/O18が接続されている。このセンサ信号が、MAP引きのための入力値xinとなる。
【0024】
〔CPU12の演算〕
CPU12は、命令実行制御回路、プログラムカウンタ、命令デコーダ、演算ユニット、レジスタファイル等を備えている。命令フェッチ機構14は、プログラムカウンタが指示するアドレスのMAP引きプログラム25を予めROM15から読み出す、命令キャッシュを備える。命令フェッチ機構14は、プログラムカウンタが指示するアドレス以降の所定量の命令をROM15から読み出しておく。CPU12が命令フェッチする際は、命令キャッシュから命令を読み出すことができる。
【0025】
CPU12が補間演算する手順を説明する。手順自体は図1のフローチャート図と同じなので、図1に基づき説明する。
【0026】
<S10、S20>
I/O18がCPU12に入力値xinの検出を知らせる、例えば割り込みがCPU12に生じると、CPU12がこの入力値xinに対応したMAP引きプログラム25を呼び出して実行を開始する。MAP引きにおいてCPU12が実行するMAP引きプログラム25は、高速メモリ13からの近似値候補xiのロード命令と、近似値候補xiと入力値xinとの比較命令を実行する。まず、CPU12は、入力値xinをレジスタファイルにストア(格納)する。そして、命令デコーダがロード命令を検出するので、CPU12は近似値候補xiのうち最大値のx_maxを高速メモリ13からデータフェッチして例えばアキュムレータに記憶する。データフェッチにより、ROM15からラインL1〜L5にMAPデータが読み込まれる。読み込みについては後に詳述する。
【0027】
次に、命令デコーダが比較命令を検出するので、CPU12はレジスタファイルに記憶された入力値xinとアキュムレータに記憶された近似値候補xiを演算ユニットにて比較する。演算ユニットによる比較結果は、レジスタファイルのフラグに示される。xin<xiの判定がNoとなるまで、CPU12は高速メモリ13からのデータフェッチを繰り返し、近似値候補xiと入力値xinとの比較を繰り返す。
【0028】
<S30>
xin<xiの判定がNoになると、図1のMAPデータ24にて説明したように、CPU12は現在のxi(以下、xiを近似値xnという)に対応する出力近似値yn、xi+1(以下、近似値xn+1という)に対応する出力近似値yn+1を特定する。
【0029】
<S40>
近似値xnと出力近似値ynには1対1の対応関係があるので、近似値xnとxn+1のアドレスに定数(xnのサイズ及び数により定まる)を加えたMAPデータ24のアドレスに、xnに対応する出力近似値yn及びxn+1に対応する出力近似値yn+1が格納されている。CPU12はMAP引きプログラム25中に予め記述されている定数を近似値xn、xn+1のアドレスに加えて出力近似値ynとyn+1をロードする。これらはレジスタファイルに記憶される。
【0030】
<S50>
そして、MAP引きプログラム25は出力近似値ynとyn+1に補間演算を施す。補間は、例えば、線形補間や2次補間等を用いればよく、本実施例に限定されるものではない。線形補間の場合、CPU12は次式で表される補間演算を実行する。補間演算により算出される補間値youtが、入力値xinに演算を施して得られる演算結果に相当する目的の値である。
yout = {(xin−xn)/(xn+1−xn)}×(yn+1−yn)+yn
【0031】
〔高速メモリ13への読み込み、入れ替え制御〕
高速メモリ13へのMAPデータ24の読み込み及び入れ替えについて説明する。高速メモリ13は、プリロードバッファ、又は、Cacheと呼ばれる揮発性のメモリであり、例えばSDRAM、SRAM等を実体とする。プリロードバッファとCacheはメモリ容量が異なるだけと考えてよいので、両者を区別せず、単に「高速メモリ」13という。高速メモリ13は、5つのラインL1〜L5を有する。1ラインは、ROM15への1回のアクセスで読み込み可能なメモリ容量の単位である。1ラインは例えば10byteである。近似値候補xiの大きさが2byteであるとすると、1ラインには5つの近似値候補xiを読み込むことができる。この1ラインは、ROM15のアクセス単位でもあるので、ROM15のメモリ容量は80bit×nである。(n=MAPデータのデータ数/5)。
【0032】
高速メモリ13は、「タグアドレス」と「インデックスアドレス」、および、ライン毎のデータが対応づけられて構成されている。MAPデータ24のアクセス単位毎の先頭アドレスのうち上位ビットがタグ、下位ビットがインデックスである。近似値候補補xiをロードする際、CPU12は仮想アドレスを指定して高速メモリ13にアクセスするので、高速メモリ13は仮想アドレスをTLBにより物理アドレスに変換する。高速メモリ13は、物理アドレスの上位ビットをタグアドレスと比較して、サーチ対象の近似値候補xiが格納されているラインを特定する。
【0033】
高速メモリ13は入れ替え制御部23を有する。入れ替え制御部23は、MAPデータ24を高速メモリ13に読み込むと共に、入力値xinが高速メモリ13に読み込まれた近似値候補xiにヒットしなかった場合(ミスヒットした場合)、全てのラインL1〜L5のMAPデータ24を入れ替える。すなわち、タグアドレスにより、次の近似値候補xiが格納されているラインを特定できない場合、ラインL1〜L5を入れ替える。高速メモリ13のどのラインを入れ替えるかを決定する方法について、ラウンドロビンやLRU (Least Recently Used) 等の方法が知られているが、本実施例ではミスヒットが生じると一連のラインL1〜L5を全て入れ替える。
【0034】
図5は、高速メモリ13に読み込まれるMAPデータ24を模式的に説明する図の一例である。これまで説明したように、MAP引きプログラム25はxiをデクリメントサーチするので、MAP引きプログラム25が最初にROM15から読み込む近似値候補xiは最大値であるx_maxである。このため、入れ替え制御部23は、x_maxを含む1つのアクセス単位(80bit)のMAPデータ24を、高速ラインのラインL1に読み込む。図示するように、MAPデータ24は、x1〜x100の近似値候補とy1〜y100の結果候補を有する。x_max=x100が、x96〜x100の1アクセス単位に含まれるとすると、入れ替え制御部23は、「x96〜x100」をラインL1に読み込む。
【0035】
そして、入れ替え部制御部23は、ROM15のアドレスの降順に、MAPデータ24をラインL2〜L5に読み込む(プリロード)。図示するように、ROM15には近似値候補xiが、ROM15のアドレスの昇順に格納されているので、ラインL2には「x91〜x95」が、ラインL3には「x86〜x90」が、読み込まれる。
【0036】
入れ替え制御部23は、読み込むMAPデータ24をアドレスで指定するアドレスレジスタ22を有し、MAP引きプログラム25がx_maxを読み出す場合、ROM15においてx_maxが格納されているROM15の1アクセス単位の先頭のアドレスをアドレスレジスタ22に記憶する。従来であれば、ラインLにMAPデータ24を読み込む毎に、アドレスレジスタ22の値を、1アクセス単位(80bit)ずつインクリメントしていたが、本実施例ではラインL1〜L5に1アクセス単位のMAPデータ24を読み込む毎に、アドレスレジスタ22の値を、1アクセス単位(80bit)ずつデクリメントする。こうすることで、入れ替え制御部23は、ROM15のアドレスの降順に、MAPデータ24をラインL1〜L5に読み込むことができる。
【0037】
したがって、最初にx_maxをROM15から読み出す際、プリロードと合わせ、高速メモリ13はx76〜X100(25個)の近似値候補xiをラインL1〜L5に読み込むことができる。MAP引きプログラム25は、1つの入力値xinに対しxiをデクリメントサーチするので、ラインL1のx_maxからxinとの比較を開始して、先頭であるx96まで到達すると、ラインL2の近似値候補x95から入力値xinとの比較を繰り返すことができる。すなわち、MAP引きプログラム25が近似値候補x75と入力値xinとを比較するまで、ミスヒットしないのでラインL1〜L5の入れ替えが発生しない。
【0038】
x75とxinを比較する際はミスヒットが生じ、入れ替え制御部23がL1〜L5に「x51〜x75」を読み込むので、次は、x50と入力値xinを比較するまではミスヒットが生じず、高速メモリ13の入れ替えが発生しないことになる。サーチ方向と、MAPデータの読み込み方向を一致させることで、ミスヒットの頻度を大幅に低減できる。
【0039】
このように、本実施例の高速メモリ13は、高速メモリ13に記憶可能な近似値候補xiの数までは、ミスヒット(入れ替え)の生じないようにするこができる。近似値xnがサーチされるまでの平均的な比較回数が分かれば、比較回数の平均値以上の数の近似値候補xiを高速メモリ13に記憶できるように、メモリ容量を設計することができる。この場合、1つの入力値xinに対し、2回に1回は、高速メモリ13の入れ替えなしに、近似値xnを特定できる。また、メモリ容量を平均値+2σ(σ:標準偏差)にすれば、1つの入力値xinに対し、100回に95回は、高速メモリ13の入れ替えなしに、近似値xnを特定できる。
【0040】
以上説明したように、本実施例のデータマップ読み取り装置100は、車両の電子制御ユニットのように、デクリメントサーチによりMAP引きする場合でも、MAP引きによる入力値xinの近似値を特定する際、MAP引きの処理速度を数倍以上に向上させることができる。
【実施例2】
【0041】
本実施例では、MAP引き専門のハードウェアを有するデータマップ読み取り装置100について説明する。
図6は、データマップ読み取り装置100の概略構成図の一例を示す。図6において図4と同一部には同一の符号を付しその説明は省略する。図6では、データバス16にMAP引きエンジン19が接続されている。
【0042】
MAP引きエンジン19は、以下の機能を有する。
(1)近似値xnの取得
(2)出力近似値ynとyn+1の取得
(3)補間値youtの演算
すなわち、MAP引きエンジン19は、実施例1にて説明したCPU12の演算内容をハードウェアにより実現する。なお、高速メモリ13がMAPデータ24を読み込む順番は、ROM15におけるMAPデータ24のアドレスの降順である。
【0043】
MAP引きエンジン19は、CPU12がMAP引きエンジン19のレジスタに書き込んだ入力値xinを受け取る。または、I/O18から直接、入力値xinを受け取ってもよい。入力値xinを受け取ると、MAP引きエンジン19は、高速メモリ13をデクリメントサーチする。デクリメントサーチの間、高速メモリ13の入れ替え制御部23がミスヒットを検出すると、ROM15のアドレスの降順にMAPデータ24を読み込む。
【0044】
MAP引きエンジン19は、入力値xinに対し近似値xnとxn+1を特定すると、予め定められている定数を近似値xn、xn+1のアドレスに加えて、高速メモリ13から出力近似値ynとyn+1をロードする。これらは、MAP引きエンジン19のレジスタに一時的に記憶される。なお、近似値xn、xn+1のアドレスに加えられる「定数」は、CPU12が実行するMAP引きプログラム25がMAP引きエンジン19に書き込んでもよいし、予めMAP引きユニットに記憶されていてもよい。
【0045】
そして、MAP引きエンジン19は、出力近似値ynとyn+1に補間演算を施し補間値youtを算出する。補間演算の演算方法は実施例1と同様である。MAP引きエンジン19は、例えばCPU12に割り込みして補間演算の結果が得られたことをCPU12に通知する。MAP引きエンジン19は、補間値youtは直接CPU12のレジスタに書き込んでもよいし、RAM11等のメモリ経由でCPU12に渡してもよい。
【0046】
(1)(2)の処理では、原則的に、MAP引きエンジン19と高速メモリ13間で処理が完結し、(3)の処理はMAP引きエンジン19内で完結する。すなわち、CPU12の処理を妨げない。(1)(2)の処理で、例外的に、MAP引きユニットとCPU12がROM15へのアクセスが競合するのは、ミスヒットの場合だけである。
【0047】
また、MAP引きエンジン19はMAP引きプログラム25を実行するわけではないので、命令バス17にアクセスする必要もなく、CPU12が命令バス17とデータバス16からそれぞれROM15にアクセスする際に生じるアクセス調停を低減することができる。
【0048】
したがって、CPU12は入力値xinをMAP引きエンジン19に渡した後、補間値youtを取得するまで、別の処理を実行できる。例えば、入力値xinは1つとは限らないので(水温、油圧、エンジン回転数等)、別の入力値xinに対する補間値youtを算出する処理を実行してもよい。この場合、MAP引きエンジン19とCPU12が(1)(2)の処理の際、データバス16の使用権の競合が生じるおそれがある。しかし、この場合でもCPU12の演算処理の妨げにはならない。なお、MAP引きエンジン19が高速メモリ13にアクセスする必要と、CPU12が高速メモリ13にアクセスする必要があるため、データバス16はマルチマスタ仕様のバスである。
【実施例3】
【0049】
実施例1、2では、MAPデータ24を降順に高速メモリ13に読み込むデータマップ読み取り装置100について説明したが、本実施例では、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることができるデータマップ読み取り装置100について説明する。1つのCPU12が異なるMAP引きプログラム25を実行する場合、MAP引きプログラム25によってはデクリメントサーチでなくインクリメントサーチする場合もあるし、CPU12がMAP引き以外の処理でROM15にアクセスする場合はMAP引きプログラム25カウント同じようにデータの昇順にアクセスすることが多い。したがって、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることで、MAP引きプログラム25やCPU12の処理に適切な方向でROM15のMAPデータ24を読み込むことができる。
【0050】
図7は、データマップ読み取り装置100の概略構成図の一例を示す。図7において図6と同一部には同一の符号を付しその説明は省略する。図7の高速メモリ13は昇降指定レジスタ26を有する。昇降指定レジスタ26は、例えばフラグであり「1」の場合にROM15のアドレスの降順にMAPデータ24を読み込むことを、「0」の場合にROM15のアドレスの昇順にMAPデータ24を読み込むことを、それぞれ意味する。昇降指定レジスタ26の初期値は「0」である。
【0051】
〔昇降指定レジスタ26の設定〕
昇降指定レジスタ26は、CPU12が有する昇降設定部21が「0」又は「1」に設定する。昇降設定部21は、例えばMAP引きプログラム25のメイン関数から読み出されるサブルーチンである。昇降設定部21は、例えば以下の方法で昇降指定レジスタ26を設定する。
(3−1)MAP引きプログラム25に記述された昇降指定情報に従う。
(3−2)MAPデータ24に記述された昇降指定情報に従う。
【0052】
(3−1)の場合、昇降設定部21(MAP引きプログラム25)が昇降指定レジスタ26を「0」又は「1」のいずれに設定するかを示す昇降指定情報31を有している。すなわち、昇降設定部21は呼び出されると、昇降指定情報31に従い昇降指定レジスタ26を「0」又は「1」に設定することができる。昇降指定情報31で、昇順と降順のどちらを指定するかは、入力値xinの性質(大きい値が多いか小さい値が多いか)により、プログラマにより記述される。MAP引きプログラム25に記述することで、昇降指定情報31を固定にするのでなく、昇降設定部21が入力値xinの過去10個程度の性質(大きい値が多いか小さい値が多いか)の統計を取り、統計結果に応じて昇降指定情報31を「0」又は「1」のいずれかに設定してもよい。なお、昇降指定情報31は、「昇降する」又は「昇降しない」を指定できればよいので、最小1bitの情報である。
【0053】
(3−2)の場合、昇降設定部21はMAP引きを開始する前に、ROM15のMAPデータ24の所定の位置から昇降指定情報31を読み出す。
図8は、MAPデータ24に登録された昇降指定情報31の一例を示す。MAPデータ24の先頭に昇降指定情報31が登録されている。したがって、昇降設定部21は、MAPデータ24の先頭アドレスを指定して昇降指定情報31をロードし、昇降指定レジスタ26に「1」又は「0」を設定する。なお、昇降指定情報31をロードする際、昇降設定部21が昇降指定レジスタ26に「1」又は「0」を設定する前に、高速メモリ13がMAPデータ24を読み込んでしまわないよう、昇降指定レジスタ26には比較を開始する前に「1」又は「0」が設定される。
【0054】
(3−2)のように、MAP引きプログラム25と昇降指定情報31を分離しておけば、MAP引きプログラム25の開発時には昇降指定情報31を意識する必要がなく、MAP引きプログラム25の開発効率が向上するというメリットもある。
【0055】
なお、(3−1)及び(3−2)のいずれの場合も、CPU12でなくMAP引きエンジン19が昇降指定レジスタ26を設定することができる。(3−1)の場合は、CPU12から昇降指定情報31を取得したMAP引きエンジン19が、昇降指定情報31に従い昇降指定レジスタ26を「0」又は「1」に設定する。(3−2)の場合は、MAPデータ24に昇降指定情報31が記述されている。CPU12がMAPデータ24の先頭アドレスをMAP引きエンジン19に通知すれば、MAP引きエンジン19は昇降指定情報31をロードし、昇降指定レジスタ26に「1」又は「0」を設定することができる。
【0056】
〔MAPデータ24の読み込み〕
そして、高速メモリ13の入れ替え制御部23は、MAP引きプログラム25が指定する近似値候補xiを読み出す場合、まず、昇降指定レジスタ26を参照する。入れ替え制御部23は、ROM15において近似値候補xiが格納されている1アクセス単位の先頭のアドレスをアドレスレジスタ22に記憶し、ラインL1にアドレスレジスタ22の1アクセス単位のMAPデータ24を読み込む。
【0057】
2つめ以降のラインL2〜L5にMAPデータ24を読み込むため、入れ替え制御部23は、以下のようにMAPデータ25を読み込む。
・昇降指定レジスタ26が「0」の場合は、ラインL2〜L5に1アクセス単位のMAPデータ24を読み込む毎に、アドレスレジスタ22の値を1アクセス単位(80bit)ずつインクリメントする。
・昇降指定レジスタ26が「1」の場合は、ラインL2〜L5に1アクセス単位のMAPデータ24を読み込む毎に、アドレスレジスタ22の値を1アクセス単位(80bit)ずつデクリメントする。
【0058】
アドレスレジスタ22の値が、昇降指定レジスタ26の設定に応じて増加又は減少するので、昇降指定情報31により、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることができる。
【0059】
〔動作手順〕
図9は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図9において実施例1にて説明したステップの説明は省略する。まず、昇降設定部21は、昇降指定レジスタ26を「1」又は「0」に設定する(S1)。上記のとおり、昇降設定部21は、MAP引きプログラム25中に記述された昇降指定情報31、又は、MAPデータ24に登録された昇降指定情報31に基づき、昇降指定レジスタ26を「1」又は「0」に設定する。なお、昇降設定部21は、MAP引きエンジン19が有していてもよい。昇降指定レジスタ26の設定により、入れ替え制御部23がMAPデータ24を読み込む方向が定まるので、高速メモリ13にMAPデータ24を昇順又は降順に読み込むことができる。以降の処理は、実施例1と同様である。
【0060】
本実施例のデータマップ読み取り装置100は、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることで、MAP引きプログラム25やCPU12の処理に適切な方向でROM15のデータを高速メモリにキャッシュできる。MAPデータ24を読み込む順番を固定する必要がないので、処理に応じて比較回数を抑制できる。
【実施例4】
【0061】
本実施例では、入力値xinに応じて、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えるデータマップ読み取り装置100について説明する。データマップ読み取り装置100の概略構成図は実施例3と同様なので省略する。
【0062】
図10は、MAPデータ24を模式的に示す図の一例である。MAPデータ24の近似値候補x1〜x100のうち、中央の近似値候補x_midは固定である。例えば、100個の近似値候補xiがある場合、x_midはx50又はx51である。なお、x_midの値が中央の値を示すとは限らず、中央の近似値候補x_midとはアドレスにおける中央を意味する。したがって、x_midの値としてx50又はx51の値が既知であれば、xinがx_midより小さいか、x_midより大きいかを判定できることになる。
【0063】
例えば、xinがx30位の値の場合、x1からインクリメントサーチした方が、x100からデクリメントサーチするよりも、早く近似値xnを特定できる。逆に、xinがx80位の値の場合、x100からデクリメントサーチした方が、x1からインクリメントサーチするよりも、早く近似値xnを特定できる。
【0064】
これを利用して、本実施例の昇降設定部21は、定数として記憶しているx_midの値とxinを比較して、次のように昇降指定レジスタ26に「1」又は「0」を設定する。x_midの値は、MAP引きプログラム25又はMAPデータ24のどちらに記述されていてもよい。
(4−1)xin≦x50 の場合、昇降指定レジスタ26に「0」を設定する。
(4−2)xin>x50 の場合、昇降指定レジスタ26に「1」を設定する。
【0065】
したがって、入力値xinがx_maxよりもx_minに近ければ、MAP引きプログラム25はインクリメントサーチでき、入力値xinがx_minよりもx_maxに近ければ、MAP引きプログラム25はデクリメントサーチすることができる。したがって、入力値xinと近似値候補xiの比較回数を必ず50回以下にすることができる。
【0066】
なお、このような昇降指定レジスタ26の設定は、CPU12が実行するMAP引きプログラム25又はMAP引きエンジン19のどちらでも行うこともできる。
【0067】
〔動作手順〕
図11は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図11において実施例1にて説明したステップの説明は省略する。
【0068】
まず、昇降設定部21は、入力値xinがx50以下か否かを判定する(S2)。入力値xinがx50以下の場合(S2のYes)、昇降設定部21は昇降指定レジスタ26に「0」を設定する(S3)。これにより、MAP引きプログラム25はインクリメントサーチできる。入力値xinがx50より大きい場合(S2のNo)、昇降設定部21は昇降指定レジスタ26に「1」を設定する(S4)。これにより、MAP引きプログラム25はデクリメントサーチできる。以降の処理は、実施例1と同様である。
【0069】
本実施例のデータマップ読み取り装置100は、入力値xinに応じて高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることができる。したがって、MAP引きプログラム25やMAPデータ24により固定されることなく、入力値xinとxiの比較回数を低減し、近似値xnを特定するまでの時間を短縮できる。
【実施例5】
【0070】
本実施例では、1つのxinに対し、近似値候補xi、結果候補yiの両方に対し、昇順又は降順の順番で、高速メモリ13にMAPデータ24を読み込むことができるデータマップ読み取り装置100について説明する。
【0071】
図12は、データマップ読み取り装置100の概略構成図の一例を示す。図12において図7と同一部には同一の符号を付しその説明は省略する。図12の高速メモリ13は、昇降指定レジスタ26−1、昇降指定レジスタ26−2、開始アドレスレジスタ27−1、及び、開始アドレス指令レジスタ27−2、を有する。
【0072】
昇降指定レジスタ26−1は、ラインL1〜L3に読み出すMAPデータ24を、降順に読み出すか又は昇順に読み出すかを指定する。開始アドレスレジスタ27−1には、昇降指定レジスタ26−1の指定に応じて、昇順又は降順に読み出しを開始するROM15のアドレスが格納されている。
【0073】
昇降指定レジスタ26−2は、ラインL4〜L6に読み出すMAPデータ24を、降順に読み出すか又は昇順に読み出すかを指定する。開始アドレスレジスタ27−2には、昇降指定レジスタ26−2の指定に応じて、昇順又は降順に読み出しを開始するROM15のアドレスが格納されている。
【0074】
そして、本実施例では、ラインの数を昇順用と降順用で等しくして(これまでの実施例より1つ多くして)、偶数のラインL1〜L6を用意する。上記のように、ラインL1〜L3に読み込まれるMAPデータ24は、昇降指定レジスタ26−1により昇順か降順かが、開始アドレスレジスタ27−1により読み出しを開始するROM15のアドレスが、それぞれ指定される。ラインL4〜L6に読み込まれるMAPデータ24は、昇降指定レジスタ26−2により昇順か降順かが、開始アドレスレジスタ27−2により読み出しを開始するROM15のアドレスが、それぞれ指定される。
【0075】
このようなレジスタを備え、開始アドレスレジスタ27−1,27−2に適切なアドレスを格納しておくことで、ラインL1〜L6に近似値候補xiと結果候補yiを混在させて読み出すことができる。
【0076】
例えば、開始アドレスレジスタ27−1にはx_maxのアドレスが格納され、開始アドレスレジスタ27−2にはy_maxのアドレスが格納される。そして、昇降指定レジスタ26−1、26−2には、降順に読み出すべきことが指定される(例えば、フラグに「1」が格納される。
【0077】
図13は、ラインL1〜L3に近似値候補xiが降順に、ラインL4〜L6に結果候補yiが降順に、それぞれ格納されている高速メモリ13の一例を示す図である。ラインL1〜L3に近似値候補xiが降順に、ラインL4〜L6に結果候補yiが降順に、それぞれ格納されているので、入力値xinが高速メモリ13に読み込まれた近似値候補xiにヒットした場合、対応する結果候補yiも高速メモリ13に格納されている。したがって、MAP引きを高速化することができる。図13では、x88に対応したy88を再ロードすることなく高速メモリ13から読み出すことができる。
【0078】
なお、昇降設定部21は、実施例3と同様に、MAP引きプログラム25中に記述された昇降指定情報31、又は、MAPデータ24に登録された昇降指定情報31に基づき、昇降指定レジスタ26−1、26−2に「1」又は「0」に設定する。一方が降順で他方が昇順ということはないので、昇降指定情報31は昇降指定レジスタ26−1、26−2に共通でよい。
【0079】
昇降設定部21は、降順の場合、x_maxのアドレスを開始アドレスレジスタ27−1に設定し、昇順の場合、x_minのアドレスを開始アドレスレジスタ27−1に設定する。また、昇降設定部21は、降順の場合、y_maxのアドレスを開始アドレスレジスタ27−2に設定し、昇順の場合、y_minのアドレスを開始アドレスレジスタ27−2に設定する。
【0080】
昇降設定部21は、MAPデータ24のサイズ、近似値候補xi(又は結果候補yi)の数、及び、近似値候補xi(又は結果候補yi)1つのサイズ(バイト数)、からx_max及びy_maxのアドレスを算出する。MAPデータ24のサイズは、固定であるので昇降設定部21が予め記憶しているか、ROM15に記憶されたMAPデータ24の先頭に記述されている。近似値候補xi、結果候補yiの数も固定であるので、昇降設定部21が予め記憶しているか、ROM15に記憶されたMAPデータ24の先頭に記述されている。xi、yiのバイト数も決まっている。なお、xiとyiの数は等しい。したがって、昇降設定部21は次のようにしてx_maxのアドレス、y_max、x_minのアドレス、y_min、のアドレスを決定する。
x_maxのアドレス = MAPデータ24の先頭アドレス+xiのサイズ×xiの数
y_maxのアドレス = x_maxのアドレス+MAPデータ24の先頭アドレス+yiのサイズ×yiの数
x_minのアドレス = MAPデータ24の先頭アドレス
y_minのアドレス = x_maxのアドレス+yiのサイズ
昇降設定部21は、MAP引きプログラム25から呼び出されると、昇降指定情報31に基づき昇降指定レジスタ26−1、26−2に「1」又は「0」に設定する。昇降設定部21は、昇降指定レジスタ26−1が「1」の場合は、x_maxのアドレスを開始アドレスレジスタ27−1に、昇降指定レジスタ26−1が「0」の場合は、x_minのアドレスを開始アドレスレジスタ27−1に設定する。同様に、昇降設定部21は、昇降指定レジスタ26−2が「1」の場合は、y_maxのアドレスを開始アドレスレジスタ27−2に、昇降指定レジスタ26−2が「0」の場合は、y_minのアドレスを開始アドレスレジスタ27−2に設定する。
【0081】
入れ替え制御部23は、昇降指定レジスタ26−1、26−2を参照して、降順に読み出すか昇順に読み出すかを決定する。読み出し先のアドレスは、開始アドレスレジスタ27−1、27−2に記憶されている。
【0082】
図14は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図14において実施例1にて説明したステップの説明は省略する。まず、昇降設定部21は、昇降指定レジスタ26−1、26−2に「1」又は「0」を設定する(S1)。昇降指定レジスタ26−1、26−2の設定により、入れ替え制御部23がMAPデータ24を読み込む方向が定まる。
【0083】
ついで、昇降設定部21は、x_maxのアドレスを算出して、開始アドレスレジスタ27−1に記憶する(S5)。また、昇降設定部21は、y_maxのアドレスを算出して、開始アドレスレジスタ27−2に記憶する(S6)。
【0084】
以上の設定により、MAP引きエンジン19は、L1〜L3にMAPデータ24の近似値候補xiを降順に、L4〜L6にMAPデータ24の結果候補yiを降順に、それぞれ読み込む。したがって、入力値xinの近似値xnを特定できた場合、MAP引きプログラム25は、高速メモリ13から出力近似値ynとyn+1を読み出すことができる。したがって、MAP引きを高速化することができる。
【0085】
なお、以降の処理は、実施例3と同様である。また、実施例4と同様に、入力値xinに応じて、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えてもよい。
【0086】
以上説明したように、本実施形態のデータマップ読み取り装置100は、MAP引きの際のサーチ方向に応じて、近似値候補xi、結果候補yiの両方を昇順又は降順に高速メモリ13に読み出すことができるので、MAP引きの処理を高速化することができる。
【符号の説明】
【0087】
11 RAM
12 CPU
13 高速メモリ
14 命令フェッチ機構
15 ROM
19 MAP引きエンジン
21 昇降設定部
23 入れ替え制御部
24 MAPデータ
25 MAP引きプログラム
【技術分野】
【0001】
本発明は、MAP引きにより所望の値を取得するデータマップ読み取り装置及びデータマップ読み取り方法に関する。
【背景技術】
【0002】
エンジンやブレーキなどの車載装置を電子制御する車載電子制御システムでは、非常に高負荷な演算を車両の動作状態に合わせて逐次行い、かつ、その演算結果を非常に短時間に動作状態に反映させなければならない。すなわち、制御系の演算は、情報処理系の演算と異なり、リアルタイム性が要求される。マイコンの負荷を低減しリアルタイム性が確保されるよう、車両用電子制御システムでは、演算をそのまま実行するのでなくマップ引きと呼ばれる処理により演算と同等の値を決定する手法が導入されることがある(例えば、特許文献1参照。)。特許文献1には、スロットル開度とアイドル制御弁駆動信号のデューティ比に対するエンジン吸入空気量の関係を記憶しておき、スロットル開度とデューティ比に演算を施すことなく、記憶してある関係からエンジン吸入空気量を推定するマップ引き処理が開示されている。
【0003】
図1(a)はマップ引き処理を説明するフローチャート図を、図1(b)はMAPデータの一例をそれぞれ示す。MAPデータは電子制御システムのマイコンが有するROM15に記憶されている。MAPデータのうち、「x1〜x100」は入力値xinの近似値候補であり、「y1〜y100」は入力値xinに対する結果候補である。以下、「x1〜x100」を近似値候補「xi」、「y1〜y100」を結果候補「yi」という。
【0004】
マイコンには、何らかのセンサ(例えば、水温センサ、油圧センサ、エンジン回転数センサ等)から何らかの入力値xinが入力される。MAP引きの際、マイコンはxinに最も近い近似値を近似値候補xiからサーチする。このため、マイコンは、MAPの近似値候補xiと入力値xinを順番に比較する(S10)。比較する場合、近似値候補xiの小さいものから順に入力値xinと比較していく方法(インクリメントサーチ)と、近似値候補xiの大きいものから順に比較していく方法(デクリメントサーチ)と、があるが、車両ではデクリメントサーチが採用される場合が多い。これは、マイコンに高負荷がかかる際、入力値xinの値も近似値候補xiの最大値であるx_maxに近い値になる場合が多く、デクリメントサーチした方が入力値xinの近似値を少ない比較回数で見つけることができるからである。
【0005】
マイコンは、xin<xiか否かを比較する(S20)。近似値候補xiの方が大きい場合(S20のYes)、マイコンは「i」をデクリメントして、入力値xinと近似値候補xiとの比較を繰り返す。
【0006】
入力値xinが近似値候補xi以上となった場合(S20のNo)、マイコンはその時の近似値候補xiと近似値候補xiより1つ大きい近似値候補xi+1を特定する(S30)。入力値xinは、近似値候補xiとxi+1の間にあることが分かる。図のMAPを例に説明すると、入力値xinが方近似値候補「x35」以上の場合、近似値候補xiは「x35」に、xi+1は「x36」となる。説明を分かりやすくするため、フローチャート図では、改めて近似値候補xiを近似値xn、近似値候補xi+1を近似値xn+1とおいた。
【0007】
次に、マイコンは、近似値xnに対応する出力近似値yn、xn+1に対応する出力近似値yn+1をMAPから読み出す(S40)。近似値候補xiと結果候補yiは一意に対応しているので、出力近似値ynとyn+1はサーチすることなく読み出すことができる。図ではy35が出力近似値yn、y36が出力近似値yn+1である。
【0008】
マイコンは、入力値xinに相当する補間値youtを、出力近似値ynとyn+1の補間演算により求める(S50)。以上が、図1の処理である。
【0009】
しかしながら、このような処理では、近似値候補xiをサーチする度にROM15にアクセスしなければならない。ROM15からの読み出しは、命令実行と比較しても低速であり、また、命令フェッチとも競合するので、バスの調停が必要となる。また、ステップS10、S20に示したように、近似値xn、xn+1を見つけるまで、比較の度にループ処理が必要なので、入力値xinによっては最大100回、比較処理しなければならない。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平3−952号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
このような課題に対し、プリロードバッファやキャッシュと呼ばれる高速メモリ13をCPU12とROM15の間に配置することが考えられる。
図2は、高速メモリ13を備えたマイコンの概略構成図の一例を示す。CPU12はデータバス16と命令バス17にそれぞれ接続されている。データバス16には高速メモリ13が接続され、高速メモリ13にはROM15が接続されている。また、ROM15には命令バス17が接続されている。ROM15のMAPデータの一部を高速メモリ13にキャッシュすることで、マイコンは、ROM15の近似値候補xiをサーチするよりも高速に近似値xnを特定できる。
【0012】
しかしながら、単に高速メモリ13を設けただけでは以下のような問題がある。
図3は、ROM15に記憶されたMAPデータの高速メモリ13への読み込み(キャッシュ)を模式的に説明する図の一例である。図3の高速メモリ13は、5つのラインL(1アクセスでROM15から読み出すことができるデータのサイズ)を有し、1ラインには5つの近似値候補xiを格納できる。すなわち、図3の高速メモリ13には5×5=25個の近似値候補xiが格納される。xiを2byteとすると、1ラインは10byte=80bitである。
【0013】
図1のフローチャート図で説明したように、MAP引きにおいてマイコンはデクリメントサーチするので、高速メモリ13はx100以下のxiを、高速メモリ13の最も小さいアドレスを有するラインL1に読み込む。1ラインには5つのxiが格納できるので、L1には「x96〜x100」が読み込まれる。
【0014】
そして、高速メモリ13は、次にアドレスの小さいL2〜L5にもMAPデータをキャッシュするが、MAPデータを高速メモリ13がキャッシュする方向は、MAPデータのアドレスの昇順である。これは、MAP引きプログラム25の命令の実行順はPC(プログラムカウンタ)により指示されるが、分岐等がなければ、PCは所定量ずつインクリメントされるためである。すなわち、プログラムの実行方向と同じ方向に、MAPデータもROM15から読み出される(キャッシュされる)。この結果、L2には、「y1〜y5」が、L3には、「y6〜y10」が、L4には、「y11〜y15」が、L5には、「y16〜y20」が、それぞれ読み込まれる。
【0015】
そして、マイコンが近似値候補xiをデクリメントサーチすると、x100から順番に入力値xin比較することになる。この場合、ラインL1にxinの近似値が格納されていればよいが、xinの近似値が格納されていない場合、x96まで比較した後、ミスヒットが生じる。高速メモリ13は、ミスヒットにより、L1〜L5のデータを入れ替える(リフィル)。すなわち、最も小さいアドレスのラインL1には「x91〜x95」が読み出され、以降、ROM15のアドレスの昇順に、L2には「x96〜x100」が、L3には「y1〜y5」が、L4には「y6〜y10」が、L5には「y11〜y15」が、それぞれ読み出される。そして、マイコンは同様に、xinとx95との比較を開始する。
【0016】
「x91〜x95」に入力値xinの近似値が見つからずにx91までサーチすると、マイコンは、再度、高速メモリ13の内容を入れ替える。したがって、25個のMAPデータが高速メモリ13に格納されているにも拘わらず、比較を5回する毎に1回、高速メモリ13の入れ替え処理を実行しなければならない。換言すれば、5つラインのうち、L2〜L5は全く、近似値候補xiのサーチに利用されていないことになる。これでは、高速メモリ13の内容の入れ替えに時間がかかってしまい、MAP引き(入力値xinの近似値を見つける処理)の速度が低下してしまうという問題がある。
【0017】
本発明は、上記課題に鑑み、高速メモリを用いたMAP引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供することを目的とする。
【課題を解決するための手段】
【0018】
検索用データを記憶する第1の記憶手段と、第1の記憶手段のアドレスに従い、前記検索用データを一様方向に読み出す読み出し手段と、読み出し手段が読み出した、前記検索用データの複製を記憶する第2の記憶手段と、第2の記憶手段に複製された検索用データを被検索値に基づき検索する検索手段が、検索用データをインクリメントサーチするかデクリメントサーチするかによって、検索用データの複製を読み出す方向を、第1の記憶手段のアドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段と、を有することを特徴とするデータマップ読み取り装置を提供する。
【発明の効果】
【0019】
高速メモリを用いたMAP引きによる演算を高速に実行するデータマップ読み取り装置及びデータマップ読み取り方法を提供することができる。
【図面の簡単な説明】
【0020】
【図1】マップ引き処理を説明するための図のフローチャート図、MAPデータの一例を示す図である。
【図2】高速メモリを備えたマイコンの概略構成図の一例である。
【図3】ROMに記憶されたMAPデータの高速メモリへの読み込みを模式的に説明する図の一例である。
【図4】データマップ読み取り装置の概略構成図の一例である。
【図5】高速メモリに読み込まれるMAPデータを模式的に説明する図の一例である。
【図6】データマップ読み取り装置の概略構成図の一例である(実施例2)。
【図7】データマップ読み取り装置の概略構成図の一例である(実施例3)。
【図8】MAPデータに登録された昇降指定情報の一例を示す図である。
【図9】マップ引き処理を説明するための図のフローチャート図の一例である(実施例3)。
【図10】MAPデータを模式的に示す図の一例である(実施例4)。
【図11】マップ引き処理を説明するための図のフローチャート図の一例である(実施例4)。
【図12】データマップ読み取り装置の概略構成図の一例である(実施例5)。
【図13】マップ引き処理を説明するための図のフローチャート図の一例である(実施例5)。
【図14】ラインL1〜L6のxi、yiを模式的に示す図の一例である(実施例5)。
【発明を実施するための形態】
【0021】
以下、本発明を実施するための最良の形態について図面を参照しながら実施例を挙げて説明する。
【実施例1】
【0022】
本実施例では、MAPデータのアドレスの降順に高速メモリ13へ読み出すデータマップ読み取り装置100について説明する。
【0023】
図4は、データマップ読み取り装置100の概略構成図の一例を示す。CPU12はデータバス16及び命令バス17にそれぞれ接続されている。データバス16には高速メモリ13が接続され、高速メモリ13にはROM15が接続されている。また、ROM15には命令バス17が接続されている。ROM15には、MAPデータ24及びMAP引きプログラム25が記憶されている。この他、データマップ読み取り装置100は、一般のマイコンと同様にセンサからセンサ信号を取得するため、データバス16にI/O18が接続されている。このセンサ信号が、MAP引きのための入力値xinとなる。
【0024】
〔CPU12の演算〕
CPU12は、命令実行制御回路、プログラムカウンタ、命令デコーダ、演算ユニット、レジスタファイル等を備えている。命令フェッチ機構14は、プログラムカウンタが指示するアドレスのMAP引きプログラム25を予めROM15から読み出す、命令キャッシュを備える。命令フェッチ機構14は、プログラムカウンタが指示するアドレス以降の所定量の命令をROM15から読み出しておく。CPU12が命令フェッチする際は、命令キャッシュから命令を読み出すことができる。
【0025】
CPU12が補間演算する手順を説明する。手順自体は図1のフローチャート図と同じなので、図1に基づき説明する。
【0026】
<S10、S20>
I/O18がCPU12に入力値xinの検出を知らせる、例えば割り込みがCPU12に生じると、CPU12がこの入力値xinに対応したMAP引きプログラム25を呼び出して実行を開始する。MAP引きにおいてCPU12が実行するMAP引きプログラム25は、高速メモリ13からの近似値候補xiのロード命令と、近似値候補xiと入力値xinとの比較命令を実行する。まず、CPU12は、入力値xinをレジスタファイルにストア(格納)する。そして、命令デコーダがロード命令を検出するので、CPU12は近似値候補xiのうち最大値のx_maxを高速メモリ13からデータフェッチして例えばアキュムレータに記憶する。データフェッチにより、ROM15からラインL1〜L5にMAPデータが読み込まれる。読み込みについては後に詳述する。
【0027】
次に、命令デコーダが比較命令を検出するので、CPU12はレジスタファイルに記憶された入力値xinとアキュムレータに記憶された近似値候補xiを演算ユニットにて比較する。演算ユニットによる比較結果は、レジスタファイルのフラグに示される。xin<xiの判定がNoとなるまで、CPU12は高速メモリ13からのデータフェッチを繰り返し、近似値候補xiと入力値xinとの比較を繰り返す。
【0028】
<S30>
xin<xiの判定がNoになると、図1のMAPデータ24にて説明したように、CPU12は現在のxi(以下、xiを近似値xnという)に対応する出力近似値yn、xi+1(以下、近似値xn+1という)に対応する出力近似値yn+1を特定する。
【0029】
<S40>
近似値xnと出力近似値ynには1対1の対応関係があるので、近似値xnとxn+1のアドレスに定数(xnのサイズ及び数により定まる)を加えたMAPデータ24のアドレスに、xnに対応する出力近似値yn及びxn+1に対応する出力近似値yn+1が格納されている。CPU12はMAP引きプログラム25中に予め記述されている定数を近似値xn、xn+1のアドレスに加えて出力近似値ynとyn+1をロードする。これらはレジスタファイルに記憶される。
【0030】
<S50>
そして、MAP引きプログラム25は出力近似値ynとyn+1に補間演算を施す。補間は、例えば、線形補間や2次補間等を用いればよく、本実施例に限定されるものではない。線形補間の場合、CPU12は次式で表される補間演算を実行する。補間演算により算出される補間値youtが、入力値xinに演算を施して得られる演算結果に相当する目的の値である。
yout = {(xin−xn)/(xn+1−xn)}×(yn+1−yn)+yn
【0031】
〔高速メモリ13への読み込み、入れ替え制御〕
高速メモリ13へのMAPデータ24の読み込み及び入れ替えについて説明する。高速メモリ13は、プリロードバッファ、又は、Cacheと呼ばれる揮発性のメモリであり、例えばSDRAM、SRAM等を実体とする。プリロードバッファとCacheはメモリ容量が異なるだけと考えてよいので、両者を区別せず、単に「高速メモリ」13という。高速メモリ13は、5つのラインL1〜L5を有する。1ラインは、ROM15への1回のアクセスで読み込み可能なメモリ容量の単位である。1ラインは例えば10byteである。近似値候補xiの大きさが2byteであるとすると、1ラインには5つの近似値候補xiを読み込むことができる。この1ラインは、ROM15のアクセス単位でもあるので、ROM15のメモリ容量は80bit×nである。(n=MAPデータのデータ数/5)。
【0032】
高速メモリ13は、「タグアドレス」と「インデックスアドレス」、および、ライン毎のデータが対応づけられて構成されている。MAPデータ24のアクセス単位毎の先頭アドレスのうち上位ビットがタグ、下位ビットがインデックスである。近似値候補補xiをロードする際、CPU12は仮想アドレスを指定して高速メモリ13にアクセスするので、高速メモリ13は仮想アドレスをTLBにより物理アドレスに変換する。高速メモリ13は、物理アドレスの上位ビットをタグアドレスと比較して、サーチ対象の近似値候補xiが格納されているラインを特定する。
【0033】
高速メモリ13は入れ替え制御部23を有する。入れ替え制御部23は、MAPデータ24を高速メモリ13に読み込むと共に、入力値xinが高速メモリ13に読み込まれた近似値候補xiにヒットしなかった場合(ミスヒットした場合)、全てのラインL1〜L5のMAPデータ24を入れ替える。すなわち、タグアドレスにより、次の近似値候補xiが格納されているラインを特定できない場合、ラインL1〜L5を入れ替える。高速メモリ13のどのラインを入れ替えるかを決定する方法について、ラウンドロビンやLRU (Least Recently Used) 等の方法が知られているが、本実施例ではミスヒットが生じると一連のラインL1〜L5を全て入れ替える。
【0034】
図5は、高速メモリ13に読み込まれるMAPデータ24を模式的に説明する図の一例である。これまで説明したように、MAP引きプログラム25はxiをデクリメントサーチするので、MAP引きプログラム25が最初にROM15から読み込む近似値候補xiは最大値であるx_maxである。このため、入れ替え制御部23は、x_maxを含む1つのアクセス単位(80bit)のMAPデータ24を、高速ラインのラインL1に読み込む。図示するように、MAPデータ24は、x1〜x100の近似値候補とy1〜y100の結果候補を有する。x_max=x100が、x96〜x100の1アクセス単位に含まれるとすると、入れ替え制御部23は、「x96〜x100」をラインL1に読み込む。
【0035】
そして、入れ替え部制御部23は、ROM15のアドレスの降順に、MAPデータ24をラインL2〜L5に読み込む(プリロード)。図示するように、ROM15には近似値候補xiが、ROM15のアドレスの昇順に格納されているので、ラインL2には「x91〜x95」が、ラインL3には「x86〜x90」が、読み込まれる。
【0036】
入れ替え制御部23は、読み込むMAPデータ24をアドレスで指定するアドレスレジスタ22を有し、MAP引きプログラム25がx_maxを読み出す場合、ROM15においてx_maxが格納されているROM15の1アクセス単位の先頭のアドレスをアドレスレジスタ22に記憶する。従来であれば、ラインLにMAPデータ24を読み込む毎に、アドレスレジスタ22の値を、1アクセス単位(80bit)ずつインクリメントしていたが、本実施例ではラインL1〜L5に1アクセス単位のMAPデータ24を読み込む毎に、アドレスレジスタ22の値を、1アクセス単位(80bit)ずつデクリメントする。こうすることで、入れ替え制御部23は、ROM15のアドレスの降順に、MAPデータ24をラインL1〜L5に読み込むことができる。
【0037】
したがって、最初にx_maxをROM15から読み出す際、プリロードと合わせ、高速メモリ13はx76〜X100(25個)の近似値候補xiをラインL1〜L5に読み込むことができる。MAP引きプログラム25は、1つの入力値xinに対しxiをデクリメントサーチするので、ラインL1のx_maxからxinとの比較を開始して、先頭であるx96まで到達すると、ラインL2の近似値候補x95から入力値xinとの比較を繰り返すことができる。すなわち、MAP引きプログラム25が近似値候補x75と入力値xinとを比較するまで、ミスヒットしないのでラインL1〜L5の入れ替えが発生しない。
【0038】
x75とxinを比較する際はミスヒットが生じ、入れ替え制御部23がL1〜L5に「x51〜x75」を読み込むので、次は、x50と入力値xinを比較するまではミスヒットが生じず、高速メモリ13の入れ替えが発生しないことになる。サーチ方向と、MAPデータの読み込み方向を一致させることで、ミスヒットの頻度を大幅に低減できる。
【0039】
このように、本実施例の高速メモリ13は、高速メモリ13に記憶可能な近似値候補xiの数までは、ミスヒット(入れ替え)の生じないようにするこができる。近似値xnがサーチされるまでの平均的な比較回数が分かれば、比較回数の平均値以上の数の近似値候補xiを高速メモリ13に記憶できるように、メモリ容量を設計することができる。この場合、1つの入力値xinに対し、2回に1回は、高速メモリ13の入れ替えなしに、近似値xnを特定できる。また、メモリ容量を平均値+2σ(σ:標準偏差)にすれば、1つの入力値xinに対し、100回に95回は、高速メモリ13の入れ替えなしに、近似値xnを特定できる。
【0040】
以上説明したように、本実施例のデータマップ読み取り装置100は、車両の電子制御ユニットのように、デクリメントサーチによりMAP引きする場合でも、MAP引きによる入力値xinの近似値を特定する際、MAP引きの処理速度を数倍以上に向上させることができる。
【実施例2】
【0041】
本実施例では、MAP引き専門のハードウェアを有するデータマップ読み取り装置100について説明する。
図6は、データマップ読み取り装置100の概略構成図の一例を示す。図6において図4と同一部には同一の符号を付しその説明は省略する。図6では、データバス16にMAP引きエンジン19が接続されている。
【0042】
MAP引きエンジン19は、以下の機能を有する。
(1)近似値xnの取得
(2)出力近似値ynとyn+1の取得
(3)補間値youtの演算
すなわち、MAP引きエンジン19は、実施例1にて説明したCPU12の演算内容をハードウェアにより実現する。なお、高速メモリ13がMAPデータ24を読み込む順番は、ROM15におけるMAPデータ24のアドレスの降順である。
【0043】
MAP引きエンジン19は、CPU12がMAP引きエンジン19のレジスタに書き込んだ入力値xinを受け取る。または、I/O18から直接、入力値xinを受け取ってもよい。入力値xinを受け取ると、MAP引きエンジン19は、高速メモリ13をデクリメントサーチする。デクリメントサーチの間、高速メモリ13の入れ替え制御部23がミスヒットを検出すると、ROM15のアドレスの降順にMAPデータ24を読み込む。
【0044】
MAP引きエンジン19は、入力値xinに対し近似値xnとxn+1を特定すると、予め定められている定数を近似値xn、xn+1のアドレスに加えて、高速メモリ13から出力近似値ynとyn+1をロードする。これらは、MAP引きエンジン19のレジスタに一時的に記憶される。なお、近似値xn、xn+1のアドレスに加えられる「定数」は、CPU12が実行するMAP引きプログラム25がMAP引きエンジン19に書き込んでもよいし、予めMAP引きユニットに記憶されていてもよい。
【0045】
そして、MAP引きエンジン19は、出力近似値ynとyn+1に補間演算を施し補間値youtを算出する。補間演算の演算方法は実施例1と同様である。MAP引きエンジン19は、例えばCPU12に割り込みして補間演算の結果が得られたことをCPU12に通知する。MAP引きエンジン19は、補間値youtは直接CPU12のレジスタに書き込んでもよいし、RAM11等のメモリ経由でCPU12に渡してもよい。
【0046】
(1)(2)の処理では、原則的に、MAP引きエンジン19と高速メモリ13間で処理が完結し、(3)の処理はMAP引きエンジン19内で完結する。すなわち、CPU12の処理を妨げない。(1)(2)の処理で、例外的に、MAP引きユニットとCPU12がROM15へのアクセスが競合するのは、ミスヒットの場合だけである。
【0047】
また、MAP引きエンジン19はMAP引きプログラム25を実行するわけではないので、命令バス17にアクセスする必要もなく、CPU12が命令バス17とデータバス16からそれぞれROM15にアクセスする際に生じるアクセス調停を低減することができる。
【0048】
したがって、CPU12は入力値xinをMAP引きエンジン19に渡した後、補間値youtを取得するまで、別の処理を実行できる。例えば、入力値xinは1つとは限らないので(水温、油圧、エンジン回転数等)、別の入力値xinに対する補間値youtを算出する処理を実行してもよい。この場合、MAP引きエンジン19とCPU12が(1)(2)の処理の際、データバス16の使用権の競合が生じるおそれがある。しかし、この場合でもCPU12の演算処理の妨げにはならない。なお、MAP引きエンジン19が高速メモリ13にアクセスする必要と、CPU12が高速メモリ13にアクセスする必要があるため、データバス16はマルチマスタ仕様のバスである。
【実施例3】
【0049】
実施例1、2では、MAPデータ24を降順に高速メモリ13に読み込むデータマップ読み取り装置100について説明したが、本実施例では、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることができるデータマップ読み取り装置100について説明する。1つのCPU12が異なるMAP引きプログラム25を実行する場合、MAP引きプログラム25によってはデクリメントサーチでなくインクリメントサーチする場合もあるし、CPU12がMAP引き以外の処理でROM15にアクセスする場合はMAP引きプログラム25カウント同じようにデータの昇順にアクセスすることが多い。したがって、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることで、MAP引きプログラム25やCPU12の処理に適切な方向でROM15のMAPデータ24を読み込むことができる。
【0050】
図7は、データマップ読み取り装置100の概略構成図の一例を示す。図7において図6と同一部には同一の符号を付しその説明は省略する。図7の高速メモリ13は昇降指定レジスタ26を有する。昇降指定レジスタ26は、例えばフラグであり「1」の場合にROM15のアドレスの降順にMAPデータ24を読み込むことを、「0」の場合にROM15のアドレスの昇順にMAPデータ24を読み込むことを、それぞれ意味する。昇降指定レジスタ26の初期値は「0」である。
【0051】
〔昇降指定レジスタ26の設定〕
昇降指定レジスタ26は、CPU12が有する昇降設定部21が「0」又は「1」に設定する。昇降設定部21は、例えばMAP引きプログラム25のメイン関数から読み出されるサブルーチンである。昇降設定部21は、例えば以下の方法で昇降指定レジスタ26を設定する。
(3−1)MAP引きプログラム25に記述された昇降指定情報に従う。
(3−2)MAPデータ24に記述された昇降指定情報に従う。
【0052】
(3−1)の場合、昇降設定部21(MAP引きプログラム25)が昇降指定レジスタ26を「0」又は「1」のいずれに設定するかを示す昇降指定情報31を有している。すなわち、昇降設定部21は呼び出されると、昇降指定情報31に従い昇降指定レジスタ26を「0」又は「1」に設定することができる。昇降指定情報31で、昇順と降順のどちらを指定するかは、入力値xinの性質(大きい値が多いか小さい値が多いか)により、プログラマにより記述される。MAP引きプログラム25に記述することで、昇降指定情報31を固定にするのでなく、昇降設定部21が入力値xinの過去10個程度の性質(大きい値が多いか小さい値が多いか)の統計を取り、統計結果に応じて昇降指定情報31を「0」又は「1」のいずれかに設定してもよい。なお、昇降指定情報31は、「昇降する」又は「昇降しない」を指定できればよいので、最小1bitの情報である。
【0053】
(3−2)の場合、昇降設定部21はMAP引きを開始する前に、ROM15のMAPデータ24の所定の位置から昇降指定情報31を読み出す。
図8は、MAPデータ24に登録された昇降指定情報31の一例を示す。MAPデータ24の先頭に昇降指定情報31が登録されている。したがって、昇降設定部21は、MAPデータ24の先頭アドレスを指定して昇降指定情報31をロードし、昇降指定レジスタ26に「1」又は「0」を設定する。なお、昇降指定情報31をロードする際、昇降設定部21が昇降指定レジスタ26に「1」又は「0」を設定する前に、高速メモリ13がMAPデータ24を読み込んでしまわないよう、昇降指定レジスタ26には比較を開始する前に「1」又は「0」が設定される。
【0054】
(3−2)のように、MAP引きプログラム25と昇降指定情報31を分離しておけば、MAP引きプログラム25の開発時には昇降指定情報31を意識する必要がなく、MAP引きプログラム25の開発効率が向上するというメリットもある。
【0055】
なお、(3−1)及び(3−2)のいずれの場合も、CPU12でなくMAP引きエンジン19が昇降指定レジスタ26を設定することができる。(3−1)の場合は、CPU12から昇降指定情報31を取得したMAP引きエンジン19が、昇降指定情報31に従い昇降指定レジスタ26を「0」又は「1」に設定する。(3−2)の場合は、MAPデータ24に昇降指定情報31が記述されている。CPU12がMAPデータ24の先頭アドレスをMAP引きエンジン19に通知すれば、MAP引きエンジン19は昇降指定情報31をロードし、昇降指定レジスタ26に「1」又は「0」を設定することができる。
【0056】
〔MAPデータ24の読み込み〕
そして、高速メモリ13の入れ替え制御部23は、MAP引きプログラム25が指定する近似値候補xiを読み出す場合、まず、昇降指定レジスタ26を参照する。入れ替え制御部23は、ROM15において近似値候補xiが格納されている1アクセス単位の先頭のアドレスをアドレスレジスタ22に記憶し、ラインL1にアドレスレジスタ22の1アクセス単位のMAPデータ24を読み込む。
【0057】
2つめ以降のラインL2〜L5にMAPデータ24を読み込むため、入れ替え制御部23は、以下のようにMAPデータ25を読み込む。
・昇降指定レジスタ26が「0」の場合は、ラインL2〜L5に1アクセス単位のMAPデータ24を読み込む毎に、アドレスレジスタ22の値を1アクセス単位(80bit)ずつインクリメントする。
・昇降指定レジスタ26が「1」の場合は、ラインL2〜L5に1アクセス単位のMAPデータ24を読み込む毎に、アドレスレジスタ22の値を1アクセス単位(80bit)ずつデクリメントする。
【0058】
アドレスレジスタ22の値が、昇降指定レジスタ26の設定に応じて増加又は減少するので、昇降指定情報31により、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることができる。
【0059】
〔動作手順〕
図9は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図9において実施例1にて説明したステップの説明は省略する。まず、昇降設定部21は、昇降指定レジスタ26を「1」又は「0」に設定する(S1)。上記のとおり、昇降設定部21は、MAP引きプログラム25中に記述された昇降指定情報31、又は、MAPデータ24に登録された昇降指定情報31に基づき、昇降指定レジスタ26を「1」又は「0」に設定する。なお、昇降設定部21は、MAP引きエンジン19が有していてもよい。昇降指定レジスタ26の設定により、入れ替え制御部23がMAPデータ24を読み込む方向が定まるので、高速メモリ13にMAPデータ24を昇順又は降順に読み込むことができる。以降の処理は、実施例1と同様である。
【0060】
本実施例のデータマップ読み取り装置100は、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることで、MAP引きプログラム25やCPU12の処理に適切な方向でROM15のデータを高速メモリにキャッシュできる。MAPデータ24を読み込む順番を固定する必要がないので、処理に応じて比較回数を抑制できる。
【実施例4】
【0061】
本実施例では、入力値xinに応じて、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えるデータマップ読み取り装置100について説明する。データマップ読み取り装置100の概略構成図は実施例3と同様なので省略する。
【0062】
図10は、MAPデータ24を模式的に示す図の一例である。MAPデータ24の近似値候補x1〜x100のうち、中央の近似値候補x_midは固定である。例えば、100個の近似値候補xiがある場合、x_midはx50又はx51である。なお、x_midの値が中央の値を示すとは限らず、中央の近似値候補x_midとはアドレスにおける中央を意味する。したがって、x_midの値としてx50又はx51の値が既知であれば、xinがx_midより小さいか、x_midより大きいかを判定できることになる。
【0063】
例えば、xinがx30位の値の場合、x1からインクリメントサーチした方が、x100からデクリメントサーチするよりも、早く近似値xnを特定できる。逆に、xinがx80位の値の場合、x100からデクリメントサーチした方が、x1からインクリメントサーチするよりも、早く近似値xnを特定できる。
【0064】
これを利用して、本実施例の昇降設定部21は、定数として記憶しているx_midの値とxinを比較して、次のように昇降指定レジスタ26に「1」又は「0」を設定する。x_midの値は、MAP引きプログラム25又はMAPデータ24のどちらに記述されていてもよい。
(4−1)xin≦x50 の場合、昇降指定レジスタ26に「0」を設定する。
(4−2)xin>x50 の場合、昇降指定レジスタ26に「1」を設定する。
【0065】
したがって、入力値xinがx_maxよりもx_minに近ければ、MAP引きプログラム25はインクリメントサーチでき、入力値xinがx_minよりもx_maxに近ければ、MAP引きプログラム25はデクリメントサーチすることができる。したがって、入力値xinと近似値候補xiの比較回数を必ず50回以下にすることができる。
【0066】
なお、このような昇降指定レジスタ26の設定は、CPU12が実行するMAP引きプログラム25又はMAP引きエンジン19のどちらでも行うこともできる。
【0067】
〔動作手順〕
図11は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図11において実施例1にて説明したステップの説明は省略する。
【0068】
まず、昇降設定部21は、入力値xinがx50以下か否かを判定する(S2)。入力値xinがx50以下の場合(S2のYes)、昇降設定部21は昇降指定レジスタ26に「0」を設定する(S3)。これにより、MAP引きプログラム25はインクリメントサーチできる。入力値xinがx50より大きい場合(S2のNo)、昇降設定部21は昇降指定レジスタ26に「1」を設定する(S4)。これにより、MAP引きプログラム25はデクリメントサーチできる。以降の処理は、実施例1と同様である。
【0069】
本実施例のデータマップ読み取り装置100は、入力値xinに応じて高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えることができる。したがって、MAP引きプログラム25やMAPデータ24により固定されることなく、入力値xinとxiの比較回数を低減し、近似値xnを特定するまでの時間を短縮できる。
【実施例5】
【0070】
本実施例では、1つのxinに対し、近似値候補xi、結果候補yiの両方に対し、昇順又は降順の順番で、高速メモリ13にMAPデータ24を読み込むことができるデータマップ読み取り装置100について説明する。
【0071】
図12は、データマップ読み取り装置100の概略構成図の一例を示す。図12において図7と同一部には同一の符号を付しその説明は省略する。図12の高速メモリ13は、昇降指定レジスタ26−1、昇降指定レジスタ26−2、開始アドレスレジスタ27−1、及び、開始アドレス指令レジスタ27−2、を有する。
【0072】
昇降指定レジスタ26−1は、ラインL1〜L3に読み出すMAPデータ24を、降順に読み出すか又は昇順に読み出すかを指定する。開始アドレスレジスタ27−1には、昇降指定レジスタ26−1の指定に応じて、昇順又は降順に読み出しを開始するROM15のアドレスが格納されている。
【0073】
昇降指定レジスタ26−2は、ラインL4〜L6に読み出すMAPデータ24を、降順に読み出すか又は昇順に読み出すかを指定する。開始アドレスレジスタ27−2には、昇降指定レジスタ26−2の指定に応じて、昇順又は降順に読み出しを開始するROM15のアドレスが格納されている。
【0074】
そして、本実施例では、ラインの数を昇順用と降順用で等しくして(これまでの実施例より1つ多くして)、偶数のラインL1〜L6を用意する。上記のように、ラインL1〜L3に読み込まれるMAPデータ24は、昇降指定レジスタ26−1により昇順か降順かが、開始アドレスレジスタ27−1により読み出しを開始するROM15のアドレスが、それぞれ指定される。ラインL4〜L6に読み込まれるMAPデータ24は、昇降指定レジスタ26−2により昇順か降順かが、開始アドレスレジスタ27−2により読み出しを開始するROM15のアドレスが、それぞれ指定される。
【0075】
このようなレジスタを備え、開始アドレスレジスタ27−1,27−2に適切なアドレスを格納しておくことで、ラインL1〜L6に近似値候補xiと結果候補yiを混在させて読み出すことができる。
【0076】
例えば、開始アドレスレジスタ27−1にはx_maxのアドレスが格納され、開始アドレスレジスタ27−2にはy_maxのアドレスが格納される。そして、昇降指定レジスタ26−1、26−2には、降順に読み出すべきことが指定される(例えば、フラグに「1」が格納される。
【0077】
図13は、ラインL1〜L3に近似値候補xiが降順に、ラインL4〜L6に結果候補yiが降順に、それぞれ格納されている高速メモリ13の一例を示す図である。ラインL1〜L3に近似値候補xiが降順に、ラインL4〜L6に結果候補yiが降順に、それぞれ格納されているので、入力値xinが高速メモリ13に読み込まれた近似値候補xiにヒットした場合、対応する結果候補yiも高速メモリ13に格納されている。したがって、MAP引きを高速化することができる。図13では、x88に対応したy88を再ロードすることなく高速メモリ13から読み出すことができる。
【0078】
なお、昇降設定部21は、実施例3と同様に、MAP引きプログラム25中に記述された昇降指定情報31、又は、MAPデータ24に登録された昇降指定情報31に基づき、昇降指定レジスタ26−1、26−2に「1」又は「0」に設定する。一方が降順で他方が昇順ということはないので、昇降指定情報31は昇降指定レジスタ26−1、26−2に共通でよい。
【0079】
昇降設定部21は、降順の場合、x_maxのアドレスを開始アドレスレジスタ27−1に設定し、昇順の場合、x_minのアドレスを開始アドレスレジスタ27−1に設定する。また、昇降設定部21は、降順の場合、y_maxのアドレスを開始アドレスレジスタ27−2に設定し、昇順の場合、y_minのアドレスを開始アドレスレジスタ27−2に設定する。
【0080】
昇降設定部21は、MAPデータ24のサイズ、近似値候補xi(又は結果候補yi)の数、及び、近似値候補xi(又は結果候補yi)1つのサイズ(バイト数)、からx_max及びy_maxのアドレスを算出する。MAPデータ24のサイズは、固定であるので昇降設定部21が予め記憶しているか、ROM15に記憶されたMAPデータ24の先頭に記述されている。近似値候補xi、結果候補yiの数も固定であるので、昇降設定部21が予め記憶しているか、ROM15に記憶されたMAPデータ24の先頭に記述されている。xi、yiのバイト数も決まっている。なお、xiとyiの数は等しい。したがって、昇降設定部21は次のようにしてx_maxのアドレス、y_max、x_minのアドレス、y_min、のアドレスを決定する。
x_maxのアドレス = MAPデータ24の先頭アドレス+xiのサイズ×xiの数
y_maxのアドレス = x_maxのアドレス+MAPデータ24の先頭アドレス+yiのサイズ×yiの数
x_minのアドレス = MAPデータ24の先頭アドレス
y_minのアドレス = x_maxのアドレス+yiのサイズ
昇降設定部21は、MAP引きプログラム25から呼び出されると、昇降指定情報31に基づき昇降指定レジスタ26−1、26−2に「1」又は「0」に設定する。昇降設定部21は、昇降指定レジスタ26−1が「1」の場合は、x_maxのアドレスを開始アドレスレジスタ27−1に、昇降指定レジスタ26−1が「0」の場合は、x_minのアドレスを開始アドレスレジスタ27−1に設定する。同様に、昇降設定部21は、昇降指定レジスタ26−2が「1」の場合は、y_maxのアドレスを開始アドレスレジスタ27−2に、昇降指定レジスタ26−2が「0」の場合は、y_minのアドレスを開始アドレスレジスタ27−2に設定する。
【0081】
入れ替え制御部23は、昇降指定レジスタ26−1、26−2を参照して、降順に読み出すか昇順に読み出すかを決定する。読み出し先のアドレスは、開始アドレスレジスタ27−1、27−2に記憶されている。
【0082】
図14は、マップ引き処理を説明するための図のフローチャート図の一例を示す。なお、図14において実施例1にて説明したステップの説明は省略する。まず、昇降設定部21は、昇降指定レジスタ26−1、26−2に「1」又は「0」を設定する(S1)。昇降指定レジスタ26−1、26−2の設定により、入れ替え制御部23がMAPデータ24を読み込む方向が定まる。
【0083】
ついで、昇降設定部21は、x_maxのアドレスを算出して、開始アドレスレジスタ27−1に記憶する(S5)。また、昇降設定部21は、y_maxのアドレスを算出して、開始アドレスレジスタ27−2に記憶する(S6)。
【0084】
以上の設定により、MAP引きエンジン19は、L1〜L3にMAPデータ24の近似値候補xiを降順に、L4〜L6にMAPデータ24の結果候補yiを降順に、それぞれ読み込む。したがって、入力値xinの近似値xnを特定できた場合、MAP引きプログラム25は、高速メモリ13から出力近似値ynとyn+1を読み出すことができる。したがって、MAP引きを高速化することができる。
【0085】
なお、以降の処理は、実施例3と同様である。また、実施例4と同様に、入力値xinに応じて、高速メモリ13にMAPデータ24を読み込む順番を、降順又は昇順のいずれかに切り替えてもよい。
【0086】
以上説明したように、本実施形態のデータマップ読み取り装置100は、MAP引きの際のサーチ方向に応じて、近似値候補xi、結果候補yiの両方を昇順又は降順に高速メモリ13に読み出すことができるので、MAP引きの処理を高速化することができる。
【符号の説明】
【0087】
11 RAM
12 CPU
13 高速メモリ
14 命令フェッチ機構
15 ROM
19 MAP引きエンジン
21 昇降設定部
23 入れ替え制御部
24 MAPデータ
25 MAP引きプログラム
【特許請求の範囲】
【請求項1】
検索用データを記憶する第1の記憶手段と、
第1の記憶手段のアドレスに従い、前記検索用データを一様方向に読み出す読み出し手段と、
前記読み出し手段が読み出した、前記検索用データの複製を記憶する第2の記憶手段と、
前記第2の記憶手段に複製された前記検索用データを被検索値に基づき検索する検索手段と、
前記検索手段が、前記検索用データをインクリメントサーチするかデクリメントサーチするかによって、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段と、
を有することを特徴とするデータマップ読み取り装置。
【請求項2】
前記切り替え手段は、前記被検索値の大きさに応じて、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項1記載のデータマップ読み取り装置。
【請求項3】
第1の記憶手段は、前記検索用データの読み出し方向を指示する指定情報を記憶しており、
前記切り替え手段は、前記指定情報に基づき、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項1記載のデータマップ読み取り装置。
【請求項4】
前記切り替え手段は、前記検索手段が指定する、前記検索用データの読み出し方向を指示する指定情報に基づき、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項1記載のデータマップ読み取り装置。
【請求項5】
前記検索手段と、
前記検索手段が検索した前記被検索値に最も近い大小1対の前記検索用データ、に対応する1対の対応値を、第1の記憶手段から読み出す対応値読み出し手段と、
前記1対の対応値から、前記被検索値に対応する補間値を補間して算出する補間手段と、
を有することを特徴とする請求項1〜4いずれか1項記載のデータマップ読み取り装置。
【請求項6】
前記読み出し手段が、前記検索用データの複製と共に、前記第1の記憶手段から一様方向に、前記対応値の対応値データの複製を前記検索用データと同じ数だけ読み出して前記第2の記憶手段に記憶する際、
前記切り替え手段は、前記第1の記憶手段に記憶された前記検索用データの読み出し方向を指示する指定情報、又は、前記検索手段が指定する、前記検索用データの読み出し方向を指示する指定情報に基づき、
前記検索用データ及び前記対応値データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項5記載のデータマップ読み取り装置。
【請求項7】
前記対応値読み出し手段及び前記補間手段をCPUとは別の回路で実装する、
ことを特徴とする請求項5記載のデータマップ読み取り装置。
【請求項8】
検索用データを記憶する第1の記憶手段のアドレスに従い、読み出し手段が、前記検索用データを一様方向に読み出すステップと、
前記読み出し手段が読み出した、前記検索用データの複製を第2の記憶手段に記憶させるステップと、
前記第2の記憶手段に複製された前記検索用データを被検索値に基づき検索する検索手段が、前記検索用データをインクリメントサーチするかデクリメントサーチするかによって、切り替え手段が、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替えるステップと、
前記検索手段が、前記第2の記憶手段に複製された前記検索用データを被検索値に基づき検索するステップと、
を有することを特徴とするデータマップ読み取り方法。
【請求項1】
検索用データを記憶する第1の記憶手段と、
第1の記憶手段のアドレスに従い、前記検索用データを一様方向に読み出す読み出し手段と、
前記読み出し手段が読み出した、前記検索用データの複製を記憶する第2の記憶手段と、
前記第2の記憶手段に複製された前記検索用データを被検索値に基づき検索する検索手段と、
前記検索手段が、前記検索用データをインクリメントサーチするかデクリメントサーチするかによって、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える切り替え手段と、
を有することを特徴とするデータマップ読み取り装置。
【請求項2】
前記切り替え手段は、前記被検索値の大きさに応じて、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項1記載のデータマップ読み取り装置。
【請求項3】
第1の記憶手段は、前記検索用データの読み出し方向を指示する指定情報を記憶しており、
前記切り替え手段は、前記指定情報に基づき、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項1記載のデータマップ読み取り装置。
【請求項4】
前記切り替え手段は、前記検索手段が指定する、前記検索用データの読み出し方向を指示する指定情報に基づき、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項1記載のデータマップ読み取り装置。
【請求項5】
前記検索手段と、
前記検索手段が検索した前記被検索値に最も近い大小1対の前記検索用データ、に対応する1対の対応値を、第1の記憶手段から読み出す対応値読み出し手段と、
前記1対の対応値から、前記被検索値に対応する補間値を補間して算出する補間手段と、
を有することを特徴とする請求項1〜4いずれか1項記載のデータマップ読み取り装置。
【請求項6】
前記読み出し手段が、前記検索用データの複製と共に、前記第1の記憶手段から一様方向に、前記対応値の対応値データの複製を前記検索用データと同じ数だけ読み出して前記第2の記憶手段に記憶する際、
前記切り替え手段は、前記第1の記憶手段に記憶された前記検索用データの読み出し方向を指示する指定情報、又は、前記検索手段が指定する、前記検索用データの読み出し方向を指示する指定情報に基づき、
前記検索用データ及び前記対応値データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替える、
ことを特徴とする請求項5記載のデータマップ読み取り装置。
【請求項7】
前記対応値読み出し手段及び前記補間手段をCPUとは別の回路で実装する、
ことを特徴とする請求項5記載のデータマップ読み取り装置。
【請求項8】
検索用データを記憶する第1の記憶手段のアドレスに従い、読み出し手段が、前記検索用データを一様方向に読み出すステップと、
前記読み出し手段が読み出した、前記検索用データの複製を第2の記憶手段に記憶させるステップと、
前記第2の記憶手段に複製された前記検索用データを被検索値に基づき検索する検索手段が、前記検索用データをインクリメントサーチするかデクリメントサーチするかによって、切り替え手段が、前記検索用データの複製を読み出す方向を、第1の記憶手段の前記アドレスの降順方向又は昇順方向のいずれかに切り替えるステップと、
前記検索手段が、前記第2の記憶手段に複製された前記検索用データを被検索値に基づき検索するステップと、
を有することを特徴とするデータマップ読み取り方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2011−13913(P2011−13913A)
【公開日】平成23年1月20日(2011.1.20)
【国際特許分類】
【出願番号】特願2009−157223(P2009−157223)
【出願日】平成21年7月1日(2009.7.1)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【出願人】(000004260)株式会社デンソー (27,639)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成23年1月20日(2011.1.20)
【国際特許分類】
【出願日】平成21年7月1日(2009.7.1)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【出願人】(000004260)株式会社デンソー (27,639)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]