CN101324838A - 一种指令执行方法和装置 - Google Patents
一种指令执行方法和装置 Download PDFInfo
- Publication number
- CN101324838A CN101324838A CNA2008101444625A CN200810144462A CN101324838A CN 101324838 A CN101324838 A CN 101324838A CN A2008101444625 A CNA2008101444625 A CN A2008101444625A CN 200810144462 A CN200810144462 A CN 200810144462A CN 101324838 A CN101324838 A CN 101324838A
- Authority
- CN
- China
- Prior art keywords
- variable
- summand
- instruction
- module
- result
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明实施例公开了一种指令执行方法和装置,所述方法包括:根据被加数变量的地址读取所述被加数变量;对所述被加数变量与预设值进行比较操作;所述比较操作的结果成立时,对所述被加数变量执行加操作,并将所述加操作的结果赋值给所述被加数变量;返回比较操作前的被加数变量的值。本发明实施例将比较操作和加操作结合为一条新的原子比较加操作指令,增强了并行功能,提高了执行效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种指令执行方法和装置。
背景技术
目前多核处理器蓬勃发展,应用越来越广泛,但软件的并发设计相对落后于硬件的发展,制约了多核处理器优势的发挥。软件落后的主要原因之一是,多核处理器一直未能给软件提供一整套标准且有效的并发指令集,以支持软件并发处理和设计。
当前实现的原子/并发指令有:原子加指令、原子交换指令和原子比较交换指令等。上述指令虽然都是原子的单指令,但都不能完全满足并发软件设计的需要。
发明内容
本发明实施例提供一种指令执行方法和装置,将比较操作和加操作结合为一条新的原子比较加操作指令,增强了并行功能,提高了执行效率。
为达到上述目的,本发明实施例一方面提出一种指令执行方法,包括:
根据被加数变量的地址读取所述被加数变量;
对所述被加数变量进行比较操作;
当所述比较操作的结果成立时,对所述被加数变量执行加操作,并将所述加操作的结果赋值给所述被加数变量。
返回比较操作前的所述被加数变量的值。
另一方面,本发明实施例还提出一种指令执行装置,包括:
读取模块,用于根据被加数变量的地址读取所述被加数变量;
比较模块,用于对所述读取模块所读取的被加数变量与预设值进行比较操作;
执行模块,用于当所述比较模块的比较操作的结果成立时,对所述被加数变量执行加操作,并将所述加操作的结果赋值给所述被加数变量。
返回模块,用于返回比较操作前的被加数变量。
本发明实施例的技术方案具有以下优点,因为本发明实施例将比较操作和加操作结合为一条新的原子比较加操作指令,从而,增强了并行功能,提高了执行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中指令执行方法流程图;
图2为本发明实施例中最典型的大于加,且加操作为32Bit有符号加的指令描述;
图3为本发明实施例中六种比较的助记符缩写;
图4为本发明实施例中指令执行方法的一种具体实现方式流程图;
图5为本发明实施例中指令执行方法的一种具体实现方式流程图;
图6为本发明实施例中指令执行装置结构图。
具体实施方式
本发明实施例将比较操作和加操作结合起来,形成了一个新的原子操作的单指令:原子比较加指令,并提供了执行该指令的方法和装置。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:如图1所示,为本发明实施例中指令执行方法流程图,即原子比较加指令的执行流程图,包括以下步骤:
S101、根据被加数变量的地址,从存储器中读取被加数变量的值。
S102、将被加数变量的值与预设值进行比较操作。
如果比较操作的结果成立,即上述的被加数变量的值与预设值之间确实存在上述比较操作所对应的关系,则执行S103;
如果比较操作的结果不成立,即上述的被加数变量的值与预设值之间不存在上述比较操作所对应的关系,则执行S105;
例如:比较操作具体为比较被加数变量是否大于预设值,则当被加数变量的值大于预设值时,比较操作的结果成立,当被加数变量的值不大于预设值时,比较操作的结果不成立。
比较操作分为六种,即大于,小于,大于等于,小于等于,等于,不等于。
对应这六种比较操作,本发明实施例所提出的执行指令也相应的分为六种比较加操作,即大于加,小于加,大于等于加,小于等于加,等于加,不等于加。
基于上述操作分类,在应用本发明实施例所提出的执行指令过程中,只要更换比较过程的具体内容,执行指令所对应的操作也可以产生相应的变化,因此,本发明实施例所提出的执行指令实际上是一组指令,并且该指令是原子的,单指令的。
S103,对被加数变量的值执行加操作。
S104,将加操作的结果赋值给被加数变量。
如果比较操作的结果成立,则对被加数变量的值执行加操作。
加操作也有多种类型,如有符号加、无符号加、32位加和64位加等,和系统中实际的加指令是相同的。对被加数变量的值执行加操作后,将加操作的结果赋值给被加数变量。
在此步骤中,被加数变量在存储器中的值被更新了。
S105,返回比较操作前的被加数变量的值。
如果S102的比较操作结果成立,则在S104执行完成之后,直接执行本步骤,返回比较操作前的被加数变量的值;如果S102的比较操作结果不成立,则在S102执行完成之后,直接执行本步骤,返回比较操作前的被加数变量的值。
需要进一步指出的是,在本指令执行后,即上述的S101至S104所述的原子比较加指令执行完成后,S105所返回的比较操作前的被加数变量的值,可进一步用于后续指令判断本指令是否对被加数变量进行了实际的加操作,即验证本指令的执行结果。
其中,后续指令可以是上述原子比较加指令的重复执行,从而需要通过S105返回的比较操作前的被加数变量的值,判断上述原子比较加指令前次执行是否完成;也可以是其他操作指令,需要引用被加数变量,因此,通过S105返回的比较操作前的被加数变量的值,判断上述原子比较加指令执行是否完成。
进一步的,后续指令判断本指令是否对被加数变量进行了实际的加操作,具体为:
将返回的比较操作前的被加数变量的值与预设值进行S102相同内容的比较操作。
如果比较操作的结果成立,则判断原子比较加指令对被加数变量执行了加操作。
如果比较操作的结果不成立,则判断原子比较加指令没有对被加数变量执行加操作。
需要进一步说明的是,本实施例中的S105与S104之间没有必然的先后关系,S105可以在S101执行完成之后至指令结束之前的任何时间执行,从而返回比较前的被加数变量的值,即返回S101中读取的被加数变量的值。因此,图1所示的流程示意图对应的仅是本发明的一种优选实施例,S105所处位置的变化并不影响本发明的保护范围。
S106,结束指令操作。
本发明实施例中的原子比较加指令是一组指令集,在助记符上是加和比较的组合。如图2所示,为最典型的大于加,且加操作为32Bit有符号加的指令描述。“gt”是大于的缩写。
比较操作分为六种,即大于,小于,大于等于,小于等于,等于,不等于。如图3所示,为上述六种比较的助记符缩写。
加操作也有多种类型,如有符号加、无符号加、32位加和64位加等,和系统中实际的加指令是相同的。
加操作和比较操作组合起来很多,我们选取一种典型形式用于具体解释。
原子的32Bit有符号数大于加的指令操作的格式如下:
addgt Ra,Rb,Rc
其中,上述的Ra、Rb和Rc是三个通用32bit寄存器。
如图4所示,为本发明实施例中指令执行方法的一种具体实现方式流程图,对应上述格式的指令操作,以最常见的大于加为例进行说明,包括以下步骤:
S401,Ra的值是被加数变量的地址,指令执行装置根据这个地址,从寄存器Ra中取出被加数变量的值v。
v为有符号的32bit数据,充当被加数。
S402,指令执行装置对被加数变量的值v和Rb中储存的预设值进行比较操作,即比较v是否大于Rb中的数据。
Rb中储存着预设的有符号的32bit数据,该数据用于同S401中读取的被加数进行比较。
具体的比较操作可以为前述的六种比较操作中的一种,本实施例中所应用的比较操作为大于比较,即比较被加数变量的值v是否大于Rb中的预设值。
如果比较操作的结果成立,即被加数变量的值v大于Rb中的预设值,则执行S403;
如果比较操作的结果不成立,即被加数变量的值v不大于Rb中的预设值,则执行S405。
S403,指令执行装置对被加数的值v进行加操作。
如果比较操作的结果成立,即v>Rb成立,则执行result=v+Rc,即为被加数变量的值v加上Rc中存储的数据值,Rc代表从寄存器Rc中读取的与被加数变量的值v进行加操作的有符号的32bit数据,result代表被加数变量的值v和Rc中存储的数据值执行加操作后生成的结果数据。
S404,指令执行装置将加操作的结果赋值给被加数变量。
执行result=v+Rc后,指令执行装置将result的值根据Ra寄存器中的被加数变量的地址写回到存储器,即更新了被加数变量在存储器中的值v。
需要说明的是,存储器具体指外部的存储设备,指令执行装置可以通过外部地址或接口进行访问,寄存器则是指指令执行装置内部的临时数据存储单元,用于存储指令执行装置运行过程中生成的临时数据,可以在运行结束后自动或手动清空。
S405,指令执行装置将比较操作前被加数变量的值v存入Ra。
S406,结束指令操作。
指令执行装置在执行上述原子比较加指令时,需要根据寄存器Ra的值(即变量v的地址)来访问外部存储器,进行读操作和写操作,有可能引起地址类访问异常。但是,异常不会在存储器上产生修改的效果,因此,读操作和写操作访问异常不会对数据的一致性和完整性产生影响。
进一步的,在完成原子比较加的操作后,即完成S206后,后续的指令可采用进一步的步骤,用其他装置进一步来判断存储器中的被加数变量的值v是否执行了实际的加操作,即是否实际地执行了存储器的新数值写入操作,如图5所示,具体如下:
S501,读取Ra的值(当原子比较加指令执行后,Ra中保存着比较操作前的被加数v的值)。
S502,将Ra中的值与Rb中存储的预设值进行与前述S402中同样的比较操作。
即比较Ra是否大于Rb中存储的预设值,进一步的,本步骤中的比较操作可以是指令执行装置或其他需要获知是否进行了加操作的装置,进行比较操作的主体的变化并不影响本发明的保护范围。
如果比较操作的结果成立,则执行S503;
如果比较操作的结果不成立,则执行S504。
S503,判断原子比较加指令执行了加操作。
S504,判断原子比较加指令没有执行加操作。
本发明实施例将比较操作和加操作结合为一条新的原子比较加操作指令,从而,增强了并行功能,提高了执行效率。
以下为指令执行装置执行上述原子比较加指令时的功能伪码:
addgt(&Ra,&Rb,&Rc)
{
/*以Ra为地址,读取被加数,并保存副本。
读操作,可能引发读异常*/
WrodTemp=*(volatile signed int*)Ra;
/*32Bit有符号的比较*/
if(WrodTemp>Rb)
{
/*将加的结果,以Ra为地址,写回存储器。
写操作,可能引发写异常*/
*((volatile signed int*)Ra)=WrodTemp+Rc;
}
/*返回原来的被加数到Ra,可用于判断是否执行了加操作*/
Ra=WrodTemp;
Return;
}
如图6所示,为本发明实施例中指令执行装置结构图,包括:
读取模块610,用于根据被加数变量的地址读取被加数变量的值。
比较模块620,用于对读取模块610读取的被加数变量的值与预设值进行比较操作。
比较操作分为六种,即大于,小于,大于等于,小于等于,等于,不等于。
执行模块630,用于在比较模块620判断比较操作的结果成立时,对被加数变量的值执行加操作,并将加操作的结果赋值给被加数变量。
如果比较操作的结果成立,则对被加数变量的值执行加操作。
加操作也有多种类型,如有符号加、无符号加、32位加和64位加等,和系统中实际的加指令是相同的。
对被加数变量的值执行加操作后,将加操作的结果赋值给被加数变量,并将被加数变量的值存储到原地址。
执行模块630具体包括:
执行子模块631,用于对被加数变量的值执行加操作。
赋值子模块632,用于将执行子模块631执行的加操作的结果赋值给被加数变量。
存储模块640,用于存储指令执行过程中的临时数据,包括以下数值的一种或多种:
读取模块610所读取的被加数变量的值,执行模块630的执行结果,以及从各寄存器中读取的数据值,如前述实施例中从Rb、Rc中读取的预设值。
返回模块650,用于返回读取模块610读取的被加数变量的值,以供后续指令判断本指令是否执行了加操作。
本指令之后的后续装置(后续指令)可根据返回模块650返回比较操作前的被加数变量的值(如前述的被加数变量的值v)与预设值(如前述的Rb中的预设值)进行与比较模块620中所执行的比较操作内容相同的比较操作。
如果比较操作的结果成立,则判断原子比较加指令执行了加操作;如果比较操作的结果不成立,则判断原子比较加指令没有执行加操作。
上述模块可以分布于一个装置,也可以分布于多个装置。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
本发明实施例的技术方案具有以下优点,因为本发明实施例将比较操作和加操作结合为一条新的原子比较加操作指令,从而,增强了并行功能,提高了执行效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (7)
1、一种指令执行方法,其特征在于,包括:
根据被加数变量的地址读取所述被加数变量;
对所述被加数变量与预设值进行比较操作;
当所述比较操作的结果成立时,对所述被加数变量执行加操作,并将所述加操作的结果赋值给所述被加数变量;
返回比较操作前的被加数变量的值。
2、如权利要求1所述指令执行方法,其特征在于,还包括:
后续指令在所述指令执行之后通过所述返回的比较操作前的被加数变量判断所述指令是否已执行加操作。
3、如权利要求1所述指令执行方法,其特征在于,所述比较操作,具体包括所述被加数变量与所述预设值之间存在以下关系中的一种:
大于、小于、大于等于、小于等于、等于或不等于。
4、一种指令执行装置,其特征在于,包括:
读取模块,用于根据被加数变量的地址读取所述被加数变量;
比较模块,用于对所述读取模块所读取的被加数变量与预设值进行比较操作;
执行模块,用于当所述比较模块的比较操作的结果成立时,对所述被加数变量执行加操作,并将所述加操作的结果赋值给所述被加数变量。
返回模块,用于返回比较操作前的被加数变量。
5、如权利要求4所述指令执行装置,其特征在于,所述执行模块,具体包括:
执行子模块,用于对所述被加数变量执行加操作;
赋值子模块,用于将所述执行子模块执行的所述加操作的结果赋值给所述被加数变量。
6、如权利要求4所述指令执行装置,其特征在于,还包括:
存储模块,用于存储所述执行模块的执行结果。
7、如权利要求6所述指令执行装置,其特征在于,所述存储模块,还用于存储所述读取模块读取的所述被加数变量。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101444625A CN101324838A (zh) | 2008-07-31 | 2008-07-31 | 一种指令执行方法和装置 |
PCT/CN2009/071558 WO2010012167A1 (zh) | 2008-07-31 | 2009-04-29 | 指令执行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101444625A CN101324838A (zh) | 2008-07-31 | 2008-07-31 | 一种指令执行方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101324838A true CN101324838A (zh) | 2008-12-17 |
Family
ID=40188388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101444625A Pending CN101324838A (zh) | 2008-07-31 | 2008-07-31 | 一种指令执行方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101324838A (zh) |
WO (1) | WO2010012167A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012167A1 (zh) * | 2008-07-31 | 2010-02-04 | 华为技术有限公司 | 指令执行方法和装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102010048849A1 (de) | 2010-10-19 | 2012-04-19 | Gm Global Technology Operations Llc (N.D.Ges.D. Staates Delaware) | Hintere Bodenstruktur für ein Kraftfahrzeug |
IL264768A (en) | 2019-02-10 | 2020-08-31 | Sagi Irit | ANTI-MATRIX METALLOPROTEINASE 7 (MMP-7) inhibitory antibody and its use |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6367004B1 (en) * | 1998-12-31 | 2002-04-02 | Intel Corporation | Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared |
GB2402510A (en) * | 2003-06-05 | 2004-12-08 | Advanced Risc Mach Ltd | Predication instruction within a data processing system |
US7624256B2 (en) * | 2005-04-14 | 2009-11-24 | Qualcomm Incorporated | System and method wherein conditional instructions unconditionally provide output |
CN101324838A (zh) * | 2008-07-31 | 2008-12-17 | 华为技术有限公司 | 一种指令执行方法和装置 |
-
2008
- 2008-07-31 CN CNA2008101444625A patent/CN101324838A/zh active Pending
-
2009
- 2009-04-29 WO PCT/CN2009/071558 patent/WO2010012167A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010012167A1 (zh) * | 2008-07-31 | 2010-02-04 | 华为技术有限公司 | 指令执行方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2010012167A1 (zh) | 2010-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6886084B2 (en) | Storage controlling device and control method for a storage controlling device | |
US20080147994A1 (en) | Command scheduling method and apparatus of virtual file system embodied in nonvolatile data storage device | |
CN105468302A (zh) | 一种处理数据的方法、装置及系统 | |
CN102750364B (zh) | 为多镜像文件分配内存地址空间的方法、编译器和系统 | |
CN108733324B (zh) | 一种固态硬盘的数据读写方法、装置、设备及存储介质 | |
CN104461698A (zh) | 虚拟磁盘动态挂载的方法、管理装置及分布式存储系统 | |
JP4776571B2 (ja) | 実行制御プログラム,実行制御方法及び実行制御装置 | |
CN103647656A (zh) | 计费节点负载控制方法、数据访问控制方法及节点 | |
CN101501639A (zh) | 快闪存储器存取电路 | |
CN104657195A (zh) | 一种资源绑定方法和装置 | |
CN101324838A (zh) | 一种指令执行方法和装置 | |
JPS62208153A (ja) | 入出力バツフア装置 | |
WO2021012506A1 (zh) | 语音识别系统中的负载均衡实现方法、装置以及计算机设备 | |
CN104702519A (zh) | 流量卸载的方法、装置及系统 | |
CN110381150B (zh) | 区块链上的数据处理方法、装置、电子设备及存储介质 | |
CN103329059A (zh) | 用于至少部分地选择至少一个存储器的电路 | |
US20110022995A1 (en) | Circuit design information generating equipment, function execution system, and memory medium storing program | |
CN115599287A (zh) | 一种数据处理方法、装置及电子设备和存储介质 | |
CN112395256B (zh) | 一种数据读取方法、电子设备及计算机存储介质 | |
CN112882774A (zh) | 并行执行的智能合约芯片装置及方法、区块链节点装置 | |
CN111861920A (zh) | 一种中值滤波方法以及系统 | |
CN103124309B (zh) | 手机文件的读写控制方法及终端 | |
CN110780999A (zh) | 一种多核cpu的调度系统和方法 | |
CN109308197A (zh) | 设置项的还原方法和装置 | |
US11593113B2 (en) | Widening memory access to an aligned address for unaligned memory operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20081217 |