CN104932989B - 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入 - Google Patents
数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入 Download PDFInfo
- Publication number
- CN104932989B CN104932989B CN201510127857.4A CN201510127857A CN104932989B CN 104932989 B CN104932989 B CN 104932989B CN 201510127857 A CN201510127857 A CN 201510127857A CN 104932989 B CN104932989 B CN 104932989B
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- data
- low latency
- interconnect
- 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
根据一个一般方面,一种方法可以包括从被配置为执行直接存储器存取的非中央处理器设备接收请求,以在存储器地址处写存储器系统之内的数据。该方法还可以包括基于存储器地址确定是否通过比相干存储器互连在延迟顺序上更接近于中央处理器的存储器系统的高速缓冲等级生成高速缓冲标签击中。该方法可以进一步包括:如果高速缓冲等级生成高速缓冲标签击中,则将数据注入到高速缓冲等级中。
Description
对相关申请的交叉引用
此申请要求于2014年3月21日提交的标题为“METHOD FOR OPPORTUNISTIC CACHEINJECTION OF DATA INTO LOWER LATENCY LEVELS OF THE CACHE HIERARCHY TO IMPROVEPERFORMANCE WHERE AN UNINTELLIGENT I/O DEVICE OR DMA MASTER PRODUCES DATA TOBE CONSUMED BY SOFTWARE RUNNING ON A CPU CORE(数据到高速缓冲层次的较低延迟层级的机会性的高速缓冲注入来改善非智能I/O设备或DMA主设备产生要被在CPU核心上运行的软件消费的数据的性能的方法)”的临时专利申请序号61/969,077的优先权。因此通过引用合并此更早提交的申请的主题内容。
技术领域
此描述涉及存储器管理,并且更具体地,涉及与用于输入/输出(I/O)设备和在处理器上运行的软件之间的通信的可高速缓冲存储器的一部分相关联的存储器的一部分的管理。
背景技术
一般,计算机和通过它们运行的程序对于无限量的快速存储器具有贪婪的胃口。不幸的是,存储器(尤其是快速存储器)一般在成本和晶片面积上都很贵。对于无限的快速的存储器的期望的传统的解决方案是存储器层次或等级的系统或存储器的层级。一般,分级存储器系统包括多个存储器层级,每个层级比先前的层级更慢但是更大。
典型的计算机存储器层次可以包括三个层级。最快并最小的存储器(常常称为“层级1(L1)高速缓冲”)最接近处理器,并且包括静态随机存取存储器(RAM和SRAM)。接下来的等级或层级常常被称为层级2(L2)高速缓冲,并且比L1高速缓冲更大但是更慢。第三层级是主存储器,并且一般包括动态RAM(DRAM),常常被插入到存储器模块中。然而,其它系统可能具有更多或更少的存储器等级。还有,在一些系统中,处理器寄存器和永久性或半永久性存储器件(例如,硬盘、固态驱动器等)可以被认为是存储器系统的一部分。
发明内容
根据一个一般方面,一种方法可以包括从被配置为执行直接存储器存取的非中央处理器设备接收请求,以在存储器地址处写存储器系统之内的数据。该方法还可以包括基于存储器地址确定是否通过比相干存储器互连在延迟顺序上更接近于中央处理器的存储器系统的高速缓冲等级来生成高速缓冲标签击中。该方法可以进一步包括:如果高速缓冲等级生成高速缓冲标签击中,则将数据注入到高速缓冲等级中。
根据另一个一般方面,装置可以包括:高延迟存储器、低延迟存储器和存储器互连。高延迟存储器可以被配置为存储数据,其中高延迟存储器比存储器互连在延迟顺序上更远离中央处理器。低延迟存储器可以被配置为存储数据,其中低延迟存储器比存储器互连在延迟顺序上更接近中央处理器。存储器互连可以被配置为从被配置为执行直接存储器存取的非中央处理器设备接收在存储器地址处写数据的请求,基于存储器地址,请求低延迟存储器向存储器互连提供高速缓冲标签击中或高速缓冲标签遗漏,以及如果低延迟存储器提供高速缓冲标签击中,则将数据注入到低延迟存储器中。
根据另一一般方面,系统可以包括处理器、非中央处理器设备和分级存储器系统。处理器可以被配置为从分级存储器系统读数据并且将数据写到分级存储器系统。非中央处理器设备可以被配置为执行对分级存储器系统的直接存储器存取,并且请求将数据写到分级存储器系统。分级存储器系统可以包括高延迟存储器、低延迟存储器和存储器互连。高延迟存储器可以被配置为存储数据,其中高延迟存储器比存储器互连在延迟顺序上更远离中央处理器。低延迟存储器可以被配置为存储数据,其中低延迟存储器比存储器互连在延迟顺序上更接近中央处理器。存储器互连可以被配置为从被配置为执行直接存储器存取的非中央处理器设备接收在存储器地址处写数据的请求,基于存储器地址,请求低延迟存储器向存储器互连提供高速缓冲标签击中或高速缓冲标签遗漏,以及如果低延迟存储器提供高速缓冲标签击中,则将数据注入到低延迟存储器中。
在附图和下面的描述中阐述一个或多个实现方式的细节。其它特征将从描述和附图并从权利要求中显然。
一种用于存储器管理的系统和/或方法,并且更具体地,涉及与用于输入/输出(I/O)设备和在处理器上运行的软件之间的通信的可高速缓冲存储器的一部分相关联的存储器的一部分的管理,基本上如至少一个附图中所示和/或结合至少一个附图描述,如更完全地权利要求中阐述。
附图说明
图1a是根据所公开的主题内容的系统的示例实施例的框图。
图1b是根据所公开的主题内容的系统的示例实施例的框图。
图2a是根据所公开的主题内容的系统的示例实施例的框图。
图2b是根据所公开的主题内容的系统的示例实施例的框图。
图3是根据所公开的主题内容的系统的示例实施例的框图。
图4是根据所公开的主题内容的技术的示例实施例的流程图。
图5是可以包括根据所公开的主题内容的原理形成的器件的信息处理系统的示意性框图。
在各种附图中相似的参考符号指示相似的元素。
具体实施方式
下文将参照附图更全面地描述各种示例实施例,在附图中显示了一些示例实施例。然而,本公开主题内容可以用很多不同的形式来具体化,而不应该被解释为限于在此阐述的示例实施例。而是,提供这些示例实施例使得此公开将是彻底和完整的,并且将向本领域技术人员充分地传达本公开主题内容的范围。在附图中,为了清楚,可能夸大层和区域的尺寸和相对尺寸。
将理解,当元件或层被称为“在另一元件或层上”、“连接至”或“耦接至”另一元件或层时,它可以直接在其它元件或层上、连接或耦接至另一元件或层,或者中间元件或层可能存在。相反,当元件被称为“直接在另一元件或层上”、“直接连接至”或“直接耦接至”另一元件或层时,没有中间元件或层存在。相似的数字始终指代相似的元件。如在此使用的,术语“和/或”包括一个或多个相关联的所列项的任何和全部组合。
将理解,虽然术语第一、第二、第三等可以在此用来描述各种元件、组件、区域、层和/或段,但是这些元件、组件、区域、层和/或段不应该被这些术语限制。这些术语仅用来区分一个元件、组件、区域、层或段与另一区域、层或段。因而,下面讨论的第一元件、组件、区域、层或段可以被称为第二元件、组件、区域、层或段,而不脱离本公开主题内容的教导。
为了描述方便,在此可以使用诸如“在……下”、“在……下方”、“低于”、“在……上”、“上面”等的空间相对术语来描述如图中所示的一个元件或特征对其它元件或特征的关系。将理解,除了图中描绘的方位之外,空间相对术语意在涵盖使用或操作中的设备的不同方位。例如,如果翻转图中的设备,那么被描述为“在其它元件或特征下方”或“之下”的元件会位于其它元件或特征“上方”。因而,示范性术语“下方”可以涵盖上方和下方两个方位。设备可以另外朝向(旋转90度或位于其它方位),并且相应地解释在此使用的空间相对描述语。
在此使用的术语仅是为了描述特定的示例实施例的目的,而不是意在限制本公开主题内容。如在此使用的,单数形式“一”、“一个”和“所述”意在也包括复数形式,除非上下文清楚地指示除外。还将理解,术语“包括了”和/或“包括”当用在此说明书中时,指定所述特征、整数、步骤、操作、元件和/或组件的存在,但是没有排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。
在此参照作为理想化的示例实施例的示意性图示的截面图示(和中间结构)来描述示例实施例。如此,作为例如制造技术和/或容差的结果的图示的形状的变化是预期的。因而,示例实施例不应该被解释为限于在此所示的区域的特定形状,而是要包括例如源于制造的形状上的偏离。例如,被示出为矩形的植入区域将典型地在它的边缘处具有圆形或曲形的特征和/或植入浓度的梯度,而不是从植入区域到非植入区域的二进制变化。同样地,通过植入形成的掩埋区可能导致在掩埋区和植入发生所通过的表面之间的区域中的某种植入。因而,在图中所示的区域本质上是示意性的,并且它们的形状不打算示出设备的区域的实际形状,并且不打算限制本公开主题内容的范围。
除非另外定义,否则在此使用的全部术语(包括技术和科学术语)具有与此公开主题内容所属的领域一位普通技术人员通常理解的相同的意思。还将理解,诸如那些在常用词典中定义的术语应该被解释为具有与它们在相关技术的背景中一致的意思,并且将不以理想化或过于正式的意义来解释,除非在此清楚地如此定义。
下文中,将参照附图详细说明示例实施例。
在具有用于每个处理器的单独的高速缓冲存储器的共享存储器多处理器系统中,可以具有任何一片数据的很多副本,例如,一个副本在主存储器中并且一个在每个高速缓冲存储器中。当改变一片数据的一个副本时,理想地,应该改变数据的其它副本。高速缓冲相干是确保共享数据的值的变化以及时的方式在整个系统内被传播(propagate)的技术。
实施高速缓冲相干的一种技术是确保处理器在它写数据项之前具有到数据项的独占通道。这种协议类型被称为写无效协议(write invalidate protocol),因为其在写时使其它高速缓冲中的副本无效,并且一般被认为是更一般的侦听类型协议的一部分。在这种情况中,独占通道确保当写发生时没有其它可读或可写的项副本存在:该项的所有其它高速缓冲副本被无效。
为了看出此协议如何确保相干,考虑由第一处理器写,接着由另一处理器读。在此示例中,假设两个处理器存在,以及它们的两个各自的高速缓冲,并且每个高速缓冲拥有或存储数据片的副本。在这样的示例中,数据的两个副本最近已经被读,并且因此包括最新的数据版本。该片数据可以被认为是在两个高速缓冲之间共享。
在此示例中,第一处理器尝试写到它的数据副本。作为第一步,第一处理器向存储器系统的其余发送出或广播侦听请求,询问是否任何其它高速缓冲当前正存储着数据副本。一般,这是通过将数据的存储器地址与高速缓冲的各种高速缓冲标签比较。其它处理器或高速缓冲以侦听响应来响应侦听请求。每个侦听响应指示考虑中的存储器地址是否被包括在各自的高速缓冲中(高速缓冲标签击中),并且如果是,则还包括高速缓冲的数据的相干状态(例如,有效的、无效的、共享的、独占的等)。为了简化此示例,假定如果任何高速缓冲标签击中发生,则它们将是共享的或非独占的,并且所述写可以没有复杂性地进行。
因为所述写要求独占通道,所以由其它处理器在它们各自的高速缓冲中拥有的任何副本被无效(因此协议名称“写无效”)。因而,当第二处理器希望读相同的数据时,它的高速缓冲中的无效的数据引起高速缓冲遗漏,并且高速缓冲被强制取得数据的新副本。
在各种实施例中,可以采用其它协议,诸如写更新技术、目录协议、诱捕(snarfing)协议等。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
常常将计算系统与一个或多个输入/输出设备或外围设备(例如,图1a的I/O设备104)耦接。这样的设备可以包括但不限于网络接口、麦克风、视频相机、视频图形卡、协处理器(例如,加密引擎、物理引擎等)等等。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。偶而这些I/O设备与主处理器相对独立地操作。这从处理器移除许多管理工作,但是通常导致一些问题。在这个上下文中,诸如可以存取存储器但是不是处理器或处理器核心的这些和其它设备可以被称为“非中央处理器设备”。为了说明性示例的目的,在此可以使用术语“I/O设备”,但是应该理解,术语仅仅是一个说明性示例,所公开的主题内容不限于此。
在这样的实施例中,I/O设备可能能够直接存取(例如,读、写等)存储器的部分。在各种实施例中,存储器的这些部分可以被约束,使得I/O设备与其它设备相比具有特权(例如,仅I/O设备可以写到存储器部分而其它设备可以从它读,等等)。在各种实施例中,这可以被称为直接存储器存取(DMA)。应该理解,以上仅仅是说明性示例子,所公开的主题内容不限于此。
高速缓冲注入是允许I/O设备发起针对目标设备(高速缓冲或存储器系统的高速缓冲等级等)的总线事务(例如,数据写等)的架构特征。传统上,在没有高速缓冲注入的系统中,此目标设备是主存储器控制器。有了高速缓冲注入,事务可以针对系统中的特定高速缓冲。目标设备然后侦听总线来检查它们是否可以匹配于目标。如果是,则目标消费数据,否则存储器控制器消费数据。
同样地,在上面的多处理器高速缓冲相干示例中,从I/O设备写数据到存储器中可以包括各种高速缓冲相干问题。第一高速缓冲注入实现方式可能存在于I/O DMA主设备(master)明确地并且选择性地将它们的写事务以存储器互连和高速缓冲控制器响应的分配/更新属性进行标记的地方。第二高速缓冲注入实施方式可能存在于在高速缓冲之内配置存储器的特定地址范围来通知它们“要求(claim)”与应该被分配或更新的I/O写事务/高速缓冲线相关联的侦听的地方。
第三高速缓冲注入实现方式可能存在于I/O写事务自然地流过与DRAM(动态随机存取存储器)控制器位于同线(in-line)的高速缓冲层次的层级的地方。在这样的实现方式中,当I/O写在它去DRAM的路上经过高速缓冲时,存储在那同线高速缓冲的高速缓冲线之内的数据可以以数据的新版本更新。即,当I/O写在向DRAM发送新数据时,新数据也将被发送通过同线的高速缓冲,因为它在I/O设备和DRAM之间,如下所述。
在此上下文中,如果当源于发送实体(例如,I/O设备、处理器、L1高速缓冲等)的写事务在朝着主存储器(例如,DRAM)前进时,对于那些写事务存在路径以分派到次更高延迟层级的存储器/高速缓冲层次中或更新该次更高延迟层级的存储器/高速缓冲层次,则存储器、高速缓冲或等级被认为是与主存储器“同线”。相反,在此上下文中,如果当源于发送实体的写事务在朝着主存储器前进时,对于那些写事务不存在路径以分派到次更高延迟层级的存储器/高速缓冲层次中或更新该次更高延迟层级的存储器/高速缓冲层次,则存储器、高速缓冲或等级被认为是与主存储器“不同线(out-of-line)”。
第四高速缓冲注入实现方式可能存在于硬件队列管理器卸载(offload)或加速器块确切地追踪处理器核心当前正在处理哪个工作单元以及对供它以后做的所有工作进行排队的地方。代替I/O设备将数据写/产生到存储器时数据被分配/更新,仅当处理器核心接近于它将以“及时的”方式消费数据的点处时,队列管理器指令将数据放进高速缓冲中。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
如下所述,与以上高速缓冲注入实现方式技术相比,所公开的主题内容提供各种可能的有用修改。在那些可能的有用修改中是以下的,但是不仅限于以下。
与第一高速缓冲注入实现方式相反,所公开的主题内容不要求I/O主设备生成明确的分配/更新属性和存储器互连运输该明确的分配/更新属性。而且,所公开的主题内容也没有导致在高速缓冲层次中立即逐出可能有用的高速缓冲线。此外,所公开的主题内容可以更易于实现,因为I/O设备不必改变并且可以保持非智能的。
与第二高速缓冲注入实现方式相反,所公开的主题内容不要求软件用专门的地址范围/窗口来初始化高速缓冲控制器配置空间,它也不要求对数据结构将被软件分配的地方的专门约束和/或理解。
与第三高速缓冲注入实现方式相反,所公开的主题内容使能通过查看正常去往DRAM的I/O写不能自然经过的高速缓冲层次的不同的层级或等级来更新陈旧的高速缓冲线。此外,所公开的主题内容通过支持高速缓冲线更新或注入到更低延迟层级的高速缓冲层次(例如,L1高速缓冲、L2高速缓冲等)中,而增加处理器核心取得延迟利益。
与第四高速缓冲注入实现方式相反,所公开的主题内容不要求I/O设备和处理器核心与其通信的单独的硬件队列管理器块。此外,所公开的主题内容可能比第四高速缓冲注入实现方式更易于实现。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
以下提供所公开的主题内容的使用情况的简短而一般的概括。此外,下面还提供了更详细的说明性示例。以下的详细说明性示例是所公开的主题内容的若干非限制性变型。应该理解,以下仅仅是若干说明性示例,所公开的主题内容不限于此。
图1a是根据所公开的主题内容的系统100的示例实施例的框图。在各种实施例中,系统100可以包括处理器102、分级存储器系统108和一个或多个输入/输出(I/O)设备104。在所示的实施例中,分级存储器系统108可以包括三个等级(从最小到最大):L1高速缓冲112、层级2(L2)高速缓冲122、层级3(L3)高速缓冲132和主存储器142。应该理解,以上仅仅是一个说明性示例子,所公开的主题内容不限于此。
在各种实施例中,I/O设备104可以被给予到存储器的指定部分的通道。在各种实施例中,此部分可以通过存储器地址的一个或多个范围来定义。在这样的实施例中,当I/O设备104希望从/向存储器的保留部分读或写数据190时,存取请求可以与存储器地址191关联或包括存储器地址191,其中存储器地址191与数据190关联。在这样的实施例中,不需要完全或立刻从整个保留的存储器部分读或写到整个保留的存储器部分。
在这样的实施例中,在处理器102上运行的软件消费数据很久以后,包含过去或现在与I/O设备104到处理器102通信相关联的陈旧的数据结构的高速缓冲线都可以保留在高速缓冲层次(例如,L2高速缓冲122等)中。在各种实施例中,软件可以频繁地再使用与这些陈旧的数据结构相关联的存储器地址,并且将所有权给予或返回I/O设备104以将新数据写入或产生。在一些实施例中,这些地址可以反复用于相同类型的数据结构和数据流,例如,I/O设备104将数据写入其中并且软件可以在将来消费的圆形描述符队列/环和数据缓冲器池条目。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
在所示的实施例中,当I/O设备104希望(例如,以数据190,等)连贯地写到高速缓冲时,系统100可以生成消息的侦听请求/响应对。如果相应的侦听事务击中处理器102中的高速缓冲层次(例如,L2高速缓冲122)中的高速缓冲线(例如,高速缓冲标签击中,无论有效还是无效的),则高速缓冲标签击中可以提供关于软件对与高速缓冲线相关联的数据的将来的消费的暗示。在各种实施例中,可以有利地分配/更新与此高速缓冲线相关联的数据和重写高速缓冲中的陈旧的数据而不从高速缓冲中逐出有用的数据。
在一些实施例中,所公开的主题内容可以消除与写到DRAM或主存储器142相关联的整个功率部分。随着新的I/O写发生,数据可以以经修改的状态被高速缓冲(例如,L2高速缓冲122,等)所拥有。所公开的主题内容可以消除或减少当处理器102最终取得此高速缓冲线来消费数据结构(例如,经由在处理器102高速缓冲层次中击中的读)时遇到的、对于主存储器142读所采用的整个功率部分和到主存储器142的往返读延迟的一部分。应该理解,以上仅仅是一个说明性示例子,所公开的主题内容不限于此。
在另一实施例中,由I/O写事务分配/更新的高速缓冲线可以被自然地逐出高速缓冲层次并且在处理器102取得它用于消费之前被写到主存储器142。在这样的实施例中,这可能不逊于如果I/O写被完成到主存储器142,并且与它相关联的侦听简单地使高速缓冲线中包含陈旧的数据的高速缓冲线无效,而不是触发高速缓冲线的分配/更新。应该理解,以上仅仅是一个说明性示例子,所公开的主题内容不限于此。
在一些实施例中,即使在I/O写事务仅自然地流过位于与主存储器142同线的高速缓冲层次的层级(例如,共享的L3高速缓冲132等)的情况中,仍可以有利地添加控制和数据路径逻辑来支持分配和/或更新存在于高速缓冲层次的更高层级(例如,L1高速缓冲112、L2高速缓冲122等)中的陈旧的高速缓冲线。例如,通过支持这些到高速缓冲层次的更低延迟层级中的更新,可以增加处理器102的取得延迟效益。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
关于更详细和具体的说明性示例,I/O设备104(或者其它DMA非处理器设备)可能希望将数据190写到分级存储器系统108。在所示的实施例中,I/O设备104可以发布传统的写事务,该写事务包括数据190,但是没有明显地包括所述写涉及机会性的高速缓冲注入的特定形式的指示。在这样的实施例中,写事务或请求可以与存储器地址191相关联。
在所示的实施例中,写请求可以被存储器互连106接收。在各种实施例中,存储器互连106可以被称为相干互连,或者相干存储器互连。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
在各种实施例中,存储器互连106可以向各种高速缓冲等级发送侦听请求。在所示的实施例中,存储器互连106可以经由路径154朝向L3高速缓冲132并且最终向主存储器142发送侦听请求。在所示的实施例中,存储器互连106还可以经由路径156朝向在存储器互连106和处理器102之间的L2高速缓冲122和/或其它高速缓冲(例如,L1高速缓冲112等)发送侦听请求。
在所示的实施例中,主存储器142可以在存储器地址191处存储数据190。在这样的实施例中,主存储器142可以以高速缓冲标签击中来响应侦听请求。然而,L2高速缓冲122也可以存储数据190(表示为旧数据194),并且数据194可以与高速缓冲标签192相关联,高速缓冲标签192依次与存储器地址191相关联。在这样的实施例中,L2高速缓冲122可以以高速缓冲标签击中来响应侦听请求。
在这样的实施例中,存储器互连106可以被配置为确定高速缓冲标签击中是否由比相干存储器互连106在延迟顺序上更接近处理器102的存储器系统108的高速缓冲等级生成。在所示的实施例中,主存储器142比存储器互连106在延迟顺序上更远离处理器102,因此它可能不是所期望的从I/O设备104接受写数据190的高速缓冲等级。相反,L2高速缓冲122比存储器互连106在延迟顺序上更接近处理器102,并且因此它可能被认为是从I/O设备104接受写数据190的合意的高速缓冲等级。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。具体地,关于图2a、2b和3来讨论其它更复杂的示例。
在这样的实施例中,存储器互连106可以通知L2高速缓冲122期待写数据(数据190)被推到或注入到它。在数据190包括局部高速缓冲线的一些实施例中,注入可以采取高速缓冲线合并或更新的形式。在数据190包括完全的高速缓冲线的一些实施例中,注入可以采取高速缓冲线重写的形式。在所示的实施例中,存储器互连106可以执行到高速缓冲等级(例如,L2高速缓冲122)中的高速缓冲注入。
现在将进一步强调上述示例的一些方面。如上所述,在各种实施例中,来自L2高速缓冲122的高速缓冲标签击中是有效的还是无效的高速缓冲标签击中,可能没有关系。在这样的实施例中,高速缓冲标签击中单独可以提供软件或处理器102将来对数据190的消费的暗示或指示,并且可以有利地分配和/或更新数据190,即使这样的更新意味着重写高速缓冲中的陈旧的数据194。在这样的实施例中,这可以被进行而不从高速缓冲逐出其它有用的数据。在这样的实施例中,可以减少或调节高速缓冲污染(以不大可能被处理器102期望的数据污染高速缓冲)的危险。
在上述示例的另一方面,注意到对于非同线高速缓冲(例如,L1高速缓冲112、L2高速缓冲122等),不支持关于高速缓冲标签击中的高速缓冲注入的传统逻辑和电路。传统上,控制和数据路径逻辑或电路存在,以使得I/O设备104能够仅仅更新与从存储器互连106到主存储器142的正常路径同线的那些高速缓冲(例如,L3高速缓冲132、主存储器142等)(在高速缓冲标签击中时)。
可能存在不是同线的位于更接近于处理器102的大量的高速缓冲容量(例如,L1高速缓冲112、L2高速缓冲122等)。在各种实施例中,这样的高速缓冲可以频繁地存有I/O设备104写到的数据(例如,旧数据194)的陈旧的和/或无用的版本。在另一实施例中,同线高速缓冲(例如,L3高速缓冲132等)甚至可能不存在,因此传统系统对写到非同线高速缓冲(例如,L2高速缓冲122,等)的无能为力可能使性能降低。对于具有大的、共享的非同线的L2高速缓冲的实现方式来说,这样缺少同线高速缓冲(例如,L3高速缓冲132等)可能是普遍的。应该理解,以上仅仅是一个说明性示例子,所公开的主题内容不限于此。
在某些方式上不同于以上示例的另一替换实施例中,一旦从L2高速缓冲和主存储器142接收到高速缓冲标签击中,代替直接将数据190写到L2高速缓冲122中,存储器互连106可以导致L2高速缓冲122(以及可能L1高速缓冲112)中的高速缓冲线无效。在这样的实施例中,这可能导致L2高速缓冲122发布对于数据190(或存储器地址191)的读请求,以便取得经修改或改变的数据190的所有权。在这样的实施例中,这个经修改或改变的数据190可以在存储器互连106之内被缓冲。因此,由该读所招致的延迟可能短于要求存取主存储器142而不是存储器互连106的读所招致的延迟。在各种实施例中,此读请求可以被认为是导致L2高速缓冲122将经更新的数据190预取到L2高速缓冲122中。
在这样的实施例中,从I/O设备104的写可以包括完全的高速缓冲线,以便随后从非同线高速缓冲(例如,L2高速缓冲122等)的读可以用于完全的高速缓冲线。在此实施例的另一变型中,如果写数据(数据190)被写到主存储器142,那么由L2高速缓冲122发布的读可能不针对经修改或更新的数据190的所有权,因为高速缓冲线可以在干净的状态中分配。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
为了描述所公开的主题内容的另一变型或例子,在一些实施例中,数据190可以不存储在L1高速缓冲112或L2高速缓冲122之内。如此,侦听请求可能不会生成来自那些高速缓冲或任何非同线的高速缓冲的高速缓冲标签击中(无论有效还是无效的)。在这样的实施例中,存储器互连106不能具有在延迟顺序上比作为高速缓冲注入的好的候选的相干存储器互连106更接近处理器102的存储器系统108的高速缓冲等级。在这样的实施例中,存储器互连106可以将数据190注入到比相干存储器互连106在延迟方面更远离中央处理器102的高速缓冲等级(例如,主存储器142)。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
图1b是根据所公开的主题内容的系统100(还在图1a中显示)的示例实施例的框图。图1b强调传统的系统和所公开的主题内容移动数据方面的差异。
图1b显示由传统系统采用的传统数据路径,其中从I/O设备104(或非处理器DMA设备)和主存储器142发送数据(示出经由路径192)。之后,从主存储器142向L2高速缓冲122或L1高速缓冲112移动数据(示出经由路径194)。在这样的实施例中,处理器102经历的延迟相对较高。
相反,数据路径196示出在所公开的主题内容中,数据可以从I/O设备104经由减少或调和可能的高速缓冲污染的机会性的高速缓冲注入直接移动到L2高速缓冲122(或L1高速缓冲112)。数据路径196还示出:最后,数据可以从L2高速缓冲122移动到主存储器142。应该理解,对于图2a和3的系统,或者对于所公开的主题内容的其它实施例,可以画出类似的数据路径。应该理解,以上仅仅是一个说明性示例,所公开的主题内容不限于此。
图2a是根据所公开的主题内容的系统200的示例实施例的框图。在各种实施例中,系统200可以包括处理器102、分级存储器系统208和一个或多个输入/输出(I/O)设备104。在所示的实施例中,分级存储器系统208可以包括三级(从最小到最大):L1高速缓冲112、层级2(L2)高速缓冲122、层级3(L3)高速缓冲232和主存储器142。应该理解,以上仅仅是一个说明性示例,所公开的主题内容不限于此。
图1a的系统100显示包括至少说明性地与主存储器142紧密地耦接的L3高速缓冲132的分级存储器系统108。图2a的系统200显示包括至少说明性地与存储器互连紧密地耦接的L3高速缓冲232的分级存储器系统208。在所示的实施例中,上面参照图1a和1b描述的机会性的高速缓冲注入方案可以按基本上相似的方式发生。在此实施例中,L3高速缓冲232可能仍然比相干存储器互连106在延迟顺序上更远离中央处理器102,因此,高速缓冲注入仍然可以对L2高速缓冲122或其它更近的延迟高速缓冲等级发生。图2a示出所公开的主题内容不限于特定的存储器拓扑结构。
图2b是根据所公开的主题内容的系统201的示例实施例的框图。图2b强调在最低层级高速缓冲(LLC)或L3高速缓冲332之间的耦合的层级以及在传统的系统和所公开的主题内容移动数据的方式两方面的差异。
在各种实施例中,系统201可以包括处理器202、分级存储器系统209和一个或多个输入/输出(I/O)设备104。在所示的实施例中,分级存储器系统209可以包括三个等级(从最小到最大):L1高速缓冲212、层级2(L2)高速缓冲222、层级3(L3)高速缓冲332和主存储器142。在所示的实施例中,L3高速缓冲332可以不与存储器互连106或主存储器142紧密地耦接(如图1a和2a中显示)。改为L3高速缓冲332(或通过所示的L3高速缓冲332表示的其它高速缓冲)可以经由总线与存储器互连106和分级存储器系统209的其余部分通信地耦接。
然而,尽管这样松散的耦接,L3高速缓冲332还是可以被认为相对于I/O设备104或者甚至处理器202与主存储器142同线。此外,L3高速缓冲332可以比存储器互连106在延迟顺序上更远离处理器202,如下所述。
图2b显示由传统系统采用的传统数据路径,其中从I/O设备104(或非处理器DMA设备)和主存储器142发送数据(示出经由路径292)。之后,从主存储器142向L2高速缓冲222或L1高速缓冲212移动数据(示出经由路径294)。如图显示,这个典型地经由L3高速缓冲332发生。通常这么做是因为L3高速缓冲332被认为是拓扑地在主存储器142和一个或多个处理器之间的共享高速缓冲(关于具有多个处理器的简化的实施例,见图3)。在这样的实施例中,由处理器202经历的延迟相对较高。
数据路径296示出在所公开的主题内容中,数据可以从I/O设备104经由减少或调和可能的高速缓冲污染的机会性高速缓冲注入直接移动到L2高速缓冲222(或L1高速缓冲112)。数据路径296还示出:最后,数据可以从L2高速缓冲222移动到主存储器142。应该理解,以上仅仅是一个说明性示例,所公开的主题内容不限于此。
图3是根据所公开的主题内容的系统300的示例实施例的框图。在各种实施例中,系统300可以包括多个处理器或处理器核心(例如,处理器302a、302b、302c等),每个处理器302a、302b和302c可以与各自高速缓冲(例如,L1高速缓冲312a、312b,312c;和L2高速缓冲322a、322b、322c等)、公共或共享的存储器互连106、公共或共享的L3或最后层级(LLC)高速缓冲132、公共或共享的主存储器142以及一个或多个输入/输出(I/O)设备104相关联。在所示的实施例中,分级存储器系统308可以包括三个等级(从最小到最大):L1高速缓冲312a、312b和312c,层级2(L2)高速缓冲322a、322b和322c,层级3(L3)高速缓冲132和主存储器142。应该理解,以上仅仅是一个说明性示例,所公开的主题内容不限于此。
在所示的实施例中,上面参照图1a描述的技术可以以基本上相同的方式发生。然而,在所示的实施例中,侦听请求可以生成或导致多于两个的参照图1a描述的高速缓冲标签击中。在各种实施例中,多于一个高速缓冲可以存储数据190的副本。此示例显示了在第一处理器的L2高速缓冲322a之内的副本和在第三处理器的L2高速缓冲322c之内的第二副本。在各种实施例中,这些L2高速缓冲332a和322c两者都可以生成高速缓冲标签击中。
在这样的实施例中,存储器互连106可能面临均比存储器互连106在延迟顺序上更接近各自的处理器302a和302c的两个(或者在某些情况中更多个)高速缓冲等级。在这样的实施例中,存储器互连106可以选择多个高速缓冲之一作为用于高速缓冲注入的接收高速缓冲。在一个实施例中,此选择可以基于一个或多个预定义的选择标准(例如,最近被使用的、无效的对有效的,处理器亲和力偏好、循环方案、最低延迟等)。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
在各种实施例中,如果未被选择的高速缓冲的数据当前没有被无效,则它可以被无效。这可以作为如上所述的侦听过程的一部分发生。应该理解,以上仅仅是一个说明性示例,所公开的主题内容不限于此。
图4是根据所公开的主题内容的技术400的示例实施例的流程图。在各种实施例中,技术400可以通过诸如图1a、1b、2a、2b、3或5的系统来使用或产生。但是,应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。应该理解,所公开的主题内容不限于通过技术400示出的动作的次序或数量。
框402示出在一个实施例中,可以接收到在存储器地址处写存储器系统之内的数据的请求,如上所述。在一些实施例中,此请求可以从被配置为执行直接存储器存取的非中央处理器设备接收,如上所述。在一些实施例中,此请求可以通过存储器互连接收,如上所述。在各种实施例中,请求可能不会明显地指示数据要被注入到高速缓冲等级中,如上所述。在各种实施例中,通过此框示出的一个或多个动作可以通过图1a、1b、2a、2b、3或5的装置、系统或组件、图1a、1b、2a、2b或3的存储器系统、存储器互连和/或I/O设备来执行,如上所述。
框404示出在一个实施例中,可以基于存储器地址确定是否通过比相干存储器互连在延迟顺序上更接近于中央处理器的存储器系统的高速缓冲等级生成高速缓冲标签击中,如上所述。在一些实施例中,确定可以包括向高速缓冲等级发送侦听请求,并且从高速缓冲等级接收侦听响应,如上所述。在另一实施例中,确定可以包括从每个比相干存储器互连在延迟顺序上更接近于各自的中央处理器的多个高速缓冲等级接收多个高速缓冲标签击中,并且从多个高速缓冲等级中选择所选择的高速缓冲等级,如上所述。在又另一实施例中,确定可以包括使与高速缓冲标签击中相关联的高速缓冲线无效,如上所述。在一些实施例中,确定可以包括考虑高速缓冲标签击中被生成而不管高速缓冲标签击中是与有效的高速缓冲线还是无效的高速缓冲线相关联,如上所述。在各种实施例中,通过此框示出的一个或多个动作可以通过图1a、1b、2a、2b、3或5的装置、系统或组件,图1a、2b、2a、2b或3的存储器系统和/或存储器互连来执行,如上所述。
框406示出在一个实施例中,如果高速缓冲标签击中通过高速缓冲等级生成,则将数据注入到高速缓冲等级中,如上所述。在各种实施例中,将数据注入到高速缓冲等级中可以包括通过如果高速缓冲等级生成高速缓冲标签击中,则仅将数据注入到高速缓冲等级中来调和高速缓冲污染,如上所述。在多个高速缓冲等级以高速缓冲击中响应的另一实施例中,注入可以包括将数据注入到所选择的高速缓冲等级中,如上所述。在与高速缓冲标签击中相关联的高速缓冲线被无效的又另一实施例中,注入可以包括导致高速缓冲等级从相干存储器互连中预取数据,如上所述。在各种实施例中,通过此框示出的一个或多个动作可以通过图1a、1b、2a、2b、3或5的装置、系统或组件,图1a、2b、2a、2b或3的存储器系统和/或存储器互连来执行,如上所述。
框408示出在一个实施例中,如果高速缓冲等级没有生成高速缓冲标签击中,则将数据注入到比相干存储器互连在延迟顺序上更远离中央处理器的更远的高速缓冲等级中,如上所述。在各种实施例中,通过此框示出的一个或多个动作可以通过图1a、1b、2a、2b、3或5的装置、系统或组件,图1a、2b、2a、2b或3的存储器系统和/或存储器互连来执行,如上所述。
图5是可以包括根据所公开的主题内容的原理形成的半导体器件的信息处理系统500的示意性框图。
参照图5,信息处理系统500可以包括根据所公开的主题内容的原理构造的一个或多个设备的信息处理系统500。在另一个实施例中,信息处理系统500可以采用或执行根据所公开的主题内容的原理的一个或多个技术。
在各种实施例中,信息处理系统500可以包括计算设备(诸如膝上型计算机、台式机、工作站、服务器、刀片式服务器、个人数字助理、智能手机、平板和其它合适的计算机等)或者虚拟机或其虚拟计算设备。在各种实施例中,信息处理系统500可以被用户使用(未显示)。
根据所公开的主题内容的信息处理系统500可以进一步包括中央处理单元(CPU)、逻辑或处理器510。在一些实施例中,处理器510可以包括一个或多个功能单元块(FUB)或组合逻辑块(CLB)515。在这样的实施例中,组合逻辑块可以包括各种布尔逻辑运算(例如,NAND、NOR、NOT、XOR等)、稳定化逻辑器件(例如,触发器、锁存器等),其它逻辑器件或其组合。可以用简单或复杂的方式来配置这些组合逻辑运算来处理输入信号以达到期望的结果。应该理解,虽然描述了同步组合逻辑运算的若干说明性示例,但是所公开的主题内容不是如此受限,并且可以包括异步运算,或其混合。在一个实施例中,组合逻辑运算可以包括多个互补金属氧化物半导体(CMOS)晶体管。在各种实施例中,这些CMOS晶体管可以被布置为执行逻辑运算的门(gate);但是应该理解,其它技术可以被使用,并且在所公开的主题内容的范围之内。
根据所公开的主题内容的信息处理系统500可以进一步包括易失性存储器520(例如,随机存取存储器(RAM)等)。根据所公开的主题内容的信息处理系统500可以进一步包括非易失性存储器530(例如,硬盘、光学存储器、NAND或闪存等)。在一些实施例中,易失性存储器520、非易失性存储器530或其组合或部分可以被称为“存储介质”。在各种实施例中,易失性存储器520和/或非易失性存储器530可以被配置为以半永久性或基本上永久的形式来存储数据。
在各种实施例中,信息处理系统500可以包括一个或多个网络接口540,该一个或多个网络接口540被配置为允许信息处理系统500成为通信网络的一部分并且经由通信网络进行通信。Wi-Fi协议的示例可以包括,但不限于,电气和电子工程师协会(IEEE)802.11g、IEEE 802.11n等。蜂窝协议的示例可以包括,但不限于:IEEE 802.16m(也叫做高级无线MAN(城域网))、高级长期演进(LTE)、用于GSM(全球移动通信系统)演进的增强数据速率(EDGE)、演进的高速分组接入(HSPA+)等。有线协议的示例可以包括,但不限于,IEEE802.3(也叫做以太网)、光纤信道、电力线通信(例如,家庭插、IEEE 1901等)等。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
根据所公开的主题内容的信息处理系统500可以进一步包括用户接口单元550(例如,显示适配器、触觉接口、人机接口设备等)。在各种实施例中,此用户接口单元550可以被配置为从用户接收输入和/或向用户提供输出。其它种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式接收,包括听觉、讲话或触觉输入。
在各种实施例中,信息处理系统500可以包括一个或多个其它设备或硬件组件560(例如,显示器或监视器、键盘、鼠标、相机、指纹读取器、视频处理器等)。应该理解,以上仅仅是若干说明性示例,所公开的主题内容不限于此。
根据所公开的主题内容的信息处理系统500可以进一步包括一个或多个系统总线505。在这样的实施例中,系统总线505可以被配置为通信地耦接处理器510、易失性存储器520、非易失性存储器530、网络接口540、用户接口单元550和一个或多个硬件组件560。通过处理器510处理的数据或从非易失性存储器530的外部输入的数据可以被存储在非易失性存储器530或易失性存储器520中。
在各种实施例中,信息处理系统500可以包括或运行一个或多个软件组件570。在一些实施例中,软件组件570可以包括操作系统(OS)和/或应用。在一些实施例中,OS可以被配置为向应用提供一个或多个服务,并且管理或充当信息处理系统500的各种硬件组件(例如,处理器510、网络接口540等)和应用之间的媒介。在这样的实施例中,信息处理系统500可以包括一个或多个本地应用,其可以在本地(例如,在非易失性存储器530之内等)被安装,并且被配置为直接通过处理器510运行并直接与OS交互。在这样的实施例中,本地应用可以包括预编译的机器可运行代码。在一些实施例中,本地应用可以包括被配置为将源或对象代码翻译为然后通过处理器510执行的可执行代码的脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey等)或虚拟运行机(VM)(例如,Java Virtual Machine、Microsoft Common Language Runtime等)。
上述半导体设备可以使用各种封装技术来压缩。例如,根据所公开的主题内容的原理构造的半导体器件可以使用以下任何一个来封装:层叠封装(package on package,PoP)技术、球栅阵列(ball grid arrays,BGA)技术、芯片尺寸封装(chip scale package,CSP)技术、塑料带引线芯片载体(plastic leaded chip carrier,PLCC)技术、塑料双列直插封装(plastic dual in-line package,PDIP)技术、叠片内裸片封装(die in wafflepack)技术、晶片内裸片形式(die in wafer form)技术、板上芯片(chip on board,COB)、陶瓷双列直插封装(ceramic dual in-line package,CERDIP)技术、塑料标准四边扁平封装(plastic metric quad flat package,PMQFP)技术、塑料四边扁平封装(plastic quadflat package,PQFP)技术、小外型封装(small outline package,SOIC)技术、缩小型小外型封装(shrink small outline package,SSOP)技术、薄型小外型封装(thin smalloutline package,TSOP)、薄型四边扁平封装(thin quad flat package,TOFP)技术、系统级封装(system in package,SIP)技术、多芯片封装(multi-chip package,MCP)技术、晶片级结构封装(wafer-level fabricated package,WFP)技术、晶片级处理堆叠封装(wafer-level processed stack package,WSP)技术或本领域技术人员将知道的其它技术。
方法步骤可以通过一个或多个可编程处理器来执行,其中一个或多个可编程处理器运行计算机程序来通过对输入数据和生成的输出进行操作来执行功能。方法步骤也可以通过专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行,并且装置可以被实现为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。
在各种实施例中,计算机可读介质可以包括当被运行时导致设备执行至少一部分方法步骤的指令。在一些实施例中,计算机可读介质可以被包括在磁性介质、光学介质、其它介质或其组合(例如,CD-ROM、硬盘、只读存储器、快闪驱动器等)中。在这样的实施例中,计算机可读介质可以是被可触摸且非瞬时性地具体化的制品。
虽然已经参照示例实施例描述了所公开的主题内容的原理,但是对于本领域技术人员将显然,在不脱离这些公开的构思的精神和范围的情况下可以对其进行各种改变和修改。因此,应该理解以上实施例不是限制性的,而仅是说明性的。从而,所公开的构思的范围要通过以下权利要求及其等价物的最宽的可允许解释来确定,而不应该被上述描述约束或限制。因此,要理解,所附的权利要求意在覆盖落在实施例的范围之内的所有这样的修改和改变。
Claims (20)
1.一种存储器管理方法,包括:
从被配置为执行直接存储器存取的非中央处理器设备接收请求,以在存储器地址处写存储器系统之内的数据;
基于存储器地址确定是否通过比相干存储器互连在延迟顺序上更接近于中央处理器的存储器系统的高速缓冲等级生成高速缓冲标签击中;
如果高速缓冲等级生成高速缓冲标签击中,则将数据注入到高速缓冲等级中,而不管该高速缓冲等级是否已专门被配置用于高速缓冲注入;
其中将数据注入到高速缓冲等级中包括导致该高速缓冲等级从相干存储器互连所包括的缓冲器预取数据。
2.如权利要求1所述的存储器管理方法,其中所述请求没有明显地指示数据要被注入到高速缓冲等级中。
3.如权利要求1所述的存储器管理方法,进一步包括,如果比相干存储器互连在延迟顺序上更接近于中央处理器的、存储器系统的高速缓冲等级没有生成高速缓冲标签击中,则将数据注入到比相干存储器互连在延迟顺序上更远离中央处理器的更远的高速缓冲等级中。
4.如权利要求1所述的存储器管理方法,其中将所述数据注入到高速缓冲等级中包括:
如果高速缓冲等级生成高速缓冲标签击中,则通过仅将数据注入到高速缓冲等级来调和高速缓冲污染。
5.如权利要求1所述的存储器管理方法,其中确定存储器系统的高速缓冲等级是否生成高速缓冲标签击中包括:
从每个都比相干存储器互连在延迟顺序上更接近各自的中央处理器的多个高速缓冲等级接收多个高速缓冲标签击中,并且
从所述多个高速缓冲等级中选择所选择的高速缓冲等级;以及
其中将数据注入到高速缓冲等级中包括将数据注入到所选择的高速缓冲等级中。
6.如权利要求1所述的存储器管理方法,其中确定高速缓冲等级是否生成高速缓冲标签击中,包括:
向高速缓冲等级发送侦听请求,以及
从高速缓冲等级接收侦听响应。
7.如权利要求1所述的存储器管理方法,其中确定存储器系统的高速缓冲等级是否生成高速缓冲标签击中包括使与高速缓冲标签击中相关联的高速缓冲线无效。
8.如权利要求1所述的存储器管理方法,其中确定是否生成高速缓冲标签击中包括不管高速缓冲标签击中与有效的高速缓冲线还是无效的高速缓冲线相关联,考虑高速缓冲标签击中被生成。
9.一种存储器管理装置,包括:
高延迟存储器,被配置为存储数据,其中高延迟存储器比存储器互连在延迟顺序上更远离中央处理器;
低延迟存储器,被配置为存储数据,其中低延迟存储器比存储器互连在延迟顺序上更接近中央处理器;以及
存储器互连,被配置为:
从被配置为执行直接存储器存取的非中央处理器设备接收在存储器地址处写数据的请求,
基于存储器地址,请求低延迟存储器向存储器互连提供高速缓冲标签击中或高速缓冲标签遗漏,以及
如果低延迟存储器提供高速缓冲标签击中,则将数据注入到低延迟存储器中,而不管该高速缓冲等级是否已专门被配置用于高速缓冲注入;
其中将数据注入到低延迟存储器中包括导致该低延迟存储器从存储器互连所包括的缓冲器预取数据。
10.如权利要求9所述的存储器管理装置,其中所述请求没有明显地指示数据要被注入到低延迟存储器中。
11.如权利要求9所述的存储器管理装置,其中存储器互连被配置为如果低延迟存储器提供高速缓冲标签遗漏则将数据注入到高延迟存储器中。
12.如权利要求9所述的存储器管理装置,其中存储器互连被配置为如果低延迟存储器生成高速缓冲标签击中,则通过仅将数据注入到低延迟存储器来最小化高速缓冲污染。
13.如权利要求9所述的存储器管理装置,其中该装置包括多个低延迟存储器,并且所述多个低延迟存储器包括所述低延迟存储器;以及
其中存储器互连被配置为:
从所述多个低延迟存储器的两个或多个接收高速缓冲标签击中,
从生成高速缓冲标签击中的所述多个低延迟存储器的两个或多个选择所选择的低延迟存储器,并且
仅将数据注入到所选择的低延迟存储器中。
14.如权利要求9所述的存储器管理装置,其中存储器互连被配置为向低延迟存储器发送侦听请求。
15.如权利要求9所述的存储器管理装置,其中低延迟存储器被配置为响应于对于高速缓冲标签击中的请求,
使与高速缓冲标签击中相关联的高速缓冲线无效。
16.如权利要求9所述的存储器管理装置,其中存储器互连被配置为,如果低延迟存储器提供高速缓冲标签击中,则将数据注入到低延迟存储器中,而不管高速缓冲标签击中与有效的高速缓冲线还是无效的高速缓冲线相关联。
17.一种存储器管理系统,包括:
处理器,被配置为从分级存储器系统读数据和将数据写到分级存储器系统;
非中央处理器设备,被配置为执行对分级存储器系统的直接存储器存取,并且请求将数据写到分级存储器系统;及
分级存储器系统,包括:
高延迟存储器,被配置为存储数据,其中高延迟存储器比存储器互连在延迟顺序上更远离中央处理器,
低延迟存储器,被配置为存储数据,其中低延迟存储器比存储器互连在延迟顺序上更接近中央处理器,和
存储器互连,被配置为:
响应于非中央处理器设备的请求,确定将将数据写到分级存储器系统,
至少部分基于数据,请求低延迟存储器向存储器互连提供高速缓冲标签击中或高速缓冲标签遗漏,并且
如果低延迟存储器提供高速缓冲标签击中,则将数据注入到低延迟存储器中,而不管该高速缓冲等级是否已专门被配置用于高速缓冲注入;
其中将数据注入到低延迟存储器中包括导致该低延迟存储器从存储器互连所包括的缓冲器预取数据。
18.如权利要求17所述的存储器管理系统,其中存储器互连被配置为:
尝试减轻低延迟存储器中的高速缓冲污染,并且
如果低延迟存储器提供高速缓冲标签遗漏,则将数据注入到高延迟存储器中。
19.如权利要求17所述的存储器管理系统,其中分级存储器系统包括多个低延迟存储器,并且所述多个低延迟存储器包括所述低延迟存储器;并且
其中存储器互连被配置为:
从所述多个低延迟存储器的两个或多个接收高速缓冲标签击中,
从生成高速缓冲标签击中的所述多个低延迟存储器的两个或多个选择所选择的低延迟存储器,并且
仅将数据注入到所选择的低延迟存储器中。
20.如权利要求17所述的存储器管理系统,其中存储器互连被配置为如果来自低延迟存储器的高速缓冲标签击中与无效的高速缓冲线相关联,则将数据注入到低延迟存储器中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461969077P | 2014-03-21 | 2014-03-21 | |
US61/969,077 | 2014-03-21 | ||
US14/642,654 US10216640B2 (en) | 2014-03-21 | 2015-03-09 | Opportunistic cache injection of data into lower latency levels of the cache hierarchy |
US14/642,654 | 2015-03-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104932989A CN104932989A (zh) | 2015-09-23 |
CN104932989B true CN104932989B (zh) | 2020-05-19 |
Family
ID=54120160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510127857.4A Active CN104932989B (zh) | 2014-03-21 | 2015-03-23 | 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104932989B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10649900B2 (en) * | 2017-11-06 | 2020-05-12 | Samsung Electronics Co., Ltd. | Method to avoid cache access conflict between load and fill |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802576A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Speculative cache snoop during DMA line update |
US5893153A (en) * | 1996-08-02 | 1999-04-06 | Sun Microsystems, Inc. | Method and apparatus for preventing a race condition and maintaining cache coherency in a processor with integrated cache memory and input/output control |
JP2003345653A (ja) * | 2002-05-24 | 2003-12-05 | Hitachi Ltd | データ処理装置及びデータ処理システム |
CN101446923A (zh) * | 1999-12-30 | 2009-06-03 | 英特尔公司 | 一种响应于指令而清洗高速缓冲存储器线的装置和方法 |
CN102693187A (zh) * | 2007-01-31 | 2012-09-26 | 高通股份有限公司 | 用以减少多级高速缓冲存储器层级中的掷出的设备和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100868567B1 (ko) * | 2005-06-30 | 2008-11-13 | 주식회사 히타치엘지 데이터 스토리지 코리아 | 터미널 및 이를 사용한 커넥터 |
US8443146B2 (en) * | 2008-09-18 | 2013-05-14 | International Business Machines Corporation | Techniques for cache injection in a processor system responsive to a specific instruction sequence |
US8429349B2 (en) * | 2008-09-18 | 2013-04-23 | International Business Machines Corporation | Techniques for cache injection in a processor system with replacement policy position modification |
US8554967B2 (en) * | 2009-06-16 | 2013-10-08 | Freescale Semiconductor, Inc. | Flow control mechanisms for avoidance of retries and/or deadlocks in an interconnect |
-
2015
- 2015-03-23 CN CN201510127857.4A patent/CN104932989B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802576A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Speculative cache snoop during DMA line update |
US5893153A (en) * | 1996-08-02 | 1999-04-06 | Sun Microsystems, Inc. | Method and apparatus for preventing a race condition and maintaining cache coherency in a processor with integrated cache memory and input/output control |
CN101446923A (zh) * | 1999-12-30 | 2009-06-03 | 英特尔公司 | 一种响应于指令而清洗高速缓冲存储器线的装置和方法 |
JP2003345653A (ja) * | 2002-05-24 | 2003-12-05 | Hitachi Ltd | データ処理装置及びデータ処理システム |
CN102693187A (zh) * | 2007-01-31 | 2012-09-26 | 高通股份有限公司 | 用以减少多级高速缓冲存储器层级中的掷出的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104932989A (zh) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8949544B2 (en) | Bypassing a cache when handling memory requests | |
US8015365B2 (en) | Reducing back invalidation transactions from a snoop filter | |
US10019377B2 (en) | Managing cache coherence using information in a page table | |
US11341059B2 (en) | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations | |
US9471532B2 (en) | Remote core operations in a multi-core computer | |
CN107408079B (zh) | 带有一致单元的多级别系统存储器的存储器控制器 | |
US11074189B2 (en) | FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy | |
JP7443344B2 (ja) | 外部メモリベースのトランスレーションルックアサイドバッファ | |
US20180095884A1 (en) | Mass storage cache in non volatile level of multi-level system memory | |
US20190050332A1 (en) | Providing dead-block prediction for determining whether to cache data in cache devices | |
US9569361B2 (en) | Pre-fetch chaining | |
US10613984B2 (en) | Prefetch tag for eviction promotion | |
US10963388B2 (en) | Prefetching in a lower level exclusive cache hierarchy | |
JPWO2010032433A1 (ja) | バッファメモリ装置、メモリシステム及びデータ読出方法 | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
KR20230017244A (ko) | 코어 대 코어 캐시 스태싱 및 타깃 발견 | |
CN104932989B (zh) | 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入 | |
US10901691B2 (en) | System, method and apparatus for inter-process communication | |
US10216640B2 (en) | Opportunistic cache injection of data into lower latency levels of the cache hierarchy | |
JP2024510127A (ja) | ページ再マッピングおよびローテーションによるアドレス空間配置のランダム化エントロピーの増大 | |
US20230101038A1 (en) | Deterministic mixed latency cache | |
TW202349214A (zh) | 輸入/輸出裝置的位址變換預取出 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |