CN100456231C - 灵活分配运算群资源的流处理器扩展方法 - Google Patents
灵活分配运算群资源的流处理器扩展方法 Download PDFInfo
- Publication number
- CN100456231C CN100456231C CNB2007100345740A CN200710034574A CN100456231C CN 100456231 C CN100456231 C CN 100456231C CN B2007100345740 A CNB2007100345740 A CN B2007100345740A CN 200710034574 A CN200710034574 A CN 200710034574A CN 100456231 C CN100456231 C CN 100456231C
- Authority
- CN
- China
- Prior art keywords
- microcontroller
- stream
- array
- group
- arithmetic
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种灵活分配运算群资源的流处理器扩展方法,其步骤为:(1)设置微控制器阵列,微控制器阵列由两个或两个以上的微控制器组成,在流寄存器文件SRF中,为微控制器阵列中的每一个微控制器增加一个读流的接口,各微控制器具有相同的结构以及与流控制器相同的接口,都可以在流控制器的控制下启动执行一个核级程序;(2)设置微控制器阵列中微控制器与运算群的接口;(3)设置流控制器,在流控制器上增加与各个微控制器的接口;(4)设置流控制器中的流指令Clusterop,令一个核级程序只在一个微控制器和部分运算群上执行,保证在运算群资源许可的前提下,使多个微控制器同时执行核级程序。本发明可以并行执行多个核级程序、灵活分配计算资源、加速流数据处理。
Description
技术领域
本发明主要涉及到面向流应用的流处理器体系结构设计领域,特指一种灵活分配运算群资源的流处理器扩展方法。
背景技术
以浮点运算和图像处理为代表的流应用的主要特点是计算密集性,并行性以及局域性。流处理就是针对流应用的上述特征进行的特殊处理,其本质思想是将计算过程分解,使得数据的运算和存取相互分离,将数据进行分块处理,设置多个并行计算单元处理分块数据,各计算单元之间进行显式通讯。具有上述特征的新型体系结构的处理器称为流处理器。
典型的流处理器的架构是开发应用中的数据并行性,采用多个运算群,以SIMD的方式在不同的数据集上执行相同的指令。图1给出了美国斯坦福大学的Imagine处理器的体系结构。流处理器上执行的程序分为两个层次,流级程序和核级程序。流级程序是指针对整个流的操作,包括流数据的存取和启动核级操作。两类主要的流指令是存取指令和核级操作。流的存取指令是指将一个完整的流从外部存储器取到SRF,或者将一个完整的流从SRF存到外部存储器。在硬件资源足够时,多个流存储器传输可以并发执行。核级操作是在输入流集合进行运算,产生一个或多个输出流。核级操作是在数据并行的算术运算群上执行,每个运算群在独立的流单元上执行相同的操作序列。流缓冲器(SB)的作用是使SRF的单端口在所有接口之间可以分时复用。使得SRF看上去有很多的逻辑端口。微控制器是核级控制器,负责接受从流级传来的参数和控制信号,加载核级程序的微代码并存储在微控制器的指令存储器中,最重要的是控制核级程序在运算群中的执行。
在实际应用中,大部分的流应用并不是非常规则的计算,特别是在计算规模和并行度上并不一致,例如,运算群阵列中的运算群数目是固定的,但是可以并行的计算操作并不总是与运算群的数目一致。这导致的一个问题就是,某些运算群会在某段时间内处于闲置状态,如果存在多个微控制器,这些闲置的运算群就能利用起来,从而可以实现并行执行多个核级程序,因此我们的设计思路就是设置多个微控制器,形成一个控制器阵列,再加上原有的运算群阵列,通过交换开关实现两个阵列的数据连接。这样扩展的流处理器可以更加灵活的支持更为广泛的应用。
本领域中针对流处理器的体系结构扩展有以下两类方法:单核心扩展和多核心扩展,单核心扩展如在运算群中增加FPGA模块作为可配置单元,以及变更运算群中的算术单元的类型和数量,将集中式流寄存器文件改变为分布式寄存器文件等。单核心扩展可以结合不同的应用类型,提供量体裁衣式的运算资源。多核心扩展如在流处理器内部设置多个完全同构的流处理核,每一个流处理核由一个微控制器和多个运算群组成,集中式SRF改变为分布式SRF等等。但是这种改进并不是很灵活,在某些情况下有可能造成严重浪费运算资源。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种可以并行执行多个核级程序、灵活分配计算资源、加速流数据处理的灵活分配运算群资源的流处理器扩展方法。
为解决上述技术问题,本发明提出的解决方案为:一种灵活分配运算群资源的流处理器扩展方法,其特征在于步骤为:
(1)设置微控制器阵列,微控制器阵列由两个或两个以上的微控制器组成,在流寄存器文件中,为微控制器阵列中的每一个微控制器增加一个读流的接口,每个微控制器具有相同的结构以及与流控制器相同的接口,都可以在流控制器的控制下启动执行一个核级程序,;
(2)设置微控制器阵列中微控制器与运算群的接口;
(3)设置流控制器,在流控制器上增加与各个微控制器的接口;
(4)设置流控制器中的流指令Clusterop,通过在Clusterop指令中增加一个10位的执行体位域,指明执行核级程序的微控制器号以及运算群号,令一个核级程序只在一个微控制器和部分运算群上执行,保证在运算群资源许可的前提下,使多个微控制器同时执行核级程序。
所述微控制器阵列中微控制器与运算群阵列采用全交叉互连方式,每一个微控制器都可以连接并控制任意一个运算群。
所述微控制器阵列中微控制器与运算群阵列采用独立连接方式,每一个微控制器只能控制部分运算群,每个运算群只能受控于一个特定的微控制器。
所述微控制器阵列中微控制器的数目为2~4个。
与现有技术相比,本发明的优点就在于:本发明的灵活分配运算群资源的流处理器扩展方法,通过灵活配置每个微控制器所支配的运算群的数目,达到充分利用运算资源,支持多个核级程序并行执行的目的,实现节约资源的多核扩展。经过改进后的流处理器可以并行执行核级程序,加速流数据的处理,这是现有技术中的流处理器是做不到的,而且还可以按需要灵活分配流处理器中的运算群资源,处理不同规模的流应用,扩大流处理器的应用范围。改进后的流处理器是一种异构多核的微处理器,可以作为基本模块搭建支持大规模并行流应用的计算平台。
附图说明
图1为经典流处理器的体系结构示意图;
图2为包含微控制器阵列流处理器的框架结构示意图;
图3为本发明的流程示意图;
图4为微控制器阵列与流寄存器文件连接方式的示意图;
图5为微控制器阵列与运算群阵列全交叉连接控制方式的示意图;
图6为微控制器阵列与运算群阵列独立连接控制方式的示意图;
图7为微控制器阵列与流控制器连接方式的示意图;
图8为原来的Clusterop指令格式;
图9为扩展后的Clusterop的指令格式。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
参见图1所示的经典流处理器的体系结构图。一个经典的流处理器包含一个流控制器,一个微控制器,一个流寄存器文件,一个运算群阵列,一个流存储系统,一个网络接口,一个主机接口。流控制器负责流级程序的译码和执行,它负责管理和调配流处理器中的所有计算资源;微控制器的任务是接受流控制器的指令,主要在运算群阵列上执行核级程序,微控制器所执行的核级指令来自于流寄存器文件;流寄存器文件是流处理器中的数据缓存结构,它接受流控制器的指令,负责向微控制器供应核级程序,与运算群进行数据传输,与流存储系统进行数据传输。运算群阵列是流处理器中的运算单元,每个运算群都包含加法器,乘法器和除法以及平方根,通信单元,运算群阵列中的每个运算群执行相同的核级指令。网络接口负责流处理器芯片之间的高速互联,主机接口为流处理器面向主机的接口,主机可以是芯片内的核,也可以是芯片外的处理器核,负责将发送流处理任务到流处理器。
参见图3所示,本发明的流程示意图。首先,将微控制器扩展成微控制器阵列,由原来的1个微控制器变化为2~4个微控制器;然后我们在流寄存器文件SRF中,为微控制器阵列中的每一个微控制器增加一个读流的接口;然后修改微控制器与运算群的接口,微控制器阵列与运算群阵列有两种连接方式,一种是全交叉互连,即每一个微控制器都可以连接并控制任意一个运算群,见图5;一种是独立连接方式,即每一个微控制器只能控制部分运算群,每个运算群只能受控于一个特定的微控制器,见图6。同时,修改流控制器,除了增加与各个微控制器的接口外,还要修改Clusterop指令,在流控制器中增加新的指令译码,用于译码修改后的Clusterop指令。其详细的步骤为:
第一步,将微控制器的数量增加到n(n=2,4等)个,形成微控制器阵列,每一个微控制器有一个唯一的编号,以便于流控制器进行资源管理和资源冲突检查。微控制器阵列中微控制器的个数不宜太多,太多的微控制器会导致微控制器阵列和运算群阵列的连接关系过于复杂,降低流处理器的处理速度,根据流应用的特征,在较佳实施例中,设置2到4个微控制器是合适的,这样可以同时执行2到4个核级程序,满足大部分流应用的需求。每一个微控制器具有相同的内部结构,是相互独立的,流控制器可以将核级任务分配给任意一个微控制器(图2给出了改进后的流处理器的结构图)。
第二步,保持原来的流寄存器文件不变,为集中式SRF。为微控制器阵列中的每一个微控制器设置一个读流端口,用于传输核级程序。保持SRF为集中式SRF,不将SRF拆分为分布式SRF,是因为微控制器阵列给SRF的带宽带来的压力不大,适合现有的SRF结构。
第三步,微控制器阵列中的每一个微控制器,都与流控制器具有相同的接口。对流控制器中的指令译码器进行扩展,通过译码指令的新增位域,控制不同的微控制器执行核级程序。
第四步,微控制器阵列与运算群阵列之间可以采用多种互连方式。第一种方式,全交叉互连。微控制器阵列可以和运算群阵列进行全交叉互联,即每一个微控制器均可以控制任意一个运算群。第二种方式,独立连接控制。每一个微控制器可以控制其专有的部分运算群,运算群可以平均分配给微控制器阵列。
注意,无论何种连接方式,流编译器都会保证不出现多于一个的微控制器同时控制同一个运算群。
第五步,修改流指令Clusterop。原来的Clusterop指令的含义是指挥微控制器执行核级程序,核级程序的起始地址由mpc指出,而核级程序的输入流、输出流由sdr0-sdr7指出。通过在Clusterop指令中增加一个10位的执行体位域,指明执行核级程序的微控制器号以及运算群号,可以令一个核级程序只在一个微控制器和部分运算群上执行。这样,在运算群资源许可的前提下,就可以实现多个微控制器同时执行核级程序。
参见图2所示,依据本发明方法得到的包含微控制器阵列的流处理器,其中,经典流处理器中的微控制器由微控制器阵列所代替。与微控制器相关的其它部件只需在接口上进行少许的变化。微控制器阵列中包含2到4个微控制器,每个微控制器具有相同的结构,都可以在流控制器的控制下启动执行一个核级程序。
参见图4所示的微控制器阵列与流寄存器文件接口的示意图。阵列中的每一个微控制器都与流寄存器文件有一个读流接口。流寄存器文件为每一个微控制器分配了一个对应的流缓冲器,用于缓冲微控制器要读走的数据块。读流是指微控制器可以从流寄存器文件中读流数据,但是不可以向流寄存器文件写入流数据。微控制器从寄存器文件中读取的流数据是这个微控制器将要译码执行的核级程序代码。
参见图5所示,微控制器阵列和运算群阵列全交叉互连方式的示意图。即每一个微控制器和每一个运算群都有连接,比如微控制器0可以同时在所有4个运算群上执行核级程序,运算群1也可以在4个运算群上执行核级程序。但是流控制器保证,在同一时间内,一个运算群只能由一个微控制器使用。例如微控制器0可以控制运算群0,同时微控制器1控制运算群1,运算群2,运算群3。全交叉互连方式是最灵活的连接方式,允许编译器根据核级程序的特性,选择使用几个运算群来进行算术运算,也可以在总运算资源满足的情况下,允许多个核级程序同时执行。运算群阵列的运算群可以任意划分给不同的微控制器使用。
参见图6所示,独立连接的微控制器阵列与运算群阵列连接方式的示意图。在这种连接方式中,假设运算群的数目是4,微控制器的数目是2,则将4个运算群平均分配给2个微控制器,每个微控制器使用2个运算群。如微控制器0使用运算群0和运算群1,微控制器1使用运算群2和运算群3。在这种连接方式下,每个微控制器只和固定的几个运算群有连接,即使其它运算群是闲置的,也无法去使用。独立连接的缺点是固定连接,独立分配;优点是连接关系简单,连线少,节约芯片上的布线资源,有利于提高芯片的频率。
参见图7所示,微控制器阵列与流控制器连接方式的示意图。流控制器对微控制器阵列中的每一个微控制器都有一套与原来同样的接口;在流控制器中新增指令译码,可以译码修改后的流指令clusterop的指令格式,使流控制器可以向不同的微控制器发送正确的控制信号,调度这些微控制器执行核级程序。
参见图8所示,现有技术中流处理器的一条流指令clusterop的指令格式,这条指令用于启动微控制器和全部运算群开始执行一段核级程序。其中的sdr0~sdr7是指核级程序的输入流和输出流,最多有8个输入/输出流。而mpc指示核级程序存放的地址。
参见图9所示,扩展后的流处理器的流指令clusterop的指令格式,这条指令用于启动一个微控制器和部分运算群开始执行该微控制器中的一段核级程序。与原来的指令相同的是,其中的sdr0~sdr7是指核级程序的输入和输出,最多有8个输入/输出流。而mpc指示核级程序存放的地址。增加的位域是执行体,执行体包括10位,其中的高2位表示微控制器号,低8位表示运算群。微控制器号为零时表示核级程序由微控制器0执行,为1时表示核级程序由微控制器1执行。8位表示运算群的信号,其中的每一位代表一个运算群,该位为1表示标号为此顺序号的运算群参与执行核级程序。例如11110000表示运算群4,运算群5,运算群6和运算群7参与执行。当执行体为0111110000时,表示此次核级程序由微控制器1和运算群4,5,6,7共同执行。
Claims (4)
1、一种灵活分配运算群资源的流处理器扩展方法,其特征在于步骤为:
(1)设置微控制器阵列,微控制器阵列由两个或两个以上用来控制运算群的微控制器组成,在流寄存器文件中,为微控制器阵列中的每一个微控制器增加一个读流接口,每个微控制器具有相同的结构,各微控制器都有一个连接流寄存器文件的读流接口,在流控制器的控制下启动执行一个核级程序;
(2)设置各微控制器连接运算群的接口;
(3)设置流控制器,在流控制器上增加与各个微控制器的接口;
(4)设置流控制器中的流指令Clusterop,通过在Clusterop指令中增加一个10位的执行体位域,指明执行核级程序的微控制器号以及运算群号,令一个核级程序只在一个微控制器和部分运算群上执行,保证在运算群资源许可的前提下,使多个微控制器同时执行核级程序。
2、根据权利要求1所述的灵活分配运算群资源的流处理器扩展方法,其特征在于:所述微控制器阵列中微控制器与运算群阵列采用全交叉互连方式,每一个微控制器连接并控制任意一个运算群。
3、根据权利要求1所述的灵活分配运算群资源的流处理器扩展方法,其特征在于:所述微控制器阵列中微控制器与运算群阵列采用独立连接方式,每一个微控制器只能控制部分运算群,每个运算群只能受控于一个特定的微控制器。
4、根据权利要求1或2或3所述的灵活分配运算群资源的流处理器扩展方法,其特征在于:所述微控制器阵列中微控制器的数目为2~4个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100345740A CN100456231C (zh) | 2007-03-19 | 2007-03-19 | 灵活分配运算群资源的流处理器扩展方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100345740A CN100456231C (zh) | 2007-03-19 | 2007-03-19 | 灵活分配运算群资源的流处理器扩展方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101021781A CN101021781A (zh) | 2007-08-22 |
CN100456231C true CN100456231C (zh) | 2009-01-28 |
Family
ID=38709556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100345740A Expired - Fee Related CN100456231C (zh) | 2007-03-19 | 2007-03-19 | 灵活分配运算群资源的流处理器扩展方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100456231C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI789358B (zh) * | 2016-08-05 | 2023-01-11 | 大陸商上海寒武紀信息科技有限公司 | 一種能支援不同位元寬運算資料的運算單元、方法及裝置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622208B (zh) * | 2011-01-27 | 2015-06-10 | 中兴通讯股份有限公司 | 一种多核可重构处理器簇及其实现重构的方法 |
CN104102475B (zh) * | 2013-04-11 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 分布式并行任务处理的方法、装置及系统 |
CN110045698A (zh) * | 2019-04-11 | 2019-07-23 | 重庆川仪控制系统有限公司 | 一种基于dcs控制系统的控制器 |
CN110059609B (zh) * | 2019-04-12 | 2023-09-12 | 广西信路威科技发展有限公司 | 视频流图像的车辆与行人同步检测识别记录系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003008526A (ja) * | 2001-06-21 | 2003-01-10 | Sony Corp | データ処理装置 |
KR20040079097A (ko) * | 2003-03-06 | 2004-09-14 | 한국과학기술원 | 보조프로세서를 이용한 멀티미디어 처리를 위한 가속장치 |
US20060167936A1 (en) * | 2003-03-27 | 2006-07-27 | Osamu Okauchi | Data processing device |
JP2006313546A (ja) * | 2005-05-04 | 2006-11-16 | Arm Ltd | データ処理システム |
CN1885283A (zh) * | 2006-06-05 | 2006-12-27 | 中国人民解放军国防科学技术大学 | 流处理器中降低数据访问延迟的方法 |
-
2007
- 2007-03-19 CN CNB2007100345740A patent/CN100456231C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003008526A (ja) * | 2001-06-21 | 2003-01-10 | Sony Corp | データ処理装置 |
KR20040079097A (ko) * | 2003-03-06 | 2004-09-14 | 한국과학기술원 | 보조프로세서를 이용한 멀티미디어 처리를 위한 가속장치 |
US20060167936A1 (en) * | 2003-03-27 | 2006-07-27 | Osamu Okauchi | Data processing device |
JP2006313546A (ja) * | 2005-05-04 | 2006-11-16 | Arm Ltd | データ処理システム |
CN1885283A (zh) * | 2006-06-05 | 2006-12-27 | 中国人民解放军国防科学技术大学 | 流处理器中降低数据访问延迟的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI789358B (zh) * | 2016-08-05 | 2023-01-11 | 大陸商上海寒武紀信息科技有限公司 | 一種能支援不同位元寬運算資料的運算單元、方法及裝置 |
Also Published As
Publication number | Publication date |
---|---|
CN101021781A (zh) | 2007-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Abts et al. | Think fast: A tensor streaming processor (TSP) for accelerating deep learning workloads | |
CN1316402C (zh) | 处理器结构 | |
CN108268278A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
CN100456231C (zh) | 灵活分配运算群资源的流处理器扩展方法 | |
CN107341053A (zh) | 异构多核可编程系统及其内存配置和计算单元的编程方法 | |
CN103221937A (zh) | 用于处理集群的加载/存储电路 | |
CN101114273A (zh) | 在并行计算机上执行全收集操作的方法和系统 | |
CN102081556A (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
CN1983164B (zh) | 用于矢量处理的可扩展并行流水线浮点单元 | |
CN101021832A (zh) | 支持局部寄存和条件执行的64位浮点整数融合运算群 | |
CN104461970B (zh) | Dma控制器、移动终端以及数据搬运方法 | |
CN112579159A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
CN102306141B (zh) | 一种描述动态可重构阵列配置信息的方法 | |
CN100511135C (zh) | 一种单元测试系统和方法 | |
CN104111912A (zh) | 用于支持处理器的多模式的设备和方法 | |
CN102279818A (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
US20070044064A1 (en) | Processor network | |
EP3516515B1 (en) | Scheduling of tasks in a multiprocessor device | |
RU2016121724A (ru) | Архитектура параллельной вычислительной системы | |
CN112445616A (zh) | 资源分配方法以及装置 | |
CN103793208A (zh) | 矢量dsp 处理器和协处理器协同运作的数据处理系统 | |
CN101702144B (zh) | 一种dma控制器的控制装置及控制方法 | |
CN103235717B (zh) | 具有多态指令集体系结构的处理器 | |
CN101930356B (zh) | 用于浮点协处理器的寄存器文件分组编址、读写控制方法 | |
CN101727434A (zh) | 一种特定应用算法专用集成电路结构 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090128 Termination date: 20110319 |