CN113515470B - 高速缓冲存储器寻址 - Google Patents
高速缓冲存储器寻址 Download PDFInfo
- Publication number
- CN113515470B CN113515470B CN202110345344.6A CN202110345344A CN113515470B CN 113515470 B CN113515470 B CN 113515470B CN 202110345344 A CN202110345344 A CN 202110345344A CN 113515470 B CN113515470 B CN 113515470B
- Authority
- CN
- China
- Prior art keywords
- cache
- memory
- tag
- bit
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 352
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000013075 data extraction Methods 0.000 claims abstract description 8
- 230000004044 response Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 15
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 239000004020 conductor Substances 0.000 claims 6
- 230000003068 static effect Effects 0.000 claims 2
- 230000000630 rising effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 5
- 230000036316 preload Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
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
本申请案涉及高速缓冲存储器寻址。所描述设备及方法有利地对存储器地址部分进行排序以用于高速缓冲存储器寻址。地址总线可具有比存储器地址小的宽度。所述存储器地址的多个位可分成最高有效位MSB部分及最低有效位LSB部分。首先将所述LSB部分提供给高速缓冲存储器。所述高速缓冲存储器可在接收到所述MSB部分之前处理所述LSB部分。所述高速缓冲存储器可使用所述LSB部分的索引位来索引到存储器单元阵列并识别多个对应标签。所述高速缓冲存储器还可对照所述LSB部分的较低阶标签位检查所述对应标签。可将部分匹配标记为所预测命中,且可将部分未命中标记为实际未命中,这可启动数据提取。用来自所述MSB部分的剩余标签位,所述高速缓冲存储器可确认或否认所述所预测命中。
Description
技术领域
本申请案大体上涉及一种存储器装置及对所述存储器装置的存取。
背景技术
计算机通常包含比计算机主存储器更快的处理器。为了弥合这种速度差异,许多计算机都包含高速缓冲存储器。尽管高速缓冲存储器对来自处理器的存储器请求做出更快的响应,但对于相同大小的存储,高速缓冲存储器比主存储器更昂贵。为了考虑更大的成本,高速缓冲存储器通常小于主存储器,且因此存储可存储在主存储器中的信息的子集。当充当处理器与主存储器之间的桥接件时,当所请求数据为由高速缓冲存储器存储的信息子集的一部分时,高速缓冲存储器满足处理器存储器请求而非主存储器。这些多级存储器(例如,高速缓冲存储器及主存储器)为层次存储器系统的实例。可使用层次存储器系统来平衡系统性能与成本。不幸的是,层次存储器系统也会带来工程师与其它计算机设计师努力克服的操作复杂性。
发明内容
在一个方面中,本申请案提供一种设备,其包括:接口,其经配置以耦合到主机装置的互连件;后备存储器,其经配置以存储数据;及高速缓冲存储器,其耦合到所述后备存储器且经配置以存储由所述后备存储器存储的所述数据的子集,所述高速缓冲存储器包括:存储器单元阵列;及高速缓冲控制器,其耦合到所述接口及所述存储器单元阵列,所述高速缓冲控制器经配置以:经由所述接口从所述互连件接收存储器地址的最低有效位(LSB)部分;在接收到所述存储器地址的最高有效位(MSB)部分之前,开始使用所述存储器地址的所述LSB部分索引到所述阵列或存储器单元中;及在所述索引开始之后,经由所述接口从所述互连件接收所述存储器地址的所述MSB部分。
在另一方面中,本申请案提供一种方法,其包括:作为存储器请求的一部分,从互连件接收存储器地址的最低有效位(LSB)部分,所述LSB部分包含组索引位及第一标签位;在接收到所述存储器地址的最高有效位(MSB)部分之前,使用所述组索引位来确定经加索引的高速缓冲组,所述经加索引的高速缓冲组包含多个高速缓冲标签及多个高速缓冲行,所述多个高速缓冲标签的每一相应高速缓冲标签对应于所述多个高速缓冲行中的相应高速缓冲行;及在所述确定开始之后,作为所述存储器请求的一部分从所述互连件接收所述存储器地址的所述MSB部分,所述MSB部分包含第二标签位。
在另一方面中,本申请案提供一种方法,其包括:在主机装置的处理器处,确定与存储器地址相对应的数据正在被程序引用,所述存储器地址包含最高有效位(MSB)部分及最低有效位(LSB)部分;在所述主机装置的存储控制器处,基于所述存储器地址制定对所述数据的存储器请求;通过互连件将用于所述存储器请求的第一消息发射到高速缓冲存储器,所述第一消息包含所述存储器地址的所述LSB部分;及在所述发射所述第一消息之后,通过所述互连件将用于所述存储器请求的第二消息发射到所述高速缓冲存储器,所述第二消息包含所述存储器地址的所述MSB部分。
附图说明
参考以下图式描述用于高速缓冲存储器寻址的设备及技术。在所有附图中使用相同的数字来引用相似的特征及组件:
图1说明可实施高速缓冲存储器寻址的实例设备。
图2说明主机装置与设备之存储器装置之间的实例互连。
图3说明互连的地址总线与存储器地址的多个部分之间的实例关系。
图4说明用于在主机装置与包含高速缓冲存储器的存储器装置之间传达存储器地址的多个部分的实例设备。
图5-1说明用于使用存储器地址的第一部分的流水线式高速缓冲操作的实例技术的第一部分。
图5-2说明用于使用存储器地址的第二部分的流水线式高速缓冲操作的实例技术的第二部分。
图6说明根据高速缓冲存储器寻址的,涉及与存储器控制器、高速缓冲存储器及后备存储器有关的通信及操作的实例顺序图。
图7说明实例流程图,其描绘了根据高速缓冲存储器寻址由包含高速缓冲存储器的存储器装置执行的操作。
图8说明用于设备实施高速缓冲存储器寻址的实例方法。
图9说明用于设备实施高速缓冲存储器寻址的其它实例方法。
具体实施方式
概述
计算机使用可通信地耦合到存储器的处理器来提供服务及特征。因为处理器可使用数据的速度快于一些存储器可容纳的速度,所以可在处理器与存储器之间逻辑地插入高速缓冲存储器。此将存储器转换为较慢的后备存储器,用于获得较快的高速缓冲存储器,所述两者均可组合成单个存储器装置。为了从此存储器装置请求数据,处理器向存储器装置提供存储器请求,所述存储器请求包含置放在地址总线上的数据的存储器地址。为了响应于存储器请求,高速缓冲存储器的高速缓冲控制器基于存储器地址确定所请求数据当前是否存在于高速缓冲存储器的存储器单元阵列中。在一些状况下,地址总线具有比存储器地址小的宽度。换句话说,存储器地址具有比地址总线可同时地载运的位更多的位。因此,处理器在地址总线上依序驱动存储器地址的不同部分,而不是同时地进行驱动。
存储器地址的多个位可例如分为最高有效位(MSB)部分及最低有效位(LSB)部分。一些后备存储器由动态随机存取存储器(DRAM)构成。由于DRAM的物理结构,如果先将存储器地址的MSB部分提供给存储器装置,那么存取DRAM会更快。因此,许多存储器协议规定,MSB部分置放于LSB部分之前的地址总线上。
与这些存储器协议相反,此文档描述在提供MSB部分之前提供存储器地址的LSB部分的技术。通过如此做,高速缓冲存储器可在接收到MSB部分之前开始处理LSB部分。这使得高速缓冲存储器能够在接收到存储器地址的第一部分之后且在接收到第二部分之前开始所定位所请求数据。此顺序减少响应于存储器请求的平均时间,因为与DRAM不同,当在MSB部分之前处理LSB部分时,可更快速地存取高速缓冲存储器。减少平均响应时间可加快耦合到存储器装置的处理器的处理速率。
更详细地,当高速缓冲存储器试图定位所请求数据时,高速缓冲存储器的高速缓冲控制器将存储器地址至少分成索引位及标签位。标签位可包含低阶标签位及高阶标签位。在一些实施方案中,存储器地址的LSB部分包含索引位加低阶标签位,而MSB部分包含高阶标签位。所描述技术涉及流水线化高速缓冲存取以减少高速缓冲存储器及存储器装置的响应时间。高速缓冲控制器可使用LSB部分的索引位来索引到高速缓冲存储器的存储器单元阵列,以确定可保存所请求数据的经加索引的高速缓冲组。此确定识别与经加索引的高速缓冲组相对应的多个标签,同时等待接收完整的标签位集。因此,在存储器地址的所有部分都可用之前,高速缓冲控制器开始确定所请求数据是否当前存储在高速缓冲存储器中。因此,高速缓冲控制器使用此技术加速存储器存取,以使计算机更快。
此外,所描述技术可通过使用首先接收的存储器地址的部分标签位来执行推测性操作以减少对所请求数据的平均响应时间。例如,高速缓冲控制器可对照低阶标签位来检查经加索引的高速缓冲组的多个高速缓冲路的对应高速缓冲标签,这些较低阶标签位作为存储器地址的LSB部分的一部分被接收。高速缓冲控制器可使用比较电路来检查低阶标签位,且可在MSB部分中接收到高阶标签位之前开始。通过将匹配经加索引的高速缓冲组的标签与低阶标签位进行部分比较,高速缓冲控制器的部分标签匹配逻辑产生所预测匹配结果。如果低阶标签位与对应于匹配的经加索引的高速缓冲组的高速缓冲标签匹配,那么部分标签匹配逻辑检测到所预测命中。此处,所预测命中可对应于基于不完整或部分信息(例如仅存储器请求的地址位的一部分)的完全匹配。响应于所预测命中,高速缓冲控制器将对应高速缓冲行预加载到高速缓冲存储器的寄存器中,所述寄存器可用于输出高速缓冲行以传输到处理器。
另一方面,如果低阶标签位未能与匹配的经加索引的高速缓冲组的高速缓冲标签匹配,那么部分标签匹配逻辑将所预测匹配结果确定为实际未命中。上述情形意味着所请求数据当前不在高速缓冲存储器的存储器单元阵列中。因此,高速缓冲控制器使用存储器地址的当前可用位来启动对存储器装置的后备存储器(例如,DRAM)的数据提取。上述情形使得后备存储器能够开始用于检索所请求数据的过程。因此,如果部分标签匹配逻辑检测到实际未命中,那么可立即开始从后备存储进行较慢的检索。通过立即开始,技术进一步减少了存储器装置对来自处理器的存储器请求的平均响应时间。
然后,高速缓冲存储器从处理器接收存储器地址的MSB部分。基于MSB部分的高阶标签位,高速缓冲控制器可使用存储器地址的其余标签位执行流水线操作的第二部分,以进行高速缓冲存取。高速缓冲控制器使用比较电路将匹配的经加索引的高速缓冲组的对应标签与作为存储器地址的MSB部分的一部分接收的高阶标签位进行比较。取决于比较电路的数量,此比较可限制于部分标签匹配逻辑检测为所预测命中的那些标签以节省功率或提高速度。
如果高阶标签位也与经加索引的高速缓冲组中的高速缓冲行的高速缓冲标签匹配,那么高速缓冲控制器的标签匹配逻辑确认所预测命中。基于所预测命中确认,高速缓冲存储器从高速缓冲存储器的寄存器供应所请求数据。另一方面,如果高阶标签位未能匹配匹配的经加经加索引的高速缓冲组中的高速缓冲行的高速缓冲标签,那么标签匹配逻辑将否认所预测命中。因此,启动对所请求数据的提取以准备待存取的后备存储器(例如,DRAM)。在由于部分匹配期间的实际未命中或由于在完全匹配期间否认所预测命中而准备好后备存储器进行存取之后,高速缓冲控制器完成对后备存储器的数据提取操作。然后,存储器装置将所请求数据供应给处理器。
以这些方式,有利地对存储器地址的不同部分的传输进行排序,以使得能够快速处理存储器请求。可包含处理器或存储器控制器或两者的主机装置将存储器请求的存储器地址的第一部分发送到具有高速缓冲存储器的存储器装置。存储器地址的第一部分包含组索引位及第一标签位。因为索引位是作为存储器请求的第一传输的一部分而接收,所以高速缓冲存储器的高速缓冲控制器可开始高速缓冲命中/未命中确定分析,而无需等待接收到第二传输。此流水线技术减少高速缓冲存储器对存储器请求做出响应的时间。如果基于使用第一标签位的部分标签匹配比较来检测所预测命中,那么高速缓冲控制器可将可能满足存储器请求的一或多个高速缓冲行预加载到至少一个寄存器中。此预加载还可减少平均响应时间。如果使用第一标签位检测到实际未命中,那么高速缓冲控制器替代地启动从存储器装置的后备存储器进行数据提取,以进一步减少对来自主机装置的存储器请求的平均响应时间。
因此,在这一点上,在接收到存储器地址的第二部分之后,存储器装置准备快速地对存储器请求做出响应。可能为存储器请求目标的高速缓冲数据正向定位在高速缓冲存储器的输出寄存器处。此外,如果已知高速缓冲存储器不存在所请求数据,那么已指示后备存储器基于包含在存储器地址的第一部分中的地址位来预热存储器以用于数据检索。对于流水线式高速缓冲存储器寻址的第二部分,主机装置将存储器地址的第二部分发送到存储器装置。存储器地址的第二部分包含第二标签位。在使用第二标签位确认所预测命中之后,高速缓冲存储器可将数据从寄存器发射到主机装置。在否认所预测命中时,对于这些低可能性实例,高速缓冲控制器可开始从后备存储器进行数据提取。同时,已提取针对实际未命中场景的所请求数据。因此,以适当排序存储器地址位的流水线方式进行高速缓冲存储器寻址可加速对从主机装置接收到的存储器请求的响应,且因此加快计算机的速度。与推测性预加载或早期数据提取一起使用所描述部分标签,进一步加速对存储器请求的响应。
实例操作环境
图1说明可实施高速缓冲存储器寻址的实例设备100。设备100可实现为例如至少一个电子装置。实例电子装置实施方案包含物联网(IoT)装置100-1、平板装置100-2、智能手机100-3、笔记本计算机100-4、台式计算机100-5、服务器计算机100-6及服务器群集100-7。其它设备实例包含可穿戴装置,例如智能手表或智能眼镜;可穿戴装置,例如机顶盒或智能电视;主板或服务器刀片;消费类电器;汽车;工业设备;等等。每一类型的电子装置均包含一或多个组件,以提供一些计算功能性或特征。
在实例实施方案中,设备100包含至少一个主机102、至少一个处理器104及至少一个高速缓冲存储器106。设备100还可包含至少一个存储器控制器108、至少一个互连件110及至少一个后备存储器112。可用例如高带宽存储器(HBM)装置或混合存储器立方体(HMC)装置的DRAM装置或模块或三维(3D)堆叠DRAM装置来实现后备存储器112。另外或替代地,后备存储器112可用存储级存储器装置来实现,例如采用3DXPointTM或相变存储器(PCM)的存储类存储器装置。本文中描述后备存储器112的其它实例。如所展示,主机102或主机装置102包含处理器104、高速缓冲存储器106-1及存储器控制器108。处理器104耦合到高速缓冲存储器106-1,且高速缓冲存储器106-1耦合到存储器控制器108。处理器104还直接或间接耦合到存储器控制器108。主机102经由互连件110耦合到高速缓冲存储器106-2。高速缓冲存储器106-2耦合到后备存储器112。
设备100的所描绘组件表示具有层次存储器系统的实例计算架构。例如,高速缓冲存储器106-1逻辑耦合在处理器104与高速缓冲存储器106-2之间。此外,高速缓冲存储器106-2逻辑耦合在处理器104与后备存储器112之间。此外,高速缓冲存储器106-1比高速缓冲存储器106-2处于层次存储器系统的更高层级处。类似地,高速缓冲存储器106-2比后备存储器112位于层次存储器系统的更高层级处。所指示互连件110以及将各种组件通信地耦合在一起的其它互连件,使得能够在各个组件之间或当中传送数据。互连件实例包含总线、交换结构、一或多个载运电压或电流信号的导线等。
尽管在图1中描绘并在本文中描述设备100的特定实施方案,但可以替代方式来实施设备100。例如,主机102可包含多个高速缓冲存储器,包含多个层级的高速缓冲存储器。此外,至少一个其它高速缓冲存储器及后备存储器对可耦合在所说明高速缓冲存储器106-2及后备存储器112“下面”。可以各种方式来实现高速缓冲存储器106-2及后备存储器112。在一些状况下,高速缓冲存储器106-2及后备存储器112均安置在主板上或由其物理支撑,其中后备存储器112包括“主存储器”。在其它状况下,高速缓冲存储器106-2包括动态随机存取存储器(DRAM),且后备存储器112包括快闪存储器或磁性硬盘驱动器。然而,可以替代方式来实施组件,包含在分布式或共享存储器系统中。此外,给定设备100可包含更多、更少或不同的组件。
用于高速缓冲存储器寻址的实例方案、技术及硬件
图2大体在200处说明在设备(例如,图1的设备100)的主机102与存储器装置202之间延伸的实例互连件110。为了清楚起见,主机102经描绘为包含处理器104及存储器控制器108,但主机102可包含更多、更少或不同的组件。在实例实施方案中,存储器装置202包含至少一个高速缓冲存储器106及至少一个后备存储器112。后备存储器112用作处置高速缓冲存储器106不能满足的存储器请求的后备装置(backstop)。后备存储器112可包含主存储器212、后备存储器214、另一高速缓冲存储器(例如,在较低层次层级处的较大高速缓冲存储器,其后为主存储器),其组合等等。例如,后备存储器112可包含主存储器212及后备存储器214两者。替代地,后备存储器112可包含由高速缓冲存储器106前面的后备存储器214(例如,固态硬盘(SSD)或磁驱动器可与基于DRAM高速缓冲存储器配对)。此外,可使用主存储器212来实施后备存储器112,且存储器装置202因此可包含以一或多个不同配置(例如,存储类存储器)组织或操作的高速缓冲存储器106及主存储器212。在一些状况下,主存储器212由易失性存储器形成,而后备存储器214由非易失性存储器形成。
主机102经由互连件110耦合到存储器装置202。此处,互连件110至少分为地址总线204及数据总线206。因此,存储器地址经由地址总线204进行通信,且数据经由数据总线206进行通信。例如命令、消息或指令之类的存储器请求可在地址总线204、数据总线206、命令总线(未示出)或其组合上进行通信。
在一些状况下,主机102及存储器装置202实施为单独的集成电路(IC)芯片。换句话说,主机102可包含至少一个IC芯片,且存储器装置202可包含至少一个其它IC芯片。这些芯片可在单独封装或模块中,可安装在同一印刷电路板(PCB)上,可安置在单独的PCB上等。在这些环境的每一个中,互连件110可在主机102与存储器装置202之间提供芯片间耦合。互连件110可根据一或多个标准来操作。实例标准包含JEDEC发布的DRAM标准(例如,DDR、DDR2、DDR3、DDR4、DDR5等);堆叠存储器标准,例如用于高带宽存储器(HBM)或混合存储器立方体(HMC);外围组件互连(PCI)标准,例如快速外围组件互连(PCIe)标准;计算快速连接(CXL)标准;HyperTransportTM标准;InfiniBand标准;以及外部串行AT总线附件(eSATA)标准。除有线连接外或替代有线连接,互连件110可为或可包含无线连接,例如采用蜂窝、无线局域网(WLAN)、无线个人局域网(WPAN)或无源网络标准的连接。存储器装置202可实现为支持主机102的存储器卡。尽管仅展示一个存储器装置202,但主机102可使用一或多个互连件110耦合到多个存储器装置202。
在实例操作中,主机102生成存储器请求208。在主机102内,处理器104确定待请求数据。作为响应,存储控制器108制定存储器请求208并将存储器请求208置放在互连件110上。存储器控制器108可包含存储器请求队列及管理逻辑(未展示)。管理逻辑组织、预订及以其它方式处理多个存储器请求,以将其高效地发布到一或多个存储器装置202。存储器控制器108还可将特定存储器请求208的不同部分与其它存储器请求交错,以促进由一或多个存储器装置202更快地执行。存储器请求208至少包含存储器地址210。存储器控制器108将存储器地址210置放或驱动在地址总线204上,且地址总线204将存储器地址210传播到存储器装置202。此传播取决于地址总线204及存储器请求208的存储器地址210的相对宽度。接下来参考图3描述存储器请求208的存储器地址部分及实例传播方法。
图3说明(例如,图2的)互连件110的地址总线204与存储器地址210的多个部分之间的实例关系300。地址总线204具有具有第一位宽的地址总线宽度302。(图2的)存储器请求208的存储器地址210具有具有第二位宽的存储器地址宽度304。在一些环境中,第二位宽大于第一位宽。换句话说,存储器地址210比地址总线204宽。这意味着在不同的时间将存储器地址210置放在地址总线204上在不同存储器地址部分中。
在实例实施方案中,存储器地址210包含或分成不同的部分,例如至少第一部分及第二部分。如所展示,存储器地址210包含最高有效位(MSB)部分308及最低有效位(LSB)部分310。如由带省略号的框表示的,存储器地址210可包含其它位,例如偏移位。为的比率或分配可基于给定高速缓冲存储器架构而变化。例如,随着高速缓冲行大小的增加,偏移位的数量增加,但索引位的数量减少(假设两种架构中的高速缓冲路的数量相同)。为了将两个部分从主机102传达到存储器装置202,存储器控制器108以某一时间次序将所述部分置放在地址总线204上。描述用于高速缓冲存储器寻址的两个实例时间次序方法:第一高速缓冲存储器寻址方法314及第二高速缓冲存储器寻址方法316。
相对于在向下方向上增加的时间轴306描绘此两种方法。在第一高速缓冲存储器寻址方法314中,存储器控制器108首先将MSB部分308置放在地址总线204上,且然后将LSB部分310置放在地址总线204上。对于DRAM,所请求数据位于存储器位位置的一列及一行网格的交叉点处。通过首先激活一行且然后选择一列来存取DRAM。存储器地址的MSB指示目标行,且LSB指示目标列。因此,利用基于DRAM存储器,存储器装置可在接收到MSB部分308之后且在接收到LSB部分310之前开始处理存储器请求。举例来说,双倍数据速率(DDRx)存储器可使用拆分存储地址进行操作,在所述拆分存储地址中,MSB部分308在LSB部分310之前被接收。
相反,高速缓冲存储器以不同方式操作。高速缓冲存储器包含多个高速缓冲标签及具有多个高速缓冲组的存储器单元阵列。通过索引到高速缓冲组中,然后检查与经加索引的高速缓冲组相对应的一或多个高速缓冲标签,来存取高速缓冲存储器。存储器地址的MSB与高速缓冲标签匹配,且LSB经索引到目标高速缓冲组。由于高速缓冲存储器的此存取次序,具有高速缓冲前端的存储器装置在第一高速缓冲存储器寻址方法314下接收到MSB部分308时不能开始处理存储器请求。替代地,存储器装置等待,直到已接收到LSB部分310。此增加存储器装置对存储器请求的响应时间,并减慢计算机操作。
如果存储器装置202包含高速缓冲存储器106,那么第二高速缓冲存储器寻址方法316经定制以加速(图2的)存储器装置202可对存储器请求208做出回应的快速程度。利用第二高速缓冲存储器寻址方法316,存储器控制器108首先将LSB部分310置放在地址总线204上,且然后将MSB部分308置放在地址总线204上。因此,存储器装置202在接收MSB部分308之前接收LSB部分310。在接收到LSB部分310时,存储器装置202可在接收到MSB部分308之前开始处理存储器请求208。例如,存储器装置202可使用LSB部分310的LSB来识别存储器请求208所针对的经加索引的高速缓冲组。以此方式,与使用第一高速缓冲存储器寻址方法314相比,存储器装置202可更早地使用第二高速缓冲存储器寻址方法316开始处理存储器请求208。接下来参考图4描述此第二高速缓冲存储器寻址方法316。
图4说明用于在主机102与包含高速缓冲存储器106的存储器装置202之间传达存储器地址210的多个部分的实例性设备400。因此,设备400可包含主机102及存储器装置202,所述主机包含存储器控制器108。如所展示,除了高速缓冲存储器106之外,存储器装置202还包含接口412、互连件414及后备存储器112。存储器装置202经由接口412耦合到互连件110。因此,存储器装置202经由接口412耦合到地址总线204及数据总线206。高速缓冲存储器106经由互连件414耦合到后备存储器112。高速缓冲存储器106可存储由后备存储器112存储的数据的子集。
高速缓冲存储器106包含高速缓冲控制器408及至少一个存储器单元阵列410。下面参考图5-1及5-2描述存储器单元阵列410的实例实施方案。高速缓冲控制器408如本文中所描述控制高速缓冲存储器106的操作以及与存储器单元阵列410的互操作。高速缓冲控制器408耦合到接口412及存储器单元阵列410。因此,高速缓冲存储器106可使用接口412存取地址总线204及数据总线206。尽管未在图4中展示,但阵列410可“直接”连接到接口412。
在实例实施方案中,主机102通过地址总线204将存储器地址210的多个部分发送到接口412。根据第二高速缓冲存储器寻址方法316,主机102首先发送LSB部分310,且然后发送MSB部分308。如所说明,LSB部分310至少包含组索引位402。此使得高速缓冲控制器408能够在MSB部分308到达之前开始索引到阵列410中。因此,在接收到存储器地址210的MSB部分308之前,高速缓冲控制器408可使用存储器地址210的LSB部分310开始索引到阵列410中,以减少对高速缓冲存储器106的存取时间,且因此减少对存储器装置202的平均存取时间。LSB部分310还可包含标签位的一部分,而MSB部分308包含其余标签位。此处,LSB部分310包含第一标签位404,且MSB部分308包含第二标签位406。第一标签位404包含标签位的低阶位,且第二标签位406包含标签位的高阶位。下面参考图5-1及5-2描述组索引位402、第一标签位404及第二标签位406的使用。
为了高效地管理多个存储器装置,存储器控制器108可在发送LSB部分310及MSB部分308之间交错其它存储器请求或其部分。换句话说,在无一或多个其它中间发射的情况下,存储器地址210的第一及第二部分可不会连续地通过地址总线204发射。因为这些中间传输增加第一部分与第二部分的传输之间的时间长度,所以在这些情况下,对存储器地址210的各部分进行排序的第二方法316可为给定的存储器请求提供额外的存取时间减少。
一些所描述实施方案涉及作为主存储器(例如,由DRAM构建)且前接高速缓冲存储器106的后备存储器112。然而,包含设备400在内的所描述实施方案可涉及其它环境。这些环境可包含具有例如后备存储器112的那些环境,所述后备存储器首先按行且其次按列存取(例如,其中首先MSB,且其次为LSB),其中后备存储器112前接高速缓冲存储器106。例如,存储器装置202可包含高速缓冲存储器106及由非易失性存储器(NVM)(例如,快闪存储器)形成的后备存储器112。在此状况中,高速缓冲存储器106可由SRAM或DRAM形成。另外,仅举数例,存储器装置202可根据串行先进技术总线附件(SATA)、通用串行总线(USB)或外围组件互连(PCI)技术进行操作。因此,互连件110也可以不同方式实施。例如,互连件110通常可与上文所列出的技术中之一者或串行总线相称。例如,在互连件110的串行总线实施方案的情况下,存储器控制器108可依次向存储器装置202发射存储器请求命令,然后为LSB部分310,且然后为MSB部分308。
图5-1说明用于使用存储器地址210的第一部分(例如,图3的第一部分)的流水线式高速缓冲操作的实例技术的第一部分500-1。在此实例中的第一部分为具有组索引位402及第一标签位404的(例如,图3及4的)LSB部分310。如所说明,存储器单元阵列410包含多个高速缓冲路502-1、502-2、...,502-N及多个高速缓冲组504-1、504-2、...,504-M,其中“N”及“M”各自表示正整数。尽管某些原则是根据具有多个组的高速缓冲存储器来描述的(例如,对于N路组关联的高速缓冲存储器,N大于1),但所述原理适用于具有单路的高速缓冲存储器(例如,其中对于直接映射的高速缓冲存储器,N等于1)。
存储器单元阵列410还包含多个高速缓冲行508,且可包含多个高速缓冲标签506。替代地,多个高速缓冲标签506可为高速缓冲存储器106的另一方面的一部分。每一高速缓冲行508存储一行数据,所述数据行可包含一或多个字节(例如,32字节或256字节)。多个高速缓冲行中的每一相应高速缓冲行508对应于多个高速缓冲标签中的相应高速缓冲标签506。多个高速缓冲行508及多个高速缓冲标签506“垂直地”组织(如在图5-1中以实例的方式描绘)成多个高速缓冲路502-1…502-N,且“水平地”组织成多个高速缓冲组504-1…504-M。尽管每一标签506及行508经展示为共置,但存储器单元阵列410的物理结构可不同。此外,多个标签506可为(图4的)高速缓冲控制器408的物理或逻辑部分。
高速缓冲控制器408包含至少一个寄存器526,部分标签匹配逻辑512以及多个比较器电路510-1、510-2、…,510-N。因此,高速缓冲控制器408可包含用于每一相应高速缓冲路径502的相应比较器电路510(C 510)。可替代地,即使高速缓冲存储器包含多个高速缓冲方式,仍可采用更少的比较器电路(例如,与单个比较器电路510一样少)来节省空间,其代价为因横跨多个高速缓冲路以串联方式使用较少比较器电路而减少速度。为了执行下文所描述的比较,每一相应比较器电路510被耦合以从相应列的标签506接收标签506,所述标签对应于给定的高速缓冲路502。
在实例实施方案中,高速缓冲控制器408接收组索引位402作为(例如,图3的)存储器地址210的第一部分的一部分,例如(例如,图3和图4的)LSB部分310的一部分。高速缓冲控制器408使用LSB部分310的组索引位402来索引到多个高速缓冲组504-1…504-M中。上述情形使得高速缓冲存储器106能够开始索引到多个高速缓冲组中,以在接收到存储器地址210的MSB部分308之前确定多个高速缓冲组中的经加索引的高速缓冲组。在所说明实例中,经加索引的高速缓冲组对应于高速缓冲组504-M。
因此,高速缓冲存储器106可使用存储器地址210的首先被接收的部分来判定经加索引的高速缓冲组504-M以加速对存储器请求208的处理。高速缓冲存储器106可使用部分信息进一步推测地执行操作。LSB部分310还包含第一标签位404。可对照经加索引的高速缓冲组504-M的标签506来检查这些低阶标签位,以确定是否存在与这些第一标签位404的匹配,其有资格作为与完整组标签位的部分匹配。从概率的角度来看,此部分匹配指示总体上可能匹配,因此可在推测性基础上采取行动,极有可能所述推测行动将证明为正确的行动。
继续实例操作,高速缓冲控制器408基于经加索引的高速缓冲组504-M,使用第一标签位404执行部分标签匹配操作。缓存控制器408将第一标签位404及相应高速缓冲标签506从经加索引的缓存组504-M路由到多个比较器电路510-1至510-N的每一比较器电路510。每一比较器电路510将第一标签位404与相应高速缓冲标签506进行比较,以确定相应部分路匹配结果524。因此,高速缓冲控制器408产生多个部分路匹配结果524-1、524-2、…,524-N。每一部分路匹配结果524可实施为例如布尔值,所述布尔值指示相应高速缓冲标签506是否与第一标签位404匹配。
每一高速缓冲路502中且沿着每一高速缓冲组504的每一高速缓冲行508可包含一或多个指示符位528。指示符位528的实例包含有效位、更改位,替换信息位(例如,用于最近最少使用(LRU)分析)等等。因此,每一高速缓冲行508可与指示高速缓冲行508是否保存有效数据的有效位相关联。如果给定高速缓冲行508没有有效数据,那么可通过从与比较电路510的比较排除对应高速缓冲标签506来节省一些功率。
高速缓冲控制器408将从多个比较器电路510-1…510-N输出的多个部分路匹配结果524-1…524-N耦合到部分标签匹配逻辑512。部分标签匹配逻辑512基于多个部分路匹配结果524-1…524-N产生所预测匹配结果514。例如,如果至少一个部分路匹配结果524对于匹配为正,那么预测匹配结果514为肯定的且对应于所预测命中516。在一些环境中,响应于与至少一个标签506中的位的一部分的比较,所预测命中516对应于存储器请求的可用但部分地址位上的匹配。因为地址位的一部分进行比较,所以所预测命中516可表示与多个高速缓冲路502的多个标签506的部分匹配或所预测匹配结果514。响应于所预测命中516,高速缓冲控制器408执行预加载操作520。预加载操作520包含将与正局部路匹配结果524相对应的至少一个高速缓冲行508加载到至少一个寄存器526中,所述寄存器在图5-1的左下角描绘。尽管此预加载操作520为推测性的,但由于代码执行的新近性及局部性,部分匹配可能为可能命中。因此,一旦确认所预测命中516(如下文参考图5-2所述),即可更快地从寄存器526向接口412提供确认的高速缓冲行508,以通过互连件110传输到主机102。
另一方面,如果没有部分路匹配结果524为正,那么所预测匹配结果514为负,且对应于实际未命中518。换句话说,带有部分标签位的未命中会使任何剩余的标签位不相关。因此,高速缓冲控制器408执行提取操作522以从(例如,图4的)后备存储器112提取数据。高速缓冲控制器408可在不检查任何额外标签位的情况下开始此提取操作522。此外,提取操作522可至少在不接收任何额外标签位(例如(例如,图4的)第二标签位406)的情况下开始。下面参考图6描述具有后备存储器112的数据提取操作的实例实施方案。然而,第二标签位406可影响具有所预测命中516的场景中的操作。接下来参考图5-2对上述情形进行描述。
图5-2说明用于使用(例如,图3的)存储器地址210的第二部分的流水线式高速缓冲操作的实例技术的第二部分500-2。在此实例中的第二部分为具有第二标签位406的(例如,图3及4的)MSB部分308。继续上文针对第一部分500-1所描述的实例操作,高速缓冲控制器408基于经加索引的高速缓冲组504-M使用至少第二标签位406执行“完整”标签匹配操作。高速缓冲控制器408可将第二标签位406及相应缓存标签506从经加索引的高速缓冲组504-M路由到多个比较器电路510-1...510-N中的每一相应比较器电路510。每一比较器电路510将第二标签位406与相应高速缓冲标签506进行比较,以确定相应路匹配结果540。因此,高速缓冲控制器408产生多个路匹配结果540-1、540-2、…、540-N。每一路匹配结果540可实施为例如布尔值,以指示匹配或缺乏匹配。
可以不同方式执行此比较操作。例如,高速缓冲控制器408可将包含第一标签位404及第二标签位406两者的“完整”组标签位与每一高速缓冲路502的高速缓冲标签506进行比较。替代地,高速缓冲控制器408可将此比较集中于与产生(图5-1的)所预测命中516的一或多个高速缓冲路502相对应的一或多个高速缓冲标签506。因此,对于仅与第一标签位404匹配的那些高速缓冲路502,高速缓冲控制器408可将第二标签位406与高速缓冲标签506的一部分进行比较。还可使用与用于流水线式高速缓冲操作的实例技术的第一部分500-1相同或不同的比较电路,以其它方式执行比较操作。
高速缓冲控制器408将从多个比较器电路510-1…510-N输出的多路匹配结果540-1…540-N耦合到标签匹配逻辑532。标签匹配逻辑532基于多路匹配结果540-1…540-N产生匹配结果534。例如,如果路匹配结果540为肯定的,那么匹配结果534为肯定的且在536处确认所预测命中。响应于确认的所预测命中536,高速缓冲控制器408经由接口412将高速缓冲行508的数据从寄存器526驱动到(例如,图4的)互连件110上。因此,如果确认所预测命中516,那么图5-1的预加载操作520可节省额外时间。
另一方面,如果没有任何路匹配结果540为正,那么匹配结果534为负,并在538处否认所预测命中。换句话说,已为此存储器请求208确定未命中。因此,高速缓冲控制器408通过确定经加索引的高速缓冲组504-M中的哪个高速缓冲行508将被选择为替换牺牲者来开始替换程序。高速缓冲控制器408还激活后备存储器112的下伏存储器行,以准备将新地址加载到所选择高速缓冲行508中。因此,替换程序还包含用以从(例如,图4的)后备存储器112获取数据的提取操作。接下来参考图6描述对后备存储器112的数据提取操作的实例实施方案。
图6说明根据高速缓冲存储器寻址与存储器控制器108、高速缓冲存储器106及后备存储器112有关的通信及操作的实例顺序图600。在此实例中,高速缓冲存储器106及后备存储器112经安置在相同的IC芯片上或被封装到相同的模块或卡中。相反,与高速缓冲存储器106相比,存储器控制器108在单独的IC芯片上。因此,在存储器控制器108与高速缓冲存储器106之间存在芯片间边界602,且芯片间边界602被互连件110跨越。
在实例实施方案中,由于待由在(例如,图2的)处理器104上执行的程序使用的数据,存储器控制器108制定存储器请求208。存储器请求208包含(例如,图2的)存储器地址210的至少两个部分。存储器控制器108使用互连件110将存储器请求208的第一部分604发射到高速缓冲存储器106。第一部分604可包含(例如,图4的)组索引位402或第一标签位404,包含组索引位402及第一标签位404两者。第一部分604可包括存储器地址210的(例如,图3及图4的)LSB部分310。存储器控制器108可发射第一部分604作为用于存储器请求208的第一消息。在此类状况下,此第一消息可根据非高速缓冲存储器协议(例如用于DDRx存储器的协议)实现为行命令。响应于所述发射,高速缓冲存储器106经由互连件110从存储器控制器108接收存储器地址210的第一部分604,作为存储器请求208的一部分。
用第一部分604的组索引位402及第一标签位404,高速缓冲存储器106执行图5-1的第一地址处理部分500-1。高速缓冲存储器106的高速缓冲控制器408使用组索引位402确定经加索引的高速缓冲组(例如,经加索引的高速缓冲组504-M)。基于经加索引的高速缓冲组504-M,高速缓冲控制器408的部分标签匹配逻辑512处理第一标签位404以确定所预测匹配结果514。如果所预测匹配结果514对应于实际未命中518,那么高速缓冲存储器106在606-1处启动对后备存储器112的数据提取。数据提取可使后备存储器112做好准备以在接收到其余地址位之后准备用于存取较低等待时间。例如,高速缓冲存储器106可提供足够的地址位信息,使得后备存储器112可激活存储体,对行进行预充电,感测存储的已充电行等等。
在高速缓冲存储器106开始执行第一地址处理部分500-1之后,存储器控制器108使用互连件110将存储器请求208的第二部分608发射到高速缓冲存储器106。第二部分608可包含(例如,图4的)第二标签位406。第二部分608可包括存储器地址210的(例如,图3及4的)MSB部分308。存储器控制器108可发射第二部分608作为用于存储器请求208的第二消息。在此状况下,此第二消息可根据非高速缓冲存储器协议(例如用于DDRx存储器的协议)实现为列命令。
在由存储器控制器108发射之后,高速缓冲存储器106经由互连件110接收存储器地址210的第二部分608。响应于接收到第二部分608,高速缓冲存储器106使用第二标签位406执行图5-2的第二地址处理部分500-2。高速缓冲控制器408的标签匹配逻辑532处理第二标签位406以产生匹配结果534。如果匹配结果534否认所预测命中516(如在图5-2的538处所示),那么高速缓冲存储器106在606-2处启动对后备存储器112的数据提取以使存储器准备好用于进行存取。因此,如果待存取后备存储器112,那么可针对任何给定的存储器请求208实施606-1或606-2处的初始数据提取信令的单个实例,但不需要两个数据提取启动。
如果存在高速缓冲未命中,那么后备存储器112在606-1或606-2处接收启动数据提取命令。无论是在606-1处还是在606-2处启动数据提取,高速缓冲存储器106都通过将在第二部分608中接收到的地址位发送到后备存储器112来完成在610处的数据提取。这些地址位可例如使一列能够从由较早的数据提取启动信号606-1或606-2中的一个准备好的感测放大器选择数据。通过将所请求数据从感测放大器加载到输出寄存器或缓冲器,可在后备存储器112内获得所请求数据。后备存储器112在返回数据信令612处将所请求数据返回到高速缓冲存储器106。
高速缓冲存储器106通过在互连件110上发射所请求数据,在所请求数据信令614处将所请求数据提供给存储器控制器108。所请求数据满足存储器请求208。存储器控制器108在614处经由互连件110从高速缓冲存储器106接收所请求数据,所述互连件将两个单独的IC芯片耦合在一起。如果确认所预测命中516,那么从在第一地址处理部分500-1期间预加载的寄存器526转发所请求数据。否则,在实际未命中518或被否认的所预测命中538的情况下,使用从后备存储器112返回到高速缓冲存储器106的数据来提供所请求数据。
用于高速缓冲存储器寻址的实例方法
在本章节中,将参考图7至9的流程图及作业图描述实例方法。这些描述仅以实例的方式提及图1–6中所描绘的组件、实体及其它方面。图7说明实例流程图700,其描绘根据高速缓冲存储器寻址由包含高速缓冲存储器的存储器装置执行的操作。流程图700包含十二个框702至724。在702处,高速缓冲存储器106从主机102接收LSB部分310。在704处,高速缓冲控制器408使用LSB部分310的组索引位402来确定多个高速缓冲组504-1…504-M的经加经加索引的高速缓冲组(例如,经加经加索引的高速缓冲组504-M)。在706处,高速缓冲控制器408将LSB部分310的第一标签位404与所确定经加索引的高速缓冲组504-M的高速缓冲标签506进行比较。在708处,部分标签匹配逻辑512计算所预测匹配结果514。如果部分标签匹配逻辑512检测到实际未命中518,那么在710处,高速缓冲存储器106从主机102接收MSB部分308。在722处,高速缓冲控制器408使用提取启动信令606-1及提取完成信令610来启动从后备存储器112的数据提取。
另一方面,如果部分标签匹配逻辑512检测到所预测匹配结果514指示所预测命中516,那么在712处,高速缓冲存储器106将来自至少部分匹配的高速缓冲行508的数据行预加载到高速缓冲存储器106的寄存器526中。在714处,高速缓冲存储器106从主机102接收MSB部分308。在716处,缓存控制器408将MSB部分308的第二标签位406与所确定的经加索引的高速缓冲组504-M的高速缓冲标签506进行比较。在718处,标签匹配逻辑532计算匹配结果534。如果高速缓冲控制器408基于匹配结果534(如在图5-2中的536处所描绘)确认所预测命中516,那么在720处,高速缓冲存储器106将所请求数据从寄存器526发送到主机102。
另一方面,如果高速缓冲控制器408确定(在718处)匹配结果534否认所预测命中516(如图5-2中的538处所描绘),那么高速缓冲存储器106经历实际未命中。因此,在722处,高速缓冲控制器408使用提取启动信令606-2启动对后备存储器112的数据提取。在启动数据提取之后,如在返回数据612指示处所说明,高速缓冲存储器106在724完成从后备存储器112的数据提取。在726处,高速缓冲存储器106将从后备存储器获得的所请求数据发送到主机102。
图8以流程图800说明用于设备实施高速缓冲存储器寻址的实例方法。流程图800包含四个框802至808。在实例实施方案中,主机装置102可执行流程图800的操作。在802处,主机的处理器确定与存储器地址相对应的数据正在被程序引用,其中存储器地址包含最高有效位(MSB)部分及最低有效位(LSB)部分。例如,主机102的处理器104可确定与存储器地址210相对应的数据正在被程序引用,其中存储器地址210包含MSB部分308及LSB部分310。在一些状况下,处理器104可正在执行程序,且程序可需要特定存储器位置处的数据以执行某一功能。因此,处理器104可使用对应存储器地址210来识别存储器控制器108的存储器位置。
在804处,主机的存储器控制器基于存储器地址制定对数据的存储器请求。例如,主机102的存储器控制器108可基于存储器地址210来制定数据的存储器请求208。例如,为了适应小于存储器地址210的宽度的地址总线204的总线宽度,存储器控制器108可将存储器地址210拆分成两个或多于两个可顺序地置放在地址总线204上的部分。在一些环境中,处理器104或存储器控制器108,可能包含两者,可解释MSB部分308以对应于行地址的至少一部分,且可解释LSB部分310以对应于存储器请求208所针对的数据的列地址的至少一部分。
在806处,通过互连件将用于存储器请求的第一消息发射到高速缓冲存储器,其中第一消息包含存储器地址的LSB部分。例如,存储器控制器108可通过互连件110将用于存储器请求208的第一消息发射到高速缓冲存储器106,其中第一消息包含存储器地址210的LSB部分310。为此,存储控制器108可驱动互连件110的地址总线204部分上的电压,作为用于包含后备存储器112以及高速缓冲存储器106的存储器装置202的存储命令的一部分。第一消息可至少包含用于存取高速缓冲存储器106的存储器单元阵列410的组索引位。此使得高速缓冲存储器106能够在高速缓冲存储器106已接收到存储器请求208的所有部分之前,且甚至在主机102已发射所有部分之前,开始处理存储器请求208。
在808处,在发射第一消息之后,通过互连件将用于存储器请求的第二消息发射到高速缓冲存储器,其中第二消息包含存储器地址的MSB部分。例如,在发射第一消息之后,存储器控制器108可通过互连件110将用于存储器请求208的第二消息发射到高速缓冲存储器106,其中第二消息包含存储器地址210的MSB部分308。第二消息可包含用于存取存储器单元阵列410的标签位中的至少一些。在接收到第二消息的情况下,高速缓冲存储器106可继续或完成使用标签位检查所请求数据是否命中的操作。
图9以流程图900说明用于设备实施高速缓冲存储器寻址的其它实例方法。流程图900包含三个框902至906。在实例实施方案中,存储器装置202可执行流程图900的操作。在902处,作为存储器请求的一部分从互连件接收存储器地址的最低有效位(LSB)部分,其中LSB部分包含组索引位及第一标签位。例如,高速缓冲存储器106可作为存储器请求208的一部分从互连件110接收存储器地址210的LSB部分310,其中LSB部分310包含组索引位402及第一标签位404。在一些状况下,如果高速缓冲存储器106用作存储器装置202的管理器或控制器,那么高速缓冲存储器106可接收LSB部分310作为用于存储器装置202的存储命令的一部分。在其它状况下,高速缓冲存储器106的高速缓冲控制器408可作为用于存储器装置202的存储器控制单元的一部分来操作。
在904处,使用组索引位来确定经加索引的高速缓冲组,其中经加索引的高速缓冲组包含多个高速缓冲标签及多个高速缓冲行,且其中多个高速缓冲标签中的每一相应高速缓冲标签与多个高速缓冲行中的相应高速缓冲行相对应。例如,高速缓冲存储器106的高速缓冲控制器408可使用组索引位402来确定经加索引的高速缓冲组(例如,高速缓冲组504-M)。经加索引的高速缓冲组504-M可包含多个高速缓冲标签506及多个高速缓冲行508,且多个高速缓冲标签中的每一相应高速缓冲标签506可对应于多个高速缓冲行中的相应高速缓冲行508。例如,高速缓冲控制器408可解码组索引位402以将其映射到与组索引位402相对应的特定高速缓冲组504-M。高速缓冲控制器408还可通过将第一标签位404与经加索引的高速缓冲组504-M的多个高速缓冲标签506中的每一个的一部分进行比较以检测所预测命中516或实际未命中518来开始处理所述第一标签位。
在906处,在确定开始之后,作为存储器请求的一部分从互连件接收存储器地址的最高有效位(MSB)部分,其中MSB部分包含第二标签位。例如,在开始确定经加索引的高速缓冲组504-M之后,高速缓冲存储器106可从互连件110接收存储器地址210的MSB部分308,作为存储器请求208的一部分,其中MSB部分308包含第二标签位406。为此,存储器装置202可将来自互连件110的地址总线204的存储命令锁存到接口412中。然后,在响应于存储器请求208而提供所请求数据之前,高速缓冲控制器408可使用第二标签位406来确认或否认所预测命中516。
对于上文所描述的流程图及作业图,展示及/或描述操作的次序并不打算揭示为限制。可以任何次序组合或重新布置任何数目或组合的所描述过程操作,以实施给定方法或替代方法。还可将操作从所描述方法省略或将其添加到所描述方法中。此外,可以完全或部分重叠的方式来实施所描述操作。
这些方法的各方面可例如在硬件(例如,固定逻辑电路系统或与存储器结合的处理器)、固件或其某一组合中实施。方法可使用图1至6中所展示的设备或组件中的一或多个来实现,其组件可被进一步划分、组合、重新布置等等。这些图中的装置及组件通常表示固件或其动作;硬件,例如电子装置、封装模块、IC芯片或电路;软件;或其组合。所说明设备100及400包含例如主机102、存储器装置202及互连件110。主机102可包含处理器104及存储器控制器108。存储器装置202可包含高速缓冲存储器106、后备存储器112及接口412。高速缓冲存储器106可包含高速缓冲控制器408及存储器单元阵列410。因此,这些图说明能够实施所描述方法的许多可能的系统或设备中的一些。
除非上下文另有规定,否则本文中使用的单词“或”可被视为使用“包含性或”,或允许包含或应用由单词“或”链接的一或多个物项的术语(例如,短语“A或B”可解释为仅允许“A”,仅允许“B”或允许“A”及“B”两者)。同样,如本文中所使用,提及物项列表中的“至少一个”的短语是指那些物项的任何组合,包含单个成员。例如,“以下各项中的至少一个:a、b或c”意欲涵盖:a、b、c、a-b、a-c、b-c及a-b-c以及与多个相同元件的任一组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c及c-c-c或a、b及c的任一其它次序)。此外,在本文中所论述的附图及术语中表示的物项可指示一或多个项目或术语,且因此在本书面描述中可以互换地引用项目及术语的单个或多个形式。
结论
尽管已以特定于某些特征和/或方法的语言描述用于高速缓冲存储器寻址的实施方案,但所附权利要求书的主题不必限于所描述特定特征或方法。而是,公开特定特征及方法作为用于高速缓冲存储器寻址的实例实施方案。
Claims (25)
1.一种存储器设备,其包括:
接口,其经配置以耦合到主机装置的芯片间互连件;
后备存储器,其经配置以存储数据;及
高速缓冲存储器,其耦合到所述后备存储器且经配置以存储由所述后备存储器存储的所述数据的子集,所述高速缓冲存储器包括:
存储器单元阵列;及
高速缓冲控制器,其耦合到所述接口及所述存储器单元阵列,所述高速缓冲控制器经配置以:
经由所述接口从所述芯片间互连件的地址总线的多个导线接收存储器地址的最低有效位LSB部分;
在接收到所述存储器地址的最高有效位MSB部分之前,开始使用所述存储器地址的所述LSB部分索引到所述阵列或存储器单元中;及
在所述索引开始之后,经由所述接口从所述芯片间互连件的所述地址总线的所述多个导线接收所述存储器地址的所述MSB部分。
2.根据权利要求1所述的存储器设备,其中:
所述地址总线具有第一位宽;
所述存储器地址具有第二位宽;且
所述第二位宽比所述第一位宽大。
3.根据权利要求1所述的存储器设备,其中:
所述存储器单元阵列包含多个高速缓冲组;且
所述高速缓冲控制器经配置以通过以下操作开始索引到所述存储器单元阵列:
使用所述存储器地址的所述LSB部分索引到所述多个高速缓冲组以确定所述多个高速缓冲组的经加索引的高速缓冲组。
4.根据权利要求3所述的存储器设备,其中:
所述存储器地址的所述LSB部分包括组索引位及第一标签位;且
所述存储器地址的所述MSB部分包括第二标签位。
5.根据权利要求4所述的存储器设备,其中:
所述高速缓冲存储器包括多个高速缓冲标签;
所述存储器单元阵列包含多个高速缓冲行,所述多个高速缓冲行中的每一相应高速缓冲行对应于所述多个高速缓冲标签中的相应高速缓冲标签;且
所述高速缓冲控制器经配置以:
使用所述组索引位确定所述经加索引的高速缓冲组;及
基于所述经加索引的高速缓冲组,使用所述第一标签位执行部分标签匹配操作,以确定所预测匹配结果。
6.根据权利要求5所述的存储器设备,其中所述高速缓冲控制器经配置以:
响应于对应于实际未命中的所述所预测匹配结果,在处理所述MSB部分的所述第二标签位之前启动从所述后备存储器的数据提取。
7.根据权利要求5所述的存储器设备,其中所述高速缓冲控制器经配置以:
响应于对应于所预测命中的所述所预测匹配结果,用来自所述经加索引的高速缓冲组的至少一个高速缓冲行的数据预加载所述高速缓冲存储器的至少一个寄存器。
8.根据权利要求7所述的存储器设备,其中所述高速缓冲控制器经配置以:
基于所述经加索引的高速缓冲组,使用所述第二标签位执行标签匹配操作,以确定匹配结果;
响应于所述匹配结果确认所述所预测命中,经由所述接口将所述数据的至少一部分从所述高速缓冲存储器的所述至少一个寄存器传送到所述芯片间互连件;且
响应所述匹配结果,否认所述所预测命中,
启动从所述后备存储器的数据提取;
完成从所述后备存储器的所述数据提取;且
经由所述接口将数据从所述数据提取传送到所述芯片间互连件。
9.根据权利要求1所述的存储器设备,其中:
所述后备存储器包括主存储器,所述主存储器包含动态随机存取存储器DRAM或高带宽存储器HBM或两者中的至少一个;且
所述高速缓冲存储器包括静态随机存取存储器SRAM。
10.根据权利要求1所述的存储器设备,其中所述芯片间互连件经配置以根据至少一种协议进行操作,其中每一存储器地址使用两个或多于两个消息通过所述芯片间互连件传播,其中每一消息包含所述存储器地址的至少一个不同部分。
11.根据权利要求10所述的存储器设备,其中所述至少一种协议与至少一种双倍数据速率DDR存储器标准相称,在所述标准中,响应于时钟信号的下降沿及上升沿来提取数据。
12.根据权利要求1所述的存储器设备,其进一步包括:
包含所述接口、所述后备存储器和所述高速缓冲存储器的离散装置。
13.根据权利要求12所述的存储器设备,其中:
所述接口经配置以根据至少一个双倍数据速率DDR存储器标准而操作;
所述后备存储器包括动态随机存取存储器DRAM;及
所述高速缓冲存储器包括静态随机存取存储器SRAM。
14.一种用于存储器操作的方法,其包括:
作为存储器请求的一部分,从芯片间互连件的地址总线的多个导线接收存储器地址的最低有效位LSB部分,所述LSB部分包含组索引位及第一标签位;
在接收到所述存储器地址的最高有效位MSB部分之前,使用所述组索引位来确定经加索引的高速缓冲存储器的高速缓冲组,所述经加索引的高速缓冲组包含多个高速缓冲标签及多个高速缓冲行,所述多个高速缓冲标签的每一相应高速缓冲标签对应于所述多个高速缓冲行中的相应高速缓冲行;及
在所述确定开始之后,作为所述存储器请求的一部分从所述芯片间互连件的所述地址总线的所述多个导线接收所述存储器地址的所述MSB部分,所述MSB部分包含第二标签位。
15.根据权利要求14所述的方法,其进一步包括:
将所述第一标签位与所述经加索引的高速缓冲组的所述多个高速缓冲标签进行比较;及
至少部分地基于比较所述第一标签位来响应于所述存储器请求而识别所述高速缓冲存储器中的数据。
16.根据权利要求15所述的方法,进一步包括:
在与所述第一标签位进行所述比较之后,将所述第二标签位与所述经加索引的高速缓冲组的所述多个高速缓冲标签中的至少一个高速缓冲标签进行比较;及
至少部分地基于比较所述第二标签位,响应于所述存储器请求,将所识别的所述数据从所述高速缓冲存储器传送到所述芯片间互连件。
17.根据权利要求16所述的方法,其进一步包括:
至少部分地基于比较所述第二标签位,执行替换程序以将满足所述存储器请求的数据从后备存储器移动到所述高速缓冲存储器。
18.根据权利要求16所述的方法,其进一步包括:
在比较所述第二标签位完成之前,将所识别的所述数据从所述高速缓冲存储器预加载到至少一个寄存器。
19.根据权利要求14所述的方法,其进一步包括:
将所述第一标签位与所述经加索引的高速缓冲组的所述多个高速缓冲标签进行比较;及
至少部分地基于比较所述第一标签位,启动从后备存储器的数据提取以用于获得满足所述存储器请求的数据。
20.根据权利要求19所述的方法,其进一步包括:
完成从所述后备存储器的所述数据提取以获得所提取数据;及
将所述所提取数据作为满足所述存储器请求的所述数据传送到所述芯片间互连件。
21.根据权利要求19所述的方法,其中所述启动是在接收到所述存储器地址的所述MSB部分之前执行。
22.一种用于存储器操作的方法,其包括:
在主机装置的存储控制器处,基于存储器地址制定对数据的存储器请求,所述存储器地址包含最低有效位LSB部分和最高有效位MSB部分;
通过芯片间互连件的地址总线的多个导线将用于所述存储器请求的第一消息发射到高速缓冲存储器,所述第一消息包含所述存储器地址的所述LSB部分;及
在所述发射所述第一消息之后,通过所述芯片间互连件的所述地址总线的所述多个导线将用于所述存储器请求的第二消息发射到所述高速缓冲存储器,所述第二消息包含所述存储器地址的所述MSB部分。
23.根据权利要求22所述的方法,其中:
所述LSB部分包含组索引位及低阶标签位;且
所述MSB部分包含高阶标签位。
24.根据权利要求22所述的方法,其进一步包括:
在所述发射所述第一消息与所述发射所述第二消息之间,通过所述芯片间互连件,将用于另一存储器请求的另一消息发射到所述高速缓冲存储器。
25.根据权利要求22所述的方法,其中:
所述第一消息包括行命令,且所述发射所述第一消息包括发射所述行命令及所述存储器地址的所述LSB部分;及
所述第二消息包括列命令,且所述发射所述第二消息包括发射所述列命令及所述存储器地址的所述MSB部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/846,266 US11436144B2 (en) | 2020-04-10 | 2020-04-10 | Cache memory addressing |
US16/846,266 | 2020-04-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515470A CN113515470A (zh) | 2021-10-19 |
CN113515470B true CN113515470B (zh) | 2024-07-26 |
Family
ID=78006369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110345344.6A Active CN113515470B (zh) | 2020-04-10 | 2021-03-31 | 高速缓冲存储器寻址 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11436144B2 (zh) |
CN (1) | CN113515470B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436144B2 (en) | 2020-04-10 | 2022-09-06 | Micron Technology, Inc. | Cache memory addressing |
US20220405209A1 (en) * | 2021-06-21 | 2022-12-22 | Intel Corporation | Multi-stage cache tag with first stage tag size reduction |
US12072761B2 (en) * | 2022-06-02 | 2024-08-27 | Micron Technology, Inc. | Memory sub-system addressing for data and additional data portions |
US11899586B1 (en) * | 2022-09-28 | 2024-02-13 | Synopsys, Inc. | Energy efficient tag partitioning in cache memory |
US20240220415A1 (en) * | 2022-12-29 | 2024-07-04 | Advanced Micro Devices, Inc. | Tiered memory caching |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449694B1 (en) * | 1999-07-27 | 2002-09-10 | Intel Corporation | Low power cache operation through the use of partial tag comparison |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809562A (en) * | 1996-05-20 | 1998-09-15 | Integrated Device Technology, Inc. | Cache array select logic allowing cache array size to differ from physical page size |
US6138209A (en) * | 1997-09-05 | 2000-10-24 | International Business Machines Corporation | Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof |
US7966462B2 (en) * | 1999-08-04 | 2011-06-21 | Super Talent Electronics, Inc. | Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips |
US7243204B2 (en) * | 2003-11-25 | 2007-07-10 | International Business Machines Corporation | Reducing bus width by data compaction |
US7478190B2 (en) * | 2006-02-10 | 2009-01-13 | University Of Utah Technology Commercialization Office | Microarchitectural wire management for performance and power in partitioned architectures |
US20090013148A1 (en) * | 2007-07-03 | 2009-01-08 | Micron Technology, Inc. | Block addressing for parallel memory arrays |
US20140281116A1 (en) * | 2013-03-15 | 2014-09-18 | Soft Machines, Inc. | Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits |
KR20150009883A (ko) * | 2013-07-17 | 2015-01-27 | 삼성전자주식회사 | 캐시 메모리 시스템 및 그 동작방법 |
US9529727B2 (en) * | 2014-05-27 | 2016-12-27 | Qualcomm Incorporated | Reconfigurable fetch pipeline |
US9514061B1 (en) * | 2015-05-20 | 2016-12-06 | Qualcomm Incorporated | Method and apparatus for cache tag compression |
US20180059933A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Electrically-Buffered NV-DIMM and Method for Use Therewith |
CN108805276B (zh) * | 2017-06-16 | 2020-09-22 | 上海兆芯集成电路有限公司 | 处理器、用于操作处理器的方法和计算机可用介质 |
US11436144B2 (en) * | 2020-04-10 | 2022-09-06 | Micron Technology, Inc. | Cache memory addressing |
-
2020
- 2020-04-10 US US16/846,266 patent/US11436144B2/en active Active
-
2021
- 2021-03-31 CN CN202110345344.6A patent/CN113515470B/zh active Active
-
2022
- 2022-08-30 US US17/823,480 patent/US11768770B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449694B1 (en) * | 1999-07-27 | 2002-09-10 | Intel Corporation | Low power cache operation through the use of partial tag comparison |
Non-Patent Citations (4)
Title |
---|
A 2-slot time-division multiplexing (TDM) interconnect network for gigascale integration (GSI);Joshi A;《Proceedings of the 2004 international workshop on System level interconnect prediction》;64-68 * |
Heterogeneous die stacking of SRAM row cache and 3-D DRAM: An empirical design evaluation;Woo D H;《2011 IEEE 54th International Midwest Symposium on Circuits and Systems (MWSCAS)》;1-4 * |
Interconnect design considerations for large nuca caches;Muralimanohar N;《ACM SIGARCH Computer Architecture News》;369-380 * |
Partial address directory for cache access;Liu L;《IEEE Transactions on Very Large Scale Integration (VLSI) Systems》;226-240 * |
Also Published As
Publication number | Publication date |
---|---|
US20210318958A1 (en) | 2021-10-14 |
US20230061668A1 (en) | 2023-03-02 |
CN113515470A (zh) | 2021-10-19 |
US11768770B2 (en) | 2023-09-26 |
US11436144B2 (en) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113515470B (zh) | 高速缓冲存储器寻址 | |
US10896136B2 (en) | Storage system including secondary memory that predicts and prefetches data | |
US5070502A (en) | Defect tolerant set associative cache | |
US6496902B1 (en) | Vector and scalar data cache for a vector multiprocessor | |
US6564306B2 (en) | Apparatus and method for performing speculative cache directory tag updates | |
US5586294A (en) | Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer | |
US5500950A (en) | Data processor with speculative data transfer and address-free retry | |
US20150143057A1 (en) | Adaptive data prefetching | |
US20100169578A1 (en) | Cache tag memory | |
TWI451330B (zh) | 快取記憶體系統以及快取資料取代之方法 | |
US11934317B2 (en) | Memory-aware pre-fetching and cache bypassing systems and methods | |
US6715035B1 (en) | Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency | |
US6950906B2 (en) | System for and method of operating a cache | |
US20120215959A1 (en) | Cache Memory Controlling Method and Cache Memory System For Reducing Cache Latency | |
US20060143400A1 (en) | Replacement in non-uniform access cache structure | |
US11354246B2 (en) | Memory-side transaction context memory interface systems and methods based on clock cycles and wires | |
US10877889B2 (en) | Processor-side transaction context memory interface systems and methods | |
CN116360674A (zh) | 写入请求缓冲器 | |
US6496904B1 (en) | Method and apparatus for efficient tracking of bus coherency by using a single coherency tag bank | |
US20100057999A1 (en) | Synchronization mechanism for use with a snoop queue | |
US11645148B2 (en) | Method and apparatus for caching MTE and/or ECC data | |
US20240176697A1 (en) | Controller-Level Memory Repair | |
US20120151150A1 (en) | Cache Line Fetching and Fetch Ahead Control Using Post Modification Information | |
CN114090080A (zh) | 指令高速缓存器、指令读取方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |