管理工作负载存储器分配的方法和设备的制作方法

文档序号:6485375阅读:148来源:国知局
管理工作负载存储器分配的方法和设备的制作方法
【专利摘要】本文公开了管理工作负载存储器分配的方法、制品和设备。示例方法包括识别与平台相关联的主存储器和辅助存储器,辅助存储器具有与主存储器的第二性能度量不同的第一性能度量,识别与在平台上执行期间由工作负载调用的多个数据元素相关联的访问度量,基于与多个数据元素的对应数据元素相关联的访问度量,按优先排列多个数据元素的列表,以及基于多个存储器元素的第一存储器元素的优先级,将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器。
【专利说明】管理工作负载存储器分配的方法和设备
【技术领域】
[0001]本公开内容一般涉及存储器管理,并且更具体地说,涉及管理工作负载存储器分配的方法和设备。
【背景技术】
[0002]近年来,处理器已被开发以执行增大的每秒浮点运算数量(FLOPS)。促成增大的FLOPS的设计改进包括但不限于更大的晶体管密度和多个核。在另外的晶体管和/或核添加到处理器时,出现了功耗和热的对应增大,这可对FLOPS性能起到反作用。
【专利附图】

【附图说明】
[0003]图1是根据管理工作负载存储器分配的本公开内容的教导构成的示例工作负载管理器的示意图。
[0004]图2是指示请求平台的存储器访问的示例数据元素的示例表格。
[0005]图3是指示请求平台的存储器访问的示例数据阵列简档的示例表格。
[0006]图4-6是表示可执行以管理工作负载存储器分配,实现图1的示例工作负载管理器和/或构建图2和3的表格的示例机器可读指令的流程图。
[0007]图7是可执行图4-6的示例机器可读指令以实现图1的示例工作负载管理器和/或构建图2和3的表格的示例系统的框图。
【具体实施方式】
[0008]本文公开了管理工作负载存储器分配的方法、制品和设备。示例方法包括识别与平台相关联的主存储器和辅助存储器,辅助存储器具有与主存储器的第二性能度量不同的第一性能度量,识别与在平台上执行期间由工作负载调用的多个数据元素相关联的访问度量,基于与多个数据元素的对应数据元素相关联的访问度量,按优先排列(prioritize)多个数据元素的列表,以及基于多个存储器元素的第一存储器元素的优先级,将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器。
[0009]图1是控制工作负载存储器分配的示例工作负载控制器100的示意图。在图1的所示示例中,工作负载管理器100包括工作负载管理器102、数据元素识别器104、数据元素跟踪器106、数据元素性能计算器108、存储器管理器110、代码修改器112及链接程序(linker)接口 114。示例工作负载管理器100以通信方式连接到具有一个或更多个工作负载118、主存储器120、辅助存储器122和处理器124的示例平台116。
[0010]图1的平台116的示例处理器124包括执行示例工作负载118的任何数量的核。图1的示例工作负载118可包括但不限于由编译器机制从源代码生成和链接的可执行代码(例如,二进制码)的一个或更多个程序。代码的执行可包括但不限于执行一个或更多个程序,程序具有任何数量的相关联动态链路库(DLL)、一起链接到相同程序的一个或更多个单独的文件和/或集群使用模型,集群使用模型中工作负载包括带有涉及一个或更多个过程的任何数量的共享库的程序。在示例工作负载118执行期间,处理器124可访问主存储器120以操控和/或以其它方式处理数据。数据可包括但不限于数据阵列、文件、堆(heap)和/或栈(stack)。在本文中使用时,对数据、阵列数据和/或数据阵列的引用包括可由处理器124处理和/或存储在主存储器120和/或辅助存储器122中的所有类型的数据。在本文中使用时,主存储器120包括闪存、只读存储器(ROM)、随机存取存储器(RAM)和/或硬盘驱动器存储器。主存储器120例如可包括任何类型的双倍数据率(DDR) RAM (例如,DDR2、DDR3、DDR4 等)。
[0011]在一些示例中,平台116的辅助存储器122包括在与主存储器120相比时展示更低等待时间、相干性和/或更高带宽能力的增强性能设计。示例辅助存储器122可包括在与示例主存储器120对应的对应闪存、ROM、RAM和/或硬盘驱动器存储器相比时具有改进性能度量的闪存、ROM、RAM和/或硬盘驱动器存储器。示例辅助存储器122可基于其改进的性能特性而具有相关联溢价,并且因此,辅助存储器122的对应大小/容量可实质上低于主存储器120的大小/容量。相应地,示例辅助存储器122的利用由于其相对更高的成本和更低的大小而得到仔细审查。示例辅助存储器122可包括但不限于暂存RAM。暂存RAM是相对高速的内部存储器,可以是协调的(coherent),并且可位于处理器124上,在处理器124附近和/或在处理器封装内。
[0012]在操作中,示例工作负载管理器100识别改进(例如,优化)在示例平台116上执行的代码的一个或更多个机会。如上所述,虽然添加到处理器124的另外晶体管和/或核可在执行代码时产生更快的结果,但添加的晶体管的对应热生成和/或功耗可在FLOPS性能方面最终提供减小的收益。为在执行一个或更多个工作负载118时改进平台性能,示例工作负载管理器100识别工作负载118的存储器利用模式。如果由示例处理器124创建和/或以其它方式操控的第一数据阵列展示相对高的需求(例如,与第二数据阵列相比时的读/写操作的数量、数据阵列实质影响工作负载/平台性能的程度、相对比较等),则示例工作负载管理器100修改与示例工作负载118相关联的代码,以便为此类读/写操作利用相对更快类型的存储器。示例工作负载管理器100执行的代码修改可包括但不限于源代码修改、二进制码修改、动态即时(JIT)编码器修改等。在一些示例中,可重新链接代码以在某种程度上改进速度而无需一个或更多个编译操作。诸如示例辅助存储器122等更快类型的存储器允许通过比主存储器120更低的等待时间和/或更高的带宽进行读/写操作,由此改进在示例平台116上执行时工作负载118的性能。
[0013]示例工作负载管理器102检索和/或以其它方式接收来自平台116的工作负载118,并且执行在受监视环境中的工作负载以表征其操作。在一些示例中,工作负载管理器102获得,检索和/或以其它方式获得与示例平台116相关联的信息,如平台116利用和/或以其它方式可用的一个或更多个类型的存储器。如下面进一步详细所述,如果平台116包括具有在与示例主存储器120相比时改进的操作特性的一个或更多个类型的存储器(例如,辅助存储器122),则示例工作负载管理器100修改与工作负载118相关联的代码(例如,源代码、一个或更多个二进制码、磁盘上有利于随后执行优化的二进制码等),以利用此类存储器改进平台性能。示例工作负载管理器102可一次或更多次调用工作负载118以表征其数据阵列和存储器利用行为。在一些示例中,工作负载管理器102调用工作负载118的多次执行迭代以确定平均特性。在其它示例中,工作负载管理器102通过一个或更多个输入参数调用工作负载118以识别对应数据阵列和/或存储器利用行为(例如,应力试验)。
[0014]在示例工作负载118执行期间,示例数据元素识别器104识别到诸如示例主存储器120等平台116的一个或更多个存储器的数据访问的实例。示例数据元素跟踪器106为示例工作负载118采用的每个数据阵列计数数据访问的检测到的实例的数量,并且存储此类计数以便以后分析工作负载118行为。在其它示例中,收集和/或监视访问计数可能不足以确定在与一个或更多个其它数据阵列相比时关注的数据阵列的相对分级。在此类情况下,收集和/或监视用于关注的每个数据阵列的每时间单位的访问允许进行哪个(些)数据阵列可对平台和/或工作负载性能贡献最大益处的相对分级。如上所述,每个数据阵列可包括由示例工作负载采用的任何类型的存储器结构,如阵列、文件、堆、栈、寄存器等。示例数据元素跟踪器106也可从工作负载收集情报以发送到示例数据元素性能计算器108。
[0015]示例数据元素性能计算器108分析数据访问的存储实例,并且生成与执行到存储器的一个或更多个读/写操作的每个数据阵列相关联的一个或更多个数据访问行为的表格。如下面进一步详细所述,示例数据元素性能计算器108生成的表格可包括与每个数据阵列相关联的存储器访问尝试的数量的计数(访问计数)、存储器访问尝试导致延迟(例如,处理器自旋、处理器等待存储器变得可用于读/写操作、与负载和/或存储相关联的停顿)的实例数量的计数和/或在存储器访问尝试造成处理器自旋(例如,处理器等待事件)的实例期间发生的周期数量。在某种程度上基于由示例数据元素性能计算器108识别的一个或更多个计数值,数据访问行为的表格可将每个数据阵列分等级(例如,按优先排列)。在一些示例中,等级(例如,优先级)是基于到存储器的数据阵列访问实例的数量,而在其它示例中,等级是基于由到存储器的数据阵列访问实例产生的处理器周期的数量。通常,虽然第一数据阵列可包括在与第二数据阵列相比到一个或更多个存储器(例如,主存储器120)相对更大数量的访问尝试,但第一数据阵列进行的每个存储器访问实例可与相对小量的数据传送相关联。因此,与第一数据阵列相关联的相对高计数可不指示经主存储器120到相对更快辅助存储器122的数据阵列(例如,数据元素)使用的重新分配,用于改进平台116性能的候选更改(例如,优化)。另一方面,在一些示例中,与第一数据阵列相关联的相对低计数也可与在每个访问尝试期间相对大量的数据传送相关联。在此类在示例中,在配置(例如,优化)平台116性能以降低(例如,最小化)和/或消除在其它情况下在相对慢存储器不能足够快地执行读/写操作时可发生的处理器自旋时,更快的存储器可以是有益的。
[0016]图2示出由示例数据元素性能计算器108生成的示例表格200。在图2的所示示例中,表格200包括数据元素列202、访问计数列204、等待计数列206及处理器等待周期计数列208。示例数据元素列202包括由已参与示例工作负载118的示例数据元素识别器104识别的数据阵列的列表。虽然图2的所示示例包括阵列,但本文中公开的方法、制品和/或设备不限于此。例如,可实现其它形式的存储器,包括但不限于暂存存储器、暂存器、堆、动态分配的数据对象、栈等。对于每个识别的数据阵列,示例表格200包括在访问计数列204中指示数据阵列已向平台116的存储器进行访问尝试(例如,读、写等)的数量的对应计数值。另外,示例表格200包括在等待计数列206中指示数据阵列访问已造成对处理器的对应等待的数量的对应计数值。例如,表格200的第一行210与多次访问存储器712的“阵列I”相关联,但如示例等待计数列206中“O”所示,这些访问实例均未造成任何对处理器124的对应自旋/等待。因此,如示例处理器等待周期计数列308中“O”所示,示例“阵列I”未造成示例处理器124的任何对应周期计数。
[0017]另一方面,表格200的示例第三行212与“阵列3”和访问的存储器6219次相关联,其中,存储器访问的101个实例造成了示例处理器124等待。处理器124等待的101个实例造成处理器周期的对应数量是5050 (例如,101次访问尝试的每次造成50个处理器周期的延迟)。表格200的示例第五行214与“阵列5”和访问的存储器3921次相关联,其中,存储器访问的2971个实例造成了示例处理器124等待。虽然“阵列5”访问存储器大致为“阵列3”数量的一半,但在“阵列5”存储器访问期间处理器124等待的2971个实例造成的处理器周期的对应数量是2.1 X IO90相对而言,“阵列5”存储器访问造成的延迟实质上大于与工作负载118相关联的其它数据阵列造成的一个或更多个延迟,并且因此示例“阵列5”可以是用于与辅助存储器122 —起使用的候选。
[0018]在一些示例中,数据元素对示例工作负载118执行期间的一个或更多个实例提出存储器访问需求。例如,第一数据元素(例如,“阵列5”)可在与工作负载118相关联的执行过程的前半部分期间执行所有其存储器访问操作,而执行过程的后半部分不包括到第一数据元素的其它访问尝试。与数据元素对平台116存储器提出需求时相关联的信息可允许示例工作负载管理器100以保持辅助存储器122的有限资源的方式分配存储器使用。
[0019]图3示出由数据元素性能计算器108生成的示例数据阵列简档表格300。在图3的所示示例中,表格300包括数据元素列302和活动简档列304。示例数据元素性能计算器108生成在示例工作负载118执行过程(例如,工作负载开始时间350到工作负载停止时间352)期间用于每个对应数据元素(例如,“阵列I”到“阵列27”)的存储器访问活动的曲线图。在执行过程期间(水平轴),每个曲线表示相对于其它数据元素的访问活动的相对量值。示例表格300的第一行306与数据元素“阵列I”相关联,并且通过活动简档308指示在工作负载执行的后四分之三期间发生存储器访问活动。示例表格300的第三行310与数据元素“阵列5”相关联,并且通过活动简档312指示在工作负载执行的前半部分期间发生存储器访问活动。另外,与“阵列5”312相关联的存储器访问活动简档比与“阵列1”308相关联的存储器访问活动简档更高,这指示在用于每数据元素的每时间单位访问尝试数量中的相对差别。在一些示例中,比较每个访问活动简档高度和指示在工作负载118执行期间的某个时间期内存储器访问实例数量的一个或更多个阈值。其它示例阈值可基于由于存储器等待时间和/或带宽限制原因在处理器等待期间(自旋)内发生的处理器周期的数量。虽然示例阈值可基于明确值,但其它示例阈值可基于与在工作负载118执行期间活动的所有数据阵列相比时的相对百分比。
[0020]在示例工作负载118被执行和/或执行多次迭代以收集数据阵列(和/或任何其它类型的存储器)行为信息[例如,工作负载执行简档、数据元素访问计数、等待实例计数(例如,处理器等待)等]后,示例数据元素识别器104从表格200的示例数据元素列202选择数据元素之一。示例存储器管理器110确定示例辅助存储器122的大小和未使用的辅助存储器122的剩余空间的对应量。如果在检查的选择的数据元素在工作负载118执行的整个持续时间内指示高需求,并且在示例辅助存储器122中有足够的剩余空间,则示例代码修改器112标示数据元素在执行期间使用辅助存储器122。在其它示例中,在工作负载的寿命期间可以有存储器使用的时间变化。阈值可用于确定选择的数据元素是否应利用辅助存储器122。如下所述,标示成使用诸如更快的辅助存储器122等特定存储器的数据元素以后由示例代码修改器112修改,经编译和/或链接以生成新二进制码和/或修改现有二进制码(例如,无以前源代码修改)。
[0021]然而,如果选择的数据元素不利用存储器和/或在工作负载118执行的整个持续时间内进行存储器访问尝试,则示例存储器管理器110确定选择的数据元素是否在一部分的工作负载118执行期间利用阈值量的存储器资源。在操作中,示例存储器管理器Iio可分析与关注的数据元素相关联的活动简档列304中的活动简档,以识别阈值需求。例如,如果与“阵列5”相关联的数据元素由存储器管理器110分析,则存储器管理器110可调用示例代码修改器112以修改代码(例如,源代码、一个或更多个二进制码等),以便为工作负载118的前半部分利用辅助存储器122,并且为工作负载118的后半部分利用主存储器120。如图3的每个对应数据元素简档所示,在示例工作负载118的整个持续时间分割存储器利用可允许更高需求数据元素在需要时更快地操作,并且在不再需要时释放此类存储器。
[0022]虽然实现工作负载管理器100的示例方式已在图1-3中示出,但可以任何其它方式组合、划分、重新布置、忽略、消除和/或实现图1-3所示的一个或更多个元素、过程和/或装置。此外,图1的示例工作负载管理器100、示例工作负载管理器102、示例数据元素识别器104、示例数据元素跟踪器106、示例数据元素性能计算器108、示例存储器管理器110、示例代码修改器112、示例主存储器120和/或示例辅助存储器122可通过硬件、软件、固件和/或硬件、软件、固件的任何组合实现。因此,例如,示例工作负载管理器100、示例工作负载管理器102、示例数据元素识别器104、示例数据元素跟踪器106、示例数据元素性能计算器108、示例存储器管理器110、示例代码修改器112、示例主存储器120和/或示例辅助存储器122的任何项能够通过一个或更多个电路、可编程处理器、专用集成电路(ASIC)、可编程逻辑装置(PLD)和/或现场可编程逻辑装置(FPLD)等实现。在本专利的设备或系统权利要求项的任何项显示为包括纯软件和/或固件实现时,示例工作负载管理器100、示例工作负载管理器102、示例数据元素识别器104、示例数据元素跟踪器106、示例数据元素性能计算器108、示例存储器管理器110、示例代码修改器112、示例主存储器120和/或示例辅助存储器122的至少一项由此明确定义为包括诸如存储器、DVD、⑶、BluRay等存储软件和/或固件的至少一种有形计算机可读介质。还有,图1的示例工作负载管理器100可包括除图1-3中所示那些元素、过程和/或装置外的一个或更多个元素、过程和/或装置,或者取代图1-3中所示那些的元素、过程和/或装置,和/或可包括任何或所有所示元素、过程和/或装置的不止一项。
[0023]图4中示出表示用于实现图1的工作负载管理器100的示例机器可读指令的流程图。在此示例中,机器可读指令包括由诸如下面结合图7所述示例计算机700中所示处理器712等处理器执行的程序。程序可包含在一个或更多个有形计算机可读介质上存储的软件中,有形计算机可读介质如⑶-ROM、软盘、硬驱动器、数字多功能盘(DVD) ,BluRay盘或与处理器712相关联的存储器,但整个程序和/或其部分备选能够由与处理器712不同的装置执行和/或包含在固件和/或专用硬件中。此外,虽然示例程序参照图4所示流程图进行描述,但备选可使用实现示例工作负载管理器100的许多其它方法。例如,可更改框的执行顺序,和/或可更改、消除或组合一些框。
[0024]如上所述,图4-6的示例过程可使用在诸如硬驱动器、闪存、只读存储器(ROM)、压缩盘(CD)、数字多功能盘(DVD)、高速缓存、随机存取存储器(RAM)和/或其中信息在任何持续时间内存储(例如,在延长时间期内,永久,在简短时间内,暂时缓冲和/或信息的缓存)的任何其它存储介质等一个或更多个有形计算机可读介质上存储的编码指令(例如,计算机可读指令)实现。在本文中使用时,术语有形计算机可读介质明确定义成包括任何类型的计算机可读存储装置,并且不排除传播信号。另外或备选,图4-6的示例过程可使用在诸如硬驱动器、闪存、只读存储器、压缩盘、数字多功能盘、高速缓存、随机存取存储器和/或其中信息在任何持续时间内存储(例如,在延长时间期内,永久,在简短时间内,暂时缓冲和/或信息的缓存)的任何其它存储介质等一个或更多个非短暂性计算机可读介质上存储的编码指令(例如,计算机可读指令)实现。在本文中使用时,术语非短暂性计算机可读介质明确定义成包括任何类型的计算机可读介质,并且不排除传播信号。在本文中使用时,在短语“至少”用作权利要求的前置语中的过渡术语时,与术语“包括”是开放式相同,它是开放式。因此,使用“至少”作为其前置语中过渡术语的权利要求可包括除权利要求中明确叙述的那些元素外的元素。
[0025]图4的程序400从框402开始,在该框中,示例工作负载管理器102从平台116检索,获得和/或以其它方式接收工作负载118。示例工作负载118可存储在平台的存储器上,并且可包括利用示例平台116的一个或更多个资源的一个或更多个可执行程序。任何数量的执行迭代可由示例工作负载管理器102调用以表征在示例平台116上工作负载的行为(框404)。在一些示例中,在收集指示数据元素行为的一个或更多个参数时,工作负载管理器102调用工作负载118在平台116上执行一次。在其它示例中,工作负载管理器102调用工作负载118通过多次迭代执行,以计算指示数据元素行为的一个或更多个参数的平均值。
[0026]在示例工作负载118执行期间,数据元素识别器104识别到平台116的一个或更多个存储器的数据阵列访问尝试的实例,如尝试访问主存储器120的数据阵列(框406)。一般而言,一些数据阵列很少由工作负载118调用,并且因此实质对工作负载118执行延迟不造成影响。在其它示例中,由工作负载118调用的其它数据阵列对存储器访问(例如,读/写访问尝试)进行相对频繁的尝试,由此可能对总工作负载118执行时间造成更大程度影响。为识别数据阵列与平台116存储器交互的程度,示例数据元素跟踪器106收集性能信息,诸如但不限于计数每个数据阵列提出存储器访问请求的实例的数量和/或识别处理器停顿(框408)。计数数据访问实例可包括但不限于采用性能监视单元(PMU)收集来自一个或更多个模型特定寄存器(MSR)的数据。MSR可包括计数器寄存器、事件编程寄存器和/或全局事件寄存器。另外,PMU可执行基于事件的采样以计数与处理器活动有关的事件,如处理器等待由例如存储器等待时间和/或存储器带宽限制造成的存储器可用性。在一些示例中,采样可响应工作负载的扰动而进行以了解到工作负载和/或平台的一个或更多个强制输入的影响。
[0027]关注的示例工作负载118在示例平台116上执行时(框410),控制任意多次返回框406和408以识别数据访问实例和计数每个数据阵列进行存储器访问尝试的数量。关注的示例工作负载118执行完成时(框410),示例数据元素性能计算器108生成收集的参数的表格(例如图2的表格200)(框412)。收集的参数可包括但不限于已对存储器进行一次或更多次访问尝试的数据阵列的列表、每个数据阵列在工作负载118执行期间对存储器进行访问尝试的数量的计数、数据阵列进行的访问尝试造成对应延迟(例如,等待实例,处理器自旋,造成处理器等待未完成先前读/写操作的存储器)的数量的计数和/或处理器在等待访问存储器(例如,主存储器120)时在工作负载118执行期间经过的处理器周期的数量的计数。虽然示例表格200 (参见图2)在本文中描述为由示例数据元素性能计算器108创建,但可生成任何其它类型的工作负载简档表示,包括但不限于数据阵列存储器访问活动的热图。另外,示例数据元素性能计算器108生成示例数据阵列简档表300 (参见图3)以识别如下面进一步所述在工作负载118执行期间数据阵列存储器访问的时间指示(框412)。
[0028]为确定一个或更多个数据阵列是否能够在工作负载118执行期间有效地利用辅助存储器122,示例存储器管理器110、示例数据元素识别器104、示例数据元素性能计算器108及示例代码修改器112分析辅助存储器消耗(框414)。如下面进一步详细所述,如果预期对应性能改进,则可分配一个或更多个数据阵列以使用性能更高的辅助存储器122。如果预期性能改进,则示例代码修改器112修改与一个或更多个数据阵列相关联的代码(例如,源代码、一个或更多个二进制码等),以便在工作负载118执行期间利用性能更高的辅助存储器122 (框416)。示例链接程序接口 114调用编译器/链接程序以编译和/或链接修改的代码,以生成经改进(例如优化)以在所有或部分工作负载118执行期间利用性能更高的辅助存储器122的新二进制码(框418)。在一些示例中,在修改一个或更多个二进制码而不考虑对应源代码时,不需要编译器和/或以其它方式绕过编译器。在其它示例中,简档信息可被分析并且引导示例链接程序接口 114、二进制码修改器和/或运行时(runtime)加载器以重新生成一个或更多个二进制码。
[0029]转到图5,图中示出与分析数据访问实例相关联的另外细节(框412)。在图5的所示示例中,示例数据元素性能计算器108生成带有数据元素(数据阵列)的表格,这些数据元素已执行到诸如示例主存储器120等平台116存储器的至少一个数据访问尝试(框502)。例如,图2的示例表格200包括数据元素列202,数据元素列202包含已进行访问平台116存储器的一次或更多次尝试的一个或更多个数据阵列的列表。如图2的示例访问计数列204所示,示例数据元素性能计算器108也计数与每个数据元素相关联的访问尝试的数量(框504)。如果示例数据元素列202中的一个或更多个数据元素包括造成处理器124等待(例如,被浪费的处理器周期的自旋)的数据阵列,则示例数据元素性能计算器108计数该出现(occurrence)的对应实例数量(框506)。另外,此类处理器等待实例的严重性的程度由示例数据元素性能计算器108通过计数在此类等待实例期间处理器周期的对应数量来确定(框508) ο
[0030]如图3所示,为确定一个或更多个数据阵列访问存储器的工作负载118执行的时间部分,示例数据元素性能计算器108生成数据阵列简档表格300 (框510)。如上所述,数据元素性能计算器108生成与每个数据阵列相关联的简档,以示出工作负载118执行的哪个相对部分与存储器访问活动相关联。确定工作负载118内数据阵列访问存储器的相对时间位置的至少一个益处是能够在工作负载118执行期间在一个或更多个数据阵列之间明智地共享性能更高的辅助存储器122。例如,如果工作负载118的两个数据阵列由于辅助存储器122的存储器大小限制原因而不能同时得到利用,则第一数据阵列可为一部分工作负载118执行使用辅助存储器122,并且随后释放辅助存储器122以便第二数据阵列能够为剩余部分的工作负载118执行利用辅助存储器122。示例数据元素性能计算器108也可基于一个或更多个阈值将一个或更多个数据元素分类和/或指派等级次序以确定哪些数据元素应分配到性能更高的辅助存储器122 (框512)。在其它示例中,开发性能的成本模型可指示辅助存储器122的利用不可对总平台性能产生增多的益处。
[0031]转到图6,图中示出与分析辅助存储器122消耗相关联的另外细节(框414)。在图6所示示例中,示例数据元素识别器104从图2的表格200和/或图3的数据阵列简档表格300选择关注的数据元素(数据阵列)之一。在一些示例中,如上所述,基于对应等级次序选择数据元素。例如,可将与最高处理器计数等待值相关联的数据元素选择为用于改进(例如,优化)平台116性能的最佳候选数据元素。诸如示例辅助存储器122等性能更高的辅助存储器可实质上比主要存储器120更小和/或更贵。为确定与平台116相关联的辅助存储器122的大小,示例存储器管理器110确定辅助存储器122的对应大小(框604),并且确定其可用剩余空间(框606)。在其它示例中,辅助存储器122的大小是静态的,并且可执行一次而不是在环内,如在获得工作负载后(框402)。
[0032]如果示例数据元素性能计算器108确定关注的数据阵列在整个示例工作负载118执行内展示相对高的对存储器的访问尝试出现(框608),则示例存储器管理器110确定辅助存储器122是否具有足够的空间容纳关注的数据阵列(框610)。如果没有足够空间,则示例数据元素识别器104确定另外的候选数据阵列是否可供考虑(框612)。例如,数据元素识别器104可选择图2的表格200中下一最高等级的数据阵列。另一方面,如果在用于关注的候选数据阵列的辅助存储器122中有足够空间(框610),则示例代码修改器112标示要修改的数据阵列(框614),以便在所有候选数据阵列已考虑后,可修改与标示的数据阵列相关联的代码(例如,一个或更多个二进制码、源代码等)(参见图4的框416)。
[0033]如果数据元素性能计算器108确定关注的数据阵列在工作负载118执行期间一部分时间(例如,阈值部分)内尝试访问存储器(框608),则示例存储器管理器确定此类访问尝试是否超过阈值需求(框616)。如上所述,阈值需求可指示在工作负载118执行期间的某个时间期内存储器访问实例的数量、与所有数据阵列相比时和/或基于由于存储器等待时间和/或带宽限制原因在处理器等待期间(自旋)内发生的处理器周期的数量(或相对数量)的存储器访问实例的相对数量。在关注的数据元素(数据阵列)超过指示存储器访问需求和/或指示造成处理器周期延迟的一个或更多个阈值的部分工作负载118执行期间,示例代码修改器112标示关注的数据元素以便为该部分工作负载118执行使用辅助存储器122 (框618)。如果在图2的示例表格200和/或图3的数据阵列简档表格300中仍有另外的数据元素(框612),则控制返回框602。
[0034]图7是能够执行图4-6的指令以实现图1的工作负载管理器100的示例计算机700的框图。计算机700例如能够是服务器、个人计算机、移动电话(例如,蜂窝电话)、个人数字助理(PDA)、因特网电器、游戏控制台、机顶盒或任何其它类型的计算装置。
[0035]本示例的计算机700包括处理器712。例如,处理器712能够由来自任何所需系列或制造商的一个或更多个微处理器或控制器实现。
[0036]处理器712经总线718与包括易失性存储器714和非易失性存储器716的主存储器进行通信。易失性存储器714可通过同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其他类型随机存取存储器装置实施。非易失性存储器716可由闪存和/或任何其它所需类型的存储器装置实现。对主存储器714、716的访问由存储器控制器控制。[0037]计算机700也包括接口电路720。接口电路720可通过任何类型的接口标准实现,如以太网接口、通用串行总线(USB)和/或PCI高速接口。
[0038]一个或更多个输入装置722连接到接口电路720。输入装置722允许用户将数据和命令输入处理器712。输入装置例如能够由键盘、鼠标、触摸屏、触摸垫、轨迹球、iso点(isopoint)和/或话音识别系统实现。
[0039]一个或更多个输出装置724也连接到接口电路720。输出装置724例如能够由显示装置(例如,液晶显示器、阴极射线管显示器(CRT)、打印机和/或扬声器)实现。接口电路720因此一般包括图形驱动程序卡。
[0040]接口电路720也包括诸如调制解调器或网络接口卡等通信装置(例如,通信装置756),以促进经网络726 [例如,以太网连接、数字订户线路(DSL)、电话线、同轴电缆、蜂窝电话系统等]与外部计算机的数据交换。
[0041 ] 计算机700也包括一个或更多个海量存储装置728以便存储软件和数据。此类海量存储装置728的示例包括软盘驱动器、硬盘驱动器、压缩盘驱动器和数字多功能盘(DVD)驱动器。
[0042]图4-6的编码指令758可在海量存储装置728中,在易失性存储器714中,在非易失性存储器716中和/或在诸如CD或DVD等可拆卸存储介质上存储。
[0043]从上述内容中,将领会的是,通过识别可包括数据阵列、栈、堆等利用负责平台延迟的存储器资源的候选数据元素,上面公开的方法、设备和制品有利于存储器管理。通过以分配候选数据元素以使用性能更高的存储器类型的方式重写代码(例如,源代码、一个或更多个二进制码等),平台的总体操作可通过降低或甚至消除由在等待访问相对更慢存储器的数据元素造成的被浪费的处理器周期而得以改进(例如,优化)。
[0044]本文公开了管理工作负载存储器分配的方法、系统、设备和制品。一些公开的示例方法包括识别与平台相关联的主存储器和辅助存储器,辅助存储器具有与主存储器的第二性能度量不同的第一性能度量,识别与在平台上执行期间由工作负载调用的多个数据元素相关联的访问度量,基于与多个数据元素的对应数据元素相关联的访问度量,按优先排列多个数据元素的列表,以及基于多个存储器元素的第一存储器元素的优先级,将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器。另外,示例方法包括具有比主存储器更低等待时间的辅助存储器或比主存储器具有更高带宽的辅助存储器。在一些示例中,访问度量包括由多个数据元素的对应元素对主存储器的访问尝试的数量,包括检测该数量的访问尝试的至少之一是否造成等待事件,包括计数与等待事件相关联的处理器周期的数量,以及其中按优先排列多个数据元素的列表包括比较与多个数据元素的每个数据元素相关联的处理器周期的数量。一些示例包括通过比较与多个数据元素相关联的等待事件的数量,按优先排列多个数据元素的列表,并且在其它示例中,识别访问度量还包括测量与多个数据元素相关联的每单位时间的访问尝试的数量。本文中公开的示例也包括在每时间单位访问尝试的数量超过阈值时选择多个数据元素之一以从主存储器重新分配到辅助存储器,并且还包括在每时间单位访问尝试的数量超过阈值时将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器,并且在每时间单位访问尝试的数量低于阈值时将多个数据元素的第一数据元素从辅助存储器重新分配到主存储器。还有的其它示例包括多个数据元素的第一数据元素为工作负载的执行的第一部分利用辅助存储器,并且为工作负载的执行的第二部分利用主存储器。一些示例包括多个数据元素的第一数据元素利用辅助存储器,而多个数据元素的第二数据元素利用主存储器,并且其它示例包括交替多个数据元素的第一数据元素从辅助存储器到主存储器的利用和多个数据元素的第二数据元素从主存储器到辅助存储器的利用。其它示例包括在辅助存储器具有用于多个数据元素的第一数据元素的空间时,将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器。
[0045]为数据元素利用管理工作负载存储器的示例设备包括:工作负载管理器,以识别与平台相关联的主存储器和辅助存储器,辅助存储器具有与主存储器的第二性能度量不同的第一性能度量;工作负载控制器,以识别与在平台上执行期间由工作负载调用的多个数据元素相关联的访问度量;数据元素性能计算器,以基于与多个数据元素的对应数据元素相关联的访问度量,按优先排列多个数据元素的列表;以及存储器管理器,以基于多个存储器元素的第一存储器元素的优先级,将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器。另外的示例设备包括存储器管理器基于比主存储器更低的等待时间参数,选择辅助存储器,以及其中,存储器管理器基于比主存储器更高的带宽,选择辅助存储器,和/或其中,数据元素性能计算器要确定到主存储器的访问尝试是否造成等待事件。其它示例设备包括代码修改器以在每时间单位访问尝试的数量超过阈值时将数据元素使用从主存储器重新分配到辅助存储器,其中,代码修改器修改与工作负载相关联的源代码或二进制码至少之一。
[0046]包括存储机器可读指令的一些公开的示例制品,指令执行时,促使机器识别与平台相关联的主存储器和辅助存储器,辅助存储器具有与主存储器的第二性能度量不同的第一性能度量,识别与在平台上执行期间由工作负载调用的多个数据元素相关联的访问度量,基于与多个数据元素的对应数据元素相关联的访问度量,按优先排列多个数据元素的列表,以及基于多个存储器元素的第一存储器元素的优先级,将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器。其它示例制品促使机器确定由多个数据元素的对应元素对主存储器的访问尝试的数量,以及检测该数量的访问尝试的至少之一是否造成等待事件。还有的其它示例制品促使机器计数与等待事件相关联的处理器周期的数量,比较与多个数据元素的每个数据元素相关联的处理器周期的数量以按优先排列多个数据元素的列表,以及比较与多个数据元素相关联的等待事件的数量以按优先排列多个数据元素的列表。还有的其它示例制品促使机器测量与多个数据元素相关联的每单位时间的访问尝试的数量以识别访问度量,在每时间单位访问尝试的数量超过阈值时选择多个数据元素之一以从主存储器重新分配到辅助存储器,并且在每时间单位访问尝试的数量超过阈值时将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器,并且在每时间单位访问尝试的数量低于阈值时将多个数据元素的第一数据元素从辅助存储器重新分配到主存储器。在一些示例制品中,机器要促使机器通过多个数据元素的第一数据元素,为工作负载的执行的第一部分利用辅助存储器,并且为工作负载的执行的第二部分利用主存储器,以及通过多个数据元素的第一数据元素,利用辅助存储器,而多个数据元素的第二数据元素利用主存储器。另外,示例制品促使机器交替多个数据元素的第一数据元素从辅助存储器到主存储器的利用和多个数据元素的第二数据元素从主存储器到辅助存储器的利用,以及在辅助存储器具有用于多个数据元素的第一数据元素的空间时,将多个数据元素的第一数据元素从主存储器重新分配到辅助存储器。[0047]虽然某些示例方法、设备和制品已在本文中描述,但本专利的覆盖的范围并不限于此。相反,本专利覆盖完全位于本专利的权利要求书的范围内的所有方法、设备和制品。
【权利要求】
1.一种为数据元素利用管理工作负载存储器的方法,包括: 识别与平台相关联的主存储器和辅助存储器,所述辅助存储器具有与所述主存储器的第二性能度量不同的第一性能度量; 识别与在所述平台上执行期间由工作负载调用的多个数据元素相关联的访问度量; 基于与所述多个数据元素的对应数据元素相关联的所述访问度量,按优先排列所述多个数据元素的列表;以及 基于所述多个存储器元素的第一存储器元素的优先级,将所述多个数据元素的第一数据元素从所述主存储器重新分配到所述辅助存储器。
2.如权利要求1所述的方法,其中所述辅助存储器具有比所述主存储器更低的等待时间。
3.如权利要求1所述的方法,其中所述辅助存储器具有比所述主存储器更高的带宽。
4.如权利要求1所述的方法,其中所述访问度量包括由所述多个数据元素的对应元素对所述主存储器的访问尝试的数量。
5.如权利要求4所述的方法,还包括检测所述数量的访问尝试的至少之一是否造成等待事件。
6.如权利要求5所述的方法,还包括计数与所述等待事件相关联的处理器周期的数量。
7.如权利要求6所述的方法,其中按优先排列所述多个数据元素的所述列表包括比较与所述多个数据元素的每个数据元素相关联的处理器周期的所述数量。
8.如权利要求5所述的方法,其中按优先排列所述多个数据元素的所述列表包括比较与所述多个数据元素相关联的等待事件的所述数量。
9.如权利要求1所述的方法,其中识别所述访问度量还包括测量与所述多个数据元素相关联的每单位时间的访问尝试的数量。
10.如权利要求9所述的方法,还包括在每时间单位访问尝试的所述数量超过阈值时选择所述多个数据元素之一以从所述主存储器重新分配到所述辅助存储器。
11.如权利要求9所述的方法,还包括在每时间单位访问尝试的所述数量超过阈值时将所述多个数据元素的第一数据元素从所述主存储器重新分配到所述辅助存储器,并且在每时间单位访问尝试的所述数量低于所述阈值时将所述多个数据元素的所述第一数据元素从所述辅助存储器重新分配到所述主存储器。
12.如权利要求11所述的方法,其中所述多个数据元素的所述第一数据元素为所述工作负载的所述执行的第一部分利用所述辅助存储器,并且为所述工作负载的所述执行的第二部分利用所述主存储器。
13.如权利要求11所述的方法,其中所述多个数据元素的所述第一数据元素利用所述辅助存储器,而所述多个数据元素的第二数据元素利用所述主存储器。
14.如权利要求13所述的方法,还包括交替所述多个数据元素的所述第一数据元素从所述辅助存储器到所述主存储器的所述利用和所述多个数据元素的所述第二数据元素从所述主存储器到所述辅助存储器的所述利用。
15.如权利要求1所述的方法,还包括在所述辅助存储器具有用于所述多个数据元素的所述第一数据元素的空间时,将所述多个数据元素的所述第一数据元素从所述主存储器重新分配到所述辅助存储器。
16.一种为数据元素利用管理工作负载存储器的设备,包括: 工作负载管理器,以识别与平台相关联的主存储器和辅助存储器,所述辅助存储器具有与所述主存储器的第二性能度量不同的第一性能度量; 工作负载控制器,以识别与在所述平台上执行期间由工作负载调用的多个数据元素相关联的访问度量; 数据元素性能计算器,以基于与所述多个数据元素的对应数据元素相关联的所述访问度量,按优先排列所述多个数据元素的列表;以及 存储器管理器,以基于所述多个存储器元素的第一存储器元素的优先级,将所述多个数据元素的第一数据元素从所述主存储器重新分配到所述辅助存储器。
17.如权利要求16所述的设备,其中所述存储器管理器基于比所述主存储器更低的等待时间参数,选择所述辅助存储器。
18.如权利要求16所述的设备,其中所述存储器管理器基于比所述主存储器更高的带宽,选择所述辅助存储器。
19.如权利要求16所述的设备,其中所述数据元素性能计算器要确定到所述主存储器的访问尝试是否造成等待事件。
20.如权利要求16所述的设备,还包括代码修改器以在每时间单位访问尝试的数量超过阈值时将数据元素使用从所述主存储器重新分配到所述辅助存储器。
21.如权利要求16所述的设备,其中所述代码修改器修改与所述工作负载相关联的源代码或二进制码的至少之一。
22.至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器执行至少以下操作之一: 识别与平台相关联的主存储器和辅助存储器,所述辅助存储器具有与所述主存储器的第二性能度量不同的第一性能度量; 识别与在所述平台上执行期间由工作负载调用的多个数据元素相关联的访问度量; 基于与所述多个数据元素的对应数据元素相关联的所述访问度量,按优先排列所述多个数据元素的列表;以及 基于所述多个存储器元素的第一存储器元素的优先级,将所述多个数据元素的第一数据元素从所述主存储器重新分配到所述辅助存储器。
23.如权利要求22所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器确定由所述多个数据元素的对应元素对所述主存储器的访问尝试的数量。
24.如权利要求23所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器检测所述数量的访问尝试的至少之一是否造成等待事件。
25.如权利要求24所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器计数与所述等待事件相关联的处理器周期的数量。
26.如权利要求25所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器比较与所述多个数据元素的每个数据元素相关联的处理器周期的所述数量以按优先排列所述多个数据元素的列表。
27.如权利要求25所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器比较与所述多个数据元素相关联的等待事件的所述数量以按优先排列所述多个数据元素的列表。
28.如权利要求22所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器测量与所述多个数据元素相关联的每单位时间的访问尝试的数量以识别所述访问度量。
29.如权利要求28所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器在每时间单位访问尝试的所述数量超过阈值时选择所述多个数据元素之一以从所述主存储器重新分配到所述辅助存储器。
30.如权利要求28所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器在每时间单位访问尝试的所述数量超过阈值时将所述多个数据元素的第一数据元素从所述主存储器重新分配到所述辅助存储器,并且在每时间单位访问尝试的所述数量低于所述阈值时将所述多个数据元素的所述第一数据元素从所述辅助存储器重新分配到所述主存储器。
31.如权利要求30所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器通过所述多个数据元素的所述第一数据元素,为所述工作负载的所述执行的第一部分利用所述辅助存储器,并且为所述工作负载的所述执行的第二部分利用所述主存储器。
32.如权利要求30所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器通过所述多个数据元素的所述第一数据元素,利用所述辅助存储器,而所述多个数据元素 的第二数据元素利用所述主存储器。
33.如权利要求32所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器交替所述多个数据元素的所述第一数据元素从所述辅助存储器到所述主存储器的所述利用和所述多个数据元素的所述第二数据元素从所述主存储器到所述辅助存储器的所述利用。
34.如权利要求22所述的至少一种上面存储有指令的有形机器可访问介质,所述指令在执行时,促使所述机器在所述辅助存储器具有用于所述多个数据元素的所述第一数据元素的空间时,将所述多个数据元素的所述第一数据元素从所述主存储器重新分配到所述辅助存储器。
【文档编号】G06F9/50GK103999056SQ201180075943
【公开日】2014年8月20日 申请日期:2011年12月27日 优先权日:2011年12月27日
【发明者】M.R.格林菲尔德, R.格利佛 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1