CN107003944B - 跨分布式存储器的指针追踪 - Google Patents
跨分布式存储器的指针追踪 Download PDFInfo
- Publication number
- CN107003944B CN107003944B CN201580062823.XA CN201580062823A CN107003944B CN 107003944 B CN107003944 B CN 107003944B CN 201580062823 A CN201580062823 A CN 201580062823A CN 107003944 B CN107003944 B CN 107003944B
- Authority
- CN
- China
- Prior art keywords
- node
- pointer
- data structure
- location
- processor
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0824—Distributed directories, e.g. linked lists of caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
第一指针解引用器接收数据结构的第一节点的一部分的位点。该第一节点要存储在第一存储元件中。从数据结构的第一节点获得第一指针。基于该第一指针确定数据结构的第二节点的一部分的位点。第二节点要存储在第二存储元件中。数据结构的第二节点的部分的位点被发送到第二指针解引用器,其从第二存储元件访问第二节点的部分。
Description
相关申请的交叉引用
该申请要求2014年12月17日提交的题为“POINTER CHASING ACROSS DISTRIBUTEDMEMORY(跨分布式存储器的指针追踪)”的美国非临时专利申请号14/573,968的权益和优先权,其通过引用全部合并于此。
技术领域
该公开大体涉及计算机开发的领域,并且更特定地涉及跨分布式存储器的指针追踪(pointer chasing)。
背景技术
随着多核处理器和SOC中核的数量增加,用于核之间的晶片上(on-die)通信的芯片上网络(NoC)在实现可扩展性能方面是重要的。多核处理器通常组织为与本地高速缓存耦合的处理器阵列。处理器级别的高速缓存存储器可跨晶片分布并且使用NoC来访问。例如图表(graph)、树形结构(tree)和链表等复杂数据结构可在处理器级别的高速缓存存储器之中分布。从这些数据结构中的一个访问节点可能牵涉执行多指针解引用(multiplepointer-dereference)。这些相继指针解引用通常称为指针追踪。
附图说明
图1图示根据某些实施例对于示例计算系统(其包括多核处理器)的框图。
图2图示根据某些实施例的处理器的框图,该处理器包括芯片上网络(NoC)系统,其包括多个路由器。
图3A和3B图示根据某些实施例在指针追踪期间的示例NoC穿越。
图4图示根据某些实施例的示例双链表(double linked list)数据结构。
图5图示根据某些实施例的示例树形数据结构。
图6图示根据某些实施例用于在指针追踪期间穿越NoC的示例方法。
图7图示根据某些实施例用于指针追踪的示例路由器。
图8图示根据某些实施例在指针追踪期间用于检索指针并且确定下一个地址的示例方法。
图9图示根据某些实施例对于示例计算系统的另一个框图。
各种图中的类似标号和名称指示类似元件。
具体实施方式
在下列描述中,阐述许多特定细节,例如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统部件、特定测量/高度、特定处理器流水线阶段和操作等的示例,以便提供对本公开的全面理解。然而,不必采用这些特定细节来实践本公开,这对于本领域内技术人员将是明显的。在其他实例中,未详细描述众所周知的部件或方法,例如特定和备选处理器架构、对于描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、采用代码的算法的特定表达、特定掉电和选通技术/逻辑和计算机系统的其他特定操作细节,以避免不必要地使本公开难以理解。
尽管下列实施例可以参考特定集成电路中(例如计算平台或微处理器中)的能量节约和能量效率描述,其他实施例能适用于其他类型的集成电路和逻辑设备。本文描述的实施例的相似技术和教导可以适用于其他类型的电路或半导体器件,其也可从较好能量效率和能量节约方面获益。例如,公开的实施例不限于台式计算机系统或Ultrabooks™,而也可以在例如服务器计算机系统、手持设备、平板电脑、其他薄笔记本、芯片上系统(SOC)设备和嵌入式应用等其他设备中使用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字拍摄装置、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或可以执行下文教导的功能和操作的任何其他系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而还可以涉及对于能量节约和效率的软件优化。如将在下文的描述中变得显而易见的,本文描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是其组合)对于未来与性能考虑相平衡的 ‘绿色技术’是必不可少的。
由于计算系统在发展,其中的部件变得更复杂。因此,用于部件之间耦合和通信的互连架构在复杂性方面也在增加来确保满足最佳部件操作的带宽要求。此外,不同细分市场需要互连架构的不同方面来满足市场需要。例如,服务器需要较高性能,而移动生态系统有时能够为了功率节省而牺牲整体性能。然而,大部分构造的突出目的还是以最大功率节省提供最高可能性能。在下文论述许多互连,其将潜在地从本文论述的本发明的方面获益。
参考图1,描绘对于计算系统的框图的实施例,该计算系统包括多核处理器。处理器100包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、芯片上系统(SOC)或执行代码的其他设备。在一个实施例中,处理器100包括至少两个核-核101和102,其可以包括不对称核或对称核(图示的实施例)。然而,处理器100可以包括任意数量的处理元件,其可以是对称或不对称的。
在一个实施例中,处理元件指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽位(thread slot)、线程、处理单元、上下文(context)、上下文单元(context unit)、逻辑处理器、硬件线程、核和/或任何其他元件,其能够保持处理器的状态,例如执行状态或架构状态。也就是说,在一个实施例中,处理元件指能够独立与代码(例如软件线程、操作系统、应用或其他代码)关联的任何硬件。物理处理器(或处理器插槽)典型地指集成电路,其潜在地包括任意数量的其他处理元件,例如核或硬件线程。
核通常指位于集成电路上、能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源关联。与核相比之下,硬件线程典型地指位于集成电路上、能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看到的,在共享某些资源并且其他资源专用于架构状态时,硬件线程与核的命名之间的线路重叠。但是,核和硬件线程通常被操作系统视为独立逻辑处理器,其中操作系统能够独立调度每个逻辑处理器上的操作。
如在图1中图示的,物理处理器100包括两个核-核101和102。在这里,核101和102被视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一个实施例中,核101包括无序处理器核,而核101包括有序处理器核。然而,核101和102可以独立从任何类型的核选择,例如原生核、软件管理核、适于执行原生指令集架构(ISA)的核、适于执行转换指令集架构(ISA)的核、协同设计的核或其他已知核。在异构核环境(即,不对称核)中,某一形式的转换(例如二进制转换)可以用于在一个或两个核上调度或执行代码。有待进一步论述,核101中图示的功能单元在下文进一步详细描述,同样地,核102中的单元在描绘的实施例中采用相似方式操作。
如描绘的,核101包括两个硬件线程101a和101b,其也可以称为硬件线程插槽101a和101b。因此,软件实体(例如操作系统)在一个实施例中潜在地将处理器100视为四个单独处理器,即能够并发执行四个软件线程的四个逻辑处理器或处理元件。如上文所述的,第一线程与架构状态寄存器101a关联,第二线程与架构状态寄存器101b关联,第三线程可以与架构状态寄存器102a关联,并且第四线程可以与架构状态寄存器102b关联。在这里,架构状态寄存器(101a、101b、102a和102b)中的每个可以称为处理元件、线程插槽或线程单元,如上文描述的。如图示的,架构状态寄存器101a在架构状态寄存器101b中复制,因此能够对逻辑处理器101a和逻辑处理器101b存储个体架构状态/上下文。在核101中,其他较小资源(例如指令指针以及分配器和重命名块130中的重命名逻辑)也可以对线程101a和101b复制。一些资源(例如重排序/引退单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器和队列)可以通过分区而共享。其他资源(例如通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 115、执行单元140和无序单元135的部分)潜在地被充分共享。
处理器100通常包括其他资源,其可以被充分共享、通过分区而共享或被处理器元件专用/专用于处理元件。在图1中,图示具有处理器的说明性逻辑单元/资源的纯示范性处理器的实施例。注意处理器可以包括或省略这些功能单元中的任一个,以及包括未描绘的任何其他已知功能单元、逻辑或固件。如图示的,核101包括简化的代表性无序(OOO)处理器核。但在不同实施例中可以使用有序处理器。OOO核包括用于预测要执行/采取的分支的分支目标缓冲器120,和用于对指令存储地址转换条目的指令转换缓冲器(I-TLB)120。
核101进一步包括解码模块125,其耦合于提取单元120来对提取的要素解码。在一个实施例中,提取逻辑包括分别与线程插槽101a、101b关联的个体定序器。通常核101与第一ISA关联,其定义/规定在处理器100上可执行的指令。通常是第一ISA的部分的机器代码指令包括指令的一部分(称为操作码),其引用/规定要执行的指令或操作。解码逻辑125包括从这些指令的操作码识别它们并且在流水线上传递解码指令用于如由第一ISA定义的处理的电路。例如,如在下文更详细论述的,在一个实施例中,解码器125包括设计成或适于识别特定指令(例如转换指令)的逻辑。由于被解码器125识别,架构或101采取特定、预定义动作来执行与合适指令关联的任务。重要的是注意,本文描述的任务、块、操作和方法中的任一个可以响应于单个或多个指令执行;其中的一些可以是新的或旧的指令。注意在一个实施例中,解码器126识别相同ISA(或其子集)。备选地,在异构核环境中,解码器126识别第二ISA(第一ISA的子集或截然不同的ISA)。
在一个示例中,分配器和重命名块130包括分配器,用于预留资源,例如存储指令处理结果的寄存器堆。然而,线程101a和101b潜在地能够无序执行,其中分配器和重命名块130还预留其他资源,例如追踪指令结果的重排序缓冲器。单元130还可以包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器100内部的其他寄存器。重排序/引退单元135包括例如上文提到的重排序缓冲器、加载缓冲器和存储缓冲器等部件,用于支持无序执行和无序执行的指令的随后有序引退。
在一个实施例中,调度器和执行单元块140包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元关联的寄存器堆来存储信息指令处理结果。示范性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)150耦合于执行单元140。数据高速缓存存储近期使用/操作的要素,例如数据操作数,其潜在地保持为存储器一致性状态。D-TLB存储对于物理地址转换的近期的虚拟/线性。作为特定示例,处理器可以包括页表结构,用于将物理存储器分解成多个虚拟页面。
在这里,核101和102共享对较高级或更进一步的高速缓存、例如与芯片上接口110关联的第二级高速缓存的访问。注意较高级或更进一步是指从执行单元进一步远离或者增加的高速缓存级别。在一个实施例中,较高级高速缓存是最后的级别的数据高速缓存-处理器100上的存储器层级中最后的高速缓存-例如第二或第三级数据高速缓存。然而,较高级高速缓存因为它可以与指令高速缓存关联或包括指令高速缓存而不这样受限。追踪高速缓存-一类指令高速缓存-相反可以在解码器125后耦合来存储近期解码的痕迹。在这里,指令潜在地指宏指令(即由解码器识别的通用指令),其可以解码成许多微指令(微操作)。
在描绘的配置中,处理器100还包括芯片上接口模块110。历史上存储器控制器(在下文更详细描述)已包括在处理器100外部的计算系统中。在该情景中,芯片上接口11与处理器100外部的设备通信,例如系统存储器175、芯片集(通常包括用于连接到存储器175的存储器控制器中枢,和用于连接外围设备的I/O控制器中枢)、存储器控制器中枢、北桥或其他集成电路。并且在该情景中,总线105可以包括任何已知互连,例如多点总线、点到点互连、串行互连、并行总线、一致性(例如,高速缓存一致性)总线、分层协议架构、差分总线和GTL总线。
存储器175可以专用于处理器100或与系统中的其他设备共享。存储器175类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知存储设备。注意设备180可以包括耦合于存储器控制器中枢的图形加速器、处理器或卡、耦合于I/O控制器中枢的数据存储、无线收发器、闪存设备、音频控制器、网络控制器或其他已知设备。
然而近来,随着更多逻辑和设备在单个晶片(例如SOC)上集成,这些设备中的每个可以包含在处理器100上。例如,在一个实施例中,存储器控制器中枢在与处理器100相同的封装和/或晶片上。在这里,核的一部分(核上部分)110包括一个或多个控制器,用于与其他设备例如存储器175或图形设备180接口。包括互连和控制器、用于与这样的设备接口的配置通常称为核上(或非核配置)。作为示例,芯片上接口110包括用于芯片上通信的环形互连和用于芯片外通信的高速串行点到点链路105。但在SOC环境中,甚至更多的设备(例如网络接口、协处理器、存储器175、图形处理器180和任何其他已知计算机设备/接口)可以在单个晶片或集成电路上集成来提供小形状因子兼高功能性和低功耗。
在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177来编译、转换和/或优化应用代码176来支持本文描述的装置和方法或与之接口。编译器通常包括程序或程序集,用于将源文本/代码转换成目标文本/代码。通常,用编译器对程序/应用代码的编译在多个阶段和多个遍次中进行来将高级编程语言代码变换成低级机器或汇编语言代码。但单遍编译器仍可以用于简单编译。编译器可以使用任何已知编译技术并且执行任何已知编译器操作,例如词汇分析、预处理、解析、语义分析、代码生成、代码变换和代码优化。
较大编译器通常包括多个阶段,但这些阶段最经常包括在两个通用阶段内:(1)前端,即大体上可发生语法处理、语义处理和某一变换/优化的地方,以及(2)后端,即大体上发生分析、变换、优化和代码生成的地方。一些编译器指中间,其例示编译器的前端与后端之间的模糊分界。因此,对编译器的插入、关联、生成或其他操作的引用可以在前面提到的阶段或遍次中的任一个以及编译器的任何其他已知阶段或遍次中发生。作为说明性示例,编译器潜在地在编译的一个或多个阶段中插入操作、调用、函数(function)等,例如在编译的前端阶段中调用/操作的插入,以及然后在变换阶段期间调用/操作到低级代码的变换。注意在动态编译期间,编译器代码或动态优化代码可以插入这样的操作/调用,以及优化代码以供运行时间期间执行。作为特定说明性示例,二进制代码(已经编译的代码)可以在运行时间期间动态优化。在这里,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器相似,转换器(例如二进制转换器)静态或动态转换代码来优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指:(1)静态或动态执行编译器程序、优化代码优化器或转换器来编译程序代码、维持软件结构、执行其他操作、优化代码或转换代码;(2)主程序代码的执行,其包括操作/调用,例如已经优化/编译的应用代码;(3)与主程序代码关联的其他程序代码(例如库)的执行,来维持软件结构、执行其他软件相关操作或优化代码;或(4)其组合。
图2图示根据某些实施例的处理器200的框图,该处理器200包括芯片上网络(NoC)系统,其包括多个路由器204。处理器200可以包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、芯片上系统(SOC)或执行代码的其他设备。在特定实施例中,处理器200在单个晶片上实现。
在描绘的实施例中,处理器200包括设置在网格网络中并且彼此利用双向链路耦合的多个网络元件202。然而,根据本公开的各种实施例的NoC可以应用于任何适合的网络拓扑(例如,层级网络)、大小、总线宽度和进程。每个网络元件202包括路由器204。路由器204可以在网络(例如分组交换网络和/或电路交换网络)中彼此通信链接,从而在处理器200的处理元件(例如,核208)之间实现通信。
每个路由器204可以通信耦合于它自己的核208、高速缓存206和/或其他处理或存储元件。处理器200可以包括任意数量的处理元件,其可以是对称或不对称的。例如,处理器200的核208可以包括不对称核或对称核。处理器200可以包括作为分组交换网络和电路交换网络中的任一个或两个操作来提供晶片内通信的逻辑。
在特定实施例中,分组可以使用分组交换网络的资源在各种路由器204之中传递。即,分组交换网络可以在路由器(和它们的关联处理元件)之间提供通信。分组可以包括控制部分和数据部分。控制部分可以包括分组的目的地地址,并且数据部分可以包含要在晶片100上传递的特定数据。例如,控制部分可以包括对应于网络元件或晶片的核中的一个的目的地地址。因为未确保从源到目的地的专用路径,分组交换网络可以包括缓冲,并且因此如果两个或以上分组需要穿越相同链路或互连则分组可需要暂时被停止。
在实施例中,处理器200的路由器可以在两个网络中按各种方式提供或在两个网络中通信,这两个网络例如分组交换网络和电路交换网络。这样的通信方法可以称作混合分组/电路交换网络。在这样的实施例中,分组可以使用分组交换网络和电路交换网络的资源在各种路由器204之间按各种方式传递。为了传送单个数据分组,电路交换网络可以分配整个路径,而分组交换网络可以仅分配单个段(或互连)。在一些实施例中,分组交换网络可以用于预留电路交换网络的资源用于在路由器204之间传送数据。
路由器204可以包括多个端口,用于按各种方式耦合于邻接网络元件202并且与之通信。例如,电路交换和分组交换信号可以通过这些端口传递。路由器204的端口可以例如根据邻接网络元件的方向和/或与这样的元件的业务交换的方向来逻辑划分。例如,路由器204可以包括北端口,其具有配置成(分别)关于路由器204位于“北”方向上的网络元件接收通信并且向该网络元件发送通信的输入和输出端口。另外或备选地,路由器204可以包括相似端口,用于与位于南、西、东或其他方向的网络元件接口。在描绘的实施例中,路由器204配置成用于X、Y路由,其中数据首先在东/西方向上移动并且然后在北/南方向上移动。在其他实施例中,可以使用任何适合的路由方案。
在各种实施例中,路由器204进一步包括另一个输入端口和输出端口,其配置成接收和发送(分别)与网络的另一个代理的通信。在一个实施例中,这些端口用于与“本地”核208的处理器逻辑通信,该核208包括路由器204、与之相邻、通信或另外与之关联。在另一个实施例中,端口用于与在网络层级中比路由器204更高的下一个级别中的网络元件通信。在一个实施例中,东和西方向链路在一个金属层上,北和南方向链路在第二金属层上,并且核链路在第三金属层上。在实施例中,路由器204包括交叉开关和仲裁逻辑,用于提供端口间通信的路径,例如在图2中示出的。在实施例中,每个路由器204具有唯一时钟和电压。
图3A和3B图示根据某些实施例在指针追踪期间NoC的示例穿越。在这些实施例中,处理器200示出为8x8阵列的网络元件。描绘的网络元件可以具有在本文关于网络元件202描述的特性中的任一个。在这些示例实施例中,数据结构的节点在网络元件2、3和4之中分布。数据结构的节点可以包括数据部分和指向数据结构的一个或多个其他节点的一个或多个指针。每个网络元件可以经由位于网络元件内或另外与网络元件关联的高速缓存或其他存储元件存储数据结构的任意数量的节点。
在描绘的实施例中,网络元件1是访问数据结构的节点的数据部分的请求的源。作为示例,位于网络元件1内或另外与之关联的核208可以生成请求。为了访问数据结构的期望节点的数据字段,可需要穿越数据结构的各种节点,并且节点的指针可需要解引用以便确定期望节点的位点。
在示出的示例中,网络元件2、3和4各自存储数据结构的一部分。即,每个网络元件可以包括高速缓存或其他存储元件,其存储数据结构的一个或多个节点。在示出的示例中,每个网络元件包括在满足访问数据结构的特定节点的请求期间所访问的数据结构的节点。网络元件2可以包括数据结构的第一节点。数据结构的第一节点可以包括指向网络元件3处存储的数据结构的第二节点的指针。数据结构的第二节点可以包括指向网络元件4处存储的数据结构的第三节点的指针。数据结构的第三节点可以包括源计划要访问的节点。
在图3A中示出的穿越中,网络元件1(例如,经由核208)执行所有指针解引用。网络元件1向网络元件2发送规定数据结构的第一节点的地址的请求。来自第一节点的信息返回网络元件1。网络元件1从该信息确定应访问的下一个节点位于网络元件3处。网络元件1向网络元件3发送规定数据结构的第二节点的地址的请求。来自第二节点的信息返回网络元件1。网络元件1从该信息确定应访问的下一个节点位于网络元件4处。网络元件1然后向网络元件4发送规定数据结构的第三节点的地址的请求并且网络元件4将该第三节点的数据字段返回网络元件1。示出的路径(由箭头表示)仅仅是为了说明目的来证明必须行进的距离(例如,如果使用x、y路由,采取的实际路径将不同)。
如可以从图3A的示例看到的,在大或复杂的数据结构(例如,图表、链表、树形结构等)包括跨许多截然不同的存储元件(例如,高速缓存206)分布的节点,访问数据可以牵涉从许多不同存储元件的多个读取。在使用图3A中描绘的穿越方法时,对于这些访问的延迟包括从请求的源的往返延迟,从而导致较差性能和增加的网络业务量和功耗。
在图3B的示例中,通过实现各自包括执行数据结构中的指针的解引用的逻辑的网络元件而避免往返穿越。作为示例,这样的逻辑可以位于网络元件的路由器204或核208内或可以是与网络元件的路由器204或核208通信的逻辑。在网络元件1处的源向网络元件2发送请求时穿越开始。请求可以包括关于要访问数据结构的节点的哪些字段的信息。作为一个示例,请求可以包括一个或多个偏移,其指示这些字段。网络元件2接收请求并且访问第一数据结构节点的指针。网络元件2从该指针确定数据结构的下一个节点位于哪里并且将来自请求的信息转发到网络元件3上。网络元件3相似地使指针从合适节点解引用并且将相关信息转发到网络元件4。基于接收的信息,网络元件4访问期望节点的数据字段并且将数据字段发送到网络元件1。
如图示的,图3B中示出的穿越方法避免需要许多往返穿越并且由此使网络业务量、功耗和延迟减少。随着数据结构的大小以及其之中分布数据结构的不同存储元件的数量的增加,该穿越方法的益处将成比例增加。在描绘的简单实施例中,图3A中描绘的往返方法导致网络元件之间的28跳的穿越,而图3B中示出的穿越路径仅导致20跳的穿越,从而使延迟明显减少。
图4图示根据某些实施例的示例双链表数据结构400。双链表400包括任何适合数量的节点402。每个节点402包括下一个指针字段、之前的指针字段和数据字段。下一个指针字段包括双链表400的下一个节点402的存储器位点。之前的指针字段包括双链表400的之前的节点402的存储器位点。数据字段包括由节点402存储的数据。节点402A是双链表400的第一个节点。如描绘的,402A的下一个指针字段指向节点402B的起始位点,并且402B的下一个指针字段指向节点402C的起始位点,等等。节点402C的之前的指针字段指向节点402B的起始位点,并且节点402B的之前的指针字段指向节点402A的起始位点。
可以通过访问列表400的节点402并且然后通过节点402的下一个或之前的指针导航到期望节点来访问期望节点。如上文描述的,链表400的节点402可以在不同存储元件之中分布,例如处理器晶片的高速缓存。返回参考图3B的示例,节点402A可以位于与网络元件2关联的存储元件中,节点402B可以位于与网络元件3关联的存储元件中,并且节点402C可以位于与网络元件4关联的存储元件中。在该示例中,节点402C可以包括网络元件1所寻找的数据字段。为了获得该数据,网络元件1向网络元件2发送链表的起始地址(例如,节点402A的起始地址)连同寻找节点402C的指示。该指示可以包括允许检索节点402C的数据字段的任何适合信息。作为示例,指示可以指示节点402A的下一个指针应被解引用、节点402B被访问,节点402B的下一个指针被解引用、节点402C被访问并且节点402C的数据字段返回网络元件1。在一些实施例中,指示可以包括可以连同访问的第一节点的起始地址一起使用的一个或多个偏移。在请求中规定的地址和偏移以及指针字段中存储的地址可以是任何适合大小。在一些实施例中,偏移小于指针字段中存储或来自源的请求中规定的地址。作为示例,地址可以是四个或八个字节并且偏移可以小于四个或八个字节。在其他实施例中,地址和偏移是相同大小。在特定实施例中,在请求中接收的偏移可以被接收路由器修改来产生应添加到从指针字段获得的地址的值。例如,在请求中接收的偏移在添加到地址之前可以缩短或经历二进制移位。
尽管节点402的每个字段可以是任何适合大小,为了说明目的,每个字段将视为包括4个字节。从而,来自网络元件1的请求可以指示0字节、0字节和8个字节的偏移,这指示应访问节点402A的下一个指针、节点402B的下一个指针和节点402C的数据字段。如果相反期望数据字段节点402B,来自元件1的请求可以指示0字节和8个字节的偏移。如果从节点402C向后穿越链表400来访问节点402A的数据字段,来自网络元件1的请求相反将发送到网络元件4并且将指示带有4个字节、4个字节和8个字节的偏移的节点402C的起始地址以便访问节点402C和402B的之前的指针和节点402A的数据部分。
图5图示根据某些实施例的示例树形数据结构500。树形结构500包括任何适合数量的节点502。每个节点502包括左指针字段、右指针字段和数据字段。左指针字段包括到节点左边的节点502的存储器位点,而右指针字段包括到节点右边的节点502的存储器位点。数据字段包括节点502存储的数据。节点502A是树形结构500的第一节点。如描绘的,502A的左指针字段指向节点502B的起始位点,并且右指针字段指向节点502C的起始位点。502B的左指针字段指向节点502D的起始位点,并且右指针字段指向节点502E的起始位点。502C的左指针字段指向节点502F的起始位点,并且右指针字段指向节点502G的起始位点。
可以通过访问树形结构500的节点502并且然后通过节点502的左或右指针导航到期望节点来访问该期望节点。如上文描述的,图表500的节点502可以分布在不同存储元件之中,例如处理器晶片的高速缓存。返回参考图3B的示例,节点502A可以位于与存储元件2关联的存储元件中,节点502C可以位于与网络元件3关联的存储元件中,并且节点502F可以位于与网络元件4关联的存储元件中。在该示例中,节点502F可以包括网络元件1寻找的数据字段。为了得到该数据,网络元件1向网络元件2发送图表的起始地址(例如,节点502A的起始地址)连同寻找节点502F的指示。该指示可以包括允许检索节点502F的数据字段的任何适合信息。作为示例,指示可以指示节点502A的右指针应被解引用、节点502C被访问、节点502C的左指针被解引用、节点502F被访问并且节点502F的数据字段返回网络元件1。如上文提到的,指示可以包括可以连同访问的第一节点的起始地址一起使用的一个或多个偏移。如同上文的示例中的一样,尽管数据结构的字段可以是任何适合大小,每个字段将视为包括4个字节。从而,来自网络元件1的请求可以指示4个字节、0个字节和8个字节的偏移,其指示应访问节点502A的右指针、节点502C的左指针和节点502F的数据字段。如果相反期望数据字段节点502B,来自元件1的请求可以指示0字节和8个字节的偏移。
图6图示根据某些实施例用于在指针追踪期间穿越NoC的示例方法。在步骤602处,从核208向网络元件202发送请求,该网络元件202与该请求中的识别节点关联。请求包括使NoC能够访问由请求指示的数据结构节点的数据字段并且向核208发送数据字段的信息。请求可以包括要访问的第一节点的地址。第一节点可以是数据结构的第一节点或具有为核所知的位点的数据结构的另一个节点。在发送请求之前,核208或关联逻辑可以确定存储要访问的第一节点的高速缓存的位点。请求然后发送给与高速缓存关联的网络元件202。请求可以被网络元件的路由器接收。
在步骤604处,访问第一节点的字段。该字段可以通过在请求所规定的位点处读取高速缓存来访问。在步骤604处访问在请求中规定的存储器位点。如果请求牵涉指针追踪,第一存储器位点的内容将是第一节点的指针字段并且请求将包括在将数据发送回到发起请求的核208之前应访问一个或多个另外的节点这一指示。因此,在步骤606处将确定应访问数据结构的至少一个额外节点。在步骤608处,将请求转发到与存储额外节点的高速缓存关联的网络元件。如果近期访问的高速缓存持有额外节点,则该高速缓存将再次被访问并且将在接收指向不同网络元件处的节点的指针时转发请求。在转发请求之前,可以修改它来反映在高速缓存处出现的一个或多个访问。例如,请求所规定的地址在转发请求中可以省略并且可以包括基于指针的新地址。也可以修改请求中包括的偏移的集合。例如,如果偏移中的一个添加到指针来获得被转发的新地址,该偏移可以在将请求转发到下一个网络元件之前从请求移除。重复步骤604、606和608直到不需要访问数据结构的额外节点(即,已访问期望节点的数据字段)。这可以采用任何适合的方式确定。例如,如果在最后的网络元件处接收的请求中没有保留偏移,最后的网络元件的路由器可以确定已获得数据字段。数据字段然后在步骤610处发送回到请求核208。
图6中图示的步骤中的一些可以在适当的情况下组合、修改或删除,并且额外步骤也可以添加到流程图。另外,可以按任何适合顺序执行步骤而不偏离特定实施例的范围。
图7图示根据某些实施例用于指针追踪的示例路由器204。路由器204包括可操作成允许电路交换和/或分组交换数据在网络元件之间传送的路由器逻辑。路由器204还可以包括指针解引用器214,其可操作成在地址处访问存储器、获得指向数据结构的节点的指针、调整该指针以指向节点的期望字段并且构建包括调整的指针的请求。
路由器204从与请求源关联的路由器接收请求。路由器204识别请求中的地址并且将该地址传递到高速缓存206来在该存储器地址处访问高速缓存的内容。当高速缓存206的存储器位点包含指向要访问的下一个节点的指针时,路由器识别检索的地址并且将它传递到加法器210。加法器210还从请求接收对应于要读取的下一个位点的偏移。如早先解释的,该偏移可以表示下一个节点的起始与应读取的下一个节点的字段之间的字节差(或其他适合度量)。加法器210将检索的地址添加到偏移来生成要从其读取的下一个存储器位点。该地址和任何余下的偏移组合来形成请求,该请求被转发到与持有下一个节点的高速缓存关联的网络元件。
图8图示根据某些实施例用于在指针追踪期间检索指针并且确定下一个地址的示例方法800。为了说明目的,从图7的路由器204的角度描述方法。在步骤802处,在路由器204处接收访问数据结构的节点的数据字段的请求。在步骤804处,耦合于路由器204的本地高速缓存206使用路由器204接收的请求中所包括的地址来访问。该访问产生数据结构的另一个节点的地址。在步骤806处,路由器确定与获得的地址关联的偏移。在一些实施例中,偏移将是在路由器接收的请求中列出的第一偏移。在步骤808处,将偏移添加到从高速缓存获得的地址来确定下一个读取位点。在步骤810处,路由器204使用所得的地址来确定请求应发送到哪个路由器。路由器204可以使用任何适合的方法来确定下一个路由器。在特定实施例中,路由器204执行所得地址的哈希(hash)并且基于哈希的结果选择下一个路由器。获得的地址和接收的请求中任何余下的偏移然后在步骤812处转发到下一个路由器。在一些实例中,在步骤808处确定的下一个读取位点可以位于被访问来获得数据结构的下一个节点的地址的相同本地高速缓存中。因此,在步骤812处在将编辑的请求转发到不同路由器之前可以在相同路由器处重复步骤804至810。
图8中图示的步骤中的一些可以在适当情况下组合、修改或删除,并且额外步骤也可以添加到流程图。另外,可以按任何适合顺序执行步骤而不偏离特定实施例的范围。此外,方法800的步骤可以重复任意次数。例如,在获得期望数据字段之前可以对任意数量的指针解引用。从而,尽管各种实施例描绘三个指针,可以对更多或更少指针解引用来获得期望数据字段。
尽管各种实施例关于NoC描述,该公开的概念可以在任何系统中使用,其中数据结构的节点分散在不同离散存储器之中。在这样的实施例中,每个存储器可以与路由器关联,该路由器可操作成接收访问存储器的请求、将请求传送到其他路由器以及将数据返回请求发起的路由器。
图9图示根据一个实施例的示例计算系统的框图的另一个实施例。在该图中,描绘根据本公开的芯片上系统(SOC)设计的实施例。作为特定说明性示例,在用户设备(UE)中包括SOC 900。在一个实施例中,UE指要被最终用户用于通信的任何设备,例如手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本或任何其他相似通信设备。通常UE连接到基站或节点,其在本质上潜在对应于GSM网络中的移动台(MS)。
在这里,SOC 900包括2个核-906和907。与上文的论述相似,核906和907可以遵循指令集架构,例如基于Intel® Architecture Core™的处理器、Advanced MicroDevices, Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户,以及它们的被许可方或采用者。核906和907耦合于高速缓存控制908,其与总线接口单元909和L2高速缓存910关联来与系统900的其他部分通信。互连910包括芯片上互连,例如IOSF、AMBA或上文论述的其他互连,其潜在地实现描述的公开的一个或多个方面。
接口910向其他部件提供通信信道,这些部件例如与SIM卡接口的订户身份模块(SIM) 930、持有启动代码以供核906和907执行来使SOC 900初始化并且启动它的启动rom935、与外部存储器(例如DRAM 960)接口的SDRAM控制器940、与非易失性存储器(例如闪存965)接口的闪存控制器945、与外设接口的外设控制Q1650(例如,串行外围接口)、显示和接收输入(例如支持触摸的输入)的视频编解码器920和视频接口925、执行图形相关计算的GPU 915等。这些接口中的任一个可以包含本文描述的本公开的方面。
另外,系统图示用于通信的外设,例如Bluetooth模块970、3G调制解调器975、GPS985和WiFi 985。注意如上文规定的,UE包括用于通信的无线电设备。因此,这些外设通信模块不是所有都需要。然而,在UE中,要包括某一形式的无线电设备用于外部通信。
设计可以经历各种阶段,从创建到模拟到制造。表示设计的数据可以采用许多方式来表示该设计。首先,如在模拟中有用的,硬件可以使用硬件描述语言(HDL)或另一个功能描述语言来表示。另外,具有逻辑和/或晶体管门的电路级模型可在设计过程的某些阶段产生。此外,大部分设计在某个阶段达到表示硬件模型中各种设备的物理布局的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是规定对用于生产集成电路的掩模的不同掩模层上各种特征存在或不存在的数据。在一些实现中,这样的数据可以采用数据库文件格式存储,例如图形数据系统II(GDS II)、开放艺术品系统交换标准(OASIS)或相似格式。
在一些实现中,除其他示例外,基于软件的硬件模型和HDL以及其他功能描述语言对象可以包括寄存器传输语言(RTL)文件。这样的对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型)、就描述的硬件的属性来解析HDL对象并且从对象确定物理电路和/或芯片上布局。设计工具的输出可以用于制造物理设备。例如,除将实现以便实现采用HDL对象实现模型化的系统的其他属性外,设计工具还可以从HDL对象确定各种硬件和/或固件元件的配置,例如总线宽度、寄存器(其包括大小和类型)、存储器块、物理链路路径、构造拓扑。设计工具可以包括用于确定芯片上系统(SoC)和其他硬件设备的拓扑和构造配置的工具。在一些实例中,HDL对象可以用作用于开发可以被制造设备用于制造描述的硬件的模型和设计文件的基础。实际上,HDL对象本身可以作为用于促成描述的硬件的制造系统软件的输入而提供。
在设计的任何表示中,数据可以采用任何形式的机器可读介质存储。存储器或磁或光存储(例如盘)可以是存储经由光或电波传送的信息的机器可读介质,该光或者电波被调制或用别的方式产生来传送这样的信息。当传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重传来说,做出新的副本。从而,通信提供商或网络提供商可以将例如编码到载波内的信息等物品存储在有形、机器可读介质上(至少暂时地),其体现本公开的实施例的技术。
如本文使用的模块指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,例如微控制器,其与非暂时性介质关联来存储适于由该微控制器执行的代码。因此,在一个实施例中对模块的引用指硬件,其具体配置成识别和/或执行在非暂时性介质上保持的代码。此外,在另一个实施例中,模块的使用指包括代码的非暂时性介质,该代码具体适于由微控制器执行来执行预定的操作。并且如可以推断的,在再另一个实施例中,术语模块(在该示例中)可以指微控制器和非暂时性介质的组合。通常,图示为单独的模块边界通常变化并且潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件,或其组合,同时潜在地保留一些独立硬件、软件或固件。在一个实施例中,术语逻辑的使用包括例如晶体管、寄存器等硬件或例如可编程逻辑设备等其他硬件。
在一个实施例中,短语‘以’或‘配置成’的使用指设置、装配、制造、推销、进口和/或设计装置、硬件、逻辑或元件来执行指定或确定的任务。在该示例中,不在操作中的装置或其元件如果它被设计、耦合和/或互连来执行所述指定任务则仍然‘配置成’执行指定任务。作为纯粹说明性的示例,逻辑门在操作期间可以提供0或1。但‘配置成’向时钟提供使能信号的逻辑门不包括可以提供1或0的每个潜在的逻辑门。相反,逻辑门是采用在操作期间1或0输出要启用时钟的某个方式耦合的逻辑门。再一次注意术语‘配置成’的使用不要求操作,而相反集中在装置、硬件和/或元件的潜伏状态,其中在潜伏状态中,装置、硬件和/或元件设计成当装置、硬件和/或元件操作时执行特定任务。
此外,在一个实施例中,短语 ‘能够’和或‘可操作成’的使用指一些装置、逻辑、硬件和/或元件采用能够采用规定方式使用这些装置、逻辑、硬件和/或元件这样的方式设计。注意如上文指出,用于、能够或可操作成在一个实施例中的使用指装置、逻辑、硬件和/或元件的潜伏状态,其中装置、逻辑、硬件和/或元件不在操作中但采用能够采用规定的方式使用装置这样的方式设计。
如本文使用的值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑水平、逻辑值或逻辑上的值的使用也称为1和0,其简单地表示二进制逻辑状态。例如,1指高逻辑水平并且0指低逻辑水平。在一个实施例中,例如晶体管或闪存单元等存储单元可能够保持单个逻辑值或多个逻辑值。然而,在计算机系统中已经使用值的其他表示。例如,十进制数字十也可表示为1010的二进制值和十六进制字母A。因此,值包括能够保持在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分表示。作为示例,例如逻辑一等第一个值可以表示默认或初始状态,而例如逻辑零等第二个值可以表示非默认状态。另外,术语重设和设置在一个实施例中分别指默认和更新的值或状态。例如,默认值潜在地包括高逻辑值,即重设,而更新值潜在地包括低逻辑值,即设置。注意可以使用值的任何组合来表示任何数量的状态。
上文阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上、由处理元件可执行的指令或代码实现。非暂时性机器可访问/可读介质包括采用由例如计算机或电子系统等机器可读的形式提供(即,存储和/或传送)信息的任何机构。例如,非暂时性机器可访问介质包括:随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪速存储器设备;电存储设备;光存储设备;声存储设备;用于保持从暂时(传播的)信号(例如,载波、红外信号、数字信号)等(要与可从其中接收信息的非暂时性介质区别开)接收的信息的其他形式的存储设备。
用于对逻辑编程来执行本公开的实施例的指令可以存储在系统中的存储器内,例如DRAM、高速缓存、闪速存储器或其他存储等。此外,指令可以经由网络或通过其他计算机可读介质而分发。从而机器可读介质可以包括用于采用由机器(例如,计算机)可读的形式存储或传送信息的任何机构,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡、闪速存储器或有形的机器可读存储,其在经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传送信息中使用。因此,计算机可读介质包括任何类型的有形机器可读介质,其适合于采用由机器(例如,计算机)可读的形式存储或传送电子指令或信息。
一个或多个实施例可以提供装置、系统、机器可读存储、机器可读介质、基于硬件和/或软件的逻辑(例如路由器)和方法,用于在至少一个核的第一核规定的第一存储器位点处从多个高速缓存的第一高速缓存中访问数据结构的第一指针以及向要与多个高速缓存的第二高速缓存通信的第二路由器发送基于第一指针的第二存储器位点。
在至少一个示例中,装置可以是处理器,其包括至少一个核和多个高速缓存,其中数据结构要分布在多个高速缓存之中。
在至少一个示例中,第二高速缓存包括在第二存储器位点处的数据结构的第二指针。
在至少一个示例中,第一核从路由器接收数据结构的数据字段,该路由器从另一个路由器接收数据字段的存储器位点。
在至少一个示例中,接收数据字段的存储器位点的路由器是第二路由器。
在至少一个示例中,接收数据部分的存储器位点的路由器是第三路由器。
在至少一个示例中,作为请求的部分,第一核发送第一存储器位点,该请求进一步包括至少一个偏移。
在至少一个示例中,第一路由器包括加法器,用于将至少一个偏移的第一偏移添加到第一指针来计算第二存储器位点。
在至少一个示例中,数据结构包括链表。
在至少一个示例中,数据结构包括图表。
在至少一个示例中,数据结构包括树形结构。
在至少一个示例中,处理器进一步包括至少一个机器可访问存储介质,其具有存储其上的代码,该代码在机器上执行时促使该机器促使第一路由器在要由至少一个核的第一核规定的第一存储器位点处从多个高速缓存的第一高速缓存中访问数据结构的第一指针并且向要与多个高速缓存的第二高速缓存通信的第二路由器发送基于第一指针的第二存储器位点。
一个或多个实施例可以提供装置、系统、机器可读存储、机器可读介质、基于硬件和/或软件的逻辑(例如指针解引用器),以及方法,用于接收数据结构(该数据结构要存储在多个存储元件之中)的第一节点的一部分的位点、从数据结构的第一节点获得第一指针、基于该第一指针确定数据结构的第二节点的一部分的位点(该第二节点要存储在第二存储元件中)以及向第二指针解引用器发送数据结构的第二节点的部分的位点,第二指针解引用器用于从第二存储元件访问第二节点的部分。
在至少一个示例中,第一指针解引用器从处理器的核接收数据结构的第一节点的部分的位点。
在至少一个示例中,第二指针解引用器访问数据结构的第二节点的数据字段。
在至少一个示例中,第二指针解引用器向处理器的核发送数据结构的第二节点的数据字段。
在至少一个示例中,第一指针解引用器进一步:接收请求中的一个或多个偏移,该请求还包括数据结构的第一节点的部分的位点;并且将至少一个偏移的第一偏移添加到第一指针来确定数据结构的第二节点的部分的位点。
在至少一个示例中,第一指针解引用器进一步向第二指针解引用器发送请求,其包括数据结构的第二节点的部分的位点和一个或多个偏移中的第二偏移。
在至少一个示例中,第二指针解引用器进一步从数据结构的第二节点获得第二指针、基于该第二指针确定数据结构的第三节点的一部分的位点(该第三节点要存储在第三存储元件中)以及向第三指针解引用器发送数据结构的第三节点的部分的位点,第三指针解引用器用于从第三存储元件访问第三节点的部分。
在至少一个示例中,第二指针解引用器进一步接收一个或多个偏移的第二偏移以及数据结构的第二节点的部分的位点;并且将第二偏移添加到第二指针来确定数据结构的第三节点的部分的位点。
一个或多个实施例可以提供非暂时性机器可读介质,其包括信息来表示结构,这些结构在制造时配置成在第一指针解引用器处接收数据结构的第一节点的一部分的位点(该第一节点要存储在第一存储元件中)、从数据结构的第一节点获得第一指针、基于第一指针确定数据结构的第二节点的一部分的位点(该第二节点要存储在第二存储元件中)以及向第二指针解引用器发送数据结构的第二节点的部分的位点,第二指针解引用器用于从第二存储元件访问第二节点的部分。
在该整个说明书中对“一个实施例”或“实施例”的引用意指连同实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。从而,短语“在一个实施例中”或“在实施例中”在该整个说明书中各种地方的出现不一定都指相同的实施例。此外,特定特征、结构或特性可以采用任何适合的方式在一个或多个实施例中组合。
在前面的说明书中,参考特定示范性实施例给出详细描述。然而,可对其做出各种修改和改变而不偏离如附上的权利要求中阐述的本公开更广泛的精神和范围,这将是明显的。说明书和图因此要在说明性意义而非限制性意义上考虑。此外,实施例和其他示范性语言在前面的使用不一定都指相同的实施例或相同的示例,而可指不同且截然不同的实施例,以及潜在地相同的实施例。
Claims (22)
1.一种用于执行跨处理器的高速缓存的指针追踪的处理器,所述处理器用于包括:
至少一个核;
多个高速缓存,其中数据结构要分布在所述多个高速缓存之中;以及
第一路由器,用于:
在要由所述至少一个核的第一核规定的第一存储器位点处从所述多个高速缓存的第一高速缓存中访问所述数据结构的第一指针;以及
向要与所述多个高速缓存的第二高速缓存通信的第二路由器发送基于所述第一指针的第二存储器位点。
2.如权利要求1所述的处理器,其中所述第二高速缓存用于包括在所述第二存储器位点处的、所述数据结构的第二指针。
3.如权利要求1所述的处理器,其中所述第一核用于从路由器接收所述数据结构的数据字段,所述路由器用于从另一个路由器接收所述数据字段的存储器位点。
4.如权利要求3所述的处理器,其中用于接收所述数据字段的存储器位点的所述路由器是第二路由器。
5.如权利要求3所述的处理器,其中用于接收所述数据字段的存储器位点的所述路由器是第三路由器。
6.如权利要求1所述的处理器,其中所述第一核用于发送所述第一存储器位点作为请求的部分,所述请求进一步用于包括至少一个偏移。
7.如权利要求6所述的处理器,其中所述第一路由器用于包括加法器,用于将所述至少一个偏移的第一偏移添加到所述第一指针来计算所述第二存储器位点。
8.如权利要求1所述的处理器,其中所述数据结构用于包括链表。
9.如权利要求1所述的处理器,其中所述数据结构用于包括图表。
10.如权利要求1所述的处理器,其中所述数据结构用于包括树形结构。
11.如权利要求1所述的处理器,进一步包括至少一个机器可访问存储介质,所述至少一个机器可访问存储介质上存储有代码,所述代码在机器上执行时促使所述机器促使所述第一路由器用于:
在要由所述至少一个核的第一核规定的第一存储器位点处从所述多个高速缓存的第一高速缓存中访问所述数据结构的第一指针;以及
向要与所述多个高速缓存的第二高速缓存通信的第二路由器发送基于所述第一指针的第二存储器位点。
12.一种用于执行跨各种存储元件分布的数据结构的指针追踪的装置,所述装置用于包括:
第一指针解引用器,所述第一指针解引用器与多个存储元件的第一存储元件关联,所述第一指针解引用器用于:
接收数据结构的第一节点的一部分的位点,所述数据结构要存储在所述多个存储元件之中;
从所述数据结构的第一节点获得第一指针;
基于所述第一指针确定所述数据结构的第二节点的一部分的位点,所述第二节点要存储在第二存储元件中;以及
向第二指针解引用器发送所述数据结构的第二节点的所述部分的位点,所述第二指针解引用器要从所述第二存储元件访问所述第二节点的所述部分。
13.如权利要求12所述的装置,其中所述第一指针解引用器用于从处理器的核接收所述数据结构的第一节点的所述部分的位点。
14.如权利要求12所述的装置,其中所述第二指针解引用器用于访问所述数据结构的第二节点的数据字段。
15.如权利要求14所述的装置,其中所述第二指针解引用器用于向处理器的核发送所述数据结构的第二节点的数据字段。
16.如权利要求12所述的装置,其中所述第一指针解引用器进一步用于:
接收请求中的一个或多个偏移,所述请求还包括所述数据结构的第一节点的所述部分的位点;以及
将所述至少一个偏移的第一偏移添加到所述第一指针来确定所述数据结构的第二节点的所述部分的位点。
17.如权利要求16所述的装置,其中所述第一指针解引用器进一步用于:
向所述第二指针解引用器发送请求,所述请求包括所述数据结构的第二节点的所述部分的位点和所述一个或多个偏移的第二偏移。
18.如权利要求14所述的装置,其中所述第二指针解引用器用于:
从所述数据结构的第二节点获得第二指针;
基于所述第二指针确定所述数据结构的第三节点的一部分的位点,所述第三节点要存储在第三存储元件中;以及
向第三指针解引用器发送所述数据结构的第三节点的所述部分的位点,所述第三指针解引用器用于从所述第三存储元件访问所述第三节点的所述部分。
19.如权利要求17所述的装置,其中所述第二指针解引用器进一步用于:
接收所述一个或多个偏移的第二偏移以及所述数据结构的第二节点的所述部分的位点;以及
将所述第二偏移添加到所述第二指针来确定所述数据结构的第三节点的所述部分的位点。
20.一种非暂时性机器可读介质,所述非暂时性机器可读介质包括用于表示结构的信息,所述结构在制造时配置成:
在第一指针解引用器处接收数据结构的第一节点的一部分的位点,所述第一节点要存储在第一存储元件中;
从所述数据结构的第一节点获得第一指针;
基于所述第一指针确定所述数据结构的第二节点的一部分的位点,所述第二节点要存储在第二存储元件中;以及
向第二指针解引用器发送所述数据结构的第二节点的所述部分的位点,所述第二指针解引用器用于从所述第二存储元件访问所述第二节点的所述部分。
21.一种用于执行跨各种存储元件分布的数据结构的指针追踪的系统,所述系统用于包括:
用于在第一指针解引用器处接收数据结构的第一节点的一部分的位点的部件,所述第一节点要存储在第一存储元件中;
用于从所述数据结构的第一节点获得第一指针的部件;
用于基于所述第一指针确定所述数据结构的第二节点的一部分的位点的部件,所述第二节点要存储在第二存储元件中;以及
用于向第二指针解引用器发送所述数据结构的第二节点的所述部分的位点的部件,所述第二指针解引用器要从所述第二存储元件访问所述第二节点的所述部分。
22.一种机器可读介质,包括存储其上的指令,所述指令执行时促使所述机器执行跨各种存储元件分布的数据结构的指针追踪,所述数据结构的指针追踪包括:
在第一指针解引用器处接收数据结构的第一节点的一部分的位点,所述第一节点要存储在第一存储元件中;
从所述数据结构的第一节点获得第一指针;
基于所述第一指针确定所述数据结构的第二节点的一部分的位点,所述第二节点要存储在第二存储元件中;以及
向第二指针解引用器发送所述数据结构的第二节点的所述部分的位点,所述第二指针解引用器要从所述第二存储元件访问所述第二节点的所述部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/573,968 US9940236B2 (en) | 2014-12-17 | 2014-12-17 | Pointer chasing across distributed memory |
US14/573,968 | 2014-12-17 | ||
PCT/US2015/061468 WO2016099782A1 (en) | 2014-12-17 | 2015-11-19 | Pointer chasing across distributed memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003944A CN107003944A (zh) | 2017-08-01 |
CN107003944B true CN107003944B (zh) | 2020-11-24 |
Family
ID=56127282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580062823.XA Active CN107003944B (zh) | 2014-12-17 | 2015-11-19 | 跨分布式存储器的指针追踪 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9940236B2 (zh) |
EP (1) | EP3234783B1 (zh) |
CN (1) | CN107003944B (zh) |
WO (1) | WO2016099782A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11113223B1 (en) * | 2018-04-03 | 2021-09-07 | Xilinx, Inc. | Dual mode interconnect |
US10833991B2 (en) * | 2018-09-26 | 2020-11-10 | Itron, Inc. | Partial source routing for cross-network routing |
US11949595B2 (en) | 2020-06-26 | 2024-04-02 | Intel Corporation | Reflection routing as a framework for adaptive modular load balancing for multi-hierarchy network on chips |
WO2022082342A1 (en) * | 2020-10-19 | 2022-04-28 | Alibaba Group Holding Limited | Computer memory-side pointer chasing |
CN112579570B (zh) * | 2020-12-16 | 2023-06-23 | 中国辐射防护研究院 | 一种核环境数据存储方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6035376A (en) * | 1997-10-21 | 2000-03-07 | Apple Computer, Inc. | System and method for changing the states of directory-based caches and memories from read/write to read-only |
CN1605182A (zh) * | 2001-12-19 | 2005-04-06 | 国际商业机器公司 | 用于网络高速缓存的方法和系统 |
WO2005116837A1 (en) * | 2004-05-26 | 2005-12-08 | Intel Corporation | Automatic caching generation in network applications |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008535435A (ja) | 2005-04-06 | 2008-08-28 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ネットワーク・オン・チップ環境及び遅延低減方法 |
US8108545B2 (en) | 2007-08-27 | 2012-01-31 | International Business Machines Corporation | Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture |
US8284766B2 (en) | 2007-12-28 | 2012-10-09 | Intel Corporation | Multi-core processor and method of communicating across a die |
US8473667B2 (en) * | 2008-01-11 | 2013-06-25 | International Business Machines Corporation | Network on chip that maintains cache coherency with invalidation messages |
US8181005B2 (en) * | 2008-09-05 | 2012-05-15 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with sparse and dense prediction caches |
US8230110B2 (en) * | 2010-03-02 | 2012-07-24 | Juniper Networks, Inc. | Work-conserving packet scheduling in network devices |
US8530449B2 (en) * | 2010-09-09 | 2013-09-10 | Assad S. Sawaya | Composition for a topical ophthalmic clear colloidal liquid which undergoes a liquid-gel phase transition in the eye |
US8788505B2 (en) * | 2011-04-27 | 2014-07-22 | Verisign, Inc | Systems and methods for a cache-sensitive index using partial keys |
WO2013063484A1 (en) | 2011-10-28 | 2013-05-02 | The Regents Of The University Of California | Multiple-core computer processor |
KR101482014B1 (ko) * | 2012-05-11 | 2015-01-14 | 네이버 주식회사 | 할당 테이블을 이용한 파일 캐시 시스템 및 방법 그리고 파일 캐시 어플리케이션을 배포하는 배포 시스템 및 배포 방법 |
US9703707B2 (en) | 2012-12-04 | 2017-07-11 | Ecole polytechnique fédérale de Lausanne (EPFL) | Network-on-chip using request and reply trees for low-latency processor-memory communication |
US9007920B2 (en) | 2013-01-18 | 2015-04-14 | Netspeed Systems | QoS in heterogeneous NoC by assigning weights to NoC node channels and using weighted arbitration at NoC nodes |
CN105247817B (zh) | 2013-06-28 | 2019-05-07 | 英特尔公司 | 用于源同步电路交换片上网络(NoC)的方法、装置和系统 |
WO2015034525A1 (en) | 2013-09-06 | 2015-03-12 | Intel Corporation | Architecture and method for hybrid circuit-switched and packet-switched router |
US9699096B2 (en) | 2013-12-26 | 2017-07-04 | Intel Corporation | Priority-based routing |
-
2014
- 2014-12-17 US US14/573,968 patent/US9940236B2/en not_active Expired - Fee Related
-
2015
- 2015-11-19 EP EP15870592.1A patent/EP3234783B1/en active Active
- 2015-11-19 WO PCT/US2015/061468 patent/WO2016099782A1/en active Application Filing
- 2015-11-19 CN CN201580062823.XA patent/CN107003944B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6035376A (en) * | 1997-10-21 | 2000-03-07 | Apple Computer, Inc. | System and method for changing the states of directory-based caches and memories from read/write to read-only |
CN1605182A (zh) * | 2001-12-19 | 2005-04-06 | 国际商业机器公司 | 用于网络高速缓存的方法和系统 |
WO2005116837A1 (en) * | 2004-05-26 | 2005-12-08 | Intel Corporation | Automatic caching generation in network applications |
Also Published As
Publication number | Publication date |
---|---|
EP3234783A1 (en) | 2017-10-25 |
EP3234783B1 (en) | 2019-09-04 |
EP3234783A4 (en) | 2018-08-01 |
CN107003944A (zh) | 2017-08-01 |
US20160179670A1 (en) | 2016-06-23 |
WO2016099782A1 (en) | 2016-06-23 |
US9940236B2 (en) | 2018-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109154924B (zh) | 多个上行链路端口设备 | |
CN107077521B (zh) | 片上系统配置元数据 | |
CN107113254B (zh) | 自适应交换芯片上网络 | |
CN108614783B (zh) | 一致性协议表 | |
CN105793829B (zh) | 用于集成组件互连的装置、方法和系统 | |
JP6311174B2 (ja) | 共有メモリ、およびノード間のi/oサービス | |
CN107005477B (zh) | 用于片上网络的基于链路延迟的路由装置 | |
CN107113253B (zh) | 用于片上网络的空间划分的电路交换信道 | |
CN107113227B (zh) | 流水线化混合分组/电路交换片上网络 | |
CN107005492B (zh) | 用于芯片上网络上的多播和缩减通信的系统 | |
US20150188829A1 (en) | Priority-based routing | |
CN107003944B (zh) | 跨分布式存储器的指针追踪 | |
CN107078971B (zh) | 组合保证吞吐量和尽力而为的片上网络 | |
WO2014209406A1 (en) | On-chip mesh interconnect | |
CN109582998A (zh) | 小巧PCIe端点的根复合体集成端点仿真 | |
CN107111584B (zh) | 到片上网络的接口的高带宽核 | |
CN107113252B (zh) | 用于片上网络的并行方向解码电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |