CN102193874B - 用于管理存储器的缓存管理器和方法 - Google Patents

用于管理存储器的缓存管理器和方法 Download PDF

Info

Publication number
CN102193874B
CN102193874B CN201110069437.7A CN201110069437A CN102193874B CN 102193874 B CN102193874 B CN 102193874B CN 201110069437 A CN201110069437 A CN 201110069437A CN 102193874 B CN102193874 B CN 102193874B
Authority
CN
China
Prior art keywords
buffer
address
pointer pond
pond
inner buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201110069437.7A
Other languages
English (en)
Other versions
CN102193874A (zh
Inventor
A·派斯
N·比沙拉
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Israel MISL Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co 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 Mawier International Trade Co Ltd, Marvell Israel MISL Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN102193874A publication Critical patent/CN102193874A/zh
Application granted granted Critical
Publication of CN102193874B publication Critical patent/CN102193874B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • 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

本公开涉及用于管理存储器的缓存管理器和方法。本公开的某些实施方式提供一种方法,该方法包括管理片上系统(SOC)中的多个缓存地址;以及如果SOC中的可用缓存地址的数量落在低阈值之下,则从SOC外部的存储器获得一个或多个缓存地址到SOC。还描述并且要求保护其他实施方式。

Description

用于管理存储器的缓存管理器和方法
相关申请的交叉引用
本申请要求2010年3月18日提交的美国专利申请No.61/615,327以及2010年5月25日提交的美国专利申请No.61/347,947的优先权,出于所有目的而将它们的全部说明书通过引用全文合并于此,除了与本说明书不一致的部分(如果有的话)。本申请涉及2010年11月16日提交的美国专利申请No.12/947,678(MP3444)、2011年3月1日提交的美国专利申请No.13/038,279(律师方案号MP3599)以及2011年3月1日提交的美国专利申请No.13/038,258(律师方案号MP3580),出于所有目的而将它们的全部说明书通过引用全文合并于此,除了与本说明书不一致的部分(如果有的话)。
技术领域
本公开的实施方式总体涉及缓存,并且更具体地涉及用于管理存储器的缓存管理器和方法。
背景技术
除非在此指出,本部分中描述的方法不是本公开中权利要求的现有技术,并且也不因为包括在本部分中而承认其是现有技术。
在传统计算系统中,缓存管理通常由处理核执行。例如,处理核分派缓存以便缓存数据,并且在从缓存清空缓存数据时释放缓存。这些操作消耗了相当多的处理核资源。
发明内容
在各种实施方式中,本公开提供一种方法,该方法包括管理片上系统(SOC)中的多个缓存地址;并且如果SOC中的可用缓存地址的数量落在低阈值之下,则从SOC外部的存储器获得一个或多个缓存地址到该SOC。此外,如果SOC中的可用缓存地址的数量超过高阈值,则从SOC向存储器分派另外的一个或多个缓存地址。还提供了一种片上系统(SOC),该片上系统包括客户端组件;以及缓存管理单元(BMU),该BMU包括内部缓存指针池(IBPP);和控制器,该控制器被配置用于监视IBPP中未分配的缓存指针的数量;并且如果IBPP中未分配的缓存指针的数量落在阈值之下,则从外部缓存指针池(EBPP)向IBPP分派一个或多个缓存指针。还提供一种方法,该方法包括维护多个缓存指针池(BPP),其中每个BPP在逻辑上在内部缓存指针池(IBPP)和外部缓存指针池(EBPP)中被分段;并且,针对每个BPP,向相应的IBPP动态分配多个缓存指针,并且向相应的EBPP动态分配另外的多个缓存指针。
附图说明
在以下的详细描述中,参考形成该描述一部分的附图,其中在所有图中相同的标号指示相同的部分,并且其通过实施方式的方式示出了本公开的原理。应当理解,可以利用其他实施方式,并且可以在不脱离本公开的范围的情况下做出结构性或逻辑性改变。因此,以下的详细描述不是限制意义的,并且根据本公开的实施方式的范围由所附权利要求书和其等同项限定。
图1示意性地示出了根据本公开实施方式的、包括片上系统的分组通信系统,该片上系统包括缓存管理单元。
图2示意性地示出了根据本公开实施方式的、图1的分组通信系统的示例外部缓存指针池。
图3更详细地示意性地示出了根据本公开实施方式的、图1的缓存管理单元。
图4示出了根据本公开实施方式的、用于操作图1和图3的分组通信系统的示例方法。
图5示出了根据本公开实施方式的、用于操作图1和图3的分组通信系统的另一示例方法。
具体实施方式
图1示意性地示出了根据本公开实施方式的、包括片上系统(SOC)10的分组通信系统100(此处还称作系统100)的所选部分,该片上系统包括缓存管理单元(BMU)24。没有示出系统100的其他部分以避免混淆本公开的教导。示出的SOC10还包括一个或多个处理核,例如处理核12a、...、处理核12M,其中M是适当的正整数。
系统100包括一个或多个网络接口,例如网络接口16a、网络接口16b、...、网络接口16P,其中P是适当的正整数。一个或多个网络接口(例如,网络接口16b)处于SOC10的外部,而一个或多个其余的网络接口(例如,网络接口16a、网络接口16c、...、网络接口16P)处于SOC10的内部,如图1所示。在一个实施方式中,网络接口16a、...、16P是网络设备,例如,网络交换机、网络路由器、网络端口、以太网端口(例如,千兆字节以太网端口)、网络控制器、具有网络连接性的任何适当设备等。在一个实施方式中,SOC10与网络交换机或路由器相关联。例如,网络交换机可以位于SOC10上。
在一个实施方式中,SOC10还包括共享的总线20,其被配置用于操作地耦合至网络接口16a、...、16P、处理核12a、...、12M,BMU24和存储器控制器40。尽管在图1中未示出,在各种其他实施方式中,代替共享的总线20,SOC10包括多个总线,例如,SOC10的两个组件之间的专用总线、SOC10的几个组件共享的总线等。存储器控制器40操作地耦合至存储器44并且被配置用于控制存储器44。在一个实施方式中,存储器控制器40被配置用于经由共享的总线20从一个或多个组件(例如,从BMU24,处理核和/或网络接口中的一个等)接收针对存储器44的读取指令和/或写入指令,并且将接收的指令转译为存储器44可接受的格式。即,存储器控制器40经由共享的总线20充当存储器44和系统100的各种其他组件之间的接口。如图1所示,在一个实施方式中,存储器44处于SOC10外部,尽管在其他实施方式中,存储器44处于SOC10的内部。在一个实施方式中,存储器44是动态随机访问存储器(DRAM)(例如,双数据速率三(DDR3)同步动态随机访问存储器(SDRAM))。
尽管SOC10通常包括若干其他组件(例如,一个或多个外围设备、接口等),但是出于清楚说明的目的而没有在图1中示出这些组件。例如,尽管在图1中未示出,但SOC10包括分组处理模块,其被配置用于处理数据分组流,并且执行一个或多个分组处理功能,例如数据分组的桥接。类似地,尽管在图1中未示出,但SOC10包括各种外围设备和物理层组件,诸如串行化器/解串行化器(SERDES)模块、一个或多个端口、网络交换机等。在一个实施方式中,SOC10基于SOC10的应用领域而包括各种其他组件。
在一个实施方式中,存储器44包括多个缓存位置,例如,缓存位置50_a1、...、50_aR、50_b1、...、50_bS、...、50_N1、...、50_NT,其中R、S、T和N是合适的正整数。存储器44中包括的每个缓存位置被配置用于缓存数据的一个或多个字节。作为示例,缓存位置50_a1、...、50_aR中的每个被配置用于存储数据的32字节,缓存位置50_b1、...、50_bS中的每个被配置用于存储数据的256字节,缓存位置50_N1、...、50_NT中的每个被配置用于存储数据的1056字节,以此类推。在一个实施方式中,一个或多个示出的缓存位置在存储器44中是连续的缓存位置。
处理核12a、...、处理核12M、网络接口16a、...、和/或网络接口16P(和/或SOC10的一个或多个其他组件,例如,SOC10中的接口控制器、SOC10中的引擎等,未在图1中示出)从BMU24接收服务(例如,BMU24向这些组件的一个或多个分派缓存位置),并且相应地,处理核12a、...、处理核12M、网络接口16a、...、和/或网络接口16P(和/或从BMU24接收服务的任何其他组件)在此也称作BMU24的客户端组件。当BMU24的客户端组件接收数据分组并且客户端组件旨在缓存数据分组时,客户端组件向BMU24传输针对缓存位置的分派请求(此处也称作缓存位置分派请求,或缓存分派请求)。基于该分派请求,BMU24向客户端组件分派缓存位置,如将在下面更详细讨论的。
在一个实施方式中,BMU24与多个缓存指针池(BPP)相关联,其中每个BPP包括缓存指针的列表,并且其中缓存指针是存储器44中的相应缓存位置的地址或指针。例如,尽管在图1中未示出,系统100包括BPP_a、...、BPP_N,即N个BPP。将每个BPP划分为两个逻辑段:内部缓存指针池(IBPP)和外部缓存指针池(EBPP)。图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包括BMU控制器28,其被配置用于针对每个IBPP来监视该IBPP(例如,IBPP32a)中未分配的缓存指针(例如,未分配给任何客户端组件、并且容易地可用于向客户端组件分配)的数量。例如,未分配的缓存指针包括可用于分配的相应缓存指针。尽管在图1中未示出,但是在一个实施方式中,针对每个IBPP,BMU控制器28维护高阈值和低阈值(尽管在另一个实施方式中,BMU控制器28针对不止一个IBPP维护共享的高阈值和共享的低阈值)。如此后将更详细地讨论的那样,针对每个BPP,BMU控制器28在相应的IBPP和相应的EBPP之间动态地传递缓存指针,使得IBPP中未分配的缓存指针的数量维持在相应的低阈值和高阈值之间。例如,如果IBPP中未分配的缓存指针的数量落在低阈值之下,则BMU控制器28从相应的EBPP(例如,EBPP36a)向IBPP32a分派一个或多个缓存指针。另一方面,如果IBPP中未分配的缓存指针的数量超过高阈值水平,则BMU控制器28从IBPP32a向EBPP36a分派另外的一个或多个缓存指针。因此,BMU控制器28确保针对每个IBPP,至少几个未分配的缓存指针总是容易地可用于向一个或多个客户端组件分派(尽管在一个实施方式中,当IBPP和相应的EBPP两者都没有剩余的未分配的缓存指针时,IBPP可能不具有容易地可用于分配的任何缓存指针)。换言之,SOC10上本地管理的至少几个缓存总是容易地可用于向客户端组件进行分派。
尽管在图1中未示出,但是在一个实施方式中,EBPP36a、...、36N存储在不同于包括缓存位置50_a1、...、50_NT的存储器的存储器中。例如,EBPP36a、...、36N和缓存位置50_a1、...、50_NT存储在两个或更多不同的存储器中。在一个实施方式中,一个或多个缓存位置可以在不同的存储器中,例如尽管未在图1中示出,但是缓存位置50_a1在存储器44中,而缓存位置50b1可以在不同于存储器44的存储器(SOC10内部或外部)中。
如上所述,每个BPP包括缓存指针的列表,其中缓存指针是相应缓存位置的地址或指针。例如,BPP_a包括对应于缓存位置50_a1、50a2、...、50aR的R个缓存指针,BPP_b包括对应于缓存位置50_b1、50b2、...、50bS的S个缓存指针,BPP_N包括对应于缓存位置50_N1、50N2、...、50NT的T个缓存指针,以此类推。
BMU24包括BMU控制器28,其被配置用于从EBPP向IBPP和/或从IBPP向EBPP动态分派与BPP相关联的缓存指针。在一个实施方式中,BMU控制器28对应于每个IBPP而存储计数M。例如,BMU控制器28存储对应于IBPPa、...、IBPPN的计数Ma、...、MN。在一个实施方式中并且如此后将更详细地讨论的那样,对应于IBPP的计数(例如,对应于IBPPa的计数Ma)保持IBPP中未分配的缓存指针的计数(例如未分配的缓存指针的数量)。BMU24还包括一个或多个其他组件(例如,传输端口、接收端口、传输队列等),出于清楚示意的目的在图1中未示出。
针对每个BPP,BMU24(和/或处理核12a、处理核12b和/或系统100的任何其他合适组件)初始地(例如,在系统100启动期间)向相应的IBPP分派BPP的某些缓存指针,并且向相应的EBPP分派BPP的剩余缓存指针。例如,R个缓存指针包括在BPP_a中,动态地向IBPP32a分派R1个缓存指针,并且向EBPP36b分派剩余的R2个缓存指针。
当客户端组件(例如,图1的处理核和/或网络接口中的一个、和/或系统100的任何其他合适组件,包括在SOC10中或在其外部)需要向缓存位置缓存数据分组时,客户端组件向BMU24传输缓存分派请求。基于接收的缓存分派请求,BMU24通过从合适的IBPP向客户端组件分配缓存指针来向客户端组件分配缓存位置。
将分派给IBPP的独立缓存指针添加到IBPP列表。它们是未分配的(例如,未分配给任何客户端并且容易地可用于向客户端组件进行分配)。当向客户端组件分配来自于IBPP的未分配的缓存指针(例如,来自于IBPP32a的缓存指针,对应于缓存位置50_a2)时,从IBPP列表移除该缓存指针,并且IBPP中未分配的缓存指针的数量减一。一旦向客户端组件分配缓存指针,则客户端组件可以将数据分组存储或写入相应的缓存位置中(例如,缓存位置50_a2中)。
另一方面,当缓存位置(例如,缓存位置50_a2)的内容由客户端组件读取时,缓存位置变可用(free),即,可以用于未来的存储。因而,相应的缓存指针(其早期被分配给客户端组件)由BMU24释放(即,将缓存指针添加到IBPP并且标记为未分配),使得该缓存指针可用于未来的分配。即,基于从缓存位置进行读取,释放相应的缓存指针,这导致相应IBPP中未分配的缓存指针的数量增加(例如,增加一)。
如上所述,对应于IBPP的计数(例如,对应于IBPPa的计数Ma)保持IBPP中未分配的缓存指针的计数。在一个实施方式中,当IBPP中未分配的缓存指针的数量减少(例如,由于从IBPP向一个或多个客户端组件分配缓存指针而减少)超过相应的低阈值时,BMU24从相应的EBPP向IBPP重分派一个或多个缓存指针。例如,由于从IBPP32a向一个或多个客户端组件分配缓存指针,IBPP32a中未分配的缓存指针的数量可以减少到低阈值之下。如果IBPP32a中未分配的缓存指针的数量减少超过低阈值,则从相应的EBPP(即,EBPP36a)向IBPP32a重分派多个缓存指针。多个重分派的缓存指针(例如,32个缓存指针)从EBPP36a向IBPP32a传输,并且存储在IBPP32a中,用于向一个或多个客户端组件进行未来可能的分派。缓存指针的此类重分派,从EBPP到相应的IBPP,确保了至少几个缓存指针总是在IBPP中可容易地用于向一个或多个客户端组件进行分派(例如,在IBPP中总有可用的几个未分配的缓存指针)。换言之,SoC上本地管理的至少几个缓存总是容易地可用于向客户端组件进行分派。
另一方面,由于一个或多个客户端组件释放缓存指针,所以IBPP中未分配的缓存指针的数量可以增加超过相应的高阈值。如果IBPP中未分配的缓存指针的数量增加超过高阈值,则从IBPP向相应的EBPP重分派多个缓存指针。缓存指针的此类重分派确保了IBPP不因为未分配的缓存指针而溢出,并且BMU24中的所有IBPP需要的存储空间相对有限。换言之,SoC上本地管理的缓存数量有限,从而维护了SoC上管理的易用性。
在一个实施方式中,低阈值和高阈值是可配置的。例如,低阈值和高阈值可以被配置用于确保在IBPP中总有可用的未分配的缓存指针,并且还确保了SOC10需要相对小的存储空间来存储IBPP的缓存指针。
IBPP和相应的EBPP之间的缓存指针的传输(例如,在缓存指针的重分派期间)可以发生在一批次缓存指针中。例如,将32个缓存指针作为单独批次从EBPP36a向IBPP32a重分派并且传输,或反之亦然(例如,在单个事务或单个传输中从EBPP36a向IBPP32a传输32个缓存指针,或反之亦然)。在一个实施方式中,缓存指针的此类批次传输(例如,代替分别传输32个缓存指针)减少了对于存储器44的事务数量、总线20上的负载、存储器控制器40上的负载和/或传输的带宽需求。
在一个实施方式中,在某些情况中,也可以将一个或多个缓存指针从EBPP直接分配给一个或多个客户端组件。例如,如果IBPP中未分配的缓存指针在从相应的EBPP向IBPP重分派并传输一批次缓存指针之前耗尽(例如,由于向客户端组件的进行多个缓存指针的快速分配而快速耗尽),则可以从EBPP向一个或多个客户端组件直接分配一个或多个缓存指针。
在一个实施方式中,SOC10处理例如从源自SOC10之外的多个业务流接收的数据分组。由SOC10处理的数据分组的大小可以剧烈、改变。在一个实施方式中,用于分配缓存指针的IBPP的选择是至少部分地基于将被缓存的数据分组的大小。例如,与单个BPP相关联的独立缓存位置具有相似的大小,而与不同BPP相关联的缓存位置具有不同的大小。例如,与BPP_a相关联的缓存位置50_a1、...、50_aR中的每个缓存位置具有32字节存储能力。另一方面,与BPP_b相关联的缓存位置50_b1、...、50_bS中的每个缓存位置具有156字节存储能力。因而,当客户端组件(例如,网络接口16a)希望缓存16字节数据分组时,BMU24从IBPP32a向客户端组件分配缓存指针(即,分配缓存位置50_a1、...、50_aR中的一个)。然而,当客户端组件希望缓存128字节数据分组时,BMU24从IBPP32b向客户端组件分配缓存指针(即,分配缓存位置50_b1、...、50_bS中的一个)。
在一个实施方式中,对于多核系统(诸如SOC10)每个BPP与相应的处理核相关联。例如,为处理核12a分配BPP_a(即,IBPP32a向处理核12a分配缓存指针),为处理核12b分配BPP_b(即,IBPP32b向处理核12b分配缓存指针),以此类推。即,每个处理核具有其自己的缓存区域。因此,在一个实施方式中,缓存指针池分配是基于将被缓存的数据分组的源(例如,数据分组是否源自处理核12a、处理核12b等)。
在一个实施方式中,为分配缓存指针而选择IBPP可以基于任何其他合适的标准。
在一个实施方式中,BMU24对缓存指针的管理和/或分配需要处理核12a、...、12M的最小监管或不需要它们监管。即,使用BMU24将处理核从缓存管理和/或分配任务中解放出来。从而大量节省了处理核的处理功率。相反,在传统缓存管理系统中,通常处理核在缓存管理和/或分配中有所涉及。
维护IBPP和相应的EBPP,并且从IBPP分配缓存指针(例如,代替从EBPP分配)具有若干优势。例如,一个或多个客户端组件与IBPP都位于SOC10内。因而,相比于从EBPP向客户端组件分配缓存指针,从IBPP向客户端组件分配缓存指针相对更快。此外,维护EBPP(例如,代替在IBPP中存储所有缓存指针)确保存储IBPP的缓存指针所需的存储大小较小(因为,与SOC10外部的存储器44中的存储相比,SOC10中的存储相对有限)。
在一个实施方式中,与缓存位置相关联的描述符包括缓存位置的物理地址和虚拟地址。在一个实施方式中,BMU24通过使用其物理地址来分配和/或释放缓存指针。在另一实施方式中,每个缓存位置(例如,缓存位置50_a1)包括物理地址和虚拟地址两者,因此,当BMU24分配和/或释放缓存指针时,分配和/或释放物理地址和虚拟地址两者。
处理虚拟地址的另一方式是向缓存本身写入每个虚拟地址(例如,在系统初始化阶段写入)。这样,当分配缓存指针时,BMU24仅向客户端传输缓存的物理地址。然后,如果客户端需要缓存的虚拟地址,则该客户端可以从缓存本身读取缓存的虚拟地址(例如,如果虚拟地址是32比特长度,则从缓存的前4个字节读取)。
在传统系统中,处理核通常管理缓存分配。由于处理核通常处理虚拟地址,所以在此类传统系统中,处理核仅保持对缓存位置的虚拟地址的跟踪。相反,系统100中的缓存位置由处理核、网络接口、BMU24和/或由BMU24的任何合适客户端组件访问。在一个示例中,网络接口和/或BMU24使用缓存位置的物理地址访问缓存位置,并且处理核使用缓存位置的虚拟地址访问缓存位置。因而,BMU24在相应的缓存位置描述符中维护缓存位置的物理地址和虚拟地址,从而支持由处理核和网络接口(和/或由BMU24的任何其他客户端组件)对缓存位置进行无缝访问。
图2示意性地示出了根据本公开实施方式的、图1的系统100的示例EBPP(例如,EBPP36a)。作为示例,EBPP36a包括八个缓存指针210a、...、210h,尽管在其他实施方式中,EBPP36a可以包括任何其他合适数量的缓存指针。
示出为没有任何阴影的缓存指针210c、...、210e可用于对IBPP32a的可能重分派。缓存指针210a、210b、210f、...、210h(例如,头地址和尾地址之间的缓存指针)不可用于重分派(例如,因为它们不是缓存指针列表的一部分),并且这些指针使用灰色阴影示出。尽管图2示出了存储缓存指针(例如,缓存指针210a、210b、210f、...、210h)的EBPP36a,其中缓存指针已经分派给IBPP32a,但是在一个实施方式中,EBPP36a不存储这些缓存指针。
在一个实施方式中,包括在EBPP36a中的缓存指针具有顺序地址。例如,缓存指针210b的地址可以通过递增缓存指针210a的地址来生成,缓存指针210c的地址可以通过递增缓存指针210b的地址来生成,以此类推。与EBPP36a相关联的开始地址表示EBPP36a的第一缓存指针(例如缓存指针210a)的地址(例如,虚拟地址和/或物理地址)。与EBPP36a相关联的停止地址表示EBPP36a的最后缓存指针(例如缓存指针210h)的地址(例如,虚拟地址和/或物理地址)。由于成批地从EBPP36a向IBPP32a(或反之亦然)重分派缓存指针,所以在一个实施方式中,EBPP36a的连续缓存指针210c、...、210e可用于向IBPP32a的可能的重分派。与EBPP36a相关联的头地址表示多个缓存指针(例如,缓存指针210c、210d、210e)的第一缓存指针(例如,缓存指针210c)的地址(例如,虚拟地址和/或物理地址),其可用于向IBPP32a的重分派。与EBPP36a相关联的尾地址表示多个缓存指针(例如,缓存指针210c、210d、210e)的最后缓存指针(例如,缓存指针210e)的地址(例如,虚拟地址和/或物理地址),其可用于向IBPP32a的重分派。EBPP36a的头地址和尾地址随在IBPP32a和EBPP36a之间分派和/或重分派缓存指针动态地改变。
在一个实施方式中,BMU24存储EBPP36a的开始地址和停止地址,以及当前头地址和尾地址。基于这些地址,BMU24知晓在EBPP36a中可用于向IBPP32a重分派的缓存指针的数量。例如,头地址和尾地址之间的差是可用于向IBPP32a的重分派的缓存指针数量的指示。
尽管在图2中未示出,单独的IBPP也包括相应的开始地址、停止地址、头地址和尾地址。例如,IBPP的头地址表示多个缓存指针的第一缓存指针的地址,其可用于向客户端组件的分配。类似地,IBPP的尾地址表示多个缓存指针的最后缓存指针的地址,其可用于向客户端组件的分配。如上所述,对应于IBPP的计数(例如,对应于IBPPa的计数Ma)保持IBPP中未分配的缓存指针的计数。例如,计数Ma通过保持IBPPa的头地址和尾地址之间的缓存指针的计数来保持IBPPa中未分配的缓存指针的数量的计数。
图3更详细地示意性地示出了根据本公开实施方式的、图1的BMU24。BMU24包括IBPP存储单元32,其存储IBPP32a、...、IBPP32N。BMU24还包括BMU控制器28、BMU直接存储器访问(DMA)312和注册文件316。
参考图1和图3,在一个实施方式中,BMU32还包括接收端口,其被配置用于经由共享的总线20从一个或多个客户端组件(例如,网络接口16c,图3中未示出)和/或存储器44接收数据和/或指令。例如,BMU24从一个或多个客户端组件接收缓存分派请求和缓存释放请求,并且如上所述,还从一个或多个EBPP接收重分派的缓存指针。BMU24还包括复用器344、传输队列324(例如,先入先出队列)以及传输端口328。
BMU24的接收端口304中接收的数据和/或指令在接收队列320(例如,先入先出队列)中排队,并且选择性地向BMU控制器28、IBPP中的一个、BMUDMA312和/或注册文件316传输。
BMU控制器28包括缓存指针地址池308,其被配置用于存储各个IBPP和EBPP的开始地址、停止地址、头地址和/或尾地址。BMU控制器28还包括写逻辑348、读逻辑352和复用器340。
在一个实施方式中,BMU控制器28例如通过监视缓存指针地址池308中的各种地址来保持对IBPP和EBPP的每个中的未分配的缓存指针的跟踪。基于对IBPP中未分配的缓存指针的数量与之前讨论的高阈值和低阈值的比较,BMU控制器28确定是否从IBPP向相应的EBPP或从EBPP向IBPP重分派缓存指针。在从EBPP向IBPP重分派缓存指针的这种情况中,BMUDMA312经由复用器344、传输队列324和传输端口328向EBPP传输拉取请求。
如果从IBPP向相应EBPP重分派缓存指针,则BMUDMA312经由复用器340和读逻辑352向IBPP传输推送请求(例如,以便于从IBPP向相应的EBPP重分派缓存指针)。基于接收推送请求,IBPP经由复用器344、传输队列324和传输端口328,向存储器44中的相应EBPP传输重分派的缓存指针。例如当来自IBPP存储单元32、BMUDMA312和注册文件316之一的输入被使能时,复用器344基于该使能而选择性地复用来自于这些组件的输入。
当BMU控制器28接收缓存分派请求时,BMU控制器28例如基于将被缓存的数据分组的大小、从其接收请求的客户端组件、各个IBPP中可用的未分配的缓存指针的数量等,来选择合适的BPP。对应于所选BPP的IBPP经由复用器340和读逻辑352接收分派请求,并且经由复用器344、传输队列324和传输端口328向客户端组件传输分派的缓存指针。
当BMU控制器28接收缓存释放请求时,相应的IBPP(例如,将释放其缓存指针的IBPP)经由写逻辑348(例如,其向IBPP存储单元32传输释放请求)接收释放请求,并且通过向IBPP列表写入缓存指针来释放缓存指针。
注册文件316被配置用于存储与BMU24相关联的各种配置信息。在一个示例中,注册文件316与BMU控制器28通信;接收BMU24的一个或多个其他组件接收的信息;以及周期性地更新注册文件316中存储的各种配置信息。
图4示出了根据本公开实施方式的、用于操作图1和图3的系统100的示例方法400。在404,BMU24(例如,BMU控制器28)分别向IBPP(例如IBPP32a)和EBPP(例如EBPP36a)分派缓存指针(例如,分派第一多个缓存指针和第二多个缓存指针),其中BPP(例如,BPP_a)包括IBPP和EBPP。
在此类分派之后,BMU24在408接收分派请求或在430接收释放请求。例如,在408,BMU24从第一组件(例如,从网络接口16a)接收针对缓存位置的分派请求。在412,BMU24通过从IBPP32a向第一组件分配第一多个缓存指针的相应第一缓存指针,来向第一组件分配第一缓存位置。在一个实施方式中,BMU24响应于分配的第一缓存位置,从未分配的缓存指针列表中删除第一缓存指针。
在416,BMU24确定IBPP32a中未分配的缓存指针的数量是否小于低阈值。如果未分配的缓存指针的数量不小于低阈值(即,操作416处为“否”),则该方法循环回到操作408或430中的一个。另一方面,如果未分配的缓存指针的数量小于低阈值(即,操作416处为“是”),则在420,BMU24从EBPP36a向IBPP32a动态地重分派第二多个缓存指针的第三多个缓存指针(例如,从EBPP36a向IBPP32a重分派多个缓存指针)。在420之后,方法循环回到操作408或430中的一个。
再次参考430的操作,BMU24从第二组件(例如,处理核12a)接收释放请求,从而请求释放与第一多个缓存指针的第二缓存指针相关联的第二缓存位置。在一个示例中,第二缓存位置在之前由BMU24向第二组件进行了分配。在434,BMU24释放第二缓存位置,并且将第二缓存指针标记为未分配。在438,BMU24确定IBPP32a中未分配的缓存指针的数量是否大于高阈值。如果IBPP32a中未分配的缓存指针的数量不大于高阈值(即,操作438处为“否”),则该方法循环回到操作408或430中的一个。另一方面,如果IBPP32a中未分配的缓存指针的数量大于高阈值(即,操作438处为“是”),则在442,BMU24从IBPP32a向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从外部存储器(例如,从外部缓存指针池,例如,存储器44中的EBPP36a)向SOC(例如,向IBPP32a)分派一个或多个缓存地址,并且然后在504继续监视。另一方面,在508,如果SOC中的可用缓存地址的数量超过高阈值,则在516,BMU控制器28从SOC向外部存储器分派另外的一个或多个缓存地址,并且然后在504继续监视。此外,在508,如果SOC中的可用缓存地址的数量介于低阈值和高阈值之间,则方法在504继续监视。
尽管在此已经示出了并描述了具体实施方式,但是应当注意,在不脱离本公开的范围的情况下,各种备选和/或等同实现可以替代示出和描述的具体实施方式。本公开涵盖完全落入明示或暗示的所附权利要求书范围内的所有方法、装置和制品。本申请旨在涵盖此处所公开实施方式的任何修改或变形。因此,其表明并且目的在于本公开仅受到权利要求书和其等同项的限制。

Claims (11)

1.一种用于管理存储器的方法,包括:
管理片上系统的第一内部缓存指针池和第二内部缓存指针池;
如果所述第一内部缓存指针池中的可用缓存地址的数量落在第一低阈值之下,则从所述片上系统外部的存储器的第一外部缓存指针池获得一个或多个缓存地址到所述第一内部缓存指针池;
如果所述第二内部缓存指针池中的可用缓存地址的数量落在第二低阈值之下,则从所述存储器的第二外部缓存指针池获得另外的一个或多个缓存地址到所述第二内部缓存指针池;
将所述第一内部缓存指针池与第一业务流相关联,从而从所述第一内部缓存指针池可用的缓存地址被分配给所述第一业务流的数据分组,其中所述第一业务流源自第一客户端组件;以及
将所述第二内部缓存指针池与第二业务流相关联,从而来自所述第二内部缓存指针池的可用缓存地址被分配给所述第二业务流的数据分组,其中所述第二业务流源自第二客户端组件,
其中从所述第一外部缓存指针池获得所述一个或者多个缓存地址到所述第一内部缓存指针池还包括:
从所述第一客户端组件接收针对缓存位置的分派请求,
响应于接收所述分派请求,通过向所述第一客户端组件分配来自所述第一内部缓存指针池的第一缓存指针,来向所述第一客户端组件分配来自所述第一内部缓存指针池的第一缓存地址,其中所述第一缓存指针包括所述第一缓存地址,
响应于向所述第一客户端组件分配所述第一缓存地址,将所述第一缓存地址标记为所述第一内部缓存指针池中的不可用缓存地址,
响应于将所述第一缓存地址标记为不可用缓存地址,如果所述第一内部缓存指针池中的可用缓存地址的数量落在所述第一低阈值之下,则从所述第一外部缓存指针池获得所述一个或多
个缓存地址到所述第一内部缓存指针池,
其中所述方法还包括:由所述第一客户端组件至少部分地基于向所述第一客户端组件分配所述第一缓存地址,来将由所述第一客户端组件接收的数据分组缓存到对应于所述第一缓存地址的缓存位置。
2.根据权利要求1所述的方法,还包括:
如果所述第一内部缓存指针池中的可用缓存地址的所述数量超过高阈值,则从所述第一内部缓存指针池向所述第一外部缓存指针池分派第一一个或多个缓存地址。
3.根据权利要求1所述的方法,其中所述管理所述第一内部缓存指针池还包括:
管理所述第一内部缓存指针池中的多个缓存指针,其中所述多个缓存指针的缓存指针包括相应缓存地址。
4.根据权利要求1所述的方法,其中所述第一客户端组件和所述第二客户端组件中的每一个是处理核和网络接口之一。
5.根据权利要求2所述的方法,其中所述分派所述第一一个或多个缓存地址还包括:
从所述第一客户端组件接收释放请求,从而请求释放与第二缓存地址相关联的第一缓存位置;
响应于所述释放请求来释放所述第一缓存位置;
响应于释放所述第一缓存位置,将所述第二缓存地址标记为所述第一内部缓存指针池中的可用缓存地址;以及
响应于将所述第二缓存地址标记为所述第一内部缓存指针池中的可用缓存地址,如果所述第一内部缓存指针池中的可用缓存地址的数量超过所述高阈值,则从所述第一内部缓存指针池向所述第一外部缓存指针池分派所述第一一个或多个缓存地址。
6.根据权利要求1所述的方法,其中所述一个或多个缓存地址包括第一多个缓存地址,其中所述从所述第一外部缓存指针池存储器获得所述第一多个缓存地址到所述第一内部缓存指针池还包括:
作为所述第一外部缓存指针池存储器和所述第一内部缓存指针池之间的单个事务,从所述第一外部缓存指针池存储器向所述第一内部缓存指针池传输所述第一多个缓存地址。
7.一种片上系统,包括:
客户端组件;以及
缓存管理单元,包括:
第一内部缓存指针池;
第二内部缓存指针池;以及
控制器,被配置用于
监视(i)所述第一内部缓存指针池中未分配的缓存指针的数量,以及(ii)所述第二内部缓存指针池中的未分配缓存指针的数量,
如果所述第一内部缓存指针池中未分配的缓存指针的所述数量落在第一阈值之下,则从第一外部缓存指针池向所述第一内部缓存指针池分派第一一个或多个缓存指针,其中所述第一内部缓存指针池中的第一一个或者多个缓存指针中的每一个指向外部于所述片上系统的存储器的相应的缓存位置,
如果所述第二内部缓存指针池中的未分配缓存指针的数量落在第二阈值之下,则向所述第二内部缓存指针池分配来自第二外部缓存指针池的第二一个或者多个缓存指针,以及
如果所述第一内部缓存指针池中的未分配缓存指针的数量超过高阈值,则向所述第一外部缓存指针池分配来自所述第一内部缓存指针池的第三一个或者多个缓存指针。
8.根据权利要求7所述的片上系统,其中所述客户端组件是与所述缓存管理单元分离的处理核。
9.根据权利要求7所述的片上系统,其中所述客户端组件是网络接口。
10.根据权利要求7所述的片上系统,其中所述第一外部缓存指针池存储在所述片上系统外部的存储器中。
11.一种用于管理存储器的方法,包括:
管理片上系统的第一内部缓存指针池中的多个缓存地址;
如果所述第一内部缓存指针池中的可用缓存地址的数量落在低阈值之下,则从所述片上系统外部的存储器的外部缓存指针池获得一个或多个缓存地址到所述第一内部缓存指针池;
从客户端组件接收针对缓存位置的分派请求,以缓存由所述客户端接收的数据分组;
响应于所述分派请求,至少部分地基于(i)所述数据分组的大小、(ii)与所述第一内部缓存指针池相关联的缓存位置的大小、以及(iii)与第二内部缓存指针池相关联的缓存位置的大小,来选择所述第一内部缓存指针池和所述第二内部缓存指针池中的一个,以便向所述客户端组件分派缓存地址;以及
通过向所述客户端组件分配相应的缓存指针,来向所述客户端组件分配与所选内部缓存指针池相关联的缓存地址。
CN201110069437.7A 2010-03-18 2011-03-17 用于管理存储器的缓存管理器和方法 Expired - Fee Related CN102193874B (zh)

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
CN102193874A CN102193874A (zh) 2011-09-21
CN102193874B true CN102193874B (zh) 2015-11-25

Family

ID=44601969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110069437.7A Expired - Fee Related CN102193874B (zh) 2010-03-18 2011-03-17 用于管理存储器的缓存管理器和方法

Country Status (4)

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

Families Citing this family (12)

* 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
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
JP5968463B2 (ja) * 2012-01-06 2016-08-10 インテル コーポレイション データを別の記憶装置にコピーせずにデータソースによりバッファに格納されたデータを処理するためのポインタのスワッピング
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 中企云链(北京)金融信息服务有限公司 数据缓存方法以及装置、存储介质、电子装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664938B1 (en) * 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods

Family Cites Families (64)

* 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
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
JP4410467B2 (ja) 2001-03-19 2010-02-03 インターナショナル・ビジネス・マシーンズ・コーポレーション キャッシュ入力の選択方法および装置
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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7664938B1 (en) * 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods

Also Published As

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

Similar Documents

Publication Publication Date Title
CN102193874B (zh) 用于管理存储器的缓存管理器和方法
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
US10044646B1 (en) Systems and methods for efficiently storing packet data in network switches
CN104090847B (zh) 一种固态存储设备的地址分配方法
US10740006B2 (en) System and method for enabling high read rates to data element lists
US10055153B2 (en) Implementing hierarchical distributed-linked lists for network devices
US8312243B2 (en) Memory management in network processors
CN108984280B (zh) 一种片外存储器的管理方法和装置、计算机可读存储介质
US9942169B1 (en) Systems and methods for efficiently searching for stored data
CN101847127A (zh) 一种内存管理方法及装置
CN100449504C (zh) 一种基于bitmap表的缓存管理方法
CN101499956A (zh) 分级缓冲区管理系统及方法
CN108139972A (zh) 硬件辅助数据压缩中的存储器碎片管理
US20190220425A1 (en) Network device and method of operation
US9785367B2 (en) System and method for enabling high read rates to data element lists
EP3777059A1 (en) Queue in a network switch
US10061513B2 (en) Packet processing system, method and device utilizing memory sharing
CN108139767B (zh) 针对网络装置实施分布式链接列表的系统及方法
US20140280716A1 (en) Direct push operations and gather operations
US9582215B2 (en) Packet processing system, method and device utilizing memory sharing
US9612950B2 (en) Control path subsystem, method and device utilizing memory sharing
US9965211B2 (en) Dynamic packet buffers with consolidation of low utilized memory banks
CN116303109A (zh) 内存管理系统、方法、装置及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200604

Address after: Hamilton, Bermuda

Co-patentee after: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Co-patentee before: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee before: MARVELL WORLD TRADE Ltd.

Effective date of registration: 20200604

Address after: Ford street, Grand Cayman, Cayman Islands

Co-patentee after: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Co-patentee before: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee before: Marvell International Ltd.

Effective date of registration: 20200604

Address after: Singapore City

Co-patentee after: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Co-patentee before: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee before: Kaiwei international Co.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200714

Address after: Singapore City

Co-patentee after: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Co-patentee before: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee before: Kaiwei international Co.

Effective date of registration: 20200714

Address after: Ford street, Grand Cayman, Cayman Islands

Co-patentee after: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Co-patentee before: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee before: Marvell International Ltd.

Effective date of registration: 20200714

Address after: Hamilton, Bermuda

Co-patentee after: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Co-patentee before: MARVELL ISRAEL (M.I.S.L) Ltd.

Patentee before: MARVELL WORLD TRADE Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20151125

CF01 Termination of patent right due to non-payment of annual fee