[go: up one dir, main page]

JP4233492B2 - アドレス変換装置 - Google Patents

アドレス変換装置 Download PDF

Info

Publication number
JP4233492B2
JP4233492B2 JP2004164586A JP2004164586A JP4233492B2 JP 4233492 B2 JP4233492 B2 JP 4233492B2 JP 2004164586 A JP2004164586 A JP 2004164586A JP 2004164586 A JP2004164586 A JP 2004164586A JP 4233492 B2 JP4233492 B2 JP 4233492B2
Authority
JP
Japan
Prior art keywords
address
address translation
real
virtual
buffer
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 - Lifetime
Application number
JP2004164586A
Other languages
English (en)
Other versions
JP2005346358A (ja
Inventor
清剛 ▲高▼橋
敦 池
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2004164586A priority Critical patent/JP4233492B2/ja
Priority to US10/972,429 priority patent/US7761686B2/en
Priority to CN2007100792782A priority patent/CN101004715B/zh
Priority to CN2004100910944A priority patent/CN1704912B/zh
Publication of JP2005346358A publication Critical patent/JP2005346358A/ja
Application granted granted Critical
Publication of JP4233492B2 publication Critical patent/JP4233492B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明はアドレス変換装置に関し、特に仮想アドレスを実アドレスに変換するアドレス変換装置に関する。
近年、リソースの増大により、様々なシステムにて大規模な実アドレス空間を利用する要求が増しており、より柔軟で安価なアドレス変換機構が求められている。アドレス変換機構には、プログラムが指定する仮想アドレスから、実際のメモリ上の実アドレスに変換する仮想記憶方式があり、メモリ空間の制約を著しく緩和している。
従来、仮想記憶方式を採用するアドレス変換装置に、スーパバイザモードとユーザモードとに対応したアドレス変換バッファを設け、各モードに応じてアドレス変換バッファを切替えるアドレス変換装置があった。このアドレス変換装置では、スーパバイザ用のアドレス変換バッファにおいて、プロセス番号を保持しなくてもよいので、メモリ資源を節約することができる(例えば、特許文献1参照)。
ところで、現在、リアルタイム性を要求するシステムにおいて、複数のOS(Operating System)をハイブリットで使用するケースが増えつつある。
特開平6−52058号公報(段落番号〔0016〕〜〔0018〕、図1)
しかし、複数のOSをハイブリッドで使用するシステムでは、各OSでアドレスマップが重ならないよう、例えば、アドレスバッファの内容の入れ替えを行ったりする必要があり、アルゴリズムや制御回路のシステム負担が大きいという問題点があった。
また、システム負担が大きいため、OSの切替え時間のオーバヘッドが大きいという問題点があった。
本発明はこのような点に鑑みてなされたものであり、システム負担を低減し、OSの切替え時間のオーバヘッドを低減するアドレス変換装置を提供することを目的とする。
本発明では上記問題を解決するために、図1に示すような仮想アドレスを実アドレスに変換するアドレス変換装置において、仮想アドレスと実アドレスとを、プロセッサが実行する複数のオペレーティングシステムOS1,OS2に基づいて区別して保持するアドレス変換バッファ1a,1bと、アドレス変換バッファ1a,1bを参照し、実行されているオペレーティングシステムOS1,OS2に応じた仮想アドレスの実アドレスへの変換を行うアドレス変換制御部2と、を有することを特徴とするアドレス変換装置が提供される。
このようなアドレス変換装置によれば、アドレス変換バッファ1a,1bは、仮想アドレスと実アドレスを、オペレーティングシステムOS1,OS2に基づいて区別して保持する。アドレス変換制御部2は、プロセッサが実行しているオペレーティングシステムOS1,OS2に応じた仮想アドレスの実アドレスへの変換を行う。これによって、オペレーティングシステムOS1,OS2の切替えによって、アドレス変換バッファ1a,1bの内容を入れ替えることが不要となる。
本発明のアドレス変換装置では、仮想アドレスと実アドレスとを、オペレーティングシステムに基づいて区別してアドレス変換バッファに保持し、オペレーティングシステムに応じた仮想アドレスの実アドレスへの変換を行うようにした。これによって、オペレーティングシステムの切替えによって、アドレス変換バッファの内容を入れ替えることが不要となり、システム負担を低減することができる。また、オペレーティングシステムの切替えによるオーバヘッドを低減することができる。
以下、本発明の原理を図面を参照して詳細に説明する。
図1は、本発明のアドレス変換装置の原理図である。
図に示すようにアドレス変換装置は、アドレス変換バッファ1a,1bおよびアドレス変換制御部2を有している。
アドレス変換バッファ1a,1bは、仮想アドレスと実アドレスとを、プロセッサが実行する複数のオペレーティングシステムに基づいて区別して保持する。例えば、アドレス変換バッファ1aは、オペレーティングシステムOS1に対する仮想アドレスと実アドレスとを保持する。アドレス変換バッファ1bは、オペレーティングシステムOS2に対する仮想アドレスと実アドレスとを保持する。
アドレス変換制御部2は、アドレス変換バッファ1a,1bを参照し、実行されているオペレーティングシステムOS1,OS2に応じた仮想アドレスの実アドレスへの変換を行う。例えば、プロセッサがオペレーティングシステムOS1を実行している場合、アドレス変換制御部2は、アドレス変換バッファ1aを参照し、アドレス変換を行う。
これによって、オペレーティングシステムの切替えにより、アドレス変換バッファ1a,1bの内容を入れ替えることが不要となり、システム負担を低減することができる。また、オペレーティングシステムの切替えによるオーバヘッドを低減することができる。
次に、第1の実施の形態を図面を参照して詳細に説明する。
図2は、第1の実施の形態に係るマイクロプロセッサのハードウェア構成例を示す図である。
図にはマイクロプロセッサの一例が示してある。マイクロプロセッサ(Micro Processor)11は、1チップの半導体装置であり、コア(Core)12、SDRAMコントローラ(SDRAM(Synchronous DRAM) Controller)13、ローカルバスインターフェース(Local Bus Interface)14、DMAC(Direct Memory Access Controller)15、バスブリッジ(Bus Bridge)16、DSU(Digital Service Unit)17、CRPC(Clock Reset Power Control)18、タイマ(Timer)19、UART(Universal Asynchronous Receiver/Transmitter)20、IRC(Internet Relay Chat)21、およびGPIO(General Purpose Input/Output)22を有している。コア12は、ALU(Arithmetic Logical Unit)であってもよい。マイクロプロセッサ11には、SDRAM23、エイシックエンジン(ASIC Engine)24、ページフラッシュ(Page Flash)25が接続されている。
コア12は、CPU(Central Processing Unit)およびキャッシュユニット(Cache-unit)を有している。コア12のCPUは、例えば、SDRAM23に格納されているデータ(プログラムを含む)に従って、各部の制御をする。このとき、CPUは、キャッシュユニットを利用してデータをロードおよびストアする。
コア12について詳細に説明する。
図3は、コアのハードウェア構成例を示す図である。
図に示すようにコア12は、キャッシュユニット31、整数ユニット(Integer-unit)32、および浮動小数点ユニット(Floating-unit)33を有している。整数ユニット32および浮動小数点ユニット33は、CPUの一部であり、整数演算および浮動小数点演算を行う。整数ユニット32および浮動小数点ユニット33は、キャッシュユニット31との間で、データをやり取りし、整数演算および浮動小数点演算を行う。
キャッシュユニット31は、図示するように命令キャッシュ(Instruction Cache)、アドレス変換ユニット(Memory Management Unit)、およびデータキャッシュ(Data Cache)を有している。アドレス変換ユニットは、命令キャッシュおよびデータキャッシュと、整数ユニット32および浮動小数点ユニット33との間でやり取りされるデータのアドレス変換を、仮想アドレス方式に従って制御している。なお、命令キャッシュは、命令コードが格納されるキャッシュである。データキャッシュは、データが格納されるキャッシュである。
キャッシュユニット31について詳細に説明する。
図4は、キャッシュユニットのハードウェア構成例を示す図である。
図に示すようにキャッシュユニット31は、MMU(Memory Management Unit)41、命令キャッシュ46、およびデータキャッシュ47を有している。MMU41には、SR(Special-purpose Register)48が接続されている。SR48は、キャッシュユニット31内に実装してもよいし、キャッシュユニット31の外に独立して実装してもよい。
MMU41は、MMUコントローラ(MMU Controller)42、IAMR(Instruction Address Map Register)43、DAMR(Data Address Map Register)44、およびTLB(Translation Look-aside Buffer)45を有している。
SR48は、HSR(Hardware Status Register)48a、IAMVR(Instruction Address Map Valid Register)48b、およびDAMVR(Data Address Map Valid Register)48cを有している。
IAMR43、DAMR44、およびTLB45には、プログラムが指定する仮想アドレスと、実際のメモリ上の実アドレスとが対応付けられて格納される。
IAMR43とDAMR44には、仮想アドレスと実アドレスとが静的に格納される。すなわち、仮想アドレスと実アドレスとが、プログラムによって1度IAMR43、DAMR44に格納されるとその対応関係が固定される。
TLB45には、仮想アドレスと実アドレスとが動的に格納される。すなわち、新たなデータが命令キャッシュ46、データキャッシュ47に追加登録される場合、使用頻度の少ないデータの仮想アドレスと実アドレスとがTLB45から追い出される。そして、新たなデータの仮想アドレスと実アドレスとがTLB45に格納される。
MMUコントローラ42は、SR48を参照して、上記の制御を行う。
なお、IAMR43には、命令コードに対する仮想アドレスと実アドレスが格納され、DAMR44には、データに対する仮想アドレスと実アドレスが格納される。また、TLB45は、動的に動作するので、大きな容量のデータに対応することができる。
マイクロプロセッサ11は、複数のOSをハイブリットにて実行でき、リアルタイム処理を行えるようになっている。例えば、通常時は、リアルタイム性を要求されない、例えば、Linuxを実行する。割り込み時は、リアルタイム性を要求される、例えば、ITRONを実行する。以下では、マイクロプロセッサ11は、LinuxとITRONのOSを実行するものとして説明する。
ITRONが使用するメモリ領域は、Linuxに比べ非常に小さい。Linuxが使用するメモリ領域は、カーネル部分は小さく、ユーザアプリケーションの部分が大きい。そこで、MMU41は、ITRONと、Linuxのカーネル部分とを静的なIAMR43、DAMR44に割り当てる。Linuxのユーザアプリケーションを動的なTLB45に割り当てる。
図5は、ITRONとLinuxのメモリマップを示した図である。
図にはLinuxとITRONの仮想空間が示してある。Linuxの仮想空間は、カーネル(Kernel)51と、ユーザアプリケーション(User application)52の領域に分けられる。カーネル51は、Kマップ(Kmap)、ドライバ(Drivers)の領域を有している。ITRONのメモリ空間は、Linuxに比べ非常に小さい。
図6は、OSのAMRおよびTLBへの割り当てを示した図である。
図に示すように、Linuxのユーザアプリケーションは、TLB(Translation Look-aside Buffer)に割り当てられ、カーネルはAMR(Address Map Register)に割り当てられる。ITRONは、AMRのみに割り当てられる。
図のTLBは、図4のTLB45に対応し、AMRは、IAMR43、DAMR44に対応する。説明を簡単にするためにAMRを命令用のAMR(IAMR43)と、データ用のAMR(DAMR44)とに区別せずに示している。
次に、MMU41の機能について説明する。
図7は、第1の実施の形態に係るMMUの機能ブロック図である。
図に示すようにMMU41は、AMR61,62、TLB63、およびセレクタ64を有している。TLB63は、図4のTLB45に対応する。AMR61,62は、図4のIAMR43、DAMR44に対応するが、命令用とデータ用とに区別して示していない。
AMR61は、ITRONが使用する仮想アドレスと実アドレスを保持している。
AMR62は、Linuxのカーネルが使用する仮想アドレスと実アドレスを保持している。
TLB63は、Linuxのユーザアプリケーションが使用する仮想アドレスと実アドレスを保持している。
セレクタ64は、CPUからOSに応じた制御信号が入力される。セレクタ64は、AMR61,62、TLB63を参照して変換された仮想アドレスの実アドレスを、制御信号に応じて選択出力する。
例えば、セレクタ64は、CPUからITRONの実行に応じた制御信号が入力されている場合、AMR61を参照して変換された仮想アドレスの実アドレスを選択出力する。また、セレクタ64は、CPUからLinuxの実行に応じた制御信号が入力されている場合、AMR62、TLB63を参照して変換された仮想アドレスの実アドレスを選択出力する。すなわち、セレクタ64は、仮想アドレスを実アドレスに変換するAMR61,62、TLB63を、CPUが実行しているOSに応じて選択している。なお、制御信号は、CPU以外の制御装置から出力するようにしてもよい。
LinuxとITRONは、図6に示したようにAMRを共有するので、1つである場合は、切替え時に互いに干渉し合う恐れがある。そのため、AMRが1つである場合には、AMRの内容をLinuxとITRONの実行に応じて入れ替えをする必要があった。
そこで、本発明では、ITRON用のAMR61と、Linux用のAMR62とTLB63とを設け、OSに基づいた制御信号に応じて、AMR61,62、TLB63より変換される実アドレスを出力するようにした。これによって、AMRの内容を入れ替える必要がなく、そのためのアルゴリズムや制御回路によるシステム負担を低減することができる。また、AMRの入れ替えがないので、処理のオーバヘッドを低減することができる。
次に、第2の実施の形態を図面を参照して詳細に説明する。
第1の実施の形態では、AMRをLinuxのカーネル用と、ITRON用とに分けていたが、第2の実施の形態では、1つのAMRでも第1の実施の形態と同様の効果が得られるようにした。
図8は、第2の実施の形態に係るMMUの機能ブロック図である。
図に示すようにMMUは、AMR71、TLB72、およびセレクタ73を有している。TLB72は、図4のTLB45に対応する。AMR71は、図4のIAMR43、DAMR44に対応するが、命令用とデータ用とに区別して示していない。
AMR71は、ITRONが使用する仮想アドレスと実アドレスおよびLinuxのカーネルが使用する仮想アドレスと実アドレスを保持している。なお、対になっている仮想アドレスと実アドレスには、図に示すようにバリッドビット71aが付与されている。バリッドビットは、仮想アドレスと実アドレスがITRONとLinuxのどちらのOSに対応したアドレスであるかを示す情報である。例えば、0でLinuxのカーネルが使用する仮想アドレスと実アドレス、1でITRONが使用する仮想アドレスと実アドレスであることを示す。
TLB72は、Linuxのユーザアプリケーションが使用する仮想アドレスと実アドレスを保持している。
セレクタ73は、バリッドビット71aと、HSRの状態に応じて、AMR71、TLB72を参照して変換された仮想アドレスの実アドレスを選択出力する。HSRは、例えば、図4のHSR48aである。HSRには、現在CPUが実行しているOSの情報が格納される。
セレクタ73は、バリッドビット71aを参照して、AMR71によって変換された実アドレスの出力を制御する。例えば、Linuxが実行されている場合、バリッドビットが0の変換された実アドレスを出力する。ITRONが実行されている場合、バリッドビットが1の変換された実アドレスを出力する。
なお、バリッドビット71aは、対になっている仮想アドレスと実アドレスに付して、AMR71に格納するようにしたが、バリッドビットを保持する別のレジスタ(AMVR:Address Map Valid Register)を設けるようにしてもよい。この場合、セレクタ73は、AMVRを参照して、実アドレスの出力を制御する。なお、図4のIAMVR48b、およびDAMVR48cが前述のAMVRに対応している。AMVRがOSごとに設けられていない場合、AMVRの内容は、OSが切り替わる際に、退避して復元することが必要である。AMVRの内容は、例えば、RAMなどの記憶装置に退避される。
また、セレクタ73は、HSRの状態に応じて、TLB72によって変換された実アドレスの出力を制御する。例えば、ITRONが実行されている場合、セレクタ73は、TLB72からの実行アドレスを出力しない。Linuxが実行されている場合、セレクタ73は、TLB72からの実行アドレスを出力する。すなわち、セレクタ73は、HRSの状態に応じて、TLB72によるアドレスの変換結果を有効化および無効化する。
図9は、実アドレスの出力動作を説明する図である。
図9では、AMVRを使用した場合の動作を説明している。図に示すHSRのEDATは、TLB72の実アドレスを有効化、無効化するための情報である。EDAT=ONのとき、現在実行されているOSはLinuxであることを示し、セレクタ73は、TLB72の実アドレスを有効化(ON)する。EDAT=OFFのとき、現在実行されているOSはITRONであることを示し、セレクタ73は、TLB72の実アドレスを無効化(OFF)する。
セレクタ73は、AMVRに格納されている0のビットに対応するAMR71の実アドレスを出力する。例えば、図9に示すAMVRの左側のビットが、図8のAMR71の最上欄に対応し、AMVRの右側のビットが、AMR71の最下欄に対応しているとする。AMVRが011011011の場合、図8のAMR71の上から1,4,7番目の変換された実アドレスを出力する。AMVRが100100100の場合、図8のAMR71の上から2,3,5,6,8,9番目の変換された実アドレスを出力する。
すなわち、セレクタ73は、AMVRにセットされるビットによって、Linuxのカーネルに対応した実アドレスおよびITRONに対応した実アドレスを出力する。
このように、対になっている仮想アドレスと実アドレスとにバリッドビットを付与し、かつTLBの実アドレスを有効化、無効化するようにした。これによっても、AMRの内容を入れ替える必要がなく、そのためのアルゴリズムや制御回路によるシステム負担が軽くなる。また、AMRの入れ替えがないので、処理のオーバヘッドを低減することができる。また、TLBの実アドレスを有効化、無効化するので、ITRONとLinuxのユーザアプリケーションとが干渉し合うことを防止することができる。
ところで、TLBは、通常、セットアソシアティブかフルアソシアティブで構成されるRAMである。セットアソシアティブは、実装が容易であるというメリットと、ページサイズが固定されるというデメリットを有する。一方、フルアソシアティブは、ページサイズが可変にできるというメリットと、実装が著しく困難であり、回路規模が大きくなるというデメリットをもつ。
そこで、TLBをセットアソシアティブで使用し、AMRをフルアソシアティブで使用するようにする。例えば、図7に示したMMUでは、AMR61,62をフルアソシアティブで使用する。TLB63をセットアソシアティブで使用する。図8に示したMMUでは、AMR71をフルアソシアティブで使用する。TLB72をセットアソシアティブで使用する。
1つのOSのみを実行する従来のマイクロプロセッサでは、AMRとTLBのように2つのアドレス変換バッファの使用が可能な場合、セットアソシアティブとフルアソシアティブの使用形態は、実行するOSに応じて固定されていた。そのため、使用形態をマイクロプロセッサの動作中に変更することは行われていなかった。
本発明では、マイクロプロセッサは、2つのOSを実行するために、仮想アドレスと実アドレスをTLB(セットアソシアティブ)とAMR(フルアソシアティブ)とで管理し、TLBとAMRの使用形態を、プロセッサの動作中に、実行するOSに応じてハードウェア的に適切な使用形態に切替えるようにした。そのため、OSの切替えによる処理のオーバーヘッドを低減することができるとともに、簡単かつ安価なMMUのハードウェア構成によって、セットアソシアティブとフルアソシアティブの両方の特徴を生かした最適な状態をOSに応じて設定することができる。
次に、第3の実施の形態を図面を参照して詳細に説明する。
TLBにセットアソシアティブを適用する場合、ウェイ数以上の実アドレスをTLBの同一ラインに登録しようとするとき、もっとも使用頻度の少ないアドレスに新しい実アドレスが登録されることとなる。この状態が頻発すると著しく性能低下が生じることとなる。性能低下を防止するには、TLBのウェイ数を増加させることが効果的であるが、回路規模の増加につながり、コストアップの原因となる。
そこで、第3の実施の形態では、スラッシングは、連続して発生する傾向が強いことを利用して、フルアソシアティブのAMRの一部に、TLBから追い出される固定ページのエントリを格納する、もしくは、TLBに空きがない場合、AMRに登録することで、性能低下を防止するようにする。
図10は、第3の実施の形態に係るMMUの機能ブロック図である。
図に示すようにMMUは、TLB81、AMR82、およびセレクタ83を有している。
TLB81は、セットアソシアティブが適用されている。TLB81は、Nライン(N:整数)ごとに分割され、Nウェイとなっている。AMR82は、フルアソシアティブが適用されている。
セレクタ83は、Linuxによる新たな仮想アドレスの登録要求が発生した場合、TLB81の該当ラインに空きがあるか確認する。空きがない場合、最も使用頻度の低い実アドレスのデータを格納しているウェイのデータを、AMR82に移動する。そして、データが移動されたTLB81の部分に、新たな仮想アドレスを登録する。または、セレクタ83は、TLB81に空きがない場合、Linuxによる新たな仮想アドレスをAMR82に直接登録する。
ここで、AMRには、図6で説明したように、静的なITRONとLinuxのカーネルとが割り当てられる。そのため、静的なAMR82の領域には、移動される動的なLinuxのユーザアプリケーションのための領域を設ける必要がある。
図11は、AMRのメモリマップを示した図である。
図に示すメモリマップ84は、AMRのメモリマップを示す。メモリマップ84には、ITRON用の領域と、Linuxのカーネル用の領域と、Linuxのユーザアプリケーション用の領域が設けられている。これによって、TLBの示すユーザアプリケーションのデータを、AMRに移動することができる。
このように、AMRの一部にTLBから追い出された固定ページのエントリを格納する、または、TLBに空きがない場合、AMRに登録するようにした。これによって、TLBの追い出されるデータは、AMRに格納されることになり、スラッシングの発生を低減することができる。
また、TLBのウェイ数を増加することなく実現できるので、回路規模を抑制することができる。
なお、フルアソシアティブのバッファ(AMR)から使用頻度の少ないデータが追い出される場合、そのデータをセットアソシアティブのバッファ(TLB)に格納するようにしても、スラッシングの発生を低減することができる。
次に、第4の実施の形態を図面を参照して詳細に説明する。
図11に示したように、AMRに動的なLinuxのユーザアプリケーションを割り当てる場合、LinuxのカーネルおよびITRONと干渉し合わないようにする必要がある。そのため、ITRONを実行する場合、AMRの、Linuxのユーザアプリケーションの領域を、CPUから見えないようにする必要がある。また、Linuxを実行する場合、AMRのITRONの領域を、CPUから見えないようにする必要がある。
そこで、対になっている仮想アドレスと実アドレスに、その仮想アドレスと実アドレスが動的エントリ(Linuxのユーザアプリケーション)であるか静的エントリ(Linuxのカーネル、ITRON)であるかを示すエントリ情報を付与する。そして、仮想アドレスと実アドレスに付与されているエントリ情報を参照し、OSごとに応じたアドレス変換を行うようにする。
図12は、第4の実施の形態に係るMMUの機能ブロック図である。
図に示すように、MMUは、AMR91およびセレクタ92を有している。なお、TLBは、図示を省略してある。
AMR91は、ITRONが使用している仮想アドレスと実アドレス、Linuxのカーネルが使用している仮想アドレスと実アドレス、およびLinuxのユーザアプリケーションが使用している仮想アドレスと実アドレスを保持している。なお、対になっている仮想アドレスと実アドレスには、図に示すようにエントリ情報が付与されている。エントリ情報は、仮想アドレスと実アドレスが、動的エントリであるか、静的エントリであるかを示している。
例えば、ITRONおよびLinuxのカーネルが使用している仮想アドレスと実アドレスの対には、静的エントリであることを示すSのエントリ情報が付与されている。また、Linuxのユーザアプリケーションが使用している仮想アドレスと実アドレスの対には、動的エントリであることを示すDのエントリ情報が付与されている。なお、エントリ情報は、仮想アドレスと実アドレスをAMR91に登録する際に付与される。
セレクタ92は、エントリ情報を参照し、動作モード(ITRONの実行時を静的モード、Linuxの実行時を動的モードとする)に応じた実アドレスを出力する。例えば、セレクタ92は、静的モードのとき、Sのエントリ情報を参照して、変換された仮想アドレスの実アドレスを出力する。また、動的モードのとき、Dのエントリ情報を参照して、実アドレスを出力する。
また、セレクタ92は、動的モード時のアドレスの検索優先順を動的エントリから静的エントリとする。静的モード時のアドレスの検索優先順を静的エントリから動的エントリとする。これは、例えば、動的エントリと静的エントリの領域が重なり、2つの実アドレスが同じ仮想アドレスを有している場合、その仮想アドレスの実アドレスへの変換要求をすると、2つの実アドレスがヒットしてしまう。これを避けるために、例えば、動的モードであれば、動的エントリの仮想アドレスの実アドレス変換を行い、対応する実アドレスがなければ、静的エントリの仮想アドレスの実アドレス変換を行う。
このように、仮想アドレスと実アドレスに、動的エントリであるか静的エントリであるかのエントリ情報を付与して登録する。そして、エントリ情報を参照し、動作モードに応じた実アドレスを出力するようにした。これによって、動的エントリと静的エントリの干渉を防ぐことができる。
また、Linuxのカーネル領域の一部にユーザ領域(ユーザアプリケーションの領域)を確保し、ユーザ領域を動的に変化させたい場合、カーネル領域を静的エントリとして登録し、ユーザ領域をDATエントリとして登録するようにした。そして、Linux実行時の検索優先順を動的エントリから静的エントリとし、ユーザ領域からカーネル領域の順にヒットするようにした。また、ITRON実行時の検索優先順を静的エントリから動的エントリとし、カーネル領域からユーザ領域の順にヒットするようにした。これによって、柔軟なアドレス変換が容易に設定可能になる。
なお、セットアソシアティブにおける動的エントリは、ページサイズが固定であるという点で固定エントリ、フルアソシアティブにおける静的エントリは、ページサイズが可変であるという点で可変エントリとも呼ばれる。
次に、第5の実施の形態を図面を参照して詳細に説明する。
第4の実施の形態で説明したように、動的アドレス変換と静的アドレス変換を同時に使用可能とするアドレス変換機構は、柔軟性の面でも、コストの面でも非常に有効であるが、意図した動的エントリのデータおよび静的エントリのデータにアクセスしたい場合、動作モードの設定変更が必要となる。そこで、第5の実施の形態では、静的エントリと動的エントリへのアクセスを動作モードに関係なく、任意にすることができるLRA命令を設けた。また、アドレス変換が行われなかった場合などの例外報告を、仮想アドレス=実アドレスとなるビット(ページ内オフセット)を利用してCPUに通知するようにした。
図13は、第5の実施の形態に係るMMUに指示される命令を示した図である。
図に示すように命令は、3つのフィールド101,102,103に分けられる。フィールド101には、動作モードに関係なく、任意に動的エントリおよび静的エントリへアクセスをすることができるプログラムの命令コード(LRA)が示してある。フィールド102には、アドレス変換するアドレスが設定される。フィールド103には、動作モードを指定する情報が設定される。また、アドレス変換ができたか否かの例外を報告するか否かの指定をするための情報が設定される。なお、図に示すx,y,zには、0または1が格納される。
例えば、図12のMMUを例にすると、フィールド103において、S=0が設定された場合、AMR91の静的エントリをアドレス変換の検索対象としない。S=1が設定された場合、AMR91の静的エントリをアドレス変換の検索対象とする。D=0が設定された場合、AMR91とTLBの動的エントリをアドレス変換の検索対象としない。D=1が設定された場合、AMR91とTLBの動的エントリをアドレス変換の検索対象とする。
上記例より、S,D=1,0が設定された場合、静的モードと同様の動作を実現できる。S,D=0,1が設定された場合、動的モードと同様の動作を実現することができる。S,D=1,1が設定された場合、動作モードに関係なく両エントリをアドレス変換の検索対象とすることができる。
これによって、動作モードに関係なく、任意に動的エントリおよび静的エントリへアクセスすることができる。
フィールド103において、E=0が設定された場合、例外をCPUに報告しない。E=1が設定された場合、例外をCPUに報告する。例えば、変換要求された仮想アドレスに対応する実アドレスが存在しない場合、E=0の設定がされていた場合には、その旨をCPUに報告しない。E=1が設定されていた場合には、その旨をCPUに報告する。
従来、例外報告は、例えば、アドレス変換とは別に行っていた。そのため、例外報告とアドレス変換の結果を知るには、別々に操作を行う必要があり、取り扱いが困難であった。本発明では、仮想アドレス=実アドレスとなるビット、すなわち、ページ内オフセットを例外報告に利用することにより、取り扱いを容易にした。
例えば、仮想アドレスと実アドレスのアドレス幅が32ビットであるとする。仮想アドレスと実アドレスの下位16ビットが同じであるとすると、実アドレスは上位16ビットで指定することができる。この場合、実アドレスの下位16ビットは、アドレスとしての情報性を有さないので、この下位16ビットを例外報告の領域として使用する。このように、ページ内オフセットとなるビットを例外報告に利用することにより、例外報告が実アドレスに付加されるので取り扱いが容易となる。
なお、S,D=1,1が設定された場合において、動的エントリと静的エントリとが重なっている場合、動的エントリと静的エントリとに付与されている優先度に従って、アドレス変換の検索対象とするようにする。
本発明のアドレス変換装置の原理図である。 第1の実施の形態に係るマイクロプロセッサのハードウェア構成例を示す図である。 コアのハードウェア構成例を示す図である。 キャッシュユニットのハードウェア構成例を示す図である。 ITRONとLinuxのメモリマップを示した図である。 OSのAMRおよびTLBへの割り当てを示した図である。 第1の実施の形態に係るMMUの機能ブロック図である。 第2の実施の形態に係るMMUの機能ブロック図である。 実アドレスの出力動作を説明する図である。 第3の実施の形態に係るMMUの機能ブロック図である。 AMRのメモリマップを示した図である。 第4の実施の形態に係るMMUの機能ブロック図である。 第5の実施の形態に係るMMUに指示される命令を示した図である。
符号の説明
1a,1b アドレス変換バッファ
2 アドレス変換制御部
11 マイクロプロセッサ
12 コア
31 キャッシュユニット
41 MMU
42 MMUコントローラ
43 IAMR
44 DAMR
45 TLB
48 SR
48a HSR
48b IAMVR
48c DAMVR
61,62,71,82,91 AMR
63,72,81 TLB
64,73,83,92 セレクタ
OS1,OS2 オペレーティングシステム

Claims (13)

  1. 仮想アドレスを実アドレスに変換するアドレス変換装置において、
    前記仮想アドレスと前記実アドレスとを、プロセッサが実行する複数のオペレーティングシステムに基づいて区別して保持するアドレス変換バッファと、
    1つの前記オペレーティングシステムにおける前記仮想アドレスと前記実アドレスとを保持する個別アドレス変換バッファと、
    前記アドレス変換バッファおよび前記個別アドレス変換バッファを参照し、実行されている前記オペレーティングシステムに応じた前記仮想アドレスの前記実アドレスへの変換を行うアドレス変換制御部と、
    を有することを特徴とするアドレス変換装置。
  2. 前記アドレス変換バッファは、前記オペレーティングシステムに対応して設けられ、前記オペレーティングシステムごとの前記仮想アドレスと前記実アドレスとを保持することを特徴とする請求項1記載のアドレス変換装置。
  3. 前記アドレス変換バッファは、前記仮想アドレスと前記実アドレスとにどの前記オペレーティングシステムのものであるかを識別する識別子を付与して保持することを特徴とする請求項1記載のアドレス変換装置。
  4. 前記アドレス変換バッファおよび前記個別アドレス変換バッファには、一方にセットアソシアティブが適用され、他方にフルアソシアティブが適用されることを特徴とする請求項3記載のアドレス変換装置。
  5. 前記セットアソシアティブのバッファから使用頻度の少ないデータが追い出される場合、前記データを前記フルアソシアティブのバッファに格納することを特徴とする請求項4記載のアドレス変換装置。
  6. 前記アドレス変換バッファは、動的エントリと静的エントリとの領域を有することを特徴とする請求項3記載のアドレス変換装置。
  7. 仮想アドレスを実アドレスに変換するアドレス変換装置において、
    前記仮想アドレスと前記実アドレスとを、プロセッサが実行する複数のオペレーティングシステムに基づいて区別して保持するアドレス変換バッファと、
    前記アドレス変換バッファを参照し、実行されている前記オペレーティングシステムに応じた前記仮想アドレスの前記実アドレスへの変換を行うアドレス変換制御部と、を有し、
    前記アドレス変換制御部は、プログラム命令によって、前記仮想アドレスと前記実アドレスとのアドレス変換を、前記プロセッサが実行している前記オペレーティングシステムとは関係なくアドレス変換を行うことを特徴とするアドレス変換装置。
  8. 前記アドレス変換制御部は、前記命令によって、前記アドレス変換に関するステータス情報を、ページ内オフセットを利用して前記プロセッサに返すことを特徴とする請求項7記載のアドレス変換装置。
  9. 仮想アドレスを実アドレスに変換するアドレス変換装置において、
    前記仮想アドレスと前記実アドレスとを保持するアドレス変換バッファと、
    前記仮想アドレスと前記実アドレスとに、どのオペレーティングシステムのものであるかを識別する識別子を付与して保持する保持手段と、
    前記識別子を集合して保持する識別子保持手段と、を有し、
    前記オペレーティングシステムが切り替わる際、前記識別子をまとめて退避、復元することを特徴とするアドレス変換装置。
  10. 仮想アドレスを実アドレスに変換するアドレス変換装置において、
    セットアソシアティブの第1のアドレス変換バッファと、
    フルアソシアティブの第2のアドレス変換バッファと、を有し、
    前記第1のアドレス変換バッファには、動的エントリの前記仮想アドレスと前記実アドレスとが保持され、前記第2のアドレス変換バッファには、前記動的エントリと静的エントリの前記仮想アドレスと前記実アドレスとが保持され、
    前記第2のアドレス変換バッファから使用頻度の少ないデータが追い出される場合、前記データは、前記第1のアドレス変換バッファに再度追い出されるまで格納されることを特徴とするアドレス変換装置。
  11. 仮想アドレスを実アドレスに変換するアドレス変換装置において、
    動的エントリと静的エントリの前記仮想アドレスと前記実アドレスとを保持するアドレス変換バッファを有し、
    前記動的エントリと前記静的エントリとの領域が重なる場合、前記動的エントリと前記静的エントリはアドレス変換の優先度を持つことを特徴とするアドレス変換装置。
  12. 仮想アドレスを実アドレスに変換するアドレス変換装置において、
    プログラム命令によって、アドレス変換を動的エントリに対して行うか、静的エントリに対して行うか、および前記動的エントリと前記静的エントリとに付与されている優先度に従って行うか選択可能なことを特徴とするアドレス変換装置。
  13. 前記アドレス変換に関するステータス情報を、ページ内オフセットを利用して、前記命令を実行するプロセッサに返すことを特徴とする請求項12記載のアドレス変換装置。
JP2004164586A 2004-06-02 2004-06-02 アドレス変換装置 Expired - Lifetime JP4233492B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004164586A JP4233492B2 (ja) 2004-06-02 2004-06-02 アドレス変換装置
US10/972,429 US7761686B2 (en) 2004-06-02 2004-10-26 Address translator and address translation method
CN2007100792782A CN101004715B (zh) 2004-06-02 2004-11-16 地址转换器和地址转换方法
CN2004100910944A CN1704912B (zh) 2004-06-02 2004-11-16 地址转换器和地址转换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004164586A JP4233492B2 (ja) 2004-06-02 2004-06-02 アドレス変換装置

Publications (2)

Publication Number Publication Date
JP2005346358A JP2005346358A (ja) 2005-12-15
JP4233492B2 true JP4233492B2 (ja) 2009-03-04

Family

ID=35450291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004164586A Expired - Lifetime JP4233492B2 (ja) 2004-06-02 2004-06-02 アドレス変換装置

Country Status (3)

Country Link
US (1) US7761686B2 (ja)
JP (1) JP4233492B2 (ja)
CN (2) CN1704912B (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122305A (ja) * 2005-10-27 2007-05-17 Hitachi Ltd 仮想計算機システム
JP2007233615A (ja) 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US7426627B2 (en) * 2006-03-10 2008-09-16 Microsoft Corporation Selective address translation for a resource such as a hardware device
US7401201B2 (en) * 2006-04-28 2008-07-15 Freescale Semiconductor, Inc. Processor and method for altering address translation
US7587575B2 (en) * 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US7590817B2 (en) * 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
US8769168B2 (en) * 2006-10-17 2014-07-01 International Business Machines Corporation Method for communicating with a network adapter using a queue data structure and cached address translations
JP5131269B2 (ja) 2007-03-20 2013-01-30 富士通株式会社 マルチプロセッシングシステム
WO2008155851A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 演算処理装置、エントリ制御プログラムおよびエントリ制御方法
JP5466768B2 (ja) * 2010-11-02 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセスを制御する装置およびコンピュータ
US8615766B2 (en) * 2012-05-01 2013-12-24 Concurix Corporation Hybrid operating system
CN104731720B (zh) * 2014-12-30 2018-01-09 杭州中天微系统有限公司 组相连的二级内存管理装置
CN109168213A (zh) * 2018-08-16 2019-01-08 江门市蓬江区天利新科技有限公司 一种灯串地址转换器及转换方法
US11580031B2 (en) * 2019-07-31 2023-02-14 Intel Corporation Hardware for split data translation lookaside buffers

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811206A (en) * 1986-01-16 1989-03-07 Ibm Corporation Data processing system with overlapped address translation and address computation
JPS62206658A (ja) * 1986-03-07 1987-09-11 Hitachi Ltd 記憶管理装置
US5053951A (en) * 1986-12-23 1991-10-01 Bull Hn Information Systems Inc. Segment descriptor unit for performing static and dynamic address translation operations
JPH06100987B2 (ja) 1987-04-10 1994-12-12 日本電信電話株式会社 アドレス変換制御方法
JPH0293952A (ja) * 1988-09-30 1990-04-04 Hitachi Ltd 仮想計算機システム
CA2083634C (en) * 1991-12-30 1999-01-19 Hung Ping Wong Method and apparatus for mapping page table trees into virtual address space for address translation
JPH05324477A (ja) 1992-05-21 1993-12-07 Toshiba Corp アドレス変換バッファ機構
US5493660A (en) * 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
JPH06124237A (ja) 1992-10-13 1994-05-06 Fuji Xerox Co Ltd アドレス変換バッファ装置
US5903752A (en) * 1994-10-13 1999-05-11 Intel Corporation Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US5721922A (en) * 1994-10-13 1998-02-24 Intel Corporation Embedding a real-time multi-tasking kernel in a non-real-time operating system
US5870538A (en) * 1995-07-19 1999-02-09 Fujitsu Network Communications, Inc. Switch fabric controller comparator system and method
JPH0981459A (ja) * 1995-09-19 1997-03-28 Hitachi Ltd アドレス変換バッファ装置
US6073224A (en) * 1996-07-01 2000-06-06 Sun Microsystems, Inc. Network interface circuit with replacement circuitry and method for segregating memory in an address translation unit with locked and unlocked regions
US5918251A (en) * 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US6173417B1 (en) * 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
JP2000057054A (ja) * 1998-08-12 2000-02-25 Fujitsu Ltd 高速アドレス変換システム
US6742103B2 (en) * 2000-08-21 2004-05-25 Texas Instruments Incorporated Processing system with shared translation lookaside buffer
US6553477B1 (en) 2000-11-06 2003-04-22 Fujitsu Limited Microprocessor and address translation method for microprocessor
GB2373889A (en) * 2001-03-30 2002-10-02 Siroyan Ltd Address translation with partial physical addresses
US6832333B2 (en) * 2001-08-30 2004-12-14 International Business Machines Corporation Method for supporting user level online diagnostics on Linux
US20030177334A1 (en) * 2002-03-14 2003-09-18 International Business Machines Corporation Address mapping for disk drive to accommodate multiple operating systems
US6941442B2 (en) * 2002-08-02 2005-09-06 Arm Limited Entry lockdown within a translation lookaside buffer mechanism
US6851030B2 (en) * 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources
US7103748B2 (en) * 2002-12-12 2006-09-05 International Business Machines Corporation Memory management for real-time applications
ATE409904T1 (de) * 2003-04-09 2008-10-15 Jaluna Sa Betriebssysteme
JP3936672B2 (ja) * 2003-04-30 2007-06-27 富士通株式会社 マイクロプロセッサ
US7100018B2 (en) * 2003-07-31 2006-08-29 Silicon Graphics, Inc. System and method for encoding page size information
US7200733B2 (en) * 2003-09-11 2007-04-03 Honeywell International Inc. Virtual memory translator for real-time operating systems

Also Published As

Publication number Publication date
CN101004715A (zh) 2007-07-25
US20050273572A1 (en) 2005-12-08
CN1704912B (zh) 2010-04-28
CN1704912A (zh) 2005-12-07
JP2005346358A (ja) 2005-12-15
US7761686B2 (en) 2010-07-20
CN101004715B (zh) 2010-07-28

Similar Documents

Publication Publication Date Title
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
JP4233492B2 (ja) アドレス変換装置
JP5654056B2 (ja) 階層的な変換テーブル制御
EP3172673B1 (en) Address translation cache that supports simultaneous invalidation of common context entries
US5095526A (en) Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status
KR101746734B1 (ko) 가상 처리 시스템에서 어드레스 맵핑
US6594736B1 (en) System and method for semaphore and atomic operation management in a multiprocessor
CN111752867A (zh) 共享加速器存储器系统和方法
CN108139981B (zh) 一种页表缓存tlb中表项的访问方法,及处理芯片
JPH0652511B2 (ja) 情報処理装置のアドレス変換方式
JPS63289659A (ja) 記憶装置保護方式
US5187791A (en) Microprocessor with improved interrupt response with data saving dependent upon processor status using status flag
JP2930071B2 (ja) 情報処理装置およびプロセッサ
EP3800556A1 (en) Selective override of cache coherence in multi-processor computer systems
KR100218617B1 (ko) 변환우선참조 버퍼를 이용하여 메모리를 관리하는 데이터 처리 시스템의 효율적인 메모리 관리 방법 및 시스템과 그를 이용한 데이터 처리 시스템
JP2000339221A (ja) 変換装置のエントリを無効化するシステム及び方法
CN109144901B (zh) 公式化虚拟地址转换
JP2011141754A (ja) キャッシュメモリ
EP1262875A1 (en) Master/slave processing system with shared translation lookaside buffer
JP2010191645A (ja) アドレスマッピング方法
EP1262876B1 (en) Multiprocessing system with shared translation lookaside buffer

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080708

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

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: 20081209

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: 20081209

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4233492

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131219

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term