JP2012059152A - データ処理を行うシステムおよびメモリを割り当てる方法 - Google Patents

データ処理を行うシステムおよびメモリを割り当てる方法 Download PDF

Info

Publication number
JP2012059152A
JP2012059152A JP2010203650A JP2010203650A JP2012059152A JP 2012059152 A JP2012059152 A JP 2012059152A JP 2010203650 A JP2010203650 A JP 2010203650A JP 2010203650 A JP2010203650 A JP 2010203650A JP 2012059152 A JP2012059152 A JP 2012059152A
Authority
JP
Japan
Prior art keywords
memory
capacity
data processing
data
processing
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.)
Pending
Application number
JP2010203650A
Other languages
English (en)
Inventor
Masakuni Okada
雅州 岡田
Kazuto Yamafuji
和人 山藤
Atsushi Fukuda
敦史 福田
Takashi Yonezawa
隆 米沢
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2010203650A priority Critical patent/JP2012059152A/ja
Priority to US13/207,528 priority patent/US8775767B2/en
Publication of JP2012059152A publication Critical patent/JP2012059152A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)

Abstract

【課題】パイプ・アンド・フィルタによるパイプライン処理を行うシステムにおいて、メモリを効率よく使用し、かつシステムのパフォーマンスの向上を図る。
【解決手段】パイプおよびフィルタを備えたパイプライン10と、このパイプライン10に対してデータ処理に使用されるメモリを割り当てるメモリ・コントローラ20を備える。メモリ・コントローラ20は、パイプライン10にメモリを割り当てる場合に、メモリの空き容量が、処理を実行中に各フィルタの処理対象であるデータがパイプに保持されている状態である最適状態を実現するメモリ容量である最適容量以上である場合は、最適容量を割り当てる。また、メモリの空き容量が、最適容量よりも少なく、かつ各フィルタの処理に必要なメモリ容量の総和である保障メモリ容量以上である場合は、保障メモリ容量を割り当てる。
【選択図】図1

Description

本発明は、パイプ・アンド・フィルタによるパイプライン処理にてデータ処理を行うシステムおよびシステムにメモリを割り当てる方法に関する。
データ処理のアーキテクチャ・パターンのひとつに、パイプ・アンド・フィルタと呼ばれるパターンがある。パイプ・アンド・フィルタによれば、データを入力し、処理し、出力する機能を持ったフィルタと呼ばれるソフトウェア部品をパイプでつなぐことにより、つながれたフィルタがデータを順次処理するパイプライン処理が実現される(以下、ひとつのパイプライン処理を行うためのフィルタ群および各フィルタをつなぐパイプの集合(Pipes & Filters)をパイプラインと呼ぶ)。所望のフィルタを所望の順番でつなぐことにより、様々な処理を行うことができ、複雑な処理も容易に構成することができる。
ここで、フィルタは、パイプライン処理におけるデータ処理を行う主体であり、個々のフィルタの処理は、プログラム制御されたCPU(Central Processing Unit)等の処理機能により実行される。ひとつのパイプラインを構成する各フィルタの処理は、単一のCPUやコアで実行される必要はなく、フィルタごとに異なるコアで実行されても良い。パイプは、ひとつのフィルタの出力(標準出力)を後続する他のフィルタの入力(標準入力)につなげるものであり、RAM(Random Access Memory)等のメモリにより実現される機能である。
実際のシステムでは、複数のパイプラインを用意し、種々の処理を並列に実行する場合がある。一方、ハードウェア資源の制約等のために、パイプライン処理に使用できるメモリの容量が制限される場合がある。したがって、パイプライン処理を行うシステムでは、各パイプラインおよびこれを構成する各フィルタに対してメモリをどのように割り当てるかが、システムの性能に大きく影響する。
特許文献1には、パイプ・アンド・フィルタのアーキテクチャにおけるメモリの割り当てに関する従来技術として、パイプライン処理に対してメモリを動的に割り当てる技術が開示されている。同文献に開示された従来技術では、一のパイプライン処理を実行するためにメモリの作業領域が不足している場合に、他のパイプラインに割り当てられている作業領域またはその一部を開放して、不足している一のパイプラインに割り当てる。
特開2010−68486号公報
実際のデータ処理では、複数のパイプラインを同時に実行する場合がある。この場合、同時に実行されるフィルタの各々が必要とするメモリ容量の総和に相当する容量を、同時実行される複数のパイプライン処理全体のために確保する必要がある。
また、個々のパイプラインに着目すると、パイプラインを構成する各パイプに対するメモリの割り当ては、各フィルタの前後(入力側および出力側)のデータ量に対応するだけの容量を確保する必要がある。
複数のパイプラインを同時に実行する場合の対応として、従来は、同時に実行することが可能なフィルタの組み合わせを予め定義し、各組み合わせにおける各フィルタ専用のメモリ領域を確保することが行われていた。
しかし、予め定義されたフィルタの組み合わせに基づいてメモリ領域を確保する場合、実際には同時に実行されていないパイプラインにおけるフィルタ用のメモリ領域が確保されることが起こり得る。この場合、無駄な(使用されない)メモリ領域の確保が固定的に行われてしまう。そのため、パイプライン処理全体に割り当てられたメモリの容量には余裕があるにも関わらず、実行可能なフィルタの数や種類が制限されてしまうという問題があった。
また、上記の方法によりパイプライン処理で使用するメモリ領域を確保する場合、システム全体ではパイプライン処理で使用可能な(他の処理で使用されない)メモリの空き領域があるにも関わらず、パイプライン処理では予め設定されたメモリしか使用することができない。そのため、システム全体でもメモリの使用に無駄が発生してしまうという問題があった。
また、従来、個々のパイプラインにおける各パイプに対するメモリの割り当ては、特定のパイプに偏ることがないように、パイプごとに確保すべきメモリを予め定義しておき、この定義に従ってメモリ領域を確保することが行われていた。
しかし、上記の方法により各パイプで使用するメモリ領域を確保する場合、特定の実行条件を設定し、その条件でのパフォーマンス(メモリ使用量、実行速度)の最適化などを図ってチューニングを行うことが望ましい。この場合、仕様変更などによる振舞いの変化がある度にチューニングを行うことが必要となる。また、設定した実行条件と異なる状況で使用された場合は、最適なパフォーマンスを得ることができないという問題があった。
本発明は、上記の課題に鑑み、パイプ・アンド・フィルタによるパイプライン処理を行うシステムにおいて、メモリを効率よく使用し、かつシステムのパフォーマンスの向上を図ることを目的とする。
上記の目的を達成するため、本発明は、次のようなシステムとして実現される。このシステムは、データに対して一連の処理を行う1または複数のデータ処理手段と、このデータ処理手段に対してデータ処理に使用されるメモリを割り当てるメモリ割り当て手段とを備える。そして、データ処理手段は、処理対象のデータを入力する入力手段と、入力されたデータに対して一連の処理を構成する個別の処理を行う1または複数の個別処理手段と、一連の処理が行われたデータを出力する出力手段と、入力手段、個別処理手段および出力手段の間でのデータの受け渡しに用いられるバッファ手段とを備える。そして、メモリ割り当て手段は、データ処理を実行しようとするデータ処理手段にメモリを割り当てる場合に、メモリの空き容量が、データ処理手段が処理を実行中に全ての個別処理手段の処理対象であるデータがバッファ手段に保持されている状態である最適状態を実現するメモリ容量である最適容量以上である場合は、最適容量をデータ処理手段に割り当てる。また、メモリの空き容量が、最適容量よりも少なく、かつ個別処理手段の処理に必要なメモリ容量の総和である保障メモリ容量以上である場合は、保障メモリ容量をデータ処理手段に割り当てる。
より好ましくは、メモリ割り当て手段は、メモリの空き容量がデータ処理を実行しようとするデータ処理手段の保障メモリ容量よりも少ない場合、既に処理を実行している他のデータ処理手段のうち保障メモリ容量以上のメモリ容量を割り当てられているデータ処理手段に保障メモリ容量を超える分のメモリを開放させ、得られたメモリの空き容量がデータ処理を実行しようとするデータ処理手段の保障メモリ容量以上となったならば、保障メモリ容量をデータ処理手段に割り当てる。
さらに好ましくは、メモリ割り当て手段は、データ処理を実行しようとするデータ処理手段に最適容量が設定されていない場合、保障メモリ容量以上のメモリをデータ処理手段に割り当てられるだけのメモリの空き容量があるならば、空き容量に応じて定められるメモリ容量をデータ処理手段に割り当てる。
さらに好ましくは、メモリ割り当て手段は、データ処理手段による処理の実行時のメモリの使用状態が最適状態となっているか否かを判断し、判断結果に基づき最適容量を動的に設定する。
より詳細には、メモリ割り当て手段は、データ処理手段による処理の実行時のメモリの使用状態として、一の個別処理手段からバッファ手段へのデータの書き込みにおける待ち状態および後続の個別処理手段によるバッファ手段からのデータの読み込みにおける待ち状態が一定以上の頻度で発生する場合に、最適状態となるまでバッファ手段として用いられるメモリの割り当てを増加する。
あるいは、メモリ割り当て手段は、データ処理手段による処理の実行時のメモリの使用状態が最適状態にある場合、予め定められた規則に従って、個別処理手段に順次着目し、着目した個別処理手段により読み込まれるデータを保持するバッファ手段として用いられるメモリの割り当てを減少させる処理を、最適状態が維持される限り継続して行う。
また、上記の目的を達成する本発明のシステムは、データ処理を行うシステムにおいて、 データに対して一連の処理を行う1または複数のデータ処理手段と、データ処理手段に対してデータ処理に使用されるメモリを割り当てるメモリ割り当て手段とを備える。そして、データ処理手段は、処理対象のデータを入力する入力手段と、入力されたデータに対して一連の処理を構成する個別の処理を行う1または複数の個別処理手段と、一連の処理が行われたデータを出力する出力手段と、入力手段、個別処理手段および出力手段の間でのデータの受け渡しに用いられるバッファ手段とを備える。そして、メモリ割り当て手段は、データ処理を実行しようとするデータ処理手段にメモリを割り当てる場合に、データ処理を実行しようとするデータ処理手段に、データ処理手段が処理を実行中に全ての個別処理手段の処理対象であるデータがバッファ手段に保持されている状態である最適状態を実現するメモリ容量である最適容量が設定されており、かつメモリの空き容量が当該最適容量以上である場合は、最適容量を当該データ処理手段に割り当てる。また、データ処理を実行しようとするデータ処理手段に最適容量が設定されているが、メモリの空き容量が最適容量よりも少なく、かつ個別処理手段の処理に必要なメモリ容量の総和である保障メモリ容量以上である場合は、保障メモリ容量をデータ処理手段に割り当てる。また、データ処理を実行しようとするデータ処理手段に最適容量が設定されておらず、保障メモリ容量以上のメモリをデータ処理手段に割り当てられるだけのメモリの空き容量がある場合は、空き容量に応じて定められるメモリ容量をデータ処理手段に割り当てる。また、メモリの空き容量がデータ処理を実行しようとするデータ処理手段の保障メモリ容量よりも少ない場合は、データ処理手段にメモリを割り当てない。そして、データ処理手段による処理の実行時のメモリの使用状態が最適状態となっているか否かを判断し、判断結果に基づき最適容量を動的に設定する。
さらにまた、上記の目的を達成する本発明は、次のような方法として実現される。この方法は、データに対して一連の処理を行うデータ処理手段と、データ処理手段に対してデータ処理に使用されるメモリを割り当てるメモリ割り当て手段とを備え、データ処理手段は、処理対象のデータを入力する入力手段と、入力されたデータに対して一連の処理を構成する個別の処理を行う1または複数の個別処理手段と、一連の処理が行われたデータを出力する出力手段と、入力手段、個別処理手段および出力手段の間でのデータの受け渡しに用いられるバッファ手段とを備えたシステムにおけるデータ処理手段にメモリを割り当てる方法である。そして、データ処理を実行しようとするデータ処理手段に、データ処理手段が処理を実行中に全ての個別処理手段の処理対象であるデータがバッファ手段に保持されている状態である最適状態を実現するメモリ容量である最適容量が設定されているか否かを判断するステップと、最適容量が設定されている場合に、メモリの空き容量に応じて、最適容量または個別処理手段の処理に必要なメモリ容量の総和である保障メモリ容量を、データ処理を実行しようとするデータ処理手段に割り当てるステップと、最適容量が設定されていない場合に、メモリの空き容量に応じて、保障メモリ容量以上のメモリ容量をデータ処理を実行しようとするデータ処理手段に割り当て、データ処理手段による処理の実行時のメモリの使用状態に基づいてデータ処理手段の最適容量を設定するステップと、を含む。
さらに本発明は、コンピュータを制御して上述したシステムの各機能を実現するプログラム、またはコンピュータに上記の方法における各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
本発明によれば、パイプ・アンド・フィルタによるパイプライン処理を行うシステムにおいて、メモリを効率よく使用し、かつシステムのパフォーマンスの向上を図ることができる。
本実施形態のメモリ管理システムの機能構成を示す図である。 本実施形態におけるパイプラインの機能構成を示すブロック図である。 本実施形態のメモリ・コントローラの機能構成を示すブロック図である。 本実施形態におけるパイプラインへのメモリの割り当て方法を示すフローチャートである。 本実施形態の保障メモリ・バンド幅の決定方法を説明する図である。 本実施形態の平滑化法による最適容量の決定手順を示すフローチャートである。 図5に示したパイプラインを例として、平滑化法により最適容量を決定する様子を示す図である。 本実施形態の追加法による最適容量の決定手順を示すフローチャートである。 本実施形態のメモリ管理システムを実現するのに好適なコンピュータのハードウェア構成の一例を示す図である。
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
<保障メモリ・バンド幅および最適容量の導入>
本実施形態では、パイプラインに対するメモリの割り当て制御を、個々のパイプラインに保障される最低量を表す保障メモリ・バンド幅と、最適状態という二つの概念を用いて動的に行う。
保障メモリ・バンド幅とは、各パイプラインに割り当てられるメモリの最低量(下限)であり、パイプラインごとに定義される。各パイプラインにおける保障メモリ・バンド幅は、各パイプラインを構成する各フィルタにおけるデータの入出力に必要な最低限のメモリ容量の総量である。この容量は、各フィルタの前後で使用されるメモリの比率(以下、保障比率と呼ぶ)に基づいて計算される。保障メモリ・バンド幅の詳細な決定方法は後述する。
保障メモリ・バンド幅は、パイプラインに割り当てられるメモリの最低保障量であるので、各パイプラインの実行時には、そのパイプラインに対して定義されている保障メモリ・バンド幅が確保できることが必要である。言い換えれば、保障メモリ・バンド幅が確保できることが確認されたならば、そのパイプラインを実行することができる。また、保障メモリ・バンド幅は、パイプラインに割り当てられるメモリの最低量であるので、メモリの空き容量が存在するならば、許容される範囲で、保障メモリ・バンド幅以上のメモリをパイプラインに割り当てて良い。
新たにパイプラインを実行しようとする際に、メモリの空き容量が、実行しようとするパイプラインの保障メモリ・バンド幅に不足している場合、実行中のパイプラインが使用しているメモリのうち、その実行中のパイプラインの保障メモリ・バンド幅を超える分が開放される。そして、実行しようとするパイプラインの保障メモリ・バンド幅の確保が可能となったならば、そのパイプラインの使用メモリが確保されて、パイプラインの実行が開始される。
最適状態とは、パイプラインを構成する各フィルタが処理を行う際に、そのフィルタの入力側のメモリ(パイプ)に必ずデータが存在する状態である。ここで、各フィルタの処理に要する時間は、一般に、同じデータ量であっても、処理の種類によってフィルタごとに異なる。そのため、最適状態が実現されている場合の各フィルタの前後で使用されるメモリの比率(以下、最適比率と呼ぶ)は、保障メモリ・バンド幅の計算に用いられる保障比率と同一とは限らない。また、比率の値が同一である場合でも、具体的に割り当てられるメモリ容量は同一とは限らない。
この最適状態であれば、各フィルタは、処理を実行する際に処理対象のデータを直ちに読み込むことができるので、待ち状態となることなく処理を実行することができる。言い換えれば、ひとつのパイプラインに対して最適状態を実現する最小のメモリ容量以上にメモリを割り当てても、無駄な空き容量が増すだけである。そこで、本実施形態では、各パイプラインに関して最適状態となる最小のメモリ容量(以下、最適容量と呼ぶ)が求まった後は、最適容量を、各パイプラインに割り当てられるメモリの上限とする。すなわち、パイプライン処理で使用可能なメモリに余裕がある場合でも、各パイプラインの最適容量を超えるメモリが割り当てられることはない。
ところで、各フィルタの処理に要する時間は、処理の内容、処理対象となるデータの複雑さや属性等によって異なる。そのため、最適状態は、パイプラインを構成するフィルタの種類および数によって異なる他、同じパイプラインであっても、各フィルタに処理されるデータの種類、量、属性等に基づいて動的に変化する。したがって、一定の条件に基づき(例えば一定期間ごと、一定量の処理を行った後など)、各フィルタの最適比率および各パイプラインの最適容量を繰り返し求め、設定しなおすことが望ましい。最適比率および最適容量の詳細な決定方法は後述する。
以上のように、本実施形態では、各パイプラインに割り当てられるメモリ容量として、保障メモリ・バンド幅と、最適容量を設定する。そして、処理を実行させようとするパイプラインに対し、パイプライン処理に使用可能な(すなわち、パイプライン処理全体に対して割り当てられた)メモリのうち、そのパイプラインの保障メモリ・バンド幅または最適容量を割り当てる。また上記のように、保障メモリ・バンド幅はパイプラインの構成(フィルタの種類および数)に応じて固定的に定まる値であるが、最適容量は動的に変化する値である。
<システムの機能構成>
以下、本実施形態を実現するシステムの機能構成を説明する。
図1は、本実施形態のメモリ管理システムの機能構成を示す図である。
図1に示すように、本実施形態のメモリ管理システムは、パイプライン(パイプ・アンド・フィルタ)10と、メモリ・コントローラ20と、システム・メモリ管理機構30とを備える。パイプライン10は、処理対象のデータに対してフィルタを組み合わせて設定された一連の処理を行う。メモリ・コントローラ20は、各パイプライン10におけるメモリの取得および開放を制御する。システム・メモリ管理機構30は、本実施形態のメモリ管理システムを含む情報処理システム全体で使用されるメモリを管理し、メモリ領域の取得および開放についての実処理を行う。
メモリ・コントローラ20は、このシステム・メモリ管理機構30に対して要求を行うことにより、パイプライン処理で使用されるメモリの取得および開放を制御する。すなわち、メモリ・コントローラ20およびシステム・メモリ管理機構30でメモリ割り当ての実処理までを含むメモリ割り当て手段として機能する。また、特に図示していないが、図1に示すメモリ管理システムを含む情報処理システムは、各パイプライン10の実行を制御するシステム制御部を備えている。すなわち、このシステム制御部が、外部からのリクエストを受け付ける等の起動条件に応じて、該当するパイプライン10を動作させ、処理を実行させる。
図2は、本実施形態におけるパイプライン10の機能構成を示すブロック図である。
パイプライン10は、データ処理手段であり、ひとつの入力(Sink In)11と、ひとつ以上のフィルタ12と、ひとつの出力(Sink Out)13と、入力11、出力13および各フィルタ12をつなぐパイプ14とを備える。
入力11は、記憶装置等からファイルを読み込んでパイプライン10による処理の対象であるデータを取得する。図2に示すように、本実施形態の入力11は、メモリ取得部111と、データ処理部112とを備える。
メモリ取得部111は、メモリ・コントローラ20に対してリクエストを行い、パイプライン10の先頭のフィルタ12にデータを受け渡すために使用するメモリを取得する。このメモリは、入力11の直後のパイプ14として用いられる。メモリの取得は、後述するメモリ・トークンを用いて行われる。
データ処理部112は、ファイルを読み込んで処理対象のデータを取得する。そして、取得したデータを直後のパイプ14に送る。データをパイプ14に送るとは、メモリ取得部111により取得されたメモリにデータを出力(標準出力)することを意味する。入力11にて読み込まれたデータは、これ以降、一定の長さ(ブロック・サイズ)のデータ・ブロックの単位で、パイプ14を介して受け渡しされる。データ・ブロックのサイズは、システムの仕様や処理対象であるデータの種類等に応じて、適宜設定される。
フィルタ12は、データに対してパイプライン10にて実行されるべき個別の処理を行う個別処理手段である。図2に示すように、本実施形態のフィルタ12は、メモリ使用登録部121と、メモリ取得部122と、メモリ開放部123と、データ処理部124とを備える。なお、図2においては、ひとつのフィルタ12に対してのみ、詳細な機能構成を記載しているが、実際にはパイプライン10を構成する各フィルタ12が同様の機能構成を備える。
メモリ使用登録部121は、メモリ・コントローラ20にアクセスし、そのフィルタ12におけるメモリの使用に関する情報を送る。メモリ使用登録部121がメモリ・コントローラ20に送る情報としては、具体的には、入力側のメモリにデータが存在するか、出力側のメモリに空き容量が存在するか等の情報である。詳しくは後述するが、この情報は、メモリ・コントローラ20において最適容量を求めるために用いられる。
メモリ取得部122は、メモリ・コントローラ20に対してリクエストを行い、そのフィルタ12で使用するメモリ(処理後のデータを書き込むためのメモリ)を取得する。このメモリは、メモリを取得したフィルタ12の直後のパイプ14として用いられる。メモリの取得は、入力11のメモリ取得部111と同様に、後述するメモリ・トークンを用いて行われる。また、メモリ取得部122は、入力側のパイプ14から処理対象のデータを受け取る。パイプ14からデータを受け取るとは、そのフィルタ12の直前のフィルタ12または入力11によりメモリへ出力されたデータを読み込む(標準入力する)ことを意味する。
メモリ開放部123は、メモリ・コントローラ20に対してリクエストを行い、入力側のメモリ(メモリ取得部122によるデータの読み込みの対象となったメモリ)を開放する。メモリの開放は、メモリの取得の場合と同様に、後述するメモリ・トークンを用いて行われる。
データ処理部124は、メモリ取得部122が受け取ったデータを処理する。そして、処理結果のデータを直後のパイプ14に送る。すなわち、メモリ取得部122により取得されたメモリにデータを出力(標準出力)する。
出力13は、そのパイプライン10を構成する1または複数のフィルタ12によって処理されたデータを、ファイルとして記憶装置等に出力する。本実施形態の出力13は、メモリ開放部131と、データ処理部132とを備える。
メモリ開放部131は、メモリ・コントローラ20に対してリクエストを行い、出力13へのデータの受け渡しに使用されたメモリを開放する。このメモリは、パイプライン10の最後のフィルタ12と出力13との間のパイプ14として用いられたメモリである。メモリの開放は、メモリの取得の場合と同様に、後述するメモリ・トークンを用いて行われる。
データ処理部132は、直前のパイプ14から処理が行われたデータを受け取る。すなわち、パイプライン10を構成するフィルタ12のうち、最後のフィルタ12によってメモリへ出力されたデータを読み込む(標準入力)。そして、読み込んだデータを特定のデータ形式に変換し、パイプライン10による処理結果として出力する。
パイプ14は、フィルタ12どうしの間、入力11とフィルタ12との間、フィルタ12と出力13との間でのデータの受け渡しを担うバッファ手段である。すなわち、パイプ14は、前段のフィルタ12または入力11から出力(標準出力)されたデータを保持する。そして、パイプ14に保持されたデータは、後段のフィルタ12または出力13により読み込まれる(標準入力)。
図3は、メモリ・コントローラ20の機能構成を示すブロック図である。
メモリ・コントローラ20は、登録情報管理部21と、メモリ割り当て情報管理部22と、システム・メモリ情報管理部23と、メモリ割り当て制御部24と、最適化部25とを備える。
登録情報管理部21は、システムに用意されている各フィルタ12に関して、保障比率を登録して管理する。この保障比率は、フィルタ12が実行する処理の種類に応じて異なる。具体的には、例えば、1データ・ブロックを4データ・ブロックに変換する処理を行うフィルタ12の保障比率は、1:4となる。同様に、4データ・ブロックを2データ・ブロックに変換する処理を行うフィルタ12の保障比率は、4:2となる。登録情報管理部21は、各フィルタ12のメモリ使用登録部121から、そのフィルタ12の保障比率の情報を取得する。
また、登録情報管理部21は、フィルタ12の最適比率が設定された場合は、この最適比率も登録して管理する。この最適比率は、パイプライン10の最適状態の変動に応じて設定し直される。最適比率が変更されると、登録情報管理部21の登録内容は、改めて設定された最適比率に更新される。
これらの情報は、後述のメモリ・トークンの発行、パイプライン10の保障メモリ・バンド幅や最適容量の計算等に用いられる。そして、登録情報管理部21は、パイプライン10ごとの保障メモリ・バンド幅および最適容量を登録して管理する。
さらに登録情報管理部21は、パイプライン10の入力11のメモリ取得部111および各フィルタ12のメモリ取得部122に対し、メモリ・トークンを発行する。具体的には、まず登録情報管理部21は、各フィルタ12のメモリ使用登録部121から識別情報(ID)を取得する。この識別情報は、個々のフィルタ12および各フィルタ12が所属するパイプライン10を識別するための情報を含む。次に登録情報管理部21は、取得した識別情報により特定されるフィルタ12に関して管理している登録情報とその識別情報とを結びつけてメモリ・トークンを生成し、その識別情報を送ったフィルタ12に返送する。
さらに、登録情報管理部21は、各パイプライン10の先頭に位置するフィルタ12の識別情報によって特定されるそのフィルタ12の保障比率に基づき、そのフィルタ12の入力側(すなわち入力11の出力側)で必要となるメモリ容量を特定する。そして、パイプライン10の識別情報と特定したメモリ容量とを結びつけてメモリ・トークンを生成し、そのパイプライン10の入力11に送る。なお、フィルタ12と同様に、各パイプライン10の入力11のメモリ取得部111から登録情報管理部21へ識別情報を送信し、登録情報管理部21から入力11へメモリ・トークンを返送するようにしても良い。
メモリ割り当て情報管理部22は、各フィルタ12に割り当てた(フィルタ12が使用している)メモリの情報を管理する。具体的には、フィルタ12がメモリ・トークンを用いて取得したメモリの容量、領域等の情報が管理される。メモリ割り当て情報管理部22に管理される情報は、フィルタ12がメモリを取得したり開放したりする度に更新される。入力11がメモリを取得した場合、出力13がメモリを開放した場合も同様である。
システム・メモリ情報管理部23は、システム全体のメモリの情報を管理する。具体的には、システム全体によるメモリの使用状況を示す情報が管理される。パイプライン処理で使用されるメモリは、メモリ・コントローラ20の制御の下、システム・メモリ管理機構30により取得および開放が行われる。したがって、フィルタ12や入力11、出力13がメモリを取得したり開放したりすると、システム・メモリ情報管理部23の情報も更新される。
メモリ割り当て制御部24は、パイプライン10の入力11、フィルタ12、出力13からのメモリ・トークンを受け付けて、システム・メモリ管理機構30に対して要求を行うことにより、実処理におけるメモリの取得および開放を制御する。フィルタ12等がメモリ・トークンを用いてメモリの取得を要求しても、メモリの空き容量が不足しているために必要なメモリの割り当てを行うことができず、待ち状態となる場合がある。このような待ち状態の発生は、パイプライン10に対する最適容量を求める際に参酌される。なお、待ち状態の発生についての情報は、メモリの空き状態の情報等として登録情報管理部21に管理される。
最適化部25は、各パイプライン10における入力11、フィルタ12、出力13の最適容量を計算する。計算された最適容量は、登録情報管理部21に登録される。そして、メモリ割り当て制御部24がフィルタ12等にメモリを割り当てる際に参酌される。
<パイプライン10へのメモリの割り当て方法>
次に、本実施形態におけるパイプライン10へのメモリの割り当て方法を説明する。
パイプライン10の処理が実行される前に、初期動作として、各パイプライン10の入力11およびフィルタ12が登録情報管理部21からメモリ・トークンを取得しているものとする。
パイプライン10を実行しようとする場合、そのパイプライン10にメモリを割り当てる際の基本的な考え方は、以下のとおりである。
A:パイプライン10に対して最適容量が設定されている場合
(1)最適容量を割り当てることが可能であれば、最適容量を割り当てる。
(2)最適容量を割り当てることができない場合(メモリの空き容量が最適容量よりも少ない場合)、保障メモリ・バンド幅を割り当てる。
(3)保障メモリ・バンド幅を割り当てることができない場合(メモリの空き容量が保障メモリ・バンド幅よりも少ない場合)、保障メモリ・バンド幅よりも多いメモリを割り当てられている他のパイプライン10からメモリを開放させる。実行中の全てのパイプライン10が保障メモリ・バンド幅を割り当てられている場合は、いずれかのパイプライン10の処理が終了してメモリが開放されるのを待つ。
B:パイプライン10に対して最適容量が設定されていない場合
(1)保障メモリ・バンド幅以上を割り当てることが可能であれば、所定の規則に基づいてメモリを割り当てる(最低でも保障メモリ・バンド幅が割り当てられる)。
(2)保障メモリ・バンド幅を割り当てることができない場合(メモリの空き容量が保障メモリ・バンド幅よりも少ない場合)、保障メモリ・バンド幅よりも多いメモリを割り当てられている他のパイプライン10からメモリを開放させる。実行中の全てのパイプライン10が保障メモリ・バンド幅を割り当てられている場合は、いずれかのパイプライン10の処理が終了してメモリが開放されるのを待つ。
図4は、本実施形態におけるパイプライン10へのメモリの割り当て方法を示すフローチャートである。
所定の起動条件に応じて、システム制御部により、あるパイプライン10の実行指示が行われると(ステップ401)、メモリ・コントローラ20のメモリ割り当て制御部24は、まず、そのパイプライン10に最適容量が設定されているか否かを判断する(ステップ402)。最適容量が設定されている場合、次にメモリ割り当て制御部24は、パイプライン10に最適容量を割り当てることが可能か否かを判断する(ステップ403)。具体的には、パイプライン処理に使用可能なメモリのうち、空き容量が、そのパイプライン10の最適容量以上であるか否かが判断される。最適容量を割り当てることが可能であれば、メモリ割り当て制御部24は、そのパイプライン10に最適容量を割り当てる(ステップ404)。ここで、メモリの空き容量が最適容量よりも多い場合であっても、最適容量以上のメモリを割り当てることはない。
一方、メモリの空き容量が最適容量よりも少ない場合、次にメモリ割り当て制御部24は、パイプライン10に保障メモリ・バンド幅を割り当てることが可能か否かを判断する(ステップ405)。具体的には、最適容量の場合と同様に、メモリの空き容量が、そのパイプライン10の保障メモリ・バンド幅以上であるか否かが判断される。保障メモリ・バンド幅を割り当てることが可能であれば、メモリ割り当て制御部24は、そのパイプライン10に保障メモリ・バンド幅を割り当てる(ステップ406)。
メモリの空き容量が保障メモリ・バンド幅よりも少ない場合、次にメモリ割り当て制御部24は、他のパイプライン10が使用しているメモリを開放することが可能か否かを判断する(ステップ407)。ここで、他のパイプライン10からメモリを開放可能な場合とは、他のパイプライン10に保障メモリ・バンド幅を超えるメモリが割り当てられている場合である。この場合、メモリ割り当て制御部24は、他のパイプライン10に割り当てたメモリをそのパイプライン10の保障メモリ・バンド幅に変更し、余ったメモリを開放させる(ステップ408)。この後、メモリ割り当て制御部24は、ステップ405に戻り、改めて、実行しようとするパイプライン10に保障メモリ・バンド幅を割り当てることが可能か否かを判断する。
メモリを開放可能な他のパイプライン10が存在しない場合(すなわち、全てのパイプライン10が保障メモリ・バンド幅を割り当てられている場合)、メモリ割り当て制御部24は、いずれかのパイプライン10の処理が終了してメモリが開放されるのを待つ(ステップ409)。そして、ステップ405に戻り、改めて、実行しようとするパイプライン10に保障メモリ・バンド幅を割り当てることが可能か否かを判断する。
実行しようとするパイプライン10に最適容量が設定されていない場合(ステップ402でNo)、次にメモリ割り当て制御部24は、パイプライン10に保障メモリ・バンド幅以上のメモリを割り当てることが可能か否かを判断する(ステップ410)。メモリの空き容量が保障メモリ・バンド幅よりも少ない場合、メモリ割り当て制御部24は、他のパイプライン10が使用しているメモリを開放することが可能か否かを判断する(ステップ407)。そして、他のパイプライン10からメモリを開放させるか(ステップ408)、他のパイプライン10の処理が終了してメモリが開放された後(ステップ409)、実行しようとするパイプライン10に保障メモリ・バンド幅を割り当てることが可能か否かを判断する(ステップ405)。
一方、パイプライン10に保障メモリ・バンド幅以上のメモリを割り当てることが可能な場合(ステップ410でYes)、メモリ割り当て制御部24は、予め定められた方法で、パイプライン10にメモリを割り当てる(ステップ411)。このとき、メモリの空き容量によっては、保障メモリ・バンド幅以上のメモリが割り当てられる。ステップ411におけるメモリの割り当て方法の詳細については後述する。
以上のようにしてパイプライン10および各フィルタ12へのメモリの割り当てを行うことにより、新たにパイプライン10を実行しようとする場合、少なくとも保障メモリ・バンド幅が割り当てられる。また、保障メモリ・バンド幅に相当する空き容量が存在しない場合、保障メモリ・バンド幅以上のメモリを割り当てられて動作している他のパイプライン10が存在すれば、かかる他のパイプライン10にメモリを開放させて保障メモリ・バンド幅で動作させることにより、空き容量を確保し、新たに実行しようとするパイプライン10に割り当てることができる。したがって、本実施形態では、各パイプライン10に、そのパイプライン10の保障メモリ・バンド幅を割り当てて、可能な限り多くのパイプライン10を並列に動作させることが可能となる。
また、新たに実行しようとするパイプライン10に最適容量が設定されており、かつその最適容量分の空き容量が存在する場合には、そのパイプライン10に最適容量が割り当てられる。これにより、いずれのフィルタ12においてもメモリ不足を起因として処理が止まることがなく、パイプライン10を効率良く動作させることが可能となる。さらに、最適容量は、最適状態を実現する最小のメモリ容量であるので、パイプライン10に対して必要以上のメモリが無駄に割り当てられることがない。そのため、各パイプライン10が最適状態で動作している場合であっても、より多くのパイプライン10を並列に動作させることが可能となる。
<保障メモリ・バンド幅の決定方法>
次に、保障メモリ・バンド幅の決定方法について詳細に説明する。
図5は、本実施形態における保障メモリ・バンド幅の決定方法を説明する図である。
図5には、パイプライン10の一部である3つのフィルタ12と、各フィルタ12の入力側および出力側のデータとが記載されている。図5において、データ量はデータ・ブロックの個数で表現されている。これは、上述したように、パイプライン10におけるフィルタ12間のデータのやりとりがデータ・ブロック単位で行われることに基づく。また、以下の説明において、3つのフィルタ12を区別する場合は、図示のようにa〜cの添字を付加する。
図5を参照すると、フィルタ12aは、入力側と出力側のメモリ使用量の保障比率が1:4である。すなわち、フィルタ12aによる処理が行われると、1データ・ブロックのデータが4データ・ブロックのデータに変換される。同様に、フィルタ12bは、入力側と出力側のメモリ使用量の保障比率が4:2である。すなわち、フィルタ12bによる処理が行われると、4データ・ブロックのデータが2データ・ブロックのデータに変換される。フィルタ12cは、入力側と出力側のメモリ使用量の保障比率が1:2である。すなわち、フィルタ12cによる処理が行われると、1データ・ブロックのデータが2データ・ブロックのデータに変換される。
パイプライン10による処理を実行するためには、少なくとも、そのパイプライン10を構成する全てのフィルタ12が使用できるだけのメモリを確保する必要がある。例えば、パイプライン10を構成するフィルタ12が図5に示す3つのフィルタ12a、12b、12cであった場合、各フィルタ12に割り当てられるメモリは次のようになる。すなわち、フィルタ12aの入力側では1データ・ブロック分のデータ量に対応するメモリを必要とする。フィルタ12aの出力側(フィルタ12bの入力側)では、4データ・ブロック分のデータ量に対応するメモリを必要とする。フィルタ12bの出力側(フィルタ12cの入力側)では、2データ・ブロック分のデータ量に対応するメモリを必要とする。フィルタ12cの出力側では、2データ・ブロック分のデータ量に対応するメモリを必要とする。
ここで、フィルタ12cの処理が行われるためには、入力側に1データ・ブロック分のデータ量に対応するメモリがあれば良い。しかし、フィルタ12b、12c間のパイプ14にデータを送るために、フィルタ12bの出力側で必要とされるメモリを確保する必要があるため、2データ・ブロック分のメモリが必要となる。すなわち、フィルタ12bからは2データ・ブロックが出力され、そのうち1データ・ブロックずつが順にフィルタ12cに読み込まれて処理される。したがって、パイプライン10全体では、最低でも図示の9データ・ブロック分のデータ量に対応するメモリが必要となる。
以上のように、パイプライン10が処理を実行するために必要な最低限のメモリ容量、すなわち保障メモリ・バンド幅は、そのパイプライン10を構成する全てのフィルタ12が必要とするメモリ容量の総和となる。ただし、フィルタ12の出力側のメモリは直後のフィルタ12の入力側のメモリと共通である。そして、前方のフィルタ12の出力側と後方のフィルタ12の入力側とで必要とするメモリ容量が異なる場合は、大きい方のメモリ容量が選択される。
<最適状態と最適容量>
次に、最適状態と最適容量について説明する。
上記の保障メモリ・バンド幅は、パイプライン10が使用できるメモリの最低量であるので、メモリの空き容量に余裕があれば、保障メモリ・バンド幅を超えるメモリをパイプライン10に割り当てて良い。パイプライン10に保障メモリ・バンド幅のメモリが割り当てられている場合、そのパイプライン10は処理を実行することは可能であるが、必ずしも効率良く動作することはできない。例えば、パイプライン10を構成するフィルタ12のうち特定のフィルタ12での処理に長時間を要し、直後のフィルタ12が処理を実行できずに入力待ち(すなわち特定のフィルタ12で処理されたデータがパイプ14に出力されるのを待つ状態)となる可能性がある。したがって、メモリに余裕があれば、各パイプライン10に割り当てられるメモリは多い方が良い。パイプライン10に多くのメモリを割り当てて、各フィルタ12の入力側のメモリ(パイプ14)に必ずデータが存在する状態である最適状態が実現されれば、パイプライン10の処理において高いパフォーマンスを得ることができる。
一方、パイプライン10全体の処理能力に対応するメモリ容量を超えるメモリを割り当てても、最適状態は得られるものの、メモリの空き容量が増加するばかりで処理効率は向上しない。また、パイプライン10を構成する複数のフィルタ12のうち、特定のフィルタ12に多くのメモリを配分して偏った割り当てを行った場合、後続のフィルタ12群の処理が間に合わない。そのため、大量に割り当てられた特定のフィルタ12の出力側のメモリにデータが溜まってしまい、処理効率の向上が抑制される。
そこで、本実施形態は、各パイプライン10に関して、最適状態を実現する最小のメモリ容量を最適容量として、そのパイプライン10に割り当てるメモリ容量の上限とする。そして、本実施形態は、各パイプライン10に関して、保障メモリ・バンド幅のメモリを割り当てることができれば動作可能とし、さらにメモリに余裕がある場合には、最適容量のメモリを割り当てることとする。
ところで、ひとつのパイプライン10において、最適状態が実現される各フィルタ12の最適比率は、処理対象のデータの複雑さや属性等(例えば、画像処理を行うパイプライン10の場合、画像(処理対象のデータ)の解像度や色数等)の条件に応じて異なる場合がある。したがって、特定の条件に対応する最適容量が決定された後、同じパイプライン10において、処理における条件が変わることにより最適状態が維持できなくなる場合がある。本実施形態では、このような場合、新たな条件に対応する最適比率を求め、改めて最適容量を決定する。すなわち、最適容量は、実際のパイプライン10の具体的な処理において最適状態が実現されるように、学習により動的に決定される。また、ひとつのパイプライン10が異なる複数の条件で処理を行う場合、各条件に応じて複数の最適容量が決定される場合もあり得る。
なお、パイプライン10の最適容量が決定された後、そのパイプライン10において最適状態が維持できなくなった場合、新たな最適容量が決定されるまでの間におけるメモリの割り当ては、そのパイプライン10に最適容量が設定されていないものとして行われる(図4のステップ402でNOと判断される)。
<最適容量の決定方法>
次に、最適容量の決定方法について説明する。
本実施形態では、最適容量の決定方法の具体例として、平滑化法と追加法の2種類の決定方法を説明する。平滑化法は、はじめに多くのメモリを割り当てて最適状態が得られた後、メモリの割り当て量を順次減らしていきながら最適状態が維持される最小のメモリ容量を求める方法である。追加法は、保障メモリ・バンド幅からメモリの割り当て量を順次増やしていきながら最適状態が得られるメモリ容量を求める方法である。
(1)平滑化法
図6は、平滑化法による最適容量の決定手順を示すフローチャートである。
平滑化法では、パイプライン10を実行しようとする際、そのパイプライン10の保障メモリ・バンド幅以上の空きメモリがある場合には、メモリ割り当て制御部24は、まず、所定の条件に基づいて、保障メモリ・バンド幅を超えるメモリを割り当てる(ステップ601)。ここで、メモリを割り当てる条件としては、最適状態を実現するように十分な余裕を持たせるため、例えば、保障メモリ・バンド幅の3倍等のように設定する。また、パイプライン10を構成する個々のフィルタ12へのメモリの割り当ては、特定のフィルタ12に偏ることがないように、例えば、各フィルタ12の保障比率に基づき、出力側のメモリ容量の3倍を上限とする、というような条件を定める。
具体的には、例えば図5に示したパイプライン10の場合、パイプライン10全体に対して27データ・ブロック分のメモリを割り当てることができる。そして、フィルタ12aの入力側に3データ・ブロック分、出力側に12データ・ブロック分、フィルタ12bの出力側に6データ・ブロック分、フィルタ12cの出力側に6データ・ブロック分のメモリを割り当てることができる。なお、これら割り当て条件の値は例示に過ぎず、実際には、処理の内容、データのサイズや複雑さ等に応じて個別具体的に設定される。例えば、単純に保障メモリ・バンド幅の3倍のメモリ容量を割り当てただけでは最適状態を実現できない場合、保障メモリ・バンド幅の4倍以上のメモリ容量を割り当てるように条件設定を行っても良い。
なお、設定された条件を満たすだけのメモリの空き容量が存在しない場合、メモリ割り当て制御部24は、空き容量分だけを割り当てれば良い。そして、さらにメモリの空き容量が発生した場合に、メモリ割り当て制御部24は、設定された条件を満足するまで追加的にメモリを割り当てる。または、メモリ割り当て情報管理部22により、割り当てたメモリによって最適状態が実現されたか否かを判断し、最適状態が実現されたならば、メモリ割り当て制御部24による制御を、次の平滑化のステップへ移行しても良い。パイプライン10に割り当てられたメモリが設定された条件を満足しない場合、各フィルタ12のうち、いずれのフィルタ12に対して優先的にメモリを割り当てるかを予め定めておいても良い。例えば、処理に長い時間を要するフィルタ12の入力側に、優先的に多くのメモリを割り当てることにより、直前のフィルタ12が処理後のデータを出力できずパイプライン10全体の処理が止まることを回避し易くなる。
以上のような初期ステップにおいて最適状態が実現されたならば(ステップ602でYES)、次にメモリ割り当て制御部24は、所定の規則に基づいて割り当てたメモリ容量を順次減らしていく。割り当てたメモリ容量を減らすための規則は、適宜定め得る。一例として、図6のフローチャートは、パイプライン10の先頭のパイプ14に対応するメモリ(すなわち先頭のフィルタ12の入力側(入力11の出力側)のメモリ)から順に減らしていく手順を示している。
図6を参照すると、メモリ割り当て制御部24は、まず、先頭のフィルタ12の入力側に割り当てられたメモリを1データ・ブロック分減らす(ステップ603)。そして、メモリ割り当て情報管理部22が、最適状態が維持されているか否かを判断する(ステップ604)。最適状態が維持されているならば、メモリ割り当て制御部24は、先頭のフィルタ12の入力側に割り当てられたメモリを、さらに1データ・ブロック分減らす(ステップ603)。ステップ603、604を繰り返し、最適状態でなくなったならば、メモリ割り当て制御部24は、メモリの割り当てを直前の状態(すなわち最適状態が維持されていた最後の状態)に戻す(ステップ605)。
ところで、実際の処理においては、処理対象のデータ量や処理の実行タイミング等に起因して、最適状態を実現するのに十分な容量のメモリが割り当てられている場合であっても、パイプライン10の一部のフィルタ12において、一時的に最適状態が崩れることがあり得る。本実施形態では、このような一時的な最適状態の崩れを状態のゆらぎとして扱い、最適状態が維持されているものとする。具体的には、例えば、メモリ割り当て情報管理部22においてフィルタ12における一定時間のメモリの使用状況を監視し、入力側のメモリにデータが存在しないためにデータを読み込むことができない待ち状態が予め定められた上限値(例えば500ミリ秒等)を超えなければ、最適状態が維持されているとする。あるいは、一定時間のメモリの使用状況において、入力側のメモリにデータが存在しない時間の累積値が一定の割合(例えば10%)を超えなければ、最適状態が維持されているとするようにしても良い。
次に、メモリ割り当て制御部24は、先頭のフィルタ12の出力側に割り当てられたメモリを1データ・ブロック分減らす(ステップ606)。そして、メモリ割り当て情報管理部22が、最適状態が維持されているか否かを判断する(ステップ607)。最適状態が維持されているならば、メモリ割り当て制御部24は、先頭のフィルタ12の出力側に割り当てられたメモリを、さらに1データ・ブロック分減らす(ステップ606)。ステップ606、607を繰り返し、最適状態でなくなったならば、メモリ割り当て制御部24は、メモリの割り当てを直前の状態(すなわち最適状態が維持されていた最後の状態)に戻す(ステップ608)。
次に、メモリ割り当て制御部24は、パイプライン10において、処理対象として着目しているフィルタ12(現在は先頭のフィルタ12)の後段にフィルタ12が存在するか否かを調べる(ステップ609)。そして、後段にフィルタ12が存在するならば、メモリ割り当て制御部24は、直後のフィルタ12に着目し(ステップ610)、着目したフィルタ12の出力側に割り当てられたメモリを1データ・ブロック分減らす(ステップ606)。以下、ステップ606からステップ610までの動作を、全てのフィルタ12に関して繰り返す。そして、着目しているフィルタ12の後段にフィルタ12が存在しなくなったならば(全てのフィルタ12に対して処理を行ったならば)、平滑化のステップを終了する。このとき、パイプライン10に割り当てられているメモリは、最適状態が得られる最小のメモリ容量となっている。したがって、以上の動作により、パイプライン10の最適容量が決定される。
なお、図6に示した動作例では、パイプライン10の先頭のパイプ14に対応するメモリから順に割り当てる容量を減らしたが、メモリを減らす順番は、上記動作例に限定されない。本実施形態は、最適状態を維持したまま、できるだけメモリの割当量を削減することができれば良く、他の手順によりメモリを減らす対象のフィルタ12を特定しても構わない。
図7は、図5に示したパイプライン10を例として、平滑化法により最適容量を決定する様子を示す図である。
図7(a)を参照すると、このパイプライン10において、フィルタ12aの入力側および各フィルタ12a、b、cの出力側に、図5に示した保障メモリ・バンド幅の3倍のメモリを割り当てている。この状態で、最適状態が得られたものとする(すなわち、ステップ602でYes)。
次に、図7(b)を参照すると、フィルタ12aの入力側に割り当てられたメモリのうち、1データ・ブロック分が減っている。図においては、減少分のメモリが破線で示されている。この状態で、最適状態が得られたものとする(すなわち、ステップ604でYes)。図7(c)を参照すると、フィルタ12aの入力側に割り当てられたメモリのうち、さらに1データ・ブロック分が減っている。フィルタ12aの入力側に割り当てられたメモリは、残り1データ・ブロック分であるため、これ以上減らすことはできない。したがって、次の図7(d)では、フィルタ12aの出力側に割り当てられたメモリが減っている。以下、同様にして、最適状態が維持されることを確認しながら、フィルタ12aの出力側のメモリ、フィルタ12bの出力側のメモリ、フィルタ12cの出力側のメモリと順に減らしていく。
なお、図7(d)には、フィルタ12aの出力側のメモリが4データ・ブロック分減った様子が示されている。これは、フィルタ12aの保障比率が1:4であることから(図5参照)、フィルタ12aの出力側のメモリは、4データ・ブロック分の増減がなされた場合に、最適状態が維持されるか否かが問題となるためである。すなわち、図6に示した手順にしたがってメモリを減らす場合、図7(c)の状態から図7(d)の状態に至るのに、ステップ606、607の動作が4サイクル行われたことになる。
(2)追加法
図8は、追加法による最適容量の決定手順を示すフローチャートである。
追加法では、パイプライン10を実行しようとする際、そのパイプライン10の保障メモリ・バンド幅以上の空きメモリがある場合には、メモリ割り当て制御部24は、まず、そのパイプライン10の保障メモリ・バンド幅を割り当てる(ステップ801)。そして、メモリ割り当て情報管理部22が、最適状態が実現されているか否かを判断する(ステップ802)。最適状態が実現されているか否かの判断においては、上記の平滑化法(図6参照)において説明したように、状態のゆらぎが考慮される。すなわち、最適化状態を崩す待ち状態の発生頻度が一定以下である場合に、最適化状態が実現されていると判断する。
最適状態でない場合、メモリ割り当て制御部24は、処理の実行に待ち状態が発生しているフィルタ12を特定し、メモリの割当量を増加させる箇所(以下、メモリ増加箇所)を決定する(ステップ803)。ここで、メモリ増加箇所の決定方法としては、種々の方法を取り得る。例えば、次のようにして決定することができる。
ひとつのフィルタ12が処理を行う場合に、入力側のメモリにデータが存在しないためにデータを読み込むことができず、直前のフィルタ12からのデータ出力を待つ状態が発生するものとする(出力待ち)。また、ひとつのフィルタ12が処理を行った後のデータを出力しようとする場合に、出力側のメモリの空きが存在しないためにデータを出力することができず、直後のフィルタ12によりデータの読み込みが行われてメモリへのデータ出力が可能となるのを待つ状態が発生するものとする(読み込み待ち)。そして、あるパイプ14に対応するメモリに関して、その直後のフィルタ12における出力待ちと直前のフィルタ12における読み込み待ちが共に発生している場合に、そのパイプ14をメモリ増加箇所として決定する。
次に、メモリ割り当て制御部24は、ステップ803で決定したメモリ増加箇所に割り当てられたメモリを1データ・ブロック分増やす(ステップ804)。そして、メモリ割り当て情報管理部22が、最適状態が実現されたか否かを判断する(ステップ802)。ステップ802からステップ804までの動作を繰り返し、パイプライン10の全体にわたって出力待ちおよび読み込み待ちの両方が発生している箇所が解消され、最適状態が実現されたならば、メモリ割り当て制御部24の処理を終了する。このとき、パイプライン10に割り当てられているメモリは、最適状態が得られる最小のメモリ容量となっている。したがって、以上の動作により、パイプライン10の最適容量が決定される。
ここで、メモリ増加箇所の決定方法について、さらに説明する。
実際の処理においては、処理対象のデータ量や処理の実行タイミング等に起因して、最適容量が割り当てられている場合であっても、パイプライン10の一部のフィルタ12において、一時的に出力待ちや読み込み待ちが発生することがあり得る。そこで、例えば、メモリ割り当て情報管理部22においてフィルタ12における一定時間のメモリの使用状況を監視し、データの出力時に出力待ちが発生する確率およびデータの読み込み時に読み込み待ちが発生する確率が一定以上(例えば40%以上)である場合に、該当箇所をメモリ増加箇所とすることが考えられる。このようにすれば、データ処理の実行時における様々な条件の変動によって一時的に出力待ちや読み込み待ちが発生する場合のような、いわば状態のゆらぎに対して過敏に対応することを回避することができる。
なお、上記のメモリ増加箇所の決定方法は例示に過ぎない。本実施の形態は、保障メモリ・バンド幅から初めて最適状態が得られるまで、いずれかのフィルタ12に割り当てられるメモリを順次増加していけば良く、他の手順によりメモリ増加箇所を決定しても構わない。
<ハードウェアの構成例>
最後に、本実施形態のメモリ管理システムを含む情報処理システムを実現するのに好適なコンピュータのハードウェア構成について説明する。
図9は、このようなコンピュータのハードウェア構成の一例を示す図である。
図9に示すコンピュータ100は、演算手段であるCPU(Central Processing Unit)100aと、主記憶手段であるメモリ100cを備える。また、外部デバイスとして、磁気ディスク装置(HDD:Hard Disk Drive)100g、ネットワーク・インタフェース・カード100f、ビデオ・カード100dおよび表示装置100j、音声機構100h、キーボードやマウス等の入力デバイス100i等を備える。
図9に示す構成例では、メモリ100cおよびビデオ・カード100dは、システム・コントローラ100bを介してCPU100aに接続されている。また、ネットワーク・インタフェース・カード100f、磁気ディスク装置100g、音声機構100hおよび入力デバイス100iは、I/Oコントローラ100eを介してシステム・コントローラ100bと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。なお、図9は、本実施例が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施例はパイプ・アンド・フィルタによるパイプライン処理を行う情報処理システムに広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。例えば、パイプライン処理は、ストリーミング画像の表示装置や印刷機器等の組み込み機器における利用も多く、そのような組み込み機器のコンピュータにおいても本実施形態は適用し得る。
図9において、磁気ディスク装置100gにはOSやアプリケーション・ソフトのプログラムが格納されている。そして、これらのプログラムがメモリ100cに読み込まれてCPU100aに実行されることにより、図1に示した各パイプライン10の入力11、フィルタ12、出力13、メモリ・コントローラ20の各機能、システム・メモリ管理機構30を含む各種の機能が実現される。
また、図9には、ひとつのコンピュータの構成例を記載したが、実際のシステムにおいては、複数のコンピュータにより、パイプライン10、メモリ・コントローラ20、システム・メモリ管理機構30等が個別に構成される場合もある。さらに、パイプライン10における各フィルタ12を、複数のコンピュータを用いて構成しても良い。複数のコンピュータにて本実施形態の情報処理システムを実現した場合、メモリ・コントローラ20の機能を備えたサーバ・コンピュータを用意して、メモリの管理および割り当て制御を統括的に行っても良い。
10…パイプライン(パイプ・アンド・フィルタ)、11…入力(Sink In)、12…フィルタ、13…出力(Sink Out)、14…パイプ、20…メモリ・コントローラ、21…登録情報管理部、22…メモリ割り当て情報管理部、23…システム・メモリ情報管理部、24…メモリ割り当て制御部、25…最適化部、30…システム・メモリ管理機構、111、122…メモリ取得部、112、124、132…データ処理部、121…メモリ使用登録部、123、131…メモリ開放部

Claims (8)

  1. データ処理を行うシステムにおいて、
    データに対して一連の処理を行う1または複数のデータ処理手段と、
    前記データ処理手段に対してデータ処理に使用されるメモリを割り当てるメモリ割り当て手段とを備え、
    前記データ処理手段は、
    処理対象のデータを入力する入力手段と、
    入力されたデータに対して前記一連の処理を構成する個別の処理を行う1または複数の個別処理手段と、
    前記一連の処理が行われたデータを出力する出力手段と、
    前記入力手段、前記個別処理手段および前記出力手段の間でのデータの受け渡しに用いられるバッファ手段とを備え、
    前記メモリ割り当て手段は、データ処理を実行しようとする前記データ処理手段にメモリを割り当てる場合に、
    メモリの空き容量が、当該データ処理手段が処理を実行中に全ての前記個別処理手段の処理対象であるデータが前記バッファ手段に保持されている状態である最適状態を実現するメモリ容量である最適容量以上である場合は、当該最適容量を当該データ処理手段に割り当て、
    メモリの空き容量が、前記最適容量よりも少なく、かつ前記個別処理手段の処理に必要なメモリ容量の総和である保障メモリ容量以上である場合は、当該保障メモリ容量を当該データ処理手段に割り当てる、
    システム。
  2. 前記メモリ割り当て手段は、
    メモリの空き容量がデータ処理を実行しようとする前記データ処理手段の保障メモリ容量よりも少ない場合、既に処理を実行している他のデータ処理手段のうち保障メモリ容量以上のメモリ容量を割り当てられているデータ処理手段に当該保障メモリ容量を超える分のメモリを開放させ、得られたメモリの空き容量が当該データ処理を実行しようとするデータ処理手段の保障メモリ容量以上となったならば、当該保障メモリ容量を当該データ処理手段に割り当てる、
    請求項1に記載のシステム。
  3. 前記メモリ割り当て手段は、
    データ処理を実行しようとする前記データ処理手段に前記最適容量が設定されていない場合、前記保障メモリ容量以上のメモリを当該データ処理手段に割り当てられるだけのメモリの空き容量があるならば、当該空き容量に応じて定められるメモリ容量を当該データ処理手段に割り当てる、
    請求項1または請求項2に記載のシステム。
  4. 前記メモリ割り当て手段は、
    前記データ処理手段による処理の実行時のメモリの使用状態が前記最適状態となっているか否かを判断し、判断結果に基づき前記最適容量を動的に設定する、
    請求項1乃至請求項3のいずれかに記載のシステム。
  5. 前記メモリ割り当て手段は、
    前記データ処理手段による処理の実行時のメモリの使用状態として、一の前記個別処理手段から前記バッファ手段へのデータの書き込みにおける待ち状態および後続の前記個別処理手段による当該バッファ手段からのデータの読み込みにおける待ち状態が一定以上の頻度で発生する場合に、当該最適状態となるまで当該バッファ手段として用いられるメモリの割り当てを増加する、
    請求項4に記載のシステム。
  6. 前記メモリ割り当て手段は、
    前記データ処理手段による処理の実行時のメモリの使用状態が前記最適状態にある場合、予め定められた規則に従って、前記個別処理手段に順次着目し、着目した当該個別処理手段により読み込まれるデータを保持する前記バッファ手段として用いられるメモリの割り当てを減少させる処理を、当該最適状態が維持される限り継続して行う、
    請求項4に記載のシステム。
  7. データ処理を行うシステムにおいて、
    データに対して一連の処理を行う1または複数のデータ処理手段と、
    前記データ処理手段に対してデータ処理に使用されるメモリを割り当てるメモリ割り当て手段とを備え、
    前記データ処理手段は、
    処理対象のデータを入力する入力手段と、
    入力されたデータに対して前記一連の処理を構成する個別の処理を行う1または複数の個別処理手段と、
    前記一連の処理が行われたデータを出力する出力手段と、
    前記入力手段、前記個別処理手段および前記出力手段の間でのデータの受け渡しに用いられるバッファ手段とを備え、
    前記メモリ割り当て手段は、データ処理を実行しようとする前記データ処理手段にメモリを割り当てる場合に、
    データ処理を実行しようとする前記データ処理手段に、当該データ処理手段が処理を実行中に全ての前記個別処理手段の処理対象であるデータが前記バッファ手段に保持されている状態である最適状態を実現するメモリ容量である最適容量が設定されており、かつメモリの空き容量が当該最適容量以上である場合は、当該最適容量を当該データ処理手段に割り当て、
    データ処理を実行しようとする前記データ処理手段に前記最適容量が設定されているが、メモリの空き容量が当該最適容量よりも少なく、かつ前記個別処理手段の処理に必要なメモリ容量の総和である保障メモリ容量以上である場合は、当該保障メモリ容量を当該データ処理手段に割り当て、
    データ処理を実行しようとする前記データ処理手段に前記最適容量が設定されておらず、前記保障メモリ容量以上のメモリを当該データ処理手段に割り当てられるだけのメモリの空き容量がある場合は、当該空き容量に応じて定められるメモリ容量を当該データ処理手段に割り当て、
    メモリの空き容量がデータ処理を実行しようとする前記データ処理手段の前記保障メモリ容量よりも少ない場合は、当該データ処理手段にメモリを割り当てず、
    前記データ処理手段による処理の実行時のメモリの使用状態が前記最適状態となっているか否かを判断し、判断結果に基づき前記最適容量を動的に設定する、
    システム。
  8. データに対して一連の処理を行うデータ処理手段と、
    前記データ処理手段に対してデータ処理に使用されるメモリを割り当てるメモリ割り当て手段とを備え、
    前記データ処理手段は、
    処理対象のデータを入力する入力手段と、
    入力されたデータに対して前記一連の処理を構成する個別の処理を行う1または複数の個別処理手段と、
    前記一連の処理が行われたデータを出力する出力手段と、
    前記入力手段、前記個別処理手段および前記出力手段の間でのデータの受け渡しに用いられるバッファ手段と
    を備えたシステムにおける前記データ処理手段にメモリを割り当てる方法において、
    データ処理を実行しようとする前記データ処理手段に、当該データ処理手段が処理を実行中に全ての前記個別処理手段の処理対象であるデータが前記バッファ手段に保持されている状態である最適状態を実現するメモリ容量である最適容量が設定されているか否かを判断するステップと、
    前記最適容量が設定されている場合に、メモリの空き容量に応じて、当該最適容量または前記個別処理手段の処理に必要なメモリ容量の総和である保障メモリ容量を、データ処理を実行しようとする前記データ処理手段に割り当てるステップと、
    前記最適容量が設定されていない場合に、メモリの空き容量に応じて、前記保障メモリ容量以上のメモリ容量をデータ処理を実行しようとする前記データ処理手段に割り当て、当該データ処理手段による処理の実行時のメモリの使用状態に基づいて当該データ処理手段の前記最適容量を設定するステップと、
    を含む、方法。
JP2010203650A 2010-09-10 2010-09-10 データ処理を行うシステムおよびメモリを割り当てる方法 Pending JP2012059152A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010203650A JP2012059152A (ja) 2010-09-10 2010-09-10 データ処理を行うシステムおよびメモリを割り当てる方法
US13/207,528 US8775767B2 (en) 2010-09-10 2011-08-11 Method and system for allocating memory to a pipeline

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010203650A JP2012059152A (ja) 2010-09-10 2010-09-10 データ処理を行うシステムおよびメモリを割り当てる方法

Publications (1)

Publication Number Publication Date
JP2012059152A true JP2012059152A (ja) 2012-03-22

Family

ID=45807805

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010203650A Pending JP2012059152A (ja) 2010-09-10 2010-09-10 データ処理を行うシステムおよびメモリを割り当てる方法

Country Status (2)

Country Link
US (1) US8775767B2 (ja)
JP (1) JP2012059152A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015530660A (ja) * 2012-09-27 2015-10-15 インテル コーポレイション 物理メモリの動的パーティショニング技術

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108539B2 (en) * 2013-06-13 2018-10-23 International Business Machines Corporation Allocation of distributed data structures
JP5939583B2 (ja) 2013-12-13 2016-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 抽出装置、データ処理システム、抽出方法および抽出プログラム
CA2951618A1 (en) * 2015-12-16 2017-06-16 Accenture Global Solutions Limited Data pipeline architecture for cloud processing of structured and unstructured data
US10447763B2 (en) * 2016-12-08 2019-10-15 Nanning Fugui Precision Industrial Co., Ltd. Distributed storage method and system
US10698625B2 (en) 2017-05-15 2020-06-30 Accenture Global Solutions Limited Data pipeline architecture for analytics processing stack

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567564B1 (en) 1996-04-17 2003-05-20 Sarnoff Corporation Pipelined pyramid processor for image processing systems
US6611855B1 (en) 1999-06-21 2003-08-26 Telefonaktiebolaget Lm Ericsson (Publ) Flexible and efficient channelizer architecture
US7636498B2 (en) 2003-06-02 2009-12-22 Olympus Corporation Image processing apparatus
US7081897B2 (en) 2003-12-24 2006-07-25 Intel Corporation Unified memory organization for power savings
JP4532969B2 (ja) 2004-04-16 2010-08-25 キヤノン株式会社 データ処理装置及び方法
JP2005322049A (ja) 2004-05-10 2005-11-17 Fuji Xerox Co Ltd 画像処理装置およびプログラム
JP2007279829A (ja) 2006-04-03 2007-10-25 Fuji Xerox Co Ltd 画像処理装置およびプログラム
JP4814030B2 (ja) 2006-09-12 2011-11-09 株式会社リコー 画像処理装置、画像処理方法、画像処理プログラム
JP2009118277A (ja) 2007-11-07 2009-05-28 Ricoh Co Ltd 画像処理装置、画像処理方法、画像処理プログラム
JP4935730B2 (ja) 2008-03-18 2012-05-23 富士ゼロックス株式会社 画像処理装置
JP2010068686A (ja) 2008-09-12 2010-03-25 Honda Motor Co Ltd 回転電機用の固定子

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015530660A (ja) * 2012-09-27 2015-10-15 インテル コーポレイション 物理メモリの動的パーティショニング技術

Also Published As

Publication number Publication date
US8775767B2 (en) 2014-07-08
US20120066470A1 (en) 2012-03-15

Similar Documents

Publication Publication Date Title
JP5022030B2 (ja) コンピュータシステム、これを構成するサーバ、そのジョブ実行制御方法及びプログラム
KR101553649B1 (ko) 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
JP6172649B2 (ja) 情報処理装置、プログラム、及び、情報処理方法
JP2007041720A (ja) ジョブステップ実行プログラムおよびジョブステップ実行方法
JP2012059152A (ja) データ処理を行うシステムおよびメモリを割り当てる方法
JP2007079789A (ja) 計算機システム及びイベント処理方法
WO2016127291A1 (zh) 内存管理装置和方法
JP2008152618A (ja) ジョブ割当プログラム、方法及び装置
KR20140137573A (ko) 데이터 분산 서비스 미들웨어의 쓰레드를 위한 메모리 관리 장치 및 방법
US20170344266A1 (en) Methods for dynamic resource reservation based on classified i/o requests and devices thereof
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
WO2013038566A1 (ja) コンピュータシステム
WO2014188642A1 (ja) スケジュールシステム、スケジュール方法、及び、記録媒体
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
CN112748883B (zh) 一种io请求流水线处理设备、方法、***及存储介质
US11169720B1 (en) System and method for creating on-demand virtual filesystem having virtual burst buffers created on the fly
CN113076189B (zh) 具有多数据通路的数据处理***及用多数据通路构建虚拟电子设备
CN113076180B (zh) 上行数据通路的构建方法及数据处理***
JP2014078214A (ja) スケジュールシステム、スケジュール方法、スケジュールプログラム、及び、オペレーティングシステム
JP2008276322A (ja) 情報処理装置、情報処理システムおよび情報処理方法
JP6364827B2 (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
JP6251417B2 (ja) ストレージシステム、及び、記憶制御方法
JP2019164510A (ja) ストレージシステム及びio処理の制御方法
JP7235295B2 (ja) 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
JP6551069B2 (ja) 情報処理装置および画像形成装置