CN107992357A - 内存访问方法及多处理器系统 - Google Patents

内存访问方法及多处理器系统 Download PDF

Info

Publication number
CN107992357A
CN107992357A CN201610949371.3A CN201610949371A CN107992357A CN 107992357 A CN107992357 A CN 107992357A CN 201610949371 A CN201610949371 A CN 201610949371A CN 107992357 A CN107992357 A CN 107992357A
Authority
CN
China
Prior art keywords
processing module
target
target data
request
snoop responses
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.)
Pending
Application number
CN201610949371.3A
Other languages
English (en)
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
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610949371.3A priority Critical patent/CN107992357A/zh
Priority to PCT/CN2017/107126 priority patent/WO2018077123A1/zh
Priority to EP17198559.1A priority patent/EP3316145A1/en
Priority to US15/795,129 priority patent/US20180113808A1/en
Publication of CN107992357A publication Critical patent/CN107992357A/zh
Pending legal-status Critical Current

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/0817Cache consistency protocols using directory methods
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例公开了一种内存访问方法,用于缩短了整个请求过程的时延,挺高响应效率。本发明实施例方法包括:第一处理模块接收第二处理模块发送的读请求,读请求用于请求缓存第一处理模块对应的存储空间中的目标数据,并指示第二处理模块对目标数据的期望状态;根据目标目录确定缓存有目标数据的一个或多个目标存储空间;向目标存储空间对应的目标处理模块发送监听请求,以使得目标处理模块向第二处理模块返回监听响应,监听响应用于响应期望状态;向第二处理模块返回目标报文,目标报文包含目标数据以及监听数量;当第二处理模块接收到的监听响应与监听数量匹配时,接收第二处理模块发送的更新报文;根据更新报文更新目标目录。

Description

内存访问方法及多处理器系统
技术领域
本发明涉及计算机领域,尤其涉及内存访问方法及多处理器系统。
背景技术
内存是处理器能够直接寻址的存储空间,用于暂时存放处理器中的运算数据。高速缓冲存储器(Cache)位于处理器与内存之间,是一个读写速度比内存更快的存储器。当处理器向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中,当处理器再次需要这些数据时,处理器就从高速缓冲存储器读取数据,而不是访问较慢的内存,如果需要的数据在高速缓冲存储器中没有,处理器会再去读取内存中的数据。高速缓存行(CacheLine)是高速缓冲存储器处理的最小单位。
处理器上有一套完整的协议,来保证Cache一致性。比较经典的Cache一致性协议当属MESI协议。
在MESI协议中,每个Cache line有4个状态,它们分别是:
在高速缓冲存储器中,处于M(Modified)和E(Exclusive)状态的高速缓存行(Cache line)的数据是该高速缓冲存储器独有的,不同点在于M状态的数据是和内存的不一致(dirty),E状态的数据和内存的一致(clean);处于S(Shared)状态的高速缓存行(Cache line)的数据是和其他核的高速缓存区共享,只有clean的数据才能被多个高速缓存区共享;处于I(Invalid)状态的高速缓存行的数据在该高速缓存存储器中无效。
目录:目录记录了其他的高速缓存区拥有高速缓存行的状态。
监听:低层内存查询高层内存以确定高层内存是否包含给定地址的数据的一种方法,主要目的是通过运行低层内存请求高层内存进行数据更新来维持内存的一致性。监听操作可以触发回写,或更普通的回写并无效。其中,低层内存指的是多级内存系统中距离处理器较远的内存,高层内存指的是多级内存存储系统中距离处理器较近的内存。
请参见图1,一个高速缓存一致性非均匀存储访问(CC-NUMA,Cache-CoherentNon-Uniform Memory Access)系统中,每个节点单元由一个一个节点控制器(NC,NodeController)芯片和与该NC芯片对接的两个处理器(processor)构成一个节点单元,通过NC芯片将多个节点互联构成一个大系统。NC要负责维护节点间的数据一致性,所以每个NC芯片都有目录维护本节点的内存被外节点拥有的状态和对外发起侦听。
处理器4需要访问处理器0的内存中的高速缓存行,首先通过NC2将请求路由到NC0上,NC0往处理器0发起请求,同时查看目录并往NC1和NC3发起监听,处理器0往NC0返回读响应,读响应在NC0上等待监听结果。NC1和NC3返回监听响应到NC0,NC0收全了读响应和监听响应后往NC2返回读响应,同时更新目录。NC2将读响应返回给处理器4,完成操作。
上述现有技术中,NC0得到读响应后,还需要等待监听结果,收全了监听响应后才会往NC2返回读响应,收集监听响应需要一定的时间,而返回读响应也需要一定的时间,这就会使得整个请求过程耗费较多的时间,响应效率低。
发明内容
本发明实施例提供了内存访问方法及处理模块,用于缩短了整个请求过程的时延,挺高响应效率。
有鉴于此,本发明实施例的第一方面提供了一种内存访问方法,包括:
第一处理模块接收第二处理模块发送的读请求,该读请求用于请求缓存第一处理模块对应的存储空间中的目标数据,并指示第二处理模块对目标数据的期望状态;第一处理模块查找目标目录,确定目标目录中缓存有该目标数据的一个或多个目标存储空间,目标存储空间为除了第一处理模块对应的存储空间以外的其他存储空间;第一处理模块确定目标存储空间后,向各个目标存储空间对应的目标处理模块发送监听请求,使得各个目标处理模块根据监听请求向第二处理模块返回监听响应,然后再向第二处理模块返回目标报文,该目标报文包含有目标数据和监听数量,监听数量即第一处理模块发送的监听请求的数量;当第二处理模块接收到的监听响应的数量与目标报文中的监听数量匹配时,第一处理模块会接收到第二处理模块发送的更新报文,并根据该更新报文更新目标目录。
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
结合本发明实施例的第一方面,在本发明第一方面的第一种实现方式中,监听请求包括期望状态的请求者,以及将监听响应返回给该请求者的指示,该请求者就是第二处理模块。
本发明实施例提供了一种使目标处理模块直接向第二处理模块返回监听响应的方式,提高了方案的可实现性。
结合本发明实施例的第一方面或第一方面的第一种实现方式,在本发明实施例第一方面的第二种实现方式中,期望状态为独占目标数据,即第二处理模期望除了第二处理模块自身能够缓存目标数据,其他处理模块不能缓存该目标数据,则对应地监听请求用于请求将目标存储空间对目标数据的缓存状态更改为无效。
本发明实施例提供了一种实现第二处理模块对目标数据的期望状态的方式,提高了方案的可实现性。
结合本发明实施例的第一方面或第一方面的第一种实现方式,在本发明实施例第一方面的第三种实现方式中,期望状态为共享目标数据,即第二处理模块期望能和其他处理模块共享该目标数据,即都能缓存该目标数据,对应地监听请求用于请求将目标存储空间对目标数据的缓存状态更改为共享。
本发明实施例提供了另一种实现第二处理模块对目标数据的期望状态的方式,提高了方案的灵活性。
本发明实施例的第二方面提供了另一种内存访问方法,包括:
第二处理模块想要访问并缓存目标数据,根据目标数据的地址信息确定目标数据位于第二处理模块对应的存储空间中,第二处理模块向第一处理模块发送读请求,该读请求用于请求缓存该目标数据,并指示第二处理模块对该目标数据的期望状态;第二处理模块发送读请求后,接收第一处理模块返回的目标报文,并第一处理模块目标处理模块根据监听请求返回的监听响应,其中,目标报文包含有该目标数据以及监听数量,监听数量即第一处理模块向目标处理模块发送的监听请求的数量,目标处理模块为第一处理模块根据目标目录确定的缓存有目标数据的一个或多个目标存储空间对应的处理模块,目标存储空间为除了第一处理模块对应的存储空间以外的其他存储空间,而监听响应则是目标处理模块用于响应期望状态生成的;当第二处理模块确定接收到的目标处理模块返回的监听响应与目标报文中包含的监听数量匹配时,第二处理模块向第一处理模块发送更新报文,以使得第一处理模块更新目标目录。
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
结合本发明实施例的第二方面,在本发明第二方面的第一种实现方式中,期望状态为独占目标数据,即第二处理模期望除了第二处理模块自身能够缓存目标数据,其他处理模块不能缓存该目标数据,则对应地监听响应用于指示目标存储空间对该目标数据的缓存状态已更改为无效。
本发明实施例提供了一种实现第二处理模块对目标数据的期望状态的方式,提高了方案的可实现性。
结合本发明实施例的第二方面,在本发明实施例第二方面的第二种实现方式中,期望状态为共享目标数据,即第二处理模块期望能和其他处理模块共享该目标数据,即都能缓存该目标数据,对应地监听响应用于指示目标存储空间对目标数据的缓存状态已更改为共享。
本发明实施例提供了另一种实现第二处理模块对目标数据的期望状态的方式,提高了方案的灵活性。
在本发明实施例的第三方面提供了另一种内存访问方法,包括:
目标处理模块接收第一处理模块发送的监听请求,该监听请求用于指示第二处理模块对目标数据的期望状态,该目标数据为第一处理模块对应的存储空间中的数据;目标处理模块根据监听请求中指示的期望状态更改目标存储空间对目标数据的缓存状态,并生成监听响应,目标存储空间及目标处理模块对应的存储空间;目标处理模块生成监听响应后,向第二处理模块返回该监听响应。
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
结合本发明实施例的第三方面,在本发明第三方面的第一种实现方式中,监听请求包括期望状态的请求者,以及将监听响应返回给该请求者的指示,该请求者就是第二处理模块,对应地,目标处理模块向第二处理模块返回监听响应的过程具体如下:
目标处理模块根据监听请求中的指示向第二处理模块返回监听响应。
本发明实施例提供了一种目标处理模块直接向第二处理模块返回监听响应的具体方式,提高了方案的可实现性。
结合本发明实施例的第三方面或第三方面的第一种实现方式,在本发明实施例第三方面的第二种实现方式中,期望状态为独占目标数据,即第二处理模期望除了第二处理模块自身能够缓存目标数据,其他处理模块不能缓存该目标数据,则对应地,目标处理模块根据期望状态更改目标存储空间对目标数据的缓存状态具体为:
目标处理模块将目标存储空间对目标数据的缓存状态更改为无效。
本发明实施例提供了一种实现第二处理模块对目标数据的期望状态的方式,提高了方案的可实现性。
结合本发明实施例的第三方面或第三方面的第一种实现方式,在本发明实施例第三方面的第三种实现方式中,期望状态为共享目标数据,即第二处理模块期望能和其他处理模块共享该目标数据,即都能缓存该目标数据,对应地,目标处理模块根据期望状态更改目标存储空间对目标数据的缓存状态具体为:
目标处理模块将目标存储空间对目标数据的缓存状态更改为共享。
本发明实施例提供了另一种实现第二处理模块对目标数据的期望状态的方式,提高了方案的灵活性。
本发明实施例第四方面提供了一种多处理器系统,该系统包括:第一处理模块、第二处理模块及目标处理模块;
其中,第一处理模块用于:接收第二处理模块发送的读请求,该读请求用于请求缓存第一处理模块对应的存储空间中的目标数据,并指示第二处理模块对目标数据的期望状态;根据目标目录确定缓存有目标数据的一个或多个目标存储空间,目标存储空间为除了第一处理模块对应的存储空间以外的其他存储空间;向目标存储空间对应的一个或多个目标处理模块发送监听请求;向第二处理模块返回目标报文,目标报文包含目标数据以及监听数量,监听数量为第一处理模块发送的监听请求的数量;当第二处理模块接收到的监听响应与监听数量匹配时,接收第二处理模块发送的更新报文,根据该更新报文更新目标目录;
第二处理模块用于:向第一处理模块发送读请求;接收第一处理模块返回的目标报文;接收目标处理模块根据监听请求返回的监听响应,该监听响应用于响应期望状态;当第二处理模块确定监听响应的数量与监听数量匹配时,向第一处理模块发送更新报文;
目标处理模块用于:接收第一处理模块发送的监听请求,监听请求用于指示第二处理模块对目标数据的期望状态;根据期望状态更改目标存储空间对目标数据的缓存状态,并生成监听响应;向第二处理模块返回监听响应。
结合本发明实施例第四方面,在本发明实施例第四方面的第一种实现方式中,监听请求包括期望状态的请求者,以及将监听响应返回给该请求者的指示,该请求者就是第二处理模块,对应地,目标处理模块还用于根据该指示向第二处理模块返回监听响应。
结合本发明实施例第四方面或第四方面的第一种实现方式,在本发明实施例第四方面的第二种实现方式中,期望状态为独占目标数据,即第二处理模期望除了第二处理模块自身能够缓存目标数据,其他处理模块不能缓存该目标数据,则对应地,目标处理模块还用于将目标存储空间对目标数据的缓存状态更改为无效。
结合本发明实施例第四方面或第四方面的第一种实现方式,在本发明实施例第四方面的第三种实现方式中,期望状态为共享目标数据,即第二处理模块期望能和其他处理模块共享该目标数据,即都能缓存该目标数据,对应地,目标处理模块还用于将目标存储空间对目标数据的缓存状态更改为共享。结合本发明实施例第四方面,第四方面的第一至三种实现方式中任意一种实现方式,在本发明实施例第四方面的第四种实现方式中,第一处理模块、第二处理模块及目标处理模块均包含至少一个处理器。
结合本发明实施例第四方面,第四方面的第一至四种实现方式中任意一种实现方式,在本发明实施例第四方面的第四种实现方式中,第一处理模块、第二处理模块及目标处理模块均包含至少一个节点控制。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
附图说明
图1为CC-NUMA系统的一个实施例示意图;
图2为本发明实施例中内存访问方法的一个实施例流程图;
图3为本发明实施例中内存访问方法的另一实施例流程图;
图4为本发明实施例中内存访问方法的另一实施例流程图;
图5为本发明实施例中内存访问方法的另一实施例流程图;
图6为CC-NUMA系统的另一实施例示意图;
图7为本发明实施例中多处理器系统的一个实施例示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了内存访问方法及处理模块,用于缩短了整个请求过程的时延,挺高响应效率。
需要说明的是,本发明实施例中,第一处理模块,第二处理模块及目标处理模块均包含至少一个处理器。可选地,第一处理模块,第二处理模块及目标处理模块均还可以包含至少一个节点控制器。第一处理模块,第二处理模块及目标处理模块还可以包含其他器件,具体本发明实施例中不作限定。
还需要说明的是,本发明实施例中,目标处理模块不能是第一处理模块,可以是第二处理模块,也可以是其他处理模块,具体本发明实施例中不作限定。
为了便于理解,可以参阅图1,图1为各处理模块包含两个处理器以及一个节点控制器的一个示例,各处理模块通过节点控制器互联构成一个CC-NUMA系统。本发明实施例中的内存访问方法可以基于此系统架构,当然也可以基于其他系统架构,具体此处不作限定。
下面先从第一处理模块的角度对本发明实施例中的内存访问方法进行描述,请参阅图2,本发明实施例中内存访问方法的一个实施例包括:
201、第一处理模块接收第二处理模块发送的读请求;
当第二处理模块中的第二处理器需要读取目标数据并进行缓存时,在系统中查询目标数据对应的地址信息,根据该地址信息确定目标数据位于第一处理模块中第一处理器的存储空间,第二处理模块向第一处理模块发送读请求,用于请求缓存第一处理器对应的存储空间中的目标数据,并指示第二处理器对目标数据的期望状态。第一处理模块接收第二处理模块发送的读请求。
需要说明的是,接收读请求的操作可以由第一处理模块中的第一处理器执行,也可以由第一处理模块中控制该第一处理器的节点控制器执行。
还需要说明的是,第二处理器对目标数据的期望状态,指的是第二处理器期望对目标数据的占有状态,可以是独占目标数据,即除了第二处理器自己能够缓存该目标数据,其他处理器不得缓存该目标数据,也可以是与其他处理器共享该目标数据,即除了第二处理器能够缓存该目标数据,其他处理器也能缓存该目标数据。期望状态还可以是其他状态,具体此处不作限定。202、第一处理模块根据目标目录确定缓存有目标数据的一个或多个目标存储空间;
第一处理模块接收到读请求后,根据目标目录确定缓存有目标数据的一个或多个目标存储空间,目标存储空间为除了第一处理模块对应的存储空间以外的其他存储空间。需要说明的是,目标目录用于维护第一处理模块对应的存储空间中的数据被其他处理模块的存储空间拥有的状态。
还需要说明的是,确定目标存储空间的操作可以是第一处理模块中的第一处理器执行的,也可以由第一处理模块中控制该第一处理器的节点控制器执行。
203、第一处理模块向目标存储空间对应的一个或多个目标处理模块发送监听请求;
第一处理模块确定目标存储空间后,向目标存储空间对应的一个或多个目标处理模块发送监听请求,以使得这一个或多个目标处理模块根据监听请求向第二处理模块返回监听响应。该监听请求用于向目标处理模块指示请求者对目标数据的期望状态,该监听响应用于响应该期望状态。
需要说明的是,发送监听请求的操作可以是第一处理模块中的第一处理器执行,也可以由用于控制该第一处理器的节点控制器执行。第一处理模块可以向目标处理模块中目标存储空间对应的目标处理器发送监听请求,也可以向通过控制该目标处理器的节点控制器向该目标处理器转发监听请求。
204、第一处理模块向第二处理模块返回目标报文;
第一处理模块发送监听请求后,向第二处理模块返回目标报文,该目标报文包含目标数据以及监听数量,监听数量即第一处理模块发送的监听请求的数量。
需要说明的是,目标数据由第一处理模块中的第一处理器从存储空间中获取,获取目标数据后,可以由第一处理器直接返回给第一处理模块,也可以通过第一处理模块中控制该第一处理器的节点控制器返回给第二处理模块。
205、第一处理模块接收第二处理模块发送的更新报文;
第一处理模块向一个或多个目标处理模块发送监听请求后,这一个或多个目标处理模块会根据该监听请求对目标存储空间发起监听,并执行相应的操作,以响应请求者对目标数据的期望状态,执行完后向第二处理模块返回监听响应。第二处理模块陆续接收这一个或多个目标处理模块的监听响应,同时接收第一处理模块返回的目标报文,第二处理模块根据目标报文中的监听数量,确定是否收全监听响应,当收到的监听响应数量与监听数量相匹配时,确定收全监听响应,向第一处理模块发送更新报文,第一处理模块接收该更新报文。
需要说明的是,接收更新报文的操作可以由第一处理模块中的第一处理器执行,也可以第一处理模块中控制该第一处理器的节点控制器执行。
206、第一处理模块根据更新报文更新目标目录。
第一处理模块接收更新报文后,根据更新报文更新目标目录,即将目标目录中目标数据的状态更改为第二处理模块对目标数据的期望状态。
需要说明的是,更新目标目录的操作可以由第一处理模块中的第一处理器执行,也可以由第一处理模块中控制该第一处理器的节点控制器执行。
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
基于上述图2对应的实施例,在本发明实施例中,监听请求包含该期望状态的请求者,即第二处理模块中的第二处理器,还包含将监听响应返回请求者的指示,即指示目标处理模块将监听响应返回至第二处理模块中的第二处理器。
本发明实施例提供了一种第一处理模块发送监听请求使得目标处理模块向第二处理模块返回监听响应的具体实现方式,提高了方案的可实现性。
基于上述图2对应的实施例,在本发明实施例中,期望状态可以为共享目标数据,即除了第二处理模块中的第二处理器,其他处理器也能缓存该目标数据。对应地,第一处理模块向目标处理模块发送的监听请求还用于请求将目标存储空间中目标数据的缓存状态更改为共享。
期望状态还可以为独占目标数据,即除了第二处理模块中的第二处理器,其他处理器不能缓存该目标数据。对应地,第一处理模块向目标处理模块发送的监听请求还用于请求将目标存储空间中目标数据的缓存状态更改为无效。期望状态还可以是其他状态,具体此处不作限定。
本发明实施例中,第一处理模块可以通过多种方式响应第二处理模块对目标数据的期望状态,提高了方案的灵活性。
下面从第二处理模块的角度介绍本发明实施例中的内存访问方法,请参阅图3,本发明实施例中内存访问方法的另一实施例包括:
301、第二处理模块向第一处理模块发送读请求;
当第二处理模块中的第二处理器需要读取目标数据并进行缓存时,在系统中查询目标数据对应的地址信息,并根据地址信息确定目标数据位于第一处理模块中第一处理器对应的存储空间,第二处理模块向第一处理模块发送读请求,该读请求用于请求缓存第一处理器对应的存储空间中的目标数据,并指示第二处理器对目标数据的期望状态。
需要说明的是,发送读请求的操作可以由第二处理模块中的第二处理器执行,也可以由第二处理模块中控制该第二处理器的节点控制器执行。
还需要说明的是,第二处理器对目标数据的期望状态,指的是第二处理器期望对目标数据的占有状态,可以是独占目标数据,即除了第二处理器自己能够缓存该目标数据,其他处理器不得缓存该目标数据,也可以是与其他处理器共享该目标数据,即除了第二处理器能够缓存该目标数据,其他处理器也能缓存该目标数据。期望状态还可以是其他状态,具体此处不作限定。302、第二处理模块接收第一处理模块返回的目标报文;
第一处理模块接收读请求后,根据目标目录确定缓存有目标数据的一个或多个目标存储空间,向目标存储空间对应的一个或多个目标处理模块发送监听请求,同时向第二处理模块返回目标报文,该目标报文中包含目标数据以及监听数量,即第二处理模块发送的监听请求的数量。第二处理模块接收第一处理模块返回的目标报文,获取该目标数据以及该监听数量。
需要说明的是,本发明实施例中接收目标报文的操作可以由第二处理模块中的第二处理器执行,也可以由第二处理模块中控制该第二处理器的节点控制器执行。如果接收目标报文的操作是由节点控制器执行的,那么节点控制器获取目标数据后,还需要将目标数据返回给第二处理器,以使得第二处理器完成对目标数据的缓存。
303、第二处理模块接收目标处理模块根据监听请求返回的监听响应;
第一处理模块向一个或多个目标处理模块发送监听请求,该监听请求指示了请求者对目标数据的期望状态,这一个或多个目标处理模块接收该监听请求,根据该监听请求对应的目标存储空间发起监听,并执行相应的操作以响应请求者对目标数据的期望状态,执行完后均向第二处理模块返回监听响应,第二处理模块接收这一个或多个目标处理模块返回的监听响应。
需要说明的是,本发明实施例中接收监听响应的操作可以由第二处理模块中的第二处理器执行,也可以由第二处理模块中控制该第二处理器的节点控制器执行。
304、第二处理模块向第一处理模块发送更新报文。
第二处理模块接收到目标报文及监听响应后,判断目标报文中的监听数量与接收到的监听响应的数量是否匹配,当确定监听数量与收到的监听响应的数量匹配,即确定各个目标处理器均对该期望状态做出了响应时,第二处理模块向第一处理模块发送更新报文,使得第一处理模块根据该更新报文更新目标目录,即将目标目录中目标数据的状态更改为第二处理模块对目标数据的期望状态。
需要说明的是发送更新报文的操作可以由第二处理模块中的第二处理器执行,也可以由第二处理模块中控制该第二处理器的节点控制器执行。
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
基于上述图3对应的实施例,在本发明实施例中,第二处理器对目标数据的期望状态可以是共享目标数据,即除了第二处理模块中的第二处理器,其他处理器也能缓存该目标数据。对应地,第二处理模块接收到的目标处理模块返回的监听响应用于指示目标存储空间中目标数据的缓存状态已更改为共享。第二处理器对目标数据的期望状态还可以是独占目标数据,即除了第二处理器,其他处理器不能缓存该目标数据。对应地,第二处理模块接收到的目标处理模块返回的监听响应用于指示目标存储空间中目标数据的缓存状态已更改为无效。第二处理器对目标数据的期望状态还可以是其他状态,具体此处不作限定。
本发明实施例提供了第二处理模块对目标数据的多种期望状态以及对应的实现方式,提高了方案的灵活性。
下面从目标处理模块的角度介绍对本发明实施例中的内存访问方法,请参阅图4,本发明实施例中内存访问方法的另一实施例包括:
401、目标处理模块接收第一处理模块发送的监听请求;
第一处理模块接收第二处理模块发送的读请求,该读请求用于请求缓存第一处理模块中第一处理器对应的存储空间中的目标数据,以及第二处理模块中的第二处理器对目标数据的期望状态。第一处理模块接收该读请求,根据目标目录确定缓存有目标数据的一个或多个目标存储空间,向目标存储空间对应的一个或多个目标处理模块发送监听请求,该监听请求用于指示请求者对目标数据的期望状态,即第二处理模块对目标数据的期望状态,目标处理模块接收第一处理模块发送的该监听请求。
需要说明的是,本发明实施例中接收监听请求的操作可以由目标处理模块中的目标存储空间对应的目标处理器执行,也可以由目标处理模块中控制该目标处理器的节点控制器执行。
还需要说明的是,第二处理器对目标数据的期望状态,指的是第二处理器期望对目标数据的占有状态,可以是独占目标数据,即除了第二处理器自己能够缓存该目标数据,其他处理器不得缓存该目标数据,也可以是与其他处理器共享该目标数据,即除了第二处理器能够缓存该目标数据,其他处理器也能缓存该目标数据。期望状态还可以是其他状态,具体此处不作限定。
402、目标处理模块根据期望状态更改目标存储空间对目标数据的缓存状态,并生成监听响应;
目标处理模块接收监听请求后,目标处理模块中的目标处理器根据监听请求中请求者对目标数据的期望状态更改目标存储空间对目标数据的缓存状态,并生成监听响应。
403、目标处理模块向第二处理模块返回监听响应。
目标处理模块响应该期望状态并生成监听响应后,向第二处理模块返回该监听响应,使得第二处理模块根据该监听响应确定目标数据是否已达到期望状态,当第二处理模块确定收全各个目标处理模块返回的监听响应时,确定目标数据达到期望状态,第二处理模块向第一处理模块发送更新报文,第一处理模块更新报文更新目标目录,将目标数据的状态更改成该期望状态。
需要说明的是,本发明实施例中返回监听响应的操作可以由目标处理模块中的目标处理器执行,也可以由目标处理模块中用于控制该目标处理器的节点控制器执行。
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
基于上述图4对应的实施例,在本发明实施例中,第一处理模块发送的监听请求中包含有期望状态的请求者,以及将监听响应返回请求者的指示,即告知目标处理模块期望状态的请求者为第二处理模块中的第二处理器,并指示目标处理模块将监听响应返回给第二处理器。因此目标处理模块接收第一处理模块发送的监听请求后,具体可以根据该监听请求中的指示向第二处理模块返回监听响应。
本发明实施例提供了一种目标处理模块向第一处理模块返回监听响应的方式,提高了方案的可实现性。
基于上述图4对应的实施例,在本发明实施例中,第二处理模块对目标数据的期望状态可以为共享目标数据,即除了第二处理模块中的第二处理器,其他处理器也能缓存该目标数据。对应地,目标处理模块根据期望状态更改目标存储空间对目标数据的缓存状态可以通过如下方式:目标处理模块将目标存储空间对目标数据的缓存状态更改为共享。
第二处理模块对目标数据的期望状态还可以为独占目标数据,即除了第二处理器,其他处理器不能缓存该目标数据。对应地,目标处理模块根据期望状态更改目标存储空间对目标数据的缓存状态可以通过如下方式:目标处理模块将目标存储空间对目标数据的缓存状态更改为无效。
第二处理模块队目标数据的期望状态还可以是其他状态,相应地,目标处理模块还可以通过其他方式更改目标数据的缓存状态,具体此处不作限定。
本发明实施例中目标处理模块可以通过多种方式更改目标数据的缓存状态,提高了方案的灵活性。
为了便于理解,下面以一第一处理模块、第二处理模块及目标处理模块三者交互的情景介绍本本发明实施例中的内存访问方法,请参阅图4,本发明实施例中内存访问方法的另一实施例包括:
501、第二处理模块向第一处理模块发送读请求;
当第二处理模块中的第二处理器需要读取目标数据并进行缓存时,在系统中查询目标数据对应的地址信息,并根据地址信息确定目标数据位于第一处理模块中第一处理器对应的存储空间,第二处理模块向第一处理模块发送读请求,该读请求用于请求缓存第一处理器对应的存储空间中的目标数据,并指示第二处理器对目标数据的期望状态。
需要说明的是,第二处理器对目标数据的期望状态,指的是第二处理器期望对目标数据的占有状态,可以是独占目标数据,即除了第二处理器自己能够缓存该目标数据,其他处理器不得缓存该目标数据,也可以是与其他处理器共享该目标数据,即除了第二处理器能够缓存该目标数据,其他处理器也能缓存该目标数据。期望状态还可以是其他状态,具体此处不作限定。还需要说明的是,发送读请求的操作可以由第二处理模块中的第二处理器执行,也可以由第二处理模块中控制该第二处理器的节点控制器执行。
502、第一处理模块接收第二处理模块发送的读请求;
第二处理模块向第一处理模块发送读请求后,第一处理模块接收该读请求。需要说明的是,接收读请求的操作可以由第一处理模块中的第一处理器执行,也可以由第一处理模块中控制该第一处理器的节点控制器执行。
503、第一处理模块根据目标目录确定缓存有目标数据的一个或多个目标存储空间;
第一处理模块接收到读请求后,根据目标目录确定缓存有目标数据的一个或多个目标存储空间,目标存储空间为除了第一处理模块对应的存储空间以外的其他存储空间。需要说明的是,目标目录用于维护第一处理模块对应的存储空间中的数据被其他处理模块的存储空间拥有的状态。
还需要说明的是,确定目标存储空间的操作可以是第一处理模块中的第一处理器执行的,也可以由用于控制该第一处理器的节点控制器执行。
504、第一处理模块向目标存储空间对应的一个或多个目标处理模块发送监听请求;
第一处理模块确定目标存储空间后,向目标存储空间对应的一个或多个目标处理模块发送监听请求,该监听请求用于向目标处理模块指示请求者对目标数据的期望状态,该监听请求包含有该期望状态的请求者,监听请求还可以包括将监听响应返回请求者的指示或其他信息,具体此处不作限定。
需要说明的是,发送监听请求的操作可以是第一处理模块中的第一处理器执行,也可以由第一处理模块中控制该第一处理器的节点控制器执行。第一处理模块可以向目标处理模块中目标存储空间对应的目标处理器发送监听请求,也可以向通过控制该目标处理器的节点控制器向该目标处理器转发监听请求。
505、第一处理模块向第二处理模块返回目标报文;
第一处理模块接收读请求后,该请求中携带有目标数据的地址信息,第一处理模块根据该地址信息在存储空间中找到目标数据,同时统计发送的监听请求的数量,将该监听请求的数量及该目标数据承载在目标报文中,向第二处理模块返回该目标报文。
需要说明的是,本发明实施例中返回目标报文的操作可以由第一处理模块中的第一处理器执行,也可以由第一处理模块中用于控制该第一处理器的节点控制器执行。
506、目标处理模块接收第一处理模块发送的监听请求;
第一处理模块向一个或多个目标处理模块发送监听请求后,各个目标处理模块接收该监听请求。根据该监听请求确定请求者对目标数据的期望状态,以及该期望状态的请求者为第二处理模块。
需要说明的是,接收监听请求的操作可以有目标处理模块中目标存储空间对应的目标处理器执行,也可以由该目标处理模块中用于控制该目标处理器的节点控制器执行。
507、目标处理模块根据期望状态更改目标存储空间对目标数据的缓存状态,并生成监听响应;
各个目标处理模块接收监听请求后,根据监听请求中的期望状态更改目标存储空间对目标数据的缓存状态,并生成监听响应。具体地,当该期望状态为共享目标数据时,目标处理器将目标存储空间中目标数据的缓存状态更改为共享,此时监听响应用于指示目标数据的缓存状态已为共享状态。当该期望状态为独占目标数据时,目标处理器根据将目标存储空间中目标数据的缓存状态更改为无效,此时监听响应用于指示目标数据的缓存状态已为无效状态。目标处理器还可以通过其他方式更改缓存状态,具体此处不作限定。
508、目标处理模块向第二处理模块返回监听响应;
目标处理模块生成监听响应后,向第二处理模块返回监听响应。具体地,目标处理模块可以是根据监听请求中向请求中的指示向第二处理模块返回监听响应,还可以是根据预定协议向期望状态的请求者,即第二处理模块返回监听响应,具体此处不作限定。
需要说明的是,返回监听响应的操作可以由目标处理模块中的目标处理器执行,也可以由目标处理模块中用于控制该目标处理器的节点控制器执行。
509、第二处理模块接收第一处理模块返回的目标报文;
第一处理模块向第二处理模块发送目标报文后,第二处理模块接收该目标报文,获取该目标报文中的目标数据以及监听数量。
需要说明的是,接收目标报文的操作可以由第二处理模块中的第二处理器执行,也可以由第二处理模块中用于控制该第二处理器的节点控制器执行。如果接收目标报文的操作是由节点控制器执行的,那么节点控制器获取目标数据后,还需要将目标数据返回给第二处理器,以使得第二处理器完成对目标数据的缓存。
510、第二处理模块接收目标处理模块返回的监听响应;
第二处理模块在接收目标报文的同时,陆续接收各个目标处理模块返回的监听响应。需要说明的是,接收监听响应的操作可以由第二处理模块中的第二处理器执行,也可以由第二处理模块中控制该第二处理器的节点控制器执行。
511、第二处理模块向第一处理模块发送更新报文;
第二处理模块判断目标报文中的监听数量与接收到的监听响应的数量是否匹配,当第二处理模块确定监听数量与收到的监听响应的数量匹配时,即各个目标处理模块均对该期望状态做出了响应,第二处理模块向第一处理模块发送更新报文。
需要说明的是,发送更新报文的操作可以由第一处理模块中的第一处理器执行,也可以由第一处理模块中控制该第一处理器的节点控制器执行。
512、第一处理模块接收该更新报文;
第一处理模块接收第一模块发送的该更新报文,需要说明的是,接收更新报文的操作可以由第一处理模块中的第一处理器执行,也可以由第一处理模块中控制该第一处理器的节点控制器执行。
513、第一处理模块根据该更新报文更新目标目录。
第一处理模块接收更新报文后,根据该更新报文更新目标目录,即将目标目录中目标数据的状态更改为第二处理模块对目标数据的期望状态。具体地,可以是仅第二处理器缓存有目标数据,可以是第二处理器及目标处理器均缓存有目标数据,还可以是其他状态,具体此处不作限定。
需要说明的是,更新目标目录的操作可以由第一处理模块中的第一处理器执行,也可以由第一处理模块中控制该第一处理器的节点控制器执行。
还需要说明的是,本发明实施例中,步骤505第一处理模块返回目标报文的过程在步骤504第一处理模块发送监听请求之后,但是不限定在步骤506至步骤507目标处理模块接收监听请求并生成监听响应之前。步骤509第二处理模块接收目标报文的过程在步骤505之后,但不限定在步骤506至508之后。
本发明实施例中,第一处理模块接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块发送监听请求,同时向第二处理模块返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块根据该目标报文携带的数量以及目标处理模块返回的监听响应便能确定请求完成,向第一处理模块发送更新报文,第一处理模块根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块不需要等待收齐监听响应,便可以直接向第二处理模块返回目标数据,同时通知目标处理模块直接向第二处理模块返回监听响应,在第一处理模块上收集监听响应以确认任务完成,这样目标数据从第二处理模块到第一处理模块的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
其次,本发明实施例中提供了多种不同期望状态下的多种实现方式,以及多种使得目标处理模块直接向第二处理模块返回监听响应的方式,提高了方案的灵活性。
为了便于理解,下面以一实际应用场景对本发明实施例中的内存访问方法进行详细说明:
第一处理模块包含有一个节点控制器NC1,一个处理器processor1,处理器processor1对应的存储空间memory1,以及目录dir1,dir1用于维护memory1被其他处理模块拥有的状态的。
第二处理模块包含有一个节点控制器NC2,一个处理器processor2,处理器processor2对应的存储空间memory2,以及目录dir2,dir2用于维护memory2被其他处理模块拥有的状态的。
第三处理模块(目标处理模块)包含有一个节点控制器NC3,一个处理器processor3,处理器processor3对应的存储空间memory3,以及目录dir3,dir3用于维护memory2被其他处理模块拥有的状态的;
第四处理模块(目标处理模块)包含有一个节点控制器NC4,一个处理器processor4,处理器processor4对应的存储空间memory4,以及目录dir4,dir4用于维护memory4被其他处理模块拥有的状态的。
这四个处理模块通过节点控制器NC互联,构成一个CC-NUMA系统,如图6所示。
processor2需要缓存memory1中的一行数据A(目标数据),并且想要独占该行数据,processor2将读请求发到NC2上,NC2再将该读请求路由到NC1上,该读请求用于请求缓存数据A,并独占数据A。NC1接收该读请求,并向processor1转发该读请求,同时查看目录dir1,dir1中记载数据A为共享状态,memory3和memory4(目标存储空间)中缓存有该数据,NC1向NC3和NC4分别发送一个监听请求,该监听请求中包含的信息有请求者请求独占数据A(期望状态),请求者为processor2,以及监听完成后将监听响应返回至请求者。
processor1接收到NC1发送的读请求后,根据读请求中的地址信息在memory1中查找到数据A,并向NC1返回数据A,NC1接收到数据A后,生成目标报文,并将该目标报文返回给NC2,该目标报文中包含有数据A和监听数量2。
而NC3和NC4接收NC1的监听请求后,根据监听请求中的期望状态分布将memory3和memory4中数据A的缓存状态更改为无效,并生成监听响应,该监听响应用于指示数据A已更改为无效。NC3和NC4分别将各自的监听响应返回给NC2。
N2接收NC1返回的目标报文,确定监听数量,同时陆续接收到NC3和NC4返回的监听响应,此时接收到的监听响应的数量为2与目标报文中的监听数量匹配,NC2确定收全监听响应,将目标报文中的数据A返回给processor2,同时向NC1发送更新报文,NC1接收该更新报文,并根据该更新报文将dir1中数据A中的状态更改为独占,仅memory2缓存有该数据。
上面介绍了本发明实施例中的内存访问方法,下面介绍本发明实施例中的多处理器系统,请参阅图7,本发明实施例中多处理器系统的一个实施例包括:
第一处理模块701,用于接收第二处理模块发送的读请求,该读请求用于请求缓存第一处理模块对应的存储空间中的目标数据,并指示第二处理模块对目标数据的期望状态;根据目标目录确定缓存有目标数据的一个或多个目标存储空间,目标存储空间为除了第一处理模块对应的存储空间以外的其他存储空间;向目标存储空间对应的一个或多个目标处理模块发送监听请求;向第二处理模块返回目标报文,目标报文包含目标数据以及监听数量,监听数量为第一处理模块发送的监听请求的数量;当第二处理模块接收到的监听响应与监听数量匹配时,接收第二处理模块发送的更新报文,根据该更新报文更新目标目录;
第二处理模块702,用于向第一处理模块发送读请求;接收第一处理模块返回的目标报文;接收目标处理模块根据监听请求返回的监听响应,该监听响应用于响应期望状态;当第二处理模块确定监听响应的数量与监听数量匹配时,向第一处理模块发送更新报文;
目标处理模块703,用于接收第一处理模块发送的监听请求,监听请求用于指示第二处理模块对目标数据的期望状态;根据期望状态更改目标存储空间对目标数据的缓存状态,并生成监听响应;向第二处理模块返回监听响应。
本发明实施例中,第一处理模块701接收到第二处理模块发送的目标数据的读请求后,根据目标目录确定缓存有目标数据的目标存储空间,向目标存储空间对应的目标处理模块703发送监听请求,同时向第二处理模块702返回目标报文,在目标报文中携带该目标数据及其发送的监听请求的数量,第二处理模块702根据该目标报文携带的数量以及目标处理模块703返回的监听响应便能确定请求完成,向第一处理模块701发送更新报文,第一处理模块701根据该更新报文更新目录中目标数据的状态。可见本方案中,第一处理模块701不需要等待收齐监听响应,便可以直接向第二处理模块702返回目标数据,同时通知目标处理模块703直接向第二处理模块702返回监听响应,在第一处理模块701上收集监听响应以确认任务完成,这样目标数据从第二处理模块702到第一处理模块701的时延就可以被收集监听响应的时延覆盖掉,避免了两段时延串行的情况,缩短了整个请求过程的时延,挺高了响应效率。
基于上述图7对应的多处理器系统,在本发明实施例中,监听请求包括期望状态的请求者,以及将监听响应返回给该请求者的指示,该请求者就是第二处理模块,对应地,目标处理模块还用于根据该指示向第二处理模块返回监听响应。
基于上述图7对应的多处理器系统,在本发明实施例中,期望状态为独占目标数据,即第二处理模期望除了第二处理模块自身能够缓存目标数据,其他处理模块不能缓存该目标数据,则对应地,目标处理模块703还用于将目标存储空间对目标数据的缓存状态更改为无效。
基于上述图7对应的多处理器系统,在本发明实施例中,期望状态为共享目标数据,即第二处理模块期望能和其他处理模块共享该目标数据,即都能缓存该目标数据,对应地,目标处理模块703还用于将目标存储空间对目标数据的缓存状态更改为共享。基于上述图7对应的多处理器系统,在本发明实施例中,第一处理模块、第二处理模块第一处理模块、第二处理模块及目标处理模块均包含至少一个处理器,可选地,第一处理模块、第二处理模块及目标处理模块均还可以包含至少一个节点控制器。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (15)

1.一种内存访问方法,其特征在于,包括:
第一处理模块接收第二处理模块发送的读请求,所述读请求用于请求缓存所述第一处理模块对应的存储空间中的目标数据,并指示所述第二处理模块对所述目标数据的期望状态;
所述第一处理模块根据目标目录确定缓存有所述目标数据的一个或多个目标存储空间,所述目标存储空间为除了所述第一处理模块对应的存储空间以外的其他存储空间;
所述第一处理模块向所述目标存储空间对应的一个或多个目标处理模块发送监听请求,以使得所述一个或多个目标处理模块根据所述监听请求向所述第二处理模块返回监听响应,所述监听响应用于响应所述期望状态;
所述第一处理模块向所述第二处理模块返回目标报文,所述目标报文包含所述目标数据以及监听数量,所述监听数量为所述第一处理模块发送的所述监听请求的数量;
当所述第二处理模块接收到的所述监听响应与所述监听数量匹配时,所述第一处理模块接收所述第二处理模块发送的更新报文;
所述第一处理模块根据所述更新报文更新所述目标目录。
2.根据权利要求1所述的方法,其特征在于,所述监听请求包含所述期望状态的请求者,以及将监听响应返回所述请求者的指示,所述请求者为所述第二处理模块。
3.根据权利要求1或2所述的方法,其特征在于,所述期望状态为独占所述目标数据;所述监听请求用于请求将所述目标存储空间对所述目标数据的缓存状态更改为无效。
4.根据权利要求1或2所述的方法,其特征在于,所述期望状态为共享所述目标数据;所述监听请求用于请求将所述目标存储空间对所述目标数据的缓存状态更改为共享。
5.一种内存访问方法,其特征在于,包括:
第二处理模块向第一处理模块发送读请求,所述读请求用于请求缓存所述第一处理模块对应的存储空间中的目标数据,并指示所述第二处理模块对所述目标数据的期望状态;
所述第二处理模块接收所述第一处理模块返回的目标报文,所述目标报文包含所述目标数据以及监听数量,所述监听数量为所述第一处理模块向目标处理模块发送的监听请求的数量,所述目标处理模块为所述第一处理模块根据目标目录确定的缓存有所述目标数据的一个或多个目标存储空间对应的处理模块,所述目标存储空间为除了所述第一处理模块对应的存储空间以外的其他存储空间;
所述第二处理模块接收所述目标处理模块根据所述监听请求返回的监听响应,所述监听响应用于响应所述期望状态;
当所述第二处理模块确定所述监听响应的数量与所述监听数量匹配时,所述第二处理模块向所述第一处理模块发送更新报文,所述更新报文用于所述第一处理模块更新所述目标目录。
6.根据权利要求5所述的方法,其特征在于,所述期望状态为独占所述目标数据;所述监听响应用于指示所述目标存储空间对所述目标数据的缓存状态已更改为无效。
7.根据权利要求5所述的方法,其特征在于,所述期望状态为共享所述目标数据;所述监听响应用于指示所述目标存储空间对所述目标数据的缓存状态已更改为共享。
8.一种内存访问方法,其特征在于,包括:
目标处理模块接收第一处理模块发送的监听请求,所述监听请求用于指示第二处理模块对目标数据的期望状态,所述目标数据为所述第一处理模块对应的存储空间中的数据;
所述目标处理模块根据所述期望状态更改目标存储空间对所述目标数据的缓存状态,并生成监听响应,所述目标存储空间为所述目标处理模块对应的存储空间;
所述目标处理模块向第二处理模块返回所述监听响应。
9.根据权利要求8所述的方法,其特征在于,所述监听请求包含所述期望状态的请求者,以及将监听响应返回所述请求者的指示,所述请求者为所述第二处理模块;
所述目标处理模块向第二处理模块返回所述监听响应包括:
所述目标处理模块根据所述指示向所述第二处理模块返回所述监听响应。
10.根据权利要求8或9所述的方法,其特征在于,所述期望状态为独占所述目标数据;所述目标处理模块根据所述期望状态更改目标存储空间对所述目标数据的缓存状态包括:
所述目标处理模块将目标存储空间对所述目标数据的缓存状态更改为无效。
11.根据权利要求8或9所述的方法,其特征在于,所述期望状态为共享所述目标数据;所述目标处理模块根据所述期望状态更改目标存储空间对所述目标数据的缓存状态包括:
所述目标处理模块将目标存储空间对所述目标数据的缓存状态更改为共享。
12.一种多处理器系统,其特征在于,包括:第一处理模块、第二处理模块及目标处理模块;
所述第一处理模块用于:接收所述第二处理模块发送的读请求,所述读请求用于请求缓存所述第一处理模块对应的存储空间中的目标数据,并指示所述第二处理模块对所述目标数据的期望状态;根据目标目录确定缓存有目标数据的一个或多个目标存储空间,所述目标存储空间为除了所述第一处理模块对应的存储空间以外的其他存储空间;向目标存储空间对应的一个或多个目标处理模块发送监听请求;向第二处理模块返回目标报文,所述目标报文包含所述目标数据以及监听数量,所述监听数量为所述第一处理模块发送的所述监听请求的数量;当所述第二处理模块接收到的所述监听响应与所述监听数量匹配时,接收所述第二处理模块发送的更新报文,根据所述更新报文更新所述目标目录;
所述第二处理模块用于:向第一处理模块发送所述读请求;接收所述第一处理模块返回的所述目标报文;接收所述目标处理模块根据所述监听请求返回的监听响应,所述监听响应用于响应所述期望状态;当所述第二处理模块确定所述监听响应的数量与所述监听数量匹配时,向所述第一处理模块发送更新报文;
所述目标处理模块用于:接收第一处理模块发送的监听请求,所述监听请求用于指示所述第二处理模块对所述目标数据的期望状态;根据所述期望状态更改目标存储空间对所述目标数据的缓存状态,并生成监听响应;向第二处理模块返回所述监听响应。
13.根据权利要求12所述的系统,其特征在于,所述监听请求包含所述期望状态的请求者,以及将监听响应返回所述请求者的指示,所述请求者为所述第二处理模块;
所述目标处理模块还用于根据所述指示向所述第二处理模块返回所述监听响应。
14.根据权利要求12或13所述的系统,其特征在于,所述期望状态为独占所述目标数据;
所述目标处理模块还用于将目标存储空间对所述目标数据的缓存状态更改为无效。
15.根据权利要求12或13所述的系统,其特征在于,所述期望状态为共享所述目标数据;所述目标处理模块还用于将目标存储空间对所述目标数据的缓存状态更改为共享。
CN201610949371.3A 2016-10-26 2016-10-26 内存访问方法及多处理器系统 Pending CN107992357A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201610949371.3A CN107992357A (zh) 2016-10-26 2016-10-26 内存访问方法及多处理器系统
PCT/CN2017/107126 WO2018077123A1 (zh) 2016-10-26 2017-10-20 内存访问方法及多处理器系统
EP17198559.1A EP3316145A1 (en) 2016-10-26 2017-10-26 Memory access method and multiprocessor system
US15/795,129 US20180113808A1 (en) 2016-10-26 2017-10-26 Memory access method and multiprocessor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610949371.3A CN107992357A (zh) 2016-10-26 2016-10-26 内存访问方法及多处理器系统

Publications (1)

Publication Number Publication Date
CN107992357A true CN107992357A (zh) 2018-05-04

Family

ID=60186155

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610949371.3A Pending CN107992357A (zh) 2016-10-26 2016-10-26 内存访问方法及多处理器系统

Country Status (4)

Country Link
US (1) US20180113808A1 (zh)
EP (1) EP3316145A1 (zh)
CN (1) CN107992357A (zh)
WO (1) WO2018077123A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109254858A (zh) * 2018-08-31 2019-01-22 武汉斗鱼网络科技有限公司 活动窗口的数据共享方法、装置、设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271197A (zh) * 2018-08-17 2019-01-25 北京奇虎科技有限公司 一种用于检测数据包冲突的方法、装置及计算机设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0817070A1 (en) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
US20060265466A1 (en) * 2005-05-17 2006-11-23 Takashi Yasui Shared memory multiprocessor system
CN103076992A (zh) * 2012-12-27 2013-05-01 杭州华为数字技术有限公司 一种内存数据缓冲方法及装置
CN103119568A (zh) * 2010-08-20 2013-05-22 英特尔公司 利用目录信息扩展高速缓存一致性监听广播协议
CN103500108A (zh) * 2013-09-27 2014-01-08 杭州华为数字技术有限公司 系统内存访问方法、节点控制器和多处理器系统
CN104899160A (zh) * 2015-05-30 2015-09-09 华为技术有限公司 一种缓存数据控制方法、节点控制器和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874855B2 (en) * 2009-12-28 2014-10-28 Empire Technology Development Llc Directory-based coherence caching
US20140040561A1 (en) * 2012-07-31 2014-02-06 Futurewei Technologies, Inc. Handling cache write-back and cache eviction for cache coherence
CN104360981B (zh) * 2014-11-12 2017-09-29 浪潮(北京)电子信息产业有限公司 面向多核多处理器平台的Cache一致性协议的设计方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0817070A1 (en) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
US20060265466A1 (en) * 2005-05-17 2006-11-23 Takashi Yasui Shared memory multiprocessor system
CN103119568A (zh) * 2010-08-20 2013-05-22 英特尔公司 利用目录信息扩展高速缓存一致性监听广播协议
CN103076992A (zh) * 2012-12-27 2013-05-01 杭州华为数字技术有限公司 一种内存数据缓冲方法及装置
CN103500108A (zh) * 2013-09-27 2014-01-08 杭州华为数字技术有限公司 系统内存访问方法、节点控制器和多处理器系统
CN104899160A (zh) * 2015-05-30 2015-09-09 华为技术有限公司 一种缓存数据控制方法、节点控制器和系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109254858A (zh) * 2018-08-31 2019-01-22 武汉斗鱼网络科技有限公司 活动窗口的数据共享方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20180113808A1 (en) 2018-04-26
EP3316145A1 (en) 2018-05-02
WO2018077123A1 (zh) 2018-05-03

Similar Documents

Publication Publication Date Title
US10394712B2 (en) Configuration based cache coherency protocol selection
CN1294497C (zh) 具有多个一致性区域的多处理器计算机系统及其方法
US9720833B2 (en) Nested cache coherency protocol in a tiered multi-node computer system
JP5902716B2 (ja) 大規模記憶システム
CN100474270C (zh) 用于信息处理的系统和方法
CN100495361C (zh) 维护存储器一致性的方法和系统
CN103870435B (zh) 服务器及数据访问方法
CN103154909B (zh) 分布式高速缓冲存储器一致性协议
US20060184750A1 (en) Coherency management for a "switchless" distributed shared memory computer system
EP2869208A1 (en) Method for constructing multiprocessor system with node having a plurality of cache uniformity domains
CN104166597B (zh) 一种分配远程内存的方法及装置
CN103440223B (zh) 一种实现高速缓存一致性协议的分层系统及其方法
CN103294612A (zh) 一种在多级缓存一致性域系统局部域构造Share-F状态的方法
CN103365717B (zh) 内存访问方法、装置及系统
KR20180125734A (ko) 파라미터 공유 장치 및 방법
CN104657308A (zh) 一种用fpga实现的服务器硬件加速的方法
CN105190581A (zh) 通过网络的存储器共享
CN108027801A (zh) 数据处理方法、装置和系统
US20180157589A1 (en) Proactive cache coherence
CN105359122B (zh) 多cpu系统中的增强型数据传输
CN104811503A (zh) 一种r统计建模系统
CN103297490B (zh) 信息处理装置、分布式处理系统和分布式处理方法
US9542317B2 (en) System and a method for data processing with management of a cache consistency in a network of processors with cache memories
CN107992357A (zh) 内存访问方法及多处理器系统
CN114143090B (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180504