(57)【要約】【課題】ＵＭＡを採用するシステムにおいて、描画用プログラムの誤動作によるワーク領域のメモリ破壊を防ぎ、システム全体が暴走してしまう不都合を回避できるようにする。【解決手段】メモリ３のワーク領域３ａに対してアクセスするアドレス信号がＧＤＣ２から入力されたときに、当該入力されたアドレス信号をグラフィック領域３ｂに対するアドレス信号に変換して出力するメモリコントローラ４を設け、アプリケーションの誤動作等によってＧＤＣ２がＣＰＵ１のワーク領域３ａに間違ってアクセスしようとしても、そのようなアクセスができないように制限をかけることができるようにする。【選択図】　　　　図１
2004086395.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサが使用する演算用のワーク領域と第２のプロセッサが使用する描画用のグラフィック領域とが分けて配置された物理的に同一のメモリに対するアドレシングを管理するメモリ管理装置であって、
上記第２のプロセッサから上記ワーク領域に対してアクセスするアドレス信号が入力されたときに、当該入力されたアドレス信号を上記グラフィック領域に対するアドレス信号に変換して出力するメモリコントローラを備えたことを特徴とするメモリ管理装置。
【請求項２】
上記メモリコントローラは、上記第２のプロセッサから上記メモリに対する複数のアドレス線のうち、所定範囲を成す数ビット分のアドレス線の値を常に０または１に固定して出力することを特徴とする請求項１に記載のメモリ管理装置。
【請求項３】
第１のプロセッサが使用する演算用のワーク領域と第２のプロセッサが使用する画像描画用のグラフィック領域とが分けて配置された物理的に同一のメモリに対するアドレシングを管理するメモリ管理装置であって、
上記第２のプロセッサがメモリ空間をアクセスするために出力した論理アドレスを、上記メモリ上の実際のグラフィック領域をアクセスするための物理アドレスに変換する処理を行うメモリ管理ユニットを備えたことを特徴とするメモリ管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリ管理装置に関し、特に、ワーク用のＲＡＭと描画用のＶＲＡＭとを１つのメモリで共用するようにしたシステムにおいてメモリアクセスの誤動作を防止するための装置に用いて好適なものである。
【０００２】
【従来の技術】
一般に、車両の走行案内を行い、運転者が所望の目的地に容易に到達できるようにした車載用のナビゲーション装置は、自立航法センサやＧＰＳ（Ｇｌｏｂａｌ　Ｐｏｓｉｔｉｏｎｉｎｇ　Ｓｙｓｔｅｍ）受信機などを用いて車両の現在位置を検出し、その近傍の地図データをＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記録媒体から読み出して画面上に表示する。また、画面上の所定箇所に自車位置を示す車両位置マークを重ね合わせて表示する。そして、車両の移動により現在位置が変化するに従って、画面上で車両位置マークを移動したり、車両位置マークは画面上の所定箇所に固定してその近傍の地図データをスクロールしたりすることにより、車両が現在どこを走行しているのかを一目で分かるようにしている。このような画像表示のために、ＶＲＡＭ（ビデオＲＡＭ）が使われる。
【０００３】
最近のナビゲーション装置には、３次元画像のように非常に複雑で凝った地図画像を表示したり、画面を２つの領域に分けてそれぞれに異なる態様の地図画像を表示したりすることができるようにしたものがある。この種のナビゲーション装置の殆どでは、地図画像を精度よく高速に表示するために、一般的な演算用のＣＰＵとは別に画像表示用のグラフィックプロセッサあるいはＧＤＣ（Ｇｒａｐｈｉｃ　Ｄａｔａ　Ｃｏｎｔｒｏｌｌｅｒ）を備え、このＧＤＣを用いて描画を行うようにしている。
【０００４】
一方、近年においてＳＯＣ（Ｓｙｓｔｅｍ　ｏｎ　ａ　Ｃｈｉｐ）などの半導体技術の開発が進み、従来は複数のチップに分けて構成していた機能部品を１チップにまとめることができるようになってきた。これに伴い、ＣＰＵとＧＤＣとを１つのチップに集積化したものも提案されている。通常、ＣＰＵが使用するワーク用のＲＡＭと、ＧＤＣが使用する描画用のＶＲＡＭとは物理的に２つのメモリに分けて構成される。しかし、ＣＰＵとＧＤＣとを１チップ化した場合には、ＲＡＭとＶＲＡＭとを１つのメモリで共用するＵＭＡ（Ｕｎｉｆｉｅｄ　Ｍｅｍｏｒｙ　Ａｒｃｈｉｔｅｃｔｕｒｅ）システムを採用することが有効である。
【０００５】
ＵＭＡを採用するシステムでは、同一のＲＡＭ上にワーク領域とグラフィック領域とが分けて配置される。そして、ＣＰＵはワーク領域にアクセスして種々の演算を行い、ＧＤＣはグラフィック領域にアクセスしてナビゲーション画像の表示を行うようになっている。
【０００６】
【発明が解決しようとする課題】
しかしながら、ＵＭＡシステムでは、ＣＰＵとＧＤＣとが物理的に同一のＲＡＭにアクセスすることになる。そのため、アプリケーションの誤動作等によって、ＧＤＣがＣＰＵのワーク領域にアクセスしてしまうことがある。この場合には、ナビゲーション用の描画データをワーク領域に書き込んで演算用のデータを破壊してしまうため、システムが暴走あるいは正常動作できなくなってしまうという問題があった。
【０００７】
本発明は、このような問題を解決するために成されたものであり、ＵＭＡを採用するシステムにおいて、描画用プログラムの誤動作によるワーク領域のメモリ破壊を防ぎ、システム全体が暴走してしまうような不都合を回避できるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
上記した課題を解決するために、本発明のメモリ管理装置では、第１のプロセッサが使用する演算用のワーク領域と、第２のプロセッサが使用する描画用のグラフィック領域とが分けて配置されたメモリのうち、ワーク領域に対してアクセスするアドレス信号が第２のプロセッサから入力されたときに、当該入力されたアドレス信号をグラフィック領域に対するアドレス信号に変換して出力するメモリコントローラを備えている。
例えば、メモリコントローラは、第２のプロセッサからメモリに対する複数のアドレス線のうち、所定範囲を成す数ビット分のアドレス線の値を常に０または１に固定して出力するように構成される。
【０００９】
このように構成した本発明によれば、アプリケーションの誤動作等によって、第２のプロセッサが第１のプロセッサのワーク領域に間違ってアクセスしようとしても、ワーク領域に対するアドレス信号がグラフィック領域に対するアドレス信号に強制的に変換される。これにより、第２のプロセッサからワーク領域に対しては絶対にアクセスできないように制限がかけられるので、第２のプロセッサによる描画用データがワーク領域に書き込まれることによって第１のプロセッサによる演算用データが破壊されてしまうことがなくなる。
【００１０】
また、本発明の他の態様では、第２のプロセッサがメモリ空間をアクセスするために出力した論理アドレスを、メモリ上の実際のグラフィック領域をアクセスするための物理アドレスに変換する処理を行うメモリ管理ユニットを備えている。このように構成した本発明によれば、第２のプロセッサからメモリへのアクセスは常にグラフィック領域に対して行われるように管理される。これにより、第２のプロセッサからワーク領域に対しては絶対にアクセスできないように制限がかけられるので、第２のプロセッサによる描画用データがワーク領域に書き込まれることによって第１のプロセッサによる演算用データが破壊されてしまうことがなくなる。
【００１１】
【発明の実施の形態】
（第１の実施形態）
以下、本発明の第１の実施形態を図面に基づいて説明する。
図１は、本発明の第１の実施形態に係るメモリ管理装置の構成例を示す図である。図１において、１はＣＰＵであり、種々の演算を行って、本実施形態のメモリ管理装置が適用される電子機器の全体を制御する。このＣＰＵ１は、本発明の第１のプロセッサに相当する。
【００１２】
２はＧＤＣ（グラフィックプロセッサ）であり、ＣＰＵ１の制御に従って描画データを生成し、図示しないディスプレイに画像を表示する際の制御を行う。このＧＤＣ２は、本発明の第２のプロセッサに相当する。３はメモリであり、上記ＣＰＵ１およびＧＤＣ２により使用される。このメモリ３には、ＣＰＵ１が使用する演算用のワーク領域３ａと、ＧＤＣ２が使用する描画用のグラフィック領域３ｂとが分けて配置されている。
【００１３】
ワーク領域３ａは、ＣＰＵ１による各種処理の過程で得られるデータや、各種処理の結果得られるデータを一時的に格納する。また、グラフィック領域３ｂは、ＧＤＣ２により生成された描画データを一時的に格納する。このグラフィック領域３ｂに格納された描画データがディスプレイに供給されることにより、種々の画像が表示される。
【００１４】
本実施形態において、例えば、メモリ３のサイズは全体で３２Ｍ（メガ）バイトであり、そのうちワーク領域３ａに約２８Ｍバイト、グラフィック領域３ｂに約４Ｍバイトが割り当てられているものとする。また、グラフィック領域３ｂはメモリ３の先頭（アドレス０番地）から割り当てられ、その後に続いてワーク領域３ａが割り当てられているものとする。
【００１５】
４はメモリコントローラであり、ＣＰＵ１およびＧＤＣ２からメモリ３に対するアドレシングを制御する。このメモリコントローラ４とＣＰＵ１およびＧＤＣ２との間、メモリコントローラ４とメモリ３との間は、複数のアドレス線Ａ２５〜Ａ０，Ａ２５’〜Ａ０’によって接続されている。なお、図１中にはアドレス線のみを示し、データ線については図示を省略している。
【００１６】
上記メモリコントローラ４は、ＣＰＵ１からメモリ３に対してアクセスするためのアドレス信号がアドレス線Ａ２５〜Ａ０より入力されたときは、それをそのままメモリ３に出力する。一方、ＧＤＣ２からメモリ３に対してアクセスする際にアドレス線Ａ２５’〜Ａ０’より入力されるアドレス信号については、グラフィック領域３ｂに対するアドレス信号であればそのまま通すが、ワーク領域３ａに対するアドレス信号が入力されたときは、当該入力されたアドレス信号をグラフィック領域３ｂに対するアドレス信号に変換して出力する。
【００１７】
このようなアドレス変換は、例えば次のようにすることによって実現できる。すなわち、メモリコントローラ４からメモリ３に対する複数のアドレス線Ａ２５’〜Ａ０’のうち、上位４ビット分のアドレス線Ａ２５’〜Ａ２２　’の値を常に０にマスクして出力するようにする。残りのアドレス線Ａ２１’〜Ａ０　’については、入力された値をそのまま出力する。このようにすれば、ＧＤＣ２からメモリ３に対して与えられるアドレス信号は、常に先頭から４Ｍバイトのグラフィック領域３ｂを指定するものとなる。
【００１８】
図２は、この図１に示したメモリ管理装置を車載用ナビゲーション装置に適用した場合の全体構成例を示すブロック図である。なお、この図２において、図１に示した機能ブロックと同じ機能を有するものには同一の符号を付している。
【００１９】
図２において、１１はＤＶＤ−ＲＯＭ等の地図記憶媒体であり、地図表示や経路探索などに必要な各種の地図データを記憶している。なお、ここでは地図データを記憶する記録媒体としてＤＶＤ−ＲＯＭ１１を用いているが、ＣＤ−ＲＯＭ、ハードディスクなどの他の記録媒体を用いても良い。１２はＤＶＤ−ＲＯＭ制御部であり、ＤＶＤ−ＲＯＭ１１からの地図データの読み取りを制御する。
【００２０】
１３は車両の現在位置を測定する位置測定装置であり、自立航法センサ、ＧＰＳ受信機、位置計算用ＣＰＵ等で構成されている。自立航法センサは、所定走行距離毎に１個のパルスを出力して車両の移動距離を検出する車速センサ（距離センサ）と、車両の回転角度（移動方位）を検出する振動ジャイロ等の角速度センサ（相対方位センサ）とを含む。自立航法センサは、これらの車速センサおよび角速度センサによって車両の相対位置および方位を検出する。
【００２１】
位置計算用ＣＰＵは、自立航法センサから出力される自車の相対的な位置および方位のデータに基づいて、絶対的な自車位置（推定車両位置）および車両方位を計算する。また、ＧＰＳ受信機は、複数のＧＰＳ衛星から送られてくる電波をＧＰＳアンテナで受信して、３次元測位処理あるいは２次元測位処理を行って車両の絶対位置および方位を計算する（車両方位は、現時点における自車位置と１サンプリング時間ΔＴ前の自車位置とに基づいて計算する）。
【００２２】
１４は地図情報メモリであり、ＤＶＤ−ＲＯＭ制御部１２の制御によってＤＶＤ−ＲＯＭ１１から読み出された地図データを一時的に格納する。すなわち、ＤＶＤ−ＲＯＭ制御部１２は、位置測定装置１３から車両現在位置の情報を入力し、その車両現在位置を含む所定範囲の地図データの読み出し指示を出力することにより、地図表示や誘導経路の探索に必要な地図データをＤＶＤ−ＲＯＭ１１から読み出して地図情報メモリ１４に格納する。
【００２３】
１５はリモートコントローラ（リモコン）等の操作部であり、ユーザがナビゲーション装置に対して各種の情報（例えば、経路誘導の目的地）を設定したり、各種の操作（例えば、メニュー選択操作、拡大／縮小操作、手動地図スクロール、数値入力など）を行ったりするための各種操作子（ボタンやジョイスティック等）を備えている。１６はリモコンインタフェースであり、リモコン１５からその操作状態に応じた赤外線信号を受信する。
【００２４】
１７はＲＯＭであり、各種プログラム（誘導経路探索処理プログラム等）を記憶する。１８はＣＰＵであり、ＲＯＭ１７に記憶されている各種プログラムに従って、ナビゲーション装置の全体を制御する。このＣＰＵ１８は、図１に示したＣＰＵ１に対応するものである。１９はＧＤＣであり、地図情報メモリ１４に格納された地図データに基づいて、表示装置２６への表示に必要な地図画像データを生成する。このＧＤＣ１９は、図１に示したＧＤＣ２に対応するものである。
【００２５】
２０はＲＡＭであり、図１に示したメモリ３に対応するものである。すなわち、このＲＡＭ２０は、ＣＰＵ１８が使用する演算用のワーク領域と、ＧＤＣ１９が使用する描画用のグラフィック領域とを含んでいる。図１のメモリ３と同様に、ＲＡＭ２０のサイズは全体で３２Ｍバイトであり、そのうちの先頭から約４Ｍバイトがグラフィック領域に、残りの約２８Ｍバイトがワーク領域に割り当てられている。
【００２６】
２１は読出制御部であり、ＲＡＭ２０のグラフィック領域からの地図画像データの読み出しを制御する。ＧＤＣ１９によって生成された地図画像データはＲＡＭ２０のグラフィック領域に一時的に格納され、読出制御部２１によって１画面分の地図画像データが読み出される。
【００２７】
２２は誘導経路メモリであり、ＣＰＵ１８が探索した誘導経路のデータを記憶する。２３は誘導経路発生部であり、誘導経路メモリ２２に記憶された誘導経路探索処理プログラムの処理結果を使用して、誘導経路のデータを発生する。すなわち、誘導経路メモリ２２に記憶された誘導経路データの中から、その時点でＲＡＭ２０のグラフィック領域に描画された地図エリアに含まれるものを選択的に読み出し、地図画像に重ねて所定色で太く強調した誘導経路を描画する。
【００２８】
２４はマーク発生部であり、マップマッチング処理された後の自車位置に表示する車両位置マークや、ガソリンスタンドやコンビニエンスストア等を表示する各種ランドマーク等を発生して出力する。なお、マップマッチング処理とは、地図情報メモリ１４に読み出されている地図データと、位置測定装置１３によって測定されたＧＰＳ受信機による自車位置および車両方位のデータと、自立航法センサによる推定車両位置および車両方位のデータとを用いて、自車の走行位置を地図データの道路上に位置修正する処理のことを言う。
【００２９】
２５は画像合成部であり、各種画像を合成して出力する。すなわち、読出制御部２１によってＲＡＭ２０のグラフィック領域から読み出された地図画像データに、誘導経路発生部２３、マーク発生部２４のそれぞれから出力される各画像データを重ねて画像合成を行い、表示装置２６に出力する。これにより、表示装置２６の画面上には、自車周辺の地図情報が車両位置マークや出発地マーク、目的地マーク等と共に表示される。また、経路探索を行ったときは、この地図上に誘導経路が表示される。
【００３０】
以上詳しく説明したように、第１の実施形態では、ＣＰＵ１およびＧＤＣ２とメモリ３との間にメモリコントローラ４を設け、メモリ３のワーク領域３ａに対するアドレス信号がＧＤＣ２から入力されたときに、当該入力されたアドレス信号をグラフィック領域３ｂに対するアドレス信号に変換して出力するようにした。これにより、アプリケーションの誤動作等によってＧＤＣ２がＣＰＵ１用のワーク領域３ａに間違ってアクセスしようとしても、そのようなメモリアクセスは行えないように制限される。
【００３１】
したがって、ＧＤＣ２の描画データがワーク領域３ａに書き込まれることによってＣＰＵ１の演算データが破壊されてしまうことを防ぎ、システム全体が暴走してしまうような不都合を回避することができる。また、システムの開発段階においても、ワーク領域３ａのメモリ保護が可能となるため、デバッグ性能が向上し、開発効率を向上させることができる。さらに、システムが製品として出荷された後でもメモリ保護機能が働くため、製品の品質が向上する。
【００３２】
なお、上記第１の実施形態では、メモリ３のサイズを３２Ｍバイトとし、これをワーク領域３ａの２８Ｍバイトとグラフィック領域３ｂの４Ｍバイトとに分割する例について説明したが、これらの数字は単なる例に過ぎない。
【００３３】
また、上記第１の実施形態では、グラフィック領域３ｂの４Ｍバイトをメモリ３の先頭部分に設定する例について説明したが、アドレス線Ａ２５’〜Ａ２２　’のうちどのビット部分を０にマスクするかを外部からレジスタ等に設定することにより、ＧＤＣ２がアクセスできるグラフィック領域３ｂをメモリ３内の任意の位置に設定することが可能である。
【００３４】
また、上記第１の実施形態では、ＧＤＣ２からメモリ３に対するアドレス線Ａ２５’〜Ａ２２　’のうち、所定数のアドレス線の値を０にマスクする例について説明したが、所定数のアドレス線の値を１にマスクするようにしても良い。
【００３５】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。図３は、本発明の第２の実施形態に係るメモリ管理装置の構成例を示すブロック図である。なお、この図３において、図１に示した符号と同一の符号を付したものは互いに同一の機能を有するものであるので、ここでは重複する説明を省略する。
【００３６】
図３に示すように、第２の実施形態によるメモリ管理装置では、図１の例でＣＰＵ１およびＧＤＣ２とメモリ３との間に設けていたメモリコントローラ４の代わりに、ＧＤＣ３２の内部にＭＭＵ（Ｍｅｍｏｒｙ　Ｍａｎａｇｅｍｅｎｔ　Ｕｎｉｔ）３２ａを設けている。ＭＭＵ３２ａは、メモリ空間をアクセスするためにＧＤＣ３２が出力した論理アドレスを、実際のメモリ３をアクセスするための物理アドレスに変換する処理を行う。また、メモリ空間のアクセス権を制限して保護する処理も行う。
【００３７】
例えば、図４に示すように、アプリケーションで実行されるプロセス４１のサイズが物理メモリ（メモリ３）より大きい場合、そのプロセス４１を分割して、アプリケーション実行に必要な部分を物理メモリ３に随時マッピングする必要が生じる。そのために、物理メモリ３に比べて十分に大きな仮想メモリ４２を用意しておき、プロセス４１がこの仮想メモリ４２にアクセスするようにする。そして、仮想メモリ４２から物理メモリ３へのマッピングにＭＭＵ３２ａを用いる。すなわち、ＭＭＵ３２ａは、仮想メモリ４２にマッピングされたプロセスを、物理メモリ３内の適当なアドレスに割り当てる処理を行う。
【００３８】
このようなＭＭＵ３２ａは、複数のプロセスが同時に動くタイムシェアリングシステムにおいて特に有効である。すなわち、複数のプロセスがそれぞれ仮想メモリ４２にアクセスし、仮想メモリ４２にマッピングされた複数のプロセスをＭＭＵ３２ａが効率よく物理メモリ３に割り当てる。このときＭＭＵ３２ａは、あるプロセスが別のプロセスの物理メモリ３に誤ってアクセスしないように、メモリ保護を行う。
【００３９】
第２の実施形態では、このようなＭＭＵ３２ａのメモリ保護機能を利用して、ＧＤＣ３２がメモリ３にアクセスするときに、ＣＰＵ１用のワーク領域に誤ってアクセスしないように適宜アドレス変換を行うようにする。すなわち、ＭＭＵ３２ａは、ＧＤＣ３２が常にメモリ３のグラフィック領域をアクセスするようにアドレスの制御を行う。
【００４０】
このように構成した第２の実施形態においても、アプリケーションの誤動作等によってＧＤＣ３２がＣＰＵ１用のワーク領域に間違ってアクセスしようとしても、そのようなメモリアクセスは行えないように制限される。これにより、ＧＤＣ３２の描画データがＣＰＵ１用のワーク領域に書き込まれることによってＣＰＵ１の演算データが破壊されてしまうことを防ぎ、システム全体が暴走してしまうような不都合を回避することができる。
【００４１】
なお、上記第２の実施形態では、ＭＭＵ３２ａをＧＤＣ３２にのみ備える例について説明したが、ＣＰＵ１にも備えるようにしても良い。この場合、ＣＰＵ１のＭＭＵは、ＣＰＵ１がメモリ３にアクセスするときに、ＧＤＣ３２のグラフィック領域に誤ってアクセスしないようにメモリ保護を行う。
【００４２】
このようにすれば、アプリケーションの誤動作等によってＣＰＵ１がＧＤＣ３２用のグラフィック領域に間違ってアクセスしようとしても、そのようなメモリアクセスは行えないように制限される。これにより、ＣＰＵ１の演算データがＧＤＣ３２用のグラフィック領域に書き込まれることによってＧＤＣ３２の描画データが破壊されてしまうことを防ぎ、正しい画像表示ができなくなってしてしまうような不都合を回避することができる。
【００４３】
また、このようなＭＭＵの機能を、第１の実施形態で説明した図１のＣＰＵ１に持たせるようにしても良い。
【００４４】
その他、以上に説明した各実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００４５】
【発明の効果】
以上説明したように、本発明によれば、アプリケーションの誤動作等によって第２のプロセッサが第１のプロセッサのワーク領域に間違ってアクセスしようとしても、そのようなアクセスができないように制限をかけることができ、描画用プログラムの誤動作により演算データが破壊され、システムが暴走してしまう不都合を回避することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るメモリ管理装置の構成例を示すブロック図である。
【図２】第１の実施形態に係るメモリ管理装置を適用した車載用ナビゲーション装置の全体構成例を示すブロック図である。
【図３】本発明の第２の実施形態に係るメモリ管理装置の構成例を示すブロック図である。
【図４】ＭＭＵの機能を説明するための図である。
【符号の説明】
１　ＣＰＵ（演算用プロセッサ）
２　ＧＤＣ（グラフィックプロセッサ）
３　メモリ
３ａ　ワーク領域
３ｂ　グラフィック領域
４　メモリコントローラ
１１　ＤＶＤ−ＲＯＭ
１２　ＤＶＤ−ＲＯＭ制御部
１３　位置測定装置
１４　地図情報メモリ
１５　リモコン
１６　リモコンインタフェース
１７　ＲＯＭ
１８　ＣＰＵ
１９　ＧＤＣ
２０　ＲＡＭ
２１　読出制御部
２２　誘導経路メモリ
２３　誘導経路発生部
２４　マーク発生部
２５　画像合成部
２６　表示装置
【図１】
2004086395.tif 000003
【図２】
2004086395.tif 000004
【図３】
2004086395.tif 000005
【図４】
2004086395.tif 000006