CN105683922A - 实现监视对地址的写入的指令的可扩展机制 - Google Patents

实现监视对地址的写入的指令的可扩展机制 Download PDF

Info

Publication number
CN105683922A
CN105683922A CN201480047555.XA CN201480047555A CN105683922A CN 105683922 A CN105683922 A CN 105683922A CN 201480047555 A CN201480047555 A CN 201480047555A CN 105683922 A CN105683922 A CN 105683922A
Authority
CN
China
Prior art keywords
address
processor
core
monitor
storage position
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
CN201480047555.XA
Other languages
English (en)
Other versions
CN105683922B (zh
Inventor
Y-C.刘
B.法希姆
E.G.霍尔诺尔
J.D.张伯伦
S.R.范多伦
A.胡安
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
Priority claimed from PCT/US2014/059130 external-priority patent/WO2015048826A1/en
Publication of CN105683922A publication Critical patent/CN105683922A/zh
Application granted granted Critical
Publication of CN105683922B publication Critical patent/CN105683922B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

处理器包括对应于分布式高速缓存的第一高速缓存部分的高速缓存侧地址监视单元,高速缓存侧地址监视单元具有总数少于处理器的逻辑处理器的总数的高速缓存侧地址监视存储位置。每个高速缓存侧地址监视存储位置将存储要监视的地址。核侧地址监视单元对应于第一核,并且具有与第一核的逻辑处理器的数量相同数量的核侧地址监视存储位置。每个核侧地址监视存储位置将存储一个地址和用于第一核的不同对应逻辑处理器的监视状态。高速缓存侧地址监视存储溢出单元对应于第一高速缓存部分,并且在无未使用的高速缓存侧地址监视存储位置可用于存储要监视的额外地址时,强制实行地址监视存储溢出策略。

Description

实现监视对地址的写入的指令的可扩展机制
技术领域
本文中所述实施例涉及处理器。具体而言,本文中所述实施例一般涉及可操作用于执行监视对地址的写入的指令的处理器。
背景技术
半导体加工和逻辑设计的发展允许增加可在处理器和其它集成电路装置中包括的逻辑量。因此,许多处理器现有具有在单个集成电路或晶片上单一集成的多个核。多个核通常有助于允许同时执行多个软件线程或其它工作量,这通常有助于增大执行吞吐量。
此类多核处理器中的一个难题是经常对用于缓存来自存储器的数据和/或指令的高速缓存提出更大的需求。一方面,存在的趋势是对更高互连带宽以访问此类高速缓存中数据的需求在不断增加。帮助增大到高速缓存的互连带宽的一个技术涉及使用分布式高速缓存。分布式高速缓存可包括多个物理上单独或分布式的高速缓存切片或其它高速缓存部分。此类分布式高速缓存可允许通过共享互连对高速缓存的不同分布式部分的平行接入。
此类多核处理器中的另一难题是相对于共享存储器提供线程同步的能力。操作系统共同实现闲置环路以相对于共享存储器处理线程同步。例如,可存在使用存储器位置集的几个忙环路。第一线程可在环路中等待,并且轮询对应存储器位置。例如,存储器位置可表示第一线程的工作队列,并且第一线程可轮询工作队列以确定是否有工作可供执行。在共享存储器配置中,经常由于与存储器位置相关联的状态更改而发生从忙环路退出。这些状态更改通常由另一组件(例如,另一线程或核)写入存储器位置触发。例如,另一线程或核可写入在存储器位置的工作队列以提供要由第一线程执行的工作。
某些处理器(例如,加利福尼亚州圣克拉拉的Intel Corporation提供的那些处理器)能够使用MONITOR和MWAIT指令实现相对于共享存储器的线程同步。硬件线程或其它逻辑处理器可使用MONITOR指令设置要由监视单元监视的线性地址范围,并且防护(arm)或激活监视单元。地址可通过通用寄存器提供。地址范围一般属于回写缓存类型。监视单元将监视和检测将触发监视单元的对地址范围内地址的存储/定入。
MWAIT指令可在程序顺序中跟在MONITOR指令后,并且可充当允许硬件线程或其它逻辑处理器停止指令执行,并且进入实现相关状态的提示。例如,逻辑处理器可进入降低功耗状态。逻辑处理器可保留在该状态,直于检测到与MONITOR指令相关联的限定事件(qualifying event)集的一个事件。对由前面的MONITOR指令防护的地址范围中地址的写入/存储是一个此类限定事件。在此类情况下,逻辑处理器可退出状态,并且通过在程序顺序中在MWAIT指令后的指令,恢复执行。
附图说明
通过参照下面的描述和用于示出实施例的附图,可最好地理解本发明。在图中:
图1是处理器的一实施例的框图。
图2是高速缓存代理的一实施例的框图。
图3是示出监视有限状态机的一实施例的状态的图形。
图4是可操作用于在监视请求指示相同地址时为多个硬件线程和/或核再使用单个高速缓存侧地址监视存储位置的溢出避免逻辑的一实施例的框图。
图5是通过检查过时/过期高速缓存侧地址监视存储位置,可选地尝试避免溢出模式,并且在未找到此类过时/过期存储位置时进入溢出模式的方法的一实施例的流程框图。
图6是溢出结构的一实施例的框图。
图7A是根据本发明的实施例,示出示范有序流水线和示范寄存器重命名、失序发出/执行流水线的框图。
图7B是根据本发明的实施例,示出要在处理器中包括的有序体系结构的一示范实施例和示范寄存器重命名、失序发出/执行体系结构核的框图。
图8A是根据本发明的实施例,单个处理器核和其到晶片上互连网络的连接及其二级(L2)高速缓存的本地子集的框图。
图8B是根据本发明的实施例,图8A中处理器核的一部分的展开图。
图9是根据本发明的实施例,可具有不止一个核,可具有集成存储器控制器,并且可具有集成图形的处理器的框图。
图10所示是根据本发明的一个实施例的系统的框图。
图11所示是根据本发明的一实施例的第一更具体的示范系统的框图。
图12所示是根据本发明的一实施例的第二更具体的示范系统的框图。
图13所示是根据本发明的一实施例的SoC的框图。
图14是根据本发明的实施例,对比使用软件指令转换器将来源指令集中二进制指令转换成目标指令集中二进制指令的框图。
具体实施方式
本文中公开的是可扩展实现监视对地址的写入的指令的方法、设备和系统。在下面的描述中,陈述了许多特定的细节(例如,特定指令、指令功能性、处理器配置、微体系结构细节、操作的序列等)。然而,实践实施例可无需这些特定的细节。在其它情况下,熟知的电路、结构和技术未详细显示以免混淆对此描述的理解。
图1是处理器100的一实施例的框图。处理器表示物理处理器、集成电路或晶片。在一些实施例中,处理器可以是通用处理器(例如,在台式、膝上型及类似计算机中使用的类型的通用微处理器)。备选,处理器可以是专用处理器。仅举几个示例,适合的专用处理器的示例包括但不限于网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、及其混合或完全其它类型的处理器的任何处理器。
处理器是具有多个处理器核102的多核处理器。在所示示例实施例中,处理器具有包括核0 102-0到核7 102-7的8个核(总称为核102)。虽然在其它实施例中,处理器可具有任何其它所需数量的核,例如,两个到几百个不等,经常是两个到数十个不等(例如,大约5个到大约100个)。每个核可具有单个硬件线程、多个硬件线程,或者一个些核可具有单个硬件线程,而其它核可具有多个硬件线程。例如,在一个示例实施例中,每个核可具有至少两个硬件线程,但本发明的范围并不限于此。
术语核经常指位于能够保持独立体系结构状态(例如,执行状态)的集成电路上的逻辑,其中独立保持的体系结构状态与专用执行资源相关联。相反,术语硬件线程经常指位于能够保持独立体系结构状态的集成电路上的任何逻辑,其中独立保持的体系结构状态共享对它使用的执行资源的访问。在某些资源由某个体系结构状态共享,并且其它资源专用于该体系结构状态时,在核与硬件线程之间的界线更不明确。不过,核和硬件线程经常被操作系统视为单独的处理元素或逻辑处理器。操作系统通常能够单独调度在每个核、硬件线程或其它逻辑处理器或处理元素上的操作。换而言之,在一个实施例中,处理元素或逻辑处理器可表示能够与代码独立关联的任何晶片上处理器逻辑,如软件线程、操作系统、应用程序或其它代码,而无论执行资源是专用还是共享或其某一组合。除硬件线程和核外,逻辑处理器或处理元素的其它示例包括但不限于线程单元、线程槽、过程单元、上下文和/或能够保留状态并且与代码独立关联的任何其它逻辑。
核102通过一个或更多个晶片上互连112耦合在一起。互连可用于在核之间传递消息和数据。将领会的是,许多不同类型的互连是适合的。在一个实施例中,可使用环形互连。在备选实施例中,可使用网状、圆环、十字、超立方体、其它互连结构,或此类互连的混合或组合。
每个核可包括本地指令和/或数据存储装置如一个或更多个更低级的高速缓存(未示出)。例如,每个核可包括最靠近核的对应最低级或一级(L1)高速缓存,并且可选包括下一个最靠近核的中间级或二级(L2)高速缓存。一个或更多个更低级的高速缓存称为更低级别,这是因为它们比更高级高速缓存(例如,下述分布式高速缓存108)在物理和/或逻辑上更靠近其对应核。一个或更多个级别的高速缓存每个可缓存数据和/或指令。
核102也可共享分布式更高级高速缓存108。分布式更高级高速缓存可表示高速缓存的物理上分布式存储器或部分。在所示示例实施例中,分布式高速缓存包括经常称为高速缓存切片的多个(例如,在此情况下为8个)物理上分布式高速缓存部分108-0到108-7(总称为高速缓存部分108)。在其它实施例中,分布式高速缓存可包括更少或更多的高速缓存部分(例如,与处理器的核的数量相同数量的分布式高速缓存部分)。分布式高速缓存部分可由不同核和/或线程共享。如图所示,每个高速缓存部分可与相应的核更关联,和/或可可选地在物理上位于更靠近带有相应核的晶片(例如,与相应核在相同位置)上。例如,与其它核相比,高速缓存部分108-0可与核0 102-0更关联,和/或可在物理上位于更靠近带有核0102-0的晶片(例如,与其在相同位置)上。
在一些实施例中,每个高速缓存部分可对应于或映射到存储器地址的互斥或非重叠范围。例如,高速缓存部分108-0可具有地址的关联第一集,并且高速缓存部分108-1可具有地址的关联不同第二集,并以此类推。可在分布式高速缓存的不同高速缓存部分中以多种不同方式(例如,使用不同的哈希功能或其它算法)划分或分配地址范围。在一些实施例中,更高级共享高速缓存可表示用于存储数据和/或指令的最后一级高速缓存(LLC),但这不是必需的。在一些实施例中,分布式高速缓存(例如,LLC)可包括高速缓存分层结构中所有更低级的高速缓存,或者可包括高速缓存分层结构中下一级到最高级的高速缓存(例如,L2高速缓存),但这不是必需的。在一些实施例中,核可最初检查用于数据和/或指令的一个或更多个更低级高速缓存。如果在一个或更多个更低级高速缓存中未找到寻找的数据和/或指令,则核随后可继续检查共享分布式更高级高速缓存。
如图所示,在一些实施例中,核接口(I/F)单元104可与每个对应核102耦合。每个核接口单元也可与互连112耦合。每个核接口单元可用于充当在对应核与其它核之间及在对应核与分布式高速缓存部分之间的中介。如图进一步所示,在一些实施例中,对应高速缓存控制单元106可与每个高速缓存切片或其它部分108耦合。在一些实施例中,每个高速缓存控制单元可与对应高速缓存切片和对应核在物理上大约在相同位置。每个高速缓存控制单元可与互连112耦合。每个高速缓存控制单元可用于控制和帮助为对应分布式高速缓存部分提供高速缓存相干性。核接口单元104和高速缓存控制单元106的每个对应对可共同表示用于连接对应核和对应高速缓存部分到互连和/或其它核的核-高速缓存部分接口单元。核接口单元和高速缓存控制单元可在硬件(例如,集成电路、电路、晶体管等)、固件(例如,在非易失性存储器中存储的指令)、软件或其组合中实现。
处理器也包括第一高速缓存相干性意识存储器控制器110-1以耦合处理器和第一存储器(未示出)和第二高速缓存相干性意识存储器控制器110-2以耦合处理器和第二存储器(未示出)。在一些实施例中,每个高速缓存相干性意识存储器控制器可包括用于执行高速缓存相干性的归属代理逻辑和用于与存储器交互的第二存储器控制器逻辑。为简明起见,在本描述中,此类归属代理和存储器控制器功能将称为高速缓存相干性意识存储器控制器。其它实施例可包括更少或更多的高速缓存相干性意识存储器控制器。另外,虽然在所示实施例中,高速缓存相干性意识存储器控制器是在晶片上或在处理器上,但在其它实施例中,它们可转而在晶片外或在处理器外(例如,作为一个或更多个芯片集组件)。
要领会的是,处理器也可包括不是理解本文中各种实施例所必需的其它组件。例如,处理器可可选地包括到输入和/或输出装置的一个或更多个接口、系统接口、套接字到套接字互连或诸如此类。
如上提及的一样,某些处理器(例如,Intel Corporation提供的那些处理器)能够使用MONITOR和MWAIT指令实现相对于共享存储器的线程同步。硬件线程或其它逻辑处理器可使用MONITOR指令设置要由监视单元监视的线性地址范围,并且防护(arm)或激活监视单元。地址可通过通用寄存器(例如,EAX)提供。地址范围一般属于回写缓存类型。监视单元将监视和检测将触发监视单元的对地址范围内地址的存储/定入。其它通用寄存器(例如,ECX和EDX)可用于将其它信息传递到监视单元。MWAIT指令可在程序顺序中跟在MONITOR指令后,并且可充当允许硬件线程或其它逻辑处理器停止指令执行,并且进入实现相关状态的提示。例如,逻辑处理器可进入睡眠状态、功率C状态或其它降低功耗状态。逻辑处理器可保留在该状态,直于检测到与MONITOR指令相关联的限定事件(qualifying event)集的一个事件。对由前面的MONITOR指令防护的地址范围中地址的写入/存储是一个此类限定事件。在此类情况下,逻辑处理器可退出状态,并且通过在程序顺序中在MWAIT指令后的指令,恢复执行。通用寄存器(例如,ECX和EDX)可用于将其它信息传递到监视单元(例如,有关要进入的状态的信息)。
图2是高速缓存代理216的一实施例的框图。在一些实施例中,高速缓存代理可在图1的处理器中使用。然而,要领会的是,图2的高速缓存代理可与除图1的处理器外的不同处理器一起使用。
高速缓存代理216包括核202和高速缓存部分208。在一些实施例中,核可以是多核处理器的多个核之一。在一些实施例中,高速缓存部分可以是分布式高速缓存(例如,分布式LLC)的多个高速缓存切片或其它高速缓存部分之一。高速缓存代理也包括核接口单元204和高速缓存部分控制单元206。核通过核接口单元与互连212耦合。高速缓存部分通过高速缓存部分控制单元与互连耦合。核接口单元耦合在核与高速缓存部分控制单元之间。高速缓存部分控制单元耦合在核接口与高速缓存部分之间。核、高速缓存部分、核接口单元和高速缓存部分控制单元可可选地类似于图1的对应命名组件或与其相同。在此特定示例中,核是包括第一硬件线程218-1和第二硬件线程218-2的多线程核,但本发明的范围并不限于此。在其它实施例中,核可以是单线程,或者可具有不止两个硬件线程。
高速缓存代理216包括用于实现监视指令(例如,MONITOR指令)的监视机制,监视指令用于监视对一个或更多个地址(例如,由MONITOR指令指示的地址范围)的写入。该机制可使用或利用现有高速缓存相干性机制(例如,可利用传递通过高速缓存相干性机制输送的对某个地址的写入的意图)。在所示实施例中,监视机制包括高速缓存侧地址监视单元226、核侧地址监视单元220、核侧触发单元234和高速缓存侧存储溢出单元236。在本文中使用时,术语“核侧”指在互连212的与核202相同的侧上,和/或部署在核与互连之间,和/或与高速缓存部分相比,在逻辑上更靠近核。同样地,术语“高速缓存侧”指在互连212的与高速缓存部分208相同的侧上,和/或部署在高速缓存部分与互连之间,和/或与核部分相比,在逻辑上更靠近高速缓存部分。
在所示实施例中,高速缓存侧地址监视单元226和高速缓存侧存储溢出单元236均在高速缓存部分控制单元206中实现,但这不是必需的。在其它实施例中,一个或更多个这些单元可实现为单独的高速缓存侧组件(例如,与高速缓存控制单元和/或与高速缓存部分耦合)。类似地,在所示实施例中,核侧地址监视单元220和核侧触发单元234均在核接口单元204中实现,但这不是必需的。在其它实施例中,一个或更多个这些单元可实现为单独的核侧组件(例如,与核接口单元和/或与核耦合)。
高速缓存侧地址监视单元226对应于高速缓存部分208,该部分是分布式高速缓存的切片或其它部分。高速缓存侧地址监视单元具有多个不同的高速缓存侧地址监视存储位置228。如图所示,每个高速缓存侧地址监视存储位置可用于存储要监视是否有写入的地址230。在一些实施例中,每个高速缓存侧地址监视存储位置也可存储与地址有关的核的指示(例如,核标识符、带有对应于每个不同核的对应比特的核掩码(mask)等)。例如,这些存储位置可表示硬件实现的表格中不同的条目。如图所示,在所示实施例中,可存在第一高速缓存侧地址监视存储位置228-1到第N个高速缓存侧地址监视存储位置228-N,其中,N可以是对特定实现适当的数字。
在一些实施例中,在对应于高速缓存部分的高速缓存侧地址监视单元中高速缓存侧地址监视存储位置的总数可少于处理器和/或处理器在其中实现的套接字的硬件线程(或其它逻辑处理器)的总数。在一些实施例中,每个硬件线程(或其它逻辑处理器)可用于使用监视指令(例如,MONITOR指令)监视单个地址或单个范围的地址。在一些情况下,在使用此类监视指令后,可将硬件线程置于睡眠或另一降低功耗状态中。一个可能的方案将是为每个硬件线程(或其它逻辑处理器)存储要监视的地址提供足够的高速缓存侧地址监视存储位置228。然而,在使用分布式高速缓存时,每个地址可进行哈希处理,或者映射到仅单个对应的高速缓存切片或其它高速缓存部分。例如,地址的哈希可根据特定哈希功能,选择对应于该地址的单个对应高速缓存切片。相应地,在使用此类分布式高速缓存时,尽管通常机会极小,但有机会可对要为所有硬件线程(或其它逻辑处理器)监视的所有地址进行哈希处理,或者将其映射到相同的单个高速缓存切片。
为虑及此类可能性,一个可能的方案将是为每个高速缓存部分提供多个高速缓存侧地址监视存储位置228,其数量等于处理器和/或套接字的硬件线程(或其它逻辑处理器)的总数。例如,在每个核具有两个硬件线程的8核处理器中,可为8个高速缓存切片的每个切片提供总共16个高速缓存侧地址监视存储位置(即,核的数量乘以每核的线程数)。例如,可包括带有条目数量等于硬件线程的总数的硬件实现的表格。在一些情况下,每个存储位置可具有与对应硬件线程的固定对应关系或指派。这可允许每个硬件线程存储要监视的地址,并且可虑及所有这些地址可能可映射到相同高速缓存部分,并且因此将需要在本地为该高速缓存部分存储的可能性。此类方案基本上设计用于通常极不可能发生,但在此之前不能忽略的最差情形,这是因为如果确实发生该情形,则无方案可用于处理该情形。
此类方案的一个缺陷是随着硬件线程(或其它逻辑处理器)的数量和/或高速缓存部分的数量增大,它往往较不易扩展。增大硬件线程的数量增大了需要用于每个高速缓存部分的存储位置的数量。另外,增大高速缓存部分的数量涉及为每个另外的高速缓存部分添加此类存储位置的另外集。仅举几个示例,处理器可具有不止32个线程、36个线程、40个线程、56个线程、128个线程或256个线程。我们能够轻松地看到,在使用此类大量的线程时,存储量能够变得相当大。此类相当大的存储量往往增大了处理器的制造成本、提供存储需要的晶片上面积量和/或存储带来的功耗。
作为备选方案,在一些实施例中,在对应于高速缓存部分208的高速缓存侧地址监视单元226中高速缓存侧地址监视存储位置228的总数可少于处理器和/或套接字的硬件线程(或其它逻辑处理器)的总数。可存在比完全避免地址监视存储溢出的可能性严格所需数量更少的地址监视存储位置。在一些实施例中,每个高速缓存部分可具有与其相在联的多个地址监视存储位置,其数量足以在大部分时间避免溢出,但不足以完全阻止在所有情况下的此类溢出。在一些实施例中,每高速缓存部分高速缓存侧地址监视存储位置的总数相对于处理器的硬件线程的总数可以是足够的,溢出的可能性根据需要是不到大约十万分之一、不到大约百万分之一或不到大约千万分之一。在一些实施例中,处理器可具有不止大约四十个硬件线程,并且每高速缓存部分高速缓存侧地址监视存储位置的总数可少于四十(例如,从大约20到大约38不等)。在一些实施例中,处理器可具有不止五十个硬件线程,并且每高速缓存部分高速缓存侧地址监视存储位置的总数可少于大约五十(例如,从大约20到大约45不等,或者从大约25到大约40不等,或者从大约30到大约40不等)。在一些实施例中,不指定或指派高速缓存侧地址监视存储位置到特定硬件线程,存储位置可不对应于任何特定硬件线程,而是任何存储位置可由任何硬件线程使用。有利的是,使用总数少于处理器和/或套接字的硬件线程(或其它逻辑处理器)的总数的在对应于高速缓存部分的高速缓存侧地址监视单元中高速缓存侧地址监视存储位置,这可能可有助于提供更可扩展的解决方案以实现监视指令(例如,MONITOR指令)。然而,要领会的是,无论硬件线程和/或的数量多少和/或存储的总量是大还是小,本文中公开的实施例具有实用性。
再次参照图2,高速缓存代理包括对应于核202的核侧地址监视单元220。核侧地址监视单元具有与对应核的一个或更多个硬件线程的数量相同数量的核侧地址监视存储位置。在所示实施例中,第一核侧地址监视存储位置221-1具有与第一硬件线程128-1的固定对应关系,并且第二核侧地址监视存储位置221-2具有与第二硬件线程128-2的固定对应关系。在其它实施例中,可使用其它数量的线程和存储位置。每个核侧地址监视存储位置可用于存储要为对应核的对应硬件线程218-1、218-2监视的地址222-1、222-2。在存在此类固定对应关系时,在存储位置中存储地址可将地址与硬件对应硬件线程相关联。在其它实施例中,如果在存储位置与硬件线程之间不存在固定对应关系,则每个存储位置可用于存储对应于要监视的地址的硬件线程的指示(例如,硬件线程标识符)。在一些实施例中,每个核侧地址监视存储位置也可用于存储要用于对应核的对应硬件线程218-1、218-2的监视状态224-1、224-2。在一些实施例中,每个监视状态可表示监视有限状态机(FSM)。在一些实施例中,就MONITOR指令而言,监视状态可以是闲置状态、猜测(例如,加载监视)状态和触发就绪(例如,wait2trigger)状态的任何一种状态,但本发明的范围并不限于此。
在一些实施例中,高速缓存侧地址监视单元226和核侧地址监视单元220可一起协作或工作以监视对一个或更多个地址的写入(例如,在由MONITOR指令指示的地址范围中的地址)。为进一步示出某些概念,考虑监视机制可如何执行MONITOR和MWAIT指令的示例。第一硬件线程218-1可执行MONITOR指令。MONITOR指令可指示要监视是否有写入的地址。第一硬件线程可发出对指示的监视地址的对应MONITOR请求。MONITOR请求可促使第一核侧地址监视单元220在第一核侧地址监视存储位置221-1中存储指示的监视地址222-1。监视状态224-1可设置在猜测或加载监视状态。MONITOR请求可在互连212上路由到预期存储对应于指示的监视地址的数据的适当分布式高速缓存部分208。要注意的是,视特定指示的监视地址而定,它可以是基于用于映射的哈希功能或其它算法的任何分布式高速缓存部分。高速缓存侧地址监视单元可在高速缓存侧地址监视存储位置230(例如,位置230-1到230-N的任何一个可用位置)中存储指示的监视地址。识别具有第一硬件线程218-1的核202的核标识符也可作为核标识符(ID) 232存储在高速缓存侧地址监视存储位置230中。在一些实施例中,核标识符可以是识别核之一的比特集。在其它实施例中,可可选地使用核掩码,以便单个存储位置可由用于在监视的相同地址的多个核共享。
第一线程218-1可随后执行也可指示监视的地址的MWAIT指令。第一硬件线程可发出用于指示的监视地址的对应MWAIT信号。响应MWAIT信号,核侧地址监视单元220可将监视状态224-1设置在准备就绪可以触发状态(例如,等待触发状态)。可可选地将第一硬件线程置于不同状态,如睡眠或其它降低功耗状态。有代表性的是,如果第一线程要进入睡眠,则第一线程可在上下文中存储其状态,并且随后进入睡眠。
随后,在有写入指示的监视地址的意图(例如,所有权读取请求、隐含指示的监视地址的嗅探失效(snoop invalidate)、与地址更改相关联,从共享状态到独占状态的状态转变等)时,高速缓存侧地址监视单元可检测到写入地址的此类意图。地址可匹配在其存储位置之一中的地址之一。对应于存储位置的一个或更多个核可例如通过在高速缓存侧地址监视存储位置中存储的核标识符或核掩码确定。高速缓存侧地址监视单元可清除用于存储指示的监视地址的高速缓存侧地址监视存储位置。它也可例如通过发送嗅探失效到对应核,向对应核发送信号。高速缓存侧地址监视单元可充当某种高级滤波器,以帮助将写入地址的意图的通知只可选地向已知在监视该地址的那些一个或更多个核引导(例如,通过对所有权的请求或嗅探失效)。这些通知可表示可选地向监视地址的核的子集提供的“提示”。有利的是,这可有助于避免通知未在监视地址的核,这可有助于避免误唤醒和/或降低在互连上的业务。
在收到信号的核的核侧地址监视单元220可接收信号,并且可比较信号中指示的地址(例如,在嗅探失效中)和在其核侧地址监视存储位置中的监视地址。它可确定信号的地址匹配在对应于第一硬件线程128-1的第一核侧监视地址存储位置221-1中的监视地址222-1。核侧地址监视单元可知道第一硬件线程对应于在监视的地址。核侧地址监视单元可向核侧触发单元234发送信号,指出已观测到写入监视的地址的意图。它可清除第一核侧地址监视存储位置,并且将监视状态224-1更改成闲置。核侧触发单元可用于向第一硬件线程提供触发信号(例如,提醒、通知或唤醒信号)。在此实施例中,核侧触发单元是核侧,这可有助于简化逻辑,但它也可选择地以高速缓存侧提供。如果第一硬件线程在睡眠状态,则可将其唤醒。
在一些实施例中,存在高速缓存侧地址监视存储位置可溢出的可能性。例如,可在高速缓存侧地址监视单元收到新监视请求,但所有高速缓存侧地址监视存储位置可当前在使用中,使得没有空/可用的高速缓存侧地址监视存储位置存储新监视请求的地址。如图所示,在一些实施例中,高速缓存侧地址监视单元可与对应于高速缓存部分的高速缓存侧地址监视存储溢出单元236耦合。在一些实施例中,在没有空/可用/未使用的高速缓存侧地址监视存储位置可用于存储新监视请求的地址时,高速缓存侧地址监视存储溢出单元可用于强制实行或实现地址监视存储溢出策略。
如提及的一样,在一些实施例中,核侧地址监视单元可具有其数量与在其对应核中硬件线程的数量相同的核侧地址监视存储位置。类似地,在一些实施例中,其它核的核侧地址监视单元可具有其数量与在其对应核中硬件线程的数量相同的核侧地址监视存储位置。总之,这些核侧地址监视存储位置可表示核侧地址监视存储位置的数量与处理器的硬件线程(或其它逻辑处理器)的总数相同的一个集。有利的是,即使有高速缓存侧地址监视存储位置的溢出,核侧地址监视单元也仍具有足够的核侧地址监视存储位置存储用于所有硬件线程(或其它逻辑处理器)的所有监视的地址。
图3是示出适合用于实现MONITOR指令和MWAIT指令的监视有限状态机(FSM) 347的一实施例的状态的图形。在接收来自执行线程对地址的监视请求时,监视FSM可进行从闲置状态340到猜测状态341的转变343。如果将存储对应于该地址的数据的高速缓存部分接收匹配地址的写入请求,或者在监视FSM在猜测状态中的同时,如果从执行线程提供监视清除请求,则监视FSM可进行回到闲置状态340的转变344。如果从相同执行线程提供另一监视请求,则监视FSM可进行返回到猜测状态341的转变343,并且如果适当,则可调整监视的地址。另一方面,在猜测状态341中的同时,如果从该执行线程提供MWAIT请求,则监视FSM可进行到等待触发状态342的转变345。猜测状态可有助于确保在从收到监视请求的时间开始跟踪请求的同时,甚至在接收MWAIT请求前,只为最近监视的地址发送监视唤醒事件,在监视FSM在等待触发状态的同时,如果要存储对应于该地址的数据的高速缓存部分接收匹配监视的地址的写入请求,则可将监视唤醒事件发送到执行线程。另一方面,在监视FSM处在等待触发状态342中的同时,可从执行线程提供监视清除请求。在此类情况下,可为该执行线程擦除监视请求,并且无需发送监视唤醒事件到执行线程,但在这两种情况的任一情况下,监视FSM可进行回到闲置状态340的转变346。
图4是用于在监视请求指示相同地址时为多个硬件线程和/或核再使用单个高速缓存侧地址监视存储位置428的溢出避免逻辑460的一实施例的框图。逻辑包括与高速缓存侧地址监视存储位置428耦合的高速缓存侧地址监视存储位置再使用单元464。高速缓存侧地址监视存储位置再使用单元可接收来自不同硬件线程和/或核的指示相同地址的监视请求462。一个可能的方案将是在不同高速缓存侧地址监视存储位置中存储此相同地址的不同副本(例如,在硬件实现的表格中的不同条目)。然而,这可消耗多个或在一些情况下消耗许多高速缓存侧地址监视存储位置。
作为备选方案,在一些实施例中,单个高速缓存侧地址监视存储位置428可用于存储要监视的地址430,并且表示来自不同硬件线程的监视请求。在一些实施例中,能够将多个核与要监视的地址相关联的结构432也存储在高速缓存侧地址监视存储位置428中。在一个示例中,结构可包括核掩码结构432。核掩码可具有其数量与处理器的核的总数相同的比特,并且核掩码的每个比特可具有与不同核的固定对应关系。根据一个可能惯例,每个比特可具有指示对应核没有用于地址的待定监视请求的第一值(例如,清除成二进制0),或指示对应核具有用于地址的待定监视请求的第二值(例如,设置成二进制1)。相反的惯例也是可能的。用于对应核的比特可设置成指示已从用于在高速缓存侧地址监视存储位置中存储的地址的该核收到监视请求,或者在观测到并且向核侧逻辑报告对地址的写入时,已清除监视请求。要注意的是,通过地址而不是线程标识符,跟踪高速缓存侧地址监视存储位置。有利的是,这样,可将来自不同核的对相同地址的监视请求折叠到相同的单个高速缓存侧地址监视存储位置中。用于来自不同线程/核的多个请求的存储位置的此类再使用可有助于避免高速缓存侧地址监视存储位置溢出。
如上提及的一样,在一些情况下可能溢出有限数量的高速缓存侧地址监视存储位置。在一些实施例中,可提供溢出模式或策略集以允许监视机制甚至在发生溢出的情况下正确操作。
图5是通过检查过时/过期高速缓存侧地址监视存储位置,可选地尝试避免溢出模式,并且在未找到此类过时/过期存储位置时进入溢出模式的方法570的一实施例的流程框图。在一些实施例中,图5的操作和/或方法可由图1的处理器和/或图2的高速缓存代理执行和/或在其内执行。本文中所述用于图1的处理器和/或图2的高速缓存代理的组件、特征和特定可选细节也可选地应用到图5的操作和/或方法。备选,图5的操作和/或方法可由类似或不同的处理器和/或高速缓存代理执行和/或在其内执行。另外,图1的处理器和/或图2的高速缓存代理可执行与图5的那些操作和/或方法相同、类似或不同的操作和/或方法。
方法可选地包括在框571,确定没有可用/未使用的高速缓存侧地址监视存储位置处理收到的监视请求。例如,监视请求可在高速缓存侧地址监视单元(例如,高速缓存侧地址监视单元226)收到,并且高速缓存侧地址监视单元可确定没有可用/未使用的高速缓存侧地址监视存储位置处理监视请求。例如,所有高速缓存侧地址监视存储位置目前可存储要监视的地址。
方法可选地包括在框572,确定过时/过期的高速缓存侧地址监视存储位置是否存在,以及是否能够用于处理新收到的监视请求。在一些实施例中,高速缓存侧地址监视单元可选择具有地址的条目,并且确定它是否过时和/或过期。例如,过时/过期的地址可表示仍存储在存储位置中,但目前没有用于该地址的任何有效待定监视请求的地址。例如,能够存在误监视请求的情况,例如,由于在设置但未防护(armed)的监视原因。可随机,基于条目的时长,基于有效性的预测或其它来选择条目。在一些实施例中,为检查存储位置是否过时/过期,高速缓存侧地址监视单元可将对相关联地址的嗅探请求发送到指示为具有对该地址的监视请求的一个或更多个核(例如,基于在存储位置中存储的核标识符或核掩码确定)。用于接收嗅探请求的核的一个或更多个核侧地址监视单元可检查其对应核侧地址监视存储位置以确定地址是否已存储。随后,一个或更多个核侧地址监视单元每个可将响应发送回高速缓存侧地址监视单元,指示地址是否仍有效(例如,仍对应于来自对应核的有效监视请求)。如果来自一个或更多个核侧地址监视单元的响应指示对该地址的任何此类有效的仍待定的监视请求,则可确定地址和/或存储位置不过时/过期。否则,如果无核侧地址监视单元报告对该地址的有效的仍待定的监视请求,则可确定地址和/或存储位置过时/过期。在一些实施例中,使用此类方案只可检查单个存储位置和/或地址。备选,使用此类方案可检查多个存储位置和/或地址。
再次参照图5,如果在框572,确定存在能够用于处理新收到的监视请求的此类过时/过期的高速缓存侧地址监视存储位置(即,在框572的确定为“是”),则方法可可选地前进到框573。在框573,过时/过期的高速缓存侧地址监视存储位置可可选地用于处理新收到的监视请求。有利的是,在此情况下,通过利用过时/过期的存储位置,可在此时避免溢出模式。
备选,如果在框572,确定不存在此类过时/过期的高速缓存侧地址监视存储位置(即,在框572的确定为“否”),则方法可可选地前进到框574。在框574,方法可进入溢出模式。进入溢出模式可包括强制实行或实现溢出策略。在溢出模式中,性能可稍微降低。然而,溢出模式经常只在很少的情况需要实现,并且通常仅在较短的时间期内实现,直至溢出状况得以减轻。
作为一个溢出策略,在框575,方法可包括强制每个读取事务来使用共享高速缓存相干性状态。在概念上,这可视为将每个读取事务作为监视请求处理。在进入溢出模式中时,高速缓存侧地址监视单元不再能够通过专用存储跟踪监视请求/地址。相应地,不可允许核具有高速缓存行的独占副本。例如,高速缓存侧地址监视单元收到的任何读取操作可通过共享状态响应进行处理。强制此类读取事务来使用共享状态可有助于确保写入对应地址的意图将促使嗅探或广播提供到可已缓存该地址的所有核。
作为另一溢出策略,在框576,方法包括将任何失效请求发送到可能可具有待定监视请求的所有核。在一些实施例中,这可包括在检测到任何失效请求(例如,通过检测读取失效自己请求(read invalidate own request)、嗅探失效请求或诸如此类)时使可能可具有待定监视请求的处理器的所有核和/或相同套接字内的所有核失效的嗅探。在进入溢出模式中时,高速缓存侧地址监视单元不再能够通过专用存储跟踪监视请求/地址。相应地,应在每个失效请求上通知可能可具有待定监视请求的所有核。嗅探可到达所有此类核的核侧地址监视单元,并且在适当时提供监视触发到对于其,存在用于相关联地址的有效待定监视请求的任何核。
值得注意的是,不严格要求通知处理器的所有核,而是只通知可能可具有待定监视请求的所有核。在一些实施例中,某个结构可在发生溢出时可选地用于跟踪可能可有待定监视请求的所有核。此类结构的一个示例是可选溢出结构。溢出结构可在发生溢出时指示哪些核可能可具有待定溢出请求。在一个示例中,溢出结构可具有其数量与处理器的核的总数相同的比特,并且每个比特可具有与不同对应核的固定对应关系。根据一个可能惯例,每个比特可具有在发生溢出时指示对应核可能可具有待定监视请求的第一值(例如,设置成二进制1),或者可具有在发生溢出时指示对应核可能没有待定监视请求的第二值(例如,清除成二进制0)。
在一个实施例中,溢出结构本身可反映在发生溢出时可能可有待定监视请求的所有核。例如,在发生溢出时,可修改溢出结构以反映对应于目前在高速缓存侧地址监视存储位置中存储的任何一个或更多个地址的所有核。在另一实施例中,溢出结构与高速缓存侧地址监视存储位置组合,可反映在发生溢出时可能可有待定监视请求的所有核。例如,在发生溢出时,每次由新收到的监视请求改写或消耗高速缓存侧地址监视存储位置,可在溢出结构中反映与改写或消耗的地址相关联的核。也就是说,每次改写存储元素时,可更新溢出结构以捕捉有关可能可具有待定监视请求的核的信息。在此类实施例中,在高速缓存侧地址监视存储位置与溢出结构之间划分有关在溢出发生时哪些核可能可具有待定监视请求的信息。
在使用此类在溢出结构或有关结构的实施例中,不要求发送任何收到的失效请求到所有核,而是只发送到溢出向量和/或可能可具有待定监视请求的存储位置指示的那些核。一些核可未在溢出向量和/或存储位置中指示,并且因此在发生溢出时应不可能具有任何待定监视请求,并且因此失效请求无需向其发送。然而,此类溢出结构的使用是可选而不是必需的。
再参照图5,只要没有可用存储位置,溢出模式便可通过根据需要重复框575和576而继续。然而,通过在框576嗅探或以其它方式发送任何失效请求到可能可具有待定监视请求的所有核,可主动移除随着时间的过去过时/过期的地址和/或存储位置。如果核侧地址监视单元没有对嗅探或失效请求的有效待定监视请求,则它们可报告此情况,这可允许高速缓存侧地址监视单元反映核不关注对地址进行明察秋毫(例如,更新核掩码),或者如果无其它核关注地址,则清除存储位置。在各种实施例中,过时/过期的存储位置的移除可基于特定地址、特定高速缓存部分、特定核或诸如此类执行。也可修改溢出掩码以反映过时/过期的存储位置或地址的清除。例如,不再具有待定监视请求的核可更新成零,而不是在溢出掩码中的一。这样,在框576的嗅探或失效请求可有助于清除随着时间的过去过时/过期的存储元素或地址,以便在某个点能够退出溢出模式。如在框577所示,可退出溢出模式。
这只是一个说明性实施例。考虑了有关此实施例的许多变化。例如,在框572的确定是可选并且不是必需的。在其它实施例中,可自动进入溢出模式而不检查可能过时的条目/地址。
图6是溢出结构680的一实施例的框图。溢出结构可用于单独或与高速缓存侧地址监视存储位置组合指示在发生溢出时,哪些核可能可具有待定监视请求。在此实施例中,溢出结构包括N+1个比特,每个比特具有与N+1个核(例如,核0到核N)具有固定对应关系。根据一个可能惯例,每个比特可具有在发生溢出时指示对应核可能可具有待定监视请求的第一值(例如,设置成二进制1),或者可具有在发生溢出时指示对应核可能没有待定监视请求的第二值(例如,清除成二进制0)。例如,在图示中,对应于核0的最左比特具有二进制零(即,0)以指示核0没有待定监视请求,对应于核1的下一最左比特具有二进制度(即,1)以指示核1具有待定监视请求,以及对应于核N的最右比特具有二进制0(即,0)以指示核N没有待定监视请求。这只是适合的溢出结构的一个说明性示例。要领会的是,其它结构可用于输送相同或类似类型的信息。例如,在另一实施例中,可在某个结构等中存储带有待定监视请求的核ID的列表。
本文中公开的监视机制及其任何单元或组件可在硬件(例如,集成电路、晶体管或其它电路元素等)、固件(例如,ROM、EPROM、闪存存储器或其它持久性或非易失性存储器和其中存储的微代码、微指示或其它更低级别指令)、软件(例如,存储器中存储的更高级指令)或其组合(例如,可能与一个或更多个固件和/或软件组合的硬件)中实现。
为图1、3、4和6的任何图形描述的组件、特征和细节也可可选地在图2和5中使用。另外,本文中为任何设备所述的组件、特征和细节也可可选地在本文中所述的任何方法中使用,方法在实施例中可由和/或通过此类设备执行。
示范核体系结构、处理器和计算机体系结构
处理器核可以不同方式为不同目的及在不同处理器中实现。例如,此类核的实现可包括:1)预期用于通用计算的通用有序核;2)预期用于通用计算的高性能通用失序核;3)预期主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括预期用于通用计算的一个或更多个通用有序核和预期用于通用计算的一个或更多个通用失序核的CPU;以及2)包括预期主要用于图形和/或科学(吞吐量)的一个或更多个专用核的协处理器。此类不同处理器产生不同计算机系统体系结构,这些体系结构可包括:1)在CPU外单独芯片上的协处理器;2)与CPU在相同封装中的单独晶片上的协处理器(在此情况下,此类协处理器有时称为专用逻辑,如集成图形和/或科学(吞吐量)逻辑或称为专用核);以及4)在可在相同晶片上包括所述CPU(有时称为应用程序核或应用程序片器)、上述协处理器及另外功能性的芯片上的系统。下面描述示范核体系结构,之后是示范处理器和计算机体系结构的描述。
示范核体系结构
有序和无序核框图
图7A是根据本发明的实施例,示出示范有序流水线和示范寄存器重命名、失序发出/执行流水线的框图。图7B是根据本发明的实施例,示出要在处理器中包括的有序体系结构的一示范实施例和示范寄存器重命名、失序发出/执行体系结构核的框图。图7A-B中的实线框示出有序流水线和有序核,而虚线框的可选添加物示出寄存器重命名、失序发出/执行流水线和核。假定有序方面是失序方面的子集,将描述失序方面。
在图7A中,处理器流水线700包括获取级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也称为分派对或发出)级712、寄存器读取/存储器读取级714、执行级716、回写/存储器写入级718、执行处理级722及提交级724。
图7B示出包括耦合到执行引擎单元750的前端单元730的处理器核790,并且两者均耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或备选的核类型。作为仍有的另一选择,核790可以是专用核,例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核或诸如此类。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,指令高速缓存单元734耦合到指令转换后备缓冲器(TLB)736,指令转换后备缓冲器(TLB)736耦合到指令获取单元738,指令获取单元738耦合到解码单元740。解码单元740(或解码器)可解码指令,并且生成一个或更多个微操作、微代码进入点、微指令、其它指令或其它控制信号作为输出,这些信号从原指令解码或以其它方式反映原指令,或者从原指令得出。解码单元740可使用各种不同机制实现。适合机制的示例包括但不限于查表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括存储用于某些微指令(例如,在解码单元740中或者在前端单元730内)的微代码ROM或其它介质。解码单元740耦合到与执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括耦合到退出单元754的重命名/分配器单元752和有一个或更多个调度器单元756的集。调度器单元756表示任何数量的不同调度器,包括预留站、中央指令窗口等。调度器单元756耦合到物理寄存器文件单元758。每个物理寄存器文件单元758表示一个或更多个物理寄存器文件,不同的文件存储一个或更多个不同数据类型,如标量整数、标量浮点、压缩整数(packed integer)、压缩浮点、向量整数、向量浮点、状况(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元758包括向量寄存器单元、回写寄存器单元和标量寄存器单元。这些寄存器单元可提供体系结构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元758由退出单元754重叠以示出可实现寄存器重命名和失序执行的各种方式(例如,使用重新排序缓冲器和退出寄存器文件;使用将来文件、历史缓冲器和退出寄存器文件;使用寄存器图和寄存器池等)。退出单元754和物理寄存器单元758耦合到执行集群760。执行集群760包括有一个或更多个执行单元的集和有一个或更多个存储器访问单元764的集。执行单元762可执行各种操作(例如,移位、加、减、乘)和有关各种类型的数据的操作(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)。虽然一些实施例可包括专用于特定功能或功能集的多个执行单元,但其它实施例可包括仅一个执行单元或全部执行所有功能的多个执行单元。由于某些实施例为某些类型的操作(例如,由于每个具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,并且在使用单独存储器访问流水线的情况下,实现某些实施例,其中,仅此流水线的执行集群具有存储器访问单元764),调度器单元756、物理寄存器文件单元758和执行集群760示为可能不止一个。也应理解的是,在使用单独流水线的情况下,这些流水线的一个或更多个流水线可失序发出/执行,并且其余流水线是有序的。
存储器访问单元764集耦合到存储器单元770,存储器单元包括耦合到数据高速缓存单元774的数据TLB单元772,而数据高速缓存单元774耦合到二级(L2)高速缓存单元776。在一个示范实施例中,存储器访问单元764可包括负载单元、存储地址单元和存储数据单元,每个单元耦合到在存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到在存储器单元770中的二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一个或更多个其它有的高速缓存,并且最终耦合到主存储器。
例如,示范寄存器重命名、失序发出/执行核体系结构可如下所述,实现流水线700:1)指令获取738执行获取和长度解码级702和704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度单元756执行调度级712;5)物理寄存器文件单元758和存储器单元770执行寄存器读取/存储器读取级714;执行集群760执行执行级716;6)存储器单元770和物理寄存器文件单元758执行回写/存储器写入级718;7)各种单元可涉及接收处理级722;以及8)退出单元754和物理存储器文件单元758执行提交级724。
核790可支持一个或更多个指令集,例如,x86指令集(更新版本已添加一些扩展)、CA Sunnyvale的MIPS Technologies的MIPS指令集、CA Sunnyvale的ARM Holdings的ARM指令集(带有诸如NEON等可选另外扩展),包括本文所述指令。在一个实施例中,核790包括支持压缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用压缩数据要执行的许多多媒体应用程序使用的操作。
应理解的是,核可支持多线程处理(执行操作或线程的两个或更多个平行集),并且可以多种方式进行此操作,包括时间切片多线程处理、同步多线程处理(其中,单个物理核提供用于物理核在同时进行多线程处理的每个线程的逻辑核)或其组合(例如,时间切片的获取和解码及之后的同步多线程处理,如在Intel®超线程处理技术中一样)。
虽然在失序执行的上下文中描述寄存器重命名,但应理解的是,寄存器重命名可在有序体系结构中使用。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元734/774和共享L2高速缓存单元776,但备选实施例可具有用于指令和数据的单个内部高速缓存,如一级(L1)内部高速缓存或多级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选,所有高速缓存可在核和/或处理器的外部。
特定示范有序核体系结构
图8A-B示出更特定的示范有序核体系结构的框图,该核将是芯片中几个逻辑块之一(包括相同类型和/或不同类型的其它核)。视应用而定,逻辑块通过带有某个固定功能逻辑、存储器I/O接口和其它必需的I/O逻辑的高带宽互连网络(例如,环形网络)进行通信。
图8A是根据本发明的实施例,单个处理器核和其到晶片上互连网络802的连接及其二级(L2)高速缓存804的本地子集的框图。在一个实施例中,指令解码器800通过压缩数据指令集扩展支持x86指令集。L1高速缓存806允许标量和向量单元对高速缓存存储器的迟滞访问。虽然在一个实施例中(为简化设计),标量单元808和向量单元810使用单独的寄存器集(分别为标量寄存器812和向量寄存器814),并且在它们之间传送的数据被写入存储器,并且随后从一级(L1)高速缓存806回写,但本发明的备选实施例可使用不同的方案(例如,使用单个寄存器集或者包括允许在两个寄存器文件之间传送数据的通信路径,而不回写和回读)。
L2高速缓存804的本地子集是划分成单独本地子集,每个处理器核一个子集的全局L2高速缓存的一部分。每个处理器核具有到L2高速缓存804的其自己本地子集的直接访问路径。与其它处理器核访问其自己的本地L2高速缓存子集平行,处理器核读取的数据存储在其L2高速缓存子集804中,并且能够被快速访问。处理器核写入的数据存储在其自己的L2高速缓存子集804中,并且如果必要,则从其它子集中清空。环形网络确保用于共享数据的相干性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块等代理在芯片内相互进行通信。每个环形数据路径是每方向1012比特宽。
图8B是根据本发明的实施例,图8A中处理器核的一部分的展开图。图8B包括L1高速缓存804的L1数据高速缓存806A部分及有关向量单元810和向量寄存器814的更多细节。具体而言,向量单元816是16宽向量处理单元(VPU)(参阅16宽ALU 828),它执行整数、单精度浮点和双精度浮点指令中的一个或更多个指令。VPU支持通过混合单元(swizzle unit)820混合寄存器输入,通过数字转换单元882A-B支持数字转换,以及通过在存储器输入上的复制单元824支持复制。写入掩码寄存器826允许预测结果向量写入。
带有集成存储器控制器和图形的处理器
图9是根据本发明的实施例,可具有不止一个核,可具有集成存储器控制器,并且可具有集成图形的处理器900的框图。图9中的实线框示出带有单核902A、系统代理910、有一个或更多个总线控制器单元916的集的处理器900,而虚线框的可选添加物示出带有多个核902A-N、系统代理单元910中有一个或更多个集成存储器控制器单元914的集及专用逻辑908的备选处理器900。
因此,处理器900的不同实现可包括:1) CPU,带有是集成图形和/或科学(吞吐量)逻辑的专用逻辑908(可包括一个或更多个核)和是一个或更多个专用核(例如,通用有序核、通用失序核、两者的组合)的核902A-N;2)协处理器,带有是预期主要用于图形和/或科学(吞吐量)的大量专用核的核902A-N;以及3)协处理器,带有是大量通用有序核的核902A-N。因此,处理器900可以是通用处理器、协处理器或专用处理器,如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多核(MIC)协处理器(包括30或更多个核)、嵌入式处理器或诸如此类。处理器可在一个或多个芯片上实现。处理器900可以是在使用例如BiCOMS、CMOS或NMOS等多个工艺技术的任何技术的一个或更多个衬底的一部分和/或可在该衬底上实现。
存储器分层结构包括核内的一个或更多个级的语缓存、集或一个或更多个共享高速缓存单元906及耦合到集成存储器控制器单元914的集的外部存储器(未示出)。共享高速缓存单元集可包括一个或更多个中间级高速缓存,如二级(L2)、三级(L3)、四级(L4)或其它级的高速缓存、最后一级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环形的互连单元912将集成图形逻辑908、共享高速缓存单元906集和系统代理单元910/集成存储器控制器单元914互连,但备选实施例可使用任何数量的已知技术将此类单元互连。在一个实施例中,保持在一个或更多个高速缓存单元906与核902A-N之间的相干性。
在一些实施例中,一个或更多个核902A-N能够进行多线程处理。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910例如可包括功率控制单元(PCU)和显示单元。PCU可以是或者包括调节核902A-N和集成图形逻辑908的功率状态所需的逻辑和组件。显示单元用于驱动一个或更多个外部连接的显示器。
核902A-N可在体系结构指令集方面是同类或异类;也就是说,两个或更多个核902A-N可以能够执行相同指令集,而其它核可以能够只执行该指令集的子集或不同指令集。
示范计算机体系结构
图10-13是示范计算机体系结构的框图。技术领域中已知用于膝上型、台式、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换器、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、手机、便携式媒体播放器、手持式装置及各种其它电子装置的其它系统设计和配置也适合。通常,能够包含如本文中公开的处理器和/或其它执行逻辑的大量系统或电子装置通常是适合的。
现在参照图10,,图中所示是根据本发明的一个实施例的系统1000的框图。系统1000可包括耦合到控制器集线器1020的一个或多个处理器1010、1015。在一个实施例中,控制器集线器1020包括图形存储器控制器集线器(GMCH) 1090和输入/输出集线器(IOH)1050(可在单独的芯片上);GMCH 1090包括存储器1040和协处理器1045耦合到的存储器和图形控制器;IOH 1050耦合输入/输出(I/O)装置1060到GMCH 1090。备选,存储器和图形控制器之一或两者集成在处理器内(如本文中所述),存储器1040和协处理器1045直接耦合到处理器1010,并且控制器集线器1020在带有IOH 1050的单个芯片中。
另外处理器1015的可选性质在图10中通过虚线示出。每个处理器1010、1015可包括本文中所述的一个或更多个处理核,并且可以是某一版本的处理器900。
存储器1040例如可以是动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器1020经诸如前侧总线(FSB)、诸如快速路径互连(QPI)等点对点接口或类似连接1095等多点分支总线与处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器或诸如此类。在一个实施例中,控制器集线器1020可包括集成图形加速器。
在包括体系结构特性、微体系结构特性、热消耗特性、功率消耗特性及诸如此类的品质指标谱(spectrum of metrics of merit)方面,在处理资源1010、1015之间能够存在多种差别。
在一个实施例中,处理器1010执行控制通用类型的数据处理操作的指令。协处理器指令可嵌在指令内。处理器1010将这些协处理器指令识别为应由附连的协处理器1045执行的类型。相应地,处理器1010在协处理器总线或其它互连上向协处理器1045发出这些协处理器指令(或表示协处理器指令的控制信号)。协处理器1045接受并执行收到的协处理器指令。
现在参照图11,图中示出的是根据本发明的一实施例的第一更具体的示范系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并且包括经点对点互连1150耦合的第一处理器1170和第二处理器1180。每个处理器1170和1180可以是某一版本的处理器900。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
处理器1170和1180示为分别包括集成存储器控制器(IMC)单元1172和1182。处理器170也包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可使用P-P接口电路1178、1188,经点对点(P-P)接口1150交换信息。如图11所示,IMC 1172和1182将处理器耦合到相应存储器,即存储器1132和存储器1134,这些存储器可以是在本地附连到相应处理器的主存储器一部分。
处理器1170、1180每个可使用点对点接口电路1176、1194、1186和1198,经各个P-P接口1152、1154与芯片集1190交换信息。芯片集1190可经高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器或诸如此类。
共享高速缓存(未示出)可包括在处理器中或者在两个处理器外,仍经P-P互连与处理器连接,使得如果某一处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
芯片集1190可经接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外设组件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线等总线,但本发明的范围并不限于此。
如图11所示,各种I/O装置1114可与将第一总线1116耦合到第二总线1120的总线桥1118一起耦合到第一总线1116。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器等一个或更多个另外的处理器耦合到第一总线1116。在一个实施例中,第二总线1120可以为低引脚数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线1120,例如包括键盘和/或鼠标1122、通信装置1127和诸如磁盘驱动器或其它海量存储装置等可包括指令/代码和数据1130的存储单元1128。此外,音频I/O 1124可耦合到第二总线1120。要注意的是,其它体系结构也是可能的。例如,系统可实现多点分支总线或其它此类体系结构,而不是图11的点对点体系结构。
现在参照图12,图中所示是根据本发明的一实施例的第二更具体的示范系统1200的框图。图11和12中类似的元素有着类似的标号,并且图11的某些方面已从图12忽略以便避免混淆图12的其它方面。
图12示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1182。因此,CL 1172、1182包括集成存储器控制器单元,并且包括I/O控制逻辑。图12示出不但存储器1132、1134耦合到CL 1172、1172,而且I/O装置1214也耦合到控制逻辑1172、1182。遗留I/O装置1215耦合到芯片集1190。
现在参照图13,图中所示是根据本发明的一实施例的SoC 1300的框图。图9中类似的元素有着类似的标号。此外,虚线框是在更高级SoC上的可选特征。在图13中,互连单元1302耦合到:包括有一个或更多个核202A-N的集和共享高速缓存单元906的应用处理器1310、系统代理单元910、总线控制器单元916、集成存储器控制器单元914、有可包括集成图形逻辑、图像处理器、音频处理器和视频处理器的一个或更多个协处理器1320的集、静态随机存取存储器(SRAM)单元1330、直接存储器存取(DMA)单元1332及用于耦合到一个或更多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括专用处理器,如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器或诸如此类。
本文中公开的机制的实施例可在硬件、软件、固件中实现,或者是此类实施方案的组合。本发明的实施例可实现为在包括至少一个处理器、数据存储系统(包括易失性和非易失性存储器和/或存储元素)、至少一个输入装置和至少一个输出装置的可编程系统上执行的计算机程序或程序代码。
诸如图11中所示代码1130等程序代码可应用到输入指令以执行本文中所述功能,并且生成输出信息。输出信息可以已知方式应用到一个或多个输出装置。对本申请来说,处理系统包括具有处理器的任一系统,如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以面向过程或对象的高级编程语言实现以便与处理系统进行通信。程序代码在需要时也可以汇编或机器语言实现。实际上,本文中所述机制在范围方面不限于任何特定编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或几个方面可由在表示处理器内各种逻辑的机器可读介质上存储的代表性指令实现,指令在由机器读取时,促使机器制造逻辑以执行本文中所述技术。称为“IP核”的此类表示可存储在有形的机器可读介质上,并且提供到各种客户或生产设施以加载到实际形成逻辑或处理器的制造机中。
此类机器可读存储介质可包括但不限于由机器或装置制成或形成的制品的非暂时性、有形布置,包括诸如硬盘等存储介质、包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘等任何类型的磁盘、诸如只读存储器(ROM)等半导体装置、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除编程只读存储器(EPROM)、闪存、电擦除可编程只读存储器(EEEPROM)等随机存取存储器(RAM)、相变存储器(PCM)、磁卡或光学卡或适用于存储电子指令的任何其它类型的介质。
相应地,本发明的实施例也包括含指令或含诸如硬件描述语言(HDL)等设计数据,定义本文中所述结构、电路、设备、处理器和/或系统特征的非暂时性、有形机器可读介质。此类实施例也可称为程序产品。
仿真(包括二进制转换、代码变形等)
在一些情况下,指令转换器可用于将指令从来源指令集转换到目标指令集。例如,指令转换集可将指令转化(例如,使用静态二进制转换、包括动态编译的动态二进投影转换)、变形、仿真或以其它方式转换成要由核处理的一个或更多个其它指令。指令转换器可在硬件、固件、软件或其组合中实现。指令转换器可在处理器上,在处理器外,或者一部分在处理器上,一部分在处理器外。
图14是根据本发明的实施例,对比使用软件指令转换器将来源指令集中二进制指令转换成目标指令集中二进制指令的框图。在所示实施例中,指令转换器是软件指令转换器,但备选,指令转换器可在软件、固件、硬件或其各种组合中实现。图14示出高级语言1402中的程序可使用x86编译器1404编译以生成可由带有至少一个x86指令集核1416的处理器本机执行的x86二进制代码1406。通过兼容执行或以其它方式处理(1) Intel x86指令集核的指令集的相当大部分或(2)旨在在带有至少一个x86指令集核的Intel处理器上运行的应用程序或其它软件的对象代码版本,以便实现与带有至少一个x86指令集核的Intel处理器实质上相同的结果,带有至少一个x86指令集核1416的处理器表示能够与带有至少一个x86指令集核的Intel处理器实质上执行相同的功能。x86编译器1404表示用于生成x86二进制代码1406(例如,对象代码)的编译器,x86二进制代码1406能够在有或无另外链接处理的情况下,在带有至少一个x86指令集核1416的处理器上执行。类似地,图14示出高级语言1402中的程序可使用备选指令集编译器1408编译,以生成可由带有至少一个x86指令集核1414的处理器(例如,带有执行CA Sunnyvale的MIPS Technologies的MIPS指令集和/或执行CASunnyvale的ARM Holdings的ARM指令集的核的处理器)本机执行的备选指令集二进制代码1410。指令转换器1412用于将x86二进制代码1406转换成可由无x86指令集核1414的处理器本机执行的代码。此转换的代码不可能与备选指令集二进制代码1410相同,这是因为能够进行此操作的指令转换器难以制造;然而,转换的代码将完成一般操作,并且由来自备选指令集的指令组成。因此,指令转换器1412表示软件、固件、硬件或其组合,通过仿真、模拟或任何其它过程,允许没有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1406。
在具体实施方式和权利要求书中,已使用术语“耦合”和/或“连接”及其衍生词。应理解,这些术语无意作为彼此的同义词。相反,在特定实施例中,“连接”可用于指两个或更多个元素相互的直接物理或电接触。“耦合”可指两个或更多个元素的直接物理或电接触。然而,术语“耦合”也可指两个或更多个元件相互不直接接触,但仍相互合作或交互。例如,核可通过一个或更多个中间组件与高速缓存部分耦合。在图中,箭头用于示出连接和耦合。
在具体实施方式和/或权利要求中,可已使用术语“逻辑”、“单元”、“模块”或“组件”。要理解的是,这些元素可包括硬件、固件、软件或其组合。这些元素的示例可包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑装置、包括指令的存储器装置及诸如此类和其组合。在一些实施例中,这些元素可包括晶体管和/或栅极和/或其它电路组件。
在上面的描述中,已陈述特定的细节以便提供实施例的详尽理解。然而,实践其它实施例可无需这些特定的细节的一些细节。本发明的范围不由上面提供的特定示例确定,而只由下面的权利要求确定。在其它情况下,公知的电路、结构、装置和操作以框图开展示出或者未详细显示以免混淆对描述的理解。在已示出和描述多个组件的情况下,在一些实例中,它们可转而作为单个组件集成在一起。在已示出和描述单个组件的其它情况下,在一些实例中,它可分离成两个或更多个组件。
各种操作和方法已描述。一些方法已在流程图中以相对基本形式描述,但操作可可选地添加到方法和/或从方法中删除。另外,虽然流程图根据示例实施例示出操作的特定顺序,但该特定顺序是示范。备选实施例可选地可以不同顺序执行操作,组合某些操作,重叠某些操作等。
某些操作可由硬件组件执行,或者可在机器可执行或电路可执行指令中实施,这些指令可促使和/或导致编程有指令的机器、电路或硬件组件(例如,处理器、处理器的一部分、电路等)执行操作。操作也可可选地由硬件和软件的组合执行。
一些实施例包括制品(例如,计算机程序产品),制品包括非暂时性机器可读存储介质。非性机器可读存储介质不包括暂时性传播信号。非暂时性机器可读存储介质可包括存储机器可读形式的信息的机制。机器可读存储介质可在上面已存储有指令或指令序列,指令或指令序列如果和/或在由机器执行时,用于促使机器执行和/或导致机器执行本文中公开的一个或更多个操作、方法或技术。适合机器的示例包括但不限于处理器和具有此类处理器的计算机系统或其它电子装置。作为各种示例,非暂时性机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储装置、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM (PROM)、可擦除可编程ROM (EPROM)、电可擦除可编程ROM (EEPROM)、随机存取存储器(RAM)、静态RAM (SRAM)、动态RAM (DRAM)、闪存存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂时性存储器、非暂时性数据存储装置。
本说明书通篇对例如“一个实施例”、“一实施例”、“一个或更多个实施例”、“一些实施例”的引用指示特定特征可包括在本发明的实践中,但不是必需包括在内。类似地,在描述中,各种特征有时组合在单个实施例、图形或其描述中以便简化公开内容和帮助理解各种发明方面。然而,公开内容的此方法不可理解为反映发明要求比每个权利要求项中明确所述特征更多特征的意图。相反,如下述权利要求所反映的一样,发明的方面依赖比单个公开实施例的所有特征更少的特征。因此,在具体实施方式后的权利要求由此明确结合在此具体实施方式中,每个权利要求项本身保持为本发明的单独实施例。
示例实施例
以下示例涉及其它实施例。示例中的细节可在一个或更多个实施例中任意处使用。
示例1是处理器,它包括对应于分布式高速缓存的第一高速缓存部分,并且具有总数少于处理器的逻辑处理器的总数的高速缓存侧地址监视器存储位置的高速缓存侧地址监视器单元。每个高速缓存侧地址监视存储位置将存储要监视的地址。处理器也包括核侧地址监视单元,该单元对应于第一核,并且具有与第一核的一个或更多个逻辑处理器的数量相同数量的核侧地址监视存储位置。每个核侧地址监视存储位置将存储要监视的一个地址和用于第一核的不同对应逻辑处理器的监视状态。处理器也包括高速缓存侧地址监视存储溢出单元,该单元对应于所述第一高速缓存部分,以在无未使用的高速缓存侧地址监视存储位置可用于存储要监视的额外地址时,强制实行地址监视存储溢出策略。
示例2包括前面任一示例的处理器,并且可选地包括对应于第一核并且与核侧地址监视单元耦合的核侧触发单元。核侧触发单元将在对应核侧地址监视存储位置具有准备就绪可以触发的监视状态并且触发事件被检测到时,触发第一核的逻辑处理器。
示例3包括前面任一示例的处理器,并且可选地包括与高速缓存侧地址监视单元耦合的高速缓存侧地址监视存储位置再使用单元,以在共用高速缓存侧地址监视存储位置中记录来自不同逻辑处理器对相同监视地址的监视请求。
示例4包括示例3的处理器,其中,共用高速缓存侧地址监视存储位置包括记录提供了对相同监视地址的监视请求的不同逻辑处理器的结构。
示例5包括前面任一示例的处理器,其中,处理器具有不止四十个硬件线程,并且其中,对应于第一高速缓存部分的高速缓存侧地址监视单元的高速缓存侧地址监视存储位置的总数是至少二十个高速缓存侧地址监视存储位置,但少于不止四十个硬件线程的总数。
示例6包括前面任一示例的处理器,其中,高速缓存侧地址监视单元的高速缓存侧地址监视存储位置的总数相对于处理器的逻辑处理器的所述总数是足够的,从而高速缓存侧地址监视存储位置的溢出的可能性不超过十万分之一。
示例7包括前面任一示例的处理器,其中,响应指令指示要监视的第一地址,高速缓存侧地址监视单元将在高速缓存侧地址监视存储位置中存储第一地址。此外,核侧地址监视单元将在核侧地址监视存储位置中存储第一地址。
示例8包括前面任一示例的处理器,其中,逻辑处理器是硬件线程。
示例9包括前面任一示例的处理器,其中,高速缓存侧地址监视存储溢出单元将强制实行地址监视存储溢出策略,该策略包括强制读取事务来使用共享状态。
示例10包括前面任一示例的处理器,其中,高速缓存侧地址监视存储溢出单元将强制实行地址监视存储溢出策略,该策略包括发送失效请求到可能具有待定监视请求的所有核。
示例11包括前面任一示例的处理器,其中,高速缓存侧地址监视存储溢出单元将检查溢出结构以确定哪些核可能具有待定监视请求。
示例12是处理指令,包括互连和与互连耦合的处理器的系统。处理器包括高速缓存部分控制单元的第一地址监视单元,该第一地址监视单元对应于分布式高速缓存的第一高速缓存部分,并且具有总数少于处理器的硬件线程的总数的地址监视存储位置。每个地址监视存储位置将存储要监视的地址。处理器也包括核接口的第二地址监视单元,该单元对应于第一核,并且具有与第一核的一个或更多个硬件线程的数量相同数量的地址监视存储位置。第二地址监视单元的每个地址监视存储位置将存储要监视的地址和用于第一核的不同对应硬件线程的监视状态。处理器还包括在第一地址监视单元的所有地址监视存储位置已使用,并且无地址监视存储位置可用于存储用于监视请求的地址时,实现地址监视存储溢出策略的高速缓存部分控制单元的地址监视存储溢出单元。系统也包括与互连耦合的动态随机存取存储器、与互连耦合的无线通信装置和与互连耦合的图像捕捉装置。
示例13包括示例12的系统,其中,地址监视存储溢出单元将实现地址监视存储溢出策略,该策略包括强制读取事务来使用共享状态和发送失效请求到可能具有待定监视请求的所有核。
示例14包括示例12-13任一项的系统,其中,处理器具有不止四十个硬件线程,并且其中,第一地址监视单元的地址监视存储位置的总数是至少二十,但少于处理器的不止四十个硬件线程的总数。
示例15包括示例12-14任一项的系统,其中,处理器还包括高速缓存部分控制单元的地址监视存储位置再使用单元,以在共用地址监视存储位置中记录来自不同硬件线程对相同监视地址的监视请求。
示例16是在处理器中的方法,方法包括接收指示地址,并且指示在多核处理器的第一核的第一逻辑处理器监视对地址的写入的第一指令。响应第一指令,方法包括在对应于第一核的多个核侧地址监视存储位置的第一核侧地址监视存储位置中存储由第一指令指示的地址。多个核侧地址监视存储位置的数量等于第一核的逻辑处理器的数量。方法也包括在对应于分布式高速缓存的第一高速缓存部分的多个高速缓存侧地址监视存储位置的第一高速缓存侧地址监视存储位置中存储由第一指令指示的地址。多个高速缓存侧地址监视存储位置的总数少于多核处理器的逻辑处理器的总数。方法还包括将监视状态更改成猜测状态。
示例17包括示例16的方法,并且可选地包括接收也指示地址,并且指示在第二核的第二逻辑处理器监视对地址的写入的第二指令,以及在第一高速缓存侧地址监视存储位置中记录对第二核的地址的监视请求。
示例18包括示例17的方法,其中,在第一高速缓存侧地址监视存储位置中记录对第二核的地址的监视请求包括更改具有对应于多核处理器的每个核的不同比特的核掩码中的比特。
示例19包括前面任一示例的方法,并且可选地包括接收指示第二地址,并且指示在第一逻辑处理器监视对第二地址的写入的第二指令,确定在对应于第一高速缓存部分的多个高速缓存侧地址监视存储位置中无可用高速缓存侧地址监视存储位置,以及确定进入高速缓存侧地址监视存储位置溢出模式。
示例20包括示例19的方法,并且可选地包括在高速缓存侧地址监视存储位置溢出模式中的同时,强制对应于第一高速缓存部分的所有读取事务来使用共享高速缓存相干状态,并且发送对应于第一高速缓存部分的失效请求到多核处理器的可能具有一个或更多个待定监视请求的所有核。
示例21包括前面任一示例的方法,并且可选地包括接收指示在第一逻辑处理器的地址的第二指令,以及响应第二指令,更改监视状态为等待触发状态。
示例22包括执行如示例16-21任一项的方法的处理器或其它设备。
示例23包括处理器或其它设备,处理器或其它设备包括用于执行如示例16-21任一项的方法的部件。
示例24包括处理器,处理器包括集成电路和/或逻辑和/或单元和/或组件和/或模块和/或部件或其任何组合以执行如示例16-21任一项的方法。
示例25包括可选地非暂时性机器可读介质,介质可选地存储或以其它方式提供一个或更多个指令,指令如果和/或在由机器执行时,用于促使机器执行如示例16-21任一项的方法。
示例26包括计算机系统,计算机系统包括互连、与互连耦合的处理器及DRAM、图形芯片、无线通信芯片、相变存储器和视频摄像机至少之一,该至少一项与互连、处理器和/或计算机系统耦合以执行如示例16-21任一项的方法。
示例27包括执行实质上如本文中所述的一个或更多个操作或任何方法的处理器或其它设备。
示例28包括处理器或其它设备,处理器或其它设备包括用于执行实质上如本文中所述的一个或更多个操作或任何方法的部件。
示例29包括执行实质上如本文中公开的指令的处理器或其它设备。
示例30包括处理器或其它设备,处理器或其它设备包括用于执行实质上如本文中公开的指令的部件。

Claims (25)

1.一种处理器,包括:
高速缓存侧地址监视单元,对应于分布式高速缓存的第一高速缓存部分,并且具有总数少于所述处理器的逻辑处理器的总数的高速缓存侧地址监视存储位置,每个高速缓存侧地址监视存储位置存储要监视的地址;
核侧地址监视单元,对应于第一核,并且具有与所述第一核的一个或更多个逻辑处理器的数量相同的数量的核侧地址监视存储位置,每个核侧地址监视存储位置存储要监视的地址和用于所述第一核的不同对应逻辑处理器的监视状态;以及
高速缓存侧地址监视存储溢出单元,对应于所述第一高速缓存部分,以在无未使用的高速缓存侧地址监视存储位置可用于存储要监视的额外地址时,强制实行地址监视存储溢出策略。
2.如权利要求1所述的处理器,还包括对应于所述第一核,并且与所述核侧地址监视单元耦合的核侧触发单元,所述核侧触发单元在对应核侧地址监视存储位置具有准备就绪可以触发的监视状态并且触发事件被检测到时,触发所述第一核的逻辑处理器。
3.如权利要求1所述的处理器,还包括与所述高速缓存侧地址监视单元耦合,以在共用高速缓存侧地址监视存储位置中记录来自不同逻辑处理器对相同监视地址的监视请求的高速缓存侧地址监视存储位置再使用单元。
4.如权利要求3所述的处理器,其中所述共用高速缓存侧地址监视存储位置包括记录提供了对所述相同监视地址的所述监视请求的所述不同逻辑处理器的结构。
5.如权利要求1所述的处理器,其中所述处理器具有不止四十个硬件线程,并且其中对应于所述第一高速缓存部分的所述高速缓存侧地址监视单元的所述高速缓存侧地址监视存储位置的所述总数是至少二十个高速缓存侧地址监视存储位置,但少于所述不止四十个硬件线程的总数。
6.如权利要求1所述的处理器,其中所述高速缓存侧地址监视单元的所述高速缓存侧地址监视存储位置的所述总数相对于所述处理器的逻辑处理器的所述总数是足够的,从而所述高速缓存侧地址监视存储位置的溢出的可能性不超过十万分之一。
7.如权利要求1-6任一项所述的处理器,其中,响应指示要监视第一地址的指令,所述高速缓存侧地址监视单元将在所述高速缓存侧地址监视存储位置中存储所述第一地址,并且所述核侧地址监视单元将在核侧地址监视存储位置中存储所述第一地址。
8.如权利要求1-6任一项所述的处理器,其中所述逻辑处理器包括硬件线程。
9.如权利要求1-6任一项所述的处理器,其中所述高速缓存侧地址监视存储溢出单元将强制实行所述地址监视存储溢出策略,所述策略包括强制读取事务来使用共享状态。
10.如权利要求1-6任一项所述的处理器,其中所述高速缓存侧地址监视存储溢出单元将强制实行所述地址监视存储溢出策略,所述策略包括发送失效请求到可能具有待定监视请求的所有核。
11.如权利要求10所述的处理器,其中所述高速缓存侧地址监视存储溢出单元将检查溢出结构以确定哪些核可能具有待定监视请求。
12.一种处理指令的系统,包括:
互连;
与所述互连耦合的处理器,所述处理器包括:
高速缓存部分控制单元的第一地址监视单元,对应于分布式高速缓存的第一高速缓存部分,并且具有总数少于所述处理器的硬件线程的总数的地址监视存储位置,每个地址监视存储位置存储要监视的地址;
核接口单元的第二地址监视单元,对应于第一核,并且具有与所述第一核的一个或更多个硬件线程的数量相同的数量的地址监视存储位置,所述第二地址监视单元的每个地址监视存储位置存储要监视的地址和用于所述第一核的不同对应硬件线程的监视状态;以及
所述高速缓存部分控制单元的地址监视存储溢出单元,在所述第一地址监视单元的所有地址监视存储位置已使用,并且无地址监视存储位置可用于存储用于监视请求的地址时,用来实现地址监视存储溢出策略;
与所述互连耦合的动态随机存取存储器;
与所述互连耦合的无线通信装置;以及与所述互连耦合的图像捕捉装置。
13.如权利要求12所述的系统,其中所述地址监视存储溢出单元将实现所述地址监视存储溢出策略,所述策略包括:
强制读取事务来使用共享状态;以及
发送失效请求到可能具有待定监视请求的所有核。
14.如权利要求12-13任一项所述的系统,其中所述处理器具有不止四十个硬件线程,并且其中所述第一地址监视单元的所述地址监视存储位置的所述总数是至少二十,但少于所述处理器的所述不止四十个硬件线程的所述总数。
15.如权利要求12-13任一项所述的系统,其中所述处理器还包括所述高速缓存部分控制单元的地址监视存储位置再使用单元,以在共用地址监视存储位置中记录来自不同硬件线程对相同监视地址的监视请求。
16.一种在处理器中的方法,包括:
接收指示地址,并且指示在多核处理器的第一核的第一逻辑处理器监视对所述地址的写入的第一指令;以及
响应所述第一指令:
在对应于所述第一核的多个核侧地址监视存储位置的第一核侧地址监视存储位置中存储由所述第一指令指示的所述地址,其中所述多个核侧地址监视存储位置的数量等于所述第一核的逻辑处理器的数量;
在对应于分布式高速缓存的第一高速缓存部分的多个高速缓存侧地址监视存储位置的第一高速缓存侧地址监视存储位置中存储由所述第一指令指示的所述地址,其中所述多个高速缓存侧地址监视存储位置的总数少于所述多核处理器的逻辑处理器的总数;以及
将监视状态更改成猜测状态。
17.如权利要求16所述的方法,还包括:
接收也指示所述地址,并且指示在第二核的第二逻辑处理器监视对所述地址的写入的第二指令;以及
在所述第一高速缓存侧地址监视存储位置中记录对所述第二核的所述地址的监视请求。
18.如权利要求17所述的方法,其中在所述第一高速缓存侧地址监视存储位置中记录对所述第二核的所述地址的所述监视请求包括更改具有对应于所述多核处理器的每个核的不同比特的核掩码中的比特。
19.如权利要求16所述的方法,还包括:
接收指示第二地址,并且指示在所述第一逻辑处理器监视对所述第二地址的写入的第二指令;
确定在对应于所述第一高速缓存部分的所述多个高速缓存侧地址监视存储位置中无可用高速缓存侧地址监视存储位置;以及
确定进入高速缓存侧地址监视存储位置溢出模式。
20.如权利要求19所述的方法,还包括在所述高速缓存侧地址监视存储位置溢出模式中时:
强制对应于所述第一高速缓存部分的所有读取事务来使用共享高速缓存相干状态;以及
发送对应于所述第一高速缓存部分的失效请求到所述多核处理器的可能具有一个或更多个待定监视请求的所有核。
21.如权利要求16所述的方法,还包括:
接收指示在所述第一逻辑处理器的所述地址的第二指令;以及
响应所述第二指令,更改所述监视状态为等待触发状态。
22.一种执行如权利要求16-21任一项所述的方法的处理器。
23.一种处理器,包括用于执行如权利要求16-21任一项所述的方法的部件。
24.一种包括存储一个或更多个指令的非暂时性机器可读介质的制品,所述指令在由机器执行时,可操作用于促使所述机器执行如权利要求16-21任一项所述的方法。
25.一种计算机系统,包括互连、与所述互连耦合的处理器、与所述互连耦合的无线通信芯片及与所述互连耦合的视频摄像机,所述计算机系统执行如权利要求16-21任一项所述的方法。
CN201480047555.XA 2014-10-03 2014-10-03 实现监视对地址的写入的指令的可扩展机制 Active CN105683922B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/059130 WO2015048826A1 (en) 2013-09-27 2014-10-03 Scalably mechanism to implement an instruction that monitors for writes to an address

Publications (2)

Publication Number Publication Date
CN105683922A true CN105683922A (zh) 2016-06-15
CN105683922B CN105683922B (zh) 2018-12-11

Family

ID=56973722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480047555.XA Active CN105683922B (zh) 2014-10-03 2014-10-03 实现监视对地址的写入的指令的可扩展机制

Country Status (3)

Country Link
JP (1) JP6227151B2 (zh)
KR (1) KR101979697B1 (zh)
CN (1) CN105683922B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255520A (zh) * 2016-12-29 2018-07-06 英特尔公司 N路监测器
CN110865968A (zh) * 2019-04-17 2020-03-06 成都海光集成电路设计有限公司 多核处理装置及其内核之间数据传输方法
CN111857591A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 用于执行指令的方法、装置、设备和计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101097544A (zh) * 2006-06-30 2008-01-02 英特尔公司 虚拟化事务存储器的全局溢出方法
CN101460927A (zh) * 2006-06-06 2009-06-17 高通股份有限公司 处理器核心堆栈扩展
US20090172284A1 (en) * 2007-12-28 2009-07-02 Zeev Offen Method and apparatus for monitor and mwait in a distributed cache architecture

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101460927A (zh) * 2006-06-06 2009-06-17 高通股份有限公司 处理器核心堆栈扩展
CN101097544A (zh) * 2006-06-30 2008-01-02 英特尔公司 虚拟化事务存储器的全局溢出方法
US20090172284A1 (en) * 2007-12-28 2009-07-02 Zeev Offen Method and apparatus for monitor and mwait in a distributed cache architecture

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255520A (zh) * 2016-12-29 2018-07-06 英特尔公司 N路监测器
CN108255520B (zh) * 2016-12-29 2024-04-05 英特尔公司 N路监测器
CN110865968A (zh) * 2019-04-17 2020-03-06 成都海光集成电路设计有限公司 多核处理装置及其内核之间数据传输方法
CN110865968B (zh) * 2019-04-17 2022-05-17 成都海光集成电路设计有限公司 多核处理装置及其内核之间数据传输方法
CN111857591A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 用于执行指令的方法、装置、设备和计算机可读存储介质

Also Published As

Publication number Publication date
KR20160041950A (ko) 2016-04-18
JP2016532233A (ja) 2016-10-13
KR101979697B1 (ko) 2019-05-17
JP6227151B2 (ja) 2017-11-08
CN105683922B (zh) 2018-12-11

Similar Documents

Publication Publication Date Title
US11281562B2 (en) Method and system for cache agent trace and capture
CN104954356B (zh) 保护共享的互连以用于虚拟机
US10489309B2 (en) Memory protection key architecture with independent user and supervisor domains
TWI556161B (zh) 用以實施監測寫入至一位址的指令之處理器、系統和方法
US10248568B2 (en) Efficient data transfer between a processor core and an accelerator
EP3014623B1 (en) Hybrid memory device
US9128781B2 (en) Processor with memory race recorder to record thread interleavings in multi-threaded software
CN105320611A (zh) 用于细粒存储器保护的方法和设备
CN105264513A (zh) 用于过程返回地址验证的系统和方法
KR102132805B1 (ko) 커널 모듈을 위한 멀티코어 메모리 데이터 레코더
TWI748970B (zh) 用於遠端監視的設備
TWI514144B (zh) 積聚分頁錯失之信號傳遞與處置技術
CN104823172A (zh) 实时指令跟踪处理器、方法以及系统
CN104813278A (zh) 对二进制转换的自修改代码以及交叉修改代码的处理
CN104969199A (zh) 实施黑名单分页结构指示值的处理器、方法,以及系统
TWI742120B (zh) 用以識別及避免在虛擬機器監控器與客端虛擬機器之間追蹤衝突的處理器延伸的處理系統、晶片上系統及方法
CN105027137B (zh) 用于针对增强型安全检查的页走查扩展的装置和方法
TW201344435A (zh) 用於在階層式快取設計之快取記憶體間有效通訊的方法及設備
WO2018044475A1 (en) Managing enclave memory pages
CN104969178A (zh) 用于实现便笺式存储器的装置和方法
CN106293894A (zh) 执行事务性功率管理的硬件设备和方法
US9274860B2 (en) Multi-processor device and inter-process communication method thereof
CN109661656A (zh) 用于利用条件所有权请求的智能存储操作的方法和装置
CN108369517A (zh) 聚合分散指令
TW201333820A (zh) 於多核心處理器中的先前存取資料之檢索技術

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant