CN100499565C - 自由表和环形数据结构管理 - Google Patents

自由表和环形数据结构管理 Download PDF

Info

Publication number
CN100499565C
CN100499565C CNB038239884A CN03823988A CN100499565C CN 100499565 C CN100499565 C CN 100499565C CN B038239884 A CNB038239884 A CN B038239884A CN 03823988 A CN03823988 A CN 03823988A CN 100499565 C CN100499565 C CN 100499565C
Authority
CN
China
Prior art keywords
data
buffer
storage
memory
information
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
CNB038239884A
Other languages
English (en)
Other versions
CN1757202A (zh
Inventor
G·沃尔里奇
J·斯维尼
J·吉尔福德
M·罗森布卢思
D·伯恩斯坦
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1757202A publication Critical patent/CN1757202A/zh
Application granted granted Critical
Publication of CN100499565C publication Critical patent/CN100499565C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection

Abstract

一种管理自由表和环形数据结构的方法,自由表和环形数据结构可用来存储日志信息,通过在高速缓存存储器中存储和修改描述自由表结构或环形数据结构的信息,也可用来存储描述缓冲器队列结构的信息。

Description

自由表和环形数据结构管理
背景
本申请涉及自由表和环形数据结构管理。
网络处理器可以通过在所链接的存储缓冲器中存储接收到的数据来动态地缓存数据包。当与特定缓冲器有关的数据传出后,该缓冲器可以返回到用来存储可用缓冲器的称作“自由表”的池中。
网络处理器还可以使用静态分配的、例如预定义的存储缓冲器来缓存数据包。一个环形数据结构包括这种预定义的存储单元。可以使用一个指针来跟踪环形数据结构的插入位置。可用另一个指针来跟踪环形数据结构的移出位置。
有效地管理大量的池和缓冲器在网络处理器的运转和成本上可能是一个重要的因素。
附图的简要说明
图1是说明包括流水线网络处理器的系统的框图。
图2是说明示范性的流水线网络处理器的框图。
图3是示范性的高速缓存数据结构的框图。
图4是说明依照一种实现的队列入队请求流程的流程图。
图5是说明依照一种实现的入队操作的框图。
图6是说明依照一种实现的跟在队列入队操作后面的入队操作的框图。
图7是说明依照一种实现的队列离队请求流程的流程图。
图8是说明依照一种实现的离队操作的框图。
图9是说明依照一种实现的跟在队列离队操作后面的离队操作的框图。
图10是依照一种实现的包括自由表的常驻存储控制器的指针的高速缓存数据结构的框图。
图11是依照一种实现的包括入队操作之前的自由表的常驻存储控制器指针的高速缓存数据结构的框图。
图12是给出依照一种实现的自由表的入队操作的框图。
图13是依照一种实现的包括离队操作之前的自由表的常驻存储控制器的指针的高速缓存数据结构的框图。
图14是说明依照一种实现的自由表的离队操作的框图。
图15是依照一种实现的包括存储器环形数据结构的常驻存储控制器的指针的高速缓存数据结构的框图。
图16是说明依照一种实现的放进命令操作的框图。
图17是说明依照一种实现的取出命令操作的框图。
详细描述
参照图1,用于处理数据包的网络系统10包括与网络装置14的输入端耦合的数据包源12,例如与其它网络装置的接口。网络装置14的输出端与数据包的目的地16耦合,例如与其它网络装置的接口。网络装置14可以包括具有存储器的网络处理器18,用于对存储器数据结构进行操作。处理器执行指令并用配置成存储和将数据包转发到指定目的地的存储器数据结构来操作。网络处理器接收的数据包是网络包。网络装置14可包括例如网络交换机或网络路由器或是它们的组成部分。数据包源12可以包括通过以高速数据包传输线速度、例如光载波10吉比特线(即,OC-192)或其它线路速度工作的通信路径与其它网络装置相连接的接口。数据包的目的地16可以包括一个类似的网络连接或接口。
参照图2,网络处理器18有多个编程引擎,分别用作接收流水线21、发送调度器24、队列管理器27和发送流水线28。每个编程引擎具有多条目内容可寻址存储器(CAM),用以跟踪N个最近使用的队列描述符,其中N是CAM中的条目数。例如,队列管理器27包括CAM29。网络处理器18包括与第一存储器30和第二存储器32耦合的存储控制器34。第三存储器17包括使引擎按以下所详述的进行操作的软件指令。尽管所描述的实现使用了分开的存储器,但单个存储器也可用来执行上面提到的第一和第二存储器的任务。存储控制器34按照接收命令的顺序来发起队列命令并与队列管理器27交换数据。第一存储器30具有用于存储数据的存储空间。第二存储器32与队列管理器27和网络处理器18的其它组件耦合。
如图2所示,第一存储器30和第二存储器32驻留在网络处理器18的外部。或者,第一存储器30和/或第二存储器32可在网络处理器18的内部。处理器18还包括与耦合到接收和发送缓冲器20、36的接收总线和发送总线的硬件接口6、8。
接收缓冲器20配置成用来缓存从数据包源12接收的数据包。每个数据包可包含表示要发送到目的地的实际数据的真实数据部分、表示数据源的网络地址的源数据部分以及表示数据目的地的网络地址的目的地数据部分。接收流水线21与接收缓冲器20的输出端耦合。接收流水线21还与可具有先进先出(FIFO)数据结构的接收环22耦合。接收环22与队列管理器27耦合。
接收流水线21配置成用来处理来自接收缓冲器20的数据包,并在第二存储器32中包含在存储地址38中的数据缓冲器中存储数据包。接收流水线21通过接收环22向队列管理器27发出请求23,请求在队列的末尾附加一个缓冲器。
一旦接收流水线21处理了数据包,接收流水线可产生发往队列管理器27的入队请求23。接收流水线21可包括以流水线方式工作的多线程编程引擎。引擎接收数据包,将它们分类,并根据分类将它们存储在输出队列里。这种接收处理确定每个包的输出队列。通过流水线作业,编程引擎可以完成指令执行的第一阶段,当该指令进行到下一个阶段,可开始一个新的指令。当等待第一个指令完成时,处理器不必搁置不用。因此,流水线作业可以改进系统性能。入队请求表示在第一存储器30中的缓冲器描述符队列48中的最后一个缓冲器描述符后面追加一个描述新接收的缓冲器的缓冲器描述符的请求。接收流水线21在产生入队请求前可以缓存几个数据包。因此,可以减少所产生的入队请求的总数。
发送调度器24通过接收环22与队列管理器27耦合,并负责根据指定的标准产生离队请求25。这个标准可包括特定的缓冲器队列中的缓冲器数目达到预定水平的时间。发送调度器24确定数据包的发送顺序。离队请求25表示将第一缓冲器从队列48中移出的请求。发送调度器24还可包括用于产生离队请求25的调度算法,如“循环法”、基于优先级或其它调度算法。发送调度器24可配置成使用避免拥塞技术,如包括对数据包流量计算统计数据的早期随机检测(RED)。对于每个队列,发送调度器保留一个表示队列是否空的位。
在一种实现中,由单个多线程的编程引擎提供的队列管理器27处理来自接收流水线21的入队请求以及来自发送调度器24的离队请求。通过对每个队列维护链表数据结构,队列管理器27允许动态的存储器分配。
队列管理器27包括配置成用以管理描述队列的数据结构(“队列描述符”)的高速缓存的软件组件。如图3所示,队列描述符46a包括指向队列的第一个条目A的头指针50a、指向队列的最后一个条目C的尾指针50b和表示队列当前条目数的计数字段50c。所有队列描述符的头指针地址的字定位都应该是2的幂,因为当访问存储器以寻找队列描述符时,以2的幂的方式工作是更有效的。
参照图2,高速缓存有标记部分44a和数据存储部分44b。高速缓存的标记部分44a驻留在队列管理器27内,高速缓存的数据存储部分44b驻留在存储控制器34内。标记部分44a由CAM29来管理,其中可包括配置成用来实现高速缓存条目置换策略的硬件组件,如最近最少使用(LRU)策略。高速缓存中的每个条目的标记部分指向用来执行入队或离队操作的最后N个队列描述符中的一个。存储器中队列描述符的位置被存储成CAM条目。相应的队列描述符被存储在CAM中输入的地址处的存储控制器34的数据存储部分44b中。放入队列中的实际数据(例如包含在图3中的存储地址38a-38c中)存储在第二存储器32中,并由位于第一存储器30中的缓冲器描述符(例如48a)的队列来引用。
队列管理器27可交替地服务于入队和离队请求。对于单缓冲器数据包,入队请求引用数据存储部分44b中的条目的尾指针。离队请求引用数据存储部分44b中的条目的头指针。由于高速缓存包括有效的更新的队列描述符,因此当要求对同一个队列几乎同时进行入队和离队操作时,可以不需要锁定对队列描述符的访问。因此,可以避免锁定带来的原子访问和等待时间。
数据存储部分44b保留一定数量的最近使用(MRU)队列描述符46的列表。每个队列描述符包括指向相应的缓冲器描述符MRU队列48的指针。在一种实现中,数据存储部分44b中的MRU队列描述符46的数目是16。每个MRU队列描述符46由驻留在标记部分44a中的一组指针45来引用。此外,每个MRU队列描述符46与唯一的标识符相关联,以便可以很容易识别它。
参照图3,说明高速缓存的操作。标记部分44a中的第一条目与指向驻留在数据存储部分44b中的MRU队列描述符46a的指针45a相关。队列描述符46a与下面详细讨论的缓冲器描述符的MRU队列相关。队列描述符46a包括指向第一缓冲器描述符A的头指针50a和指向最后一个缓冲器描述符C的尾指针50b。可选的计数字段50c维护缓冲器描述符队列48a中的缓冲器描述符的数量。在这种情况下,计数字段50c被设置成值“3”,表示缓冲器描述符A、B、C。如下面进一步详细论述的,可以修改头指针50a、尾指针50b和计数字段50c以响应入队和离队请求。
缓冲器描述符是描述缓冲器的数据结构。缓冲器描述符可包括地址字段、单元计数字段和包结束(EOP)位。地址字段包括数据缓冲器的存储地址。因为每个数据缓冲器可进一步分成单元,所以单元计数字段包括有关缓冲器的单元计数的信息。EOP位用来表示缓冲器是一个包中的最后一个缓冲器。
再参照图2,本技术在可包括静态随机存取存储器(SRAM)的第一存储器30中的缓冲器描述符的地址与可包括动态随机存取存储器(DRAM)的第二存储器32中的数据缓冲器的地址之间实现了隐含的映射53。在此上下文中,队列是描述可存储在不连续地址处的数据缓冲器的缓冲器描述符的有序列表。
例如,如图3所示,除了队列中最后一个缓冲器描述符外,队列48a中的每个缓冲器描述符A、B都包括指向队列中下一个描述符缓冲器的缓冲器描述符指针55a、55b。队列中的最后一个缓冲器描述符C的缓冲器描述符指针55c是空的。
再参照图2,未高速缓存的队列描述符50存储在第一存储器30中,当前不被数据存储部分44b引用。每个未高速缓存的队列描述符50还可与唯一标识符相关联。此外,每个未高速缓存的队列描述符50包括指向相应的缓冲器描述符的未高速缓存队列52的指针51。每个缓冲器描述符的未高速缓存队列52又包括指向驻留在第二存储器32中的存储地址38中包含的相应数据缓冲器的指针57。
每个入队请求包括与相应数据包相关的数据缓冲器的地址38。此外,每个入队或离队请求包括指定与存储地址38中包含的数据缓冲器相关的未高速缓存的队列描述符50或MRU队列描述符46的标识符。
参照图4和5,响应于接收入队请求23,队列管理器27向存储控制器34产生100一个入队命令13。在所述实例中,入队请求23与包含在存储地址38d中并在存储地址38c中包含的数据缓冲器后面接收的一个后续数据缓冲器相关。入队命令13可包括指定驻留在数据存储部分44b中的MRU队列描述符46的信息。假定入队请求23包括指定队列描述符46a的信息和与数据缓冲器有关的地址38d。当前指向队列48a中的缓冲器描述符C的尾指针50b返回到队列管理器27。评估入队请求23以确定指定的队列描述符是否当前在数据存储部分44b中。如果否,则执行置换任务110。稍后讨论置换任务。
与缓冲器描述符C相关的缓冲器描述符指针55c从空值变化,设置102成指向后面一个缓冲器描述符D。这通过将缓冲器描述符指针55c设置成缓冲器描述符D的地址来实现。如线53d所示,缓冲器描述符D指向存储地址38d中存储接收数据包的数据缓冲器。
一旦设置了缓冲器描述符指针55c,如虚线61所示,尾指针50b被设置104成指向缓冲器描述符D。这通过将尾指针50b设置成缓冲器描述符D的地址来实现。因为现在缓冲器描述符D是队列48a中的最后一个缓冲器描述符,所以缓冲器描述符指针55d的值是空。此外,计数字段50c中的值更新为“4”以反映队列48a中的缓冲器描述符的数目。结果,通过使用驻留在数据存储部分44b的队列描述符46a将缓冲器描述符D加到队列48a中。
如果入队命令13包括指定不属于MRU队列描述符46的队列描述符的队列标识符,则队列管理器27用指定的队列描述符代替特定MRU队列描述符46。结果,指定的队列描述符和相应的缓冲器描述符的未高速缓存队列被数据存储部分44b引用。此外,对于入队命令,与指定的队列描述符相关的缓冲器描述符的新引用队列52被更新成指向包含在存储地址38中用于存储接收数据包的特定数据缓冲器的存储地址。由于MRU队列描述符46已经在数据存储部分44b中,因此该队列描述符可迅速而有效地被更换。
参照图6,处理器18可接收106一个与相同队列描述符46a和队列48a相关的后续入队请求。例如,假定队列管理器27接收与新到达的数据缓冲器38e相关的后续入队请求。还假定包含在存储地址38e中的数据缓冲器与队列描述符46a相关。如虚线62所示,尾指针50b可被设置成指向缓冲器E。由于尾指针50b已经在数据存储部分44b中,因此不必从存储器中检索就可以更新尾指针。结果,可以减小对缓冲器的同一队列的紧接的入队操作的等待时间。因此,队列管理器可管理对大量队列的请求以及仅对少数队列或单个队列的连续请求。此外,队列管理器27发出命令,向存储控制器34指示使用多个数据存储部分条目中的哪一个来执行命令。
参照图7和图8,响应接收200离队请求25,队列管理器27向存储控制器34产生200离队命令15。在这个实例中,离队请求与队列描述符46a相关,并表示从第二存储器32中检索数据缓冲器的请求。一旦检索到数据缓冲器,将缓冲器从第二存储器32发送到发送缓冲器36。离队请求25包括指定队列描述符46a的信息。例如,队列描述符46a的头指针50a指向第一缓冲器描述符A,A又指向存储地址38a中的数据缓冲器。结果,存储地址38a中的数据缓冲器返回到队列管理器27。
如虚线64所示,头指针50a被设置成202指向队列48a中的下一个缓冲器描述符B。这可通过将头指针50a设置成缓冲器B描述符的地址来实现。计数字段50c中的值更新为“4”,以反映剩下的缓冲器描述符的数目(B到E)。结果,通过使用驻留在数据存储部分44b中的队列描述符46a将包含在存储地址38a中的数据缓冲器从队列48a中检索出来。
队列管理器27可接收204与同一队列描述符相关的后续离队请求25。假定,例如,队列管理器27接收与队列描述符46a相关的另一个离队请求25。参照图9,如线64所示,因为前面提到的缓冲器A已经被移走,所以头指针46a当前指向现在是第一缓冲器的缓冲器B。不必首先从存储器中检索头指针50a就可将其设置成206指向缓冲器C,如虚线65所示,因为头指针已经在数据存储部分44b中。结果,可以减少对于同一缓冲器队列的接连离队操作的等待时间。
然而,在一些情况下,当前正占据数据存储部分44b的一个条目的队列描述符46a与存储地址38b中的数据缓冲器无关。在该情况下,处理器18执行208与如上所述类似的置换任务。一旦置换任务完成,就如上所述执行与离队请求相关的操作。
队列描述符的高速缓存可以用分布式的方式来完成,使得标记部分44a驻留在存储控制器34中,数据存储部分44b驻留在第一存储器30中。可以快速处理从接收缓冲器20接收的存储地址38中包含的数据缓冲器。例如,作为头指针的第一个离队存储器读取的结果,一旦用于那个队列描述符的头指针被更新,就可开始一对离队命令中的第二个命令。类似地,作为尾指针的第一个入队存储器读取的结果,一旦用于那个队列描述符的尾指针被更新,就可开始一对入队命令中的第二个命令。此外,使用缓冲器队列,如缓冲器链表,允许用灵活的方式处理大量队列。数据缓冲器可快速地进入缓冲器队列和从缓冲器队列中离开。
不用来存储描述数据缓冲器队列结构的信息的高速缓存的数据存储部分44b的条目可用来存储(1)描述自由表结构的信息,作为非高速缓存的或永久存在的条目;(2)描述存储环结构的信息,作为非高速缓存的或永久存在的条目;(3)描述日志结构的信息,作为永久存在的条目;或者(4)这些用法的任意组合。永久存在的条目是指那些不会被移走以便为新条目腾出空间的条目。
自由表用作当前未使用的缓冲器的池。动态分配存储器的系统可以将自由表用作缓冲器贮存器。这种系统从自由表中为新接收的数据分配可用的自由存储空间。当接收一个数据包或单元时,按需要从池中取出条目。当该数据包或单元被发送或被丢弃时,条目返回到池中。当使用链表数据结构实现自由表时,使用离队命令从当前未使用的缓冲器队列的前面取出一个新缓冲器。类似地,使用入队命令可将终止使用的缓冲器添加到当前未使用缓冲器队列的末尾。
或者,当使用堆栈数据结构来实现自由表时,可使用出栈命令为新接收的数据从堆栈中取出一个新缓冲器。可使用进栈命令将终止使用的缓冲器添加到堆栈中。因为堆栈是一个后进先出(LIFO)的数据结构,所以缓冲器以与它们入栈时相反的顺序被取出。最近加入堆栈的缓冲器被第一个取出。
如图10所示,不用来存储MRU队列描述符46的高速缓存的数据存储部分44b的多个条目146可用来存储描述一个或多个自由表结构的队列描述符146a。在一种实现中,描述数据存储部分中的数据缓冲器的队列描述符46的数目是16,高速缓存的数据存储部分44b中的条目总数是64。
用于存储描述自由表结构的队列描述符的数据存储部分的条目146可以是非高速缓存的或永久存在的条目。因此,对于每个描述想要存储的自由表的结构的队列描述符,取置换任务只可在系统初始化时执行一次,以将它们装载到队列的数据存储部分的条目的子集146中。
当包含在缓冲器中的数据被发送后,终止目前缓冲器的使用,缓冲器返回到自由表中以补充当前未使用缓冲器池。处理引擎线程,如提供队列管理器27的线程,可以向引用自由表条目146的存储控制器产生入队命令。
参照图11,说明高速缓存的操作。在这个实例中,描述自由表148a结构的队列描述符146a包括指向自由表中第一缓冲器V的头指针150a、指向自由表中的最后一个缓冲器Y的尾指针150b和保持自由表148a中缓冲器数目的计数字段150c。在这种情况下,计数字段150c被设置成值“4”以表示缓冲器V、W、X和Y。如下进一步详细论述,可以修改头指针150a、尾指针150b和计数字段150c以响应与自由表相关的入队和离队命令。
自由表148a中的每个缓冲器,如第一缓冲器V,包含指向下一个缓冲器W的缓冲器指针155v。与最后一个缓冲器Y相关的缓冲器指针155y有一个被设置成空的值以表示它是队列148a中的最后一个缓冲器。
在图12描述的实例中,当前指向缓冲器Y的尾指针150b返回到队列管理器27。与缓冲器Y相关的缓冲器指针155y当前包含表示它是自由表148a中最后一个缓冲器的空值。缓冲器指针155y被设置成指向后续缓冲器Z,该缓冲器刚刚结束使用。这可通过将缓冲器指针155y设置成缓冲器Z的地址来实现。
一旦已经设置缓冲器指针155y,如虚线161所示,尾指针150b被设置成指向缓冲器Z。这可通过将尾指针150b设置成缓冲器Z的地址来实现。此外,将计数字段150c中的值更新为“5”以反映自由表148a中缓冲器的数目。结果,通过使用驻留在数据存储部分44b中的队列描述符146a,将缓冲器Z添加到自由表148a中。
当存储和转发处理器接收新数据包时,系统从自由表中分配一个缓冲器。
参照图13,说明高速缓存的操作。在这个实例中,处理引擎线程,如提供队列管理器27的线程,可以向引用自由表条目的存储控制器34产生离队命令。离队请求与描述自由表结构的信息146a相关并表示从存储器中检索未使用缓冲器的请求。一旦检索到未使用的缓冲器,可将它从存储器发送到接收缓冲器。离队请求25包括指定自由表结构的信息146a。描述自由表结构的信息146a的头指针150a指向自由表中的第一缓冲器V。结果,未使用的缓冲器V返回到队列管理器。
参照图14,如虚线164所示,头指针150a被设置成指向自由表148a中的下一个缓冲器W。这可以通过将头指针150a设置成缓冲器W的地址来实现。计数字段150c的值更新成“4”以反映剩余的缓冲器的数目(W到Z)。结果,通过使用驻留在数据存储部分44b中的描述自由表结构的信息146a,将未使用的缓冲器V从自由表148a中检索出来,处理器可用该缓冲器V存储新接收的数据包或单元。
如上所述,引用描述高速缓存中自由表结构的信息的入队操作被用来将缓冲器返回到该自由表。引用描述高速缓存中自由表结构的信息的离队操作被用来从该自由表中取出缓冲器。使用本技术,通过使用现有的用来执行其它任务的硬件(例如存储控制器,CAM),处理器可以以有效、低成本的方式管理大量的自由表。
不用来存储描述数据缓冲器队列结构的信息的高速缓存的数据存储部分44b的条目也可用来管理环形数据结构。因为环形数据结构包括预定尺寸和位置的连续存储地址块,所以它可用于静态存储器分配。
参照图15,一种技术定义和实现了使用高速缓存的数据存储部分44b的条目246来存储描述环形结构300的信息的命令。描述环结构的信息246a包括跟踪将被插入数据的存储单元0003的头指针250a,跟踪其中数据301将被移走的存储单元0001的尾指针250b,和跟踪环300中条目数量的可选计数字段250c。用于存储描述环结构的信息的数据存储部分的条目246可以是非高速缓存的或永久存在的条目。因为环形数据结构有固定尺寸,只要指针250a、250b中任一个指向环末尾的地址,它都绕回到环起始处的地址。
编程引擎的上下文可以发出放入命令,使数据被写入环形数据结构。放入命令指定长度字段和头指针,其中长度字段由字的数目来确定。
参照图16,数据字303被写入头指针250a所指示的地址0003处的环中。一旦已在地址0003写入数据字,如虚线175所示,头指针250a被设置成指向下一个存储单元0004。以上可以通过将头指针250a设置成存储地址0004来实现。此外,计数字段250c的值更新为“3”以反映环300中的数据字的数目。另外,计数字段和指示是否有足够可用的存储器来将指定长度的字写到环中的状态位返回到发出放入命令的编程引擎上下文中。结果,通过使用驻留在数据存储部分44b中的描述环结构的信息246a将数据写入环300中。
编程引擎的上下文可发出取出命令,使数据从环形数据结构中读出。取出命令指定长度字段和尾指针,其中长度字段以字的数目来指定。
参照图17,从尾指针250b指示的存储地址0001处的环中读出数据字301。一旦已读出数据字,如虚线176所示,尾指针250b被设置成指向存储单元0002。以上通过将尾指针250b设置成存储地址0002来实现。此外,计数字段250c的值更新为“2”以反映环300中数据字的数目。结果,通过使用驻留在数据存储部分44b中的描述环结构的信息246a将数据从环300中移出。如果计数字段250c小于取出命令中指定的长度字段,指示环300为空的标识符、如零数据字被返回到发出取出命令的编程引擎上下文,没有数据从环中移走。
因为网络处理器可包括多个编程引擎,其中每个可执行多个线程或上下文,观察任何单独编程引擎线程上代码如何执行和跟踪关于彼此不同的编程引擎线程的进展可有利于帮助调试网络处理器上运行的应用程序。
本技术定义和实现一组日记命令,其中提供了一种观察代码在系统运行期间如何执行的方法。该技术使用了未被用来存储描述数据缓冲器队列结构的信息的高速缓存的数据存储部分44b的条目。使用这些条目来管理一个以日志方式实现的环形数据结构。这些条目中的每一个包括描述环形结构的信息。如前面结合图15-17所述,描述环结构的信息246a包括跟踪要插入数据的单元的头指针250a、跟踪要移出数据的单元的尾指针250b和跟踪所作日志条目数量的可选计数字段250c。由于在程序执行期间数据被插入日志,而没有数据从日志中移走,所以对于此目的来说,尾指针250b比头指针250a更有意义。用于支持日志命令的条目可永久驻留在数据存储部分。
尽管一个执行的程序可在到达程序预定位置时产生用于提供关于执行上下文状态的有用信息的消息,但用以支持日志的指令数量应该最小。否则,用以支持日志的系统资源可能干扰系统的实时编程需要。因此,应该权衡日志中的信息量和提供这一信息所需的指令和周期的数目。
编程引擎的上下文可发出日志命令。日志命令被定义成将许多由长度字段指定的字从存储寄存器移到日志,其中每个字可包括32位的日志信息。当到达程序中预先设定的校验点时,可以用日志命令把来自存储寄存器的多个字存储到日志中。
日志_标记命令被定义成将多个由长度字段指定的字从存储寄存器移到日志。每个字包括32位的日志信息,其中包括4位编程引擎标识、3位线程标识和25位日志信息。因此,日志_标记命令可包括由日志命令提供的数据信息,还可包括关于哪个编程引擎和该编程引擎的哪个上下文发出日志_标记命令的信息。
快速_日志命令被定义成将命令地址字段从存储寄存器移到日志。因为所有命令都有地址字段,所以快速_日志命令提供关于在被调试的程序中到达了哪个命令或校验点的信息。
快速_日志_标记命令被定义成将命令地址字段从存储寄存器移到日志,其中每个字可包括4位编程引擎标识、3位上下文标识和25位指示发出什么命令的命令地址。因此,快速_日志_标记命令可包括由快速_日志命令提供的数据信息,还可包括关于哪个编程引擎和该编程引擎的哪个上下文发出了命令的信息。
本技术可以提供一种通过使用现有的用于执行其它任务的硬件以有效且低成本的方式实现精心设计的跟踪系统的方法。一种实现包括16个编程引擎,每个带有8个上下文。该实现在每个SRAM通道中还包括64个数据存储部分条目,其中16个用来存储描述数据缓冲器队列结构的信息。因为每个SRAM通道有多达48个数据存储部分条目可用来存储描述日志结构的信息,所以本技术可支持多个日志。其它实现可能在一些方面不同。
在向实现环形数据结构的日志的所有存储单元写入后,尾指针绕回到日志的起始地址继续写入数据。如果环形数据结构被写完,后续的日志写操作将盖写前面写入的数据。只有最新的数据将出现在环中。如前所述,放入命令向发布放入命令的编程引擎上下文返回环满通知,使用状态位来指示环中没有足够的存储空间可用来写指定长度的字。相反,如果插入指针超出了移出指针,因为不需要等待,所以完成所有日志命令。
本系统的各种特征可用硬件、软件或硬件和软件的结合来实现。例如,系统的一些方面可以由其中存储机器执行的指令的存储媒体或由运行于可编程计算机或处理器上的计算机程序来实现。每个程序可以由与计算机系统通信的高级程序或面向对象的编程语言来实现。此外,每个这样的计算机程序可被存储在存储媒体、如通用或专用可编程计算机可读的只读存储器(ROM)中,用于当计算机读取该存储媒体时配置和操作计算机以执行上述任务。
其它实现在以下权利要求的范围之内。

Claims (52)

1.一种方法,包括:
查找内容可寻址存储器中的与离队请求所关联的数据缓冲器的队列对应的标记;
基于所述查找的结果,访问高速缓存中用于所述数据缓冲器的队列的队列描述符;
使用来自所述高速缓存的所述队列描述符从所述数据缓冲器的队列中移走一个数据缓冲器;
处理被移走的数据缓冲器中的信息;以及
响应入队请求,在当前未使用缓冲器队列中添加所述数据缓冲器。
2.如权利要求1所述的方法,其特征在于,还包括使用链表数据结构来存储当前未使用的缓冲器。
3.如权利要求1所述的方法,其特征在于,还包括使用堆栈数据结构来存储当前未使用的缓冲器。
4.如权利要求1所述的方法,其特征在于,所述数据缓冲器包括网络数据包,以及所述网络数据包包括在网络处理器中接收的数据包。
5.如权利要求1所述的方法,其特征在于,还包括修改描述当前未使用缓冲器队列的结构的信息。
6.如权利要求5所述的方法,其特征在于,响应在接收流水线中接收数据包而执行所述移走,以及响应接收所述入队请求而执行添加和修改。
7.一种方法,包括:
响应离队请求,从当前未使用缓冲器队列中移走一个当前未使用的缓冲器;
处理新接收的数据包;
在被移走的缓冲器中存储所述新接收的数据包;
查找内容可寻址存储器中的与入队请求所关联的数据缓冲器的队列对应的标记;
基于所述查找的结果,访问高速缓存中用于所述数据缓冲器的队列的队列描述符;以及
使用来自所述高速缓存的队列描述符在所述数据缓冲器的队列中添加所述被移走的缓冲器。
8.如权利要求7所述的方法,其特征在于,还包括使用链表数据结构来存储当前未使用的缓冲器。
9.如权利要求7所述的方法,其特征在于,还包括使用堆栈数据结构来存储当前未使用的缓冲器。
10.如权利要求7所述的方法,其特征在于,所述数据缓冲器包括网络数据包,以及所述网络数据包包括在网络处理器中接收的数据包。
11.如权利要求7所述的方法,其特征在于,还包括修改描述当前未使用缓冲器队列的结构的信息。
12.如权利要求11所述的方法,其特征在于,响应在接收流水线中接收数据包而执行所述移走,以及响应接收离队请求而执行存储和修改。
13.一种方法,包括:
接收向存储环数据结构写入数据的请求;
响应所述请求而发出命令,所述命令让指针指向要插入数据的存储单元,所述指针描述存储环结构;
向描述存储环结构的信息所标识的存储环地址写入数据;
让指针递增至要插入数据的不同存储单元,所述指针描述存储环结构;
递增环中的条目数量,所述条目数量描述存储环结构;以及
在高速缓存中存储修改后的指针和描述存储环结构的条目数量,所述高速缓存具有用以存储描述数据缓冲器队列的结构的信息的条目或用以存储描述当前未使用缓冲器队列的结构的信息的条目。
14.如权利要求13所述的方法,其特征在于,所述命令指定长度字段,以及环中的条目数量按所指定的长度字段来递增。
15.如权利要求13所述的方法,其特征在于,还包括:
响应发出的命令,把环中的条目数量返回到发出编程引擎线程,所述条目数量描述所述存储环数据结构的结构;以及
返回指示是否有足够存储空间可用来使数据成功写入由指向要插入数据的存储单元的指针所标识的存储环地址的状态位,所述指针描述存储环结构。
16.如权利要求13所述的方法,其特征在于,所述命令还指定存储地址,从中获得要写入所述存储环中的数据。
17.如权利要求16所述的方法,其特征在于,所述数据包含表示来自执行程序的输出消息的位。
18.如权利要求17所述的方法,其特征在于,所述位还包括编程引擎标识和上下文标识。
19.如权利要求16所述的方法,其特征在于,所述数据包含表示命令地址的位,所述位还包括编程引擎标识和上下文标识。
20.如权利要求16所述的方法,其特征在于,还包括:
向描述存储环结构的信息所标识的存储环地址写入数据;
使指针递增至要插入数据的存储单元,所述指针描述存储环结构;
按指定的长度字段来递增环中的条目数量,所述条目数量描述存储环结构;以及
在高速缓存中存储修改后的指针和描述存储环结构的条目数量,所述高速缓存具有用以存储描述数据缓冲器队列的结构的信息的条目。
21.如权利要求20所述的方法,其特征在于,所述高速缓存可用来存储关于多个存储环数据结构的信息。
22.一种方法,包括:
接收从存储环数据结构中读取数据的请求;
响应所述请求而发出命令,让指针指向要从中移出数据的存储单元,所述指针描述存储环结构;
从描述存储环结构的信息所标识的存储环地址读取数据;
将指针递增至要从中移出数据的不同存储单元,所述指针描述存储环结构;
递减环中的条目数量,所述条目数量描述存储环结构;以及
在高速缓存中存储修改后的指针和描述存储环结构的条目数量,所述高速缓存具有用以存储描述数据缓冲器队列的结构的信息的条目。
23.如权利要求22所述的方法,其特征在于,所述命令指定长度字段,以及环中的条目数量按所指定的长度字段来递减。
24.如权利要求22所述的方法,其特征在于,还包括:
当描述存储环结构的所述环中的条目数量小于所指定的长度字段时,响应所发出的命令,向发出编程引擎上下文返回标识符。
25.一种设备,包括:
提供队列管理器和存储与缓冲器队列关联的标记的内容可寻址存储器的处理器;
与所述处理器耦合的第一存储器,用以存储数据缓冲器队列以及当前未使用缓冲器队列或环形数据结构中至少一个;
与所述处理器耦合的高速缓存,用以存储描述数据缓冲器队列的结构的信息以及描述当前未使用缓冲器队列结构或存储环结构中至少一个的信息;以及
存储指令的第二存储器,这些指令应用于所述处理器时,使所述处理器:
查找所述内容可寻址存储器中的与所述数据缓冲器的队列对应的标记;
基于所述查找的结果,访问所述高速缓存中描述所述数据缓冲器的队列的结构的信息;
使用描述所述数据缓冲器的队列的结构的来自所述高速缓存的所述信息从所述数据缓冲器的队列中移走一个数据缓冲器;
处理被移走的数据缓冲器中的信息;以及
响应入队请求,在当前未使用缓冲器队列中添加所述数据缓冲器。
26.如权利要求25所述的设备,其特征在于,所述第二存储器还包括使所述处理器使用链表数据结构存储当前未使用缓冲器的指令。
27.如权利要求25所述的设备,其特征在于,所述第二存储器还包括使所述处理器使用堆栈数据结构存储当前未使用缓冲器的指令。
28.如权利要求25所述的设备,其特征在于,所述第二存储器还包括使所述处理器修改描述当前未使用缓冲器队列结构的信息的指令。
29.如权利要求25所述的设备,其特征在于,所述数据缓冲器包括网络数据包,其中所述网络数据包包括在网络处理器中接收的数据包。
30.一种设备,包括:
提供队列管理器和存储与缓冲器队列关联的标记的内容可寻址存储器的处理器;
与所述处理器耦合的第一存储器,用以存储数据缓冲器队列以及当前未使用缓冲器队列或环形数据结构中至少一个;
与所述处理器耦合的高速缓存,用以存储描述数据缓冲器队列的结构的信息以及描述当前未使用缓冲器队列结构或存储环结构中至少一个的信息;以及
存储指令的第二存储器,这些指令应用于所述处理器时,使所述处理器:
响应离队请求,从当前未使用缓冲器队列中移出一个当前未使用的缓冲器;
处理新接收的数据包;
在被移出的缓冲器中存储所述新接收的数据包;
查找所述内容可寻址存储器中的与所述数据缓冲器的队列对应的标记;
基于所述查找的结果,访问所述高速缓存中描述所述数据缓冲器的队列的结构的信息;
采用来自所述高速缓存的所述队列描述符在所述数据缓冲器的队列中添加所述被移出的缓冲器。
31.如权利要求30所述的设备,其特征在于,所述第二存储器还包括使所述处理器使用链表数据结构存储当前未使用缓冲器的指令。
32.如权利要求30所述的设备,其特征在于,所述第二存储器还包括使所述处理器使用堆栈数据结构存储当前未使用缓冲器的指令。
33.如权利要求30所述的设备,其特征在于,所述数据缓冲器包括网络数据包,其中所述网络数据包包括在网络处理器中接收的数据包。
34.如权利要求30所述的设备,其特征在于,所述第二存储器还包括使所述处理器修改描述当前未使用缓冲器队列结构的信息的指令。
35.一种设备,包括:
提供队列管理器的处理器;
与所述处理器耦合的第一存储器,用以存储数据缓冲器队列以及当前未使用缓冲器队列或环形数据结构中至少一个;
与所述处理器耦合的高速缓存,用以存储描述数据缓冲器队列的结构的信息以及描述当前未使用缓冲器队列结构或存储环结构中至少一个的信息;以及
存储指令的第二存储器,这些指令应用于所述处理器时,使所述处理器:
接收向存储环数据结构写入数据的请求;
响应所述请求而发出命令,所述命令让指针指向要插入数据的存储单元,所述指针描述存储环结构;
向描述存储环结构的信息所标识的存储环地址写入数据;
让指针递增至要插入数据的不同存储单元,所述指针描述存储环结构;
递增环中的条目数量,所述条目数量描述存储环结构;以及
在高速缓存中存储修改后的指针和描述存储环结构的条目数量,所述高速缓存具有用以存储描述数据缓冲器队列的结构的信息的条目或用以存储描述当前未使用缓冲器队列的结构的信息的条目。
36.如权利要求35所述的设备,其特征在于,所述命令指定长度字段,以及环中的条目数量按所指定的长度字段来递增。
37.如权利要求35所述的设备,其特征在于,所述第二存储器还包括使所述处理器执行以下操作的指令:
响应发出的命令,把环中的条目数量返回到发出编程引擎线程,所述条目数量描述所述存储环数据结构的结构;以及
返回指示是否有足够存储空间可用来使数据成功写入由指向要插入数据的存储单元的指针所标识的存储环地址的状态位,所述指针描述存储环结构。
38.如权利要求35所述的设备,其特征在于,所述命令还指定存储地址,从中获得要写入所述存储环中的数据。
39.如权利要求38所述的设备,其特征在于,所述数据包含表示来自执行程序的输出消息的位。
40.如权利要求39所述的设备,其特征在于,所述位还包括编程引擎标识和上下文标识。
41.如权利要求38所述的设备,其特征在于,所述数据包含表示命令地址的位,所述位还包括编程引擎标识和上下文标识。
42.如权利要求38所述的设备,其特征在于,所述第二存储器还包括使所述处理器执行以下操作的指令:
向描述存储环结构的信息所标识的存储环地址写入数据;
使指针递增至要插入数据的存储单元,所述指针描述存储环结构;
按指定的长度字段来递增环中的条目数量,所述条目数量描述存储环结构;以及
在高速缓存中存储修改后的指针和描述存储环结构的条目数量,所述高速缓存具有用以存储描述数据缓冲器队列的结构的信息的条目。
43.如权利要求38所述的设备,其特征在于,所述高速缓存可用来存储关于多个存储环数据结构的信息。
44.一种设备,包括:
提供队列管理器的处理器;
与所述处理器耦合的第一存储器,用以存储数据缓冲器队列以及当前未使用缓冲器队列或环形数据结构中至少一个;
与所述处理器耦合的高速缓存,用以存储描述数据缓冲器队列的结构的信息以及描述当前未使用缓冲器队列结构或存储环结构中至少一个的信息;以及
存储指令的第二存储器,这些指令应用于所述处理器时,使所述处理器:
接收从存储环数据结构中读取数据的请求;
响应所述请求而发出命令,让指针指向要从中移出数据的存储单元,所述指针描述存储环结构;
从描述存储环结构的信息所标识的存储环地址读取数据;
将指针递增至要从中移出数据的不同存储单元,所述指针描述存储环结构;
递减环中的条目数量,所述条目数量描述存储环结构;以及
在高速缓存中存储修改后的指针和描述存储环结构的条目数量,所述高速缓存具有用以存储描述数据缓冲器队列的结构的信息的条目。
45.如权利要求44所述的设备,其特征在于,所述命令指定长度字段,以及环中的条目数量按所指定的长度字段来递减。
46.如权利要求44所述的设备,其特征在于,所述第二存储器还包括使所述处理器当描述存储环结构的所述环中的条目数量小于所指定的长度字段时响应所发出的命令、向发出编程引擎上下文返回标识符的指令。
47.一种系统,包括:
数据包的源;
数据包的目的地;以及
用以将数据包从源传送到目的地的装置,包括:
提供队列管理器的处理器;
与所述处理器耦合的第一存储器,用以存储数据缓冲器队列以及当前未使用缓冲器队列或环形数据结构中至少一个;
与所述处理器耦合的高速缓存,用以存储描述数据缓冲器队列的结构的信息以及描述当前未使用缓冲器队列结构或存储环结构中至少一个的信息;以及
存储指令的第二存储器,这些指令应用于所述处理器时,使所述处理器:
从数据缓冲器的链表中移走一个数据缓冲器;
处理被移走的数据缓冲器中的信息;
在当前未使用缓冲器队列中添加所述数据缓冲器;
存储描述数据缓冲器队列的结构的信息和描述当前未使用缓冲器队列的结构的信息;以及
修改描述当前未使用缓冲器队列的结构的信息。
48.如权利要求47所述的系统,其特征在于,所述存储是使用高速缓存来完成的,所述高速缓存具有用来存储描述数据缓冲器队列的结构的信息的条目或者用来存储描述当前未使用缓冲器队列的结构的信息的条目。
49.如权利要求47所述的系统,其特征在于,包括存储指令的所述第二存储器,当这些指令应用到所述处理器时,还使所述处理器使用链表数据结构存储当前未使用的缓冲器。
50.如权利要求47所述的系统,其特征在于,所述数据缓冲器包括网络数据包,以及所述网络数据包包括在网络处理器中接收的数据包。
51.一种系统,包括:
数据包的源;
数据包的目的地;以及
用以将数据包从源传送到目的地的装置,包括:
提供队列管理器的处理器;
与所述处理器耦合的第一存储器,用以存储数据缓冲器队列以及当前未使用缓冲器队列或环形数据结构中至少一个;
与所述处理器耦合的高速缓存,用以存储描述数据缓冲器队列的结构的信息以及描述当前未使用缓冲器队列结构或存储环结构中至少一个的信息;以及
存储指令的第二存储器,这些指令应用于所述处理器时,使所述处理器:
从当前未使用缓冲器队列中移出一个当前未使用的缓冲器;
处理新接收的数据包;
在被移出的缓冲器中存储所述新接收的数据包;
在数据缓冲器的链表中添加所述被移出的缓冲器;
在高速缓存中存储描述数据缓冲器队列的结构的信息和描述当前未使用缓冲器队列的结构的信息,所述高速缓存具有用来存储描述数据缓冲器队列的结构的信息的条目或者用来存储描述当前未使用缓冲器队列的结构的信息的条目;以及
修改描述当前未使用缓冲器队列结构的信息。
52.如权利要求51所述的系统,其特征在于,包括存储指令的所述第二存储器,当这些指令应用到所述处理器时,还使所述处理器使用链表数据结构存储当前未使用的缓冲器。
CNB038239884A 2002-08-13 2003-08-04 自由表和环形数据结构管理 Expired - Fee Related CN100499565C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/218,682 2002-08-13
US10/218,682 US7337275B2 (en) 2002-08-13 2002-08-13 Free list and ring data structure management

Publications (2)

Publication Number Publication Date
CN1757202A CN1757202A (zh) 2006-04-05
CN100499565C true CN100499565C (zh) 2009-06-10

Family

ID=31714580

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038239884A Expired - Fee Related CN100499565C (zh) 2002-08-13 2003-08-04 自由表和环形数据结构管理

Country Status (6)

Country Link
US (1) US7337275B2 (zh)
EP (1) EP1604493A2 (zh)
CN (1) CN100499565C (zh)
AU (1) AU2003282676A1 (zh)
TW (1) TWI261166B (zh)
WO (1) WO2004015525A2 (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7216204B2 (en) * 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7836228B1 (en) * 2004-06-18 2010-11-16 Oracle America, Inc. Scalable and lock-free first-in-first-out queue implementation
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
GB2393273A (en) * 2002-09-20 2004-03-24 Sharp Kk Method and apparatus for detecting an error in writing to persistent memory
US6889288B2 (en) * 2002-12-02 2005-05-03 Emc Corporation Reducing data copy operations for writing data from a network to storage of a cached data storage system by organizing cache blocks as linked lists of data fragments
JP3865748B2 (ja) * 2003-01-20 2007-01-10 富士通株式会社 ネットワークスイッチ装置およびネットワークスイッチ方法
US7660908B2 (en) * 2003-05-01 2010-02-09 International Business Machines Corporation Implementing virtual packet storage via packet work area
US20050108713A1 (en) * 2003-11-18 2005-05-19 Geye Scott A. Affinity mask assignment system and method for multiprocessor systems
JP4536361B2 (ja) * 2003-11-28 2010-09-01 株式会社日立製作所 データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7478374B2 (en) * 2004-03-22 2009-01-13 Intel Corporation Debug system having assembler correcting register allocation errors
US20060067348A1 (en) * 2004-09-30 2006-03-30 Sanjeev Jain System and method for efficient memory access of queue control data structures
WO2006057949A2 (en) * 2004-11-23 2006-06-01 Efficient Memory Technology Method and apparatus of multiple abbreviations of interleaved addressing of paged memories and intelligent memory banks therefor
US8190809B2 (en) * 2004-11-23 2012-05-29 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
US7555630B2 (en) * 2004-12-21 2009-06-30 Intel Corporation Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit
US20060140203A1 (en) * 2004-12-28 2006-06-29 Sanjeev Jain System and method for packet queuing
CN100370866C (zh) * 2005-03-02 2008-02-20 华为技术有限公司 无线网络控制器日志记录系统及其方法
US20060236011A1 (en) * 2005-04-15 2006-10-19 Charles Narad Ring management
US20060277126A1 (en) * 2005-06-06 2006-12-07 Intel Corporation Ring credit management
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8429661B1 (en) * 2005-12-14 2013-04-23 Nvidia Corporation Managing multi-threaded FIFO memory by determining whether issued credit count for dedicated class of threads is less than limit
US8201172B1 (en) 2005-12-14 2012-06-12 Nvidia Corporation Multi-threaded FIFO memory with speculative read and write capability
US20070245074A1 (en) * 2006-03-30 2007-10-18 Rosenbluth Mark B Ring with on-chip buffer for efficient message passing
US8458366B2 (en) * 2007-09-27 2013-06-04 Oracle America, Inc. Method and system for onloading network services
US7926013B2 (en) * 2007-12-31 2011-04-12 Intel Corporation Validating continuous signal phase matching in high-speed nets routed as differential pairs
US7591019B1 (en) 2009-04-01 2009-09-15 Kaspersky Lab, Zao Method and system for optimization of anti-virus scan
US9262554B1 (en) * 2010-02-16 2016-02-16 Pmc-Sierra Us, Inc. Management of linked lists within a dynamic queue system
KR20140106576A (ko) * 2011-12-14 2014-09-03 옵티스 셀룰러 테크놀리지, 엘엘씨 버퍼 리소스 관리 방법 및 원격통신 장비
CN102984089B (zh) * 2012-11-19 2018-09-28 中兴通讯股份有限公司 流量管理调度方法及装置
US9674086B2 (en) * 2013-11-05 2017-06-06 Cisco Technology, Inc. Work conserving schedular based on ranking
CN106126442A (zh) * 2016-06-17 2016-11-16 北京京坤倍益科技发展有限公司 一种数据存储结构和遥感卫星数据存储系统
CN106326397A (zh) * 2016-08-19 2017-01-11 东软集团股份有限公司 生成索引文件的方法及装置
US10298496B1 (en) * 2017-09-26 2019-05-21 Amazon Technologies, Inc. Packet processing cache
US10228869B1 (en) 2017-09-26 2019-03-12 Amazon Technologies, Inc. Controlling shared resources and context data
CN108496161A (zh) * 2017-09-29 2018-09-04 深圳市大疆创新科技有限公司 数据缓存装置及控制方法、数据处理芯片、数据处理系统
EP3487129A1 (en) * 2017-11-15 2019-05-22 InterDigital CE Patent Holdings Batch oriented service chaining method and corresponding devices and computer program
CN110716695A (zh) * 2019-09-12 2020-01-21 北京浪潮数据技术有限公司 一种节点日志的存储方法、系统、电子设备及存储介质
CN110993005B (zh) * 2019-12-11 2021-03-26 海光信息技术股份有限公司 电路结构、芯片、训练方法及训练装置
CN111124641B (zh) * 2019-12-12 2023-10-31 中盈优创资讯科技有限公司 一种利用多线程的数据处理方法及系统
US11681630B2 (en) * 2020-09-18 2023-06-20 Kioxia Corporation System and method for scaling command orchestration through address mapping

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW374967B (en) * 1998-06-22 1999-11-21 Winbond Electronics Corp Ethernet switch having shared memory structure and method of the shared memory

Family Cites Families (164)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
BE795789A (fr) 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
US3881173A (en) 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
IT986411B (it) 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
FR2253415A5 (zh) 1973-12-04 1975-06-27 Cii
US3913074A (en) 1973-12-18 1975-10-14 Honeywell Inf Systems Search processing apparatus
US4045782A (en) 1976-03-29 1977-08-30 The Warner & Swasey Company Microprogrammed processor system having external memory
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
US4392758A (en) 1978-05-22 1983-07-12 International Business Machines Corporation Underscore erase
US4189767A (en) 1978-06-05 1980-02-19 Bell Telephone Laboratories, Incorporated Accessing arrangement for interleaved modular memories
JPS56164464A (en) 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4868735A (en) 1984-05-08 1989-09-19 Advanced Micro Devices, Inc. Interruptible structured microprogrammed sixteen-bit address sequence controller
US4742451A (en) 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US4777587A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
JPS62103893A (ja) 1985-10-30 1987-05-14 Toshiba Corp 半導体メモリ及び半導体メモリシステム
US5021945A (en) 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4745544A (en) 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US4724521A (en) 1986-01-14 1988-02-09 Veri-Fone, Inc. Method for operating a local terminal to execute a downloaded application program
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US5073864A (en) 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5142683A (en) 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
US4866664A (en) 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
DE68913629T2 (de) 1988-03-14 1994-06-16 Unisys Corp Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
US5008808A (en) 1988-06-23 1991-04-16 Storage Technology Corporation Consolidation of commands in a buffered input/output device
US5165025A (en) 1988-10-06 1992-11-17 Lass Stanley E Interlacing the paths after a conditional branch like instruction
US5142676A (en) 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5155854A (en) 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5166872A (en) 1989-07-17 1992-11-24 Ability Technologies Corporation System and method for controlling devices through communication processors and pluralities of address-associated device controllers sharing each communication processor
US5113516A (en) 1989-07-31 1992-05-12 North American Philips Corporation Data repacker having controlled feedback shifters and registers for changing data format
US5168555A (en) 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
US5247671A (en) 1990-02-14 1993-09-21 International Business Machines Corporation Scalable schedules for serial communications controller in data processing systems
JPH0799812B2 (ja) 1990-03-26 1995-10-25 株式会社グラフイックス・コミュニケーション・テクノロジーズ 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置
EP0449369B1 (en) 1990-03-27 1998-07-29 Koninklijke Philips Electronics N.V. A data processing system provided with a performance enhancing instruction cache
US5390329A (en) 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5404482A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
CA2045790A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch prediction in high-performance processor
US5432918A (en) 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5367678A (en) 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
EP0522513A2 (en) 1991-07-09 1993-01-13 Hughes Aircraft Company High speed parallel microcode program controller
US5255239A (en) 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
GB2260429B (en) 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5392391A (en) 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
DE69231957T2 (de) 1991-10-21 2002-04-04 Toshiba Kawasaki Kk Hochgeschwindigkeitsprozessor zum fähiger Abhandeln mehrerer Unterbrechungen
US5452437A (en) 1991-11-18 1995-09-19 Motorola, Inc. Methods of debugging multiprocessor system
US5357617A (en) 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5442797A (en) 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
US5459842A (en) 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
DE4223600C2 (de) 1992-07-17 1994-10-13 Ibm Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems
US5274770A (en) 1992-07-29 1993-12-28 Tritech Microelectronics International Pte Ltd. Flexible register-based I/O microcontroller with single cycle instruction execution
US5442756A (en) 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5692167A (en) 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5649109A (en) 1992-10-22 1997-07-15 Digital Equipment Corporation Apparatus and method for maintaining forwarding information in a bridge or router using multiple free queues having associated free space sizes
US5481683A (en) 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5450603A (en) 1992-12-18 1995-09-12 Xerox Corporation SIMD architecture with transfer register or value source circuitry connected to bus
KR100313261B1 (ko) 1992-12-23 2002-02-28 앙드래베이너,조엘브르리아드 저전력형다중작업제어기(명칭정정)
US5404464A (en) 1993-02-11 1995-04-04 Ast Research, Inc. Bus control system and method that selectively generate an early address strobe
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US5522069A (en) 1993-04-30 1996-05-28 Zenith Data Systems Corporation Symmetric multiprocessing system with unified environment and distributed system functions
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
CA2122182A1 (en) 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
US5363448A (en) 1993-06-30 1994-11-08 United Technologies Automotive, Inc. Pseudorandom number generation and cryptographic authentication
CA2107299C (en) 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5446736A (en) 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US6079014A (en) * 1993-12-02 2000-06-20 Intel Corporation Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US5490204A (en) 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
US5659722A (en) 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5542088A (en) 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5721870A (en) 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
US5544236A (en) 1994-06-10 1996-08-06 At&T Corp. Access to unsubscribed features
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
FR2722041B1 (fr) 1994-06-30 1998-01-02 Samsung Electronics Co Ltd Decodeur de huffman
US5666551A (en) * 1994-06-30 1997-09-09 Digital Equipment Corporation Distributed data bus sequencing for a system bus with separate address and data bus protocols
US5640538A (en) 1994-08-22 1997-06-17 Adaptec, Inc. Programmable timing mark sequencer for a disk drive
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5717760A (en) 1994-11-09 1998-02-10 Channel One Communications, Inc. Message protection system and method
US5610864A (en) 1994-12-23 1997-03-11 Micron Technology, Inc. Burst EDO memory device with maximized write cycle timing
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5649157A (en) 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
TW360852B (en) 1995-04-12 1999-06-11 Matsushita Electric Ind Co Ltd Pipeline processor
US5592622A (en) 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
US5812799A (en) * 1995-06-07 1998-09-22 Microunity Systems Engineering, Inc. Non-blocking load buffer and a multiple-priority memory system for real-time multiprocessing
US5541920A (en) 1995-06-15 1996-07-30 Bay Networks, Inc. Method and apparatus for a delayed replace mechanism for a streaming packet modification engine
KR0180169B1 (ko) 1995-06-30 1999-05-01 배순훈 가변길이 부호기
US5613071A (en) 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5680641A (en) 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5689566A (en) 1995-10-24 1997-11-18 Nguyen; Minhtam C. Network with secure communications sessions
KR0150072B1 (ko) 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
US5699537A (en) 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
US5790813A (en) * 1996-01-05 1998-08-04 Unisys Corporation Pre-arbitration system allowing look-around and bypass for significant operations
US6088783A (en) * 1996-02-16 2000-07-11 Morton; Steven G DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6173349B1 (en) * 1996-10-18 2001-01-09 Samsung Electronics Co., Ltd. Shared bus system with transaction and destination ID
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
EP0898819B1 (en) * 1997-01-10 2004-08-04 Koninklijke Philips Electronics N.V. Communication bus system
US5893162A (en) * 1997-02-05 1999-04-06 Transwitch Corp. Method and apparatus for allocation and management of shared memory with data in memory stored as multiple linked lists
US5742587A (en) 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US6381668B1 (en) * 1997-03-21 2002-04-30 International Business Machines Corporation Address mapping for system memory
US5941949A (en) * 1997-05-14 1999-08-24 Citrix Systems, Inc. System and method for transmitting data from a server application to more than one client node
US6047334A (en) * 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
US6233599B1 (en) * 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US6104700A (en) * 1997-08-29 2000-08-15 Extreme Networks Policy based quality of service
US6223277B1 (en) * 1997-11-21 2001-04-24 Texas Instruments Incorporated Data processing circuit with packed data structure capability
US6029170A (en) * 1997-11-25 2000-02-22 International Business Machines Corporation Hybrid tree array data structure and method
US6212602B1 (en) * 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US6230119B1 (en) * 1998-02-06 2001-05-08 Patrick Michael Mitchell Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6408325B1 (en) * 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
US6505281B1 (en) * 1998-06-02 2003-01-07 Raymond C. Sherry Hard disk drives employing high speed distribution bus
US6724767B1 (en) * 1998-06-27 2004-04-20 Intel Corporation Two-dimensional queuing/de-queuing methods and systems for implementing the same
US6628652B1 (en) * 1998-09-18 2003-09-30 Lucent Technologies Inc. Flexible telecommunications switching network
US6505229B1 (en) * 1998-09-25 2003-01-07 Intelect Communications, Inc. Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
US6247086B1 (en) * 1998-11-12 2001-06-12 Adaptec, Inc. PCI bridge for optimized command delivery
US6182183B1 (en) * 1998-11-13 2001-01-30 Sonics, Inc. Communications system and method with multilevel connection identification
US6230261B1 (en) * 1998-12-02 2001-05-08 I. P. First, L.L.C. Method and apparatus for predicting conditional branch instruction outcome based on branch condition test type
US6212604B1 (en) * 1998-12-03 2001-04-03 Sun Microsystems, Inc. Shared instruction cache for multiple processors
GB2344665B (en) * 1998-12-08 2003-07-30 Advanced Risc Mach Ltd Cache memory
US6378124B1 (en) * 1999-02-22 2002-04-23 International Business Machines Corporation Debugger thread synchronization control points
CA2266283C (en) * 1999-03-19 2006-07-11 Wen Tong Data interleaver and method of interleaving data
US6570877B1 (en) * 1999-04-07 2003-05-27 Cisco Technology, Inc. Search engine for forwarding table content addressable memory
US6401149B1 (en) * 1999-05-05 2002-06-04 Qlogic Corporation Methods for context switching within a disk controller
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US6539439B1 (en) * 1999-08-18 2003-03-25 Ati International Srl Method and apparatus for interfacing a bus at an independent rate with input/output devices
US6430646B1 (en) * 1999-08-18 2002-08-06 Ati International Srl Method and apparatus for interfacing a processor with a bus
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6529999B1 (en) * 1999-10-27 2003-03-04 Advanced Micro Devices, Inc. Computer system implementing system and method for ordering write operations and maintaining memory coherency
US6523108B1 (en) * 1999-11-23 2003-02-18 Sony Corporation Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string
TW445730B (en) * 1999-11-30 2001-07-11 Via Tech Inc Output queuing scheme for forwarding packets in sequence
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US7051329B1 (en) * 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6278289B1 (en) * 2000-05-01 2001-08-21 Xilinx, Inc. Content-addressable memory implemented using programmable logic
US6513089B1 (en) * 2000-05-18 2003-01-28 International Business Machines Corporation Dual burst latency timers for overlapped read and write data transfers
US6587905B1 (en) * 2000-06-29 2003-07-01 International Business Machines Corporation Dynamic data bus allocation
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US6781992B1 (en) * 2000-11-30 2004-08-24 Netrake Corporation Queue engine for reassembling and reordering data packets in a network
US6847645B1 (en) * 2001-02-22 2005-01-25 Cisco Technology, Inc. Method and apparatus for controlling packet header buffer wrap around in a forwarding engine of an intermediate network node
TW556077B (en) * 2001-06-05 2003-10-01 Via Tech Inc Controller for improving buffer management efficiency and the buffer management method
JP3489573B2 (ja) * 2001-07-11 2004-01-19 日本電気株式会社 パケット処理装置
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7216204B2 (en) * 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US20030065862A1 (en) * 2001-09-28 2003-04-03 Wyland David C. Computer system and method for communications between bus devices
US6934729B2 (en) * 2001-10-18 2005-08-23 International Business Machines Corporation Method and system for performing shift operations
US7028118B2 (en) * 2001-12-12 2006-04-11 Texas Instruments Incorporated Multi-channel buffered serial port debugging
US6754795B2 (en) * 2001-12-21 2004-06-22 Agere Systems Inc. Methods and apparatus for forming linked list queue using chunk-based structure
US7089379B1 (en) * 2002-06-28 2006-08-08 Emc Corporation Large high bandwidth memory system
US6941438B2 (en) * 2003-01-10 2005-09-06 Intel Corporation Memory interleaving

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW374967B (en) * 1998-06-22 1999-11-21 Winbond Electronics Corp Ethernet switch having shared memory structure and method of the shared memory

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"An Overview of the Pipelined CommonBuffer Architecture(PCBA) for Memory Based Packet/CellSwitching Systems". Shu-Ping,Chang,P.Chang,P.Landsberg.1994 IEEE. 1994
"An Overview of the Pipelined CommonBuffer Architecture(PCBA) for Memory Based Packet/CellSwitching Systems". Shu-Ping,Chang,P.Chang,P.Landsberg.1994 IEEE. 1994 *
"Queue Management for Shared Bufferand SharedMulti-buffer ATM Switches". Yu-sheng Lin,C.Bernard Shung.Proceedings of IEEE Infocom 1996,Vol.第2卷 . 1996
"Queue Management for Shared Bufferand SharedMulti-buffer ATM Switches". Yu-sheng Lin,C.Bernard Shung.Proceedings of IEEE Infocom 1996,Vol.第2卷. 1996 *
"The Design and Implementation ofa Multi-queue Buffer for VLSI Communication Switches". Gregory,L.Frazier,Yuval,Tamir.1989 IEEE. 1989

Also Published As

Publication number Publication date
WO2004015525A3 (en) 2005-10-20
AU2003282676A1 (en) 2004-02-25
TWI261166B (en) 2006-09-01
AU2003282676A8 (en) 2004-02-25
TW200406672A (en) 2004-05-01
EP1604493A2 (en) 2005-12-14
CN1757202A (zh) 2006-04-05
US7337275B2 (en) 2008-02-26
US20040034743A1 (en) 2004-02-19
WO2004015525A2 (en) 2004-02-19

Similar Documents

Publication Publication Date Title
CN100499565C (zh) 自由表和环形数据结构管理
US6779084B2 (en) Enqueue operations for multi-buffer packets
US5553305A (en) System for synchronizing execution by a processing element of threads within a process using a state indicator
US7269179B2 (en) Control mechanisms for enqueue and dequeue operations in a pipelined network processor
CN100541665C (zh) 可编程并行查找存储器
CN100440151C (zh) 用于并行多线程处理的方法和装置
CN102141905B (zh) 一种处理器体系结构
US6996639B2 (en) Configurably prefetching head-of-queue from ring buffers
US7113985B2 (en) Allocating singles and bursts from a freelist
EP0947926A2 (en) System and method for multi-tasking, resource sharing, and execution of computer instructions
US6868087B1 (en) Request queue manager in transfer controller with hub and ports
CN1303045A (zh) 具有第一和第二发出队的微处理器
US10140020B2 (en) Data queue having an unlimited depth
JP5309703B2 (ja) 共有メモリの制御回路、制御方法及び制御プログラム
CN108139882B (zh) 针对网络装置实施阶层分布式链接列表的系统及方法
CN113172625A (zh) 一种机器人调度方法、装置、设备及存储介质
CN1303043A (zh) 具有指令历史信息的基本块高速缓存的微处理器
CN108257078A (zh) 存储器知晓重排序源
KR100895536B1 (ko) 데이터 전송 방법, 시스템 및 컴퓨터 판독가능 매체
CN109144749A (zh) 一种使用处理器实现多处理器间通信的方法
US7130990B2 (en) Efficient instruction scheduling with lossy tracking of scheduling information
US20030131198A1 (en) Queue array caching in network devices
US7039054B2 (en) Method and apparatus for header splitting/splicing and automating recovery of transmit resources on a per-transmit granularity
US7277990B2 (en) Method and apparatus providing efficient queue descriptor memory access
US20070280224A1 (en) System and method for an output independent crossbar

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090610

Termination date: 20130804