JP4331325B2 - メモリ管理装置 - Google Patents
メモリ管理装置 Download PDFInfo
- Publication number
- JP4331325B2 JP4331325B2 JP16170399A JP16170399A JP4331325B2 JP 4331325 B2 JP4331325 B2 JP 4331325B2 JP 16170399 A JP16170399 A JP 16170399A JP 16170399 A JP16170399 A JP 16170399A JP 4331325 B2 JP4331325 B2 JP 4331325B2
- Authority
- JP
- Japan
- Prior art keywords
- space
- address
- logical address
- definition
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、マルチタスクシステムで用いられるメモリ管理装置に関するものである。
【0002】
【従来の技術】
近年、読み出し専用メモリ(ROM)にプログラムコードを配置した、いわゆる組み込み型マイクロコンピュータ制御システムにおいて、対象システムの複雑化に伴いプログラムサイズが増大しており、マルチタスクシステムを構成することが通例となっている。マルチタスクシステムにおいて、あるタスクが他のタスクで用いられる記憶情報を破壊するようなバグを持っている場合、バグの追求は非常に困難なため、解決に膨大な時間を要する。
【0003】
最近の機器組み込み用マイクロプロセッサには、実行段階で機能する保護機構が搭載されつつある。そこで、上記のような問題を解決するため、そのような保護機構を利用して、バグが発生しうるプログラムを非特権モードで動作させ、バグが発生しえないプログラムを特権モードで動作させることによってマルチタスクシステムの誤動作を防止する方法が考えられる。
【0004】
しかし、この方法では各プログラムを特権モードおよび非特権モードのいずれで動作させるかを決定することが困難である。また、同じモードで動作するプログラム同士は互いに破壊することができるため、完全に問題を解決することはできない。
【0005】
また、ワークステーションやパーソナルコンピュータ等のコンピュータの分野では、メモリ管理装置(MMU)を利用して各タスクを別の論理アドレス空間で動作させ、タスク間でメモリに直接アクセスできないようにすることによってこの問題を解決しているものがある。最近の機器組み込み用マイクロプロセッサの中にはメモリ管理装置を搭載しているものもあるため、このようなマイクロプロセッサでは、上記の問題を解決するためにコンピュータと同じようにタスク間でメモリに直接アクセスできないように構成することが考えられる。
【0006】
しかし、組み込み型マイクロコンピュータ制御システムでは、多くのタスクがコードやデータを共有して密接に協調して動作するため、機器組み込み用マイクロプロセッサにおいては、別々の論理アドレス空間にタスクを分割することは非常に困難である。
【0007】
ただし、同じ問題はコンピュータの分野にも存在し、従来のメモリ管理装置においては、タスク間で直接アクセス可能な共有メモリを実現している。
【0008】
図9は例えば特開平7−93210号公報に記載されている共有メモリ管理方式を用いて共有メモリを実現するための従来のメモリ管理装置の一構成例を示すブロック図である。
【0009】
図9に示すメモリ管理装置800は、メモリ領域情報801および空間情報802を保持している。メモリ領域情報801には、メモリ領域を識別するためのメモリ領域識別子とそのメモリ領域識別子が示すメモリ領域のメモリサイズ等のメモリ領域に関する情報とがメモリ領域ごとに記述されている。空間情報802には、論理アドレス空間を識別するための空間識別子とその空間識別子が示す論理アドレス空間に属するメモリ領域とが論理アドレス空間ごとに記述されている。
【0010】
このメモリ管理装置800は、アドレス変換表803、マッピング手段804およびアドレス変換表切り換え手段805を備える。マッピング手段804は、アドレス変換表803を作成することによってメモリ領域を論理アドレス空間にマッピングする。アドレス変換表803は、各論理アドレス空間ごとに設けられ、物理アドレスと論理アドレスとの間の変換を行う際に物理アドレスと論理アドレスとの対応関係を指示する。アドレス変換表切り換え手段805は、タスクを切り換える時にアドレス変換表803を切り換えることによって論理アドレス空間を切り換える。
【0011】
図9に示す従来のメモリ管理装置800においては、タスクが発行する共有メモリのマッピング要求に応じてマッピング手段804が起動される。マッピング手段804は、マッピングすべき共有メモリについてメモリ領域情報801を参照し、マッピングすべき論理アドレス空間について空間情報802を参照し、そしてアドレス変換表803を作成することによって、共有メモリのメモリ領域を論理アドレス空間にマッピングする。さらに、別のタスクで共有メモリのマッピング要求が発行された場合にも、図9のメモリ管理装置800は、同様の処理を行う。このように、複数のタスク間で共有可能なメモリ領域を論理アドレス空間にマッピングすることによって、アドレス変換表切り換え手段805が論理アドレス空間を切り換えてもメモリ領域を共有することが可能となる。
【0012】
【発明が解決しようとする課題】
しかしながら、上記のように構成された従来のメモリ管理装置800においては、タスクからの要求によって確保して共有しているメモリ領域では、各タスクが動的に確保してアクセスするバッファメモリやデータ構造に関してタスク間で共有できるのみであるため、プログラムで直接記述したコードやデータについては共有することができず、問題の解決にはならない。
【0013】
本発明の目的は、プログラムを変更することなく必要なモジュールのみ必要なタスク間で共有させ、それ以外はタスク間でメモリに直接アクセスできず、メモリに記憶されているタスクの内容が破壊されるのを防止して信頼性の高いシステムを容易に構築することができるメモリ管理装置を提供することである。
【0014】
【課題を解決するための手段】
(1)第1の発明
第1の発明に係るメモリ管理装置は、メモリの物理アドレスを複数の論理アドレスへ対応付けるメモリ管理装置であって、複数の論理アドレス空間を複数のモジュールとの対応関係を示す第1の定義に基づいて、複数の論理アドレス空間のそれぞれにモジュールを配置する配置手段と、複数のモジュールの物理アドレスを示すモジュール情報に基づいて、配置手段によりモジュールが配置された論理アドレス空間の論理アドレスへ物理アドレスを対応付けるマッピング手段と、タスクの切り換え指示に応答して、マッピング手段により対応付けられた複数の論理アドレス空間の切り換えを行う論理アドレス空間切り換え手段とを備えたものである。
【0015】
本発明に係るメモリ管理装置においては、配置手段により第1の定義に基づいて複数の論理アドレス空間のそれぞれにモジュールが配置され、配置された論理アドレス空間の論理アドレスへ物理アドレスがモジュール情報に基づいてマッピング手段により対応付けられる。そのため、切り換え手段によりタスクの切り換え指示に応答して論理アドレス空間の切り換えが行われれば、切り換え前後の論理アドレス空間とモジュールとの対応関係がそれぞれ第1の定義に示されているように定まる。したがって、異なるタスクにおいて必要とされる同一のモジュールが第1の定義により異なるタスクに共通に対応することが示されていればその同一のモジュールは共有することができる。しかし、共有されるモジュール以外のモジュールは、異なるタスクの一方にのみ対応することが第1の定義で示されているので共有されない。それにより、必要なモジュール以外は異なるタスク間でメモリに直接アクセスすることを禁止し、必要なモジュールのみ異なるタスク間で共有させることができる。
【0016】
(2)第2の発明
第2の発明に係るメモリ管理装置は、第1の発明に係るメモリ管理装置の構成において、第1の定義は、複数の論理アドレス空間にそれぞれ所属するセクションを定義する空間定義と、各セクションに所属する一または複数のモジュールを定義するセクション定義とを含むものである。
【0017】
この場合、論理アドレス空間でのモジュールの配置は、配置手段によりモジュールの集合を示すセクション単位で決定される。そのため、モジュールが属するセクションごとにモジュールの取り扱い規定を別々に設けることができ、同じ機能を持ちながら異なる取り扱い規定としなければならないモジュールを、取り扱い規定の異同に係わらず、複数のタスク間で共有することができるようになる。
【0018】
(3)第3の発明
第3の発明に係るメモリ管理装置は、第1または第2の発明に係るメモリ管理装置の構成において、論理アドレス空間切り換え手段は、複数の論理アドレス空間のそれぞれに複数のタスクのいずれかを対応付ける第2の定義に基づいて、複数の論理アドレス空間の切り換えを行うものである。
【0019】
この場合、論理アドレス空間切り換え手段により、論理アドレス空間とモジュールとの対応関係を規定しない第2の定義に基づきタスクの切り換え指示に応じた論理アドレス空間の切り換えが行われる。そのため、タスク切り換え時にタスクの切り換え前後で論理アドレス空間が同じ場合には、論理アドレス空間の切り換えを行わないようにすることができる。すなわち、異なるタスク間で同一の論理アドレス空間全体を共有することができる。
【0020】
(4)第4の発明
第4の発明に係るメモリ管理装置は、第1〜第3のいずれかの発明に係るメモリ管理装置の構成において、対応付けに応じて論理アドレスと物理アドレスとの間のアドレス変換を行うアドレス変換手段と、周辺装置からのメモリアクセス要求を受け付ける要求受付手段と、要求受付手段がメモリアクセス要求を受け付けた場合、アドレス変換手段によって物理アドレスと論理アドレスとの間のアドレス変換が可能な状態のときには、アドレス変換手段を用いて論理アドレスに基づくメモリアクセスを行い、アドレス変換手段によるアドレス変換が不可能な状態のときには、物理アドレスに基づくメモリアクセスを行うメモリアクセス手段とをさらに備えたものである。
【0021】
この場合、デバッガからのメモリアクセス要求を要求受付手段が受け付けた場合、メモリアクセス手段によりアドレス変換手段のアドレス変換が可能なときには論理アドレスに基づくメモリアクセスが行われ、不可能なときには物理アドレスに基づくメモリアクセスが行われる。そのため、アドレス変換手段の状態によらずメモリアクセスを行うことができ、例えばアドレス変換手段のマッピングが終了していないためアドレス変換手段が動作することができなくても周辺装置からのメモリアクセス要求に対し矛盾なく対応することができる。
【0022】
【発明の実施の形態】
(実施の形態1)
以下、本発明の実施の形態1におけるメモリ管理装置について説明する。図1は、実施の形態1におけるメモリ管理装置の一構成例を示すブロック図である。
【0023】
図1のメモリ管理装置100は、複数のモジュール情報101、複数のセクション定義102および複数の空間定義103を保持している。
【0024】
モジュール情報101は、モジュールを識別するためのモジュール識別子と、そのモジュール識別子が示すモジュールのコードやデータのサイズ等のプログラムに関する情報とをモジュールごとに記述している。
【0025】
また、セクション定義102は、セクションを識別するためのセクション識別子と、そのセクション識別子が示すセクションに所属する1つまたは複数のモジュールを識別するためのモジュール識別子とをセクションごとに定義する。
【0026】
さらに、空間定義103は、論理アドレス空間を識別するための空間識別子と、その空間識別子が示す論理アドレス空間に所属する1つまたは複数のセクションを識別するためのセクション識別子と、その空間識別子が示す論理アドレス空間に切り換えるタスクを識別するタスク識別子とを論理アドレス空間ごとに定義する。
【0027】
メモリ管理装置100は、配置手段104、複数のアドレス変換表105、マッピング手段106およびアドレス変換表切り換え手段107を備える。
【0028】
配置手段104は、モジュール情報101とセクション定義102と空間定義103とに基づき、複数の論理アドレス空間のそれぞれに所属するセクションを読み取り、複数の論理アドレス空間のそれぞれのセクションについてモジュールの配置を決定する。すなわち、配置手段104は、複数の論理アドレス空間のそれぞれにおいてモジュールの配置を決定する。
【0029】
マッピング手段106は、アドレス変換表105を作成することによって、論理アドレス空間ごとに配置されているモジュールについて論理アドレスと物理アドレスとの対応関係を決定するためのマッピングを行う。
【0030】
複数のアドレス変換表105のそれぞれは、複数の論理アドレス空間の中の1つと一対一に対応しており、そのためそれぞれ複数のタスクの中の1つと一対に一に対応しており、対応する論理アドレス空間(タスク)における論理アドレスと物理アドレスとの対応関係を示している。
【0031】
アドレス変換表切り換え手段107は、タスクの切り換え指示に応じて、アドレス変換表105を切り換える。アドレス変換表105が論理アドレス空間と一対一に対応していることからアドレス変換表105の切り換えは論理アドレス空間の切り換えを意味する。
【0032】
なお、配置手段104、マッピング手段106およびアドレス変換表切り換え手段107は、CPU(中央演算処理装置)がROM(リードオンリメモリ)等の記憶装置に記憶されたプログラムをRAM(ランダムアクセスメモリ)等のメモリ上で実行することにより実現される。また、モジュール情報101、セクション定義102および空間定義103は、ファイルとしてROM、ハードディスク装置等の記憶装置に予め記憶される。さらに、アドレス変換表105は、マッピング手段106により作成された後、RAM、ハードディスク装置等の記憶装置に格納される。
【0033】
図2は、メモリ管理装置100が保持しているモジュール情報101、セクション定義102および空間定義103の一例を示す概念図である。図3は、メモリ管理装置100が行ったマッピングの一例を示す概念図である。
【0034】
図2のモジュール情報101には、「モジュール1」、「モジュール2」および「モジュール3」というモジュールをそれぞれ示すモジュール識別子211〜213と、各モジュール識別子211〜213が示すモジュールのコードアドレス、コードサイズ、データアドレスおよびデータサイズとが記述されている。
【0035】
セクション定義102には、「セクション1」、「セクション2」および「セクション3」というセクションをそれぞれ示すセクション識別子221〜223と、各セクション識別子221〜223が示すセクションにそれぞれ属する「モジュール1」、「モジュール2」および「モジュール3」というモジュールをそれぞれ示すモジュール識別子211〜213とが定義されている。
【0036】
空間定義103には、「空間1」および「空間2」という論理アドレス空間をそれぞれ示す空間識別子231,232と、各空間識別子231,232が示す論理アドレス空間に属する「セクション1」、「セクション2」および「セクション3」というセクションをそれぞれ示すセクション識別子221〜223と、各空間識別子231,232が示す論理アドレス空間が属する「タスク1」および「タスク2」というタスクをそれぞれ示すタスク識別子241,242とが定義されている。
【0037】
図2に示すモジュール情報101とセクション定義102と空間定義103とを用いて、空間識別子231,232で示される「空間1」および「空間2」という論理アドレス空間について、それぞれ表1および表2に示すアドレス変換表を作成することによって、図3に示すマッピングを行う。
【0038】
【表1】
【0039】
【表2】
【0040】
なお、図3においては、2つの論理アドレス空間LA,LBと物理アドレス空間PSとの対応関係が示されている。本例では、論理アドレス空間LAが「空間1」に相当し、論理アドレス空間LBが「空間2」に相当する。
【0041】
図3に示すマッピングを行うために、メモリ管理装置100はシステム初期化時に、マッピング手段106を起動する。起動されたマッピング手段106は、さらに配置手段104を起動する。
【0042】
配置手段104は、空間定義103を参照し、空間識別子231により示される「空間1」という論理アドレス空間にセクション識別子221により示される「セクション1」が所属することを読み取る。
【0043】
次に配置手段104は、セクション定義102を参照し、セクション識別子221により示される「セクション1」にモジュール識別子211により示される「モジュール1」が所属することを読み取る。
【0044】
さらに、配置手段104は、モジュール情報101を参照し、モジュール識別子211により示される「モジュール1」のコードアドレス、コードサイズ、データアドレスおよびデータサイズを読み取る。そして、配置手段104は、モジュール識別子211により示される「モジュール1」のコードアドレスおよびデータアドレスを、空間識別子231により示される「空間1」という論理アドレス空間上に配置する。それにより、「モジュール1」が「空間1」に配置される。
【0045】
次に、配置手段104は、空間識別子231により示される「空間1」という論理アドレス空間にセクション識別子222により示される「セクション2」が所属することを読み取り、「セクション1」の場合と同様に、空間定義103とセクション定義102とモジュール情報101に基づき、モジュール識別子212により示される「モジュール2」のコードアドレスとデータアドレスとを空間識別子231により示される「空間1」という論理アドレス空間上に配置する。それにより、「モジュール2」が「空間1」に配置される。
【0046】
同様に、配置手段104は、空間定義103を参照し、空間識別子232により示される「空間2」という論理アドレス空間にセクション識別子222により示される「セクション2」が所属することを読み取り、空間定義103とセクション定義102とモジュール情報101に基づき、モジュール識別子212に示される「モジュール2」のコードアドレスとデータアドレスとを空間識別子232により示される「空間2」という論理アドレス空間上に配置する。それにより、「モジュール2」が「空間2」に配置される。
【0047】
また、配置手段104は、空間定義103を参照し、空間識別子232により示される「空間2」という論理アドレス空間にセクション識別子223により示される「セクション3」が所属することを読み取り、空間定義103とセクション定義102とモジュール情報101に基づき、モジュール識別子213により示される「モジュール3」のコードアドレスとデータアドレスとを空間識別子232により示される「空間2」という論理アドレス空間上に配置する。それにより、「モジュール3」が「空間2」に配置される。
【0048】
マッピング手段106は、空間識別子231により示される「空間1」という論理アドレス空間において、配置手段104によってコードアドレスおよびデータアドレスが配置された論理アドレスに物理アドレスを対応させ、表1に示すアドレス変換表105を作成する。
【0049】
次に、マッピング手段106は、空間識別子232により示される「空間2」という論理アドレス空間において、配置手段104によってコードおよびデータが配置された論理アドレスに物理アドレスを対応させ、表2に示すアドレス変換表105を作成する。
【0050】
上記の場合、「空間1」および「空間2」の両方にモジュール識別子212により示される「モジュール2」が所属しているので、配置手段104は、論理アドレス空間LAの論理アドレス「0x11000000」および「0x21000000」に「モジュール2」のコードアドレスおよびデータアドレスをそれぞれ配置する。それにより、マッピング手段106は、物理アドレス「0x80001000」を論理アドレス空間LAの論理アドレス「0x11000000」および論理アドレス空間LBの論理アドレス「0x11000000」へマッピングする。
【0051】
同様に、マッピング手段106は、物理アドレス「0x90001000」を論理アドレス空間LAの論理アドレス「0x21000000」および論理アドレス空間LBの論理アドレス「0x21000000」へマッピングする。
【0052】
このように、図3の論理アドレス空間LA,LBと物理アドレス空間PSとの対応関係が決定される。
【0053】
マッピング手段106は、これらアドレス変換表105を作成する際に、空間定義103を参照してタスクと論理アドレス空間との関連づけを行っている。アドレス変換表切り換え手段107は、表1が「タスク1」に対応し、表2が「タスク2」に対応するという情報を保持している。
【0054】
システム初期化終了後、アドレス変換表切り換え手段107は、タスクの切り換え指示に応じて、表1および表2に示したようなアドレス変換表105の切り換えを行う。
【0055】
例えば、タスク識別子241により示される「タスク1」を行った後に、タスク識別子242により示される「タスク2」を行う場合、アドレス変換表切り換え手段107は、アドレス変換表105を、空間識別子231により示される「空間1」という論理アドレス空間に対応した表1から空間識別子232により示される「空間2」という論理アドレス空間に対応した表2へと切り換える。つまり、アドレス変換表切り換え手段107は、アドレス変換表105を切り換えることによって、「空間1」から「空間2」への切り換えを行っている。
【0056】
本実施の形態のメモリ管理装置100によれば、配置手段104およびマッピング手段106によって、「空間1」および「空間2」という異なる論理アドレス空間に所属する同一の「モジュール2」が同一の物理アドレスに割り付けられるように、論理アドレス空間ごとにマッピングが行われる。それにより、タスクの切り換えに応じてアドレス変換表切り換え手段107が「空間1」および「空間2」の切り換えを行っても「モジュール2」を共通に使用することができる。つまり、メモリ管理装置100では、タスク識別子241により示される「タスク1」およびタスク識別子242により示される「タスク2」のような互いに異なる2つのタスクが同一の「モジュール2」を共有することができる。
【0057】
なお、図2では、「モジュール1」〜「モジュール3」と「セクション1」〜「セクション3」とが一対一で対応する場合について説明したが、図4に示すようにセクション識別子224により示される1つの「セクション4」にモジュール識別子211,212により示される複数の「モジュール1」および「モジュール2」が対応し、セクション識別子225により示される1つの「セクション5」にモジュール識別子212,213により示される複数の「モジュール2」および「モジュール3」が対応し、セクション識別子226により示される「セクション6」にモジュール識別子214により示される「モジュール4」が対応するように構成することができる。
【0058】
例えば「セクション4」を特権モードで取り扱われるモジュールの集合と定義し、別の「セクション5」を非特権モードで取り扱われるモジュールの集合と定義することにより、「セクション4」および「セクション5」で「モジュール2」の取り扱い規定を別々に設けることができる。それにより、同じ機能を持ちながら異なる取り扱い規定としなければならないモジュールを、空間識別子233,234によりぞれぞれ示される「空間3」および「空間4」という論理アドレス空間において、タスク識別子243,244により示される「タスク3」および「タスク4」の間で共有することができる。
【0059】
本実施の形態では、アドレス変換表105およびアドレス変換表切り換え手段107は論理アドレス空間切り換え手段に相当し、セクション定義102および空間定義103が第1の定義に相当する。
【0060】
(実施の形態2)
図5は本発明の実施の形態2におけるメモリ管理装置の一構成例を示すブロック図である。
【0061】
図5に示すメモリ管理装置400は、複数のアドレス変換表405、配置手段404、マッピング手段406およびアドレス変換表切り換え手段407を備える。
【0062】
図5のメモリ管理装置400は、図1のメモリ管理装置100と同様に複数のモジュール情報101と複数のセクション定義102と複数の空間定義403とを保持している。
【0063】
図5に示すメモリ管理装置400は、図1に示すメモリ管理装置200と異なり、複数のタスク定義408をさらに保持している。メモリ管理装置400は、タスク定義408を保持しているので、アドレス変換表切り換え手段407の機能がメモリ管理装置100のアドレス変換表切り換え手段107と相違する。また、タスク定義408の有無に伴い空間定義403の内容が空間定義103の内容と相違する。それら空間定義103,403の内容の相違に伴い、メモリ管理装置100とメモリ管理装置400との間で、配置手段404およびマッピング手段406の機能ならびにアドレス変換表405の内容が配置手段104およびマッピング手段106の機能ならびにアドレス変換表105の内容と相違する。
【0064】
タスク定義408は、タスクごとに、タスクに所属する論理アドレス空間を識別するための空間識別子を定義する。そのため、空間定義403は、メモリ管理装置100の空間定義103とは異なり、空間識別子が示す論理アドレス空間が所属するタスクを識別するタスク識別子を定義せず、空間識別子とその空間識別子が示す論理アドレス空間に所属するセクションを識別するためのセクション識別子とを定義する。
【0065】
アドレス変換表405は、モジュール情報101、セクション定義102および空間定義403に基づき作成される。複数のアドレス変換表405は、それぞれ複数の論理アドレス空間の中の1つと一対一に対応しており、対応する論理アドレス空間における論理アドレスと物理アドレスとの対応関係を示している。
【0066】
配置手段404およびマッピング手段406はこのアドレス変換表405を作成する。その際、配置手段404は、モジュール情報101とセクション定義102と空間定義403とに基づき、複数の論理アドレス空間のそれぞれに所属するセクションを読み取り、複数の論理アドレス空間のそれぞれのセクションについてモジュールの配置を決定する。マッピング手段406は、アドレス変換表405を作成することによって、各論理アドレス空間における論理アドレスと物理アドレスとの対応関係を決定するためのマッピングを行う。
【0067】
アドレス変換表切り換え手段407は、タスクの切り換え指示に応じて、タスク定義408に基づき、アドレス変換表405を切り換える。
【0068】
図6は、メモリ管理装置400が保持しているモジュール情報101、セクション定義102、空間定義403およびタスク定義408の一例を示す概念図である。
【0069】
図6のモジュール情報101およびセクション定義102の構成は、それぞれ図2の同一符号のものと同様である。
【0070】
図6に示す空間定義403には、「空間1」および「空間2」という論理アドレス空間をそれぞれ示す空間識別子531,532と、各空間識別子531,532が示す論理アドレス空間に所属する「セクション1」、「セクション2」および「セクション3」というセクションをそれぞれ示すセクション識別子221〜223とが定義されている。
【0071】
タスク定義408には、3つの「タスク1」、「タスク2」および「タスク3」というタスクを識別するためのタスク識別子541〜543と、各タスク識別子541〜543がそれぞれ示すタスクに所属する「空間1」および「空間2」という論理アドレス空間を識別するための空間識別子531,532とが定義されている。
【0072】
メモリ管理装置400においては、図6に示すモジュール情報101、セクション定義102および空間定義403を用いて空間識別子531,532でそれぞれ示される「空間1」および「空間2」という論理アドレス空間について、実施の形態1のメモリ管理装置100と同様に、表1および表2に示すアドレス変換表を作成することによって、マッピングを行う。
【0073】
図3に示すマッピングを行うためにメモリ管理装置400はシステム初期化時に、マッピング手段406を起動する。起動されたマッピング手段406は、さらに配置手段404を起動する。
【0074】
配置手段404は、空間定義403を参照し、空間識別子531で示される「空間1」という論理アドレス空間にセクション識別子221で示される「セクション1」が所属することを読み取る。
【0075】
次に配置手段404は、セクション定義102を参照し、セクション識別子221で示される「セクション1」にモジュール識別子211で示される「モジュール1」が所属することを読み取る。さらに、配置手段404は、モジュール情報101を参照し、モジュール識別子221で示される「モジュール1」のコードアドレス、コードサイズ、データアドレスおよびデータサイズを読み取る。
【0076】
そして、配置手段404は、モジュール識別子221で示される「モジュール1」のコードアドレスとデータアドレスとを、空間識別子531で示される「空間1」という論理アドレス空間上に配置する。それにより、「空間1」に「モジュール1」が配置される。
【0077】
次に、配置手段404は、空間識別子531で示される「空間1」という論理アドレス空間にセクション識別子222で示される「セクション2」が所属することを読み取り、「セクション1」の場合と同様に、空間定義403とセクション定義102とモジュール情報101の定義と記述に基づき、モジュール識別子212で示される「モジュール2」のコードアドレスとデータアドレスとを空間識別子531で示される「空間1」という論理アドレス空間上に配置する。それにより、「空間1」に「モジュール2」が配置される。
【0078】
同様に、配置手段404は、空間定義403を参照し、空間識別子532で示される「空間2」という論理アドレス空間にセクション識別子222で示される「セクション2」が所属することを読み取り、空間定義403とセクション定義102とモジュール情報101とに基づき、モジュール識別子212で示される「モジュール2」のコードアドレスとデータアドレスとを空間識別子532で示される「空間2」という論理アドレス空間上に配置する。それにより、「空間2」に「モジュール2」が配置される。
【0079】
また、配置手段404は、空間定義403を参照し、空間識別子532で示される「空間2」という論理アドレス空間にセクション識別子223で示される「セクション3」が所属することを読み取り、空間定義403とセクション定義102とモジュール情報101に基づき、モジュール識別子213で示される「モジュール3」のコードアドレスとデータアドレスとを空間識別子532で示される「空間2」という論理アドレス空間上に配置する。それにより、「空間2」に「モジュール3」が配置される。
【0080】
マッピング手段406は、空間識別子531で示される「空間1」という論理アドレス空間において、配置手段404によってコードアドレスおよびデータアドレスが配置された論理アドレスに物理アドレスを対応させ、表1に示すアドレス変換表105を作成する。
【0081】
次に、マッピング手段406は、空間識別子532で示される「空間2」という論理アドレス空間において、配置手段404によってコードアドレスおよびデータアドレスが配置された論理アドレスに物理アドレスを対応させ、表2に示すアドレス変換表105を作成する。
【0082】
上記の場合、「空間1」および「空間2」の両方にモジュール識別子212で示される「モジュール2」が所属しているので、配置手段404は、論理アドレス空間LAの論理アドレス「0x11000000」および論理アドレス空間LBの論理アドレス「0x21000000」に「モジュール2」のコードおよびデータをそれぞれ配置する。それにより、マッピング手段406は、物理アドレス「0x80001000」を空間識別子531で示される「空間1」という論理アドレス空間の論理アドレス「0x11000000」および空間識別子532で示される「空間2」という論理アドレス空間の論理アドレス「0x11000000」へマッピングする。
【0083】
同様に、マッピング手段406は、物理アドレス「0x900001000」を「空間1」という論理アドレス空間の論理アドレス「0x210000000」および「空間2」という論理アドレス空間の論理アドレス「0x21000000」へマッピングする。
【0084】
このように、図3の論理アドレス空間LA,LBと物理アドレス空間PSとの対応関係と同じように、空間識別子532で示される「空間2」という論理アドレス空間LA,LBと物理アドレス空間PSとの対応関係が決定される。
【0085】
システム初期化終了後、アドレス変換表切り換え手段407は、タスクの切り換え指示に応じて表1および表2に示したようなアドレス変換表405の切り換えを行う。その際、アドレス変換表405がタスクと論理アドレス空間との関係を規定していないので、アドレス変換表切り換え手段407は、タスク定義408を参照する。
【0086】
例えばタスク識別子541で示される「タスク1」を実行した後に、タスク識別子543で示される「タスク3」を実行する場合、タスク定義408によって「タスク1」が空間識別子531で示される「空間1」という論理アドレス空間に関連づけられているとともに「タスク3」が空間識別子543で示される「空間2」という論理アドレス空間に関連づけられているので、アドレス変換表切り換え手段407は、空間識別子531で示される「空間1」に対応した表1から空間識別子532で示される「空間2」に対応した表2へと切り換える。
【0087】
一方、タスク識別子541で示される「タスク1」を実行した後にタスク識別子542で示される「タスク2」を実行する場合、タスク定義408によって「タスク1」が「空間1」に関連づけられているとともに「タスク2」が「空間1」に関連づけられているので、タスク識別子541,542でそれぞれ示される「タスク1」および「タスク2」が空間識別子531で示される「空間1」という同じ論理アドレス空間を用いるため、アドレス変換表切り換え手段407はアドレス変換表405の切り換えを行わない。
【0088】
本実施の形態のメモリ管理装置400は、以上のように構成されており、実施の形態1のメモリ管理装置100と同様の効果を奏する。
【0089】
さらに、本実施の形態のメモリ管理装置400によれば、タスク識別子541〜543でそれぞれ示される「タスク1」〜「タスク3」と空間識別子531,532でそれぞれ示される論理アドレス空間の関連のみを示しかつ論理アドレス空間とモジュール識別子211〜213で示される「モジュール1」〜「モジュール3」との対応関係を定義しないタスク定義408に基づき、アドレス変換表切り換え手段407がタスクの切り換え指示に応じた論理アドレス空間の切り換えを行う。
【0090】
それにより、タスクの切り換え前後で論理アドレス空間が同じ場合には、アドレス変換表405の切り換えを行わないことによって、論理アドレス空間の切り換えを行わないようにすることができる。つまり、メモリ管理装置400は、異なるタスク識別子541,542で示される「タスク1」および「タスク2」の間で空間識別子531で示される「空間1」という論理アドレス空間531の全体を共有することができる。
【0091】
本実施の形態では、配置手段404およびマッピング手段406が配置・マッピング手段に相当し、アドレス変換表405およびアドレス変換表切り換え手段407が論理アドレス空間切り換え手段に相当し、タスク定義408が第2の定義に相当する。
【0092】
(実施の形態3)
図7は本発明の実施の形態3におけるメモリ管理装置の一構成例を示すブロック図である。
【0093】
図7に示すメモリ管理装置600が図5に示すメモリ管理装置400と異なるのは、要求受付手段609とメモリアクセス手段610とをさらに備えている点である。図7において図5と同一または相当する部分に同一符号を付している。
【0094】
メモリ管理装置600の要求受付手段609は、デバッガからの要求を受け付ける。メモリアクセス手段610は、要求受付手段609がメモリアクセス要求を受け付けたときに、アドレス変換動作の状態に応じてメモリアクセスを実行する。
【0095】
図7のメモリ管理装置600におけるアドレス変換表405の作成とアドレス変換表405の切り換えは、図5のメモリ管理装置400と同様に実行される。
【0096】
メモリ管理装置600の要求受付手段609は、デバッグ時に、例えばブレークポイント設定等のメモリリード/ライト処理をデバッガが行う場合に、デバッガからのアクセス要求を受け付ける。メモリアクセス要求を受け付けた要求受付手段609はメモリアクセス手段610を起動する。メモリアクセス手段610は、アドレス変換表405を用いたアドレス変換が可能なときには、アドレス変換表405を用いて論理アドレスを物理アドレスに変換してメモリアクセスを行う。
【0097】
一方、メモリアクセス手段610は、例えばシステム初期化が終了していない等の理由によりアドレス変換表405を用いたアドレス変換が不可能な状態のときにはアドレス変換表405を用いずに、直接に物理アドレスに基づくメモリアクセスを行う。
【0098】
本実施の形態のメモリ管理装置600によれば、アドレス変換表405の状態によらずメモリアクセスを行うことができ、例えばシステム初期化が終了していないためにアドレス変換表405を用いて動作することができなくてもデバッガからのメモリアクセス要求に対し矛盾なく対応することができる。
【0099】
本実施の形態では、アドレス変換表405がアドレス変換手段に相当する。
なお、実施の形態3の説明においては、要求受付手段609がデバッガからの要求を受け付ける場合について説明したが、要求受付手段609が受け付けるメモリアクセス要求はデバッガからの要求に限られるものではなく、メモリ管理装置600の周辺装置からのメモリアクセス要求であればよい。
【0100】
また、実施の形態3のメモリ管理装置600は実施の形態2のメモリ管理装置400に要求受付手段609とメモリアクセス手段610とをさらに備えて構成したが、図8に示すメモリ管理装置700のように、実施の形態1のメモリ管理装置100に要求受付手段609とメモリアクセス手段610とをさらに備えて構成することもできる。なお、図8において図1と同一または相当する部分に同一符号を付している。
【0101】
なお、実施の形態1〜3のメモリ管理装置100,400,600,700においては、配置手段104,404によって、共有するモジュールを異なる論理アドレス空間における同一論理アドレスに配置して同一のモジュールの論理アドレスを同一の物理アドレスに割り付けているが、共有するモジュールを異なる論理アドレス空間における異なる論理アドレスに配置して同一のモジュールの論理アドレスを同一の物理アドレスに割り付けるようにしてもよい。
【0102】
また、実施の形態1〜3においては、モジュール情報101にプログラムのコードおよびデータのみに関する情報が記述されている場合について示したがスタックや初期値を有するデータ等の情報が記述されていてもよく、これらの情報をマッピングすることができる。
【0103】
【発明の効果】
本発明に係るメモリ管理装置によれば、必要なモジュール以外は異なるタスク間でメモリに直接アクセスすることを禁止し、必要なモジュールのみ異なるタスク間で共有させることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態1によるメモリ管理装置の一構成例を示すブロック図
【図2】図1のメモリ管理装置が保持するモジュール情報とセクション定義と空間定義の一例を示す概念図
【図3】図1のメモリ管理装置が行うマッピングの一例を示す概念図
【図4】図1のメモリ管理装置が保持するモジュール情報とセクション定義と空間定義の他の例を示す概念図
【図5】本発明の実施の形態2によるメモリ管理装置の一構成例を示すブロック図
【図6】図5のメモリ管理装置が保持するモジュール情報とセクション定義と空間定義とタスク定義の一例を示す概念図
【図7】本発明の実施の形態3によるメモリ管理装置の一構成例を示すブロック図
【図8】本発明の実施の形態3によるメモリ管理装置の他の構成例を示すブロック図
【図9】従来のメモリ管理装置の一構成例を示すブロック図
【符号の説明】
100,400,600,700 メモリ管理装置
101,101a モジュール情報
102,102a セクション定義
103,103a,403,403a 空間定義
104,404 配置手段
105,405 アドレス変換表
106,406 マッピング手段
107,407 アドレス変換表切り換え手段
408 タスク定義
609 要求受付手段
610 メモリアクセス手段
Claims (4)
- メモリの物理アドレスを複数の論理アドレスへ対応付けるメモリ管理装置であって、
複数の論理アドレス空間と複数のモジュールとの対応関係を示す第1の定義に基づいて、複数の論理アドレス空間のそれぞれにモジュールを配置する配置手段と、
複数のモジュールの物理アドレスを示すモジュール情報に基づいて、前記配置手段によりモジュールが配置された論理アドレス空間の論理アドレスへ物理アドレスを対応付けるマッピング手段と、
タスクの切り換え指示に応答して、前記マッピング手段により対応付けられた前記複数の論理アドレス空間の切り換えを行う論理アドレス空間切り換え手段とを備えたことを特徴とするメモリ管理装置。 - 前記第1の定義は、前記複数の論理アドレス空間にそれぞれ所属するセクションを定義する空間定義と、各セクションに所属する一または複数のモジュールを定義するセクション定義とを含むことを特徴とする請求項1記載のメモリ管理装置。
- 前記論理アドレス空間切り換え手段は、前記複数の論理アドレス空間のそれぞれに複数のタスクのいずれかを対応付ける第2の定義に基づいて、前記複数の論理アドレス空間の切り換えを行うことを特徴とする請求項1または2記載のメモリ管理装置。
- 前記マッピング手段の対応付けに応じて論理アドレスと物理アドレスとの間のアドレス変換を行うアドレス変換手段と、
周辺装置からのメモリアクセス要求を受け付ける要求受付手段と、
前記要求受付手段がメモリアクセス要求を受け付けた場合、前記アドレス変換手段によって物理アドレスと論理アドレスとの間のアドレス変換が可能な状態のときには、前記アドレス変換手段を用いて論理アドレスに基づくメモリアクセスを行い、前記アドレス変換手段によるアドレス変換が不可能な状態のときには、物理アドレスに基づくメモリアクセスを行うメモリアクセス手段とをさらに備えたことを特徴とする請求項1〜3のいずれかに記載のメモリ管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16170399A JP4331325B2 (ja) | 1999-06-08 | 1999-06-08 | メモリ管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16170399A JP4331325B2 (ja) | 1999-06-08 | 1999-06-08 | メモリ管理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000347940A JP2000347940A (ja) | 2000-12-15 |
JP4331325B2 true JP4331325B2 (ja) | 2009-09-16 |
Family
ID=15740279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16170399A Expired - Fee Related JP4331325B2 (ja) | 1999-06-08 | 1999-06-08 | メモリ管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4331325B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725822B2 (en) | 2018-07-31 | 2020-07-28 | Advanced Micro Devices, Inc. | VMID as a GPU task container for virtualization |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS601657B2 (ja) * | 1978-06-12 | 1985-01-16 | 株式会社日立製作所 | アドレス変換方法 |
JPH02114343A (ja) * | 1988-10-25 | 1990-04-26 | Matsushita Electric Ind Co Ltd | 共用メモリ管理方式 |
JPH02116940A (ja) * | 1988-10-27 | 1990-05-01 | Fujitsu Ltd | 間接ポインタを用いたページ共有方式 |
JPH03154945A (ja) * | 1989-11-13 | 1991-07-02 | Hitachi Ltd | 共有メモリ管理方式 |
JP3453761B2 (ja) * | 1991-07-04 | 2003-10-06 | 日本電気株式会社 | アドレス変換方式 |
JP3644078B2 (ja) * | 1995-07-20 | 2005-04-27 | 富士通株式会社 | プログラムの共用装置と方法 |
-
1999
- 1999-06-08 JP JP16170399A patent/JP4331325B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000347940A (ja) | 2000-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5561788A (en) | Method and system for executing programs using memory wrap in a multi-mode microprocessor | |
US4779187A (en) | Method and operating system for executing programs in a multi-mode microprocessor | |
EP1586040B1 (en) | Microprocessor systems | |
EP0729609A1 (en) | A microcontroller system for performing operations of multiple microcontrollers | |
EP0099125B1 (en) | Multicomputer system having dual common memories | |
US20020152428A1 (en) | Digital processing system including a DMA controller operating in the virtual address domain and a method for operating the same | |
US20100082929A1 (en) | Memory protection method, information processing apparatus, and computer-readable storage medium that stores memory protection program | |
KR20050027082A (ko) | 메모리 관리 시스템 및 선형 어드레스 기반 메모리 엑세스보안 제공 방법 | |
JPS6248258B2 (ja) | ||
US5146605A (en) | Direct control facility for multiprocessor network | |
CN113486410B (zh) | 一种保护数据安全的方法、cpu核、cpu芯片和电子设备 | |
US6775734B2 (en) | Memory access using system management interrupt and associated computer system | |
US5437016A (en) | Apparatus and method for translating logical addresses for virtual machines | |
JP5491102B2 (ja) | データプロセッサ | |
JP3773470B2 (ja) | データ処理装置内でのコプロセッサ命令の取り扱い | |
JP2005512228A (ja) | 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法 | |
US5842012A (en) | Efficient soft reset in a personal computer | |
US20050022192A1 (en) | Apparatus and method for simultaneous multi-thread processing | |
JP4331325B2 (ja) | メモリ管理装置 | |
JP6495290B2 (ja) | Ic無線装置 | |
JP2001142737A (ja) | メモリ管理装置 | |
US6263412B1 (en) | Method and apparatus for RAM emulation using a processor register set | |
EP1901171A1 (en) | Apparatus and method for handling interrupt disabled section and page pinning apparatus and method | |
US6539436B2 (en) | Management of interruptions in a computer platform | |
JPH1153249A (ja) | メモリ管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060602 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090519 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090526 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090618 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120626 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |