CN117389625B - 基于主动中断指令的进程同步方法、系统、设备及介质 - Google Patents
基于主动中断指令的进程同步方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN117389625B CN117389625B CN202311685211.9A CN202311685211A CN117389625B CN 117389625 B CN117389625 B CN 117389625B CN 202311685211 A CN202311685211 A CN 202311685211A CN 117389625 B CN117389625 B CN 117389625B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- instruction
- active
- active interrupt
- processor
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 139
- 230000008569 process Effects 0.000 title claims abstract description 100
- 238000012545 processing Methods 0.000 claims abstract description 45
- 238000004590 computer program Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 230000010365 information processing Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 abstract description 4
- 230000005856 abnormality Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000000875 corresponding effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/327—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
Abstract
本发明公开了基于主动中断指令的进程同步方法、系统、设备及介质,属于数据处理领域,方法包括:将主动中断指令写入第一处理器的指令缓存中,主动中断指令由第二处理器预先构造,主动中断指令包括指令识别码、主动中断信息,读取指令缓存中的指令并按顺序解析,响应于解析出主动中断指令,将主动中断指令进一步解析,得到主动中断指令的识别码及主动中断信息,主动中断信息经过调度被发送至中断处理模块,中断处理模块基于主动中断信息处理主动中断。本发明改变了以往操作系统中,中断仅仅用于预期之外的软硬件异常或者外部设备请求,主动把中断指令加入系统中断之中,这种主动中断指令可用于多进程通知与同步。
Description
技术领域
本公开实施例涉及数据处理领域,具体地涉及一种基于主动中断指令的进程同步方法、系统、设备及介质。
背景技术
异构计算(Heterogeneous Computing),主要指包含不同体系架构和类型指令集的计算单元进行联合计算,不同的计算单元适用于不同的计算场景,为获得更加高效的计算性能,需要将不同类型的计算任务分配给合理的计算单元。在AI领域,有CPU+GPU、CPU+FPGA、CPU+NPU等不同的计算平台,例如CPU适合串行计算与逻辑调度等场景,而GPU、FPGA或NPU等特定优化的加速器则适合矩阵计算等并行计算任务。
在异构加速芯片计算需求越来越大的背景下,其性能瓶颈就在于处理多进程之间的同步与通信。但现有的同步与通信机制通常是使用原子操作和旗语(Semaphore),这两种方式均受限于内存读写速度,并且CPU无法感知,当进程数量以指数增长的时候,处理速度明显下降。
发明内容
本发明的目的在于提供一种基于主动中断指令的进程同步方法、系统、设备及介质,以便于至少部分地解决上述问题。
根据本公开的一个方面,提出一种基于主动中断指令的进程同步方法,包括:
将主动中断指令写入第一处理器的指令缓存中,所述主动中断指令由第二处理器预先构造,所述主动中断指令包括指令识别码、主动中断信息,
读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息,
所述主动中断信息经过调度被发送至中断处理模块,
所述中断处理模块基于所述主动中断信息处理所述主动中断。
在一些实施例中,该方法还包括,所述第一处理器为异构加速芯片,所述第二处理器为CPU。
在一些实施例中,该方法还包括,所述指令缓存区为FIFO结构。
在一些实施例中,该方法还包括,所述主动中断信息至少包括中断发送端ID、第一处理器的核ID、当前进程ID和中断发生的时间戳信息。
在一些实施例中,该方法还包括,所述主动中断信息和其他中断信息经过调度后按照顺序被发送至中断处理模块,
所述其他中断包括系统异常中断、外部设备请求。
在一些实施例中,该方法还包括,所述处理所述主动中断,具体为所述第二处理器基于所述主动中断信息判断是否有新的进程,若是则启动或切换至新的进程,若否则继续执行原进程。
根据本公开的另一个方面,提出一种基于主动中断指令的进程同步系统,包括:
指令写入模块,用于将主动中断指令写入第一处理器的指令缓存中,所述主动中断指令由第二处理器预先构造,所述主动中断指令包括指令识别码、主动中断信息,
指令读写模块,用于接收指令并将指令送至主动中断指令控制模块,
主动中断指令控制模块,用于读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息,并将所述主动中断指令的识别码及主动中断信息发送至中断信息发送模块,
中断信息发送模块,用于调度中断信息并按照顺序发送中断信息至中断信息处理模块,
中断处理模块,用于基于所述主动中断信息处理所述主动中断。
在一些实施例中,所述第一处理器为异构处理芯片,所述第二处理器为CPU。
在一些实施例中,所述指令缓存区为FIFO结构。
在一些实施例中,所述主动中断信息至少包括中断发送端ID、第一处理器的核ID、当前进程ID和中断发生的时间戳信息。
在一些实施例中,所述中断信息包括主动中断信息和其他中断信息,所述其他中断包括系统异常中断、外部设备请求。
在一些实施例中,所述处理所述主动中断,具体为所述第二处理器基于所述主动中断信息判断是否有新的进程,若是则启动或切换至新的进程,若否则继续执行原进程。
本申请实施例还提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器运行时执行如上任一实施例方法中的步骤。
本公开采用一种主动中断指令管理,改变了以往操作系统中,中断仅仅用于预期之外的软硬件异常或者外部设备请求,主动把中断指令加入系统中断之中,这种主动中断指令可用于多进程通知与同步。
本公开的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
图1为本申请实施例提供的基于主动中断指令的进程同步方法的框图。
图2为本申请实施例提供的基于主动中断指令的进程同步系统的框图。
图3为本申请实施例提供的电子设备的结构示意图。
实施方式
下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
需要说明的是,在本发明的描述中,术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示对本发明结构的说明,仅是为了便于描述本发明的简便,而不是指示或暗示所指的系统或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
对于本技术方案中的“第一”和“第二”,仅为对相同或相似结构,或者起相似功能的对应结构的称谓区分,不是对这些结构重要性的排列,也没有排序、或比较大小、或其他含义。
另外,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,连接可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个结构内部的连通。对于本领域的普通技术人员而言,可以根据本发明的总体思路,联系本方案上下文具体情况理解上述术语在本发明中的具体含义。
实施例一
在异构计算平台上,需要有合适的同步方法来完成不同处理器之间的进程同步。以GPU(Graphics Processing Unit,图形处理单元)为例,GPU是一种专门设计用于处理图形和图像计算的硬件设备。然而,随着计算需求的不断增加,GPU 的用途已经扩展到了更广泛的计算领域,如科学计算、机器学习和深度学习等。GPU 并发进程是指 GPU 在处理任务时能够同时执行多个进程的能力。与传统的中央处理单元(CPU)不同,GPU 通常拥有大量的核心,每个核心都能够独立执行指令。这使得 GPU 能够在相同的时间内执行大量的计算任务,从而加速并行计算。
GPU 并发进程的特点包括:
(1). 大规模并行性: 一般情况下,一颗 GPU 内含有数百甚至数千个计算核心,每个核心都能够同时执行不同的指令。这使得 GPU 能够同时处理大量的任务,从而在并行计算任务中表现出色。
(2). SIMD(Single Instruction, Multiple Data)架构: GPU 的计算核心通常采用 SIMD 架构,即一条指令可以同时作用于多个数据元素。这对于图像处理、向量运算等密集计算非常有用。GPU 能够智能地将不同的指令调度到不同的核心上执行,从而最大程度地利用计算资源,提高计算效率。
(3). 数据并行和模式并行: GPU 可以同时执行不同类型的并行,包括数据并行(多个进程处理相同任务,但操作不同数据)和模式并行(多个进程处理不同任务)。
处理器的高并发进程设计使得其在各种计算密集型任务中表现出色,能够加速科学计算、图像处理、机器学习训练等各种应用。然而,要充分发挥 GPU 的性能,开发者需要适当地将计算任务分解和优化,以最大程度地利用并发性能。
在计算需求越来越大的背景下,其性能瓶颈就在于处理多进程之间的同步与通信。但现有的同步与通信机制通常是使用原子操作和旗语(Semaphore),这两种方式均受限于内存读写速度,并且CPU无法感知,当进程数量以指数增长的时候,处理速度明显下降,并且存在很多缺陷。例如资源竞争,当多个进程或线程同时访问GPU资源(如内存、计算核心等)时,可能会导致资源竞争问题。由于GPU资源有限,竞争可能导致性能下降甚至死锁。例如额外的调度和同步开销,在GPU上调度和同步线程的开销较大。虽然GPU可以高效地执行并行任务,但线程之间的同步和调度可能导致额外的延迟和开销,降低性能。再如并发错误难以调试,在GPU多进程高并发的环境下,出现并发错误(如竞争条件、死锁等)可能更难以调试和复现。由于线程之间的交错执行,错误可能不稳定地出现,增加了定位和修复问题的难度。此外也会出现一致性和可靠性的问题,在多进程环境中,确保数据的一致性和计算的可靠性变得更加复杂。不正确的同步操作可能导致意外的结果,甚至崩溃。
针对现有多进程同步方式存在的效率较低问题,本公开采用一种基于主动中断(Interrupt)指令的GPU同步方法,改变了以往操作系统中,中断仅仅用于预期之外的软硬件异常或者外部设备请求,主动把Interrupt指令加入系统中断之中,这种Interrupt指令可用于多进程通知与同步。
具体地,请参阅图1,为本公开提供的一种基于主动中断指令的GPU进程同步方法。具体步骤如下:
步骤S1,将主动中断指令写入第一处理器的指令缓存中。
用户(本实施例中指第一处理器CPU)根据需要预先构造主动Interrupt指令,会将其写入GPU的指令读写模块的指令缓存中。
在一些实施例中,主动Interrupt指令包含如下信息:(1)主动Interrupt指令识别码,GPU的指令缓存中除了主动Interrupt指令之外,同时会处理其他host发来的指令,需要一个指令识别码来对上述指令做区分,所以主动Interrupt指令需要一个指令识别码,用于标识该指令为主动Interrupt指令。(2)主动中断信息,用于CPU在处理中断的时候,根据携带的主动Interrupt指令信息,来做出相应的动作。
在一些实施例中,主动Interrupt指令携带的中断信息包括client id(用于记录中断发送端的设备id)、source id(用于记录多核GPU的处理器id)、pass id(用于记录当前进程)、time stamp(用于记录中断发生时的时间戳信息)等等,可以理解的是可以根据实际需要修改或增加上述中断信息,本实施例不做限制。
步骤S2,读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息。步骤S3,所述主动中断信息经过调度被发送至中断处理模块。
最新的指令会被写到指令缓存(buffer)下一个地址。在一些实施例中指令缓存是一个先入先出的缓存,深度大小为M byte,地址范围为0~M-1 Byte。当指令写到buffer最后一个地址M-1后,会重新从0开始。先写入的指令会最先被读出。
当指令缓存非空时,就开始读指令,并按照顺序解析,指令读写模块识别到这是一笔Interrupt指令之后,会把指令从指令缓存中读出,发给Interrupt状态控制模块,做进一步解析。每次发送的长度为L,L最小为1Byte,最大为Interrupt指令长度。
在一些实施例中,Interrupt状态控制模块主要做Interrupt指令的解析、中断信息发送。首先,在初始状态下,Interrupt状态控制模块处于空闲状态。当Interrupt状态控制模块从指令读写模块收到Interrupt指令后,会进入指令解析状态。通过解析得到Interrupt指令携带的中断信息,解析完成后,根据中断发起端的各种信息,包括client id(用于记录中断发送端的设备id)、source id(用于记录多核GPU的处理器id)、pass id(用于记录当前进程)、time stamp(用于记录中断发生时的时间戳信息)等等,全部传递给中断信息发送模块,进入等待数据返回状态。当收到中断信息发送模块的响应(response)之后,会进入完成状态,等待下一条指令。
步骤S4,所述中断处理模块基于所述主动中断信息处理所述主动中断。
中断信息发送模块主要负责收集由interrupt状态控制模块发送过来的中断信息以及其它中断发起端发来的中断信息,通过调度,依次发送给中断处理模块。中断处理模块基于所述主动中断信息处理所述主动中断。在一些实施例中,对所述主动中断的处理可以是通过收到主动中断信号,可以把这个信号作为当前进程任务完成的信号通知其他进程。
在一些实施例中,对所述主动中断的处理可以是通过收到主动中断信号,基于用户的输入启动或切换其他进程。
进一步的,为了详细描述本公开的发明构思,以GPU两个进程同步为例,本实施例具体流程简述如下:
(1). 用户(CPU)现在有两个并行执行的两个进程,第一个进程是进行数据拷贝,第二个进程是等待数据拷贝完成之后计算磁盘剩余空间大小,但两个进程无法互相感知,第二个进程不知道第一个进程的完成状态。用户可以在数据拷贝命令后加入一个中断指令,该中断指令用于提示该进程已完成数据拷贝。
(2). 初始状态下,buffer中没有Interrupt指令,地址为0。buffer深度大小为1MByte。
因此,最新的Interrupt指令会被写到buffer的0~31B地址。
(3). 当指令缓存非空时,表明已经有指令写入到指令缓存中。此时,指令读写模块会主动把一段指令送到状态控制模块。每次发送的指令长度为16B,2次发完。
(4). Interrupt状态控制模块会做Interrupt指令的解析。解析出Interrupt指令中的中断信息。
(5). 中断信息发送模块收集中断信息、发送端信息和系统的异常中断,排序、调度之后,把中断发给中断处理模块,比如CPU或片上集中式中断处理模块。
进一步的,为了详细描述本公开的发明构思,以GPU多于两个进程同步为例,本实施例具体流程简述如下:
(1). 用户现在有三个并行执行的两个进程,第一个进程是做等待另一个用户输入1或者0,第二个进程是数据读取,第三个进程是数据写入。如果用户输入的是1则做数据读取,启动进程二、阻塞进程三。如果用户输入的是0则做数据写入,启动进程三、阻塞进程二。但进程之间无法互相感知,所以用户可以在进程一后加入一个中断指令,基于用户的输入启动对应的进程。
(2). 初始状态下,buffer中没有Interrupt指令,地址为0。buffer深度大小为1MByte。
因此,最新的Interrupt指令会被写到buffer的0~31B地址。Interrupt指令中的指令信息放入进程一中的用户输入的数字。
(3). 当指令缓存非空时,表明已经有指令写入到指令缓存中。此时,指令读写模块会主动把一段指令送到状态控制模块。每次发送的指令长度为16B,2次发完。
(4). Interrupt状态控制模块会做Interrupt指令的解析。解析出Interrupt指令中的中断信息。
(5). 中断信息发送模块收集中断信息、发送端信息和系统的异常中断,排序、调度之后,把中断信号发送给发给中断处理模块,比如CPU或片上集中式中断处理模块, 根据用户的输入,启动进程二或者进程三。
本公开采用先进的同步机制,尤其对于多进程操作需要同步,而使用非锁定机制。例如,多个进程可以安全的入队而不用先锁定。通过本公开实施例,相比现有技术具有比较明显的优势,例如可以实现事件驱动编程,主动中断驱动的方式使得编程更加简单,可以将程序设计为基于事件的模式。当某个特定事件发生时,进程可以通过中断处理程序来响应,而不需要不断地轮询状态。使用主动中断机制可以避免忙等待的情况,即不需要持续地查询某个条件是否满足,从而减少了资源的浪费。
可以实现系统低延迟、低功耗,主动中断机制通常能够在短时间内响应事件,从而减少了通信和同步的延迟。这对于需要快速响应的应用非常重要,如实时系统;主动中断机制可以在需要时唤醒处理器,而不是持续地占用处理器资源。这可以降低功耗,特别是在等待事件发生的时候。
可以降低处理器开销,与轮询相比,中断减少了浪费在不必要轮询上的处理器时间。处理器只在需要时才会中断,这提高了系统的效率并减少了能源消耗。
可以实现进程间的异步通信,主动中断允许进程之间进行异步通信。一个进程可以随时中断另一个进程,以传递消息或通知事件的发生,无需显式的同步机制,简化了多任务编程。
具备可扩展性,主动中断机制可以轻松扩展到多核心和多处理器系统,以支持并行处理。这有助于提高系统性能和吞吐量。
可以实现简化编程,使用主动中断机制,开发人员可以更专注于特定任务,而无需编写复杂的同步代码,简化了多进程应用程序的开发和维护。
本领域技术人员可以理解的是,本实施例中实现同步的进程并不限定为GPU进程,也可以是FPGA或NPU等其他类型的异构加速芯片。
实施例二
为实现上述目的,本实施例提出了一种基于主动中断指令的进程同步系统,具体的请参阅图2。该系统包括:
指令写入模块,用于将主动中断指令写入第一处理器的指令缓存中,所述主动中断指令由第二处理器预先构造,所述主动中断指令包括指令识别码、主动中断信息,
指令读写模块,用于接收指令并将指令送至主动中断指令控制模块,
主动中断指令控制模块,用于读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息,并将所述主动中断指令的识别码及主动中断信息发送至中断信息发送模块,
中断信息发送模块,用于调度中断信息并按照顺序发送中断信息至中断信息处理模块,
中断处理模块,用于基于所述主动中断信息处理所述主动中断。
该实施例中与前述实施例相关的技术术语、概念等的说明可以参照前述实施例,这里不再赘述。
本领域技术人员可以理解的是,本实施例中实现同步的进程并不限定为GPU进程,也可以是FPGA或NPU等其他类型的异构加速芯片。
实施例三
相应的,本申请实施例还提供一种电子设备,该电子设备可以为终端或者服务器。如图3所示,图3为本申请实施例提供的电子设备的结构示意图。
该电子设备300包括有一个或者一个以上处理核心的处理器301、有一个或一个以上计算机可读存储介质的存储器302及存储在存储器302上并可在处理器上运行的计算机程序。其中,处理器301与存储器302电性连接。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器301是电子设备300的控制中心,利用各种接口和线路连接整个电子设备300的各个部分,通过运行或加载存储在存储器302内的软件程序(计算机程序)和/或单元,以及调用存储在存储器302内的数据,执行电子设备300的各种功能和处理数据,从而对电子设备300进行整体监控。
在本申请实施例中,电子设备300中的处理器301会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现各种功能:
将主动中断指令写入第一处理器的指令缓存中,所述主动中断指令由第二处理器预先构造,所述主动中断指令包括指令识别码、主动中断信息,
读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息,
所述主动中断信息经过调度被发送至中断处理模块,
所述中断处理模块基于所述主动中断信息处理所述主动中断。
可选的,如图3所示,电子设备300还包括:进程同步系统303、通讯模块304、输入单元305以及电源306。其中,处理器301分别与进程同步系统303、通讯模块304、输入单元305以及电源306电性连接。本领域技术人员可以理解,图3中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
进程同步系统303可用于实现基于主动中断指令的进程同步。
通讯模块304可用于与其他设备通信。
输入单元305可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源306用于给电子设备300的各个部件供电。可选的,电源306可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电以及功耗管理等功能。电源306还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
实施例四
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的一种基于主动中断指令的进程同步方法的步骤。例如,该计算机程序可以执行如下步骤:
将主动中断指令写入第一处理器的指令缓存中,所述主动中断指令由第二处理器预先构造,所述主动中断指令包括指令识别码、主动中断信息,
读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息,
所述主动中断信息经过调度被发送至中断处理模块,
所述中断处理模块基于所述主动中断信息处理所述主动中断。
以上各个操作的具体实施可参见前述实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种基于主动中断指令的进程同步方法中的步骤,因此,可以实现本申请实施例所提供的任一种基于主动中断指令的进程同步方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。
Claims (14)
1.一种基于主动中断指令的进程同步方法,其特征在于,所述方法包括:
将主动中断指令写入第一处理器的指令缓存中,所述主动中断指令由第二处理器预先构造,所述主动中断指令包括指令识别码、主动中断信息,
读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息,
所述主动中断信息经过调度被发送至中断处理模块,
所述中断处理模块基于所述主动中断信息处理所述主动中断。
2.根据权利要求1所述的方法,其特征在于:
所述第一处理器为异构加速芯片,所述第二处理器为CPU。
3.根据权利要求1所述的方法,其特征在于:
所述指令缓存区为FIFO结构。
4.根据权利要求1-3任一项所述的方法,其特征在于:
所述主动中断信息至少包括中断发送端ID、第一处理器的核ID、当前进程ID和中断发生的时间戳信息。
5.根据权利要求1-3任一项所述的方法,其特征在于:
所述主动中断信息和其他中断信息经过调度后按照顺序被发送至中断处理模块,
所述其他中断包括系统异常中断、外部设备请求。
6.根据权利要求1-3任一项所述的方法,其特征在于:
所述处理所述主动中断,具体为所述第二处理器基于所述主动中断信息判断是否有新的进程,若是则启动或切换至新的进程,若否则继续执行原进程。
7.一种基于主动中断指令的进程同步系统,其特征在于,所述系统包括:
指令写入模块,用于将主动中断指令写入第一处理器的指令缓存中,所述主动中断指令由第二处理器预先构造,所述主动中断指令包括指令识别码、主动中断信息,
指令读写模块,用于接收指令并将指令送至主动中断指令控制模块,
主动中断指令控制模块,用于读取指令缓存中的指令并按顺序解析,响应于解析出的主动中断指令,将所述主动中断指令进一步解析,得到所述主动中断指令的识别码及主动中断信息,并将所述主动中断指令的识别码及主动中断信息发送至中断信息发送模块,
中断信息发送模块,用于调度中断信息并按照顺序发送中断信息至中断信息处理模块,
中断处理模块,用于基于所述主动中断信息处理所述主动中断。
8.根据权利要求7所述的系统,其特征在于,
所述第一处理器为异构加速芯片,所述第二处理器为CPU。
9.根据权利要求8所述的系统,其特征在于,
所述指令缓存区为FIFO结构。
10.根据权利要求7-9任一项所述的系统,其特征在于:
所述主动中断信息至少包括中断发送端ID、第一处理器的核ID、当前进程ID和中断发生的时间戳信息。
11.根据权利要求7-9任一项所述的系统,其特征在于:
所述中断信息包括主动中断信息和其他中断信息,所述其他中断包括系统异常中断、外部设备请求。
12.根据权利要求7-9任一项所述的系统,其特征在于:
所述处理所述主动中断,具体为所述第二处理器基于所述主动中断信息判断是否有新的进程,若是则启动或切换至新的进程,若否则继续执行原进程。
13.一种电子设备,其特征在于:包括存储有可执行程序代码的存储器以及与所述存储器耦合的处理器;其中,所述处理器调用所述存储器中存储的可执行程序代码,执行如权利要求1-6任一项所述的方法。
14.一种计算机可读存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器运行时执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311685211.9A CN117389625B (zh) | 2023-12-11 | 2023-12-11 | 基于主动中断指令的进程同步方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311685211.9A CN117389625B (zh) | 2023-12-11 | 2023-12-11 | 基于主动中断指令的进程同步方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117389625A CN117389625A (zh) | 2024-01-12 |
CN117389625B true CN117389625B (zh) | 2024-03-12 |
Family
ID=89465131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311685211.9A Active CN117389625B (zh) | 2023-12-11 | 2023-12-11 | 基于主动中断指令的进程同步方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117389625B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877549B1 (en) * | 2007-06-12 | 2011-01-25 | Juniper Networks, Inc. | Enforcement of cache coherency policies using process synchronization services |
JP2012247849A (ja) * | 2011-05-25 | 2012-12-13 | Denso Corp | マイクロコンピュータ |
CN105183668A (zh) * | 2015-09-21 | 2015-12-23 | 华为技术有限公司 | 缓存刷新方法及装置 |
CN105793819A (zh) * | 2013-12-23 | 2016-07-20 | 英特尔公司 | 包括混合处理器核的片上系统(soc) |
CN111913812A (zh) * | 2020-07-03 | 2020-11-10 | 中用科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN114528025A (zh) * | 2022-02-25 | 2022-05-24 | 深圳市航顺芯片技术研发有限公司 | 指令处理方法、装置、微控制器及可读存储介质 |
CN114880346A (zh) * | 2022-04-22 | 2022-08-09 | 苏州浪潮智能科技有限公司 | 一种数据处理方法及相关组件、加速处理器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100017581A1 (en) * | 2008-07-18 | 2010-01-21 | Microsoft Corporation | Low overhead atomic memory operations |
EP3812900B1 (en) * | 2016-12-31 | 2023-11-29 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
-
2023
- 2023-12-11 CN CN202311685211.9A patent/CN117389625B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877549B1 (en) * | 2007-06-12 | 2011-01-25 | Juniper Networks, Inc. | Enforcement of cache coherency policies using process synchronization services |
JP2012247849A (ja) * | 2011-05-25 | 2012-12-13 | Denso Corp | マイクロコンピュータ |
CN105793819A (zh) * | 2013-12-23 | 2016-07-20 | 英特尔公司 | 包括混合处理器核的片上系统(soc) |
CN105183668A (zh) * | 2015-09-21 | 2015-12-23 | 华为技术有限公司 | 缓存刷新方法及装置 |
CN111913812A (zh) * | 2020-07-03 | 2020-11-10 | 中用科技有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN114528025A (zh) * | 2022-02-25 | 2022-05-24 | 深圳市航顺芯片技术研发有限公司 | 指令处理方法、装置、微控制器及可读存储介质 |
CN114880346A (zh) * | 2022-04-22 | 2022-08-09 | 苏州浪潮智能科技有限公司 | 一种数据处理方法及相关组件、加速处理器 |
Non-Patent Citations (1)
Title |
---|
张建勋 ; 古志民 ; .帮助线程预取技术研究综述.计算机科学.2013,19-23+39. * |
Also Published As
Publication number | Publication date |
---|---|
CN117389625A (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7433985B2 (en) | Conditional and vectored system management interrupts | |
EP3092567B1 (en) | System and method for isolating i/o execution via compiler and os support | |
US20090271796A1 (en) | Information processing system and task execution control method | |
CN110489213A (zh) | 一种任务处理方法及处理装置、计算机系统 | |
US8631086B2 (en) | Preventing messaging queue deadlocks in a DMA environment | |
US10545890B2 (en) | Information processing device, information processing method, and program | |
CN112363972B (zh) | 支持多cpu间通信的电子设备及方法 | |
US7389507B2 (en) | Operating-system-independent modular programming method for robust just-in-time response to multiple asynchronous data streams | |
US8225320B2 (en) | Processing data using continuous processing task and binary routine | |
CN111209094A (zh) | 请求处理方法、装置、电子设备及计算机可读存储介质 | |
US20180335957A1 (en) | Lock-free datapath design for efficient parallel processing storage array implementation | |
CN115061803A (zh) | 一种多核处理系统及其任务调度方法、芯片、存储介质 | |
CN117389625B (zh) | 基于主动中断指令的进程同步方法、系统、设备及介质 | |
CN116069480B (zh) | 一种处理器及计算设备 | |
CN117407182B (zh) | 一种基于Poll指令的进程同步方法、系统、设备及介质 | |
CN117407181B (zh) | 一种基于屏障指令的异构计算进程同步方法及系统 | |
CN115599563B (zh) | 串行i/o访问的并行i/o控制方法、装置及设备 | |
US9921891B1 (en) | Low latency interconnect integrated event handling | |
TWI823655B (zh) | 適用於智慧處理器的任務處理系統與任務處理方法 | |
US11809219B2 (en) | System implementing multi-threaded applications | |
EP4250109A1 (en) | Graphics processing unit invoking method, central processing unit and apparatus | |
KR100692211B1 (ko) | 게임 엔진에서 파이버를 이용한 오브젝트 처리 방법 | |
US20080288952A1 (en) | Processing apparatus and device control unit | |
CN116360941A (zh) | 一种面向多核dsp的并行计算资源自组织调度方法及系统 | |
CN117850995A (zh) | 一种协程调度方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |