CN108459877A - 数据处理 - Google Patents

数据处理 Download PDF

Info

Publication number
CN108459877A
CN108459877A CN201810130281.0A CN201810130281A CN108459877A CN 108459877 A CN108459877 A CN 108459877A CN 201810130281 A CN201810130281 A CN 201810130281A CN 108459877 A CN108459877 A CN 108459877A
Authority
CN
China
Prior art keywords
data
access request
node
data access
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810130281.0A
Other languages
English (en)
Other versions
CN108459877B (zh
Inventor
迈克尔·菲利波
詹姆师德·加拉
克拉斯·玛格努斯·布鲁斯
艾利克斯·詹姆斯·沃
若弗雷·拉克尔巴
保罗·吉尔伯特·迈耶
布鲁斯·詹姆斯·梅休森
潘尼德拉·库玛·曼娜瓦
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN108459877A publication Critical patent/CN108459877A/zh
Application granted granted Critical
Publication of CN108459877B publication Critical patent/CN108459877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及数据处理。数据处理装置包括:数据访问请求节点;数据访问电路,用于接收来自数据访问请求节点的数据访问请求,并且路由用于由从两个或多个数据存储节点的组中选择的一个或多个数据存储节点完成的数据访问请求;以及指示电路,用于向数据访问请求节点提供源指示,以指示完成数据访问请求的一个或多个数据存储节点的属性;数据访问请求节点被配置为响应于源指示而改变其操作。

Description

数据处理
技术领域
本公开涉及数据处理。
背景技术
数据传输协议可以例如,在片上系统(SoC)或片上网络(NoC)系统的上下文中调节经由互连电路彼此连接的设备或节点之间的数据传输的操作。这种数据传输协议的示例是所谓的AMBA(高级微控制器总线架构)CHI(相干集线器接口)协议。
在CHI协议中,节点可以分为请求节点(RN)、主节点(HN)、或从节点(SN)。节点可以完全相干或输入/输出(I/O)相干。完全相干的HN或RN(分别是HN-F、RN-F)包括相干的高速缓存存储装置;完全相干的SN(SN-F)与HN-F配对。HN-F可以管理存储区域的相干性和/或序列化,并且可以被称为相干性点(POC)和/或序列化点(POS)的示例。
这里,术语“相干”意味着由一个节点写入相干存储器系统中的存储器地址的数据与由另一个节点从相干存储器系统中的该存储器地址读取的数据一致。因此,与相干功能相关联的逻辑的作用在于,确保在发生数据处理事务之前,如果要访问的数据项的版本过期(由于对同一数据项的另一副本进行修改),则首先需要更新要访问的副本。类似地,如果数据处理事务涉及修改数据项,则相干逻辑避免与数据项的其他现有副本冲突。
序列化涉及对来自潜在的多个请求节点的存储器访问请求的处理的排序,并且潜在使得不同的延迟周期被满足,从而使得来自这些请求的结果被以正确的顺序呈现给请求节点,并且请求(例如,对同一地址的数据写入之后的数据读取)之间的任何依赖性被正确处理。
诸如读取请求之类的数据访问可以经由HN-F进行,HN-F可以对读取请求本身进行处理(例如,通过访问高速缓存存储器)或者可以将读取请求转交给SN-F以进行解析,例如,如果所需要的数据项必须从主存储器或更高级别的高速缓存存储器读取的话。在这样的示例中,SN-F可以包括与诸如动态随机存取存储器(DRAM)之类的存储器相关联的动态存储器控制器(DMC)。HN-F在HN-F本身不能处理读取请求的情况下将该读取请求发给SN-F。
其他示例协议包括AXI(高级可扩展接口)或ACE(AXI相干性扩展)协议。例如,ACE协议不使用HN,但可以提供由互连实现的POC/POS。
发明内容
在一种示例布置中,提供了一种数据处理装置,包括:数据访问请求节点;数据访问电路,该数据访问电路接收来自数据访问请求节点的数据访问请求并路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;以及指示电路,该指示电路向数据访问请求节点提供源指示,以指示完成数据访问请求的一个或多个数据存储节点的属性;数据访问请求节点被配置为响应于源指示而改变其操作。
在另一示例布置中,提供了一种数据存储装置,包括:数据访问电路,该数据访问电路从与该数据访问电路进行数据通信的数据访问请求节点接收数据访问请求并路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;确认电路,该确认电路向数据访问请求节点提供确认消息以指示数据访问请求的完成;以及指示电路,该指示电路将确认消息与源指示相关联,该源指示用于指示数据存储节点的群组中完成数据访问请求的一个或多个数据存储节点的属性。
在另一示例布置中,提供了一种数据处理方法,包括:接收来自数据访问请求节点的数据访问请求;路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;向数据访问请求节点提供源指示,以指示完成数据访问请求的一个或多个数据存储节点的属性;以及响应于源指示而改变数据访问请求节点的操作。
在另一示例布置中,提供了一种数据存储方法,包括:接收来自数据访问请求节点的数据访问请求;路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;向数据访问请求节点提供确认消息,以指示数据访问请求的完成;以及将确认消息与源指示相关联,该源指示用于指示数据存储节点的群组中完成数据访问请求的一个或多个数据存储节点的属性。
本技术的其他方面和特征由所附权利要求限定。
附图说明
参考附图中所示的实施例,仅通过示例进一步描述本技术,其中:
图1示意性地示出了数据处理装置;
图2示意性地示出了数据访问事务;
图3示意性地示出了源指示;
图4和图5示意性地示出了提供源指示;
图6示意性地示出了提供加载指示;
图7至图10示意性地示出了数据存储节点的示例分类;
图11示意性地示出了数据存储节点的示例分类;
图12示意性地示出了数据处理器;
图13至图17是示出各个方法的示意流程图;
图18示意性地示出了数据处理装置;
图19示意性地示出了数据访问事务;以及
图20至图24是示出各个方法的示意流程图。
具体实施方式
在参考附图讨论实施例之前,提供实施例的以下描述。
示例实施例提供了一种数据处理装置,包括:数据访问请求节点;数据访问电路,该数据访问电路接收来自数据访问请求节点的数据访问请求并路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;以及指示电路,该指示电路向数据访问请求节点提供源指示,以指示完成数据访问请求的一个或多个数据存储节点的属性;数据访问请求节点被配置为响应于源指示而改变其操作。
本公开的示例实施例向请求节点提供返回指示,该返回指示用于指示完成数据访问请求的节点的属性。这可以是目标(从)节点或完成请求所涉及的另一节点(例如,路由节点)的属性。该属性可以例如,标识或分类一个或多个节点,和/或指示一个或多个节点处理请求的方式,和/或提供其他信息。使用该信息,请求节点可以改变其操作。
在一些示例中,属性包括标识哪些数据存储节点完成数据访问请求的信息。如上所述,这可以是标识完成数据访问请求的一个或多个数据存储节点的分类的分类信息。使用分类信息,请求节点可以检测出例如,到满足请求的存储器的路径和/或请求是由高速缓存还是外部存储器满足,并且相应地改变其操作。例如,分类可以指示数据访问请求节点与完成数据访问请求的一个或多个数据存储节点之间的数据传输路径的属性(例如,“芯片上/芯片外”)。在示例中,数据传输路径的属性指示数据传输路径的延迟。在其他示例中,数据存储节点被布置为存储级别的层级,并且分类指示完成请求的一个或多个数据存储节点的级别。这种分类的示例是,对于至少一个级别,该级别的数据存储节点包括高速缓存存储器,并且对于至少另一个级别,该级别的数据存储节点包括主存储器。
可以改变操作的方式的示例是,数据访问请求节点被配置为响应于源指示而改变该数据访问请求节点对数据访问请求的发出。例如,属性可以包括加载指示,该加负载指示用于指示完成数据访问请求的一个或多个数据存储节点的加载的级别。作为改变操作的示例,数据访问请求节点可以被配置为访问两种以上数据类型;并且数据访问请求节点可以被配置为响应于加载指示而改变访问两种以上数据类型的数据的优先级(例如,如果从加载指示中明显可见满足数据访问请求的(一个或多个)节点的加载很重,则优先考虑某些类型的数据访问)。
作为改变操作的示例,数据访问请求节点可以包括预取电路;并且数据访问请求节点可以包括控制电路以响应于加载指示而改变预取电路的操作。例如,数据访问请求节点可以被配置为响应于加载指示而改变以下各项中的一项或多项:预取电路的请求速率;预取电路的操作状态;预取数据访问请求的状态指示;预取电路的准确度要求;延迟关键数据访问请求相对于非延迟关键数据访问请求的优先级;以及预取操作相对于基于需求的数据访问操作的优先级。
在其他示例中,数据访问请求节点包括:预测器电路,该预测器电路预测下一数据访问请求将由第一数据存储节点还是第二数据存储节点完成,其中,第一和第二数据存储节点被布置为使得在数据访问请求未由第一数据存储节点完成的情况下,由第二数据存储节点完成该数据访问请求;以及发布电路,该发布电路发出供第一数据存储节点完成的数据访问请求,发布电路被配置为响应于预测器电路预测出给定数据访问请求将由第二数据存储节点完成而发出供路由到第二数据存储节点的、给定数据访问请求需要由第二数据存储节点完成的指示。在这样的布置中,属性可以指示数据访问请求是由第一数据存储节点还是第二数据存储节点完成;并且预测器电路可以被配置为响应于源指示而改变其预测操作。例如,不是通过发出过多的这种提示指示来冒带宽或其他超载的风险,而是可以根据它们是否提供关于先前的数据访问请求的有用或适当信息来预测它们。在一些示例中,属性包括成功指示,该成功指示用于指示数据访问请求是否是通过数据存储节点响应于数据访问提示消息而发起数据访问并响应于后续的数据访问请求而完成数据访问来完成的。
源指示可以被作为“推送”或“拉取”消息提供、或通过其他方式提供、或通过上述两种方式提供。在一些示例中,为了避免路由单独的消息,源指示可以与确认消息相关联。在这样的示例中,该装置包括向数据访问请求节点提供确认消息以指示数据访问请求的完成的确认电路;其中,指示电路被配置为将源指示与确认消息相关联。例如,指示电路可以被配置为用确认消息来传播源指示。
另一示例实施例提供了一种数据存储装置,包括:数据访问电路,该数据访问电路从与该数据访问电路进行数据通信的数据访问请求节点接收数据访问请求并路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;确认电路,该确认电路向数据访问请求节点提供确认消息以指示数据访问请求的完成;以及指示电路,该指示电路将源指示与确认消息相关联,该源指示用于指示数据存储节点的群组中完成数据访问请求的一个或多个数据存储节点的属性。
在一些示例中,属性包括标识哪个数据存储节点完成数据访问请求的信息。在示例中,如上所述,属性包括标识完成数据访问请求的一个或多个数据存储节点的分类的分类信息。在一些示例中,属性包括加载指示,其指示源指示所指示的一个或多个数据存储节点的加载水平。
在一些示例中,至少一个数据存储节点包括存储器访问电路,该存储器访问电路被配置为:响应于从与存储器访问电路进行数据通信的另一节点接收到的数据访问提示消息而发起对存储在存储器中的数据的数据访问并且响应于从与存储器访问电路进行数据通信的另一节点接收到的后续数据访问请求而完成对存储在存储器中的数据的数据访问。在这样的情况下,属性可以包括成功指示,其指示数据访问请求是否是通过数据存储节点响应于数据访问提示消息而发起数据访问并响应于后续数据访问请求而完成数据访问来完成的。
另一示例实施例提供了一种数据处理方法,包括:接收来自数据访问请求节点的数据访问请求;路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;向数据访问请求节点提供源指示,以指示完成数据访问请求的一个或多个数据存储节点的属性;响应于源指示,改变数据访问请求节点的操作。
另一示例实施例提供了一种数据存储方法,包括:接收来自数据访问请求节点的数据访问请求;路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;向数据访问请求节点提供确认消息,以指示数据访问请求的完成;以及将源指示与确认消息相关联,该源指示用于指示数据存储节点的群组中完成数据访问请求的一个或多个数据存储节点的属性。
图1示意性地示出了数据处理装置。
一般而言,将描述这样一种布置,其中,潜在自调谐的反应系统需要反馈来驱动系统中可用的调谐机制,例如,通过可以被实现为数据源字段的源信息。该字段可以包括各种类型的信息。
数据源字段可以包括关于系统中的哪个代理最终满足存储器访问请求的信息。示例满足代理是非存储器(非DRAM)、集群内对等高速缓存、互连或集群高速缓存、集群间对等高速缓存、远程芯片高速缓存、以及诸如主存储器之类的存储器。
该信息可以被包括在对于任何存储器访问的响应或确认中或与它们一起被包括,并且可以通过请求CPU/设备在性能监视计数器(PMC)中跟踪这些不同类型的事件并且使用系统级工具和实用程序来分析这些事件的发生或频率来使该信息对用户可见。如果程序或设备正以非高性能的方式访问性能要求严格的存储器(即,数据正在被高延迟或低带宽目标所满足),则用户可以修改底层的数据结构或程序以使其更适合现有的高速缓存结构,从而显著提高这些访问的性能。
另外,该信息可以被预测机制(其中,该预测机制可以存在于请求代理中)用来根据高速缓存或存储器层次结构中正在满足的一个或一系列请求而瞄准或修改请求。这个反馈信息可以用来调谐或调整预测机制,从而潜在地调整来自请求代理的后续活动。
在图1中,提供了三个集成电路器件或模块100、110、120。它们被各自被示出为相同的器件或模块,但这仅是为了示图的简化和解释。在分享将在下面共同讨论的一些概念时将理解的是,它们可以是不同的。应理解的是,可以提供多于或少于三个这样的设备。
更详细地看集成电路设备100,示出了两个处理器单元(CPU)集群130、140。另外,将理解的是,可以提供不同数目的集群。每个集群包括CPU对132、134和142、144以及集群级高速缓存存储器136、146。图1和其他附图中使用符号“$”来表示高速缓存存储器。每个CPU具有关联的高速缓存存储器133、135、143、145。
CPU集群通过具有一个或多个高速缓存存储器的互连150和“芯片到芯片”(C2C)接口160互连。互连150允许数据分组或其他量分布在CPU集群之间,经由C2C接口160分发到其他集成电路设备/从其他集成电路设备分发,以及分发到外部RAM设备170、180/从外部RAM设备170、180分发等。
互连150和/或连接到互连150的单独节点充当所谓的相干性点和序列化(serialisation)点(PoC/PoS)190。
这里,相干指由一个节点写入到相干存储器系统中的存储器地址的数据与由另一节点从相干存储器系统中的该存储器地址读取的数据一致。因此,与相干功能相关联的逻辑的作用在于,确保在数据处理事务发生之前,如果要访问的数据项的版本过期(由于对同一数据项的另一副本进行修改),则需要首先更新要访问的副本。类似地,如果数据处理事务涉及修改数据项,则相干逻辑避免与数据项的其他现有副本发生冲突。序列化涉及处理来自潜在的多个请求节点的存储器访问请求的顺序,以及潜在地使不同的延迟周期被满足,从而使得来自这些请求的结果被以正确的顺序呈现给请求节点,并且请求之间的任何依赖性(例如,对于同一地址的数据写入之后的数据读取)被正确处理。PoC/PoS通过适当地路由事务并跟踪相干控制系统中的各种高速缓存存储器的内容来监督这两者的兼容性。
集成电路设备110、120通常包含与集成电路设备100相似的特征,因此将不再详细描述这些设备。
图1的下部表示从单个CPU(例如,图1的集群130中的CPU 132)的角度来看的数据访问事务的不同源或目标。以“它们相对于CPU 132的本地程度”的一般顺序在图1的左侧列出了与集成电路设备100相关联的数据源和/或数据访问事务的目标。这些包括与CPU 132本身相关联的1级或2级高速缓存存储器(例如,由高速缓存存储器133实现)、可以是例如,3级高速缓存的集群高速缓存存储器136、同一集群中的对等设备的高速缓存存储器(在CPU132的情况下,这可以是例如,CPU 134)、与互连相关联的高速缓存存储器(例如,4级高速缓存)、与需要经由互连连接的对等设备相关联的高速缓存存储器(例如,另一集群(例如,集群140)中的CPU或集群高速缓存存储器)、芯片到芯片设备160处的高速缓存存储器、或处于常规或预取模式的外部存储器设备170、180。所有这些都与“本地”集成电路相关联。
图1还示出了与其他集成电路设备(图1中的设备110、120)相关联的存储器的类型,包括:CPU高速缓存存储器、集群高速缓存存储器、互连或C2C高速缓存存储器、以及均与相应的其他集成电路设备相关联的外部RAM设备。
图2是示出数据读取访问的示意性时序图。
在图2中,CPU中的一者(例如,CPU 133)试图读取由PoC/PoS190(从相干角度来看)监督的数据。PoC/PoS管理对时间上重叠的数据访问请求或其中的一个数据访问请求的结果至少与另一数据访问请求的完成时间相关的数据访问请求的处理顺序,以确保以适当的顺序发起和/或完成这样的数据访问请求。
CPU 132向PoC/PoS 190发送数据读取请求200。PoC/PoS检测它是否可以满足或自己完成请求,在这种情况下,它向CPU 132提供数据读取响应205,并且该过程结束。
通过PoC/PoS满足读取请求可能涉及PoC/PoS从其自己的高速缓存存储器(如果其具有一个)提取所请求的数据和/或从由该PoC/PoS管理的高速缓存存储器PoC/PoS提取所请求的数据。在一些示例中,PoC/PoS可以通过查询由PoC/PoS维护的指示由其控制的每个高速缓存存储器所保存的数据的记录(例如,所谓的窥探(snoop)过滤器)或者通过查询一个或多个高速缓存存储器,来检测其是否保存有所请求的数据的最新版本或有效版本或者在其相干管理下的高速缓存存储器是否保存有所请求的数据的最新版本或有效版本。PoC/PoS用来检测其是否可以满足读取请求的特定技术取决于所使用的系统架构。由PoC/PoS进行的其是否可以满足读取请求的检测可以是由PoC/PoS进行的抢先检测(例如,使用如上所述的窥探过滤器)或者可以是故障引起的检测,以成功完成满足读取请求的尝试。
PoC/PoS满足读取请求意味着为了满足读取请求不对在PoC/PoS的控制之外的存储器进行访问。
然而,如果PoC/PoS检测到它本身不能满足请求,则它又将读取请求210发送到适当的另一节点。另一节点接收该请求,然后经由PoC/PoS或直接向CPU 132返回数据作为读取响应225。
因此,PoC/PoS提供数据访问电路的示例,以从数据访问请求节点(例如,示例CPU132)接收数据访问请求并路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点(结合图1所讨论的各个存储位置)完成。
图3示意性地示出了形成源指示的示例的数据源字段。数据源字段可以与在数据访问请求完成时返回到请求节点的确认消息相关联,或者在一些示例中可以形成该确认消息的一部分。可以在数据源字段内对各种数据项进行编码。这些数据项中的一个或多个可以被包括在实际系统中,并且这些数据项包括在满足数据访问请求时使用的特定设备的标识300、在满足数据访问请求时使用的设备的类型的标识310、在满足数据访问请求时使用的代理或设备的占用率的标识320、和/或在满足数据访问请求时提示消息的成功、相关、或使用的标识。这些数据项中的每一者的示例将在下面详细讨论。
图4和5示意性地示出了提供这种源指示。在图4中,主或请求节点400经由相干性点420与从节点410进行通信以满足数据访问请求。将理解的是,各种其他节点可以被包括在请求节点和从节点之间的通信链中,并且从节点甚至不需要与请求节点在同一集成电路上。不止一个相干性点可以处理事务并且通过下以示例来描述这种布置。
返回图4,请求节点发出被路由到从节点的事务请求。从节点满足请求,并且在完成对该请求的满足时,从节点412中的确认逻辑生成确认消息414。确认逻辑可以包括指示电路411,用于向数据访问请求节点提供源指示以指示完成数据访问请求的一个或多个数据存储节点的属性。该属性可以由数据源字段416来指示。确认消息414例如通过与用于返回形成请求节点的任何数据读取请求的一部分的任何数据相同的路线被路由回到请求节点。如图所示,如果需要,相干性点420可以使用其自己的确认逻辑422(其可以包括指示电路421)来修改数据源字段。
请求节点接收包括数据源字段的确认,并使用它来经由控制逻辑402控制请求节点的功能。以下将讨论控制逻辑402控制或改变请求节点的功能或操作的示例方式。
因此,图4提供一种数据处理装置的示例,该数据数据处理装置包括:数据访问请求节点400(或图1中的132);数据访问电路420、410,该数据访问电路从数据访问请求节点接收数据访问请求并路由数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点410完成(节点410是若干数据存储节点中的一者的示例,例如,图1中的任一高速缓存存储器($));以及指示电路412、411、422、421,该指示电路向数据访问请求节点提供源指示以指示完成数据访问请求的一个或多个数据存储节点的属性;数据访问请求节点400被配置为响应于源指示而改变其操作(通过控制逻辑402)。
图5示出了一种类似的示意性布置,但在这种情况下,存在诸如相干性点500、510之类的中间节点的链。从节点520生成包括数据源字段的确认消息530,并且该数据源字段可以由在其返回到原始请求节点540的路上的任一路由节点(例如,相干性点500、510)修改。
以下将讨论中间节点修改或建立数据源字段为什么有用的原因。在某些情况下,数据源字段可以直接指示数据访问请求是在片上还是在片外完成的。与请求设备相比,实际的片外设备事实上可能不知道它是“在片外的”,而中间的相干性点就会有这样的信息并且可以将相关的数据源指示到插入数据源字段中。
图6示意性地示出了提供作为可以被包括在数据源字段中的参数的示例的加载指示。该参数指示满足数据访问请求所涉及的从节点或其他代理的占用率或繁忙程度,并且在图3中被作为示意性数据320示出。
在图6中,诸如从节点或中间路由节点600之类的节点使用确认逻辑602生成确认消息,并提供确认消息610以指示数据访问请求的完成。检测器620检测节点600的当前状态并提供指示符逻辑622以生成被包括在确认消息610的数据源字段612内的指示。
因此,图6提供确认电路602的示例以向数据访问请求节点(图6中未示出,然而是消息610的接收者)提供确认消息610以指示数据访问请求的完成;其中,指示电路622被配置为将源指示612与确认消息相关联。例如,指示电路622可以被配置为用确认消息(例如,确认消息的一部分)来传播源指示。
如上所述,数据源字段的可能用途是例如,通过包括标识了哪个数据存储节点完成数据访问请求的信息的属性来指示满足数据访问请求的节点的身份和/或类型。图7至图10示意性地示出了包括设备100、110的图1的布置的一部分,并且假设CPU 132正在发起数据访问事务。
在一些示例中,数据源字段可以包括唯一或准唯一的指示,例如,与满足数据处理事务的特定存储器设备相对应的序列号。
在其他示例中,替代地或者除了以上讨论的序列号之外,还可以提供设备的类型。可以通过各种不同的方式来处理设备的类型。
在一个示例中,不同的设备类型与以下各项相关联:CPU高速缓存存储器、集群高速缓存存储器、互连高速缓存存储器、以及外部存储器。在该示例中,属性包括标识完成数据访问请求的一个或多个数据存储节点的分类的分类信息。
在另一示例中,在图7中,基于存储器相对于请求节点(在这些示例中是CPU 132)的访问延迟对存储器分等级。使用任意编号方案,将最低延迟(最高等级)与CPU 132本身的高速缓存存储器相关联。将下一等级(7)与同一CPU群集中的高速缓存存储器相关联。将等级6与经由互连进行连接的高速缓存存储器相关联(因此,这些高速缓存存储器包括其他群集的高速缓存存储器和互连高速缓存存储器),并且等级5涉及与另一设备(诸如,设备110)相关联的片上高速缓存存储器。将其他等级1-4与针对外部存储器的直接且完美的操作相关联。当这个信息在数据源字段中被返回到请求节点时,可以指示通过该请求节点对数据访问的性能期望。此外,这提供了以下示例,其中,属性包括标识完成数据访问请求的一个或多个数据存储节点的分类的分类信息。该分类可以指示数据访问请求节点和完成数据访问请求的一个或多个数据存储节点之间的数据传输路径的属性,例如,数据传输路径的属性指示数据传输路径的延迟。
在图8中,根据请求节点132和满足数据访问请求的存储器之间的路径在等级8(最短路径)和等级1(最长路径)之间对数据源分等级,这可以有助于向请求节点通知为什么某些数据可位于特定的高速缓存中。
在图9中,分等级是基于级别的,因此同一集成电路设备中的级别1或级别2的高速缓存存储器被分等级为等级8,同一集成电路设备中的级别3的高速缓存存储器被分等级为等级7,同一集成电路设备的C2C或互联中的级别4的高速缓存存储器为等级6,其他集成电路设备中的高速缓存存储器为等级5,并且外部(主)存储器访问为等级1-4。这种布置易于实施。这提供了以下示例,其中,数据存储节点被布置为存储级别的层级结构,并且分类指示完成请求的一个或多个数据存储节点的级别。在这些示例中,对于至少一个级别,该级别的数据存储节点包括高速缓存存储器,并且对于至少另一级别,该级别的数据存储节点包括主存储器。
图10示出了使用更简单的分等级方案的到存储器的路径的另一选择。
图11示意性地示出了根据可编码为数据源字段的一部分的3位分等级1100(图11中示出的十进制等同物)的数据存储节点的示例分类以及用于满足数据访问请求的节点的类型或分类1110。
图12示意性地示出了例如,形成上面讨论的一个或多个CPU的数据处理器。图12的数据处理器包括与数据相关联的处理器核1200和诸如程序状态寄存器和用于保存(例如,暂存)处理操作的结果的寄存器的控制寄存器1210,可连接到互连和/或诸如存储器设备的外部设备的接口1220,指令获取单元1230,指令解码器1240,预取单元1250,预取控制器1260,数据加载/存储单元1270,和高速缓存存储器($)1280。
处理器核执行由指令获取单元1230获取并由解码器1240解码的指令。在执行其数据处理操作时,其使用寄存器1210来提供所执行的指令可以作用于的输入数据,存储由执行的指令生成的输出数据,并且存储或保持与处理器核(包括,例如,指示正在执行的程序内的当前位置的程序计数器(PC)寄存器)的活动有关的状态信息。
指令获取单元1230经由接口1220从外部存储器获取准备解码的指令。指令获取单元1230还可以从高速缓存存储器1280获取指令。指令的获取是由解码器1240对这些指令进行解码的先决条件。
类似地,数据加载/存储单元1270可以从高速缓存存储器1280和/或经由接口1220获取供处理器核1200在其操作中使用的数据。由处理器核输出的数据可以被存储到高速缓存存储器1280,或再次经由接口1220被存储到外部存储器或其他设备。
预取单元在预取控制器的控制下进行操作,以预测对指令获取单元1230和/或数据加载/存储单元1270的数据加载功能的需要,以在指令和/或数据被解码1240或处理器核1200进行的处理需要之前,经由接口1220从外部存储器或其他设备获取指令和/或数据。在线性执行程序代码的情况下,预取单元1250可简单地操作以在当前执行指令之前预取程序指令。这样做可以减少指令获取操作1230的延迟,因为预取指令已经可用于指令获取单元1230。类似地,对于某些类型的数据访问,如果数据本身正在被以合理可预见的方式访问,则数据的预取可以是可预测并且可靠地有用的。然而,在其他情况下,预取单元1250可能更具推测性地进行操作,例如在分支指令的结果尚未被确定的程序执行点处预取分支指令的目标地址处的指令。例如,分支指令可以取决于形成寄存器1210的一部分并且指示应用于执行尚未完全执行的指令的结果的特定条件或状态的条件标志等。因此,在这些情况下,预取单元1250不得不使用对指令结果的估计或预测,这可能导致程序流中的分支到达指令将被预取的目标地址。这样的分支预测技术本身是已知的,可能会或可能不会生成正确的结果(也就是说,预测可能或可能不会最终被证明是正确的)。
因此,作为其正常操作的一部分,预取单元1250的预取可以在程序流中实际需要数据或指令(或两者)的点之前进行操作,并且可以按照可变速率进行操作。在一种极端情况下,可以禁止预取,使得每个指令由指令获取单元1230依次获取,并且响应于数据加载/存储单元1270的要求来加载需要加载的任何数据。作为另一极端情况,预取单元1250可以比单独工作的指令获取单元1230或单独工作的数据加载/存储单元1270更高的速率执行请求指令和/或数据的获取的操作。
在本布置的示例中,数据源字段可以提供(作为提供其它信息的全部或部分)系统中的代理繁忙(达到了诸如预定阈值水平之类的某个加载水平)或过度订阅的指示,也就是说,代理当前被利用到无法跟上入站请求速率的程度。考虑的代理可以是诸如互连的路由代理、或诸如外部存储器的存储设备、或诸如以上讨论的“芯片到芯片”设备的另一设备。如果这样的代理妨碍图12的数据处理器对请求的处理,则这可以由与被提供回图12的数据处理器的请求响应相关联的数据源字段指示。在这些示例中,预取控制器1260作为所述数据访问请求节点的一部分,被配置为响应于源指示而改变其操作。
因此,在这些示例中,属性包括指示完成数据访问请求的一个或多个数据存储节点的加载水平的加载指示。
图12的数据处理器可以通过各种可能的方式使用这种类型的“繁忙”指示,来响应于作为(或为)源指示所提供的属性的一部分的指示来改变其操作。以下将参考图13至17来描述这样的技术的示例。应该注意的是,这些不同技术中的一种或多种技术可以被同一系统使用。在这些示例中的至少一些示例中,数据访问请求节点被配置为响应于源指示而改变数据访问请求节点对数据访问请求的发布。
因此,图12提供了以下示例,其中:数据访问请求节点包括预取电路;并且所述数据访问请求节点包括响应于加载指示而改变预取电路的操作的控制电路。
在图13中,在步骤1300处,预取控制器1260检测数据源字段中的系统中代理繁忙的指示,并且在步骤1310改变预取单元1250发出预取请求的速率。因此,如果指示存在,或如果指示存在并持续至少预定数目的周期,则预取控制器可以降低预取单元1250的请求速率。例如,对于数据源字段包括代理繁忙的指示的每个预定周期,预取控制器1260可以将请求速率降低预定量或比例,直到提示该指示表明相关代理不再过载或繁忙至阈值水平。其推论是,如果预取控制器1260检测到与数据源字段相关联的指示显示系统中没有当前超额预订的并且与预取请求的处理相关的代理,则预取控制器1260可以使预取单元1250增加预取请求的速率(假设预取单元1250具有这样做的能力),例如在每个预定周期将请求速率增加预定量或比例。
图14涉及所谓的准确度参数的控制。在步骤1400,预取控制器1260检测数据源字段中关于数据和/或指令的预取是否被满足这些请求的系统中的代理的超额预订或繁忙水平所妨碍的指示。响应于检测到的指示,预取控制器1260改变与预取单元1250的操作相关联的准确度参数。
如上所述,预取单元1250的操作可以至少部分是推测性的,也就是说,预取单元1250基于下一步将需要哪些指令和/或数据的预测或估计来获取指令和/或数据。关于这些预测,可以使用准确度参数来指示在关于那些预测的开始预取操作之前,在预测中的准确度或可能性的水平的要求。例如,在条件分支指令链或系列的情况下,准确度参数可以确定在该链中可以预测多少个级别。更高的准确度将指示可能的分支指令链中的较小数量的级别被预测,而较低的准确度参数将允许在当前执行的指令之前预测较大数量的连续分支指令。
改变准确度参数可能会对所需的预取数量产生间接的影响。首先,如果准确度要求较高(使得在预取操作开始之前关于预测质量必须有更高的保证水平),这将倾向于减少将进行的预取操作的次数。另外,第二级影响是,如果禁止不太精确的预取操作,则不太可能执行不必要的预取,这又可能减少预取操作的数量。
图15表示以下情况,其中,响应于在步骤1500检测到满足预取请求的系统中的代理过载的指示,预取控制器1260在步骤1510停止预取,并且响应于系统过载的指示的解除或去除而重新开始预取。可以采用一定程度的滞后,使得预取控制器在实现步骤1510(在任一方向)之前等待预定周期,从而避免预取状态过快地发生变化。
在图16中,在步骤1600中检测指示,并且在步骤1610中改变预取操作的优先级次序。
改变优先级次序的一个示例如下。接口1220处理预取单元1250的预取操作、指令获取、以及(数据加载/存储单元1270的)数据加载。在优先级次序方案的一个示例中,所有这些类型的访问由接口单元1220处理,其中该接口单元在具有同等优先级的事项中进行仲裁。在另一优先级次序方案中,指令获取单元1230和数据加载/存储单元1270的访问(所谓的“需求负载”)被接口单元1220和/或预取单元1250给予高于预取单元1250的预取操作的优先级。因此,在示例布置中,响应于系统中的代理被超额预订的指示,接口单元1220和/或预取单元1250可以对需求负载给予优先级。在没有这种指示的情况下,可以使用其他类型的优先级次序方案,使得各种不同类型的访问全部竞争并由接口1220简单地进行仲裁。因此,在这些示例中,数据访问请求节点被配置为访问两种以上数据类型(诸如,预取和需求负载);并且数据访问请求节点被配置为响应于加载指示来改变访问两种以上数据类型的数据的优先级。
图17示意性地示出了另一示例,其中,在步骤1710检测数据源的类型或身份(例如,上面讨论的存储设备的类型或身份)和繁忙指示中的一者或两者,并且作为响应在步骤1720改变预取单元1250的操作。步骤1720的这种改变的示例包括:
(a)如果接收到满足预取请求的系统中的代理繁忙的指示,则可以通过指示那些请求中的能力或准确度水平的数据标志来标记(如上面参考图14所讨论的)预取请求,从而使得存储器系统中的目标代理优先处理这些请求或取消对这些请求的优先处理。例如,如果系统中的某个代理处于繁忙状态从而无法成功处理所有正在发布的预取请求,则其可以丢弃低置信度的请求但继续处理高置信度的请求。
(b)步骤1720的操作的另一改变是相对于非延迟关键的负载而优先处理延迟关键的数据负载(也就是说,如果它们被延迟,将导致延迟问题)。
因此,在这些示例中,数据访问请求节点被配置为响应于加载指示而改变以下各项中的一项或多项:
预取电路的请求速率;
预取电路的操作状态;
预取数据访问请求的状态指示;
预取电路的准确度要求;
延迟关键的数据访问请求相对于非延迟关键的数据访问请求的优先级;以及
预取操作相对于基于需求的数据访问操作的优先级。
可能用在数据源字段中的另一种类型的信息是成功或失败的指示或先前的“读取提示”命令。这种命令类型由主设备或请求设备发送到存储器控制器,以启动对存储器访问的处理,目的是减少延迟。存储器访问在随后的读取命令之前开始。这些布置是推测性的,读取提示可能与后续读取命令相关或不相关。
图18示意性地示出了与该布置相关的数据处理装置的一部分,并且示意性地示出了被具体化为通过互连1810互连的设备网络的数据处理装置。该装置可以被作为单个集成电路(例如,所谓的片上系统(SoC)或片上网络(NoC)或多个互连的离散设备提供。
各种所谓的节点经由互连800连接。这些节点包括监视联网系统(例如,作为PoC/PoS)内的数据相干性的一个或多个主节点(HN)1820、诸如较高级别的高速缓存存储器的一个或多个从节点(SN)1830(对于“较高级别”的引用是相对于由请求节点提供的并在下面描述的高速缓存存储器的)、主存储器、和外围设备。图18中所示的从节点的选择使得可以提供每个类型的从节点的零个或更多个。图18仅示出了一个从节点1830(因为该节点与下面的讨论相关),但是可以提供其他从属节点。
在这个示例中,从节点1830包括存储器控制器(DMC)1832、存储器(DRAM)1834、向数据访问请求节点提供源指示以指示完成数据访问请求的一个或多个数据存储节点的属性的指示电路1836、以及向数据访问请求节点提供确认消息以指示数据访问请求的完成的确认电路1838。
图18还示出了(潜在地)多个所谓的请求节点(RN)中的请求节点(RN)1800,在本示例中,该请求节点根据CHI(相干集线器接口)协议进行操作。
RN 1800是具有相关联的高速缓存存储器1806的完全相干的RN(RN-F)。更一般地,节点可以是完全相干或输入/输出(I/O)相干。完全相干的HN或RN(分别是HN-F,RN-F)包括相干高速缓存存储装置。例如,HN-F 1820包括高速缓存存储器1822。完全相干的SN(SN-F)与HN-F配对。HN-F可以管理存储区域的相干性。
RN 1800还包括预测器电路1802和发布电路1804,其操作将在下面描述。
图19是示出数据读取访问的示意性时序图。
在图19中,RN 1800试图读取由主节点HN-F 1820(从相干性视点)监视的数据。HN-F充当所谓的相干点(PoC)。在处理时间重叠的数据访问请求或其中的一个数据访问请求的结果至少与另一数据访问请求的完成时间相关的数据访问请求的处理顺序方面,HN-F还可以充当所谓的序列化点(PoS),以确保这种数据访问请求被以适当的顺序启动和/或完成。
请求节点向主节点发送数据读取请求1900。主节点检测其自己是否可以满足或完成该请求,在这种情况下,它向请求节点提供数据读取响应1910,并且过程结束。
由主节点满足读取请求可以涉及主节点从其自己的高速缓存存储器(如果它有一个)提取所请求的数据和/或从由主节点作为PoC管理的高速缓存存储器(诸如,一个或多个高速缓存存储器1806、1822)提取所请求的数据。在一些示例中,主节点可以通过查询由主节点作为PoC维护的由其作为PoC(诸如,所谓探听(snoop)过滤器)控制的每个高速缓存存储器所保存的数据的记录、或通过查询一个或多个高速缓存存储器,来检测其是否保存有所请求的数据的最新版本或有效版本。主节点用来检测它是否可以满足读取请求的特定技术取决于所使用的系统架构。由主节点检测其是否能够满足读取请求,可以是抢先检测(例如,使用如上所述的探听过滤器),或可以是主节点由于故障而导致的检测,以成功完成对读取请求的满足尝试。
由主节点满足读取请求意味着,为了满足读取请求不对从节点1830进行访问。
然而,如果主节点检测到其本身不能满足该请求,则主节点又将读取请求1920发送到适当的从节点SN 1830。
从节点的存储器控制器(DMC)通过接收该请求并从存储器(DRAM)读取所需的数据(作为DMC 1832与DRAM 1834之间的事务)来响应来自HN的读取请求。存储器控制器然后将数据作为读取响应返回给请求节点,通过主节点或直接地向请求节点返回。在示例中,由主节点提供的读取请求可以指定与存储器控制器或访问电路进行数据通信的另一节点(例如,RN),读取响应应当被提供给该另一节点。
存储器访问中的延迟(至少在某些情况下)对于系统性能来说是重要的甚至是至关重要的。为了尝试减少由必须首先到达HN的读取请求所潜在地引入的延迟,在图19中,RN发出数据读取请求1900并且还(有选择地)直接向在主节点自身无法满足该读取请求时将不得不满足或完成该读取请求的从节点的存储器控制器发出所谓的“读取提示”消息1905。RN-F可以根据系统配置或存储器映射信息来检测哪个从节点与读取请求相关。如下所述,预测器电路确定是否发送读取提示消息。
如上所述,主节点将所需的数据作为读取响应1910返回,或将读取请求1920发送给从节点。然而,在当前情况下,从节点已经响应于在时间1922接收到读取提示1905而发起事务1930、1940以提取所需的数据。因此,存储器控制器能够响应于接收到读取提示1905而提前发起事务1930,而不是从节点等到接收到读取请求1920才开始事务1930。如前所述,一旦存储器控制器接收到所需的数据,它就将所需的数据作为读取响应1950提供给RN-F。
由于提供读取提示1905而更早地发起事务1930、1940允许节省延迟时间1924。这样的时间段的长度取决于系统的许多不同设计参数和方面,但是在示例实施例中,与从DRAM读取数据所花费的总时间相比,这类节省可以是显著的。
图20是示出如上讨论的使用读取提示消息的示意性流程图。
在步骤2000,请求节点1800的预测器电路1802预测是否发送读取提示。在本示例中,该预测至少部分地基于由数据源(DataSource)字段返回的信息,如下所述。这提供了其中数据访问请求节点被配置为响应于源指示而改变该数据访问请求节点的数据访问请求的发出(例如,在发送读取提示与不发送读取提示之间进行改变)的示例。
在步骤2010处,请求节点1800的发布电路1804发送读取请求,加上读取提示(如果预测发出的话)。在步骤2015处,读取请求被传递到主节点1820,主节点1820处理该读取请求。在步骤2020处,读取提示(如果发出的话)被传递到相关的从节点1830,从节点1830处理该读取提示。
返回到主节点的操作,主节点在步骤2015接收读取请求,并在步骤2025检测主节点是否可以完成该请求。例如,检测可以是通过查询由主节点保存的数据(例如,探听过滤器目录)来检测所请求的数据的最新副本是否由主节点控制下的高速缓存存储器保存。或者,检测可以是通过尝试请求并且检测该尝试是否成功。
如果读取请求可以由主节点完成,则控制转到步骤2035,在步骤2035,主节点读取所请求的数据,并且在步骤2045处,完成读取请求,由确认电路1826发送确认,并且可选地,由指示电路1824指示该请求由HN-F完成。
然而,如果在步骤2025检测出主节点不能完成读取请求,则在步骤2055处,主节点向从节点发出读取请求。
转到从节点的操作,响应于读取提示(如果发出的话),从节点在步骤2020处发起读取过程。然后,在步骤2030处,从节点响应于来自主节点的请求2057来发起对所请求的数据的读取。在步骤2040处,从节点完成读取请求。
因此,与在步骤2030处接收到读取请求2057并且处理读取请求2057相比,读取提示(如果发出的话)使得读取过程在步骤2020处被提前发起。如以上参考图19的时序图所讨论的,这可以减少主节点不能完成而必须被转发到从节点来完成的读取操作的延迟时间。
在步骤2040,从节点将所需的数据返回到请求节点作为完成读取请求的一部分。从节点还提供指示任意先前的读取提示命令的相关性和成功性的信息(例如,作为数据源字段的一部分)。这类信息或属性可以由指示电路1836提供,并且可选地与由确认电路1838生成并返回给请求节点的确认相关联,或被提供作为由确认电路1838生成并返回给请求节点的确认的一部分。步骤2020...2040的各种排列都是可能的:
(a)接收到读取提示,并且随后(例如,在接收到读取提示的阈值超时时间段内)接收到与相同数据访问事务相对应的读取请求(即,相同请求节点和/或要读取的相同地址和/或相同事务标识符)。因此,在这种情况下,在步骤2020接收到读取过程,并且由于提供读取提示消息,从节点的整体操作的延迟被减少。在这些情况下,数据源字段指示读取提示已经被发出,并且是相关的。
(b)在步骤2030接收到读取请求之前没有接收到读取提示。这里,没有获得延迟优势,并且数据源字段提供没有接收到相关的读取提示的指示。
(c)在步骤2020接收到读取提示并且发起读取操作,但是接收到针对不同事务的后续读取请求,因此初始的读取提示是不相关的。这里,数据源字段被用来发信号通知没有接收到相关的读取提示。
回到请求节点的操作,请求节点在步骤2045从主节点接收读取数据,或在步骤2040从从节点接收读取数据,在步骤2050伴随读取数据的是数据源字段,请求节点根据数据源字段来检测数据源的身份(主节点或从节点)和/或使用读取提示消息的成功性。响应于数据源字段的这些方面,请求节点在步骤2060修改在步骤2000应用的预测逻辑。
可以修改在步骤2000使用的预测逻辑的示例方式如下。
在一个示例中,预测逻辑对提供数据的源的标识或源的类型进行响应。由从节点而不是由主节点完成的数据读取请求的优势或阈值比例倾向于引导预测包括读取提示消息。由主节点完成的请求的优势或阈值比例将倾向于引导预测不发送读取请求。
在另一示例中,对于发送的那些读取提示消息,从从节点接收到的“相关性和有用性”消息的阈值比例或者优势将倾向于引导预测发送更多的读取提示消息。从从节点接收到的指示读取提示不是有用的消息的优势或至少阈值比例将倾向于引导预测逻辑减少正在发送的读取提示消息的数量。
因此,在这些示例中,数据访问请求节点包括:预测器电路,该预测器电路预测下一数据访问请求将由第一数据存储节点还是第二数据存储节点完成,第一数据存储节点和第二数据存储节点被布置为使得在数据访问请求不是由第一数据存储节点完成的情况下,由第二数据存储节点完成该数据访问请求;以及发布电路,该发布电路发出供第一数据存储节点完成的数据访问请求,发布电路被配置为响应于预测器电路预测出给定数据访问请求将由第二数据存储节点完成,而发出供路由到第二数据存储节点的、给定数据访问请求可能需要由第二数据存储节点来完成的指示。属性可以指示数据访问请求是由第一数据存储节点还是第二数据存储节点完成;并且预测器电路可以被配置为响应于源指示而改变其预测操作。在示例中,属性包括成功指示,其指示数据访问请求是否是通过数据存储节点响应于数据访问提示消息而发起数据访问并且响应于后序数据访问请求而完成该数据访问来完成的。
因此,图18(如上所述操作)提供了以下示例:数据访问电路1810、1820、1830,该数据访问电路接收来自与数据访问电路进行数据通信的数据访问请求节点1800的数据访问请求,并且路由数据访问请求供从两个以上数据存储节点1830、1822、1806的群组中选择的一个或多个数据存储节点1830完成;确认电路1838,该确认电路向数据访问请求节点提供确认消息以指示数据访问请求的完成;以及指示电路1836,该指示电路将源指示与确认消息相关联,该源指示用于指示数据存储节点的群组中完成数据访问请求的一个或多个数据存储节点的属性。
从上面给出的各种示例将会认识到,确认电路和指示电路可以单独或一起实施。
上面的示例涉及数据源字段,其可以形成事务完成的确认的一部分。这样的布置的特征是确认将一定被发送,因此包括数据源字段作为确认的一部分、或将数据源字段与确认相关联不一定意味着系统的带宽需求增加(即,它不一定需要除了正常事务处理协议中发送的那些消息之外的任何附加消息)。这也意味着每个请求在完成时具有相关联的上面讨论的不同类型中的一个或多个类型的数据源字段信息。
然而,其他布置也是可能的,事实上确认电路并不是必须提供的。数据源字段或上述涉及这种字段的信息可以作为单独的消息被发送。图21是示意性流程图,其中在步骤2100生成适合于上述数据类型的指示,并且在步骤2110该指示以“推送(push)”的方式被发送(作为形成确认消息的一部分的数据源字段的一部分、或作为单独的消息)到事务发起节点(例如,系统中的RN)。在由图22的流程图示意性地示出的另一实施例中,在步骤2200,上述指示可以针对每个事务被生成,或在需要时被生成。然后,响应于步骤2210(其中事务发起节点RN请求指示),在步骤2220将指示提供给该请求节点。因此,图22涉及指示的“拉取(pull)”传送,而不是图21的“推送”技术。
图23是示出数据处理方法的示意性流程图,该方法包括:接收(在步骤2300)来自数据访问请求节点的数据访问请求;路由(在步骤2310)数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;向数据访问请求节点提供(在步骤2320)源指示,该源指示用于指示完成数据访问请求的一个或多个数据存储节点的属性;响应于源指示而改变(在步骤2330)数据访问请求节点的操作。
图24是示出数据存储方法的示意性流程图,该方法包括:接收(在步骤2400)来自数据访问请求节点的数据访问请求;路由(在步骤2410)数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;向数据访问请求节点提供(在步骤2420)确认消息,该确认消息用于指示数据访问请求的完成;以及将源指示与确认消息相关联(在步骤2430),该源指示用于指示数据存储节点的群组中完成数据访问请求的一个或多个数据存储节点的属性。
在本申请案中,使用用语“被配置...”意谓设备组件具有能够执行所定义操作的配置。在此上下文中,“配置”意谓硬件或软件的互连的排列或方式。例如,设备可以具有提供定义操作的专用硬件,或处理器或其他处理设备(例如,上述处理元件)可以被编程以执行功能。“被配置为”不暗示设备组件需要以任何方式改变以便提供所定义的操作。
尽管本文已参考附图详细地描述本技术的说明性实施例,但应理解,本发明并不限于这些精确实施例,并且在不偏离由所附权利要求定义的本技术的范畴及精神的情况下,本领域的普通技术人员可以在其中实施各种改变、添加及修改。例如,可以在不脱离本技术的范畴下,对从属权利项的特征与独立权利项的特征进行多种组合。

Claims (25)

1.一种数据处理装置,包括:
数据访问请求节点;
数据访问电路,该数据访问电路接收来自所述数据访问请求节点的数据访问请求并路由所述数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;以及
指示电路,该指示电路向所述数据访问请求节点提供源指示,以指示完成所述数据访问请求的所述一个或多个数据存储节点的属性;
所述数据访问请求节点被配置为响应于所述源指示而改变其操作。
2.根据权利要求1所述的装置,其中,所述属性包括标识哪些数据存储节点完成所述数据访问请求的信息。
3.根据权利要求1所述的装置,其中,所述属性包括标识完成所述数据访问请求的所述一个或多个数据存储节点的分类的分类信息。
4.根据权利要求3所述的装置,其中,所述分类指示所述数据访问请求节点与完成所述数据访问请求的所述一个或多个数据存储节点之间的数据传输路径的属性。
5.根据权利要求4所述的装置,其中,所述数据传输路径的属性指示所述数据传输路径的延迟。
6.根据权利要求3所述的装置,其中,所述数据存储节点被布置为存储级别的层级,并且所述分类指示完成所述请求的所述一个或多个数据存储节点的级别。
7.根据权利要求6所述的装置,其中,对于所述级别中的至少一个级别,该级别的数据存储节点包括高速缓存存储器,并且对于所述级别中的至少另一个级别,该级别的数据存储节点包括主存储器。
8.根据权利要求1所述的装置,其中,所述数据访问请求节点被配置为响应于所述源指示而改变所述数据访问请求节点对数据访问请求的发出。
9.根据权利要求1所述的装置,其中,所述属性包括加载指示,该加载指示用于指示完成所述数据访问请求的所述一个或多个数据存储节点的加载级别。
10.根据权利要求9所述的装置,其中:
所述数据访问请求节点被配置为访问两种以上数据类型;并且
所述数据访问请求节点被配置为响应于所述加载指示而改变访问所述两种以上数据类型的数据的优先级。
11.根据权利要求9所述的装置,其中:
所述数据访问请求节点包括预取电路;并且
所述数据访问请求节点包括控制电路以响应于所述加载指示而改变所述预取电路的操作。
12.根据权利要求11所述的装置,其中,所述数据访问请求节点被配置为响应于所述加载指示而改变以下各项中的一项或多项:
所述预取电路的请求速率;
所述预取电路的操作状态;
预取数据访问请求的状态指示;
所述预取电路的准确度要求;
延迟关键数据访问请求相对于非延迟关键数据访问请求的优先级;以及
预取操作相对于基于需求的数据访问操作的优先级。
13.根据权利要求1所述的装置,其中,所述数据访问请求节点包括:
预测器电路,该预测器电路预测下一数据访问请求将由第一数据存储节点还是第二数据存储节点完成,所述第一数据存储节点和所述第二数据存储节点被布置为使得在数据访问请求未由所述第一数据存储节点完成的情况下,由所述第二数据存储节点完成该数据访问请求;以及
发布电路,该发布电路发出供所述第一数据存储节点完成的数据访问请求,所述发布电路被配置为:响应于所述预测器电路预测出给定数据访问请求将由所述第二数据存储节点完成,而发出供路由到所述第二数据存储节点的需要由所述第二数据完成所述给定数据访问请求的指示。
14.根据权利要求13所述的装置,其中:
所述属性指示所述数据访问请求是由所述第一数据存储节点还是所述第二数据存储节点完成;并且
所述预测器电路被配置为响应于所述源指示而改变其预测操作。
15.根据权利要求14所述的装置,其中,所述属性包括指示所述数据访问请求是否是通过所述数据存储节点响应于数据访问提示消息而发起数据访问并且响应于后续数据访问请求而完成该数据访问来完成的成功指示。
16.根据权利要求1所述的装置,包括:
确认电路,该确认电路向所述数据访问请求节点提供确认消息以指示所述数据访问请求的完成;
其中,所述指示电路被配置为将所述源指示与所述确认消息相关联。
17.根据权利要求16所述的装置,其中,所述指示电路被配置为用所述确认消息来传播所述源指示。
18.一种数据存储装置,包括:
数据访问电路,该数据访问电路从与该数据访问电路进行数据通信的数据访问请求节点接收数据访问请求并路由所述数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;
确认电路,该确认电路向所述数据访问请求节点提供确认消息以指示所述数据访问请求的完成;以及
指示电路,该指示电路将所述确认消息与源指示相关联,所述源指示用于指示所述数据存储节点的群组中完成所述数据访问请求的一个或多个数据存储节点的属性。
19.根据权利要求18所述的装置,其中,所述属性包括标识哪些数据存储节点完成所述数据访问请求的信息。
20.根据权利要求18所述的装置,其中,所述属性包括标识完成所述数据访问请求的所述一个或多个数据存储节点的分类的分类信息。
21.根据权利要求18所述的装置,其中,所述属性包括指示所述源指示所指示的所述一个或多个数据存储节点的加载级别的加载指示。
22.根据权利要求18所述的装置,其中,所述数据存储节点中的至少一个数据存储节点包括存储器访问电路,被配置为:
响应于从与所述存储器访问电路进行数据通信的另一节点接收到的数据访问提示消息而发起对存储在存储器中的数据的数据访问,并且响应于从与所述存储器访问电路进行数据通信的另一节点接收到的后续数据访问请求而完成对存储在所述存储器中的数据的数据访问。
23.根据权利要求22所述的装置,其中:
所述属性包括指示所述数据访问请求是否是通过所述数据存储节点响应于数据访问提示消息而发起数据访问并且响应于后续数据访问请求而完成该数据访问来完成的成功指示。
24.一种数据处理方法,包括:
接收来自数据访问请求节点的数据访问请求;
路由所述数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;
向所述数据访问请求节点提供源指示,以指示完成所述数据访问请求的所述一个或多个数据存储节点的属性;以及
响应于所述源指示而改变所述数据访问请求节点的操作。
25.一种数据存储方法,包括:
接收来自数据访问请求节点的数据访问请求;
路由所述数据访问请求,供从两个以上数据存储节点的群组中选择的一个或多个数据存储节点完成;
向所述数据访问请求节点提供确认消息,以指示所述数据访问请求的完成;以及
将所述确认消息与源指示相关联,所述源指示用于指示所述数据存储节点的群组中完成所述数据访问请求的一个或多个数据存储节点的属性。
CN201810130281.0A 2017-02-08 2018-02-08 数据处理 Active CN108459877B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/427,421 US11314648B2 (en) 2017-02-08 2017-02-08 Data processing
US15/427,421 2017-02-08

Publications (2)

Publication Number Publication Date
CN108459877A true CN108459877A (zh) 2018-08-28
CN108459877B CN108459877B (zh) 2024-03-29

Family

ID=61283476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810130281.0A Active CN108459877B (zh) 2017-02-08 2018-02-08 数据处理

Country Status (5)

Country Link
US (1) US11314648B2 (zh)
KR (1) KR102494804B1 (zh)
CN (1) CN108459877B (zh)
GB (1) GB2561941B (zh)
TW (1) TWI830694B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375872A (zh) * 2018-09-27 2019-02-22 腾讯科技(深圳)有限公司 数据访问请求的处理方法、装置和设备及存储介质
CN111174825A (zh) * 2019-12-31 2020-05-19 同济大学 一种可接入多类型传感器的集线箱及其传感器管理方法

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
CN111406251B (zh) * 2018-08-24 2023-12-08 华为技术有限公司 数据预取方法及装置
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11016902B2 (en) * 2019-04-12 2021-05-25 Arm Limited Generating recovery data for an initial state of status data for a data handling transaction and predicting a revised state of the status data applicable to resolution of the data handling transaction
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
CN110232030B (zh) * 2019-06-12 2021-08-10 上海兆芯集成电路有限公司 多芯片系统及缓存处理方法
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
CN111104775B (zh) * 2019-11-22 2023-09-15 核芯互联科技(青岛)有限公司 一种片上网络拓扑结构及其实现方法
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1467290A2 (en) * 2003-04-10 2004-10-13 Hitachi, Ltd. Method, system and program product for file access in a storage device
US20070226449A1 (en) * 2006-03-22 2007-09-27 Nec Corporation Virtual computer system, and physical resource reconfiguration method and program thereof
JP2010146194A (ja) * 2008-12-17 2010-07-01 Fujitsu Ltd シミュレーション方法、シミュレーション装置およびシミュレーションプログラム
US20110213925A1 (en) * 2010-02-26 2011-09-01 Red Hat, Inc. Methods for reducing cache memory pollution during parity calculations of raid data
CN103597482A (zh) * 2011-01-20 2014-02-19 谷歌公司 在存储节点上存储数据
US20140195745A1 (en) * 2013-01-04 2014-07-10 International Business Machines Corporation Data Storage Mechanism Using Storage System Determined Write Locations
CN104756090A (zh) * 2012-11-27 2015-07-01 英特尔公司 提供扩展的缓存替换状态信息
US20160034399A1 (en) * 2014-08-01 2016-02-04 Analog Devices Technology Bus-based cache architecture
US20160364145A1 (en) * 2013-11-07 2016-12-15 Datrium, Inc. System and Method for Managing a Non-Volatile Storage Resource as a Shared Resource in a Distributed System
CN106257400A (zh) * 2015-06-18 2016-12-28 联发科技股份有限公司 处理设备、计算系统及处理设备访问主存储器的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999019805A1 (en) * 1997-10-10 1999-04-22 Rambus Incorporated Method and apparatus for two step memory write operations
CN101645038A (zh) * 2009-05-20 2010-02-10 中国科学院声学研究所 基于彼特森的网络存储结构的数据存储方法
WO2011002437A1 (en) * 2009-06-29 2011-01-06 Hewlett-Packard Development Company, L.P. Memory agent to access memory blade as part of the cache coherency domain
CA2930026C (en) 2013-11-11 2020-06-16 Amazon Technologies, Inc. Data stream ingestion and persistence techniques
US9696920B2 (en) 2014-06-02 2017-07-04 Micron Technology, Inc. Systems and methods for improving efficiencies of a memory system

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1467290A2 (en) * 2003-04-10 2004-10-13 Hitachi, Ltd. Method, system and program product for file access in a storage device
US20070226449A1 (en) * 2006-03-22 2007-09-27 Nec Corporation Virtual computer system, and physical resource reconfiguration method and program thereof
JP2010146194A (ja) * 2008-12-17 2010-07-01 Fujitsu Ltd シミュレーション方法、シミュレーション装置およびシミュレーションプログラム
US20110213925A1 (en) * 2010-02-26 2011-09-01 Red Hat, Inc. Methods for reducing cache memory pollution during parity calculations of raid data
CN103597482A (zh) * 2011-01-20 2014-02-19 谷歌公司 在存储节点上存储数据
CN104756090A (zh) * 2012-11-27 2015-07-01 英特尔公司 提供扩展的缓存替换状态信息
US20140195745A1 (en) * 2013-01-04 2014-07-10 International Business Machines Corporation Data Storage Mechanism Using Storage System Determined Write Locations
US20160364145A1 (en) * 2013-11-07 2016-12-15 Datrium, Inc. System and Method for Managing a Non-Volatile Storage Resource as a Shared Resource in a Distributed System
US20160034399A1 (en) * 2014-08-01 2016-02-04 Analog Devices Technology Bus-based cache architecture
CN106257400A (zh) * 2015-06-18 2016-12-28 联发科技股份有限公司 处理设备、计算系统及处理设备访问主存储器的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375872A (zh) * 2018-09-27 2019-02-22 腾讯科技(深圳)有限公司 数据访问请求的处理方法、装置和设备及存储介质
CN109375872B (zh) * 2018-09-27 2020-07-24 腾讯科技(深圳)有限公司 数据访问请求的处理方法、装置和设备及存储介质
CN111174825A (zh) * 2019-12-31 2020-05-19 同济大学 一种可接入多类型传感器的集线箱及其传感器管理方法

Also Published As

Publication number Publication date
GB2561941A (en) 2018-10-31
US20180225216A1 (en) 2018-08-09
KR102494804B1 (ko) 2023-02-02
CN108459877B (zh) 2024-03-29
TW201833789A (zh) 2018-09-16
TWI830694B (zh) 2024-02-01
GB201801093D0 (en) 2018-03-07
US11314648B2 (en) 2022-04-26
KR20180092277A (ko) 2018-08-17
GB2561941B (en) 2019-08-14

Similar Documents

Publication Publication Date Title
CN108459877A (zh) 数据处理
CN101604295B (zh) 优化基于目录的一致性协议中的并发访问
CN102640124B (zh) 用于数据流的储存感知预取的计算系统、方法以及预取单元
JP4700773B2 (ja) スイッチをベースとするマルチプロセッサシステムに使用するための順序サポート機構
US7861042B2 (en) Processor acquisition of ownership of access coordinator for shared resource
US7318126B2 (en) Asynchronous symmetric multiprocessing
CN109446112B (zh) 用于预取流量的改进控制的方法和系统
US8656142B2 (en) Managing multiple speculative assist threads at differing cache levels
CN100394407C (zh) 低等待时间存储器系统访问
US20090307329A1 (en) Adaptive file placement in a distributed file system
EP2686774B1 (en) Memory interface
CN1952877A (zh) 用于软件可配置预取器的方法、装置和系统
TWI514262B (zh) 於處理器電路內識別及排定關鍵指令的優先次序之方法及系統
US20170308468A1 (en) Performance-driven cache line memory access
CN110334036A (zh) 一种实现缓存数据调度的方法和装置
CN101520759A (zh) 动态优先级外部事务处理系统
US20160117118A1 (en) System and methods for processor-based memory scheduling
Franques et al. Widir: A wireless-enabled directory cache coherence protocol
Wang et al. GeoCol: A geo-distributed cloud storage system with low cost and latency using reinforcement learning
JP7419261B2 (ja) ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク
US7996614B2 (en) Cache intervention on a separate data bus when on-chip bus has separate read and write data busses
US10713187B2 (en) Memory controller having data access hint message for specifying the given range of one or more memory addresses
CN117980889A (zh) 用于管理预取事务的装置和方法
CN106372006B (zh) 一种数据预取方法和装置
Pandey et al. Survey on Various MapReduce Scheduling Algorithms

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