[go: up one dir, main page]

JP5466768B2 - メモリ・アクセスを制御する装置およびコンピュータ - Google Patents

メモリ・アクセスを制御する装置およびコンピュータ Download PDF

Info

Publication number
JP5466768B2
JP5466768B2 JP2012541771A JP2012541771A JP5466768B2 JP 5466768 B2 JP5466768 B2 JP 5466768B2 JP 2012541771 A JP2012541771 A JP 2012541771A JP 2012541771 A JP2012541771 A JP 2012541771A JP 5466768 B2 JP5466768 B2 JP 5466768B2
Authority
JP
Japan
Prior art keywords
processor
address
memory
boot
executed
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
Application number
JP2012541771A
Other languages
English (en)
Other versions
JPWO2012060148A1 (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2012541771A priority Critical patent/JP5466768B2/ja
Application granted granted Critical
Publication of JP5466768B2 publication Critical patent/JP5466768B2/ja
Publication of JPWO2012060148A1 publication Critical patent/JPWO2012060148A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、メモリ・アクセスを制御してシステムの仮想化を実現する装置およびその装置を搭載したコンピュータに関する。
コンピュータ・アーキテクチャにおいて、プロセッサやメモリ等を仮想化して仮想ハードウェアによるソフトウェアの動作環境を実現し、複数のOS(Operating System)等のソフトウェアを実行可能とすることが行われている。従来、この種の仮想化技術は、ホストOS型と呼ばれる方式とハイパーバイザー型と呼ばれる方式のいずれかにより実現される(例えば、特許文献1参照)。
図8は、ホストOS型による仮想化方式の概念を説明する図である。
図8に示すように、ホストOS型のシステムは、ハードウェア810上で一つのホストOS811が動作する。ホストOS811上では、ホストOS811のタスク812が実行されると共に、仮想マシンモニタ813を介してゲストOS814が動作する。そして、ゲストOS814上でゲストOS814のタスク815が実行される。言い換えれば、ホストOS型のシステムでは、実装された複数のOSのうちの一つがホストOS811となり、他のOS(ゲストOS814)の動作環境を提供する。なお、図示の例では一つのゲストOS814が記載されているが、複数のゲストOS814を対応する仮想マシンモニタ813と共に実装しても良い。
図9は、ハイパーバイザー型による仮想化方式の概念を説明する図である。
図9に示すように、ハイパーバイザー型のシステムは、ハードウェア910上でハイパーバイザー911が動作する。そして、ハイパーバイザー911上で複数のゲスト・システム(OSおよびOS上で動作するタスク)912が動作する。
特開2008−77144号公報
従来、システムの仮想化を実現する機能は、ソフトウェアにより提供されていた。すなわち、上記のホストOSやハイパーバイザーの機能によって、ゲストOSを動作させる仮想ハードウェアが実現されていた。そのため、実装されるソフトウェアにおいて仮想化を実現するための特別な仕組みを設ける必要があった。
具体的には、例えば、ホストOS型のシステムの場合、ゲストOSを動作させる際にもホストOSが動作するため、ハードウェアへの負荷が大きく、オーバーヘッドが大きいという問題があった。また、ゲストOSを動作させるための仮想マシンモニタのような特別なソフトウェアが必要であった。
ハイパーバイザー型のシステムは、ハイパーバイザーが、実装されるハードウェアおよびハイパーバイザー上で動作させるOSに対応して構成される必要がある。そのため、ハードウェアの構成や使用するOSの種類を変更すると、変更後のハードウェアやOSに対応するハイパーバイザーを作成しなければならない。したがって、システム構成の変更が容易な、柔軟なシステムの構築が困難であった。
また、ハイパーバイザー型のシステムには、準仮想化方式と呼ばれる方式と、完全仮想化方式と呼ばれる方式とがあるが、準仮想化方式の場合、ゲストOSをハイパーバイザーに適合させる必要があった。すなわち、ハイパーバイザーにより提供される仮想化環境を利用することを前提としてゲストOSを設計したり、改変したりする必要があった。
これに対し、完全仮想化方式の場合、ゲストOSの改変等を行う必要はない。しかし、仮想化環境におけるゲストOSの動作をハイパーバイザーが支援する必要があるため、ホストOS型の場合と同様に、オーバーヘッドが大きくなるという問題があった。
本発明は、プロセッサによるメモリ・アクセスをハードウェアで制御することにより、ソフトウェアに特別な仕組みを持たせることなく、かつオーバーヘッドの増大を抑制しながら、システムの仮想化を実現することを目的とする。
上記の目的を達成するため、本発明は、次のような装置として実現される。この装置は、プロセッサによるメモリ・アクセスを制御する装置において、複数のプロセッサにより実行される複数のOS(Operating System)に個別に対応し、各プロセッサからのメモリ・アクセスにおけるアクセス先の論理アドレスをメモリにおける物理アドレスに変換する複数のアドレス変換部と、メモリ・アクセスを行ったプロセッサの識別情報を取得し、複数のアドレス変換部のうち当該メモリ・アクセスに対するアドレス変換を実行するアドレス変換部として、識別情報に基づいて特定されたプロセッサにより実行されるOSに対応するアドレス変換部を選択する選択部と、を備える。
より詳細には、アドレス変換部は、プロセッサから出力されたアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、メモリにおけるこのプロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換する。
さらに好ましくは、アドレス変換部は、OSを起動するためのブート・プログラムが格納されたブート用メモリに対するプロセッサによるアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、ブート用メモリの物理アドレスに変換する。
また、好ましくは、アドレス変換部は、プログラム可能なロジックおよびレジスタで構成される。
そして、選択部は、複数のアドレス変換部により変換されたアドレスを表すアドレス信号を受け付けて、アドレス信号の一つを選択的にメモリへ出力するマルチプレクサと、識別情報に基づいてマルチプレクサによる出力対象となるアドレス信号を切り替えるスイッチと、を備える。
また、上記の目的を達成する他の本発明は、プロセッサによるメモリ・アクセスを制御する装置において、複数のプロセッサにより実行される複数のOS(Operating System)に個別に対応し、各プロセッサから出力されたアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換し、OSを起動するためのブート・プログラムが格納されたブート用メモリに対するプロセッサによるアクセス命令を受け付け、アクセス命令において指定された論理アドレスを、ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、アクセス命令を出力したプロセッサの識別情報を取得し、複数のアドレス変換部のうちアクセス命令に対するアドレス変換を実行するアドレス変換部として、識別情報に基づいて特定されたプロセッサにより実行されるOSに対応するアドレス変換部を選択する選択部と、を備える。
さらにまた、上記の目的を達成するさらに他の本発明は、複数のOS(Operating System)を実装するコンピュータにおいて、複数のプロセッサと、メモリと、メモリ・アクセスを行ったプロセッサの識別情報を取得し、このプロセッサからのメモリ・アクセスにおけるアクセス先の論理アドレスを、メモリにおける識別情報に基づいて特定されたプロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換するアドレス変換装置と、を備える。
本発明によれば、プロセッサによるメモリ・アクセスをハードウェアで制御することにより、ソフトウェアに特別な仕組みを持たせることなく、かつオーバーヘッドの増大を抑制しながら、システムの仮想化を実現することができる。
本実施形態によるシステムの仮想化の概念を説明する図である。 本実施形態の仮想化システムにおけるハードウェアの構成例を示す図である。 本実施形態の仮想化装置による仮想化の手法を説明する図である。 本実施形態の仮想化装置の機能構成例を示す図である。 本実装例における各OSのメモリ・マップと、各OSにおけるメモリ空間のシステム・メモリへの割り当てと、各OSにおけるブート領域のブート・メモリへの割り当てを示す図である。 本実施形態の仮想化システムの実装例の構成を示す図である。 図6に示した仮想化システムの実装例において、仮想化装置の設定が行われた様子を示す図である。 ホストOS型による仮想化方式の概念を説明する図である。 ハイパーバイザー型による仮想化方式の概念を説明する図である。
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
<システム構成>
図1は、本実施形態によるシステムの仮想化の概念を説明する図である。
図1に示すように、本実施形態の仮想化システムは、ハードウェアとして、プロセッサ(プロセッサ・コア)10と、仮想化装置20とを備える。各ソフトウェア(OSおよびアプリケーション)100は、仮想化装置20を介してプロセッサ10により実行される。すなわち、本実施形態によれば、各OSは、ハイパーバイザーやホストOSを介すことなく、ハードウェア上で直接動作する。
ここで、仮想化装置20は、主としてプロセッサ10からのメモリ・アクセスを制御する装置である。すなわち、仮想化装置20は、各OSに対して個別のアドレス空間を提供する。この仮想化装置20の制御によって、各OSは、物理的には共通のメモリを使用しながら、各々独立のアドレス空間にアクセスすることとなる。このようにして、本実施形態における仮想化環境が実現される。仮想化装置20の具体的な構成および機能については後述する。
図2は、本実施形態の仮想化システムにおけるハードウェアの構成例を示す図である。
図2を参照すると、仮想化装置20は、第1のローカルバス51および第2のローカルバス52に接続されている。第1のローカルバス51には、プロセッサ10およびeDRAM(Embedded DRAM)12が接続されている。さらに、第1のローカルバス51には、周辺装置(Peripheral Island Node)13が接続されており、チップ・インターリンク14が設けられている。なお、図2には、複数(不特定)のプロセッサ10を記載しているが、本実施形態の対象となるシステムにおいては、1または複数個のプロセッサ10を搭載して良く、また一つのプロセッサに複数のプロセッサ・コアを備えたマルチコア・プロセッサを搭載しても良い。
また、第2のローカルバス52には、ブート・メモリ・コントローラ31およびシステム・メモリ・コントローラ32が接続されている。ブート・メモリ・コントローラ31は、ブート・メモリ41として用いられるROM(Read Only Memory)を制御し、システム・メモリ・コントローラ32は、システム・メモリ42であるDRAM(Dynamic Random Access Memory)を制御する。第2のローカルバス52には、さらにeDRAM33が接続されている。
上記のように構成したことにより、各プロセッサ10、周辺装置13およびチップ・インターリンク14を介してシステムに接続された外部装置(図示せず)は、ブート・メモリ41およびシステム・メモリ42にアクセスする場合、いずれも仮想化装置20を介してアクセスすることとなる。
また、図2に示すように、プロセッサ10は、デコーダ11を介して第1のローカルバス51に接続されている。デコーダ11は、接続しているプロセッサ10が仮想化装置20を介してメモリ・アクセスする際に、コントロール信号として、そのプロセッサ10を識別するための固有の情報(プロセッサID等)およびプロセスの識別情報(プロセスID等)を仮想化装置20に送信する。仮想化装置20は、このコントロール信号に基づいて、いずれのプロセッサ10からのアクセスかを識別する。なお、プロセッサ10の種類によっては、プロセッサ10自身がコントロール信号に相当する情報を出力するものがある。この場合、仮想化装置20は、プロセッサ10から出力される情報に基づいてプロセッサ10およびプロセスを識別すればよいので、デコーダ11を設ける必要はない。
図2に示すハードウェアは、単体の半導体チップ上に構成することができる。すなわち、本実施形態による仮想化システムは、SoC(System on a chip)として実現し、提供することができる。また、SoCではなく、個々の要素(プロセッサ10や仮想化装置20等)を個別の電子回路として構成した装置として提供しても良い。
<仮想化装置による仮想化>
図3は、本実施形態の仮想化装置20による仮想化の手法を説明する図である。
図3に示すように、仮想化装置20は、プロセッサ10からのメモリ・アクセスにおいて、アクセス先を示す論理アドレス(仮想アドレス)を含むアクセス命令と、コントロール信号とを受信する。また、アクセスがデータの書き込みを目的とするときは、メモリ(ブート・メモリ41またはシステム・メモリ42)に書き込まれるデータも受信する。仮想化装置20は、システムに実装されるOSに応じて複数のアドレス変換用のテーブルを有する。そして、仮想化装置20は、受信したコントロール信号に基づいて特定されるOSに対応するテーブルを用い、アクセス命令に含まれるアクセス先の論理アドレスを物理アドレスに変換する。この後、仮想化装置20(アドレス変換装置)は、アドレス変換が行われたアクセス命令をブート・メモリ・コントローラ31またはシステム・メモリ・コントローラ32へ送信する。
一方、受信したデータについては、仮想化装置20は、そのままブート・メモリ・コントローラ31またはシステム・メモリ・コントローラ32へ送信する。データを読み出すためのアクセスの場合は、メモリから読み出されたデータを、そのままプロセッサ10へ返送する。なお、仮想化装置20において、通過するデータに対して、アクセスの目的に影響を与えない特定の処理を行っても良い。例えば、メモリにデータを書き込む際には受信したデータに対して暗号化や圧縮等の処理を行ってメモリへ送信し、メモリからデータを読み出す際には読み出したデータを復号したり復元したりする処理を行ってプロセッサ10へ送信することができる。
<仮想化装置の機能構成>
図4は、仮想化装置20の機能構成例を示す図である。
図4に示すように、仮想化装置20は、複数のアドレス・テーブル21と、テーブル選択部22と、I/Oテーブル23と、排他制御部24とを備える。アドレス・テーブル21およびI/Oテーブル23は、例えばプログラム可能なロジックやレジスタで構成され、実装されるOSの種類や個数、ブート・メモリ41やシステム・メモリ42の容量等のシステム構成に応じて設定される。
アドレス・テーブル21は、プロセッサ10からのアクセス命令においてアクセス先として指定された論理アドレスをメモリ(例えばシステム・メモリ42)の物理アドレスに変換する、ハードウェアによる変換テーブル(アドレス変換部、変換処理部)である。上述したように、アドレス・テーブル21は、システムに実装されるOSに応じて複数用意される。図示の例では、3種類のOSに対応して三つのアドレス・テーブル21(21a、21b、21c)が記載されている。各アドレス・テーブル21には、ブート・メモリ41へのアクセスに関するアドレス変換と、システム・メモリ42へのアクセスに関するアドレス変換とを行うための設定がなされる。
図4において、ブート・メモリ41を参照すると、複数のOSを起動するため、各OSに対応付けられたブート領域(メモリ領域)が設定されている(図示の例では三つの領域a1、a2、a3)。各領域には、対応する0Sを起動させるためのブート・プログラムが格納されている。また、システム・メモリ42を参照すると、各OSに対応付けられたメモリ空間(メモリ領域)が設定されている(図示の例では三つのメモリ空間s1、s2、s3)。各メモリ空間は、対応するOSによるメモリ・アクセスにおいて使用される領域である。したがって、例えばブート・メモリ41のブート領域a1およびシステム・メモリ42のメモリ空間s1が特定のOS1に対応付けられており、そのOS1用にアドレス・テーブル21aが用意されるとすると、図4に示すように、アドレス・テーブル21aには、ブート領域a1およびメモリ空間s1のアドレス変換を行うように設定される。
テーブル選択部22は、OSによるメモリ・アクセスに伴ってプロセッサ10またはデコーダ11から受信したコントロール信号に基づき、アクセスを行ったOSに対応するアドレス・テーブル21を選択する。そして、このテーブル選択部22により選択されたアドレス・テーブル21により、メモリ・アクセスにおけるアクセス先のアドレスが変換される。
I/Oテーブル23は、外部装置(入出力機器)に割り当てられたアドレスを管理するテーブルである。本実施形態では、外部装置への入出力に、MMIO(Memory-mapped I/O)を用いることとする。すなわち、外部装置はメモリと同一のアドレス空間に配置される。そこで、外部装置に割り当てられたアドレスを管理する必要があるため、I/Oテーブル23が用意される。ここで、外部装置に割り当てられるアドレスは、OSに関わらず1種類として良い。そのため、本実施形態において、I/Oテーブル23は、アドレス・テーブル21と異なり一つのみ用意されるものとする。
排他制御部24は、いずれかのOSが外部装置にアクセスしている際に、他のOSがその外部装置にアクセスしないように、排他制御を行う。上記のように、本実施形態では、各OSが外部装置にアクセスするために共通のI/Oテーブル23を使用する。そこで、複数のOSから同一の外部装置へ重複したアクセス要求が行われないように、排他制御を行っている。なお、外部装置への入出力に関する排他制御は、第2のローカルバス52に設けられるバス・アービタ(図示せず)で行っても良い。この場合、仮想化装置20が排他制御部24を備える必要はない。
<実装例>
次に、本実施形態の具体的な実装例を提示して、さらに説明する。
まず、本実装例の具体的な仕様を説明する。本実装例では、以下のようなシステムを考える。
・プロセッサ10として、32ビット(4ギガ・バイト(GB)のメモリ空間)のプロセッサ10A〜10Dの四つを備える。
・メモリとして、4GBのシステム・メモリ42と、756キロ・バイト(KB)のブート・メモリ41とを備える。
・ブート・メモリ・コントローラ31およびシステム・メモリ・コントローラ32へは、34ビットでアドレスする。
・実装されるOSは、OS1〜OS3の3種類。
・OS1は、プロセッサ10Aおよび10Bで動作し、システム・メモリ42を2GB使用する。そして、OS1用にアドレス・テーブル21aが用意される。
・OS2は、プロセッサ10Cで動作し、システム・メモリ42を1GB使用する。そして、OS2用にアドレス・テーブル21bが用意される。
・OS3は、プロセッサ10Dで動作し、システム・メモリ42を1GB使用する。そして、OS3用にアドレス・テーブル21cが用意される。
図5は、本実装例における各OSのメモリ・マップと、各OSにおけるメモリ空間のシステム・メモリ42への割り当てと、各OSにおけるブート領域のブート・メモリ41への割り当てを示す図である。
なお、図示のメモリ・マップおよびメモリへの割り当ての表において、一つのセルは、256KBの領域を表すものとする。
図5を参照すると、OS1のメモリ・マップでは、0x0000_0000から0x7FFF_FFFFまでのアドレスにシステム・メモリ42のメモリ空間が割り当てられている。また、0x8000_0000から0x8FFF_FFFFまでのアドレスにMMIOが割り当てられている。また、0xF000_0000から0xFFFF_FFFFまでのアドレスにブート・メモリ41が割り当てられている。
同様に、OS2およびOS3のメモリ・マップでは、0x0000_0000から0x3FFF_FFFFまでのアドレスにシステム・メモリ42のメモリ空間に割り当てられている。そして、0x8000_0000から0x8FFF_FFFFまでのアドレスにMMIOが割り当てられ、0xF000_0000から0xFFFF_FFFFまでのアドレスにブート・メモリ41が割り当てられている。
また、メモリ空間のシステム・メモリ42への割り当ては、OS1のメモリ空間が0x0000_0000から0x7FFF_FFFFまでのアドレスに割り当てられ、OS2のメモリ空間が0x8000_0000から0xBFFF_FFFFまでのアドレスに割り当てられ、OS3のメモリ空間が0xC000_0000から0xFFFF_FFFFまでのアドレスに割り当てられている。
また、ブート領域のブート・メモリ41への割り当ては、OS1のブート領域が0x0000_0000から0x0FFF_FFFFまでのアドレスに割り当てられ、OS2のブート領域が0x1000_0000から0x1FFF_FFFFまでのアドレスに割り当てられ、OS3のブート領域が0x2000_0000から0x2FFF_FFFFまでのアドレスに割り当てられている。
図6は、本実施形態の仮想化システムの実装例の構成を示す図である。
図6に示す実装例では、テーブル選択部22として、スイッチ・ボックス22aとマルチプレクサ22bとが設けられている。マルチプレクサ22bは、各アドレス・テーブル21から出力されるアドレス信号(変換後のアドレスを表す信号)を受け付けて、そのうちの一つを出力する。スイッチ・ボックス22aは、デコーダ11から受信したコントロール信号により特定されるプロセッサ10に応じて、そのプロセッサ10に対応するアドレス・テーブル21から出力されるアドレス信号を出力させるように、マルチプレクサ22bを制御する。また、本実装例では、プロセッサ10がスイッチ・ボックス22aおよびアドレス・テーブル21を設定するためのバスとして、IPブロック・コントロール・バス(図示せず)を用いる。
また、本実装例では、外部装置への入出力に関する排他制御は、第2のローカルバス52に設けられるバス・アービタで行うこととする。したがって、仮想化装置20に排他制御部24は設けられていない。
本実装例において、プロセッサ10Aとプロセッサ10Bとは、対称型マルチプロセッサ(Symmetric Multiple Processor:SMP)として構成され、同一のOS1が動作し、アドレス変換には共通のアドレス・テーブル21aを使用する。また、プロセッサ10Cは、OS2が動作し、アドレス変換にはアドレス・テーブル21bを使用する。また、プロセッサ10Dは、OS3が動作し、アドレス変換にはアドレス・テーブル21cを使用する。図6に示す例では、各プロセッサ10A〜10Dに、デコーダ11A〜11Dが設けられている。ただし、上述したように、プロセッサ10A〜10D自身がコントロール信号を出力する場合は、デコーダ11A〜11Dは不要である。
ブート・メモリ41は、OS1用のブート領域a1(0x1D000_0000−0x1DFFF_FFFF)、OS2用のブート領域a2(0x1E000_0000−0x1EFFF_FFFF)、OS3用のブート領域a3(0x1F000_0000−0x1FFFF_FFFF)を有している。なお、図6においては、ブート・メモリ41の各ブート領域a1、a2、a3のアドレスを34ビットのシステム・アドレス空間で表現している。
システム・メモリ42は、OS1用のメモリ空間s1(0x0000_0000−0x7FFF_FFFF)、OS2用のメモリ空間s2(0x8000_0000−0xBFFF_FFFF)、OS3用のメモリ空間s3(0xC000_0000−0xFFFF_FFFF)を有している。
<初期状態と設定動作>
図6は、以上のように構成されたシステムの初期状態(テーブル選択部22を構成するスイッチ・ボックス22aおよび各アドレス・テーブル21a〜21cにおいて仮想化を行うための設定がなされていない状態)を示している。本システムの仮想化装置20は、この初期状態において、プロセッサ10Aが、ブート・メモリ41の該当するブート領域にアクセスし、ブート・プログラムを読み込んで実行するように設定されている。
図6を参照すると、スイッチ・ボックス22aは、プロセッサ10Aのデコーダ11Aからのコントロール信号にしたがって、アドレス・テーブル21aを選択するように設定されている(図中、破線の記載を参照)。また、アドレス・テーブル21aには、ブート・メモリ41のブート領域a1のアドレス(「ROM ADD」および「ROM Mask」)が設定されている。スイッチ・ボックス22aの他の設定、アドレス・テーブル21aにおけるシステム・メモリ42のメモリ空間s1のアドレス(「Sys ADD」および「Sys Mask」)の設定、およびアドレス・テーブル21b、21cの設定はなされていない。
この状態で、電源投入等によりプロセッサ10Aのリセットが解除されると、デコーダ11Aからのコントロール信号によりスイッチ・ボックス22aがマルチプレクサ22bを制御してアドレス・テーブル21aを選択する。そして、アドレス・テーブル21aの設定にしたがって、プロセッサ10Aがブート・メモリ41のブート領域a1にアクセスし、ブート・プログラムを実行する。このブート・プログラムの実行により、スイッチ・ボックス22aの設定と、システム・メモリ42のプロセッサ10Aに対応するメモリ空間s1に関するアドレス・テーブル21aの設定と、他のプロセッサ10B、10Cに関する設定とが行われる。
図7は、図6に示した仮想化システムの実装例において、上記各種の設定が行われた様子を示す図である。
具体的な設定としては、まず、スイッチ・ボックス22aが、
デコーダ11Aからのコントロール信号によりアドレス・テーブル21aを選択し、
デコーダ11Bからのコントロール信号によりアドレス・テーブル21aを選択し、
デコーダ11Cからのコントロール信号によりアドレス・テーブル21bを選択し、
デコーダ11Dからのコントロール信号によりアドレス・テーブル21cを選択するように設定される(図中、破線の記載を参照)。
また、図5に示したOS1のメモリ・マップに基づき、アドレス・テーブル21aにおいて、システム・メモリ42のメモリ空間s1のアドレス0x0000_0000−0x7FFF_FFFFを使用するように設定が行われる。例えば、図7に示すように開始アドレス(「Sys ADD」)とデータ範囲を設定するマスク・データ(「Sys Mask」)を設定する。そして、プロセッサ10Aから出力されたアクセス命令に含まれるアドレス(論理アドレス)と開始アドレスおよびマスク・データとの論理積(AND)を求めれば、アドレスの変換ができる。
さらにまた、OS2用のアドレス・テーブル21bについて、ブート・メモリ41におけるブート領域a2のアドレスおよびシステム・メモリ42におけるメモリ空間s2のアドレスの設定が行われる。同様に、OS3用のアドレス・テーブル21cについても、ブート・メモリ41におけるブート領域a3のアドレスおよびシステム・メモリ42におけるメモリ空間s3のアドレスの設定が行われる。
上記の設定により、プロセッサ10Aは、システム・メモリ42を使用可能となる。そこで、ブート・プログラムのシステム・メモリ42へのコピー等を行って、OS1のブートを行う。
次に、プロセッサ10Bのリセットが解除される。上述したように、本実装例においてプロセッサ10Bとプロセッサ10AとはSMPであるので、プロセッサ10Bは、プロセッサ10Aと同じアドレス・テーブル21aを使用する。
次に、プロセッサ10Cのリセットが解除される。このとき、プロセッサ10Cで動作するOS2用のアドレス・テーブル21bは、ブート・メモリ41におけるブート領域a2のアドレスおよびシステム・メモリ42におけるメモリ空間s2のアドレスとも設定済みである。したがって、プロセッサ10Cは、通常通り、OS2のブートを行う。
さらに、プロセッサ10Dのリセットが解除される。このとき、プロセッサ10Dで動作するOS3用のアドレス・テーブル21cは、ブート・メモリ41におけるブート領域a3のアドレスおよびシステム・メモリ42におけるメモリ空間s3のアドレスとも設定済みである。したがって、プロセッサ10Dは、通常通り、OS3のブートを行う。
なお、上記の例では、最初にプロセッサ10Aに対するリセットを解除することで、スイッチ・ボックス22aおよびアドレス・テーブル21a、21b、21cの設定を行ない、仮想化システム全体を起動させた。ここで、最初にリセットを解除するプロセッサ10は、予めハードウェア設定により決定しておけば良く(図6参照)、特定のプロセッサ10に限定されるものではない。また、起動時の設定動作は、各プロセッサ10がメモリ(ブート・メモリ41およびシステム・メモリ42)の該当する領域にアクセス可能となり、各プロセッサ10で動作する各OSがシステム・メモリ42を使用してブート可能となれば良く、上記実装例の手順には限定されない。
以上のように、本実施形態によれば、仮想化装置20が、実装された各OSからのメモリ・アクセスに対して、OSごとに予め割り当てられたメモリ領域を使用するようにアドレス変換(論理アドレスから物理アドレスへの変換)を行う。このため、各OSは、仮想化システムで使用されることを前提とした設計や改変を行うことなく、本実施形態により提供される仮想化環境で動作することができる。
また、本実施形態は、仮想化装置20がメモリ・アクセスにおけるアドレス変換を行うため、ホストOSやハイパーバイザーのようなソフトウェアにより仮想化環境を実現する仕組みを必要としない。そのため、プロセッサにかかる負荷を軽減することができる。
以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
10…プロセッサ、20…仮想化装置、21…アドレス・テーブル、22…テーブル選択部、31…ブート・メモリ・コントローラ、32…システム・メモリ・コントローラ、41…ブート・メモリ、42…システム・メモリ

Claims (5)

  1. プロセッサによるメモリ・アクセスを制御する装置において、
    複数のプロセッサにより実行される複数のOS(Operating System)に個別に対応し、各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換し、OSを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、
    アクセス命令を出力したプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該アクセス命令に対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるOSに対応するアドレス変換部を選択する選択部と、を備え
    前記選択部は、初期的に、前記複数のプロセッサのうちの予め定められた一つのプロセッサに関して、当該プロセッサの識別情報に基づき、当該一つのプロセッサにより実行されるOSに対応する前記アドレス変換部を選択するように設定され、
    前記予め定められた一つのプロセッサにより実行されるOSに対応する前記アドレス変換部は、初期的に、当該一つのプロセッサにより実行されるOSを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定され、
    前記予め定められた一つのプロセッサは、リセットが解除されると、前記選択部の初期設定により選択された前記アドレス変換部の初期設定によるアドレス変換に基づいて、前記ブート・プログラムを読み込んで実行することにより、前記選択部を、当該一つのプロセッサ以外のプロセッサに関して、各プロセッサの識別情報に基づき、各プロセッサにより実行されるOSに対応する前記アドレス変換部を選択するように設定し、前記予め定められた一つのプロセッサにより実行されるOSに対応する前記アドレス変換部を、当該一つのプロセッサにより実行されるOSに対応付けられたメモリ領域に関して、前記論理アドレスを当該メモリ領域の物理アドレスに変換するように設定し、前記予め定められた一つのプロセッサにより実行されるOS以外のOSに対応する前記アドレス変換部を、各OSを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定し、各OSに対応付けられたメモリ領域に関して、前記論理アドレスを各メモリ領域の物理アドレスに変換するように設定する、装置。
  2. 複数の前記プロセッサにより実行される各OSからアクセス可能な外部装置に割り当てられたI/Oアドレスを管理する管理するI/Oアドレス管理手段と、
    一つの前記OSが前記外部装置にアクセスしている際に、他のOSからの当該外部装置へのアクセスを禁止する排他制御手段と、
    をさらに備える、請求項1に記載の装置。
  3. 前記アドレス変換部は、プログラム可能なロジックおよびレジスタで構成される、請求項1または請求項2に記載の装置。
  4. 前記選択部は、
    複数の前記アドレス変換部により変換されたアドレスを表すアドレス信号を受け付けて、当該アドレス信号の一つを選択的に前記メモリへ出力するマルチプレクサと、
    前記識別情報に基づいて前記マルチプレクサによる出力対象となる前記アドレス信号を切り替えるスイッチと、
    を備える、請求項1乃至請求項3のいずれかに記載の装置。
  5. 複数のOS(Operating System)を実装するコンピュータにおいて、
    複数のプロセッサと、
    メモリと、
    メモリ・アクセスを行った前記プロセッサの識別情報を取得し、当該プロセッサからの当該メモリ・アクセスにおけるアクセス先の論理アドレスを、前記メモリにおける当該識別情報に基づいて特定されたプロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換するアドレス変換装置と、を備え
    前記アドレス変換装置は、
    複数の前記OSに個別に対応し、前記各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換し、OSを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、
    アクセス命令を出力したプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該アクセス命令に対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるOSに対応するアドレス変換部を選択する選択部と、を備え、
    前記選択部は、初期的に、前記複数のプロセッサのうちの予め定められた一つのプロセッサに関して、当該プロセッサの識別情報に基づき、当該一つのプロセッサにより実行されるOSに対応する前記アドレス変換部を選択するように設定され、
    前記予め定められた一つのプロセッサにより実行されるOSに対応する前記アドレス変換部は、初期的に、当該一つのプロセッサにより実行されるOSを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定され、
    前記予め定められた一つのプロセッサは、リセットが解除されると、前記選択部の初期設定により選択された前記アドレス変換部の初期設定によるアドレス変換に基づいて、前記ブート・プログラムを読み込んで実行することにより、前記選択部を、当該一つのプロセッサ以外のプロセッサに関して、各プロセッサの識別情報に基づき、各プロセッサにより実行されるOSに対応する前記アドレス変換部を選択するように設定し、前記予め定められた一つのプロセッサにより実行されるOSに対応する前記アドレス変換部を、当該一つのプロセッサにより実行されるOSに対応付けられたメモリ領域に関して、前記論理アドレスを当該メモリ領域の物理アドレスに変換するように設定し、前記予め定められた一つのプロセッサにより実行されるOS以外のOSに対応する前記アドレス変換部を、各OSを起動するためのブート・プログラムが格納された前記ブート用メモリのブート領域に関して、前記論理アドレスを当該ブート領域の物理アドレスに変換するように設定し、各OSに対応付けられたメモリ領域に関して、前記論理アドレスを各メモリ領域の物理アドレスに変換するように設定する、コンピュータ。
JP2012541771A 2010-11-02 2011-09-05 メモリ・アクセスを制御する装置およびコンピュータ Expired - Fee Related JP5466768B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012541771A JP5466768B2 (ja) 2010-11-02 2011-09-05 メモリ・アクセスを制御する装置およびコンピュータ

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010246614 2010-11-02
JP2010246614 2010-11-02
PCT/JP2011/070106 WO2012060148A1 (ja) 2010-11-02 2011-09-05 メモリ・アクセスを制御する装置およびコンピュータ
JP2012541771A JP5466768B2 (ja) 2010-11-02 2011-09-05 メモリ・アクセスを制御する装置およびコンピュータ

Publications (2)

Publication Number Publication Date
JP5466768B2 true JP5466768B2 (ja) 2014-04-09
JPWO2012060148A1 JPWO2012060148A1 (ja) 2014-05-12

Family

ID=46024270

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012541771A Expired - Fee Related JP5466768B2 (ja) 2010-11-02 2011-09-05 メモリ・アクセスを制御する装置およびコンピュータ

Country Status (3)

Country Link
US (1) US20120110298A1 (ja)
JP (1) JP5466768B2 (ja)
WO (1) WO2012060148A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2493340A (en) * 2011-07-28 2013-02-06 St Microelectronics Res & Dev Address mapping of boot transactions between dies in a system in package
DE102012104216A1 (de) * 2012-05-15 2013-11-21 Z & J Technologies Gmbh Verfahren zur Lösung einer Steuerungsaufgabe in einer Prozessanlage
US9394619B2 (en) * 2013-03-12 2016-07-19 Intel Corporation Methods of adding dopants to conductive interconnect structures in substrate technologies and structures formed thereby
CN104714846B (zh) 2013-12-17 2018-06-05 华为技术有限公司 资源处理方法、操作系统及设备
US9824015B2 (en) * 2015-05-29 2017-11-21 Qualcomm Incorporated Providing memory management unit (MMU) partitioned translation caches, and related apparatuses, methods, and computer-readable media
KR20230092227A (ko) 2021-12-17 2023-06-26 삼성전자주식회사 멀티코어 프로세서 및 스토리지 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02307145A (ja) * 1989-05-22 1990-12-20 Nippon Telegr & Teleph Corp <Ntt> 仮想計算機システム
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2005275629A (ja) * 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
JP2005346358A (ja) * 2004-06-02 2005-12-15 Fujitsu Ltd アドレス変換装置およびアドレス変換方法
JP2008097173A (ja) * 2006-10-10 2008-04-24 Renesas Technology Corp データプロセッサ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567912B1 (en) * 2000-03-31 2003-05-20 Motorola, Inc. Method and apparatus for robust initialization of devices
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
JP2008021252A (ja) * 2006-07-14 2008-01-31 Hitachi Ltd 計算機システム及びアドレス割当方法
US8108650B2 (en) * 2009-05-29 2012-01-31 Apple Inc. Translation lookaside buffer (TLB) with reserved areas for specific sources

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02307145A (ja) * 1989-05-22 1990-12-20 Nippon Telegr & Teleph Corp <Ntt> 仮想計算機システム
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2005275629A (ja) * 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
JP2005346358A (ja) * 2004-06-02 2005-12-15 Fujitsu Ltd アドレス変換装置およびアドレス変換方法
JP2008097173A (ja) * 2006-10-10 2008-04-24 Renesas Technology Corp データプロセッサ

Also Published As

Publication number Publication date
JPWO2012060148A1 (ja) 2014-05-12
US20120110298A1 (en) 2012-05-03
WO2012060148A1 (ja) 2012-05-10

Similar Documents

Publication Publication Date Title
US10423435B1 (en) Page swapping in virtual machine environment
US7509391B1 (en) Unified memory management system for multi processor heterogeneous architecture
JP5870206B2 (ja) 効率的なメモリ及びリソース管理
JP6355114B2 (ja) リソース処理方法、オペレーティング・システム、およびデバイス
JP5466768B2 (ja) メモリ・アクセスを制御する装置およびコンピュータ
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
JP5412504B2 (ja) マルチスレッドプロセッサ及びデジタルテレビシステム
KR100515229B1 (ko) 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템
US20070162641A1 (en) Method and apparatus for utilizing platform support for direct memory access remapping by remote DMA (&#34;RDMA&#34;)-capable devices
EP1805629B1 (en) System and method for virtualization of processor resources
US20090182980A1 (en) Systems and methods for asymmetric multiprocessing
JP2008021252A (ja) 計算機システム及びアドレス割当方法
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US20050235083A1 (en) Computer system
JP4692912B2 (ja) リソース割り当てシステム、及びリソース割り当て方法
JP2009296195A (ja) 複数のcpuコアを備えたfpgaを用いた暗号装置
US9361124B2 (en) Computer system and startup method
EP1067461B1 (en) Unified memory management system for multi process heterogeneous architecture
JP6679419B2 (ja) メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
CN113835845B (zh) 一种cpu核绑定的内存硬分区能力实现方法及系统
JP2007148621A (ja) 計算機システム
JP6885627B1 (ja) デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法
JP2009266050A (ja) 情報処理装置
JP2016057797A (ja) 診断プログラム実行装置、診断プログラム実行システム、診断プログラム実行方法、及び、診断プログラム実行プログラム
CN117742890A (zh) 一种虚拟机的创建方法、装置、设备及存储介质

Legal Events

Date Code Title Description
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: 20140107

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20140107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140124

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees