CN117555660A - 计算机系统与应用程序相容执行方法 - Google Patents
计算机系统与应用程序相容执行方法 Download PDFInfo
- Publication number
- CN117555660A CN117555660A CN202311500090.6A CN202311500090A CN117555660A CN 117555660 A CN117555660 A CN 117555660A CN 202311500090 A CN202311500090 A CN 202311500090A CN 117555660 A CN117555660 A CN 117555660A
- Authority
- CN
- China
- Prior art keywords
- core
- type
- instruction
- application program
- application
- 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 49
- 238000005265 energy consumption Methods 0.000 claims description 59
- 238000013519 translation Methods 0.000 claims description 57
- 230000008569 process Effects 0.000 claims description 39
- 238000004886 process control Methods 0.000 claims description 19
- 230000008859 change Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims 2
- 230000014616 translation Effects 0.000 description 53
- 230000006870 function Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
本发明提供一种计算机系统与应用程序相容执行方法。该计算机系统以一混合架构处理器同时提供第一类型核、以及第二类型核。相应一应用程序,该混合架构处理器运行的操作系统评估该应用程序的核心调度指标,据以在该第一类型核、以及该第二类型核间,切换执行该应用程序。
Description
技术领域
本发明涉及计算机系统的混合架构处理器,特别涉及混合架构处理器中的应用程序相容技术。
背景技术
随着各种运算需求蓬勃发展,混合架构处理器被提出,以获得性能和功耗的平衡。混合架构处理器包含至少两种类型的核心(或称为“核”,下同),每种类型的核心支持的指令可能不同(例如,其中一种类型的核心支持所有指令,而另一种类型的核心只支持部分指令),这增加了应用程序进程(application process)的调度难度。为了降低应用程序进程调度难度,现有技术中会将支持指令较多的核心视为支持指令较少的核心,因而造成了资源的浪费。如何充分利用混合架构处理器中每个核心的资源,是本领域技术人员要解决的问题之一。
发明内容
本申请提出一种计算机系统、以及一种应用程序相容执行方法。
根据本申请一种实施方式提出的一种计算机系统采用一混合架构处理器,同时提供第一类型核、以及第二类型核。相应一应用程序,该混合架构处理器运行的操作系统评估该应用程序的核心调度指标,据以在该第一类型核、以及该第二类型核间,切换执行该应用程序。
本申请概念更用于实现一种应用程序相容执行方法,包括:提供一混合架构处理器,该混合架构处理器具有一第一类型核、以及一第二类型核;以及相应一应用程序,以该混合架构处理器运行的操作系统评估该应用程序的核心调度指标,据以在该第一类型核、以及该第二类型核间,切换执行该应用程序。
通过本申请提出的计算机系统、及应用程序相容执行方法,先由操作系统评估应用程序的核心调度指标,再根据该核心调度指标在第一类型核、以及第二类型核间,切换执行该应用程序,以充分利用每种类型核心的资源。
下文特举实施例,并配合所附图示,详细说明本发明内容。
附图说明
图1根据本申请一种实施方式图解一计算机系统100,其中采用一混合架构处理器102,包括第一类型核106_#、以及第二类型核108_#;
图2根据本申请一种实施方式图解一核心200;
图3根据本申请一种实施方式图解核心200中特殊模块寄存器MSRcntr的应用,其中涉及多个特殊模块寄存器(MSRs)302、304、306、以及308;
图4根据本申请另外一种实施方式图解核心调度指标的动态更新方式,对照图1系统内存104中的核心调度指标MEMcntr;
图5A、5B为流程图,根据本申请一种实施方式图解操作系统(Operating System)的运作;以及
图6为流程图,说明操作系统如何根据转译计数适应性地调度核心。
【符号说明】
100:计算机系统
102:混合架构处理器
104、402:系统内存
106_1…106_N1:第一类型核
108_1…108_N2:第二类型核
110:最末级高速缓存存储器
112:基本输入输出系统
200、404:核心
202:核心类型
204:重排序缓冲区(ROB)
205:提交单元
206:异常处理单元
207:存储器
208:只读存储器
212:指令高速缓存
214:解码器
216:重命名单元
218:保留站(RS)
220:指令执行单元(IU)
302、304、306、308、408、410、MSRcntr:特殊模块寄存器
406:记录区
412:内部寄存器
ACPI_TABs:集合存储的进阶配置与电源接口表(ACPI tables)
Cntr_1…Cntr_N1、MEMcntr:核心调度指标
en:致能栏
i_counter、i_energy_hint、以及i_perf_hint:转译计数、能源消耗、以及指令提交密度
ISAtrans_1…ISAtrans_N1:转译器
S502…S514、S602…S614:步骤
Tinterval:时间间隔
VA:地址
具体实施方式
以下叙述列举本发明的多种实施例,但并非意图限制本发明内容。实际发明范围应依照权利要求书界定。以下所提及的各种功能方块/模块,可由硬件、软件、固件组合实现,也可包括特殊电路。各种功能方块不限定为分开实现,也可结合在一起,共用某些功能。在本申请中,名词“执行(或运行)应用程序进程”与“执行(或运行)应用程序”的意思相同。
随着各种运算需求蓬勃发展,处理器架构可能有相当改良。例如,经典(legacy)架构支持的部分经典指令可能在某些运算中并不需要。相较于经典架构,硬件简化架构支持的经典指令也较少。
然而,当前市面上应用程序普遍还是为经典架构而设计,以下称为经典应用程序。经典应用程序可能使用到简化架构的核心无法处理的经典指令。本申请提出的解决方案是设计混合架构处理器,除了提供简化架构的核心(又称小核),还提供经典架构的核心(又称大核)。小核包括转译器。藉转译经典指令,小核得以低效能的为经典应用程序提供运算。特别是,本申请还提供一种适应性核心调度机制。在检测到以上低效运作后,操作系统调度大核接手运行此经典应用程序,以提高运作效率。在如此混合架构处理器中,既可以简化处理器的硬件,又可以高效运行经典应用程序。
类似的应用程序相容问题也会发生在因技术演进而发展出的新世代架构上。经典应用程序可能使用到新世代架构处理器无法处理的经典指令(可能是未定义、或改变语意指令)。本申请设计的混合架构处理器除了提供新世代架构的核心(又称新世代核),还提供经典架构的核心(又称经典核)。新世代核可包括转译器,虽可运行经典应用程序,但效能不一定理想。通过本申请提供的适应性核心调度机制,在检测到如此低效运作后,由操作系统调度经典核接手运行经典应用程序,以提高效能、并充分利用经典核的资源。
一种实施方式中,本申请公开的混合架构处理器包括第一类型核、以及第二类型核。所述第一类型核可为小核,而所述第二类型核为大核。或者,所述第一类型核可为新世代核,而所述第二类型核为经典核。事实上,本申请不限于小核─大核、新世代核─经典核这样的混合架构。凡是以至少两类型核心实现混合架构处理器,并根据应用程序适应性进行核心调度,皆涉及本申请概念。
一种实施方式中,第一类型核(如前述小核/新世代核),提供转译器。核心的调度是基于第一类型核的转译计数。越频繁转译,代表目前的应用程序不适合在第一类型核运行,操作系统调度第二类型核接手运行该应用程序。
一种实施方式中,核心调度不是基于转译计数,而是基于指令提交密度、或能源消耗。指令提交密度过低、或能源消耗过高,即进行核心调度。
图1根据本申请一种实施方式图解一计算机系统100,其中采用一混合架构处理器102,并包括耦接该混合架构处理器102的一系统内存104。该混合架构处理器102包括至少一个第一类型核106_1…106_N1(以下统称106_#)、以及至少一个第二类型核108_1…108_N2(以下统称108_#)。该混合架构处理器102还包括一最末级高速缓存存储器(last levelcache,简称LLC)110,由所示核心106_1…106_N1、与108_1…108_N2共用。在一实施例中,核心106_1…106_N1、与108_1…108_N2各是逻辑核心。
第一类型核106_#的硬件较第二类型核108_#精简。一种实施方式中,第一类型核106_#为前述小核,第二类型核108_#为前述大核。一种实施方式中,第一类型核106_#为前述新世代核,第二类型核108_#为前述经典核。
图示实施方式令第一类型核106_#各自包括一转译器(图示ISAtrans_1…ISAtrans_N1,以下统称ISAtrans_#)。对于第二类型核108_#有支持,但第一类型核106_#不支持(或语意变换)的特殊指令,转译器ISAtrans_#会将其转换为一模拟程序。此模拟程序可由宏指令组成,也可由微指令组成。模拟程序的每条指令都是第一类型核106_#原生支持(natively supported)的。第一类型核106_#通过执行模拟程序来完成特殊指令的执行。
关于核心调度,第一类型核106_1…106_N1可为所执行的应用程序评估核心调度指标Cntr_1…Cntr_N1,供决定是否调度第二类型核108_#接手此应用程序。其他实施方式也可将核心调度指标存储在系统内存104中,参考图中标号MEMcntr。核心调度指标可为前述转译计数、或/以及指令提交密度、或/以及能源消耗。
为了自第一类型核106_#切换到适应应用程序的第二类型核108_#,计算机系统100上电启动(power on)、或重置(reset)后,通过执行基本输入输出系统(BIOS)112,可在为各核心建立一进阶配置与电源接口表(ACPI table)时,拨用(借用或复用)其中一位(bit,即比特,下同)、或新增一位标示一结构代号,供辨识各核心属于第一类型核106_#、或第二类型核108_#。基本输入输出系统(BIOS)112会将各核心的进阶配置与电源接口表(ACPI table)存储至系统内存104(图中集合标号为ACPI_TABs),供操作系统辨识存在有哪些第一类型核(106_#)、与第二类型核(108_#),以配置应用程序给适当的核心执行。一种实施方式中,基本输入输出系统(BIOS)112是通过在每个核心上执行一处理器辨识码获取指令(CPUID),来获知该核心属于第一类型核106_#、或第二类型核108_#。一种实施方式中,通过处理器辨识码获取指令(CPUID)还可获知第一类型核106_#是否支持转译。
第一类型核106_#转译的特殊指令主要包括两种类型。第一类特殊指令有第二类型核108_#支持,但第一类型核106_#未支持。第二类特殊指令不只有第二类型核108_#支持,第一类型核106_#也以改变语意的类型支持。第一类型核106_#运行时,第一类特殊指令会引发未定义指令异常(undefined instruction exception,可标示为#UD),而第二类特殊指令会引发一般目的异常(general purpose exception,可标示为#GP)。然而,除却第一类特殊指令,其它第一类型核106_#未支持的指令,也会引发未定义指令异常#UD。本申请一种实施方式是相应未定义指令异常#UD提供一未定义指令异常处理程序(#UD exceptionhandler),用于确认未定义指令异常#UD是否为第一类特殊指令引发,以决定是否转译运行引发该未定义指令异常#UD的指令。同样的,除却第二类特殊指令(语意变化指令),第一类型核106_#可有其它语意保护设计会引发一般目的异常#GP。本申请一种实施方式是相应一般目的异常#GP提供一个一般目的异常处理程序(#GP exception handler),用于确认一般目的异常#GP是否为第二类特殊指令引发,以决定是否转译运行引发该一般目的异常#GP的指令。
一种实施方式中,未定义指令异常#UD所引发的未定义指令异常处理程序将查表解读异常,再根据分析结果决定是否进行转译。例如,未定义指令异常处理程序可维护一特殊指令列表,条列第一类型核106_#不支持的第一类特殊指令所涉及的操作码(opcode)。若引发未定义指令异常#UD的目标指令的操作码(opcode)列在该特殊指令列表(命中),则该未定义指令异常处理程序将此目标指令认定为适合第二类型核108_#执行的特殊指令。
一种实施方式中,一般目的异常#GP所引发的一般目的异常处理程序将查表解读异常,再根据分析结果决定是否进行转译。例如,未定义指令异常处理程序可维护一特殊指令列表,条列第一类型核106_#不支持的第二类特殊指令的操作码(opcode)。若引发一般目的异常#GP的目标指令的操作码列在该特殊指令列表(命中),该一般目的异常处理程序会再依据该一般目的异常#GP的错误码(error code),判断此目标指令是否为适合第二类型核108_#执行的特殊指令。在另一实施方式中,若引发一般目的异常#GP的目标指令的操作码列在该特殊指令列表(命中),该一般目的异常处理程序除了依据该一般目的异常#GP的错误码(error code)、更进一步依据目标指令的源操作数(src operand),判断此目标指令是否为适合第二类型核108_#执行的特殊指令。
下面以输入(或输出)指令(例如IN(或OUT)指令)为例进行详细说明如何判断引发一般目的异常#GP的目标指令是否为特殊指令。如果第一类型核106_#执行输入(或输出)指令时发生一般目的异常#GP,该一般目的异常#GP的错误码会被压入堆栈(stack)中,然后会引发一般目的异常处理程序。在一般目的异常处理程序中,先从堆栈中读取该一般目的异常#GP的错误码,判断该一般目的异常#GP的错误码是否是特定值(例如特定值0)。如果该一般目的异常#GP的错误码不是特定值,则表示该输入(或输出)指令不是特殊指令。如果该一般目的异常#GP的错误码是特定值,则进一步确认该输入(或输出)指令的操作码是否列在该特殊指令列表中。若该输入(或输出)指令的操作码没有列在该特殊指令列表中(未命中),表示该输入(或输出)指令不是特殊指令;若该输入(或输出)指令的操作码列在该特殊指令列表中(命中),则表示该输入(或输出)指令是特殊指令。
下面以跳转指令(例如JMP、JE、JNE、JZ、JNZ等指令)为例进行详细说明如何判断引发一般目的异常#GP的目标指令是否为特殊指令。如果第一类型核106_#执行跳转指令时发生一般目的异常#GP,该一般目的异常#GP的错误码会被压入堆栈(stack)中,然后会引发一般目的异常处理程序。在一般目的异常处理程序中,可通过查特殊指令列表确认该跳转指令的操作码是否列在该特殊指令列表中。若该跳转指令的操作码没有列在该特殊指令列表中(未命中),表示该跳转指令不是特殊指令。若该跳转指令的操作码列在该特殊指令列表中(命中),再从堆栈中读取该一般目的异常#GP的错误码,并把该目标指令的源操作数作为基地址(base address)、把该一般目的异常#GP的错误码作为段选择子(segmentselector),在段描述符表中查找是否存在对应的段描述符。若不存在对应的段描述符,则表明该跳转指令为适合第二类型核108_#执行的特殊指令。若存在对应的段描述符,则再进一步根据该段描述符的性质,判断该段描述符是否被第一类型核106_#支持。如果该段描述符被第一类型核106_#支持,则表明该跳转指令不是适合第二类型核108_#执行的特殊指令;如果该段描述符不被第一类型核106_#支持,则表明该跳转指令为适合第二类型核108_#执行的特殊指令。举例来说,如果第一类型核106_#只支持64比特的段描述符,当该段描述符是16比特或32比特的描述符时,则可以判断出该段描述符不被第一类型核106_#支持。在一实施例中,该目标指令的源操作数也在执行一般目的异常处理程序之前被存放在堆栈中,并在执行一般目的异常处理程序从堆栈中获取该目标指令的源操作数。
一种实施方式中,一般目的异常#GP包含一异常码(exception code),且该异常码会被压入堆栈中。一般目的异常#GP所引发的一般目的异常处理程序根据该一般目的异常#GP的异常码,判断引发该一般目的异常#GP的目标指令是否为适合第二类型核108_#执行的特殊指令。例如,当该一般目的异常#GP的异常码为不为0的特定值(例如异常码为50、或51等特定值)时,表示引发该一般目的异常#GP的目标指令为适合第二类型核108_#执行的特殊指令。
图2根据本申请一种实施方式图解一核心200。相应本申请混合架构,核心200可以使用一特殊模块寄存器(model specific register,简称MSR)填写核心类型202,标记自身属第一类型核106_#、或第二类型核108_#。核心200特别更规划特殊模块寄存器MSRcntr,供动态更新所执行的应用程序的核心调度指标(如,转译计数、或/以及指令提交密度、或/以及能源消耗)。核心调度指标可直接填写在特殊模块寄存器MSRcntr上。或者,特殊模块寄存器MSRcntr可以用于填写一地址,指向该系统内存104上动态更新的核心调度指标MEMcntr。
以第一类型核106_#为例,运行应用程序的过程中,重排序缓冲区(ROB)204出现未定义指令异常#UD、或一般目的异常#GP,则触发异常处理单元206陷入(trap)异常处理(异常处理程序代码存储在只读存储器208中,包括前述未定义指令异常处理程序、以及#一般目的异常处理程序),判别引发未定义指令异常#UD/一般目的异常#GP的目标指令是否是特殊指令,并在判别出特殊指令后,进行指令转译。
此段落详述核心200的操作细节。指令高速缓存212,缓存从系统内存104读取到的指令。解码器214解码来自指令高速缓存212的指令(这里的指令指的是宏指令),生成对应的微指令(每个指令经解码,可以生成至少一个微指令;例如,一指令经解码后生成微指令1和微指令2)。重命名单元216重命名来自解码器214的微指令(即为微指令分配物理寄存器),并将微指令按程序顺序、同时发送给保留站(RS)218和重排序缓冲区204。保留站218接收、保存来自重命名单元216的微指令。当微指令满足执行条件时,将微指令发送给指令执行单元220(可以不按程序顺序发送给指令执行单元220)。指令执行单元220执行接收自保留站218的微指令,将指令执行结果(包括正常执行结果、和异常结果)写入存储器207中与微指令对应的条目中,并将其标记为已执行完成。重排序缓冲区204将接收自重命名单元216的微指令按程序顺序写入存储器207中。指令的提交单元205判断存储器207中的最老指令(按程序顺序最早的未提交指令)是否满足提交条件。若满足提交条件,则对其进行提交处理。若待提交指令未发生异常,则按正常方式进行处理(如更新架构寄存器、并将其对应的微指令从存储器207中删除,等等)。若待提交指令发生了异常,则将待提交指令的相关信息(包括发生的异常的信息)发送给异常处理单元206。异常处理单元206根据接收到的待提交指令的相关信息判断异常类型,并查找只读存储器208中对应的异常处理程序进行异常处理(分#UD和#GP)。异常处理单元206将对应的异常处理程序解码为微指令发送给重命名单元216执行。在异常处理程序中,判断发生异常的指令是否是特殊指令,如是,则转译执行特殊指令。
图3根据本申请一种实施方式图解核心200中特殊模块寄存器MSRcntr的应用,其中涉及多个特殊模块寄存器(MSRs)302、304、306、以及308。
核心调度指标(转译计数、指令提交密度、能源消耗)是直接动态更新在特殊模块寄存器(MSRs)302、304、306上。特殊模块寄存器308为控制功能,其中致能栏en可为一位,一并致能/除能在特殊模块寄存器302、304、306更新转译计数、指令提交密度、以及能源消耗。例如,当致能栏en被设置(例如被设置为1)时,计数功能开启,特殊模块寄存器302、304、306被用于更新转译计数、指令提交密度、以及能源消耗。当致能栏en被清除(例如被设置为0)时,计数功能关闭。其他实施方式中,致能栏en可为三位,分别致能/除能特殊模块寄存器302、304、306显示转译计数、指令提交密度、以及能源消耗。
特殊模块寄存器302用于存储转译计数,计数转译的指令数。当特殊模块寄存器308致能栏en被设置时,转译器ISAtrans_#会维护此计数。当特殊模块寄存器302的有效标示栏被设置(例如被设置为1)时,表示转译计数栏中的数值有效;当特殊模块寄存器302的有效标示栏被清除(例如被设置为0)时,表示转译计数栏中的数值无效。在一实施例中,特殊模块寄存器302的有效标示栏和转译计数栏会被同时清除(例如被设置为0);当产生转译计数有效计数时,特殊模块寄存器302的有效标示栏和转译计数栏会被同时设置(例如被设置为1)、且在产生的转译计数保持有效期间持续更新转译计数栏。在一实施例中,是通过累加的方式更新转译计数栏。例如,更新后转译计数栏的数值为更新前转译计数栏的数值与新增的转译的指令数的和。
特殊模块寄存器304用于记录指令提交密度,显示指令提交操作占用的周期数;提交单元(retiring unit)205可实现此计数的维护。当特殊模块寄存器308致能栏en被设置时,提交单元205会维护此计数。当特殊模块寄存器304的有效标示栏被设置(例如被设置为1)时,表示指令提交密度栏中的数值有效;当特殊模块寄存器304的有效标示栏被清除(例如被设置为0)时,表示指令提交密度栏中的数值无效。在一实施例中,特殊模块寄存器304的有效标示栏和指令提交密度栏会被同时清除(例如被设置为0);当产生指令提交密度有效计数时,特殊模块寄存器304的有效标示栏和指令提交密度栏会被设置(例如被设置为1)、且在产生的指令提交密度保持有效期间持续更新指令提交密度栏。在一实施例中,是通过累加的方式更新指令提交密度栏。例如,更新后指令提交密度栏的数值为更新前指令提交密度栏的数值与新增的指令提交操作占用的周期数的和。在一实施例中,每周期提交指令数也可反映指令提交密度(即单位时间内提交的指令的条数)。
特殊模块寄存器306用于显示能源消耗,计数高速缓存未命中次数(cache misscounting);高速缓存存储器(例如,图2中的指令高速缓存212)可实现此计数。当特殊模块寄存器308致能栏en被设置时,高速缓存存储器会维护此计数。应用程序执行过程中,如果要操作的数据在高速缓存中不存在,会发生高速缓存未命中(cache miss)。发生高速缓存未命中(cache hit)时,计算机系统100会暂停执行应用程序、并从系统内存104读取数据。从系统内存104读取到数据之后,计算机系统100再继续执行应用程序。在暂停执行期间,应用程序不会消耗能量。高速缓存未命中次数越高,表示应用程序暂停执行的时间越长,能量消耗越低。当特殊模块寄存器306的有效标示栏被设置(例如被设置为1)时,表示能源消耗栏中的数值有效;当特殊模块寄存器306的有效标示被清除(例如被设置为0)时,表示能源消耗栏中的数值无效。在一实施例中,特殊模块寄存器306的有效标示栏和能源消耗栏会被同时清除(例如被设置为0);当产生能源消耗有效计数时,特殊模块寄存器306的有效标示栏和能源消耗栏会被同时设置(例如被设置为1)、且在产生的能源消耗保持有效期间持续更新能源消耗栏。在一实施例中,是通过累加的方式更新能源消耗栏。例如,更新后能源消耗栏的数值为更新前能源消耗栏的数值与新增的高速缓存未命中次数的和。在一实施例中,输入输出访问所耗的周期数也能反映能量消耗。
需特别说明的是,操作系统(OS)执行一应用程序(application)时,会创建一应用程序进程(application process)。在本申请中,应用程序进程也称为任务(task),有对应的进程控制块(process control block,简称PCB)。一种实施方式中,操作系统调度一任务(即应用程序进程,下同)到目标核心做为其目标应用程序进程后,会先清空该目标核心的特殊模块寄存器MSRcntr中的记录(转译计数、指令提交密度、以及能源消耗),再设置特殊模块寄存器308的致能栏en,开始评估该目标应用程序进程的核心调度指标。该目标应用程序进程退出运行状态(即目标应用程序进程从运行状态变为就绪状态或等待状态)时,对应的目标进程控制块(PCB)将保存核心调度指标。稍后再调度该应用程序进程时,操作系统是根据该目标进程控制块(PCB)所保存的该核心调度指标,调度该第一类型核106_#、以及该第二类型核108_#之一运行该应用程序进程,实现适应性核心调度。在一实施例中,特殊模块寄存器302/304/306可以通过累加方式运作。举例来说,执行目标应用程序进程过程中,假设在某一时刻目标核心的特殊模块寄存器302中保存的转译计数为10。如果目标核心又转译执行了目标应用程序进程的1条指令,则目标核心的特殊模块寄存器302中保存的转译计数会被更新为11(即10+1=11)。
图4根据本申请另外一种实施方式图解核心调度指标的动态更新方式,对照图1系统内存104中的核心调度指标MEMcntr。
在另一实施例中,如图4所示,系统内存402为各核心(404)规划一记录区406,同图3特殊模块寄存器302、304、306功能,记录转译计数、指令提交密度、以及能源消耗。核心404可使用特殊模块寄存器(MSRs)408以及410实现前述特殊模块寄存器MSRcntr。特殊模块寄存器408存储地址VA,指向该系统内存402中的该记录区406。特殊模块寄存器410除了包括前述致能栏en(致能/除能核心调度指标的评估功能),还可设定一时间间隔Tinterval。核心404每隔时间间隔Tinterval读取记录区406记录的转译计数、指令提交密度、以及能源消耗,与内部寄存器412里,实时评估的转译计数i_counter、指令提交密度i_perf_hint、以及能源消耗i_energy_hint累加后,再写回系统内存402该记录区406,并重置内部寄存器412中存储的转译计数i_counter、指令提交密度i_perf_hint、以及能源消耗i_energy_hint。
图5A、5B为流程图,根据本申请一种实施方式图解操作系统的运作。
如图5A所示,计算机系统100启动操作系统时,先执行步骤S502。在步骤S502中,计算机系统100自系统内存104读出进阶配置与电源接口表ACPI_TABs。在步骤S504中,计算机系统100分析进阶配置与电源接口表ACPI_TABs,获知各核心对应第一类型核106_#、或第二类型核108_#,将其填入操作系统为各核心所定义的处理器数据结构(cpuinfo)中,作为核心信息。
操作系统启动后,可以根据用户的请求执行应用程序。如图5B所示,操作系统以步骤S508为运行的应用程序(application)建立一应用程序进程(application process),包括为代表一任务(task)的该应用程序进程(application process)建立一进程控制块(PCB)。本申请利用进程控制块(PCB)保存核心调度指标(包括转译计数、指令提交密度、以及能源消耗),供操作系统随着应用程序执行而适应性调度核心。在一实施例中,操作系统将新建立的进程控制块(PCB)中的核心调度指标清空(例如,将新建立的进程控制块核心调度指标设置为0)。
步骤S512,计算机系统100在执行应用程序进程(application process)时,提交单元(retiring unit)250实时监控指令提交密度、并将得到的指令提交密度实时写入进程控制块中,高速缓存存储器(cache)实时监控能源消耗、并将得到的能源消耗数据实时写入进程控制块中。期间,遇到需要转译执行的指令时,未定义指令异常处理程序、以及一般目的异常处理程序中包含的转译操作则包括更新进程控制块中的转译计数。在一实施例中,转译计数是以累加方式更新的。例如,假设当前转译计数为10,再次转译执行一条指令之后,转译计数会被更新为11(即10+1=11)。
在分时操作系统中,每隔固定时间片(例如每隔10毫秒),操作系统会暂停正在运行的应用程序进程、将其写入就绪进程队列中,并从就绪进程队列中选择下一个应用程序进程运行。在步骤S514中,每次接续运行就绪进程队列中被暂停的应用程序时,操作系统是根据核心调度指标(转译计数、指令提交密度、以及能源消耗)适应性地调度核心。一种实施方式是根据各核心中存储的上述处理器数据结构(cpuinfo)的核心信息,操作系统调度程序将该应用程序进程(application process)依照其核心调度指标分配给第一类型核106_#以及第二类型核108_#之一运行。该应用程序进程在所分配的核心上执行时,会再如步骤S512所描述的那样,更新转译计数、指令提交密度、以及能源消耗。
需要注意的是,需要被调度运行的操作系统程序也属于前文所说的应用程序。但由于操作系统开发人员可以预先知道特定中央处理器(CPU)中核心对指令的支持情况,操作系统开发人员可以只使用所有核心都支持的指令撰写操作系统程序,以提高操作系统的执行效率。
下面结合图6,详述图5的步骤S514,更详细地描述操作系统是如何根据核心调度指标适应性地调度核心的。
图6为流程图,说明操作系统如何根据转译计数适应性地调度核心。此实施例中,第一类型核106_#为小核,而第二类型核108_#为大核。所监控的核心调度指标为转译计数。
步骤S602中,操作系统调度程序判断任务列表(task list)是否为空。若是,步骤S604等待n个周期,再检查任务列表(S602)。在另一实施例中,判断出任务列表为空时,操作系统调度程序会进入睡眠状态,等待中断唤醒。等任务列表中加入新的任务时,操作系统调度程序会被中断唤醒。例如,操作系统用户执行一个新的应用程序时,操作系统会创建一个新的任务。然后,将新创建的任务加入任务列表中,并发出一个中断唤醒操作系统调度程序。
若步骤S602中判断出任务列表不为空,步骤S606中,操作系统调度程序找出任务列表中,转译计数大于一阈值、且最高的任务,作为择定迁移的目标任务。在一实施例中,该阈值为0。步骤S608中,操作系统调度程序判断是否存在闲置的大核(第二类型核108_#)。若有大核(第二类型核108_#)闲置,步骤S610中,操作系统调度程序将目标任务分配给大核(第二类型核108_#)运行。在一实施方式中,当选定的闲置大核处于休眠状态时,运行操作系统调度程序的核心会向选定的闲置大核发送处理器间中断(Inter-ProcessorInterrupt,简称IPI)将其唤醒。然后,再由选定的闲置大核运行目标任务。
若步骤S608中操作系统调度程序判定大核(第二类型核108_#)都忙碌,则在步骤S612中,操作系统调度程序判断是否存在闲置的小核(第一类型核106_#)。若小核(第一类型核106_#)也都忙碌,则操作系统调度程序以步骤S604等待n个周期。反之,步骤S614中,操作系统调度程序将目标任务分配给小核(第一类型核106_#)运行。在一实施例中,任务列表为操作系统维护的就绪进程队列。
如此一来,任务被相应地配置给混合架构处理器102中不同类型的核心。
一种实施方式包括任务1与任务2。任务1的转译计数T1.counter高于任务2的转译计数T2.counter。步骤S606择定以任务1为需要优先配置的目标任务。步骤S608若判定有闲置大核,则步骤S610配置该闲置大核执行任务1。流程回到步骤S602,任务列表剩下任务2。步骤S606这次择定以任务2为目标任务。步骤S608若判定还有闲置大核,则步骤S610配置任务2也可以由闲置大核执行。若已无闲置大核,但步骤S612判定有闲置小核,则步骤S614配置任务2由闲置小核执行。如此一来,较需要大核执行的任务1可较任务2优先分配到大核。若多个大核闲置,任务1与任务2都可以大核高效运行。
以上核心调度概念,也可变型应用在更复杂的例子中。一种实施方式中,转译计数、指令提交密度、以及能源消耗都被用做核心调度指标。除了优先以大核执行在小核上涉及转译的任务,还可还将指令提交密度、以及能源消耗纳入核心调度考虑中。
一种实施方式包括任务1与任务2。转译计数、指令提交密度、以及能源消耗都被用做核心调度指标。任务1的转译计数T1.counter高于任务2的转译计数T2.counter。运行初期,任务1较任务2优先配置给大核。然而,在运行过程中收集的指令提交密度、以及能源消耗信息,也会引发核心调度。
举例来说,针对任务1,核心A观察到的指令提交密度T1.A_Pcounter高于核心B观察到的指令提交密度T1.B_Pcounter,而核心B观察到的能量消耗T1.B_Ecounter低于核心A观察到的能量消耗T1.A_Ecounter。若以指令提交密度为优先考虑,核心A会被调度来接手任务1。若以能量消耗为优先考虑,核心B会被调度来接手任务1。
一种实施方式中,一应用程序的核心调度指标包括一第一指令提交密度、以及一第二指令提交密度。该第一指令提交密度由该第一类型核106_#的提交单元(205)监测,且该第二指令提交密度由该第二类型核108_#的提交单元(205)监测。相应高于该第一指令提交密度的该第二指令提交密度,该操作系统提升调度该第二类型核108_#运行该应用程序的机率。
一种实施方式中,一应用程序的核心调度指标包括一第一能量消耗、以及一第二能量消耗。该第一能量消耗由该第一类型核106_#监测,且该第二能量消耗由该第二类型核108_#监测。相应低于该第一能量消耗的该第二能量消耗,该操作系统提升调度该第二类型核108_#运行该应用程序的机率。
本申请概念更用于实现一种应用程序相容执行方法,包括:提供一混合架构处理器102,该混合架构处理器具有第一类型核106_#、以及第二类型核108_#。相应一应用程序,以该混合架构处理器102运行的操作系统评估该应用程序的核心调度指标(转译计数、或/以及指令提交密度、或/以及能源消耗),据以在该第一类型核106_#、以及该第二类型核108_#间,切换执行该应用程序。
前述各种实施方式细节可能有各种变形。凡是采用混合架构实现处理器(包括第一类型核106_#、以及第二类型核108_#),并根据核心调度指标(转译计数、或/以及指令提交密度、或/以及能源消耗),适应应用程序调度核心的技术,都可能落入本申请保护范围。
通过本申请提出的计算机系统、及应用程序相容执行方法,先由操作系统评估应用程序的核心调度指标,再根据该核心调度指标在第一类型核、以及第二类型核间,切换执行该应用程序,以充分利用每种类型核心的资源。
虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附权利要求书界定范围为准。
Claims (20)
1.一种计算机系统,包括:
混合架构处理器,具有第一类型核、以及第二类型核;
其中:
相应应用程序,该混合架构处理器运行的操作系统评估该应用程序的核心调度指标,据以在该第一类型核、以及该第二类型核间,切换执行该应用程序。
2.如权利要求1所述的计算机系统,其中:
相应该应用程序,该操作系统建立应用程序进程,其中,该应用程序进程包含进程控制块,该进程控制块保存该核心调度指标;
接续运行该应用程序时,该操作系统是根据该进程控制块所保存的该核心调度指标,调度该第一类型核以及该第二类型核之一运行该应用程序。
3.如权利要求2所述的计算机系统,其中:
各核心提供特殊模块寄存器,供动态更新所执行的目标应用程序对应的核心调度指标,交给该目标应用程序进程的目标进程控制块保存。
4.如权利要求3所述的计算机系统,其中:
各目标应用进程的核心调度指标是直接动态更新在所对应的核心提供的特殊模块寄存器上。
5.如权利要求3所述的计算机系统,还包括:
系统内存,为各核心规划记录区;
其中:
各核心的特殊模块寄存器存储该系统内存上该记录区的地址,并标示时间间隔;
各核心包括内部寄存器,每隔该时间间隔,根据该内部寄存器所载内容形成该记录区内容,作为对应的核心所执行的目标应用程序的核心调度指标,并重置该内部寄存器。
6.如权利要求1所述的计算机系统,其中:
该第二类型核设计有该第一类型核未支持、或该第一类型核以改变语意支持的特殊指令;
该第一类型核提供转译器,用以转译特殊指令供该第一类型核执行;
该应用程序的核心调度指标包括转译计数;且
相应增加的转译计数,该操作系统提升调度该第二类型核运行该应用程序的机率。
7.如权利要求1所述的计算机系统,其中:
该应用程序的核心调度指标包括第一指令提交密度、以及第二指令提交密度,该第一指令提交密度由该第一类型核的提交单元监测,且该第二指令提交密度由该第二类型核的提交单元监测;且
相应高于该第一指令提交密度的该第二指令提交密度,该操作系统提升调度该第二类型核运行该应用程序的机率。
8.如权利要求1所述的计算机系统,其中:
该应用程序的核心调度指标包括第一能量消耗、以及第二能量消耗,该第一能量消耗由该第一类型核监测,且该第二能量消耗由该第二类型核监测;且
相应低于该第一能量消耗的该第二能量消耗,该操作系统提升调度该第二类型核运行该应用程序的机率。
9.如权利要求8所述的计算机系统,其中:
该第一能量消耗是由该第一类型核的高速缓存存储器根据高速缓存未命中次数作估计;且
该第二能量消耗是由该第二类型核的高速缓存存储器根据高速缓存未命中次数作估计。
10.如权利要求8所述的计算机系统,其中:
该第一能量消耗是由该第一类型核的输入输出访问的周期数估计出;且
该第二能量消耗是由该第二类型核的输入输出访问的周期数估计出。
11.一种应用程序相容执行方法,包括:
提供混合架构处理器,该混合架构处理器具有第一类型核、以及第二类型核;以及
相应应用程序,以该混合架构处理器运行的操作系统评估该应用程序的核心调度指标,据以在该第一类型核、以及该第二类型核间,切换执行该应用程序。
12.如权利要求11所述的应用程序相容执行方法,其中:
相应该应用程序,该操作系统建立应用程序进程,其中,该应用程序进程包含进程控制块,该进程控制块保存该核心调度指标;
接续该应用程序时,该操作系统是根据该进程控制块所保存的该核心调度指标,调度该第一类型核以及该第二类型核之一运行该应用程序。
13.如权利要求12所述的应用程序相容执行方法,其中:
各核心提供特殊模块寄存器,供动态更新所执行的目标应用程序对应的核心调度指标,交给该目标应用程序进程的目标进程控制块保存。
14.如权利要求13所述的应用程序相容执行方法,其中:
各目标应用进程的核心调度指标是直接动态更新在所对应的核心提供的特殊模块寄存器上。
15.如权利要求13所述的应用程序相容执行方法,还包括:
在系统内存为各核心规划记录区;
其中:
各核心的特殊模块寄存器存储该系统内存上该记录区的地址,并标示时间间隔;
各核心包括内部寄存器,每隔该时间间隔,根据该内部寄存器所载内容形成该记录区内容,作为对应的核心所执行的目标应用程序的核心调度指标,并重置该内部寄存器。
16.如权利要求11所述的应用程序相容执行方法,其中:
该第二类型核设计有该第一类型核未支持、或该第一类型核以改变语意支持的特殊指令;
该第一类型核提供转译器,用以转译特殊指令供该第一类型核执行;
该应用程序的核心调度指标包括转译计数;且
相应增加的转译计数,该操作系统提升调度该第二类型核运行该应用程序的机率。
17.如权利要求11所述的应用程序相容执行方法,其中:
该应用程序的核心调度指标包括第一指令提交密度、以及第二指令提交密度,该第一指令提交密度由该第一类型核的提交单元监测,且该第二指令提交密度由该第二类型核的提交单元监测;且
相应高于该第一指令提交密度的该第二指令提交密度,该操作系统提升调度该第二类型核运行该应用程序的机率。
18.如权利要求11所述的应用程序相容执行方法,其中:
该应用程序的核心调度指标包括第一能量消耗、以及第二能量消耗,该第一能量消耗由该第一类型核监测,且该第二能量消耗由该第二类型核监测;且
相应低于该第一能量消耗的该第二能量消耗,该操作系统提升调度该第二类型核运行该应用程序的机率。
19.如权利要求18所述的应用程序相容执行方法,其中:
该第一能量消耗是由该第一类型核的高速缓存存储器根据高速缓存未中数作估计;且
该第二能量消耗是由该第二类型核的高速缓存存储器根据高速缓存未中数作估计。
20.如权利要求18所述的应用程序相容执行方法,其中:
该第一能量消耗是由该第一类型核的输入输出访问的周期数估计出;且
该第二能量消耗是由该第二类型核的输入输出访问的周期数估计出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311500090.6A CN117555660A (zh) | 2023-11-10 | 2023-11-10 | 计算机系统与应用程序相容执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311500090.6A CN117555660A (zh) | 2023-11-10 | 2023-11-10 | 计算机系统与应用程序相容执行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117555660A true CN117555660A (zh) | 2024-02-13 |
Family
ID=89812093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311500090.6A Pending CN117555660A (zh) | 2023-11-10 | 2023-11-10 | 计算机系统与应用程序相容执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117555660A (zh) |
-
2023
- 2023-11-10 CN CN202311500090.6A patent/CN117555660A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10061588B2 (en) | Tracking operand liveness information in a computer system and performing function based on the liveness information | |
US9483267B2 (en) | Exploiting an architected last-use operand indication in a system operand resource pool | |
US9311095B2 (en) | Using register last use information to perform decode time computer instruction optimization | |
TWI494850B (zh) | 通透地提供給作業系統之非對稱多核心處理器系統 | |
US9690589B2 (en) | Computer instructions for activating and deactivating operands | |
US20170147369A1 (en) | Performance-imbalance-monitoring processor features | |
US20140047219A1 (en) | Managing A Register Cache Based on an Architected Computer Instruction Set having Operand Last-User Information | |
JP5244160B2 (ja) | 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム | |
CN1732447A (zh) | 最低优先级中断的处理器功率状态知晓分配的机制 | |
US10831537B2 (en) | Dynamic update of the number of architected registers assigned to software threads using spill counts | |
CN117555660A (zh) | 计算机系统与应用程序相容执行方法 | |
EP4020187A1 (en) | Segmented branch target buffer based on branch instruction type | |
EP4020167A1 (en) | Accessing a branch target buffer based on branch instruction information | |
US20220308882A1 (en) | Methods, systems, and apparatuses for precise last branch record event logging | |
US20110231637A1 (en) | Central processing unit and method for workload dependent optimization thereof | |
CN114610388A (zh) | 一种指令跳转方法、处理器及电子设备 | |
US11775336B2 (en) | Apparatus and method for performance state matching between source and target processors based on interprocessor interrupts | |
CN117555661A (zh) | 计算机系统与应用程序相容执行方法 | |
US20240111654A1 (en) | Hybrid performance monitoring unit (pmu) enumeration |
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 |