JP2012093882A - メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法 - Google Patents

メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法 Download PDF

Info

Publication number
JP2012093882A
JP2012093882A JP2010239488A JP2010239488A JP2012093882A JP 2012093882 A JP2012093882 A JP 2012093882A JP 2010239488 A JP2010239488 A JP 2010239488A JP 2010239488 A JP2010239488 A JP 2010239488A JP 2012093882 A JP2012093882 A JP 2012093882A
Authority
JP
Japan
Prior art keywords
memory
memory area
processor
entry
scale
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.)
Withdrawn
Application number
JP2010239488A
Other languages
English (en)
Inventor
Naohiro Nonogaki
直 浩 野々垣
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010239488A priority Critical patent/JP2012093882A/ja
Priority to US13/027,482 priority patent/US9104636B2/en
Publication of JP2012093882A publication Critical patent/JP2012093882A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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/167Interprocessor communication using a common memory, e.g. mailbox

Abstract

【課題】共有メモリを共有するための処理を並列化し、共有メモリのフラグメンテーションを抑制し、データのコピー回数を低減し、且つDMAモジュールが要求するサイズの境界とデータの先頭アドレスとの間のアライメントをとる。
【解決手段】メモリ管理装置13は、複数のプロセッサ12a,12bにより共有される共有メモリ14を管理する。各プロセッサに割り当てられる共有メモリ14のメモリ領域を確保し、各メモリ領域に複数のプロセッサと1対1に対応する複数のリファレンスカウンタを設ける。メモリ領域を各プロセッサに割り当てるときに、メモリ領域を管理するプロセッサに対応するリファレンスカウンタに1を加算し、メモリ領域を解放するときにリファレンスカウンタから1を減算する。更新されたメモリ領域における複数のリファレンスカウンタの値の合算結果が0である場合に、メモリ領域が割り当てられたプロセッサからメモリ領域を解放する。
【選択図】図1

Description

本発明の実施形態は、メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法に関する。
近年、画像データ等の大容量のデータを処理するために、共有メモリと、複数のプロセッサと、を備えるマルチプロセッサシステムが利用される。そのようなマルチプロセッサシステムでは、以下の第1〜第6要件を満たすことが必要である。
<第1要件> 共有メモリの割当及び削除がプロセッサ間で互いに排他的であること。
<第2要件> 1つのデータに対して16KB〜12MBのメモリ領域を共有メモリ内に確保すること。例えば、1280×720ピクセルの画像データに対しては、1.3MB以上の連続したメモリ領域を共有メモリ内に確保することが求められる。
<第3要件> 異なるサイズのデータが混在した場合であっても共有メモリの割当を適切に実行可能であること。例えば、16KBの静止画の画像データと12MBの動画の画像データを同時に取り扱うためには、16KBの画像データと12MBの画像データが混在した場合であっても共有メモリの割当が適切に実行されることが求められる。
<第4要件> 共有メモリのフラグメンテーションを抑制可能であること。特に、画像データ等の大容量データを取り扱う場合には、共有メモリの容量に対するデータの容量の割合が大きいので、フラグメンテーションが発生し易い傾向にある。従って、画像データ等の大容量データを取り扱うためには、フラグメンテーションの抑制が重要である。
<第5要件> データのコピー回数を低減すること。特に、画像データ等の大容量データでは、データをコピーするときの共有メモリとプロセッサとの間のデータ転送量が大きくなるので、マルチプロセッサシステムへの負荷を低減するためにデータのコピー回数を低減することが重要である。
<第6要件> ダイレクトメモリアクセス(以下、「DMA(Direct Memory Access)」という)モジュールを用いてデータ転送を行うときにDMAモジュールが要求するサイズ(例えば、256byte又は1024byte) の境界とデータの先頭アドレスとの間のアラインメントをとること。例えば、データの先頭アドレスが“0x400100”である場合には、DMAユニットが要求する単位(256byte)の境界でアラインメントをとることにより、データ転送効率の効率が改善する。
しかしながら、従来のメモリ管理装置では、第1〜第6要件を全て満たすことはできない。
特開2009−181213号公報 特開2009−181268号公報
本実施形態の課題は、共有メモリを共有するための処理を並列化し、共有メモリのフラグメンテーションを抑制し、データのコピー回数を低減し、且つDMAモジュールが要求するサイズの境界とデータの先頭アドレスとの間のアライメントをとることである。
本実施形態に係るメモリ管理装置は、複数のプロセッサにより共有される共有メモリを管理する。メモリ管理装置は、割当部と、更新部と、解放部と、を備える。割当部は、各プロセッサの要求に基づいて、各プロセッサに割り当てられる共有メモリのメモリ領域を確保し、各メモリ領域に複数のプロセッサと1対1に対応する複数のリファレンスカウンタを設ける。更新部は、各メモリ領域を各プロセッサに割り当てるときに、メモリ領域を管理するプロセッサに対応するリファレンスカウンタの値に1を加算し、メモリ領域が割り当てられたプロセッサからメモリ領域を解放するときに、メモリ領域を管理するプロセッサに対応するリファレンスカウンタの値から1を減算する。解放部は、更新部により更新されたメモリ領域における複数のリファレンスカウンタの値の合算結果が0である場合に、メモリ領域が割り当てられたプロセッサからメモリ領域を解放する。
本実施形態に係るマルチプロセッサシステム10の構成を示すブロック図。 メモリ管理装置13の構成を示すブロック図。 割当メモリブロックAのデータ構造を示す概略図である。 管理メモリブロックMのデータ構造を示す概略図である。 本実施形態に係るメモリ管理処理の手順を示すフローチャート。 初期化(S502)の手順を示すフローチャート。 初期化(S502)において得られる管理メモリブロックMのデータ構造を示す概略図。 メモリ割当(S503)の手順を示すフローチャート。 未使用エントリ取得(S804)を説明するためのエントリEのデータ構造を示す概略図。 未使用エントリ取得(S804)において得られる管理メモリブロックMのデータ構造を示す概略図。 分割(S805)の手順を示す擬似コード。 メモリ領域割当(S806)の手順を示すフローチャート。 メモリ領域割当(S806)において得られるメモリ領域のデータ構造を示す概略図。 メモリ共有(S504)の手順を示すフローチャート。 探索(S1401)の手順を示すフローチャート。 先頭アドレス計算(S1504)において得られる仮のエントリEvのデータ構造を示す概略図。 メモリ解放(S505)の手順を示すフローチャート。 フリーリスト返却(S1704)の手順を示すフローチャート。 併合(S1803)の手順を示す擬似コード。
本実施形態について、図面を参照して説明する。本実施形態に係るマルチプロセッサシステムについて説明する。図1は、本実施形態に係るマルチプロセッサシステム10の構成を示すブロック図である。
マルチプロセッサシステム10は、複数のプロセッサ12a,12bと、共有メモリ14と、を備える。プロセッサ12a,12bは、互いに、バス又はインターコネクト等の接続線16を介して共有メモリ14に接続される。すなわち、プロセッサ12a,12bは、共有メモリ14を共有する。
プロセッサ12a,12bはそれぞれ、共有メモリ14に格納されたアプリケーションプログラムを起動することにより、メモリ管理装置13と、データ処理装置15と、を実現するモジュールである。プロセッサ12a,12bは、複数のアプリケーションを並列に実行可能である。
メモリ管理装置13は、複数のプロセッサ12a,12bにより共有される共有メモリ14をバディシステムで管理する装置である。図2は、メモリ管理装置13の構成を示すブロック図である。メモリ管理装置13は、初期化部131と、割当部132と、共有部133と、探索部134と、解放部135と、更新部136と、を備える。
データ処理装置15は、共有メモリ14に格納されたデータに対してデータ処理を実行する装置である。例えば、データ処理装置15は、静止画データ及び動画像データ等の画像データに対して画像処理を実行するための画像処理装置である。
共有メモリ14は、様々なアプリケーションプログラムと、データ処理装置15により取り扱われる様々なデータと、を記憶可能である。例えば、共有メモリ14は、DRAM(Direct Random Access Memory)である。
共有メモリ14上には、割当メモリブロックA及び管理メモリブロックMが構築される。図3は、割当メモリブロックAのデータ構造を示す概略図である。図4は、管理メモリブロックMのデータ構造を示す概略図である。割当メモリブロックAは、データ処理装置15に割り当てられるメモリブロックである。管理メモリブロックMは、メモリ管理装置13により使用されるメモリブロックである。管理メモリブロックM及び割当メモリブロックAは、全てのプロセッサ12a,12bから参照可能である。
割当メモリブロックAは、複数のページを含む。各ページは、共有メモリ14のメモリ領域が所定のページサイズPS毎に分割されたものである。各ページは、連続したメモリ領域に構築されても良いし、非連続なメモリ領域に構築されても良い。各ページは、N(N=2)(nは正の整数)個の固定長メモリ(以下、「アロケーションユニット」という)AU[j,1]〜AU[j,N](j=1〜K、Kは2以上の整数)に分割される。nは、アロケーションユニットの最大スケールである。
管理メモリブロックMは、変数セクションVSと、フリーリストFLと、ページポインタセクションPPSと、エントリセクションESと、を含む。
変数セクションVSは、割当メモリブロックAに関する情報を示す複数の変数を含む。具体的には、変数セクションVSは、ページ数を示す変数P_COUNTと、アロケーションユニットのサイズを示す変数AU_SIZEと、アロケーションユニットの最大スケールを示す変数AU_MAX_SCALEと、フリーリストのロックフラグF1と、を含む。変数P_COUNTには、ページ数Kが設定される。変数AU_SIZEには、AS(AS=PS/N)が設定される。変数AU_MAX_SCALEには、nが設定される。ロックフラグF1には、1又は0が設定される。ロックフラグF1の値が1である場合にはフリーリストFLがロックされ、ロックフラグF1の値が0である場合にはフリーリストFLがアンロックされる。
フリーリストFLは、アロケーションユニットのスケール毎のn個のフリーリスト情報FREE[1]〜FREE[n]を含む。各フリーリスト情報FREE[1]〜FREE[n]は、割当可能なメモリ領域を示す情報である。例えば、フリーリスト情報FREE[1]は、1ページのアロケーションユニットの数が2個である場合(すなわち、アロケーションユニットのスケールが1である場合)の割当可能なメモリ領域を示し、フリーリスト情報FREE[n]は、1ページのアロケーションユニットの数が2個である場合(すなわち、アロケーションユニットのスケールが最大スケールである場合)の割当可能なメモリ領域を示す。以下、フリーリスト情報FREE[n]を「最大スケール用フリーリスト情報」という。
ページポインタセクションPPSは、ページと同数(K個)のページポインタPP[1]〜PP[K]を含む。各ページポインタPP[1]〜PP[K]には、割当メモリブロックAの各ページの先頭アドレスが設定される。例えば、ページポインタPP[1]にはページ1の先頭アドレスが設定され、ページポインタPP[K]にはページKの先頭アドレスが設定される。
エントリセクションESは、アロケーションユニットと同数(K×N個)のエントリE[1,1]〜E[K,N]を含む。各エントリE[1,1]〜E[K,N]は、アロケーションユニットに1対1に対応する。例えば、エントリE[1,1]は、ページ1の1番目のアロケーションユニットAU[1,1]に対応し、エントリE[K,N]は、ページKのN番目のアロケーションユニットAU[K,N]に対応する。
各エントリE[1,1]〜E[K,N]は、アロケーションユニットAU[1,1]〜AU[K,N]のスケールを示す変数Sと、使用フラグF2と、リンクポインタLPと、を含む。使用フラグF2の値は1又は0である。使用フラグF2の値が1である場合には、各エントリE[1,1]〜E[K,N]に対応するアロケーションユニットAU[1,1]〜AU[K,N]が使用中(割当不可能)であることを示す。使用フラグF2の値が0である場合には、各エントリE[1,1]〜E[K,N]に対応するアロケーションユニットAU[1,1]〜AU[K,N]が未使用(割当可能)であることを示す。リンクポインタLPは第1リンクポインタPREVと、第2リンクポインタNEXTと、を含む。第1リンクポインタPREVには、関連付けられた前方のエントリの先頭アドレスが設定される。第2リンクポインタNEXTには、関連付けられた後方のエントリの先頭アドレスが設定される。
本実施形態に係るメモリ管理処理について説明する。図5は、本実施形態に係るメモリ管理処理の手順を示すフローチャートである。
<メモリブロック構築(S501)> メモリ管理装置13が、割当メモリブロックA及び管理メモリブロックMを共有メモリ14上に構築する。このとき、管理メモリブロックMの変数P_COUNT、変数AU_SIZE、変数AU_MAX_SCALE、及びページポインタPP[1]〜PP[K]にそれぞれ、データ処理装置15からの要求に応じた値が設定される。なお、ロックフラグF1には何も設定されない。
<初期化(S502)> 初期化部131が、メモリブロック構築(S501)において構築された管理メモリブロックMを初期化する。図6は、初期化(S502)の手順を示すフローチャートである。
<アンロック(S601)> 初期化部131が、管理メモリブロックMのロックフラグF1に0(アンロック)を設定する。
<ポインタ設定(S602)> 初期化部131が、最大スケール用フリーリスト情報FREE[n]に、ページ1の1番目のアロケーションユニットAU[1,1]へのポインタAPNT[1,1]を設定し、最大スケール用フリーリスト情報FREE[n]以外のフリーリスト情報FREE[1]〜FREE[n−1]にNULL(無効値)を設定する。
<エントリ設定(S603)> 初期化部131が、各ページの1番目のエントリE[j,1]に所定の値を設定する。具体的には、変数Sにnが設定され、使用フラグF2に0(未使用)が設定され、第1リンクポインタPREVに1つ前のページの1番目のエントリへのポインタ(以下、エントリポインタという)EPNT[j−1,1]が設定され、第2リンクポインタNEXTに1つ後のページの1番目のエントリポインタEPNT[j+1,1]が設定される。各ページの2番目以降のエントリE[j,2]〜E[j,N]には何も設定されない。これにより、図7の管理メモリブロックMが得られる。図7は、初期化(S502)において得られる管理メモリブロックMのデータ構造を示す概略図である。エントリ設定(S603)が終了すると、初期化(S502)が終了し、メモリ割当(S503)が実行される。
<メモリ割当(S503)> 割当部132が、データ処理装置15の要求に応じて所定のサイズのメモリ領域をデータ処理装置15に割り当てる。
図8は、メモリ割当(S503)の手順を示すフローチャートである。
<要求スケール計算(S801)> 割当部132が、データ処理装置15により要求されたメモリ領域のバイト単位のサイズ(以下、「要求サイズ」という)REQに基づいて、要求スケールREQ_Sを計算する。要求スケールREQ_Sは、要求サイズREQを確保するために必要なスケールである。すなわち、割当部132は、バイト単位の要求サイズREQをスケール単位の要求スケールREQ_Sに換算する。具体的には、割当部132は、要求サイズREQ及び図7の変数AU_SIZEの値ASを用いて、2×AS〜2×ASのうち、“REQ<2×AS”を満たすxの最小値を計算する。xは、要求サイズREQを確保するために必要なスケールを意味する。xの最小値が要求スケールREQ_Sである。
<ロック(S802)> 割当部132が、管理メモリブロックMのロックフラグF1に1(ロック)を設定する。なお、S802が実行される前にロックフラグF1に1が設定されている(すなわち、他のメモリ管理装置13によりフリーリストが使用されている)場合には、割当部132は、ロックフラグF1に0(アンロック)が設定されるまで待機し、ロックフラグF1に0が設定された後にロックフラグF1に1を設定する。
<S803> 割当部132が、要求スケール計算(S801)において計算された要求スケールREQ_Sに対応するフリーリスト情報FREE[REQ_S]に登録されたエントリの中から、使用フラグF2に0(未使用)が設定されているエントリ(以下、「未使用エントリ」という)を検索する。フリーリスト情報FREE[REQ_S]に未使用エントリが登録されている場合には(S803−YES)、未使用エントリ取得(S804)が実行される。フリーリスト情報FREE[REQ_S]に未使用エントリが登録されていない場合には(S803−NO)、分割(S805)が実行される。
<未使用エントリ取得(S804)> 割当部132が、フリーリスト情報FREE[REQ_S]に登録されている未使用エントリのうちフリーリストのエントリの先頭の未使用エントリに対応するアロケーションユニットと、最初の未使用エントリの変数Sと、により示される範囲のエントリを取得する。図9は、エントリEのデータ構造を示す概略図である。例えば、図9に示すように、割当部132は、ページ1の3番目のエントリE[1,3]が取得を取得する場合には、エントリE[1,3]の第2リンクポインタNEXTの値EPNT[1,4]を、エントリE[1,3]の前のエントリE[1,2]の第2リンクポインタNEXTに設定し、エントリE[1,3]の第1リンクポインタPREVの値EPNT[1,2]を、エントリE[1,3]の後のエントリE[1,4]の第1リンクポインタPREVに設定する。換言すると、割当部132は、エントリE[1,3]の前後のエントリE[1,2],E[1,3]のリンクポインタを書き換えることにより、エントリE[1,3]を取得する。次いで、割当部132は、ロックフラグF1に0を設定する(すなわち、フリーリストをアンロックする)。これにより、図10の管理メモリブロックMが得られる。図10は、未使用エントリ取得において得られる管理メモリブロックMのデータ構造を示す概略図である。
<分割(S805)> 割当部132が、擬似コードに基づいて、アロケーションユニットを分割する。図11は、分割の手順を示す擬似コードである。具体的には、割当部132は、S803で参照されたスケール(例えば、要求スケールREQ_S)より1つ大きいスケール(例えば、スケールREQ_S+1)に対応するフリーリスト情報(例えば、フリーリスト情報FREE[REQ_S+1])に登録されたエントリの中から未使用エントリを取得し、未使用エントリに対応するアロケーションユニットを分割する。換言すると、割当部132は、S803で参照されたスケールより1つ大きなスケールで要求サイズを満たすアロケーションユニットを分割する。分割(S805)が終了すると、S803が実行される。なお、S803及びS805を繰り返しても未使用エントリがない場合には、エラーと判定され、ロックフラグF1に0が設定され、メモリ管理処理が終了する。
<メモリ領域割当(S806)> 割当部132が、未使用エントリ取得(S804)において取得された未使用エントリに基づいて、メモリ領域をデータ処理装置15に割り当てる。図12は、メモリ領域割当(S806)の手順を示すフローチャートである。
<メモリ領域確保(S1201)> 割当部132が、未使用エントリ取得(S804)において取得された未使用エントリに対応する先頭アドレスpからp+2REQ_S×ASまでのメモリ領域を確保する。すなわち、確保されるメモリ領域のサイズは、2REQ_S×ASである。
<エントリポインタ登録(S1202)> 割当部132が、メモリ領域確保(S1201)において確保されたメモリ領域の末尾に、未使用エントリへのエントリポインタ(すなわち、未使用エントリの先頭アドレス)EPNTを登録する。すなわち、割当部132は、メモリ領域の末尾にメモリ領域の先頭アドレスpに該当するアロケーションユニットに対応するエントリへのエントリポインタEPNTを設ける。なお、エントリポインタ登録(S1202)は省略されても良い。
<リファレンスカウンタ登録(S1203)> 割当部132が、エントリポインタ登録(S1202)において登録されたエントリポインタの前に、メモリ管理装置13と同数のリファレンスカウンタ(すなわち、複数のプロセッサ12a,12bと1対1に対応する複数のリファレンスカウンタ)を登録する。例えば、プロセッサ12a,12bがそれぞれメモリ管理装置13を実現する(すなわち、2つのメモリ管理装置13が実現される)場合には、リファレンスカウンタRCaがプロセッサ12aに対応し、リファレンスカウンタRCbがプロセッサ12bに対応する。このとき、複数のリファレンスカウンタRCa,RCbには、0(初期値)が設定される。なお、エントリポインタ登録(S1202)が省略される場合には、複数のリファレンスカウンタは、メモリ領域確保(S1201)において確保されたメモリ領域の末尾に登録される。
<リファレンスカウンタ設定(S1204)> 割当部132が、メモリ領域割当(S806)の対象となるメモリ管理装置13を実現するプロセッサに対応するリファレンスカウンタに1を設定する。例えば、プロセッサ12aにより実現されるメモリ管理装置13がメモリ領域割当の対象である場合には、プロセッサ12aに対応するリファレンスカウンタRCaに1が設定される。
<レスポンス(S1205)> 割当部132が、未使用エントリ取得(S804)において取得された未使用エントリに対応する先頭アドレスpをデータ処理装置15に返すためのレスポンスを発行する。これにより、メモリ領域がデータ処理装置15に割り当てられる。図13は、メモリ領域割当において得られるメモリ領域のデータ構造を示す概略図である。データ処理装置15に割り当てられるメモリ領域は、図13に示すように、データ処理装置15により取り扱われるデータ(例えば、画像データ)を格納するためのデータブロックDと、各プロセッサ12a,12bに対応するリファレンスカウンタRCa,RCbと、未使用エントリへのエントリポインタEPNTと、を含む。すなわち、割当部132は、各プロセッサ12a,12bの要求に基づいて、各プロセッサ12a,12bに割り当てられる共有メモリ14のメモリ領域を確保し、各メモリ領域に複数のプロセッサ12a,12bと1対1に対応する複数のリファレンスカウンタRCa,RCbを設ける。レスポンス(S1205)が終了すると、メモリ割当(S503)が終了し、メモリ共有(S504)が実行される。
<メモリ共有(S504)> 共有部133が、データのコピーを避けるために、複数のデータ処理装置15が割り当てられたメモリ領域を共有できるようにする。図14は、メモリ共有(S504)の手順を示すフローチャートである。
<探索(S1401)> 探索部134が、メモリ割当(S503)においてデータ処理装置15に割り当てられたメモリ領域に対応するエントリを探索する。図15は、探索(S1401)の手順を示すフローチャートである。
<基準スケール決定(S1501)> 探索部134が、基準スケールSrを決定する。基準スケールSrの値は、スケールの最小値1又はスケールの最大値nである。例えば、探索部134は、基準スケールSrをnに決定する。
<末尾アドレス計算(S1502)> 探索部134が、基準スケール決定(S1501)において決定した基準スケールSr及び未使用エントリ取得(S804)において取得された未使用エントリの先頭アドレスpを用いて、基準スケールSrに対応する仮のエントリEvの仮の末尾アドレスqvを計算する。
<エントリポインタ計算(S1503)> 探索部134が、末尾アドレス計算(S1502)において計算された仮の末尾アドレスqvに基づいて、仮のエントリEvへの仮のエントリポインタEPNTvを計算する。
<先頭アドレス計算(S1504)> 探索部134が、末尾アドレス計算(S1502)において計算された仮の末尾アドレスqvを用いて、仮のエントリEvの先頭アドレスpvを計算する。これにより、仮のエントリEvが得られる。図16は、先頭アドレス計算において得られる仮のエントリEvのデータ構造を示す概略図である。仮のエントリEvは、仮のスケールSvと、仮の使用フラグF2vと、仮のリンクポインタLPvと、を含む。仮の先頭アドレスpv及び仮の末尾アドレスqvは、仮のエントリEvが仮の先頭アドレスpvから仮の末尾アドレスqvに格納されたエントリであることを意味する。
<S1505> 探索部134が、先頭アドレス計算(S1504)において計算された仮の先頭アドレスpvと、未使用エントリ取得(S804)において取得された未使用エントリの先頭アドレスpと、を照合する。仮の先頭アドレスpvが未使用エントリの先頭アドレスpと一致する場合には(S1505−YES)、S1506が実行される。仮の先頭アドレスpvが未使用エントリの先頭アドレスpと一致しない場合には(S1505−NO)、基準スケール変更(S1511)が実行される。
<S1506> 探索部134が、基準スケール決定(S1501)において決定された基準スケールSrと仮のスケールSvとを照合する。仮のスケールSvが基準スケールSrと一致する場合には(S1506−YES)、S1507が実行される。仮のスケールSvが基準スケールSrと一致しない場合には(S1506−NO)、基準スケール変更(S1511)が実行される。
<S1507> 探索部134が、エントリポインタ計算(S1503)において計算された仮のエントリポインタEPNTvに対応する実際のエントリEの使用フラグF2が1であるか否かを判定する。仮のエントリポインタEPNTvに対応する実際のエントリEの使用フラグF2が1である場合には(S1507−YES)、スケール決定(S1508)が実行される。仮のエントリポインタEPNTvに対応する実際のエントリEの使用フラグF2が0である場合には(S1507−NO)、メモリ管理処理が終了する。
<スケール決定(S1508)> 探索部134が、基準スケール決定(S1501)において決定した基準スケールSrを、未使用エントリ取得(S804)において取得された未使用エントリの先頭アドレスpに対応するスケールとして決定する。すなわち、探索部134は、エントリポインタEPNTに基づいて、メモリ領域のスケールを決定する。スケール決定(S1508)が終了すると、エントリの探索が終了し、リファレンスカウンタ更新(S1402)が実行される。
<基準スケール変更(S1511)> 探索部134が、基準スケールSrの値を変更する。具体的には、解放部135は、基準スケールSrの値から1を減算又は基準スケールSrの値に1を加算する。基準スケール変更(S1511)が終了すると、末尾アドレス計算(S1502)が実行される。
<リファレンスカウンタ更新(S1402)> 更新部136が、メモリ管理装置13を実現するプロセッサに対応するリファレンスカウンタの値に1を加算する。すなわち、更新部136は、メモリ領域を各プロセッサ12a,12bに割り当てるときに、メモリ領域を管理するプロセッサに対応するリファレンスカウンタの値に1を加算する。例えば、プロセッサ12aがメモリ管理装置13を実現する場合には、更新部136は、プロセッサ12aに対応するリファレンスカウンタRCaの値に1を加算する。リファレンスカウンタ更新(S1402)が終了すると、メモリ共有(S504)が終了し、メモリ解放(S505)が実行される。
<メモリ解放(S505)> 解放部135が、メモリ領域をデータ処理装置15から解放する。図17は、メモリ解放(S505)の手順を示すフローチャートである。
<探索(S1701)> 探索部134が、S1401と同様に、探索を実行する。
<リファレンスカウンタ更新(S1702)> 更新部136が、メモリ管理装置13を実現するプロセッサに対応するリファレンスカウンタの値から1を減算する。すなわち、更新部136は、共有メモリ14が割り当てられたプロセッサからメモリ領域を解放するときに、メモリ領域を管理するプロセッサに対応するリファレンスカウンタの値から1を減算する。例えば、プロセッサ12aがメモリ管理装置13を実現する場合には、更新部136は、プロセッサ12aに対応するリファレンスカウンタRCaの値から1を減算する。
<S1703> 解放部135が、全てのリファレンスカウンタ(例えば、リファレンスカウンタRCa,RCb)の値の合算結果が0であるか否かを判定する。合算結果が0である場合には(S1703−YES)、フリーリスト返却(S1704)が実行される。合算結果が0でない場合には(S1703−NO)、メモリ管理処理が終了する。すなわち、解放部135は、更新部136により更新されたメモリ領域における複数のリファレンスカウンタの値の合算結果が0である場合に、メモリ領域が割り当てられたプロセッサからメモリ領域を解放する。
<フリーリスト返却(S1704)> 解放部135が、フリーリストを返却する。図18は、フリーリスト返却(S1704)の手順を示すフローチャートである。
<ロック(S1801)> 解放部135が、ロックフラグF1に1(ロック)を設定する。なお、ロックフラグF1に1が設定されている(すなわち、他のメモリ管理装置13によりフリーリストが使用されている)場合には、解放部135は、ロックフラグF1に0(アンロック)が設定されるまで待機し、ロックフラグF1に0が設定された後にロックフラグF1に1を設定する。
<使用フラグ設定(S1802)> 解放部135が、仮のエントリポインタEPNTvに対応する実際のエントリEの使用フラグF2に0(未使用)を設定する。
<併合(S1803)> 解放部135が、擬似コードに基づいて、アロケーションユニットを併合する。図19は、併合の手順を示す擬似コードである。図19の擬似コードは、図11の擬似コードにより表される分割(S805)と逆の処理により、併合が実行されることを表す。
<アンロック(S1804)> 解放部135が、ロックフラグF1に0を設定する。アンロックが終了すると、メモリ管理処理が終了する。
本実施形態に係るメモリ管理装置13の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、メモリ管理装置13の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
また、本実施形態に係るメモリ管理装置13の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
10 マルチプロセッサシステム
12a,12b プロセッサ
13 メモリ管理装置
131 初期化部
132 割当部
133 共有部
134 探索部
135 解放部
136 更新部
14 共有メモリ
15 データ処理装置
16 接続線(バス又はインターコネクト)

Claims (5)

  1. 複数のプロセッサにより共有される共有メモリを管理するメモリ管理装置であって、
    各プロセッサの要求に基づいて、前記各プロセッサに割り当てられる前記共有メモリのメモリ領域を確保し、各メモリ領域に前記複数のプロセッサと1対1に対応する複数のリファレンスカウンタを設ける割当部と、
    各メモリ領域を前記各プロセッサに割り当てるときに、前記メモリ領域を管理するプロセッサに対応する前記リファレンスカウンタの値に1を加算し、前記メモリ領域が割り当てられたプロセッサから前記メモリ領域を解放するときに、前記メモリ領域を管理するプロセッサに対応する前記リファレンスカウンタの値から1を減算する更新部と、
    前記更新部により更新されたメモリ領域における前記複数のリファレンスカウンタの値の合算結果が0である場合に、前記メモリ領域が割り当てられたプロセッサから前記メモリ領域を解放する解放部と、
    を備えることを特徴とするメモリ管理装置。
  2. 割当メモリブロックおよび管理メモリブロックを有する共有メモリと、
    前記共有メモリを共有する複数のプロセッサと、を備え、
    各プロセッサは、
    前記各プロセッサの要求に基づいて、前記各プロセッサに割り当てられる前記共有メモリのメモリ領域を確保し、各メモリ領域に前記複数のプロセッサと1対1に対応する複数のリファレンスカウンタを設ける割当部と、
    前記メモリ領域を前記各プロセッサに割り当てるときに、前記メモリ領域を管理するプロセッサに対応する前記リファレンスカウンタの値に1を加算し、前記メモリ領域が割り当てられたプロセッサから前記メモリ領域を解放するときに、前記メモリ領域を管理するプロセッサに対応する前記リファレンスカウンタの値から1を減算する更新部と、
    前記更新部により更新された複数のリファレンスカウンタの値の合算結果が0である場合に、前記メモリ領域が割り当てられたプロセッサから前記メモリ領域を解放する解放部と、
    を備えることを特徴とするマルチプロセッサシステム。
  3. 前記割当部は、前記メモリ領域の末尾に、前記メモリ領域の先頭アドレスに該当するアロケーションユニットに対応するエントリへのエントリポインタを設け、前記エントリポインタの前に前記複数のリファレンスカウンタを設ける、請求項2に記載のマルチプロセッサシステム。
  4. 前記探索部は、前記エントリポインタに基づいて、基準スケールを決定し、前記基準スケール及び未使用エントリの先頭アドレスを用いて、前記基準スケールに対応する仮のエントリの仮の末尾アドレスを計算し、前記仮の末尾アドレスに基づいて前記仮のエントリへの仮のエントリポインタ及び前記仮のエントリへの先頭アドレスを計算し、前記仮の先頭アドレス及び前記未使用エントリの先頭アドレスと、前記基準スケール及び前記仮のエントリの仮のスケールと、を照合し、その照合結果に基づいて前記メモリ領域のスケールを決定する、請求項3に記載のマルチプロセッサシステム。
  5. 前記割当部は、前記割当メモリブロックの各ページの先頭アドレスと、アロケーションユニットのスケールと、前記アロケーションユニットのスケール毎に割当可能なメモリ領域を示すフリーリスト情報と、を前記管理メモリブロックに設定する、請求項2乃至4の何れか1項に記載のマルチプロセッサシステム。
JP2010239488A 2010-10-26 2010-10-26 メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法 Withdrawn JP2012093882A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010239488A JP2012093882A (ja) 2010-10-26 2010-10-26 メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法
US13/027,482 US9104636B2 (en) 2010-10-26 2011-02-15 Processor, multiprocessor system, and method for causing memory managing apparatus to manage shared memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010239488A JP2012093882A (ja) 2010-10-26 2010-10-26 メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法

Publications (1)

Publication Number Publication Date
JP2012093882A true JP2012093882A (ja) 2012-05-17

Family

ID=45973960

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010239488A Withdrawn JP2012093882A (ja) 2010-10-26 2010-10-26 メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法

Country Status (2)

Country Link
US (1) US9104636B2 (ja)
JP (1) JP2012093882A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016006942A (ja) * 2014-06-20 2016-01-14 富士通株式会社 テーブル管理装置,及びテーブル管理方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956322B2 (en) * 2016-06-02 2021-03-23 International Business Machines Corporation Storage drive dependent track removal in a cache for storage
FR3061586A1 (fr) * 2016-12-30 2018-07-06 Idemia France Procede de controle d'habitudes d'utilisation et dispositif electronique apte a mettre en œuvre un tel procede
CN112817736B (zh) * 2019-11-15 2022-10-21 荣耀终端有限公司 一种内存的管理方法及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE9702733L (sv) * 1997-07-16 1999-01-17 Axis Ab Digitalt minneshanteringssystem
US7793055B2 (en) * 2006-08-04 2010-09-07 Apple Inc. Transferring memory buffers between multiple processing entities
KR101344475B1 (ko) * 2007-01-05 2013-12-24 삼성전자주식회사 메모리 관리방법 및 장치
JP2009181213A (ja) 2008-01-29 2009-08-13 Toshiba Corp メモリ管理装置
JP5270924B2 (ja) 2008-01-30 2013-08-21 株式会社東芝 固定長メモリブロック管理装置及び固定長メモリブロック管理装置の制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016006942A (ja) * 2014-06-20 2016-01-14 富士通株式会社 テーブル管理装置,及びテーブル管理方法

Also Published As

Publication number Publication date
US9104636B2 (en) 2015-08-11
US20120102274A1 (en) 2012-04-26

Similar Documents

Publication Publication Date Title
JP6897574B2 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
CN107844267B (zh) 缓冲区分配和存储器管理
US20170344398A1 (en) Accelerator control device, accelerator control method, and program storage medium
US20110202929A1 (en) Method and system for parallelizing database requests
JP2012093882A (ja) メモリ管理装置、マルチプロセッサシステム、及びメモリ管理方法
US9875139B2 (en) Graphics processing unit controller, host system, and methods
JP5533315B2 (ja) 情報処理システム、管理装置、処理要求装置及びプログラム
JP2005031929A (ja) サーバに記憶領域を割り当てる管理サーバ、記憶装置システム、及びプログラム
CN1068434A (zh) 一条多处理器流水线的动态工作量平衡
US20150213073A1 (en) Using parallel insert sub-ranges to insert into a column store
US9389997B2 (en) Heap management using dynamic memory allocation
US9047121B2 (en) System and method for scheduling jobs in a multi-core processor
US20180046398A1 (en) Repartitioning data in a distributed computing system
JP6724908B2 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
US20210264257A1 (en) AI Accelerator Virtualization
US10334028B2 (en) Apparatus and method for processing data
WO2021071930A1 (en) Redistributing tensor elements between machine learning computing units
ES2837458T3 (es) Método y sistema de procesamiento de datos para la modificación de bases de datos
CN112805683A (zh) 使用流借用的流分配
US11144207B2 (en) Accelerating memory compression of a physically scattered buffer
US20150006341A1 (en) Billing transaction scheduling
US7788463B2 (en) Cyclic buffer management
US20120272035A1 (en) Storage apparatus and data control method of the same
AU2017422723B2 (en) Data loading program, data loading method, and data loading apparatus
US10367886B2 (en) Information processing apparatus, parallel computer system, and file server communication program

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140107