CN113490921A - 用于收集冷页的装置、方法和系统 - Google Patents
用于收集冷页的装置、方法和系统 Download PDFInfo
- Publication number
- CN113490921A CN113490921A CN201980093104.2A CN201980093104A CN113490921A CN 113490921 A CN113490921 A CN 113490921A CN 201980093104 A CN201980093104 A CN 201980093104A CN 113490921 A CN113490921 A CN 113490921A
- Authority
- CN
- China
- Prior art keywords
- memory
- page index
- index bitmap
- page
- cache
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/1024—Latency reduction
-
- 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/1048—Scalability
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
Abstract
一种用于高效地标识并跟踪冷存储器页的装置。装置包括:存储器,用于存储存储器页;一个或多个处理器核,用于通过发布对存储器的访问请求来访问存储在存储器中的存储器页;以及页索引位映射,用于跟踪由一个或多个处理器核作出的、对存储在存储器中的存储器页的访问。被跟踪的访问能够用于标识不频繁地被访问的存储器页,其中,不频繁地被访问的存储器页从存储器移除,并被存储在次级存储中。
Description
技术领域
本文中描述的本发明的实施例总体上关于计算机处理系统中的存储器的高效利用。具体地,本公开关于用于标识并跟踪冷存储器页的计算机架构扩展。
背景技术
冷存储器页(或简称冷页)是指不频繁地被访问和/或不是正被活跃地使用的存储器页。将冷页保持在存储器中占用有价值的存储器空间。由于诸如机械硬盘和固态驱动器之类的次级存储选项的每容量成本远低于系统存储器(例如,DDR4),因此将冷页存储在次级存储中而不是系统存储器中常常是更经济的。然而,高效地标识并跟踪冷页已是挑战。使用诸如页表之类的现有分页结构来跟踪冷页的常规解决方案在存储空间和处理时间这两方面都趋于非常低效。例如,页表的典型的8字节的页表条目(PTE)仅跟踪单个4千字节(KB)的存储器页。在其中存储器的千兆字节或甚至兆兆字节常被使用的现代系统中,该方式导致不得不被处理以标识所有被跟踪的冷页的庞大数量的PTE。在这样做时,通过从存储器移动所标识的冷页而获得的性能增益即便不是全部被大的计算资源消耗否定,大多数性能增益也被大的计算资源消耗否定。因此,需要更好的解决方案来解决该问题。
附图说明
通过参考用于说明本发明的实施例的以下描述和附图,可最好地理解本发明。在附图中:
图1图示本发明的各方面可在其上实现的系统实施例;
图2A-图2B是图示页索引位映射高速缓存的不同实施例的细节的框图;
图3A-图3B是图示根据一些实施例的页索引位映射高速缓存的条目的框图;
图4是将由各存储结构与页索引位映射高速缓存的实施例覆盖的地址空间尺寸进行比较的表;
图5是图示根据实施例的页索引位映射高速缓存的逻辑和操作的框图;
图6是图示根据实施例的用于回收页索引位映射高速缓存中的条目的逻辑和操作的流程图;
图7是在正常高速缓存与页索引位映射高速缓存的实施例之间将在写入未命中期间的存储器访问进行比较的表;
图8A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图;
图8B是图示根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图;
图9是根据本发明的实施例的具有集成存储器控制器和图形器件的单核处理器和多核处理器的框图;
图10图示根据本发明的一个实施例的系统的框图;
图11图示根据本发明的实施例的第二系统的框图;
图12图示根据本发明的实施例的第三系统的框图;
图13图示根据本发明的实施例的芯片上系统(SoC)的框图;并且
图14图示根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文中描述了用于高效地标识并跟踪冷存储器页的装置、方法和系统的实施例。在下列描述中,阐述众多具体细节以提供对本发明的实施例的透彻理解。然而,相关领域技术人员将会领会,可以在没有这些具体细节中的一个或多个具体细节的情况下实施本发明,或者利用其他方法、组件、材料等来实施本发明。在其他实例中,未详细示出或描述公知的结构、材料或操作,以避免使本发明的各方面模糊。
贯穿本说明书对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在贯穿本说明书的各个位置的出现不必全部指代同一个实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。为清楚起见,本文附图中的单独的组件可通过附图中它们的标签而不是通过特定的附图标记来引用。
本公开的一方面涉及用于高效地存储近期被访问的存储器页的页状态(冷或非冷)的页索引位映射高速缓存。页索引位映射高速缓存对连接(例如,网格互连)监测由插槽的各种组件(例如,处理器或核)作出的、对存储在存储器中的页的访问请求。在至少一些实施例中,页索引位映射高速缓存的特性在于高速缓存尺寸与其覆盖的地址空间的尺寸之间的大比率。该特性将页索引位映射高速缓存与常规解决方案(诸如,使用页表条目(PTE)来跟踪页状态的那些解决方案)区分开。例如,根据实施例,页索引位映射高速缓存包括多个8字节高速缓存行条目,每个8字节高速缓存行条目都能够跟踪64个页的状态。假定4千字节(KB)的页尺寸,则每个页索引位映射高速缓存条目因此能够覆盖地址空间的256KB。将这与在其中每个8字节的PTE提供仅一个4KB页的状态的常规解决方案相比,页索引位映射高速缓存覆盖多64倍的地址空间,并因此空间效率高64倍。处理器核获得相同的页状态信息所需处理的更少数据也意味着需要较少计算资源。
本发明的另一方面涉及优化的写入未命中策略,该优化的写入未命中策略调度存储器写入/读取以便仅当必要时和/或当具有对存储器带宽的最小影响时才驱逐和填充页索引位映射高速缓存条目。这进而使对于由系统中的其他组件作出的正常存储器读取和写入访问的扰乱和/或添加的等待时间最小化。当位映射高速缓存中的经高速缓存的数据被转储清除到存储器中的预留的页索引位映射中时,诸如操作系统和应用之类的消耗方可快速读取并利用冷页索引。此外,诸如云销售商之类的用户也可使用冷页信息来对云工作负载进行DDR4/次级存储容量规划和可缩放性分析,诸如,作出将冷页存储在次级存储上而不是存储在存储器中的决策。
图1图示本发明的各方面可在其上实现的系统实施例。在至少一些实施例中,系统100是插槽,该插槽包括一个或多个处理器核110以及构成系统存储器的一个或多个存储器模块140。存储器模块140中的每个存储器模块可由对应的存储器控制器330控制。存储在存储器模块140中的存储器页145、146可由处理器核110通过读取请求或写入请求来访问。此外,存储器模块140中的至少一些存储器模块可包括用于存储页索引位映射150的预留空间。在一个实施例中,页索引位映射150分布在一个或多个存储器模块140之间。页索引位映射150可存储存储器中的所有页的页状态。替代地,页索引位映射150可存储存储器中的页的仅子集的页状态。页的页状态可用于确定页是否是冷的。根据实施例,页索引位映射150包括位的数组。数组中的位中的每个位与不同的页相对应,并且存储那个页的状态。页索引位映射150可由操作系统(OS)160和/或在OS上运行的应用(未示出)访问,以标识冷存储器页。OS 160和/或应用可通过扫描或搜索页索引位映射150以获得具有未经置位的状态位的页来标识冷页。OS 160和/或应用可主动地将所标识的冷页从存储器模块140移动到比系统存储器更经济且性能关键性更低的次级存储180(例如,硬盘驱动器(HDD)或固态驱动器(SSD))。这进而释放系统存储器以存储更频繁地被访问的页。系统100中的各种元件可通过网格互连112彼此通信。虽然页索引位映射150示出为被存储在存储器模块140中,但是将理解,在一些实施例中,页索引位映射150可实现为与系统存储器分开的独立式存储组件。
根据实施例,如果用户在基本输入/输出系统(BIOS)设置菜单中启用页索引位映射选项,则可在系统引导期间经由BIOS为存储器中的空间预留页索引位映射150。在一个实施例中,所预留的存储器的尺寸(按位计)等于(按字节计的插槽中的总存储器尺寸)/(按字节计的页的尺寸)。例如,对于现代OS常用的4KB的页尺寸,对于32MB存储器,预留存储器的尺寸将是8K位。
在一个实施例中,位映射中的位偏移被用作用于标识页的页索引,并且位的值被用于指示页状态。例如,位的值“0”可指示对应的页是冷的,而位的值“1”指示相反情况。
在至少一些实施例中,系统100进一步包括页索引位映射高速缓存120。页索引位映射高速缓存可以是低开销高速缓存,该低开销高速缓存观察和/或检测由处理器核110作出的、对存储器控制器130(或存储器模块140中的位置)的存储器读取/写入请求。页索引位映射高速缓存可周期性地将所收集的页状态转储清除到预留的页索引位映射150中。
图2A是图示根据实施例的页索引位映射高速缓存的细节的框图。页索引位映射高速缓存120可由高速缓存控制器(未示出)管理。页索引位映射高速缓存120可包括用于存储以下各项的各种存储:近期被请求的页的页状态210、高速缓存配置设置220、存储器交错规则230、以及从页索引位映射150接收的数据。用于近期被请求的页的页状态210的存储可包括多个条目,每个条目存储多个页的页状态。条目中的每个条目可包括一个或多个高速缓存行。
高速缓存配置设置220控制页索引位映射高速缓存的操作。在一些实施例中,配置设置可由用户、操作系统和/或应用设置,并且通过计算机系统的BIOS来配置。可配置设置的示例包括存储器页的尺寸、系统存储器的尺寸、存储器中的预留的页索引位映射的基础存储器地址等。
如上文参考图1所描述的,取决于配置,预留的页索引位映射可分布在多个存储器模块之间。交错规则230由页索引位映射高速缓存或对应的高速缓存控制器使用,用于确定在写回情形中来自被驱逐的高速缓存条目的数据被发送到的适当的目标存储器控制器和/或通道。
数据240是指从预留的页索引位映射150检取的数据。数据240可被存储在数据寄存器中。根据一些实施例,页索引位映射高速缓存120在尺寸上是相对小的,并且具有有限的高速缓存条目来捕捉和/或跟踪近期被请求的存储器页(即,在某个时间帧内被请求的存储器页)的页状态。为了避免使被高速缓存的页状态中的任何页状态溢出和/或覆写被高速缓存的页状态中的任何页状态,页索引位映射高速缓存必须周期性地将经高速缓存的页状态转储清除到更大的预留的页索引位映射150。这也可以通过驱逐机制来实现。根据实施例,为了对经高速缓存的页状态进行转储清除或驱逐,页索引位映射高速缓存从预留页索引位映射检取现有的位映射,并且执行逻辑OR(“或”)以将经高速缓存的页状态与所存储的页状态合并。这样做保留了已经由页索引位映射捕捉的页状态。
虽然用于配置设置220、交错规则230和现有位映射数据240的存储示出为被集成为页索引位映射高速缓存120的部分,但是将理解,这些元件中的任何元件或所有这些元件可被存储在页索引位映射高速缓存120外部,诸如,被存储在寄存器中。图2B是图示页索引位映射高速缓存120的替代实施例的框图,在其中前述元件被存储在页索引位映射高速缓存120外部。
如上文所描述,页索引位映射高速缓存可包括多个条目。条目中的每个条目可占据一个或多个高速缓存行。图3A是图示根据页索引位映射高速缓存的实施例的条目的框图。根据实施例,页索引位映射高速缓存的每个条目310包括一个或多个状态位320、脏位322、以及多位的标签324。一个或多个状态位320中的每个状态位与不同的存储器页对应,并且存储那个页的状态(即,冷/非冷)。在一些实施例中,页状态位跟踪页是否已在给定的时间帧内被请求。例如,当位映射高速缓存或其控制器检测到访问存储器中的页的请求(例如,读取页或向页写入的请求)时,在页索引位映射高速缓存中对与所请求的存储器页对应的状态位置位。因此,经置位的状态位充当与该状态位对应的页不为冷的指示,因为该页已在给定的时间帧内被访问。
条目的脏位322用于指示那个条目中的状态位中的任何状态位是否已被修改。根据实施例,每当条目被初始化和/或被分配时,该条目的脏位被清除。当在条目的回收期间条目中的数据已被驱逐或被保存到存储器中的页索引位映射中时,该条目的脏位也可被清除。每当条目的状态位中的任何状态位被置位以跟踪所观察的存储器请求时,那个条目的脏位也被置位。
标签324用于对页索引位映射高速缓存中的条目进行索引。根据实施例,存储器中的每个页与M位的存储器地址326相关联。存储器地址的、包括X数量个的位(X个位)的部分被用作标签。当条目在页索引位映射高速缓存中被分配以跟踪检测到的存储器页请求时,所请求的存储器地址的X个位被存储为所分配条目的标签324。此外,所请求的存储器地址的、包括Y个数量的位(Y个位)的不同部分被用作偏移,该偏移用于确定条目中的2Y个状态位中的哪些将被用于跟踪所访问的页的状态。一旦适当的状态位被确定,那个状态位就被置位以指示对应的页被访问。如上所述,当状态位在条目中被置位时,该条目的脏位也被置位。
图3B示出根据实施例的页索引位映射高速缓存的示例性条目。根据实施例,每个存储器页与64位的存储器地址相关联。当存储器请求被检测到时,所请求的存储器地址346被用于确定页索引位映射高速缓存中的适当的状态位并对该适当的状态位置位。例如,存储器地址的位{63:18}被用于与位映射高速缓存中的条目的标签344匹配。当发现匹配的条目330时,所请求的存储器地址的位{17:12}随后被用于确定与所请求的页对应的匹配的条目中的状态位。例如,如果所请求的地址的位{17:12}全都为0,则匹配的条目中的状态位0被置位。另一方面,如果位{17:12}全都为1,则状态位63被置位。在该特定实施例中,高速缓存尺寸与由位映射高速缓存覆盖的地址空间尺寸的比率为1:32768。这意味着1KB的位映射高速缓存能够覆盖32MB的地址空间(1KB*8位/B*4K/位)。这个大比率允许仅以相对小的位映射高速缓存来跟踪大量的页。该大比率还意味着页索引位映射高速缓存具有对存储器带宽的使用的较小影响,因为它较不频繁地将条目驱逐到存储器。
图4是比较由各种存储结构覆盖的地址空间尺寸的表,各种存储结构包括末级高速缓存(LLC)、转换后备缓冲器(TLB)、以及上文描述的页索引位映射高速缓存的特定实施例。具体地,在LLC的情况下,高速缓存空间的每个1MB覆盖地址空间的1MB。在典型TLB的情况下,高速缓存空间的每个1MB覆盖地址空间的512MB。相比之下,页索引位映射高速缓存的每个1MB覆盖地址空间的32768MB。
在至少一些实施例中,页索引位映射高速缓存的写入策略与正常高速缓存(例如,LLC)的写入策略类似或完全相同。换言之,页索引位映射高速缓存当在高速缓存中发现匹配的条目(即,写入命中)时使用写回策略,并且当没有发现匹配的条目(即,写入未命中)时使用写入分配策略。在其他实施例中,可使用优化的写入策略,该优化的写入策略避免将等待时间加到正常的存储器读取和写入。具体地,在优化的写入策略下,位映射高速缓存对于写入命中维持正常的写回策略,但是在写入未命中期间切换到优化的写入未命中策略。在优化的策略下,页索引位映射高速缓存通过简单地发现未被分配的条目并对适当的状态位置位以跟踪新被检测到的访问来处置写入未命中。最初,页索引位映射高速缓存的所有条目都未被分配,并且它们的位被清除。随后,随着系统运行一些时间,未被分配的条目的数量朝阈值T(例如,总条目的10%)下降。当被分配的条目的数量达到阈值时,页索引位映射高速缓存将开始预期未来使用而伺机回收条目。伺机在此意味着仅当存储器带宽使用不为高时,页索引位映射高速缓存才将发起将条目写回到存储器。然而,在其中所有条目都被分配的极端情形下,无论存储器带宽使用如何,位映射高速缓存都将回收条目。
根据实施例,回收被分配的高速缓存条目包括两个存储器请求。第一存储器请求从存储器中的预留的页索引位映射中的位置读取数据,并将所读取的数据作为数据240存储在页索引位映射高速缓存或数据寄存器中。页索引位映射中的、数据从其读取的位置基于预留的页索引位映射的基础存储器地址加上高速缓存条目的标签来确定。此后,第二存储器请求将新数据写回到预留的页索引位映射中的同一位置中。新数据包括高速缓存条目中的状态位与数据240之间的按位“或”操作的结果。
根据实施例,要回收的高速缓存行可随机地或基于LRU(近期最少使用)策略被选择,该LRU策略与正常高速缓存的LRU策略类似。存储器带宽使用是否为高可通过将存储器带宽使用与经验阈值进行比较来确定。替代地或附加地,存储器带宽使用可基于存储器读取或写入是否发生在“指数后退”时间窗口内来确定。由于回收操作可在任何时刻被调度且如果未被分配的高速缓存行可用则不存在对写入未命中的存储器写回,因此页索引位映射高速缓存一般可避免与由系统中的其他处理器核发布的正常存储器读取/写入请求竞争。
图7是在正常高速缓存与根据实施例的页索引位映射高速缓存之间将在写入未命中期间的存储器访问进行比较的表。如所图示,在写入未命中的情况下,由正常高速缓存执行的存储器访问的数量为2,而只要存在可用的未被分配的条目,页索引位映射高速缓存就不进行存储器访问。
图5是图示根据实施例的页索引位映射高速缓存的逻辑和操作的流程图。方法500可由页索引位映射高速缓存和/或对应的高速缓存控制器实现。方法500开始于开始框并继续进行到框502,在框502处,检测访问存储器页的请求。页索引位映射高速缓存可对诸如网格互连之类的连接监测寻求访问存储在存储器中的存储器页的任何存储器请求。在框504处,基于所请求的页的存储器地址来作出关于所请求的页是否已经与页索引位映射高速缓存中的条目相关联的判定。该判定可包括:扫描页索引位映射高速缓存的条目,以发现具有与所请求的页的存储器地址中的标签匹配的标签的条目。如果在页索引位映射高速缓存中发现了匹配的条目(即,写入命中),则在框506处,对与所请求的页对应的匹配的条目中的状态位置位。如上文关于图3A和图3B所描述,与所请求的页对应的状态位可基于存储器地址的部分(即,Y个位)来确定。接下来,在框508处,检查匹配的条目的脏位来看它是否已经被置位。如果是,则方法结束。否则,在框516处,对匹配的条目的脏位置位以指示该匹配的条目被修改。
往回参见框504,如果在页索引位映射高速缓存中没有发现与所请求的页相关联的条目(即,写入未命中),则在框512处,作出关于未被分配的条目是否可用于跟踪所请求的页的判定。在框514处,如果未被分配的条目可用,则将该未被分配的条目设置为与所请求的页相关联。这可包括:清除未被分配的条目的脏位;将未被分配的条目的标签设置为所请求的页的存储器地址中的标签;以及对未被分配的条目中的、与所请求的页对应的状态位置位。然而,如果没有未被分配的块可用,则在框510处,条目被回收,使得它可被用于跟踪所请求的页。回收可包括:驱逐或转储清除页索引位映射高速缓存中的一个或多个条目,由此引起这一个或多个条目的相应的状态位写回到预留的页索引位映射中。
图6是图示根据实施例的用于回收页索引位映射高速缓存中的条目的逻辑和操作的流程图。方法600可由页索引位映射高速缓存和/或其控制器、以及由其他合适的硬件和/或软件系统实现。方法600开始于开始框并继续进行到框602,在框602中,检测检查高速缓存使用的请求。这可包括:检测分配新条目或回收页索引位映射高速缓存中的一个或多个现有条目的请求。在框604处,作出关于任何未被分配的条目是否可用的判定。如果没有未被分配的条目可用,则选择一个或多个条目用于驱逐。可使用诸如近期最少使用(LRU)之类的任何合适的驱逐规则来选择驱逐候选者。在框608处,被选为驱逐候选者的条目中的数据被写回或存储到存储器中。写回可包括:首先从存储器中的预留的页索引位映射检取现有数据(例如,状态位);以及在被选择用于驱逐的条目中的数据与从预留的页索引位映射检取的数据之间执行逻辑“或”操作。接下来在框612处,在被选择用于驱逐的条目中的数据已被存储到预留的页索引位映射中之后,回收所选择的条目。回收可包括:对现在被驱逐的条目的脏位、标签和/或状态位进行清除和/或归零。根据实施例,用于存储被驱逐的条目的目标存储器地址是预留的页索引位映射的基础存储器地址(其作为配置设置(例如,220)的部分)加上被驱逐的条目的标签(例如,条目330的位[63:18])。对于被驱逐的高速缓存行被发送到的目标存储器控制器或通道,它基于交错规则(例如,230)来确定。
往回参见框604,如果一个或多个未被分配的条目在页索引位映射高速缓存中是可用的,则在框606处,将未被分配的条目的数量与预定阈值进行比较。阈值可在系统的引导或初始化期间被设置。此外,阈值可由OS或应用通过BIOS来设置,并且被保存为配置设置。根据实施例,如果未被分配的条目的数量大于预定阈值,则方法结束。另一方面,如果未被分配的条目的数量小于预定阈值(其是位映射高速缓存可能正接近其容量的指示),则在框610处,作出关于当前存储器带宽使用是否为高的判定。这可基于将当前存储器带宽使用与预定的带宽使用阈值进行比较来确定。再一次地,该阈值可由OS和/或应用经由BIOS设置,并被保存为配置设置的部分。如果在框610中的判定是肯定的,则存储器带宽的任何附加的使用会不利地影响系统的总体性能。由此,页索引位映射高速缓存暂缓将任何经高速缓存的数据写入到预留的页索引位映射中,并且方法返回到框604。然而,如果存储器带宽使用不为高(其是多余存储器带宽的可用性的指示),则方法600继续到框608,在框608处,选择一个或多个条目用于驱逐。这包括:将被高速缓存在所选择条目中的数据写入到预留的页索引位映射中。如上文所述,可通过例如逻辑“或”操作将所选择的条目中的数据与页索引位映射中的现有数据合并。
根据实施例的使用流程的示例如下:
1)用户经由BIOS设置菜单启用页索引位映射高速缓存。
2)OS(例如,从高级配置和功率接口(ACPI)表)获得逐插槽预留位映射存储器的基址和尺寸。
3)OS清除逐插槽预留位映射存储器。
4)等待持续时间(例如,10秒)。
5)OS转储清除并清除位映射高速缓存。
6)OS读取逐插槽预留位映射存储器以获得冷页索引。
7)冷页索引在各种情况下被使用。
a.OS将冷页中的一些冷页从存储器(例如,DDR4)迁移到次级存储(HDD/SSD)以为更多工作负载腾出空间。
b.在线估计工作负载的工作集尺寸。
8)返回步骤3。
根据实施例,在具有非均匀存储器访问(NUMA)特性的系统中,整个系统地址空间被分割为:第一插槽中的[0,A1)、第二插槽中的[A1,A2)、…、第n插槽中的[An-1,An)。结果,由第n插槽位映射中的第x位指示的页索引为:x+An-1的位{63:12},其中,A0=0。在具有均匀存储器访问特性的系统中,交错规则被用于算出逐插槽位映射的哪些位要被组合以获得冷页索引。
本发明的示例是一种装置,其包括:一个或多个处理器核,用于通过发布访问请求来访问存储在存储器中的存储器页;以及页索引位映射,用于跟踪由一个或多个处理器核作出的、对存储在存储器中的存储器页的访问。页索引位映射可存储被跟踪的访问。被跟踪的访问可以可用于标识不频繁地被访问的存储器页。所标识的不频繁地被访问的存储器页可从存储器移除并被存储到次级存储中。该装置可进一步包括页索引位映射高速缓存,用于跟踪由处理器核作出的、对存储器页的近期访问。被跟踪的近期访问后续可被存储到页索引位映射中。为了避免占用存储器带宽,仅当存储器的存储器带宽使用低于带宽使用阈值时或当页索引位映射高速缓存需要回收条目以跟踪新访问时(例如,当不再有可用的未被分配的条目时),被跟踪的近期访问可被存储到页索引位映射中。页索引位映射高速缓存可包括多个条目。这些条目中的每个条目可包括多个状态位,多个状态位中的每个状态位与不同的存储器页对应,并且用于指示对应的存储器页近期是否已由处理器核访问。条目中的每个条目可进一步包括脏位,用于指示该条目的状态位中的任何状态位是否已被修改。该装置还可包括用于存储用于配置页索引位映射高速缓存的配置设置的存储。配置设置可(例如,由用户)通过BIOS来配置。页索引位映射可被存储在存储器中。在其中存储器包括多个存储器模块的情况下,页索引位映射可分布在多个存储器模块之间,使得存储器模块中的每个存储器模块可存储页索引位映射的部分。该装置还可包括用于存储一个或多个交错规则的存储,这一个或多个交错规则用于确定存储器模块中的、被跟踪的近期访问应当被发送到的一个或多个存储器模块,使得被跟踪的近期访问能够被存储在页索引位映射的适当部分中。该装置可进一步包括用于存储从页索引位映射检取的先前访问的存储。被跟踪的近期访问可通过以下方式被存储到页索引位映射中:首先从页索引位映射检取先前访问;随后在被跟踪的近期访问与先前访问之间执行按位“或”操作以生成合并结果;并且最终将合并结果往回存储到页索引位映射中。
本发明的另一示例包括一种用于标识并跟踪冷存储器页的方法。该方法可包括:将存储器页存储在存储器中;监测由一个或多个处理器核发布的、访问存储在存储器中的存储器页的访问请求;经由页索引位映射跟踪由一个或多个处理器核作出的、对存储在存储器中的存储器页的访问;将被跟踪的访问存储在页索引位映射中;基于存储在页索引位映射中的被跟踪的访问来标识不频繁地被访问的存储器页;从存储器移除不频繁地被访问的存储器页;以及将不频繁地被访问的存储器页存储到次级存储中。存储器中的位置可被预留用于存储页索引位映射。在一些情况下,方法可进一步包括:通过使用页索引位映射高速缓存跟踪由处理器核作出的、对存储在存储器中的存储器页的近期访问:并且后续将被跟踪的近期访问存储到页索引位映射中。为了避免占用存储器带宽,仅当存储器的存储器带宽使用低于带宽使用阈值时或当页索引位映射高速缓存需要回收条目以跟踪新访问时(例如,当不再有可用的未被分配的条目时),被跟踪的近期访问可被存储到页索引位映射中。页索引位映射高速缓存可包括多个条目。这些条目中的每个条目可包括多个状态位,多个状态位中的每个状态位与不同的存储器页对应,并且用于指示对应的存储器页近期是否已由处理器核访问。条目中的每个条目可进一步包括脏位,用于指示该条目的状态位中的任何状态位是否已被修改。该方法还可包括:将用于配置页索引位映射高速缓存的配置设置存储在存储器或其他存储位置(诸如,寄存器)中。配置设置可(例如,由用户)通过BIOS来配置。在其中存储器包括多个存储器模块使得页索引位映射在不同的存储器模块之间分布的情况下,该方法可进一步包括:将一个或多个交错规则存储在存储器或其他存储位置中;基于交错规则从构成存储器的多个存储器模块中选出存储器模块;以及将被跟踪的近期访问存储在所选择的存储器模块的页索引位映射中。为了将被跟踪的近期访问存储到页索引位映射中,该方法可进一步包括:首先从页索引位映射检取先前访问;在被跟踪的近期访问与先前访问之间执行按位“或”操作以生成合并结果;并且将合并结果存储在页索引位映射中。
本发明的又一示例是一种系统,其包括:存储器,用于存储存储器页;一个或多个处理器核,用于通过发布对存储器的访问请求来访问存储在存储器中的存储器页;页索引位映射高速缓存,用于跟踪由一个或多个处理器核作出的、对存储器页的近期访问;以及页索引位映射,用于维护由一个或多个处理核在给定的时间帧内作出的、对存储器页的所有访问的列表。页索引位映射可基于被跟踪的近期访问从页索引位映射高速缓存接收对所有访问的列表的更新。所有访问的列表可以可用于标识不频繁地被访问的存储器页。系统可进一步包括用于存储被标识且从存储器移除的任何不频繁地被访问的存储器页的次级存储单元。为了避免占用存储器带宽,仅当存储器的存储器带宽使用低于带宽使用阈值时或当页索引位映射高速缓存需要回收条目以跟踪新访问时(例如,当不再有可用的未被分配的条目时),被跟踪的近期访问可被存储到页索引位映射中。页索引位映射高速缓存可包括多个条目。这些条目中的每个条目可包括多个状态位,多个状态位中的每个状态位与不同的存储器页对应,并且用于指示对应的存储器页近期是否已由处理器核访问。条目中的每个条目可进一步包括脏位,用于指示该条目的状态位中的任何状态位是否已被修改。该系统还可包括用于存储用于配置页索引位映射高速缓存的配置设置的存储。配置设置可由用户通过BIOS来配置。页索引位映射可被存储在存储器中。在其中存储器包括多个存储器模块的情况下,页索引位映射可分布在多个存储器模块之间,使得存储器模块中的每个存储器模块可存储页索引位映射的部分。该系统可包括用于存储一个或多个交错规则的存储,这一个或多个交错规则用于确定存储器模块中的、被跟踪的近期访问应当被发送到的一个或多个存储器模块,使得被跟踪的近期访问能够被存储在页索引位映射的适当部分中。该系统可进一步包括用于存储从页索引位映射检取的先前访问的存储。被跟踪的近期访问可通过以下方式被存储到页索引位映射中:首先从页索引位映射检取先前访问;随后在被跟踪的近期访问与先前访问之间执行按位“或”操作以生成合并结果;并且最终将合并结果往回存储到页索引位映射中。
图8A是图示根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图8B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图8A-图8B中的实线框图示有序流水线和有序核,而虚线框的任选增加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图8A中,处理器流水线800包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也被称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处置级822和提交级824。
图8B示出处理器核890,该处理器核890包括前端硬件830,该前端硬件830耦合到执行引擎硬件850,并且前端硬件830和执行引擎硬件850两者都耦合到存储器硬件870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核890可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端硬件830包括分支预测硬件832,该分支预测硬件832耦合到指令高速缓存硬件834,该指令高速缓存硬件834耦合到指令转换后备缓冲器(TLB)836,该指令转换后备缓冲器836耦合到指令取出硬件838,该指令取出硬件838耦合到解码硬件840。解码硬件840(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码硬件840可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码硬件840中,或以其他方式在前端硬件830内)。解码硬件840耦合到执行引擎硬件850中的重命名/分配器硬件852。
执行引擎硬件850包括重命名/分配器硬件852,该重命名/分配器硬件852耦合到引退硬件854和一个或多个调度器硬件的集合856。调度器硬件856表示任何数量的不同调度器,包括预留站、中央指令窗等。调度器硬件856耦合到(多个)物理寄存器堆硬件858。(多个)物理寄存器堆硬件858中的每一个物理寄存器堆硬件表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆硬件858包括向量寄存器硬件、写掩码寄存器硬件和标量寄存器硬件。该寄存器硬件可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆硬件858由引退硬件854重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退硬件854和(多个)物理寄存器堆硬件858耦合到(多个)执行集群860。(多个)执行集群860包括一个或多个执行硬件的集合862以及一个或多个存储器访问硬件的集合864。执行硬件862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行硬件,但是其他实施例可包括仅一个执行硬件或全都执行所有功能的多个执行硬件。调度器硬件856、(多个)物理寄存器堆硬件858和(多个)执行集群860示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器硬件、(多个)物理寄存器堆硬件和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问硬件864的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问硬件的集合864耦合到存储器硬件870,该存储器硬件870包括数据TLB硬件872,该数据TLB硬件872耦合到数据高速缓存硬件874,该数据高速缓存硬件874耦合到第二级(L2)高速缓存硬件876。在一个示例性实施例中,存储器访问硬件864可包括加载硬件、存储地址硬件和存储数据硬件,其中的每一个均耦合到存储器硬件870中的数据TLB硬件872。指令高速缓存硬件834还耦合到存储器硬件870中的第二级(L2)高速缓存硬件876。L2高速缓存硬件876耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线800:1)指令取出838执行取出级802和长度解码级804;
2)解码硬件840执行解码级806;3)重命名/分配器硬件852执行分配级808和重命名级810;4)调度器硬件856执行调度级812;5)(多个)物理寄存器堆硬件858和存储器硬件870执行寄存器读取/存储器读取级814;执行集群860执行执行级816;6)存储器硬件870和(多个)物理寄存器堆硬件858执行写回/存储器写入级818;7)各硬件可牵涉到异常处置级822;以及8)引退硬件854和(多个)物理寄存器堆硬件858执行提交级824。
核890可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核890包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2、和/或下文描述的某种形式的通用向量友好指令格式(U=0和/或U=1)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据高速缓存硬件834/874以及共享的L2高速缓存硬件876,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图9是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器900的框图。图9中的实线框图示具有单个核902A、系统代理910、一个或多个总线控制器硬件的集合916的处理器900,而虚线框的任选增加图示具有多个核902A-N、系统代理硬件910中的一个或多个集成存储器控制器硬件的集合914以及专用逻辑908的替代处理器900。
因此,处理器900的不同实现可包括:1)CPU,其中专用逻辑908是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核902A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核902A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核902A-N是大量通用有序核。因此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器900可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个级别的高速缓存、一个或多个共享高速缓存硬件的集合906、以及耦合到集成存储器控制器硬件的集合914的外部存储器(未示出)。共享高速缓存硬件的集合906可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连硬件912将集成图形逻辑908、共享高速缓存硬件的集合906以及系统代理硬件910/集成存储器控制器硬件914互连,但是替代实施例可使用任何数量的公知技术来互连此类硬件。在一个实施例中,在一个或多个高速缓存硬件906与核902A-N之间维持一致性。
在一些实施例中,一个或多个核902A-N能够实现多线程化。系统代理910包括协调和操作核902A-N的那些部件。系统代理硬件910可包括例如功率控制单元(PCU)和显示硬件。PCU可以是对核902A-N以及集成图形逻辑908的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示硬件用于驱动一个或多个外部连接的显示器。
核902A-N在架构指令集方面可以是同构的或异构的;即,核902A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。在一个实施例中,核902A-N是异构的,并且包括下文描述的“小型”核和“大型”核两者。
图10-图13是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图10,所示出的是根据本发明一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和协处理器1045耦合到该存储器和图形控制器;IOH 1050将输入/输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1040和协处理器1045直接耦合到处理器1010,并且控制器中枢1020与IOH 1050处于单个芯片中。
附加的处理器1015的任选性在图10中通过虚线来表示。每一处理器1010、1015可包括本文中描述的处理核中的一个或多个,并且可以是处理器900的某一版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(FSB)之类的多分支总线、点对点接口、或者类似的连接1095来与(多个)处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1020可以包括集成图形加速器。
在物理资源1010、1015之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1010将这些协处理器指令识别为具有应当由附连的协处理器1045执行的类型。因此,处理器1010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1045。(多个)协处理器1045接受并执行所接收的协处理器指令。
现在参见图11,所示出的是根据本发明的实施例的第一更具体的示例性系统1100的框图。如图11中所示,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个都可以是处理器900的某一版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
处理器1170和1180示出为分别包括集成存储器控制器(IMC)硬件1172和1182。处理器1170还包括作为其总线控制器硬件的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可以经由使用点对点(P-P)接口电路1178、1188的P-P接口1150来交换信息。如图11中所示,IMC 1172和1182将处理器耦合到相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154来与芯片组1190交换信息。芯片组1190可以任选地经由高性能接口1139来与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1190可以经由接口1196耦合到第一总线1116。在一个实施例中,第一总线1116可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图11中所示,各种I/O设备1114可连同总线桥1118一起耦合到第一总线1116,该总线桥1118将第一总线1116耦合到第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)硬件)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1120,这些设备包括例如键盘和/或鼠标1122、通信设备1127以及存储硬件1128,该存储硬件1128诸如可包括指令/代码和数据1130的盘驱动器或者其他大容量存储设备。此外,音频I/O 1124可以被耦合到第二总线1120。注意,其他架构是可能的。例如,代替图11的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图12,示出的是根据本发明的实施例的第二更具体的示例性系统1200的框图。图11和图12中的类似元件使用类似的附图标记,并且从图12中省略了图11的某些方面以避免混淆图12的其他方面。
图12图示处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1182。因此,CL 1172、1182包括集成存储器控制器硬件,并包括I/O控制逻辑。图12图示不仅存储器1132、1134耦合到CL 1172、1182,而且I/O设备1214也耦合到控制逻辑1172、1182。传统I/O设备1215被耦合到芯片组1190。
现在参考图13,示出的是根据本发明的实施例的SoC 1300的框图。图9中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图13中,互连硬件1302被耦合到:应用处理器1310,其包括一个或多个核的集合902A-N以及共享高速缓存硬件906;系统代理硬件910;总线控制器硬件916;集成存储器控制器硬件914;一个或多个协处理器的集合1320,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)硬件1330;直接存储器访问(DMA)硬件1332;以及用于耦合到一个或多个外部显示器的显示硬件1340。在一个实施例中,(多个)协处理器1320包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图11中图示的代码1130)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图14是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图14示出可使用x86编译器1404来编译高级语言1402形式的程序,以生成可由具有至少一个x86指令集核的处理器1416原生执行的x86二进制代码1406。具有至少一个x86指令集核的处理器1416表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的实质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1404表示可操作用于生成x86二进制代码1406(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1416上执行。类似地,图14示出可以使用替代的指令集编译器1408来编译高级语言1402形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1414(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1410。指令转换器1412用于将x86二进制代码1406转换成可以由不具有x86指令集核的处理器1414原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1410相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1412通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1406的软件、固件、硬件或其组合。
虽然已参考特定实现方式描述了一些实施例,但是根据一些实施例,其他实现方式也是可能的。另外,附图中所图示的和/或本文中所描述的元件或其他特征的布置和/或次序无需以所图示和所描述的特定方式来布置。根据一些实施例,许多其他布置也是可能的。
在附图中示出的每一个系统中,在一些情况下的要素各自可具有相同的附图标记或不同的附图标记以表明所表示的要素可能不同和/或类似。然而,要素可以足够灵活以具有不同的实现方式,并与本文所示出或所描述的系统中的一些或全部一起工作。附图中所示出的各种要素可以相同或不同。将哪个称为第一要素以及将哪个称为第二要素是任意的。
在说明书和权利要求书中,可使用术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在特定实施例中,可以使用“连接的”来指示两个或更多个元件彼此处于直接的物理或电接触。“耦合的”可意指两个或更多个元件处于直接的物理或电接触。然而,“耦合的”也可意指两个或更多个元件彼此并不直接接触,但是仍彼此协作或相互作用。
实施例是本发明的实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用表示结合这些实施例描述的特定的特征、结构或特性被包括在本发明的至少一些实施例中,而不必被包括在本发明的所有实施例中。各处出现的“实施例”、“一个实施例”或“一些实施例”不一定全都指代同一实施例。
并非本文描述和示出的所有组件、特征、结构、特性等都需要被包括在特定的一个或多个实施例中。例如,如果说明书陈述“可”、“可能”、“能”或“能够”包括组件、特征、结构或特性,则不要求包括该特定的组件、特征、结构或特性。如果说明书或权利要求书引用“一”或“一个”要素,则这并不意指仅有一个该要素。如果说明书或权利要求书引用“附加”要素,则不排除存在多于一个的该附加要素。
以上对本发明的所图示的实施例的描述(包括在摘要中描述的内容)不旨在是排他性的,也不旨在将本发明限于所公开的精确形式。尽管出于说明的目的在本文中描述了本发明的特定实施例和示例,但是如相关领域技术人员将领会的那样,在本发明的范围内,各种等效的修改是可能的。
可以根据以上具体实施方式对本发明作出这些修改。所附权利要求书中所使用的术语不应当被理解为将本发明限制于说明书和附图中所公开的特定实施例。相反,本发明的范围完全由所附权利要求书来确定,权利要求书根据权利要求解释的既定原则来解释。
Claims (25)
1.一种装置,包括:
一个或多个处理器核,用于通过发布对存储器的访问请求来访问存储在所述存储器中的存储器页;以及
页索引位映射,用于跟踪由所述一个或多个处理器核作出的、对所述存储器页的访问并存储被跟踪的访问,所述被跟踪的访问能够用于标识不频繁地被访问的存储器页,其中,所述不频繁地被访问的存储器页从所述存储器移除并被存储在次级存储中。
2.如权利要求1所述的装置,其中,所述页索引位映射被存储在所述存储器中。
3.如权利要求2所述的装置,进一步包括页索引位映射高速缓存,用于跟踪由所述一个或多个处理器核作出的、对所述存储器页的近期访问,其中,被跟踪的近期访问后续被存储到所述页索引位映射中。
4.如权利要求3所述的装置,其中,仅当所述存储器的存储器带宽使用低于带宽使用阈值时,所述被跟踪的近期访问才被存储到所述页索引位映射中。
5.如权利要求3所述的装置,其中,当所述页索引位映射高速缓存需要回收条目以跟踪新访问时,所述被跟踪的近期访问被存储到所述页索引位映射中。
6.如权利要求3所述的装置,其中,所述页索引位映射高速缓存包括多个条目,所述多个条目中的每个条目包括多个状态位,所述多个状态位中的每个状态位与不同的存储器页对应并且用于指示对应的存储器页近期是否已由所述一个或多个处理器核访问。
7.如权利要求6所述的装置,其中,所述多个条目中的每个条目进一步包括脏位,用于指示条目中的所述多个状态位中的任何状态位是否已被修改。
8.如权利要求3所述的装置,其中,进一步包括用于存储用于配置所述页索引位映射高速缓存的配置设置的存储,其中,所述配置设置通过所述装置的基本输入/输出系统(BIOS)来配置。
9.如权利要求3所述的装置,其中,所述存储器包括多个存储器模块,所述多个存储器模块中的每个存储器模块存储所述页索引位映射的部分,并且其中,所述装置进一步包括用于存储一个或多个交错规则的存储,所述一个或多个交错规则能够用于确定所述多个存储器模块中的哪个存储器模块存储所述页索引位映射的、用于存储所述被跟踪的近期访问的部分。
10.如权利要求3所述的装置,进一步包括用于存储从所述页索引位映射检取的先前访问的存储。
11.如权利要求3所述的装置,其中,所述被跟踪的近期访问后续通过以下方式被存储到所述页索引位映射中:
从所述页索引位映射检取先前访问;
在所述被跟踪的近期访问与先前访问之间执行按位“或”操作以生成合并结果;以及
将所述合并结果存储在所述页索引位映射中。
12.一种方法,包括:
将存储器页存储在存储器中;
监测由一个或多个处理器核发布的、访问存储在所述存储器中的所述存储器页的访问请求;
经由页索引位映射跟踪由所述一个或多个处理器核作出的、对存储在所述存储器中的所述存储器页的访问;
将被跟踪的访问存储在所述页索引位映射中;
基于所述被跟踪的访问标识不频繁地被访问的存储器页;
从所述存储器移除所述不频繁地被访问的存储器页;以及
将所述不频繁地被访问的存储器页存储在次级存储中。
13.如权利要求12所述的方法,进一步包括,在所述存储器中预留用于存储所述页索引位映射的位置。
14.如权利要求13所述的方法,进一步包括:
经由页索引位映射高速缓存跟踪由所述一个或多个处理器核作出的、对存储在所述存储器中的所述存储器页的近期访问;以及
后续将被跟踪的近期访问存储到所述页索引位映射中。
15.如权利要求14所述的方法,其中,仅当所述存储器的存储器带宽使用低于带宽使用阈值时,所述被跟踪的近期访问才被存储到所述页索引位映射中。
16.如权利要求14所述的方法,其中,当所述页索引位映射高速缓存需要回收条目以跟踪新访问时,所述被跟踪的近期访问被存储到所述页索引位映射中。
17.如权利要求14所述的方法,其中,所述页索引位映射高速缓存包括多个条目,所述多个条目中的每个条目包括多个状态位,所述多个状态位中的每个状态位与不同的存储器页对应并且用于指示对应的存储器页近期是否已由所述一个或多个处理器核访问。
18.如权利要求17所述的方法,其中,所述多个条目中的每个条目进一步包括脏位,用于指示条目中的所述多个状态位中的任何状态位是否已被修改。
19.如权利要求14所述的方法,进一步包括:存储用于配置所述页索引位映射高速缓存的配置设置,所述配置设置通过基本输入/输出系统(BIOS)来配置。
20.如权利要求14所述的方法,进一步包括:
存储一个或多个交错规则;
基于所述一个或多个交错规则从构成所述存储器的多个存储器模块中选出第一存储器模块,所述多个存储器模块中的每个存储器模块存储所述页索引位映射的部分;以及
将所述被跟踪的近期访问存储在所述页索引位映射的、被存储在所述第一存储器模块中的部分中。
21.如权利要求14所述的方法,进一步包括:
从所述页索引位映射检取先前访问;
在所述被跟踪的近期访问与先前访问之间执行按位“或”操作以生成合并结果;以及
将所述合并结果存储在所述页索引位映射中。
22.一种系统,包括:
存储器,用于存储存储器页;
一个或多个处理器,用于通过发布对所述存储器的访问请求来访问存储在所述存储器中的所述存储器页;
页索引位映射高速缓存,用于跟踪由所述一个或多个处理器作出的、对所述存储器页的近期访问;以及
页索引位映射,用于维护在给定时间帧内由所述一个或多个处理器作出的、对所述存储器页的所有访问的列表,所述页索引位映射用于基于被跟踪的近期访问从所述页索引位映射高速缓存接收更新,其中,所有访问的所述列表能够用于标识不频繁地被访问的存储器页;以及
次级存储单元,用于存储从所述存储器移除的所述不频繁地被访问的存储器页。
23.如权利要求22所述的系统,其中,所述页索引位映射被存储在所述存储器中。
24.如权利要求23所述的系统,其中,所述页索引位映射用于:仅当所述存储器的存储器带宽使用低于带宽使用阈值时,从所述页索引位映射高速缓存接收更新。
25.如权利要求23所述的系统,其中,所述页索引位映射用于:当所述页索引位映射高速缓存需要回收条目来跟踪新访问时,从所述页索引位映射高速缓存接收更新。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/080362 WO2020198913A1 (en) | 2019-03-29 | 2019-03-29 | Apparatus, method, and system for collecting cold pages |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113490921A true CN113490921A (zh) | 2021-10-08 |
Family
ID=72664384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980093104.2A Pending CN113490921A (zh) | 2019-03-29 | 2019-03-29 | 用于收集冷页的装置、方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11954356B2 (zh) |
EP (1) | EP3948549A4 (zh) |
CN (1) | CN113490921A (zh) |
WO (1) | WO2020198913A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11106594B2 (en) * | 2019-09-05 | 2021-08-31 | Advanced Micro Devices, Inc. | Quality of service dirty line tracking |
US11880309B2 (en) * | 2021-06-23 | 2024-01-23 | Vmware, Inc. | Method and system for tracking state of cache lines |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6557083B1 (en) * | 2000-06-30 | 2003-04-29 | Intel Corporation | Memory system for multiple data types |
US9015441B2 (en) | 2010-04-30 | 2015-04-21 | Microsoft Technology Licensing, Llc | Memory usage scanning |
US20120047313A1 (en) * | 2010-08-19 | 2012-02-23 | Microsoft Corporation | Hierarchical memory management in virtualized systems for non-volatile memory models |
US9569360B2 (en) * | 2013-09-27 | 2017-02-14 | Facebook, Inc. | Partitioning shared caches |
US9697137B2 (en) * | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US10235290B2 (en) * | 2015-06-26 | 2019-03-19 | Advanced Micro Devices, Inc. | Hot page selection in multi-level memory hierarchies |
US20180107404A1 (en) * | 2015-11-02 | 2018-04-19 | StorReduce | Garbage collection system and process |
US9870285B2 (en) * | 2015-11-18 | 2018-01-16 | International Business Machines Corporation | Selectively de-straddling data pages in non-volatile memory |
CN106970881B (zh) * | 2017-03-10 | 2020-04-28 | 浙江大学 | 一基于大页的冷热页追踪及压缩回收方法 |
CN108733313B (zh) * | 2017-04-17 | 2021-07-23 | 伊姆西Ip控股有限责任公司 | 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质 |
US20190294345A1 (en) * | 2018-03-21 | 2019-09-26 | Super Talent Technology Corp. | Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance |
US10769017B2 (en) * | 2018-04-23 | 2020-09-08 | Hewlett Packard Enterprise Development Lp | Adaptive multi-level checkpointing |
CN108763104B (zh) * | 2018-05-23 | 2022-04-08 | 北京小米移动软件有限公司 | 预读取文件页的方法、装置及存储介质 |
-
2019
- 2019-03-29 CN CN201980093104.2A patent/CN113490921A/zh active Pending
- 2019-03-29 WO PCT/CN2019/080362 patent/WO2020198913A1/en unknown
- 2019-03-29 US US17/433,714 patent/US11954356B2/en active Active
- 2019-03-29 EP EP19922898.2A patent/EP3948549A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2020198913A1 (en) | 2020-10-08 |
EP3948549A1 (en) | 2022-02-09 |
US11954356B2 (en) | 2024-04-09 |
US20220137860A1 (en) | 2022-05-05 |
EP3948549A4 (en) | 2022-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9921972B2 (en) | Method and apparatus for implementing a heterogeneous memory subsystem | |
US10496551B2 (en) | Method and system for leveraging non-uniform miss penality in cache replacement policy to improve processor performance and power | |
US9727475B2 (en) | Method and apparatus for distributed snoop filtering | |
US9170955B2 (en) | Providing extended cache replacement state information | |
US20170185515A1 (en) | Cpu remote snoop filtering mechanism for field programmable gate array | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
TWI489273B (zh) | 地址範圍的優先機制 | |
US11550721B2 (en) | Method and apparatus for smart store operations with conditional ownership requests | |
US20200104259A1 (en) | System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations | |
US10437732B2 (en) | Multi-level cache with associativity collision compensation | |
US10482017B2 (en) | Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization | |
WO2017172220A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
US10657070B2 (en) | Apparatus and method for shared least recently used (LRU) policy between multiple cache levels | |
US11954356B2 (en) | Apparatus, method, and system for collecting cold pages | |
US10013352B2 (en) | Partner-aware virtual microsectoring for sectored cache architectures | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
US20240134803A1 (en) | Hardware assisted memory access tracking | |
WO2022198552A1 (en) | Hardware assisted memory access tracking | |
US20220197798A1 (en) | Single re-use processor cache policy | |
US20220197797A1 (en) | Dynamic inclusive last level cache | |
CN114691551A (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 |