JP5789894B2 - バッファマネージャおよびメモリ管理方法 - Google Patents
バッファマネージャおよびメモリ管理方法 Download PDFInfo
- Publication number
- JP5789894B2 JP5789894B2 JP2011045565A JP2011045565A JP5789894B2 JP 5789894 B2 JP5789894 B2 JP 5789894B2 JP 2011045565 A JP2011045565 A JP 2011045565A JP 2011045565 A JP2011045565 A JP 2011045565A JP 5789894 B2 JP5789894 B2 JP 5789894B2
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- ibpp
- soc
- location
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/621—Individual queue per connection or flow, e.g. per VC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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/10—Methods 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/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/10—Indexing scheme relating to groups G06F5/10 - G06F5/14
- G06F2205/106—Details 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)
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)に関連しており、本明細書と矛盾する箇所を除いて、これらの明細書全体をここに全ての目的で参照として組み込む。
[項目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に記載の方法。
Claims (27)
- システムオンチップ(SOC)の第1の内部バッファポインタプール及び第2の内部バッファポインタプールを管理する段階と、
前記第1の内部バッファポインタプールにおける利用可能なバッファアドレスの数が低い閾値を下回る場合、第1の外部バッファポインタプールから前記SOCの外部にあるメモリの1又は複数のバッファアドレスを前記第1の内部バッファポインタプールで取得する段階と、
前記第2の内部バッファポインタプールの中の利用可能なバッファアドレスの数が低い閾値を下回る場合、第2の外部バッファポインタプールから前記SOCの外部にあるメモリの1又は複数のバッファアドレスを前記第2の内部バッファポインタプールで取得する段階と、
前記第1の内部バッファポインタプールからの利用可能なバッファアドレスが第1のクライアントコンポーネントに割り当てられるよう、前記第1の内部バッファポインタプールを前記第1のクライアントコンポーネントに関連付ける段階と、
前記第2の内部バッファポインタプールからの利用可能なバッファアドレスが第2のクライアントコンポーネントに割り当てられるよう、前記第2の内部バッファポインタプールを前記第2のクライアントコンポーネントに関連付ける段階と
を備える方法。 - 前記第1の内部バッファポインタプールにおける利用可能なバッファアドレスの数が高い閾値を上回る場合、別の1又は複数のバッファアドレスを、前記第1の内部バッファポインタプールから前記メモリに分配する段階
をさらに備える請求項1に記載の方法。 - 前記SOCの前記第1の内部バッファポインタプール及び前記第2の内部バッファポインタプールを管理する段階は、
前記SOCの前記第1の内部バッファポインタプール及び前記第2の内部バッファポインタプールの中の複数のバッファポインタを管理する段階をさらに有し、前記複数のバッファポインタのうちの1つのバッファポインタは、前記複数のバッファアドレスのうち対応するバッファアドレスを含む請求項1又は2に記載の方法。 - 前記メモリの前記1又は複数のバッファアドレスを前記SOCの前記第1の内部バッファポインタプールで取得する段階は、
前記SOCの前記第1の内部バッファポインタプールで管理されている第1のバッファアドレスを前記第1のクライアントコンポーネントに割り当てる段階と、
前記割り当てが行われると、前記第1の内部バッファポインタプールにおける利用可能なバッファアドレスの数が前記低い閾値を下回る場合に、前記第1の外部バッファポインタプールからの前記1又は複数のバッファアドレスを前記第1の内部バッファポインタプールで取得する段階をさらに有する請求項1から3のいずれか1項に記載の方法。 - 前記第1のバッファアドレスを割り当てる段階は、
前記第1のクライアントコンポーネントからのバッファ位置の分配要求を受信する段階と、
前記分配要求を受信すると、前記第1のバッファアドレスを含む第1のバッファポインタを前記第1のクライアントコンポーネントに割り当てることにより、前記第1のバッファアドレスを前記第1のクライアントコンポーネントに割り当てる段階をさらに有する請求項4に記載の方法。 - 前記第1のバッファアドレスを前記第1のクライアントコンポーネントに割り当てると、前記第1のバッファアドレスを、前記SOCで利用不可能なバッファアドレスとする段階をさらに備える請求項5に記載の方法。
- 前記第1のクライアントコンポーネントにより、前記第1のクライアントコンポーネントが受信したデータパケットを、前記第1のバッファアドレスを前記第1のクライアントコンポーネントに割り当てることに少なくとも部分的に基づいて、前記第1のバッファアドレスに対応するバッファ位置にバッファする段階をさらに備える請求項5に記載の方法。
- 前記第1のクライアントコンポーネント及び前記第2のクライアントコンポーネントの一方のクライアントコンポーネントからの、前記一方のクライアントコンポーネントが受信したデータパケットをバッファするためのバッファ位置の分配要求を受信する段階と、
前記分配要求を受けると、前記第1の内部バッファポインタプールおよび前記第2の内部バッファポインタプールのいずれかを、バッファアドレスを前記一方のクライアントコンポーネントに割り当てるべく、(i)前記データパケットのサイズ、(ii)前記第1の内部バッファポインタプールに関連付けられているバッファ位置のサイズ、および、(iii)前記第2の内部バッファポインタプールに関連付けられているバッファ位置のサイズに少なくとも部分的に基づいて選択する段階と、
対応するバッファポインタを前記一方のクライアントコンポーネントに割り当てることにより、前記選択された内部バッファポインタプールに関連付けられたバッファアドレスを前記一方のクライアントコンポーネントに割り当てる段階とをさらに備える請求項1から7のいずれか1項に記載の方法。 - 前記第1の内部バッファポインタプールに関連付けられている前記バッファ位置の前記サイズは、前記第2の内部バッファポインタプールに関連付けられている前記バッファ位置の前記サイズと異なる請求項8に記載の方法。
- 前記別の1又は複数のバッファアドレスを分配する段階は、
第1のバッファアドレスに関連付けられている第1のバッファ位置を解放せよとの解放要求を前記第1のクライアントコンポーネントから受信する段階と、
前記解放要求を受けて、前記第1のバッファ位置を解放する段階と、
前記第1のバッファ位置が解放されると、前記第1のバッファアドレスを前記SOCで利用可能なバッファアドレスとする段階と、
前記第1のバッファアドレスが前記SOCで利用可能なバッファアドレスとされると、前記第1の内部バッファポインタプールにおいて利用可能なバッファアドレスの数が前記高い閾値を上回る場合、前記別の1又は複数のバッファアドレスを前記第1の内部バッファポインタプールから前記第1の外部バッファポインタプールへ割り当てる段階とをさらに有する請求項2に記載の方法。 - 前記1又は複数のバッファアドレスは、第1の複数のバッファアドレスを含み、
前記第1の外部バッファポインタプールから前記メモリの前記第1の複数のバッファアドレスを前記第1の内部バッファポインタプールで取得する段階は、
前記メモリ内の前記第1の外部バッファポインタプールから前記第1の複数のバッファアドレスを前記第1の内部バッファポインタプールへ、前記メモリと前記SOCとの間の単一の処理として送信する段階をさらに有する請求項1から10のいずれか1項に記載の方法。 - 複数のバッファ位置の各バッファ位置に、(i)各々のバッファされるデータ及び(ii)前記バッファ位置に関連付けられた各々の仮想アドレスを格納する段階と、
(i)前記バッファ位置に関連付けられた各々の物理アドレス及び(ii)前記バッファ位置に関連付けられた各々の仮想アドレスを利用して、前記複数のバッファ位置を特定する段階と、
プロセッサユニットによって、前記バッファ位置に関連付けられた各々の仮想アドレスを利用して、各々のバッファ位置に格納されたバッファされたデータにアクセスする段階と、
クライアントコンポーネントによって、前記バッファ位置に関連付けられた前記各々の仮想アドレスを利用する代わりに前記バッファ位置に関連付けられた前記各々の物理アドレスを利用して、前記各々のバッファ位置に格納されたバッファされたデータにアクセスする段階と
をさらに備える請求項1から11のいずれか1項に記載の方法。 - システムオンチップ(SOC)であって、
第1の内部バッファポインタプール(第1のIBPP)、第2の内部バッファポインタプール(第2のIBPP)及びコントローラを有するバッファ管理ユニット(BMU)と
を備え、
前記第1のIBPPからの複数のバッファポインタが、第1のクライアントコンポーネントに割り当てられ、
前記第2のIBPPからの複数のバッファポインタが、第2のクライアントコンポーネントに割り当てられ、
前記コントローラは、
(i)前記第1のIBPPにおける未割り当てのバッファポインタの数を監視し、(ii)前記第2のIBPPにおける未割り当てのバッファポインタの数を監視し、
前記第1のIBPPにおける未割り当てのバッファポインタの数が閾値を下回る場合、第1の外部バッファポインタプール(第1のEBPP)から前記第1のIBPPに1又は複数のバッファポインタを分配し、
前記第2のIBPPにおける未割り当てのバッファポインタの数が閾値を下回る場合、第2の外部バッファポインタプール(第2のEBPP)から前記第2のIBPPに1又は複数のバッファポインタを分配し、
前記第1のIBPPの前記複数のバッファポインタは、前記SOCの外部にあるメモリの対応するバッファ位置を指し示し、
前記第2のIBPPの前記複数のバッファポインタは、前記SOCの外部にあるメモリの対応するバッファ位置を指し示す
SOC。 - 前記コントローラはさらに、
前記第1のIBPPにおける未割り当てのバッファポインタの数が高い閾値を上回る場合、前記第1のIBPPから前記第1のEBPPへ別の1又は複数のバッファポインタを分配する請求項13に記載のSOC。 - 前記第1のクライアントコンポーネント及び前記第2のクライアントコンポーネントの少なくとも一方は、前記BMUとは別個のプロセッサコアである請求項13又は14に記載のSOC。
- 前記第1のクライアントコンポーネント及び前記第2のクライアントコンポーネントの少なくとも一方は、ネットワークインタフェースである請求項13から15のいずれか1項に記載のSOC。
- 前記第1のEBPP及び前記第2のEBPPは、前記SOCの外部にあるメモリに格納される請求項13から16のいずれか1項に記載のSOC。
- 前記第1のIBPPにおける前記バッファポインタが指し示す前記バッファ位置のサイズは、前記第2のIBPPにおける前記バッファポインタが指し示す前記バッファ位置のサイズと異なり、
前記コントローラはさらに、
前記第1のクライアントコンポーネント及び前記第2のクライアントコンポーネントの一方のクライアントコンポーネントからの、前記一方のクライアントコンポーネントが受信したデータパケットをバッファするためのバッファ位置の分配要求を受信し、
前記分配要求を受けると、前記第1のIBPPおよび前記第2のIBPPのいずれかを、バッファポインタを前記一方のクライアントコンポーネントに割り当てるべく、(i)前記データパケットのサイズ、(ii)前記第1のIBPPにおける前記バッファポインタが指し示す前記バッファ位置の前記サイズ、および、(iii)前記第2のIBPPにおける前記バッファポインタが指し示す前記バッファ位置の前記サイズに少なくとも部分的に基づいて選択し、
前記選択されたIBPPにおけるバッファポインタを前記一方のクライアントコンポーネントに割り当てる請求項13から17のいずれか1項に記載のSOC。 - 前記SOCの外部にある前記メモリのバッファ位置のそれぞれには、それぞれの仮想アドレスが書き込まれており、
前記第1のクライアントコンポーネントは、前記第1のIBPPから前記第1のクライアントコンポーネントに割り当てられた前記バッファポインタによって指し示されるそれぞれの前記バッファ位置に書き込まれているそれぞれの前記仮想アドレスを利用して、それぞれの前記バッファ位置にアクセスし、
前記第2のクライアントコンポーネントは、前記第2のIBPPから前記第2のクライアントコンポーネントに割り当てられた前記バッファポインタによって指し示されるそれぞれの前記バッファ位置のそれぞれの物理アドレスを利用して、それぞれの前記バッファ位置にアクセスする
請求項13から18のいずれか1項に記載のSOC。 - 各バッファポインタプール(BPP)が、システムオンチップ(SOC)の内部バッファポインタプール(IBPP)と前記SOCの外部の外部バッファポインタプール(EBPP)とに分割される複数のBPPを管理する段階と、
各BPPについて、対応するIBPPに複数のバッファポインタを動的に分配し、対応するEBPPに別の複数のバッファポインタを動的に分配する段階と
を備え、
前記複数のBPPのうち第1のBPPの前記IBPPからの複数のバッファポインタが、第1のコンポーネントを割り当てられ、
前記複数のBPPのうち第2のBPPの前記IBPPからの複数のバッファポインタが、第2のコンポーネントに割り当てられ、
前記第1のBPPの前記IBPPの前記複数のバッファポインタは、前記SOCの外部にあるメモリの対応するバッファ位置を指し示し、
前記第2のBPPの前記IBPPの前記複数のバッファポインタは、前記SOCの外部にあるメモリの対応するバッファ位置を指し示す
方法。 - 前記第1のコンポーネント及び前記第2のコンポーネントの一方のコンポーネントからバッファ分配要求を受信する段階と、
前記バッファ分配要求を受信すると、前記第1のBPPおよび前記第2のBPPのうちいずれかを選択する段階と、
前記選択されたBPPに関連付けられている前記IBPPからのバッファポインタを前記一方のコンポーネントに割り当てる段階とをさらに備える請求項20に記載の方法。 - 各BPPについて、対応するIBPPと対応するEBPPとの間でバッファポインタの動的再分配を行って前記IBPPにおける未割り当てのバッファポインタを閾値数に維持する段階をさらに備える請求項20又は21に記載の方法。
- 前記第1のBPPの前記IBPPにおける前記バッファポインタが指し示す前記バッファ位置のサイズは、前記第2のBPPの前記IBPPにおける前記バッファポインタが指し示す前記バッファ位置のサイズと異なり、
前記方法は、
前記第1のコンポーネント及び前記第2のコンポーネントの一方のコンポーネントからの、前記一方のコンポーネントが受信したデータパケットをバッファするためのバッファ位置の分配要求を受信する段階と、
前記分配要求を受けると、前記第1のBPPの前記IBPP及び前記第2のBPPの前記IBPPのいずれかを、バッファポインタを前記一方のコンポーネントに割り当てるべく、(i)前記データパケットのサイズ、(ii)前記第1のBPPの前記IBPPにおける前記バッファポインタが指し示す前記バッファ位置の前記サイズ、および、(iii)前記第2のBPPの前記IBPPにおける前記バッファポインタが指し示す前記バッファ位置の前記サイズに少なくとも部分的に基づいて選択する段階と、
選択された前記IBPPにおけるバッファポインタを前記一方のコンポーネントに割り当てる段階とをさらに備える請求項20から22のいずれか1項に記載の方法。 - 前記SOCの外部にある前記メモリのバッファ位置のそれぞれには、それぞれの仮想アドレスが書き込まれており、
前記方法は、
前記第1のコンポーネントが、前記第1のBPPの前記IBPPから前記第1のコンポーネントに割り当てられた前記バッファポインタによって指し示されるそれぞれの前記バッファ位置に書き込まれているそれぞれの前記仮想アドレスを利用して、それぞれの前記バッファ位置にアクセスする段階と、
前記第2のコンポーネントが、前記第2のBPPの前記IBPPから前記第2のコンポーネントに割り当てられた前記バッファポインタによって指し示されるそれぞれの前記バッファ位置のそれぞれの物理アドレスを利用して、それぞれの前記バッファ位置にアクセスする段階とをさらに備える請求項20から23のいずれか1項に記載の方法。 - システムオンチップ(SOC)の複数のバッファアドレスを管理する段階と、
前記SOCにおける利用可能なバッファアドレスの数が低い閾値を下回る場合、前記SOCの外部にあるメモリから1又は複数のバッファアドレスを前記SOCで取得する段階と、
複数のバッファ位置の各バッファ位置に、(i)各々のバッファされるデータ及び(ii)前記バッファ位置に関連付けられた各々の仮想アドレスを格納する段階と、
(i)前記バッファ位置に関連付けられた各々の物理アドレス及び(ii)前記バッファ位置に関連付けられた各々の仮想アドレスを利用して、前記複数のバッファ位置を特定する段階と、
プロセッサユニットによって、前記バッファ位置に関連付けられた各々の仮想アドレスを利用して、各々のバッファ位置に格納されたバッファされたデータにアクセスする段階と、
クライアントコンポーネントによって、前記バッファ位置に関連付けられた前記各々の仮想アドレスを利用する代わりに前記バッファ位置に関連付けられた前記各々の物理アドレスを利用して、前記各々のバッファ位置に格納されたバッファされたデータにアクセスする段階と
を備える方法。 - 前記クライアントコンポーネントによって、バッファ位置の仮想アドレスに、(i)前記バッファ位置に関連付けられた前記物理アドレスを利用して、前記バッファ位置に格納された前記バッファされたデータにアクセスすること及び(ii)前記アクセスされた前記バッファされたデータから前記バッファ位置の前記仮想アドレスを特定することによって、アクセスする段階
をさらに備える請求項25に記載の方法。 - 前記複数のバッファ位置の複数の前記物理アドレスを利用して、前記複数のバッファ位置の割り当てを管理する段階
をさらに備える請求項25に記載の方法。
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 JP2011204233A (ja) | 2011-10-13 |
JP5789894B2 true 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) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110228674A1 (en) * | 2010-03-18 | 2011-09-22 | Alon Pais | Packet processing optimization |
US9037810B2 (en) * | 2010-03-02 | 2015-05-19 | Marvell Israel (M.I.S.L.) Ltd. | Pre-fetching of data packets |
US9069489B1 (en) | 2010-03-29 | 2015-06-30 | Marvell Israel (M.I.S.L) Ltd. | Dynamic random access memory front end |
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 |
US20150006839A1 (en) * | 2012-01-06 | 2015-01-01 | 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 |
EP3217616B1 (en) * | 2014-11-28 | 2018-11-21 | Huawei Technologies Co., Ltd. | Memory access method and multi-processor system |
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 | 中企云链(北京)金融信息服务有限公司 | 数据缓存方法以及装置、存储介质、电子装置 |
Family Cites Families (65)
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 |
JPH05173953A (ja) * | 1991-12-26 | 1993-07-13 | Oki Electric Ind Co Ltd | バッファ管理方式 |
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 |
JP2596718B2 (ja) * | 1993-12-21 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ネットワーク通信バッファを管理する方法 |
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 |
US7996670B1 (en) | 1999-07-08 | 2011-08-09 | Broadcom Corporation | Classification engine 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 |
EP1371187B1 (en) | 2001-03-19 | 2004-12-01 | 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 |
US6918005B1 (en) * | 2001-10-18 | 2005-07-12 | Network Equipment Technologies, Inc. | Method and apparatus for caching free memory cell pointers |
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 |
US20040184470A1 (en) * | 2003-03-18 | 2004-09-23 | Airspan Networks Inc. | System and method for data routing |
US20040199727A1 (en) | 2003-04-02 | 2004-10-07 | Narad Charles E. | Cache allocation |
US7469321B2 (en) | 2003-06-25 | 2008-12-23 | International Business Machines Corporation | Software process migration between coherency regions without cache purges |
US7484043B2 (en) | 2003-06-25 | 2009-01-27 | International Business Machines Corporation | Multiprocessor system with dynamic cache coherency regions |
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 |
US7664938B1 (en) * | 2004-01-07 | 2010-02-16 | Xambala Corporation | Semantic processor systems and methods |
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 |
IL190134A (en) | 2007-03-12 | 2012-07-31 | Marvell Israel Misl Ltd | Method and system for determining the location of fields in information units |
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 |
-
2011
- 2011-03-01 US US13/038,266 patent/US8327047B2/en not_active Expired - Fee Related
- 2011-03-02 JP JP2011045565A patent/JP5789894B2/ja not_active Expired - Fee Related
- 2011-03-07 IL IL211607A patent/IL211607A/en active IP Right Grant
- 2011-03-17 CN CN201110069437.7A patent/CN102193874B/zh not_active Expired - Fee Related
-
2012
- 2012-12-03 US US13/692,635 patent/US9769081B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8327047B2 (en) | 2012-12-04 |
IL211607A (en) | 2015-03-31 |
IL211607A0 (en) | 2011-05-31 |
CN102193874A (zh) | 2011-09-21 |
CN102193874B (zh) | 2015-11-25 |
US20130088965A1 (en) | 2013-04-11 |
US20110296063A1 (en) | 2011-12-01 |
JP2011204233A (ja) | 2011-10-13 |
US9769081B2 (en) | 2017-09-19 |
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 | |
CN104090847B (zh) | 一种固态存储设备的地址分配方法 | |
US11381515B2 (en) | On-demand packet queuing in a network device | |
US7461214B2 (en) | Method and system for accessing a single port memory | |
US8312243B2 (en) | Memory management in network processors | |
US11579803B2 (en) | NVMe-based data writing method, apparatus, and system | |
US11805081B2 (en) | Apparatus and method for buffer management for receive segment coalescing | |
US10678718B2 (en) | Network device and method of operation | |
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) | メモリファブリック物理レイヤインタフェースにわたるパケット転送を管理する装置及び方法 | |
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 | |
US9612950B2 (en) | Control path subsystem, method and device utilizing memory sharing | |
WO2010082604A1 (ja) | データ処理装置、メモリ管理方法およびメモリ管理プログラム | |
WO2016006228A1 (ja) | 仮想化システムおよび仮想化方法 | |
US20180067683A1 (en) | Dynamic packet buffers with consolidation of low utilized memory banks |
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 |