CN112346783B - 一种处理器及其操作方法、装置、设备和介质 - Google Patents
一种处理器及其操作方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN112346783B CN112346783B CN202011223030.0A CN202011223030A CN112346783B CN 112346783 B CN112346783 B CN 112346783B CN 202011223030 A CN202011223030 A CN 202011223030A CN 112346783 B CN112346783 B CN 112346783B
- Authority
- CN
- China
- Prior art keywords
- width
- registers
- processor
- configurable
- instruction set
- 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.)
- Active
Links
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开提供了一种处理器及其操作方法、装置、设备和介质。所述处理器包括可配置的物理寄存器组,其可被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集;至少一个系统控制寄存器,其用于存储对所述可配置的物理寄存器组的配置信息,以及控制器,其用于根据所述配置信息,对所述可配置的物理寄存器组进行配置。本公开提供的处理器可以由实际操作者根据应用场景来对处理器中的物理寄存器组进行灵活配置,以用于支持不同的应用场景,而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度,从而节约处理器资源,使得处理器设计更加灵活。
Description
技术领域
本公开涉及处理器技术,更具体地,涉及一种处理器及其操作方法、装置、设备和介质。
背景技术
现在技术中,在处理器(如CPU)内,物理寄存器组(CPU的硬件资源)内寄存器的配置都是固定的,无法根据应用场景进行灵活地配置。当需要更多和/或更宽的寄存器时,就需要增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度,这不仅增大了物理寄存器组在处理器中的占用面积,而且给处理器设计、实现处理器有时序、功耗、布局、成本等多方面带来了巨大挑战。
因此,需要一种全新的处理器,其中,所述处理器内的物理寄存器组内的寄存器可以根据应用场景被灵活配置,而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度。
发明内容
针对上述问题,本公开提供了一种处理器及其操作方法、装置、设备和介质。利用本公开提供的处理器,可以根据应用场景来对处理器中的物理寄存器组进行灵活配置,以用于支持不同的应用场景,而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度,从而节约处理器资源,使得处理器设计更加灵活。
本公开实施例提供了一种处理器,包括:可配置的物理寄存器组,其可被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集;至少一个系统控制寄存器,其用于存储对所述可配置的物理寄存器组的配置信息,以及控制器,其用于根据所述配置信息,对所述可配置的物理寄存器组进行配置。
根据本公开实施例,在所述配置信息指示所述可配置的物理寄存器组被配置来支持对第一宽度的数据进行处理的第一指令集的情况下,所述控制器将所述可配置的物理寄存器组配置为包括第一数量的具有第一宽度的物理寄存器;在所述配置信息指示所述可配置的物理寄存器组被配置来支持对第二宽度的数据进行处理的第二指令集的情况下,所述控制器将所述可配置的物理寄存器组配置为包括第二数量的具有第二宽度的物理寄存器。
根据本公开实施例,所述第一指令集包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度是所述第一宽度;所述第二指令集包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度是所述第二宽度。
根据本公开实施例提供了一种处理器的操作方法,所述处理器包括系统控制寄存器和可配置的物理寄存器组,并且所述可配置的物理寄存器组可被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,所述操作方法包括:获取所述可配置的物理寄存器的目标配置值,所述目标配置值用于指示所述可配置的物理寄存器的目标配置宽度,所述目标配置宽度为第一宽度或第二宽度;基于所获取的目标配置值,在所述系统控制寄存器中写入对应的配置信息;响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集。
根据本公开实施例,在所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集的情况下,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;以及/或者在所述可配置的物理寄存器组配置为支持对第二宽度的数据进行处理的第二指令集的情况下,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器。
根据本公开实施例,所述第一指令集包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度是所述第一宽度;所述第二指令集包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度是所述第二宽度。
根据本公开实施例,获取所述可配置的物理寄存器的目标配置值包括:接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;或者根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值。
根据本公开实施例,所述接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值包括:在操作系统启动时或在操作系统运行过程中,接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;所述根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值包括:根据处理器中的异常处理机制,响应于出现了处理器当前不支持的指令或响应于超过预定的时间间隔处理器未使用预定物理寄存器,将所述系统控制寄存器中的预设位设置为预设标志值。
根据本公开实施例,所述预定物理寄存器是矢量寄存器和/或浮点寄存器。
根据本公开实施例,所述响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集包括:响应于所述系统控制寄存器中的第一预设位被设置为第一预设标志值,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;响应于所述系统控制寄存器中的第一预设位被设置为第二预设标志值,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器;其中,所述第一数量大于所述第二数量,所述第一宽度小于所述第二宽度。
根据本公开实施例,在所述系统控制寄存器中的第一预设位被设置为第一预设标志值的情况下,当所述系统控制寄存器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第一数量;当所述系统控制寄存器中的第二预设位被设置为第四预设标志值时,所述处理器支持的同时多线程的数量是第二数量;在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,当所述系统控制器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第第一数量;其中,所述第一数量小于所述第二数量。
根据本公开实施例,在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,所述系统控制器中的第二预设位不能被设置为第四预设标志值。
根据本公开实施例提供了一种处理器的操作装置,所述处理器包括系统控制寄存器和可配置的物理寄存器组,并且所述可配置的物理寄存器组可被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,所述操作方法包括:获取模块,被配置为获取所述可配置的物理寄存器的目标配置值,所述目标配置值用于指示所述可配置的物理寄存器的目标配置宽度,所述目标配置宽度为第一宽度或第二宽度;写入模块,被配置为基于所获取的目标配置值,在所述系统控制寄存器中写入对应的配置信息;配置模块,被配置为响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集。
根据本公开实施例,在所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集的情况下,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;以及/或者在所述可配置的物理寄存器组配置为支持对第二宽度的数据进行处理的第二指令集的情况下,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器。
根据本公开实施例,所述第一指令集包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度是所述第一宽度;所述第二指令集包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度是所述第二宽度。
根据本公开实施例,所述获取模块包括:接收模块,被配置为接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;或者自动判断模块,被配置为根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值。
根据本公开实施例,所述接收模块包括:在操作系统启动时或在操作系统运行过程中,接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;所述自动判断模块包括:根据处理器中的异常处理机制,响应于出现了处理器当前不支持的指令或响应于超过预定的时间间隔处理器未使用预定物理寄存器,将所述系统控制寄存器中的预设位设置为预设标志值。
根据本公开实施例,所述预定物理寄存器是矢量寄存器和/或浮点寄存器。
根据本公开实施例,所述配置模块包括:响应于所述系统控制寄存器中的第一预设位被设置为第一预设标志值,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;响应于所述系统控制寄存器中的第一预设位被设置为第二预设标志值,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器其中,所述第一数量大于所述第二数量,所述第一宽度小于所述第二宽度。
根据本公开实施例,在所述系统控制寄存器中的第一预设位被设置为第一预设标志值的情况下,当所述系统控制寄存器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第一数量;当所述系统控制寄存器中的第二预设位被设置为第四预设标志值时,所述处理器支持的同时多线程的数量是第二数量;在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,当所述系统控制器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第一数量;其中,所述第一数量小于所述第二数量。
根据本公开实施例,在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,所述系统控制器中的第二预设位不能被设置为第四预设标志值。
根据本公开实施例提供了一种处理器的操作设备,包括:处理器,和存储器,所述存储器存储有计算机可执行指令,所述计算机可执行指令当由处理器执行时促使处理器执行如上述的方法。
根据本公开实施例提供了一种计算机可读记录介质,存储有计算机可执行指令,其中,所述计算机可执行指令当由处理器执行时促使处理器执行如上述的方法。
本公开实施例提供了一种处理器及其操作方法、装置、设备和介质。由于可以由实际操作者根据应用场景来对物理寄存器组进行灵活配置,以用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度,从而互斥性支持更多及更宽的浮点寄存器和/或矢量寄存器,进而互斥性支持更多活跃线程SMT及更宽矢量指令集,这大大降低了在同一处理器内实现上述两种技术方法的难度,节约了处理器资源,使得处理器设计更加灵活。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本公开的一些示例性实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出了根据本公开实施例的一个支持同时多线程(SimultaneousMultithreading,SMT)技术的处理器核的指令执行方式的示图。
图2示出了根据本公开实施例的处理器的框图。
图3示出了根据本公开实施例的处理器的操作方法的流程图。
图4示出了根据本公开实施例的处理器中的一个控制寄存器中的两个预设位的示图。
图5示出了根据本公开实施例的系统寄存器中的第一预设位被设置为第一预设标志值时物理寄存器组的配置的示图。
图6示出了根据本公开实施例的系统寄存器中的第一预设位被设置为第二预设标志值时物理寄存器组的配置的示图。
图7示出了根据本公开实施例的处理器的操作装置的框图。
具体实施方式
为了使得本公开的目的、技术方案和优点更为明显,下面将参考附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
在本说明书和附图中,基本上相同或相似的步骤和元素用相同或相似的附图标记来表示,并且对这些步骤和元素的重复描述将被省略。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性或排序。
在本说明书和附图中,根据实施例,元素以单数或复数的形式来描述。然而,单数和复数形式被适当地选择用于所提出的情况仅仅是为了方便解释而无意将本公开限制于此。因此,单数形式可以包括复数形式,并且复数形式也可以包括单数形式,除非上下文另有明确说明。
在现有技术中,利用同时多线程(SMT)技术与矢量指令集来提高处理器(如CPU)核性能是普遍应用的两种技术方法。
同时多线程(SMT)技术是一个提高处理器整体性能的重要技术,如图1所示。
图1示出了根据本公开实施例的一个支持SMT技术的处理器核的指令执行方式的示图。图1中所示的是一个由4个执行单元的处理器核每时钟所执行的指令。白色表示该执行单元没有指令执行,其他的颜色表明指令所属的线程。SMT的一个关键特征是同一个时钟周期,不同的处理器核执行单元可以执行多个线程的指令。这样提高了这些执行单元的利用率,从而提高了处理器的整体性能。
根据支持的最大活跃线程的个数,SMT可以被称为SMT2(最多两个活跃线程)、SMT4(最多四个活跃线程)等等。单线程(single thread,ST)可以被认为是SMT的一个特例,即只有一个活跃线程的SMT。SMT需要保存每个线程的乱序执行(architectural)的状态,包括乱序执行时相关的浮点、定点寄存器值,以及所有顺序执行(speculative)指令的状态。
SMT内部硬件资源分配有不同的方式。常用的方式有:
①全静态分割(All statically partitioned):所有硬件资源根据SMT支持线程个数等分;
②全动态共享:所有硬件资源由所有线程动态共享;
③混合模式:某些硬件资源由所有线程动态共享,而其他资源静态分割。
④其他方式:比如IBM Power 9,其SMT4是由两个SMT2组成,这两个SMT2之间全静态分割所有资源,但是每个SMT2内部资源全动态共享。
现有技术中的SMT技术利用高性能处理器核的多发射、乱序执行等机制,来同时执行多个线程的指令,这样一个物理处理器核呈现给软件、操作系统是多个虚拟的处理器核。现代多发射的高性能处理器核在执行单线程时,它内部的多个执行单元及硬件资源在绝大部分时间无法被充分利用;当该线程由于某些原因(比如L2缓存miss时)运行停顿时,硬件执行单元只能空转,这些都造成硬件资源的浪费、降低性能功耗比。在SMT模式下,当一个线程运行停顿时,其他线程仍然能够运行,这提高了硬件资源的利用率,从而提高了处理器核的多线程吞吐量、整体性能及性能功耗比。需要注意的是,由于要和其他线程共享处理器核资源,一个线程运行在SMT下的性能往往低于其单线程模式下的性能。
为了支持更多活跃线程,或者提高现有ST/SMT性能,处理器核内部多个保存数据的硬件资源需要增大个数,而这其中很重要的一个资源就是浮点寄存器和/或矢量寄存器。
矢量指令集是另一个提高处理器整体性能的重要技术。
现代高性能处理器核大都支持矢量指令集,而且矢量指令的宽度在不断增大,比如Intel的AVX512矢量指令集支持512bit的数据处理,而ARM的SVE矢量指令集支持最大2048bit的数据处理。矢量指令集一般与浮点指令集共用同一组寄存器。更宽的矢量指令集除了增加了新的指令之外,还要求更宽的浮点寄存器和/或矢量寄存器,但不要求寄存器个数增多。
由上述两种重要技术可知,在普通应用场景中,SMT可以提高处理器核的硬件资源使用效率,从而提高处理器核的整体性能与性能功耗比,尽管单个线程的性能在SMT下会有所下降。而在新型应用场景中,比如在人工智能、大数据处理、超算等新型应用场景中对处理器性能有更高的要求,就需要更宽的矢量指令集来大幅度提高这些新型应用场景的性能。
但是,目前由于处理器内的物理寄存组的配置都是固定的,无法根据上述应用场景来进行灵活地配置,所以目前处理器的设计都是单独针对这两种技术方法的需要来分别进行设计的。即,为更多的活跃线程SMT增多浮点寄存器和/或矢量寄存器及其他硬件资源的个数,或是为更宽矢量指令集增宽浮点寄存器和/或矢量寄存器的宽度。而增加或增宽硬件资源不仅会增大物理寄存器组在处理器中的占用面积,而且给处理器设计、实现处理器有时序、功耗、布局、成本等多方面带来了巨大挑战。
因此,在现有技术中,一个新的处理器内物理寄存组的配置是不可变的,无法同时支持更多及更宽的浮点/矢量寄存器,从而也就无法进一步同时支持更多的活跃线程SMT及更宽矢量指令,只能在两者之间进行取舍,无法根据应用场景来灵活进行配置。
为了解决上述问题,本公开提供了一种全新的处理器,本公开的处理器包括可配置的物理寄存器组、至少一个系统控制寄存器和控制器。本公开的处理器由控制器根据至少一个系统控制寄存器中存储的配置信息来对所述可配置的物理寄存器组进行配置,以适应于不同的应用场景,从而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度。
下面将参照附图对本公开的处理器及其操作进行详细的描述。
图2示出了根据本公开实施例的处理器100的框图。
参照图2,处理器100可以包括可配置的物理寄存器组110、至少一个系统控制寄存器120和控制器130。
所述可配置的物理寄存器组110可以被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集。所述至少一个系统控制寄存器120可以用于存储对所述可配置的物理寄存器组的配置信息。所述控制器130可以用于根据所述配置信息,对所述可配置的物理寄存器组进行配置。
根据本公开实施例,所述第一宽度的数据可以是宽度为w(w为正整数)的数据,所述第二宽度的数据可以是宽度为2w的数据。
根据本公开实施例,所述第一指令集可以包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度可以是所述第一宽度,例如,所述标准宽度可以是宽度w。
根据本公开实施例,所述第二指令集可以包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度可以是所述第二宽度,例如,所述扩展宽度可以是宽度2w。
根据本公开实施例,在所述配置信息指示所述可配置的物理寄存器组被配置来支持对第一宽度的数据进行处理的第一指令集的情况下,所述控制器将所述可配置的物理寄存器组配置为可以包括第一数量的具有第一宽度的物理寄存器。例如,所述包括第一数量的具有第一宽度的物理寄存器可以是包括2n(n为正整数)个数量的宽度为w的物理寄存器。
根据本公开实施例,在所述配置信息指示所述可配置的物理寄存器组被配置来支持对第二宽度的数据进行处理的第二指令集的情况下,所述控制器将所述可配置的物理寄存器组配置为可以包括第二数量的具有第二宽度的物理寄存器。例如,所述包括第二数量的具有第二宽度的物理寄存器可以是包括n(n为正整数)个数量的宽度为2w的物理寄存器。
上述对处理器包括的部件进行了详细地介绍。在上述处理器中,由于物理寄存器组的配置不是固定的,而是可配置的。可以由实际操作者根据应用场景来对物理寄存器组进行灵活配置,以用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度,从而节约处理器资源,使得处理器设计更加灵活。
此外,本公开还提供了一种处理器的操作方法,如图3所示。
图3示出了根据本公开实施例的处理器的操作方法的流程图。所述处理器包括系统控制寄存器(如图2中所示的系统控制寄存器)和可配置的物理寄存器组(如图2中所示的可配置的物理寄存器),并且所述可配置的物理寄存器组可以被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集。
参照图3,在S210,获取所述可配置的物理寄存器的目标配置值。这里,目标配置值可以用于指示所述可配置的物理寄存器的目标配置宽度,其中,所述目标配置宽度可以为第一宽度或第二宽度。
根据本公开实施例的一个示例,所述目标配置值可以是数字1或2等指示符,可以标准场景或扩展场景等指示符,也可以是第一宽度或第二宽度等指示符,还可以是任何其它指示符,此处不再赘述。
根据本公开实施例,获取所述可配置的物理寄存器的目标配置值可以包括:接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;或者根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值。上述关于系统控制寄存器中的预设位及预设标志值的详细描述将在后续结合图4至图6中进行。
根据本公开实施例,所述接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值可以包括:在操作系统启动时或在操作系统运行过程中,接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值。
例如,可以将用户输入的信息写入到固件(firmware)中,这样操作系统可以在启动时在固件里获得用户输入的信息。再例如,可以在操作系统运行过程中,向用户提供交互界面(如UI、命令行)来接收用户输入的信息。
根据本公开实施例,所述根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值可以包括:根据处理器中的异常处理机制,响应于出现了处理器当前不支持的指令或响应于超过预定的时间间隔处理器未使用预定物理寄存器,将所述系统控制寄存器中的预设位设置为预设标志值,其中,所述预定物理寄存器是矢量寄存器和/或浮点寄存器。
作为示例,为了在不重启操作系统的情况下,某时段可配置的物理寄存器组被配置为用于支持对第一宽度的数据进行处理的第一指令集,而另一时段可配置的物理寄存器组被配置为用于对第二宽度的数据进行处理的第二指令集,可以在处理器中的异常处理机制中增加新的异常机制(exception),来处理在发现和报告两种模式同时被使用时的冲突,而具体的冲突处理可以在操作系统中完成。
作为示例,上述增加新的异常机制可以是:当处理器运行在支持第一指令集时出现了第二指令集所特有的指令,则处理器可以将配置为用于支持对第一宽度的数据进行处理的第一指令集的物理寄存器组切换到配置为用于对第二宽度的数据进行处理的第二指令集的物理寄存器组。
作为示例,上述第一指令集可以是利用同时多线程(SMT)技术来同时支持的指令的集合,所述第二指令集可以是更宽的矢量指令集。第二指令集相对于第一指令集增加的有自己特有的新的指令,例如新增加了用于假设人工智能计算的AVX512 VNNI指令及BF16指令。当可配置的物理寄存器组被配置为用于支持对第一宽度的数据进行处理的第一指令集期间,出现了处理器需要执行上述新的指令的情况,则处理器根据异常处理机制中上述新增的机制,将配置为用于支持对第一宽度的数据进行处理的第一指令集的物理寄存器组切换到配置为用于对第二宽度的数据进行处理的第二指令集的物理寄存器组,从而使得处理器可以对第二指令集中的指令进行处理。
作为另一示例,上述增加新的异常机制还可以是:当处理器运行在支持第二指令集时,超过预定的时间间隔处理器未使用矢量寄存器和/或浮点寄存器,则处理器将配置为用于支持对第二宽度的数据进行处理的第二指令集的物理寄存器组切换到配置为用于对第一宽度的数据进行处理的第一指令集的物理寄存器组。所述预定的时间间隔可以根据应用场景由操作者灵活设置,比如设置为30分钟等,此处不作任何限定。
作为另一示例,上述第一指令集可以是利用同时多线程(SMT)技术来同时支持的指令的集合,所述第二指令集可以是更宽的矢量指令集。由于更宽的矢量指令集使用更宽的矢量寄存器和/或浮点寄存器对更宽的数据进行处理,第二宽度要比第一宽度宽,因此,当处理器运行在支持第二指令集时,由于超过预定的时间间隔(比如30分钟),处理器一直未使用更宽的矢量寄存器和/或浮点寄存器对更宽的数据进行处理,则处理器根据异常处理机制中上述新增的机制,将配置为用于支持对第二宽度的数据进行处理的第二指令集的物理寄存器组切换到配置为用于对第一宽度的数据进行处理的第一指令集的物理寄存器组,从而使得处理器可以对第一指令集中的指令进行处理。
在S220,基于所获取的目标配置值,在所述系统控制寄存器中写入对应的配置信息。根据本公开实施例的一个示例,所述配置信息可以是数字0或1。
在S230,响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集。
根据本公开实施例,在所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集的情况下,将所述可配置的物理寄存器组配置为提供可以包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器,例如,将所述可配置的物理寄存器组配置为提供可以包括2n(n为正整数)个数量的宽度为w(w为正整数)的浮点寄存器和/或矢量寄存器。
根据本公开实施例,所述第一指令集可以包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度可以是所述第一宽度,例如,所述标准宽度可以是宽度w。
根据本公开实施例,在所述可配置的物理寄存器组配置为支持对第二宽度的数据进行处理的第二指令集的情况下,将所述可配置的物理寄存器组配置为提供可以包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器,例如,将所述可配置的物理寄存器组配置为提供可以包括n(n为正整数)个数量的宽度为2w的浮点寄存器和/或矢量寄存器。
根据本公开实施例,所述第二指令集可以包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度可以是所述第二宽度,例如,所述扩展宽度可以是宽度2w。
根据本公开实施例,在S230,所述响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集包括:响应于所述系统控制寄存器中的第一预设位被设置为第一预设标志值,可以将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;响应于所述系统控制寄存器中的第一预设位被设置为第二预设标志值,可以将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器;;其中,所述第一数量可以大于所述第二数量,所述第一宽度可以小于所述第二宽度。
根据本公开实施例,在上述系统控制寄存器中的第一预设位被设置为第一预设标志值的情况下,当所述系统控制寄存器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量可以是第四数量;当所述系统控制寄存器中的第二预设位被设置为第四预设标志值时,所述处理器支持的同时多线程的数量可以是第五数量。
根据本公开实施例,在上述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,当所述系统控制器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量可以是第四数量。
根据本公开实施例,在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,所述系统控制器中的第二预设位不能被设置为第四预设标志值。作为示例,可以在接收用户输入时判断用户是否同时输入了上述第二预设标志值和第四预设标志值,如果是的话,可以以警告的形式向用户告知禁止同时输入上述第二预设标志值和第四预设标志值,当然也可以以其他形式向用户告知,此处不作任何限定。
根据本公开实施例,上述第四数量可以小于第五数量。
由前述的现有技术可知,一个新的处理器,由于其内部的物理寄存组的配置是固定,无法同时支持更多及更宽的浮点/矢量寄存器,从而也就无法进一步同时支持更多的活跃线程SMT及更宽矢量指令集,只能在两者之间进行取舍,无法根据应用场景来灵活进行配置,而根据本公开的上述技术方案是可以互斥性支持更多活跃线程SMT及更宽矢量指令集,这大大降低了在同一处理器内实现上述两种技术的难度。具体地,根据本公开实施例的一个示例,上述第一数量的浮点寄存器和/或矢量寄存器可以大于第二数量的浮点寄存器和/或矢量寄存器(例如第一数量可以是第二数量的2倍),上述第五数量可以大于第四数量(例如第五数量可以是第四数量的2倍),上述第二宽度可以比第一宽度宽(例如第二宽度可以是第一宽度的2倍),上述第一指令集可以是利用同时多线程(SMT)技术来同时支持的指令的集合,所述第二指令集可以是更宽的矢量指令集。在上述情况下,处理器运行在支持第一指令集时(在系统控制寄存器中的第一预设位被设置为第一预设标志值并且第二预设位被设置为第四标志值的情况下)可以支持更多的同时多线程数(即,更多的活跃线程SMT),从而使得处理器可以在上述普通应用场景中进行更好地使用;处理器运行在支持第二指令集时(在系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下)可以支持更宽的矢量指令集,从而处理器可以在比如人工智能、大数据处理、超算等新型应用场景中使用。也就是说,根据本公开实施例的技术方案中的处理器可以由实际操作者根据应用场景通过设置系统控制寄存器中的两个预设位(即上述第一预设位和第二预设位)来互斥性支持更多及更宽的浮点寄存器和/或矢量寄存器,从而互斥性支持更多活跃线程SMT及更宽矢量指令集,以用于支持不同的应用场景,这大大降低了在同一处理器内同时实现上述两种技术的难度。
因此,本公开的上述技术方案还解决了上述“一个新的处理器核往往无法同时支持更多及更宽的浮点/矢量寄存器,而需要在两者之间进行取舍”的技术问题,并且本公开的上述技术方案也适用于上述SMT内部硬件资源的所有分配方式。
以上结合S210至S230详细描述了本公开实施例的处理器的操作方法。根据本公开实施例的处理器的操作方法,可以由实际操作者根据应用场景来对物理寄存器组进行灵活配置,以用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度,从而互斥性支持更多及更宽的浮点寄存器和/或矢量寄存器,进而互斥性支持更多活跃线程SMT及更宽矢量指令集,这大大降低了在同一处理器内实现上述两种技术方法的难度,节约了处理器资源,使得处理器设计更加灵活。
在上述对本公开实施例的处理器的操作方法进行详细描述之后,接下来将结合图4至图6以示例的形式对上述系统控制器中的预设位、预设标志值及其设置等相关内容进行说明。
图4示出了根据本公开实施例的处理器中的一个系统控制寄存器中的两个预设位的示图。两个预设位分别为预设位CFG_VI和CFG_SMT,其中,CFG_VI可以为第一预设位,CFG_SMT可以为第二预设位。
如图4所示,预设位CFG_VI可以表示处理器的可配置的物理寄存器组是提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器,还是提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器,其预设标志值可以是例如0或1,其中0可以是第一预设标志值,1可以是第二预设标志值。预设位CFG_SMT可以表示处理器是否可以支持更多的活跃线程,其预设标志值可以是例如0或1,其中0可以是第三预设标志值,1可以是第四预设标志值。
根据本公开实施例,当根据用户输入或操作系统自动判断,将第一预设位CFG_VI设置为第一预设标志值(例如0)时,表示处理器的可配置的物理寄存器组提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器。作为示例,处理器的可配置的物理寄存器组可以提供包括2n(n为正整数)个数量的具有宽度为w(w为正整数)的浮点寄存器和/或矢量寄存器,如图5所示,此时处理器可以支持现有宽度的矢量指令集,但不能支持更宽的矢量指令集,并且相比于处理器支持更宽的矢量指令集的情况仅是浮点寄存器和/或矢量寄存器的数量较多,从而可以提高现有ST/SMT性能,进而在上述普通应用场景中,提高处理器的整体性能与性能功耗比。
根据本公开实施例,在上述第一预设位CFG_VI设置为第一预设标志值(例如0)的情况下,当根据用户输入或操作系统自动判断,将第二预设位CFG_SMT设置为第三预设标志值(例如0)时,此时,处理器不支持更多的活跃线程SMT,仅支持现有的活跃线程个数(例如,X个活跃线程个数,其中,X为正整数),当现有的活跃线程个数为1时,则不使用同时多线程技术,即此时处理器仅支持单线程ST,处理器核对软件系统显示为X个逻辑核;当根据用户输入或操作系统自动判断,将第二预设位CFG_SMT设置为第四预设标志值(例如1)时,此时,处理器可以支持更多的活跃线程SMT,例如,此时处理器可以支持2X个活跃线程(其中,X表示处理器之前仅支持X个活跃线程),处理器核对软件系统显示为2X个逻辑核,此时,在上述普通应用场景中,可以更好地提高处理器的整体性能与性能功耗比。
根据本公开实施例,当根据用户输入或操作系统自动判断,将第一预设位CFG_VI设置为第二预设标志值(例如1)时,表示处理器的可配置的物理寄存器组提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器。作为示例,处理器的可配置的物理寄存器组可以提供包括n(n为正整数)个数量的具有宽度为2w(w为正整数)的浮点寄存器和/或矢量寄存器,如图6所示,此时,处理器可以支持更宽的矢量指令集,从而可以在上述新型应用场景(比如人工智能、大数据处理、超算等)中进行使用,以大幅度提高这些新型应用场景的性能。
根据本公开实施例,在上述第一预设位CFG_VI设置为第二预设标志值(例如1)的情况下,当根据用户输入或操作系统自动判断,将第二预设位CFG_SMT设置为第三预设标志值(例如0)时,此时,处理器不支持更多的活跃线程SMT,仅支持现有的活跃线程个数(例如,X个活跃线程个数,其中,X为正整数),当现有的活跃线程个数为1时,则不使用同时多线程技术,即此时处理器仅支持单线程ST,此时处理器核对软件系统显示为X个逻辑核。由于处理器使用面积、时序、功耗、成本等多方面原因,处理器不能同时支持更宽的矢量指令集和更多的活跃线程,故本公开设计为互斥地支持更宽的矢量指令集和更多的活跃线程,进而在第一标志位CFG_VI设置为第二预设标志值(例如1)的情况下,第二标志位CFG_SMT不能被设置为第四预设标志值(例如1)。
作为示例,矢量指令集可以通过软件数学库(例如,Intel MKL库,OpenBLAS库)来被使用。每次被使用时,该数学库检测CFG_VI值,如果CFG_VI值已经被设置为例如1,则调用使用新的宽度为例如2w的矢量指令的库函数,否则使用执行相同功能的旧的库函数。
以上,已经对本公开的处理器的操作方法进行了介绍。在上述方法中,由于可以根据实际应用场景,由处理器中的控制器根据至少一个系统控制寄存器中存储的配置信息来对所述可配置的物理寄存器组进行灵活配置,从而无需增加物理寄存器组内寄存器的数量和/或增宽物理寄存器组内寄存器的宽度,从而互斥性支持更多及更宽的浮点寄存器和/或矢量寄存器,进而互斥性支持更多活跃线程SMT及更宽矢量指令集,这大大降低了在同一处理器内实现上述两种技术的难度,节约了处理器资源,使得处理器设计更加灵活。
图7示出了根据本公开实施例的处理器的操作装置(以下,为描述方便,将其简称为“处理器操作装置”)的框图,所述处理器包括系统控制寄存器(如图1中所示的系统控制寄存器)和可配置的物理寄存器组(如图1中所示的可配置的物理寄存器),并且所述可配置的物理寄存器组可被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集。
参照图7,所述操作装置700可以包括获取模块710、写入模块720和配置模块730。
获取模块710可以获取所述可配置的物理寄存器的目标配置值,这里,目标配置值可以用于指示所述可配置的物理寄存器的目标配置宽度,所述目标配置宽度为第一宽度或第二宽度。
根据本公开实施例,所述获取模块可以包括:接收模块,可以被配置为接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;或者自动判断模块,可以被配置为根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值。
根据本公开实施例,所述接收模块可以包括:在操作系统启动时或在操作系统运行过程中,接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;所述自动判断模块可以包括:根据处理器中的异常处理机制,响应于出现了处理器当前不支持的指令或响应于超过预定的时间间隔处理器未使用预定物理寄存器,将所述系统控制寄存器中的预设位设置为预设标志值。所述预定物理寄存器是矢量寄存器和/或浮点寄存器。
例如,可以将用户输入的信息写入到固件(firmware)中,这样操作系统可以在启动时在固件里获得用户输入的信息。再例如,可以在操作系统运行过程中,向用户提供交互界面(如UI、命令行)来接收用户输入的信息。
写入模块720可以基于所获取的目标配置值,在所述系统控制寄存器中写入对应的配置信息。根据本公开实施例的一个示例,所述配置信息可以是数字0或1。
配置模块730可以响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集。
根据本公开实施例,在所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集的情况下,可以将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;以及/或者在所述可配置的物理寄存器组配置为支持对第二宽度的数据进行处理的第二指令集的情况下,可以将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器。
根据本公开实施例,所述第一指令集可以包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度可以是所述第一宽度;所述第二指令集可以包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度可以是所述第二宽度。
根据本公开实施例,所述配置模块730可以包括:响应于所述系统控制寄存器中的第一预设位被设置为第一预设标志值,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;响应于所述系统控制寄存器中的第一预设位被设置为第二预设标志值,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器;其中,所述第一数量可以大于所述第二数量,所述第一宽度可以小于所述第二宽度。
根据本公开实施例,在所述系统控制寄存器中的第一预设位被设置为第一预设标志值的情况下,当所述系统控制寄存器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第四数量;当所述系统控制寄存器中的第二预设位被设置为第四预设标志值时,所述处理器支持的同时多线程的数量可以是第五数量。在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,当所述系统控制器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第四数量;在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,所述系统控制器中的第二预设位不能被设置为第四预设标志值;其中,第四数量可以小于第五数量。
根据本公开实施例的一个示例,第一数量的浮点寄存器和/或矢量寄存器可以大于第二数量的浮点寄存器和/或矢量寄存器(例如第一数量可以是第二数量的2倍),上述第五数量可以大于第四数量(例如第五数量可以是第四数量的2倍),第二宽度可以比第一宽度宽(例如第二宽度可以是第一宽度的2倍),上述第一指令集可以是利用同时多线程(SMT)技术来同时支持的指令的集合,所述第二指令集可以是更宽的矢量指令集。在上述情况下,处理器运行在支持第一指令集时(在系统控制寄存器中的第一预设位被设置为第一预设标志值并且第二预设位被设置为第四标志值的情况下)可以支持更多的同时多线程数(即,更多的活跃线程SMT),从而使得处理器可以在上述普通应用场景中进行更好地使用;处理器运行在支持第二指令集时(在系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下)可以支持更宽的矢量指令集,从而处理器可以在比如人工智能、大数据处理、超算等新型应用场景中使用。也就是说,根据本公开实施例的技术方案中的处理器可以由实际操作者根据应用场景通过设置系统控制寄存器中的两个预设位(即上述第一预设位和第二预设位)来互斥性支持更多及更宽的浮点寄存器和/或矢量寄存器,从而互斥性支持更多活跃线程SMT及更宽矢量指令集,以用于支持不同的应用场景,这大大降低了在同一处理器内同时实现上述两种技术的难度,节约了处理器资源,使得处理器设计更加灵活。
由于以上已经在描述根据本公开的处理器的操作方法的过程中,对上述操作所涉及的内容的细节进行了介绍,因此这里为简洁起见不再赘述,相关细节可参照以上关于图1至图6的描述。
以上已经参照图2至图7描述了根据公开实施例的处理器的操作方法及其操作装置。然而,应理解的是:图7所示的装置中的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。作为示例,参照图7描述的装置可以是PC计算机、平板装置、个人数字助理、智能手机、web应用或其它能够执行程序指令的装置,但不限于此。
需要说明的是,尽管以上在描述图像数据处理装置700时将其划分为用于分别执行相应处理的模块,然而,本领域技术人员清楚的是,各模块执行的处理也可以在图像数据处理装置不进行任何具体模块划分或者各模块之间并无明确划界的情况下执行。此外,以上参照图7描述的装置并不限于包括以上描述的模块,而是还可以根据需要增加一些其它模块(例如,存储模块、数据处理模块等),或者以上模块也可被组合。
此外,根据本公开的图像数据处理方法可被记录在计算机可读记录介质中。具体地,根据本公开,可提供一种存储有计算机可执行指令的计算机可读记录介质,当所述计算机可执行指令被处理器执行时,可促使处理器执行如上所述的图像数据处理方法。计算机可读记录介质的示例可包括磁介质(例如硬盘、软盘和磁带);光学介质(例如CD-ROM和DVD);磁光介质(例如,光盘);以及特别配制用于存储并执行程序指令的硬件装置(例如,只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。此外,根据本公开,还可提供一种包括处理器和存储器的设备,所述存储器中存储有计算机可执行指令,其中,当所述计算机可执行指令被处理器执行时,促使处理器执行如上所述的图像数据处理方法。计算机可执行指令的示例包括例如由编译器产生的机器码和包含可使用解释器由计算机执行的高级代码的文件。
另外,根据本公开的图像数据处理方法中的某些操作可通过软件方式来实现,某些操作可通过硬件方式来实现,此外,还可通过软硬件结合的方式来实现这些操作。
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其它方面可以在可以由控制器、微处理器或其它计算设备执行的固件或软件中实施。当本公开实施例的各方面被图示或描述为框图、流程图或使用某些其它图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其它计算设备,或其某些组合中实施。
在上面详细描述的本公开的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本公开的原理和精神的情况下,可对这些实施例或其特征进行各种修改和组合,这样的修改应落入本公开的范围内。
Claims (13)
1.一种处理器,包括:
可配置的物理寄存器组,其可被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集;
至少一个系统控制寄存器,其用于存储对所述可配置的物理寄存器组的配置信息,以及
控制器,其用于根据所述配置信息,对所述可配置的物理寄存器组进行配置,
其中,所述控制器被配置为:
响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,
其中,所述响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集包括:
响应于所述系统控制寄存器中的第一预设位被设置为第一预设标志值,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;
响应于所述系统控制寄存器中的第一预设位被设置为第二预设标志值,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器;
其中,所述第一数量大于所述第二数量,所述第一宽度小于所述第二宽度。
2.如权利要求1所述的处理器,其中,在所述配置信息指示所述可配置的物理寄存器组被配置来支持对第一宽度的数据进行处理的第一指令集的情况下,所述控制器将所述可配置的物理寄存器组配置为包括第一数量的具有第一宽度的物理寄存器;
在所述配置信息指示所述可配置的物理寄存器组被配置来支持对第二宽度的数据进行处理的第二指令集的情况下,所述控制器将所述可配置的物理寄存器组配置为包括第二数量的具有第二宽度的物理寄存器。
3.如权利要求1或2所述的处理器,其中,所述第一指令集包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度是所述第一宽度;
所述第二指令集包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度是所述第二宽度。
4.一种处理器的操作方法,所述处理器包括系统控制寄存器和可配置的物理寄存器组,并且所述可配置的物理寄存器组可被配置为用于支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,所述操作方法包括:
获取所述可配置的物理寄存器的目标配置值,所述目标配置值用于指示所述可配置的物理寄存器的目标配置宽度,所述目标配置宽度为第一宽度或第二宽度;
基于所获取的目标配置值,在所述系统控制寄存器中写入对应的配置信息;
响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集,
其中,所述响应于所述系统控制寄存器中的配置信息,将所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集或对第二宽度的数据进行处理的第二指令集包括:
响应于所述系统控制寄存器中的第一预设位被设置为第一预设标志值,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;
响应于所述系统控制寄存器中的第一预设位被设置为第二预设标志值,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器;
其中,所述第一数量大于所述第二数量,所述第一宽度小于所述第二宽度。
5.如权利要求4所述的操作方法,其中,在所述可配置的物理寄存器组配置为支持对第一宽度的数据进行处理的第一指令集的情况下,将所述可配置的物理寄存器组配置为提供包括第一数量的具有第一宽度的浮点寄存器和/或矢量寄存器;
以及/或者
在所述可配置的物理寄存器组配置为支持对第二宽度的数据进行处理的第二指令集的情况下,将所述可配置的物理寄存器组配置为提供包括第二数量的具有第二宽度的浮点寄存器和/或矢量寄存器。
6.如权利要求5所述的操作方法,其中,所述第一指令集包括用于对标准宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述标准宽度是所述第一宽度;
所述第二指令集包括用于对扩展宽度的数据进行处理的浮点指令集和/或矢量指令集,其中,所述扩展宽度是所述第二宽度。
7.如权利要求6所述的操作方法,其中,获取所述可配置的物理寄存器的目标配置值包括:
接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;或者
根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值。
8.如权利要求7所述的操作方法,其中,所述接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值包括:在操作系统启动时或在操作系统运行过程中,接收用户输入,并根据所接收的用户输入将所述系统控制寄存器中的预设位设置为预设标志值;
所述根据操作系统自动判断,将所述系统控制寄存器中的预设位设置为预设标志值包括:根据处理器中的异常处理机制,响应于出现了处理器当前不支持的指令或响应于超过预定的时间间隔处理器未使用预定物理寄存器,将所述系统控制寄存器中的预设位设置为预设标志值。
9.如权利要求8所述的操作方法,其中,所述预定物理寄存器是矢量寄存器和/或浮点寄存器。
10.如权利要求4所述的操作方法,其中,在所述系统控制寄存器中的第一预设位被设置为第一预设标志值的情况下,当所述系统控制寄存器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第一数量;当所述系统控制寄存器中的第二预设位被设置为第四预设标志值时,所述处理器支持的同时多线程的数量是第二数量;
在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,当所述系统控制器中的第二预设位被设置为第三预设标志值时,所述处理器支持的同时多线程的数量是第一数量;
其中,所述第一数量小于所述第二数量。
11.如权利要求10所述的操作方法,其中,在所述系统控制寄存器中的第一预设位被设置为第二预设标志值的情况下,所述系统控制器中的第二预设位不能被设置为第四预设标志值。
12.一种处理器的操作设备,包括:
处理器,和
存储器,所述存储器存储有计算机可执行指令,所述计算机可执行指令当由处理器执行时促使处理器执行如权利要求4-11中的任一项所述的操作方法。
13.一种计算机可读记录介质,存储有计算机可执行指令,其中,所述计算机可执行指令当由处理器执行时促使处理器执行如权利要求4-11中的任一项所述的操作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011223030.0A CN112346783B (zh) | 2020-11-05 | 2020-11-05 | 一种处理器及其操作方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011223030.0A CN112346783B (zh) | 2020-11-05 | 2020-11-05 | 一种处理器及其操作方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112346783A CN112346783A (zh) | 2021-02-09 |
CN112346783B true CN112346783B (zh) | 2022-11-22 |
Family
ID=74429211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011223030.0A Active CN112346783B (zh) | 2020-11-05 | 2020-11-05 | 一种处理器及其操作方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112346783B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681322B1 (en) * | 1999-11-26 | 2004-01-20 | Hewlett-Packard Development Company L.P. | Method and apparatus for emulating an instruction set extension in a digital computer system |
CN102012803A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 支持多宽度simd和多粒度simt的可配置矩阵寄存器单元 |
CN103140837A (zh) * | 2010-09-24 | 2013-06-05 | Arm有限公司 | 数据处理装置的除错 |
CN105453030A (zh) * | 2013-06-28 | 2016-03-30 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN109635401A (zh) * | 2018-12-04 | 2019-04-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种动态可配置存储控制器设计方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320765A1 (en) * | 2010-06-28 | 2011-12-29 | International Business Machines Corporation | Variable width vector instruction processor |
US20160026467A1 (en) * | 2014-07-25 | 2016-01-28 | Intel Corporation | Instruction and logic for executing instructions of multiple-widths |
US10678634B2 (en) * | 2018-01-24 | 2020-06-09 | Synopsys, Inc. | Method and apparatus of using parity to detect random faults in memory mapped configuration registers |
-
2020
- 2020-11-05 CN CN202011223030.0A patent/CN112346783B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681322B1 (en) * | 1999-11-26 | 2004-01-20 | Hewlett-Packard Development Company L.P. | Method and apparatus for emulating an instruction set extension in a digital computer system |
CN103140837A (zh) * | 2010-09-24 | 2013-06-05 | Arm有限公司 | 数据处理装置的除错 |
CN102012803A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 支持多宽度simd和多粒度simt的可配置矩阵寄存器单元 |
CN105453030A (zh) * | 2013-06-28 | 2016-03-30 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN109635401A (zh) * | 2018-12-04 | 2019-04-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种动态可配置存储控制器设计方法 |
Non-Patent Citations (1)
Title |
---|
基于深度学习及GPU计算的航天器故障检测技术;田林琳;《计算机测量与控制》;20200525(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112346783A (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9348594B2 (en) | Core switching acceleration in asymmetric multiprocessor system | |
US9164853B2 (en) | Multi-core re-initialization failure control system | |
US8146089B2 (en) | Sharing resources of a partitioned system | |
US8669990B2 (en) | Sharing resources between a CPU and GPU | |
US20140019723A1 (en) | Binary translation in asymmetric multiprocessor system | |
US7454599B2 (en) | Selecting multiple threads for substantially concurrent processing | |
US20040268093A1 (en) | Cross-thread register sharing technique | |
US20070266387A1 (en) | Multithreaded computer system and multithread execution control method | |
US10558460B2 (en) | General purpose register allocation in streaming processor | |
WO2008023426A1 (fr) | Dispositif de traitement de tâche | |
US10007590B2 (en) | Identifying and tracking frequently accessed registers in a processor | |
US20130152100A1 (en) | Method to guarantee real time processing of soft real-time operating system | |
CN115269196A (zh) | 线程池动态创建方法、装置、设备及存储介质 | |
US9471395B2 (en) | Processor cluster migration techniques | |
WO2016182683A1 (en) | System and method for dynamic granularity control of parallelized work in a portable computing device (pcd) | |
CN102934086A (zh) | 多核处理器系统、电力控制方法及电力控制程序 | |
CN115543530A (zh) | 一种虚拟机迁移方法以及相关装置 | |
CN112346783B (zh) | 一种处理器及其操作方法、装置、设备和介质 | |
CN101027642A (zh) | 处理器 | |
CN115617494B (zh) | 多cpu环境下的进程调度方法、装置、电子设备和介质 | |
CN115756730A (zh) | 虚拟机调度方法、装置、gpu及电子设备 | |
US7603673B2 (en) | Method and system for reducing context switch times | |
US20220391264A1 (en) | Techniques for efficiently synchronizing multiple program threads | |
US10949202B2 (en) | Identifying and tracking frequently accessed registers in a processor | |
KR102563648B1 (ko) | 멀티 프로세서 시스템 및 그 구동 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |