CN111752610A - 异构存储器中的性能管理单元(pmu)辅助层级选择 - Google Patents

异构存储器中的性能管理单元(pmu)辅助层级选择 Download PDF

Info

Publication number
CN111752610A
CN111752610A CN202010155625.0A CN202010155625A CN111752610A CN 111752610 A CN111752610 A CN 111752610A CN 202010155625 A CN202010155625 A CN 202010155625A CN 111752610 A CN111752610 A CN 111752610A
Authority
CN
China
Prior art keywords
memory
signature
lbr
allocation
buffer
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.)
Pending
Application number
CN202010155625.0A
Other languages
English (en)
Inventor
哈沙德·萨恩
克希提·多希
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111752610A publication Critical patent/CN111752610A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及异构存储器中的性能管理单元(PMU)辅助层级选择。一种处理器包括处理核心,用于在执行存储器分配调用之前执行指令;一个或多个最后分支记录(LBR)寄存器,用于存储一个或多个最近引退的分支指令;性能监视单元(PMU),包括逻辑电路,用于:从一个或多个LBR寄存器取回一个或多个最近引退的分支指令;基于引退的分支指令识别存储器分配调用的签名;将签名提供给软件以确定存储器层级来为存储器分配调用分配存储器。

Description

异构存储器中的性能管理单元(PMU)辅助层级选择
技术领域
本公开总体涉及计算机技术;具体而言本公开涉及分级存储器系统中的存储器分配。
背景技术
异构存储器是这样的存储器,其包括由不同类型的存储硬件构成的多个层级的存储器。多层级异构存储器中的存储器分配可由硬件在低层级和高层级之间的直接映射的关联下控制。存储器分配也可由软件控制来将数据指派到适当层级的存储器。
发明内容
根据本公开的实施例,提供了一种处理器,包括:处理核心,用于执行存储器分配调用来分配存储器设备中的存储器;最后分支记录(LBR)寄存器,用于存储指示最近引退的分支指令的信息;以及耦合到所述LBR寄存器的性能监视单元(PMU),所述PMU包括逻辑电路,用于:在存储器分配调用被所述处理核心接收之前,从所述LBR寄存器取回所述信息;并且基于所述信息识别所述存储器分配调用的签名;并且将所述签名提供给所述处理核心。
根据本公开的实施例,提供了一种系统,包括:存储器;以及操作性地耦合到所述存储器的处理设备,所述处理设备用于:在执行存储器分配调用之前从最后分支记录(LBR)寄存器取回LBR;基于所述LBR识别所述存储器分配调用的执行情境;并且基于所述执行情境确定存储器层级来为所述存储器分配调用分配存储器。
根据本公开的实施例,提供了一种方法,包括:在存储器分配调用之前从最后分支记录(LBR)寄存器的堆栈取回LBR向量;利用所述LBR向量确定唯一签名,所述签名表示所述存储器分配调用的分配路径;基于所述签名从多个存储器层级中选择存储器层级;并且在所述存储器层级中为所述存储器分配调用指派存储器缓冲器。
根据本公开的实施例,提供了一种装置,包括用于执行上述方法的装置。
根据本公开的实施例,提供了一种装置,包括:被配置为执行上述方法的处理器。
附图说明
图1是用于基于存储器分配请求的执行情境的存储器的动态分配的计算设备的系统框图。
图2A是根据一实现方式图示出通向存储器分配调用的示例分配途径的框图。
图2B是图示出与签名相关联的若干个不同示例分配途径的框图。
图2C是图示出与分配途径的每个签名相关联的属性的表格。
图3是基于分配途径的属性向不同层级的存储器的示例存储器分配的框图。
图4是用于利用指派给执行情境的签名的动态存储器层级选择的示例方法的流程图。
图5是用于利用最后分支记录确定分配途径的向存储器层级的动态存储器分配的示例方法的流程图。
图6用于监视存储器分配以收集对于动态存储器层级选择相关的信息的示例方法的流程图。
图7A是根据一个实现方式图示出有序管线和寄存器重命名阶段、无序发出/执行管线的框图。
图7B是根据本公开的实现方式图示出可实现对多密钥加密引擎的硬件支持的处理器或集成电路的微体系结构的框图。
图8根据本公开的实现方式图示了实现对多密钥加密引擎的硬件支持的处理器或集成电路的微体系结构的框图。
图9是根据一个实现方式的计算机系统的框图。
图10是根据另一实现方式的计算机系统的框图。
图11是根据一个实现方式的片上系统的框图。
图12图示了计算系统的框图的另一实现方式。
图13图示了计算系统的框图的另一实现方式。
具体实施方式
在异构存储器系统中确定系统的哪个层级用于分配存储器可能是困难的。计算机应用一般是针对模块性来编码的,以使得代码的一些部分可容易被再利用。因为代码模块性,存储器分配的逻辑目的和/或情境可变得模糊。例如,逻辑目的可位于应用的一个部分中,而对分配器作出调用的代码部分位于应用的不同部分中。利用传统的方法来剖析应用的执行可能不足以将存储器缓冲器(即,分配的存储器的实例)被访问的频率与分配该缓冲器的调用的特定实例绑定起来。传统的剖析不能够准确地预测缓冲器的未来使用并且不能够在存储器分配调用时选择存储器的最高效分配。一般而言,存储器系统中的较高层级包括具有较低访问时延但具有较小容量的存储器类型,而较低存储器层级包括具有较高访问时延但具有较高容量的存储器类型。因此,存储器被分配到存储器层级的方法可实质性地影响存储器系统的性能。
静态分配机制可用于为存储器分配选择存储器层级。静态方法可基于代码内的特定存储器分配调用来选择哪个存储器层级用于指派存储器分配。然而,这些方法不允许考虑存储器分配的逻辑目的或情境。特定存储器分配调用在应用的代码中可被用于许多不同的目的。例如,存储器分配可能是在一函数内定义的,该函数在整个应用各处在若干个不同的情境中被调用。存储器分配被调用的不同目的可提供对分配的存储器缓冲器的不同使用。一个分配情境可经常使用缓冲器,而在一不同的情境中缓冲器可很少被使用。软件存储器层级选择方法可支持更灵活的存储器分配。然而,存在与应用剖析和数据收集相关联的很大开销,这可严重影响应用性能。从而,可能有必要识别和使用在其中作出存储器分配调用的情境以提供对存储器层级的高效使用。
本文描述的实施例可解决上述缺陷。在存储器分配调用被执行之前,一指令可被处理器执行以取回导致该存储器分配的若干个先前引退的指令(本文中称为“分配路径”)并且将该分配路径与识别符关联起来。性能管理单元(performance management unit,PMU)可收集关于由存储器分配调用分配的存储器缓冲器的信息。存储器分配调用在本文中被称为malloc调用。然而,可以使用任何其他类型的存储器分配调用或库。PMU可连续收集关于存储器缓冲器的信息。该信息可指示出与分配路径相关联的存储器缓冲器如何被使用(例如,缓冲器被访问的频率)。软件随后可使用分配路径的识别符来基于与该识别符相关联的存储器缓冲器的过去使用为后续存储器分配选择最优存储器层级。
在一个实施例中,PMU可将分配路径与本文中称为“签名”的识别符关联起来,以识别分配路径。签名可以是标量值,其可关联并识别所收集的关于分配路径的信息。同一签名可与具有相同或者相似分配路径的每一个分配的缓冲器相关联。具有相同签名的缓冲器的集合可被称为“签名域”。因此,关于签名域的存储器缓冲器的信息可被收集并汇总。例如,可通过如下方式来计算签名的访问密度:将对与该签名相关联的缓冲器的访问的总数除以分配给与该签名相关联的缓冲器的存储器的总量。因此,可至少部分基于签名的访问密度来为存储器分配选择存储器层级(例如,访问密度越高,选择的层级就越高)。存储器层级选择还可至少部分基于与签名相关联的缓冲器的大小和每个存储器层级的存储容量。关于存储器缓冲器的信息可被连续收集,以支持基于运行时行为为存储器分配动态选择存储器层级。
因此,本文描述的实施例可自动化并且简化异构存储器系统中的存储器层级选择,减小存储器分配的软件维护的负担。可以用更低的开销选择最优存储器层级并且可在各种各样的硬件配置上增大系统性能。此外,实施例可支持使用大容量存储器层级、高带宽存储器层级和存储器层级使用的其他变化。
图1是根据一个实施例图示出包括处理器110和存储器150的系统100的框图。处理器110可包括一个或多个处理核心120。处理核心120可包括性能监视单元(performancemonitoring unit,PMU)130和多个最后分支记录(last branch record,LBR)寄存器140。PMU 130还可包括转化电路132来将由LBR寄存器140所收集的LBR转化成执行情境的识别符。存储器150可包括多个层级的存储器152、154和156,每个层级包括不同类型的存储器。
LBR寄存器140可存储包括关于最近执行的分支指令的信息的LBR。例如,该信息可包括每个分支指令的源地址和目的地地址以及附加的元数据。存储在LBR寄存器140中的LBR可表示执行程序的控制流。LBR快照指令可从LBR寄存器140取回LBR并且重建导致当前指令(即malloc调用)的执行途径。在一个示例中,LBR快照指令可在malloc调用将要被执行时取回LBR。LBR快照指令可被编译器前端添加到代码,或者通过围绕malloc的封装器来添加到代码。LBR快照指令可如下所述使用PMU130硬件来利用从LBR寄存器140取回的LBR识别与分配路径相关联的签名。
PMU 130可以是执行单元的一部分并且可监视处理核心120的若干个性能特性,包括存储器访问率、存储器分配、时间记账,等等。PMU 130可包括转化电路132,用于响应于上文描述的LBR快照指令的执行而接收LBR信息并将其转化成识别malloc调用的分配路径的签名。转化电路132可将LBR向量散列成32比特、64比特或者其他单一标量值。转化电路可以是散列(hash)或者任何其他关联式硬件结构。在一个示例中,转化电路可在LBR快照被执行时对LBR寄存器140中的LBR的子集进行散列。该子集可例如是与函数调用和返回相关联的所有LBR,或者包括非函数分支的所有LBR,等等。转化电路132可将识别出的签名存储在硬件寄存器、缓存、临时存储区(scratchpad area)等等中以供软件使用。软件于是可用于将malloc调用返回的线性地址和将被malloc调用分配的存储器缓冲器的大小与所识别的签名关联起来。从而,签名可被软件用于识别和监视从特定分配路径分配的缓冲器。
从单个分配路径可分配许多不同的存储器缓冲器。从分配路径分配的每个存储器缓冲器可与对应于该分配路径的单个签名相关联。与签名相关联的存储器缓冲器可被称为签名域。对于每个签名域,PMU 130可用于收集关于该签名域的缓冲器的信息。对于缓冲器可收集各种类型的信息。在一个示例中,PMU 130可为每个缓冲器收集存储器访问数据。存储器访问数据可用于确定存储器访问频率并进而确定签名域的存储器访问密度(即访问的数目除以总存储器)。在从存储器释放存储器缓冲器时也可收集缓冲器的寿命。当存储器缓冲器被释放时,其也可将签名与存储器的该区域解除关联。存储器访问数据的收集在下文参考图5和图6进行了更详细的描述。
在malloc调用的签名被PMU 130的转化电路132确定之后,软件可使用所识别的签名来选择存储器层级以从malloc调用分配存储器缓冲器。如上所述,对于每个签名域可收集多种信息。收集的信息可被软件用来选择存储器层级。例如,为malloc调用识别的签名的签名域的存储器访问密度可被用于选择适当的存储器层级。在一个示例中,访问密度越大,选择的层级就越高。在另一示例中,与签名相关联的大小或者时间-空间乘积(即分配的存储器的量乘以分配存储器的时间)也可至少部分被用于选择存储器层级。例如,大小越大,和/或时间-空间乘积越大,选择的存储器层级就越低。该选择也可考虑到每个存储器层级的存储器容量(总容量和malloc时的容量两者)。存储器层级选择在下文参考图3进行了更详细的描述。
存储器150可包括一个或多个存储器层级152、154和156。每个存储器层级可包括不同类型的存储器存储硬件,例如随机访问存储器(random access memory,RAM)、动态RAM(dynamic RAM,DRAM)、非易失性RAM、固态设备(solid state device,SSD)、硬盘驱动器,等等。例如,层级152可包括DRAM,层级154可包括固态驱动器,并且层级156可包括硬盘驱动器。每个层级也可包括不同类型的存储硬件的组合。可基于总访问时延、读取访问时延和/或写入访问时延来确定存储器层级。在一个示例中,可基于存储设备与CPU的邻近度来对存储器150分层级。例如,在NUMA系统中,更遥远的节点可被指定为存储器的较低层级,因为时延可能较高。
图2A描述了可通向存储器分配(例如malloc)的若干个可能分配路径。对于描绘的每个分配路径,LBR快照指令可在E(指令230)和malloc(指令240)的执行之间被执行,以将不同分配路径中的每个分配路径散列到唯一签名。一个示例路径可开始于F(指令210)的执行,然后是C(指令215),再然后是E(指令230),之后是malloc调用(指令240)。另一路径可开始于F(指令210)的执行,然后是D(指令225),再然后是E(指令230),之后是malloc调用(指令240)。第三路径开始于G(指令220)的执行,然后是C(指令215),再然后是E(指令230),之后是malloc调用(指令240)。最后,描绘的第四分配路径可开始于G(指令220)的执行,然后是D(指令225),再然后是E(指令230),之后是malloc调用(指令240)。从而,在描绘的示例中,单个malloc调用之前可以有四个不同的分配路径。然而,应当注意本公开不限于描绘的分配路径,或者每个路径中描绘的指令的数目。可以采用任何数目的分配路径到单个malloc调用,并且任何数目的先前执行的指令可用于为分配路径识别签名。
图2B图示出分配路径到签名的示例关联。分配路径可以是在malloc调用之前执行的指令的唯一序列。指令的唯一序列因此也可与可用于识别分配路径的唯一签名相关联。在一个示例中,如图所示,分配路径250可包括执行序列F、D、E以及其后的malloc。分配路径250可与签名255相关联,由值“Z94”表示。包括执行序列F、C、E及其后的malloc的分配路径260可与签名265相关联,由值“Q35”表示。包括执行序列G、D、E及其后的malloc的分配路径270可与签名275相关联,由值“K51”表示。最后,包括执行序列G、C、E及其后的malloc的分配路径280可与签名285相关联,由值“W82”表示。散列函数可被应用到分配路径来确定要被指派到分配路径的签名。散列函数可以是低开销散列,其将LBR向量(分配路径)直接散列到标量值(例如,32或64比特签名)。
图2C描绘了例示出与每个签名域中的存储器缓冲器相关联的示例签名和数据的表格。在一个示例中,(识别分配路径的)每个签名与可用于为malloc选择存储器层级的一个或多个属性相关联。图2C中的签名分别与两个属性相关联,“温度”和“占位(footprint)”。温度可指示出签名域的缓冲器被访问的频率。该频率可以是该签名域中的所有存储器缓冲器的平均频率。占位可以指示与签名相关联的存储器的量。此外,占位可考虑到签名域中的存储器缓冲器的寿命。例如,占位可以是签名域中的缓冲器的平均时间-空间乘积。温度和占位可以是签名域中的所有存储器缓冲器上的平均。
在一个示例中,具有签名“Z94”的路径可具有温度“8”和占位“2”,而具有签名“Q35”的路径可具有温度“3”和占位“8”。因此,Z94的签名域中的存储器缓冲器平均被访问的频率比Q35的签名域中的缓冲器的两倍还多。此外,Z94的缓冲器的平均占位是Q35的缓冲器的占位的1/4那么小。因此,与具有签名Q35的下一malloc相比,将具有签名Z94的下一malloc分配到更高存储器层级,可以是最有利的。
图3描绘了基于“热量因子”(访问密度)和“相对大小”(大小或时间-空间乘积)的针对存储器层级中的若干个不同签名的malloc的示例放置。访问密度可以是签名域的访问的总数除以签名域中分配的总存储器。与每个签名相关联的相对大小可以是签名域中的所有缓冲器的平均大小。缓冲器的大小可以指该缓冲器占用的存储器的量,或者可以是时间-空间乘积(即占用的存储器的量乘以缓冲器的寿命)。每个签名可由其关联的访问密度来分类。例如,如图3中所示,类别可被表示为热量因子。热量因子可包括三个可能的类别:热(HOT)、暖(WARM)和冷(COLD)。热类别可表示访问密度的最高范围。暖可表示访问密度的中间范围,并且冷可表示访问密度的最低范围。可以使用更多类别或更少类别。分类可被周期性更新以确保为malloc适当选择存储器层级。存储器层级152、154和156可分别与参考图1描述的存储器层级152、154和156相同或相似。
在一个示例中,签名P、Q、R、S、T和U分别表示唯一分配路径。每个签名可根据其热量因子和其相对大小被放置在存储器层级中。一般而言,更热的签名(即,具有更高访问密度的签名)和具有更小大小的签名与更冷和更大的签名相比将被放置在更高层级中。签名P和Q都是热,因此与暖或冷签名相比将被放置在更高层级中。然而,因为存储器层级152有有限的容量,所以签名P将被放置在存储器层级152中,因为其是签名Q的1/4那么小。签名Q于是将被放置在存储器层级2中。类似地,签名R和S都是暖,从而与冷签名相比将被放置在更高存储器层级中。然而,签名S的大小比签名R大得多,因此签名S将被放置在存储器层级156中,签名R将被放置在存储器层级154中。签名T和U都是冷。冷的签名被自动放置在最低存储器层级中。因此,签名T和U可被自动放置在存储器层级156中。如图3中所示,每个签名的放置可取决于每个存储器层级的总容量以及在任何给定时间每个层级的剩余容量。用于存储器层级指派的策略可以是动态的并且可在程序运行时期间被设置或更新。
图4描绘了图示出基于malloc调用的执行情境的动态层级分配的示例方法400的流程图。在块402,在存储器分配调用之前可从多个LBR寄存器取回LBR向量。LBRSNAP指令可在即将要执行存储器分配调用之前被执行。LBR向量可包括一个或多个LBR,这些LBR表示导致存储器分配调用的执行的执行情境,或者说分配路径。LBR向量的LBR可包括关于一个或多个最近执行的分支指令的信息。例如,LBR可包括在存储器分配调用之前被处理器核心执行和引退的最后三十二个分支指令。
在块404,可从LBR向量确定签名。签名可表示存储器分配调用的分配路径。在块402取回的LBR可被散列到被称为签名的唯一标量值。可为系统执行的每个malloc调用确定签名。签名在其寿命期间可保持与每个分配的存储器缓冲器相关联,从而可为签名生成存储器访问简况。具有相同分配路径的先前存储器分配的附加信息可被收集并且与签名相关联,以生成存储器访问简况。
在块406,可基于在块404从LBR向量确定的签名为存储器分配调用选择存储器层级。签名的签名域可包括与该签名相关联的每个缓冲器。签名域的缓冲器的访问统计可用于确定要选择的存储器层级。例如,签名域中的缓冲器的平均访问密度可用于选择存储器层级。存储器分配的成本(例如大小和寿命)也可用于选择中。选择存储器层级时的其他考虑可包括分别为向签名域的缓冲器的写入和读取确定访问密度。写入和读取的访问密度在确定要选择的存储器层级时可被不同地加权。例如,具有更高读取访问密度的缓冲器与具有更高写入访问密度的缓冲器相比可被放置在更高存储器层级中。应用也可指示出哪些存储器分配要优先在更高层级的存储器中。
图5描绘了图示出存储器缓冲器大小、访问频率和寿命的收集和动态存储器层级分配的示例方法500的流程图。在块502,执行单元可接收malloc调用。malloc调用可以是对用于分配系统的存储器中的存储器缓冲器的请求。系统的存储器可以是异构的并且因此由多个层级的存储器构成。在块504,可在malloc调用之前执行指令以取回在处理核心的LBR寄存器中收集的LBR的快照(即LBR向量)。一次取回的LBR的数目可以是LBR寄存器中存储的所有LBR(例如一些系统中的所有32个LBR)。每个LBR可包括与引退的分支指令及其执行有关的信息。
在块506,PMU可为malloc调用确定LBR向量的签名。签名可以是表示唯一分配路径的标量值。具有相同分配路径的每个存储器分配调用可具有相同签名。为了确定签名,低开销散列可被应用到LBR向量。从而,签名的识别可在对性能影响较低的情况下迅速完成。分配的每个存储器缓冲器可继续与其最初被散列到的签名相关联。该关联可被存储在将与一签名相关联的所有缓冲器映射到该签名(即多对一)的数据结构中。存储器缓冲器的虚拟地址可与存储器缓冲器的大小一起被收集。虚拟地址可用于将存储器缓冲器与数据结构中的签名关联起来。于是虚拟地址可用于跟踪对存储器缓冲器的访问。
在块508,存储器分配可基于与存储器分配调用的签名相关联的剖析数据被指派到存储器层级。如上所示,签名可保持关联到在存储器中分配的存储器缓冲器(即签名域)。关于签名域的缓冲器的剖析数据可被收集并汇总。来自存储器域的汇总剖析数据可包括诸如以下信息:对签名域的缓冲器的访问频率,分配给域的存储器缓冲器的总存储器,签名域的缓冲器在存储器中存留的平均时间,等等。利用收集的剖析数据,分配调用可被分配到适当的存储器层级。例如,访问密度和时间-空间乘积可用于选择向哪个层级分配存储器缓冲器。收集的与签名的存储器缓冲器有关的任何其他剖析数据也可用于选择存储器层级。此外,应用可指定哪些存储器分配调用优先在更高存储器层级中。
在块510,可确定是否接收到释放存储器缓冲器的指令。如果没有接收到释放的指令,则该过程继续收集访问数据并且动态地分配存储器缓冲器到最优存储器层级。如果接收到释放存储器缓冲器的指令,则要释放的存储器缓冲器可被从存储器去除以为其他存储器分配空出存储器空间。在块512,PMU可记录要释放的存储器缓冲器的寿命并且将该信息与释放的存储器缓冲器的签名存储在一起。为了记录寿命,PMU可记录存储器缓冲器分配时的时间戳和释放指令时的时间戳。时间戳之间的差值可表示存储器缓冲器的寿命。与签名相关联的信息,尤其是时间-空间乘积,于是可被更新以动态地跟踪签名的存储器分配的成本。在块514,存储器缓冲器可被释放并且该过程可继续基于收集的签名域的剖析信息来分配存储器并且连续地收集并更新剖析信息来支持动态存储器层级选择。
图6是用于收集与存储器缓冲器相关联的访问简况数据的示例方法的流程图。在块602,PMU可监视精确事件的发生。基于精确事件的采样(Precise event basedsampling,PEBS)可按由应用配置的各种间隔为指定的事件收集样本。例如,当存储器访问错失最后一级缓存(last level cache,LLC)、转化后备缓冲器错失发生或者提供存储器访问的指示的其他PEBS事件时,可收集PEBS样本。在块604,可确定触发的存储器事件是否发生了。如果否,则监视继续,直到触发的存储器事件(例如缓存错失)发生为止。如果触发的存储器事件发生,则在块606,在数据缓冲器中收集事件数据。基于被捕捉的事件的类型,事件数据可包括存储器访问的虚拟地址和缓存线的数据的源。数据的源可用于确定对存储器访问的NUMA放置是否可被优化(例如,与选择存储器层级类似的选择NUMA节点)。在块608,收集的数据可被插入到表格中。该表格可由数据地址来索引,使得收集的数据可被用签名来识别。该过程可继续重复,从触发的PEBS事件收集存储器访问数据,并且为每个签名域合计访问计数。这样,与签名域的存储器缓冲器相关联的相对访问率可被连续地确定并且用于为存储器分配调用动态地选择存储器层级(或者NUMA节点)。
图7A是图示出对于异构存储器系统中的动态存储器分配实现硬件支持的处理器700的微体系结构的框图。具体而言,处理器700描绘了根据本公开的至少一个实现方式要被包括在处理器中的按序体系结构核心和寄存器重命名逻辑、无序发出/执行逻辑。
处理器700包括耦合到执行引擎单元750的前端单元730,并且两者都耦合到存储器单元770。处理器700可包括精简指令集计算(reduced instruction set computing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心或者混合或替换核心类型。作为另外一个选项,处理器700可包括专用核心,例如网络或通信核心、压缩引擎、图形核心,等等。在一个实现方式中,处理器700可以是多核心处理器或者可以是多处理器系统的一部分。
前端单元730包括分支预测单元732,其耦合到指令缓存单元734,指令缓存单元734耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)736,该TLB 736耦合到指令取得单元738,该指令取得单元738耦合到解码单元740。解码单元740(也称为解码器)可对指令进行解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码器740可利用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。指令缓存单元734还耦合到存储器单元770。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括耦合到引退单元754和一组一个或多个调度器单元756的重命名/分配器单元752。(一个或多个)调度器单元756表示任何数目的不同调度器电路,包括预留站(reservations station,RS)、中央指令窗口等等。(一个或多个)调度器单元756耦合到(一个或多个)物理寄存器集合单元758。物理寄存器集合单元758的每一者表示一个或多个物理寄存器集合,这些物理寄存器集合中的不同物理寄存器集合存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等等,状态(例如,作为要执行的下一指令的地址的指令指针),等等。(一个或多个)物理寄存器集合单元758与引退单元754重叠以例示出可用来实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器集合,使用(一个或多个)未来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器集合;使用寄存器地图和寄存器的池;等等)。
一般而言,体系结构寄存器从处理器的外部或者从编程者的角度来看是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是适当的,只要它们能够存储和提供如本文所述的数据。适当寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合,等等。引退单元754和(一个或多个)物理寄存器集合单元758耦合到(一个或多个)执行集群760。(一个或多个)执行集群760包括一组一个或多个执行单元762和一组一个或多个存储器访问单元764。执行单元762可执行各种操作(例如,移位、加法、减法、乘法)以及在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上进行操作。
虽然一些实现方式可包括专用于特定功能或功能集合的若干个执行单元,但其他实现方式可只包括一个执行单元或者全都执行所有功能的多个执行单元。(一个或多个)调度器单元756、(一个或多个)物理寄存器集合单元758和(一个或多个)执行集群760被示为可能是多个,因为某些实现方式为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器单元、物理寄存器集合单元和/或执行集群–并且在单独的存储器访问管线的情况下,实现了某些实现方式,其中只有此管线的执行集群具有(一个或多个)存储器访问单元764)。还应当理解,在使用单独管线的情况下,这些管线中的一个或多个可以是无序发出/执行,其余的是有序的。
该组存储器访问单元764耦合到存储器单元770,该存储器单元770举例来说可包括数据预取器780、数据TLB单元772、数据缓存单元(data cache unit,DCU)774和第2级(L2)缓存单元776。在一些实现方式中,DCU 774也被称为第一级数据缓存(L1缓存)。DCU774可处理多个未决的缓存错失并且继续为到来的存储和加载服务。其也支持维持缓存一致性。数据TLB单元772是用于通过映射虚拟和物理地址空间来改善虚拟地址转化速度的缓存。在一个示范性实现方式中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中每一者耦合到存储器单元770中的数据TLB单元772。L2缓存单元776可耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
在一个实现方式中,数据预取器780通过自动预测程序将要消耗哪个数据来投机性地加载/预取数据到DCU 774。预取可以指在处理器实际需要数据之前将存储在存储器层次体系的一个存储器单元(例如,位置)(例如,较低级别缓存或存储器)中的数据传送到更靠近处理器(例如,产生更低的访问时延)的更高级别存储器单元。更具体而言,预取可以指在处理器发出对返回特定数据的需求之前提早将数据从较低级别缓存/存储器之一取回到数据缓存和/或预取缓冲器。
处理器700可支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);英国赫特福德郡金斯兰利的Imagination Technologies公司的MIPS指令集;加州森尼维耳的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)。
应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按多种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取指和解码,然后是同时多线程处理,例如像
Figure BDA0002403909840000141
Hyperthreading技术中那样)。
虽然寄存器重命名是在无序执行的情境中描述的,但应当理解寄存器重命名可用于有序体系结构中。虽然处理器的图示实现方式还包括单独的指令和数据缓存单元和共享的L2缓存单元,但替换实现方式可对于指令和数据两者具有单个内部缓存,例如第1级(L1)内部缓存,或者多级别的内部缓存。在一些实现方式中,系统可包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存都可在核心和/或处理器外部。
图7B是根据本公开的一些实现方式图示出由图7A的处理器700实现的有序管线和寄存器重命名阶段、无序发出/执行管线的框图。图7B中的实线框图示了有序管线701,而虚线框图示了寄存器重命名、无序发出/执行管线703。在图7B中,管线701和703包括取得阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(也称为调遣或发出)阶段712、寄存器读取/存储器读取阶段714、执行阶段716、写回/存储器写入阶段718、异常处理阶段722和提交阶段724。在一些实现方式中,阶段702-724的排序可与图示的不同并且不限于图7B中所示的特定排序。
图8根据本公开的实现方式图示了处理器800的微体系结构的框图,该处理器800包括对于异构存储器系统中的动态存储器分配实现硬件支持的处理器或集成电路的逻辑电路。在一些实现方式中,根据一个实现方式的指令可被实现为在具有字节、字、双字、四字等等的大小以及诸如单精度和双精度整数和浮点数据类型之类的数据类型的数据元素上操作。在一个实现方式中,有序前端801是处理器800的如下部分:该部分取得要执行的指令并且使它们为在处理器管线中稍后被使用做好准备。页添加和内容拷贝的实现方式可在处理器800中实现。
前端801可包括若干个单元。在一个实现方式中,指令预取器816从存储器取得指令并且将其馈送到指令解码器818,指令解码器818进而对指令进行解码或解释。例如,在一个实现方式中,解码器将接收到的指令解码成机器能够执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实现方式中,解码器将指令解析成操作码和相应的数据和控制字段,它们被微体系结构用来根据一个实现方式执行操作。在一个实现方式中,踪迹缓存830取得解码的uop并且将它们组装成uop队列834中的程序排序序列或踪迹来供执行。当踪迹缓存830遇到复杂指令时,微代码ROM(或RAM)832提供完成操作所需要的uop。
一些指令被转换成单个微op,而其他的需要若干个微op来完成整个操作。在一个实现方式中,如果完成指令需要多于四个微op,则解码器818访问微代码ROM 832来进行该指令。对于一个实现方式,指令可被解码成少量的微op以便在指令解码器818处处理。在另一实现方式中,如果完成操作需要若干个微op,则指令可被存储在微代码ROM 832内。踪迹缓存830参考入口点可编程逻辑阵列(PLA)来确定正确的微指令指针以用于从微代码ROM832读取微代码序列来完成根据一个实现方式的一个或多个指令。在微代码ROM 832完成针对一指令的对微op排序之后,机器的前端801继续开始从踪迹缓存830取得微op。
无序执行引擎803是使指令为执行做准备的地方。无序执行逻辑具有若干个缓冲器来在指令沿着管线走过并且被调度来执行时平滑和重排序指令的流以优化性能。分配器逻辑分配每个uop为了执行所需要的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器集合中的条目上。分配器还为指令调度器前面的两个uop队列之一中的每个uop分配条目,这两个uop队列一个用于存储器操作,一个用于非存储器操作,这些指令调度器是:存储器调度器、快速调度器802、慢速/一般浮点调度器804和简单浮点调度器806。uop调度器802、804、806基于其从属输入寄存器操作对象源的准备就绪性和uop完成其操作所需要的执行资源的可用性来确定uop何时准备好执行。一个实现方式的快速调度器802可在主时钟周期的每一半上调度,而其他调度器在每个主处理器时钟周期只能调度一次。调度器为调遣端口仲裁以调度uop来执行。
寄存器集合808、810位于调度器802、804、806和执行块811中的执行单元812、814、816、818、820、822、824之间。对于整数和浮点操作分别有单独的寄存器集合808、810。一个实现方式的每个寄存器集合808、810还包括旁路网络,其可以绕过或者转发尚未被写入到寄存器集合中的刚才完成的结果到新的从属uop。整数寄存器集合808和浮点寄存器集合810也能够与另一者传达数据。对于一个实现方式,整数寄存器集合808被分割成两个单独的寄存器集合,一个寄存器集合用于数据的低位32比特,第二寄存器集合用于数据的高位32比特。一个实现方式的浮点寄存器集合810具有128比特宽的条目,因为浮点指令通常具有宽度从64到128比特的操作对象。
执行块811包含执行单元812、814、816、818、820、822、824,指令在其中被实际执行。此部分包括存储微指令执行所需要的整数和浮点数据操作对象值的寄存器集合808、810。一个实现方式的处理器800包括若干个执行单元:地址生成单元(address generationunit,AGU)812,AGU 814,快速ALU 816,快速ALU 818,慢速ALU 820,浮点ALU 812,浮点移动单元814。对于一个实现方式,浮点执行块812、814执行浮点、MMX、SIMD和SSE或者其他操作。一个实现方式的浮点ALU 812包括64比特乘64比特浮点除法器来执行除法、平方根和余数微op。对于本公开的实现方式,可以用浮点硬件来处理涉及浮点值的指令。
在一个实现方式中,ALU操作去到高速ALU执行单元816、818。一个实现方式的快速ALU 816、818可以以半时钟周期的有效时延执行快速操作。对于一个实现方式,大多数复杂整数操作去到慢速ALU 820,因为慢速ALU 820包括整数执行硬件,用于长时延型操作,例如乘法器、移位、标志逻辑和分支处理。存储器加载/存储操作由AGU 822、824执行。对于一个实现方式,整数ALU 816、818、820是在对64比特数据操作对象执行整数操作的情境中描述的。在替换实现方式中,ALU 816、818、820可被实现来支持多种数据比特,包括16、32、128、256等等。类似地,浮点单元822、824可被实现来支持某个范围的具有各种宽度的比特的操作对象。对于一个实现方式,浮点单元822、824可结合SIMD和多媒体指令在128比特宽紧缩数据操作对象上操作。
在一个实现方式中,uop调度器802、804、806在父加载完成执行之前调遣从属的操作。由于uop在处理器800中被投机性地调度和执行,处理器800也包括逻辑来处理存储器错失。如果数据加载在数据缓存中错失,则在管线中可能有进行中的从属操作,它们给调度器留下了暂时不正确的数据。重放机制跟踪和重执行使用不正确数据的指令。只有从属操作需要被重放,而独立操作被允许完成。处理器的一个实现方式的调度器和重放机制也被设计为为文本串比较操作捕捉指令序列。
术语“寄存器”可以指被用作指令的一部分来识别操作对象的板上处理器存储位置。换言之,寄存器可以是从处理器的外部可使用的那些(从编程者的角度来看)。然而,实现方式的寄存器在含义上不应当限于特定类型的电路。更确切地说,实现方式的寄存器能够存储和提供数据,并且执行本文描述的功能。本文描述的寄存器可由处理器内的电路利用任何数目的不同技术实现,例如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合,等等。在一个实现方式中,整数寄存器存储32比特整数数据。一个实现方式的寄存器集合也包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文的论述,寄存器被理解为是被设计为保存紧缩数据的数据寄存器,例如用来自加州圣克拉拉的英特尔公司的MMX技术使能的微处理器中的64比特宽MMXTM寄存器(在一些场合中也称为“mm”寄存器)以整数和浮点形式都可得的这些MMX寄存器可结合伴随SIMD和SSE指令的紧缩数据元素操作。类似地,与SSE2、SSE3、SSE4或以上(统称为“SSEx”)技术有关的128比特宽XMM寄存器也可被用于保存这种紧缩数据操作对象。在一个实现方式中,在存储紧缩数据和整数数据时,寄存器不需要在两种数据类型之间进行区分。在一个实现方式中,整数和浮点被包含在相同寄存器集合中或者不同寄存器集合中。此外,在一个实现方式中,浮点和整数数据可被存储在不同寄存器中或者相同寄存器中。
实现方式可实现在许多不同的系统类型中。现在参考图9,示出了可对于异构存储器系统中的动态存储器分配实现硬件支持的多处理器系统900的框图。如图9中所示,多处理器系统900是点到点互连系统,并且包括经由点到点互连950耦合的第一处理器970和第二处理器980。如图9中所示,处理器970和980的每一者可以是多核处理器,包括第一和第二处理器核心(即,处理器核心974a和974b和处理器核心984a和984b),虽然可能在处理器中存在多得多的核心。虽然示为具有两个处理器970、980,但要理解本公开的范围不限于此。在其他实现方式中,一个或多个额外的处理器可存在于给定的处理器中。
处理器970和980被示为分别包括集成存储器控制器单元972和982。处理器970还包括点到点(P-P)接口976和988作为其总线控制器单元的一部分;类似地,第二处理器980包括P-P接口986和988。处理器970、980可利用P-P接口电路978、988经由点到点(P-P)接口950交换信息。如图9中所示,IMC 972和982将处理器耦合到各自的存储器,即存储器932和存储器934,存储器932和存储器934可以是在本地附接到各个处理器的主存储器的一部分。
处理器970、980可利用点到点接口电路976、994、986、998经由个体P-P接口952、954与芯片集990交换信息。芯片集990也可经由高性能图形接口939与高性能图形电路938交换信息。
芯片集990可经由接口996耦合到第一总线916。在一个实现方式中,第一总线916可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或互连总线之类的总线,虽然本公开的范围不限于此。
现在参考图10,根据本公开的一实现方式示出了可对于异构存储器系统中的动态存储器分配实现硬件支持的第三系统1000的框图。图9和图10中的相似元素带有相似的标号,并且图10的某些方面被从图9中省略以避免模糊图9的其他方面。
图10图示出处理器1070、1080可分别包括集成存储器和I/O控制逻辑(“CL”)1072和1092。对于至少一个实现方式,CL 1072、1082可包括例如本文所述的集成存储器控制器单元。此外,CL 1072、1092也可包括I/O控制逻辑。图10图示出存储器1032、1034耦合到CL1072、1092,并且I/O设备1014也耦合到控制逻辑1072、1092。遗留I/O设备1015耦合到芯片集1090。
图11是示范性片上系统(SoC)1100,其可包括可以对于异构存储器系统中的动态存储器分配实现硬件支持的核心1102A…1102N中的一个或多个。本领域中已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的许多种系统或电子设备一般是适当的。
在图11的示范性SoC 1100内,虚线框是更先进SoC上的特征。(一个或多个)互连单元1102可耦合到:应用处理器1117,其包括一组一个或多个核心1102A-N,和(一个或多个)共享缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组一个或多个媒体处理器1120,其可包括集成图形逻辑1108、用于提供静止和/或视频相机功能的图像处理器1124、用于提供硬件音频加速的音频处理器1126以及用于提供视频编码/解码加速的视频处理器1128;静态随机访问存储器(static random access memory,SRAM)单元1130;直接存储器访问(direct memoryaccess,DMA)单元1132;以及显示单元1140,用于耦合到一个或多个外部显示器。
接下来转到图12,描述了根据本公开的实现方式的可以对于异构存储器系统中的动态存储器分配实现硬件支持的片上系统(SoC)设计的实现方式。作为说明性示例,SoC1200被包括在用户设备(user equipment,UE)中。在一个实现方式中,UE指将被最终用户用来通信的任何设备,例如手持电话、智能电话、平板设备、超薄笔记本、具有宽带适配器的笔记本或者任何其他类似的通信设备。UE可连接到基站或节点,这在性质上可对应于GSM网络中的移动站(mobile station,MS)。页添加和内容拷贝的实现方式可在SoC 1200中实现。
这里,SoC 1200包括2个核心——1206和1207。与以上论述类似,核心1206和1207可符合指令集体系结构,例如具有
Figure BDA0002403909840000201
体系结构CoreTM的处理器、超微半导体公司(Advanced Micro Devices,Inc.,AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或者它们的客户,以及它们的被许可者或使用者。核心1206和1207耦合到与总线接口单元1209和L2缓存1210相关联的缓存控制1208以与系统1200的其他部分通信。互连1211包括片上互连,例如IOSF、AMBA或者上文论述的其他互连,它们可实现描述的公开的一个或多个方面。
在一个实现方式中,SDRAM控制器1240可经由缓存1210连接到互连1211。互连1211提供通信信道到其他组件,例如提供到订户身份模块(Subscriber Identity Module,SIM)1230来与SIM卡相接口,提供到引导ROM 1235来保存引导代码供核心1206和1207执行来初始化和引导SoC 1200,提供到SDRAM控制器1240来与外部存储器(例如DRAM 1260)相接口,提供到闪存控制器1245来与非易失性存储器(例如,闪存1265)相接口,提供到外设控制1250(例如,串行外围接口)来与外设相接口,提供到视频编解码器1220和视频接口1225来显示和接收输入(例如,触摸使能输入),提供到GPU 1215来执行图形相关计算,等等。这些接口的任何一者可包含本文描述的实现方式的方面。
此外,系统图示了用于通信的外设,例如
Figure BDA0002403909840000211
模块1270、3G调制解调器1275、GPS 1280和
Figure BDA0002403909840000212
1285。注意如上所述,UE包括用于通信的无线电装置。结果,这些外围通信模块可不全都被包括。然而,在UE中,应当包括某种形式的无线电装置用于外部通信。
图13图示了采取计算系统1300的示例形式的机器的图解表示,在该计算系统1300内有一组指令,用于使得机器对于根据本文论述的任何一个或多个方法的异构存储器系统中的动态存储器分配实现硬件支持。在替换实现方式中,机器可连接(例如,联网)到LAN、内联网、外联网或互联网中的其他机器。机器可在客户端-服务器网络环境中作为服务器或者客户端设备来操作,或者在对等(或分布式)网络环境中作为对等机器来操作。机器可以是个人计算机(personal computer,PC)、平板PC、机顶盒(set-top box,STB)、个人数字助理(Personal Digital Assistant,PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或者任何能够执行指定该机器要采取的动作的(顺序的或其他方式的)一组指令的机器。另外,虽然只图示了单个机器,但术语“机器”也应被理解为包括单独或联合执行一组(或多组)指令以执行本文论述的一个或多个方法的机器的任何集合。页添加和内容拷贝的实现方式可在计算系统1300中实现。
计算系统1300包括处理设备1302、主存储器1304(例如,闪存、动态随机访问存储器(dynamic random access memory,DRAM)(例如同步DRAM(synchronous DRAM,SDRAM)或DRAM(RDRAM)等等)、静态存储器1306(例如,闪存、静态随机访问存储器(SRAM)等等)以及数据存储设备1316,它们经由总线1308与彼此通信。
处理设备1302表示一个或多个通用处理设备,例如微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(complex instruction set computing,CISC)微处理器、精简指令集计算机(reduced instruction set computer,RISC)微处理器、超长指令字(very long instruction word,VLIW)微处理器,或者实现其他指令集的处理器,或者实现指令集的组合的处理器。处理设备1302还可以是一个或多个专用处理设备,例如专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、数字信号处理器(digital signal processor,DSP)、网络处理器,等等。在一个实现方式中,处理设备1302可包括一个或多个处理器核心。处理设备1302被配置为执行处理逻辑1326,用于执行本文论述的操作。
在一个实现方式中,处理设备1302可以是包括公开的LLC缓存体系结构的处理器或集成电路的一部分。或者,计算系统1300可包括如本文所述的其他组件。应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按多种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取指和解码,然后是同时多线程处理,例如像
Figure BDA0002403909840000221
Hyperthreading技术中那样)。
计算系统1300还可包括通信地耦合到网络1319的网络接口设备1318。计算系统1300还可包括视频显示设备1310(例如,液晶显示器(liquid crystal display,LCD)或阴极射线管(cathode ray tube,CRT))、字母数字输入设备1312(例如,键盘)、光标控制设备1314(例如,鼠标)、信号生成设备1320(例如,扬声器)或者其他外围设备。此外,计算系统1300可包括图形处理单元1322、视频处理单元1328和音频处理单元1332。在另一实现方式中,计算系统1300可包括芯片集(未图示),这指的是被设计为与处理设备1302一起工作并且控制处理设备1302和外部设备之间的通信的一组集成电路或芯片。例如,芯片集可以是母板上的一组芯片,这些芯片将处理设备1302链接到超高速设备,例如主存储器1304和图形控制器,以及将处理设备1302链接到外设的较低速外围总线,例如USB、PCI或ISA总线。
数据存储设备1316可包括计算机可读存储介质1324,其上存储着实现本文描述的功能的任何一个或多个方法的软件1326。软件1326在其被计算系统1300执行期间也可完全或者至少部分作为指令1326存在于主存储器1304内和/或作为处理逻辑存在于处理设备1302内;主存储器1304和处理设备1302也构成计算机可读存储介质。
计算机可读存储介质1324也可用于存储利用处理设备1302的指令1326,和/或包含调用上述应用的方法的软件库。虽然计算机可读存储介质1324在示例实现方式中被示为单个介质,但术语“计算机可读存储介质”应当被理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“计算机可读存储介质”也应被理解为包括能够存储、编码或携带一组指令供机器执行并且使得机器执行公开的实现方式的任何一个或多个方法的任何介质。术语“计算机可读存储介质”应相应地被理解为包括但不限于固态存储器,以及光介质和磁介质。
以下示例属于进一步实现方式。
示例1是一种处理器,包括:处理核心,用于执行存储器分配调用来分配存储器设备中的存储器;最后分支记录(LBR)寄存器,用于存储指示最近引退的分支指令的信息;以及耦合到所述LBR寄存器的性能监视单元(PMU),所述PMU包括逻辑电路,用于:在存储器分配调用被所述处理核心接收之前从所述LBR寄存器取回所述信息;并且基于所述信息识别所述存储器分配调用的签名;并且将所述签名提供给所述处理核心。
在示例2中,如示例1所述的主题,其中所述处理核心用于执行软件,其中所述软件用于在所述存储器分配调用的执行之前利用所述签名确定存储器层级来为所述存储器分配调用分配存储器,并且其中所述签名识别在所述存储器分配调用的执行之前执行的指令的分配路径。
在示例3中,如示例1-2的任何一项所述的主题,其中所述逻辑电路包括:散列电路,用于将所述最近引退的分支指令直接散列到所述签名。
在示例4中,如示例1-3的任何一项所述的主题,其中所述签名是与分配路径相关联的标量值。
在示例5中,如示例1-4的任何一项所述的主题,其中所述签名与先前通过所述分配路径分配的存储器中的一个或多个存储器缓冲器相关联。
在示例6中,如示例1-5的任何一项所述的主题,其中响应于执行所述存储器分配调用,所述处理核心用于分配所述存储器层级中的存储器缓冲器。
在示例7中,如示例1-6的任何一项所述的主题,其中所述PMU用于:从所述存储器分配调用收集所述存储器缓冲器的地址和大小;并且收集与所述存储器缓冲器的访问相关联的数据。
各种实现方式可具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的所有可选特征也可对于本文描述的系统实现并且示例中的具体细节可用在一个或多个实现方式中的任何地方。
示例8是一种系统,包括:存储器;以及操作性地耦合到所述存储器的处理设备,所述处理设备用于:在执行存储器分配调用之前从最后分支记录(LBR)寄存器取回LBR;基于所述LBR识别所述存储器分配调用的执行情境;并且基于所述执行情境确定存储器层级来为所述存储器分配调用分配存储器。
在示例9中,如示例8所述的主题,其中从所述LBR寄存器取回的LBR包括存储在所述LBR寄存器中的LBR向量,所述LBR向量表示关于引退的分支指令的信息。
在示例10中,如示例8-9的任何一项所述的主题,其中所述处理设备用于:为了识别所述存储器分配调用的执行情境向所述LBR向量应用散列函数来识别与所述执行情境相关联的签名。
在示例11中,如示例8-10的任何一项所述的主题,其中所述执行情境包括分配路径,所述分配路径是导致所述存储器分配调用的一系列引退的分支指令。
在示例12中,如示例8-11的任何一项所述的主题,其中所述处理设备还用于:将为所述存储器分配调用生成的虚拟地址指针与所述签名一起存储在关联式数据结构中。
在示例13中,如示例8-12的任何一项所述的主题,其中所述签名是与存储器缓冲器相关联的标量值,其中所述存储器缓冲器是当先前存储器分配调用被执行时曾指派给所述签名的存储器的分配。
在示例14中,如示例8-13的任何一项所述的主题,所述处理设备还用于:响应于执行所述存储器分配调用而分配存储器缓冲器;收集所述存储器缓冲器的地址和所述存储器缓冲器的大小;并且收集与在所述存储器缓冲器的地址处对存储器的访问相关联的数据。
各种实现方式可具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的所有可选特征也可对于本文描述的系统实现并且示例中的具体细节可用在一个或多个实现方式中的任何地方。
示例15是一种方法,包括:在存储器分配调用之前从最后分支记录(LBR)寄存器的堆栈取回LBR向量;利用所述LBR向量确定唯一签名;所述签名表示所述存储器分配调用的分配路径;基于所述签名从多个存储器层级中选择存储器层级;并且在所述存储器层级中为所述存储器分配调用指派存储器缓冲器。
在示例16中,如示例15所述的主题,还包括:收集所述存储器缓冲器的大小和所述存储器缓冲器的虚拟地址;监视在所述存储器缓冲器的虚拟地址处对存储器的访问;并且基于在所述存储器缓冲器的虚拟地址处对存储器的访问,更新与所述签名相关联的信息。
在示例17中,如示例15-16的任何一项所述的主题,其中选择所述存储器层级包括:识别与所述签名相关联的访问信息;并且基于所述访问信息确定所述存储器分配的成本。
在示例18中,如示例15-17的任何一项所述的主题,还包括为与所述签名相关联的多个存储器缓冲器汇总存储器访问信息。
在示例19中,如示例15-18的任何一项所述的主题,其中选择所述存储器层级包括:确定与所述签名相关联的存储器缓冲器的访问率;并且确定分配给与所述签名相关联的存储器缓冲器的存储器的总量。
在示例20中,如示例15-19的任何一项所述的主题,还包括:基于与所述签名相关联的存储器缓冲器的访问率和分配给与所述签名相关联的存储器缓冲器的存储器的总量确定与所述签名相关联的访问密度;并且基于与所述签名相关联的所述访问密度,将所述签名分类到多个类别之一。
示例21是一种系统,包括用于执行如示例15-20的任何一项所述的方法的装置。
示例22是包括多个指令的至少一个非暂态机器可读存储介质,所述多个指令当被执行时实现如示例15-20的任何一项所述的方法或者实现如示例17-20的任何一项所述的装置。
示例23是一种装置,包括被配置为执行如示例15至-20的任何一项所述的方法的处理器。
虽然已针对有限数目的实现方式描述了本公开,但本领域技术人员将会明白从这些实现方式的许多修改和变化。希望所附权利要求覆盖落在本公开的真实精神和范围内的所有这种修改和变化。
在本文的描述中,阐述了许多具体细节,例如特定类型的处理器和系统配置、特定硬件结构、特定体系结构和微体系结构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器管线阶段和操作等等的示例,以便提供对本公开的透彻理解。然而,本领域技术人员将会清楚,实现本公开并不需要使用这些具体细节。在其他情况中,没有详细描述公知的组件或方法,例如特定的和替换的处理器体系结构、用于描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、用代码对算法的特定表述、特定断电和门控技术和逻辑以及计算机系统的其他特定操作细节,以避免不必要地模糊本公开。
实现方式是参考确定诸如计算平台或微处理器之类的特定集成电路中的基于扇区的缓存的缓存线中的数据的有效性来描述的。实现方式也可适用于其他类型的集成电路和可编程逻辑器件。例如,公开的实现方式不限于桌面计算机系统或便携计算机,例如
Figure BDA0002403909840000271
UltrabooksTM计算机。并且也可用于其他设备中,例如手持设备、平板设备、其他薄型笔记本、片上系统(SoC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(wide areanetwork,WAN)交换机或者能够执行下面教导的功能和操作的任何其他系统。描述了系统可以是任何种类的计算机或嵌入式系统。公开的实现方式尤其可用于低端设备,比如可穿戴设备(例如,手表)、电子植入物、感观和控制基础设施设备、控制器、监视控制和数据采集(supervisory control and data acquisition,SCADA)系统,等等。另外,本文描述的装置、方法和系统不限于物理计算设备,而是也可涉及针对能量节约和效率的软件优化。正如在以下描述中将变得容易清楚的,本文描述的方法、装置和系统的实现方式(无论是就硬件、固件、软件或者其组合而言)对于与性能考虑平衡的“绿色技术”未来是至关重要的。
虽然这里的实现方式是参考处理器来描述的,但其他实现方式适用于其他类型的集成电路和逻辑设备。本公开的实现方式的类似技术和教导可被应用到可受益于更高管线吞吐量和改善的性能的其他类型的电路或半导体器件。本公开的实现方式的教导适用于执行数据操纵的任何处理器或机器。然而,本公开不限于执行512比特、256比特、128比特、64比特、32比特或16比特数据操作的处理器或机器,而是可被应用到其中执行数据的操纵或管理的任何处理器和机器。此外,这里的描述提供了示例,并且附图为了说明示出了各种示例。然而,这些示例不应当被从限制意义上来解释,因为它们只是想要提供本公开的实现方式的示例,而不是提供本公开的实现方式的所有可能实现方式的详尽列表。
虽然上述示例描述了执行单元和逻辑电路的情境中的指令处理和分发,但本公开的其他实现方式可通过存储在机器可读的有形介质上的数据或指令来实现,该数据或指令当被机器执行时使得该机器执行符合本公开的至少一个实现方式的功能。在一个实现方式中,与本公开的实现方式相关联的功能体现在机器可执行指令中。指令可用于使得编程有这些指令的通用或专用处理器执行本公开的步骤。本公开的实现方式可被提供为计算机程序产品或者软件,该计算机程序产品或者软件可包括其上存储有指令的机器或计算机可读介质,这些指令可用于对计算机(或其他电子设备)编程来执行根据本公开的实现方式的一个或多个操作。或者,本公开的实现方式的操作可由包含用于执行这些操作的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合来执行。
用于将逻辑编程为执行本公开的实现方式的指令可被存储在系统中的存储器内,例如DRAM、缓存、闪存或者其他存储装置。此外,指令可经由网络或借由其他计算机可读介质来分发。从而,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制——但不限于——软盘,光盘,致密盘只读存储器(Compact Disc,Read-OnlyMemory,CD-ROM),以及磁光盘,只读存储器(Read-Only Memory,ROM),随机访问存储器(Random Access Memory,RAM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM),磁卡或光卡,闪存,或者在经由电的、光的、声的或者其他形式的传播信号(例如,载波、红外信号、数字信号等等)通过互联网传输信息时使用的有形机器可读存储装置。因此,计算机可读介质包括适用于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有型机器可读介质。
设计可经过各种阶段,从创建到仿真再到制造。表示设计的数据可通过若干种方式来表示该设计。首先,正如在仿真中有用的,可利用硬件描述语言或者另外的功能性描述语言来表示硬件。此外,在设计过程的一些阶段可产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段达到表示各种设备在硬件模型中的物理放置的数据的级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是为用于生产集成电路的掩模指定各种特征在不同掩模层上的存在与否的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者诸如盘之类的磁存储装置或光存储装置可以是机器可读介质,用来存储经由光波或电波传输的信息,该光波或电波被调制或以其他方式生成来传输这种信息。当传输指示或携带代码或设计的电载波时,就执行电信号的拷贝、缓冲或重传而言,做出新的拷贝。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时地存储物品,例如被编码到载波中的信息,其体现本公开的实现方式的技术。
本文使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,例如微控制器,其与非暂态介质相关联来存储适合于被微控制器执行的代码。因此,在一个实现方式中提及模块指的是硬件,其被特别配置为识别和/或执行要被保存在非暂态介质上的代码。此外,在另一实现方式中,对模块的使用指的是包括代码的非暂态介质,该代码特别适合于被微控制器执行来执行预定的操作。正如可以推断出的,在另外一个实现方式中,术语模块(在此示例中)可以指微控制器和非暂态介质的组合。通常,被图示为分开的模块边界一般是变化的并且可能重叠。例如,第一和第二模块可共享硬件、软件、固件或者其组合,而可能保留一些独立的硬件、软件或固件。在一个实现方式中,对术语逻辑的使用包括硬件,例如晶体管、寄存器或其他硬件,例如可编程逻辑器件。
对短语“被配置为”的使用在一个实现方式中指的是布置、装配、制造、许诺销售、进口和/或设计装置、硬件、逻辑或元素来执行指定或确定的任务。在此示例中,未在操作的装置或其元素仍“被配置为”执行指定的任务,如果它被设计、耦合和/或互连来执行所述指定任务的话。作为纯说明性示例,逻辑门在操作期间可提供0或1。但“被配置为”向时钟提供使能信号的逻辑门不包括可提供1或0的每一个可能逻辑门。反而,逻辑门是以在操作期间输出的1或0会使能时钟的某种方式耦合的那种。再次注意对术语“被配置为”的使用不要求操作,而是聚焦于装置、硬件和/或元件的潜在状态,其中在潜在状态中,装置、硬件和/或元件被设计为当该装置、硬件和/或元件在操作时执行特定的任务。
此外,在一个实现方式中对短语“用来”、“能够”和/或“可操作来”的使用指的是以使能以指定方式使用装置、逻辑、硬件和/或元件的方式设计的某种装置、逻辑、硬件和/或元件。与上文一样要注意在一个实现方式中对“用来”、“能够”或者“可操作来”的使用指的是装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件未在操作,但被以使能以指定方式使用装置的方式来设计。
本文使用的值包括数字、状态、逻辑状态或者二元逻辑状态的任何已知表示。通常,对逻辑电平、逻辑值或逻辑的值的使用也被称为1和0,这简单地就是表示二元逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实现方式中,存储单元,例如晶体管或闪存单元,可能够保存单个逻辑值或多个逻辑值。然而,使用了计算机系统中的值的其他表示。例如,十进制数字十也可被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
另外,状态可由值或值的部分来表示。作为示例,第一值,例如逻辑一,可表示默认或初始状态,而第二值,例如逻辑零,可表示非默认状态。此外,术语重置和设置在一个实现方式中分别指的是默认的和更新后的值或状态。例如,默认值可能包括高逻辑值,即重置,而更新后的值可能包括低逻辑值,即,设置。注意值的任何组合可被利用来表示任何数目的状态。
上文记载的方法、硬件、软件、固件或代码的实现方式可经由存储在机器可访问、机器可读、计算机可访问或者计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂态机器可访问/可读介质包括以机器(例如计算机或电子系统)可读的形式提供(即,存储和/或传输)信息的任何机制。例如,非暂态机器可访问介质包括随机访问存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁存储介质或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,它们要与可从其接收信息的非暂态介质相区分。
用于将逻辑编程为执行本公开的实现方式的指令可被存储在系统中的存储器内,例如DRAM、缓存、闪存或者其他存储装置。此外,指令可经由网络或借由其他计算机可读介质来分发。从而,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制——但不限于——软盘,光盘,致密盘只读存储器(Compact Disc,Read-OnlyMemory,CD-ROM),以及磁光盘,只读存储器(Read-Only Memory,ROM),随机访问存储器(Random Access Memory,RAM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM),磁卡或光卡,闪存,或者在经由电的、光的、声的或者其他形式的传播信号(例如,载波、红外信号、数字信号等等)通过互联网传输信息时使用的有形机器可读存储装置。因此,计算机可读介质包括适用于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有型机器可读介质。
本说明书中各处提及“一个实现方式”或者“一实现方式”的意思是联系该实现方式描述的特定特征、结构或特性被包括在本公开的至少一个实现方式中。从而,短语“在一个实现方式中”或者“在一实现方式中”在本说明书各处的出现不一定全都指的同一实现方式。此外,特定的特征、结构或特性在一个或多个实现方式中可按任何适当的方式被组合。
在前述说明书中,参考特定示范性实现方式给出了详细描述。然而,很明显,在不脱离如所附权利要求所记载的本公开的更宽精神和范围的情况下,可对其进行各种修改和改变。因此应从说明意义而不是限制意义上来看待说明书和附图。此外,前述对实现方式和其他示范性语言的使用不一定指的是同一实现方式或同一示例,而是可以指不同的和有区别的实现方式,以及可能相同的实现方式。
详细描述的一些部分是按计算机存储器内的数据比特上的操作的算法和符号表示来呈现的。这些算法描述和表示是被数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域其他技术人员的手段。算法在这里并且一般而言被设想为是通向期望结果的操作的自洽序列。这些操作是要求对物理量的物理操纵的那些。通常(但并非一定),这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。已证明有时,主要是出于习惯用法的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等等,是方便的。本文描述的块可以是硬件、软件、固件或者其组合。
然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联并且只是应用到这些量的方便标签。除非从以上论述清楚看出另有具体声明,否则要明白在整个说明书各处,利用诸如“定义”、“接收”、“确定”、“发出”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”之类的术语的论述指的是将计算系统的寄存器和存储器内的被表示为物理(例如,电子)量的数据操纵和变换成计算系统存储器或寄存器或其他这种信息存储、传输或显示设备内的被类似地表示为物理量的其他数据的计算系统或类似的电子计算设备的动作和过程。
词语“示例”或“示范性”在本文中用来意指充当示例、实例或例示。本文描述为“示例”或“示范性”的任何方面或设计并不一定要被解释为比其他方面或设计更优选或有利。更确切地说,对词语“示例”或“示范性”的使用意图以具体方式给出概念。就本申请中使用的而言,术语“或”意图指包含性的“或”,而不是排他性的“或”。也就是说,除非另有指明,或者从上下文清楚可见,否则“X包括A或B”意图指任何自然包含性置换。也就是说,如果X包括A;X包括B;或者X包括A和B两者,则在任何前述情况下都满足“X包括A或B”。此外,本申请和所附权利要求中使用的冠词“一”一般应当被解释为指“一个或多个”,指非另有指明或者从上下文清楚可见针对的是单数形式。另外,各处对术语“一实现方式”或“一个实现方式”或者“一实现方式”或“一个实现方式”的使用并不打算意指同一实现方式或实现方式,除非是这样描述的。另外,本文使用的术语“第一”、“第二”、“第三”、“第四”等等打算用作标签来区分不同元素,并且可不一定具有根据其数字番号的序数含义。

Claims (22)

1.一种处理器,包括:
处理核心,用于执行存储器分配调用来分配存储器设备中的存储器;
最后分支记录(LBR)寄存器,用于存储指示最近引退的分支指令的信息;以及
耦合到所述LBR寄存器的性能监视单元(PMU),所述PMU包括逻辑电路,用于:
在存储器分配调用被所述处理核心接收之前,从所述LBR寄存器取回所述信息;并且
基于所述信息识别所述存储器分配调用的签名;并且
将所述签名提供给所述处理核心。
2.如权利要求1所述的处理器,其中所述处理核心用于执行软件,其中所述软件用于在所述存储器分配调用的执行之前,利用所述签名确定存储器层级来为所述存储器分配调用分配存储器,并且其中所述签名识别在所述存储器分配调用的执行之前执行的指令的分配路径。
3.如权利要求1-2中任一项所述的处理器,其中所述逻辑电路包括:
散列电路,用于将所述最近引退的分支指令直接散列到所述签名。
4.如权利要求3所述的处理器,其中所述签名是与分配路径相关联的标量值。
5.如权利要求4所述的处理器,其中所述签名与先前通过所述分配路径分配的存储器中的一个或多个存储器缓冲器相关联。
6.如权利要求2所述的处理器,其中响应于执行所述存储器分配调用,所述处理核心用于分配所述存储器层级中的存储器缓冲器。
7.如权利要求6所述的处理器,其中所述PMU用于:
从所述存储器分配调用收集所述存储器缓冲器的地址和大小;并且
收集与所述存储器缓冲器的访问相关联的数据。
8.一种系统,包括:
存储器;以及
操作性地耦合到所述存储器的处理设备,所述处理设备用于:
在执行存储器分配调用之前从最后分支记录(LBR)寄存器取回LBR;
基于所述LBR识别所述存储器分配调用的执行情境;并且
基于所述执行情境确定存储器层级来为所述存储器分配调用分配存储器。
9.如权利要求8所述的系统,其中从所述LBR寄存器取回的LBR包括存储在所述LBR寄存器中的LBR向量,所述LBR向量表示关于引退的分支指令的信息。
10.如权利要求9所述的系统,其中所述处理设备用于:为了识别所述存储器分配调用的执行情境,向所述LBR向量应用散列函数来识别与所述执行情境相关联的签名。
11.如权利要求10所述的系统,其中所述处理设备还用于:将为所述存储器分配调用生成的虚拟地址指针与所述签名一起存储在关联式数据结构中。
12.如权利要求10所述的系统,其中所述签名是与存储器缓冲器相关联的标量值,其中所述存储器缓冲器是当先前存储器分配调用被执行时曾指派给所述签名的存储器的分配。
13.如权利要求8-12中任一项所述的系统,其中所述执行情境包括分配路径,所述分配路径是导致所述存储器分配调用的一系列引退的分支指令。
14.如权利要求8-12中任一项所述的系统,所述处理设备还用于:
响应于执行所述存储器分配调用而分配存储器缓冲器;
收集所述存储器缓冲器的地址和所述存储器缓冲器的大小;并且
收集与在所述存储器缓冲器的地址处对存储器的访问相关联的数据。
15.一种方法,包括:
在存储器分配调用之前从最后分支记录(LBR)寄存器的堆栈取回LBR向量;
利用所述LBR向量确定唯一签名,所述签名表示所述存储器分配调用的分配路径;
基于所述签名从多个存储器层级中选择存储器层级;并且
在所述存储器层级中为所述存储器分配调用指派存储器缓冲器。
16.如权利要求15所述的方法,还包括:
收集所述存储器缓冲器的大小和所述存储器缓冲器的虚拟地址;
监视在所述存储器缓冲器的虚拟地址处对存储器的访问;并且
基于在所述存储器缓冲器的虚拟地址处对存储器的访问,更新与所述签名相关联的信息。
17.如权利要求15所述的方法,其中选择所述存储器层级包括:
识别与所述签名相关联的访问信息;并且
基于所述访问信息确定所述存储器缓冲器的成本。
18.如权利要求17所述的方法,还包括:为与所述签名相关联的多个存储器缓冲器汇总存储器访问信息。
19.如权利要求15所述的方法,其中选择所述存储器层级包括:
确定与所述签名相关联的存储器缓冲器的访问率;并且
确定分配给与所述签名相关联的存储器缓冲器的存储器的总量。
20.如权利要求19所述的方法,还包括:
基于与所述签名相关联的存储器缓冲器的访问率和分配给与所述签名相关联的存储器缓冲器的存储器的总量,确定与所述签名相关联的访问密度;并且
基于与所述签名相关联的所述访问密度,将所述签名分类到多个类别之一。
21.一种装置,包括用于执行如权利要求15-20中任一项所述的方法的装置。
22.一种装置,包括:被配置为执行如权利要求15-20中任一项所述的方法的处理器。
CN202010155625.0A 2019-03-29 2020-03-09 异构存储器中的性能管理单元(pmu)辅助层级选择 Pending CN111752610A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/370,543 US20200310957A1 (en) 2019-03-29 2019-03-29 Performance management unit (pmu) aided tier selection in heterogeneous memory
US16/370,543 2019-03-29

Publications (1)

Publication Number Publication Date
CN111752610A true CN111752610A (zh) 2020-10-09

Family

ID=69185512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010155625.0A Pending CN111752610A (zh) 2019-03-29 2020-03-09 异构存储器中的性能管理单元(pmu)辅助层级选择

Country Status (4)

Country Link
US (1) US20200310957A1 (zh)
EP (1) EP3716064A1 (zh)
CN (1) CN111752610A (zh)
DE (1) DE202020005503U1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734071B2 (en) 2021-09-01 2023-08-22 Micron Technology, Inc. Memory sub-system tier allocation

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582275B2 (en) * 2011-05-31 2017-02-28 Intel Corporation Method and apparatus for obtaining a call stack to an event of interest and analyzing the same
US10481817B2 (en) * 2018-06-28 2019-11-19 Intel Corporation Methods and apparatus to optimize dynamic memory assignments in multi-tiered memory systems

Also Published As

Publication number Publication date
US20200310957A1 (en) 2020-10-01
DE202020005503U1 (de) 2021-06-30
EP3716064A1 (en) 2020-09-30

Similar Documents

Publication Publication Date Title
US10635593B2 (en) Create page locality in cache controller cache allocation
US10176099B2 (en) Using data pattern to mark cache lines as invalid
US10095573B2 (en) Byte level granularity buffer overflow detection for memory corruption detection architectures
US10901899B2 (en) Reducing conflicts in direct mapped caches
US11055232B2 (en) Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS
US11093414B2 (en) Measuring per-node bandwidth within non-uniform memory access (NUMA) systems
US10169245B2 (en) Latency by persisting data relationships in relation to corresponding data in persistent memory
US10635447B2 (en) Scatter reduction instruction
US10409613B2 (en) Processing devices to perform a key value lookup instruction
US10489297B2 (en) Prefetching time allocation
CN107278295B (zh) 用于存储器损坏检测架构的字节水平粒度的缓冲器上溢检测
US20200202012A1 (en) Write-back invalidate by key identifier
EP3716064A1 (en) Performance management unit aided tier selection in heterogeneous memory
US20170185413A1 (en) Processing devices to perform a conjugate permute instruction
US10303605B2 (en) Increasing invalid to modified protocol occurrences in a computing system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination