CN108415779A - 用于通过主机结构接口的队列管理的技术 - Google Patents

用于通过主机结构接口的队列管理的技术 Download PDF

Info

Publication number
CN108415779A
CN108415779A CN201810135521.6A CN201810135521A CN108415779A CN 108415779 A CN108415779 A CN 108415779A CN 201810135521 A CN201810135521 A CN 201810135521A CN 108415779 A CN108415779 A CN 108415779A
Authority
CN
China
Prior art keywords
queue
list
data
machine structure
main machine
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
CN201810135521.6A
Other languages
English (en)
Other versions
CN108415779B (zh
Inventor
T.施奈德
J.迪南
M.弗拉吉斯利克
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 CN108415779A publication Critical patent/CN108415779A/zh
Application granted granted Critical
Publication of CN108415779B publication Critical patent/CN108415779B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了用于管理计算装置上的队列的技术。在说明性实施例中,队列通过计算装置的主机结构接口来管理。诸如将数据入队到队列上和将数据从队列中出队的队列操作可由远程计算装置通过发送可通过主机结构接口处理的队列操作来请求。在某些实施例中,主机结构接口可完全地管理队列而无需来自计算装置的处理器的任何协助。在其它实施例中,计算装置的处理器可负责某些任务,诸如垃收收集。

Description

用于通过主机结构接口的队列管理的技术
背景技术
在本地计算装置上托管能通过远程计算装置访问的队列在某些环境中具有若干有用的应用,诸如对于数据中心中的某些并行处理任务。队列可通过本地计算装置来管理,但本地计算装置可被要求将相当大量的资源投入到管理队列。
对在本地计算装置管理队列的备选方案是要允许远程计算装置直接访问与队列关联的本地计算装置中的存储器并允许远程计算装置执行某些队列管理任务。然而,此类途径可要求若干轮的通信以便于确保没有冲突出现,诸如两个计算装置试图将相同队列元素出队。
附图说明
本文所描述的概念以示例的方式而不以限制的方式被示出在附图中。为了说明的简单和清楚,图中所示出的元件不必要按比例被画出。在认为是适当的情况下,附图标记已经在图之中被重复以指示对应或相似的元件。
图1是用于通过远程计算装置访问被托管在计算装置上的队列的网络的至少一个实施例的简化的框图;
图2是可托管队列的图1的计算装置的至少一个实施例的简化的框图;
图3是可通过图1的计算装置建立的环境的至少一个实施例的框图;
图4是可通过图1的计算装置运行的、用于通过远程计算装置访问队列的方法的至少一个实施例的简化的流程图;
图5和6是可通过图1的计算装置运行的、用于通过远程计算装置访问队列的方法的至少一个实施例的简化的流程图;以及
图7是可通过图1的计算装置运行的用于垃圾收集的方法的至少一个实施例的简化的流程图。
具体实施方式
虽然本公开的概念对各种修改和备选形式是敏感的,但其特定实施例已经以示例的方式被示出在附图中并将在本文被详细地描述。然而,应该被理解的是,不存在将本公开的概念限制于所公开的具体形式的意图,而是相反,意图是要覆盖与本公开和随附的权利要求一致的所有修改、相等物、和备选方案。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等等的引用指示所描述的实施例可包含具体特征、结构、或特性,但每一个实施例可或可不必要包含那个具体特征、结构、或特性。此外,此类短语不必要指的是相同实施例。此外,在结合实施例来描述具体特征、结构、或特性时,认为的是,无论是否明确地描述,结合其它实施例来实现此类特征、结构、或特性在本领域中的技术人员的知识内。另外,应该意识到的是,被包含在采用“至少一个A、B、和C”的形式的列表中的项能意味着(A);(B);(C):(A和B);(B和C);(A和C);或(A、B、和C)。类似地,采用“A、B、或C中的至少一个”的形式列出的项能意味着(A);(B);(C):(A和B);(B和C);(A和C);或(A、B、和C)。
在某些情况下,公开的实施例可以采用硬件、固件、软件、或其任何组合来实现。公开的实施例可还被实现为由一个或更多暂态或非暂态机器可读(例如,计算机可读)存储介质携带或存储在一个或更多暂态或非暂态机器可读(例如,计算机可读)存储介质上的指令,其可通过一个或更多处理器来读和运行。机器可读存储介质可被体现为任何存储装置、机制、或用于存储或传送采用由机器可读的形式的信息的其它物理结构(例如,易失或非易失存储器、媒体盘、或其它媒体装置)。
在附图中,某些结构的或方法特征可按特定布置和/或排序来示出。然而,应该意识到的是,此类特定布置和/或排序可以不是要求的。更确切地,在某些实施例中,此类特征可按与说明性图中所示出的不同的方式和/或顺序来布置。另外,具体图中的结构的或方法特征的包含不意味着暗示此类特征在所有实施例中被要求,并且在某些实施例中可不被包含或可与其它特征组合。
现在参考图1,系统100包含若干计算装置102,其通过说明性网络104来连接。计算装置102之一托管可通过网络104上的其它计算装置102来访问的队列。队列是先进先出数据结构,并且队列元素数据可被入队或“推”到队列的开头上或者可被出队或“弹”离队列的末尾。在使用中,远程计算装置102(或本地计算装置102自身)可将包含队列操作的消息发送到托管队列的本地计算装置102。本地计算装置102可诸如通过直接访问托管队列的计算装置102的存储器204的操作来在主机结构接口210直接处理队列操作。在某些实施例中,此类途径可提供不要求处理器202执行任何队列管理任务以及不要求远程计算装置102和本地计算装置102之间的若干轮的通信的优势。
在某些实施例中,主机结构接口210可维持与队列关联的两个链表。第一链表被体现为空闲列表,其包含对于存储器204中为队列分配的存储器的每个空闲存储器位置的列表元素。第二链表被体现为队列列表,其包含在任何给定时间,对于队列中的每个元素的列表元素。在队列操作被接收时,来自适当列表的第一元素(即,对于入队操作,来自空闲列表的第一元素,以及对于出队操作,来自队列列表的第一元素)被选择。队列操作被执行,并且然后所选择的列表元素可使用触发的操作自动地被附加到另一个列表,如以下更详细地讨论的。例如,如果队列操作是入队操作,则空闲列表的第一列表元素从空闲列表中被移除,队列元素数据被存储在对应存储器位置中,并且然后第一列表元素被添加到队列列表。
在其它实施例中,主机结构接口210可维持与队列关联的单个链表。在此类实施例中,用于存储队列元素的每个存储器位置与两个列表元素(空闲列表元素和队列列表元素)关联。取决于存储器位置是空闲的还是含有队列元素,在任何给定时间,对于每个存储器位置的列表元素中的仅一个可在列表中。例如,如果存储器位置是空闲的,则对应空闲列表元素可在列表中,并且如果存储器位置含有队列元素,则对应队列列表元素可在列表中。链表中的元素中的某些元素可以是空闲列表元素,并且链表中的元素中的某些元素可以是队列列表元素。空闲列表元素可通过匹配比特的使用来与队列列表元素区分。在说明性实施例中,每个空闲列表元素对于匹配比特具有第一值并且每个队列列表元素对于匹配比特具有第二值。在此类实施例中,进入的队列操作将也包含匹配比特的集,并且主机结构接口210将按顺序遍历列表、寻找具有与队列操作的那些匹配比特相匹配的匹配比特的第一列表元素。第一匹配列表元素被选择,并且取决于正被执行的操作,关联的存储器位置被读自或写到。对应于相同存储器位置的另一个列表元素然后被附加到列表的末尾。例如,如果进入的队列操作是入队,则第一空闲列表元素被选择,并且队列元素数据被写到对应存储器位置。所选择的空闲列表元素从列表中被移除,并且与相同存储器位置关联的对应队列列表元素被附加到队列的末尾。
网络104可以是连接计算装置102的任何类型的网络。例如,系统100可以是数据中心并且网络104可通过连接数据中心的各种计算装置102的一系列的线缆和开关来建立。
现在参考图2,说明性计算装置102可被体现为能够执行本文所描述的功能的任何类型的计算装置。例如,计算装置102可被体现为或以其它方式被包含于(不限于)服务器计算机、桌上型计算机、智能电话、蜂窝电话、可穿戴式计算机、嵌入式计算系统、片上系统(SoC)、平板计算机、笔记型计算机、膝上型计算机、手持机、消息通讯装置、摄像机装置、多处理器系统、基于处理器的系统、消费电子装置、和/或任何其它计算装置。
说明性计算装置102包含处理器202、存储器204、输入/输出(I/O)子系统206、数据存储设备208、和主机结构接口210。在某些实施例中,计算装置102的说明性组件的一个或更多可被并入在另一组件中或以其它方式形成另一组件的一部分。例如,在某些实施例中,存储器204或其部分可被并入在处理器202中。
处理器202可被体现为能够执行本文所描述的功能的任何类型的处理器。例如,处理器202可被体现为单个或多核处理器、单个或多插槽处理器、数字信号处理器、图形处理器、微控制器、或其它处理器或处理/控制电路。类似地,存储器204可被体现为能够执行本文所描述的功能的任何类型的易失或非易失存储器或数据存储设备。在操作中,存储器204可存储在计算装置102的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库、和驱动。存储器204经由I/O子系统206被通信地耦合到处理器202,所述I/O子系统206可被体现为用于促进与处理器202、存储器204、和计算装置102的其它组件的输入/输出操作的电路和/或组件。例如,I/O子系统206可被体现为或以其它方式包含存储器控制器集线器、输入/输出控制集线器、固件装置、通信链路(即,点对点链路、总线链路、导线、线缆、光导、印刷电路板迹线、等等)和/或其它组件和子系统以促进输入/输出操作。在某些实施例中,I/O子系统206可形成片上系统(SoC)的一部分并连同处理器202、存储器204、和计算装置102的其它组件一起被并入在单个集成电路芯片上。在说明性实施例中,存储器204可被体现为计算装置102的主存储器并可被存储在一个或更多双列直插式存储器模块(DIMM)中。
数据存储设备208可被体现为被配置用于数据的短期或长期存储的任何类型的一个或多个装置。例如,数据存储设备208可包含任何一个或更多存储器装置和电路、存储器卡、硬盘驱动器、固态驱动器、或其它数据存储装置。
主机结构接口210可被体现为能够将计算装置102与网络104接口的任何接口。主机结构接口210可还被称为或被体现为网络接口控制器(NIC)。主机结构接口210可以能够与任何适当的线缆类型接口,诸如电缆或光缆。主机结构接口210可配置成使用任何一个或更多通信技术和关联的协议(例如,以太网、蓝牙®、Wi-Fi®、WiMAX、近场通信(NFC)、等等)。主机结构接口210包含消息处理器212,其能够基于接收的消息的内容来执行某些任务。主机结构接口210和消息处理器212可以能够执行具体接口,诸如由Sandia NationalLabs在2012年十一月中公布的带有标号SAND2012-10087的Portals 4.0网络编程接口。例如,取决于接收的具体消息,主机结构接口210可将从远程计算装置102接收的、作为消息的部分的数据存储在存储器204中,从存储器204中检索数据并将它发送到发送消息的远程计算装置102,触发以下更详细描述的某些操作或实现对实现具体接口(诸如Portals 4.0接口)所要求的任何其它功能性。在某些实施例中,主机结构接口210可以在与处理器202分开的封装中、在带有处理器202的多芯片封装中、或在带有处理器202的片上系统中。
当然,在某些实施例中,计算装置102可包含经常在计算装置102中找到的另外的组件,诸如显示器214和/或一个或更多外围装置216。外围装置216可包含键盘、鼠标、摄像机、等等。
显示器214可被体现为在其上信息可被显示给计算装置102的用户的任何类型的显示器,诸如液晶显示器(LCD)、发光二极管(LED)显示器、阴极射线管(CRT)显示器、等离子显示器、图象投影仪(例如,2D或3D)、激光投影仪、触摸屏显示器、头上显示器(heads-updisplay)、和/或其它显示器技术。
现在参考图3,在使用中,计算装置102可建立环境300。说明性环境300包含主机结构接口(HFI)消息处理器302、队列初始化器304、和垃圾收集器306。环境300的各种组件可被体现为硬件、固件、软件、或其组合。因此,在某些实施例中,环境300的组件中的一个或更多组件可被体现为电装置的集合或电路(例如,HFI消息处理器电路302、队列初始化器电路304、垃圾收集器电路306等等)。应该意识到的是,在此类实施例中,HFI消息处理器电路302、队列初始化器电路304、垃圾收集器电路306等等可形成处理器202、I/O子系统206、主机结构接口210、和/或计算装置102的其它组件中的一个或更多的一部分。另外,在某些实施例中,说明性组件中的一个或更多组件可形成另一组件的一部分和/或说明性组件中的一个或更多组件可以是彼此独立的。进一步地,在某些实施例中,环境300的组件中的一个或更多组件可被体现为虚拟的硬件组件或仿真的架构,其可通过处理器202或计算装置102的其它组件来建立和维持。
HFI消息处理器302配置成处理通过主机结构接口210接收的消息。HFI消息处理器302包含列表元素选择器308、直接存储器访问器310、和触发动作执行器312。通过主机结构接口210接收的消息可包含HFI消息处理器302可使用以便于处理消息的一个或更多参数(诸如队列操作类型、队列元素数据、匹配比特等等)。在说明性实施例中,HFI消息处理器302可通过首先基于接收的消息的参数访问列表访问表中的条目来处理消息。列表访问表中的条目可指向通过主机结构接口210维持的列表元素的链表(或以其它方式提供所述列表元素的链表位置的指示)。每个列表元素指向存储器204中的对应存储器位置(或以其它方式提供所述对应存储器位置的指示)。在某些实施例中,列表访问表包含对队列列表的条目(对于队列的每个元素,所述队列列表包含指向带有对应队列元素数据的存储器位置的列表元素)和对空闲列表的条目(其包含指向空闲存储器位置的一个或更多列表元素)。在此类实施例中,HFI消息处理器302可利用列表元素选择器308来选择链表中的第一列表元素。在其它实施例中,列表访问表可包含对合并的队列-空闲列表的条目。合并的队列-空闲列表包含指向带有对于队列中的每个元素的队列元素数据的存储器位置的列表元素和指向空闲存储器位置的一个或更多列表元素两者。合并的队列-空闲列表中的列表元素能通过匹配比特的使用来区分。通过HFI消息处理器302处理的消息可包含匹配比特,并且列表元素选择器308可按顺序遍历链表,寻找具有对应于消息中的那些匹配比特的匹配比特的列表元素。在此类实施例中,列表元素选择器308可选择具有与消息的那些匹配比特相匹配的匹配比特的第一列表元素。当然,在某些实施例中,HFI消息处理器302可以能够诸如通过具有与不使用匹配的列表访问表中的条目关联的链表和与使用匹配的列表访问表中的另一条目关联的链表来在利用或不利用匹配比特两者的情况下处理消息。在说明性实施例中,列表元素选择器308在选择列表元素时从列表中移除列表元素。在某些实施例中,列表元素选择器308可允许列表元素在选择列表元素之后仍然作为列表的部分。
在列表元素已经被选择之后,直接存储器访问器310可访问与列表元素关联的存储器位置。取决于消息的参数,HFI消息处理器302可将数据写到存储器位置(即,消息中包含的数据)或可从存储器204中的存储器位置读数据并将它发送回发送消息的远程计算装置102。应该意识到的是,直接存储器访问器310可从存储器204读和写到存储器204而不涉及处理器202。
在某些情况下,列表元素可具有与它关联的触发器,以在某个条件(诸如与列表元素关联的存储器被访问了某个数量的次数(例如,至少一次))被满足时来执行触发的动作。如果如此,HFI消息处理器302将触发的动作添加到要被执行的触发的动作的列表。触发动作执行器312可然后执行列表上的触发的动作。HFI消息处理器302可以能够触发若干类型的动作,诸如读数据、写数据、或将列表元素附加到列表(采用匹配的列表或者不采用匹配的列表)。应该意识到的是,在某些实施例中,通过触发动作执行器312来处理触发的动作可与其余的消息处理异步地被执行。例如,触发动作执行器312可被体现为与执行消息处理的其它方面(诸如选择列表项和访问存储器位置)的硬件分开的硬件。在某些实施例中,HFI消息处理器302可配置成在触发器被触发之后重置它,这可包含重置指示与列表关联的存储器位置已经被访问的次数的数量的计数器。
队列初始化器304配置成初始化要通过远程计算装置102访问的队列。队列初始化器包含存储器分配器314、列表访问表初始化器316、链表初始化器320、和触发器初始化器322。存储器分配器314配置成确定期望的最大队列长度和期望的队列元素长度并分配存储器204中的必需量的存储器。列表访问表初始化器316配置成初始化主机结构接口210中的列表访问表,并且链表初始化器320配置成诸如通过初始化对于与每个可能的队列元素关联的每个存储器位置的列表元素,和初始化空闲列表元素的链表来初始化列表访问表中的条目指向的链表。
在某些实施例中,垃圾收集器306配置成在必要时执行垃圾收集。应该意识到的是,如以上所解释的和以下更详细地讨论的,在数据从队列中被读时,列表元素从队列中被移除。在某些实施例中,列表元素可通过触发的动作自动地被添加到空闲列表元素的列表。然而,在其它实施例中,主机结构接口210可能不能够在没有来自计算装置102的指令的情况下重置触发器,并且在没有触发器的情况下将列表元素添加到空闲列表元素的列表可以是不期望的。在此类实施例中,垃圾收集器306可重置与列表元素关联的触发器并将列表元素附加到空闲列表。
现在参考图4,在使用中,计算装置102可运行用于管理队列的方法400。方法400在框402中开始,其中计算装置102初始化队列。在框404中,计算装置102可确定最大队列长度并且在框406中确定队列元素长度。在某些实施例中,队列可具有多于一个容许的元素长度,并且在此类实施例中,在框406中计算装置102将确定每个容许的元素长度。在框408中,计算装置102然后分配存储器204的块。当然,应该意识到的是,在稍后的时间如果必要的话(诸如如果分配的存储器的可用的量下降低于某个阈值),计算装置102可分配另外的存储器。
在框410中,计算装置102确定主机结构接口210是否已经接收了队列操作。如果没有,则方法400循环回到框410,其中计算装置210继续对于队列操作进行监视。如果主机结构接口210已经接收了包含队列操作的消息,则方法400继续到框412,其中计算装置102基于消息的参数来确定队列操作是入队还是出队。在框414中,如果队列操作是入队,则方法400继续到框416。
在框416中,主机结构接口210将来自队列操作的队列元素数据存储在存储器204中。在框418中,主机结构接口210将队列元素数据附加到队列的末尾。方法400然后循环回到框410,其中计算装置102继续对于队列操作进行监视。
参考回到框414,如果队列操作是出队,则方法400继续到框420,在框420中,其中主机结构接口210移除队列中的下个条目并且在框422中从存储器中检索队列元素数据。在框424中,主机结构接口210将队列元素数据发送到发送队列操作的计算装置102。方法400然后循环回到框410,其中计算装置102继续对于队列操作进行监视。
现在参考图5,在使用中,计算装置102可运行用于使用在主机结构接口210中存储的链表来管理队列的方法500。方法500在框502中开始,其中计算装置102初始化主机结构接口210。在框504中,计算装置102初始化列表访问表,在框506中初始化空闲列表元素(即,带有空闲的存储器位置的指针或其它指示的列表元素)的列表,并在框508中初始化与列表元素关联的触发器。在其中队列元素被容许具有多于一个可能大小的实施例中,计算装置102利用与大小关联的匹配比特初始化对于每个容许的大小的空闲列表元素。在将队列元素附加到队列时,入队操作可使用对应匹配比特来选择带有适合大小的空闲列表元素。
在框510中,如果主机结构接口210尚未接收队列操作,则方法500循环回到框510,其中计算装置102继续对于队列操作进行监视。如果主机结构接口210已经接收包含队列操作的消息,则方法500继续到框512,其中主机结构接口210访问与由队列操作参考的列表访问表中的条目关联的链表的第一列表元素。在不使用匹配列表的实施例中,与由队列操作参考的条目关联的链表可以是队列列表或空闲列表,并且在方法500中第一列表元素随后稍后被使用(例如,见框520和522)。在使用匹配列表的实施例中,与由队列操作参考的条目关联的链表是合并的队列-空闲列表,并且在框514中,主机结构接口210检查队列操作的匹配比特对列表中的下个项的匹配比特(即,第一次通过循环的第一元素)。例如,列表元素可包含用在入队操作中的入队匹配比特或用在出队操作中的出队匹配比特,并且队列操作将取决于要被执行的队列操作包含入队匹配比特或者出队匹配比特。在框516中,如果匹配比特不匹配,则在框518中,主机结构接口210访问下个列表元素并循环回到框514以检查下个列表元素的匹配比特。如果匹配比特匹配,则方法500继续到框520,其中主机结构接口210选择当前列表元素。
随后在图6的框522中,计算装置102确定队列操作是入队还是出队操作。如果队列操作是入队,则方法500继续到框524。在框524中,主机结构接口210从列表中移除选择的列表元素。在框526中,主机结构接口210将队列元素数据存储在与所选择的列表元素关联的存储器位置中。
在框528中,主机结构接口210自动地触发用于将数据附加到队列的动作。在某些实施例中(诸如不采用匹配列表的实施例),在框530中,主机结构接口210可触发用于将选择的列表元素附加到队列列表(其与选择的列表项之前曾是其部分的空闲列表不同)的动作。在其它实施例中(诸如采用匹配列表的实施例),在框532中,主机结构接口210可将带有出队匹配比特并带有与选择的列表元素相同的存储器位置的指示的列表元素附加到合并的队列-空闲列表(其与选择的列表项之前曾是其部分的列表相同)。如以上所讨论的,触发动作不实际上执行那个动作,而仅将它添加到要被执行的动作的列表。
在框534中,主机结构接口210执行触发的附加操作。在某些实施例中,在框536中,主机结构接口210可自动地重置与选择的列表元素关联的触发器,使得触发器能对于后续附加操作被再次激发。方法500然后循环回到图5中的框510,其中计算装置102继续对于队列操作进行监视。
参考回到框522,如果队列操作是出队,则方法500继续到框538,其中主机结构接口210从列表中移除选择的列表元素。在框540中,主机结构接口210由与选择的列表元素关联的存储器位置检索队列元素数据。在框542中,主机结构接口210然后将队列元素数据发送到请求计算装置102。
在框544中,主机结构接口210自动地触发用于附加与空闲存储器位置关联的空闲列表元素的动作。在某些实施例中(诸如不采用匹配列表的实施例),在框546中,主机结构接口210可触发用于将选择的列表元素附加到空闲列表(其与选择的列表项之前曾是其部分的队列列表不同)的动作。在其它实施例中(诸如采用匹配列表的实施例),在框548中,主机结构接口210可将带有入队匹配比特和带有与选择的列表元素相同的存储器位置的指示的列表元素附加到合并的队列-空闲列表(其与选择的列表项之前曾是其部分的列表相同)。
在框550中,主机结构接口210执行触发的附加操作。在某些实施例中,在框552中,主机结构接口210可自动地重置与选择的列表元素关联的触发器,使得触发器能对于后续附加操作被再次激发。方法500然后循环回到图5中的框510,其中计算装置102继续对于队列操作进行监视。
现在参考图7,在使用中,计算装置102可运行用于执行垃圾收集的方法700。方法700在框702中开始,其中,如果计算装置102不要执行垃圾收集,则方法700循环回到框702。如果计算装置102要执行垃圾收集,则700继续到框704。在如此被请求时、或在某个条件被满足(诸如已经被释放但未被添加到空闲列表的列表元素的某个数量)时,计算装置102可周期性地、连续地、频繁地执行垃圾收集。
在框704中,方法700将空闲列表元素附加到空闲列表。在某些实施例中(诸如不采用匹配列表的实施例),在框706中,计算装置102将所有空闲列表元素附加到空闲列表,所述空闲列表不同于队列列表。在其它实施例中(诸如采用匹配列表的实施例),在框548中,计算装置102可将带有入队匹配比特的每个空闲列表元素附加到合并的队列-空闲列表。
应该还意识到的是,在某些实施例中,计算装置102可管理除队列以外的数据结构。例如,计算装置102可管理栈数据结构。当然,以上所描述的途径的某些修改将是要求的,诸如当元素被添加时,将数据前置添加(prepend)到栈列表的开头(而不是将数据附加到队列列表的末尾,如以上所描述的)。
本公开提供了如下的技术方案:
1. 一种用于管理队列的计算装置,所述计算装置包括:
处理器;
存储器,具有存储在其中的多个指令,所述多个指令在通过所述处理器运行时,促使所述计算装置初始化所述队列;以及
与所述处理器不同的主机结构接口,用于:
从第一远程计算装置接收入队操作,其中所述入队操作包括队列元素数据;
响应于所述入队操作的接收,将所述队列元素数据入队进所述队列中;
从第二远程计算装置接收出队操作;
响应于所述出队操作的接收,将所述队列元素数据从所述队列中出队;以及
将所述队列元素数据发送到所述第二远程计算装置。
2. 如技术方案1所述的计算装置,其中将所述队列元素数据入队进所述队列中包括通过使用直接存储器访问来将所述队列元素数据存储在所述存储器中。
3. 如技术方案1所述的计算装置,其中响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
选择在空闲列表的前面的列表元素,其中所述列表元素包括存储器位置的指示;
从所述空闲列表中移除所述列表元素;
将所述队列元素数据存储在所述存储器位置中;
触发用于将所述列表元素附加到队列列表的附加操作;以及
执行用于将所述列表元素附加到所述队列列表的所述附加操作,并且
其中响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
选择在所述队列列表的前面的所述列表元素;
从所述队列列表中移除所述列表元素;以及
由所述存储器位置检索所述队列元素数据。
4. 如技术方案3所述的计算装置,其中将所述队列元素数据从所述队列中出队进一步包括:
触发用于将所述列表元素附加到所述空闲列表的附加操作;以及
执行用于将所述列表元素附加到所述空闲列表的所述附加操作。
5. 如技术方案4所述的计算装置,其中触发用于将所述列表元素附加到所述队列列表的所述附加操作包括响应于所述入队操作,自动地重置用于所述附加操作的触发器,以在所述列表元素从所述空闲列表中的后续移除时将所述列表元素附加到所述队列列表;以及
其中触发用于将所述列表元素附加到所述空闲列表的所述附加操作包括响应于所述出队操作,自动地重置用于所述附加操作的触发器,以在所述列表元素从所述队列列表中的后续移除时将所述列表元素附加到所述空闲列表。
6. 如技术方案1所述的计算装置,其中响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
对于第一列表元素遍历合并的队列-空闲列表,其中所述第一列表元素包括与所述入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中所述第一列表元素包括存储器位置的指示;
从所述列表中移除所述第一列表元素;
将所述队列元素数据存储在所述存储器位置中;
触发用于附加第二列表元素的附加操作,其中所述第二列表元素包括所述存储器位置的所述指示和多个出队匹配比特;以及
执行用于将所述第二列表元素附加到所述合并的队列-空闲列表的所述附加操作,并且
其中响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
对于所述第二列表元素遍历所述合并的队列-空闲列表,其中所述第二列表元素的所述多个出队匹配比特与所述出队操作的对应多个出队匹配比特相匹配;
从所述合并的队列-空闲列表中移除所述第二列表元素;以及
由所述存储器位置检索所述队列元素数据。
7. 如技术方案1所述的计算装置,其中所述主机结构接口进一步用于:
从所述处理器接收另外的入队操作,其中所述另外的入队操作包括另外的队列元素数据;以及
响应于所述另外的入队操作的接收,将所述另外的队列元素数据入队进所述队列中。
8. 如技术方案1所述的计算装置,其中所述主机结构接口进一步用于:
从所述第一远程计算装置接收另外的入队操作,其中所述另外的入队操作包括另外的队列元素数据;
响应于所述另外的入队操作的接收,将所述另外的队列元素数据入队进所述队列中;
从所述处理器接收另外的出队操作;
响应于所述另外的出队操作的接收,将所述另外的队列元素数据从所述队列中出队;以及
将所述另外的队列元素数据发送到所述处理器。
9. 如技术方案1所述的计算装置,其中所述主机结构接口在与所述处理器分开的、它的自己的封装中。
10. 如技术方案1所述的计算装置,其中所述主机结构接口在带有所述处理器的多芯片封装中或在带有所述处理器的片上系统中。
11. 一种用于管理计算装置上的队列的方法,所述方法包括:
通过所述计算装置初始化所述队列;
通过与所述计算装置的处理器不同的所述计算装置的主机结构接口,从第一远程计算装置接收入队操作,其中所述入队操作包括队列元素数据;
通过所述主机结构接口并响应于所述入队操作的接收,将所述队列元素数据入队进所述队列中;
通过所述主机结构接口从第二远程计算装置接收出队操作;
通过所述主机结构接口并响应于所述出队操作的接收,将所述队列元素数据从所述队列中出队;
通过所述主机结构接口将所述队列元素数据发送到所述第二远程计算装置。
12. 如技术方案11所述的方法,其中将所述队列元素数据入队进所述队列中包括通过使用直接存储器访问将所述队列元素数据存储在所述计算装置的存储器中。
13. 如技术方案11所述的方法,其中通过所述主机结构接口并响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
通过所述主机结构接口选择在空闲列表的前面的列表元素,其中所述列表元素包括存储器位置的指示;
通过所述主机结构接口从所述空闲列表中移除所述列表元素;
通过所述主机结构接口将所述队列元素数据存储在所述存储器位置中;
通过所述主机结构接口触发用于将所述列表元素附加到队列列表的附加操作;以及
通过所述主机结构接口执行用于将所述列表元素附加到所述队列列表的所述附加操作,并且
其中通过所述主机结构接口并响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
通过所述主机结构接口选择在所述队列列表的前面的所述列表元素;
通过所述主机结构接口从所述队列列表中移除所述列表元素;以及
通过所述主机结构接口并由所述存储器位置检索所述队列元素数据。
14. 如技术方案13所述的方法,其中将所述队列元素数据从所述队列中出队进一步包括:
通过所述主机结构接口触发用于将所述列表元素附加到所述空闲列表的附加操作;以及
通过所述主机结构接口执行用于将所述列表元素附加到所述空闲列表的所述附加操作。
15. 如技术方案11所述的方法,其中通过所述主机结构接口并响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
通过所述主机结构接口对于第一列表元素遍历合并的队列-空闲列表,其中所述第一列表元素包括与所述入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中所述第一列表元素包括存储器位置的指示;
通过所述主机结构接口从所述列表中移除所述第一列表元素;
通过所述主机结构接口将所述队列元素数据存储在所述存储器位置中;
通过所述主机结构接口触发用于附加第二列表元素的附加操作,其中所述第二列表元素包括所述存储器位置的所述指示和多个出队匹配比特;以及
通过所述主机结构接口执行用于将所述第二列表元素附加到所述合并的队列-空闲列表的所述附加操作,并且
其中通过所述主机结构接口并响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
通过所述主机结构接口对于所述第二列表元素遍历所述合并的队列-空闲列表,其中所述第二列表元素的所述多个出队匹配比特与所述出队操作的对应多个出队匹配比特相匹配;
通过所述主机结构接口从所述合并的队列-空闲列表中移除所述第二列表元素;以及
通过所述主机结构接口并由所述存储器位置检索所述队列元素数据。
16. 如技术方案15所述的方法,其中将所述队列元素数据从所述队列中出队进一步包括:
通过所述主机结构接口触发用于将所述第一列表元素附加到所述合并的队列-空闲列表的附加操作;以及
通过所述主机结构接口执行用于将所述第一列表元素附加到所述合并的队列-空闲列表的所述附加操作。
17. 一个或更多机器可读媒体,包括存储在其上的多个指令,所述多个指令在被运行时促使计算装置:
初始化队列;
通过与所述计算装置的处理器不同的主机结构接口,从第一远程计算装置接收入队操作,其中所述入队操作包括队列元素数据;
通过所述主机结构接口并响应于所述入队操作的接收,将所述队列元素数据入队进所述队列中;
通过所述主机结构接口从第二远程计算装置接收出队操作;
通过所述主机结构接口并响应于所述出队操作的接收,将所述队列元素数据从所述队列中出队;以及
通过所述主机结构接口将所述队列元素数据发送到所述第二远程计算装置。
18. 如技术方案17所述的一个或更多计算机可读媒体,其中将所述队列元素数据入队进所述队列中包括通过使用直接存储器访问将所述队列元素数据存储在所述存储器中。
19. 如技术方案17所述的一个或更多计算机可读媒体,其中响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
选择在空闲列表的前面的列表元素,其中所述列表元素包括存储器位置的指示;
从所述空闲列表中移除所述列表元素;
将所述队列元素数据存储在所述存储器位置中;
触发用于将所述列表元素附加到队列列表的附加操作;以及
执行用于将所述列表元素附加到所述队列列表的所述附加操作,并且
其中响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
选择在所述队列列表的前面的所述列表元素;
从所述队列列表中移除所述列表元素;以及
由所述存储器位置检索所述队列元素数据。
20. 如技术方案19所述的一个或更多计算机可读媒体,其中将所述队列元素数据从所述队列中出队进一步包括:
触发用于将所述列表元素附加到所述空闲列表的附加操作;以及
执行用于将所述列表元素附加到所述空闲列表的所述附加操作。
21. 如技术方案17所述的一个或更多计算机可读媒体,其中响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
对于第一列表元素遍历合并的队列-空闲列表,其中所述第一列表元素包括与所述入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中所述第一列表元素包括存储器位置的指示;
从所述列表中移除所述第一列表元素;
将所述队列元素数据存储在所述存储器位置中;
触发用于附加第二列表元素的附加操作,其中所述第二列表元素包括所述存储器位置的所述指示和多个出队匹配比特;以及
执行用于将所述第二列表元素附加到所述合并的队列-空闲列表的所述附加操作,并且
其中响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
对于所述第二列表元素遍历所述合并的队列-空闲列表,其中所述第二列表元素的所述多个出队匹配比特与所述出队操作的对应多个出队匹配比特相匹配;
从所述合并的队列-空闲列表中移除所述第二列表元素;以及
由所述存储器位置检索所述队列元素数据。
22. 如技术方案21所述的一个或更多计算机可读媒体,其中将所述队列元素数据从所述队列中出队进一步包括:
触发用于将所述第一列表元素附加到所述合并的队列-空闲列表的附加操作;以及
执行用于将所述第一列表元素附加到所述合并的队列-空闲列表的所述附加操作。
23. 一种用于管理队列的计算装置,所述计算装置包括:
用于初始化所述队列的部件;
与所述计算装置的处理器不同的主机结构接口,用于从第一远程计算装置接收入队操作,其中所述入队操作包括队列元素数据;
用于通过所述主机结构接口并响应于所述入队操作的接收,将所述队列元素数据入队进所述队列中的部件,
其中所述主机结构接口进一步用于从第二远程计算装置接收出队操作,
进一步包括用于通过所述主机结构接口并响应于所述出队操作的接收,将所述队列元素数据从所述队列中出队的部件,
其中所述主机结构接口进一步用于将所述队列元素数据发送到所述第二远程计算装置。
24. 如技术方案23所述的计算装置,其中用于通过所述主机结构接口并响应于所述入队操作,将所述队列元素数据入队进所述队列中的所述部件包括:
用于通过所述主机结构接口选择在空闲列表的前面的列表元素的部件,其中所述列表元素包括存储器位置的指示;
用于通过所述主机结构接口从所述空闲列表中移除所述列表元素的部件;
用于通过所述主机结构接口将所述队列元素数据存储在所述存储器位置中的部件;
用于通过所述主机结构接口触发用于将所述列表元素附加到队列列表的附加操作的部件;以及
用于通过所述主机结构接口执行用于将所述列表元素附加到所述队列列表的所述附加操作的部件,并且
其中用于通过所述主机结构接口并响应于所述出队操作将所述队列元素数据从所述队列中出队的所述部件包括:
用于通过所述主机结构接口选择在所述队列列表的前面的所述列表元素的部件;
用于通过所述主机结构接口从所述队列列表中移除所述列表元素的部件;以及
用于通过所述主机结构接口并由所述存储器位置检索所述队列元素数据的部件。
25. 如技术方案23所述的计算装置,其中用于通过所述主机结构接口并响应于所述入队操作将所述队列元素数据入队进所述队列中的所述部件包括:
用于通过所述主机结构接口对于第一列表元素遍历合并的队列-空闲列表的部件,其中所述第一列表元素包括与所述入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中所述第一列表元素包括存储器位置的指示;
用于通过所述主机结构接口从所述列表中移除所述第一列表元素的部件;
用于通过所述主机结构接口将所述队列元素数据存储在所述存储器位置中的部件;
用于通过所述主机结构接口触发用于附加第二列表元素的附加操作的部件,其中所述第二列表元素包括所述存储器位置的所述指示和多个出队匹配比特;以及
用于通过所述主机结构接口执行用于将所述第二列表元素附加到所述合并的队列-空闲列表的所述附加操作的部件,并且
其中用于通过所述主机结构接口并响应于所述出队操作将所述队列元素数据从所述队列中出队的所述部件包括:
用于通过所述主机结构接口对于所述第二列表元素遍历所述合并的队列-空闲列表的部件,其中所述第二列表元素的所述多个出队匹配比特与所述出队操作的对应多个出队匹配比特相匹配;
用于通过所述主机结构接口从所述合并的队列-空闲列表中移除所述第二列表元素的部件;以及
用于通过所述主机结构接口并由所述存储器位置检索所述队列元素数据的部件。
示例
下面提供了本文所公开的装置、系统、和方法的说明性示例。装置、系统、和方法的实施例可包含下面所描述的示例的任何一个或更多和其任何组合。
示例1包含用于管理队列的计算装置,计算装置包括处理器;具有存储在其中的多个指令的存储器,所述多个指令在通过处理器运行时,促使计算装置初始化队列;以及用于从第一远程计算装置接收入队操作的、与处理器不同的主机结构接口,其中入队操作包括队列元素数据;响应于入队操作的接收,将队列元素数据入队进队列中;从第二远程计算装置接收出队操作;响应于出队操作的接收,将队列元素数据从队列中出队;以及将队列元素数据发送到第二远程计算装置。
示例2包含示例1的主题,并且其中将队列元素数据入队进队列中包括通过使用直接存储器访问来将队列元素数据存储在存储器中。
示例3包含示例1和2中的任一个的主题,并且其中第一计算装置与第二计算装置不同。
示例4包含示例1-3中的任一个的主题,并且其中第一计算装置是第二计算装置。
示例5包含示例1-4中的任一个的主题,并且其中响应于入队操作,将队列元素数据入队进队列中包括选择在空闲列表的前面的列表元素,其中列表元素包括存储器位置的指示;从空闲列表中移除列表元素;将队列元素数据存储在存储器位置中;触发用于将列表元素附加到队列列表的附加操作;以及执行用于将列表元素附加到队列列表的附加操作,并且其中响应于出队操作,将队列元素数据从队列中出队包括选择在队列列表的前面的列表元素;从队列列表中移除列表元素;以及由存储器位置检索队列元素数据。
示例6包含示例1-5中的任一个的主题,并且其中将队列元素数据从队列中出队进一步包括触发用于将列表元素附加到空闲列表的附加操作;以及执行用于将列表元素附加到空闲列表的附加操作。
示例7包含示例1-6中的任一个的主题,并且其中触发用于将列表元素附加到队列列表的附加操作包括响应于入队操作,自动地重置用于附加操作的触发器,以在列表元素从空闲列表中的后续移除时将列表元素附加到队列列表;并且其中触发用于将列表元素附加到空闲列表的附加操作包括响应于出队操作,自动地重置用于附加操作的触发器,以在列表元素从队列列表中的后续移除时将列表元素附加到空闲列表。
示例8包含示例1-7中的任一个的主题,并且其中所述多个指令进一步促使计算装置执行关于列表元素的垃圾收集,其中执行关于列表元素的垃圾收集包括将列表元素附加到空闲列表;以及重置用于附加操作的触发器,以在列表元素从空闲列表中的后续移除时将列表元素附加到队列列表。
示例9包含示例1-8中的任一个的主题,并且其中响应于入队操作,将队列元素数据入队进队列中包括对于第一列表元素遍历合并的队列-空闲列表,其中第一列表元素包括与入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中第一列表元素包括存储器位置的指示;从列表中移除第一列表元素;将队列元素数据存储在存储器位置中;触发用于附加第二列表元素的附加操作,其中第二列表元素包括存储器位置的指示和多个出队匹配比特;以及执行用于将第二列表元素附加到合并的队列-空闲列表的附加操作,并且其中响应于出队操作,将队列元素数据从队列中出队包括对于第二列表元素遍历合并的队列-空闲列表,其中第二列表元素的多个出队匹配比特与出队操作的对应多个出队匹配比特相匹配;从合并的队列-空闲列表中移除第二列表元素;以及由存储器位置检索队列元素数据。
示例10包含示例1-9中的任一个的主题,并且其中将队列元素数据从队列中出队进一步包括触发用于将第一列表元素附加到合并的队列-空闲列表的附加操作;以及执行用于将第一列表元素附加到合并的队列-空闲列表的附加操作。
示例11包含示例1-10中的任一个的主题,并且其中触发用于将第二列表元素附加到合并的队列-空闲列表的附加操作包括响应于入队操作,自动地重置用于附加操作的触发器,以在第一列表元素从合并的队列-空闲列表中的后续移除时将第二列表元素附加到合并的队列-空闲列表;并且其中触发用于将第一列表元素附加到合并的队列-空闲列表的附加操作包括响应于出队操作,自动地重置用于附加操作的触发器,以在第二列表元素从合并的队列-空闲列表中的后续移除时将第一列表元素附加到合并的队列-空闲列表。
示例12包含示例1-11中的任一个的主题,并且其中所述多个指令进一步促使计算装置执行关于第一列表元素的垃圾收集,其中执行关于第一列表元素的垃圾收集包括将第一列表元素附加到合并的队列-空闲列表;以及重置用于附加操作的触发器,以在第一列表元素从合并的队列-空闲列表中的后续移除时将第二列表元素附加到合并的队列-空闲列表。
示例13包含示例1-12中的任一个的主题,并且其中主机结构接口进一步用于从处理器接收另外的入队操作,其中另外的入队操作包括另外的队列元素数据;并且响应于另外的入队操作的接收,将另外的队列元素数据入队进队列中。
示例14包含示例1-13中的任一个的主题,并且其中主机结构接口进一步用于从第一远程计算装置接收另外的入队操作,其中另外的入队操作包括另外的队列元素数据;响应于另外的入队操作的接收,将另外的队列元素数据入队进队列中;从处理器接收另外的出队操作;响应于另外的出队操作的接收,将另外的队列元素数据从队列中出队;以及将另外的队列元素数据发送到处理器。
示例15包含示例1-14中的任一个的主题,并且其中主机结构接口在与处理器分开的、它的自己的封装中。
示例16包含示例1-15中的任一个的主题,并且其中主机结构接口在带有处理器的多芯片封装中或在带有处理器的片上系统中。
示例17包含用于管理计算装置上的队列的方法,所述方法包括通过计算装置初始化队列;通过与计算装置的处理器不同的计算装置的主机结构接口,从第一远程计算装置接收入队操作,其中入队操作包括队列元素数据;通过主机结构接口并响应于入队操作的接收,将队列元素数据入队进队列中;通过主机结构接口,从第二远程计算装置接收出队操作;通过主机结构接口并响应于出队操作的接收,将队列元素数据从队列中出队;通过主机结构接口将队列元素数据发送到第二远程计算装置。
示例18包含示例17的主题,并且其中将队列元素数据入队进队列中包括通过使用直接存储器访问将队列元素数据存储在计算装置的存储器中。
示例19包含示例17和18中的任一个的主题,并且其中第一计算装置与第二计算装置不同。
示例20包含示例17-19中的任一个的主题,并且其中第一计算装置是第二计算装置。
示例21包含示例17-20中的任一个的主题,并且其中通过主机结构接口并响应于入队操作,将队列元素数据入队进队列中包括通过主机结构接口来选择在空闲列表的前面的列表元素,其中列表元素包括存储器位置的指示;通过主机结构接口,从空闲列表中移除列表元素;通过主机结构接口,将队列元素数据存储在存储器位置中;通过主机结构接口,触发用于将列表元素附加到队列列表的附加操作;以及通过主机结构接口,执行用于将列表元素附加到队列列表的附加操作,并且其中通过主机结构接口并响应于出队操作将队列元素数据从队列中出队包括通过主机结构接口,选择在队列列表的前面的列表元素;通过主机结构接口,从队列列表中移除列表元素;以及通过主机结构接口并由存储器位置检索队列元素数据。
示例22包含示例17-21中的任一个的主题,并且其中将队列元素数据从队列中出队进一步包括通过主机结构接口,触发用于将列表元素附加到空闲列表的附加操作;以及通过主机结构接口,执行用于将列表元素附加到空闲列表的附加操作。
示例23包含示例17-22中的任一个的主题,并且其中通过主机结构接口,触发用于将列表元素附加到队列列表的附加操作包括通过主机结构接口并响应于入队操作,自动地重置用于附加操作的触发器,以在列表元素从空闲列表中的后续移除时将列表元素附加到队列列表;并且其中通过主机结构接口,触发用于将列表元素附加到空闲列表的附加操作包括通过主机结构接口并响应于出队操作,自动地重置用于附加操作的触发器,以在列表元素从队列列表中的后续移除时将列表元素附加到空闲列表。
示例24包含示例17-23中的任一个的主题,并且进一步包含执行关于列表元素的垃圾收集,其中执行关于列表元素的垃圾收集包括通过计算装置将列表元素附加到空闲列表;以及通过计算装置,重置用于附加操作的触发器,以在列表元素从空闲列表中的后续移除时将列表元素附加到队列列表。
示例25包含示例17-24中的任一个的主题,并且其中通过主机结构接口并响应于入队操作,将队列元素数据入队进队列中包括通过主机结构接口,对于第一列表元素遍历合并的队列-空闲列表,其中第一列表元素包括与入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中第一列表元素包括存储器位置的指示;通过主机结构接口,从列表中移除第一列表元素;通过主机结构接口,将队列元素数据存储在存储器位置中;通过主机结构接口,触发用于附加第二列表元素的附加操作,其中第二列表元素包括存储器位置的指示和多个出队匹配比特;以及通过主机结构接口,执行用于将第二列表元素附加到合并的队列-空闲列表的附加操作,并且其中通过主机结构接口并响应于出队操作,将队列元素数据从队列中出队包括通过主机结构接口,对于第二列表元素遍历合并的队列-空闲列表,其中第二列表元素的多个出队匹配比特与出队操作的对应多个出队匹配比特相匹配;通过主机结构接口,从合并的队列-空闲列表中移除第二列表元素;以及通过主机结构接口并由存储器位置检索队列元素数据。
示例26包含示例17-25中的任一个的主题,并且其中将队列元素数据从队列中出队进一步包括通过主机结构接口,触发用于将第一列表元素附加到合并的队列-空闲列表的附加操作;以及通过主机结构接口,执行用于将第一列表元素附加到合并的队列-空闲列表的附加操作。
示例27包含示例17-26中的任一个的主题,并且其中通过主机结构接口,触发用于将第二列表元素附加到合并的队列-空闲列表的附加操作包括通过主机结构接口并响应于入队操作,自动地重置用于附加操作的触发器,以在第一列表元素从合并的队列-空闲列表中的后续移除时将第二列表元素附加到合并的队列-空闲列表;并且其中通过主机结构接口,触发用于将第一列表元素附加到合并的队列-空闲列表的附加操作包括通过主机结构接口并响应于出队操作,自动地重置用于附加操作的触发器,以在第二列表元素从合并的队列-空闲列表中的后续移除时将第一列表元素附加到合并的队列-空闲列表。
示例28包含示例17-27中的任一个的主题,并进一步包含执行关于第一列表元素的垃圾收集,其中执行关于第一列表元素的垃圾收集包括通过计算装置将第一列表元素附加到合并的队列-空闲列表;以及通过计算装置,重置用于附加操作的触发器,以在第一列表元素从合并的队列-空闲列表中的后续移除时将第二列表元素附加到合并的队列-空闲列表。
示例29包含示例17-28中的任一个的主题,并进一步包含从处理器接收另外的入队操作,其中另外的入队操作包括另外的队列元素数据;以及响应于另外的入队操作的接收,将另外的队列元素数据入队进队列中。
示例30包含示例17-29中的任一个的主题,并进一步包含从第一远程计算装置接收另外的入队操作,其中另外的入队操作包括另外的队列元素数据;响应于另外的入队操作的接收,将另外的队列元素数据入队进队列中;从处理器接收另外的出队操作;响应于另外的出队操作的接收,将另外的队列元素数据从队列中出队;以及将另外的队列元素数据发送到处理器。
示例31包含示例17-30中的任一个的主题,并且其中主机结构接口在与处理器分开的、它的自己的封装中。
示例32包含示例17-31中的任一个的主题,并且其中主机结构接口在带有处理器的多芯片封装中或在带有处理器的片上系统中。
示例33包含一个或更多计算机可读媒体,其包括存储在其上的多个指令,所述多个指令在运行时,促使计算装置执行示例18-28中的任一个的方法。
示例34包含用于管理队列的计算装置,所述计算装置包括用于初始化队列的部件;用于从第一远程计算装置接收入队操作的、与计算装置的处理器不同的主机结构接口,其中入队操作包括队列元素数据;用于通过主机结构接口并响应于入队操作的接收,将队列元素数据入队进队列中的部件,其中主机结构接口进一步用于从第二远程计算装置接收出队操作,进一步包括用于通过主机结构接口并响应于出队操作的接收,将队列元素数据从队列中出队的部件,其中主机结构接口进一步用于将队列元素数据发送到第二远程计算装置。
示例35包含示例34的主题,并且其中用于将队列元素数据入队进队列中的部件包括用于通过使用直接存储器访问将队列元素数据存储在计算装置的存储器中的部件。
示例36包含示例34和35中的任一个的主题,并且其中第一计算装置与第二计算装置不同。
示例37包含示例34-36中的任一个的主题,并且其中第一计算装置是第二计算装置。
示例38包含示例34-37中的任一个的主题,并且其中用于通过主机结构接口并响应于入队操作,将队列元素数据入队进队列中的部件包括用于通过主机结构接口,选择在空闲列表的前面的列表元素的部件,其中列表元素包括存储器位置的指示;用于通过主机结构接口,从空闲列表移除列表元素的部件;用于通过主机结构接口,将队列元素数据存储在存储器位置中的部件;用于通过主机结构接口,触发用于将列表元素附加到队列列表的附加操作的部件;以及用于通过主机结构接口,执行用于将列表元素附加到队列列表的附加操作的部件,并且其中用于通过主机结构接口并响应于出队操作将队列元素数据从队列中出队的部件包括用于通过主机结构接口,选择在队列列表的前面的列表元素的部件;用于通过主机结构接口,从队列列表中移除列表元素的部件;以及用于通过主机结构接口并由存储器位置检索队列元素数据的部件。
示例39包含示例34-38中的任一个的主题,并且其中用于将队列元素数据从队列中出队的部件进一步包括用于通过主机结构接口,触发用于将列表元素附加到空闲列表的附加操作的部件;以及用于通过主机结构接口,执行用于将列表元素附加到空闲列表的附加操作的部件。
示例40包含示例34-39中的任一个的主题,并且其中用于通过主机结构接口,触发用于将列表元素附加到队列列表的附加操作的部件包括用于通过主机结构接口并响应于入队操作,自动地重置用于附加操作的触发器,以在列表元素从空闲列表中的后续移除时将列表元素附加到队列列表的部件;并且其中用于通过主机结构接口,触发用于将列表元素附加到空闲列表的附加操作的部件包括用于通过主机结构接口并响应于出队操作,自动地重置用于附加操作的触发器,以在列表元素从队列列表中的后续移除时将列表元素附加到空闲列表的部件。
示例41包含示例34-40中的任一个的主题,并且进一步包含用于执行关于列表元素的垃圾收集的部件,其中用于执行关于列表元素的垃圾收集的部件包括用于将列表元素附加到空闲列表的部件;以及用于重置用于附加操作的触发器,以在列表元素从空闲列表中的后续移除时将列表元素附加到队列列表的部件。
示例42包含示例34-41中的任一个的主题,并且其中用于通过主机结构接口并响应于入队操作,将队列元素数据入队进队列中的部件包括用于通过主机结构接口对于第一列表元素遍历合并的队列-空闲列表的部件,其中第一列表元素包括与入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中第一列表元素包括存储器位置的指示;用于通过主机结构接口,从列表中移除第一列表元素的部件;用于通过主机结构接口,将队列元素数据存储在存储器位置中的部件;用于通过主机结构接口,触发用于附加第二列表元素的附加操作的部件,其中第二列表元素包括存储器位置的指示和多个出队匹配比特;以及用于通过主机结构接口,执行用于将第二列表元素附加到合并的队列-空闲列表的附加操作的部件,并且其中用于通过主机结构接口并响应于出队操作,将队列元素数据从队列中出队的部件包括用于通过主机结构接口对于第二列表元素遍历合并的队列-空闲列表的部件,其中第二列表元素的多个出队匹配比特与出队操作的对应多个出队匹配比特相匹配;用于通过主机结构接口,从合并的队列-空闲列表中移除第二列表元素的部件;以及用于通过主机结构接口并由存储器位置检索队列元素数据的部件。
示例43包含示例34-42中的任一个的主题,并且其中用于将队列元素数据从队列中出队的部件进一步包括用于通过主机结构接口,触发用于将第一列表元素附加到合并的队列-空闲列表的附加操作的部件;以及用于通过主机结构接口,执行用于将第一列表元素附加到合并的队列-空闲列表的附加操作的部件。
示例44包含示例34-43中的任一个的主题,并且其中用于通过主机结构接口,触发用于将第二列表元素附加到合并的队列-空闲列表的附加操作的部件包括用于通过主机结构接口并响应于入队操作,自动地重置用于附加操作的触发器,以在第一列表元素从合并的队列-空闲列表中的后续移除时将第二列表元素附加到合并的队列-空闲列表的部件;并且其中用于通过主机结构接口,触发用于将第一列表元素附加到合并的队列-空闲列表的附加操作的部件包括用于通过主机结构接口并响应于出队操作,自动地重置用于附加操作的触发器,以在第二列表元素从合并的队列-空闲列表中的后续移除时将第一列表元素附加到合并的队列-空闲列表的部件。
示例45包含示例34-44中的任一个的主题,并进一步包含用于执行关于第一列表元素的垃圾收集的部件,其中用于执行关于第一列表元素的垃圾收集的部件包括用于将第一列表元素附加到合并的队列-空闲列表的部件;以及用于重置用于附加操作的触发器,以在第一列表元素从合并的队列-空闲列表中的后续移除时将第二列表元素附加到合并的队列-空闲列表的部件。
示例46包含示例34-45中的任一个的主题,并且其中主机结构接口进一步用于从处理器接收另外的入队操作,其中另外的入队操作包括另外的队列元素数据,进一步包括用于响应于另外的入队操作的接收,将另外的队列元素数据入队进队列中的部件。
示例47包含示例34-46中的任一个的主题,并且其中主机结构接口进一步用于从第一远程计算装置接收另外的入队操作,其中另外的入队操作包括另外的队列元素数据,进一步包括用于响应于另外的入队操作的接收,将另外的队列元素数据入队进队列中的部件,其中主机结构接口进一步用于从处理器接收另外的出队操作,进一步包括用于响应于另外的出队操作的接收,将另外的队列元素数据从队列中出队的部件,其中主机结构接口进一步用于将另外的队列元素数据发送到处理器。
示例48包含示例34-47中的任一个的主题,并且其中主机结构接口在与处理器分开的、它的自己的封装中。
示例49包含示例34-48中的任一个的主题,并且其中主机结构接口在带有处理器的多芯片封装中或在带有处理器的片上系统中。

Claims (25)

1.一种用于管理队列的计算装置,所述计算装置包括:
处理器;
存储器,具有存储在其中的多个指令,所述多个指令在通过所述处理器运行时,促使所述计算装置初始化所述队列;以及
与所述处理器不同的主机结构接口,用于:
从第一远程计算装置接收入队操作,其中所述入队操作包括队列元素数据;
响应于所述入队操作的接收,将所述队列元素数据入队进所述队列中;
从第二远程计算装置接收出队操作;
响应于所述出队操作的接收,将所述队列元素数据从所述队列中出队;以及
将所述队列元素数据发送到所述第二远程计算装置。
2.如权利要求1所述的计算装置,其中将所述队列元素数据入队进所述队列中包括通过使用直接存储器访问来将所述队列元素数据存储在所述存储器中。
3.如权利要求1所述的计算装置,其中响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
选择在空闲列表的前面的列表元素,其中所述列表元素包括存储器位置的指示;
从所述空闲列表中移除所述列表元素;
将所述队列元素数据存储在所述存储器位置中;
触发用于将所述列表元素附加到队列列表的附加操作;以及
执行用于将所述列表元素附加到所述队列列表的所述附加操作,并且
其中响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
选择在所述队列列表的前面的所述列表元素;
从所述队列列表中移除所述列表元素;以及
由所述存储器位置检索所述队列元素数据。
4. 如权利要求3所述的计算装置,其中将所述队列元素数据从所述队列中出队进一步包括:
触发用于将所述列表元素附加到所述空闲列表的附加操作;以及
执行用于将所述列表元素附加到所述空闲列表的所述附加操作。
5.如权利要求4所述的计算装置,其中触发用于将所述列表元素附加到所述队列列表的所述附加操作包括响应于所述入队操作,自动地重置用于所述附加操作的触发器,以在所述列表元素从所述空闲列表中的后续移除时将所述列表元素附加到所述队列列表;以及
其中触发用于将所述列表元素附加到所述空闲列表的所述附加操作包括响应于所述出队操作,自动地重置用于所述附加操作的触发器,以在所述列表元素从所述队列列表中的后续移除时将所述列表元素附加到所述空闲列表。
6.如权利要求3所述的计算装置,其中所述多个指令进一步促使所述计算装置:
执行关于所述列表元素的垃圾收集,其中执行关于所述列表元素的垃圾收集包括:
将所述列表元素附加到所述空闲列表;以及
重置用于所述附加操作的触发器,以在所述列表元素从所述空闲列表中的后续移除时将所述列表元素附加到所述队列列表。
7.如权利要求1所述的计算装置,其中响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
对于第一列表元素遍历合并的队列-空闲列表,其中所述第一列表元素包括与所述入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中所述第一列表元素包括存储器位置的指示;
从所述列表中移除所述第一列表元素;
将所述队列元素数据存储在所述存储器位置中;
触发用于附加第二列表元素的附加操作,其中所述第二列表元素包括所述存储器位置的所述指示和多个出队匹配比特;以及
执行用于将所述第二列表元素附加到所述合并的队列-空闲列表的所述附加操作,并且
其中响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
对于所述第二列表元素遍历所述合并的队列-空闲列表,其中所述第二列表元素的所述多个出队匹配比特与所述出队操作的对应多个出队匹配比特相匹配;
从所述合并的队列-空闲列表中移除所述第二列表元素;以及
由所述存储器位置检索所述队列元素数据。
8. 如权利要求1所述的计算装置,其中所述主机结构接口进一步用于:
从所述处理器接收另外的入队操作,其中所述另外的入队操作包括另外的队列元素数据;以及
响应于所述另外的入队操作的接收,将所述另外的队列元素数据入队进所述队列中。
9.如权利要求1所述的计算装置,其中所述主机结构接口进一步用于:
从所述第一远程计算装置接收另外的入队操作,其中所述另外的入队操作包括另外的队列元素数据;
响应于所述另外的入队操作的接收,将所述另外的队列元素数据入队进所述队列中;
从所述处理器接收另外的出队操作;
响应于所述另外的出队操作的接收,将所述另外的队列元素数据从所述队列中出队;以及
将所述另外的队列元素数据发送到所述处理器。
10.如权利要求1所述的计算装置,其中所述主机结构接口在与所述处理器分开的、它的自己的封装中。
11.如权利要求1所述的计算装置,其中所述主机结构接口在带有所述处理器的多芯片封装中或在带有所述处理器的片上系统中。
12.一种用于管理计算装置上的队列的方法,所述方法包括:
通过所述计算装置初始化所述队列;
通过与所述计算装置的处理器不同的所述计算装置的主机结构接口,从第一远程计算装置接收入队操作,其中所述入队操作包括队列元素数据;
通过所述主机结构接口并响应于所述入队操作的接收,将所述队列元素数据入队进所述队列中;
通过所述主机结构接口从第二远程计算装置接收出队操作;
通过所述主机结构接口并响应于所述出队操作的接收,将所述队列元素数据从所述队列中出队;
通过所述主机结构接口将所述队列元素数据发送到所述第二远程计算装置。
13.如权利要求12所述的方法,其中将所述队列元素数据入队进所述队列中包括通过使用直接存储器访问将所述队列元素数据存储在所述计算装置的存储器中。
14.如权利要求12所述的方法,其中通过所述主机结构接口并响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
通过所述主机结构接口选择在空闲列表的前面的列表元素,其中所述列表元素包括存储器位置的指示;
通过所述主机结构接口从所述空闲列表中移除所述列表元素;
通过所述主机结构接口将所述队列元素数据存储在所述存储器位置中;
通过所述主机结构接口触发用于将所述列表元素附加到队列列表的附加操作;以及
通过所述主机结构接口执行用于将所述列表元素附加到所述队列列表的所述附加操作,并且
其中通过所述主机结构接口并响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
通过所述主机结构接口选择在所述队列列表的前面的所述列表元素;
通过所述主机结构接口从所述队列列表中移除所述列表元素;以及
通过所述主机结构接口并由所述存储器位置检索所述队列元素数据。
15. 如权利要求14所述的方法,其中将所述队列元素数据从所述队列中出队进一步包括:
通过所述主机结构接口触发用于将所述列表元素附加到所述空闲列表的附加操作;以及
通过所述主机结构接口执行用于将所述列表元素附加到所述空闲列表的所述附加操作。
16.如权利要求14所述的方法,进一步包括:
执行关于所述列表元素的垃圾收集,其中执行关于所述列表元素的垃圾收集包括:
将所述列表元素附加到所述空闲列表;以及
重置用于所述附加操作的触发器,以在所述列表元素从所述空闲列表中的后续移除时将所述列表元素附加到所述队列列表。
17.如权利要求12所述的方法,其中通过所述主机结构接口并响应于所述入队操作,将所述队列元素数据入队进所述队列中包括:
通过所述主机结构接口对于第一列表元素遍历合并的队列-空闲列表,其中所述第一列表元素包括与所述入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中所述第一列表元素包括存储器位置的指示;
通过所述主机结构接口从所述列表中移除所述第一列表元素;
通过所述主机结构接口将所述队列元素数据存储在所述存储器位置中;
通过所述主机结构接口触发用于附加第二列表元素的附加操作,其中所述第二列表元素包括所述存储器位置的所述指示和多个出队匹配比特;以及
通过所述主机结构接口执行用于将所述第二列表元素附加到所述合并的队列-空闲列表的所述附加操作,并且
其中通过所述主机结构接口并响应于所述出队操作,将所述队列元素数据从所述队列中出队包括:
通过所述主机结构接口对于所述第二列表元素遍历所述合并的队列-空闲列表,其中所述第二列表元素的所述多个出队匹配比特与所述出队操作的对应多个出队匹配比特相匹配;
通过所述主机结构接口从所述合并的队列-空闲列表中移除所述第二列表元素;以及
通过所述主机结构接口并由所述存储器位置检索所述队列元素数据。
18. 如权利要求17所述的方法,其中将所述队列元素数据从所述队列中出队进一步包括:
通过所述主机结构接口触发用于将所述第一列表元素附加到所述合并的队列-空闲列表的附加操作;以及
通过所述主机结构接口执行用于将所述第一列表元素附加到所述合并的队列-空闲列表的所述附加操作。
19.一种用于管理队列的计算装置,所述计算装置包括:
用于初始化队列的部件;
用于通过与所述计算装置的处理器不同的主机结构接口,从第一远程计算装置接收入队操作的部件,其中所述入队操作包括队列元素数据;
用于通过所述主机结构接口并响应于所述入队操作的接收,将所述队列元素数据入队进所述队列中的部件;
用于通过所述主机结构接口从第二远程计算装置接收出队操作的部件;
用于通过所述主机结构接口并响应于所述出队操作的接收,将所述队列元素数据从所述队列中出队的部件;以及
用于通过所述主机结构接口将所述队列元素数据发送到所述第二远程计算装置的部件。
20.如权利要求19所述的计算装置,其中用于将所述队列元素数据入队进所述队列中的所述部件包括用于通过使用直接存储器访问将所述队列元素数据存储在所述存储器中的部件。
21.如权利要求19所述的计算装置,其中用于响应于所述入队操作,将所述队列元素数据入队进所述队列中的所述部件包括:
用于选择在空闲列表的前面的列表元素的部件,其中所述列表元素包括存储器位置的指示;
用于从所述空闲列表中移除所述列表元素的部件;
用于将所述队列元素数据存储在所述存储器位置中的部件;
用于触发用于将所述列表元素附加到队列列表的附加操作的部件;以及
用于执行用于将所述列表元素附加到所述队列列表的所述附加操作的部件,并且
其中用于响应于所述出队操作,将所述队列元素数据从所述队列中出队的所述部件包括:
用于选择在所述队列列表的前面的所述列表元素的部件;
用于从所述队列列表中移除所述列表元素的部件;以及
用于由所述存储器位置检索所述队列元素数据的部件。
22. 如权利要求21所述的计算装置,其中用于将所述队列元素数据从所述队列中出队的所述部件进一步包括:
用于触发用于将所述列表元素附加到所述空闲列表的附加操作的部件;以及
用于执行用于将所述列表元素附加到所述空闲列表的所述附加操作的部件。
23.如权利要求21所述的计算装置,进一步包括:
用于执行关于所述列表元素的垃圾收集的部件,其中执行关于所述列表元素的垃圾收集包括:
用于将所述列表元素附加到所述空闲列表的部件;以及
用于重置用于所述附加操作的触发器,以在所述列表元素从所述空闲列表中的后续移除时将所述列表元素附加到所述队列列表的部件。
24.如权利要求19所述的计算装置,其中用于响应于所述入队操作,将所述队列元素数据入队进所述队列中的所述部件包括:
用于对于第一列表元素遍历合并的队列-空闲列表的部件,其中所述第一列表元素包括与所述入队操作的对应多个入队匹配比特相匹配的多个入队匹配比特,其中所述第一列表元素包括存储器位置的指示;
用于从所述列表中移除所述第一列表元素的部件;
用于将所述队列元素数据存储在所述存储器位置中的部件;
用于触发用于附加第二列表元素的附加操作的部件,其中所述第二列表元素包括所述存储器位置的所述指示和多个出队匹配比特;以及
用于执行用于将所述第二列表元素附加到所述合并的队列-空闲列表的所述附加操作的部件,并且
其中用于响应于所述出队操作,将所述队列元素数据从所述队列中出队的所述部件包括:
用于对于所述第二列表元素遍历所述合并的队列-空闲列表的部件,其中所述第二列表元素的所述多个出队匹配比特与所述出队操作的对应多个出队匹配比特相匹配;
用于从所述合并的队列-空闲列表中移除所述第二列表元素的部件;以及
用于由所述存储器位置检索所述队列元素数据的部件。
25. 如权利要求24所述的计算装置,其中用于将所述队列元素数据从所述队列中出队的所述部件进一步包括:
用于触发用于将所述第一列表元素附加到所述合并的队列-空闲列表的附加操作的部件;以及
用于执行用于将所述第一列表元素附加到所述合并的队列-空闲列表的所述附加操作的部件。
CN201810135521.6A 2017-02-09 2018-02-09 用于通过主机结构接口的队列管理的方法和装置 Active CN108415779B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/428,282 US11023275B2 (en) 2017-02-09 2017-02-09 Technologies for queue management by a host fabric interface
US15/428282 2017-02-09

Publications (2)

Publication Number Publication Date
CN108415779A true CN108415779A (zh) 2018-08-17
CN108415779B CN108415779B (zh) 2023-12-12

Family

ID=63037755

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810135521.6A Active CN108415779B (zh) 2017-02-09 2018-02-09 用于通过主机结构接口的队列管理的方法和装置

Country Status (2)

Country Link
US (1) US11023275B2 (zh)
CN (1) CN108415779B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10725941B2 (en) * 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10853219B2 (en) * 2019-04-30 2020-12-01 Intel Corporation Real-time input/output bandwidth estimation

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649092A (en) * 1994-04-21 1997-07-15 Unisys Corporation Fault tolerant apparatus and method for maintaining one or more queues that are shared by multiple processors
CN1303053A (zh) * 2000-01-04 2001-07-11 国际商业机器公司 缓冲器的队列管理器
CN101183319A (zh) * 2007-12-19 2008-05-21 杭州华三通信技术有限公司 一种实现队列共享存储空间的方法及装置
CN101494636A (zh) * 2008-01-23 2009-07-29 中兴通讯股份有限公司 一种基于快速io互连技术的数据排序方法及装置
CN101510838A (zh) * 2009-02-26 2009-08-19 北京北纬点易信息技术有限公司 实现持久化数据队列的方法
EP2434725A1 (en) * 2010-09-27 2012-03-28 Research In Motion Limited Method, apparatus and system for managing communications between a computing device and a client machine
US8219794B1 (en) * 2009-11-03 2012-07-10 Network Appliance, Inc. Non-disruptive firmware upgrade of a storage shelf
US20120204190A1 (en) * 2011-02-07 2012-08-09 International Business Machines Corporation Merging Result from a Parser in a Network Processor with Result from an External Coprocessor
US20130111026A1 (en) * 2011-10-31 2013-05-02 International Business Machines Corporation Serialization of access to data in multimainframe computing environments
CN103294531A (zh) * 2012-03-05 2013-09-11 阿里巴巴集团控股有限公司 一种任务分配方法及系统
CN103914341A (zh) * 2013-01-06 2014-07-09 中兴通讯股份有限公司 数据队列出队管控方法和装置
WO2016182756A1 (en) * 2015-05-14 2016-11-17 Apeiron Data Systems Accessing multiple storage devices from multiple hosts without remote direct memory access (rdma)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201021494A (en) * 2008-11-20 2010-06-01 Inventec Corp Remote data access device and remote data access method

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649092A (en) * 1994-04-21 1997-07-15 Unisys Corporation Fault tolerant apparatus and method for maintaining one or more queues that are shared by multiple processors
CN1303053A (zh) * 2000-01-04 2001-07-11 国际商业机器公司 缓冲器的队列管理器
US6557053B1 (en) * 2000-01-04 2003-04-29 International Business Machines Corporation Queue manager for a buffer
CN101183319A (zh) * 2007-12-19 2008-05-21 杭州华三通信技术有限公司 一种实现队列共享存储空间的方法及装置
CN101494636A (zh) * 2008-01-23 2009-07-29 中兴通讯股份有限公司 一种基于快速io互连技术的数据排序方法及装置
CN101510838A (zh) * 2009-02-26 2009-08-19 北京北纬点易信息技术有限公司 实现持久化数据队列的方法
US8219794B1 (en) * 2009-11-03 2012-07-10 Network Appliance, Inc. Non-disruptive firmware upgrade of a storage shelf
EP2434725A1 (en) * 2010-09-27 2012-03-28 Research In Motion Limited Method, apparatus and system for managing communications between a computing device and a client machine
US20120204190A1 (en) * 2011-02-07 2012-08-09 International Business Machines Corporation Merging Result from a Parser in a Network Processor with Result from an External Coprocessor
US20130111026A1 (en) * 2011-10-31 2013-05-02 International Business Machines Corporation Serialization of access to data in multimainframe computing environments
CN103294531A (zh) * 2012-03-05 2013-09-11 阿里巴巴集团控股有限公司 一种任务分配方法及系统
CN103914341A (zh) * 2013-01-06 2014-07-09 中兴通讯股份有限公司 数据队列出队管控方法和装置
WO2016182756A1 (en) * 2015-05-14 2016-11-17 Apeiron Data Systems Accessing multiple storage devices from multiple hosts without remote direct memory access (rdma)

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
PHILIPPE STELLWAG等: "A wait-free queue for multiple enqueuers and multiple dequeuers using local preferences and pragmatic extensions", 《2009 IEEE INTERNATIONAL SYMPOSIUM ON INDUSTRIAL EMBEDDED SYSTEMS》, pages 237 - 248 *
叶靖波: "用队列管理系统实现网络资源共享", 《计算机工程》, vol. 21, no. 2, pages 44 - 48 *
吴俊新等: "主动管理队列算法的研究", 《控制工程》, vol. 15, no. 02, pages 178 - 181 *

Also Published As

Publication number Publication date
US11023275B2 (en) 2021-06-01
US20180225144A1 (en) 2018-08-09
CN108415779B (zh) 2023-12-12

Similar Documents

Publication Publication Date Title
CN104428752B (zh) 将虚拟机流卸载至物理队列
US11290392B2 (en) Technologies for pooling accelerator over fabric
CN103248684B (zh) 一种互联网中资源获取方法和装置
US20230385096A1 (en) Asynchronous queries on secondary data cores in a distributed computing system
CN103414535B (zh) 数据发送方法和数据接收方法及相关装置
US10379883B2 (en) Simulation of high performance computing (HPC) application environment using virtual nodes
JP6975095B2 (ja) マシンラーニングを実行するデータストレージ及び処理システムとその動作方法
CN106462599B (zh) 缓存存储器与工作进程的关联
CN106325758B (zh) 一种队列存储空间管理方法及装置
CN103647807A (zh) 一种信息缓存方法、装置和通信设备
CN103778017B (zh) 改进虚拟处理器调度的亲和性
EP2449464A2 (en) Resource allocation in virtualized environments
CN104424122B (zh) 一种电子设备及内存划分方法
US11321090B2 (en) Serializing and/or deserializing programs with serializable state
CN108064377A (zh) 一种多系统共享内存的管理方法及装置
CN109818810A (zh) 一种接入服务器连接优化方法、接入服务器以及通信系统
US20190042149A1 (en) Writing composite objects to a data store
WO2020186836A1 (zh) 任务调度
CN104461862B (zh) 数据处理系统以及线程崩溃后的资源恢复方法和装置
CN110275840A (zh) 在存储器接口上的分布式过程执行和文件系统
CN114564435A (zh) 异构多核芯片的核间通信方法、装置及介质
CN108415779A (zh) 用于通过主机结构接口的队列管理的技术
EP3167370B1 (en) Stream based event processing utilizing virtual streams and processing agents
CN107528871A (zh) 存储系统中的数据分析
CN103218259A (zh) 计算任务的调度和执行

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant