CN113495687A - 有效组织和访问可压缩数据的技术 - Google Patents
有效组织和访问可压缩数据的技术 Download PDFInfo
- Publication number
- CN113495687A CN113495687A CN202010967675.9A CN202010967675A CN113495687A CN 113495687 A CN113495687 A CN 113495687A CN 202010967675 A CN202010967675 A CN 202010967675A CN 113495687 A CN113495687 A CN 113495687A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- memory block
- compressed
- sectors
- 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
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000015654 memory Effects 0.000 claims abstract description 357
- 238000012545 processing Methods 0.000 claims description 77
- 238000007906 compression Methods 0.000 claims description 42
- 230000006835 compression Effects 0.000 claims description 42
- 239000000872 buffer Substances 0.000 description 67
- 238000005192 partition Methods 0.000 description 33
- 238000010586 diagram Methods 0.000 description 15
- 238000005227 gel permeation chromatography Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 238000005056 compaction Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 206010038933 Retinopathy of prematurity Diseases 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000000470 constituent Substances 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
-
- 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/061—Improving I/O performance
-
- 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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/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
- 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
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
-
- 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/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
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)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及有效组织和访问可压缩数据的技术。在各种实施例中,存储器接口单元在存储块内组织数据以促进有效的存储器访问。在一个实施例中,存储块表示容纳多个数据块的存储器的一部分,其中每个块以非压缩或以较小的压缩数据格式存储。在一个实施例中,存储块被组织为将多个压缩块打包在一起,使得可以通过单个读取访问从存储器中检索多个压缩块。在另一个实施例中,存储块被组织以存储压缩块的冗余副本,使得可以在存储块内快速地对压缩块进行解压缩,而不必在存储块中重新放置其他压缩块。还公开了用于允许有效访问压缩和非压缩数据两者的附加实施例。
Description
技术领域
各种实施例通常涉及计算机处理,并且更具体地,涉及有效组织和访问可压缩数据的技术。
背景技术
一些处理系统实现一种或更多种数据压缩技术,以增加附接存储器设备的有效存储器带宽,从而提高整体性能。在这样的实施方式中,处理系统被配置为存储以一种或更多种压缩格式在附接存储器内的数据的某些存储块,其减少了用于表示原始数据的每个存储块的字节数。因此,在任何给定的时间,附接存储器可以包括任意数量的数据的非压缩存储块和任意数量的数据的压缩存储块。
在许多配置为存储压缩数据的处理系统中,每个存储块存储多个数据块,其中非压缩数据块中的字节数等于处理系统向附接存储器传输或从附接存储器传输的字节数,分别作为执行写入或读取操作的一部分。处理系统压缩来自多个写入请求的非压缩数据块,以生成“压缩原子”,每个压缩原子都包含不同非压缩数据块的压缩表示。例如,在某些处理系统中,处理系统压缩来自两个写入请求的非压缩数据块以生成两个压缩原子。对于每个存储块,处理系统通常会分配所需的字节数,以将组成的非压缩数据块存储在附接存储器中。如果处理系统最终将压缩原子写入存储块,则处理系统只需将压缩原子存储在分配给非压缩数据块之一的存储器的连续部分中,以便从附接存储器读取的数据可以返回多个数据块的压缩数据。
如上所述,将压缩数据写入存储块的一个缺点是,随后将非压缩数据写入到所得压缩存储块中需要读取-修改-写入操作,该操作会减小到附接存储器的有效带宽。需要进行读取-修改-写入操作,以避免覆盖未被非压缩数据替换的一个或更多个压缩原子。例如,为了将新的非压缩数据块写入压缩的存储块中,处理系统可以从压缩的存储块中读取两个压缩原子,然后对这两个压缩原子进行解压缩以生成两个原始的非压缩数据块。随后,处理系统可以将新的非压缩数据块与原始非压缩数据块合并,并将两个结果数据块以非压缩或压缩格式写入存储块。
相反,将非压缩数据块写入非压缩存储块仅需要单个写入操作。因此,对于经常将非压缩数据写入压缩存储块的应用程序,执行所需的读取-修改-写入操作可以减少甚至消除有效存储器带宽的任何改善,以及与传输压缩数据相关的任何性能提升。
如前所述,本领域需要的是用于将压缩数据存储在存储器中的更有效的技术。
发明内容
本发明的一个实施例阐述了一种用于存储数据的计算机实现的方法。所述方法包括:压缩与存储器地址的第一范围相关联的第一非压缩数据以生成第一压缩数据;压缩与存储器地址的第二范围的相关联的第二非压缩数据以生成第二压缩数据;将所述第一压缩数据和所述第二压缩数据存储在与所述存储器地址的第一范围相关联的存储块的第一部分中;以及将第二压缩数据或第二非压缩数据的至少一部分中的至少一个存储在与存储器地址的第二范围相关联的存储块的第二部分中。
相对于现有技术,所公开的技术的至少一个技术优势在于,利用所公开的技术,与将非压缩数据写入已经存储了压缩数据的存储块相关联的读取-修改-写入操作的数量可以是减少。就这一点而言,与现有技术不同,处理系统通常可以将非压缩数据写入包括压缩数据的存储块的一部分,而不会覆盖与该存储块的其余部分相关数据。特别地,处理系统可以通过单个写入操作将非压缩数据块存储在包括压缩数据的存储块中,而无需首先执行读取操作。因此,相对于现有技术,更有效地实现了有效存储器带宽的改进和与传输压缩数据有关的性能增益。这些技术优点提供了相对于现有技术方法的一种或更多种技术进步。
附图说明
为了可以详细地理解各个实施例的上述特征的方式,可以通过参考各个实施例来对以上简要概述的发明构思进行更具体的描述,其一些实施例在附图中示出。然而,应注意,附图仅示出了本发明构思的典型实施例,因此不应视为以任何方式限制范围,并且还有其他等效的实施例。
图1是配置为实现各种实施例的一个或更多个方面的系统的概念图;
图2是根据各种实施例的包括在图1的并行处理子系统中的并行处理单元的更详细图示;
图3是根据各种实施例的图2的分区单元之一的更详细图示;
图4示出了根据各种实施例的图3的压缩写入策略如何可以减少读取-修改-写入操作的示例;以及
图5是根据各个实施例的用于将压缩数据写入存储器的方法步骤的流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对各种实施例的更透彻的理解。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节中的一个或更多个的情况下实践本发明构思。
系统总览
图1是被配置为实现各种实施例的一个或更多个方面的系统100的概念图。在一个或更多个实施例中,系统100是在数据中心或云计算环境中操作的服务器,其通过网络提供可扩展计算资源作为服务。在一个或更多个实施例中,系统100包括但不限于中央处理单元(“CPU”)102和经由存储器桥105和通信路径113耦合到并行处理子系统112的系统存储器104。存储器桥105进一步经由通信路径106耦合到输入/输出(“I/O”)桥107,并且I/O桥107又耦合到交换机116。
在一个或更多个实施例中,I/O桥107被配置为从输入设备108(诸如键盘或鼠标)接收用户输入信息,并且将输入信息转发到CPU 102以经由通信路径106和存储器桥105进行处理。在一个或更多个实施例中,系统100可以是云计算环境中的服务器。在这样的实施例中,系统100可以不具有输入设备108。相反,系统100可以通过接收通过网络发送并经由网络适配器118接收的消息形式的命令来接收等效的输入信息。在一个或更多个实施例中,交换机116被配置为提供I/O桥107与系统100的其他组件(例如网络适配器118和任意数量的插入卡120和121)之间的连接。
在一个或更多个实施例中,I/O桥107耦合到系统盘114,该系统盘114可以被配置为存储内容以及应用程序和数据以供CPU 102和并行处理子系统112使用。在一些实施例中,系统盘114为应用程序和数据提供非易失性存储,并且可以包括固定或可移除的硬盘驱动器,闪存设备以及压缩盘只读存储器,数字通用盘-ROM,蓝光,高清数字多功能光盘或其他磁性,光学或固态存储设备。在一个或更多个实施例中,其他组件(诸如通用串行总线或其他端口连接,光盘驱动器,数字多功能盘驱动器,电影记录设备等)也可以连接至I/O桥107。
在一个或更多个实施例中,存储桥105可以是北桥(Northbridge)芯片,并且I/O桥107可以是南桥(Southbridge)芯片。另外,可以使用任何技术上合适的协议来实现通信路径106和113以及系统100内的其他通信路径,包括但不限于本领域已知的加速图形端口,超传输或任何其他总线或点对点通信协议。
在一个或更多个实施例中,并行处理子系统112包括将像素传送到显示设备110的图形子系统,该显示设备可以是任何传统的阴极射线管,液晶显示器,发光二极管显示器等。在这样的实施例中,并行处理子系统112包括为图形和视频处理而优化的电路,包括例如视频输出电路。如下面结合图2更详细地描述的,可以跨一个或更多个并行处理单元(“PPU”)合并这样的电路,本文也称为并行处理器,包括在并行处理子系统112中。在另一实施例中,并行处理子系统112合并为通用和/或计算处理而优化的电路。再次,这种电路跨包括在并行处理子系统112中的一个或更多个PPU中合并,其被配置为执行这种通用和/或计算操作。在又一个实施例中,并行处理子系统112中包括的一个或更多个PPU可以被配置为执行图形处理,通用处理和计算处理操作。系统存储器104包括至少一个设备驱动器(未示出),配置为管理并行处理子系统112内的一个或更多个PPU的处理操作。
在一个或更多个实施例中,并行处理子系统112可以与图1的一个或更多个其他元件集成在一起以形成单个系统。例如,并行处理子系统112可以与CPU 102和其他连接电路集成在单个芯片上,以形成片上系统(“SoC”)。
在一个或更多个实施例中,CPU 102是系统100的主处理器,其控制和协调其他系统组件的操作。在一个或更多个实施例中,CPU 102发出控制PPU的操作的命令。在一个或更多个实施例中,通信路径113是外围组件互连快速链路,如本领域所公知的,其中专用通道被分配给每个PPU。也可以使用其他通信路径。每个PPU有利地实现高度并行的处理架构。每个PPU可以配备有任意数量的本地并行处理存储器(“PP存储器”)。
将意识到,本文所示的系统100是说明性的,并且可以进行变化和修改。可以根据需要修改连接拓扑,包括桥的数量和布置,CPU 102的数量以及并行处理子系统112的数量。例如,在一个或更多个实施例中,系统存储器104可以直接连接到CPU 102,而不是通过存储器桥105,并且其他设备可以通过存储器桥105和CPU 102与系统存储器104通信。在其他实施例中,并行处理子系统112可以连接到I/O桥107或直接连接到CPU 102,而不是连接到存储桥105。在其他实施例中,I/O桥107和存储桥105可以集成到单个芯片中,而不是作为一个或更多个分立设备存在。最后,在某些实施例中,可能不存在图1所示的一个或更多个组件。例如,可以省去交换机116,并且网络适配器118和附加卡(add-in cards)120、121可以直接连接到I/O桥107。
图2是根据各种实施例的包括在图1的并行处理子系统112中的PPU 202的更详细图示。尽管图2描绘了一个PPU 202,但是如上所述,并行处理子系统112可以包括任意数量的PPU 202。如图所示,PPU 202耦合到PP存储器204。可以使用一个或更多个集成电路设备(例如可编程处理器,专用集成电路或存储设备),或以任何其他技术上可行的方式实现PPU202和PP存储器204。
在一个或更多个实施例中,PPU 202包括图形处理单元,其可以被配置为基于由CPU 102和/或系统存储器104提供的图形数据实现图形渲染管线以执行与生成像素数据有关的各种操作。在处理图形数据时,PP存储器204可用作存储一个或更多个传统帧缓冲区以及(如果需要)一个或更多个其他渲染目标的图形存储器。其中,PP存储器204可以用于存储和更新像素数据并且将最终像素数据或显示帧传送到显示设备110以进行显示。在一个或更多个实施例中,PPU 202还可以被配置用于通用处理和计算操作。在一个或更多个实施例中,系统100可以是云计算环境中的服务器。在这样的实施例中,系统100可以不具有显示设备110。相反,系统100可以通过经由网络适配器118通过网络以消息的形式发送命令来生成等效的输出信息。
在一个或更多个实施例中,CPU 102是系统100的主处理器,其控制和协调其他系统组件的操作。在一个或更多个实施例中,CPU 102发出控制PPU 202的操作的命令。在一个或更多个实施例中,CPU 102将用于PPU 202的命令流写入数据结构(在图1或图2中均未明确示出),其可能位于系统存储器104,PP存储器204或CPU 102和PPU 202均可访问的另一个存储位置中。将指向数据结构的指针写入命令队列,本文也称为作为推缓冲区(pushbuffer),以启动对数据结构中的命令流的处理。在一个或更多个实施例中,PPU 202从命令队列中读取命令流,然后相对于CPU 102的操作异步地执行命令。在生成多个推缓冲区的实施例中,可以通过设备驱动程序由应用程序为每个推缓冲区指定执行优先级来控制不同推缓冲区的调度。
在一个或更多个实施例中,PPU 202包括I/O单元205,其经由通信路径113和存储器桥105与系统100的其余部分通信。在一个或更多个实施例中,I/O单元205生成用于在通信路径113上传输的分组(或其他信号),并且还从通信路径113接收所有进入的分组(或其他信号),从而将进入的分组定向到PPU 202的适当组件。例如,与处理任务有关的命令可被定向到主机接口206,而与存储器操作有关的命令(例如,从PP存储器204读取或写入PP存储器204)可被定向到交叉开关单元210。在一个或更多个实施例中,主机接口206读取每个命令队列,并将存储在命令队列中的命令流发送到前端212。
如上面结合图1所述,PPU 202到系统100其余部分的连接可以改变。在一个或更多个实施例中,包括至少一个PPU 202的并行处理子系统112被实现为可插入系统100的扩展槽中的附加卡。在其他实施例中,PPU 202可被集成在具有总线桥的单个芯片上,例如在存储器桥105或I/O桥107。此外,在其他实施例中,PPU 202的部分或全部元素可以与CPU 102一起包含在集成电路或SoC中。
在一个或更多个实施例中,前端212将从主机接口206接收的处理任务发送到任务/工作单元207内的工作分配单元(未示出)。在一个或更多个实施例中,工作分配单元接收指向处理任务的指针,这些任务被编码为任务元数据(“TMD”)并存储在存储器中。指向TMD的指针包括在命令流中,该命令流存储为命令队列,并由前端212从主机接口206接收。可编码为TMD的处理任务包括与要处理的数据相关的索引以及定义如何处理数据的状态参数和命令。例如,状态参数和命令可以定义要在数据上执行的程序。任务/工作单元207从前端212接收任务,并确保在启动每个TMD所指定的处理任务之前,将通用处理集群(“GPC”)208配置为有效状态。可以为每个TMD指定一个优先级,用于安排处理任务的执行。还可以从处理集群阵列230接收处理任务。可选地,TMD可以包括控制TMD是添加到处理任务列表的开头还是结尾(或添加到指向处理任务的指针的列表)的参数,从而提供了对执行优先级的另一级控制。
在一个或更多个实施例中,PPU 202基于处理集群阵列230实现高度并行处理架构,该处理集群阵列230包括但不限于一组C个GPC 208,其中C≥1。每个GPC 208能够执行大量(例如数百或数千)并发线程,其中每个线程都是程序的一个实例。在各种应用中,可以分配不同的GPC 208用于处理不同类型的程序或用于执行不同类型的计算。GPC 208的分配可以根据每种类型的程序或计算产生的工作量而变化。
在一个或更多个实施例中,存储器接口214包括但不限于一组D个分区单元215,其中D≥1。每个分区单元215耦合至驻留在PP存储器204内的一个或更多个动态随机存取存储器(“DRAM”)220。在一个或更多个实施例中,分区单元215的数量等于DRAM 220的数量,并且每个分区单元215耦合到不同的DRAM 220。在其他实施例中,分区单元的数量215可以与DRAM 220的数量不同。本领域普通技术人员将理解,可以将DRAM 220替换为任何其他技术上合适的存储设备。在操作中,可以在DRAM 220上存储各种渲染目标,例如纹理贴图和帧缓冲区,从而允许分区单元215并行写入每个渲染目标的部分,以有效地使用PP存储器204的可用带宽。
在一个或更多个实施例中,给定的GPC 208可以处理要写入PP存储器204内的任何DRAM 220的数据。在一个或更多个实施例中,交叉开关单元210配置为将每个GPC的输出208路由到任何分区单元215的输入或任何其他GPC 208以进行进一步处理。GPC 208经由交叉开关单元210与存储器接口214通信,以从各种DRAM 220读取或写入各种DRAM 220。在一个或更多个实施例中,交叉开关单元210除了具有经由存储器接口214与PP存储器204连接之外还具有与I/O单元205的连接,从而使不同GPC 208内的处理核能够与系统存储器104或不是PPU 202本地的其他存储器通信。在图2的实施例中,交叉开关单元210直接与I/O单元205连接。在一个或更多个实施例中,交叉开关单元210可以使用虚拟通道来分离GPC 208和分区单元215之间的业务流。
在一个或更多个实施例中,GPC 208可以被编程为执行与各种各样的应用程序有关的处理任务,包括但不限于线性和非线性数据变换,视频和/或音频数据的过滤,建模操作(例如,应用物理定律确定对象的位置,速度和其他属性),图像渲染操作(例如曲面细分着色器,顶点着色器,几何着色器和/或像素/片段着色器程序),传统计算操作等。在操作过程中,PPU 202被配置为将数据从系统存储器104和/或PP存储器204传输到一个或更多个片上存储器单元,处理该数据,并将结果数据写回到系统存储器104和/或PP存储器204。然后,其他系统组件可以访问结果数据,包括CPU 102,并行处理子系统112中的另一个PPU 202,或系统100中的另一个并行处理子系统112。
在一个或更多个实施例中,每个并行处理子系统112中可以包括任意数量的PPU202。例如,可以在单个插入卡上提供多个PPU 202,或者可以将多个插入卡连接到通信路径113或一个或更多个PPU 202可以集成到桥接芯片中。多PPU系统中的PPU 202可以彼此相同或不同。例如,不同的PPU 202可能具有不同数量的处理核心和/或不同数量的PP存储器204。在存在多个PPU 202的实现中,那些PPU可以并行运行以比单个PPU 202可能更高的吞吐量处理数据。合并一个或更多个PPU 202的系统可以以多种配置和形式实现,包括但不限于台式机,笔记本电脑,手持式个人计算机或其他手持式设备,服务器,工作站,游戏机,嵌入式系统等。
图3是根据各种实施例的图2的分区单元215之一的更详细图示。分区单元215在本文中也称为“存储器接口单元”。如图所示,分区单元215包括但不限于二级(“L2”)高速缓存310,帧缓冲器单元380和DRAM控制器384。在一个或更多个替代实施例中,分区单元215还包括栅格操作单元(“ROP”)。ROP执行诸如模版,z测试,混合等的光栅操作,并且将像素数据作为经处理的图形数据发送,以经由存储器接口214存储在图形存储器中,其中图形存储器通常被构造为一个或更多个渲染目标。。
L2高速缓存器310是回写式高速缓存,其被配置为执行从ROP(未示出)和交叉开关单元210(在图3中未示出)接收的存储器访问请求。存储器访问请求是向包括在DRAM 220中的存储块390写入数据或从中读取数据的请求。在替代实施例中,L2高速缓存310可以从位于任意数量的分区单元215中,从存储器接口214中,从GPC 208中,从GPC 208外部的处理群集阵列230中,或从PPU 202内的单独单元中的任意数量的ROP接收存储器访问请求。。
如图所示,L2高速缓存310包括但不限于压缩位高速缓存(“CBC”)320,标签单元330,数据级340,压缩器单元350,解压缩器单元352和帧缓冲器接口单元370。在接收到存储器访问请求时,CBC 320和标签单元330为相关联的存储块390确定压缩状态集388。CBC320为包括在DRAM 220中的存储块390存储但不限于不同的压缩状态集388。如本文随后更详细地描述的,压缩状态集388针对相关联的存储块390的每个扇区396指示什么类型的数据(例如,压缩的,非压缩的,无用的)存储在扇区396中。
标签单元330基于存储器访问请求执行地址计算,以确定相关数据是否存储在数据级340中。标签单元330然后基于存储器访问请求的类型,相关联的压缩状态集388来处理存储器访问请求,以及相关数据是否存储在数据级340中。如果存储器访问请求是读取相关数据的请求,则标签单元330确定相关数据当前是否驻留在包含在数据级340内的任意数量的高速缓存行342中。如果是,则意味着存在“高速缓存命中”,则标记单元330与数据级340接口以在本地检索相关数据-无需与DRAM 220接口。然而,如果存储器访问请求是写入相关数据的请求,则标签单元330确定是否可以在当前驻留在高速缓存行342之一中的数据上写入相关数据。如果是的话,再次意味着存在高速缓存命中,然后标签单元330使相关数据被写入缓存行342的适当位置。
在“高速缓存未命中”的情况下,意味着相关数据不驻留在(在读取请求的情况下)或不能被写入(在写入请求的情况下)高速缓存行342之一,然后标签单元330经由帧缓冲器接口单元370与帧缓冲器单元380接口以执行存储器访问请求。帧缓冲器单元380确定DRAM控制器384如何以及何时执行存储器访问请求。作为配置DRAM控制器384以执行存储器访问请求的一部分,帧缓冲器单元380可以执行任何数量的算法,试探法等。DRAM控制器384控制从包括在DRAM 220中的存储块390到包括在数据级340的高速缓存行342的数据传输,并且相反,控制从高速缓存行342到存储块390的数据传输。
为了增加到DRAM 220的有效存储器带宽,从而提高整体性能,L2高速缓存310以一种或更多种压缩格式将某些数据存储在DRAM 220和高速缓存行342中,其减少了用于表示原始数据的字节数。在一个或更多个实施例中,任意数量的高速缓存行342跨相等大小的四个扇区396存储非压缩数据块。非压缩数据块中的字节数以及因此每个高速缓存行342的大小L2等于L2高速缓存310发送到DRAM 220或从DRAM 220发送的字节数,分别作为执行写入或读取操作的一部分。
为了压缩数据,标签单元330配置压缩器单元350以压缩存储在两个高速缓存行行342中的两个非压缩数据块以生成两个压缩原子364。每个压缩原子364存储压缩数据块。仅出于说明目的,压缩器单元350实现四至一压缩格式,因此,每个压缩原子364可以存储在单个扇区396中。压缩器单元350将所得的压缩原子364(0)和364(1)分别存储在高速缓存行342之一的扇区396(0)和396(1)中。将结果压缩原子364存储在单个高速缓存行342中,不仅压缩了存储在L2高速缓存310中的数据,而且当在单个写入操作或单个读取操作中传送两个压缩原子364时,还可以提高L2高速缓存310和DRAM 220之间的有效存储器带宽。
仅出于说明性目的,图3描绘了压缩器单元350压缩存储在高速缓存行342(0)中的非压缩扇区数据362(0)-362(3)和存储在高速缓存行342(1)中的非压缩扇区数据362(4)-362(7)之后,高速缓存行342(0)和342(1)的状态。每个非压缩扇区数据362(0)-362(3)是一个非压缩数据块的四分之一,每个非压缩扇区数据362(4)-362(7)是另一个非压缩数据块的四分之一。
如斜体所示,压缩器单元350压缩非压缩扇区数据362(0)-362(3)以生成压缩原子364(0)并压缩非压缩扇区数据362(4)-362(7)以生成压缩原子364(1)。压缩器单元350将压缩原子364(0)和364(1)分别存储在高速缓存行342(0)的扇区396(0)和396(1)中,从而覆盖先前存储在高速缓存行342(0)中的非压缩扇区数据362(0)和362(1)。如斜体所示,在压缩之后,高速缓存行342(0)存储压缩原子364(0)和364(1)和非压缩扇区数据362(2)和362(3)。相反,高速缓存行342(1)仍存储非压缩扇区数据362(4)-362(7)。
尽管未在图3中明确描述,但解压缩器单元352可以对存储在任意数量的高速缓存行342中的任意数量的压缩原子364进行操作,以重新创建一个或更多个原始的非压缩块数据。标签单元330可以配置解压缩器单元352以覆盖任何高速缓存行342或将一个或更多个原始的非压缩数据块写入不同的高速缓存行342。例如,解压缩器单元352可以在高速缓存行342(0)中存储的压缩原子364(1)上操作以重新创建非压缩扇区数据362(0)-362(3),然后将非压缩扇区数据362(0)-362(3)存储在高速缓存行342(0)中。
L2高速缓存310可以配置DRAM控制器384以将任意数量的压缩原子364和任何数量的非压缩数据以任何组合从高速缓存行342传输到存储块390,并且相反地从存储块390传输到高速缓存行342。因此,在任何给定时间,DRAM 220和数据级340可各自包括压缩数据,非压缩数据,或压缩数据和非压缩数据的组合。
如所示,DRAM 220包括但不限于任何数量的存储块390,其中每个存储块390与存储器地址的不同的连续范围相关联。在一个或更多个实施例中,每个存储块390在八个扇区396(0)-396(7)上存储用于存储器地址的相关范围的两个数据块。当非压缩数据用于存储在存储块390中的存储器地址相关范围的下半部分时,非压缩数据存储在块占用空间392(0)内,块占用空间392(0)包括但不限于扇区396(0)-396(3)。当非压缩数据用于存储在存储块390中的存储器地址的相关范围的上半部分时,非压缩数据被存储在块占用空间392(1)内,块占用空间392(1)包括但不限于扇区396(4)–396(7)。块占用空间392在本文中也被称为相关联的存储块390的两个“一半”。
每个压缩原子364被存储在与非压缩数据块的存储器地址相关联的存储块390中,压缩原子364从非压缩数据块导出。在各种实施例中,为了改善L2高速缓存310与DRAM 220之间的有效存储器带宽,与给定的存储块390相关联的两个压缩原子364被一起存储在单个块占用空间(footprint)392中。
如本文先前所述,在传统处理系统中,当将非压缩数据块写入压缩的存储块中时,读取-修改-写入(“RMW”)操作除了执行一个或更多个写入操作之外包括读操作。RMW操作可确保不会用无关的非压缩数据覆盖存储在存储块中的压缩数据。相反,当将非压缩数据块写入非压缩存储块时,将执行单个写入操作。对于经常将非压缩数据写入压缩存储块的应用程序,执行相关的RMW操作可以减少甚至消除有效存储器带宽和与传输压缩数据相关的性能提升的任何改善。
在压缩写入期间机会性地写入附加扇区
为了减少当将非压缩数据写入还包括压缩数据的存储块390中时L2高速缓存310执行的RMW操作的数量,分区单元215机会性地(opportunistically)将附加数据存储在任何数量的存储块390中。增强给定存储块390中的附加数据使L2高速缓存310能够将非压缩数据写入到存储块390的一个或更多个部分,而不会丢失存储用于存储块390的剩余部分的数据。作为结果,在任何给定时间,存储块390可以存储压缩原子364和非压缩扇区数据362的混合。因此,给定存储块390的压缩状态集388通过任意数量的位以任何技术上可行的方式来指示存储块390中每个扇区396的单独压缩状态。压缩状态集388可以通过任意数量的位以任何技术上可行的方式指示相关存储块390的八个单独的扇区状态。例如,在一个或更多个实施例中,压缩状态集388针对相关存储块390的每个扇区396指示扇区396是存储非压缩扇区数据362,压缩原子364之一还是垃圾数据(例如,没有数据已被写入扇区396)。
仅出于说明性目的,编号为1-7的一系列气泡描述了分区单元215如何机会性地将附加数据存储到存储块390(0)中的示例。如编号为1的气泡所示,标签单元330将压缩的写入请求发送到帧缓冲器接口单元370。压缩的写入请求指定高速缓存行342(0)存储压缩原子364(0)和364(1),压缩原子364(0)和364(1)以及非压缩扇区数据362(2)和362(3)被写入存储块390(0)。压缩的写入请求还指定高速缓存行342(1)存储关联的非压缩数据块。如图所示,高速缓存行342(0)和342(1)一起存储压缩原子364(0)和364(1)以及非压缩扇区数据362(2)-362(7),其没有被压缩原子364(0)和364(1)重写。
如编号为2的气泡所示,帧缓冲器接口单元370将压缩的存储器写入请求发送到帧缓冲器单元380。如编号为3的气泡所示,帧缓冲器单元380选择压缩写入策略382用于存储块390(0)。在一个或更多个实施例中,压缩写入策略382是“默认”,“重复”或“填充”之一。每个压缩写入策略382涉及将数据存储在存储块390(0)的不同数量的扇区396中。
不管压缩写入策略382如何,帧缓冲器单元380配置DRAM控制器384以将压缩原子364(0)和364(1)从高速缓存行342(0)分别复制到存储块390(0)的扇区396(0)和396(1)。对于默认的压缩写入策略382,帧缓冲器单元380不配置DRAM控制器384以将数据复制到存储块390(0)的扇区396(2)-396(7)。
对于“复制”压缩写入策略382,帧缓冲器单元380还配置DRAM控制器384以将压缩原子364(1)从高速缓存行342(0)复制到存储块390(0)的扇区396(4)。结果,包括在存储块390(0)中的每个块占用空间392存储但不限于压缩原子364的副本,该副本包括用于构成扇区396的压缩数据。
对于“填充”压缩写入策略382,帧缓冲器单元380还配置DRAM控制器384以将非压缩扇区数据362(2)-362(3)从高速缓存行342(0)分别复制到存储块390(0)的扇区396(2)和396(3)。类似地,帧缓冲器单元380配置DRAM控制器384以将非压缩扇区数据362(4)-362(7)从高速缓存行342(1)分别复制到存储块390(0)的扇区396(4)-396(7)。
在一个或更多个替代实施例中,除了将压缩原子364(0)和364(1)复制到存储块390(0)的两个扇区396外,帧缓冲器单元380还可配置DRAM控制器384将存储在高速缓存行342(0)和342(1)中的任何数量的数据复制到存储块390(0)的任何数量的剩余扇区396。
帧缓冲器单元380可以以任何技术上可行的方式选择压缩写入策略382。例如,在一些实施例中,帧缓冲器单元基于与DRAM 220相关联的状态来选择压缩写入策略382。帧缓冲器单元380可以以任何技术上可行的方式跟踪和/或计算与DRAM 220相关联的任何状态。例如,在一些实施例中,帧缓冲器单元380基于调度了DRAM 220执行的存储器访问请求的数量和类型和/或L2高速缓存310和DRAM 220之间的存储器带宽利用率,来确定与DRAM 220相关联的状态。
在一个或更多个实施例中,帧缓冲器单元380选择压缩写入策略382以机会性地利用L2高速缓存310与DRAM 220之间的任何未使用的可用存储器带宽。本领域技术人员将认识到,对于不同的压缩写入策略382,在L2高速缓存310和DRAM 220之间传输的数据量是不同的。在本文描述的三个压缩写入策略382中,“默认”涉及传输最小量的数据,“填充”涉及传输最大量的数据,“重复”涉及传输中间量的数据。如果存储器带宽利用率高于上限阈值,则帧缓冲器单元380选择默认的压缩写入策略382。否则,如果存储器带宽利用率低于下限阈值,则帧缓冲器单元380选择填充的压缩写入策略382。否则,帧缓冲器单元380选择重复的压缩写入策略382。
在一个或更多个实施例中,帧缓冲器单元380基于任意数量的试探法来选择压缩写入策略382。例如,帧缓冲器单元380可以保持帧缓冲器单元380执行对包括压缩数据的存储块390之一执行写入操作的次数的计数,而无需对存储块390执行中间读取操作。如果该计数大于根据经验确定的阈值,则帧缓冲器单元380可以选择填充的压缩写入策略382。在一个或更多个其他实施例中,帧缓冲器单元380基于与先前的写入操作相关联的数据的平均大小来选择压缩写入策略382。如果数据的平均大小相对较低,则帧缓冲器单元380可以选择填充策略382。
如编号为4的气泡所示,帧缓冲器单元380配置DRAM控制器384以根据选定的压缩写入策略382将数据写入存储块390(0)。如编号为5的气泡所示,作为执行选定的压缩写入策略382的一部分,DRAM控制器384将数据从数据级340复制到存储块390(0)。
在DRAM控制器384完成对存储块390(0)的压缩写入之后,帧缓冲器单元380生成指示存储在存储块390(0)的每个扇区396中的数据类型的压缩状态集388(0)。如编号为7的气泡所示,帧缓冲器单元380将压缩状态集388(0)发送到CBC320。CBC 320可以以任何技术上可行的方式和任何技术上可行的格式存储压缩状态集388(0)和/或从压缩状态集388(0)中导出的任何数量的数据。
随后,如果L2高速缓存310接收到将非压缩数据写入存储块390(0)的请求,则标签单元330基于压缩状态集388(0)确定是否通过写入操作或RMW操作来实现该请求。作为执行任何写入操作(包括RMW操作的组成写入操作)的一部分,如果存储在存储块390(0)的任何扇区396中的数据的类型改变,则帧缓冲器单元380更新压缩状态集388(0)。
值得注意的是,并且如结合图4所更详细地描述的,默认的压缩写入策略382使分区单元215能够将非压缩数据块的后续写入请求实现为块占用空间392(1)作为写入操作。复制和填充的压缩写入策略382都使分区单元215能够将非压缩数据块的后续写入请求实现为块占用空间392(1)的任一个作为写入操作。填充的压缩写入策略382还使分区单元215能够将非压缩数据的后续写入请求实现扇区396(2)-396(7)的任何一个或连续序列作为写入操作。
应当理解,本文所示的分区单元215是说明性的,并且可以进行变化和修改。例如,本文所描述的由L2高速缓存310,CBC 320,标签单元330,数据级340,压缩器单元350,解压缩器单元352,帧缓冲器接口单元370,帧缓冲器单元380和DRAM控制器384提供的功能可以被集成到或分布在任何数量的硬件组件和/或软件代码中。此外,可以根据需要修改图3中各个单元之间的连接拓扑。
注意,本文描述的技术是说明性的而不是限制性的,并且在不脱离本发明的更广泛的精神和范围的情况下可以对其进行改变。在不脱离所描述的实施例的范围和精神的情况下,对由L2高速缓存310,CBC 320,标签单元330,数据级340,压缩器单元350,解压缩器单元352,帧缓冲器接口单元370,帧缓冲器单元380和DRAM控制器384提供的功能的许多修改和变化对于本领域的普通技术人员来说是显而易见的。
例如,在一个或更多个替代实施例中,本文概述的技术可以应用于任何处理子系统,任何类型的高速缓存,任何大小和类型的存储器,任何压缩算法,任何压缩格式,以及任何类型的存储器访问请求。此外,可以以任何技术上可行的方式来组织存储器。例如,在一些实施例中,每个存储块390可以包括四个块占用空间392而不是两个块占用空间392。在相同或其他实施例中,给定存储块390的块占用空间392可以不与存储器地址的连续范围相关联。
基于压缩状态集减少RMW操作
图4示出了根据各种实施例的图3的压缩写入策略382如何可以减少RMW操作的示例。仅出于说明目的,并且如图所示,数据级340包括但不限于高速缓存行342(0)-342(6)。每个压缩状态集388表示为八个条目的括号列表,该列表按顺序指定相关联的存储块390的扇区396(0)-396(7)的个体状态。每个个体状态表示为‘C,’‘U,’或‘–’以分别指示相关联的扇区396存储压缩数据,非压缩数据或垃圾数据。
高速缓存行342(0)和342(1)一起包括但不限于压缩原子364(0)和364(1)以及非压缩扇区数据362(2)-362(7)。在分区单元215根据默认的压缩写入策略382(0)将数据从高速缓存行342(0)写入到存储块390(0)之后,存储块390(0)的扇区396(0)和396(1)分别存储压缩原子364(0)和364(1),存储块390(0)的扇区396(2)-396(7)存储垃圾数据。因此,压缩状态集388(0)为{C,C,–,–,–,–,–,–}。
如图所示,分区单元215随后接收请求以将非压缩数据块写入存储块390(0)的块占用空间392(1)。因为压缩状态集388(0)指示包括在块占用空间392(1)中的扇区396(4)-396(7)存储垃圾数据,所以分区单元215执行写入操作420(0),该写入操作420(0)跨扇区396(4)–396(7)存储非压缩数据块。作为写入操作420(0)的结果存储新数据的扇区396用“NEW”注释。因为扇区396(4)-496(7)现在存储非压缩数据,并且存储在扇区396(1)中的压缩原子364(1)不再有效,所以帧缓冲器单元380更新压缩状态集388(0)为{C,–,–,–,N,N,N,N}。
高速缓存行342(2)和342(3)一起包括但不限于压缩原子364(2)和364(3)以及非压缩扇区数据362(10)-362(15)。在分区单元215根据重复的压缩写入策略382(1)将数据从高速缓存行342(2)和342(3)写入到存储块390(1)之后,存储块390(1)的扇区396(0),396(1)和396(4)分别存储压缩原子364(2),364(3)和364(3),其余扇区396存储垃圾数据。因此,压缩状态集388(1)为{C,C,–,–,C,–,–,–}。
随后,分区单元215接收请求以将非压缩数据块写入存储块390(1)的块占用空间392(0)。压缩状态集388(1)指示扇区396(4)存储压缩数据,因此可以覆盖存储在扇区396(1)中的压缩数据而不会丢失任何有用数据。因此,分区单元215执行写入操作420(1),写入操作420(1)跨存储块390(1)的扇区396(0)-396(3)存储非压缩数据块。作为写入操作420(1)的结果存储新数据的扇区396用“NEW”注释。因为现在扇区396(0)-396(3)存储非压缩数据,所以帧缓冲器单元380将压缩状态集388(1)更新为{N,N,N,N,C,–,–,–}。
高速缓存行342(4)和342(5)一起存储但不限于压缩原子364(4)和364(5)以及非压缩扇区数据362(18)-362(23)。在分区单元215根据填充的压缩写入策略382(2)将数据从高速缓存行342(4)和342(5)写入到存储块390(2)之后,存储块390(0)的扇区396(0)和396(1)分别存储压缩原子364(4)和364(5),扇区396(2)–396(7)分别存储非压缩扇区数据362(18)–362(23)。因此,压缩状态集388(2)为{C,C,N,N,N,N,N,N}。
随后,分区单元215接收将新的非压缩数据写入扇区396(4)和396(5)的请求。压缩状态集388(3)指示扇区396(4)和396(5)都存储非压缩数据,因此可以覆盖扇区396(4)和396(5)而不会丢失任何有用的数据。因此,分区单元215执行写入操作420(2),该写入操作420(2)跨存储块390(2)的扇区396(4)-396(5)存储新的非压缩数据。因此,将扇区396(4)和396(5)标注为“NEW”。因为存储在扇区396(1)中的压缩原子364(5)不再有效,所以帧缓冲器单元380将压缩状态集388(2)更新为{C,–,N,N,N,N,N,N}。
图5是根据各个实施例的用于将压缩数据写入存储器的方法步骤的流程图。尽管参考图1-4的系统描述了方法步骤,但是本领域技术人员将理解,配置成以任何顺序实现方法步骤的任何系统都落在本发明的范围内。
如图所示,方法500开始步骤502,其中帧缓冲器单元380接收请求以将压缩数据从两个高速缓存行342写入一个存储块390。在步骤504,帧缓冲器单元380选择用于存储块390的压缩写入策略382。在步骤506,帧缓冲器单元380选择存储与请求相关联的压缩原子364和存储块390的相应块占用空间392的高速缓存行342。在步骤508,帧缓冲器单元380使DRAM控制器384将存储在所选高速缓存行342中的两个压缩原子364一起存储在所选块占用空间392中。
在步骤510,帧缓冲器单元380确定是否选择了重复的压缩写入策略382。如果在步骤510,帧缓冲器单元380确定选择了重复的压缩写入策略382,则方法500进行到步骤512。在步骤512,帧缓冲器单元380使DRAM控制器384将存储用于未选择的块占用空间392的数据的压缩原子364从选定的高速缓存行342存储到未选定的块占用空间392。然后,方法500直接进行到步骤518。
然而,如果在步骤510,帧缓冲器单元380确定未选择重复的压缩写入策略382,则方法500直接进行到步骤514。在步骤514,帧缓冲器单元380确定是否选择填充的压缩写入策略382。如果在步骤514,帧缓冲器单元380确定未选择填充的压缩写入策略382,则方法500进行到步骤518。
然而,如果在步骤514帧缓冲器单元380确定选择了填充的压缩写入策略382,则方法500进行到步骤516。在步骤516,帧缓冲器单元380使DRAM控制器384将非压缩数据从相关联的高速缓存行342复制到不存储压缩原子364的存储块390的所有扇区396。然后,方法500进行到步骤518。
在步骤518,帧缓冲器单元380为存储块390生成压缩状态集388,该压缩状态集388指示存储在存储块390的每个扇区396中的数据的类型。然后,方法500终止。
总之,所公开的技术使系统能够有效地将非压缩数据写入也存储压缩数据的存储器。在一些实施例中,分区单元包括但不限于L2高速缓存,帧缓冲器接口单元和DRAM控制器。L2高速缓存包括但不限于CBC,标签单元,数据级,压缩器单元,解压缩器单元和帧缓冲器接口单元。CBC包括但不限于任何数量的压缩状态集,其中每个压缩状态集指示什么类型的数据(例如,压缩的,非压缩的或无用的)被存储在包括在DRAM中的不同存储块的组成扇区中。每个存储块包括但不限于八个扇区,其中四个扇区包括在一个块占用空间中,而四个扇区包括在另一个块占用空间中。
在操作中,CBC接收到将非压缩数据块写入存储块中的块占用空间之一的请求,以及将不同的非压缩数据块写入存储块中的另一个块占用空间的请求。标签单元将非压缩数据块存储在数据级中包括的两个高速缓存行中。在标签单元将高速缓存行逐出至DRAM之前,标签单元压缩两个高速缓存行中的非压缩数据块,并将所得的压缩原子存储在其中一个高速缓存行的前两个扇区中。结果,高速缓存行之一存储两个压缩原子以及两个扇区的非压缩数据,而另一高速缓存行不变。为了驱逐高速缓存行,标签单元经由帧缓冲器接口单元向帧缓冲器单元发送压缩的写入请求。
帧缓冲器单元使DRAM控制器将存储在高速缓存行之一中的两个压缩原子复制到存储块的前两个扇区。此外,如果存储器带宽利用率不超过上限,则帧缓冲器单元机会性地使DRAM控制器将数据从任一或两个高速缓存行复制到存储块的一个或更多个附加扇区。将这种类型的数据存储在存储块的一个或更多个附加扇区中,可以提高标签单元将非压缩数据写入存储块的能力,以写入操作代替RMW操作,
在DRAM控制器完成压缩写入操作之后,帧缓冲器单元生成针对存储块设置的压缩状态并将其传输到CBC。对于存储块的每个扇区,压缩状态集指示该扇区是存储压缩原子,相关联的非压缩数据还是垃圾数据。基于存储块的压缩状态集,标签单元可以确定是否实施后续请求以将非压缩数据写入到存储块作为RMW操作或者优选地作为写入操作。
相对于现有技术,所公开的技术的至少一个技术优势在于,利用所公开的技术,分区单元可以减少与将非压缩数据写入已经存储了压缩数据的存储块相关联的RMW操作的数量。就这一点而言,在压缩写入操作期间机会性地将冗余信息复制到存储块通常使分区单元能够随后将非压缩数据写入到存储块的一部分,而不会覆盖与存储块的其余部分相关联的数据。因此,与现有技术不同,分区单元通常可以通过单个写入操作将非压缩数据块存储在包括压缩数据的存储块中,而无需首先执行读取操作。因此,相对于现有技术,更有效地实现了有效存储器带宽的改进和与发送压缩数据有关的性能增益。这些技术优点提供了相对于现有技术方法的一种或更多种技术进步。
1.在一些实施例中,一种用于存储数据的计算机实现的方法,包括:压缩与存储器地址的第一范围相关联的第一非压缩数据以生成第一压缩数据;压缩与存储器地址的第二范围相关联的第二非压缩数据以生成第二压缩数据;将所述第一压缩数据和所述第二压缩数据存储在与所述存储器地址的第一范围相关联的存储块的第一部分中;以及将所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个存储在与所述存储器地址的第二范围相关联的所述存储块的第二部分中。
2.根据条款1所述的计算机实现的方法,还包括:将所述第一非压缩数据的至少一部分存储在所述存储块的第一部分中。
3.根据条款1或2所述的计算机实现的方法,其中,存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个包括:确定与包括所述存储块的存储器相关联的存储器带宽利用率;以及如果所述存储器带宽利用率高于阈值,则将所述第二压缩数据存储在所述存储块的第二部分中,或者如果所述存储器带宽利用率不高于所述阈值,则将所述第二非压缩数据的所述至少一部分存储在所述存储块的第二部分中。
4.根据条款1-3中任意一项所述的计算机实现的方法,其中,所述存储块的第一部分包括多个扇区,所述多个扇区包括第一扇区和与所述第一扇区相邻的第二扇区,并且其中,存储所述第一压缩数据和所述第二压缩数据包括:将所述第一压缩数据存储在所述第一扇区中以及将所述第二压缩数据存储在所述第二扇区中。
5.根据条款1-4中任意一项所述的计算机实现的方法,其中,所述存储块的第二部分包括多个扇区,并且其中,存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个包括:跨所述多个扇区存储所述第二非压缩数据。
6.根据条款1-5中任意一项所述的计算机实现的方法,其中,所述存储块的第一部分包括第一多个扇区,并且所述存储块的第二部分包括第二多个扇区,并且还包括:更新与所述存储块相关联的压缩状态集以指示将压缩数据存储于包括在所述第一多个扇区中的两个扇区和包括在所述第二多个扇区中的一个扇区中。
7.根据条款1-6中任意一项所述的计算机实现的方法,其中,所述存储块的第一部分包括第一多个扇区,并且所述存储块的第二部分包括第二多个扇区,并且还包括:更新与所述存储块相关联的压缩状态集以指示将压缩数据存储于包括在所述第一多个扇区中的两个扇区中,并且将非压缩数据存储于包括在所述第二多个扇区中的至少一个扇区中。
8.根据条款1-7中任意一项所述的计算机实现的方法,还包括:接收将与所述存储器地址的第一范围相关联的第三非压缩数据写入所述存储块的请求;确定所述存储块的第二部分已经存储了压缩数据;以及执行写入操作以将所述第三非压缩数据存储在所述存储块的第一部分中。
9.根据条款1-8中任意一项所述的计算机实现的方法,还包括:接收将与所述存储器地址的第二范围相关联的第三非压缩数据写入所述存储块的请求;以及执行写入操作以将所述第三非压缩数据存储在所述存储块的第二部分中。
10.根据条款1-9中任意一项所述的计算机实现的方法,其中,所述存储块的第二部分包括多个扇区,并且还包括:接收将第三非压缩数据写入包括在所述多个扇区的至少一个中的请求;确定包括在所述多个扇区中的所述至少一个扇区尚未存储压缩数据;以及执行写入操作以将所述第三非压缩数据存储在包括在所述多个扇区中的所述至少一个扇区中。
11.在一些实施例中,一种系统包括:处理器;以及耦合到所述处理器的存储器接口单元,该存储器接口单元:压缩与存储器地址的第一范围相关联的第一非压缩数据以生成第一压缩数据;压缩与存储器地址的第二范围相关联的第二非压缩数据以生成第二压缩数据;将所述第一压缩数据和所述第二压缩数据存储在与所述存储器地址的第一范围相关联的存储块的第一部分中;以及将所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个存储在与所述存储器地址的第二范围相关联的所述存储块的第二部分中。
12.根据条款11所述的系统,其中,所述存储器接口单元将所述第一非压缩数据的至少一部分存储在所述存储块的第一部分中。
13.根据条款11或12所述的系统,其中,所述存储器接口单元通过以下步骤存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个:确定与包括所述存储块的存储器相关联的存储器带宽利用率;以及如果所述存储器带宽利用率高于阈值,则将所述第二压缩数据存储在所述存储块的第二部分中,或者如果所述存储器带宽利用率不高于所述阈值,则将所述第二非压缩数据的所述至少一部分存储在所述存储块的第二部分中。
14.根据条款11-13中任意一项所述的系统,其中,所述存储块的第一部分包括第一多个扇区,并且所述存储块的第二部分包括第二多个扇区,并且其中,所述存储器接口单元更新与所述存储块相关联的压缩状态集以指示压缩数据存储在包括在所述第一多个扇区中的两个扇区中并且非压缩数据存储在包括在所述第二多个扇区中的至少一个扇区中。
15.根据条款11-14中任意一项所述的系统,其中,所述存储器接口单元:接收将与所述存储器地址的第一范围相关联的第三非压缩数据写入所述存储块的请求;确定所述存储块的第二部分已经存储了压缩数据;以及执行写入操作以将所述第三非压缩数据存储在所述存储块的第一部分中。
16.根据条款11-15中任意一项所述的系统,其中,包括在所述存储块的第一部分中的第一字节总数等于包括在所述第一非压缩数据中的第二字节总数。
17.根据条款11-16中任意一项所述的系统,其中,所述存储器接口单元通过将所述第一压缩数据和所述第二压缩数据从包括在所述存储器接口单元中的高速缓存行复制到所述存储块的第一部分来存储所述第一压缩数据和所述第二压缩数据。
18.根据条款11-17中任意一项所述的系统,其中,所述存储器接口单元通过将所述第二非压缩数据的所述至少一部分从包括在所述存储器接口单元中的高速缓存行复制到所述存储块的第二部分来存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个。
19.根据条款11-18中任意一项所述的系统,其中,所述存储块被包括在附接存储器中。
20.在一些实施例中,一种计算设备包括:包含存储块的附接存储器;以及处理子系统,其包括:处理器;以及耦合到处理器的存储器接口单元,该存储器接口单元:压缩与存储器地址的第一范围相关联的第一非压缩数据以生成第一压缩数据;压缩与存储器地址的第二范围相关联的第二非压缩数据以生成第二压缩数据;将所述第一压缩数据和所述第二压缩数据存储在与所述存储器地址的第一范围相关联的存储块的第一部分中;以及将所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个存储在与所述存储器地址的第二范围相关联的所述存储块的第二部分中。
以任何方式,在任何权利要求中记载的任何权利要求要素和/或在本申请中描述的任何要素的任何和所有组合都落入实施例和保护的预期范围内。
已经出于说明的目的给出了各个实施例的描述,但是这些描述并不旨在是穷举性的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。
本实施例的各方面可以体现为系统、方法或计算机程序产品。因此,本公开的方面可以采取完全硬件实施例,完全软件实施例(包括固件,常驻软件,微代码等)或结合了在本文中通常称为“模块”,“系统”或“计算机”的软件和硬件方面的实施例的形式。另外,本公开中描述的任何硬件和/或软件技术,过程,功能,组件,引擎,模块或系统可以被实现为电路或电路组。此外,本公开的方面可以采取体现在一个或更多个计算机可读介质中的计算机程序产品的形式,该一个或更多个计算机可读介质具有体现在其上的计算机可读程序代码。
可以利用一种或更多种计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体示例(非穷尽列举)将包括以下内容:具有一根或多根电线的电连接,便携式计算机磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器(EPROM或闪存),光纤,便携式光盘只读存储器(CD-ROM),光学存储设备,磁存储设备或前述的任何其他合适的组合。在本文的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序。
上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。将理解的是,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器。当指令通过计算机或其他可编程数据处理装置的处理器执行时,使得能够实现在流程图和/或框图的一个或更多个框中指定的功能/动作。这样的处理器可以是但不限于通用处理器,专用处理器,应用程序专用处理器或现场可编程门阵列。
附图中的流程图和框图示出了根据本公开的各个实施例的系统、方法和计算机程序产品的可能的实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以代表代码的模块、扇区或部分,其包括用于实现一个或更多个指定的逻辑功能的一个或更多个可执行指令。还应注意,在一些替代实现方式中,框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序执行这些框。还应注意,框图和/或流程图中的每个框以及框图和/或流程图中的框的组合可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
尽管前面针对本公开的实施例,但是可以在不脱离本公开的基本范围的情况下设计本公开的其他和进一步的实施例,并且本公开的范围由所附权利要求确定。
Claims (20)
1.一种用于存储数据的计算机实现的方法,所述方法包括:
压缩与存储器地址的第一范围相关联的第一非压缩数据以生成第一压缩数据;
压缩与存储器地址的第二范围相关联的第二非压缩数据以生成第二压缩数据;
将所述第一压缩数据和所述第二压缩数据存储在与所述存储器地址的第一范围相关联的存储块的第一部分中;以及
将所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个存储在与所述存储器地址的第二范围相关联的所述存储块的第二部分中。
2.根据权利要求1所述的计算机实现的方法,还包括:将所述第一非压缩数据的至少一部分存储在所述存储块的第一部分中。
3.根据权利要求1所述的计算机实现的方法,其中,存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个包括:
确定与包括所述存储块的存储器相关联的存储器带宽利用率;以及
如果所述存储器带宽利用率高于阈值,则将所述第二压缩数据存储在所述存储块的第二部分中,或者
如果所述存储器带宽利用率不高于所述阈值,则将所述第二非压缩数据的所述至少一部分存储在所述存储块的第二部分中。
4.根据权利要求1所述的计算机实现的方法,其中,所述存储块的第一部分包括多个扇区,所述多个扇区包括第一扇区和与所述第一扇区相邻的第二扇区,并且其中,存储所述第一压缩数据和所述第二压缩数据包括:将所述第一压缩数据存储在所述第一扇区中以及将所述第二压缩数据存储在所述第二扇区中。
5.根据权利要求1所述的计算机实现的方法,其中,所述存储块的第二部分包括多个扇区,并且其中,存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个包括:跨所述多个扇区存储所述第二非压缩数据。
6.根据权利要求1所述的计算机实现的方法,其中,所述存储块的第一部分包括第一多个扇区,并且所述存储块的第二部分包括第二多个扇区,并且还包括:更新与所述存储块相关联的压缩状态集以指示将压缩数据存储于包括在所述第一多个扇区中的两个扇区和包括在所述第二多个扇区中的一个扇区中。
7.根据权利要求1所述的计算机实现的方法,其中,所述存储块的第一部分包括第一多个扇区,并且所述存储块的第二部分包括第二多个扇区,并且还包括更新与所述存储块相关联的压缩状态集以指示将压缩数据存储于包括在所述第一多个扇区中的两个扇区中,并且将非压缩数据存储于包括在所述第二多个扇区中的至少一个扇区中。
8.根据权利要求1所述的计算机实现的方法,还包括:
接收将与所述存储器地址的第一范围相关联的第三非压缩数据写入所述存储块的请求;
确定所述存储块的第二部分已经存储了压缩数据;以及
执行写入操作以将所述第三非压缩数据存储在所述存储块的第一部分中。
9.根据权利要求1所述的计算机实现的方法,还包括:
接收将与所述存储器地址的第二范围相关联的第三非压缩数据写入所述存储块的请求;以及
执行写入操作以将所述第三非压缩数据存储在所述存储块的第二部分中。
10.根据权利要求1所述的计算机实现的方法,其中,所述存储块的第二部分包括多个扇区,并且还包括:
接收将第三非压缩数据写入包括在所述多个扇区的至少一个中的请求;
确定包括在所述多个扇区中的所述至少一个扇区尚未存储压缩数据;以及
执行写入操作以将所述第三非压缩数据存储在包括在所述多个扇区中的所述至少一个扇区中。
11.一种系统,包括:
处理器;以及
耦合到所述处理器的存储器接口单元,该存储器接口单元:
压缩与存储器地址的第一范围相关联的第一非压缩数据以生成第一压缩数据;
压缩与存储器地址的第二范围相关联的第二非压缩数据以生成第二压缩数据;
将所述第一压缩数据和所述第二压缩数据存储在与所述存储器地址的第一范围相关联的存储块的第一部分中;以及
将所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个存储在与所述存储器地址的第二范围相关联的所述存储块的第二部分中。
12.根据权利要求11所述的系统,其中,所述存储器接口单元将所述第一非压缩数据的至少一部分存储在所述存储块的第一部分中。
13.根据权利要求11所述的系统,其中,所述存储器接口单元通过以下步骤存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个:
确定与包括所述存储块的存储器相关联的存储器带宽利用率;以及
如果所述存储器带宽利用率高于阈值,则将所述第二压缩数据存储在所述存储块的第二部分中,或者
如果所述存储器带宽利用率不高于所述阈值,则将所述第二非压缩数据的所述至少一部分存储在所述存储块的第二部分中。
14.根据权利要求11所述的系统,其中,所述存储块的第一部分包括第一多个扇区,并且所述存储块的第二部分包括第二多个扇区,并且其中,所述存储器接口单元更新与所述存储块相关联的压缩状态集以指示压缩数据存储于包括在所述第一多个扇区中的两个扇区中并且非压缩数据存储于包括在所述第二多个扇区中的至少一个扇区中。
15.根据权利要求11所述的系统,其中,所述存储器接口单元:
接收将与所述存储器地址的第一范围相关联的第三非压缩数据写入所述存储块的请求;
确定所述存储块的第二部分已经存储了压缩数据;以及
执行写入操作以将所述第三非压缩数据存储在所述存储块的第一部分中。
16.根据权利要求11所述的系统,其中,包括在所述存储块的第一部分中的第一字节总数等于包括在所述第一非压缩数据中的第二字节总数。
17.根据权利要求11所述的系统,其中,所述存储器接口单元通过将所述第一压缩数据和所述第二压缩数据从包括在所述存储器接口单元中的高速缓存行复制到所述存储块的第一部分来存储所述第一压缩数据和所述第二压缩数据。
18.根据权利要求11所述的系统,其中,所述存储器接口单元通过将所述第二非压缩数据的所述至少一部分从包括在所述存储器接口单元中的高速缓存行复制到所述存储块的第二部分来存储所述第二压缩数据或所述第二非压缩数据的至少一部分中的的至少一个。
19.根据权利要求11所述的系统,其中,所述存储块被包括在附接存储器中。
20.一种计算设备,包括:
包含存储块的附接存储器;以及
处理子系统,包括:
处理器;以及
耦合到所述处理器的存储器接口单元,该存储器接口单元:
压缩与存储器地址的第一范围相关联的第一非压缩数据以生成第一压缩数据;
压缩与存储器地址的第二范围相关联的第二非压缩数据以生成第二压缩数据;
将所述第一压缩数据和所述第二压缩数据存储在与所述存储器地址的第一范围相关联的存储块的第一部分中;以及
将所述第二压缩数据或所述第二非压缩数据的至少一部分中的至少一个存储在与所述存储器地址的第二范围相关联的所述存储块的第二部分中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/824,527 US11061571B1 (en) | 2020-03-19 | 2020-03-19 | Techniques for efficiently organizing and accessing compressible data |
US16/824,527 | 2020-03-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113495687A true CN113495687A (zh) | 2021-10-12 |
Family
ID=76764424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010967675.9A Pending CN113495687A (zh) | 2020-03-19 | 2020-09-15 | 有效组织和访问可压缩数据的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11061571B1 (zh) |
CN (1) | CN113495687A (zh) |
DE (1) | DE102021105247A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11934678B2 (en) * | 2022-07-22 | 2024-03-19 | Hewlett Packard Enterprise Development Lp | Data reduction for storage volumes |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101080014A (zh) * | 2006-03-28 | 2007-11-28 | 株式会社东芝 | 视频解码方法和装置 |
US7808507B1 (en) * | 2006-09-18 | 2010-10-05 | Nvidia Corporation | Compression tag state interlock |
US8233004B1 (en) * | 2006-11-06 | 2012-07-31 | Nvidia Corporation | Color-compression using automatic reduction of multi-sampled pixels |
US20130202044A1 (en) * | 2010-10-07 | 2013-08-08 | Panasonic Corporation | Image reproducing method, image reproducing device, image reproducing program, imaging system, and reproducing system |
CN103425437A (zh) * | 2012-05-25 | 2013-12-04 | 华为技术有限公司 | 初始写入地址选择方法和装置 |
US20140297950A1 (en) * | 2011-12-19 | 2014-10-02 | Fujitsu Limited | Storage system, recording medium storing data rebalancing program, and data rebalancing method |
CN104346285A (zh) * | 2013-08-06 | 2015-02-11 | 华为技术有限公司 | 内存访问处理方法、装置及系统 |
CN105657066A (zh) * | 2016-03-23 | 2016-06-08 | 天津书生云科技有限公司 | 用于存储系统的负载再均衡方法及装置 |
US20170123977A1 (en) * | 2015-10-28 | 2017-05-04 | Nvidia Corporation | Organizing Memory to Optimize Memory Accesses of Compressed Data |
US20170133097A1 (en) * | 2015-11-10 | 2017-05-11 | Samsung Electronics Co., Ltd. | Method and apparatus for estimating read levels of nonvolatile memory and for programming pilot signals used for such estimation |
CN107643906A (zh) * | 2016-07-22 | 2018-01-30 | 华为技术有限公司 | 数据处理方法及装置 |
CN108984280A (zh) * | 2017-06-05 | 2018-12-11 | 深圳市中兴微电子技术有限公司 | 一种片外存储器的管理方法和装置、计算机可读存储介质 |
US20190286333A1 (en) * | 2018-03-16 | 2019-09-19 | International Business Machines Corporation | Reducing data using a plurality of compression operations in a virtual tape library |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012168960A1 (en) * | 2011-06-07 | 2012-12-13 | Hitachi, Ltd. | Semiconductor storage apparatus and method of controlling semiconductor storage apparatus |
US9934145B2 (en) | 2015-10-28 | 2018-04-03 | Nvidia Corporation | Organizing memory to optimize memory accesses of compressed data |
US20170228252A1 (en) * | 2016-02-10 | 2017-08-10 | Qualcomm Incorporated | System and method for multi-tile data transactions in a system on a chip |
-
2020
- 2020-03-19 US US16/824,527 patent/US11061571B1/en active Active
- 2020-09-15 CN CN202010967675.9A patent/CN113495687A/zh active Pending
-
2021
- 2021-03-04 DE DE102021105247.5A patent/DE102021105247A1/de active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101080014A (zh) * | 2006-03-28 | 2007-11-28 | 株式会社东芝 | 视频解码方法和装置 |
US7808507B1 (en) * | 2006-09-18 | 2010-10-05 | Nvidia Corporation | Compression tag state interlock |
US8233004B1 (en) * | 2006-11-06 | 2012-07-31 | Nvidia Corporation | Color-compression using automatic reduction of multi-sampled pixels |
US20130202044A1 (en) * | 2010-10-07 | 2013-08-08 | Panasonic Corporation | Image reproducing method, image reproducing device, image reproducing program, imaging system, and reproducing system |
US20140297950A1 (en) * | 2011-12-19 | 2014-10-02 | Fujitsu Limited | Storage system, recording medium storing data rebalancing program, and data rebalancing method |
CN103425437A (zh) * | 2012-05-25 | 2013-12-04 | 华为技术有限公司 | 初始写入地址选择方法和装置 |
CN104346285A (zh) * | 2013-08-06 | 2015-02-11 | 华为技术有限公司 | 内存访问处理方法、装置及系统 |
US20170123977A1 (en) * | 2015-10-28 | 2017-05-04 | Nvidia Corporation | Organizing Memory to Optimize Memory Accesses of Compressed Data |
US20170133097A1 (en) * | 2015-11-10 | 2017-05-11 | Samsung Electronics Co., Ltd. | Method and apparatus for estimating read levels of nonvolatile memory and for programming pilot signals used for such estimation |
CN105657066A (zh) * | 2016-03-23 | 2016-06-08 | 天津书生云科技有限公司 | 用于存储系统的负载再均衡方法及装置 |
CN107643906A (zh) * | 2016-07-22 | 2018-01-30 | 华为技术有限公司 | 数据处理方法及装置 |
CN108984280A (zh) * | 2017-06-05 | 2018-12-11 | 深圳市中兴微电子技术有限公司 | 一种片外存储器的管理方法和装置、计算机可读存储介质 |
US20190286333A1 (en) * | 2018-03-16 | 2019-09-19 | International Business Machines Corporation | Reducing data using a plurality of compression operations in a virtual tape library |
Also Published As
Publication number | Publication date |
---|---|
DE102021105247A1 (de) | 2021-09-23 |
US11061571B1 (en) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9110809B2 (en) | Reducing memory traffic in DRAM ECC mode | |
US10032242B2 (en) | Managing deferred contexts in a cache tiling architecture | |
US10878611B2 (en) | Techniques for pre-processing index buffers for a graphics processing pipeline | |
US10169072B2 (en) | Hardware for parallel command list generation | |
US10877757B2 (en) | Binding constants at runtime for improved resource utilization | |
US8595437B1 (en) | Compression status bit cache with deterministic isochronous latency | |
US10600229B2 (en) | Techniques for representing and processing geometry within a graphics processing pipeline | |
US8271734B1 (en) | Method and system for converting data formats using a shared cache coupled between clients and an external memory | |
JP2010134929A (ja) | 圧縮状態ビットキャッシュ及びバッキング記憶装置 | |
US20130124802A1 (en) | Class Dependent Clean and Dirty Policy | |
CN110084738B (zh) | 在扩展的图形处理管线中表示和处理几何形状的技术 | |
US10121220B2 (en) | System and method for creating aliased mappings to minimize impact of cache invalidation | |
US9934145B2 (en) | Organizing memory to optimize memory accesses of compressed data | |
US10909739B2 (en) | Techniques for representing and processing geometry within an expanded graphics processing pipeline | |
US9754561B2 (en) | Managing memory regions to support sparse mappings | |
US11734869B2 (en) | Graphics processing | |
US11016802B2 (en) | Techniques for ordering atomic operations | |
US10402323B2 (en) | Organizing memory to optimize memory accesses of compressed data | |
US8862823B1 (en) | Compression status caching | |
CN113495687A (zh) | 有效组织和访问可压缩数据的技术 | |
US8237725B1 (en) | Vertex cache map mode for per-vertex state changes | |
US8976185B2 (en) | Method for handling state transitions in a network of virtual processing nodes | |
US9147224B2 (en) | Method for handling state transitions in a network of virtual processing nodes | |
US11418212B2 (en) | Parallel decoding techniques | |
US12105960B2 (en) | Self-synchronizing remote memory operations in a multiprocessor system |
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 |