CN102622206A - 一种处理器及其处理数据的方法 - Google Patents
一种处理器及其处理数据的方法 Download PDFInfo
- Publication number
- CN102622206A CN102622206A CN2011100306935A CN201110030693A CN102622206A CN 102622206 A CN102622206 A CN 102622206A CN 2011100306935 A CN2011100306935 A CN 2011100306935A CN 201110030693 A CN201110030693 A CN 201110030693A CN 102622206 A CN102622206 A CN 102622206A
- Authority
- CN
- China
- Prior art keywords
- register cell
- processor
- register
- data
- indication
- 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
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种处理器及其处理数据的方法,所述处理器包括:编译器,用于编译寄存器单元与内存关系指示并输出至Load/Store单元;Load/Store单元,用于根据所述寄存器单元与内存关系指示,将执行程序块所需数据加载到寄存器单元,并将执行结果数据存入存储器;寄存器单元组,包括多个寄存器单元,用于将执行程序块所需数据输出至运算单元,并接收所述运算单元反馈的执行结果数据。本发明所述处理器不再占用超长指令字的空间与处理器运行的时间,同时可以减少处理器因为与存储器进行数据交互而导致的处理器流水暂停的时间开销。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种处理器及其处理数据的方法。
背景技术
目前,通用的处理器,例如RSIC与DSP处理器,都是采用了专门的存储指令,这些指令既占用了宝贵的超长指令字的空间,也占用了处理器运行的时间。而且在某些情况下,如存储指令的地址cache未命中时,处理器流水线会停止等待数据存储完成,也增加了处理时间的开销。
发明内容
本发明提供一种处理器及其处理数据的方法,用以解决现有技术中处理器存储指令字占用空间及运行时间的问题。
具体的,本发明提供的一种处理器,包括:
编译器,用于编译寄存器单元与内存关系指示并输出至Load/Store单元;
Load/Store单元,用于根据所述寄存器单元与内存关系指示,将执行程序块所需数据加载到寄存器单元;将执行结果数据存入存储器;
寄存器单元组,包括多个寄存器单元,用于将执行程序块所需数据输出至运算单元,并接收所述运算单元反馈的执行结果数据。
所述处理器中,所述编译器将所述程序块顺序划分为与各寄存器单元对应的多个子程序块,并编译出各寄存器单元与内存间的指示关系。
其中,所述寄存器单元与内存关系指示包括:执行程序块对应的寄存器单元指示、寄存器指示、以及存储器地址指示。
其中,所述存储器地址的格式包括下述格式中的一种:存储器的绝对地址、保存存储器绝对地址的寄存器地址、以及等于基址寄存器地址加上地址偏移的存储器绝对地址。
所述处理器中,Load/Store单元在某子程序块被执行时,将执行相邻的上一个子程序块的执行结果数据存入所述存储器,将相邻的下一个子程序块所需数据加载到对应的寄存器单元。
进一步的,所述处理器中,程序块包括循环程序块和非循环程序块;其中,所述循环程序块划分子程序块的方式包括:
判定所述循环程序块内单次循环语句是否在设定的语句个数以上,若是,将单次循环语句划分出多个子程序块;否则,进行循环展开,将循环展开后的程序块划分出多个子程序块。
其中,所述子程序块的划分基准为:执行所述子程序块所需的数据小于等于一个寄存器单元的存储空间大小所对应的程序序列。
进一步的,所述处理器还包括:
第一多路选择器,用于传递Load/Store单元和寄存器单元组间交互的数据;
第二多路选择器,用于传递所述寄存器单元组与运算单元间交互的数据。
本发明还提供一种处理器处理数据的方法,包括:
Load/Store单元根据编译器发送的寄存器单元与内存关系指示,将执行程序块所需数据加载到对应的寄存器单元;
寄存器单元将执行程序块所需数据输出至运算单元,并接收所述运算单元反馈的执行结果数据;
Load/Store单元根据所述寄存器单元与内存关系指示,将所述执行结果数据存入存储器。
所述方法中,编译器将所述程序块顺序划分为与各寄存器单元对应的多个子程序块,并编译出各寄存器单元与内存间的指示关系。
其中,所述寄存器单元与内存关系指示包括:处理程序块对应的寄存器单元指示、寄存器指示、以及存储器地址指示。
与现有技术相比,本发明有益效果如下:
本发明所述的处理器,使得Load/Store指令不再占用超长指令字的空间与处理器运行的时间,同时可以减少处理器因为与存储器进行数据交互而导致的处理器流水暂停的时间开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种处理器的结构示意图;
图2为本发明实施例提供的一种处理器的结构示意图;
图3为本发明中寄存器单元与内存关系指示格式图;
图4为本发明提供的一种处理器处理数据的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中存在的问题,本发明提供一种处理器及其处理数据的方法,所述处理器无需存储指令,将自动交互的思想引入处理器的Load/Store(存/取)部件,数据在寄存器与存储器之间的交互由Load/Store部件自动完成,既可以使Load/Store指令不再占用超长指令字的空间与处理器运行的时间,也可以减少处理器因为与存储器进行数据交互而导致的处理器流水暂停的时间开销。
如图1所示,为本发明提供的一种处理器的结构示意图,所述处理器包括:
编译器,用于编译寄存器单元与内存关系指示并输出至Load/Store单元;
Load/Store单元,用于根据所述寄存器单元与内存关系指示,将执行程序块所需数据从存储器中加载到寄存器单元,并将从寄存器单元内提取的对应执行结果数据存入存储器;
其中,执行程序块所需数据举例说明为:当程序块中某一程序语句为数据1×数据2,其中的数据1、2即执行程序块所需的数据,需要从存储器(即内存)中提取。
寄存器单元组,包括多个寄存器单元,用于将执行程序块所需数据输出至运算单元,并接收所述运算单元反馈的执行结果数据。
运算单元,用于执行接收到的程序块,并反馈执行结果;具体的,运算单元向发送程序块的寄存器单元反馈执行结果。
其中,编译器将所述程序块顺序划分为与各寄存器单元对应的多个子程序块,并编译出各寄存器单元与内存间的指示关系。
所述Load/Store单元在某子程序块被执行时,将执行相邻的上一个子程序块的执行结果数据存入所述存储器,将相邻的下一个子程序块所需数据加载到对应的寄存器单元。
本发明所述的处理器,使得Load/Store指令不再占用超长指令字的空间与处理器运行的时间,同时可以减少处理器因为与存储器进行数据交互而导致的处理器流水暂停的时间开销。
下面根据图2~图3给出本发明一个较佳的实施例,并结合对实施例的描述,进一步给出本发明的技术细节,使其能够更好地说明本发明所述处理器的具体实现过程。
本发明所述处理器为了实现无需存储指令的数据处理,需要对传统处理器做改进,主要表现在:第一,增设两套或多套数据寄存器单元(每套寄存器单元内包括多个寄存器);第二,编译器在编译时候将充分使用各套寄存器单元,编译器需要编译出寄存器单元与内存关系指示;第三,需要有增强功能的Load/Store单元,即Load/Store单元可以根据编译器编译出的寄存器单元与内存关系指示进行工作。
结合上述原理,下面通过一个实施例来详细说明本发明的具体实现过程,为了方便、清楚的描述本发明,下述实施例以两套寄存器单元为例进行说明:
如图2所示,本实施例提供的无需存储指令处理器,包括:两套寄存器单元、编译器、Load/Store单元和运算单元;优选的,处理器通过第一多路选择器(MUX)完成运算单元与寄存器单元组间的通信;通过第二多路选择器(MUX)完成Load/Store单元与寄存器单元组间的通信。
具体的,所述处理器在硬件上有两套寄存器单元支持,在某一时刻,第一套寄存器单元作为运算单元的输入,Load/Store单元将第二套寄存器单元存储的执行结果数据存入存储器,实现第二套寄存器单元与存储器的交互。在第一套寄存器单元完成对运算单元输入且第二套寄存器单元完成与存储器交互之后,第一套寄存器单元与第二套寄存器单元功能互换,即将第二套寄存器单元作为运算单元输入,第一套寄存器单元与存储器交互。
编译器,用于编译生成寄存器单元与内存关系指示;
具体的,编译器在编译时候将充分使用两套寄存器单元。对于程序块需要将程序划分为多个子程序块;本实施例中,将各子程序块划分为A类子程序块与B类子程序块交错;其中,A类子程序块使用一套寄存器单元,B类子程序块使用另一套寄存器单元。Load/Store单元在A类子程序块执行同时,需要将上一个B类子程序块的寄存器数据(即执行上一个B类子程序块得到的执行结果数据)存入存储器,然后将下一个B类子程序块中所使用的寄存器的数据加载进来。为完成上述功能,编译器需要编译出寄存器单元与内存关系指示,Load/Store单元将根据这些关系指示自动完成寄存器单元与存储器间数据的交互。
同理,当存在多套寄存器单元的情况下,处理方式相同,例如,将程序块划分为n个子程序块(N1,N2,N3,...Nn),将各子程序块分别与各寄存器单元对应分类,假设存在4个寄存器单元,且n大于4,则将子程序块分类表示为:N1(A)、N2(B)、N3(C)、N4(D)、N5(A)、N6(B)...,依此类推,其中,A、B、C、D类子程序块分别对应着四个寄存器单元。
在这种多套寄存器单元的情况下,Load/Store单元在A类子程序块执行同时,需要将上一个D类子程序块的寄存器数据存入存储器,然后将下一个B类子程序块所使用的寄存器数据加载进来,依此类推。
如图3所示,给出了本发明中寄存器单元与内存关系指示格式示意图,所述寄存器单元与内存关系指示至少包括:寄存器单元指示标识、寄存器单元中的寄存器指示标识、以及存储器地址指示标识信息。其中,存储器地址指示可以是以下几种格式中的一种:存储器绝对地址;保存存储器绝对地址的寄存器地址;基址寄存器地址与地址偏移,存储器绝对地址等于基址寄存器地址加上地址偏移。
Load/Store单元,根据编译器编译出的寄存器单元与内存关系指示进行工作,具体表现为:在A类子程序块执行同时,Load/Store单元需要将上一个B类子程序块的寄存器数据存入存储器,然后将下一个B类子程序块中所使用的寄存器的数据加载进来。同理,在B类子程序块执行同时,Load/Store单元需要将上一个A类子程序块的寄存器数据存入存储器,然后将下一个A类子程序块中所使用的寄存器的数据加载进来。
需要说明的是,本发明实施例中,编译器进行子程序块划分优选的采用如下方式进行划分:执行所述子程序块所需的数据等于一个寄存器单元的存储空间大小所对应的程序序列。
然而,当程序块为循环程序块且包含的语句较少时,所述子程序块划分方式可以为:执行所述子程序块所需的数据小于一个寄存器单元的存储空间大小所对应的程序序列。
对于循环程序块,具体表现为:
判断单次循环内语句是否较多(语句是否够多可以自行设定判断阈值),如果单次循环内语句比较多,能够划分出A类子程序块与B类子程序块,则可采用对单次循环划分的方式;如果单次循环内语句不够多,可以采用如下方式解决问题:首先,进行循环展开;然后,对循环展开后的程序进行子程序块划分;其中,对于循环展开的情况,由于语句不多,所以划分的子程序块所需数据的大小可能小于一个寄存器单元的存储空间大小,若是这种情况,将分别交替发送给两套寄存器单元的子程序块命名为小A类子程序块和小B类子程序块,小A类与小B类子程序块没有完整的使用第一套或第二套寄存器单元,只是部分的使用了第一套或第二套寄存器单元。
综上所述,本发明所述的处理器使得Load/Store指令不再占用超长指令字的空间与处理器运行的时间,同时可以减少处理器因为与存储器进行数据交互而导致的处理器流水暂停的时间开销。
如图4所示,本发明还提供一种处理器处理数据的方法,包括:
步骤S401、Load/Store单元根据编译器发送的寄存器单元与内存关系指示,将执行程序块所需数据加载到对应的寄存器单元;
步骤S402、寄存器单元将执行程序块所需数据输出至运算单元,并接收所述运算单元反馈的执行结果数据;
步骤S403、Load/Store单元根据所述寄存器单元与内存关系指示,将所述执行结果数据存入存储器。
其中,步骤S401中,编译器将程序块顺序划分为与各寄存器单元对应的多个子程序块,并编译出各寄存器单元与内存间的指示关系。
所述方法中,寄存器单元与内存关系指示包括:处理程序块对应的寄存器单元指示、寄存器指示、以及存储器地址指示。
进一步的,所述步骤S401中,Load/Store单元根据所述寄存器单元与内存关系指示,在某子程序块被执行时,将相邻的下一个子程序块所需数据加载到对应的寄存器单元;
进一步的,所述步骤S403中,Load/Store单元根据所述寄存器单元与内存关系指示,在某子程序块被执行时,将执行相邻的上一个子程序块的执行结果数据存入所述存储器。当然,对于处理器初始处理的第一个子程序块,由于不存在在先执行的子程序块,所以不存储执行结果数据到存储器这一操作,而仅将相邻的下一个子程序块所需数据加载到对应的寄存器单元。然而,即使存储执行结果数据的情况下,存储的数据也为空,不影响后续数据的存储。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种处理器,其特征在于,包括:
编译器,用于编译寄存器单元与内存关系指示并输出至Load/Store单元;
Load/Store单元,用于根据所述寄存器单元与内存关系指示,将执行程序块所需数据加载到寄存器单元;将执行结果数据存入存储器;
寄存器单元组,包括多个寄存器单元,用于将执行程序块所需数据输出至运算单元,并接收所述运算单元反馈的执行结果数据。
2.如权利要求1所述的处理器,其特征在于,
所述寄存器单元与内存关系指示包括:执行程序块对应的寄存器单元指示、寄存器指示、以及存储器地址指示。
3.如权利要求1或2所述的处理器,其特征在于,所述编译器将所述程序块顺序划分为与各寄存器单元对应的多个子程序块,并编译出各寄存器单元与内存间的指示关系。
4.如权利要求2所述的处理器,其特征在于,所述存储器地址的格式包括下述格式中的一种:存储器的绝对地址、保存存储器绝对地址的寄存器地址、以及等于基址寄存器地址加上地址偏移的存储器绝对地址。
5.如权利要求3所述的处理器,其特征在于,
所述Load/Store单元在某子程序块被执行时,将执行相邻的上一个子程序块的执行结果数据存入所述存储器,将相邻的下一个子程序块所需数据加载到对应的寄存器单元。
6.如权利要求3所述的处理器,其特征在于,所述程序块包括循环程序块和非循环程序块;其中,所述循环程序块划分子程序块的方式包括:
判定所述循环程序块内单次循环语句是否在设定的语句个数以上,若是,将单次循环语句划分出多个子程序块;否则,进行循环展开,将循环展开后的程序块划分出多个子程序块。
7.如权利要求6所述的处理器,其特征在于,
所述子程序块的划分基准为:执行所述子程序块所需的数据小于等于一个寄存器单元的存储空间大小所对应的程序序列。
8.如权利要求1所述的处理器,其特征在于,还包括:
第一多路选择器,用于传递Load/Store单元和寄存器单元组间交互的数据;
第二多路选择器,用于传递所述寄存器单元组与运算单元间交互的数据。
9.一种如权1所述处理器处理数据的方法,其特征在于,包括:
Load/Store单元根据编译器发送的寄存器单元与内存关系指示,将执行程序块所需数据加载到对应的寄存器单元;
寄存器单元将执行程序块所需数据输出至运算单元,并接收所述运算单元反馈的执行结果数据;
Load/Store单元根据所述寄存器单元与内存关系指示,将所述执行结果数据存入存储器。
10.如权利要求9所述的方法,其特征在于,所述寄存器单元与内存关系指示包括:处理程序块对应的寄存器单元指示、寄存器指示、以及存储器地址指示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100306935A CN102622206A (zh) | 2011-01-28 | 2011-01-28 | 一种处理器及其处理数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100306935A CN102622206A (zh) | 2011-01-28 | 2011-01-28 | 一种处理器及其处理数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102622206A true CN102622206A (zh) | 2012-08-01 |
Family
ID=46562137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100306935A Pending CN102622206A (zh) | 2011-01-28 | 2011-01-28 | 一种处理器及其处理数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102622206A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630728A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 使用具有不同的精度的计算器处理数据的方法和设备 |
CN106372004A (zh) * | 2015-07-24 | 2017-02-01 | 爱思开海力士有限公司 | 用于ssd控制器的可编程协议独立bar存储器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397324B1 (en) * | 1999-06-18 | 2002-05-28 | Bops, Inc. | Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file |
CN101044450A (zh) * | 2004-10-19 | 2007-09-26 | 松下电器产业株式会社 | 处理器 |
CN101601017A (zh) * | 2007-02-28 | 2009-12-09 | 学校法人早稻田大学 | 存储器管理方法、信息处理装置、程序的生成方法以及程序 |
-
2011
- 2011-01-28 CN CN2011100306935A patent/CN102622206A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397324B1 (en) * | 1999-06-18 | 2002-05-28 | Bops, Inc. | Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file |
CN101044450A (zh) * | 2004-10-19 | 2007-09-26 | 松下电器产业株式会社 | 处理器 |
CN101601017A (zh) * | 2007-02-28 | 2009-12-09 | 学校法人早稻田大学 | 存储器管理方法、信息处理装置、程序的生成方法以及程序 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630728A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 使用具有不同的精度的计算器处理数据的方法和设备 |
CN106372004A (zh) * | 2015-07-24 | 2017-02-01 | 爱思开海力士有限公司 | 用于ssd控制器的可编程协议独立bar存储器 |
CN106372004B (zh) * | 2015-07-24 | 2020-08-11 | 爱思开海力士有限公司 | 用于ssd控制器的可编程协议独立bar存储器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672035B2 (en) | Data processing apparatus and method for performing vector processing | |
CN103221938B (zh) | 移动数据的方法和装置 | |
EP1023659B1 (en) | Efficient processing of clustered branch instructions | |
CN101799760B (zh) | 生成任意目标架构的并行单指令多数据代码的系统和方法 | |
CN102004719B (zh) | 支持同时多线程的超长指令字处理器结构 | |
CN103809936A (zh) | 编译或运行时执行分叉-合并数据并行程序的系统和方法 | |
CN101329622A (zh) | 微处理器以及宏指令执行方法 | |
CN104995599A (zh) | 使用硬件与软件组合的路径概况分析 | |
CN101344842A (zh) | 多线程处理器及其多线程处理方法 | |
CN106575220B (zh) | 多个经集群极长指令字处理核心 | |
Li et al. | Warp-consolidation: A novel execution model for gpus | |
CN111078394B (zh) | 一种gpu线程负载均衡方法与装置 | |
CN102708009A (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
CN102279729B (zh) | 动态可重构阵列调用配置信息的方法、缓存器和处理器 | |
WO2017016255A1 (zh) | 微引擎的多发射指令并行处理方法及装置、存储介质 | |
CN100573500C (zh) | 基于Avalon总线的流处理器IP核 | |
CN108733412A (zh) | 一种运算装置和方法 | |
CN105094747B (zh) | 基于smt的中央处理单元以及用于检测指令的数据相关性的装置 | |
CN102622206A (zh) | 一种处理器及其处理数据的方法 | |
US20140013087A1 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
CN115437691B (zh) | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 | |
CA2420785C (en) | Computer system for processing instructions each containing a group of operations to be executed out of order | |
CN202133997U (zh) | 一种数据的重排装置 | |
US20080082791A1 (en) | Providing temporary storage for contents of configuration registers | |
US8510539B2 (en) | Spilling method involving register files based on communication costs and use ratio |
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: 20120801 |