CN102609378B - 一种消息式内存访问装置及其访问方法 - Google Patents

一种消息式内存访问装置及其访问方法 Download PDF

Info

Publication number
CN102609378B
CN102609378B CN201210016351.2A CN201210016351A CN102609378B CN 102609378 B CN102609378 B CN 102609378B CN 201210016351 A CN201210016351 A CN 201210016351A CN 102609378 B CN102609378 B CN 102609378B
Authority
CN
China
Prior art keywords
request
access
read
data
response
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
CN201210016351.2A
Other languages
English (en)
Other versions
CN102609378A (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.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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 Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201210016351.2A priority Critical patent/CN102609378B/zh
Publication of CN102609378A publication Critical patent/CN102609378A/zh
Priority to JP2014552501A priority patent/JP5930439B2/ja
Priority to EP13738795.7A priority patent/EP2801912B1/en
Priority to PCT/CN2013/070710 priority patent/WO2013107393A1/zh
Priority to KR1020147022905A priority patent/KR101563837B1/ko
Priority to EP19162415.4A priority patent/EP3588317B1/en
Priority to US14/335,029 priority patent/US9870327B2/en
Application granted granted Critical
Publication of CN102609378B publication Critical patent/CN102609378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种消息式内存访问装置及其访问方法,包括:消息式命令总线,用于传输CPU生成的消息式访存指令,指示内存系统完成相应操作;消息式内存控制器,用于将CPU的请求包装成消息包发送给存储模块,并解析存储模块返回的消息包将数据返给CPU;消息通道,用于请求和应答消息包传送的通路;存储模块,含有缓冲调度器,用于接收消息式内存控制器的请求包,完成相应的请求。

Description

一种消息式内存访问装置及其访问方法
技术领域
本发明涉及计算机系统设计领域,尤其涉及一种消息式内存访问装置及其访问方法。
背景技术
计算机的内存系统是影响体系结构和软件效能的重要因素之一。过去几十年,由于处理器与内存之间的性能差距越来越大,内存系统已成为制约系统性能的瓶颈。近年来随着处理器向多核、众核结构的转变,内存系统的访问带宽问题变得日益突出,已经制约了多核处理器规模的进一步扩展。
多年来,提高内存有效访问带宽的主要途径是依靠提高总线频率和数据通道数,也就是提高物理带宽。而基于同步总线式的访存体系结构多年来没有大的改变。SDRAM(SynchronousDynamicRandomAccessMemory,同步式随机动态存储器)出现于上世纪90年代中期,经历SDR,DDR,DDR2,DDR3,一直发展到即将发布的DDR4。SDRAM使用同步接口,所有的请求都要等待固定的时钟周期才能得到回应。自从SDRAM发布以来,内存总线的结构基本没有发生本质的变化。SDRAM的发展途径基本上是通过不断的提高接口频率来提高带宽。
目前国际上已经开始了对内存结构转变的尝试。如Rambus公司的RDRAM和XDR技术中,采用了基于包的请求/应答的协议,利用相对窄但数据率高的串联内存总线来传送数据包。Intel的FB-DIMM则在内存板(DIMM)上增加一个缓冲芯片(AWB,AdvancedMemoryBuffer),从而可以通过高速的串行通道连接内存控制器或者相邻DIMM上的AMB。LRDIMM、DDR4等技术也采用了类似的全数据缓冲,来提高高频信号的质量。但这些只是部分的改变,也就是实现了数据传输的从并行总线向包格式的转化,而从时序要求上仍然延续同步访问协议。
现有的同步式内存系统设计主要为了保证单次内存访问的延迟固定且较小。但在多核条件下,内存访问的延迟实际上包括在处理器访存队列的等待时间和访问内存通道的延迟两部分。显然,仅仅保证后者的延迟小并不能保证总体内存访问的性能。
另一方面,传统的内存访问的数据粒度是固定不变的,而且有增大的趋势。这是为了保证在一次传送周期传送的更多数据,每次读取数据基本上都是CPUCache行的长度。但是真实程序中,实际每次数据访问的粒度是变化的。对于有些应用数据访问是无规则且粒度很小的,这样每次访问的固定的大数据粒度必然造成浪费;而对有些应用需要大量连续数据读写时,又需要将整个数据访问分割成多个内存事务进行,从而增加协议上的开销。这些实际上都造成了对访存带宽的浪费。
发明内容
为解决上述问题,本文提供了一种消息式内存访问装置及其访问方法。
本发明的目的是提高CPU内存通道的有效利用率,提出了一种消息式内存访问装置及其访问方法。
本发明公开了一种消息式内存访问装置,包括:
消息式命令总线,用于传输CPU生成的消息式访存指令,指示内存系统完成相应操作;
消息式内存控制器,用于将CPU的请求包装成消息包发送给存储模块,并解析存储模块返回的消息包将数据返给CPU;
消息通道,用于请求和应答消息包传送的通路;
存储模块,含有缓冲调度器,用于接收消息式内存控制器的请求包,完成相应的请求。
所述消息式命令总线还用于指定请求的访存长度,访存长度可大于或小于寄存器的长度;
请求的数据可返回至cache,或返回至CPU可寻址缓冲区,或不经cache返回至寄存器或寄存器组;
请求可附带数据访问优先级信息,用于指导消息式内存控制器和缓冲调度器中访存命令的调度,为内存系统提供调度依据。
所述消息式内存控制器还包括:
访存请求接口,用于CPU与消息式内存控制器进行请求交互的接口。
读写请求分配器,用于根据读写请求保留站的状态,控制能否将从访存请求接口接收到的访存请求插入到读请求状态表或是写请求状态表中,如果接收到的请求是写请求,则需要将写入到内存的数据暂存在写数据缓冲区中。
写数据缓冲区,用于暂存写请求的数据。
读数据缓冲区,用于暂存读请求的数据。
读写请求保留站,由读请求状态表和写请求状态表两部分组成,用于请求状态表为每个新接收的请求分配一个表项,在请求被缓冲调度器响应或是消息式内存控制器将请求响应给CPU时,请求状态表中对应的表项需要被更新或删除。
所述消息式内存控制器还包括:
请求生成与调度器,用于一方面根据请求状态表中请求的属性如请求长度和定时时延等生成多个小的请求;另一方面用于调度,从读请求状态表和写请求状态表中未完成的请求中选择下一时刻需要处理的请求。被选择的请求发送给消息打包器;
消息打包器,用于将一个或多个请求封装成消息通道上的消息包格式,并通过消息通道接口发送给缓冲调度器;
消息解包器,用于从消息包中抽取出一个或多个请求,以及解析每个请求对应的数据内容;
请求状态更新单元,用于根据消息解包器解析出来的请求及其数据,更新请求在读写请求保留站中的状态表,以及将数据暂存到读数据缓冲区;
请求响应控制器,用于向CPU发送请求的响应;
控制器配置接口,用于配置消息式内存控制器的参数,或是指定请求的属性,对某个请求或访存地址的配置,会将相应的值更新到读写请求状态表的属性中;
消息通道接口,用于与缓冲调度器互相传递消息包,针对消息通道的不同物理实现,消息通道接口也有对应的接口类型。
所述读写请求保留站中读请求状态表的条目号对应请求在请求状态表中的序号,消息式内存控制器和缓冲调度器的消息包中采用这个条目号来唯一指定被处理的请求,请求地址是待访问内存的首地址,定时时延指定了该请求需要返回给CPU的时间,通过控制器配置接口来设置的,返回粒度由消息式内存控制器每次返回给CPU的数据长度组成,数据状态是标识出已经从存储模块获取请求需要的数据,并标识出空数据,数据位置是标识已获取的请求数据存放在读数据缓冲区中的位置。
所述请求响应控制器还用于查询读写请求保留站中请求的状态,当CPU发送过来的请求被缓冲调度器和存储模块处理完成后,请求响应控制器向CPU发送请求的响应,如果是读请求被完成,则同时需要发送读数据缓冲区中请求对应的数据。
所述消息式内存控制器,与存储模块之间的交互是基于消息包完成的,还用于每个消息包包括一个或多个访存请求或应答的信息;消息包中的请求没有同步时序的限制,有请求返回的最大时延信息;
消息式内存控制器配置接口单元提供了消息式内存控制器特有的命令地址空间,允许对控制器的属性进行配置,允许设置访存请求的属性,可以发出相应的访存命令。
所述消息式内存控制器还用于对消息式内存控制器及命令地址空间通过相应的访存命令,支持内存系统定时推送数据至寄存器或可寻址高速缓冲区;支持在存储系统内部执行简单的算术逻辑运算和移动操作,并可设定访存的原子性,或批量执行;
读写请求保留站提供了读请求状态表和写请求状态表,每个被处理的请求都会在对应的读或写请求状态表中存在对应的表项,每个表项包括请求的地址和长度,包括请求的定时返回时延、返回粒度、数据状态和数据位置,在消息包中,每个请求都用其在请求状态表中唯一的条目号进行确定;
消息式内存控制器允许一个消息包包括了多个请求的信息,可以将每个请求分成一个或多个消息包传递到存储模块,还允许一个请求由存储模块通过一个或多个消息包来完成;
所述消息式内存控制器,多个请求或者一个请求的多个消息包之间可以乱序返回。
所述消息式内存控制器还用于如果一个读请求被多个存储模块的消息包应答时,请求对应的读请求状态表中的数据状态标识已返回的数据和未返回的数据;
未全部返回的数据可以存放在可寻址的缓冲区或是不可寻址的缓冲区,如果数据暂存在不可寻址的缓冲区,只有在请求的数据全部返回后,CPU的读请求才会被响应,同时请求的数据被发送给CPU;如果数据暂存在可寻址的缓冲区,CPU读取已返回的部分数据。
所述消息包类型包括:访存读/写请求包、特殊命令请求包、存储器状态查询包、和/或响应包。
所述存储模块中缓冲调度器包括:
消息通道接口,用于与消息式内存控制器互相传递消息包;
消息解包器,用于从收到的消息包中获取访存请求的信息,所述信息包括请求序列号、请求类型、请求语义信息、地址、数据,消息解包器在判断出请求类型后,将根据与该类型对应的规则完成解包操作;
请求分发器,用于将消息解包器解析出的访存请求分配到请求队列中,调度的参考依据包括每个请求的语义信息、要求的返回时间和访问数据粒度信息;
读写请求队列,用于缓存未完成的读写请求,含有优先级队列,高优先级队列中保存访问数据粒度小,返回时间要求短或是标记了高优先级的读写请求;低优先级队列中保存访问数据粒度大,返回时间要求长或是标记了低优先级的读写请求;
特殊请求队列,用于缓存未完成的非读写访存请求;
请求调度器,用于从请求队列中获取访存请求,转发给命令生成单元;从数据缓冲区获取访存返回数据,转发给消息打包器;
命令生成单元,用于获取调度后需要立即执行的访存请求,转化成具体的访问内存颗粒的命令,同时为了维护内存颗粒的状态,请求调度器会要求命令生成单元对内存芯片发出维护状态所需的命令;
消息打包器,用于从请求调度器获取返回数据,以及和数据对应的请求序列号,生成响应包传回给消息式内存控制器,根据请求调度器对返回数据的标记,也允许多个请求的返回数据合并成一个响应包传给消息式内存控制器;
数据缓冲区,用于缓存访问内存芯片返回的数据,由请求调度器选取需要的数据,再提交给消息打包器;
内存芯片接口,用于从命令生成单元接收访问内存芯片的命令,发送给存储模块上的内存芯片,收到返回数据后,存入数据缓冲区。
所述存储模块中缓冲调度器还包括:
定时器,用于根据需要输出不同时间间隔的脉冲,给请求调度器和状态维护单元提供所需的时钟触发;
状态维护单元,用于维护与缓冲调度器相连的各个内存颗粒的状态,发出预充电和/或刷新命令。
所述请求调度器还用于根据请求的情况完成高优先级队列中的访存请求操作,将多个请求加上合并标记,所返回数据全部到达数据缓冲区后,一起转给消息打包器打包成一个响应包,对低优先级队列中的访存数据量比较大的请求,则可以将一个请求拆分成几步完成,每完成一步都将结果转发给消息打包器返回一个响应包。
所述存储模块还用于对于一个消息式内存控制器发来的访存请求,可以分多步完成并返回多个消息包应答这一个请求;对于多个消息式内存控制器发来的访存请求,可以在完成所有请求后合并成一个消息包应答多个请求;可以调度消息式内存控制器发来的访存请求的执行顺序,调度依据包括请求的优先级、语义信息以及存储模块上内存芯片的状态。
所述存储模块的存储单元为同步式内存颗粒和/或异步网络连接的内存颗粒。
其特征在于,所述缓冲调度器支持的特殊消息式访存指令包括:定时推送指令、存储模块内部的简单算术逻辑运算和移动指令、压缩存储。
所述消息通道用于传输以消息包为单位的消息,采用并行总线、点对点串行总线或拓扑结构的网络。
本发明还公开了一种消息式内存访问方法,包括如下步骤:
步骤1001,CPU发出访存请求,CPU可以指定该请求的访问数据的长度、优先级以及语义信息,该请求还可以是除读、写之外其他复杂访存请求;
步骤1002,判断该请求是否含有配置消息式内存控制器的信息,如果含有则进入步骤1003,否则进入步骤1004;
步骤1003,如果请求中含有配置消息式内存控制器的信息,则消息式内存控制器根据配置信息作出适当调整,进行调度并处理请求;
步骤1004,消息式内存控制器将CPU的访存请求封装为消息包,封装的过程中可以将多个请求封装在一个包中,封装完成的包通过消息通道发送给相应存储模块的缓冲调度器,并根据需要在读写请求保留站中进行记录;
步骤1005,存储模块中的缓冲调度器对发送的消息包进行解析,对CPU请求进行操作;
步骤1006,该CPU请求完成后,如果其在消息式内存控制器读写请求保留站内有记录,则消除该记录。
所述步骤1006之前还包括:
步骤1007,如果该CPU请求是读请求,则将读回的数据封装为响应包,通过消息通道发送给消息式内存控制器,封装响应包时,可根据需求将一个请求返回的数据拆分封装为多个响应包,也可多个请求返回的数据合并封装为一个响应包;
步骤1008,消息式内存控制器接收到响应包,进行解析,根据需要将响应包中的数据存储在cache或消息式内存控制器的内部可寻址缓冲区内;
步骤1009,消息式内存控制器判断该CPU请求的响应包是否全部返回,如果全部返回则进入步骤1006,如果不是则进入步骤1008。
所述步骤1005之后还包括:
步骤1010,缓冲调度器收到消息式内存控制器发送的消息包,进行解析,并将CPU请求填入适当的请求队列;
步骤1011,缓冲调度器内的请求调度器根据CPU请求的优先级和语义信息对多个请求队列里的请求进行调度,安排请求的执行顺序;
步骤1012,将被调度执行的CPU请求转化为一系列符合内存颗粒标准的命令,发送给内存接口;
步骤1013,判断该CPU请求是否为复杂访存请求,如果是则进入步骤1014,如果不是则进入步骤1016;
步骤1014,如果该CPU请求为复杂访存请求,缓冲调度器内的处理逻辑对从内存返回的数据进行简单的处理;
步骤1015,复杂访存指令被处理之后,根据请求的类别,选择是否需要将处理后的数据写回内存,是否需要将处理后的数据返回给CPU,如果需要写回内存,则通过一系列符合内存颗粒标准的命令写入内存,如果需要返回给CPU,则将数据封装为响应包,发送给消息式内存控制器;
步骤1016,如果该CPU请求不是复杂访存请求,则判断是否为写请求,如果是则进入步骤1006,如果不是则进入步骤1007。
所述步骤1004还包括如下步骤:
步骤1101,消息式内存控制器从访存请求端口接收CPU发送的读写请求;
步骤1102,读写请求分配器判断请求是否是读请求。如果是读请求,跳转到步骤1104;否则,跳转到步骤1103;
步骤1103,如果收到的请求是写请求,判断写请求状态表是否存在空项。如果写请求状态表存在空项,则跳转到步骤1105;否则,跳转到步骤1102;
步骤1104,如果收到的请求是读请求,判断读请求状态表是否存在空项。如果读请求状态表存在空项,则跳转到步骤1106;否则,跳转到步骤1102;
步骤1105,如果收到的请求是写请求,而且写请求状态表存在空闲的表项,则为该请求分配一个表项,并将写请求中的数据存入到写数据缓冲区;否则,跳转到步骤1102;
步骤1106,如果收到的请求是读请求,而且读请求状态表存在空闲的表项,则为该请求分配一个表项;否则,跳转到步骤1102;
步骤1107,结束本次请求的接收,并继续处理从访存请求接口接收到的请求。
所述消息式内存控制器调度并处理请求包括如下步骤:
步骤1201,请求生成与调度器扫描读写请求状态表的表项;
步骤1202,请求生成与调度器查询读写请求状态表中是否有未完成而需要被处理的请求。如果有未完成的表项,跳转到步骤1203;否则,跳转到步骤1201;
步骤1203,如果存在未完成的请求,请求生成与调度器根据请求在对应请求状态表中的属性,将一个大的请求划分成多个小的请求,并根据调度算法选择下一时刻被选择处理的请求;
步骤1204,判断待处理的请求是否是读请求。如果是读请求,跳转到步骤1206;否则,跳转到步骤1205;
步骤1205,如果待处理的请求是写请求,需要从写数据缓冲区中获取该请求对应的数据;否则,直接跳到步骤1206;
步骤1206,消息打包器将一个或多个请求封装是消息包的格式;
步骤1207,将打包后的消息发送给消息式内存控制器与缓冲调度器的消息通道接口;并转入到步骤1201继续下一轮的处理。
所述步骤1013还包括下列步骤:
步骤1301,解析从缓冲调度器发送到消息式内存控制器的响应包的包头信息,获取包头内响应的个数以及每个响应长度,用于下面逐个解析响应;
步骤1302,判断是否还有下一个响应需要解析,如果有,则进入步骤1303解析下一个响应;否则本次解析响应包结束;
步骤1303,解析下一个响应的类型和请求标识,下面需要根据不同的响应类型分别进行不同的处理;
步骤1304,判断是否为访存读请求响应,如果是,则进入步骤135进一步解析;否则得到的是存储器状态查询请求响应或访存写请求响应,进入步骤1306获取对应状态信息;
步骤1305,根据包头指示的该响应长度,寻址到响应,并从访存读请求响应中获取返回的数据;
步骤1306,根据包头指示的响应长度寻址到响应,如果是状态查询请求响应,则从中获取返回的状态值;如果是访存写请求响应,则更新写请求状态表中该请求的属性,至此解析本响应结束,回到步骤1302;
步骤1307,根据包内是否含有子响应判断返回的访存读请求数据是否被缓冲调度器拆分成多个响应返回。如果没有被拆分成多个子响应,则完成本次访存读请求,进入步骤1309;如果被拆分,则解析获取子响应的个数和当前子响应的标识,进入步骤1308;
步骤1308,判断本次响应是否为访存读请求的最后一个子响应,判断的依据是本次子响应标识是否等于子响应个数。如果是,那么完成本访存读请求,进入步骤1309;否则访存读请求还未完成,将本次返回的子响应数据写入到对应的数据缓冲中,并更新该请求在读请求状态表中的数据状态和数据位置等信息,回到步骤1302;
步骤1309,完成本访存读请求,之后就可以准备将数据从消息式内存控制器传回到CPU,回到步骤1302。
所述步骤1006还包括如下步骤:
步骤1401,请求响应控制器扫描读写请求状态表;
步骤1402,查询写请求状态表中是否有已完成的请求。如果有,跳转到步骤1404;否则,跳转到步骤1403;
步骤1403,如果写请求状态表中没有已完成的请求项,则查询读请求状态表中是否有已完成的请求项,如果有,跳转到步骤1404;否则,跳转到步骤1402;
步骤1404,如果写请求状态表或读请求状态表中有已完成的请求,则判断已完成的请求是否满足请求属性的要求,如果满足,跳转到步骤1405;否则,跳转到步骤1402;
步骤1405,向CPU发送满足所有属性的请求的响应,响应的数据内容也需要与请求的返回粒度等属性匹配。
所述步骤1011还包括如下步骤:
步骤1501,定时器根据设置好的条件,触发请求调度器,准备开始一次新的请求调度;
步骤1502,检查此次触发条件是否为芯片状态维护请求,若是执行步骤1503,否则执行步骤1504;
步骤1503,本次定时器触发的条件是需要进行芯片状态维护,发出芯片状态维护命令,转到步骤1509;
步骤1504,检查此次触发条件是否要求处理特殊请求队列,若是执行步骤1505,否则执行步骤1506;
步骤1505,本次定时器触发的条件是需要处理特殊请求队列,读入特殊请求队列中的请求,转化成一序列的读写操作。修改队列中的请求状态或是在请求完成后移除。转到步骤1509;
步骤1506,检查此次触发条件是否要求处理优先级最高的读写请求队列,若是执行步骤1507,否则执行步骤1508;
步骤1507,本次定时器触发的条件是需要处理优先级最高的读写请求队列,移除队列中的所有请求,并对所有的读请求标上合并标记。转到步骤1509;
步骤1508,本次定时器触发的条件是需要处理非最高优先级的读写请求队列,访问对应优先级请求队列中的请求,根据读写请求当前的状态生成需要的读写操作。修改队列中的请求状态或是在请求完成后移除。转到步骤1509;
步骤1509,本次请求调度结束,等待下一次定时器触发。
本发明的有益效果为:通过改变原有同步式访存体系结构,用异步的请求和应答消息取代传统的同步式总线事务,为访存体系结构和应用访存接口增加更多的并发性和灵活性,从而提高CPU内存通道的利用率。
附图说明
图1是本发明消息式内存访问装置的整体结构图;
图2是本发明中在消息式内存控制器和存储模块间通信的消息包格式图;
图3是本发明的消息包的包头格式图;
图4是本发明的访存读写请求包格式图;
图5是本发明的状态查询请求包格式图;
图6是本发明的响应包格式图;
图7是本发明的消息式内存控制器的结构示意图;
图8是本发明中消息式内存控制器的读请求状态表表项格式图;
图9是本发明的存储模块中缓冲调度器的结构示意图;
图10是本发明基于消息的内存访问方法流程图;
图11是本发明中消息式内存控制器接收访存请求的流程图;
图12是本发明中消息式内存控制器调度并处理请求的流程图;
图13是本发明中消息式内存控制器接收处理响应包的流程图;
图14是本发明中消息式内存控制器向CPU响应请求的流程图;
图15是本发明中缓冲调度器调度访存请求的流程图。
具体实施方式
下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述。
本发明的目的是提高CPU内存通道的有效利用率,提出了一种基于消息的内存访问装置。
本发明的出发点是,即使物理带宽受限,也同样可以通过提高利用率来增加有效的带宽。而传统的内存系统采用的一种固定延迟、固定粒度、被动式的同步顺序访存体系,限制了可能的有效技术手段的应用。
本发明将研究一种新型的基于“消息”(message)式的体系结构,通过改变原有访存体系结构,用异步、并发的请求和应答消息取代传统的同步式总线事务,为访存体系结构和应用访存接口增加更多的灵活性,提高CPU内存通道的利用率。
本发明提出的一种消息式内存访问装置,包括:
消息式命令总线,用于传输CPU生成的消息式访存指令,指示内存系统完成相应操作;
消息式内存控制器,用于将CPU的请求包装成消息包发送给存储模块,并解析存储模块返回的消息包将数据返给CPU;
消息通道,用于请求和应答消息包传送的通路;
存储模块,含有缓冲调度器,用于接收消息式内存控制器的请求包,完成相应的请求。
所述消息式命令总线,可以指定请求的访存长度,访存长度可大于或小于寄存器的长度;
所述消息式命令总线,请求的数据可返回至cache,或返回至CPU可寻址缓冲区,或不经cache返回至寄存器或寄存器组;
所述消息式命令总线,请求可附带数据访问优先级信息,用于指导消息式内存控制器和缓冲调度器中访存命令的调度,为内存系统提供调度依据;
所述消息式内存控制器,与存储模块之间的交互是基于消息包完成的。每个消息包允许包括一个或多个访存请求的信息或是数据;消息包中的请求没有同步时序的限制,但可以包括请求返回的最大时延等信息。
所述消息式内存控制器,控制器配置接口单元提供了消息式内存控制器特有的命令地址空间,允许对控制器的属性进行配置,也允许设置访存请求的属性,如设置访存请求定时返回的时延和粒度等,也可以发出特有的访存命令。
所述消息式内存控制器及命令地址空间,可以通过特有命令,支持内存系统定时推送数据至寄存器或可寻址高速缓冲区;支持在存储系统内部执行简单的算术逻辑运算和移动操作,并可设定访存的原子性,或批量执行。
所述的消息式内存控制器,读写请求保留站单元提供了读请求状态表和写请求状态表。每个被处理的请求都会在对应的读或写请求状态表中存在对应的表项。每个表项不仅包括了请求的地址和长度,还包括了请求的定时返回时延、返回粒度、数据状态和数据位置等附加属性。在消息包中,每个请求都用其在请求状态表中唯一的条目号确定。
所述的消息式内存控制器,消息式内存控制器不仅允许一个消息包包括了多个请求的信息,也可以将每个请求分成一个或多个消息包传递到存储模块,还允许一个请求由存储模块通过一个或多个应答信息包来完成。
所述消息式内存控制器,多个请求或者一个请求的多个应答消息包之间可以乱序返回。
所述消息式内存控制器,如果一个读请求被多个存储模块的消息包应答时,请求对应的读请求状态表中的数据状态标识已返回的数据和未返回的数据。未全部返回的数据可以存放在可寻址的缓冲区或是不可寻址的缓冲区。如果数据暂存在不可寻址的缓冲区,只有在请求的数据全部返回后,CPU的读请求才会被响应,同时请求的数据被发送给CPU;如果数据暂存在可寻址的缓冲区,CPU能够地读取已返回的部分数据,而不用等待所有的数据都访问。
所述消息包,可以包含访存的语义信息,包括但不限于线程信息、对象信息、优先级信息。
所述消息通道,传输以消息包为单位,可以是并行总线、点对点串行总线或其他拓扑结构的网络。
所述含缓冲调度器的存储模块,对于一个消息式内存控制器发来的访存请求,可以分多步完成并返回多个消息包应答这一个请求。
所述含缓冲调度器的存储模块,对于多个消息式内存控制器发来的访存请求,可以在完成所有请求后合并成一个消息包应答多个请求。
所述含缓冲调度器的存储模块,可以调度消息式内存控制器发来的访存请求的执行顺序,调度依据包括请求的优先级、语义信息以及存储模块上内存芯片的状态。
所述含缓冲调度器的存储模块,缓冲调度器支持除load/store外的特殊消息式访存指令:包括但不限于定时推送指令、存储系统内部的简单算术逻辑运算和移动指令(支持原子操作和批量处理)、压缩存储。
所述含缓冲调度器的存储模块,存储模块中的存储单元既可以是同步式内存颗粒,也可以是基于异步网络连接的内存颗粒。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种消息式内存访问装置及基于消息的内存访问方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,消息式内存访问装置包括消息式命令总线110、消息式内存控制器120、消息通道130以及含缓冲调度器的存储模块140;这些功能单元通过消息包完成CPU对内存访问,实现了可控延迟,可变粒度,支持语义信息的消息式访存。
其中,CPU通过访存指令或者对特殊命令地址空间的访问转化为消息式命令总线110上的消息式访存请求。相比传统Load、Store访存指令,消息式内存访问装置允许CPU指定访存的数据粒度大小、速度、返回数据的时机和方式等语义信息。
消息式内存控制器120调度收到的访存请求,将其转换成请求包放到消息通道130上,维护所有处理中的访存请求状态。当解析消息通道130上传回的响应包时,解响应包获取访存请求的返回数据。
存储模块140通过缓冲调度器接收处理消息通道130上的请求包,解析请求并访问具体的内存芯片,将需要返回的数据打包成响应包传回给消息式内存控制器120。
消息式命令总线110上支持的消息式访存指令主要分三类:
1.消息式内存存取指令,为普通的内存存取指令附加粒度和优先级参数。CPU先在特殊命令地址空间的规定位置设置好访存的数据大小和访问优先级,然后执行消息式内存存取指令。即可按照需要的优先级将指定长度的数据从内存中取出放于cache中。
2.定时返回指令,允许在将来的一段时间内,每隔固定的时间间隔,存储系统会把指令指定数组的一个数据返回到指定的寄存器中。CPU先在特殊命令地址空间的规定位置设置好访存的时间间隔和返回次数,然后执行定时返回指令即可。执行该指令时,由消息式内存控制器或缓冲调度器定时产生需要的读取命令,将其插入命令队列或请求队列中。存储系统返回的数据不经cache,直接送入寄存器中。相对于预取,定时返回减少了buffer占用。
3.存储系统内部的简单算术逻辑运算和拷贝指令,支持原子性和批量处理。该指令使存储系统可以不经CPU对存储单元完成一些简单的算术逻辑运算(加、减、与、或、异或等,运算结果写入存储单元)和拷贝。该指令支持批量处理。需要在特殊命令地址空间的规定位置设置好指令的参数,如存储系统要执行的操作类型、是否为原子操作,批量处理的操作次数等。然后执行指令MOPR1,R2,R3。其中R1和R2存储源操作数的地址,R3存储目的操作数的地址。执行该指令时,由缓冲调度器或消息式内存控制器来执行运算和拷贝,保证操作的原子性,控制操作次数。简单的操作不用把数据移动到CPU,减少了访存总量。
在消息式内存控制器120和存储模块140之间通过消息包进行相互通信,支持的消息包类型包括访存读/写请求包,特殊命令请求包,存储器状态查询包,以及响应包。如图2所示,一个消息包200包含一个包头202,一个或多个访存请求或响应204、206、208。包头202指示消息包的元数据,比如包类型、请求个数、每个请求的长度、包长度、容错信息等。对于从消息式内存控制器发送到存储模块的访存读/写请求包,包内可以包含一个或多个访存读/写请求,每个访存请求202、204、206包含请求标识、访存地址、访存粒度、访存操作,还可以包含一些语义信息,对于写请求还包含数据;而对于从存储模块发送回消息式内存控制器的响应包,包内可以包含一个或多个响应,每个响应包中包含请求标识,返回的数据等。
每个消息包都必须包含一个包头300,如图3所示,包头信息包括:包类型302,源模块标识304,目的模块标识306,包含的请求/响应个数308,每个请求/响应的长度310、312、314,包长度316,以及整个包的容错信息318。其中,包类型302用于指示总线上传输的包的类型,支持的包类型包括访存读/写请求包,特殊命令请求包,存储器状态查询包,以及响应包。源模块标识304指示发送该消息包的模块(消息式内存控制器或存储模块)号,比如对于包含多个消息式内存控制器的系统,这个域可用于指示发送访存读/写请求的消息式内存控制器标识。目的模块标识306指示负责接收处理该包请求的模块(消息式内存控制器或存储模块)号。请求/响应个数308指示该包中包含的请求或响应的个数,注意这里包含的多个请求必须都是与包类型匹配的,比如包类型为访存读请求包,那么这里的多个请求必须都是访存读请求。每个请求/响应长度310、312、314用于指示每个请求或响应的大小,利用这个信息可以寻址到包内每个请求或响应的位置(偏移量)。包长度316指示整个消息包的长度。包容错信息318指示包在总线上传输过程中是否出错,可以但不局限于使用奇偶校验(Parity),校验和(Checksum)和纠错码(ECC)等容错技术。
访存读/写请求包被用于消息式内存控制器向存储模块发送一个或多个访存读/写请求400,除了包头外,如图4所示,每个访存读/写请求400包括:请求标识402、操作码404、访存地址406、访存粒度408、还可以包含语义信息410,对于访存写请求还包含数据412。请求标识402为消息式内存控制器分配给每个请求的唯一标识。操作码404指示访存请求的操作如读请求,写请求等。访存地址406指示访存请求的起始物理地址。访存粒度408指示访存请求数据的粒度(或长度),比如可以为小粒度的8B,也可以为大粒度的4KB。语义信息410指示CPU经过消息式内存控制器传送到存储模块的程序运行时信息,用于指导存储模块内缓冲调度器的调度,比如访存请求的优先级,访存请求完成的超时时间(Timeout),发送访存请求的CPU核标识(CoreID)等。对于访存写请求,还包含数据412,指示将被写入到指定物理地址的数据。
特殊命令请求包用于从消息式内存控制器向存储模块发送特殊处理的命令,如简单算术逻辑运算、移动、原子操作、压缩等。
存储器状态查询包用于消息式内存控制器向存储模块查询多种状态信息。每个存储器状态查询包只包含一个查询请求,所以它的包头内请求个数总是设置为1。如图5所示,每个状态查询请求500包括:状态查询类型502和状态查询标识504。状态查询类型502指示查询的存储模块状态的类型,如读写请求队列是否已满,特殊请求队列是否已满,内存芯片是否处于低功耗状态等。状态查询标识504为消息式内存控制器分配的状态查询请求标识,用于消息式内存控制器收到来自存储模块的响应后,寻址状态查询请求。
响应包用于存储模块向消息式内存控制器发送一个或多个返回的响应,除了包头外,如图6所示,每个响应600包括:响应类型602、请求标识604、还可能包含子响应个数606、子响应标识608、数据610或者状态值612。响应类型602指示针对不同类型请求返回的对应响应,如访存读请求响应,状态查询请求响应等。请求标识604为响应对应的请求标识,如访存读请求标识,状态查询请求标识。对于访存读请求响应,如果请求的为大粒度数据,则存储模块发送回响应的时候可能将单个请求的数据分割成多个子响应返回,这多个子响应可以放在同一个响应包内,也可以分散到多个响应包内分别返回,此时子响应个数606用于指示分割的子响应个数,而子响应标识608为当前返回子响应的标识。如果消息式内存控制器从一个或多个响应包内获取到指定个数的子响应,才完成该访存读请求。对访存读请求响应还包括从存储模块读回到消息式内存控制器的数据610。而对于状态查询请求响应,则还包括返回的存储器对应的状态值612,如读写请求队列已满。
如图7所示,消息式内存控制器包括访存请求接口700、读写请求分配器单元701、写数据缓冲区单元702、读数据缓冲区单元703、读写请求保留站704、请求生成与调度器单元705、消息打包器706、消息解包器707、请求状态更新单元708、请求响应控制器709、控制器配置接口710及消息通道接口711。上述单元实现的消息式内存控制器,通过消息包的方式与缓冲调度器及其存储模块单元进行交互完成请求的处理;而且,它支持对变粒度的、限定返回时机的访存请求进行处理。另外,它允许同一个读请求的数据通过多个消息包以乱序的方式返回,这样能够提高内存带宽的利用率。
访存请求接口700是CPU与消息式内存控制器进行请求交互的接口。这个接口用于CPU向消息式内存控制器发送访存请求,也用于消息式内存控制器向CPU发送访存请求的响应;另外,这个接口也可以传送用于配置消息式内存控制器的命令。
读写请求分配器单元701根据读写请求保留站的状态,如消息式内存控制器所能容纳的剩余访存请求数,控制能否将从访存请求接口接收到的访存请求插入到读请求状态表或是写请求状态表中,如图8所示。如果接收到的请求是写请求,则需要将写入到内存的数据暂存在写数据缓冲区702中。
写数据缓冲区单元702用于暂存写请求的数据。当在该写请求被调度时,该请求对应的数据需要填充在发送到缓冲调度器的消息包中。
读数据缓冲区单元703用于暂存读请求的数据。由于消息式内存控制器允许一个请求的数据以多个消息包的方式返回,读数据缓冲区的数据可能只是请求所需数据的一部分,而且是乱序的。读请求状态表记录了每个请求已返回的数据块和其在读数据缓冲区中的数据位置。另外,消息式内存控制具有请求定时返回的功能;这样,即使一个请求的数据已全部暂存在读数据缓冲区中,请求也可能不会立即返回。
读写请求保留站单元704是控制和管理请求的关键单元;它由读请求状态表和写请求状态表两部分组成。请求状态表为每个新接收的请求分配一个表项。在请求被缓冲调度器响应或是消息式内存控制器将请求响应给CPU时,请求状态表中对应的表项需要被更新或是删除。
读请求状态表的每个表项如图8所示。条目号对应请求在请求状态表中的序号。消息式内存控制器和缓冲调度器的消息包中采用这个条目号来唯一指定被处理的请求。请求地址是待访问内存的首地址。与现有消息式内存控制器固定的访存请求长度不同,消息式内存控制器处理变长的请求来提高内存带宽的有效性。定时时延指定了该请求需要返回给CPU的时间,它主要是通过控制器配置接口来设置的。返回粒度是指消息式内存控制器每次返回给CPU的数据长度。数据状态标识请求需要的数据有哪些已经从存储模块获取,哪些仍是空。数据位置标识已获取的请求数据存放在读数据缓冲区中的位置。
请求生成与调度器单元705一方面根据请求状态表中请求的属性如请求长度和定时时延等生成多个小的请求;另一方面用于调度,从读请求状态表和写请求状态表中未完成的请求中选择下一时刻需要处理的请求。被选择的请求发送给消息打包器706。
消息打包器706用于将一个或多个请求封装成消息通道上的消息包格式,并通过消息通道接口发送给缓冲调度器。
消息解包器707用于从消息包中抽取出一个或多个请求,以及解析每个请求对应的数据内容。
请求状态更新单元708根据消息解包器707解析出来的请求及其数据,更新请求在读写请求保留站704中的状态表,以及将数据暂存到读数据缓冲区。
请求响应控制器709用于向CPU发送请求的响应。它主要是查询读写请求保留站704中请求的状态。当CPU发送过来的请求被缓冲调度器和存储模块处理完成后,请求响应控制器709向CPU发送请求的响应。如果是读请求被完成,则同时需要发送读数据缓冲区703中请求对应的数据。
控制器配置接口710用于配置消息式内存控制器的参数,或是指定请求的属性,如定时时延等。对某个请求或访存地址的配置,会将相应的值更新到读写请求状态表的属性中。
消息通道接口711用于与缓冲调度器互相传递消息包。针对消息通道的不同物理实现,消息通道接口711也有对应的接口类型。比如共享式的并行总线接口或是点到点的串行总线接口。
图9是存储模块中缓冲调度器的结构示意图。如图9所示,缓冲调度器包括了消息通道接口901、消息解包器902、请求分发器903、读写请求队列904、特殊请求队列905、定时器906、状态维护单元907、请求调度器908、命令生成单元909、消息打包器910、数据缓冲区911、内存芯片接口912。
所述缓冲调度器,可以是存储模块上一个独立的集成电路芯片,与存储模块上的内存颗粒相连。也可以是系统主板上的一个芯片,与通用存储模块相连。缓冲调度器可以通过各种硬件方式实现,如专用集成电路芯片,可编程逻辑设备,现场可编程门阵列等。尽管下文描述的缓冲调度器是依照图展开的,通过其他方式实现的示例也是同样适宜的,例如增加额外的模块或是合并里面的某些功能单元。
消息通道接口901用于与消息式内存控制器互相传递消息包。针对消息通道的不同物理实现,消息通道接口901也有对应的接口类型。比如共享式的并行总线接口或是点到点的串行总线接口。
消息解包器902从收到的消息包中获取访存请求的各种信息,包括请求序列号、请求类型、请求语义信息、地址、数据等。不同的请求类型有不同的消息包格式,消息解包器902在判断出请求类型后,将根据与该类型对应的规则完成解包操作。
请求分发器903将消息解包器902解析出的访存请求分配到不同的请求队列中。调度的参考依据包括每个请求的语义信息、要求的返回时间和访问数据粒度等信息。
读写请求队列904,缓存未完成的读写请求,含有多个优先级队列。高优先级队列中保存访问数据粒度小,返回时间要求短或是标记了高优先级的读写请求;低优先级队列中保存访问数据粒度大,返回时间要求长或是标记了低优先级的读写请求。
特殊请求队列905,缓存未完成的非读写访存请求。比如对数据的逻辑运算,压缩,移动等操作。
定时器906可根据需要输出不同时间间隔的脉冲,给请求调度器908和状态维护单元907提供所需的时钟触发。
状态维护单元907,用于维护与缓冲调度器相连的各个内存颗粒的状态,在需要的时候发出预充电、刷新等命令。
请求调度器908从请求队列中获取访存请求,转发给命令生成单元909;从数据缓冲区获取访存返回数据,转发给消息打包器910。请求调度器908除了转发请求和返回数据外,还可根据请求的情况完成一系列特殊操作。如高优先级队列中的访存请求通常访问粒度比较小,所以可以将多个请求加上合并标记,这样在它们的返回数据全部到达数据缓冲区后,一起转给消息打包器910打包成一个响应包。对低优先级队列中的访存数据量比较大的请求,则可以将一个请求拆分成几步完成,每完成一步都将结果转发给消息打包器910返回一个响应包。
命令生成单元909获取调度后需要立即执行的访存请求,转化成具体的访问内存颗粒的命令。同时为了维护内存颗粒的状态,请求调度器908也会要求命令生成单元909对内存芯片发出维护状态所需的命令。
消息打包器910从请求调度器908获取返回数据,以及和数据对应的请求序列号,生成响应包传回给消息式内存控制器。根据请求调度器908对返回数据的标记,也允许多个请求的返回数据合并成一个响应包传给消息式内存控制器。
数据缓冲区911缓存访问内存芯片返回的数据,由请求调度器908选取需要的数据,再提交给消息打包器910。
内存芯片接口912从命令生成单元909接收访问内存芯片的命令,发送给存储模块上的内存芯片,收到返回数据后,存入数据缓冲区911。
如图10所示,一种消息式内存访问方法包括以下步骤:
步骤1001,CPU发出访存请求,CPU可以指定该请求的访问数据的长度、优先级以及语义信息,该请求还可以是除读、写之外其他复杂访存请求,如定时访问、简单算术逻辑运算、移动、原子操作、压缩等;
步骤1002,判断该请求是否含有配置消息式内存控制器的信息,如果含有则进入步骤1003,否则进入步骤1004;
步骤1003,如果请求中含有配置消息式内存控制器的信息,则消息式内存控制器根据配置信息作出适当调整;
步骤1004,消息式内存控制器将CPU的访存请求按一定的格式封装为消息包,封装的过程中可以按一定规则将多个请求封装在一个包中,封装完成的包通过消息通道发送给相应存储模块的缓冲调度器,并根据需要在读写请求保留站中进行记录;
步骤1005,缓冲调度器收到消息式内存控制器发送的消息包,进行解析,并将CPU请求填入适当的请求队列;
步骤1006,缓冲调度器内的请求调度器根据CPU请求的优先级和语义信息对多个请求队列里的请求进行调度,安排请求的执行顺序;
步骤1007,将被调度执行的CPU请求转化为一系列符合内存颗粒标准的命令(如DDR标准),发送给内存接口;
步骤1008,判断该CPU请求是否为复杂访存请求,如果是则进入步骤1009,如果不是则进入步骤1011;
步骤1009,如果该CPU请求为复杂访存请求,缓冲调度器内的处理逻辑对从内存返回的数据进行简单的处理(如简单算术逻辑运算、移动等);
步骤1010,复杂访存指令被处理之后,根据请求的类别,选择是否需要将处理后的数据写回内存,是否需要将处理后的数据返回给CPU,如果需要写回内存,则通过一系列符合内存颗粒标准的命令(如DDR标准)写入内存,如果需要返回给CPU,则将数据封装为响应包,发送给消息式内存控制器;
步骤1011,如果该CPU请求不是复杂访存请求,则判断是否为写请求,如果是则进入步骤1015,如果不是则进入步骤1012;
步骤1012,如果该CPU请求是读请求,则将读回的数据封装为响应包,通过消息通道发送给消息式内存控制器,封装响应包时,可根据需求将一个请求返回的数据拆分封装为多个响应包,也可多个请求返回的数据合并封装为一个响应包;
步骤1013,消息式内存控制器接收到响应包,进行解析,根据需要将响应包中的数据存储在cache或消息式内存控制器的内部可寻址缓冲区内;
步骤1014,消息式内存控制器判断该CPU请求的响应包是否全部返回,如果全部返回则进入步骤1015,如果不是则进入步骤1013;
步骤1015,该CPU请求完成,如果其在消息式内存控制器读写请求保留站内有记录,则消除该记录。
如图11所示,访存请求被消息式内存控制器接收的处理流程是:
步骤1101,消息式内存控制器从访存请求端口接收CPU发送的读写请求;
步骤1102,读写请求分配器701判断请求是否是读请求。如果是读请求,跳转到步骤1104;否则,跳转到步骤1103;
步骤1103,如果收到的请求是写请求,判断写请求状态表是否存在空项。如果写请求状态表存在空项,则跳转到步骤1105;否则,跳转到步骤1102;
步骤1104,如果收到的请求是读请求,判断读请求状态表是否存在空项。如果读请求状态表存在空项,则跳转到步骤1106;否则,跳转到步骤1102;
步骤1105,如果收到的请求是写请求,而且写请求状态表存在空闲的表项,则为该请求分配一个表项,并将写请求中的数据存入到写数据缓冲区;否则,跳转到步骤1102;
步骤1106,如果收到的请求是读请求,而且读请求状态表存在空闲的表项,则为该请求分配一个表项;否则,跳转到步骤1102;
步骤1107,结束本次请求的接收,并继续处理从访存请求接口接收到的请求。
如图12所示,消息式内存控制器调度并处理请求包括以下步骤:
步骤1201,请求生成与调度器705扫描读写请求状态表的表项;
步骤1202,请求生成与调度器705查询读写请求状态表中是否有未完成而需要被处理的请求。如果有未完成的表项,跳转到步骤1203;否则,跳转到步骤1201;
步骤1203,如果存在未完成的请求,请求生成与调度器根据请求在对应请求状态表中的属性,将一个大的请求划分成多个小的请求,并根据调度算法选择下一时刻被选择处理的请求;
步骤1204,判断待处理的请求是否是读请求。如果是读请求,跳转到步骤1206;否则,跳转到步骤1205;
步骤1205,如果待处理的请求是写请求,需要从写数据缓冲区中获取该请求对应的数据;否则,直接跳到步骤1206;
步骤1206,消息打包器706将一个或多个请求封装是消息包的格式;
步骤1207,将打包后的消息发送给消息式内存控制器与缓冲调度器的消息通道接口;并转入到步骤1201继续下一轮的处理。
如图13所示,消息式内存控制器接收到缓冲调度器发送的消息包后的步骤是:
步骤1302,解析从缓冲调度器发送到消息式内存控制器的响应包的包头信息,获取包头内响应的个数以及每个响应长度,用于下面逐个解析响应;
步骤1304,判断是否还有下一个响应需要解析,如果有,则进入步骤1306解析下一个响应;否则本次解析响应包结束;
步骤1306,解析下一个响应的类型和请求标识,下面需要根据不同的响应类型分别进行不同的处理;
步骤1308,判断是否为访存读请求响应,如果是,则进入步骤1310进一步解析;否则得到的是存储器状态查询请求响应或访存写请求响应,进入步骤1312获取对应状态信息;
步骤1310,根据包头指示的该响应长度,寻址到响应,并从访存读请求响应中获取返回的数据;
步骤1312,根据包头指示的响应长度寻址到响应,如果是状态查询请求响应,则从中获取返回的状态值;如果是访存写请求响应,则更新写请求状态表中该请求的属性,至此解析本响应结束,回到步骤1304;
步骤1314,根据包内是否含有子响应判断返回的访存读请求数据是否被缓冲调度器拆分成多个响应返回。如果没有被拆分成多个子响应,则完成本次访存读请求,进入步骤1318;如果被拆分,则解析获取子响应的个数和当前子响应的标识,进入步骤1316;
步骤1316,判断本次响应是否为访存读请求的最后一个子响应,判断的依据是本次子响应标识是否等于子响应个数。如果是,那么完成本访存读请求,进入步骤1318;否则访存读请求还未完成,将本次返回的子响应数据写入到对应的数据缓冲中,并更新该请求在读请求状态表中的数据状态和数据位置等信息,回到步骤1304;
步骤1318,完成本访存读请求,之后就可以准备将数据从消息式内存控制器传回到CPU,回到步骤1304。
如图14所示,消息式内存控制器向CPU响应请求的步骤是:步骤1401,请求响应控制器709扫描读写请求状态表;
步骤1402,查询写请求状态表中是否有已完成的请求。如果有,跳转到步骤1404;否则,跳转到步骤1403;
步骤1403,如果写请求状态表中没有已完成的请求项,则查询读请求状态表中是否有已完成的请求项。如果有,跳转到步骤1404;否则,跳转到步骤1402;
步骤1404,如果写请求状态表或读请求状态表中有已完成的请求,则判断已完成的请求是否满足请求属性的要求,如定时时延等属性。如果满足,跳转到步骤1405;否则,跳转到步骤1402;
步骤1405,向CPU发送满足所有属性的请求的响应,响应的数据内容也需要与请求的返回粒度等属性匹配。
如图15所示,请求调度器908调度访存请求的步骤是:步骤1510,定时器906根据设置好的条件,触发请求调度器908,准备开始一次新的请求调度;
步骤1520,检查此次触发条件是否为芯片状态维护请求,若是执行步骤1530,否则执行步骤1540;
步骤1530,本次定时器触发的条件是需要进行芯片状态维护,发出芯片状态维护命令,转到步骤1590;
步骤1540,检查此次触发条件是否要求处理特殊请求队列,若是执行步骤1550,否则执行步骤1560;
步骤1550,本次定时器触发的条件是需要处理特殊请求队列,读入特殊请求队列中的请求,转化成一序列的读写操作。修改队列中的请求状态或是在请求完成后移除。转到步骤1590;
步骤1560,检查此次触发条件是否要求处理优先级最高的读写请求队列,若是执行步骤1570,否则执行步骤1580;
步骤1570,本次定时器触发的条件是需要处理优先级最高的读写请求队列,移除队列中的所有请求,并对所有的读请求标上合并标记。转到步骤1590;
步骤1580,本次定时器触发的条件是需要处理非最高优先级的读写请求队列,访问对应优先级请求队列中的请求,根据读写请求当前的状态生成需要的读写操作。修改队列中的请求状态或是在请求完成后移除。转到步骤1590;
步骤1590,本次请求调度结束,等待下一次定时器触发。
以上所述仅为本发明技术构思下的一些基本说明,而依据本发明的技术方案即所做的任何等效变换,均应属于本发明的保护范围,例如针对非易失存储器的新型内存技术等均是保护对象。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。

Claims (12)

1.一种消息式内存访问装置,其特征在于,包括:
消息式命令总线,用于传输CPU生成的消息式访存指令,指示内存系统完成相应操作;
消息式内存控制器,用于将所述CPU的访存请求包装成消息包发送给存储模块,并解析所述存储模块返回的消息包将数据返给所述CPU;
消息通道,用于请求和应答消息包传送的通路;
所述存储模块,含有缓冲调度器,用于接收所述消息式内存控制器的请求包,完成相应的请求;
所述消息式内存控制器包括:
访存请求接口,用于所述CPU与所述消息式内存控制器进行请求交互的接口;
读写请求分配器,用于根据读写请求保留站的状态,控制能否将从所述访存请求接口接收到的访存请求插入到读请求状态表或是写请求状态表中,如果接收到的访存请求是写请求,则需要将写入到内存的数据暂存在写数据缓冲区中;
所述写数据缓冲区,用于暂存写请求的数据;
读数据缓冲区,用于暂存读请求的数据;
所述读写请求保留站,由所述读请求状态表和所述写请求状态表两部分组成,用于请求状态表为每个新接收的请求分配一个表项,在访存请求被所述缓冲调度器响应或是所述消息式内存控制器将访存请求响应给所述CPU时,所述读请求状态表或所述写请求状态表中对应的表项需要被更新或删除。
2.如权利要求1所述的消息式内存访问装置,其特征在于,所述消息式内存控制器还包括:
请求生成与调度器,一方面用于根据所述请求状态表中请求的属性生成多个小的请求,所述请求状态表中请求的属性包括请求长度和定时时延;另一方面用于调度,从所述读请求状态表和所述写请求状态表中未完成的请求中选择下一时刻需要处理的请求,被选择的请求发送给消息打包器;
所述消息打包器,用于将一个或多个请求封装成消息通道上的消息包格式,并通过消息通道接口发送给所述缓冲调度器;
消息解包器,用于从消息包中抽取出一个或多个请求,以及解析每个请求对应的数据内容;
请求状态更新单元,用于根据所述消息解包器解析出来的请求及其数据,更新请求在所述读写请求保留站中的所述请求状态表,以及将数据暂存到所述读数据缓冲区;
请求响应控制器,用于向所述CPU发送请求的响应;
控制器配置接口,用于配置所述消息式内存控制器的参数,或是指定请求的属性,对某个请求或访存地址的配置,会将相应的值更新到所述读请求状态表或所述写请求状态表的属性中;
所述消息通道接口,用于与所述缓冲调度器互相传递消息包,针对所述消息通道的不同物理实现,所述消息通道接口也有对应的接口类型。
3.如权利要求1所述的消息式内存访问装置,其特征在于,所述读写请求保留站中读请求状态表的条目号对应请求在请求状态表中的序号,所述消息式内存控制器和所述缓冲调度器的消息包中采用所述读请求状态表的条目号来唯一指定被处理的请求,请求地址是待访问内存的首地址,定时时延指定了该请求需要返回给所述CPU的时间,通过控制器配置接口来设置的,返回粒度由所述消息式内存控制器每次返回给所述CPU的数据长度组成,数据状态是标识出已经从所述存储模块获取请求需要的数据,并标识出空数据,数据位置是标识已获取的请求数据存放在所述读数据缓冲区中的位置。
4.如权利要求2所述的消息式内存访问装置,其特征在于,所述请求响应控制器还用于查询所述读写请求保留站中请求的状态,当所述CPU发送过来的请求被所述缓冲调度器和所述存储模块处理完成后,所述请求响应控制器向所述CPU发送请求的响应,如果是读请求被完成,则同时需要发送所述读数据缓冲区中请求对应的数据。
5.一种消息式内存访问方法,其特征在于,包括如下步骤:
步骤1001,CPU发出访存请求,所述CPU能够指定该请求的访问数据的长度、优先级以及语义信息,该请求还能够是除读、写之外其他复杂访存请求;
步骤1002,判断所述CPU的访存请求是否含有配置消息式内存控制器的信息,如果含有则进入步骤1003,否则进入步骤1004;
步骤1003,如果请求中含有配置所述消息式内存控制器的信息,则所述消息式内存控制器根据配置信息做出调整,进行调度并处理所述CPU的访存请求;
步骤1004,所述消息式内存控制器将所述CPU的访存请求封装为消息包,封装的过程中能够将多个请求封装在一个包中,封装完成的包通过消息通道发送给相应存储模块的缓冲调度器,并根据需要在读写请求保留站中进行记录;
步骤1005,所述存储模块中的所述缓冲调度器对发送的消息包进行解析,对所述CPU的访存请求进行操作;
步骤1006,所述CPU的访存请求完成后,如果其在所述消息式内存控制器的所述读写请求保留站内有记录,则消除该记录。
6.如权利要求5所述的消息式内存访问方法,其特征在于,所述步骤1006之前还包括:
步骤1007,如果所述CPU的访存请求是读请求,则将读回的数据封装为响应包,通过所述消息通道发送给所述消息式内存控制器,封装响应包时,能够根据需求将一个请求返回的数据拆分封装为多个响应包,也能够将多个请求返回的数据合并封装为一个响应包;
步骤1008,所述消息式内存控制器接收到所述响应包,进行解析,根据需要将所述响应包中的数据存储在cache或所述消息式内存控制器的内部可寻址缓冲区内;
步骤1009,所述消息式内存控制器判断所述CPU的访存请求的响应包是否全部返回,如果全部返回则进入步骤1006,如果不是则进入步骤1008。
7.如权利要求5所述的消息式内存访问方法,其特征在于,所述步骤1005之后还包括:
步骤1010,所述缓冲调度器收到所述消息式内存控制器发送的消息包,进行解析,并将所述CPU的访存请求填入请求队列;
步骤1011,所述缓冲调度器内的所述请求调度器根据所述CPU的访存请求的优先级和语义信息对多个请求队列里的请求进行调度,安排请求的执行顺序;
步骤1012,将被调度执行的所述CPU的访存请求转化为一系列符合内存颗粒标准的命令,发送给内存接口;
步骤1013,判断所述CPU的访存请求是否为复杂访存请求,如果是则进入步骤1014,如果不是则进入步骤1016;
步骤1014,如果所述CPU的访存请求为复杂访存请求,缓冲调度器内的处理逻辑对从内存返回的数据进行简单的处理;
步骤1015,复杂访存指令被处理之后,根据请求的类别,选择是否需要将处理后的数据写回内存,是否需要将处理后的数据返回给所述CPU,如果需要写回内存,则通过一系列符合内存颗粒标准的命令写入内存,如果需要返回给所述CPU,则将数据封装为响应包,发送给消息式内存控制器;
步骤1016,如果所述CPU的访存请求不是复杂访存请求,则判断是否为写请求,如果是则进入步骤1006,如果不是则进入步骤1007。
8.如权利要求5所述的消息式内存访问方法,其特征在于,所述步骤1004还包括如下步骤:
步骤1101,所述消息式内存控制器从访存请求端口接收所述CPU发送的访存请求;
步骤1102,读写请求分配器判断所述访存请求是否是读请求,如果是读请求,跳转到步骤1104,否则,跳转到步骤1103;
步骤1103,如果所述访存请求是写请求,判断写请求状态表是否存在空项,如果所述写请求状态表存在空项,则跳转到步骤1105;否则,跳转到步骤1102;
步骤1104,如果所述访存请求是读请求,判断读请求状态表是否存在空项,如果所述读请求状态表存在空项,则跳转到步骤1106;否则,跳转到步骤1102;
步骤1105,如果所述访存请求是写请求,而且所述写请求状态表存在空闲的表项,则为该请求分配一个表项,并将写请求中的数据存入到写数据缓冲区;否则,跳转到步骤1102;
步骤1106,如果所述访存请求是读请求,而且所述读请求状态表存在空闲的表项,则为该请求分配一个表项;否则,跳转到步骤1102;
步骤1107,结束本次请求的接收,并继续处理从所述访存请求端口接收到的访存请求。
9.如权利要求5所述的消息式内存访问方法,其特征在于,所述消息式内存控制器调度并处理所述CPU的访存请求包括如下步骤:
步骤1201,请求生成与调度器扫描读请求状态表或写请求状态表的表项;
步骤1202,请求生成与调度器查询所述读请求状态表或所述写请求状态表中是否有未完成而需要被处理的请求,如果有未完成的请求,跳转到步骤1203;否则,跳转到步骤1201;
步骤1203,如果存在未完成的请求,请求生成与调度器根据请求在对应请求状态表中的属性,将一个大的请求划分成多个小的请求,并根据调度算法选择下一时刻被选择处理的请求;
步骤1204,判断所述未完成的请求是否是读请求,如果是读请求,跳转到步骤1206;否则,跳转到步骤1205;
步骤1205,如果所述未完成的请求是写请求,需要从写数据缓冲区中获取该请求对应的数据;否则,直接跳到步骤1206;
步骤1206,消息打包器将一个或多个请求封装为消息包的格式;
步骤1207,将封装后的消息包发送给所述消息式内存控制器与所述缓冲调度器的消息通道接口;并转入到步骤1201继续下一轮的处理。
10.如权利要求7所述的消息式内存访问方法,其特征在于,所述步骤1013还包括下列步骤:
步骤1301,解析从所述缓冲调度器发送到所述消息式内存控制器的响应包的包头信息,获取所述响应包内响应的个数以及每个响应长度,用于逐个进行解析响应;
步骤1302,判断是否还有下一个响应需要解析,如果有,则进入步骤1303解析下一个响应;否则本次解析响应包结束;
步骤1303,解析所述下一个响应的类型和请求标识,用于根据不同的响应类型分别进行不同的处理;
步骤1304,判断所述下一个响应是否为访存读请求响应,如果是,则进入步骤1305进一步解析;若得到的是存储器状态查询请求响应或访存写请求响应,进入步骤1306获取对应状态信息;
步骤1305,根据包头信息指示的所述下一个响应的响应长度,寻址到响应,并从访存读请求响应中获取返回的数据;
步骤1306,根据包头信息指示的所述下一个响应的响应长度寻址到响应,如果是状态查询请求响应,则从中获取返回的状态值;如果是访存写请求响应,则更新写请求状态表中该请求的属性,至此解析本响应结束,回到步骤1302;
步骤1307,根据所述响应包内是否含有子响应判断返回的访存读请求数据是否被缓冲调度器拆分成多个响应返回,如果没有被拆分成多个子响应,则完成本次访存读请求,进入步骤1309;如果被拆分,则解析获取子响应的个数和当前子响应的标识,进入步骤1308;
步骤1308,判断本次响应是否为访存读请求的最后一个子响应,判断的依据是本次子响应标识是否等于子响应个数,如果是,那么完成本访存读请求,进入步骤1309;否则访存读请求还未完成,将本次返回的子响应数据写入到对应的数据缓冲中,并更新该请求在读请求状态表中的数据状态和数据位置信息,回到步骤1302;
步骤1309,完成本访存读请求,将数据从消息式内存控制器传回到CPU,回到步骤1302。
11.如权利要求5所述的消息式内存访问方法,其特征在于,所述步骤1006还包括如下步骤:
步骤1401,请求响应控制器扫描读请求状态表或写请求状态表;
步骤1402,查询所述写请求状态表中是否有已完成的请求,如果有,跳转到步骤1404;否则,跳转到步骤1403;
步骤1403,如果所述写请求状态表中没有已完成的请求项,则查询所述读请求状态表中是否有已完成的请求项,如果有,跳转到步骤1404;否则,跳转到步骤1402;
步骤1404,如果所述写请求状态表或所述读请求状态表中有已完成的请求,则判断所述已完成的请求是否满足请求属性的要求,如果满足,跳转到步骤1405;否则,跳转到步骤1402;
步骤1405,向所述CPU发送满足所有属性的请求的响应,所述响应的数据内容与请求的返回粒度属性匹配。
12.如权利要求7所述的消息式内存访问方法,其特征在于,所述步骤1011还包括如下步骤:
步骤1501,定时器根据设置好的条件,触发所述请求调度器,准备开始一次新的请求调度;
步骤1502,检查此次触发条件是否为芯片状态维护请求,若是则执行步骤1503,否则执行步骤1504;
步骤1503,本次定时器触发的条件是需要进行芯片状态维护,发出芯片状态维护命令,转到步骤1509;
步骤1504,检查此次触发条件是否要求处理特殊请求队列,若是则执行步骤1505,否则执行步骤1506;
步骤1505,本次定时器触发的条件是需要处理特殊请求队列,读入特殊请求队列中的请求,转化成一序列的读写操作,修改队列中的请求状态或是在请求完成后移除,转到步骤1509;
步骤1506,检查此次触发条件是否要求处理优先级最高的读写请求队列,若是则执行步骤1507,否则执行步骤1508;
步骤1507,本次定时器触发的条件是需要处理优先级最高的读写请求队列,移除队列中的所有请求,并对所有的读请求标上合并标记,转到步骤1509;
步骤1508,本次定时器触发的条件是需要处理非最高优先级的读写请求队列,访问对应优先级请求队列中的请求,根据读写请求当前的状态生成需要的读写操作,修改队列中的请求状态或是在请求完成后移除,转到步骤1509;
步骤1509,本次请求调度结束,等待下一次定时器触发。
CN201210016351.2A 2012-01-18 2012-01-18 一种消息式内存访问装置及其访问方法 Active CN102609378B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN201210016351.2A CN102609378B (zh) 2012-01-18 2012-01-18 一种消息式内存访问装置及其访问方法
JP2014552501A JP5930439B2 (ja) 2012-01-18 2013-01-18 メッセージ・ベースのメモリ・アクセス装置およびそのアクセス方法
EP13738795.7A EP2801912B1 (en) 2012-01-18 2013-01-18 Message-based memory access device and access method thereof
PCT/CN2013/070710 WO2013107393A1 (zh) 2012-01-18 2013-01-18 一种消息式内存访问装置及其访问方法
KR1020147022905A KR101563837B1 (ko) 2012-01-18 2013-01-18 메시지 기반 메모리 액세스 장치 및 그것의 액세스 방법
EP19162415.4A EP3588317B1 (en) 2012-01-18 2013-01-18 Message-based memory access apparatus and access method thereof
US14/335,029 US9870327B2 (en) 2012-01-18 2014-07-18 Message-based memory access apparatus and access method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210016351.2A CN102609378B (zh) 2012-01-18 2012-01-18 一种消息式内存访问装置及其访问方法

Publications (2)

Publication Number Publication Date
CN102609378A CN102609378A (zh) 2012-07-25
CN102609378B true CN102609378B (zh) 2016-03-30

Family

ID=46526766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210016351.2A Active CN102609378B (zh) 2012-01-18 2012-01-18 一种消息式内存访问装置及其访问方法

Country Status (6)

Country Link
US (1) US9870327B2 (zh)
EP (2) EP3588317B1 (zh)
JP (1) JP5930439B2 (zh)
KR (1) KR101563837B1 (zh)
CN (1) CN102609378B (zh)
WO (1) WO2013107393A1 (zh)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
CN102609378B (zh) 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
CN103679040B (zh) * 2012-09-06 2016-09-14 中天安泰(北京)信息技术有限公司 数据安全读取方法及装置
CN103679041B (zh) * 2012-09-06 2016-11-23 中天安泰(北京)信息技术有限公司 数据安全读取方法及装置
CN103729315B (zh) 2012-10-15 2016-12-21 华为技术有限公司 一种地址压缩、解压缩的方法、压缩器和解压缩器
WO2014070200A1 (en) * 2012-11-02 2014-05-08 Hewlett-Packard Development Company, L.P. Selective error correcting code and memory access granularity switching
KR20140122941A (ko) * 2013-04-11 2014-10-21 삼성전자주식회사 무선 통신 시스템에서 스케쥴링 요청 송수신 방법 및 장치
CN104123234B (zh) * 2013-04-27 2017-04-05 华为技术有限公司 内存访问方法及内存系统
CN104125461B (zh) * 2013-04-27 2017-06-23 深圳市振华微电子有限公司 一种大尺寸的图像压缩处理系统及方法
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN104252422A (zh) * 2013-06-26 2014-12-31 华为技术有限公司 内存访问方法和内存控制器
US9811453B1 (en) * 2013-07-31 2017-11-07 Juniper Networks, Inc. Methods and apparatus for a scheduler for memory access
CN104346234B (zh) * 2013-08-09 2017-09-26 华为技术有限公司 一种内存访问的方法、设备及系统
CN104424102B (zh) * 2013-08-20 2017-10-10 华为技术有限公司 一种数据拷贝方法、设备和系统
CN104424105B (zh) * 2013-08-26 2017-08-25 华为技术有限公司 一种内存数据的读写处理方法和装置
JP6127872B2 (ja) * 2013-09-27 2017-05-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN104516823B (zh) * 2013-09-30 2018-04-27 华为技术有限公司 一种数据存储方法和装置
CN103647807B (zh) * 2013-11-27 2017-12-15 华为技术有限公司 一种信息缓存方法、装置和通信设备
CN104699638B (zh) * 2013-12-05 2017-11-17 华为技术有限公司 内存访问方法和内存访问装置
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
CN104851454A (zh) * 2014-02-13 2015-08-19 华为技术有限公司 控制信号处理方法及装置、可变存储器
CN105095094B (zh) * 2014-05-06 2018-11-30 华为技术有限公司 内存管理方法和设备
CN105095146B (zh) * 2014-05-09 2018-07-31 华为技术有限公司 基于内存控制器的带宽分配方法及装置
CN105573920B (zh) * 2014-10-09 2019-02-01 华为技术有限公司 存储空间管理方法和装置
KR102515924B1 (ko) * 2016-04-19 2023-03-30 에스케이하이닉스 주식회사 미디어 컨트롤러 및 이를 포함한 데이터 저장 장치
US10067903B2 (en) 2015-07-30 2018-09-04 SK Hynix Inc. Semiconductor device
US11755255B2 (en) 2014-10-28 2023-09-12 SK Hynix Inc. Memory device comprising a plurality of memories sharing a resistance for impedance matching
CN106155577B (zh) * 2015-04-23 2019-03-26 华为技术有限公司 扩展内存的访问方法、设备以及系统
CN104932942B (zh) * 2015-05-29 2018-11-13 华为技术有限公司 缓冲资源的分配方法和装置
CN106484549B (zh) * 2015-08-31 2019-05-10 华为技术有限公司 一种交互方法、NVMe设备、HOST及物理机系统
CN105471630B (zh) * 2015-11-18 2019-04-19 武汉众邦领创技术有限公司 大容量分组传送系统下的北向系统消息分发系统及方法
JP6160717B1 (ja) * 2016-01-15 2017-07-12 日本電気株式会社 プロセッサ、および、データ転送方法
CN108595371B (zh) * 2016-01-20 2019-11-19 北京中科寒武纪科技有限公司 用于向量运算的数据读取、写入及读写调度器及保留站
CN105912270B (zh) * 2016-04-12 2019-01-18 上海交通大学 一种面向pm的访存请求解析装置与方法
DE102017106713A1 (de) 2016-04-20 2017-10-26 Samsung Electronics Co., Ltd. Rechensystem, nichtflüchtiges Speichermodul und Verfahren zum Betreiben einer Speichervorrichtung
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
CN106201766B (zh) * 2016-07-25 2018-03-20 深圳市中博科创信息技术有限公司 数据存储控制方法及数据服务器
CN107783727B (zh) * 2016-08-31 2022-01-14 华为技术有限公司 一种内存设备的访问方法、装置和系统
CN108337286A (zh) * 2017-01-20 2018-07-27 深圳市中兴微电子技术有限公司 一种切包方法及装置
CN106993241B (zh) * 2017-03-31 2020-08-07 新华三技术有限公司 一种主控板、风扇框和网络设备
EP3480702B1 (en) * 2017-06-23 2020-09-30 Huawei Technologies Co., Ltd. Memory access technology and computer system
CN107729989B (zh) * 2017-07-20 2020-12-29 安徽寒武纪信息科技有限公司 一种用于执行人工神经网络正向运算的装置及方法
CN109299117B (zh) * 2017-07-25 2022-07-29 北京国双科技有限公司 数据请求的处理方法和装置、存储介质、处理器
KR102395190B1 (ko) * 2017-07-31 2022-05-06 삼성전자주식회사 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
CN107743101B (zh) * 2017-09-26 2020-10-09 杭州迪普科技股份有限公司 一种数据的转发方法及装置
CN107844435A (zh) * 2017-11-08 2018-03-27 北京锐安科技有限公司 一种缓存系统、方法及装置
CN108153485B (zh) * 2017-11-20 2021-06-22 天津津航技术物理研究所 一种多设备协同访问sram的方法及系统
US10747442B2 (en) 2017-11-29 2020-08-18 International Business Machines Corporation Host controlled data chip address sequencing for a distributed memory buffer system
US10489069B2 (en) 2017-11-29 2019-11-26 International Business Machines Corporation Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10395698B2 (en) 2017-11-29 2019-08-27 International Business Machines Corporation Address/command chip controlled data chip address sequencing for a distributed memory buffer system
US10534555B2 (en) 2017-11-29 2020-01-14 International Business Machines Corporation Host synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10884916B2 (en) * 2018-03-29 2021-01-05 Intel Corporation Non-volatile file update media
US10817176B2 (en) * 2018-06-18 2020-10-27 Intel Corporation Compute offload in block storage using virtual objects
CN110888591B (zh) * 2018-09-07 2023-05-30 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US10467175B1 (en) * 2018-11-29 2019-11-05 Qualcomm Incorporated Secure digital (SD) direct command for improving throughput with a reduced memory footprint
CN111352657B (zh) * 2018-12-21 2023-04-25 上海都森电子科技有限公司 FPGA高速高效流水读取x86数据的方法
CN109828934A (zh) * 2018-12-31 2019-05-31 武汉芯动科技有限公司 内存访问芯片及装置
CN109753248B (zh) * 2019-01-22 2022-05-13 上海微小卫星工程中心 存储访问控制器和访问存储器的方法
CN109992413B (zh) * 2019-03-01 2021-09-24 中国科学院计算技术研究所 一种面向宽度优先搜索算法的加速装置、方法及存储介质
CN110008154B (zh) * 2019-04-16 2020-08-21 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
US20190324802A1 (en) * 2019-06-28 2019-10-24 Intel Corporation Technologies for providing efficient message polling
CN112306918A (zh) * 2019-07-31 2021-02-02 北京百度网讯科技有限公司 数据访问方法、装置、电子设备和计算机存储介质
CN110781120B (zh) * 2019-10-23 2023-02-28 山东华芯半导体有限公司 一种axi总线主机设备跨4kb传输的实现方法
CN114064302B (zh) * 2020-07-30 2024-05-14 华为技术有限公司 一种进程间通信的方法及装置
CN112416353A (zh) * 2020-08-10 2021-02-26 上海幻电信息科技有限公司 渠道包打包方法、装置及计算机设备
TWI764311B (zh) * 2020-10-08 2022-05-11 大陸商星宸科技股份有限公司 記憶體存取方法及智慧處理裝置
CN112463365B (zh) 2020-11-13 2023-01-10 苏州浪潮智能科技有限公司 提升对Flash通道控制器消息处理效率的方法及装置
CN112559401B (zh) * 2020-12-07 2023-12-22 杭州慧芯达科技有限公司 一种基于pim技术的稀疏矩阵链式访问系统
US11853610B2 (en) * 2021-02-16 2023-12-26 iodyne, LLC Pass-through command queues for unmodified storage drivers
CN113032307A (zh) * 2021-03-26 2021-06-25 山东英信计算机技术有限公司 一种集成器件访问请求处理方法及相关组件
CN113157425B (zh) * 2021-05-20 2024-05-03 深圳马六甲网络科技有限公司 业务访问的处理方法、装置、设备及存储介质
CN113535083A (zh) * 2021-06-08 2021-10-22 平头哥(上海)半导体技术有限公司 用于打包存储访问请求的计算机系统和由计算机实现的方法
CN113254384B (zh) * 2021-06-23 2021-11-26 中科院微电子研究所南京智能技术研究院 一种众核系统的数据传输方法及系统
CN113934653B (zh) * 2021-09-15 2023-08-18 合肥大唐存储科技有限公司 一种嵌入式系统的Cache实现方法和装置
CN114328345B (zh) * 2021-12-10 2024-05-03 北京泽石科技有限公司 控制信息的处理方法、装置以及计算机可读存储介质
US20220114098A1 (en) * 2021-12-22 2022-04-14 Intel Corporation System, apparatus and methods for performing shared memory operations
US20240078017A1 (en) * 2022-09-01 2024-03-07 Advanced Micro Devices, Inc. Memory controller and near-memory support for sparse accesses
CN116594758B (zh) * 2023-07-18 2023-09-26 山东三未信安信息科技有限公司 一种密码模块调用优化系统及优化方法
CN117632820B (zh) * 2024-01-22 2024-05-14 北京开源芯片研究院 请求处理方法、装置、总线桥、电子设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101105786A (zh) * 2006-07-14 2008-01-16 中兴通讯股份有限公司 一种基于共享存储器的双cpu通信方法
CN101853238A (zh) * 2010-06-01 2010-10-06 华为技术有限公司 通信处理器间消息通信方法和系统
CN102541779A (zh) * 2011-11-28 2012-07-04 曙光信息产业(北京)有限公司 一种提高多数据缓冲区dma效率的系统和方法

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667286A (en) * 1984-12-20 1987-05-19 Advanced Micro Devices, Inc. Method and apparatus for transferring data between a disk and a central processing unit
US6324120B2 (en) * 1990-04-18 2001-11-27 Rambus Inc. Memory device having a variable data output length
JP3178909B2 (ja) * 1992-01-10 2001-06-25 株式会社東芝 半導体メモリ装置
US5444718A (en) * 1993-11-30 1995-08-22 At&T Corp. Retransmission protocol for wireless communications
US5924126A (en) * 1995-05-15 1999-07-13 Nvidia Method and apparatus for providing address translations for input/output operations in a computer system
US5881264A (en) * 1996-01-31 1999-03-09 Kabushiki Kaisha Toshiba Memory controller and memory control system
EP0845738A3 (en) * 1996-11-28 2006-09-20 Hitachi, Ltd. Storage system which transfers a command and data corresponding to said command subsequent to said command
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
FR2778258A1 (fr) * 1998-04-29 1999-11-05 Texas Instruments France Controleur d'acces de trafic dans une memoire, systeme de calcul comprenant ce controleur d'acces et procede de fonctionnement d'un tel controleur d'acces
WO1999030240A1 (en) * 1997-12-05 1999-06-17 Intel Corporation Memory system including a memory module having a memory module controller
US6621829B1 (en) * 1998-05-20 2003-09-16 Nortel Networks Limited Method and apparatus for the prioritization of control plane traffic in a router
US6505276B1 (en) * 1998-06-26 2003-01-07 Nec Corporation Processing-function-provided packet-type memory system and method for controlling the same
US6510474B1 (en) * 1998-11-16 2003-01-21 Infineon Technologies Ag Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests
US6526484B1 (en) * 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
US6266723B1 (en) * 1999-03-29 2001-07-24 Lsi Logic Corporation Method and system for optimizing of peripheral component interconnect PCI bus transfers
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
US6381658B1 (en) * 1999-12-29 2002-04-30 Intel Corporation Apparatus and method to precisely position packets for a queue based memory controller
US6745319B1 (en) * 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6754682B1 (en) * 2000-07-10 2004-06-22 Emc Corporation Method and apparatus for enabling consistent ancillary disk array storage device operations with respect to a main application
US20020107939A1 (en) * 2001-02-07 2002-08-08 Ford Daniel E. System and method for accessing software components in a distributed network environment
US6832279B1 (en) * 2001-05-17 2004-12-14 Cisco Systems, Inc. Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node
KR100428714B1 (ko) 2001-08-21 2004-04-30 한국전자통신연구원 이중포트램을 이용한 아이피 패킷 전달 장치 및 그 방법
US6799231B2 (en) * 2002-10-22 2004-09-28 Asix Electronics Corp. Virtual I/O device coupled to memory controller
US7069399B2 (en) * 2003-01-15 2006-06-27 Via Technologies Inc. Method and related apparatus for reordering access requests used to access main memory of a data processing system
KR100559025B1 (ko) * 2003-05-30 2006-03-10 엘지전자 주식회사 홈 네트워크 관리 시스템
US20050210185A1 (en) * 2004-03-18 2005-09-22 Kirsten Renick System and method for organizing data transfers with memory hub memory modules
US7296143B2 (en) * 2004-06-22 2007-11-13 Lenovo (Singapore) Pte. Ltd. Method and system for loading processor boot code from serial flash memory
US20060036817A1 (en) * 2004-08-10 2006-02-16 Oza Alpesh B Method and system for supporting memory unaligned writes in a memory controller
US20070255928A1 (en) * 2004-10-19 2007-11-01 Matsushita Electric Industrial Co., Ltd. Processor
US7826470B1 (en) * 2004-10-19 2010-11-02 Broadcom Corp. Network interface device with flow-oriented bus interface
US8478907B1 (en) * 2004-10-19 2013-07-02 Broadcom Corporation Network interface device serving multiple host operating systems
US7835380B1 (en) * 2004-10-19 2010-11-16 Broadcom Corporation Multi-port network interface device with shared processing resources
US7688838B1 (en) * 2004-10-19 2010-03-30 Broadcom Corporation Efficient handling of work requests in a network interface device
US7299313B2 (en) * 2004-10-29 2007-11-20 International Business Machines Corporation System, method and storage medium for a memory subsystem command interface
US7392353B2 (en) * 2004-12-03 2008-06-24 International Business Machines Corporation Prioritization of out-of-order data transfers on shared data bus
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US20070016698A1 (en) 2005-06-22 2007-01-18 Vogt Pete D Memory channel response scheduling
CN100437522C (zh) * 2005-09-09 2008-11-26 中国科学院计算技术研究所 一种远程内存服务器及其实现方法
US7536514B2 (en) * 2005-09-13 2009-05-19 International Business Machines Corporation Early return indication for read exclusive requests in shared memory architecture
US8230153B2 (en) * 2006-01-20 2012-07-24 Broadcom Corporation Method and system for HBA assisted storage virtualization
US8185711B2 (en) * 2006-05-16 2012-05-22 Samsung Electronics Co., Ltd. Memory module, a memory system including a memory controller and a memory module and methods thereof
US7552285B2 (en) * 2006-08-30 2009-06-23 Arm Limited Line fill techniques
TWI318348B (en) * 2006-09-22 2009-12-11 Realtek Semiconductor Corp Memory management method
JP5034551B2 (ja) * 2007-02-26 2012-09-26 富士通セミコンダクター株式会社 メモリコントローラ、半導体メモリのアクセス制御方法およびシステム
JP4715801B2 (ja) * 2007-04-26 2011-07-06 日本電気株式会社 メモリアクセス制御装置
US9292436B2 (en) * 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
US7685374B2 (en) * 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
JP5103663B2 (ja) * 2007-09-27 2012-12-19 ルネサスエレクトロニクス株式会社 メモリ制御装置
TWI344085B (en) * 2007-11-15 2011-06-21 Genesys Logic Inc Storage system for improving efficiency in accessing flash memory and method for the same
US8417920B2 (en) * 2007-12-21 2013-04-09 Arm Limited Management of speculative transactions
US7925824B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation System to reduce latency by running a memory channel frequency fully asynchronous from a memory device frequency
US7770077B2 (en) * 2008-01-24 2010-08-03 International Business Machines Corporation Using cache that is embedded in a memory hub to replace failed memory cells in a memory subsystem
US20090271532A1 (en) * 2008-04-24 2009-10-29 Allison Brian D Early header CRC in data response packets with variable gap count
US9111645B2 (en) * 2008-08-08 2015-08-18 Rambus Inc. Request-command encoding for reduced-data-rate testing
JP5217786B2 (ja) * 2008-08-27 2013-06-19 セイコーエプソン株式会社 リクエスト調停装置及びリクエスト調停方法
US8359444B2 (en) * 2008-09-24 2013-01-22 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
US8856463B2 (en) * 2008-12-16 2014-10-07 Frank Rau System and method for high performance synchronous DRAM memory controller
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US8090892B2 (en) * 2009-06-12 2012-01-03 Freescale Semiconductor, Inc. Ordered queue and methods therefor
JP2011034214A (ja) * 2009-07-30 2011-02-17 Canon Inc メモリ制御装置
US8195909B2 (en) * 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
WO2011046677A2 (en) * 2009-10-13 2011-04-21 Rambus Inc. Dynamic protocol for communicating command and address information
CN101860819A (zh) * 2010-06-07 2010-10-13 广州从兴电子开发有限公司 用户信息推送方法、呈现方法、系统、服务器及客户端
US20120226827A1 (en) * 2011-03-02 2012-09-06 Qualcomm Incorporated Mechanism for Performing SDIO Aggregation and Conveying SDIO Device Status to the Host Software
JP5666722B2 (ja) * 2011-03-14 2015-02-12 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. メモリ・インターフェース
US20130136033A1 (en) * 2011-11-28 2013-05-30 Abhishek Patil One-click connect/disconnect feature for wireless devices forming a mesh network
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9244824B2 (en) * 2012-07-05 2016-01-26 Samsung Electronics Co., Ltd. Memory sub-system and computing system including the same
US9424045B2 (en) * 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9240975B2 (en) * 2013-01-30 2016-01-19 Palo Alto Networks, Inc. Security device implementing network flow prediction
US9142280B1 (en) * 2014-08-06 2015-09-22 Freescale Semiconducotr, Inc. Circuit for configuring external memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101105786A (zh) * 2006-07-14 2008-01-16 中兴通讯股份有限公司 一种基于共享存储器的双cpu通信方法
CN101853238A (zh) * 2010-06-01 2010-10-06 华为技术有限公司 通信处理器间消息通信方法和系统
CN102541779A (zh) * 2011-11-28 2012-07-04 曙光信息产业(北京)有限公司 一种提高多数据缓冲区dma效率的系统和方法

Also Published As

Publication number Publication date
EP2801912A1 (en) 2014-11-12
JP2015508546A (ja) 2015-03-19
EP3588317B1 (en) 2021-03-17
KR101563837B1 (ko) 2015-10-27
US9870327B2 (en) 2018-01-16
JP5930439B2 (ja) 2016-06-08
EP3588317A1 (en) 2020-01-01
EP2801912B1 (en) 2019-04-10
CN102609378A (zh) 2012-07-25
EP2801912A4 (en) 2014-12-03
WO2013107393A1 (zh) 2013-07-25
KR20140124781A (ko) 2014-10-27
US20150006841A1 (en) 2015-01-01

Similar Documents

Publication Publication Date Title
CN102609378B (zh) 一种消息式内存访问装置及其访问方法
CN103778013B (zh) 一种多通道Nand Flash控制器及其控制方法
CN100354796C (zh) 使用多存储体存储器设备中的标记寄存器的方法
CN102411982B (zh) 内存控制器及命令控制方法
EP3007070A1 (en) Memory system, memory access request processing method and computer system
CN103377695A (zh) 存储系统、存储器件、存储控制器及操作其的方法
US9529622B1 (en) Systems and methods for automatic generation of task-splitting code
CN106951388A (zh) 一种基于PCIe的DMA数据传输方法及系统
CN107924375A (zh) 用于高速存储器接口的命令仲裁
CN103198856A (zh) 一种ddr控制器及请求调度方法
US20230011298A1 (en) Smart contract-based data processing method, apparatus, device, and storage medium
US11435909B2 (en) Device, system and method to generate link training signals
CN102567278A (zh) 一种片上多核数据传输方法和装置
JP3444154B2 (ja) メモリアクセス制御回路
US11687339B2 (en) Data processing method and apparatus, and related product
EP3287900B1 (en) Write request processing method and memory controller
CN109992539B (zh) 双主机协同工作装置
US8117626B2 (en) Asynchronous remote procedure calling method and computer product in shared-memory multiprocessor
CN102420749A (zh) 一种网卡发包功能的实现装置和方法
CN116486868A (zh) 计算高速链路(CXL)上的高速非易失性存储器(NVMe)
CN111797497B (zh) 一种用于电磁暂态并行仿真的通讯方法及系统
CN105739919A (zh) 资料存取系统及方法
GB2493419A (en) Interfacing a burst read capable master device to a page mode memory device
CN101853216A (zh) 数据处理系统、控制器及其搜寻特定内存区的方法
CN114730244A (zh) 存储器控制方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: HUAWEI TECHNOLOGY CO., LTD.

Effective date: 20130116

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20130116

Address after: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Applicant after: Institute of Computing Technology, Chinese Academy of Sciences

Applicant after: Huawei Technologies Co., Ltd.

Address before: 100080 Haidian District, Zhongguancun Academy of Sciences, South Road, No. 6, No.

Applicant before: Institute of Computing Technology, Chinese Academy of Sciences

C14 Grant of patent or utility model
GR01 Patent grant