JP5489991B2 - メモリ割り当ての機構 - Google Patents

メモリ割り当ての機構 Download PDF

Info

Publication number
JP5489991B2
JP5489991B2 JP2010510749A JP2010510749A JP5489991B2 JP 5489991 B2 JP5489991 B2 JP 5489991B2 JP 2010510749 A JP2010510749 A JP 2010510749A JP 2010510749 A JP2010510749 A JP 2010510749A JP 5489991 B2 JP5489991 B2 JP 5489991B2
Authority
JP
Japan
Prior art keywords
memory
byte
allocation
data
bytes
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.)
Expired - Fee Related
Application number
JP2010510749A
Other languages
English (en)
Other versions
JP2010529545A (ja
Inventor
スコープ、ジョー、ハワード
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
Publication of JP2010529545A publication Critical patent/JP2010529545A/ja
Application granted granted Critical
Publication of JP5489991B2 publication Critical patent/JP5489991B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、マルチプロセッサ・コンピュータの分野に関し、特に、プロセッサに対するメモリ割り当てを管理する機構に関する。
一般的なマルチユニットの並列プロセッサ構成の1つとして、単一命令ストリーム、複数データストリーム(SIMD:single instruction stream,multiple data stream)アーキテクチャがある。SIMDシステムでは、アクティブな処理装置全てに対し同一の命令が提供される。各処理装置は、各自の一連のレジスタに加え、その処理装置が固有のデータを受信する何らかの手段を有することができる。最近のマルチプロセッサ・チップには、「相乗演算処理要素(SPE:synergistic processing element)」と称されることもある多数の小型処理装置(PU:processing unit)を組み込むことができ、一般に各SPEは、単純化された一連の命令を利用する縮小命令セット・コンピュータである。SPEでは、メモリ割り当てが大幅に縮小されている場合がある。マルチプロセッサ構成では、各プロセッサが、わずか256Kのメモリなど比較的小さいメモリ割り当てを有する可能性がある。
処理装置が命令を処理し結果を出すと、次にこの結果を上記の比較的小さいメモリ空間へ保存しなければならない。このメモリは、通常、テキスト、データ、ならびにスタックおよびヒープ動作に利用される。ヒープは、動的に割り当てられた変数の収集、すなわち、存続期間が現行のルーチンの実行と関係のないストレージの割り当てに使用される領域であって、頻繁に使用される命令を保持するようにシステム・ソフトウェアおよびシステム拡張機能によって割り当てられた領域とすることができる。スタックは、後入れ後出しベースでデータを使用するデータ構造とすることができる。
大型コンピュータにおけるメモリ割り当てハードウェアおよびソフトウェアは、非常に複雑である。一方、小さい処理装置およびメモリ・システムを利用している場合には、そのようなオーバーヘッドのための空間がないため、高度なメモリ割り当てアリゴリズムは利用することができない。その上、そのように空間が小さいために、メモリまたはメモリ割り当ての効率的な利用に向けてよりいっそう高度な要件が生じる。
動作中、PUなどの要求側がデータの保存またはメモリの利用を必要とするとき、要求側(すなわちPU)は、特定量のメモリを要求することができ、被要求側すなわちアロケータは、その要求を処理しアドレスまたはアドレスのブロックを要求側へ返すことができる。被要求側は、PUとすることもできるし、さらには専用のハードウエアでなくてもよく、同一のハードウェア(すなわち、同一の処理装置)上で動作するソフトウェアとすることもできる。アロケータは、利用可能なまたは「解放された」メモリ領域を特定することができ、そうしたアドレスを要求側へ返すことができる。その後要求側は、データをメモリへ送信し、アロケータによって割り当てられたアドレスへデータを保存することができる。このことを通例、動的メモリ割り当てと称する。動的メモリ割り当てでは、メモリ領域は使用された後に解放され、アロケータが、メモリ位置の状態を追跡しメモリ内の空いた位置に基づいて処理装置へアドレスを返すことができる。静的メモリ割り当ての方が高速ではあるが、一定の制限があるために柔軟性に欠ける。
データ・アラインメントおよびメモリ割り当ては、一般に、コンピュータ・メモリにてデータが配置されアクセスされる手法である。データ・アラインメントは、基本的なことでありながら、なお現代の全てのコンピュータにとって難しい問題である。別々のコンピュータ言語では、データ・ストレージ割り当ておよびデータ・アラインメントが大きく異なるやり方で扱われており、実装によっては、かなりのオーバーヘッドを有する非常に複雑なものもある。大抵の場合、メモリ・システムは、16バイト・ベースで動作する(言い換えれば、データを保存および抽出する)か、あるいは16バイト・ベースで動作するように最適化される。このことは通常、メモリ・バスのサイズ、レジスタ・サイズなどに基づくものである。16バイトより小さいデータ・セグメントの処理は、アロケータにとって重大な問題をもたらす可能性がある。例えば、わずか4バイトの保存が必要な場合にも、システムは、16バイトが利用可能な領域へたったの4バイトを書き込むことになり得る。こういうことが行われ、後から当該の4バイトが抽出されるときには、データ構造体アラインメントによってさらなる非効率が生じることもある。
使用のためにアロケーションを返すとき、メモリ・アロケータはしばしば、内部使用に向けて、割り当てられたメモリの最前部または構造体のほかのどこかにある空間をいくらか使用する。これを多くの場合「ヘッダ」と称する。ヘッダは、通常、割り当てのサイズなどの情報を含んでいる。このヘッダは、メモリ・アロケータによって内部で使用されるだけなので、「オーバーヘッド」とみなされ、割り当てることのできる使用可能な空きメモリを減らすものである。
上記に示した諸問題は、メモリを管理する方法および機構によって大部分対処される。一実施形態では、方法が、特定サイズの連続したメモリ容量を求める要求を受信するステップと、その要求に応じるのに十分な大きさの空きメモリ領域を探し出すステップと、その空きメモリへのポインタまたは要求のサイズに関連したアドレスを返すステップと、を含むことができる。アドレスは、セグメントのサイズの倍数とすることができる。システムは、要求を引き起こしたデータをそのメモリ・アドレスに保存することができる。
別の方法の実施形態では、システムが、保存対象のデータ量を示しているメモリ割り当て要求を受信し、保存対象のデータ量が非標準の量であるかどうかを判断し、その量が非標準の量であれば、保存対象のデータ量の倍数に基づいた未使用のメモリ・アドレスを探し出すことができる。システムが16バイト・アライメントをベースに設定されていれば、8バイト、4バイト、2バイトおよび1バイトは、非標準割り当てとなる。同様の非標準割り当てを、128、64、32、8および4バイトのシステムに適用することもできる。探し出すステップには、さらに、メモリ・アドレスのプールから未使用のメモリ・アドレスを探し出すステップを含めることができ、アドレスのプールには、保存対象のデータ量の整数倍数は含まれるが、保存対象のデータ量の2倍数の倍数であるアドレスは含まれない。
一実施形態では、処理装置のグループ内のプロセッサ装置に対しメモリを割り当てる方法が開示される。本方法は、メモリ割り当て要求を受信するステップを含むことができ、この要求により、命令の実行を完了するのに必要な連続したメモリの量を示すことができる。本方法は、インジケータすなわち量が、非標準割り当てを示しているかどうかを判断し、インジケータが非標準割り当てであれば、その量の倍数に基づいた未使用のメモリ・アドレスを割り当てることができる。本方法はさらに、メモリ・アドレスのプールから未使用のメモリ・アドレスを探し出すステップを含むことができる。アドレスのプールには、要求された量の整数倍数は含まれるが、その量の2倍数のアドレスは含まれておらず、それによりアドレスを利用して割り当てのサイズを算出することができる。
別の実施形態では、プロセッサ装置に対しメモリを割り当てる方法が開示される。本方法は、メモリに保存されるセグメントのサイズを算出するステップと、セグメントを保存するメモリ・アドレスを要求するステップと、セグメントのサイズの倍数であるメモリ・アドレスを受信するステップと、倍数に相当しているメモリ・アドレスにセグメントを保存するステップと、を含むことができる。従って、本方法は、保存対象のデータ量に基づいたアドレス境界にバイトを位置合わせすることができる。このような機構により、固定長アロケータが、異なるクロックの間に同一の固定長割り当ての中へバイトを保存することができるようになり、それにより標準的な固定長アロケータによって保存され得るデータ量が圧縮される。
さらに別の実施形態では、メモリ割り当てシステムが開示される。本システムは、所定の割り当てサイズを有するメモリと、メモリに接続されて、所定の割り当てサイズよりもバイト数の小さいメモリ割り当ての要求を提供するプロセッサと、メモリ・アロケータと、を含むことができる。メモリ割り当て要求に応えて、メモリ・アロケータなどのハードウェアによって実行される命令により、利用可能なメモリ位置の少なくとも1つのメモリ・アドレスを提供することができる。
上記の少なくとも1つのメモリ・アドレスは、所定の最小割り当てサイズよりも小さいが、上記の要求を満たすには十分な大きさの割り当てを与えることができるものである。別の実施形態では、本システムには、上記のメモリ位置に対応するメモリ位置へ結果を送信する送信機を含めることができる。本システムにはさらに、メモリ割り当てに関係のあるデータを符号化するエンコーダを含めることができる。加えて本システムは、所定の割り当てサイズが部分的に埋められるのを追跡するトラッカと、保存対象のバイト・サイズの関数であるアドレスを探し出すことのできる多機能ロケータ・モジュールと、を含むことができる。
処理システムの実施形態を示す図である。 メモリ割り当てシステムのブロック図である。 メモリ割り当てシステムのフロー図である。
以下は、添付の図面に示された、本開示の実施形態の詳細な説明である。実施形態は、発明を明確に伝える程度に非常に詳しいものとなっている。しかし、どんなに詳細に提示されていても、実施形態について予想される変形例を排除することを意図するものではなく、請求項により定義される本開示の技術範囲に含まれる全ての変形例、均等物および代替物を対象に含むものである。以下、個別の実施形態について、特定の回路または論理構成に関連して記載することになるが、当業者には当然のことながら、本開示の実施形態は、他の類似する構成でも有利に実現することができる。
上述のように、多重処理装置環境の処理装置は、わずか256Kなど、小さいメモリ割り当てを有することがある。この限られたメモリは、通例、テキスト、データ、ならびにスタックおよびヒープ動作に利用される。このようにメモリ空間が限られており、さらに小さいデータ・セグメントの保存が要求されることはまれなことから、高度なメモリ割り当てアルゴリズムを使用することは実際的ではない。当然のことながら、そのようなアルゴリズム用の最小コードは非常に大きく複雑であるので、そうしたコードを保存および実行することの経済的側面が、上述のようなシステムが提供する効率的なメモリ割り当てによって得られるどんな節約をも超過してしまう可能性がある。マルチプロセッサ・システムは、通常、複数の小型処理装置を有し、各処理装置は縮小命令セットを備えている。利用可能なマルチプロセッサ製品の多くは、上述のような装置のメモリ割り当てが16バイトの倍数となるようにしており、故に、16バイト・アラインメントが、唯一のサポートされている手法となることが多い。この一次元モードで動作する上述のような単純化されたメモリ割り当てシステムは経済的なものであるが、保存対象のセグメントが16バイトよりも小さい場合に別のアラインメントを利用するようにすれば、大幅に改善することができる。
上記の16バイト・アロケータは、通常、何らかの形のヘッダを保存する。このヘッダがさらに帯域幅を減らし相当な量のメモリを消費する可能性があり、こうしたシステムを完璧とは言えないものにしている。多くの現行システムでは、4バイト・ヘッダが用いられる。ヘッダは、必要な割り当てを追跡するのに利用することができる。この機構では、1バイトのストレージが必要な場合にその1バイトと一緒に4バイトのヘッダが保存されることになるため、処理装置によって小さい(本例では16よりも小さい)バイト数が要求される場合、結果的に非効率な無駄が生じることになる。このような非効率な動作は、セル・タイプのプロセッサまたは処理装置ばかりでなく、大多数の組み込みプロセッサにおいて生じている。
ここで図面を見ると、図1は、メモリ・アロケータを備えたマルチプロセッサ処理システム100をブロック図の形式で示している。システム100は、数例を挙げると、パーソナル・コンピュータ・システム、高性能ビデオ・システム、またはサーバなどとすることができる。開示のシステム100は、メモリ・アロケータ128を利用して命令を保存し、さらにそのようなデータを、保存対象のデータのサイズあるいは量に基づいて位置合わせすることができる。一般にシステム100は、本明細書にて開示する効率的なメモリ割り当て機構を実装可能な多数のシステムのうちの1つである。
システム100は、オペレーティング・システム上で動作するソフトウェアのスイート全体を実行することができ、さらにシステム100は、ロードされているソフトウェア・アプリケーション(単数または複数)に従い、MCC110を用いて、多数の処理タスクを実施することができる。本明細書では単一システムを記載するが、ワークステーションまたはメインフレーム、およびその他の構成、オペレーティング・システムまたはコンピューティング環境も、本開示の範囲から離れるものではないと考えられる。
MCC110はさらに、独自のデータ・プロセッサとしてもよい相乗プロセッサ装置と、メモリ・アロケータ128と、ローカル・メモリ118、ランダム・アクセス・メモリ112、読み取り専用メモリ114などのメモリと、を含むことができる。システム100は、さらに、入力出力アダプタ122と、ユーザ・インターフェース・アダプタ(UIA:user interface adapter)120と、通信インターフェース・アダプタ124と、マルチメディア・コントローラ126とを含むことができる。
入力出力(I/O:input output)アダプタ122は、ディスク・ドライブ147、プリンタ145、リムーバブル・ストレージ・デバイス146のほか、他の標準および固有のI/Oデバイスに接続されて、これらを制御することができる。UIA120は、特化されたI/Oアダプタであるとみなすことができる。図に示すようにUIA120は、マウス140およびキーボード141に接続されている。加えて、UIA120は、タッチ・スクリーン・デバイス(図示せず)など、各種ユーザ制御を提供することの可能なその他のデバイスに接続されていてもよい。
通信インターフェース・アダプタ124は、ローカルまたはワイド・エリアのネットワークに対するブリッジとなるブリッジ150と、モデム151とに接続させることができる。システム・バス102を様々な通信デバイスへ接続することによって、情報への外部アクセスを得ることができる。マルチメディア・コントローラ126は、一般に、モニタ160上へ画像を表示することのできるビデオ・グラフィックス・コントローラを含むほか、外部コンポーネント(図示せず)に対して音声を提供する。一般に、本明細書に記載のメモリ管理機構は、メモリ・アロケータ128によって実行することができる。メモリ・アロケータ128は、実行された命令の結果およびデータを保存するためにメモリを要求する処理装置に対してメモリ位置を割り当てることができる。
メモリ・アロケータ128は、従来のアロケータよりも効率よく動作することが可能であり、ローカル・メモリ118におけるデータ・ストレージの集積度を高めることができる。メモリ・アロケータ128は、MCC110と統合されること、ローカル・メモリ118と統合されること、またはMCC110と同じ集積回路上の別個のモジュールとして実装されること、あるいはその全てが可能であると考えられる。さらに、メモリ・アロケータは、MCC110に含まれているアルゴリズムなど、処理装置によって動作させられるアルゴリズムとすることも可能と考えられる。
メモリ位置を効率的に管理および割り当てし、ハードウェアおよび実行に関して低オーバーヘッドでデータを保存する機構が開示される。一実施形態では、MCC110からローカル・メモリ118へ、およびローカル・メモリ118からMCC110へデータを移動させるのに、「ヘッダなしの」通信、あるいは縮小されたヘッダでの通信を利用することができる。保存する必要のある何らかのデータをMCC110が持っているとき、MCC110の部分によって、そのようなデータに対するメモリ・アドレスを要求することができる。このMCC110からの要求には、MCC110がローカル・メモリ118に保存したいと望むバイトまたは数を含めることができる。メモリ・アロケータ128は、メモリ・アドレスを返すことができるのであるが、ここでアロケータ128によって返される実際のアドレスまたは「数値」は保存対象のバイト数に基づいており、そのため保存データは、一斉に保存されるべきバイト数に基づいて位置合わせされることになる。
図2を参照すると、処理モジュール200の簡略化された構成のブロック図が開示されている。モジュール200は、メモリを備えた単一処理装置202と、専用のアロケータ204とを含むことができる。アロケータは、乗算器210と、エンコーダ212と、トラッカ214とを含むことができる。一実施形態では、マルチプロセッサ環境の処理装置202が、システム・メモリ220などのメモリにある命令を要求して受け入れることができ、命令を処理した後、そのような処理の結果をローカル・メモリ206へ保存することができる。故に、動作において処理装置202は、メモリ割り当てが必要であることを判断し、アロケータ204へ要求を送信することができる。要求には、処理装置が保存する必要のあるバイト数を含めることができる。アロケータ204は、追跡モジュール214を利用して、保存対象のバイト数に基づいたアラインメントを有する利用可能なメモリ位置がないかを調べる。メモリ206にて適切な位置が見つかったら、アロケータ204は、このメモリ・アドレスを処理装置202へ返信することができる。
メモリ・アロケータ204は、割り当て要求の中にあるバイト数を取り出し、乗算器モジュール210を用いてこの数に乗数を掛けることによって、データ・アラインメントを行うことができる。その結果得られるアドレスは、保存対象のバイト数に基づいたアラインメントを提供することになる。アロケータ204が提供するこのアドレスによって、保存対象のバイト数に基づいた「自然な」境界またはアラインメントをアドレスに備えることができると言える。こうした保存対象の数または関連バイトに基づいた特定の位置にデータが保存される際には自然境界がもたらされ、そのため後のクロック・サイクルにて、必要に応じて適切な処理装置を用いてデータを効率よく抽出することおよび位置合わせすることができるようになる。
以下の考察は、例示を目的として、16バイトのメモリ境界を用いたシステムに基づいて提示される。16バイトという基準を用いるのは、この構成が、現行の多数のマルチプロセッサ・システムにおいて一般に利用されているからである。一方、下記の開示は、1つの例示とみなされるべきものであって、本明細書に記載されるいずれかの特徴を限定するものとは決してみなされるべきではない。例えば下記の記載は、8、32、64および128バイトに位置合わせされたシステムに適用することも可能である。従来より、16を超えるバイトを含んだデータ・セグメントは、16バイト・アラインメントを利用することになっており、その場合先頭バイトの先頭ビットが、16の倍数であるアドレスに保存される。しかし従来の構成は、16バイトのごく一部であるデータ・セグメントをメモリにて位置合わせする必要がある場合には、極めて非効率なものとなり得る。
本開示によれば、処理装置が8乃至15バイトを割り当てる必要がある場合には8バイトを利用して割り当てを位置合わせすることができ、処理装置が4乃至7バイトを保存する必要がある場合には4バイト・アラインメントを利用することができ、2および3バイトが保存対象である場合には2バイト・アラインメントを利用することができ、さらに、1バイトが保存対象である場合には1バイト・アラインメントを利用することができる。このアラインメント手順は、複数のバイトをより密集させてメモリに詰め込むことを可能にし、その上、低オーバーヘッドでそのようなアラインメントを提供することを可能にする。
コンピュータにおいてメモリ・アドレスはバイナリ形式で与えられている。多くの場合、アドレスが16進(16を基数とする)形式で表されていると、バイナリ(2を基数とする)アドレスが理解しやすくなる。なぜならば、28=16であり、各16進数によって8つのバイナリ数が表されるからである。一例では、2バイトの割り当てが必要なとき、アロケータ204は、保存対象のバイト数の倍数を有するかあるいは倍数で終わるメモリ・アドレスまたは「数値」を、おそらくは16進数で返すことができる。故に、処理装置によって要求された割り当て対象のバイト数に整数(すなわち、1,2,3・・・・)を掛けたものを用いて、その割り当て用のアドレス位置の少なくとも下位ビットを生成することができる。例えば、処理装置が2バイトを要求する場合、アロケータ204によって回答される可能性のあるアドレスとして、「2」(2バイトを示す)掛ける56、すなわち112が考えられ、これを16進法にすると、16進数の前には先行する0xを置いてそのアドレスが16進形式であることを示すことが慣例化しているので、0x70となる。
この割り当て機構では、2バイトについての「自然な」アドレス境界が形成され、故に、動的なアドレス境界が保存対象のバイト数に基づいて提供されている。従来のシステムであれば、このような状況では、従来型のメモリ・アロケータによって画一的な境界(すなわち、16バイトまたは32バイトのいずれかの境界)が一貫して提供されることになるだろう。本開示によれば、メモリ・アドレスおよびアドレス境界を、処理装置202が保存したいと望むバイト数に基づいて処理装置202に対して提供することができる。
保存対象のバイト数に基づいて境界を置くことにより、様々に組み合わせた2、4、および8バイトの組み合わせで16バイト・セグメントをポピュレートすることが可能になり、その結果、処理装置によって保存されるデータが、より小さいメモリ領域の中へ圧縮される。上述のように、本明細書にて考察され本開示の特徴を説明するのに用いられる16バイト境界は、アドレス境界の単なる1つの事例/標準に過ぎず、上記の考察は、8バイト、32バイト、64バイト、および128バイト境界についても同様に良好に機能すると考えられる。
1つのクロック・サイクルで16バイトが保存される場合、16バイト・セグメントは均質であるとみなすことができ、16バイトよりも小さい境界が用いられて2、4および8バイトの様々な組み合わせが16バイト領域に保存される場合、16バイトの領域は「非均質」になり得る。
さらに、この非均質な領域に保存されたバイトの各々は、関連のないものとすることができる。本開示によれば、メモリ・アロケータ204のトラッカ・モジュール214が、メモリ206にある非均質な16バイト境界の各々を追跡すること、すなわちこれらにフラグを立てることができ、さらに、非均質な16バイト・セグメント各々の内部におけるメモリ・アドレス位置の使用量について追跡することができる。そのため、処理装置202が非標準の「小さい」割り当てを必要とした場合、アロケータ204によってそのような位置を提供することが可能であり、処理装置202はこれらの位置を利用し、上述のような「非標準の」バイト・アラインメントを用いてメモリの空きを埋めることができる。
故に、トラッカ・モジュール214は、上記の特徴に従ってメモリ割り当てを追跡することが可能であり、構造化された複数の16バイト境界の中にある利用可能で部分的に満たされた様々なセグメントを特定することができる。処理装置202が、小セグメント(標準すなわち提示の例では16バイトよりも小さい、いずれかのセグメント)を保存する必要がある場合、アロケータ204は、本明細書に記載のバイト・サイズ倍数割り当てを用いることにより、所要の小さいセグメント容量を有するアドレスを提供することができる。
これにより、「半端なサイズの」バイトの複数の小さいグループを、標準のメモリ割り当てサイズ(すなわち、本明細書では16バイト)内の詰め込まれた構成へ詰め込むことが可能になる。こうしたメモリ・セグメントは、メモリの非均質なセグメントとしてタグ付けすることあるいはフラグを立てることができ、保存対象のバイト数の倍数である「数値」を有する個別のアドレスは、容易に探し出すことが可能であり、上述のように従来とは異なった位置に置くことができる。
一例では、同一の16バイトのメモリ割り当ての中に、2バイト・セグメントを2バイト・アラインメント(2で割り切れるアドレス)に基づいて保存し、続いて4バイトを4バイト・アラインメント(4で割り切れるアドレス)を用いて保存することができる。アロケータ204は、下位標準のあるいは「小さい」利用可能なこの4バイト・セグメントを探し出し、2バイトの保存に利用したものと同じ16バイト割り当てにある4の倍数であるアドレスを、返すことができる。その後トラッカ214によって、この16バイト・セグメントにてまだあと10バイトが利用可能であるということを記録することができ、10バイトは、2バイトおよび4バイトのセグメントで分け合うことが可能になる。
上記の例のハードウェア(すなわち、202、204、206および208)が、おそらくは16バイトのアドレス・バスのために、16バイトのシステムとして効率的に動作するように設計されていると仮定した場合、上述のような特徴によって、関連のないデータの多様なセグメントを同じ16バイトのセグメント/割り当ての中へ詰め込むことができる。従ってシステム200は、16バイトのフィールド全部を消費してしまう単一の小セグメント・データ(1、2、4または8バイト)を扱う代わりに、多様な小さい2、4および8バイトのセグメントを16バイトのフィールド/割り当ての中へ詰め込むことができる。
一実施形態によれば、小さい割り当てでは、伝送に際してヘッダを利用しなくてもよく、保存されるデータと一緒にヘッダを保存する必要もなくなると考えられる。特に、1バイトまたは2バイトなどといった小セグメントが保存対象である場合、ヘッダ機構なしで済ませることによって、伝送帯域幅などのオーバーヘッドならびにメモリ使用量の大幅な節約を実現することができる。このように、ヘッダのサイズを縮小することあるいはヘッダを省くことができ、さらに、エンコーダ212によって、アドレスの下位ビットのビットを符号化することができる。それに応じて、アロケータ204が、データの小セグメントを「自然な」境界に位置合わせすることができ、こうした自然な境界は、16および32ビットなどといった大きい割り当てアラインメントの倍数ではない。エンコーダ212は、どこに境界が位置付けられたかを符号化することができる。
ヘッダは、通常、割り当てのサイズの表示を提供する。ヘッダが、割り当てのすぐ前ではないどこかに(近傍のアドレスにて)保存された場合、通常、その割り当てのアドレスをも同様にヘッダが有することとなり、このためオーバーヘッドはさらに増加する。ヘッダは、どのスレッドが割り当てを要求したかに関するデータおよびその他の「ハウスキーピング」データなど他のデータを有することもできるが、一実施形態では、開示のシステムのオーバーヘッドを減らすべく、アドレスおよびサイズしか保存しないようにすることができる。
先に述べたように、所望の連続したメモリの量またはサイズを示すメモリ割り当て要求を受信した後で、アロケータ204は、その数が非標準割り当てを示しているかどうかを判断することができる。例えば、16バイト環境であれば、8、4、2および1バイトは、非標準割り当てということになるだろう。その数が、処理装置202によって非標準割り当てが行われているということを示している場合、アロケータ204によって、保存対象のバイト数の倍数に基づいた未使用のメモリ・アドレスを探し出すことができると考えられる。
一実施形態では、アロケータが、メモリ・アドレスのプールから未使用のメモリ・アドレスを探し出すことができ、アドレスのプールには、バイナリ・セグメントの整数倍数が含まれており、バイナリ・セグメントの数の2倍数であるアドレスは含まれていない。このようにすると、割り当てられたフィールドに何バイト保存されているかが常にアドレスによって決まることになり、アドレス自体を利用して割り当てのサイズを算出することができるため、ヘッダ情報は何も必要とされない。
別の説明としては、アドレス・プールの一実施形態(プールは、特定の非標準のバイト・サイズに向けたアドレスの収集であって、この収集には、その特定の非標準のバイト・サイズの倍数は含まれるが、それより大きい非標準割り当ての倍数、および標準割り当てサイズは含まれない)では、ヘッダ情報は「冗長」である。「プール」の1つの例では、保存されているデータが、8の倍数であるが16の倍数ではないアドレスを有している場合、処理装置(単数または複数)202は、そのアドレスから、割り当てのサイズは最長で8バイト長であろうと判断することができる。例えば、0x208は、8バイト割り当てには当てはまるが、16バイト割り当てには当てはまらないことになる。同様に、アドレスが、4の倍数ではあるが8または16の倍数ではない場合、処理装置202は、そのアドレスによって、割り当ては最長で4バイト長であろうと判断することができるだろう。当然分かるように、アドレス0x204は4バイトに当てはまり、このアドレスも4の整数倍数であるが16の倍数ではない。一実施形態では、アロケータ204は、16に整数を掛けさらに8を足して、8バイト割り当てを得ることができる。アロケータ204は、同様にこの割り当てを、単に8を足すことによって、あるいはその値と標準すなわち16バイトの倍数との「論理和をとる」ことによって、得ることができる。
故に、8バイト割り当ての場合、16_バイト_値|=8というのが1つの表現であり、あるいは16_バイト_値+=8が別の使用可能な割り当てであるとすればよい。従来のシステムについて上述したように、アロケータが要求されたサイズとは無関係に16バイト・ブロックの割り当てを選択した場合、そのとき初めてアロケータは、16バイトに位置合わせされた当初のアドレスにするように引き算をして、16バイト全体を加えることができる。
割り当てはアドレスのみによって算出することができるため、処理装置(単数または複数)202は、ヘッダが割り当てのサイズのみを保存するシステムにて、ヘッダを必要とせずに割り当てのサイズを検知する。そのようなシステムでは、当然、割り当てのサイズに関する冗長なデータは不要であるということになるので、ヘッダを省くことができる。
別の実施形態では、8の倍数であるアドレス上に4バイト割り当てがもたらされるのを防いで、処理装置(単数または複数)202に対して付加的な解決を与えることができる。故に、8および16の倍数であるアドレスを、4バイト割り当てに関して利用可能なリストから除外することができる。同様に、4、8および16の倍数であるアドレスを、2バイト割り当てに利用可能なアドレスのリストから除外することもできる。従って、8バイトが割り当ての対象である場合、アロケータ204は、8の倍数であって16の倍数ではないアドレス上に、存分に8バイト割り当てを行うことができる。この機構は、好適な手法ではあるものの絶対的ではないものとすることができる。例えば、4バイト割り当てが必要な場合に、アロケータ204が、4の倍数である割り当てを見つけることはできないが8の倍数である割り当てを見つけることができると仮定すると、アロケータ204は、要求されたものよりも大きい割り当てを返すことができる。それでもやはり、ヘッダなしで済ませることによって、「過剰な割り当て」のせいでともすれば無駄になる空間に対する埋め合わせをすることができる。
当然のことながら、開示の機構を利用して、命令およびデータの双方に関するメモリ割り当てを行うことが可能である。従ってコンパイルする際に、コードのラインと、コードがメモリにて消費することになるビットとの一対一のマッピングを実現するのに、何ら難しい要件はない。一方、コードの各ラインが単一のアセンブリ命令に対応し、各命令が32ビット命令であるとすれば、命令は、ラインにつき4バイトに相当する。6ラインのコードであれば、32バイトすなわち256ビットを要することになるだろう。この空間は、データそのものではなく、データを処理する命令を保存するのに利用されることになると考えられる。上述のように、メモリの限られているシステムでは、データを処理する命令を保存するのにメモリ空間を割り当て、残りの限られた空間をデータの保存のために残すことがある。
自然の境界(すなわち、保存対象のバイトの倍数)を利用することにより、通常はヘッダの中にあると考えられる情報を、アドレスあるいはアドレスの下位ビットに符号化することができる。さらに、エンコーダ212は、「ヘッダなしの」割り当てによって、小さい/非標準割り当てごとに4バイトのメモリ空間が確実に節約されるようにすることができる。ヘッダが省かれると、かなりのメモリ空間を節約することができ、このことは特に、各処理装置202に対して小さいメモリ空間のみが割り当てられる場合にあてはまる。ヘッダの「代わりにする」ために、データが境界情報を用いて保存されているインジケータなどの境界データまたは情報を、アドレス・ビットの下位に置くことができる。
メモリ割り当てプロセスの動作中に、アロケータ204が16バイト割り当てを行った後で、保存対象のセグメントのサイズが8バイトより小さいかあるいは8バイトであった場合、命令またはデータを保存するために選択するアドレスは、8を乗じた整数「N」とすることができる。命令またはデータのサイズが8バイトよりも大きい場合は、アロケータ204は、従来の動作に従って、付与されたアドレスおよびサイズの入ったヘッダを送信することにより、空間を割り当てることができる。8の倍数であるアドレス位置が解放されたら、アロケータ204は、空き位置のリストへ、例えば16の倍数であるアドレス&0xFFFFFFF0として16進数で、追加することができる。
アロケータが割り当てを追跡するべく情報にヘッダを付加する、従来の16バイトに限られた割り当てシステムで利用される16バイトに比べ、開示の機構は、割り当てごとに4バイトを節約することができる。一実施形態では、従来の固定された16バイト・システムに対して付加的なコードを付け加えて、ヘッダを使用することなく、16バイト割り当てをより小さい割り当てに分割することができる。一方、小さい命令用セグメントを処理することは標準ではなく、おそらくまれにしか起こらないので、こうした小さい命令用セグメントのために必要とされるコードは、特殊な処置を受け入れない可能性もある。そこでこのような小さい割り当てがまれである場合には、システムがこの分割コードを使用しないようにすることもできると考えられる。
例えば、16バイト割り当ては、1バイト、2バイト、4バイト、および8バイトのセグメント(その場合、1+2+4+8=15)にさらに分割することが可能と考えられ、この配置では、16バイト割り当てのうちの15が利用されることになる。
Figure 0005489991

ここで示す例では、小さい命令またはデータ・セグメントを保存するのに必要なメモリの空間は、全体で16バイトである。従来の16バイト・システムであれば、割り当ての各々(1、2、4、および8バイト)が16バイトずつ占めるため、4×16=64、さらにヘッダ用に+16バイト(すなわち、4つのヘッダ各々に4バイトずつ)で80に等しくなるので、80バイトが割り当てられるだろう。当然分かるように、開示の機構は、メモリに64バイトの節約をもたらす(すなわち、80−16=64)。
別の実施形態では、以下に示すように、2つの1バイト割り当て、2つの2バイト割り当て、および2つの4バイト割り当てを、16バイト割り当ての中へ詰め込み、利用可能な16バイトのうちの14を利用するようにできると考えられる。
Figure 0005489991

上記に示す例では、命令またはデータの小セグメントを保存するのに必要な空間すなわちメモリは16バイトである。この場合、従来のシステムであれば、120バイト(6×(16+4))が割り当てられることになる。当然分かるように、上述した機構は、メモリに104バイトの節約(120−16)をもたらすことになる。開示の機構は、上記の圧縮されたまたは「詰め込まれた」形態にて、コード・サイズと効率性とのトレードオフを与えることができ、このトレードオフは、メモリ資源の限られたセル・タイプ・プロセッサのような組み込みプロセッサに有用である。上述のように、ヘッダ形式の情報は、利用されるアドレスに符号化することができる。
図3を参照すると、メモリ資源を割り当てる方法のフロー図が開示されている。ブロック302で示すように、マルチコア・プラットフォームの処理装置が、命令を実行して結果をもたらすことができる。ブロック304で示すように、処理装置は、上記の結果を保存するのに、何バイトのメモリが必要とされているかを算出することができる。判定ブロック306にて、所要のバイト数について、標準のバイト割り当てあるいは標準のバイト割り当てに近いものであるかどうかを判断することができる。これは固有の標準とすることも所定の標準とすることもでき、一実施形態では、16バイト標準とすることができる。
バイト割り当てが標準に合致する場合、所定の割り当てブロックに合致する場合、あるいは標準に近い場合には、ブロック308で示すように、標準の固定長の「ヘッダ付き」割り当てを行うことができ、ブロック309で示すように結果を保存し、プロセスを終了することができる。判定ブロック306にて、所要のバイト割り当てが標準あるいは所定の長さよりも短かった場合には、処理装置は、ブロック310で示すように、結果を保存するのに必要なバイト数の倍数である非標準割り当てを要求することができる。
2バイトが保存対象である場合、その2バイトは、2の倍数であるアドレスにて位置合わせすることができ、あるいはそのアドレスが、8の倍数である境界を有する可能性もある。4バイトが保存対象である場合、その4バイトは、4の倍数の境界を有しているアドレス位置に位置合わせすることができる。8バイトが保存対象である場合、その8バイトは、8の倍数である境界に位置合わせすることができ、さらに16バイトは、16の倍数であるアドレス境界に位置合わせすることができる。
ブロック312で示すように、アロケータが、所要の「倍数」を有する、解放されたアドレスを見つけることができる。上述のように、下位アドレスを選択してアラインメント構成または割り当てサイズあるいはその両方についての情報を符号化することができ、それによりヘッダをなくすことができる。ブロック314で示すように、処理装置は、結果を保存するのに非標準のアドレスを利用することができ、さらにブロック316で示すように、アラインメントに関する情報をアドレスの中に符号化することができる。その後、プロセスを終了することができる。
本開示の別の実施形態は、上記に記載した機構を実装するプログラム製品として実現することができる。プログラム製品のプログラム(単数または複数)は、実施形態の機能(本明細書に記載の方法など)を定義し、データまたは信号あるいはその両方を担持している様々な媒体に含めることができる。データまたは信号あるいはその両方を持担している代表的な媒体としては以下が挙げられるが、これらに限定されない:(i)書き込み不可能なストレージ媒体(例えば、CD−ROMドライブにより読み取り可能なCD−ROMディスクなど、コンピュータ内の読み取り専用メモリ・デバイス)上に恒久的に保存されている情報;(ii)書き込み可能なストレージ媒体(例えば、ディスケット・ドライブまたはハードディスク・ドライブ内のフレキシブル・ディスク)上に保存された変更可能な情報;および(iii)コンピュータまたは電話のネットワークを経由するなど、ワイヤレス通信を含む通信媒体によってコンピュータへ伝達される情報。後の方の実施形態は、具体的には、インターネットおよびその他のネットワークからダウンロードされる情報を含む。そのようなデータまたは信号あるいはその両方を担持している媒体は、本発明の機能を導くコンピュータ可読命令を保持している場合、本発明の実施形態に相当する。
一般に、本発明の実施形態を実現するように実行されるルーチンは、オペレーティング・システムの一部、あるいは個別のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクトまたは命令のシーケンスとすればよい。本発明のコンピュータ・プログラムは、通常、コンピュータによって機械可読の形式に変換され、故に実行可能命令となる多数の命令を含む。
さらに、プログラムは、プログラムにローカルに常駐するかあるいはメモリ内またはストレージ・デバイス上にある、変数およびデータ構造体を含む。加えて、本明細書にて以下に記載の多様なプログラムは、本発明の個別の実施形態にてそれらのプログラムが実行される対象のアプリケーションに基づいて特定されてもよい。ただし当然のことながら、付随する特定のプログラム専門用語はいずれも、単に便宜上使用されているものに過ぎず、故に本発明は、そのような専門用語によって特定されるまたは含意されるあるいはその両方のいずれか特定のアプリケーションにおける使用にのみ限定されるべきではない。
本開示の利益を得る当業者には当然のことながら、本発明は、非同期インターフェースの挙動をモデル化する方法および機構を考慮している。詳細な説明および図面にて提示および記載された本発明の形態は、単なる例として捉えられるべきものであることが分かる。以下の請求項は、開示された例示的な実施形態の全ての変形例をも含むように広く解釈されるべきものである。
本発明およびその利点の一部をいくつかの実施形態に関して詳細に記載してきたが、当然のことながら、添付の請求項によって定義される本発明の精神および範囲から逸脱することなく、ここに多様な交換、代替および変更を施すことが可能である。本発明の或る実施形態によって複数の目的が達成されることはあり得るが、添付の請求項の範囲内にある各々の実施形態が各々の目的を達成することになるとは限らない。さらに、本明細書に記載のプロセス、機械、製造物、組成物、手段、方法およびステップの特定の実施形態に本出願の範囲を限定することは意図されていない。
当業者であれば本発明の開示からすぐに分かることであるが、本明細書に記載された対応する実施形態と実質的に同じ機能を果たすかまたは実質的に同じ結果を実現する現在既存のあるいは今後開発されるプロセス、機械、製造物、組成物、手段、方法またはステップは、本発明に従って利用することができる。従って添付の請求項には、そのようなプロセス、機械、製造物、組成物、手段、方法またはステップをも範囲内に含めることが意図されている。

Claims (4)

  1. メモリ割り当て要求を受信するステップであって、前記要求は、保存対象のデータ量を示している、前記受信するステップと、
    前記保存対象のデータ量は非標準の量であると判断するステップと、
    前記保存対象のデータの非標準のデータ量の整数倍の数に基づいた未使用のメモリ・アドレスを探し出すステップと、
    前記未使用のメモリ・アドレスを利用して前記データを保存するステップを含み、
    前記探し出すステップは、メモリ・アドレスのプールから未使用のメモリ・アドレスを探し出すステップをさらに含み、前記メモリ・アドレスのプールは、セグメントの前記整数倍のアドレスを含み、前記セグメントの数の2倍数であるアドレスは含まない、
    方法。
  2. 標準割り当ては、メモリ空間の16バイト割り当てであって、非標準割り当ては、8バイト、4バイト、2バイトまたは1バイト割り当てのうちの1つである、請求項1に記載の方法。
  3. 命令の処理に基づいて、データを保存する連続したメモリの量を算出するステップと、
    要求を使って前記データを保存するメモリ・アドレスを要求するステップであって、前記要求は、要求される連続したメモリの量のインジケータを含む、前記要求するステップと、
    前記連続したメモリの量の整数倍の数であるメモリ・アドレスを受信するステップと、
    前記メモリ・アドレスに前記データを保存するステップと、
    探し出すステップをさらに含み、
    前記探し出すステップが、メモリ・アドレスのプールから未使用のメモリ・アドレスを探し出すステップをさらに含み、前記メモリ・アドレスのプールは、前記セグメントの前記整数倍のアドレスを含み、前記セグメントの数の2倍数であるアドレスは含まない、
    方法。
  4. 前記データが標準サイズであるかどうかを判断するステップと、前記データが標準サイズである場合には標準割り当てを提供するステップとをさらに含み、任意的に、標準割り当ては、メモリ空間の16バイト割り当てであって、非標準割り当ては、8バイト、4バイト、2バイト、または1バイト割り当てのうちの1つである、請求項3に記載の方法。
JP2010510749A 2007-06-05 2008-05-30 メモリ割り当ての機構 Expired - Fee Related JP5489991B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/758,321 2007-06-05
US11/758,321 US8015385B2 (en) 2007-06-05 2007-06-05 Arrangements for memory allocation
PCT/EP2008/056653 WO2008148704A1 (en) 2007-06-05 2008-05-30 Arrangements for memory allocation

Publications (2)

Publication Number Publication Date
JP2010529545A JP2010529545A (ja) 2010-08-26
JP5489991B2 true JP5489991B2 (ja) 2014-05-14

Family

ID=39711015

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010510749A Expired - Fee Related JP5489991B2 (ja) 2007-06-05 2008-05-30 メモリ割り当ての機構

Country Status (5)

Country Link
US (1) US8015385B2 (ja)
EP (1) EP2153330B1 (ja)
JP (1) JP5489991B2 (ja)
CN (1) CN101681297B (ja)
WO (1) WO2008148704A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082387B2 (en) * 2007-10-29 2011-12-20 Micron Technology, Inc. Methods, systems, and devices for management of a memory system
US8250336B2 (en) * 2008-02-25 2012-08-21 International Business Machines Corporation Method, system and computer program product for storing external device result data
US8527736B1 (en) 2010-09-07 2013-09-03 Adtran, Inc. Systems and methods for improving address translation speed
EP2798499B1 (en) 2011-12-27 2020-11-18 Intel Corporation Methods and apparatus to manage workload memory allocation
US8700838B2 (en) 2012-06-19 2014-04-15 Concurix Corporation Allocating heaps in NUMA systems
US9047196B2 (en) 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US8656135B2 (en) * 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed prior to execution
US8607018B2 (en) 2012-11-08 2013-12-10 Concurix Corporation Memory usage configuration based on observations
US8656134B2 (en) * 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed on executing code
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
WO2015094258A1 (en) * 2013-12-19 2015-06-25 Hewlett-Packard Development Company, L.P. Transmission of command strings and status strings via memory bus
US9582413B2 (en) * 2014-12-04 2017-02-28 International Business Machines Corporation Alignment based block concurrency for accessing memory
US10698687B1 (en) 2017-09-05 2020-06-30 Apple Inc. Pipelined resource allocation using size aligned allocation
US10824369B2 (en) * 2018-07-31 2020-11-03 Nutanix, Inc. Elastic method of remote direct memory access memory advertisement
CN111352723A (zh) * 2018-12-21 2020-06-30 创发信息科技(苏州)有限公司 跨进程共享存储器动态分配的方法
US11010070B2 (en) * 2019-01-31 2021-05-18 Ralph Crittenden Moore Methods for aligned, MPU region, and very small heap block allocations

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666514A (en) * 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US7146479B2 (en) * 2001-07-18 2006-12-05 City U Research Limited Method and apparatus of storage allocation/de-allocation in object-oriented programming environment
US6088777A (en) * 1997-11-12 2000-07-11 Ericsson Messaging Systems, Inc. Memory system and method for dynamically allocating a memory divided into plural classes with different block sizes to store variable length messages
US6643754B1 (en) * 2000-02-15 2003-11-04 International Business Machines Corporation System and method for dynamically allocating computer memory
US6757802B2 (en) 2001-04-03 2004-06-29 P-Cube Ltd. Method for memory heap and buddy system management for service aware networks
US7003597B2 (en) * 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
US7181587B1 (en) * 2003-08-18 2007-02-20 Cray Inc. Mapping an arbitrary number of contiguous memory pages at an arbitrary alignment
EP1619584A1 (en) * 2004-02-13 2006-01-25 Jaluna SA Memory allocation
US7747834B2 (en) * 2004-09-30 2010-06-29 Kyocera Wireless Corp. Memory manager for an embedded system
US7334104B2 (en) * 2004-11-20 2008-02-19 International Business Machines Corporation Satisfying memory allocation requests from memory pool or lookaside lists based on memory size requested to be allocated
US7610468B2 (en) * 2006-10-26 2009-10-27 Hewlett-Packard Development Company, L.P. Modified buddy system memory allocation

Also Published As

Publication number Publication date
US8015385B2 (en) 2011-09-06
EP2153330B1 (en) 2012-11-28
WO2008148704A1 (en) 2008-12-11
JP2010529545A (ja) 2010-08-26
US20080307187A1 (en) 2008-12-11
CN101681297A (zh) 2010-03-24
EP2153330A1 (en) 2010-02-17
CN101681297B (zh) 2013-03-06

Similar Documents

Publication Publication Date Title
JP5489991B2 (ja) メモリ割り当ての機構
US6549995B1 (en) Compressor system memory organization and method for low latency access to uncompressed memory regions
JP3599352B2 (ja) フレキシブルなn−ウェイ・メモリ・インターリーブ方式
RU2509347C2 (ru) Гибкое увеличение страниц памяти
US20100005222A1 (en) Optimizing virtual memory allocation in a virtual machine based upon a previous usage of the virtual memory blocks
US9715453B2 (en) Computing method and apparatus with persistent memory
EP0931290A1 (en) Address mapping for system memory
KR102521051B1 (ko) 하이브리드 데이터 룩-업 방법
CN111104347B (zh) 堆内存块查找方法、装置、设备及存储介质
US6961840B2 (en) Method and apparatus for managing a dynamic alias page table
US6779100B1 (en) Method and device for address translation for compressed instructions
US9389997B2 (en) Heap management using dynamic memory allocation
US9323774B2 (en) Compressed pointers for cell structures
JP2024054306A (ja) ハードウェアベースのメモリ圧縮
US20090157995A1 (en) Dynamic memory management in an rdma context
EP2466452B1 (en) Register file and computing device using same
KR20030055467A (ko) 다단계 분할을 이용한 기억소자 할당방법
US20060190689A1 (en) Method of addressing data in a shared memory by means of an offset
US9298460B2 (en) Register management in an extended processor architecture
US7805581B2 (en) Multiple address and arithmetic bit-mode data processing device and methods thereof
US5283878A (en) Method and apparatus for encoding data types for object identification
US20040083350A1 (en) Zero delay data cache effective address generation
US6981122B2 (en) Method and system for providing a contiguous memory address space
EP0967553A2 (en) Method of and apparatus for processing information, and providing medium
US8645651B2 (en) Low-contention update buffer queuing for small systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130621

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: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140225

R150 Certificate of patent or registration of utility model

Ref document number: 5489991

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees