欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2016101818609
申请人: 华为技术有限公司
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-11-15
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种执行临界区操作的方法,其特征在于,应用于无内部互锁流水级的微处理器MIPS平台,所述方法包括:读取第一内存中用于存储地址的至少一个指针结构体,所述第一内存为存储共享数据的内存,所述至少一个指针结构体在所述第一内存中的存储位置是预设的;

如果所述第一内存中的至少一个指针结构体中的每个指针结构体中预设比特位的值均为第一值,则采用链接加载指令和条件存储指令,尝试将所述第一内存中的至少一个指针结构体中的第一指针结构体中预设比特位的值修改为第二值,所述第一值指示所述共享数据当前未被执行临界区操作,所述第二值指示所述共享数据当前正被执行临界区操作;

在成功将所述第一指针结构体中预设比特位的值修改为所述第二值后,对所述共享数据执行临界区操作。

2.根据权利要求1所述的方法,其特征在于,所述采用链接加载指令和条件存储指令,尝试将所述第一内存中的至少一个指针结构体中的第一指针结构体中预设比特位的值修改为第二值,包括:采用所述链接加载指令将所述第一内存中的第一指针结构体加载至第一通用寄存器;

将所述第一通用寄存器中的第一指针结构体中预设比特位的值修改为所述第二值;

采用所述条件存储指令,尝试将所述第一通用寄存器中的第一指针结构体写入所述第一内存;

其中,所述成功将所述第一指针结构体中预设比特位的值修改为所述第二值,具体为:成功将所述第一通用寄存器中的第一指针结构体写入所述第一内存。

3.根据权利要求1或2所述的方法,其特征在于,在所述在成功将所述第一指针结构体中预设比特位的值修改为所述第二值后,对所述共享数据执行临界区操作之后,所述方法还包括:在完成对所述共享数据的临界区操作后,将所述第一内存中的第一指针结构体中预设比特位的值修改为所述第一值。

4.根据权利要求3所述的方法,其特征在于,所述将所述第一内存中的第一指针结构体中预设比特位的值修改为所述第一值,包括:采用所述链接加载指令将所述第一内存中第一指针结构体加载至第二通用寄存器;

将所述第二通用寄存器中的第一指针结构体中预设比特位的值修改为所述第一值;

采用所述条件存储指令,将所述第二通用寄存器中的第一指针结构体写入所述第一内存。

5.根据权利要求1所述的方法,其特征在于,还包括:

如果所述至少一个指针结构体中的任一指针结构体中预设比特位的值为所述第二值,则返回执行所述读取所述第一内存中用于存储地址的至少一个的指针结构体的步骤,直至读取到所述至少一个指针结构体中的每个指针结构体中预设比特位的值均为所述第一值。

6.根据权利要求1所述的方法,其特征在于,还包括:

如果未成功将所述第一指针结构体中预设比特位的值修改为所述第二值,则返回执行所述读取所述第一内存中用于存储地址的至少一个的指针结构体的步骤,直至读取到所述至少一个指针结构体中的每个指针结构体中预设比特位的值均为所述第一值。

7.根据权利要求1-6中任一项所述的方法,其特征在于,所述MIPS平台中每个指针结构体的长度均为4字节;

所述链接加载指令为整字加载的链接加载LL指令,所述条件存储指令为整字加载的条件存储SC指令。

8.根据权利要求1-6中任一项所述的方法,其特征在于,所述MIPS平台中每个指针结构体的长度均为8字节;

所述链接加载指令为双字链接加载DLL指令,所述条件存储指令为双字条件存储DSC指令。

9.一种执行临界区操作的装置,其特征在于,应用于无内部互锁流水级的微处理器MIPS平台,所述装置包括:读取模块,用于读取第一内存中用于存储地址的至少一个指针结构体,所述第一内存为存储共享数据的内存,所述至少一个指针结构体在所述第一内存中的存储位置是预设的;

修改模块,用于如果所述读取模块读取的所述第一内存中的至少一个指针结构体中的每个指针结构体中预设比特位的值均为第一值,则采用链接加载指令和条件存储指令,尝试将所述第一内存中的至少一个指针结构体中的第一指针结构体中预设比特位的值修改为第二值,所述第一值指示所述共享数据当前未被执行临界区操作,所述第二值指示所述共享数据当前正被执行临界区操作;

执行模块,用于在所述修改模块成功将所述第一指针结构体中预设比特位的值修改为所述第二值后,对所述共享数据执行临界区操作。

10.根据权利要求9所述的装置,其特征在于,所述修改模块,具体用于:采用所述链接加载指令将所述第一内存中的第一指针结构体加载至第一通用寄存器;

将所述第一通用寄存器中的第一指针结构体中预设比特位的值修改为所述第二值;

采用所述条件存储指令,尝试将所述第一通用寄存器中的第一指针结构体写入所述第一内存;

其中,所述修改模块成功将所述第一指针结构体中预设比特位的值修改为所述第二值,具体为:所述修改模块成功将所述第一通用寄存器中的第一指针结构体写入所述第一内存。

11.根据权利要求9或10所述的装置,其特征在于,所述修改模块,还用于:在所述执行模块完成对所述共享数据的临界区操作后,将所述第一内存中的第一指针结构体中预设比特位的值修改为所述第一值。

12.根据权利要求11所述的装置,其特征在于,所述修改模块,具体用于:采用所述链接加载指令将所述第一内存中第一指针结构体加载至第二通用寄存器;

将所述第二通用寄存器中的第一指针结构体中预设比特位的值修改为所述第一值;

采用所述条件存储指令,将所述第二通用寄存器中的第一指针结构体写入所述第一内存。

13.根据权利要求9所述的装置,其特征在于,所述读取模块,还用于:如果所述至少一个指针结构体中的任一指针结构体中预设比特位的值为所述第二值,则返回执行所述读取所述第一内存中用于存储地址的至少一个的指针结构体的步骤,直至读取到所述至少一个指针结构体中的每个指针结构体中预设比特位的值均为所述第一值。

14.根据权利要求9所述的装置,其特征在于,所述读取模块,还用于:如果所述修改模块未成功将所述第一指针结构体中预设比特位的值修改为所述第二值,则返回执行所述读取所述第一内存中用于存储地址的至少一个的指针结构体的步骤,直至读取到所述至少一个指针结构体中的每个指针结构体中预设比特位的值均为所述第一值。