CN102411490A - 一种针对动态可重构处理器的指令集的优化方法 - Google Patents
一种针对动态可重构处理器的指令集的优化方法 Download PDFInfo
- Publication number
- CN102411490A CN102411490A CN2011102273832A CN201110227383A CN102411490A CN 102411490 A CN102411490 A CN 102411490A CN 2011102273832 A CN2011102273832 A CN 2011102273832A CN 201110227383 A CN201110227383 A CN 201110227383A CN 102411490 A CN102411490 A CN 102411490A
- Authority
- CN
- China
- Prior art keywords
- instruction set
- instruction
- reconfigurable processor
- operational code
- processor
- 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.)
- Granted
Links
Abstract
本发明提供一种针对动态可重构处理器的指令集的优化方法,包括:指令集架构应用于编程动态可重构处理器运算单元阵列;指令集采用等长操作码;指令集对操作码的编码方式采用和硬件匹配的分立编码方式;指令集的编码参考各个操作码的使用频率,以简单的指令为基础,添加了视频解码应用中常用的运算:四舍五入移位,饱和运算,条件运算,避免了通过软件实现这些运算时将带来的复杂配置信息和低效率。
Description
技术领域
本发明涉及动态可重构处理器技术领域,特别是涉及一种针对动态可重构处理器的指令集的优化方法。
背景技术
动态可重构处理器是一种新型的处理器构架,其结合了软件的灵活性和硬件的高效性,和传统单核微处理器相比,不仅可以改变控制流,还可以改变数据通路,具有高性能、低功耗、灵活性好、扩展性好的优点,尤其适合于处理计算密集型的算法,例如媒体处理、模式识别、基带处理等。因此动态可重构处理器也成为目前处理器结构的一个重要发展方向,如欧洲微电子中心(IMEC)的ADRES处理器和惠普(HP)的CHESS处理器,前者由紧耦合的超长指令字(Very Long Instruction Word,VLIW)处理器内核和粗颗粒度并行矩阵计算的可重构硬件构成,后者由大量可重构算术计算单元阵列构成。
动态可重构处理器的核心一般为一个二维的可重构算术逻辑单元(ALU)阵列,该结构是并行计算以提高处理能力的基础。同时,可重构算术逻辑单元间必须拥有较为灵活的互联结构以保证运算通用性,这种可配置的互联结构使得动态可重构处理器可以改变数据流,实现了对数据流的高速并行处理,相对于传统单核、少核处理器大大的提升了计算性能。另一方面,相对于传统的静态可重构电路,如用大部分的现场可编程逻辑阵列(FPGA)来实现处理器功能时,动态的可重构特性使得处理器能够通过时分复用以大大减少所需的电路面积。
动态可重构处理器的指令集架构(instruction set architecture,ISA)是处理器编程的基础,指令集中包含对一系列操作码及其硬件操作的定义,是处理器所有可执行指令的集合。处理器指令是由指令集架构定义的单个处理器操作。在传统的指令集构架上,指令包括一个操作码(指定要进行操作的类型),和零个或者多个操作数(指定参与操作的寄存器、内存地址或者立即数(literal data))。
传统指令集架构主要分成精简指令集(Reduced Instruction SetComputing)和复杂指令集(Complex Instruction Set Computing)两种。RISC的设计重点在于降低由硬件执行指令的复杂度,因为软件比硬件容易提供更大的灵活性和更高的智能,因此RISC设计对编译器有更高的要求;CISC的设计则更侧重于硬件执行指令的功能,使CISC的指令变得很复杂。因而RISC对编译器的要求高,CISC强调硬件的复杂性,CPU的硬件实现更复杂。而超长指令字架构(VLIW)过将多条指令放入一个指令字,有效的提高了CPU各个计算功能部件的利用效率,提高了程序的性能。
对于动态可重构处理器,其运算单元的规模远大于传统单核处理器,因而其一个指令字中需要给出一个阵列运算单元的操作码以及阵列的互连。将指令字内容分级考虑,只看其中的操作码,可以认为是普通处理器操作码组成的张量。但是用于动态可重构处理器的基础运算单元和普通处理器还是存在很多差别的:
1.因为动态可重构处理器的阵列规模较大,所以对于每个运算单元的面积的要求更加严格,其所能实现的功能也越简单越好,这样便于控制芯片面积。另外,动态可重构处理器通常用于大量重复并行运算,所以对运算单元的功能也没有太高的要求。
2.同样由于阵列规模较大,基本运算单元的门控电路的面积和功耗的影响被放大了,所以对于操作码的设计有了低功耗和简化逻辑的要求。
3.为了提高在应用于一些专门应用如媒体解码时的效率,基本运算单元需要在基本功能上额外增加部分特殊功能。
因此动态可重构处理器对于指令集架构也有了特殊的要求。为了满足这些要求,我们提出了如下发明内容的指令集架构。
发明内容
本发明所要解决的技术问题是提供一种针对动态可重构处理器的指令集的优化方法,能够避免了通过软件实现这些运算时将带来的复杂配置信息和低效率。
为了解决上述问题,本发明公开了一种针对动态可重构处理器的指令集的优化方法,包括:
指令集架构应用于编程动态可重构处理器运算单元阵列;
指令集采用等长操作码;
指令集对操作码的编码方式采用和硬件匹配的分立编码方式;
指令集的编码参考各个操作码的使用频率。
优选的,所述编程动态可重构处理器包括视频解码应用的动态可重构处理器。
优选的,所述指令集包括算术运算、逻辑运算、移位操作、比较、条件和饱和运算的指令。
优选的,所述操作码长度为5。
与现有技术相比,本发明具有以下优点:
本发明提供一种针对动态可重构处理器的指令集的优化方法,以简单的指令为基础,添加了视频解码应用中常用的运算:四舍五入移位,饱和运算,条件运算,避免了通过软件实现这些运算时将带来的复杂配置信息和低效率。
同时,本发明提出的指令集采用固定码长,码长由指令的总数目决定。我们不采用变长的操作码,虽然其能降低编码长度和配置信息的长度,但其只能串行编解码使得编解码速度很慢,不能满足高速并行计算的要求。
此外,为了降低电路的功耗,通常可以对运算单元内部各主要模块做power-gating(门控电源)或clock-gating(门控时钟),尤其是一些使用频率偏低而功耗较高的模块,比如乘法器。而所有门控技术的使能信号都是操作码的组合逻辑产生,为了减少竞争冒险带来的毛刺和由此引起的关断模块的误翻转,对于较大的模块设计其门控逻辑使其电路尽量简单。本发明通过对于操作码的编码设计,只用少数几个操作码位的组合输出甚至只是某一位操作码来作为主要功能模块(加法器、乘法器、移位器等)的门控使能信号。
并且,本发明统计所有指令操作码的使用频率,操作码设计时给使用频率较大的操作码分配较小的操作码翻转,这样就能最小化操作码的总体翻转概率,从而一定程度的降低动态功耗。
附图说明
图1是本发明具体实施方式中所述的一种针对动态可重构处理器的指令集的优化方法的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明一种针对动态可重构处理器的指令集的优化方法的流程图,具体包括:
步骤S101,指令集架构应用于编程动态可重构处理器运算单元阵列;
步骤S102,指令集采用等长操作码;
步骤S103,指令集对操作码的编码方式采用和硬件匹配的分立编码方式;
步骤S104,指令集的编码参考各个操作码的使用频率。
指令集架构是一款处理器的核心设计,优化的指令集架构设计能够为处理器带来功耗和效率上的提高,本发明提出了一种针对动态可重构处理器架构的指令集设计方法,其一方面可以降低处理器控制逻辑硬件实现的复杂性,另一方面可以降低总体的动态功耗。本指令集架构为了提高在视频解码中的执行效率,增加了部分解码算法常用运算,共26条指令,具体实现方法如表1所示,包括了算术、移位、旁路、位操作、绝对值、比较、饱和、条件等运算以及它们的补充运算。诸如四舍五入移位运算、边限饱和运算、条件运算等都是视频解码中需要频繁使用的运算单元:
(1)四舍五入移位运算是为了保证视频解码中带小数的移位运算时的精确度;
(2)边限饱和运算用于处理图像解码算法中有上限的运算结果的处理。
根据本发明内容特征的第2、3点,我们统计了主要功能模块乘法器、加法器和移位器被各条指令使用的状况,如表2所示。根据功能模块被指令使用的比例,我们可以确定其最少需要几个操作码位来生成控制信号,加法器最少需要一位控制,而乘法器和移位器最少需要两位控制。在下面的实施例中编码后的最高位直接控制是否关断加法器,中间两位和末两位分别控制乘法器和移位器的关断。默认状态的空指令操作码为00000,此时关断所有功能模块。
剩下部分的编码取决于各操作码的使用频率,其在本实施例中的统计如表2所示。根据将使用频率大的操作码编码成翻转数目较少的原则,将剩余部分编码如表2所示,统计得到总体的翻转概率为1.10。
1)指令集采用等长操作码,包括算术运算、逻辑运算、移位操作、比较、条件和饱和运算等共26条指令,操作码长度为5。
2)指令集对操作码的编码方式采用和硬件匹配的分立编码方式:尽量减少操作码中与运算单元内部独立硬件(如加法器、乘法器)相关的控制位,例如只用最高位作为乘法器的使能,不使用乘法器的指令最高位都编码为0。
3)指令集的编码参考各个操作码的使用频率:尽量将使用频繁的指令字编码为相对默认状态操作码位翻转较少的操作码,以降低整体的翻转概率。
表1:指令集
1、加入特定指令增强动态可重构处理器针对媒体解码的效率。
a)加入四舍五入移位运算:
动态可重构处理器由大量的可重构运算单元组成,考虑处理器的面积效率,运算单元需要使用简洁的实现方式(由于动态可重构处理器的性能主要取决于运算单元数目的多少,故同样大小的芯片面积可以容纳的单元数量减少,会导致处理器的计算能力减弱)。和浮点运算单元相比,整数处理单元要大大简单,故可重构运算单元多采用整数PE(Process Element)的实现方式。数字信号处理中一个基本的计算形式就是频域分析,比如FFT(快速傅里叶变化)、DCT(离散余弦变换)、DWT(离散小波变化)等等,在基带处理、移动通讯、媒体、图像编解码中广泛存在。时域和频域的互换中就不可避免的涉及到浮点运算。可重构处理器作为高效的并行运算处理器,如何有效的处理浮点运算就是一个很重要的指标。用整数单元处理浮点数的方法就是先通过左移换算成整数,运算完成之后再右移回到之前的量级。在这个过程中会因为右移损失有效位数,故再右移n位之前,需要将原来的数据先加上1左移(n-1)位,即补上一个0.5,起到四舍五入的作用,一定程度上做到精度补偿。
先加1左移(n-1)位,再右移n位。需要一个加法和两个移位运算,分成三部做完。
而由于被加数据的特殊性,特别实现一个四舍五入的移位单元,先右移,再根据被舍位的最高位来选择是否补一,一个移位和一个加一运算,可以合成一步完成,并且在硬件实现上化简了逻辑。
b)加入边限饱和运算
动态可重构处理器存在一个颗粒度的概念,即运算单元的位数。比如8位的加法器,16位的乘法器等。不同算法对于位数的要求不同。比如视频数据一般8位,音频数据11位-16位,图形数据一般32位。当运算数据位数超出处理器的位数时,就无法保证计算结果的正确性。
这个问题在通用处理器中很好解决,通过加大数据通路的位数即可。但是在可重构处理器中同样的操作却不切实际,加大位数会大大增加路由和运算单元的面积开销。故可重构处理器需要特别处理数据有效位数溢出的问题。
如果输入数据的位数直接大于处理器位数,则无法处理;如果是数据的中间结果溢出,则可以通过饱和运算尽可能的减小误差。比如运算单元是8比特,结果为256,由于256已经超过8比特可以表示的范围0-255。不特殊处理则溢出结果变成0,误差是256;而做饱和处理之后结果变成255(数据的上限),误差是1。则可以减小误差。
c)加入条件选择运算
当算法中出现分支运算时,一般的处理方式是分支预测,执行一部分分支运算的同时计算分支选择的条件,得到选择条件之后再顺序执行分支内容。而可重构处理器的阵列计算形式使得我们可以采用更为有效的计算方法:将两个以上的分支展开,同时计算,最后选择正确的分支结果。即这里需要条件选择运算。条件选择运算可以代替原来所需要的两次乘法和一次加法(各自的分支条件乘以分支结果再相加)。
2、将使用频率大的操作码编码成翻转数目较少的码字
根据算法中各个指令的使用情况,将使用频率大的操作编码成翻转数目较少的码字,这样可以减少整体的翻转次数,以起到降低功耗的目的。如下表所示:
表2:指令集编码
根据功能模块被指令使用的比例,我们可以确定其最少需要几个操作码位来生成控制信号,加法器最少需要一位控制,而乘法器和移位器最少需要两位控制。在上面的实施例中编码后的最高位直接控制是否关断加法器,中间两位和末两位分别控制乘法器和移位器的关断。默认状态的空指令操作码为00000,此时关断所有功能模块。减少多路选择器的使用。
以上对本发明所提供的一种针对动态可重构处理器的指令集的优化方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (4)
1.一种针对动态可重构处理器的指令集的优化方法,其特征在于,包括:
指令集架构应用于编程动态可重构处理器运算单元阵列;
指令集采用等长操作码;
指令集对操作码的编码方式采用和硬件匹配的分立编码方式;
指令集的编码参考各个操作码的使用频率。
2.如权利要求1所述的方法,其特征在于:
所述编程动态可重构处理器包括视频解码应用的动态可重构处理器。
3.如权利要求1所述的方法,其特征在于:
所述指令集包括算术运算、逻辑运算、移位操作、比较、条件和饱和运算的指令。
4.如权利要求1所述的方法,其特征在于:
所述操作码长度为5。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110227383.2A CN102411490B (zh) | 2011-08-09 | 2011-08-09 | 一种针对动态可重构处理器的指令集的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110227383.2A CN102411490B (zh) | 2011-08-09 | 2011-08-09 | 一种针对动态可重构处理器的指令集的优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102411490A true CN102411490A (zh) | 2012-04-11 |
CN102411490B CN102411490B (zh) | 2014-04-16 |
Family
ID=45913579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110227383.2A Active CN102411490B (zh) | 2011-08-09 | 2011-08-09 | 一种针对动态可重构处理器的指令集的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102411490B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918339A (zh) * | 2019-02-22 | 2019-06-21 | 上海交通大学 | 一种针对粗粒度可重构结构的基于相似性的指令压缩方法 |
CN110058884A (zh) * | 2019-03-15 | 2019-07-26 | 佛山市顺德区中山大学研究院 | 用于计算型存储指令集运算的优化方法、系统及存储介质 |
WO2022001499A1 (zh) * | 2020-06-30 | 2022-01-06 | 上海寒武纪信息科技有限公司 | 一种计算装置、芯片、板卡、电子设备和计算方法 |
CN115586923A (zh) * | 2022-11-29 | 2023-01-10 | 摩尔线程智能科技(北京)有限责任公司 | 用于指令集的操作码编码方法、装置和计算机可读介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1438574A (zh) * | 2003-02-21 | 2003-08-27 | 中国航天科技集团公司第九研究院七七一研究所 | 一种16位微处理器指令集 |
CN1497435A (zh) * | 2002-09-25 | 2004-05-19 | ���µ�����ҵ��ʽ���� | 处理器 |
CN101201805A (zh) * | 2006-12-15 | 2008-06-18 | 凌阳科技股份有限公司 | 串行传输控制器与串行传输解码器及其串行传输方法 |
CN101246435A (zh) * | 2008-02-25 | 2008-08-20 | 北京理工大学 | 一种支持高级语言部分语句功能的处理器指令集 |
-
2011
- 2011-08-09 CN CN201110227383.2A patent/CN102411490B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1497435A (zh) * | 2002-09-25 | 2004-05-19 | ���µ�����ҵ��ʽ���� | 处理器 |
CN1438574A (zh) * | 2003-02-21 | 2003-08-27 | 中国航天科技集团公司第九研究院七七一研究所 | 一种16位微处理器指令集 |
CN101201805A (zh) * | 2006-12-15 | 2008-06-18 | 凌阳科技股份有限公司 | 串行传输控制器与串行传输解码器及其串行传输方法 |
CN101246435A (zh) * | 2008-02-25 | 2008-08-20 | 北京理工大学 | 一种支持高级语言部分语句功能的处理器指令集 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918339A (zh) * | 2019-02-22 | 2019-06-21 | 上海交通大学 | 一种针对粗粒度可重构结构的基于相似性的指令压缩方法 |
CN109918339B (zh) * | 2019-02-22 | 2023-03-10 | 上海交通大学 | 一种针对粗粒度可重构结构的基于相似性的指令压缩方法 |
CN110058884A (zh) * | 2019-03-15 | 2019-07-26 | 佛山市顺德区中山大学研究院 | 用于计算型存储指令集运算的优化方法、系统及存储介质 |
CN110058884B (zh) * | 2019-03-15 | 2021-06-01 | 佛山市顺德区中山大学研究院 | 用于计算型存储指令集运算的优化方法、系统及存储介质 |
WO2022001499A1 (zh) * | 2020-06-30 | 2022-01-06 | 上海寒武纪信息科技有限公司 | 一种计算装置、芯片、板卡、电子设备和计算方法 |
CN115586923A (zh) * | 2022-11-29 | 2023-01-10 | 摩尔线程智能科技(北京)有限责任公司 | 用于指令集的操作码编码方法、装置和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102411490B (zh) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10469397B2 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
US10387319B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
US10445451B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US11086816B2 (en) | Processors, methods, and systems for debugging a configurable spatial accelerator | |
US10380063B2 (en) | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator | |
US10467183B2 (en) | Processors and methods for pipelined runtime services in a spatial array | |
EP3726389B1 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
US10416999B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US10558575B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
CN101751244B (zh) | 微处理器 | |
US20190303263A1 (en) | Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator | |
TWI650652B (zh) | 運算控制指標快取 | |
US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
US10817291B2 (en) | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator | |
CN102103479B (zh) | 浮点运算器及浮点运算的处理方法 | |
CN102576302B (zh) | 微处理器及用于微处理器上增强精确度乘积和计算的方法 | |
US10678724B1 (en) | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator | |
CN107533460B (zh) | 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令 | |
EP3757809A1 (en) | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator | |
EP3757814A1 (en) | Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator | |
CN102411490B (zh) | 一种针对动态可重构处理器的指令集的优化方法 | |
US11907713B2 (en) | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator | |
Kuang et al. | Energy-efficient multiple-precision floating-point multiplier for embedded applications | |
Ezer | Xtensa with user defined DSP coprocessor microarchitectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |