JP2012506581A - 複数のメモリ要素に分配されたメモリ空間内でデータ・バッファを管理する装置 - Google Patents
複数のメモリ要素に分配されたメモリ空間内でデータ・バッファを管理する装置 Download PDFInfo
- Publication number
- JP2012506581A JP2012506581A JP2011532608A JP2011532608A JP2012506581A JP 2012506581 A JP2012506581 A JP 2012506581A JP 2011532608 A JP2011532608 A JP 2011532608A JP 2011532608 A JP2011532608 A JP 2011532608A JP 2012506581 A JP2012506581 A JP 2012506581A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- memory
- page
- given
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本発明の主題はとりわけ、複数のメモリ要素にわたり分配されたメモリ空間内でデータ・バッファを管理する装置である。
メモリ空間はメモリ・ページによって割り当て可能であり、各バッファは1つ以上のメモリ・ページを含む。
バッファはアプリケーション実行用の少なくとも1つの処理ユニットによって使用可能であり、アプリケーションはタスクを並列に実行する複数の処理ユニット(3)により実行され、メモリ要素は処理ユニットにより並列にアクセス可能である。
装置はアプリケーションの実行中にバッファをタスクに割り当てる手段と、バッファへのアクセス権を管理する手段とを含む。
バッファへのアクセス権を管理する手段は、前記バッファを非同期のタスク間で共有するような方法で、所与のページへの書き込みが、前記ページから現在読み込まれているデータを修正しないこと、又は所与のページからの読み取りが、前記ページに現在書き込まれているデータにアクセスしないことを確認するために、所与のバッファ内のページへのアクセス権を管理する手段を含む。
用途:高い計算能力を有する組み込みシステム
【選択図】 図1
メモリ空間はメモリ・ページによって割り当て可能であり、各バッファは1つ以上のメモリ・ページを含む。
バッファはアプリケーション実行用の少なくとも1つの処理ユニットによって使用可能であり、アプリケーションはタスクを並列に実行する複数の処理ユニット(3)により実行され、メモリ要素は処理ユニットにより並列にアクセス可能である。
装置はアプリケーションの実行中にバッファをタスクに割り当てる手段と、バッファへのアクセス権を管理する手段とを含む。
バッファへのアクセス権を管理する手段は、前記バッファを非同期のタスク間で共有するような方法で、所与のページへの書き込みが、前記ページから現在読み込まれているデータを修正しないこと、又は所与のページからの読み取りが、前記ページに現在書き込まれているデータにアクセスしないことを確認するために、所与のバッファ内のページへのアクセス権を管理する手段を含む。
用途:高い計算能力を有する組み込みシステム
【選択図】 図1
Description
本発明は、複数のメモリ要素に分配されたメモリ空間内でデータ・バッファを管理する装置に関する。それは例えば、高い計算能力を有する組み込みシステムの領域において適用される。
現行の組み込みシステムは、常により複雑な処理を実行する傾向がある。例として、携帯電話は完全な遠隔通信チャネルを実装しなければならない。機上のビデオ監視装置は、画像処理用の完全なチャネルを実装しなければならない。このアプリケーションの複雑さの増加と並列に、同一の装置内に組み込まれるアプリケーションの数は同様に絶え間なく増加している。これはとりわけ、例えば「スマートフォン」タイプの携帯電話、又は「携帯情報端末」において、遠隔通信機能、マルチメディア機能、ゲーム、あるいは衛星測位機能と組み合わせることによって、常により多目的のオブジェクトを作ろうという望みにより説明される。常により高い計算能力を提供するニーズに加えて、特に現在の実施環境に応じ、アーキテクチャを最適化できることもまた必要である。これは本発明が解決するために提案する技術的問題の1つを構成する。
さらに、多くの組み込みシステムは、より広い問題解決の手立てを提案する傾向があり、ユーザーが彼ら自身のアプリケーションを実行するため、ユーザーに自分の流儀でそれらを自由に使用させる。このより広い手立ては、アプリケーションのコンテクストが設計段階では完全に決められないため、一般に「未実行」又は「オフライン」解決策と称されている、システム構成を最適化するための静的解の有効性を損なう。とりわけ、ビデオセンサー及び高速変換器の容量における進歩を考慮すると、取り扱われるデータのタイプと量を決定するのは困難である。さらに、多くの優れたアプリケーションにおいて、実行されるべき処理は入力データに応じて変化する。例として、ビデオ監視のアプリケーションは、一般的に或るシーンにおけるオブジェクトの検索を目的とし、1つ以上のオブジェクトが検出されたとき、アプリケーションは検出されたオブジェクトの追跡段階、さらに解析段階へと移行する。これは本発明が解決するために提案する技術的問題の1つを再度構成する。
一般に「実行中」又は「オンライン」解決策と称されている、システム構成を最適化するための非静的解は、使用の全てのシナリオを予測する必要はない。それらはアプリケーションのコンテクストに素早く適合するような方法で、例えば資源を制御するための動的メカニズム、例えば計算資源を割り当てるための、又は記憶資源を割り当てるためのメカニズムを実装することが基本的に重要である。そのとき計算集約型タスクが、相互に通信するこれらのタスク間の非常に強い相互作用と共に、制御により支配されるタスクに沿って実行される。しかしながら、そのような制御メカニズムをしかるべき場所に置くことは、性能の観点から高価であり得る。これは本発明が解決するために提案する技術的問題の1つを再度構成する。
事実、タスクはとりわけデータ・バッファを介して通信する。バッファはそこに単一のプロデューサ・タスクが書き込み可能で、そこから幾つかのコンシューマ・タスクが潜在的に読み取れる、メモリの領域である。非常に複雑なアプリケーションの枠組み内では、アプリケーションの実行に必要なメモリバッファの数が、それゆえコンピュータ・マシンの記憶容量を超過し得る。これは本発明が解決するために提案する技術的問題の1つを再度構成する。
今日の解決策は、アプリケーションによって現在使用されているバッファを、動的に割り当て、そして割り当てを解除することである。メモリの割り当ては、プログラム内で取り扱われる所与のオブジェクトを記憶するための、十分な大きさのメモリ空間を用意しておくこと、及び次にその使用後に前記メモリ空間を解放することを主な目的とする。しかしアロケータはまた、メモリのどの部分が使われ、どの部分が空いているかを指定する情報を更新する役目を持ち、それを時間的不利益と引き換えに行っている。先行技術は時間的不利益を最小化する一方で、メモリの占有を最適化するための技術に富む。最も良く知られる技術は、3つのタイプのアプローチ:"Sequential Fit"(「逐次はめ込み」)、"Segregated Free Lists"(「分離フリー・リスト」)、及び"Buddy System"(「バディシステム」)による、隣接するメモリ領域の割り当てに基づく。
"Sequential Fit"(「逐次はめ込み」)タイプのアロケータは、メモリ内の全ての空きブロックの線形リストに基づく。従って、nbページのメモリのオブジェクトの割り当て段階は、nbページの空きメモリブロックが見出されるまで、このリストを逐次走査することにある。このアルゴリズム及びその様々な最適化は、実施が非常に容易である。しかし、それは割り当て可能なメモリ領域を見出す前に、逐次的なやり方で全体のリストが走査される必要が潜在的にあり得るため、極度に不利益をもたらす。これは"Sequential Fit"(「逐次はめ込み」)アプローチの主要な欠点を構成する。
割り当てを加速させるため、"Segregated Free Lists"(「分離フリー・リスト」)タイプのアロケータは、メモリ内の全ての空きブロックの単一のリストでなく、各々のリストが或る大きさの空きブロックのみを含む、幾つかの空きブロックのリストを考慮する。例えば、1つのリストは10〜20ページの空きブロックを含むことができ、別のリストは20〜40ページの空きブロックを含むことができる、等々。割り当て段階の間、空き領域の検索は適切な大きさのブロックを含むリスト内においてのみ実行される。このアプローチは検索を大幅に加速するが、多数のリストの保持を必要とする。これは"Segregated Free Lists"(「分離フリー・リスト」)アプローチの主要な欠点を構成する。
割り当てを更に加速するため、"Buddy System"(「バディシステム」)タイプのアロケータは、大きさが2の累乗の空きブロックを含むリストを考慮する。或るブロックが2の累乗で表わされる大きさを持たない場合、その大きさは2の1つ高い累乗に近似される。この制約はメモリ空間を、実質的に半分の大きさの2セットへと切り分けることを可能にする。各セットは限界の大きさに達するまで、順々に2つのより小さい実体へと分解される。このアプローチはリストの数を減少させるが、それは著しいメモリの断片化を生じる。事実、2の更に高い累乗に丸めることは、メモリブロックの過少利用を引き起こす。これは"Buddy System"(「バディシステム」)アプローチの主要な欠点を構成する。
しかしながら、更に割り当てを加速するため、それらがソフトウェアにおいて実施されようと、あるいはそれらが特定のハードウェアのオペレータにおいて実施されようと、動的にメモリを割り当て、及び割り当て解除するためのこれら3つのタイプの解決策は常に、割り当てられるメモリ領域の隣接関係の制約に悩む。事実、この隣接関係の制約はあらゆる場合にメモリの過少利用をもたらし、割り当て要求は、利用可能なメモリ空間の不足のためでなく、十分に広い隣接するメモリ領域が存在しないために失敗し得る。これは本発明が解決するために提案する技術的問題の1つを再度構成する。
様々なソフトウェアの解決策は、不連続なメモリ領域を動的に割り当て、及び割り当て解除することを可能にする。例えば、論文"Page−Based Non−Contiguous Dynamic Memory Allocator"(「ページに基づく不連続な動的メモリ・アロケータ」)(J.Chenら)において、ハードウェア・アロケータは、空きメモリ・ページの集合を保持するために、"First In First−Out"(FIFO)(「先入れ先出し」)タイプのデータ構造を用いる。各割り当ての際、それはFIFO構造からページを引き出す。割り当て解除の間、それは空きページをFIFO構造内へ入力する。この単純な解決策は良好な反応性を可能にする。しかしそれは、その大きさがシステム内のメモリのページ数に直接比例する、FIFAデータ構造を必要とする。従ってそれは高いシリコン・コストを有し得る。さらに、この解決策はメモリ空間が、より一般的には"banked memory space"(「バンク化されたメモリ空間」)と称される、幾つかのメモリバンクにわたって分配されている場合、アクセスの並列性の利用を最大化するための、メモリ空間内のページ分配の最適化を可能にしない。これは主要な欠点を構成する。別の例として、論文"SOCDMMU Dynamic Memory Management For Embedded Real−Time Multiprocessor System on a Chip"(「組み込みリアルタイム・マルチプロセッサ・システムオンチップ用SOCDMMUの動的メモリ管理」)(M.Shahalan)において、SOCDMMUと呼ばれるモジュールは、それらが空であろうと一杯であろうと、全てのメモリ・ページの状態を記述する表を用いる。空きページの検索は、表において利用できる最初のページを検索する"First−fit"(「先行一致」)アルゴリズムにより実行され、このページがその後に割り当てられる。空きページの検索を可能にするデータ構造は、FIFO構造よりもずっと量が少ないが、最悪の場合、空きページを突き止める前にメモリ状態の表全体が走査される必要があり得るため、空きページの検索はやはり長時間となり得る。さらに、この解決策もまたバンク化されたメモリの場合に、アクセスの並列性を最も良く利用するための、メモリ空間内のページ分配の最適化を可能にしない。これは本発明が解決するために提案する技術的問題の1つを再度構成する。
さらに、1つのプロデューサ・タスク及び1つ以上のコンシューマ・タスクによって同時に取り扱われるデータ・バッファの管理は、現行のシステムにおいては最適化されない。"read−after−write"(「リード・アフター・ライト」)タイプ又は「ライト・アフター・リード」(write−after−read)タイプの従属関係への適合を保証するため、現行のシステムは、データのプロデューサ・タスク及びコンシューマ・タスクが明確に同期されるものと、大まかに仮定している。従って、ページはそれが完全に消費されたときにのみ解放される。これは本発明が解決するために提案する技術的問題の1つを再度構成する。
本発明の目的は特に、幾つかのメモリ要素にわたって分配されているメモリ空間を動的に管理するための革新的な解決策を提案することにより、前述の欠点を軽減することである。バッファを全てのメモリ要素にわたって広げることにより、これらの要素が並列にアクセス可能なとき、それはとりわけ有効である。このため、本発明の主題は特に、複数のメモリ要素にわたって分配されているメモリ空間内のデータ・バッファを管理する装置である。メモリ空間はメモリ・ページにより割り当て可能であり、各バッファは1つ以上のメモリ・ページを含む。バッファはアプリケーションの実行のための、少なくとも1つの処理ユニットによって使用可能であり、アプリケーションはタスクを並列に実行する、複数の処理ユニット(3)により実行され、メモリ要素は処理ユニットにより並列にアクセスできる。装置はアプリケーションの実行中にバッファをタスクに割り当てる手段、及びバッファへのアクセス権を管理する手段を備える。バッファへのアクセス権を管理する手段は、非同期のタスク間で前記バッファを共有するような方法で、所与のページへの書き込みが、前記ページから現在読み取られているデータを変更しないこと、又は所与のページからの読み取りが、前記ページに現在書き込まれているデータにアクセスしないことを確認するために、所与のバッファ内のページへのアクセス権を管理する手段を含む。
有利なことに、バッファを割り当てる手段は、同一のメモリ要素に割り当てられるバッファの最大の数を最小化するような方法で、バッファを割り当てることができる。
好適な実施形態において、バッファを割り当てる手段は、所与のレジスタ内の所与のビットが、所与のメモリ・ページの空き状態又は空きでない状態を特徴付ける、メモリ・ページの充填状態レジスタを含むことができ、バッファを割り当てる手段は又、所与のレジスタ内の所与のビットが、所与のメモリ要素の部分的に一杯の状態又は部分的に一杯でない状態を特徴付ける、メモリ要素の空き状態レジスタと同様に、所与のレジスタ内の所与のビットが、所与のメモリ要素の空き状態又は空きでない状態を特徴付ける、メモリ要素の充填状態レジスタを含むことができる。バッファを割り当てる手段は次に、メモリ要素の空き状態レジスタの更新を加速するための、メモリ・ページの充填状態レジスタ上における排他的なORタイプの論理演算と同様に、メモリ要素の充填状態レジスタの更新を加速するための、メモリ・ページの充填状態レジスタ上におけるANDタイプの論理計算を行う手段を含むことができる。バッファを割り当てる手段は、1周期で最初のビットを1に決定可能にする優先度付き符号化器を、メモリ要素の充填状態レジスタ及び空き状態レジスタ内に含むことができる。
例えば、装置はアプリケーションの実行中にバッファの割り当てを解除する手段を備えることができ、バッファ内に含まれるデータの物理アドレスは、前記バッファがアプリケーションの実行途上で割り当てを解除され、次に再度割り当てられる場合に可変である。処理ユニットは次に、アプリケーションを実行するために不変の仮想アドレスを使うことができ、装置は仮想アドレスを物理アドレスに変換する手段を備え得る。仮想アドレスを物理アドレスに変換する手段は、仮想アドレスと物理アドレス間の対応を記憶するための、少なくとも1つの構造を含むことが可能である。所与のバッファ内に含まれるデータの、仮想アドレスと物理アドレス間の対応は、前記バッファ専用の1つ以上の構造内に記憶され得る。仮想アドレスを物理アドレスへ変換する手段は又、各処理ユニットにおける記憶構造のコピーも含み得る。
有利なことに、バッファへのアクセス権を管理する手段は、所与のタスクがデータを所与のバッファに書き込むのを認可されていることを確認する手段を含み得る。それらは又、所与のバッファから読み取られるタスクの数が、所定のしきい値を超えないことを確認する手段も備える。それらは更にタスクからバッファに書き込む権限を取り下げ、そして前記バッファに書き込む別のタスクを認可するための手段も含む。
有利なことに、バッファを割り当てる手段は、利用できるメモリ空間が所与のバッファを割り当てるのに十分であることを確認する手段を含み得る。バッファを割り当てる手段及び、ページへのアクセス権の管理手段は、1つの割り当て要求で、所与のバッファ内において所与のタスクに幾つかのページを割り当てることを可能にし得る。
本発明の主な利点はさらに、それがメモリ空間全体の占有を許容し、それがシステムの全体性能に対して無視できる時間的な影響を持ち、そしてそれが最小のシリコン・コストとエネルギー・コストにおいて実行され得ることである。
本発明の別の特徴及び利点は、添付図に関連して提供された以下に続く記述の助けで明らかになるであろう。
図1は本発明によるメモリマネージャ1、タスクマネージャ2、及び処理ユニットの集合3の間の可能なやり取りの一例を機能図で例証している。本例示的実施形態において、タスクマネージャ2は特定の実体である。しかしながら、タスクマネージャは、処理ユニット3上で実行するシステム・ソフトウェアにより実装されることが考えられる。タスクマネージャ2は1つの処理ユニットから別のユニットへ、大きな移送容量でタスクを処理ユニット3に割り当てる。本例示的実施形態において、メモリマネージャ1はデータ・バッファをメモリの「クラスタ」内に割り当て及び割り当て解除する役目を持ち、クラスタは32のメモリバンクを備え、各バンクは32のメモリ・ページを含み、各ページは64ワードを含み、そして各ワードは4バイトを備える。以下に続く記述において言及される全ての数値は、与えられた例示的実施形態のみに対応し、これらの値は全く限定的ではないことが明確に理解されなければならない。次に続く記述において、及び明確化の理由で、メモリバンクは時に「メモリ資源」又は単に「メモリ」のいずれかで称され得る。例えばプロセッサであり得る集合3を形成する処理ユニットは、アプリケーションを並列に実行するためにメモリのクラスタを使うことがあり、複数の処理ユニットは有利にも並列にメモリバンクにアクセス可能である。従って、メモリマネージャ1はタイプ:Data_Assignment, Free_data, Get_Memory_Map,Ask_avail, Send_avail, Send_freeの最低限の要求として、また同様に、望ましくはタイプ:Data_Reservation及びChown_dataの要求として処理する。これらの要求の内容はこの後に詳細が記述されている。本例示的実施形態において、タスクマネージャ2はData_Reservationタイプの要求10をメモリマネージャ1に送り、一方で処理ユニット3はData_Assignment, Free_data, Get_Memory_Map, Ask_avail, Send_avail, Send_free,及びChown_dataのそれぞれのタイプの要求11、12、13、14,15、16、及び17をメモリマネージャ1に送る。
以下に続く記述において、アプリケーションはデータ・バッファを介して通信するタスクのグラフ形式でモデル化可能であり、単一のプロデューサ・タスクは所与のバッファに書き込むことができ、一方で幾つかのコンシューマ・タスクはそれを読む潜在的能力を有し得る。
メモリ内へのバッファの動的配置は、メモリマネージャ1により提供される他の機能性の中で、1つの基本的機能性に過ぎないことが理解されなければならない。例えば、メモリマネージャ1により確実にされる第2の機能性は、タスク内で取り扱われる仮想アドレスの、物理アドレスへの変換であり得る。事実、タスクに対して透過的なやり方で、利用可能なメモリ上でデータ・バッファを動的に割り当て/割り当て解除するためには、バッファの仮想のアドレス指定が好ましい。従って、メモリ内におけるバッファの物理アドレスは、タスクにより取り扱われるそれらの仮想アドレスにおいて何ら変化なく、割り当て/割り当て解除により命令されるように変化し得る。有利なことに、データへのアクセス権を管理する第3の機能性は、とりわけバッファのプロデューサ及び1つ以上のコンシューマが、物理的に分配されたメモリ空間上で同時にアクティブである、データフロー・アプリケーションのコンテクストにおける、データ依存性の順守を確実にし得る。例えば、これはデータ項目が作られた後のみに確実に読み取られ得ることを含む。一般に、プロデューサ・タスク及び1つ以上のコンシューマ・タスクにより同時に取り扱われるデータ・バッファの管理は、"read−after−write" (「リード・アフター・ライト」)タイプの依存性の順守を保証するように、そして或るページが完全に消費されると直ちにそのページを自動的に解放するように、データのプロデューサ・タスクとコンシューマ・タスクが明確に同期すると仮定する、現行のシステムにおいては最適化されないことに注意されたい。
図2は本発明による仮想アドレスの例示的な形式を、構造図で例証している。これに続いて、処理タスクは仮想的にアドレス指定されたデータを、図2に記述される形式に従って取り扱うことが考えられるであろう。本例示的実施形態において、14ビットのid_data領域は取り扱われたバッファの識別を可能にし、それにより16384のバッファをアドレス指定することを可能にする。10ビットのNum_page_v領域は、バッファ内で取り扱われるページを明確にすることを可能にし、それによって単一のバッファが、メモリ空間の218バイト全体を占有することを認可する。8ビットのオフセット領域は、バイト毎にページ内で動かすことを可能にする。
メモリマネージャ1は、システムのメモリ資源上に可変サイズのバッファを動的に置く役目を有する。処理タスクにより取り扱われる仮想メモリ空間内で、バッファは隣接するメモリ領域として見なされる。利用可能なメモリ空間を最もうまく占有するために、データ配置はそれに関して何ら隣接の制約を想定せず、バッファに物理的に割り当てられるメモリ空間の断片化を許容する。バッファに物理的に割り当てられるメモリ空間の大きさは、ページ数の形でメモリマネージャ1に指定される。本例において、バッファの大きさはそれゆえ64×4=256バイトの倍数であり、それによりメモリ空間の最適化された分配を許す。
図3はメモリ空間の予約を可能にする、本発明によるData_Reservationタイプの例示的要求10を構造図で例証する。事実、バッファをメモリ内に配置する前に、十分な空間が用意されなければならない。要求Data_Reservationはタスクマネージャ2の主導になる。この要求を受けると、本例示的実施形態において、メモリマネージャ1はその要求タイプ識別子0000のおかげで、それを最初の4ビットにおいて認識する。次に、メモリマネージャ1は、タスクid_taskにより作り出された全てのバッファに対して、十分なメモリがあることを確認する。それが当てはまる場合、nb_pagesのメモリ・ページが予約される。それらはデータ配置要求の間に、タスクid_taskと関連する様々なバッファに物理的に割り当てられる。要求が十分なページ数の不足により失敗した場合、要求の送信者は、例えばタスクの一時停止あるいはサービス品質の低下のような、状況に応じた適切な手段を取るように、それに関して通知される。この予約機能が存在しない場合、メモリ空間がこれらのバッファを格納するのを待つ間は、タスクは無効とされ得る。xとマークされた最後の16ビットは使用されない。後に続き、そして要求を表わす図4〜10において、最初の4ビットは要求のタイプを識別することを可能にし、xとマークされた最後のビットは使用されない。
図4はデータ配置を可能にする、本発明によるData_Assignmentタイプの例示的要求11を構造図で例証している。メモリ内のバッファ配置は、例えばタスクの初期化の間に行われる。バッファの仮想ページの各々に対して、この配置は物理的メモリ空間内で空きメモリ・ページを探すこと、及びそれをそこに割り当てることを可能にする。これ以降、この機能を加速する適用可能な最適化が議論されるであろう。割り当て要求Data_Assignmentは、望ましくはタスクの初期化段階の間に、あるいは少なくともバッファを取り扱う前に、タスクを実行する処理ユニットによって送られる。それらは、例えば図4に例証されている形をとる。この要求の最初の4ビット0001は、そのタイプの識別を可能にする。次の14ビットはバッファの識別子id_dataを含む。次の10ビットはページ数で表わされるバッファのサイズnb_pagesを含む。空きメモリ・ページの検索及びバッファへの割り当てに加えて、メモリマネージャ1はそれに続いてアドレス変換段階、及びアクセス権確認の段階の間に使用されるであろう、コンシューマの数あるいは所有者の識別子のような、バッファに関連する情報を記憶する。従って、次の10ビットはバッファ所有者のタスク、すなわちバッファへの書き込みを認められたタスクの識別子id_taskを含む。次の10ビットはバッファのコンシューマnb_consuの数を含む。次の10ビットは、それに基づいてメモリマネージャ1がバッファの充填状態をタスクマネージャ2に知らせる、充填率quotaを示す。空きメモリ・ページの検索及びバッファへの割り当てに加えて、メモリマネージャ1は、それに続いてアドレス変換段階及びアクセス権の確認段階の間に使われるであろう、コンシューマの数あるいは所有者の識別子のような、バッファに関連する情報を記憶する。
図5はバッファの開放を可能にする、本発明によるFree_dataタイプの例示的要求12を構造図で例証している。メモリ空間の動的管理は、バッファがアプリケーションの実行中を通して使用されない場合のみ有意義であり、バッファを出来る限り早く開放することがさらに望ましい。この開放はバッファと関連する全てのメモリ・ページの検索、及びそれら各々の開放を可能にする。バッファのこれらの開放は、バッファの各潜在的コンシューマnb_consuが、前記バッファの使用をそれが終了したと宣言したときに行われる。これは例えば図5の形式に適合する、要求タイプの識別子0010の要求Free_dataを介して行われ、そのタスクid_taskの使用が終了したバッファid_dataの識別を可能にする。
変換機能は、例えば図2に表わされている形式を有する仮想アドレスを、メモリに送られ得る物理アドレスへ変換する。これらの変換はメモリから読み取るとき、又はメモリに書き込むとき、システム的及び自動的に行われる。有利なことに、これは取り扱われる仮想アドレスに対応する、物理アドレス用の適切な記憶構造を通じた検索を含み得る。全ての処理ユニットは並列に動作し、共有データに高速でアクセスし、そのとき記憶構造へのアクセスの衝突を避けるように、この変換機能性を各処理ユニットのレベルで分配することが望ましい。本例示的実施形態において、各処理ユニットは変換テーブルを用いる局所変換ユニットを採用し、これらのテーブルは、有利なことに連合したチャートタイプの記憶構造である。従って変換ユニットは最初に、タスク内で取り扱われるデータ項目と、変換テーブルを関連付けることが可能である。次に、この変換テーブルのおかげで、変換ユニットは仮想ページとその物理アドレスとの間の対応が確実にできる。有利なことに、タスクの移送能力及びバッファが幾つかのコンシューマを持ち得るという事実を考慮すると、使用される変換テーブルは、単に保持されてメモリマネージャ1により利用可能な変換テーブルのコピーであり得る。
図6は変換テーブルの取得を可能にする、本発明によるGet_Memory_Mapタイプの例示的要求13を構造図で例証している。事実、タスク内で取り扱われるデータの各々に関して、処理ユニットは全てのページ変換を検索する。要求Get_Memory_Mapは、14ビット上にその変換テーブルが要望される、バッファの識別子id_dataを含む。これに引き続いて議論される最適化の理由のため、変換テーブルは有利にも縮小された大きさの、幾つかのテーブルへと分割され、各々はコンテクスト番号と関連付けられる。本例において、1024個の変換まで含み得るテーブルは、64回の変換×16個のコンテクストへと分割される。18ビット上の領域id_ctxは、コンテクスト番号の識別を可能にする。メモリマネージャ1は、Translation_tableタイプのメッセージ19により要求された変換テーブルを、処理ユニットへ返す。
データアクセス権を管理する機能性は、例えば一方で、全体としてデータ・バッファの取り扱いの正当性を確認すること、及び他方でデータ・ページへのアクセスの有効性を検証することを可能にする。最初の場合、これはその時タスクがデータをバッファに書き込むのを確かに許可されているという確認に関し、又は場合によりバッファを消費するタスクの数が、オフラインにおいて定義される数を超えないという確認に関することである。データ・ページへのアクセスの有効性確認は、現在書き込まれているページに対して読み取りが生じないこと、又は現在そこから読み取られているページを書き込みが変更しないことの確認により、それに関してデータの完全性の保証を可能にする。アクセス権のこれらの確認は、処理ユニットによりメモリマネージャ1に対して送られる、明確な要求のおかげで行われ得る。これらの要求は新しいページの各々の取り扱いの前に送られる。従って、バッファid_dataのページid_pageのデータを取り扱う前に、読取りか書き込みかに関わらず、タスクid_taskを実行する処理ユニットは、その利用可能性を確認するため、メモリマネージャ1に要求Ask_availを送る。読み取り利用可能性の要求について、これはデータ項目が既に作られており、もはや変更されないという確認に関することである。書き込み要求について、それはページがもはや読み取られないであろうという確認に関することである。従って、バッファを非同期のタスク間で共有することが可能である。
図7はデータの利用可能性を要求することを可能にする、本発明によるAsk_availタイプの例示的要求14を構造図で例証している。既に述べた領域Id_data、id_page、及びId_taskに加えて、ビットRWは要求が読取りが利用可能か又は書き込みが利用可能かを示す。最後のビットLastは最適化のために、要求が一連の利用可能性要求の最後かどうかを示すことを可能にする。これらの要求はタスクのコードにおいて明確であり得る。しかしながら、性能に関する影響力が著しい場合、それらが変換テーブルへの無効なアクセスに続いて、自動的に生成されることが考えられ得る。メモリマネージャ1はAsk_avail_ackタイプの受け取り通知18を通じて処理ユニットに応答する。
図8はデータの利用を可能にする、本発明によるSend_availタイプの例示的要求15を構造図で例証している。配置段階に続いて、メモリバッファの全てのページは、バッファの所有者のタスクに関して書き込みアクセス権を用いて、自動的に初期化される。実行段階の間、これらのページへのアクセス権の展開は他方で、ページを読取りアクセス可能に又は書き込みアクセス可能にするように、明確に管理される。要求Send_availは、処理ユニットがもはやバッファid_dataのページid_pageのデータを変更しないであろうことを示すために、タスクid_taskを実行する処理ユニットにより送られる。メモリマネージャ1は次に、バッファid_dataのnb_consu読取り装置に読取りアクセス権を与え、処理ユニットの変換ユニットは、このページと関連する変換行を無効にする要求を送る。
図9はページの開放を可能にする、本発明によるSend_freeタイプの例示的要求16を構造図で例証している。Send_free要求は、処理ユニットがもはやバッファid_dataのページid_pageにアクセスしないであろうことを示すために、タスクid_taskを実行する処理ユニットにより送られる。ページのコンシューマnb_consuの数は、そのとき減少する。後者が0に達したとき、このページの潜在的なコンシューマはもはや存在せず、メモリマネージャ1は書き込むために、再度それを利用できるようにする。
図10はバッファの所有者のタスク変更を可能にする、本発明によるChown_dataタイプの例示的要求17を構造図で例証している。消費タスクが大きな集合内で非常に少ない数のデータ、例えば画像内の僅か数画素のみを変更する場合、先行技術の基本的な実行モデルは、しばしば全体のデータの集合の完全なコピーを新しいバッファ内へ生じさせる。データコピーの時間を最小化するため、変更されたデータのみを書き直すように、開始バッファを再使用することが考えられる。この場合、コンシューマ・タスクは何ら新たなバッファを作らないが、プロデューサ・タスクはそれが終了するとき、バッファid_dataの最初の所有者のid_task及び、10ビット上でこのバッファの新たな所有者のid_new_taskを指定する、要求Chown_dataを介してそれに書き込みアクセス権を与える。このタイプのメカニズムは、それが注意深く使用されない場合は、ロックアップをもたらす傾向があることに注意されたい。コードの生成環境が、問題を生じる場合の無いことを保証するとき、それは局所的にのみ使用されるべきである。
図1は又その割り当てを最適化するように、タスクマネージャ2に返された情報を例証している。例えば、2つのブロック20及び21はタスクマネージャ2に返されたエラーメッセージを1つにまとめる。処理ユニット3のレベルで待機を制限するように、一定のメッセージがタスクマネージャ2によって利用され得る。情報の最も有用な項目は要求Ask_availの後に続く待機、あるいはバッファの充填の割り当て数量である。しかし、例えば不正アクセス、異常に長い待機、メモリ容量オーバーフロー、あるいは識別されていないバッファにアクセスする試みのような、潜在的エラーは非常に多くある。
メモリマネージャ1はメモリのクラスタにおける、データ転送活動の核にある。結果として、その性能はシステム全体の性能に対して一番の影響力を有する。メモリマネージャ1のアーキテクチャは、結果としてその処理時間を最適化するように定義される。特に、データ・ページへのアクセス権の管理のような頻繁な動作は、望ましくは1周期のオーダーの反応性を認可するように処理される。システムの全体性能において、あまり重大な条件ではないが、割り当て作業は又それらの処理が、処理ユニットにおけるタスクの初期化に必要な時間(数百周期のオーダー)の大幅な増加をもたらさないように、最適化される。
本発明によるメモリ内の動的データ配置はさらに、クラスタのメモリ空間を十分に利用することを可能にする。このために、メモリマネージャ1は、計算タスクに対して完全に透過的な方法でデータの断片化を可能にする。メモリのアクセス時間はさらに、メモリに同時にアクセスしている集合3内の処理ユニット数に依存しており、割り当てはメモリを共有しているバッファの数を最小化することにより、メモリへの並列アクセスのリスクを最小限にする。従って、メモリへの競合するアクセスの数は、アプリケーションによって誘起されるデータへのアクセスの最大の並列性(バッファのコンシューマの数)を一般に超えない。
メモリマネージャ1に関連する性能の制約にも関わらず、このモジュールの複雑さ及びシリコン・コストを抑制することが重要である。メモリマネージャ1のアーキテクチャは、従って取り扱われるデータの量を最小化し、標準のメモリ要素の使用を促進するように定義される。
メモリマネージャ1の核心である、バッファ管理用のモジュールは、データ・バッファを動的に利用できるメモリ資源内に置く。動的メモリ管理の解決策における文献は豊富であるが、本発明はデータ近接性の制約に悩むことのない独自の状況を考慮している。事実、文献に記述されている全ての解決策は、十分に大きな隣接メモリ空間内にデータの集合を置くように試みる。配置モジュールの目的はそれゆえ、一般的な場合、割り当ての性能とメモリ占有との良好な妥協を見出すことを含む。本発明のコンテクストにおいて、データ・バッファは、幾つかの不連続なメモリ領域にわたって分布するように容易に分割され得る。これは従ってメモリ空間の完全な利用を保証することを可能にする。
従来のやり方において、メモリ内のnb_pageのバッファの配置は、nb_pageの回数の繰り返し、メモリ内の空きページを探す演算、そして次にこの空きページをデータ・バッファに割り当てることを含む。この演算は空きページ・リスト又はメモリ空間のページ用の状態レジスタに基づく。第1の場合、二重連結リストは、各演算に対して大量のメモリを費やして、利用できる最初のページを迅速に検索することを可能にする。状態レジスタの場合、メモリの量は最小であるが、空きページ検索加速演算子(優先度付き符号化器)が存在しない場合、空きページを探す演算は長くなり得る。両方の場合において、配置時間は配置されるページ数に比例し、バッファの記憶を可能にするページは、クラスタの様々なバンクにわたって分配される。
このように生み出されるメモリデータの断片化は、しかしながら、幾つかのデータ・バッファ間のメモリの共有をもたらす。それゆえ、バッファはもはやバッファのコンシューマ/プロデューサの数(アプリケーションデータ項目)によって大きさを決められないため、バッファへのアクセスにかかる時間を予測するのは難しくなる。今や、データ項目へのアクセスにかかる時間は、前記データを記憶するメモリからの/への、読み込み側/書き込み側の数に依存し、従ってもはや実行時点では正確に知られ得ない。しかるべき場所に置かれる割り当ての方策は、それゆえ単一のデータ・バッファのみを記憶するメモリの数を最大にすることにより、メモリの断片化を遅らせることを目的とする。好適なやり方において、この配置段階を加速するようにメモリ内に幾つかのページを同時に置くことにより、データはさらにブロックとして割り当てられるであろう。
メモリ内のバッファの独自性を特別扱いするために、採用される方策は特にクラスタのバンクの部分が幾つかのデータ・バッファ間で共有されるのを受け入れることである。バッファが完全なメモリを用意しておくことが出来ないとき、バッファは従って、幾つかのバッファを収容できるメモリの量を増加させないように、これらのメモリ上に優先的に置かれるであろう。一定のメモリのこの犠牲は従って、幾つかのバッファと関連するメモリの数の増加を避け、それゆえメモリ空間の漸進的な断片化を防止することを可能にする。この方策はバッファ識別子id_data及び、付録(ANNEX)に示すようなバッファnb_pagesのページ数をパラメータとして取る、メモリバッファ配置アルゴリズムにより変換される。
前述のアルゴリズムはバッファが有効であるか、又は配置が正しく進んでいるかどうかを確かめるためのテストを何ら行わない、単純化されたバージョンである。最初に、バッファid_dataのデータのnb_pagesはNbM+1組のページとして分配され、ここでNbMはバッファの一部分により完全に満たされ得るメモリの数に相当する。Nbpはそれ自体でメモリを満たすには不十分な、NbM+1番目の集合内に残るページ数である。その後に、32ページ(我々の例におけるメモリの大きさ)の各組に対して、アルゴリズムは空きメモリを探し、成功した場合はAssign_Page機能を介して、メモリの各々のページをバッファに割り当てる。完全に空きメモリが利用できない場合、集合の各ページは完全に満たされていないメモリの空きページ内に別々に置かれる。メモリを完全に満たせないNbpページは、部分的に満たされた(又は完全に満たされていない)メモリ上へ好都合なやり方で逆にマッピングされる。部分的に満たされたメモリがもはや存在しない場合、空きメモリが用いられるであろう。
図11はデータ・バッファ配置用の要求Data_Assignmentを処理するための、本発明によるメモリマネージャ1の例示的動作をアクティビティ図で例証している。有利なことに、本例において32のメモリバンクの各々に対し、32ビットのレジスタはそれが含む32ページの各々の充填状態を特徴付けることができ、1つのビットは空きに対して「1」に等しく、そうでなければ「0」に等しい。有利なことにここで再び、32ビットのレジスタは32のメモリバンクの各々に対し充填状態を特徴付けることができ、1つのビットは空きに対して「1」に等しく、そうでなければ「0」に等しい。有利なことにここで再び、32ビットのレジスタは32のメモリバンクの各々の空き状態を特徴付けることができ、1つのビットは部分的な充填に対して「1」に等しく、そして(そうでなければ)「0」に等しい。従って32ビットのレジスタ34個が本例示的実施形態において全体として使用される。バンクに関する充填状態レジスタ及び空き状態レジスタに含まれる情報は、ページ状態レジスタの内容に基づいて、有利なことにそれぞれAND関数及びXOR関数のおかげで自動的に更新され得る。空きである又は部分的に満たされたメモリの検索はそのとき、バンク状態レジスタにおいて1周期で最初のビットを1に決定できる、32ビットの優先度付き符号化器を介して行われ得る。
この情報に加えて、メモリマネージャ1はまたバッファに関連する全ての情報:その所有者、それに基づいてメモリマネージャ1がバッファの状態をタスクマネージャ2に知らせなければならない、そのコンシューマの数及び場合によりページ数:を記憶する、INFO_bufと呼ばれるメモリを取り扱う。このメモリは、バッファ識別子id_dataのおかげでアドレス指定され、そして「連想メモリ」を表わす頭字語によるCAMタイプの連想メモリCAM_bufと関連し、CAM_bufはバッファの識別子と、INFO_buf内でそれと関連する情報を記憶するためのアドレスとの間のリンクを形成する。メモリShared_Tsl_Memもまた、仮想のページ番号に従って命令される連結リストの形で、物理アドレスへ仮想アドレスの変換に有用な情報を記憶するために使用される。
図12は本発明の実施を可能にするメモリ領域の一例を、構造図で例証している。変換リストの開始アドレスは、データ・バッファと関連する情報項目であり、図12に例証されるようにINFO_bufメモリ内に記憶される。この変換リスト内の幾つかの入り口点は、データ項目と関連する変換リストが幾つかのコンテクストへと分割される場合、INFO_bufにおいて指定され得ることに注意されたい。最後に、書き込みアクセス権を用いてデータ・ページへのアクセス権を初期化するために、最終メモリRight_Memが取り扱われる。
配置要求が失敗した場合、すなわち配置要求がまだ確認応答されていないが、空きページがそれ以上存在しない場合、エラーはタスクマネージャ2に知らされることに注意されたい。この場合の発生する主なリスクは、メモリ予約要求がバッファ配置要求に先行していないかどうかである。バッファを格納するために十分なメモリ空間がタスクid_task用に用意されているかを、より早期に確かめることが可能であろう。これは、データ配置要求を待っている保留タスクのリストが、メモリマネージャ1により更新され続けていることを想定している。
メモリ空間の予約は、メモリマネージャ1に対して局所的であって、クラスタ上で利用できるメモリ・ページの数を示す、変数available_pagesを用いて非常に簡単に行われる。タスクid_task用のnb_pagesに関する予約要求を受けて、メモリマネージャ1は利用できるページが十分あることを確かめ、可能ならばそれらを予約する。available_pagesからのnb_pagesの単純な減算は、任意の配置要求に予約要求が先行する限り、この予約を可能にする。
図13はデータ・バッファを開放する要求Free_dataを処理するための、本発明によるメモリマネージャ1の例示的動作を、アクティビティ図で例証している。バッファ開放要求Free_data(id_data、id_task)を受けて、メモリマネージャ1は最初に、メモリINFO_buf内のこのバッファに関係する情報を読み取る。データ識別子id_dataが未知の場合、又はバッファの読み取りアクセスが出来ない場合、エラーがタスクマネージャ2に返される。逆の場合、このバッファと関連するコンシューマnb_consuの数は減少する。それが0に達した場合、このデータ・バッファと関連するメモリ・ページはそのとき
バッファ用に使用される物理ページのShared_Tsl_Mem内に記憶されたリストを走査することにより、1つずつ解放される。リストの各要素と関連する領域は、リストの最後の要素の識別と、それゆえ開放ループを終了させることを可能にする。
バッファ用に使用される物理ページのShared_Tsl_Mem内に記憶されたリストを走査することにより、1つずつ解放される。リストの各要素と関連する領域は、リストの最後の要素の識別と、それゆえ開放ループを終了させることを可能にする。
図14はデータ・バッファの所有者を変えるための要求Chown_dataを処理するための、本発明によるメモリマネージャ1の例示的動作を、アクティビティ図で例証している。ここで、バッファが確実に参照され、要求の送信者が確かにバッファの所有者であることを注意することにより、これは単に要求の妥当性確認に関することである。要求が妥当である場合、それはINFO_bufメモリ所有者領域の変更によって処理される。
図15は集合3の処理ユニット3a用の物理アドレスへの、仮想アドレスの変換を確実にする、本発明による例示的変換ユニットを構造図で例証している。これらの変換は、図15に例証されるメカニズムに従ってメモリから読み取り、メモリに書き込むとき、システム的且つ自動的に行われる。変換を行うために使用される基本要素は、本例示的実施形態においては1024個の入力を含む変換テーブルであり、これはページ数で表わされたクラスタの記憶容量に相当する。このテーブルは、現在処理ユニットにおいて実行されているタスク内で取り扱われる各アドレスに有用な変換を含む。変換テーブルは標準メモリTsl_$に基づいて構築される。この変換テーブルのローディングは、読み取りモードと書き込みモードの両方で、タスク内において取り扱われる各バッファ用に送られる要求Get_Memory_Map(id_data、id_ctx)に続いて、タスクの初期化の際に行われる。この要求を送る際、処理ユニットの変換ユニットは、バッファがCAMタイプの連想メモリ内に連続的に保存されることを知っているので、そこからバッファの変換テーブルがメモリTsl_$内に保存されるであろう、アドレスをバッファid_data用に指定することにより、CAMタイプの連想メモリを満たす。
図16は変換テーブル移動要求Get_Memory_Mapを処理するための、本発明によるメモリマネージャ1の例示的動作を、アクティビティ図で例証している。要求Get_Memory_Map(id_data)を受けて、メモリマネージャ1は一方で要求の有効性を確認し、他方でバッファid_data用に使われる物理ページの順序付けられたリストを走査する。要求のid_ctx領域は、用いられているこの例にはないが、最適化の枠組み内にあり得ることに、ここで注意されたい。これらの演算と並列に、要求を開始した処理ユニットの変換ユニットは、新たな物理ページ番号の各受信の際に書き込みアドレスを増加させることにより、メモリTsl_$を満たす。従って、メモリTsl_$は仮想アドレス番号に従って順序付けられた変換のリストを含む。それゆえ、メモリTsl_$の各ワードは、メモリ内のワード位置に等しい仮想アドレスに対応する物理ページ番号を含む。この仮想アドレスは、バッファid_dataの変換テーブルのメモリTsl_$内の基本アドレスを、このバッファ内で取り扱われるページを記述する仮想ページ番号Num_page_vに加えることにより得られる。このレベルにおける可能な最適化は、この追加をコンパイル時に行うことである。処理ユニット内で取り扱われるアドレスの高次重みは、そのときデータ項目の識別子の合計及び仮想ページ番号の合計であり、それによってこの追加をハードウェア的に行うのを控えることを可能にする。CAMタイプのメモリはそれ自体として、タスク内の操作可能なバッファと同じだけの入力を含む。
メモリマネージャ1の最後の要素は、データへのアクセス権の管理を可能にし、従って取り扱われるデータの完全性の保証を可能にする。それはデータ項目が作られる前に読み込まれず、逆にその読み込み中に変更されないことを確実にするために用いられる。それは取り扱われるデータ・ページの現在の権限に応じて、処理ユニットから発行された要求Ask_availに対処する。それはまた要求Send_free及びSend_availに続く、これらのページへのアクセス権を更新する。本例示的実施形態において、ブロッキング要求が考えられることに注意されたい。しかしながら、全体的な利用可能性の要求の処理は最適化の枠組み内で考慮され得る。
図17は利用可能性を依頼する要求Ask_availを処理するための、本発明によるメモリマネージャ1の例示的動作を、アクティビティ図で例証している。これは単に、データ・ページaddr_dataに要望されるアクセスのモードと、メモリRightMem内に記憶されたこのページへのアクセス権との比較に関することである。ページにアクセスできない場合、例えばページが書き込み要求中に読み取られている場合又はその逆の場合、要求を送る処理ユニットは待機状態に置かれ、要求は待ち行列の要求pending_request内に置かれる。逆の場合、データ・バッファに関連するページ数は更新され、場合によってはバッファを割り当て数量超過に至らせる。後者の場合、バッファの充填状態が、場合によっては可能性のある使用の観点から、タスクマネージャ2に補充される。書き込みに関しては、要求Ask_availのRW領域は1に等しく、さもなければ0に等しい。
図18はページを読み取り利用可能にする要求Send_availを処理するための、本発明によるメモリマネージャ1の例示的動作を、アクティビティ図で例証している。要求Send_availを受けて、データ・バッファid_dataが既知であり、そして要求がこのバッファの所有者id_taskによって送られていることが最初に確認される。ページがまだ読み取り利用可能でないことも又確認され、その場合ページaddr_pageにアクセス権を変更する前に、エラーがタスクマネージャ2に返される。このバッファと関連する書き込みページ数もまた減少し、割り当て数量の確認は、バッファの充填状態を場合によってはタスクマネージャ2に事前警告するために行われる。最後に、待機要求のリストは、タスクが既にページの読み取り利用可能性について依頼されたかどうかを確認するために走査され、その場合、その要求は確認応答され得る。この待機要求リストの走査は、それが逐次的であるため比較的長くなり得ることにこれ以降注意されたい。32のタスクが同時にアクティブであり得ると想定される場合、少なくとも32周期の最悪の場合における走査時間が、実際に考慮されなければならない。この検索は最適化の枠組み内で加速され得る。
図19はページを開放し、それゆえ書き込み利用可能にすることを目指す、ページの開放要求Send_freeを処理するための、本発明によるメモリマネージャ1の例示的動作を、アクティビティ図で例証している。要求Send_freeを受けて、メモリマネージャ1はデータ・バッファid_dataが既知であり、そしてページがまだ書き込み利用可能でないことをそれ自体で確実にすることにより、要求の妥当性を確認し、その場合エラーがタスクマネージャ2に返される。これ以降、ページと関連するコンシューマの数は減少する。それが0に達した場合、ページは解放され、書き込みアクセスに関して利用可能になる。待機要求のリストは、待機タスクがアドレスaddr_pageにおいて、書き込みに対し利用可能なページを待っているかどうか確認するため次に走査され、その場合、その要求は確認応答され得る。
タスクが幾つかのページに対してアクセス権を連続して要求するとき、不要なプロセッサの再開を避けるため、全ての要求されたページが利用可能なときのみ確認応答される、「全体的な」すなわちバッファの幾つかのページに関する、利用可能性要求をしかるべき場所に置くことが可能である。そのようなメカニズムは、タスクの利用可能性に関する要求を逐次的よりもむしろ全体的に処理することを可能にし、要求のLast領域により識別される一連の最後の要求Ask_availのみをブロックする状態にする。メモリマネージャ1のレベルにおいて、このタイプの要求をしかるべき場所に置くことは、最後の要求Ask_availの処理がLastビットを1に設定した間に、pending_requestリストの走査を必要とする。これはタスクid_taskの別の要求Ask_availが、何ら誤っていないこと及び、従ってタスクid_taskが、待ち行列の要求pending_requestから欠けていることの確認を含む。確認応答される前に、要求Ask_availは待機要求の1つが、要求を送っているタスクに属さないかどうかを確認するために、それゆえ全ての待機要求のリストを走査する必要があるであろう。最適化が無ければ、32のアクティブなタスク、及び全体の利用可能性要求当り16までの要求Ask_availを考えた場合、512周期以上が考慮される必要があるため、この時間は非常に長くなり得る。これら512周期は要求Send_Free及び要求Send_availの間と同様に、最後の要求Ask_availの各々に対して発生する。従って、データアクセス権の管理に関連する時間的不利益を阻止するために、確認応答を待っているこの待機要求リストの走査は最適化されるべきである。追加のシリコン・コストを伴わない第1の最適化は、読み取り要求と書き込み要求の行列を単純に切り離すことである。検索をさらに加速するため、要求を送るタスクに応じて検索行列を識別することが可能である。走査されるべき適切な検索行列に対する検索に必要なロジックは、そのとき更に付け加えられる。これは全体の利用可能性要求が確認応答され得るかどうかを殆ど瞬時に決定可能にするが、しかし他方で要求Send_avail及びSend_Freeの処理を加速しない。加速されるためには、取り扱われるデータ・バッファに応じて別の利用可能性要求リストが更新され続ける必要があり、そしてデータ識別子に応じた適切なリストを検索するロジックが実行される必要がある。
上述の本発明の主要な利点は、非同期の生産タスクと消費タスクとの間で、バッファを共有するための最適化されたメカニズムを提案することである。
Claims (15)
- 複数のメモリ要素にわたり分配されたメモリ空間内でデータ・バッファを管理する装置であって、
前記メモリ空間がメモリ・ページによって割り当て可能であり、各バッファが1つ以上のメモリ・ページを含み、前記バッファがアプリケーション実行用の少なくとも1つの処理ユニット(3a)によって使用可能であり、前記アプリケーションがタスクを並列に実行する複数の処理ユニット(3)により実行され、メモリ要素が前記処理ユニットにより並列にアクセス可能であり、前記装置が前記アプリケーションの実行中にバッファ(1)を前記タスクに割り当てる手段と、前記バッファへのアクセス権を管理する手段とを含み、前記装置は、前記バッファを非同期のタスク間で共有するような方法で、所与のページへの書き込みが、前記ページから現在読み込まれているデータを修正しないこと、又は所与のページからの読み取りが、前記ページに現在書き込まれているデータにアクセスしないことを確認するために、前記バッファへの前記アクセス権を管理する前記手段が、所与のバッファ内のページへのアクセス権を管理する手段を含むことを特徴とする装置。 - バッファ(1)を割り当てる前記手段が、同一のメモリ要素に割り当てられたバッファの最大の数を最小限にするような方法で、前記バッファを割り当てることを特徴とする請求項1に記載の装置。
- バッファ(1)を割り当てる前記手段が、メモリ・ページの充填状態レジスタを含み、所与のレジスタ内の所与のビットが、所与のメモリ・ページの空き状態又は空きでない状態を特色付けることを特徴とする、請求項1に記載の装置。
- バッファ(1)を割り当てる前記手段が:
− 所与のレジスタ内の所与のビットが、所与のメモリ要素の空き状態又は空きでない状態を特徴付ける、メモリ要素の充填状態レジスタ及び/又は、
− 所与のレジスタ内の所与のビットが、所与のメモリ要素の部分的に満たされた状態又は部分的に満たされていない状態を特徴付ける、メモリ要素の空き状態レジスタ
を含むことを特徴とする請求項1に記載の装置。 - バッファ(1)を割り当てる前記手段が、
− 前記メモリ要素の充填状態レジスタの更新を加速するような、メモリ・ページの充填状態レジスタにおける、ANDタイプ及び/又は、
− 前記メモリ要素の空き状態レジスタの更新を加速するような、メモリ・ページの充填状態レジスタにおける、排他的なORタイプ
の論理演算を行う手段を含むことを特徴とする、請求項3または4のいずれか一項に記載の装置。 - バッファ(1)を割り当てる前記手段が、前記メモリ要素の充填状態レジスタ及び空き状態レジスタ内に、1周期で最初のビットを1に決定可能にする、優先度付き符号化器を含むことを特徴とする請求項4に記載の装置。
- バッファ内に含まれるデータの物理アドレスが、前記バッファが割り当てを解除されて次にアプリケーションの実行の過程で再度割り当てられる場合に可変であり、前記処理ユニット(3a)が前記アプリケーションを実行するために不変の仮想アドレスを使用し、そして装置が仮想アドレスを物理アドレスへと変換する手段を含むことを特徴とする、前記アプリケーションの実行中にバッファ(1)を割り当て解除する手段を備えた、請求項1に記載の装置。
- 前記仮想アドレスを物理アドレスへと変換する前記手段が、仮想アドレスと物理アドレスとの間の対応を記憶するための、少なくとも1つの構造を含むことを特徴とする、請求項7に記載の装置。
- 所与のバッファ内に含まれるデータの、前記仮想アドレスと前記物理アドレスとの間の対応が、前記バッファに専用の1つ以上の構造内に記憶されることを特徴とする、請求項8に記載の装置。
- 前記仮想アドレスを物理アドレスへと変換する前記手段が、各処理ユニット内の記憶構造のコピーを含むことを特徴とする、請求項7に記載の装置。
- 前記バッファへのアクセス権を管理する手段が、所与のバッファへのデータ書き込みを所与のタスクが認可されていることを確認する手段を含むことを特徴とする、請求項1に記載の装置。
- 前記バッファへのアクセス権を管理する手段が、所与のバッファから読み取るタスクの数が所定のしきい値を超えない旨を確認する手段を含むことを特徴とする、請求項1に記載の装置。
- 前記バッファへのアクセス権を管理する手段が、バッファに書き込む権限をタスクから引き出す手段と、前記バッファに書き込むための別のタスクを認可する手段とを含むことを特徴とする、請求項1に記載の装置。
- バッファを割り当てる前記手段が、利用可能なメモリ空間が所与のバッファを割り当てるのに十分であると確認する手段を含むことを特徴とする、請求項1に記載の装置。
- バッファを割り当てる前記手段、及びページへのアクセス権を管理する前記手段が、単一の割り当て要求で、所与のバッファ内の数ページを所与のタスクへと割り当て可能にすることを特徴とする、請求項1に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0805926 | 2008-10-24 | ||
FR0805926A FR2937755B1 (fr) | 2008-10-24 | 2008-10-24 | Dispositif pour gerer des tampons de donnees dans un espace memoire reparti sur une pluralite d'elements de memoire |
PCT/EP2009/063715 WO2010046355A1 (fr) | 2008-10-24 | 2009-10-20 | Dispositif pour gerer des tampons de donnees dans un espace memoire reparti sur une pluralite d'elements de memoire |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012506581A true JP2012506581A (ja) | 2012-03-15 |
Family
ID=40782558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011532608A Pending JP2012506581A (ja) | 2008-10-24 | 2009-10-20 | 複数のメモリ要素に分配されたメモリ空間内でデータ・バッファを管理する装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9086920B2 (ja) |
EP (1) | EP2350836B1 (ja) |
JP (1) | JP2012506581A (ja) |
FR (1) | FR2937755B1 (ja) |
WO (1) | WO2010046355A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546068A (ja) * | 2010-10-28 | 2013-12-26 | アルカテル−ルーセント | 電気通信ネットワーク・アプリケーションのためのロックレス・バッファ管理スキーム |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8907564B2 (en) * | 2012-01-04 | 2014-12-09 | Nordson Corporation | Microwave excited ultraviolet lamp system with data logging and retrieval circuit and method |
GB2511479A (en) * | 2012-12-17 | 2014-09-10 | Librae Ltd | Interacting toys |
US9823869B2 (en) * | 2014-01-08 | 2017-11-21 | Nvidia Corporation | System and method of protecting data in dynamically-allocated regions of memory |
US20160212198A1 (en) * | 2015-01-16 | 2016-07-21 | Netapp, Inc. | System of host caches managed in a unified manner |
JP6398102B2 (ja) * | 2015-05-29 | 2018-10-03 | 東芝メモリ株式会社 | メモリシステム |
US11487755B2 (en) * | 2016-06-10 | 2022-11-01 | Sap Se | Parallel query execution |
US10353821B2 (en) * | 2016-06-22 | 2019-07-16 | International Business Machines Corporation | System, method, and recording medium for common memory programming |
WO2018173164A1 (ja) * | 2017-03-22 | 2018-09-27 | 株式会社日立製作所 | データ処理システム |
US10368128B2 (en) | 2017-08-11 | 2019-07-30 | Microsoft Technology Licensing, Llc | Memory allocation type for media buffer |
US11134137B1 (en) * | 2018-04-24 | 2021-09-28 | F5 Networks, Inc. | Filter-based request processing in a web server |
CN117515790A (zh) * | 2022-07-29 | 2024-02-06 | 广东美的制冷设备有限公司 | 情景点控装置及空气调节控制系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0294499B1 (en) * | 1987-06-09 | 1992-08-26 | International Business Machines Corporation | Control scheme for segmented buffers based on a shared reference count |
US5784698A (en) * | 1995-12-05 | 1998-07-21 | International Business Machines Corporation | Dynamic memory allocation that enalbes efficient use of buffer pool memory segments |
US6308248B1 (en) * | 1996-12-31 | 2001-10-23 | Compaq Computer Corporation | Method and system for allocating memory space using mapping controller, page table and frame numbers |
US6175900B1 (en) * | 1998-02-09 | 2001-01-16 | Microsoft Corporation | Hierarchical bitmap-based memory manager |
US6374340B1 (en) * | 2000-04-14 | 2002-04-16 | Motorola, Inc. | Method of managing memory for a PCI bus |
US7299266B2 (en) * | 2002-09-05 | 2007-11-20 | International Business Machines Corporation | Memory management offload for RDMA enabled network adapters |
US9311227B2 (en) * | 2006-10-31 | 2016-04-12 | Hewlett Packard Enterprise Development Lp | Memory management |
US8006055B2 (en) * | 2008-03-04 | 2011-08-23 | Microsoft Corporation | Fine granularity hierarchiacal memory protection |
-
2008
- 2008-10-24 FR FR0805926A patent/FR2937755B1/fr not_active Expired - Fee Related
-
2009
- 2009-10-20 EP EP09740115.2A patent/EP2350836B1/fr not_active Not-in-force
- 2009-10-20 JP JP2011532608A patent/JP2012506581A/ja active Pending
- 2009-10-20 US US13/125,583 patent/US9086920B2/en active Active
- 2009-10-20 WO PCT/EP2009/063715 patent/WO2010046355A1/fr active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546068A (ja) * | 2010-10-28 | 2013-12-26 | アルカテル−ルーセント | 電気通信ネットワーク・アプリケーションのためのロックレス・バッファ管理スキーム |
Also Published As
Publication number | Publication date |
---|---|
EP2350836A1 (fr) | 2011-08-03 |
WO2010046355A1 (fr) | 2010-04-29 |
US20110307677A1 (en) | 2011-12-15 |
EP2350836B1 (fr) | 2018-01-17 |
US9086920B2 (en) | 2015-07-21 |
FR2937755A1 (fr) | 2010-04-30 |
FR2937755B1 (fr) | 2010-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012506581A (ja) | 複数のメモリ要素に分配されたメモリ空間内でデータ・バッファを管理する装置 | |
US10552337B2 (en) | Memory management and device | |
CN100399300C (zh) | 用于数据处理的系统和方法和用于分配资源的系统和方法 | |
US8301717B2 (en) | Extended virtual memory system and method in a computer cluster | |
US6601089B1 (en) | System and method for allocating buffers for message passing in a shared-memory computer system | |
CN1786927B (zh) | 应用层高速缓存映像知晓和再分配的系统和方法 | |
CN103365793B (zh) | 数据处理方法和系统 | |
CN103365794B (zh) | 数据处理方法、装置和系统 | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
CN103246614A (zh) | 多处理器数据处理系统、高速缓存存储器及其方法 | |
CN111309649B (zh) | 一种数据传输和任务处理方法、装置及设备 | |
US11656779B2 (en) | Computing system and method for sharing device memories of different computing devices | |
US8464017B2 (en) | Apparatus and method for processing data in a massively parallel processor array system | |
US20090083496A1 (en) | Method for Improved Performance With New Buffers on NUMA Systems | |
US7502901B2 (en) | Memory replacement mechanism in semiconductor device | |
US7606961B2 (en) | Computer system and data pre-fetching method | |
JPH1063525A (ja) | 情報処理装置、情報処理システム及びその制御方法 | |
CN115794368A (zh) | 业务系统、内存管理方法及装置 | |
CN115237605B (zh) | Cpu与gpu间的数据传输方法及计算机设备 | |
US20240053892A1 (en) | Dynamic memory management apparatus and method for hls | |
Li et al. | Towards Order-Preserving and Zero-Copy Communication on Shared Memory for Large Scale Simulation | |
JPH1091527A (ja) | 記憶装置および記録媒体 | |
Zhang et al. | Reducing aborts in distributed transactional systems through dependency detection | |
CN114281721A (zh) | 有限资源系统内外存实时置换机制及映射管理方法 | |
JP4713077B2 (ja) | 半導体装置 |