CN106104501B - 用于在多节点系统中的存储器分配的方法和装置 - Google Patents

用于在多节点系统中的存储器分配的方法和装置 Download PDF

Info

Publication number
CN106104501B
CN106104501B CN201480076878.1A CN201480076878A CN106104501B CN 106104501 B CN106104501 B CN 106104501B CN 201480076878 A CN201480076878 A CN 201480076878A CN 106104501 B CN106104501 B CN 106104501B
Authority
CN
China
Prior art keywords
node
chipset
free
memory
buffer area
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
CN201480076878.1A
Other languages
English (en)
Other versions
CN106104501A (zh
Inventor
R·E·凯斯勒
W·P·斯尼德
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.)
Kaiwei International Co
Marvell Asia Pte Ltd
Original Assignee
Kaiwei LLC
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 Kaiwei LLC filed Critical Kaiwei LLC
Publication of CN106104501A publication Critical patent/CN106104501A/zh
Application granted granted Critical
Publication of CN106104501B publication Critical patent/CN106104501B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

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

Abstract

根据至少一个示例实施例,多芯片系统包括被配置成彼此进行通信并且分享资源的多个芯片设备。根据至少一个示例实施例,在多芯片系统中存储器分配的方法包括:由多芯片系统中的一个或多个自由池分配器(FPA)管理自由缓冲区指针池列表。基于由一个或多个自由池分配器(FPA)所管理的自由缓冲区指针池列表,存储器分配器(MA)硬件部件分配与多芯片系统的芯片设备相关联的自由缓冲区至与工作项目相关联的数据。根据至少一个方面,与工作项目相关联的数据表示数据分组。

Description

用于在多节点系统中的存储器分配的方法和装置
相关交叉引用
本申请是2014年3月7日所提交的美国专利申请No.14/201,594的继续申请。上述申请的全部内容以引用的形式合并于此。
背景技术
微处理器技术已经取得了重大进步。该进步由在通信网络、计算机设备、手持设备、以及其它电子设备中的针对处理功率和速度的需求持续增长所驱动。所取得的进步导致了市场上的在处理速度或功率以及处理器设备的片上存储器容量的实质性增加。所取得的进步的其它结果包括微处理器芯片尺寸和功率消耗的减少。
通过增加在微处理器芯片中的晶体管数目、采取多核心结构、以及在处理器架构中的其它改进,取得处理功率的增加。处理器功率的增加是贡献于通信网络的改进的性能、以及智能手持设备和相关应用中巨大爆发的重要因素。
发明内容
根据至少一个示例实施例,芯片设备架构包括被配置成支持在多芯片系统中支持高效可靠跨芯片通信的芯片间互连接口。该芯片间互连接口和由在多芯片或多节点系统中的芯片设备所采用的过程和协议一起,允许在多节点系统内的芯片设备之间的资源共享。
根据至少一个示例实施例,一种在多芯片系统中的存储器分配的方法,包括由在多芯片系统中的一个或多个自由池分配器(FPA)管理自由缓冲区指针池的对应列表。一种驻留于多个芯片设备中的一个芯片设备中的存储器分配器(MA)硬件部件,基于由一个或多个FPA协处理器所管理的自由缓冲区指针的一个或多个列表,将与多个芯片设备中的一个芯片设备相关联的自由缓冲区分配至于工作项目相关联的数据。
附图说明
从以下附图中所图示的发明的示例实施例的更为具体的描述中,前述内容将是明显的。在不同的视图中,在附图中相似的参考符号指代相同的部分。附图不必按比例,强调替代地被放置以图示本发明的实施例。
图1是图示了根据至少一个示例实施例的芯片设备的图;
图2是图示了根据至少一个示例实施例的与相应的核心处理器群相关联的芯片内互连接口的通信总线的图;
图3是图示了根据至少一个示例实施例的与输入/输出桥(IOB)相关联的芯片内互连接口的通信总线320的图;
图4是图示了根据至少一个示例实施例的芯片间互连接口结构的概览的图;
图5是图示了根据至少一个示例实施例的单个标签和数据单元(TAD)的结构的图。
图6A-6C是图示了根据至少一个示例实施例的不同多节点系统的概览图;
图7是图示了根据至少一个示例实施例的在多节点系统内的工作项目的处理的框图;
图8是描绘了根据至少一个示例实施例的在多节点系统中的缓存和存储器级别的框图;
图9是图示了根据至少一个示例实施例的多节点系统的简化概览;
图10是图示了根据至少一个示例实施例的去往给定I/O接口的初始接入请求相关联的时间线的框图;
图11A和11B是图示了根据至少一个示例实施例的两个相应排序场景的图;
图12是图示了根据至少一个示例实施例的在多节点系统中的节点集合之间被交换的无序消息的第一场景的图;
图13是图示了根据至少一个示例实施例的在多节点系统中的节点集合之间被交换的无序消息的第二场景的图;
图14是图示了根据至少一个示例实施例的在多节点系统中的节点集合之间被交换的无序消息的第三场景的图;
图15是图示了根据至少一个示例实施例的在多节点系统中的节点集合之间被交换的无序消息的第四场景的图;
图16是图示了根据至少一个示例实施例的在多节点系统中的节点集合之间被交换的无序消息的第五场景的图;
具体实施方式
以下是发明的示例实施例的描述。
诸如Cavium公司的OCTEON设备的许多现存网络处理器设备包括多个中央处理单元(CPU),例如高达32核。下面的架构支持相应的多核芯片中的每个核心处理器访问直接地被附在多核芯片的所有的动态随机访问存储器(DRAM)。而且,每个核心处理器被使得支持在多核芯片中的任何输入/输出(I/O)设备上发起处理。因此,每个多核芯片可以被看成独立的系统,其规模仅被单个多核芯片的能力所限制。
相较于多个单核芯片,多核芯片通常利用相对较低的功率消耗来提供更高的性能,多核芯片而不是单核芯片的使用导致在性能上的重大增加。特别地,依赖于应用如何可并行,加速因子可以从1到在多核芯片中的核的数目变动。在通信网络中,在网络节点处所执行的许多典型处理任务是并行地可执行的,这使得在网络设备中的多核芯片的使用是适合和有利的。
随着针对数据连接性、基于网络的应用以及对互联网访问的增加,许多通信网络的复杂度和带宽已经被持续地增加。由于增加的处理器频率已经按常规发展,多核网络芯片中的核的数目近些年已经在增加以适应针对在诸如路由器、交换机、服务器等的网络元件内的更多处理功率的需求。然而,随着在芯片内的核的数目的增加,管理到对应片上存储器以及对应所附存储器的访问变得越来越有挑战性。例如,当多个核同时尝试访问存储器部件时,对应的访问操作的处理速度被总线容量和速度所限制,存储器访问通过该总线而被处理。此外,随着核数目的增加,在芯片内实现存储器一致性变得更具挑战性。
根据至少一个实施例,针对新一代处理器,新的处理器架构允许芯片设备的组作为单个芯片设备进行操作。每个芯片设备包括芯片内互连接口,被配置成将芯片设备耦合到形成多芯片系统的其它芯片设备。存储器一致性方法可以在每个芯片设备中被采用以增强与在多核系统中的不同芯片设备相关联的存储器部件之间的存储器一致性。而且,用于将处理任务指派给多芯片系统中的不同核心处理器的方法以及用于将高速缓存块(cache)分配给多芯片系统内的芯片设备的方法在芯片设备内被采用,使得多芯片系统像单个芯片那样操作。此外,用于由多芯片系统中的核到输入/输出(I/O)设备的同步访问的方法被用于增强在多芯片系统中的有效无冲突的到(I/O)设备的访问。
芯片架构
图1是图示了根据至少一个示例实施例的芯片设备100的架构的图。在图1的示例架构中,芯片设备包括多个核心处理器,例如48个核。核心处理器的每个核心处理器包括至少一个缓存存储器部件,例如层1(L1)缓存,用于在核心处理器内存储数据。根据至少一个方面,多个核心处理器被布置成多个群,例如105a-105h,也被单独地或整体地被称为105。例如,针对具有被布置成8个群105a-105h的48个核的芯片设备100,群105a-105h的每个群包括6个核心处理器。芯片设备100还包括共享缓存存储器,例如层2(L2)缓存110,以及被配置成管理和控制对于共享缓存(cache)存储器110的访问的共享缓存存储器控制器115。根据至少一个方面,共享缓存存储器110是缓存存储器控制器115的部分。本领域技术人员将理解的是,共享缓存存储器控制器115和共享缓存存储器110可以被设计成耦合到彼此的分离的设备。根据至少一个方面,共享缓存存储器110被分割成多个标签和数据单元(TAD),并且对应的控制器115耦合到一个或多个存储器控制器(LMC),例如117a-117d,被配置成支持到外部的或所附的存储器的访问,存储器诸如是与芯片设备100相关联的数据随机访问存储器(DRAM)(在图1中未示出)。
根据至少一个示例实施例,芯片设备100包括芯片内互连接口120,被配置成通过多个通信总线将核心处理器与共享缓存存储器110或TAD耦合到彼此。芯片内互连接口120被用作通信接口以实现芯片设备100内的存储器一致性。因此,芯片内互连接口120也可被称为存储器一致性互连接口。根据至少一个方面,芯片内互连接口120具有交叉条(xbar)结构。
根据至少一个示例实施例,芯片设备100还包括一个或多个协处理器150。协处理器150包括I/O设备、压缩/解压缩设备、硬件加速器、外部设备互连专线(PCIe)等。核心处理器150通过I/O桥(IOB)被耦合到芯片内互连接口120。因此,协处理器150通过IOB140和芯片间互连接口被耦合到核心处理器和共享存储器缓存110或TAD。根据至少一个方面,协处理器150被配置成在共享存储器缓存110或TAD中存储数据或者从共享存储器缓存110或TAD加载数据。协处理器还被被配置成向芯片设备100中的核心处理器发送或指派处理任务,或从芯片设备100的其它部件接收数据或处理任务。
根据至少一个示例实施例,芯片设备100包括芯片间互连接口130,被配置成将芯片设备100耦合到其它芯片设备。换句话说,芯片设备100被配置成通过芯片间互连接口130与其它芯片设备交换数据和处理任务/工作。根据至少一个方面,芯片间互连接口130通过芯片内互连接口120被耦合到芯片设备100中的核心处理器和共享缓存存储器110或TAD。协处理器150通过IOB140和芯片内互连接口120耦合到芯片间互连接口130。芯片间互连接口130支持芯片设备100的核心处理器和协处理器150与其它芯片设备中的其它核心处理器或其它协处理器进行通信,如果它们在相同的芯片设备100中的话。
芯片内互连接口
图2是图示了根据至少一个示例实施例的芯片内互连接口120的通信总线210的图,通信总线210与核心处理器201的对应的群105相关联。通信总线210被配置成承载核心处理器201、I/O桥(IOB)140、芯片间互连接口130、共享缓存存储器110、或相应的TAD之间的所有存储器和I/O传输(图1)。根据至少一个方面,通信总线210在核心处理器201的时钟频率运行。
根据至少一个方面,通信总线210包括5个不同的信道:无效信道211、加信道212、存储信道213、提交(commit)信道214、以及填充信道215。无效信道211被配置成从共享缓存存储器控制器115到群105中的一个或多个核心处理器201来承载无效请求用于无效缓存块。例如,无效信道被配置成从TAD向群105的核心处理器201承载广播和/或多播数据无效消息/指令。加信道212被配置成从核心处理器201到芯片设备的其它部件承载地址和控制信息用于初始化或执行存储器和/或I/O传输。存储信道213被配置成承载与写操作相关联的数据。即,在存储数据在共享缓存存储器110或例如DRAM的外部存储器中,核心处理器201通过存储信道213向共享缓存存储器110或对应的控制器115发送数据。填充信道215被配置成从芯片设备100的其它部件到群105的核心处理器201承载响应数据。提交信道214被配置成承载响应控制信息至群105的核心处理器201。根据至少一个方面,存储信道213具有传递例如每时钟周期128比特的存储线并且填充信道215具有每时钟周期256比特的容量。
根据至少一个示例实施例,芯片内互连接口120包括分离的通信总线210,例如具有针对核心处理器201的每个群105的无效211、加212、存储213、提交214、以及填充215信道。考虑图1中的示例架构,芯片内互连接口120包括对应于核心处理器201的8个群105的8条通信总线210。通信总线210提供核心处理器201的群105与例如TAD的共享缓存存储器110或对应的控制器115之间的通信媒体。
图3是图示了根据至少一个示例实施例的与输入/输出桥(IOB)140以及对应的协处理器150相关联的芯片内互连接口120。根据至少一个方面,芯片内互连接口120包括针对芯片设备100中的每个IOB 140的分离的通信总线320.通信总线320通过相应的IOB 140将协处理器150耦合到共享缓存存储器110和/或对应的控制器115。通信总线320支持协处理器150耦合到对应的IOB 140以例如通过控制器115访问共享缓存存储器110和例如DRAM的外部存储器。
根据至少一个示例实施例,每个通信总线320包括多个通信信道。多个通信信道通过对应的IOB 140被耦合到协处理器150,并且被配置成承载协处理器150与共享缓存储存器110和/或对应的控制器115之间的数据。类似于通信总线210中的那些信道,通信总线320的多个通信信道包括加信道322、存储信道323、提交信道324、以及填充信道325。例如,加信道322被配置成从协处理器150至共享缓存存储器控制器115承载地址和控制信息用于初始化或执行操作。存储信道323被配置成从协处理器150至共享缓存存储器110和/或对应的控制器115承载与写操作相关联的数据。填充信道325被配置成从例如TAD的共享缓存存储器110或对应的控制器115至协处理器150承载响应数据。提交信道324被配置成承载到协处理器150的响应控制信息。根据至少一个方面,存储信道323具有传递例如每时钟周期128比特的存储线并且填充信道325具有每时钟周期256比特的容量。
根据至少一个方面,通信总线320还包括输入/输出命令(IOC)信道326,被配置成通过对应的IOB 140从芯片设备100的核心处理器201和/或通过芯片间互连接口130耦合到芯片设备100的其它芯片设备中的其它和处理器到协处理器150。通信总线320也包括输入/输出响应(IOR)信道327以通过对应的IOB140从协处理器150向芯片设备100中的核心处理器201和/或通过芯片间互连接口130耦合到芯片设备100的一个或多个其它芯片设备中的其它核心处理器来传递I/O响应数据。因此,IOC信道326和IOR信道327在芯片设备100中的协处理器150和芯片设备100中的核心处理器以及耦合到芯片设备100的其它芯片设备中的其它核心处理器之间提供通信媒体。而且,通信总线320包括多芯片输入协处理器MIC信道328和多芯片输出协处理器(MOC)信道,被配置成提供芯片间协处理器到协处理器通信媒体。特别地,MIC信道328被配置成通过芯片间互连接口130从耦合到芯片设备100的其它芯片设备中的协处理器到芯片设备100中的协处理器150承载数据。MOC信道329被配置成通过芯片间互连接口130从芯片设备100中的协处理器150到耦合至芯片设备100的其它芯片设备中的协处理器来承载数据。
芯片间互连接口
根据至少一个示例实施例,芯片间互连接口130提供在多芯片系统中的每对芯片设备之间的一对一通信媒体。根据至少一个方面,每个芯片设备包括被配置成管理芯片设备和其它芯片设备之间的通信数据和指令流的对应的芯片间互连接口130。
图4是图示了芯片间互连接口130的结构概览的图。根据至少一个示例方面,芯片间互连接口130通过多个通信信道和总线耦合到芯片内互连接口120。特别地,MIC信道328和MOC信道329通过芯片内互连接口120来运行并且通过相应的IOB 140将芯片间互连接口耦合到协处理器150。根据至少一个方面,MIC和MOC信道328和329被指定以在芯片设备100的协处理器150和耦合到芯片设备100的其它芯片设备上的协处理器之间承载通信数据和指令。因此,MIC和MOC信道328和329允许芯片设备100的协处理器150与驻留于一个或多个其它芯片设备中的其它协处理器之间进行直接通信,好像它们在相同的芯片设备中。例如,芯片设备100中的自由池分配器(FPA)协处理器被使得通过芯片间互连接口130来支持释放或指派存储器到耦合到芯片设备100的其它芯片设备中的FPA协处理器。而且,MIC和MOC信道328和329允许芯片设备100中的分组输入(PKI)协处理器通过芯片间互连接口130来指派处理任务到耦合到芯片设备100的另一个芯片设备中的调度、同步、以及排序(SSO)协处理器。
根据至少一个示例实施例,芯片间互连接口130也通过例如410a–410d的多个多芯片输入总线(MIB)以及例如420a–420b的多个多芯片输出总线(MOB)而被耦合到芯片内互连接口120。根据至少一个方面,例如410a–410b的MIB以及例如420a–420b的MOB被配置成承载通信数据和指令,而不是那些由MIC和MOC信道328和329所承载的。根据至少一个方面,例如410a–410b的MIB承载指令和数据,而不是在协处理器150和在其它芯片设备上的协处理器之间的、从另一个芯片设备所接收并且去往核心处理器201、共享缓存存储器110或对应的控制器115、和/或IOB 140的指令和数据。MOB承载指令和数据,而不是在其它芯片设备的协处理器与协处理器150之间的、从核心处理器201、共享缓存存储器110或对应的控制器115、和/或IOB 140发送的去往其它芯片设备的指令和数据。然而,MIC和MOC信道328和329承载与不同芯片设备中的协处理器之间的转发处理任务或存储器分配相关的命令和数据。根据至少一个方面,例如410a–410d的MIB或例如420a–420d的MOB的传输容量是例如每时钟周期128比特的存储器数据线。本领域技术人员将理解,例如410a–410d、例如420a–420d的MIB328、MOB 329或任何其它通信信道或总线的传输容量可以被不同地设计,并且本文中所提供的任何传输能力值用于说明的目的并且不被解释成对特征进行限制。
根据至少一个示例实施例,芯片间互连接口130被配置成通过例如420a–420d的MOB以及MOC信道329将所接收的指令和数据转发至合适的其它芯片设备,并且通过例如410a–410d的MIB或Mic信道328将指令和数据从其它芯片设备路由到芯片设备100中的目的部件。根据至少一个方面,芯片间互连接口130包括控制器435、缓存437、多个串行器/解串器(SerDes)单元439。例如,利用24个SerDes单元439,芯片间互连接口130具有高达300吉符号每秒的带宽(Gbaud)。根据至少一个方面,芯片间互连接口带宽或SerDes单元439灵活地分布在将芯片设备100耦合到其它芯片设备的分离的链路之间。每个链路与一个或多个I/O端口相关联。例如,在芯片设备时具有四个芯片设备的多芯片系统的部分的情况下,芯片间互连接口130具有三个全双工链路-三个其它芯片设备的每个对应一个-每个全双工链路具有100Gbaud的带宽。替代地,带宽在三个链路之间可以是不相等地分布的。在另一种情况下,芯片设备100是具有两个芯片设备的多芯片系统的部分,芯片间互连接口130具有一个全双工链路,带宽等于300Gbaud。
控制器435被配置成与核心处理器201以及共享缓存存储器控制器115交换消息。控制器435也被配置成分类信道的输出数据消息,形成包括该数据消息的数据块,并且通过输出端口传输数据块。控制器435也被配置成与多芯片系统中的其它芯片设备中的类似控制器进行通信。所传输的数据块也可以被存储在重试缓冲区437,知道数据块的接收被接收设备确认。控制器435也被配置成分类输入数据消息,形成该数据消息的块,并且将所形成的块路由到合适的总线或信道。
TAD结构
图5是图示了根据至少一个示例实施例的单个标签和数据单元(TAD)500的结构的图。根据至少一个示例设计,每个TAD 500包括两个四方组(quad)501。每个四方组501包括多个飞行中(in-flight)的缓冲区510,被配置成存储存储器地址和四个方形单元520a–520d,也被单独地或集体地称为520。每个TAD组501和相应的飞行中的缓冲区510耦合到与缓存存储器控制器115相关联的共享缓存存储器标签511。根据芯片设备100的至少一个示例设计,每个四方组包括16个飞行中的缓冲区510。本领域技术人员将理解,飞行中的缓冲区的数目可以被选择,例如由芯片设备100的生产者或购买者所选择。根据至少一个方面,飞行中的缓存被配置成从附加信道212和/或耦合到飞行中的缓冲区510的MIB 410来接收数据块地址。也就是说,与操作相关联的数据块地址被存储在飞行中的缓冲区510。飞行中的缓冲区也被配置成通过无效信道211、提交信道214、和/或耦合到TAD 500的MOB 420来发送数据块地址。也就是说,如果数据块被无效,对应的地址被才能够从飞行中的缓冲区510通过无效信道211或如果无效将发生在另一个芯片设备时的MOB 420被发送到具有数据块的拷贝的核心处理器。而且,如果数据块是由共享缓存存储器控制器115所执行的操作的主题,对应的地址通过提交信道214或MOB 420被发送到被请求执行该操作的执行的核心处理器。
每个四方单元520包括多个填充缓冲区521、多个存储缓冲区523、数据阵列525、以及多个受害(victim)缓冲区527。根据至少一个方面,填充缓冲区521被配置成存储与对应请求相关联的响应数据用于通过耦合到TAD 500的填充信道215而发送到一个或多个核心处理器201。填充缓冲区521也可被配置成通过存储信道214或耦合到TAD 500的MIB 410来接收数据。数据通过MIB 410在填充缓冲区521处被接收,例如如果响应于请求的数据驻留于另一个芯片设备中。填充缓冲区521也从数据阵列525或从主要存储器中接收数据,主要存储器例如是通过对应的LMC 117附加到芯片设备100的DRAM。根据至少一个方面,受害缓冲区527被配置成存储在数据阵列525中的其它缓存块所替代的缓存块。
存储缓冲区523被配置成维护数据用于在数据阵列525在存储。存储缓冲区523也被配置成从存储信道213或耦合到TAD 500的MIB 410接收数据。如果将被存储的数据是从远程芯片设备被发送的,数据通过MIB被接收。在不同四方单元520中的数据阵列525是共享缓存存储器110的基本存储器部件。例如,与四方组501相关联的数据阵列525具有1兆比特(MB)的累积存储能力。因此,每个TAD具有2MB的存储能力,而共享缓存存储器110具有16MB的存储能力。
本领域技术人员将理解,关于芯片设备10的架构,多个核心处理器201、多个群105、多个TAD、共享缓存存储器110的存储容量、以及芯片间互连接口130的带宽被视为可被芯片设备100的生产商或购买者所设置的设计参数。
多芯片架构
芯片设备100的架构一般地以及芯片间互连接口130特别地允许多个芯片设备被耦合到彼此并且作为具有比单个芯片设备100的计算和存储器容量更大的计算和存储器容量的单个系统来进行操作。特别地,芯片间互连接口130与芯片间互连接口协议一起使得定义消息集合用于在不同节点之间的通信,允许在多芯片或多节点系统内的也被成为节点的芯片设备之间的资源透明共享。
图6A-6C是根据至少一个示例实施例的不同多节点系统的概览图。图6A示出了具有通过芯片间互连接口链路610被耦合在一起的两个节点100a和100b的多节点系统600a。图6B示出了具有三个分离的节点100a-100c,每对节点通过相应的芯片间互连接口链路610被耦合。图6C示出了具有四个分离的节点100a-100d的多节点系统600c。多节点系统600c包括6个芯片间互连接口链路610,每个链路耦合相应的节点对。根据至少一个示例实施例,多节点系统(在后文中也被成为600)被配置成通过耦合节点对的相应芯片间互连接口链路来提供在多节点系统中的任何节点对之间的点到点通信。本领域技术人员将理解,多节点系统600中的节点数目可以大于4。根据至少一个方面,多节点系统中的节点数目可以依赖于由每个节点内的芯片间互连接口130所支持的多个点到点连接。
除了芯片间互连接口130和多节点系统中的节点对之间的点到点连接,芯片间互连接口协议定义被配置成支持节点间存储器一致性、节点间资源共享、以及与节点相关联的硬件部件的跨节点访问的消息集合。根据至少一个方面,存储器一致性方法、用于排队和同步工作项目的方法、以及访问节点部件的方法在芯片设备内被实现以增强在对应的多节点系统内的操作。特别地,下文中所描述的方法和技术被设计以增强操作的处理速度并且避免在多节点系统中的硬件部件之间的冲突情况。因此,通常作为执行处理操作的部分的、在单个芯片设备内被实现的技术和过程在硬件中被扩展到多芯片设备和节点。
本领域技术人员将理解的是,上文的芯片设备架构经由芯片间互连接口130提供新的系统可扩展性选择。在很大程度上,芯片间互连接口130允许多个芯片设备作为一个一致性系统来起作用。例如,使用具有48个核心处理器201、高达256GB的DRAM、高达400Gbaud全双工容量的基于SerDes的I/O、以及各种处理器的芯片设备形成四节点系统,对应的四节点系统按比例增加到192个核心处理器、1太字节(TB)的DRAM、1.6太波特(Tbaud)的I/O能力、以及四倍的协处理器。在四节点系统内的核心处理器被配置成访问所有的DRAM、I/O设备、协处理器等,因此该四节点系统像具有单个芯片设备的四倍的能力的单节点系统那样来操作。
工作调度和存储器分配
多节点系统600的硬件能力是在多节点系统600中的每个节点设备的硬件能力的多倍。然而,为了相较于单个芯片设备的多节点系统600中的硬件能力的增加以积极地反映在多节点系统600的性能上,用于以将多节点架构考虑在内的方式运用处理操作的方法和步骤在多节点系统600内的芯片设备中被使用。特别地,允许在多节点系统600的不同芯片设备的核心处理器之间分配工作负载的用于工作项目的排队、调度、同步和排序的方法被采用。
根据至少一个示例实施例,芯片设备100包括能够支持工作排队、调度、同步和排序的硬件特征。这些硬件特征包括调度/同步/排序(SSO)单元、自由池分配器(FPA)单元、分组输入(PKI)单元、以及分组输出(PKO)单元,其一起提供支持有效工作项目的分布和调度的框架。通常,工作项目是对一些数据上所执行的软件程序或处理程序。
图7是根据至少一个示例实施例的在多节点系统600内处理工作项目的框图。为了简便,只有多节点系统的两个节点100a和100b被示出,然而多节点系统600可以包括多于两个节点。在图7的示例中,节点100a包括PKI单元710a、FPA单元720a、SSO单元730a、以及PKO单元740a。这些硬件单元是芯片设备100a的协处理器。特别地,SSO单元730a是提供工作项目的排队、调度/去调度以及同步的协处理器。节点100a也包括多个核心处理器201a和共享缓存存储器110a。节点100a也通过共享缓存存储器110a或对应的控制器115a被耦合到例如DRAM的外部存储器790a。多节点系统600包括另一个节点100b,100b包括FPA单元720b、SSO单元730b、PKO单元740b、多个核心处理器201b、以及具有对应的控制器115b的共享缓存存储器110b。共享缓存存储器110b和对应的控制器115b被耦合到与节点100b相关联的外部存储器790b。在下文中,当硬件部件一般性地被提到并且不与特定节点连接时,例如硬件部件数字中的“a”或“b”的特定节点的指示被省略。
工作项目可以由例如PKI单元710、PKO单元740、PCIe等的硬件单元或运行在核心处理器201上的软件所创建。例如,一经接收数据分组(1),PKI单元710a扫描所接收的数据分组并且确定将在数据分组上被执行的处理操作或工作项目。特别地,PKI单元710a创建表示将被执行的工作项目的工作队列入口(WQE)。根据至少一个方面,WQE包括工作队列指针(WQP)、组的指示、队列、标签类型、以及标签。替代地,WQE可以由例如在多芯片系统600的核心处理器201的一个核心处理器中运行的软件创建以及对应的指针WQP被传送到充当工作源的协处理器150。
WQP指向WQE被存储的存储器位置。特别地,在(2)处,PKI单元710a从FPA单元720a请求自由缓冲区指针,并且将WQE存储(3)在由FPA单元720a所返回的指针所指示的缓冲区。该缓冲区可以是在共享缓存存储器110a或外部存储器790a中的存储器位置。根据至少一个方面,每个FPA单元720被配置成维护自由缓冲区指针池的例如K的数目。因此,核心处理器201和协处理器150可以通过从FPA单元720请求指针来分配缓冲区或通过向FPA单元返回指针来释放缓冲区。一经请求并且从FPA单元720a接收指针,PKI单元710a存储(3)在由所接收的指针所指示的缓冲区中所创建的WQE。从FPA单元720a所接收的指针被用来指向WQE被存储的缓冲区或存储器位置的WQP。WQE然后(4)被PKI单元710a指定到多节点系统600中的例如730a的SSO单元。特别地,WQP被提交给SSO单元730a的多个组或队列中的组或队列。
根据至少一个示例实施例,多节点系统600中的每个SSO 730使用例如L个组的多个组来调度工作项目,在一组流上独立于所有其它组来工作。组、或队列提供在不同的核心处理器201上执行不同的功能的方式并且提供服务质量(QoS),即使多个核心处理器共享相同的SSO单元730a。例如,分组处理可以从第一组核心处理器用管道输送到第二组核心处理器,第一组执行第一阶段工作并且第二组执行下一阶段工作。根据至少一个方面,SSO单元730被配置成实现这些组之间的静态优先级和与组密切相关的仲裁(arbitration)。SSO单元730中的多个组的使用允许SSO 730在任何可能的时候并行地调度工作项目。根据至少一个方面,每个被使得能够创建工作项目的工作源,例如PKI单元710、核心处理器201、PCIe等被配置成维护在多节点系统600的所有SSO单元中可用的组或队列的列表。因此,每个工作源利用所维护的列表以向SSO单元730中的组指定工作项目。
根据至少一个示例实施例,SSO单元730中的每个组通过对应的标识符而被标识。假设在多节点系统600中具有n个SSO单元730,例如在每个节点100中有一个SSO单元730,并且在每个SSO单元730中具有L个组。为了唯一地标识在所有的SSO单元730中的所有的组或队列,每个组标识符包括至少log2(n)比特以标识与组相关联的SSO单元730以及log2(L)比特以标识在对应的SSO单元730内的组。例如如果具有四个节点,每个节点具有单个的SSO单元730,单个的SSO单元730具有254个组,每个组可以使用10比特标识符而被标识,其中的两个比特标识与该组相关联的SSO单元730并且其它的8个比特来区分相同的SSO单元730内的组。
在(4)处接收WQP之后,SSO单元730a被配置成向核心处理器201指派工作项目用于处理。特别地,核心处理器201从SSO单元730a请求工作并且SSO单元730a通过将工作项目指派到核心处理器201的一个核心处理器来响应。特别地,SSO单元730被配置成用WQP指向与该工作项目相关联的WQE。SSO单元730a可以如(5)所示的将工作项目指派到相同的节点730a的核心处理器201a。替代地,如在(5”)SSO单元730a可以将工作项目指派到例如在远程节点(100b)中的核心处理器(例如201b)。根据至少一个方面,每个SSO单元730被配置成向多节点系统600中的任何核心处理器201指派工作项目。根据又一个实施例,每个SSO单元730被配置成仅向与SSO单元730在相同的节点100上的核心处理器201指派工作项目。
本领域技术人员将理解的是,单个SSO单元730可以被用来调度多节点系统600中的工作。在这样的情况下,所有的工作项目被发送自单个SSO单元730并且多节点系统600中的所有的核心处理器201请求以及从相同的单个SSO单元得到所指派的工作。替代地,多个SSO单元730在多节点系统600中被使用,例如每个节点100中有一个SSO单元730或节点100的子集中的每个节点100具有一个SSO单元730。在这种情况下,多个SSO单元730被配置成独立地操作并且没有同步在不同的SSO单元730之间被执行。而且,SSO单元730的不同的组或队列彼此独立地进行操作。在每个节点100包括对应的SSO单元730的情况下,每个SSO单元可以被配置成仅向相同的节点100中的核心处理器201指派工作项目。替代地,每个SSO单元730可以向多节点系统600中的任何核心处理器指派工作项目。
根据至少一个方面,SSO单元730被配置成将与相同的工作流相关联的工作项目指派到相同节点中的核心处理器,相同的工作流例如是相同的通信会话、相同用户、相同目的点等。SSO单元730还可以被配置成向相同节点100中的核心处理器201的子集指派与相同工作流相关联的工作项目。也就是,即使在给定的节点100内,SSO单元730可以将与给定工作流和/或给定处理阶段指定到核心处理器201的第一子集,而将与不同的工作流相关联的工作项目或相同工作流的不同处理阶段指定到相同节点100中的核心处理器201的第二子集。根据又一个方面,核心处理器的第一子集和核心处理器的第二子集与多节点系统600的不同节点100相关联。
假设多阶段处理操作与数据分组相关联,如在(5)或(5”)中所示出的,一旦核心处理器201被选择以处理第一阶段工作项目并且然后创建新的工作项目,例如第二阶段工作项目,并且对应的指针被发送到不同于第一组或队列的第二组或队列,第一阶段工作项目被提交到第一组或队列。第二组或队列可以与如在(5)中所指示的相同SSO单元730相关联。替代地,处理第一阶段工作项目的核心处理器201可以在不同于被用于调度第一阶段工作项目的那个单元的SSO单元730上调度第二阶段工作项目。使用多个组或队列来独立于彼此地处理对应工作项目支持在不同组或SSO单元730被执行的同步的情况下的工作排序。
在(6)处,第二阶段工作项目被指派给节点100a中的第二核心处理器201a。第二核心处理器201a处理工作项目并且然后将它提交给PKO单元740a,例如由(7)所指示的,如果与数据分组相关联的所有工作项目被执行。例如740a或740b的PKO单元被配置成从存储器读数据并且将它发送出芯片设备(参见(8)和(8’))。特别地,例如740a或740b的PKO单元从核心处理器201接收到数据分组的指针,并且使用该指针来从存储器取回数据分组。例如740a或740b的PKO单元也可以释放缓冲区,在该处通过将指针返回到例如720a或720b的FPA单元而被存储在存储器中。
本领域技术人员将理解,存储器分配和工作调度可以被视为两个分离的过程。存储器分配可由例如PKI单元710、核心处理器201、或多节点系统的另外的硬件部件来执行。执行存储器分配的部件被称作存储器分配器。根据至少一个方面,每个存储器分配器维护在多节点系统600的FPA单元720中可用的自由缓冲区指针池的列表。假设在多节点系统600中具有m个FPA单元,每个具有K个自由缓冲区指针池。为了在所有的FPA单元720中唯一地标识所有的池,每个池标识符包括至少log2(m)比特以标识与池相关联的FPA单元720以及至少log2(K)比特来标识给定对应FPA单元720内的池。例如,如果有四个节点,每个节点具有单个的FPA单元,该单个FPA单元具有64个池,每个池用8比特标识符来标识,其中2比特标识与该池相关联的FPA单元720,并且6个其它比特来区分相同FPA单元720内的池。
根据至少一个示例实施例,存储器向FPA单元720发送用于自由缓冲区指针的请求并且作为响应而接收自由缓冲区指针,如由(2)所指示的。根据至少一个方面,该请求包括池的指示,自由缓冲区指针将从该池中被选择。存储器分配器知道自由缓冲区池和对应的FPA单元720之间的联系。通过从FPA单元720接收自由缓冲区指针,由该指针所指向的对应缓冲区或存储器位置将不再自由,而是被配。也就是,一经由存储器分配器接收指针,存储器分配可以被认为是完成的。当指针被返回到FPA单元720时,相同的缓冲区或存储器位置然后被存储器分配器或诸如PKO单元740的其它部件所释放。
当调度工作项目时,例如PKI单元710、核心处理器201、PCIe等的工作资源可以被配置成仅通过本地SSO单元730来调度工作项目,本地SSO单元730例如是与工作源驻留于相同节点100中的SSO单元。在这种情况下,如果由工作源所选择的组或队列不属于本地SSO单元730,指针被转发到例如不与工作源驻留于相同节点100的、与所选择的组相关联的远程SSO单元,并且然后该工作项目由远程SSO单元730所指派,如(4’)所指示的一旦WQE指针的转发在(4’)被完成,由(5)-(9)所指示的操作可以被由(5’)-(9’)所指示的远程节点中的相似的操作所代替。
本领域技术人员应该理解,多节点系统内的存储器分配可根据不同的实施例而被实行。首先,与每个FPA单元相关联的自由缓冲区池可以以这样的方式而被配置:每个FPA单元720维护对应于与FPA单元720所关联的相同节点100的缓冲区或存储器位置的池的列表。也就是说,与给定FPA单元720相关联的池中的指针指向驻留于在与FPA单元720处于相同的节点100中的共享缓存存储器110缓冲区或存储器位置,或在FPA单元720所驻留的相同节点100附的外部存储器790。替代地,由给定FPA单元所维护的池的列表包括指向缓冲区或存储位置的指针,该缓冲区或存储位置与例如不同于FPA单元720所在的节点100的远程节点100相关联。也就是说,任何FPA自由列表可以从多节点系统600的任何节点100持有任何指针到任何缓冲区。
第二,单个FPA单元720可以在多节点系统600内被使用,在该情况下,分配缓存时针对自由缓冲区指针的所有请求被指向该单个FPA单元,并且当释放缓存时所有指针被返回至单个FPA单元720。替代地,多个FPA单元720在多节点系统600中被使用。在这种情况下,多个FPA单元720彼此独立地操作,而很少或没有FPA单元间通信被利用。根据至少一个方面,多节点系统600的每个节点100包括对应的FPA单元720。在这种情况下,每个存储器分配器被配置成通过本地FPA单元来分配存储器,本地FPA单元例如与存储器分配器一样驻留于相同的节点100上。如果在自由缓冲区指针请求中所指示的池从存储器分配器到本地FPA单元的请求属于远程FPA单元720,例如不与存储器分配器驻留于相同的节点100,如((2’)所指示的,自由缓冲区指针请求从本地FPA单元720被转发到远程FPA单元720,并且响应通过本地FPA单元720被发送回存储器分配器。
自由缓冲区指针请求的转发是通过MIC和MOC信道进行的,假定转发基于与两个不同节点100相关联的两个协处理器之间的通信。MIC和MOC信道328和329在驻留于不同节点100上的FPA单元720之间转发自由缓冲区指针确保了该转发处理不增加对现存信道的跨信道依赖。替代地,存储器分配器可被配置成通过多节点系统600中的任何FPA单元720来分配存储器。
第三,当分配针对与工作项目相关联的存储器时,存储器分配器可以被配置成在工作项目被分配的相同的节点100中分配存储器。即,存储器在核心处理器201处理工作项目所驻留的相同节点被分配,或者在工作项目被调度到的SSO单元730相同的节点100中。本领域技术人员应该理解,工作调度可以在存储器分配之前被执行,在该情况下工作项目被指派到的相同的节点100中所分配的存储器。然而,如果存储器分配在工作调度之前被分配,则工作项目被指派到相同的节点100,存储器被分配用于对应的数据。替代地,将存储对应于工作项目的数据的存储器可以被分配到不同的节点100,而不是工作项目被分配到的那个节点100。
本领域技术人员应该理解,利用例如600的多节点系统的工作调度和存储器分配可以根据本文所描述的实施例的不同组合而被执行。而且,本领域技术人员将理解,在图7中所示出的所有跨节点通信或参考关于本文中所描述的工作调度实施例和/或存储器分配实施例,是通过与在跨节点通信中所涉及的节点100相关联的芯片间互连接口130以及耦合这些节点100的芯片间接口链路610而被处理的。
多节点系统中的存储器一致性
与例如600的相同多节点系统中的对应节点或芯片设备100相比,例如600的多节点系统包括更多的核心处理器201和例如共享缓存存储器110以及外部存储器790的存储器部件。因此,在例如600的多节点系统内实现存储器一致性过程相较于将该过程在单个芯片设备100中实现将更具挑战性。而且,利用例如600的多节点系统全局地实现存储器一致性将包括跨节点通信,这将提高潜在延迟问题以及与在例如600的多节点系统中的寻址硬件资源相关联的问题。考虑这些挑战,针对例如600的多节点系统的有效和可靠的一致性方法是对于配置例如600的多节点系统的以作为具有显著地更多资源的单个节点或芯片设备进行操作的重要步骤。
图8是描绘根据至少一个示例实施例的多节点系统600中的缓存和存储器层级的框图。为了简便,图8仅示出了多节点系统600的两个芯片设备或节点100a和100b。该简化不应被解释成对特征的限制。也就是说,多节点系统600不应该被限制成两节点系统,本文中所描述的存储器一致性实施例也不是将被限制性地与仅与两个节点的系统相关联。根据至少一个方面,每个节点110a、100b、或一般性的100,被耦合到例如被称为790a、790b或一般性的790的DRAM的外部存储器。而且,每个节点100包括例如201a、201b或一般性的201的一个或多个核心处理器,以及例如115a、115b或一般性的115的共享缓存存储器控制器。每个存储器控制器115包括和/或被配置成管理对应的共享缓存储存器110a、110b或一般性的110(在图8中未示出)。根据至少一个示例实施例,多节点系统600的例如100a和100b的每对节点通过芯片间互连接口链路被耦合到彼此。
为了简便,单个核心处理器201被示出在图8中的每个节点100a和100b。本领域技术人员将理解的是多节点系统600中的节点100的每个节点可以包括一个或多个核心处理器201。核心处理器201的数目在相同的多节点系统600中的一个节点100可以不同于另一个节点100。根据至少一个方面,每个处理器201包括中央处理单元801a、801b或一般性的801,以及本地缓存存储器820a、820b或一般性的820,诸如层1(L1)缓存。本领域技术人员应当理解的是核心处理器201可以包括多于一层的缓存作为本地缓存存储器。而且,与多节点系统600相关联的许多硬件部件,例如在图1-5和7中所示出的部件,在图8中为了简便的好处而被省略。
根据至少一个方面,与位于耦合到对应节点100的外部存储器790内的存储器相关联的数据块可以具有同时地位于多节点系统600内的多个拷贝。耦合到存储数据块的外部存储器790的对应节点100被定义成针对该数据块的本地节点。为了简便的好处,存储在外部存储器790a的数据块在本文中被考虑。因此,节点100a是针对数据块的本地节点,并且多节点系统600的例如100b的任何其它节点是远程节点。数据块的拷贝,在本文中也被称为与数据块相关联的缓存块,可以位于本地节点100a的核心处理器201a内的共享缓存存储器110a或本地缓存存储器820a。这些缓存块被称为本地缓存块。与数据块相关联的缓存块也可以位于例如100b的远程节点的例如201b的核心处理器内的例如110b的共享缓存存储器或例如820b的本地缓存存储器。这些缓存块被称为远程缓存块。存储器一致性或数据一致性,目的在于强制这些拷贝是最新的。也就是说,如果一个拷贝在给定时间点被修改,其它拷贝是无效的。
根据至少一个示例实施例,与数据块相关联的存储器请求或任何对应的缓存块,例如是由多节点系统160的核心处理器201或IOB 140来发起的。根据至少一个方面,IOB140表示对应的I/O设备或代理150来发起存储器请求。在本文中,存储器请求是与数据块或任何对应的缓存块相关联的消息或命令。该请求包括例如读/加载操作以由请求节点从另一个节点请求数据块的拷贝。存储器请求还包括存储/读操作以存储存储器中的缓存块或缓存块的部分。存储器请求的其它示例被列出在表1-3中。
根据第一场景,例如发起存储器请求的201a的核心处理器或例如140a的IOB驻留于本地节点100a中。在这种情况下,存储去请求从例如核心处理器201a或IOB 140的请求代理被直接地发送到本地节点100a的共享缓存存储器控制器115a。如果存储器请求被确定为将触发以数据块相关联的其它缓存块的无效,本地节点100a的共享缓存存储器控制器确定与数据块相关联的任何其它缓存块是否被缓存在本地节点100a中。存储器请求触发无效的示例是存储/写操作,其中数据块的经修改的拷贝将被存储在存储器中。存储器请求触发无效的另一个示例是请求节点的数据块的专有拷贝请求。接收该请求的节点使得数据块的驻留于其它芯片设备中而不是请求节点中的拷贝被无效,并且将数据块的专有拷贝提供给请求节点(参见附图16和下文中的对应描述,其中RLDX命令表示针对数据块的专有拷贝的请求)。
根据至少一个方面,本地节点100a的共享缓存存储器控制器115a首先检查与数据块关联的任何其它缓存块是否被缓存在与本地节点100a的核心处理器201a或IOB 140、而不是请求代理相关联的本地缓存块820a。如果该缓存块被确定为存在于本地节点100a的核心处理器201a或IOB 140、而不是请求代理中,本地节点的共享缓存存储器控制器115a发送无效请求以无效该缓存块。本地节点100a的共享缓存存储器控制器115a可以更新与被存储在本地节点的共享缓存存储器110中的数据块相关联的本地缓存块。
根据至少一个示例实施例,本地节点100a的共享缓存存储器控制器115a也检查与数据块相关联的任何其它缓存块是否被缓存在例如100b的远程节点中,而不是本地节点100a。如果任何远程节点被确定包括与数据块相关联的缓存块,本地节点100a的共享缓存存储器控制器115a向所确定的远程节点发送无效请求以包括该缓存块。特别地,本地节点100a的共享缓存存储器控制器115a被配置成向所确定的例如100b的远程节点的例如115b的共享缓存存储器控制器通过芯片间互连接口链路610发送无效请求以包括与数据块相关联的缓存块。例如100b的远程节点的例如115b的共享缓存存储器控制器然后本地确定哪个本地代理包括与数据块相关联的缓存块,并且向该代理发送无效请求。例如100b的远程节点的例如115b的共享缓存存储器控制器也可以无效由它的对应共享缓存存储器所存储的数据块相关联的任何缓存块。
根据第一场景,请求代理驻留于例如100b的远程节点,而不是本地节点100a。在这种情况下,请求首先被发送到作为请求代理的、驻留于例如100b的相同节点中的例如115b的本地共享缓存存储器控制器。例如115b的本地共享缓存存储器控制器被配置成将存储器请求转发到本地节点100a的共享缓存存储器控制器115a。根据至少一个方面,例如115b的本地共享缓存存储器控制器也检查针对与数据块相关联的任何缓存块,该数据块可以被缓存在其它代理内,而不是例如100b的相同本地节点的请求代理,并且发送无效请求以无效这类潜在的缓存块。例如115b的本地共享缓存存储器控制器也可以针对任何缓存块进行检查以及无效该任何缓存块,该任何缓存块与数据块相关联,被它的对应共享缓存存储器所存储。
一经接收存储器请求,本地节点100a的共享缓存存储器控制器115a针对与数据块相关联的任何缓存块在本地节点100a内进行本地检查,并且向承载该缓存块(如果有的话)的本地节点100的代理发送无效请求。本地节点100a的共享缓存存储器控制器115a也可以无效与数据块相关联的、被存储在本地节点100a中的它的对应共享缓存存储器中的缓存块。根据至少一个示例实施例,本地节点100a的共享缓存存储器控制器115a被配置成检查任何远程节点、而不是发送存储器请求的节点是否包括与数据块相关联的缓存块。如果另一个远程节点被确定为包括缓存块,本地节点100a的共享缓存存储器控制器115a向其它远程节点100的共享缓存存储器控制器115发送无效请求。其它远程节点100的共享缓存存储器控制器115通过向对应本地代理发送无效请求或通过无效被存储在对用本地共享缓存存储器的缓存块来进行对与数据相关联的任何本地缓存块进行无效。
根据至少一个示例实施例,本地节点100a的共享缓存存储器控制器115a包括远程标签(RTG)缓冲区或数据字段。RTG数据字段包括可指示承载与数据块相关联的缓存块的多节点系统600的节点100的信息。根据至少一个方面,跨节点缓存块无效是由本地节点100a的共享缓存存储器控制器115a所管理的,本地节点100a的共享缓存存储器控制器115a一经检查RTG数据字段,通过芯片间互连接口请求610向被确定为包括与数据块相关联的缓存块的远程节点100的共享缓存存储器控制器115发送无效请求。被确定为包括与数据块相关联的缓存块的远程节点100的共享缓存存储器控制器115然后本地处理任何这类缓存块9的无效。
根据至少一个示例实施例,多节点系统600的每个节点100内的缓存块的无效是由相同节点的本地共享缓存存储器控制器115本地处理的。根据至少一个方面,对应节点100的每个共享缓存存储器控制器115包括本地数据字段,在本文中也被称为BUSINFO,可指示在承载与数据块相关联的缓存块的相同对应节点中例如核心处理器201或IOB 140的代理。根据至少一个方面,本地数据字段根据两个不同的模式而操作。因此,本地数据字段的第一子集被指定以指示本地数据字段的操作模式。本地数据字段的比特的第二子集可指示与被缓驻留相同节点100内的数据块相关联的一个或多个缓存块,如果有的话。
根据本地数据字段的第一模式,比特的第二子集中的每个比特对应于相同节点100中的核心处理器的群105,并且可指示群中的任何核心处理器201是否可指示与数据块相关联的缓存块。当根据第一模式进行操作时,无效请求被本地共享缓存存储器控制器115发送至被确定为包括与数据块相关联的缓存块(复数)的群105内的所有核心处理器201。群105中的每个核心处理器201接收无效请求并且检查它的对应本地缓存820是否包括与数据块相关联的缓存块。如果是,这类缓存块被无效。
根据本地数据字段的第二模式,比特的第二子集可指示在相同节点内的核心处理器201承载与数据块相关联的缓存块。在这种情况下,无效请求可以被发送到由比特的第二子集所标识的核心处理器201或代理,并且然后无效与数据块相关联的、被存储在它的本地缓存存储器820中的缓存块。
例如,考虑在每个芯片设备中的48个核心处理器,BUSINFO字段可以具有48比特的大小,一个比特针对每个核心处理器。该方法是耗费存储器的。替代地,利用9比特的BUSINFO。通过使用9个比特,一个比特被用于每个群150,加上一个额外的比特被用于指示如上文所讨论的模式。当第9个比特被设置时,其它的8个比特选择一个CPU核,该CPU核的缓存存储器持有数据块的拷贝。当第9个比特清楚时,其它8个比特的每个比特表示8个群105a–105h中的一个群,并且当群中的任何核心处理器可以持有数据块的拷贝时被设置。
根据至少一个方面,触发与数据块相关联的每个缓存块的无效的存储器请求包括消息或指令,消息或指令指示与数据块相关联的缓存块被修改,例如被请求代理、消息、或命令、指示针对数据块的专有拷贝请求等所修改。
本领域技术人员应当理解,当实现本文所描述的数据一致性的实施例时,在本地节点处理检查、和/或无效本地缓存块相对于远程缓存块的顺序可以根据不同的实现而不同地被设置。
管理多节点系统中的I/O设备的访问
由于多种原因,在例如600的多节点系统中设计和实现针对硬件资源共享的可靠的处理比在单个芯片设备中设计这种处理更具挑战性。特别地,由例如600的多节点系统的例如核心处理器201和/或协处理器150的任何代理来支持例如600的多节点系统的I/O设备的可靠访问造成很多挑战。首先,由驻留于多节点系统600的不同节点100中的不同代理来访问I/O设备可以导致由不同代理同时尝试访问I/O设备,导致了拖延到I/O设备的冲突。第二,由驻留于多节点系统600的不同节点100中的不同代理的访问请求的潜在同步可以导致严重的延迟。在下文中,描述了针对到例如600的多节点系统的I/O设备的有效访问。
图9是图示了根据至少一个示例性实施例的多节点系统900的简化概览的框图。为了简化的目的,图9仅示出了例如多节点系统的例如910a、910b或一般性的910的两个节点,并且仅例如910b的一个节点被示出包括I/O设备905。该简化将不被解释成对本文所描述的实施例的限制特征。实际上,多节点系统900可以包括任何数目的节点910,并且多节点系统的任何节点910可以包括零或多个I/O设备905。多节点系统900的每个节点910可以包括一个或多个核心处理器,例如910a、910b或一般性的910。根据至少一个示例实施例,多节点系统900的每个核心处理器901可以访问多节点系统900的任何节点910中的任何I/O设备905。根据至少一个方面,由驻留于第二节点910上的核心处理器901对于驻留于第一节点910中的I/O设备的跨节点访问通过耦合第一节点和第二节点910的芯片间互连接口链路610以及第一节点和第二节点910的每个节点的芯片间互连接口(在图9中未示出)而被执行。
根据至少一个示例实施例,多节点系统900的每个节点910包括被配置成排序到多节点系统900中的I/O设备905的访问请求的一个或多个队列909a、909b或一般性的909。在下文中,包括例如905的I/O设备的例如910b的节点被称作例如910b的I/O节点,I/O设备是一个或多个访问请求的主体。任何其它节点,多节点系统900的例如910的任何其它节点简称远程节点,例如910a。
图9示出了指向相同的I/O设备905的两个访问请求915A和915b,一般情况下也被称为915。在这种情况下,两个或两个以上的同时的访问请求915被指向相同的I/O设备905,可能会发生冲突,例如导致停止I/O设备905。此外,如果两个访问905允许由相同的I/O设备同时处理,每个访问可能会最终使用相同的数据段的不同版本。例如,由核心处理器901中的一个核心处理器所访问的数据段可以由访问相同I/O设备905的另一个核心处理器901同时修改。
如图9所示,远程节点910a的核心处理器901a发起访问请求915a,也被称为远程访问请求915a。远程访问请求915a被配置为遍历在远程节点910a中的队列909a和在I/O节点910b中的队列909b。被远程访问请求所遍历的队列909a和909b被配置成对去往相应的I/O设备905的访问请求进行排序。也就是说,根据至少一个方面,每个I/O设备905有在具有代理的每个节点910中的相应的队列909,队列909尝试访问相同的I/O设备905。另外,I/O节点的核心处理器901b发起访问请求915b,也被称为本地访问请求915b。本地访问请求915b被配置成在到达I/O设备905之前仅遍历队列909b。队列909b被指定为对从I/O节点910b中的代理到I/O设备905的本地访问请求以及从远程节点(复数)到I/O设备905的远程访问请求进行排序。队列909a被配置为仅对在相同的远程节点910a中的代理所发起的访问请求进行排序。
根据至少一个示例实施例,被指定为管理到给定的I/O设备905的访问的一个或多个队列909是被多节点系统900中的代理已知的。当代理发起去往给定I/O设备905的第一访问请求时,多节点系统900中的其它代理被阻止朝向相同的I/O设备905发起新的访问请求,直到第一访问请求在被指定来管理到I/O设备905的访问请求的一个或多个队列909中排队。
图10是图示了根据至少一个示例实施例的框图,与发起去往给定的I/O设备的访问请求相关联的时间轴。根据至少一个方面,多节点系统900的两个核心处理器核X和核Y试图访问相同的I/O设备905。核X在1010发起去往给定I/O设备第一个访问请求并且启动同步写操作(SYNCW)。SYNCW操作被配置为强制存储操作,在代码中的另一个存储操作前,以在其它存储操作之前被执行。前面的存储操作被配置为在多节点系统900的存储部件中设置标志。根据至少一个方面,当标志被设置时,该标志可指示访问请求被发起但是还未被排队。标志对多节点系统900中的尝试访问给定I/O设备的任何代理来说是可访问的。
在1020,核Y被配置为检查标志。由于标志被设置,在1020核Y维护监视标志。一旦第一访问请求在被指定为管理去往给定I/O设备的一个或多个队列中被排队,标志在1130处被关闭。在1140,核Y检测对标志的修改。因此,核Y发起去往相同给定I/O设备905的第二访问请求。核Y可以启动另一个SYNCW操作,其强制第二成功请求在任何其它接着的访问请求之前被处理。第二个成功请求可再次设置标志。标志将被设置,直到第二访问请求在被指定管理去往给定I/O设备的一个或多个队列中被排队。当标志被设置时,没有其它的代理发起另一个去往相同的给定I/O设备的请求。
根据图10的1130,响应于访问请求被排队,标志被修改。因此,当修改标志值时,将相应的访问请求进行排队的确认由被配置为设置标志的开和/或关的代理或软件所使用。在到达对应目的I/O设备之前,远程访问请求遍历两个队列。在这种情况下,有人可能会问两个队列中的哪个队列发送对访问请求进行排队的确认。
图11A和11B是图示了根据至少一个示例实施例的两个对应排序场景。图11A示出了全局排序场景,其中也被称为全局确认跨节点确认被使用。根据至少一个方面,I/O节点910b中的I/O设备905被远程节点910a的核心处理器901a和I/O节点910b的核心处理器901b所访问。在这种情况下,针对去往I/O设备905的访问请求的有效排序点是在I/O节点910b中的队列909b。有效排序点是发布排队确认的队列。针对I/O节点910b中的核心处理器901b,有效排序点是本地的,因为核901b和有效排序点驻留于I/O节点910b中。然而,针对远程节点910a中的核心处理器901a,有效排序点不是本地的,并且从有效排序点909b发送到远程节点中的核心处理器901a的任何排队确认包括节点间通信。
图11B示出了根据至少一个示例实施例的本地排序场景的场景。根据至少一个方面,访问给定I/O设备905的核心处理器901a碰巧在相同的远程节点910a中。在这种情况下,本地队列909a是针对去往I/O设备906的排序访问请求的有效排序点。换言之,因为去往I/O设备905的排序访问请求是由远程节点910a内的代理所发起的,则一旦该请求在队列909a内被排队,请求然后根据它们在队列909a内被排队。因此,没有从I/O节点中的对应队列909b被发送的确认的需要。通过将排序操作设计成核心处理器901a不等待来自队列909a的确认的方式加速了在该场景中的排序访问请求的处理。因此,仅来自本地有效排序点909a的本地确认被使用。
根据至少一个示例实施例,在仅本地排序场景的情况下,没有确认被使用。也就是,当发起到给定I/O设备905的访问请求时,在远程节点910a内的代理不等待并且不接收确认。代理简单地假设发起的访问请求在本地有效排序点9909a被成功地排队。
根据至少另一个示例实施例,本地确认在仅本地排序场景中被使用。根据至少一个方面,SYNCW操作的多个版本被使用——一个版本是在仅本地排序场景的情况下被使用,并且另一个版本在全局排序场景的情况下被使用。因此,所有的节点间I/O访问包括被发送的排序场景,对应SYNCW场景可以被以这样的方式设计,即代理在发起新的访问求之前不等待确认被接收。
根据又一个示例实施例,数据字段被运行在多节点系统900上的软件所使用以指示仅本地排序场景和/或全局排序场景。针对没有连锁管道阶段(MIPS)芯片设备的微处理器,缓存一致性属性(CCA)可以被用作数据字段以指示排序场景的类型。当该数据字段被使用时,访问给定I/O设备905的代理基于数据字段的值而调整它们的行为。例如,针对例如写操作的给定操作,两个对应命令可以被使用,一个具有确认并且另一个没有,并且数据字段指示哪个命令将被使用。替代地,SYNCW的两个版本被使用,其中一个版本在针对之前访问操作被接收之前从开始即阻止任何随后的访问请求。并且另一个版本不强制等待针对之前访问操作的确认。本领域技术人员应该理解其它的实现也是可能的。
根据至少一个方面,访问请求包括写请求、加载请求等。为了进一步减少多节点系统900中的访问操作的复杂度,用在多节点系统900中的节点间I/O加载操作是免确认的。换言之,假定节点间排队确认已经被使用,一旦加载请求在给定I/O设备处的加载操作被执行,则没有进行另一个确认的需要。
芯片间互连接口协议
除了上文所描述的芯片设备硬件结构,芯片间互连接口协议由多节点系统中的芯片设备所使用。考虑N节点系统,芯片间互连接口协议的目的是使得系统在容量方面表现得比单个芯片设备为大N倍。芯片间互连接口协议通过在多节点系统的节点之间的可靠点到点芯片间互连接口链路来运行。
根据至少一个示例实施例,芯片间互连接口协议包括两个逻辑层协议和可靠的链路层协议。该两层协议是一致性存储器协议,用于处理存储器流量,以及I/O,或配置和状态寄存器(CSR),用于处理I/O流量的协议。逻辑协议在可靠链路层协议之上被使用。
根据至少一个方面,可靠链路层协议提供每对节点具有基于信用的流控制的16个可靠虚拟信道。可靠链路层协议包括大部分地标准基于重试的确认/非确认(ack/nak)协议。根据至少一个方面,可靠链路层协议支持64字节的传输块,每个由例如CRC-24的循环冗余校验(CRC)来保护。根据至少一个示例实施例,硬件以非常细粒度的64比特级别来在虚拟信道之间交织用于最小化请求延迟,即使当芯片间互连接口链路被高度利用时也是这样。根据至少一个方面,可靠链路层协议是非常低开销的,支持通过芯片间互连接口链路的例如高达250吉比特每秒的全双工有效可靠数据传输速率。
根据至少一个示例实施例,也被称为存储器空间协议的逻辑存储器一致性协议被配置成在支持跨节点存储器流量的同时维护缓存一致性。存储器流量被配置成在多个独立虚拟信道(VC)上运行。根据至少一个方面,存储器流量在至少三个VC上运行,该三个VC包括存储器请求(MemReq)信道、存储器转发(MemFwd)信道、以及存储器响应(MemRsp)信道。根据至少一个方面,没有排序在VC之间或在相同VC的子信道内。关于存储器寻址,存储器地址包括在多节点系统内指示节点的比特的第一子集,以及用于在给定节点内寻址存储器的第二子集。例如,针对四节点系统,两个比特被用于指示节点并且42个比特被用于节点内的存储器寻址,因此导致在四节点系统内的44比特物理存储器地址。根据至少一个方面,每个节点包括片上稀疏目录以维护追踪与对应于该节点的存储器块或线相关联的缓存块。
根据至少一个示例实施例,也被称为I/O空间协议的逻辑I/O协议被配置成跨多节点系统来处理I/O设备的访问或I/O流量。根据至少一个方面,I/O流量被配置成在包括I/O请求(IOReq)信道和I/O响应(IORsp)信道的两个独立VC上运行。根据至少一个方面,IOReqVC被配置成维护I/O访问请求之间的顺序。该顺序在上文中关于图9-11B以及上文中对应描述进行了描述。关于I/O空间的寻址,第一数目的比特被用来指示节点,同时第二数目的比特被用来在给定节点内寻址。第二数目的比特可以被分成两部分,第一部分指示硬件目的地并且第二部分表示偏移。例如,在四节点系统中,两个比特被用来指示节点并且四个44个比特被用来在给定节点内寻址。在该44个比特中,仅8个比特被用来指示硬件目的地并且32个比特被用作偏移。替代地,总共49个地址比特被使用,4个比特专用于指示节点,1个比特专用于指示I/O,并且剩余比特专用于指示所选择的节点内的设备和设备中的偏移。
存储器一致性协议
如在图8和上文中的对应描述所示出的,表示数据块的拷贝的每个缓存块具有本地节点。本地节点与存储数据块的例如DRAM的外部存储器相关联。根据至少一个方面,每个本地节点被配置成追踪与多节点系统600中的其它节点相关联的远程缓存存储器中的它的块的所有拷贝。根据至少一个方面,用于追踪远程拷贝或远程共享缓存块的信息被维护在本地节点的远程标签(RTG)中,远程标签(RTG)为远程共享缓存存储器标签的复制。根据至少一个方面,本地节点仅知道与它们的数据块相关联的缓存块。因为在本地中的RTG具有受限的空间,本地节点可以从远程共享缓存存储器中移除缓存块以便在RTG中制造空间。
根据至少一个示例实施例,本地节点跟踪在它的RTG中的对应远程持有的缓存线。被用于跟踪远程持有缓存块或线的信息包括可指示对应远程节点中的远程持有缓存块的状态。所使用的状态包括专有(E)状态、拥有(O)状态、共享(S)状态、无效(I)状态、或处理中(K)状态。E状态指示仅具有在外部存储器790的数据块相关联的一个缓存块,由对应远程节点专有地持有,并且相较于外部存储器790中的数据块,缓存块可以或不可以被修改。根据至少一个方面,E状态的子状态-修改(M)状态也可以被使用。M状态类似于E状态,除了以下情况:相较于外部存储器790中的数据块,对应缓存块的M状态已经被知道将被修改。
根据至少一个示例实施例,缓存块被分成多个缓存子块。在针对与附加到本地节点的外部存储器中的对应数据块相关联的每个缓存块的基础上,每个节点被配置成例如在它的存储器缓存110维护在本文中也被称为脏比特的比特集合。该比特集合或脏比特指示相较于附到本地节点的外部存储器790中的对应数据块,缓存块中的哪些子块(如果有的话)被修改。基于对应的脏比特指示通过芯片间互连接口链路610将被传递(如果远程)到本地节点的将被修改,以及被写回到附到本地节点的外部存储器790。换言之,给定缓存块中的经修改的子块被用于更新对应于该缓存块的数据块。根据至少一个方面,缓存块的分割的使用提供在芯片间互连接口带宽方面的效率。特别地,当远程缓存块被修改,替代传输整个缓存块,仅被修改的子块被传输到其它节点。
根据至少一个示例实施例,当例如ROWNED_MODE的对应标志被设置时,O状态被使用。如果缓存块为在对应节点中的O状态,则另一个节点可以具有对应数据块的另一个拷贝或缓存块。相较于附到本地节点的外部存储器790,缓存块可以或可以不被修改。
S状态指示多于一个节点具有数据块的拷贝或缓存块。状态I指示对应节点不具有附到本地节点的外部存储器中的数据块的有效拷贝或缓存块。K状态被本地节点所使用以指示对应远程节点中数据块的拷贝的状态转移被检测,并且该转移仍在处理中,即未被完成。根据至少一个示例实施例,K状态被本地节点所使用以确保所检测的转移在与相同数据块的相同或其它拷贝相关联的任何其它操作被执行之前被完成。
根据至少一个方面,状态信息被维护在每个远程节点基础上的RTG中。换言之,如果与相同数据块相关联的一个或多个缓存块在一个或多个远程节点中,RTG将知道哪个节点具有它以及在每个远程节点中的每个缓存块的状态。根据至少一个方面,当节点读或写它不拥有的缓存块,例如对应状态不是M、E、或O,它将缓存块的拷贝放在它的本地共享缓存存储器110。在本地共享缓存存储器110中的缓存块的分配可以利用特别的命令而被避免。
逻辑一致性存储器协议包括针对核心处理器201和协处理器150的消息用于访问在任何节点100上的外部存储器790,同时维护跨所有节点100的全缓存一致性。任何存储器空间参照可以访问在多节点系统600中的任何节点上的任何存储器。根据至少一个示例实施例,每个存储器消息落在单个类别中的一个,也就是请求、转发、以及响应/写回,每个类别与对应的VC相关联。MemReq信道被配置成承载存储器请求消息。存储器请求消息包括存储器请求、读、写、以及院子序列操作。存储器转发(MemFwd)信道被配置成承载存储器转发消息,存储器转发消息被本地节点用来将请求转发到远程节点,作为外部或内部请求处理的部分。存储器响应(MemRsp)信道被配置成承载存储器响应消息和存储器转发消息。而且,响应信息可以包括可指示与远程缓存块相关联的状态改变。
由于逻辑存储器一致性协议不依赖任何对应虚拟信道内的任何排序,每个虚拟信道还可被分裂成多个独立虚拟子信道。例如MemReq和MemRsp信道中的每个可以被分裂成两个独立子信道。
根据至少一个示例实施例,存储器缓存一致性协议被配置成根据无序传输进行操作以便最大化转移性能并且最小化转移延迟。换言之,多节点系统600的本地节点被配置成以无序方式接收存储器一致性协议消息,并且基于所维护的由所接收的消息所提供或应用的远程缓存块的状态而解决由于消息的无序接收导致的矛盾。
根据至少一个示例实施例,针对数据块的本地节点被包含在任何通信有关的拷贝或数据块的缓存块。当接收该通信或消息时,相对于由所接收的消息应用或提供的任何对应状态信息,本地节点检查所维护的针对远程缓存块的状态信息。在矛盾的情况下,本地节点断定消息被无序接收并且远程节点中的状态转移在处理中。在该情况下,本地节点确保所选择的状态在与相同的数据块相关联的任何其它操作被执行之前是完成的。本地节点可以使用K状态来拖延(stall)该状态。
根据至少一个示例实施例,芯片间互连接口稀疏目录被维护在每个节点的共享缓存存储器控制器115中的片上。因此,共享缓存存储器控制器115被使得能够同时地探测芯片间互连接口稀疏目录和共享缓存存储器,因此实质上减少了针对芯片间互连接口芯片间互连接口存储器转移这两者的延迟。RTG的该放置,在本文中也被称为稀疏目录,也减少了带宽消耗,因为RTG访问不消耗任何外部存储器、或芯片间互连接口、带宽。RTG消除所有的带宽浪费的无差别的广播。根据至少一个方面,逻辑存储器一致性协议被配置成以许多方式减少可用芯片间互连接口带宽的消耗,包括:无论何时可能,通过在本地或远程节点执行诸如原子操作的操作、通过在远程或本地缓存存储器可选地缓存、以及例如通过仅修改128字节缓存块的32字节。
以下的表1提供逻辑存储器一致性协议的存储器请求消息的列表和相应的描述。
表1
以下的表2提供逻辑存储器一致性协议的存储器转发消息的列表以及相应的描述。
表2
以下的表3提供逻辑存储器一致性协议的示例存储器响应消息的列表以及对应的描述。
表3
以下的表4提供了与存储器一致性消息相关联的示例字段的列表以及相应的描述。
表4
本领域技术人员应当理解,以下表格中的列表被提供用于说明的目的。表不意味着表示与逻辑存储器一致性协议相关联的消息或消息字段的完整集合。本领域技术人员还将理解的相较于上文表格中所列出的那些,是消息和相应字段可具有不同名称或不同尺寸。此外,上文中所描述的消息和字段的一些或所有可被不同地实现。
图12是图示了根据至少一个示例实施例的多节点系统中的节点集合间的无序消息交换的第一场景的流程图。图12中,多节点系统包括4个节点,例如节点0-3,并且节点1是针对具有驻留于节点0(远程节点)中的相应拷贝或缓存块的数据块的本地节点。节点0首先向节点1发送例如VICD的存储器响应消息,该消息指示从状态E到状态I的状态转换或移除它持有的缓存块。然后节点0发送例如RLDD的请求消息到本地节点(节点1)。在接收到它的存储器请求消息的响应之前,节点0从请求由节点0所持有的缓存块的本地节点(节点1)接收例如FLDX_2H.E(h)的转发消息。转发消息指示该消息何时被发送,本地节点(节点1)不知道由节点0对缓存块的移除。根据至少一个方面,节点0被配置成在它的飞行中缓冲区521中设置一个或多个比特以指示转发消息被接收并且指示它的类型。该比特允许节点0确定(1)开放处理是否已经看到针对相同缓存块的一个或多个转发,(2)被看到的最后一个转发是否是SINV或Fxxx类型,(3)如果类型是Fxxx,则它是否是E或O,以及(4)如果类型是Fxxx,然后它是否是例如FLDX、FLDX_2H、FEVX_2H、…等的无效或例如FLDRS、FLDRS_2H、FLDRO、FLDT、...等的非无效的。
在发送例如FLDX_2H.E(h)的转发消息之后,本地节点(节点1)从节点0接收VICD消息并且意识到节点0中的缓存块被移除。结果,本地节点将针对节点0中的缓存块的状态从E更新到I。一经接收到对于它的转发消息的例如HAKI(h)的响应,本地节点(节点1)将被维护在它的共享缓存存储器110中的对应缓存块的状态从状态I更新到状态S。到状态S的改变指示现在本地节点在它的本地共享缓存存储器110中存储了数据块的拷贝。一旦本地节点(节点1)从节点1接收存储器请求消息RLDD,它利用数据块的拷贝响应回(例如PEMD),将所维护的针对节点0的状态从I改变到E,并且将它的状态从S改变到I。也就是说,本地节点(节点1)将数据块的专有拷贝授权给节点0并且移除在它的共享缓存存储器110中的缓存块。当接收PEMD消息时,当转发消息从本地节点被接收时,节点0可以释放比特集合。例如VICD.N的响应导致在本地节点处所维护的节点0的状态从E改变到I。
图13是图示了根据至少一个示例实施例的多节点系统中的节点集合之间交换无序消息的第二场景的流程图。在图13的场景中,本地节点(节点1)从节点0接收rLDD消息并且通过授权节点0以数据块的专有拷贝来例如PEMD响应到它。当PEMD被发送时,被维护在本地节点(节点1)中的针对节点0的状态被改变到E。随后,本地节点(节点1)发送转发消息FLDX_2H.E(h)至节点0。然而节点0在从本地节点接收PEMD响应之前接收转发消息。当接收转发消息以指示它不具有有效缓存块时,节点0响应回例如HAKI至本地节点(节点1)。节点0也在它的飞行中缓冲区521中设置一个或多个比特以指示从本地节点(节点1)对于转发消息的接收。
当PEMD消息由节点0接收时,节点0首先将它的本地状态从I改变到E。然后,通过缓存块它抑制本地节点(节点1),节点0响应(例如VICD.N)回至先前所接收的FLDX_2H.E消息,并且将它的本地状态由E改变到I。此时,节点0释放在它的飞行中缓冲器521中的比特集合。一经接收VICD.N消息,本地节点(节点1)意识到节点0接收了PEMD消息以及利用VICD.N消息的接收的传递已经完成。本地节点(节点1)将所维护的针对节点0的状态从E改变到I。
图14是图示了根据至少一个示例实施例的多节点系统中的节点集合之间交换无序消息的第三场景的流程图。远程节点节点0向本地节点(节点1)发送VICC消息以指示它持有的缓存块的本地状态从状态O降低状态S。然后,节点0向本地节点发送指示缓存块的状态转换到I的移除的VICS消息。然后,相同节点(节点0)发送请求数据块的拷贝的RLDD消息到本地节点(节点1)。VICC、VICS、和RLDD消息由本地节点(节点1)以与它们被节点0所发送的顺序所不同的顺序而被接收。特别地,本地节点(节点1)首先接收VICC消息。在该阶段,本地节点意识到在本地节点处所维护的由节点0所持有的缓存的状态与由所接收的VICS消息所指示的相同缓存块的状态之间有矛盾。
所接收的VICS消息指示在节点0处的相同缓存块的状态是S,同时由本地节点(节点1)所维护的状态可指示O状态。该矛盾意味着在节点0处具有针对缓存块状态转换,并且对应消息(例如VICC)可指示该转换还未被本地节点(节点1)所接收。已经接收VICS,本地节点(节点1)将所维护的针对节点0的状态从O改变到K以指示具有在节点0中的针对缓存块的状态转换在处理中。K状态使得本地节点(节点1)在允许与在节点0处的相同缓存相关联的任何操作之前或在其它节点中的对应缓存块进行处理之前等待该状态转换完成。
然后,本地节点(节点1)从节点0接收RLDD消息。因为VICC消息还未被本地节点(节点1)所接收-在节点0处所检测的状态转换还在处理中并且完成-本地节点维护针对节点0的状态K并且维护等待。当VICC消息由本地节点(节点1)所接收时,本地节点将所维护的针对节点0的状态从K改变到I。注意,VICC和VICS消息一起指示从O到S并且然后到I的状态转换。本地节点(节点1)然后例如利用PSHA通过发送数据块的拷贝到节点0来响应回到RLDD消息。,并且将所维护的针对节点0的状态由I改变到S。此时,本地节点(节点1)和节点0之间的与数据块相关联的转换完成。
图15是图示了根据至少一个示例实施例的多节点系统中的节点集合之间被交换的无序消息的第四场景的流程图。在该场景中,远程节点-节点0和节点1,都从事与对应于本地节点(节点1)的数据块的缓存块相关联的处理。节点2发送VICC消息,然后VICS消息,相应地指示针对由节点2所持有的缓存的从O到S的本地状态转换以及从S到I的本地状态转换。本地节点(节点1)首先接收VICS消息,并且作为响应,改变类似于图14中的场景的从O到K的针对节点2的所维护的状态。本地节点(节点1)现在在等待模式。本地节点然后从节点0接收请求数据块的拷贝的RLDD消息。本地节点维护在等待模式并且不响应RLDD消息。
然后,本地节点接收从节点2所发送的VICC消息,本地节点(节点1)将所维护的针对节点2的状态从K改变到I。本地节点(节点1)然后通过向节点0发送数据块的拷贝来响应回到来自节点0的RLDD消息,并且将所维护的针对节点0的状态从I改变到S。在该阶段,利用节点0和节点2的转换完成。
图16是图示了根据至少一个实施例的多节点系统中的节点集合之间的无序消息交换的第五场景的流程图。特别地,图16的场景图示了针对从节点0(远程节点)所发送的数据块的例如RLDX消息的专有拷贝的请求到本地节点(节点1)的情况。当本地节点(节点1)接收针对专有拷贝的请求时,它意识到基于它所维护的状态信息,即节点2(远程节点)有具有对应状态O的数据块的拷贝和节点3(远程节点)有具有对应状态S的数据块的另一个拷贝。本地节点(节点1)发送例如FLDX.O的第一转发消息,请求节点2将数据块的拷贝发送到请求节点(节点0)。除了请求节点2将数据块的拷贝发送到节点0,例如FLDX.O的第一转发消息,被配置成使得由节点2所拥有的数据块的拷贝被无效。本地节点(节点1)还向节点3发送例如SINV的第二转发消息,请求在节点3处的共享拷贝的无效。
然而,在第一和第二转发消息被节点2和节点3各自接收,节点2和节点3已经将它们的数据块的拷贝移除。特别地,节点2移除它的所拥有的拷贝,将它的状态从O改变到I,并且将VICD消息发送到本地节点(节点1)一直是它的所拥有的拷贝的移除。而且,节点3移除它的所共享的拷贝,将它的状态从S改变到I,并且将VICS消息发送到本地节点(节点1)以指示它的所共享的拷贝的移除。在向节点2发送例如FLDX.O的第一转发消息之后,本地节点(节点1)从节点2接收VICD消息。响应于从节点2接收VICD消息,本地节点将针对节点2的所维护的状态从O改变带I。然后,本地节点接收对于被发送到节点2的第一转发消息的例如HAKI的响应。该例如HAKI的响应指示第2节点接收了第一转发消息,但是它的状态时I,并且因此,例如HAKI的响应不包括数据块的拷贝。
在从节点2接收例如HAKI的响应之后,本地节点通过提供数据块的拷贝来响应例如PEMD到节点0。数据块的响应从附于本地节点的存储器获取。然而,本地节点维护从节点0所维护的状态为1,即使在向节点0提供数据块的拷贝之后。不改变针对节点0的所维护的状态至E的原因是本地节点(节点1)仍在等待从节点3的确认,该确认指示在节点3处所共享的拷贝是无效的。而且,从本地节点(节点1)到节点0的例如PEMD的响应指示由请求节点(节点0)所期望的响应的数目。在图16中,与PEMD消息相关联的参数pa指示另一个响应将被发送到请求节点(节点0)。由此,当从本地节点(节点1)接收PEMD消息时,节点0不改变它的状态,并且等待其它的响应。
然后,本地节点(节点1)接收例如HAKV的响应到第二转发消息,由节点3确认它接收例如SINV的第二转发消息,但是它的状态时I。此时,本地节点(节点1)仍在等待来自节点3的例如VICS的消息。一旦本地节点(节点1)从节点3接收VICS消息,本地节点(节点1)将针对节点3的所维护的状态从S改变到I,并且将针对节点0的所维护的状态从I改变到E,因为此时本地节点(节点1)知道仅节点0具有数据块的拷贝。
节点3还发送例如PACK的消息,确认在节点3处的共享拷贝的无效到请求节点(节点0)。一经接收在节点3处的共享拷贝的无效确认,节点0将它的状态从I改变到E。
尽管参考示例实施例,本发明已经被特别地示出和描述,本领域技术人员应当理解,在不脱离所附权利要求所包含的本发明的范围的基础上,可以由此在形式和细节上作出各种改变。

Claims (24)

1.一种多芯片系统,包括:
多个芯片设备,所述多个芯片设备的第一芯片设备包括存储器分配器硬件部件;以及
一个或多个自由池分配器协处理器,每个自由池分配器协处理器与对应的芯片设备相关联,并且每个自由池分配器协处理器被配置成管理自由缓冲区指针的池的对应列表,
所述存储器分配器硬件部件被配置成:
基于由所述一个或多个自由池分配器协处理器所管理的自由缓冲区指针的一个或多个列表,将与所述多个芯片设备的一个芯片设备相关联的自由缓冲区分配至与工作项目相关联的数据;
以及
维护列表,所述列表包括由所述一个或多个自由池分配器协处理器所管理的自由缓冲区指针的所有池。
2.根据权利要求1所述的多芯片系统,其中单个自由池分配器协处理器被配置成管理单个列表,所述单个列表包括与在所述多个芯片设备中的缓冲区相关联的自由缓冲区指针的所有池。
3.根据权利要求1所述的多芯片系统,其中每个芯片设备包括对应的自由池分配器协处理器。
4.根据权利要求3所述的多芯片系统,其中针对每个自由池分配器协处理器,在所述池的对应列表中的所述自由缓冲区指针指向与所述自由池分配器协处理器驻留于相同的芯片设备中的缓冲区。
5.根据权利要求1所述的多芯片系统,其中在将自由缓冲区分配至与所述工作项目相关联的所述数据时,所述存储器分配器硬件部件还被配置成:
向所述一个或多个自由池分配器协处理器的一个自由池分配器协处理器发送针对自由缓冲区指针的请求;
接收包括所述自由缓冲区指针的响应;以及
使得与所述工作项目相关联的所述数据被存储在被所接收的所述自由缓冲区指针所指向的缓冲区。
6.根据权利要求5所述的多芯片系统,其中一旦所述自由缓冲区指针返回至所述自由池分配器协处理器,被分配的所述自由缓冲区被释放。
7.根据权利要求5所述的多芯片系统,其中所述一个或多个协处理器的所述自由池分配器协处理器驻留于所述多个芯片设备的第二芯片设备中,所述第二芯片设备不同于所述第一芯片设备。
8.根据权利要求7所述的多芯片系统,其中针对所述自由缓冲区指针的所述请求和包括所述自由缓冲区指针的所述响应在所述第一芯片设备和所述第二芯片设备之间通过被指定在协处理器之间用于跨芯片通信的通信信道而被交换。
9.根据权利要求1所述的多芯片系统,其中所述工作项目被指派至所述多个芯片设备的第二芯片设备用于处理。
10.根据权利要求9所述的多芯片系统,其中所述存储器分配器硬件部件还被配置成将驻留于所述第二芯片设备中的自由缓冲区分配至与所述工作项目相关联的所述数据。
11.根据权利要求1所述的多芯片系统,其中与所述工作项目相关联的所述数据表示数据分组。
12.根据权利要求1所述的多芯片系统,其中所述存储器分配器硬件部件包括核心处理器或协处理器。
13.一种在包括多个芯片设备的多芯片系统中的存储器分配的方法,所述方法包括:
由在所述多芯片系统中的一个或多个自由池分配器协处理器的每一个自由池分配器协处理器来管理自由缓冲区指针的池的对应列表;
基于由所述一个或多个自由池分配器协处理器所管理的自由缓冲区指针的一个或多个列表,由存储器分配器硬件部件将与所述多个芯片设备的一个芯片设备相关联的自由缓冲区分配至与工作项目相关联的数据;以及
由所述存储器分配器硬件部件维护包括由所述一个或多个自由池分配器协处理器所管理的自由缓冲区指针的所有池的列表。
14.根据权利要求13所述的方法,其中在所述多芯片系统中的单个自由池分配器协处理器管理单个列表,所述单个列表包括与在所述多个芯片设备中的缓冲区相关联的自由缓冲区指针的所有池。
15.根据权利要求13所述的方法,其中每个芯片设备包括对应的自由池分配器协处理器。
16.根据权利要求15所述的方法,其中针对每个自由池分配器协处理器,在池的所述对应列表中的所述自由缓冲区指针指向与所述自由池分配器协处理器驻留于相同的芯片设备中的缓冲区。
17.根据权利要求13所述的方法,其中向与所述工作项目相关联的所述数据分配自由缓冲区包括:
由所述存储器分配器硬件部件向所述一个或多个自由池分配器协处理器中的自由池分配器协处理器发送针对自由缓冲区指针的请求;
由所述存储器分配器硬件部件接收包括所述自由缓冲区指针的响应;以及
由所述存储器分配器硬件部件使得与所述工作项目相关联的所述数据被存储在由所接收的所述自由缓冲区指针所指向的缓冲区中。
18.根据权利要求17所述的方法,其中一旦所述自由缓冲区指针返回至所述自由池分配器协处理器,被分配的所述自由缓冲区就被释放。
19.根据权利要求17所述的方法,其中所述一个或多个协处理器中的所述自由池分配器协处理器驻留于所述多个芯片设备的第二芯片设备中,所述第二芯片设备不同于所述存储器分配器硬件部件被包括在其中的第一芯片设备。
20.根据权利要求19所述的方法,其中针对所述自由缓冲区指针的所述请求和包括所述缓冲区指针的所述响应在所述第一芯片设备和所述第二芯片设备之间通过被指定在协处理器之间用于跨芯片通信的通信信道而被交换。
21.根据权利要求13所述的方法,其中所述工作项目被指派至所述多个芯片设备的第二芯片设备用于处理。
22.根据权利要求21所述的方法,其中分配自由缓冲区包括将驻留于所述第二芯片设备中的自由缓冲区分配至与所述工作项目相关联的所述数据。
23.根据权利要求13所述的方法,其中与所述工作项目相关联的所述数据表示数据分组。
24.根据权利要求13所述的方法,其中所述存储器分配器硬件部件包括核心处理器或协处理器。
CN201480076878.1A 2014-03-07 2014-12-30 用于在多节点系统中的存储器分配的方法和装置 Active CN106104501B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/201,594 2014-03-07
US14/201,594 US9529532B2 (en) 2014-03-07 2014-03-07 Method and apparatus for memory allocation in a multi-node system
PCT/US2014/072808 WO2015134100A1 (en) 2014-03-07 2014-12-30 Method and apparatus for memory allocation in a multi-node system

Publications (2)

Publication Number Publication Date
CN106104501A CN106104501A (zh) 2016-11-09
CN106104501B true CN106104501B (zh) 2019-03-01

Family

ID=52395213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480076878.1A Active CN106104501B (zh) 2014-03-07 2014-12-30 用于在多节点系统中的存储器分配的方法和装置

Country Status (4)

Country Link
US (1) US9529532B2 (zh)
CN (1) CN106104501B (zh)
TW (1) TWI519958B (zh)
WO (1) WO2015134100A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
US9372800B2 (en) 2014-03-07 2016-06-21 Cavium, Inc. Inter-chip interconnect protocol for a multi-chip system
US9529532B2 (en) 2014-03-07 2016-12-27 Cavium, Inc. Method and apparatus for memory allocation in a multi-node system
US10592459B2 (en) 2014-03-07 2020-03-17 Cavium, Llc Method and system for ordering I/O access in a multi-node environment
US9925492B2 (en) * 2014-03-24 2018-03-27 Mellanox Technologies, Ltd. Remote transactional memory
US10642780B2 (en) 2016-03-07 2020-05-05 Mellanox Technologies, Ltd. Atomic access to object pool over RDMA transport network
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
CN109086231B (zh) * 2017-06-14 2020-07-07 龙芯中科技术有限公司 输入输出设备的访问方法及装置
US10552367B2 (en) 2017-07-26 2020-02-04 Mellanox Technologies, Ltd. Network data transactions using posted and non-posted operations
US11695841B2 (en) 2018-01-03 2023-07-04 Convida Wireless, Llc Cross-domain discovery between service layer systems and web of Things systems
KR102545228B1 (ko) * 2018-04-18 2023-06-20 에스케이하이닉스 주식회사 컴퓨팅 시스템 및 그것을 포함하는 데이터 처리 시스템
US11010165B2 (en) 2019-03-12 2021-05-18 Marvell Asia Pte, Ltd. Buffer allocation with memory-based configuration
US11093405B1 (en) 2019-05-29 2021-08-17 Marvell Asia Pte, Ltd. Shared mid-level data cache
US11036643B1 (en) 2019-05-29 2021-06-15 Marvell Asia Pte, Ltd. Mid-level instruction cache
US11327890B1 (en) 2019-05-29 2022-05-10 Marvell Asia Pte, Ltd. Partitioning in a processor cache
US11513958B1 (en) 2019-05-29 2022-11-29 Marvell Asia Pte, Ltd. Shared mid-level data cache
US10802967B1 (en) * 2019-06-28 2020-10-13 Intel Corporation Partial write management in a multi-tiled compute engine
US11474866B2 (en) 2019-09-11 2022-10-18 International Business Machines Corporation Tree style memory zone traversal
CN114528243B (zh) * 2022-02-14 2024-07-26 贵州电网有限责任公司 一种适用于电力芯片内模块间的信息交互方法及装置
CN114896182B (zh) * 2022-05-11 2023-10-20 地平线(上海)人工智能技术有限公司 存储装置、方法、电子设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999012103A2 (en) * 1997-09-05 1999-03-11 Sun Microsystems, Inc. Scalable shared memory multiprocessor system

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414833A (en) 1993-10-27 1995-05-09 International Business Machines Corporation Network security system and method using a parallel finite state machine adaptive active monitor and responder
US5848068A (en) 1996-03-07 1998-12-08 Lsi Logic Corporation ATM communication system interconnect/termination unit
US5982749A (en) 1996-03-07 1999-11-09 Lsi Logic Corporation ATM communication system interconnect/termination unit
US5915088A (en) 1996-12-05 1999-06-22 Tandem Computers Incorporated Interprocessor messaging system
US6633958B1 (en) 1997-11-17 2003-10-14 Silicon Graphics, Inc. Multiprocessor computer system and method for maintaining cache coherence utilizing a multi-dimensional cache coherence directory structure
US6131113A (en) 1998-02-24 2000-10-10 International Business Machines Corporation Managing a shared resource in a multi-processor system
US6631448B2 (en) 1998-03-12 2003-10-07 Fujitsu Limited Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US6269428B1 (en) 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US6888830B1 (en) 1999-08-17 2005-05-03 Mindspeed Technologies, Inc. Integrated circuit that processes communication packets with scheduler circuitry that executes scheduling algorithms based on cached scheduling parameters
US6922755B1 (en) 2000-02-18 2005-07-26 International Business Machines Corporation Directory tree multinode computer system
US6651145B1 (en) 2000-09-29 2003-11-18 Intel Corporation Method and apparatus for scalable disambiguated coherence in shared storage hierarchies
US20030131201A1 (en) 2000-12-29 2003-07-10 Manoj Khare Mechanism for efficiently supporting the full MESI (modified, exclusive, shared, invalid) protocol in a cache coherent multi-node shared memory system
US7149212B2 (en) 2001-03-21 2006-12-12 International Business Machines Corporation Apparatus, method and limited set of messages to transmit data between scheduler and a network processor
US7085266B2 (en) 2001-03-21 2006-08-01 International Business Machines Corporation Apparatus, method and limited set of messages to transmit data between components of a network processor
KR100437467B1 (ko) 2002-07-03 2004-06-23 삼성전자주식회사 연속 버스트 읽기 동작 모드를 갖는 멀티 칩 시스템
US20050044174A1 (en) 2003-04-11 2005-02-24 Sun Microsystems, Inc. Multi-node computer system where active devices selectively initiate certain transactions using remote-type address packets
US20050013294A1 (en) 2003-04-11 2005-01-20 Sun Microsystems, Inc. Multi-node computer system with active devices employing promise arrays for outstanding transactions
US20050027947A1 (en) 2003-04-11 2005-02-03 Sun Microsystems, Inc. Multi-node computer system including a mechanism to encode node ID of a transaction-initiating node in invalidating proxy address packets
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7290094B2 (en) 2005-05-17 2007-10-30 International Business Machines Corporation Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy
US8230424B2 (en) 2005-08-01 2012-07-24 The Mathworks, Inc. General interface with arbitrary job managers
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US7568073B2 (en) 2006-11-06 2009-07-28 International Business Machines Corporation Mechanisms and methods of cache coherence in network-based multiprocessor systems with ring-based snoop response collection
US7979645B2 (en) 2007-09-14 2011-07-12 Ricoh Company, Limited Multiprocessor system for memory mapping of processing nodes
US7716006B2 (en) 2008-04-25 2010-05-11 Oracle America, Inc. Workload scheduling in multi-core processors
US8631208B2 (en) 2009-01-27 2014-01-14 Intel Corporation Providing address range coherency capability to a device
JP5496548B2 (ja) 2009-05-29 2014-05-21 ルネサスエレクトロニクス株式会社 半導体集積回路
US8892620B2 (en) 2009-10-07 2014-11-18 Qsigma, Inc. Computer for Amdahl-compliant algorithms like matrix inversion
US8639885B2 (en) 2009-12-21 2014-01-28 Oracle America, Inc. Reducing implementation costs of communicating cache invalidation information in a multicore processor
US8532129B2 (en) 2009-12-30 2013-09-10 International Business Machines Corporation Assigning work from multiple sources to multiple sinks given assignment constraints
US9596193B2 (en) 2010-12-14 2017-03-14 Cavium, Inc. Messaging with flexible transmit ordering
US8737418B2 (en) 2010-12-22 2014-05-27 Brocade Communications Systems, Inc. Queue speed-up by using multiple linked lists
WO2012137265A1 (en) 2011-04-08 2012-10-11 Hitachi, Ltd. Computer, computer system, and data communication method
JP2013061700A (ja) 2011-09-12 2013-04-04 Sony Corp 情報処理装置、情報処理方法、記録媒体および情報処理システム
US9465662B2 (en) 2011-10-17 2016-10-11 Cavium, Inc. Processor with efficient work queuing
US8885480B2 (en) 2011-10-20 2014-11-11 Cavium, Inc. Packet priority in a network processor
US8473658B2 (en) 2011-10-25 2013-06-25 Cavium, Inc. Input output bridging
US8793421B2 (en) 2011-10-31 2014-07-29 Apple Inc. Queue arbitration using non-stalling request indication
US9059945B2 (en) 2011-10-31 2015-06-16 Cavium, Inc. Work request processor
US9330002B2 (en) 2011-10-31 2016-05-03 Cavium, Inc. Multi-core interconnect in a network processor
US8966457B2 (en) 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US10102124B2 (en) 2011-12-28 2018-10-16 Intel Corporation High bandwidth full-block write commands
KR20130079864A (ko) 2012-01-03 2013-07-11 삼성전자주식회사 클라우드 환경을 위한 다단계 스케쥴링 장치 및 방법
US9264368B2 (en) * 2012-01-27 2016-02-16 Marvell World Trade Ltd. Chip-to-chip communications
US9225668B2 (en) * 2012-07-31 2015-12-29 Futurewei Technologies, Inc. Priority driven channel allocation for packet transferring
US9110718B2 (en) 2012-09-24 2015-08-18 Oracle International Corporation Supporting targeted stores in a shared-memory multiprocessor system
US9003130B2 (en) 2012-12-19 2015-04-07 Advanced Micro Devices, Inc. Multi-core processing device with invalidation cache tags and methods
US9170946B2 (en) 2012-12-21 2015-10-27 Intel Corporation Directory cache supporting non-atomic input/output operations
US9280471B2 (en) 2013-11-15 2016-03-08 Apple Inc. Mechanism for sharing private caches in a SoC
US9229866B2 (en) 2013-11-25 2016-01-05 Apple Inc. Delaying cache data array updates
US9372800B2 (en) 2014-03-07 2016-06-21 Cavium, Inc. Inter-chip interconnect protocol for a multi-chip system
US9411644B2 (en) 2014-03-07 2016-08-09 Cavium, Inc. Method and system for work scheduling in a multi-chip system
US9529532B2 (en) 2014-03-07 2016-12-27 Cavium, Inc. Method and apparatus for memory allocation in a multi-node system
US20150254182A1 (en) 2014-03-07 2015-09-10 Cavium, Inc. Multi-core network processor interconnect with multi-node connection
US10592459B2 (en) 2014-03-07 2020-03-17 Cavium, Llc Method and system for ordering I/O access in a multi-node environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999012103A2 (en) * 1997-09-05 1999-03-11 Sun Microsystems, Inc. Scalable shared memory multiprocessor system

Also Published As

Publication number Publication date
CN106104501A (zh) 2016-11-09
TWI519958B (zh) 2016-02-01
US20150253997A1 (en) 2015-09-10
WO2015134100A1 (en) 2015-09-11
US9529532B2 (en) 2016-12-27
TW201539190A (zh) 2015-10-16

Similar Documents

Publication Publication Date Title
CN106104501B (zh) 用于在多节点系统中的存储器分配的方法和装置
TWI543073B (zh) 用於多晶片系統中的工作調度的方法和系統
TWI547870B (zh) 用於在多節點環境中對i/o 存取排序的方法和系統
TWI541649B (zh) 用於多晶片系統的晶片間互連協定之系統與方法
US9935899B2 (en) Server switch integration in a virtualized system
TW201543218A (zh) 具有多節點連接的多核網路處理器互連之晶片元件與方法
US6876561B2 (en) Scratchpad memory
US9596186B2 (en) Multiple processes sharing a single infiniband connection
CN107690622A (zh) 实现硬件加速处理的方法、设备和系统
JP2006004009A (ja) 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム
WO2014183531A1 (zh) 一种分配远程内存的方法及装置
US10229073B2 (en) System-on-chip and method for exchanging data between computation nodes of such a system-on-chip
US9304706B2 (en) Efficient complex network traffic management in a non-uniform memory system
JP2006004008A (ja) 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム
JP3644158B2 (ja) 並列計算機におけるデータ送受信方法
JP3312361B2 (ja) 分散共有メモリシステム
KR101201593B1 (ko) 처리관리장치, 컴퓨터 시스템, 분산처리방법 및 컴퓨터프로그램

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1230755

Country of ref document: HK

CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Cavium, Inc.

Address before: California, USA

Applicant before: Cavium, Inc.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200427

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200427

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: California, USA

Patentee before: Cavium, Inc.