CN113946445A - 一种基于asic的多线程模块及多线程控制方法 - Google Patents
一种基于asic的多线程模块及多线程控制方法 Download PDFInfo
- Publication number
- CN113946445A CN113946445A CN202111203876.2A CN202111203876A CN113946445A CN 113946445 A CN113946445 A CN 113946445A CN 202111203876 A CN202111203876 A CN 202111203876A CN 113946445 A CN113946445 A CN 113946445A
- Authority
- CN
- China
- Prior art keywords
- thread
- instruction
- module
- register
- priority
- 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 22
- 239000000725 suspension Substances 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 72
- 238000012545 processing Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 4
- 230000003993 interaction Effects 0.000 abstract description 9
- 238000005457 optimization Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
Images
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种基于ASIC的多线程模块及多线程控制方法。现有方法无法做到兼顾效率和灵活性。本发明的多线程模块包括模块功能内核、多线程接口组、多线程优先级仲裁模块。模块功能内核用于读取、解析并执行经仲裁胜出的线程的指令,包括总线读写模块、指令解析模块、寄存器配置模块、功能执行模块。多线程接口组包括多个线程接口,每个线程接口都有独立的线程寄存器、线程指令、线程中断,每个线程寄存器包括线程挂起寄存器、线程复位寄存器、线程颗粒度寄存器、线程优先级寄存器、线程上下文寄存器、指令提交寄存器。多线程优先级仲裁模块用于多个线程之间的优先级仲裁。本发明实现了节省资源开销、提高线程调度效率和优化软硬件交互。
Description
技术领域
本发明属于专用集成电路技术领域,具体涉及一种基于ASIC的多线程模块及多线程控制方法。
背景技术
ASIC(专用集成电路)设计中,多线程可以分为多核多线程和单核多线程。多核多线程可以认为是简单的模块堆叠,优点是硬件模块设计不需要考虑多线程相关,性能高,缺点是资源较为浪费。单核多线程只有一个硬件模块,通过全软件、软硬件结合或全硬件实现多线程机制。现今的多数多线程是通过软件层面实现的,软件的使用和管理的缺点包括优先级切换操作处理时间长、软硬件交互性能不足、离线编译指令的完整性难以保证。特别是对于一些具有或部分具有内存到内存、多master调用、批处理、高复用等特点的模块,这些问题尤为突出。例如,在没有多线程接口的模块,软件每次将指令写到DDR缓存后都需要进行主动刷CACHE操作,然后再提交给硬件模块,或者软件检测到硬件完成中断后才将指令提交给硬件,这样串行的软硬件交互方式会让硬件在很多时候处于空闲状态,降低了硬件模块的执行效率。一种解决方法是使用循环指令缓存,但是对软件使用要求较高,提交指令的时候为了避免中断误判问题(最后一次指令提交后等完成中断,但是等到的中断可能是上次提交指令的完成中断),需要通过关中断以及软硬件握手来保证不会出错。一般来说,全软件效率较低,全硬件灵活性不足,这两种方法无法做到兼顾效率和灵活性。
发明内容
本发明的一个目的是提供一种基于ASIC的多线程模块。
本发明提出的基于ASIC的多线程模块存在于硬件模块,多线程模块包括模块功能内核、多线程接口组、多线程优先级仲裁模块。其中:
模块功能内核是一个单核功能模块,用于读取、解析并执行经仲裁胜出的线程的指令,包括总线读写模块、指令解析模块、寄存器配置模块、功能执行模块。
多线程接口组包括多个线程接口,每个线程接口都有独立的线程寄存器、线程指令、线程中断,用于为多个主控提供能够同时调用一个模块功能内核的访问接口,主控为中央处理器或硬件模块。每个线程都有各自不同的AXI总线读写标识符,单一硬件模块通过多个线程接口实现同时访问高级安全区域和非高级安全区域。
每个线程接口的线程寄存器包括通过软件配置的线程挂起寄存器、线程复位寄存器、线程颗粒度寄存器、线程优先级寄存器、线程上下文寄存器、指令提交寄存器。其中,线程挂起寄存器用于主动将对应的线程挂起;线程复位寄存器用于复位对应的线程上下文寄存器,以及复位多线程优先级仲裁模块的中间变量寄存器;线程颗粒度寄存器用于配置对应的线程的最小执行指令颗粒度,模块功能内核在执行完该线程的最小颗粒度指令之前,不会挂起该线程或者切换到下一个线程;线程优先级寄存器用于配置对应的线程的优先级;线程上下文寄存器用于寄存指令之间传递的上下文参数;指令提交寄存器用于描述每次提交指令的起始地址和提交指令长度。
线程指令包括线程锁指令、空指令,均由软件或编译器在线程指令中设置。线程锁指令用于将需要连续执行的指令所在的线程加锁,模块功能内核解析到线程锁指令后,内部的线程优先级仲裁会一直选择被加锁线程中的指令来让硬件内核执行,直到线程锁解锁后,才会恢复根据线程的优先级进行仲裁。空指令用于将硬件无法实现的功能交由内核软件实现,模块功能内核解析到空指令后,直接挂起,并发出空指令中断。
多线程优先级仲裁模块,用于多个线程之间的优先级仲裁,模块功能内核执行仲裁胜出的线程的指令。
本发明的另一个目的是提供一种基于ASIC的多线程模块的多线程控制方法。
本发明的多线程控制方法由软硬件结合方式实现;软件通过线程寄存器和线程指令配置线程的启动、挂起和配置优先级;硬件进行线程间优先级仲裁,并决定线程挂起或切换时间点,保证指令前后的完整性,硬件执行完线程任务或识别到特定指令后上报中断告知软件。具体流程如下:
步骤(1)软件为硬件模块的模块功能内核的寄存器配置模块配置多组线程寄存器,以及为硬件功能执行模块配置控制寄存器;每组线程控制寄存器包括线程挂起寄存器、线程复位寄存器、线程颗粒度寄存器、线程优先级寄存器、线程上下文寄存器、指令提交寄存器;
步骤(2)检测硬件模块是否启动,如果启动,模块功能内核执行多线程优先级仲裁模块仲裁胜出的线程的指令,否则进入等待状态;
步骤(3)每个线程都各自有一份指令提交给指令提交寄存器,用于描述每次提交指令的起始地址和提交指令长度等,起始地址为指令在DDR内存中的位置;胜出的线程根据指令提交寄存器内的信息通过总线读写模块读取DDR内存中的指令;
步骤(4)线程通过指令解析模块进行指令解析;
步骤(5)指令解析完成后,功能执行模块执行该指令。
其中,多线程优先级仲裁模块的优先级仲裁具体是:
步骤(1)多线程优先级仲裁模块开启后,首先进行线程优先级查询,硬件模块获取每个线程的优先级并进行比较,得到最高优先级线程;
步骤(2)判断最高优先级线程是否有待执行任务:如果有,功能执行模块获得的优先级权限,进入最高优先级线程执行任务指令;如果没有,则返回步骤(1),再次查询线程优先级;
步骤(3)最高优先级线程进入工作,执行一个颗粒度大小的指令;
步骤(4)每执行完一个线程颗粒度大小的指令后返回步骤(1),再次查询线程优先级:如果查询到的最高优先级线程不是当前执行的优先级线程,或者查询到的存在当前执行的线程优先级相同的线程,则进行线程切换。
本发明提出的基于ASIC的多线程模块及多线程控制方法帮助时分复用硬件,减少两次调用之间的硬件闲置时间开销;可以由硬件决定切换的时间点,保证指令前后的完整性;可以实现线程优先级的随时切换,可以挂起低优先级任务,切换到高优先级任务;可以让软件不用实现硬件实时,降低了软件实时性要求;可以通过不同线程区分不同的总线读写ID来实现安全区和非安全区共享同一个硬件模块;可以实现多个硬件核之间的相互调用;“线程挂起+空指令+预留功能模式”可以解决芯片后期的功能扩展、BUG掩盖等问题。
采用本发明,即使离线编译好的指令也可以无缝地实现软硬件调度,让内核态软件高效地进行功能扩展。本发明达到节省资源开销、提高线程调度效率和优化软硬件交互的有益效果。
附图说明
图1为硬件模块多线程软硬件交互接口示意图;
图2为软件多核直接调用硬件多线程接口示意图;
图3为软件多核间接调用硬件多线程接口示意图;
图4为多线程控制方法流程示意图;
图5为多线程优先级仲裁模块的优先级仲裁流程图;
图6为静态颗粒度示意图;
图7为动态颗粒度示意图;
图8为线程锁指令实现流程图;
图9为空指令实现示意图;
图10为线程切换示意图。
具体实施方式
本发明提出的基于ASIC的多线程模块存在于硬件模块,多线程模块包括模块功能内核、多线程接口组、多线程优先级仲裁模块。其中:
模块功能内核是一个单核功能模块,用于读取、解析并执行经仲裁胜出的线程的指令,包括总线读写模块、指令解析模块、寄存器配置模块、功能执行模块。
以下结合附图对本发明做进一步详细说明。
如图1所示,软件通过APB或AHB总线接口110、线程中断120、DDR内存130中四个线程的指令(线程0指令缓存130a、线程1指令缓存130b、线程2指令缓存130c、线程3指令缓存130d)与硬件模块140交互。
硬件模块支持多个线程接口,本实施例中硬件模块140可以支持四个线程,APB总线110上软件具有五部分寄存器,包括四组线程寄存器140a、140b、140c和140d,以及硬件功能执行模块的控制寄存器140e。每组线程寄存器包括通过软件配置的线程挂起寄存器、线程复位寄存器、线程颗粒度寄存器、线程优先级寄存器、线程上下文寄存器、指令提交寄存器。
线程中断120为四比特位宽,分别对应四个线程,芯片系统端根据实际线程使用情况决定四比特中断线的连接,不使用的中断线悬空。
硬件多线程接口支持软件多核调用,主要有两种方式:多核直接调用和多核间接调用。
多核直接调用方式如图2所示,以四个线程为例,四个核(主控核150、处理核一160、处理核二170、处理核三180)可以直接访问四个线程寄存器(线程0寄存器140a、线程1寄存器140b、线程2寄存器140c、线程3寄存器140d)和四根中断信号线,其中主控核150连接硬件功能执行模块的控制寄存器140e。
多核间接调用方式图3所示,由一个主控核150与硬件多线程接口交互,其余处理核(处理核一160、处理核二170、处理核三180)均与主控核150进行交互。这种方式可以支持任意多的处理核与主控核交互实现调用硬件模块140。
硬件多线程接口可以很好的解决软硬件交互效率不足的问题,软件可以向不同的线程的指令缓存中不断的添加指令,每次提交指令前需要刷CACHE,但是可以不同的线程之间乒乓操作,将刷CACHE时间掩盖在硬件工作时间内,如果软件提交指令足够就能保证硬件一直保持工作状态。
以两个线程乒乓为例。当硬件模块140执行完毕线程0指令缓存130a中的指令,开始执行线程1指令缓存130b中的指令;此时软件CPU接收到线程0结束中断,可以向线程0指令缓存130a中提交新的指令。依次类推,当CPU向线程0提交指令完毕,且硬件模块140执行完毕线程1指令缓存130b中的指令,开始执行线程0指令缓存130a中的指令;此时软件CPU接收到线程1结束中断,向线程1指令缓存130b提交新的指令。
如图4所示,基于ASIC的多线程模块的工作流程如下:
步骤(1)软件为硬件模块140的模块功能内核的寄存器配置模块配置寄存器,本实施例中配置的寄存器包括四组线程寄存器140a、140b、140c和140d,以及为硬件功能执行模块配置控制寄存器140e。一组线程寄存器包括线程挂起寄存器、线程复位寄存器、线程颗粒度寄存器、线程优先级寄存器、线程上下文寄存器、指令提交寄存器。
步骤(2)检测硬件模块是否启动,如果启动,模块功能内核执行多线程优先级仲裁模块仲裁胜出的线程的指令,否则进入等待状态。
步骤(3)每个线程都各自有一份指令提交给指令提交寄存器,用于描述每次提交指令的起始地址和提交指令长度等,起始地址为指令在DDR内存130中的位置;胜出的线程根据指令提交寄存器内的信息通过总线读写模块读取DDR内存130中的指令。
步骤(4)线程通过指令解析模块进行指令解析。
步骤(5)指令解析完成后,功能执行模块执行该指令。
其中,多线程优先级仲裁模块的优先级仲裁流程如图5所示:
步骤(1)多线程优先级仲裁模块开启后,首先进行线程优先级查询,硬件模块获取每个线程的优先级并进行比较,得到四个线程中的最高优先级线程。
步骤(2)判断最高优先级线程是否有待执行任务:如果有,功能执行模块获得的优先级权限,进入最高优先级线程执行任务指令;如果没有,则返回步骤(1),再次查询线程优先级。
步骤(3)最高优先级线程进入工作,执行一个颗粒度大小的指令。
步骤(4)每执行完一个线程颗粒度大小的指令后返回步骤(1),再次查询线程优先级:如果查询到的最高优先级线程不是当前执行的优先级线程,或者查询到的存在当前执行的线程优先级相同的线程,则进行线程切换。
软件每次提交指令都更新指令的起始地址和指令个数,并且只有等到前一次提交指令执行完毕后才能再次提交新的指令;如果想要在前一次提交指令未完成前,提前提交新的指令,需要采用线程换入换出实现。
线程颗粒度用于表示多线程优先级仲裁模块进行线程切换的最小指令打包单元,线程颗粒度可以采用以下两种形式之一:
如图6所示,一种是线程颗粒度寄存器配置的静态颗粒度,线程0指令缓存600。若配置颗粒度为一条指令,则指令一610为一个颗粒度、指令二620为第二个颗粒度。若配置颗粒度为两条指令,则指令一610和指令二620打包为一个颗粒度。
如图7所示,另一种是动态颗粒度,对于线程1指令缓存700,配置有线程锁指令710,线程锁指令710即线程锁开启的指令。线程锁指令一般由指令生成的应用端关心,应用在生成指令时知道前后指令之间有没有依赖关系,可以在生成指令时同时加上线程锁,这样驱动可以完全不关心,硬件模块会等线程锁锁住的指令全部执行完才会进行线程切换。指令执行过程中,如果遇到线程锁指令710,则锁住的未执行的下一条指令。如果当前已经执行的指令数大于等于线程颗粒度寄存器配置的静态颗粒度,则完成下一条指令后直接进行线程切换。对于线程1,若配置颗粒度为一条指令,则指令一720为一个颗粒度、线程锁指令710和指令二730打包为第二个颗粒度。若配置颗粒度为两条指令,则指令一720为一个颗粒度、线程锁指令710和指令二730打包为一个颗粒度。做完指令一720和线程锁指令710两条指令时,由于执行的最后一条指令为线程锁指令,则继续做完指令二730后再切换线程。
线程锁指令实现流程如图8所示:
步骤(1)开启当前线程新的指令;
步骤(2)指令解析模块进行指令解析后得到线程锁指令;
步骤(3)功能执行模块执行线程锁指令;
步骤(4)当线程锁指令为1时,表示开启线程锁,执行步骤(1),即强制执行当前线程的下一条指令;当线程锁指令为0时,表示未开启线程锁,执行步骤(5);
步骤(5)查询当前线程连续执行的指令数:如果指令数大于等于线程指令颗粒度,执行步骤(6);否则返回步骤(1),继续执行当前线程的后续指令;
步骤(6)多线程优先级仲裁模块进行线程切换。
对于具有较大下上文交互需求的指令组合,就必须通过线程锁形式实现,上下文寄存器只是适合较小上下文交互需求的场景。
如图9所示,在线程指令缓存910中可以插入空指令920,硬件解析到空指令后直接挂起,并发出空指令中断。空指令实现过程是:若当前的空指令没有加线程锁,则主动挂起当前线程后线程权限被切走,先执行其他线程的指令;若当前的空指令加了线程锁,则硬件主动挂起当前线程后线程权限不被切走,整个硬件模块挂起等待软件恢复该线程,不执行其他线程的指令,等到软件CPU930通过寄存器重启当前线程后,继续获取并执行当前线程的下一条指令。
应用场景主要是可以支持将一些硬件无法实现或者太复杂的功能交由内核软件实现,或者芯片遇到应用新增需求功能的软件扩展实现,可以直接以新增一种功能定义的形式实现,驱动和应用端都不需要额外的交互,在外部API看来硬件模块本来就支持这类功能。需要硬件模块在设计时预留一些自定义的模式或功能配置描述。
线程切换如图10所示:当前为线程0执行状态1010,默认颗粒度为一条指令,硬件正在执行上文指令1020,此时进行换入换出操作;软件首先将线程1010挂起并保存现场(上下文保护等),然后对线程1010复位后,换入新的指令1030,线程提交、线程复位操作后继续执行线程的下文指令1050。
线程挂起是指将某个线程挂起,其他线程1040可以继续工作,被挂起的线程0会从线程优先级查询列表中移除,被挂起线程的寄存器可读写、可提交指令,但是被挂起线程无法执行,软件在线程挂起后再次提交指令时,硬件模块会记录累加该线程提交的指令数量,软件需要保证指令缓存有足够的空间可以保存提交的指令。
线程上下文的应用:当AB两个功能需要两次指令配置实现,且B功能需要用到A功能的输出结果。有两种实现方式:第一种是驱动需要关心功能A、功能B以及两者传递的参数C,功能A完成后上报中断,驱动获取参数C,然后实时生成指令配置给功能B。第二种是相对驱动透明,应用端打包生成功能A和功能B的指令,其中两者传递的参数C通过线程上下文进行传递,功能A完成后将参数C写入到线程上下文寄存器中,功能B执行时直接从线程上下文寄存器中获取参数。当然,这个上下文不仅仅是寄存器,也可以是DDR中的某个地址段存储的内容,这个由具体功能定义,一般数据量不大的就用寄存器实现。
Claims (8)
1.一种基于ASIC的多线程模块,存在于硬件模块,其特征在于:所述的多线程模块包括模块功能内核、多线程接口组、多线程优先级仲裁模块;其中:
所述的模块功能内核是一个单核功能模块,用于读取、解析并执行经仲裁胜出的线程的指令,包括总线读写模块、指令解析模块、寄存器配置模块、功能执行模块;
所述的多线程接口组包括多个线程接口,每个线程接口都有独立的线程寄存器、线程指令、线程中断,用于为多个主控提供能够同时调用一个模块功能内核的访问接口,主控为中央处理器或硬件模块;每个线程都有各自不同的AXI总线读写标识符,单一硬件模块通过多个线程接口实现同时访问;
每个线程接口的线程寄存器包括通过软件配置的线程挂起寄存器、线程复位寄存器、线程颗粒度寄存器、线程优先级寄存器、线程上下文寄存器、指令提交寄存器;其中,线程挂起寄存器用于主动将对应的线程挂起;线程复位寄存器用于复位对应的线程上下文寄存器,以及复位多线程优先级仲裁模块的中间变量寄存器;线程颗粒度寄存器用于配置对应的线程的最小执行指令颗粒度,模块功能内核在执行完该线程的最小颗粒度指令之前,不会挂起该线程或者切换到下一个线程;线程优先级寄存器用于配置对应的线程的优先级;线程上下文寄存器用于寄存指令之间传递的上下文参数;指令提交寄存器用于描述每次提交指令的起始地址和提交指令长度;
所述的多线程优先级仲裁模块,用于多个线程之间的优先级仲裁,模块功能内核执行仲裁胜出的线程的指令。
2.如权利要求1所述的一种基于ASIC的多线程模块,其特征在于:所述的线程指令包括线程锁指令,线程锁指令由软件或编译器在线程指令中设置,用于将需要连续执行的指令所在的线程加锁,模块功能内核解析到线程锁指令后,内部的线程优先级仲裁一直选择被加锁线程中的指令来让硬件内核执行,直到线程锁解锁后,才会恢复根据线程的优先级进行仲裁。
3.如权利要求1所述的一种基于ASIC的多线程模块,其特征在于:所述的线程指令包括空指令,空指令由软件或编译器在线程指令中设置,用于将硬件无法实现的功能交由内核软件实现,模块功能内核解析到空指令后,直接挂起,并发出空指令中断。
4.基于ASIC的多线程模块的多线程控制方法,其特征在于:由软硬件结合方式实现;软件通过线程寄存器和线程指令配置线程的启动、挂起和配置优先级;硬件进行线程间优先级仲裁,并决定线程挂起或切换时间点,保证指令前后的完整性,硬件执行完线程任务或识别到特定指令后上报中断告知软件;具体流程如下:
步骤(1)软件为硬件模块的模块功能内核的寄存器配置模块配置多组线程寄存器,以及为硬件功能执行模块配置控制寄存器;每组线程控制寄存器包括线程挂起寄存器、线程复位寄存器、线程颗粒度寄存器、线程优先级寄存器、线程上下文寄存器、指令提交寄存器;
步骤(2)检测硬件模块是否启动,如果启动,模块功能内核执行多线程优先级仲裁模块仲裁胜出的线程的指令,否则进入等待状态;
步骤(3)每个线程都各自有一份指令提交给指令提交寄存器,用于描述每次提交指令的起始地址和提交指令长度等,起始地址为指令在DDR内存中的位置;胜出的线程根据指令提交寄存器内的信息通过总线读写模块读取DDR内存中的指令;
步骤(4)线程通过指令解析模块进行指令解析;
步骤(5)指令解析完成后,功能执行模块执行该指令。
5.如权利要求4所述的基于ASIC的多线程模块的多线程控制方法,其特征在于,多线程优先级仲裁模块的优先级仲裁具体是:
步骤(1)多线程优先级仲裁模块开启后,首先进行线程优先级查询,硬件模块获取每个线程的优先级并进行比较,得到最高优先级线程;
步骤(2)判断最高优先级线程是否有待执行任务:如果有,功能执行模块获得的优先级权限,进入最高优先级线程执行任务指令;如果没有,则返回步骤(1),再次查询线程优先级;
步骤(3)最高优先级线程进入工作,执行一个颗粒度大小的指令;
步骤(4)每执行完一个线程颗粒度大小的指令后返回步骤(1),再次查询线程优先级:如果查询到的最高优先级线程不是当前执行的优先级线程,或者查询到的存在当前执行的线程优先级相同的线程,则进行线程切换。
6.如权利要求5所述的基于ASIC的多线程模块的多线程控制方法,其特征在于:对于一个或多个线程指令缓存配置有线程锁指令,即线程锁开启的指令;指令执行过程中,如果遇到线程锁指令,则锁住的未执行的下一条指令;如果当前已经执行的指令数大于等于线程颗粒度寄存器配置的静态颗粒度,则完成下一条指令后直接进行线程切换。
7.如权利要求6所述的基于ASIC的多线程模块的多线程控制方法,其特征在于:线程锁指令实现流程具体是:
步骤(1)开启当前线程新的指令;
步骤(2)指令解析模块进行指令解析后得到线程锁指令;
步骤(3)功能执行模块执行线程锁指令;
步骤(4)当线程锁指令为1时,表示开启线程锁,执行步骤(1),即强制执行当前线程的下一条指令;当线程锁指令为0时,表示未开启线程锁,执行步骤(5);
步骤(5)查询当前线程连续执行的指令数:如果指令数大于等于线程指令颗粒度,执行步骤(6);否则返回步骤(1),继续执行当前线程的后续指令;
步骤(6)多线程优先级仲裁模块进行线程切换。
8.如权利要求7所述的基于ASIC的多线程模块的多线程控制方法,其特征在于:在一个或线程指令缓存中插入空指令,硬件解析到空指令后直接挂起,并发出空指令中断;实现过程具体是:若当前的空指令没有加线程锁,则主动挂起当前线程后线程权限被切走,先执行其他线程的指令;若当前的空指令加了线程锁,则硬件主动挂起当前线程后线程权限不被切走,整个硬件模块挂起等待软件恢复该线程,不执行其他线程的指令,等到软件CPU通过寄存器重启当前线程后,继续获取并执行当前线程的下一条指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111203876.2A CN113946445A (zh) | 2021-10-15 | 2021-10-15 | 一种基于asic的多线程模块及多线程控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111203876.2A CN113946445A (zh) | 2021-10-15 | 2021-10-15 | 一种基于asic的多线程模块及多线程控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113946445A true CN113946445A (zh) | 2022-01-18 |
Family
ID=79330612
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111203876.2A Pending CN113946445A (zh) | 2021-10-15 | 2021-10-15 | 一种基于asic的多线程模块及多线程控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946445A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490074A (zh) * | 2022-01-30 | 2022-05-13 | 上海阵量智能科技有限公司 | 仲裁系统、方法、电子设备、存储介质及芯片 |
CN114584420A (zh) * | 2022-05-06 | 2022-06-03 | 艾德克斯电子(南京)有限公司 | 一种多机设备组网架构 |
CN117389712A (zh) * | 2023-12-12 | 2024-01-12 | 沐曦集成电路(南京)有限公司 | 一种gpu多线程调度管理系统 |
-
2021
- 2021-10-15 CN CN202111203876.2A patent/CN113946445A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490074A (zh) * | 2022-01-30 | 2022-05-13 | 上海阵量智能科技有限公司 | 仲裁系统、方法、电子设备、存储介质及芯片 |
CN114490074B (zh) * | 2022-01-30 | 2024-09-13 | 上海阵量智能科技有限公司 | 仲裁系统、方法、电子设备、存储介质及芯片 |
CN114584420A (zh) * | 2022-05-06 | 2022-06-03 | 艾德克斯电子(南京)有限公司 | 一种多机设备组网架构 |
CN114584420B (zh) * | 2022-05-06 | 2022-08-02 | 艾德克斯电子(南京)有限公司 | 一种多机设备组网架构 |
CN117389712A (zh) * | 2023-12-12 | 2024-01-12 | 沐曦集成电路(南京)有限公司 | 一种gpu多线程调度管理系统 |
CN117389712B (zh) * | 2023-12-12 | 2024-03-12 | 沐曦集成电路(南京)有限公司 | 一种gpu多线程调度管理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113946445A (zh) | 一种基于asic的多线程模块及多线程控制方法 | |
EP1839146B1 (en) | Mechanism to schedule threads on os-sequestered without operating system intervention | |
US8055872B2 (en) | Data processor with hardware accelerator, accelerator interface and shared memory management unit | |
EP3048527B1 (en) | Sharing idled processor execution resources | |
CN111857993B (zh) | 一种内核态调用用户态函数的方法 | |
US20070294702A1 (en) | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors | |
US7661115B2 (en) | Method, apparatus and program storage device for preserving locked pages in memory when in user mode | |
US9378069B2 (en) | Lock spin wait operation for multi-threaded applications in a multi-core computing environment | |
US20100125717A1 (en) | Synchronization Controller For Multiple Multi-Threaded Processors | |
US20110265093A1 (en) | Computer System and Program Product | |
WO2012016439A1 (zh) | 业务管理方法和装置、以及设备 | |
US9311142B2 (en) | Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency | |
WO2021022964A1 (zh) | 一种基于多核系统的任务处理方法、装置及计算机可读存储介质 | |
US20240143392A1 (en) | Task scheduling method, chip, and electronic device | |
WO2019051120A1 (en) | IMPROVING USER SPACE LOCK EFFICIENCY USING STATUS C AND TURBO AMPLIFICATION | |
CN115033356A (zh) | 一种基于异构可重构的动态资源调度方法及系统 | |
US20240004695A1 (en) | Method and Apparatus for Processing Interrupt Request | |
WO2023160503A1 (zh) | 一种访问逻辑ip的软硬件交互方法及装置 | |
US8312474B2 (en) | Method, apparatus, and system for applying timed operations to non-timed functions | |
CN108845969B (zh) | 适用于不完全对称多处理微控制器的操作控制方法及操作系统 | |
WO2023077875A1 (zh) | 用于并行执行核心程序的方法和装置 | |
US20030014558A1 (en) | Batch interrupts handling device, virtual shared memory and multiple concurrent processing device | |
JPH08292932A (ja) | マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法 | |
US7996848B1 (en) | Systems and methods for suspending and resuming threads | |
CN114281529A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 310012 5-6 / F, block a, East Software Park Innovation Building, 90 Wensan Road, Hangzhou City, Zhejiang Province Applicant after: Hangzhou Guoxin Microelectronics Co.,Ltd. Address before: 310012 5-6 / F, block a, East Software Park Innovation Building, 90 Wensan Road, Hangzhou City, Zhejiang Province Applicant before: HANGZHOU NATIONALCHIP SCIENCE & TECHNOLOGY Co.,Ltd. Country or region before: China |