CN104391678B - 服务器及其方法、系统及其方法 - Google Patents
服务器及其方法、系统及其方法 Download PDFInfo
- Publication number
- CN104391678B CN104391678B CN201410764209.5A CN201410764209A CN104391678B CN 104391678 B CN104391678 B CN 104391678B CN 201410764209 A CN201410764209 A CN 201410764209A CN 104391678 B CN104391678 B CN 104391678B
- Authority
- CN
- China
- Prior art keywords
- program
- configuration
- server
- equipment
- configuration setting
- 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
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
一种服务器,其包括第一、第二、以及第三模块。第一模块接收来自多个系统的信息。每一系统包括在系统的操作期间可动态配置的多个功能单元。来自每一系统的信息包括当这些功能单元根据各自系统的一配置设定来配置时执行一个程序所收集到的效能数据。第二模块分析接收到的信息以在接收自这些系统的配置设定中选择一最佳执行配置设定。第三模块提供一新的配置设定给这些系统。新的配置设定是最佳执行配置设定的修改版。服务器重复自这些系统接收信息、分析接收到的信息、以及提供新的配置设定给这些系统。
Description
技术领域
本发明涉及一种系统,且特别涉及一种可动态配置的系统。
背景技术
微处理器的设计者在效能分析上花费不少功夫。在根据前代微处理器来建立具有特征以及效能目标基本组合的微处理器后,其执行对客户最为重要的代表性软件应用范例以及获取软件应用的执行记录。接着,使用获得的记录作为激源(stimulus),以模拟正在设计的微处理器的操作。微处理器的设计者可配置模拟微处理器的不同特性,以在所有的目标软件应用程序间实现最高的合计效能。一特定的特性配置通常能满足一目标应用程序的需求而不能满足另一目标应用程序的需求。在这些情况下,设计者需做出哪一软件应用程序比较重要的决定,或者找出能平衡多个软件应用程序需求的方法。由于此种选择企图在牺牲一软件应用程序的情况下来最佳化另一软件应用程序的效能,便通常无法使多个目标软件应用程序达到理想效能的目的。
一旦已确认配置设定的最佳平均组合时,微处理器的设计者将其编码成具有例如VHDL或Verilog编码的设计。其他的微处理器是藉由将熔丝库包含在微处理中来改善写死的配置,这是因为熔丝库在微处理器制造期间可选择性地烧断以改变写死数值的配置设定。这使得微处理器可能对在微处理器设计后所引入的新软件或操作系统做出反应,因而具有制造上有限程度的最佳化。然而这种解决方法仍无法达到目标软件应用程序的理想效能,这是因为其要求设计者/制造者去选择对于一些应用程序而言为最佳化而却牺牲其他应用程序的配置,或者去选择对于任何应用程序可能非最佳化的平衡配置。
为了应付此问题,编号为8,566,565的美国专利(其作为本申请的参考数据)叙述了微处理器可由一装置驱动器根据正在运行的应用程序来动态地配置至多个操作模式的实施例。此外,于10/10/2013申请且其编号为14/050,687的美国专利申请案,其主张09/20/2013申请且其编号为61/880,620 的美国临时申请案的优先权(均作为本申请的参考数据),其揭露一种可动态重配置的微处理器。然而,实际上仍存在需要更好的效能最佳化的方式。
发明内容
本发明一实施例提供一种服务器,其包括第一模块、第二模块、以及第三模块。第一模块接收来自多个系统的信息。每一系统包括在系统的操作期间可动态配置的多个功能单元。来自每一系统的信息包括当这些功能单元根据各自系统的一配置设定下于执行一个程序时所收集到的效能数据。第二模块分析接收到的信息以在接收自这些系统的配置设定中选择一最佳执行配置设定。第三模块提供一新的配置设定给这些系统。新的配置设定是最佳执行配置设定的修改版。服务器重复自这些系统接收信息、分析接收到的信息、以及提供新的配置设定给这些系统。
本发明一实施例提供一种用于服务器的方法,其包括以下步骤:接收来自多个系统的信息,其中,每一系统包括在系统的操作期间可动态配置的多个功能单元,来自每一系统的信息包括当这些功能单元根据各自系统的一配置设定下于执行一个程序时所收集到的效能数据;分析接收到的信息以在接收自这些系统的这些配置设定中选择一最佳执行配置设定;提供一新的配置设定给这些系统,其中,新的配置设定是最佳执行配置设定的修改版;以及重复接收的步骤、分析的步骤、以及提供的步骤。
本发明另一实施例提供一种用于服务器的方法,包括以下步骤:接收来自多个系统的信息,其中,每一系统包括在系统的操作期间可动态配置的多个功能单元,来自每一系统的信息包括当这些功能单元根据各自系统的一配置设定下于执行一个程序时所收集到的效能数据;分析接收到的信息以在接收自这些系统的这些配置设定中选择一最佳执行配置设定;提供该最佳执行配置设定给该系统。
本发明一实施例提供一种系统,其包括多个功能单元、第一模块、第二模块、以及第三模块。这些功能单元,在系统操作期间可动态配置。第一模块收集当系统通过在一配置设定下的这些功能单元来执行一程序时的效能数据。第二模块传送信息至服务器。该信息包括效能数据、配置设定、以及识别该程序所采用的数据。当该程序正由系统执行时,第三模块指示系统以接收自服务器的一新的配置设定来重配置这些功能单元。新的配置设定是藉 由服务器对由系统所传送的信息以及由包括这些可动态配置的功能单元的多个其他系统所传送的相似信息的分析所获得的。
本发明一实施例提供一种方法,此方法于一系统中执行。此系统包括在系统操作期间可动态配置的多个功能单元。此方法包括以下步骤;聚集信息,其中,信息包括通过在一配置设定下这些功能单元来执行一程序时由系统所收集的效能数据、设定配置、以及识别该程序所采用的数据;将信息以及把相似信息传送至服务器的系统的其他实例传送至一服务器;以及指示在系统在程序正由该系统执行时以接收自服务器的一新的配置设定来重配置这些功能单元,其中,新的配置设定是根据对由系统所传送的信息以及由包括这些可动态配置的功能单元的多个其他系统所传送至服务器的相似信息的分析所获得的。
本发明另一实施例提供一种方法,此方法于一系统中执行,此系统包括在系统操作期间可动态配置的多个功能单元。此方法包括以下步骤:以根据一配置设定来配置的这些功能单元来执行一程序;接收来自一服务器的一新的配置设定;指示在系统以接收自服务器的一新的配置设定来重配置这些功能单元。新的配置设定是在来自系统的多个其他实例且由服务器所接收的多个配置设定中,关于程序的一最佳执行配置设定的修改版,而系统具有这些功能单元,且这些其他实例传送信息至服务器。由多个其他系统的每一者传送至服务器的数据包括通过以一配置设定来配置的这些功能单元用来执行该程序时由这些其他系统所收集的效能数据、以及包括这些配置设定中用来配置的这些功能单元的该者。
附图说明
图1表示根据本发明一实施例的计算系统。
图2表示根据本发明一实施例,图1中系统的操作流程图。
图3表示根据本发明另一实施例,图1中系统的操作流程图。
图4表示根据本发明一实施例,图1中服务器的操作流程图。
图5表示根据本发明另一实施例,图1中服务器的操作流程图。
图6表示根据本发明一实施例,图1中系统的操作流程图。
图7表示根据本发明另一实施例,图1中系统的操作流程图。
图8表示根据本发明又一实施例,图1中系统的操作流程图。
图9表示根据本发明再一实施例,图1中系统的操作流程图。
图10表示根据本发明一实施例,图1中网络的操作流程图。
图11表示根据本发明一实施例,图1中系统的方块图。
图12表示根据本发明一实施例,图11中多个处理核心之一者的方块图。
【附图标记说明】
100~系统;
102~可动态配置功能单元;
104~云端服务器;
112~系统模块;
132~因特网;
142~服务器模块;
152~数据库;
154~最佳配置设定;
156~经调整的配置设定;
199~网络;
202、204、206、208、212、214、216、218、222、224、226、228~流程步骤;
302、304、306、308~流程步骤;
402、404、406~流程步骤;
502、504~流程步骤;
602、604、606、608、612~流程步骤;
702、704、706~流程步骤;
808、812、814、816~流程步骤;
903~流程步骤;
1102-A~处理核心0;
1102-B~处理核心1;
1102-N~处理核心N;
1104~系统代理;
1106~末级快取存储器(LLC)存储器;
1108~图形处理单元(GPU);
1112~周边装置;
1114~存储器控制器;
1116~数据预取器;
1122-A~服务处理器0;
1122-B~服务处理器1;
1122-C~服务处理器2;
1122-D~服务处理器3;
1204~配置单元;
1224~配置暂存器;
1228~可动态配置功能单元。
具体实施方式
以下说明为本发明的实施例。其目的是要举例说明本发明一般性的原则,不应视为本发明的限制,本发明的范围当以权利要求所界定的为准。
专业术语
服务器,是一种计算系统,其通过网络与多个其他计算系统联系,且自这些计算系统接收信息,分析这些信息,并将分析结果传送这些计算系统。
模块,是一种硬件、软件、或硬件与软件的结合。
系统,是一种能获取且执行所储存程序指令以处理数据。一个系统包括能执行所储存程序指令以处理数据的多个功能单元。
功能单元,是在系统中的硬件或硬件与软件的结合,其执行与指令处理相关的功能。功能单元的例子包括(但不限定于);存储器控制器、系统代理、以及包含在中央处理单元(CPU)或图形处理单元(GPU)的单元,例如指令获取单元、分支预测单元、指令格式单元、指令转译单元、暂存器重命名单元、指令排程单元、执行单元(例如,整数单元、浮点单元、分支单元、单指令多数据流(SIMD)单元、多媒体单元、载入单元、储存单元)、重排序缓冲器、指令引退单元、快取存储器、数据预获取单元、电源管理单元、存储器管理单元、储存碰撞检测单元。
功能单元为可动态重配置的,如果在系统正在运作时,其配置设定可能改变。应注意的是,为了改变可动态重配置功能单元的配置设定,当要改变配置设定时,系统可先暂停由可动态重配置单元和/或整体系统所进行的指令处理。举例来说,在微码藉由将一数值写入至配置暂存器来改变配置设定的 例子中,在写入新的配置设定之前且直到新的配置设定有效为止,微码程序可使指令连续执行。
功能单元的配置设定是一种状态,当此状态具有不同数值时,其导致功能单元以不同的方式来执行其功能。不同的方式影响了功能单元执行其功能时的效能、功率消耗、和/或正确性。
效能数据是一种数据,其提供系统正以多快的速度执行程序、系统正使用多少功率来执行程序、或前述两者结合的计量。
为了改善包括可动态重配置功能单元的计算系统的效能,可运用大量的效能实验结果,而该大量的效能实验结果包括由许多使用者参与的系统实体中,让实验者(例如系统的制造者)为特定程序或呈现相似特性的程序决定可动态重配置功能单元的经改善配置设定的实验结果。当可动态重配置功能单元以特定配置设定来配置时,这些系统实体持续地收集其执行一程序时的效能数据。系统周期性地通过因特网传送信息(效能数据、配置设定、以及用来识别程序的信息)给服务器。服务器聚集来自所有系统的信息、分析信息、并决定关于该程序的最佳配置设定。服务器接着稍微调整最佳配置设定。系统接收(例如根据要求)来接收经调整的配置设定,且以经调整的配置来动态地重配置自己本身。系统接着重复收集效能数据与经调整的配置设定以及传送信息至服务器的程序,服务器再次分析聚集获得的信息,且传送出新的经调整的配置设定。系统以及服务器重复此程序,以持续地改善该程序的配置设定。更适宜而言,当服务器的分析指示出改善的比例已达到平衡和/或可能的配置设定范围已用尽时,此重复程序结束。
服务器可对许多不同的程序来执行此程序,且持有最佳配置的数据库以根据要求来提供给系统。可配置的程度在一处理器中可能较窄,或如与其他元件结合以形成片上系统(SOC)的一处理器中可能较宽。效能可以速度、功率消耗、或两者结合的方式来测量。没有参与进行调整设定的系统仍可要求并接收来自服务器的最佳设定,且享受来自最佳设定的效能优点,即使是没有决定分享信息的系统亦可获得这项好处。应注意的是,所有决定参加实验的系统并不会在锁定步骤中执行此重复程序,而是服务器根据一执行中系统实体的特定程序来个别地与系统来进行重复程序。然而,每一系统可在其他系统于执行给定程序的重复程序初期便获得好处。
现在参阅图1,其表示计算系统的网络199的框图。网络199包括云端 服务器104以及通过因特网132与云端服务器104联系的多个系统100。每一系统100包括可动态配置功能单元102以及系统模块112。云端服务器包括数据库152以及服务器模块142,其中服务器模块142分析数据库152内的信息,以产生最佳配置设定154以及经调整的配置设定156,以上将在下文中详细说明。每一系统100为一计算系统,其包括(但非限定):服务器电脑、桌上型电脑、膝上型轻便电脑、笔记型电脑、个人数字助理、平板电脑、智能手机、电视、路由器、数据机、机上盒、以及设备。系统100的实施例在此将配合图11来叙述。此处的系统模块112执行系统100所执行的多个不同的功能或操作。系统模块112可包括硬件、软件、或者硬件与软件的结合。更适宜地说,系统100包括监控系统100的硬件以及或微码以收集效能数据(例如图3的步骤302)。在一实施例中,系统100包括一或多个小型服务处理器,其监控系统100的架构处理元件(例如处理核心)、快取存储器、存储器控制器、图形处理元件和/或片上系统的系统代理,以收集效能数据以及程序特性。
参阅图2,其表示图1中系统100的操作流程图。流程开始于步骤202。
在步骤202中,系统100(例如系统模块112)询问系统100的使用者,其是否想要为了改善使用者经验而与系统100的制造者分享匿名信息。流程继续进行至决定步骤204。
在决定步骤204中,如果使用者同意分享信息,流程继续进行到步骤208,否则,步骤继续进行到步骤206。
在步骤206中,系统100分配一伪值给“分享”指示符。流程继续进行到步骤212。
在步骤208中,系统100一真值给“分享”指示符。流程继续进行到步骤212。
在步骤212中,系统100询问使用者是否想要自系统100的制造者接收理想配置设定(如果理想配置设定为有效的)。流程继续进行到决定步骤214。
在决定步骤214中,如果使用者想要理想配置设定,流程则继续进行到步骤218,否则流程继续进行到步骤216。
在步骤216中,系统100分配一伪值给“理想”指示符。流程继续进行到步骤222。
在步骤218中,系统100分配一真值给“理想”指示符。流程继续进行 到步骤222。
在步骤222中,系统100询问使用者是否想要参加藉由接收来自系统100制造者的实验配置设定(如果实验配置设定为有效的),来进一步增加其自有系统100以及其他使用者系统100的效能的实验。流程继续进行到决定步骤224。
在决定步骤224中,如果使用者想要参加实验,步骤流程继续进行到228,否则,步骤流程继续进行到步骤226。
在步骤226中,系统100分配一伪值给“实验”指示符。流程继续进行到步骤228。
在步骤228中,系统100分配一真值给“实验”指示符。流程结束于步骤228。
现在参阅图3,其表示图1中系统100的操作流程图。流程开始步骤302。
在步骤302中,当可动态配置功能单元102以当前配置设定来配置时,系统100不断地收集(collect)效能数据以及当前执行的程序特性。此效能数据包括速度相关数据,即效能的传统涵义,例如周期指令数(IPC)、汇流排使用量等类似的数据。收集到的效能数据也可包括系统100正以此配置设定来执行程序时的消耗功率大小(例如瓦特或焦耳),使得服务器104可进行关于功率与速度的分析(例如每毫瓦-秒的周期指令数)。此外,最佳配置设定154以及经调整的配置设定156可根据功率消耗(例如电池寿命)而不是速度,或根据功率消耗和速度的结合来最佳化/调整。最后,服务器104可提供速度最佳化、功率最佳化、混合最佳化的最佳/经调整的配置154/156,且系统模块112基于当前的系统环境(例如接通电源或依靠电池来运作)和/或已表明的使用者喜好(例如速度优先于功率消耗,反之亦然),来选择其中一者以重新配置系统100。或者,系统100知道当前系统环境和/或已表明的使用者喜好,且仅询问服务器104其所想要的配置。程序特性可包括在系统以当前配置设定来配置而执行该程序期间,该程序所产生的存储器存取样态、该程序所使用的不同类型指令的数量、以及与系统100的特定功能单元(例如数据预取器或者分支预测器)的效益有关的信息,但不以上述为限。流程继续进行到决定步骤304。
在步骤304中,系统100(例如系统模块112)周期性地收集信息,以传送至服务器104。系统100可因应于在步骤302中所收集的效能数据相关 的当前执行的程序中止(例如,切换并执行一新程序)而聚集(gather)数据,或是因应于计时器计数(例如操作系统计时器计数值)或者在系统100配置设定中的改变而聚集数据。在一实施例中,系统100能自动的重配置自己本身。举例来说,系统100可检测到其多个数据预取单元中的一个预取器无法正确预测且关闭该预取单元,或者检测到系统100正消耗过多功率且重配置一或多个功能单元102以降低功率消耗。在这样的一个实施例中,系统模块112可(通过中断)被通知配置改变,且系统模块112可聚集信息并传送至服务器104做为回应。在此方式下,服务器104可藉由聚集关于可能尚未由服务器104尝试的配置设定的程序效能信息而受益,而这些尚未由服务器104所尝试的配置设定是系统100因应于其在一程序执行下所作的观察,由系统100本身动态建立的配置设定。这些收集到的数据包括(但非以此为限)系统配置设定、运作程序的确认、以及在步骤302中收集到的效能数据和/或程序特性。更适宜的说,在系统100上一或多个系统模块112可聚集这些信息。在一实施例中,由一装置驱动器来聚集这些信息。流程继续进行到决定步骤306。
在决定步骤306中,如果使用者选择不分享信息时(例如依据步骤206),流程则结束。相反地,流程则继续进行到步骤308。在一实施例中,如果使用者选择不分享信息,系统100可自我配置而不在步骤302中收集效能数据以及程序特性,且系统模块112在步骤304中亦可不收集信息。
在步骤308中,系统100将在步骤304中所聚集的信息通过因特网132传送给服务器104。在系统100与服务器104之间包括系统配置信息的联系最好编译成密码,以使得关于系统100的微系统结构的信息保持机密。在一实施例中,系统100使用http查询来要求以及接收来自服务器104的配置。传送至服务器104的信息是匿名的,亦即其不包括关于使用者的详细数据。更适宜地说,可使程序名称混乱,例如使其为原始字串的杂凑值(hashedvalue)。流程结束于步骤308。
现在参阅图4,其表示图1中服务器104的操作流程图。流程开始步骤402。
在步骤402中,服务器(例如服务器模块142)接收在图3步骤308中由系统100所传送的信息。服务器104持续将接收到的信息聚集在图1的数据库152。更适宜的说,服务器104也持续接收并聚集,因为在步骤226中 没有参与接收经调整的配置而正在进行最佳配置设定的系统100的信息。更适宜地说,根据程序名称和/或程序特性群组来整理信息,即是配置设定以及效能数据是以每一程序和/或每一程序特性群组来保存。在一实施例中,制造者依据系统100将运送的使用者的预设配置设定来初始化数据库142的起始值,以及将制造者以传统方式对特定关注的程序/群组所决定的其他配置设定来初始化数据库142的起始值。流程继续进行到步骤404。
在步骤404中,服务器104分析在数据库152中聚集的信息,以决定每一已知程序和/或程序特性群组的最佳配置设定154。一程序/群组的最佳配置设定154是具有最佳效能的配置设定。将从每一程序而来的大数据集合聚集在服务器104的情况下,很可能会有一些关于产生最佳效能的配置设定上的不一致情况。举例来说,20,000个系统可能报告配置设定A有最佳执行效能,而15,000个系统可能回报配置设定A的执行劣于配置设定B。在此情况下,服务器104所做的分析可能需要额外的数据分析。举例来说,服务器104可产生关于每一配置设定所回报的效能数据的一平均值,且选择关于最佳平均效能数据相关的配置设定。举例另一个实施例来说,服务器可排除在极端的数据点,或者排除由服务器104所决定的会回报不可靠信息的特定系统相关的信息。更适宜地说,服务器104根据速度(例如,最快)来产生一最佳配置设定、根据功率消耗(例如,最低消耗功率)来产生一最佳配置设定、以及根据速度以及功率(例如,每毫瓦的最高IPC)来产生一最佳配置设定,这些对于系统100来说都是可利用的。流程继续进行到步骤406。
在步骤406中,服务器104也建立一经调整的配置设定给每一程序或程序群组。此经调整的配置设定是在步骤404中所决定的最佳配置设定的微调版本。更适宜的说,服务器104将相对于最佳配置设定来改变一可动态调整功能单元102之一设定。举例来说,最佳配置设定154可能具有影响一数据预取器(例如,在图11中的数据预取器1116)的预测积极度的一参数,且此参数设定为一特定数值,而经调整的配置设定156可相对于最佳配置设定154并以“递增1”来增加此参数数值。再举另一例子来说明,最佳配置设定156可能具有相对于最佳配置设定154而以“递减1”来减少此参数数值。在此方法中(例如,藉由产生经调整的配置参数156(步骤406)并将其传送至系统100(图5的步骤504)、接收且聚集关于经调整的配置设定156且来自系统100的聚集信息(步骤402)、分析所聚集的信息来决定最佳配置设定154(步骤404)、调整最佳配置设定154(步骤406)、以及重复这些步骤),服务器104不断地以小范围且细微的方式来实验,以尝试并改善使用者经验以及系统100可利用的最佳配置设定154的数据库142。事实上,在此方式下,可决定非常高效能的配置设定给一程序,其对于系统设计者而言是反直观的,因此可能不会被他们所尝试,但是其可由此处所述的实验本质来决定。至少在部分上,这是因为相较于传统方法,此反复且大规模的方式可提供较大程度的配置设定进行效能测试。更适宜地说,服务器104排除制造者在先前测试中执行效率差和/或运作不正确的已知任何配置设定作为经调整的配置设定156的考虑。流程结束在步骤406。
现在参阅图5,其表示图1中服务器104的操作流程图。流程开始步骤502。
在步骤502中,服务器104从系统100之一者接收对一程序的新配置设定的要求(例如,因为系统100在图6的步骤616或图8的步骤818中传送要求)。在一实施例中,此要求包括正被要求的新配置设定对应的程序名称。在一实施例中,此要求包括程序特性(例如,在图3的步骤304中所聚集的),以识别正被要求的新配置设定所对应的程序。流程继续进行到步骤504。
在步骤504中,服务器104传送最佳配置设定154以及经调整的配置设定156至在步骤502中提出要求的系统100。二者择一地,如果系统仅要求最佳配置设定154或者经调整的配置设定156,则服务器104仅传送要求的配置设定154/156。如上所述,最佳/经调整的配置设定154/156可包括多个配置参数,例如其一者是关于速度最佳化、一者是关于功率消耗最佳化、以及一者是关于上述两者的最佳化。流程结束于步骤504。
现在参阅图6,其表示图1中系统100的操作流程图。流程开始步骤602。
在步骤602中,系统100(例如,系统模块112)检测正在运作的新程序,因此其可有利于动态地配置系统100的可动态配置功能单元102。流程继续进行到决定步骤604。
在决定步骤604中,系统100判断理想指示符是真(先前的步骤218) 还是伪(先前的步骤216)。如果是伪,流程结束,否则流程继续进行到决定步骤606。
在决定步骤606中,系统100判断实验指示符是真(先前的步骤228)还是伪(先前的步骤226)。若是伪,流程继续进行到决定步骤608,否则流程继续进行到决定步骤612。
在步骤608中,系统100要求来自服务器104且关于正运作的新程序的最佳配置设定154,此要求是在图5中步骤502中所接收。更适宜地说,系统100可要求来自服务器104的配置设定,即使该使用者在步骤206中没有参与信息分享。流程结束于步骤608。
在步骤612中,系统100要求自服务器104且关于正运作的新程序的经调整的配置设定156,此要求是在图5中步骤502中所接收。流程结束于步骤612。
现在参阅图7,其表示图1中系统100的操作流程图。流程开始步骤702。
在步骤702中,系统100自服务器104接收关于一程序的新配置设定,即是图6中步骤608或步骤612所要求的且由服务器在图5中步骤504所提供的配置设定。流程继续进行到决定步骤704。
在决定步骤704中,系统100判断在步骤702中接收到的新设定配置所对应的程序(或程序特性群组)是否为当前正在运作的程序(或程序特性群组)。如果不是,流程结束。否则,流程继续进行到步骤706。更适宜地说,系统模块112询问操作系统来决定服务器104所提供的新配置设定是否要给正在运作的程序。在另一实施例中,系统模块112检查操作系统的运作伫列,以判断该程序是否可能在近期运作。在一程序特性群组的例子中,系统100将在步骤702中接收自服务器104的程序特征群组与在图3的步骤302中所聚集的当前运作行程序的特性进行比较。
在步骤706,系统100以在步骤702中接收的新配置设定来重配置可动态重配功能单元102。步骤结束于步骤706。
现在参阅图8,其表示图1的另一实施例中系统100的操作流程图。流程开始步骤602。在图8的实施例中,系统100维持已知的程序(或程序特性群组)及先前接收自服务器104的相关最佳与经调整的配置设定的列表,且当需要时获取自此列表。系统100在图9的步骤903中更新此列表,将如下所述。与图6与7的实施例比较起来,图8与9的实施例可使系统100更受正运作程序上改变的影响,然而,图6与7的实施例可使系统100以最新的配置设定来重配置可动态配置功能单元102。图8的流程图在许多方面相似于图6的流程图,且相同的流程图彼此相似。然而,在图6的步骤608与612并不包括于此,如果实验指示符为伪,流程继续进行到步骤808,如果实验指示符为真,流程继续进行到步骤812。
在步骤808中,系统100利用来自已知配置设定的列表且关于该程序(先前步骤602所确定的)的最佳配置设定,来重配置可动态配置功能单元102。流程由步骤808继续进行到决定步骤814。
在步骤812中,系统100利用来自已知配置设定的列表且关于该程序(先前步骤602所确定的)的经调整的配置设定,来重配置可动态配置功能单元102。流程由步骤812继续进行到决定步骤814。
在决定步骤814中,系统100判断已知配置设定列表对于正在运作的新程序而言是否过时。如果过时,流程继续进行到步骤816,否则流程结束。更适宜的说,对于在列表中的每一配置设定而言,系统100保持一时间邮戳用来指示系统100自服务器104接收到配置设定的时间。一旦由时间邮戳所决定的配置设定的存在时间超过一预设临界值时,系统100判断该配置设定过时。在一实施例中,此预设时间为可编程的,且根据系统100的工作量和/或服务器104的重复周期等特性来调整。
在步骤816中,系统100要求来自服务器104的新配置设定给新运作的程序,此要求是在图5的步骤502中所接收的。流程结束于步骤816。
现在参阅图9,其表示图1的又一实施例中系统100的操作流程图。图9的流程图在许多方面相似于图7的流程图,且相同的流程图彼此相似。然而,图9包括新的步骤903。流程开始于步骤702,且由步骤702继续进行到步骤903,并由步骤903继续进行到步骤704。
在步骤903中,系统100以在步骤702接收到的配置设定来更新已知配置设定的列表。流程由步骤903继续进行到决定步骤704,且以图7所示的方式来进行。
现在参阅图10,其表示图1的网络199的操作时序图,其表示服务器104以及图1中与另一系统100交换信息的一系统100,通过使用系统大量实体的实验机制来获得系统100的可动态配置功能单元102的高效能配置设定的时序图。在此图中,流程是向下进行。图10的例子假设系统100已决 定在步骤208的分享本身信息,在步骤218的接收理想配置设定,以及在步骤228的参与实验。
在步骤602中,系统100检测到新程序正在运作(标示为程序A),且在步骤612或816中系统100传送关于程序A的配置设定要求给服务器104。服务器104在步骤502中接收要求,且在步骤504中传送配置设定(以配置设定A1来表示)给系统100。在步骤702中,系统100接收配置设定A1,且在步骤706中以配置设定A1来重配置可动态配置功能单元102,并当程序A以配置设定A1运作时,在步骤308中周期性的传送在步骤304聚集到的信息(以信息A1-1、A1-2、A1-3来表示)给服务器104。
在步骤602中,系统100检测到一新程序正在运作(以程序B来表示),且在步骤612或816中,系统100传送关于程序B的配置设定要求给服务器104。服务器104在步骤502中接收要求,且在步骤504中传送配置设定(以配置设定B1来表示)给系统100。在步骤702中,系统100接收配置设定B1,且在步骤706中以配置设定B1来重配置可动态配置功能单元102,并当程序B以配置设定B1运作时,在步骤308中周期性的传送在步骤304聚集到的信息(以信息B1-1、B1-2来表示)给服务器104。
在步骤602中,系统100检测到程序A再次运作,且在步骤612或816中,系统100传送关于程序A的配置设定要求给服务器104。服务器104在步骤502中接收要求,且在步骤504中传送配置设定(以配置设定A2来表示)给系统100。有利的是,配置设定A2将相异于配置设定A1,这是因为步骤402中服务器104已接收信息A1-1、A1-2、以及A1-3(及接收来自以配置设定A1与关于程序A的其他配置设定来执行程序A的其他系统100的一般信息),且由于服务器104在步骤404中聚集并分析关于程序A的信息以产生最佳配置设定154及在步骤406中产生经调整的配置设定156(即配置设定A2),故配置设定A2将稍微相异于配置设定A1。在步骤702中,系统100接收配置设定A2,且在步骤706中以配置设定A2来重配置可动态配置功能单元102,并当程序A以配置设定A2运作时在步骤308中周期性的传送在步骤304所聚集到的信息(以信息A2-1来表示)给服务器104。
在步骤602中,系统100检测到新程序正在运作(以程序C来表示),且在步骤612或816中,系统100传送关于程序C的配置设定要求给服务器104。服务器104在步骤502中接收要求,且在步骤504中传送配置设定(以 配置设定C1来表示)给系统100。在步骤702中,系统100接收配置设定C1,且在步骤706中以配置设定C1来重配置可动态配置功能单元102,并当程序C以配置设定C1运作时,在步骤308中周期性的传送在步骤304聚集到的信息(以信息C1-1以及C1-2)给服务器104。
在步骤602中,系统100检测到程序A再次运作,且在步骤612或816中,系统100传送关于程序A的配置设定的要求给服务器104。服务器104在步骤502中接收要求,且在步骤504中传送配置设定(以配置设定A3来表示)给系统100。有利的是,使得配置设定A3将相异于配置设定A1与A2,这是因为步骤402中服务器104已接收信息A1-1、A1-2、A1-3、以及A2-1(以及接收来自以配置设定A1、A2与关于程序A的其他配置设定来执行程序A的其他系统100的一般信息),且由于服务器104在步骤404中聚集并分析关于程序A的信息以产生最佳配置设定154以及在先前步骤406中产生经调整的配置设定156(即配置设定A3),所以配置设定A3将稍微相异于配置设定A2与A1。在步骤702中,系统100接收配置设定A3,且在步骤706中以配置设定A3来重配置可动态配置功能单元102,并当程序A以配置设定A3运作时,在步骤308中周期性的传送在步骤304聚集到的信息(以信息A3-1来表示)给服务器104。
服务器104以及系统100通过此程序来反复执行,以持续的产生关于程序A的配置设定,举例来说,这改善了系统100在运作程序A时的效能。应注意的是,由服务器104传送予一给定系统100的连续配置设定,相对于其之前一个或甚至可能多个先前配置设定而言可能无法改善效能,然而随着时间过去,当服务器104被致能去分析其聚集到的信息以及以配置设定来进行实验时,服务器104所产生的配置设定可稳定的改善系统100在运作程序A时的效能。
现在参阅的11图,其表示图1中的系统100。在一实施例中,系统100是片上系统(SOC)。系统100包括多个处理核心1102、由处理核心1102共享的一末级快取存储器(last-level cache,LLC)存储器1106、一图形处理单元(GPU)1108、一存储器控制器1114、以及周边设备1112,周边设备1112例如有PCI-ExpressTM控制器、通用序列汇流排(USB)控制器、周边介面控制器(PIC)、直接存储器存取(DMA)控制器、系统时脉、乙太网络控制器、以及串列先进技术配置(SATA)控制器。处理核心1102的实施例将于下文中配合图12来详细说明。处理核心1102中可动态配置功能单元102的动态配置能力实施例将于下文中配合图12来详细说明。
系统100也包括系统代理1104,其与处理核心1102、LLC存储器1106、GPU 1108、周边装置1112、以存储器控制器1114互相联系。存储器控制器1114为可动态调整的,以根据不同的排程规则来执行对系统存储器(例如DRAM)的存取排程。在一实施例中,系统代理1102包括交换机(crossbarswitch),其与客户端以及存储器、输出/输入以及中断要求的产生者联系。在一实施例中,系统代理104由数据源接收数据封包,并通过一或多个结构以及一或多个层的仲裁后而到达其目的地。在一实施例中,系统代理1104分配优先权给不同的要求实体,且这些优先权可动态地配置,使得以不同的配置来连系要求实体的结构频宽以不同的比例来分配。举例来说,服务器104可决定对于一程序而言(例如,一视讯加强程序),系统代理1104应分配相对于处理核心1102以及其他系统100元件而言较高的优先权给GPU1108,但服务器104可决定对于另一程序而言(例如,具有少量视讯输出的计算加强程序),系统代理1104应分配相对于处理核心1102以及其他系统100元件而较低的优先权给GPU1108。
LLC存储器1106包括一经核心而可配置的数据预取器1116,亦即数据预取器1116包括与每一处理核心1102相关的相异配置设定,而此相异配置设定致能数据预取器1116被配置以对于每一处理核心1102来进行不同的数据预取。举例来说,服务器104可能决定数据预取器1116对于在一处理核心1102上运作程序的理想配置设定是关闭数据预取(例如一数据压抑程序),但服务器104可能决定数据预取器1116在另一处理核心102上运作程序的理想配置设定是以一连续方式积极预取数据(例如由串列数据所主宰的数据程序)。在一实施例中,GPU 1108可与处理核心1102共享LLC存储器1106,且分配给GPU 1108以及处理核心1102的量是可动态配置的。
系统100也包括多个服务处理器(SPU)1122。在图11的实施例中,第一服务处理器01122-A耦接GPU 1108、周边装置1112、及存储器控制器1114;第二服务处理器1 1122-B耦接系统代理1104;第三服务处理器21122-C耦接处理核心1102;第四服务处理器3 1122-D耦接LLC存储器1106。服务处理器1122是能处理储存程序的处理元件。更适宜地说,服务处理器1122具有远低于处理核心1102的复杂度,且比处理核心1102具有较低的晶 粒空间与功率的消耗程度。服务处理器1122监控所耦接系统100元件的活动,且聚集效能数据及程序特性。处理核心1102自服务处理器112取得效能数据及程序特性。此外,处理核心1102聚集效能数据及程序特性,服务处理器1122也可动态地配置。在一实施例中,由服务处理器112所执行的编码是通过在处理核心1102上运作程序而进行修补的。更适宜地说,服务处理器1122能填写配置暂存器,以动态配置其各自的系统100元件。在一实施例中,服务处理器1122可与另一者彼此联系,以分享所聚集到的效能数据及程序特性。
现在参阅的12图,其表示图11中处理核心1102的一实施例。处理核心1102包括多个可动态配置功能单元1228、多个配置暂存器1224、及一配置单元1204。虽然未显示,处理核心1102也包括不能动态重配置的功能单元。在一实施例中,处理核心1102包括超纯量非循序执行微架构,尽管此处所述的动态重配置可在包括不同微架构的处理核心中执行。在一实施例中,处理核心1102包括x86指令集架构,尽管此处所述的动态重配置可在包括不同指令集架构的处理核心中执行。
配置暂存器1224具有一配置设定,且将此配置设定提供给可动态配置功能单元1228以控制其特定方面的操作。可由配置设定来动态重配置的不同方面的操作例子包括下文所述(但不以此为限)。
数据预取配置设定是配置数据如何自系统存储器预取至处理核心1102的各种快取存储器和/或至LLC存储器1106。举例来说,处理核心1102可将非常可能用到的预测数据直接预取至处理核心1102的L1数据快取区,和/或将较不可能用到的预测数据由L1或L2数据快取区预取至与处理核心1102的L1数据快取区分离的专用预取缓冲器。再举另一例子,由数据预取器所预取的数据可因为固定地触发不需要和/或有害的预取(诸如压缩或解压缩应用程序)而被禁能。在又一例子中,如果一软件应用程序中的预取指令倾向于与处理核心1102内部起始的预取互有不利的影响时,数据预取器可被禁能而不执行上述预取指令所要求的预取操作。
一分支预测配置设定是配置处理核心1102预测分支指令所采用的方法。举例来说,处理核心1102的分支预测器自其每一指令快取列所获得的分支指令的数量系可配置的。此外,分支预测器所使用的特定分支预测机制的数量系可配置。再者,分支预测器可配置来假定一反向零则跳跃(reverse JZ (jump on zero))分支指令是经常采用或非经常采用。而且,被索引至分支预测器内分支目标位址快取(branch target address cache,BTAC)的杂凑演算法也可配置。最后,如果在预设列表中一或多个当前运作的软件应用倾向于执行非常不可预料的分支指令时,分支预测器可配置来暂时地完全禁能分支预测,或者暂时地禁能部分的分支预测机制,例如分支预测器内的分支目标位址快取(BATC)。
指令快取逐出配置设定(instruction cache eviction configurationsetting)是配置处理核心1102使用来将指令逐出自指令快取列的演算法。
暂停执行配置设定是配置处理核心1102是否暂时地中止执行程序指令。举例来说,处理核心1102可根据判断操作系统的闲置状态已执行一既定时间,而配置以暂时地中止执行指令。
L1指令快取存储器尺寸配置设定、L1数据快取存储器尺寸配置、以及L2快取存储器尺寸配置设定是分别配置L1指快取区、L1数据快取区的尺寸、或L2快取存储器的尺寸。举例来说,快取存储器的尺寸可根据一或多个当前运作软件应用程序的工作数据组的尺寸来配置。或者,快取存储器的尺寸可根据功率节省的需求来配置。
转译/格式配置设定是配置指令转译器/格式器如何转译和/或格式化指令。举例来说,指令转译器/格式器每一时脉周期所转译和/或格式化的指令数量是可配置的。举例来说,为了降低处理核心1102的功率消耗,指令转译器/格式器可配置来在每一时脉周期中仅转译和/或格式单一指令,如果这样做可满足正运作程序的需求的话。此外,转译器/格式器可能被禁能合并指令以减少功率消耗。
推测寻访配置设定是配置处理核心1102的存储器管理单元(MMU)是否根据转译后备缓冲区(TLB)的误失来执行推测页面寻访。举例来说,对于造成推测一直错误的应用程序而言,存储器管理单元可配置来禁能预测寻访,藉此逐出在转译后备缓冲区中有用的项目。在一实施例中,寻访推测的程度是可配置的。举例来说,在所有较旧的储存操作已引退后、或在所有较旧的储存操作已解析其位址后、或不需考虑较旧的储存操作的情况下,存储器管理单元可配置来仅执行一推测页面寻访。此外,存储器管理单元配置来可独立地控制数据与编码的推测寻访。再者,存储器管理单元可配置来以推测的方式来执行寻访,但是不以推测的方式来更新转译后备缓冲区。最后, 存储器管理单元可配置来识别什么类型的微操作或硬件功能可以推测方式来寻访,例如各种软件或硬件的预取。
L1快取误失行为配置设定是配置存储器管理单元是否回应L1指令快取区的误失,以串列或并列方式要求来自L2快取区以及处理器汇流排的数据。
发送杂凑配置设定是配置由处理核心1102使用来杂凑在位址比对中的虚拟位址,以检测处理核心1102是否应对一负载指令,例如由一较旧且未引退的储存指令,或在载入伫列与填充伫列之间的负载指令执行数据传送操作。举例来说,下列可被配置:除了将被比对的虚拟位址的页面索引位元以外的位元数量、非页面索引位元中何者将被杂凑以产生这些位元、以及被选择的位元将如何被杂凑。
伫列尺寸配置设定是配置在处理核心1102中各种伫列的可用尺寸,例如储存伫列、载入伫列、以及快取列填充伫列。举例来说,当较小的伫列能够满足正运作程序的需求时,多种伫列可配置为较小的尺寸以减少功率消耗量。
发送尺寸配置设定是配置处理核心1102在单一时脉周期中将发送至不同执行单元的指令数量。举例来说,当每一时脉周期发送小数量指令可满足正运作程序需求时,为了减少功率消耗,指令数量可配置成为一相对小的值。
重排序缓冲器(ROB)尺寸配置设定是配置在重排序缓冲器中可使用的项目。举例来说,当小数量的重排序缓冲器项目满足正运作程序的需求时,为了减少功率消耗,重排序缓冲器项目的数量可配置成为一相对小的值。
非循序配置设定是配置处理核心1102如何使用指令的非循序执行。举例来说,处理核心1102可配置来以严谨的程序顺序来执行指令(即无非循序执行)。此外,处理核心1102可被配置以指出指令发送者可在多深的指令窗口中寻找独立指令并发送给执行单元做执行。
载入延迟配置设定是配置处理核心1102的载入延迟机制是被禁能还是致能。在一实施例中,处理核心1102推测的发送一载入指令,且如果其取决于一较旧的储存指令且由该较旧储存指令所取得的数据尚未有效时,必须重新执行该载入指令,因为这对于效能而言可能是不利的(因为对尚未有效数据执行载入操作)。为了减少重新执行的可能性,载入延迟机制根据重新执行载入指令的历史过程来选择性的延迟载入指令的发送。然而,当载入延迟机制被致能时,一些软件应用程序可能呈现执行效率更差的趋势。因此, 举例来说,对于呈现此趋势的软件应用而言,载入延迟机制可能被禁能。
非时态载入/储存配置设定是配置处理核心1102对于包括一非时态数据建议的载入/储存指令的行为,以避免处理核心1102缓存其数据。一些软件应用程序可被写入,以在处理核心1102中的数据快取区小于处理核心1102的实际数据快取尺寸且数据被缓存而得以较快执行的假设下,来使用非暂时载入/储存指令。此外,在处理核心1102内可被载入/储存指令(包括非时态数据建议)所使用的载入缓冲器的数量是可配置的。
另一配置设定是选择性地配置处理核心1102的硬件页面目录快取(PDC),以包含页面目录项目(PDE)或第四级页面映射表(PML4)项目。
另一配置设定是选择性地配置数据与编码转译后备缓冲区(TLB)项目中的两者、一者、或两者皆没有,被放置在处理核心1102的L2编码转译后备缓冲区。另一配置设定则是配置L2编码转译后备缓冲区的尺寸。
另一配置设定是选择性地配置一软件预取列配置是否被确认,亦即存储器管理单元(MMU)可被配置来等待完成,直到命中(hit)预取列或已推入(push)请求此预取列、或者甚至是完成但持续尝试分配预取列。
另一配置设定是配置自我修改编码(SMC)检测是致能还是禁能。此外,在自我修改编码检测被致能时,处理核心1102可被配置来提早或稍后校正,以及执行或不执行一最大程度机器清除(flush)。
另一配置设定是配置在处理核心1102的载入和/或储存管线中的各种平行仲裁被致能或禁能。举例来说,在储存管线中的载入有效位址(LEA)的产生不需对整个管线来进行仲裁,这是因为其提早产生结果,所以处理核心1102可被配置来允许需要整个管线仲裁的操作可在同时间进行。此外,载入管线可选择性地被配置,以允许不需要读取快取的仲裁器与需要读取快取的仲裁器并行进行仲裁。
另一配置设定是配置关于写入组合载入(write-combine speculation)的推测程度。举例来说,写入组合载入可能是完全推测(但仍按顺序)或非推测的。相似的配置可根据x86MOVNTDQA指令相关的载入来完成。
另一配置设定是配置存储器管理单元去禁能或致能存储器管理单元是否指示处理核心1102的一指令排程器,在一载入误失已要求新的微操作重新执行之后,载入现在很可能完成的情形。这允许排程器去推测地排程相依的微操作随着载入结果转发阶段被发送,而不是在排程前等候提供结果。这 是基于现在所载入的是有效结果的推测,但如果不是,则需要另一重新执行的操作。
另一配置设定是配置处理核心1102的发送路径,以选择性地禁能发送。此配置设定在避免发生在处理核心1102的设计后所检测到、且由处理核心1102执行一特定程序部份时而显露错误本身的设计错误方面是特别有帮助的。可选择性地禁能的发送例子包括(但不以此为限)暂存结果发送以及载入-储存的发送。
另一配置设定可使储存器重命名单元去清除保持载入-储存相依性的伫列,以减少载入-储存抵触所导致的载入重新执行,其中该载入-储存相依性是由暂存器重命名单元所使用来影响载入指令排程的。一般而言,功能单元1228可动态地配置,来清除已知或被怀疑是伪或已变形的且与一特定程序部分相关的累积效能特性状态。
另一配置设定导致一或多个快取列或整个快取存储器被清除,以避免潜在的数据不连贯。这对于处理核心1102执行一特定程序部份时而显露错误本身的设计错误方面是特别有帮助的。
另一配置设定是暂时地改变用来实施一结构指令的微码在一特定实例方面的行为。举例来说,微码在例如包含在一特定程序部分中结构指令的一特定实例下执行一替代编码路径,以及在结构指令的其他实例下执行一正常编码路径。同样地,这在避免设计错误方面是特别有帮助的。
配置单元1204将配置设定写入至配置暂存器1224,以重配置处理核心1102中的可动态配置功能单元1128,以及系统100的其他部分。在一实施例中,配置单元1204包括由处理核心1102所执行的微码,其执行将配置设定写入配置暂存器1224中。
应注意的是,并非处理核心1102所有的功能单元都是可动态重配置,系统100的所有部分也并非都是可动态重配置。也应可了解,尽管至少一配置暂存器1224将被写入,且至少一可动态配置功能单元1228将被重配置,然而当配置单元1204重配置可动态配置功能单元1228时,其可能不会对每一配置暂存器1224进行写入,且并非每一可动态配置功能单元1228将被重配置。
此处所述处理核心1102的动态重配置实施例的一种用途是,当执行其效能和/或功率消耗可能会因为将处理核心1102动态地重配置为已知设定而 受到显著影响的已知程序或者程序特性时,改善处理核心1102和/或系统100的效能和/或减少处理核心1102和/或系统100的功率消耗。
此处所述的动态重配置实施例的另一种用途是,当处理核心1102和/或系统100处理一部份的程序(该程序部分在第一已知配置下由处理核心1102时将导致功能错误,但是该程序部分在第二已知配置下由处理核心1102时将导致正确结果)时,防止处理核心1102和/或系统100错误地运作。举例来说,当数据预取器被配置去执行数据预取的特别积极模式时,如果处理核心1102执行该程序部分,其可能产生功能错误,但如果数据预取器被配置器执行数据预取的低积极模式或者数据预取完全地关闭时,当处理核心1102执行该程序部分时,其可能不会产生功能错误。功能错误的例子包括(但不以此为限)损坏数据、停摆状态(例如死结或活结)、非常缓慢效能、以及操作系统无法修复的例外状况。在处理核心1102设计造成功能误差的错误可能不会被发现,直到处理核心1102被大量制造和/或在其已经运送到客户端才被发现。在这样的情况下,这有利于藉由动态重配置处理核心1102来修正此问题,而不是重新设计处理核心和/或重新招回或尚未卖出且具有此错误的处理核心1102。
此处实施例的一优点在于,其提供完全的匿名给使用者。甚至是,由服务器104所执行的分析只需要知道配置设定、以此配置设定来执行时的效能、以及已执行的程序(或其区别特征),但是不关心信息是来自哪一系统或者是由谁使用。不同于许多当前的数据挖掘模式,此处所述的实施例提供使用者匿名,因此促使大量的使用者决定参加实验,并藉此接收改善的效能利益。
本发明的不同实施例已于本文叙述,但本领域具有通常知识者应能了解这些实施例仅作为范例,而非限定于此。本领域具有通常知识者可在不脱离本发明精神的情况下,对形式与细节上做不同变化。例如,软件可致能本发明实施例所述的装置与方法的功能、组建(fabrication)、模块化(modeling)、模拟、描述(description)、和/或测试。可通过一般程序语言(C、C++)、硬件描述语言(Hardware Description Languages,HDL)(包括VerilogHDL、VHDL等等)、或其他可利用的程序语言来完成。此软件可配置在任何已知的电脑可使用媒介,例如半导体、磁碟、或光碟(例如CD-ROM、DVD-ROM等等)。本发明所述的装置与方法实施例可被包括于半导体智慧财产核心,例如微处理器核心(以HDL来实现),并转换成集成电路产品的硬件。此外, 本发明所述的装置与方法可实现为硬件与软件的结合。因此,本发明不应局限于所揭露的实施例,而是由权利要求与等同实施所界定。特别是,本发明可实施在使用于一般用途电脑中的微处理器装置内。最后,本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视权利要求书所界定者为准。
值得注意的是,以下所揭露的内容可提供多个用以实践本发明不同特点的实施例或范例。以下所述的特殊元件范例与安排仅用以简单扼要地阐述本发明的精神,并非用以限定本发明的范围。此外,以下说明书可能在多个范例中重复使用相同的元件符号或文字,然重复使用的目的仅为了提供简化并清楚的说明,并非用以限定多个以下所讨论的实施例和/或配置之间的关系。此外,以下说明书所述的一个特征连接至、耦接至和/或形成于另一特征的上等描述,实际可包含多个不同的实施例,包括该特征直接接触,或者包含其它额外的特征形成于该特征之间等,使得该特征并非直接接触。
Claims (33)
1.一种系统,包括:
包含计算机处理器的多个设备,所述处理器包括在该系统操作期间可动态配置的多个功能单元;
服务器;
在每个设备上,收集当每个设备通过以配置设定来配置的该功能单元来执行程序时关于设备的效能的数据的能效监视电路;
在每个设备中传送信息至该服务器的通信电路,其中,该信息包括该效能数据、该配置设定、以及识别该程序所采用的数据;
其中,该服务器分析由一个设备所传送的该信息以及由包括该可动态配置的功能单元的多个其他设备所传送的该信息,以确定集体地改进当执行该程序时的设备的能效的新的配置设定;以及
其中,该服务器将该新的配置设定传递到该一个设备。
2.如权利要求1所述的系统,其中,该新的配置设定是在来自该设备以及该其他设备由服务器所接收的多个配置设定中,关于该程序的最佳执行配置设定的修改版。
3.如权利要求1所述的系统,其中,识别该程序所用的数据包括在该设备上运作的操作系统所维持的该程序的名称。
4.如权利要求1所述的系统,其中,识别该程序所用的数据包括该程序的特性。
5.如权利要求4所述的系统,其中,该程序的特性包括由该程序所产生的存储器存取的状态。
6.如权利要求4所述的系统,其中,该程序的特性包括由该程序所使用的不同类型指令的数量。
7.如权利要求4所述的系统,其中,该程序的特性包括关于在执行该程序期间,该设备的多个数据预取器功能单元的有效性信息。
8.如权利要求1所述的系统,其中,该效能数据包括当该功能单元根据该配置设定来配置时,由该设备所执行的指令的速度指示。
9.如权利要求1所述的系统,其中,该效能数据包括当该功能单元根据该配置设定来配置时,该设备对存储器总线的使用指示。
10.如权利要求1所述的系统,其中,该通信电路通过因特网传送该信息至该服务器。
11.如权利要求1所述的系统,其中:
对于多个程序中的每一程序,每个设备存储接收自该服务器的用于每一程序的配置设定;以及
每个设备配置为检测该多个程序中的一个程序正被载入以在该设备上执行;
每个设备配置为通过与正被载入以在该设备上执行的该一个程序且已储存的用于该一个程序的配置设定,来重配置该功能单元。
12.如权利要求11所述的系统,其中,每个设备配置为:
检测一或多个已储存的该相关配置设定为过时的,且当检测到一或多个已储存的该相关配置设定为过时,请求来自该服务器的该新的配置设定。
13.如权利要求10所述的系统,其中,该能效监视电路根据第一周期准则来收集该效能数据,且以第二周期准则来传送该信息。
14.如权利要求13所述的系统,其中,该第一与第二周期准则中至少一者是以载入新的程序为依据。
15.如权利要求13所述的系统,其中,该第一与第二周期准则中至少一者是反应于计时器计数。
16.如权利要求13所述的系统,其中,该第一与第二周期准则中至少一者是反应于该设备的该配置设定的改变。
17.一种方法,于具有服务器和包含计算机处理器的多个设备的系统中执行,该处理器包括在该系统操作期间可动态配置的多个功能单元,该方法包括;
聚集信息,其中,该信息包括:
对于每个设备,利用根据配置设定配置的该功能单元来执行程序时,关于每个设备所收集的效能数据;
该配置设定;以及
识别该程序所采用的数据;
将一个设备的该信息以及其他设备的该信息传送至该服务器,该服务器分析所传送的信息并确定集体地改进当执行该程序时的设备的能效的新的配置设定;以及
将该新的配置设定传递到该一个设备,其功能单元以接收自该服务器的新的配置设定来重配置。
18.如权利要求17所述的方法,其中,该新的配置设定是在来自该设备以及该设备的其他实例且由服务器所接收的多个配置设定中,关于该程序的最佳执行配置设定的修改版。
19.如权利要求17所述的方法,其中,识别该程序所用的数据包括在该设备上运作的操作系统所维持的该程序的名称。
20.如权利要求17所述的方法,其中,识别该程序所用的数据包括该程序的特性。
21.如权利要求20所述的方法,其中,该程序的特性包括由该程序所产生的存储器存取的状态。
22.如权利要求20所述的方法,其中,该程序的特性包括由该程序所使用的不同类型指令的数量。
23.如权利要求20所述的方法,其中,该程序的特性包括关于在执行该程序期间,该设备的多个数据预取器功能单元的有效性信息。
24.如权利要求17所述的方法,更包括:
请求自该服务器的该新的配置设定。
25.如权利要求17所述的方法,其中,该效能数据包括当该功能单元根据该配置设定来配置时,由该设备所执行的指令的速度指示。
26.如权利要求17所述的方法,其中,该效能数据包括当该功能单元根据该配置设定来配置时,该设备对存储器总线的使用指示。
27.如权利要求17所述的方法,其中,该传送的步骤通过因特网来执行。
28.如权利要求17所述的方法,更包括:
对于多个程序中的每一程序,将接收自该服务器的用于每一程序的配置设定储存在该设备;以及
检测该多个程序中的一个程序正被载入以在该设备上执行;以及
命令该设备以与正被载入以在该设备上执行的该一个程序且已储存的用于该一个程序的配置设定,来重配置该功能单元。
29.如权利要求28所述的方法,更包括:
检测一或多个已储存的该相关配置设定为过时的;
反应于测到一或多个已储存的该相关配置设定为过时的情况,请求来自该服务器的该新的配置设定。
30.如权利要求17所述的方法,其中,该聚集的步骤在第一周期准则上执行,且该传送的步骤在第二周期准则上执行。
31.如权利要求30所述的方法,其中,该第一与第二周期准则中至少一者是以载入新的程序为依据。
32.如权利要求30所述的方法,其中,该第一与第二周期准则中至少一者是反应于计时器计数。
33.如权利要求30所述的方法,其中,该第一与第二周期准则中至少一者是反应于该设备的该配置设定的改变。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462000808P | 2014-05-20 | 2014-05-20 | |
US62/000,808 | 2014-05-20 | ||
US14/474,699 | 2014-09-02 | ||
US14/474,699 US9575778B2 (en) | 2014-05-20 | 2014-09-02 | Dynamically configurable system based on cloud-collaborative experimentation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104391678A CN104391678A (zh) | 2015-03-04 |
CN104391678B true CN104391678B (zh) | 2018-04-13 |
Family
ID=51900098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410764209.5A Active CN104391678B (zh) | 2014-05-20 | 2014-12-12 | 服务器及其方法、系统及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9575778B2 (zh) |
EP (1) | EP2950222A3 (zh) |
CN (1) | CN104391678B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2539433B8 (en) | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Protected exception handling |
GB2539435B8 (en) | 2015-06-16 | 2018-02-21 | Advanced Risc Mach Ltd | Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level |
GB2539429B (en) * | 2015-06-16 | 2017-09-06 | Advanced Risc Mach Ltd | Address translation |
GB2539428B (en) | 2015-06-16 | 2020-09-09 | Advanced Risc Mach Ltd | Data processing apparatus and method with ownership table |
US10673697B2 (en) * | 2016-03-13 | 2020-06-02 | Cisco Technology, Inc. | Bridging configuration changes for compliant devices |
US20180052779A1 (en) * | 2016-08-19 | 2018-02-22 | Advanced Micro Devices, Inc. | Data cache region prefetcher |
US10379827B2 (en) * | 2016-12-29 | 2019-08-13 | Intel Corporation | Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment |
US11138018B2 (en) | 2018-12-14 | 2021-10-05 | Nvidia Corporation | Optimizing execution of computer programs using piecemeal profiles |
JP6816091B2 (ja) * | 2018-12-18 | 2021-01-20 | 東日本電信電話株式会社 | 分析システム |
EP4079028A4 (en) * | 2019-12-16 | 2023-09-06 | Telefonaktiebolaget Lm Ericsson (Publ) | CONFIGURING NETWORK NODES IN A COMMUNICATION NETWORK |
US20230319135A1 (en) * | 2022-03-30 | 2023-10-05 | International Business Machines Corporation | Cloud financial load optimization based on power and thermal statistics aggregation |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6948050B1 (en) | 1989-11-17 | 2005-09-20 | Texas Instruments Incorporated | Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware |
EP0610677A3 (en) | 1993-02-12 | 1995-08-02 | Ibm | Communication device management module operating in two modes. |
US6289396B1 (en) | 1995-11-21 | 2001-09-11 | Diamond Multimedia Systems, Inc. | Dynamic programmable mode switching device driver architecture |
DE19651075A1 (de) * | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
US6240468B1 (en) | 1998-12-18 | 2001-05-29 | International Business Machines Corporation | Interposed graphics device driver module processing function requests within module in standard mode, and passing function requests to specialized mode device driver in specialized mode |
US6438557B1 (en) | 1999-06-23 | 2002-08-20 | Ericsson Inc. | System and method for performing context switching and rescheduling of a processor |
US6957437B1 (en) | 1999-12-23 | 2005-10-18 | Intel Corporation | Selecting a device driver for a peripheral device adapted to operate on a network and simplifying secondary printer installation |
US6732263B1 (en) | 2000-06-12 | 2004-05-04 | Altera Corporation | Configuring both a programmable logic device and its embedded logic with a single serialized configuration bit stream |
US6826704B1 (en) | 2001-03-08 | 2004-11-30 | Advanced Micro Devices, Inc. | Microprocessor employing a performance throttling mechanism for power management |
US8051301B2 (en) | 2001-11-13 | 2011-11-01 | Advanced Micro Devices, Inc. | Memory management system and method providing linear address based memory access security |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US6986021B2 (en) | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US7478031B2 (en) | 2002-11-07 | 2009-01-13 | Qst Holdings, Llc | Method, system and program for developing and scheduling adaptive integrated circuity and corresponding control or configuration information |
GB2396930B (en) | 2002-11-18 | 2005-09-07 | Advanced Risc Mach Ltd | Apparatus and method for managing access to a memory |
US7558723B2 (en) | 2003-12-12 | 2009-07-07 | Microsoft Corporation | Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices |
US7167992B2 (en) | 2003-12-18 | 2007-01-23 | Lenovo Singapore Pte, Ltd. | Method for controlling the switching of operating modes of an information processor according to the time of switching of the operating modes |
US7987453B2 (en) | 2004-03-18 | 2011-07-26 | International Business Machines Corporation | Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data |
US7478388B1 (en) | 2004-04-21 | 2009-01-13 | Vmware, Inc. | Switching between multiple software entities using different operating modes of a processor in a computer system |
US7418582B1 (en) | 2004-05-13 | 2008-08-26 | Sun Microsystems, Inc. | Versatile register file design for a multi-threaded processor utilizing different modes and register windows |
US7779238B2 (en) | 2004-06-30 | 2010-08-17 | Oracle America, Inc. | Method and apparatus for precisely identifying effective addresses associated with hardware events |
US7929459B2 (en) | 2004-10-19 | 2011-04-19 | At&T Mobility Ii Llc | Method and apparatus for automatically determining the manner in which to allocate available capital to achieve a desired level of network quality performance |
US7366891B2 (en) | 2004-12-30 | 2008-04-29 | Intel Corporation | Methods and apparatus to provide dual-mode drivers in processor systems |
US7353378B2 (en) | 2005-02-18 | 2008-04-01 | Hewlett-Packard Development Company, L.P. | Optimizing computer system |
US7581037B2 (en) | 2005-03-15 | 2009-08-25 | Intel Corporation | Effecting a processor operating mode change to execute device code |
US7774531B1 (en) | 2005-09-13 | 2010-08-10 | Oracle America, Inc. | Allocating processor resources during speculative execution using a temporal ordering policy |
US20070226795A1 (en) | 2006-02-09 | 2007-09-27 | Texas Instruments Incorporated | Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture |
US7636832B2 (en) | 2006-10-26 | 2009-12-22 | Intel Corporation | I/O translation lookaside buffer performance |
US8719807B2 (en) | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US20080163212A1 (en) | 2006-12-29 | 2008-07-03 | Zimmer Vincent J | Paralleled management mode integrity checks |
US8539455B2 (en) * | 2007-03-26 | 2013-09-17 | Rogue Wave Software, Inc. | System for and method of capturing performance characteristics data from a computer system and modeling target system performance |
EP2208146A4 (en) | 2007-10-29 | 2010-11-03 | Nec Lab America Inc | DISCOVER OPTIMAL SYSTEM CONFIGURATIONS USING DECENTRALIZED PROBABILITY-BASED ACTIVE SAMPLING |
US7962770B2 (en) | 2007-12-19 | 2011-06-14 | International Business Machines Corporation | Dynamic processor reconfiguration for low power without reducing performance based on workload execution characteristics |
US8566565B2 (en) | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
US8468332B2 (en) | 2009-06-13 | 2013-06-18 | Kinglite Holdings Inc. | Dynamic link loading in extensible firmware interface compliant systems |
US8099399B2 (en) | 2009-07-27 | 2012-01-17 | Hewlett-Packard Development Company, L.P. | Determining whether change in workload of database system has occurred, and/or whether executing current workload will likely result in problem developing with database system |
US8332618B2 (en) | 2009-08-07 | 2012-12-11 | Via Technologies, Inc. | Out-of-order X86 microprocessor with fast shift-by-zero handling |
US8407633B2 (en) | 2009-10-26 | 2013-03-26 | International Business Machines Corporation | Dynamically reconfigurable self-monitoring circuit |
CN102104936B (zh) * | 2009-12-18 | 2014-11-05 | 联想(北京)有限公司 | 系统状态切换方法及便携终端 |
US8566428B2 (en) | 2010-03-24 | 2013-10-22 | Accenture Global Services Limited | Cloud-based software eco-system |
US8719510B2 (en) | 2010-03-29 | 2014-05-06 | Via Technologies, Inc. | Bounding box prefetcher with reduced warm-up penalty on memory block crossings |
US8719561B2 (en) | 2010-11-29 | 2014-05-06 | International Business Machines Corporation | Automatic configuration sampling for managing configuration parameters of a computer system |
KR20120067133A (ko) * | 2010-12-15 | 2012-06-25 | 한국전자통신연구원 | 서비스 제공 방법 및 장치 |
US8930676B2 (en) * | 2010-12-22 | 2015-01-06 | Via Technologies, Inc. | Master core discovering enabled cores in microprocessor comprising plural multi-core dies |
US8972707B2 (en) | 2010-12-22 | 2015-03-03 | Via Technologies, Inc. | Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin |
CN102393814B (zh) * | 2011-07-18 | 2016-01-13 | 清华大学 | 一种由软件方式生成动态可重构处理器配置信息的系统 |
US8983453B1 (en) * | 2011-09-30 | 2015-03-17 | Airhop Communications, Inc. | Self-organization network architectures for heterogeneous networks |
KR101867960B1 (ko) | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 |
US9442732B2 (en) | 2012-03-19 | 2016-09-13 | Via Technologies, Inc. | Running state power saving via reduced instructions per clock operation |
US8966462B2 (en) | 2012-08-10 | 2015-02-24 | Concurix Corporation | Memory management parameters derived from system modeling |
US9031891B2 (en) * | 2012-09-27 | 2015-05-12 | Amadeus S.A.S. | Computing system and method for controlling the execution of a decision process to maintain the data access efficiency upon receipt of an availability information inquiry |
US8607018B2 (en) | 2012-11-08 | 2013-12-10 | Concurix Corporation | Memory usage configuration based on observations |
US9053070B1 (en) | 2012-12-10 | 2015-06-09 | Amazon Technologies, Inc. | Automated tuning of a service configuration using load tests on hosts |
US20150293582A1 (en) | 2014-04-15 | 2015-10-15 | Pierre Popovic | Energy Efficient Blade Server and Method for Reducing the Power Consumption of a Data Center Using the Energy Efficient Blade Server |
-
2014
- 2014-09-02 US US14/474,699 patent/US9575778B2/en active Active
- 2014-10-29 EP EP14190886.3A patent/EP2950222A3/en not_active Ceased
- 2014-12-12 CN CN201410764209.5A patent/CN104391678B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20150339132A1 (en) | 2015-11-26 |
US9575778B2 (en) | 2017-02-21 |
EP2950222A3 (en) | 2016-10-26 |
CN104391678A (zh) | 2015-03-04 |
EP2950222A2 (en) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391678B (zh) | 服务器及其方法、系统及其方法 | |
JP6559215B2 (ja) | システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体 | |
US8713335B2 (en) | Parallel processing computer systems with reduced power consumption and methods for providing the same | |
JP5487307B2 (ja) | 異種のリソース上へのコンピュータスレッドのマッピング | |
US8347301B2 (en) | Device, system, and method of scheduling tasks of a multithreaded application | |
US20130232310A1 (en) | Energy efficiency in a distributed storage system | |
US20150033229A1 (en) | Layered machine images | |
TWI465908B (zh) | 用於在階層式快取設計之快取記憶體間有效通訊的方法及設備 | |
CN104536736B (zh) | 服务器及其方法、系统及其方法 | |
CN107077440A (zh) | 紧密耦合的分布式非核一致结构 | |
Hsia et al. | Mp-rec: Hardware-software co-design to enable multi-path recommendation | |
CN105824604B (zh) | 多输入多输出处理器流水线数据同步装置及方法 | |
Flores et al. | Heterogeneous interconnects for energy-efficient message management in cmps | |
Zhang et al. | EPA: The effective pipeline architecture for CNN accelerator with high performance and computing efficiency based on FPGA | |
CN105830027A (zh) | 用于为网络处理器中的处理器核心预取并处理作业的方法和装置 | |
Ibrahim et al. | Efficient Cache Utilization via Model-aware Data Placement for Recommendation Models | |
TWI544343B (zh) | 伺服器及其方法、系統及其方法 | |
Dharane et al. | Throughput as Well as Latency Improvement Method of Processor or Chip Accelerator | |
Aasaraai et al. | NCOR: An FPGA‐Friendly Nonblocking Data Cache for Soft Processors with Runahead Execution | |
Malith et al. | NeuraChip: Accelerating GNN Computations with a Hash-based Decoupled Spatial Accelerator | |
Lakner et al. | Evolution of the IBM System Blue Gene Solution | |
CN116738904A (zh) | 处理器微架构设计方法、装置、电子设备和存储介质 | |
John | Effectiveness of SPEC CPU2006 and multimedia applications on Intel's single, dual and quad core processors | |
Daglis | A study of a dynamic placement policy in a NUCA cache | |
Hashemi | Core-Selectable Chip Multiprocessor Design |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |