支持单指令流与多指令流动态切换执行的方法及微处理器转让专利

申请号 : CN201010559302.4

文献号 : CN101986263B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈书明王耀华万江华刘衡竹郭阳刘宗林龚国辉鲁建壮许邦建胡春媚

申请人 : 中国人民解放军国防科学技术大学

摘要 :

本发明公开了一种支持单指令流与多指令流动态切换执行的方法和微处理器,方法采用标量单元和向量单元执行来自指令发射部件的指令,步骤包括:在目标循环体指令写入指令缓存后,切换为多指令流模式,然后向量单元执行缓存的目标循环体指令,同时标量单元执行与目标循环体无关联的标量指令流,并最后在向量单元执行目标循环体完毕时切换为单指令流模式;微处理器包括指令发射部件、标量单元和向量单元,指令发射部件通过指令流切换单元与向量单元相连,在多指令流模式下标量单元执行来自指令流切换单元的与目标循环体无关联的标量指令。本发明具有处理器资源利用率高、并行处理性能高、硬件复杂度低、集成度高、支持嵌入式操作系统的优点。

权利要求 :

1.一种支持单指令流与多指令流动态切换执行的方法,采用标量单元(2)和向量单元(3)执行来自指令发射部件(1)的指令,其特征在于其实施步骤如下:首先标量单元(2)和向量单元(3)在默认的单指令流模式下执行来自指令发射部件(1)的同一个指令流,当向量单元(3)执行目标循环体时,标量单元(2)完成目标循环体的初始化、控制向量单元(3)的目标循环体指令进行缓存并切换为多指令流模式,然后向量单元(3)执行所述缓存的目标循环体指令,同时标量单元(2)执行与所述目标循环体无关联的标量指令流,并最后在向量单元(3)执行目标循环体完毕时切换为单指令流模式;所述目标循环体指运行时间较长、运行较为独立的循环体。

2.根据权利要求1所述的支持单指令流与多指令流动态切换执行的方法,其特征在于:所述切换为多指令流模式时,所述标量单元(2)首先保存当前的单指令流模式执行现场、恢复与目标循环体无关联的标量指令流执行现场,然后配置向量单元(3)执行所述缓存的目标循环体指令。

3.根据权利要求2所述的支持单指令流与多指令流动态切换执行的方法,其特征在于:所述向量单元(3)执行目标循环体完毕时,向量单元(3)向标量单元(2)发送中断信号,所述标量单元(2)收到中断信号后,首先保存与目标循环体无关联的标量指令流执行现场、恢复单指令流模式执行现场,然后配置向量单元(3)执行来自指令发射部件(1)的向量指令并切换为单指令流模式。

4.一种支持单指令流与多指令流动态切换执行的微处理器,包括指令发射部件(1)和分别与指令发射部件(1)相连的标量单元(2)、向量单元(3),所述指令发射部件(1)用于向标量单元(2)和向量单元(3)分配指令,所述标量单元(2)和向量单元(3)相连,所述向量单元(3)用于执行目标循环体指令,所述标量单元(2)用于执行目标循环体的初始化、循环过程控制、循环完毕后的控制以及切换微处理器的工作模式,其特征在于:所述指令发射部件(1)通过指令流切换单元(4)与向量单元(3)相连,所述标量单元(2)在完成目标循环体的初始化、控制目标循环体指令进行缓存后,切换工作模式为多指令流模式,在多指令流模式下所述标量单元(2)执行与向量单元(3)执行的目标循环体无关联的标量指令,所述指令流切换单元(4)获取指令发射部件(1)分配的向量指令并负责执行所述向量单元(3)的循环过程控制、并在所述向量单元(3)执行目标循环体完毕时向所述标量单元(2)发送中断信号,所述标量单元(2)根据所述中断信号切换工作模式为单指令流模式;所述目标循环体指运行时间较长、运行较为独立的循环体;所述指令发射部件(1)为标量单元(2)、向量单元(3)统一提供标量、向量指令,针对每个执行程序进行判断是否属于目标循环体,如果不是则保持单指令流模式执行,否则首先完成目标循环体的第一次执行,并将目标循环体指令写入缓存后切换为多指令流模式;所述指令流切换单元(4)包括控制部件(41)、指令缓存部件(42)和执行模式选择部件(43),所述指令缓存部件(42)用于缓存向量单元(3)的目标循环体指令,所述执行模式选择部件(43)在所述工作模式为单指令流模式时选定指令发射部件(1)作为向量单元(3)的指令输入部件、在所述工作模式为多指令流模式时选定指令缓存部件(42)作为向量单元(3)的指令输入部件,所述控制部件(41)控制将指令发射部件(1)的目标循环体指令写入指令缓存部件(42),并在向量单元(3)执行循环过程中控制向量单元(3)从指令缓存部件(42)中读取目标循环体指令。

5.根据权利要求4所述的支持单指令流与多指令流动态切换执行的微处理器,其特征在于:所述控制部件(41)包括专用寄存器组(411)、写指令缓存控制部件(412)和读指令缓存控制部件(413),所述专用寄存器组(411)缓存所述指令缓存部件(42)的状态、所述向量单元(3)执行目标循环体的位置信息以及所述向量单元(3)所执行目标循环体的循环次数,所述写指令缓存控制部件(412)用于在所述向量单元(3)第一次执行目标循环体时将目标循环体指令写入指令缓存部件(42),所述读指令缓存控制部件(413)在所述工作模式为多指令流模式时控制向量单元(3)从指令缓存部件(42)中读取目标循环体指令、修正所执行目标循环体对应专用寄存器组(411)中的循环次数,并在所执行目标循环体的循环次数为零时向所述标量单元(2)发送中断信号。

说明书 :

支持单指令流与多指令流动态切换执行的方法及微处理器

技术领域

[0001] 本发明涉及微处理器领域,具体涉及带有标量单元和向量单元的数据处理方法及微处理器。

背景技术

[0002] 现代微处理器的设计通常会考虑无线通信、图像视频处理等应用的需求,这些应用一般包含串行连接的多个核心算法模块(如FFT、信道估计、运动估计等算法)。在这些核心算法模块中,向量处理和标量处理呈现多样化的配合执行方式:有向量处理需要标量处理频繁配合的情况,也有向量处理的独立性较强、仅需少量标量处理配合的情况,而在核心算法模块之间则以标量处理为主。总体而言,微处理器面向无线通信、图像视频处理等的应用算法呈现标量、向量处理相交织的特点。
[0003] 针对应用的上述特点,当前已有的研究中,带有标量单元和向量单元的微处理器结构已经成为微处理器设计的主流方向,其中标量单元负责标量任务的处理,在具体程序中主要体现为对程序中的标量部分、以及有关分支跳转、循环控制部分的处理,而向量单元则主要负责计算密集型的向量处理任务,在程序中主要体现为对循环体的处理,标量单元、向量单元采用单指令流的执行方式,共同执行由指令发射部件统一发射的标量、向量指令流。但是,这样的执行方式对于应用程序中大量存在的执行较为独立(仅需少量循环控制、标量处理的配合)、且执行时间较长的循环体的执行,常常表现为向量单元在执行耗时的循环体处理时,标量单元仅仅执行少量的循环控制和标量处理,其余大部分时间都处于空闲的状态,因此使得标量单元的运算资源得不到充分利用,从而影响处理器整体性能的提高,造成了处理器资源的浪费。

发明内容

[0004] 本发明针对上述现有技术的缺陷,提供一种处理器资源利用率高、并行处理性能高、硬件复杂度低、集成度高、支持嵌入式操作系统的支持单指令流与多指令流动态切换执行的方法及微处理器。
[0005] 为了解决上述技术问题,本发明采用的技术方案为:一种支持单指令流与多指令流动态切换执行的方法,采用标量单元和向量单元执行来自指令发射部件的指令,其实施步骤如下:首先标量单元和向量单元在默认的单指令流模式下执行来自指令发射部件的同一个指令流,当向量单元执行目标循环体时,标量单元完成目标循环体的初始化、控制目标循环体指令进行缓存并切换为多指令流模式,然后向量单元执行所述缓存的目标循环体指令,同时标量单元执行与所述目标循环体无关联的标量指令流,并最后在向量单元执行目标循环体完毕时切换为单指令流模式。
[0006] 作为本发明支持单指令流与多指令流动态切换执行的方法的进一步改进:
[0007] 所述切换为多指令流模式时,所述标量单元首先保存当前的单指令流模式执行现场、恢复与目标循环体无关联的标量指令流执行现场,然后配置向量单元选择执行缓存的目标循环体指令。
[0008] 所述向量单元执行目标循环体完毕时,向量单元向标量单元发送中断信号,所述标量单元收到中断信号后,首先保存与目标循环体无关联的标量指令流执行现场、恢复单指令流模式执行现场,然后配置向量单元选择执行来自指令发射部件的向量指令并切换为单指令流模式。
[0009] 所述向量单元执行目标循环体完毕时,向量单元向标量单元发送中断信号,所述标量单元收到中断信号后,首先保存与目标循环体无关联的标量指令流执行现场、恢复单指令流模式执行现场,然后配置向量单元选择执行来自指令发射部件的向量指令并切换为单指令流模式。
[0010] 本发明还提供一种支持单指令流与多指令流动态切换执行的微处理器,包括指令发射部件和分别与指令发射部件相连的标量单元、向量单元,所述指令发射部件用于向标量单元和向量单元分配指令,所述标量单元和向量单元相连,所述向量单元用于执行循环体指令,所述标量单元用于执行循环体的初始化、循环过程控制、循环完毕后的控制以及切换微处理器的工作模式,所述指令发射部件通过指令流切换单元与向量单元相连,所述标量单元在完成目标循环体的初始化、控制目标循环体进行指令缓存后,切换工作模式为多指令流模式,在多指令流模式下所述标量单元执行与向量单元执行的目标循环体无关联的标量指令,所述指令流切换单元获取指令发射部件分配的向量指令并负责执行所述向量单元的循环过程控制、并在所述向量单元执行目标循环体完毕时向所述标量单元发送中断信号,所述标量单元根据所述中断信号切换工作模式为单指令流模式。
[0011] 所述指令流切换单元包括控制部件、指令缓存部件和执行模式选择部件,所述指令缓存部件用于缓存向量单元的目标循环体指令,所述执行模式选择部件在所述工作模式为单指令流模式时选定指令发射部件作为向量单元的指令输入部件、在所述工作模式为多指令流模式时选定指令缓存部件作为向量单元的指令输入部件,所述控制部件控制将指令发射部件的目标循环体指令写入指令缓存部件,并在向量单元执行循环过程中控制向量单元从指令缓存部件中读取目标循环体指令。
[0012] 所述控制部件包括专用寄存器组、写指令缓存控制部件和读指令缓存控制部件,所述专用寄存器组缓存所述指令缓存部件的状态、所述向量单元执行目标循环体的位置信息以及所述向量单元所执行目标循环体的循环次数,所述写指令缓存控制部件用于在所述向量单元第一次执行目标循环体时将目标循环体指令写入指令缓存部件,所述读指令缓存控制部件在所述工作模式为多指令流模式时控制向量单元从指令缓存部件中读取目标循环体指令、修正所执行目标循环体对应专用寄存器组中的循环次数,并在所执行目标循环体的循环次数为零时向所述标量单元发送中断信号。
[0013] 本发明具有下述优点:
[0014] 1、提高了处理器资源利用率,通过对单指令流及多指令流模式动态切换的支持,使得在单指令流模式下能高效的支持程序中向量处理与标量处理间灵活、细粒度的交互配合执行;而在多指令流模式下,向量单元进行耗时的循环处理时,标量单元从单指令流的执行方式中解放了出来,可以执行与目标循环体无关联的标量指令流,大大提高了处理器资源特别是标量单元的利用率。
[0015] 2、提供对嵌入式操作系统的支持。通过本发明中的方法,可以在处理目标循环体时,采用多指令流的执行模式,此时标量单元可以用来执行嵌入式操作系统指令流,实现在单个处理器上既支持应用任务,又支持操作系统的目标。相比传统的采用专门的处理器核来处理操作系统的解决方案,节约了硬件资源,降低了面积与功耗。
[0016] 3、通过增加一个指令流切换单元,在缓解了指令带宽瓶颈的同时减少了指令的重复取指、译码等准备工作。指令流切换单元可以将已发射的目标循环体向量指令存储起来,从而在多指令流执行时,为向量单元提供指令,减小了多指令流模式下的指令带宽需求。同时,指令缓存部件中的指令重用性得到了增强,降低了指令重复取指、译码的开销。
[0017] 4、在多个层面上充分开发应用程序的并行性,采用向量单元开发数据级并行,通过对多指令流模式的支持,开发任务级并行。
[0018] 5、硬件实现复杂度低,程序控制交由标量单元处理,向量单元仅仅负责运算。从而减小了向量单元的复杂度,便于向量单元集成更多的运算部件。
[0019] 本发明在标量单元与向量单元相结合的微体系结构中,支持单指令流与多指令流的执行模式,从多个层面上开发应用的并行性;并通过对两种执行模式动态切换的支持,实现了对处理器资源灵活、高效的利用。非常适合面向无线通信、视频图像处理及运行嵌入式操作系统的微处理器,但不局限于此种处理器,其他需要开发多种并行性的处理器也可以借鉴,为微处理器的设计指出了一个新的方向。

附图说明

[0020] 图1为本发明实施例支持单指令流与多指令流动态切换执行的方法的流程示意图;
[0021] 图2为本发明实施例支持单指令流与多指令流动态切换执行的微处理器的结构示意图;
[0022] 图3为本发明实施例支持单指令流与多指令流动态切换执行的微处理器的指令流切换单元的结构示意图;
[0023] 图4为本发明实施例支持单指令流与多指令流动态切换执行的微处理器的控制部件的结构示意图;
[0024] 图5为本发明实施例支持单指令流与多指令流动态切换执行的微处理器单指令流与多指令流执行动态切换实例的示意图。
[0025] 图例说明:1、指令发射部件;2、标量单元;21、标量处理器;22、标量缓存;3、向量单元;31、向量处理器阵列;32、向量存储体;4、指令流切换单元;41、控制部件;411、专用寄存器组;412、写指令缓存控制部件;413、读指令缓存控制部件;42、指令缓存部件;43、执行模式选择部件。

具体实施方式

[0026] 如图1所示,本发明实施例的支持单指令流与多指令流动态切换执行的方法采用标量单元2和向量单元3执行来自指令发射部件1的指令,其实施步骤如下:首先标量单元2和向量单元3在默认的单指令流模式下执行来自指令发射部件1的同一个指令流,当向量单元3执行目标循环体时,标量单元2完成目标循环体的初始化、控制目标循环体指令进行缓存并切换为多指令流模式,然后向量单元3执行缓存的目标循环体指令,同时标量单元2执行与目标循环体无关联的标量指令流,并最后在向量单元3执行目标循环体完毕时切换为单指令流模式。
[0027] 本实施例中采用两条指令用于指令流执行模式的切换:SWITCH R_OS和SWITCH_B R_NOS。SWITCH R_OS指令完成单指令流模式向多指令流模式的切换。具体的操作是:保存当前执行现场、恢复R_OS指向的与目标循环体无关联的标量指令流现场,并将指令流切换单元中的执行模式选择部件配置为多指令流模式执行。SWITCH_B R_NOS指令完成多指令流模式向单指令流模式的切换。具体的操作是:保存当前执行现场;恢复R_NOS指向的单指令流执行现场,并将指令流切换单元中的执行模式选择部件配置为单指令流模式执行。
[0028] 切换为多指令流模式时,标量单元2首先保存当前的单指令流模式执行现场、恢复与目标循环体无关联的标量指令流执行现场,然后配置向量单元3选择执行缓存的目标循环体指令。向量单元3执行目标循环体完毕时,向量单元3向标量单元2发送中断信号,标量单元2收到中断信号后,首先保存与目标循环体无关联的标量指令流执行现场、恢复单指令流模式执行现场,然后配置向量单元3选择执行来自指令发射部件1的向量指令并切换为单指令流模式。通过微处理器在单指令流模式和多指令流模式之间的动态切换,从而可以有效提高微处理器的处理速度和执行效率。
[0029] 本发明的目标循环体指运行时间较长、运行较为独立(仅仅在循环的初始化、循环过程控制以及循环完毕后才需要标量单元2的配合,循环过程中不需要标量单元2的配合)的循环体,而循环体在微处理器中一般是通过向量单元3进行处理,因此目标循环体也仅由向量单元3执行,且循环过程中不需要标量单元2的配合。如果所判断的执行程序不属于目标循环体,则采用单指令流模式执行,否则采用单指令流模式与多指令流模式动态切换执行,本实施例的单指令流与多指令流执行动态切换的方式的详细步骤如下:
[0030] 1)单指令流模式执行并判断执行程序,在单指令流模式下,指令发射部件1为标量单元2、向量单元3统一提供标量、向量指令,针对每个执行程序进行判断是否属于目标循环体,如果不是则保持单指令流模式执行,否则首先完成目标循环体的第一次执行,并将目标循环体指令写入缓存,跳转执行步骤2);
[0031] 2)切换为多指令流模式,标量单元2执行SWITCH R_OS指令切换为多指令流模式,并同时保存当前的单指令流模式执行现场,恢复R_OS所指向的与目标循环体无关联的标量指令流执行现场,然后配置向量单元3选择执行被缓存的目标循环体指令;
[0032] 3)多指令流模式执行,向量单元3通过读取被缓存的目标循环体指令来继续执行目标循环体,同时标量单元2执行与目标循环体无关联的标量指令流;
[0033] 4)切换为单指令流模式,向量单元3执行目标循环体完毕时,向量单元3向标量单元2发送中断信号,标量单元2收到中断信号后,首先保存与目标循环体无关联的标量指令流执行现场、恢复单指令流模式执行现场,然后配置向量单元3执行来自指令发射部件1的向量指令并执行SWITCH_B R_NOS指令切换为单指令流模式,返回执行步骤1)。
[0034] 如图2所示,本发明实施例的支持单指令流与多指令流动态切换执行的微处理器包括指令发射部件1和分别与指令发射部件1相连的标量单元2、向量单元3,指令发射部件1用于向标量单元2和向量单元3分配指令,标量单元2和向量单元3相连,向量单元3用于执行循环体,标量单元2用于执行循环体的初始化、循环过程控制、循环完毕后的控制以及切换微处理器的工作模式,指令发射部件1通过指令流切换单元4与向量单元3相连,标量单元2在完成目标循环体的初始化、控制目标循环体进行指令缓存后,切换工作模式为多指令流模式,在多指令流模式下标量单元2执行与向量单元3执行的目标循环体无关联的标量指令,指令流切换单元4获取指令发射部件1分配的向量指令并负责执行向量单元3的循环过程控制、并在向量单元3执行目标循环体完毕时向标量单元2发送中断信号,标量单元2根据中断信号切换工作模式为单指令流模式。
[0035] 指令发射部件1向标量单元2分配标量指令、向向量单元3分配向量指令。标量单元2由标量处理器21与标量缓存22组成,标量单元2主要负责标量任务处理、程序流控、及循环控制的处理。向量单元3由向量处理器阵列31、向量存储体32组成,向量单元3主要面向计算密集型的向量处理,例如循环体的处理执行。
[0036] 如图3所示,指令流切换单元4包括控制部件41、指令缓存部件42和执行模式选择部件43,指令缓存部件42用于缓存向量单元3的目标循环体指令,执行模式选择部件43在工作模式为单指令流模式时选定指令发射部件1作为向量单元3的指令输入部件、在工作模式为多指令流模式时选定指令缓存部件42作为向量单元3的指令输入部件,控制部件41控制将指令发射部件1的目标循环体指令写入指令缓存部件42,并在向量单元3执行循环过程中控制向量单元3从指令缓存部件42中读取目标循环体指令。
[0037] 如图4所示,控制部件41包括专用寄存器组411、写指令缓存控制部件412和读指令缓存控制部件413,专用寄存器组411缓存指令缓存部件42的状态、向量单元3执行目标循环体的位置信息以及向量单元3所执行目标循环体的循环次数,写指令缓存控制部件412用于在向量单元3第一次执行目标循环体时将目标循环体指令写入指令缓存部件42,读指令缓存控制部件413在多指令流模式时控制向量单元3从指令缓存部件42中读取目标循环体指令、修正所执行目标循环体对应专用寄存器组411中的循环次数,并在所执行目标循环体的循环次数为零时向标量单元2发送中断信号。
[0038] 本实施例中,执行模式选择部件43由标量单元2进行配置,标量单元2通过执行SWITCH R_OS指令完成单指令流模式向多指令流模式切换,通过执行SWITCH_B R_NOS指令完成多指令流模式向单指令流模式切换。
[0039] 执行模式选择部件43收到SWITCH R_OS切换为多指令流模式,并选定指令发射部件1作为向量单元3的指令输入部件,写指令缓存控制部件412用于在向量单元3第一次执行目标循环体时将目标循环体指令写入指令缓存部件42,使得目标循环体在第一遍执行完成之后,目标循环体指令就已经存储到指令缓存部件42中,然后向量单元3从指令缓存部件42中读取目标循环体指令,此时因此向量单元3执行循环过程中不需要标量单元2的配合,因此在多指令流模式下标量单元2可以同时执行与向量单元3执行的目标循环体无关联的标量指令,从而可以实现同时处理多指令流,提高微处理器的处理性能。
[0040] 本实施例中,专用寄存器组411的相关信息由标量单元2进行配置,用于缓存指令缓存部件42的写使能、读使能状态、指令缓存部件42中目标循环体指令的起始位置、结束位置信息、循环次数寄存器。写指令缓存控制部件412在指令缓存部件42的写使能有效的情况下,控制指令缓存部件42的写指针顺序增1。读指令缓存控制部件413在指令缓存部件42的读使能有效的情况下,进行指令缓存部件42的读取控制,指令缓存部件42的读过程从起始位置寄存器中所指的指令缓存单元开始,每拍依次读取一条指令,当读到结束位置寄存器中所指的指令缓存单元时,将循环次数寄存器的值减1,如果此时循环次数寄存器的值为0,标志着完成了目标循环体的执行过程,则向标量单元2发送中断信号;否则,从起始位置寄存器所指的指令缓存单元开始,继续指令的读取。
[0041] 如图5所示,在单指令流模式的执行状态下,标量单元2、向量单元3共同执行来自指令发射部件1的标量、向量指令,当处理运行时间较长且运行较为独立的目标循环体任务时,标量单元2在第一次循环开始之前,使能指令流切换单元4中指令缓存部件42的写操作,从而在向量单元3执行第一次循环的同时将目标循环体指令写入该指令缓存部件42,在第一次循环执行完毕后,指令缓存部件42中刚好存放了目标循环体指令。此时标量单元2通过执行SWITCH R_OS指令将执行模式切换为多指令流模式执行。在该模式下,标量单元2从指令发射部件1获取标量指令,向量单元3从向指令流切换单元4中的指令缓存部件42中获取指令。向量单元3在完成目标循环体的执行后,向标量单元2发送中断,请求将执行模式恢复到单指令流模式,标量单元2通过在中断服务程序中执行SWITCH_B R_NOS指令,将执行模式重新切换为单指令流模式。
[0042] 以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。