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

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

Info

Publication number
WO2012060148A1
WO2012060148A1 PCT/JP2011/070106 JP2011070106W WO2012060148A1 WO 2012060148 A1 WO2012060148 A1 WO 2012060148A1 JP 2011070106 W JP2011070106 W JP 2011070106W WO 2012060148 A1 WO2012060148 A1 WO 2012060148A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
memory
processor
access
boot
Prior art date
Application number
PCT/JP2011/070106
Other languages
English (en)
French (fr)
Inventor
秀作 松瀬
Original Assignee
インターナショナル・ビジネス・マシーンズ・コーポレーション
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 インターナショナル・ビジネス・マシーンズ・コーポレーション filed Critical インターナショナル・ビジネス・マシーンズ・コーポレーション
Priority to JP2012541771A priority Critical patent/JP5466768B2/ja
Priority to US13/287,298 priority patent/US20120110298A1/en
Publication of WO2012060148A1 publication Critical patent/WO2012060148A1/ja

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

Definitions

  • the present invention relates to a device that realizes system virtualization by controlling memory access and a computer equipped with the device.
  • a processor or memory is virtualized to realize a software operating environment using virtual hardware, and software such as a plurality of operating systems (OSs) can be executed.
  • OSs operating systems
  • this kind of virtualization technology is realized by either a method called a host OS type or a method called a hypervisor type (see, for example, Patent Document 1).
  • FIG. 8 is a diagram for explaining the concept of the virtualization method based on the host OS type.
  • the host OS type system one host OS 811 operates on hardware 810.
  • the task 812 of the host OS 811 is executed, and the guest OS 814 operates via the virtual machine monitor 813.
  • the task 815 of the guest OS 814 is executed on the guest OS 814.
  • one of a plurality of installed OSs becomes a host OS 811 and provides an operating environment of another OS (guest OS 814).
  • guest OS 814 is described, but a plurality of guest OSs 814 may be mounted together with the corresponding virtual machine monitor 813.
  • FIG. 9 is a diagram for explaining the concept of a hypervisor type virtualization method.
  • a hypervisor 911 operates on hardware 910.
  • a plurality of guest systems (OS and tasks that operate on the OS) 912 operate on the hypervisor 911.
  • the hypervisor type system needs to be configured so that the hypervisor corresponds to the hardware to be mounted and the OS that operates on the hypervisor. Therefore, when the hardware configuration or the type of OS to be used is changed, a hypervisor corresponding to the changed hardware or OS must be created. Therefore, it has been difficult to construct a flexible system in which the system configuration can be easily changed.
  • Hypervisor systems include a method called a paravirtualization method and a method called a full virtualization method.
  • the guest OS In the case of the paravirtualization method, the guest OS must be adapted to the hypervisor. . That is, it is necessary to design or modify the guest OS on the assumption that the virtual environment provided by the hypervisor is used.
  • An object of the present invention is to realize system virtualization by controlling the memory access by the processor by hardware without giving the software a special mechanism and suppressing an increase in overhead. .
  • This device controls memory access by a processor, and individually corresponds to a plurality of operating systems (OS) executed by a plurality of processors, and stores a logical address of an access destination in memory access from each processor.
  • OS operating systems
  • a selection unit that selects an address conversion unit corresponding to the OS executed by the processor specified based on the information.
  • the address conversion unit receives the access instruction output from the processor, and converts the logical address specified in the access instruction to the physical address of the memory area associated with the OS executed by the processor in the memory. Convert. More preferably, the address conversion unit receives an access instruction from the processor to the boot memory in which a boot program for starting the OS is stored, and sets the logical address specified in the access instruction to the physical address of the boot memory. Convert.
  • the address conversion unit is configured with programmable logic and registers.
  • the selection unit receives an address signal representing the address converted by the plurality of address conversion units, selectively outputs one of the address signals to the memory, and an output target by the multiplexer based on the identification information. And a switch for switching the address signal.
  • Another aspect of the present invention for achieving the above object is an apparatus for controlling memory access by a processor, which individually corresponds to a plurality of operating systems (OS) executed by a plurality of processors and is output from each processor.
  • a boot program for starting the OS is stored by converting the logical address specified in the access instruction into a physical address in a memory area associated with the OS executed by the processor in the memory.
  • the processor receives access instructions to the boot memory, and obtains the identification information of the multiple address converters that convert the logical address specified in the access instruction into the physical address of the boot memory and the processor that has output the access instruction Of the plurality of address conversion units.
  • As an address converting unit that performs an address conversion for processes instructions and a selection unit for selecting an address conversion unit corresponding to the OS executed by the processor which is specified based on the identification information.
  • Still another embodiment of the present invention that achieves the above object obtains identification information of a plurality of processors, memories, and processors that have performed memory access in a computer that implements a plurality of operating systems (OS).
  • An address conversion device that converts a logical address of an access destination in memory access from the processor into a physical address of a memory area associated with an OS executed by the processor specified based on identification information in the memory; Is provided.
  • the present invention by controlling the memory access by the processor by hardware, it is possible to realize system virtualization without giving a special mechanism to the software and suppressing an increase in overhead. .
  • FIG. 7 is a diagram illustrating a state in which a virtualization apparatus is set in the implementation example of the virtualization system illustrated in FIG. 6. It is a figure explaining the concept of the virtualization system by a host OS type. It is a figure explaining the concept of the hypervisor-type virtualization system.
  • FIG. 1 is a diagram for explaining the concept of system virtualization according to the present embodiment.
  • the virtualization system of this embodiment includes a processor (processor core) 10 and a virtualization apparatus 20 as hardware.
  • Each software (OS and application) 100 is executed by the processor 10 via the virtualization apparatus 20. That is, according to the present embodiment, each OS directly operates on hardware without using a hypervisor or a host OS.
  • the virtualization device 20 is a device that mainly controls memory access from the processor 10. That is, the virtualization apparatus 20 provides an individual address space for each OS. Under the control of the virtualization apparatus 20, each OS accesses an independent address space while physically using a common memory. In this way, the virtual environment in the present embodiment is realized. A specific configuration and function of the virtualization apparatus 20 will be described later.
  • FIG. 2 is a diagram illustrating a hardware configuration example in the virtualization system of the present embodiment.
  • the virtualization apparatus 20 is connected to a first local bus 51 and a second local bus 52.
  • a processor 10 and an eDRAM (Embedded DRAM) 12 are connected to the first local bus 51.
  • a peripheral device (Peripheral Island Node) 13 is connected to the first local bus 51, and a chip interlink 14 is provided.
  • FIG. 2 shows a plurality of (unspecified) processors 10. However, in the system that is the target of this embodiment, one or a plurality of processors 10 may be mounted.
  • a multi-core processor having a plurality of processor cores may be mounted.
  • boot memory controller 31 and the system memory controller 32 are connected to the second local bus 52.
  • the boot memory controller 31 controls a ROM (Read Only Memory) used as the boot memory 41
  • the system memory controller 32 controls a DRAM (Dynamic Random Access Memory) which is the system memory 42.
  • An eDRAM 33 is further connected to the second local bus 52.
  • an external device (not shown) connected to the system via each processor 10, peripheral device 13, and chip interlink 14 accesses the boot memory 41 and the system memory 42. In this case, the access is made via the virtualization device 20.
  • the processor 10 is connected to the first local bus 51 via the decoder 11.
  • the decoder 11 uses, as a control signal, unique information (such as a processor ID) for identifying the processor 10 and process identification information (Process ID etc.) is transmitted to the virtualization apparatus 20. Based on this control signal, the virtualization apparatus 20 identifies which processor 10 is accessing. Depending on the type of the processor 10, there is a processor 10 itself that outputs information corresponding to a control signal. In this case, the virtualization apparatus 20 only needs to identify the processor 10 and the process based on the information output from the processor 10, so there is no need to provide the decoder 11.
  • the hardware shown in FIG. 2 can be configured on a single semiconductor chip. That is, the virtualization system according to the present embodiment can be realized and provided as a SoC (System on chip). Further, instead of the SoC, each element (such as the processor 10 and the virtualization apparatus 20) may be provided as an apparatus configured as an individual electronic circuit.
  • SoC System on chip
  • FIG. 3 is a diagram illustrating a virtualization technique performed by the virtualization apparatus 20 according to the present embodiment.
  • the virtualization apparatus 20 receives an access command including a logical address (virtual address) indicating an access destination and a control signal in memory access from the processor 10.
  • the access is intended to write data
  • the data written to the memory is also received.
  • the virtualization apparatus 20 has a plurality of address conversion tables depending on the OS installed in the system.
  • the virtualization apparatus 20 converts the logical address of the access destination included in the access command into a physical address using a table corresponding to the OS specified based on the received control signal.
  • the virtualization apparatus 20 (address translation apparatus) transmits the access command subjected to the address translation to the boot memory controller 31 or the system memory controller 32.
  • the virtualization apparatus 20 transmits the received data to the boot memory controller 31 or the system memory controller 32 as it is.
  • the data read from the memory is returned to the processor 10 as it is.
  • specific processing that does not affect the purpose of access may be performed on the passing data. For example, when data is written to the memory, the received data is subjected to processing such as encryption or compression and transmitted to the memory, and when the data is read from the memory, the read data is decrypted or restored. Processing can be performed and transmitted to the processor 10.
  • FIG. 4 is a diagram illustrating a functional configuration example of the virtualization apparatus 20.
  • the virtualization apparatus 20 includes a plurality of address tables 21, a table selection unit 22, an I / O table 23, and an exclusive control unit 24.
  • the address table 21 and the I / O table 23 are composed of, for example, programmable logic and registers, and depend on the system configuration such as the type and number of OSs to be mounted, the capacity of the boot memory 41 and the system memory 42, and the like. Is set.
  • the address table 21 converts a logical address designated as an access destination in an access instruction from the processor 10 into a physical address of a memory (for example, the system memory 42) (a hardware conversion table (address conversion unit, conversion processing unit)). ).
  • a plurality of address tables 21 are prepared according to the OS installed in the system.
  • three address tables 21 (21a, 21b, 21c) are described corresponding to three types of OSs.
  • Each address table 21 is set to perform address conversion related to access to the boot memory 41 and address conversion related to access to the system memory 42.
  • boot areas (memory areas) associated with the respective OSs are set (in the illustrated example, three areas a1, a2, a3). Each area stores a boot program for starting the corresponding 0S.
  • memory spaces (memory areas) associated with the respective OSs are set (three memory spaces s1, s2, and s3 in the illustrated example). Each memory space is an area used for memory access by the corresponding OS. Therefore, for example, if the boot area a1 of the boot memory 41 and the memory space s1 of the system memory 42 are associated with a specific OS1, and the address table 21a is prepared for the OS1, for example, FIG. Thus, the address table 21a is set to perform address conversion of the boot area a1 and the memory space s1.
  • the table selection unit 22 selects the address table 21 corresponding to the accessed OS based on the control signal received from the processor 10 or the decoder 11 in accordance with the memory access by the OS.
  • the address of the access destination in the memory access is converted by the address table 21 selected by the table selection unit 22.
  • the I / O table 23 is a table that manages addresses assigned to external devices (input / output devices).
  • MMIO Memory-mapped I / O
  • the I / O table 23 is prepared.
  • one type of address may be assigned to the external device regardless of the OS. Therefore, in the present embodiment, unlike the address table 21, only one I / O table 23 is prepared.
  • the exclusive control unit 24 performs exclusive control so that when any OS accesses an external device, the other OS does not access the external device.
  • a common I / O table 23 is used for each OS to access an external device. Therefore, exclusive control is performed so that duplicate access requests are not made from a plurality of OSs to the same external device.
  • exclusive control related to input / output to / from an external device may be performed by a bus arbiter (not shown) provided in the second local bus 52. In this case, the virtualization apparatus 20 does not need to include the exclusive control unit 24.
  • the processor 10 includes four processors 10A to 10D of 32 bits (4 gigabytes (GB) memory space). As a memory, a 4 GB system memory 42 and a 756 kilobyte (KB) boot memory 41 are provided. The boot memory controller 31 and the system memory controller 32 are addressed with 34 bits. -Three types of OS are installed: OS1 to OS3. OS1 runs on processors 10A and 10B and uses 2 GB of system memory 42. An address table 21a is prepared for OS1. The OS 2 operates on the processor 10C and uses 1 GB of the system memory 42. An address table 21b is prepared for OS2. The OS 3 operates on the processor 10D and uses 1 GB of the system memory 42. An address table 21c is prepared for OS3.
  • OS1 runs on processors 10A and 10B and uses 2 GB of system memory 42.
  • An address table 21a is prepared for OS1.
  • the OS 2 operates on the processor 10C and uses 1 GB of the system memory 42.
  • An address table 21b is prepared for OS2.
  • FIG. 5 is a diagram showing the memory map of each OS, the allocation of the memory space in each OS to the system memory 42, and the allocation of the boot area in each OS to the boot memory 41 in this implementation example.
  • one cell represents a 256 KB area.
  • the memory space of the system memory 42 is allocated to addresses from 0x0000_0000 to 0x7FFF_FFFF. Also, MMIO is assigned to addresses from 0x8000_0000 to 0x8FFF_FFFF. The boot memory 41 is assigned to addresses from 0xF000_0000 to 0xFFFF_FFFF.
  • addresses from 0x0000_0000 to 0x3FFF_FFFF are assigned to the memory space of the system memory 42.
  • MMIO is assigned to addresses from 0x8000_0000 to 0x8FFF_FFFF
  • boot memory 41 is assigned to addresses from 0xF000_0000 to 0xFFFF_FFFF.
  • the memory space is allocated to the system memory 42 by assigning the OS1 memory space to addresses from 0x0000_0000 to 0x7FFF_FFFF, the OS2 memory space to addresses from 0x8000_0000 to 0xBFFF_FFFF, and the OS3 memory space to 0xC000_0000. To 0xFFFF_FFFF.
  • the boot area is assigned to the boot memory 41 by assigning the OS1 boot area to addresses from 0x0000_0000 to 0x0FFF_FFFF, the OS2 boot area to addresses from 0x1000_0000 to 0x1FFF_FFFF, and the OS3 boot area from 0x2000_0000. To 0x2FFF_FFFF.
  • FIG. 6 is a diagram showing a configuration of an example of implementation of the virtualization system of this embodiment.
  • a switch box 22 a and a multiplexer 22 b are provided as the table selection unit 22.
  • the multiplexer 22b receives an address signal (a signal indicating the converted address) output from each address table 21, and outputs one of them.
  • the switch box 22a controls the multiplexer 22b so that the address signal output from the address table 21 corresponding to the processor 10 is output according to the processor 10 specified by the control signal received from the decoder 11. .
  • an IP block control bus (not shown) is used as a bus for the processor 10 to set the switch box 22a and the address table 21.
  • exclusive control related to input / output to / from an external device is performed by a bus arbiter provided in the second local bus 52. Therefore, the exclusive control unit 24 is not provided in the virtualization apparatus 20.
  • the processor 10A and the processor 10B are configured as a symmetric multiprocessor (SMP), the same OS 1 operates, and a common address table 21a is used for address conversion. Further, the OS 10 operates in the processor 10C, and the address table 21b is used for address conversion. The processor 10D operates OS3 and uses the address table 21c for address conversion.
  • SMP symmetric multiprocessor
  • each of the processors 10A to 10D is provided with decoders 11A to 11D. However, as described above, when the processors 10A to 10D themselves output control signals, the decoders 11A to 11D are not necessary.
  • the boot memory 41 has a boot area a1 (0x1D000_0000-0x1DFFF_FFFF) for OS1, a boot area a2 (0x1E000_0000-0x1EFFF_FFFF) for OS2, and a boot area a3 (0x1F000_0000-0x1FFFF_FFFF) for OS3.
  • the addresses of the boot areas a1, a2, and a3 of the boot memory 41 are represented by a 34-bit system address space.
  • the system memory 42 has a memory space s1 for OS1 (0x0000_0000-0x7FFF_FFFF), a memory space s2 for OS2 (0x8000_0000-0xBFFF_FFFF), and a memory space s3 for OS3 (0xC000_0000-0xFFFF_FFFF).
  • FIG. 6 shows the initial state of the system configured as described above (the state in which the switch box 22a configuring the table selection unit 22 and the address tables 21a to 21c are not set for virtualization). Show. In this initial state, the virtualization apparatus 20 of the present system is set so that the processor 10A accesses the corresponding boot area of the boot memory 41 and reads and executes the boot program.
  • the switch box 22a is set to select the address table 21a in accordance with a control signal from the decoder 11A of the processor 10A (see the description of the broken line in the figure).
  • the address table 21 a is set with addresses (“ROM ADD” and “ROM Mask”) of the boot area a 1 of the boot memory 41.
  • Other settings of the switch box 22a, the setting of the address (“Sys ADD” and “Sys Mask”) of the memory space s1 of the system memory 42 in the address table 21a, and the setting of the address tables 21b and 21c are made. Absent.
  • the switch box 22a controls the multiplexer 22b by the control signal from the decoder 11A to select the address table 21a. Then, in accordance with the setting of the address table 21a, the processor 10A accesses the boot area a1 of the boot memory 41 and executes the boot program. By executing this boot program, the setting of the switch box 22a, the setting of the address table 21a related to the memory space s1 corresponding to the processor 10A of the system memory 42, and the setting related to the other processors 10B and 10C are performed. .
  • FIG. 7 is a diagram illustrating how the above-described various settings are performed in the implementation example of the virtualization system illustrated in FIG. 6.
  • the switch box 22a The address table 21a is selected by the control signal from the decoder 11A, The address table 21a is selected by the control signal from the decoder 11B, The address table 21b is selected by the control signal from the decoder 11C, The address table 21c is set to be selected by a control signal from the decoder 11D (see the description of the broken line in the figure).
  • the address table 21a is set to use the address 0x0000_0000-0x7FFF_FFFF of the memory space s1 of the system memory 42.
  • a start address (“Sys ADD”) and mask data (“Sys Mask”) for setting a data range are set.
  • the address can be converted by obtaining a logical product (AND) of the address (logical address) included in the access instruction output from the processor 10A, the start address, and the mask data.
  • the address table 21b for OS2 the address of the boot area a2 in the boot memory 41 and the address of the memory space s2 in the system memory 42 are set.
  • the address table 21c for OS3 the address of the boot area a3 in the boot memory 41 and the address of the memory space s3 in the system memory 42 are set.
  • the processor 10A can use the system memory 42. Therefore, the OS 1 is booted by copying the boot program to the system memory 42 or the like. Next, the reset of the processor 10B is released. As described above, since the processor 10B and the processor 10A are SMPs in this implementation example, the processor 10B uses the same address table 21a as the processor 10A.
  • the reset of the processor 10C is released.
  • the address table 21b for OS2 operating on the processor 10C has been set for both the address of the boot area a2 in the boot memory 41 and the address of the memory space s2 in the system memory 42. Therefore, the processor 10C boots the OS2 as usual.
  • the reset of the processor 10D is released.
  • the address table 21c for OS3 operating in the processor 10D has been set for both the address of the boot area a3 in the boot memory 41 and the address of the memory space s3 in the system memory 42. Therefore, the processor 10D boots the OS 3 as usual.
  • the switch box 22a and the address tables 21a, 21b, and 21c are set, and the entire virtualization system is activated.
  • the processor 10 that first cancels the reset may be determined in advance by hardware settings (see FIG. 6), and is not limited to a specific processor 10.
  • the setting operation at the time of starting allows each processor 10 to access the corresponding area of the memory (boot memory 41 and system memory 42), and each OS operating on each processor 10 uses the system memory 42. It is only necessary to be bootable, and the procedure is not limited to the above implementation example.
  • the virtualization apparatus 20 performs address conversion (logical logic) so as to use a memory area allocated in advance for each OS. Address to physical address). Therefore, each OS can operate in the virtual environment provided by the present embodiment without performing design or modification on the premise that the OS is used in the virtual system.
  • this embodiment since the virtualization apparatus 20 performs address conversion in memory access, this embodiment does not require a mechanism for realizing a virtual environment by software such as a host OS or a hypervisor. Therefore, the load on the processor can be reduced.

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)

Abstract

プロセッサによるメモリ・アクセスをハードウェアで制御することにより、ソフトウェアに特別な仕組みを持たせることなく、かつオーバーヘッドの増大を抑制しながら、システムの仮想化を実現する。 プロセッサ10によるメモリ・アクセスを制御する装置において、複数のプロセッサ10により実行される複数のOSに個別に対応し、各プロセッサ10からのメモリ・アクセスにおけるアクセス先の論理アドレスをメモリ41、42における物理アドレスに変換する複数のアドレス・テーブル21と、メモリ・アクセスを行ったプロセッサ10の識別情報を取得し、複数のアドレス・テーブル21のうち当該メモリ・アクセスに対するアドレス変換を実行するアドレス・テーブル21として、識別情報に基づいて特定されたプロセッサ10により実行されるOSに対応するアドレス・テーブル21を選択するテーブル選択部22と、を備える。

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 (9)

  1.  プロセッサによるメモリ・アクセスを制御する装置において、
     複数のプロセッサにより実行される複数のOS(Operating System)に個別に対応し、各プロセッサからのメモリ・アクセスにおけるアクセス先の論理アドレスをメモリにおける物理アドレスに変換する複数のアドレス変換部と、
     メモリ・アクセスを行ったプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該メモリ・アクセスに対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるOSに対応するアドレス変換部を選択する選択部と、
    を備える、装置。
  2.  前記アドレス変換部は、前記プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、前記メモリにおける当該プロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換する、請求項1に記載の装置。
  3.  前記アドレス変換部は、OSを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する、請求項1または請求項2に記載の装置。
  4.  前記アドレス変換部は、プログラム可能なロジックおよびレジスタで構成される、請求項1乃至請求項3のいずれかに記載の装置。
  5.  前記選択部は、
     複数の前記アドレス変換部により変換されたアドレスを表すアドレス信号を受け付けて、当該アドレス信号の一つを選択的に前記メモリへ出力するマルチプレクサと、
     前記識別情報に基づいて前記マルチプレクサによる出力対象となる前記アドレス信号を切り替えるスイッチと、
    を備える、請求項1乃至請求項4のいずれかに記載の装置。
  6.  プロセッサによるメモリ・アクセスを制御する装置において、
     複数のプロセッサにより実行される複数のOS(Operating System)に個別に対応し、各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換し、OSを起動するためのブート・プログラムが格納されたブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する複数のアドレス変換部と、
     アクセス命令を出力したプロセッサの識別情報を取得し、前記複数のアドレス変換部のうち当該アクセス命令に対するアドレス変換を実行するアドレス変換部として、当該識別情報に基づいて特定されたプロセッサにより実行されるOSに対応するアドレス変換部を選択する選択部と、
    を備える、装置。
  7.  複数のOS(Operating System)を実装するコンピュータにおいて、
     複数のプロセッサと、
     メモリと、
     メモリ・アクセスを行った前記プロセッサの識別情報を取得し、当該プロセッサからの当該メモリ・アクセスにおけるアクセス先の論理アドレスを、前記メモリにおける当該識別情報に基づいて特定されたプロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換するアドレス変換装置と、
    を備える、コンピュータ。
  8.  前記アドレス変換装置は、
     複数の前記OSに個別に対応し、前記各プロセッサから出力されたアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、メモリにおける当該プロセッサにより実行されるOSに対応付けられたメモリ領域の物理アドレスに変換する複数の変換処理部と、
     前記識別情報を取得し、前記複数の変換処理部のうち当該メモリ・アクセスに対するアドレス変換を実行する変換処理部として、当該識別情報に基づいて特定されたプロセッサにより実行されるOSに対応付けられた変換処理部を選択する選択部と、
    を備える、請求項7に記載のコンピュータ。
  9.  OSを起動するためのブート・プログラムが格納されたブート用メモリをさらに備え、
     前記アドレス変換装置は、前記ブート用メモリに対する前記プロセッサによるアクセス命令を受け付け、当該アクセス命令において指定された論理アドレスを、当該ブート用メモリの物理アドレスに変換する、請求項8に記載のコンピュータ。
PCT/JP2011/070106 2010-11-02 2011-09-05 メモリ・アクセスを制御する装置およびコンピュータ WO2012060148A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012541771A JP5466768B2 (ja) 2010-11-02 2011-09-05 メモリ・アクセスを制御する装置およびコンピュータ
US13/287,298 US20120110298A1 (en) 2010-11-02 2011-11-02 Memory access control device and computer

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010-246614 2010-11-02
JP2010246614 2010-11-02

Publications (1)

Publication Number Publication Date
WO2012060148A1 true WO2012060148A1 (ja) 2012-05-10

Family

ID=46024270

Family Applications (1)

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

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016541072A (ja) * 2013-12-17 2016-12-28 華為技術有限公司Huawei Technologies Co.,Ltd. リソース処理方法、オペレーティング・システム、およびデバイス

Families Citing this family (4)

* 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
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2008021252A (ja) * 2006-07-14 2008-01-31 Hitachi Ltd 計算機システム及びアドレス割当方法
JP2008097173A (ja) * 2006-10-10 2008-04-24 Renesas Technology Corp データプロセッサ

Family Cites Families (6)

* 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> 仮想計算機システム
US6567912B1 (en) * 2000-03-31 2003-05-20 Motorola, Inc. Method and apparatus for robust initialization of devices
JP2005275629A (ja) * 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
JP4233492B2 (ja) * 2004-06-02 2009-03-04 富士通マイクロエレクトロニクス株式会社 アドレス変換装置
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US8108650B2 (en) * 2009-05-29 2012-01-31 Apple Inc. Translation lookaside buffer (TLB) with reserved areas for specific sources

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2008021252A (ja) * 2006-07-14 2008-01-31 Hitachi Ltd 計算機システム及びアドレス割当方法
JP2008097173A (ja) * 2006-10-10 2008-04-24 Renesas Technology Corp データプロセッサ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016541072A (ja) * 2013-12-17 2016-12-28 華為技術有限公司Huawei Technologies Co.,Ltd. リソース処理方法、オペレーティング・システム、およびデバイス
US10180843B2 (en) 2013-12-17 2019-01-15 Huawei Technologies Co., Ltd. Resource processing method and device for a multi-core operating system

Also Published As

Publication number Publication date
US20120110298A1 (en) 2012-05-03
JPWO2012060148A1 (ja) 2014-05-12
JP5466768B2 (ja) 2014-04-09

Similar Documents

Publication Publication Date Title
JP5870206B2 (ja) 効率的なメモリ及びリソース管理
US7509391B1 (en) Unified memory management system for multi processor heterogeneous architecture
JP6355114B2 (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
JP5241737B2 (ja) プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置
EP1805629B1 (en) System and method for virtualization of processor resources
JP5412504B2 (ja) マルチスレッドプロセッサ及びデジタルテレビシステム
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
KR100515229B1 (ko) 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템
US20050235083A1 (en) Computer system
JP5466768B2 (ja) メモリ・アクセスを制御する装置およびコンピュータ
JP2016541072A5 (ja)
JP2013515983A (ja) 仮想化環境においてi/o処理を行う方法および装置
EP2951705A1 (en) Assigning processors to memory mapped configuration
JP2015094966A (ja) 情報処理装置、制御方法、および制御プログラム
JP2008021252A (ja) 計算機システム及びアドレス割当方法
JP6242502B2 (ja) 仮想計算機システムの制御方法及び仮想計算機システム
JP2019057162A (ja) 仮想化システム、仮想化プログラム、及び、記憶媒体
JP2009296195A (ja) 複数のcpuコアを備えたfpgaを用いた暗号装置
US9361124B2 (en) Computer system and startup method
EP1067461B1 (en) Unified memory management system for multi process heterogeneous architecture
JP2007148621A (ja) 計算機システム
JP7421480B2 (ja) 寿命平均化のためのブート時の物理コア割り当てに関する論理的な疑似ランダム
CN113835845B (zh) 一种cpu核绑定的内存硬分区能力实现方法及系统
JP2007102544A (ja) デジタルシグナルプロセッサシステムおよびそのブート方法。

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11837801

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012541771

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11837801

Country of ref document: EP

Kind code of ref document: A1