CN115269015B - 基于Atomic指令的共享变量处理系统 - Google Patents

基于Atomic指令的共享变量处理系统 Download PDF

Info

Publication number
CN115269015B
CN115269015B CN202211171488.5A CN202211171488A CN115269015B CN 115269015 B CN115269015 B CN 115269015B CN 202211171488 A CN202211171488 A CN 202211171488A CN 115269015 B CN115269015 B CN 115269015B
Authority
CN
China
Prior art keywords
shared variable
value
state
instruction
atomic
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.)
Active
Application number
CN202211171488.5A
Other languages
English (en)
Other versions
CN115269015A (zh
Inventor
王爽
其他发明人请求不公开姓名
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.)
Muxi Integrated Circuit Nanjing Co ltd
Original Assignee
Muxi Integrated Circuit Nanjing Co ltd
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 Muxi Integrated Circuit Nanjing Co ltd filed Critical Muxi Integrated Circuit Nanjing Co ltd
Priority to CN202211171488.5A priority Critical patent/CN115269015B/zh
Publication of CN115269015A publication Critical patent/CN115269015A/zh
Application granted granted Critical
Publication of CN115269015B publication Critical patent/CN115269015B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种基于Atomic指令的共享变量处理系统,包括K个指令读写模块{A1,A2,…AK},K个Atomic状态控制模块{B1,B2,…BK}和存储模块,每组Ai和Bi独立运行,多组Ai和Bi并行运行。Ai获取第i用户发出的Atomic指令;Bi解析获取共享变量预期值、读地址、写地址和更新信息,基于读地址向存储模块发起读操作,基于更新信息生成共享变量更新值;存储模块基于读操作向Bi返回共享变量当前值;Bi比较共享变量当前值与共享变量预期值,若相同,则基于写地址向存储模块发起写操作,存储模块将共享变量更新值写入对应的写地址。本发明降低了共享变量处理的复杂度,提高了共享变量的处理效率。

Description

基于Atomic指令的共享变量处理系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于Atomic指令的共享变量处理系统。
背景技术
现有技术中,多用户在处理同一变量(即共享变量)时,通常采用线程加锁方式实现。即当某个线程处理此变量时,会先锁住此变量。其他线程的请求会被阻塞,需要不断查询此变量的状态,等待锁定解除。待该线程处理完后,会解锁此变量。其他线程会发起操作请求,当其中一个线程获取到处理权后,会再次锁住此变量。其他线程的请求就会继续被阻塞,依次类推。加锁方式实现多线程共享变量处理使得每个时刻只会有一个线程处理共享变量,确保此变量更新正确,但至少存在以下缺点:(1)处理效率比较低:当某一个线程在执行操作时,必然会阻塞住其他线程,让其他线程处于等待状态。线程之间的切换,以及线程内的每一步操作都会有延时,会导致指令执行时间长,效率低。(2)每个线程需要做的操作复杂:因为采用加锁方式,每次操作都需要先查询状态,然后锁定变量,直到操作完成,最后还需要解锁。因此,加锁方式会要求线程复杂的操作流程。由此可知,现有的共享变量处理方式复杂度高,效率低。
发明内容
本发明目的在于,提供一种基于Atomic指令的共享变量处理系统,降低了共享变量处理的复杂度,提高了共享变量的处理效率。
本发明提供了一种基于Atomic指令的共享变量处理系统,包括K个指令读写模块{A1,A2,…AK} ,K个Atomic状态控制模块{B1,B2,…BK}和存储模块,其中,Ai为第i个指令读写模块,Bi为第i个Atomic状态控制模块,Ai与Bi相连接,Bi与所述存储模块相连接,i的取值范围为1到K,每组Ai和Bi独立运行,多组Ai和Bi并行运行。
Ai用于获取第i用户发出的Atomic指令进行缓存,并将缓存的Atomic指令读取发送给Bi,所述Atomic指令按照预设的数据结构生成,所述预设的数据结构包括共享变量预期值数据段、读地址数据段、写地址数据段和更新信息数据段。
Bi用于解析接收到的Atomic指令,获取共享变量预期值、读地址、写地址和更新信息,基于读地址向所述存储模块发起读操作,基于所述更新信息生成共享变量更新值。
所述存储模块用于基于所述读操作向Bi返回共享变量当前值。
Bi还用于比较共享变量当前值与共享变量预期值,若相同,则基于所述写地址向所述存储模块发起写操作,并向第i用户返回正常完成标志;若不相同,则Bi向第i用户返回异常完成标志。
所述存储模块还用于基于所述写操作将所述共享变量更新值写入对应的写地址。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种基于Atomic指令的共享变量处理系统可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
本发明所述系统能够实现多个用户并行操作同一变量,通过并行处理,避免了多个用户的阻塞问题,可极大缩短多个用户等待、指令执行的时间,显著提高了系统多个用户指令执行的效率。此外,所述系统采用无锁的同步机制,支持每个用户独立操作。各用户只需要做指令读和写操作,而不需要再做状态查询、锁定和解锁操作,这样简化了主机执行共享变量处理的操作的复杂度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本发明实施例提供的基于Atomic指令的共享变量处理系统示意图;
图2为本发明实施例提供的Atomic状态控制模块的状态变换示意图;
图3为本发明实施例提供的存储模块示意图;
图4为本发明实施例一个用户对共享变量进行操作的框架图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种基于Atomic指令的共享变量处理系统的具体实施方式及其功效,详细说明如后。
本发明实施例提供了一种基于Atomic(原子)指令的共享变量处理系统,如图1所示,包括K个指令读写模块{A1,A2,…AK} ,K个Atomic状态控制模块{B1,B2,…BK}和存储模块,其中,Ai为第i个指令读写模块,Bi为第i个Atomic状态控制模块,Ai与Bi相连接,Bi与所述存储模块相连接,i的取值范围为1到K,每组Ai和Bi独立运行,逐个处理对应的第i用户发出的Atomic指令;多组Ai和Bi并行运行,实现在互不影响的状态下,并行对共享变量进行处理。可以理解的是,计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法,即某个线程进入该方法后,就不会被中断,直到其执行完成。存储模块用于存储共享变量。
Ai用于获取第i用户发出的Atomic指令进行缓存,并将缓存的Atomic指令读取发送给Bi,第i用户具体可以通过线程与Ai和Bi交互。所述Atomic指令按照预设的数据结构生成,所述预设的数据结构包括共享变量预期值数据段、读地址数据段、写地址数据段和更新信息数据段。
Bi用于解析接收到的Atomic指令,获取共享变量预期值、读地址、写地址和更新信息,基于读地址向所述存储模块发起读操作,基于所述更新信息生成共享变量更新值。共享变量预期值用于和当前存储模块中存储的对应的共享变量值做比较,若一致,则Atomic指令可以执行对应的写操作。读地址为用于读取共享变量的地址,优选的,读地址的地址范围和存储模块的存储空间相同。写地址为用于更新共享变量的地址,优选的,写地址的地址范围和存储模块的存储空间相同,需要说明的是,读地址和写地址可以相同,也可以不同。
作为一种实施例,Bi对应的共享变量预期值为Bi最近一次读取或更新后的共享变量值,或者为用户预设的指定值。所述存储模块用于基于所述读操作向Bi返回共享变量当前值。 Bi还用于比较共享变量当前值与共享变量预期值,若相同,则基于所述写地址向所述存储模块发起写操作,并向第i用户返回正常完成标志;若不相同,则Bi向第i用户返回异常完成标志。所述存储模块还用于基于所述写操作将所述共享变量更新值写入对应的写地址。
需要说明的是,每一组Ai和Bi独立运行,基于共享变量预期值、读地址、写地址和更新信息独立判断共享变量当前值是否和更改条件,若符合,则直接进行更新,避免了多个用户的阻塞问题,可极大缩短多个用户等待、指令执行的时间,显著提高了系统多个用户指令执行的效率。此外,所述系统采用无锁的同步机制,支持每个用户独立操作。各用户只需要做指令读和写操作,而不需要再做状态查询、锁定和解锁操作,这样简化了主机执行共享变量处理的操作的复杂度。
随着对数据的计算需求越来越高,GPU已成为算力基础设施重要的组成部分。GPU芯片拥有数量巨大的计算核心和强大的指令集,广泛应用于数据中心、人工智能等众多领域中。GPU芯片可以支持多个用户的指令做各种操作,例如对同一变量的加、减等操作,本发明所述系统可以应用于GPU中,提高GPU的共享变量处理的效率,降低处理发复杂度。可以理解的是,本发明所述系统还可以用户其他设计多线程处理共享变量的应用场景,在此不再一一列举。
作为一种实施例,所述更新信息数据段用于存储计算初始值、计算类型、计算操作值、执行次数阈值、执行间隔时间中的一个或多个,所述计算初始值、计算类型、计算操作值用于确定共享变量更新值。所述计算初始值与共享变量预期值相等或者不等;所述计算类型包括加法、减法、乘法、清零、自加预设的值和自减预设的值等。例如,计算类型为自加1,则新的变量值为计算初始值数据加1。计算类型为自减1,则新的变量值为计算初始值数减1。计算操作值为用于计算的操作值,例如,计算类型为加操作,则共享变量更新值为计算初始值加操作数据。计算为减操作,则共享变量更新值为计算初始值减操作数据。
作为一种实施例,所述预设的数据结构还包括执行次数阈值数据段和执行间隔时间数据段,执行次数阈值数据段用于存储执行次数阈值(Retry次数),执行间隔时间数据段用于存储执行间隔时间(Retry间隔时间),执行次数阈值用于确定共享变量当前值与共享变量预期值的比较次数阈值,执行间隔时间用于确定两次共享变量当前值与共享变量预期值比较的间隔时间,如果Retry次数=0,则表明计算共享变量当前值和共享变量预期值一次比较不相等之后,不再发起读操作,直接返回异常完成标志。如果Retry次数不为0,则需要不断发起读操作,直至共享变量当前值和共享变量预期值相等,或者达到Retry次数为止。若Retry间隔时间=0,则表示无间隔,连续做Retry。
作为一种实施例,Ai包括缓存单元,所述缓存(Buffer)单元为先入先出缓存器FIFO,例如深度为M byte,地址范围为0-M-1byte, 当Atomic指令写到buffer最后一个地址M-1后,会重新从0开始。先Atomic写入的指令会最先被读出。当所述缓存单元为非空状态且Bi为空闲状态时,Ai按照先入先出的顺序向Bi发送一个Atomic指令。指令读写模块主要负责Atomic指令的写入、缓存和读出。优选的,Ai按照预设的指令长度L向Bi发送Atomic指令,所述Atomic指令为L的整数倍,即Ai每次发送的指令长度为L,L最小为1byte,最大为Atomic指令长度。
作为一种实施例,Bi的状态包括空闲状态、指令解析状态、读操作状态、等待数据返回状态、比较状态、写操作状态、重新执行状态和完成状态,具体状态转换图如图2所示。
Bi初始状态为空闲状态。当Bi接收到Ai发送的Atomic指令后进入指令解析状态,获取共享变量预期值、读地址、写地址和更新信息,指令解析完成后,根据读地址向存储模块发起读操作,Bi进入等待数据返回状态,Bi同时并行发起计算,根据更新信息生成共享变量更新值。需要说明的是,Bi在读取共享变量当前值进行对比的过程中已经同步计算共享变量更新值,如果符合预期,则能快速更新对应的共享变量值,极大缩短了更新共享变量的判断时间,由于这个判断时间足够短,因此可以保证比较共享变量当前值和共享变量预期值符合预期后,在更新共享变量时,共享变量仍然处于符合预期的状态,不会受其他用户操作的影响。当Bi接收到存储模块返回的共享变量当前值之后,进入比较状态,比较共享变量当前值和共享变量预期值:
若相同,则Bi进入写操作状态,将共享变量更新值和写地址发送给存储模块更新对应的共享变量,写操作完成后,Bi进入完成状态,返回正常完成标志,再切换回空闲状态,等待下一个Atomic指令。
若不相同,则Bi进入重新执行状态,每间隔执行间隔时间,再次根据读地址向存储模块发起读操作,重新进入等待数据返回状态,在执行次数阈值内,如果共享变量当前值和共享变量预期值相同,则Bi进入写操作状态,若达到执行次数阈值共享变量当前值和共享变量预期值仍不相同,则进入完成状态,返回异常完成标志,再切换回空闲状态,等待下一个Atomic指令。
如图3所示示例,存储模块主要用于做共享变量的存储、读操作和写操作,读操作和写操作是独立进行的,因此,可以供不同用户独立并行操作,互不影响。存储中的变量初始为确定值,默认为0或者其他指定值。存储的方式可以为寄存器、静态随机存取存储器(Static Random-Access Memory,简称SRAM)、双倍速率同步动态随机存储器 (DoubleData Rate,简称DDR)、高带宽存储器(HBM)等。所述存储模块的存储空间范围为读地址和写地址所能表示的最大位宽,存储的数据位宽等于Atomic指令中的计算初始值位宽。当存储模块收到Atomic状态控制模块发来的读操作后,会根据读地址从存储中读取变量值。读数据的延迟取决于存储本身,最小可以设置为0,即可以立即返回读数据。存储模块会将变量数据返回给Atomic状态控制模块,完成此次读操作。当收到Atomic状态控制模块发来的写操作后,存储模块会根据写地址和写数据,将新的变量数据写入对应地址的存储单元中。
多个用户可以对存储模块中的共享变量进行独立并行操作,其中一个用户对共享变量进行操作的框架图如图4所示,所述系统还包括存储有计算机程序的存储器和处理器,所述处理器执行所述计算机程序时,实现以下步骤:
步骤S1、指令读写模块接收用户发送的Atomic指令,写入对应的缓存单元中。
步骤S2、当指令缓存单元为非空时,表明已经有新指令写入,指令读写模块将一段指令发送到Atomic状态控制模块。每次发送的指令长度为L。
步骤S3、Atomic状态控制模块解析Atomic指令,获取到Atomic指令的共享变量预期值、读地址、写地址、计算初始值、计算类型、计算操作值、Retry次数、Retry间隔时间等信息,然后并行执行步骤S4和步骤S4’。
步骤S4’、则根据计算初始值、计算类型、计算操作值等做计算,得到共享变量更新值,进入步骤S5。需要说明的是,步骤S4’也可以在步骤S6-步骤S8之间执行。
步骤S4、根据Atomic指令的读地址发起读数据操作,进入步骤S5。
步骤S5、存储模块收到读操作后,根据读地址从对应的共享变量存储中读出共享变量当前值。并将共享变量当前值返回给Atomic状态控制模块。
步骤S6、将返回的共享变量当前值和Atomic指令携带的共享变量预期值做比较,如果两值相等,则进入步骤S8,否则进入步骤S7;
步骤S7、根据Atomic指令携带的Retry次数和当前已经读的次数做比较。如果没有达到Retry次数,则返回步骤S4。如果已经到达Retry次数,则返回异常完成标志,结束流程。
步骤S8、存储模块根据写地址,把共享变量更新值写入对应的变量存储中。同时,Atomic状态控制模块回到完成状态,向用户发送正常完成标志,结束流程。
用户收到正常完成标志或异常完成标志之后,根据状态信息,可以选择继续向Atomic指令读写模块写入新的Atomic指令或者停止写入。
以下通过两个具体实施例对本发明进行进一步说明:
实施方式1:
某一用户需要对地址0x16的变量做加1操作。共享变量预期值为8。用户发送的Atomic指令信息包括:读地址为0x16、写地址为0x16、计算类型为加1、共享变量预期值为8、Retry次数为1、Retry间隔时间为1us、计算初始值为8等。Atomic指令长度设置为32Byte。
初始状态下,缓存单元中没有Atomic指令,地址为0。缓存单元深度大小为1MByte。因此,最新的Atomic指令会被写到缓存单元的0-31B地址。
当缓存单元非空时,表明已经有指令写入到缓存单元中。此时,指令读写模块将一个Atomic指令送到Atomic状态控制模块。本实施方式中,每次发送的指令长度为16B,2次发完。
Atomic状态控制模块做Atomic指令的解析。解析出Atomic指令的计算类型、共享变量预期值、计算初始值、读写地址、Retry次数等信息。
Atomic状态控制模块根据Atomic指令的读地址发起读数据操作。
存储模块收到读操作后,从地址0x16的变量存储中读出共享变量当前值8,并将8返回给Atomic状态控制模块。
Atomic状态控制模块根据返回的共享变量当前值和Atomic指令携带的共享变量预期值做比较。
因为都是8,两值相等,则根据计算类型和计算初始值做计算,当前的计算类型是加1,因此共享变量更新值为8+1=9,把计算后的新值9发给存储模块。对应地址为0x16。需要说明的是,计算共享变量更新值的步骤也可提前完成,以缩短共享变量的更新时间,例如在解析得到计算类型、共享变量预期值、计算初始值、读写地址、Retry次数等信息之后就执行获取共享变量更新值的步骤,以缩短共享变量更新时间。
存储模块把9写入地址0x16的变量存储中。同时,Atomic状态控制模块回到完成状态。
Atomic状态控制模块把指令完成状态给用户,同时停止当前Atomic的操作。当前指令完成状态是正常完成。
用户收到完成状态后,可选择继续写入新的Atomic指令或者停止写入。
实施方式2:
某一用户要对地址0x200的变量做减法操作。共享变量预期值为0x40。因此,用户发送的Atomic指令信息包括:读地址为0x200、写地址为0x200、计算类型为减法、共享变量预期值为0x40、Retry次数为10、Retry间隔时间为1us、计算初始值为0x40,计算操作值为0x30等。Atomic指令长度为64Byte。
本实施方式中,缓存单元中之前有Atomic指令,地址已经执行到0x500。缓存单元深度大小为1MByte。因此,最新的存入的Atomic指令会被写到缓存单元的0x500-0x540地址。
当指令读写模块的缓存单元非空时,表明已经有指令写入到缓存单元中。此时,指令读写模块将一个指令送到Atomic状态控制模块。每次发送的指令长度为16B,4次发完。
Atomic状态控制模块做Atomic指令的解析。解析出Atomic指令的计算类型、共享变量预期值、计算初始值、读地址、写地址、Retry次数、Retry时间间隔等信息。
Atomic状态控制模块根据Atomic指令的地址发起读数据操作。
存储模块收到读操作后,从地址0x200的变量存储中读出共享变量当前值0x35。并把0x30返回给Atomic状态控制模块。
Atomic状态控制模块将返回的共享变量当前值和Atomic指令携带的共享变量预期值做比较。
因为共享变量当前值0x35和共享变量预期值0x40不等,则等待1us(Retry间隔时间)后,发起第2次读操作。重新执行读操作和共享变量当前值与共享变量预期值的对比步骤。
假设读取到的共享变量当前值为0x36和共享变量预期值0x40仍不等,则等待1us(Retry间隔时间)后,发起第3次读操作。重新执行读操作和共享变量当前值与共享变量预期值的对比步骤。
依次重复,当读到第9次,共享变量当前值返回0x40。此值和共享变量预期值0x40相等。
则根据计算初始值和计算类型做计算,当前的计算类型是减法,因此共享变量更新值为0x40-0x30=0x10。并把计算后的共享变量更新值0x10发给存储模块。对应写地址为0x200。需要说明的是,计算共享变量更新值的步骤也可提前完成,例如在解析得到计算类型、共享变量预期值、计算初始值、读写地址、Retry次数等信息之后就执行获取共享变量更新值的步骤,以缩短共享变量更新时间。
存储模块把0x10写入地址0x200的变量存储中。同时,Atomic状态控制模块回到完成状态。
Atomic状态控制模块把指令完成状态给用户,同时停止Atomic指令对应的操作。当前指令完成状态是正常完成。
用户收到完成状态后,可选择继续执行写入新的Atomic指令或者停止写入。
本发明实施例所述系统能够实现多个用户并行操作同一变量,通过并行处理,避免了多个用户的阻塞问题,可极大缩短多个用户等待、指令执行的时间,显著提高了系统多个用户指令执行的效率。此外,所述系统采用无锁的同步机制,支持每个用户独立操作。各用户只需要做指令读和写操作,而不需要再做状态查询、锁定和解锁操作,这样简化了主机执行共享变量处理的操作的复杂度。
需要说明的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (10)

1.一种基于Atomic指令的共享变量处理系统,其特征在于,
包括K个指令读写模块{A1,A2,…AK} ,K个Atomic状态控制模块{B1,B2,…BK}和存储模块,其中,Ai为第i个指令读写模块,Bi为第i个Atomic状态控制模块,Ai与Bi相连接,Bi与所述存储模块相连接,i的取值范围为1到K,每组Ai和Bi独立运行,多组Ai和Bi并行运行;
Ai用于获取第i用户发出的Atomic指令进行缓存,并将缓存的Atomic指令读取发送给Bi,所述Atomic指令按照预设的数据结构生成,所述预设的数据结构包括共享变量预期值数据段、读地址数据段、写地址数据段和更新信息数据段;
Bi用于解析接收到的Atomic指令,获取共享变量预期值、读地址、写地址和更新信息,基于读地址向所述存储模块发起读操作,基于所述更新信息生成共享变量更新值;
所述存储模块用于基于所述读操作向Bi返回共享变量当前值;
Bi还用于比较共享变量当前值与共享变量预期值,若相同,则基于所述写地址向所述存储模块发起写操作,并向第i用户返回正常完成标志;若不相同,则Bi向第i用户返回异常完成标志;
所述存储模块还用于基于所述写操作将所述共享变量更新值写入对应的写地址。
2.根据权利要求1所述的系统,其特征在于,
Bi对应的共享变量预期值为Bi最近一次读取或更新后的共享变量值,或者为用户预设的指定值。
3.根据权利要求1所述的系统,其特征在于,
所述更新信息数据段用于存储计算初始值、计算类型、计算操作值、执行次数阈值、执行间隔时间中的一个或多个,所述计算初始值、计算类型、计算操作值用于确定共享变量更新值。
4.根据权利要求3所述的系统,其特征在于,
所述计算初始值与共享变量预期值相等或者不等;所述计算类型包括加法、减法、乘法、清零、自加预设的值和自减预设的值。
5.根据权利要求3所述的系统,其特征在于,
所述预设的数据结构还包括执行次数阈值数据段和执行间隔时间数据段,执行次数阈值用于确定共享变量当前值与共享变量预期值的比较次数阈值,执行间隔时间用于确定两次共享变量当前值与共享变量预期值比较的间隔时间。
6.根据权利要求1所述的系统,其特征在于,
Ai包括缓存单元,所述缓存单元为先入先出缓存器,当所述缓存单元为非空状态且Bi为空闲状态时,Ai按照先入先出的顺序向Bi发送一个Atomic指令。
7.根据权利要求6所述的系统,其特征在于,
Ai按照预设的指令长度L向Bi发送Atomic指令,所述Atomic指令为L的整数倍。
8.根据权利要求5所述的系统,其特征在于,
Bi的状态包括空闲状态、指令解析状态、读操作状态、等待数据返回状态、比较状态、写操作状态、重新执行状态和完成状态;
Bi初始状态为空闲状态;
当Bi接收到Ai发送的Atomic指令后进入指令解析状态,获取共享变量预期值、读地址、写地址和更新信息,指令解析完成后,根据读地址向存储模块发起读操作,Bi进入等待数据返回状态,Bi同时并行发起计算,根据更新信息生成共享变量更新值;
当Bi接收到存储模块返回的共享变量当前值之后,进入比较状态,比较共享变量当前值和共享变量预期值:
若相同,则Bi进入写操作状态,将共享变量更新值和写地址发送给存储模块更新对应的共享变量,写操作完成后,Bi进入完成状态,返回正常完成标志,再切换回空闲状态;
若不相同,则Bi进入重新执行状态,每间隔执行间隔时间,再次根据读地址向存储模块发起读操作,重新进入等待数据返回状态,在执行次数阈值内,如果共享变量当前值和共享变量预期值相同,则Bi进入写操作状态,若达到执行次数阈值共享变量当前值和共享变量预期值仍不相同,则进入完成状态,返回异常完成标志,再切换回空闲状态。
9.根据权利要求1所述的系统,其特征在于,
所述存储模块的存储空间范围为读地址和写地址所能表示的最大位宽,存储的数据位宽等于Atomic指令中的计算初始值位宽。
10.根据权利要求1所述的系统,其特征在于,
所述存储模块实现为寄存器、SRAM、DDR或HBM。
CN202211171488.5A 2022-09-26 2022-09-26 基于Atomic指令的共享变量处理系统 Active CN115269015B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211171488.5A CN115269015B (zh) 2022-09-26 2022-09-26 基于Atomic指令的共享变量处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211171488.5A CN115269015B (zh) 2022-09-26 2022-09-26 基于Atomic指令的共享变量处理系统

Publications (2)

Publication Number Publication Date
CN115269015A CN115269015A (zh) 2022-11-01
CN115269015B true CN115269015B (zh) 2022-12-02

Family

ID=83756355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211171488.5A Active CN115269015B (zh) 2022-09-26 2022-09-26 基于Atomic指令的共享变量处理系统

Country Status (1)

Country Link
CN (1) CN115269015B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117056255B (zh) * 2023-10-12 2024-02-27 沐曦集成电路(上海)有限公司 一种原子操作装置、方法、设备及介质
CN117407182B (zh) * 2023-12-14 2024-03-12 沐曦集成电路(南京)有限公司 一种基于Poll指令的进程同步方法、系统、设备及介质
CN117407181B (zh) * 2023-12-14 2024-03-22 沐曦集成电路(南京)有限公司 一种基于屏障指令的异构计算进程同步方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742785A (en) * 1992-12-18 1998-04-21 International Business Machines Corporation Posting multiple reservations with a conditional store atomic operations in a multiprocessing environment
CN102207916A (zh) * 2011-05-30 2011-10-05 西安电子科技大学 一种基于指令预取的多核共享存储器控制设备
WO2017055742A1 (fr) * 2015-10-02 2017-04-06 Upmem Mise en oeuvre d'une operation atomique sur un processeur mono-coeur multi-fils
CN114565503A (zh) * 2022-05-03 2022-05-31 沐曦科技(北京)有限公司 Gpu指令数据管理的方法、装置、设备及存储介质
CN114968616A (zh) * 2022-04-21 2022-08-30 中国人民解放军军事科学院国防科技创新研究院 一种用于传感器数据的多进程间零拷贝通信方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742785A (en) * 1992-12-18 1998-04-21 International Business Machines Corporation Posting multiple reservations with a conditional store atomic operations in a multiprocessing environment
CN102207916A (zh) * 2011-05-30 2011-10-05 西安电子科技大学 一种基于指令预取的多核共享存储器控制设备
WO2017055742A1 (fr) * 2015-10-02 2017-04-06 Upmem Mise en oeuvre d'une operation atomique sur un processeur mono-coeur multi-fils
CN114968616A (zh) * 2022-04-21 2022-08-30 中国人民解放军军事科学院国防科技创新研究院 一种用于传感器数据的多进程间零拷贝通信方法及装置
CN114565503A (zh) * 2022-05-03 2022-05-31 沐曦科技(北京)有限公司 Gpu指令数据管理的方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN115269015A (zh) 2022-11-01

Similar Documents

Publication Publication Date Title
CN115269015B (zh) 基于Atomic指令的共享变量处理系统
US11386065B2 (en) Database concurrency control through hash-bucket latching
US8108659B1 (en) Controlling access to memory resources shared among parallel synchronizable threads
US7958149B2 (en) Computer program and product for append mode insertion of rows into tables in database management systems
US11714801B2 (en) State-based queue protocol
US8954681B1 (en) Multi-stage command processing pipeline and method for shared cache access
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US20070186069A1 (en) Coordinating Synchronization Mechanisms using Transactional Memory
US11941429B2 (en) Persistent multi-word compare-and-swap
KR20140069245A (ko) 트랜잭셔널 메모리 동작들을 수행하도록 구성된 프로세서
US20220012225A1 (en) Concurrency control method of database transaction combining optimistic lock and pessimistic lock
CN111026771B (zh) 一种保证缓存与数据库数据一致的方法
US7353342B1 (en) Shared lease instruction support for transient blocking synchronization
US6941308B1 (en) Methods and apparatus for accessing a doubly linked list in a data storage system
CN108733585B (zh) 缓存系统及相关方法
US20120059997A1 (en) Apparatus and method for detecting data race
CN113220490A (zh) 异步写回持久化内存的事务持久化方法及系统
CN111373389B (zh) 数据存储系统以及用于提供数据存储系统的方法
US11176039B2 (en) Cache and method for managing cache
CN113377549B (zh) 一种队列数据控制方法、系统及队列数据结构
CN112114757B (zh) 对象存储系统中的存储方法及系统、计算设备和介质
US10366049B2 (en) Processor and method of controlling the same
US20220334918A1 (en) Method and system for ensuring failure atomicity in non-volatile memory
US7447875B1 (en) Method and system for management of global queues utilizing a locked state
CN117407182B (zh) 一种基于Poll指令的进程同步方法、系统、设备及介质

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