CN110402434B - 缓存未命中线程平衡 - Google Patents

缓存未命中线程平衡 Download PDF

Info

Publication number
CN110402434B
CN110402434B CN201880015792.6A CN201880015792A CN110402434B CN 110402434 B CN110402434 B CN 110402434B CN 201880015792 A CN201880015792 A CN 201880015792A CN 110402434 B CN110402434 B CN 110402434B
Authority
CN
China
Prior art keywords
thread
group
cache miss
cache
ntc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880015792.6A
Other languages
English (en)
Other versions
CN110402434A (zh
Inventor
G·W·亚历山大
S·桑
B·巴里克
A·萨珀里托
C·雅各比
A·蔡
T·W·福克斯
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN110402434A publication Critical patent/CN110402434A/zh
Application granted granted Critical
Publication of CN110402434B publication Critical patent/CN110402434B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

具有共享分派流水线的同时多线程(SMT)处理器包括检测缓存未命中线程的第一电路。第二电路确定发生所检测的缓存未命中的第一缓存层级。第三电路确定线程中的下一完成(NTC)组和线程中的多个附加组(X)。基于所检测的缓存未命中动态地配置附加组(X)。第四电路确定线程中的任何组是否比所确定的NTC组和多个附加组(X)更年轻,并从缓存未命中线程中清除所有确定的更年轻组。

Description

缓存未命中线程平衡
技术领域
本发明一般涉及改进的数据处理系统,更具体地,涉及在多线程数据处理系统中清除未决缓存未命中。
背景技术
传统的数据处理系统和微处理器系统结合同步多线程技术来改进计算资源的利用和计算机性能。这些数据处理系统可能在缓存层级(例如,L1、L2、L3、L4……LN)处经历缓存未命中。缓存未命中可使得与给定缓存未命中对应的线程饱和并过度消耗大部分计算资源。
发明内容
根据本发明的非限制性实施例,平衡缓存未命中线程的方法包括:检测缓存未命中线程的缓存未命中,并且确定发生所检测的缓存未命中的第一缓存层级。方法还包括确定缓存未命中线程中的下一完成(NTC)组和缓存未命中线程中的多个附加组(X)。基于所检测的缓存未命中动态地配置多个附加组(X)。方法还包括确定缓存未命中线程中的任何组是否比所确定的NTC组和多个附加组(X)更年轻,并且从缓存未命中线程中清除所有确定的更年轻的组。
根据另一非限制性的实施例,计算机程序产品执行缓存未命中线平衡。计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有与其一起实现的程序指令。程序指令可由电子计算机处理器执行以控制数据库处理系统以检测缓存未命中线程中的缓存未命中,并确定发生所检测的缓存未命中的缓存层级。电子计算机处理器还控制数据库处理系统以确定缓存未命中线程中的下一完成(NTC)组和缓存未命中线程中的多个附加组(X)。基于所检测的缓存未命中动态地配置多个附加组(X)。电子计算机处理器还控制数据库处理系统以确定线程中的任何组是否比所确定的NTC组和多个附加组(X)更年轻,并且从缓存未命中线程中清除所有确定的更年轻的组。
根据又一个非限制性的实施例中,具有共享分派流水线(shared dispatchpipeline)的同时多线程(SMT)处理器包括检测缓存未命中线程的第一电路。第二电路确定发生所检测的缓存未命中的第一缓存层级。第三电路确定线程中的下一完成(NTC)组和线程中的多个附加组(X)。基于所检测的缓存未命中动态地配置附加组(X)。第四电路确定线程中的任何组是否比所确定的NTC组和多个附加组(X)更年轻,并从缓存未命中线程中清除所有确定的更年轻的组。
根据又一个非限制性的实施方案中,在全局完成表上执行缓存未命中线平衡的方法包括检测经历未决缓存未命中第一线程的第一组,并且确定第一线程中的下一完成(NTC)组和第一线程中的多个附加组(X)。方法还包括从全局完成表中清除在第一线程中的NTC组之后分派的第一线程的至少一个组以及第一线程中的多个附加组(X),以便提供至少一个空的全局完成表条目字段。方法还包括在至少一个空的全局完成表条目字段中存储与第一线程不同的第二线程的新组。
另外的特征通过本发明的技术来实现。在此详细描述了其它实施例,并且这些实施例被认为是要求保护的发明的一部分。为了更好地理解具有这些特征的本发明,请参考说明书和附图。
附图说明
现在将仅通过示例的方式参考附图描述本发明的实施例,附图中:
图1是根据非限制性实施例的被配置为实现缓存未命中平衡系统的数据处理系统的框图;
图2是根据非限制性实施例的示出了能够实现缓存未命中平衡系统的功能单元和寄存器的多线程处理器设计的框图。
图3是根据非限制性实施例的用于控制线程优先级的示例性处理器流水线的框图;
图4是根据非限制性实施例的用于读取和写入线程切换控制寄存器(TSCR)的示例性组件的框图。
图5A、5B和5C示出了根据非限制性实施例的经历缓存未命中平衡操作的全局完成表;
图6A和6B示出了根据非限制性实施例的执行缓存未命中线程平衡的方法的流程图;以及
图7示出了根据非限制性实施例的搜索向量,其包括有效清除点(VFP)子向量和搜索范围(SR)子向量,以确认确定的NTC+X是否是有效清除点。
具体实施方式
缓存未命中线程平衡基于缓存未命中未决状态防止线程用尽共享资源。这增强了核中线程的平衡,从而通过同步多线程改进核的整体性能。目前,清除除了具有缓存未命中的最旧指令之外的整个线程。例如,保持具有缓存未命中未决的下一完成(NTC)组,同时完全清除任何更年轻的组。
计算机程序包括似乎顺序执行的指令序列。该顺序有时称为程序顺序。例如,如果[对象Y]对应于程序顺序在对应于[对象X]的指令之后发生的指令,则[对象Y]比[对象X]更年轻。因此,更年轻的组可以被称为在经历缓存未命中的NTC组和多个附加组的子集之后被分派的组。比NTC+X更年轻的组也可以被称为与在对应于NTC+X的指令之后以程序顺序发生的指令对应的组。这不仅丢弃在该线程上已经完成的工作,还基于来自内存的数据的到达,该线程可只完成一条指令。清除除最旧指令之外的所有内容是过度的,并且对具有缓存未命中未决的线程的性能产生负面影响。例如,在完全清除NTC和所有更年轻的组释放可以然后被其它线程使用的资源时,只有一个指令/组可用于完成。
与响应于未决的缓存未命中而清除NTC+1的传统系统不同,本公开的至少一个非限制性的实施例保持线程的“X”多个指令/组。也就是说,NTC与至少一个另外的组“X”一起被确定。然而,值“X”变化,并且每个“X”可以基于检测到的缓存未命中来配置。因此,先前为未决缓存未命中的线程分配的资源被释放,以便为其它线程腾出空间。一旦数据返回,该线程将至少具有“X”指令以完成,并且作为完成,该线程可以开始重新填充管道(pipe)。
现在参考图1,如本领域技术人员可以理解的,本发明的实施例可以被实现为系统、方法或计算机程序产品。因此,本发明的实施例可以采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,其通常均可在本文中被称为“电路”、“模块”或“系统”。此外,本发明的实施例可以采用体现在任何有形表达介质中的计算机程序产品的形式,该介质具有包含在介质中的计算机可用程序代码。
可以使用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可以是例如但不限于电、磁、光、电磁、红外或半导体系统、设备、装置或传播介质。计算机可读介质的更具体示例(非详尽列表)可包括以下:具有一个或多个线路的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CDROM)、光学存储装置、传输介质(诸如支持因特网或内联网的传输介质)或磁存储装置。注意,计算机可用或计算机可读介质甚至可以是纸张或打印程序的其它合适的介质,因为程序可以经由例如纸张或其它介质的光学扫描而被电子地采集,然后(如果需要的话)被编译、解译、或者此外以合适的方式处理,并且然后存储在计算机存储器中。在本文件的上下文中,计算机可用或计算机可读介质可以是可包含、存储、通信、传播或传输程序以供指令执行系统、设备或装置使用或与其结合使用的任何介质。计算机可用介质可以包括具有在其中实现的计算机可用程序代码的传播的数据信号,其在基带中或者作为载波的一部分。计算机可用程序代码可以使用任何适当的介质传输,包括但不限于无线、有线、光纤电缆、RF等。
用于实施本发明的实施例的操作的计算机程序代码可以采用一个或多个编程语言的任意组合编写,编程语言包括面向对象的编程语言,诸如Java、Smalltalk、C++等,以及传统过程编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以以以下方式执行:完全在用户的计算机上、部分在用户的计算机上、作为独立的软件包、部分在用户的计算机上且部分在远程计算机上、或完全在远程计算机或服务器上。在后一情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
下面参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图示和/或框图描述本发明的实施例。将理解,流程图示和/或框图的每个框以及流程图示和/或框图中的框的组合可以由计算机程序指令实现。
这些计算机程序指令可被提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生机器,使得指令(经由计算机或其它可编程数据处理设备的处理器执行)生成用于实现在流程图和/或框图块中指定的功能/动作的手段。这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指示计算机或其它可编程数据处理设备以特定方式操作,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图块中指定的功能/动作的指令手段的制品。
计算机程序指令可以被加载到计算机或其它可编程数据处理装置上以使一系列操作步骤将在计算机或其它可编程装置上被执行,以产生计算机实现的过程,使得计算机或其它可编程装置上执行的指令提供用于实现流程图和/或框图块中指定的功能/动作的过程。
图1描绘了根据本发明的说明性实施例的数据处理系统的示意图。在该说明性示例中,数据处理系统100包括通信结构102,通信结构102提供处理器单元104、存储器106、永久存储器108、通信单元110、输入/输出(I/O)单元112和显示器114之间的通信。
处理器单元104用于执行加载到存储器106的软件指令。处理器单元104可以是一个或多个处理器的组合,或者可以是多处理器核,这取决于具体的实施方式。此外,处理器单元104可以使用一个或多个异构处理器系统来实现,其中主处理器与二级处理器存在于单个芯片上。作为另一个说明性示例,处理器单元104可以是包含多个相同类型的处理器的对称多处理器系统。
存储器106和永久存储108是存储装置的示例。存储装置是能够临时和/或永久存储信息的任何硬件。在这些示例中,存储器106可以是例如随机存取存储器或任何其它合适的易失性或非易失性存储装置。永久存储108可以采取各种形式,这取决于特定实现方式。例如,永久存储108可以包含一个或多个组件或装置。例如,永久存储108可以是硬盘驱动器、闪存、可重写光盘、可重写磁带或上述的某种组合。永久存储108使用的介质也可以是可移动的。例如,可移动硬盘驱动器可以用于永久存储108。
通信单元110,在这些示例中,提供与其它数据处理系统或装置的通信。在这些示例中,通信单元110是网络接口卡。通信单元110可以通过使用物理和无线通信链路之一或两者来提供通信。
输入/输出单元112允许与可连接到数据处理系统100的其它装置进行数据的输入和输出。例如,输入/输出单元112可以提供通过键盘和鼠标的用户输入的连接。此外,输入/输出单元112可以将输出发送到打印机。显示器114提供向用户显示信息的机制。
用于操作系统以及应用或程序的指令位于永久存储108。这些指令可以被加载到存储器106以便由处理器单元104执行。不同实施例的过程可以由处理器单元104使用计算机实现的指令执行,指令可以位于存储器中,例如存储器106。这些指令被称为程序代码、计算机可用程序代码或计算机可读程序代码,其可以由处理器单元104中的处理器读取和执行。不同实施例中的代码可以体现在不同的物理或有形计算机可读介质上,例如存储器106或永久存储108。
程序代码116以功能形式位于可被选择性移除的计算机可读介质118中,并且可以被加载到或传送到数据处理系统100,用于由处理器单元104执行。在这些示例中,程序代码116和计算机可读介质118形成计算机程序产品120。在一个示例中,计算机可读介质118可以是有形形式,诸如,例如插入或放置在驱动器或其它装置(其是永久存储108的一部分)中的光盘或磁盘,用于传输到存储装置(诸如硬盘驱动器,其是永久存储108的一部分)上。在有形形式中,计算机可读介质118也可以采用连接到数据处理系统100的永久存储的形式,诸如硬盘驱动器、拇指驱动器或闪存。有形形式的计算机可读介质118也称为计算机可记录存储介质。在某些情况下,计算机可读介质118可能不是可移动的。
可替代地,程序代码116可通过到通信单元110的通信链路和/或通过到输入/输出单元112的连接从计算机可读介质118传输到数据处理系统100。在说明性示例中,通信链路和/或连接可以是物理的或无线的。计算机可读介质还可以采用非有形介质的形式,例如包含程序代码的通信链路或无线传输。
针对数据处理系统100示出的不同组件并不意味提供对其中可以实施不同实施例的方式的架构限制。不同的说明性实施例可以在包括作为针对数据处理系统100示出的组件的附加或替代的组件的数据处理系统中实现。图1中所示的其它组件可以与所示的说明性示例不同。
作为一个示例,数据处理系统100中的存储装置是可以存储数据的任何硬件设备。存储器106、永久存储108和计算机可读介质118是有形形式的存储装置的示例。
在另一示例中,总线系统可用于实现通信结构102并且可以包括一个或多个总线,例如系统总线或输入/输出总线。当然,总线系统可以使用提供在连接到总线系统的不同组件或装置之间的数据传输的任何合适类型的架构来实现。另外,通信单元可以包括用于发送和接收数据的一个或多个装置,例如调制解调器或网络适配器。此外,存储器可以例如是存储器106或诸如可在通信结构102中存在的接口和存储器控制器集线器中找到的缓存。
图2是示出用于实现示例性实施例的功能单元和寄存器的多线程处理器设计的框图。处理器210是图1中的处理器单元104的示例。在至少一个实施例中,处理器210是同时多线程(SMT)处理器210。根据非限制性实施例,SMT处理器210包括用于执行缓存未命中线程平衡的一个或多个电路。例如,第一电路可以检测包括停滞的(stalled)和/或消耗资源的目标线程的缓存未命中。第二电路可以确定发生缓存未命中的级别。第三电路可以确定线程中的下一完成(NTC)组,并基于检测到的缓存未命中动态地设置线程中的至少一个附加组(X)。第四电路可以基于NTC组和至少一个附加组(X)来清除包括在缓存未命中中的停滞和/或消耗资源的目标线程。下面更详细地讨论根据各种非限制性实施例的缓存未命中线程平衡。
在示例性实施例中,处理器210是单独的集成电路超标量微处理器。因此,如下文进一步讨论的,处理器210包括各种单元、寄存器、缓冲器、存储器和其它部分,所有这些部分由集成电路形成。另外,在示例性实施例中,处理器210根据精简指令集计算机(“RISC”)技术进行操作。如图2所示,系统总线211连接到处理器210的总线接口单元(“BIU”)212。BIU212控制处理器210和系统总线211之间的信息的传输。
BIU 212连接到处理器210的指令缓存214和数据缓存216。指令缓存214和数据缓存216通常可被实现为多个级别的缓存层级:L1、L2、L3、L4等。指令缓存214向定序器(sequencer)单元218输出指令。响应于来自指令缓存214的此类指令,定序器单元218选择性地将指令输出到处理器210的其它执行电路。转换后备缓冲器(TLB)是处理器的存储器中的表,其包含与处理器最近访问的存储器中的页面有关的信息。TLB可以用于将虚拟地址(从如由定序器单元218和加载/存储单元228生成的用户级程序代码中隐含的地址生成机制导出的)转换成实际或物理地址(其映射到针对给定应用程序而分配的实际存储器地址空间)。
除了定序器单元218之外,在示例性实施例中,处理器210的执行电路包括多个执行单元,即分支单元220、固定点单元A(“FXUA”)222、固定点单元B(“FXUB”)224、复合固定点单元(“CFXU”)226,加载/存储单元(“LSU”)228和浮点单元(“FPU”)230。FXUA 222、FXUB224、CFXU 226和LSU 228从通用架构寄存器(“GPR”)232和固定点重命名缓冲器234输入它们的源操作数信息。此外,FXUA 222和FXUB 224输入来自进位比特(“CA”)寄存器239的“进位比特”。FXUA 222、FXUB 224、CFXU 226和LSU 228输出其操作的结果(目的地操作数信息),用于在固定点重命名缓冲器234中的所选条目处存储。此外,CFXU 226从专用寄存器处理单元(“SPR单元”)237输入源操作数信息和目标操作数信息,以及输出源操作数信息和目标操作数信息到专用寄存器处理单元(“SPR单元”)237。
FPU 230从浮点架构寄存器(“FPR”)236和浮点重命名缓冲器238输入其源操作数信息。FPU 230输出其操作的结果(目的地操作数信息),用于在浮点重命名缓冲器238中选择的条目处进行存储。响应于加载指令,LSU 228从数据缓存216输入信息以及将该信息复制到所选择的重命名缓冲器234和238。如果该信息没有存储在数据缓存216中,则数据缓存216(通过BIU 212和系统总线211)输入来自连接到系统总线211的系统存储器260的该信息。此外,数据缓存216能够(通过BIU 212和系统总线211)输出来自数据缓存216的信息到被连接到系统总线211的系统存储器260。响应于存储指令,LSU 228输入来自GPR 232和FPR236中所选择的一个的信息,并将该信息复制到数据缓存216。
定序器单元218向GPR 232和FPR 236输入信息以及从GPR 232和FPR 236输出信息。从定序器单元218,分支单元220输入指示处理器210的当前状态的指令和信号。响应于该指令和信号,分支单元220输出(到定序器单元218)信号,该信号指示存储用于由处理器210执行的指令序列的合适的存储器地址。响应于来自分支单元220的该信号,定序器单元218使指令获取单元240从指令缓存214获取所指示的指令序列。如果指令序列中的一个或多个没有存储在指令缓存214中,则指令缓存214(通过BIU 212和系统总线211)从连接到系统总线211的系统存储器260输入该指令。在定序器单元218内嵌入(但是未示出)指令解码单元和指令分派单元。指令解码单元解码指令并将解码的指令传递到指令分派单元。指令分派单元针对每个线程选择性地对来自指令解码单元的解码指令进行分组,并为每个线程输出一组指令。
响应于从指令缓存214输入的指令,定序器单元218选择性地分派指令到执行单元220、222、224、226、228和230中的所选择的执行单元。每个执行单元执行特定指令类的一个或多个指令。例如,FXUA 222和FXUB 224对源操作数执行第一类固定点数学运算,例如加法、减法、和运算(ANDing)、或运算(ORing)以及异或运算(XOR)。CFXU 226对源操作数执行第二类固定点运算,诸如固定点乘法和除法。FPU 230对源操作数执行浮点运算,诸如浮点乘法和除法。
存储在固定点重命名缓冲器234中的信息与存储位置相关联(例如,GPR 232中的一个或进位位(CA)寄存器239),如由用于分配所选择的重命名缓冲器的指令中指定的。响应于来自定序器单元218的信号,存储在所选择的固定点重命名缓冲器234的信息被复制到其相关联的GPR 232(或CA寄存器239)。响应于“完成”生成信息的指令,定序器单元218指示在所选择的固定点重命名缓冲器234处存储的信息的该复制。该复制称为“回写”。
一旦在所选择的浮点重命名缓冲器238中存储信息,该信息与FPR 236中的一个相关联。响应于来自定序器单元218的信号,存储在所选择的浮点重命名缓冲器238中的信息被复制到其相关联的FPR 236。响应于“完成”生成信息的指令,定序器单元218指示存储在所选择的浮点重命名缓冲器238中的信息的该复制。
在定序器单元218中,完成缓冲器248跟踪多个指令(其在执行单元中被执行)的完成。在指示已成功完成指令或指令组后,在应用指定的连续顺序中,可以利用完成缓冲器248来启动将那些完成的指令的结果发送到相关联的通用寄存器。完成缓冲器248包括全局完成表(GCT),其包括保持跟踪处理器210内的有效(实时)指令的条目字段。
另外,处理器210包括中断单元250。中断单元250连接到指令缓存214。另外,虽然在图2中没有示出,中断单元250连接到处理器210内的其它功能单元,包括定序器单元218。中断单元250可以从其它功能单元接收信号并启动动作,例如启动错误处理或陷阱处理。在这些示例中,中断单元250生成在程序执行期间可能发生的中断和异常。中断单元250包括计时器252。
另外,处理器210包括JTAG端口254,其连接到外部服务元件,其未示出。锁存器包括处理器210的每个元件。JTAG端口254连接到包括处理器210的元件的所有锁存器。
图3是可以实现示例性实施例的用于控制线程的优先级的示例性处理器流水线的方框图。特别地,图3描绘了由单个超标量同时多线程(SMT)微处理器核(CPU)实现的处理器流水线的前端,例如,诸如IBM公司的p系列服务器系统(基于POWER5TM的系统及其它系统)中可用的那些。超标量SMT处理器的示例是图2中的处理器210。
处理器包括处理器流水线中的多个阶段。在典型的第一阶段,称为指令获取阶段,处理器从存储器或关联的存储器结构中取出指令,每个阶段包括一个或多个流水线。然后,在解码阶段,处理器将指令解码为不同的控制位,其通常指定功能单元的类型,用于执行由指令指定的操作,操作的源操作数和操作结果的目的地。在分派阶段,处理器将每个控制位的解码指令分派到具有执行阶段的单元,或者可能分派给中间保留站或发布队列,其最终发出指令到相关联的执行阶段(也称为“执行单元”)。执行阶段处理由指令指定的操作。执行由指令指定的操作包括接受一个或多个操作数以及产生一个或多个结果。完成阶段处理由并发执行引起的程序顺序问题,其中多个并发执行的指令可以将结果存入单寄存器。完成阶段还处理由于中断指令将结果存入其目的地寄存器之后的指令引起的恢复问题。该阶段有时也被称为回写阶段,因为此时指令执行的结果被写回指定的位置,例如寄存器。
在此说明性示例中,处理器前端流水线300包括共享指令缓存(ICACHE)302,其保持要被执行的多个程序(线程)的指令。处理器从系统存储器(例如图1中的存储器106)取得指令,并将指令存储在指令缓存302中。
在提取阶段期间,指令提取单元(IFU)304经由读ICache读端口(P1到PR 306)从指令缓存302提取需要的指令。指令提取单元304根据指令地址从指令缓存302请求指令,并且通常可以同时从指令缓存302请求多个线程的指令。指令提取单元304包括线程选择和优先级逻辑308,其将提取阶段优先级分配给由处理器执行的每个线程。线程选择和优先级逻辑308可以嵌入图2中的指令提取单元240内。分配高优先级的线程可以接收更多的解码单元,更多的分派周期和其它处理器资源,而更低优先级的线程被授予更少的资源。当为线程分配优先级时,指令提取单元流水线310(以优先级顺序)将线程提供给指令缓冲器(IBUF)312,以用于支持的线程。
在解码和分派阶段,指令解码和分派单元(IDU)314解码针对并发线程的指令。指令解码和分派单元314还具有相关的线程选择和优先级逻辑316,其控制分配给由处理器执行的每个线程的分派优先级。线程选择和优先级逻辑316可以嵌入图2中的定序器单元218中,或者线程选择和优先级逻辑316可以是连接到定序器单元218的独立单元。指令解码和分派单元314将优先级指令传递给共享分派缓冲器318。然后,指令解码和分派单元314适当地将指令从分派缓冲器318分派到图3所示系统中的后端执行单元(未示出)。
在图3所示的架构完全是用于说明和解释本发明的实施例的目的而提供,并且不意味着暗示任何架构限制。本领域技术人员将认识到许多变化是可能的。
图4是根据说明性实施例的用于读取和写入线程切换控制寄存器的示例性组件(诸如线程切换控制寄存器(TSCR)402)的框图。线程切换控制寄存器402包括可编程硬件寄存器。SMT数据处理系统中的每个执行线程都有自己的线程切换控制寄存器。线程切换控制寄存器402包括多个位(TSCR[0],TSCR[1]等),它们与多个线程优先级控制设置中的一者相关联。
多线程处理器使用与线程切换控制寄存器402中的位相关联的线程优先级控制设置,以控制指令流以及处理用于保护各种处理资源的执行线程之间的竞争。具体地,图3中的处理器流水线中的线程选择和优先级逻辑308和316使用从线程切换控制寄存器获得的优先级信息来确定和设置执行线程的优先级。构成线程切换控制寄存器402的确切位数是灵活的,并且每个位表示的位置语义也取决于特定实现。
在典型的SMT数据处理系统中,软件控制器(诸如超管理器404)是控制和更新线程切换控制寄存器的比特设置的唯一组件。超管理器404在线程切换控制寄存器402中提供默认线程优先级比特设置,并且还可以改变比特设置的启用。超管理器404以最大化SMT处理器的吞吐量性能同时保持执行线程之间的公平性的方式设置线程优先级比特。本发明的实施例实现了以下机制:经由超管理器404或硬件控制器408(其可驻留在芯片上或片外)允许线程切换控制寄存器(TSCR)比特设置能力的共享控制。超管理器404读取线程切换控制寄存器402中存在的比特设置,并将更新的比特设置提供给多路复用器406。然后,多路复用器406可以根据由超管理器404提供的设置来更新线程切换控制寄存器402中的比特设置。
在示例性实施例中,提供片上/片外(on/off-chip)硬件控制器408以动态改变线程切换控制寄存器402中比特的启用,从而覆盖(override)由超管理器404设定的默认线程优先级比特设置。硬件控制器408读取线程切换控制寄存器402中的比特设置,并将更新的比特设置提供给多路复用器406。多路复用器406然后根据由硬件控制器408提供的设置更新线程切换控制寄存器402中的比特设置。硬件控制器408提供的硬件超控信号410允许多路复用器406通过超管理器404提供的默认命令从硬件控制器408中选择更新命令。硬件控制器408最终也在系统软件控制下(链接未示出),并且通常,最终超控控制由通过像超管理器和操作系统的实体表示的(层级)系统软件执行。响应于给定处理器芯片的系统指定的功率目标,硬件控制器408可以识别改变默认/先前TSCR设置的需要,以便调整每个处理器核内的功率级别。例如,硬件控制器408可以识别为给定(多个)处理器核(组)调用预先指定的“低功率”模式的需要。该识别可以使硬件控制器408设置硬件超控信号410,以便为多路复用器406提供从硬件控制器408而不是从超管理器404表示的默认源中选择更新的TSCR设置指令的能力。
与超管理器404相比,硬件控制器408动态地控制在线程切换控制寄存器402的线程优先级设置,以控制系统的功率消耗。例如,如已经陈述的,如果期望较低功率模式,硬件控制器408适当地更新优先级比特设置以产生低功耗。规定的低功率模式级别(例如,低、中或高)由硬件控制器408自主推断的(响应于当前监测的功率级别以及其与系统级指令指定的功率目标的关系),或者由系统级控制直接通信的。是否调用线程优先级控制钮(snob)以及新的TSCR设置应该是什么以产生期望的功率降低,是控制器中包含的逻辑的一部分(通过硬件或通过控制器上运行的编程软件/固件实现的))的决定。通过改变优先级比特设置以提高功率性能效率,多线程处理器的吞吐量性能可能降低,并且执行线程之间的公平性可能降低。然而,在许多情况下,改变优先级比特设置以实现期望的功耗模式可能导致提高的功率效率和增加的净吞吐量性能,因为禁用某种类型的清除可能允许更高性能的线程采集大部分资源。因此,改变优先级比特设置以实现期望的功耗模式可能以损害公平性标准为代价来提高吞吐量性能。
TSCR比特定义在TSCR表中进行组织。在至少一个实施例中,图4中的线程切换控制寄存器402的2比特字段<gctdec:2>定义全局完成表(GCT)解码优先级控制。全局完成表是包括一个或多个条目字段的硬件实体,条目字段保持跟踪在微处理器内从解码/分派到完成的有效(实时)指令。物理上,全局完成表可以实现为图2中指示的完成缓冲器248的功能的一部分。全局完成表解码优先级控制指定用于基于由线程使用多少全局完成表条目,来改变线程的优先级的阈值级别。当执行的所有线程具有相同的软件设置优先级时,如果线程使用超过指定数量的全局完成表条目,则图3中的处理器流水线中的线程选择和优先级逻辑308和316将降低线程的优先级。例如,如果线程切换控制寄存器中的<gctdec:2>设置为“10”,则根据GCT内的条目的数量,如果使用线程多于可编程阈值,则线程的优先级将降低。如果线程切换控制寄存器中的<gctdec:2>设置为“00”,则禁用全局完成表解码优先级控制,并且不执行任何操作。该2比特字段<gctdec:2>也用于权衡功率和性能。
在图4中线程切换控制寄存器402的1比特字段<bf:1>可以定义缓存未命中平衡清除的启用/禁用设定。缓存未命中平衡清除是线程控制机制,其从系统中选择性地清除停滞的和/或消耗资源的目标线程(也称为待处理缓存未命中),以恢复资源使用公平性或平衡。缓存未命中平衡清除操作对NTC+X执行清除,其中“X”是可配置的并且基于发生缓存未命中的缓存层级(L1、L2、L3、L4、...Ln)是不同的。可以使用线程切换控制寄存器中的比特字段来启用或禁用缓存未命中平衡清除。
例如,在图4中线程切换控制寄存器402的2比特字段<gctbf-a:2>可以定义全局完成表缓存未命中平衡清除阈值控制,用于L3缓存和TLB未命中。当L3缓存或TLB不包含具有期望标记的数据时,发生L3缓存或TLB未命中。如果线程由于L3或TLB未命中而在分派时停止,则线程可以被缓存未命中平衡清除。例如,如果线程切换控制寄存器中的比特对<gctbf-a:2>设置为“01”,则如果线程至少使用全局完成表条目的可编程的最小数量,则将对线程执行缓存未命中平衡清除。如果比特对<gctbf-a:2>设置为“10”或“11”,则如果线程根据全局完成表条目的数量而使用其它不同的可编程阈值,则微处理器对线程执行缓存未命中平衡清除。将线程切换控制寄存器中的<gctbf-a:2>字段设置为“00”将禁用缓存未命中平衡清除阈值控制。
在图4中线程切换控制寄存器402的2比特字段<gctbf-b:2>510定义全局完成表缓存未命中平衡清除阈值控制,没有L3缓存和TLB未命中。没有L3缓存或TLB未命中的线程可以基于比特对<gctbf-b:2>而被缓存未命中平衡清除。如前所述,取决于所使用的GCT条目的数量中的可编程的预定义阈值,给定线程可被缓存未命中平衡清除。将<gctbf-:2>字段设置为“00”将禁用缓存未命中平衡清除阈值控制。
在图4中线程切换控制寄存器402的2位字段<bfmc:2>512定义全局完成表缓存未命中平衡清除计数器阈值控制。如果线程在分派时停止并且具有L3缓存或未完成的TLB未命中,则如果缓存未命中平衡清除未命中周期计数器小于特定数量的周期,则线程仅被考虑用于缓存未命中平衡清除。<bfmc:2>中的2比特编码(例如“01”、“10”或“11”)指定缓存未命中平衡清除周期计数器值中的可编程阈值,以触发此类缓存未命中平衡清除。将<bfmc:2>字段设置为编码模式(例如,“00”)中的一者将禁用缓存未命中平衡清除计数器阈值控制机制。
转到图5A-5C,根据非限制性实施例示出了经历缓存未命中平衡操作的全局完成表500。参考图5A,示出了全局完成表500,其具有8个条目502a-502h,例如,在第一周期(周期0)期间。8个条目包括6个第一线程条目502a(Th0_group0)、502b(Th0_group1)、502c(Th0_group2)、502d(Th0_group3)、502g(Th0_group4)和502h(Th0_group5),以及2个第二线程条目502e(Th1_group0)和502f(Th1_group1)。在第一周期(例如,周期0)期间,完成第一线程条目502a(例如,Th0_group0)的下一个正经历由实体块轮廓指示的待处理缓存未命中,而第二线程条目502e中的一个(例如,Th1_group0))如虚线框轮廓所示的完成。
转到图5B,示出第二周期(例如,周期1)期间全局完成表500。由于在周期0中完成,已释放502e(Th1_Group0)的资源。在该第二周期期间,第一线程条目502a(例如,Th0_group0)仍然经历未决的缓存未命中。但是,执行NTC+X清除,其中“X”例如设置为2。因此,条目502d(Th0 Group3),502g(Th0_group4)和502h(Th0_group5)被清除,因此第二周期期间在表500中未示出。因此,先前分配给502d(Th0_group3)、502g(Th0_group4)和502h(Th0_group5)的资源现在对于托管新分派的条目是开放的。
随着NTC+X清除,另一第二线程条目完成,例如,502F(Th1_group1),并且由虚线框轮廓所示新的第二线程条目502i(例如,Th1_group2)被分派。然而,由于第一线程条目502a(例如,Th0_group0)仍然经历未决的缓存未命中,因此阻止了新的第一线程条目(Th0_groupN)的分派。
转到图5C,示出第三周期(例如,周期2)期间的全局完成表500。在该下一周期期间,第一线程条目502a(例如,Th0_group0)仍然经历未决的缓存未命中。因此,再次阻止分配新的第一线程(Th0_groupN)。然而,如虚线框轮廓所示,分派另一新的第二线程502j(例如,Th1_group3)。502f(Th1_Group1)的资源由于其在周期1中的完成而被释放。因此,尽管第一线程(即,Th0)经历了未决的缓存未命中,但第二线程(即,Th1)可以继续进行。
现在参考图6A和6B,流程图示出了根据非限制性实施例的执行缓存未命中线程平衡的方法。方法在操作600开始,并且在操作602,检测到缓存未命中,并确定发生缓存未命中的层级。在操作604,基于发生缓存未命中的层级来确定数据时延。在操作606,基于数据时延确定NTC+X。在至少一个实施例中,基于缓存未命中的层级将存在不同的时延。例如,层级1(L1)缓存未命中的时延小于层级2(L2)缓存未命中的时延,L2缓存未命中的时延小于层级3(L3)缓存未命中的时延,并且L3缓存未命中的时延小于层级4(L4)缓存未命中的时延。因此,NTC+X的“X”基于缓存未命中的层级而变化或是可配置的。例如,对应于L2缓存未命中的“X”大于对应于L3缓存未命中的“X”,而对应于L3缓存未命中的“X”大于对应于L4缓存未命中的“X”。
转到操作608,确定当前确定的NTC+X是否为有效的清除点。例如,在指令的中间不执行清除操作。因此,在当前确定的NTC+X不是有效的清除点时,执行更年轻的条目的搜索以找到有效的清除点。在操作610,NTC+X递增。在操作612,确定在递增NTC+X之后是否存在任何有效的清除点。例如,如果当前确定的NTC+X在指令边界处不存在,则递增当前清除点,直到找到有效的NTC+X。当在操作612不存在有效的清除点时,在操作614处不执行清除操作,并且方法前进到操作616,其中阻止线程(例如,下一线程)的分派。然而,当在操作612存在一个或多个有效清除点时,方法返回到操作608以确认递增的NTC+X是有效的清除点。
参照回操作608,当NTC+X是有效的清除点时,方法前进到操作618,并且NTC+X被清除。NTC+X清除可防止具有未决缓存未命中的线程饱和过度消耗计算资源。在至少一个实施例中,在清除NTC+X之后,阻止对应的线程的数据分派,直到(i)加载存储单元指示未决的缓存未命中不再存在,(ii)来自对应的线程的组完成发生,或(iii)重新启动对应的线程。在操作620,确定是否存在比清除的NTC+X更年轻的组。当不存在更年轻的组时,方法在操作616结束。在至少一个实施例中,当数据返回时,线程将具有准备完成的“X”组。
然而,当一个或多个更年轻的组存在时,在操作622比被清除的NTC+X更年轻的所有的组也被清除,并且方法在操作616阻止对线程(例如,下一线程)的分派。
转到操作650,确定是否数据正在返回同时线程分派被阻止。当返回数据时,在操作652允许分派线程(例如,下一线程),并且方法在操作654结束。然而,当在操作650没有返回数据时,方法进行到操作651以确定是否缓存未命中处于更高的缓存层级。当确定缓存未命中不在更高的缓存层级时,方法返回到操作650并继续分析是否返回数据。然而,当确定缓存未命中处于更高层级时,方法返回到操作604并基于缓存层级确定数据时延(例如,检测到缓存未命中的下一最高缓存层级)。因为由于更高的缓存层级可以在操作604确定新的数据时延,所以可以修改NTC+X,这是因为与NTC组相关联的附加组(X)是基于根据存在未决缓存未命中的缓存层级而变化的数据时延的。然后可以使用更新的NTC+X重复以上描述的方法。
在至少一个实施例中,缓存未命中平衡操作可以在执行缓存未命中平衡清除之前,执行有效的清除点分析。参考图7,生成搜索矢量700,其包括有效清除点(VFP)子矢量和搜索范围(SR)子矢量。搜索矢量700包括64个标签702_0-702_63。例如,搜索矢量700被分成八个单独的范围704a-704h。因此,每个单独的范围包括八个标签。可以使用最高有效位策略(即,3个最高有效位)来识别八个范围。
然后可以执行分析以确定清除点是否在任意范围704A-704h中存在。在至少一个实施例中,要被选择作为有效清除点的第一范围是基于清除请求标签的。也就是说,清除请求标签所在的范围指示根据这里描述的缓存未命中平衡清除操作要清除的第一范围。在至少一个实施例中,可以通过移位(即,递增)起始搜索范围来选择后续范围用于清除。例如,通过右旋将search_start_range(搜索_开始_范围)移动1来选择用于清除的第二范围,通过右旋将search_start_range移位2来选择用于清除的第三范围等。在至少一个实施例中,分析识别最老的有效的清除组,并选择已识别的最老的有效清除组以执行缓存未命中平衡清除。
有效的清除点矢量可用于搜索有效的NTC+X清除点。有效的清除点矢量包含要被搜索的每个组号的有效清除比特。有效清除比特设置为1('1')以指示对应的组编号表示有效的清除点。从对应于基于时延的NTC+X清除点的组编号开始,对有效清除比特矢量执行查找第一个操作(find first one operation)。如果通过查找第一个操作找到一个位置,则一个位置对应于正确的有效NTC+X清除点。如果查找第一个操作没有找到'1',则未找到有效的清除点。执行查找第一个操作的电路和算法是公知的,因此省略了它们的实现细节。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
如本文所使用的,术语“模块”指的是执行一个或多个软件或固件程序的专用集成电路(ASIC),电子电路,电子计算机的处理器(共享,专用或组)和存储器,组合逻辑电路和/或提供所描述的功能的其它合适的组件。当在软件中实现时,模块可以在存储器中体现为非暂时性机器可读存储介质,其可由处理电路读取并存储用于由处理电路执行以执行方法的指令。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (28)

1.一种平衡缓存未命中线程的方法,所述方法包括:
检测所述缓存未命中线程的缓存未命中;
确定发生所检测的缓存未命中的第一缓存层级;
当前确定所述缓存未命中线程中的下一完成NTC组和所述缓存未命中线程中的多个附加组,所述多个附加组基于所检测的缓存未命中而被动态配置;以及
确定所述缓存未命中线程中的任何组是否存在比所确定的NTC组和所述多个附加组更年轻的组,并且从所述缓存未命中线程中清除所有确定的更年轻的组,所述更年轻的组被称为在经历缓存未命中的NTC组和多个附加组的子集之后被分派的组。
2.根据权利要求1所述的方法,其中,所述多个附加组是基于数据时延的。
3.根据权利要求2所述的方法,其中,所述数据时延是基于发生所检测的缓存未命中的所述第一缓存层级的。
4.根据权利要求1所述的方法,还包括:
识别高于所述第一缓存层级的第二缓存层级;
确定所检测的缓存未命中来自所述第二缓存层级;
基于所述第二缓存层级确定所述NTC组和所述多个附加组的子集;以及
在所述缓存未命中线程中清除比NTC组和所述多个附加组的所述子集更年轻的至少一个附加的清除组。
5.根据权利要求1所述的方法,其中,所述清除发生在检测到有效清除点之后。
6.根据权利要求5所述的方法,其中,在确定所述更年轻的组之前,检测所述有效清除点包括:
确定所述NTC组和所述多个附加组是否构成有效清除点;以及
响应于确定所述NTC组和所述多个附加组定义无效清除点,搜索定义所述多个附加组的更大值。
7.根据权利要求1所述的方法,能够操作以在全局完成表上执行缓存未命中线程平衡,其中,检测缓存未命中线程的步骤包括检测经历未决缓存未命中的第一线程的第一组,其中,当前确定所述缓存未命中线程中的下一完成NTC组和多个附加组包括当前确定所述第一线程中的下一完成NTC组和所述第一线程中的多个附加组,并且其中,从所述缓存未命中线程清除全部确定的更年轻组包括从所述全局完成表中清除在所述第一线程中的所述NTC组和所述第一线程中的所述多个附加组之后分派的所述第一线程的至少一组以便提供至少一个空的全局完成表条目字段,并且其中,所述方法还包括在所述至少一个空的全局完成表条目字段中存储与所述第一线程不同的第二线程的新组。
8.根据权利要求7所述的方法,其中,在所述第一线程的所述第一组经历所述未决缓存未命中时,分派所述第二线程的所述新组。
9.根据权利要求8所述的方法,其中,在所述第一线程的所述第一组经历所述未决缓存未命中时,所述全局完成表中列出的所述新组完成执行。
10.根据权利要求9所述的方法,其中,当所述第一线程的所述第一组经历所述未决缓存未命中时,阻止分派所述第一组的新组。
11.根据权利要求10所述的方法,其中,与所述NTC组相关联的所述多个附加组是基于数据时延的,所述数据时延根据存在所述未决缓存未命中的缓存层级而变化,所述数据时延被定义为数据从所述缓存层级返回所需的时间量。
12.一种用于执行缓存未命中线程平衡的计算机可读存储介质,所述计算机可读存储介质具有与其一起实现的程序指令,所述程序指令可由电子计算机处理器执行以控制数库处理系统执行:
检测所述缓存未命中线程的缓存未命中;
确定发生所检测的缓存未命中的缓存层级;
当前确定所述缓存未命中线程中的下一完成NTC组和所述缓存未命中线程中的多个附加组,所述多个附加组基于所检测的缓存未命中而被动态配置;以及
确定所述线程中的任何组是否存在比所确定的NTC组和所述多个附加组更年轻的组,并且从所述缓存未命中线程中清除所有确定的更年轻的组,所述更年轻的组被称为在经历缓存未命中的NTC组和多个附加组的子集之后被分派的组。
13.根据权利要求12所述的计算机可读存储介质,其中,所述多个附加组是基于数据时延的。
14.根据权利要求13所述的计算机可读存储介质,其中,所述数据时延是基于发生所检测的缓存未命中的所述缓存层级的。
15.根据权利要求12所述的计算机可读存储介质,还包括:
识别高于第一缓存层级的第二缓存层级;
确定所检测的缓存未命中来自所述第二缓存层级;
基于所述第二缓存层级确定所述NTC组和所述多个附加组的子集;以及
在所述缓存未命中线程中清除比NTC组和所述多个附加组的所述子集更年轻的至少一个附加的清除组。
16.根据权利要求12所述的计算机可读存储介质,其中,所述清除发生在检测到有效清除点之后,并且其中,在确定所述更年轻的组之前,检测所述有效清除点包括:
确定所述NTC组和所述多个附加组是否构成有效清除点;以及
响应于确定所述NTC组和所述多个附加组定义无效清除点,搜索定义所述多个附加组的更大值。
17.根据权利要求16所述的计算机可读存储介质,还包括:
响应于确定所述无效清除点,递增所述NTC组和所述多个附加组,直到找到有效清除点;以及
响应于检测到递增的NTC组和多个附加组是有效清除点,基于递增的NTC组和多个附加组,从包括在所述缓存未命中中的所述缓存未命中线程中清除所有确定的更年轻的组。
18.一种具有共享分派流水线的同时多线程SMT处理器,包括:
第一电路,其检测缓存未命中线程;
第二电路,其确定发生所检测的缓存未命中的第一缓存层级;
第三电路,其当前确定所述线程中的下一完成NTC组和所述线程中的多个附加组,所述多个附加组基于所检测的缓存未命中而被动态配置;以及
第四电路,其确定所述线程中的任何组是否存在比所确定的NTC组和所述多个附加组更年轻的组,并且从所述缓存未命中线程中清除所有确定的更年轻的组,所述更年轻的组被称为在经历缓存未命中的NTC组和多个附加组的子集之后被分派的组。
19.根据权利要求18所述的SMT处理器,其中,所述多个附加组的大小是基于数据时延的。
20.根据权利要求19所述的SMT处理器,其中,所述数据时延是基于发生所检测的缓存未命中的第一缓存层级的。
21.根据权利要求20所述的SMT处理器,其中,所述第二电路识别高于所述第一缓存层级的第二缓存层级,并且其中,所述SMT处理器还包括:
第五电路,其确定所检测的缓存未命中来自所述第二缓存层级;
第六电路,其基于所述第二缓存层级识别所述NTC组和所述多个附加组的子集,
其中,所述第四电路清除所述缓存未命中线程中比所述NTC组和所述多个附加组的所述子集更年轻的至少一个附加的清除组,以及
其中,所述第二缓存层级是基于确定所述NTC组已经等待指示数据将从所述第二缓存层级返回的更长时间。
22.根据权利要求18所述的SMT处理器,其中,所述第四电路确定所述NTC组和所述多个附加组是否构成有效清除点。
23.根据权利要求22所述的SMT处理器,其中,基于所述NTC组和所述至少一个附加组的有效性,所述第四电路或者响应于检测到所述有效清除点,基于所述NTC组和所述多个附加组而清除在所述缓存未命中包括的停顿和/或消耗资源的目标线程,或者在所述NTC组和所述多个附加组是无效清除点时阻止清除。
24.一种在全局完成表上执行缓存未命中线程平衡的方法,所述方法包括:
检测经历未决缓存未命中的第一线程的第一组;
当前确定所述第一线程中的下一完成NTC组和所述第一线程中的多个附加组;
从所述全局完成表中清除在所述第一线程中的所述NTC组和所述第一线程中的所述多个附加组之后分派的所述第一线程的至少一个组,以便提供至少一个空的全局完成表条目字段;以及
在所述至少一个空的全局完成表条目字段中存储与所述第一线程不同的第二线程的新组。
25.根据权利要求24所述的方法,其中,在所述第一线程的所述第一组经历所述未决缓存未命中时,分派所述第二线程的所述新组。
26.根据权利要求25所述的方法,其中,在所述第一线程的所述第一组经历所述未决缓存未命中时,在所述全局完成表中列出的所述新组完成执行。
27.根据权利要求26所述的方法,其中,当所述第一线程的所述第一组经历所述未决缓存未命中时,阻止分派所述第一组的新组。
28.根据权利要求27所述的方法,其中,与所述NTC组相关联的所述多个附加组是基于数据时延的,所述数据时延根据存在所述未决缓存未命中的缓存层级而变化,所述数据时延被定义为数据从所述缓存层级返回所需的时间量。
CN201880015792.6A 2017-03-07 2018-02-27 缓存未命中线程平衡 Active CN110402434B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/451,858 2017-03-07
US15/451,858 US10353817B2 (en) 2017-03-07 2017-03-07 Cache miss thread balancing
PCT/IB2018/051213 WO2018163014A1 (en) 2017-03-07 2018-02-27 Cache miss thread balancing

Publications (2)

Publication Number Publication Date
CN110402434A CN110402434A (zh) 2019-11-01
CN110402434B true CN110402434B (zh) 2023-02-24

Family

ID=63445371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880015792.6A Active CN110402434B (zh) 2017-03-07 2018-02-27 缓存未命中线程平衡

Country Status (6)

Country Link
US (2) US10353817B2 (zh)
JP (1) JP7046087B2 (zh)
CN (1) CN110402434B (zh)
DE (1) DE112018001206T5 (zh)
GB (1) GB2574171B (zh)
WO (1) WO2018163014A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
US11520591B2 (en) * 2020-03-27 2022-12-06 International Business Machines Corporation Flushing of instructions based upon a finish ratio and/or moving a flush point in a processor
US20240111684A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Multi-level starvation widget

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06180670A (ja) * 1992-12-14 1994-06-28 Hitachi Ltd キャッシュ記憶装置
US5566324A (en) * 1992-12-24 1996-10-15 Ncr Corporation Computer apparatus including a main memory prefetch cache and method of operation thereof
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US7469407B2 (en) 2003-04-24 2008-12-23 International Business Machines Corporation Method for resource balancing using dispatch flush in a simultaneous multithread processor
US7853777B2 (en) 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US20070113055A1 (en) * 2005-11-15 2007-05-17 Dale Jason N Apparatus and method for improving single thread performance through speculative processing
WO2008029450A1 (fr) * 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
US8261276B2 (en) * 2008-03-31 2012-09-04 International Business Machines Corporation Power-efficient thread priority enablement
JP4759026B2 (ja) * 2008-07-15 2011-08-31 公立大学法人広島市立大学 プロセッサ
US9529594B2 (en) 2010-11-30 2016-12-27 Oracle International Corporation Miss buffer for a multi-threaded processor
US10554505B2 (en) 2012-09-28 2020-02-04 Intel Corporation Managing data center resources to achieve a quality of service
US9021207B2 (en) 2012-12-20 2015-04-28 Advanced Micro Devices, Inc. Management of cache size
US9823931B2 (en) * 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US10073784B2 (en) 2014-06-27 2018-09-11 International Business Machines Corporation Memory performance when speculation control is enabled, and instruction therefor
US10007525B2 (en) * 2014-10-24 2018-06-26 International Business Machines Corporation Freelist based global completion table having both thread-specific and global completion table identifiers
GB2538985B (en) 2015-06-02 2017-09-06 Advanced Risc Mach Ltd Flushing control within a multi-threaded processor
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing

Also Published As

Publication number Publication date
DE112018001206T5 (de) 2019-12-05
JP2020510255A (ja) 2020-04-02
GB2574171A8 (en) 2019-12-04
GB201914312D0 (en) 2019-11-20
GB2574171B (en) 2020-04-22
GB2574171A (en) 2019-11-27
US20180260326A1 (en) 2018-09-13
US20190227932A1 (en) 2019-07-25
JP7046087B2 (ja) 2022-04-01
US10963380B2 (en) 2021-03-30
WO2018163014A1 (en) 2018-09-13
CN110402434A (zh) 2019-11-01
US10353817B2 (en) 2019-07-16

Similar Documents

Publication Publication Date Title
JP5894120B2 (ja) ゼロサイクルロード
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
US7877580B2 (en) Branch lookahead prefetch for microprocessors
US7870369B1 (en) Abort prioritization in a trace-based processor
US9489207B2 (en) Processor and method for partially flushing a dispatched instruction group including a mispredicted branch
US8261276B2 (en) Power-efficient thread priority enablement
US9690625B2 (en) System and method for out-of-order resource allocation and deallocation in a threaded machine
JP5866259B2 (ja) 誤予測された分岐のためにフラッシュするセグメント化パイプライン
US7093106B2 (en) Register rename array with individual thread bits set upon allocation and cleared upon instruction completion
US20080109640A1 (en) Method For Changing A Thread Priority In A Simultaneous Multithread Processor
US9135005B2 (en) History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US7711934B2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
JP2008530713A (ja) 分岐予測ミスを訂正するシステムおよび方法
US7194603B2 (en) SMT flush arbitration
US10963380B2 (en) Cache miss thread balancing
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
US10430342B2 (en) Optimizing thread selection at fetch, select, and commit stages of processor core pipeline
US11620235B1 (en) Validation of store coherence relative to page translation invalidation
US10599431B2 (en) Managing backend resources via frontend steering or stalls
US7783863B1 (en) Graceful degradation in a trace-based processor
CN115858022A (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