(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-27
(45)【発行日】2024-06-04
(54)【発明の名称】メモリアロケーション方法及び処理装置
(51)【国際特許分類】
G06F 12/02 20060101AFI20240528BHJP
G06F 12/00 20060101ALI20240528BHJP
【FI】
G06F12/02 510M
G06F12/00 593
(21)【出願番号】P 2020061336
(22)【出願日】2020-03-30
【審査請求日】2023-03-08
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100113549
【氏名又は名称】鈴木 守
(74)【代理人】
【識別番号】100115808
【氏名又は名称】加藤 真司
(74)【代理人】
【識別番号】230121430
【氏名又は名称】安井 友章
(72)【発明者】
【氏名】鈴木 亜季
【審査官】松平 英
(56)【参考文献】
【文献】特開2019-207458(JP,A)
【文献】特開2006-040254(JP,A)
【文献】特開2000-259487(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00-12/06
13/16-13/18
(57)【特許請求の範囲】
【請求項1】
メモリアロケーション装置によって実行されるデータフローグラフを実行するためのメモリアロケーション方法であって、
アドレスが順次付与されている複数のメモリ要素からなるメモリ領域において、連続する所定の個数のメモリ要素を、所定の共用領域として確保するステップと、
前記データフローグラフの所定のステージにおいて、
前記所定の共用領域において
アドレスの一方向側から
連続する複数のメモリ要素に入力バッファを割り当てると共に
アドレスの逆方向側から
連続する複数のメモリ要素に出力バッファを割り当てる第1の割当ステップと、
前記データフローグラフの前記所定のステージの次のステージにおいて、前記所定の共用領域において前記
アドレスの逆方向側から
連続する複数のメモリ要素に入力バッファを割り当てると共に前記
アドレスの一方向側から
連続する複数のメモリ要素に出力バッファを割り当てる第2の割当ステップと、
を具備するメモリアロケーション方法。
【請求項2】
前記メモリ領域において、前記所定の共用領域が設定されたメモリ要素とは異なる、連続する所定の個数のメモリ要素を、所定の共通領域として確保するステップと、
前記所定の共通領域に、前記データフローグラフの複数のステージにわたって利用される共通バッファを割り当てる追加の割当ステップ
と、
をさらに具備する、請求項1に記載のメモリアロケーション方法。
【請求項3】
前記データフローグラフのグラフプログラムのコンパイル時に前記データフローグラフのステージの分割及び前記メモリ領域におけるメモリのアロケーションを行う、
請求項1に記載のメモリアロケーション方法。
【請求項4】
データフローグラフを実行するための処理装置(10)であって、
アドレスが順次付与されている複数のメモリ要素からなるメモリ領域を有するメモリ(12)と、
前記データフローグラフのノードを実行し前記メモリ領域に対する入出力を実行する演算装置(14)と、
前記メモリ領域において、連続する所定の個数のメモリ要素を、所定の共用領域として確保し、前記データフローグラフの所定のステージにおいて、
前記所定の共用領域において
アドレスの一方向側から
連続する複数のメモリ要素に入力バッファを割り当てると共に
アドレスの逆方向側から
連続する複数のメモリ要素に出力バッファを割り当て、前記所定のステージの次のステージにおいて、前記所定の共用領域において前記
アドレスの逆方向側から
連続する複数のメモリ要素に入力バッファを割り当てると共に前記
アドレスの一方向側から
連続する複数のメモリ要素に出力バッファを割り当てるメモリアロケーション装置(16)と、
を具備する処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データフローグラフを実行するためのメモリアロケーション方法及び処理装置に関する。
【背景技術】
【0002】
従来、データフローグラフを実行する様々な方法ないし装置が用いられている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
データフローグラフを実行する際には、ノードを実行するのに必要となるバッファをメモリ領域に割り当てるメモリアロケーションを行う必要がある。
【0005】
本発明の目的は、適切なメモリアロケーションを実現可能なメモリアロケーション方法及び処理装置を提供することにある。
【課題を解決するための手段】
【0006】
本発明の第1実施態様は、データフローグラフを実行するためのメモリアロケーション方法であって、前記データフローグラフの所定のステージにおいて、メモリ領域の内の所定の共用領域において一方向側から入力バッファを割り当てると共に逆方向側から出力バッファを割り当てる第1の割当ステップと、前記データフローグラフの前記所定のステージの次のステージにおいて、前記所定の共用領域において前記逆方向側から入力バッファを割り当てると共に前記一方向側から出力バッファを割り当てる第2の割当ステップと、を具備するメモリアロケーション方法である。
【0007】
本発明の第2実施態様は、データフローグラフを実行するための処理装置(10)であって、メモリ領域を有するメモリ(12)と、前記データフローグラフのノードを実行し前記メモリ領域に対する入出力を実行する演算装置(14)と、前記データフローグラフの所定のステージにおいて、前記メモリ領域の内の所定の共用領域において一方向側から入力バッファを割り当てると共に逆方向側から出力バッファを割り当て、前記所定のステージの次のステージにおいて、前記所定の共用領域において前記逆方向側から入力バッファを割り当てると共に前記一方向側から出力バッファを割り当てるメモリアロケーション装置(16)と、を具備する処理装置である。
【発明の効果】
【0008】
本発明では、適切なメモリアロケーションを実現可能となっている。
【図面の簡単な説明】
【0009】
【
図1】本発明の一実施形態の処理装置を示すブロック図。
【
図2】本発明の一実施形態のデータフローグラフを示す模式図。
【
図3】本発明の一実施形態のメモリアロケーション方法を示すフロー図。
【
図4】本発明の一実施形態のメモリアロケーション方法を示す模式図。
【発明を実施するための形態】
【0010】
図1乃至
図4を参照して、本発明の一実施形態を説明する。
【0011】
図1を参照して、本実施形態の処理装置10について概説する。
図1に示されるように、処理装置10は、組み込みシステムに搭載され、データフローグラフを実行するものである。処理装置10において、メモリ12は、メモリ領域を有する。演算装置14は、データフローグラフのノードを実行し、メモリ12のメモリ領域に対する入出力を実行する。メモリアロケーション装置16は、データフローグラフの所定のステージにおいて、メモリ12のメモリ領域の内の所定の共用領域において、一方向側から入力バッファを割り当てると共に、逆方向側から出力バッファを割り当て、当該所定のステージの次のステージにおいて、共用領域の逆方向側から入力バッファを割り当てると共に、一方向側から出力バッファを割り当てる。また、メモリアロケーション装置16は、メモリ12のメモリ領域の内の所定の共通領域に、データフローグラフの全てのステージにわたって利用される共通バッファを割り当てる。
【0012】
図2乃至
図4を参照して、本実施形態の処理方法について説明する。
【0013】
図2を参照して、本実施形態のデータフローグラフについて説明する。
本実施形態のデータフローグラフについては、後戻りのない順方向のデータフローグラフである。データフローグラフについては、同時に実行される各ステージに分割される。各ステージでは、入力バッファからの入力に対して、ノードが実行され、出力バッファに対して出力がなされる。
【0014】
本実施形態では、
図2に示されるように、データフローグラフは、ステージ1乃至ステージ3に分割される。ステージ1では、入力バッファb1からの入力に対して、ノードn1及びn2が夫々実行され、出力バッファb2及びb3に対して夫々出力がなされる。ステージ2では、入力バッファb2及びb3からの入力に対して、ノードn3が実行され、出力バッファb4に対して出力がなされる。ステージ3では、入力バッファb3及びb4からの入力に対して、ノードn4が実行されて、出力バッファb5に対して出力がなされる。ここで、バッファb3については、ステージ1乃至ステージ3にわたって利用される共通バッファである。
【0015】
図3及び
図4を参照して、本実施形態のメモリアロケーション方法について説明する。
本実施形態のメモリアロケーション方法では、データフローグラフのグラフプログラムのコンパイル時に、データフローグラフのステージの分割と、メモリ領域におけるメモリのアロケーションとを静的に行う。
【0016】
メモリ領域の各メモリ要素にはアドレスが順次付与されており、アドレスの先頭側及び末尾側を夫々上側及び下側と称する。
【0017】
メモリ領域において、データフローグラフのステージ毎に利用される共用領域を確保すると共に、全てのステージにわたって共通に利用される共通領域を確保する。そして、データフローグラフの所定のステージにおいて、メモリ領域の共用領域の一方向側から入力バッファを割り当てると共に、逆方向側から出力バッファを割り当て、当該所定のステージの次のステージにおいて、共用領域の逆方向側から入力バッファを割り当てると共に、一方向側から出力バッファを割り当てる。また、メモリ領域の共通領域には、全てのステージにわたって利用される共通バッファを割り当てる。
【0018】
ここで、メモリ領域の共用領域及び共通領域については、データフローグラフのグラフプログラムの実行中にメモリ不足の発生しないサイズが割り当てられる。即ち、共用領域に必要なサイズについては、各ステージにおいて必要となる入出力バッファの合計サイズの内の最大の合計サイズとなる。また、共通領域に必要なサイズについては、全共通バッファの合計サイズとなる。
【0019】
本実施形態では、
図3及び
図4に示されるように、データフローグラフのステージ1(S1)では、メモリ領域の共用領域Rにおいて、一方向側である上側から入力バッファb1を割り当て、逆方向側である下側から出力バッファb2を割り当てる。また、メモリ領域の共通領域Sに、出力バッファとして共通バッファb3を割り当てる。上述したとおり、データフローグラフのステージ1では、入力バッファb1からの入力に対して、ノードn1及びn2が夫々実行され、出力バッファb2及びb3に対して夫々出力がなされる。
【0020】
ステージ2(S2)では、メモリ領域の共用領域Rにおいて、逆方向側である下側から入力バッファb2を割り当て、一方向側である上側から出力バッファb4を割り当てる。また、メモリ領域の共通領域Sに、入力バッファとして共通バッファb3を割り当てる。上述したとおり、ステージ2では、入力バッファb2及びb3からの入力に対して、ノードn3が実行され、出力バッファb4に対して出力がなされる。
【0021】
ステージ3(S3)では、メモリ領域の共用領域Rにおいて、一方向側である上側から入力バッファb4を割り当て、逆方向側である下側から出力バッファb5を割り当てる。また、メモリ領域の共通領域Sに、入力バッファとして共通バッファb3を割り当てる。上述したとおり、ステージ3では、入力バッファb3及びb4からの入力に対して、ノードn4が実行されて、出力バッファb5に対して出力がなされる。
【0022】
ここで、メモリ領域の共用領域Rに必要なサイズについては、ステージ1では、入力バッファb1と出力バッファb2との合計サイズとなり、ステージ2では、入力バッファb2と出力バッファb4との合計サイズとなり、ステージ3では、入力バッファb4と出力バッファb5との合計サイズとなる。ここでは、ステージ3の合計サイズが最大の合計サイズとなっているため、メモリ領域の共用領域Rに必要なサイズについては、ステージ3の合計サイズである入力バッファb4と出力バッファb5との合計サイズとなる。また、メモリ領域の共通領域Rに必要なサイズについては、共通バッファb3のサイズとなる。
【0023】
本実施形態のメモリアロケーション装置及び方法は以下の効果を奏する。
【0024】
本実施形態では、メモリ領域において共用領域を確保し、データフローグラフの所定のステージにおいて、共用領域の一方向側から入力バッファを割り当てると共に、逆方向側から出力バッファを割り当て、当該所定のステージの次のステージにおいて、共用領域の逆方向側から入力バッファを割り当てると共に、一方向側から出力バッファを割り当てている。そして、共用領域に必要なサイズについては、各ステージにおいて必要となる入出力バッファの合計サイズの内の最大の合計サイズとなっている。
【0025】
ここで、メモリ領域をバッファとして使用するためには、当該バッファに対応した連続したメモリ領域が必要となる。そして、データフローグラフの各ノードを実行するためにバッファが必要となる度にメモリ領域を確保し、バッファが不要となる度にメモリ領域を解放するメモリアロケーション方法では、各ノードの実行において必要となるバッファのサイズが異なる場合には、バッファとして使用することが不可能な細分化されたメモリ領域が発生するメモリ領域の断片化を招来してしまう。この場合には、グラフプログラムを停止したうえで、メモリ領域を整理して断片化を解消することが必要となり、特に組み込みシステムには不適切である。また、データフローグラフの各ノードを実行するために必要となるバッファのサイズとは無関係に、常に一定のサイズのメモリ領域を確保する場合には、メモリ領域の断片化を回避することは可能となるが、メモリの利用効率が低下してしまう。
【0026】
これに対して、上述した本実施形態では、原理的にメモリ領域の断片化が発生しないようになっており、また、データフローグラフの各ノードを実行するために常に一定のサイズのメモリ領域を確保する場合と比較して、メモリの利用効率が高くなっている。
【0027】
また、メモリ領域の共用領域を単に半分に分割して、ステージ毎に一方向側のメモリ領域に入力バッファと出力バッファ、逆方向側のメモリ領域に出力バッファと入力バッファとを交互に割り当てていくメモリアロケーションでは、共用領域に必要なサイズについては、各ステージにおいて必要となる入力バッファの合計サイズ又は出力バッファの合計サイズの内の最大の合計サイズの2倍のサイズとなる。
【0028】
これに対して、上述した本実施形態では、共用領域に必要なサイズについては、各ステージにおいて必要となる入出力バッファの合計サイズの内の最大の合計サイズにすぎず、メモリの利用効率が高くなっている。
【0029】
さらに、本実施形態では、データフローグラフのグラフプログラムのコンパイル時に、データフローグラフのステージの分割と、メモリ領域におけるメモリのアロケーションとを静的に行っているため、グラフプログラムの実行中にメモリ不足が発生することがない。なお、データフローグラフのグラフプログラムの実行時に、データフローグラフのステージの分割と、メモリ領域におけるメモリのアロケーションとを動的に行うようにしてもよい。
【符号の説明】
【0030】
10…処理装置 12…メモリ 14…演算装置 16…メモリアロケーション装置