JP2011204233A - バッファマネージャおよびメモリ管理方法 - Google Patents

バッファマネージャおよびメモリ管理方法 Download PDF

Info

Publication number
JP2011204233A
JP2011204233A JP2011045565A JP2011045565A JP2011204233A JP 2011204233 A JP2011204233 A JP 2011204233A JP 2011045565 A JP2011045565 A JP 2011045565A JP 2011045565 A JP2011045565 A JP 2011045565A JP 2011204233 A JP2011204233 A JP 2011204233A
Authority
JP
Japan
Prior art keywords
buffer
soc
ibpp
addresses
client component
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.)
Granted
Application number
JP2011045565A
Other languages
English (en)
Other versions
JP5789894B2 (ja
Inventor
Alon Pais
パイス アロン
Nafea Bishara
ビシャラ ナフェア
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.)
Marvell World Trade Ltd
Marvell Israel MISL Ltd
Original Assignee
Marvell World Trade Ltd
Marvell Israel MISL Ltd
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 Marvell World Trade Ltd, Marvell Israel MISL Ltd filed Critical Marvell World Trade Ltd
Publication of JP2011204233A publication Critical patent/JP2011204233A/ja
Application granted granted Critical
Publication of JP5789894B2 publication Critical patent/JP5789894B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/10Indexing scheme relating to groups G06F5/10 - G06F5/14
    • G06F2205/106Details of pointers, i.e. structure of the address generators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

【課題】従来はプロセッサコアで行われてきたバッファ管理をプロセッサコアの処理から開放する。
【解決手段】バッファ管理ユニット24において、システムオンチップ(SOC)10の複数のバッファアドレスを管理する段階と、SOC10における利用可能なバッファアドレスの数が低い閾値を下回る場合、SOC10の外部にあるメモリ44から1以上のバッファアドレスをSOC10で取得する段階と、SOC10における利用可能なバッファアドレスの数が高い閾値を上回る場合、別の1以上のバッファアドレスをSOC10からメモリ44に分配する段階とを備える。
【選択図】図1

Description

本開示の実施形態は、概してバッファに係り、より詳しくは、バッファマネージャおよびメモリ管理方法に係る。
[関連出願]
本願は、2010年3月18日に提出された米国特許出願第61/615,327号および2010年5月25日に提出された米国特許出願第61/347,947号の優先権を主張しており、本明細書と矛盾する箇所を除いて、これらの明細書全体をここに全ての目的で参照として組み込む。本願は、2010年11月16日に提出された米国特許出願第12/947678号(MP3444)、2011年3月1日に提出された米国特許出願第13/038,279号(代理人整理番号MP3599)、および2011年3月1日に提出された米国特許出願第13/038,258号(代理人整理番号MP3580)に関連しており、本明細書と矛盾する箇所を除いて、これらの明細書全体をここに全ての目的で参照として組み込む。
そうではないと明記しない限り、このセクションで記載される方法は、本開示の請求項に対する先行技術ではなく、このセクションに含まれる事項を先行技術であると自認したと解釈されるべきではない。
従来のコンピューティングシステムでは、バッファ管理は概してプロセッサコアで行われてきた。例えばプロセッサコアはデータをバッファするためにバッファを分配し、バッファされたデータがバッファから取り除かれたときにバッファを解放している。これらの処理により、プロセッサコアのリソースが大量に消費される。
様々な実施形態において、本開示は、システムオンチップ(SOC)の複数のバッファアドレスを管理する段階と、SOCにおける利用可能なバッファアドレスの数が低い閾値を下回る場合、SOCの外部にあるメモリから1以上のバッファアドレスをSOCで取得する段階とを備える方法を提供する。SOCにおける利用可能なバッファアドレスの数が高い閾値を上回る場合、別の1以上のバッファアドレスをSOCからメモリに分配する段階をさらに備える。クライアントコンポーネントと、バッファ管理ユニット(BMU)とを備え、バッファ管理ユニット(BMU)は、内部バッファポインタプール(IBPP)と、コントローラとを有し、コントローラは、IBPPにおける未割り当てのバッファポインタの数を監視して、IBPPにおける未割り当てのバッファポインタの数が閾値を下回る場合、外部バッファポインタプール(EBPP)からIBPPに1以上のバッファポインタを分配するシステムオンチップ(SOC)も適用される。さらに、各BPPが内部バッファポインタプール(IBPP)と外部バッファポインタプール(EBPP)とに論理的に分割される複数のバッファポインタプール(BPP)を維持する段階と、各BPPについて、対応するIBPPに複数のバッファポインタを動的に分配し、対応するEBPPに別の複数のバッファポインタを動的に分配する段階とを備える方法も提供される。
以下の詳細な記載は図面を参照しながら行われるが、図面は本明細書の一部を構成するものであり、全図面にわたり同様の参照番号は同様の部材を示し、図面は本開示の原理を示す実施形態の形で示されている。また、他の実施形態の利用も可能であり、本開示の範囲を逸脱せずとも構造上および論理上の変更が可能である。従って以下の詳細な記載は限定的に捉えられるべきではなく、本開示における実施形態の範囲は、添付請求項およびそれらの均等物によってのみ定義されるべきである。
本開示の一実施形態における、バッファ管理ユニットを含むシステムオンチップを含むパケット通信システムを概略する。
本開示の一実施形態における図1のパケット通信システムの例示的な外部バッファポインタプールを概略する。
本開示の一実施形態における、図1のバッファ管理ユニットをより詳細に概略する。
本開示の一実施形態における図1および図3のパケット通信システムを作動させる例示的な方法を示す。
本開示の一実施形態における図1および図3のパケット通信システムを作動させる別の例示的な方法を示す。
図1は、本開示の一実施形態における、バッファ管理ユニット(BMU)24を含むシステムオンチップ(SOC)10を含むパケット通信システム100(システム100と称する場合もある)の一部を選択して概略する。本開示の教示を曖昧にしない配慮から、図面にはシステム100の別の部分を示さない。示されているSOC10は、さらに1以上のプロセッサコア(例えばプロセッサコア12a、…、プロセッサコア12M、Mは適切な正の整数である)を含む。
システム100は、1以上のネットワークインタフェース(例えばネットワークインタフェース16a、ネットワークインタフェース16b、…、ネットワークインタフェース16P、Pは適切な正の整数である)を含む。図1に示す通り、ネットワークインタフェースの1以上(例えばネットワークインタフェース16b)は、SOC10の外部にあり、残りのネットワークインタフェースのうちの1以上(例えばネットワークインタフェース16a、ネットワークインタフェース16b、…、ネットワークインタフェース16P)は、SOC10の内部にある。一実施形態では、ネットワークインタフェース16a、…、16Pは、ネットワークスイッチ、ネットワークルータ、ネットワークポート、イーサネット(登録商標)ポート(ギガバイトイーサネット(登録商標)ポート)、ネットワークコントローラ、その他のネットワーク接続および/またはその他を有する適切なデバイス等のネットワークデバイスである。一実施形態では、SOC10は、ネットワークスイッチまたはルータに関連付けられている。例えばネットワークスイッチは、SOC10上に位置していてよい。
一実施形態では、SOC10はさらに、ネットワークインタフェース16a、…、16P、プロセッサコア12a、…、12M、BMU24、およびメモリコントローラ40に動作可能に連結された共有バス20を含む。様々な他の実施形態では、図1には示されていないが、共有バス20の代わりに、SOC10が、複数のバス(例えばSOC10の2つのコンポーネント間の専用バス、SOC10の幾らかのコンポーネントにより共有されるバス等)を含む。メモリコントローラ40は、メモリ44に動作可能に連結されてこれを制御する。一実施形態では、メモリコントローラ40は、1以上のコンポーネントから(例えば、BMU24、複数のプロセッサコアおよび/または複数のネットワークインタフェースうちの1つから)、共有バス20を介してメモリ44に対して命令の読み書きを行い、受信した命令をメモリ44が許可できるフォーマットに翻訳する。つまり、メモリコントローラ40は、共有バス20を介して、メモリ44とシステム100の様々な他のコンポーネントとの間のインタフェースとして機能する。図1に示すように、一実施形態では、メモリ44はSOC10の外部にあるが、他の実施形態では、メモリ44がSOC10の内部にある。一実施形態では、メモリ44は、DRAM(例えばDDR3、SDRAM))である。
SOC10は通常様々な他のコンポーネント(例えば1以上の周辺機器、インタフェース、および/またはその他)を含むが、明瞭性を期す目的からこれらのコンポーネントは図1から省いている。例えば、図1には示していないが、SOC10は、データパケットストリームを処理するパケット処理モジュールを含み、1以上のパケット処理機能(例えばデータパケットのブリッジ)を行う。同様に図1には示していないが、SOC10は、様々な周辺機器および物理層コンポーネント(シリアライザ/デシリアライザ(SERDES)モジュール、1以上のポート、ネットワークスイッチ等)を含む。一実施形態では、SOC10は、SOC10のアプリケーション領域に基づく様々な他のコンポーネントを含む。
一実施形態では、メモリ44は、複数のバッファ位置(例えばバッファ位置50_a1, …, 50_aR, 50_b1, …, 50_bS, …, 50_N1, …, 50_NT、R、S、TおよびNは適切な正の整数である)を含む。メモリ44に含まれるバッファ位置各々は、1以上のバイトのデータをバッファする。例えば、各バッファ位置50_a1, …, 50_aRは、32バイトのデータを格納し、各バッファ位置50_b1, …, 50_bSは、256バイトのデータを格納し、各バッファ位置50_N1, …, 50_NTは、1056バイトのデータを格納する、といった具合である。一実施形態では、図示されているバッファ位置のうち1以上が、メモリ44内で連続するバッファ位置である。
プロセッサコア12a…、プロセッサコア12M、ネットワークインタフェース16a、…、および/またはネットワークインタフェース16P(および/または、図1に示していないSOC10の1以上の他のコンポーネント(例えばSOC10のインタフェースコントローラ、SOC10のエンジン等))は、BMU24からサービスを受け(BMU24がこれらコンポーネントのうち1以上に対してバッファ位置を分配する)、プロセッサコア12a、…、プロセッサコア12M、ネットワークインタフェース16a、…、および/またはネットワークインタフェース16P(および/またはBMU24からサービスを受ける任意の他のコンポーネント)も、本明細書ではBMU24のクライアントコンポーネントと称する。BMU24のクライアントコンポーネントがデータパケットを受信して、データパケットをバッファしようとする場合、クライアントコンポーネントは、バッファ位置の分配要求(本明細書ではバッファ位置分配要求またはバッファ分配要求とも称する)をBMU24に送信する。後述するように、分配要求に基づいて、BMU24は、クライアントコンポーネントにバッファ位置を分配する。
一実施形態では、BMU24は、複数のバッファポインタプール(BPP)に関連付けられ、各BPPはバッファポインタのリストを含み、バッファポインタは、メモリ44における対応するバッファ位置のアドレスまたはポインタである。例えば、図1には示していないが、システム100は、BPP_a, …, BPP_N(つまり、N個のBPP)を含む。各BPPは、内部バッファポインタプール(IBPP)および外部バッファポインタプール(EBPP)という2つの論理セクションに分割される。図1は、IBPPおよびEBPPのみを示し、BPPは示していない。例えば、BPP_aがIBPP32aおよびEBPP36aに分割され、BPP_bがIBPP32bおよびEBPP36bに分割され、BPP_NがIBPP32NおよびEBPP36Nに分割される、といった具合である。図1に示すように、様々なBPPのIBPP(つまりIBPP32a、IBPP32b、…、IBPP32N)が、BMU24の内部に格納される。図1に示すように、様々なBPPのEBPP(つまりEBPP36a、EBPP36b、…、EBPP36N)は、BMU24の外部の位置に(例えばメモリ44に)格納される。
後で詳述するように、一実施形態では、BMU24は、各IBPPについて、IBPP(例えばIBPP32a)における未割り当てのバッファポインタ(例えば、いずれのクライアントコンポーネントにも割り当てられておらず、クライアントコンポーネントに対する割り当ての準備が整っているもの)の数を監視するBMUコントローラ28を含む。例えば、未割り当てのバッファポインタは、分配の準備が整っている対応するバッファアドレスを含む。図1には示していないが、一実施形態では、BMUコントローラ28は、各IBPPについて、高い閾値および低い閾値を維持する(別の実施形態では、BMUコントローラ28は、2以上のIBPP間で高い閾値および低い閾値を共有する)。後で詳述するように、BMUコントローラ28は、各BPPについて、対応するIBPPおよび対応するEBPP間でバッファポインタを動的に転送して、IBPP内の未割り当てのバッファポインタの数を、対応する低い閾値と高い閾値との間に維持する。例えば、IBPP内の未割り当てのバッファポインタの数が低い閾値を下回った場合、BMUコントローラ28は、対応するEBPP(例えばEBPP36a)からIBPP32aに1以上のバッファポインタを分配する。他方で、IBPP内の未割り当てのバッファポインタの数が高い閾値レベルを超えた場合には、BMUコントローラ28は、IBPP32aからEBPP36aへ別の1以上のバッファポインタを分配する。従ってBMUコントローラ28は、各IBPPについて、1以上のクライアントコンポーネントに対して少なくとも幾つかの未割り当てのバッファポインタの分配準備が整っているようにする(尤も、一実施形態では、IBPPおよび対応するEBPPの両方に未割り当てのバッファポインタが残っていない場合、IBPPは分配準備が整ったバッファポインタを持たない場合もある)。つまり、SOC10でローカルに管理される少なくとも幾つかのバッファを、常にクライアントコンポーネントに対する分配準備が整った状態にしておく。
図1には示していないが、一実施形態では、EBPP36a、…、36Nは、バッファ位置50_a1, …, 50_NTが含まれているメモリとは異なるメモリに格納される。例えば、EBPP36a、…、36Nおよびバッファ位置50_a1, …, 50_NTが、2以上の異なるメモリに格納される。一実施形態では、1以上のバッファ位置がそれぞれ異なるメモリにあってよい(例えば、図1には示していないが、バッファ位置50_a1がメモリ44にあり、バッファ位置50_b1がメモリ44とは異なるメモリ(SOC10の内部または外部いずれであってもよい)にあってよい)。
前述したように、各BPPは、バッファポインタのリストを含み、ここでバッファポインタは、対応するバッファ位置のアドレスまたはポインタである。例えばBPP_aが、バッファ位置50_a1, 50_a2, …, 50_aRに対応するR個のバッファポインタを含み、BPP_bがバッファ位置50_b1, 50_b2, …, 50_bSに対応するS個のバッファポインタを含み、BPP_Nが、バッファ位置50_N1, 50_N2, …, 50_NTに対応するT個のバッファポインタを含む、といった具合である。
BMU24は、BPPに関連するバッファポインタをEBPPからIBPPへ、および/またはIBPPからEBPPへ、動的に分配するBMUコントローラ28を含む。一実施形態では、BMUコントローラ28は、各IBPPに対応してカウントMを格納する。例えば、BMUコントローラ28は、IBPPa、…IBPPNに対応してカウントMa、…、MNを格納する。一実施形態では、後で後述するように、IBPPに対応するカウント(例えば、IBPPaに対応するカウントMa)は、IBPPにおける未割り当てのバッファポインタのカウント(例えば、未割り当てのバッファポインタの数)を維持する。BMU24は、図1では明瞭性を期す目的から示されていない1以上の他のコンポーネント(例えば送信ポート、受信ポート、送信キュー等)も含む。
各BPPについて、BMU24(および/またはプロセッサコア12a、プロセッサコア12b、および/または、システム100の任意の他の適切なコンポーネント)は(例えばシステム100の起動時に)、BPPのバッファポインタの一部を対応するIBPPに割り当て、BPPの残りのバッファポインタを対応するEBPPに分配する。例えば、BPP_aに含まれるR個のバッファポインタのうち、R1個のバッファポインタがIBPP32aに動的に分配され、残りのR2個のバッファポインタがEBPP36aに分配される。
クライアントコンポーネント(例えば、図1のプロセッサコアおよび/またはネットワークインタフェース、および/またはSOC10の内部または外部にあってよいシステム100の任意の他の適切なコンポーネントのいずれか)がバッファ位置にデータパケットをバッファする必要がある場合、クライアントコンポーネントはBMU24にバッファ分配要求を送信する。受信したバッファ分配要求に基づいて、BMU24は、バッファポインタを適切なIBPPからクライアントコンポーネントに割り当てることにより、クライアントコンポーネントにバッファ位置を割り当てる。
IBPPに分配された個々のバッファポインタは、IBPPリストに追加され、これらは未割り当てである(例えば、いずれのクライアントにも割り当てられていないが、クライアントコンポーネントへの割り当て準備が整っている)。IBPPからの未割り当てのバッファポインタ(例えば、バッファ位置50_a2に対応する、IBPP32aからのバッファポインタ)をクライアントコンポーネントに割り当てる場合、このバッファポインタをIBPPリストから除外して、IBPPにおける未割り当てのバッファポインタの数を1減少させる。バッファポインタがクライアントコンポーネントに割り当てられると、クライアントコンポーネントは、対応するバッファ位置に(例えばバッファ位置50_a2に)データパケットを格納したり書き込んだりすることができるようになる。
他方で、バッファ位置(例えばバッファ位置50_a2)のコンテンツを、クライアントコンポーネントが読み出す場合には、バッファ位置は自由になる(つまり、将来の格納に利用可能となる)。従って、BMU24により対応するバッファポインタ(以前にクライアントコンポーネントに対して割り当てられたもの)が解放され(つまり、バッファポインタがIBPPに追加され、「未割り当て」と示される)、このバッファポインタが将来の割り当てに利用可能とされる。つまり、バッファ位置からの読み出しに基づいて、対応するバッファポインタを解放し、これにより、対応するIBPPの未割り当てのバッファポインタ数が増加する(例えば1増加する)。
前述したように、IBPPに対応するカウント(例えばIBPPaに対応するカウントMa)は、IBPPの未割り当てのバッファポインタのカウントを維持する。一実施形態では、IBPP内の未割り当てのバッファポインタ数が、対応する低い閾値よりも減少すると(例えば、IBPPから1以上のクライアントコンポーネントへのバッファポインタの割り当てによって減少すると)、BMU24は、1以上のバッファポインタを、対応するEBPPからIBPPへ再分配する。例えば、IBPP32aから1以上のクライアントコンポーネントに対するバッファポインタの割り当てにより、IBPP32a内の未割り当てのバッファポインタ数が低い閾値よりも減少する場合がある。IBPP32a内の未割り当てのバッファポインタ数が低い閾値よりも減少すると、複数のバッファポインタを対応するEBPP(つまりEBPP36a)からIBPP32aへ再分配する。この複数の再分配を行われるバッファポインタ(例えば32個のバッファポインタ)は、EBPP36aからIBPP32aへ送信され、IBPP32aに格納され、1以上のクライアントへの将来の分配に備えさせる。このようにバッファポインタをEBPPから対応するIBPPへ再分配することにより、1以上のクライアントコンポーネントに対する分配準備が整ったバッファポインタが少なくとも幾つか常にIBPPに存在するようすることができる(つまり、幾つかの未割り当てのバッファポインタが常にIBPP内に存在するようにすることができる)。言い換えると、少なくとも幾つかのバッファが、クライアントコンポーネントへの分配準備が整った状態で、常にSOCでローカルに管理されていることになる。
他方で、1以上のクライアントコンポーネントがバッファポインタを解放すると、IBPP内の未割り当てのバッファポインタ数が対応する高い閾値より増加することがある。IBPP内の未割り当てのバッファポインタ数が高い閾値より増加した場合には、IBPPの複数のバッファポインタを対応するEBPPに再分配する。このようにバッファポインタを再分配することにより、IBPPが未割り当てのバッファポインタで溢れることがなくなり、BMU24内の全てのIBPPが必要とする格納スペースを比較的制限することができる。つまり、SOCでローカルに管理されるバッファの数を制限して、SOC上での管理容易性を維持することができる。
一実施形態では、低い閾値および高い閾値は設定可能である。例えば、常にIBPP内に未割り当てのバッファポインタが存在するよう、また、IBPPのバッファポインタを格納するためにSOC10で必要とされる格納スペースを比較的小さくするよう、低い閾値および高い閾値を設定することができる。
IBPPおよび対応するEBPP間のバッファポインタの送信(例えば、バッファポインタを再分配する間の)は、バッファポインタのバッチで行われてよい。例えば、32個のバッファポインタが、EBPP36aからIBPP32aへ、またこの逆方向に、単一のバッチとして再分配を行われ送信される(例えば32個のバッファポインタが、EBPP36aからIBPP32aへ、またはこの逆方向に、単一の処理または単一の送信で送信される)。一実施形態では、このようなバッファポインタのバッチ送信(例えば、32個のバッファポインタを別個に送信する代わりに)によって、メモリ44に対する処理数、バス20への負荷、メモリコントローラ40への負荷、および/または送信の帯域幅要件を減少させることができる。
一実施形態では、場合によって、1以上のバッファポインタをEBPPから直接1以上のクライアントコンポーネントに割り当てることができる。例えば、対応するEBPPからIBPPへのバッファポインタのバッチの再分配および送信の前にIBPP内の未割り当てのポインタが枯渇すると(例えば、クライアントコンポーネントに対して幾つかのバッファポインタを高速に割り当てることにより高速に枯渇する場合等)、1以上のバッファポインタをEBPPから直接1以上のクライアントコンポーネントに割り当てることができる。
別の実施形態では、SOC10は、例えばSOC10の外部から生じた複数のトラフィックの流れから受信したデータパケットを処理する。SOC10が処理するデータパケットのサイズは場合によって大きく変わりうる。一実施形態では、バッファポインタに割り当てるためのIBPPの選択を、バッファされるデータパケットのサイズに少なくとも部分的に基づいて行う。例えば、単一のBPPに関連付けられる個々のバッファ位置は同様のサイズであるが、異なるBPPに関連付けられるバッファ位置は互いに異なるサイズである。例えば、BPP_aに関連付けられるバッファ位置50_a1, …, 50_aRは各々、32バイトの格納容量を有する。他方で、BPP_bに関連付けられるバッファ位置50_b1, …, 50_bSは各々、256バイトの格納容量を有する。従って、クライアントコンポーネント(例えばネットワークインタフェース16a)が16バイトのデータパケットをバッファしようとする場合、BMU24は、このクライアントコンポーネントに、IBBP32aから1つのバッファポインタ(バッファ位置50_a1, …, 50_aRのいずれか1つ)を割り当てる。一方で、クライアントコンポーネントが128バイトのデータパケットをバッファしようとする場合には、BMU24は、このクライアントコンポーネントに、IBBP32bから1つのバッファポインタ(バッファ位置50_b1, …, 50_bSのいずれか1つ)を割り当てる。
一実施形態では、マルチコアシステム(例えばSOC10)の場合に、各BPPは対応するプロセッサコアに関連付けられている。例えば、プロセッサコア12aがBPP_aを割り当てられ(つまりIBPP32aがプロセッサコア12aにバッファポインタを割り当てる)、プロセッサコア12bがBPP_bを割り当てられる(つまりIBPP32bがプロセッサコア12bにバッファポインタを割り当てる)、といった具合である。つまり、各プロセッサコアは自身のバッファ領域を有する。従って一実施形態では、バッファポインタプールの分配を、バッファされるべきデータパケットの始点に基づいて行う(例えば、データパケットがプロセッサコア12a、プロセッサコア12b、および/またはその他から始まっているか)。
一実施形態では、バッファポインタを割り当てるためのIBPPの選択を、任意の他の適切な基準に基づいて行うこともできる。
一実施形態では、BMU24によるバッファポインタの管理および/または割り当ては、プロセッサコア12a、…、12Mに管理されることなく、または最小限の管理下で行うことができる。つまり、BMU24の利用により、プロセッサコアをバッファ管理および/または割り当てから解放することができ、これによりプロセッサコアの処理電力を大幅に節電することができる。これに比して、従来のバッファ管理システムでは、プロセッサコアがバッファ管理および/または割り当てを行っている。
IBPPおよび対応するEBPPを管理してIBPPからバッファポインタを割り当てる(EBPPから割り当てるのではなく)ことには幾つかの利点がある。例えば、IBPPおよびクライアントコンポーネントの1以上を全てSOC10内に位置させることができる。従って、IBPPからバッファポインタをクライアントコンポーネントに割り当てる速度は、EBPPからバッファポインタをクライアントコンポーネントに割り当てる速度より比較的高速である。さらに、EBPPを維持することにより(例えば全てのバッファポインタをIBPPに格納する代わりに)、IBPPのバッファポインタの格納に要される格納サイズを比較的小さくすることができる(これは、SOC10の格納容量が、SOC10の外部にあるメモリ44の格納容量よりも比較的制限されているからである)。
一実施形態では、バッファ位置に関連付けられている記述子は、バッファ位置の物理アドレスと仮想アドレスとを含む。一実施形態では、BMU24は、その物理アドレスを利用してバッファポインタを割り当てる、および/または、解放する。別の実施形態では、各バッファ位置(例えばバッファ位置50_a1)が物理アドレスおよび仮想アドレスの両方を含むので、BMU24がバッファポインタを割り当てる、および/または、解放するとき、これら物理アドレスおよび仮想アドレスの両方が割り当てられる、および/または、解放される。
仮想アドレスを処理する別の方法として、各仮想アドレスをバッファ自身に書き込む、というものがある(例えばシステムの初期化段階中に書き込むことができる)。この場合には、BMU24は、バッファポインタを分配する際に、バッファの物理アドレスのみをクライアントに送信する。そしてクライアントは、必要に応じて、バッファ自身からバッファの仮想アドレスを読み出すことができる(例えば、仮想アドレスが32ビットの長さである場合には、バッファの最初の4バイト分から読み出すことができる)。
従来のシステムでは、通常、プロセッサコアがバッファ割り当てを管理する。通常、この従来のシステムではプロセッサコアは仮想アドレスを処理するので、バッファ位置における仮想アドレスのみを記録する。これと比して、システム100のバッファ位置はプロセッサコア、ネットワークインタフェース、BMU24、および/またはBMU24の任意の適切なクライアントコンポーネントによるアクセスを受ける。一例では、ネットワークインタフェースおよび/またはBMU24はバッファ位置の物理アドレスを利用してバッファ位置にアクセスし、プロセッサコアはバッファ位置の仮想アドレスを利用してバッファ位置にアクセスする。従って、BMU24は、バッファ位置の物理アドレスおよび仮想アドレス両方を対応するバッファ位置記述子に維持し、これにより、プロセッサコアおよびネットワークインタフェースの両方が(および/または、BMU24の任意の他のクライアントコンポーネントが)、バッファ位置に途切れなくアクセスできるようになる。
図2は、本開示の一実施形態における図1のシステム100の例示的なEBPP(例えばEBPP36a)を概略する。例えば、EBPP36aは、8つのバッファポインタ210a、…、210hを含むが、他の実施形態では、EBPP36aは、任意の他の適切な数のバッファポインタを含んでよい。
陰なしで示されているバッファポインタ210c、…、210eは、IBPP32aへの再分配に利用可能である。バッファポインタ210a、210b、210f、…、210hは(例えば先頭アドレスおよび後尾アドレスの間のバッファポインタ)は、再分配には利用できないので(例えばバッファポインタリストの一部ではないことから)、グレーの陰を付して示している。図2は、IBPP32aに既に分配されたバッファポインタ(例えばバッファポインタ210a、210b、210f、…、210h)を格納するEBPP36aを示しているが、一実施形態では、EBPP36aはこれらバッファポインタを格納しなくてもよい。
一実施形態では、EBPP36aに含まれるバッファポインタは連続するアドレスを有する。例えば、バッファポインタ210bのアドレスは、バッファポインタ210aのアドレスを増分することで生成でき、バッファポインタ210cのアドレスは、バッファポインタ210bのアドレスを増分することで生成できる、といった具合である。EBPP36aに関連付けられている開始アドレスは、EBPP36aの最初のバッファポインタ(例えばバッファポインタ210a)のアドレス(例えば仮想アドレスおよび/または物理アドレス)のことであってよい。EBPP36aに関連付けられている最終アドレスは、EBPP36aの最終のバッファポインタ(例えばバッファポインタ210h)のアドレス(例えば仮想アドレスおよび/または物理アドレス)のことであってよい。一実施形態においてバッファポインタはEBPP36aからIBPP32aへ(またこの逆の方向に)バッチで再分配を行われ、EBPP36aの連続するバッファポインタ210c、…、210eは、IBPP32aへの再分配に利用可能である。EBPP36aに関連付けられている先頭アドレスは、IBPP32aへの再分配に利用可能な複数のバッファポインタ(例えばバッファポインタ210c、210d、210e)の最初のバッファポインタ(例えばバッファポインタ210c)のアドレス(例えば仮想アドレスおよび/または物理アドレス)のことである。EBPP36aに関連付けられている後尾アドレスは、IBPP32aへの再分配に利用可能な複数のバッファポインタ(例えばバッファポインタ210c、210d、210e)の最後のバッファポインタ(例えばバッファポインタ210e)のアドレス(例えば仮想アドレスおよび/または物理アドレス)のことである。EBPP36aの先頭アドレスおよび後尾アドレスは、IBPP32aおよびEBPP36aの間でバッファポインタが割り当てられる、および/または、再分配を行われる場合に、動的に変化する。
一実施形態では、BMU24は、開始アドレスおよび最終アドレス、並びに、EBPP36aの現在の先頭アドレスおよび後尾アドレスを格納する。これらアドレスに基づいて、BMU24は、IBPP32aへの再分配に利用可能な、EBPP36a内のバッファポインタの数を認識することができる。例えば、先頭アドレスおよび後尾アドレスの差異を、IBPP32aへの再分配に利用可能なバッファポインタの数の指標として利用することができる。
図2には示していないが、個々のIBPPも、対応する開始アドレス、最終アドレス、先頭アドレス、および、後尾アドレスを含む。例えば、IBPPの先頭アドレスとは、クライアントコンポーネントへの割り当てに利用可能な複数のバッファポインタの最初のバッファポインタのアドレスのことである。同様に、IBPPの後尾アドレスとは、クライアントコンポーネントへの割り当てに利用可能な複数のバッファポインタの最後のバッファポインタのアドレスのことである。前述したように、IBPPに対応するカウント(例えばIBPPaに対応するカウントMa)は、IBPPにおける未割り当てのバッファのカウントを維持する。例えばカウントMaは、IBPPaの先頭アドレスと後尾アドレスとの間のバッファポインタの数を維持することにより、IBPPaにおける未割り当てのバッファポインタの数のカウントを維持する。
図3は、本開示の一実施形態における、図1のBMU24をより詳細に概略する。BMU24は、IBPP32a、…、IBPP32Nを格納するIBPP格納ユニット32を含む。BMU24はさらに、BMUコントローラ28、BMU直接メモリアクセス(DMA)312、およびレジスタファイル316を含む。
図1および図3によると、一実施形態では、BMU32はさらに、1以上のクライアントコンポーネント(例えば図3に示していないネットワークインタフェース16c)および/またはメモリ44から、共有バス20を介してデータおよび/または命令を受信する受信ポート304を含む。例えば、BMU24は、1以上のクライアントコンポーネントからのバッファ分配要求およびバッファ解放要求を受信し、さらに、前述したように1以上のEBPPから再分配されたバッファポインタを受信する。BMU24はさらに、マルチプレクサ344、送信キュー324(例えばFIFOキュー)および送信ポート328を含む。
BMU24の受信ポート304で受信したデータおよび/または命令は、受信キュー320(例えばFIFOキュー)に入り、BMUコントローラ28に、IBPPのいずれか1つに、BMU DMA312に、および/または、レジスタファイル316に選択的に送信される。
BMUコントローラ28は、様々なIBPPおよびEBPPの開始アドレス、最終アドレス、先頭アドレス、および/または、後尾アドレスを格納するバッファポインタアドレスプール308を含む。BMUコントローラ28はさらに、書き込みロジック348、読み出しロジック352、およびマルチプレクサ340を含む。
一実施形態では、BMUコントローラ28は、バッファポインタアドレスプール308の様々なアドレスを監視することで、IBPPおよびEBPPの各々における未割り当てのバッファポインタを記録する。IBPPにおける未割り当てのバッファポインタの数を、前述した高い閾値および低い閾値と比較することにより、BMUコントローラ28は、バッファポインタをIBPPから対応するEBPPへ、または、EBPPからIBPPへ再分配する必要があるかを判断する。バッファポインタをEBPPからIBPPへ再分配する場合には、BMU DMA312は、マルチプレクサ344、送信キュー324、および送信ポート328を介して、EBPPに対してプル要求を送信する。
バッファポインタをIBPPから対応するEBPPに再分配する場合には、BMU DMA312は、マルチプレクサ340および読み出しロジック352を介して、IBPPに対してプッシュ要求を送信する(例えば、IBPPから対応するEBPPにバッファポインタを再分配させるように)。 プッシュ要求を受信すると、IBPPは、再分配されたポイントバッファを、マルチプレクサ344、送信キュー324、および送信ポート328を介して、メモリ44の対応するEBPPに送信する。マルチプレクサ344は、IBPP格納ユニット32、BMU DMA312、およびレジスタファイル316からの入力を、例えばこれらコンポーネントのいずれかからの入力がイネーブルされると選択的にマルチプレックスする。
BMUコントローラ28がバッファ分配要求を受信すると、BMUコントローラ28は、例えばバッファされるデータパケットのサイズ、要求を送ってきたクライアントコンポーネント、様々なIBPPで利用可能な未割り当てのバッファポインタの数、および/またはその他に基づいて、適切なBPPを選択する。選択されたBPPに対応するIBPPは、マルチプレクサ340および読み出しロジック352を介して分配要求を受信して、マルチプレクサ344、送信キュー324、および送信ポート328を介してクライアントコンポーネントへ、分配されたバッファポインタを送信する。
BMUコントローラ28がバッファ解放要求を受信すると、対応するIBPP(例えばバッファポインタが解放されるべきIBPP)は、書き込みロジック348を介して解放要求を受信して(例えば、書き込みロジック348はこの解放要求をIBPP格納ユニット32に送信する)、バッファポインタをIBPPリストに書き込んでこのバッファポインタを解放する。
レジスタファイル316は、BMU24に関連付けられている様々な設定情報を格納する。例えば、レジスタファイル316はBMUコントローラ28と通信して、BMU24の1以上の他のコンポーネントが受信した情報を受信して、レジスタファイル316に格納されている様々な設定情報を周期的に更新する。
図4は、本開示の一実施形態における図1および図3のシステム100を作動させる例示的な方法400を示す。404で、BMU24(例えばBMUコントローラ28)は、(例えば第1の複数のバッファポインタおよび第2の複数のバッファポインタを)IBPP(例えばIBPP32a)およびEBPP(例えばEBPP36a)にそれぞれ分配し、ここでBPP(例えばBPP_a)は、IBPPおよびEBPPを含む。
この分配に続いて、BMU24は、408で分配要求を受信する、あるいは、430で解放要求を受信する。例えば408で、BMU24は、第1のコンポーネントから(例えばネットワークインタフェース16aから)バッファ位置の分配要求を受信する。412で、BMU24は、IBPP32aの第1の複数のバッファポインタのうちの対応する第1のバッファポインタを第1のコンポーネントに割り当てることで、第1のコンポーネントに第1のバッファ位置を割り当てる。一実施形態では、BMU24は、第1のバッファ位置の割り当てに呼応して、未割り当てのバッファポインタリストから第1のバッファポインタを削除する。
416で、BMU24は、IBPP32aにおける未割り当てのバッファポインタの数が低い閾値未満であるかを判断する。この未割り当てのバッファポインタの数が低い閾値未満でない場合には(416のNO)、方法は408または430の処理のいずれかへループして戻る。反対に、この未割り当てのバッファポインタの数が低い閾値未満である場合には(416のYES)、BMU24は420で、EBPP36aから第2の複数のバッファポインタのうちの第3の複数のバッファポインタをIBPP32aに動的再分配する(例えば、EBPP36aからIBPP32aに複数のバッファポインタを再分配する)。420の後で、方法は408または430の処理のいずれかへループして戻る。
再度430の処理を参照すると、BMU24は、第2のコンポーネント(例えばプロセッサコア12a)から、第1の複数のバッファポインタのうちの第2のバッファポインタと関連付けられている第2のバッファ位置を解放せよとの解放要求を受信する。例えば、第2のバッファ位置は、BMU24が第2のコンポーネントに予め割り当てたものであってよい。434で、BMU24は第2のバッファ位置を解放して、第2のバッファポインタを未割り当てとする。438で、BMU24は、IBBP32aにおける未割り当てのバッファポインタの数が高い閾値を上回るかを判断する。IBBP32aにおける未割り当てのバッファポインタの数が高い閾値より大きくない場合には(438のNO)、方法は408または430の処理のいずれかへループして戻る。反対に、IBBP32aにおける未割り当てのバッファポインタの数が高い閾値を上回る場合には(438のYES)、BMU24は442で、IBPP32aから第2の複数のバッファポインタのうちの第4の複数のバッファポインタをEBPP36aに動的再分配する(例えば、IBPP32aからEBPP36aに複数のバッファポインタを再分配する)。442の後で、方法は408または430の処理のいずれかへループして戻る。
図5は、本開示の一実施形態における図1および図3のパケット通信システムを作動させる別の例示的な方法500を示す。図1、図3、および図5を参照すると、504で、BMUコントローラ28は、SOCの複数のバッファアドレスを管理する(例えば、SOC10の内部バッファポインタプール(例えばIBPP32a)の対応する複数のバッファポインタを管理する)。508で、BMUコントローラ28は、SOCにおける利用可能なバッファアドレスの数(例えば、内部バッファポインタプールにおける未割り当てのバッファポインタの数)が低い閾値を下回るか、あるいは、高い閾値を上回るかを判断する。508でSOCにおける利用可能なバッファアドレスの数が低い閾値を下回る場合、512でBMUコントローラ28は、1以上のバッファアドレスを外部メモリから(例えばメモリ44のEBPP36a等の外部バッファポインタプールから)SOCへ(例えばIBPP32aへ)分配してから、504での監視を継続する。他方、508でSOCにおける利用可能なバッファアドレスの数が高い閾値を上回る場合、516でBMUコントローラ28は、別の1以上のバッファアドレスをSOCから外部メモリへ分配してから、504での監視を継続する。さらに508でSOCにおける利用可能なバッファアドレスの数が低い閾値と高い閾値との間にある場合には、方法は504の監視を継続する。
特定の実施形態について例示、記載してきたが、これらの特定の実施形態は、本開示の範囲を逸脱せずに、幅広い様々な代替実装例および/または均等実装例で置き換えることが可能である。本開示は、添付請求項に文字通りまたは均等論により略含まれる方法、装置、製品の全てを含む。本願は、ここで開示される実施形態の変更例および変形例全てを含むことを意図する。従って、本開示は請求項およびその均等物による限定のみが意図されている。

Claims (21)

  1. システムオンチップ(SOC)の複数のバッファアドレスを管理する段階と、
    前記SOCにおける利用可能なバッファアドレスの数が低い閾値を下回る場合、前記SOCの外部にあるメモリから1以上のバッファアドレスを前記SOCで取得する段階と
    を備える方法。
  2. 前記SOCにおける利用可能なバッファアドレスの数が高い閾値を上回る場合、別の1以上のバッファアドレスを前記SOCから前記メモリに分配する段階をさらに備える請求項1に記載の方法。
  3. 前記SOCの前記複数のバッファアドレスを管理する段階は、
    前記SOCの内部バッファポインタプールの前記複数のバッファアドレスを管理する段階を有し、
    前記メモリから前記1以上のバッファアドレスを取得する段階は、
    前記メモリの外部バッファポインタプールから前記1以上のバッファアドレスを取得する段階を有する請求項1に記載の方法。
  4. 前記SOCの前記複数のバッファアドレスを管理する段階は、
    前記SOCの複数のバッファポインタを管理する段階をさらに有し、前記複数のバッファポインタのうちの1つのバッファポインタは、前記複数のバッファアドレスのうち対応するバッファアドレスを含む請求項1に記載の方法。
  5. 前記メモリから前記1以上のバッファアドレスを前記SOCで取得する段階は、
    第1のバッファアドレスを前記SOCからクライアントコンポーネントに割り当てる段階と、
    前記割り当てが行われると、前記SOCにおける利用可能なバッファアドレスの数が前記低い閾値を下回る場合に前記メモリから前記1以上のバッファアドレスを前記SOCで取得する段階をさらに有する請求項1に記載の方法。
  6. 前記第1のバッファアドレスを割り当てる段階は、
    前記クライアントコンポーネントからのバッファ位置の分配要求を受信する段階と、
    前記分配要求を受信すると、前記第1のバッファアドレスを含む第1のバッファポインタを前記クライアントコンポーネントに割り当てることにより、前記第1のバッファアドレスを前記クライアントコンポーネントに割り当てる段階をさらに有する請求項5に記載の方法。
  7. 前記第1のバッファアドレスを前記クライアントコンポーネントに割り当てると、前記第1のバッファアドレスを、前記SOCで利用不可能なバッファアドレスとする段階をさらに備える請求項6に記載の方法。
  8. 前記クライアントコンポーネントにより、前記クライアントコンポーネントが受信したデータパケットを、前記第1のバッファアドレスを前記クライアントコンポーネントに割り当てることに少なくとも部分的に基づいて、前記第1のバッファアドレスに対応するバッファ位置にバッファする段階をさらに備える請求項5に記載の方法。
  9. 前記内部バッファポインタプールは第1の内部バッファポインタプールであり、
    前記方法はさらに、
    クライアントコンポーネントからの、前記クライアントコンポーネントが受信したデータパケットをバッファせよとのバッファ位置の分配要求を受信する段階と、
    前記分配要求を受けると、前記第1の内部バッファポインタプールおよび第2の内部バッファポインタプールのいずれかを、バッファアドレスを前記クライアントコンポーネントに割り当てるべく、(i)前記データパケットのサイズ、(ii)前記第1の内部バッファポインタプールに関連付けられているバッファ位置のサイズ、および、(iii)前記第2の内部バッファポインタプールに関連付けられているバッファ位置のサイズに少なくとも部分的に基づいて選択する段階と、
    対応するバッファポインタを前記クライアントコンポーネントに割り当てることにより、選択された前記内部バッファポインタプールに関連付けられたバッファアドレスを前記クライアントコンポーネントに割り当てる段階とを備える請求項3に記載の方法。
  10. 前記内部バッファポインタプールは第1の内部バッファポインタプールであり、
    前記方法はさらに、
    前記第1の内部バッファポインタプールからのバッファアドレスが第1のクライアントコンポーネントに割り当てられるよう、前記第1の内部バッファポインタプールを前記第1のクライアントコンポーネントに関連付ける段階と、
    第2の内部バッファポインタプールからのバッファアドレスが第2のクライアントコンポーネントに割り当てられるよう、前記第2の内部バッファポインタプールを前記第2のクライアントコンポーネントに関連付ける段階とを備える請求項3に記載の方法。
  11. 前記別の1以上のバッファアドレスを分配する段階は、
    第1のバッファアドレスに関連付けられている第1のバッファ位置を解放せよとの解放要求をクライアントコンポーネントから受信する段階と、
    前記解放要求を受けて、前記第1のバッファ位置を解放する段階と、
    前記第1のバッファ位置が解放されると、前記第1のバッファアドレスを前記SOCで利用可能なバッファアドレスとする段階と、
    前記第1のバッファアドレスが前記SOCで利用可能なバッファアドレスとされると、前記内部バッファポインタプールにおいて利用可能なバッファアドレスの数が前記高い閾値を上回る場合、前記別の1以上のバッファアドレスを前記SOCから前記メモリへ割り当てる段階とをさらに有する請求項2に記載の方法。
  12. 前記1以上のバッファアドレスは、第1の複数のバッファアドレスを含み、
    前記メモリから前記第1の複数のバッファアドレスを前記SOCで取得する段階は、
    前記メモリから前記第1の複数のバッファアドレスを前記SOCへ、前記メモリと前記SOCとの間の単一の処理として送信する段階をさらに有する請求項1に記載の方法。
  13. クライアントコンポーネントと、
    内部バッファポインタプール(IBPP)、及びコントローラを有するバッファ管理ユニット(BMU)と
    を備え、
    前記コントローラは、
    前記IBPPにおける未割り当てのバッファポインタの数を監視して、
    前記IBPPにおける未割り当てのバッファポインタの数が閾値を下回る場合、外部バッファポインタプール(EBPP)から前記IBPPに1以上のバッファポインタを分配するシステムオンチップ(SOC)。
  14. 前記コントローラはさらに、
    前記内部バッファポインタプールにおける未割り当てのバッファポインタの数が高い閾値を上回る場合、前記IBPPから前記EBPPへ別の1以上のバッファポインタを分配する請求項13に記載のSOC。
  15. 前記IBPPの前記バッファポインタは、前記SOCの外部にあるメモリの対応するバッファ位置を指し示す請求項13に記載のSOC。
  16. 前記クライアントコンポーネントは、前記BMUとは別個のプロセッサコアである請求項13に記載のSOC。
  17. 前記クライアントコンポーネントは、ネットワークインタフェースである請求項13に記載のSOC。
  18. 前記EBPPは、前記SOCの外部にあるメモリに格納される請求項13に記載のSOC。
  19. 各バッファポインタプール(BPP)が内部バッファポインタプール(IBPP)と外部バッファポインタプール(EBPP)とに論理的に分割される複数のBPPを維持する段階と、
    各BPPについて、対応するIBPPに複数のバッファポインタを動的に分配し、対応するEBPPに別の複数のバッファポインタを動的に分配する段階と
    を備える方法。
  20. 前記複数のBPPは、第1のBPPおよび第2のBPPを含み、
    前記方法は、
    第1のコンポーネントからバッファ分配要求を受信する段階と、
    前記バッファ分配要求を受信すると、前記第1のBPPおよび前記第2のBPPのうちいずれかを選択する段階と、
    選択された前記BPPに関連付けられている前記IBPPからのバッファポインタを前記第1のコンポーネントに割り当てる段階とをさらに備える請求項19に記載の方法。
  21. 各BPPについて、対応するIBPPと対応するEBPPとの間でバッファポインタの動的再分配を行って前記IBPPにおける未割り当てのバッファポインタを閾値数に維持する段階をさらに備える請求項20に記載の方法。
JP2011045565A 2010-03-18 2011-03-02 バッファマネージャおよびメモリ管理方法 Expired - Fee Related JP5789894B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US31532710P 2010-03-18 2010-03-18
US61/315,327 2010-03-18
US34794710P 2010-05-25 2010-05-25
US61/347,947 2010-05-25

Publications (2)

Publication Number Publication Date
JP2011204233A true JP2011204233A (ja) 2011-10-13
JP5789894B2 JP5789894B2 (ja) 2015-10-07

Family

ID=44601969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011045565A Expired - Fee Related JP5789894B2 (ja) 2010-03-18 2011-03-02 バッファマネージャおよびメモリ管理方法

Country Status (4)

Country Link
US (2) US8327047B2 (ja)
JP (1) JP5789894B2 (ja)
CN (1) CN102193874B (ja)
IL (1) IL211607A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017537404A (ja) * 2014-11-28 2017-12-14 華為技術有限公司Huawei Technologies Co.,Ltd. メモリアクセス方法、スイッチ、およびマルチプロセッサシステム

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US9069489B1 (en) 2010-03-29 2015-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic random access memory front end
IL211490A (en) * 2010-03-02 2016-09-29 Marvell Israel(M I S L ) Ltd Early next packets of information
US8848715B2 (en) 2010-03-16 2014-09-30 Marvell Israel (M.I.S.L) Ltd. Combined hardware/software forwarding mechanism and method
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
EP2801023A4 (en) * 2012-01-06 2017-06-21 Intel Corporation Swapping pointers to process data stored in buffers by a data source without copying the data to separate storage
US9236064B2 (en) * 2012-02-15 2016-01-12 Microsoft Technology Licensing, Llc Sample rate converter with automatic anti-aliasing filter
CN102662865B (zh) * 2012-04-06 2014-11-26 福建星网锐捷网络有限公司 多核cpu的缓存管理方法、装置及设备
US9519514B2 (en) * 2014-01-29 2016-12-13 Marvell Israel (M.I.S.L) Ltd. Interfacing with a buffer manager via queues
US10198362B2 (en) * 2017-02-07 2019-02-05 Qualcomm Incorporated Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of processor-based systems
CN114281269B (zh) * 2021-12-31 2023-08-15 中企云链(北京)金融信息服务有限公司 数据缓存方法以及装置、存储介质、电子装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173953A (ja) * 1991-12-26 1993-07-13 Oki Electric Ind Co Ltd バッファ管理方式
JPH07202946A (ja) * 1993-12-21 1995-08-04 Internatl Business Mach Corp <Ibm> 通信バッファを管理するためのシステム及び方法
US20040184470A1 (en) * 2003-03-18 2004-09-23 Airspan Networks Inc. System and method for data routing
US6918005B1 (en) * 2001-10-18 2005-07-12 Network Equipment Technologies, Inc. Method and apparatus for caching free memory cell pointers
US7664938B1 (en) * 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4574351A (en) * 1983-03-03 1986-03-04 International Business Machines Corporation Apparatus for compressing and buffering data
US4682281A (en) * 1983-08-30 1987-07-21 Amdahl Corporation Data storage unit employing translation lookaside buffer pointer
US4612612A (en) * 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
US5315707A (en) * 1992-01-10 1994-05-24 Digital Equipment Corporation Multiprocessor buffer system
US5657471A (en) * 1992-04-16 1997-08-12 Digital Equipment Corporation Dual addressing arrangement for a communications interface architecture
US5860149A (en) * 1995-06-07 1999-01-12 Emulex Corporation Memory buffer system using a single pointer to reference multiple associated data
JPH0934786A (ja) * 1995-07-14 1997-02-07 Fujitsu Ltd 命令供給装置
US6112265A (en) 1997-04-07 2000-08-29 Intel Corportion System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command
US6192451B1 (en) 1998-02-17 2001-02-20 International Business Machines Corporation Cache coherency protocol for a data processing system including a multi-level memory hierarchy
US6009463A (en) * 1998-04-15 1999-12-28 Unisys Corporation Cooperative service interface with buffer and lock pool sharing, for enhancing message-dialog transfer between network provider and distributed system services
US6647423B2 (en) * 1998-06-16 2003-11-11 Intel Corporation Direct message transfer between distributed processes
US6282589B1 (en) * 1998-07-30 2001-08-28 Micron Technology, Inc. System for sharing data buffers from a buffer pool
US6343351B1 (en) * 1998-09-03 2002-01-29 International Business Machines Corporation Method and system for the dynamic scheduling of requests to access a storage system
US6434649B1 (en) 1998-10-14 2002-08-13 Hitachi, Ltd. Data streamer
US6487640B1 (en) 1999-01-19 2002-11-26 International Business Machines Corporation Memory access request reordering to reduce memory access latency
US6963924B1 (en) 1999-02-01 2005-11-08 Nen-Fu Huang IP routing lookup scheme and system for multi-gigabit switching routers
US7600131B1 (en) 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US6378052B1 (en) * 1999-08-11 2002-04-23 International Business Machines Corporation Data processing system and method for efficiently servicing pending requests to access a storage system
US6654860B1 (en) 2000-07-27 2003-11-25 Advanced Micro Devices, Inc. Method and apparatus for removing speculative memory accesses from a memory access queue for issuance to memory or discarding
US7146478B2 (en) 2001-03-19 2006-12-05 International Business Machines Corporation Cache entry selection method and apparatus
JP4822598B2 (ja) 2001-03-21 2011-11-24 ルネサスエレクトロニクス株式会社 キャッシュメモリ装置およびそれを含むデータ処理装置
US7093094B2 (en) 2001-08-09 2006-08-15 Mobilygen Corporation Random access memory controller with out of order execution
US7394823B2 (en) 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
TW580619B (en) * 2002-04-03 2004-03-21 Via Tech Inc Buffer control device and the management method
CA2393373A1 (en) 2002-07-15 2004-01-15 Anthony Gerkis Apparatus, system and method for the transmission of data with different qos attributes.
US7155572B2 (en) 2003-01-27 2006-12-26 Advanced Micro Devices, Inc. Method and apparatus for injecting write data into a cache
US7430623B2 (en) * 2003-02-08 2008-09-30 Hewlett-Packard Development Company, L.P. System and method for buffering data received from a network
US20040199727A1 (en) 2003-04-02 2004-10-07 Narad Charles E. Cache allocation
US7484043B2 (en) 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions
US7469321B2 (en) 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
US7085894B2 (en) 2003-09-11 2006-08-01 International Business Machines Corporation Selectively accepting cache content
US20050100042A1 (en) 2003-11-12 2005-05-12 Illikkal Rameshkumar G. Method and system to pre-fetch a protocol control block for network packet processing
US7424562B2 (en) 2004-03-01 2008-09-09 Cisco Technology, Inc. Intelligent PCI bridging consisting of prefetching data based upon descriptor data
US20050198464A1 (en) * 2004-03-04 2005-09-08 Savaje Technologies, Inc. Lazy stack memory allocation in systems with virtual memory
US7486688B2 (en) 2004-03-29 2009-02-03 Conexant Systems, Inc. Compact packet switching node storage architecture employing Double Data Rate Synchronous Dynamic RAM
US7783769B2 (en) 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
US7493465B2 (en) * 2004-05-17 2009-02-17 Oracle International Corporation Method and system for extended memory with user mode input/output operations
US7573895B2 (en) 2004-06-24 2009-08-11 Intel Corporation Software assisted RDMA
US20060004941A1 (en) * 2004-06-30 2006-01-05 Shah Hemal V Method, system, and program for accessesing a virtualized data structure table in cache
US7277982B2 (en) 2004-07-27 2007-10-02 International Business Machines Corporation DRAM access command queuing structure
US7602798B2 (en) * 2004-08-27 2009-10-13 Intel Corporation Techniques to reduce latency in receive side processing
US7426649B2 (en) 2005-02-09 2008-09-16 International Business Machines Corporation Power management via DIMM read operation limiter
US20060236063A1 (en) * 2005-03-30 2006-10-19 Neteffect, Inc. RDMA enabled I/O adapter performing efficient memory management
US7889734B1 (en) 2005-04-05 2011-02-15 Oracle America, Inc. Method and apparatus for arbitrarily mapping functions to preassigned processing entities in a network system
US20070081538A1 (en) * 2005-10-12 2007-04-12 Alliance Semiconductor Off-load engine to re-sequence data packets within host memory
KR100738339B1 (ko) 2005-12-01 2007-07-12 한국전자통신연구원 인터넷 프로토콜 오프로드의 패킷 전송 장치 및 방법
US7457892B2 (en) * 2006-06-05 2008-11-25 Freescale Semiconductor, Inc. Data communication flow control device and methods thereof
US7664905B2 (en) 2006-11-03 2010-02-16 Nvidia Corporation Page stream sorter for poor locality access patterns
US8179896B2 (en) 2006-11-09 2012-05-15 Justin Mark Sobaje Network processors and pipeline optimization methods
US7818389B1 (en) 2006-12-01 2010-10-19 Marvell International Ltd. Packet buffer apparatus and method
US7978700B2 (en) 2007-03-12 2011-07-12 Marvell Israel (Misl) Ltd. Apparatus for determining locations of fields in a data unit
US7813342B2 (en) 2007-03-26 2010-10-12 Gadelrab Serag Method and apparatus for writing network packets into computer memory
US20090083392A1 (en) * 2007-09-25 2009-03-26 Sun Microsystems, Inc. Simple, efficient rdma mechanism
US7877524B1 (en) 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US8363654B2 (en) 2008-11-07 2013-01-29 Hewlett-Packard Development Company, L.P. Predictive packet forwarding for a network switch
TW201022935A (en) 2008-12-12 2010-06-16 Sunplus Technology Co Ltd Control system for accessing memory and method of the same
US9444737B2 (en) 2009-04-27 2016-09-13 Intel Corporation Packet data processor in a communications processor architecture
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
EP2538334B1 (en) 2011-06-21 2019-08-21 Lantiq Beteiligungs-GmbH & Co.KG Cache streaming system
US20120331227A1 (en) 2011-06-21 2012-12-27 Ramakrishna Saripalli Facilitating implementation, at least in part, of at least one cache management policy

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173953A (ja) * 1991-12-26 1993-07-13 Oki Electric Ind Co Ltd バッファ管理方式
JPH07202946A (ja) * 1993-12-21 1995-08-04 Internatl Business Mach Corp <Ibm> 通信バッファを管理するためのシステム及び方法
US6918005B1 (en) * 2001-10-18 2005-07-12 Network Equipment Technologies, Inc. Method and apparatus for caching free memory cell pointers
US20040184470A1 (en) * 2003-03-18 2004-09-23 Airspan Networks Inc. System and method for data routing
US7664938B1 (en) * 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017537404A (ja) * 2014-11-28 2017-12-14 華為技術有限公司Huawei Technologies Co.,Ltd. メモリアクセス方法、スイッチ、およびマルチプロセッサシステム
US10282293B2 (en) 2014-11-28 2019-05-07 Huawei Technologies Co., Ltd. Method, switch, and multiprocessor system using computations and local memory operations

Also Published As

Publication number Publication date
JP5789894B2 (ja) 2015-10-07
CN102193874A (zh) 2011-09-21
IL211607A0 (en) 2011-05-31
US9769081B2 (en) 2017-09-19
US8327047B2 (en) 2012-12-04
US20110296063A1 (en) 2011-12-01
US20130088965A1 (en) 2013-04-11
IL211607A (en) 2015-03-31
CN102193874B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
JP5789894B2 (ja) バッファマネージャおよびメモリ管理方法
US10387202B2 (en) Quality of service implementation in a networked storage system with hierarchical schedulers
US9128925B2 (en) System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines
US7461214B2 (en) Method and system for accessing a single port memory
US6785751B1 (en) Method and apparatus for minimizing bus contention for I/O controller write operations
US8312243B2 (en) Memory management in network processors
CN108984280B (zh) 一种片外存储器的管理方法和装置、计算机可读存储介质
US11579803B2 (en) NVMe-based data writing method, apparatus, and system
US10678718B2 (en) Network device and method of operation
US11805081B2 (en) Apparatus and method for buffer management for receive segment coalescing
US20200076742A1 (en) Sending data using a plurality of credit pools at the receivers
US20130061009A1 (en) High Performance Free Buffer Allocation and Deallocation
US20160085450A1 (en) System for providing remote memory and temporary page pool operating method for providing remote memory
TWI730481B (zh) 網路封包接收裝置及方法
US10705985B1 (en) Integrated circuit with rate limiting
US11144473B2 (en) Quality of service for input/output memory management unit
US10042773B2 (en) Advance cache allocator
US10061513B2 (en) Packet processing system, method and device utilizing memory sharing
US20060153185A1 (en) Method and apparatus for dynamically changing ring size in network processing
JP2023504441A (ja) メモリファブリック物理レイヤインタフェースにわたるパケット転送を管理する装置及び方法
WO2009033971A1 (en) System and method for splitting data and data control information
US10146434B1 (en) FIFO systems and methods for providing access to a memory shared by multiple devices
US9582215B2 (en) Packet processing system, method and device utilizing memory sharing
WO2010082604A1 (ja) データ処理装置、メモリ管理方法およびメモリ管理プログラム
US9612950B2 (en) Control path subsystem, method and device utilizing memory sharing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150113

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150715

R150 Certificate of patent or registration of utility model

Ref document number: 5789894

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees