CN119473399A - 一种npu指令级上下文切换方法及装置 - Google Patents

一种npu指令级上下文切换方法及装置 Download PDF

Info

Publication number
CN119473399A
CN119473399A CN202411321981.XA CN202411321981A CN119473399A CN 119473399 A CN119473399 A CN 119473399A CN 202411321981 A CN202411321981 A CN 202411321981A CN 119473399 A CN119473399 A CN 119473399A
Authority
CN
China
Prior art keywords
npu
module
instruction
task
data
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
Application number
CN202411321981.XA
Other languages
English (en)
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.)
Dalian University of Technology
Southeast University
Original Assignee
Dalian University of Technology
Southeast University
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 Dalian University of Technology, Southeast University filed Critical Dalian University of Technology
Priority to CN202411321981.XA priority Critical patent/CN119473399A/zh
Publication of CN119473399A publication Critical patent/CN119473399A/zh
Pending legal-status Critical Current

Links

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

本发明提供了一种NPU指令级上下文切换方法及装置,涉及数据处理技术领域,包括:接收到上下文切换指令时,禁用非刷新指令并等待正在执行的指令完成,将上下文数据存储到主存模块;完成后,恢复NPU模块的上下文切换相关指令,执行目标任务;目标任务执行完成后,恢复上下文数据到NPU模块,并恢复非刷新指令的执行。本发明针对现有NPU架构通常只能在算法边界或特定的上下文切换点支持有限的抢占,甚至无法进行抢占,导致高优先级任务必须等待低优先级任务完成,从而引发显著的优先级反转和/或关键性反转的问题进行优化,提出了一种从片上系统到指令集架构,再到操作系统内核的全栈式解决方案,实现了NPU指令级的抢占。

Description

一种NPU指令级上下文切换方法及装置
技术领域
本发明涉及数据处理技术领域,具体涉及一种NPU指令级上下文切换方法及装置。
背景技术
NPU上下文切换问题已经引起了研究界的广泛关注,相关研究主要分为软件方法和硬件方法两大类,然而,现有技术由于其结构特征和电路原理的限制,不可避免地存在一些问题和缺陷。第一,现有的NPU架构通常不支持抢占或仅支持有限的抢占,只能在算法边界或某些特定的上下文切换点进行抢占,这使得在任务调度时倘若低优先级/低关键度任务率先到达,高优先级/高关键度任务需要等待低优先级/低关键度任务完成,产生显著的优先级和/或关键性反转问题,其中,优先级反转指的是在具有不同优先级任务的系统中,低优先级任务持有一个资源,而高优先级任务需要该资源,因此高优先级任务被迫等待低优先级任务完成,这种情况下,低优先级任务执行期间阻碍了高优先级任务的执行,导致系统性能和实时性受到影响;关键性反转是优先级反转在混合关键系统中的一个特例,发生在系统退化模式中高关键任务的执行被低关键任务阻塞时,且这种阻塞会导致系统的高关键任务无法按时完成,关键性反转不仅影响任务按照其关键度排序进行执行,还可能对整个系统的安全性和可靠性产生严重影响。第二,由于NPU需要处理大量并行计算任务,其上下文切换通常涉及大量数据的保存和恢复,这一过程不仅耗时,还会导致系统性能的显著下降;第三,在进行上下文切换时,NPU的计算数据和配置数据的一致性难以保证,这可能导致在任务恢复时数据不一致,从而影响系统的稳定性和正确性。第四,由于传统上下文切换开销过大,一套高效的加速策略至关重要,它能够有效减少上下文切换的开销,优化资源利用,并在保障数据一致性的前提下,显著提高系统的整体性能和实时性。这种策略在设计上应综合考虑NP U的并行计算特点和任务调度需求,以确保在任务频繁切换的场景中依然能够保持高效和稳定的系统运行。
发明内容
本申请通过提供了一种NPU指令级上下文切换方法及装置,旨在解决现有NPU架构在抢占能力上的局限性问题,传统NPU架构通常不支持抢占或仅在算法边界或特定的上下文切换点支持有限的抢占,导致高优先级任务需要等待低优先级任务完成,从而产生显著的优先级反转和/或关键性反转问题。
本申请公开的第一个方面,提供了一种NPU指令级上下文切换方法,应用于NPU指令级上下文切换装置,所述装置包括软件模块和硬件模块,所述硬件模块包括NPU模块和主存模块,所述软件模块执行步骤包括:当接收到上下文切换指令时,获得NPU模块的第一类型排队指令序列、第一执行指令集和上下文数据,其中,第一类型排队指令为非刷新指令,所述第一执行指令集为接收到所述上下文切换指令时仍在执行的指令;对所述第一类型排队指令序列禁止执行,并等待所述第一执行指令集执行完成,将所述上下文数据存储至主存模块;当所述第一执行指令集执行完成时,获得所述NPU模块的第二类型指令序列,其中,第二类型指令为上下文切换相关指令;在所述NPU模块恢复所述第二类型指令序列,执行目标任务;当目标任务执行完成时,通过所述主存模块将所述上下文数据恢复至所述NPU模块,同时恢复所述第一类型排队指令序列的执行。
本申请公开的第二个方面,提供了一种NPU指令级上下文切换装置,所述装置包括:软件模块,所述软件模块用于执行上下文切换进程控制;硬件模块,包括:NPU模块,所述NPU模块用于实现上下文切换;主存模块,所述主存模块用于存储上下文数据;CPU模块,所述CPU模块用于协助所述软件模块执行上下文切换进程控制。
本申请中提供的一个或多个技术方案,至少具有如下技术效果或优点:
第一方面,本申请提供的一种NPU指令级上下文切换方法,在接收到上下文切换指令后,获取NPU模块的第一类型排队指令序列、仍在执行的第一执行指令集以及相关的上下文数据,确保了系统能够捕获到切换时刻的精确状态,为后续的切换过程奠定了基础;在获取到第一类型排队指令序列后,立即禁止其执行,确保NPU模块不会继续执行可能影响切换过程的指令,同时,等待第一执行指令集的完成,以便于后续可以将所有相关的上下文数据可以准确地存储至主存模块中;当第一执行指令集执行完成后,获得NPU模块的第二类型指令序列,这些指令序列的获取使得系统能够在切换过程中准确地控制NPU模块的状态和行为,确保切换过程的准确性和效率;在NPU模块恢复所述第二类型指令序列,执行目标任务,保证了系统在切换后能够快速响应新任务的执行需求,提高了系统的整体响应速度和效率;当目标任务执行完成后,通过主存模块将先前存储的上下文数据恢复至NPU模块,同时允许第一类型排队指令序列继续执行,恢复系统配置,保证了系统在完成高优先级任务后能够恢复到之前的低优先级任务执行状态,保持系统整体的稳定性和连续性。该NPU指令级上下文切换方法通过精确的软件模块执行步骤,有效管理和控制了NPU模块在多任务环境下的执行状态和数据流动,从而提高了系统的响应速度、任务切换的精确性和系统资源的有效利用率。
第二方面,本申请通过引入地址重映射器进一步增强了NPU指令级上下文切换的效率和资源利用率。地址重映射器通过动态调整DMA流的内存地址,实现任务在NPU中的高效硬件资源分配和管理。在上下文切换过程中,地址重映器能够有效地管理和控制数据在刮擦板(Scratchpad)中的流动,无需在切换时保存和恢复大量的工作区数据,从而显著减少了上下文切换的开销,加快了任务切换速度。通过这种方法,系统可以更灵活地划分和管理硬件资源,确保在多任务环境下,NPU能够快速响应并执行新任务,同时保持数据的一致性和系统的稳定性。该优化措施提升了系统的性能,为复杂计算任务的执行提供了坚实的保障。
第三方面,NPU指令级上下文切换装置通过优化软件和硬件之间的协同作用,实现了在系统中处理复杂计算任务的高效能力和灵活应对多任务环境的能力,它不仅提升了系统的性能和响应速度,还优化了系统资源的利用效率。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
图1为本申请实施例提供的一种NPU指令级上下文切换方法流程示意图;
图2为本申请实施例提供的一种NPU指令级上下文切换方法中不同抢占级别下的NPU任务所遭受的优先级和/或关键度反转阻塞时间示意图;
图3为本申请实施例提供的一种NPU指令级上下文切换装置结构示意图;
图4为本申请实施例提供的一种NPU指令级上下文切换装置架构的示例性结构示意图;
图5为本申请实施例提供的一种NPU指令级上下文切换装置的加载类指令的默认配置路径微架构和矩阵传输过程示意图;
图6为本申请实施例提供的一种NPU指令级上下文切换装置的地址重映射器的微架构示意图。
附图标记说明:软件模块10,硬件模块20,任务监视器11,中断处理程序12,任务调度器13,内存管理14,任务控制模块15,NPU模块21,主存模块22,CPU模块23,Gemmini-RT架构211,配置复制缓冲区212,数据默认配置通道213,地址重映射器24。
具体实施方式
本申请实施例通过提供一种NPU指令级上下文切换方法及装置,解决了现有NPU架构在抢占能力上的局限性问题,以及因该局限而产生的显著优先级反转和/或关键性反转问题。
在介绍了本申请基本原理后,下面将结合说明书附图来具体介绍本申请的各种非限制性的实施方式。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
实施例一,如图1所示,本申请实施例提供了一种NPU指令级上下文切换方法,应用于NPU指令级上下文切换装置,所述装置包括软件模块和硬件模块,所述硬件模块包括NPU模块和主存模块,所述软件模块执行步骤包括:
当接收到上下文切换指令时,获得NPU模块的第一类型排队指令序列、第一执行指令集和上下文数据,其中,第一类型排队指令为非刷新指令,所述第一执行指令集为接收到所述上下文切换指令时仍在执行的指令。
本申请实施例提供的一种NPU指令级上下文切换方法应用于NPU指令级上下文切换装置,所述装置包括软件模块和硬件模块,硬件模块包括NPU模块和主存模块,其中,NPU模块负责图形处理和上下文切换,主存模块用于存储上下文数据。
如图2所示,通过一个异构MCS示例提供了不同抢占级别下的NPU任务所遭受的优先级和/或关键度反转阻塞时间示意图,其中τx(Px,Lx)表示任务τx的优先级为Px,关键度为Lx,Px越小代表优先级越高。当NPU是非抢占式的,任务会经历显著的优先级和/或关键性反转,因为高优先级/关键性任务必须等到加速器完成所有正在进行的计算后才能继续执行。当NPU被设计为允许有限的抢占时,上下文切换的能力变得粗粒度。然而,由于抢占只能发生在执行算法的边界,系统仍然会遭遇相当大的优先级和/或关键性反转。当NPU配备了指令级别上下文切换功能时,系统实时响应能力和任务调度能力得到了大幅度增强。
在特定情况下,如中断信号、任务调度等,进行上下文切换,此时生成并发送上下文切换指令。当接收到上下文切换指令时,获得NPU模块的第一类型排队指令序列、第一执行指令集和上下文数据。
其中,第一类型排队指令是当前在NPU的指令队列中按照顺序等待执行的指令,为非刷新指令,即不包括那些需要清除或重置NPU状态的指令,包含加载、存储、预加载、计算等指令;第一执行指令集是在接收到上下文切换指令的那一刻,NPU正在执行的指令集,记录下这些正在执行的指令,以确保它们在上下文切换完成后能够继续执行;上下文数据包括计算数据、地址数据和配置数据等。
在接收到上下文切换指令时,准确地获取并保存当前NPU的指令和上下文数据,以便在切换任务时不会丢失重要的信息,并能在需要时恢复这些数据,确保系统的稳定运行。
对所述第一类型排队指令序列禁止执行,并等待所述第一执行指令集执行完成,将所述上下文数据存储至主存模块。
暂停NPU队列中非刷新指令的继续排队和执行,这可以通过设置一个标志位或控制信号来实现,使NPU忽略这些指令的执行请求。持续监控NPU的执行状态,确保正在执行的指令集,即第一执行指令集,能够完整地执行完毕,可以通过硬件寄存器或状态监控器获取执行状态,当所有指令执行完毕后,可以确认NPU已经处于空闲状态,可以进行上下文切换。在确认所有执行指令完成后,将采集到的上下文数据存储到主存模块中的预定位置,这确保了上下文数据的完整性和恢复时的可用性。
当所述第一执行指令集执行完成时,获得所述NPU模块的第二类型指令序列,其中,第二类型指令为上下文切换相关指令。
在第一执行指令集全部完成后,获得NPU模块的第二类型指令序列,这些指令是与上下文切换相关的特定指令,包括保存当前上下文、加载新上下文、初始化新任务等指令,通过任务调度器提取上下文切换相关指令,这些指令预先定义并存储在指令缓冲区中,用于确保上下文切换过程的正确执行。
在所述NPU模块恢复所述第二类型指令序列,执行目标任务。
将之前获取的第二类型指令序列加载到NPU模块,通过指令缓冲区或任务调度器,将这些指令逐条加载到NPU模块的指令队列中,并确保按顺序执行。加载并执行目标任务的初始指令,确保新任务能够正确启动,包括初始化任务的上下文、设置初始参数等,通过任务监视器或任务调度器,实时监控目标任务的执行状态,确保任务按预期进行。
当目标任务执行完成时,通过所述主存模块将所述上下文数据恢复至所述NPU模块,同时恢复所述第一类型排队指令序列的执行。
当目标任务执行完成后,从主存模块中读取之前存储的上下文数据,将上下文数据传输回NPU模块中的相应位置,将数据逐条恢复到对应的寄存器和内存位置,确保上下文数据的完整恢复。同时将之前暂停的第一类型排队指令序列重新加载到NPU模块的指令队列中,清除之前设置的禁止执行标志,恢复这些指令的执行。
此外,NPU中还包含了加速上下文切换的地址重映射器模块。
鉴于并非每个任务都需要使用所有的NPU资源,为了实现更高效的资源利用,本发明引入了一个地址重映器。这使得当本地内存足够时,可以进行有效的硬件分区,消除了在上下文切换过程中保存和恢复工作区数据的需求,从而加速了上下文切换过程。地址重映器通过拦截进入工作区的DMA数据流并加入动态偏移,将它们重定位到适当的存储区。这确保了从外部看,数据仍然像是被定向到工作区内的初始位置。本发明在工作区中建立了一个可配置大小的重映块,用于存储从原始地址到实际地址的映射,以促进地址转换和数据管理。具体来说,本发明为每个存储区分配了一个信号量,称为“存储区锁”,当存储区中加载了有效数据时,该信号量被激活。在任务异常或任务完成时的上下文切换过程中,操作系统通过查询重映块中的地址映射来识别涉及的存储区。然后,它会停用相应的信号量并清除该存储区内的数据。当DMA流发起对工作区的写请求时,系统会拦截该流,并在进入写队列前对工作区地址位应用动态偏移。该偏移将数据定位到由任务部分填充并锁定的存储区,或者定位到当前未锁定的存储区。系统随后锁定该存储区,并在重映块中记录地址的起始和结束位置。类似地,当DMA流请求从工作区读取数据时,系统会首先查询重映块以找到相应的映射,然后调整DMA流中的工作区地址位。当任务被抢占并随后恢复时,重映块会根据任务进入的新分配存储区调整目标地址。
进一步而言,所述硬件模块还包括CPU模块,所述软件模块包括增加了任务监视器、任务调度器和以及微调中断处理程序后的实时操作系统,任务监视器实时监测当前任务是否完成并包含一个定时器定期检查是否有新任务到达,包括:
当系统调用信号通过所述任务监视器时,CPU模块响应该中断,通过中断处理程序确定是否生成所述上下文切换指令;当当前中断是由任务监视器监测到当前任务完成所触发,调度器查找下一个需要执行的任务,并根据其之前是否执行过来确定是否生成所述上下文切换指令;当当前中断是由任务监视器中定时器定期检查所触发,调度器判断新到达任务优先级是否高于当前任务,根据此来确定是否生成所述上下文切换指令。
具体而言,当当前中断是由任务监视器监测到当前任务完成所触发时,调度器首先会检查当前任务的状态并确认其已完全执行完毕。随后,调度器开始查找下一个需要执行的任务。如果调度器发现该任务之前已经部分执行过,则会根据任务的状态信息和上下文数据,判断是否需要生成上下文切换指令。如果该任务的上下文数据已经存在,并且当前系统资源允许任务直接继续执行,则只生成部分上下文切换指令,即重新配置NPU和累加器中数据,而无需处理刮擦板中的运算数据,从而减少切换开销,加快任务的执行进程。如果该任务是新任务,则该任务将初始化后直接执行,而无需生成上下文切换指令。如若是其他情况,即该任务上下文数据需要重新加载,则调度器将生成上下文切换指令,确保系统能够正确切换到新任务的执行环境。
当当前中断是由任务监视器中定时器的定期检查所触发时,调度器首先会评估新到达任务的优先级。调度器将新任务的优先级与当前正在执行的任务优先级进行比较。如果新到达的任务优先级高于当前任务,则调度器会生成上下文切换指令,以便立即中止当前低优先级任务的执行,将系统资源调度给更高优先级的新任务,确保高优先级任务的及时响应。如果新任务的优先级低于或等于当前任务,调度器则可能选择继续执行当前任务,而不生成上下文切换指令。
CPU模块接收到任务监视器发出的中断信号,调用中断处理程序,中断处理程序转到任务调度器,调度器根据当前任务的执行状态、优先级和系统资源的使用情况,评估是否需要进行上下文切换,此处采用混合关键性系统理论模型的准则,具体地,混合关键性系统(MCS)是安全关键系统,其中不同关键性级别的功能集成在一个共享平台上,这些系统在实际应用中非常常见,例如,在汽车工业中,先进驾驶辅助系统(ADAS)可能涉及不同关键性级别的多种功能,其中碰撞避免属于高关键性,而路线规划则可能属于低关键性。为了满足MCSs中多样化功能的计算需求,例如运行深度神经网络(DNNs)的工作负载,硬件供应商开发了具有不同架构的片上系统,这些片上系统具有高度的异构性,也就是说,片上系统将通用CPU与异构协处理器相结合,以加速算法执行。
传统的混合关键性系统理论模型通常假设任务的最坏情况执行时间(WCET)是以不同程度的置信度估算的。任务的高关键性WCET(HI-WCET)与高置信度相关,但往往过于悲观,而低关键性WCET(LO-WCET)则不那么悲观,但置信度较低。正确性准则规定,如果所有任务在其LO-WCET内完成执行,那么它们都会在截止日期前完成。然而,如果任何高关键性任务(HI-task)的执行时间超过其LO-WCET,高关键性任务必须在其截止日期前完成执行。
为了满足上述准则,模式切换是一种直接的策略:系统最初在低关键性模式(LO-mode)下运行,假设所有任务的执行时间不会超过其LO-WCET。如果这一假设被违反,即如果任何任务未能在其LO-WCET之前完成,系统将切换到高关键性模式(HI-mode)。在HI-mode下,调度策略可能允许高关键性任务(HI-tasks)执行时间超过其LO-WCET,但确保其执行时间不会超过其HI-WCET。因此,为确保高关键性任务按时完成,低关键性任务(LO-tasks)可能需要被终止或在极少的时间预算内执行。
进一步而言,所述软件模块还包括任务控制模块,所述NPU模块还包括数据默认配置通道,将所述上下文数据存储至主存模块,包括:
所述上下文数据包括计算数据、地址数据和配置数据;将所述计算数据通过数据默认配置通道传输至所述主存模块;将所述配置数据传输至所述主存模块;将所述地址数据存储至所述任务控制模块。
任务控制模块是软件模块的一部分,负责管理任务的中断、恢复和执行控制,它可以与任务监视器和任务调度器协同工作,确保任务按优先级和执行要求进行调度和管理。数据默认配置通道是NPU模块中的一部分,用于在NPU和主存模块之间传输配置信息和上下文数据,它能够高效地处理数据传输,减少传输延迟,提高数据传输速度。
计算数据指在任务初始状态的输入数据以及任务执行过程中产生的中间结果和计算信息,包括某个算子的计算结果等,地址数据指任务执行时需要访问的内存地址信息,包括指令地址、数据地址等,配置数据指用于配置NPU工作状态和参数的数据信息,包括寄存器配置、缓存配置等。
将需要传输的计算数据打包成数据包,确保数据完整性,通过数据默认配置通道,将打包好的计算数据从NPU模块传输到主存模块,以确保任务切换时的数据不丢失。
配置数据在任务执行时需要保存,以便在任务恢复时重新加载,在上下文切换时,NPU模块收集当前任务的所有配置数据,将收集到的配置数据打包成标准化的数据包,启动配置数据的传输,将打包好的配置数据通过数据默认配置通道发送到主存模块。
地址数据在任务切换时需要保存,以便任务恢复时能够继续执行,在上下文切换时,NPU模块收集当前任务的所有地址数据,将收集到的地址数据打包成标准化的数据包,启动地址数据的存储过程,将打包好的地址数据存储到任务控制模块。
通过存储上下文数据,确保系统在任务上下文切换过程中能够高效地管理和保存关键数据,提高了系统的性能和可靠性。
进一步而言,所述NPU模块包括配置复制缓冲区,包括:
通过所述配置复制缓冲区存储所述NPU模块的先前执行的不同类别的配置指令。
配置复制缓冲区是NPU模块中的一个专用缓冲区,用于存储NPU模块的先前执行的不同类别的配置指令,配置复制缓冲区可以临时存储配置信息,确保在上下文切换和任务恢复过程中能够快速访问和加载这些指令。
配置指令是用于设置和调整NPU工作状态的指令,包括寄存器配置、缓存配置、计算单元配置等,配置指令在上下文切换过程中需要保存和恢复,以确保任务在切换后能够继续正确执行。
当任务在NPU上执行时,收集当前任务的所有配置指令,将收集到的配置指令存储到配置复制缓冲区中,以便在上下文切换时快速访问。在任务上下文切换时,将配置复制缓冲区中的配置指令传输到主存模块,确保这些指令在任务恢复时能够重新加载。当任务从上下文切换恢复时,从主存模块中获取配置指令,并将其重新加载到配置复制缓冲区,这样,NPU模块能够按照之前的配置状态继续执行任务,保障了数据一致性,确保任务能够无缝恢复。
通过配置复制缓冲区,能够高效地管理和存储配置指令,确保在任务上下文切换和恢复过程中能够快速访问和加载这些指令,这种方法优化了上下文切换过程,提高了系统的性能和可靠性。
进一步而言,将所述上下文数据存储至主存模块,包括:
通过流水线技术将所述上下文数据存储至主存模块。
流水线技术是一种提高数据处理效率的方法,将复杂的数据处理过程分解为多个阶段,每个阶段执行特定的任务,每个阶段可以与其他阶段并行工作,从而提高整体处理速度和效率,常见于处理器设计中,用于提高指令执行速度。
通过流水线技术存储上下文数据,具体地,将上下文数据的存储过程分解为多个阶段,例如,数据收集、数据打包、数据传输和数据存储,每个阶段独立执行,可以与其他阶段并行工作。
在任务执行过程中,NPU模块收集当前任务的所有上下文数据,将收集到的上下文数据按照类型进行分类。将分类好的上下文数据打包成标准化的数据包,以便传输和存储。通过数据默认配置通道启动数据传输过程,将打包好的上下文数据传输到主存模块,将传输到主存模块的数据包写入指定的存储位置,确保数据在任务恢复时能够快速访问。
通过将数据收集、打包、传输和存储分解为多个独立的阶段,流水线技术能够提高数据存储的效率和速度,确保在上下文切换过程中数据的完整性和快速存储,这种方法优化了上下文数据的管理,提高了系统的性能和可靠性。
进一步而言,当所述第一执行指令集执行完成时,获得所述NPU模块的第二类型指令序列,所述软件模块包括任务调度器,所述NPU模块包括配置复制缓冲区,之前包括:
通过任务调度器刷新NPU指令队列,判断非配置复制缓冲区是否具有指令;若不具有,获得所述NPU模块的第二类型指令序列;若具有,重复执行禁止指令及等待指令进程。
任务调度器负责管理NPU的指令队列,在上下文切换过程中,任务调度器刷新当前的指令队列,确保最新的指令状态被正确记录,刷新指令队列后,检查非配置复制缓冲区,即普通指令队列中,是否有指令在排队等待执行。
如果非配置复制缓冲区中没有排队的指令,任务调度器从NPU模块获取第二类型指令序列,这些指令与上下文切换相关,如保存和恢复上下文数据的指令。
如果非配置复制缓冲区中仍有排队的指令,继续禁止这些指令的执行,确保当前任务的上下文数据不会被新指令影响,任务调度器重复检查并等待这些指令的执行进程,直到所有排队指令执行完成。
通过这些步骤,能够高效地管理和执行上下文切换过程,确保上下文数据的完整性和任务的正确执行,这种方法提高了系统的性能和可靠性,优化了上下文切换过程。
综上所述,本申请实施例所提供的一种NPU指令级上下文切换方法具有如下技术效果:
在接收到上下文切换指令后,获取NPU模块的第一类型排队指令序列、仍在执行的第一执行指令集以及相关的上下文数据,确保了系统能够捕获到切换时刻的精确状态,为后续的切换过程奠定了基础;在获取到第一类型排队指令序列后,立即禁止其执行,确保NPU模块不会继续执行可能影响切换过程的指令,同时,等待第一执行指令集的完成,以便于后续可以将所有相关的上下文数据可以准确地存储至主存模块中;当第一执行指令集执行完成后,获得NPU模块的第二类型指令序列,这些指令序列的获取使得系统能够在切换过程中准确地控制NPU模块的状态和行为,确保切换过程的准确性和效率;在NPU模块恢复所述第二类型指令序列,执行目标任务,保证了系统在切换后能够快速响应新任务的执行需求,提高了系统的整体响应速度和效率;当目标任务执行完成后,通过主存模块将先前存储的上下文数据恢复至NPU模块,同时允许第一类型排队指令序列继续执行,保证了系统在完成高优先级任务后能够恢复到之前的低优先级任务执行状态,保持系统整体的稳定性和连续性。该NPU指令级上下文切换方法通过精确的软件模块执行步骤,有效管理和控制了NPU模块在多任务环境下的执行状态和数据流动,从而提高了系统的响应速度、任务切换的精确性和系统资源的有效利用率。
实施例二,如图3所示,本申请实施例提供了一种NPU指令级上下文切换装置,所述装置包括:
软件模块10,所述软件模块10用于执行上下文切换进程控制;硬件模块20,包括:NPU模块21,所述NPU模块用于实现上下文切换;主存模块22,所述主存模块用于存储上下文数据;CPU模块23,所述CPU模块用于协助所述软件模块10执行上下文切换进程控制。
本申请实施例提供的一种NPU指令级上下文切换装置,主要包括软件模块10和硬件模块20,其中,软件模块10包括任务监视器、任务调度器和中断处理程序,用于执行上下文切换进程控制,负责管理和协调整个上下文切换过程中的软件逻辑,包括发出上下文切换指令、监控指令执行状态,以及在必要时协调硬件模块的操作,具体操作步骤参照实施例一对应部分。
硬件模块20包括NPU模块21、主存模块22、CPU模块23,其中,NPU模块21用于实现具体的上下文切换操作,在接收到软件模块发出的上下文切换指令后,负责保存当前任务的上下文数据,并在需要时恢复新任务的上下文数据,NPU模块通过硬件指令集执行这些操作,确保高效和快速的上下文切换。
主存模块22用于存储上下文数据,确保在任务切换过程中数据的安全和可靠性;CPU模块23用于协助软件模块执行上下文切换进程控制,CPU模块23通过处理器的计算能力和系统总线接口,支持软件模块在执行上下文切换时所需的处理能力和数据传输,CPU模块23在上下文切换过程中负责中断处理、系统调用响应以及与NPU模块的协调通信。
如图4所示,提供了一种NPU指令级上下文切换装置架构的示例性结构,其中,刮擦板等在本实施例中未说明的模块为现有模块,为了说明书的简洁做了省略处理。
如图5所示,提供了一种NPU指令级上下文切换装置架构中加载类指令的默认配置路径微架构(如左侧黑色部分所示),以及利用逐步移入和逐步移出指令将矩阵传输到临时存储区和累加器或从中传输出来的过程(右侧)。在Gemmini-RT中,矩阵处理单元(例如转置器、位移器)作为功能模块存在,在完成其指令后终止,并且不存储数据。类似地,脉动阵列也可以看作是一个专用的计算单元。它根据指令执行操作,在完成单次计算后将中间结果存储在累加器中。后续的指令从累加器中检索值,而不是依赖于流水阵列的寄存器。因此,所有计算数据仅存储在临时存储器和累加器中。Gemmini-RT与主CPU之间的数据和内存管理是显式的,这意味着数据必须通过一系列移动指令在处理器的主地址空间和NPU的私有地址空间之间显式移动。然而,配置指令可能会影响这些移动指令,即在一定的配置下保存和恢复的数据可能会不完整。因此,为了确保配置的一致性并安全地完全检索计算数据,我们引入了新的移动指令,如图5右侧所示。这些新指令利用了我们在NPU控制单元中开发的数据默认配置通道(如图5左侧所示),使得在不改变当前加速器配置环境的情况下,能够完全保存和恢复计算数据。具体而言,在上下文保存过程中,通过使用这些移动指令并在数据传输前记录目标主内存地址,我们可以确保计算数据在主内存中的完整保存,通过操作系统的调度进行管理。类似地,在上下文恢复过程中,通过检索计算数据的主内存地址索引,我们可以将其完全加载回NPU。通过这些过程,我们可以完全保存计算数据,并根据需要随时恢复。
这种NPU指令级上下文切换装置在现代系统中可以优化系统的资源利用和任务执行效率,提升系统的可靠性。
进一步而言,所述NPU模块21包括:
Gemmini-RT架构211;配置复制缓冲区212,所述配置复制缓冲区212用于存储NPU模块配置指令;数据默认配置通道213,所述数据默认配置通道213用于传输上下文数据。
Gemmini-RT架构211是一种NPU微架构,其关键架构基于一个包括多个单元的脉动阵列,每个单元由可配置数量的处理单元组成,以及一组本地内存,包括刮擦板和累加器。Gemmini-RT旨在通过执行定制、明确定义的指令与CPU核心协同工作,常用于系统和小型计算设备中,它优化了矩阵运算的处理速度和能效,特别适合于深度学习推理和其他需要大规模矩阵计算的应用。在Gemmini-RT中,配置指令相较于其他类型的指令具有独特性,首先,配置指令分为四种类型:加载、存储、执行和规范(norm),其中相同类别的后续配置指令可以覆盖前一个,其次,配置指令无需发出,而是在接收到预留站时立即生效,直接影响相应的寄存器,以实现配置目的,并在两个周期内完成执行。
配置复制缓冲区212用于存储NPU模块的配置指令,在上下文切换过程中,这些配置指令涉及NPU的状态切换、功能设置或其他参数调整,通过配置复制缓冲区,能够快速加载和应用这些配置,以支持上下文切换后的新任务执行。
数据默认配置通道213负责在NPU模块内部和主存模块之间传输上下文数据,这些数据包括当前任务的运行状态、寄存器内容或其他与任务执行相关的信息,数据默认配置通道提供高效的数据传输能力,以确保在上下文切换过程中数据的快速传输和正确加载。
进一步而言,所述软件模块10包括:
任务监视器11,所述任务监视器11用于通过定时器监控中断信号;中断处理程序12,所述中断处理程序12用于处理非定时器中断信号;任务调度器13,所述任务调度器13用于执行上下文切换进程控制;内存管理14,所述内存管理14用于管理上下文数据的存储和恢复;任务控制模块15,所述任务控制模块15用于控制任务的中断、执行,存储NPU指令地址数据。
任务监视器11用于通过定时器监控中断信号,具体地,任务监视器11定期检查系统中的定时器,以检测是否有需要进行上下文切换的信号或事件发生,这些事件包括任务超时、资源竞争或其他需要系统响应的条件。
中断处理程序12用于处理非定时器中断信号,具体地,中断处理程序12负责响应来自系统外部或内部的非定时器中断信号,如硬件错误、用户输入事件等。在上下文切换装置中,中断处理程序12需要确保在中断发生时能够正确地处理并决定是否触发上下文切换。
任务调度器13用于执行上下文切换进程控制,具体地,任务调度器13根据任务的优先级、状态和系统资源的可用性,决定何时执行上下文切换,它负责调度和管理任务的执行顺序,以最大化系统的效率和响应能力。
内存管理14用于管理上下文数据的存储和恢复,具体地,内存管理14负责分配、释放和管理主存模块中用于存储上下文数据的空间,它需要确保在上下文切换时能够高效地保存和加载任务的状态数据,以及在需要时进行数据清理和整理。
任务控制模块15用于控制任务的中断、执行,存储NPU指令地址数据,具体地,任务控制模块15通过管理任务的执行状态、中断响应和NPU指令地址数据的存储,确保任务在执行过程中能够正常运行和响应系统的调度,它涉及与硬件模块的交互,例如传输NPU指令的地址数据,以支持NPU模块的操作和控制。
进一步而言,所述硬件模块20包括:
地址重映射器24,所述地址重映射器24用于动态调整DMA流的内存地址,实现任务在NPU中的高效硬件资源分配和管理。
鉴于并非每个任务都需要使用所有的NPU资源,为了实现更高效的资源利用,本申请引入了一个地址重映器。这使得当本地内存足够时,可以进行有效的硬件分区,消除了在上下文切换过程中保存和恢复工作区数据的需求,从而加速了上下文切换过程。如图6所示,提供了地址重映射器的微架构示意图,蓝线:读信号的路径;灰线:写信号的路径;黑线:通用路径。地址重映器通过拦截进入工作区的DMA数据流并加入动态偏移,将它们重定位到适当的存储区。这确保了从外部看,数据仍然像是被定向到工作区内的初始位置。本发明在工作区中建立了一个可配置大小的重映块,用于存储从原始地址到实际地址的映射,以促进地址转换和数据管理。具体来说,本发明为每个存储区分配了一个信号量,称为“存储区锁”,当存储区中加载了有效数据时,该信号量被激活。在任务异常或任务完成时的上下文切换过程中,操作系统通过查询重映块中的地址映射来识别涉及的存储区。然后,它会停用相应的信号量并清除该存储区内的数据。当DMA流发起对工作区的写请求时,系统会拦截该流,并在进入写队列前对工作区地址位应用动态偏移。该偏移将数据定位到由任务部分填充并锁定的存储区,或者定位到当前未锁定的存储区。系统随后锁定该存储区,并在重映块中记录地址的起始和结束位置。类似地,当DMA流请求从工作区读取数据时,系统会首先查询重映块以找到相应的映射,然后调整DMA流中的工作区地址位。当任务被抢占并随后恢复时,重映块会根据任务进入的新分配存储区调整目标地址。
这些软件模块组件共同工作,实现NPU指令级上下文切换装置中复杂的任务管理和调度功能,从而提升系统的性能、稳定性和可靠性。
综上所述,该NPU指令级上下文切换装置通过优化软件和硬件之间的协同作用,实现了在系统中处理复杂计算任务的高效能力和灵活应对多任务环境的能力,它不仅提升了系统的性能和响应速度,还优化了系统资源的利用效率。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种NPU指令级上下文切换方法,其特征在于,应用于NPU指令级上下文切换装置,所述装置包括软件模块和硬件模块,所述硬件模块包括NPU模块和主存模块,所述软件模块执行步骤包括:
当接收到上下文切换指令时,获得NPU模块的第一类型排队指令序列、第一执行指令集和上下文数据,其中,第一类型排队指令为非刷新指令,所述第一执行指令集为接收到所述上下文切换指令时仍在执行的指令;
对所述第一类型排队指令序列禁止执行,并等待所述第一执行指令集执行完成,将所述上下文数据存储至主存模块;
当所述第一执行指令集执行完成时,获得所述NPU模块的第二类型指令序列,其中,第二类型指令为上下文切换相关指令;
在所述NPU模块恢复所述第二类型指令序列,执行目标任务;
当目标任务执行完成时,通过所述主存模块将所述上下文数据恢复至所述NPU模块,同时恢复所述第一类型排队指令序列的执行。
2.如权利要求1所述的一种NPU指令级上下文切换方法,其特征在于,所述硬件模块还包括CPU模块,所述软件模块包括增加了任务监视器、任务调度器和以及微调中断处理程序后的实时操作系统,任务监视器实时监测当前任务是否完成并包含一个定时器定期检查是否有新任务到达,包括:
当系统调用信号通过所述任务监视器时,CPU模块响应该中断,通过中断处理程序确定是否生成所述上下文切换指令;
当当前中断是由任务监视器监测到当前任务完成所触发,调度器查找下一个需要执行的任务,并根据其之前是否执行过来确定是否生成所述上下文切换指令;
当当前中断是由任务监视器中定时器定期检查所触发,调度器判断新到达任务优先级是否高于当前任务,根据此来确定是否生成所述上下文切换指令。
3.如权利要求1所述的一种NPU指令级上下文切换方法,其特征在于,所述软件模块还包括任务控制模块,所述NPU模块还包括数据默认配置通道,将所述上下文数据存储至主存模块,包括:
所述上下文数据包括计算数据、地址数据和配置数据;
将所述计算数据通过数据默认配置通道传输至所述主存模块;
将所述配置数据传输至所述主存模块;
将所述地址数据存储至所述任务控制模块。
4.如权利要求3所述的一种NPU指令级上下文切换方法,其特征在于,所述NPU模块包括配置复制缓冲区,包括:
通过所述配置复制缓冲区存储所述NPU模块的先前执行的不同类别的配置指令。
5.如权利要求1所述的一种NPU指令级上下文切换方法,其特征在于,将所述上下文数据存储至主存模块,包括:
通过流水线技术将所述上下文数据存储至主存模块。
6.如权利要求1所述的一种NPU指令级上下文切换方法,其特征在于,当所述第一执行指令集执行完成时,获得所述NPU模块的第二类型指令序列,所述软件模块包括任务调度器,所述NPU模块包括配置复制缓冲区,之前包括:
通过任务调度器刷新NPU指令队列,判断复制缓冲区是否具有指令;
若不具有,获得所述NPU模块的第二类型指令序列;
若具有,重复执行禁止指令及等待指令进程。
7.一种NPU指令级上下文切换装置,其特征在于,包括:
软件模块,所述软件模块用于执行上下文切换进程控制;
硬件模块,包括:
NPU模块,所述NPU模块用于实现上下文切换;
主存模块,所述主存模块用于存储上下文数据;
CPU模块,所述CPU模块用于执行软件模块的上下文切换控制流。
8.如权利要求7所述的一种NPU指令级上下文切换装置,其特征在于,所述NPU模块包括:
Gemmini-RT架构;
配置复制缓冲区,所述配置复制缓冲区用于存储NPU模块配置指令;
数据默认配置通道,所述数据默认配置通道用于传输上下文数据。
9.如权利要求7所述的一种NPU指令级上下文切换装置,其特征在于,所述软件模块包括:
任务监视器,所述任务监视器用于通过定时器监控中断信号;
中断处理程序,所述中断处理程序用于处理非定时器中断信号;
任务调度器,所述任务调度器用于执行上下文切换进程控制;
内存管理,所述内存管理用于管理上下文数据的存储和恢复;
任务控制模块,所述任务控制模块用于控制任务的中断、执行,存储NPU指令地址数据。
10.如权利要求7所述的一种NPU指令级上下文切换装置,其特征在于,所述硬件模块包括:
地址重映射器,所述地址重映射器用于动态调整DMA流的内存地址,实现任务在NPU中的高效硬件资源分配和管理。
CN202411321981.XA 2024-09-23 2024-09-23 一种npu指令级上下文切换方法及装置 Pending CN119473399A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411321981.XA CN119473399A (zh) 2024-09-23 2024-09-23 一种npu指令级上下文切换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202411321981.XA CN119473399A (zh) 2024-09-23 2024-09-23 一种npu指令级上下文切换方法及装置

Publications (1)

Publication Number Publication Date
CN119473399A true CN119473399A (zh) 2025-02-18

Family

ID=94578014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202411321981.XA Pending CN119473399A (zh) 2024-09-23 2024-09-23 一种npu指令级上下文切换方法及装置

Country Status (1)

Country Link
CN (1) CN119473399A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115004154A (zh) * 2020-01-22 2022-09-02 苹果公司 Simd处理器中的指令级上下文切换
CN115168060A (zh) * 2022-09-08 2022-10-11 深圳比特微电子科技有限公司 神经网络处理器npu调度方法和计算机存储介质
US20230084603A1 (en) * 2021-09-14 2023-03-16 Arm Limited Methods and apparatus for context switching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115004154A (zh) * 2020-01-22 2022-09-02 苹果公司 Simd处理器中的指令级上下文切换
US20230084603A1 (en) * 2021-09-14 2023-03-16 Arm Limited Methods and apparatus for context switching
CN115168060A (zh) * 2022-09-08 2022-10-11 深圳比特微电子科技有限公司 神经网络处理器npu调度方法和计算机存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
(美)埃克豪斯(R.H.ECKHOUSE),莫里斯(L.R.MORRIS)著: "《小型计算机系统组织、程序设计及应用PDP-11》", 31 October 1984, 中国铁道出版社, pages: 459 *

Similar Documents

Publication Publication Date Title
US9710310B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
US8028292B2 (en) Processor task migration over a network in a multi-processor system
EP1716486B1 (en) Methods and apparatus for task management in a multi-processor system
US7370326B2 (en) Prerequisite-based scheduler
US5459864A (en) Load balancing, error recovery, and reconfiguration control in a data movement subsystem with cooperating plural queue processors
US7103631B1 (en) Symmetric multi-processor system
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
US8032884B2 (en) Thread hand off
US20220229688A1 (en) Virtualized i/o
CN105579963B (zh) 任务处理装置、电子设备及方法
JPH1185618A (ja) 仮想メモリ変換を制御する方法
US7844782B2 (en) Data processing system with memory access
CN115098220B (zh) 基于容器线程管理技术的大规模网络节点拟真方法
CN111459871A (zh) 一种基于fpga异构计算的区块链加速系统及方法
EP3770759A1 (en) Wake-up and scheduling of functions with context hints
US20220058062A1 (en) System resource allocation for code execution
US20030014558A1 (en) Batch interrupts handling device, virtual shared memory and multiple concurrent processing device
WO2003040948A1 (fr) Ordinateur et procede de commande
CN119473399A (zh) 一种npu指令级上下文切换方法及装置
US20250173185A1 (en) Distributed task processing method, distributed system, and first device
CN117687749A (zh) 一种面向多核处理器的分区操作系统确定性调度方法
WO2024164369A1 (zh) 混合关键分区实时操作系统的资源感知型任务分配方法
CN118689617B (zh) 处理器以及任务同步的失败重启方法
US20240411453A1 (en) Live Migration Method and System Thereof
CN118467117A (zh) 基于i/o驱动的混合临界系统及模式切换方法

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