CN108780422A - 在基于中央处理单元cpu的系统中使用压缩指示符ci提示目录来提供存储器带宽压缩 - Google Patents
在基于中央处理单元cpu的系统中使用压缩指示符ci提示目录来提供存储器带宽压缩 Download PDFInfo
- Publication number
- CN108780422A CN108780422A CN201780018218.1A CN201780018218A CN108780422A CN 108780422 A CN108780422 A CN 108780422A CN 201780018218 A CN201780018218 A CN 201780018218A CN 108780422 A CN108780422 A CN 108780422A
- Authority
- CN
- China
- Prior art keywords
- hint
- directories
- memory
- compressed
- prompts
- 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
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/0638—Organizing or formatting or addressing of data
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/6312—Error control coding in combination with data compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- 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/12—Replacement control
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开在基于中央处理单元CPU的系统中使用压缩指示符CI提示目录来提供存储器带宽压缩。在这点上,一种经压缩存储器控制器提供包括多个CI提示目录条目的CI提示目录,所述CI提示目录条目各自提供多个CI提示。所述经压缩存储器控制器经配置以接收包括存储线的物理地址的存储器读取请求,且起始包括所请求的读取长度值的存储器读取事务。所述经压缩存储器控制器进一步经配置以与起始所述存储器读取事务并行地,确定所述物理地址是否对应于所述CI提示目录中的CI提示目录条目。如果是,那么所述经压缩存储器控制器从所述CI提示目录的所述CI提示目录条目读取CI提示,并基于所述CI提示来修改所述存储器读取事务的所述所请求的读取长度值。
Description
优先权申请
本申请案主张2016年3月31日申请且标题为“在基于中央处理单元(CPU)的系统中使用压缩指示符(CI)提示目录来提供存储器带宽压缩(PROVIDING MEMORY BANDWIDTHCOMPRESSION USING COMPRESSION INDICATOR(CI)HINT DIRECTORIES IN A CENTRALPROCESSING UNIT(CPU)-BASED SYSTEM)”的第15/086,882号美国专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。
技术领域
本发明的技术大体上涉及计算机存储器系统,且明确地说,涉及用于提供具有到存储器的存储器存取接口的中央处理单元(CPU)的计算机存储器系统中的存储器控制器。
背景技术
微处理器为各种各样的应用程序执行计算任务。典型的微处理器应用程序包含执行软件指令的一或多个中央处理单元(CPU)。所述软件指令可指令CPU从存储器中的位置取数据,使用取到的数据来执行一或多个CPU操作,并产生结果。接着可将结果存储于存储器中。作为非限制性实例,此存储器可为在CPU本地的高速缓冲存储器、在CPU块中的CPU之间共享的本地高速缓冲存储器,在多个CPU块之间共享的高速缓冲存储器,或微处理器的主存储器。
就此来说,图1是包含基于CPU的系统102的示范性芯片上系统(SoC)100的示意图。在此实例中,基于CPU的系统102包含多个CPU块104(0)到104(N),其中“N”等于所要的任何数目的CPU块104(0)到104(N)。在图1的实例中,CPU块104(0)到104(N)中的每一者含有两(2)个CPU 106(0)、106(1)。CPU块104(0)到104(N)进一步分别含有共享2级(L2)高速缓冲存储108(0)到108(N)。还提供系统高速缓冲存储器110(例如3级(L3)高速缓冲存储器)来存储供CPU块104(0)到104(N)中的任一者使用或在其中的每一者之间共享的高速缓存的数据。提供内部系统总线112,来使CPU块104(0)到104(N)中的每一者能够存取系统高速缓冲存储器110以及其它共享资源。CPU块104(0)到104(N)通过内部系统总线112存取的其它共享资源可包含存储器控制器114,其用于存取主要外部存储器(例如双速率动态随机存取存储器(DRAM)(DDR),作为非限制性实例)、外围装置116、其它存储装置118、快速外围部件互连标准(PCI)(PCI-e)接口120、直接存储器存取(DMA)控制器122,和/或集成存储器控制器(IMC)124。
随着在图1中的基于CPU的系统102中执行的基于CPU的应用程序的复杂性和性能增加,对存储器带宽的限制可对基于CPU的系统102强加约束条件。如果对外部存储器的存取达到存储器带宽限制,那么可迫使基于CPU的系统102的存储器控制器114将存储器存取请求排成队列。存储器存取请求的此排队列可增加存储器存取的等待时间,其反过来可降低基于CPU的系统102的性能。
可通过使用存储器带宽压缩方案来实现存储器带宽节省,以潜在地减少给定存储器存取所消耗的带宽。明确地说,一些存储器带宽压缩方案可利用主目录来跟踪系统存储器的每一存储线的压缩状态。然而,此类存储器带宽压缩方案所使用的主目录可消耗系统存储器的不可接受大的部分,可需要实施额外逻辑,和/或可招致用于任何存储器存取请求的额外等待时间。其它存储器带宽压缩方案可使用错误校正码(ECC)字段中的备用位来指示所述系统存储器的每一存储线的压缩状态。虽然此类机制可避免对主目录的需要,但它们可牺牲一些存储器存取性能,因为在线的初始读取完成之前,无法确定系统存储器的每一线的压缩状态。因此,期望提供一种存储器带宽压缩机制,其避免了使用主目录的缺点,同时提供改进的存储器存取性能。
发明内容
本文所公开的方面包含在基于中央处理单元(CPU)的系统中使用压缩指示符(CI)提示目录来提供存储器带宽压缩。在这点上,在一些方面,提供经压缩的存储器控制器。经压缩存储器控制器包含CI提示目录,其存储多个CI提示目录条目。每一CI提示目录条目提供多个CI提示,其各自对应于系统存储器中的存储线。根据一些方面,可选择每CI提示目录条目的CI提示的数目,以优化系统存储器的存储器存取粒度。作为非限制性实例,如果系统存储器的存储器存取粒度是64个字节,那么CI提示目录可经配置以将CI提示的64个字节存储在每一CI提示目录条目中。每一CI提示提供关于对应存储线的压缩状态的指示。在一些方面,作为非限制性实例,每一CI提示可由两(2)个位构成,其指示存储线的四(4)个压缩状态中的一者:存储线包括指定模式(例如全零(0),作为非限制性实例);存储线已知经压缩;存储线已知未经压缩;或存储线的压缩状态未知。
在接收到存储器读取请求后,经压缩的存储器控制器发出具有所请求的读取长度值的存储器读取事务。与发出存储器读取事务并行,经压缩存储器控制器存取CI提示目录,以确定对应于存储器读取请求的物理地址的CI提示目录条目是否存在于CI提示目录中。如果是,那么经压缩存储器控制器读取针对是存储器读取请求的目标的存储线的CI提示。基于CI提示,经压缩存储器控制器可修改存储器读取事务的所请求的读取长度值。举例来说,经压缩存储器控制器可修改存储器读取事务的所请求的读取长度值,以对应于存储线的经压缩长度或未经压缩长度,或可在存储线包括全零(0)的情况下,取消存储器读取事务。在存储器读取事务完成后,可基于存储在存储线的一或多个错误校正码(ECC)位中的CI来更新针对所述存储线的CI提示。在将经压缩数据写入到存储线后,还可即刻通过经压缩存储器控制器来更新针对存储线的CI提示。
以此方式,经压缩存储器控制器可通过使用CI提示目录跟踪系统存储器的每一存储线的压缩状态来改进存储器存取性能,同时避免存储器消耗、存取等待时间,以及实施主目录所需的额外逻辑。经压缩存储器控制器还可通过在存储器读取操作完成之前,确定系统存储器中的存储线的压缩状态来改进存储器存取性能,从而使经压缩存储器控制器能够在存储器读取操作正在进行中时修改存储器读取操作。
在另一方面,提供一种经压缩存储器控制器。经压缩存储器控制器包括存储器接口,其经配置以经由系统总线存取系统存储器。所述经压缩存储器控制器进一步包括CI提示目录,其包括多个CI提示目录条目,所述CI提示目录条目各自包含多个CI提示。经压缩存储器控制器经配置以接收存储器读取请求,其包括系统存储器中的存储线的物理地址。经压缩存储器控制器进一步经配置以基于物理地址起始存储器读取事务,其包括到系统存储器的所请求的读取长度值。经压缩存储器控制器还经配置以与起始存储器读取事务并行,确定所述物理地址是否对应于CI提示目录的多个CI提示目录条目中的一CI提示目录条目。经压缩存储器控制器另外经配置以响应于确定物理地址对应于CI提示目录的多个CI提示目录条目中的一CI提示目录条目,从所述CI提示目录条目读取所述多个CI提示中针对所述存储线的CI提示。所述经压缩存储器控制器进一步经配置以基于针对存储线的CI提示来修改存储器读取事务的所请求的读取长度值。
在另一方面,提供一种经压缩存储器控制器。经压缩存储器控制器包括存储器接口,其经配置以经由系统总线存取系统存储器。所述经压缩存储器控制器进一步包括CI提示目录,其包括多个CI提示目录条目,所述CI提示目录条目各自包含多个CI提示。所述经压缩存储器控制器经配置以接收存储器写入请求,其包括写入数据以及系统存储器中的存储线的物理地址。所述经压缩存储器控制器进一步经配置以为所述写入数据确定压缩模式。所述经压缩存储器控制器还经配置以基于压缩模式产生写入数据的CI。经压缩存储器控制器另外经配置以将写入数据写入到系统存储器中的存储线。所述经压缩存储器控制器进一步经配置以将所产生的CI写入到系统存储器中的存储线的一或多个ECC位中。所述经压缩存储器控制器还经配置以与将写入数据写入到系统存储器中的存储线并行地,确定物理地址是否对应于CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目。所述经压缩存储器控制器另外经配置以响应于确定物理地址对应于CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,基于所产生的CI来更新所述CI提示目录条目的所述多个CI提示中对应于所述物理地址的CI提示。
在另一方面,提供一种用于提供存储器带宽压缩的方法。所述方法包括通过经压缩存储器控制器接收存储器读取请求,其包括系统存储器中的存储线的物理地址。所述方法进一步包含基于所述物理地址起始存储器读取事务,其包括到所述系统存储器的所请求的读取长度值。所述方法还包括与起始存储器读取事务并行,确定所述物理地址是否对应于经压缩存储器控制器的CI提示目录的多个CI提示目录条目中的一CI提示目录条目。经压缩存所述方法另外包括响应于确定物理地址对应于经压缩存储器控制器的CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,从所述CI提示目录条目读取多个CI提示中针对存储线的CI提示。所述方法进一步包含基于针对存储线的CI提示,修改存储器读取事务的所请求的读取长度值。
在另一方面,提供一种用于提供存储器带宽压缩的方法。所述方法包括通过经压缩存储器控制器接收存储器写入请求,其包括写入数据以及系统存储器中的存储线的物理地址。所述方法进一步包括为所述写入数据确定压缩模式。所述方法还包括基于所述压缩模式产生用于所述写入数据的CI。所述方法另外包括将写入数据写入到系统存储器中的存储线。所述方法进一步包含将所产生的CI写入到系统存储器的存储线的一或多个ECC位中。所述方法还包括与将写入数据写入到系统存储器中的存储线并行地,确定物理地址是否对应于经压缩存储器控制器的CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目。所述方法另外包括响应于确定物理地址对应于CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,基于所产生的CI来更新CI提示目录条目的多个CI提示中对应于存储线的CI提示。
在另一方面,提供一种经压缩存储器控制器。所述经压缩存储器控制器包括用于接收存储器读取请求的装置,所述存储器读取请求包括系统存储器中的存储线的物理地址。所述经压缩存储器控制器进一步包括用于基于物理地址起始存储器读取事务的装置,所述存储器读取事务包括到系统存储器的所请求的读取长度值。所述经压缩存储器控制器还包括用于与起始存储器读取事务并行地,确定物理地址是否对应于经压缩存储器控制器的CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目的装置。所述经压缩存储器控制器另外包括响应于确定物理地址对应于经压缩存储器控制器的CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,从CI提示目录条目读取多个CI提示中针对存储线的CI提示的装置。所述经压缩存储器控制器进一步包括用于响应于确定物理地址对应于经压缩存储器控制器的CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,基于针对存储线的CI提示来修改存储器读取事务的所请求的读取长度值的装置。
在另一方面,提供一种经压缩存储器控制器。所述经压缩存储器控制器包括用于接收存储器写入请求的装置,所述存储器写入请求包括写入数据和系统存储器中的存储线的物理地址。所述经压缩存储器控制器进一步包括用于为写入数据确定压缩模式的装置。所述经压缩存储器控制器还包括用于基于压缩模式产生写入数据的CI的装置。经压缩存储器控制器另外包括用于将写入数据写入到系统存储器中的存储线的装置。所述经压缩存储器控制器进一步包括用于将所产生的CI写入到系统存储器的存储线的一或多个ECC位中的装置。所述经压缩存储器控制器还包括用于与将所述写入数据写入到系统存储器中的存储线并行地,确定物理地址是否对应于经压缩存储器控制器的CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目的装置。所述经压缩存储器控制器另外包括用于基于所产生的CI来更新CI提示目录条目的多个CI提示中对应于存储线的CI提示的装置。
附图说明
图1是包含基于中央处理单元(CPU)的系统的示范性芯片上系统(SoC)的示意图;
图2是包含具有多个CPU的示范性基于CPU的系统和经配置以提供存储器带宽压缩的经压缩存储器控制器的SoC的示意图;
图3是图2中的经压缩存储器控制器的较详细示意图,其中所述经压缩存储器控制器进一步以通信方式耦合到可用以提供存储器带宽压缩的任选的内部存储器;
图4A和4B是分别说明存储器读取操作和存储器写入操作期间的示范性通信流,以及图2中的经压缩存储器控制器所提供的压缩指示符(CI)提示目录的用于提供存储器带宽压缩的示范性元件的图;
图5是说明用于通过图2中的经压缩存储器控制器使用存储器带宽压缩来执行存储器读取操作的示范性操作的流程图;
图6A到6G是说明用于通过图2中的经压缩存储器控制器使用存储器带宽压缩来执行存储器读取操作的进一步示范性操作的流程图;
图7A到7B是说明用于通过图2中的经压缩存储器控制器使用存储器带宽压缩来执行存储器写入操作的示范性操作的流程图;以及
图8是可包含图1中的SoC的使用图2中的经压缩存储器控制器的示范性计算装置的框图。
具体实施方式
现参考各图,描述本公开的数个示范性方面。词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面不必解释为比其它方面优选或有利。
本文所公开的方面包含在基于中央处理单元(CPU)的系统中使用压缩指示符(CI)提示目录来提供存储器带宽压缩。在一些方面,经压缩存储器控制器经配置以为存储器读取请求和/或存储器写入请求提供存储器带宽压缩。在这点上,图2是包含类似于图1中的基于CPU的系统102的具有多个CPU块104(0)到104(N)的基于CPU的系统202的芯片上系统(SoC)200的示意图。图2中的基于CPU的系统202包含一些与图1中的基于CPU的系统102共用的组件,其由图1和2之间的共用元件编号表示。为了简洁起见,将不再描述这些元件。然而,在图2中的基于CPU的系统202中,提供经压缩存储器控制器204。经压缩存储器控制器204控制对系统存储器206的存取。作为非限制性实例,系统存储器206可包括一或多个双数据速率(DDR)动态随机存取存储器(DRAM)208(0)到208(R))(下文称为“DRAM 208(0)到208(R)”)。在此实例中,根据此处和下文所公开的方面,经压缩存储器控制器204使用存储器带宽压缩。类似于图1中的基于CPU的系统102的存储器控制器114,图2中的基于CPU的系统202的经压缩存储器控制器204通过内部系统总线总线112由CPU块104(0)到104(N)共享。
为了说明图2中的经压缩存储器控制器204的示范性内部组件的较详细示意图,提供图3。在此实例中,在与含有图1和2中的CPU块104(0)到104(N)的半导体裸片302(0)、302(1)分开的半导体裸片300上提供经压缩存储器控制器204。或者,在一些方面,经压缩存储器控制器204可包含于具有CPU块104(0)到104(N)的共用半导体裸片(未图示)中。不管裸片配置如何,提供经压缩存储器控制器204,使得CPU块104(0)到104(N)可经由内部系统总线112向经压缩存储器控制器204作出存储器存取请求,且通过经压缩存储器控制器204从存储器接收数据。
继续参看图3,经压缩存储器控制器204控制对系统存储器206的存储器存取的操作,所述系统存储器在图2和3中示出为包括DRAM 208(0)到208(R)。经压缩存储器控制器204包含用以服务存储器存取请求的多个存储器接口(MEM I/F)304(0)到304(P)(例如DDRDRAM接口)。在这点上,在此实例中,经压缩存储器控制器204包含经压缩控制器306。压缩控制器306响应于来自CPU块104(0)到104(N)的存储器存取请求,控制存储到系统存储器206的数据的压缩以及从系统存储器206检索的数据的解压缩。压缩控制器306还可经配置以执行经由内部系统总线112提供到CPU块104(0)到104(N)的信息的存储器带宽压缩。
如下文将更详细地论述,压缩控制器306可执行任何数目的压缩技术和算法来提供存储器带宽压缩。为压缩控制器306所需的数据结构和其它信息提供本地存储器308,以执行此类压缩技术和算法。在这点上,以静态随机存取存储器(SRAM)310的形式提供本地存储器308。本地存储器308具有将用于压缩控制器306可需要用来执行压缩技术和算法的数据结构和其它数据存储的足够大小。本地存储器308还可经分割以含有高速缓冲存储器,例如4级(L4)高速缓冲存储器,以提供额外的高速缓冲存储器,在经压缩存储器控制器204内内部使用。因此,L4控制器312也可提供于经压缩存储器控制器204中,以提供对L4高速缓冲存储器的存取。增强型压缩技术和算法可需要较大的内部存储器。举例来说,本地存储器308可提供128千字节(kB)的存储器。
另外,如图3中所示,还可为经压缩存储器控制器204提供任选的额外内部存储器314。举例来说,可提供额外内部存储器314作为DRAM。额外内部存储器314可促进与提供存储器带宽压缩和解压缩机制的经压缩存储器控制器204的本地存储器308中相比额外或较大量的数据结构和其它数据的存储,以增加基于CPU的系统202的存储器带宽压缩。内部存储器控制器316提供于经压缩存储器控制器204中,以控制对额外内部存储器314的存储器存取来用于压缩。内部存储器控制器316不可供CPU块104(0)到104(N)存取或检视。
如上所述,图3中的经压缩存储器控制器204可执行存储器带宽压缩,在一些方面,包含零线压缩。本地存储器308可用以存储用于此类压缩的较大数据结构。如下文更详细地论述,存储器带宽压缩可减少存储器存取等待时间,且允许较多的CPU 106(0)、106(1)或其相应线程存取相同数目的存储器信道,同时最小化对存储器存取等待时间的影响。在一些方面,如果此类压缩不是由经压缩存储器控制器204执行(这可导致减少的系统层级功耗),可减少存储器信道的数目,同时与较大数目的存储器信道相比实现类似的等待时间结果。
为图3中的经压缩存储器控制器204中的存储器带宽压缩提供的资源中的每一者,包含本地存储器308和额外内部存储器314,可个别地或彼此组合使用,以实现资源和面积、电力消耗、通过存储器容量压缩实现的增加的存储器容量,以及通过存储器带宽压缩实现的增加的性能之间的所要的平衡。可按需要启用或停用存储器带宽压缩。另外,可启用或停用上文所述的由经压缩存储器控制器204使用的资源,以实现存储器容量和/或带宽压缩效率、电力消耗和性能之间的所要折衷。现在将论述使用可供经压缩存储器控制器204使用的这些资源的示范性存储器带宽压缩技术。
明确地说,且如上所述,一些存储器带宽压缩方案可利用主目录来跟踪系统存储器的每一存储线的压缩状态。然而,此类存储器带宽压缩方案所使用的主目录可消耗系统存储器的不可接受大的部分,可需要实施额外逻辑,和/或可招致用于任何存储器存取请求的额外等待时间。其它存储器带宽压缩机制可使用错误校正码(ECC)字段中的备用位来指示所述系统存储器的每一存储线的压缩状态。虽然此类机制可避免对主目录的需要,但它们可牺牲一些存储器存取性能,因为在存储线的初始读取完成之前,无法确定系统存储器的每一存储线的压缩状态。因此,期望提供一种存储器带宽压缩机制,其避免了使用主目录的缺点,同时提供改进的存储器存取性能。
在这点上,提供图4A和4B来说明用于使用CI提示目录400来提供存储器带宽压缩的系统存储器206和经压缩存储器控制器204的示范性通信流和示范性元件。明确地说,图4A说明使用经压缩存储器控制器204的CI提示目录400来进行存储器读取操作期间的示范性通信流,而图4B说明使用经压缩存储器控制器204的CI提示目录400来进行存储器写入操作期间的示范性通信流。在描述图4A和4B时,为清楚起见,参考图2和3的元件。
如在图4A和4B中所见,系统存储器206包含用于存储经压缩和未经压缩数据的多个存储线402(0)到402(X)。存储线402(0)到402(X)各自细分为相应的存储块404(0)到404(Z)以及406(0)到406(Z),如由系统存储器206的基础存储器架构确定。在一些方面,存储块404(0)到404(Z)、406(0)到406(Z)中的每一者的大小表示可在存储器操作中从系统存储器206读取或写入到所述系统存储器的最小量的数据(即,“存储器存取粒度”)。举例来说,在一些示范性存储器架构中,存储线402(0)到402(X)中的每一者可包括128个字节的数据,细分为两个64字节存储块404(0)到404(Z)、406(0)到406(Z)。一些方面可假定存储线402(0)到402(X)中的每一者可包括较多或较少字节的数据(例如256个字节或64个字节,作为非限制性实例)。类似地,根据一些方面,存储线402(0)到402(X)内的存储块404(0)到404(Z)、406(0)到406(Z)可较大或较小(例如128个字节或32个字节,作为非限制性实例)。在一些方面,存储器读取操作可读取比所述存储块404(0)到404(Z)、406(0)到406(Z)中的每一者的大小少的字节,但仍消耗与存储块404(0)到404(Z)、406(0)到406(Z)中的一者相同量的存储器带宽。
存储块404(0)到404(Z)、406(0)到406(Z)中的每一者与一或多个对应ECC位408(0)到408(Z)、410(0)到410(Z)相关联。按照惯例使用例如ECC位408(0)到408(Z)、410(0)到410(Z)等ECC位来检测和校正存储块404(0)到404(Z)、406(0)到406(Z)内的通常碰到的类型的内部数据讹用。在图4A和4B的实例中,可使ECC位408(0)到408(Z)、410(0)到410(Z)中的一或多者改变用途为存储用于相应存储块404(0)到404(Z)、406(0)到406(Z)的CI 412(0)到412(Z)、414(0)到414(Z)。尽管将图4A和4B中的ECC位408(0)到408(Z)、410(0)到410(Z)描绘为邻近于其相应的存储块404(0)到404(Z)、406(0)到406(Z),但应理解,ECC位408(0)到408(Z)、410(0)到410(Z)可位于系统存储器206内的其它地方。将进一步理解,仅作为非限制性实例,将CI 412(0)到412(Z)、414(0)到414(Z)描述为存储在ECC位408(0)到408(Z)、410(0)到410(Z)中,且一些方面可假定CI 412(0)到412(Z)、414(0)到414(Z)存储在除ECC位408(0)到408(Z)、410(0)到410(Z)之外的存储器位置中。
CI 412(0)到412(Z)、414(0)到414(Z)各自可包括指示存储在系统存储器206的对应存储器块404(0)到404(Z)、406(0)到406(Z)处的数据的压缩状态。在一些方面,CI 412(0)到412(Z)、414(0)到414(Z)中的每一者可包括指示对应存储器块404(0)到404(Z)、406(0)到406(Z)中的数据是经压缩还是未经压缩的单个位。根据一些方面,CI 412(0)到412(Z)、414(0)到414(Z)中的每一者可包括可用于指示对应存储块404(0)到404(Z)、406(0)到406(Z)中的每一者的压缩模式(例如经压缩数据所占用的存储块404(0)到404(Z)、406(0)到406(Z)的数目,作为非限制性实例)的多个位。
为了提供存储器带宽压缩,经压缩存储器控制器204提供CI提示目录400。CI提示目录400包含多个CI提示目录条目416(0)到416(T)。所述多个CI提示目录条目416(0)到416(T)中的每一者存储多个CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)。CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)各自对应于存储线402(0)到402(X),且提供对应存储线402(0)到402(X)的压缩状态的指示。在一些方面,CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)对应于连续存储线402(0)到402(X)。以此方式,当查询CI提示目录400时,存储器存取的局部性可改进命中率(相对于存取不连续存储线402(0)到402(X)的CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W))。根据一些方面,可选择每CI提示目录条目416(0)到416(T)的CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)的数目,以优化系统存储器206的存储器存取粒度。作为非限制性实例,如果系统存储器206的存储器存取粒度为64个字节,那么CI提示目录400可经配置以将CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)的64个字节存储在每一CI提示目录条目416(0)到416(T)中。
在示范性方面中,CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)中的每一者包括两(2)位值,其提供四(4)个可能指示:对应存储线402(0)到402(X)包括指定模式(例如全零,作为非限制性实例);已知经压缩;已知未经压缩;或具有未知的压缩状态。一些方面可假定CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)中的每一者包括一(1)位值,其提供两(2)个可能指示:对应存储线402(0)到402(X)已知为经压缩或未经压缩的(取决于经压缩存储器控制器204的实施方案);或具有未知的压缩状态。在其中支持多个等级的压缩的方面中,CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)中的每一者可包括两(2)个以上位,且除上文所述的指示之外,还可指示对应存储线402(0)到402(X)的多个等级的压缩。
在图4A的实例中,存储器读取请求424指定物理地址426由经压缩存储器控制器204接收,如由箭头428指示。出于说明的目的,在此实例中,假定物理地址426对应于存储器块404(0),其为128字节存储线402(0)的64字节分部。在接收到存储器读取请求424时,经压缩的存储器控制器204不知道存储在存储块404(0)处的数据是否经压缩。经压缩存储器控制器204可继续读取整个存储线402(0),但如果所请求的数据以经压缩形式仅存储在存储块404(0)中,那么存储块404(Z)的读取将经不必要的,且将导致增加的存储器存取等待时间。或者,经压缩存储器控制器204可仅读取存储块404(0),基于对应CI 412(0)来确定存储在其中的数据是否经压缩,且接着如果数据未经压缩,那么读取存储块404(Z)。然而,此方法产生因发布两(2)个单独的存储器读取操作而产生的增加的存储器存取等待时间。因此,在不知道存储块404(0)的压缩状态的情况下,经压缩存储器控制器204冒险执行可能不利地影响存储器带宽的不必要的存储器读取操作。经压缩存储器控制器204还可通过等待发布第二存储器读取事务直到存储块404(0)的压缩状态已知为止,而招致额外存储器读取等待时间。
因此,在接收到存储器读取请求424后,经压缩存储器控制器204即刻向系统存储器206发布存储器读取事务430。存储器读取事务430包含所请求的读取长度值432,其指示将从系统存储器206读取多少存储块404(0)到404(Z)、406(0)到406(Z)。举例来说,在其中每一存储线402(0)到402(X)的长度为128个字节且包括两个64字节存储块404(0)到404(Z)、406(0)到406(Z)的方面中,所请求的读取长度值432可指示将读取仅64个字节,作为存储器读取事务430的一部分,或所请求的读取长度值432可指示将读取存储线402(0)到402(X)中的一者的所有128个字节。如下文更详细地论述,,经压缩存储器控制器204可基于跟踪经压缩存储器读取操作与读取操作的总数的比率,和/或经压缩存储器写入操作与写入操作的总数的比率,来选择所请求的读取长度值432。如果所述跟踪向经压缩存储器控制器204指示存储器读取和/或写入趋向于存取经压缩数据多过未经压缩数据,那么经压缩存储器控制器204可选择使用较小的所请求读取长度值432(例如64个字节)。相反,如果所述跟踪向经压缩存储器控制器204指示存储器读取和/或写入趋向于存取未经压缩数据,那么经压缩存储器控制器204可选择使用较小的所请求读取长度值432(例如128个字节)。
在实际向系统存储器206发布之前,存储器读取事务430可能必须继续通过经压缩存储器控制器204内的若干管线级(未图示)。因此,虽然正处理存储器读取事务430,但与发布存储器读取事务430并行地,经压缩存储器控制器204还存取CI提示目录400,以确定存储在其中的CI提示目录条目416(0)到416(T)是否对应于存储器读取请求424的物理地址426。如果是(即,CI提示目录400上的“命中”),那么经压缩存储器控制器204读取CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)中对应于存储线402(0)的一者。在此实例中,CI提示418(0)对应于存储线402(0)。
基于CI提示418(0),经压缩存储器控制器204确定是否和如何尝试修改待决存储器读取事务430的所请求的读取长度值432。在一些方面,例如,CI提示418(0)可指示存储线402(0)包括指定模式(即,整个存储线402(0)存储值零(0))。在此情况下,经压缩存储器控制器204可响应于存储器读取请求424,立即返回指定模式。如果存储器读取事务430尚未发布,那么经压缩存储器控制器204可取消存储器读取事务430,从而节省原本将浪费的存储器带宽。否则,如果存储器读取事务430已经发布,如由箭头434指示,那么经压缩存储器控制器204可响应于存储器读取事务430,将由箭头436表示的后续响应从系统存储器206丢弃。
一些方面可假定CI提示418(0)可指示存储线402(0)已知为经压缩。在此些情况下,可通过确保待决存储器读取事务430的所请求的读取长度值432不大于必需,来节约存储器带宽。举例来说,如果存储器读取事务430的所请求的读取长度值432为128个字节,但CI提示418(0)指示存储线402(0)已知为经压缩(即,压缩成64个字节),那么将作为存储器读取事务430的一部分读取的额外64个字节表示不必要的开销。因此,经压缩存储器控制器204可将存储线402(0)的经压缩长度与所请求的读取长度值432进行比较。如果存储线402(0)的经压缩长度不小于所请求的读取长度值432(或如果存储器读取事务430已经发布),那么允许存储器读取事务430如发布那样继续。然而,如果存储线402(0)的经压缩长度小于所请求的读取长度值432(且存储器读取事务430尚未发布),那么经压缩存储器控制器204可修改存储器读取事务430的所请求的读取长度值432,以对应于存储线402(0)的经压缩长度。在以上实例中,例如,经压缩存储器控制器204可将所请求的读取长度值432从128个字节修改为64个字节。
根据一些方面,CI提示418(0)可指示存储线402(0)已知为未经压缩。因此,可通过确保待决存储器读取事务430的所请求的读取长度值432足够大以确保存储器读取事务430读取整个存储线402(0)来减少存储器读取等待时间。举例来说,如果存储器读取事务430的所请求的读取长度值432为64个字节,但CI提示418(0)指示存储线402(0)已知为未经压缩(即,128个字节),那么需要第二存储器读取事务(未图示),以检索整个存储线402(0)。因此,经压缩存储器控制器204可将存储线402(0)的长度与所请求的读取长度值432进行比较。如果存储线402(0)的长度不大于所请求的读取长度值432,那么允许存储器读取事务430如发布那样继续。然而,如果存储线402(0)的长度大于所请求的读取长度值432(且存储器读取事务430尚未发布),那么经压缩存储器控制器204可修改存储器读取事务430的所请求的读取长度值432,以对应于存储线402(0)的长度。举例来说,在以上实例中,经压缩存储器控制器204可将所请求的读取长度值432从64个字节修改为128个字节。如果存储器读取事务430已经发布,那么经压缩存储器控制器204仍可通过立即发布至少一个后续存储器读取事务438,而不等待存储器读取事务430完成,来减少存储器读取等待时间。
根据一些方面,CI提示418(0)可指示存储线402(0)的压缩状态是未知的。因为经压缩存储器控制器204不具有关于所请求的读取长度值432的潜在优化将基于的信息,所以存储器读取事务430以未经修改的所请求的读取长度值432继续。然而,在完成存储器读取事务430后,在一些方面,经压缩存储器控制器204可读取存储在ECC位408(0)中的与存储线402(0)相关联的CI 412(0),如由箭头440指示。经压缩存储器控制器204接着可基于CI 412(0)来更新CI提示418(0)。以此方式,对存储线402(0)的后续读取可能够使用CI提示418(0)来优化所请求的读取长度值432。根据一些方面,读取CI 412(0)和更新CI提示418(0)还可在上文关于包括指定模式或已知为压缩或未经压缩的的存储线402(0)所描述的情形中的每一者中发生。
在一些方面,经压缩存储器控制器204可通过提供自适应模式来进一步改进存储器存取等待时间,在自适应模式下,可相比于读取和/或写入的总数目跟踪经压缩数据的读取和/或写入的数目,且可基于此跟踪而选择性地修改用于进行读取操作的操作。此类跟踪的结果接着可由经压缩存储器控制器204用来选择适当的所请求的读取长度值432。根据一些方面,作为非限制性实例,可在每CPU基础、每工作负荷基础、每虚拟机(VM)基础、每容器基础上和/或在每服务质量(QoS)识别符(QoSID)基础上进行此类跟踪。
在这点上,在一些方面,经压缩存储器控制器204可经配置以提供压缩监视器442。作为非限制性实例,压缩监视器442经配置以基于经压缩数据的读取数目、读取操作的总数、经压缩数据的写入数目以及写入操作的总数中的至少一者来跟踪压缩比444。在一些方面,压缩监视器442可提供一或多个计数器446,其用于跟踪经压缩数据的读取数目、读取操作的总数、经压缩数据的写入数目,和/或经压缩存储器控制器204进行的写入操作的总数。压缩比444可接着确定为总读取操作与经压缩读取操作的比率和/或总写入操作与经压缩写入操作的比率。
经压缩存储器控制器204可进一步提供阈值448,压缩监视器442可将其与压缩比444进行比较。如果压缩比444不低于阈值448,那么经压缩存储器控制器204可得出将读取的数据可能经压缩的结论,且可选择较小所请求的读取长度值432,如上文所描述。然而,如果压缩比444低于阈值448,那么经压缩存储器控制器204可确定待读取的数据不大可能经压缩。因此,经压缩存储器控制器204可选择较大的所请求的读取长度值432,如上所述。
如果经压缩存储器控制器204确定物理地址426并不对应于CI提示目录400的所述多个CI提示目录条目416(0)到416(T)中的任一者(即,CI提示目录400上的“未中”),那么在一些方面,经压缩存储器控制器204可收回CI提示目录400的所述多个CI提示目录条目416(0)到416(T)中的现有CI提示目录条目416(0),并安置新的CI提示目录条目416(0)。接着初始化新CI提示目录条目416(0)的多个CI提示418(0)到418(W),以指示每一对应存储线402(0)到402(X)的压缩状态是未知的。在存储器读取事务430完成之后,经压缩存储器控制器204可读取存储在与存储线402(0)相关联的ECC位408(0)到408(Z)中的一或多者中的CI412(0),且可基于CI 412(0)来更新对应于新CI提示目录条目416(0)内的存储线402(0)的CI提示418(0)。
现参看图4B,在一些方面,经压缩存储器控制器204接收存储器写入请求450,如由箭头452指示。存储器写入请求450包含待写入到系统存储器206的写入数据454,以及写入数据454待写入到的系统存储器206的物理地址426两者。出于说明的目的,再次假定物理地址426对应于存储块404(0)。在接收到存储器写入请求450后,经压缩存储器控制器204可进行操作来压缩写入数据454,且基于压缩写入数据454的结果,可确定写入数据454的压缩模式。作为非限制性实例,压缩模式可指示写入数据454是否成功地压缩,和/或经压缩写入数据454将占用的存储块404(0)到404(Z)、406(0)到406(Z)的数目。基于压缩模式,经压缩存储器控制器204产生写入数据454的CI 456。
经压缩存储器控制器204接着可将写入数据454写入到存储块404(0)到404(Z)中的一或多者,如由箭头458指示。经压缩存储器控制器204还将所产生的CI 456写入到CI412(0)到412(Z)中。作为非限制性实例,CI 412(0)到412(Z)可存储在写入数据454写入到的一或多个存储块404(0)到404(Z)的ECC位408(0)到408(Z)中,如由箭头460指示。在一些方面,可使用另一存储器存储机制来存储CI 412(0)到412(Z)。与写入所述写入数据454并行地,经压缩存储器控制器204还存取CI提示目录400,以确定存储在其中的CI提示目录条目416(0)到416(T)是否对应于存储器写入请求450的物理地址426。如果是(即,CI提示目录400上的“命中”),那么经压缩存储器控制器204基于所产生的CI 456来更新对应于存储线402(0)的CI提示418(0)到418(W)、420(0)到420(W)、422(0)到422(W)中的一者。在此实例中,经压缩存储器控制器204更新对应于存储线402(0)的CI提示418(0),如由箭头462指示。
以与如上文相对于图4A所描述的方式基本上相同的方式来处置CI提示目录400上的“未中”。响应于未中,在一些方面,经压缩存储器控制器204可收回CI提示目录400的多个CI提示目录条目416(0)到416(T)中的现有CI提示目录条目416(0),且安置新的CI提示目录条目416(0)。接着初始化新CI提示目录条目416(0)的多个CI提示418(0)到418(W),以指示每一对应存储线402(0)到402(X)的压缩状态是未知的。经压缩存储器控制器204可读取存储在与存储线402(0)相关联的ECC位408(0)到408(Z)中的一或多者中的CI 412(0),且可基于CI 412(0)来更新对应于新CI提示目录条目416(0)内的存储线402(0)的CI提示418(0)。
图5是说明用于通过图2的经压缩存储器控制器204使用图4A和4B的CI提示目录400来执行存储器读取操作的示范性操作的流程图。为清楚起见,在描述图5时参考图2、4A和4B的元件。图5中的操作以经压缩存储器控制器204接收包括系统存储器206中的存储线402(0)的物理地址426的存储器读取请求424而开始(框500)。在这点上,经压缩存储器控制器204可在本文中被称作“用于接收包括系统存储器中的存储线的物理地址的存储器读取请求的装置”。经压缩存储器控制器204接下来基于物理地址426起始存储器读取事务430,其包括到系统存储器206的所请求的读取长度值432(框502)。因此,经压缩存储器控制器204可在本文中被称作“用于基于物理地址起始包括到系统存储器的所请求的读取长度值的存储器读取事务的装置”。与起始存储器读取事务430并行地,经压缩存储器控制器204确定物理地址426是否对应于经压缩存储器控制器204的CI提示目录400的多个CI提示目录条目416(0)到416(T)中的一CI提示目录条目416(0)(框504)。经压缩存储器控制器204因此可在本文中被称作“用于与起始存储器读取事务并行地,确定物理地址是否对应于经压缩存储器控制器的CI提示目录的多个CI提示目录条目中的一CI提示目录条目的装置”。
如果物理地址426对应于经压缩存储器控制器204的CI提示目录400的多个CI提示目录条目416(0)到416(T)中的一CI提示目录条目416(0)(即,CI提示目录400上的“命中”),那么经压缩存储器控制器204从CI提示目录条目416(0)读取针对存储线402(0)的CI提示418(0)(框506)。在这点上,经压缩存储器控制器204可在本文中被称作“用于响应于确定物理地址对应于经压缩存储器控制器的CI提示目录的多个CI提示目录条目中的一CI提示目录条目,从CI提示目录条目读取多个CI提示中针对存储线的一CI提示的装置”。经压缩存储器控制器204接着基于针对存储线402(0)的CI提示418(0)来修改存储器读取事务430的所请求的读取长度值432(框508)。因此,经压缩存储器控制器204可在本文中被称作“用于响应于确定物理地址对应于经压缩存储器控制器的CI提示目录的多个CI提示目录条目中的一CI提示目录条目,基于针对存储线的CI提示来修改存储器读取事务的所请求的读取长度值的装置”。
图6A到6G是说明用于通过图2的经压缩存储器控制器204使用存储器带宽压缩来执行存储器读取操作的进一步示范性操作的流程图。图6A说明用于接收存储器读取请求424并起始存储器读取事务430的示范性操作,而图6B说明用于使用CI提示目录400来确定存储线402(0)的压缩状态(如果存在)的示范性操作。图6C、6D、6E和6F说明可在存储线402(0)分别包括指定模式、已知经压缩、已知未经压缩,或具有未知的压缩状态时进行的示范性操作。图6G说明可在CI提示目录400上的“未中”的情况下由经压缩存储器控制器204进行的示范性操作。为清楚起见,在描述图6A到6G时参考图2、4A和4B的元件。
在图6A中,经压缩存储器控制器204的根据一些方面的操作以经压缩存储器控制器204使用压缩监视器442基于经压缩数据的读取数、读取操作的总数、经压缩数据的写入数和写入操作的总数中的至少一者来跟踪压缩比444而开始(框600)。经压缩存储器控制器204接收存储器读取请求424,其包括系统存储器206中的存储线402(0)的物理地址426(框602)。在使用压缩监视器442的经压缩存储器控制器204的方面中,经压缩存储器控制器204可基于压缩比444来确定所请求的读取长度值432(框604)。
经压缩存储器控制器204接着基于物理地址426起始包括到系统存储器206的所请求的读取长度值432的存储器读取事务430(框606)。与起始存储器读取事务430并行地,经压缩存储器控制器204还确定物理地址426是否对应于经压缩存储器控制器204的CI提示目录400的多个CI提示目录条目416(0)到416(T)中的一CI提示目录条目416(0)(框608)。如果物理地址426并不对应于所述多个CI提示目录条目416(0)到416(T)中的任一者(即,CI提示目录400上的“未中”),那么处理在图6G中的框610处恢复。然而,如果经压缩存储器控制器204在决策框608处确定物理地址426的确对应于CI提示目录条目416(0)(即,“命中”),处理在图6B的框612处恢复。
现参看图6B,如果CI提示目录400上的命中发生,经压缩存储器控制器204接下来从CI提示目录条目416(0)读取针对存储线402(0)的CI提示418(0)(框612)。在一些方面,经压缩存储器控制器204接着确定CI提示418(0)是否指示存储线402(0)包括指定模式(框614)。如果确定存储线402(0)包括指定模式,处理在图6C的框616处恢复。否则,根据一些方面的经压缩存储器控制器204可确定CI提示418(0)是否指示存储线402(0)已知为经压缩(框618)。如果是,那么处理在图6D的框620处恢复。
如果经压缩存储器控制器204在决策框618处确定CI提示418(0)不指示存储线402(0)已知为经压缩,那么经压缩存储器控制器204的一些方面可确定CI提示418(0)是否指示存储线402(0)已知为未经压缩(框622)。如果确定存储线402(0)未经压缩,那么处理在图6E的框624处恢复。否则,根据一些方面,经压缩存储器控制器204可确定CI提示418(0)是否指示存储线402(0)的压缩状态是未知的(框626)。如果是,那么处理在图6F的框628处恢复。如果经压缩存储器控制器204在决策框626处确定CI提示418(0)不指示存储线402(0)的压缩状态是未知的,那么经压缩存储器控制器204可得出CI提示418(0)为无效的结论(框630)。注意,此情况可仅在经压缩存储器控制器204的方面中产生,其中CI提示418(0)可具有先前不与存储线402(0)的压缩状态相关联的值。
现在转而参看图6C,响应于在图6B的决策框614处确定存储线402(0)包括指定模式(例如全零),经压缩存储器控制器204响应于存储器读取请求424返回指定模式(在一方面,其可为全零)(框616)。在一些方面,经压缩存储器控制器204接着可确定存储器读取事务430是否已向系统存储器206发布(框632)。如果否,经压缩存储器控制器204可取消存储器读取事务430(框634)。处理接着在图6F的框636处恢复。否则,可按照惯例处理存储器读取事务430,且经压缩存储器控制器204可丢弃来自系统存储器206的对存储器读取事务430的后续响应(框638)。处理接着在图6F的框636处恢复。
在图6D中,在图6B的决策框618处确定存储线402(0)已知为经压缩之后,经压缩存储器控制器204确定存储线402(0)的经压缩长度是否不等于所请求的读取长度值432(框620)。如果存储线402(0)的经压缩长度等于所请求的读取长度值432,那么经压缩存储器控制器204允许存储器读取事务430如发布那样继续(框640)。。处理接着在图6F的框636处恢复。然而,如果在决策框620处确定存储线402(0)的经压缩长度不等于所请求的读取长度值432,那么存在通过减小存储器读取事务430的所请求的读取长度值432来减少存储器带宽的机会。
因此,经压缩存储器控制器204接着可确定存储器读取事务430是否已向系统存储器206发布(框642)。如果存储器读取事务430已经发布,那么修改所请求的读取长度值432就太迟了,且因此经压缩存储器控制器204允许存储器读取事务430如发布那样继续(框640)。处理接着在图6F的框636处恢复。如果存储器读取事务430尚未由经压缩存储器控制器204发布,那么通过修改存储器读取事务430的所请求的读取长度值432以对应于存储线402(0)的经压缩长度,来修改存储器读取事务430的所请求的读取长度值432(框644)。处理接着在图6F的框636处恢复。
现参看图6E,在图6B的决策框622处确定存储线402(0)已知为未经压缩后,经压缩存储器控制器204即刻确定存储线402(0)的长度是否大于所请求的读取长度值432(框624)。如果否,经压缩存储器控制器204允许存储器读取事务430如发布那样继续(框646)。处理接着在图6F的框636处恢复。然而,如果经压缩存储器控制器204在决策框624处确定存储线402(0)的长度不大于所请求的读取长度值432,那么存在通过增加存储器读取事务430的所请求的读取长度值432来减少存储器带宽的机会。
因此,经压缩存储器控制器204接着可确定存储器读取事务430是否已向系统存储器206发布(框648)。如果存储器读取事务430已经发布,那么无法修改所请求的读取长度值432。然而,经压缩存储器控制器204仍可通过立即发布至少一个后续存储器读取事务438而不等待存储器读取事务430完成来减少存储器读取等待时间。因此,经压缩存储器控制器204基于物理地址426和所请求的读取长度值432来起始向系统存储器206的至少一个后续存储器读取事务438(框650)。存储器读取事务430接着如发布那样继续(框646)。处理接着在图6F的框636处恢复。如果经压缩存储器控制器204在决策框648处确定存储器读取事务430尚未发布,那么在一些方面,经压缩存储器控制器204可通过修改存储器读取事务430的所请求的读取长度值432以对应于存储线402(0)的长度,来修改存储器读取事务430的所请求的读取长度值432(框652)。处理接着在图6F的框636处恢复。
现在转而参看图6F,如果经压缩存储器控制器204在图6B的决策框626处确定存储线402(0)具有未知的压缩状态,那么根据一些方面,经压缩存储器控制器204可允许存储器读取事务430在所请求的读取长度值432未经修改的情况下继续(框628)。在存储器读取事务430完成后,经压缩存储器控制器204可即刻读取存储在一或多个ECC位408(0)到408(Z)中的与存储线402(0)相关联的CI 412(0)(框636)。经压缩存储器控制器204接着可基于CI412(0)来更新CI提示418(0)(框654)。
在图6G中,在图6A的决策框608处确定物理地址426不对应于CI提示目录400的多个CI提示目录条目416(0)到416(T)中的任一者之后,在一些方面,经压缩存储器控制器204可收回(即,丢弃而不保存)CI提示目录400的所述多个CI提示目录条目416(0)到416(T)中的现有CI提示目录条目416(0)(框610)。经压缩存储器控制器204接着安置新的CI提示目录条目416(0)(框656)。经压缩存储器控制器204初始化新的CI提示目录条目416(0)的多个CI提示418(0)到418(W),以指示每一对应存储线402(0)到402(X)的压缩状态是未知的(框658)。在存储器读取事务430完成后,经压缩存储器控制器204可进行图6G的框660中所示的操作。经压缩存储器控制器204可读取存储在一或多个错误校正码(ECC)位408(0)到408(Z)中的与存储线402(0)相关联的CI 412(0)(框662)。经压缩存储器控制器204接着可基于CI412(0)来更新对应于新的CI提示目录条目416(0)的所述多个CI提示418(0)到418(W)内的存储线402(0)的CI提示418(0)(框664)。
为了说明用于通过图2的经压缩存储器控制器204的一些方面使用存储器带宽压缩执行存储器写入操作的示范性操作,提供图7A和7B。为清楚起见,可在描述图7A和7B时参考图2、4A和4B的元件。在图7A中,操作以经压缩存储器控制器204接收包括写入数据454和系统存储器206中的存储线402(0)的物理地址426的存储器写入请求450而开始(框700)。经压缩存储器控制器204因此可在本文中被称作“用于接收包括写入数据和系统存储器中的存储线的物理地址的存储器写入请求的装置”。经压缩存储器控制器204为写入数据454确定压缩模式(框702)。在这点上,经压缩存储器控制器204可在本文中被称作“用于为写入数据确定压缩模式的装置”。作为非限制性实例,压缩模式可指示写入数据454是否成功地压缩,和/或经压缩写入数据454将占用的存储块404(0)到404(Z)、406(0)到406(Z)的数目。经压缩存储器控制器204接着基于压缩模式产生写入数据454的CI 456(框704)。因此,经压缩存储器控制器204可在本文中被称作“用于基于压缩模式产生写入数据的CI的装置”。
经压缩存储器控制器204接下来将写入数据454写入到系统存储器206中的存储线402(0)(框706)。在这点上,经压缩存储器控制器204可在本文中被称作“用于将写入数据写入到系统存储器中的存储线的装置”。经压缩存储器控制器204还将所产生的CI 456写入到系统存储器206的存储线402(0)的一或多个ECC位408(0)中(框708)。经压缩存储器控制器204因此可在本文中被称作“用于将所产生的CI写入到系统存储器的存储线的一或多个ECC位中的装置”。与将写入数据454写入到存储线402(0)并行地,经压缩存储器控制器204还确定物理地址426是否对应于经压缩存储器控制器204的CI提示目录400的多个CI提示目录条目416(0)到416(T)中的一CI提示目录条目416(0)(框710)。因此,经压缩存储器控制器204可在本文中被称作“用于与将写入数据写入到系统存储器中的存储线并行地,确定物理地址是否对应于经压缩存储器控制器的CI提示目录的多个CI提示目录条目中的一CI提示目录条目的装置”。如果物理地址426不对应于经压缩存储器控制器204的CI提示目录400的所述多个CI提示目录条目416(0)到416(T)中的一CI提示目录条目416(0)(即,CI提示目录400上的“未中”),那么处理在图7B的框712处恢复。然而,如果经压缩存储器控制器204在框710处确定物理地址426对应于CI提示目录条目416(0),那么经压缩存储器控制器204基于所产生的CI 456来更新CI提示目录条目416(0)的所述多个CI提示418(0)到418(W)中对应于存储线402(0)的CI提示418(0)(框714)。在这点上,经压缩存储器控制器204可在本文中被称作“用于基于所产生的CI来更新CI提示目录条目的多个CI提示中对应于所述存储线的CI提示的装置”。
现参看图7B,经压缩存储器控制器204在检测到CI提示目录400上的未中后,可即刻收回CI提示目录400的所述多个CI提示目录条目416(0)到416(T)中的现有CI提示目录条目416(0)(框712)。经压缩存储器控制器204接下来安置新的CI提示目录条目416(0)(框716)。在一些方面,收回现有CI提示目录条目416(0)和安置新的CI提示目录条目416(0)的决策可基于概率性确定,使得收回和安置仅以指定概率(例如10%)出现。通过经压缩存储器控制器204来初始化新的CI提示目录条目416(0)的多个CI提示418(0)到418(W),以指示每一对应存储线402(0)到402(X)的压缩状态是未知的(框718)。经压缩存储器控制器204接着基于所产生的CI 456来更新对应于新的CI提示目录条目416(0)的所述多个CI提示418(0)到418(W)内的存储线402(0)的CI提示418(0)(框720)。
根据本文所公开的各方面在基于CPU的系统中使用CI提示目录提供存储器带宽压缩可在任何基于处理器的装置中提供或集成到任何基于处理器的装置中。实例包含但不限于机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、智能电话、平板电脑、平板手机、服务器、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器和汽车。
在这点上,图8说明可结合图2的经压缩存储器控制器(CMC)204使用SoC 200的基于处理器的系统800的实例。在此实例中,基于处理器的系统800包含一或多个CPU 802,各自包含一或多个处理器804。CPU 802可具有耦合到处理器804以用于快速存取临时存储数据的高速缓冲存储器806。CPU 802耦合到系统总线808,且可互耦包含于基于处理器的系统800中的装置。众所周知,CPU 802通过经由系统总线808交换地址、控制和数据信息与这些其它装置通信。举例来说,CPU 802可将总线事务请求传送到CMC 204(作为从属装置的实例)。尽管图8中未说明,但可提供多个系统总线808。
其它装置可连接到系统总线808。如图8中所说明,作为实例,这些装置可包含存储器系统810、一或多个输入装置812、一或多个输出装置814、一或多个网络接口装置816以及一或多个显示器控制器818。输入装置812可包含任何类型的输入装置,包含但不限于输入按键、开关、话音处理器等。输出装置814可包含任何类型的输出装置,包含(但不限于)音频、视频、其它视觉指示器等。网络接口装置816可为经配置以允许将数据交换到网络820以及从网络820交换数据的任何装置。网络820可为任何类型的网络,包含但不限于有线或无线网络、私用或公用网络、局域网(LAN)、广局域网、无线局域网、蓝牙(BT)和因特网。网络接口装置816可经配置以支持所要的任何类型的通信协议。存储器系统810可包含一或多个存储器单元822(0)-822(N)。
CPU 802还可经配置以经由系统总线808接入显示器控制器818以控制发送到一或多个显示器824的信息。显示器控制器818将信息发送到显示器824,以经由一或多个视频处理器826显示,所述视频处理器处理将显示成适合于显示器824的格式的信息。显示器824可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)显示器、等离子显示器等。
本文所述的装置可在任何电路中使用,例如硬件组件、集成电路(IC)或IC芯片。本文所公开的存储器可为任何类型和大小的存储器,并且可经配置以存储所要的任何类型的信息。为清楚说明这种可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。本领域的技术人员可针对每一具体应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会引起脱离本发明的范围。
结合本文中所公开的各方面所描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或其经设计以执行本文中所描述的功能的任何组合。处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器与DSP核心结合,或任何其它此类配置。
还应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤是为了提供实例和论述。可用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,在单个操作步骤中描述的操作实际上可在数个不同步骤中执行。另外,可组合在示范性方面中论述的一或多个操作步骤。将理解,所属领域的技术人员将容易明白,流程图中所说明的操作步骤可经受众多不同修改。所属领域的技术人员还将理解,可使用多种不同技术和技法中的任一来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本发明的先前描述以使本领域的技术人员能够制作或使用本公开。所属领域的技术人员将容易明白对本公开的各种修改,且本文中所定义的一般原理可适用于其它变化形式,而不会脱离本公开的精神或范围。因此,本发明无意限于本文中所描述的实例和设计,而应被赋予与本文中所公开的原理和新颖特征相一致的最广范围。
Claims (38)
1.一种经压缩存储器控制器,其包括:
存储器接口,其经配置以经由系统总线来存取系统存储器;以及
压缩指示符CI提示目录,其包括多个CI提示目录条目,各自包含多个CI提示;
所述经压缩存储器控制器经配置以:
接收包括所述系统存储器中的存储线的物理地址的存储器读取请求;
基于所述物理地址,起始包括到所述系统存储器的所请求的读取长度值的存储器读取事务;
与起始所述存储器读取事务并行地,确定所述物理地址是否对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目;以及
响应于确定所述物理地址对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目:
从所述CI提示目录条目读取所述多个CI提示中针对所述存储线的CI提示;
以及
基于针对所述存储线的所述CI提示,修改所述存储器读取事务的所述所请求的读取长度值。
2.根据权利要求1所述的经压缩存储器控制器,其进一步经配置以在基于针对所述存储线的所述CI提示,修改所述存储器读取事务的所述所请求的读取长度值之前:
确定所述存储器读取事务是否已由所述经压缩存储器控制器发布给所述系统存储器;
其中所述经压缩存储器控制器经配置以响应于确定所述存储器读取事务尚未由所述经压缩存储器控制器发布给所述系统存储器,基于针对所述存储线的所述CI提示,修改所述存储器读取事务的所述所请求的读取长度值。
3.根据权利要求2所述的经压缩存储器控制器,其进一步经配置以在确定所述存储器读取事务已由所述经压缩存储器控制器发布给所述系统存储器之前:
确定所述CI提示是否指示所述存储线包括指定模式;以及
响应于确定所述CI提示指示所述存储线包括指定模式:
响应于所述存储器读取请求返回所述指定模式;
响应于确定所述存储器读取事务尚未由所述经压缩存储器控制器发布给所述系统存储器,取消所述存储器读取事务;以及
响应于确定所述存储器读取事务已由所述经压缩存储器控制器发布给所述系统存储器,丢弃来自所述系统存储器的对所述存储器读取事务的后续响应。
4.根据权利要求2所述的经压缩存储器控制器,其进一步经配置以在确定所述存储器读取事务已由所述经压缩存储器控制器发布给所述系统存储器之前:
确定所述CI提示是否指示所述存储线已知为经压缩;以及
响应于确定所述CI提示指示所述存储线已知为经压缩,确定所述存储线的经压缩长度是否小于所述所请求的读取长度值;
其中所述经压缩存储器控制器经配置以进一步响应于确定所述存储线的所述经压缩长度小于所述所请求的读取长度值,通过修改所述存储器读取事务的所述所请求的读取长度值以对应于所述存储线的所述经压缩长度,来基于针对所述存储线的所述CI提示,修改所述存储器读取事务的所述所请求的读取长度值。
5.根据权利要求2所述的经压缩存储器控制器,其进一步经配置以在确定所述存储器读取事务已由所述经压缩存储器控制器发布给所述系统存储器之前:
确定所述CI提示是否指示所述存储线已知为未经压缩;以及
响应于确定所述CI提示指示所述存储线已知为未经压缩,确定所述存储线的长度是否大于所述所请求的读取长度值;
其中所述经压缩存储器控制器经配置以进一步响应于确定所述存储线的所述长度大于所述所请求的读取长度值,通过修改所述存储器读取事务的所述所请求的读取长度值以对应于所述存储线的所述长度,来基于针对所述存储线的所述CI提示,修改所述存储器读取事务的所述所请求的读取长度值。
6.根据权利要求5所述的经压缩存储器控制器,其进一步经配置以响应于确定所述存储线的所述长度大于所述所请求的读取长度值,且所述存储器读取事务已由所述经压缩存储器控制器发布给所述系统存储器,基于所述物理地址和所述所请求的读取长度值,起始向所述系统存储器的至少一个后续存储器读取事务。
7.根据权利要求2所述的经压缩存储器控制器,其进一步经配置以在基于针对所述存储线的所述CI提示修改所述存储器读取请求的所述所请求的读取长度值之前:
确定所述CI提示是否指示所述存储线的压缩状态是未知的;以及
响应于确定所述CI提示指示所述存储线的所述压缩状态是未知的,允许所述存储器读取事务在所述所请求的读取长度值未经修改的情况下继续。
8.根据权利要求1所述的经压缩存储器控制器,其进一步经配置以在所述存储器读取事务的完成后,即刻:
读取存储在一或多个错误校正码ECC位中的与所述存储线相关联的CI;以及基于所述CI来更新所述CI提示。
9.根据权利要求1所述的经压缩存储器控制器,其进一步经配置以响应于确定所述物理地址并不对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目:
收回所述CI提示目录的所述多个CI提示目录条目中的现有CI提示目录条目;
安置所述多个CI提示目录条目中的新CI提示目录条目;
初始化所述新CI提示目录条目的所述多个CI提示,以指示每一对应存储线的压缩状态是未知的;以及
在所述存储器读取事务完成后,即刻:
读取存储在一或多个错误校正码ECC位中的与所述存储线相关联的CI;以及
基于所述CI来更新对应于所述存储线的所述CI提示。
10.根据权利要求9所述的经压缩存储器控制器,其进一步经配置以基于所述经压缩存储器控制器所做出的概率性确定,收回所述现有CI提示目录条目,安置所述新CI提示目录条目,且初始化所述新CI提示目录条目的所述多个CI提示。
11.根据权利要求1所述的经压缩存储器控制器,其中所述多个CI提示中的每一CI提示包括两(2)个位,且指示对应于所述CI提示的所述存储线是否已知具有长度零(0)、已知经压缩、已知未经压缩,或具有未知的压缩状态。
12.根据权利要求1所述的经压缩存储器控制器,其中所述多个CI提示中的每一CI提示包括一(1)个位,且指示以下各项中的一者:对应于所述CI提示的所述存储线是否已知为经压缩或已知为未经压缩,或具有未知的压缩状态。
13.根据权利要求1所述的经压缩存储器控制器,其进一步包括压缩监视器,所述压缩监视器经配置以基于经压缩数据的读取数、读取操作的总数、经压缩数据的写入数和写入操作的总数中的至少一者来跟踪压缩比;
所述经压缩存储器控制器进一步经配置以基于所述压缩比来确定所述所请求的读取长度值。
14.根据权利要求1所述的经压缩存储器控制器,其集成到集成电路IC中。
15.根据权利要求1所述的经压缩存储器控制器,其集成到选自由以下各项组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;智能电话;平板计算机;平板手机;计算机;便携式计算机;桌上型计算机;个人数字助理PDA;监视器;计算机监视器;电视机;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;以及汽车。
16.一种经压缩存储器控制器,其包括:
存储器接口,其经配置以经由系统总线来存取系统存储器;以及
压缩指示符CI提示目录,其包括多个CI提示目录条目,各自包含多个CI提示;
所述经压缩存储器控制器经配置以:
接收包括写入数据和所述系统存储器中的存储线的物理地址的存储器写入请求;
为所述写入数据确定压缩模式;
基于所述压缩模式为所述写入数据产生CI;
将所述写入数据写入到所述系统存储器中的所述存储线;
将所述所产生的CI写入到所述系统存储器中的所述存储线的一或多个错误校正码ECC位中;以及
与将所述写入数据写入到所述系统存储器中的所述存储线并行地:
确定所述物理地址是否对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目;以及
响应于确定所述物理地址对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,基于所述所产生的CI来更新所述CI提示目录条目的所述多个CI提示中对应于所述存储线的CI提示。
17.根据权利要求16所述的经压缩存储器控制器,其进一步经配置以响应于确定所述物理地址并不对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目:
收回所述CI提示目录的所述多个CI提示目录条目中的现有CI提示目录条目;
安置所述多个CI提示目录条目中的新CI提示目录条目;
初始化所述新CI提示目录条目的所述多个CI提示,以指示每一对应存储线的压缩状态是未知的;以及
基于所述所产生的CI来更新所述新CI提示目录条目的所述多个CI提示内对应于所述存储线的所述CI提示。
18.根据权利要求17所述的经压缩存储器控制器,其进一步经配置以基于所述经压缩存储器控制器所做出的概率性确定,收回所述现有CI提示目录条目,安置所述新CI提示目录条目,且初始化所述新CI提示目录条目的所述多个CI提示。
19.根据权利要求16所述的经压缩存储器控制器,其集成到集成电路IC中。
20.根据权利要求16所述的经压缩存储器控制器,其集成到选自由以下各项组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;智能电话;平板计算机;平板手机;计算机;便携式计算机;桌上型计算机;个人数字助理PDA;监视器;计算机监视器;
电视机;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;以及汽车。
21.一种用于提供存储器带宽压缩的方法,所述方法包括:
通过经压缩存储器控制器,接收存储器读取请求,包括系统存储器中的存储线的物理地址;
基于所述物理地址,起始包括到所述系统存储器的所请求的读取长度值的存储器读取事务;
与起始所述存储器读取事务并行地,确定所述物理地址是否对应于所述经压缩存储器控制器的压缩指示符CI提示目录的多个CI提示目录条目中的一CI提示目录条目;
响应于确定所述物理地址对应于所述经压缩存储器控制器的所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目:
从所述CI提示目录条目读取所述多个CI提示中针对所述存储线的CI提示;
以及
基于针对所述存储线的所述CI提示,修改所述存储器读取事务的所述所请求的读取长度值。
22.根据权利要求21所述的方法,其进一步包括在基于针对所述存储线的所述CI提示修改所述存储器读取事务的所述所请求的读取长度值之前:
确定所述存储器读取事务是否已由所述经压缩存储器控制器发布给所述系统存储器;
其中基于针对所述存储线的所述CI提示来修改所述存储器读取事务的所述所请求的读取长度值是响应于确定所述存储器读取事务尚未由所述经压缩存储器控制器发布给所述系统存储器。
23.根据权利要求22所述的方法,其进一步包括在基于针对所述存储线的所述CI提示修改所述存储器读取请求的所述所请求的读取长度值之前:
确定所述CI提示是否指示所述存储线包括指定模式;以及
响应于确定所述CI提示指示所述存储线包括指定模式:
响应于所述存储器读取请求返回所述指定模式;
响应于确定所述存储器读取事务尚未由所述经压缩存储器控制器发布给所述系统存储器,取消所述存储器读取事务;以及
响应于确定所述存储器读取事务已由所述经压缩存储器控制器发布给所述系统存储器,丢弃来自所述系统存储器的对所述存储器读取事务的后续响应。
24.根据权利要求22所述的方法,其进一步包括在基于针对所述存储线的所述CI提示修改所述存储器读取事务的所述所请求的读取长度值之前:
确定所述CI提示是否指示所述存储线已知为经压缩;以及
响应于确定所述CI提示指示所述存储线已知为经压缩,确定所述存储线的经压缩长度是否小于所述所请求的读取长度值;
其中:
基于针对所述存储线的所述CI提示来修改所述存储器读取事务的所述所请求的读取长度值是进一步响应于确定所述存储线的所述经压缩长度小于所述所请求的读取长度值;以及
修改所述存储器读取事务的所述所请求的读取长度值包括修改所述存储器读取事务的所述所请求的读取长度值以对应于所述存储线的所述经压缩长度。
25.根据权利要求22所述的方法,其进一步包括在基于针对所述存储线的所述CI提示修改所述存储器读取事务的所述所请求的读取长度值之前:
确定所述CI提示是否指示所述存储线已知为未经压缩;以及
响应于确定所述CI提示指示所述存储线已知为未经压缩,确定所述存储线的长度是否大于所述所请求的读取长度值;
其中:
基于针对所述存储线的所述CI提示来修改所述存储器读取事务的所述所请求的读取长度值是进一步响应于确定所述存储线的所述长度大于所述所请求的读取长度值;以及
修改所述存储器读取事务的所述所请求的读取长度值包括修改所述存储器读取事务的所述所请求的读取长度值以对应于所述存储线的所述长度。
26.根据权利要求25所述的方法,其进一步包括响应于确定所述存储线的所述长度大于所述所请求的读取长度值,且所述存储器读取事务已由所述经压缩存储器控制器发布给所述系统存储器,基于所述物理地址和所述所请求的读取长度值,起始向所述系统存储器的至少一个后续存储器读取事务。
27.根据权利要求22所述的方法,其进一步包括在基于针对所述存储线的所述CI提示修改所述存储器读取事务的所述所请求的读取长度值之前:
确定所述CI提示是否指示所述存储线的压缩状态是未知的;以及
响应于确定所述CI提示指示所述存储线的所述压缩状态是未知的,允许所述存储器读取事务在所述所请求的读取长度值未经修改的情况下继续。
28.根据权利要求21所述的方法,其进一步包括在所述存储器读取事务完成后,即刻:
读取存储在一或多个错误校正码ECC位中的与所述存储线相关联的CI;以及基于所述CI来更新所述CI提示。
29.根据权利要求21所述的方法,其进一步包括响应于确定所述物理地址并不对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目:
收回所述CI提示目录的所述多个CI提示目录条目中的现有CI提示目录条目;
安置所述多个CI提示目录条目中的新CI提示目录条目;
初始化所述新CI提示目录条目的所述多个CI提示,以指示每一对应存储线的压缩状态是未知的;以及
在所述存储器读取事务完成后,即刻:
读取存储在一或多个错误校正码ECC位中的与所述存储线相关联的CI;以及
基于所述CI来更新所述新CI提示目录条目的所述多个CI提示内对应于所述存储线的所述CI提示。
30.根据权利要求29所述的方法,其中基于概率性确定来执行收回所述现有CI提示目录条目,安置所述新CI提示目录条目,和初始化所述新CI提示目录条目的所述多个CI提示。
31.根据权利要求21所述的方法,其中所述多个CI提示的每一CI提示包括两(2)个位,且指示对应于所述CI提示的所述存储线是否已知具有长度零(0)、已知为经压缩、已知为未经压缩,或具有未知的压缩状态。
32.根据权利要求21所述的方法,其中所述多个CI提示中的每一CI提示包括一(1)个位,且指示以下各项中的一者:对应于所述CI提示的所述存储线是否已知经压缩或已知未经压缩,或具有未知的压缩状态。
33.根据权利要求21所述的方法,其进一步包括:
通过所述经压缩存储器控制器的压缩监视器,基于经压缩数据的读取数、读取操作的总数、经压缩数据的写入数和写入操作的总数中的至少一者来跟踪压缩比;以及
基于所述压缩比确定所述所请求的读取长度值。
34.一种用于提供存储器带宽压缩的方法,所述方法包括:
通过经压缩存储器控制器接收包括写入数据和系统存储器中的存储线的物理地址的存储器写入请求;
为所述写入数据确定压缩模式;
基于所述压缩模式产生用于所述写入数据的压缩指示符CI;
将所述写入数据写入到所述系统存储器中的所述存储线;
将所述所产生的CI写入到所述系统存储器的所述存储线的一或多个错误校正码ECC位中;以及
与将所述写入数据写入到所述系统存储器中的所述存储线并行地:
确定所述物理地址是否对应于所述经压缩存储器控制器的CI提示目录的多个CI提示目录条目中的一CI提示目录条目;以及
响应于确定所述物理地址对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,基于所述所产生的CI来更新所述CI提示目录条目的多个CI提示中对应于所述存储线的CI提示。
35.根据权利要求34所述的方法,其进一步包括响应于确定所述物理地址并不对应于所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目:
收回所述CI提示目录的所述多个CI提示目录条目中的现有CI提示目录条目;
安置所述多个CI提示目录条目中的新CI提示目录条目;
初始化所述新CI提示目录条目的所述多个CI提示,以指示每一对应存储线的压缩状态是未知的;以及
基于所述所产生的CI来更新所述新CI提示目录条目的所述多个CI提示内对应于所述存储线的所述CI提示。
36.根据权利要求35所述的方法,其中基于概率性确定来执行收回所述现有CI提示目录条目,安置所述新CI提示目录条目,和初始化所述新CI提示目录条目的所述多个CI提示。
37.一种经压缩存储器控制器,其包括:
用于接收包括系统存储器中的存储线的物理地址的存储器读取请求的装置;
用于基于所述物理地址,起始包括到所述系统存储器的所请求的读取长度值的存储器读取事务的装置;
用于与起始所述存储器读取事务并行地,确定所述物理地址是否对应于所述经压缩存储器控制器的压缩指示符CI提示目录的多个CI提示目录条目中的一CI提示目录条目的装置;
用于响应于确定所述物理地址对应于经压缩存储器控制器的所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,从所述CI提示目录条目读取多个CI提示中针对所述存储线的CI提示的装置;以及
用于响应于确定所述物理地址对应于所述经压缩存储器控制器的所述CI提示目录的所述多个CI提示目录条目中的一CI提示目录条目,基于针对所述存储线的所述CI提示,修改所述存储器读取事务的所述所请求的读取长度值的装置。
38.一种经压缩存储器控制器,其包括:
用于接收包括写入数据和系统存储器中的存储线的物理地址的存储器写入请求的装置;
用于为所述写入数据确定压缩模式的装置;
用于基于所述压缩模式产生用于所述写入数据的压缩指示符CI的装置;
用于将所述写入数据写入到所述系统存储器中的所述存储线的装置;
用于将所述所产生的CI写入到所述系统存储器的所述存储线的一或多个错误校正码ECC位中的装置;
用于与将所述写入数据写入到所述系统存储器中的所述存储线并行地,确定所述物理地址是否对应于所述经压缩存储器控制器的CI提示目录的多个CI提示目录条目中的一CI提示目录条目的装置;以及
用于基于所述所产生的CI来更新所述CI提示目录条目的多个CI提示中对应于所述存储线的CI提示的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/086,882 US10067706B2 (en) | 2016-03-31 | 2016-03-31 | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system |
US15/086,882 | 2016-03-31 | ||
PCT/US2017/022049 WO2017172334A1 (en) | 2016-03-31 | 2017-03-13 | Providing memory bandwidth compression using compression indicator (ci) hint directories in a central processing unit (cpu)-based system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108780422A true CN108780422A (zh) | 2018-11-09 |
Family
ID=58402156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780018218.1A Pending CN108780422A (zh) | 2016-03-31 | 2017-03-13 | 在基于中央处理单元cpu的系统中使用压缩指示符ci提示目录来提供存储器带宽压缩 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10067706B2 (zh) |
EP (1) | EP3436952A1 (zh) |
CN (1) | CN108780422A (zh) |
WO (1) | WO2017172334A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10067706B2 (en) | 2016-03-31 | 2018-09-04 | Qualcomm Incorporated | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system |
US10884662B2 (en) * | 2018-08-06 | 2021-01-05 | Silicon Motion, Inc. | Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1679005A (zh) * | 2002-08-30 | 2005-10-05 | 皇家飞利浦电子股份有限公司 | 动态存储器管理 |
CN101221520A (zh) * | 2006-11-29 | 2008-07-16 | 松下电器产业株式会社 | 存储器控制装置、计算机系统及数据再现记录装置 |
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的系统、设备及方法 |
US8139073B1 (en) * | 2006-09-18 | 2012-03-20 | Nvidia Corporation | Early compression tag lookup for memory accesses |
CN102687125A (zh) * | 2010-01-27 | 2012-09-19 | 株式会社东芝 | 存储器设备和主机设备 |
US20150339228A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US20150339239A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6002411A (en) | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5696927A (en) | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
US7047382B2 (en) | 2000-11-29 | 2006-05-16 | Quickshift, Inc. | System and method for managing compression and decompression and decompression of system memory in a computer system |
US6795897B2 (en) | 2002-05-15 | 2004-09-21 | International Business Machines Corporation | Selective memory controller access path for directory caching |
US7111142B2 (en) | 2002-09-13 | 2006-09-19 | Seagate Technology Llc | System for quickly transferring data |
US7162583B2 (en) | 2003-12-29 | 2007-01-09 | Intel Corporation | Mechanism to store reordered data with compression |
US7257693B2 (en) | 2004-01-15 | 2007-08-14 | Intel Corporation | Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system |
US7277988B2 (en) | 2004-10-29 | 2007-10-02 | International Business Machines Corporation | System, method and storage medium for providing data caching and data compression in a memory subsystem |
US7680992B1 (en) | 2006-06-14 | 2010-03-16 | Nvidia Corporation | Read-modify-write memory with low latency for critical requests |
US7808507B1 (en) | 2006-09-18 | 2010-10-05 | Nvidia Corporation | Compression tag state interlock |
US8341380B2 (en) | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
KR101703207B1 (ko) | 2009-09-30 | 2017-02-06 | 알테라 코포레이션 | 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환 |
KR20110073932A (ko) | 2009-12-24 | 2011-06-30 | 주식회사 하이닉스반도체 | Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법 |
US8510518B2 (en) | 2010-06-22 | 2013-08-13 | Advanced Micro Devices, Inc. | Bandwidth adaptive memory compression |
TWI455144B (zh) | 2010-07-22 | 2014-10-01 | Silicon Motion Inc | 使用於快閃記憶體的控制方法與控制器 |
KR101888074B1 (ko) | 2012-01-09 | 2018-08-13 | 삼성전자주식회사 | 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법 |
US9740621B2 (en) | 2014-05-21 | 2017-08-22 | Qualcomm Incorporated | Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods |
US10067706B2 (en) | 2016-03-31 | 2018-09-04 | Qualcomm Incorporated | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system |
-
2016
- 2016-03-31 US US15/086,882 patent/US10067706B2/en active Active
-
2017
- 2017-03-13 EP EP17713122.4A patent/EP3436952A1/en not_active Withdrawn
- 2017-03-13 CN CN201780018218.1A patent/CN108780422A/zh active Pending
- 2017-03-13 WO PCT/US2017/022049 patent/WO2017172334A1/en active Application Filing
- 2017-09-28 US US15/718,515 patent/US10152261B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1679005A (zh) * | 2002-08-30 | 2005-10-05 | 皇家飞利浦电子股份有限公司 | 动态存储器管理 |
US8139073B1 (en) * | 2006-09-18 | 2012-03-20 | Nvidia Corporation | Early compression tag lookup for memory accesses |
CN101221520A (zh) * | 2006-11-29 | 2008-07-16 | 松下电器产业株式会社 | 存储器控制装置、计算机系统及数据再现记录装置 |
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的系统、设备及方法 |
CN102687125A (zh) * | 2010-01-27 | 2012-09-19 | 株式会社东芝 | 存储器设备和主机设备 |
US20150339228A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US20150339239A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
Also Published As
Publication number | Publication date |
---|---|
EP3436952A1 (en) | 2019-02-06 |
WO2017172334A1 (en) | 2017-10-05 |
US20170286001A1 (en) | 2017-10-05 |
US20180018122A1 (en) | 2018-01-18 |
US10067706B2 (en) | 2018-09-04 |
US10152261B2 (en) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755527B2 (en) | Techniques for command validation for access to a storage device by a remote client | |
CN106462496B (zh) | 在基于中央处理单元cpu的系统中使用经压缩存储器控制器cmc来提供存储器带宽压缩 | |
US9996466B2 (en) | Apparatus, system and method for caching compressed data | |
US9986028B2 (en) | Techniques to replicate data between storage servers | |
CN104583933B (zh) | Gpu和fpga组件之间的直接通信的方法和系统 | |
US10445018B2 (en) | Switch and memory device | |
CN108885585A (zh) | 在基于中央处理单元(cpu)的系统中使用多个末级高速缓冲存储器(llc)线提供存储器带宽压缩 | |
CN107111461A (zh) | 在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩 | |
TWI773683B (zh) | 使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮 | |
US9632953B2 (en) | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers | |
US20150346795A1 (en) | Multi-host power controller (mhpc) of a flash-memory-based storage device | |
US20190310940A1 (en) | Selecting resources to make available in local queues for processors to use | |
CN108780422A (zh) | 在基于中央处理单元cpu的系统中使用压缩指示符ci提示目录来提供存储器带宽压缩 | |
EP2562652B1 (en) | System and method for locking data in a cache memory | |
US20190236752A1 (en) | Wide key hash table for a graphics processing unit | |
US20170344311A1 (en) | Method of operating a memory device | |
CN110235110A (zh) | 当停顿的写入操作发生时减少或避免来自压缩存储器系统中的未压缩高速缓冲存储器的经逐出高速缓冲存储数据的缓冲 | |
CN108701093A (zh) | 使用动态随机存取存储器(dram)高速缓存指示符高速缓存存储器以提供可扩展dram高速缓存管理 | |
US20170293570A1 (en) | System and methods of an efficient cache algorithm in a hierarchical storage system | |
US20150006871A1 (en) | Controlling access to storage in a computing device | |
CN108762666A (zh) | 一种存储系统的访问方法、系统、介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181109 |