CN118034783A - 一种多线程任务处理装置、方法及芯片 - Google Patents
一种多线程任务处理装置、方法及芯片 Download PDFInfo
- Publication number
- CN118034783A CN118034783A CN202410337199.0A CN202410337199A CN118034783A CN 118034783 A CN118034783 A CN 118034783A CN 202410337199 A CN202410337199 A CN 202410337199A CN 118034783 A CN118034783 A CN 118034783A
- Authority
- CN
- China
- Prior art keywords
- microprocessor
- thread
- data
- controller
- target
- 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 37
- 238000012545 processing Methods 0.000 title claims description 94
- 230000004044 response Effects 0.000 claims abstract description 37
- 230000005012 migration Effects 0.000 claims description 52
- 238000013508 migration Methods 0.000 claims description 52
- 230000015654 memory Effects 0.000 claims description 29
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 5
- 238000003672 processing method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101001049835 Homo sapiens Potassium channel subfamily K member 3 Proteins 0.000 description 1
- 101001049829 Homo sapiens Potassium channel subfamily K member 5 Proteins 0.000 description 1
- 101001050878 Homo sapiens Potassium channel subfamily K member 9 Proteins 0.000 description 1
- 102100023207 Potassium channel subfamily K member 3 Human genes 0.000 description 1
- 102100023202 Potassium channel subfamily K member 5 Human genes 0.000 description 1
- 102100024986 Potassium channel subfamily K member 9 Human genes 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000725 suspension 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种任务切换控制装置、方法和芯片,该装置包括CSR单元用于接收微处理器发送的配置信息,包括微处理器从当前线程将要切换至的目标线程的目标线程号;第一控制器用于读取CSR单元中配置的目标线程号;控制第二控制器根据目标线程号,从存储单元中读取目标线程的数据,并控制第二控制器将其写入微处理器;第一控制器还用于响应于微处理器发送的线程切换信息,在确定在目标线程的数据写入微处理器的情况下,向微处理器发送可切换线程的响应信号,以使微处理器从当前线程切换至目标线程;控制第二控制器从微处理器中读取当前线程的数据,并控制第二控制器将当前线程的数据写入存储单元,实现微处理器在多个线程中的切换。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种多线程任务处理装置、方法及芯片。
背景技术
ARC EM系列的中央处理器(Central Processing Unit,CPU)通常采用双线程CPU,可以同时并行运行两个线程。
现有技术中,CPU发出内存访问请求后,需要较长的时间才能返回访问结果,只有获取到相应的访问结果,才能结束当前线程,而双线程CPU最多允许两个线程并行,即同一时间只能发出两次内存访问请求,那么,就需要耗费大量的时间等待访问结果返回。
因此,双线程CPU的线程资源很容易被浪费,尤其是在访问量较多的消息交换模式(Message Exchange Pattern,MEP)业务中,双线程CPU的性能无法满足MEP业务所需的数据吞吐量需求。
发明内容
为解决上述技术问题,本申请示出了一种多线程任务处理方法、装置、电子设备及存储介质,以解决相关技术中双线程CPU的线程资源很容易就被占用,无法满足MEP业务所需的数据吞吐量需求的问题。
第一方面,本申请示出了一种多线程任务处理装置,所述处理装置与微处理器进行交互,所述处理装置包括第一控制器、第二控制器、CSR单元和存储单元;
所述CSR单元用于接收所述微处理器发送的配置信息;所述配置信息中包括所述微处理器从当前线程将要切换至的目标线程的目标线程号;
所述第一控制器用于读取所述CSR单元中配置的所述目标线程号;控制所述第二控制器根据所述目标线程号,从所述存储单元中读取所述目标线程的数据,并控制所述第二控制器将所述目标线程的数据写入所述微处理器;
所述第一控制器还用于响应于所述微处理器发送的线程切换信息,在确定在所述目标线程的数据写入所述微处理器的情况下,向所述微处理器发送可切换线程的响应信号,以使所述微处理器从所述当前线程切换至所述目标线程;控制所述第二控制器从所述微处理器中读取所述当前线程的数据,并控制所述第二控制器将所述当前线程的数据写入所述存储单元。
可选地,所述第二控制器具体用于:
从所述微处理器中读取所述当前线程的数据及当前线程号;
根据所述当前线程号确定所述当前线程在所述存储单元中对应的存储地址,并将所述当前线程的数据写入所述存储地址。
可选地,所述第一控制器具体用于:
在读取所述CSR单元中配置的所述目标线程号后,切换至迁移状态,并在控制所述第二控制器将所述目标线程的数据写入所述微处理器后,结束所述迁移状态;
响应于所述微处理器发送的线程切换信息,检测是否处于所述迁移状态;
若处于所述迁移状态,则向所述微处理器发送等待信息,直至所述迁移状态结束后,向所述微处理器发送可切换线程的响应信号;
若未处于所述迁移状态,则向所述微处理器发送所述响应信号。
可选地,所述CSR单元还用于:
通过高级外围总线,获取运行模式信息;所述运行模式信息用于指示所述多线程任务处理装置的运行模式;
当所述运行模式为多线程模式时,所述第一控制器执行所述读取所述CSR单元中配置的所述目标线程号的步骤。
可选地,所述第一控制器具体用于:
通过切换控制接口,接收所述微处理器发送的线程切换信息;
并通过所述切换控制接口,向所述微处理器发送可切换线程的响应信号。
可选地,所述第二控制器具体用于:
通过BGC接口,将所述目标线程的数据写入所述微处理器处于非活跃状态的寄存器;
并通过所述BGC接口,从所述微处理器处于非活跃状态的寄存器中读取所述当前线程的数据。
可选地,所述存储单元为静态随机存取存储SRAM,所述SRAM中包括多个依次排列的任务空间,每个任务空间用于存储所对应的线程的数据。
第二方面,本申请示出了一种多线程任务处理方法,所述方法包括:
接收微处理器发送的配置信息;所述配置信息中包括所述微处理器从当前线程将要切换至的目标线程的目标线程号;
根据所述目标线程号,从存储单元中读取所述目标线程的数据,并将所述目标线程的数据写入所述微处理器;
响应于所述微处理器发送的线程切换信息,在确定在所述目标线程的数据写入所述微处理器的情况下,向所述微处理器发送可切换线程的响应信号,以使所述微处理器从所述当前线程切换至所述目标线程;
从所述微处理器中读取所述当前线程的数据,并将所述当前线程的数据写入所述存储单元。
可选地,所述从所述微处理器中读取所述当前线程的数据,并将所述当前线程的数据写入所述存储单元,包括:
从所述微处理器中读取所述当前线程的数据及当前线程号;
根据所述当前线程号确定所述当前线程在所述存储单元中对应的存储地址,并将所述当前线程的数据写入所述存储地址。
可选地,所述根据所述目标线程号,从存储单元中读取所述目标线程的数据,并将所述目标线程的数据写入所述微处理器,包括:
在读取所述目标线程号后,切换至迁移状态,并在将所述目标线程的数据写入所述微处理器后,结束所述迁移状态;
所述响应于所述微处理器发送的线程切换信息,在确定在所述目标线程的数据写入所述微处理器的情况下,向所述微处理器发送可切换线程的响应信号,包括:
响应于所述微处理器发送的线程切换信息,检测是否处于所述迁移状态;
若处于所述迁移状态,则向所述微处理器发送等待信息,直至所述迁移状态结束后,向所述微处理器发送可切换线程的响应信号;
若未处于所述迁移状态,则向所述微处理器发送所述响应信号。
可选地,所述方法还包括:
通过高级外围总线,获取运行模式信息;所述运行模式信息用于指示所述多线程任务处理装置的运行模式;
当所述运行模式为多线程模式时,执行所述接收微处理器发送的配置信息的步骤。
可选地,所述响应于所述微处理器发送的线程切换信息之前,包括:
通过切换控制接口,接收所述微处理器发送的线程切换信息;
所述向所述微处理器发送可切换线程的响应信号,包括:
并通过所述切换控制接口,向所述微处理器发送可切换线程的响应信号。
可选地,所述将所述目标线程的数据写入所述微处理器,包括:
通过BGC接口,将所述目标线程的数据写入所述微处理器处于非活跃状态的寄存器;
所述从所述微处理器中读取所述当前线程的数据,包括:
通过所述BGC接口,从所述微处理器处于非活跃状态的寄存器中读取所述当前线程的数据。
可选地,所述存储单元为静态随机存取存储SRAM,所述SRAM中包括多个依次排列的任务空间,每个任务空间用于存储所对应的线程的数据。
第三方面,本申请示出了一种电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一项所述的多线程任务处理方法的步骤。
第四方面,本申请示出了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的多线程任务处理方法的步骤。
第五方面,本申请示出了一种芯片,包括前述的装置。
与现有技术相比,本申请包括以下优点:
本申请实施例中,多线程任务处理装置包括第一控制器、第二控制器、CSR单元和存储单元,其中,CSR单元用于接收微处理器发送的配置信息;配置信息中包括微处理器从当前线程将要切换至的目标线程的目标线程号;第一控制器用于读取CSR单元中配置的目标线程号;控制第二控制器根据目标线程号,从存储单元中读取目标线程的数据,并控制第二控制器将目标线程的数据写入微处理器;第一控制器还用于响应于微处理器发送的线程切换信息,在确定在目标线程的数据写入微处理器的情况下,向微处理器发送可切换线程的响应信号,以使微处理器从当前线程切换至目标线程;控制第二控制器从微处理器中读取当前线程的数据,并控制第二控制器将当前线程的数据写入存储单元。
这样,多线程任务处理装置通过与微处理器的交互,可以根据微处理器发送的配置信息,从存储单元中读取微处理器将要切换至的目标线程的数据,发送至微处理器,以使微处理器可以基于目标线程的数据切换执行目标线程,同时,多线程任务处理装置还可以将微处理器中当前线程的数据写入存储单元,以使微处理器在当前线程的响应等待时间中,可以充分利用系统资源执行其他线程的任务,从而实现微处理器在多个线程中的切换,提高微处理器的资源利用率,满足业务所需的数据吞吐量需求。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本申请的一种多线程任务处理装置的结构框图;
图2是本申请的一种微处理器与多线程任务处理装置的连接关系图;
图3是本申请的一种第二控制器103将目标线程的数据写入微处理器的流水线结构图;
图4是本申请的一种第二控制器103将当前线程的数据写入存储单元104的流水线结构图;
图5是本申请的一种SRAM的存储结构示意图;
图6是本申请的一种微处理器与多线程任务处理装置的连接关系图;
图7是本申请的一种多线程任务处理方法的逻辑示意图;
图8是本申请的一种多线程任务处理方法的步骤流程图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
下面将通过具体的实施例,对本发明实施例提供的多线程任务处理装置进行详细描述。
ARC EM系列的CPU通常采用双线程CPU,可以同时并行两个线程。那么,CPU发出内存访问请求后,需要较长的时间才能返回访问结果,只有获取到相应的访问结果,才能结束当前线程,而双线程CPU最多允许两个线程并行,即同一时间只能发出两次内存访问请求,就需要耗费大量的时间等待访问结果返回。因此,亟需一种提高CPU性能的方式,使其满足MEP业务所需的数据吞吐量需求。
参照图1,示出了本申请的一种多线程任务处理装置的结构框图,该装置可以为任务切换控制器(Task Switch Controller,TSC),通过与微处理器进行交互,帮助微处理器实现多线程的任务处理,其中,该多线程任务处理装置包括CSR(Control statusregister,控制状态寄存器)单元101、第一控制器102、第二控制器103和存储单元104。
具体可以包括如下模块:
CSR单元101用于接收微处理器发送的配置信息;配置信息中包括微处理器从当前线程将要切换至的目标线程的目标线程号。
微处理器可以向多线程任务处理装置的CSR单元101发送配置信息,其中,配置信息中包括微处理器从当前线程将要切换至的目标线程的目标线程号,这样,通过配置信息,微处理器可以通知多线程任务处理装置,微处理器准备切换到哪个线程。
CSR单元101可以通过切换控制接口,接收微处理器发送的配置信息,进而,多线程任务处理装置可以根据配置信息,向微处理器返回目标线程相对应的数据,以帮助微处理器获取到将要切换至的目标线程的数据,进而成功进行线程切换。
一种实现方式中,CSR单元101还用于:
通过高级外围总线,获取运行模式信息;运行模式信息用于指示多线程任务处理装置的运行模式;当运行模式为多线程模式时,第一控制器102执行读取CSR单元101中配置的目标线程号的步骤。
也就是说,用户侧可以通过高级外围总线(Advanced Peripheral Bus,APB)对多线程任务处理装置的运行模式进行设置,其中,运行模式可以包括单线程模式、双线程模式和多线程模式。
当多线程任务处理装置运行于多线程模式时,表示微处理器需要在多个线程中进行切换,而微处理器的多线程切换需要借助多线程任务处理装置实现,因此,多线程任务处理装置需要继续执行本申请的后续步骤,进一步由第一控制器102读取CSR单元101中配置的目标线程号。
第一控制器102用于读取CSR单元101中配置的目标线程号;控制第二控制器103根据目标线程号,从存储单元104中读取目标线程的数据,并控制第二控制器103将目标线程的数据写入微处理器。
也就是说,CSR单元101接收到配置信息之后,第一控制器102可以从配置信息中读取目标线程号,然后,对第二控制器103进行控制,由第二控制器103实现将目标线程的数据写入微处理器。
具体地,首先,第二控制器103可以根据目标线程号,从存储单元104中读取目标线程的数据,然后,第二控制器103可以将目标线程的数据写入微处理器。
在存储单元104中,对应存储着微处理器中运行的多个线程的线程及数据,因此,根据目标线程号,第二控制器103可以在存储单元104中查询到目标线程的数据,进而可以将目标线程的数据写入微处理器,以使微处理器基于目标线程的数据继续执行目标线程的后续任务。
举例来说,存储单元104可以采用SRAM(Static Random-Access Memory,静态随机存取存储器),对应的,第二控制器103可以为SRAM控制器,或者,也可以采用其他的存储器作为存储单元104,本申请对此具体不做限定。
一种实现方式中,第一控制器102具体用于:
在读取CSR单元101中配置的目标线程号后,切换至迁移状态,并在控制第二控制器103将目标线程的数据写入微处理器后,结束迁移状态。
也就是说,第一控制器102可以对多线程任务处理装置进行状态标记,其中,多线程任务处理装置的状态包括迁移状态和非迁移状态,迁移状态表示多线程任务处理装置的第二控制器103正在与微处理器进行数据交换。
可以理解,如果第二控制器103与微处理器的数据交换尚未结束,表示目标线程的数据还没有完整写入微处理器,此时,如果微处理器继续执行线程切换,可能导致目标线程执行失败,因此,通过对多线程任务处理装置进行状态标记,可以进一步提高任务切换的可靠性及成功率。
本申请中,第二控制器103可以通过BGC(Back Ground Copy,背景复制)接口与微处理器进行数据交换,将目标线程的数据写入微处理器。
一种实现方式中,微处理器的文件库(regfile bank)包括两个,分别处于活跃状态及非活跃状态,其中,处于活跃状态的文件库(active bank)直接用于流水线执行相应的线程任务,而处于非活跃状态的文件库(inactive bank)则用于与多线程任务处理装置进行数据交换,多线程任务处理装置的第二控制器103读取或写入数据时,只能访问到处于非活跃状态的文件库,不可访问处于活跃状态的文件库,每次线程切换后,两个文件库的活跃状态及非活跃状态互换。
也就是说,第二控制器103具体用于:
通过BGC接口,将目标线程的数据写入微处理器处于非活跃状态的寄存器;并通过BGC接口,从微处理器处于非活跃状态的寄存器中读取当前线程的数据。
这样,上一个被切换的线程的数据可以由切换后的非活跃状态的文件库存储至多线程任务处理装置,而微处理器可以从切换后的活跃状态的文件库中读取将要被切换至的线程的数据,并执行相应的线程任务。
如图2所示,为微处理器与多线程任务处理装置的连接关系图,在本申请的一种实施例中,微处理器与多线程任务处理装置之间共有三组接口,其一是多线程任务处理装置与寄存器文件库之间用于传输数据的背景复制接口;其二是多线程任务处理装置与微处理器流水线之间的一组切换控制接口,用于控制微处理器的线程切换、流水线暂停等操作;其三是微处理器到多线程任务处理装置的一组配置接口,用于微处理器向CSR单元101发送配置信息。
如图3所示,为一种实现方式中,第二控制器103通过BGC接口与微处理器进行数据交换,将目标线程的数据写入微处理器的流水线处理结构图。
其中,存储单元104为SRAM,那么,流水线长度由SRAM的读延时决定,当前实现方式中,流水线长度为5,包括:
读SRAM:读取SRAM中目标线程的数据的时间;
读延时1:SRAM存储器自带延时;
读延时2:SRAM存储器输出打拍;
读延时3:纠错码(Error Correction Code,ECC)延时;
写BGC:将目标线程的数据写入微处理器中的时间,包括将目标线程的数据加载到BGC总线上,以及后续由微处理器内部逻辑写入到处于非活跃状态的文件库中的时间。
第一控制器102还用于响应于微处理器发送的线程切换信息,在确定在目标线程的数据写入微处理器的情况下,向微处理器发送可切换线程的响应信号,以使微处理器从当前线程切换至目标线程;控制第二控制器103从微处理器中读取当前线程的数据,并控制第二控制器103将当前线程的数据写入存储单元104。
也就是说,微处理器在将要从当前线程切换至目标线程时,向多线程任务处理装置的第一控制器102发送线程切换信息,然后,第一控制器102需要确定目标线程的数据是否已写入微处理器,如果目标线程的数据已写入微处理器,则第一控制器102向微处理器发送可切换线程的响应信号,进而,微处理器可以执行从当前线程切换至目标线程的步骤。
这样,可以保证微处理器在目标线程的数据完整写入的情况下,才进行线程的切换,从而避免数据不完整导致的目标线程切换失败或任务执行出现异常。
进一步地,在第一控制器102向微处理器发送可切换线程的响应信号之后,可以控制第二控制器103与微处理器进行数据交换,进而,第二控制器103从微处理器中读取当前线程的数据,并将当前线程的数据写入存储单元104。
这样,当前线程的数据从微处理器交换至多线程任务处理装置的存储单元104,使得微处理器空闲出部分存储空间,在当前线程的响应等待时间中,微处理器可以利用这部分存储空间去执行其他线程的任务,从而提高微处理器的资源利用率。
如图4所示,为一种实现方式中,第二控制器103通过BGC接口与微处理器进行数据交换,将当前线程的数据写入存储单元104的流水线处理结构图。
其中,存储单元104为SRAM,那么,流水线长度为2,包括:
读BGC:第二控制器103向微处理器发送BGC数据读取请求,读取微处理器中当前线程的数据的时间;
写SRAM:将目标线程的数据写入SRAM中的时间。
一种实现方式中,第一控制器102具体用于:
响应于微处理器发送的线程切换信息,检测是否处于迁移状态;若处于迁移状态,则向微处理器发送等待信息,直至迁移状态结束后,向微处理器发送可切换线程的响应信号;若未处于迁移状态,则向微处理器发送响应信号。
由前述可知,多线程任务处理装置的状态包括迁移状态和非迁移状态,迁移状态表示多线程任务处理装置的第二控制器103正在与微处理器进行数据交换,也就是说,当多线程任务处理装置处于迁移状态时,第二控制器103与微处理器的数据交换尚未结束,目标线程的数据还没有完整写入微处理器,因此,在这种情况下,第一控制器102向微处理器发送等待信息,直至迁移状态结束后,目标线程的数据已经完整写入微处理器,则第一控制器102向微处理器发送可切换线程的响应信号。
这样,通过对多线程任务处理装置的迁移状态进行检测,可以进一步提高任务切换的可靠性及成功率,避免数据不完整导致的目标线程切换失败或任务执行出现异常。
一种实现方式中,第一控制器102具体用于:
通过切换控制接口,接收微处理器发送的线程切换信息;并通过切换控制接口,向微处理器发送可切换线程的响应信号。
也就是说,在本申请中,多线程任务处理装置的第一控制器102通过切换控制接口与微处理器中的流水线相连。一方面第一控制器102用于控制微处理器是否进行线程切换、或者是否暂停流水线。另一方面第一控制器102控制第二控制器103访问微处理器,与微处理器进行数据交换。
一种实现方式中,第二控制器103具体用于:
从微处理器中读取当前线程的数据及当前线程号;根据当前线程号确定当前线程在存储单元104中对应的存储地址,并将当前线程的数据写入存储地址。
由前述可知,存储单元104中对应存储着微处理器中运行的多个线程的线程及数据,因此,第二控制器103从微处理器中读取当前线程的数据及当前线程号之后,需要根据当前线程号确定当前线程在存储单元104中对应的存储地址,并将当前线程的数据写入存储地址,这样,在后续微处理器切换回当前线程时,第二控制器103可以根据当前线程号,在存储单元104中查询到目标线程的数据并写入微处理器,以使微处理器基于当前线程的数据继续执行当前线程的后续任务。
一种实现方式中,存储单元104为静态随机存取存储SRAM,SRAM中包括多个依次排列的任务空间,每个任务空间用于存储所对应的线程的数据。
其中,如图5所示,为一种实现方式中,多线程任务处理装置中使用的SRAM的存储结构示意图。
其中,SRAM包括4个依次排列的任务空间,分别为TASK0、TASK1、TASK2和TASK3,每个任务空间占用20个地址空间,每个地址空间的位宽为64比特,每一个TASK占20个地址空间,其每个地址空间的位宽为64bits,从地址0开始依次排列。
这样,SRAM的4个任务空间可以分别存储4个线程的数据,以支持微处理器在4个线程中进行切换,在本申请中,如果需要支持更多线程的切换,需要在SRAM中预先留出相应的地址空间,用于存储不同线程的数据。
如图6所示,是一种实现方式中,本申请提供的一种微处理器与多线程任务处理装置的连接关系图。
其中,多线程任务处理装置中第一控制器102通过切换控制接口,与微处理器中的流水线相连。一方面第一控制器102用于控制微处理器是否进行线程切换、或者是否暂停流水线。另一方面第一控制器102控制多线程任务处理装置中第二控制器103访问微处理器,将即将要切换的目标线程的数据从存储单元104中读出,写入到微处理器中;或者将切换结束后微处理器中当前线程的数据读出,写入到存储单元104中。
多线程任务处理装置中第二控制器103通过BGC接口,与微处理器进行数据交换。其中,第二控制器103在对微处理器进行访问时,每次都只能访问处于非活跃状态的寄存器,不可访问处于活跃状态的寄存器。
多线程任务处理装置中存储单元104用于存储每个线程的数据,从而起到现场保护作用。其中,存储单元104可以采用采用单端口RAM(Random-Access Memory,随机存储器)的SRAM,不支持同一个周期内同时进行读写操作。SRAM的位宽为64bits,其深度由线程数量决定,每一个线程占20个地址空间。
多线程任务处理装置中的CSR单元101用于接收用户侧通过APB总线发送的运行模式信息,并通过配置接口接收微处理器的配置信息。其中,运行模式信息用于配置多线程任务处理装置运行在几线程模式;配置信息用于通知多线程任务处理装置,微处理器准备切换到哪个线程。
为了便于理解,通过如图7所示的一种实现方式中,多线程任务处理方法的逻辑示意图,以微处理器同时运行4个线程为例,对本申请的方案进行描述,具体包括如下步骤:
首先,用户侧通过APB总线配置多线程任务处理装置的CSR单元101,控制多线程任务处理装置运行于多线程模式。
然后,微处理器开始运转,此时开始处理0线程;微处理器在运行T00时间内,通知多线程任务处理装置将下一线程1的数据迁移到微处理器的处于非活跃状态的寄存器:
具体地,微处理器通知CSR单元101目标线程(线程1)的线程号;
配置结束后多线程任务处理装置的第一控制器102开始运转:多线程任务处理装置进入迁移状态;若在迁移过程中微处理器通过切换控制接口告知多线程任务处理装置可以切换线程,多线程任务处理装置会控制微处理器进行等待;
主状态机控制第二控制器103读取存储单元104中线程1的数据,读取结果通过BGC接口写入到微处理器处于非活跃状态的寄存器。
直到迁移结束后,第一控制器102清除正处于迁移过程中的状态信息。
然后,微处理器运行T00时间后,线程0发出访问协处理器的请求;微处理器切换线程,线程1开始运转;多线程任务处理装置将上一线程0的数据从处于非活跃状态的寄存器迁移到多线程任务处理装置内部的存储单元104;微处理器在运行T10时间内通知多线程任务处理装置将下一线程2的数据迁移到微处理器的处于非活跃状态的寄存器:
具体地,微处理器和通过切换控制接口告知多线程任务处理装置,微处理器准备好随时切换线程;
第一控制器102接收到信息后查看是否处于迁移状态,
如果处于迁移状态,多线程任务处理装置通过切换控制接口控制微处理器进行等待,待迁移状态结束,再通过切换控制接口使微处理器停止等待,并切换线程;
如果未处于迁移状态,多线程任务处理装置通过切换控制接口使微处理器进行等待。
切换后多线程任务处理装置主状态机进入迁移状态,控制第二控制器103通过BGC接口读取微处理器内处于非活跃状态的寄存器中线程0的数据,再写入到多线程任务处理装置的存储单元104中线程0对应位置;
其中,若在迁移过程中微处理器通过切换控制接口告知多线程任务处理装置可以切换线程,多线程任务处理装置会控制微处理器进行等待。
微处理器通知多线程任务处理装置内部第一控制器102下一线程的线程号(线程2),迁移过程中配置第一控制器102,控制第二控制器103通过BGC接口读取微处理器中的数据后,继续读取存储单元104中线程2内容,再通过BGC接口写入到微处理器,在此过程中保持迁移状态。
配置结束后第一控制器102开始运转:多线程任务处理装置进入迁移状态;若在迁移过程中微处理器通过切换控制接口告知多线程任务处理装置可以切换线程,多线程任务处理装置会控制微处理器进行等待;
第一控制器102控制第二控制器103读取存储单元104中线程2的数据,读取结果通过BGC接口发送给微处理器;
直到迁移结束后,第一控制器102清除正处于迁移过程中的状态信息。
进而,微处理器运行T10时间后,线程1发出访问协处理器的请求;微处理器切换线程,线程2开始运转;以此类推。
由以上可见,本申请提供的方案中,多线程任务处理装置通过与微处理器的交互,可以根据微处理器发送的配置信息,从存储单元中读取微处理器将要切换至的目标线程的数据,发送至微处理器,以使微处理器可以基于目标线程的数据切换执行目标线程,同时,多线程任务处理装置还可以将微处理器中当前线程的数据写入存储单元,以使微处理器在当前线程的响应等待时间中,可以充分利用系统资源执行其他线程的任务,从而实现微处理器在多个线程中的切换,提高微处理器的资源利用率,满足业务所需的数据吞吐量需求。
参照图8,示出了本申请的一种任务切换控制方法的步骤流程图,该方法包括如下步骤:
步骤S21:接收微处理器发送的配置信息;所述配置信息中包括所述微处理器从当前线程将要切换至的目标线程的目标线程号;
步骤S22:根据所述目标线程号,从存储单元中读取所述目标线程的数据,并将所述目标线程的数据写入所述微处理器;
步骤S23:响应于所述微处理器发送的线程切换信息,在确定在所述目标线程的数据写入所述微处理器的情况下,向所述微处理器发送可切换线程的响应信号,以使所述微处理器从所述当前线程切换至所述目标线程;
步骤S24:从所述微处理器中读取所述当前线程的数据,并将所述当前线程的数据写入所述存储单元。
可选地,所述从所述微处理器中读取所述当前线程的数据,并将所述当前线程的数据写入所述存储单元,包括:
从所述微处理器中读取所述当前线程的数据及当前线程号;
根据所述当前线程号确定所述当前线程在所述存储单元中对应的存储地址,并将所述当前线程的数据写入所述存储地址。
可选地,所述根据所述目标线程号,从存储单元中读取所述目标线程的数据,并将所述目标线程的数据写入所述微处理器,包括:
在读取所述目标线程号后,切换至迁移状态,并在将所述目标线程的数据写入所述微处理器后,结束所述迁移状态;
所述响应于所述微处理器发送的线程切换信息,在确定在所述目标线程的数据写入所述微处理器的情况下,向所述微处理器发送可切换线程的响应信号,包括:
响应于所述微处理器发送的线程切换信息,检测是否处于所述迁移状态;
若处于所述迁移状态,则向所述微处理器发送等待信息,直至所述迁移状态结束后,向所述微处理器发送可切换线程的响应信号;
若未处于所述迁移状态,则向所述微处理器发送所述响应信号。
可选地,所述方法还包括:
通过高级外围总线,获取运行模式信息;所述运行模式信息用于指示所述多线程任务处理装置的运行模式;
当所述运行模式为多线程模式时,执行所述接收微处理器发送的配置信息的步骤。
可选地,所述响应于所述微处理器发送的线程切换信息之前,包括:
通过切换控制接口,接收所述微处理器发送的线程切换信息;
所述向所述微处理器发送可切换线程的响应信号,包括:
并通过所述切换控制接口,向所述微处理器发送可切换线程的响应信号。
可选地,所述将所述目标线程的数据写入所述微处理器,包括:
通过BGC接口,将所述目标线程的数据写入所述微处理器处于非活跃状态的寄存器;
所述从所述微处理器中读取所述当前线程的数据,包括:
通过所述BGC接口,从所述微处理器处于非活跃状态的寄存器中读取所述当前线程的数据。
可选地,所述存储单元为静态随机存取存储SRAM,所述SRAM中包括多个依次排列的任务空间,每个任务空间用于存储所对应的线程的数据。
由以上可见,本申请提供的方案中,多线程任务处理装置通过与微处理器的交互,可以根据微处理器发送的配置信息,从存储单元中读取微处理器将要切换至的目标线程的数据,发送至微处理器,以使微处理器可以基于目标线程的数据切换执行目标线程,同时,多线程任务处理装置还可以将微处理器中当前线程的数据写入存储单元,以使微处理器在当前线程的响应等待时间中,可以充分利用系统资源执行其他线程的任务,从而实现微处理器在多个线程中的切换,提高微处理器的资源利用率,满足业务所需的数据吞吐量需求。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的任务切换控制方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的任务切换控制方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种多线程任务处理装置,其特征在于,所述处理装置与微处理器进行交互,所述处理装置包括第一控制器、第二控制器、CSR单元和存储单元;
所述CSR单元用于接收所述微处理器发送的配置信息;所述配置信息中包括所述微处理器从当前线程将要切换至的目标线程的目标线程号;
所述第一控制器用于读取所述CSR单元中配置的所述目标线程号;控制所述第二控制器根据所述目标线程号,从所述存储单元中读取所述目标线程的数据,并控制所述第二控制器将所述目标线程的数据写入所述微处理器;
所述第一控制器还用于响应于所述微处理器发送的线程切换信息,在确定在所述目标线程的数据写入所述微处理器的情况下,向所述微处理器发送可切换线程的响应信号,以使所述微处理器从所述当前线程切换至所述目标线程;控制所述第二控制器从所述微处理器中读取所述当前线程的数据,并控制所述第二控制器将所述当前线程的数据写入所述存储单元。
2.根据权利要求1所述的装置,其特征在于,所述第二控制器具体用于:
从所述微处理器中读取所述当前线程的数据及当前线程号;
根据所述当前线程号确定所述当前线程在所述存储单元中对应的存储地址,并将所述当前线程的数据写入所述存储地址。
3.根据权利要求1所述的装置,其特征在于,所述第一控制器具体用于:
在读取所述CSR单元中配置的所述目标线程号后,切换至迁移状态,并在控制所述第二控制器将所述目标线程的数据写入所述微处理器后,结束所述迁移状态;
响应于所述微处理器发送的线程切换信息,检测是否处于所述迁移状态;
若处于所述迁移状态,则向所述微处理器发送等待信息,直至所述迁移状态结束后,向所述微处理器发送可切换线程的响应信号;
若未处于所述迁移状态,则向所述微处理器发送所述响应信号。
4.根据权利要求1所述的装置,其特征在于,所述CSR单元还用于:
通过高级外围总线,获取运行模式信息;所述运行模式信息用于指示所述多线程任务处理装置的运行模式;
当所述运行模式为多线程模式时,所述第一控制器执行所述读取所述CSR单元中配置的所述目标线程号的步骤。
5.根据权利要求1所述的装置,其特征在于,所述第一控制器具体用于:
通过切换控制接口,接收所述微处理器发送的线程切换信息;
并通过所述切换控制接口,向所述微处理器发送可切换线程的响应信号。
6.根据权利要求1所述的装置,其特征在于,所述第二控制器具体用于:
通过BGC接口,将所述目标线程的数据写入所述微处理器处于非活跃状态的寄存器;
并通过所述BGC接口,从所述微处理器处于非活跃状态的寄存器中读取所述当前线程的数据。
7.根据权利要求1所述的装置,其特征在于,所述存储单元为静态随机存取存储SRAM,所述SRAM中包括多个依次排列的任务空间,每个任务空间用于存储所对应的线程的数据。
8.一种多线程任务处理方法,其特征在于,所述方法包括:
接收微处理器发送的配置信息;所述配置信息中包括所述微处理器从当前线程将要切换至的目标线程的目标线程号;
根据所述目标线程号,从存储单元中读取所述目标线程的数据,并将所述目标线程的数据写入所述微处理器;
响应于所述微处理器发送的线程切换信息,在确定在所述目标线程的数据写入所述微处理器的情况下,向所述微处理器发送可切换线程的响应信号,以使所述微处理器从所述当前线程切换至所述目标线程;
从所述微处理器中读取所述当前线程的数据,并将所述当前线程的数据写入所述存储单元。
9.根据权利要求8所述的方法,其特征在于,所述从所述微处理器中读取所述当前线程的数据,并将所述当前线程的数据写入所述存储单元,包括:
从所述微处理器中读取所述当前线程的数据及当前线程号;
根据所述当前线程号确定所述当前线程在所述存储单元中对应的存储地址,并将所述当前线程的数据写入所述存储地址。
10.一种芯片,其特征在于,包括如权利要求1-7任一项所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410337199.0A CN118034783A (zh) | 2024-03-22 | 2024-03-22 | 一种多线程任务处理装置、方法及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410337199.0A CN118034783A (zh) | 2024-03-22 | 2024-03-22 | 一种多线程任务处理装置、方法及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118034783A true CN118034783A (zh) | 2024-05-14 |
Family
ID=90996868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410337199.0A Pending CN118034783A (zh) | 2024-03-22 | 2024-03-22 | 一种多线程任务处理装置、方法及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118034783A (zh) |
-
2024
- 2024-03-22 CN CN202410337199.0A patent/CN118034783A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6089349B2 (ja) | マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム | |
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
TWI335512B (en) | Technique for using memory attributes | |
US20240264940A1 (en) | Write data cache method and system, device, and storage medium | |
US20060059489A1 (en) | Parallel processing system, interconnection network, node and network control method, and program therefor | |
JP2016508647A5 (zh) | ||
US9229765B2 (en) | Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task | |
KR100895536B1 (ko) | 데이터 전송 방법, 시스템 및 컴퓨터 판독가능 매체 | |
US11656967B2 (en) | Method and apparatus for supporting persistence and computing device | |
JP6028415B2 (ja) | 仮想サーバ環境のデータ移行制御装置、方法、システム | |
WO2015039582A1 (zh) | 一种虚拟资源分配方法及装置 | |
CN118034783A (zh) | 一种多线程任务处理装置、方法及芯片 | |
US8117626B2 (en) | Asynchronous remote procedure calling method and computer product in shared-memory multiprocessor | |
JP3667585B2 (ja) | 分散メモリ型並列計算機及びそのデータ転送終了確認方法 | |
JP3108042B2 (ja) | マルチノード情報処理システムにおけるチケット分配方法 | |
KR100978083B1 (ko) | 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 | |
JP4818820B2 (ja) | バスシステムおよびバススレーブならびにバス制御方法 | |
KR20100100163A (ko) | 데이터 전달 시스템, 장치 및 방법 | |
JP6206524B2 (ja) | データ転送装置、データ転送方法、プログラム | |
CN116149575B (zh) | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 | |
JP2785738B2 (ja) | 分散メモリ型マルチプロセッサ情報処理システム | |
JP2010026575A (ja) | スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム | |
WO2011030498A1 (ja) | データ処理装置及びデータ処理方法 | |
Shi et al. | DFlow: Efficient Dataflow-based Invocation Workflow Execution for Function-as-a-Service | |
JP2021149293A (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 |