CN109885404B - 一种指令处理方法及装置 - Google Patents
一种指令处理方法及装置 Download PDFInfo
- Publication number
- CN109885404B CN109885404B CN201910105230.7A CN201910105230A CN109885404B CN 109885404 B CN109885404 B CN 109885404B CN 201910105230 A CN201910105230 A CN 201910105230A CN 109885404 B CN109885404 B CN 109885404B
- Authority
- CN
- China
- Prior art keywords
- cpu
- instructions
- read
- sum
- target
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种指令处理方法及装置,其中,指令处理方法包括:第一CPU获取第一CPU对应的第一数量值和第二CPU对应的第二数量值,该第一数量值表示第一CPU已处理完成,并准备发送给第二CPU的指令的个数,该第二数量值表示第二CPU已处理完成,并准备发送给第一CPU的指令的个数;选择第一数量值和第二数量值中最大的数量值;将所选择的数量值对应的CPU作为目标CPU,指示目标CPU执行垃圾回收GC任务。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种指令处理方法及装置。
背景技术
随着计算机技术的发展,电子设备需要处理的指令越来越多,例如,命令类型转换指令、用户数据传入指令、垃圾回收(英文:Garbage Collection,简称:GC)任务读指令和写指令等。为了提高电子设备处理指令的效率,电子设备可为采用带有闪存介质的多个中央处理器(英文:Central Processing Unit,简称:CPU)设备,由这多个CPU同时处理上述指令。
以电子设备具有两个CPU为例。若一个CPU单位时间内处理1000指令,那么两个CPU单位时间内可并行处理2000条指令。在电子设备实际运行中,每个CPU都有自身需要执行的指令和任务,而且有些指令和任务需要多个CPU协调进行。在电子设备长时间的运行过程中,可能会出现一个CPU负载较重,另一CPU负载较轻的情况。
这种情况的出现,会导致两个CPU单位时间内并行处理指令的能力远远达不到理想预估的2000条指令,现有测试中,前述电子设备具有的两个CPU单位时间内并行处理的指令仅有1600条,指令处理效率不高。
发明内容
有鉴于此,本申请提供了一种指令处理方法及装置,以提高带有闪存介质的多核电子设备的指令处理效率。具体技术方案如下:
第一方面,本申请提供了一种指令处理方法,应用于电子设备包括的第一CPU,电子设备还包括第二CPU,方法包括:
获取第一CPU对应的第一数量值和第二CPU对应的第二数量值,第一数量值表示第一CPU已处理完成,并准备发送给第二CPU的指令的个数,第二数量值表示第二CPU已处理完成,并准备发送给第一CPU的指令的个数;
选择第一数量值和第二数量值中最大的数量值;
将所选择的数量值对应的CPU作为目标CPU,指示目标CPU执行GC任务。
结合第一方面,在第一种可能的实现方式中,该方法还包括:
检测第一指令的数量是否达到数量阈值,第一指令为第一CPU已向第二CPU发送,但未接收到第二CPU返回响应指令的指令;
若是,则停止向第二CPU发送指令。
结合第一方面,在第二种可能的实现方式中,电子设备中存储GC回收信息表,GC回收信息表包括物理块的块标识字段、各个CPU对应下发读/写指令个数字段、各个CPU完成读/写指令个数字段;
当目标CPU为第一CPU时,指示目标CPU执行GC任务的步骤,包括:
根据GC任务,确定待GC的目标物理块;
将GC回收信息表包括的物理块的块标识字段,更新为目标物理块的块标识;
下发针对目标物理块的至少一个GC读/写指令,并接收返回的至少一个GC读/写响应指令;
根据下发的至少一个GC读/写指令的数量,更新GC回收信息表包括的第一CPU对应的下发读/写指令个数字段;
根据返回的至少一个GC读/写响应指令的数量,更新GC回收信息表包括的第一CPU对应的完成读/写指令个数字段。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,当目标CPU为第二CPU时,指示目标CPU执行GC任务的步骤,包括:
根据GC任务,确定待GC的目标物理块;
向第二CPU下发针对目标物理块的GC执行指令,以使第二CPU根据GC执行指令,执行针对目标物理块的GC任务。
结合第一方面的第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,方法还包括:
从GC回收信息表中,统计CPU下发读指令个数的第一和值以及CPU下发写指令个数的第二和值,第一和值为各个CPU对应的下发读指令个数的累加,第二和值为各个CPU对应的下发写指令个数的累加;
从GC回收信息表中,统计CPU完成读指令个数的第三和值以及CPU完成写指令个数的第四和值,第三和值为各个CPU对应的完成读指令个数的累加,第四和值为各个CPU对应的完成写指令个数的累加;
检测第一和值与第三和值、第二和值与第四和值是否相同,并分别检测各个和值与预设的目标数量值是否相同;
如果第一和值与第三和值、第二和值与第四和值相同,且各个和值与目标数量值相同,则清空GC回收信息表。
第二方面,本申请提供了一种指令处理装置,应用于电子设备包括的第一CPU,电子设备还包括第二CPU,装置包括:
获取单元,用于获取第一CPU对应的第一数量值和第二CPU对应的第二数量值,第一数量值表示第一CPU已处理完成,并准备发送给第二CPU的指令的个数,第二数量值表示第二CPU已处理完成,并准备发送给第一CPU的指令的个数;
选择单元,用于选择第一数量值和第二数量值中最大的数量值;
指示单元,用于将所选择的数量值对应的CPU作为目标CPU,指示目标CPU执行GC任务。
结合第二方面,在第一种可能的实现方式中,装置还包括:
检测单元,用于检测第一指令的数量是否达到数量阈值,第一指令为第一CPU已向第二CPU发送,但未接收到第二CPU返回响应指令的指令;
若是,则停止向第二CPU发送指令。
结合第二方面,在第二种可能的实现方式中,电子设备中存储GC回收信息表,GC回收信息表包括物理块的块标识字段、各个CPU对应下发读/写指令个数字段、各个CPU完成读/写指令个数字段;
指示单元,具体用于:
当目标CPU为第一CPU时,根据GC任务,确定待GC的目标物理块;
将GC回收信息表包括的物理块的块标识字段,更新为目标物理块的块标识;
下发针对目标物理块的至少一个GC读/写指令,并接收返回的至少一个GC读/写响应指令;
根据下发的至少一个GC读/写指令的数量,更新GC回收信息表包括的第一CPU对应的下发读/写指令个数字段;
根据返回的至少一个GC读/写响应指令的数量,更新GC回收信息表包括的第一CPU对应的完成读/写指令个数字段。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,指示单元,具体用于:
当目标CPU为第二CPU时,根据GC任务,确定待GC的目标物理块;
向第二CPU下发针对目标物理块的GC执行指令,以使第二CPU根据GC执行指令,执行针对目标物理块的GC任务。
结合第二方面的第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,装置还包括:
统计单元,用于从GC回收信息表中,统计CPU下发读指令个数的第一和值以及CPU下发写指令个数的第二和值,第一和值为各个CPU对应的下发读指令个数的累加,第二和值为各个CPU对应的下发写指令个数的累加;
从GC回收信息表中,统计CPU完成读指令个数的第三和值以及CPU完成写指令个数的第四和值,第三和值为各个CPU对应的完成读指令个数的累加,第四和值为各个CPU对应的完成写指令个数的累加;
检测单元,用于检测第一和值与第三和值、第二和值与第四和值是否相同,并分别检测各个和值与预设的目标数量值是否相同;
清空单元,用于如果第一和值与第三和值、第二和值与第四和值相同,且各个和值与目标数量值相同,则清空GC回收信息表。
第三方面,本申请提供了一种电子设备,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器被机器可执行指令促使:实现第一方面提供的指令处理方法的任一步骤。
第四方面,本申请提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,机器可执行指令促使处理器:实现第一方面提供的指令处理方法的任一步骤。
本申请提供的技术方案中,一CPU已处理完成,并准备发送给其他CPU的指令的个数越多,说明这个CPU很大概率的短期时间内负载较轻,处理速度较快。一CPU已处理完成,并准备发送给其他CPU的指令的个数越少,则说明这个CPU很大概率的短期时间内负载较重,处理速度较慢。第一CPU获取各个CPU已处理完成,并准备发送给其他CPU的指令的个数,即获取各个CPU对应的数量值,从获取的数量值中选择出最大的数量值,指示最大的数量值对应的CPU执行GC任务,也就是,由负载较轻的CPU执行GC任务。
这样,利用各个CPU对应的数量值,就可以实现各个CPU之间的负载均衡,提高了带有闪存介质的多核电子设备的指令处理效率。
当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的指令处理方法的一种流程示意图;
图2为基于图1的GC任务执行方法的一种流程示意图;
图3本申请实施例提供的指令处理装置的一种结构示意图;
图4为本申请实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解,下面对本申请实施例中出现的词语进行解释说明。
闪存介质:可划分为多个存储部分,每一存储部分对应一个通道。每一存储部分包括多个核心单元。每一核心单元包括多个物理块。物理块为最小的存储单元,也可以理解为最小的擦除单元。物理块可划分为多个扇区。
通道号:用于表示通道。
核心单元号:用于表示核心单元。
物理块号:用于表示物理块。
GC:为将存储无效数据的物理块回收再利用的过程。
无效数据:一数据在更新时,更新数据写入新的物理块中,而未写入该数据所在的物理块中,则该数据被标识为无效数据。
在实际应用中,电子设备具有多个CPU,每个CPU都有自身需要执行的指令和任务,而且有些指令和任务需要多个CPU协调进行。在电子设备长时间的运行过程中,可能会出现一个CPU负载较重,另一CPU负载较轻的情况。这种情况的出现,会导致两个CPU单位时间内并行处理指令的能力远远达不到理想预估,指令处理效率不高。
为提高带有闪存介质的多核电子设备的指令处理效率,本申请实施例提供了一种指令处理方法,应用于电子设备的第一CPU,电子设备还包括第二CPU。该指令处理方法中,第一CPU获取第一CPU对应的第一数量值和第二CPU对应的第二数量值,第一数量值表示第一CPU已处理完成,并准备发送给第二CPU的指令的个数,第二数量值表示第二CPU已处理完成,并准备发送给第一CPU的指令的个数;选择第一数量值和第二数量值中最大的数量值;将所选择的数量值对应的CPU作为目标CPU,指示目标CPU执行GC任务。
本申请实施例提供的技术方案中,一CPU已处理完成,并准备发送给其他CPU的指令的个数越多,说明这个CPU很大概率的短期时间内负载较轻,处理速度较快。一CPU已处理完成,并准备发送给其他CPU的指令的个数越少,则说明这个CPU很大概率的短期时间内负载较重,处理速度较慢。第一CPU获取各个CPU已处理完成,并准备发送给其他CPU的指令的个数,即获取各个CPU对应的数量值,从获取的数量值中选择出最大的数量值,指示最大的数量值对应的CPU执行GC任务,也就是,由负载较轻的CPU执行GC任务。这样,利用各个CPU对应的数量值,实现了各个CPU之间的负载均衡,提高了带有闪存介质的多核电子设备的指令处理效率。
下面通过具体实施例,对本申请进行详细说明。
参考图1,图1为本申请实施例提供的指令处理方法的一种流程示意图。电子设备包括第一CPU和第二CPU,该指令处理方法应用于第一CPU。本申请的一个实施例中,为第一CPU和第二CPU分别分配了对应的指令字段。这样,可防止两个CPU在同时处理指令时,遇到资源访问冲突的情况。另外,为第一CPU和第二CPU分别分配了对应的指令字段,在资源上进行了划分,不用对资源进行加锁和解锁操作,降低了操作的复杂度。
本申请实施例中,上述指令处理方法包括如下步骤。
步骤101,第一CPU获取第一CPU对应的第一数量值和第二CPU对应的第二数量值。第一数量值表示第一CPU已处理完成,并准备发送给第二CPU的指令的个数,第二数量值表示第二CPU已处理完成,并准备发送给第一CPU的指令的个数。
电子设备的第一CPU获取第一CPU对应的第一数量值,以及第二CPU对应的第二数量值。第一数量值和第二数量值间接的反应了第一CPU和第二CPU的负载情况。例如,数量值越少,则说明CPU处理指令速度较慢,CPU负载较重。数量值越多,则说明CPU处理速度较快,CPU负载较轻。本申请实施例中,第一CPU获取第一数量值和第二数量值,不需要统计CPU负载量,减少了计算的开支。
本申请实施例中,第一数量值可以记为:第一CPU→第二CPU的指令的个数。例如,对于一指令,第一CPU已处理完成属于第一CPU的工作,需要把接下来的任务发送给第二CPU继续完成,则第一数量值累计加1。在第二CPU继续完成接下来的任务后,第二数量值不需要累计加1。
第二数量值可以记为:第二CPU→第一CPU的指令的个数。例如,对于一指令,第二CPU已处理完成属于第二CPU的工作,需要把接下来的任务发送给第一CPU继续完成,则第二数量值累计加1。在第一CPU继续完成接下来的任务后,第一数量值不需要累计加1。
第一CPU可实时的获取第一数量值和第二数量值,即上述第一数量值和第二数量值为实时的数量值。例如,第一数量值为:当前时间之前预设时间段内,第一CPU已处理完成,并准备发送给第二CPU的指令的个数。第二数量值为:当前时间之前预设时间段内,第二CPU已处理完成,并准备发送给第一CPU的指令的个数。预设时间段的结束时间为当前时间,预设时间段的时长可以根据需要设定,如预设时间段的时长可以为1毫秒、2毫秒等。
步骤102,第一CPU选择第一数量值和第二数量值中最大的数量值。
本申请实施例中,若第一数量值大于第二数量值,则第一CPU选择第一数量值。若第二数量值大于第一数量值,则第一CPU选择第二数量值。若第一数量值等于第二数量值,则第一CPU可以选择第一数量值,也可以选择第二数量值。
步骤103第一CPU将所选择的数量值对应的CPU作为目标CPU,指示目标CPU执行GC任务。
本申请实施例中,若选择的数量值为第一数量值,则第一CPU将第一数量值对应的第一CPU作为目标CPU,指示第一CPU执行GC任务。若选择的数量值为第二数量值,则第一CPU指示第二CPU执行GC任务。
本申请实施例中,第一CPU可实时的获取第一数量值和第二数量值,因此,不同的时刻,基于实时获取的第一数量值和第二数量值,确定的目标CPU可能不同,也就是,确定的目标CPU可能不断的发生变化。
在一个实施例中,第一CPU作为主CPU,实时监控闪存介质,并确定闪存介质中需要GC的物理块,将这些需要GC的物理块的块标识添加至GC任务中。对于GC任务的执行,若目标CPU为第一CPU,第一CPU从GC任务包括的多个物理块的块标识中选择一个块标识,确定块标识为所选择的块标识的物理块作为确定目标物理块,执行针对目标物理块的GC任务。
具体的,第一CPU下发针对目标物理块的至少一个GC读指令。对于至少一个GC读指令中每一GC读指令,目标物理块根据该GC读指令,读取目标物理块中的有效数据,并在读取成功后,向第一CPU返回该GC读指令对应的GC读响应指令。
在接收到返回的指示GC读指令对应的GC读响应指令之后,第一CPU下发针对目标物理块的至少一个GC写指令。对于至少一个GC写指令中每一GC写指令,目标物理块根据该GC写指令,将读取到的目标物理块中的有效数据写到其他物理块中,并在写入成功后,向第一CPU返回该GC写指令对应的GC写响应指令。
在另一个实施例中,若目标CPU为第二CPU,第一CPU从GC任务包括的多个物理块的块标识中选择一个块标识,确定块标识为所选择的块标识的物理块作为确定目标物理块,向第二CPU下发针对目标物理块的GC执行指令。第二CPU执行针对目标物理块的GC任务。
具体的,第二CPU执行针对目标物理块的GC任务过程,可参考上述第一CPU执行针对目标物理块的GC任务过程。
当需要向目标物理块下发的GC读指令和GC写指令均已下发,且接收到了相应的GC读响应指令和GC写响应指令,第一CPU可确定目标物理块中的有效数据成功迁移至其他物理块中,针对目标物理块的GC任务完成,将该目标物理块的块标识从GC任务中去除。
在一个目标物理块中的有效数据迁移完成后,第一CPU可以继续从GC任务包括的多个物理块的块标识重新选择一个块标识,确定块标识为所选择的块标识的物理块作为目标物理块,并重复执行针对目标物理块的GC任务。
本申请实施例中,对于一个物理块的GC任务,第一CPU需要下发多个GC读指令。对于每一GC读指令,第一CPU接收到该GC读指令对应的GC读响应指令后,可直接下发该GC读指令对应的GC写指令。
本申请实施例提供的技术方案中,第一CPU确定各个CPU已处理完成并准备发送给其他CPU的指令的数量值,指示最大的数量值对应的CPU执行GC任务,也就是,由负载较轻的CPU执行GC任务。利用各个CPU对应的数量值,可实现各个CPU之间的动态负载均衡,提高了电子设备的指令处理效率。
在本申请的一个实施例中,为了便于目标CPU执行GC任务,防止两个CPU在同时处理指令时,遇到资源访问冲突的情况,降低操作的复杂度。在电子设备中预先设置了GC回收信息表。GC回收信息表中第一CPU和第二CPU进行分段式资源管理,可参考表1所示。
表1
Chan | 当前GC的通道号 |
Die | 当前GC的核心单元号 |
Block | 当前GC的物理块号 |
RdSend0 | 第一CPU下发读指令个数 |
RdReceived0 | 第一CPU完成读指令个数 |
RdSend1 | 第二CPU下发读指令个数 |
RdReceived1 | 第二CPU完成读指令个数 |
WrSend0 | 第一CPU下发写指令个数 |
WrReceived0 | 第一CPU完成写指令个数 |
WrSend1 | 第二CPU下发写指令个数 |
WrReceived1 | 第二CPU完成写指令个数 |
其中,Chan、Die和Block字段可统称为物理块的块标识。在一个实施例中,GC回收信息表还可包括错误信息字段(Error),以便于及时确定读取物理块的情况。第一CPU负责更新Chan、Die、Block、RdSend0、RdReceived0、WrSend0和WrReceived0字段。第二CPU负责更新Chan、Die、Block、RdSend1、RdReceived1、WrSend1和WrReceived1字段。
本申请实施例中,如表1所示,为第一CPU和第二CPU分别分配了对应的指令字段,解决了两个CPU在同时处理指令时,遇到资源访问冲突的情况,并且在资源上进行了划分,不用对资源进行加锁和解锁操作,降低了操作的复杂度。
基于上述GC回收信息表,若确定第一CPU为目标CPU,第一CPU指示目标CPU执行GC任务,可参考图2,具体可为如下步骤。
步骤201,根据GC任务,确定待GC的目标物理块。
在一个实施例中,为便于管理GC任务,电子设备中可设置GC任务列表。GC任务列表中,包括需要GC的物理块的标识。若确定第一CPU为目标CPU,在执行GC任务时,第一CPU从GC任务列表中选择一个物理块的标识,根据选择的物理块的标识,确定待GC的目标物理块。
在一个可选的实施例中,为了更好的实现各个CPU间负载均衡,第一CPU根据GC任务,确定待GC的目标物理块,并确定目标物理块中当前待GC的扇区。这样将物理块分片式的回收,便于实现各个CPU间负载均衡。
例如,第一CPU确定物理块1为目标物理块,物理块1包括扇区1-1000,确定扇区1-100为当前待GC的扇区。第一CPU执行针对扇区1-100的GC。当第一CPU重新确定物理块1为目标物理块时,可确定扇区101-200为当前待GC的扇区。第一CPU执行针对扇区101-200的GC。
每一次CPU执行针对目标物理块的GC任务时,回收扇区的数量,可根据实际需求进行设定。
步骤202,将GC回收信息表包括的物理块的块标识字段,更新为目标物理块的块标识。
第一CPU在确定目标物理块后,将GC回收信息表包括的物理块的块标识字段,更新为该目标物理块的块标识。
例如,GC任务列表中包括物理块1的标识、物理块2的标识和物理块3的标识。第一CPU选择了物理块1的标识,确定物理块1为目标物理块,则确定物理块1对应的通道号1、核心单元号1、物理块号1,将GC回收信息表包括的Chan字段更新为物理块1对应的通道号1,将GC回收信息表包括的Die字段更新为物理块1对应的核心单元号1,将GC回收信息表包括的Block字段更新为物理块1对应的物理块号1。
步骤203,下发针对目标物理块的至少一个GC读/写指令,并接收返回的至少一个GC读/写响应指令。
在一个实施例中,第一CPU确定目标物理块中当前待GC的扇区,则下发针对当前待GC的扇区的至少一个GC读/写指令,并接收返回的至少一个GC读/写响应指令。
步骤204,根据下发的至少一个GC读/写指令的数量,更新GC回收信息表包括的第一CPU对应的下发读/写指令个数字段;根据返回的至少一个GC读/写响应指令的数量,更新GC回收信息表包括的第一CPU对应的完成读/写指令个数字段。
具体的,第一CPU下发针对目标物理块的至少一个GC读指令。第一CPU将GC回收信息表包括的第一CPU对应的下发读指令个数字段,更新为下发的至少一个GC读指令的个数。
对于至少一个GC读指令中每一GC读指令,目标物理块根据该GC读指令,读取目标物理块中的有效数据,并在读取成功后,向第一CPU返回该GC读指令对应的GC读响应指令。
在接收到返回的GC读响应指令之后,第一CPU将GC回收信息表包括的第一CPU对应的完成读指令个数字段,更新为返回的至少一个GC读响应指令的个数。另外,在接收到返回的GC读响应指令之后,第一CPU下发针对目标物理块的至少一个GC写指令。第一CPU将GC回收信息表包括的第一CPU对应的下发写指令个数字段,更新为下发的至少一个GC写指令的个数。
对于至少一个GC写指令中每一GC写指令,目标物理块根据该GC写指令,将读取到的目标物理块中的有效数据写到其他物理块中,并在写入成功后,向第一CPU返回该GC写指令对应的GC写响应指令。
在接收到返回的GC写响应指令之后,第一CPU将GC回收信息表包括的第一CPU对应的完成写指令个数字段,更新为返回的至少一个GC写响应指令的个数。
在本申请的一个实施例中,当目标CPU为第二CPU时,第一CPU指示目标CPU执行GC任务可以包括:根据GC任务,确定待GC的目标物理块。第一CPU向第二CPU下发针对目标物理块的GC执行指令。第二CPU根据GC执行指令,执行针对目标物理块的GC任务。
一个实施例中,当目标CPU为第二CPU时,第一CPU在确定待GC的目标物理块后,还可以将GC回收信息表包括的物理块的块标识字段更新为目标物理块的块标识,同时,向第二CPU下发针对目标物理块的GC执行指令。
第二CPU执行针对目标物理块的GC任务过程,可参考图2所示的第一CPU执行针对目标物理块的GC任务过程。
下面以GC任务包括块标识1为例进行说明。其中,块标识1指代物理块1,物理块1包括扇区1-1000。电子设备包括CPU0和CPU1。CPU0实时获取CPU0对应的数量值0和CPU1对应的数量值1。
若数量值0>数量值1,则CPU0确定数量值0对应的CPU0为目标CPU。根据GC任务包括的块标识1,CPU0确定目标物理块为物理块1,同时,确定当前待GC的扇区为物理块1的扇区1-100。CPU0将GC回收信息表包括的物理块的块标识字段更新为块标识1。另外,CPU0下发针对物理块1的扇区1-100的GC读/写指令,并接收返回的GC读/写响应指令。CPU0根据下发的GC读/写指令的数量,更新GC回收信息表包括的CPU0对应的下发读/写指令个数字段;根据返回的GC读/写响应指令的数量,更新GC回收信息表包括的CPU0对应的完成读/写指令个数字段。
之后,CPU0实时获取CPU0对应的数量值0和CPU1对应的数量值1。若数量值0<数量值1,则CPU0确定数量值1对应的CPU1为目标CPU。根据GC任务包括的块标识1,CPU0确定目标物理块为物理块1,同时,确定当前待GC的扇区为物理块1的扇区101-200。CPU0将GC回收信息表包括的物理块的块标识字段更新为块标识1。CPU0向CPU1下发针对物理块1的扇区101-200的GC执行指令。CPU1根据GC执行指令,下发针对物理块1的扇区101-200的GC读/写指令,并接收返回的GC读/写响应指令。CPU1根据下发的GC读/写指令的数量,更新GC回收信息表包括的CPU1对应的下发读/写指令个数字段;根据返回的GC读/写响应指令的数量,更新GC回收信息表包括的CPU1对应的完成读/写指令个数字段。
可以理解的是,CPU0重复执行上述过程,此处不再赘述。
本申请实施例中,第一CPU根据GC回收信息表中第一CPU对应的下发读/写指令个数字段,第二CPU对应的下发读/写指令个数字段,第一CPU对应的完成读/写指令个数字段,第二CPU对应的完成读/写指令个数字段,确定目标物理块的GC任务是否完成。
在本申请的一个实施例中,第一CPU从GC回收信息表中,统计CPU下发读指令个数的第一和值以及CPU下发写指令个数的第二和值。第一和值为各个CPU下发读指令个数的累加,即第一和值为:第一CPU对应的下发读指令个数与第二CPU对应的下发读指令个数的累加。第二和值为各个CPU对应的下发写指令个数的累加,即第二和值为:第一CPU对应的下发写指令个数与第二CPU对应的下发写指令个数的累加。
第一CPU从GC回收信息表中,统计CPU完成读指令个数的第三和值以及CPU完成写指令个数的第四和值。第三和值为各个CPU对应的完成读指令个数的累加,即第三和值为:第一CPU对应的完成读指令个数与第二CPU对应的完成读指令个数的累加。第四和值为各个CPU完成写指令个数的累加,即第四和值为:第一CPU对应的完成写指令个数与第二CPU对应的完成写指令个数的累加。
第一CPU检测第一和值与第三和值、第二和值与第四和值是否相同,并分别检测各个和值与预设的目标数量值是否相同。其中,目标数量值可以为需要向目标物理块下发的读指令的个数,或目标数量值为需要向目标物理块下发的写指令的个数。
如果第一和值与第三和值、第二和值与第四和值相同,即第一和值与第三和值相同,第二和值与第四和值相同,且各个和值与目标数量值相同,则第一CPU确定目标物理块的GC任务完成,清空GC回收信息表。以便于后续进行GC任务的执行。
如果第一和值与第三和值不相同,或第二和值与第四和值不相同,或各个和值与目标数量值不全相同,则第一CPU确定目标物理块的GC任务未完成,不清空GC回收信息表。在本申请实施例中,电子设备中可以设置多个GC回收信息表,同时GC多个物理块。
在本申请的一个实施例中,为了保证第一CPU和第二CPU间的负载均衡,提高电子设备的指令处理效率,第一CPU实时地检测第一指令的数量是否达到数量阈值,第一指令为第一CPU已向第二CPU发送,但未接收到第二CPU返回响应指令的指令。若检测到第一指令的数量达到数量阈值,则第一CPU停止向第二CPU发送指令。若检测到第一指令的数量未达到数量阈值,则第一CPU继续向第二CPU发送指令。
同理,第二CPU实时地检测第二指令的数量是否达到数量阈值,第二指令为第二CPU已向第一CPU发送,但未接收到第一CPU返回响应指令的指令。若检测到第二指令的数量达到数量阈值,则第二CPU停止向第一CPU发送指令。若检测到第二指令的数量未达到数量阈值,则第二CPU继续向第一CPU发送指令。
上述数量阈值可以根据CPU并行处理指令的数量确定。例如,第一CPU并行处理指令的数量为64,则数量阈值可以为64/2=32。
例如,数量阈值为32。第一CPU若向第二CPU发送了32条指令,且未接收到第二CPU返回的响应指令,则可检测到向第二CPU发送了32条第一指令,停止向第二CPU发送指令。第一CPU若接收到第二CPU返回了3个响应指令,则可检测到向第二CPU发送了32-3=29条第一指令,可继续向第二CPU发送3条指令。
在本申请的一个实施例中,第一CPU向第二CPU发送的指令中可携带有优先级信息。第二CPU根据指令中优先级信息确定指令的处理顺序。具体的,第二CPU按照优先级从高到低的顺序,处理接收到的指令。第二CPU向第一CPU发送的指令中可携带有优先级信息。第一CPU根据指令中优先级信息确定指令的处理顺序。具体的,第一CPU按照优先级从高到低的顺序,处理接收到的指令。
本申请实施例中,电子设备可以包括一个第一CPU和多个第二CPU。其中,第一CPU作为主CPU,第二CPU作为备CPU。每一个第二CPU与第一CPU间的指令处理,均可采用上述的指令处理方法。
与上述指令处理方法实施例对应,本申请实施例还提供了一种指令处理装置。参考图3,图3为本申请实施例提供的指令处理装置的一种结构示意图。该指令处理装置应用于电子设备的第一CPU,电子设备还包括第二CPU。该装置包括:获取单元301、选择单元302和指示单元303。
获取单元301,用于获取第一CPU对应的第一数量值和第二CPU对应的第二数量值,第一数量值表示第一CPU已处理完成,并准备发送给第二CPU的指令的个数,第二数量值表示第二CPU已处理完成,并准备发送给第一CPU的指令的个数;
选择单元302,用于选择第一数量值和第二数量值中最大的数量值;
指示单元303,用于将所选择的数量值对应的CPU作为目标CPU,指示目标CPU执行GC任务。
一个可选的实施例中,上述指令处理装置还可以包括:
检测单元,用于检测第一指令的数量是否达到数量阈值,第一指令为第一CPU已向第二CPU发送,但未接收到第二CPU返回响应指令的指令;
若是,则停止向第二CPU发送指令。
一个可选的实施例中,电子设备中存储GC回收信息表,GC回收信息表包括物理块的块标识字段、各个CPU对应下发读/写指令个数字段、各个CPU完成读/写指令个数字段;
此时,指示单元303,具体可以用于:
当目标CPU为第一CPU时,根据GC任务,确定待GC的目标物理块;
将GC回收信息表包括的物理块的块标识字段,更新为目标物理块的块标识;
下发针对目标物理块的至少一个GC读/写指令,并接收返回的至少一个GC读/写响应指令;
根据下发的至少一个GC读/写指令的数量,更新GC回收信息表包括的第一CPU对应的下发读/写指令个数字段;
根据返回的至少一个GC读/写响应指令的数量,更新GC回收信息表包括的第一CPU对应的完成读/写指令个数字段。
一个可选的实施例中,指示单元303,具体可以用于:
当目标CPU为第二CPU时,根据GC任务,确定待GC的目标物理块;
向第二CPU下发针对目标物理块的GC执行指令,以使第二CPU根据GC执行指令,执行针对目标物理块的GC任务。
一个可选的实施例中,上述指令处理装置还可以包括:
统计单元,用于从GC回收信息表中,统计CPU下发读指令个数的第一和值以及CPU下发写指令个数的第二和值,第一和值为各个CPU对应的下发读指令个数的累加,第二和值为各个CPU对应的下发写指令个数的累加;
从GC回收信息表中,统计CPU完成读指令个数的第三和值以及CPU完成写指令个数的第四和值,第三和值为各个CPU对应的完成读指令个数的累加,第四和值为各个CPU对应的完成写指令个数的累加;
检测单元,用于检测第一和值与第三和值、第二和值与第四和值是否相同,并分别检测各个和值与预设的目标数量值是否相同;
清空单元,用于如果第一和值与第三和值、第二和值与第四和值相同,且各个和值与目标数量值相同,则清空GC回收信息表。
本申请实施例提供的技术方案中,一CPU已处理完成,并准备发送给其他CPU的指令的个数越多,说明这个CPU很大概率的短期时间内负载较轻,处理速度较快。一CPU已处理完成,并准备发送给其他CPU的指令的个数越少,则说明这个CPU很大概率的短期时间内负载较重,处理速度较慢。第一CPU获取各个CPU已处理完成,并准备发送给其他CPU的指令的个数,即获取各个CPU对应的数量值,从获取的数量值中选择出最大的数量值,指示最大的数量值对应的CPU执行GC任务,也就是,由负载较轻的CPU执行GC任务。
这样,利用各个CPU对应的数量值,就可以实现各个CPU之间的负载均衡,提高了带有闪存介质的多核电子设备的指令处理效率。
与上述指令处理方法实施例对应,本申请实施例还提供了一种电子设备,如图4,包括第一CPU 401和第二CPU 402和机器可读存储介质403,机器可读存储介质403存储有能够被第一CPU 401执行的机器可执行指令,第一CPU401被机器可执行指令促使实现图1-2所示的指令处理方法的任一步骤。
在本申请的一个实施例中,如图4所示,电子设备还可以包括:通信接口404和通信总线405。其中,第一CPU 401和第二CPU 402、机器可读存储介质403、通信接口404通过通信总线405完成相互间的通信,通信接口404用于上述电子设备与其他设备之间的通信。
与上述指令处理方法实施例对应,本申请实施例还提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,机器可执行指令促使处理器实现图1-2所示的指令处理方法的任一步骤。
上述通信总线可以是外设部件互连标准(英文:Peripheral ComponentInterconnect,简称:PCI)总线或扩展工业标准结构(英文:Extended Industry StandardArchitecture,简称:EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
上述机器可读存储介质可以包括随机存取存储器(英文:Random Access Memory,简称:RAM),也可以包括非易失性存储器(英文:Non-Volatile Memory,简称:NVM),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU、网络处理器(英文:Network Processor,简称:NP)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)、现场可编程门阵列(英文:Field-Programmable Gate Array,简称:FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于指令处理装置、电子设备、机器可读存储介质实施例而言,由于其基本相似于指令处理方法实施例,所以描述的比较简单,相关之处参见指令处理方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种指令处理方法,其特征在于,应用于电子设备包括的第一中央处理单元CPU,所述电子设备还包括第二CPU,所述方法包括:
获取所述第一CPU对应的第一数量值和所述第二CPU对应的第二数量值,所述第一数量值表示所述第一CPU已处理完成,并准备发送给所述第二CPU的指令的个数,所述第二数量值表示所述第二CPU已处理完成,并准备发送给所述第一CPU的指令的个数;
选择所述第一数量值和所述第二数量值中最大的数量值;
将所选择的数量值对应的CPU作为目标CPU,指示所述目标CPU执行垃圾回收GC任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测第一指令的数量是否达到数量阈值,所述第一指令为所述第一CPU已向所述第二CPU发送,但未接收到所述第二CPU返回响应指令的指令;
若是,则停止向所述第二CPU发送指令。
3.根据权利要求1所述的方法,其特征在于,所述电子设备中存储GC回收信息表,所述GC回收信息表包括物理块的块标识字段、各个CPU对应下发读/写指令个数字段、各个CPU完成读/写指令个数字段;
当所述目标CPU为所述第一CPU时,所述指示所述目标CPU执行GC任务的步骤,包括:
根据所述GC任务,确定待GC的目标物理块;
将所述GC回收信息表包括的物理块的块标识字段,更新为所述目标物理块的块标识;
下发针对所述目标物理块的至少一个GC读/写指令,并接收返回的至少一个GC读/写响应指令;
根据下发的所述至少一个GC读/写指令的数量,更新所述GC回收信息表包括的所述第一CPU对应的下发读/写指令个数字段;
根据返回的所述至少一个GC读/写响应指令的数量,更新所述GC回收信息表包括的所述第一CPU对应的完成读/写指令个数字段。
4.根据权利要求3所述的方法,其特征在于,当所述目标CPU为所述第二CPU时,所述指示所述目标CPU执行GC任务的步骤,包括:
根据所述GC任务,确定待GC的目标物理块;
向所述第二CPU下发针对所述目标物理块的GC执行指令,以使所述第二CPU根据所述GC执行指令,执行针对所述目标物理块的GC任务。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
从所述GC回收信息表中,统计CPU下发读指令个数的第一和值以及CPU下发写指令个数的第二和值,所述第一和值为各个CPU对应的下发读指令个数的累加,所述第二和值为各个CPU对应的下发写指令个数的累加;
从所述GC回收信息表中,统计CPU完成读指令个数的第三和值以及CPU完成写指令个数的第四和值,所述第三和值为各个CPU对应的完成读指令个数的累加,所述第四和值为各个CPU对应的完成写指令个数的累加;
检测所述第一和值与所述第三和值、所述第二和值与所述第四和值是否相同,并分别检测各个和值与预设的目标数量值是否相同;
如果所述第一和值与所述第三和值、所述第二和值与所述第四和值相同,且各个和值与所述目标数量值相同,则清空所述GC回收信息表。
6.一种指令处理装置,其特征在于,应用于电子设备包括的第一中央处理单元CPU,所述电子设备还包括第二CPU,所述装置包括:
获取单元,用于获取所述第一CPU对应的第一数量值和所述第二CPU对应的第二数量值,所述第一数量值表示所述第一CPU已处理完成,并准备发送给所述第二CPU的指令的个数,所述第二数量值表示所述第二CPU已处理完成,并准备发送给所述第一CPU的指令的个数;
选择单元,用于选择所述第一数量值和所述第二数量值中最大的数量值;
指示单元,用于将所选择的数量值对应的CPU作为目标CPU,指示所述目标CPU执行垃圾回收GC任务。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
检测单元,用于检测第一指令的数量是否达到数量阈值,所述第一指令为所述第一CPU已向所述第二CPU发送,但未接收到所述第二CPU返回响应指令的指令;
若是,则停止向所述第二CPU发送指令。
8.根据权利要求6所述的装置,其特征在于,所述电子设备中存储GC回收信息表,所述GC回收信息表包括物理块的块标识字段、各个CPU对应下发读/写指令个数字段、各个CPU完成读/写指令个数字段;
所述指示单元,具体用于:
当所述目标CPU为所述第一CPU时,根据所述GC任务,确定待GC的目标物理块;
将所述GC回收信息表包括的物理块的块标识字段,更新为所述目标物理块的块标识;
下发针对所述目标物理块的至少一个GC读/写指令,并接收返回的至少一个GC读/写响应指令;
根据下发的所述至少一个GC读/写指令的数量,更新所述GC回收信息表包括的所述第一CPU对应的下发读/写指令个数字段;
根据返回的所述至少一个GC读/写响应指令的数量,更新所述GC回收信息表包括的所述第一CPU对应的完成读/写指令个数字段。
9.根据权利要求8所述的装置,其特征在于,所述指示单元,具体用于:
当所述目标CPU为所述第二CPU时,根据所述GC任务,确定待GC的目标物理块;
向所述第二CPU下发针对所述目标物理块的GC执行指令,以使所述第二CPU根据所述GC执行指令,执行针对所述目标物理块的GC任务。
10.根据权利要求8或9所述的装置,其特征在于,所述装置还包括:
统计单元,用于从所述GC回收信息表中,统计CPU下发读指令个数的第一和值以及CPU下发写指令个数的第二和值,所述第一和值为各个CPU对应的下发读指令个数的累加,所述第二和值为各个CPU对应的下发写指令个数的累加;
从所述GC回收信息表中,统计CPU完成读指令个数的第三和值以及CPU完成写指令个数的第四和值,所述第三和值为各个CPU对应的完成读指令个数的累加,所述第四和值为各个CPU对应的完成写指令个数的累加;
检测单元,用于检测所述第一和值与所述第三和值、所述第二和值与所述第四和值是否相同,并分别检测各个和值与预设的目标数量值是否相同;
清空单元,用于如果所述第一和值与所述第三和值、所述第二和值与所述第四和值相同,且各个和值与所述目标数量值相同,则清空所述GC回收信息表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910105230.7A CN109885404B (zh) | 2019-02-01 | 2019-02-01 | 一种指令处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910105230.7A CN109885404B (zh) | 2019-02-01 | 2019-02-01 | 一种指令处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109885404A CN109885404A (zh) | 2019-06-14 |
CN109885404B true CN109885404B (zh) | 2021-07-20 |
Family
ID=66927893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910105230.7A Active CN109885404B (zh) | 2019-02-01 | 2019-02-01 | 一种指令处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109885404B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8499010B2 (en) * | 2010-12-22 | 2013-07-30 | International Business Machines Corporation | Garbage collection in a multiple virtual machine environment |
CN103699435A (zh) * | 2013-12-25 | 2014-04-02 | 龙芯中科技术有限公司 | 负载均衡方法及装置 |
CN104391747A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种并行计算方法及装置 |
CN108536394A (zh) * | 2018-03-31 | 2018-09-14 | 北京联想核芯科技有限公司 | 命令分配方法、装置、设备及介质 |
CN108696554A (zh) * | 2017-04-10 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 负载均衡方法和装置 |
CN109144428A (zh) * | 2018-09-11 | 2019-01-04 | 浪潮电子信息产业股份有限公司 | 一种应用于固态硬盘的垃圾回收方法、设备及介质 |
-
2019
- 2019-02-01 CN CN201910105230.7A patent/CN109885404B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8499010B2 (en) * | 2010-12-22 | 2013-07-30 | International Business Machines Corporation | Garbage collection in a multiple virtual machine environment |
CN103699435A (zh) * | 2013-12-25 | 2014-04-02 | 龙芯中科技术有限公司 | 负载均衡方法及装置 |
CN104391747A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种并行计算方法及装置 |
CN108696554A (zh) * | 2017-04-10 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 负载均衡方法和装置 |
CN108536394A (zh) * | 2018-03-31 | 2018-09-14 | 北京联想核芯科技有限公司 | 命令分配方法、装置、设备及介质 |
CN109144428A (zh) * | 2018-09-11 | 2019-01-04 | 浪潮电子信息产业股份有限公司 | 一种应用于固态硬盘的垃圾回收方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109885404A (zh) | 2019-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210034407A1 (en) | Virtual Machine Scheduling Method and Apparatus | |
US8261266B2 (en) | Deploying a virtual machine having a virtual hardware configuration matching an improved hardware profile with respect to execution of an application | |
CN107341029B (zh) | ***资源部署策略的获取方法、装置及电子设备 | |
US11526276B2 (en) | Upgrade management method and scheduling node, and storage system | |
CN107656807B (zh) | 一种虚拟资源的自动弹性伸缩方法及装置 | |
CN107957848B (zh) | 重删处理方法及存储设备 | |
US20150033233A1 (en) | Job delay detection method and information processing apparatus | |
CN110362275B (zh) | 提升固态硬盘服务质量的方法及固态硬盘 | |
US11221947B2 (en) | Concurrent garbage collection with minimal graph traversal | |
CN110688168A (zh) | 提高应用程序启动速度方法、装置、设备及存储介质 | |
WO2018127012A1 (zh) | 一种传输节点集群的检测方法和装置 | |
CN110489242B (zh) | 分布式数据计算方法、装置、终端设备及存储介质 | |
CN109992408B (zh) | 一种资源分配方法、装置、电子设备和存储介质 | |
CN109885404B (zh) | 一种指令处理方法及装置 | |
CN107357649B (zh) | ***资源部署策略的确定方法、装置及电子设备 | |
CN108628678B (zh) | 内存参数的确定方法、装置及设备 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN110955587A (zh) | 一种待更换设备确定方法及装置 | |
CN111221468A (zh) | 存储块数据删除方法、装置、电子设备及云存储*** | |
CN114281474A (zh) | 一种资源调节方法及装置 | |
CN112463374A (zh) | 一种内存管理方法、装置、设备及存储介质 | |
CN111309475A (zh) | 一种检测任务执行方法及设备 | |
CN112463621A (zh) | 回归测试管理方法、存储介质管理方法、装置、设备及介质 | |
CN106959888B (zh) | 云存储***中的任务处理方法及装置 | |
CN112395081A (zh) | 一种资源在线自动回收方法、***、服务器以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |