CN110419030A - 测量非均匀存储器访问(numa)系统内按节点的带宽 - Google Patents

测量非均匀存储器访问(numa)系统内按节点的带宽 Download PDF

Info

Publication number
CN110419030A
CN110419030A CN201680088857.0A CN201680088857A CN110419030A CN 110419030 A CN110419030 A CN 110419030A CN 201680088857 A CN201680088857 A CN 201680088857A CN 110419030 A CN110419030 A CN 110419030A
Authority
CN
China
Prior art keywords
node
memory
counter
rmid
subsets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680088857.0A
Other languages
English (en)
Other versions
CN110419030B (zh
Inventor
金垚
A.拉吉
A.E.G.卢克
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 CN110419030A publication Critical patent/CN110419030A/zh
Application granted granted Critical
Publication of CN110419030B publication Critical patent/CN110419030B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • 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/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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
    • G06F11/3419Recording 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 by assessing time
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

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

Abstract

一种计算系统包括多个节点,所述多个节点包括第一节点,所述第一节点包括至少一个核、存储器控制器、节点追踪寄存器(MSR)、以及包括多个计数器的监控计数器阵列。所述存储器控制器将访问节点追踪MSR的多个位,以确定将被追踪的节点子集,其中所述节点子集包括第一节点和第二节点。所述存储器控制器此外将分配所述多个计数器中的第一计数器以追踪由第一节点发送到本地系统存储器的存储器请求;以及分配所述多个计数器中的第二计数器以追踪与由第一节点发送到第二节点的存储器请求相关联的存储器响应。

Description

测量非均匀存储器访问(NUMA)系统内按节点的带宽
本公开内容涉及存储器管理的领域,并且具体地涉及NUMA系统内按节点的带宽的测量。
背景技术
计算系统、诸如服务器越来越多地是基于NUMA的,其意味着处理节点可以跨多个节点以非均匀的方式向存储器分配,其中每个节点包括(多个)处理核、高速缓存子系统和存储器。
附图说明
图1A是根据本公开内容的实施例的非均匀存储器访问(NUMA)系统的框图。
图1B是根据本公开内容的实施例的、图1A的NUMA系统中的所述多个节点中的一节点的框图。
图2是根据本公开内容的实施例的节点追踪、模型特定的寄存器(MSR)的框图表示。
图3是根据本公开内容的实施例的事件选择MSR的框图表示。
图4是根据本公开内容的实施例的在按节点的基础上监控存储器带宽的方法的流程图。
图5是根据本公开内容的实施例的在按节点的基础上监控存储器带宽的方法的流程图。
图6A是一框图,其图示了根据一个实施例的有序流水线以及寄存器重命名级、无序发布/执行流水线。
图6B是一框图,其图示了提供在按节点的基础上对存储器带宽的测量能力的处理器的微架构。
图7图示了用于如下处理器的微架构的框图:所述处理器包括用于提供在按节点的基础上对存储器带宽的测量能力的逻辑电路。
图8是根据一个实现方式的计算机系统的框图。
图9是根据另一实现方式的计算机系统的框图。
图10是根据一个实现方式的芯片上系统的框图。
图11图示了针对计算系统的框图的另一实现方式。
图12图示了针对计算系统的框图的另一实现方式。
具体实施方式
非均匀存储器访问(NUMA)是在多处理中所使用的计算机存储器设计,其中所述存储器访问时间取决于相对于处理器的存储器位置,所述处理器在本文中被称为节点。在NUMA下,与非本地存储器(对于另一节点而言在本地的存储器或在节点之间共享的存储器)相比,节点可以更快地访问其自己的本地存储器。NUMA的益处可以相关联于特定的工作负载、例如服务器(其采用NUMA)上的工作负载,其中数据通常强相关联于某些任务或用户。在该情况中,线程可以在一个或多个节点上被执行并且共享存储器(其位于对于每个节点而言在本地)以加速执行。
因此,作为基于NUMA的存储器分配的部分,节点可以在某个点处开始以与向本地存储器相比向远程存储器分配更多,从而导致拙劣的数据本地性。向存储器分配是要决定将在哪里存储(或高速缓存)数据。“数据本地性”在本文中是指空间本地性,例如节点正向其分配数据的存储器位于距节点多近。由于针对节点访问远程存储器(例如另一节点的存储器)的等待时间是访问本地存储器(例如节点的存储器)的等待时间的三至六倍,所以拙劣的数据本地性可显著影响计算系统性能。
在一个实施例中,在基于NUMA的系统的顶部上运行的系统软件可获得针对节点的多个远程存储器访问(RMA)以及多个本地存储器访问(LMA)。RMA的数目对应于对远程节点的存储器访问(例如总存储器访问减去LMA)。以下详细描述得到总存储器访问。LMA的数目是对节点的本地存储器的存储器访问的数目。RMA对LMA的高比率可以指示:与当RMA对LMA的比率是相对较低的比率的时候相比,线程具有更坏的数据本地性。然而,在没有对按节点的RMA的认知的情况下,系统软件不知道对于执行线程以改善该线程的数据本地性而言在哪个节点处更好。
除了RMA对LMA的该比率之外,存储器带宽是可以用于测量数据本地性的另一度量。存储器带宽是高速缓存利用的度量,诸如作为在用于线程的存储器的两个分层次层级之间、例如在末级高速缓存(LLC)与系统存储器之间的存储器访问的结果的高速缓存未命中的度量。例如,节点可以追踪LLC处的高速缓存未命中,作为由于高速缓存未命中有多少数据从系统存储器被读取到LLC中的度量。在一个实施例中,节点可以将这些高速缓存未命中相互关联到特定节点以确定按节点的存储器带宽。
根据本公开内容的一个实施例,所公开的基于NUMA的系统可以促进系统软件获得按节点的存储器带宽。通过使用按节点的存储器带宽,系统软件可以选择将在一个节点上执行的线程移位到具有更佳数据本地性的另一节点。
更具体地,在一个实施例中,基于NUMA的系统可以包括多个节点。这些节点中的一个可以包括被耦合到至少一个处理核的LLC、存储器控制器、节点追踪模型特定的寄存器(MSR)、以及包括多个计数器的监控计数器阵列。执行系统软件(诸如操作系统)的节点可以设置节点追踪MSR内的多个位,所述多个位指示将针对存储器带宽被追踪的所述多个节点的节点子集。所述节点子集可以包括所述节点。存储器控制器然后可以访问节点追踪MSR的所述多个位,并且基于所述多个位而向所述多个计数器指派与节点子集中的相应节点的存储器请求相关联的存储器响应的追踪。存储器响应的追踪可以例如追踪LLC处的高速缓存未命中,其在按节点的基础上,作为目标朝向节点子集的存储器请求的结果。在可替换的实施例中,存储器控制器可以追踪存储器控制器处的硬件事件,其指示高速缓存利用。
在一个实施例中,节点的存储器控制器还可以利用资源监控标识符(RMID)来标记存储器请求。向每个核指派与核正执行的线程相关联的RMID,并且单个RMID在任何给定时间都是活动的。存储器控制器还已经知道存储器响应的节点ID,因为它是处理核的静态信息。以此方式,当在节点处存储器请求未命中LLC的时候,该节点的存储器控制器可以确定与高速缓存未命中相关联的节点ID和RMID,并且更新所述多个计数器内、与高速缓存未命中的节点ID与RMID相对应的计数器。RMID和节点ID对应于存储器请求被发送到的节点。随着时间,被指派到子集节点中的特定节点的每个计数器追踪与RMID相关联的高速缓存未命中的按节点的计数。针对每个节点的计数器值可以乘以预定的比例因子以确定按节点的存储器带宽。如果节点子集中的第二节点的存储器带宽是高于节点的存储器带宽的阈值量,则系统软件可以将线程执行从节点迁移到第二节点。更高的阈值量可以例如是节点的存储器带宽的两倍或三倍,或者某个其它预定的比率。
在一个实施例中,为了便于检索计数器值,系统软件可以设置节点的事件选择MSR内的多个位。例如,系统软件可以设置事件标识符部分的位以指定节点带宽作为事件ID,设置节点标识符部分的位以指定节点ID,并且设置RMID部分的位以指定RMID。存储器控制器可以访问事件选择MSR以标识针对所期望的计数器的RMID和节点ID,并且在第一节点的计数器MSR中存储来自与节点ID和RMID相对应的监控计数器阵列的计数器值。计数器MSR对于系统软件而言可访问,所述系统软件可检索计数器值。设置事件选择MSR的位以及检索对应的计数器值可以针对每个节点被连续且迭代地执行,直到针对节点子集的计数器值被检索为止。计数器值然后可以用于确定按节点的存储器带宽,以用于确定在数据本地性方面对于执行线程而言哪个节点是最佳的。
图1A是根据本公开内容的实施例的非均匀存储器访问(NUMA)系统100的框图。系统100可以包括多个节点102A……102H。尽管示出了八个节点,但是系统100可以包括比八个更少或更多的节点。每个节点还可以包括一个或多个处理核以及本地存储器。因此,第一节点102A可以包括(多个)核106A以及本地系统存储器110A,第二节点102B可以包括(多个)核106B以及本地系统存储器110B,第三节点102C可以包括(多个)核106C以及本地系统存储器110C,第四节点102D可以包括(多个)核106D以及本地系统存储器110D,第五节点102E可以包括(多个)核106E以及本地系统存储器110E,第六节点102F可以包括(多个)核106F以及本地系统存储器110F,第七节点102G可以包括(多个)核106G以及本地系统存储器110G,并且第八节点102H可以包括(多个)核106H以及本地系统存储器110H。所述多个节点可以与互连、诸如与点对点处理器互连105、例如QuickPath Interconnect(快速路径互连)(QPITM)或UltraPath Interconnect(超路径互连)(UPITM)等等相互连。
图1B是根据本公开内容的实施例的、图1A的NUMA系统中的所述多个节点中的一节点102的框图。在一个示例中,节点102A……102H中的一个或多个——其中的任一个可以是图1B的节点102——可以执行软件101、诸如操作系统、用于控制一个或多个虚拟机的虚拟机监控器(VMM)、或其它软件。节点102例如可以包括一个或多个核106A1、106A2、106A3和106A4,以及高速缓存子系统108,所述高速缓存子系统108至少包括末级高速缓存(LLC)112和存储器控制器118。LLC 112可以是高速缓存的分层次集合内的末级高速缓存,所述高速缓存的分层次集合还包括一级高速缓存、二级高速缓存等等。
LLC 112可以对存储器响应的条目进行高速缓存,所述存储器响应接收自本地系统存储器110或通过点对点处理器互连105接收自其它节点。除了被组织成多路集合的高速缓存行之外,LLC 112可以包括监控计数器阵列114,所述监控计数器阵列114包括多个监控计数器115A、115B、115C、115D……115N(其在下文中被称为“计数器”)。在可替换的实施例中,监控计数器阵列114被存储作为高速缓存子系统108的部分,但是在LLC(没有被示出)外部。表1图示了监控计数器阵列114的示例,其中存储器带宽按RMID(第一列)被追踪,并且其余的列表示按RMID的针对以下各项的计数器:局部存储器带宽(LOCAL_BW)、总存储器带宽(TOTAL_BW)以及针对任何四个节点(节点#)的存储器带宽。(注意到,为了简单,图1B中所图示的监控计数器阵列114反映针对一个RMID的计数器的单个群组,尽管还可以包括针对附加RMID的计数器的附加群组)。在一个实施例中,除了追踪局部带宽(针对节点102)以及总带宽(针对节点102A……102H)的计数器之外,监控计数器阵列114包括针对某个数目的特定节点的计数器。为了简单,表1中所图示的是四个计数器,所述四个计数器可以被分配以追踪对被发送到四个特定节点的存储器请求的存储器响应,但是更少或更多的节点可以被追踪,其取决于在监控计数器阵列114内可用的计数器的分配。
表1。
节点102可以此外包括多个模型特定的寄存器(MSR),其用于执行计数器的分配,标记存储器请求,追踪对于那些请求的存储器响应,并且获取将在确定存储器带宽中被使用的计数器值。例如,节点102可以包括节点追踪MSR 120、事件选择MSR 122、计数器MSR126以及按逻辑的处理器(PQR)MSR 130。
更具体地,在一个实施例中,节点追踪MSR 120可以包括多个位,其对应于系统100内的节点的最大数目。尽管系统可不包括64个节点,但是图2图示了其中存在64位的节点追踪MSR 120的实施例。节点追踪MSR的每个位可以引用特定节点。在一些实施例中,监控计数器阵列114中的计数器不覆盖所有节点。例如,考虑到图1的包括八个节点的NUMA系统100,仅可存在四个计数器(如表1中所示),利用所述计数器,节点102可追踪存储器响应。因此,系统软件101可以设置节点追踪MSR 120内的所述多个位的子集,以指示哪些节点将通过使用计数器被追踪。
存储器控制器118然后可以向相应的计数器分配对由节点追踪MSR 120的所述多个位所表示的节点的子集的追踪。在高速缓存子系统108(通过使用相应的计数器)追踪了与节点子集的存储器请求相关联的存储器响应之后,系统软件101可以从所分配的计数器获得计数器值。系统软件然后可以使用计数器值来计算针对节点子集的按节点的带宽。为了继续监控附加的节点,系统软件101可以改变节点追踪MSR 120内设置的所述多个位,以对应于与第一节点子集不同的第二节点子集。存储器控制器118然后可以重分配所述多个计数器以追踪与第二节点子集相关联的存储器响应。
另外参考图4,其图示了根据实施例的在按节点的基础上监控存储器带宽的方法400的流程图,一个或多个节点可以在向新应用的上下文切换(404)之后执行资源关联。资源关联是标识符(ID)与资源的关联,所述资源诸如处理核,其例如在线程的上下文中。上下文切换是当核从执行一个线程切换到执行另一线程的时候。为了执行资源关联,系统软件101可以将资源监控标识符(RMID)指派到一核,该核当前在执行应用的线程(408)。系统软件101可以将RMID存储在PQR MSR 130中(412),所以存储器控制器118当发布存储器请求的时候可以访问RMID,如将讨论的,从而导致代表高速缓存子系统108来标识线程(414)。PQRMSR 130强制:在某时针对任何给定的核有一个RMID是活动的。在随后的上下文切换时,软件可以更新PQR MSR 130,其改变针对核的活动RMID以标识当前被执行的线程。
在一个实施例中,存储器控制器118还可以从正执行应用的核接收存储器请求,所述应用包括特定线程(416)。存储器控制器118可以利用针对特定线程的当前RMID(来自PQRMSR 412)来标记存储器请求(420)。RMID值可以连同存储器请求中的地址一起被运载,作为多个额外的位。存储器控制器118知道被追踪的节点为已经分配了监控计数器阵列114的计数器(例如用以追踪在节点追踪MSR 120内所标识的节点),从而导致包含RMID和节点ID二者的存储器请求(424)。
在一个实施例中,对存储器请求的该标记导致保留RMID并且保留节点ID(其是对于核的静态信息)的存储器响应(诸如高速缓存未命中)内的数据,利用所述RMID已经标记了存储器请求。例如,存储器响应可以从请求中取得RMID,并且存储器控制器118可以添加在其上服务存储器请求的节点ID。存储器控制器118然后可以在接收到存储器响应时确定存储器响应的数据内的RMID和节点ID,并且使被分配以追踪该特定RMID和节点ID的监控计数器阵列114中的计数器递增。在一些情况中,高速缓存子系统108可仅仅检测存储器响应数据中的RMID(并且不是节点ID),因为高速缓存未命中可能是针对被发送到未被追踪的节点的存储器请求。在该情况中,针对总带宽的计数器可仍递增,以及针对局部带宽的计数器,其如果可适用的话,例如当存储器响应是针对被发布到节点102(本地节点)的请求的时候。
在一个实施例中,如所讨论的,系统软件101可以从针对线程的存储器请求可指向的节点请求监控存储器响应(诸如高速缓存未命中)(428)。因此,系统软件可以通过如下来这样做:设置节点追踪MSR 120内的多个位,以指示哪些节点将利用监控计数器阵列的计数器被追踪。在一个实施例中,这可以通过如下来被执行:设置位图(bit-map)的位,其可以映射到节点追踪MSR 120的位上并且启用所述节点追踪MSR 120的位。
在一段时间过去使得监控计数器阵列114中的计数器的计数器值有时间递增之后,系统软件101可以采用事件选择MSR 122来向高速缓存子系统108标识将被读取的计数器值。为了这样做,系统软件101可以设置事件选择MSR 122(其在图3中被详细示出)内的多个位。例如,系统软件101可以设置事件ID字段310的位以将节点带宽指示为所请求的监控数据的类型(432)。系统软件101还可以设置RMID字段330的位,使得存储器控制器知道要访问计数器的哪个阵列,并且还可以设置与如下节点对应的节点ID字段320的位:所述节点已经被追踪,并且针对所述节点将读取按节点的计数器值(434)。在其中仅仅请求按RMID的情况中,系统软件清除节点ID字段的位。
一旦系统软件110设置了针对这些字段的位,系统软件就可以将事件请求发送到高速缓存子系统108,使得存储器控制器118知道要读取哪个计数器(440)。存储器控制器118可以可替换地或附加地请求事件选择MSR 122,以标识与要读取的计数器相关联的RMID和节点ID。存储器控制器118然后可以读取监控计数器阵列内与RMID和节点ID对应的计数器值,并且将计数器值存储在计数器MSR 126中(450)。系统软件101可以从计数器MSR 126检索计数器值(454),基于所述计数器值来计算带宽值,并且存储与该计数器值相关联的针对节点的带宽值以用于与总带宽或与子集节点中其它节点的带宽相比较,如将更详细地解释的。步骤432、434、440和450可以被连续且迭代地执行以检索针对节点子集中每个节点的计数器值,通过设置节点追踪MSR 120中的位而请求针对所述节点子集的监控。
图5是根据本公开内容的实施例的在按节点的基础上监控存储器带宽的方法500的流程图。方法500可以由系统执行,所述系统可以包括硬件(例如电路、专用逻辑和/或可编程逻辑)、软件(例如在计算机系统上可执行以履行硬件模拟的指令)或其组合。在说明性示例中,方法800可以由图1A的节点102A……102H中的任一个或组合或者图1B的节点102来执行。特别地,这些节点中的一个或多个可以执行系统软件101以履行方法500。
参考图5,方法800可以开始于其中系统软件101设置第一节点(例如节点102)的节点追踪MSR 120中的第一位处,所述第一位指示将在通过高速缓存子系统108的带宽监控方面被追踪的节点子集(510)。所述节点子集可以包括第一节点。方法500可以在一等待时段之后如下继续,在所述等待时段期间计数器值在监控计数器阵列114内增加:系统软件确定是否存在留待报告的节点子集中的任何节点(例如为其从高速缓存子系统108中获得计数器值)(515)。
假定仍存在待从高速缓存子系统中获得的针对节点子集中节点的计数器值,所述方法500继续,所述系统软件设置事件选择MSR 122内的位来指示:(a)作为事件的节点带宽;(b)针对线程的RMID;以及(b)与节点子集中的下一节点对应的节点ID,为所述下一节点,高速缓存子系统108应当检索计数器值(520)。方法800可以继续,系统软件从计数器MSR126中检索计数器值,其对应于针对该下一节点的RMID和节点ID(530)。系统软件可以迭代地为节点子集执行步骤520和530直到对于框515的查询的应答是“否”为止。
方法500可以继续,系统软件基于计数器值来确定节点子集的按节点的存储器带宽(540)。例如,系统软件可以将计数器值乘以定标器(scaler)以计算针对节点的带宽值。系统软件还可以获得针对节点102A……102H的总存储器带宽,如先前所讨论的,其通过不指定节点ID,而同时仍供应事件选择MSR 122内的RMID。方法500可以继续,系统软件确定总存储器带宽(其针对例如节点102A……102H)是否高于针对节点子集中任何节点的带宽(550)。总带宽可以显著更高,其中例如总带宽在比任何按节点的带宽更高(诸如2x、3x、3.5x、4x等等)的阈值量之上。如果对于框550的查询的应答为“是”,那么可能不存在关于线程的值得解析的数据本地性问题,并且方法500可以继续,系统软件设置节点追踪MSR 120的第一位,其指示将被追踪的节点的不同子集(580)。方法500然后可以在一段时间之后循环回到框515,以获得针对不同节点子集的计数器值。
如果对框550的查询的应答为“否”,则方法500可以继续,确定节点子集(例如将被追踪的节点的最后的子集)中的第二节点的存储器带宽是否在比第一节点的阈值量更高的第二阈值量之上(560)。该更高的阈值量可以例如是第一节点的存储器带宽的两倍、三倍、或四倍(或某个其它比率)。如果对框560的查询的应答为“是”,则系统软件可以将在第一节点上执行的线程迁移到第二节点,以因而改善针对线程的数据本地性。如果对框560的查询的应答为“否”,则方法可以再次重新开始。
图6A是一框图,其图示了用于检测并且避免总线锁定状况的处理器600的微架构。特别地,处理器600描绘了根据本公开内容的至少一个实施例的将被包括在处理器中的有序架构核以及寄存器重命名逻辑、无序发布/执行逻辑。用于检测并且避免总线锁定状况的实施例可以被实现在处理器600中。
处理器600包括前端单元630,所述前端单元630耦合到执行引擎单元650,并且所述前端单元630和执行引擎单元650二者耦合到存储器单元670。处理器600可以包括精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合的或可替换的核类型。作为又一选项,处理器600可以包括专用核,诸如例如网络或通信核、压缩引擎、图形核等等。在一个实施例中,处理器600可以是多核处理器或者可以是多处理器系统的部分。
前端单元630包括分支预测单元632,所述分支预测单元632耦合到指令高速缓存单元634,所述指令高速缓存单元634耦合到指令转换后备缓冲器(TLB)636,所述指令转换后备缓冲器(TLB)636耦合到指令取出单元638,所述指令取出单元638耦合到解码单元640。解码单元640(还已知为解码器)可以解码指令,并且作为输出而生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,其解码自、或其以其它方式反映、或得自原始指令。可以通过使用各种不同的机制来实现解码器640。合适机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令高速缓存单元634此外耦合到存储器单元670。解码单元640耦合到执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括重命名/分配器单元652,所述重命名/分配器单元652耦合到引退单元654和一组一个或多个调度器单元656。(多个)调度器单元656表示任何数目的不同调度器,包括预留站(RS)、中央指令窗口等等。(多个)调度器单元656耦合到物理寄存器(多个)文件(多个)单元658。物理寄存器(多个)文件单元658中的每一个表示一个或多个物理寄存器文件,其中的不同的多个存储一个或多个不同的数据类型,诸如标量整数、标量浮点、紧缩整数(packed integer)、紧缩浮点、向量整数、向量浮点等等、状态(例如,作为将执行的下一个指令的地址的指令指针)等等。物理寄存器(多个)文件(多个)单元658被引退单元654重叠,用以图示可以用来实现寄存器重命名和无序执行的各种方式(例如,通过使用(多个)重排序缓冲器和(多个)引退寄存器文件,通过使用(多个)未来文件、(多个)历史缓冲器,以及(多个)引退寄存器文件;通过使用寄存器映射和寄存器池;等等)。
通常,架构寄存器从处理器的外部或从编程者的视角可见。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储并且提供数据,如本文中所述的那样。合适寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等等。引退单元654和物理寄存器(多个)文件(多个)单元658被耦合到(多个)执行集群660。(多个)执行集群660包括一组一个或多个执行单元662以及一组一个或多个存储器访问单元664。执行单元662可以执行各种操作(例如移位、加法、减法、乘法),并且可以操作在各种类型的数据(例如标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上。
虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其它实施例可以包括仅一个执行单元或全部执行所有功能的多个执行单元。(多个)调度器单元656、物理寄存器(多个)文件(多个)单元658、和(多个)执行集群660被示出为可能是复数的,因为某些实施例为某些类型的数据/操作(例如标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,其各自具有其自己的调度器单元、物理寄存器(多个)文件单元和/或执行集群——并且在分离的存储器访问流水线的情况中,实现某些实施例,其中仅仅该流水线的执行集群具有(多个)存储器访问单元664)创建分离的流水线。还应当理解的是,在其中使用分离的流水线的情况中,这些流水线中的一个或多个可以是无序发布/执行并且其余是有序的。
该组存储器访问单元664耦合到存储器单元670,仅举几例,所述存储器单元670可以包括数据预取器680、数据TLB单元672、数据高速缓存单元(DCU)674以及二级(L2)高速缓存单元676。在一些实施例中,DCU 674还已知为第一级数据高速缓存(L1高速缓存)。DCU674可以处置多个未解决的高速缓存未命中,并且继续服务传入的存储和加载。它还支持维护高速缓存相干性。数据TLB单元672是高速缓存,其用于通过映射虚拟和物理地址空间来改善虚拟地址转化速度。在一个示例性实施例中,存储器访问单元664可以包括加载单元、存储地址单元、和存储数据单元,其中的每一个耦合到存储器单元670中的数据TLB单元672。L2高速缓存单元676可以被耦合到高速缓存的一个或多个其它层级并且最后耦合到主存储器。
在一个实施例中,数据预取器680推测性地向DCU 674加载/预取数据,其通过自动预测程序即将消耗哪个数据。预取可以是指在处理器实际需求数据之前将被存储在存储器层次(例如较低层级高速缓存或存储器)的一个存储器位置(例如定位)中的数据传递到更靠近(例如产生较低访问等待时间)于处理器的较高层级存储器位置。更具体地,预取可以是指在处理器发布针对被返回的特定数据的需求之前提早从较低层级高速缓存/存储器之一向数据高速缓存检索数据和/或预取缓冲器。
处理器600可以支持一个或多个指令集(例如x86指令集(具有在较新版本的情况下已经添加的一些扩展);英国赫特福德郡的Imagination Technologies of KingsLangley的MIPS指令集;加利福尼亚州森尼维耳市的ARM Holdings的ARM指令集(具有可选的附加扩展、诸如NEON))。
应当理解的是,核可以支持多线程化(执行操作或线程的两个或更多并行集合),并且可以用各种方式来这样做,包括时间切片的多线程化、同时多线程化(其中单个物理核为物理核正同时多线程化的线程中的每一个提供逻辑核),或其组合(例如,时间切片的取出和解码以及此后的同时多线程化,诸如在Intel®超线程化技术中那样)。
虽然在无序执行的上下文中描述了寄存器重命名,但是应当理解的是,寄存器重命名可以使用在有序架构中。虽然处理器的所图示的实施例还包括分离的指令和数据高速缓存单元以及共享的L2高速缓存单元,但是可替换的实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存,或多级内部高速缓存。在一些实施例中,所述系统可以包括内部高速缓存以及在核和/或处理器外部的外部高速缓存的组合。可替换地,所有高速缓存可以在核和/或处理器的外部。注意到,指令高速缓存单元634、数据高速缓存单元674以及L2高速缓存单元676一般将不实现在本公开内容中所述的过程,因为一般而言,这些高速缓存单元使用管芯上存储器,其不展现页面本地性行为。
图6B是一框图,其图示了根据本公开内容的一些实施例的、由图6A的处理器600所实现的有序流水线以及寄存器重命名级、无序发布/执行流水线。图6B中的实线框图示了有序流水线,而虚线框图示了寄存器重命名、无序发布/执行流水线。在图6B中,处理器流水线600包括取出级602、长度解码级604、解码级606、分配级608、重命名级610、调度(也已知为分派或发布)级612、寄存器读取/存储器读取级614、执行级616、写回/存储器写入级618、异常处置级622、以及提交级624。在一些实施例中,级602-624的排序可以不同于所图示的,并且不限于图6B中所示的特定排序。
图8图示了用于根据一个实施例的处理器800的微架构的框图,所述处理器800包括可以用于检测和避免总线锁定状况的逻辑电路。在一些实施例中,根据一个实施例的指令可以被实现以对具有字节、字、双字、四字等等的大小、以及诸如单精度和双精度整数以及浮点数据类型之类的数据类型的数据元素操作。在一个实施例中,有序前端801是处理器800的部分,其取出待执行的指令并且预备它们以稍后在处理器流水线中被使用。用于页面添加和内容拷贝的实施例可以被实现在处理器800中。
前端801可以包括若干单元。在一个实施例中,指令预取器816从存储器取出指令,并且将指令馈送到指令解码器818,所述指令解码器818进而对它们进行解码或解释。例如,在一个实施例中,解码器将所接收的指令解码成机器可以执行的一个或多个被称为“微指令”或“微操作”(还被称为micro op(微操作)或uop(微操作))的操作。在其它实施例中,解码器将指令解析成运算码和对应的数据以及控制字段,其由微架构使用以执行根据一个实施例的操作。在一个实施例中,追踪高速缓存830取得经解码的微操作(uop)并且将它们汇编成微操作(uop)队列834中的程序有序序列或追踪以供执行。当追踪高速缓存830遇到复杂指令的时候,微代码ROM(或RAM)832提供对于完成操作所需的微操作(uop)。
一些指令被变换成单个微操作(micro-op),而其它的需要若干微操作(micro-op)来完成全操作。在一个实施例中,如果需要多于四个微操作(micro-op)来完成指令,则解码器818访问微代码ROM 832以完成指令。对于一个实施例,指令可以被解码成小量微操作(micro-op),以用于在指令解码器818处的处理。在另一实施例中,如果需要多个微操作(micro-op)来完成操作,则指令可以被存储在微代码ROM 832内。追踪高速缓存830是指入口点可编程逻辑阵列(PLA),用于确定用于从微代码ROM 832读取微代码序列以完成根据一个实施例的一个或多个指令的正确微指令指针。在微代码ROM 832完成了对指令的微操作(micro-op)的定序之后,机器的前端801恢复从追踪高速缓存830取出微操作。
无序执行引擎803是其中准备指令以用于执行。无序执行逻辑具有多个缓冲器,用于使指令流平滑并且对其进行重排序,以在它们沿流水线往下去并且被调度以供执行的时候优化性能。分配器逻辑对每个微操作(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,所述寄存器文件808、810存储微指令需要执行的整数和浮点数据运算元值。一个实施例的处理器800包括多个执行单元:地址生成单元(AGU)812、AGU814、快速ALU 816、快速ALU 818、缓慢ALU 810、浮点ALU 812、浮点移动单元814。对于一个实施例,浮点执行块812、814执行浮点、MMX、SIMD、和SSE、或其它操作。一个实施例的浮点ALU 812包括64位除以64位的浮点除法器,用于执行除法、平方根、以及余数微操作(micro-op)。对于本公开内容的实施例,可以利用浮点硬件来处置涉及浮点值的指令。
在一个实施例中,ALU运算去往高速ALU执行单元816、818。一个实施例的快速ALU817、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位宽的紧缩数据运算元上。
在一个实施例中,在父加载(parent load)已经完成执行之前,微操作(uop)调度器802、804、806分派相关的操作。由于微操作(uop)在处理器800中被推测性地调度和执行,处理器800还包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中可存在已经带着暂时不正确的数据离开调度器的在飞行中的相关操作。重放(replay)机制追踪并且重执行使用不正确数据的指令。仅有相关操作需要被重放,并且允许独立的那些操作完成。处理器的一个实施例的调度器和重放机制还被设计成捕获指令序列以用于文本串比较运算。
术语“寄存器”可以是指板上处理器存储位置,其被用作指令的部分以标识运算元。换言之,寄存器可以是从处理器外部(从编程者的视角)可用的那些。然而,实施例的寄存器不应当在含义上被限制于特定类型的电路。相反,实施例的寄存器能够存储和提供数据、并且执行本文中所述的功能。本文中所述的寄存器可以通过处理器内的电路、通过使用任何数目的不同技术、诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等等来被实现。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器文件还包含用于紧缩数据的八个多媒体SIMD寄存器。
对于本文中的讨论,寄存器被理解为是被设计成持有紧缩数据的数据寄存器,诸如来自加利福尼亚州圣克拉拉的英特尔公司的利用MMX技术被使能实现的微处理器中的64位宽的MMX™寄存器(在一些实例中还被称为“mm”寄存器)。这些MMX寄存器,其以整数和浮点形式二者可用,可以在伴随SIMD和SSE指令的紧缩数据元素的情况下操作。类似地,与SSE2、SSE3、SSE4或超越这些(一般被称为“SSEx”)的技术有关的128位宽的XMM寄存器也可以用于持有这样的紧缩数据运算元。在一个实施例中,在存储紧缩数据和整数数据方面,寄存器不需要在两个数据类型之间进行区分。在一个实施例中,整数和浮点被包含在相同的寄存器文件或不同的寄存器文件中。此外,在一个实施例中,浮点和整数数据可以被存储在不同的寄存器或相同的寄存器中。
实施例可以用许多不同的系统类型来被实现。现在参考图8,示出的是根据实现方式的多处理器系统800的框图。如图8中所示,多处理器系统800是点对点互连系统,并且包括经由点对点互连850所耦合的第一处理器880和第二处理器880。如图8中所示,处理器870和880中的每一个可以是多核处理器,包括第一和第二处理器核(即处理器核874a和874b,以及处理器核884a和884b),尽管潜在地在处理器中可存在许多更多的核。
虽然示出有两个处理器870、880,但是要理解的是,本公开内容的范围不被这样限制。在其它实现方式中,在给定处理器中可存在一个或多个附加的处理器。
示出了处理器870和880,其分别包括集成存储器控制器单元872和882。处理器870作为其总线控制器单元的部分还包括点对点(P-P)接口876和888;类似地,第二处理器880包括P-P接口886和888。处理器870、888可以通过使用P-P接口电路878、888、经由点对点(P-P)接口850来交换信息。如图8中所示,IMC 872和882将处理器耦合到相应的存储器,即存储器832和存储器834,其可以是被本地附连到相应处理器的主存储器的部分。
处理器870、880可以各自通过使用点对点接口电路876、894、886、898、经由单独的P-P接口852、854来与芯片组890交换信息。芯片组890还可以经由高性能图形接口839来与高性能图形电路838交换信息。
共享的高速缓存(未示出)可以被包括在任一处理器中或在两个处理器的外部,还经由P-P互连而与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可以被存储在共享的高速缓存中。当向共享的高速缓存分配条目的时候,还可以跨一个或多个高速缓存控制器而在共享的高速缓存中创建页面本地性。
芯片组890可以经由接口896而耦合到第一总线816。在一个实施例中,第一总线816可以是外围组件互连(PCI)总线,或是诸如快速PCI总线或互连总线之类的总线,尽管本公开内容的范围不被这样限制。
现在参考图9,示出的是根据本公开内容的实施例的第三系统900的框图。图8和9中同样的元素具有同样的参考标号,并且图9的某些方面已经从图8中省略以便避免使图9的其它方面模糊。
图9图示了处理器970、980可以分别包括集成存储器和I/O控制逻辑(“CL”)972和992。对于至少一个实施例,CL 972、982可以包括集成存储器控制器单元,诸如本文中所描述的。另外,CL 972、992还可以包括I/O控制逻辑。图9图示了存储器932、934被耦合到CL972、992,并且I/O设备914也耦合到控制逻辑972、992。传统I/O设备915耦合到芯片组990。
图10是示例性芯片上系统(SoC)1000,其可以包括一个或多个核1002。本领域中已知用于膝上型电脑、台式电脑、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中心、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持式设备、以及各种其它电子设备的其它系统设计和配置也是合适的。通常,能够并入如本文中所公开的处理器和/或其它执行逻辑的巨大各种各样的系统或电子设备通常是合适的。
在图10的示例性SoC 1000内,虚线框是更高级的SoC上的特征。(多个)互连单元1002可以耦合到:应用处理器1017,其包括一组一个或多个核1002A-N以及(多个)共享的高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一组或者一个或多个媒体处理器1020,其可以包括集成图形逻辑1008、用于提供静止和/或视频相机功能性的图像处理器1024、用于提供硬件音频加速的音频处理器1026、以及用于提供视频编码/解码加速的视频处理器1028;静态随机存取存储器(SRAM)单元1030;直接存储器存取(DMA)单元1032;以及显示单元1040,其用于耦合到一个或多个外部显示器。
接下来转到图11,描绘了根据本公开内容的实施例的芯片上系统(SoC)设计的实施例。作为说明性示例,SoC 1100被包括在用户设备(UE)中。在一个实施例中,UE是指将由终端用户用来通信的任何设备,诸如手持式电话、智能电话、平板设备、超波笔记本、具有宽带适配器的笔记本、或任何其它类似的通信设备。UE可以连接到基站或节点,其可以在本质上对应于GSM网络中的移动站(MS)。用于页面添加和内容拷贝的实施例可以被实现在SoC1100中。
此处,SoC 1100包括2个核——1106和1107。类似于以上的讨论,核1106和1107可以遵照指令集架构,诸如具有Intel® Architecture CoreTM的处理器、Advanced MicroDevices公司的(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计、或其消费者、以及它们的被许可方或采用者。核1106和1107耦合到高速缓存控制装置1108,所述高速缓存控制装置1108相关联于总线接口单元1109和L2高速缓存1110以与系统1100的其它部分通信。互连1111包括芯片上互连,诸如IOSF、AMBA或以上讨论的其它互连,其可以实现所述公开内容的一个或多个方面。
在一个实施例中,SDRAM控制器1140可以经由高速缓存125而连接到互连1111。互连1111提供与其它组件的通信信道,所述其它组件诸如用于与SIM卡对接的订户标识模块(SIM)1130、用于持有引导代码以供核1106和1107执行以初始化并且引导SoC 1100的引导ROM 1135、用于与外部存储器(例如DRAM 1160)对接的SDRAM控制器1140、用于与非易失性存储器(例如闪速装置1165)对接的闪速控制器1145、用于与外围设备对接的外围控制装置1150(例如串行外围接口)、用于显示和接收输入(例如使能触摸的输入)的视频编解码器1120和视频接口1125、用于执行图形有关的计算的GPU 1115等等。这些接口中的任一个可以并入本文中所述的实施例的各方面。
另外,系统图示了用于通信的外围设备,诸如Bluetooth®模块1170、3G调制解调器1175、GPS 1180以及Wi-Fi® 1185。注意如以上所陈述的,UE包括用于通信的无线电装置。作为结果,这些外围通信模块可以不全被包括。然而,在UE中,某种形式的用于外部通信的无线电装置应当被包括。
图12图示了以计算系统1200的示例形式的机器的图解表示,在所述机器内可以执行指令集,其用于使得机器执行本文中所讨论的方法中的任何一个或多个。在可替换的实施例中,机器可以被连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器在客户端-服务器网络环境中可以作为(in the capacity of)服务器或客户端设备而运作,或者在对等(或分布式)网络环境中作为对等机器而运作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web(网络)器具、服务器、网络路由器、交换机或桥、或能够执行对将由该机器采取的动作进行指定的一组指令(顺序的或以其它方式的)的任何机器。此外,虽然仅仅图示了单个机器,但是术语“机器”还应当被理解为包括单独地或联合地执行一组(或多组)指令以履行本文中讨论的方法中的任何一个或多个的机器的任何集合。用于页面添加和内容拷贝的实施例可以被实现在计算系统1200中。
计算系统1200包括处理设备1202、主存储器1204(例如闪速存储器、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等等)、静态存储器1206(例如闪速存储器、静态随机存取存储器(SRAM)等等)以及数据存储设备1218,其经由总线1208而与彼此通信。在一个实施例中,总线1208可以由图1的系统总线170-1和/或存储器总线170-2构成,并且共享总线1208的存储器和外围设备可以是系统代理124或通过系统代理124而起作用,所述系统代理124类似于如参考图1所讨论的。
处理设备1202表示一个或多个通用处理设备,诸如微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其它指令集的处理器、或实现指令集组合的处理器。处理设备1202还可以是一个或多个特殊用途处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实施例中,处理设备1202可以包括一个或处理器核。处理设备1202被配置成执行处理逻辑1226,以用于履行本文中讨论的操作。
在一个实施例中,处理设备1202可以是图1的计算系统100的部分。可替换地,计算系统1200可以包括如本文中所述的其它组件。应当理解的是,核可以支持多线程化(执行操作或线程的两个或更多并行集合),并且可以用各种方式来这样做,包括时间切片的多线程化、同时多线程化(其中单个物理核为物理核正同时多线程化的线程中的每一个提供逻辑核),或其组合(例如,时间切片的取出和解码以及此后的同时多线程化,诸如在Intel®超线程化技术中那样)。
计算系统1200可以此外包括通信地耦合到网络1219的网络接口设备1218。计算系统1200还可以包括视频显示设备1210(例如液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1210(例如键盘)、光标控制设备1214(例如鼠标)、信号生成设备1220(例如扬声器)、或其它外围设备。此外,计算系统1200可以包括图形处理单元1222、视频处理单元1228和音频处理单元1232。在另一实施例中,计算系统1200可以包括芯片组(未被图示),所述芯片组指代一组集成电路、或芯片,其被设计成与处理设备1202一起工作,并且控制在处理设备1202与外部设备之间的通信。例如,芯片组可以是母板上的一组芯片,所述母板将处理设备1202链接到非常高速的设备,诸如主存储器1204和图形控制器,以及将处理设备1202链接到外围设备的较低速外围总线,诸如USB、PCI或ISA总线。
数据存储设备1218可以包括计算机可读存储介质1224,在其上存储了软件1226,所述软件1226具体化本文中所述的功能的方法中的任何一个或多个。软件1226在其通过计算系统1200的执行期间还可以完全地或至少部分地驻留在主存储器1204内作为指令1226和/或处理设备1202内作为处理逻辑;主存储器1204和处理设备1202还构成计算机可读存储介质。
计算机可读存储介质1224还可以用于通过利用诸如关于图1和2所描述的处理设备1202和/或包含调用以上应用的方法的软件库来存储指令1226。虽然计算机可读存储介质1224在示例实施例中被示出为是单个介质,但是术语“计算机可读存储介质”应当被理解为包括单个介质或多个介质(例如集中式或分布式的数据库和/或相关联的高速缓存和服务器),其存储所述一个或多个指令集。术语“计算机可读存储介质”还应当被理解为包括如下任何介质:所述介质能够存储、编码、或承载指令集以供机器执行,并且使得机器履行本实施例的方法中的任何一个或多个。术语“计算机可读存储介质”因此应当被理解为包括但不限于固态存储器、以及光学和磁性介质。
以下示例关于另外的实施例。
示例1是一种计算系统,其包括:1)包括第一节点的多个节点,所述第一节点包括至少一个处理核、存储器控制器、节点追踪寄存器(MSR)、以及包括多个计数器的监控计数器阵列;并且2)其中所述存储器控制器用于:a)访问节点追踪MSR的多个位,以确定将被追踪的节点子集,其中所述节点子集包括第一节点和第二节点;b)分配所述多个计数器中的第一计数器以追踪由第一节点发送到本地系统存储器的存储器请求;以及c)分配所述多个计数器中的第二计数器以追踪与由第一节点发送到第二节点的存储器请求相关联的存储器响应。
在示例2中,示例1的计算系统,其中追踪存储器响应包括追踪第一节点的末级高速缓存(LLC)处的高速缓存未命中,其响应于由第一节点发送到第一节点和第二节点的存储器请求而被接收。
在示例3中,示例1的计算系统,其中存储器控制器此外用于在接收到利用标识线程的资源监控标识符(RMID)所标记的存储器响应时:a)确定与存储器响应相关联的节点标识符(ID);以及b)更新与存储器响应的RMID和节点ID相对应的第一计数器或第二计数器中之一。
在示例4中,示例3的计算系统,其中所述存储器控制器此外用于:a)检测向第二线程的上下文切换;以及b)利用与第二线程相对应的第二RMID来标记第二存储器请求。
在示例5中,示例3的计算系统,其中所述存储器控制器用于从节点子集的点对点处理器互连和本地系统存储器之一接收存储器响应。
在示例6中,示例3的计算系统,其中所述第一节点此外包括1)事件选择寄存器,其包括事件标识符部分、RMID部分、以及节点标识符部分,并且其中所述第一节点此外对于节点子集中的第三节点:a)设置事件标识符部分以指示对节点带宽的追踪;b)设置RMID部分以指定RMID;以及c)设置节点标识符部分以指定与第三节点对应的节点ID;以及其中所述存储器控制器此外对于节点子集中的第三节点:d)读取事件选择寄存器以标识针对第三节点的RMID和节点ID;以及e)在第一节点的计数器MSR中存储来自监控计数器阵列的计数器值,所述计数器值对应于节点ID和RMID;并且其中所述第一节点此外对于节点子集中的每个节点迭代地:f)从计数器MSR中检索针对节点的计数器值;以及g)根据所述计数器值来计算针对节点的存储器带宽。
在示例7中,示例6的计算系统,其中响应于确定了节点子集中的第二节点的存储器带宽在比第一节点的存储器带宽更高的阈值量之上,所述第一节点此外将在第一节点上执行的线程迁移到第二节点。
在示例8中,示例1的计算系统,其中所述节点子集包括所述多个节点。
各种实施例可以具有上述结构性特征的不同组合。例如,上述计算系统的所有可选特征还可以关于本文中所述的方法或过程来被实现,并且示例中的细节可以被使用在一个或多个实施例中的任何地方。
示例9是一种节点,其包括:1)至少一个处理核,2)存储器控制器,3)节点追踪寄存器(MSR),以及4)包括多个计数器的监控计数器阵列;并且其中所述存储器控制器用于:a)访问节点追踪MSR的多个位,以确定将被追踪的多个节点的节点子集,其中所述节点子集包括所述多个节点中的节点和第二节点;b)分配所述多个计数器中的第一计数器以追踪由节点发送到本地系统存储器的存储器请求;以及c)分配所述多个计数器中的第二计数器以追踪与由节点发送到第二节点的存储器请求相关联的存储器响应。
在示例10中,示例9的节点,其中追踪存储器响应包括追踪节点的末级高速缓存(LLC)处的高速缓存未命中,其响应于被发送到节点和第二节点的存储器请求而被接收。
在示例11中,示例9的节点,其中所述存储器控制器此外用于在接收到利用标识线程的资源监控标识符(RMID)所标记的存储器响应时:a)确定与存储器响应相关联的节点标识符(ID);以及b)更新与存储器响应的RMID和节点ID相对应的第一计数器或第二计数器中之一。
在示例12中,示例11的节点,其中所述存储器控制器此外用于:a)检测向第二线程的上下文切换;以及b)利用与第二线程相对应的第二RMID来标记第二存储器请求。
在示例13中,示例11的节点,其中所述存储器控制器用于从节点子集的点对点处理器互连和本地系统存储器之一接收存储器响应。
在示例14中,示例11的节点,其中所述节点此外包括:1)事件选择寄存器,其包括事件标识符部分、RMID部分,以及2)节点标识符部分,并且其中所述节点此外对于节点子集的第三节点:a)设置事件标识符部分以指示对节点带宽的追踪;设置RMID部分以指定RMID;以及b)设置节点标识符部分以指定与第三节点对应的节点ID;以及其中所述存储器控制器此外对于节点子集中的第三节点:c)读取事件选择寄存器以标识针对第三节点的RMID和节点ID;以及d)在节点的计数器MSR中存储来自监控计数器阵列的计数器值,所述计数器值对应于节点ID和RMID;并且其中所述节点此外对于节点子集中的每个节点迭代地:e)从计数器MSR中检索针对节点的计数器值;以及f)根据所述计数器值来计算针对节点的存储器带宽。
在示例15中,示例14的节点,其中响应于确定了节点子集中的第二节点的存储器带宽在比节点的存储器带宽更高的阈值量之上,所述节点此外将在所述节点上执行的线程迁移到第二节点。
各种实施例可以具有上述结构性特征的不同组合。例如,上述处理器和方法的所有可选特征还可以关于本文中所述的系统来被实现,并且示例中的细节可以被使用在一个或多个实施例中的任何地方。
示例16是一种方法,其包括:1)通过多个节点中的至少第一节点来检索针对由第一节点所执行的线程的计数器值,其中所述检索是从第一节点的计数器寄存器(MSR),并且其中相应的计数器值相关联于以下各项:与线程对应的资源监控标识符(RMID)以及与所述多个节点的节点子集中之一对应的节点标识符(ID),其中所述节点子集包括第一节点;2)基于所述计数器值来确定针对节点子集的按节点的存储器带宽;以及3)响应于确定了节点子集中的第二节点的存储器带宽在比第一节点的存储器带宽更高的阈值量之上,将在第一节点上执行的线程迁移到第二节点。
在示例17中,示例16的方法,此外包括设置第一节点的节点追踪MSR内的多个位,其中所述多个位指示将被追踪以用于存储器利用的所述多个节点的节点子集。
在示例18中,示例17的方法此外包括:1)由第一节点的存储器控制器从节点追踪MSR请求所述多个位;2)由存储器控制器向多个计数器中的第一计数器分配,以追踪由第一节点发送到本地存储器的存储器请求;以及3)向所述多个计数器中的第二计数器分配,以追踪与由第一节点发送到节点子集中第二节点的存储器请求相关联的存储器响应,其中所述多个位标识至少第一节点和第二节点;在接收到利用与线程相关联的RMID所标记的存储器响应时,所述存储器控制器:4)确定与存储器响应相关联的节点ID;以及5)更新与存储器响应的RMID和节点ID相对应的第一计数器或第二计数器中之一。
在示例19中,示例18的方法,其中追踪存储器响应包括追踪第一节点的末级高速缓存(LLC)处的高速缓存未命中,其响应于被发送到第一节点和第二节点的存储器请求而被接收。
在示例20中,示例18的方法此外包括:1)由第一节点访问事件选择寄存器,其包括事件标识符部分、RMID部分、以及节点标识符部分,并且对于节点子集中的第三节点:2)设置事件标识符部分以指示对节点带宽的追踪;3)设置位的RMID部分以指定RMID;以及4)设置节点标识符部分以指定与节点子集中的第三节点对应的节点ID;以及5)由存储器控制器访问事件选择寄存器以标识RMID和节点ID;以及6)由存储器控制器在第一节点的计数器MSR中存储来自所述多个计数器的、与节点ID和RMID对应的计数器值。
在示例21中,示例20的方法,此外包括:响应于确定了所述多个节点的总存储器带宽在比节点子集中的节点的任何按节点的存储器带宽更高的第二阈值量之上:1)设置第一节点的节点追踪MSR内的所述多个位以追踪与节点子集不同的第二节点子集,其中所述第二节点子集也包括第一节点;2)确定针对第二节点子集的按节点的存储器带宽;以及3)响应于确定了第二节点子集中的第三节点的存储器带宽在比第一节点的存储器带宽更高的阈值量之上,将在第一节点上执行的线程迁移到第三节点。
各种实施例可以具有上述结构性特征的不同组合。例如,上述处理器和方法的所有可选特征还可以关于本文中所述的系统来被实现,并且示例中的细节可以被使用在一个或多个实施例中的任何地方。
虽然已经关于有限数目的实施例而描述了本公开内容,但是本领域技术人员将领会到从其中的众多修改和变型。意图的是,所附权利要求覆盖如落在此本公开内容的真实精神和范围内的所有这样的修改和变型。
在本文的描述中,阐明了众多特定细节,诸如以下各项的示例:特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线级和操作等等,以便提供对本公开内容的透彻理解。然而,对于本领域技术人员将明显的是:不需要采用这些特定细节来实践本公开内容。在其它实例中,众所周知的组件或方法、诸如特定和可替换的处理器架构、用于所述算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现方式、用代码对算法的特定表述、特定掉电和门控技术/逻辑,以及计算机系统的其它特定操作细节没有被详细描述以便避免不必要地使本公开内容模糊。
参考如下来描述实施例:确定特定集成电路中、诸如计算平台或微处理器中的基于扇区的高速缓存的高速缓存行中的数据的有效性。实施例还可以可适用于其它类型的集成电路和可编程逻辑设备。例如,所公开的实施例不限于台式计算机系统或便携式计算机,诸如Intel® UltrabooksTM计算机。并且可以还使用在其它设备中,诸如手持式设备、平板设备、其它薄笔记本、芯片上系统(SoC)设备和嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数字相机、个人数字助理(PDA)和手持式PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机、或可以执行以下教导的功能和操作的任何其它系统。描述了:系统可以是任何种类的计算机或嵌入式系统。所公开的实施例可以尤其用于低端设备,比如可穿戴设备(例如手表)、电子植入物、感知和控制基础设施设备、控制器、监督控制和数据获取(SCADA)系统等等。此外,本文中所述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于能量保存和效率的软件优化。如在以下的描述中将容易变得明显的,本文中所述的方法、装置和系统的实施例(无论是参考硬件、固件、软件或其组合)对于与性能考虑相平衡的“绿色科技”未来是至关重要的。
尽管参考处理器描述了本文中的实施例,但是其它实施例可适用于其它类型的集成电路和逻辑设备。本公开内容的实施例的类似的技术和教导可以被应用到其它类型的电路或半导体设备,其可得益于较高流水线吞吐量和经改善的性能。本公开内容的实施例的教导可适用于执行数据操纵的任何处理器或机器。然而,本公开内容不限于执行512位、256位、128位、64位、32位或16位数据运算的处理器或机器,并且可以被应用于其中执行对数据的操纵或管理的任何处理器和机器。另外,本文中的描述提供示例,并且附图示出了各种示例以用于图示的目的。然而,这些示例不应当以限制性意义来被解释,因为它们仅仅意图提供本公开内容的实施例的示例,而不是提供本公开内容的实施例的所有可能实现方式的穷举列表。
尽管以上示例在执行单元和逻辑电路的上下文中描述了指令处置和分布,但是本公开内容的其它实施例可以通过被存储在机器可读、有形介质上的数据或指令来被实现,所述数据或指令当由机器执行的时候使得机器执行与本公开内容的至少一个实施例一致的功能。在一个实施例中,与本公开内容的实施例相关联的功能被具体化在机器可执行指令中。指令可以用于使得被编程有指令的通用或专用处理器执行本公开内容的步骤。本公开内容的实施例可以被提供为计算机程序产品或软件,所述计算机程序产品或软件可以包括已经在其上存储了指令的机器或计算机可读介质,所述指令可以用于对计算机(或其它电子设备)进行编程以执行根据本公开内容的实施例的一个或多个操作。可替换地,本公开内容的实施例的操作可能由包含用于执行操作的固定功能逻辑的特定硬件组件来执行,或由经编程的计算机组件和固定功能硬件组件的任何组合来执行。
用于对逻辑进行编程以执行公开内容的实施例的指令可以被存储在系统中的存储器内,所述存储器诸如DRAM、高速缓存、闪速存储器或其它存储装置。此外,可以经由网络或通过其它计算机可读介质来分布指令。因而,机器可读介质可以包括用于以机器(例如计算机)可读的形式存储或传输信息的任何机制,但是不限于软盘、光盘、光碟、只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或有形的机器可读存储装置,其被使用在通过因特网、经由电气、光学、声学或其它形式的传播信号(例如载波、红外信号、数字信号等等)而对信息的传输中。因此,计算机可读介质包括适合用于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的有形、机器可读介质。
设计可以经历各种阶段,从创造到模拟到制造。表示设计的数据可以用许多方式来表示设计。首先,如在模拟中有用的,可以通过使用硬件描述语言或另一功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路层级模型。此外,在某个阶段的大多数设计达到如下数据层级:所述数据层级表示各种设备在硬件模型中的物理安置。在其中使用常规半导体制造技术的情况中,表示硬件模型的数据可以是如下数据:所述数据指定在用于生产集成电路的掩模的不同掩模层上存在或不存在各种特征。在设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。存储器或者磁性或光学存储装置、诸如盘可以是用于存储信息的机器可读介质,所述信息经由被调制或以其它方式被生成以传输这样的信息的光波或电波来被传输。当在执行电信号的拷贝、缓冲或重传输的程度上传输对代码或设计进行指示或承载的电载波的时候,制成新的拷贝。因而,通信提供商或网络提供商可以在有形、机器可读介质上至少暂时地存储物品,诸如被编码到载波中的信息,其具体化本公开内容的实施例的技术。
如本文中所使用的模块是指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,诸如微控制器,其相关联于非暂时性介质以存储代码,所述代码被适配成由微控制器执行。因此,在一个实施例中对模块的提及是指硬件,所述硬件特别地被配置成识别和/或执行将被持有在非暂时性介质上的代码。此外,在另一实施例中,使用模块是指包括代码的非暂时性介质,所述代码特别地被适配成由微控制器执行以履行预定操作。并且如能推断的,在又一实施例中,术语模块(在该示例中)可以指代微控制器与非暂时性介质的组合。通常,被图示为分离的模块边界通常变化并且潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,而同时潜在地保留某个独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其它硬件,诸如可编程逻辑设备。
在一个实施例中对短语“被配置成”的使用是指对用于执行所指定或所确定的任务的装置、硬件、逻辑或元件进行布置、放在一起、制造、供给销售、进口和/或设计。在该示例中,不在操作的装置或其元件仍“被配置成”执行所指定的任务,如果它被设计、耦合和/或互连以执行所述所指定的任务的话。作为纯说明性的示例,逻辑门可以在操作期间提供0或1。但是“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每个潜在的逻辑门。代替地,逻辑门是以如下某种方式耦合的一个:其在操作期间,1或0输出将启用时钟。再一次指出,术语“被配置成”的使用不要求操作,而是代替地聚焦于装置、硬件和/或元件的潜在状态,其中在所述潜在状态中,所述装置、硬件和/或元件被设计成当装置、硬件和/或元件在操作的时候执行特定任务。
此外,在一个实施例中对短语“用以”、“能够/能够用以”和或“可操作以”的使用是指某种装置、逻辑、硬件和/或元件以这样的方式被设计以使能以所指定的方式使用所述装置、逻辑、硬件和/或元件。如以上指出的,在一个实施例中对“用以”、“能够用以”或“可操作以”的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中所述装置、逻辑、硬件和/或元件不操作,但是以这样的方式被设计以使能以所指定的方式使用装置。
如本文中所使用的值包括对数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,对逻辑电平、逻辑值、或逻辑性值的使用还被称为“1”和“0”,其简单地表示二进制逻辑状态。例如,1是指高逻辑电平并且0是指低逻辑电平。在一个实施例中,存储单元、诸如晶体管或闪速单元可以能够持有单个逻辑值或多个逻辑值。然而,计算机系统中的值的其它表示已经被使用。例如,十进制数十还可以被表示为二进制值1010和十六进制字母A。因此,值包括对能够被持有在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分来表示。作为示例,第一值、诸如逻辑一可以表示默认或初始状态,而第二值、诸如逻辑零可以表示非默认状态。另外,在一个实施例中,术语重置和设置分别是指默认和经更新的值或状态。例如,默认值潜在地包括高逻辑值,即重置,而经更新的值潜在地包括低逻辑值,即设置。注意到,值的任何组合可以被利用以表示任何数目的状态。
以上阐明的方法、硬件、软件、固件或代码的实施例可以经由被存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上的指令或代码来被实现,所述指令或代码可由处理元件执行。非暂时性机器可访问/可读的介质包括如下任何机制:所述机制以可由机器、诸如计算机或电子系统读取的形式提供(即存储和/或传输)信息。例如,非暂时性机器可访问介质包括随机存取存储器(RAM)、诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电学存储设备;光学存储设备;声学存储设备;用于持有从暂时性(所传播的)信号(例如载波、红外信号、数字信号)所接收的信息的其它形式的存储设备;等等,其将区别于可以从其中接收信息的非暂时性介质。
用于对逻辑进行编程以执行公开内容的实施例的指令可以被存储在系统中的存储器内,所述存储器诸如DRAM、高速缓存、闪速存储器或其它存储装置。此外,可以经由网络或通过其它计算机可读介质来分布指令。因而,机器可读介质可以包括用于以机器(例如计算机)可读的形式存储或传输信息的任何机制,但是不限于软盘、光盘、光碟、只读存储器(CD-ROM)、以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或有形的机器可读存储装置,其被使用在通过因特网、经由电气、光学、声学或其它形式的传播信号(例如载波、红外信号、数字信号等等)而对信息的传输中。因此,计算机可读介质包括适合用于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的有形、机器可读介质。
贯穿本说明书对“一个实施例”或“实施例”的提及意味着结合该实施例所描述的特定特征、结构或特性被包括在本公开内容的至少一个实施例中。因而,短语“在一个实施例中”或“在实施例中”在贯穿本说明书的各处的出现不一定全指代相同实施例。此外,在一个或多个实施例中,特定的特征、结构或特性可以用任何合适的方式被组合。
在前述说明书中,已经参考特定的示例性实施例而给出了详细描述。然而,将明显的是:可对其做出各种修改和改变,而不背离如所附权利要求中所阐明的公开内容的更宽泛精神和范围。说明书和附图因此要以说明性的意义而不是限制性的意义来被看待。此外,对实施例的前述使用以及其它示例性语言不一定指代相同实施例或相同示例,而是可以指代不同且有区别的实施例,以及潜在相同的实施例。
详细描述的一些部分在算法以及对计算机存储器内的数据位上的操作的符号表示方面来被呈现。这些算法描述和表示是由数据处理领域中的技术人员用来最有效地向本领域其他技术人员传达其工作实质的手段。算法在此处并且一般地被设想成是导致所期望的结果的操作的自相一致的序列。操作是需要对物理量的物理操纵的那些。通常,尽管不一定,这些量采取能够被存储、传递、组合、比较和以其它方式操纵的电信号或磁信号的形式。有时、主要出于通常使用的原因,已经证明了如下是便利的:将这些信号称为位、值、元素、符号、字符、项、数等等。本文中所述的框可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语将相关联于适当的物理量,并且仅仅是适用于这些量的便利标签。除非另行特别声明,如从以上讨论中显而易见的,否则领会到,贯穿描述,利用诸如“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获得”、“认证”、“禁止”、“执行”、“请求”、“通信”等等之类的术语的讨论是指计算系统或类似电子计算设备的动作和过程,所述计算系统或类似电子计算设备操纵被表示为计算系统的寄存器和存储器内的物理(例如电子)量的数据并且将所述数据变换成其它数据,所述其它数据类似地被表示为计算系统存储器或寄存器或其它这样的信息存储装置、传输或显示设备内的物理量。
词语“示例”或“示例性”在本文中用于意指“用作示例、实例或说明”。在本文中被描述为“示例”或“示例性”的任何方面或设计不一定被解释为相比于其它方面或设计是优选或有利的。相反,对词语“示例”或“示例性”的使用意图以具体的方式呈现概念。如本申请中所使用的,术语“或”意图意指可包含性“或”而不是互斥“或”。也就是说,除非另行指定,或从上下文中清楚的,否则“X包括A或B”意图意指任何自然可包含性排列。也就是说,如果X包括A;X包括B;或X包括A和B二者,于是“X包括A或B”在任何前述情况下被满足。另外,如在本申请和所附权利要求中所使用的冠词“一”和“一个”应当一般地被解释成意指“一个或多个”,除非另行指定或从上下文中清楚的指向单数形式。此外,贯穿全文对术语“实施例”或“一个实施例”或“实现方式”或“一个实现方式”的使用不意图意指相同的实施例或实现方式,除非像这样被描述。而且,如本文中所使用的术语“第一”、“第二”、“第三”、“第四”等等意图作为标签来在不同元素之间进行区分,并且可以不一定具有根据其数字指定的序数含义。

Claims (21)

1.一种计算设备,包括:
包括第一节点的多个节点,所述第一节点包括至少一个处理核、存储器控制器、节点追踪寄存器(MSR)、以及包括多个计数器的监控计数器阵列;并且
其中所述存储器控制器用于:
访问节点追踪MSR的多个位,以确定将被追踪的节点子集,其中所述节点子集包括第一节点和第二节点;
分配所述多个计数器中的第一计数器以追踪由第一节点发送到本地系统存储器的存储器请求;以及
分配所述多个计数器中的第二计数器以追踪与由第一节点发送到第二节点的存储器请求相关联的存储器响应。
2.根据权利要求1所述的计算系统,其中追踪存储器响应包括追踪第一节点的末级高速缓存(LLC)处的高速缓存未命中,其响应于由第一节点发送到第一节点和第二节点的存储器请求而被接收。
3.根据权利要求1所述的计算系统,其中存储器控制器此外用于在接收到利用标识线程的资源监控标识符(RMID)所标记的存储器响应时:
确定与存储器响应相关联的节点标识符(ID);以及
更新与存储器响应的RMID和节点ID相对应的第一计数器或第二计数器中之一。
4.根据权利要求3所述的计算系统,其中所述存储器控制器此外用于:
检测向第二线程的上下文切换;以及
利用与第二线程相对应的第二RMID来标记第二存储器请求。
5.根据权利要求3所述的计算系统,其中所述存储器控制器用于从节点子集的点对点处理器互连和本地系统存储器之一接收存储器响应。
6.根据权利要求3所述的计算系统,其中所述第一节点此外包括事件选择寄存器,其包括事件标识符部分、RMID部分、以及节点标识符部分,并且其中所述第一节点此外对于节点子集中的第三节点:
设置事件标识符部分以指示对节点带宽的追踪;
设置RMID部分以指定RMID;以及
设置节点标识符部分以指定与第三节点对应的节点ID;以及
其中所述存储器控制器此外对于节点子集中的第三节点:
读取事件选择寄存器以标识针对第三节点的RMID和节点ID;以及
在第一节点的计数器MSR中存储来自监控计数器阵列的计数器值,所述计数器值对应于节点ID和RMID;并且
其中所述第一节点此外对于节点子集中的每个节点迭代地:
从计数器MSR中检索针对节点的计数器值;以及
根据所述计数器值来计算针对节点的存储器带宽。
7.根据权利要求6所述的计算系统,其中响应于确定了节点子集中的第二节点的存储器带宽在比第一节点的存储器带宽更高的阈值量之上,所述第一节点此外将在第一节点上执行的线程迁移到第二节点。
8.根据权利要求1所述的计算系统,其中所述节点子集包括所述多个节点。
9.一种节点,包括:
至少一个处理核、存储器控制器、节点追踪寄存器(MSR)、以及包括多个计数器的监控计数器阵列;并且
其中所述存储器控制器用于:
访问节点追踪MSR的多个位,以确定将被追踪的多个节点的节点子集,其中所述节点子集包括所述多个节点中的节点和第二节点;
分配所述多个计数器中的第一计数器以追踪由节点发送到本地系统存储器的存储器请求;以及
分配所述多个计数器中的第二计数器以追踪与由节点发送到第二节点的存储器请求相关联的存储器响应。
10.根据权利要求9所述的节点,其中追踪存储器响应包括追踪节点的末级高速缓存(LLC)处的高速缓存未命中,其响应于被发送到节点和第二节点的存储器请求而被接收。
11.根据权利要求9所述的节点,其中所述存储器控制器此外用于在接收到利用标识线程的资源监控标识符(RMID)所标记的存储器响应时:
确定与存储器响应相关联的节点标识符(ID);以及
更新与存储器响应的RMID和节点ID相对应的第一计数器或第二计数器中之一。
12.根据权利要求11所述的节点,其中所述存储器控制器此外用于:
检测向第二线程的上下文切换;以及
利用与第二线程相对应的第二RMID来标记第二存储器请求。
13.根据权利要求11所述的节点,其中所述存储器控制器用于从节点子集的点对点处理器互连和本地系统存储器之一接收存储器响应。
14.根据权利要求11所述的节点,其中所述节点此外包括事件选择寄存器,其包括事件标识符部分、RMID部分、以及节点标识符部分,并且其中所述节点此外对于节点子集中的第三节点:
设置事件标识符部分以指示对节点带宽的追踪;
设置RMID部分以指定RMID;以及
设置节点标识符部分以指定与第三节点对应的节点ID;并且
其中所述存储器控制器此外对于节点子集中的第三节点:
读取事件选择寄存器以标识针对第三节点的RMID和节点ID;以及
在节点的计数器MSR中存储来自监控计数器阵列的计数器值,所述计数器值对应于节点ID和RMID;并且
其中所述节点此外对于节点子集中的每个节点迭代地:
从计数器MSR中检索针对节点的计数器值;以及
根据所述计数器值来计算针对节点的存储器带宽。
15.根据权利要求14所述的节点,其中响应于确定了节点子集中的第二节点的存储器带宽在比节点的存储器带宽更高的阈值量之上,所述节点此外将在所述节点上执行的线程迁移到第二节点。
16.一种方法,包括:
通过多个节点中的至少第一节点来检索针对由第一节点所执行的线程的计数器值,其中所述检索是从第一节点的计数器寄存器(MSR),并且其中相应的计数器值相关联于以下各项:与线程对应的资源监控标识符(RMID)以及与所述多个节点的节点子集中之一对应的节点标识符(ID),其中所述节点子集包括第一节点;
基于所述计数器值来确定针对节点子集的按节点的存储器带宽;以及
响应于确定了节点子集中的第二节点的存储器带宽在比第一节点的存储器带宽更高的阈值量之上,将在第一节点上执行的线程迁移到第二节点。
17.根据权利要求16所述的方法,此外包括设置第一节点的节点追踪MSR内的多个位,其中所述多个位指示将被追踪以用于存储器利用的所述多个节点的节点子集。
18.根据权利要求17所述的方法,此外包括:
由第一节点的存储器控制器从节点追踪MSR请求所述多个位;
由存储器控制器向多个计数器中的第一计数器分配,以追踪由第一节点发送到本地存储器的存储器请求;以及
向所述多个计数器中的第二计数器分配,以追踪与由第一节点发送到节点子集中第二节点的存储器请求相关联的存储器响应,其中所述多个位标识至少第一节点和第二节点;
在接收到利用与线程相关联的RMID所标记的存储器响应时,所述存储器控制器:
确定与存储器响应相关联的节点ID;以及
更新与存储器响应的RMID和节点ID相对应的第一计数器或第二计数器中之一。
19.根据权利要求18所述的方法,其中追踪存储器响应包括追踪第一节点的末级高速缓存(LLC)处的高速缓存未命中,其响应于被发送到第一节点和第二节点的存储器请求而被接收。
20.根据权利要求18所述的方法,此外包括:
由第一节点访问事件选择寄存器,其包括事件标识符部分、RMID部分、以及节点标识符部分,并且
对于节点子集中的第三节点:
设置事件标识符部分以指示对节点带宽的追踪;
设置位的RMID部分以指定RMID;以及
设置节点标识符部分以指定与节点子集中的第三节点对应的节点ID;以及
由存储器控制器访问事件选择寄存器以标识RMID和节点ID;以及
由存储器控制器在第一节点的计数器MSR中存储来自所述多个计数器的、与节点ID和RMID对应的计数器值。
21.根据权利要求20所述的方法,此外包括:响应于确定了所述多个节点的总存储器带宽在比节点子集中的节点的任何按节点的存储器带宽更高的第二阈值量之上:
设置第一节点的节点追踪MSR内的所述多个位以追踪与节点子集不同的第二节点子集,其中所述第二节点子集也包括第一节点;
确定针对第二节点子集的按节点的存储器带宽;以及
响应于确定了第二节点子集中的第三节点的存储器带宽在比第一节点的存储器带宽更高的阈值量之上,将在第一节点上执行的线程迁移到第三节点。
CN201680088857.0A 2016-09-28 2016-09-28 测量非均匀存储器访问(numa)系统内按节点的带宽 Active CN110419030B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/100545 WO2018058363A1 (en) 2016-09-28 2016-09-28 Measuring per-node bandwidth within non-uniform memory access (numa) systems

Publications (2)

Publication Number Publication Date
CN110419030A true CN110419030A (zh) 2019-11-05
CN110419030B CN110419030B (zh) 2024-04-19

Family

ID=61763606

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680088857.0A Active CN110419030B (zh) 2016-09-28 2016-09-28 测量非均匀存储器访问(numa)系统内按节点的带宽

Country Status (4)

Country Link
US (1) US11093414B2 (zh)
EP (1) EP3519970A1 (zh)
CN (1) CN110419030B (zh)
WO (1) WO2018058363A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022002128A1 (zh) * 2020-06-30 2022-01-06 华为技术有限公司 一种读数据的方法、写数据的方法、设备和系统

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866899B2 (en) * 2017-10-02 2020-12-15 Arm Ltd Method and apparatus for control of a tiered memory system
US11526290B2 (en) * 2019-06-29 2022-12-13 Intel Corporation System and method to track physical address accesses by a CPU or device
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置
CN111262753B (zh) * 2020-01-13 2021-11-05 苏州浪潮智能科技有限公司 一种numa节点个数自动配置方法方法、系统、终端及存储介质
WO2021195825A1 (en) * 2020-03-30 2021-10-07 Intel Corporation Dynamic compression for multiprocessor platforms and interconnects
KR20230046592A (ko) * 2021-09-30 2023-04-06 한국전자통신연구원 엔디엔 콘텐츠 스토어의 콘텐츠 임시저장 방법 및 장치
US11928336B2 (en) * 2022-03-03 2024-03-12 Samsung Electronics Co., Ltd. Systems and methods for heterogeneous storage systems

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996035169A1 (en) * 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US20100217949A1 (en) * 2009-02-24 2010-08-26 International Business Machines Corporation Dynamic Logical Partition Management For NUMA Machines And Clusters
US20120254691A1 (en) * 2011-04-01 2012-10-04 Cleversafe, Inc. Adjusting a dispersal parameter of dispersedly stored data
US20140040526A1 (en) * 2012-07-31 2014-02-06 Bruce J. Chang Coherent data forwarding when link congestion occurs in a multi-node coherent system
US20140122801A1 (en) * 2012-10-29 2014-05-01 Advanced Micro Devices, Inc. Memory controller with inter-core interference detection
US20140181412A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Mechanisms to bound the presence of cache blocks with specific properties in caches
CN104050023A (zh) * 2013-03-14 2014-09-17 英特尔公司 用于实现事务存储器的系统和方法
CN104050043A (zh) * 2014-06-17 2014-09-17 华为技术有限公司 基于共享缓存感知的虚拟机调度方法和装置
US20140310504A1 (en) * 2013-04-11 2014-10-16 Vijaykumar B. Kadgi Systems and Methods for Flag Tracking in Move Elimination Operations
CN104239181A (zh) * 2013-06-24 2014-12-24 国际商业机器公司 累计用于电子系统的硬件计数的方法和电子系统
CN104657198A (zh) * 2015-01-24 2015-05-27 深圳职业技术学院 Numa架构系统在虚拟机环境中的访存优化方法及系统
CN105786665A (zh) * 2012-06-29 2016-07-20 英特尔公司 用于测试事务性执行状态的指令和逻辑

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860116A (en) 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
US6347362B1 (en) * 1998-12-29 2002-02-12 Intel Corporation Flexible event monitoring counters in multi-node processor systems and process of operating the same
CN102541460B (zh) * 2010-12-20 2014-10-08 中国移动通信集团公司 一种多磁盘场景下的磁盘管理方法和设备
US9684600B2 (en) 2011-11-30 2017-06-20 International Business Machines Corporation Dynamic process/object scoped memory affinity adjuster
US9292468B2 (en) * 2012-12-17 2016-03-22 Intel Corporation Performing frequency coordination in a multiprocessor system based on response timing optimization

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996035169A1 (en) * 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US20100217949A1 (en) * 2009-02-24 2010-08-26 International Business Machines Corporation Dynamic Logical Partition Management For NUMA Machines And Clusters
US20120254691A1 (en) * 2011-04-01 2012-10-04 Cleversafe, Inc. Adjusting a dispersal parameter of dispersedly stored data
CN105786665A (zh) * 2012-06-29 2016-07-20 英特尔公司 用于测试事务性执行状态的指令和逻辑
US20140040526A1 (en) * 2012-07-31 2014-02-06 Bruce J. Chang Coherent data forwarding when link congestion occurs in a multi-node coherent system
US20140122801A1 (en) * 2012-10-29 2014-05-01 Advanced Micro Devices, Inc. Memory controller with inter-core interference detection
US20140181412A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Mechanisms to bound the presence of cache blocks with specific properties in caches
CN104050023A (zh) * 2013-03-14 2014-09-17 英特尔公司 用于实现事务存储器的系统和方法
US20140310504A1 (en) * 2013-04-11 2014-10-16 Vijaykumar B. Kadgi Systems and Methods for Flag Tracking in Move Elimination Operations
CN104239181A (zh) * 2013-06-24 2014-12-24 国际商业机器公司 累计用于电子系统的硬件计数的方法和电子系统
CN104050043A (zh) * 2014-06-17 2014-09-17 华为技术有限公司 基于共享缓存感知的虚拟机调度方法和装置
CN104657198A (zh) * 2015-01-24 2015-05-27 深圳职业技术学院 Numa架构系统在虚拟机环境中的访存优化方法及系统

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
KIEFER,TIM等: "《ERIS Live:A NUMA-Aware In-Memory Storage Engine for Tera-Scale Multiprocessor Systems》", 《SIGMOD"14:PROCEEDINGS OF THE 2014 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》 *
KIEFER,TIM等: "《ERIS Live:A NUMA-Aware In-Memory Storage Engine for Tera-Scale Multiprocessor Systems》", 《SIGMOD"14:PROCEEDINGS OF THE 2014 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA》, 1 January 2014 (2014-01-01), pages 689 - 692 *
张明等: "面向众核处理器的独立调试系统设计方法", 《湖南大学学报(自然科学版)》 *
张明等: "面向众核处理器的独立调试系统设计方法", 《湖南大学学报(自然科学版)》, no. 04, 25 April 2015 (2015-04-25) *
苏文等: "面向云计算的多核处理器存储和网络子系统优化设计", 《高技术通讯》 *
苏文等: "面向云计算的多核处理器存储和网络子系统优化设计", 《高技术通讯》, no. 04, 15 April 2013 (2013-04-15) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022002128A1 (zh) * 2020-06-30 2022-01-06 华为技术有限公司 一种读数据的方法、写数据的方法、设备和系统

Also Published As

Publication number Publication date
EP3519970A1 (en) 2019-08-07
US20190205058A1 (en) 2019-07-04
WO2018058363A1 (en) 2018-04-05
US11093414B2 (en) 2021-08-17
CN110419030B (zh) 2024-04-19

Similar Documents

Publication Publication Date Title
CN104954356B (zh) 保护共享的互连以用于虚拟机
CN110419030A (zh) 测量非均匀存储器访问(numa)系统内按节点的带宽
CN106030518B (zh) 用于整理和退出存储的处理器、方法、系统和装置
CN108268386A (zh) 加速硬件中的存储器排序
CN108475193A (zh) 字节排序指令和四位组排序指令
CN108027732A (zh) 与断言的加载指令相关联的预取
CN108027766A (zh) 预取指令块
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
CN109844776B (zh) 具有片上学习和随机时间步长控制的可编程神经元核心
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
US20170286122A1 (en) Instruction, Circuits, and Logic for Graph Analytics Acceleration
CN105745630B (zh) 用于在集群宽执行机器中的存储器访问的指令和逻辑
CN109564552A (zh) 增强基于每页当前特权等级的存储器访问许可
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN108446763A (zh) 可变字长神经网络加速器电路
CN104995599A (zh) 使用硬件与软件组合的路径概况分析
CN108351835A (zh) 用于高速缓存控制操作的指令和逻辑
CN108334458A (zh) 存储器高效的末级高速缓存架构
CN108475192A (zh) 分散减少指令
TW201723817A (zh) 用於取得多重向量元素操作之指令及邏輯
CN108369517A (zh) 聚合分散指令
CN108475199A (zh) 用于执行密钥值查找指令的处理设备
CN106575284A (zh) 用于内核模块的多核存储器数据记录器
TW201729077A (zh) 用於設置多重向量元素操作之指令及邏輯
CN108351785A (zh) 用于部分减少操作的指令和逻辑

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
GR01 Patent grant
GR01 Patent grant