本申请涉及计算机技术领域,尤其涉及一种处理器、缓存处理方法及电子设备。
背景技术:
现代数据中心中,服务器的可靠性时刻影响着业务的稳定性,任何不可预知的宕机都会导致业务的中断,为公司带来不可挽回的损失。通过对业内数据中心中大量宕机数据的分析,发现cpu(centralprocessingunit,中央处理器)内部的cache(高速缓冲存储器)、tlb(translationlookasidebuffer,转换检测缓冲区)错误导致的宕机比例在一半以上。
而针对cpu内部的cache和tlb,业内并没有提供一个很好的隔离机制,来提升cpu内部cache和tlb的可靠性,降低因其引起的系统故障。
技术实现要素:
有鉴于此,本申请实施例提供一种处理器、缓存处理方法及电子设备,以提高处理器的可靠性。
第一方面,本申请实施例提供一种处理器,包括:缓存和检测装置;
所述缓存包括多个缓存行;
所述检测装置用于在所述多个缓存行中的至少一个缓存行发生的错误满足预设条件时,隔离所述至少一个缓存行。
第二方面,本申请实施例提供一种缓存处理方法,包括:
获取多个缓存行中的至少一个缓存行发生的错误信息;
若所述错误信息满足预设条件,则隔离所述至少一个缓存行。
第三方面,本申请实施例提供一种电子设备,包括第一方面中的处理器。
本申请实施例提供的处理器、缓存处理方法及电子设备,包括缓存和检测装置,所述缓存可以包括多个缓存行,所述检测装置可以在所述多个缓存行中的至少一个缓存行发生的错误满足预设条件时,隔离所述至少一个缓存行,提高缓存的可靠性,并且,以缓存行为粒度进行隔离,保证了某一个或几个缓存行出现问题时,也不影响处理器的整体使用,有效提高了处理器的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的处理器的结构框图;
图2为本申请实施例提供的处理器的一种cache架构示意图;
图3为本申请实施例提供的一种处理器的结构示意图;
图4为本申请实施例提供的处理器中的cache存储空间示意图;
图5为本申请实施例提供的处理器的巡检逻辑示意图;
图6为本申请实施例提供的另一种处理器的结构示意图;
图7为本申请实施例提供的一种缓存处理方法的流程示意图;
图8为本申请实施例提供的一种数据处理方法的流程示意图;
图9为本申请实施例提供的一种数据处理装置的结构示意图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
处理器是计算机的运算核心和控制核心,主要包括算术逻辑运算单元和缓存等部件。其中,所述缓存可以包括多个缓存行,本申请实施例主要用于对处理器中的缓存行进行监测。
图1为本申请实施例提供的处理器的结构框图。如图1所示,本申请实施例中的处理器可以包括:缓存11和检测装置12。
所述缓存11可以包括多个缓存行;所述检测装置12可以用于在所述多个缓存行中的至少一个缓存行发生的错误满足预设条件时,隔离所述至少一个缓存行。
其中,所述处理器可以为中央处理器或者其它任意类型的处理器。所述缓存11可以是指高速缓存或其它任意类型的缓存,例如,cache或tlb等。以下为了便于描述,以所述缓存11为cache、缓存行为cacheline(高速缓冲存储器行)为例来对本申请实施例进行详细说明。
具体的,cache可以包括多个cacheline,所述检测装置12可以在任一cacheline发生的错误满足预设条件时,隔离所述cacheline。
图2为本申请实施例提供的处理器的一种cache架构示意图。如图2所示,处理器可以包括一个或多个cpudie(中央处理器裸片),每个cpudie可以包括一个或多个cpucore(中央处理器核)。
每个cpucore都可以配置有cache,cache是位于cpu执行单元和dram(dynamicrandomaccessmemory,主存储器)之间的存储器,规模较小,但速度很高,通常由sram(staticrandomaccessmemory,静态存储器)组成。cpu的速度远高于内存,当cpu直接从内存中存取数据时要等待一定时间周期,而cache则可以保存cpu刚用过或循环使用的一部分数据,如果cpu需要再次使用该部分数据时可从cache中直接调用,这样就避免了重复存取数据,减少了cpu的等待时间,因而提高了系统的效率。
所述cache可以有多种类型。可选的,cache的类型可以包括:
第一级指令cache(level-1instructioncache,l1icache,也称l1指令cache),用于缓存cpu指令,属于只读型缓存,一般每个cpucore都有一组l1icache;
第一级数据cache(level-1datacache,l1dcache,也称l1数据cache),用于缓存cpu访问数据,速度最快,容量最小,一般每个cpucore都有一组l1dcache;
第二级cache(level-2cache,l2cache),用于缓存cpu访问数据,位于第一级cache和最后一级cache之间,速度和容量都适中,一般每个cpucore都有一组;
最后一级cache(last-levelcache,llc),用于缓存cpu或io设备访问数据,速度相对l1和l2较慢,但容量最大,一般每个cpudie都有一组,不同cpucore之间可以共享。
其中,所述第一级指令cache、第一级数据cache、第二级cache可以设置在cpucore内,所述最后一级cache可以设置在cpucore外。
本申请实施例中,cpu内可以设置有以上一种或多种类型的cache,不同的cpucore可以配置有相同类型的cache,也可以配置有不同类型的cache。例如,每个cpucore内都可以设置有第一级指令cache、第一级数据cache、第二级cache设置,cpucore外可以设置有最后一级cache;或者,某一cpucore内可以仅设置有第一级指令cache和第一级数据cache,另一cpucore内可以设置有第一级指令cache、第一级数据cache和第二级cache。
可选的,处理器中的cpucore的个数可以为多个,每个cpucore可以对应配置有至少一种类型的cache以及一检测装置12。其中,cache可以包括多个cacheline。
图3为本申请实施例提供的一种处理器的结构示意图。如图3所示,cpudie可以包括多个cpucore,每个cpucore除了配置有cache以外,还可以配置有一对应的检测装置12(为了便于描述,图3仅示出了设置在cpucore内的cache,没有示出设置在cpucore外的cache)。
本申请实施例中所述的cpucore配置有cache是指,cpucore内设置有cache(一般是第一级指令cache、第一级数据cache、第二级cache中的至少一种),和/或,cpucore外设置有与该cpucore连接的cache(一般是最后一级cache)。本申请实施例中所述的cpucore配置有检测装置12是指,cpucore内或cpucore外设置有与该cpu对应的cache连接的检测装置12,该检测装置12用于在cpu对应的cacheline发生的错误满足预设条件时隔离所述cacheline。
所述预设条件可以根据实际需要来设置。可选的,所述检测装置12可以具体用于:若cacheline发生可纠正错误(correctederror,ce)的次数大于对应的阈值,或者,所述cacheline发生不可纠正错误(uncorrectederror,uce),则隔离所述cacheline。
其中,可纠正错误可以是指系统中发生的已经被纠正的硬件错误,例如cache中发生的1-bitecc错误。不可纠正错误指系统中发生的不可被纠正的硬件错误,而这类错误又可分为两类,一类是已经导致系统上下文被破坏,此时系统只能选择宕机,另一类是虽然错误无法被纠正,但是系统上下文没有被破坏,可以通过一些隔离措施来补救。若检测装置12检测到cacheline发生了不可纠正的错误,或者发生的可纠正错误积累到一定程度,则可以隔离所述cacheline。
本领域技术人员可以根据实际需要来配置所述检测装置12,只要能够实现本申请实施例提供的上述功能即可。例如,判断cacheline是否发生可纠正的错误或者不可纠正的错误可以采用现有的cache检测方法来实现,判断发生可纠正错误的次数是否大于对应的阈值可以通过门电路等来实现,隔离cacheline可以通过将cacheline的相应位置0或置1等方式来实现。
可选的,可以在cacheline中设置相应的存储空间,用于存储发生可纠正错误的次数以及隔离状态等信息。
图4为本申请实施例提供的处理器中的cache的存储空间示意图。如图4所示,现有技术中,一个cacheline中除了数据域以外,还存在tag(标签)域和status(状态)域,tag域用于存放物理地址,物理地址可以用于组内寻址。而status(状态)域内则包含了valid(有效)位、lock(锁)位、dirty(脏)位等状态信息,其中valid位用来表示该cacheline是否有效,lock位表示该cacheline是否被锁,是否允许写操作,dirty位表示该cacheline中的数据是否与主存一致。
本申请实施例中,可以在cacheline中增加一部分存储空间,具体地,可以增加一个id域(身份标识域,用于存储id信息)、一个ce域(可纠正错误域,用于存储该cacheline发生的可纠正错误次数),并在status域中增加了一个online位(在线位,用于标识该cacheline是否被隔离,即是否可用)。
相应的,所述检测装置12具体可以用于:若检测到cacheline出现可纠正的错误,则将所述cacheline的ce域的值加1,并判断所述ce域的值是否大于对应的阈值,若大于,则更新所述cacheline的online位。
可选的,可以设置所述online位为0时表示cacheline被隔离,所述online位为1时表示cacheline未被隔离。每次初始化后,将online位设置为1,当检测到ce域的值大于对应的阈值时,可以将online位设置为0。
或者,当检测到ce域的值大于对应的阈值时,可以首先判断lock位是否为0,若lock位为0,则将online位设置为0;若lock位为1,则说明该cacheline正在被使用,则可以暂时不更新online位,待lock位恢复到0时,再将online位设置为0。
当cpu的执行单元或者io设备访问cacheline时,可以首先读取cacheline的online位,若online位为1,说明未被隔离,可以正常访问;若online位为0,说明该cacheline被隔离,不能被访问。
当然,也可以设置所述online位为1时表示cacheline被隔离,所述online位为0时表示cacheline未被隔离,只要满足online位可以表征cacheline是否被隔离即可。
本申请实施例提供了一种以cacheline为单位的故障隔离机制,即发现某一个cacheline发生错误后,只需要把这个cacheline隔离,而无需把其所在的cpucore或者cpudie隔离,不影响cpucore或cpudie的整体使用,降低了隔离机制对系统的影响,促使该隔离机制可以在数据中心大量使用。
所述检测装置12可以通过硬件来实现,从而将cache相关的故障隔离从软件层面迁移到硬件层面,提高了隔离的可靠性和成功概率。
ras(reliability,availabilityandserviceability,可靠性、可用性和可服务性)是现代设备的重要性能。其中,reliability指的是系统必须尽可能的可靠,不会意外的崩溃,重启甚至导致系统物理损坏,这意味着一个具有可靠性的系统必须能够对于某些小的错误能够做到自修复,对于无法自修复的错误也尽可能进行隔离,保障系统其余部分正常运转。availability指的是系统必须能够确保尽可能长时间工作而不下线,即使系统出现一些小的问题也不会影响整个系统的正常运行,在某些情况下甚至可以进行hotplug的操作,替换有问题的组件,从而严格的确保系统的downtime时间在一定范围内。serviceability指的是系统能够提供便利的诊断功能,如系统日志,动态检测等手段方便管理人员进行系统诊断和维护操作,从而及早的发现错误并且修复错误。
ras的作用在于确保整个系统尽可能长期可靠的运行而不下线,并且具备足够强大的容错机制。这对于像大型的数据中心、网络中心如股票证券交易所、电信机房、银行的数据库中心等应用环境是不可或缺的一部分。本申请实施例提供的技术方案,能够有效提高系统的ras,保障系统正常运行。
可选的,可以针对不同类型的cache分别设置对应的阈值,不同的cache类型可以对应不同的阈值。例如,l1指令cache对应的阈值为3,l1数据cache对应的阈值为5,当l1指令cache中的某个cacheline发生可纠正错误次数超过3时,可以隔离该cacheline,而对于l1数据cache来说,其中的cacheline发生可纠正错误次数超过5时才会隔离该cacheline,从而针对不同的类型的cache进行不同的处理,满足不同类型的cache的使用需求。
综上,本实施例提供的处理器,包括cache和检测装置12,所述cache可以包括多个cacheline,所述检测装置12可以在多个cacheline中的至少一个cacheline发生的错误满足预设条件时,隔离所述至少一个cacheline,提高cache的可靠性;并且,以cacheline为粒度进行隔离,保证了某一个或几个cacheline出现问题时,也不影响处理器的整体使用,有效提高了处理器的性能。
在cache被访问时,cache会被写入或读取数据,检测装置12可以判断cacheline是否发生错误并在发生的错误满足一定条件时,隔离所述cacheline。进一步地,在cache没有被访问时,检测装置12可以对cache进行自动巡检,并根据巡检结果(是否发生可纠正错误、或不可纠正错误)对满足条件的cacheline进行隔离。
可选的,当检测装置12发现cache访问空闲时,可以发起巡检任务,巡检任务以cacheline的id信息作为标识,以cacheline为粒度逐一检测。巡检任务的优先级为最低,一旦发现有cpu或者io设备发起cache访问,巡检任务就会退出,下一次巡检任务则可以从退出的cacheline开始。
具体的,检测装置12可以读取cacheline的id域,所述id域存储有cacheline的id信息,所述id信息在cache内部唯一。所述检测装置12可以在cache没有被访问时,对cache中的cacheline进行巡检,以主动发现cacheline存在的问题。
巡检在本申请实施例中是指检测装置12发起的针对cache的自动读写检测任务,即在不影响cache正常读写性能的时候,根据cacheline的id信息,给cacheline数据域中的各个字节写入数据,并做校验,从而主动发现cache硬件错误和损害。
可选的,巡检过程可以包括:根据cacheline的id信息,在cacheline中写入数据,并对写入的数据进行校验。若cacheline发生可纠正错误的次数大于对应的阈值,或者,所述cacheline发生不可纠正错误,则隔离所述cacheline。
这样,当cache不忙的时候,检测装置12可以通过id信息巡检cache,在巡检过程中,如果cacheline出现了不可纠正错误,则设置online位为0,如果cacheline出现了可纠正错误,则增加ce域的计数值,在ce域的计数值超过阈值时,设置online位为0,从而隔离所述cacheline。
图5为本申请实施例提供的处理器的巡检逻辑示意图。如图5所示,检测装置12可以读取cacheline的id信息,根据id信息在cacheline的数据域中写入数据并进行校验,在检测到cacheline出现可纠正的错误时,可以将cacheline的ce域的值加1,并判断ce域的值是否大于对应的阈值,若大于,则更新所述cacheline的online位。
可选的,还可以引入对lock位的检测。与前述实施例类似,如果ce域的值大于对应的阈值,且lock位为0,则巡检引擎会将该cacheline的online位设置为0,表示该cacheline已经被隔离,后续cpu和io设备将无法访问该cacheline;如果lock为1,则无法隔离。如果ce域的值不大于对应的阈值,则不做任何隔离动作。
可选的,在对全部空闲cache巡检完毕后,可以立刻从头开始重新进行巡检,也可以经过一定时间后再重新进行巡检。巡检的频率可以根据实际需要来设置,例如,每个10分钟巡检一次,或者,也可以由用户确定频率。
为了提高可靠性,针对新引入的id域和ce域,还可以提供ecc(errorcorrectingcode,校验和纠正功能)。ecc是一种能够实现“错误检查和纠正”的技术,能够使整个设备在工作时更趋于安全稳定。
具体的,可以采用ecc技术对cacheline的id域和ce域进行校验,如果发现id域或ce域错误,且无法纠正,则直接将该cacheline的online位设置为0,从而隔离该cacheline。
综上,本申请实施例引入cache自动巡检机制,在不影响cache使用的情况下,由检测装置12自动巡检所有cacheline,主动发现错误,并主动触发隔离机制,隔离有问题的cacheline,实现以cacheline为粒度的自动检测和自动隔离,降低了后期cpu在实际场景中触发cache错误的概率,大大提高了cache的可靠性,降低了因cache类错误导致系统宕机的概率,提高了系统整体的可靠性。
在本申请实施例提供的技术方案中,所述处理器还可以包括mca(machine-checkarchitecture,硬件检测机制)装置,从而通过mca装置实现cache的监控。
图6为本申请实施例提供的另一种处理器的结构示意图。如图6所示,处理器可以包括cache、检测装置12和mca装置13,其中,cache和检测装置12的结构、功能和连接关系均与前述实施例类似,此处不再赘述。
检测装置12还可以与所述mca装置13连接,所述检测装置12可以在cacheline被隔离后,向mca装置13发送所述cacheline的隔离信息,所述mca装置13用于根据cacheline的隔离信息对cache进行监控。
其中,mca是intelx86架构中的一套处理硬件错误的机制,能够监控cache的状态并提供其是否“健康”的指示。cache在正常下处于“绿色”的状态,满足一定条件时,进入“黄色”状态。如果检测到“黄色”状态,则会触发cache-threshold-trigger(cache阈值触发器),系统会根据出错的是l1cache、l2cache、还是llc,做出不同的处理。
对“黄色”状态的cpu/系统/平台响应优先级应小于对未更正错误的响应。未更正的错误意味着实际发生了严重错误,而“黄色”状态是警告,虽然cache已经满足了一定的条件,但本身可能并不是严重事件,而且错误已更正,系统状态不受影响。
本申请实施例中,将实现mca的硬件称为mca装置13,也就是说,所述mca装置13可以是任意能够实现mca功能的硬件装置,例如,可以通过寄存器等来实现mca功能。
可选的,所述mca装置13具体可以用于:若被隔离的cacheline的数量大于对应的极限值,则上报操作系统。
具体的,当cpu访问l1指令cache、l1数据cache、l2cache、last-levelcache、或者io设备通过ddio(datadirectio)技术访问last-levelcache的时候,如果cacheline发生了可纠正的错误,则检测装置12会将cacheline中的ce域加1,并与对应的阈值比较:如果ce域的值大于等于该值,且lock位为0,则检测装置12会将该cacheline的online位设置为0,表示该cacheline已经被隔离,后续cpu和io设备将无法访问该cacheline。如果lock为1,则无法隔离。如果ce域的值小于对应的阈值,则不做任何隔离动作。
与此同时,检测装置12会将该cacheline的隔离信息发送给mca装置13,所述隔离信息可以包括cacheline的id信息、错误信息发生的种类和位置、隔离结果信息等等,所述隔离信息可以通过mca的cmci中断上报给操作系统。
mca在收到cacheline的隔离信息后,会记录该cache已经被隔离的行数(cache中被隔离的cacheline的数量),如果行数超过了对应的极限值,则mca向操作系统上报cache为“黄色”状态,否则为“绿色”状态。
操作系统检测到cache“黄色”状态后,除了会记录到日志里,还会调用cache-threshold-trigger来隔离该cache所在的cpucore或cpudie。如果为“绿色”状态则只是记录日志。操作系统在cache为“黄色”状态或“绿色”状态时的具体处理方法属于现有技术,本实施例中不再赘述。
类似的,在检测装置12对cache进行自动巡检的过程中,若cacheline被隔离,则检测装置12可以按照上述方法对cacheline进行处理,将该cacheline的隔离信息发送给mca装置13,mca在收到cacheline隔离信息后,会记录该cache已经被隔离的行数,如果行数超过了对应的极限值,向操作系统上报cache为“黄色”状态,否则为“绿色”状态。
可选的,可以为不同的cpucore或不同的cache类型配置不同的极限值,针对每个cpucore或每个cache类型分别进行判断。当某一cpucore的某一类型的cache中被隔离的cacheline的数量大于对应的极限值时,则将cache标记为“黄色”状态,上报操作系统,由操作系统进行进一步处理。
本申请实施例中,可以通过msr(modelspecificregisters,模型特定寄存器)来存储cache对应的发生可纠正错误的阈值以及对应的极限值。考虑到不同的cpucore和不同类型的cache可能对应不同的阈值和极限值,所述msr具体可以用于:存储各cpucore的l1数据cache、l1指令cache、l2cache对应的阈值和极限值,存储各cpudie的llc对应的阈值和极限值。
可选的,对于每个cpucore,可以引入msr存储以下数据:
msr_l1i_ce_threshold:l1指令cache发生可纠正错误的阈值,当超过这个阈值,检测装置12会将cacheline的online位设置为0;
msr_l1d_ce_threshold:l1数据cache发生可纠正错误的阈值,当超过这个阈值,检测装置12会将cacheline的online位设置为0;
msr_l2c_ce_threshold:l2cache发生可纠正错误的阈值,当超过这个阈值,检测装置12会将cacheline的online位设置为0;
msr_l1i_isol_ltd:l1指令cache被隔离的cacheline数量极限值,当超过这个值的时候,mca装置13会上报cache处于“黄色”状态;
msr_l1d_isol_ltd:l1数据cache被隔离的cacheline数量极限值,当超过这个值的时候,mca装置13会上报cache处于“黄色”状态;
msr_l2c_isol_ltd:l2cache被隔离的cacheline数量极限值,当超过这个值的时候,mca装置13会上报cache处于“黄色”状态。
对于每个cpudie,可以引入msr存储如下数据:
msr_llc_ce_threshold:last-levelcache发生可纠正错误的阈值,当超过这个阈值,检测装置12会将cacheline的online位设置为0;
msr_llc_isol_ltd:last-levelcache被隔离的cacheline数量极限值,当超过这个值的时候,mca装置13会上报cache处于“黄色”状态。
进一步地,在mca装置13将cache的状态上报操作系统之后,操作系统可以利用cache-threshold-trigger对cpucore或者整个cpudie进行隔离。可选的,如果被隔离的llc行数大于对应的极限值,则可以隔离对应的cpudie;如果被隔离的非llccache行数大于对应的极限值,则可以隔离对应的cpucore,隔离cpudie或cpucore的具体实现方法可以参照现有技术。
综上,本申请实施例中,检测装置12在cacheline被隔离时,可以将隔离信息发送给mca装置13,通过mca装置13实现对cache的监控,进一步提高了系统可靠性,并且本申请实施例提供的cacheline隔离方案能够和intel现有mca架构无缝结合,保证了在实现过程中的兼容性,另外,不同类型的cacheline可以设置不同的阈值和极限值,满足了不同类型的cache的使用需求,保证系统正常运行。
以上以cache为例对本申请实施例的具体实现方式进行了说明,本申请实施例的技术思想同样也适用于处理器中的其它缓存,如tlb等,例如mmu(memorymanagementunit,内存管理单元)tlb、iommu(input/outputmemorymanagementunit,输入输出内存管理单元)tlb、smmu(systemmemorymanagementunit,系统内存管理单元)tlb等。tlb对应的缓存行可以为tlbline。
在将以上方案应用于其他缓存时,只要用其他缓存代替上述的cache,用其他缓存行代替上述的cacheline即可。
例如,在前述方案中,用tlb代替cache,用tlbline代替cacheline,即可得到对tlb进行监控的方案。
tlb也可以分为多种类型,例如,所述tlb的类型可以包括一级tlb、二级tlb等。与cache类似,可以针对不同的tlb类型分别设置对应的阈值和极限值。
可选的,在处理器内部可以同时设置有cache和tlb,均与检测装置12连接,检测装置12可以同时对cache和tlb进行监控。
下面结合如下的方法实施例以及附图对本申请实施例提供的处理方法的实现过程进行介绍。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图7为本申请实施例提供的一种缓存处理方法的流程示意图。如图7所示,本实施例中的缓存处理方法,可以包括:
步骤701、获取多个缓存行中的至少一个缓存行发生的错误信息。
步骤702、若所述错误信息满足预设条件,则隔离所述至少一个缓存行。
本实施例提供的缓存处理方法的执行主体可以为前述任一实施例所述的处理器,方法的具体实现原理和过程可以参见前述实施例,此处不再赘述。
可选的,所述发生的错误信息包括发生可纠正错误的次数和/或发生不可纠正错误的次数。
可选的,若所述错误信息满足预设条件,则隔离所述至少一个缓存行,可以包括:若任一缓存行发生可纠正错误的次数大于对应的阈值,或者,所述缓存行发生不可纠正错误,则隔离所述缓存行。
可选的,获取缓存行发生的错误信息,可以包括:若检测到所述缓存行出现可纠正的错误,则将ce域的值加1,并读取所述ce域的值;其中,所述ce域用于存储缓存行发生可纠正错误的次数。
可选的,若任一缓存行发生可纠正错误的次数大于对应的阈值,则隔离所述缓存行,可以包括:判断ce域的值是否大于对应的阈值;若大于,则更新所述缓存行的online位;其中,所述online位用于表示缓存行是否被隔离。
可选的,所述方法还可以包括:在缓存行没有被访问时,在缓存行中写入数据,并对数据进行校验。
可选的,所述方法还可以包括:若任一缓存中被隔离的缓存行的数量大于对应的极限值,则隔离所述缓存。
综上,本实施例提供的缓存处理方法,可以获取多个缓存行中的至少一个缓存行发生的错误信息,若所述错误信息满足预设条件,则隔离所述至少一个缓存行,能够有效提高缓存的可靠性;并且,以缓存行为粒度进行隔离,保证了某一个或几个缓存行出现问题时,也不影响处理器的整体使用,有效提高了处理器的性能。
图8为本申请实施例提供的一种数据处理方法的流程示意图。如图8所示,本实施例中的数据处理方法,可以包括:
步骤801、获取用户输入的缓存对应的阈值;
步骤802、存储所述缓存对应的阈值,以使所述缓存中的缓存行在发生可纠正错误的次数大于所述阈值时被隔离。
本申请实施例提供的数据处理方法,可以基于上述各实施例提供的处理器来实现。本实施例中未能详细描述的部分,可以参见上述实施例。
可选的,获取用户输入的缓存对应的阈值,可以包括:显示处理器中的缓存的类型;获取用户输入的各个类型的缓存对应的阈值。
可选的,所述数据处理方法还可以包括:获取用户输入的缓存对应的极限值;存储所述缓存对应的极限值;若被隔离的缓存行的数量大于对应的极限值,则隔离对应的cpucore或cpudie。
具体的,可以将缓存对应的阈值存储到msr中,不同的cpucore以及不同类型的缓存对应的阈值和极限值可以相同,也可以不同。可选的,可以参照上述实施例提供的方式来存储缓存对应的阈值和极限值。
本申请实施例提供的数据处理方法,能够允许用户对缓存对应的阈值进行设置,使得缓存行在发生的错误次数大于所述阈值时被隔离,用户可以根据设备的实际使用情况对缓存进行设置,能够有效满足不同场景下的缓存监控需求,提高了系统的可靠性。
以下将详细描述本申请的一个或多个实施例的数据处理装置。本领域技术人员可以理解,这些数据处理装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图9为本申请实施例提供的一种数据处理装置的结构示意图。如图9所示,该装置可以包括:
获取模块901,用于获取用户输入的缓存行对应的阈值;
存储模块902,用于存储所述缓存行对应的阈值,以使所述缓存行在发生的错误次数大于所述阈值时被隔离。
可选的,所述获取模块901具体可以用于:显示处理器中的缓存的类型;获取用户输入的各个类型的缓存对应的阈值。
可选的,所述数据处理装置还可以用于:获取用户输入的缓存对应的极限值;存储所述缓存对应的极限值;若被隔离的缓存行的数量大于对应的极限值,则隔离对应的cpucore或cpudie。
图9所示装置可以执行前文所述的数据处理方法,本实施例未详细描述的部分,可参考对前述实施例的相关说明。该技术方案的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
本申请实施例还提供一种电子设备,包括上述任一实施例所述的处理器。所述电子设备可以为计算机等或其它任意类型的电子设备如平板设备、智能手机等。
可选的,所述电子设备还可以包括:存储器;所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述任一项所述的数据处理方法。
图10为本申请实施例提供的一种电子设备的结构示意图。如图10所示,该电子设备可以包括:处理器21和存储器22。其中,所述存储器22用于存储支持电子设备执行前述任一实施例提供的数据处理方法的程序,所述处理器21被配置为用于执行所述存储器22中存储的程序。
所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器21执行时能够实现如下步骤:
获取用户输入的缓存对应的阈值;
存储所述缓存对应的阈值,以使所述缓存中的缓存行在发生可纠正错误的次数大于所述阈值时被隔离。
可选地,所述处理器21还用于执行前述图8所示实施例中的全部或部分步骤。
其中,所述电子设备的结构中还可以包括通信接口23,用于电子设备与其他设备或通信网络通信。
另外,本申请实施例提供了一种存储计算机指令的计算机可读存储介质,当所述计算机指令被处理器执行时,致使所述处理器执行包括以下的动作:
获取用户输入的缓存对应的阈值;
存储所述缓存对应的阈值,以使所述缓存中的缓存行在发生可纠正错误的次数大于所述阈值时被隔离。
当所述计算机指令被处理器执行时,还可以致使所述处理器执行前述实施例所述的数据处理方法所涉及的全部或部分步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式楼层的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。