CN102662635A - 超长指令字变长指令实现方法及实现该方法的处理器 - Google Patents
超长指令字变长指令实现方法及实现该方法的处理器 Download PDFInfo
- Publication number
- CN102662635A CN102662635A CN2012100767086A CN201210076708A CN102662635A CN 102662635 A CN102662635 A CN 102662635A CN 2012100767086 A CN2012100767086 A CN 2012100767086A CN 201210076708 A CN201210076708 A CN 201210076708A CN 102662635 A CN102662635 A CN 102662635A
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- execution units
- long instruction
- instructions
- 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
Images
Landscapes
- Advance Control (AREA)
Abstract
一种超长指令字变长指令实现方法及实现该方法的处理器,该方法是首先将难以用固定长度或有限长度指令编码实现的复杂计算操作拆分为多条简单指令,然后将互相有数据依赖关系的多条简单指令在单个时钟周期内分发到处理器的多个硬件执行单元中,通过多个硬件执行单元之间的数据交互与协作,并行地完成复杂的计算操作,该处理器是采用多发射技术,在其多个独立的硬件执行单元之间存在数据交互行为,本发明在多个执行单元之间增加数据交互的能力,使多条指令能够并行地被分发到多个执行单元中,从而提高了执行效率,通过本发明能够突破指令编码长度限制,用同一时钟周期并行执行的多条指令来实现复杂的计算操作,扩展了指令编码空间,增强了处理器的数据处理能力。
Description
技术领域
本发明属于指令编码架构领域,涉及对复杂计算操作指令编码的拆分,特别涉及一种超长指令字变长指令实现方法及实现该方法的处理器。
背景技术
对于采用固定长度或有限长度指令编码的处理器架构,一些复杂的计算操作由于指令编码长度的限制而无法用一条指令来实现,必须将这些复杂的计算操作拆分为互相有数据依赖关系的多条简单指令。
依据指令集架构来分类,处理器架构可分为复杂指令集计算(CISC,Complex Instruction Set Computing)和精简指令集计算(RISC,ReducedInstruction Set Computing)两种。
在CISC架构的处理器中,往往采用可变长度的指令,很容易用单条指令来实现复杂的计算操作。然而对于RISC架构的处理器来说,它的指令编码一般具有固定的长度,每条指令的功能也较为简单。通常情况下,RISC处理器的每条指令的长度不超过32bit,这是由指令编码空间和可执行代码体积两个因素决定的,采用32bit或16bit的指令编码,能够在指令编码空间和代码体积之间取得较好的均衡。如清华大学微电子所DSP实验室自主研发的第三代数字信号处理器Magnolia采用32bit固定长度的指令编码,而该实验室自主研发的第二代数字信号处理器Lily则采用16bit和32bit混合长度的指令编码方式。
类似RISC架构这种固定长度或有限长度的指令编码方式,为其带来一个问题,就是一些复杂的计算操作,由于指令编码长度的限制,无法用一条简单的指令来实现。如对32/64bit位宽的立即数或地址的操作,复数运算、向量运算、加/解密、通信、多媒体等领域中包含多个操作数的复杂计算操作,对内存中的数据进行复杂操作等。
在传统的采用固定长度或有限长度指令编码的处理器设计中,为了实现这些复杂的计算操作,往往把这些操作拆分为互相有数据依赖关系的多条简单指令。由于数据依赖关系的存在,这些指令必须按照选择顺序,在多个时钟周期内顺次执行,无法在单个时钟周期内完成。如果不对这些复杂的计算操作进行拆分,而是像CISC处理器那样定义不规则长度的指令来实现,则不仅会破坏处理器指令集的一致性,还会对处理器的取指、译码、分发等硬件逻辑设计造成较大影响,甚至可能成为关键路径,降低处理器的性能。
当今的处理器架构设计中,为了提高处理器的计算能力,往往使用多发射(Multiple Issue)技术来实现指令级并行(ILP,Instruction LevelParallelism)。多发射技术可通过在处理器中设计一系列独立的硬件执行单元来实现,多个硬件执行单元可以并行地执行不同的指令。根据数据依赖关系判定和指令并行性判定方式的不同,又可以把采用了多发射技术的处理器架构分为超标量(Superscalar)、超长指令字(VLIW,Very Long InstructionWord)、显式并行指令计算(EPIC,Explicitly Parallel Instruction Computing)等。如清华大学微电子所DSP实验室自主研发的第二代和第三代数字信号处理器都是采用了多发射技术的VLIW架构处理器,第二代的Lily处理器具有6个独立的硬件执行单元,第三代的Magnolia处理器具有8个独立的硬件执行单元,即能够实现最多6条或8条指令的并行执行。
发明内容
为了克服上述现有技术的不足,本发明的目的在于提供一种超长指令字变长指令实现方法及实现该方法的处理器,解决了复杂的计算操作难以用单条指令实现的问题。
为了实现上述目的,本发明采用的技术方案是:
一种超长指令字变长指令实现方法,首先将难以用固定长度或有限长度指令编码实现的复杂计算操作拆分为多条简单指令,将互相有数据依赖关系的多条简单指令在单个时钟周期内分发到采用多发射技术的处理器的多个硬件执行单元中,通过多个硬件执行单元之间的数据交互与协作,并行地完成计算操作,所述的简单指令是指这些指令符合处理器的固定长度或有限长度的指令编码规则,该组在同一个时钟周期并行执行的有数据依赖关系的多条简单指令视为一条超长指令。
所述多个硬件执行单元之间存在数据交互行为。
所述互相有数据依赖关系的多条简单指令是这些指令之间存在RAW(Read After Write)、WAW(Write After Write)或WAR(Write After Read)类型的数据相关性。
一种实现所述超长指令字变长指令实现方法的处理器,采用多发射技术,并且在处理器的多个硬件执行单元之间增加了数据交互,所述的数据交互行为用于传递中间计算结果、寄存器值或控制信息。
与现有技术相比,本发明提供的优点是:
1)允许采用固定长度或有限长度指令编码的处理器以此种方式来突破指令编码长度限制,实现复杂的计算操作;
2)采用本发明的解决方案,可以减少不规则指令编码对处理器的取指、译码、分发逻辑设计的不良影响;
3)本发明能够使处理器处理复杂计算操作的周期数大幅缩短,从而增强了处理器的并行计算能力,提高了处理器的性能;
附图说明
图1为本发明的方法示意图。
图2为本发明实施例中传统方式向寄存器写入64bit立即数。
图3为本发明实施例中采用本发明方法的处理器在单周期执行64bit立即数指令。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
以清华大学微电子所DSP实验室自主研发的第三代数字信号处理器Magnolia为例,它是一款VLIW架构的处理器。Magnolia处理器中共有8个执行单元,并采用了32位定长指令编码,如图1所示。对于VLIW架构的处理器来说,各条指令的数据依赖关系是由编译器来判定的,编译器能够在满足各种硬件资源限制的条件下,把没有数据依赖关系的指令安排到同一个时钟周期并行地执行。在实际执行过程中,处理器对指令并行性的判定则采用了该处理器特有的“功能单元升序”的方式来判定。
由此可见,Magnolia处理器完全具有本发明实现的条件:a、采用32bit固定长度的指令编码;b、有多个硬件执行单元,实现了多发射技术。
在此基础上,以一个典型的64bit立即数指令为例,描述本发明的具体实施方式。
首先,对复杂的计算操作进行拆分。64bit立即数指令要完成向寄存器中写入一个64位数据的任务,然而一条指令只有有限的32bit,无法同时容纳功能单元、目的寄存器、指令操作码和这个64bit的立即数。在不损害Magnolia处理器的编码方式和指令并行性判定原则的条件下,传统的拆分方式是将此操作拆分成4条独立的指令,每条指令都向同一个目的寄存器写入64bit立即数的一部分。由于这几条指令的目的寄存器是同一个,所以它们之间存在数据依赖关系,只能由同一个执行单元按先后顺序执行,如图2所示。
采用本发明的拆分方式为,仍将此操作拆分为4条独立指令,它们使用同一个目的寄存器,因而仍存在数据依赖关系。但是这4条独立指令被安排到不同的执行单元,这样才能够利用处理器的多发射技术,实现并行的分发和执行。Magnolia处理器共有AAMMDDFF共8个执行单元,本实施例中的4条独立指令,分别被编码到A、M、M、D四个执行单元之中。
其次是实现硬件执行单元的数据交互。传统意义的硬件执行单元之间没有耦合,不能够进行数据交互。在本发明的方案中,多个硬件执行单元之间允许进行必要的数据交互行为。如对于64bit立即数指令的示例来说,被编码到A、M、M、D四个执行单元的4条独立指令,将被并行地分发和执行,在执行过程中,A、M、M、D四个执行单元之间进行数据交互,将4条指令中的数据片断进行拼合,最终组合成一个完整的64bit数据,写入目的寄存器中。处理器局部结构如图3所示。
通过图3的实现方式,使得处理器能够在单个时钟周期内处理64bit立即数的写入问题,与传统的执行方式相比,提高了执行效率。
由于复杂的计算操作被拆分成多条独立的指令后,虽然存在数据依赖关系,仍可以在同一时刻并行地执行,因此这样的多条连续指令可以视为一个整体,即特殊的“长指令”,相对于处理器32bit定长指令编码而言,即实现了变长指令。
实现本发明所述超长指令字变长指令实现方法的多发射技术处理器,在其处理器硬件执行单元之间增加用于传递中间计算结果、寄存器值或控制信息等功能的数据交互行为,该数据交互行为的目的是为了解决存在数据依赖关系的多条指令的并行执行。
最简单的数据交互行为是使用直连的数据线路来传输参与计算的必要数据,包括中间计算结果、寄存器值或控制信息等。例如在64bit立即数指令中使用直连的16bit位宽的数据线路将四部分16bit数据合并到一起,得到最终的64bit结果。而为了实现更复杂的计算操作,可能需要更为复杂的数据交互行为,如更大位宽的数据线路或更多次的数据交换等形式。
Claims (5)
1.一种超长指令字变长指令实现方法,首先将难以用固定长度或有限长度指令编码实现的复杂计算操作拆分为多条简单指令,其特征在于,将互相有数据依赖关系的多条简单指令在单个时钟周期内分发到采用多发射技术的处理器的多个硬件执行单元中,通过多个硬件执行单元之间的数据交互与协作,并行地完成计算操作,所述的简单指令是指这些指令符合处理器的固定长度或有限长度的指令编码规则,该组在同一个时钟周期并行执行的有数据依赖关系的多条简单指令视为一条超长指令。
2.根据权利要求1所述超长指令字变长指令实现方法,其特征在于,所述多个硬件执行单元之间存在数据交互行为。
3.根据权利要求1所述超长指令字变长指令实现方法,其特征在于,所述互相有数据依赖关系的多条简单指令是指这些指令之间存在RAW(ReadAfter Write)、WAW(Write After Write)或WAR(Write After Read)类型的数据相关性。
4.一种实现权利要求1所述超长指令字变长指令实现方法的处理器,采用多发射技术,其特征在于,在其处理器多个独立的硬件执行单元之间存在数据交互行为。
5.根据权利要求4所述的处理器,其特征在于,所述的数据交互行为用于传递中间计算结果、寄存器值或控制信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100767086A CN102662635A (zh) | 2012-03-21 | 2012-03-21 | 超长指令字变长指令实现方法及实现该方法的处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100767086A CN102662635A (zh) | 2012-03-21 | 2012-03-21 | 超长指令字变长指令实现方法及实现该方法的处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102662635A true CN102662635A (zh) | 2012-09-12 |
Family
ID=46772136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100767086A Pending CN102662635A (zh) | 2012-03-21 | 2012-03-21 | 超长指令字变长指令实现方法及实现该方法的处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662635A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298487A (zh) * | 2014-10-11 | 2015-01-21 | 张鹏 | 处理器指令执行部件模块化设计及模块组合的方法 |
WO2015024482A1 (zh) * | 2013-08-19 | 2015-02-26 | 上海芯豪微电子有限公司 | 变长指令字处理器***和方法 |
CN110018848A (zh) * | 2018-09-29 | 2019-07-16 | 安凯(广州)微电子技术有限公司 | 一种基于risc-v的混合混算***及方法 |
CN110515658A (zh) * | 2014-07-30 | 2019-11-29 | 莫维迪厄斯有限公司 | 用于管理可变长度指令的方法和设备 |
CN111295641A (zh) * | 2017-11-07 | 2020-06-16 | 高通股份有限公司 | 使用宽度减小vliw处理器的vliw指令处理的***和方法 |
CN111857832A (zh) * | 2020-07-15 | 2020-10-30 | 国家电网有限公司能源互联网技术研究院 | 一种超长指令***判断方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061780A (en) * | 1997-01-24 | 2000-05-09 | Texas Instruments Incorporated | Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units |
CN1409210A (zh) * | 2001-09-20 | 2003-04-09 | 松下电器产业株式会社 | 处理器、编译装置与编译方法、存储介质 |
US7127590B1 (en) * | 1999-06-02 | 2006-10-24 | Canon Kabushiki Kaisha | Reconfigurable VLIW processor |
-
2012
- 2012-03-21 CN CN2012100767086A patent/CN102662635A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061780A (en) * | 1997-01-24 | 2000-05-09 | Texas Instruments Incorporated | Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units |
US7127590B1 (en) * | 1999-06-02 | 2006-10-24 | Canon Kabushiki Kaisha | Reconfigurable VLIW processor |
CN1409210A (zh) * | 2001-09-20 | 2003-04-09 | 松下电器产业株式会社 | 处理器、编译装置与编译方法、存储介质 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015024482A1 (zh) * | 2013-08-19 | 2015-02-26 | 上海芯豪微电子有限公司 | 变长指令字处理器***和方法 |
US10140126B2 (en) | 2013-08-19 | 2018-11-27 | Shanghai Xinhao Microelectronics Co. Ltd. | Variable length instruction processor system and method |
CN110515658A (zh) * | 2014-07-30 | 2019-11-29 | 莫维迪厄斯有限公司 | 用于管理可变长度指令的方法和设备 |
CN104298487A (zh) * | 2014-10-11 | 2015-01-21 | 张鹏 | 处理器指令执行部件模块化设计及模块组合的方法 |
WO2016054964A1 (zh) * | 2014-10-11 | 2016-04-14 | 张鹏 | 处理器指令执行部件模块化设计及模块组合的方法 |
CN111295641A (zh) * | 2017-11-07 | 2020-06-16 | 高通股份有限公司 | 使用宽度减小vliw处理器的vliw指令处理的***和方法 |
US11663011B2 (en) | 2017-11-07 | 2023-05-30 | Qualcomm Incorporated | System and method of VLIW instruction processing using reduced-width VLIW processor |
CN111295641B (zh) * | 2017-11-07 | 2024-05-31 | 高通股份有限公司 | 使用宽度减小vliw处理器的vliw指令处理的***和方法 |
CN110018848A (zh) * | 2018-09-29 | 2019-07-16 | 安凯(广州)微电子技术有限公司 | 一种基于risc-v的混合混算***及方法 |
CN110018848B (zh) * | 2018-09-29 | 2023-07-11 | 广州安凯微电子股份有限公司 | 一种基于risc-v的混合混算***及方法 |
CN111857832A (zh) * | 2020-07-15 | 2020-10-30 | 国家电网有限公司能源互联网技术研究院 | 一种超长指令***判断方法及*** |
CN111857832B (zh) * | 2020-07-15 | 2023-10-20 | 国家电网有限公司能源互联网技术研究院 | 一种超长指令***判断方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
CN102662635A (zh) | 超长指令字变长指令实现方法及实现该方法的处理器 | |
EP3350708B1 (en) | Dense read encoding for dataflow isa | |
KR101710116B1 (ko) | 프로세서, 메모리 관리 장치 및 방법 | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
US20160378499A1 (en) | Verifying branch targets | |
US10095519B2 (en) | Instruction block address register | |
US10713059B2 (en) | Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units | |
US11977891B2 (en) | Implicit program order | |
Hu et al. | Using dynamic binary translation to fuse dependent instructions | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN105453071A (zh) | 用来提供向量族群计数功能的方法、设备、指令和逻辑 | |
CN105389158A (zh) | 组合路径 | |
EP3314400A1 (en) | Determination of target location for transfer of processor control | |
CN102004719A (zh) | 支持同时多线程的超长指令字处理器结构 | |
CN105359129A (zh) | 用于提供用于基因组测序和比对的族群计数功能的方法、装置、指令以及逻辑 | |
CN103995827B (zh) | MapReduce计算框架中的高性能排序方法 | |
Sharifian et al. | Chainsaw: Von-neumann accelerators to leverage fused instruction chains | |
CN204790975U (zh) | 数据通路流水线 | |
US7461235B2 (en) | Energy-efficient parallel data path architecture for selectively powering processing units and register files based on instruction type | |
CN106155979B (zh) | 一种基于粗粒度可重构架构的des算法密钥扩展***及扩展方法 | |
EP3350690A1 (en) | Implicit program order | |
CN103218207B (zh) | 基于单/双发射指令集的微处理器指令处理方法及*** | |
CN101246435A (zh) | 一种支持高级语言部分语句功能的处理器指令集 | |
Qun et al. | Assessment of ecosystem energy flow and carrying capacity of swimming crab enhancement in the Yellow River estuary and adjacent waters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120912 |