CN104952033A - 分布式图形处理器分级中的系统一致性 - Google Patents

分布式图形处理器分级中的系统一致性 Download PDF

Info

Publication number
CN104952033A
CN104952033A CN201510087785.5A CN201510087785A CN104952033A CN 104952033 A CN104952033 A CN 104952033A CN 201510087785 A CN201510087785 A CN 201510087785A CN 104952033 A CN104952033 A CN 104952033A
Authority
CN
China
Prior art keywords
cache
speed cache
memory lines
cache structure
speed
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
CN201510087785.5A
Other languages
English (en)
Other versions
CN104952033B (zh
Inventor
A·科克
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 to CN201811472947.7A priority Critical patent/CN110109844B/zh
Publication of CN104952033A publication Critical patent/CN104952033A/zh
Application granted granted Critical
Publication of CN104952033B publication Critical patent/CN104952033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/455Image or video data

Landscapes

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

Abstract

方法和系统可以规定由计算切片的物理分布的集合执行多个工作项目。此外,可以由高速缓存结构维持与所述多个工作项目相关联的一个或多个存储器行在图形处理器、系统存储器和一个或多个主机处理器上的一致性。在一个示例中,多个交叉节点跟踪所述一个或多个存储器行,其中,在多个第一级(L1)高速缓存和物理分布的高速缓存结构上维持所述一个或多个存储器行的所述一致性。每一个L1高速缓存可以专用于计算切片的执行块,并且每一个交叉节点可以专用于计算切片。

Description

分布式图形处理器分级中的系统一致性
背景技术
诸如游戏和媒体播放器的某些应用可以使用嵌入式设计、图形处理单元等等,以便处理计算密集型工作负荷。在这样的情况中,中央处理单元(CPU)可以例如以一个或多个命令的形式将工作负荷派遣到GPU,其中GPU可以对于所述一个或多个命令做出响应而在内部执行包含多个工作项目的工作组。为了维持GPU上的工作项目和工作组之间的序列一致性,可以使用诸如屏障命令(“屏障”)、存储器篱障和未排序原子操作(“原子”)的解决方案。然而,这样的解决方案会是粗粒度的并且不能够控制具体的存储器存取顺序。而且,传统解决方案可能不能够确保在GPU和CPU上的存储器一惯性(例如,一致性),除非使用硬件刷新和软件栈调用,其中刷新和栈调用会对性能具有负面影响。
附图说明
通过阅读下面的说明书和所附权利要求书,并且通过参照下面的附图,实施例的各种优点对于本领域技术人员将变得显而易见,在附图中:
图1A是根据实施例的计算架构的示例的方框图;
图1B是根据实施例的计算切片的示例的方框图;
图2是根据实施例的操作图形处理器的方法的示例的流程图;
图3A到3E是根据实施例的一致性协议表的示例的说明;
图4是根据实施例的具有导航控制器的系统的示例的方框图;并且
图5是根据实施例的具有小形状因子的系统的示例的方框图。
具体实施方式
图1A和1B示出了可以通常作为计算平台的一部分的计算架构10,该计算平台例如以智能电话、平板电脑、移动互联网设备(MID)、智能电视(TV)、媒体播放器、笔记本电脑、桌面型计算机、服务器、可佩戴设备等等为例。如在图1A中最佳示出的,系统高速缓存12(例如,静态随机存取存储器/SRAM、探听过滤器)可以耦合到具有专用高速缓存16(16a-16c,例如SRAM)的多个主机处理器14(14a-14c)。系统高速缓存12也可以耦合到系统存储器18(例如,动态随机存取存储器/DRAM,“主存储器”),该系统存储器用于存储针对架构10的各种组件的数据、指令等等。每一个主机处理器14可以是能够执行与视觉内容的呈现相关联的硬件、脚本等等并且经由图形接口22将相关联的工作负荷发出到图形处理器20的中央处理单元(CPU)。系统高速缓存12可以通常跟踪与那些工作负荷相关联的存储器行(例如,高速缓存行或者其它数据结构)的存在,并且提供探听过滤服务,其中图形接口22可以评估从系统高速缓存12接收到的探听请求并且将它们发送到图形处理器20上的合适的高速缓存目的地用于进一步评估。
图形处理器20可以通常处理计算密集型工作负荷,例如以像素颜色值计算、直方图计算等等为例,以便支持和/或促进视觉内容(例如,三维/3D图形、非3D图像等等)的呈现。更具体地说,所说明的图形处理器20包括用于执行多个工作项目的计算切片24(24a-24d)的物理分布的集合,以及用于维持与多个工作项目相关联的一个或多个存储器行(例如,系统定义的尺寸)在图形处理器20、系统存储器18和主机处理器14上的一致性的高速缓存结构。如下面将更加详细讨论的,高速缓存结构可以提供维持工作项目和工作组之间的序列一致性、控制特定的存储器存取顺序并且确保存储器一惯性(例如,一致性)的细粒度方案。
如在图1B中最佳示出的,高速缓存结构可以包括多个第一级(L1)高速缓存26(“L1$”),每一个L1高速缓存26专用于计算切片24的执行块28。因此,在由高速缓存结构跟踪存储器行的同时,多个L1高速缓存26可以提供相对高的带宽和低的时延存储。每一个执行块28可以包括用于执行工作项目的执行单元(EU)34的阵列以及用于执行在寻址存储器中的数据操作数时涉及的有效地址计算(例如,使用整数算法)的地址生成单元(AGU)36。
高速缓存结构也可以包括物理分布的共享高速缓存结构30,其中在多个L1高速缓存26和共享高速缓存结构30之间维持一个或多个存储器行的一致性。将共享高速缓存结构30配置为物理分布的实体可以能够使共享高速缓存结构30的尺寸最大化,同时满足每一个执行块28的带宽需求。在所说明的示例中,共享高速缓存结构30被配置为具有多个排的第二级高速缓存(“L2$”)。在这样的情况下,共享高速缓存结构30可以使存储器行在多个排上形成散列,以便确保数据在共享高速缓存结构30上的均匀分布。所说明的方案可以提供较大的并且更加可调节的高速缓存,具有最小的探听惩罚(例如,对于处理探听请求的相对小的性能影响),在跨计算切片业务方面具有潜在的增加。可选地,共享高速缓存结构30可以被配置为多个独立的第二级(L2)高速缓存31,其中,每一个L2高速缓存31专用于计算切片。这样的方案可以提供执行块28的本地存储,同时最小化跨计算业务。这两个实现选择可以使用相同的探听跟踪逻辑实现一致性。
可选地,高速缓存结构可以包括用于跟踪一个或多个存储器行的多个交叉节点32(例如,高速缓存桥),每一个交叉节点32专用于计算切片24。交叉节点32可以将源自系统高速缓存12的探听请求分布到共享高速缓存结构30和L1高速缓存26。此外,交叉节点32可以从共享高速缓存结构30和多个L1高速缓存26收集一个或多个探听结果,并且将收集到的探听结果经由图形接口22传送到系统高速缓存12。如下面将更加详细讨论的,高速缓存结构可以使用修改、独占、共享、无效(MEDSI)协议来维持一个或多个存储器行的一致性。
所说明的架构10因此使用图形处理器20的高速缓存结构、主机处理器14的专用高速缓存16、系统高速缓存12和系统存储器18来实现能够维持图形工作项目和工作组之间的序列一致性、控制特定的存储器存取顺序并且确保整个架构10上的一致性的存储器/高速缓存分级。这样的细粒度方案相对于依赖于屏障、存储器篱障、未排序原子、硬件刷新和软件栈调用的传统方案会尤其有利。
例如,加载(例如,读取操作)和存储(例如,写入操作)跟踪可以开始于执行块28的级,其中系统存储器18的读取可以返回有效数据并且存储器分级中的较高级可以跟踪受影响的存储器行的存在,用于该分级中的下一个较低级。可以允许分级中的低级默默地丢弃它们的存储器行用于更换,除非修改了逐出行(例如,由于更换而被逐出的存储器行)。写入跟踪会是更加限制的,其中每一个写入的发起者可以基于该写入相对于存储器行的尺寸来在该发起者更新它的L1高速缓存26之前实现目的地地址的所有权。出于简化的目的,可以实现策略,其中仅允许修改的存储器行的一个拷贝存在于整个高速缓存结构上。这样的策略可以规定在相对精确地进行数据交换的同时跟踪存储器行的最新拷贝。
现在转到图2,示出了操作图形处理器的方法38。方法38可以被实现在可执行软件中作为存储在存储器的计算机或者计算机可读存储介质中的逻辑指令的集合,该存储器例如是随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等等,可以被实现在可配置逻辑中,该可配置逻辑例如以可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)为例,可以被使用电路技术实现在固定功能逻辑硬件中,该电路技术例如以专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或者晶体管-晶体管逻辑(TTL)技术或者其任意组合为例。
所说明的处理块40规定由计算切片的物理分布的集合来执行多个工作项目。块42可以由高速缓存结构维持与多个工作项目相关联的一个或多个存储器行在图形处理器、系统存储器和一个或多个主机处理器上的一致性。块42可以涉及由多个交叉节点跟踪一个或多个存储器行,其中,在多个L1高速缓存和物理分布的高速缓存结构上维持一个或多个存储器行的一致性,每一个L1高速缓存专用于计算切片的执行块并且每一个交叉节点专用于计算切片。而且,共享高速缓存结构可以或者使用多个独立的L2高速缓存来跟踪一个或多个存储器行,或者使该一个或多个存储器行中的至少一个在L2高速缓存的多个排上形成散列。在独立的L2高速缓存的情况下,每一个L2高速缓存可以专用于计算切片。
块42也可以涉及由多个交叉节点将源自耦合到一个或多个主机处理器的系统高速缓存的一个或多个探听请求分布到共享高速缓存结构和多个L1高速缓存。此外,块42可以规定由多个交叉节点从共享高速缓存结构和多个L1高速缓存收集一个或多个探听结果,并且由多个交叉节点将所述一个或多个探听结果传送到耦合到一个或多个主机处理器的系统高速缓存。块42也可以包括由高速缓存结构使用MESI协议来维持一个或多个存储器行的一致性。
图3A到3E通常示出了实现一致性协议的方案,其中每一个存储器行被标记有MESI(修改、独占、共享、无效)状态中的一个。具体地说,当存储器行仅存在于当前高速缓存中并且是“玷污”的(例如,存储器行已经从系统存储器中的值改变)时,可以使用修改状态。如果特定的高速缓存具有处于修改状态中的存储器行,则在允许将该存储器行从系统存储器读取之前,可以要求该高速缓存将与该存储器行相对应的数据写回到系统存储器。这样的“写回”会导致存储器行被改变到高速缓存中的独占状态。
当存储器行仅存在于当前高速缓存中并且是“干净”的(例如,存储器行与系统存储器中的值匹配)时,可以使用独占状态。在这样的情况下,响应于到高速缓存的读取请求,可以将存储器行改变到共享状态。存储器行也可以响应于到高速缓存的写入请求而改变到修改状态。共享状态可以指示存储器行是干净的并且其可以被存储在系统的其它高速缓存中。也可以在任意时间丢弃共享存储器行(例如,改变到无效状态)。无效状态可以用于指示存储器行未被使用(例如,被从高速缓存逐出)。如已经注意到的,高速缓存结构可以使用MESI协议来在图形处理器、系统存储器和主机处理器的专用高速缓存上维持存储器一致性。从特定的L1高速缓存(“发出的L1$”)的角度来采取图3A到3E中示出的示例。
例如,图3A示出了针对涉及特定的L1高速缓存的读取操作的一致性协议表44。在所说明的示例中,“原始请求”列45指示关于特定的存储器行执行的操作类型,“L2$”列47指示当操作被请求时L2高速缓存中的存储器行的状态,“其它L1$”列49指示当操作被请求时其它L1高速缓存中的存储器行的状态,“发出的L1$”51列指示当操作被请求时正在讨论的L1高速缓冲中的存储器行的状态,第一“L1$有效(SSV)”列53指示当操作被请求时子切片有效(SSV)高速缓存的数量(例如,针对存储器行具有有效数据的L1高速缓存的数量),“L2$状态”列55指示在操作被执行之后L2高速缓存中的存储器行的状态,“其它SS$”列57指示在操作被执行之后其它L1高速缓存中的存储器行的状态,“发出的SS$”列59指示在操作被执行之后正在讨论的L1高速缓存中的存储器行的状态,第二“L1$有效(SSV)”列61指示在操作被执行之后SSV高速缓存的数量,“SSV动作”列63指示关于与存储器行相关联的有效比特采取的动作,并且“Xsnp”列65指示在被请求的操作之后是否执行交叉探听操作。
因而,例如,如在表44的第一行54中示出的,当相对应的存储器行处于如在列47中示出的L2高速缓存中的修改状态、如在列49中示出的其它L1高速缓存中的共享状态以及如在列51中示出的发出的L1高速缓存中的无效状态时,读取操作可以涉及特定的L1高速缓存。在所说明的示例中,如在列53中示出的,SSC高速缓存的数量可以为一。如果这样,则在读取操作之后,存储器行将处于如在列55中示出的L2高速缓存中的修改状态、如在列57中示出的其它L1高速缓存中的共享状态以及如在列59中示出的发出的L1高速缓存中的共享状态(改变),其中,在所说明的示例中,如在列61中示出的,SSV高速缓存的数量将大于一。而且,如在列63中示出的,可以向发出的L1高速缓存中的存储器行附接有效比特,并且如在列65中示出的,可能不需要交叉探听操作(例如允许的默默逐出)。
相较而言,表44的第四行56例示了当相对应的存储器行处于如在列47中示出的L2高速缓存中的修改状态、如在列49中示出的其它L1高速缓存中的无效状态以及如在列51中示出的发出的L1高速缓存中的无效状态时,读取操作可以涉及特定的L1高速缓存。在所说明的示例中,如在列53中示出的,SSC高速缓存的数量可以为一。如果这样,则在读取操作之后,存储器行将处于如在列55中示出的L2高速缓存中的修改状态、如在列57中示出的其它L1高速缓存中的无效状态以及如在列59中示出的发出的L1高速缓存中的共享状态(由于状态改变),其中,在所说明的示例中,如在列61中示出的,SSV高速缓存的数量将大于一。如在列63中示出的,针对发出的L1高速缓存中的存储器行,可以更换有效比特,并且如在列65中示出的,可能不需要交叉探听操作。如在表44的剩余部分中例示的,针对其中相对应的存储器行处于L2高速缓存中的独占、共享和/或无效状态的读取操作情景,可以实现类似的转变和/或规则。
图3B示出了用于到发出的L1高速缓存的写入操作的一致性协议表46。在所说明的示例中,表46的第九行58例示了当相对应的存储器行处于如在列47中示出的L2高速缓存中的独占状态、如在列49中示出的其它L1高速缓存中的共享状态以及如在列51中示出的发出的L1高速缓存中的共享状态时,写入操作可以涉及特定的L1高速缓存。在所说明的示例中,如在列53中示出的,SSV高速缓存的数量将大于一。此外,在写入操作之后,存储器行将处于如在列55中示出的L2高速缓存中的修改状态(由于状态改变)、如在列57中示出的其它L1高速缓存中的无效状态(由于状态改变)、以及如在列59中示出的发出的L1高速缓存中的无效状态(由于状态改变),其中在所说明的示例中,如在列61中示出的,SSV高速缓存的数量将为零。如在列63中示出的,可以对在发出的L1高速缓存中的有效比特进行清零,并且如在列65中示出的,可以进行探听无效操作(“SnpInv”)。如在表46的剩余部分中例示的,对于其中相对应的存储器行处于L2高速缓存中的修改、共享和/或无效状态的写入操作情景,可以实现类似的转变和/或规则。
图3C示出了用于关于L2高速缓存的逐出和读取操作的一致性协议表48。在所说明的示例中,表48的第七行60例示了当相对应的存储器行处于如在列47中示出的L2高速缓存中的共享状态、如在列49中示出的其它L1高速缓存中的无效状态以及如在列51中示出的发出的L1高数缓存中的无效状态时,逐出操作可以从发出的L1高速缓存指向L2高速缓存。在所说明的示例中,如在列53中示出的,SSV高速缓存的数量将为零。在逐出操作之后,存储器行将处于如在列55中示出的L2高速缓存中的无效状态(改变)、如在列57中示出的其它L1高速缓存中的无效状态以及如在列59中示出的发出的L1高速缓存中的无效状态,其中在所说明的示例中,如在列61中示出的,SSV高速缓存的数量将为零。而且,关于如在列63中示出的有效比特,或者关于如在列65中示出的交叉探听操作,可以不需要采取动作。如在表46的剩余部分中例示的,对于其中相对应的存储器行处于L2高速缓存中的独占和/或修改状态的逐出操作情景,可以实现类似的转变和/或规则。
此外,表48的最后行62例示了当相对应的存储器行处于如在列47中示出的L2高速缓存中的无效状态、如在列49中示出的其它L1高数缓存中的无效状态以及如在列51中示出的发出的L1高数缓存中的无效状态时,可以将读取操作从发出的L1高速缓存指向L2高速缓存(例如,响应于L1高速缓存漏掉)。在所说明的示例中,如在列53中示出的,SSV高速缓存的数量可以为零。因而,在读取操作之后,存储器行将处于如在列55中示出的L2高速缓存中的共享状态(由于状态改变)、如在列57中示出的其它L1高速缓存中的无效状态以及如在列59中示出的发出的L1高速缓存中的无效状态,其中在所说明的示例中,如在列61中示出的,SSV高速缓存的数量保持为零。而且,关于如在列63中示出的有效比特,或者关于如在列65中示出的交叉探听操作,可以不需要采取动作。
图3D示出了用于源自耦合到主机处理器的高速缓存的探听无效操作的一致性协议表50,该主机处理器例如以已经讨论的主机处理器14(图1A)为例。在所说明的示例中,表50的第二行64例示了当相对应的存储器行处于如在列47中示出的L2高速缓存中的修改状态、如在列49中示出的其它L1高数缓存中的无效状态以及如在列51中示出的发出的L1高数缓存中的无效状态时,探听无效操作可以涉及图形高速缓存结构。在所说明的示例中,如在列53中示出的,SSV高速缓存的数量将为零。此外,在探听无效操作之后,存储器行将处于如在列55中示出的L2高速缓存中的无效状态、如在列57中示出的其它L1高速缓存中的无效状态以及如在列59中示出的发出的L1高速缓存中的无效状态,其中在所说明的示例中,如在列61中示出的,SSV高速缓存的数量将保持零。而且,关于如在列63中示出的有效比特,或者关于如在列65中示出的交叉探听操作,可以不需要采取动作。
相较而言,表50的第三行66例示了当相对应的存储器行处于如在列47中示出的L2高速缓存中的修改状态、如在列49中示出的其它L1高数缓存中的无效状态以及如在列51中示出的发出的L1高数缓存中的共享状态时,探听无效操作可以涉及高速缓存结构。在所说明的示例中,如在列53中示出的,SSV高速缓存的数量可以为一。此外,在探听无效操作之后,存储器行将处于如在列55中示出的L2高速缓存中的无效状态、如在列57中示出的其它L1高速缓存中的无效状态以及如在列59中示出的发出的L1高速缓存中的无效状态(由于状态改变),其中在所说明的示例中,如在列61中示出的,SSV高速缓存的数量将改变到零。如在列63中示出的,发出的L1高速缓存中的有效比特可以被清零,并且如在列65中示出的,可以进行探听无效操作。如在表50的剩余部分中例示的,对于其中相对应的存储器行处于L2高速缓存中的独占、共享和/或无效状态的探听无效操作情景,可以实现类似的转变和/或规则。
图3E示出了用于源自主机处理器的探听数据操作的一致性协议表52,该主机处理器例如以耦合到已经讨论的主机处理器14(图1A)的高速缓存为例。在所说明的示例中,表52的第十行68例示了当相对应的存储器行处于如在列47中示出的L2高速缓存中的独占状态、如在列49中示出的其它L1高数缓存中的共享状态以及如在列51中示出的发出的L1高数缓存中的无效状态时,探听数据操作可以涉及图形高速缓存结构。在所说明的示例中,如在列53中示出的,SSV高速缓存的数量可以为一。此外,在探听数据操作之后,存储器行将处于如在列55中示出的L2高速缓存中的共享状态(由于状态改变)、如在列57中示出的其它L1高速缓存中的无效状态以及如在列59中示出的发出的L1高速缓存中的无效状态,其中在所说明的示例中,如在列61中示出的,SSV高速缓存的数量将保持为一。而且,关于如在列63中示出的有效比特,或者关于如在列65中示出的交叉探听操作,可以不需要采取动作。如在表52的剩余部分中例示的,对于其中相对应的存储器行处于L2高速缓存中的修改、共享和/或无效状态的探听数据操作情景,可以实现类似的转变和/或规则。
图4说明了系统700的实施例。在实施例中,系统700可以是媒体系统,尽管系统700并不局限于这一上下文。例如,可以将系统700结合到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话和PDA、电视、智能设备(例如,智能电话、智能平板计算机或者智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备等。因而,系统700可以用于维持如本文描述的针对视频比特流的高速缓存一致性。
在实施例中,系统700包括耦合到程序视觉内容的显示器720的平台702。平台702可以从诸如内容服务设备730或者内容递送设备740或者其它类似的内容源的内容设备接收内容。包括一个或多个导航特征的导航控制器750可以用于例如与平台702和/或显示器720进行交互。项目更详细地描述这些组件中的每一个。
在实施例中,平台702可以包括芯片集705、处理器710、存储器712、存储装置714、图形子系统715、应用716和/或无线电设备718的任意组合。芯片集705可以在处理器710、存储器712、存储装置714、图形子系统715应用716和/或无线电设备718之间提供相互通信。例如,芯片集705可以包括能够提供与存储装置714的相互通信的存储适配器(未说明)。
处理器710可以被实现为复杂指令集计算机(CISC)或者精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核、或者任何其它微处理器或者中央处理单元(CPU)。在实施例中,处理器710可以包括双核处理器、双核移动处理器等等。
存储器712可以被实现为易失性存储器设备,例如但不局限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或者静态RAM(SRAM)。
存储装置714可以被实现为非易失性存储设备,例如但不局限于磁盘驱动、光盘驱动、磁带驱动、内部存储设备、附接存储设备、闪存、电池备份的同步DRAM(SDRAM)和/或网络可存取的存储设备。在实施例中,存储装置714可以例如包括如下技术:当包括多个硬盘驱动时,增加对于有价值的数字媒体的存储性能增强保护。
图形子系统715可以执行诸如静止图像或者视频的图像的处理用于显示。图形子系统715可以例如是图形处理单元(GPU)或者视觉处理单元(VPU)。图形子系统715因此可以包括已经讨论的图形处理器20(图1A)。此外,处理器710可以经由从存储器712、存储装置714或者其他适合的源被配置为作为已经讨论的主机处理器14(图1A)中的一个或多个进行操作。模拟或者数字接口可以用于将图形子系统715与显示器720通信地耦合。例如,接口可以是任何高清多媒体接口(HDMI)、显示器端口、无线HDMI和/或使用无线高清兼容技术的任何其它适当的接口。图形子系统715能够被集成到处理器710或者芯片集705中。图形子系统715可以是通信地耦合到芯片集705的独立的卡。
本文描述的图形和/或视频处理技术可以在各种硬件架构中实现。例如,图形和/或视频功能可以被集成在芯片集中。替代地,可以使用分离的图形和/或视频处理器。作为又一实施例,图形和/或视频功能可以由包括多核处理器的通用处理器实现。在进一步的实施例中,该功能可以在消费类电子设备中实现。
无线电设备718可以包括能够使用各种适当的无线通信技术来传输并接收信号的一个或多个无线电设备。这样的技术可以涉及跨一个或多个无线网络进行通信。示例性无线网络包括(但不局限于)无线局域网(WLAN)、无线个人域网络(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨这样的网络进行通信时,无线电设备718可以根据任何版本的一个或多个适用的标准进行操作。
在实施例中,显示器720可以包括任意电视类型的监视器或者显示器。显示器702可以例如包括计算机显示屏、触摸屏显示器、视频监控器、类似电视的设备和/或电视。显示器720可以是数字和/或模拟的。在实施例中,显示器720可以是全息显示器。并且,显示器720可以是可以接收视觉投影的透明或者不透明表面。这样的投影可以传送各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉叠加。在一个或多个软件应用716的控制下,平台702可以在显示器720上显示用户界面722。
在实施例中,内容服务设备730可以由任何国内、国际和/或独立的服务托管,并且因而例如经由互联网对于平台702可访问。内容服务设备730可以耦合到平台702和/或显示器720。平台702和/或内容服务设备730可以耦合到网络760来将媒体信息向/从网络760进行传送(例如,发送和/或接收)。内容递送设备740还可以耦合到平台702和/或显示器720。
在实施例中,内容服务设备730可以包括有线电视盒、个人计算机、网络、电话、互联网使能的设备、或者能够输送数字信息和/或内容的电器、以及能够经由网络760或者直接地在内容提供商与平台702和/或显示器720之间单向或者双向地传送内容的任何其它类似的设备。应该理解的是,内容可以经由网络760向/从系统700中的任意一个组件和内容提供商以单向和/或双向的方式进行传送。内容的示例可以包括任意媒体信息,例如包括视频、音乐、医疗和游戏信息等等。
内容服务设备730接收诸如有线电视节目的内容,该有线电视节目包括媒体信息、数字信息和/或其它内容。内容提供商的示例可以包括任何有线或者卫星电视、或者无线电设备、或者互联网内容提供商。所提供的示例并不意在限制所公开的实施例。
在实施例中,平台702可以从具有一个或多个导航特征的导航控制器750接收控制信号。控制器750的导航特征可以用于例如与用户界面722进行交互。在实施例中,导航控制器750可以是指向设备,该指向设备可以是允许用户向计算机输入空间(例如,连续和多维)数据的计算机硬件组件(具体而言为人机界面设备)。诸如图形用户界面和电视以及监控器的许多系统允许用户使用物理手势控制并提供数据给计算机或者电视。
控制器750的导航特征的移动可以通过指针、光标、聚焦环、或者在显示器上显示的其它视觉指示器的移动而在显示器(例如显示器720)上产生回响。例如,在软件应用716的控制下,位于导航控制器750上的导航功能可以例如被映射到在用户界面722上显示的虚拟导航功能。在实施例中,控制器750可能不是分离的组件,而是被集成到平台702和/或显示器720中。然而,实施例不局限于在本文示出或者说明的要素或者上下文。
在实施例中,驱动器(未示出)可以包括例如当启动时在初始引导之后使用户能够使用触摸按钮来立即打开并且关闭类似电视的平台702的技术。当平台被关闭时,程序逻辑可以允许平台702将内容流式传送到媒体适配器或者其它内容服务设备730或者内容递送设备740。此外,芯片集705可以例如包括用于5.1环绕声音频和/或高清7.1环绕声音频的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在实施例中,图形驱动器可以包括外围组件互连(PCI)Express图形卡。
在各种实施例中,可以集成系统700中示出的任意一个或多个组件。例如,可以将平台702和内容服务设备730集成,或者可以将平台702和内容递送设备740集成,或者可以将平台702、内容服务设备730和内容递送设备740集成。在各种实施例中,平台702和显示器720可以是集成单元。例如,可以将显示器720和内容服务设备730集成,或者可以将显示器720和内容递送设备740集成。这些示例并不意在限制所公开的实施例。
在各种实施例中,系统700可以被实现为无线系统、有线系统、或者两者的组合。当被实现为无线系统时,系统700可以包括适于通过无线共享介质上进行通信的组件和接口,该无线共享介质例如是一个或多个天线、发射机、接收机、收发机、放大器、滤波器、控制逻辑等等。无线共享介质的示例可以包括无线频谱的部分,例如无线电频谱等等。当被实现为有线系统时,系统700可以包括适于通过有线通信介质进行通信的组件和接口,该有线通信介质例如是I/O适配器、将I/O适配器与相对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等等。有线通信介质的示例可以包括布线、线缆、金属导线、印刷电路板(PCB)、背板、交换结构、半导体材料、双绞线、同轴电缆、光纤等等。
平台702可以建立一个或多个逻辑或者物理信道来传送信息。信息可以包括媒体信息和控制信息。媒体信息可以指代代表意在用于用户的内容的任意数据。内容的示例可以例如包括来自语音会话、视频会议、流式视频、电子邮件(email)消息、语音信箱消息、字母数字符号、图形、图像、视频、文本等等的数据。来自语音会话的数据可以例如是语音信息、静默时段、背景噪声、舒适噪声、音调等等。控制信息可以指代代表意在用于自动化系统的命令、指令或者控制字的任意数据。例如,控制信息可以用于以预定的方式经过系统路由媒体信息,或者指示节点处理媒体信息。然而,实施例不局限于在图4中示出或者描述的要素或者上下文。
如上所述,系统700可以被体现在变化的物理风格或者形状因子中。图5说明了其中可以体现系统700的小形状因子设备800的实施例。例如,在实施例中,设备800可以被实现为具有无线能力的移动计算设备。移动计算设备可以例如指代具有处理系统和移动电源或者功率源的任意设备,该移动电源或者功率源例如是一个或多个电池。
如上所述,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持型计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话和PDA、电视、智能设备(例如智能电话、智能平板计算机或者智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备等等。
移动计算设备的示例还可以包括被布置为由人穿戴的计算机,例如腕上计算机、指上计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂带计算机、鞋式计算机、衣服计算机、以及其它可穿戴计算机。在实施例中,例如,移动计算设备可以被实现为能够执行计算机应用以及语音通信和/或数据通信的智能手机。尽管可以使用被通过示例的方式实现为智能手机的移动计算机设备来实现一些实施例,但是可以理解的是,也可以使用其它无线移动计算设备来实现其它实施例。实施例不局限于这一上下文。
如图5所示,设备800可以包括外壳802、显示器804、I/O设备806和天线808。设备800还可以包括导航功能812。显示器804可以包括用于显示适合于移动计算设备的信息的任何适当的显示单元,例如用户界面810。I/O设备806可以包括用于向移动计算设备输入信息的任何适当的I/O设备。用于I/O设备806的示例可以包括字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、语音识别设备和软件等等。信息还可以通过麦克风输入到设备800中。这样的信息可以由语音识别设备或者服务进行数字化。实施例不局限于这一上下文。
额外的注释和示例:
示例1可以包括一种用于实现图形高速缓存分级的系统,包括:用于呈现视觉内容的显示器,耦合到一个或多个主机处理器和系统存储器的系统高速缓存,耦合到所述系统高速缓存的图形接口,以及耦合到所述图形接口的图形处理器。所述图形处理器可以包括用于执行与所述视觉内容相关联的多个工作项目的计算切片的物理分布的集合,以及用于维持与所述多个工作项目相关联的一个或多个存储器行在所述图形处理器、所述系统存储器和所述一个或多个主机处理器上的一致性的高速缓存结构。所述高速缓存结构可以包括多个第一级(L1)高速缓存,每一个L1高速缓存专用于计算切片的执行块,物理分布的共享高速缓存结构,其中,在所述多个L1高速缓存和所述共享高速缓存结构上维持所述一个或多个存储器行的一致性,以及用于跟踪所述一个或多个存储器行的多个交叉节点,每一个交叉节点专用于计算切片。所述多个交叉节点可以进一步将源自所述一个或多个主机处理器的一个或多个探听请求经由所述图形接口分布到所述共享高速缓存结构和所述多个L1高速缓存,从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果,并且将所述一个或多个探听结果传送到所述系统高速缓存。
示例2可以包括示例1的系统,其中,所述共享高速缓存结构包括多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
示例3可以包括示例1的系统,其中,所述共享高速缓存结构包括具有多个排的第二级(L2)高速缓存,并且其中,所述共享高速缓存结构用于在所述多个排上对所述一个或多个存储器行中的至少一个进行散列。
示例4可以包括示例1到3中的任意一个的系统,其中,所述高速缓存结构用于使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的一致性。
示例5可以包括一种图形处理器,所述图形处理器包括用于执行多个工作项目的计算切片的物理分布的集合,以及用于在所述图形处理器、系统存储器和一个或多个主机处理器上维持与所述多个工作项目相关联的一个或多个存储器行的一致性的高速缓存结构。
示例6可以包括示例5的图形处理器,其中,所述高速缓存结构包括多个第一级(L1)高速缓存,每一个L1高速缓存专用于计算切片的执行块,物理分布的共享高速缓存结构,其中,在所述多个L1高速缓存和所述共享高速缓存结构上维持所述一个或多个存储器行的一致性,以及用于跟踪所述一个或多个存储器行的多个交叉节点,每一个交叉节点专用于计算切片。
示例7可以包括示例6的图形处理器,其中,所述共享高速缓存结构包括多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
示例8可以包括示例6的图形处理器,其中,所述共享高速缓存结构包括具有多个排的第二级(L2)高速缓存,并且其中,所述共享高速缓存结构在所述多个排上对所述一个或多个存储器行中的至少一个进行散列。
示例9可以包括示例6的图形处理器,其中,所述多个交叉节点用于将源自系统高速缓存的一个或多个探听请求分布到所述共享高速缓存结构和所述多个L1高速缓存,所述系统高速缓存耦合到所述一个或多个主机处理器。
示例10可以包括示例9的图形处理器,其中,所述多个交叉节点用于从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果,并且将所述一个或多个探听结果传送到耦合到所述一个或多个主机处理器的系统高速缓存。
示例11可以包括示例5-10中的任意一个的图形处理器,其中,所述高速缓存结构用于使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的一致性。
示例12可以包括一种用于实现图形高速缓存分级的系统,所述系统包括用于呈现视觉内容的显示器以及包括计算切片的物理分布的集合的图形处理器,所述计算切片用于执行与所述视觉内容相关联多个工作项目,以及用于维持一个或多个存储器行在所述图形处理器、系统存储器和一个或多个主机处理器上的一致性的高速缓存结构。
示例13可以包括示例12的系统,其中所述高速缓存结构包括多个第一级(L1)高速缓存,每一个L1高速缓存专用于计算切片的执行块,物理分布的共享高速缓存结构,其中,在所述多个L1高速缓存和所述共享高速缓存结构上维持所述一个或多个存储器行的一致性,以及用于跟踪所述一个或多个存储器行的多个交叉节点,每一个交叉节点专用于计算切片。
示例14可以包括示例13的系统,其中,所述共享高速缓存结构包括多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
示例15可以包括示例13的系统,其中,所述共享高速缓存结构包括具有多个排的第二级(L2)高速缓存,并且其中,所述共享高速缓存结构用于在所述多个排上对所述一个或多个存储器行中的至少一个进行散列。
示例16可以包括示例13的系统,其中,所述多个交叉节点将源自系统高速缓存的一个或多个探听请求分布到所述共享高速缓存结构和所述多个L1高速缓存,所述系统高速缓存耦合到所述一个或多个主机处理器。
示例17可以包括示例16的系统,进一步包括耦合到所述一个或多个主机处理器以及所述系统存储器的系统高速缓存,以及耦合到所述系统高速缓存的图形接口,其中,所述多个交叉节点用于从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果,并且经由所述图形接口将所述一个或多个探听结果传送到所述系统高速缓存。
示例18可以包括示例12到17中的任意一个的系统,其中,所述高速缓存结构用于使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的一致性。
示例19可以包括一种操作图形处理器的方法,包括:由计算切片的物理分布的集合执行多个工作项目,并且由高速缓存结构维持与所述多个工作项目相关联的一个或多个存储器在所述图形处理器、系统存储器和一个或多个主机处理器上的一致性。
示例20可以包括示例19的方法,进一步包括:由多个交叉节点跟踪所述一个或多个存储器行,其中在多个第一级(L1)高速缓存和物理分布的高速缓存结构上维持所述一个或多个存储器行的一致性,每一个L1高速缓存专用于计算切片的执行块,并且每一个交叉节点专用于计算切片。
示例21可以包括示例20的方法,其中,所述共享高速缓存结构使用用于跟踪所述一个或多个存储器行的多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
示例22可以包括示例20的方法,进一步包括在第二级(L2)高速缓存的多个排上对所述一个或多个存储器行中的至少一个进行散列。
示例23可以包括示例20的方法,进一步包括由所述多个交叉节点将源自系统高速缓存的一个或多个探听请求分布到所述共享高速缓存结构和所述多个L1高速缓存,所述系统高速缓存耦合到所述一个或多个主机处理器。
示例24可以包括示例23的方法,进一步包括由所述多个交叉节点从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果,并且由所述多个交叉节点将所述一个或多个探听结果传送到耦合到所述一个或多个主机处理器的系统高速缓存。
示例25可以包括示例19到24中的任意一个的方法,进一步包括由所述高速缓存结构使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的一致性。
示例26可以包括一种用于实现图形高速缓存分级的系统,包括:用于由计算切片的物理分布的集合执行多个工作项目的模块,以及用于由高速缓存结构维持与所述多个工作项目相关联的一个或多个存储器在所述图形处理器、系统存储器和一个或多个主机处理器上的一致性的模块。
示例27可以包括示例26的系统,进一步包括:用于由多个交叉节点跟踪所述一个或多个所述一个或多个存储器行的模块,其中在多个第一级(L1)高速缓存和物理分布的高速缓存结构上维持所述一个或多个存储器行的一致性,每一个L1高速缓存专用于计算切片的执行块,并且每一个交叉节点专用于计算切片。
示例28可以包括示例27的系统,其中,所述共享高速缓存结构使用用于使用多个独立的第二级(L2)高速缓存来跟踪所述一个或多个存储器行,每一个L2高速缓存专用于计算切片。
示例29可以包括示例28的系统,进一步包括用于在第二级(L2)高速缓存的多个排上对所述一个或多个存储器行中的至少一个进行散列的模块。
示例30可以包括示例27的系统,进一步包括由所述多个交叉节点将源自系统高速缓存的一个或多个探听请求分布到所述共享高速缓存结构和所述多个L1高速缓存的模块,所述系统高速缓存耦合到所述一个或多个主机处理器。
示例31可以包括示例30的系统,进一步包括用于由所述多个交叉节点从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果的模块,以及用于由所述多个交叉节点将所述一个或多个探听结果传送到耦合到所述一个或多个主机处理器的系统高速缓存的模块。
示例32可以包括示例26到31中的任意一个的系统,进一步包括用于由所述高速缓存结构使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的一致性的模块。
因此,技术可以实现在集成的和附接的GPU中的不同系统组件之间一致的存储器结构,其中,主机处理器和图形处理器的内部高速缓存对于彼此是可见的。所述结构可以提供在GPU上的工作项目和工作组之间维持序列一致性的互锁硬件解决方案,而不依赖于诸如屏障、存储器篱障和未排序原子的粗粒度解决方案。而且,所述结构可以确保存储器一致性,而不会导致硬件刷新和软件栈调用的负面性能影响。不依赖于专门的软件栈编程也可以使系统作为针对更宽范围的平台和使用场景的可行替代。
所述各种实施例可以使用硬件元素、软件元素、或者两者的组合来实现。硬件元素的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片集等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或者其任意组合。确定是使用硬件元素和/或软件元素来实现实施例可以根据任意数量的要素变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、以及其它设计或者性能约束。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令实现,该代表性指令代表所述处理器内的各种逻辑,当由机器读取时,所述指令使所述机器制造用于执行本文描述的技术的逻辑。可以将被称为“IP核”的这样的表示存储在有形的机器可读介质上并且被供应到各种顾客或者制造工厂以便装载到实际制造所述逻辑或者处理器的制造机器中。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不局限于处理器、控制器、芯片集组件、可编程逻辑阵列(PLA)、存储器芯片等等。此外,在一些附图中,信号导体线由直线表示。一些可以不同,以便指示具有更多的组成信号路径,具有数字标记,指示组成信号路径的数量,和/或具有在一端或者两端处的箭头,指示主要信息流方向。然而,这不应该以限制性的方式来理解。而是,这样添加的细节可以结合一个或多个示例性实施例使用,以便促进更容易地理解电路。任何代表的信号线,无论是否具有额外的信息,都可以实际上包括可以在多个方向上行进并且可以使用任何适合类型的信号方案实现的一个或多个信号,例如,使用差分对实现的数字或者模拟线路、光纤线路和/或单端线路。
尽管给出了示例尺寸/模型/值/范围,但是实施例并不局限于此。随着制造技术(例如,光刻)随着时间的成熟,期望能够制造具有更小尺寸的设备。此外,为了简化说明和讨论的目的,并且为了不混淆实施例的某些方面,在附图中可以示出或者不示出到IC芯片和其它组件的公知的电源/接地连接。进而,为了避免混淆实施例,并且也考虑到关于方框图布置的实现细节高度依赖于在其中实现实施例的平台,没有在方框图中示出该布置,即,这样的细节应该在本领域技术人员的知识范围内。在阐释具体细节(例如,电路)以便描述示例实施例的情况下,对于本领域普通技术人员显而易见的是,可以在没有这些具体细节的情况下或者在具有这些具体细节的变化的情况下来实践实施例。因而将该描述看作是说明性的而非限制性的。
一些实施例可以例如使用可以存储指令或者指令集的机器可读介质或者制品实现,如果由机器执行,该指令或者指令集可以使机器执行根据实施例的方法和/或操作。这样的机器可以例如包括任何适当的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理等等,并且可以使用硬件和/或软件的任何适当组合实现。机器可读介质或者制品可以例如包括任何适当类型的存储器单元、存储器设备、存储器物品、存储器介质、存储设备、存储物品、存储介质和/或存储单元、例如存储器、可移除或者不可移除介质、可擦除或者不可擦除介质、可写入或者可重写介质、数字或者模拟介质、硬盘、软盘、压缩盘只读存储器(CDROM)、压缩盘可记录(CD-R)存储器、压缩盘可重写(CR-RW)存储器、光盘、磁介质、磁光介质、可移除存储卡或者盘、各种类型的数字通用盘(DVD)、带、磁带等等。指令可以包括使用任何适当的高级、低级、面向对象、可视、编译和/或解释的编程语言实现的任何适当类型的代码,例如是源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、加密代码等等。
除非以其它方式具体表明,可以理解的是,诸如“处理”、“计算”、“运算”、“确定”等等的术语指代计算机或者计算系统、或者类似的电子计算设备的动作和/或处理,这样的电子计算设备将被表示为位于计算机系统的寄存器和/或存储器单元内的物理量(例如,电子的)的数据操控和/或变换为位于计算机系统的寄存器、存储器单元、或者其它这样的信息存储、传输或者显示设备内的被类似地表现为物理量的其它数据。实施例不局限于这一上下文。
在本文可以使用术语“耦合”来指代在正在讨论的组件之间的任何类型的关系,直接的或者间接的,并且可以应用于电子、机械、流体、光学、电磁、机电或者其它连接。此外,在本文中使用词语“第一”、“第二”等等以便仅促进讨论,并且除非以其它方式指示,并不承载特定的时间或者时间顺序的含义。
本领域的普通技术人员根据前面的描述将意识到,可以按照各种形式来实现实施例的广泛技术。因此,尽管结合本发明的特定示例描述了本发明的实施例,但是实施例的真实范围不应该局限于此,本领域的普通技术人员在研究附图、说明书和接下来的权利要求的情况下,其它变型将是显而易见的。

Claims (25)

1.一种用于实现图形高速缓存分级的系统,包括:
用于呈现视觉内容的显示器;
耦合到一个或多个主机处理器和系统存储器的系统高速缓存;
耦合到所述系统高速缓存的图形接口;以及
耦合到所述图形接口的图形处理器,所述图形处理器包括:
用于执行与所述视觉内容相关联的多个工作项目的计算切片的物理分布的集合,以及
用于维持与所述多个工作项目相关联的一个或多个存储器行在所述图形处理器、所述系统存储器和所述一个或多个主机处理器上的一致性的高速缓存结构,其中,所述高速缓存结构包括:
多个第一级(L1)高速缓存,每一个L1高速缓存专用于计算切片的执行块,
物理分布的共享高速缓存结构,其中,在所述多个L1高速缓存和所述共享高速缓存结构上维持所述一个或多个存储器行的所述一致性,以及
用于跟踪所述一个或多个存储器行的多个交叉节点,每一个交叉节点专用于计算切片,所述多个交叉节点进一步用于将源自所述系统高速缓存的一个或多个探听请求经由所述图形接口分布到所述共享高速缓存结构和所述多个L1高速缓存,从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果,并且将所述一个或多个探听结果传送到所述系统高速缓存。
2.根据权利要求1所述的系统,其中,所述共享高速缓存结构包括多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
3.根据权利要求1所述的系统,其中,所述共享高速缓存结构包括具有多个排的第二级(L2)高速缓存,并且其中,所述共享高速缓存结构用于在所述多个排上对所述一个或多个存储器行中的至少一个进行散列。
4.根据权利要求1到3中的任意一项所述的系统,其中,所述高速缓存结构用于使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的所述一致性。
5.一种图形处理器,包括:
用于执行多个工作项目的计算切片的物理分布的集合;以及
用于维持与所述多个工作项目相关联的一个或多个存储器行在所述图形处理器、系统存储器和一个或多个主机处理器上的一致性的高速缓存结构。
6.根据权利要求5所述的图形处理器,其中,所述高速缓存结构包括:
多个第一级(L1)高速缓存,每一个L1高速缓存专用于计算切片的执行块;
物理分布的共享高速缓存结构,其中在所述多个L1高速缓存和所述共享高速缓存结构上维持所述一个或多个存储器行的所述一致性;以及
用于跟踪所述一个或多个存储器行的多个交叉节点,每一个交叉节点专用于计算切片。
7.根据权利要求6所述的图形处理器,其中,所述共享高速缓存结构包括多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
8.根据权利要求6所述的图形处理器,其中,所述共享高速缓存结构包括具有多个排的第二级(L2)高速缓存,并且其中,所述共享高速缓存结构用于在所述多个排上对所述一个或多个存储器行中的至少一个进行散列。
9.根据权利要求6所述的图形处理器,其中,所述多个交叉节点用于将源自系统高速缓存的一个或多个探听请求分布到所述共享高速缓存结构和所述多个L1高速缓存,所述系统高速缓存耦合到所述一个或多个主机处理器。
10.根据权利要求9所述的图形处理器,其中,所述多个交叉节点用于从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果,并且将所述一个或多个探听结果传送到耦合到所述一个或多个主机处理器的系统高速缓存。
11.根据权利要求5到10中的任意一项所述的图形处理器,其中,所述高速缓存结构用于使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的所述一致性。
12.一种用于实现图形高速缓存分级的系统,包括:
用于呈现视觉内容的显示器;以及
图形处理器,所述图形处理器包括:
用于执行与所述视觉内容相关联的多个工作项目的计算切片的物理分布的集合,以及
用于维持与所述多个工作项目相关联的一个或多个存储器行在所述图形处理器、系统存储器和一个或多个主机处理器上的一致性的高速缓存结构。
13.根据权利要求12所述的系统,其中,所述高速缓存结构包括:
多个第一级(L1)高速缓存,每一个L1高速缓存专用于计算切片的执行块;
物理分布的共享高速缓存结构,其中,在所述多个L1高速缓存和所述共享高速缓存结构上维持所述一个或多个存储器行的所述一致性;以及
用于跟踪所述一个或多个存储器行的多个交叉节点,每一个交叉节点专用于计算切片。
14.根据权利要求13所述的系统,其中,所述共享高速缓存结构包括多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
15.根据权利要求13所述的系统,其中,
所述共享高速缓存结构包括具有多个排的第二级(L2)高速缓存,并且其中,所述共享高速缓存结构用于在所述多个排上对所述一个或多个存储器行中的至少一个进行散列。
16.根据权利要求13所述的系统,其中,所述多个交叉节点用于将源自系统高速缓存的一个或多个探听请求分布到所述共享高速缓存结构和所述多个L1高速缓存,所述系统高速缓存耦合到所述一个或多个主机处理器。
17.根据权利要求16所述的系统,进一步包括耦合到所述一个或多个主机处理器和所述系统存储器的系统高速缓存,以及耦合到所述系统高速缓存的图形接口,其中,所述多个交叉节点用于从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果,并且经由所述图形接口将所述一个或多个探听结果传送到所述系统高速缓存。
18.根据权利要求12到17中的任意一项所述的系统,其中,所述高速缓存结构用于使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的所述一致性。
19.一种操作图形处理器的方法,包括:
由计算切片的物理分布的集合执行多个工作项目;并且
由高速缓存结构维持与所述多个工作项目相关联的一个或多个存储器行在所述图形处理器、系统存储器和一个或多个主机处理器上的一致性。
20.根据权利要求19所述的方法,进一步包括由多个交叉节点跟踪所述一个或多个存储器行,其中,在多个第一级(L1)高速缓存和物理分布的高速缓存结构上维持所述一个或多个存储器行的所述一致性,每一个L1高速缓存专用于计算切片的执行块,并且每一个交叉节点专用于计算切片。
21.根据权利要求20所述的方法,其中,所述共享高速缓存结构使用用于跟踪所述一个或多个存储器行的多个独立的第二级(L2)高速缓存,每一个L2高速缓存专用于计算切片。
22.根据权利要求20所述的方法,进一步包括在第二级(L2)高速缓存的多个排上对所述一个或多个存储器行中的至少一个进行散列。
23.根据权利要求20所述的方法,进一步包括由所述多个交叉节点将源自系统高速缓存的一个或多个探听请求分布到所述共享高速缓存结构和所述多个L1高速缓存,所述系统高速缓存耦合到所述一个或多个主机处理器。
24.根据权利要求23所述的方法,进一步包括:
由所述多个交叉节点从所述共享高速缓存结构和所述多个L1高速缓存收集一个或多个探听结果;并且
由所述多个交叉节点将所述一个或多个探听结果传送到耦合到所述一个或多个主机处理器的系统高速缓存。
25.根据权利要求19到24中的任意一项所述的方法,进一步包括由所述高速缓存结构使用修改、独占、共享、无效(MESI)协议来维持所述一个或多个存储器行的所述一致性。
CN201510087785.5A 2014-03-27 2015-02-25 分布式图形处理器分级中的系统一致性 Active CN104952033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811472947.7A CN110109844B (zh) 2014-03-27 2015-02-25 分布式图形处理器分级中的系统一致性

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/227,525 2014-03-27
US14/227,525 US9436972B2 (en) 2014-03-27 2014-03-27 System coherency in a distributed graphics processor hierarchy

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201811472947.7A Division CN110109844B (zh) 2014-03-27 2015-02-25 分布式图形处理器分级中的系统一致性

Publications (2)

Publication Number Publication Date
CN104952033A true CN104952033A (zh) 2015-09-30
CN104952033B CN104952033B (zh) 2019-01-01

Family

ID=54066881

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510087785.5A Active CN104952033B (zh) 2014-03-27 2015-02-25 分布式图形处理器分级中的系统一致性
CN201811472947.7A Active CN110109844B (zh) 2014-03-27 2015-02-25 分布式图形处理器分级中的系统一致性

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201811472947.7A Active CN110109844B (zh) 2014-03-27 2015-02-25 分布式图形处理器分级中的系统一致性

Country Status (5)

Country Link
US (1) US9436972B2 (zh)
KR (1) KR101648758B1 (zh)
CN (2) CN104952033B (zh)
DE (1) DE102015002366A1 (zh)
TW (1) TWI556193B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108694072A (zh) * 2017-04-07 2018-10-23 英特尔公司 用于高效图形虚拟化的设备及方法
CN110109844A (zh) * 2014-03-27 2019-08-09 英特尔公司 分布式图形处理器分级中的系统一致性

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402072B2 (en) * 2015-05-04 2019-09-03 Graphisoft Se Predictive background updating
US9965211B2 (en) * 2016-09-08 2018-05-08 Cisco Technology, Inc. Dynamic packet buffers with consolidation of low utilized memory banks
US10747878B1 (en) * 2016-10-07 2020-08-18 Rightquestion, Llc Rapid verification of executing processes
WO2018183542A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
US10637685B2 (en) 2017-03-29 2020-04-28 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
US10395623B2 (en) 2017-04-01 2019-08-27 Intel Corporation Handling surface level coherency without reliance on fencing
CN110741356B (zh) 2017-04-10 2024-03-15 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
US10659254B2 (en) 2017-07-10 2020-05-19 Fungible, Inc. Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric
US10725825B2 (en) 2017-07-10 2020-07-28 Fungible, Inc. Data processing unit for stream processing
WO2019068017A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. RESILIENT NETWORK COMMUNICATION USING SELECTIVE PULVER FLOW SPRAY BY MULTIPATH PATH
WO2019068010A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. VIRTUAL MATRIX OF NETWORK ACCESS NODES CONFIGURED DYNAMICALLY ON AN UNDERLYING NETWORK
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
WO2019152063A1 (en) 2018-02-02 2019-08-08 Fungible, Inc. Efficient work unit processing in a multicore system
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
WO2020190800A1 (en) 2019-03-15 2020-09-24 Intel Corporation Dynamic memory reconfiguration
WO2020190807A1 (en) 2019-03-15 2020-09-24 Intel Corporation Systolic disaggregation within a matrix accelerator architecture
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060499A1 (en) * 2003-09-12 2005-03-17 Intel Corporation Method and apparatus for joint cache coherency states in multi-interface caches
CN101213524A (zh) * 2005-06-29 2008-07-02 英特尔公司 监听访问的减少
CN102099788A (zh) * 2008-06-06 2011-06-15 苹果公司 用于在多处理器上进行数据并行计算的应用编程接口
CN102880558A (zh) * 2011-06-09 2013-01-16 苹果公司 用于高速缓存块一致性的系统、方法和设备
US20130042070A1 (en) * 2011-08-08 2013-02-14 Arm Limited Shared cache memory control

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053761A (en) * 1989-06-16 1991-10-01 International Business Machines Method for smooth bitmap scrolling
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US6792551B2 (en) * 2001-11-26 2004-09-14 Intel Corporation Method and apparatus for enabling a self suspend mode for a processor
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7355601B2 (en) * 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US7581068B2 (en) 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
US8527709B2 (en) 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8762652B2 (en) 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
EP2340476A4 (en) * 2008-09-05 2012-05-09 Arcsight Inc EFFECTIVE STORAGE OF LOG DATA WHILE SUPPORTING AN INTERROGATION
US20100332762A1 (en) 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
US9639479B2 (en) * 2009-09-23 2017-05-02 Nvidia Corporation Instructions for managing a parallel cache hierarchy
US8375184B2 (en) 2009-11-30 2013-02-12 Intel Corporation Mirroring data between redundant storage controllers of a storage system
US20130042470A1 (en) * 2011-08-15 2013-02-21 Advanced Interconnections Corp. Extraction tool
US9330002B2 (en) * 2011-10-31 2016-05-03 Cavium, Inc. Multi-core interconnect in a network processor
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
CN102799352A (zh) * 2012-06-18 2012-11-28 江苏智途科技有限公司 实现图形节点捕捉的方法
US9665958B2 (en) * 2013-08-26 2017-05-30 Nvidia Corporation System, method, and computer program product for redistributing a multi-sample processing workload between threads
US9436972B2 (en) * 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060499A1 (en) * 2003-09-12 2005-03-17 Intel Corporation Method and apparatus for joint cache coherency states in multi-interface caches
CN101213524A (zh) * 2005-06-29 2008-07-02 英特尔公司 监听访问的减少
CN102099788A (zh) * 2008-06-06 2011-06-15 苹果公司 用于在多处理器上进行数据并行计算的应用编程接口
CN102880558A (zh) * 2011-06-09 2013-01-16 苹果公司 用于高速缓存块一致性的系统、方法和设备
US20130042070A1 (en) * 2011-08-08 2013-02-14 Arm Limited Shared cache memory control

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110109844A (zh) * 2014-03-27 2019-08-09 英特尔公司 分布式图形处理器分级中的系统一致性
CN108694072A (zh) * 2017-04-07 2018-10-23 英特尔公司 用于高效图形虚拟化的设备及方法

Also Published As

Publication number Publication date
US20150278984A1 (en) 2015-10-01
TWI556193B (zh) 2016-11-01
CN110109844B (zh) 2023-08-01
CN110109844A (zh) 2019-08-09
DE102015002366A1 (de) 2015-10-01
TW201539370A (zh) 2015-10-16
CN104952033B (zh) 2019-01-01
KR101648758B1 (ko) 2016-08-17
KR20150112784A (ko) 2015-10-07
US9436972B2 (en) 2016-09-06

Similar Documents

Publication Publication Date Title
CN104952033A (zh) 分布式图形处理器分级中的系统一致性
TWI624760B (zh) 共享虛擬記憶體的技術(二)
CN111522754B (zh) 通过统一存储器架构的存储器共享
CN103793876A (zh) 分布式拼接式进行高速缓存
CN104346224B (zh) 使用组页面错误描述符来处理上下文切换和进程终止
CN105321142B (zh) 经由计算流水线进行的采样、错误管理和/或上下文切换
US20140181404A1 (en) Information coherency maintenance systems and methods
CN104951358A (zh) 基于优先级的上下文抢占
CN104067318A (zh) 使用三维光栅化的时间连续碰撞检测
CN104704469A (zh) 动态地重新平衡图形处理器资源
EP4231242A1 (en) Graphics rendering method and related device thereof
CN104025031B (zh) 减少应用中对共享存储器单元执行的顺序操作的数量
TWI615807B (zh) 用於記錄在輸入幾何物件粒度上的可視度測試之結果的方法、設備及系統
KR20160007874A (ko) 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법
EP3161782A1 (en) Efficient hardware mechanism to ensure shared resource data coherency across draw calls
CN104881367A (zh) 处理分布式缓存组织结构中的已压缩数据
CN103927223A (zh) 对图形资源的串行化访问
US9563561B2 (en) Initiation of cache flushes and invalidations on graphics processors
CN104603844A (zh) 减小的位计数多边形光栅化
CN104054049B (zh) 用于复制源数据从而实现对源数据的并行处理的方法和系统
US10380106B2 (en) Efficient method and hardware implementation for nearest neighbor search
CN108182656B (zh) 一种图像处理方法及终端
CN104915191A (zh) 图形处理器中的连接组件标记
CN104025037A (zh) 在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据
CN104050230A (zh) 使用simd指令集架构查找大数据集中最小和最大值的快速方法

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