用于硬件加速器中的竞争内核的锁定电路的制作方法

文档序号:27449175发布日期:2021-11-18 00:34阅读:191来源:国知局
用于硬件加速器中的竞争内核的锁定电路的制作方法

1.本公开的示例总体上涉及计算系统中的硬件加速,并且具体地涉及用于硬件加速器中的竞争内核的锁定电路。


背景技术:

2.硬件加速涉及使用硬件来比在通用cpu上执行的软件更有效地执行一些功能。硬件加速器是被设计用于为某些应用实现硬件加速的专用硬件。示例应用包括神经网络、视频编码、解码、转码等、网络数据处理等。在计算系统上执行的软件通过各种驱动程序和库与硬件加速器交互。一种类型的硬件加速器包括可编程设备和相关电路系统。例如,可编程设备可以是现场可编程门阵列(fpga)或片上系统(soc),其包括fpga可编程逻辑以及其他子系统,诸如处理系统、数据处理引擎(dpe)阵列、片上网络(noc)等。
3.在多处理系统中,线程同步可以通过互斥锁定来实现以避免竞争条件。互斥的使用在软件环境中很常见,其中共享数据的互斥是经由原子操作实现的。诸如外围组件接口express(pcie)和用于加速器的高速缓存相干互连(ccix)等协议也提供了对原子操作的支持,这使得硬件加速内核能够获取锁定并且与软件线程竞争。对于具有并行操作的多个加速内核的系统,加速内核对主机计算机系统的锁定请求会导致不必要的外围总线利用和主机计算机对争用处理的增加。需要一种更有效的技术来处理硬件加速系统中的多个加速内核对共享数据的访问。


技术实现要素:

4.描述了用于为硬件加速器中的竞争内核提供锁定电路的技术。在一个示例中,一种计算系统中的硬件加速器包括:耦合到计算系统的外围总线的总线接口;耦合到总线接口的锁定电路;耦合到锁定电路和总线接口的多个内核电路;其中多个内核电路向锁定电路提供锁定请求,锁定请求针对存储在计算系统的系统存储器中的数据;其中锁定电路被配置为处理来自多个内核电路的锁定请求并且基于锁定请求通过总线接口在外围总线上发出原子事务。
5.在另一示例中,一种计算系统包括:系统存储器;耦合到系统存储器的处理器;耦合到系统存储器的外围总线;以及耦合到外围总线的硬件加速器。硬件加速器包括耦合到外围总线的总线接口;耦合到总线接口的锁定电路;以及耦合到锁定电路和总线接口的多个内核电路;其中多个内核电路向锁定电路提供锁定请求,锁定请求针对存储在计算系统的系统存储器中的数据;其中锁定电路被配置为处理来自多个内核电路的锁定请求并且基于锁定请求通过总线接口在外围总线上发出原子事务。
6.在另一示例中,一种管理在计算系统的硬件加速器中执行的多个内核之间对存储在存储器中的数据的锁定的方法:在硬件加速器中的锁定电路处从多个内核中的内核接收锁定请求;确定锁定是否被多个内核中的另一内核保持;响应于锁定被另一内核保持,指示对内核的未决请求;以及响应于锁定未被另一内核保持,从锁定电路通过计算系统的总线
接口发出对锁定的原子请求以获取锁定。
7.这些和其他方面可以参考以下详细描述来理解。
附图说明
8.为了能够详细理解上述特征,可以通过参考示例实现来进行更具体的描述(上面简要概述),其中一些示例实现在附图中示出。然而,应当注意,附图仅示出了典型的示例实现并且因此不应当被认为是对其范围的限制。
9.图1a是描绘根据示例的硬件加速系统的框图。
10.图1b是描绘根据示例的加速应用的框图。
11.图1c是描绘根据示例的加速电路的框图。
12.图2是描绘图1a的计算系统的逻辑视图的框图。
13.图3是描绘示例内核锁定阵列的框图。
14.图4是描绘另一示例内核锁定阵列的框图。
15.图5是描绘根据示例的管理锁定请求的方法的流程图。
16.图6是描绘根据示例的管理锁定释放的方法的流程图。
17.图7a是描绘根据示例的多集成电路(ic)可编程设备的框图。
18.图7b是描绘根据示例的可编程ic的框图。
19.图7c是描绘根据示例的可编程ic的片上系统(soc)实现的框图。
20.图7d示出了根据示例的可编程ic的现场可编程门阵列(fpga)实现。
21.为了便于理解,在可能的情况下使用相同的附图标记来表示附图共有的相同元素。可以预期,一个示例的元素可以有利地合并到其他示例中。
具体实施方式
22.以下参考附图描述各种特征。应当注意,这些图可以按比例绘制也可以不按比例绘制,并且在整个图中,类似结构或功能的元素由相同的附图标记表示。应当注意,这些图只是为了促进对特征的描述。它们并非旨在作为所要求保护的发明的详尽描述或对所要求保护的发明范围的限制。此外,所示示例不需要具有所示的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例,并且可以在任何其他示例中实践,即使没有如此说明或没有如此明确描述。
23.描述了用于为硬件加速器中的竞争内核提供锁定电路的技术。这些技术提供了一种处理由多个硬件加速内核发起的原子操作的有效方法。锁定电路在具有硬件加速内核的集成电路(ic)中提供中央争用处理电路。锁定电路负责通过总线接口向包括具有共享数据结构的硬件加速器的主机计算机系统发起原子请求。这可以防止需要内核电路直接通过总线接口发出原子请求。因此,这些技术减少了总线接口上的原子事务的频率,从而减少了主机上的争用。当可以向多个内核授予锁定(基于用例)时,这些技术还通过允许不同加速内核并行执行来提高性能。下面参考附图描述这些和其他方面。
24.图1a是描绘根据示例的硬件加速系统100的框图。硬件加速系统100包括主机计算系统102。主机计算系统102包括硬件平台(“硬件104”)和在硬件104上执行的软件平台(“软件106”)。硬件104包括处理系统110、系统存储器116、存储设备(“存储部118”)和硬件加速
器122。软件106包括操作系统(os)144、加速堆栈146、主机应用150和竞争线程139。
25.处理系统110包括微处理器112、支持电路114和外围总线115。微处理器112可以是任何类型的通用中央处理单元(cpu),诸如基于x86的处理器、基于的处理器等。微处理器112可以包括一个或多个核心和相关电路系统(例如,高速缓冲存储器、存储器管理单元(mmu)、中断控制器等)。微处理器112被配置为执行程序代码,程序代码执行本文中描述的一个或多个操作并且可以存储在系统存储器116和/或存储部118中。支持电路114包括与微处理器112协作以管理微处理器112、系统存储器116、存储部118、硬件加速器122或任何其他外围设备之间的数据流的各种设备。例如,支持电路114可以包括芯片组(例如,北桥、南桥、平台主机控制器等)、电压调节器、固件(例如,基本输入输出系统(bios))等。支持电路114管理微处理器112与外围总线115之间的数据流,诸如硬件加速器122等各种外围设备连接到微处理器112和外围总线115。在一些示例中,微处理器112可以是吸收芯片组的全部或大部分功能(例如,北桥、南桥等)的系统级封装(sip)、片上系统(soc)等。外围总线115可以实现扩展总线标准,诸如外围组件互连express(pcie)等。
26.系统存储器116是允许存储和检索诸如可执行指令和数据等信息的设备。系统存储器116可以包括例如一个或多个随机存取存储器(ram)模块,诸如双倍数据速率(ddr)动态ram(dram)。存储装置118包括本地存储设备(例如,一个或多个硬盘、闪存模块、固态盘和光盘)和/或存储接口,存储接口使得计算系统102能够与一个或多个网络数据存储系统通信。硬件104可以包括计算系统的各种其他常规设备和外围设备,诸如图形卡、通用串行总线(usb)接口等。
27.在一个示例中,硬件加速器122包括可编程设备128和ram126。硬件加速器122可以可选地包括非易失性存储器(nvm)124。可编程设备128可以是现场可编程门阵列(fpga)或soc,soc具有fpga可编程逻辑以及其他嵌入式子系统。nvm 124可以包括任何类型的非易失性存储器,诸如闪存等。ram 126可以包括ddr dram等。ram 126可以被组织成分立的ram组127,如下文进一步描述的。可编程设备128耦合到nvm 124和ram 126。可编程设备128还耦合到处理系统110的外围总线115。
28.os 144可以是本领域已知的任何商品操作系统,诸如microsoftmac等。加速堆栈146包括向硬件加速器122提供应用程序接口(api)以用于其命令和控制的驱动程序和库。
29.图1b是描绘根据示例的加速应用180的框图。加速应用180包括主机应用150和加速电路130。加速电路130在硬件加速器122上的可编程设备128的可编程逻辑(pl)3中被编程。主机应用150包括在微处理器112上执行的软件,该软件使用对加速堆栈146的api调用来调用加速电路130以执行一些工作。主机应用150可以包括将一些功能卸载到硬件加速器122的神经网络、视频处理、网络处理或类似类型的应用。
30.图1c是描绘根据示例的加速电路130的框图。加速电路130包括总线接口141、内核138和锁定电路140。特别地,主机应用150调用加速堆栈146的api来在可编程设备128的pl 3中编程内核电路((多个)“内核138”)。(多个)内核138包括用于处理数据的计算单元。一旦(多个)内核138被编程,主机应用150就可以通过总线接口141访问(多个)内核138。内核138可以处理存储在系统存储器116和/或ram 126中的数据。特别地,内核138通过总线接口141访问系统存储器116并且通过可编程设备128的存储器接口访问ram 126。内核138可以与竞
争线程139竞争访问系统存储器116中的数据。由于系统存储器116在竞争线程139与内核138之间被共享,所以加速电路130包括锁定电路140。内核138耦合到锁定电路140并且使用锁定电路140通过总线接口141发出原子事务以获取对系统存储器116中的数据的锁定。锁定电路140通过总线接口141提供原子事务的单一源,而不是让所有个体内核138通过总线接口141发出原子事务。锁定电路140的操作在下面进一步讨论。
31.在该示例中,处理系统110被示出为与硬件加速器122分开。在下面进一步讨论的其他示例中,处理系统110和硬件加速器122可以在同一可编程设备(例如,带有嵌入式处理系统的可编程设备)内实现。在这种情况下,处理系统110可以利用与pl 3的替代互连来与加速电路130通信,其示例在下面描述。此外,在本文中讨论的示例中,加速电路130在可编程设备128中实现。在其他示例中,可编程设备128可以替换为任何集成电路(ic),包括专用集成电路(asic),在该asic中,加速电路130包括形成在其中的硬化电路系统。因此,本文中讨论的锁定电路140和互斥方案适用于可编程设备和asic两者中的加速电路。
32.图2是描绘根据示例的计算系统102的逻辑视图的框图。如图2所示,内核138通过总线接口141和外围总线115访问系统存储器116中的数据202。竞争线程139在微处理器112上执行并且还访问系统存储器116中的数据202。竞争线程139使用锁定阵列204来控制对数据202的访问。锁定阵列204由数据202的某些部分的标识符索引。在访问数据202的一部分之前,竞争线程139使用数据部分的标识符来检查锁定阵列204以查看锁定是否已被另一线程设置。如果否,则竞争线程139设置锁定并且访问与其他竞争线程139互斥的数据。竞争线程139使用微处理器112的原子指令设置和检查锁定阵列204中的锁定。
33.锁定电路140维护内核锁定阵列206。锁定电路140是所有内核138的中央争用处理块。假定n个内核138,其中n是大于1的整数。锁定电路140维护由数据202的标识符索引的内核锁定阵列206。在一个示例中,标识符是从数据202的键生成的散列值的全部或一部分。内核锁定阵列206中的每个元素是(2*n)位宽,其中低n位指示锁定状态,并且高n位指示未决请求。所有内核138将它们对锁定的请求定向到锁定电路140,而不是通过总线接口141直接在外围总线115上。锁定电路140是通过总线接口141请求锁定的唯一电路。
34.图3是描绘内核锁定阵列206的示例的框图。在该示例中,内核锁定阵列206包括阵列索引302。阵列索引302可以是数据202的任何标识符集合,诸如从数据的键(例如,存储器地址或与数据202相关联的一些其他键)导出的散列值的全部或一部分。内核锁定阵列206中的每个条目包括未决请求304和锁定状态306。未决请求304包括n位,每个内核138一位。锁定状态306包括n位,每个内核138一位。
35.图5是描绘根据示例的管理锁定请求的方法500的流程图。参考图2和5,锁定电路140如下操作。在从内核138接收到包括内核id和索引值的锁定请求(步骤502)时,锁定电路140检查由索引值索引的内核锁定阵列206以确定锁定是否由某个其他内核138保持(步骤504)。如果锁定没有被保持(步骤506),则锁定电路140通过总线接口141向外围总线115发出原子请求以检查锁定阵列204(步骤508)。如果所请求的数据部分未被锁定(510),则外围总线115将锁定返回给锁定电路140。锁定电路140然后在与内核id相对应的位位置将内核锁定阵列206中的锁定状态标记为“1”(512)。如果所请求的数据部分不能被锁定(510),则锁定电路140可以在某个等待时段之后再次发出原子请求。如果锁定的状态为非零(步骤506),这表明另一内核138保持锁定,则锁定电路140改为在未决请求字段中为内核id设置
位(步骤514)。然后内核138必须等待以访问所请求的数据部分。
36.图6是描绘根据示例的管理锁定释放的方法600的流程图。参考图2和6,在从内核138接收到包括内核id和索引的锁定释放请求(步骤602)时,锁定电路140检查该锁定索引的未决请求字段(604)。如果未决请求字段为零(步骤606),则锁定电路140通过通过总线接口141在外围总线上发送原子事务来释放锁定(步骤608)。如果未决请求字段为非零(步骤606),则锁定电路140改为将锁定授予先前请求锁定且未接收到锁定但改为已经设置有未决请求的另一内核138(步骤610)。
37.锁定电路140防止外围总线115上的不必要的原子业务并且在本地处理加速电路相关争用。等待授予锁定的内核138不需要通过外围总线115发送重复的原子事务。
38.在内核138需要锁定以仅访问数据(而不是修改)的情况下,锁定电路140可以同时向多个内核138授予锁定。未决请求字段可以转换为计数器以跟踪很多内核当前如何被授予锁定。图4是描绘具有计数器字段308而不是未决请求字段304的内核锁定阵列206的示例的框图。计数器字段308针对每个条目包括一个值,该值指示已经被授予锁定的内核的数目。锁定电路140根据来自内核138的锁定释放请求递减计数器字段308。当计数器字段308达到零时,锁定电路140通过外围总线115发送原子请求以释放对数据的锁定。这种方案在诸如内存缓存(memcached)等应用中很有用,其中当get操作被卸载到多个内核138时,锁定主要用于防止主机应用像在set操作中那样修改数据。这有利于实现单独用软件不可能进行的并行处理。
39.基于应用需求,如果在内核138获取锁定时还需要写入(例如,数据结构中的某个字段的增量),则该增量可以经由原子存储添加操作来完成,并且多个用户内核138仍然可以并行操作,以提供更好的整体性能。如果用例分析暗示保持锁定一段时间会导致竞争线程139饥饿,则可以在锁定电路140中实现阈值计数器,使得一旦第一内核138获取锁定,锁定就不会被保持超过设置数目的内核138。
40.图7a是描绘根据示例的可编程设备54的框图。可编程设备54可以用于在硬件加速器122中实现可编程设备128。可编程设备54包括多个可编程集成电路(ic)1,例如可编程ic 1a、1b、1c和1d。在一个示例中,每个可编程ic 1是设置在插入器51上的ic管芯。每个可编程ic 1包括可编程设备54的超级逻辑区(slr)53,例如slr 53a、53b、53c和53d。可编程ic 1通过插入器51上的导体(称为超长线(sll)52)被互连。
41.图7b是描绘根据示例的可编程ic 1的框图。可编程ic 1可以用于在可编程设备54中实现可编程设备128或可编程ic 1a

1d之一。可编程ic 1包括可编程逻辑3(也称为可编程结构)、配置逻辑25、和配置存储器26。可编程ic 1可以耦合到外部电路,诸如非易失性存储器27、dram 28和其他电路29。可编程逻辑3包括逻辑单元30、支持电路31和可编程互连32。逻辑单元30包括可以被配置为实现多个输入的通用逻辑功能的电路。支持电路31包括专用电路,诸如收发器、输入/输出块、数字信号处理器、存储器等。逻辑单元和支持电路31可以使用可编程互连32被互连。用于对逻辑单元30进行编程、用于设置支持电路31的参数以及用于对可编程互连32进行编程的信息由配置逻辑25存储在配置存储器26中。配置逻辑25可以从非易失性存储器27或任何其他源(例如,dram 28或从其他电路29)获取配置数据。在一些示例中,可编程ic 1包括处理系统2。处理系统2可以包括(多个)微处理器、存储器、支持电路、io电路等。在一些示例中,可编程ic 1包括片上网络(noc)55和数据处理引擎
(dpe)阵列56。noc 55被配置为提供可编程ic 1的子系统之间(诸如ps 2、pl 3和dpe阵列56之间)的通信。dpe阵列56可以包括被配置为执行数据处理的dpe阵列,诸如向量处理器阵列。
42.图7c是描绘根据示例的可编程ic 1的soc实现的框图。在该示例中,可编程ic 1包括处理系统2和可编程逻辑3。处理系统2包括各种处理单元,诸如实时处理单元(rpu)4、应用处理单元(apu)5、图形处理单元(gpu)6、配置和安全单元(csu)12、平台管理单元(pmu)122等。处理系统2还包括各种支持电路,诸如片上存储器(ocm)14、收发器7、外围设备8、互连16、dma电路9、存储器控制器10、外围设备15和多路复用io(mio)电路13。处理单元和支持电路通过互连16被互连。pl 3还耦合到互连16。收发器7耦合到外部引脚24。pl 3耦合到外部引脚23。存储器控制器10耦合到外部引脚22。mio 13耦合到外部引脚20。ps 2通常耦合到外部引脚21。apu 5可以包括cpu 17、存储器18和支持电路19。
43.在图3c的示例中,可编程ic 1可以用在硬件加速器122中并且可以如上所述起作用。加速电路130可以在pl 3中编程并且如上所述起作用。在另一示例中,上述硬件104的功能可以使用ps 2来实现,而不是通过计算系统的硬件来实现。在这种情况下,软件106在ps 2上执行并且如上所述起作用。
44.参考ps 2,处理单元中的每个包括一个或多个中央处理单元(cpu)和相关电路,诸如存储器、中断控制器、直接存储器存取(dma)控制器、存储器管理单元(mmu)、浮点单元(fpu)等。互连16包括各种交换机、总线、通信链路等,这些交换机、总线、通信链路等被配置为互连处理单元、以及将ps 2中的其他组件互连到处理单元。
45.ocm 14包括一个或多个ram模块,ram模块可以分布在整个ps 2中。例如,ocm 14可以包括电池后备ram(bbram)、紧耦合存储器(tcm)等。存储器控制器10可以包括用于访问外部dram的dram接口。外围设备8、15可以包括向ps 2提供接口的一个或多个组件。例如,外围设备15可以包括图形处理单元(gpu)、显示接口(例如,displayport、高清多媒体接口(hdmi)端口等)、通用串行总线(usb)端口、以太网端口、通用异步收发器(uart)端口、串行外围接口(spi)端口、通用io(gpio)端口、串行高级技术附件(sata)端口、pcie端口等。外围设备15可以耦合到mio 13。外围设备8可以耦合到收发器7。收发器7可以包括串行器/解串器(serdes)电路、多千兆位收发器(mgt)等。
46.图7d示出了包括pl 3的可编程ic 1的现场可编程门阵列(fpga)实现。图7d所示的pl 3可以用于本文中描述的可编程设备的任何示例中。pl 3包括大量不同可编程块,包括收发器37、可配置逻辑块(“clb”)33、随机存取存储器块(“bram”)34、输入/输出块(“iob”)36、配置和时钟逻辑(“config/clocks”)42、数字信号处理块(“dsp”)35、专用输入/输出块(“i/o”)41(例如,配置端口和时钟端口)和其他可编程逻辑39,诸如数字时钟管理器、模数转换器、系统监测逻辑等。pl 3还可以包括pcie接口40、模数转换器(adc)38等。
47.在一些pl中,每个可编程块可以包括至少一个可编程互连元件(“int”)43,int 43具有到同一块内的可编程逻辑元件的输入和输出端子48的连接,如图7d的顶部包括的示例所示。每个可编程互连元件43还可以包括到相同块或(多个)其他块中的(多个)相邻可编程互连元件的互连段49的连接。每个可编程互连元件43还可以包括到逻辑块(未示出)之间的通用路由资源的互连段50的连接。通用路由资源可以包括逻辑块(未示出)之间的路由通道,包括互连段(例如,互连段50)的轨道和用于连接互连段的开关块(未示出)。通用路由资
源的互连段(例如,互连段50)可以跨越一个或多个逻辑块。可编程互连元件43与通用路由资源一起实现用于所示出的pl的可编程互连结构(“可编程互连”)。
48.在示例实现中,clb 33可以包括可配置逻辑元件(“cle”)44,cle 44可以被编程以实现用户逻辑加上单个可编程互连元件(“int”)43。除了一个或多个可编程互连元件,bram 34还可以包括bram逻辑元件(“brl”)45。通常,块中包括的互连元件的数目取决于块的高度。在所示示例中,bram块具有与五个clb相同的高度,但也可以使用其他数字(例如,四个)。除了适当数目的可编程互连元件,dsp块35还可以包括dsp逻辑元件(“dspl”)46。除了可编程互连元件43的一个实例,iob 36还可以包括例如输入/输出逻辑元件(“iol”)47的两个实例。本领域技术人员将清楚,例如,连接到i/o逻辑元件47的实际i/o焊盘通常不限于输入/输出逻辑元件47的区域。
49.在所示示例中,靠近管芯的中央的水平区域(如图3d所示)用于配置、时钟和其他控制逻辑。从该水平区域或列延伸的垂直列51用于跨pl的宽度分配时钟和配置信号。
50.利用图5d所示的架构的一些pl包括破坏构成pl的大部分的规则柱状结构的附加逻辑块。附加逻辑块可以是可编程块和/或专用逻辑。
51.注意,图7d旨在仅示出示例性pl架构。例如,一行中的逻辑块的数目、行的相对宽度、行的数目和顺序、行中包括的逻辑块的类型、逻辑块的相对大小、以及图7d顶部处包括的互连/逻辑实现仅为示例性的。例如,在实际的pl中,通常在clb出现的任何位置都包括一个以上的相邻clb行,以促进用户逻辑的有效实现,但相邻clb行的数目随pl的整体大小而变化。
52.本公开还可以用以下示例中的一个或多个表示(但不限于此):
53.示例1:一种计算系统中的硬件加速器,包括:总线接口,耦合到所述计算系统的外围总线;锁定电路,耦合到所述总线接口;以及多个内核电路,耦合到所述锁定电路和所述总线接口;其中所述多个内核电路向所述锁定电路提供锁定请求,所述锁定请求针对存储在所述计算系统的系统存储器中的数据;其中所述锁定电路被配置为处理来自所述多个内核电路的所述锁定请求并且基于所述锁定请求通过所述总线接口在所述外围总线上发出原子事务。
54.示例2:根据示例1所述的硬件加速器,其中所述锁定电路被配置为维护内核锁定阵列,并且其中所述内核锁定阵列包括多个元素,每个元素具有未决请求字段和锁定状态字段。
55.示例3:根据示例2所述的硬件加速器,其中所述未决请求字段包括与所述多个内核电路相对应的多个条目,并且其中所述锁定状态字段包括与所述多个内核电路相对应的多个条目。
56.示例4:根据示例3所述的硬件加速器,其中所述锁定电路被配置为针对所述锁定请求中的每个锁定请求,检查所述内核锁定阵列中的对应元素的所述锁定状态字段,如果可用,则在所述对应元素的所述锁定状态字段中设置锁定,并且如果锁定不可用,则在所述未决请求字段中指示未决锁定请求。
57.示例5:根据示例1所述的硬件加速器,其中所述锁定电路被配置为维护内核锁定阵列,并且其中所述内核锁定阵列包括多个元素,每个元素具有计数器字段和锁定状态字段。
58.示例6:根据示例5所述的硬件加速器,其中所述计数器字段包括值,并且其中所述锁定状态字段包括与所述多个内核电路相对应的多个条目。
59.示例7:根据示例6所述的硬件加速器,其中所述锁定电路被配置为针对所述锁定请求中的每个锁定请求,检查所述内核锁定阵列中的对应元素的所述锁定状态字段,在所述对应元素的所述锁定状态字段中设置锁定,并且递增所述对应元素的所述计数器字段中的所述值。
60.示例8:一种计算系统,包括:系统存储器;处理器,耦合到所述系统存储器;外围总线,耦合到所述系统存储器;以及硬件加速器,耦合到所述外围总线;总线接口,耦合到所述外围总线;锁定电路,耦合到所述总线接口;以及多个内核电路,耦合到所述锁定电路和所述总线接口;其中所述多个内核电路向所述锁定电路提供锁定请求,所述锁定请求针对存储在所述计算系统的系统存储器中的数据;其中所述锁定电路被配置为处理来自所述多个内核电路的所述锁定请求并且基于所述锁定请求通过所述总线接口在所述外围总线上发出原子事务。
61.示例9:根据示例8所述的计算系统,其中所述锁定电路被配置为维护内核锁定阵列,并且其中所述内核锁定阵列包括多个元素,每个元素具有未决请求字段和锁定状态字段。
62.示例10:根据示例9所述的计算系统,其中所述未决请求字段包括与所述多个内核电路相对应的多个条目,并且其中所述锁定状态字段包括与所述多个内核电路相对应的多个条目。
63.示例11:根据示例10所述的计算系统,其中所述锁定电路被配置为针对所述锁定请求中的每个锁定请求,检查所述内核锁定阵列中的对应元素的所述锁定状态字段,如果可用,则在所述对应元素的所述锁定状态字段中设置锁定,并且如果锁定不可用,则在所述未决请求字段中指示未决锁定请求。
64.示例12:根据示例8所述的计算系统,其中所述锁定电路被配置为维护内核锁定阵列,并且其中所述内核锁定阵列包括多个元素,每个元素具有计数器字段和锁定状态字段。
65.示例13:根据示例12所述的计算系统,其中所述计数器字段包括值,并且其中所述锁定状态字段包括与所述多个内核电路相对应的多个条目。
66.示例14:根据示例13所述的计算系统,其中所述锁定电路被配置为针对所述锁定请求中的每个锁定请求,检查所述内核锁定阵列中的对应元素的所述锁定状态字段,在所述对应元素的所述锁定状态字段中设置锁定,并且递增所述对应元素的所述计数器字段中的所述值。
67.示例15:一种管理在计算系统的硬件加速器中执行的多个内核之间对存储在存储器中的数据的锁定的方法,所述方法包括:在所述硬件加速器中的锁定电路处从所述多个内核中的内核接收锁定请求;确定锁定是否被所述多个内核中的另一内核保持;响应于所述锁定被另一内核保持,指示对所述内核的未决请求;以及响应于所述锁定未被另一内核保持,从所述锁定电路通过所述计算系统的总线接口发出对所述锁定的原子请求以获取所述锁定。
68.示例16:根据示例15所述的方法,还包括:指示所述内核具有所述锁定。
69.示例17:根据示例15所述的方法,还包括:在所述锁定电路处从所述内核接收锁定
释放请求;确定所述多个内核中的另一内核是否具有未决锁定请求;响应于不存在未决锁定请求,从所述锁定电路通过所述计算系统的所述总线接口发出另一原子请求以释放所述锁定;以及响应于存在未决锁定请求,由所述锁定电路将所述锁定授予所述多个内核中的另一内核。
70.示例18:根据示例15所述的方法,其中所述锁定电路被配置为维护内核锁定阵列,并且其中所述内核锁定阵列包括多个元素,每个元素具有未决请求字段和锁定状态字段。
71.示例19:根据示例18所述的方法,其中所述未决请求字段包括与所述多个内核电路相对应的多个条目,并且其中所述锁定状态字段包括与所述多个内核电路相对应的多个条目。
72.示例20:根据示例15所述的方法,其中所述锁定电路被配置为维护内核锁定阵列,并且其中所述内核锁定阵列包括多个元素,每个元素具有计数器字段和锁定状态字段。
73.虽然上文针对具体示例,但是在不脱离其基本范围的情况下可以设计其他和另外的示例,并且其范围由以下示例确定。
74.虽然上文针对具体示例,但是在不脱离其基本范围的情况下可以设计其他和另外的示例,并且其范围由所附权利要求书确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1