CN101290589B - 一种并发指令操作方法和装置 - Google Patents
一种并发指令操作方法和装置 Download PDFInfo
- Publication number
- CN101290589B CN101290589B CN200810097487.4A CN200810097487A CN101290589B CN 101290589 B CN101290589 B CN 101290589B CN 200810097487 A CN200810097487 A CN 200810097487A CN 101290589 B CN101290589 B CN 101290589B
- Authority
- CN
- China
- Prior art keywords
- formation
- concurrent
- maximum length
- instruction
- length
- 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
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 6
- 230000015572 biosynthetic process Effects 0.000 claims description 226
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
本发明的实施例公开了一种并发指令操作方法,包括:创建并发队列,设置所述并发队列的队列基地址和队列最大长度;根据需要写入或读取的数据的长度,以及所述并发队列的队列基地址和队列最大长度,生成并发操作指令;在所述并发队列中执行所述并发操作指令,完成对所述并发队列的数据操作。本发明的实施例还公开了一种实现并发指令操作的装置。通过使用本发明的实施例,创建并发队列并根据所创建的并发队列的参数对并发队列进行相应的操作,实现了软件并发队列的操作,极大地提高了软件的并发能力。由于指令并不限定其硬件的具体实现,可无阻碍的提升并发队列的处理能力,并实现指令兼容。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种并发指令操作方法和装置。
背景技术
目前多核处理器蓬勃发展,应用越来越广泛,但软件的并发设计相对落后硬件的发展,制约了多核处理器优势的发挥。其主要原因之一是多核处理器一直未能给软件提供一整套标准且有效的并发指令集,以支持软件并发处理和设计。
队列是软件中最基础也是最重要的数据结构之一,如果能有并发的队列指令实现并发且原子的入队出队操作,将极大地优化并发程序架构,提高并行度和可靠性。并且对于软件的并发设计,具有十分重要的意义。
当前可以并发的队列都是直接用硬件实现的。其实现方式具体为:硬件队列提供配置寄存器,软件通过配置以及系统约定的方法,使用配置寄存器中的内容。这些队列实质是硬件设备,是全局的,不可被软件创建或删除,因此无论多少,都是有限的全局硬件资源。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺点:
硬件实现的队列资源非常有限,不能作为纯粹的软件资源;不同硬件在并发队列的实现方法上各不相同,无法作到通用性和扩展性。
发明内容
本发明的实施例提供了一种并发指令操作方法和装置,以实现基于非硬件的并发队列操作。
本发明的实施例提供一种并发指令操作方法,包括:
创建并发队列,设置所述并发队列的队列基地址和队列最大长度;
根据需要写入或读取的数据的长度,以及所述并发队列的队列基地址和队列最大长度,生成并发操作指令;
在所述并发队列中执行所述并发操作指令,通过判断所述队列基地址是否正确、所述队列最大长度是否在有效范围内及当前队列长度与最大队列长度的关系,并根据判断结果,完成对所述并发队列报错结束、写入或读取的数据操作。
本发明的实施例还提供一种实现并发指令操作的装置,包括:
并发队列创建单元,用于创建并发队列,设置所述并发队列的队列基地址和队列最大长度;
并发操作指令生成单元,用于根据需要写入或读取的数据的长度,以及所述并发队列的队列基地址和队列最大长度,生成并发操作指令;
并发操作指令执行单元,用于在所述并发队列中执行所述并发操作指令生成单元生成的并发操作指令,通过判断所述队列基地址是否正确、所述队列最大长度是否在有效范围内及当前队列长度与最大队列长度的关系,并根据判断结果,完成对所述并发队列报错结束、写入或读取的数据操作。
通过使用本发明的实施例,实现了以下有益效果:
通过创建并发队列并根据所创建的并发队列的参数对并发队列进行相应的操作,实现了软件并发队列的操作,极大地提高了软件的并发能力。由于指令并不限定其硬件的具体实现,可无阻碍的提升并发队列的处理能力,并实现指令兼容。
附图说明
图1是本发明的实施例中并发指令操作方法的流程图;
图2是本发明的实施例中的队列指令的原理示意图;
图3是本发明的实施例中实现并发指令操作的装置的结构示意图;
图4是本发明的另一实施例中实现并发指令操作的装置的结构示意图
具体实施方式
本发明的实施例中提供一种并发指令操作方法,如图1所示,包括:
框图101、创建并发队列,设置所述并发队列的队列基地址和队列最大长度。
具体的,该并发队列由控制字和元素存储空间组成,设置并发队列的队列基地址和队列最大长度,根据队列最大长度确定并发队列的掩码以及元素存储空间。
框图102、根据需要写入或读取的数据的长度,以及并发队列的队列基地址和队列最大长度,生成并发操作指令。
具体的,根据需要写入或读取的数据的长度,以及队列的队列基地址和队列最大长度,生成并发操作指令。并发操作指令包括:单字并发入队命令、单字并发出队命令、双字并发入队命令、双字并发出队命令。
框图103、在并发队列中执行并发操作指令,完成对并发队列的数据操作。
具体的,该执行并发操作指令,完成对并发队列的数据操作可以进一步包括:
判断并发操作指令中的队列基地址是否正确,不正确则返回基地址错误并结束,否则判断为正确则继续;
判断队列最大长度是否在有效范围内,不是则返回基地址错误并结束,否则判断为正确则继续;
判断当前队列长度与队列最大长度的关系,当前队列长度大于队列最大长度时返回非法控制字;当前队列长度等于队列最大长度时返回队列满的指示;当前队列长度小于队列最大长度时进行入队列或出队列操作。该入队列或出队列操作操作具体为:根据队列的控制字以及掩码获取队列的入队列位置或出队列位置;将需要写入的数据写入入队列位置,或从出队列位置读取数据。
以下以一个具体的DEMO演示队列为例,说明本发明实施例中并发队列指令操作的具体实现。如图2所示,Base表示队列基地址,队列的最大长度为5,对应的存储Mask(掩码)为7,即元素的存储空间为8;另外队列中还包括1个控制字。因此,该图1所示的队列总共占据9个存储空间。该队列中,设每个存储空间代表一个32Bit的字。
该队列的在接收到并发指令时的状态变化包括:
队列初始状态,如图1中的(1A)所示,该状态下队列为空。
入队列10个元素、出队列7个元素后的状态如图1中的(1B)所示,该状态下的队列中,第0、1、7个存储空间中存在元素。
在上述(1B)的基础上继续入队列2个元素后,队列处于满状态,如(1C)所示,该状态下的队列中,第0、1、2、3、7个存储空间中存在元素。
在上述(1C)的基础上继续出队列5个元素后,队列处于空状态,如(1D)所示,该状态下队列处于空状态。
本发明的实施例中,提供了一系列的并发队列指令,该如表1所示。
表1.并发队列指令
Mnemonic | Instruction | 说明 |
MENQW | Multicore En-Queue in Word | 单字并发入队指令 |
MDEQW | Multicore De-Queue in Word | 单字并发出队指令 |
MENQD | Multicore En-Queue in Double Word | 双字并发入队指令 |
MDEQD | Multicore De-Queue in Double Word | 双字并发出队指令 |
以下分别对各并发队列指令进行说明。
1、MENQW-Muticore En-Queue in Word(单字并发入队指令)
以下各实施例中,单字长度为32bit。
MENQW指令的格式定义为:MENQW Ra,Rb,Rc
该格式中设置的参数解释如下:
Ra、Rb、Rc为三个通用寄存器,这里以寄存器长度为32bit为例。
Ra=4字节对齐的队列基地址,即上述图1中的Base
Rb=需要入队的32bit数据
Rc=队列的最大长度(有效值为1<=Rc<=0xffff)
该MENQW指令所对应的操作具体为:
根据Ra,Rc所指定的队列及参数,将32Bit数据Rb入队,或者无操作。执行该MENQW指令后,接收的返回内容包括:
Ra=入队列前的队列控制字(队列控制字即Base指向的第一个32bit字)
Rb=不变化
Rc=入队状态位指示
具体的,根据Ra中返回的队列控制字以及Rc返回的状态,判断该MENQW指令是否操作成功。考虑到队列指令在执行中会访问存储器,因此有可能起通常的地址类访问异常。当指令运行中的参数不合法时不会引起异常,而只引起本指令执行失败,该成功或者失败的响应可以通过在Rc中设置标志位来进行表达。
本实施例中,对响应内容中的Rc作如下规定:
Rc=0:表示成功入队,否则Rc的错误Bit定义为:
Rc[0]=1:Ra地址没有对齐。
Rc[1]=1:Rc参数错误。
Rc[2]=1:表示空操作,队列满。
Rc[3]=1:控制字错误。
队列控制字长度为32bit,存储在Ra指定的地址中。其中控制字的高16Bit是入队列的in序号,低16Bit是出队列的out序号。这两个序号都是16Bit的无符号数。通过16Bit的无符号减法可以计算出当前的队列长度(CurLen=in-out)。
通过序号(in序号或out序号)和队列Mask的与运算,还可以直接计算出当前入队和出队元素的具体存储位置。队列Mask实质上是由队列的最大长度Rc直接给出的。其数学关系为,将Rc转换为2进制,设其最高的不为0的位为n,则Mask的值具体为为2的n次幂减1。这样即满足了存储空间的唯一性,也满足了将in、out序号快速转换为存储地址的需要
上述指令执行的具体操作过程可以参考下面的功能伪代码描述。
功能伪码:在下面的伪码中,正常字体表示指令内部的执行和判断,粗体字表示对寄存器的读写或者对外部存储器的访问。
MENQW(&Ra,&Rb,&Rc)
{
if(Ra表示的地址没有4字节对齐)
{
Rc=1<<0;
Return;
}
if (Rc的有效值不在1到0xffff之间)
{
Rc=1<<1;
Return;
}
根据Rc计算出队列的Mask,计算方法见上述描述
根据Ra读取队列控制字,并保存副本/*读操作,可能引发读异常*/
CtrlWrodTemp=*(volatile unsigned int*)Ra;/*CtrlWrodTemp成为地址为Ra的unsigned int类型变量*/
CtrlWordBakTemp=CtrlWrodTemp;/*保存CtrlWrodTemp的副本*/
根据CtrlWord计算出当前的队列长度CurLen,CurLen=on-out
if(CurLen==Rc)
{
Ra=CtrlWordBakTemp;/*返回原来的状态控制字到Ra*/
Re=1<<2;/*队列满,空操作*/
Return;
}
if(CurLen>Rc)
{
Ra=CtrlWordBakTemp;/*返回原来的状态控制字到Ra*/
Rc=1<<3;/*非法控制字*/
Return;
}
/*0<=CurLen<Rc,可以入队列*/
将Rb的值入队列,队列是写操作,可能引发写异常
*(((volatile unsigned int*)Ra)+(CtrlWordTemp[31:16] & Mask)+1)
=Rb;
/*CtrlWordTemp[31:16]是16Bit的in序号,对于CtrlWordTemp[31:16]与
Mask进行与运算后获得的地址,写入Rb*/
更新控制字,in序号加1
CtrlWordTemp[31:16]=(CtrlWordTemp[31:16]+1) & 0xffff;
回写控制字/*写操作,可能引发写异常*/
*((volatile unsigned int*)Ra)=CtrlWordTemp;
Ra=CtrlWordBakTemp;
Rc=0;
Return;
}
2、MDEQW-Muticore De-Queue in Word(单字并发出队指令)
MDEQW指令的格式定义为:MDEQW Ra,Rb,Rc
该格式中设置的参数解释如下:
Ra,Rb,Rc是三个通用32bit寄存器
Ra=4字节对齐的队列基地址
Rb=用于存放返回的数据
Rc=队列的最大长度(有效值为1<=Rc=0xffff)
该MEDQW指令所对应的操作具体为:
根据Ra,Rc所指定的队列及参数,将出队列得到的32Bit数据存入Rb,或者无操作。
执行该MEDQW指令后,接收的返回内容包括:
Ra=出队列前的队列控制字(队列控制字就是基地址指向的第一个32bit字)
Rb=返回的出队列的32Bit数据。
Rc=出队状态位指示
用户根据Rc返回的状态以及Ra中返回的队列控制字,来判断此指令是否成功。
如果成功,则表示Rb数据有效。
Rc=0:表示成功出队,否则Rc的错误Bit定义为:
Rc[0]=1:Ra地址没有对齐。
Rc[1]=1:Rc参数错误。
Rc[2]=1:表示空操作,队列空。
Rc[3]=1:控制字错误。
功能伪码如下所示:
MENQW(&Ra,&Rb,&Rc)
{
if(Ra表示的地址没有4字节对齐)
{
Rc=1<<0;
Return;
}
if(Rc的有效值不在1到0xffff之间)
{
Rc=1<<1;
Return;
}
根据Rc计算出队列的Mask
根据Ra读取队列控制字,并保存副本/*读操作,可能引发读异常*/
CtrlWrodTemp=*(volatile unsigned int*)Ra;
CtrlWordBakTemp=CtrlWrodTemp;
根据CtrlWord计算出当前的队列长度CurLen
if(CurLen==0)
{
Ra=CtrlWordBakTemp;/*返回原来的状态控制字到Ra*/
Rc=1<<2;/*队列空,空操作*/
Return;
}
if(CurLen>Rc)
{
Ra=CtrlWordBakTemp;/*返回原来的状态控制字到Ra*/
Rc=1<<3;/*非法控制字*/
Return;
}
/*0<CurLen<=Rc,可以出队列*/
出队列到Rb,出队列是写操作,可能引发读异常
Rb=*(((volatile unsigned int*)Ra)+(CtrlWordTemp[15:0]& Mask)
+1);
/*CtrlWordTemp[15:0]是16Bit的out序号,将Rb写入到CtrlWordTemp[15:0]
与Mask与运算后获得的地址*/
更新控制字
CtrlWordTemp[15:0]=(CtrlWordTemp[15:0]+1) & 0xffff;
回写控制字/*写操作,可能引发写异常*/
*((volatile unsigned int*)Ra)=CtrlWordTemp;
Ra=CtrlWordBakTemp;
Rc=0;
Return;
}
3、MENQD-Muticore En-Queue in Double Word(双字并发入队指令)MENQD指令的格式定义为:MENQD Ra,Rb,Rc
以下各实施例中,双字长度为64bit。
该格式中设置的参数解释如下:
Ra,Rb,Rc是三个通用64bit寄存器
Ra=8字节对齐的队列基地址
Rb=需要入队的64bit数据
Rc=队列的最大长度(有效值为1<=Rc<=0xffffffff)
该MENQD指令所对应的操作具体为:
根据Ra,Rc所指定的队列及参数,将数据64Bit数据Rb入队,或者无操作。
执行该MENQD指令后,接收的返回内容包括:
Ra=入队列前的队列控制字(队列控制字就是基地址指向的第一个64bit字)
Rb=不变化
Rc=入队状态位指示
用户根据Rc返回的状态以及Ra中返回的队列控制字,来判断此指令是否成功。
Rc=0:表示成功入队,否则Rc的错误Bit定义为:
Rc[0]=1:Ra地址没有对齐。
Rc[1]=1:Rc参数错误。
Rc[2]=1:表示空操作,队列满。
Rc[3]=1:控制字错误。
与上述MENQW指令相比,MENQD指令实现的64Bit的入队列过程和MENQW指令实现的32Bit入队列过程并无本质不同,只是数据元素的长度变为64Bit,同时队列的最大长度变大。MENQD指令执行的具体操作过程可以参考上述MENQW的功能伪代码描述,在此不进行重复描述。
4、MDEQD-Muticore De-Queue in Double Word(双字并发出队指令)
MDEQD指令的格式定义为:MDEQD Ra,Rb,Rc
以下各实施例中,双字长度为64bit。
该格式中设置的参数解释如下:
Ra,Rb,Rc是三个通用64bit寄存器
Ra=8字节对齐的队列基地址
Rb=用于存放返回的数据
Rc=队列的最大长度(有效值为1<=Rc<=0xffffffff)
该MDEQD指令所对应的操作具体为:
根据Ra,Rc所指定的队列及参数,将出队列得到的64Bit数据存入Rb,或者无操作。
返回:
Ra=出队列前的队列控制字(队列控制字就是基地址指向的第一个64bit字)
Rb=返回的出队列的64Bit数据。
Rc=出队状态位指示
用户根据Rc返回的状态以及Ra中返回的队列控制字,来判断此指令是否成功。
如果成功,则表示Rb数据有效。
Rc=0:表示成功出队,否则Rc的错误Bit定义为:
Rc[0]=1:Ra地址没有对齐。
Rc[1]=1:Rc参数错误。
Rc[2]=1:表示空操作,队列空。
Rc[3]=1:控制字错误。
与上述MDEQW指令相比,MDEQD指令实现的64Bit的入队列过程和MDEQW指令实现的32Bit入队列过程并无本质不同,只是数据元素的长度变为64Bit,同时队列的最大长度变大。MDEQD指令执行的具体操作过程可以参考上述MDEQW的功能伪代码描述,在此不进行重复描述。
需要说明的是,上述各实施例中,仅以单字并发入队命令、单字并发出队命令、双字并发入队命令、双字并发出队命令为例对本发明中并发指令的操作方法进行了说明。在具体实现时,并不限于上述相关命令以及命令的具体格式。能够以相同原理完成上述功能的其他指令也在本发明实施例的保护范围之内。
通过使用本发明实施例提供的上述方法,通过创建并发队列并根据所创建的并发队列的参数对并发队列进行相应的操作,实现了软件并发队列的操作,极大地提高了软件的并发能力。由于指令并不限定其硬件的具体实现,可无阻碍的提升并发队列的处理能力,并实现指令兼容。
本发明的实施例还提供一种实现并发指令操作的装置,其结构如图3所示,包括:
并发队列创建单元10,用于创建并发队列,设置并发队列的队列基地址和队列最大长度.
并发操作指令生成单元20,用于根据需要写入或读取的数据的长度,以及并发队列创建单元10创建的并发队列的队列基地址和队列最大长度,生成并发操作指令。
并发操作指令执行单元30,用于在并发队列创建单元10创建的并发队列中执行并发操作指令生成单元20生成的并发操作指令,完成对并发队列的数据操作。
具体的,如图4所示,该实现并发指令操作的装置中:
并发队列创建单元10可以包括第一并发队列创建子单元11,用于创建并发队列,该并发队列由控制字和元素存储空间组成,设置该并发队列的队列基地址和队列最大长度,根据队列最大长度确定并发队列的掩码以及元素存储空间。
并发操作指令执行单元30进一步包括:
第一判断子单元31,用于判断并发操作指令中的队列基地址对否正确,不正确则返回基地址错误并结束,否则通知第二判断子单元;
第二判断子单元32,用于当第一判断子单元31判断队列基地址正确时,判断队列最大长度是否在有效范围内,不是则返回基地址错误并结束,否则通知第三判断子单元;
第三判断子单元33,用于当第二判断子单元32判断队列最大长度在有效范围内时,判断当前队列长度与队列最大长度的关系;
处理子单元34,用于当第三判断子单元33判断当前队列长度大于队列最大长度时返回非法控制字;当第三判断子单元33判断当前队列长度等于队列最大长度时返回队列满的指示;当第三判断子单元33判断当前队列长度小于队列最大长度时进行入队列或出队列操作。该入队列或出队列操作操作具体为:根据队列的控制字以及掩码获取队列的入队列位置或出队列位置;将需要写入的数据写入入队列位置,或从出队列位置读取数据。
通过使用本发明实施例提供的上述装置,通过创建并发队列并根据所创建的并发队列的参数对并发队列进行相应的操作,实现了软件并发队列的操作,极大地提高了软件的并发能力。由于指令并不限定其硬件的具体实现,可无阻碍的提升并发队列的处理能力,并实现指令兼容。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1.一种并发指令操作方法,其特征在于,包括:
创建并发队列,设置所述并发队列的队列基地址和队列最大长度;
根据需要写入或读取的数据的长度,以及所述并发队列的队列基地址和队列最大长度,生成并发操作指令;
在所述并发队列中执行所述并发操作指令,通过判断所述队列基地址是否正确、所述队列最大长度是否在有效范围内及当前队列长度与最大队列长度的关系,并根据判断结果,完成对所述并发队列报错结束、写入或读取的数据操作。
2.如权利要求1所述并发指令操作方法,其特征在于,所述创建并发队列,设置所述并发队列的队列基地址和队列最大长度包括:
创建并发队列,所述并发队列由控制字和元素存储空间组成,设置所述并发队列的队列基地址和队列最大长度,根据所述队列最大长度确定所述并发队列的掩码以及元素存储空间。
3.如权利要求2所述并发指令操作方法,其特征在于,所述在所述并发队列中执行并发操作指令,完成对所述并发队列的数据操作包括:
判断所述并发操作指令中的队列基地址是否正确,不正确则返回基地址错误并结束,否则判断为正确则继续;
判断所述队列最大长度是否在有效范围内,不是则返回基地址错误并结束,否则判断为正确则继续;
判断当前队列长度与队列最大长度的关系,当前队列长度大于队列最大长度时返回非法控制字;当前队列长度等于队列最大长度时返回队列满的指示;当前队列长度小于队列最大长度时进行入队列或出队列操作。
4.如权利要求3所述并发指令操作方法,其特征在于,所述当前队列长度小于队列最大长度时进行入队列或出队列操作包括:
根据所述并发队列的控制字以及掩码获取队列的入队列位置或出队列位置;
将所述需要写入的数据写入所述入队列位置,或从所述出队列位置读取数据。
5.如权利要求1至4中任一项所述并发指令操作方法,其特征在于,所述并发操作指令包括:
单字并发入队命令、单字并发出队命令、双字并发入队命令、双字并发出队命令中的一种或多种。
6.一种实现并发指令操作的装置,其特征在于,包括:
并发队列创建单元,用于创建并发队列,设置所述并发队列的队列基地址和队列最大长度;
并发操作指令生成单元,用于根据需要写入或读取的数据的长度,以及所述并发队列的队列基地址和队列最大长度,生成并发操作指令;
并发操作指令执行单元,用于在所述并发队列中执行所述并发操作指令生成单元生成的并发操作指令,通过判断所述队列基地址是否正确、所述队列最大长度是否在有效范围内及当前队列长度与最大队列长度的关系,并根据判断结果,完成对所述并发队列报错结束、写入或读取的数据操作。
7.如权利要求6所述实现并发指令操作的装置,其特征在于,所述并发队列创建单元包括第一并发队列创建子单元,用于创建并发队列,所述并发队列由控制字和元素存储空间组成,设置所述并发队列的队列基地址和队列最大长度,根据所述队列最大长度确定所述并发队列的掩码以及元素存储空间。
8.如权利要求6所述实现并发指令操作的装置,其特征在于,所述并发操作指令执行单元进一步包括:
第一判断子单元,用于判断所述并发操作指令中的队列基地址是否正确,不正确则返回基地址错误并结束,否则通知第二判断子单元;
第二判断子单元,用于当所述第一判断子单元判断队列基地址正确时,判断所述队列最大长度是否在有效范围内,不是则返回基地址错误并结束,否则通知第三判断子单元;
第三判断子单元,用于当所述第二判断子单元判断所述队列最大长度在有效范围内时,判断当前队列长度与队列最大长度的关系;
处理子单元,用于当所述第三判断子单元判断当前队列长度大于队列最大长度时返回非法控制字;当所述第三判断子单元判断当前队列长度等于队列最大长度时返回队列满的指示;当所述第三判断子单元判断当前队列长度小于队列最大长度时进行入队列或出队列操作。
9.如权利要求8所述实现并发指令操作的装置,其特征在于,所述处理子单元还用于根据所述并发队列的控制字以及掩码获取队列的入队列位置或出队列位置;将所述需要写入的数据写入所述入队列位置,或从所述出队列位置读取数据。
10.如权利要求6至9中任一项所述实现并发指令操作的装置,其特征在于,所述并发操作指令包括:
单字并发入队命令、单字并发出队命令、双字并发入队命令、双字并发出队命令中的一种或多种。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810097487.4A CN101290589B (zh) | 2007-12-27 | 2008-05-30 | 一种并发指令操作方法和装置 |
PCT/CN2008/073794 WO2009082975A1 (en) | 2007-12-27 | 2008-12-26 | Subsequent instruction operation method and device |
EP08868658A EP2226723A4 (en) | 2007-12-27 | 2008-12-26 | METHOD AND DEVICE FOR FUTURE OPERATING INSTRUCTIONS |
US12/820,874 US20100262810A1 (en) | 2007-12-27 | 2010-06-22 | Concurrent instruction operation method and device |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710198675 | 2007-12-27 | ||
CN200710198675.1 | 2007-12-27 | ||
CN200810097487.4A CN101290589B (zh) | 2007-12-27 | 2008-05-30 | 一种并发指令操作方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101290589A CN101290589A (zh) | 2008-10-22 |
CN101290589B true CN101290589B (zh) | 2010-06-16 |
Family
ID=40034856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810097487.4A Expired - Fee Related CN101290589B (zh) | 2007-12-27 | 2008-05-30 | 一种并发指令操作方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100262810A1 (zh) |
EP (1) | EP2226723A4 (zh) |
CN (1) | CN101290589B (zh) |
WO (1) | WO2009082975A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290589B (zh) * | 2007-12-27 | 2010-06-16 | 华为技术有限公司 | 一种并发指令操作方法和装置 |
CN103106064A (zh) * | 2011-11-09 | 2013-05-15 | 腾讯科技(深圳)有限公司 | 一种复杂时序处理队列的动态预测的方法及装置 |
GB2507484A (en) | 2012-10-30 | 2014-05-07 | Ibm | Limiting the number of concurrent requests in a database system |
CN104378400B (zh) * | 2013-08-15 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 数据分散并发方法和装置 |
US10230670B1 (en) * | 2014-11-10 | 2019-03-12 | Google Llc | Watermark-based message queue |
US9582413B2 (en) | 2014-12-04 | 2017-02-28 | International Business Machines Corporation | Alignment based block concurrency for accessing memory |
CN106776051A (zh) * | 2016-12-02 | 2017-05-31 | 北京锐安科技有限公司 | 一种高效读写锁的实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095729A1 (en) * | 2004-04-07 | 2006-05-04 | Erdem Hokenek | Multithreaded processor with multiple concurrent pipelines per thread |
US20060227788A1 (en) * | 2005-03-29 | 2006-10-12 | Avigdor Eldar | Managing queues of packets |
WO2007073628A1 (en) * | 2005-12-29 | 2007-07-05 | Intel Corporation | High performance queue implementations in multiprocessor systems |
CN101059765A (zh) * | 2006-01-09 | 2007-10-24 | 中山大学 | 一种数字家庭网络多任务并发执行的装置及方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699536A (en) * | 1995-04-13 | 1997-12-16 | International Business Machines Corporation | Computer processing system employing dynamic instruction formatting |
US6757679B1 (en) * | 1999-06-25 | 2004-06-29 | International Business Machines Corporation | System for building electronic queue(s) utilizing self organizing units in parallel to permit concurrent queue add and remove operations |
AU2001227533A1 (en) * | 2000-01-20 | 2001-07-31 | Sun Microsystems, Inc. | Double-ended queue in a contiguous array with concurrent non-blocking insert andremove operations |
WO2001082057A2 (en) * | 2000-04-18 | 2001-11-01 | Sun Microsystems, Inc. | Lock-free implementation of concurrent shared object with dynamic node allocation and distinguishing pointer value |
US7016923B2 (en) * | 2002-11-05 | 2006-03-21 | Sun Microsystems, Inc. | Multi-threaded garbage collector employing cascaded memory arrays of task identifiers to implement work stealing queues for task identification and processing |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
US7779222B1 (en) * | 2004-07-23 | 2010-08-17 | Oracle America, Inc. | Dynamic memory work-stealing |
US7346753B2 (en) * | 2005-12-19 | 2008-03-18 | Sun Microsystems, Inc. | Dynamic circular work-stealing deque |
CN101034345A (zh) * | 2007-04-16 | 2007-09-12 | 中国人民解放军国防科学技术大学 | 流处理器中数据流、指令流的控制方法 |
CN101290589B (zh) * | 2007-12-27 | 2010-06-16 | 华为技术有限公司 | 一种并发指令操作方法和装置 |
-
2008
- 2008-05-30 CN CN200810097487.4A patent/CN101290589B/zh not_active Expired - Fee Related
- 2008-12-26 WO PCT/CN2008/073794 patent/WO2009082975A1/zh active Application Filing
- 2008-12-26 EP EP08868658A patent/EP2226723A4/en not_active Withdrawn
-
2010
- 2010-06-22 US US12/820,874 patent/US20100262810A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095729A1 (en) * | 2004-04-07 | 2006-05-04 | Erdem Hokenek | Multithreaded processor with multiple concurrent pipelines per thread |
US20060227788A1 (en) * | 2005-03-29 | 2006-10-12 | Avigdor Eldar | Managing queues of packets |
WO2007073628A1 (en) * | 2005-12-29 | 2007-07-05 | Intel Corporation | High performance queue implementations in multiprocessor systems |
CN101059765A (zh) * | 2006-01-09 | 2007-10-24 | 中山大学 | 一种数字家庭网络多任务并发执行的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2009082975A1 (en) | 2009-07-09 |
CN101290589A (zh) | 2008-10-22 |
US20100262810A1 (en) | 2010-10-14 |
EP2226723A4 (en) | 2011-01-19 |
EP2226723A1 (en) | 2010-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101290589B (zh) | 一种并发指令操作方法和装置 | |
US9454387B2 (en) | Method and system for installing portable executable applications | |
US7730492B1 (en) | Method and system for running multiple virtual machines in a single process | |
NO20101528A1 (no) | Inkrementell implementering av oppheve/gjore pa nytt stotte i arveapplikasjoner | |
KR20060050489A (ko) | 디맨드 이벤트를 위한 오브젝트 복제 | |
US8347052B2 (en) | Initializing of a memory area | |
CN101501639A (zh) | 快闪存储器存取电路 | |
JP2003015873A (ja) | ソフトウェア・プログラムの言語表示方法,ソフトウェア・プログラムの言語表示システム,情報処理プログラムが記録された記録媒体 | |
CN104035757A (zh) | 基于MIPS处理器的u-boot移植的实现方法 | |
CN112882690B (zh) | 一种应用开发方法及装置 | |
US9612776B2 (en) | Dynamically updated user data cache for persistent productivity | |
JP4909756B2 (ja) | 情報処理装置、外部アプリケーション利用方法及びプログラム | |
US20090328229A1 (en) | System, method and computer program product for performing a data protection operation | |
CN113948146A (zh) | 固态硬盘的测试方法、装置及电子设备 | |
US11593113B2 (en) | Widening memory access to an aligned address for unaligned memory operations | |
US8165847B2 (en) | Implementing a programmable DMA master with write inconsistency determination | |
JP2008112229A (ja) | ソフトウェア製品の更新データ適用方法 | |
US8799567B2 (en) | Method for accessing files in a management system | |
JP2003186674A (ja) | 仮想マシンにおけるJavaデータ型表現 | |
Jacobs et al. | VerifiCard: A European project for smart card verification | |
KR102005718B1 (ko) | 상황정보 병기형 실사용 기반 모바일단말 스크립트 생성 방법 | |
CN116467256A (zh) | 一种测井数据hds转换dlis格式转换方法及系统 | |
US6587897B1 (en) | Method for enhanced I/O in an emulated computing environment | |
US20080127180A1 (en) | Operating system automated application porting tool | |
CN115809619A (zh) | 片上系统soc集成方法、装置、电子设备及存储介质 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100616 Termination date: 20150530 |
|
EXPY | Termination of patent right or utility model |