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

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

Info

Publication number
CN102193874A
CN102193874A CN2011100694377A CN201110069437A CN102193874A CN 102193874 A CN102193874 A CN 102193874A CN 2011100694377 A CN2011100694377 A CN 2011100694377A CN 201110069437 A CN201110069437 A CN 201110069437A CN 102193874 A CN102193874 A CN 102193874A
Authority
CN
China
Prior art keywords
buffer
soc
address
ibpp
pointers
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
CN2011100694377A
Other languages
English (en)
Other versions
CN102193874B (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

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

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

Claims (21)

1.一种方法,包括:
管理片上系统SOC中的多个缓存地址;以及
如果所述SOC中的可用缓存地址的数量落在低阈值之下,则从所述SOC外部的存储器获得一个或多个缓存地址到所述SOC。
2.根据权利要求1所述的方法,还包括:
如果所述SOC中的可用缓存地址的所述数量超过高阈值,则从所述SOC向所述存储器分派另外的一个或多个缓存地址。
3.根据权利要求1所述的方法,
其中所述管理SOC中的所述多个缓存地址包括:在所述SOC中的内部缓存指针池中管理所述多个缓存地址;以及
其中所述从存储器获得所述一个或多个缓存地址还包括:从所述存储器中的外部缓存指针池获得所述一个或多个缓存地址。
4.根据权利要求1所述的方法,其中所述管理SOC中的所述多个缓存地址还包括:
管理所述SOC中的多个缓存指针,其中所述多个缓存指针的缓存指针包括所述多个缓存地址的相应缓存地址。
5.根据权利要求1所述的方法,其中所述从所述存储器获得所述一个或多个缓存地址到所述SOC还包括:
从所述SOC向客户端组件分配第一缓存地址;以及
响应于所述分配,如果所述SOC中的可用缓存地址的数量落在所述低阈值之下,则从所述存储器获得所述一个或多个缓存地址到所述SOC。
6.根据权利要求5所述的方法,其中所述分配第一缓存地址还包括:
从所述客户端组件接收针对缓存位置的分派请求;以及
响应于接收所述分派请求,通过向所述客户端组件分配第一缓存指针,来向所述客户端组件分配所述第一缓存地址,其中所述第一缓存指针包括所述第一缓存地址。
7.根据权利要求6所述的方法,还包括:
响应于所述向所述客户端组件分配所述第一缓存地址,将所述第一缓存地址标记为所述SOC中不可用的缓存地址。
8.根据权利要求5所述的方法,还包括:
由所述客户端组件至少部分地基于所述向所述客户端组件分配所述第一缓存地址,将所述客户端组件接收的数据分组缓存到对应于所述第一缓存地址的缓存位置。
9.根据权利要求3所述的方法,其中所述内部缓存指针池是第一内部缓存指针池,所述方法还包括:
从客户端组件接收针对缓存位置的分派请求,以缓存所述客户端接收的数据分组;
响应于所述分派请求,至少部分地基于(i)所述数据分组的大小、(ii)与所述第一内部缓存指针池相关联的缓存位置的大小、以及(iii)与所述第二内部缓存指针池相关联的缓存位置的大小,来选择所述第一内部缓存指针池和第二内部缓存指针池中的一个,以便向所述客户端组件分派缓存地址;以及
通过向所述客户端组件分配相应的缓存指针,来向所述客户端组件分配与所选内部缓存指针池相关联的缓存地址。
10.根据权利要求3所述的方法,其中所述内部缓存指针池是第一内部缓存指针池,所述方法还包括:
将所述第一内部缓存指针池与第一客户端组件相关联,从而向所述第一客户端组件分配来自于所述第一内部缓存指针池的缓存地址;以及
将第二内部缓存指针池与第二客户端组件相关联,从而向所述第二客户端组件分配来自于所述第二内部缓存指针池的缓存地址。
11.根据权利要求2所述的方法,其中所述分派另外的一个或多个缓存地址还包括:
从客户端组件接收释放请求,从而请求释放与第一缓存地址相关联的第一缓存位置;
响应于所述释放请求来释放所述第一缓存位置;
响应于释放所述第一缓存位置,将所述第一缓存地址标记为所述SOC中的可用缓存地址;以及
响应于所述标记,如果所述内部缓存指针池中的可用缓存地址的数量超过所述高阈值,则从所述SOC向所述存储器分派所述另外的一个或多个缓存地址。
12.根据权利要求1所述的方法,其中所述一个或多个缓存地址包括第一多个缓存地址,其中所述从所述存储器获得所述第一多个缓存地址到所述SOC还包括:
作为所述存储器和所述SOC之间的单个事务,从所述存储器向所述SOC传输所述第一多个缓存地址。
13.一种片上系统SOC,包括:
客户端组件;以及
缓存管理单元BMU,包括:
内部缓存指针池IBPP;以及
控制器,被配置用于
监视所述IBPP中未分配的缓存指针的数量,以及
如果所述IBPP中未分配的缓存指针的所述数量落在阈值之下,则从外部缓存指针池EBPP向所述IBPP分派一个或多个缓存指针。
14.根据权利要求13所述的SOC,其中所述控制器还被配置用于:
如果所述内部缓存指针池中未分配的缓存指针的所述数量超过高阈值,则从所述IBPP向所述EBPP分派另外的一个或多个缓存指针。
15.根据权利要求13所述的SOC,其中所述IBPP中的所述缓存指针指向所述SOC外部的存储器的相应缓存位置。
16.根据权利要求13所述的SOC,其中所述客户端组件是与所述BMU分离的处理核。
17.根据权利要求13所述的SOC,其中所述客户端组件是网络接口。
18.根据权利要求13所述的SOC,其中所述EBPP存储在所述SOC外部的存储器中。
19.一种方法,包括:
维护多个缓存指针池BPP,其中每个BPP在逻辑上在内部缓存指针池IBPP和外部缓存指针池EBPP中被分段;以及
针对每个BPP,向相应的IBPP动态分派多个缓存指针,并且向相应的EBPP动态分派另外的多个缓存指针。
20.根据权利要求19所述的方法,其中所述多个BPP包括第一BPP和第二BPP,并且其中所述方法还包括:
从第一组件接收缓存分派请求;
响应于接收所述缓存分派请求,选择所述第一BPP和所述第二BPP中的一个;以及
从与选择的BPP相关联的IBPP向所述第一组件分配缓存指针。
21.根据权利要求20所述的方法,还包括:
针对每个BPP,在所述相应的IBPP和所述相应的EBPP之间动态地重分派缓存指针,从而在所述IBPP中维护阈值数量的未分配缓存指针的。
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 true CN102193874A (zh) 2011-09-21
CN102193874B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809077A (zh) * 2014-01-29 2015-07-29 马维尔以色列(M.I.S.L.)有限公司 经由队列与缓冲器管理器对接
CN114281269A (zh) * 2021-12-31 2022-04-05 中企云链(北京)金融信息服务有限公司 数据缓存方法以及装置、存储介质、电子装置

Families Citing this family (10)

* 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
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的缓存管理方法、装置及设备
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080279208A1 (en) * 2003-02-08 2008-11-13 Jeffrey Joel Walls System and method for buffering data received from a network
US7664938B1 (en) * 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods

Family Cites Families (63)

* 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
US4612612A (en) * 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
US4682281A (en) * 1983-08-30 1987-07-21 Amdahl Corporation Data storage unit employing translation lookaside buffer pointer
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
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
DE60202136T2 (de) 2001-03-19 2005-12-01 International Business Machines Corp. Cache-eintrag-auswahlverfahren und -vorrichtung
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
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
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080279208A1 (en) * 2003-02-08 2008-11-13 Jeffrey Joel Walls System and method for buffering data received from a network
US7664938B1 (en) * 2004-01-07 2010-02-16 Xambala Corporation Semantic processor systems and methods

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809077A (zh) * 2014-01-29 2015-07-29 马维尔以色列(M.I.S.L.)有限公司 经由队列与缓冲器管理器对接
CN104809077B (zh) * 2014-01-29 2019-04-23 马维尔以色列(M.I.S.L.)有限公司 片上系统和管理缓冲器的方法
CN114281269A (zh) * 2021-12-31 2022-04-05 中企云链(北京)金融信息服务有限公司 数据缓存方法以及装置、存储介质、电子装置
CN114281269B (zh) * 2021-12-31 2023-08-15 中企云链(北京)金融信息服务有限公司 数据缓存方法以及装置、存储介质、电子装置

Also Published As

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

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
US9602436B2 (en) Switching device
US8725873B1 (en) Multi-server round robin arbiter
US8225012B2 (en) Dynamic allocation of a buffer across multiple clients in a threaded processor
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
US9063841B1 (en) External memory management in a network device
CN100449504C (zh) 一种基于bitmap表的缓存管理方法
US10678718B2 (en) Network device and method of operation
CN108139972A (zh) 硬件辅助数据压缩中的存储器碎片管理
US9529745B2 (en) System on chip and method of operating a system on chip
US10061513B2 (en) Packet processing system, method and device utilizing memory sharing
US9338219B2 (en) Direct push operations and gather operations
CN108139767B (zh) 针对网络装置实施分布式链接列表的系统及方法
US9582215B2 (en) Packet processing system, method and device utilizing memory sharing
US9612950B2 (en) Control path subsystem, method and device utilizing memory sharing

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