JP2004070862A - メモリ資源最適化支援方法、プログラム及び装置 - Google Patents
メモリ資源最適化支援方法、プログラム及び装置 Download PDFInfo
- Publication number
- JP2004070862A JP2004070862A JP2002232724A JP2002232724A JP2004070862A JP 2004070862 A JP2004070862 A JP 2004070862A JP 2002232724 A JP2002232724 A JP 2002232724A JP 2002232724 A JP2002232724 A JP 2002232724A JP 2004070862 A JP2004070862 A JP 2004070862A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- area
- data
- speed
- simulation
- 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.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】シミュレータ部12は、アクセス速度の異なる少なくとも2つのメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションする。資源割付部10は、シミュレーション結果に基づいて、高速メモリ領域には可能な限りデータを配置せずにプログラムの目標実行速度を維持できるように、プログラム実行で使用するデータ領域を、高速メモリ領域と低速メモリ領域とに分配配置する最適なメモリ配置を決定する。
【選択図】 図1
Description
【産業上の利用分野】
本発明は、アクセス速度の異なる複数のメモリ領域をもつプロセッサシステム等を対象にメモリ資源割付の最適化を支援するメモリ資源最適化支援方法、プログラム及び装置に関し、特に、プロセッサシステムモデルのシミュレーションに基づいてメモリ資源割付の最適化を支援するメモリ資源最適化支援方法、プログラム及び装置に関する。
【0002】
【従来の技術】
近年、インターネットや携帯電話網を基盤とした様々な情報サービスが急速に普及しており、これらサービスへ対応するための情報機器の利用も急速に広まってきている。新しいサービス形態が次々と展開されていくなか、それに対応するための情報機器開発においては、開発期間とコストの短縮がより一層重要となってきている。
【0003】
そのような背景における近年の情報機器開発では、専用回路を中心とした情報機器開発ではなく、ソフトウェア変更によって柔軟なサービス対応が可能となるように、組み込み用途向けの汎用プロセッサ(MPUやDSP)をベースとして開発を行うのが一般的となっている。
【0004】
このような情報機器の開発においては、開発期間の短縮、メモリサイズの縮小によるハードウェアコストの縮減、ソースプログラムの移植性などが求められる。また、プログラムアルゴリズムを高速化することにより、より低速のプロセッサまたは低機能のプロセッサをベースとした機器開発が可能となり、結果としてハードウェアコスト削減に繋がるため、プログラム高速化も重要である。
【0005】
これらを踏まえ、開発効率やソースプログラムの移植性を配慮して高級言語でプロトタイピングし、速度のクリティカルな部分について処理の高速化を図るためにアセンブリ言語等の低級言語で開発を行い、マイクロプロセッサが有する性能をシステムとして最大限に活用する手法が広く用いられている。
【0006】
【発明が解決しようとする課題】
しかしながら、このような情報機器の設計段階において、システム全体として、ターゲットとするサービスアプリケーションに必要十分な性能が得られるかどうかを見積もることは非常に難しい。処理性能に必要以上に余裕を持たせて機器開発することは、オーバースペックでコスト高となる。設計時の性能見積もりの重要な要素として、プロセッサ性能、バス性能、メモリ性能、割り込み応答性能、消費電力など様々な要因が挙げられる。
【0007】
一般に、組み込みシステムのメモリ資源は、高速なローカルメモリや比較的低速な外部メモリなどのように階層化されている。搭載メモリの性能見積もりでは、プロセッサのローカルメモリやキャッシュ等の高価でアクセス速度が高速なSRAMなどのメモリと、速度は劣るもの安価で大容量搭載可能なDRAMなどのメモリとの、搭載容量比率のバランスがアプリケーション処理性能に大きく影響するため、重要である。
【0008】
情報機器の要となるプロセッサが高速、高性能であっても、メモリのアクセス速度が遅くてメモリからのデータ供給あるいはメモリへデータ出力に待ち時間が発生してしまっては、プロセッサの演算性能が最大限に活用できず、十分なシステム性能が得られなくなってしまう。
【0009】
高速メモリの容量が大きければ、目的のアプリケーションに対する処理性能を得られる一方、コスト高となる。高速メモリ容量を小さくすると、コストは下げられる反面、目標のアプリケーション性能が得られなくなってしまう可能性がある。
【0010】
このバランスの最適値の見積もりは非常に難しい問題であり、アプリケーションプログラムを開発して、高速化のためのプログラム最適化とメモリ配置の最適化を十分に行い、最適化と性能評価を繰り返して初めて、最適なメモリ容量が見えてくるのが現実である。
【0011】
メモリ配置の最適化については、容量削減と高速化の両面を配慮しながらシステム全体のメモリ使用状況とデータフローを十分に把握し、処理に応じて小容量で有限な高速メモリ上の使用済みデータを一度開放して退避し、別データを格納するデータ入れ替えなどが必要であるため、システム設計経験を積んだ開発者の高いスキルが要求され、開発工程短縮の妨げとなっている。
【0012】
以上のように、対象となるアプリケーションプログラムをあるシステム上で実現するために、システムの持つメモリ領域の最適容量を見積もり、全てのデータの最適なメモリ配置を見つけることは、開発者に豊富なシステム開発経験と高いスキルが要求され、非常に困難な作業であり、様々なサービスに対応できる柔軟な情報機器の開発では、プログラム高速化作業に加え、コストと性能を配慮したメモリ最適化作業が、開発期間短縮における大きな課題となっている。
【0013】
本発明は、システムにおけるメモリ配置の最適解を、システムモデルのシミュレーションを通じて自動的に生成するメモリ資源最適化支援方法、プログラム及び装置を提供することを目的とする。
【0014】
【課題を解決するための手段】
図1は本発明の原理説明図である。本発明は、メモリ資源最適化支援方法を提供するものであり、このメモリ資源最適化支援方法は、
アクセス速度の異なる少なくとも2つのメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレーションステップと、シミュレーションステップで得られたシミュレーション結果に基づいて、プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付ステップと、
を備えたことを特徴とする。
【0015】
このため本発明により、異なるアクセス速度を持つ複数のメモリ領域を備えたプロセッサシステムに対し、アプリケーションを目標実行時間内で処理するため、必要なメモリ領域の最小サイズ、特にアクセス速度の速い高速メモリ領域の最小サイズと、各メモリ領域にどのようにデータを配置すれば最適であるかを知ることができ、これによってシステム設計時の見積もりや、システム検証にかかる開発時間を大幅に短縮する。
【0016】
ここで資源割付ステップは、シミュレーション結果を解析し、高速メモリ領域には可能な限りデータを配置せずにプログラムの目標実行速度を維持できるように、プログラム実行で使用するデータ領域を、高速メモリ領域と低速メモリ領域とに分配配置することを特徴とする。
【0017】
資源割付ステップは、より詳細には、図1(B)のように、
任意のメモリ領域に各データ領域を適当に配置して、全ての領域のアクセスサイクルを高速メモリと同一に設定し、目標性能にと立つし得るか否か検査する初期検査ステップと、
初期検査ステップで実行時間が目標実行時間以内の場合、シミュレーション結果を解析して、値が大きいほど高速メモリ領域に配置する必要性が高くなる重みを設定して重み順に各データ領域を配列する重み付けステップS2と、
重み順データ領域配列の中で、高速メモリ領域への配置を必要とするデータ領域と、低速メモリ領域への配置でかまわないデータ領域との境界を探索する境界探索ステップS3と、
境界探索で求められた高速メモリ領域への配置を必要とする重み順データ領域配列から、重みの大きい順にデータ領域を取り出して実メモリを仮想した高速メモリ領域への配置を試行し、配置可能な場合は配置後にその領域をロックして重複配置を禁止する処理を繰り返す配置最適化ステップS4と、
を備えたことを特徴とする。
【0018】
ここで、重み付けステップは、各データ領域の重みを、シミュレーション結果におけるアクセス頻度とデータ領域サイズに基づいて設定する。例えば重み付けステップは、アクセス頻度が多いほど大きな値の重みを設定し、且つデータ領域サイズが小さいほど大きな値の重みを設定する。
【0019】
境界探索ステップは、全データ領域を高速メモリ領域に配置したと仮定した後、重みの小さいデータ領域から順番に低速メモリ領域に配置変更したと仮定して、この配置変更に対応したメモリウェイトサイクルをシミュレーション結果に設定することにより実行時間を再計算し、再計算した実行時間が目標実行時間を超えるまで処理を繰り返して、重み順データ領域配列の中の高速メモリ領域への配置を必要とするデータ領域の境界を探索する。
【0020】
また境界探索ステップは、2分法による探索としても良い。即ち、境界探索ステップは、全データ領域を高速メモリ領域に配置したと仮定した後、重み順データ領域配を2分して小さい重み側の各データ領域を低速メモリ領域に配置したと仮定して、この配置変更に対応したメモリウェイトサイクルをシミュレーション結果に設定することにより実行時間を再計算し、再計算した実行時間が目標実行時間に比べ小さい場合は、高速メモリ領域に残したデータ領域をさらに2分して小さい重み側を低速メモリ領域に配置し、大きい場合は低速メモリ領域に移したデータ利領域をさらに2分して大きい重み側を高速メモリ領域へと配置したと仮定して再計算を行うという処理を繰り返して、重み順データ領域配列の中の高速メモリ領域への配置を必要とするデータ領域の境界を探索する。
【0021】
配置最適化ステップは、実メモリを仮想した高速メモリ領域へのデータ領域の配置が出来ない場合、アクセスする時間情報に基づいてデータ領域を細分化し、細分化したデータ領域が時間的に重ならないように高速メモリ領域への配置を試行する。
【0022】
配置最適化ステップは、実メモリを仮想した高速メモリ領域へのデータ領域の配置ができないことが確定した場合、データ領域を重み順データ領域配列の中の低速メモリ領域側に移した後に、低速メモリ領域側から重みの大きい順にデータ領域を高速データ領域側に移して高速メモリ領域への配置を試行する。
【0023】
配置最適化ステップは、重み順データ領域配列における高速メモリ領域側の全データの高速メモリ領域への配置が成功した場合、実メモリを仮想した高速メモリ領域のサイズを縮小して再度配置を試行する。
【0024】
本発明は、メモリ資源最適化支援のためのプログラムを提供する。このプログラムは、コンピュータに、
アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレーションステップと、
シミュレーションステップで得られたシミュレーション結果に基づいて、前記プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付ステップと、
を実行させることを特徴とする。
【0025】
本発明は、メモリ資源最適化支援装置を提供する。このメモリ資源最適化支援装置は、図1(A)のように、アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレータ部12と、シミュレータ部12の制御によりプログラムを実行して得られたシミュレーション情報に基づいて、プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付部10と、シミュレータ部12と資源割付部10との間で情報を受け渡しするための記憶領域14と、を備えたことを特徴とする。
【0026】
尚、プログラム及びメモリ資源最適化支援装置の詳細は、メモリ資源最適化支援方法の場合と基本的に同じになる。
【0027】
【発明の実施の形態】
図2は,本発明によるメモリ資源最適化支援装置の基本構成のブロック図である。図2において,本発明のメモリ資源最適化支援装置は、資源割付部10、シミュレータ部12及び記憶領域14で構成される。シミュレータ部12は、アクセス速度が異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムを対象に、システム性能の評価対象となるアプリケーションプログラムをシミュレーションにより実行する。
【0028】
資源割付部10は、シミュレータ部12から出力されるシミュレーション結果に基づいて、メモリ資源を効率良く割り付けることによって対象とするプロセッサシステムのメモリ配置を最適化し、システム性能評価を支援する。記憶領域14は、資源割付部10とシミュレータ部12との間での情報の受け渡しに使用する。
【0029】
図3は本発明によるメモリ資源最適化支援装置におけるデータの流れである。メモリ資源最適化支援装置に対する入力ファイル11は、オブジェクトファイル26、ソース情報ファイル28及びオブジェクト情報ファイル30を含む。
【0030】
入力ファイル11の各ファイルは、Cソースファイル16をコンパイラ18に入力してアセンブリソースファイル20を作成し、続いてアセンブリ言語ソースファイル20をアセンブラ24に入力して生成している。またアセンブリソースファイル22を直接アセンブラ24に入力して生成することもできる。
【0031】
入力ファイル11の各ファイルはリンカ32に与えられ、リンク設定ファイル34に基づき、シミュレータ部12でアプリケーションプログラムを実行可能な形式に変換する。このリンク時のアドレス設定として、オブジェクトファイル26におけるプログラムメモリなどの配置設定としてデータ領域については、シミュレータ部12における対象となるプロセッサシステム中の任意のメモリ領域に各データ領域を適当に配置する。
【0032】
シミュレータ部12は、資源割付部10の指示に従い、各データ領域についてメモリアクセスを監視しながら、対象とするプロセッサシステムのシミュレーションを行う。シミュレータ部12は、一般的なプロセッサシステムのシミュレータと同様、プログラムのブレークポイント設定、メモリアクセスのブレーク設定、ブレーク時のマクロ起動、更にトレース情報出力などの機能を備えている。
【0033】
またメモリ領域に応じて、対象とするプロセッサシステムと等価のメモリアクセスウェイトを発生できるように、ウェイトサイクルを設定可能なメモリウェイトシミュレーション機能を備えている。
【0034】
ここでデータ領域とは、配列変数領域やメモリ割付関数(C言語のmalloc関数など)によって割り付けられたデータ領域などの個々のデータブロックを指している。
【0035】
資源割付部10は、データ領域の全てをシミュレーション時に監視するような設定を持つ初期設定ファイル36を生成し、シミュレーション設定ファイル38としてシミュレータ部12に入力する。シミュレータ部12は、システム性能の評価対象となるオブジェクトファイル26として与えられたアプリケーションプログラムのある区間について、各データ領域のアクセス履歴をシミュレーション情報ファイル40としてファイル出力しながらシミュレーションを行う。
【0036】
シミュレータ部12によるシミュレーションが済むと、資源割付部10はシミュレーション結果として得られたシミュレーション情報ファイル40に基づき、プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定し、メモリ配置情報42を処理結果として出力する。
【0037】
この資源割付部10による処理の基本的な考え方は、シミュレーション結果を解析し、高速メモリ領域には可能な限りデータを配置せずにプログラムの目標実行速度を維持できるように、プログラム実行で使用するデータ領域を高速メモリ領域と低速メモリ領域とに分配配置する。
【0038】
図4は、本発明のメモリ資源最適化支援装置が処理対象とするプロセッサシステムのモデルである。このプロセッサシステムのモデルは、MPU/DSPなどのプロセッサ44に対し、メモリコントローラ46を介して小容量の高速メモリ48を直接接続している。またバス45を介して、高速メモリ48に比べアクセス速度の遅い大容量の低速メモリ50を接続している。
【0039】
図5は本発明のメモリ資源最適化支援装置が処理対象とするプロセッサシステムの他のモデルである。このプロセッサシステムのモデルは、プロセッサ52がローカルメモリとして機能する高速アクセス可能な高速メモリ54を搭載しており、高速メモリ54に比べアクセス速度の遅い通常メモリ56をバス58に接続し、更にI/Oコントローラ60を介して外部メモリとして低速メモリ62を接続している。
【0040】
図6は、本発明によるメモリ資源最適化支援処理の基本的な処理手順のフローチャートであり、本発明におけるメモリ資源最適化支援方法及びその支援方法を実現するプログラムの流れを表わしている。
【0041】
図6において、まずステップS1でシミュレーションを行うプロセッサシステムモデル上の複数のメモリ領域に初期サイズを設定し、続いてステップS2でアプリケーションの目標性能、具体的には目標実行時間を設定して、シミュレーションを行う(初期検査)。
【0042】
ステップS3でシミュレーションにより目標性能をクリアしていることが判別されると、ステップS4に進み、メモリ配置最適化処理を実行する。このメモリ配置最適化処理により、最適解が求まればステップS6に進み、現在設定しているメモリ領域サイズはアプリケーション実行に十分であると判断し、メモリ領域のサイズを縮小し、ステップS4に戻って再度、メモリ配置最適化処理を繰り返す。
【0043】
このステップS4〜S6の処理の繰り返しにより、最適解が求まらなくなった場合には、与えられたメモリサイズがアプリケーション実行に不足していると判断し、ステップS7に進み、1つ前のメモリサイズで得られた解を最適解として処理を終了する。もちろん、ステップS2の初期検査によるシミュレーションに対し、ステップS3で目標性能がクリアされないことが判別された場合には、エラー終了とする。
【0044】
図7は、図6のメモリ資源最適化支援処理におけるステップS2〜S4の初期検査処理からメモリ配置最適化処理までの詳細を示したフローチャートである。図7において、初期検査処理64はステップS1〜S6で行われ、この初期検査の処理結果につきステップS7で目標性能をクリアしている場合には、メモリ配置最適化処理66として設けているステップS8〜S10の処理を実行する。
【0045】
ここで、以下のメモリ資源最適化処理の説明にあっては、メモリ領域を高速メモリ領域と低速メモリ領域との2種類で説明するが、対象とするプロセッサシステムとしては、図5のプロセッサシステムモデルのように3種類もしくはそれ以上のメモリ領域を搭載できる。
【0046】
3種類以上のメモリ領域を搭載している場合には、最も高速なメモリ領域とそれ以外のメモリ領域をそれぞれ高速メモリ領域と低速メモリ領域に置き換えて、本発明によるメモリ資源最適化処理を行えばよい。
【0047】
そして最適解が得られたら、更に複数の低速メモリをまとめて分類した領域について、その中で最も高速なメモリ領域とそれ以外のメモリ領域をそれぞれ高速メモリ領域と低速メモリ領域に置き換えて本発明による最適化処理を適用するという操作を繰り返し、高速側を次々に最適化していけばよい。
【0048】
図7において、まずステップS1〜S6の初期検査処理64を説明する。ステップS1で、対象とするプロセッサシステムの目標性能としてアプリケーションの評価区間とその目標性能値を設定する。
【0049】
図8は、図7のステップS1の目標性能値の設定に使用される目標値設定ファイル68である。目標値設定ファイル68にはアプリケーションの評価区間として、スタート位置としてソースプログラムの開始行「START」と終了行「END」として同じくソースファイルの終了行が記述され、更に目標性能値として目標実行時間「500msec」が記述されている。
【0050】
このような目標値設定ファイル68の内容に基づき、以下の処理にあっては、この目標性能値を満たすようにメモリ配置の最適化処理が行われる。またアプリケーションの評価区間とは、例えばアプリケーションの処理全体の内のある処理モジュールなどを指している。
【0051】
続いて図7のステップS2で初期設定ファイル36を取り込む。初期設定ファイル36は例えば図9のような形式となっている。即ち、初期設定ファイル36は、処理対象としているプロセッサシステムの各メモリ領域におけるリード及びライトのアクセス速度をウェイトサイクルにより設定している。
【0052】
図9の初期設定ファイル36にあっては、各領域に対し通常のリードウェイト及びライトウェイトを設定すると同時に、DMAにおけるリードウェイトとライトウェイトも設定している。
【0053】
続いて図7のステップS3で、全データを任意の大容量メモリ領域に各データ領域を適当に配置するようなリンク設定ファイルに基づいてリンク処理を行う。ここでは資源割付部10が資源割付の調整を繰り返していくための初期配置が行われれば良いため、リンク設定ファイルに基づくメモリ配置は任意の一元的な配置でよい。
【0054】
図10は、図7のステップS3におけるメモリ領域の配置に使用するリンク設定ファイル72の一例である。このリンク設定ファイル72にあっては、最も容量の大きな低速メモリ領域に全データ領域を配置するようにリンカを設定して、オブジェクトファイルを生成している。即ち、リンク設定ファイル72によるリンク設定にあっては、全てのデータ領域を0x800000番地以降に格納し、またプログラムコードを0x400000番地以降に格納するように、プログラムオブジェクトが生成される。
【0055】
このときリンカは図11のMAPファイル74に示すように、ラベル情報76、オブジェクト配置情報78、オブジェクトサイズ情報80などを含むリンク情報を出力するので、資源割付部10は、このリンク情報に基づいて図7のステップS4でシミュレータ部12に対するシミュレーションの動作設定を行う。
【0056】
この資源割付部10によるシミュレータ部への動作設定を説明すると、一般的に多くのシミュレータでは様々なトレース設定やメモリ領域ごとのアクセスウェイトなどの動作設定を行うことにより、指定アドレス領域内での書込回数や読出回数のアクセス頻度、プログラム動作時間(サイクル数)をシミュレーション情報として記録し出力することができ、本発明のシミュレータ部12もこのような設定に基づく動作が同様にできる。
【0057】
図7のステップS4におけるシミュレータ部への動作設定として、資源割付部10は、まず全データを配置したメモリ領域のアクセスウェイト数を高速メモリ領域のアクセスウェイト数と高速メモリ領域のアクセスウェイト数と同じ高速設定とする。
【0058】
この理由は、まず全データが高速アクセスできると仮定した状態で目標性能に到達できるかどうかを検査するためである。この全データの高速設定に対し、もし目標性能に到達できなかった場合には、メモリ配置の最適化をどのように行っても目標性能には到達し得ない。
【0059】
また図7のステップS4において、シミュレータ部12に対する動作設定として、資源割付部10は、リンカから得た初期の資源割付情報を元に、各メモリ領域へのアクセスを監視するようにシミュレーション設定を行う。
【0060】
図12は、図7のステップS4による全メモリ領域に対する最高速設定及び各メモリ領域のアクセス監視設定の記述を行ったシミュレーション設定ファイル38である。このシミュレーション設定ファイル38にあっては、ウェイトサイクル設定84として低速メモリ領域を含む全メモリ領域(ここでは24ビットアドレス空間)のアクセスウェイトを高速メモリ領域と同じウェイトサイクルに設定している。
【0061】
即ち、命令によるリード及びライトにつき1サイクル、DMAによるリード及びライトにつき2サイクルを設定している。またアクセス監視設定86として、データ領域0x800000から0x1000バイト、0x801000から0x10バイト、0x801010から0x1000バイトのそれぞれについて、アクセスを監視するように設定している。このため、シミュレーション設定ファイル38で設定された領域へのリードアクセスまたはライトアクセスが発生すると、その状態がシミュレーションログとして記録される。
【0062】
続いて図7のステップS5で、資源割付部10はシミュレータ部12を起動し、シミュレーションを行わせる。即ちシミュレータ部12は、図12のシミュレーション設定ファイル38に従って設定領域に対するアクセスを監視しながらシミュレーションを行い、得られた情報をシミュレーションログとしてシミュレーション情報ファイル40に出力し、記憶領域14を介して資源割付部10に渡される。
【0063】
図13は、図7のステップS5のシミュレーションで出力されたシミュレーションログ88の一例である。このシミュレーションログ88にあっては、関数f1()の内部で11002050サイクル目にアドレス0x800008番地へライトアクセスが発生し、その後、関数f1()からリターンした後、別の関数f2()がコールされ、その内部で11003021サイクル目で0x800010番地へのライトアクセスが発生し、更にその次のサイクルで0x800018番地へのライトアクセスが発生したことを示しており、その後、関数f2()から復帰している。
【0064】
図7のステップS5でシミュレーションを完了すると、資源割付部10はステップS6でシミュレーションログから評価対象区間の実行に要した処理サイクル数即ち実行時間を求め、ステップS7で目標性能をクリアしているか否かチェックする。
【0065】
このとき、もし目標性能をクリアしていない場合には、データ領域のメモリ配置をどのように調整しても目標性能には到達し得ないため、資源割付処理結果としてエラーを介してエラー終了とする。このエラー終了となった場合には、対象としているプロセッサシステムの基本性能、即ち動作クロックやメモリバンド幅などを改善するか、プログラムのアルゴリズムの高速化などを行い、改めて最初から本発明によるメモリ資源最適化支援処理をやり直すことになる。
【0066】
ステップS7でシミュレーションによる実行時間が目標性能をクリアしている場合には、メモリ配置最適化処理66におけるステップS8〜S10の処理に移行する。
【0067】
このメモリ配置最適化処理66は、ステップS8で、シミュレーション結果を解析して値が大きいほど高速メモリ領域に配置する必要性が高くなる重みを設定し、ステップS9で重み順に各データ領域を配列する重み順に並べたデータ領域配列の中の高速メモリ領域への配置を必要とするデータ領域の境界を探索する境界探索処理を行う。この機用階探索処理は、重み順データ領域配列の中で、高速メモリ領域への配置を必要とするデータ領域と、低速メモリ領域への配置でかまわないデータ領域との境界を探索する。
【0068】
更にステップS10で、境界探索で求められた高速メモリ領域への配置を必要とする重み順データ領域配列から重みの大きい順にデータ領域を取り出して、実メモリを仮想した高速メモリ領域への配置を調整する配置最適化処理を行う。
【0069】
そこで、このステップS8〜S10における各処理を詳細に説明すると次のようになる。まずステップS8の重み付け処理とステップS9の境界探索処理は、次の理由により行う。
【0070】
ステップS7でシミュレーション結果が目標性能をクリアしていた場合には、高速メモリ領域と同速度のアクセスが可能であると仮定した全データ領域のうち、一部低速メモリに配置し残りを高速メモリ領域へ残した状態でも、目標性能がクリアできる筈である。一般に高速メモリ領域はSRAMなどで構成され、部品コストが高い。そのため、高速メモリの搭載を最小限に抑え且つ目標性能を得られる境界点を求めることが重要である。
【0071】
ステップS9の境界探索処理は、この境界点を求めるものである。境界探索の前処理として、シミュレーションログから得られた各データ領域のアクセス頻度をもとに、ステップS8で各データ領域の重み付け処理を行う。
ステップS8の重み付け処理は、資源割付部10がシミュレーションログを解析し、各データ領域におけるメモリのアクセス頻度等を調べて各データ領域への重み付けを行う。
【0072】
例えばデータ領域の重みは、アクセス頻度fとデータ領域サイズsを用いて、W(f,s)で表わされる。重みW(f,s)の例としては、アクセス頻度の多いものほど処理速度の影響の生ずる領域として大きな値の重みを付け、逆にアクセス頻度の少ないデータ領域は重みを小さくする。
【0073】
またアクセス頻度が同じである場合、領域サイズが小さいほど高速メモリにおいても他に影響を与えないので、高速メモリに置いた場合に圧迫する大きなサイズのデータ領域に比べ重みを大きくする。
【0074】
図14は、このような重み設定の基準に基づく重み付け処理の詳細を示したフローチャートである。この重み付け処理は、まずステップS1でシミュレーションログを解析し、各データ領域のアクセス頻度を測定する。
【0075】
次にステップS2で、アクセス頻度の高いデータ領域を上位、アクセス頻度の低い領域を下位としてソートする。ステップS3では、同じアクセス頻度のデータ領域については領域サイズの小さいものほど高速メモリに格納しても他の格納データ領域を圧迫しないという判断で上位に順位付けする。このステップS1〜S3の手順で全てのデータ領域をソートした後、ソート順に従って重み付けを行う。
【0076】
この重み付けの手法は、アクセス頻度fとデータ領域サイズsを用いて重みをW(f,s)として表現しているが、他の方法による重み付けであっても構わない。
【0077】
このようにして重み付け処理の終わった各データ領域は
(1)領域サイズ
(2)重み
(3)最初のアクセス時刻
(4)最初のアクセスから最後のアクセスまでのアクセス継続期間
を記録して管理する。この重み付け処理の終わった各データ領域のC言語記述による管理データ構造を図15に示す。
【0078】
図15は重み付けの済んだ各データ領域のデータ構造としてAREAデータ構造体90を記述している。このAREAデータ構造体90は、データ領域の名称「areaname」に続いて重み「weight」、領域サイズ「size」、最初のアクセス時刻「starttime」、アクセス継続時間「lifetime」を記述している。なお、このデータ構造には更に、SEGデータ構造体106及びLIFEデータ構造体108を設けているが、この点については後の説明で明らかにする。
【0079】
図7において、ステップS8の重み付け処理が終了すると、ステップS9で境界探索処理を行う。図16は、この境界探索処理の詳細を示したフローチャートである。
【0080】
図16において、ステップS1で資源割付部10が、重みが最小のデータ領域が格納されていたメモリ領域についてのみ、メモリのウェイトサイクル設定を本来の低速のウェイトサイクルに設定し、ステップS2でシミュレーションログに基づいて処理サイクル数(実行時間)を再計算する。
【0081】
この再計算の結果、ステップS3で目標性能がクリアできているか否かチェックし、クリアできていればステップS4に進み、次に重みの小さいデータ領域に対し同様にウェイトサイクルを低速メモリのウェイトサイクルに設定し直し、ステップS2で処理時間を再度、計算する。
【0082】
以下同様にして、ステップS2〜S4で高速メモリに置いたと仮定した各データ領域の重みの小さい領域から順番に低速メモリのウェイトサイクルに設定変更しながら、処理時間の計算を繰り返す。
【0083】
この処理の繰り返しで、ステップS3で目標性能がクリアされないことが判別されると、ステップS5に進み、最後に低速メモリのウェイトサイクルに設定したデータ領域を高速メモリのウェイトサイクルの設定に戻した後、このときのデータ領域の重みを境界値として保存し、境界探索処理を終了する。
【0084】
ここで図16の境界探索処理にあっては、重みの小さなデータ領域から順に探索処理を行っているが、他の探索アルゴリズムを適用してもよい。例えば、境界探索アルゴリズムとして2分法によるアルゴリズムが適用できる。
【0085】
2分法による境界探索処理は、重み順にソートしたデータ領域の配列を2分し、中央の重みから最小重みまでのデータ領域配列につき、各データ領域を低速のウェイトサイクルに設定して処理時間を計算し、目標性能をクリアしていれば、中央の重みから最大重みまでのデータ領域配列を2分の1にして、その半分まで即ち重みの小さい側の合計で全体の4分の3までを更に低速のウェイトサイクルに設定して処理時間を計算し、逆に目標性能をクリアしていなければ、全体の小さい重み側の4分の1までを低速のウェイトサイクル、重みの大きいほうの4分の3を高速のウェイトサイクルに設定して処理時間を再計算していくという手順の繰り返しによって境界を探索する。
【0086】
このようにして高速メモリ領域に配置すべきデータ領域の境界が探索できると、図7のステップS10において、重みの大きい高速メモリ領域に配置すべきデータ領域を対象にメモリ配置を調整する配置最適化処理を行う。
【0087】
この配置最適化処理に至る前の重み付け処理及び境界探索処理は、高速メモリ領域のサイズを考慮せず、目標性能を得るためにどれだけのデータ領域を高速メモリに置かなければならないか、またどれだけのデータ領域を低速メモリに配置しても目標性能が確保できるかという点に着目して進めてきた手法である。
【0088】
これに対しステップS10の配置最適化処理によるメモリ配置の調整は、高速メモリ領域のサイズを本来のプロセッサシステムモデルと同等に制限し、この制限した高速メモリ領域の中で、高頻度アクセスが必要なデータ領域について各データ領域の配置調整を行う。
【0089】
図17は、図7のステップS10における配置最適化処理の詳細を示したフローチャートである。
【0090】
図17の配置最適化処理にあっては、まずステップS1で高速メモリに配置しなくてはならないデータ領域の中で最大の重みを持つデータ領域を選択する。続いてステップS2で、選択した最大の重みを持つデータ領域のサイズをもとに、このデータ領域の生存時間の間、高速メモリ領域に空きがあって配置可能かどうかを調べる。
【0091】
高速メモリ領域に配置可能であれば、ステップS6に進んで、処理対象となっているデータ領域を高速メモリ領域へ割り当てる配置アドレス解決処理を実行する。一方、ステップS2で高速メモリ領域に配置できない場合には、ステップS3の領域細分化処理により対象データ領域をより細かなデータ領域に分割する。ここで対象データ領域を分割した領域をデータセグメントという。
【0092】
次にステップS4で分割されたデータセグメントのうち最初にアクセスされるデータセグメントを1つ選択し、ステップS5で高速メモリ領域に配置可能か否かチェックする。
【0093】
ここでデータセグメントが高速メモリ領域に配置可能であれば、ステップS6の配置アドレス解決処理に移行する。ステップS5でデータセグメントの高速メモリ領域への配置ができない場合には、ステップS11に進み、更に細分化は可能か否かチェックし、可能であれば細分化の閾値を変更してステップS3に戻り、再度、領域細分化処理を行う。
【0094】
ステップS6で配置アドレス解決処理が済むと、ステップS7のデータ転送処理設定を経て、ステップS8に進み、未配置のデータセグメントが残っていれば、ステップS13で残りのデータセグメントから1つ選択した後、再びステップS5に戻り、データセグメントの高速メモリ領域への配置可能性をチェックする。
【0095】
このステップS5〜S8,S13の処理の繰り返しによりデータセグメントの処理が終わるかデータセグメントを更に分割したセグメントの処理が終わると、ステップS8からS9に進み、未配置のデータ領域が残っていれば、ステップS10で次に重みの大きなデータ領域を選択して、ステップS2からの処理を繰り返す。
【0096】
ここで、図17の配置最適化処理で各データ領域をメモリ領域に配置した際の配置情報の取扱いを説明する。メモリ領域は物理的にはアドレスが対応付けられているだけなので、アドレス方向への1次元の概念で領域を表現することができる。
【0097】
しかし、アプリケーション稼動時のメモリ管理を考慮する場合には、メモリ領域の使用状況に時間軸の概念を加えて2次元のメモリ管理を行う必要がある。これは、同じメモリアドレスでも時間が違えば異なるデータを配置できるからである。
【0098】
図18は、時間軸を考慮した各データ領域のメモリ配置の説明図である。図18の例にあっては、縦軸方向に配置した実メモリ領域92のメモリアドレスに対し、横軸方向に時間Tを取り、メモリ管理を2次元で行っている。
【0099】
この例では#1〜#6で示す6つのデータ領域94,96,98,100,102,104のデータセグメントを例にとっている。このうち#5データ領域はデータセグメント102−1,102−2に細分化されており、それぞれアクセス継続時間としてlife1,life2,life3を持っている。即ち、この例では#5データ領域102が1回で配置されず、細分化されたデータセグメント102−1,102−2として時間をずらして配置されている。
【0100】
このような時間軸を考慮したデータ領域のメモリ配置情報は、図15のAREAデータ構造体90を用いて管理し、データ領域を最適化した場合のセグメント個数や時間軸方向のデータ生存回数などが処理依存で可変なため、この実施形態ではリスト構造を用いている。
【0101】
本発明でメモリ配置するデータ領域はAREAデータ構造体90で表現され、
(1)データ領域名(areaname)
(2)領域の重み(weight)
(3)データ領域サイズ(size)
(4)データ領域のアクセス開始時刻(starttime)
(5)データの生存時間(lifetime)
(6)セグメントへのポインタ(nextsegment)
(7)配置アドレス(adrs)
初期段階で各データ領域はデータ領域名とサイズのみの値を持っており、シミュレーションログの解析と重み付け処理を経て、重み、アクセス開始時刻及び生存時間を確保する。その後、データ領域の細分化処理が行われたときに初めて、細分化されたデータセグメントの情報を全て数珠繋ぎにリンクするポインタが生成される。なおデータセグメントへのポインタの初期値は0である。
【0102】
図15において、AREAデータ構造体90は、細分化されるとSEGデータ構造体106を生成し、そこへのポインタをAREAデータ構造体90の「nextsegment」にセットする。更に細分化されたセグメントがあれば、最初のSEGデータ構造体106の「nextsegment」に次のセグメントへのポインタをセットする。
【0103】
また各データセグメントにはデータの生存時間があり、ある時間からアクセスが始まり、ある時間でアクセスが停止する。そして、そのまま二度とアクセスされないこともあれば、再びある時間の経過後アクセスされることもある。
【0104】
このデータセグメントの生存時間を、図15にあってはLIFEデータ構造体108で表現している。このLIFEデータ構造体108は、あるデータセグメントについて生存時間が何度も現れる場合には次の生存時間へのポインタを「nextlife」にセットし、数珠繋ぎにリンクする。
【0105】
図19は時間軸を考慮したメモリ配置において、#5データ領域を細分化したデータセグメント102−1,102−2の生存時間を示しており、#5データ領域のデータセグメント102−1はアクセス時刻t1から生存時間life1を持ち、次のデータセグメント102−2はアクセス開始時刻t2から生存時間life2を持ち、更に一度出現したデータセグメント102−1はアクセス開始時刻t3から生存時間life3を持っている。
【0106】
図20は、図19における#5データ領域のデータセグメントのポインタによるリンク構成を示している。
【0107】
図20において、#5データ領域のAREAデータ構造体102は、ポインタ112により細分化したデータセグメントであるSEGデータ構造体102−1をリンクしている。SEGデータ構造体102−1は、ポインタ114により更に細分化したデータセグメントであるSEGデータ構造体102−2をリンクしている。またSEGデータ構造体102−1は生存時間が2回現れることから、この2回目の生存時間についてポインタ116によりLIFEデータ構造体103をリンクしている。
【0108】
図21は、図17のステップS2及びS5における高速メモリ領域配置可否判定の詳細を示したフローチャートである。この図21における高速メモリ領域の配置の可否判定処理を、図20に示したようなデータ領域のデータ構造に基づいて説明すると次のようになる。
【0109】
図21において、まずデータ領域はAREAデータ構造体のメンバーとして、データサイズ、アクセス開始時刻及びアクセス開始時間を図15に示したように保持しているため、高速メモリ領域の使用状況チェックの最初の処理として、ステップS1で既に配置が済んでロックされたデータ領域のリストから同じ時刻帯に高速メモリ領域を使用するデータ領域即ち時刻衝突する時刻領域が存在するかどうか検査し、衝突データ領域あるいは衝突データセグメントのリストを生成する。
【0110】
図22は、図21のステップS1の衝突データ領域あるいは衝突セグメント領域を検出する時刻衝突データ領域検出処理のフローチャートである。
【0111】
図22の時刻衝突データ領域検出処理にあっては、ステップS1で既に配置の済んだデータ領域をAREAデータ構造体のポインタ配列area[i]とする。ここでポインタiは、0<i<配置済みデータ領域数[MAXAREANUM]である。
【0112】
続いてステップS2で、配置対象データ領域または対象データセグメントのメモリ使用開始時刻を[starttime]とし、使用期間を[lifetime]とする。そして、他の配置済みデータ領域のデータアクセスが使用開始時刻[starttime]から使用期間[lifetime]の間に重ならないかどうかを検査する。重なる場合にはステップS3に進み、衝突リストconflictlist[ ]にポインタpを追加する。
【0113】
続いてステップS4で配置済みデータ領域が次のセグメント[nextsegment]を持っていることを判別した場合には、ステップS5で更にポインタpによるリンクを辿って、次のセグメントにつきステップS7から再びステップS2に戻って、同様な処理を繰り返す。
【0114】
ステップS4で配置済みデータ領域の全てのセグメントを辿って検査処理が済むと、ステップS6で次の配置済みのデータ領域をポインタpにセットし、ステップS7からステップS2に戻って、同様の検査処理を繰り返す。そしてステップS7で全ての配置済みデータ領域についての検査処理の終了が判別されると一連の処理を終了し、衝突データ領域及び衝突データセグメント領域のリストconflictlist[ ]が完成する。
【0115】
次に、図21のステップS2で、図22の処理で得られた衝突データ領域リストに格納された配置済みデータ領域または配置済みデータセグメントの配置アドレスを検査し、対象データ領域の配置に適切な必要最小限の空き容量を算出する。
【0116】
図23は、図21のステップS2における対象データ領域を配置する空き領域探索の説明図である。図23において、実メモリ領域と時間の2次元で表わされたメモリ領域に対し、対象データ領域120を配置するための空き領域を検出しようとしている。対象データ領域120は使用時間「file 1」を持ち、またサイズ「size 1」を持っている。
【0117】
一方、実メモリ領域には既にデータ領域122,124,125,126及び128が配置済みである。このような配置済みのデータ領域122〜128に対し、対象データ領域120の使用期間「life 1」について、斜線部で示す4つの空きエリア130−1,130−2,130−3,130−4が存在している。
【0118】
図21のステップS2の処理にあっては、このような対象データ領域120について配置済みデータ領域の中から斜線部の空きエリア130−1〜130−4を検出し、対象データ領域120のサイズ「size 1」を満たす例えば未使用エリア130−2を検出して配置する。
【0119】
図24は、図23のような空き領域の探索処理を実現する図21のステップS2の配置先領域検索処理の詳細を示したフローチャートである。
【0120】
図24にあっては、衝突リストにある領域に隣接する空き領域を全て検査しながら、対象データ領域のサイズを下回る空き領域は破棄し、対象データ領域が配置可能なサイズの空き領域があれば、その空き領域の中で最小の領域を出力する。
【0121】
まずステップS1で、対象領域の配置に必要なサイズを「targsize」にセットする。またステップS2で、隣接する空き領域jの下限アドレス「min」をメモリ領域最後尾「MAXMEMORY」にセットする。続いてステップS3で、衝突リスト「conflictlist[ ]」からiをパラメータとして、隣接する空きをチェックする対象となる衝突領域を1つ取り出し、検査を開始する。
【0122】
この場合、取り出した衝突領域と別にもう1つjをパラメータとして次の衝突領域を順に取り出し、検査対象の衝突領域との配置関係を検査する。検査対象の衝突領域の最後尾「conflictlist[i]→adrs+conflictlist[i]→size」の次に取り出した衝突領域の先頭「conflictlist[j]→adrs」が大きければ、その間に空き領域が存在することになる。
【0123】
空き領域が存在すれば、ステップS4で、これまでに得られた空き領域のサイズの下限「min」と比較し、これより大きければ空き領域のサイズを変更する必要はないことから、ステップS7に進んで、パラメータiを増加してステップS3に戻り、次の空き領域の検査に進む。
【0124】
空き領域のサイズがデータ領域のサイズより小さければ、ステップS4からステップS5に進み、データ領域のサイズ「targsize」よりも大きいかどうか検査し、大きければステップS6に進んで、空き領域のサイズを「min=conflictlist[j]→adrs」として縮小する。
【0125】
一方、ステップS5で空き領域が配置したいデータ領域のサイズよりも小さくなってしまう場合には、この隣接した空き領域は不適切であるため、ステップS11に進んでパラメータiを増加して、ステップS2に戻り、次の空き領域の検査に移る。
【0126】
またステップS7で衝突リストの最後まで進んだことが判別されると、ステップS8に進んで、空き領域のサイズ「area」がこれまでに得られた対象データ領域の格納に適した最小空き領域よりも小さいかどうか、ステップS9で「minarea>area?」として判断する。
【0127】
現在得られている空き領域がこれまでに得られた最小空き領域よりも小さければ、ステップS10に進んで、現在得られている空き領域を「min=area」として、新たな配置先候補にセットし、更に「location=conflictlist[i]→adrs+conflictlist+[i]→size」として、配置先のアドレスを保存する。
【0128】
このようなステップS1〜S11の処理を繰り返し、ステップS11で配置済みデータ領域数をパラメータiが超えると、処理を終了し、必要最小限の空き領域の先頭アドレスであるlocationを検索することができる。
【0129】
再び図21を参照するに、ステップS2で図24のフローチャートに従って対象データ領域または対象データセグメントの配置に必要な最小限の空き領域の確保がステップS3で判別されると、ステップS4に進み、その空き領域の情報を退避して成功ステータスをセットし、図17の処理にリターンする。一方、ステップS3で空き領域が確保できなければ、ステップS5で空き領域なしの失敗ステータスをセットして図17の処理にリターンする。
【0130】
図25及び図26は、図17のステップS3における領域細分化処理の詳細を示したフローチャートである。この細分化処理における基本方針は、細分化を行う対象データ領域のアクセス状況をシミュレーションログから再度解析し、関数のコールからリターンを1つの区切りとして、その期間にアクセスされた領域を1つのブロックとしてセグメント分割の単位と見なして処理していく。
【0131】
図25において、まずステップS1でシミュレーションログから対象データ領域へのアクセス、及び関数コールと関数リターンの情報のみを抽出した細分化情報ファイルを生成する。続いてステップS2でメモリアクセスを示すフラグ「startflag」及びネストレベル「nestlevel」を0に初期化した後、ステップS3で細分化情報ファイルから1行ずつ取り込み、ステップS4で関数コールの発生を判別すると、ステップS5で関数ネストレベルを増加させ、ステップS3に戻る。
【0132】
またステップS6で関数からのリターンが発生したら、図26のステップS16を経由してステップS18に進み、ネストレベルを1つ減少させる。ここで初期状態にあっては、ステップS2のようにネストレベルは0であり、メモリアクセスは「startflag=0」として未開始状態にある。
【0133】
ステップS3で読み込んだ細分化情報ファイルのある行について、メモリアクセスが出現すると、初期状態にあっては「startflag=0」であるので、ステップS4,S6,S7,S8からステップS13に進み、新規のセグメント作成処理となる。
【0134】
この新規のセグメント作成処理にあっては、この時点でのネストレベルを記録し、セグメントの先頭アドレス「startadrs」をアクセスの発生したアドレス「adrs」に設定する。この時点でのセグメントサイズは、発生したメモリアクセスのデータサイズ例えば2バイトなどである。
【0135】
引き続きステップS3に戻って細分化情報ファイルを読み込み、メモリアクセスが続けば更にセグメントの作成は開始されているため、ステップS4,S6〜S8を介してステップS9に進み、アドレスチェックを行う。
【0136】
ステップS9にあっては、現在のセグメント先頭アドレス「startadrs」よりも小さなアドレス「adrs」をアクセスした場合には、ステップS14で「startadrs=adrs」としてセグメント先頭アドレスを更新する。
【0137】
またステップS10で現在のセグメントの末尾「startadrs+size」よりも更に後ろのアドレスをアクセスした場合には、ステップS11でセグメントサイズを「size=adrs−startadrs」として更新する。これにより、セグメントの領域を拡張していくことができる。
【0138】
セグメントの領域の拡張が終了するのは関数コールとリターンを単位としており、拡張中のセグメントを閉じる条件は、ステップS7でセグメントを作成したネストレベルよりも浅いレベルでメモリアクセスを行ったときとし、この場合にはステップS15に進んでセグメントを閉じる処理を行う。
【0139】
また拡張中のセグメントを閉じる条件としては、図26のステップS16においてセグメントを作成したネストレベルよりも浅いレベルに更に関数リターンが発生したとき、ステップS17に進んでセグメントを閉じるようにしてもよい。
【0140】
図25のステップS15または図26のステップS17でセグメントを閉じる際には、SEG データ構造体にSEGデータ構造体メンバーの「offset」,「size」,「starttime」,「lifetime」といった必要な情報を書き込んで、そのSEGデータ構造体を対象データ領域からポインタを辿った最後尾にリンクする。
【0141】
もちろん、このとき同一のセグメントが既に作成されていた場合には、SEGデータ構造体ではなくLIFEデータ構造体を新たに生成して、「starttime」と「lifetime」という必要な情報を書き込み、既に作成されたセグメントのSEGデータ構造体の「nextlife」から辿ったLIFEデータ構造体の最後尾にリンクする。
【0142】
以上のような細分化処理を対象データ領域について行うことにより、対象データ領域から細分化された複数のセグメントに次々にリンクされた例えば図20に示したようなリスト構造が完成する。
このようにして細分化されたデータセグメントについては、図17のステップS4,S5において、細分化前のデータ領域に対する場合と同様にして、図21の配置の可否判定処理を行う。
【0143】
もし配置が不可能な場合には、データセグメントの更なる細分化が行われないか否か判定する。データセグメントを更に細分化する手法の一例として、ネストレベルに閾値を持たせ、その閾値を超えた深さを単位として細分化する方法がある。
【0144】
図27は、ネストレベルに閾値を持たせて閾値を超えた深さを単位として細分化する方法の細分化処理制御を示している。図27において、縦軸が処理時間、横軸がネストレベルであり、ブロック132の中に示すように、斜線のブロックがメモリアクセスを示し、それを繋ぐラインが処理を示している。
【0145】
図27において横軸のネストレベルに対しては、例えばある閾値160が設定されている。メモリアクセス134に続いて関数コールがあると、メモリアクセス136となり、更に関数コールがあるとメモリアクセス138に移行する。このときネストレベルが閾値160を超える。
【0146】
閾値160をネストレベルが超えた後、メモリアクセス138,140,142,144と関数コールによりネストレベルが深まり、メモリアクセス144の後、関数のリターンでネストレベルが戻ってメモリアクセス146となり、再び関数コールによりネストレベルが1つ深くなってメモリアクセス148,150となり、その後関数コールのリターンにより閾値160に戻ってメモリアクセス152,154となり、更に関数コールで最初に戻る。
【0147】
この場合、ネストレベルの閾値160を超えたメモリアクセス138〜150により、セグメント化されたメモリアクセス162が形成される。
【0148】
図28は、図27に対し更にネストレベルの閾値を閾値164のように深くした場合である。この場合の同様な関数コールとリターンによるメモリアクセスに対し、ネストレベルを深くした閾値164により、図27の7つのメモリアクセスを含むセグメント化されたメモリアクセス162に対し、図28にあっては、5つのメモリアクセスを含むセグメント化されたメモリアクセス166となり、より小さな細分化が実現できる。
【0149】
一方、細分化を繰り返してもセグメントの配置ができない場合には、そのデータ領域は高速メモリ領域に配置不可能と判断し、配置ができなかったデータ領域は低速メモリ側へ配置するものとして、高速メモリ配置対象のリスト配列area[ ]から外す。
【0150】
一方、細分化したセグメントが配置可能である場合には、配置可能判定時に調査した空き領域へ配置するように、SEGデータ構造体のメンバー「adrs(アドレス)」に配置アドレスの値をセットする。
【0151】
ここで細分化によってもデータセグメントの配置ができない場合、その対象データ領域を低速メモリ側に追い出して次に重み付けの大きいデータ領域の処理に移行するようになるが、1つのデータ領域が低速メモリ側に追い出されることによって全体の処理時間が長くなり、性能不足に陥る可能性がある。
【0152】
これを解消するため、配置ができなかった対象データを低速メモリに追い出した後、低速メモリ側にある次に重みの大きいデータ領域を高速メモリ側に移すことにより、高速メモリ領域に配置ができなかったデータ領域を低速メモリ側に追い出すことによる全体の処理時間が長くなって性能不足に陥る問題を解消できる。
【0153】
以上のような一連の処理手順を経て最適化されたメモリ配置と配置のタイミングは、図3のデータの流れに示すように、資源割付部10よりメモリ配置情報のファイルとして出力される。
【0154】
また図6のフローチャートに示したように、ステップS4でメモリ配置最適化処理を行ってステップS5で配置が成功すると、ステップS6で高速メモリ領域のサイズ設定を更に縮小し、ステップS4に戻って再度、メモリ配置最適化処理を繰り返し、アプリケーションを実行するための目標性能を満たす最小限の高速メモリ容量を求めることができる。
【0155】
またユーザは、メモリ最適化処理によって出力される各データ領域のメモリ配置及びこれを参照して初期配置からどのような高速メモリへデータを転送しまた入れ替えればよいかを知ることができるため、最適なデータ配置状態をプログラミングすることが容易となる。
【0156】
更に、最適化を行った結果のメモリ配置として高速メモリ領域に常駐的に置いておくデータがあれば、この常駐データをオブジェクトリンク時に高速メモリ領域に配置されるようにリンカ設定ファイルへ設定すればよい。
【0157】
最後に、図17のフローチャートのステップS7における配置を調整したデータ領域のデータ転送処理設定について説明する。このデータ転送処理設定は配置最適化の結果を反映してシミュレーションを行うための処理であり、このデータ転送配置処理は行わなくてもメモリ配置の最適化自体は可能であり、その理由は初期化検査のシミュレーションによって得られるシミュレーションログによってメモリアクセスの情報は既に獲得しており、このメモリアクセスの情報をもとに図17の配置最適化処理が全て実現できるためである。
【0158】
このためデータ転送処理設定は、配置最適化処理によって配置を決定した各データ領域について、実際に低速メモリ領域から高速メモリ領域へデータを入れ替えてシミュレーションを行うためのものである。これによって転送によるオーバーヘッド見積もりができるようになるため、配置最適化を適用した場合の性能見積もりの精度が向上する。
【0159】
データ転送処理の方法はいくつかあるが、ここではシミュレータ部12が設定した期間に設定領域をバンク切替できる機能を持っている場合を例に取る。シミュレータ部12のバンク切替えは、任意のデータ領域を別の任意のデータ領域にマッピングでき、その切替えを時刻指定できる。
【0160】
そこで資源割付部10は、バンク切替えのシミュレーション設定として、配置最適化処理によって得られた各データ領域及びデータセグメントの配置情報であるアドレス、サイズ、時間をシミュレータ部12に出力して設定する。
【0161】
図29は、このためのバンク切替シミュレーション設定ファイル170である。図29において、バンク切替シミュレーション設定ファイル170は、この例にあっては1120サイクルで0x8003000から0x200サイズの範囲を0x200200からのメモリ内容に置き換え(コピー)するものである。
【0162】
後続する1350サイクル目及び1800サイクル目も同様である。また、この例では、バンク切替えに相当するDMA転送を行った場合に、そのDMA転送設定に要するサイクル数を標準的なオーバーへッドとして25サイクルと定義している。
【0163】
このようなバンク切替シミュレーション設定ファイル170による設定で本来のメモリウェイトサイクルによるシミュレーションを実行すると、データが高速メモリ領域に置かれていなくてはならない期間の始まりでシミュレータ部12によるバンク切替えによって瞬時に必要なデータが高速メモリ領域に転送されたかのようにシミュレーションでき、プログラムによってあるいはDMA転送によって高速メモリ領域へデータ転送を行った場合と同様のシミュレーション動作が可能となる。
【0164】
このようなデータ転送設定をシミュレータ部12に行うことにより、最適配置の結果にDMA転送の設定オーバーヘッドを加味した精度の高いシミュレーションを行うことができる。
【0165】
一方、DMA転送オーバーヘッドを0としたシミュレーションはもちろん可能であるため、DMA転送オーバーヘッドの合計を把握でき、全体性能をもし圧迫するならば、メモリ配置最適化の最初に設定する目標性能を更に厳しく設定して最終的な目標性能に近づけることも容易にできる。
【0166】
このように、アプリケーションプログラムに修正を入れずにシミュレーションによるDMA転送を含む処理が検証可能となり、検証が完了した段階でDMA転送のためのコードを追加するだけでよいことから、プログラムソースの変更を最小限に抑えることが可能となる。
【0167】
なお本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に本発明は上記の実施形態に示した数値による限定は受けない。
【0168】
ここで本発明の特徴を列挙すると、次の付記のようになる。
(付記)
(付記1)
アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレーションステップと、
前記シミュレーションステップで得られたシミュレーション結果に基づいて、前記プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付ステップと、
を備えたことを特徴とするメモリ資源最適化支援方法。(1)
【0169】
(付記2)
付記1のメモリ資源最適化支援方法に於いて、前記資源割付ステップは、前記シミュレーション結果を解析し、高速メモリ領域には可能な限りデータを配置せずにプログラムの目標実行速度を維持できるように、プログラム実行で使用するデータ領域を、高速メモリ領域と低速メモリ領域とに分配配置することを特徴とするメモリ資源最適化支援方法。(2)
【0170】
(付記3)
付記1のメモリ資源最適化支援方法に於いて、前記資源割付ステップは、
任意のメモリ領域に各データ領域を適当に配置して、全ての領域のアクセスサイクルを高速メモリと同一に設定し、目標性能にと立つし得るか否か検査する初期検査ステップと、
前記初期検査ステップで実行時間が目標実行時間以内の場合、前記シミュレーション結果を解析して、値が大きいほど高速メモリ領域に配置する必要性が高くなる重みを設定して重み順に各データ領域を配列する重み付けステップと、
前記重み順データ領域配列の中で、高速メモリ領域への配置を必要とするデータ領域と、低速メモリ領域への配置でかまわないデータ領域との境界を探索する境界探索ステップと、
前記境界探索で求められた境界の高速メモリ領域側の重み順データ領域配列から、重みの大きい順にデータ領域を取り出して実メモリを仮想した高速メモリ領域への配置を試行し、配置可能な場合は配置後にその領域をロックして重複配置を禁止する処理を繰り返す配置最適化ステップと、
を備えたことを特徴とするメモリ資源最適化支援方法。(3)
【0171】
(付記4)
付記3のメモリ資源最適化支援方法に於いて、前記重み付けステップは、各データ領域の重みを、前記シミュレーション結果におけるアクセス頻度とデータ領域サイズに基づいて設定することを特徴とするメモリ資源最適化支援方法。
【0172】
(付記5)
付記4のメモリ資源最適化支援方法に於いて、前記重み付けステップは、前記アクセス頻度が多いほど大きな値の重みを設定し、且つデータ領域サイズが小さいほど大きな値の重みを設定することを特徴とするメモリ資源最適化支援方法。
【0173】
(付記6)
付記3のメモリ資源最適化支援方法に於いて、前記境界探索ステップは、全データ領域を高速メモリ領域に配置したと仮定した後、重みの小さいデータ領域から順番に低速メモリ領域に配置変更したと仮定して、前記配置変更に対応したメモリウェイトサイクルを前記シミュレーション結果に設定することにより実行時間を再計算し、再計算した実行時間が目標実行時間を越えるまで処理を繰り返して、前記重み順データ領域配列の中の高速メモリ領域への配置を必要とするデータ領域の境界を探索することを特徴とするメモリ資源最適化支援方法。
【0174】
(付記7)
付記3のメモリ資源最適化支援方法に於いて、前記境界探索ステップは、全データ領域を高速メモリ領域に配置したと仮定した後、前記重み順データ領域配列を2分して小さい重み側の各データ領域を低速メモリ領域に配置したと仮定して、前記配置変更に対応したメモリウェイトサイクルを前記シミュレーション結果に設定することにより実行時間を再計算し、再計算した実行時間が目標実行時間に比べ小さい場合は、高速メモリ領域に残したデータ領域をさらに2分して小さい重み側を低速メモリ領域に配置し、大きい場合は低速メモリ領域に移したデータ利領域をさらに2分して大きい重み側を高速メモリ領域へと配置したと仮定して再計算を行うという処理を繰り返して、前記重み順データ領域配列の中の高速メモリ領域への配置を必要とするデータ領域の境界を探索することを特徴とするメモリ資源最適化支援方法。
【0175】
(付記8)
付記3のメモリ資源最適化支援方法に於いて、前記配置最適化ステップは、実メモリを仮想した高速メモリ領域へのデータ領域の配置が出来ない場合、アクセスする時間情報に基づいて前記データ領域を細分化し、細分化したデータ領域が時間的に重ならないように前記高速メモリ領域への配置を試行することを特徴とするメモリ資源最適化支援方法。
【0176】
(付記9)
付記8のメモリ資源最適化支援方法に於いて、配置最適化ステップは、ネストレベルに閾値を持たせて閾値を超えた深さを単位として細分化するすることを特徴とするメモリ資源最適化支援方法。
【0177】
(付記10)
付記3のメモリ資源最適化支援方法に於いて、前記配置最適化ステップは、実メモリを仮想した高速メモリ領域へのデータ領域の配置ができないことが確定した場合、前記データ領域を重み順データ領域配列の中の低速メモリ領域側に移した後に、低速メモリ領域側から重みの大きい順にデータ領域を高速データ領域側に移して高速メモリ領域への配置を試行することを特徴とするメモリ資源最適化支援方法。
【0178】
(付記11)
付記3のメモリ資源最適化支援方法に於いて、前記配置最適化ステップは、重み順データ領域配列における高速メモリ領域側の全データの高速メモリ領域への配置が成功した場合、実メモリを仮想した高速メモリ領域のサイズを縮小して再度配置を試行することを特徴とするメモリ資源最適化支援方法。
【0179】
(付記12)
コンピュータに、
アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレーションステップと、
前記シミュレーションステップで得られたシミュレーション結果に基づいて、前記プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付ステップと、
を実行させることを特徴とするプログラム。(4)
【0180】
(付記13)
ひ付記12のプログラムに於いて、前記資源割付ステップは、前記シミュレーション結果を解析し、高速メモリ領域には可能な限りデータを配置せずにプログラムの目標実行速度を維持できるように、プログラム実行で使用するデータ領域を、高速メモリ領域と低速メモリ領域とに分配配置することを特徴とするプログラム。
【0181】
(付記14)
付記12記載のプログラムに於いて、前記資源割付ステップは、
任意のメモリ領域に各データ領域を適当に配置して、全ての領域のアクセスサイクルを高速メモリと同一に設定し、目標性能にと立つし得るか否か検査する初期検査ステップと、
前記初期検査ステップで実行時間が目標実行時間以内の場合、前記シミュレーション結果を解析して、値が大きいほど高速メモリ領域に配置する必要性が高くなる重みを設定して重み順に各データ領域を配列する重み付けステップと、
前記重み順データ領域配列の中で、高速メモリ領域への配置を必要とするデータ領域と、低速メモリ領域への配置でかまわないデータ領域との境界を探索する境界探索ステップと、
前記境界探索で求められた境界の高速メモリ領域側の重み順データ領域配列から、重みの大きい順にデータ領域を取り出して実メモリを仮想した高速メモリ領域への配置を試行し、配置可能な場合は配置後にその領域をロックして重複配置を禁止する処理を繰り返す配置最適化ステップと、
を備えたことを特徴とするプログラム。
【0182】
(付記15)
付記14のプログラムに於いて、前記重み付けステップは、各データ領域の重みを、前記シミュレーション結果におけるアクセス頻度とデータ領域サイズに基づいて設定することを特徴とするプログラム。
【0183】
(付記16)
付記15のプログラムに於いて、前記重み付けステップは、前記アクセス頻度が多いほど大きな値の重みを設定し、且つデータ領域サイズが小さいほど大きな値の重みを設定することを特徴とするプログラム。
【0184】
(付記17)
付記14のプログラムに於いて、前記境界探索ステップは、全データ領域を高速メモリ領域に配置したと仮定した後、重みの小さいデータ領域から順番に低速メモリ領域に配置変更したと仮定して、前記配置変更に対応したメモリウェイトサイクルを前記シミュレーション結果に設定することにより実行時間を再計算し、再計算した実行時間が目標実行時間を越えるまで処理を繰り返して、前記重み順データ領域配列の中の高速メモリ領域への配置を必要とするデータ領域の境界を探索することを特徴とするプログラム。
【0185】
(付記18)
付記14のプログラムに於いて、前記境界探索ステップは、全データ領域を高速メモリ領域に配置したと仮定した後、前記重み順データ領域配列を2分して小さい重み側の各データ領域を低速メモリ領域に配置したと仮定して、前記配置変更に対応したメモリウェイトサイクルを前記シミュレーション結果に設定することにより実行時間を再計算し、再計算した実行時間が目標実行時間に比べ小さい場合は、高速メモリ領域に残したデータ領域をさらに2分して小さい重み側を低速メモリ領域に配置し、大きい場合は低速メモリ領域に移したデータ利領域をさらに2分して大きい重み側を高速メモリ領域へと配置したと仮定して再計算を行うという処理を繰り返して、前記重み順データ領域配列の中の高速メモリ領域への配置を必要とするデータ領域の境界を探索することを特徴とするプログラム。
【0186】
(付記19)
付記14のプログラムに於いて、前記配置最適化ステップは、実メモリを仮想した高速メモリ領域へのデータ領域の配置が出来ない場合、アクセスする時間情報に基づいて前記データ領域を細分化し、細分化したデータ領域が時間的に重ならないように前記高速メモリ領域への配置を試行することを特徴とするプログラム。
【0187】
(付記20)
請求項19のメモリ資源最適化支援方法に於いて、前記配置最適化ステップは、
ネストレベルに閾値を持たせて閾値を超えた深さを単位として細分化するすることを特徴とするプログラム。
【0188】
(付記21)
付記14のプログラムに於いて、前記配置最適化ステップは、実メモリを仮想した高速メモリ領域へのデータ領域の配置ができないことが確定した場合、前記データ領域を重み順データ領域配列の中の低速メモリ領域側に移した後に、低速メモリ領域側から重みの大きい順にデータ領域を高速データ領域側に移して高速メモリ領域への配置を試行することを特徴とするプログラム。
【0189】
(付記22)
付記14のプログラムに於いて、前記配置最適化ステップは、重み順データ領域配列における高速メモリ領域側の全データの高速メモリ領域への配置が成功した場合、実メモリを仮想した高速メモリ領域のサイズを縮小して再度配置を試行することを特徴とするプログラム。
【0190】
(付記23)
アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレータ部と、
前記シミュレータ部の制御により前記プログラムを実行して得られたシミュレーション情報に基づいて、前記プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付部と、
前記シミュレータ部と資源割付部との間で情報を受け渡しするための記憶領域と、
を備えたことを特徴とするメモリ資源最適化支援装置。(5)
【0191】
【発明の効果】
以上説明してきたように本発明によれば、異なるアクセス速度を持つ複数のメモリ領域を備えたプロセッサシステムのモデルを対象にアプリケーションを目標時間内で処理するために必要なアクセス速度の異なるメモリ領域、特に高速メモリ領域の最小サイズを求めることができ、更にメモリ領域にどのようなデータを配置すれば最適であるかを知ることができ、これによってシステム設計時の見積もりやシステム検証にかかる開発時間を大幅に短縮することができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明によるメモリ資源最適化支援装置の基本構成のブロック図
【図3】本発明のメモリ資源最適化支援装置におけるデータの流れの説明図
【図4】本発明が対象とするプロセッサシステムのモデル説明図
【図5】本発明が対象とする他のプロセッサシステムのモデル説明図
【図6】本発明によるメモリ資源最適化支援処理の基本的な処理手順のフローチャート
【図7】図6のステップS1〜S4による初期検査処理とメモリ配置最適化処理の詳細を示したフローチャート
【図8】図7のステップS1で使用する目標値設定ファイルの説明図
【図9】図7のステップS2で取り込む初期設定ファイルの説明図
【図10】図7のステップS3で使用するリンク設定ファイルの説明図
【図11】図7のステップS3のリンク設定で出力されるリンク情報としてのMAPファイルの説明図
【図12】図7のステップS4で使用するシミュレーション設定ファイルの説明図
【図13】図7のステップS4で得られるシミュレーションログの説明図
【図14】図7のステップS8における重み付け処理の詳細を示したフローチャート
【図15】本発明の資源割付処理において各データ領域の配置を表現するデータ構造の説明図
【図16】図7のステップS9における境界探索処理の詳細を示したフローチャート
【図17】図7のステップS10における配置最適化処理の詳細を示したフローチャート
【図18】本発明の配置最適化処理における時間軸を考慮したデータ配置の説明図
【図19】図18のデータ領域#5におけるセグメント毎の生存期間の説明図
【図20】図14のデータ構造おけるデータ配置情報のリスト構造の説明図
【図21】図17のステップS2における配置の可否判定の詳細を示したフローチャート
【図22】図21のステップS1における時刻衝突データ領域検出処理の詳細を示したフローチャート
【図23】図22の時刻衝突データ領域検出処理による空き領域検索の説明図
【図24】図21のステップS2における配置先領域検索処理の詳細を示したフローチャート
【図25】図17のステップS8におけるデータ領域細分化処理の詳細を示したフローチャート
【図26】図25に続くデータ領域細分化処理のフローチャート
【図27】ネストレベルの閾値による細分化制御の説明図
【図28】図27に対しネストレベルの閾値を深くした細分化制御の説明図
【図29】本発明のデータ領域の転送処理設定に使用するバンク切替えシミュレーション設定ファイルの説明図
【符号の説明】
10:資源割付部
12:シミュレータ部
14:記憶領域
16:Cソースファイル
18:コンパイラ
20,22:アセンブリソースファイル
24:アセンブラ
26:オブジェクトファイル
28:ソース情報ファイル
30:オブジェクト情報ファイル
32:リンカ
34:リンク設定ファイル
36:初期設定ファイル
38:シミュレーション設定ファイル
40:シミュレーション情報ファイル(シミュレーションログ)
42:メモリ配置情報
44,52:プロセッサ
45,58:バス
46:メモリコントローラ
48,54:高速メモリ
50,62:低速メモリ
56:通常メモリ
60:I/Oコントローラ
68:目標値設定ファイル
70:初期設定ファイル
72:リンク設定ファイル
74:MAPファイル
76:ラベル情報
78:オブジェクト配置情報
80:オブジェクトサイズ情報
82:シミュレーション設定ファイル
84:ウェイトサイクル設定
86:アクセス監視設定
88:シミュレーションログ
90:AREAデータ構造体
92,118:実メモリ領域
102−1,102−2:データセグメント
106:SEGデータ構造体
108:LIFEデータ構造体
112〜116:ポインタ
120:対象データ領域
130−1〜130−3:空きエリア
132:割付データ領域
160,164:ネストレベル閾値
162,166:セグメント化メモリアクセス
Claims (5)
- アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレーションステップと、
前記シミュレーションステップで得られたシミュレーション結果に基づいて、前記プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付ステップと、
を備えたことを特徴とするメモリ資源最適化支援方法。 - 請求項1記載のメモリ資源最適化支援方法に於いて、前記資源割付ステップは、前記シミュレーション結果を解析し、高速メモリ領域には可能な限りデータを配置せずにプログラムの目標実行速度を維持できるように、プログラム実行で使用するデータ領域を、高速メモリ領域と低速メモリ領域とに分配配置することを特徴とするメモリ資源最適化支援方法。
- 請求項1記載のメモリ資源最適化支援方法に於いて、前記資源割付ステップは、
任意のメモリ領域に各データ領域を適当に配置して、全ての領域のアクセスサイクルを高速メモリと同一に設定し、目標性能にと立つし得るか否か検査する初期検査ステップと、
前記初期検査ステップで実行時間が目標実行時間以内の場合、前記シミュレーション結果を解析して、値が大きいほど高速メモリ領域に配置する必要性が高くなる重みを設定して重み順に各データ領域を配列する重み付けステップと、
前記重み順データ領域配列の中で、高速メモリ領域への配置を必要とするデータ領域と、低速メモリ領域への配置でかまわないデータ領域との境界を探索する境界探索ステップと、
前記境界探索で求められた境界の高速メモリ領域側の重み順データ領域配列から、重みの大きい順にデータ領域を取り出して実メモリを仮想した高速メモリ領域への配置を試行し、配置可能な場合は配置後にその領域をロックして重複配置を禁止する処理を繰り返す配置最適化ステップと、
を備えたことを特徴とするメモリ資源最適化支援方法。 - コンピュータに、
アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレーションステップと、
前記シミュレーションステップで得られたシミュレーション結果に基づいて、前記プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付ステップと、
を実行させることを特徴とするプログラム。 - アクセス速度の異なる少なくとも2つ以上のメモリ領域を持つプロセッサシステムをモデル化してプログラムをシミュレーションするシミュレータ部と、
前記シミュレータ部の制御により前記プログラムを実行して得られたシミュレーション情報に基づいて、前記プロセッサシステムのメモリ資源の配置を調整して最適なメモリ配置を決定する資源割付部と、
前記シミュレータ部と資源割付部との間で情報を受け渡しするための記憶領域と、
を備えたことを特徴とするメモリ資源最適化支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002232724A JP4149762B2 (ja) | 2002-08-09 | 2002-08-09 | メモリ資源最適化支援方法、プログラム及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002232724A JP4149762B2 (ja) | 2002-08-09 | 2002-08-09 | メモリ資源最適化支援方法、プログラム及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004070862A true JP2004070862A (ja) | 2004-03-04 |
JP4149762B2 JP4149762B2 (ja) | 2008-09-17 |
Family
ID=32018039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002232724A Expired - Fee Related JP4149762B2 (ja) | 2002-08-09 | 2002-08-09 | メモリ資源最適化支援方法、プログラム及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4149762B2 (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005346211A (ja) * | 2004-05-31 | 2005-12-15 | Toshiba Corp | メモリコントローラおよび該メモリコントローラを使用した情報処理装置 |
WO2010052829A1 (ja) * | 2008-11-05 | 2010-05-14 | パナソニック株式会社 | 資源割付方法、プログラム、及び資源割付装置 |
JP2015506526A (ja) * | 2012-02-06 | 2015-03-02 | エンパイア テクノロジー ディベロップメント エルエルシー | クラウドサービス間の転送時のアプリケーション性能の維持 |
JP2015184822A (ja) * | 2014-03-20 | 2015-10-22 | 富士通株式会社 | 制御プログラム、制御方法および制御装置 |
WO2016038698A1 (ja) * | 2014-09-10 | 2016-03-17 | 株式会社日立製作所 | メモリ割当て装置及び方法 |
WO2016157826A1 (ja) * | 2015-03-30 | 2016-10-06 | 日本電気株式会社 | データ配置先決定装置、方法およびプログラム記録媒体 |
JP2019164659A (ja) * | 2018-03-20 | 2019-09-26 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
JP2019164629A (ja) * | 2018-03-20 | 2019-09-26 | 株式会社東芝 | モデル生成装置、情報処理装置、モデル生成方法およびプログラム |
-
2002
- 2002-08-09 JP JP2002232724A patent/JP4149762B2/ja not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005346211A (ja) * | 2004-05-31 | 2005-12-15 | Toshiba Corp | メモリコントローラおよび該メモリコントローラを使用した情報処理装置 |
WO2010052829A1 (ja) * | 2008-11-05 | 2010-05-14 | パナソニック株式会社 | 資源割付方法、プログラム、及び資源割付装置 |
JP2010113482A (ja) * | 2008-11-05 | 2010-05-20 | Panasonic Corp | 資源割付方法、プログラム、及び資源割付装置 |
JP2015506526A (ja) * | 2012-02-06 | 2015-03-02 | エンパイア テクノロジー ディベロップメント エルエルシー | クラウドサービス間の転送時のアプリケーション性能の維持 |
JP2015184822A (ja) * | 2014-03-20 | 2015-10-22 | 富士通株式会社 | 制御プログラム、制御方法および制御装置 |
WO2016038698A1 (ja) * | 2014-09-10 | 2016-03-17 | 株式会社日立製作所 | メモリ割当て装置及び方法 |
WO2016157826A1 (ja) * | 2015-03-30 | 2016-10-06 | 日本電気株式会社 | データ配置先決定装置、方法およびプログラム記録媒体 |
US10120602B2 (en) | 2015-03-30 | 2018-11-06 | Nec Corporation | Device and method for determining data placement destination, and program recording medium |
JP2019164659A (ja) * | 2018-03-20 | 2019-09-26 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
JP2019164629A (ja) * | 2018-03-20 | 2019-09-26 | 株式会社東芝 | モデル生成装置、情報処理装置、モデル生成方法およびプログラム |
US11263101B2 (en) | 2018-03-20 | 2022-03-01 | Kabushiki Kaisha Toshiba | Decision model generation for allocating memory control methods |
Also Published As
Publication number | Publication date |
---|---|
JP4149762B2 (ja) | 2008-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754496B1 (en) | Data processing method and related products | |
US20130024646A1 (en) | Method and Simulator for Simulating Multiprocessor Architecture Remote Memory Access | |
CN101233489B (zh) | 自适应进程分派的方法和系统 | |
JP5934094B2 (ja) | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング | |
JP5859639B2 (ja) | 異種コア用の自動負荷バランシング | |
JP5756478B2 (ja) | データ・センタにおける電力消費の最適化 | |
JP5422614B2 (ja) | 低ポート数メモリーを用いたマルチポートメモリーのシミュレート | |
US20160328266A1 (en) | Process grouping for improved cache and memory affinity | |
US7890314B2 (en) | Method for modeling performance of embedded processors having combined cache and memory hierarchy | |
US20110197174A1 (en) | Method, System and Computer Readable Medium for Generating Software Transaction-Level Modeling (TLM) Model | |
WO2010052829A1 (ja) | 資源割付方法、プログラム、及び資源割付装置 | |
EP3126971A1 (en) | Program execution on heterogeneous platform | |
JP2013521570A (ja) | ガーベッジコレクションに対するcpuサポート | |
Mittal | A survey of techniques for cache locking | |
Tripathy et al. | Paver: Locality graph-based thread block scheduling for gpus | |
JP7164733B2 (ja) | データ記憶 | |
US7684971B1 (en) | Method and system for improving simulation performance | |
CN113868068B (zh) | 一种内核性能测试方法、计算设备及存储介质 | |
JP4149762B2 (ja) | メモリ資源最適化支援方法、プログラム及び装置 | |
US20180165209A1 (en) | Memory allocation system for multi-tier memory | |
Bytyn et al. | Dataflow aware mapping of convolutional neural networks onto many-core platforms with network-on-chip interconnect | |
JP6763411B2 (ja) | 設計支援装置、設計支援方法、および設計支援プログラム | |
Giorgi et al. | Translating timing into an architecture: the synergy of COTSon and HLS (domain expertise—designing a computer architecture via HLS) | |
WO2018032897A1 (zh) | 报文转发性能评估方法、装置和计算机存储介质 | |
CN108846248B (zh) | 一种应用建模及性能预测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071204 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080304 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080507 |
|
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: 20080603 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080626 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110704 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 |