CN109753445B - 一种缓存访问方法、多级缓存系统及计算机系统 - Google Patents

一种缓存访问方法、多级缓存系统及计算机系统 Download PDF

Info

Publication number
CN109753445B
CN109753445B CN201711063243.XA CN201711063243A CN109753445B CN 109753445 B CN109753445 B CN 109753445B CN 201711063243 A CN201711063243 A CN 201711063243A CN 109753445 B CN109753445 B CN 109753445B
Authority
CN
China
Prior art keywords
cache
dca
instruction
target
data
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
CN201711063243.XA
Other languages
English (en)
Other versions
CN109753445A (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
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 CN201711063243.XA priority Critical patent/CN109753445B/zh
Priority to PCT/CN2018/105010 priority patent/WO2019085649A1/zh
Publication of CN109753445A publication Critical patent/CN109753445A/zh
Application granted granted Critical
Publication of CN109753445B publication Critical patent/CN109753445B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Landscapes

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

Abstract

本申请公开了一种缓存访问方法、多级缓存系统及计算机系统,用于减少源集群向目标集群读取或写入数据时的操作步骤,从而降低latency,提升了系统的CPU性能。本申请实施例方法包括:当源集群需要在目标集群读取或写入数据时,源二级缓存获取DCA指令,源二级缓存为源集群中的二级缓存,DCA指令包括目标集群中的目标一级缓存的缓存标识;源二级缓存将DCA指令发送至共享缓存;共享缓存根据DCA指令生成DCA操作指令;共享缓存通过目标集群中的目标二级缓存将DCA操作指令发送至目标一级缓存,使得目标一级缓存写入数据或将数据写入源集群。

Description

一种缓存访问方法、多级缓存系统及计算机系统
技术领域
本申请涉及计算机领域,具体涉及一种缓存访问方法、多级缓存系统及计算机系统。
背景技术
随着中央处理器(Central Processing Unit,CPU)技术的发展,CPU对于内存Memory访问的延时latency问题越来越敏感,提高数据访问的效率,以及减少latency问题成为了提升CPU性能的关键。
缓存Cache是介于CPU和Memory之间的小容量存储器,存取速度比Memory快,接近CPU。它能高速地向CPU提供指令和数据,提高程序的执行速度。随着半导体器件集成度的不断提高,当前已出现了两级以上的多级Cache系统,每一级Cache的所有控制逻辑全部由该级Cache的内部控制器实现。Cache Stashing技术是由ARM公司提供的现有的解决Memory访问的latency问题的有效方案。当源集群cluster的CPU核需要把数据推送到目标cluster的CPU核时(目前多核处理器系统中通常把多个CPU核集成在一起,形成一个cluster),CacheStashing技术需要先完成数据一致性的Snoop Stash操作,然后由目标cluster的CPU核的一级Cache发起Prefetch操作,将源cluster的CPU核中的数据取回。
但是,Cache Stashing技术存在操作步骤繁琐的缺点,latency问题并未得到有效的解决,CPU性能仍然受到latency问题困扰。
发明内容
本申请提供了一种缓存访问方法、多级缓存系统及计算机系统,用于减少源集群向目标集群读取或写入数据时的操作步骤,从而降低latency,提升了系统的CPU性能。
本申请第一方面提供一种缓存访问方法,应用于多级缓存系统,所述多级缓存系统包括共享缓存及至少两个集群,每个集群具有至少一个一级缓存及二级缓存,所述方法包括:
当源集群需要在目标集群读取或写入数据时,源二级缓存获取直接访问缓存DCA指令,所述源二级缓存为所述源集群的二级缓存,所述DCA指令包括所述目标集群中的目标一级缓存的缓存标识;
所述源二级缓存将所述DCA指令发送至所述共享缓存;
所述共享缓存根据所述DCA指令生成DCA操作指令;
所述共享缓存通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存,使得所述目标一级缓存写入所述数据或将所述数据写入所述源集群。
在源集群需要在目标集群读取或写入数据时,源二级缓存获取携带目标一级缓存的缓存标识的DCA指令,源二级缓存将DCA指令发送至共享缓存,共享缓存根据DCA指令生成DCA操作指令,然后通过目标集群中的目标二级缓存将DCA操作指令发送至目标一级缓存,使得目标一级缓存写入数据或将数据写入源获取。由于采用的是DCA技术,与现有的CacheStashing技术相比步骤有所减少,例如,以将源集群中的HAC的数据推送进目标集群中的目标一级缓存中为例,Cache Stashing技术中需要通过目标一级缓存向共享缓存发送Prefetch,然后共享缓存将HAC的数据携带于Fetch response中,反馈给目标一级缓存;而实施例中,共享缓存将HAC的数据携带于DCA操作指令中,在共享缓存通过目标集群的L2Cache将DCA操作指令发送到目标一级缓存时,就实现了将HAC的数据推送进目标一级缓存。可以明显的看出,相比于Cache Stashing技术,步骤明显减少了,因此降低latency,提升了系统的CPU性能。
结合本申请第一方面,本申请第一方面第一实施方式中,所述源二级缓存将所述DCA指令发送至所述共享缓存之前,还包括:
所述源二级缓存向所述源集群中的源一级缓存发送第一探查指令,使得所述源一级缓存反馈第一探查回应,所述第一探查指令用于进行所述源集群的数据一致性操作;
所述源二级缓存获取所述源一级缓存反馈的第一探查回应,根据所述第一探查回应确定所述源集群具有数据一致性。
考虑到数据一致性机制可以是多级缓存系统预先保证了,也可以是按照CacheStashing技术中的方式确定数据一致性的,如果是按照Cache Stashing技术中的方式确定的,那么需要当源二级缓存获取到DCA指令之后,根据数据一致性机制对源集群的中的各个一级缓存发起第一探查指令,源集群的中的各个一级缓存根据第一探查指令完成数据一致性操作后,向源二级缓存反馈第一探查回应,源二级缓存获取各个一级缓存反馈的第一探查回应,根据第一探查回应就能够确定源集群具有数据一致性。
结合本申请第一方面第一实施方式,本申请第一方面第二实施方式中,所述共享缓存根据所述DCA指令生成DCA操作指令之前,还包括:
所述共享缓存向所述目标集群中的目标二级缓存发送DCA探查指令;
所述目标二级缓存根据所述DCA探查指令向所述目标集群中的所有一级缓存发送第二探查指令,使得所述目标集群中的所有一级缓存反馈第二探查回应,所述第二探查指令用于进行所述目标集群的数据一致性操作;
所述目标二级缓存接收所述目标集群中的所有一级缓存反馈的第二探查回应,并将所述第二探查回应反馈至所述共享缓存;
所述共享缓存接收所述目标二级缓存反馈的第二探查回应,根据所述第二探查回应确定所述目标集群具有数据一致性。
考虑到数据一致性机制可以是多级缓存系统预先保证了,也可以是按照CacheStashing技术中的方式确定数据一致性的,如果是按照Cache Stashing技术中的方式确定的,当共享缓存接收到DCA指令之后,根据数据一致性机制需要先确认目标集群的数据一致性,因此需要向目标二级缓存发送DCA探查指令,目标二级缓存接收到DCA探查指令之后,向目标集群中所有一级缓存发送第二探查指令,使得所有一级缓存反馈第二探查回应,目标二级缓存接收到第二探查回应,并将第二探查回应反馈至共享缓存,共享缓存接收到所有一级缓存的第二探查回应后,确定目标集群具有数据一致性。
结合本申请第一方面第二实施方式,本申请第一方面第三实施方式中,当所述源集群需要将数据写入所述目标集群时,所述DCA指令为DCA直写指令,所述DCA直写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存根据所述DCA指令生成DCA操作指令,包括:
所述共享缓存根据所述DCA直写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA直写指令中的所述数据;
所述共享缓存生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
目前Cache的工作方式包括直写式Cache方式和回写式Cache方式,直写式Cache方式是:当CPU要将数据写入内存时,除了更新Cache上的数据外,也将数据写在DRAM中,以维持Memory与Cache的数据一致性;回写式Cache方式是:每当CPU要将数据写入Memory时,只会先更新Cache上的数据,随后再让Cache在总线不塞车的时候,才把数据写回DRAM。那么多级缓存系统预先保证了数据一致性的前提下,采用的自然是回写式Cache方式,DCA指令具体为DCA回写指令;按照Cache Stashing技术中的方式确定数据一致性的情况下,采用的是直写式Cache方式,DCA指令具体为DCA直写指令。因此,当源集群需要将数据写入目标集群时,DCA指令可以为DCA直写指令或DCA填充指令,源集群的数据包含于DCA指令中,当源集群需要将数据写入目标集群时,并且DCA指令为DCA直写指令时,共享缓存根据DCA直写指令中的缓存标识确定目标一级缓存,生成DCA填充指令,DCA填充指令包含源集群的数据,那么将DCA填充指令发送至目标一级缓存,就能实现直接将数据写入目标集群。
结合本申请第一方面,本申请第一方面第四实施方式中,当所述源集群需要将数据写入所述目标集群,并且所述源集群和所述目标集群具有数据一致性时,所述DCA指令为DCA回写指令,所述DCA回写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存根据所述DCA指令生成DCA操作指令,包括:
所述共享缓存根据所述DCA回写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA回写指令中的所述数据;
所述共享缓存生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
目前Cache的工作方式包括直写式Cache方式和回写式Cache方式,直写式Cache方式是:当CPU要将数据写入内存时,除了更新Cache上的数据外,也将数据写在DRAM中,以维持Memory与Cache的数据一致性;回写式Cache方式是:每当CPU要将数据写入Memory时,只会先更新Cache上的数据,随后再让Cache在总线不塞车的时候,才把数据写回DRAM。那么多级缓存系统预先保证了数据一致性的前提下,采用的自然是回写式Cache方式,DCA指令具体为DCA回写指令;按照Cache Stashing技术中的方式确定数据一致性的情况下,采用的是直写式Cache方式,DCA指令具体为DCA直写指令。因此,当源集群需要将数据写入目标集群,并且源集群和目标集群具有数据一致性时,DCA指令可以为DCA直写指令或DCA填充指令,源集群的数据包含于DCA指令中,当源集群需要将数据写入目标集群时,并且DCA指令为DCA直写指令时,DCA指令为DCA回写指令,共享缓存根据DCA回写指令中的缓存标识确定目标一级缓存,生成DCA填充指令,DCA填充指令包含源集群的数据,那么将DCA填充指令发送至目标一级缓存,就能实现直接将数据写入目标集群。
结合本申请第一方面第二实施方式,本申请第一方面第五实施方式中,当所述源集群需要从所述目标集群读取数据,并且所述多级缓存系统不要求缓存一致性时,所述DCA指令为DCA读取指令,所述DCA操作指令为探查回写指令,
所述共享缓存根据所述DCA指令生成DCA操作指令,包括:
所述共享缓存根据所述DCA读取指令中的所述缓存标识确定所述目标一级缓存;
所述共享缓存生成探查回写指令,所述探查回写指令用于指示所述目标二级缓存从所述目标一级缓存读取所述数据。
上述是源集群需要将数据写入目标集群时,如果源集群需要从目标集群读取数据时,而且每个CPU中只具有一个一级缓存或者多级缓存系统的Cache一致性能够保证时,共享缓存根据DCA指令生成DCA操作指令具体为:共享缓存根据DCA读取指令中的缓存标识确定目标一级缓存,共享缓存生成探查回写指令,探查回写指令用于指示目标二级缓存从目标L1Cache读取数据。
结合本申请第一方面第五实施方式,本申请第一方面第六实施方式中,所述共享缓存通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存之后,还包括:
所述目标一级缓存接收所述探查回写指令;
所述目标一级缓存根据所述探查回写指令向所述目标二级缓存反馈第三探查回应,所述第三探查回应包括所述数据;
所述目标二级缓存将所述第三探查回应转发至所述共享缓存;
所述共享缓存根据所述第三探查回应生成DCA读取回应,所述DCA读取回应包括所述数据;
所述共享缓存将所述DCA读取回应发送至所述源二级缓存,使得所述源二级缓存根据所述DCA读取回应得到所述目标一级缓存的所述数据。
目标一级缓存接收探查回写指令之后,目标一级缓存根据探查回写指令向目标二级缓存反馈第三探查回应,并且将源集群需要读取的数据包含在第三探查回应中,目标二级缓存将第三探查回应转发至共享缓存,共享缓存根据第三探查回应生成探查回写指令,并且探查回写指令中包括有数据,共享缓存将探查回写指令发送至源二级缓存,使得源二级缓存获取到探查回写指令后,就能得到探查回写指令中包含的源集群需要读取的目标集群的数据。
本申请第二方面提供一种多级缓存系统,包括:
共享缓存及至少两个集群,每个集群具有至少一个一级缓存及二级缓存;
源二级缓存,用于当所述源集群需要在所述目标集群读取或写入数据时,获取直接访问缓存DCA指令,所述源二级缓存为所述源集群中的二级缓存,所述DCA指令包括所述目标集群中的目标一级缓存的缓存标识;
所述源二级缓存,还用于将所述DCA指令发送至所述共享缓存;
所述共享缓存,用于根据所述DCA指令生成DCA操作指令;
所述共享缓存,还用于通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存,使得所述目标一级缓存写入所述数据或将所述数据写入所述源集群。
在源集群需要在目标集群读取或写入数据时,源二级缓存获取携带目标一级缓存的缓存标识的DCA指令,源二级缓存将DCA指令发送至共享缓存,共享缓存根据DCA指令生成DCA操作指令,然后通过目标集群中的目标二级缓存将DCA操作指令发送至目标一级缓存,使得目标一级缓存写入数据或将数据写入源获取。由于采用的是DCA技术,与现有的CacheStashing技术相比步骤有所减少,例如,以将源集群中的HAC的数据推送进目标集群中的目标一级缓存中为例,Cache Stashing技术中需要通过目标一级缓存向共享缓存发送Prefetch,然后共享缓存将HAC的数据携带于Fetch response中,反馈给目标一级缓存;而实施例中,共享缓存将HAC的数据携带于DCA操作指令中,在共享缓存通过目标集群的L2Cache将DCA操作指令发送到目标一级缓存时,就实现了将HAC的数据推送进目标一级缓存。可以明显的看出,相比于Cache Stashing技术,步骤明显减少了,因此降低latency,提升了系统的CPU性能。
结合本申请第二方面,本申请第二方面第一实施方式中,
所述源二级缓存,还用于向所述源集群中的源一级缓存发送第一探查指令,使得所述源一级缓存反馈第一探查回应,所述第一探查指令用于进行所述源集群的数据一致性操作;
所述源二级缓存,还用于接收所述源一级缓存反馈的第一探查回应,根据所述第一探查回应确定所述源集群具有数据一致性。
考虑到数据一致性机制可以是多级缓存系统预先保证了,也可以是按照CacheStashing技术中的方式确定数据一致性的,如果是按照Cache Stashing技术中的方式确定的,那么需要当源二级缓存获取到DCA指令之后,根据数据一致性机制对源集群的中的各个一级缓存发起第一探查指令,源集群的中的各个一级缓存根据第一探查指令完成数据一致性操作后,向源二级缓存反馈第一探查回应,源二级缓存获取各个一级缓存反馈的第一探查回应,根据第一探查回应就能够确定源集群具有数据一致性。
结合本申请第二方面第一实施方式,本申请第二方面第二实施方式中,
所述共享缓存,还用于向所述目标集群中的目标二级缓存发送DCA探查指令;
所述目标二级缓存,用于根据所述DCA探查指令向所述目标集群中的所有一级缓存发送第二探查指令,使得所述目标集群中的所有一级缓存反馈第二探查回应,所述第二探查指令用于进行所述目标集群的数据一致性操作;
所述目标二级缓存,还用于接收所述目标集群中的所有目标一级缓存反馈的第二探查回应,并将所述第二探查回应反馈至所述共享缓存;
所述共享缓存,还用于接收所述目标二级缓存反馈的第二探查回应,根据所述第二探查回应确定所述目标集群具有数据一致性。
考虑到数据一致性机制可以是多级缓存系统预先保证了,也可以是按照CacheStashing技术中的方式确定数据一致性的,如果是按照Cache Stashing技术中的方式确定的,当共享缓存接收到DCA指令之后,根据数据一致性机制需要先确认目标集群的数据一致性,因此需要向目标二级缓存发送DCA探查指令,目标二级缓存接收到DCA探查指令之后,向目标集群中所有一级缓存发送第二探查指令,使得所有一级缓存反馈第二探查回应,目标二级缓存接收到第二探查回应,并将第二探查回应反馈至共享缓存,共享缓存接收到所有一级缓存的第二探查回应后,确定目标集群具有数据一致性。
结合本申请第二方面第二实施方式,本申请第二方面第三实施方式中,当所述源集群需要将数据写入所述目标集群时,所述DCA指令为DCA直写指令,所述DCA直写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存,还用于根据所述DCA直写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA直写指令中的所述数据;
所述共享缓存,还用于生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
目前Cache的工作方式包括直写式Cache方式和回写式Cache方式,直写式Cache方式是:当CPU要将数据写入内存时,除了更新Cache上的数据外,也将数据写在DRAM中,以维持Memory与Cache的数据一致性;回写式Cache方式是:每当CPU要将数据写入Memory时,只会先更新Cache上的数据,随后再让Cache在总线不塞车的时候,才把数据写回DRAM。那么多级缓存系统预先保证了数据一致性的前提下,采用的自然是回写式Cache方式,DCA指令具体为DCA回写指令;按照Cache Stashing技术中的方式确定数据一致性的情况下,采用的是直写式Cache方式,DCA指令具体为DCA直写指令。因此,当源集群需要将数据写入目标集群时,DCA指令可以为DCA直写指令或DCA回写指令,源集群的数据包含于DCA指令中,当源集群需要将数据写入目标集群时,并且DCA指令为DCA直写指令时,共享缓存根据DCA直写指令中的缓存标识确定目标一级缓存,生成DCA填充指令,DCA填充指令包含源集群的数据,那么将DCA填充指令发送至目标一级缓存,就能实现直接将数据写入目标集群。
结合本申请第二方面,本申请第二方面第四实施方式中,所述源集群需要将数据写入所述目标集群,并且所述源集群和所述目标集群具有数据一致性时,所述DCA指令为DCA回写指令,所述DCA回写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存,还用于根据所述DCA回写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA回写指令中的所述数据;
所述共享缓存,还用于生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
目前Cache的工作方式包括直写式Cache方式和回写式Cache方式,直写式Cache方式是:当CPU要将数据写入内存时,除了更新Cache上的数据外,也将数据写在DRAM中,以维持Memory与Cache的数据一致性;回写式Cache方式是:每当CPU要将数据写入Memory时,只会先更新Cache上的数据,随后再让Cache在总线不塞车的时候,才把数据写回DRAM。那么多级缓存系统预先保证了数据一致性的前提下,采用的自然是回写式Cache方式,DCA指令具体为DCA回写指令;按照Cache Stashing技术中的方式确定数据一致性的情况下,采用的是直写式Cache方式,DCA指令具体为DCA直写指令。因此,当源集群需要将数据写入目标集群,并且源集群和目标集群具有数据一致性时,DCA指令可以为DCA直写指令或DCA填充指令,源集群的数据包含于DCA指令中,当源集群需要将数据写入目标集群时,并且DCA指令为DCA直写指令时,DCA操作指令为DCA填充指令,共享缓存根据DCA回写指令中的缓存标识确定目标一级缓存,生成DCA填充指令,DCA填充指令包含源集群的数据,那么将DCA填充指令发送至目标一级缓存,就能实现直接将数据写入目标集群。
结合本申请第二方面第二实施方式,本申请第二方面第五实施方式中,当所述源集群需要从所述目标集群读取数据,并且所述多级缓存系统不要求缓存一致性时,所述DCA指令为DCA读取指令,所述DCA操作指令为探查回写指令,
所述共享缓存,还用于根据所述DCA读取指令中的所述缓存标识确定所述目标一级缓存;
所述共享缓存,还用于生成探查回写指令,所述探查回写指令用于指示所述目标二级缓存从所述目标一级缓存读取所述数据。
上述是源集群需要将数据写入目标集群时,如果源集群需要从目标集群读取数据时,而且每个集群中只具有一个一级缓存或者多级缓存系统的Cache一致性能够保证时,共享缓存根据DCA指令生成DCA操作指令具体为:共享缓存根据DCA读取指令中的缓存标识确定目标一级缓存,共享缓存生成探查回写指令,探查回写指令用于指示目标二级缓存从目标L1Cache读取数据。
结合本申请第二方面第五实施方式,本申请第二方面第六实施方式中,
所述目标一级缓存,用于接收所述探查回写指令;
所述目标一级缓存,还用于根据所述探查回写指令向所述目标二级缓存反馈第三探查回应,所述第三探查回应包括所述数据;
所述目标二级缓存,还用于将所述第三探查回应转发至所述共享缓存;
所述共享缓存,还用于根据所述第三探查回应生成DCA读取回应,所述DCA读取回应包括所述数据;
所述共享缓存,还用于将所述DCA读取回应发送至所述源二级缓存,使得所述源二级缓存根据所述DCA读取回应得到所述目标一级缓存的所述数据。
目标一级缓存接收探查回写指令之后,目标一级缓存根据探查回写指令向目标二级缓存反馈第三探查回应,并且将源集群需要读取的数据包含在第三探查回应中,目标二级缓存将第三探查回应转发至共享缓存,共享缓存根据第三探查回应生成探查回写指令,并且探查回写指令中包括有数据,共享缓存将探查回写指令发送至源二级缓存,使得源二级缓存获取到探查回写指令后,就能得到探查回写指令中包含的源集群需要读取的目标集群的数据。
本申请第三方面提供一种计算机系统,包括:
外存及多级缓存系统,所述外存与所述多级缓存系统通过总线连接;
所述多级缓存系统包括共享缓存及至少两个集群,每个集群具有至少一个一级缓存及二级缓存;
当所述源集群需要在所述目标集群读取或写入数据时,所述源二级缓存获取直接访问缓存DCA指令,所述源二级缓存为所述集群中的二级缓存,所述DCA指令包括所述目标集群中的目标一级缓存的缓存标识;
所述源二级缓存将所述DCA指令发送至所述共享缓存;
所述共享缓存根据所述DCA指令生成DCA操作指令;
所述共享缓存通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存,使得所述目标一级缓存写入所述数据或将所述数据写入所述集群。
在计算机系统中,外存及多级缓存系统,外存与多级缓存系统通过总线连接,多级缓存系统包括共享缓存及至少两个集群,每个集群具有至少一个一级缓存及二级缓,在源集群需要在目标集群读取或写入数据时,源二级缓存获取携带目标一级缓存的缓存标识的DCA指令,源二级缓存将DCA指令发送至共享缓存,共享缓存根据DCA指令生成DCA操作指令,然后通过目标集群中的目标二级缓存将DCA操作指令发送至目标一级缓存,使得目标一级缓存写入数据或将数据写入源获取。由于采用的是DCA技术,与现有的Cache Stashing技术相比步骤有所减少,因此降低latency,提升了系统的CPU性能。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请提供的多级缓存系统的架构图;
图2为本申请提供的Cache Stashing技术的信令图;
图3为本申请提供的一个多级缓存方法的实施例流程示意图;
图4为本申请提供的一个多级缓存方法的实施例信令示意图;
图5为本申请提供的另一个多级缓存方法的实施例信令示意图;
图6为本申请提供的再一个多级缓存方法的实施例信令示意图;
图7为本申请提供的一个多级缓存系统的实施例结构示意图;
图8为本申请提供的一个计算机系统的实施例结构示意图。
具体实施方式
本申请提供了一种缓存访问方法、多级缓存系统及计算机系统,用于减少源集群向目标集群读取或写入数据时的操作步骤,从而降低latency,提升了系统的CPU性能。
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述。
首先简单介绍本申请应用的系统构架或场景。
随着CPU技术的发展,CPU对于Memory访问的latency问题越来越敏感,提高数据访问的效率,以及减少latency问题成为了提升CPU性能的关键。想要提升CPU性能最主要是达到以下5点:
1.把CPU从data/message的处理中解放出来;
因为data/message的处理会消耗大量的时间,让CPU处于准备(pending)状态,严重影响CPU的每一时钟周期内所执行的指令数(Instruction Per Clock,IPC),一旦CPU从这些繁重data/message中解放出来,就能处理更多的执行,就能显著提升CPU的IPC,从而提高CPU的总体性能。
2.减少CPU由于处理data/message而产生的latency;
3.通过close-by本地Cache来提升CPU访问数据的性能;
由于离CPU越近的Memory,CPU对其进行访问所需的时间也就越少,CPU由于内存访问(Memory Access)产生的latency也就越短,性能提升,本地Cache是小容量存储器,存取速度比主存快,接近CPU,从而可以提升CPU访问数据的性能。
4.通过一片透明的Cache的做法来提高兼容性;
透明的Cache是相对于本地Memory的概念而言,本地Memory通常是大小确定的,通过其进行数据的搬运,一旦搬运的数据超出其大小范围,数据有可能被污染,而Cache对CPU来说是透明的,不需要感知其存储空间的大小,如果超出则由Memory的数据一致性机制来保护。
5.允许加速器直接对data/message进行操作。
允许加速器的计算机系统相对于不允许加速器的计算机系统而言,只能通过CPU的Prefetch指令等手段,加速对data/message的处理,效率偏低,会影响CPU的总体性能,加速器能更快的提速对于data/message的操作。
采用Cache技术能够满足上述的第1、2、3和4点,但是由于没有涉及到加速器直接对data/message进行操作这一点,因此无法满足第5点;而采用直接访问内存(DirectMemory Access,DMA)技术的话,由于本地Cache存在,虽然能同时满足以上第1、2、3和5点,但是由于透明的Cache不存在,那么不能满足第4点。
那么以上的Cache技术和DMA方式都不能同时满足以上的5点,因此CPU性能的提升仍然有空间,而ARM公司提供的Cache Stashing技术是可以同时满足以上5点的,CacheStashing技术是基于多级缓存系统的,如图1所示为多级缓存系统的架构图。图1中具有三级Cache,cluster1和cluster2分别具有两个CPU核,每一个CPU核都具有L1Cache(一级缓存),而且每个cluster中包含一个L2Cache(二级缓存),而L3Cache(三级缓存)作为共享缓存,处理两个cluster之间的数据一致性,不处于cluster1和cluster2中,需要说明的是,在图1的多级缓存系统中只列举两个cluster,而且每个cluster包括两个CPU核,在实际应用中可能具有更多的cluster,并且每一个cluster中还可能包含更多的CPU核,多级缓存系统也不限制在只包括三级缓存,可能还有更高层级的缓存。而硬件加速器(HardwareAccelerator Controller,HAC)是专用的定点功能外设,用于处理特定功能,特定算法的模块,可以减轻CPU核的负担,因此,使用HAC就提供了一种高性价比的方法,以增加CPU核的计算能力。在图1的多级缓存系统的基础上结合图2所示的指令交互图,对Cache Stashing技术主要实现方式进行如下描述:
201、以cluster1中的HAC将数据推送到cluster2中的CPU核2为例进行说明,其中,cluster1作为源cluster,cluster2作为目标cluster,而cluster2中的CPU核2对应的L1Cache作为目标L1Cache。当源cluster中的HAC需要将数据推送至目标cluster的CPU核2的L1Cache时,源cluster中的HAC向源cluster的L2Cache发起推送操作指令(即SnoopStash),Snoop Stash中包括目标L1Cache的地址信息以及数据;
202、由源cluster的L2Cache根据数据一致性机制对源cluster的中的各个L1Cache发起数据一致性操作指令(即Snoop),数据一致性机制主要是为了处理共享数据,保证各CPU核看到是共享数据都是正确和一致的,这需要通过各级Cache的控制器来实现,也就是ARM公司的Snoop机制,让发起Snoop的对象拥有绝对权限去修改数据,而不会引起一致性的问题,因此源cluster的L2Cache发起Snoop,是为了确保源cluster的数据一致性;
203、源cluster的各个L1Cache接收到Snoop后,向源cluster的L2Cache反馈数据一致性操作回应(即Snoop Response),L2Cache根据接收到各L1Cache的Snoop Response,完成源cluster的数据一致性操作;
204、源cluster的L2Cache接收到各L1Cache的Snoop Response后,完成了源cluster的数据一致性操作,根据多cluster间的数据一致性机制将推送操作请求(SnoopStash request)发送至L3Cache(共享缓存),Snoop Stash request中包括源cluster的数据一致性信息及目标L1Cache的地址信息以及数据;
205、L3Cache接收到Snoop Stash request之后,能够确定源cluster的数据一致性,并且根据数据一致性机制向目标cluster的L2Cache发送推送操作指令(即Snoop forStash),Snoop for Stash包括目标L1Cache的地址信息;
206、目标cluster的L2Cache接收到Snoop for Stash之后,根据目标L1Cache的地址信息向目标L1Cache发送目标指令,该目标指令中包括Soonp和预取触发指令,预取触发指令用于触发目标L1Cache发送预取指令,因此,目标L1Cache接收目标指令后,生成预取指令(即Prefetch),发送到L2Cache,并且向L2Cache反馈Snoop response;
207、目标cluster的L2Cache对目标cluster的其他L1Cache发送Snoop,收到Snoop的L1Cache向L2Cache反馈Snoop response;
208、目标cluster的L2Cache收集来自目标L1Cache的Snoop response;
209、目标cluster的L2Cache收集来自其他L1Cache的Snoop response;
210、目标cluster的L2Cache根据目标L1Cache和其他L1Cache的Snoop response,完成目标cluster的数据一致性操作,将目标cluster的数据一致性信息反馈给L3Cache,从而使得L3Cache完成了多cluster间的数据一致性操作;
211、目标L1Cache在接收到目标指令之时,根据预取触发指令可以确定源cluster中HAC需要推送的数据存储于L3Cache中,因此,向L2Cache发送Prefetch,Prefetch用于通知L3Cache可以将数据发送至目标L1Cache了;
212、目标cluster的L2Cache向L3Cache转发目标L1Cache发送的Prefetch;
213、L3Cache接收到Prefetch之后,向目标cluster的L2Cache反馈预取回应(即Fetch response),Fetch response中包括数据;
214、目标cluster的L2Cache将Fetch response转发给目标L1Cache,从而实现了将HAC的数据推送进目标L1Cache中。
虽然以上图2所示的Cache Stashing技术可以同时满足以上5点,但是从步骤201-步骤214可以看出,完成一次数据推送,需要完成的步骤很多,latency问题的解决还不够完善,CPU性能还是会受到latency问题的影响,而本申请需要解决的问题就是通过减少现有的Cache Stashing技术中的步骤,来进一步提升多级缓存系统的CPU性能,下面通过实施例进行具体说明。
请参阅图3,本申请实施例提供一种缓存访问方法,包括:
301、源二级缓存获取DCA指令;
本实施例中,以图1所示的多级缓存系统为例,当cluster1中的HAC需要从cluster2中的CPU核2中读取数据,或者,将数据推送到cluster2中的CPU核2中时,此时cluster1作为源cluster,cluster2作为目标cluster,而CPU核2对应的L1Cache作为目标L1Cahe,cluster1中的L2Cache作为源二级缓存(源L2Cache),cluster2中的L2Cache作为目标二级缓存(目标L2Cache),L3Cache作为共享缓存,源cluster中的HAC发送直接访问缓存(Direct Cache Access,DCA)指令到源cluster的源L2Cache,DCA指令中包括目标L1Cache的缓存标识及需要读取或者推送的数据,源L2Cache接收到HAC发送的DCA指令。DCA技术是:发送方可以使用DCA指令将数据直接写入到接收方,或者,发送方可以使用DCA指令从接收方中读取数据,最重要的是接收方为Cache。DMA技术是:发送方可以使用DMA指令从接收方读取数据或将数据写入接收方,而接收方是内存。那么比较DCA技术与DMA技术,由于Cache处于Memory和CPU核之间,那么显然采用DCA技术比采用DMA技术的latency问题更小。
需要说明的是,如果是cluster1中的CPU核1需要从cluster2中的CPU核2中读取数据,或者,将数据推送到cluster2中的CPU核2中时,此时DCA指令的发送者就是cluster1的CPU核1,CPU核1通过对应的L1Cache将HAC指令转发到cluster1的L2Cache。
302、源二级缓存将DCA指令发送至共享缓存;
本实施例中,由于源L2Cache接收到的DCA指令中包括目标L1Cache的缓存标识,那么源L2Cache能够确定目标L1Cache是cluster2中的,由于源cluster和目标cluster之间的共享缓存是L3Cache,因此,源L2Cache将DCA指令发送到L3Cache。
303、共享缓存根据DCA指令生成DCA操作指令;
本实施例中,L3Cache接收到源L2Cache发送的DCA指令之后,根据DCA指令生成DCA操作指令,DCA操作指令可以使得目标L1Cache写入源cluster中HAC的数据,或者,将目标L1Cache中的数据写入源cluster的HAC中。DCA操作指令具体的形式,需要以生成DCA指令的源集群的HAC的需求为准,例如,如果HAC需要从cluster2中的CPU核2中读取数据,那么DCA指令涉及的就是读取类型的指令;如果HAC需要将数据推送到cluster2中的CPU核2中,那么DCA指令涉及的就是写入类型的指令。
304、共享缓存通过目标集群中的目标二级缓存将DCA操作指令发送至目标一级缓存。
本实施例中,L3Cache能够根据DCA指令中携带的目标L1Cache的缓存标识确定目标L1Cache,从而能够确定目标L2Cache,生成DCA操作指令之后,L3Cache通过目标cluster中的目标L2Cache,将DCA操作指令发送到目标L1Cache中,从而将HAC的数据写入到目标cluster的L1Cache中,或者从目标cluster的L1Cache中将数据读回并写入到HAC中。
本申请实施例中,在源集群需要在目标集群读取或写入数据时,源二级缓存获取携带目标一级缓存的缓存标识的DCA指令,源二级缓存将DCA指令发送至共享缓存,共享缓存根据DCA指令生成DCA操作指令,然后通过目标集群中的目标二级缓存将DCA操作指令发送至目标一级缓存,使得目标一级缓存写入数据或将数据写入源集群。与图2所示的CacheStashing技术相比,由于本申请实施例采用的是DCA技术,步骤有所减少,例如,以将源cluster中的HAC的数据推送进目标cluster中的目标L1Cache中为例,Cache Stashing技术中需要通过目标L1Cache向L3Cache发送Prefetch,然后L3Cache将HAC的数据携带于Fetchresponse中,反馈给目标L1Cache;而本申请实施例中,L3Cache将HAC的数据携带于DCA操作指令中,在L3Cache通过目标cluster的L2Cache将DCA操作指令发送到目标L1Cache时,就实现了将HAC的数据推送进目标L1Cache。可以明显的看出,相比于Cache Stashing技术,本申请实施例中的步骤明显减少了,因此降低latency,提升了系统的CPU性能。
上述图3所示的实施例中,考虑到数据一致性机制可以是多级缓存系统预先保证了,也可以是按照以上图2所示的Cache Stashing技术中的方式确定数据一致性的。下面通过实施例对如何确定数据一致性的进行详细说明。
请参阅图4,本申请实施例提供一种缓存访问方法,包括:
401、源二级缓存获取DCA指令;
详情请参阅图3所示实施例的步骤301。
402、源二级缓存向源集群中的源一级缓存发送第一探查指令;
本实施例中,当源L2Cache接收到DCA指令之后,根据数据一致性机制对源cluster的中的各个L1Cache发起第一探查指令(即Snoop),Snoop用于进行源cluster的数据一致性操作,源cluster的中的各个源L1Cache根据Snoop完成数据一致性操作后,会向源L2Cache反馈第一探查回应(即Snoop response)。
403、源二级缓存获取源一级缓存反馈的第一探查回应,根据第一探查回应确定源集群具有数据一致性;
本实施例中,源L2Cache接收源cluster的中的各个源L1Cache反馈的Snoopresponse,根据Snoop response就能够确定源cluster的数据一致性操作完成,源cluster具有数据一致性。
404、源二级缓存将DCA指令发送至共享缓存;
本实施例中,由于源L2Cache接收到的DCA指令中包括目标L1Cache的缓存标识,那么源L2Cache能够确定目标L1Cache是目标cluster中的,由于源cluster和目标cluster之间的共享缓存是L3Cache,因此,源L2Cache将DCA指令发送到L3Cache。
405、共享缓存向目标集群中的目标二级缓存发送DCA探查指令;
本实施例中,当L3Cache接收到DCA指令之后,根据数据一致性机制需要先确认目标cluster的数据一致性,因此需要向目标L2Cache发送DCA探查指令(即Snoop for DCA)。
406、目标二级缓存根据DCA探查指令向目标集群中的所有一级缓存发送第二探查指令;
本实施例中,目标L2Cache接收到Snoop for DCA之后,向目标cluster中所有L1Cache发送第二探查指令(即Snoop),Snoop用于进行目标cluster的数据一致性操作,目标cluster的中的所有L1Cache根据Snoop完成数据一致性操作后,会向目标L2Cache反馈第二探查回应(即Snoop response)。
407、目标二级缓存接收目标集群中所有一级缓存反馈的第二探查回应,并将第二探查回应反馈至共享缓存;
本实施例中,目标L2Cache接收目标cluster中所有L1Cache反馈的Snoopresponse,并将Snoop response反馈至L3Cache。
408、共享缓存接收目标二级缓存反馈的第二探查回应,根据第二探查回应确定目标集群具有数据一致性;
本实施例中,L3Cache接收目标L2Cache反馈的所有L1Cache的Snoop response,根据Snoop response就能够确定目标cluster的数据一致性操作完成,目标cluster具有数据一致性。
409、共享缓存根据DCA指令生成DCA操作指令;
本实施例中,L3Cache接收到源L2Cache发送的DCA指令之后,根据DCA指令生成DCA操作指令,DCA操作指令具体的形式,需要以生成DCA指令的源cluster的HAC的需求为准,例如,如果源cluster的HAC需要将数据推送到目标cluster中的目标L1Cache中,那么DCA指令涉及的就是写入类型的指令,而且HAC的数据携带在DCA指令中,而L3Cache生成的DCA操作指令中就包含有HAC的数据;如果源cluster的HAC需要从目标cluster中的目标L1Cache中读取数据,那么DCA指令涉及的就是读取类型的指令,此时L3Cache生成的DCA操作指令是为了从目标L1Cache读取到数据。
410、共享缓存通过目标cluster中的目标二级缓存将DCA操作指令发送至目标一级缓存。
本实施例中,L3Cache能够根据DCA指令中携带的目标L1Cache的缓存标识确定目标L1Cache,从而能够确定目标L2Cache,生成DCA操作指令之后,L3Cache通过目标cluster中的目标L2Cache,将步骤409中生成的DCA操作指令发送到目标L1Cache中,使得目标L1Cache能够根据DCA操作指令获得HAC的数据,或者,根据DCA操作指令将HAC所要读取的数据发送给L3Cache,L3Cache再将数据发送到HAC。
本申请实施例中,详细介绍了需要确定数据一致性时的缓存访问方法,与图2所示的Cache Stashing技术对比可以看出,本申请实施例无需执行步骤206和步骤208,因此,在确定数据一致性的时候,本申请实施例与Cache Stashing技术相比,还可以进一步的降低latency。
在以上实施例中,Cache的工作方式并未考虑进去。目前Cache的工作方式包括直写式Cache方式和回写式Cache方式,直写式Cache方式是:当CPU要将数据写入内存时,除了更新Cache上的数据外,也将数据写在动态随机存取存储器(Dynamic Random AccessMemory,DRAM)中,以维持Memory与Cache的数据一致性;回写式Cache方式是:每当CPU要将数据写入Memory时,只会先更新Cache上的数据,随后再让Cache在总线不塞车的时候,才把数据写回DRAM。那么多级缓存系统预先保证了数据一致性的前提下,采用的自然是回写式Cache方式,DCA指令具体为DCA回写指令;按照图2所示的Cache Stashing技术中的方式确定数据一致性的情况下,采用的是直写式Cache方式,DCA指令具体为DCA直写指令。
下面通过(一)和(二)两个实施例,对源集群需要将数据写入目标集群的情况时,不同的Cache的工作方式下进行说明。
(一)、当源集群需要将数据写入目标集群时,DCA指令为DCA直写指令(即DCAwrite through),DCA操作指令为DCA填充指令(即DCA fill);
请参阅图5,本申请实施例提供一种缓存访问方法,包括:
501、源二级缓存获取DCA write through;
本实施例中,以图1所示的多级缓存系统为例,当cluster1中的HAC需要将数据写入cluster 2中的CPU核2时,cluster 1作为源cluster,cluster 2作为目标cluster,cluster1的CPU核2对应的L1Cache作为目标L1Cahe,cluster1中的L2Cache作为源二级缓存(源L2Cache),cluster2中的L2Cache作为目标二级缓存(目标L2Cache),L3Cache作为共享缓存,源cluster中的HAC发起一次带有目标L1Cache的缓存标识的DCA write through(即DCA直写指令)到源L2Cache,并且DCA write through包含有HAC需要写入目标L1Cache的数据,源L2Cache接收到HAC发送的DCA write through。
502、源二级缓存向源集群中的源一级缓存发送Snoop;
本实施例中,当源L2Cache接收到DCA write through之后,根据数据一致性机制向源cluster中的各个源L1Cache发送Snoop,源L1Cache根据Snoop完成数据一致性操作后,会向源L2Cache反馈Snoop response。
503、源二级缓存获取源一级缓存反馈的Snoop response,根据Snoop response确定源集群具有数据一致性;
本实施例中,源L2Cache接收源cluster中的各个源L1Cache反馈的Snoopresponse,根据Snoop response就能够确定源cluster的数据一致性操作完成,源cluster具有数据一致性。
504、源二级缓存将DCA write through发送至共享缓存;
本实施例中,由于源L2Cache接收到的DCA write through中包括目标L1Cache的缓存标识,那么源L2Cache能够确定目标L1Cache是目标cluster中的,由于源cluster和目标cluster之间的共享缓存是L3Cache,因此,源L2Cache将DCA write through发送到L3Cache。
505、共享缓存向目标集群中的目标二级缓存发送DCA直写探查指令;
本实施例中,当L3Cache接收到DCA write through之后,根据数据一致性机制需要先确保目标cluster具有数据一致性,因此,向目标L2Cache发送Snoop for DCA writethrough,以使得目标L2Cache对目标cluster进行数据一致性操作。
506、目标二级缓存根据Snoop for DCA write through向目标cluster中的所有一级缓存发送Snoop;
本实施例中,目标L2Cache接收到Snoop for DCA write through之后,向目标cluster中所有L1Cache发送Snoop,目标cluster的中的所有L1Cache根据Snoop完成数据一致性操作后,会向目标L2Cache反馈Snoop response。
507、目标二级缓存接收目标集群中所有一级缓存反馈的Snoop response,并将Snoop response反馈至共享缓存;
本实施例中,目标L2Cache接收目标cluster中所有L1Cache反馈的Snoopresponse,并将Snoop response反馈至L3Cache。
508、共享缓存接收目标二级缓存反馈的Snoop response,根据Snoop response确定目标集群具有数据一致性;
本实施例中,L3Cache接收目标L2Cache反馈的所有L1Cache的Snoop response,根据Snoop response就能够确定目标cluster的数据一致性操作完成,目标cluster具有数据一致性。
509、共享缓存根据DCA write through生成DCA fill;
本实施例中,L3Cache接收到源L2Cache发送的DCA write through之后,根据DCAwrite through生成DCA fill,并且从DCA write through中获得HAC的数据之后,将HAC的数据携带于DCA fill中。
510、共享缓存通过目标集群中的目标二级缓存将DCA fill发送至目标一级缓存。
本实施例中,L3Cache根据DCA write through中携带的目标L1Cache的缓存标识确定目标L1Cache之后,将生成的DCA fill通过目标L2Cache发送到目标L1Cache,由于DCAfill中就携带有HAC的数据,因此,目标L1Cache获取到DCA fill时,HAC的数据就已经写入到目标L1Cache中。
(二)、当源集群需要将数据写入目标集群,并且多级缓存系统的数据一致性机制已经确保源集群和目标集群具有数据一致性时,DCA指令为DCA回写指令(即DCA write-back),DCA操作指令为DCA填充指令(即DCA fill)。
请参阅图6,本申请实施例提供一种缓存访问方法,包括:
601、源二级缓存获取DCA write-back;
本实施例中,当cluster1中的HAC需要将数据写入cluster 2中的CPU核2时,cluster1作为源cluster,cluster 2作为目标cluster,cluster1的CPU核2对应的L1Cache作为目标L1Cahe,cluster1中的L2Cache作为源二级缓存(源L2Cache),cluster2中的L2Cache作为目标二级缓存(目标L2Cache),L3Cache作为共享缓存,源cluster中的HAC发起一次带有目标L1Cache的缓存标识的DCA write-back到源集群的源L2Cache,并且DCAwrite-back包含有HAC需要写入目标L1Cache的数据,源L2Cache接收到HAC发送的DCAwrite-back。
602、源二级缓存将DCA write-back发送至共享缓存;
本实施例中,由于源L2Cache接收到的DCA write-back中包括目标L1Cache的缓存标识,那么源L2Cache能够确定目标L1Cache是目标cluster中的,由于源cluster和目标cluster之间的共享缓存是L3Cache,因此,源L2Cache将DCA write-back发送到L3Cache。
603、共享缓存根据DCA write-back生成DCA fill;
本实施例中,L3Cache接收到源L2Cache发送的DCA write-back之后,根据DCAwrite-back生成DCA fill,并且从DCA write through中获得HAC的数据之后,将HAC的数据携带于DCA fill中。
604、共享缓存通过目标集群中的目标二级缓存将DCA fill发送至目标一级缓存。
本实施例中,L3Cache根据DCA write-back中携带的目标L1Cache的缓存标识确定目标L1Cache之后,将生成的DCA fill通过目标L2Cache发送到目标L1Cache,由于DCA fill中就携带有HAC的数据,因此,目标L1Cache获取到DCA fill时,HAC的数据就已经写入到目标L1Cache中。
以上图5和图6所示实施例中,详细介绍了当源集群需要将数据写入目标集群时,结合数据一致性的确定方式,选择不同的Cache工作方式,从而具体采用不同的DCA指令,DCA指令具体可以是DCA回写指令和DCA直写指令,使得方案的实施更加多样化。
上述图5和图6的实施例中介绍的是源集群需要将数据写入目标集群时,下面通过实施例对源集群需要从目标集群读取数据进行说明,而以上描述的实施例中介绍的都是每个集群中包括了两个以上的L1Cache的情形,那么需要进行数据一致性操作,而如果每个集群中只具有一个L1Cache或者多级缓存系统的Cache一致性能够保证时,HAC需要从目标集群的CPU核读取数据的话,DCA指令为DCA read,而目标集群的CPU核对应的L1Cache实际上需要通过回写方式将数据写入到HAC中。下面通过实施例进行详细说明。
可选的,本申请的一些实施例中,当源集群需要从目标集群读取数据,并且多级缓存系统不要求缓存一致性时,DCA指令为DCA读取指令,DCA操作指令为探查回写指令,
共享缓存根据DCA指令生成DCA操作指令,包括:
共享缓存根据DCA读取指令中的缓存标识确定目标一级缓存;
共享缓存生成探查回写指令,探查回写指令用于指示目标二级缓存从目标一级缓存读取数据。
本申请实施例中,当源集群需要从目标集群读取数据,并且多级缓存系统不要求缓存一致性时,共享缓存根据DCA指令生成DCA操作指令具体为:L3Cache根据DCA read中的缓存标识确定目标L1Cache,L3Cache生成Snoop to writeback,Snoop to writeback用于指示目标L2Cache从目标L1Cache读取数据。
可选的,本申请的一些实施例中,共享缓存通过目标集群中的目标二级缓存将DCA操作指令发送至目标一级缓存之后,还包括:
目标一级缓存接收探查回写指令;
目标一级缓存根据探查回写指令向目标二级缓存反馈第三探查回应,第三探查回应包括数据;
目标二级缓存将第三探查回应转发至共享缓存;
共享缓存根据第三探查回应生成DCA读取回应,DCA读取回应包括数据;
共享缓存将DCA读取回应发送至源二级缓存,使得源二级缓存根据DCA读取回应得到目标一级缓存的数据。
本申请实施例中,在目标L1Cache接收到Snoop to writeback之后,目标L1Cache根据Snoop to writeback向目标L2Cache反馈Snoop response,并且将HAC需要读取的数据包含在Snoop response中,目标L2Cache将Snoop response转发至L3Cache,L3Cache根据Snoop response生成DCA read response,并且DCA read response中包括有Snoopresponse中的数据,L3Cache将DCA read response发送至源L2Cache,使得源L2Cache接收到DCA read response后,就能得到DCA read response中包含的HAC需要读取的目标L1Cache中的数据,然后源L2Cache再将DCA read response反馈给发送DCA read的HAC,实现源cluster的HAC读取到目标cluster的目标L1Cache中的数据。
上述实施例介绍的是多级缓存方法,下面对多级缓存方法应用的多级缓存系统进行详细说明。
请参阅图7,本申请实施例提供一种多级缓存系统,包括:
共享缓存701及至少两个集群,至少两个集群中包括源集群702和目标集群703,源集群702包括源一级缓存7021及源二级缓存7022,目标集群703包括目标一级缓存7031及目标二级缓存7032;
源二级缓存7022,用于当源集群702需要在目标集群703读取或写入数据时,获取DCA指令,源二级缓存7022为源集群702中的二级缓存,DCA指令包括目标集群703中的目标一级缓存7031的缓存标识;
源二级缓存7022,还用于将DCA指令发送至共享缓存701;
共享缓存701,用于根据DCA指令生成DCA操作指令;
共享缓存701,还用于通过目标集群703中的目标二级缓存7032将DCA操作指令发送至目标一级缓存7031,使得目标一级缓存7031写入数据或将数据写入源集群702。
本申请实施例中,在源集群702需要在目标集群703读取或写入数据时,源二级缓存7022获取携带目标一级缓存7031的缓存标识的DCA指令,源二级缓存7022将DCA指令发送至共享缓存701,共享缓存701根据DCA指令生成DCA操作指令,然后通过目标集群703中的目标二级缓存7032将DCA操作指令发送至目标一级缓存7031,使得目标一级缓存7031写入数据或将数据写入源集群702。与图2所示的Cache Stashing技术相比,由于本申请实施例采用的是DCA技术,步骤有所减少,例如,以将源cluster中的HAC的数据推送进目标cluster中的目标L1Cache中为例,Cache Stashing技术中需要通过目标L1Cache向L3Cache发送Prefetch,然后L3Cache将HAC的数据携带于Fetch response中,反馈给目标L1Cache;而本申请实施例中,L3Cache将HAC的数据携带于DCA操作指令中,在L3Cache通过目标cluster的L2Cache将DCA操作指令发送到目标L1Cache时,就实现了将HAC的数据推送进目标L1Cache。可以明显的看出,相比于Cache Stashing技术,本申请实施例中的步骤明显减少了,因此降低latency,提升了系统的CPU性能。
可选的,本申请的一些实施例中,
源二级缓存7022,还用于向源集群702中的源一级缓存7021发送第一探查指令,使得源一级缓存7021反馈第一探查回应,第一探查指令用于进行源集群702的数据一致性操作;
源二级缓存7022,还用于接收源一级缓存7021反馈的第一探查回应,根据第一探查回应确定源集群702具有数据一致性。
本申请实施例中,采用图2所示的Cache Stashing技术的方式确定数据一致性,具体为源二级缓存7022向源集群702中的源一级缓存7021发送第一探查指令,使得源一级缓存7021反馈第一探查回应,源二级缓存7022接收到源一级缓存7021反馈的第一探查回应后,根据第一探查回应就能够确定源集群702具有数据一致性。
可选的,本申请的一些实施例中,
共享缓存701,还用于向目标集群703中的目标二级缓存7032发送DCA探查指令;
目标二级缓存7032,用于根据DCA探查指令向目标集群703中的所有一级缓存发送第二探查指令,使得目标集群703中的所有一级缓存反馈第二探查回应,第二探查指令用于进行目标集群703的数据一致性操作;
目标二级缓存7032,还用于接收目标集群703中的所有一级缓存反馈的第二探查回应,并将第二探查回应反馈至共享缓存701;
共享缓存701,还用于接收目标二级缓存7032反馈的第二探查回应,根据第二探查回应确定目标集群703具有数据一致性。
本申请实施例中,采用图2所示的Cache Stashing技术的方式确定数据一致性,根据图4所示的缓存访问方法实施例中可以得到,与图2所示的Cache Stashing技术对比可以看出,本申请无需执行步骤206和步骤208,因此,在确定数据一致性的时候,还可以进一步的降低latency,提升了系统的CPU性能。
可选的,本申请的一些实施例中,当源集群702需要将数据写入目标集群703时,DCA指令为DCA直写指令,DCA直写指令还包括数据,DCA操作指令为DCA填充指令,
共享缓存701,还用于根据DCA直写指令中的缓存标识确定目标一级缓存7031,并获取DCA直写指令中的数据;
共享缓存701,还用于生成DCA填充指令,DCA填充指令包括数据,DCA填充指令用于直接将数据写入目标一级缓存7031。
本申请实施例中,目前Cache的工作方式包括直写式Cache方式和回写式Cache方式,直写式Cache方式是:当CPU要将数据写入内存时,除了更新Cache上的数据外,也将数据写在DRAM中,以维持Memory与Cache的数据一致性;回写式Cache方式是:每当CPU要将数据写入Memory时,只会先更新Cache上的数据,随后再让Cache在总线不塞车的时候,才把数据写回DRAM。那么多级缓存系统预先保证了数据一致性的前提下,采用的自然是回写式Cache方式,DCA指令具体为DCA回写指令;按照图2所示的Cache Stashing技术中的方式确定数据一致性的情况下,采用的是直写式Cache方式,DCA指令具体为DCA直写指令。因此,当源集群702需要将数据写入目标集群703时,DCA指令可以为DCA直写指令或DCA回写指令,当源集群702需要将数据写入目标集群703时,并且DCA指令为DCA直写指令时,共享缓存701根据DCA直写指令中的缓存标识确定目标一级缓存7031,生成DCA填充指令,DCA填充指令包含源集群702的数据,那么将DCA填充指令发送至目标一级缓存7031,就能实现直接将数据写入目标集群703。
可选的,本申请的一些实施例中,当源集群702需要将数据写入目标集群703,并且源集群702和目标集群703具有数据一致性时,DCA指令为DCA回写指令,DCA回写指令还包括数据,DCA操作指令为DCA填充指令,
共享缓存701,还用于根据DCA回写指令中的缓存标识确定目标一级缓存7031,并获取DCA回写指令中的数据;
共享缓存701,还用于生成DCA填充指令,DCA填充指令包括数据,DCA填充指令用于直接将数据写入目标一级缓存7031。
本申请实施例中,目前Cache的工作方式包括直写式Cache方式和回写式Cache方式,直写式Cache方式是:当CPU要将数据写入内存时,除了更新Cache上的数据外,也将数据写在DRAM中,以维持Memory与Cache的数据一致性;回写式Cache方式是:每当CPU要将数据写入Memory时,只会先更新Cache上的数据,随后再让Cache在总线不塞车的时候,才把数据写回DRAM。那么多级缓存系统预先保证了数据一致性的前提下,采用的自然是回写式Cache方式,DCA指令具体为DCA回写指令;按照图2所示的Cache Stashing技术中的方式确定数据一致性的情况下,采用的是直写式Cache方式,DCA指令具体为DCA直写指令。因此,当源集群702需要将数据写入目标集群703,并且源集群702和目标集群703具有数据一致性时,DCA指令可以为DCA直写指令或DCA回写指令,当源集群702需要将数据写入目标集群703时,并且DCA指令为DCA回写指令时,DCA操作指令为DCA填充指令,共享缓存701根据DCA回写指令中的缓存标识确定目标一级缓存7031,生成DCA填充指令,DCA填充指令包含源集群702的数据,那么将DCA填充指令发送至目标一级缓存7031,就能实现直接将数据写入目标集群703。
可选的,本申请的一些实施例中,当源集群702需要从目标集群703读取数据,并且多级缓存系统不要求缓存一致性时,DCA指令为DCA读取指令,DCA操作指令为探查回写指令,
共享缓存701,还用于根据DCA读取指令中的缓存标识确定目标一级缓存7031;
共享缓存701,还用于生成探查回写指令,探查回写指令用于指示目标二级缓存7032从目标一级缓存7031读取数据。
本申请实施例中,当源集群702需要从目标集群703读取数据,并且多级缓存系统不要求Cache一致性时,具体情况可以是,多级缓存系统的每个集群中只具有一个CPU核,即只有一个一级缓存,此时Cache一致性不需要确定,或者多级缓存系统的Cache一致性通过预先的设置能够保证了,共享缓存701根据DCA指令生成DCA操作指令具体为:共享缓存701根据DCA read中的缓存标识确定目标一级缓存7031,共享缓存701生成Snoop towriteback,Snoop to writeback用于指示目标二级缓存7032从目标一级缓存7031读取数据。
可选的,本申请的一些实施例中,
目标一级缓存7031,用于接收探查回写指令;
目标一级缓存7031,还用于根据探查回写指令向目标二级缓存7032反馈第三探查回应,第三探查回应包括数据;
目标二级缓存7032,还用于将第三探查回应转发至共享缓存701;
共享缓存701,还用于根据第三探查回应生成DCA读取回应,生成DCA读取回应,DCA读取回应包括数据;
共享缓存701,还用于将DCA读取回应发送至源二级缓存7022,使得源二级缓存7022根据DCA读取回应得到目标一级缓存7031中的数据。
本申请实施例中,目标一级缓存7031接收Snoop to writeback之后,目标一级缓存7031根据Snoop to writeback向共享缓存701反馈Snoop response,共享缓存701根据Snoop response生成DCA read response,并将DCA read response发送至源二级缓存7022,使得源二级缓存7022根据DCA read response读取到目标一级缓存7031中的数据,然后源集群702的HAC或者源集群702的需求该数据的一级缓存7021从源二级缓存7022获得数据,从而完成源集群702从目标集群703的Cache中读取数据。
如图8所示,本申请实施例提供一种计算机系统800,包括:
外存82及多级缓存系统81,外存82及多级缓存系统81通过总线连接;
多级缓存系统81包括共享缓存801及至少两个集群,每个集群具有至少一个一级缓存及二级缓存,至少两个集群中包括源集群802和目标集群803,源集群802包括源一级缓存8021及源二级缓存8022,目标集群803包括目标一级缓存8031及目标二级缓存8032;
源二级缓存8022,用于当源集群802需要在目标集群803读取或写入数据时,接收DCA指令,源二级缓存8022为源集群802中的二级缓存,DCA指令包括目标集群803中的目标一级缓存8031的缓存标识;
源二级缓存8022,还用于将DCA指令发送至共享缓存801;
共享缓存801,用于根据DCA指令生成DCA操作指令;
共享缓存801,还用于通过目标集群803中的目标二级缓存8032将DCA操作指令发送至目标一级缓存8031,使得目标一级缓存8031写入数据或将数据写入源集群802。
本申请实施例中,在源集群802需要在目标集群803读取或写入数据时,源二级缓存802接收携带目标一级缓存8031的缓存标识的DCA指令,源二级缓存8022将DCA指令发送至共享缓存801,共享缓存801根据DCA指令生成DCA操作指令,然后通过目标集群803中的目标二级缓存8032将DCA操作指令发送至目标一级缓存8031,使得目标一级缓存8031写入数据或将数据写入源集群802。与图2所示的Cache Stashing技术相比,由于采用的是DCA技术,步骤有所减少,例如,将HAC的数据推送进目标L1Cache中,Cache Stashing技术中需要通过Prefetch-Fetch response的操作来,而本申请只需要通过DCA操作指令直接将,HAC的数据推送进目标L1Cache。因此,本申请可以降低latency,提升了系统的CPU性能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种实现访问请求处理方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者其他非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。

Claims (15)

1.一种缓存访问方法,其特征在于,应用于多级缓存系统,所述多级缓存系统包括共享缓存及至少两个集群,每个集群具有至少一个一级缓存及二级缓存,所述方法包括:
当源集群需要在目标集群读取或写入数据时,源二级缓存获取直接访问缓存DCA指令,所述源二级缓存为所述源集群的二级缓存,所述DCA指令包括所述目标集群中的目标一级缓存的缓存标识;
所述源二级缓存将所述DCA指令发送至所述共享缓存;
所述共享缓存根据所述DCA指令生成DCA操作指令;
所述共享缓存通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存,使得所述目标一级缓存写入所述数据或将所述数据写入所述源集群。
2.根据权利要求1所述的方法,其特征在于,所述源二级缓存将所述DCA指令发送至所述共享缓存之前,还包括:
所述源二级缓存向所述源集群中的源一级缓存发送第一探查指令,使得所述源一级缓存反馈第一探查回应,所述第一探查指令用于进行所述源集群的数据一致性操作;
所述源二级缓存获取所述源一级缓存反馈的第一探查回应,根据所述第一探查回应确定所述源集群具有数据一致性。
3.根据权利要求2所述的方法,其特征在于,所述共享缓存根据所述DCA指令生成DCA操作指令之前,还包括:
所述共享缓存向所述目标集群中的目标二级缓存发送DCA探查指令;
所述目标二级缓存根据所述DCA探查指令向所述目标集群中的所有一级缓存发送第二探查指令,使得所述目标集群中的所有一级缓存反馈第二探查回应,所述第二探查指令用于进行所述目标集群的数据一致性操作;
所述目标二级缓存接收所述目标集群中的所有一级缓存反馈的第二探查回应,并将所述第二探查回应反馈至所述共享缓存;
所述共享缓存接收所述目标二级缓存反馈的第二探查回应,根据所述第二探查回应确定所述目标集群具有数据一致性。
4.根据权利要求3所述的方法,其特征在于,当所述源集群需要将数据写入所述目标集群时,所述DCA指令为DCA直写指令,所述DCA直写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存根据所述DCA指令生成DCA操作指令,包括:
所述共享缓存根据所述DCA直写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA直写指令中的所述数据;
所述共享缓存生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
5.根据权利要求1所述的方法,其特征在于,当所述源集群需要将数据写入所述目标集群,并且所述源集群和所述目标集群具有数据一致性时,所述DCA指令为DCA回写指令,所述DCA回写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存根据所述DCA指令生成DCA操作指令,包括:
所述共享缓存根据所述DCA回写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA回写指令中的所述数据;
所述共享缓存生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
6.根据权利要求3所述的方法,其特征在于,当所述源集群需要从所述目标集群读取数据,并且所述多级缓存系统不要求缓存一致性时,所述DCA指令为DCA读取指令,所述DCA操作指令为探查回写指令,
所述共享缓存根据所述DCA指令生成DCA操作指令,包括:
所述共享缓存根据所述DCA读取指令中的所述缓存标识确定所述目标一级缓存;
所述共享缓存生成探查回写指令,所述探查回写指令用于指示所述目标二级缓存从所述目标一级缓存读取所述数据。
7.根据权利要求6所述的方法,其特征在于,所述共享缓存通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存之后,还包括:
所述目标一级缓存接收所述探查回写指令;
所述目标一级缓存根据所述探查回写指令向所述目标二级缓存反馈第三探查回应,所述第三探查回应包括所述数据;
所述目标二级缓存将所述第三探查回应转发至所述共享缓存;
所述共享缓存根据所述第三探查回应生成DCA读取回应,所述DCA读取回应包括所述数据;
所述共享缓存将所述DCA读取回应发送至所述源二级缓存,使得所述源二级缓存根据所述DCA读取回应得到所述目标一级缓存的所述数据。
8.一种多级缓存系统,其特征在于,包括:
共享缓存及至少两个集群,每个集群具有至少一个一级缓存及二级缓存;
源二级缓存,用于当源集群需要在目标集群读取或写入数据时,获取直接访问缓存DCA指令,所述源二级缓存为所述源集群中的二级缓存,所述DCA指令包括所述目标集群中的目标一级缓存的缓存标识;
所述源二级缓存,还用于将所述DCA指令发送至所述共享缓存;
所述共享缓存,用于根据所述DCA指令生成DCA操作指令;
所述共享缓存,还用于通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存,使得所述目标一级缓存写入所述数据或将所述数据写入所述源集群。
9.根据权利要求8所述的系统,其特征在于,
所述源二级缓存,还用于向所述源集群中的源一级缓存发送第一探查指令,使得所述源一级缓存反馈第一探查回应,所述第一探查指令用于进行所述源集群的数据一致性操作;
所述源二级缓存,还用于接收所述源一级缓存反馈的第一探查回应,根据所述第一探查回应确定所述源集群具有数据一致性。
10.根据权利要求9所述的系统,其特征在于,
所述共享缓存,还用于向所述目标集群中的目标二级缓存发送DCA探查指令;
所述目标二级缓存,用于根据所述DCA探查指令向所述目标集群中的所有一级缓存发送第二探查指令,使得所述目标集群中的所有一级缓存反馈第二探查回应,所述第二探查指令用于进行所述目标集群的数据一致性操作;
所述目标二级缓存,还用于接收所述目标集群中的所有目标一级缓存反馈的第二探查回应,并将所述第二探查回应反馈至所述共享缓存;
所述共享缓存,还用于接收所述目标二级缓存反馈的第二探查回应,根据所述第二探查回应确定所述目标集群具有数据一致性。
11.根据权利要求10所述的系统,其特征在于,当所述源集群需要将数据写入所述目标集群时,所述DCA指令为DCA直写指令,所述DCA直写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存,还用于根据所述DCA直写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA直写指令中的所述数据;
所述共享缓存,还用于生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
12.根据权利要求8所述的系统,其特征在于,所述源集群需要将数据写入所述目标集群,并且所述源集群和所述目标集群具有数据一致性时,所述DCA指令为DCA回写指令,所述DCA回写指令还包括所述数据,所述DCA操作指令为DCA填充指令,
所述共享缓存,还用于根据所述DCA回写指令中的所述缓存标识确定所述目标一级缓存,并获取所述DCA回写指令中的所述数据;
所述共享缓存,还用于生成DCA填充指令,所述DCA填充指令包括所述数据,所述DCA填充指令用于直接将所述数据写入所述目标一级缓存。
13.根据权利要求12所述的系统,其特征在于,当所述源集群需要从所述目标集群读取数据,并且所述多级缓存系统不要求缓存一致性时,所述DCA指令为DCA读取指令,所述DCA操作指令为探查回写指令,
所述共享缓存,还用于根据所述DCA读取指令中的所述缓存标识确定所述目标一级缓存;
所述共享缓存,还用于生成探查回写指令,所述探查回写指令用于指示所述目标二级缓存从所述目标一级缓存读取所述数据。
14.根据权利要求13所述的系统,其特征在于,
所述目标一级缓存,用于接收所述探查回写指令;
所述目标一级缓存,还用于根据所述探查回写指令向所述目标二级缓存反馈第三探查回应,所述第三探查回应包括所述数据;
所述目标二级缓存,还用于将所述第三探查回应转发至所述共享缓存;
所述共享缓存,还用于根据所述第三探查回应生成DCA读取回应,所述DCA读取回应包括所述数据;
所述共享缓存,还用于将所述DCA读取回应发送至所述源二级缓存,使得所述源二级缓存根据所述DCA读取回应得到所述目标一级缓存的所述数据。
15.一种计算机系统,其特征在于,包括:
外存及多级缓存系统,所述外存与所述多级缓存系统通过总线连接;
所述多级缓存系统包括共享缓存及至少两个集群,每个集群具有至少一个一级缓存及二级缓存;
当源集群需要在目标集群读取或写入数据时,源二级缓存获取直接访问缓存DCA指令,所述源二级缓存为所述集群中的二级缓存,所述DCA指令包括所述目标集群中的目标一级缓存的缓存标识;
所述源二级缓存将所述DCA指令发送至所述共享缓存;
所述共享缓存根据所述DCA指令生成DCA操作指令;
所述共享缓存通过所述目标集群中的目标二级缓存将所述DCA操作指令发送至所述目标一级缓存,使得所述目标一级缓存写入所述数据或将所述数据写入所述集群。
CN201711063243.XA 2017-11-02 2017-11-02 一种缓存访问方法、多级缓存系统及计算机系统 Active CN109753445B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201711063243.XA CN109753445B (zh) 2017-11-02 2017-11-02 一种缓存访问方法、多级缓存系统及计算机系统
PCT/CN2018/105010 WO2019085649A1 (zh) 2017-11-02 2018-09-11 一种缓存访问方法、多级缓存系统及计算机系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711063243.XA CN109753445B (zh) 2017-11-02 2017-11-02 一种缓存访问方法、多级缓存系统及计算机系统

Publications (2)

Publication Number Publication Date
CN109753445A CN109753445A (zh) 2019-05-14
CN109753445B true CN109753445B (zh) 2022-12-27

Family

ID=66332832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711063243.XA Active CN109753445B (zh) 2017-11-02 2017-11-02 一种缓存访问方法、多级缓存系统及计算机系统

Country Status (2)

Country Link
CN (1) CN109753445B (zh)
WO (1) WO2019085649A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023375B1 (en) * 2020-02-21 2021-06-01 SiFive, Inc. Data cache with hybrid writeback and writethrough
CN112416251B (zh) * 2020-11-24 2023-02-10 上海壁仞智能科技有限公司 计算系统
US11314645B1 (en) * 2020-12-16 2022-04-26 Arm Limited Cache stash relay
CN115174673B (zh) * 2022-06-29 2023-11-03 北京奕斯伟计算技术股份有限公司 具备低延迟处理器的数据处理装置、数据处理方法及设备
CN115858408A (zh) * 2022-12-29 2023-03-28 南京维拓科技股份有限公司 一种工业设计流程中设计参数的传递方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346294A (zh) * 2013-07-31 2015-02-11 华为技术有限公司 基于多级缓存的数据读/写方法、装置和计算机系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334089B2 (en) * 2003-05-20 2008-02-19 Newisys, Inc. Methods and apparatus for providing cache state information
US7555597B2 (en) * 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
FR2970794B1 (fr) * 2011-01-21 2013-03-08 Commissariat Energie Atomique Systeme multi-coeurs et procede de coherence de donnees dans un tel systeme
US9804852B2 (en) * 2011-11-30 2017-10-31 Intel Corporation Conditional execution support for ISA instructions using prefixes
CN105740164B (zh) * 2014-12-10 2020-03-17 阿里巴巴集团控股有限公司 支持缓存一致性的多核处理器、读写方法、装置及设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346294A (zh) * 2013-07-31 2015-02-11 华为技术有限公司 基于多级缓存的数据读/写方法、装置和计算机系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
用成组技术分解调度问题;黄必清,刘文煌;《计算机集成制造系统-CIMS》;19970830(第04期);全文 *
面向云计算的多核处理器存储和网络子系统优化设计;苏文等;《高技术通讯》;20130415(第04期);全文 *

Also Published As

Publication number Publication date
WO2019085649A1 (zh) 2019-05-09
CN109753445A (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
CN109753445B (zh) 一种缓存访问方法、多级缓存系统及计算机系统
US10740261B2 (en) System and method for early data pipeline lookup in large cache design
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US10261901B2 (en) Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
US20230214326A1 (en) Computer Memory Expansion Device and Method of Operation
KR20200085522A (ko) 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
EP3183659B1 (en) Power aware padding
US20220113901A1 (en) Read optional and write optional commands
US11599483B2 (en) Dedicated cache-related block transfer in a memory system
CN104679684A (zh) 半导体器件及其操作方法
CN109716305B (zh) 实现异步高速缓存维护操作的方法、计算设备以及介质
EP4060505A1 (en) Techniques for near data acceleration for a multi-core architecture
US9639467B2 (en) Environment-aware cache flushing mechanism
KR102353859B1 (ko) 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
US11687460B2 (en) Network cache injection for coherent GPUs
US10402324B2 (en) Memory access for busy memory by receiving data from cache during said busy period and verifying said data utilizing cache hit bit or cache miss bit
US9575898B2 (en) Implementing coherency with reflective memory
US20200242032A1 (en) Cache and method for managing cache
US8856444B2 (en) Data caching method
US20240241831A1 (en) Techniques to reduce data processing latency for a device
US9946656B2 (en) Completion packet return based on eviction or flush
US20120151150A1 (en) Cache Line Fetching and Fetch Ahead Control Using Post Modification Information
JP2017068806A (ja) 情報処理装置および情報処理方法
KR101416248B1 (ko) 데이터 처리장치 및 그 데이터 처리방법
JP2008146237A (ja) キャッシュスヌープ制御装置およびキャッシュスヌープ処理方法

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