CN110235113B - 存储器控制器和用于数据处理的系统和方法 - Google Patents
存储器控制器和用于数据处理的系统和方法 Download PDFInfo
- Publication number
- CN110235113B CN110235113B CN201880009507.XA CN201880009507A CN110235113B CN 110235113 B CN110235113 B CN 110235113B CN 201880009507 A CN201880009507 A CN 201880009507A CN 110235113 B CN110235113 B CN 110235113B
- Authority
- CN
- China
- Prior art keywords
- data
- data access
- circuitry
- memory
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 168
- 238000012545 processing Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 99
- 238000004891 communication Methods 0.000 claims abstract description 21
- 230000008859 change Effects 0.000 claims description 38
- 230000001427 coherent effect Effects 0.000 claims description 28
- 238000013479 data entry Methods 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 11
- 238000003672 processing method Methods 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 2
- 238000001514 detection method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache 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)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Photoreceptors In Electrophotography (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)的示例。
此处,术语“同调”意味着通过一个节点写入至同调存储器系统中的存储器地址的数据与通过节点中的另一者从同调存储器系统中的该存储器地址读取的数据一致。因此,与同调函数相关联的逻辑作用为确保在数据处理异动(transaction)发生之前,若要存取的数据条目的版本过时(由于对同一数据条目的另一副本所作的修改),则要存取的副本首先执行更新。类似地,若数据处理异动涉及更改数据条目,则同调逻辑避免与数据条目的其他现有副本起冲突。
串行化指的是来自潜在多个请求节点的存储器存取请求的处理的定序,以及可能采取待服务的不同潜伏期的定序,以便那些请求的结果以正确的顺序呈现给请求节点,并且正确地处理请求之间的任意依赖关系(例如,在数据写入至同一地址之后读取数据)。
可以经由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示意性地示出预测电路系统;
图8示意性地示出预测电路系统的一部分;
图9示意性地示出预测电路系统的另一示例;
图10示意性地示出存储器控制器;以及
图11和图12为示出方法的示意性流程图。
具体实施方式
在参照附图讨论实施例之前,提供了实施例的以下描述。
示例性实施例提供了一种存储器控制器,包括:
存储器存取电路系统,该存储器存取电路系统被配置为:
用于响应于数据存取提示消息启动储存在存储器中的数据的数据存取,该数据存取提示消息是从与存储器控制器数据通信的另一节点接收的;
用于响应于数据存取请求存取储存在存储器中的数据,该数据存取请求是从与存储器控制器数据通信的另一节点接收的,以及
用于提供所存取的数据作为对数据存取请求的数据存取响应。
在示例性实施例中,与数据存取请求关联的潜伏期(latency),例如经由诸如主节点的另一节点传递至存储器控制器的数据存取请求,可能通过提供存储器控制器以响应数据存取提示而潜在地减少,该数据存取提示指出可能的后续数据存取请求。当接收后续数据存取请求时,可能已经开始相关数据存取。
在示例中,数据存取提示消息及数据存取请求每个通过一定范围的一个或多个存储器地址来指定数据存取。例如,当存储器存取电路系统已经响应于数据存取提示消息针对给定范围的一个或多个存储器地址启动数据存取时,存储器存取电路系统被配置为仅当存储器控制器接收指定给定范围的一个或多个存储器地址的后续数据存取请求时,提供所存取数据作为数据存取响应。以此方式,数据存取提示消息可启动数据存取,但该数据存取并未完成,除非接收到后续数据存取请求。
对于响应的传递路径,例如在数据存取请求经由诸如主节点的另一节点到达的情况下,数据存取请求可指定与存储器控制器数据通信的另一节点,此数据存取响应应提供至此另一节点。
在示例中,接收节点例如取决于当前负载对数据存取提示消息起作用或者不起作用可能是可选的。在这样的示例中,存储器存取电路系统被配置为响应于所接收的数据存取提示消息决定是否启动数据存取。
示例性布置还可提供一种数据处理系统,该数据处理系统包括:一个或多个主控节点,每个具有关联高速缓存;一个或多个从属节点,每个从属节点包括上文定义的存储器控制器;以及主节点,用于控制由数据处理系统储存的数据中的同调性。
在示例中,一个或多个主控节点被配置为将数据存取请求发出至主节点;以及主节点被配置为数据存取请求是否可由主节点履行或者数据存取是否需要对一个或多个从属节点执行存取,以及当需要对一个或多个从属节点执行存取时,主节点将数据存取请求发送至一个或多个从属节点。例如,一个或多个主控节点可被配置为发送以下任一者:将数据存取请求发送至主节点;或者将数据存取请求发送至主节点以及将数据存取提示消息发送至一个或多个从属节点的这一者,当主节点不能履行该数据存取时一个或多个从属节点将履行由数据存取请求指定的数据存取。
在示例中,什么应由主控节点发出的选择可由一个或多个主控节点作出,所述一个或多个主控节点包括用于确定是否发送数据存取提示消息的预测电路系统。
在示例中,预测电路系统被配置为响应于指示确定是否将数据存取提示消息发送至从属节点,此等指示接收自主节点及从属节点中的一者或两者,指出从属节点是否履行一个或多个上述数据存取请求。
另一示例性实施例提供一种存储器控制方法,该存储器控制方法包括:
响应于数据存取提示消息启动储存在存储器中的数据的数据存取,该数据存取提示消息是从与存储器控制器数据通信的另一节点接收的;
响应于数据存取请求存取储存在存储器中的数据,该数据存取请求是从与存储器控制器数据通信的另一节点接收的;以及
提供所存取的数据作为对数据存取请求的数据存取响应。
另一示例性实施例提供一种数据处理电路系统,包括:
预测电路系统,用于储存预测数据,该预测数据指出最近数据存取请求是由第一数据源还是第二数据源履行,以及用于从预测数据预测下一数据存取请求将由第一数据源还是第二数据源履行,布置第一数据源和第二数据源以便若数据存取请求不由第一数据源履行,则由第二数据源履行;以及
发出电路系统,用于将数据存取请求发出至第一数据源,该发出电路系统被配置为将指示发出至第二数据源,该指示为响应于预测电路系统预测给定数据存取请求将由第二数据源履行而使得给定数据存取请求可能需要由第二数据源履行。
在这些示例性实施例中,基于关于数据是否将由第二数据源履行的预测,指示(例如读取提示消息)可发出至或者不发出至第二数据源。以此方式,传输带宽可以保存(相比于针对每次数据存取发送读取提示消息),但仍然具有潜能以通过允许第二数据源响应于读取提示消息启动数据存取来减少潜伏期。
在一些示例中,预测电路系统被配置为响应于从第一数据源和第二数据源中的一者或两者接收的信息来储存预测数据,此信息指出哪个数据源履行最近数据存取请求。预测可基于这种储存的数据。
在一些示例中,预测数据包括计数值,预测电路被配置为根据最近数据存取请求是由第一数据源还是第二数据源履行来改变计数值。例如,预测电路系统可以包括用于比较计数值与阈值的比较器。
在一些示例中,预测电路系统被配置为响应于正由第一数据源履行的最近数据存取将计数值改变了第一变化量,以及响应于正由第二数据源履行的最近数据存取将计数值改变了第二变化量,该第二变化量具有与第一变化量相反的极性。这些变化量可能为固定的或者预测电路可被配置为改变第一变化量和第二变化量的一者或两者。
为了允许可能使用读取提示消息的不同可能性,在一些示例中,预测电路系统被配置为针对两种或更多种类的数据存取请求产生相应预测。例如,两种或更多种类的数据存取请求可从由以下各项组成的列表中选出:
数据读取请求;
指令提取请求;和
地址转换提取请求。
为了允许不同数据存取请求之间的差异,在一些示例中,预测电路系统被配置为根据以下各者的一个或多个产生预测:
启动数据存取请求的处理指令的程序计数值;
响应于数据存取请求存取的数据条目的地址。
在一些示例中,预测电路系统被配置为由程序计数值和数据条目的地址的一者或两者产生索引,以及用于通过索引存取计数值表。为了减轻混迭(通过同一索引但取决于程序计数和/或地址的不同值对同一预测数据的不期望存取),在一些示例中,预测电路系统被配置为由程序计数值和数据条目的地址的一者或两者产生标签以及用于储存与通过索引存取的计数值表中的项目关联的标签。例如,预测电路系统可被配置为取回所储存的标签以及比较所取回的标签与由程序计数及数据条目的地址的一者或两者产生的标签。
在一些示例中,预测电路系统被配置为通过相应索引存取两个或更多个计数值表,这样的相应索引由程序计数值及数据条目的地址的一者或两者的不同相应部分产生。例如,当两个或更多个表格具有与产生标签匹配的储存标签时,预测电路系统被配置为根据由两个或更多个表格中的一者储存的计数值产生预测,其中此索引由程序计数值及数据条目的地址的一者或两者的更大数量的位产生。
示例性布置还提供一种数据处理设备,包括:
一个或多个主控节点,每个如上文定义的电路系统以及每个具有关联高速缓存;
主节点,提供第一数据源,此主节点被配置为检测它是否可通过从高速缓存的一者或多者获得所请求数据来履行给定数据存取请求,以及被配置为当主节点不能履行给定数据存取请求时请求来自第二数据源的请求数据;以及
一个或多个从属节点,提供第二数据源,每个从属节点具有更高阶存储器。
在一些示例中,主控节点被配置为将传输请求发出至主节点,请求向一个或多个从属节点的一者的数据传输;以及主节点被配置为串行化传输请求及存取请求至一个或多个从属节点,以便写入至从属节点处的存储器地址的数据与响应于后续存取请求从该存储器地址读取的数据一致。
在一些示例中,主节点被配置为控制跨一个或多个主控节点的高速缓存及一个或多个从属节点的更高阶存储器的同调性作为同调存储器系统,以便通过一个节点写入至同调存储器系统中的存储器地址的数据与通过节点中的另一者从同调存储器系统中的该存储器地址读取的数据一致。
另一示例性实施例提供一种数据处理方法,该数据处理方法包括:
储存预测数据,该预测数据指出最近数据存取请求由第一数据源还是第二数据源履行;
从预测数据预测下一数据存取请求将由第一数据源还是第二数据源履行,布置第一及第二数据源以便若数据存取请求不由第一数据源履行,则由第二数据源履行;以及
将指示发出至第二数据源,该指示为响应于预测电路系统预测给定数据存取请求将由第二数据源履行而使得给定数据存取请求可能需要由第二数据源履行。
现参照附图,图1示意性地示出数据处理设备,其表现为由网络100互连的装置网络。可提供设备作为单个集成电路系统,例如所谓芯片上系统(SoC)或芯片上网络(NoC),或者作为多个互连离散装置。
各种所谓节点经由网络100连接。这些节点包括一个或多个主节点(HN)110,其监察网络系统内的数据同调性;一个或多个从属节点(SN),诸如更高阶高速缓存120(对于“更高阶”的引用关于由请求节点提供的高速缓存并且在下文描述);主存储器130和外围装置140。在图1中所示的从属节点的选择作为示例,以及可以提供零个或更多个每种类型的从属节点。
在此示例中,从属节点120、从属节点130每个包含存储器控制器(DMC)122、存储器控制器132及存储器(DRAM)124、DRAM 134。
图1还示出多个所谓请求节点(RN)150、RN 160、RN 170,其在此示例中按照CHI(同调集线器接口)协议操作。
RN 150、RN 160、RN 170为具有关联高速缓存存储器152、关联高速缓存存储器162、关联高速缓存存储器172的完全同调RN(RN-F)。RN 170也可为RN-F并且可具有高速缓存存储器172。
更一般而言,节点可以为完全同调或者输入/输出(I/O)同调。完全同调的HN或RN(分别为HN-F、RN-F)包括同调的高速缓存储存器。例如,HN-F 110包含高速缓存储存器112。
完全同调SN(SN-F)与HN-F配对。HN-F可管理存储器区域的同调性。
图1提供一种数据处理系统的示例,该数据处理系统包括:一个或多个主控节点150、主控节点160、主控节点170,每个具有关联高速缓存存储器152、关联高速缓存存储器162、关联高速缓存存储器172;一个或多个从属节点120,每个包含存储器控制器;及主节点110,用于控制由数据处理系统储存的数据中的同调性。
类似地,图1提供数据处理设备的示例,此数据处理设备包括:一个或多个主控节点150、主控节点160、主控节点170,每个主控节点包括预测器及发出电路系统(下文论述)及每个具有关联高速缓存存储器152、关联高速缓存存储器162、关联高速缓存存储器172;提供第一数据源的主节点110,此主节点被配置为检测它是否可通过从高速缓存存储器的一者或多者获得请求数据来履行给定数据存取请求,并且被配置为当主节点不能履行给定数据存取请求时请求来自第二数据源(诸如从属节点120、从属节点130)的请求数据;以及一个或多个从属节点120、从属节点130,提供第二数据源,每个从属节点具有更高阶存储器。
图2为示出数据读取存取的示意性时序图。
在图2中,请求节点RN-F 150、请求节点RN-F 160、请求节点RN-F 170的一者企图读取由主节点HN-F 110监察(从同调性的视角)的数据。HN-F充当所谓同调性点(PoC)。根据管理暂时重迭数据存取请求,或者其中一个数据存取请求的结果至少与另一数据存取请求的完成时序相关的数据存取请求的处理的定序,HN-F也可充当所谓串行化点(PoS)以确保以适当顺序启动和/或完成此类数据存取请求。
因此,在示例中,主控节点被配置为将传输请求发出至主节点,该传输请求是请求向一个或多个从属节点之一的数据传输;以及主节点被配置为充当PoS以串行化传输请求及存取请求至一个或多个从属节点,以便写入至从属节点处的存储器地址的数据与响应于后续存取请求从存储器地址读取的数据一致。在示例中,主节点被配置为充当PoC以控制跨一个或多个主控节点的高速缓存存储器及一个或多个从属节点的更高阶存储器的同调性作为同调存储器系统,以便通过一个节点写入至同调存储器系统中的存储器地址的数据与通过节点的另一者从同调存储器系统中的该存储器地址读取的数据一致。
请求节点将数据读取请求200发送至主节点。主节点检测它是否可服务或履行请求本身,在此情况下它将数据读取响应205提供至请求节点并且完成此过程。
通过主节点服务读取请求可涉及主节点从其自身的高速缓存(若它具有一个)取回请求数据和/或从由主节点管理的高速缓存存储器(诸如高速缓存存储器152、高速缓存存储器162、高速缓存存储器172的一者或多者)取回请求数据,此主节点在其作用中充当PoC。在一些示例中,通过咨询由作为PoC(诸如所谓监听过滤器)的主节点维持的记录,在其作为PoC的控制下指出每个高速缓存保持的数据,或者通过查询高速缓存的一者或多者,主节点可检测它是否保持请求数据的最新或有效版本,或高速缓存在其同调性管理下是否保持请求数据的最新或有效版本。用于检测主节点是否可服务读取请求的由主节点使用的特别技术取决于使用的系统架构。主节点是否可服务读取请求的检测可为先发制人的检测(例如,使用如上文提及的监听过滤器),或可为故障引起的检测,通过主节点成功地完成对服务读取请求的尝试。
通过主节点服务读取请求意味不对存储器120、存储器130执行存取以服务读取请求。
然而,若主节点检测到它不能服务请求本身,则它依次将读取请求210发送至适当的从属节点SN 120、SN 130。从属节点的存储器控制器(DMC)接收请求,并且作为异动215、异动220,从存储器(DRAM)读取所需数据。随后存储器控制器将作为读取响应225的数据经由主节点回传至请求节点,或者直接回传至请求节点(如在图2的示例指出)。在示例中,由主节点提供的读取请求可指定与存储器控制器数据通信的另一节点(诸如RN),此读取响应应提供至此另一节点。
因此,主节点和从属节点分别提供第一数据源及第二数据源的示例,布置此第一第二数据源及第二数据源,以便若数据存取请求不由第一数据源履行,则由第二数据源履行。
存储器存取中的潜伏期对系统效能(至少在一些情况下)是重要的乃至是关键的。在图2的示例中,引入潜伏期(在此情况下存储器读取请求必须传递至DRAM),如主节点接收请求200与发出请求210之间的延迟230,以及DMC接收请求210与启动异动215之间的延迟235。
图3为根据本公开的示例性实施例示出数据读取存取的示意性时序图。
如参照图2描述,RN-F发出数据读取请求300,并且将所谓“读取提示”305直接发出至从属节点的存储器控制器,若主节点本身不能实行此举,则此从属节点将必须服务或履行读取请求。RN-F可检测出哪个从属节点与来自系统配置或存储器映像信息的读取请求有关。例如,这可为所谓系统地址映像(SAM),其由系统级配置建立并且在图1的网络或设备中在地址范围与目的地之间提供映像。在示例性布置中,每个节点具有唯一(在系统内并且当时)标识符(ID)。封包指定待发送到的目标ID,及应回传响应至其的源ID。
可将诸如读取请求的封包发送至主节点(或杂项节点,并未结合本技术进一步论述),此主节点可为HN-F(完全同调)或HN-I(输入/输出同调)。RN的SAM逻辑可在地址上使用散列函数以得出待使用的特定HN的选择。额外配置信息将特定HN映射至节点ID。
若HN-F本身不履行数据存取请求,RN-F 150、RN-F 160、RN-F 170也提供类似于上述SAM功能以检测请求将由哪个从属节点处理。所以,有人通过每个RN-F的SAM功能将一组一个或多个从属节点映射至地址范围。因此,对于相应地址,可能存在映射至彼地址的HN,其为RN-F将发送读取请求的地方,且还映射至同一地址的SN-F,其为RN-F将发送读取提示的地方(若适合)。使用从属节点的目标ID编址读取提示,而使用HN的目标ID编址读取请求。
因此,在示例中,请求或主控节点被配置为存取地址配置信息,其将地址或地址范围(例如,关于数据存取请求)映射至主节点及从属节点,例如使得主控或请求节点可将适于待存取的地址或地址范围的数据存取请求(诸如读取请求)发至主节点,以及将适于同一地址或地址范围的数据存取提示(诸如读取提示)发至从属节点。
主节点如上所述地进行,将所需数据作为读取响应310返回,或者将读取请求315发送至从属节点(同样,若需要,使用类似的SAM功能来检测要使用哪个从属节点,及/或上述配对布置)。然而,在目前情况下,从属节点已经启动异动320、异动330以响应于在读取提示305的时间335的接收来取回所需数据。因此,不是从属节点等到接收读取请求315才开始异动320,而是存储器控制器能够响应于读取提示305的接收而较早地开始异动320。如前所述,一旦存储器控制器接收所需数据,则它提供所需数据作为对RN-F的读取响应340。
由于提供读取提示305而提早开始的异动320、异动330允许时段345的潜伏期的省免。此类时段的长度取决于系统的许多不同设计参数及方面,但在示例性实施例中,关于自DRAM读取数据所花费的全部时间,此类省免可能为重要的。
图4为仅参照图3描述的图解方法的示意性流程图。在图4中,中断垂直(如绘制)线分隔请求节点的活动、主节点的活动及从属节点的活动。
图4中图示的过程开始于请求节点在步骤400发出读取请求及读取提示。读取请求发至与所需地址或地址范围相关的主节点,以及读取提示发至与地址或地址范围相关的从属节点,并且若主节点不能服务读取请求,则从属节点将需要服务读取请求。读取请求及读取提示可由请求节点以任意顺序或共同发出。
在步骤405,主节点接收读取请求300并且在步骤410检测读取请求是否可由主节点履行。例如,主节点可在高速缓存、监听过滤器等等中查寻请求以检测读取请求300是否可通过主节点满足。
若答案为是,则在步骤415主节点履行读取请求,并且在步骤420向请求节点提供读取响应310。
若在步骤410答案为否,则在步骤425主节点将请求315发送至从属节点。此结束了主节点在此特定异动中的参与。
单独地,在步骤430,从属节点从请求节点接收提示305,以及在步骤435,启动异动320以存取存储器。随后在从属节点处的控制流程可按照两个路径中的一者,并且此等路径之间的区别将在下文进一步论述。在一个路径中,若接收提示305但不接收后续读取请求315,意味(例如)提示305为不必要的并且主节点实际上可使用读取响应310服务请求,则在步骤440丢弃提示以及终止响应于提示的接收启动的存储器异动。
另一方面,若已经接收请求315,则完成异动320、异动330,尽管由于步骤435处的提前启动比其他的略微早,但是在步骤450处提供响应340之前在步骤445处履行读取请求。
在图1示出的类型的网络中读取提示可为一种消息或指令,其不同于至少一些其他类型的消息或指令,不需要作用,以及不同于至少一些其他类型或消息,不需要响应。从属节点可丢弃或忽视读取提示,例如若从属节点已经完全加载其他动作。甚至,中间节点可以丢弃或不能传递读取提示,例如若完全加载中间节点的缓冲和/或传输容量。不需要从属节点提供关于读取提示的响应或确认。因此,在示例中,存储器存取电路系统可被配置为响应于所接收的读取提示决定是否启动数据存取。
在图4中,一个或多个主控节点被配置为将数据存取请求发至主节点(400);以及主节点被配置为检测数据存取请求是否可由主节点履行或者数据存取是否需要对一个或多个从属节点执行存取(410),以及当需要对一个或多个从属节点执行存取时,主节点将数据存取请求发送至一个或多个从属节点(425)。在示例中,一个或多个主控节点可被配置为发送以下任一者:将数据存取请求200发送至主节点;或者将数据存取请求300发送至主节点以及将数据存取提示消息305发送至一个或多个从属节点在的一者,当主节点不能履行数据存取时所述一个或多个从属节点将履行由数据存取请求指定的数据存取。
图5示意性地图示请求节点RN-F 500的功能的部分。此示例关于单个处理器核心(如下文描述),但可同样地应用于处理器群组或“丛集”。处理器核心510基于处理器指令执行处理操作并且亦存取高速缓存520。处理器核心经由图1中的网络100启动数据处理异动并且包含用于发出和处理此种异动的电路系统530。
电路系统530包括:预测电路系统532、历史储存器534、未完成的异动缓冲器536及发出逻辑538。预测电路系统532及历史储存器534的功能将在下文论述。发出逻辑538处理数据读取或写入请求至网络的发出,以及未完成的异动储存器536保持已经发出及尚未接收完成响应的请求的细节。
因此,在图5中,一个或多个主控节点500包括用于确定是否发送此数据存取提示消息的预测电路系统532。
图5也提供数据处理电路系统的示例,此数据处理电路系统包括:预测电路系统532,用于储存预测数据(例如在历史储存器534中),此预测数据指出最近数据存取请求由第一数据源(诸如主节点)还是第二数据源(诸如DRAM)履行,以及用于从预测数据预测下一个数据存取请求将由第一数据源还是第二数据源履行,布置第一及第二数据源以便若数据存取请求不由第一数据源履行,则由第二数据源履行;以及发出电路系统538,用于将数据存取请求300发至第一数据源,发出电路系统被配置为将指示(诸如读取提示305)发出至第二数据源,此指示为响应于预测电路系统预测给定数据存取请求将由第二数据源履行而使得给定数据存取请求可能需要由第二数据源履行。
图6示意性地示出预测电路系统532的操作的示例。例如,历史储存器534维持计数值。响应于关于如何处理先前读取异动接收的信息605,计数值由变化逻辑600改变。例如,若处理读取异动以便自主节点接收其响应,则由历史储存器534保存的计数可递减,例如减少一。若读取响应指出处理由DRAM处理,则由历史储存器534保存的计数可递增,例如增加一。
比较器610比较由历史储存器534保存的最近计数与阈值620。若当前计数大于阈值(指出已经由DRAM处理大量最近的异动),则预测逻辑532可对发出电路系统538指出(例如通过信号615)与发出读取请求同时发出读取提示。另一方面,若计数值小于或等于阈值,则信号615可指出不发出读取提示。
应注意,若所谓命令带宽允许,则读取提示可与读取请求同时发出。亦即,若提供实体总线以传送此种命令及总线上的间隙允许同时发出两者,则此可发生。若读取请求及读取提示必须在不同时间发出,则在一些示例中,它为关于首先发出哪一者的任意选择。
使用图6中示出的类型的电路系统的一个原因(及在下文论述的其他示例中)为避免其中在每个读取请求旁边或与每个读取请求关联发出读取提示的情况。此举可以将负重置于整个系统上,因为需要将读取提示跨网络传播至相关从属节点。因此,尽管在每个读取请求下发出读取提示可(至少在一些示例中)保证在主节点不能服务读取请求的情况中满足上述潜伏期优点,此将根据可能过载可用于在节点之间传递信息的消息传输带宽而损害系统效能。因此,图6中示出类型的电路系统,或将在下文论述的其他示例,可提供关于读取提示是否可能与特定读取请求结合有用或适当的预测或预计。以此方式,发出较少读取提示(与在每个读取请求下发出读取提示的比较情况中相比),但图6的电路系统或待在下文论述的其他示例的目标为实际上发出的读取提示将倾向于为对相应读取请求为有用的或适当的读取提示。
应注意,如上文论述,读取提示不一定由中间节点转发或由接收从属节点作用。因此,在一些示例中,如正在RN处提供的此处论述类型的预测电路系统可改为或另外在中间节点或从属节点处提供,从而为中间节点和/或从属节点提供关于是否分别转发和/或作用读取提示的信息。
变化逻辑600处理由历史储存器534保存的计数的递增或递减。递增的大小及递减的大小为一或者甚至为相同的并非必需。例如,计数可针对由主节点处理的每次异动递减一,但针对由DRAM处理的每次异动递增二。在一些示例中,增量及减量可在操作期间在适合的基础上变化,例如若发出电路系统538检测到在与例如发出读取提示的目标速率比较中正发出太多或太少读取提示。同样地,阈值620可例如通过发出电路系统538在相同的基础上调适。当异动由DRAM处理时递增计数及当由主节点本身处理时递减计数亦并非必需。只要变化具有相反的极性,则可使用任一个功能。同样地,取决于由变化逻辑600应用的变化的极性,由比较器610执行的测试可为以下各者的任一者:大于阈值620,大于或等于阈值620、小于阈值620,或者小于或等于阈值620。通常可布置与阈值620的比较,以便(使用变化及比较的任一极性)正由DRAM服务的请求的优势将倾向于导致预测电路系统指出下一个读取请求应伴有读取提示,以及正由主节点服务的请求的优势将倾向于导致预测电路系统指出下一个读取请求应不会伴有读取提示。通常,在示例中,预测电路系统被配置为响应于正由第一数据源履行的最近数据存取将计数值改变了第一变化量,以及响应于正由第二数据源履行的最近数据存取将计数值改变了第二变化量,此第二变化量具有与第一变化量相反的极性。如论述,可使用适当的变化,以便在示例中预测电路系统被配置为改变第一变化量和第二变化量中的一者或两者。
在这些示例中,预测数据包含计数值,预测电路系统被配置为根据最近数据存取请求由第一还是第二数据源履行来改变计数值。
图6的示例提供单个计数器并且因此提供基于程序的相控操作的预测的示例,以便程序可能陷入通用高速缓存-缺失或通用高速缓存-命中行为。单个计数器提供一种优美简单的方式来追踪对高速缓存-命中或高速缓存-缺失操作的偏移。在其他示例中,使用更复杂的计数布置,提供相对更详细的预测布置。
信息605的使用可提供示例,其中预测电路系统被配置为响应于指示605确定是否将数据存取提示消息发送至从属节点,该指示接收自主节点及从属节点中的一者或两者,指出从属节点是否履行一个或多个上述数据存取请求。在示例中,预测电路系统被配置为响应于接收自第一及第二数据源中的一者或两者的信息来储存预测数据,此信息指出哪个数据源履行最近数据存取请求。
图6的示例使用由比较器610执行的与阈值的“硬”比较(用于比较计数值与阈值的比较器的示例),来关于是否应发出读取提示给出是/否结果。在其他示例中,计数的大小可提供提示会有用的可能性指示,以便比较器可产生关于是否基于此可能性及其他因素(诸如产生读取提示的速率对所需速率,如上文论述)发送读取提示的指示。所以,计数可替代地指出“软”可能性而不是用作硬比较。
RN及/或预测电路系统可储存指出读取提示是否实际上针对特别读取请求发出的信息。此信息可以下文论述的示例性方式与来自从属节点关于读取提示是否有用的返回信息结合使用,及/或与自从属节点返回的指出从属节点服务特定读取请求的信息结合使用。
图7示意性地示出预测电路系统的多个示例700、示例710、示例720,例如一个针对读取异动的多种分类的每一者,诸如:(i)数据读取操作;(ii)指令提取操作;(iii)存储器地址转换信息提取,例如由存储器管理单元(MMU)使用。预测电路系统700、预测电路系统710、预测电路系统720可具有在图6中图示的类型或具有下文论述的类型。根据异动730的类型,示例700至示例720的相应一者可选中以由示意性多任务器740操作。适当预测电路系统的输出用作当前预测,以及向相应预测电路系统提供接收回的指出预测是否适当的信息(诸如先前请求由主节点还是由DRAM处理的指示605,但在下文论述的其他示例中,可额外或替换提供更多详细信息)。
因此,图7提供示例,其中预测电路系统被配置为针对两种或更多种类的数据存取请求而产生相应预测。例如,两种或更多种类的数据存取请求可以自由数据读取请求、指令提取请求及地址转换提取请求组成的列表中选出。
图8示意性地图示由表800提供,及由组合器820产生的地址信息810编址的计数值或其他信息的表,组合器820组合例如适于启动当前读取操作的指令的程序计数值的位和/或正由当前操作存取的实体地址(PA)的位(例如,在正存取的一定范围的地址中的最低实体地址)。由组合器820执行的组合可例如为散列操作、所谓折叠操作(其中相应值的位群组彼此组合)等等。
表800保存多个计数值。响应于地址信息810,一个计数值经选择以用于存取并且作为计数值805输出(例如,输出至类似于图6的比较器610的比较器)。当接收关于先前读取请求(例如,它由主节点还是DRAM服务)的结果的信息605时,例如使用变化逻辑600或类似的(例如递增或递减),改变适于彼读取请求的相应计数值(如通过组合器820使用适于彼读取请求的PA/PC信息所决定的)。
所以,图7提供根据一种读取请求(按照其操作)分割的预测电路系统的示例。图8提供取决于与读取请求有关的PC及PA的一者或两者(按照其操作)分割的预测电路系统的示例。
应注意,组合器820的操作可导致所谓混迭的情况,其中PA及PC(的一者或两者)的不同值集合可导致相同地址信息810的产生。此潜在问题可由将在下文论述的图9的示例至少部分地减缓。
图9示意性地示出预测电路系统的另一示例。此处,计数值储存在表中,例如具有256个项目(因此由八位索引编址)的表,以便自正存取的当前程序计数器及实体地址的一者或两者所导出的值用于产生索引来选择适当的计数值。
在此示例中,提供三个此种表900、表910、表920。在所有情况下,索引通过正存取的程序计数器及/或实体地址的位的不同组合而产生。通过相应折叠/散列逻辑905、折叠/散列逻辑915、折叠/散列逻辑925执行索引的产生。
折叠/散列逻辑905对程序计数器及实体地址的全部32位(在本示例中)运算。在示例中,它例如通过将程序计数器及实体地址值的每一者分割成每个8位的部分(例如,在LSB开始且在MSB终止的连续8位部分)及将彼等部分添加在一起而不传送(互斥或运算)来将此等值折叠在一起。然而,可使用其他位压缩或散列方法。所得索引用于取回表900中的适当项目。
表900中的每个项目储存相应计数值及标签。标签亦由程序计数器及/或实体地址产生,但使用不同的折叠或散列方法。标签储存在表900中的计数值旁边并且亦由折叠/散列逻辑905单独地再生。当存取表项目时,不仅计数906输出而且与标签908比较的储存标签907由折叠/散列逻辑905产生。比较器909检测两个标签值是否相同。若它们相同,则由比较器930执行的计数值与阈值(thr1)的比较与预测有关,并且响应于关于读取请求的结果接收回的信息更改相应计数值(例如,通过类似于变化逻辑600的变化逻辑,并未在图9中图示)。若标签值不相同,则此可能仅意味着将较长地址值折叠或散列成较短索引值的混迭效应意味着不正确项目已经针对程序计数器及实体地址读出。在此情况下,由比较器930执行的比较并不用作预测过程的部分。
通过折叠/散列逻辑915执行类似布置,除了它仅使用程序计数器及/或实体地址的最低有效16位。同样地,折叠/散列逻辑925仅使用程序计数器及/或实体地址的最低有效8位。每个使用比较器909及比较器930的类似布置。
所以,折叠/散列逻辑905、915、925的三种情况使用PC/PA位的相应不同部分(例如,相应不同大小部分)以产生索引及标签。较小部分更倾向于上述混迭类型。若表的两者或更多者的标签的比较证实为肯定的(标签匹配),则使用与来自表的彼一者的计数值的阈值比较,其使用程序计数器/实体地址的更大量的位来产生其索引。换言之,更高级(如在图9中绘制)的表在具有匹配标签的多个表格的情况中使用。
在其他示例中,最近请求的结果的历史,例如1用于指出读取请求由主节点服务以及0用于指出读取请求由DRAM服务,布置在具有(亦即)32个历史值的顺序(先进先出)缓存器950中,其中最低有效的项目为最新历史值,可并入除PC及/或PA之外或代替PC及/或PA的折叠/散列过程,例如使用与上述相同的部分(31:0、15:0、7:0)。
因此,图9提供预测电路系统的示例,此预测电路系统被配置为取决于以下各者之一或多者产生预测:启动数据存取请求的处理指令的程序计数值;及响应于数据存取请求存取的数据条目的地址。在示例中,预测电路系统被配置为由程序计数值及数据条目的地址的一者或两者产生(通过电路系统905、电路系统915、电路系统925)索引,以及被配置为通过索引存取计数的值表。电路系统905、电路系统915、电路系统925可由程序计数值及数据条目的地址的一者或两者产生标签,以及储存与通过索引存取的计数值表中的项目关联的标签。在示例中,预测电路系统(通过电路系统905、电路系统915、电路系统925及比较器909)被配置为取回所储存的标签并且用于比较所取回的标签与由程序计数值及数据条目的地址的一者或两者产生的标签。
在图9中,预测电路系统被配置为通过相应索引存取计数值的两个或更多个表,此等相应索引由程序计数值及数据条目的地址的一者或两者的不同相应部分产生。如上文论述,在示例中,当两个或更多个表格具有与产生标签匹配的储存标签时,此预测电路系统被配置为根据由两个或更多个表格的一者储存的计数值产生预测,其中此索引由程序计数值及数据条目的地址的一者或两者的更大数目的位产生。
图10示意性地示出存储器控制器1005(诸如DMC 122、DMC 132),其经布置以接收读取提示1000及读取或写入请求1010的一者或两者。提供未完成的读取提示的缓冲器1020,以便当由启动对DRAM执行存取的存取逻辑1030接收及作用新读取提示时,定义彼提示的信息储存在未完成的提示缓冲器1020中。
在示例中,读取提示(数据存取提示消息)及数据存取请求(读取请求)每个通过一定范围的一个或多个存储器地址指定数据存取。在接收关于与未完成的提示相同的存储器地址或地址范围的后续请求,以及在接收提示并且启动动作之后马上充分地接收请求(下文将论述)的情况下,则检测电路系统1022自未完成的提示缓冲器1020删除。个别地,请求储存在未完成的请求缓冲器1040中。存取逻辑1030持续存取相关存储器地址或多个地址,并且在适当时候产生响应1050。响应可包括所请求的数据(在读取请求的情况下)及完成应答(其在一些示例中可伴随读取响应的最后一个数据条目或数据节拍)。
检测电路系统1022经布置以检测在接收对应于彼读取提示的请求的时候读取提示是否有效(例如,仍然保存在未完成的提示缓冲器1020中),以及用于产生指出此检测的结果的信号1024。
形成响应1050的部分或全部的应答可包括信息,此信息识别出数据自DRAM(预测电路系统可使用来证实预测为正确的)获得。此可通过在应答中指出响应340(图3)的来源的标识符来实施,例如作为提供响应340的特定存储器资源的标识符,作为提供响应340的存储器资源的类型分类的标识符,和/或由DARM提供响应340的指示。
形成响应的部分或全部的应答亦可包括指示(取决于信号1024),此指示关于读取提示在接收后续请求的时候是否仍然有效,从而指出提示的使用在省免存储器存取潜伏期的部分中有用。
若接收到并且作用(并且储存在未完成的提示缓冲器1020中)提示但没有接收后续请求(例如,因为毕竟HN能够服务请求),则在从接收读取提示及/或首先将读取提示储存在未完成的提示缓冲器中的预定时间之后,或当存取逻辑1030指出在由提示启动的存取过程中到达预定阶段时,或两者的较早者,或两者的较迟者,检测电路系统1022撤销提示并且自未完成的提示缓冲器1020中删除提示。
所以,当存储器存取电路系统已经响应于读取提示针对给定范围的一个或多个存储器地址启动数据存取时,存储器存取电路系统被配置为仅当存储器控制器接收指定给定范围的一个或多个存储器地址的后续数据存取请求时,提供存取数据作为数据存取响应。仅读取提示不导致(在示例性布置中)相关数据的返回。它仅启动存储器存取以为后续读取请求做准备。
然而,若后续接收读取请求(在已经撤销读取提示之后),则将产生信号1024以指出相关读取提示在接收读取请求的时候无效。
在上文论述的预测电路系统的示例中,取决于由主节点还是参考诸如DRAM的从属节点服务或履行读取请求来改变计数值等等。在其他示例中,取决于(i)实际上是否提供读取提示(可在预测电路系统及/或RN处执行而不需要自从属节点返回的信息的检测)及(ii)相应读取提示在接收后续请求的时候是否仍然有效中的一者或两者,可改变(替换或外加)计数值,从而指出提示的使用在省免存储器存取潜伏期的部分中有用。若提供“有用”读取提示,则此将倾向于将计数值或其他预测转向指示,此指示为应提供另外的读取提示(例如,针对分类或散列的地址)。若提供了读取提示但它并非“有用”,则此可经布置亦将计数值的变化转向指示,此指示为不应提供另外读取提示。若不提供读取提示但读取请求由从属节点(例如,DRAM)服务,则此可倾向于将预测转向指示,此指示为应提供另外的读取提示。应理解,此等结果的任一者的任意相应情况本身可能不导致RN行为的变化以发出或不发出读取提示(除非可能相应情况导致计数移到阈值的另一侧),但此种相应情况仍然可将计数值移向一个结果或另一个,或者换言之倾向于以某种方式转向预测。
因此,图10提供存储器控制器的示例,此存储器控制器包含:存储器存取电路系统(诸如存取逻辑1030),其被配置为响应于数据存取提示消息1000启动储存在存储器中的数据的数据存取,数据存取提示消息1000接收自与存储器控制器数据通信的另一节点;被配置为响应于数据存取请求1010存取储存在存储器中的数据,数据存取请求1010接收自与存储器控制器数据通信的另一节点,以及用于提供存取数据作为对数据存取请求的数据存取响应1050。
图11示意性地示出存储器控制方法,此方法包含以下步骤:
在步骤1100,响应于数据存取提示消息启动储存在存储器中的数据的数据存取,此数据存取提示消息接收自与存储器控制器数据通信的另一节点;
在步骤1110,响应于数据存取请求存取储存在存储器中的数据,此数据存取请求接收自与存储器控制器数据通信的另一节点;以及
在步骤1120,提供存取数据作为对数据存取请求的数据存取响应。
图12示意性地示出数据处理方法,此方法包含以下步骤:
在步骤1200,储存预测数据,此预测数据指出最近数据存取请求由第一数据源还是第二数据源履行;
在步骤1210,自预测数据预测下一个数据存取请求将由第一数据源还是第二数据源履行,布置第一及第二数据源以便若数据存取请求不由第一数据源履行,则由第二数据源履行;以及
在步骤1220,将指示发至第二数据源,此指示为响应于预测电路系统预测给定数据存取请求将由第二数据源履行而使得给定数据存取请求可能需要由第二数据源履行。
在本申请案中,使用用语“被配置...”意指设备组件具有能够执行所定义操作的结构。在此上下文中,“配置”意指硬件或软件的互连的排列或方式。例如,设备可具有提供定义操作的专用硬件,或处理器或其他处理装置(诸如上文论述的处理组件)可经程序化以执行功能。“被配置为”不提示设备组件需要以任何方式改变以便提供所定义的操作。
尽管本技术已参考所附图式详细地描述本发明的说明性实施例,但应理解,本技术并不限于那些精确实施例,并且本领域技术人员可在不背离由所附权利要求所定义的本发明的范围及精神的情况下在本文中实施各种变化、添加及修改。例如,在不背离本发明的范围的情况下,可将从属权利要求的特征与独立权利要求的特征进行各种组合。
Claims (26)
1.一种存储器控制器,包括:
存储器存取电路系统,该存储器存取电路系统被配置为:
用于响应于数据存取提示消息启动储存在存储器中的数据的数据存取,该数据存取提示消息是从与所述存储器控制器进行数据通信的另一节点接收的;
用于响应于数据存取请求存取储存在所述存储器中的数据,该数据存取请求是从与所述存储器控制器进行数据通信的另一节点接收的,以及
用于提供所存取的数据作为对所述数据存取请求的数据存取响应,
其中,所述数据存取提示消息和所述数据存取请求各自通过一个或多个存储器地址的范围来指定数据存取;并且
其中,当所述存储器存取电路系统已经响应于数据存取提示消息针对一个或多个存储器地址的给定范围启动数据存取时,所述存储器存取电路系统被配置为仅当所述存储器控制器接收指定一个或多个存储器地址的所述给定范围的后续数据存取请求时,提供所存取数据作为数据存取响应。
2.根据权利要求1所述的存储器控制器,其中,所述数据存取请求指定与所述存储器控制器进行数据通信的另一节点,所述数据存取响应应提供至该另一节点。
3.根据权利要求1所述的存储器控制器,其中,所述存储器存取电路系统被配置为响应于所接收的数据存取提示消息来确定是否启动数据存取。
4.一种数据处理系统,包括:
一个或多个主控节点,每个主控节点具有关联高速缓存;
一个或多个从属节点,每个从属节包括根据权利要求1所述的存储器控制器;以及
主节点,该主节点用于控制由所述数据处理系统储存的数据中的同调性。
5.根据权利要求4所述的系统,其中:
所述一个或多个主控节点被配置为将数据存取请求发出至所述主节点;并且
所述主节点被配置为检测数据存取请求是否能够由所述主节点履行或者所述数据存取是否需要对一个或多个从属节点执行存取,并且当需要对一个或多个从属节点执行存取时,所述主节点用于将数据存取请求发送至所述一个或多个从属节点。
6.根据权利要求5所述的系统,其中,所述一个或多个主控节点被配置为发送以下任一者:
将数据存取请求发送至所述主节点;或者
将数据存取请求发送至所述主节点并且将数据存取提示消息发送至所述一个或多个从属节点中的一者,当所述主节点不能履行数据存取时,所述一个或多个从属节点将履行由所述数据存取请求指定的数据存取。
7.根据权利要求6所述的系统,其中,所述一个或多个主控节点包括用于确定是否发送所述数据存取提示消息的预测电路系统。
8.根据权利要求7所述的系统,其中,所述预测电路系统被配置为响应于指示确定是否将所述数据存取提示消息发送至从属节点,这些指示是从所述主节点和所述从属节点中的一者或两者接收的,指出所述从属节点是否履行一个或多个上述数据存取请求。
9.一种存储器控制方法,包括:
响应于数据存取提示消息启动储存在存储器中的数据的数据存取,该数据存取提示消息是从与存储器控制器进行数据通信的另一节点接收的;
响应于数据存取请求存取储存在所述存储器中的数据,该数据存取请求是从与所述存储器控制器进行数据通信的另一节点接收的;以及
提供所存取的数据作为对所述数据存取请求的数据存取响应,
其中,所述数据存取提示消息和所述数据存取请求各自通过一个或多个存储器地址的范围来指定数据存取;并且
当启动步骤已经响应于数据存取提示消息针对一个或多个存储器地址的给定范围启动数据存取时,所述方法包括仅当所述存储器控制器接收指定一个或多个存储器地址的所述给定范围的后续数据存取请求时,提供所存取数据作为数据存取响应。
10.一种数据处理电路系统,包括:
预测电路系统,该预测电路系统用于储存预测数据,该预测数据指出最近数据存取请求是由第一数据源还是第二数据源履行,并且该预测电路系统用于从该预测数据预测下一数据存取请求是将由所述第一数据源还是所述第二数据源履行,布置所述第一数据源和所述第二数据源以便若数据存取请求不由所述第一数据源履行,则由所述第二数据源履行;以及
发出电路系统,该发出电路系统用于将所述数据存取请求发出至所述第一数据源,所述发出电路系统被配置为将指示发出至所述第二数据源,该指示为响应于所述预测电路系统预测给定数据存取请求将由所述第二数据源履行而使得该给定数据存取请求需要由所述第二数据源履行,
其中,所述预测电路系统被配置为响应于从所述第一数据源和所述第二数据源中的一者或两者接收的信息来储存所述预测数据,该信息指出哪个数据源履行最近数据存取请求。
11.根据权利要求10所述的电路系统,其中,所述预测数据包括计数值,所述预测电路系统被配置为根据最近数据存取请求是否由所述第一数据源或所述第二数据源履行来改变所述计数值。
12.根据权利要求11所述的电路系统,其中,所述预测电路系统包括用于比较所述计数值与阈值的比较器。
13.根据权利要求11所述的电路系统,其中,所述预测电路系统被配置为响应于正由所述第一数据源履行的最近数据存取将所述计数值改变了第一变化量,并且响应于正由所述第二数据源履行的最近数据存取将所述计数值改变了第二变化量,所述第二变化量具有与所述第一变化量相反的极性。
14.根据权利要求13所述的电路系统,其中,所述预测电路系统被配置为改变所述第一变化量和所述第二变化量中的一者或两者。
15.根据权利要求10所述的电路系统,其中,所述预测电路系统被配置为针对两种或更多种类的数据存取请求产生相应预测。
16.根据权利要求15所述的电路系统,其中,所述两种或更多种类的数据存取请求从由以下各项组成的列表中选出:
数据读取请求;
指令提取请求;以及
地址转换提取请求。
17.根据权利要求10所述的电路系统,其中,所述预测电路系统被配置为根据以下各项中的一个或多个产生预测:
启动数据存取请求的处理指令的程序计数值;以及
响应于所述数据存取请求存取的数据条目的地址。
18.根据权利要求17所述的电路系统,其中,所述预测电路系统被配置为由所述程序计数值和所述数据条目的地址中的一者或两者产生索引,并且通过该索引存取计数值表。
19.根据权利要求18所述的电路系统,其中,所述预测电路系统被配置为由所述程序计数值和所述数据条目的地址中的一者或两者产生标签,并且储存与通过所述索引存取的所述计数值表中的项目关联的标签。
20.根据权利要求19所述的电路系统,其中,所述预测电路系统被配置为取回所储存的标签并且比较所取回的标签与由所述程序计数值和所述数据条目的地址中的一者或两者产生的标签。
21.根据权利要求20所述的电路系统,其中,所述预测电路系统被配置为通过相应索引存取两个或更多个计数值表,所述相应索引由所述程序计数值和所述数据条的地址中的一者或两者的不同相应部分产生。
22.根据权利要求21所述的电路系统,其中,当两个或更多个表具有与所产生的标签匹配的所储存的标签时,所述预测电路系统被配置为根据由所述两个或更多个表中的一者储存的计数值产生预测,其中索引由所述程序计数值和所述数据条目的地址中的一者或两者的更大数量的位产生。
23.一种数据处理设备,包括:
一个或多个主控节点,每个主控节点包括根据权利要求10所述的电路系统并且每个主控节点具有关联的高速缓存存储器;
主节点,所述主节点提供第一数据源,所述主节点被配置为检测其是否能够通过从所述高速缓存存储器中的一者或多者获得请求数据来履行给定数据存取请求,并且被配置为当所述主节点不能履行所述给定数据存取请求时请求来自第二数据源的请求数据;以及
一个或多个从属节点,所述一个或多个从属节点提供所述第二数据源,每个从属节点具有更高阶存储器。
24.根据权利要求23所述的设备,其中:
所述主控节点被配置为将传输请求发出至所述主节点,所述传输请求向所述一个或多个从属节点中的一者的请求数据传输;以及
该主节点被配置为串行化传输请求并将请求存取至所述一个或多个从属节点,以便写入至从属节点处的存储器地址的数据与响应于后续存取请求从该存储器地址读取的数据一致。
25.根据权利要求23所述的设备,其中,所述主节点被配置为控制跨所述一个或多个主控节点的所述高速缓存存储器和所述一个或多个从属节点的等更高阶存储器的同调性作为同调存储器系统,以便通过一个节点写入至所述同调存储器系统中的存储器地址的数据与通过所述节点中的另一者从所述同调存储器系统中的该存储器地址读取的数据一致。
26.一种数据处理方法,包括:
储存预测数据,该预测数据指出最近数据存取请求是由第一数据源还是第二数据源履行;
从所述预测数据预测下一数据存取请求将由所述第一数据源还是所述第二数据源履行,布置所述第一数据源和所述第二数据源以便若数据存取请求不由所述第一数据源履行,则由所述第二数据源履行;以及
将指示发出至所述第二数据源,该指示为响应于预测电路系统预测给定数据存取请求将由所述第二数据源履行而使得该给定数据存取请求需要由所述第二数据源履行,
其中,储存步骤包括响应于从所述第一数据源和所述第二数据源中的一者或两者接收的信息来储存所述预测数据,该信息指出哪个数据源履行最近数据存取请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/427,391 | 2017-02-08 | ||
US15/427,391 US10402349B2 (en) | 2017-02-08 | 2017-02-08 | Memory controller having data access hint message for specifying the given range of one or more memory addresses |
PCT/GB2018/050191 WO2018146448A1 (en) | 2017-02-08 | 2018-01-23 | Data processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110235113A CN110235113A (zh) | 2019-09-13 |
CN110235113B true CN110235113B (zh) | 2023-11-14 |
Family
ID=61132819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880009507.XA Active CN110235113B (zh) | 2017-02-08 | 2018-01-23 | 存储器控制器和用于数据处理的系统和方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US10402349B2 (zh) |
EP (1) | EP3580661B1 (zh) |
JP (1) | JP7089530B2 (zh) |
KR (1) | KR102526431B1 (zh) |
CN (1) | CN110235113B (zh) |
IL (1) | IL268321B (zh) |
TW (1) | TWI766936B (zh) |
WO (1) | WO2018146448A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10402349B2 (en) * | 2017-02-08 | 2019-09-03 | Arm Limited | Memory controller having data access hint message for specifying the given range of one or more memory addresses |
US11269773B2 (en) * | 2019-10-08 | 2022-03-08 | Arm Limited | Exclusivity in circuitry having a home node providing coherency control |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1685321A (zh) * | 2002-09-30 | 2005-10-19 | 先进微装置公司 | 在具有高速缓存的数据处理系统内减少耗用时间的方法与装置 |
GB2440758B (en) * | 2006-08-08 | 2011-03-30 | Advanced Risc Mach Ltd | Interconnect logic for a data processing apparatus |
CN102576338A (zh) * | 2010-01-28 | 2012-07-11 | 惠普发展公司,有限责任合伙企业 | 用于存储器设备的接口方法和装置 |
CN103959260A (zh) * | 2011-11-30 | 2014-07-30 | 超威半导体公司 | 标签和数据共同存储在物理行中的dram高速缓存 |
CN105980993A (zh) * | 2014-02-10 | 2016-09-28 | Arm 有限公司 | 用于辨识对应目标内存地址的内存属性单元的区域的区域辨识操作 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058767B2 (en) * | 2003-04-28 | 2006-06-06 | International Business Machines Corporation | Adaptive memory access speculation |
JP2006139646A (ja) * | 2004-11-15 | 2006-06-01 | Seiko Epson Corp | データ転送装置およびデータ転送方法 |
US7555597B2 (en) * | 2006-09-08 | 2009-06-30 | Intel Corporation | Direct cache access in multiple core processors |
US7890699B2 (en) | 2008-01-10 | 2011-02-15 | International Business Machines Corporation | Processing unit incorporating L1 cache bypass |
JP4945611B2 (ja) * | 2009-09-04 | 2012-06-06 | 株式会社東芝 | マルチプロセッサ |
GB2522057B (en) | 2014-01-13 | 2021-02-24 | Advanced Risc Mach Ltd | A data processing system and method for handling multiple transactions |
US10445240B2 (en) * | 2014-08-01 | 2019-10-15 | Analog Devices Global Unlimited Company | Bus-based cache architecture |
US9658963B2 (en) * | 2014-12-23 | 2017-05-23 | Intel Corporation | Speculative reads in buffered memory |
US20160224241A1 (en) * | 2015-02-03 | 2016-08-04 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
US10402349B2 (en) * | 2017-02-08 | 2019-09-03 | Arm Limited | Memory controller having data access hint message for specifying the given range of one or more memory addresses |
US10282297B2 (en) * | 2017-02-08 | 2019-05-07 | Arm Limited | Read-with overridable-invalidate transaction |
-
2017
- 2017-02-08 US US15/427,391 patent/US10402349B2/en active Active
-
2018
- 2018-01-23 WO PCT/GB2018/050191 patent/WO2018146448A1/en unknown
- 2018-01-23 KR KR1020197024440A patent/KR102526431B1/ko active IP Right Grant
- 2018-01-23 CN CN201880009507.XA patent/CN110235113B/zh active Active
- 2018-01-23 EP EP18702523.4A patent/EP3580661B1/en active Active
- 2018-01-23 JP JP2019541458A patent/JP7089530B2/ja active Active
- 2018-01-25 TW TW107102608A patent/TWI766936B/zh active
-
2019
- 2019-07-25 US US16/521,621 patent/US10713187B2/en active Active
- 2019-07-29 IL IL268321A patent/IL268321B/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1685321A (zh) * | 2002-09-30 | 2005-10-19 | 先进微装置公司 | 在具有高速缓存的数据处理系统内减少耗用时间的方法与装置 |
GB2440758B (en) * | 2006-08-08 | 2011-03-30 | Advanced Risc Mach Ltd | Interconnect logic for a data processing apparatus |
CN102576338A (zh) * | 2010-01-28 | 2012-07-11 | 惠普发展公司,有限责任合伙企业 | 用于存储器设备的接口方法和装置 |
CN103959260A (zh) * | 2011-11-30 | 2014-07-30 | 超威半导体公司 | 标签和数据共同存储在物理行中的dram高速缓存 |
CN105980993A (zh) * | 2014-02-10 | 2016-09-28 | Arm 有限公司 | 用于辨识对应目标内存地址的内存属性单元的区域的区域辨识操作 |
Also Published As
Publication number | Publication date |
---|---|
JP7089530B2 (ja) | 2022-06-22 |
CN110235113A (zh) | 2019-09-13 |
TWI766936B (zh) | 2022-06-11 |
JP2020514878A (ja) | 2020-05-21 |
TW201832084A (zh) | 2018-09-01 |
US20190347217A1 (en) | 2019-11-14 |
US10713187B2 (en) | 2020-07-14 |
KR20190112020A (ko) | 2019-10-02 |
KR102526431B1 (ko) | 2023-04-27 |
IL268321A (en) | 2019-09-26 |
EP3580661B1 (en) | 2023-03-01 |
EP3580661A1 (en) | 2019-12-18 |
US10402349B2 (en) | 2019-09-03 |
WO2018146448A1 (en) | 2018-08-16 |
IL268321B (en) | 2020-10-29 |
US20180225232A1 (en) | 2018-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102494804B1 (ko) | 데이터 처리 | |
JP6574779B2 (ja) | 複数のトランザクションを扱うためのデータ処理システム及びデータ処理方法 | |
EP3335124B1 (en) | Register files for i/o packet compression | |
US20160062930A1 (en) | Bus master, bus system, and bus control method | |
US20100017572A1 (en) | Transactional memory support for non-coherent shared memory systems using selective write through caches | |
JP2014508361A (ja) | メモリ・インターフェース | |
JP2019096309A (ja) | メンテナンス動作の実行 | |
US20080320234A1 (en) | Information processing apparatus and data transfer method | |
CN103999063B (zh) | 处理器的存储器共享 | |
JPH10320282A (ja) | 仮想キャッシュ・コントロール方法及び装置 | |
KR102581572B1 (ko) | 허브 디바이스 및 그의 작동방법 | |
CN110235113B (zh) | 存储器控制器和用于数据处理的系统和方法 | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
CN111406251B (zh) | 数据预取方法及装置 | |
EP3800555B1 (en) | An apparatus and method for handling cache maintenance operations | |
US20190342034A1 (en) | Transfer protocol in a data processing network | |
JPH08212178A (ja) | 並列計算機 | |
JP6565729B2 (ja) | 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法 | |
CN112955877A (zh) | 修改存储数据的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |