CN115481058A - 内存原子操作指令的执行方法、装置、访问模块及系统 - Google Patents
内存原子操作指令的执行方法、装置、访问模块及系统 Download PDFInfo
- Publication number
- CN115481058A CN115481058A CN202211168224.4A CN202211168224A CN115481058A CN 115481058 A CN115481058 A CN 115481058A CN 202211168224 A CN202211168224 A CN 202211168224A CN 115481058 A CN115481058 A CN 115481058A
- Authority
- CN
- China
- Prior art keywords
- read
- target
- instruction
- memory
- atomic operation
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multi Processors (AREA)
Abstract
本公开提供了一种内存原子操作指令的执行方法、装置、访问模块及系统,涉及计算机技术领域,尤其涉及芯片领域。具体实现方案为:获取目标计算核发送的目标内存原子操作指令;通过目标协议总线发送针对读写地址的互斥读指令;响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算指令计算结果;通过目标协议总线发送针对读写地址的互斥写指令,将指令计算结果写入至读写地址;响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。本公开实现了内存原子操作指令运行开销小、执行效率高以及实现复杂度低的效果。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及芯片领域,具体涉及一种内存原子操作指令的执行方法、装置、访问模块及系统。
背景技术
在现代多核处理器中,为了实现对共享变量的互斥访问,避免数据争用,保证程序的正确执行,一般都支持原子操作。原子操作即对存储器中共享变量执行的“读取-修改-写入”操作序列是原子的,其执行过程不能被其他操作打断。此类原子操作的实现就要求处理器能够支持对应的原子指令,如Intel(因特尔)的CMPXCHG原子指令、IBM(InternationalBusiness Machines Corporation,国际商业机器公司)的CAS原子指令(一种Java指令)、ARM(一种微处理器)的SWP、LDADD、LDREX或者STREX指令、MIPS(一种RISC处理器)的LL或者SC指令、RISC-V(基于精简指令集计算原理的开放指令集架构)的LR、SC或者AMO指令等。
现有的处理器在实现AMO(内存原子操作,Atomic Memory Operation)指令时,复杂度高且实现开销大,同时,一般都是在片上缓存(Local Memory)或数据缓存上实现的,在GM(Global Memory,全局存储器)上实现AMO指令的方式较少见。
发明内容
本公开提供了一种内存原子操作指令的执行方法、装置、访问模块及系统。
根据本公开的一方面,提供了一种内存原子操作指令的执行方法,由片上系统中的直接存储器访问模块执行,包括:
获取目标计算核发送的目标内存原子操作指令,其中,目标内存原子操作指令中的读写地址为全局存储器上的地址;
通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据,其中,目标协议总线具有互斥读写控制功能;
响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果;
通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址;
响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。
根据本公开的另一方面,提供了一种内存原子操作指令的执行装置,配置于片上系统中的直接存储器访问模块上,包括:
指令获取模块,被配置为获取目标计算核发送的目标内存原子操作指令,其中,目标内存原子操作指令中的读写地址为全局存储器上的地址;
数据读取模块,被配置为通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据,其中,目标协议总线具有互斥读写控制功能;
数据计算模块,被配置为响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果;
数据写入模块,被配置为通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址;
数据反馈模块,被配置为响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。
根据本公开的另一方面,提供了一种直接存储器访问模块,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开任一实施例中的内存原子操作指令的执行方法。
根据本公开的另一方面,提供了一种片上系统,包括:全局存储器和至少一个丛集结构,至少一个丛集结构通过片上网络模块与全局存储器建立通信连接;
每个丛集结构中包括直接存储器访问模块和多个计算核,每个直接存储器访问模块和全局存储器通过目标协议总线接入片上网络模块;
各直接存储器访问模块,用于执行本公开中任一实施例中的内存原子操作指令的执行方法;
片上网络模块,用于响应于第一直接存储器访问模块发送的针对第一读写地址的互斥读指令,执行对第一直接存储器访问模块以及第一读写地址的数据项记录操作;若记录成功,则在全局存储器中获取与第一读写地址匹配的读数据,并将读数据反馈至第一直接存储器访问模块;以及
响应于第二直接存储器访问模块发送的针对第二读写地址的互斥写指令,查询是否存储与第二直接存储器访问模块和第二读写地址匹配的目标数据项;若是,则将与互斥写操作匹配的指令计算结果写入至全局存储器中的第二读写地址;清除目标数据项,并将写成功响应反馈至第二直接存储器访问模块。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开任一实施例中的内存原子操作指令的执行方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本公开任一实施例中的内存原子操作指令的执行方法的步骤。
本公开实施例的技术方案实现了内存原子操作指令运行开销小、执行效率高以及实现复杂度低的效果。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1a是本公开实施例提供的一种内存原子操作指令的执行方法的流程图;
图1b是本公开实施例提供的一种内存原子操作指令在直接存储器访问模块中的执行流程示意图;
图2a是本公开实施例提供的另一种内存原子操作指令的执行方法的流程图;
图2b是本公开实施例提供的另一种内存原子操作指令的执行方法的流程图;
图3是本公开实施例提供的一种内存原子操作指令的执行装置;
图4是本公开实施例提供的一种片上系统的示意图;
图5示出了可以用来实施本公开的实施例的示例直接存储器访问模块的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在一个示例中,图1a是本公开实施例提供的一种内存原子操作指令的执行方法的流程图,本实施例可适用于在全局存储器上实现内存原子操作指令的读写操作的情况,该方法可以由片上芯片中的直接存储器访问模块来执行。相应的,如图1a所示,该方法包括如下操作:
步骤110、获取目标计算核发送的目标内存原子操作指令。
其中,目标计算核可以是当前能够基于全局存储器上的地址进行数据读写操作的计算核。目标内存原子操作指令可以是由目标计算核发送的内存原子操作指令,用于完成目标计算核的内存原子操作。目标内存原子操作指令中的读写地址为全局存储器上的地址。读写地址可以是一个基于目标内存原子操作指令完成数据读取以及数据写回的数据存储地址。
一般情况下,可以将一个操作对象在存储地址A进行数据读取,并将读取数据的数据处理结果写回存储地址A的操作,理解为一次原子操作,即先读取读写地址存储的数据,在对读写地址存储的数据完成数据处理后,将数据处理结果写回读写地址,相当于完成一次内存原子操作指令。
示例性的,内存原子操作指令的格式可以定义为“amoXXX rd,rt,rs”(常用的精简指令集计算机风格指令集的R类型编码)。其中,XXX表示内存原子操作指令支持的操作类型,如有无符号的整型加减、有无符号的整型比较、交换、逻辑与或异或运算,以及整型取最大最小值等。rt表示要参与计算的源数据的存储地址,rd表示数据读取结果的写回地址,rs表示指定的读写地址。因为内存原子操作指令通常只支持word粒度的数据操作,故rs对应的读写地址通常按4Byte对齐。内存原子操作指令原子的执行“读-修改-写”操作,即指令原子性地从rs中读取数据值t,将该值t写入rd中,并将该值t和rt中存储的数据按照指令操作类型做二进制操作,然后把二进制的数据结果重新写回到rs中。
以指令“amoadd r5,r2,r1”为例,该指令将读写地址r1对应数据作为读写地址,以原子方式从该读写地址读取数据值,将该读取数据值放入r5中,同时将该读取数据值和r2中存储的数值相加,然后将求和结果写回读写地址r1中。
图1b是本公开实施例提供的一种内存原子操作指令在直接存储器访问模块中的执行流程示意图。如图1b所示,可以从指令缓存中取出内存原子操作指令即取指,进而根据内存原子操作指令的指令类型和功能进行译码,然后将译码结果传输至保留站中等待发射。当内存原子操作指令所需的操作数都准备好后,即可从保留站中发射,开始执行,执行过程中会进行访存操作,执行成功后可以进行数据写回,即将数据写回寄存器中。
在本公开实施例中,直接存储器访问模块可以接收至少一个计算核发送的内存原子操作指令,进而从发送内存原子操作指令的计算核中,确定当前能够基于全局存储器上的地址进行数据读写操作的目标计算核,从而得到目标计算核发送的目标内存原子操作指令。
步骤120、通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据。
其中,目标协议总线具有互斥读写控制功能。互斥读指令可以是仅使一个对象具备数据读取权限的指令。
在本公开实施例中,直接存储器访问模块可以基于目标协议总线向全局存储器发送针对读写地址中存储的数据的互斥读指令,从而实现对读写地址处存储数据的读取,可以防止除目标计算核之外的其他计算核,通过直接存储器访问模块以及目标协议总线对读写地址中存储的数据发起读操作。
步骤130、响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果。
其中,读数据可以是根据互斥读指令在读写地址中读取的数据。指令计算结果可以是根据目标内存原子操作指令对读数据进行处理后的数据处理结果。
在本公开实施例中,当目标协议总线成功读取读写地址中存储的数据之后,将读数据反馈至直接存储器访问模块,直接存储器访问模块根据目标内存原子操作指令对读数据进行相应的数据计算,得到与读数据匹配的指令计算结果。
步骤140、通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址。
其中,互斥写指令可以是仅使一个对象具备数据写入权限的指令。
在本公开实施例中,直接存储器访问模块在计算出与读数据匹配的指令计算结果之后,可以进一步通过目标协议总线发送将指令计算结果写入至读写地址的互斥写指令,以防止除目标计算核外的其他计算核,通过直接存储器访问模块以及目标协议总线对读写地址发起写操作。
步骤150、响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。
其中,写成功响应可以是目标协议总线向直接存储器访问模块发送的,反映指令计算结果成功写入读写地址的信号。
在本公开实施例中,在全局存储器的读写地址上完成指令计算结果的写入之后,由目标协议总线将写成功响应发送至直接存储器访问模块。直接存储器访问模块在接收到目标协议总线反馈的写成功响应之后,进一步将指令计算结果发送至目标计算核,以供目标计算核利用指令计算结果进行后续数据处理。
本公开实施例的技术方案,通过获取目标计算核发送的目标内存原子操作指令,从而通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据,并响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果,进而通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址,进一步响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。本方案可以在全局存储器上实现内存原子操作指令操作,使得内存原子操作指令的使用和扩展范围更广,并且目标协议总线具有互斥读写控制功能,在直接存储器访问模块执行内存原子操作指令时,可以减少内存原子操作指令的实现复杂度和相关实现开销,从而提升系统执行效率,解决了现有处理器实现内存原子操作指令存在的复杂度高以及开销大的问题,实现了内存原子操作指令运行开销小、执行效率高以及实现复杂度低的效果。
在一个示例中,图2a是本公开实施例提供的另一种内存原子操作指令的执行方法的流程图,本实施例给出了一种可选的实施方式。相应的,如图2a所示,该方法包括如下操作:
步骤210、每当到达节拍时间点,获取目标丛集结构中多个计算核的待处理内存原子操作指令,并在待处理内存原子操作指令中进行仲裁选择。
其中,节拍时间点可以用于触发直接存储器访问模块获取计算核发送的内存原子操作指令。可选的,节拍时间点可以根据直接存储器访问模块的时钟周期进行设定。在一个节拍时间点下可以有多个计算核向直接存储器访问模块发送内存原子操作指令。目标丛集结构可以是目标计算核所在的多核结构。目标丛集结构可以包括目标计算核、一个直接存储器访问模块、多个存储器以及与目标计算核属于同一多核结构的其他计算核。待处理内存原子操作指令可以是在节拍时间点由直接存储器访问模块管理的计算核发送的内存原子操作指令。
在本公开实施例中,每当到达节拍时间点,目标丛集结构的直接存储器访问模块获取本丛集结构中多个计算核发送的待处理内存原子操作指令,进而对待处理内存原子操作指令中进行仲裁选择,确定目标计算核发送的目标内存原子操作指令。
步骤220、如果仲裁出内存原子操作指令,则获取仲裁出的内存原子操作指令作为目标内存原子操作指令。
在本公开实施例中,如果在节拍时间点,直接存储器访问模块仲裁出目标计算核发送的内存原子操作指令,则将仲裁出的目标计算核发送的内存原子操作指令作为目标内存原子操作指令。
步骤230、如果未仲裁出任一内存原子操作指令,则等待下一节拍时间点继续仲裁,直至获取目标内存原子操作指令。
在本公开实施例中,如果在节拍时间点,直接存储器访问模块未获取到目标计算核发送的内存原子操作指令,即表征直接存储器访问模块未仲裁出任一内存原子操作指令,则直接存储器访问模块等待下一节拍时间点继续仲裁,直至获取到目标内存原子操作指令。通过步骤210-步骤230可以实现在节拍时间点自动的对待处理内存原子操作指令进行仲裁,获取目标内存原子操作指令。
在本公开的一个可选实施例中,在待处理内存原子操作指令中进行仲裁选择,可以包括:获取与当前节拍时间点匹配的目标时隙,并获取目标时隙所分配的目标计算核;判断目标计算核是否有待处理的内存原子操作指令;若是,则确定仲裁出内存原子操作指令;否则,确定未仲裁出任一内存原子操作指令。
其中,目标时隙可以是预先设置的时间区间。可选的,目标时隙与目标计算核具有对应关系,在一个目标时隙下,仅将一个计算核分配为目标计算核,不同计算核对应的目标时隙不同。示例性的,假设预先设置的目标时隙的时隙间隔为5ms,目标时隙1为11点22分49秒993ms-11点22分49秒998ms,目标时隙2为11点22分49秒998ms-11点22分50秒3ms,如果当前节拍时间点为11点22分50秒,则与当前节拍时间点匹配的目标时隙为目标时隙2。
在本公开实施例中,直接存储器访问模块可以先获取与当前节拍时间点匹配的目标时隙,进而根据目标时隙与计算核的对应关系,确定与当前节拍时间点匹配的目标时隙匹配的目标计算核,进而判断在目标时隙是否收到目标计算核发送的待处理的内存原子操作指令,如果在目标时隙接收到标计算核发送的待处理的内存原子操作指令,则确定仲裁出内存原子操作指令。如果在目标时隙未接收到目标计算核发送的待处理的内存原子操作指令,则确定未仲裁出任一内存原子操作指令。由目标时隙与计算核具有对应匹配关系,基于目标时隙可以快速的从多个计算核中精准确定目标计算核,以准确获取待处理的内存原子操作指令。
步骤240、通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据。
在本公开的一个可选实施例中,在通过目标协议总线发送针对读写地址的互斥读指令之后,还可以包括:响应于目标协议总线反馈的读失败响应,重新通过目标协议总线发送针对读写地址的互斥读指令,直至接收到目标协议总线的读数据。
其中,读失败响应可以是目标协议总线向直接存储器访问模块反馈的对读写地址中存储数据读取失败的信号。
在本公开实施例中,当直接存储器访问模块通过目标协议总线发送针对读写地址的互斥读指令之后,如果目标协议总线未成功读取读写地址中的数据,则向直接存储器访问模块发送读失败响应,直接存储器访问模块接收到目标协议总线反馈的读失败响应,进一步再次通过目标协议总线发送针对读写地址的互斥读指令,直至接收到目标协议总线在读成功后反馈的读数据,能够避免数据读取冲突,保证直接存储器访问模块能够可靠的在全局存储器上读写地址。
步骤250、响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果。
步骤260、通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址。
在本公开的一个可选实施例中,在通过目标协议总线发送针对读写地址的互斥写指令之后,还可以包括:响应于目标协议总线反馈的写失败响应,返回执行通过目标协议总线发送针对读写地址的互斥读指令的操作,直至接收到目标协议总线反馈的写成功响应。
其中,写失败响应可以是目标协议总线向直接存储器访问模块反馈的,反映读写地址中数据写入失败的信号。
在本公开实施例中,当直接存储器访问模块通过目标协议总线发送将指令计算结果写入至读写地址的互斥写指令之后,如果读写地址中未成功写入指令计算结果,则能通过目标协议总线向直接存储器访问模块发送写失败响应,当直接存储器访问模块接收到目标协议总线反馈的写失败响应之后,返回执行通过目标协议总线发送针对读写地址的互斥读指令的操作,直至接收到目标协议总线反馈的写成功响应,能够避免数据写操作冲突,从而保证指令计算结果成功写入读写地址。
步骤270、响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。
在本公开的一个可选实施例中,目标协议总线可以为高级可扩展接口总线,通过目标协议总线发送针对读写地址的互斥读指令,具体可以包括:通过高级可扩展接口总线发送高电平的读锁信号;响应于高级可扩展接口总线反馈的高电平的读锁准备信号,确定成功发送互斥读指令;通过目标协议总线发送针对读写地址的互斥写指令,可以包括:通过高级可扩展接口总线发送高电平的写锁信号;响应于高级可扩展接口总线反馈的高电平的写锁准备信号,确定成功发送互斥写指令。
其中,高级可扩展接口总线为多通道传输总线。读锁信号可以是高级可扩展接口总线发送的锁定读取读写地址中存储数据的信号,用于互斥读取读写地址中存储的数据。读锁准备信号可以是高级可扩展接口总线发送高电平读锁信号之后,由高级可扩展接口总线向直接存储器访问模块反馈的信号,用于表征直接存储器访问模块具备锁定读取读写地址中存储数据的权限。写锁信号可以用于使读取读写地址中存储数据的对象,在读写地址中互斥的写入数据。写锁准备信号可以是高级可扩展接口总线发送高电平写锁信号之后,由高级可扩展接口总线向直接存储器访问模块反馈的信号,用于使读取读写地址中存储数据的对象,具备在读写地址中写入数据的权限。
在本公开实施例中,可以通过高级可扩展接口总线发送高电平的读锁信号,在直接存储器访问模块接收到高级可扩展接口总线反馈的高电平的读锁准备信号之后,可以确定成功发送互斥读指令,进而实现对读写地址中存储数据的读取。进一步的,还可以通过高级可扩展接口总线发送高电平的写锁信号,在直接存储器访问模块接收到高级可扩展接口总线反馈的高电平的写锁准备信号之后,可以确定成功发送互斥写指令,此时读取读写地址中存储数据的直接存储器访问模块,可以对读写地址进行数据写入。高级可扩展接口总线具有总线接口特征,可以使内存原子操作指令在全局存储器上执行,从而使内存原子操作指令的可使用和可扩展范围更广。
本公开实施例的技术方案,通过每当到达节拍时间点,获取目标丛集结构中多个计算核的待处理内存原子操作指令,并在待处理内存原子操作指令中进行仲裁选择。如果仲裁出内存原子操作指令,则获取仲裁出的内存原子操作指令作为目标内存原子操作指令,如果未仲裁出任一内存原子操作指令,则等待下一节拍时间点继续仲裁,直至获取目标内存原子操作指令,进而通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据,并响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果,进一步通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址,并响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。本方案可以在全局存储器上实现内存原子操作指令操作,使得内存原子操作指令的使用和扩展范围更广,并且目标协议总线具有互斥读写控制功能,在直接存储器访问模块执行内存原子操作指令时,可以减少内存原子操作指令的实现复杂度和相关实现开销,从而提升系统执行效率,解决了现有处理器实现内存原子操作指令存在的复杂度高以及开销大的问题,实现了内存原子操作指令运行开销小、执行效率高以及实现复杂度低的效果。
在一个示例中,图2b是本公开实施例提供的另一种内存原子操作指令的执行方法的流程图,如图2b所示,该方法包括:
步骤2100、每当到达节拍时间点,获取目标丛集结构中多个计算核的待处理内存原子操作指令,并获取与当前节拍时间点匹配的目标时隙,以及目标时隙所分配的目标计算核。
步骤2200、判断目标计算核是否有待处理的内存原子操作指令;若是,则确定仲裁出内存原子操作指令,并获取仲裁出的内存原子操作指令作为目标内存原子操作指令;否则,确定未仲裁出任一内存原子操作指令,等待下一节拍时间点继续仲裁,直至获取目标内存原子操作指令。
步骤2300、通过高级可扩展接口总线发送高电平的读锁信号,并响应于高级可扩展接口总线反馈的高电平的读锁准备信号,确定成功发送互斥读指令。
步骤2400、响应于目标协议总线反馈的读数据,或者,响应于目标协议总线反馈的读失败响应,若响应于目标协议总线反馈的读数据,则按照目标内存原子操作指令计算与读数据匹配的指令计算结果,若响应于目标协议总线反馈的读失败响应,则重新通过目标协议总线发送针对读写地址的互斥读指令,直至接收到目标协议总线反馈的读数据。
步骤2500、通过高级可扩展接口总线发送高电平的写锁信号;响应于高级可扩展接口总线反馈的高电平的写锁准备信号,确定成功发送互斥写指令。
步骤2600、响应于目标协议总线反馈的写成功响应,或者,响应于目标协议总线反馈的写失败响应,若响应于目标协议总线反馈的写成功响应,则将指令计算结果反馈至目标计算核,若响应于目标协议总线反馈的写失败响应,返回执行通过目标协议总线发送针对读写地址的互斥读指令的操作,直至接收到目标协议总线反馈的写成功响应。
本公开实施例的技术方案,通过每当到达节拍时间点,获取目标丛集结构中多个计算核的待处理内存原子操作指令,并获取与当前节拍时间点匹配的目标时隙,以及目标时隙所分配的目标计算核,从而判断目标计算核是否有待处理的内存原子操作指令;若是,则确定仲裁出内存原子操作指令,并获取仲裁出的内存原子操作指令作为目标内存原子操作指令;否则,确定未仲裁出任一内存原子操作指令,等待下一节拍时间点继续仲裁,直至获取目标内存原子操作指令,进而通过高级可扩展接口总线发送高电平的读锁信号,并响应于高级可扩展接口总线反馈的高电平的读锁准备信号,确定成功发送互斥读指令。响应于目标协议总线反馈的读数据,或者,响应于目标协议总线反馈的读失败响应,若响应于目标协议总线反馈的读数据,则按照目标内存原子操作指令计算与读数据匹配的指令计算结果,若响应于目标协议总线反馈的读失败响应,则重新通过目标协议总线发送针对读写地址的互斥读指令,直至接收到目标协议总线反馈的读数据,进一步通过高级可扩展接口总线发送高电平的写锁信号;响应于高级可扩展接口总线反馈的高电平的写锁准备信号,确定成功发送互斥写指令,响应于目标协议总线反馈的写成功响应,或者,响应于目标协议总线反馈的写失败响应,若响应于目标协议总线反馈的写成功响应,则将指令计算结果反馈至目标计算核,若响应于目标协议总线反馈的写失败响应,返回执行通过目标协议总线发送针对读写地址的互斥读指令的操作,直至接收到目标协议总线反馈的写成功响应。本方案可以在全局存储器上实现内存原子操作指令操作,使得内存原子操作指令的使用和扩展范围更广,并且目标协议总线具有互斥读写控制功能,在直接存储器访问模块执行内存原子操作指令时,可以减少内存原子操作指令的实现复杂度和相关实现开销,从而提升系统执行效率,解决了现有处理器实现内存原子操作指令存在的复杂度高以及开销大的问题,实现了内存原子操作指令运行开销小、执行效率高以及实现复杂度低的效果。
图3是本公开实施例提供的一种内存原子操作指令的执行装置,配置于片上系统中的直接存储器访问模块上,包括指令获取模块310、数据读取模块320、数据计算模块330、数据写入模块340以及数据反馈模块350,其中,
指令获取模块310,被配置为获取目标计算核发送的目标内存原子操作指令,其中,目标内存原子操作指令中的读写地址为全局存储器上的地址;
数据读取模块320,被配置为通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据,其中,目标协议总线具有互斥读写控制功能;
数据计算模块330,被配置为响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果;
数据写入模块340,被配置为通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址;
数据反馈模块350,被配置为响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。
本公开实施例的技术方案,通过获取目标计算核发送的目标内存原子操作指令,从而通过目标协议总线发送针对读写地址的互斥读指令,以从读写地址处读取数据,并响应于目标协议总线反馈的读数据,按照目标内存原子操作指令计算与读数据匹配的指令计算结果,进而通过目标协议总线发送针对读写地址的互斥写指令,以将指令计算结果写入至读写地址,进一步响应于目标协议总线反馈的写成功响应,将指令计算结果反馈至目标计算核。本方案可以在全局存储器上实现内存原子操作指令操作,使得内存原子操作指令的使用和扩展范围更广,并且目标协议总线具有互斥读写控制功能,在直接存储器访问模块执行内存原子操作指令时,可以减少内存原子操作指令的实现复杂度和相关实现开销,从而提升系统执行效率,解决了现有处理器实现内存原子操作指令存在的复杂度高以及开销大的问题,实现了内存原子操作指令运行开销小、执行效率高以及实现复杂度低的效果。
可选的,指令获取模块310包括仲裁选择单元以及仲裁处理单元,其中,仲裁选择单元,被配置为每当到达节拍时间点,获取目标丛集结构中多个计算核的待处理内存原子操作指令,并在待处理内存原子操作指令中进行仲裁选择;仲裁处理单元,被配置为如果仲裁出内存原子操作指令,则获取仲裁出的内存原子操作指令作为目标内存原子操作指令;如果未仲裁出任一内存原子操作指令,则等待下一节拍时间点继续仲裁,直至获取目标内存原子操作指令。
可选的,仲裁选择单元包括目标计算核获取子单元以及仲裁结果判断子单元,目标计算核获取子单元,被配置为获取与当前节拍时间点匹配的目标时隙,并获取目标时隙所分配的目标计算核;仲裁结果判断子单元,被配置为判断目标计算核是否有待处理的内存原子操作指令;若是,则确定仲裁出内存原子操作指令;否则,确定未仲裁出任一内存原子操作指令。
可选的,内存原子操作指令的执行装置还包括互斥读指令重发模块,互斥读指令重发模块,被配置为响应于目标协议总线反馈的读失败响应,重新通过目标协议总线发送针对读写地址的互斥读指令,直至接收到目标协议总线反馈的读结果。
可选的,内存原子操作指令的执行装置还包括互斥写指令重发模块,互斥写指令重发模块被配置为响应于目标协议总线反馈的写失败响应,返回执行通过目标协议总线发送针对读写地址的互斥读指令的操作,直至接收到目标协议总线反馈的写成功响应。
可选的,目标协议总线为高级可扩展接口总线;数据读取模块320,被配置为通过高级可扩展接口总线发送高电平的读锁信号;响应于高级可扩展接口总线反馈的高电平的读锁准备信号,确定成功发送互斥读指令;数据反馈模块350,被配置为通过高级可扩展接口总线发送高电平的写锁信号;响应于高级可扩展接口总线反馈的高电平的写锁准备信号,确定成功发送互斥写指令。
图4是本公开实施例提供的一种片上系统的示意图,如图4所示,片上系统,可以包括:全局存储器和至少一个丛集结构,至少一个丛集结构通过片上网络模块与全局存储器建立通信连接;每个丛集结构中可以包括直接存储器访问模块和多个计算核,每个直接存储器访问模块和全局存储器通过目标协议总线接入片上网络模块;各直接存储器访问模块,用于执行本公开任意实施例提供的内存原子操作指令的执行方法;片上网络模块,用于响应于第一直接存储器访问模块发送的针对第一读写地址的互斥读指令,执行对第一直接存储器访问模块以及第一读写地址的数据项记录操作;若记录成功,则在全局存储器中获取与第一读写地址匹配的读数据,并将读数据反馈至第一直接存储器访问模块;以及响应于第二直接存储器访问模块发送的针对第二读写地址的互斥写指令,查询是否存储与第二直接存储器访问模块和第二读写地址匹配的目标数据项;若是,则与互斥写操作匹配的指令计算结果写入至全局存储器中的第二读写地址;清除目标数据项,并将写成功响应反馈至第二直接存储器访问模块。
其中,丛集结构可以是片上系统中的多核结构。第一直接存储器访问模块可以是发送针对第一读写地址的互斥读指令的直接存储器访问模块。第一读写地址可以是第一直接存储器访问模块所需读取和写入数据的地址。数据项记录操作可以是对直接存储器访问模块针对读写地址中数据的读取行为的记录操作。目标数据项可以是数据项记录操作所记录的数据项。目标数据项可以包括发送互斥读指令的直接存储器访问模块的设备标识,以及与互斥读指令匹配的读写地址等。第二直接存储器访问模块可以是发送将指令计算结果写入至第二读写地址的互斥写指令的直接存储器访问模块。第二读写地址可以是第二直接存储器访问模块所需读取和写入数据的地址。
在本公开实施例中,可以通过全局存储器以及至少一个丛集结构等组成片上系统,每个丛集结构中可以包括直接存储器访问模块和多个计算核。片上系统中的各丛集结构通过片上网络模块与全局存储器通信连接。每个直接存储器访问模块通过目标协议总线接入片上网络模块,以执行本公开任意实施例提供的内存原子操作指令的执行方法。
具体的,在直接存储器访问模块执行内存原子操作指令的执行方法时,片上网络可以通过目标协议总线接收第一直接存储器访问模块发送的针对第一读写地址的互斥读指令,并进行对第一直接存储器访问模块以及第一读写地址的数据项记录操作。如果记录成功,则在全局存储器中获取与第一读写地址匹配的读数据,并将读数据反馈至第一直接存储器访问模块。
片上网络模块还可以接收第二直接存储器访问模块发送的针对第二读写地址的互斥写指令,进而查询是否存储与第二直接存储器访问模块和第二读写地址匹配的目标数据项,如果确定存储有与第二直接存储器访问模块和第二读写地址匹配的目标数据项,则确定是相同的直接存储器访问模块对第二读写地址进行数据读取与数据写入,并将与互斥写操作匹配的指令计算结果写入至全局存储器中的第二读写地址,进而清除目标数据项,并将写成功响应反馈至第二直接存储器访问模块,以及时清理目标数据项所占用的数据空间,降低记录失败的发生率。
在本公开的一个可选实施例中,片上网络模块,还可以用于:在执行对第一直接存储器访问模块以及第一读写地址的数据项记录操作之后,若记录失败,则将读失败响应反馈至第一直接存储器访问模块。
在本公开实施例中,当片上网络模块对第一直接存储器访问模块以及第一读写地址的数据项记录操作之后,若记录失败,则可以将读失败响应反馈至第一直接存储器访问模块,由第一直接存储器访问模块重新通过目标协议总线向片上网络模块发送针对第一读写地址的互斥读指令,直至接收到目标协议总线反馈的读数据。
在本公开的一个可选实施例中,片上网络模块,还可以用于:在查询是否存储与第二直接存储器访问模块和第二读写地址匹配的目标数据项之后,若否,将写失败响应反馈至第二直接存储器访问模块。
在本公开实施例中,片上网络模块在查询是否存储与第二直接存储器访问模块和第二读写地址匹配的目标数据项之后,如果未查询到与第二直接存储器访问模块和第二读写地址匹配的目标数据项,则确定第二直接存储器访问模块在第二读写地址写入指令计算结果的操作失败,进而将写失败响应反馈至第二直接存储器访问模块,第二直接存储器访问模块返回执行通过目标协议总线发送针对第二读写地址的互斥读指令的操作,直至接收到目标协议总线反馈的写成功响应。
可选的,片上系统的每个丛集结构中可以包括64个相同的计算核,一个丛集结构中计算核可以共享全局存储器,丛集结构内的每个计算核可以访问各自的独享的LM(localmemory,本地存储器),单个丛集结构内共享SM(shared memory,共享存储器)以及全局存储器。内存原子操作指令操作在全局存储器上的地址空间,用于多丛集结构间的同步。每个丛集结构通过目标协议总线(如AXI总线等)接口访问Soc(System on Chip,系统级芯片)上的片上网络模块,进而访问片上的全局存储器。
可选的,每个丛集结构内部会有一个直接存储器访问模块,直接存储器访问模块用于集中处理每个计算核对全局存储器的访问,直接存储器访问模块通过AXI总线访问片上系统的全局存储器。为实现全局存储器上的内存原子操作指令,还可以在直接存储器访问模块中增加内存原子操作模块,用于支持内存原子操作指令的执行。
示例性的,每个计算核将在保留站中数据已准备好的内存原子操作指令发送给直接存储器访问模块的内存原子操作模块,内存原子操作模块通过轮询仲裁从各计算核发来的待处理的内存原子操作指令中选择目标内存原子操作指令进行执行,在执行完目标内存原子操作指令前不会仲裁选择下一条内存原子操作指令。根据内存原子操作指令的使用场景,大部分情况下是各计算核或者丛集结构对同一个全局存储器地址进行操作。为减少丛集结构内同地址内存原子操作指令的无效竞争,直接存储器访问模块内的内存原子操作模块只有在成功执行完一条内存原子操作指令后才会开始执行下一条内存原子操作指令。内存原子操作指令在内存原子操作模块的执行可划分为“互斥读–计算–互斥写”等过程,一条内存原子操作指令的具体的执行流程介绍如下:
步骤1、系统复位后内存原子操作模块进入idle(空闲)状态,之后进入步骤2,即进入req_arb状态。
步骤2、req_arb状态:使能仲裁器,对各计算核发来的待处理内存原子操作指令进行仲裁选择。若仲裁结果为arb_vld有效(仲裁有效响应),则选出目标内存原子操作指令进行执行,状态机进入send_rd状态。若arb_vld无效,则仍处于req_arb状态,在下一节拍时间点的仲裁选择。仲裁器仅在req_arb状态使能,未被仲裁选中执行的内存原子操作指令一直处于等待状态。
步骤3、send_rd状态:接收来自三个方向的内存原子操作指令:1)从req_arb状态中新仲裁选出的指令;2)从wait_rd状态发来的需要重新执行的指令;3)从wait_wr状态发来的需要重新执行的指令。在该状态解析收到的内存原子操作指令,并根据指令内容,发起互斥读指令,其中araddr为rs中存储的读写地址,将arlock(读锁信号)拉高,表示互斥读。若arready(读锁准备信号)拉高,则跳转至wait_rd状态,否则仍处于send_rd状态。
步骤4、wait_rd状态:等待读结果(rdata)和读操作反馈(rresp)。若rresp为exokey即读成功响应,则进入amo_exe状态。若resp为okey即读失败响应,则进入send_rd状态重新执行该目标内存原子操作指令。在没有收到rresp之前,状态机一直处于wait_rd状态。
步骤5、amo_exe状态:根据目标内存原子操作指令的功能,将指令中的rt中存储的值与rdata进行相应计算得到指令计算结果(amo_res),之后进入send_wr状态。
步骤6、send_wr状态:解析目标内存原子操作指令,并根据指令内容,发起互斥写指令,其中awaddr为来自指令中rs中存储的读写地址;awlock(写锁信号)须拉高,表示互斥写;wdata为步骤5计算出的amo_res。若wready(写锁准备信号)拉高,则跳转至wait_wr状态,否则仍处于send_wr状态。
步骤7、等待返回的写操作响应(bresp)。若bresp为exokey即写成功响应,则表示互斥写完成,将rdata返回给对应的目标计算核,然后进入req_arb状态,使能amo_arb进行下一次仲裁选择;若bresp为okey即写失败响应,则表示互斥写失败,需要进入send_rd状态重新执行该目标内存原子操作指令。在没有收到bresp之前,状态机一直处于wait_wr状态。
为支持内存原子操作指令的执行,还需要在片上网络模块中增加monitor逻辑。在收到AXI总线发送的互斥读指令时,片上网络模块会占用一项monitor来记录arid(直接存储器访问模块的设备标识)和araddr,返回rresp为exokey(1),根据地址读到数据返回rdata。若monitor的记录项已被用满(极少情况),则返回rresp为okey(0)。而在收到AXI总线发送的互斥写指令后,片上网络模块会根据写地址awaddr和awid在monitor中做检查,若匹配,则互斥写成功,bresp返回exokey,指令计算结果写入全局存储器,monitor清除目标数据项;若无匹配,则互斥写失败,bresp返回okey,指令计算结果不写入全局存储器。
其中,arlock或awlock信号选择互斥访问(对于AXI4,0为正常访问,1为互斥访问),rresp和bresp指示互斥访问读或写的成功和失败(0—okey—普通访问成功或互斥访问失败,1—exokey—互斥访问成功,2–SLVERR—从机错误,3—DECERR—地址译码错误)。
上述系统可执行本公开任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
根据本公开的实施例,本公开还提供了一种直接存储器访问模块、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例直接存储器访问模块的示意性框图。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,直接存储器访问模块500包括处理器501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储直接存储器访问模块500操作所需的各种程序和数据。处理器501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
直接存储器访问模块500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许直接存储器访问模块500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器501可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器501执行上文所描述的各个方法和处理,例如内存原子操作指令的执行方法。例如,在一些实施例中,内存原子操作指令的执行方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到直接存储器访问模块500上。当计算机程序加载到RAM 503并由处理器501执行时,可以执行上文描述的内存原子操作指令的执行方法的一个或多个步骤。备选地,在其他实施例中,处理器501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行内存原子操作指令的执行方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术及机器学习/深度学习技术、大数据处理技术、知识图谱技术等几大方向。
云计算(cloud computing),指的是通过网络接入弹性可扩展的共享物理或虚拟资源池,资源可以包括服务器、操作系统、网络、软件、应用和存储设备等,并可以按需、自服务的方式对资源进行部署和管理的技术体系。通过云计算技术,可以为人工智能、区块链等技术应用、模型训练提供高效强大的数据处理能力。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开提供的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (16)
1.一种内存原子操作指令的执行方法,由片上系统中的直接存储器访问模块执行,包括:
获取目标计算核发送的目标内存原子操作指令,其中,目标内存原子操作指令中的读写地址为全局存储器上的地址;
通过目标协议总线发送针对所述读写地址的互斥读指令,以从所述读写地址处读取数据,其中,所述目标协议总线具有互斥读写控制功能;
响应于所述目标协议总线反馈的读数据,按照所述目标内存原子操作指令计算与所述读数据匹配的指令计算结果;
通过所述目标协议总线发送针对所述读写地址的互斥写指令,以将所述指令计算结果写入至所述读写地址;
响应于所述目标协议总线反馈的写成功响应,将所述指令计算结果反馈至所述目标计算核。
2.根据权利要求1所述的方法,其中,所述获取目标计算核发送的目标内存原子操作指令,包括:
每当到达节拍时间点,获取目标丛集结构中多个计算核的待处理内存原子操作指令,并在所述待处理内存原子操作指令中进行仲裁选择;
如果仲裁出内存原子操作指令,则获取仲裁出的内存原子操作指令作为目标内存原子操作指令;
如果未仲裁出任一内存原子操作指令,则等待下一节拍时间点继续仲裁,直至获取目标内存原子操作指令。
3.根据权利要求2所述的方法,其中,所述在所述待处理内存原子操作指令中进行仲裁选择,包括:
获取与当前节拍时间点匹配的目标时隙,并获取所述目标时隙所分配的目标计算核;
判断所述目标计算核是否有待处理的内存原子操作指令;
若是,则确定仲裁出内存原子操作指令;否则,确定未仲裁出任一内存原子操作指令。
4.根据权利要求1所述的方法,其中,在所述通过目标协议总线发送针对所述读写地址的互斥读指令之后,还包括:
响应于所述目标协议总线反馈的读失败响应,重新通过所述目标协议总线发送针对所述读写地址的所述互斥读指令,直至接收到所述目标协议总线反馈的读数据。
5.根据权利要求1所述的方法,其中,在所述通过所述目标协议总线发送针对所述读写地址的互斥写指令之后,还包括:
响应于所述目标协议总线反馈的写失败响应,返回执行所述通过所述目标协议总线发送针对所述读写地址的所述互斥读指令的操作,直至接收到所述目标协议总线反馈的写成功响应。
6.根据权利要求5所述的方法,其中,所述目标协议总线为高级可扩展接口总线;
所述通过目标协议总线发送针对所述读写地址的互斥读指令,包括:
通过高级可扩展接口总线发送高电平的读锁信号;
响应于所述高级可扩展接口总线反馈的高电平的读锁准备信号,确定成功发送所述互斥读指令;
通过所述目标协议总线发送针对所述读写地址的互斥写指令,包括:
通过高级可扩展接口总线发送高电平的写锁信号;
响应于所述高级可扩展接口总线反馈的高电平的写锁准备信号,确定成功发送所述互斥写指令。
7.一种内存原子操作指令的执行装置,配置于片上系统中的直接存储器访问模块上,包括:
指令获取模块,被配置为获取目标计算核发送的目标内存原子操作指令,其中,目标内存原子操作指令中的读写地址为全局存储器上的地址;
数据读取模块,被配置为通过目标协议总线发送针对所述读写地址的互斥读指令,以从所述读写地址处读取数据,其中,所述目标协议总线具有互斥读写控制功能;
数据计算模块,被配置为响应于所述目标协议总线反馈的读数据,按照所述目标内存原子操作指令计算与所述读数据匹配的指令计算结果;
数据写入模块,被配置为通过所述目标协议总线发送针对所述读写地址的互斥写指令,以将所述指令计算结果写入至所述读写地址;
数据反馈模块,被配置为响应于所述目标协议总线反馈的写成功响应,将所述指令计算结果反馈至所述目标计算核。
8.根据权利要求7所述的装置,其中,指令获取模块包括仲裁选择单元以及仲裁处理单元,其中,
仲裁选择单元,被配置为每当到达节拍时间点,获取目标丛集结构中多个计算核的待处理内存原子操作指令,并在所述待处理内存原子操作指令中进行仲裁选择;
仲裁处理单元,被配置为如果仲裁出内存原子操作指令,则获取仲裁出的内存原子操作指令作为目标内存原子操作指令;如果未仲裁出任一内存原子操作指令,则等待下一节拍时间点继续仲裁,直至获取目标内存原子操作指令。
9.根据权利要求8所述的装置,其中,仲裁选择单元包括目标计算核获取子单元以及仲裁结果判断子单元,
目标计算核获取子单元,被配置为判断所述目标计算核是否有待处理的内存原子操作指令;
仲裁结果判断子单元,被配置为判断所述目标计算核是否有待处理的内存原子操作指令;若是,则确定仲裁出内存原子操作指令;否则,确定未仲裁出任一内存原子操作指令。
10.根据权利要求7所述的装置,还包括互斥读指令重发模块,互斥读指令重发模块,被配置为响应于所述目标协议总线反馈的读失败响应,重新通过所述目标协议总线发送针对所述读写地址的所述互斥读指令,直至接收到所述目标协议总线反馈的读结果。
11.一种直接存储器访问模块,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
12.一种片上系统,包括:全局存储器和至少一个丛集结构,至少一个丛集结构通过片上网络模块与全局存储器建立通信连接;
每个丛集结构中包括直接存储器访问模块和多个计算核,每个直接存储器访问模块和全局存储器通过目标协议总线接入片上网络模块;
各直接存储器访问模块,用于执行权利要求1-6中任一所述的方法;
片上网络模块,用于响应于第一直接存储器访问模块发送的针对第一读写地址的互斥读指令,执行对所述第一直接存储器访问模块以及所述第一读写地址的数据项记录操作;若记录成功,则在所述全局存储器中获取与所述第一读写地址匹配的读数据,并将所述读数据反馈至所述第一直接存储器访问模块;以及
响应于第二直接存储器访问模块发送的针对第二读写地址的互斥写指令,查询是否存储与所述第二直接存储器访问模块和所述第二读写地址匹配的目标数据项;若是,则将与所述互斥写操作匹配的指令计算结果写入至所述全局存储器中的所述第二读写地址;清除所述目标数据项,并将写成功响应反馈至所述第二直接存储器访问模块。
13.根据权利要求12所述的片上系统,其特征在于,所述片上网络模块,还用于:
在执行对所述第一直接存储器访问模块以及所述第一读写地址的数据项记录操作之后,若记录失败,则将读失败响应反馈至所述第一直接存储器访问模块。
14.根据权利要求12所述的片上系统,其特征在于,所述片上网络模块,还用于:
在查询是否存储与所述第二直接存储器访问模块和所述第二读写地址匹配的目标数据项之后,若否,将写失败响应反馈至第二直接存储器访问模块。
15.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-6中任一项所述的内存原子操作指令的执行方法。
16.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述内存原子操作指令的执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211168224.4A CN115481058A (zh) | 2022-09-23 | 2022-09-23 | 内存原子操作指令的执行方法、装置、访问模块及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211168224.4A CN115481058A (zh) | 2022-09-23 | 2022-09-23 | 内存原子操作指令的执行方法、装置、访问模块及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115481058A true CN115481058A (zh) | 2022-12-16 |
Family
ID=84394990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211168224.4A Pending CN115481058A (zh) | 2022-09-23 | 2022-09-23 | 内存原子操作指令的执行方法、装置、访问模块及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115481058A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107923A (zh) * | 2022-12-27 | 2023-05-12 | 深存科技(无锡)有限公司 | 一种基于bram的多对多高速访存架构和访存系统 |
CN117056255A (zh) * | 2023-10-12 | 2023-11-14 | 沐曦集成电路(上海)有限公司 | 一种原子操作装置、方法、设备及介质 |
CN117407321A (zh) * | 2023-12-13 | 2024-01-16 | 井芯微电子技术(天津)有限公司 | 一种芯片缓存的读写请求处理方法及相关装置 |
CN117453291A (zh) * | 2023-10-26 | 2024-01-26 | 上海合芯数字科技有限公司 | 一种指令转换系统、方法、处理器芯片和计算机设备 |
-
2022
- 2022-09-23 CN CN202211168224.4A patent/CN115481058A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107923A (zh) * | 2022-12-27 | 2023-05-12 | 深存科技(无锡)有限公司 | 一种基于bram的多对多高速访存架构和访存系统 |
CN116107923B (zh) * | 2022-12-27 | 2024-01-23 | 深存科技(无锡)有限公司 | 一种基于bram的多对多高速访存架构和访存系统 |
CN117056255A (zh) * | 2023-10-12 | 2023-11-14 | 沐曦集成电路(上海)有限公司 | 一种原子操作装置、方法、设备及介质 |
CN117056255B (zh) * | 2023-10-12 | 2024-02-27 | 沐曦集成电路(上海)有限公司 | 一种原子操作装置、方法、设备及介质 |
CN117453291A (zh) * | 2023-10-26 | 2024-01-26 | 上海合芯数字科技有限公司 | 一种指令转换系统、方法、处理器芯片和计算机设备 |
CN117407321A (zh) * | 2023-12-13 | 2024-01-16 | 井芯微电子技术(天津)有限公司 | 一种芯片缓存的读写请求处理方法及相关装置 |
CN117407321B (zh) * | 2023-12-13 | 2024-02-13 | 井芯微电子技术(天津)有限公司 | 一种芯片缓存的读写请求处理方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115481058A (zh) | 内存原子操作指令的执行方法、装置、访问模块及系统 | |
US10521393B2 (en) | Remote direct memory access (RDMA) high performance producer-consumer message processing | |
JP3636871B2 (ja) | 並列プロセッサシステム | |
US9715352B2 (en) | Synchronous input/output using a low latency storage controller connection | |
US10521228B2 (en) | Data read-write scheduler and reservation station for vector operations | |
US5428794A (en) | Interrupting node for providing interrupt requests to a pended bus | |
US10871918B2 (en) | Writing composite objects to a data store | |
US10585821B2 (en) | Synchronous input/output command | |
US11579874B2 (en) | Handling an input/output store instruction | |
US10700869B2 (en) | Access control and security for synchronous input/output links | |
US20110320743A1 (en) | Memory ordered store system in a multiprocessor computer system | |
US8819183B2 (en) | Concurrent execution of request processing and analytics of requests | |
CN110851276A (zh) | 一种业务请求处理方法、装置、服务器和存储介质 | |
CN116243983A (zh) | 处理器、集成电路芯片、指令处理方法、电子设备和介质 | |
US7552269B2 (en) | Synchronizing a plurality of processors | |
US20170097919A1 (en) | Peripheral device access using synchronous input/output | |
US20170099255A1 (en) | Synchronous input/output initialization exchange sequences | |
US9898227B2 (en) | Synchronous input/output virtualization | |
CN113033791B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN113641404A (zh) | 程序运行方法、装置、处理器芯片、电子设备和存储介质 | |
CN115617732A (zh) | Apb总线结构、片上系统、车辆及访问方法 | |
CN118093466A (zh) | 外设接口的数据传输方法、装置、设备及存储介质 | |
JPS61241834A (ja) | 演算処理装置 |
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 |