CN105183668A - 缓存刷新方法及装置 - Google Patents
缓存刷新方法及装置 Download PDFInfo
- Publication number
- CN105183668A CN105183668A CN201510601236.5A CN201510601236A CN105183668A CN 105183668 A CN105183668 A CN 105183668A CN 201510601236 A CN201510601236 A CN 201510601236A CN 105183668 A CN105183668 A CN 105183668A
- Authority
- CN
- China
- Prior art keywords
- processor core
- processor
- core
- state variable
- predetermined state
- 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.)
- Granted
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种缓存刷新方法及装置,属于操作系统领域。该方法包括:在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询第二处理器核心是否为历史运行过该进程的处理器核心;若是历史运行过进程的处理器核心,则第一处理器核心向第二处理器核心发送软中断信号;第二处理器核心根据软中断信号刷新第二处理器核心的TLB。本发明解决了通过硬件广播指令来进行所有处理器核心的刷新,会对系统总线的负载造成一定影响的问题;达到了通过软中断信号来触发第二处理器核心刷新TLB,即不会大量占用系统总线的资源,也不需要所有处理器核心都刷新TLB,节省系统总线和处理器核心两者的资源的效果。
Description
技术领域
本发明涉及操作系统领域,特别涉及一种缓存刷新方法及装置。
背景技术
在操作系统中,进程在访问内存时只能对虚拟地址进行操作,虚拟地址通过内存管理单元(英文:MemoryManagementUnit,缩写:MMU)转换到对应的物理地址。该转换过程需要使用地址转换信息。
通常,地址转换信息存储在内存查找转换表中。为了提高地址转换的速度,一部分地址转换信息会存储在页表缓存(英文:TranslationLookasideBuffer,缩写:TLB)中。在进程访问内存时,先在TLB中查找地址转换信息,若在TLB中查找到该地址转换信息,则根据该地址转换信息进行内存访问;若在TLB中未查找到该地址转换信息,则会产生TLBmiss(未命中)信号,重新在内存查找转换表中查找该地址转换信息。TLB中缓存的地址转换信息可能会失效,比如因为进程调度引发地址转换信息失效。
在包括多个处理器核心(英文:Core)的对称多核处理(英文:SymmetricMultiProcessing,缩写:SMP)体系结构中,每个处理器核心对应有自身的TLB。为了防止失效的地址转换信息引发地址访问异常问题,需要刷新TLB。现有技术中的刷新方法包括:若一个进程发生调度,从第一处理器核心调度到第二处理器核心上运行,则操作系统利用系统总线向所有处理器核心发送硬件广播指令,每个处理器核心接收到该硬件广播指令后,检查自身的TLB中是否存在失效的地址转换信息,若存在失效的地址转换信息,则对失效的地址转换信息进行失效处理。失效处理可以是删除处理。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于该硬件广播指令会占用系统总线资源,若进程频繁调度或处理器核心较多,则该硬件广播指令会频繁发起,对整个系统总线的负载造成一定影响。
发明内容
为了解决通过硬件广播指令来进行所有处理器核心的刷新,会对系统总线的负载造成一定影响的问题,本发明实施例提供了一种缓存刷新方法及装置。所述技术方案如下:
第一方面,提供了一种缓存刷新方法,所述方法包括:。
在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心;
若所述第二处理器核心是历史运行过所述进程的处理器核心,则所述第一处理器核心向所述第二处理器核心发送软中断信号;
所述第二处理器核心根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB。
在第一方面的第一种可能的实施方式中,在进程需要从第一处理器核心调度至第二处理器核心时,所述第一处理器核心根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心,包括:
在进程需要从第一处理器核心调度至第二处理器核心时,获取所述第二处理器核心的核心标识;
根据所述核心标识在所述预定状态变量中获取与所述第二处理器核心对应的比特位,所述预定状态变量中包括n个比特位,每个处理器核心与一个比特位对应;
检测与所述第二处理器核心对应的比特位是否为预定取值,所述预定取值表示所述第二处理器核心是历史运行过所述进程的处理器核心。
结合第一方面的第一种可能的实施方式,在第二种可能的实施方式中,在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心之前,还包括:
在所述进程被创建后,由所述进程在进程描述符中构建所述预定状态变量;
在所述进程在某一个处理器核心上运行时,由所述进程将所述预定状态变量中与所述处理器核心的核心标识所对应的比特位置为所述预定取值。
结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述通过所述第二处理器核心根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB之前,还包括:
通过操作系统为每个处理器核心注册软中断处理回调函数;
所述第二处理器核心根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB,包括:
所述第二处理器核心通过所述软中断处理回调函数获取所述软中断信号中携带的进程标识;
所述第二处理器核心通过所述软中断处理回调函数刷新TLB中与所述进程标识对应的地址转换信息。
结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述方法,还包括:
若所述第二处理器核心不是历史运行过所述进程的处理器核心,则将所述进程调度至所述第二处理器核心运行。
第二方面,提供了一种缓存刷新装置,所述装置包括:至少两个处理器核心和与所述至少两个处理器核心相连的存储器;所述存储器存储有所述处理器核心的可执行指令;其中:
第一处理器核心,用于在进程需要从所述第一处理器核心调度至第二处理器核心时,根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心;
所述第一处理器核心,还用于若所述第二处理器核心是历史运行过所述进程的处理器核心,向所述第二处理器核心发送软中断信号;
所述第二处理器核心,还用于根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB。
在第二方面的第一种可能的实施方式中,所述第一处理器核心,还用于在进程需要从第一处理器核心调度至第二处理器核心时,获取所述第二处理器核心的核心标识;
所述第一处理器核心,还用于根据所述核心标识在所述预定状态变量中获取与所述第二处理器核心对应的比特位,所述预定状态变量中包括n个比特位,每个处理器核心与一个比特位对应;
所述第一处理器核心,还用于检测与所述第二处理器核心对应的比特位是否为预定取值,所述预定取值表示所述第二处理器核心是历史运行过所述进程的处理器核心。
结合第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述至少两个处理器核心中的某一个处理器核心,用于在所述进程被创建后,由所述进程在进程描述符中构建所述预定状态变量;
所述至少两个处理器核心中的某一个处理器核心,还用于在所述进程在所述处理器核心上运行时,由所述进程将所述预定状态变量中与所述处理器核心的核心标识所对应的比特位置为所述预定取值。
结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式,在第三种可能的实施方式中,
所述至少两个处理器核心中的某一个处理器核心,用于通过操作系统为每个处理器核心注册软中断处理回调函数;
所述第二处理器核心,还用于根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB,包括:
所述第二处理器核心,还用于通过所述软中断处理回调函数获取所述软中断信号中携带的进程标识;
所述第二处理器核心,还用于通过所述软中断处理回调函数刷新TLB中与所述进程标识对应的地址转换信息。
结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式,在第四种可能的实施方式中,所述第一处理器核心,还用于若所述第二处理器核心不是历史运行过所述进程的处理器核心,则将所述进程调度至所述第二处理器核心运行。
本发明实施例提供的技术方案带来的有益效果是:
通过在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询第二处理器核心是否为历史运行过该进程的处理器核心;若第二处理器核心是历史运行过该进程的处理器核心,则第一处理器核心向第二处理器核心发送软中断信号;由第二处理器核心根据软中断信号刷新第二处理器核心的TLB;解决了通过硬件广播指令来进行所有处理器核心的刷新,会对系统总线的负载造成一定影响的问题;达到了通过软中断信号来触发第二处理器核心刷新TLB,即不会大量占用系统总线的资源,也不需要所有处理器核心都刷新TLB,节省系统总线和处理器核心两者的资源的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的电子设备的结构示意图;
图2是本发明一个实施例提供的缓存处理方法的方法流程图;
图3是本发明另一个实施例提供的缓存处理方法的方法流程图;
图4是图3所示实施例提供的预定状态变量的实施示意图;
图5是本发明一个实施例提供的缓存处理装置的结构方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明一个实施例提供的电子设备的结构示意图。该电子设备采用SMP体系架构,该电子设备中包括至少两个处理器核心、与处理器核心相连的系统总线13和与系统总线13相连的存储器14。
图1中以该电子设备包括24个处理器核心,也即处理器核心0至处理器核心23为例。可选地,电子设备包括有三个处理器插槽(英文:Socket)。处理器核心0至处理器核心7通过处理器插槽10与系统总线13相连,处理器核心8至处理器核心15通过处理器插槽11与系统总线13相连,处理器核心16至处理器核心23通过处理器插槽12与系统总线13相连。
每个处理器核心内部还设置有各自的TLB缓存(图中未示出)。
存储器14中存储有各个处理器核心的可执行指令,比如:操作系统内核指令、进程创建指令、进程调度指令(也称进程调度器)等等。
需要说明的是,图1仅以24个处理器核心和三个处理器插槽来举例说明。但是对电子设备中的处理器核心数量和处理器插槽个数不做具体限定,只需要处理器核心数量≥2即可,处理器核心越多,本发明实施例的缓存刷新方法所能节省的资源量越多。
请参考图2,其示出了本发明一个实施例提供的缓存刷新方法的方法流程图。本实施例以该缓存刷新方法应用于图1所示的实施环境中来举例说明。该缓存刷新方法包括:
步骤202,在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询第二处理器核心是否为历史运行过进程的处理器核心;
步骤204,若第二处理器核心是历史运行过进程的处理器核心,则第一处理器核心向第二处理器核心发送软中断信号;
步骤206,第二处理器核心根据软中断信号刷新第二处理器核心的TLB。
综上所述,本实施例提供的缓存刷新方法,通过在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询第二处理器核心是否为历史运行过该进程的处理器核心;若第二处理器核心是历史运行过该进程的处理器核心,则第一处理器核心向第二处理器核心发送软中断信号;由第二处理器核心根据软中断信号刷新第二处理器核心的TLB;解决了通过硬件广播指令来进行所有处理器核心的刷新,会对系统总线的负载造成一定影响的问题;达到了通过软中断信号来触发第二处理器核心刷新TLB,即不会大量占用系统总线的资源,也不需要所有处理器核心都刷新TLB,节省系统总线和处理器核心两者的资源的效果。
请参考图3,其示出了本发明另一个实施例提供的缓存刷新方法的方法流程图。本实施例以该缓存刷新方法应用于图1所示的实施环境中来举例说明。该缓存刷新方法包括:
步骤301,通过操作系统为每个处理器核心注册软中断处理回调函数;
在操作系统启动阶段,或者其它可能的阶段,通过操作系统为每个处理器核心注册各自对应的软中断处理回调函数。
对于每个处理器核心,该软中断处理器回调函数用于对该处理器核心接收到的软中断信号进行处理。
步骤302,在进程被创建后,由进程在进程描述符中构建预定状态变量;
电子设备中的某一个处理器核心在运行过程中会创建进程。在该进程被创建后,该进程会在自身的进程描述符中构建预定状态变量。也即每个进程的进程描述符中都增加了一个与自身对应的预定状态变量。该预定状态变量中包括n个比特位,每个处理器核心的核心标识与一个比特位对应。
比如,预定状态变量是smp_maps_affinity,若每个处理器插槽上对应的处理器核心是64,则该预定状态变量可以是一个64*n的数组。也即,该预定状态变量中包括64*n个比特位,每个比特位可以与一个处理器核心对应。通常,该预定状态变量中从左往右数的第i位比特位,与核心标识为i的处理器核心对应。
步骤303,在进程在某一个处理器核心上运行时,由进程将预定状态变量中与该处理器核心的核心标识所对应的比特位设置为预定取值;
通常,每个进程在同一时刻只会在一个处理器核心上运行,但是由于进程调度机制的存在,一个进程的生存周期中可能会在一个或者一个以上的处理器核心上运行。
若进程在某一个处理器核心上运行,则由进程将预定状态变量中与该处理器核心的核心标识所对应的比特位设置为预定取值。
换句话说,对于当前进程的预定状态变量smp_maps_affinity中的每个比特位,若该比特位的取值是预定取值时,比如预定取值为1时,代表该比特位对应的处理器核心是历史运行过该进程的处理器核心;若该比特位的取值不是预定取值时,比如预定取值为0时,代表该比特位对应的处理器核心是未运行过该进程的处理器核心。
在该进程被创建后,创建该进程的处理器核心所对应的比特位会被设置为1。在进程从一个处理器核心调度到另一个处理器核心时,另一个处理器核心所对应的比特位会被设置为1。
比如,参考图4,每个进程的进程标识采用地址空间编号(英文:AddressSpaceID,简称:ASID)来表示,对于ASID=0X20的进程来讲,若该进程的进程标识符中的第0位比特位为1、第509位比特位为1、第511位比特位为1,则CPU_ID=1的处理器核心、CPU_ID=509的处理器核心和CPU_ID=511的处理器核心均运行过ASID=0X20的进程,且这三个处理器核心的TLB缓存中都存储有与ASID=0X20对应的地址转换信息0X00001E。
步骤304,在进程需要从第一处理器核心调度至第二处理器核心时,获取第二处理器核心的核心标识;
在进程需要调度时,第一处理器核心会运行进程调度器,进程调度器是操作系统中用于执行进程调度的指令,该进程调度器会根据预定策略决策出该进程需要从第一处理器核心调度至第二处理器核心。
此时,该进程调度器调用预定函数模块tlb_flush_single,该预定函数模块tlb_flush_single获取第二处理器核心的核心标识,也即CPU_ID。
步骤305,根据核心标识在预定状态变量中获取与第二处理器核心对应的比特位;
该预定函数模块tlb_flush_single根据第二处理器核心的核心标识,在预定状态变量中获取与第二处理器核心对应的比特位的取值。
比如,相关的代码示意如下:
SMA=smp_maps_affinity&(CPU_MASK<<CPU_ID)。
其中,CPU_ID是第二处理器核心的核心标识,CPU_MASK是电子设备中处理器核心的总数,smp_maps_affinity是预定状态变量。<<是左移运算符,&是逻辑与符号。通过上述公式,可以从smp_maps_affinity取出与CPU_ID对应的比特位的取值SMA。
步骤306,检测与第二处理器核心对应的比特位是否为预定取值;
预定取值表示第二处理器核心是历史运行过进程的处理器核心。
在该预定函数模块tlb_flush_single根据第二处理器核心的CPU_ID计算得到该第二处理器核心的SMA后,该预定函数模块tlb_flush_single会将SMA反馈给进程调度器。
进程调度器检测第二处理器核心的SMA是否为预定取值1,若第二处理器核心的SMA是预定取值1,则进入步骤307;若第二处理器核心的SMA不是预定阈值(也即SMA=0),则进入步骤309。
步骤307,第一处理器核心向第二处理器核心发送软中断信号;
若第二处理器核心是历史运行过进程的处理器核心,则进程调度器触发第一处理器核心向第二处理器核心发送软中断信号。该软中断信号中携带有中断参数,该中断参数是进程的进程标识,也即ASID。
需要说明的是,软中断信号是软件中断信号,并非是硬件中断信号。另外,软中断信号的发送方式包括:一对一发送方式和一对多发送方式,在本步骤中,第一处理器核心向第二处理器核心采用一对一发送方式发送软中断信号。
然后,第一处理器核心通过进程调度器执行步骤308。
步骤308,第二处理器核心根据软中断信号刷新第二处理器核心的TLB;
第二处理器核心在接收到软中断信号后,执行对应的软中断处理函数。第二处理器核心通过软中断处理回调函数获取软中断信号中携带的进程标识;第二处理器核心通过软中断处理回调函数刷新TLB中与该进程标识对应的地址转换信息。
换句话说,该软中断处理函数从软中断信号中获取中断参数,也即进程的ASID。然后,该软中断处理函数根据该进程的ASID刷新第二处理器核心的TLB,若该TLB存储有与该进程的ASID对应的地址转换信息,则对与该进程的ASID对应的地址转换信息进行失效处理,比如删除。
步骤309,将进程从第一处理器核心调度至第二处理器核心运行。
运行在第一处理器核心上的进程调度器,将进程从第一处理器核心调度至第二处理器核心运行。
综上所述,本实施例提供的缓存刷新方法,通过在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询第二处理器核心是否为历史运行过该进程的处理器核心;若第二处理器核心是历史运行过该进程的处理器核心,则第一处理器核心向第二处理器核心发送软中断信号;由第二处理器核心根据软中断信号刷新第二处理器核心的TLB;解决了通过硬件广播指令来进行所有处理器核心的刷新,会对系统总线的负载造成一定影响的问题;达到了通过软中断信号来触发第二处理器核心刷新TLB,即不会大量占用系统总线的资源,也不需要所有处理器核心都刷新TLB,节省系统总线和处理器核心两者的资源的效果。
本实施例提供的缓存刷新方法,还通过在进程的进程描述符中增设预定状态变量,使得进程调度器能够判断出第二处理器核心是否是历史运行过该进程的处理器核心,达到了如果第二处理器核心是历史运行过该进程的处理器核心,则该进程的调度过程中只需要由一个处理器核心(第二处理器核心)刷新TLB即可,不需要每个处理器核心均刷新TLB;如果第二处理器核心是未运行过该进程的处理器核心,则该进程的调度过程中所有处理器核心均不需要刷新TLB的效果。
以下为本发明实施例的装置实施例,对于装置实施例中未详细阐述的细节,可以结合参考上述对应的方法实施例。
请参考图5,其示出了本发明一个实施例提供的缓存刷新装置的结构方框图,该装置可以是图1所示的电子设备的全部或一部分。该装置包括:至少两个处理器核心520和与所述至少两个处理器核心520相连的存储器540;所述存储器存储540有所述处理器核心520的可执行指令;其中:
第一处理器核心522,用于在进程需要从所述第一处理器核心522调度至第二处理器核心524时,根据预定状态变量查询所述第二处理器核心524是否为历史运行过所述进程的处理器核心;
所述第一处理器核心522,还用于若所述第二处理器核心524是历史运行过所述进程的处理器核心,向所述第二处理器核心524发送软中断信号;
所述第二处理器核心524,还用于根据所述软中断信号刷新所述第二处理器核心524的TLB。
综上所述,本实施例提供的缓存刷新装置,通过在进程需要从第一处理器核心调度至第二处理器核心时,根据预定状态变量查询第二处理器核心是否为历史运行过该进程的处理器核心;若第二处理器核心是历史运行过该进程的处理器核心,则第一处理器核心向第二处理器核心发送软中断信号;由第二处理器核心根据软中断信号刷新第二处理器核心的TLB;解决了通过硬件广播指令来进行所有处理器核心的刷新,会对系统总线的负载造成一定影响的问题;达到了通过软中断信号来触发第二处理器核心刷新TLB,即不会大量占用系统总线的资源,也不需要所有处理器核心都刷新TLB,节省系统总线和处理器核心两者的资源的效果。
在基于图5所提供的可选的实施例中,所述第一处理器核心522,还用于在进程需要从第一处理器核心522调度至第二处理器核心524时,获取所述第二处理器核心524的核心标识;
所述第一处理器核心522,还用于根据所述核心标识在所述预定状态变量中获取与所述第二处理器核心524对应的比特位,所述预定状态变量中包括n个比特位,每个处理器核心与一个比特位对应;
所述第一处理器核心522,还用于检测与所述第二处理器核心524对应的比特位是否为预定取值,所述预定取值表示所述第二处理器核心524是历史运行过所述进程的处理器核心。
在基于图5所提供的可选的实施例中,所述至少两个处理器核心中的某一个处理器核心,用于在所述进程被创建后,由所述进程在进程描述符中构建所述预定状态变量;
所述至少两个处理器核心中的某一个处理器核心520,还用于在所述进程在所述处理器核心520上运行时,由所述进程将所述预定状态变量中与所述处理器核心520的核心标识所对应的比特位置为所述预定取值。
在基于图5所提供的可选的实施例中,所述至少两个处理器核心中的某一个处理器核心520,用于通过操作系统为每个处理器核心520注册软中断处理回调函数;
所述第二处理器核心524,还用于根据所述软中断信号刷新所述第二处理器核心524的页表缓存TLB,包括:
所述第二处理器核心524,还用于获取所述软中断信号中携带的进程标识;
所述第二处理器核心524,还用于通过所述软中断处理回调函数刷新TLB中与所述进程标识对应的地址转换信息。
在基于图5所提供的可选的实施例中,所述第一处理器核心522,还用于若所述第二处理器核心524不是历史运行过所述进程的处理器核心,则将所述进程调度至所述第二处理器核心524运行。
本实施例提供的缓存刷新装置,还通过在进程的进程描述符中增设预定状态变量,使得进程调度器能够判断出第二处理器核心是否是历史运行过该进程的处理器核心,达到了如果第二处理器核心是历史运行过该进程的处理器核心,则该进程的调度过程中只需要由一个处理器核心(第二处理器核心)刷新TLB即可,不需要每个处理器核心均刷新TLB;如果第二处理器核心是未运行过该进程的处理器核心,则该进程的调度过程中所有处理器核心均不需要刷新TLB的效果。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种缓存刷新方法,其特征在于,所述方法包括:。
在进程需要从第一处理器核心调度至第二处理器核心时,所述第一处理器核心根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心;
若所述第二处理器核心是历史运行过所述进程的处理器核心,则所述第一处理器核心向所述第二处理器核心发送软中断信号;
所述第二处理器核心根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB。
2.根据权利要求1所述的方法,其特征在于,在进程需要从第一处理器核心调度至第二处理器核心时,所述第一处理器核心根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心,包括:
在进程需要从第一处理器核心调度至第二处理器核心时,获取所述第二处理器核心的核心标识;
根据所述核心标识在所述预定状态变量中获取与所述第二处理器核心对应的比特位,所述预定状态变量中包括n个比特位,每个处理器核心与一个比特位对应;
检测与所述第二处理器核心对应的比特位是否为预定取值,所述预定取值表示所述第二处理器核心是历史运行过所述进程的处理器核心。
3.根据权利要求2所述的方法,其特征在于,在进程需要从第一处理器核心调度至第二处理器核心时,所述第一处理器核心根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心之前,还包括:
在所述进程被创建后,由所述进程在进程描述符中构建所述预定状态变量;
在所述进程在某一个处理器核心上运行时,由所述进程将所述预定状态变量中与所述处理器核心的核心标识所对应的比特位置为所述预定取值。
4.根据权利要求1至3任一所述的方法,其特征在于,所述通过所述第二处理器核心根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB之前,还包括:
通过操作系统为每个处理器核心注册软中断处理回调函数;
所述第二处理器核心根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB,包括:
所述第二处理器核心通过所述软中断处理回调函数获取所述软中断信号中携带的进程标识;
所述第二处理器核心通过所述软中断处理回调函数刷新所述TLB中与所述进程标识对应的地址转换信息。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法,还包括:
若所述第二处理器核心不是历史运行过所述进程的处理器核心,则将所述进程调度至所述第二处理器核心运行。
6.一种缓存刷新装置,其特征在于,所述装置包括:至少两个处理器核心和与所述至少两个处理器核心相连的存储器;所述存储器存储有所述处理器核心的可执行指令;其中:
第一处理器核心,用于在进程需要从所述第一处理器核心调度至第二处理器核心时,根据预定状态变量查询所述第二处理器核心是否为历史运行过所述进程的处理器核心;
所述第一处理器核心,还用于若所述第二处理器核心是历史运行过所述进程的处理器核心,向所述第二处理器核心发送软中断信号;
所述第二处理器核心,还用于根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB。
7.根据权利要求6所述的装置,其特征在于,
所述第一处理器核心,还用于在进程需要从第一处理器核心调度至第二处理器核心时,获取所述第二处理器核心的核心标识;
所述第一处理器核心,还用于根据所述核心标识在所述预定状态变量中获取与所述第二处理器核心对应的比特位,所述预定状态变量中包括n个比特位,每个处理器核心与一个比特位对应;
所述第一处理器核心,还用于检测与所述第二处理器核心对应的比特位是否为预定取值,所述预定取值表示所述第二处理器核心是历史运行过所述进程的处理器核心。
8.根据权利要求7所述的装置,其特征在于,
所述至少两个处理器核心中的某一个处理器核心,用于在所述进程被创建后,由所述进程在进程描述符中构建所述预定状态变量;
所述至少两个处理器核心中的某一个处理器核心,还用于在所述进程在所述处理器核心上运行时,由所述进程将所述预定状态变量中与所述处理器核心的核心标识所对应的比特位置为所述预定取值。
9.根据权利要求6至8任一所述的装置,其特征在于,
所述至少两个处理器核心中的某一个处理器核心,用于通过操作系统为每个处理器核心注册软中断处理回调函数;
所述第二处理器核心,还用于根据所述软中断信号刷新所述第二处理器核心的页表缓存TLB,包括:
所述第二处理器核心,还用于通过所述软中断处理回调函数获取所述软中断信号中携带的进程标识;
所述第二处理器核心,还用于通过所述软中断处理回调函数刷新TLB中与所述进程标识对应的地址转换信息。
10.根据权利要求6至9任一所述的装置,其特征在于,
所述第一处理器核心,还用于若所述第二处理器核心不是历史运行过所述进程的处理器核心,则将所述进程调度至所述第二处理器核心运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510601236.5A CN105183668B (zh) | 2015-09-21 | 2015-09-21 | 缓存刷新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510601236.5A CN105183668B (zh) | 2015-09-21 | 2015-09-21 | 缓存刷新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105183668A true CN105183668A (zh) | 2015-12-23 |
CN105183668B CN105183668B (zh) | 2018-05-18 |
Family
ID=54905758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510601236.5A Active CN105183668B (zh) | 2015-09-21 | 2015-09-21 | 缓存刷新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183668B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718320A (zh) * | 2016-01-18 | 2016-06-29 | 华为技术有限公司 | 一种时钟任务处理方法、装置及设备 |
CN117389625A (zh) * | 2023-12-11 | 2024-01-12 | 沐曦集成电路(南京)有限公司 | 基于主动中断指令的进程同步方法、系统、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作系统反向页表的页迁移和复制方法 |
CN101371232A (zh) * | 2005-10-31 | 2009-02-18 | 英特尔公司 | 在用户级存储器中提供后备存储器 |
US20100251260A1 (en) * | 2005-08-10 | 2010-09-30 | Nokia Corporation | Pre-emptible context switching in a computing device |
-
2015
- 2015-09-21 CN CN201510601236.5A patent/CN105183668B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作系统反向页表的页迁移和复制方法 |
US20100251260A1 (en) * | 2005-08-10 | 2010-09-30 | Nokia Corporation | Pre-emptible context switching in a computing device |
CN101371232A (zh) * | 2005-10-31 | 2009-02-18 | 英特尔公司 | 在用户级存储器中提供后备存储器 |
Non-Patent Citations (1)
Title |
---|
任晓瑞等: "支持对称多处理器结构的操作系统设计", 《航空计算技术》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718320A (zh) * | 2016-01-18 | 2016-06-29 | 华为技术有限公司 | 一种时钟任务处理方法、装置及设备 |
US10891171B2 (en) | 2016-01-18 | 2021-01-12 | Huawei Technologies Co., Ltd. | Method, apparatus and device for transitioning between data and control core and migrating clock task from data core to control core |
CN117389625A (zh) * | 2023-12-11 | 2024-01-12 | 沐曦集成电路(南京)有限公司 | 基于主动中断指令的进程同步方法、系统、设备及介质 |
CN117389625B (zh) * | 2023-12-11 | 2024-03-12 | 沐曦集成电路(南京)有限公司 | 基于主动中断指令的进程同步方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105183668B (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190102346A1 (en) | Offload of data lookup operations | |
US9229878B2 (en) | Memory page offloading in multi-node computer systems | |
CN102971718B (zh) | 用于处理经发布至数据处理设备内本地高速缓存结构的访问操作的设备与方法 | |
US9400767B2 (en) | Subgraph-based distributed graph processing | |
CN104123171B (zh) | 基于numa架构的虚拟机迁移方法及系统 | |
US10048886B2 (en) | Method and system providing file system for an electronic device comprising a composite memory device | |
US20160055095A1 (en) | Storing data from cache lines to main memory based on memory addresses | |
JPWO2013099414A1 (ja) | レジスタ・マッピング方法 | |
CN104252392A (zh) | 一种访问数据缓存的方法和处理器 | |
US10031697B2 (en) | Random-access disjoint concurrent sparse writes to heterogeneous buffers | |
CN104572845A (zh) | 文件分发方法、装置、设备及系统 | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
EP4318211A1 (en) | Method for inspecting code under weak memory order architecture, and corresponding device | |
US20150234687A1 (en) | Thread migration across cores of a multi-core processor | |
WO2021061269A1 (en) | Storage control apparatus, processing apparatus, computer system, and storage control method | |
CN103020003A (zh) | 面向多核程序确定性重演的内存竞争记录装置及其控制方法 | |
US9965402B2 (en) | Memory initialization detection system | |
US8312239B2 (en) | Cache management for increasing performance of high-availability multi-core systems | |
CN105183668A (zh) | 缓存刷新方法及装置 | |
CN112631510B (zh) | 堆栈区域扩充的方法、装置及硬件平台 | |
CN102929770A (zh) | 嵌入式linux系统用户态任务独占的监测定位方法 | |
CN117311817A (zh) | 一种协处理器控制方法、装置、设备及存储介质 | |
CN106569961B (zh) | 一种基于访存地址连续性的cache模块及其访存方法 | |
CN104516823A (zh) | 一种数据存储方法和装置 | |
CN111352757A (zh) | 检测未初始化存储器读取的设备、系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |