WO2016038698A1 - メモリ割当て装置及び方法 - Google Patents

メモリ割当て装置及び方法 Download PDF

Info

Publication number
WO2016038698A1
WO2016038698A1 PCT/JP2014/073853 JP2014073853W WO2016038698A1 WO 2016038698 A1 WO2016038698 A1 WO 2016038698A1 JP 2014073853 W JP2014073853 W JP 2014073853W WO 2016038698 A1 WO2016038698 A1 WO 2016038698A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
priority
information
allocation
access
Prior art date
Application number
PCT/JP2014/073853
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 PCT/JP2014/073853 priority Critical patent/WO2016038698A1/ja
Publication of WO2016038698A1 publication Critical patent/WO2016038698A1/ja

Links

Images

Classifications

    • 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]
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Definitions

  • the placement destination memory priority order determination unit 11 generates a placement destination memory priority order table 22 from the memory access condition table 21. For example, when obtaining a memory priority sequence for allocating a non-shared code area that is only read-accessed from core 0, refer to the column of core 0 of instruction fetch cost 104 in memory access condition table 21.
  • the instruction fetch costs exist, that is, they are arranged from the accessible memory in the order of the lowest cost.
  • a memory in which the inter-core shared access enable flag 102 in the memory access condition table 21 is “impossible” is excluded.
  • the column of the data fetch cost 105 may be referred to.
  • the column of both the data fetch cost 105 and the data store cost 107 is referred to, and the priority order of the memory is determined from the memories accessible to both the data fetch and the data store. .
  • the non-volatile memory priority is determined by referring to the non-volatile flag 108 and extracting the non-volatile memory from the memory priority sequence 205. Store in the rank column 206.
  • one memory is selected from the memory priority sequence selected in S13 in descending order of priority (S14).
  • the free memory capacity of the selected memory is compared with the size 303 of the object selected in S12 to determine whether the object can be stored in the selected memory (S15). If it can be stored, the free memory capacity is updated by subtracting the size of the object. If the data cannot be stored, the process returns to S14 and the memory with the next highest priority is selected.
  • the compiler 14 compiles the source code 28 so as to have a memory arrangement according to the memory arrangement table 26, and outputs an execution file 29 with improved memory arrangement to the external storage area 6. For example, add the attribute information on which memory to place the object to the declaration part and definition part of the object in the source code, and specify the memory placement by generating an executable file based on the attribute information You can do as you did. If the address of each memory on the target system is known in advance, the memory address of each memory can be determined by giving the address of each memory to the compiler 14. It is also possible to determine the actual address when loading the execution file 29 on the target system without giving the address of each memory on the target system to the compiler 14.
  • the execution file 29 is transferred to the target system 2a via a network line or a recording medium, and then the program loader 15 loads the execution file 29, places it in the memory 3, and starts execution.
  • the memory access condition table 21 has access cost information for each CPU core even for the same memory, and the placement destination memory priority determination unit 11 uses that information to determine the memory priority for each CPU core.
  • the memory access condition table 21 has access cost information for each CPU core even for the same memory, and the placement destination memory priority determination unit 11 uses that information to determine the memory priority for each CPU core.

Abstract

 マルチコアCPUおよびアクセス速度や特性の異なる多様な複数種類のメモリを搭載した計算機システム上で高速動作するプログラムを開発する際に、プログラムの高速動作化に好適なメモリ配置情報を容易に決定できることである。 ターゲットシステム依存のマルチコアやメモリ特性に起因するメモリアクセス条件を用いて対象プログラムを配置するメモリの優先順位をメモリアクセス条件パターン別に決定し、それを対象プログラムに含まれる個々のコードやデータなどのオブジェクトに関するプロファイリング結果や動作条件と照合して、どのオブジェクトをどのメモリに配置すべきかを決定する。

Description

メモリ割当て装置及び方法
 本発明は、マルチコアCPUおよびアクセス速度や特性の異なる多様な複数種類のメモリを搭載した計算機システム上で高速動作するプログラムを開発する際にプログラムの高速動作化に有効なメモリ配置情報を容易に決定できるメモリ割当て装置および方法に関するものである。
背景技術として特開2000-3268号公報がある。この公報には、「アクセス速度の異なる複数種類のメモリを搭載したシステム上でプログラムの実行速度の高速化を図れる最適化されたメモリマップを容易に構築できるメモリマップ最適化決定方法を得る」と記載されている。
特開2000-3268号公報
特許文献1ではCPUからのアクセス方法によってメモリのアクセス速度が変わる場合やアクセス方法に制約のあるメモリを使用する場合には言及していない。例えば、CPUからのコード読込みとデータ読込みとではアクセス速度が著しく異なる場合が存在する。このようなメモリを含む複数種類のメモリを搭載するシステムでは、コード読込みとデータ読込みとでメモリのアクセス速度の順番が異なることがある。このような場合は、特許文献1のように複数種類のメモリに対するアクセス速度を画一的に順序付けすることはできない。また、一部のフラッシュメモリのように番地による通常のメモリアクセスによる書込みが不可能であるメモリにおいては、コードやデータの読込みのみが可能という制約が加わる。
 加えて、特許文献1ではマルチコアCPUについて言及していない。マルチコアCPUによっては、コア毎のローカルメモリを持つものが存在する。このようなローカルメモリは特定のコアからしかアクセスできないことがある。また、マルチコアCPUによっては、同一メモリへのアクセスであってもコア毎にアクセス速度が異なる場合がある。
 さらに、プログラムによってはデータを格納すべきメモリの種類に制約があることがある。例えば、自動車用電子機器のような稼動し続けることが安全性に寄与するシステムでは、電源瞬断時にリセットを行って再起動による動作再開を行うことがある。このとき、リセットをまたいで動作を再開する上で重要なデータを常にバッテリーバックアップ付きRAMやMRAMなどの不揮発メモリに格納しておくことで動作の再開を高速に行うことができる。特許文献1ではそのような特定のメモリに特定のデータを格納しなければならないといった制約を満たしつつメモリ割当てを改善することについては言及していない。
 本発明は、以上のようなマルチコアやメモリの特性による制約を考慮したメモリ割当ての改善を行うことで、マルチコアCPUと多様な複数種類のメモリを搭載する計算機システム上のプログラムの高速動作化を行うことを目的とする。
上記課題を解決するため、複数のコアを持つCPUとアクセス速度とアクセス種別の異なる複数種類の物理メモリを備える計算機システムでプログラムを実行するとき、計算機システムのメモリアクセス条件を用いて、アクセス種別毎にメモリをアクセス速度の速い順に優先度付けした配置先メモリ優先順位情報を決定する配置先メモリ優先順位決定部と、プログラムに含まれる各オブジェクトの情報を用いて、アクセス速度の速いメモリに配置するオブジェクトを優先度付けしたオブジェクト優先順位情報を決定するオブジェクト優先順位決定部と、前記配置先メモリ優先順位情報と前記オブジェクト優先順位情報を比較して、計算機システムの各メモリ容量に収まるように各オブジェクトを各メモリに配置するメモリ割当情報を生成するメモリ配置決定部とを有するメモリ割当て装置を提供する。
本発明によれば、マルチコアCPUや多様な複数種類のメモリを搭載するターゲットシステムにおけるプログラムの動作速度向上が可能となる。
実施例1における計算機システムのブロック図である。 実施例1におけるメモリ割当て装置の主記憶領域を説明するブロック図である。 実施例1におけるメモリアクセス条件テーブルの例である。 実施例1における配置先メモリ優先順位テーブルの例である。 実施例1におけるオブジェクト情報テーブルの例である。 実施例1におけるオブジェクト優先順位テーブルの例である。 実施例1におけるメモリ配置テーブルの例である。 実施例1におけるメモリ配置決定部の処理を示すフローチャートの例である。 実施例2におけるメモリ割当て装置とターゲットシステムのブロック図である。
まず、ターゲットシステムとメモリ割当て装置が独立している場合の実施例1について述べ、次にターゲットシステム上にメモリ割当て装置を含む場合の実施例2について実施例1との差異として述べる。
 <実施例1>
図1は、実施例1における計算機システムのブロック図である。メモリ割当て装置1は、計算機によって実現され、CPU6、外部記憶領域7a、主記憶領域8を備える。
 ターゲットシステム2aは、計算機によって実現され、CPU4、作業用メモリ5、複数種類のメモリ3、外部記憶領域7bを備える。作業用メモリ5は、実行ファイルをメモリ3へと配置する際に使用されるメモリであり、CPU4によって実行されるプログラムローダ15を保持する。
 図2は実施例1におけるメモリ割当て装置の主記憶領域を説明するブロック図である。
 主記憶領域8は、メモリ配置を求める際に使用されるメモリであり、CPU6によって実行される配置先メモリ優先順位決定部11、オブジェクト優先順位決定部12、メモリ配置決定部13、コンパイラ14を保持する。配置先メモリ優先順位決定部11は、ターゲットシステム依存のメモリアクセスに関するコストや制約の情報が格納されたメモリアクセス条件テーブル21の内容を読み込み、各種のメモリアクセス条件パターン毎に対象のプログラムを配置すべきターゲットシステムのメモリの優先順位を決定した後、その優先順位情報を配置先メモリ優先順位テーブル22へと格納する。
 オブジェクト優先順位決定部12は、対象のプログラムに含まれるオブジェクト(識別子の付与された個別のコードやデータ)毎の属性情報が格納されたオブジェクト情報テーブル23の内容を読み込み、どのオブジェクトを優先して高速なメモリへ配置するかを定める情報をオブジェクト優先順位テーブル24へと格納する。
 メモリ配置決定部13はオブジェクト優先順位テーブル24の内容、配置先メモリ優先順位テーブル22の内容、ターゲットシステムの各メモリの容量が格納されたメモリ容量テーブル25を照らし合わせ、ターゲットシステム用に配置されたメモリ割当情報であるメモリ配置テーブル26を生成する。もしオブジェクト優先順位テーブル24の内容がコード用とデータ用とで分かれている場合は、メモリマップ決定部13はターゲットシステムの各メモリにおけるコードとデータの使用比率を定めたコード・データ比率テーブル27の内容を使用しても良い。
 図3は、メモリアクセス条件テーブル21の構成例である。メモリアクセス条件テーブル21はターゲットシステムの各メモリを示すメモリ識別子101とそれに対応するコア間共有アクセス可能フラグ102、各CPUコアでのメモリの読込みコスト103、書込みコスト106を含む。また、不揮発メモリか否かを識別するための不揮発フラグ108を含んでいても良い。図3では、メモリ読込みコスト103はコード読込み速度の指標となる命令フェッチコスト104、データ読込み速度の指標となるデータフェッチコスト105に分かれており、書込みコストはデータ書込み速度の指標となるデータストアコスト106のみで構成される。コストの単位としては例えばメモリアクセス命令の実行に要するCPUサイクル数が使用できる。図3の各コスト欄で「-」となっているものは、アクセス不可能であることを示す。
 図4は、配置先メモリ優先順位テーブル22の構成例である。配置先メモリ優先順位テーブル22は、メモリに配置されるオブジェクトがコードかデータかを表すオブジェクト種別201、オブジェクトがどのCPUコアからアクセスされるかを示すCPUコア識別子202、オブジェクトに対するアクセスが読込み(R)か書込み(W)か両方(RW)かのアクセス種別203、オブジェクトがコア間で共有されるかを示すコア間共有フラグ204といった条件パターン毎に、メモリ識別子をメモリの速い順に並べたメモリ優先順位列205を持つ。また、メモリ優先順位列205から不揮発メモリのみを抽出した優先順位列である不揮発メモリ優先順位列206を含んでいても良い。
 配置先メモリ優先順位決定部11は、メモリアクセス条件テーブル21から配置先メモリ優先順位テーブル22を生成する。例えばコア0から読込みアクセスのみされるコア間非共有のコード領域を割当てるためのメモリの優先順位列を求める場合は、メモリアクセス条件テーブル21内の命令フェッチコスト104のコア0の縦欄を参照し、命令フェッチコストが存在する、つまりアクセス可能なメモリの中からコストの最も少ない順で並べる。コア間共有のコード領域の場合は、メモリアクセス条件テーブル21内のコア間共有アクセス可能フラグ102が「不可」になっているメモリを除外する。同様に読込みアクセスのみされるデータ領域の場合はデータフェッチコスト105の縦欄を参照すれば良い。読書きアクセスされるデータ領域の場合はデータフェッチコスト105とデータストアコスト107の両方の縦欄を参照し、データフェッチとデータストアの両方がアクセス可能なメモリの中からメモリの優先順位列を定める。この優先順位列を定めるとき、データフェッチコストとデータストアコストのどちらを利用しても良い。対象のプログラムに含まれるオブジェクトに不揮発メモリへ配置しなければならないものが存在する場合は、不揮発フラグ108を参照し、メモリ優先順位列205から不揮発メモリのみを抽出したメモリ優先順位列を不揮発メモリ優先順位列206に格納する。
 図5は、オブジェクト情報テーブル23の構成例である。オブジェクト情報テーブル23は、対象のプログラムに含まれる各オブジェクトのオブジェクト識別子301、オブジェクトがコードかデータかを表すオブジェクト種別302、オブジェクトのサイズを示すサイズ303、オブジェクトが動作する可能性のあるターゲットシステム上のCPUコアを示す動作CPUコア識別子304、オブジェクトに対するアクセスの種類を示すアクセス種別305、プロファイル結果306、オブジェクトが不揮発メモリへ配置されなければならないかを示す不揮発メモリ制約フラグ309を含む。動作CPUコア識別子304は複数の識別子を含んでいても良い。プロファイル結果としては、ターゲットシステム上でプログラムを実行して得られた各オブジェクトの実行・アクセスコスト307を利用する。オブジェクトが複数のCPUコアで共有利用される場合は、どちらのCPUコアでより多く動作するかを示す優先コア識別子308をプロファイル結果306に含める。
 図6は、オブジェクト優先順位テーブル24の構成例である。オブジェクト優先順位テーブル24はオブジェクト情報テーブル23に含まれる各オブジェクトに対してプロファイル結果306を基に順序付けを行い、オブジェクト優先順位310を付加したものである。プロファイル結果として使用する指標がコードとデータとで比較可能な場合は統一されたオブジェクト優先順位テーブルを1つだけ作成すれば良いが、比較不可能な場合は、オブジェクト種別毎に作成しても良い。
 オブジェクト優先順位決定部12は、オブジェクト情報テーブル23からプロファイル結果306に基づいてオブジェクト優先順位テーブル24を生成する。例えば、プロファイル結果306内の各オブジェクトの実行・アクセスコスト307の高い順に優先順位を付ける。
 メモリ容量テーブル25はターゲットシステムの物理メモリのメモリ識別子とそれに対応するメモリ容量を含む。
 前述したオブジェクト優先順位テーブル24をオブジェクト種別毎に作成する場合は、コード・データ比率テーブル27を用いてコードとデータの割合を決定する。コード・データ比率テーブル27はターゲットシステムの各メモリを示すメモリ識別子とそれぞれメモリに対してコードとデータをどの比率で割り当てるかの比率設定を含む。
 図7は、メモリ配置テーブル26の構成例である。メモリ配置テーブル26はターゲットシステムの各メモリのメモリ識別子401と、各メモリに配置される対象プログラム内のオブジェクト群を示すオブジェクト識別子リスト402を含む。
 図8は、メモリ配置決定部13の処理を示すフローチャートである。まず、メモリ容量テーブル25内のメモリ容量を参照し、各メモリの利用可能な空きメモリ容量を算出する(S10)。オブジェクト優先順位テーブル24が複数ある場合は、メモリ容量にコード・データ比率テーブル27内の対応する比率をかけて、コード領域とデータ領域毎に空きメモリ容量を算出する。
 次に、オブジェクト優先順位テーブル24が複数ある場合はそのうちの1つを選択する(S11)。次に、選択したオブジェクト優先順位テーブル24から優先順位の高い順にオブジェクトを1つ選択する(S12)。
 次に、S12で選択したオブジェクトを格納可能なメモリ優先順位列205を決定する(S13)。これにはまず、オブジェクト優先順位テーブル24内の選択したオブジェクトに対応するオブジェクト種別302、優先コア識別子308、アクセス種別305のそれぞれが、配置先メモリ優先順位テーブル22内のオブジェクト種別201、CPUコア識別子202、アクセス種別203と一致する配置先メモリ優先順位テーブル22内の複数行を抽出する。次にオブジェクト優先順位テーブル24内の選択したオブジェクトに対応する動作CPUコア識別子304を参照し、複数のCPUコア上でそのオブジェクトがアクセスされるかを判別する。複数のCPUコア上でアクセスされる場合は、コア間共有フラグ204が「共有」となっている行のメモリ優先順位列205を選択し、そうでない場合は、「非共有」となっている行のものを選択する。もし選択したオブジェクトの不揮発メモリ制約フラグ309が「有」となっている場合は、メモリ優先順位列205ではなく不揮発メモリ優先順位列206を選択する。
 次に、S13で選択したメモリ優先順位列の中から優先順位の高い順にメモリを1つ選択する(S14)。選択したメモリの空きメモリ容量とS12で選択したオブジェクトのサイズ303と比較して選択したメモリにそのオブジェクトを格納可能か判別する(S15)。格納可能である場合はメモリ空き容量をそのオブジェクトのサイズ分差し引いて更新する。格納できない場合はS14へ戻って次に優先順位の高いメモリを選択する。
 次に、オブジェクト優先順位テーブル24内の全オブジェクトを選択済みか確認する(S16)。オブジェクト優先順位テーブル24が複数ある場合は、S11で選択したものに含まれる全オブジェクトを選択済みか確認する。全オブジェクトを選択済みでない場合は、S12へ戻って次に優先順位の高いオブジェクトを選択する。
 次に、オブジェクト優先順位テーブル24が複数ある場合は、全オブジェクト優先順位テーブルを選択済みか確認する(S17)。選択済みでない場合は、S11へ戻って残りのオブジェクト優先順位テーブルを選択する。
 コンパイラ14はソースコード28をメモリ配置テーブル26の通りのメモリ配置となるようにコンパイルし、メモリ配置の改善された実行ファイル29を外部記憶領域6に出力する。例えば、ソースコード中のオブジェクトの宣言部や定義部に対し、そのオブジェクトをどのメモリに配置するかの属性情報を付加し、その属性情報を基に実行ファイルを生成することで、メモリ配置を指定した通りに行える。ターゲットシステム上の各メモリのアドレスがあらかじめ分かっている場合は、コンパイラ14に対して各メモリのアドレスを与えることで配置先メモリアドレスまで決定することができる。ターゲットシステム上の各メモリのアドレスをコンパイラ14に与えず、ターゲットシステム上で実行ファイル29をロードする際に実際のアドレスを決定することもできる。
 実行ファイル29はネットワーク回線や記録媒体を介してターゲットシステム2aへ転送され、その後プログラムローダ15は実行ファイル29をロードし、メモリ3に対して配置し、実行を開始する。
 以上述べたように、実施例1のメモリ割当て装置1によれば、配置先メモリ優先順位決定部11がマルチコアやメモリの特性による制約を考慮してメモリの優先順位を決定するため、従来ではできなかった、CPUからのコード読込み速度の順番とデータ読込み速度の順番が異なる場合においてコード領域とデータ領域それぞれに対するメモリ配置を行うことができ、対象プログラムのより高速な動作を実現できる。
 また、メモリ配置決定部13がメモリとオブジェクトのアクセス種別を照合してオブジェクトの配置先メモリを決定するため、従来ではできなかった、番地による通常のメモリアクセスによる書込みが不可能であるメモリを考慮したメモリ配置が可能であり、対象プログラムのより高速な動作を実現できる。
 また、メモリ配置決定部13がメモリのコア間共有フラグ204とオブジェクトの動作CPUコア識別子304を照合してオブジェクトをCPUコア間で共有アクセス可能なメモリに配置するか否かを決定するため、CPUコア毎のローカルメモリを考慮したメモリ配置が可能であり、対象プログラムのより高速な動作を実現できる。
 また、メモリアクセス条件テーブル21が同一メモリに対してもCPUコア毎にアクセスコスト情報を持ち、その情報を使って配置先メモリ優先順位決定部11がCPUコア毎にメモリの優先順位を決定するため、従来ではできなかった、同一メモリへのアクセスであってもCPUコア毎にアクセス速度が異なるマルチコアCPUを考慮したメモリ配置が可能であり、対象プログラムのより高速な動作を実現できる。
 また、メモリ配置決定部13がメモリの不揮発フラグ108とオブジェクトの不揮発メモリ制約フラグ309を照合してオブジェクトを不揮発メモリに配置するか否かを決定するため、あるオブジェクトが不揮発メモリに配置されなければならないといった制約を満たしつつメモリへの配置を行うこともできる。
 また、一度作成した配置先メモリ優先順位テーブル22やオブジェクト優先順位テーブル24は、CPUやメモリの種類が同じだがメモリ容量の異なる類似のターゲットシステム用に再利用することも可能である。
 また、実行ファイルを複数持つことができ、かつ、実行するプログラムをそれらの実行ファイルと入れ替えることが可能なターゲットシステム上では、対象プログラムの動作がターゲットシステムの動作環境によって変化する場合において、動作環境毎に対象プログラムのプロファイリングを行い、動作環境毎に実行ファイルを複数用意しておくことで、ターゲットシステムが動作環境を判別して実行ファイルを切り替えることも可能である。
 <実施例2>
図9は、ターゲットシステム2bがメモリ割当て装置1を含むことで、ターゲットシステム上で動的にメモリ配置を実施できる構成の図である。この構成では、メモリ割当て装置1が実行ファイル29を生成することとプログラムローダ15が実行ファイル29をメモリに配置し実行することの両方が可能である。そのため、対象プログラムの動作がターゲットシステムの動作環境によって変化する場合で、かつ、動作環境が出荷前には不明である場合には、ターゲットシステムを出荷した後において、使用される実際の動作環境で一度対象のプログラムを動作させてプロファイリングを行い、オブジェクト情報テーブル23を生成し、その動作環境に適合した実行ファイル29を生成することが可能である。これにより未知の動作環境に対してもプログラムの配置ができ、高速動作化が可能になる。この実施例の場合は、メモリ割当て装置1のCPU6と主記憶領域8の代わりに、ターゲットシステム2bのCPU4と作業用メモリ5を使用しても良い。
1 メモリ割当て装置、2 ターゲットシステム、3 メモリ、4 CPU、5 作業用メモリ、6 CPU、7 外部記憶領域、8 主記憶領域、11  配置先メモリ優先順位決定部、12 オブジェクト優先順位決定部、13 メモリ配置決定部、14 コンパイラ、21 メモリアクセス条件テーブル、22 配置先メモリ優先順位テーブル、23 オブジェクト情報テーブル、24 オブジェクト優先順位テーブル、25 メモリ容量テーブル、26 メモリ配置テーブル、27 コード・データ比率テーブル、28 ソースコード、29 実行ファイル、101 メモリ識別子、102 コア間共有アクセス可能フラグ、103 読込みコスト、104 命令フェッチコスト、105 データフェッチコスト、106 書込みコスト、107 データストアコスト、108 不揮発フラグ、201 オブジェクト種別、202 CPUコア識別子、203 アクセス種別、204 コア間共有フラグ、205 メモリ優先順位列、206 不揮発メモリ優先順位列、301 オブジェクト識別子、302 オブジェクト種別、303 サイズ、304 動作CPUコア識別子、305 アクセス種別、306 プロファイル結果、307 実行・アクセスコスト、308 優先コア識別子、309 不揮発メモリ制約フラグ、310 オブジェクト優先順位、401 メモリ識別子、402 オブジェクト識別子リスト

Claims (16)

  1. 複数のコアを持つCPUとアクセス速度とアクセス種別の異なる複数種類の物理メモリを備える計算機システムでプログラムを実行するとき、計算機システムのメモリアクセス条件を用いて、アクセス種別毎にメモリをアクセス速度の速い順に優先度付けした配置先メモリ優先順位情報を決定する配置先メモリ優先順位決定部と、
    プログラムに含まれる各オブジェクトの情報を用いて、アクセス速度の速いメモリに配置するオブジェクトを優先度付けしたオブジェクト優先順位情報を決定するオブジェクト優先順位決定部と、
    前記配置先メモリ優先順位情報と前記オブジェクト優先順位情報を比較して、計算機システムの各メモリ容量に収まるように各オブジェクトを各メモリに配置するメモリ割当情報を生成するメモリ配置決定部と、
    を有することを特徴とするメモリ割当て装置。
  2. 請求項1のメモリ割当て装置において、
    前記配置先メモリ優先順位決定部はメモリの、CPUコア毎の読込みコスト、書込みコスト及びコア間共有アクセスの有無に基づいて配置先メモリ優先順位情報を作成することを特徴とするメモリ割当て装置。
  3. 請求項2のメモリ割当て装置において、
    前記配置先メモリ優先順位情報は、メモリに配置するオブジェクトのオブジェクト種別毎、CPUコア毎、アクセス種別毎、コア間共有アクセスの有無毎にメモリの優先順位情報を持つことを特徴とするメモリ割当て装置。
  4. 請求項2のメモリ割当て装置において、
    前記オブジェクト優先順位決定部は対象プログラムの実行により得られた各オブジェクトのプロファイルに基づいてオブジェクト優先順位情報を作成することを特徴とするメモリ割当て装置。
  5. 請求項4のメモリ割当て装置において、
    前記オブジェクト優先順位情報は、オブジェクト毎に優先順位、オブジェクト種別、サイズ、動作CPUコア識別子、アクセス種別、及びどのCPUコアに配置すべきかを示す優先コア識別子の各情報を含むことを特徴とするメモリ割当て装置。
  6. 請求項5のメモリ割当て装置において、
    前記メモリ配置決定部は、前記オブジェクト優先順位情報から優先順位の高い順にオブジェクトを選択し、前記メモリ優先順位情報の中から当該オブジェクトに求められる条件に一致するメモリ種別のうち優先順位の高い順に容量に空きのあるメモリへ当該オブジェクトを配置するメモリ割当情報を生成することを特徴とするメモリ割当て装置。
  7. 請求項6のメモリ割当て装置において、
    前記メモリ配置決定部は、メモリのコード・データ比率情報を用いてオブジェクト種別毎に各メモリの空き容量を決定し、オブジェクトを配置するメモリ割当情報を生成することを特徴とするメモリ割当て装置。
  8. 請求項6のメモリ割当て装置において、
    前記メモリ優先順位情報は加えて不揮発メモリのみを抽出したメモリの優先順位情報を持ち、前記オブジェクト優先順位情報はオブジェクトを不揮発メモリに配置すべきかどうかを示す不揮発メモリ制約情報を持ち、前記メモリ配置決定部の処理においてオブジェクトが不揮発メモリに配置されなければならないという制約を持つ場合は、不揮発メモリに配置するメモリ割当情報を生成することを特徴とするメモリ割当て装置。
  9. 複数のコアを持つCPUとアクセス速度とアクセス種別の異なる複数種類の物理メモリを備える計算機システムでプログラムを実行するとき、
    配置先メモリ優先順位決定部が計算機システムのメモリアクセス条件を用いて、アクセス種別毎にメモリをアクセス速度の速い順に優先度付けした配置先メモリ優先順位情報を決定し、
    オブジェクト優先順位決定部がプログラムに含まれる各オブジェクトの情報を用いて、アクセス速度の速いメモリに配置するオブジェクトを優先度付けしたオブジェクト優先順位情報を決定し、
    メモリ配置決定部が前記配置先メモリ優先順位情報と前記オブジェクト優先順位情報を比較して、計算機システムの各メモリ容量に収まるように各オブジェクトを各メモリに配置するメモリ割当情報を生成することを有することを特徴とするメモリ割当て方法。
  10. 請求項9のメモリ割当て方法において、
    前記配置先メモリ優先順位決定部はメモリの、CPUコア毎の読込みコスト、書込みコスト及びコア間共有アクセスの有無に基づいて配置先メモリ優先順位情報を作成することを特徴とするメモリ割当て方法。
  11. 請求項10のメモリ割当て方法において、
    前記配置先メモリ優先順位情報は、メモリに配置するオブジェクトのオブジェクト種別毎、CPUコア毎、アクセス種別毎、コア間共有アクセスの有無毎にメモリの優先順位情報を持つことを特徴とするメモリ割当て方法。
  12. 請求項10のメモリ割当て方法おいて、
    前記オブジェクト優先順位決定部は対象プログラムの実行により得られた各オブジェクトのプロファイルに基づいてオブジェクト優先順位情報を作成することを特徴とするメモリ割当て方法。
  13. 請求項12のメモリ割当て方法において、
    前記オブジェクト優先順位情報は、オブジェクト毎に優先順位、オブジェクト種別、サイズ、動作CPUコア識別子、アクセス種別、及びどのCPUコアに配置すべきかを示す優先コア識別子の各情報を含むことを特徴とするメモリ割当て方法。
  14. 請求項13のメモリ割当て方法において、
    前記メモリ配置決定部は、前記オブジェクト優先順位情報から優先順位の高い順にオブジェクトを選択し、前記メモリ優先順位情報の中から当該オブジェクトに求められる条件に一致するメモリ種別のうち優先順位の高い順に容量に空きのあるメモリへ当該オブジェクトを配置するメモリ割当情報を生成することを特徴とするメモリ割当て方法。
  15. 請求項14のメモリ割当て方法において、
    前記メモリ配置決定部は、メモリのコード・データ比率情報を用いてオブジェクト種別毎に各メモリの空き容量を決定し、オブジェクトを配置するメモリ割当情報を生成することを特徴とするメモリ割当て方法。
  16. 請求項14のメモリ割当て方法において、
    前記メモリ優先順位情報は加えて不揮発メモリのみを抽出したメモリの優先順位情報を持ち、前記オブジェクト優先順位情報はオブジェクトを不揮発メモリに配置すべきかどうかを示す不揮発メモリ制約情報を持ち、前記メモリ配置決定部の処理においてオブジェクトが不揮発メモリに配置されなければならないという制約を持つ場合は、不揮発メモリに配置するメモリ割当情報を生成することを特徴とするメモリ割当て方法。
PCT/JP2014/073853 2014-09-10 2014-09-10 メモリ割当て装置及び方法 WO2016038698A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/073853 WO2016038698A1 (ja) 2014-09-10 2014-09-10 メモリ割当て装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/073853 WO2016038698A1 (ja) 2014-09-10 2014-09-10 メモリ割当て装置及び方法

Publications (1)

Publication Number Publication Date
WO2016038698A1 true WO2016038698A1 (ja) 2016-03-17

Family

ID=55458487

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/073853 WO2016038698A1 (ja) 2014-09-10 2014-09-10 メモリ割当て装置及び方法

Country Status (1)

Country Link
WO (1) WO2016038698A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003268A (ja) * 1998-06-11 2000-01-07 Mitsubishi Electric Corp メモリマップ最適化決定方法
JP2004070862A (ja) * 2002-08-09 2004-03-04 Fujitsu Ltd メモリ資源最適化支援方法、プログラム及び装置
JP2013508813A (ja) * 2009-10-15 2013-03-07 マイクロソフト コーポレーション 省電力を目的としたメモリ・オブジェクトの再配置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003268A (ja) * 1998-06-11 2000-01-07 Mitsubishi Electric Corp メモリマップ最適化決定方法
JP2004070862A (ja) * 2002-08-09 2004-03-04 Fujitsu Ltd メモリ資源最適化支援方法、プログラム及び装置
JP2013508813A (ja) * 2009-10-15 2013-03-07 マイクロソフト コーポレーション 省電力を目的としたメモリ・オブジェクトの再配置

Similar Documents

Publication Publication Date Title
US20180189188A1 (en) Unified hardware and software two-level memory
EP3230873B1 (en) Computing method and apparatus with persistent memory
US9396353B2 (en) Data allocation among devices with different data rates
US20140281362A1 (en) Memory allocation in a system using memory striping
KR101779994B1 (ko) 멀티클래스 메모리 시스템내 메모리 할당을 위한 시스템 및 방법
US20140181378A1 (en) Control device, control method, and program
TW201301029A (zh) 具有增強型應用程式元資料之記憶體管理器
US10261918B2 (en) Process running method and apparatus
TW201935223A (zh) 記憶體系統及其控制方法
KR20170029583A (ko) 가상 컴퓨팅 환경에서의 메모리 및 자원 관리
US20150082082A1 (en) Information processing device, information processing method, and storage medium storing program for executing information processing method
US8028118B2 (en) Using an index value located on a page table to index page attributes
US9910418B2 (en) Method and programming system for programming an automation component
US20130346714A1 (en) Hardware-Based Accelerator For Managing Copy-On-Write
US20110078378A1 (en) Method for generating program and method for operating system
US10223269B2 (en) Method and apparatus for preventing bank conflict in memory
KR102130813B1 (ko) 재구성 가능 프로세서 및 재구성 가능 프로세서를 동작하는 방법
KR101826778B1 (ko) 플래쉬 라이프 사이클 및 성능 개선을 고려한 eeprom 에뮬레이션 구현 방법
WO2016038698A1 (ja) メモリ割当て装置及び方法
CN116414725A (zh) 用于计算装置主存储器的分区命名空间
US20180329756A1 (en) Distributed processing system, distributed processing method, and storage medium
CN108874468B (zh) 应用程序的加载方法、装置、计算机设备及存储介质
CN113254186A (zh) 一种进程调度方法、调度器及存储介质
US10521155B2 (en) Application management data
JP2015099517A (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: 14901728

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14901728

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP