CN112134804A - 促进基于硬件的表查找的技术 - Google Patents
促进基于硬件的表查找的技术 Download PDFInfo
- Publication number
- CN112134804A CN112134804A CN202010223398.0A CN202010223398A CN112134804A CN 112134804 A CN112134804 A CN 112134804A CN 202010223398 A CN202010223398 A CN 202010223398A CN 112134804 A CN112134804 A CN 112134804A
- Authority
- CN
- China
- Prior art keywords
- result
- queue
- search
- entry
- memory
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 172
- 230000015654 memory Effects 0.000 claims abstract description 194
- 230000008569 process Effects 0.000 claims description 116
- 239000002131 composite material Substances 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 8
- 238000007726 management method Methods 0.000 description 67
- 238000012545 processing Methods 0.000 description 38
- 238000004891 communication Methods 0.000 description 34
- 239000000872 buffer Substances 0.000 description 28
- 239000000306 component Substances 0.000 description 24
- 230000005291 magnetic effect Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 150000001875 compounds Chemical class 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000012533 medium component Substances 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 101100172132 Mus musculus Eif3a gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 229910052760 oxygen Inorganic materials 0.000 description 1
- 239000001301 oxygen Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/60—Queue scheduling implementing hierarchical scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6255—Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于促进在一种或多种类型的存储器或存储器域中保存的表的基于硬件的表查找的技术包括接收从队列管理设备转发的搜索请求的示例。示例还包括实现表查找以获得结果,以及将结果发送到队列管理设备的输出队列,以供队列管理设备将结果转发给搜索请求的请求方。
Description
技术领域
描述通常涉及用于促进在一种或多种类型的存储器或存储器域中保存的表的基于硬件的表查找的技术。
背景技术
核心到核心(“C2C”)通信在当今许多计算机应用程序中至关重要,例如分组处理、高性能计算、机器学习、以及与一个或多个应用程序执行相关的数据中心/云工作负载。在芯片多处理器(“CMP”)架构中,随着核心数量的增加,当工作负载共享数据时,C2C通信常常成为性能扩展的限制因素。在通用平台上,常常采用核心之间的共享存储器空间来实现高效的C2C通信。然而,对通过软件仔细管理共享存储器空间的需求以及硬件一致性业务的增加往往会导致大量开销。作为结果,共享一致性缓存的CPU核心和片上网络(NoC)设计通常会经历更长的延迟和更高的数据业务,同时会花费大量资源来实行与通信相关的工作。这可以防止CPU核心和NoC执行其预期的数据处理任务,而不会增加不期望的处理延迟。
通常而言,在CMP平台上通常使用诸如经典Lamport算法之类的软件队列来启用C2C通信。在这些类型的传统软件队列中产生了三种类型的开销。第一种开销包括队列结构保存和同步以及共享存储器的流控制和管理所消耗的周期。该第一类型的开销可以被称为控制平面开销。第二类型的开销包括将数据从一个核心转移到另一个核心所花费的周期。第二类型的开销可以被称为数据平面开销。第三类型的开销包括在发送和接收核心上及时、公平地调度对应的通信实体(包括保存/恢复所需的上下文)。该第三类型可以被称为调度开销。控制平面开销、数据平面开销和调度开销的总和可以等于跨核心传输数据所需的总开销。
用于解决与软件队列相关的大量开销的解决方案是消除在CMP平台上使用软件队列,并且替代地使用基于硬件的队列管理设备。这些基于硬件的队列管理设备可以被称为硬件队列管理器“HQM”,并且也可以被称为队列管理设备(“QMD”)。与将软件队列用于C2C通信相比,将HQM或QMD用于C2C通信可以帮助减少控制平面开销、数据平面开销,并且在某些实现中甚至可以减少调度开销。在一些示例中,HQM或QMD可以被布置为辅助管理被布置为临时保存数据单元的队列。数据单元可以是这样的数据,其由在独立核心上执行的应用所消耗或产生,并且接着经由输入/入口队列和输出/出口队列在单独的核心之间传输。HQM或QMD可以具有内部存储器,其被布置以支持这些输入/入口队列和输出/出口队列。
附图说明
图1示出了示例第一系统。
图2示出了配置电路的示例。
图3示出了查找电路的示例。
图4示出了硬件队列管理器的示例。
图5示出了示例第二系统。
图6示出了示例请求格式。
图7示出了示例表条目格式。
图8示出了示例第一过程。
图9示出了示例第二过程。
图10示出了示例第三过程。
图11示出了示例第四过程。
图12示出了示例第一装置。
图13示出了示例第一逻辑流程。
图14示出了示例第一存储介质。
图15示出了示例第二装置。
图16示出了示例第二逻辑流程。
图17示出了示例第二存储介质。
图18示出了示例计算平台。
具体实施方式
如本公开中所提到的,HQM或QMD可以具有被布置为支持输入/入口队列和输出/出口队列的内部存储器。内部存储器的大小通常可容纳数千个表条目以支持这些队列。在一些示例中,可以期望将基于硬件(至少在操作上)的表查找逻辑单元与HQM或QMD相集成,以启用由核心或核心的硬件模块(例如,基于现场可编程门阵列(FPGA)的加速器)执行以请求查找表或搜索多个表的应用。多个表可以总共具有数百万个表条目,基于硬件的表查找逻辑单元可以经由这些表条目进行搜索并向进行请求的应用或硬件块甚至HQM或QMD提供结果,以增加可访问的表大小或查找类型(哈希,(内容地址存储器(CAM)、三态CAM(TCAM)、树等)以供内部决策。经由将表查找逻辑单元与HQM或QMD集成,可以实现基于硬件的表查找逻辑单元的数百万种可搜索表条目和不同的查找类型。该集成的结果是,与仅将HQM或QMD用于基于硬件的表查找相比,用于基于硬件的表查找的表条目和查找类型的数量可能呈指数增长。
图1示出了示例系统100。在一些示例中,如图1所示,系统100可以包括配置电路105、存储器域110、查找电路120、硬件队列管理器(HQM)130、搜索请求方140、或分层搜索加速器150。配置电路105可以包括逻辑和/或特征,用于使控制平面访问(例如,对用户或操作者)能够配置查找电路120可访问并保存在存储器域110中的表,并且还配置HQM 130的至少某些资源(例如,队列和/或调度器逻辑单元)。如以下更详细描述的,HQM 130的这些表和/或资源的配置可以使得查找电路120通过显著扩展可响应搜索请求而搜索的表条目和查找类型的数量来扩展HQM 130的基于硬件的队列管理功能。
根据一些示例,如图1所示,存储器域110包括存储器112、存储器114、和存储器116。针对这些示例,存储器112、存储器114、和存储器116可以托管或保存各自的表113、115、和117。为简单起见,使用术语“表”,该术语可以表示各种可搜索的数据结构,例如但不限于树表数据结构、范围表数据结构、数组数据结构、链接列表数据结构、存储器中数据结构(例如,内容可寻址存储器(CAM)或三态CAM(TCAM))或基于存储的数据库数据结构(例如,MySQL、或其他)。存储器112、114或116可以代表用于相同或不同类型的存储器的单独的存储器域(例如,存储器地址的单独的分组)。表113、表115和表117可以包括单独的可搜索表条目,通过该表条目,查找电路120的逻辑和/或特征可以利用HQM 130的资源来促进来自搜索请求方140的用于搜索这些表的搜索请求,并且促进的这些搜索请求的结果的传递。如图1所示,表113、115和117具有与搜索请求方140中包括的搜索请求方的填充模式相匹配的填充模式,以指示给定的搜索请求方被映射至给定的表以进行搜索。例如,具有对角填充模式的应用142-1被映射至表113以供应用142-1对表113进行搜索。示例不限于将单个请求方映射至单个表,如图1所示。单个请求方可以搜索多个表,并且单个表可以由多个请求方来搜索。
在一些示例中,表113、115或117可以是相同或不同类型的可搜索表。例如,哈希表、TCAM表、CAM表、范围表、数组、链接列表、数据库、或树表。在一些示例中,配置电路105的逻辑和/或特征有可能将包括在输入队列134中的一个或多个HQM 130的输入队列或包括在输出队列136中的一个或多个HQM 130的输出队列映射至来自表113、115或117中的表。至少部分地基于该映射,请求方140中的请求方可以使用HQM 130的多个队列来访问和接收来自多个表的搜索结果。例如,应用142-1可以使用输出队列136的队列来接收搜索结果,所述输出队列136指向具有对角填充模式的调度的搜索结果137的框。调度的搜索结果137例如由HQM 130的逻辑和/或特征(例如,调度逻辑单元132)来调度。在其他示例中,更灵活的映射方法可以允许基于HQM 130的流设置的任意映射,或者可以允许搜索请求方140在相应的查找或搜索请求中进行显式表引用。例如,通过调度逻辑单元132调度为由查找电路120通过输入队列134进行处理以生成分层调度请求135。分层调度请求135可以至少部分地基于(例如,通过配置电路105)分配给与搜索请求相关联的应用、租户、或队列的分层来调度。
根据一些示例,分层搜索加速器150能够接收通过HQM 130的输出队列136路由的调度搜索结果137的一部分。分层搜索加速器150中的不同搜索加速器可以分布(例如,到来自表113、115或117中的不同表)并且被并行访问,或者可以相链接以提供额外等级的搜索。例如,访问在除存储器域110之外的其他存储器域中保存的其他表(未显示)。这些额外的等级可以是对复合搜索的补充,这些复合搜索可以经由涉及来自表113、115或117中的多个表的搜索来实现。分层搜索加速器150可以是查找电路120、专用集成电路(ASIC)或FPGA的另一实例,其被布置为促进这些额外等级的搜索。
在一些示例中,分层搜索加速器150可以创建基于硬件的搜索管线而没有来自搜索请求方140的额外干预。换句话说,放置了搜索请求,搜索继续经由HQM 130遍历来自表113、115或117中的一个或多个表,并且接着到达分层搜索加速器150的一个或多个搜索加速器。最终结果最终到达并且被发送回请求方。例如,在分组处理场景中的系统100的部署中,第一搜索加速器可以专用于媒体访问控制(MAC)查找或搜索,第二搜索加速器可以专用于互联网协议(IP)查找或搜索,第三搜索加速器可以专用于第4层(L4)查找或搜索,或者第四搜索加速器可以专用于第7层(L7)流查找或搜索。
根据一些示例,如图1中所示,搜索请求方140可以包括应用142-1至142-N,其中“N”表示任何大于1的正整数,以及基础设施应用144。应用142-1至142-N可以由多处理器(CMP)架构的一个或多个核心执行。类似地,基础设施可以由CMP架构的一个或多个核心执行。在其他示例中,应用142-1至142-N可以由在ASIC、FPGA或核心、ASIC和/或FPGA的混合上运行的硬件逻辑来实现或执行。应用142-1至142-N可以包括但不限于被实现为支持一种或多种网络功能(例如,深度分组检查、病毒检测、数据存储管理等)的应用。基础设施应用144可以包括但不限于虚拟路由器、虚拟交换机、或虚拟网络接口卡。如下面更详细描述的,诸如应用142-1之类的请求方可以通过HQM 130向查找电路120提交搜索请求以搜索在存储器域110的存储器中保存的表。取决于结果类型,这些搜索请求的结果可以通过HQM 130路由回请求方,或者可能路由到分层搜索加速器150,以进行一个或多个另外的表搜索,所述其他表搜索可以包括来自直接发送给请求方的那些其他搜索的结果。
可以包括存储器112、114或116的存储器类型可以包括易失性类型的存储器,例如但不限于随机存取存储器(RAM)、动态RAM(DRAM)、双倍数据速率同步动态RAM(DDR SDRAM)、静态随机存取存储器(SRAM)、三态内容可寻址存储器(TCAM)、晶闸管RAM(T-RAM)、或零电容RAM(Z-RAM)。存储器的类型还可以包括非易失性类型的存储器,例如但不限于单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、反铁电存储器,包括金属氧化物基、氧空位基、和导电桥随机存取存储器(CB-RAM)在内的电阻存储器、自旋电子磁性结存储器、磁隧道结(MTJ)存储器、畴壁(DW)和自旋轨道转移(SOT)存储器、基于闸流管的存储器、结合了忆阻器技术的磁阻随机存取存储器(MRAM)、或自旋转移扭矩MRAM(STT-MRAM)。
根据一些示例,如本文所使用的,术语“数据”可以指代任何类型的二进制、数字、语音、视频、文本、或脚本数据,或者任何类型的源代码或目标代码,或者采用在系统、电子设备、和/或网络中可以从一个点传送到另一点的任何合适格式的任何其他合适的信息。
根据一些示例,系统100可以由服务器托管或与服务器耦合。该服务器可以是用于基站收发器(BTS)的服务器、web服务器、网络服务器、因特网服务器、工作站。在其他示例中,系统100可以由小型计算机、大型计算机、超级计算机、网络设备、web设备、分布式计算系统、多处理器系统、基于处理器的系统、或其组合来托管或与其耦合。
图2示出了配置电路105的示例。根据一些示例,如在图2中所示,配置电路105包括表配置逻辑单元210、队列配置逻辑单元220、和调度器配置逻辑单元230。如上所述,配置电路105可以包括逻辑和/或特征以使得控制平面访问能够配置查找电路120可访问并保存在存储器域110中的表,如图1所示。配置这些表的逻辑和/或特征可以包括表配置逻辑单元210。表配置逻辑单元210例如可以使得用户或操作者能够删除或更新表113、115或117。表配置逻辑单元210还可以使得用户或操作者能够在存储器112、114、116中或者在被包括在存储器域110中的不同存储器中创建新的表。
同样,如上所述,配置电路105可以包括逻辑和/或特征,以使得控制平面访问能够配置HQM 130的至少一些资源。可以配置HQM 130的这些资源的逻辑和/或特征可以包括队列配置逻辑单元220和调度器配置逻辑单元230。队列配置逻辑单元220可以使用户或操作者配置HQM 130的输入和输出队列,以促进搜索请求方140所放置的搜索请求的请求和结果流。该配置可以包括但不限于将特定队列分配给表和/或搜索请求方,或者允许搜索请求指示哪些队列用于通过HQM 130来路由请求/结果。调度器配置逻辑单元230可以使得用户或操作者能够为HQM 130的调度逻辑单元132配置或设置策略,从而通过输入队列134将请求调度至查找电路120,或者通过输出队列136来调度由查找电路120从表113、115和/或117中拉取的结果。
图3示出了查找电路120的示例。如图3所示,查找电路120包括HQM接口303、一个或多个存储器接口305、查找逻辑单元310、负载平衡和策略实施逻辑单元320、以及结果处理逻辑单元330。HQM接口303可以是通信接口,其用于接收从HQM 130的输入队列转发的搜索请求。存储器接口305可以是一个或多个不同类型的存储器接口,其与存储器112、114或115耦合以使得逻辑和/或特征能够响应于所接收的搜索请求来实现表查找并且获得针对这些表查找的结果。
根据一些示例,响应于所接收的搜索请求,查找逻辑单元310可以执行对存储器域110中保存的一个或多个表的表查找,以基于所接收的搜索请求中的信息和基于包含在一个或多个表中的表条目从这些表查找获得结果。
在一些示例中,负载平衡和策略实施逻辑单元320可以管理或控制用于搜索一个或多个表的搜索请求,以使得表查找在一个或多个表之间和/或在放置搜索请求那些之间进行负载平衡。负载平衡和策略实施逻辑单元320还可以实施策略,所述策略可以包括例如用于负载平衡表查找或限制可以利用单个搜索请求(例如,复合搜索请求)搜索的表的数量的规则或策略。负载平衡和策略实施逻辑单元320还可以实施与一个或多个表查找在表查找超时之前可能花费的时间量有关的策略。负载平衡和策略实施逻辑单元320还可以基于针对一些请求方的请求/结果优先于针对其他请求方的其他请求/结果来实施策略。例如,将针对基础设施应用144的请求/结果优先于针对应用142-1至142-N的请求。
根据一些示例,结果处理逻辑单元330可以处理通过查找逻辑单元310从表查找获得的结果。如以下更多描述,表查找可以返回能够由结果处理逻辑单元330处理的结果类型,以确定针对该搜索请求需要随后的表查找和/或针对该搜索请求需要其他动作。
图4示出了HQM 130的示例。在一些示例中,如图4中所示,HQM 130包括调度逻辑单元132、缓冲器410、入队逻辑单元420、出队逻辑单元430、和内部存储单元440。
根据一些示例,从请求方140或查找电路120发送的搜索请求/结果可以被接收并被临时存储到缓冲器410。由于HQM 130可能没有足够的资源或带宽以在接收到所有传入的搜索请求/结果时为它们提供服务,所以搜索请求/结果可以被临时存储至缓冲器410。缓冲器可以被布置为先进先出(FIFO)缓冲器,其中进入缓冲器中的第一请求/结果将是缓冲器中的第一请求/结果。在一些示例中,可以分配缓冲器410的子集以存储入队搜索请求,而另一子集仅被保留用于出队搜索结果。也可以使用其他分配缓冲器的方式,例如通过应用或表等。可以在缓冲器410的所有缓冲器之间分配单个优先级,以简化实现并最大化吞吐量。可替代地,可以实现多个优先级等级以支持精细粒度的服务质量(QoS)特征。例如,给定n个优先级,可以为每个入队和出队缓冲器对分配一个不同的优先级,以使得为入队搜索请求分配n个缓冲器,并且为出队搜索结果分配n个缓冲器。每个搜索请求/结果具有优先级,该优先级可以由搜索请求方预先分配,或者在HQM130接收后由调度逻辑单元132分配。接着,每个搜索请求/结果被存储在与搜索请求/结果的优先级(1-n)和/或类型(入队或出队)相对应的缓冲器中。
在一些示例中,调度逻辑单元132选择缓冲器,并且从缓冲器的头部选择一个或多个搜索请求/结果。缓冲器是根据调度策略选择的。可以实现各种调度策略,例如轮询(Round Robin)、加权轮询、抢先优先级、以及这些和其他策略的组合。例如,在轮询策略中,简单地顺序选择缓冲器,即,从最低的缓冲器ID到最高的缓冲器ID,并且反之亦然。如果所选择的缓冲器为空,则调度逻辑单元132从不同的缓冲器中选择。在加权轮询策略中,调度逻辑单元132基于每个缓冲器相关联的优先级顺序地对其进行选择和服务。用于控制服务所述缓冲器的次序的能力被称为请求级流控制。在选择了缓冲器并且从所选择的缓冲器的头部选定了一个或多个搜索请求/结果之后,调度逻辑单元132基于搜索请求/结果类型来调度每个选定的请求/结果以由入队逻辑单元420或出队逻辑单元430执行。
根据一些示例,入队逻辑单元420和出队逻辑单元430通过专用端口对内部存储单元440进行读取和写入。由入队逻辑单元420执行的搜索请求使得一个数据项被插入到内部存储单元440中。由出队逻辑单元430执行的出队搜索结果使得一个数据项从内部存储单元440被获取并且被发送至输出队列。如果搜索请求/结果不能够由入队或出队引擎执行,则可以将其插回到缓冲器410的缓冲器尾部以供稍后处理。这样可以减少锁死搜索请求/结果的机会。
在一些示例中,内部存储单元440用于存储队列和队列条目。其可以包括诸如SRAM、DRAM之类的存储器类型或者任何其他合适的存储器类型。内部存储单元440可以可配置以支持任何数量的队列以及不同的队列大小。
图5示出了示例性系统500。在一些示例中,图5中所示的系统500描绘了用于增强的表查找的示例的基于硬件的系统。对于这些示例,3级(L3)高速缓存506、CPU核心508、510、512、514、查找电路120、和HQM 130可以经由环502耦合在一起。环502可以充当高速网络或芯片上网络(NoC)互连以将系统500的这些元件耦合在一起。尽管环502被示出为网络互连,但是可以构想到其他网络互连来互连系统500的元件,例如但不限于网格。尽管未在图5中示出,另外的CPU核心、L3高速缓存、和/或其他设备可以连接到环502的高速互连。其他设备可以包括例如一个或多个存储器设备(例如,双列直插式存储器模块(DIMM)),其托管包括在存储器域110中的存储器。
根据一些示例,由CPU核心508、510或512执行的应用所发送的搜索请求可以经由环502被路由通过HQM 130的输入队列以到达查找电路120,从而使得查找电路120搜索包括在查找电路120可访问(例如,经由一个或多个存储器接口(未示出))的存储器域110中的存储器中所保存的表。同样,这些搜索请求的随后结果可以通过HQM 130的输出队列路由到请求的应用。如图5所示,在一些示例中,配置电路105可以由CPU核心514执行或托管。对于这些示例,诸如队列配置逻辑单元220或调度器配置逻辑单元230之类的配置电路的逻辑和/或特征可以配置HQM 130的输入队列和调度逻辑单元以处理这些搜索请求。同样,诸如表配置逻辑单元210之类的配置电路105的逻辑和/或特征可以配置所述表以响应于搜索请求而由查找电路搜索。示例不限于由CPU核心执行的配置电路105。在其他示例中,配置电路可以由多核处理器的多个核心,由ASIC或由FPGA执行。
在一些示例中,CPU核心508、510、512和514可以是各种商业可获得的处理器的CPU核心,其包括但不限于以及处理器;应用、嵌入式和安全处理器;和和处理器;IBM和Cell处理器;Core(2)Core i3、Core i5、Core i7、 或Xeon处理器;以及类似的处理器。
图6示出了示例请求格式600。在一些示例中,由搜索请求方(例如,搜索请求方140)发送的搜索请求可以使用示例请求格式600将搜索请求发送到查找电路(例如,查找电路120)。如在图6中所示,请求格式600包括键值610、RequestID 620、和ResultQ 630。
在一些示例中,请求格式600的键值610可以包括查找电路用于搜索表的信息。对于这些示例,键值610可以包括这样的信息,其供查找电路识别要在查找电路可访问的存储器域中所包括的存储器中保存的表中搜索的内容。例如,目标目的地的网络地址或者个人或实体的联系信息。
根据一些示例,RequestID 620可以包括这样的信息,其用于使用示例请求格式600来标识与每个搜索请求相关联的请求方和/或个体请求。例如,RequestID 620可以包括分配给请求方的唯一标识符(例如,通用唯一标识符(UUID)或全局唯一标识符(GUID))。RequestID 620还可以包括另外的标识符信息(例如,序号)以用于区分由同一请求方进行的多个请求。
在一些示例中,ResultQ 630可以包括用于标识HQM(例如,HQM 130)的特定输入队列的信息,其中经由该特定输入队列,可以将使用示例请求格式600的搜索请求的结果路由给请求方。针对在ResultQ 630中标识或包括的HQM队列的示例,搜索请求方和/或表可以被分配或映射至HQM的指定输出队列。对这些分配的输入队列的标识可以促进将搜索请求结果通过HQM 130路由给请求方。
图7示出了示例表条目格式700。在一些示例中,在存储器域的存储器中保存的表(例如,表113)可以具有采用表条目格式700的示例格式的条目。如在图7中所示,表条目格式700包括键值710、结果720、OutQ 730、和结果类型740。
根据一些示例,键值710可以包括与在搜索请求中包括的信息相匹配的信息。结果720可以包括用于提供给定表条目的信息,该给定表条目具有与键值710相匹配的键值。例如,提供针对个体的联系信息(例如,邮寄地址或电话号码)。例如,OutQ 730可以包括用于标识HQM(例如,HQM130)的特定输出队列的信息,其中经由该特定输出队列可以放置对搜索请求的结果。在一些示例中,可以将HQM 130的一个或多个输出队列分配或映射至使用示例表条目格式700的表。可以在OutQ 730中标识出那些经分配的队列。
在一些示例中,结果类型740可以包括用于指示结果类型的信息。例如,如图7所示,结果类型可以包括但不限于请求方特定的、用于复合搜索的下一键值、回调指针、或数据指针结果类型。特定于请求方的可以指的是这样的结果,其按原样返回给放置搜索请求的请求方,并且能够由该请求方解译。用于复合搜索的下一键值可以指向另一个表条目,该表条目可以由查找电路在同一表或不同表中查找,并且结果720可以用作针对内部生成的复合查找请求的键值610。例如,复合搜索的第一结果可以找到个人的电话号码,而复合搜索类型的下一键值可以指示用于查找该个人的家庭住址的另一个键值。例如,回调指针可以是要使用的函数的存储器地址。例如,要使用的函数可以是加密要发送至目标目的地或个人的数据。例如,数据指针可以是指向请求方访问、复制、或发送数据的存储器地址的指针。例如,与存储器地址相关联的存储器可以用于存储可能不适合在与结果720相关联的受限数据空间内的大量数据。
图8示出了示例过程800。在一些示例中,过程800可以描绘配置电路的逻辑和/或特征如何可以提供控制平面访问以配置HQM的可搜索表或元素。对于这些示例,过程800可以包括对如在图1中所示的各种元件的使用,例如配置电路105,存储器112、114、116,表113、115、117,查找电路120,HQM 130,搜索请求方140,或分层搜索加速器150。过程800还可以包括对图2、图4和图5中所示的各种元素的使用,例如表配置逻辑单元210、队列配置逻辑单元220、调度器配置逻辑单元230、调度逻辑单元132、入队逻辑单元420、出队逻辑单元430、内部存储单元440、或CPU核心508、510、512、514。过程800还可以包括图6所示的使用示例请求格式600或图7所示的示例表条目格式700。示例不限于图1、2和4-7所示的这些元件或示例格式。
在过程8.1(创建表113)处开始,诸如表配置逻辑单元210之类的配置电路105的逻辑和/或特征可以创建要在存储器112中保存的表113。在一些示例中,表113可以针对特定请求方(例如,给定的应用)被创建并且被映射至该特定请求方。例如,如图1所示,可以基于来自应用142-1的搜索请求来创建表113以进行查找或搜索。表113的表条目可以采用图7所示和上文描述的表条目格式700的示例格式。示例不限于创建用于单个请求方的查找或搜索的表。
移至过程8.2(创建表115),诸如表配置逻辑单元210之类的配置电路105的逻辑和/或特征可以创建要在存储器114中保存的表115。在一些示例中,表115可以针对特定请求方(例如,给定的应用)被创建并且被映射至该特定请求方。例如,如图1所示,可以基于来自应用142-N的搜索请求来创建表115以进行查找或搜索。表115的表条目可以采用表条目格式700的示例格式。
移至过程8.3(创建表117),诸如表配置逻辑单元210之类的配置电路105的逻辑和/或特征可以创建要在存储器116中保存的表117。在一些示例中,表117可以针对特定请求方(例如,给定的应用)被创建并且被映射至该特定请求方。例如,如图1所示,可以基于来自基础设施应用144的搜索请求来创建表117以进行查找或搜索。表117的表条目可以采用表条目格式700的示例格式。过程800还可以包括添加/删除/修改表113、表115和/或表117中的特定表条目。
移至过程8.4(配置队列),配置电路105的逻辑和/或特征(例如队列配置逻辑单元220)可以使得HQM 130的输入和输出队列被配置。在一些示例中,队列配置逻辑单元220可以配置HQM的队列以促进搜索请求方140放置的请求和结果的流。例如,输出队列136的第一部分可以被配置为处理针对来自应用142-1的搜索请求从搜索表113返回的结果,输出队列136的第二部分可以被配置为处理针对来自应用142-N的搜索请求从搜索表115返回的结果,或者输出队列136的第三部分可以被配置为处理针对来自基础设施应用144的搜索请求从搜索表117返回的结果。
移至过程8.5(设置队列调度策略),配置电路105的逻辑和/或特征(如调度器配置逻辑单元230)可以为HQM 130的输入和输出队列设置队列调度策略。在一些示例中,队列调度策略可以指导HQM 130的调度逻辑单元132关于如何调度从搜索请求方140接收并通过输入队列134路由至查找电路120的请求。队列调度策略还可以指导调度逻辑单元132关于如何调度从查找电路120发送并且在输出队列136中接收的结果以用于转发至搜索请求方140或转发至分层搜索加速器150(例如,用于另外的搜索)。
移至过程8.6(队列配置信息),配置电路105的逻辑和/或特征(例如队列配置逻辑单元220)可以将队列配置信息发送给搜索请求方140。在一些示例中,队列配置信息可以指示输入队列134的相应部分已经被配置为接收从个体搜索请求方发送的搜索请求。队列配置信息还可以指示输出队列136的相应部分已被配置为接收针对相应表113、115或117进行的搜索请求的结果。
移至处理8.7(搜索请求),搜索请求方140可以将搜索请求发送至HQM。在一些示例中,搜索请求可以是示例请求格式600。针对这些示例,给定的搜索请求方可以在搜索请求中指示配置电路105的队列配置逻辑单元220配置了什么输入队列以从给定的搜索请求方接收搜索请求。接着过程800结束。
图9示出了示例过程900。在一些示例中,过程900可以描绘请求方可以如何通过HQM向查找电路发送搜索请求以搜索在存储器域的存储器中保存的表。针对这些示例,过程900可以包括对在图1中所示的各种元件的使用,所述元件例如存储器112、表113、查找电路120、HQM 130、或应用142-1。过程900还可以包括对图3-5所示的各种元件的使用,所述元件例如HQM接口303、存储器接口305、查找逻辑单元310、负载平衡和策略实施逻辑单元320、结果处理逻辑单元330、调度逻辑单元132、入队逻辑单元420、出队逻辑单元430、内部存储单元440、或CPU核心508、510、512、514。过程900还可以包括图6所示的使用示例请求格式600或图7所示的示例表条目格式700。示例不限于图1和3-7所示的这些元件或示例格式。
在过程9.1(搜索请求)处开始,应用142-1可以将搜索请求发送至查找电路120,该搜索请求被路由至HQM 130的输入队列。根据一些示例,搜索请求可以是示例请求格式600。例如,如果HQM 130的输入队列的一部分已被配置为从应用142-1接收搜索请求,则搜索请求可以指示什么输入队列将接收搜索请求。
移至过程9.2(调度请求),HQM 130的逻辑和/或特征(例如,调度132)可以调度该请求以用于转发至查找电路120。在一些示例中,可以基于一种或多种策略来调度搜索请求。例如,先进先出、轮询、加权轮询、抢先优先级、或这些策略与其他策略的组合。
移至过程9.3(转发请求),HQM 130的逻辑和/或特征(例如,入队逻辑单元420)可以将搜索请求转发至查找电路120。
移至过程9.4(处理请求),查找电路120的逻辑和/或特征(例如,负载平衡和策略实施逻辑单元320)可以处理从应用142-1接收的搜索请求。在一些示例中,负载平衡和策略实施逻辑单元320可以监视所接收的搜索请求并确定对表113、115和117的表查找的速率,并且可以对搜索请求进行负载平衡以防止相比其他表对任何单个表进行不成比例的表查找。负载平衡和策略实施逻辑单元320还可以监视搜索请求的源并且在各种请求方之间对搜索请求进行负载平衡。该负载平衡例如可以基于由负载平衡和策略实施逻辑单元320所实施的一个或多个策略。所述策略可以包括但不限于相比于某些其他搜索请求方而向某些搜索请求方分配优先级。
移至过程9.5(表查找),查找电路120的逻辑和/或特征(例如,查找逻辑单元310)可以实现对在存储器112处保存的表113的表查找。根据一些示例,表查找可以包括查找逻辑单元310使用在从应用142-1接收的搜索请求中包括的键值信息。例如,表113可以具有根据表条目格式700的条目。
移至过程9.6(结果),可以将在存储器112处保存的表113中找到的结果返回给查找电路120。在一些示例中,在来自应用142-1的搜索请求中指示的键值与表113的表条目中的键值相匹配。对于这些示例,可以在从表113的表查找返回的找到的结果中指示针对HQM130的结果、输出队列、和结果类型。在某些示例中,可以在单个或多个单独的步骤中找到多个结果并且返回至查找电路120。
移至过程9.7(处理结果),查找电路120的逻辑和/或特征(例如,结果处理逻辑单元330)可以处理该结果以确定是否需要任何其他动作来完成搜索请求。在一些示例中,结果处理逻辑单元330可以确定针对结果的结果类型指示其是请求方特定的结果类型。对于这些示例,请求方特定的结果类型可以指示查找电路120的逻辑和/或特征不需要另外的表查找。在其他示例中,指示回调指针或数据指针的结果类型也可以指示不需要另外的表查找。在其他示例中,结果类型可以指示需要复合搜索,该复合搜索将触发查找电路120以使用例如结果字段作为下一查找的键值来生成另一个查找请求。在该示例(未示出)中,查找电路120可以继续处理来自上述过程9.4的新查找请求,或者将其返回至HQM 130,以利用合适的优先级和策略再次进行调度。
移至过程9.8(发送结果),查找电路120的逻辑和/或特征(例如,结果处理逻辑单元330)可以使得结果被发送至在HQM 130处保存的输出队列。在一些示例中,结果处理逻辑单元330可以将该结果发送至在返回结果的表113的表条目中指示的输出队列。
移至过程9.9(调度结果),HQM 130的逻辑和/或特征(例如,调度逻辑单元132)可以调度结果以转发至应用142-1。在一些示例中,可以基于与用于调度搜索请求以转发至查找电路120的那些策略相同或不同的一个或多个策略来调度该结果。
移至过程9.10(转发结果),HQM 130的逻辑和/或特征(例如,出队逻辑单元430)可以将结果转发至应用142-1。在可替代示例中,替代于过程9.9和9.10或者除了过程9.9和9.10之外,应用142-1可以周期性地检查在来自应用142-1的搜索请求9.1中的ResultQ字段630中指定的HQM 130队列的结果可用性状态。
移至过程9.11(处理结果),应用142-1可以处理所接收的结果。在一些示例中,处理该结果可以包括但不限于请求方特定动作,使用在结果中包括的回调指针来实现函数,或者使用在结果中包括的数据指针来从存储器地址获得信息。
图10示出了示例过程1000。在一些示例中,过程1000可以描绘请求方可以如何通过HQM向搜索电路发送搜索请求以搜索在多个存储器域中保存的多个表(例如,复合搜索)。对于这些示例,过程1000可以包括对图1所示的各种元件的使用,所述元件例如存储器112、114、116,表113、115、117,查找电路120,HQM 130,或应用142-1。过程1000还可以包括对图3-5中所示的各种元件的使用,所述元件例如HQM接口303、存储器接口305、查找逻辑单元310、负载平衡和策略实施逻辑单元320、结果处理逻辑单元330、调度逻辑单元132、入队逻辑单元420、出队逻辑单元430、内部存储单元440、或CPU核心508、510、512、514。过程1000还可以包括使用图6所示的示例请求格式600或图7所示的示例表条目格式700。示例不限于图1和3-7所示的这些元件或示例格式。
在过程10.1(搜索请求)处开始,应用142-1可以将搜索请求发送至查找电路120,该搜索请求被路由至HQM 130的输入队列。
移至过程10.2(调度请求),HQM 130的逻辑和/或特征(例如,调度132)可以调度该请求以转发至查找电路120。
移至过程10.3(转发请求),HQM 130的逻辑和/或特征(例如,入队逻辑单元420)可以将搜索请求转发至查找电路120。
移至过程10.4(过程请求),查找电路120的逻辑和/或特征(例如,负载平衡和策略实施逻辑单元320)可以处理从应用142-1接收的搜索请求。
移至过程10.5(表查找),查找电路120的逻辑和/或特征(例如,查找逻辑单元310)可以基于包括在搜索请求中的键值来实现对在存储器112处保存的表113的表查找。
移至过程10.6(结果),可以将基于包含在搜索请求中的键值的匹配而在存储器112中保存的表113中找到的第一结果返回至查找电路120。
移至过程10.7(过程请求),结果处理逻辑单元330可以处理第一结果以确定是否需要任何另外的动作来完成搜索请求。在一些示例中,结果处理逻辑单元330可以确定第一结果的结果类型指示用于复合搜索的下一键值。
移至过程10.8(表查找),查找逻辑单元310可以使用针对复合搜索的下一键值以基于在第一结果中指示的下一键值来对在存储器114处保存的表115进行查找。
移至过程10.9(结果),可以将基于包含在第一结果中的下一键值的匹配而在存储器114中保存的表115中找到的第二结果返回至查找电路120。
移至过程10.10(过程结果),结果处理逻辑单元330可以处理第二结果以确定是否需要任何其他动作来完成搜索请求。在一些示例中,结果处理逻辑单元330可以确定第二结果的结果类型还指示用于复合搜索的下一键值。
移至过程10.11(表查找),查找逻辑单元310可以使用针对复合搜索的下一键值以用于基于在第二结果中指示的下一键值来对在存储器116处保存的表117进行查找。
移至过程10.12(结果),可以将基于包含在第二结果中的下一键值的匹配而在存储器116中保存的表117中找到的第三结果返回至查找电路120。
移至过程10.13(过程结果),结果处理逻辑单元330可以处理第三结果以确定是否需要任何其他动作来完成搜索请求。在一些示例中,结果处理逻辑单元330可以确定第三结果的结果类型指示不需要进一步的表查找。例如,结果的结果类型指示其是请求方特定的结果类型,或者指示回调指针,或者指示数据指针。在可替代示例中,查找电路120可以使得利用HQM130将这些随后的表查找作为单独的新搜索请求来调度(使用下一键值作为针对搜索请求的键值),而不是如上文针对过程10.8和10.11所述的,查找电路120进行对表115和表117的随后表查找。这些单独的搜索请求可以在调度由查找电路120处理的所有搜索请求时提供更大的灵活性。换句话说,如果可以调度单独的搜索请求而不是允许来自应用142-1的单个搜索请求通过查找电路120进行多个表查找,则查找资源可以以更精细的等级进行负载平衡。
移至过程10.14(发送结果),结果处理逻辑单元330可以使得第三结果被发送至在HQM 130处保存的输出队列。在一些示例中,结果处理逻辑单元330可以将第三结果发送至在返回了第三结果的表117的表条目中指示的输出队列。在其他示例中,结果处理逻辑单元330可以将第三结果发送至来自应用142-1的原始搜索请求10.1中的ResultQ字段630所指示的队列。
移至过程10.15(调度结果),HQM 130的调度逻辑单元132可以调度第三结果以转发至应用142-1。在替代示例中,代替过程10.15和10.16或作为过程10.15和10.16的附加,应用142-1可以定期检查来自应用142-1的原始搜索请求10.1中的ResultQ字段630中指定的HQM 130队列的结果可用性状态。
移至过程10.16(转发结果),HQM 130的出队逻辑单元430可以将第三结果转发至应用142-1
移至过程10.17(处理结果),应用142-1可以处理所接收的结果。接着,过程1000可以结束。
图11示出了示例过程1100。在一些示例中,过程1100可以描绘请求方如何可以通过HQM向查找电路发送搜索请求以搜索在存储器域的存储器中保存的表。过程1100还描绘了搜索请求的结果如何得到导致使用分层搜索加速器进行随后搜索的结果。对于这些示例,过程1100还可以包括对图1所示的各种元件的使用,所述元件例如存储器112、表113、查找电路120、HQM 130、应用142-1、或分层搜索加速器150。过程1100还可以包括对图3-5中所示的各种元件的使用,例如,HQM接口303、存储器接口305、查找逻辑单元310、负载平衡和策略实施逻辑单元320、结果处理逻辑单元330、调度逻辑单元132、入队逻辑单元420、出队逻辑单元430、内部存储单元440、或CPU核心508、510、512、514。过程1100还可以包括图6所示的使用示例请求格式600或图7所示的示例表条目格式700。示例不限于图1和3-7所示的这些元件或示例格式。
在过程11.1(搜索请求)处开始,应用142-1可以将搜索请求发送至查找电路120,该搜索请求被路由至HQM 130的输入队列。
移至过程11.2(调度请求),HQM 130的逻辑和/或特征(例如,调度132)可以调度该请求以转发至查找电路120。
移至过程11.3(转发请求),HQM 130的逻辑和/或特征(例如,入队逻辑单元420)可以将搜索请求转发至查找电路120。
移至过程11.4(过程请求),查找电路120的逻辑和/或特征(例如,负载平衡和策略实施逻辑单元320)可以处理从应用142-1接收的搜索请求。
移至过程11.5(表查找),查找电路120的逻辑和/或特征(例如,查找逻辑单元310)可以基于在搜索请求中包括的键值来实现对在存储器112处保存的表113的表查找。
移至过程11.6(结果),结果可以返回到查找电路120。在一些示例中,该结果可以已经基于在搜索请求中包括的键值的匹配而从存储器112中保存的表113中获得。在其他示例中,结果可以是关于针对表113、表115或表117的任何表条目没有找到匹配的指示。
移至过程11.7(处理请求),结果处理逻辑单元330可以处理结果。在一些示例中,结果处理逻辑单元330可以确定第一结果的结果类型指示用于复合搜索的下一键值。然而,与过程11.7不同,该下一键值是针对将使用包括在分级搜索加速器150中的搜索加速器来搜索的表的。关于搜索加速器将进行搜索的确定可以是基于在存储器112、114或116中没有具有与下一键值相匹配的键值的表的。在其他示例中,在所接收的结果指示没有表条目与表113、115或117的条目匹配的情况下,结果处理逻辑单元330可以确定搜索加速器要进行搜索。
移至过程11.8(发送结果),结果处理逻辑单元330可以使结果发送到HQM 130保存的输出队列。在一些示例中,结果处理逻辑单元330可以将该结果发送至映射或分配至分层搜索加速器150的输出队列。
移至过程11.9(计划结果),HQM 130的调度逻辑单元132可以调度结果以用于转发至分层搜索加速器150。
移至过程11.10(转发结果),HQM 130的出队逻辑单元430可以将结果转发至分层搜索加速器150。
移至处理11.11(处理结果),分层搜索加速器150可以处理所接收的结果。在一些示例中,处理所接收的结果可以包括使用包括在所接收的结果中的信息(例如,用于复合搜索的键值或下一键值)来执行对一个或多个分层搜索加速器150可访问的表的一个或多个表查找。
移至过程11.12(发送结果),分层搜索加速器150能够将结果发送至应用142-1。
移至处理11.13(处理结果),应用142-1可以处理从一个或多个分层搜索加速器150接收的结果。接着,过程1100可以结束。在一些示例(未示出)中,分层搜索加速器150可以将该结果发送至HQM 130的相同或不同实例,以将其从分层搜索加速器150转发至又一个搜索加速器。
图12示出了装置1200的示例框图。尽管图12中的电路在特定拓扑中具有有限数量的元件,但是可以理解,装置1200可以根据给定实施方式的需要在替代拓扑中包括更多或更少的元件。
根据一些示例,装置1200可以由电路1220支持。针对这些示例,电路1220可以是ASIC、FPGA、可配置逻辑单元单元、处理器、处理器电路、或CPU。对于这些示例,ASIC、FPGA、可配置逻辑单元、处理器、处理器电路或CPU可支持诸如查找电路120之类的查找电路的逻辑和/或特征,以响应于自硬件队列管理器或队列管理设备所接收的请求方的搜索请求而促进表查找。对在存储器域中保存的表的表查找可以由查找电路120的逻辑和/或特征访问。电路1220可以被布置为执行一个或多个软件或固件实现的模块、组件或逻辑单元1222-a(在此上下文中,模块、组件或逻辑单元可以互换使用)。值得注意的是,本文使用的“a”、“b”和“c”以及类似的代号旨在是代表任何正整数的变量。因此,例如,如果实现将值设置为a=4,则用于模块、组件或逻辑单元1222-a的完整软件或固件的集合可以包括逻辑单元1222-1、1222-2、1222-3或1222-4。呈现的示例在此上下文中不受限制,并且贯穿全文使用的不同变量可以表示相同或不同的整数值。而且,“逻辑单元”、“模块”或“组件”还可以包括存储在计算机可读介质中的软件/固件,尽管在图12中示出了逻辑的类型为离散盒,但是并不限制将这些类型的逻辑存储在不同的计算机可读介质组件(例如,单独的存储器等)中。
根据一些示例,如上所述,电路1220可以包括ASIC、FPGA、可配置逻辑单元、处理器、处理器电路、CPU或CPU的一个或多个核心。电路1220通常可以被布置为执行或实现组件1222-a。电路1220可以是各种商业可用的处理器中的任何一个的全部或至少一部分。
根据一些示例,装置1200可以包括队列管理设备接口1203。装置1200还可以包括接收逻辑单元1222-1。接收逻辑单元1222-1可以由电路1220执行或支持,以经由队列管理设备接口1203来接收从队列管理设备的输入队列转发的搜索请求。对于这些示例,搜索请求可以被包括在搜索请求1210中。
在一些示例中,装置1200可以包括一个或多个存储器接口1205。而且,装置1200可以包括表查找逻辑单元1222-2。可以由电路1220执行或支持表查找逻辑单元1222-2,以实现对在具有一组存储器地址的存储器域中保存的表的表查找,该表查找是基于搜索请求中指示的键值来实现的。对于这些示例,可以通过路由通过存储器接口1205的表查找1230来启动实现的表查找。
根据一些示例,装置1200可以包括结果逻辑单元1222-3。电路1220可以执行或支持结果逻辑单元1222-3,以基于与表条目中指示的键值匹配的搜索请求中指示的键值,从表的条目获得结果。对于这些示例,结果可以被包括在结果1235中,结果1235可以由结果逻辑单元1222-3通过存储器接口1205接收。
在一些示例中,装置1200可以包括发送逻辑单元1222-4。发送逻辑单元1222-4可以由电路1220执行或支持,以通过经队列管理设备接口1203将结果发送至队列管理设备的输出队列来将结果发送至搜索请求的请求方。对于这些示例,队列管理设备被布置为将结果从输出队列转发至请求方。转发的结果可以包括在结果1215中。
装置1200的各种组件可以通过各种类型的通信介质彼此通信地耦合以协调操作。该协调可以涉及对信息的单向或双向交换。例如,组件可以以在通信介质上传递的信号的形式传递信息。该信息可以被实现为被分配给各种信号线路的信号。在这样的分配中,每个消息都是一个信号。然而,另外的实施例可以可替代地采用数据消息。这样的数据消息可以跨各种连接被发送。示例连接包括并行接口、串行接口、和总线接口。
本文中包括的是代表用于执行所公开的架构的新颖方面的示例方法的一组逻辑流程。尽管为了简化说明的目的,本文中示出的一个或多个方法被示出并描述为一系列动作,但是本领域技术人员将理解并意识到,这些方法不受动作顺序的限制。据此,一些动作可以以与本文所示和所述的动作不同的顺序和/或与其他动作同时发生。例如,本领域技术人员将理解并意识到,方法可以可替代地表示为一系列相互关联的状态或事件,例如在状态图中。而且,对于新颖的实现,可能不需要方法中示出的所有动作。
可以以软件、固件和/或硬件来实现逻辑流程。在软件和固件实施例中,逻辑流程可以通过存储在至少一个非暂时性计算机可读介质或机器可读介质(例如光学、磁性或半导体存储装置)上的计算机可执行指令来实现。实施例不限于此上下文。
图13示出了示例性逻辑流程1300。逻辑流程1300可以表示由本文所述的一个或多个逻辑单元、特征或设备(例如,装置1200)执行的一些或全部操作。更具体地,逻辑流程1300可以由至少接收逻辑单元1222-1、表查找逻辑单元1222-2、结果逻辑单元1222-3、或发送逻辑单元1222-4来实现。
根据一些示例,框1302处的逻辑流程1300可以接收从队列管理设备的输入队列转发的搜索请求。针对这些示例,接收逻辑单元1222-1可以通过队列管理设备接口1203来接收搜索请求。
在一些示例中,框1304处的逻辑流程1300可以实现对在具有一组存储器地址的存储器域中保存的表的表查找,该表查找是基于在搜索请求中指示的键值来实现的。对于这些示例,表查找逻辑单元1222-2可以实现表查找。
根据一些示例,框1306处的逻辑流程1300可以基于与表条目中指示的键值匹配的搜索请求中指示的键值,从表的条目获得结果。对于这些示例,结果逻辑单元1222-4可以通过存储器接口1205来获得结果。
在一些示例中,在框1308处,逻辑流1300可以通过将结果发送到队列管理设备的输出队列来将结果发送给搜索请求的请求方,其中,队列管理设备被布置为将结果转发至输出队列中的请求方。对于这些示例,发送逻辑单元1222-4可以通过队列管理设备接口1203来发送结果。
图14示出了示例性存储介质1400。在一些示例中,存储介质1400可以是制造品。存储介质1400可以包括任何非暂时性计算机可读介质或机器可读介质,例如光学、磁性或半导体存储设备。存储介质1400可以存储各种类型的计算机可执行指令,例如用于实现逻辑流程1300的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。计算机可执行指令的示例可以包括任何合适类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。示例不限于该上下文。
图15示出了装置1500的示例框图。尽管图15所示的装置1500在特定拓扑中具有有限数量的元件,但是可以理解,装置1500可以根据给定实现的期望在替代拓扑中包括更多或更少的元件。
根据一些示例,装置1500可以由电路1520支持。对于这些示例,电路1520可以是ASIC、FPGA、可配置逻辑单元、处理器、处理器电路或CPU。对于这些示例,ASIC、FPGA、可配置逻辑单元、处理器、处理器电路或CPU可支持例如配置电路105的配置电路的逻辑和/或特征,以促进创建在诸如查询电路120之类的查找电路可访问的一个或多个存储器域中保存的表和/或配置诸如HQM 130之类的队列管理设备的队列,该队列管理设备被布置成接收搜索请求以引起所创建表的表查询或接收那些表查找的结果。电路1520可以被布置为执行一个或多个软件或固件实现的模块、组件或逻辑单元1522-a(在这种情况下,模块、组件或逻辑单元可以互换使用)。值得注意的是,本文使用的“a”、“b”和“c”以及类似的代号旨在是代表任何正整数的变量。因此,例如,如果实现将值设置为a=5,则用于模块、组件或逻辑单元1522-a的完整的软件或固件的集合可以包括逻辑单元1522-1、1522-2、1522-3、1522-4或1522-5。所呈现的示例在该上下文中不受限制,并且贯穿全文使用的不同变量可以表示相同或不同的整数值。而且,“逻辑单元”、“模块”或“组件”还可以包括存储在计算机可读介质中的软件/固件,尽管在图15中示出了逻辑的类型为离散盒,但这并不限于将这些类型的逻辑存储在不同的计算机可读介质组件(例如,单独的存储器等)中。
根据一些示例,如上所述,电路1520可以包括ASIC、FPGA、可配置逻辑单元、处理器、处理器电路、CPU或CPU的一个或多个核心。电路1520通常可以被布置为执行或实现组件1522-a。电路1520可以是各种商业可用的处理器中的任何一个的全部或至少一部分。
根据一些示例,装置1500可以包括接收逻辑单元1522-1。接收逻辑单元1522-1可以由电路1520执行或支持以接收表信息以创建要在具有存储器地址分组的存储器域中保存的表。对于这些示例,表信息1505可以由用户或操作者发送,并且可以是用于创建表的信息。在其他示例中,表信息1505可以包括用于添加/修改或删除表或表条目的信息。
在一些示例中,装置1500可以包括表逻辑单元1522-2。表逻辑单元1522-2可以由电路1520执行或由电路1520支持以使该表在存储器域中创建,使得该表包括多个表条目,所述表条目包括键值、结果或结果类型,查找电路可访问表。对于这些示例,表创建1530可以包括用于引起在存储器域中创建表的信息。
根据一些示例,装置1500可以包括队列逻辑单元1522-3。队列逻辑单元1522-3可以由电路1520执行或支持,以使得队列管理设备的队列被配置。队列管理设备具有用于接收搜索请求以引起通过查找电路对表的表查找的输入队列,并且具有用于接收表查找的结果的输出队列。对于这些示例,队列的配置可以是基于由接收逻辑单元1522接收的队列信息1510的。
根据一些示例,装置1500可以包括发送逻辑单元1522-4。发送逻辑单元1522-4可以由电路1520执行或由其支持,以将队列配置信息发送给搜索请求的一个或多个请求方,该队列配置信息用于标识队列管理设备的输入队列以接收搜索请求以引起通过查找电路查找表。对于这些示例,队列配置信息可以包括在队列配置信息1545中。
根据一些示例,装置1500可以包括调度器逻辑单元1522-5。调度器逻辑单元1522-5可以由电路1520执行或支持,以使队列管理设备处的调度逻辑被配置为调度在队列管理设备的输入队列中接收的搜索请求。对于这些示例,在队列管理设备处的调度逻辑的配置可以是基于由接收逻辑单元1522接收的策略信息1515的。
装置1500的各个组件可以通过各种类型的通信介质彼此通信地耦合以协调操作。该协调可以涉及信息的单向或双向交换。例如,组件可以以在通信介质上传递的信号的形式传递信息。该信息可以被实现为分配给各种信号线路的信号。在这样的分配中,每个消息都是一个信号。然而,其他实施例可以替代地采用数据消息。这样的数据消息可以跨各种连接被发送。连接示例包括并行接口、串行接口、和总线接口。
图16示出了示例性逻辑流程1600。逻辑流程1600可以表示由本文所述的一个或多个逻辑单元、特征、或设备(例如,装置1500)执行的一些或全部操作。更具体地,逻辑流程1600可以由至少接收逻辑单元1522-1、表逻辑单元1522-2、队列逻辑单元1522-3、发送逻辑单元1522-4、或调度器逻辑单元1522-5来实现。
根据一些示例,框1602处的逻辑流程1600可以接收表信息以创建要在具有存储器地址分组的存储器域中保存的表。对于这些示例,接收逻辑单元1522-1可以接收表信息。
在一些示例中,框1604处的逻辑流程1600可以使得表在存储器域中被创建,这使得该表包括多个表条目,所述表条目包括键值、结果或结果类型,所述表能够由查找电路访问。对于这些示例,表逻辑单元1522-2可以使得表被创建。
根据一些示例,框1606处的逻辑流1600可以接收队列信息以配置队列管理设备的队列,该队列管理设备具有用于接收搜索请求以引起通过查找电路对表的表查找的输入队列,并且具有用于接收表查找的结果的输出队列。对于这些示例,接收逻辑单元1522-1可以接收队列信息。
在一些示例中,框1608处的逻辑流程1600可以使得队列管理设备的队列基于队列信息被配置。对于这些示例,队列逻辑单元1522-3可以使得队列被配置。
根据一些示例,框1610处的逻辑流1600可以将队列配置信息发送给搜索请求的一个或多个请求方,该队列配置信息用于标识队列管理设备的输入队列以接收用于引起通过查找电路对表进行查找的搜索请求。对于这些示例,发送逻辑单元1522-4可以发送队列配置信息。
在一些示例中,框1612处的逻辑流1600可以接收调度信息以在队列管理设备处配置调度逻辑单元以调度在队列管理设备的输入队列中所接收的搜索请求。对于这些示例,接收逻辑单元1522-1可以接收调度信息。
根据一些示例,框1614处的逻辑流程1600可以使得调度逻辑单元基于调度信息被配置。对于这些示例,调度器逻辑单元1522-5可以使调度逻辑被配置。
图17示出了示例存储介质1700。在一些示例中,存储介质1700可以是制品。存储介质1700可以包括任何非暂时性计算机可读介质或机器可读介质,例如光学、磁性或半导体存储。存储介质1700可以存储各种类型的计算机可执行指令,例如用于实现逻辑流程1600的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。计算机可执行指令的示例可以包括任何合适类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。示例不限于该上下文。
图18示出了示例计算平台1800。参考图18,计算平台1800可以包括处理组件1840、其他平台组件1850、或通信接口1860。
根据一些示例,处理组件1840可以执行或实现针对装置1200/1500和/或存储介质1400/1700的处理操作或逻辑。处理组件1840可以包括各种硬件元件、软件元件或两者的组合。硬件元件的示例可以包括设备、逻辑设备、组件、处理器、微处理器、管理控制器、配套管芯、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、ASIC、可编程逻辑器件(PLD)、数字信号处理器(DSP)、FPGA、存储单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用、设备驱动程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、词语、值、符号或其任何组合。根据给定示例所需,确定是否使用硬件元件和/或软件元件实施示例可以根据许多因素而变化,例如所需的计算速率、功率水平、热容忍度、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、和其他设计或性能限制。
在一些示例中,其他平台组件1850可以包括通用计算元素、存储单元、芯片组、控制器、外围设备、接口、振荡器、计时设备、视频卡、声卡、多媒体输入/输出(I/O)组件(例如数字显示器)、电源等。存储器单元或存储器设备的示例可以包括但不限于以一种或多种更高速度的存储器单元的形式的各种类型的计算机可读和机器可读存储介质,例如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、聚合物存储器(例如,铁电聚合物存储器、双向存储器、相变或铁电存储器)、氧化硅-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡、一系列设备(例如,独立磁盘冗余阵列(RAID)驱动器)、固态存储设备(例如,USB存储器)、固态驱动器(SSD)和其他适合存储信息的其他类型的存储介质。
在一些示例中,通信接口1860可以包括支持通信接口的逻辑和/或特征。对于这些示例,通信接口1860可以包括一个或多个根据各种通信协议或标准进行操作以在直接或网络通信链路上进行通信的通信接口。直接通信可以通过使用一种或多种行业标准(包括子代和变体)中描述的通信协议或标准(例如与PCIe规范、NVMe规范或I3C规范相关的协议)进行。网络通信可以通过使用诸如由电气和电子工程师协会(IEEE)颁布的一种或多种以太网标准中描述的通信协议或标准来进行。例如,IEEE颁布的一种此类以太网标准可能包括但不限于IEEE 802.3-2018、带有冲突检测的载波侦听多路访问(CSMA/CD)访问方法和物理层规范,于2018年8月发布(以下简称“IEEE 802.3规范”)。网络通信还可以根据一个或多个OpenFlow规范(例如OpenFlow硬件抽象API规范)进行。网络通信也可以根据一个或多个Infiniband架构规范进行。
计算平台1800可以在服务器或客户端计算设备中实现。因此,如服务器或客户端计算设备适当地期望的,在计算平台1800的各种实施例中,可以包括或省略在此描述的计算平台1800的功能和/或特定配置。
可以使用分立电路、ASIC、逻辑门和/或单芯片架构的任何组合来实现计算平台1800的组件和特征。此外,计算平台1800的特征可以在适当的情况下使用微控制器、FPGA和/或微处理器或前述的任何组合来实现。注意,硬件、固件和/或软件元件在本文中可以被统称为或单独地称为“逻辑单元”或“电路”。
应当理解,图18的框图中示出的示例性计算平台1800可以代表许多潜在实现方式的一个功能性描述示例。因此,附图中描绘的块功能的划分、省略或包含并不意味着用于实施这些功能的硬件组件、电路、软件和/或元件将必须被划分、省略或包括在实施例中。
至少一个示例的一个或多个方面可以通过存储在至少一个机器可读介质上的代表性指令来实现,该指令代表处理器内的各种逻辑,当机器、计算设备或系统读取该逻辑时,会导致该机器、计算设备或系统制造执行本文所述技术的逻辑。这样的表示被称为“IP核心”,可能类似于IP块。IP核心可以存储在有形的机器可读介质上,并提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
可以使用硬件元件、软件元件或两者的组合来实现各种示例。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、ASIC、PLD、DSP、FPGA、存储单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、词语、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件实施示例可以根据许多因素而变化,例如所需的计算速率、功率水平、热容忍度、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能限制,具体取决于给定实现。
一些示例可以包括制品或至少一个计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非易失性存储介质可以包括一种或多种能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在某些示例中,逻辑单元可以包括各种软件元件,例如软件组件、程序、应用、计算机程序、应用、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、词语、值、符号或其任何组合。
根据一些示例,计算机可读介质可以包括用于存储或保存指令的非暂时性存储介质,该指令在由机器、计算设备或系统执行时使机器、计算设备或系统执行根据所描述的示例的方法和操作。指令可以包括任何合适类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。可以根据预定义的计算机语言、方式或语法来实现指令,以指示机器、计算设备或系统执行特定功能。可以使用任何合适的高级、低级、面向对象、可视、编译和/或解释的编程语言来实现指令。
可以使用表达“在一个示例中”或“示例”及其派生词来描述一些示例。这些术语意味着结合示例描述的特定特征、结构或特性包括在至少一个示例中。说明书中各个地方出现的短语“在一个示例中”不一定都指的是同一示例。
可以使用表达“耦合”和“连接”及其派生词来描述一些示例。这些术语不一定是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”或“与……耦合”也可以表示两个或多个元件彼此不直接接触,但仍相互协作或相互作用。
在本文描述了各种操作或功能的程度上,它们可以被描述或定义为软件代码、指令、配置和/或数据。内容可以直接执行(“对象”或“可执行”形式)、源代码或差异代码(“增量”或“补丁”代码)。可以经由其上存储有内容的制品或通过操作通信接口以经由通信接口发送数据的方法来提供本文描述的软件内容。机器可读存储介质可以使机器执行所描述的功能或操作,并且包括以机器(例如,计算设备、电子系统等)可访问的形式存储信息的任何机制,例如,可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪速存储器设备等)。通信接口包括与硬连线、无线、光学等介质中的任何一种接口以与诸如存储器总线接口、处理器总线接口、因特网连接、磁盘控制器等另一设备通信的任何机制。可以通过提供配置参数和/或发送信号执行这两个操作来配置通信接口,以准备通信接口提供描述软件内容的数据信号。可以通过一个或多个发送到通信接口的命令或信号来访问通信接口。
以下示例属于本文公开的技术的其他示例。
示例1.示例装置可以包括与队列管理设备耦合的接口。所述装置还可以包括电路,其用于经由所述接口接收从所述队列管理设备的输入队列转发的搜索请求。所述电路还可以实现对在具有存储器地址的分组的存储器域中保存的表的表查找。所述表查找可以是基于在所述搜索请求中指示的键值来实现的。所述电路还可以基于在所述搜索请求中指示的所述键值与在所述表的条目中指示的键值相匹配,从所述表的所述条目中获得结果。
示例2.根据示例1的装置,电路还可以通过经过所述接口将所述结果发送至所述队列管理设备的输出队列,将所述结果发送给所述搜索请求的请求方。所述队列管理设备可以被布置为将所述结果从所述输出队列转发给所述请求方。
示例3.根据示例2的装置,所述表的所述条目指示所述结果将向其发送的所述队列管理设备的所述输出队列。
示例4.根据示例1的装置,所述搜索请求可以指示从中接收所述搜索请求的所述队列管理设备的所述输入队列。
示例5.根据示例4的装置,所述队列管理设备的所述输入队列可以被映射至在所述存储器域中保存的所述表,以使得所述输入队列中的所述搜索请求引起对在所述存储器域中保存的所述表的所述表查找。
示例6.根据示例1的装置,所述表的所述条目指示从所述条目获得的所述结果的结果类型,所述结果类型可以包括引起所述请求方决定如何处理所述结果的请求方特定结果,到用于实现函数的存储器地址的回调指针,或者用于从存储器地址中获得信息的数据指针。
示例7.根据示例1的装置,所述表可以是哈希表、三态表、或树表。
示例8.根据示例1的装置,所述电路还可以基于所述表的所述条目指示从所述条目中获得的所述结果的结果类型,引起对在具有存储器地址的第二分组的第二存储器域中保存的第二表的第二表查找,所述结果的结果类型指示用于复合搜索的下一键值。所述电路还可以基于所述下一键值与在所述第二表的条目中指示的键值相匹配,从所述第二表的所述条目中获得第二结果。
示例9.根据示例8的装置,所述电路还可以通过经过所述接口将所述第二结果发送至所述队列管理设备的输出队列,将所述第二结果发送给所述搜索请求的请求方。所述队列管理设备可以被布置为将所述第二结果从所述输出队列转发给所述请求方。
示例10.根据示例1的装置,所述电路可以基于所述表的所述条目指示从所述条目获得的所述结果的结果类型,引起第二表查找,所述结果类型指示用于复合搜索的下一键值。所述电路还可以基于所述下一键值与在所述电路可访问的多个存储器域中保存的表的表条目不匹配,将所述结果发送至搜索加速器以实现所述第二表查找。所述结果可以通过所述接口被发送至所述队列管理设备的输出队列。所述队列管理设备可以被布置为将所述结果转发至所述搜索加速器。
示例11.示例方法可以包括:在电路处接收从队列管理设备的输入队列转发的搜索请求。该方法还可以实现对在具有存储器地址的分组的存储器域中保存的表的表查找。所述表查找可以是基于在所述搜索请求中指示的键值来实现的。所述方法还可以包括基于在所述搜索请求中指示的所述键值与在所述表的条目中指示的键值相匹配,从所述表的所述条目中获得结果。
示例12.示例11的方法还可以包括通过将所述结果发送至所述队列管理设备的输出队列来将所述结果发送给所述搜索请求的请求方。所述队列管理设备可以被布置为将所述结果从所述输出队列转发给所述请求方。
示例13.根据示例12的方法,所述表的所述条目可以指示所述结果将向其发送的所述队列管理设备的所述输出队列。
示例14.根据示例11的方法,所述搜索请求可以指示从中接收所述搜索请求的所述队列管理设备的所述输入队列。
示例15.根据示例14的方法,所述队列管理设备的所述输入队列可以被映射至在所述存储器域中保存的所述表,以使得所述输入队列中的所述搜索请求引起对在所述存储器域中保存的所述表的所述表查找。
示例16.根据示例11的方法,所述表的所述条目可以指示从所述条目获得的所述结果的结果类型,所述结果类型可以包括引起所述请求方决定如何处理所述结果的请求方特定结果,到用于实现函数的存储器地址的回调指针,或者用于从存储器地址中获得信息的数据指针。
示例17.根据示例11所述的方法,所述表可以是哈希表、三态表、或树表。
示例18.示例11的方法还可以包括:基于所述表的所述条目指示从所述条目中获得的所述结果的结果类型,引起对在具有存储器地址的第二分组的第二存储器域中保存的第二表的第二表查找,所述结果的结果类型指示用于复合搜索的下一键值。所述方法还可以包括:基于所述下一键值与在所述第二表的条目中指示的键值相匹配,从所述第二表的所述条目中获得第二结果。
示例19.示例18的方法还可以包括:通过将所述第二结果发送至所述队列管理设备的输出队列,将所述第二结果发送给所述搜索请求的请求方,其中,所述队列管理设备被布置为将所述第二结果从所述输出队列转发给所述请求方。
示例20.示例11的方法还可以包括:基于所述表的所述条目指示从所述条目获得的所述结果的结果类型,引起第二表查找,所述结果类型指示用于复合搜索的下一键值。所述方法还可以包括基于所述下一键值与在所述电路可访问的多个存储器域中保存的表的表条目不匹配,将所述结果发送至搜索加速器以实现所述第二表查找。所述结果可以被发送至所述队列管理设备的输出队列,其中,所述队列管理设备被布置为将所述结果转发至所述搜索加速器。
示例21.示例的至少一个机器可读介质可以包括多个指令,所述多个指令响应于由系统执行以使得所述系统执行根据示例11至20中任一项的方法。
示例22.示例装置可以包括用于执行示例11至示例20中的任何一个的方法的模块。
示例23.示例的至少一个机器可读介质可以包括多个指令,所述多个指令响应于由系统执行而可以使得所述系统接收从队列管理设备的输入队列转发的搜索请求。所述指令还可以使得所述系统实现对在具有存储器地址分组的存储器域中保存的表的表查找。所述表查找是基于在所述搜索请求中指示的键值来实现的。所述指令还可以使得所述系统基于在所述搜索请求中指示的所述键值与在所述表的条目中指示的键值相匹配,从所述表的所述条目中获得结果。
示例24.根据示例23所述的至少一种机器可读介质,所述指令还可以通过将所述结果发送至所述队列管理设备的输出队列来将所述结果发送给所述搜索请求的请求方。所述队列管理设备可以被布置为将所述结果从所述输出队列转发给所述请求方。
示例25.根据示例24的至少一个机器可读介质,所述表的所述条目可以指示所述结果将向其发送的所述队列管理设备的所述输出队列。
示例26.根据示例23的至少一种机器可读介质,所述搜索请求可以指示从中接收所述搜索请求的所述队列管理设备的所述输入队列。
示例27.根据示例26的至少一种机器可读介质,所述队列管理设备的所述输入队列可以被映射至在所述存储器域中保存的所述表,以使得所述输入队列中的所述搜索请求引起对在所述存储器域中保存的所述表的所述表查找。
示例28.根据示例23的至少一个机器可读介质,所述表的所述条目可以指示从所述条目获得的所述结果的结果类型。所述结果类型可以包括引起所述请求方决定如何处理所述结果的请求方特定结果,到用于实现函数的存储器地址的回调指针,或者用于从存储器地址中获得信息的数据指针。
示例29.根据示例23的至少一种机器可读介质,所述表可以是哈希表、三态表、或树表。
示例30.根据示例23所述的至少一种机器可读介质,所述指令还可以使得所述系统基于所述表的所述条目指示从所述条目中获得的所述结果的结果类型,引起对在具有存储器地址的第二分组的第二存储器域中保存的第二表的第二表查找。所述指令还可以使得所述系统基于所述下一键值与在所述第二表的条目中指示的键值相匹配,从所述第二表的所述条目中获得第二结果。
示例31.根据示例30的至少一个机器可读介质,所述指令还可以使得所述系统通过将第二结果发送到队列管理设备的输出队列,来将第二结果发送给搜索请求的请求方。所述队列管理设备可以被布置为将所述第二结果从所述输出队列转发给所述请求方。
示例32.根据示例23所述的至少一种机器可读介质,所述指令还可以使得所述系统基于所述表的所述条目指示从所述条目获得的所述结果的结果类型,引起第二表查找,所述结果类型指示用于复合搜索的下一键值。所述指令还可以使得所述系统基于所述下一键值与在所述电路可访问的多个存储器域中保存的表的表条目不匹配,将所述结果发送至搜索加速器以实现所述第二表查找。所述结果可以被发送至所述队列管理设备的输出队列。所述队列管理设备被布置为将所述结果转发至所述搜索加速器。
示例33.示例方法可以包括接收表信息以创建要在具有存储器地址分组的存储器域中保存的表。所述方法还可以包括使得所述表在所述存储器域中被创建,从而使得所述表包括多个表条目,所述表条目包括键值、结果、或结果类型,所述表能够被查找电路访问。所述方法还可以包括:接收队列信息以配置队列管理设备的队列,所述队列管理设备具有用于接收搜索请求以引起通过查找电路对表的表查找的输入队列,并且具有用于接收表查找的结果的输出队列。所述方法还可以包括使得基于所述队列信息来配置所述队列管理设备的所述队列。
示例34.示例33的方法还可以包括将所述队列配置信息发送给搜索请求的一个或多个请求方。队列配置信息可以标识队列管理设备的输入队列以接收搜索请求,从而引起通过查找电路对表的查找。
示例35.示例33的方法还可以包括:接收调度信息以在队列管理设备处配置调度逻辑单元对在队列管理设备的输入队列中所接收的搜索请求进行调度。所述方法还可以包括使得基于所述调度信息来配置所述调度逻辑单元。
要强调的是,本公开的摘要被提供以符合37C.F.R.第1.72(b)节,要求一个摘要,可以让读者快速确定技术公开的实质。应理解的是,摘要不用于解释或限制权利要求的范围或含义。此外,在前面的详细描述中,可以看出,为了简化本公开的目的,在单个实施例中将各种特征组合在一起。这种公开的方法不应被解释为反映所要求保护的实施例要求比每个权利要求中明确叙述的更多特征的意图。相反,如以下权利要求所反映的那样,本发明的主题在于少于所公开的示例的所有特征。因此,以下权利要求被并入详细描述中,其中每个权利要求独立地作为单独的示例。在所附权利要求中,术语“包括(including)”和“其中(inwhich)”分别用作各自术语“包含(comprising)”和“其中(wherein)”的通俗英语等同词。此外,术语“第一”、“第二”、“第三”等仅用作标签,并不意图对其对象施加数字要求。
尽管已经以结构特征和/或方法动作特有的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述具体特征或动作。相反,上述具体特征和动作被公开为实现权利要求的示例形式。
Claims (22)
1.一种装置,包括:
与队列管理设备耦合的接口;以及
电路,其用于进行以下操作:
经由所述接口接收从所述队列管理设备的输入队列转发的搜索请求;
实现对在具有存储器地址的分组的存储器域中保存的表的表查找,所述表查找是基于在所述搜索请求中指示的键值来实现的;以及
基于在所述搜索请求中指示的所述键值与在所述表的条目中指示的键值相匹配,从所述表的所述条目中获得结果。
2.根据权利要求1所述的装置,还包括所述电路用于进行以下操作:
通过经过所述接口将所述结果发送至所述队列管理设备的输出队列,将所述结果发送给所述搜索请求的请求方,其中,所述队列管理设备被布置为将所述结果从所述输出队列转发给所述请求方。
3.根据权利要求2所述的装置,包括:所述表的所述条目指示所述结果将向其发送的所述队列管理设备的所述输出队列。
4.根据权利要求1所述的装置,包括:所述搜索请求指示从中接收所述搜索请求的所述队列管理设备的所述输入队列。
5.根据权利要求4所述的装置,包括:所述队列管理设备的所述输入队列被映射至在所述存储器域中保存的所述表,以使得指示所述输入队列的所述搜索请求引起对在所述存储器域中保存的所述表的所述表查找。
6.根据权利要求1所述的装置,包括:所述表的所述条目指示从所述条目获得的所述结果的结果类型,所述结果类型包括引起所述请求方决定如何处理所述结果的请求方特定结果、到用于实现函数的存储器地址的回调指针、或者用于从存储器地址中获得信息的数据指针。
7.根据权利要求1所述的装置,所述表包括散列表、三态表、或树表。
8.根据权利要求1所述的装置,还包括所述电路用于进行以下操作:
基于所述表的所述条目指示从所述条目中获得的所述结果的结果类型,引起对在具有存储器地址的第二分组的第二存储器域中保存的第二表的第二表查找,所述结果的结果类型指示用于复合搜索的下一键值;以及
基于所述下一键值与在所述第二表的条目中指示的键值相匹配,从所述第二表的所述条目中获得第二结果。
9.根据权利要求8所述的装置,还包括所述电路用于进行以下操作:
通过经过所述接口将所述第二结果发送至所述队列管理设备的输出队列,将所述第二结果发送给所述搜索请求的请求方,其中,所述队列管理设备被布置为将所述第二结果从所述输出队列转发给所述请求方。
10.根据权利要求1所述的装置,包括所述电路用于进行以下操作:
基于所述表的所述条目指示从所述条目获得的所述结果的结果类型,引起第二表查找,所述结果类型指示用于复合搜索的下一键值;以及
基于所述下一键值与在所述电路可访问的多个存储器域中保存的表的表条目不匹配,将所述结果发送至搜索加速器以实现所述第二表查找,所述结果通过所述接口被发送至所述队列管理设备的输出队列,其中,所述队列管理设备被布置为将所述结果转发至所述搜索加速器。
11.一种方法,包括:
在电路处接收从队列管理设备的输入队列转发的搜索请求;
实现对在具有存储器地址的分组的存储器域中保存的表的表查找,所述表查找是基于在所述搜索请求中指示的键值来实现的;以及
基于在所述搜索请求中指示的所述键值与在所述表的条目中指示的键值相匹配,从所述表的所述条目中获得结果。
12.根据权利要求11所述的方法,还包括:
通过将所述结果发送至所述队列管理设备的输出队列来将所述结果发送给所述搜索请求的请求方,其中,所述队列管理设备被布置为将所述结果从所述输出队列转发给所述请求方。
13.根据权利要求12所述的方法,包括:所述表的所述条目指示所述结果将向其发送的所述队列管理设备的所述输出队列。
14.根据权利要求11所述的方法,包括:所述搜索请求指示从中接收所述搜索请求的所述队列管理设备的所述输入队列。
15.根据权利要求14所述的方法,包括:所述队列管理设备的所述输入队列被映射至在所述存储器域中保存的所述表,以使得指示所述输入队列的所述搜索请求引起对在所述存储器域中保存的所述表的所述表查找。
16.根据权利要求11所述的方法,包括:所述表的所述条目指示从所述条目获得的所述结果的结果类型,所述结果类型包括引起所述请求方决定如何处理所述结果的请求方特定结果、到用于实现函数的存储器地址的回调指针、或者用于从存储器地址中获得信息的数据指针。
17.根据权利要求11所述的方法,所述表包括散列表、三态表、或树表。
18.根据权利要求11所述的方法,还包括:
基于所述表的所述条目指示从所述条目中获得的所述结果的结果类型,引起对在具有存储器地址的第二分组的第二存储器域中保存的第二表的第二表查找,所述结果的结果类型指示用于复合搜索的下一键值;以及
基于所述下一键值与在所述第二表的条目中指示的键值相匹配,从所述第二表的所述条目中获得第二结果。
19.根据权利要求18所述的方法,还包括:
通过将所述第二结果发送至所述队列管理设备的输出队列,将所述第二结果发送给所述搜索请求的请求方,其中,所述队列管理设备被布置为将所述第二结果从所述输出队列转发给所述请求方。
20.根据权利要求11所述的方法,包括:
基于所述表的所述条目指示从所述条目获得的所述结果的结果类型,引起第二表查找,所述结果类型指示用于复合搜索的下一键值;以及
基于所述下一键值与在所述电路可访问的多个存储器域中保存的表的表条目不匹配,将所述结果发送至搜索加速器以实现所述第二表查找,所述结果被发送至所述队列管理设备的输出队列,其中,所述队列管理设备被布置为将所述结果转发至所述搜索加速器。
21.包括多个指令的至少一种机器可读介质,所述多个指令响应于被系统执行,引起所述系统实行根据权利要求11至20中的任何一项的方法。
22.一种装置,其包括用于执行权利要求11至20中的任何一项的方法的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/452,173 | 2019-06-25 | ||
US16/452,173 US11210216B2 (en) | 2019-06-25 | 2019-06-25 | Techniques to facilitate a hardware based table lookup |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112134804A true CN112134804A (zh) | 2020-12-25 |
Family
ID=68097192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010223398.0A Pending CN112134804A (zh) | 2019-06-25 | 2020-03-26 | 促进基于硬件的表查找的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11210216B2 (zh) |
EP (1) | EP3758311B1 (zh) |
CN (1) | CN112134804A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115022254A (zh) * | 2022-06-02 | 2022-09-06 | 江苏新质信息科技有限公司 | 基于fpga的策略匹配查找方法及装置 |
CN115270690A (zh) * | 2022-09-26 | 2022-11-01 | 中科声龙科技发展(北京)有限公司 | 查找空闲存储的装置、方法及芯片 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021181874A1 (ja) * | 2020-03-09 | 2021-09-16 | オムロン株式会社 | 通信制御機器および通信制御機器の制御方法 |
US11863469B2 (en) * | 2020-05-06 | 2024-01-02 | International Business Machines Corporation | Utilizing coherently attached interfaces in a network stack framework |
KR20210149327A (ko) * | 2020-06-02 | 2021-12-09 | 에스케이하이닉스 주식회사 | 역색인 구조를 이용하여 검색을 수행하는 하드웨어 가속기 및 이를 포함하는 검색 시스템 |
US11502941B2 (en) * | 2020-12-04 | 2022-11-15 | T-Mobile Usa, Inc. | Techniques for routing data in a network |
US20230244664A1 (en) * | 2022-02-02 | 2023-08-03 | Samsung Electronics Co., Ltd. | Hybrid database scan acceleration system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832244A (en) * | 1996-02-20 | 1998-11-03 | Iomega Corporation | Multiple interface input/output port for a peripheral device |
US7739398B1 (en) * | 2000-11-21 | 2010-06-15 | Avaya Inc. | Dynamic load balancer |
US8510496B1 (en) * | 2009-04-27 | 2013-08-13 | Netapp, Inc. | Scheduling access requests for a multi-bank low-latency random read memory device |
US20110302220A1 (en) * | 2010-06-08 | 2011-12-08 | Albert Marcella | Sql processing for data conversion |
JP5524144B2 (ja) * | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
JP6295767B2 (ja) * | 2014-03-25 | 2018-03-20 | 富士通株式会社 | スイッチ装置、情報処理システムおよびスイッチ装置の制御方法 |
US9485179B2 (en) * | 2014-11-13 | 2016-11-01 | Cavium, Inc. | Apparatus and method for scalable and flexible table search in a network switch |
US10445271B2 (en) * | 2016-01-04 | 2019-10-15 | Intel Corporation | Multi-core communication acceleration using hardware queue device |
US10216668B2 (en) | 2016-03-31 | 2019-02-26 | Intel Corporation | Technologies for a distributed hardware queue manager |
-
2019
- 2019-06-25 US US16/452,173 patent/US11210216B2/en active Active
-
2020
- 2020-03-24 EP EP20165304.5A patent/EP3758311B1/en active Active
- 2020-03-26 CN CN202010223398.0A patent/CN112134804A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115022254A (zh) * | 2022-06-02 | 2022-09-06 | 江苏新质信息科技有限公司 | 基于fpga的策略匹配查找方法及装置 |
CN115270690A (zh) * | 2022-09-26 | 2022-11-01 | 中科声龙科技发展(北京)有限公司 | 查找空闲存储的装置、方法及芯片 |
CN115270690B (zh) * | 2022-09-26 | 2022-11-29 | 中科声龙科技发展(北京)有限公司 | 查找空闲存储的装置、方法及芯片 |
Also Published As
Publication number | Publication date |
---|---|
US20190310937A1 (en) | 2019-10-10 |
EP3758311A1 (en) | 2020-12-30 |
US11210216B2 (en) | 2021-12-28 |
EP3758311B1 (en) | 2024-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11210216B2 (en) | Techniques to facilitate a hardware based table lookup | |
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
CN115210693A (zh) | 具有可预测时延的存储事务 | |
US10649924B2 (en) | Network overlay systems and methods using offload processors | |
US11489791B2 (en) | Virtual switch scaling for networking applications | |
EP3748510A1 (en) | Network interface for data transport in heterogeneous computing environments | |
US20200192715A1 (en) | Workload scheduler for memory allocation | |
US8381230B2 (en) | Message passing with queues and channels | |
US20200136971A1 (en) | Hash-table lookup with controlled latency | |
US20190044892A1 (en) | Technologies for using a hardware queue manager as a virtual guest to host networking interface | |
US9092275B2 (en) | Store operation with conditional push of a tag value to a queue | |
US10055153B2 (en) | Implementing hierarchical distributed-linked lists for network devices | |
KR20160117108A (ko) | 다수의 링크된 메모리 리스트들을 사용하기 위한 방법 및 장치 | |
US11863469B2 (en) | Utilizing coherently attached interfaces in a network stack framework | |
US20210377150A1 (en) | Memory pooled time sensitive networking based architectures | |
US20210120077A1 (en) | Multi-tenant isolated data regions for collaborative platform architectures | |
US8543722B2 (en) | Message passing with queues and channels | |
US10445267B2 (en) | Direct memory access (DMA) unit with address alignment | |
US9767014B2 (en) | System and method for implementing distributed-linked lists for network devices | |
US20190379613A1 (en) | Technologies for providing adaptive utilization of different interconnects for workloads | |
US11899969B1 (en) | Re-order buffer for in-order execution of dependent write transactions | |
US20170337084A1 (en) | Compute unit including thread dispatcher and event register and method of operating same to enable communication | |
US20220197729A1 (en) | Advanced queue monitoring system | |
US10698687B1 (en) | Pipelined resource allocation using size aligned allocation | |
US20220129329A1 (en) | Technologies for managing data wait barrier operations |
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 |