CN102117197B - 高性能通用信号处理器指令分配装置 - Google Patents
高性能通用信号处理器指令分配装置 Download PDFInfo
- Publication number
- CN102117197B CN102117197B CN2011100513102A CN201110051310A CN102117197B CN 102117197 B CN102117197 B CN 102117197B CN 2011100513102 A CN2011100513102 A CN 2011100513102A CN 201110051310 A CN201110051310 A CN 201110051310A CN 102117197 B CN102117197 B CN 102117197B
- Authority
- CN
- China
- Prior art keywords
- instruction
- module
- distribution
- performance element
- output
- 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
Landscapes
- Advance Control (AREA)
Abstract
本发明涉及高性能通用信号处理器指令分配装置,根据高性能通用信号处理器芯片存在多条指令对应多个执行单元或者通道的“多对多”情况,采用指令分核模块、指令分类模块、指令分配模块和多核指令分配集成模块的组合,实现了多对多的自动化分配及优先级的指定分配,有效的解决了指定执行单元或者传输通道以及多条指令同时抢占同一个执行单元的分配难题,完成了BWDSP100芯片所有指令高效、快速、合理的分配任务,实现了可编程超大规模DSP集成电路芯片运算执行资源占用及传输通道调度的完整功能。
Description
技术领域
本发明涉及一种高性能通用信号处理器指令分配装置。
背景技术
目前数字信号处理芯片已经成为高速自动控制、图像处理、通信技术、雷达及各种信号处理中的核心部件。
国内可编程超大规模DSP集成电路芯片的研制还处在初步尝试阶段,而针对具有复杂指令集的超大规模集成电路芯片内部指令分配,以及执行单元和总线通道占用调度的电路设计还是个尚待解决的难题。
国际上目前应用最广泛的是美国TI公司的TMS系列和ADI公司的TS系列DSP芯片。ADI公司的两款高性能数字信号处理芯片ADSP TS101S、ADSP TS20XS更具有代表性。以下针对ADSP TS20XS芯片和本发明所涉及的我国第一款从指令集、体系结构到设计都实现完全自主的高性能通用信号处理器BWDSP100芯片内部的运算执行单元情况进行比较:
ADSP TS20XS:其核内有双运算模块,每个运算模块包含1个算数逻辑单元(ALU)、1个乘法器、1个移位器、1个寄存器组和1个通信逻辑运算单元(CLU)。1个指令行中最多有4条运算块指令。
BWDSP100:包括4个运算执行核(X、Y、Z、T),每一个运算执行核包含4个乘法器、8个ALU运算单元、2个移位器、一个特定运算单元和一组64字的寄存器组。1个指令行中最多有16条运算块指令。
根据比较可以得出,由于ADSP TS20XS芯片在每个运算核内的各类运算单元只有一个,不存在单条运算指令对应多个可执行运算单元的情况。例如ALU指令,MULT指令、Shif指令、SPU指令、块浮点指令等等,不同类指令所占用的运算单元是不同的,例如不存在ALU指令(加减法)占用MULT(乘法)运算单元的情况,因此当一个指令行中仅有1条ALU指令和1条MULT指令时,是不存在两者之间执行资源抢占的,因此也不存在不同类指令之间的分配难题。
而BWDSP100芯片却存在多条指令对应多个执行单元的多对多的情况,并且包含指定1个或者多个执行单元的分配难题。其中指定执行的情况又存在多条ALU指令抢占同一个执行单元的难题。例如针对ALU指令而言,一个指令行有16个指令槽,相应的可以有1到16条指令。在1到16条指令中可能存在1到8条ALU指令,并且随机分布在16个指令槽中。其中的每条ALU指令都对应着4个执行核(X核、Y核、Z核、T核),每个执行核内又有8个ALU运算单元。每条ALU指令既可以“指定”四个核中的1个或者多个ALU来执行,也可以允许由四个核中的“任意”空闲的1个或者多个ALU来执行。其指定的情况可以具体指定到某个核的某个ALU执行单元。尽管在其他应用领域也有一些分配方法,比如游戏机平台内部的指令分配电路等。但这些方法相对于高数据吞吐量且高运算复杂度及并行性的多核可编程DSP芯片来说还是不能适用。因此,对BWDSP100芯片内部高度集成的指令分配实用电路设计是一个急于解决的问题。
发明内容
本发明的目的在于根据高性能通用信号处理器芯片存在多条指令对应多个执行单元或者通道的“多对多”情况,提供一种能够将接收到的各种不同的指令高效、快速、合理地分配到相应的运算处理单元,或者将指令需要传输的数据分配到数据传输通道上的高性能通用信号处理器指令分配装置。
其技术方案是:一种高性能通用信号处理器指令分配装置,包括:
指令分核模块——用于将接收的指令分成4个512位针对不同运算执行核的指令行;
指令分类模块——用于根据指令分核模块的分类情况,将指令行并行分类,并输出类别标志位;
指令分配模块——用于将指令合理分配到相应的运算执行单元,或者将数据分配至相应的数据传输通道;
多核指令分配集成模块——用于将不同运算核的分配电路设计集成为一个整体模块,输出最终分配结果。
上述的指令分配模块,包括:
自动分配模块—用于对未特别指明具体运算执行单元标号的指令,自动查找该类空运算执行单元并自动选择分配,或者将传输数据自动分配到数据传输通道;
指定分配模块——用于对特别指定具体运算执行单元编号的指令,查找指定冲突的情况,对其指定编号的运算单元进行保留并输出该指令的对应分配编号及优先顺序;
优先级选择模块——用于在同类指令的不同微操作之间,根据优先级定义的顺序,依次按照优先选择权进行分配编号输出;
组合选择模块——用于综合指定分配和自动分配模块的输出情况,快速将指令分配所对应的运算单元编号选择输出,同时输出传输数据所对应的分配通道编号,对可以并行占用运算单元的指令优先输出,不能并行占用运算单元的指令进入重新调度选择器,选择后输出;
分配指令控制输出模块——按照分配编号的情况,用于将分配指令与执行单元或者数据通道一一对应,输出分配指令执行需要的所有控制信号;
分配指令数据输出模块——用于在分配指令与执行单元或者数据通道一一对应的情况下,输出分配指令执行需要的所有数据信号。
寄存器堆资源占用输出模块——根据指令与数据通道对应的分配结果,用于输出指令占用寄存器堆资源的标志选择信号。
其技术效果是:本发明根据高性能通用信号处理器芯片存在多条指令对应多个执行单元或者通道的“多对多”情况,采用指令分核模块、指令分类模块、指令分配模块和多核指令分配集成模块的组合,实现了多对多的自动化分配及优先级的指定分配,有效的解决了指定执行单元或者传输通道以及多条指令同时抢占同一个执行单元的分配难题,完成了BWDSP100芯片所有指令高效、快速、合理的分配任务,实现了可编程超大规模DSP集成电路芯片运算执行资源占用及传输通道调度的完整功能。
附图说明
图1是指令分配结构图。
图2是X运算核指令分配结构图。
图3是访存指令分配结构图。
图4是多核指令分配集成框图。
具体实施方式
如图4所示,一种高性能通用信号处理器指令分配装置,包括:
1、指令分核模块:每个时钟周期接收到512位指令行,其中单字指令32位,双字指令64位,一条指令行可以含有1到16条指令。每条指令可以占用x、y、z、t中的任意1个到4个运算执行核的各种组合情况。指令分核模块的功能是将接收的指令分成4个512位针对不同运算执行核的指令行。
2、指令分类模块:指令分类模块的输入即是指令分核模块的输出,其功能是根据指令集的分类情况,将指令行并行分类,输出类别标志位。在BWDSP100芯片中,指令分类模块又包括核外指令分类模块和核内指令分类模块。其中核外指令分类主要针对访存指令的读、写及立即数指令进行操作;核内指令的分类模块所分类的指令主要有算数逻辑单元(ALU)、乘法器(MULT)、移位器(SHIF)、特殊运算单元(SPU)、控制寄存器、核间传输指令和块浮点运算指令等。
3、指令分配模块:按照指令行内各种指令的执行要求,将指令合理分配到相应的运算执行单元,或者将数据分配至相应的数据传输通道。
4、多核指令分配集成:将不同运算核的分配电路设计集成为一个整体模块,输出最终分配结果。
其中指令分配模块又包括以下模块:
1)自动分配模块:对于未特别指明具体运算执行单元标号的指令,自动查找该类空运算执行单元并自动选择分配,或者将传输数据自动分配到数据传输通道。
2)指定分配模块:对于特别指定具体运算执行单元编号的指令,查找指定冲突的情况,对其指定编号的运算单元进行保留并输出该指令对应的分配编号。
3)优先级选择模块:由于指定分配的情况存在优先顺序,这类情况主要发生在同类指令的不同微操作之间。在这种情况下,优先级选择模块就根据优先级定义的顺序,依次按照优先选择权进行分配编号输出。
4)组合选择模块:综合“指定分配”和“自动分配”模块的输出情况,设计一个高速选择器,首先输出可以并行占用运算单元的指令,不能并行占用运算单元的指令进入重新调度选择器。快速将指令分配对应的运算单元编号选择输出,同时输出传输数据所对应的分配通道编号。
5)分配指令控制输出模块:按照分配编号的情况,将分配指令与执行单元或者数据通道一一对应,输出分配指令执行需要的所有控制信号。
6)分配指令数据输出模块:在分配指令与执行单元或者数据通道一一对应的情况下,输出分配指令执行需要的所有数据信号。
7)寄存器堆资源占用输出模块:根据指令与数据通道对应的分配结果,输出指令占用寄存器堆资源的标志选择信号。
高性能通用信号处理器指令分配主要包括以下四类:
一、指令分配
指令分配模块主要解决多条同类型指令对应多个执行单元的分配问题,同时存在指令指定占用1个或者多个执行单元的情况,并包括多条指令抢占同一个运算执行单元的问题。该指令分配模块可适用于各种不同种类指令的分配,其内部的分配电路结构类似,如图1所示。指令分配主要包括以下步骤:
步骤一:将分类后的指令及对应的类别编码分别输入到指定分配和自动分配模块。
步骤二:自动分配模块根据指令类别和指令特征码填写该类指令自动分配标识。根据指令占用运算单元的数量情况,经过自动选择分配单元模块,输出自动分配对应的运算单元编码。其中运算单元占用的数目可以是1个到8个不等,根据具体指令类型而定。
步骤三:指定分配模块根据指令类别和指令指定分配特征码填写指令指定分配标识。根据指令指定的运算单元编号,输出该类指令指定分配对应的运算单元编码。其中指定运算单元的数目可以是1个到8个不等,并且可以指定相邻2个或者相邻多个运算单元,由指令集的对应指令及相应的标志位确定。
步骤四:指定分配模块输出的结果通过优先级选择模块按照指定优先级排序输出。具有优先指定权的指令经过该选择模块后会优先抢占其指定的运算单元。
步骤五:将指定分配和自动分配的结果输入到组合选择器。指定输出具有对运算单元的优先选择权,在指定分配确定的情况下,选择空闲运算单元的编码按照自动分配模块的分配要求对其余指令自动分配。
步骤六:经过组合选择模块的分配编码输入至寄存器堆资源占用输出模块、分配指令控制输出模块和分配指令数据输出模块,得到指令行中该类指令的分配执行结果。
二、单核运算指令分配集成
通过指令分配模块得到的是单类指令的分配输出。将运算执行核内所有类型的运算指令分配模块综合集成为一个单核分配模块,如图2为X运算核指令分配集成,主要包括: ALU(加/减法)指令分配器、MULT(乘法)指令分配器、SHIFT(移位)指令分配器、SPU(特殊运算)指令分配器、控制寄存器指令分配器、核间传输指令分配器、块浮点指令分配器以及所有分配输出的时钟寄存器。
三、访存指令(数据通道)分配集成
访存指令分配的内部实施步骤与上述情况类似,所不同的是数据通道分配需要按照读、写、立即数操作三种情况进行通道分配,以避免读写冲突。因此数据通道分配相应以上三种类别分别设置了三种不同的通道分配模块(如图3所示):
1、读访存指令分配:主要实现读访存指令由数据存储器到寄存器堆之间“读”数据通道的占用分配。
2、写访存指令分配:主要实现写访存指令由数据存储器到寄存器堆之间“写”数据通道的占用分配。
3、立即数访存指令分配:主要实现立即数访存指令对数据存储器的立即数操作通道占用分配。
四、多核指令分配
如图4所示,多核指令分配主要包括以下几个步骤:
步骤一:BWDSP100处理器的指令位宽为512位,主要包括执行核外指令和执行核内指令。执行核内指令首先经过指令分核模块,该模块接收到512位指令流,通过对指令核标志位的判断,将指令分成4个512位宽的单核指令,其中4个执行核分别命名为X核、Y核、Z核和T核。
步骤二:指令经过指令分核模块即进入到指令分类模块。并通过对指令特征位的辨识,将指令所属类别进行编码。输出一个与指令行指令逐条对应的类别码。如果指令行某条指令为空,则对应的类别码约定为0。指令分类模块又包括核外指令分类和核内指令分类。其中核外指令分类主要针对访存指令的读、写及立即数指令进行操作;核内指令的分类模块所分类的指令主要有算数逻辑单元(ALU)、乘法器(MULT)、移位器(SHIF)、特殊运算单元(SPU)、控制寄存器、核间传输指令和块浮点运算指令等。
步骤三:经过上述处理后的指令进入到指令分配阶段,相应地将经过步骤二处理后的两路分支——执行核内的单核指令分类结果和执行核外的访存指令分类结果,分别输入到X/Y/Z/T单核指令分配模块或者执行核外的访存指令分配模块,从而得到指令分配的输出结果,包括控制输出、数据输出和寄存器堆资源占用标志输出。
步骤四:每个执行核内设置一个选择器,将所有单核指令分配集成模块、核外指令分配模块、数据通道(访存指令)分配模块的输出经过相应的时钟寄存器并综合输入核间分配选择器,实现核间传输通道交叉占用以及核内外的寄存器堆资源占用的标志选择输出。
步骤五:最后将选择器的输出结果与指令分配输出结果经过多核指令分配集成模块输出整个高性能通用信号处理器芯片的综合分配输出结果。
Claims (7)
1.高性能通用信号处理器指令分配装置,其特征包括:
指令分核模块——用于将接收的指令分成4个512位针对不同运算执行核的指令行;
指令分类模块——用于根据指令分核模块的分类情况,将指令行并行分类,并输出类别标志位;
指令分配模块——用于将指令合理分配到相应的运算执行单元,或者将数据分配至相应的数据传输通道;
多核指令分配集成模块——用于将不同运算执行核的分配电路设计集成为一个整体模块,输出最终分配结果;
所述的指令分配模块包括:
自动分配模块——用于对未特别指明具体运算执行单元编号的指令,自动查找空运算执行单元并自动选择分配,或者将传输数据自动分配到数据传输通道;
指定分配模块——用于对特别指定具体运算执行单元编号的指令,查找指定冲突的情况,对其指定编号的运算执行单元进行保留并输出该指令的对应分配编号及优先顺序;
优先级选择模块——用于在同类指令的不同微操作之间,根据优先级定义的顺序,依次按照优先选择权进行分配编号输出;
组合选择模块——用于综合指定分配和自动分配模块的输出情况,快速选择输出与指令分配所对应的运算执行单元编号,同时输出传输数据所对应的分配通道编号,对可以并行占用运算执行单元的指令优先输出,不能并行占用运算执行单元的指令进入重新调度选择器,选择后输出;
分配指令控制输出模块——按照分配编号的情况,用于将分配指令与运算执行单元或者数据通道一一对应,输出分配指令执行需要的所有控制信号;
分配指令数据输出模块——用于在分配指令与运算执行单元或者数据通道一一对应的情况下,输出分配指令执行需要的所有数据信号;
寄存器堆资源占用输出模块——根据指令与数据通道对应的分配结果,用于输出指令占用寄存器堆资源的标志选择信号。
2.根据权利要求1所述的高性能通用信号处理器指令分配装置,其特征在于:所述的指令行包括:加/减法运算、乘法运算、移位操作、位域操作、赋值操作、逻辑运算、选大或选小处理、访存指令、数据传输指令、双字指令、控制寄存器读写指令、核间传输指令、条件跳转指令、气泡指令、陷阱指令、子程序调用指令、返回指令和零开销循环指令。
3.根据权利要求2所述的高性能通用信号处理器指令分配装置,其特征在于:所述指令行为512bit,可以包括1到16条32bit的单字指令,或者最多4条64bit的双字指令加8条32bit的单字指令。
4.根据权利要求2所述的高性能通用信号处理器指令分配装置,其特征在于:所述的每种指令行对应一个或多个运算执行单元,该指令行可以指定其中的任意一个,或者指定其中的某几个运算执行单元来执行运算,也可以不指定任何运算执行单元,运算执行单元或者传输通道的数目可以为1个到8个不等。
5.根据权利要求4所述的高性能通用信号处理器指令分配装置,其特征在于:所述的指令,在指定运算执行单元时,指令分配模块将该指令分配至指定的运算单元执行运算;在非指定运算执行单元的情况下,指令分配模块能够自动分配一个空的相应的运算执行单元来执行该指令。
6.根据权利要求4所述的高性能通用信号处理器指令分配装置,其特征在于:所述指令可以由单个或者多个运算执行核同时执行,分配时会根据指令行中所包含的各个运算执行核的指令综合情况进行分配。
7.根据权利要求1所述的高性能通用信号处理器指令分配装置,其特征在于:所述指令分配模块可以占用1到2级流水线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100513102A CN102117197B (zh) | 2011-03-04 | 2011-03-04 | 高性能通用信号处理器指令分配装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100513102A CN102117197B (zh) | 2011-03-04 | 2011-03-04 | 高性能通用信号处理器指令分配装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102117197A CN102117197A (zh) | 2011-07-06 |
CN102117197B true CN102117197B (zh) | 2012-08-15 |
Family
ID=44215980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100513102A Active CN102117197B (zh) | 2011-03-04 | 2011-03-04 | 高性能通用信号处理器指令分配装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102117197B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10270709B2 (en) | 2015-06-26 | 2019-04-23 | Microsoft Technology Licensing, Llc | Allocating acceleration component functionality for supporting services |
CN104572020B (zh) * | 2014-12-31 | 2017-03-15 | 中国电子科技集团公司第三十八研究所 | 一种寄存器堆分页式扩展装置及其实现方法 |
US9792154B2 (en) | 2015-04-17 | 2017-10-17 | Microsoft Technology Licensing, Llc | Data processing system having a hardware acceleration plane and a software plane |
US10511478B2 (en) * | 2015-04-17 | 2019-12-17 | Microsoft Technology Licensing, Llc | Changing between different roles at acceleration components |
US10198294B2 (en) | 2015-04-17 | 2019-02-05 | Microsoft Licensing Technology, LLC | Handling tenant requests in a system that uses hardware acceleration components |
CN104914436A (zh) * | 2015-05-29 | 2015-09-16 | 安徽四创电子股份有限公司 | 基于魂芯一号的通用天气雷达信号处理器及处理三脉冲信号的方法 |
US10216555B2 (en) | 2015-06-26 | 2019-02-26 | Microsoft Technology Licensing, Llc | Partially reconfiguring acceleration components |
US11106467B2 (en) * | 2016-04-28 | 2021-08-31 | Microsoft Technology Licensing, Llc | Incremental scheduler for out-of-order block ISA processors |
CN109583577B (zh) * | 2017-09-29 | 2021-04-23 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
CN108052347B (zh) * | 2017-12-06 | 2021-07-20 | 北京中科睿芯智能计算产业研究院有限公司 | 一种执行指令选择的装置、方法及指令映射方法 |
CN115237374A (zh) * | 2021-04-22 | 2022-10-25 | 华为技术有限公司 | 芯片、处理数据的方法和计算机设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901130A (zh) * | 2010-07-26 | 2010-12-01 | 清华大学 | 一种指令分配和预处理指令译码的装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100541421C (zh) * | 2001-11-26 | 2009-09-16 | Nxp股份有限公司 | 由专用指令配置的处理器和用于这种处理器的分配方法 |
-
2011
- 2011-03-04 CN CN2011100513102A patent/CN102117197B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901130A (zh) * | 2010-07-26 | 2010-12-01 | 清华大学 | 一种指令分配和预处理指令译码的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102117197A (zh) | 2011-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102117197B (zh) | 高性能通用信号处理器指令分配装置 | |
US11675598B2 (en) | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue | |
US11868163B2 (en) | Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11915057B2 (en) | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11675734B2 (en) | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11573796B2 (en) | Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11531543B2 (en) | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric | |
US11567766B2 (en) | Control registers to store thread identifiers for threaded loop execution in a self-scheduling reconfigurable computing fabric | |
US9158575B2 (en) | Multithreaded processor array with heterogeneous function blocks communicating tokens via self-routing switch fabrics | |
CN107229463B (zh) | 计算设备和相应计算方法 | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
US20230153258A1 (en) | Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric | |
US20160342418A1 (en) | Functional unit having tree structure to support vector sorting algorithm and other algorithms | |
US20220261365A1 (en) | Instrumentation Networks for Data Flow Graphs | |
CN105512179A (zh) | 硬件实现的数据排序装置、方法及数据处理芯片 | |
WO2016119521A1 (en) | Asynchronous multiple-core processor | |
CN101366004A (zh) | 用于带有专用线程管理的多核处理的方法和设备 | |
CN104778025B (zh) | 基于随机访问存储器的先入先出存储器的电路结构 | |
US20160239461A1 (en) | Reconfigurable graph processor | |
CN105183698A (zh) | 一种基于多核dsp的控制处理系统和方法 | |
US20080320240A1 (en) | Method and arrangements for memory access | |
CN104731561A (zh) | 在simd处理单元中的任务执行 | |
US7716458B2 (en) | Reconfigurable integrated circuit, system development method and data processing method | |
CN111767121B (zh) | 运算方法、装置及相关产品 | |
EP2759927B1 (en) | Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191010 Address after: 5 / F, airborne center, 38 new area, No. 199, Xiangzhang Avenue, hi tech Zone, Hefei City, Anhui Province 230000 Patentee after: Anhui core Century Technology Co., Ltd. Address before: 230088, 199, camphor Road, hi tech Zone, Anhui, Hefei Patentee before: No.38 Inst., China Electronic Sci. & Tech. Group Co. |
|
TR01 | Transfer of patent right |