CN116775234A - 一种进程的执行状态切换方法及装置 - Google Patents

一种进程的执行状态切换方法及装置 Download PDF

Info

Publication number
CN116775234A
CN116775234A CN202210238502.2A CN202210238502A CN116775234A CN 116775234 A CN116775234 A CN 116775234A CN 202210238502 A CN202210238502 A CN 202210238502A CN 116775234 A CN116775234 A CN 116775234A
Authority
CN
China
Prior art keywords
logic core
state
slave
core
master
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
CN202210238502.2A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210238502.2A priority Critical patent/CN116775234A/zh
Priority to PCT/CN2023/079222 priority patent/WO2023169289A1/zh
Publication of CN116775234A publication Critical patent/CN116775234A/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Storage Device Security (AREA)

Abstract

一种进程的执行状态切换方法及装置,用于在主逻辑核和从逻辑核二者解耦合情况下,实现运行在从逻辑核中的进程切换至主逻辑核中运行。在本申请中,方法包括:如果运行在从逻辑核的进程满足第一条件,在从逻辑核中暂停运行进程,并记录进程的暂停位置,暂停位置用于下次在从逻辑核中运行进程时确定执行位置,其中,第一条件用于指示进程待执行目标操作,且目标操作在进程的执行状态处于主逻辑核的特权态时能够被执行;将进程的执行状态由从逻辑核的用户态切换为主逻辑核的特权态;在主逻辑核中运行进程,以供进程执行目标操作。

Description

一种进程的执行状态切换方法及装置
技术领域
本申请涉及处理器领域,尤其涉及一种进程的执行状态切换方法及装置。
背景技术
现代计算机面对越来越复杂的计算需求,一种架构的中央处理器(centralprocessing unit,CPU)已经无法满足业务的需要,很多方案会选择异构计算。所谓异构,就是将CPU、数字信号处理(digital signal processing,DSP)、图形处理器(graphicsprocessing unit,GPU)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程逻辑门阵列(field programmable gate array,FPGA)等不同制程架构、不同指令集、不同功能的计算单元,组合起来形成一个混合的计算系统。
以ARMv8-A体系架构为例,CPU物理核包括ARM64逻辑核和ARM32逻辑核,其中,ARM64逻辑核可执行特权级EL0至EL4中的一个,ARM32逻辑核可执行特权级EL0,其中EL0的特权级最低。在ARMv8-A体系架构中运行一个ARM32进程时,该ARM32进程具体是运行在ARM32逻辑核中,但是当ARM32进程需要执行高特权级操作(比如系统调用)时,需要触发异常,以使得ARM32进程的执行状态由特权级EL0陷入至特权级EL1中,从而在ARM64逻辑核中执行该高特权级操作。随后,ARM32进程的执行状态再次由特权级EL1返回至特权级EL0,在ARM32逻辑核中继续执行。
在该方式中,ARM64逻辑核和ARM32逻辑核二者需要紧密耦合,比如ARM64逻辑核需要新增寄存器和向量表表项来支持ARM32逻辑核,该两个逻辑核不能独立演进。
发明内容
本申请提供一种进程的执行状态切换方法及装置,用于在灵活切换两个逻辑核对应执行状态的前提下,将两个逻辑核解耦合,从而可独立演进其中的一个逻辑核。
第一方面,本申请提供一种进程的执行状态切换方法,应用于CPU中,CPU包括物理核,物理核包括主(Master)逻辑核和从(Slave)逻辑核,方法包括:如果运行在从逻辑核的进程满足第一条件,在从逻辑核中暂停运行进程,并记录进程的暂停位置,该暂停位置可用于下次在从逻辑核中运行进程时确定执行位置,其中,第一条件用于指示进程待执行目标操作,且目标操作在进程的执行状态处于主逻辑核的特权态时能够被执行;将进程的执行状态由从逻辑核的用户态切换为主逻辑核的特权态;在主逻辑核中运行进程,以供进程执行目标操作。
上述技术方案中,在从逻辑核中运行进程且进程需要执行目标操作时,通过从逻辑核记录进程的暂停位置,该暂停位置可用于下次在从逻辑核中运行进程时确定执行位置,如此,主逻辑核和从逻辑核无需共享寄存器,可实现在灵活切换两个逻辑核对应执行状态的前提下,将两个逻辑核解耦合,从而可独立演进其中的一个逻辑核。
在一种可能的实现方式中,记录进程的暂停位置,包括:通过从逻辑核将暂停位置的信息写入配置空间,配置空间用于主逻辑核与从逻辑核进行信息交互。通过在物理核中配置用于从逻辑核和主逻辑核进行信息交互的配置空间,实现主逻辑核和从逻辑核的解耦合,从而主逻辑核和从逻辑核二者可以独立发展,在不破坏主逻辑核对应的架构语义/指令空间的前提下,可实现从逻辑核对应指令集的独立演进。
在一种可能的实现方式中,方法还包括:将进程的执行状态由主逻辑核的特权态切换为从逻辑核的用户态;通过从逻辑核从配置空间读取暂停位置的信息;在从逻辑核中,从暂停位置开始继续运行进程。如此,在主逻辑核执行完成目标操作之后,可继续启动从逻辑核来继续运行进程,由于从逻辑核之前记录了暂停位置,则从逻辑核可从该暂停位置处继续运行,从而实现进程可在两个逻辑核之间切换,且进程可不间断地运行。
在一种可能的实现方式中,第一条件包括进程触发第一类异常,第一类异常包括除可靠性异常、可用性异常、以及可服务性RAS异常以外的其它异常;将进程的执行状态由从逻辑核的用户态切换为主逻辑核的特权态,包括:触发主逻辑核运行进程,以将进程的执行状态由从逻辑核的用户态切换为主逻辑核的用户态;从主逻辑核的特权态的多个特权级中确定第一类异常对应的目标特权级;将进程的执行状态由主逻辑核的用户态切换为主逻辑核的特权态的目标特权级。
在一种可能的实现方式中,将进程的执行状态由主逻辑核的用户态切换为主逻辑核的特权态的目标特权级之前,还包括:获取目标特权级对应的虚拟内存地址;确定虚拟内存地址未与物理内存地址建立映射关系。
上述技术方案中,通过主逻辑核访问目标特权级对应的虚拟内存地址,确定虚拟内存地址未与物理内存地址建立映射关系,则触发页面错误,主逻辑核可根据该触发的页面错误,将进程的执行状态由主逻辑核的用户态陷入至主逻辑核的特权态的目标特权级。如此,通过构造特殊异常(即页面错误)实现将进程的执行状态由主逻辑核的用户态陷入主逻辑核的特权态的目标特权级,减少进程陷入特权态的执行的复杂程度。
在一种可能的实现方式中,第一条件包括进程收到中断,或者进程触发RAS异常。由于中断或者RAS异常属于异步事件且需要快速被处理,则当运行在从逻辑核的进程收到中断或者触发RAS异常时,可通过CPU物理核中的硬件单元(或硬件部分),将进程的执行状态由从逻辑核的用户态陷入至主逻辑核的特权态的目标特权级。
在一种可能的实现方式中,方法还包括:在主逻辑核中启动进程;如果进程的指令集属于从逻辑核运行的指令集,记录进程的起始位置,并触发从逻辑核进入运行状态;在从逻辑核中,从起始位置开始运行进程。上述技术方案中,某些进程(比如mySql进程、图计算进程或加解密算子)是需要运行在从逻辑核中的,当在主逻辑核中启动这些进程时,可确定这些进程需要运行在从逻辑核中,于是通过主逻辑核记录进程的起始位置,并触发从逻辑核进入运行状态,以使得从逻辑核读取该起始位置,并在该起始位置处运行该进程。
在一种可能的实现方式中,方法还包括:释放主逻辑核在运行进程时所占用的物理核的硬件资源;其中,硬件资源包括内存资源和/或输入输出资源。如此,该被释放的硬件资源,可被重新用于运行其他进程,有助于充分利用硬件资源。
在一种可能的实现方式中,方法还包括:通过从逻辑核记录如下信息中的一项或多项:在从逻辑核上暂停运行进程的原因,目标操作对应的执行参数,暂停运行进程时的环境信息,或,特权级信息;其中,特权级信息用于指示进程在执行目标操作时主逻辑核的特权态的特权级。如此,主逻辑核可根据这些参数正确处理目标操作。
在一种可能的实现方式中,从逻辑核可运行加速引擎及算法,比如mySql进程、图计算进程或加解密算子中的一项或多项,相比于主逻辑核运行这些进程,可提高运算速率。
第二方面,本申请提供一种进程的执行状态切换装置,装置可以是CPU。
装置包括处理器和存储器;存储器用于存储计算机程序;处理器用于调用存储器所存储的计算机程序,以执行如下步骤:如果运行在从逻辑核的进程满足第一条件,在从逻辑核中暂停运行进程,并记录进程的暂停位置,暂停位置用于下次在从逻辑核中运行进程时确定执行位置,其中,第一条件用于指示进程待执行目标操作,且目标操作在进程的执行状态处于主逻辑核的特权态时能够被执行;将进程的执行状态由从逻辑核的用户态切换为主逻辑核的特权态;在主逻辑核中运行进程,以供进程执行目标操作。
在一种可能的实现方式中,处理器在记录进程的暂停位置时,具体用于:通过从逻辑核将暂停位置的信息写入配置空间,配置空间用于主逻辑核与从逻辑核进行信息交互。
在一种可能的实现方式中,处理器还用于:将进程的执行状态由主逻辑核的特权态切换为从逻辑核的用户态;通过从逻辑核从配置空间读取暂停位置的信息;在从逻辑核中,从暂停位置开始继续运行进程。
在一种可能的实现方式中,第一条件包括进程触发第一类异常,第一类异常包括除可靠性异常、可用性异常、以及可服务性RAS异常以外的其它异常;处理器在将进程的执行状态由从逻辑核的用户态切换为主逻辑核的特权态时,具体用于:触发主逻辑核运行进程,以将进程的执行状态由从逻辑核的用户态切换为主逻辑核的用户态;从主逻辑核的特权态的多个特权级中确定第一类异常对应的目标特权级;将进程的执行状态由主逻辑核的用户态切换为主逻辑核的特权态的目标特权级。
在一种可能的实现方式中,处理器在将进程的执行状态由主逻辑核的用户态切换为主逻辑核的特权态的目标特权级之前,还用于:获取目标特权级对应的虚拟内存地址;确定虚拟内存地址未与物理内存地址建立映射关系。
在一种可能的实现方式中,第一条件包括进程收到中断或者触发RAS异常。
在一种可能的实现方式中,处理器还用于:在主逻辑核中启动进程;如果进程的指令集属于从逻辑核运行的指令集,记录进程的起始位置,并触发从逻辑核进入运行状态;在从逻辑核中,从起始位置开始运行进程。
在一种可能的实现方式中,处理器还用于:释放主逻辑核在运行进程时所占用的物理核的硬件资源;其中,硬件资源包括内存资源和/或输入输出资源。
在一种可能的实现方式中,处理器还用于:通过从逻辑核记录如下信息中的一项或多项:在从逻辑核上暂停运行进程的原因,目标操作对应的执行参数,暂停运行进程时的环境信息,或,特权级信息;其中,特权级信息用于指示进程在执行目标操作时主逻辑核的特权态的特权级。
第三方面,本申请提供一种进程的执行状态切换装置,装置可以是CPU。
装置包括主逻辑核模块和从逻辑核模块,从逻辑核模块用于确定运行在从逻辑核模块的进程满足第一条件时,暂停运行进程,并记录进程的暂停位置,暂停位置用于下次在从逻辑核模块中运行进程时确定执行位置,其中,第一条件用于指示进程待执行目标操作,且目标操作在进程的执行状态处于主逻辑核模块的特权态时能够被执行;从逻辑核模块还用于将进程的执行状态由从逻辑核模块的用户态切换为主逻辑核模块的特权态;主逻辑核模块用于运行进程,以供进程执行目标操作。
在一种可能的实现方式中,从逻辑核模块在记录进程的暂停位置时,具体用于将暂停位置的信息写入配置空间,配置空间用于主逻辑核模块与从逻辑核模块进行信息交互。
在一种可能的实现方式中,主逻辑核模块还用于将进程的执行状态由主逻辑核模块的特权态切换为从逻辑核模块的用户态;从逻辑核模块还用于从配置空间读取暂停位置的信息,从暂停位置开始继续运行进程。
在一种可能的实现方式中,第一条件包括进程触发第一类异常,第一类异常包括除可靠性异常、可用性异常、以及可服务性RAS异常以外的其它异常;从逻辑核模块具体用于触发主逻辑核模块运行进程,以将进程的执行状态由从逻辑核模块的用户态切换为主逻辑核模块的用户态;主逻辑核模块具体用于从主逻辑核模块的特权态的多个特权级中确定第一类异常对应的目标特权级,以及将进程的执行状态由主逻辑核模块的用户态切换为主逻辑核模块的特权态的目标特权级。
在一种可能的实现方式中,主逻辑核模块在将进程的执行状态由主逻辑核模块的用户态切换为主逻辑核模块的特权态的目标特权级之前,还用于获取目标特权级对应的虚拟内存地址;确定虚拟内存地址未与物理内存地址建立映射关系。
在一种可能的实现方式中,第一条件包括进程收到中断或者触发RAS异常。
在一种可能的实现方式中,主逻辑核模块还用于启动进程,如果进程的指令集属于从逻辑核运行的指令集,则记录进程的起始位置,并触发从逻辑核模块进入运行状态;从逻辑核模块还用于从起始位置开始运行进程。
在一种可能的实现方式中,主逻辑核模块释放在运行进程时所占用的物理核的硬件资源;其中,硬件资源包括内存资源和/或输入输出资源。
在一种可能的实现方式中,从逻辑核模块还用于记录如下信息中的一项或多项:在从逻辑核上暂停运行进程的原因,目标操作对应的执行参数,暂停运行进程时的环境信息,或,特权级信息;其中,特权级信息用于指示进程在执行目标操作时主逻辑核的特权态的特权级。
第四方面,本申请实施例提供一种芯片系统,包括:处理器和存储器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片系统实现上述第一方面或第一方面的任一种可能的实现方式中的方法。
第五方面,本申请提供一种计算机程序产品,计算机程序产品包括计算机程序或指令,当计算机程序或指令被装置执行时,实现上述第一方面或第一方面的任一种可能的实现方式中的方法。
第六方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令被计算设备执行时,实现上述第一方面或第一方面的任一种可能的实现方式中的方法。
第七方面,本申请提供一种计算设备,包括处理器,所述处理器与存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述计算设备执行上述第一方面或第一方面的任一种可能的实现方式中的方法。
上述第二方面至第七方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。
附图说明
图1为一种ARMv8-A体系架构的示意图;
图2为一种AArch64和AArch32两种执行状态切换的过程的示意图;
图3为本申请提供的一种芯片系统的架构示意图;
图4为本申请提供的一种Master逻辑核和Slave逻辑核中运行进程的示意图;
图5为本申请提供的一种执行状态的切换方法流程示意图;
图6为本申请提供的一种启动进程的示意图;
图7为本申请提供的一种切换进程的执行状态的方法示意图;
图8为本申请提供的一种Master逻辑核将进程陷入至目标特权级的示意图;
图9为本申请提供的再一种切换进程的执行状态的方法示意图;
图10为本申请提供的又一种切换进程的执行状态的方法示意图;
图11为本申请提供的再一种执行状态的切换方法流程示意图。
具体实施方式
为了更好的解释本申请实施例,先对本申请中的相关术语或技术解释:
(1)程序和进程
程序是一组指令的有序集合,它只是一个静态的实体。
进程是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。进程因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。进程反映了一个程序在一定数据集上运行的全部动态过程。
(2)用户态(user mode)和内核态(kernel mode)
当一个进程在执行用户代码时处于用户运行状态(又可称为是用户态)。当一个进程因为系统调用陷入内核代码中执行时,该进程处于内核运行状态(又可称为是内核态)。执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。
用户运行一个程序,该程序创建的进程开始时运行自己的代码,处于用户态。在进程需要执行文件操作、网络数据发送等操作时,则通过write(写)、send(发送)等系统调用来调用内核的代码。进程进入内核地址空间去执行内核代码来完成相应的操作。内核态的进程执行完后又会回到用户态。用户态的进程不能随意操作内核地址空间。
(3)CPU、物理核、逻辑核
CPU不等于物理核,更不等于逻辑核。
物理核(physical core/processor)是可看到的、真实的CPU核,物理核有独立的电路元件以及L1、L2缓存,可以独立地执行指令。
逻辑核(logical core/processor,LCPU):在同一个物理核内,逻辑层面的核。
其中,一个CPU可以有多个物理核。一个物理核可分成多个逻辑核。
(4)实时操作系统(kernel),是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的部分组成。
(5)可执行和可连接格式(Executable and Linkable Format,ELF)文件,是指在Unix和X86-64 Linux上的目标文件。其中目标文件指的是,用于存放目标代码的计算机文件,目标文件中可包含着机器代码、代码在运行时使用的数据、调试信息等,是从源代码文件产生程序文件这一过程中的中间产物。
(6)同步操作和异步操作
同步操作,指的是调用方调用时,需要等待这个调用返回结果才能继续往后执行。
异步操作,与同步操作相反,调用方发出调用之后,无需等待调用结果,而是继续执行后续操作,被调用者通过状态来通知调用者,或者通过回掉函数来处理这个调用。
(7)可靠性、可用性、耐用性(reliability、availability、serviceability,RAS)
reliability,指的是系统必须尽可能的可靠,不会意外的崩溃,重启甚至导致系统物理损坏。availability,指的是系统必须能够确保尽可能长时间工作而不下线,即使系统出现一些小的问题也不会影响整个系统的正常运行。serviceability,指的是系统能够提供便利的诊断功能,如系统日志,动态检测等手段方便管理人员进行系统诊断和维护操作,从而及早的发现错误并且修复错误。RAS作为一个整体,其作用在于确保整个系统尽可能长期可靠的运行而不下线,并且具备足够强大的容错机制。
(8)固件(firmware),一般存储于设备中的电可擦除只读存储器(electricallyerasable programmable ROM,EEPROM)或FLASH芯片中。firmware比如是计算机主板上的基本输入/输出系统BIOS(basic input/output system)。
(9)寄存器,是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,寄存器可用于暂存指令、数据和地址。程序状态保存寄存器(saved program statusregister,SPSR),用于保存程序状态寄存器(current program status register,CPSR)的状态,以便异常返回后恢复异常发生时的工作状态。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。
基于上述相关术语或技术解释,如下解释说明本申请所适用的场景。
在CPU物理核中,可包括主(Master)逻辑核和从(Slave)逻辑核。CPU物理核可运行多个进程,该多个进程可运行于Master逻辑核或Slave逻辑核。比如Master逻辑核是ARM64逻辑核,Slave逻辑核是ARM32逻辑核,则ARM64的进程可运行于ARM64逻辑核中,ARM32的进程可运行于ARM32逻辑核中。而通常情况下,不管是运行于哪种逻辑核中的进程,均可由Master逻辑核来启动,Master逻辑核若确定该进程需要运行于Slave逻辑核,则可调用Slave逻辑核,以使得该进程在Slave逻辑核中运行。
如下,以Master逻辑核是ARM64逻辑核,Slave逻辑核是ARM32逻辑核为例说明ARM64逻辑核如何启动ARM32进程,并将ARM32进程运行于ARM32逻辑核中。
示例性的,在ARMv8体系架构中,可同时支持AArch32(或称为ARM32)和AArch64(或称为ARM64)两种执行状态。其中,AArch64执行状态支持A64指令集,可运行ARM64进程。AArch32执行状态支持T32和A32指令集,可运行ARM32进程。
ARMv8-A中特权级(privilege level)的概念被称为异常级别(EL,exceptionlevel),它是程序运行所处特权级别的逻辑划分。异常级别被划分为以下四种:
EL0:通常用户程序;
EL1:操作系统内核;
EL2:虚拟机监视器;
EL3:低级固件,包括安全监控(Secure Monitor)。
其中,特权级的数字越大,其特权越高。通常情况下,一个软件,例如应用程序,操作系统内核或是虚拟机监视器仅占据一个异常级别。
ARMv8-A体系架构可参见图1所示,ARM32逻辑核的执行状态为AArch32,ARM64逻辑核的执行状态为AArch64。其中AArch32可对应于EL0特权级,AArch64可对应于EL0和EL1特权级。或者也可以理解,在EL0特权级,可在AARCH64和AARCH32两种执行状态运行用户态进程;在EL1特权级,可在AArch64执行状态运行内核态进程。
进一步的,ARMv8-A体系架构可具有如下特点:
(1)AArch32支持的A32和T32指令集,以及AArch64支持的A64指令集可通过执行状态(execution state)进行封装。
(2)CPU在任意时刻必须处于AArch32或AArch64的执行状态,AArch32、AArch64两个执行状态在切换时,CPU需要通过异常陷入高特权级。
(3)AArch32和AArch64是紧耦合的,二者可共用寄存器。
(4)AArch32和AArch64不能互相调用(如A64指令集的函数不能调用A32指令集或T32指令集的函数),AArch32和AArch64二者不能用作对方的扩展。
(5)为了实现AArch64支持AArch32的异常处理,在异常向量表上,增加一组ARM32EL0异常的处理入口。示例性的,异常向量表中包括有异常与异常处理程序之间的对应关系。AArch32在异常时,需要将低特权级陷入至高特权级,AArch64在高特权级时访问异常向量表,从中确定需要调度的异常处理程序。
如图2为本申请示例性提供的一种AArch64和AArch32两种执行状态切换的过程,其中,该过程具体是在AArch64执行状态下,运行ARM32可执行程序(可简称为程序)。
步骤201,在AArch64执行状态下,EL0用户态加载ARM32进程会陷入到EL1内核态,在EL1内核中解析ELF文件格式,发现EL0用户态需要运行的是A32指令集的程序,那么在返回EL0用户态时会通过设置SPSR切换到AArch32执行状态,即执行状态由AArch64切换为AArch32。
步骤202,在AArch32执行状态运行的ARM32进程在需要处理异常时,需要通过陷入至EL1内核态来完成,即执行状态再次由AArch32切换为AArch64。EL1内核态在处理完异常之后根据需求再返回到EL0的AArch32执行状态。或者,在AArch32执行状态运行的ARM32进程运行完毕后,需要通过陷入至EL1内核态来完成。
如此,ARM32进程所运行的逻辑核需要经常地在ARM64逻辑核和ARM32逻辑核之间切换,该异常切换需要硬件完成大量工作。ARM64逻辑核和ARM32逻辑核之间的切换,需要基于异常向量表中记录的异常和该异常对应的处理程序,其中,该异常向量表存储于寄存器中,且该异常向量表需要占用大量寄存器。ARM64逻辑核和ARM32逻辑核共享寄存器,二者处于紧密耦合状态,无法独立演进。
本申请提供一种进程的执行状态切换方法及装置,用于在灵活切换两个逻辑核对应执行状态的前提下,将两个逻辑核解耦合,从而可独立演进其中的一个逻辑核。
为方便描述本申请中的切换方法,先对本申请适用的系统架构解释说明。如图3为一种芯片系统的架构示意图,该芯片系统中包括有多个CPU物理核,每个CPU物理核中可包括两个逻辑核,可分别表示为Master逻辑核和Slave逻辑核。
Master逻辑核可用于执行特权态的操作,Slave逻辑核用于执行用户态的操作。其中,特权态的多个特权级均高于用户态的特权级。比如,Master逻辑核是ARM64,Master逻辑核实现的特权态对应于EL1、EL2和EL3三个特权级,Slave逻辑核实现用户态的特权级,其中EL1、EL2和EL3三个特权级均高于用户态的特权级。
此外,Master逻辑核还可用于执行用户态的操作,即可实现用户态的特权级。仍然以Master逻辑核是ARM64为例,Master逻辑核实现的用户态包括EL0特权级。Master逻辑核实现的用户态特权级,与Slave逻辑核实现的用户态特权级可为相同特权级。
示例性的,用户态程序可根据其指令集在Master逻辑核中运行,也可以在Slave逻辑核中运行。系统软件(如Kernel/Hypervisor/Firmware)只能在Master逻辑核中运行。
进一步的,Master逻辑核与Slave逻辑核采用不同的指令集,其中,Master逻辑核的指令集可以是X86或ARM等当前主流指令集。Slave逻辑核的指令集可以是自研指令集。Slave逻辑核的算力可高于Master逻辑核的算力。
其中,运行在Slave逻辑核的进程(如下可简称为进程)中包括可执行代码段,该可执行代码段可包括跳板代码段(英文可表示为trampoline code)和主体代码段两大部分。
其中,跳板代码段运行在Master逻辑核,用于调用Slave逻辑核运行进程。可以理解,由于进程的加载发生在Master逻辑核,而进程的运行是发生在Slave逻辑核,则需要Master逻辑核中跳板代码段来将进程由原来的运行在Master逻辑核切换至运行在Slave逻辑核。
主体代码段运行在Slave逻辑核,其中主体代码段即运行进程的主要代码。
在Master逻辑核和Slave逻辑核之间包括有配置空间,该配置空间可以理解为两个逻辑核之间的交互界面,该配置空间可以是寄存器组,也可以是一片特殊的内存空间。该配置空间可用于Master逻辑核和Slave逻辑核之间进行信息交互,示例性的,Master逻辑核在启动某个进程时,可确定该进程需要运行在Slave逻辑核中,于是将Slave逻辑核执行该进程的相关参数写入至配置空间中,Slave逻辑核从该配置空间中读取该相关参数,并根据读取到的参数开始执行该进程。
每个CPU物理核对应于一个核外资源,该核外资源比如是cache(缓存)或存储器管理单元(memory management unit,MMU)。
可将多个CPU物理核以及该多个CPU物理核分别对应的核外资源,一起封装于一个芯片系统中,该芯片系统可以连接有内存和外设。
以Master逻辑核是ARM64逻辑核为例,解释说明Master逻辑核和Slave逻辑核中运行的进程。其中,ARM64逻辑核中的Master指令集又可称为是A64指令集,运行在ARM64逻辑核上的进程又可称为是A64进程。如图4中,该芯片系统对应于用户态、特权态和硬件部分。A64指令集的用户态进程和系统软件(如Kernel/Hypervisor/Firmware)在ARM64逻辑核上运行,Slave指令集的用户态进程(即进程)在Slave逻辑核上运行。
如下解释说明本申请中进程的执行状态的切换方法,该方法可参见图5所示的流程图。
步骤501,在Master逻辑核上启动进程,并确定该进程需要运行在Slave逻辑核上。启动Slave逻辑核,以使得Slave逻辑核运行该进程。其中,在Slave逻辑核上运行进程时,进程仅可执行用户态的操作。
步骤502,在确定进程需要执行特权态的操作时,将进程的执行状态由用户态切换至特权态,相应的,需要将该进程切换到Master逻辑核中运行。
步骤503,在Master逻辑核中的进程处理完该特权态的操作之后,进程的执行状态可由特权态再次切换回用户态,相应的,将该进程再次切换回Slave逻辑核中运行。
在上述进程的执行状态由特权态切换至用户态,或者由用户态切换至特权态时,Master逻辑核和Slave逻辑核二者可通过配置空间来相互交换信息。
图6为本申请示例性提供的一种Master逻辑核启动进程的示意图。参照图6解释说明上述步骤501,其中虚线方框中文字可表示Master逻辑核或者Slave逻辑核执行的动作。
Master逻辑核在用户态上启动运行进程,并将该进程由用户态陷入到特权态。Master逻辑核从内存中加载进程的数据。
其中,进程的数据比如进程的代码段(code segment/text segment)、数据段(data segment)、可执行文件等。代码段通常是用来存放程序执行代码的内存区域。数据段通常是指用来存放程序中已初始化的全局变量的内存区域。可执行文件比如是ELF文件。
示例性的,进程的可执行文件中记载有该进程是否需要运行于Slave逻辑核的标识。相应的,Master逻辑核根据该标识,确定该进程是否需要运行于Slave逻辑核。
又示例性的,Master逻辑核根据代码段,确定进程所执行的指令集属于Slave逻辑核运行的指令集,进而确定该进程需要运行于Slave逻辑核。
Master逻辑核若确定该进程需要运行于Slave逻辑核,则可将该进程从特权态返回至Slave逻辑核的用户态,以使得Slave逻辑核在用户态执行该进程。具体的,Master逻辑核在将该进程从特权态返回至Slave逻辑核的用户态时,具体可将该进程返回至Master逻辑核中跳板代码段的入口,并通过跳板代码段将进程的入口写入至配置空间,从而触发Slave逻辑核从该入口处开始执行进程。
具体的,Master逻辑核可通过跳板代码段将进程的起始位置(或者起始位置的信息)写入配置空间中,然后Master逻辑核通过跳板代码段操作配置空间,以触发启动指令(英文可称为是slave call指令),从而通过slave call指令启动Slave逻辑核。相应的,Slave逻辑核从配置空间中读取该起始位置,根据该读取到的起始位置启动进程。
此外,Master逻辑核在调用slave call指令之后,可释放Master逻辑核在运行进程时所占用的物理核的硬件资源,其中硬件资源可以包括内存资源、输入/输出(input/output,I/O)资源中一项或多项。如此,该部分被释放的硬件资源,可被重新用于执行其他进程,有助于充分利用硬件资源。
进一步的,Master逻辑核将slave call指令的下一条指令的位置(这个位置可记为master.pc)写入至配置空间中。该master.pc可用于Master逻辑核再次需要执行该进程时,知道从哪个位置上开始执行,该实现方式可参见下述实施例中关于步骤502的描述。如下,为方便描述,可将该slave call指令的下一条指令称为是master.pc指令。
在Slave逻辑核执行进程时,可能存在进程满足第一条件的情况,其中,第一条件可用于指示进程需要执行特权态的操作,此处,可将该特权态的操作称为是目标操作,也即第一条件可用于指示进程需要执行目标操作。进一步的,Slave逻辑核需要暂停当前运行在Slave逻辑核中的进程,然后将该进程切换至由Master逻辑核运行,如此,运行在Master逻辑核中的该进程可执行该目标操作。
进一步的,基于目标操作的不同类型,可将目标操作触发的暂停划分为异常(Exception)和中断(Interruption)。
异常,指来自CPU执行指令内部的事件。异常又可分为第一类异常和第二类异常,其中第一类异常可以是普通异常,第二类异常可以是RAS异常。RAS异常比如内存页面物理损坏,普通异常是除RAS异常以外的其他异常,普通异常比如系统调用(system call,或简称为syscall)、页面错误(page fault),指令故障(instruction fault)等。
中断,指来自CPU执行指令以外的事件发生,比如时钟中断、串口中断、网络中断、I/O中断停止等。以时钟中断为例,时钟中断表示一个固定的时间片已到,让CPU处理计时、启动定时运行的任务等。
如下基于普通异常、中断、RAS异常三种情况解释上述步骤502。
一、普通异常
图7示出一种进程触发普通异常时切换进程的执行状态的方法示意图。其中虚线方框中文字可表示Master逻辑核或者Slave逻辑核执行的动作。
进程在Slave逻辑核的运行过程中,由于需要执行目标操作,则触发了普通异常。Slave逻辑核需要将该进程的运行上下文(或称为普通异常信息)写入至配置空间中。
普通异常信息中可包括如下中一项或多项:特权级信息、触发异常的指令位置、异常原因、异常发生地址、异常参数、寄存器信息等。
其中特权级信息用于指示目标操作对应的特权级(可称为目标特权级),即Master逻辑核需要通过哪个特权级来处理这个异常。比如目标操作是系统调用,则目标特权级为EL1。
触发异常的指令位置,可认为是进程被打断的位置,可记为slave.pc。当Slave逻辑核恢复执行时,Slave逻辑核可从该位置slave.pc继续执行。其中,可将位置slave.pc对应的指令称为是slave.pc指令。
异常原因,指示在从逻辑核上暂停运行进程的原因,或者指示导致异常发生的原因,比如系统调用、页面错误、指令故障等。
异常发生地址,比如访问的内存中的位置。
异常参数,比如系统调用需要传递的参数。
寄存器信息,用于指示在Slave逻辑核中暂停运行进程时Slave逻辑核中的运行环境信息,该运行环境信息可用于Slave逻辑核继续执行进程。寄存器信息比如是SPSR信息。
相应的,Slave逻辑核对应的硬件资源可在触发目标操作的指令位置处释放(Retired),Slave硬件单元将该进程由原来的在Slave逻辑核上运行,切换至在Master逻辑核上运行。相应的,Master逻辑核读取配置空间中的位置master.pc,然后根据该位置master.pc,从跳板代码段中slave call指令的下一条指令(即master.pc指令)处继续执行。
可以理解,该进程的执行状态是由Slave逻辑核的用户态,切换至了Master逻辑核的用户态,Master逻辑核需要进一步将该进程由Master逻辑核的用户态切换至Master逻辑核的特权态。具体的,Master逻辑核还可读取配置空间中该进程的普通异常信息,根据该进程的普通异常信息,将进程的执行状态由Master逻辑核的用户态,陷入至Master逻辑核的特权态。其中,Master逻辑核可根据普通异常信息中的特权级信息,确定将该进程陷入至特权态的目标特权级。
在该进程陷入至目标特权级之后,Master逻辑核进一步根据普通异常信息中异常原因、异常发生地址、异常参数等信息,执行目标操作,也即处理该普通异常。
如下,以普通异常分别为系统调用和页面错误为例说明。
1、系统调用
进一步的,异常参数中可包括系统调用标识(syscall id)和系统调用入参。
Master逻辑核可从配置空间的普通异常信息中读取系统调用标识和系统调用入参,根据这两个参数构造一个系统调用,接着下发这个系统调用,也即,Master逻辑核特权态看到的是这个转换后的系统调用。在系统调用执行完毕后,Master逻辑核可将该系统调用的返回值写入到配置空间,如此,Slave逻辑核可从配置空间中读取到该系统调用的返回值。
示例性的,Master逻辑核可按照Master逻辑核对应架构的二进制接口交互(application binary interface,ABI)规则构造该系统调用,从而适用于不同CPU。相应的,Master逻辑核仍然按照该ABI规则将系统调用的返回值写入到配置空间。
2、页面错误
进一步的,异常参数中可包括页面错误对应的虚拟页面地址。
Master逻辑核可从配置空间的普通异常信息中读取虚拟页面地址,并为该虚拟页面地址申请物理页面地址,随后将该虚拟页面地址和物理页面地址建立映射关系,并更新页表。其中虚拟页面地址又可称为是虚拟内存地址,物理页面地址又可称为是物理内存地址。
需要指出的是,由于进程导致的普通异常数量较多,本申请可针对不同的普通异常,确定这些普通异常所对应的特权级。可以理解,一个特权级可对应于多种普通异常,比如EL1特权级对应于系统调用、页面错误、指令故障等,在发生这类异常时,Master逻辑核可将进程陷入至EL1特权级进行处理。
在一种可能实现方式中,Master逻辑核将进程的执行状态由Master逻辑核的用户态,陷入至Master逻辑核的特权态的目标特权级,可以是通过构造特殊异常的方式实现。具体可参见图8示出的陷入方式。
预先说明的是,可在实时操作系统中新增两个虚拟页面地址,该两个虚拟页面地址分别对应于特权态(具体可以是内核态)的两个特权级。比如内核态中的两个特权级分别是EL1特权级和EL2特权级,其中,虚拟页面地址1对应于EL1特权级,虚拟页面地址2对应于EL2特权级。进一步的,该两个虚拟页面地址未与物理页面地址建立映射关系。
相应的,Master逻辑核可以根据Slave逻辑核触发的普通异常的类型,从特权态对应的多个特权级中选择该普通异常对应的目标特权级;然后从多个虚拟页面地址中确定出目标特权级对应的虚拟页面地址。Master逻辑核通过执行页面访问指令,来访问该目标特权级对应的虚拟页面地址,确定该虚拟页面地址未与物理页面地址建立映射关系,于是会触发异常(即页面错误)。随后,Master逻辑核由用户态陷入至特权态中的目标特权级。
示例性的,Master逻辑核确定进程触发的异常为系统调用,Master逻辑核根据系统调用确定需要将进程陷入至EL1特权级。Master逻辑核访问虚拟页面地址1,并确定当前虚拟页面地址1未对应于物理页面地址,也即虚拟页面地址1访问错误。随后,Master逻辑核触发页面错误异常,并将进程陷入至EL1特权级。如此,进程在Master逻辑核的EL1特权级运行,Master逻辑核可执行目标操作,也即处理该系统调用。
此处,无需对Master逻辑核访问该虚拟页面地址触发的页面错误,执行缺页处理,如此,Master逻辑核可以重复触发页面错误异常,从而将进程的执行状态由Master逻辑核的用户态,陷入至Master逻辑核的特权态的目标特权级。
进一步的,此处的页面错误,用于将进程的执行状态由Master逻辑核的用户态,陷入至Master逻辑核的特权态的目标特权级,该页面错误区分于Slave逻辑核运行进程时触发的页面错误,后者是进程运行中的真正需要处理的异常。
Master逻辑核在特权态执行完目标操作(或理解为处理完普通异常)之后,可以返回至跳板代码段中。具体的,Master逻辑核可返回至跳板代码段中的页面访问指令。Master逻辑核在页面访问指令之后,继续执行slave call指令,从而触发Slave逻辑核运行,Slave逻辑核从被打断位置slave.pc位置继续执行。进一步的,Slave逻辑核可从配置空间的普通异常信息中读取寄存器信息,根据读取到的寄存器信息,恢复Slave逻辑核触发异常之前的、该进程的运行环境信息。
二、中断
图9示出一种进程收到中断时切换进程的执行状态的方法示意图。其中虚线方框中文字可表示Master逻辑核或者Slave逻辑核执行的动作。
进程在Slave逻辑核的运行过程中收到了中断,Slave逻辑核需要将该进程的运行上下文(或称为中断信息)写入至配置空间中。
中断信息中可包括如下中一项或多项:特权级信息、收到中断的指令位置、中断原因、中断发生地址、中断参数、寄存器信息等。其中,特权级信息、中断参数、寄存器信息、中断发生地址均可参见上述普通异常中关于运行上下文的描述。
收到中断的指令位置同样可记为slave.pc。当Slave逻辑核恢复执行时,Slave逻辑核可从该位置slave.pc继续执行。
中断原因,指示导致中断发生的原因,比如时钟中断、串口中断、网络中断等。
由于中断属于异步事件且需要快速被处理,则Slave逻辑核的硬件单元可将进程的执行状态陷入至特权态。此处,Slave逻辑核的硬件单元也可根据中断的类型,确定将进程陷入至特权态的哪个特权级,比如陷入至EL1特权级或EL2特权级。
从Master逻辑核的角度来看,中断发生的位置是在master.pc。解释为,Slave逻辑核在执行salve.call指令的过程中发生了很多操作,比如Master逻辑核休眠、Slave逻辑核触发运行指令等。而对于Master逻辑核来说,发生中断的时机是在salve.call的执行过程中,Master逻辑核响应中断的时间点是在salve.call指令执行完,下一条指令(即master.pc指令)的执行前。
Master逻辑核在特权态执行完目标操作(或理解为处理完中断)之后,Master逻辑核返回到跳板代码段中的master.pc。随后,Master逻辑核继续执行slave call指令触发Slave逻辑核运行,Slave逻辑核从被打断位置slave.pc处继续执行。
三、RAS异常
图10示出一种进程触发RAS异常时切换进程的执行状态的方法示意图。其中虚线方框中文字可表示Master逻辑核或者Slave逻辑核执行的动作。
RAS异常可进一步划分为同步中止(Synchronous abort,简称SErrors)和异步中止(Asynchronous abort,简称SEI)。
其中,SErrors与指令的执行有关。SErrors在进入异常状态时候保持的返回地址精准的反应了发生异常的指令,有可能在执行指令过程中的任何一步发生。例如,在取指阶段失败,在译码阶段失败,在指令执行阶段等。SErrors与普通异常类似,是一个同步事件。
SEI与执行的指令无关。SEI是来自于外部的存储系统(memory system),或者来自于总线(bus)上的错误,例如不可恢复的误差校正码错误(error correcting code error,ECC error)。SEI与中断类似,是一个异步事件。
进程在Slave逻辑核的运行过程中,由于需要执行目标操作,则触发了RAS异常。Slave逻辑核需要将该进程的运行上下文(或称为RAS异常信息)写入至配置空间中。
RAS异常信息中可包括如下中一项或多项:特权级信息、触发RAS异常的指令位置、RAS异常原因、RAS异常发生地址、RAS异常参数、寄存器信息等。
其中,特权级信息、RAS异常参数、寄存器信息、RAS异常发生地址均可参见上述普通异常中关于运行上下文的描述。
触发RAS异常的指令位置同样可记为slave.pc。当Slave逻辑核恢复执行时,Slave逻辑核可从该slave.pc继续执行。
RAS异常原因,指示导致RAS异常发生的原因,比如误差校正码错误等。
Slave逻辑核的硬件单元可将进程的执行状态,由原来的用户态陷入至特权态。其中,特权态具体可以固件(firmware)态,比如该firmware态对应于EL3特权级。相应的,Slave逻辑核的硬件单元可将进程的执行状态陷入至EL3特权级。在RAS异常中,还可将用户态称为是特权态中的EL0特权级,该EL0特权级低于特权态中的其他特权级。
从Master逻辑核的特权态角度来看,RAS异常发生的位置是在master.pc。解释为,salve逻辑核在执行salve.call指令的过程中发生了很多操作,比如Master逻辑核休眠、Slave逻辑核触发运行指令等。而对于Master逻辑核来说,发生RAS异常的时机是在salve.call的执行过程中,Master逻辑核响应RAS异常的时间点是在salve.call指令执行完,下一条指令(即master.pc指令)的执行前。
Master逻辑核在EL3特权级中处理RAS异常,得到RAS异常的处理结果。其中RAS异常的处理结果可用于指示RAS异常是否可恢复。Master逻辑核从EL3特权级返回至EL1特权级,或者说,从firmware态返回至内核态。
相应的,Master逻辑核在EL1特权级获取RAS异常的处理结果,根据RAS异常的处理结果确定RAS异常可恢复时,Master逻辑核在EL1特权级执行目标操作,并返回至配置空间中记录的master.pc位置对应的指令(即master.pc指令)。根据RAS异常的处理结果确定RAS异常不可恢复时,Master逻辑核在EL1特权级执行panic内核处理。
在一种可能方式中,Master逻辑核在EL3特权级中处理RAS异常时,具体可以是Master逻辑核的firmware执行如下步骤(a)至(c):
(a)保存用户态上下文,恢复EL3特权级上下文。
(b)读取配置空间中RAS异常信息,根据RAS异常信息对RAS异常做处理,比如尝试对内存页面进行修复。
(c)保存EL3特权级上下文,恢复用户态上下文,设置ESR_EL1、FAR_EL1、SPSR_EL1等寄存器,由于EL1特权级是通过ESR_EL1、FAR_EL1、SPSR_EL1这些寄存器来获取异常的一些状态,设置这些寄存器的目的是使EL1特权级认为异常的来源为用户态,在EL1特权级处理异常后,通过ERET指令返回用户态,而非返回至EL3特权级对应的Fireware。
Master逻辑核的特权态处理完目标操作之后,Master逻辑核返回到跳板代码段中的master.pc指令。随后,Master逻辑核继续执行slave call指令触发Slave逻辑核运行,Slave逻辑核从被打断位置slave.pc处继续执行。
需要说明的是,上述普通异常信息、中断信息、RAS异常信息均可统称为是进程的运行上下文,其中,异常原因、中断原因、RAS异常原因可统称为是在Slave逻辑核上暂停运行进程的原因,也即进程的暂停原因;异常参数、中断参数、RAS异常参数可统称为是进程的目标操作对应的执行参数;触发异常的指令位置、收到中断的指令位置、触发RAS异常的指令位置可统称为是进程被打断的位置,或者进程的暂停位置(slave.pc),或者进程的暂停位置的信息。也可以理解,进程的运行上下文可包括如下中一项或多项:Slave逻辑核上暂停运行进程的暂停位置、在Slave逻辑核上暂停运行进程的暂停原因、目标操作对应的执行参数、寄存器信息(即暂停运行进程时的环境信息)或特权级信息。
此外,还需要补充的是,上述图6至图10中仅标注出相关实施例中的主要步骤,且各图中的步骤序号,仅在其所在图中表示各动作的前后顺序。
为了更好的说明本申请实施例中普通异常、中断或RAS异常情况下,Master逻辑核和Slave逻辑核的执行位置,参照图11中例子继续说明,其中图11中左边代码段可认为是Master逻辑核中包含的跳板代码段。
Slave逻辑核运行进程并确定进程触发普通异常,Slave逻辑核将进程的执行状态由Slave逻辑核的用户态,切换至Master逻辑核的用户态。Master逻辑核从master.pc位置的指令(即master.pc指令)开始执行,并根据该普通异常确定需要去EL1特权级处理,于是访问EL1特权级对应的虚拟页面地址1(图11中表示为page1),随后,Master逻辑核触发该page1对应的页面错误异常之后,将进程的执行状态陷入至EL1特权级执行目标操作。Master逻辑核在执行完成该目标操作之后,返回至该访问page1的指令(即页面访问指令)处,进而返回至指令1。进一步的,Master逻辑核调用slave.call指令,触发Slave逻辑核运行,Slave逻辑核从被打断位置slave.pc处继续执行。
Slave逻辑核运行进程并确定进程收到中断,Slave逻辑核的硬件单元将进程的执行状态由Slave逻辑核的用户态,直接陷入至Master逻辑核的特权态(比如EL1特权级)。Master逻辑核运行该进程,以使得进程执行目标操作。在进程执行完成该目标操作之后,返回至master.pc位置的指令(即master.pc指令),进而返回至指令1。进一步的,Master逻辑核调用slave.call指令,触发Slave逻辑核运行,Slave逻辑核从被打断位置slave.pc处继续执行。
Slave逻辑核运行进程并确定进程触发RAS异常,Slave逻辑核的硬件单元将进程的执行状态由Slave逻辑核的用户态,直接陷入至Master逻辑核的特权态(比如EL3特权级)。Master逻辑核运行该进程,以使得进程执行目标操作。在进程执行完成该目标操作之后,返回至master.pc位置的指令(即master.pc指令),进而返回至指令1。Master逻辑核调用slave.call指令,触发Slave逻辑核运行,Slave逻辑核从被打断位置slave.pc处继续执行。
上述技术方案中,Master逻辑核和Slave逻辑核二者通过配置空间进行信息交互,实现Master逻辑核和Slave逻辑核的解耦合,从而Master逻辑核和Slave逻辑核二者可以独立发展,也即,在不破坏Master逻辑核对应的架构语义/指令空间的前提下,可实现Slave逻辑核对应指令集的独立演进。如此,Slave逻辑核可运行加速引擎及算法,比如mySql进程、图计算进程或加解密算子中的一项或多项,相比于Master逻辑核可提高运算速率。
进一步的,当运行在Slave逻辑核的进程需要执行目标操作时,Slave逻辑核可将进程的运行上下文写入至配置空间,该运行上下文中包括Slave逻辑核暂停运行进程对应的暂停位置。相应的,Master逻辑核执行完成该进程的目标操作之后,可继续启动Slave逻辑核运行该进程,随后,Slave逻辑核可从配置空间中读取该暂停位置,继续在该暂停位置处继续执行该进程。如此,可实现进程在Master逻辑核和Slave逻辑核之间切换运行状态。
需要补充的是,在本申请中,逻辑核、进程和目标操作之间的关系可以理解为,进程运行于逻辑核(Slave逻辑核或Master逻辑核)中,进程执行目标操作也即其运行时所在的逻辑核(比如Master逻辑核)执行目标操作。
基于上述内容和相同构思,本申请提供一种计算机程序产品,计算机程序产品包括计算机程序或指令,当计算机程序或指令被装置执行时,实现上述方法实施例中的方法。
基于上述内容和相同构思,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令被计算设备执行时,实现上述方法实施例中的方法。
基于上述内容和相同构思,本申请提供一种计算设备,包括处理器,处理器与存储器相连,存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序,以使得计算设备实现上述方法实施例中的方法。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (21)

1.一种进程的执行状态切换方法,其特征在于,应用于中央处理器CPU,所述CPU包括物理核,所述物理核包括主逻辑核和从逻辑核,所述方法包括:
如果运行在所述从逻辑核的进程满足第一条件,在所述从逻辑核中暂停运行所述进程,并记录所述进程的暂停位置,所述暂停位置用于下次在所述从逻辑核中运行所述进程时确定执行位置,其中,所述第一条件用于指示所述进程待执行目标操作,且所述目标操作在所述进程的执行状态处于所述主逻辑核的特权态时能够被执行;
将所述进程的执行状态由所述从逻辑核的用户态切换为所述主逻辑核的特权态;
在所述主逻辑核中运行所述进程,以供所述进程执行所述目标操作。
2.如权利要求1所述的方法,其特征在于,所述记录所述进程的暂停位置,包括:
通过所述从逻辑核将所述暂停位置的信息写入配置空间,所述配置空间用于所述主逻辑核与所述从逻辑核进行信息交互。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
将所述进程的执行状态由所述主逻辑核的特权态切换为所述从逻辑核的用户态;
通过所述从逻辑核从所述配置空间读取所述暂停位置的信息;
在所述从逻辑核中,从所述暂停位置开始继续运行所述进程。
4.如权利要求1至3任一项所述的方法,其特征在于,所述第一条件包括所述进程触发第一类异常,所述第一类异常包括除可靠性异常、可用性异常、以及可服务性RAS异常以外的其它异常;
所述将所述进程的执行状态由所述从逻辑核的用户态切换为所述主逻辑核的特权态,包括:
触发所述主逻辑核运行所述进程,以将所述进程的执行状态由所述从逻辑核的用户态切换为所述主逻辑核的用户态;
从所述主逻辑核的特权态的多个特权级中确定所述第一类异常对应的目标特权级;
将所述进程的执行状态由所述主逻辑核的用户态切换为所述主逻辑核的特权态的所述目标特权级。
5.如权利要求4所述的方法,其特征在于,所述将所述进程的执行状态由所述主逻辑核的用户态切换为所述主逻辑核的特权态的所述目标特权级之前,还包括:
获取所述目标特权级对应的虚拟内存地址;
确定所述虚拟内存地址未与物理内存地址建立映射关系。
6.如权利要求1至3任一项所述的方法,其特征在于,所述第一条件包括所述进程收到中断,或者所述进程触发RAS异常。
7.如权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
在所述主逻辑核中启动所述进程;
如果所述进程的指令集属于所述从逻辑核运行的指令集,记录所述进程的起始位置,并触发所述从逻辑核进入运行状态;
在所述从逻辑核中,从所述起始位置开始运行所述进程。
8.如权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
释放所述主逻辑核在运行所述进程时所占用的所述物理核的硬件资源;
其中,所述硬件资源包括内存资源和/或输入输出资源。
9.如权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:
通过所述从逻辑核记录如下信息中的一项或多项:
在所述从逻辑核上暂停运行所述进程的原因,所述目标操作对应的执行参数,暂停运行所述进程时的环境信息,或,特权级信息;其中,所述特权级信息用于指示所述进程在执行所述目标操作时所述主逻辑核的特权态的特权级。
10.一种执行状态的切换装置,其特征在于,包括处理器和存储器;
所述存储器用于存储计算机程序;
所述处理器用于调用所述存储器所存储的计算机程序,以执行如下步骤:
如果运行在所述从逻辑核的进程满足第一条件,在所述从逻辑核中暂停运行所述进程,并记录所述进程的暂停位置,所述暂停位置用于下次在所述从逻辑核中运行所述进程时确定执行位置,其中,所述第一条件用于指示所述进程待执行目标操作,且所述目标操作在所述进程的执行状态处于所述主逻辑核的特权态时能够被执行;
将所述进程的执行状态由所述从逻辑核的用户态切换为所述主逻辑核的特权态;
在所述主逻辑核中运行所述进程,以供所述进程执行所述目标操作。
11.如权利要求10所述的装置,其特征在于,所述处理器在记录所述进程的暂停位置时,具体用于:通过所述从逻辑核将所述暂停位置的信息写入配置空间,所述配置空间用于所述主逻辑核与所述从逻辑核进行信息交互。
12.如权利要求11所述的装置,其特征在于,所述处理器还用于:
将所述进程的执行状态由所述主逻辑核的特权态切换为所述从逻辑核的用户态;
通过所述从逻辑核从所述配置空间读取所述暂停位置的信息;
在所述从逻辑核中,从所述暂停位置开始继续运行所述进程。
13.如权利要求10至12任一项所述的装置,其特征在于,所述第一条件包括所述进程触发第一类异常,所述第一类异常包括除可靠性异常、可用性异常、以及可服务性RAS异常以外的其它异常;
所述处理器在将所述进程的执行状态由所述从逻辑核的用户态切换为所述主逻辑核的特权态时,具体用于:
触发所述主逻辑核运行所述进程,以将所述进程的执行状态由所述从逻辑核的用户态切换为所述主逻辑核的用户态;
从所述主逻辑核的特权态的多个特权级中确定所述第一类异常对应的目标特权级;
将所述进程的执行状态由所述主逻辑核的用户态切换为所述主逻辑核的特权态的所述目标特权级。
14.如权利要求13所述的装置,其特征在于,所述处理器在将所述进程的执行状态由所述主逻辑核的用户态切换为所述主逻辑核的特权态的所述目标特权级之前,还用于:
获取所述目标特权级对应的虚拟内存地址;
确定所述虚拟内存地址未与物理内存地址建立映射关系。
15.如权利要求10至12任一项所述的装置,其特征在于,所述第一条件包括所述进程收到中断,或者所述进程触发RAS异常。
16.如权利要求10至15任一项所述的装置,其特征在于,所述处理器还用于:
在所述主逻辑核中启动所述进程;
如果所述进程的指令集属于所述从逻辑核运行的指令集,记录所述进程的起始位置,并触发所述从逻辑核进入运行状态;
在所述从逻辑核中,从所述起始位置开始运行所述进程。
17.如权利要求10至16任一项所述的装置,其特征在于,所述处理器还用于:
释放所述主逻辑核在运行所述进程时所占用的所述物理核的硬件资源;
其中,所述硬件资源包括内存资源和/或输入输出资源。
18.如权利要求10至17中任一项所述的装置,其特征在于,所述处理器还用于:
通过所述从逻辑核记录如下信息中的一项或多项:
在所述从逻辑核上暂停运行所述进程的原因,所述目标操作对应的执行参数,暂停运行所述进程时的环境信息,或,特权级信息;其中,所述特权级信息用于指示所述进程在执行所述目标操作时所述主逻辑核的特权态的特权级。
19.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或指令,当所述计算机程序或指令被装置执行时,实现如权利要求1至9中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被计算设备执行时,实现如权利要求1至9中任一项所述的方法。
21.一种计算设备,其特征在于,包括处理器,所述处理器与存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述计算设备执行如权利要求1至9中任一项所述的方法。
CN202210238502.2A 2022-03-11 2022-03-11 一种进程的执行状态切换方法及装置 Pending CN116775234A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210238502.2A CN116775234A (zh) 2022-03-11 2022-03-11 一种进程的执行状态切换方法及装置
PCT/CN2023/079222 WO2023169289A1 (zh) 2022-03-11 2023-03-02 一种进程的执行状态切换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210238502.2A CN116775234A (zh) 2022-03-11 2022-03-11 一种进程的执行状态切换方法及装置

Publications (1)

Publication Number Publication Date
CN116775234A true CN116775234A (zh) 2023-09-19

Family

ID=87937220

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210238502.2A Pending CN116775234A (zh) 2022-03-11 2022-03-11 一种进程的执行状态切换方法及装置

Country Status (2)

Country Link
CN (1) CN116775234A (zh)
WO (1) WO2023169289A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226740A1 (en) * 2006-02-28 2007-09-27 Xiao-Feng Li Method and apparatus for global breakpoint for parallel debugging on multiprocessor systems
US9430353B2 (en) * 2009-10-26 2016-08-30 Microsoft Technology Licensing, Llc Analysis and visualization of concurrent thread execution on processor cores
CN111400002B (zh) * 2020-03-09 2022-09-27 聚好看科技股份有限公司 应用进程与处理器核绑定方法及终端
CN113867828A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 一种运行进程的方法及装置
CN112667318A (zh) * 2020-12-31 2021-04-16 京信网络系统股份有限公司 逻辑核的绑定方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2023169289A1 (zh) 2023-09-14

Similar Documents

Publication Publication Date Title
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
US7966615B2 (en) Transitioning of virtual machine from replay mode to live mode
Fattori et al. Dynamic and transparent analysis of commodity production systems
US10127068B2 (en) Performance variability reduction using an opportunistic hypervisor
US7356735B2 (en) Providing support for single stepping a virtual machine in a virtual machine environment
US11301283B1 (en) Virtualization extension modules
US10678677B1 (en) Continuous debugging
CN111459623B (zh) 应用程序恢复运行的方法、装置及计算机
JP2022513382A (ja) 関数ジャンプを実現するための方法、装置及びコンピュータ記憶媒体
CN104216771A (zh) 软件程序的重启方法及装置
US11900097B2 (en) Application downtime reduction using detached mode operation during operating system updates
US9053022B2 (en) Synchronous software interface for an accelerated compute engine
CN102708015A (zh) 基于cpu不可屏蔽中断系统问题诊断的调试方法
CN109582542B (zh) 一种嵌入式系统核心转储的方法
TW201346570A (zh) 技術抽象層
CN116225765A (zh) 一种在虚拟机中执行指令的方法和一种虚拟机监视器
WO2023169289A1 (zh) 一种进程的执行状态切换方法及装置
CN111506395B (zh) 一种混合仿真的全数字虚拟运行环境的实现方法及装置
US7890740B2 (en) Processor comprising a first and a second mode of operation and method of operating the same
JP4155052B2 (ja) エミュレータ、エミュレーション方法およびプログラム
US7673125B2 (en) Resetting multiple cells within a partition of a multiple partition computer system
US9959225B2 (en) Computer apparatus and control method of computer apparatus
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine
US20130166887A1 (en) Data processing apparatus and data processing method
JP6996748B2 (ja) デバッグシステム、bios、情報処理装置及びデバッグ方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication