JP5151559B2 - プログラム実行システム - Google Patents

プログラム実行システム Download PDF

Info

Publication number
JP5151559B2
JP5151559B2 JP2008050953A JP2008050953A JP5151559B2 JP 5151559 B2 JP5151559 B2 JP 5151559B2 JP 2008050953 A JP2008050953 A JP 2008050953A JP 2008050953 A JP2008050953 A JP 2008050953A JP 5151559 B2 JP5151559 B2 JP 5151559B2
Authority
JP
Japan
Prior art keywords
processor
inter
shared
memory
processors
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
JP2008050953A
Other languages
English (en)
Other versions
JP2009211167A (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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2008050953A priority Critical patent/JP5151559B2/ja
Publication of JP2009211167A publication Critical patent/JP2009211167A/ja
Application granted granted Critical
Publication of JP5151559B2 publication Critical patent/JP5151559B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明は、組み込みヘテロマルチプロセッサシステム上でのプロセッサ間で連携動作する中間コードを用いるアプリケーションプログラムを高速に実行可能とするプログラム実行システムに関する。
近年、情報処理装置を組み込んだ電子機器の多様化及びそれら電子機器間を通信接続するネットワーク化に伴い、多数の異種プロセッサが開発されると共に、ネットワーク化もあらゆる電子機器間で実現されるようになってきた。多様化した電子機器の開発において、プロセッサに依存したプログラム開発を行うのでは開発者の負担が大きい。そのため、ハードウェアやOS(Operation System)に依存しない仮想マシンを構築し、ハードウェアが解釈するネイティブコードより抽象度の高い中間コードで表現されるプログラムを仮想マシン上で実行することで、ネットワークを介してプログラムの授受を可能とし、かつプロセッサ毎のプログラム開発の負担を低減することができるようになった。
更に、仮想マシンを備えないプロセッサへネットワークを介してプログラムを転送するために、仮想マシンを備えたプロセッサが仮想マシンを備えないプロセッサ向けのネイティブコードに変換することが提案されている(例えば、特許文献1及び特許文献2参照。)。また、プロセッサ毎のネイティブコードへ変換する負荷を低減するために、各プロセッサがネイティブトランスレータを備えることが提案されている(例えば、特許文献3参照。)。
特開2000−172509号公報 特開2005−108126号公報 特表2003−508844号公報
従来の疎結合のヘテロジニアスマルチプロセッサによるシステム1は、例えば図1に示すように、異なるアーキテクチャを持つプロセッサA11及びB15を備え、プロセッサA11にはプロセッサA専用LAN−IF12とプロセッサA専用メモリ13とが各々バスBで接続され、同様にプロセッサB15にはプロセッサB専用LAN−IF16とプロセッサB専用メモリ17とが各々バスで接続される。プロセッサA及びB間のデータ転送は、例えば、LAN19を介して行われる。
また、このようなシステム1は、例えば図2に示すような階層構造を成す。プロセッサA専用メモリ13には、アプリケーションプログラム、アプリケーションデータ、プロセッサA用実行環境、RMI(Remote Method Invocation)、プロセッサA用JIT(Just In Time)コンパイラ、LANドライバなどがプロセッサA用メモリ領域13aに格納されている。プロセッサB専用メモリ17においても同様に、アプリケーションプログラム、アプリケーションデータ、プロセッサB用実行環境、RMI、プロセッサB用JITコンパイラ、LANドライバなどがプロセッサB用メモリ領域17aに格納されている。アプリプログラムを上位層としLANドライバを下位層とした階層構造に従った機能構成を成す。各プロセッサA11及びプロセッサB15は、それぞれのプロセッサA専用メモリ13及びプロセッサB専用メモリ17からコード又はデータを読み出して所定機能を実行する。
アプリケーションプログラムがJava(登録商標)言語によるプログラムである場合、図2に示すプロセッサA用実行環境及びプロセッサB用実行環境は、図3に示すようにJava(登録商標)VM(Virtual Machine)として機能する。Java(登録商標)VMは、クラスローダー、クラス・キャッシュ機能、ヒープメモリ管理機能、ガーベジ・コレクション(GC)機能を備え、Java(登録商標)プログラムの実行時には、PCレジスタ、メソッド領域、ヒープ領域、Java(登録商標)VMスタック、実行時定数プール、Nativeメソッドスタック等の領域がメモリ内に展開される。メソッド領域にはクラスローダーによってクラスがロードされ、ヒープ領域にはヒープメモリ管理機能によってクラスがインスタンス化したオブジェクトが格納される。Java(登録商標)VMスタックには、関数が1つ呼ばれるたびにフレームがスタックされ、フレーム内にはローカル変数及びオペランドスタックの領域が構成される。このような実行環境にて実行されるプログラムを中間コードで表現されたプログラムという。
同種のプロセッサ間で、かつ対称型マルチプロセシング(Symmetric Multi-Processing(SMP))ならば、POSIX(Portable Operating System Interface for UNIX(登録商標))スレッドによってスレッド化してメモリを共有できるが、図1に示すようなシステム1では、異種のプロセッサA11及びB15間ではスレッド化してメモリを共有することができない。
Java(登録商標)言語、C#言語などのプロセッサ非依存の中間コードによる処理では、複数のJava(登録商標)VM間のメモリ空間は共有されない仕組みであるため、プロセッサAがプロセッサBのJava(登録商標)VMが管理するメモリにはアクセスできない。
ヘテロジニアスマルチプロセッサによるシステム1での負荷分散のために各プロセッサ用の実行形式モジュールを持たせると、アプリケーションプログラムのROM容量が多く必要となる。また、異種プロセッサA11及びB15毎にプログラムを作成し管理するのは、開発者にとって負担となる。
ヘテロジニアスマルチプロセッサ間のデータ転送にLAN通信層を使うとデータコピーが多くなり内部バス間転送より時間を要する。また、Java(登録商標)やC#言語などで書かれたアプリケーションプログラムを用いた場合、ヘテロジニアスマルチプロセッサ間では、RMIなどのようにリモートオブジェクトとして登録して、LAN等を介して別のJava(登録商標)のオブジェクトのメソッドを呼ぶ仕組みであるため、ヘテロジニアスマルチプロセッサ間のLAN等を用いた(TCP/IPによる)データ転送には多くのデータ転送回数が必要になる。そのため、ヘテロジニアスマルチプロセッサを1チップ化したとしても、それ自身の性能を生かすことができないという問題があった。
更に、非対称型マルチプロセシング(Asymmetric Multi-Processing(AMP))での異種プロセッサ上のOSからは、異種PE間での共有ファイルシステムをNFSなどのように片方のOSに依頼するなどによって行われるため、高速にアクセスできない。
よって、本発明の目的は、ヘテロジニアスマルチプロセッサでアプリケーションプログラムを共通化してプログラム開発の負荷軽減を可能とし、ヘテロジニアスマルチプロセッサ上で負荷分散できるようにしつつ、ヘテロマルチプロセッサ間のデータ転送を削減することで、ヘテロジニアスマルチプロセッサ間で協調動作するプログラムを高速化することを提供することである。
上記課題を解決するため、本発明は、複数のプロセッサを含み、前記複数のプロセッサ上で動作可能な中間コードを実行するプログラム実行環境を備えたプログラム実行システムであって、前記複数のプロセッサ夫々に専用の複数のプロセッサ専用メモリと、のプロセッサ間で共有される前記中間コードによって操作される共有オブジェクトを格納するプロセッサ間共有メモリとを備え、前記複数のプロセッサの各々は、前記中間コードを実行するプロセッサ専用の実行環境と、前記共有オブジェクトを指定する名前と前記プロセッサ間共有メモリ内の該共有オブジェクトの実体とを対応に基づいて、前記複数のプロセッサ専用メモリの各々と該プロセッサ間共有メモリ間にて該共有オブジェクトを読み出すルーチン及び書き込むルーチンを呼び出すためのAPIによってプロセッサ間中間コード実行環境を提供するプロセッサ間共有メモリ用ライブラリとを有するように構成される。
このようなプログラム実行システムにおいて、前記プロセッサ間共有メモリは、前記共有オブジェクトの名前と該共有オブジェクトの実体とを対応させた対応テーブルを備え、前記各プロセッサは、前記共有オブジェクトの名前と該共有オブジェクトの実体との対応を前記対応テーブルに書き込むことにより該共有オブジェクトを登録し、また該登録された共有オブジェクトを該対応テーブルから削除することにより該共有オブジェクトを削除する登録削除機能を実行するように構成してもよい。
本願発明は、ヘテロジニアスマルチプロセッサでアプリケーションプログラムを共通化してプログラム開発の負荷軽減を可能とし、ヘテロジニアスマルチプロセッサ上で負荷分散できるようにしつつ、ヘテロマルチプロセッサ間のデータ転送を削減することで、ヘテロジニアスマルチプロセッサ間で協調動作するプログラムを高速化することができる。
以下、本発明の実施の形態を図面に基づいて説明する。
図4は、本発明の第一実施例に係る密結合のヘテロジニアスマルチプロセッサによるシステム例を示す図である。図4において、システム100は、密結合されたヘテロジニアスマルチプロセッサのシステムであり、プロセッサA21と、プロセッサA専用LAN−IF22と、プロセッサA専用メモリ23と、プロセッサB25と、プロセッサB専用LAN−IF26と、プロセッサB専用メモリ27と、プロセッサ間共有メモリ31とを有し、それらはバス30で互いに接続される。プロセッサA21とプロセッサB25とは異種プロセッサであり、ハードウェアに依存しない中間コードで書かれたアプリケーションプログラムを実行できる実行環境を提供する。例えば、中間コードはJava(登録商標)言語であり、実行環境はJava(登録商標)VMである。
プロセッサA専用LAN−IF22とプロセッサA専用メモリ23とは、プロセッサA21によってのみ使用されるデバイスである。同様に、プロセッサB専用LAN−IF26と、プロセッサB専用メモリ27とは、プロセッサB25によってのみ使用されるデバイスである。
プロセッサ間共有メモリ31は、プロセッサA21とプロセッサB25との間でアクセス可能な共有メモリである。プロセッサA21は、プロセッサ間共有メモリ31をアクセスすることによって、プロセッサA21とプロセッサB25とで共有に使用されるオブジェクトをプロセッサ間共有メモリ31からプロセッサA専用メモリ23へと読み込んだり、プロセッサA専用メモリ23からプロセッサ間共有メモリ31へと書き込んだりする操作を高速に行うことができる。同様に、プロセッサB25は、プロセッサ間共有メモリ31をアクセスすることによって、プロセッサA21とプロセッサB25とで共有に使用されるオブジェクトをプロセッサ間共有メモリ31からプロセッサB専用メモリ27へと読み込んだり、プロセッサB専用メモリ27からプロセッサ間共有メモリ31へと書き込んだりする操作を高速に行うことができる。
プロセッサ間共有メモリ31は、図5に示すようにメモリ領域を構成する。図5は、プロセッサ間共有メモリの領域構成例を示す図である。
図5において、プロセッサ間共有メモリ31は、主に、プロセッサ間共有メモリ領域32とを備える。更に、プロセッサ間共有メモリ領域32は、プロセッサ間ヒープ領域33と、プロセッサ間排他制御用領域34と、プロセッサ間共有オブジェクト名テーブル35とを備える。
プロセッサ間ヒープ領域33は、プロセッサ間共有オブジェクト名テーブル35に登録されているオブジェクトが格納され、プロセッサA21又はプロセッサB25によってオブジェクトが書き込まれたり、読み出されたりする領域である。プロセッサ間排他制御用メモリ領域34では、プロセッサ間ヒープ領域33へのアクセスに係る排他制御を行うためのプロセッサ間セマフォ34a又はプロセッサ間ロック34bが管理される。
プロセッサ間共有メモリ31に、プロセッサ間排他制御用領域34を備えて、各プロセッサA21及びプロセッサB25からアトミックアクセスさせることで、LAN−IFやLANドライバを経由しないで、排他制御を行うことでプロセス間共有メモリ領域32を使用するときの排他制御を高速化することができる。
図6は、ヘテロジニアスマルチプロセッサによるシステムの構成例を示す図である。図6に示すシステム100では、プロセッサA専用メモリ23には、アプリケーションプログラム232と、アプリケーションデータ233と、プロセッサA用実行環境234と、プロセッサA用JIT(Just In Time)コンパイラ235と、プロセッサ間共有メモリ用ライブラリ236とがプロセッサA用メモリ領域231に格納され、プロセッサB専用メモリ27には、アプリケーションプログラム272と、アプリケーションデータ273と、プロセッサB用実行環境274と、プロセッサB用JITコンパイラ275と、プロセッサ間共有メモリ用ライブラリ276とがプロセッサB用メモリ領域271に格納されている。アプリプログラムを上位層とし実行環境の一部及びJITコンパイラを下位層とした階層構造に従った機能構成を成す。
各プロセッサA21及びプロセッサB25は、それぞれのプロセッサA専用メモリ23及びプロセッサB専用メモリ27からコード又はデータを読み出して所定機能を実行する。
プロセッサ間共有メモリ用ライブラリ236とプロセッサ間共有メモリライブラリ276とは、図7に示すようにプロセッサ間共有メモリ管理機能36及びプロセッサ間排他制御機能37とを備え、それらを用いて共有メモリ管理及び共有メモリ排他制御とを提供する種々ルーチンを備えると共に、それらルーチンを呼び出すためのAPI(Application Program Interface)を提供する。
プロセッサ間共有メモリ管理機能36は、自身のプロセッサA21又はプロセッサB25からのアクセスに応じて、プロセッサ間共有メモリ31のプロセッサ間ヒープ領域33への割り当て及び開放等のメモリ管理を行う。プロセッサ間排他制御機能37は、自身のプロセッサA21又はプロセッサB25からのプロセッサ間共有メモリ31のプロセッサ間ヒープ領域33へのアクセスに対して排他制御を行うためには、プロセッサ間ヒープ領域33の全体に対して1以上のプロセッサ間セマフォ34a又はプロセッサ間ロック34bをプロセッサ間排他制御用領域34に設ける。
プロセッサ間共有メモリ用ライブラリ236はプロセッサA用実行環境234にAPIを提供し、プロセッサA用実行環境234はプロセッサ間共有メモリ用ライブラリ236から提供される共有メモリ管理及び共有メモリ排他制御を実行する種々ルーチンを用いて、プロセッサA21によるプロセッサ間共有メモリ31へのアクセスを高速に行うことを可能とする。同様に、プロセッサ間共有メモリライブラリ276はプロセッサB用実行環境274にAPIを提供し、プロセッサB用実行環境274はプロセッサ間共有メモリライブラリ276から提供される共有メモリ管理及び共有メモリ排他制御を実行する種々ルーチンを用いて、プロセッサB21によるプロセッサ間共有メモリ31へのアクセスを高速に行うことを可能とする。
プロセッサ間共有メモリ領域32では、プロセッサ間共有メモリ用ライブラリ236とプロセッサ間共有メモリライブラリ276とが夫々のプロセッサA用実行環境234とプロセッサB用実行環境274とに提供する種々ルーチンによって、プロセッサ間ヒープ領域33と、プロセッサ間排他制御用領域34と、プロセッサ間共有オブジェクト名テーブル35とがプロセッサA21とプロセッサB25とに共有可能となる。
図8は、各プロセッサ用実行環境とプロセッサ間共有メモリ用ライブラリとによる機能構成を示す図である。図8において、例えば、各プロセッサ用実行環境234及び274がJava(登録商標)VM54を提供する場合、Java(登録商標)VM54は、クラスファイルをロードしてメソッド領域63に格納するクラスローダー54aと、クラスをキャッシュして高速に実行するクラス・キャッシュ機能54bと、ヒープメモリ管理機能54cと、ヒープ領域64の割当及び開放を管理するガーベジ・コレクション(GC)機能54dとを備える。Java(登録商標)VM54は、実行時データ領域61に示される。
実行時データ領域61には、Java(登録商標)VM54によって、実行中の命令アドレスを示すプログラムカウンタとして使用されるPCレジスタ62と、クラスファイルが格納されるメソッド領域63と、クラスがインスタンス化されたオブジェクトを格納するヒープ領域64と、一つのスレッドを実行するための各メソッドに対応するフレームを格納するJava(登録商標)VMスタック65と、各クラスで使用される定数を格納する実行時定数プール66と、ネイティブコードのメソッドを実行するためのNativeメソッドスタック67とが展開される。
このように、システム100の構成において、プロセッサA21側でプロセッサA21専用のJava(登録商標)プログラムを実行する場合には、プロセッサA用実行環境234は、プロセッサA専用メモリ23を用いてJava(登録商標)VM54を提供する。プロセッサB25側でプロセッサB25専用のJava(登録商標)プログラムを実行する場合においても同様である。
プロセッサA21側のアプリケーションプログラム232及びプロセッサB25側のアプリケーションプログラム272がプロセッサ間で共有される共有クラスからインスタンス化したプロセッサ間共有オブジェクトを実行するために、各プロセッサ用実行環境234及び274は、夫々のプロセッサ間共有メモリ用ライブラリ236及び237を用いて、更にプロセッサ間中間コード実行環境70が提供される。プロセッサ間中間コード実行環境70において、共有メモリ31と専用メモリ231又は271(以下、単に専用メモリと言う)間のプロセッサ間データ転送機能79が行われる。
プロセッサ間中間コード実行環境70は、プロセッサ間共有メモリ・クラス71と、プロセッサ間共有中間コードのヒープメモリ72と、プロセッサ間共有オブジェクト操作機能73と、プロセッサ間共有クラスローダー74と、プロセッサ間共有クラス・キャッシュ機能75とを有する。
プロセッサ間共有メモリ・クラス71は、インスタンス化されるとプロセッサ間共有オブジェクトとなるプロセッサ間共有クラスである。プロセッサ間共有中間コードのヒープメモリ72は、プロセッサ間共有メモリ31のプロセッサ間共有メモリ領域32内にあるプロセッサ間ヒープ領域33をプロセッサ間共有メモリ管理機能36を用いて制御するための機能を備え、Java(登録商標)VM54のヒープメモリ管理機能54c及びガーベジ・コレクション(GC)機能54dとは別にプロセッサ間共有メモリ31用として、ヒープメモリ操作・管理機能72aとプロセッサ間共有ガーベジ・コレクション(GC)機能72bとを有する。
プロセッサ間共有オブジェクト操作機能73は、プロセッサ間共有メモリ31が備えるプロセッサ間共有メモリ管理機能36及びプロセッサ間排他制御機能37と、プロセッサ間データ転送機能79とを呼び出すルーチンを使用して共有オブジェクトの操作を行う。これらルーチンは、プロセッサ間共有ライブラリ236及び276によって提供される。
プロセッサ間共有オブジェクト操作機能73は、専用メモリ又はプロセッサ間共有メモリ31から読み出すためのリード73aと、専用メモリ又はプロセッサ間共有メモリ31へと書き込むためのライト73bと、プロセッサ間共有オブジェクトを登録するための登録73cと、登録したプロセッサ間共有オブジェクトを削除するための削除73dと、図5に示すプロセッサ間共有オブジェクト名テーブル35を用いてプロセッサ間共有オブジェクトとその名前とを対応させるオブジェクト対応機能73fとを有する。
プロセッサ間共有クラスローダー74は、プロセッサ間共有クラスをロードするための機能であり、Java(登録商標)VM54のクラスローダー54aとは別に備えられる。プロセッサ間共有クラス・キャッシュ機能75とは、プロセッサ間共有クラスをキャッシュするための機能であり、Java(登録商標)VM54のクラス・キャッシュ機能54bとは別に備えられる。
プロセッサ間共有メモリ31には、図5及び図6で説明したように、プロセッサ間共有メモリ管理機能36と、プロセッサ間排他制御機能37とを有する。プロセッサ間共有メモリ管理機能36にはプロセッサ間共有オブジェクト33aに対するプロセッサ間ヒープ領域33のメモリ割り当て/開放部36aが備えられる。
プロセッサ間データ転送機能79は、プロセッサ間共有メモリ31と専用メモリ間のデータ転送をLAN−IFやLANドライバを用いることなく実現する機能であり、引数/戻り値のデータ転送部79a及びデータ転送を高速に行うための高速データ転送部79bとを備える。
上述したようなプロセッサ間中間コード実行環境70及びプロセッサ間データ転送機能79が実現する種々の機能は、各プロセッサ間共有メモリライブラリ236及び276においてルーチン化され提供される。後述されるようにDMA(Direct Memory Access)コントローラ(DMAC)を備えるシステム構成の場合、DMACのDMA転送機能を用いたより高速なデータ転送を行うルーチンが提供される。
図9は、本発明の第二実施例に係る密結合のヘテロジニアスマルチプロセッサによるシステム構成例を示す図である。図9に示すシステム1002は、図4に示すシステム1000における構成に加えてDMAC41を備える。システム1002は、更に排他制御機構42を備えるようにしてもよい。
DMAC41を使用して高速にデータ転送を行う場合、高速データ転送部79b(図8)によってプロセッサ間共有メモリ31からプロセッサA専用メモリ23又はプロセッサB専用メモリ27へと、又は、プロセッサA専用メモリ23又はプロセッサB専用メモリ27からプロセッサ間共有メモリ31へとプロセッサ間共有オブジェクトに係る情報が転送される。プロセッサ間共有オブジェクトに係る情報は、アプリケーションプログラム232又は272のプロセッサ間共有オブジェクトへの入力データ、プロセッサ間共有オブジェクトを実行した結果データ等である。高速データ転送部79bは、プロセッサ間共有メモリ用ライブラリ236及び276が提供するプロセッサ間データ転送機能79にDMAC41にDMAデータ転送を実行させるためのルーチンとして組み込まれる。
また、図5に示すプロセッサ間共有メモリ31のプロセッサ間排他制御機能37とプロセッサ間排他制御用領域34とを、別のハードウェアとして構成される排他制御機構42に備えるようにしてもよい。この場合、プロセッサ間共有メモリ用ライブラリ236及び276が提供するプロセッサ間共有オブジェクト操作機能73(図8)に、排他制御機構42に備えられたプロセッサ間排他制御機能を実行するルーチンが組み込まれる。従って、プロセッサ間共有メモリ31には、プロセッサ間共有メモリ管理機能36とプロセッサ間共有メモリ領域32とを備えるのみでよい。
プロセッサ間排他制御を専用に行う排他制御機構42を備えることによって、プロセッサ間共有メモリ31への操作に係る排他制御を、ハードウェアのプロセッサ間のセマフォ又はロック機能を用いて高速に行うことができる。
次に、図8に示すプロセッサ間共有オブジェクト操作機能73での処理について説明する。先ず、リード73aが行うプロセッサ間共有オブジェクト33aに係る情報の読み出し操作の処理について図10で説明する。図10中、プロセッサA21が行う処理として説明するが、異種プロセッサであるプロセッサB25においても同様に実行可能である。
図10は、プロセッサ間共有オブジェクトに係る情報の読み出し操作の処理フローを示す図である。図10(A)において、プロセッサ間中間コード実行環境70において、プロセッサA21は、参照用プロセッサ間共有オブジェクトを作成する(ステップS10r)。そして、プロセッサA21は、アプリケーションプログラム232からプロセッサ間共有オブジェクトを参照可能とする処理を行って(ステップS20r)、プロセッサ間共有オブジェクトに係る情報の読み出し操作を行う(ステップS30r)。
図10(B)では、図10(A)のステップS20rでのプロセッサ間共有オブジェクト参照の処理フローを説明する。図10(B)において、プロセッサA21は、参照用プロセッサ間共有オブジェクトを呼び出して(ステップS21r)、オブジェクト対応機能73fによって、アプリケーションプログラム232が指定した名前に対応付けられるプロセッサ間共有オブジェクト33aの実体をプロセッサ間共有メモリ31のプロセッサ間共有オブジェクト名テーブル35を参照して特定する(ステップS22r)。そして、対応付けられるプロセッサ間共有オブジェクト33aを戻り値として取得し(ステップS23r)、参照用プロセッサ間共有オブジェクトにプロセッサ間共有オブジェクト33aを返却する(ステップS24r)。参照用プロセッサ間共有オブジェクトがプロセッサ間共有オブジェクト33aとして振る舞うようになる。
図10(C)では、図10(A)のステップS30rでのプロセッサ間共有オブジェクトの読み出し操作の処理フローを説明する。図10(C)において、プロセッサA21は、アプリケーションプログラム232からのリード73aの呼び出しによって引数を受け付けてその引数を解析し(ステップS31r及びS32r)、プロセッサ間共有メモリ31又は排他制御機能42に備えられるプロセッサ間排他制御機能37を使用して、プロセッサA21がプロセッサ間共有メモリ31に格納されているプロセッサ間共有オブジェクト33aに係る情報を読み出すためのセマフォ又はロックを取得する(ステップS33r)。
そして、高速データ転送部79bを使用して、プロセッサ間共有メモリ領域32のプロセッサ間ヒープ領域33に格納されている、プロセッサ間共有オブジェクト名テーブル35を参照して名前と対応付けしたプロセッサ間共有オブジェクト33aから、プロセッサA21の専用メモリ領域(プロセッサA用メモリ領域231に展開されたヒープ領域64)の参照用プロセッサ間共有オブジェクトへと、プロセッサ間共有オブジェクト33aに係る情報をデータ転送によってデータコピーする(ステップS34r)。
データコピーが終了すると、プロセッサ間共有メモリ排他制御によるセマフォ又はロックを解放する(ステップS35r)。そして、戻り値を作成して(ステップS36r)、戻り値をアプリケーションプログラム232へ返却することによって(ステップS37r)、リード73aの処理を終了する。
図11は、読み出しプログラムの例を示す図である。図11に示す読み出しプログラム310は、アプリケーションプログラム232及び272においてプロセッサ間共有オブジェクト33aに係る情報の読み出し操作を行うためのプログラムの例である。読み出しプログラム310において、prg312「CPUSharedMemory_xxx obj ;」の実行によって、図10(A)のステップS10rによる参照用プロセッサ間共有オブジェクトが作成される。
また、prg314「obj = (CPUSharedMemory_xxx) CPUShaedMemoryNaming.lookup(“SharedObjectName_XXX”);」の実行によって、図10(B)のプロセッサ間共有オブジェクトへの参照処理が行われ、指定した名前(SharedObjectName_XXX)と参照用プロセッサ間共有オブジェクト(CPUSharedMemory_xxx)との対応がなされる。指定した名前によって、プロセッサ間共有オブジェクト名テーブル35に登録されているプロセッサ間共有オブジェクト33aの実体が参照用プロセッサ間共有オブジェクトから参照可能となり、プロセッサ間共有オブジェクト33aとして振る舞うことができる。
更に、prg316「data = obj.read();」の実行によって、図10(C)のプロセッサ間共有オブジェクトの読み出し操作が行われ、プロセッサ間共有メモリ31から読み出したプロセッサ間共有オブジェクト33aに係る情報が値dataに設定される。
次に、ライト73bが行うプロセッサ間共有オブジェクト33aに係る情報の書き込み操作の処理について図12で説明する。図12中、プロセッサA21が行う処理として説明するが、異種プロセッサであるプロセッサB25においても同様に実行可能である。
図12は、プロセッサ間共有オブジェクトに係る情報の書き込み操作の処理フローを示す図である。図12(A)において、プロセッサ間中間コード実行環境70において、プロセッサA21は、参照用プロセッサ間共有オブジェクトを作成する(ステップS10w)。そして、プロセッサA21は、アプリケーションプログラム232からプロセッサ間共有オブジェクトを参照可能とする処理を行って(ステップS20w)、プロセッサ間共有オブジェクトに係る情報の読み出し操作を行う(ステップS30w)。
図12(B)では、図12(A)のステップS20wでのプロセッサ間共有オブジェクト参照の処理フローを説明する。図12(B)において、プロセッサA21は、参照用プロセッサ間共有オブジェクトを呼び出して(ステップS21w)、オブジェクト対応機能73fによって、アプリケーションプログラム232が指定した名前に対応付けられるプロセッサ間共有オブジェクト33aの実体をプロセッサ間共有メモリ31のプロセッサ間共有オブジェクト名テーブル35を参照して特定する(ステップS22w)。そして、対応付けられるプロセッサ間共有オブジェクト33aを戻り値として取得し(ステップS23w)、参照用プロセッサ間共有オブジェクトにプロセッサ間共有オブジェクト33aを返却する(ステップS24w)。参照用プロセッサ間共有オブジェクトがプロセッサ間共有オブジェクト33aとして振る舞うようになる。
図12(C)では、図12(A)のステップS30wでのプロセッサ間共有オブジェクトの読み出し操作の処理フローを説明する。図12(C)において、プロセッサA21は、アプリケーションプログラム232からのライト73bの呼び出しによって引数を受け付けてその引数を解析し(ステップS31w及びS32w)、プロセッサ間共有メモリ31又は排他制御機能42に備えられるプロセッサ間排他制御機能37を使用して、プロセッサA21がプロセッサ間共有メモリ31に格納されているプロセッサ間共有オブジェクト33aに係る情報を書き出すためのセマフォ又はロックを取得する(ステップS33w)。
そして、高速データ転送部79bを使用して、プロセッサA21の専用メモリ領域(プロセッサA用メモリ領域231に展開されたヒープ領域64)の参照用プロセッサ間共有オブジェクトから、プロセッサ間共有メモリ領域32のプロセッサ間ヒープ領域33に格納されている、プロセッサ間共有オブジェクト名テーブル35を参照して名前と対応付けしたプロセッサ間共有オブジェクト33aへと、プロセッサ間共有オブジェクト33aに係る情報をデータ転送によってデータコピーする(ステップS34w)。
データコピーが終了すると、プロセッサ間共有メモリ排他制御によるセマフォ又はロックを解放する(ステップS35w)。そして、戻り値を作成して(ステップS36w)、戻り値をアプリケーションプログラム232へ返却することによって(ステップS37w)、ライト73bの処理を終了する。
図13は、書き込みプログラムの例を示す図である。図13に示す書き込みプログラム320は、アプリケーションプログラム232及び272においてプロセッサ間共有オブジェクト33aに係る情報の書き込み操作を行うためのプログラムの例である。書き込みプログラム320において、prg322「CPUSharedMemory_xxx obj ;」の実行によって、図12(A)のステップS10wによる参照用プロセッサ間共有オブジェクトが作成される。
また、prg324「obj = (CPUSharedMemory_xxx) CPUShaedMemoryNaming.lookup(“SharedObjectName_XXX”);」の実行によって、図12(B)のプロセッサ間共有オブジェクト参照の処理が行われ、指定した名前(SharedObjectName_XXX)と参照用プロセッサ間共有オブジェクト(CPUSharedMemory_xxx)との対応がなされる。指定した名前によって、プロセッサ間共有オブジェクト名テーブル35に登録されているプロセッサ間共有オブジェクト33aの実体が参照用プロセッサ間共有オブジェクトから参照可能となり、プロセッサ間共有オブジェクト33aとして振る舞うことができる。
更に、prg326「obj.write(data);」の実行によって、図12(C)のプロセッサ間共有オブジェクトの書き込み操作が行われ、プロセッサ間共有メモリ31のプロセッサ間共有オブジェクト33aにプロセッサ間共有オブジェクト33aに係る情報が書き込まれる。
図14は、プロセッサ間共有オブジェクトを登録するための処理フローを示す図である。図14中、プロセッサA21が行う処理として説明するが、異種プロセッサであるプロセッサB25においても同様に実行可能である。
図14において、プロセッサ間中間コード実行環境70において登録73cが実行されると、プロセッサA21は、プロセッサ間共有メモリ・クラス71(以下、単にクラスと言う)が登録されているかを確認し(ステップS41)、登録済みであるか否かを判断する(ステップS42)。登録済みである場合、ステップS49へと進む。一方、登録済みでない場合、プロセッサA専用メモリ13上のメソッド領域63(図8)にクラスを生成して(ステップS43)、生成したクラスを登録する(ステップS44)。
そして、プロセッサA21は、登録したクラスを関連するクラスとリンクした後(ステップS45)、準備処理として初期化する(ステップS46)。更に、プロセッサA21は、アクセス制御をクラスに設定し(ステップS47)、クラスを初期化する(ステップS47)。
次に、プロセッサA21は、メソッド領域63に生成したクラスのインスタンスをプロセッサ間共有メモリ31のプロセッサ間ヒープ領域33(図6)にプロセッサ間共有オブジェクト33aとして生成する(ステップS49)。プロセッサ間共有オブジェクト33aがプロセッサ間ヒープ領域33(図6)内に生成される際には、プロセッサ間共有メモリ管理機能36を用いたヒープメモリ操作・管理機能72a(図8)が実行され、メモリ割り当て/開放部36aによってプロセッサ間共有メモリ31のプロセッサ間ヒープ領域33へのメモリ割り当てが行われる。
更に、プロセッサA21は、オブジェクト対応機能73fによって、プロセッサ間共有オブジェクト33aの名前と実体との対応をプロセッサ間共有メモリ31のプロセッサ間共有オブジェクト名テーブル35に登録する(ステップS50)。
図15は、登録プログラムの例を示す図である。図15に示す登録プログラム330は、プロセッサ間共有メモリ・クラス71をインスタンス化してプロセッサ間共有オブジェクト33aを生成し、登録するためのプログラムの例である。登録プログラム330において、prg332「CPUSharedMemory_xxx obj = new CPUSharedMemory_xxx ()」の実行によって、新たにプロセッサ間共有オブジェクト33aがプロセッサ間共有メモリ31上に生成される。そして、prg334「CPUShaedMemoryNaming.rebind(“SharedObjectName_XXX”, obj);」の実行によって、プロセッサ間共有オブジェクト33aの名前と実体との対応がプロセッサ間共有オブジェクト名テーブル35に登録される。
図16は、プロセッサ間共有オブジェクトを削除するための処理フローを示す図である。図16中、プロセッサA21が行う処理として説明するが、異種プロセッサであるプロセッサB25においても同様に実行可能である。
図16において、プロセッサ間中間コード実行環境70において削除73dが実行されると、プロセッサA21は、オブジェクト対応機能73fによって、プロセッサ間共有オブジェクト33aの名前と実体との対応をプロセッサ間共有メモリ31のプロセッサ間共有オブジェクト名テーブル35から削除する(ステップS61)。
次に、プロセッサA21は、プロセッサ間共有メモリ31上にあるインスタンス(プロセッサ間共有オブジェクト33a)を削除する(ステップS62)。この場合、ヒープメモリ捜査・管理機能72aによって、プロセッサ間共有メモリ31のメモリ割り当て/開放部36aが実行されてプロセッサ間共有オブジェクト33aの領域が開放される。
そして、プロセッサA21は、プロセッサA専用メモリ23のメソッド領域63にロードされたプロセッサ間共有メモリ・クラス71が削除可能な場合に削除する(ステップS63)。
図17は、削除プログラムの例を示す図である。図17に示す削除プログラム340は、prg312「obj = (CPUSharedMemory_xxx) CPUShaedMemoryNaming.lookup(“SharedObjectName_XXX”);」の実行によって、オブジェクト対応機能73fにより、プロセッサ間共有オブジェクト名テーブル35が参照され、指定した名前(SharedObjectName_XXX)に対応するプロセッサ間共有オブジェクト33a(CPUSharedMemory_xxx)の実体を取得する。
そして、prg314「CPUShaedMemoryNaming.finalize (“SharedObjectName_XXX, obj”);」の実行によって、オブジェクト対応機能73fにより、指定した名前(SharedObjectName_XXX)と対応するプロセッサ間共有オブジェクト33a(CPUSharedMemory_xxx)の実体とがプロセッサ間共有オブジェクト名テーブル35から削除される。更に、prg316「System.runFinalize();」の実行によって、クラスを削除する。
上述したように、本発明では、下位にあるOSやハードウェアの違いを吸収し、異種プロセッサ上であっても上位にあるアプリケーションプログラムのソースをコンパイルした中間コードを共通の実行環境で動作可能とするプログラム実行環境を備えたシステムにおいて、2以上の異種プロセッサによってアクセス可能とするプロセッサ間共有メモリを備えるようにする。
本発明に係るプログラム実行環境は、一のプロセッサのみで実行されるアプリケーションプログラムを実行可能する他、プロセッサ間共有メモリを介して中間コードによって実行されるオブジェクトをプロセッサ間で共有するために、各プロセッサ専用メモリに作成した共有オブジェクトを、その共有オブジェクトを指定する名前とプロセッサ間共有メモリ内に作成した共有オブジェクトの実体とを対応させることによって、各プロセッサは読み出し及び書き込みの操作をプロセッサ間共有メモリ内の共有オブジェクトの実体に対して行うことができる。従って、各プロセッサ上で動作するアプリケーションプログラムを高速に連携動作させることができる。
また、このようなプログラム実行環境では、プロセッサ間共有メモリに対して共有オブジェクトの実体を格納するためのメモリ領域の割り当て/開放する管理機能と、プロセッサ間のプロセッサ間共有メモリに対する排他制御のためのセマフォ又はロック機能と、プロセッサ間共有メモリ内の共有オブジェクトの実体をプロセッサ専用メモリ上に割り当てたメモリ領域へ読み出し、また、プロセッサ専用メモリ内の共有オブジェクトの実体をプロセッサ間共有メモリ上に割り当てたメモリ領域へ書き出す機能と、プロセッサ間共有メモリに対するヒープ機能とを備えることによって、異種プロセッサ間でプロセッサ間共有メモリへのアクセスをプロセッサ専用メモリへのアクセスと同様に制御することができる。
よって、本発明に係るシステムでは、LAN−IFを介することなく、またLANドライバを不要とし、高速に異種プロセッサ間でオブジェクトを共有することができる。
本発明は、複数の異種プロセッサ(ヘテロジニアスマルチプロセッサ)で成るシステムに限定されることなく、例えば、中間コードを実行可能なプログラム実行環境を備えた非対称型マルチプロセシング方式の複数の同種のマルチプロセッサで成るシステムにも適応可能である。
更に、複数の同種のマルチプロセッサで成るシステムが、均一メモリアクセス(Uniform Memory Access/Architecture: UMA)又は非均一メモリアクセス(Non-Uniform Memory Access/Architecture : NUMA)を実装、集中共有メモリ(Centralized Shared Memory: CSM)又は分散共有メモリ(Distributed Shared Memory: DSM)を搭載等による共有メモリ型マルチプロセッサシステムであっても、非リモートメモリアクセス(No Remote memory Access: NORA)を実装、分散非共有メモリ(Distributed Non-Shared Memory)を搭載等による非共有メモリ型マルチプロセッサシステムであっても、すべてのプロセッサからアプリケーションプログラムが格納されているメモリを参照できない場合に、プロセッサ間共有メモリを備え、本発明に係るプログラム実行環境を適応することによってアプリケーションプログラムを高速に連携動作させることができる。
均一メモリアクセスは、すべてのプロセッサが同じスピードでメインメモリにアクセスできる方式であり、メモリアクセスコストの均一性を保つことにより、対称型マルチプロセシング(Symmetric Multi-Processing(SMP))システムに実装される。非均一メモリアクセスは、すべてのプロセッサが全てのメモリにアクセスできる方式であるが、プロセッサからメインメモリへのアクセスのコストがアクセスするメモリ領域とプロセッサに依存して均一ではないメモリ・アーキテクチャである。また各ノードのメモリを全プロセッサに共有の物理アドレス空間にマップできなければならない等の制約がある。また、非リモートメモリアクセスは、各ノードのメモリを全プロセッサに共通の物理アドレスにマップしない。
上記実施例において、オブジェクト指向プログラミング言語のJava(登録商標)言語を一例として説明した。Java(登録商標)言語(プログラムソース)は、中間コード(バイトコード)にコンパイルされ、Java(登録商標)仮想マシンとしてのOSやハードウェアに依存しないプログラム実行環境で実行される。Java(登録商標)仮想マシンでは、Java(登録商標)の中間コード(バイトコード)をJITコンパイラ等によってハードウェアに依存するネイティブコードに変換して実行される。
本発明は、このようなプログラム実行環境を備えるシステムであれば適用可能であり、例えば、オブジェクト指向プログラミング言語のC#言語、共通中間言語(Common Intermediate Language : CIL)等によるアプリケーションプログラムを実行するシステムであってもよい。例えば、この場合、共通言語基盤(Common Language Infrastructure : CLI)がプログラム実行環境に相当する。
以上の説明に関し、更に以下の項を開示する。
(付記1)
複数のプロセッサを含み、前記複数のプロセッサ上で動作可能な中間コードを実行するプログラム実行環境を備えたプログラム実行システムであって、
前記複数のプロセッサ夫々に専用の複数のプロセッサ専用メモリと、
前記複数のプロセッサ間で共有される前記中間コードによって操作される共有オブジェクトを格納するプロセッサ間共有メモリとを備え、
前記複数のプロセッサの各々は、
前記共有オブジェクトを指定する名前と前記プロセッサ間共有メモリ内の該共有オブジェクトの実体とを対応させることによって、前記複数のプロセッサ専用メモリの各々と該プロセッサ間共有メモリ間にて該共有オブジェクトを読み出し及び書き込みする読出書込機能を実行するようにしたプログラム実行システム。
(付記2)
前記プロセッサ間共有メモリは、前記共有オブジェクトの名前と該共有オブジェクトの実体とを対応させた対応テーブルを備え、
前記複数のプロセッサの各々は、前記共有オブジェクトの名前と該共有オブジェクトの実体との対応を前記対応テーブルに書き込むことにより該共有オブジェクトを登録し、また該登録された共有オブジェクトを該対応テーブルから削除することにより該共有オブジェクトを削除する登録削除機能を実行するようにした付記1記載のプログラム実行システム。
(付記3)
前記複数のプロセッサの各々は、
前記プロセッサ間共有メモリのメモリ領域の割り当て及び開放を管理する共有メモリ管理機能と、
前記複数のプロセッサ間の前記プロセッサ間共有メモリへのアクセスに対してセマフォ又はロック機能を用いて排他制御を行うプロセッサ間排他制御機能と、
前記プロセッサ間共有メモリのヒープ領域に前記共有オブジェクトを格納するための共有メモリヒープ機能とを実行するようにした付記1又は2記載のプログラム実行システム。
(付記4)
前記プロセッサ間共有メモリのメモリ領域と前記複数のプロセッサ専用メモリの各々のメモリ領域との間のダイレクトメモリアクセスによるデータ転送を制御するDMAコントローラを更に備え、
前記複数のプロセッサの各々において、前記DMAコントローラを用いて前記高速データ転送を行うルーチンと該ルーチンを前記プログラム実行環境から呼び出すためのインターフェイスを備えるようにした付記1乃至3のいずれか一項記載のプログラム実行システム。
(付記5)
前記プロセッサ間排他制御機能を有するハードウェアを備え、
前記複数のプロセッサの各々において、前記ハードウェアのプロセッサ間排他制御機能を用いて排他制御を行うルーチンと該ルーチンを前記プログラム実行環境から呼び出すためのインターフェイスを備えるようにした付記1乃至3のいずれか一項記載のプログラム実行システム。
(付記6)
複数の異種プロセッサ毎に専用の専用メモリを備えたヘテロジニアスマルチプロセッサであって、
前記複数の異種プロセッサ間で共有される該各異種プロセッサ上で動作可能な中間コードによって操作される共有オブジェクトを格納するプロセッサ間共有メモリを備え、
前記各専用メモリは、
前記共有オブジェクトを指定する名前と前記プロセッサ間共有メモリ内の該共有オブジェクトの実体とを対応させることによって、前記各プロセッサ専用メモリと該プロセッサ間共有メモリ間にて該共有オブジェクトを読み出し及び書き込みする読出書込機能を前記異種プロセッサに実行させるプログラムを格納するようにしたヘテロジニアスマルチプロセッサ。
(付記7)
前記各専用メモリは、
前記共有オブジェクトの名前と該共有オブジェクトの実体との対応を前記プロセッサ間共有メモリが保持する対応テーブルに書き込むことにより該共有オブジェクトを登録し、また該登録された共有オブジェクトを該対応テーブルから削除することにより該共有オブジェクトを削除する登録削除機能を前記異種プロセッサに実行させるプログラムを格納するようにした付記6記載のヘテロジニアスマルチプロセッサ。
(付記8)
前記各専用メモリは、
前記プロセッサ間共有メモリのメモリ領域の割り当て及び開放を管理する共有メモリ管理機能と、
前記複数のプロセッサ間の前記プロセッサ間共有メモリへのアクセスに対してセマフォ又はロック機能を用いて排他制御を行うプロセッサ間排他制御機能と、
前記プロセッサ間共有メモリのヒープ領域に前記共有オブジェクトを格納するための共有メモリヒープ機能とを前記異種プロセッサに実行させるプログラムを格納するようにした付記6又は7記載のヘテロジニアスマルチプロセッサ。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
疎結合のヘテロジニアスマルチプロセッサのシステム例を示す図である。 従来のヘテロジニアスマルチプロセッサによるシステムの構成例を示す図である。 従来の中間コード実行環境の構造例を示す図である。 本発明の第一実施例に係る密結合のヘテロジニアスマルチプロセッサによるシステム例を示す図である。 プロセッサ間共有メモリの領域構成例を示す図である。 ヘテロジニアスマルチプロセッサによるシステムの構成例を示す図である。 プロセッサ間共有メモリ用ライブラリの構成例を示す図である。 各プロセッサ用実行環境とプロセッサ間共有メモリ用ライブラリとによる機能構成を示す図である。 本発明の第二実施例に係る密結合のヘテロジニアスマルチプロセッサによるシステム構成例を示す図である。 プロセッサ間共有オブジェクトに係る情報の読み出し操作の処理フローを示す図である。 読み出しプログラムの例を示す図である。 プロセッサ間共有オブジェクトに係る情報の書き込み操作の処理フローを示す図である。 書き込みプログラムの例を示す図である。 プロセッサ間共有オブジェクトを登録するための処理フローを示す図である。 登録プログラムの例を示す図である。 プロセッサ間共有オブジェクトを削除するための処理フローを示す図である。 削除プログラムの例を示す図である。
符号の説明
21 プロセッサA
22 プロセッサA専用LAN−IF
23 プロセッサA専用メモリ
25 プロセッサB
26 プロセッサB専用LAN−IF
27 プロセッサB専用メモリ
31 プロセッサ間共有メモリ
32 プロセッサ間共有メモリ領域
33 プロセッサ間ヒープ領域
34 プロセッサ間排他制御用領域
34a プロセッサ間セマフォ
34b プロセッサ間ロック
35 プロセッサ間共有オブジェクト名テーブル
36 プロセッサ間共有メモリ管理機能
36a メモリ割り当て/開放部
37 プロセッサ間排他制御機能
54 Java(登録商標)VM
54a クラスローダー
54b クラス・キャッシュ機能
54c ヒープメモリ管理機能
54d ガーベジ・コレクション(GC)機能
61 実行時データ領域
62 PCレジスタ
63 メソッド領域
64 ヒープ領域
65 Java(登録商標)VMスタック
652 フレーム
653 ローカル変数
654 オペランドスタック
66 実行時定数プール
67 Nativeメソッドスタック
70 プロセッサ間中間コード実行環境
71 プロセッサ間共有メモリ・クラス
72 プロセッサ間共有中間コードのヒープメモリ
72a ヒープメモリ操作・管理機能
72b プロセッサ間共有ガーベジ・コレクション(GC)機能
73 プロセッサ間共有オブジェクト操作機能
73a リード
73b ライト
73c 登録
73d 削除
73f オブジェクト対応機能
74 プロセッサ間共有クラスローダー
75 プロセッサ間共有クラス・キャッシュ機能
79 プロセッサ間データ転送機能
79a 引数/戻り値のデータ転送部
79b 高速データ転送部
100 システム
231 プロセッサA用メモリ領域
232 アプリケーションプログラム
233 アプリケーションデータ
234 プロセッサA用実行環境
235 プロセッサA用JITコンパイラ
236 プロセッサ間共有メモリ用ライブラリ
271 プロセッサB用メモリ用域
272 アプリケーションプログラム
273 アプリケーションデータ
274 プロセッサB用実行環境
275 プロセッサB用JITコンパイラ
276 プロセッサ間共有メモリ用ライブラリ

Claims (8)

  1. 複数のプロセッサを含み、前記複数のプロセッサ上で動作可能な中間コードを実行するプログラム実行環境を備えたプログラム実行システムであって、
    前記複数のプロセッサ夫々に専用の複数のプロセッサ専用メモリと、
    前記複数のプロセッサ間で共有される前記中間コードによって操作される共有オブジェクトを格納するプロセッサ間共有メモリとを備え、
    前記複数のプロセッサの各々は、
    前記プロセッサ専用の前記中間コードを実行する前記プログラム実行環境と、
    前記共有オブジェクトを指定する名前と前記プロセッサ間共有メモリ内の該共有オブジェクトの実体と対応に基づいて、前記複数のプロセッサ専用メモリの各々と該プロセッサ間共有メモリ間にて該共有オブジェクトを読み出すルーチン及び書き込むルーチンを呼び出すためのAPIによってプロセッサ間中間コード実行環境を提供するプロセッサ間共有メモリ用ライブラリとを有するようにしたプログラム実行システム。
  2. 前記プロセッサ間共有メモリは、前記共有オブジェクトの名前と該共有オブジェクトの実体とを対応させた対応テーブルを備え、
    前記複数のプロセッサの各々は、前記共有オブジェクトの名前と該共有オブジェクトの実体との対応を前記対応テーブルに書き込むことにより該共有オブジェクトを登録し、また該登録された共有オブジェクトを該対応テーブルから削除することにより該共有オブジェクトを削除する登録削除機能を実行するようにした請求項1記載のプログラム実行システム。
  3. 前記複数のプロセッサの各々は、
    前記プロセッサ間共有メモリのメモリ領域の割り当て及び開放を管理する共有メモリ管理機能と、
    前記複数のプロセッサ間の前記プロセッサ間共有メモリへのアクセスに対してセマフォ又はロック機能を用いて排他制御を行うプロセッサ間排他制御機能と、
    前記プロセッサ間共有メモリのヒープ領域に前記共有オブジェクトを格納するための共有メモリヒープ機能とを実行するようにした請求項1又は2記載のプログラム実行システム。
  4. 前記プロセッサ間共有メモリのメモリ領域と前記複数のプロセッサ専用メモリの各々のメモリ領域との間のダイレクトメモリアクセスによるデータ転送を制御するDMAコントローラを更に備え、
    前記複数のプロセッサの各々において、前記DMAコントローラを用いて前記高速データ転送を行うルーチンと該ルーチンを前記プログラム実行環境から呼び出すためのインターフェイスを備えるようにした請求項1乃至3のいずれか一項記載のプログラム実行システム。
  5. 前記プロセッサ間排他制御機能を有するハードウェアを備え、
    前記複数のプロセッサの各々において、前記ハードウェアのプロセッサ間排他制御機能を用いて排他制御を行うルーチンと該ルーチンを前記プログラム実行環境から呼び出すためのインターフェイスを備えるようにした請求項1乃至3のいずれか一項記載のプログラム実行システム。
  6. 複数の異種プロセッサ毎専用メモリを備えたヘテロジニアスマルチプロセッサであって、
    前記複数の異種プロセッサ間で共有される該各異種プロセッサ上で動作可能な中間コードによって操作される共有オブジェクトを格納するプロセッサ間共有メモリを備え、
    前記各専用メモリは、
    前記共有オブジェクトを指定する名前と前記プロセッサ間共有メモリ内の該共有オブジェクトの実体と対応に基づいて、前記各プロセッサ専用メモリと該プロセッサ間共有メモリ間にて該共有オブジェクトを読み出すルーチン及び書き込むルーチンを呼び出すためのAPIによってプロセッサ間中間コード実行環境を提供するプロセッサ間共有メモリ用ライブラリを格納し、
    前記各異種プロセッサは、
    前記異種プロセッサ専用の前記中間コードを実行する前記プログラム実行環境と、
    自プロセッサの前記専用メモリに格納されたプロセッサ間共有メモリ用ライブラリを用いて前記読み出すルーチン及び前記書き込むルーチンを呼び出すことによって、前記共有オブジェクトへの操作を行う前記プロセッサ間中間コード実行環境を有するようにしたヘテロジニアスマルチプロセッサ。
  7. 前記各専用メモリは、
    前記共有オブジェクトの名前と該共有オブジェクトの実体との対応を前記プロセッサ間共有メモリが保持する対応テーブルに書き込むことにより該共有オブジェクトを登録し、また該登録された共有オブジェクトを該対応テーブルから削除することにより該共有オブジェクトを削除する登録削除機能を前記異種プロセッサに実行させるプログラムを格納するようにした請求項6記載のヘテロジニアスマルチプロセッサ。
  8. 前記各専用メモリは、
    前記プロセッサ間共有メモリのメモリ領域の割り当て及び開放を管理する共有メモリ管理機能と、
    前記複数のプロセッサ間の前記プロセッサ間共有メモリへのアクセスに対してセマフォ又はロック機能を用いて排他制御を行うプロセッサ間排他制御機能と、
    前記プロセッサ間共有メモリのヒープ領域に前記共有オブジェクトを格納するための共有メモリヒープ機能とを前記異種プロセッサに実行させるプログラムを格納するようにした請求項6又は7記載のヘテロジニアスマルチプロセッサ。
JP2008050953A 2008-02-29 2008-02-29 プログラム実行システム Expired - Fee Related JP5151559B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008050953A JP5151559B2 (ja) 2008-02-29 2008-02-29 プログラム実行システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008050953A JP5151559B2 (ja) 2008-02-29 2008-02-29 プログラム実行システム

Publications (2)

Publication Number Publication Date
JP2009211167A JP2009211167A (ja) 2009-09-17
JP5151559B2 true JP5151559B2 (ja) 2013-02-27

Family

ID=41184292

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008050953A Expired - Fee Related JP5151559B2 (ja) 2008-02-29 2008-02-29 プログラム実行システム

Country Status (1)

Country Link
JP (1) JP5151559B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4917138B2 (ja) 2009-10-07 2012-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクト最適配置装置、オブジェクト最適配置方法、及びオブジェクト最適配置プログラム
WO2011061801A1 (en) * 2009-11-19 2011-05-26 Hitachi,Ltd. Computer system and load equalization control method for the same
KR101761650B1 (ko) 2010-09-24 2017-07-28 인텔 코포레이션 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유
JP5902273B2 (ja) * 2014-10-23 2016-04-13 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有
JP6280581B2 (ja) * 2016-03-10 2018-02-14 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172509A (ja) * 1998-09-30 2000-06-23 Matsushita Electric Ind Co Ltd プログラム協調実行装置
US7114042B2 (en) * 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US7415704B2 (en) * 2004-05-20 2008-08-19 Sap Ag Sharing objects in runtime systems
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
JP2006268123A (ja) * 2005-03-22 2006-10-05 Fuji Electric Systems Co Ltd 情報共有装置

Also Published As

Publication number Publication date
JP2009211167A (ja) 2009-09-17

Similar Documents

Publication Publication Date Title
US11086680B2 (en) Object optimal allocation device, method and program
KR0170565B1 (ko) 메모리 관리 방법, 마이크로커널 구조 데이타 프로세싱 시스템, 운영 체제 퍼스낼리티 시스템 동작 방법, 퍼스낼리티 뉴트럴 서비스 프로그램 실행 방법 및 응용 프로그램 실행방법
JP4791461B2 (ja) ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置
US10620988B2 (en) Distributed computing architecture
Pai et al. Fast and efficient automatic memory management for GPUs using compiler-assisted runtime coherence scheme
US20060026183A1 (en) Method and system provide concurrent access to a software object
JP2007538323A (ja) ランタイムシステムにおけるオブジェクトを共有するためのプログラム、方法、装置
JP6273294B2 (ja) 共有およびマネージド・メモリー統一アクセス
Heller et al. Closing the performance gap with modern c++
JP5151559B2 (ja) プログラム実行システム
KR20030020397A (ko) 확장형 메모리의 효율적인 스레드 로컬 객체 할당을 위한방법
Aguilar Mena et al. OmpSs-2@ Cluster: Distributed memory execution of nested OpenMP-style tasks
Thomadakis et al. Multithreaded runtime framework for parallel and adaptive applications
Hagen et al. PGASUS: a framework for C++ application development on NUMA architectures
Focht VEO and PyVEO: vector engine offloading for the NEC SX-Aurora Tsubasa
Lobosco et al. Java for high‐performance network‐based computing: a survey
Gray et al. Supporting islands of coherency for highly-parallel embedded architectures using Compile-Time Virtualisation
Karimi et al. Transparent Distributed Programming under Linux
Doyle et al. Jupiter: A modular and extensible JVM
Fumero et al. Unified Shared Memory: Friend or Foe? Understanding the Implications of Unified Memory on Managed Heaps
Alfonso et al. Unified Shared Memory: Friend or Foe? Understanding the Implications of Unified Memory on Managed Heaps
Poss et al. Lazy reference counting for the microgrid
Zhang et al. A Scalable Pthreads-Compatible Thread Model for VM-Intensive Programs
Ming JESSICA: Java-enabled single-system-image computing architecture
Aljehan et al. Distributed Objects based Programming Constructs for PGAS based High Performance C++

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121119

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

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

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