CN103870397B - 数据处理系统中访问数据的方法以及电路安排 - Google Patents

数据处理系统中访问数据的方法以及电路安排 Download PDF

Info

Publication number
CN103870397B
CN103870397B CN201310628908.2A CN201310628908A CN103870397B CN 103870397 B CN103870397 B CN 103870397B CN 201310628908 A CN201310628908 A CN 201310628908A CN 103870397 B CN103870397 B CN 103870397B
Authority
CN
China
Prior art keywords
data
memory
attribute
mix
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310628908.2A
Other languages
English (en)
Other versions
CN103870397A (zh
Inventor
J.R.库塞尔
M.G.库普弗施密特
P.E.沙特
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103870397A publication Critical patent/CN103870397A/zh
Application granted granted Critical
Publication of CN103870397B publication Critical patent/CN103870397B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

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)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种方法和电路安排根据存储在存储器地址转换数据结构(如有效到真实地址转换(ERAT)或转换后备缓冲器(TLB))中的一种或多种搅和相关页面属性,有选择地搅和与处理单元耦合的一个或多个级别的高速缓冲存储器中的数据。例如,存储器地址转换数据结构可以结合存储器页面中的数据的存储器访问请求来访问,以便该数据结构中与存储器页面相关的属性可以用于控制是否搅和数据,以及如果是的话,如何与处理存储器访问请求相关地将数据格式化。

Description

数据处理系统中访问数据的方法以及电路安排
技术领域
本发明一般涉及数据处理,尤其涉及处理器架构以及其中的数据的组织。
背景技术
随着半导体技术在时钟速度的增加方面继续缓慢地越来越接近实际极限,设计师越来越多地把注意力放在处理器架构的并行技术上来实现性能提高。在芯片级上,往往将多个处理器核心布置在同一芯片上,以与独立处理器芯片,或在某种程度上,与完全独立计算机几乎相同的方式起作用。另外,甚至在核心内,通过使用专门管理某些类型的操作的多个执行单元来采用并行技术。在许多情况下也采用流水线技术,以便将可能花费多个时钟周期来执行的操作分解成几个阶段,使其他操作能够在较早的操作完成之前开始。还采用多线程技术使多个指令流能够并行地得到处理,使得在任何给定时钟周期中能够执行更综合工作。
继续利用并行技术的一个领域是在执行单元,例如,定点或浮点执行单元的领域中。例如,许多浮点执行单元是高度流水线化的。但是,虽然流水线技术可以提高性能,但当通过流水线处理的指令不相互依赖时,例如,在后面的指令不使用较早指令的结果的情况下,流水线技术是最有效的。每当指令作用在另一条指令的结果上时,通常,后面的指令不能进入流水线中,直到较早的指令从流水线中退出和计算出它的结果。后面的指令被认为依赖于较早的指令,后面的指令停顿下来等待较早指令的结果的现象被说成将“气泡”,或未正在进行生产性操作的周期引入流水线中。
可以用于从流水线执行单元中提取较高利用率部分和消除未用气泡的一种技术是引入多线程技术。这样,其他线程能够将指令发到流水线中的未用时隙中,这抬高了利用率,因此扩大了总吞吐量。提高性能的另一种流行技术是也称为将数据“矢量化”的单指令多数据(SIMD)框架。这样,响应相同SIMD指令,同时对多个数据元素进行操作。矢量执行单元通常包括管理矢量中的不同数据点和同时对所有数据点进行相似操作的多条处理线。例如,对于依靠四(4)字矢量的架构,矢量执行单元可以包括对每个矢量中的四个字进行相同操作的四条处理线。
也可以将上述技术组合在一起,得出使多个线程能够将SIMD指令发给矢量执行单元以便同时处理数据点的“矢量”的多线程矢量执行单元。通常,将调度算法与发出逻辑结合在一起使用,以保证每个线程以合理速率进行下去,使执行单元流水线中的气泡的数量保持在最低水平上。
尽管SIMD执行单元具有突出执行能力,但已经发现,在将数据排列成利用多线SIMD执行单元的格式的过程中消耗了相当数量的额外处理开销。例如,当以结构阵列(AOS)格式将数据存储在存储器中以及执行单元处理具有阵列结构(SOA)格式的数据时,这个问题更加严重。更进一步,在许多情况下,一个进程可能需要一种格式的数据,而另一个进程要求数据具有不同格式,这往往迫使数据以一种格式存储在存储器中,处理器在利用SIMD执行单元处理数据之前将数据装载和重新排序成其他格式。
对这个问题的一种传统做法是将所有数据装载在矢量寄存器文件中,然后在矢量寄存器文件中来回移动。但是,这种做法通常会浪费许多指令。另一种做法是正好在进入寄存器文件中之前“搅和(swizzle)”或重排负载数据。虽然这种做法通常节省了功能指令,但该做法通常仍然要求每个负载多次访问数据高速缓存。
作为一个例子,依靠SIMD操作的许多典型工作负载遵循存在矢量装载,接着像多次相加那样的SIMD浮点运算,然后接着矢量存储的简单循环。在许多传统处理器架构中,这种三指令序列被当作四周期装载、单周期数学运算、和四周期存储来处理,导致高速缓存带宽负担非常重和未充分利用SIMD执行单元的处理能力的循环。
因此,在技术上仍然明显需要使与以适合在数据处理系统中执行,尤其使用SIMD执行单元执行的格式排列数据相关的额外执行开销最小的方式。
发明内容
本发明通过提供一种方法和电路安排解决与现有技术相关的这些和其他问题,该方法和电路安排根据存储在像有效到真实地址转换(ERAT)或转换后备缓冲器(TLB)那样的存储器地址转换数据结构中的一种或多种搅和相关页面属性,有选择地搅和与处理单元耦合的一个或多个级别高速缓冲存储器中的数据。例如,存储器地址转换数据结构可以结合存储器页面中的数据的存储器访问请求来访问,以便该数据结构中与存储器页面相关的属性可以用于控制是否搅和数据,以及如果是的话,如何与管理存储器访问请求相关地将数据格式化。这样,当从高速缓冲存储器中检索数据供处理单元处理时,以最适合处理单元有效处理数据的形式将数据格式化。
因此,按照本发明的一个方面,在数据处理系统中通过如下步骤访问数据:响应数据处理系统中的处理单元发起的存储器访问请求,访问存储器地址转换数据结构,以便为该存储器访问请求进行存储器地址转换;访问该存储器地址转换数据结构中的至少一种搅和相关页面属性,以便确定是否应该搅和来自与该存储器访问请求相关的存储器页面的数据;以及根据该至少一种搅和相关页面属性使来自存储器页面的数据以搅和后格式存储在高速缓冲存储器中。
表征本发明的这些和其他优点和特征展示在所附的和形成其进一步部分的权利要求书中,但是,为了更好地理解本发明,以及通过其使用所达到的优点和目的,应该参考附图以及描述本发明的示范性实施例的伴随描述性内容。
附图说明
图1是按照本发明的实施例的包括可用在数据处理中的示范性计算机的示范性自动化计算总机的方块图;
图2是在图1的计算机中实现的示范性NOC的方块图;
图3是更详细地例示来自图2的NOC的节点的示范性实现的方块图;
图4是例示来自图2的NOC的IP块的示范性实现的方块图;
图5是例示按照本发明的示范性搅和操作的方块图;
图6是并入按照本发明的基于存储器地址转换搅和的示范性数据处理系统的方块图;
图7是在图6中引用的ERAT的示范性ERAT条目格式的方块图;
图8是例示使用支持按照本发明的基于存储器地址转换搅和的数据处理系统的示范性存储器访问的方块图;
图9是例示在图8的数据处理系统中进行装载访问的操作的示范性顺序的流程图;
图10是例示在图8的数据处理系统中进行逐出的操作的示范性顺序的流程图;
图11是例示包括多个级别的按照本发明的基于地址转换搅和的示范性数据处理系统的方块图;以及
图12是例示使用按照本发明的基于地址转换搅和的分组首标的搅和的方块图。
具体实施方式
按照本发明的实施例根据存储在像有效到真实地址转换(ERAT)或转换后备缓冲器(TLB)那样的存储器地址转换数据结构中的搅和相关页面属性,有选择地搅和存储在一个或多个级别高速缓冲存储器中的数据。例如,存储器地址转换数据结构可以结合存储器页面中的数据的存储器访问请求来访问,以便该数据结构中与存储器页面相关的属性可以用于控制是否和如何与管理存储器访问请求相关地搅和数据。这样,当从高速缓存中检索数据时,可以在存储在高速缓存中之前将搅和相关页面属性用于控制数据的有选择搅和。
在这一点上,搅和指的是置换(permutation)、换位(transposition)或将数据重排成不同排列。通常,进行搅和以便将数据重排成更适合利用处理单元执行特定任务的格式。如下面更明显看到的,例如,可以将搅和用于将数据重排,以使其成为更适合图像或图形处理,更适合处理分组首标,或更适合用在以规则块或组为单位处理数据的许多其他应用的任何一种中的格式。
例如,搅和相关页面属性可以包括是否应该搅和页面中的数据、应该在高速缓冲存储器的什么级别上搅和页面中的数据、当被逐出(cast out)时应该将数据写回到更高级高速缓冲存储器中还是使其失效的指示、指示应该如何将数据重封装在高速缓冲存储器中的跨步长度或尺寸、在每个跨步上访问的数据的尺寸或数量、或可用在有选择地搅和高速缓冲存储器中的数据中的任何其他搅和相关信息。
其他变种和修改例对于本领域的普通技术人员来说是显而易见的,因此,本发明不局限于本文讨论的特定实现。
硬件和软件环境
现在转到附图,其中相同标号在几个视图中自始至终表示相同零件,图1例示了按照本发明的实施例的包括可用在数据处理中的示范性计算机10的示范性自动化计算总机。图1的计算机10包括至少一个计算机处理器12或“CPU”,以及随机访问存储器14(“RAM”),该RAM14通过高速存储器总线16和总线适配器18与处理器12连接以及与计算机10的其他部件连接。
存储在RAM14中的是应用程序20,即,执行像,例如,文字处理、电子表格、数据库操作、视频游戏、股市模拟、原子量子过程模拟、或其他用户级应用那样的特定数据处理任务的用户级计算机程序指令的模块。存储在RAM14中的还有操作系统22。可结合本发明的实施例使用的操作系统包括UNIXTM、LinuxTM、微软Windows XPTM、AIXTM、IBM i5/OSTM、和本领域的普通技术人员可想到的其他操作系统。图1的例子中的操作系统22和应用程序20被显示在RAM14中,但这样软件的许多部件通常也存储在非易失性存储器中,例如,盘驱动器24上。
如下面更明显看到的那样,按照本发明的实施例可以在片上网络(NOC)集成电路器件或芯片内实现,这样,计算机10被例示成包括两个示范性NOC:视频适配器26和协处理器28。NOC视频适配器26可替代地可以称为图形适配器,是专门为图形输出到像显示屏或计算机监视器那样的显示设备30而计算的I/O适配器的例子。NOC视频适配器26通过高速视频总线32、总线适配器18、和也是高速总线的前端总线34与处理器12连接。NOC协处理器28通过总线适配器18、和也是高速总线的前端总线34和36与处理器12连接。图1的NOC协处理器可以优化成,例如,在主处理器12的命令下加速特定数据处理任务。
图1的示范性NOC视频适配器26和NOC协处理器28每一个都包括NOC,该NOC包括集成处理器(“IP”)块、路由器、存储器通信控制器、和网络接口控制器,它们的细节将在下面结合图2-3作更详细讨论。NOC视频适配器和NOC协处理器每一个都最适用于使用并行处理以及需要快速随机访问共享存储器的程序。但是,从本公开中受益的本领域的普通技术人员应该懂得,本发明可以在除了NOC设备和设备架构之外的其他设备和设备架构中实现。因此本发明不局限于在NOC设备内的实现。
图1的计算机10包括通过扩展总线40和总线适配器18与处理器12和计算机10的其他部件耦合的盘驱动器适配器38。盘驱动器适配器38以盘驱动器24的形式将非易失性数据存储设备与计算机10连接,可以使用,例如,集成驱动电子设备(“IDE”)适配器、小型计算机系统接口(“SCSI”)适配器、和本领域的普通技术人员可想到的其他适配器来实现。如本领域的普通技术人员所想到,非易失性计算机存储器也可以实现成光盘驱动器、电可擦除可编程只读存储器(所谓的“EEPROM”或“闪速”存储器)、RAM驱动器等。
计算机10还包括一个或多个输入/输出(“I/O”)适配器42,它通过,例如,软件驱动器和计算机硬件实现面向用户的输入/输出,以便控制到像计算机显示屏那样的显示设备的输出,以及从像键盘和鼠标那样的用户输入设备44的用户输入。另外,计算机10还包括用于与其他计算机48数据通信和与通信网络50数据通信的通信适配器46。这样的数据通信可以通过RS-232连线,通过像通用串行总线(“USB”)那样的外部总线,通过像IP数据通信网络那样的数据通信网络,和以本领域的普通技术人员可想到的其他方式串行地进行。通信适配器实现一台计算机直接或通过数据通信网络将通信数据发送给另一台计算机的硬件级数据通信。适合用在计算机10中的通信适配器的例子包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的以太网(IEEE802.3)适配器、和用于无线数据通信网络通信的802.11适配器。
为了进一步说明起见,图2展示了按照本发明实施例的示范性NOC102的功能方块图。图2中的NOC是在“芯片”100上,即,在集成电路上实现的。图2中的NOC包括分组成互连节点的集成处理器(“IP”)块104、路由器110、存储器通信控制器106、和网络接口控制器108。每个IP块104通过存储器通信控制器106和网络接口控制器108适用于路由器110。每个存储器通信控制器106控制IP块与存储器之间的通信,每个网络接口控制器108通过路由器110控制IP块间通信。
在NOC102中,每个IP块代表作为积木用于NOC内的数据处理的同步或异步逻辑设计的可重用单元。术语“IP块”有时被扩展成“知识产权块”,其有效地将IP块指定为一方所有的设计,即,一方授权给半导体电路的其他用户或设计者的知识产权。但是,在本发明的范围内,未要求IP块受任何特定所有权支配,因此在本说明书中该术语总是被全写成“集成处理器块”。如这里所规定,IP块是可能是或可能不是知识产权的主体的逻辑、单元、或芯片布局设计的可重用单元。IP块是可以形成ASIC芯片设计或FPGA逻辑设计的逻辑核心。
通过类比描述IP块的一种方式是IP块对于NOC设计如同库对于计算机编程或分立集成电路部件对于印刷电路板设计。在按照本发明实施例的NOC中,IP块可以实现成通用门级网表,实现成完全专用或通用微处理器,或以本领域的普通技术人员可想到的其他方式实现。网表类似于高级程序应用的汇编-代码列表,是IP块逻辑功能的布尔代数表示(门、标准单元)。NOC也可以,例如,以用像Verilog或VHDL那样的硬件描述语言描述的可合成形式实现。除了网表和可合成实现之外,NOC也可以用较低级物理描述实现。诸如SERDES、PLL、DAC、ADC等的类似IP块元件可以以像GDSII那样的晶体管布局格式分布。IP块的数字元件有时也以布局格式提供。还要懂得,IP块以及按照本发明实现的其他逻辑电路可以以在各种细节水平上定义实现这样逻辑的电路安排的功能和/或布局的计算机数据文件,例如,逻辑定义程序代码的形式分发,因此,虽然已经和在下文中将在在全功能集成电路设备、利用这样设备的数据处理系统、和其他有形、物理硬件电路中实现的电路安排的背景下对本发明加以描述,但从本公开中受益的本领域的普通技术人员应该懂得,本发明也可以在程序产品内实现,以及与用于分发程序产品的计算机可读存储介质的特定类型无关地同等应用本发明,计算机可读存储介质的例子包括,但不限于,诸如易失性和非易失性存储器件、软盘、硬盘驱动器、CD-ROM、和DVD(等等)的可记录型介质。
图2的例子中的每个IP块104通过存储器通信控制器106适用于路由器110。每个存储器通信控制器是适合于在IP块与存储器之间提供数据通信的同步和异步逻辑电路的总成。IP块与存储器之间的这样通信的例子包括存储器装载指令和存储器存储指令。存储器通信控制器106将在下面参考图3作更详细描述。每个IP块104也通过网络接口控制器108适用于路由器110,网络接口控制器108控制IP块104之间通过路由器110的通信。IP块104之间的通信的例子包括并行应用中和流水线应用中IP块之间传送数据的消息和处理数据的指令。网络接口控制器108也在下面参考图3详细描述。
多个路由器110以及它们之间的相应链路118实现NOC的网络操作。链路118可以是在连接所有路由器的物理、并行导线总线上实现的分组结构。也就是说,每条链路可以在宽到足以同时容纳包括所有首标信息和有效负载数据的整个数据交换分组的导线总线上实现。如果分组结构包括,例如,64个字节,其中包括8个字节首标和56个字节的有效负载数据,则对应每条链路的导线总线是64个字节宽的512条导线。另外,每条链路可以是双向的,使得如果链路分组结构包括64个字节,则导线总线实际上包含每个路由器与网络中其每个邻居之间的1024条导线。在这样的实现中,消息可以包括不止一个分组,但每个分组精确地与导线总线的宽度一致。在替代例中,可以在只宽到足以容纳分组的一部分的导线总线上实现链路,以便可以将分组分解成多个节拍,例如,以便如果一条链路被实现成16个字节宽,或128条导线,则可以将64个字节分解成四个节拍。要懂得的是,不同实现可以根据实际物理限制以及所希望运行特性使用不同总线宽度。如果路由器与导线总线的每个部分之间的连接被称为端口,则每个路由器包括五个端口,网络上数据传输的四个方向的每一个各一个,第五个端口使路由器通过存储器通信控制器和网络接口控制器适用于IP块。
每个存储器通信控制器106控制IP块与存储器之间的通信。存储器可以包括片外主RAM112、通过存储器通信控制器106直接与IP块连接的存储器114、实现成IP块116的片上存储器、和片上高速缓存。在NOC102中,例如,片上存储器114、116的任一个都可以实现成片上高速缓冲存储器。所有这些形式的存储器都可以布置在相同地址空间、物理地址或虚拟地址中,甚至对于直接附在IP块上的存储器也是如此。因此存储器寻址消息相对于IP块可以是完全双向的,因为这样的存储器可以从网络上的任何地方的任何IP块直接寻址。IP块上的存储器116可以从那个IP块或从NOC中的任何其他IP块寻址。直接附在存储器通信控制器上的存储器114可以由通过那个存储器通信控制器适用于网络的IP块寻址—也可以从NOC中的任何地方的任何其他IP块寻址。
NOC102包括两个存储器管理单元(“MMU”)120,122,其为按照本发明实施例的NOC例示了两种可替代存储器架构。MMU120在IP块内实现,使IP块内的处理器可以在虚拟存储器中操作,同时使NOC的整合其余架构可以在物理存储器地址空间中操作。MMU122是片外实现的,通过数据通信端口124与NOC连接。端口124包括引脚和在NOC与MMU之间传导信号所需的其他互连线,以及将消息分组从NOC分组格式转换成外部MMU122所需的总线格式的足够智慧。MMU的外部地点意味着NOC的所有IP块中的处理器可以在虚拟存储器地址空间中操作,到片外存储器的物理地址的所有转换由片外MMU122管理。
除了使用MMU120,122例示的两种存储器架构之外,数据通信端口126还例示了可用在能够用在本发明的实施例中的NOC中的第三种存储器架构。端口126提供了NOC102的IP块104与片外存储器112之间的直接连接。如果在处理路径中没有MMU,则这种架构让NOC的所有IP块利用物理地址空间。在双向共享地址空间时,NOC的所有IP块可以通过由直接与端口126连接的IP块引导、包括装载和存储的存储器寻址消息在地址空间中访问存储器。端口126包括引脚和在NOC与片外存储器112之间传导信号所需的其他互连线,以及将消息分组从NOC分组格式转换成外部片外存储器112所需的总线格式的足够智慧。
在图2的例子中,将IP块之一指定成主接口处理器128。主接口处理器128提供NOC与可以安装NOC的主计算机10之间的接口,并且还对NOC上的其他IP块提供数据处理服务,包括,例如,从主计算机接收和在IP块之间分派NOC数据处理请求。NOC可以,例如,如上面参考图1所述将视频图形适配器26或协处理器28实现在较大型计算机10上。在图2的例子中,主接口处理器128通过数据通信端口130与较大型主计算机连接。端口130包括引脚和在NOC与主计算机10之间传导信号所需的其他互连线,以及将消息分组从NOC分组格式转换成主计算机10所需的总线格式的足够智慧。在图1中的计算机中的NOC协处理器的例子中,这样的端口将提供NOC协处理器28的链路结构与NOC协处理器28与总线适配器18之间的前端总线36所需的协议之间的数据通信格式转换。
图3接着例示了更详细地例示在用132笼统例示的NOC102中的IP块104、存储器通信控制器106、网络接口控制器108和路由器110内实现的部件的功能方块图。IP块104包括计算机处理器134和I/O功能136。在这个例子中,计算机存储器用一片随机访问存储器(“RAM”)138表示在IP块104中。存储器如上面参考图2所述,可以占据每个IP块上的内容可从NOC中的任何IP块访问的几段物理地址空间。每个IP块中的处理器134、I/O能力136、和存储器138有效地将IP块实现成一般可编程微型计算机。但是,如上所述,在本发明的范围内,IP块一般代表作为积木用于NOC内的数据处理的同步或异步逻辑的可重用单元。因此,将IP块实现成一般可编程微型计算机尽管是可用于说明目的的普通实施例,但不限制本发明。
在图3的NOC102中,每个存储器通信控制器106包括多个存储器通信执行引擎140。使每个存储器通信执行引擎140都能够执行来自IP块104的存储通信指令,包括网络与IP块104之间的双向存储器通信指令流141,142,144。存储器通信控制器106执行的存储器通信指令不仅源自通过特定存储器通信控制器适合于路由器的IP块,而且源自NOC102中的任何地方的任何IP块104。也就是说,NOC中的任何IP块都可以生成存储器通信指令,并通过NOC的路由器将那种存储器通信指令发送给与另一个IP块相联系的另一个存储器通信控制器以便执行那种存储器通信指令。这样的存储器通信指令可以包括,例如,转换后备缓冲器控制指令、高速缓存控制指令、屏障指令、和存储器装载和存储指令。
使每个存储器通信执行引擎140能够分开地和与其他存储器通信执行引擎并行地执行完整存储器通信指令。存储器通信执行引擎实现为存储器通信指令的并发吞吐量优化的可增减存储器事务处理器。存储器通信控制器106支持所有都同时运行的多个存储器通信执行引擎140以便同时执行多条存储器通信指令。新存储器通信指令由存储器通信控制器106分配给存储器通信执行引擎140,存储器通信执行引擎140可以同时接受多个响应事件。在这个例子中,所有存储器通信执行引擎140都是相同的。因此,增减存储器通信控制器106可以同时管理的存储器通信指令的数量通过增减存储器通信执行引擎140的数量来实现。
在图3的NOC102中,使每个网络接口控制器108能够将通信指令从命令格式转换成通过路由器110在IP块104之间传送的网络分组格式。通信指令可以由IP块104或由存储器通信控制器106以命令格式明确表达,并以命令格式提供给网络接口控制器108。该命令格式可以是与IP块104和存储器通信控制器106的架构寄存器文件相容的本机格式。网络分组格式通常是通过网络的路由110传输所需的格式。每个这样的消息由一个或多个网络分组组成。在网络接口控制器中从命令格式转换成分组格式的这样通信指令的例子包括IP块与存储器之间的存储器装载指令和存储器存储指令。这样的通信指令还可以包括在并行应用中和在流水线应用中在传送数据的IP块之间发送消息的通信指令和在IP块之间处理数据的指令。
在图3的NOC102中,使每个IP块都能够通过IP块的存储器通信控制器向和从存储器发送基于存储器地址的通信物,然后通过它的网络接口控制器也发送给网络。基于存储器地址的通信物是由IP块的存储器通信控制器的存储器通信执行引擎执行、像装载指令或存储指令那样的存储器访问指令。这样基于存储器地址的通信物通常源自IP块,以命令格式明确表达,并转交给存储器通信控制器加以执行。
许多基于存储器地址的通信物利用消息业务来进行,因为要访问的某个存储器可能处在物理存储器地址空间中的某个地方,片上或片外,直接附在NOC中的某个存储器通信控制器上,或最终通过NOC的某个IP块访问—IP块与该NOC无关地始发某个特定基于存储器地址的通信物。因此,在NOC102中,将利用消息业务进行的所有基于存储器地址通信物从存储器通信控制器传递到相关网络接口控制器,以便从命令格式转换成分组格式和在消息中通过网络发送。在转换成分组格式时,网络接口控制器还依赖于基于存储器地址的通信物要访问的一个或几个存储器地址地识别分组的网络地址。利用存储器地址寻址基于存储器地址的消息。每个存储器地址由网络接口控制器映射成网络地址,通常,负责某个范围物理存储器地址的存储器通信控制器的网络地点。存储器通信控制器106的网络地点自然也是存储器通信控制器的相关路由器110、网络接口控制器108、IP块104的网络地点。每个网络接口控制器内的指令转换逻辑150能够为了通过NOC的路由器发送基于存储器地址通信物的目的将存储器地址转换成网络地址。
一旦从网络的路由器110接收到消息业务,每个网络接口控制器108就检查每个分组是否有存储器指令。将包含存储器指令的每个分组交给与正在接收网络接口控制器相联系的存储器通信控制器106,存储器通信控制器106在将分组的其余有效负载发送给IP块作进一步处理之前执行存储器指令。这样,在IP块开始执行依赖于特定存储器内容的来自消息的指令之前,总是准备好存储器内容来支持IP块的数据处理。
在图3的NOC102中,使每个IP块104能够绕过它的存储器通信控制器106,通过IP块的网络接口控制器108直接将IP块间的网络寻址通信物146发送给网络。网络寻址通信物是通过网络地址指向另一个IF块的消息。如本领域的普通技术人员所想到,这样的消息在流水线应用中发送工作数据,在SIMD应用中在IP块之间发送用于单个程序处理的多个数据等等。这样的消息与基于存储器地址通信物的不同之处在于它们一开始就被始发IP块网络寻址的,该始发IP块知道通过NOC的路由器将消息引向的网络地址。这样的网络寻址通信物由IP块通过I/O功能136以命令格式直接传递给IP块的网络接口控制器,然后由网络接口控制器转换成分组格式,并通过NOC的路由器发送给另一个IP块。这样的网络寻址通信物146是双向的,依赖于它们在某个特定应用中的使用,潜在地转给NOC的每个IP块和从NOC的每个IP块转出。但是,使每个网络接口控制器都能够向和从相关路由器发送和接收这样的通信物,以及使每个网络接口控制器都能够绕过相关存储器通信控制器106地直接向和从相关IP块发送和接收这样的通信物。
还使图3的例子中的每个网络接口控制器108都能够实现网络上的虚拟通道,通过类型表征网络分组。每个网络接口控制器108包括按类型分类每条通信指令,以及在以分组形式将指令转交给路由器110以便在NOC上发送之前将指令的类型存储在网络分组格式的字段中的虚拟通道实现逻辑148。通信指令类型的例子包括IP块间基于网络地址消息、请求消息、对请求消息的响应、使引向高速缓存的消息失效;存储器装载和存储消息;以及对存储器装载消息的响应等。
图3的例子中的每个路由器110包括路由逻辑152、虚拟通道控制逻辑154、和虚拟通道缓冲器156。路由逻辑152通常被实现成同步和异步逻辑的网络,其为由路由器110、链路118、和路由器之间的总线导线形成的网络中的数据通信实现数据通信协议栈。路由逻辑152包括本领域的普通技术人员可以将片外网络与路由表相联系的功能、在至少一些实施例中路由表被认为太慢了,不方便用在NOC中。实现成同步和异步逻辑的网络的路由逻辑可以配置成与单个时钟周期一样快地作出路由决定。本例中的路由逻辑通过为转发在路由器中接收的每个分组选择一个端口来传送分组。每个分组包含分组要去往的网络地址。
在上面描述基于存储器地址通信物中,每个存储器地址被描述成由网络接口控制器映射到网络地址,即,存储器通信控制器的网络地点。存储器通信控制器106的网络地点自然也是那个存储器通信控制器的相关路由器110、网络接口控制器108和IP块104的网络地点。因此,在IP块间,或基于网络地址的通信物中,应用级数据处理通常也将网络地址视作由NOC的路由器、链路、和总线导线形成的网络内IP块的地点。图2例示了这样网络的一种组织是行和列的网格,其中每个网络地点可以实现成,例如,网格的每组相关路由器、IP块、存储器通信控制器、和网络接口控制器的唯一标识符或网格中每个这样的组的x,y坐标。
在图3的NOC102中,每个路由器110实现两个或更多个虚拟通信通道,其中每个虚拟通信通道通过通信类型来表征。通信指令类型,因此虚拟通道类型包括上述的那些消息:IP块间基于网络地址消息、请求消息、对请求消息的响应、使引向高速缓存的消息失效;存储器装载和存储消息;以及对存储器装载消息的响应等。为了支持虚拟通道,图3的例子中的每个路由器110还包括虚拟通道控制逻辑154和虚拟通道缓冲器156。虚拟通道控制逻辑154检查每个接收的分组是否具有其指定的通信类型,并将每个分组放入那种通信类型的输出虚拟通道缓冲器中,以便通过端口发送给NOC上的相邻路由器。
每个虚拟通道缓冲器156具有有限存储空间。当在较短时段内接收到许多分组时,可能填满虚拟通道缓冲器—使得再也不能将分组放入缓冲器中。换句话说,到达缓冲器充满的虚拟通道的分组将被丢弃。但是,利用总线导线的控制信号,使本例中的每个虚拟通道缓冲器156能够通过虚拟通道控制逻辑劝告周围路由器暂停在虚拟通道中的发送,即,暂停特定通信类型的分组的发送。当如此暂停一个虚拟通道时,所有其他虚拟通道不受影响—可以继续满负荷运行。控制信号一直通过每个路由器有线传回到每个路由器的相关网络接口控制器108。每个网络接口控制器被配置成一旦接收到这样的信号,就描绘从它的相关存储器通信控制器106或从它的相关IP块104接收暂停虚拟通道的通信指令。这样,虚拟通道的暂停影响一直回溯到始发IP块、实现该虚拟通道的所有硬件。
暂停虚拟通道中的分组发送的一种效果是再也不会丢弃分组。当路由器遇到在像,例如,互联网协议那样的一些不可靠协议中可能丢弃分组的状况时,图3的例子中的路由器通过它们的虚拟通道缓冲器156和它们的虚拟通道控制逻辑154暂停虚拟通道中的所有分组发送,直到缓冲空间再次可用,从而没有任何必要丢弃分组。因此,图3的NOC可以利用极薄一层硬件来实现高度可靠的网络通信协议。
图3的示范性NOC还可以配置成保持片上和片外存储器高速缓存两者之间的高速缓存一致性。每个NOC可以支持每一个可以针对相同底层存储器地址空间操作的多个高速缓存。例如,高速缓存可以由IP块,由存储器通信控制器,或由NOC外部的高速缓存控制器来控制。图2的例子中的片上存储器通信控制器114,116的任一个也可以实现成片上高速缓存,以及在本发明的范围内,高速缓冲存储器也可以片外实现。
例示在图3中的每个路由器110包括五个端口,即,通过总线导线118与其他路由器连接的四个端口158A-D、和通过网络接口控制器108和存储器通信控制器106将每个路由器与它的相关IP块104连接的第五端口160。可以从图2和3中的例示中可以看出,NOC102的路由器110和链路118形成垂直和水平链路连接每个路由器中的垂直和水平端口的网状网络。在图3的例示中,例如,端口158A,158B,和160被称为垂直端口,端口158B和158D被称为水平端口。
图4接着以另一种方式例示了实现成划分成发出或指令单元(IU)162、执行单元(XU)164和辅助执行单元(AXU)166的、按照本发明的IP块104有一种示范性实现。在例示的实现中,IU162包括从L1指令高速缓存(iCHCHE)170接收指令的多个指令缓冲器168。每个指令缓冲器168专用于多个,例如,四个对称多线程(SMT)硬件线程之一。有效到真实地址转换单元(iERAT)172与iCHCHE170耦合,用于将来自多个线程取出定序器174的指令提取请求转换成从较低级存储器中检索指令的真实地址。每个线程取出定序器174专用于特定硬件线程,用于保证相关线程要执行的指令被取到iCHCHE中以便分派给合适执行单元。也如图4所示,取到指令缓冲器168中的指令也可以通过分支预测逻辑176监视,分支预测逻辑176向每个线程取出定序器174提供提示,以便使执行线程时分支引起的指令高速缓存丢失最少。
IU162还包括专用于每个硬件线程、和配置成解决依赖性问题和控制指令从指令缓冲器168到XU164的发出的依赖性/发出逻辑块178。另外,在例示的实施例中,在AXU166中配备了分开依赖性/发出逻辑180,因此允许分开指令由不同线程同时发给XU164和AXU166。在一个可替代实施例中,可以将逻辑180布置在IU162中,或可以完全省略逻辑180,使逻辑178将指令发给AXU166。
XU164被实现成定点执行单元,包括与定点逻辑184、分支逻辑186和/装载/存储逻辑188耦合的一组通用寄存器(GPR)182。装载/存储逻辑188与L1数据高速缓存(dCACHE)190耦合,由dERAT逻辑192提供有效到真实地址转换。XU164可以配置成实现几乎任何指令集,例如,32b或64bPowerPC指令集的全部或一部分。
AXU166起包括专用代表性/发出逻辑180以及一个或多个执行块192的逻辑执行单元的作用。AXU166可以包括任何数量的执行块,以及可以实现几乎任何类型的执行单元,例如,浮点单元、或像加密/解密单元、协处理器、矢量处理单元、图形处理单元、XML处理单元等。在例示的实施例中,AXU166包括与XU164的高速辅助接口,例如,以便支持AXU架构状态与XU架构状态之间的直接移动。
与IP块104的通信可以经由与NOC102耦合的网络接口控制器108,以上面结合图2所讨论的方式管理。例如,访问L2高速缓冲存储器的基于地址通信可以与基于消息通信一起提供。例如,每个IP块104可以包括专用输入盒和/或输出盒,以便管理IP块之间的节点间通信。
本发明的实施例可以在上面结合图1-4所述的硬件和软件环境内实现。但是,从本公开中受益的本领域的普通技术人员应该懂得,本发明可以在众多不同环境中实现,以及可以不偏离本发明的精神和范围地对上述的硬件和软件环境作出其他修改。这样,本发明不局限于本文公开的特定硬件和软件环境。
基于地址转换的搅和
在SIMD矢量处理系统中,在将数据排列成利用SIMD处理单元中的多条线的格式的过程中消耗了相当数量的额外开销。当以结构阵列(AOS)将数据存储在存储器中以及需要处理具有阵列结构(SOA)格式的数据时,这个问题更加严重。在许多情况下,一个进程可能想要一种格式的数据,而另一个进程却偏爱不同格式,使得以一种格式将数据存储在存储器中,而要求处理器在利用SIMD矢量单元之前装载和重新排序数据。
一般说来,为了解决这个问题,传统做法将所有数据装载在矢量寄存器文件中,然后在矢量寄存器文件中来回移动。可替代地,可以正好在装入寄存器文件中之前搅和数据。这后一种做法通常节省了功能指令,但仍然要求每个负载多次访问数据高速缓存。许多工作负载遵循存在矢量装载,接着SIMD浮点运算,再接着矢量存储的简单循环,这种三指令序列通常被实现成四周期装载、单周期数学运算、和四周期存储。这种做法使高速缓存带宽负担非常重,因此未充分利用SIMD执行单元。
另一方面,按照本发明的实施例利用地址转换数据结构和逻辑在存储器系统的不同级别之间搅和数据,允许将搅和数据存储在一个或多个级别的高速缓冲存储器中,以减少高速缓存访问和提高性能。尤其,可以将页表条目(PTE),或主要用于在存储器架构中将有效或虚拟地址转换成真实地址的其他适当数据结构用于存储定义是否要搅和存储在特定页面中的数据的一种或多种搅和相关页面属性。可以将PTE放置在,例如,有效到真实地址转换(ERAT)表、转换后备缓冲器(TLB)或页表中。搅和相关页面属性还可以包括像指示应该如何将数据重封装在高速缓冲存储器中的跨步长度或尺寸、在每个跨步上访问的数据的尺寸、当被逐出时应该将数据写回到更高级高速缓冲存储器中还是使其失效、和应该发生搅和的高速缓冲存储器的级别的指示等等。这个页面可以是整个页面,或简单地,如核心架构所定义的子页。
如图5所示,例如,可以以例示在222上的格式将数据的高速缓存行存储在主存储器中,而可能希望使用例示在224上的格式将数据存储在一个或多个级别的高速缓冲存储器中,以有助于,例如,矢量执行单元处理。与地址转换逻辑和/或高速缓存逻辑相关的硬件逻辑可以用于与任何其他高速缓存行一样地管理高速缓存行上的高速缓存一致性,页表条目或其他地址转换数据结构将定义如何组织数据和应该如何访问数据的属性提供给硬件逻辑。对这一行的矢量装载然后可以在单次访问中返还适当组织数据,因此与上述简单循环例子一样,该循环使用三个处理器执行周期而不是九个,导致显著加速。对这一行的其他字节或字访问也可以根据规定在PTE中的跨步长度和访问尺寸计算适当偏移。
另外,虽然在一些实施例中,可能要求逐个高速缓存行地对准搅和的所有数据,但这未必是所希望的,因此在一些实施例中,可能希望包括通过从可以确定必须使哪些高速缓存行失效的更高级高速缓存支持失效跨过高速缓存行和扩展跨步长度的能力。这可以通过为失效访问像ERAT那样的地址转换数据结构,或将搅和相关属性存储在已经为失效访问的目录标记表中来完成。
通过支持变量访问和除了字矢量之外的其他跨步长度,可以支持像装载许多通信分组的一个或多个初始字节和并行处理它们的首标那样的功能。除了矢量工作负载之外,这还可用于,例如,分组的标量整数处理。
在一些实施例中,可以包括控制是否根据负载访问只返还所请求高速缓存行,或是否返还所有接触高速缓存行的定义在指令中的模式位或指令修饰位。对于打算装载矢量的所有元素的情况,这起预取功能的作用。
另外,如上所述,可以将级别属性用于规定在高速缓冲存储器的几个级别当中,在哪个级别内搅和数据。在本发明的一个实施例中,例如,可以以标准存储器格式将数据存储在L2和/或L3高速缓存中,多个处理器可以对数据进行不同作业,因为它们可以来回传递所有权。数据可以以标准格式保留在L2和/或L3高速缓存中,而每个处理器不同地向那个处理器自己的L1高速缓存中装载和搅和数据,以便为每个特定处理器优化对数据的访问。
另外,在一些实施例中,重新排序数据也可以为便于更强大优化访问地将数据存储在高速缓存中创造条件。例如,与分散在几个存储体中相反,搅和数据时常可以存储在单个存储体中,要不然需要更多的阵列处在活动状态和更加费力。
例如,图6例示了适合实现按照本发明的基于地址转换搅和的示范性数据处理系统200。系统200被配置成含有将多个处理核心204一起与存储器管理单元(MMU)206耦合的存储器总线202。虽然在图6中只例示了两个处理核心204,但应该懂得,在本发明的不同实施例中可以利用任何数量的处理核心。
每个处理核心204是包括多(N)个硬件线程208,以及有效到真实地址转换(ERAT)单元210和集成L1高速缓存212的SMT核心。如在现有技术中所理解的那样,ERAT210用作存储器地址转换数据,例如,PTE的高速缓存,通常与较低级数据结构,例如,布置在MMU206中或要不然MMU206可访问的转换后备缓冲器(TLB)214相联系。TLB214可以用作通常存储在存储器216中的较大页表的高速缓存。
存储器系统可以包括多级存储器和高速缓存,这样,数据处理系统200被例示成包括与MMU206耦合和被处理核心204共享的L2高速缓存218。但是,应该懂得,在本发明的其他实施例中可以利用各种可替代存储器架构。例如,可以使用另外级别的高速缓冲存储器,例如,L3高速缓存,以及在一些实施例中,例如,在基于非均匀存储器访问(NUMA)的数据处理系统中可以划分存储器216。更进一步,另外的高速缓存级别可以专用于特定处理核心,例如,以便每个处理核心包括可以集成成处理核心或耦合在处理核心与存储器总线之间的专用L2高速缓存。在一些实施例中,L2或L3高速缓存可以直接与存储器总线耦合,而不是经由与MMU的专用接口。
另外,应该懂得,例示在图6中的部件可以集成在相同集成电路器件或芯片上,或可以布置在多个这样的芯片中。在一个实施例中,例如,在NOC安排中每个处理核心被实现成的IP块,而在SOC安排中总线202、MMU206和L2高速缓存218被集成在与处理核心相同的芯片上。在其他实施例中,总线202、MMU206、L2高速缓存218和/或存储器216每一个可能被集成在与处理核心相同或不同的芯片上,以及在一些情况下,处理核心可以布置在分开芯片中。
因此,应该懂得,考虑到可以与本发明一起使用的各种各样已知处理器和存储器架构,本发明不局限于本文例示的特定存储器架构。
为了实现按照本发明的基于地址转换搅和,数据处理系统200包括,例如,布置在L2高速缓存218内、和可用于有选择地搅和存储在各种级别的存储器子系统中的高速缓存行的搅和逻辑220。
如上所述,基于地址转换的搅和可以通过将一种或多种页面属性加入存储器地址转换数据结构,例如,页表条目(PTE)中来实现。例如,图7例示了能够保留在ERAT210或TLB214中、和扩展成包括各种页面属性232-238以便支持基于地址转换的搅和的示范性PTE230。搅和属性232,例如,1-位标志可以用于指示是否应该搅和页面中的数据。可以使用一个或多个位实现的级别属性234可以用于规定应该在什么级别上搅和数据。在图6的例示性实施例中,例如,级别属性234可以是控制只在L1高速缓存中还是在L1和L2高速缓存两者中搅和数据的1-位值。
另外,在一些实施例中,可能希望可选地规定失效属性236,失效属性236定义应该将搅和的和被逐出高速缓存的数据写回到更高级高速缓存中还是简单地使其失效。进一步,在一些实施例中,可能希望包括规定用于搅和数据的跨步长度的跨步属性238。
PTE230还存储与传统PTE类似的附加数据。例如,像指示页面是可高速缓存的,受到保护的,还是只读的、是否需要存储器一致性或直写、终止模式位等的属性那样的附加页面属性240可以包括在PTE中,同样可以将一个或多个位分配给用户模式数据242,例如,用于软件一般性或控制高速缓存锁定选项。可以提供访问控制页面属性244以便,例如,通过规定与授权访问页面的进程相联系的进程标识符(PID),或可选地,匹配和/或屏蔽数据的组合、或适合规定授权访问存储器的页面的一组进程的其他数据控制允许什么进程可以访问存储器的页面。例如,访问控制属性可以从PID中屏蔽掉一个或多个LSB,以便允许访问控制属性中与MSB匹配的任何PID访问相应存储器页面。ERAT页面属性246为PTE存储有效到真实地址转换数据,通常包括与用于访问PTE的有效/虚拟地址,以及也用于经由CAM功能索引ERAT的有效/虚拟地址相对应的真实地址。
应该懂得,PTE230的格式也可以用在TLB214以及驻留在存储器架构中的任何其他页表中。可替代地,存储在不同级别的存储器架构中的PTE可以根据那种特定级别的存储器架构的需要包括其他数据或省略一些数据。更进一步,应该懂得,虽然本文讨论的实施例利用术语“ERAT”和“TLB”来描述存储或高速缓存处理器或处理核心中的存储器地址转换信息的各种硬件逻辑,但这样的硬件逻辑可以用其他用语来指代,因此本发明不局限于以ERAT和TLB的方式使用。另外,可以使用其他PTE格式,因此本发明不局限于例示在图7中的特定PTE格式。
通过将搅和相关属性存储在PTE中,是否在特定高速缓冲存储器中搅和页面中的数据的确定可以容易地与访问那个数据相联系作出。如在现有技术中众所周知,例如,运行在固件、内核、分区管理器或操作系统中的管理程序或其他管理程序级软件传统上用于将存储器页面分配给特定进程,和管理要不然,如果进程试图访问未授权访问的存储器页面,则可能发生的访问违例。这样的管理程序级软件,例如,可以为数据处理系统管理整个页表,数据处理系统中的专用硬件用于将来自页表的PTE高速缓存在TLB214和ERAT210中。因此,按照本发明的实施例能够衡量现有管理程序级访问控制,以便代表各种应用或进程设置分配给那些应用或进程的存储器的什么页面将存储搅和数据,以及如果这样的话,如何以及在何处搅和那个数据。
例如,为了例示利用按照本发明的基于地址转换搅和的示范性存储器访问的目的,图8例示了示范性数据处理系统,尤其其中的示范性处理核心。例如,如配备在处理核心的装载/存储单元中的地址生成逻辑252可以,例如,响应在处理核心中执行的硬件线程(未示出)执行指令,生成从存储器的特定页面中访问数据(例如,高速缓存行)的存储器访问请求。并行地将该存储器访问请求发给ERAT253和L1高速缓存254两者,前者进行地址转换操作,以及针对与正在请求硬件线程相联系的PID确定该存储器访问请求是否得到授权,后者确定该存储器访问请求指定的高速缓存行当前是否高速缓存在L1高速缓存中。在图8的例示性实施例中,将ERAT253表示成“dERAT”,将L1高速缓存254表示成“dCache”,以指示这些部件与数据访问相联系,以便可以提供相应iERAT和iCache部件来管理指令访问(未示出)。
ERAT253响应该存储器访问请求,为该存储器访问请求指定的存储器的页面访问PTE256。管理程序保护异常管理逻辑258将该存储器访问请求的PID与PTE中的访问控制位相比较,如果作为未授权该PID访问存储器的这个页面的结果发生了访问违例,逻辑258通过如260所表示,将软件异常抛给管理程序级软件发出中断信号。在存储器访问请求得到授权但在L1高速缓存中发生丢失的情况下,将该存储器访问请求转发给装载/丢失队列262,装载/丢失队列262将该请求发给较低级存储器,例如,L2高速缓存264。
更进一步,如图8所例示,将L2高速缓存264与搅和控制器266耦合,搅和控制器266也利用PTE256中的数据来确定是否在L1和/或L2高速缓存254,264中搅和高速缓存行。在要搅和高速缓存行的情况下,搅和控制器266控制多路复用逻辑268输出L2高速缓存264返还的高速缓存行的搅和表示,以便将搅和高速缓存行存储在L1高速缓存254中。如果不是,则搅和控制器266控制多路复用逻辑268以不变形式将高速缓存行从L2高速缓存264馈送到L1高速缓存254。搅和控制器266可以布置在数据处理系统250中的各种部件中,例如,在L2高速缓存264内,或要不然与其耦合。在许多实施例中可能希望,例如,使搅和控制器处在预期以未搅和格式存储高速缓存行的最低级存储器中,以便搅和控制器可以与从较高级高速缓存中完成高速缓存行请求结合搅和数据。
图9更详细地例示了响应数据处理系统250中代表进程的硬件线程发出从高速缓存行中装载数据的存储器访问请求进行的操作270的顺序。为了简化这个讨论,假设保护逻辑已经确定正在请求线程有权访问与该存储器访问请求相联系的页面,因此在图9中未例示出访问控制相关步骤。因此,如果允许线程从特定高速缓存行中装载数据,则对L1高速缓存254是否可以完成该请求作出确定(方块272)。如果在L1高速缓存254上未丢失该存储器访问请求,则L1高速缓存254完成该请求(方块274),并结束该存储器访问请求的管理。
但是,如果在L1高速缓存254上丢失了该请求,则在方块276中将该请求传送给装载/丢失队列262,以便在该队列中加入与该请求相对应的条目。另外,可能希望将该条目中的一种或多种属性设置成对于高速缓存行与存储在PTE中的搅和相关属性相对应。接着,在,例如,在到L2高速缓存或较低级存储器的存储器总线上将该请求发给较低级存储器之前,在方块278中如从PTE256中的页面属性中所确定,对是否指示搅和页面作出确定。如果不是,则在方块280中为该存储器访问请求发出总线事务。另一方面,如果要搅和页面,则在方块282中发出总线事务以及来自PTE256的附加搅和相关边带数据。
搅和相关边带数据可以以按照本发明的许多方式在存储器总线上传送。例如,可以在总线架构中提供附加控制线来规定总线事务是否与搅和数据相联系,以便可以根据一条或多条控制线的状态作出是否要搅和数据的确定。可替代地,可以将事务类型与搅和数据相联系,以便可以简单地根据总线事务的事务类型作出确定。在别的其他实施例中,可以提供非搅和相关边带数据,以及可以使搅和相关属性保留在多级存储器中的PTE中。
接着,在方块284中,由L2高速缓存264,尤其由其中的搅和控制器266接收总线事务,例如,根据向其提供了总线事务的边带数据或从与L2高速缓存相联系的TLB中的PTE的副本中确定是否要在L1高速缓存中搅和数据。如果不是,则将控制传递给方块286,以便直接从L2高速缓存,或如果当前未高速缓存在L2高速缓存中,则从主存储器返还所请求高速缓存行。
否则,如果要搅和高速缓存行,则方块284将控制传递给方块287,以便在将数据返还给L1高速缓存之前搅和数据。搅和数据的方式通常基于硬编码算法,或可替代地,基于经由搅和相关页面属性规定的跨步长度和/或数据大小的可定制算法。另外,如方块288所例示,如果跨步长度和/或数据大小跨过高速缓存行和如果模式位或其他控制信息指示应该检索不止一个高速缓存行,则可以将控制传递给方块290,以便响应该请求搅和和返还一个或多个另外高速缓存行。
图10接着例示了,例如,每当L1高速缓存中的修改数据被逐出到L2高速缓存或更高级存储器中时可以执行的逐出例程300。根据PTE是否指示数据是搅和的(方块302)。不带(方块304)或带有(方块306)搅和边带数据地发出总线事务。L2高速缓存在方块308中接收总线事务,并确定某些搅和相关属性是否指示要使数据失效而不是写回到L2高速缓存中。例如,如果不需要将数据写回到更高级存储器中,例如,如果数据是只读数据,则可能希望失效。
如果要使数据失效,则将控制传递给方块310,以便简单地在L2高速缓存中使高速缓存行失效。否则,将控制传递给方块312,以确定数据是否是搅和的。如果不是,则将控制传递给方块314,以便存储在L2高速缓存中未改变的数据。如果数据是搅和的,则将控制传递给方块316,在将数据存储在L2高速缓存中之前,通过搅和控制器流化数据以便去搅和数据。
可以按照本发明将搅和控制逻辑布置在存储器子系统的不同级别上。例如,图11例示了包括通过三个级别的高速缓存与主存储器324的寄存器文件322的数据处理系统320:L1高速缓存326、L2高速缓存328和L3高速缓存330。可以将地址转换数据结构,例如,ERAT332和TLB334布置在存储器子系统的各种级别上,以及也可以将采取搅和控制器336,338的形式的搅和逻辑布置在存储器子系统的各种级别上。在一些实施例中,可以将搅和逻辑集成到高速缓存控制器,例如,L2或L3高速缓存控制器340,342中。
但是,在其他实施例中,搅和逻辑可以与任何高速缓存控制器分开,可以布置在处理器或处理核心的内部或外部。一般说来,实现本文所述功能的搅和逻辑的实现完全在从本公开中受益的本领域的普通技术人员的能力之内。
应该懂得,本文所述的实施例可用在许多应用中。例如,如图12所例示,可能希望在网络处理应用中通过使用搅和控制器354一起搅和多个分组350的首标352的第一字节或前几个字节并行处理多个分组350,以便将多个分组的首标或其中的一些部分封装到相同高速缓存行中。如356所例示的所得搅和数据只包括多个分组350的首标352的所希望字节,以便,例如,可以使用矢量处理单元并行地进行多个分组的预处理。如上所述,本文所述实施例的灵活性允许跨步长度等于分组大小,但未必与高速缓存行组织对齐,使得多个分组的搅和另外可能导致与搅和高速缓存行的装载请求相联系地预取一个或多个另外高速缓存行。
因此,按照本发明的实施例可以用于尤其与矢量化处理单元相联系地,以及使与检索搅和数据有关的等待时间缩短地促进数据的搅和,以便优化所检索数据的处理。可以不偏离本发明的精神和范围地对公开的实施例作出各种附加修改。因此,本发明取决于本文所附的权利要求书。

Claims (19)

1.一种在数据处理系统中访问数据的方法,该方法包含:
响应数据处理系统中的处理单元发起的存储器访问请求,访问存储器地址转换数据结构,以便为该存储器访问请求进行存储器地址转换,其中所述存储器地址转换数据结构可将有效或虚拟地址转换成真实地址;
访问该存储器地址转换数据结构中的至少一种搅和相关页面属性,以便确定是否应该搅和来自与该存储器访问请求相联系的存储器页面的数据;以及
使用搅和逻辑有选择地搅和存储在各种级别的存储器子系统中的高速缓存行,根据该至少一种搅和相关页面属性,使来自存储器页面的数据以搅和后格式存储在所述高速缓冲存储器中,其中使数据以搅和后格式存储在高速缓冲存储器中进一步包括:
在搅和所述数据之后将搅和数据存储高速缓冲存储器中。
2.如权利要求1所述的方法,其中该存储器地址转换数据结构包括多个页表条目,每个页表条目包括与和页表条目相联系的存储器页面相联系的真实地址、和与这样的存储器页面相联系的搅和相关页面属性。
3.如权利要求1所述的方法,其中该至少一种搅和相关页面属性包括级别属性,以及其中有选择地搅和数据包括如果该级别属性指示要在与高速缓冲存储器相联系的级别中搅和数据,则搅和数据。
4.如权利要求3所述的方法,其中该高速缓冲存储器是L1高速缓存,其中数据处理系统包括L2高速缓存,以及其中根据级别属性在L1高速缓存中而不是在L2高速缓存中搅和数据。
5.如权利要求1所述的方法,其中该至少一种搅和相关页面属性包括跨步长度属性,以及其中有选择地搅和数据包括使用与跨步长度属性相联系的跨步长度搅和数据。
6.如权利要求1所述的方法,其中该至少一种搅和相关页面属性包括失效属性,该方法进一步包含根据失效属性,响应高速缓存行的逐出使与数据相联系的高速缓存行失效。
7.如权利要求1所述的方法,其中将数据与高速缓存行相联系,该方法进一步包含根据该至少一种搅和相关页面属性预取至少一个另外高速缓存行。
8.如权利要求7所述的方法,其中预取至少一个另外高速缓存行基于跨步长度属性和数据大小属性的至少一种。
9.如权利要求1所述的方法,其中将数据与高速缓存行相联系,其中该存储器页面包括多个分组,每个分组都包括首标,以及其中有选择地搅和数据包括将多个分组的首标的至少一部分封装到相同高速缓存行中。
10.一种在数据处理系统中访问数据的电路安排,包含:
高速缓冲存储器;
存储器地址转换数据结构,用于为与高速缓冲存储器通信的处理单元发起的存储器访问请求进行存储器地址转换,其中所述存储器地址转换数据结构可将有效或虚拟地址转换成真实地址,该存储器地址转换数据结构包括指示是否应该搅和与该存储器访问请求相联系的存储器页面中的数据的至少一种搅和相关页面属性;以及
控制逻辑,配置成使用搅和逻辑有选择地搅和存储在各种级别的存储器子系统中的高速缓存行,根据该存储器地址转换数据结构中的该至少一种搅和相关页面属性,使来自存储器页面的数据以搅和后格式存储在高速缓冲存储器中,其中使数据以搅和后格式存储在高速缓冲存储器中进一步包括:
在搅和所述数据之后将搅和数据存储高速缓冲存储器中。
11.如权利要求10所述的电路安排,其中该存储器地址转换数据结构包括多个页表条目,每个页表条目包括与和页表条目相联系的存储器页面相联系的真实地址、和与这样的存储器页面相联系的搅和相关页面属性。
12.如权利要求10所述的电路安排,其中该至少一种搅和相关页面属性包括级别属性,以及其中该控制逻辑被配置成如果该级别属性指示要在与高速缓冲存储器相联系的级别中搅和数据,则有选择地搅和数据。
13.如权利要求12所述的电路安排,其中该高速缓冲存储器是L1高速缓存,其中数据处理系统包括L2高速缓存,以及其中根据级别属性在L1高速缓存中而不是在L2高速缓存中搅和数据。
14.如权利要求10所述的电路安排,其中该至少一种搅和相关页面属性包括跨步长度属性,以及其中该控制逻辑被配置成使用与跨步长度属性相联系的跨步长度搅和数据。
15.如权利要求10所述的电路安排,其中该至少一种搅和相关页面属性包括失效属性,以及其中该控制逻辑被进一步配置成根据失效属性,响应高速缓存行的逐出使与数据相联系的高速缓存行失效。
16.如权利要求10所述的电路安排,其中将数据与高速缓存行相联系,以及其中该控制逻辑被进一步配置成根据该至少一种搅和相关页面属性预取至少一个另外高速缓存行。
17.如权利要求16所述的电路安排,其中该控制逻辑被配置成根据跨步长度属性和数据大小属性的至少一种预取至少一个另外高速缓存行。
18.如权利要求10所述的电路安排,其中将数据与高速缓存行相联系,其中该存储器页面包括多个分组,每个分组都包括首标,以及其中该控制逻辑被配置通过将多个分组的首标的至少一部分封装到相同高速缓存行中,有选择地搅和数据。
19.一种包含如权利要求10所述的电路安排的集成电路器件。
CN201310628908.2A 2012-12-12 2013-11-29 数据处理系统中访问数据的方法以及电路安排 Active CN103870397B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/712,094 US9244840B2 (en) 2012-12-12 2012-12-12 Cache swizzle with inline transposition
US13/712,094 2012-12-12

Publications (2)

Publication Number Publication Date
CN103870397A CN103870397A (zh) 2014-06-18
CN103870397B true CN103870397B (zh) 2017-04-12

Family

ID=50882309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310628908.2A Active CN103870397B (zh) 2012-12-12 2013-11-29 数据处理系统中访问数据的方法以及电路安排

Country Status (2)

Country Link
US (2) US9244840B2 (zh)
CN (1) CN103870397B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9632801B2 (en) * 2014-04-09 2017-04-25 Intel Corporation Banked memory access efficiency by a graphics processor
GB2528842B (en) * 2014-07-29 2021-06-02 Advanced Risc Mach Ltd A data processing apparatus, and a method of handling address translation within a data processing apparatus
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US10127627B2 (en) 2015-09-23 2018-11-13 Intel Corporation Mapping graphics resources to linear arrays using a paging system
US20170083450A1 (en) * 2015-09-23 2017-03-23 Intel Corporation Supporting Data Conversion and Meta-Data in a Paging System
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10868622B2 (en) * 2017-06-22 2020-12-15 Intel IP Corporation Control and data multiplexing
CN109324981B (zh) * 2017-07-31 2023-08-15 伊姆西Ip控股有限责任公司 高速缓存管理系统和方法
US10176366B1 (en) 2017-11-01 2019-01-08 Sorenson Ip Holdings Llc Video relay service, communication system, and related methods for performing artificial intelligence sign language translation services in a video relay service environment
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101213532A (zh) * 2005-06-30 2008-07-02 英特尔公司 微瓦片存储器接口
CN101751344A (zh) * 2008-12-03 2010-06-23 辉达公司 压缩状态位高速缓存和后备存储件
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1084005C (zh) 1994-06-27 2002-05-01 国际商业机器公司 用于动态控制地址空间分配的方法和设备
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US5819117A (en) * 1995-10-10 1998-10-06 Microunity Systems Engineering, Inc. Method and system for facilitating byte ordering interfacing of a computer system
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US6816165B1 (en) * 2000-12-13 2004-11-09 Micron Technology, Inc. Memory system having multiple address allocation formats and method for use thereof
GB2385951A (en) 2001-09-21 2003-09-03 Sun Microsystems Inc Data encryption and decryption
EP1296237A1 (en) 2001-09-25 2003-03-26 Texas Instruments Incorporated Data transfer controlled by task attributes
US8135962B2 (en) 2002-03-27 2012-03-13 Globalfoundries Inc. System and method providing region-granular, hardware-controlled memory encryption
US7380039B2 (en) 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
JP2005202523A (ja) 2004-01-13 2005-07-28 Sony Corp コンピュータ装置及びプロセス制御方法
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7822993B2 (en) 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
US7653802B2 (en) 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US8954751B2 (en) 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
GB0516474D0 (en) 2005-08-10 2005-09-14 Symbian Software Ltd Pre-emptible context switching in a computing device
US7545382B1 (en) * 2006-03-29 2009-06-09 Nvidia Corporation Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation
US7681047B2 (en) 2006-04-18 2010-03-16 International Business Machines Corporation Decryption of data in storage systems
US7752417B2 (en) 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US7594104B2 (en) 2006-06-09 2009-09-22 International Business Machines Corporation System and method for masking a hardware boot sequence
US7898551B2 (en) 2006-06-20 2011-03-01 Via Technologies, Inc. Systems and methods for performing a bank swizzle operation to reduce bank collisions
US7725687B2 (en) 2006-06-27 2010-05-25 Texas Instruments Incorporated Register file bypass with optional results storage and separate predication register file in a VLIW processor
US8407704B2 (en) 2006-09-26 2013-03-26 International Business Machines Corporation Multi-level memory architecture using data structures for storing access rights and performing address translation
US7805587B1 (en) * 2006-11-01 2010-09-28 Nvidia Corporation Memory addressing controlled by PTE fields
US8769251B2 (en) * 2006-12-13 2014-07-01 Arm Limited Data processing apparatus and method for converting data values between endian formats
US20080155273A1 (en) * 2006-12-21 2008-06-26 Texas Instruments, Inc. Automatic Bus Encryption And Decryption
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US7681020B2 (en) 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization
US20090031142A1 (en) 2007-07-25 2009-01-29 Shai Halevi System, Method and Computer Program Product for Processing a Memory Page
US8248422B2 (en) 2008-01-18 2012-08-21 International Business Machines Corporation Efficient texture processing of pixel groups with SIMD execution unit
US8285941B2 (en) * 2008-02-25 2012-10-09 International Business Machines Corporation Enhancing timeliness of cache prefetching
US8353026B2 (en) 2008-10-23 2013-01-08 Dell Products L.P. Credential security system
US8397219B2 (en) 2009-03-31 2013-03-12 Oracle America, Inc. Method and apparatus for tracking enregistered memory locations
US8108650B2 (en) 2009-05-29 2012-01-31 Apple Inc. Translation lookaside buffer (TLB) with reserved areas for specific sources
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US8412911B2 (en) 2009-06-29 2013-04-02 Oracle America, Inc. System and method to invalidate obsolete address translations
US8627041B2 (en) 2009-10-09 2014-01-07 Nvidia Corporation Efficient line and page organization for compression status bit caching
US8386748B2 (en) 2009-10-29 2013-02-26 Apple Inc. Address translation unit with multiple virtual queues
US8751745B2 (en) 2010-08-11 2014-06-10 Advanced Micro Devices, Inc. Method for concurrent flush of L1 and L2 caches

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101213532A (zh) * 2005-06-30 2008-07-02 英特尔公司 微瓦片存储器接口
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
CN101751344A (zh) * 2008-12-03 2010-06-23 辉达公司 压缩状态位高速缓存和后备存储件

Also Published As

Publication number Publication date
US9244840B2 (en) 2016-01-26
US9239791B2 (en) 2016-01-19
US20140164704A1 (en) 2014-06-12
US20140164703A1 (en) 2014-06-12
CN103870397A (zh) 2014-06-18

Similar Documents

Publication Publication Date Title
CN103870397B (zh) 数据处理系统中访问数据的方法以及电路安排
CN104331267B (zh) 具有可扩展寄存器寻址的用于指令集架构
US11921635B2 (en) Method and apparatus for shared virtual memory to manage data coherency in a heterogeneous processing system
CN104067227B (zh) 分支预测逻辑
Nai et al. Graphpim: Enabling instruction-level pim offloading in graph computing frameworks
CN104011676B (zh) 用于在多个处理核心中的硬件线程之间传送变量的方法和电路装置
CN104854568B (zh) 用于更新远程处理节点中的地址转换数据结构的转换管理指令
CN104461954B (zh) 用于管理多个互连ip块中的通信的方法和系统
US9176885B2 (en) Combined cache inject and lock operation
US8255443B2 (en) Execution unit with inline pseudorandom number generator
CN104331528B (zh) 具有低功率数字信号处理(dsp)模式的通用处理单元
US8140830B2 (en) Structural power reduction in multithreaded processor
CN103838910B (zh) 管理配电的分布式芯片级功率方法、电路和集成电路装置
US9678885B2 (en) Regular expression memory region with integrated regular expression engine
US20230114164A1 (en) Atomic handling for disaggregated 3d structured socs
Jeon et al. Hi-End: Hierarchical, endurance-aware STT-MRAM-based register file for energy-efficient GPUs
EP3907621B1 (en) Cache memory with limits specified according to a class of service
Brilli et al. Interference analysis of shared last-level cache on embedded GP-GPUs with multiple CUDA streams
US20240127392A1 (en) Chained accelerator operations with storage for intermediate results
Tegegn An Implementation of a Predictable Cache-coherent Multi-core System
US20240126555A1 (en) Configuring and dynamically reconfiguring chains of accelerators
US20240126613A1 (en) Chained accelerator operations
US20240111925A1 (en) Hardware power optimization via e-graph based automatic rtl exploration
US20240111353A1 (en) Constructing hierarchical clock gating architectures via rewriting
US20240126964A1 (en) Automated detection of case-splitting opportunities in rtl

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