CN107250996B - 用于存储器分级体系的压实的方法和装置 - Google Patents

用于存储器分级体系的压实的方法和装置 Download PDF

Info

Publication number
CN107250996B
CN107250996B CN201680011969.6A CN201680011969A CN107250996B CN 107250996 B CN107250996 B CN 107250996B CN 201680011969 A CN201680011969 A CN 201680011969A CN 107250996 B CN107250996 B CN 107250996B
Authority
CN
China
Prior art keywords
memory
data
near memory
compacted
compaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680011969.6A
Other languages
English (en)
Other versions
CN107250996A (zh
Inventor
J.K.尼尔森
T.G.阿克尼内-默勒
F.P.克拉贝格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN202111598534.5A priority Critical patent/CN114461543A/zh
Publication of CN107250996A publication Critical patent/CN107250996A/zh
Application granted granted Critical
Publication of CN107250996B publication Critical patent/CN107250996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/147Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0252Improving the response speed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/14Solving problems related to the presentation of information to be displayed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2352/00Parallel handling of streams of display data
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/022Centralised management of display operation, e.g. in a server instead of locally
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/16Use of wireless transmission of display information

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

根据某些实施例,与压缩形成对照,压实被用来减少近存储器的占用。在压实中,增加了存储设备内的数据存储的密度。在压缩中,减少了被用来表示信息的比特数量。因此,你可以进行压缩同时仍然具有稀疏的或者非连续布置的存储。作为结果,压缩可以并非总是减少存储器占用。通过压实压缩的数据,可以减少存储在存储器内的信息的占用。压实有时可以减少对于远存储器访问的需要。

Description

用于存储器分级体系的压实的方法和装置
背景技术
图形和中央处理器可以具有存储系统,所述存储系统具有相对快速的大的近存储器(NM)高速缓冲存储器,并且这又被廉价的而且慢得多的远存储器(FM)支持。在这样的分级的存储器体系结构中,在NM中获得尽可能高的命中率是非常重要的,因为未命中,请求将被发送到FM,并且在请求的数据是可存取的之前,将会花费相对长的时间。例如,近存储器可以是安装在片上系统的图形/中央处理单元上的易失性存储器(即动态随机存取存储器)。远存储器可以是诸如闪速存储器的非易失性存储器。
同时,处理器可以把它的缓冲器中的某些缓冲器压缩成小的固定大小的集合。对于快速随机存取,“稀疏地”(非连续地)存储压缩的高速缓冲存储器线路。当前,因为NM无法利用这种类型的压缩,NM中的压缩的数据仍然具有与NM中的未压缩的数据相同的占用(footprint)。因此,在任何时间实例未使用更昂贵的NM的相当大的部分。
当前的渲染高速缓冲存储器数据压缩技术(例如用于颜色)并未减少渲染缓冲器的存储器占用。那些技术仅仅减少了到存储器和来自存储器的数据业务的量。压实是减少已经压缩的数据的存储器占用的方式。
其它有损数据压缩技术可以减少占用,但是仅以质量的潜在无限制的损失来减少占用。例如,被重复地读取/修改/写入的有损压缩的缓冲器可以使质量恶化。数据损失在许多情况下是不可接受的(例如,由于API兼容性、视觉伪像、非图像数据导致的)。
压实是减少已经压缩的数据的存储器占用而不会引入任何损失的方式。在触发昂贵的远存储器(FM)访问之前,NM中的占用减少使能存储更多的数据。因此,在某些实施例中,NM的视在容量被增加,导致了更高的性能、不太昂贵的片上系统以及减少的功耗。
附图说明
关于下列图来描述某些实施例:
图1是一个实施例的示意性描绘;
图2是用于压实缓冲器的一个实施例的流程图;
图3是用于根据一个实施例的压实的流程图;
图4是根据一个实施例的压实的描绘;
图5是根据又一个实施例的压实的示意性描绘;
图6是用于另一个实施例的示意性描绘;
图7是用于另一个实施例的操作图;
图8是用于根据一个实施例的压实守护进程(daemon)的流程图;
图9是用于选择要压实的页面的算法的流程图;
图10是根据一个实施例的处理系统的框图;
图11是根据一个实施例的处理器的框图;
图12是根据一个实施例的图形处理器的框图;
图13是根据一个实施例的图形处理引擎的框图;
图14是图形处理器的另一个实施例的框图;
图15是根据一个实施例的线程执行逻辑的描绘;
图16是根据某些实施例的图形处理器指令格式的框图;
图17是图形处理器的另一个实施例的框图;
图18A是根据某些实施例的图形处理器命令格式的框图;
图18B是说明根据某些实施例的图形处理器命令序列的框图;
图19是根据某些实施例的示范的图形软件体系结构的描绘;
图20是说明根据某些实施例的IP核开发系统的框图;以及
图21是示出根据某些实施例的示范的片上系统集成电路的框图。
具体实施方式
根据某些实施例,与压缩形成对照,压实被用来减少近存储器的占用。在压实中,存储设备内的数据存储的密度被增加了。在压缩中,被用来表示信息的比特数量被减少了。因此,你可以进行压缩,同时仍然具有稀疏的或者非连续布置的存储。作为结果,压缩可以并非总是减少存储器占用。通过压实压缩的数据,可以减少存储器内存储的信息的占用。有时压实可以减少对于远存储器访问的需要。
根据第一技术,在来自缓冲器(诸如渲染缓冲器)的数据进入近存储器之前所述数据被压实。这可以使用缓冲的压实技术来进行。
根据另一个实施例,压实守护进程可以在近存储器上独立操作以释放空间。根据某些实施例,可以尽可能晚地进行使用压实守护进程的压实以减少过早压实时不必要的存储器业务和逻辑。
守护进程是在预先确定的时间或者响应于某些事件而执行指定的操作的过程。它可以是计算机程序、固件或硬件。通常,并不由用户来调用守护进程。
近存储器和远存储器可以被耦合至处理器。近存储器比远存储器更快并且由远存储器来支持近存储器。编解码器被耦合至渲染高速缓冲存储器。根据第一技术,所述编解码器和近存储器之间的缓冲器为编解码器存储压缩的数据。为更连续的(或者不太稀疏的)寻址存储的缓冲器中的压实且压缩的数据比当被压缩但是未被压实时的相同数据具有更小的占用。
利用压缩,在从颜色高速缓冲存储器被逐出时,近存储器(NM)中的高速缓冲存储器线路可以被压缩降到给定大小的子块的倍数,因此将数据业务减少到远存储器(FM)的更低级高速缓冲存储器。例如,压缩可以是2:N或4:N。高速缓冲存储器线路可以典型地是128B或256B。那么,在一个实施例中,可以将高速缓冲存储器线路压缩到64B子块的整数倍或整数数量。
可以将近存储器分解成被称为近存储器页面大小的分配的大小的页面。压实页面组是一组连续寻址的NM页面。压实页面组大小是NM的页面分配大小的倍数。
例如,在512字节的NM页面分配大小和2,048字节的压实页面组大小的情况下,结合压缩的高速缓冲存储器线路以适合更少数量的NM页面(在这种情况下是一个、两个或三个NM页面,而不是四个)是可能的,因此减少了NM中的所需要的占用。如果压缩的高速缓冲存储器线路的数量太低(即,很少的压缩的线路或者低压缩率),有时无压实可能是可能的。
虽然在来自渲染高速缓冲存储器的图形数据的上下文中给出了示例,但是实施例通常可适用于处理使用压缩的随机访问数据的具有两个或多于两个级别的存储器分级体系中的压缩的数据。
正如图1中所示出的,在使用渲染高速缓冲存储器的实施例中,中央处理单元或图形处理单元(GPU)10与渲染高速缓冲存储器12(诸如颜色高速缓冲存储器)和远存储器11通信。渲染高速缓冲存储器可以是被用于为包括颜色高速缓冲存储器的图形处理器存储压缩的数据的任何高速缓冲存储器。在压缩和解压缩像素数据的编解码器16之后提供压实缓冲器(CB)14。压实缓冲器收集属于压实页面组的压缩的高速缓冲存储器线路(CL)(例如,对于512B的NM页面大小,为2kB)。如果压实页面组被完全填充的话,它可以被安全压实并且从压实缓冲器被驱逐到NM 18。如果数据被充分压实的话,它在压实之后可需要NM中相当少的占用。
如下面更详细地描述的,当压实且压缩的数据从NM被读取、修改并且写回时,数据可占用比之前更多或更少的数据,导致扩展和收缩。假定合理大小的压实缓冲器,可以避免这些事件中的许多事件。
在某些实施例中,与在存储器系统的更远的部分(即远存储器(FM))中相反,NM中的占用减少使能NM中的更多并且更大的渲染目标和缓冲器的存储,因此减少了功耗和等待时间并且导致更高的性能渲染。本文描述的技术有时可以减少有限的NM容量的问题。
压实缓冲器(CB)保持从渲染(例如颜色)高速缓冲存储器中被逐出的高速缓冲存储器线路。在某些实施例中,只有已经被修改的高速缓冲存储器线路被驱逐到CB。可以压缩或者不压缩这些高速缓冲存储器线路。压实控制表面17追踪并且记录如何通过编解码器来压缩特定的高速缓冲存储器线路以及通过编解码器来将特定的高速缓冲存储器线路压缩到什么程度。
与近存储器相比,压实缓冲器像近存储器一样快,但是要小得多。通常,压实缓冲器可以与将压缩的数据供给压实缓冲器的渲染高速缓冲存储器一样快。在某些实施例中,压实缓冲器可以在物理上被定位成靠近渲染高速缓冲存储器。
CB中的项可以是被称作压实页面组(CPG)的成组的连续寻址的NM页面。在从渲染高速缓冲存储器的逐出处,CB被检查以察看它当前是否保持对应的CPG。在一种情况下,将高速缓冲存储器线路映射到CPG的寻址逻辑是右移位操作以去除地址的最低有效位,但是如果需要的话,逻辑可以是更精细的。
控制表面15中的压实控制表面(CCS)记住哪些NM页面被压实。这个CCS指示CPG是否被压实。在一个实施例中,这个表面可以是每CPG单个比特并且它的位置是任意的,即它可以被存储在片上或片外的专用缓冲器中,或者它可以是一般存储器系统的一部分。
可以在软件、固件和/或硬件中实现图2中示出的、用于实现压实缓冲器的序列20。在某些实施例中,可以在软件或固件中以存储在一个或多个非暂时性计算机可读媒体(诸如磁的、光的或者半导体存储装置)中的计算机执行的指令的形式来实现序列。例如,在某些实施例中,可以通过图形处理单元来实现步骤。
在从渲染高速缓冲存储器的逐出处(图2,菱形22),存在有至少两种可能性:
1.如果高速缓冲存储器线路的CPG存在于CB中(菱形24,是):
a.在CPG中存储逐出的线路数据,连同详述高速缓冲存储器线路如何被压缩以及将高速缓冲存储器线路压缩到什么程度的它的压缩控制位)(块26)。
2.如果高速缓冲存储器线路的CPG未存在于CB中(菱形24,否):
a.如果CB未满(菱形28,是),则可以分配一个空闲的CPG并且可以将逐出的线路存入它,连同对应的压缩控制位(块30)。
b.如果CB是满的(菱形28,否),CPG需要被逐出(块32)。所使用的替换政策可以是任意的,但是在一个实施例中政策可以基于与CPG如何被填充的度量相结合的年龄(即,与最近最少使用的(LRU)替换政策类似),并且还可能基于压实性的量。在CPG被逐出之后,正如上面在2a中那样,空的CPG槽被用来存储逐出的高速缓冲存储器线路。
可以在软件、固件和/或硬件中实现图3中示出的压实序列34。在软件和固件实施例中,可以通过存储在一个或多个非暂时性计算机可读媒体(诸如磁的、光的或者半导体存储装置)中的计算机执行的指令来实现它。例如,在一个实施例中,可以通过图形处理器来实现序列。
在从CB逐出时,选择合适的CPG。如果用于CPG的所有数据存在于CB中,CB检查CPG中的高速缓冲存储器线路的压缩控制位(块36)并且计算可能的压实的量(块38)。如果实现了压实(菱形40,是),即用来存储CPG的NM页面的数量比非压实地存储它们更低,设置CCS中的位(块42)并且以连续的组块将高速缓冲存储器线路发送到近存储器(块44)。可以将任何未使用的NM页面用信号通知为空闲的(块50)。如果未实现压实(菱形40,否),在NM中未压实地存储数据(块46)。
作为示例,假定512字节的NM页面大小和1,024字节的CPG大小(即两个NM页面,使能至多2:1压实)。此外,假定颜色缓冲器高速缓冲存储器中的高速缓冲存储器线路大小是在适当位置具有4:N压缩的256字节。在CPG的逐出处,检查压缩控制位,并且如果所有高速缓冲存储器线路的总压缩大于或等于2:1,压实是可能的。对于单独的高速缓冲存储器线路(CL)的压缩率的任何组合,即导致2:1的总压实的4:1、4:2和4:3是可能的。使能压实的不同量的NM页面大小、CPG大小、CL大小以及压缩率的其它组合是可能的。
无论如何,在最后分配的NM页面中可以存在有未使用的部分。例如,使用512字节NM页面,如果1,024字节CPG的压实的数据占用假定576字节,那么这个算法分配2个NM页面,因为
Figure DEST_PATH_IMAGE001
在图4中示出了类似的示例,其中在左边示出了2kB CPG 51,并且它以压缩的形式将所有CL包含在其中。因此,当这样的CPG被标记用于从CB的逐出时,压实数据51并且在这种情况下需要两个页面(512B*2)以用于压实的数据。在这种情况下,这些可以在任何地方被分配,但是最经常地,在近存储器18中它们将是连续的。
在图5中示出了扩展的示例。一个2kB块21中的数据被读入颜色高速缓冲存储器中并且在23处被解压缩、写入以及接着在25处被再次压缩。在这一点上,数据比之前占用了更多空间,并且如在27处指示的,突然它不适合2个页面。因此,在29处,在NM中分配了第三页面,并且将数据混洗进这三个页面中的正确位置。
当CPG从CB被逐出时,可以发生所有数据未被呈现用于检查,即某些数据仍驻留在渲染高速缓冲存储器中并且某些数据可以驻留在NM中。无论如何,这个数据必须被取入CB以使能CPG的压实。从NM读取数据确实需要带宽,但是可以利用合理大小的CB和高效的压缩来保持低水平。属于逐出的CPG的数据可以从渲染高速缓冲存储器被强制逐出;然而,在不久的将来是否将会再次使用那个数据是未知的。一个选项是只允许所有CL已经从渲染高速缓冲存储器被逐出的CPG的压实。如果没有这样的罕见的情况存在,从渲染高速缓冲存储器的强制逐出可被用作撤退。
当从近存储器读回数据时,它首先被解压缩并且接着被直接置于可以是颜色/渲染高速缓冲存储器或者其它高速缓冲存储器的高速缓冲存储器中。
当写到NM作为从LLC的脏线路的逐出的结果发生并且页面组已经处于压实的形式时,可以咨询RCS以决定是否需要扩展寻址的页面组。如果以与NM中压实的表示中相同的方式来压缩从LLC被逐出的线路,则与写线路相比不需要另外的动作。备选方案是让守护进程解压实页面组中的数据,并且接着执行写入而不咨询RCS。
如果未将从LLC逐出的线路压缩到与先前相同的程度,即压缩的表示已经或者收缩或者扩展,在写线路之前,首先将NM页面组解压实。这个页面组则适合于未来的时间点处的压实。
如果需要在压实缓冲器中进行逐出,若干替换策略是可能的。为了最小化数据业务,则可以首先优先化满的CPG,后面是压实缓冲器中最老的CPG。如果没有满的CPG存在,则可以选择具有最高数量的高速缓冲存储器线路的CPG,因为那将最小化来自NM的读取业务。其它策略也是可能的。
由每CPG一个比特组成的压实控制表面(CCS)需要相对小的空间。对于大小
Figure DEST_PATH_IMAGE002
的32比特/像素渲染表面并且使用2kB CPG,CCS存储器的
Figure DEST_PATH_IMAGE003
在上面描述的实施例中,使用缓冲的压实方法,在数据进入NM之前压实数据。然而,因为可能不得不扩展/收缩被压实并且接着读取/修改/写入的数据,那个方法有利地使用足够大的压实缓冲器以避免这些事件中的大多数。
根据第二技术,压实守护进程在近存储器上独立操作以便刚好及时或者稍微提前释放空间。尽可能晚地压实避免浪费过早压实时的(片上)存储器业务和逻辑。
如在图6中示出的,存储器系统包括耦合至高速缓冲存储器分级体系的一个或多个缓冲器压缩编解码器72。近存储器(NM)86担当最后级别的传统高速缓冲存储器(例如,LLC)78之后的大的高速缓冲存储器。以与将数据写到当前图形处理器中的存储器相同的方式但是总是以未压实的形式(即稀疏地存储)潜在地压缩写到NM的数据。
压实守护进程90被连接到NM。当NM填充时,压实守护进程在NM上异步操作以压实它的数据。将NM分成某个大小(例如512B)的存储页面。压实守护进程选择稀疏的但是不可能被再次写入的小范围的存储页面并且将这些压实成更少的一个或多个存储页面。这释放了NM中的空的页面。
如由当前占用级别和/或预算所指示的,例如又如由应用程序接口(API)事件所指示的,压实守护进程可以是可以在任意时间点处运行的独立软件(线程)。
用于选择用于压实的页面的若干不同政策是可能的。行为还可以受益于软件控制(即通过图形驱动器)。例如,当渲染目标被完成渲染并且被绑定为着色器资源(纹理)时,可以通过驱动器将相关的存储页面标记为只读。压实守护进程可以接着在那些页面上操作以释放潜在大数量的页面。
守护进程有效地将整个NM用作压实缓冲器。当NM开始用完空间时,数据开始得到压实。例如,当只有阈值数量的打开页面是可用的时候,在一个实施例中可以触发守护进程以开始压实。因此,在某些实施例中,具有本地在NM范围内的工作集合的应用可不招致额外的片上业务/处理以用于压实。
可以或者在数据进入NM之前使用缓冲方法来进行数据的压实,或者在数据已经被存储在NM中之后(但是在驱逐到FM之前)使用守护进程压实方法来进行数据的压实。早期的压实(即在NM之前)招致额外的带宽/处理,甚至对于具有适合NM的工作集合的应用也是。另外,压缩缓冲器(CB)的控制逻辑可以更复杂以处理当将要被逐出并且被压实的数据未被完全存储在CB中时的情况。例如,一个或多个存储页面的部分可以驻留在更低级高速缓冲存储器(其必须被强制逐出)中和/或在NM(其必须在压实之前被读回)中。
参考图7,一个或多个L1或者渲染高速缓冲存储器70使用被编解码器72无损压缩到一个或多个64B子块或者被未压缩地存储的某个大小(例如256B)的高速缓冲存储器线路。与每个缓冲器相关联的渲染控制表面(RCS)74编码如何/是否压缩高速缓冲存储器线路。L1高速缓冲存储器被耦合至中央处理单元和/或图形处理单元68。
一个或多个编解码器被连接到一个或多个更高级高速缓冲存储器(包括L2高速缓冲存储器76,直到最后级别高速缓冲存储器78)的分级体系。以压缩的形式但是未压实地(即稀疏的)将数据存储在这些高速缓冲存储器中。当从LLC高速缓冲存储器逐出修改的高速缓冲存储器线路时,将数据写到近存储器(NM)86。可以通过近存储器控制器80进行对NM的访问。近存储器被耦合至远存储器92。
近存储器被组织成某个大小(例如512B)的存储页面84。这些又被组织成更大的页面组(例如,4个页面成2KB)。压实守护进程90在页面组上操作以将它们压实成更少的512B页面,从每个页面组潜在地释放一个或多个页面。
图7示出了压实操作的示例。由压实守护进程90压实近存储器82a中稀疏存储的数据,使得一个页面组94适合一个存储页面96。接着在82b处如被压实的那样它被存储在近存储器中。页面组可以由具有连续存储器地址的页面组成,但是所述页面被不连续地存储在NM中。近存储器控制器80(图7)中的存储器地址翻译表91(在图7中)记住地址到页面映射。
单独的页面组控制表面(PGCS)88(图7)编码每个页面组是否被压实地存储。可以使用与每页面组单个比特一样小地来进行这个。近存储器控制器80(图7)访问PGCS 88以检查特定页面是否被压实。
不同可能性存在,但是一个配置让近存储器(NM)作为大的牺牲高速缓冲存储器(victim cache)来操作。从更高级高速缓冲存储器被逐出并且被标记为已修改的数据被写到NM。这样的数据可以被压缩,但是总是未被压实。
压实守护进程可以稍后压实数据以清理NM中的存储页面。当读取访问时,数据从NM被取出(压实的或者未压实的)并且被未压实地存储在最后级别高速缓冲存储器(LLC)中。检查PGCS以查明某个页面是否被压实。注意页面可以压实的形式留在NM中。
当写到NM发生时,通常情况是守护进程已经能够保持足够的空的页面可用。在它不具有的罕见情况下,或者由于所有数据已经被压实或者由于守护进程尚未有时间去压实一切,可能不得不进行从NM驱逐到远存储器(FM)。
为了进一步减少FM访问的数量,存储器控制器可以决定等待守护进程完成更多的压实操作,如果这样的事正在进行中的话。
压实守护进程经由端口或总线(图7,双箭头)被连接到近存储器(NM),但是守护进程可以在它自己的时钟/功率域中内部地操作。因为压实异步发生并且只在被需要时发生,所以守护进程可以长时间段是空闲的。在这样的时间期间,对它断电或者降低它的时钟是有利的。
守护进程可以或者具有它自己的到NM的数据端口94,或者与相同互连上的其它单元(例如,最后级别传统高速缓冲存储器或者用于远存储器的存储器控制器)共享数据端口。在后者的情况下,它可以利用互连上的未使用的读/写周期来访问NM以执行压实。
正在由守护进程取出的页面仍然可以被其它单元同时地只读访问。当压实完成并且当页面正在被守护进程更新时(即它们的内容被压实的内容替换),它们可以临时被锁住。备选地,如果在NM中存在有其它空的页面,则守护进程可以将压实的数据写到那些空的页面,并且仅当它被完成时,更新地址翻译表以指向压实的页面。在那个点上,原始的未压实的页面可以被标记为空的。这个策略减少了系统等待时间。
可以在软件、固件或硬件中实现在图8中示出的压实守护进程序列100。在软件和固件实施例中,它可以通过存储在一个或多个非暂时性计算机可读媒体(诸如磁的、光的或者半导体存储装置)中的计算机可读指令来实现。在一个实施例中,它可以通过图形处理单元来实现。
图8中示出的序列通过在102处确定是否需要压实而开始。如果是这样的话,如在块103中所指示的,在一个实施例中可以暂缓(stay)远存储器访问。接着,如块104中所指示的,可以选择要压实的稀疏的存储页面的范围。如在块106中所指示的,将这个范围的页面压实成更少的页面。如在块108中所指示的,在地址翻译表中存储地址到页面映射。接着,如在块110中所指示的,在PGCS中存储压实指示符以指示已经压实页面组。最后,如在块112中所指示的,在某些实施例中可以解除暂缓(unstay)远存储器访问。
可以在软件、固件或硬件中实现在图9中示出的用于压实页面选择的序列120。在软件和固件实施例中,它可以通过存储在一个或多个非暂时性计算机可读媒体(诸如磁的、光的或者半导体存储装置)中的计算机可读指令来实现。可以例如在图形处理单元中实现所述序列。
压实页面选择序列120在一个实施例中通过如在块122中所指示的选择被驱动器标记为只读的页面组而开始。接着,如在块124中所指示的,压实所选择的页面组。
菱形126处的检查确定是否需要更多的压实。如果是这样的话,如在块128中所指示的,选择最老的页面组以用于压实。如在块130中所指示的,接着压实那些选择的页面组。接着,菱形132处的检查确定是否仍然期望附加的压实。如果是这样的话,如在块134中所指示的,咨询RCS以找到可以被最压实存储的页面组。还可以使用其它的技术。
因为在某些实施例中压实守护进程异步且独立操作,所以不存在与其它高速缓冲存储器的复杂交互(例如,强制的逐出等等)。比较起来,缓冲的压实方法可以具有这样的复杂性。守护进程简单地以它自己的步调用压实的页面替换成组的已完成的页面。
压实守护进程基于诸如图10中示出的政策的阵列来选择页面组(例如2KB块)以用于压实。例如,被驱动器标记为只读数据的页面组适合于第一选择,因为这样的数据可以被压实而没有稍后被写到(并且因此被扩展)的风险。
后面是这个,可以选定依据某个度量是“老”的页面组。例如,最近最少写入的(LRW)是有用的度量,因为这样的页面组在下一次写入之前更可能具有更长的时间间隔(可能从来不)。
为了在不同的页面组之间选择,压实守护进程可以查看关联的渲染控制表面(RCS)以察看可以最压实地存储哪个页面组(即压实之后最少的页面数)。
因为图形驱动器和/或用户应用具有附加的高层信息(包括命令流中预测未来的可能性),可以将提示发送到压实守护进程以改进系统性能。
典型的示例是稍后被用作纹理的渲染目标,并且因此从读/写(R/W)存储器转到只读。另一个示例是平铺渲染,其中已经被完成的平铺贴图(tile)在长时间内(例如下一帧)将不会被写到。可以以优先顺序排列这样的区域以用于压实。
在最近的应用程序接口(API)(例如DX12)中可用的丢弃命令还可以被压实守护进程使用来异步清除不再被需要的页面,而不是压实它们或者将它们驱逐到FM。注意,可以同样地利用缓冲的压实方法来做这个。
实际上,可以通过将机制直接传递到在内部可以保持适合于压实的页面组的队列的守护进程的消息或者通过具有可以被NM控制器通过发送给它的命令直接写入的PGCS中的附加的控制位来进行将信息从软件栈传送到压实守护进程。
与缓冲的压实(BC)方法相比,守护进程执行更少的工作。然而,因为BC始终执行压实,它的压实率可以更好,但是有代价。例如,BC可消耗更多的片上带宽,因为它执行更多的压实操作,并且每个压实可以潜在地触发从NM的读回。
在某些实施例中,可以使用压缩缓冲器和压实守护进程两者。例如,它们可以并行工作。
图10是根据实施例的处理系统100的框图。在各种实施例中,系统100包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处理器桌上系统、多处理器工作站系统、或者具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是并入片上系统(SoC)集成电路内的处理平台,以供移动、手持或者嵌入式设备之用。
系统100的实施例可以包括或者被并入基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持游戏控制台或在线游戏控制台。在某些实施例中,系统100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统100还可以包括可穿戴设备(诸如智能手表可穿戴设备、智能眼睛佩戴物设备、增强的现实设备或虚拟现实设备),与可穿戴设备耦合,或者被集成在可穿戴设备内。在某些实施例中,数据处理系统100是具有一个或多个处理器102和由一个或多个图形处理器108生成的图形接口的电视或者机顶盒设备。
在某些实施例中,一个或多个处理器102各自包括一个或多个处理器核107以处理指令,所述指令在被执行时为系统和用户软件执行操作。在某些实施例中,一个或多个处理器核107中的每个处理器核被配置成处理特定的指令集109。在某些实施例中,指令集109可以有助于复杂指令集计算(CISC)、精简指令集计算(RISC)或者借助于超长指令字(VLIW)的计算。多个处理器核107可以各自处理可以包括有助于其它指令集的模拟的指令的不同指令集109。处理器核107还可以包括其它处理设备,这样的数字信号处理器(DSP)。
在某些实施例中,处理器102包括高速缓冲存储器104。取决于体系结构,处理器102可以具有单个内部高速缓冲存储器或者多个级别的内部高速缓冲存储器。在某些实施例中,在处理器102的各种部件之间共享高速缓冲存储器。在某些实施例中,处理器102还使用可以使用已知的高速缓冲存储器一致性技术来在处理器核107之间共享的外部高速缓冲存储器(例如,3级(L3)高速缓冲存储器或者最后级别高速缓冲存储器(LLC))(未示出)。寄存器堆106被另外地包括在处理器102中,其可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。某些寄存器可以是通用寄存器,然而其它寄存器可以是特定于处理器102的设计的。
在某些实施例中,处理器102被耦合至处理器总线110以在处理器102和系统100中的其它部件之间传输通信信号,诸如地址、数据或者控制信号。在一个实施例中,系统100使用包括存储器控制器集线器116和输入输出(I/O)控制器集线器130的示范的‘集线器’系统体系结构。存储器控制器集线器116有助于存储器设备和系统100的其它部件之间的通信,而I/O控制器集线器(ICH)130提供经由本地I/O总线到I/O设备的连接。在一个实施例中,存储器控制器集线器116的逻辑被集成在处理器内。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备、相变存储器设备或者具有合适的性能以充当过程存储器的某个其它存储器设备。在一个实施例中,存储器设备120可以作为系统100的系统存储器来操作以当一个或多个处理器102执行应用或过程时存储数据122和指令121以用于使用。存储器控制器集线器116还与可以与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作的可选的外部图形处理器112耦合。
在某些实施例中,ICH 130使得外围设备能够经由高速I/O总线连接到存储器设备120和处理器102。I/O外围设备包括但不限于音频控制器146、固件接口128、无线收发器126(例如,Wi-Fi、蓝牙)、数据存储设备124(例如,硬盘驱动器、闪速存储器等等)以及用于将遗留(例如,个人系统2(PS/2))设备耦合至系统的遗留I/O控制器140。一个或多个通用串行总线(USB)控制器142连接输入设备,诸如键盘和鼠标144组合。网络控制器134还可以耦合至ICH 130。在某些实施例中,高性能网络控制器(未示出)耦合至处理器总线110。将会意识到,示出的系统100是示范的并且不是限制的,因为还可以使用不同配置的其它类型的数据处理系统。例如,可以将I/O控制器集线器130集成在一个或多个处理器102内,或者可以将存储器控制器集线器116和I/O控制器集线器130集成在谨慎的外部图形处理器中,诸如外部图形处理器112。
图11是具有一个或多个处理器核202A-202N、集成的存储器控制器214以及集成的图形处理器208的处理器200的实施例的框图。图11的具有与本文的任何其它图的元件相同的附图标记(或名称)的那些元件可以以与本文在别的地方描述的类似的任何方式来操作或者运行,但是不限于这样。处理器200可以包括相当于并且包括由虚线盒子表示的附加的核202N的附加的核。处理器核202A-202N中的每个处理器核包括一个或多个内部高速缓冲存储器单元204A-204N。在某些实施例中,每个处理器核还可以访问一个或多个共享高速缓存的单元206。
内部高速缓冲存储器单元204A-204N和共享的高速缓冲存储器单元206表示处理器200内的高速缓冲存储器分级体系。高速缓冲存储器分级体系可以包括每个处理器核内的指令和数据高速缓冲存储器的至少一个级别以及共享的中级高速缓冲存储器的一个或多个级别,诸如2级(L2)、3级(L3)、4级(L4)或者高速缓冲存储器的其它级别,其中外部存储器之前的高速缓冲存储器的最高级别被分类为LLC。在某些实施例中,高速缓冲存储器一致性逻辑维持各种高速缓冲存储器单元206和204A-204N之间的一致性。
在某些实施例中,处理器200还可以包括系统代理核210和一个或多个总线控制器单元216的集合。一个或多个总线控制器单元216管理外围总线的集合,诸如一个或多个外围部件互连总线(例如,PCI、PCI Express)。系统代理核210为各种处理器部件提供管理功能性。在某些实施例中,系统代理核210包括一个或多个集成的存储器控制器214以管理对各种外部存储器设备(未示出)的访问。
在某些实施例中,处理器核202A-202N中的一个或多个处理器核包括对于同时多线程的支持。在这样的实施例中,系统代理核210包括用于在多线程的处理期间协调和操作核202A-202N的部件。系统代理核210可以另外地包括功率控制单元(PCU),所述PCU包括调节处理器核202A-202N和图形处理器208的功率状态的逻辑和部件。
在某些实施例中,处理器200另外地包括执行图形处理操作的图形处理器208。在某些实施例中,图形处理器208与共享的高速缓冲存储器单元206的集合以及包括一个或多个集成的存储器控制器214的系统代理核210耦合。在某些实施例中,显示器控制器211与图形处理器208耦合以驱动图形处理器输出到一个或多个耦合的显示器。在某些实施例中,显示器控制器211可以是经由至少一个互连与图形处理器耦合的单独的模块,或者可以被集成在图形处理器208或系统代理核210内。
在某些实施例中,基于环的互连单元212被使用来耦合处理器200的内部部件。然而,可以使用备选的互连单元,诸如点对点互连、切换互连或者其它技术,包括本领域众所周知的技术。在某些实施例中,图形处理器208经由I/O链路213与环形互连212耦合。
示范的I/O链路213表示多种I/O互连中的至少一个,包括有助于各种处理器部件和高性能嵌入式存储器模块218(诸如eDRAM模块)之间通信的封装的I/O互连。在某些实施例中,图形处理器208和处理器核202-202N中的每个将嵌入式存储器模块218用作共享的最后级别高速缓冲存储器。
在某些实施例中,处理器核202A-202N是执行相同指令集体系结构的同类核。在另一个实施例中,处理器核202A-202N在指令集体系结构(ISA)方面是异类的,其中处理器核202A-N中的一个或多个处理器核执行第一指令集,然而其它核中的至少一个核执行第一指令集的子集或者不同的指令集。在一个实施例中,处理器核202A-202N在微体系结构方面是异类的,其中具有相对更高的功耗的一个或多个核与具有更低功耗的一个或多个功率核耦合。另外,可以在一个或多个芯片上或者作为除其它部件之外还有的说明的部件的SoC集成电路来实现处理器200。
图12是图形处理器300的框图,所述图形处理器300可以是分立的图形处理单元或者可以是与多个处理核集成的图形处理器。在某些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口进行通信并且与被放入处理器存储器中的命令通信。在某些实施例中,图形处理器300包括访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓冲存储器、一个或多个共享的外部高速缓冲存储器和/或到系统存储器的接口。
在某些实施例中,图形处理器300还包括驱动显示器输出数据到显示设备320的显示器控制器302。显示器控制器302包括用于用户接口元件或视频的多个层的合成和显示的一个或多个叠加平面的硬件。在某些实施例中,图形处理器300包括视频编解码器引擎306以将媒体编码、解码或转码到一个或多个媒体编码格式,从一个或多个媒体编码格式编码、解码或转码媒体,或者在一个或多个媒体编码格式之间编码、解码或转码媒体,所述一个或多个媒体编码格式包括但不限于运动图像专家组(MPEG)格式(诸如MPEG-2)、高级视频编码(AVC)格式(诸如H.264/MPEG-4 AVC以及电影与电视工程师协会(SMPTE)421 M/VC-1)和联合图像专家组(JPEG)格式(诸如JPEG)以及运动JPEG(MJPEG)格式。
在某些实施例中,图形处理器300包括块图像传送(BLIT)引擎304以执行包括例如位边界块传送的二维(2D)光栅化操作。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个部件来执行2D图形操作。在某些实施例中,图形处理引擎310是用于执行包括三维(3D)图形操作和媒体操作的图形操作的计算引擎。
在某些实施例中,GPE 310包括3D管线312以用于执行3D操作,诸如使用按照3D图元形状(例如,矩形、三角形等等)行动的处理功能来渲染三维图像和场景。3D管线312包括执行元件内的各种任务和/或产生到3D/媒体子系统315的执行线程的可编程和固定功能元件。当3D管线312可以被使用来执行媒体操作时,GPE 310的实施例还包括被特别使用来执行诸如视频后处理和图像增强的媒体操作的媒体管线316。
在某些实施例中,媒体管线316包括固定功能或者可编程逻辑单元以代替或者代表视频编解码器引擎306执行一个或多个专用的媒体操作,诸如视频解码加速、视频去除交错和视频编码加速。在某些实施例中,媒体管线316另外地包括产生用于在3D/媒体子系统315上执行的线程的线程产生单元。产生的线程为包括在3D/媒体子系统315中的一个或多个图形执行单元上的媒体操作执行计算。
在某些实施例中,3D/媒体子系统315包括用于执行由3D管线312和媒体管线316产生的线程的逻辑。在一个实施例中,管线将线程执行请求发送到包括用于仲裁和分派各种请求到可用的线程执行资源的线程分派逻辑的3D/媒体子系统315。执行资源包括处理3D和媒体线程的图形执行单元的阵列。在某些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓冲存储器。在某些实施例中,子系统还包括共享的存储器以在线程之间共享数据并且存储输出的数据,所述共享的存储器包括寄存器和可寻址的存储器。
图13是根据某些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,GPE 410是图12中示出的GPE 310的版本。具有与本文的任何其它图的元件相同的附图标记(或名称)的图13的元件可以以与本文在别的地方描述的类似的任何方式来操作或运行,但是不限于这样。
在某些实施例中,GPE 410与将命令流提供给GPE 3D和媒体管线412、416的命令流化器403耦合。在某些实施例中,命令流化器403被耦合至存储器,所述存储器可以是系统存储器、或者共享的高速缓冲存储器和内部高速缓冲存储器中的一个或多个。在某些实施例中,命令流化器403从存储器接收命令并且将命令发送到3D管线412和/或媒体管线416。所述命令是从存储用于3D和媒体管线412、416的命令的环形缓冲器取出的指示。在一个实施例中,环形缓冲器可以另外地包括存储成批的多个命令的批量命令缓冲器。3D和媒体管线412、416通过借助于相应管线内的逻辑执行操作或者通过将一个或多个执行线程分派到执行单元阵列414来处理命令。在某些实施例中,执行单元阵列414是可缩放的,使得阵列基于GPE 410的目标功率和性能级别来包括可变数量的执行单元。
在某些实施例中,采样引擎430与存储器(例如,高速缓冲存储器或系统存储器)和执行单元阵列414耦合。在某些实施例中,采样引擎430为执行单元阵列414提供允许执行阵列414从存储器读取图形和媒体数据的存储器访问机制。在某些实施例中,采样引擎430包括为媒体执行专用的图像采样操作的逻辑。
在某些实施例中,采样引擎430中的专用媒体采样逻辑包括去除噪声/去除交错模块432、运动估计模块434以及图像缩放和滤波模块436。在某些实施例中,去除噪声/去除交错模块432包括用来对解码的视频数据执行去除噪声或去除交错算法中的一个或多个的逻辑。去除交错逻辑将交错的视频内容的交变字段组合成视频的单个帧。去除噪声逻辑从视频和图像数据中减少或去除数据噪声。在某些实施例中,去除噪声逻辑和去除交错逻辑是运动自适应的并且基于在视频数据中检测的运动量来使用空间或时间滤波。在某些实施例中,去除噪声/去除交错模块432包括专用的运动检测逻辑(例如,在运动估计引擎434内)。
在某些实施例中,运动估计引擎434通过对视频数据执行视频加速功能(诸如运动向量估计和预测)来为视频操作提供硬件加速。运动估计引擎确定描述连续视频帧之间的图像数据的转换的运动向量。在某些实施例中,图形处理器媒体编解码器使用视频运动估计引擎434来在以其它方式可能是太计算密集以致不能利用通用处理器来执行的宏块级别上对视频执行操作。在某些实施例中,运动估计引擎434通常可被图形处理器部件利用来帮助对视频数据内的运动的方向或量值敏感或自适应的视频解码和处理功能。
在某些实施例中,图像缩放和滤波模块436执行图像处理操作以增强生成的图像和视频的视觉质量。在某些实施例中,缩放和滤波模块436在将数据提供给执行单元阵列414之前在采样操作期间处理图像和视频数据。
在某些实施例中,GPE 410包括为图形子系统提供附加的机制以便访问存储器的数据端口444。在某些实施例中,数据端口444有助于用于包括渲染目标写入、恒定的缓冲器读取、擦除存储器空间读取/写入以及媒体表面访问的操作的存储器访问。在某些实施例中,数据端口444包括高速缓冲存储器空间以便对存储器进行高速缓存访问。高速缓冲存储器可以是单个数据高速缓冲存储器或者被分成用于经由数据端口访问存储器的多个子系统的多个高速缓冲存储器(例如,渲染缓冲器高速缓冲存储器、恒定的缓冲器高速缓冲存储器等等)。在某些实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由耦合GPE 410的子系统中的每个子系统的数据分布互连交换消息来与数据端口通信。
图14是图形处理器500的另一个实施例的框图。具有与本文的任何其它图的元件相同的附图标记(或名称)的图14的元件可以以与本文在别的地方描述的类似的任何方式来操作或者运行,但是不限于这样。
在某些实施例中,图形处理器500包括环形互连502、管线前端504、媒体引擎537以及图形核580A-580N。在某些实施例中,环形互连502将图形处理器耦合至包括其它图形处理器或者一个或多个通用处理器核的其它处理单元。在某些实施例中,图形处理器是集成在多核处理系统内的多个处理器中的一个处理器。
在某些实施例中,图形处理器500经由环形互连502接收成批的命令。通过管线前端504中的命令流化器503来解释传入的命令。在某些实施例中,图形处理器500包括借助于一个或多个图形核580A-580N来执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流化器503将命令供应给几何管线536。对于至少某些媒体处理命令,命令流化器503将命令供应给与媒体引擎537耦合的视频前端534。在某些实施例中,媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。在某些实施例中,几何管线536和媒体引擎537各自生成用于由至少一个图形核580A提供的线程执行资源的执行线程。
在某些实施例中,图形处理器500包括以模块化的核580A-580N(有时被称为核片)为特色的可缩放线程执行资源,所述模块化的核各自具有多个子核550A-550N、560A-560N(有时被称为核子片)。在某些实施例中,图形处理器500可以具有任何数量的图形核580A直到580N。在某些实施例中,图形处理器500包括具有至少第一子核550A和第二核子核560A的图形核580A。在其它实施例中,图形处理器是具有单个子核(例如550A)的低功率处理器。在某些实施例中,图形处理器500包括多个图形核580A-580N,各自包括第一子核550A-550N的集合和第二子核560A-560N的集合。第一子核550A-550N的集合中的每个子核包括至少执行单元552A-552N和媒体/纹理采样器554A-554N的第一集合。第二子核560A-560N的集合中的每个子核包括至少执行单元562A-562N和采样器564A-564N的第二集合。在某些实施例中,每个子核550A-550N、560A-560N共享共享的资源570A-570N的集合。在某些实施例中,共享的资源包括共享的高速缓冲存储器和像素操作逻辑。其它共享的资源还可以被包括在图形处理器的各种实施例中。
图15说明了线程执行逻辑600包括在GPE的某些实施例中使用的处理元件的阵列。具有与本文的任何其它图的元件相同的附图标记(或名称)的图15的元件可以以与本文在别的地方描述的类似的任何方式来操作或者运行,但是不限于这样。
在某些实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指令高速缓冲存储器606、包括有多个执行单元608A-608N的可缩放执行单元阵列、采样器610、数据高速缓冲存储器612以及数据端口614。在一个实施例中,经由链接到部件中的每个部件的互连结构来互连所包括的部件。在某些实施例中,线程执行逻辑600包括通过指令高速缓冲存储器606、数据端口614、采样器610以及执行单元阵列608A-608N中的一个或多个的、到存储器(诸如系统存储器或者高速缓冲存储器)的一个或多个连接。在某些实施例中,每个执行单元(例如608A)是能够执行多个同时线程并且为每个线程并行处理多个数据元素的单独的向量处理器。在某些实施例中,执行单元阵列608A-608N包括任何数量的单独的执行单元。
在某些实施例中,执行单元阵列608A-608N主要被用来执行“着色器”程序。在某些实施例中,阵列608A-608N中的执行单元执行包括对于许多标准3D图形着色器指令的本地支持的指令集,使得利用最小翻译执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。
执行单元阵列608A-608N中的每个执行单元在数据元素的阵列上操作。数据元素的数量是“执行大小”或者用于指令的通道数量。执行通道是用于指令内的数据元素访问、掩蔽(masking)和流程控制的执行的逻辑单元。通道数量可以独立于用于特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在某些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括单指令多数据(SIMD)指令。各种数据元素可以在寄存器中被存储为压缩数据类型并且执行单元将基于元素的数据大小来处理各种元素。例如,当在256位宽的向量上操作时,向量的256位被存储在寄存器中并且执行单元在作为四个单独的64位压缩的数据元素(四倍长字(QW)大小数据元素)、八个单独的32位压缩的数据元素(双字(DW)大小数据元素)、十六个单独的16位压缩的数据元素(字(W)大小数据元素)或者三十二个单独的8位数据元素(字节(B)大小数据元素)的向量上操作。然而,不同的向量宽度和寄存器大小是可能的。
一个或多个内部指令高速缓冲存储器(例如606)被包括在线程执行逻辑600中以便为执行单元高速缓存线程指令。在某些实施例中,一个或多个数据高速缓冲存储器(例如612)被包括以便在线程执行期间高速缓存线程数据。在某些实施例中,采样器610被包括以便为3D操作提供纹理采样并且为媒体操作提供媒体采样。在某些实施例中,采样器610包括专用的纹理或媒体采样功能性以在将采样的数据提供给执行单元之前在采样过程期间处理纹理或媒体数据。
在期间执行,图形和媒体管线经由线程产生和分派逻辑将线程发起请求发送到线程执行逻辑600。在某些实施例中,线程执行逻辑600包括仲裁来自图形和媒体管线的线程发起请求并且在一个或多个执行单元608A-608N上例示请求的线程的本地线程分派器604。例如,几何管线(例如,图14的536)将顶点处理、镶嵌或者几何处理线程分派到线程执行逻辑600(图15)。在某些实施例中,线程分派器604还可以处理来自执行着色器程序的运行时间线程产生请求。
一旦一组几何对象已经被处理并且被光栅化成像素数据,像素着色器602被调用以便进一步计算输出的信息并且促使结果将要被写到输出表面(例如颜色缓冲器、深度缓冲器、模板缓冲器等等)。在某些实施例中,像素着色器602计算将要跨光栅化的对象被内插的各种顶点属性的值。在某些实施例中,像素着色器602接着执行应用编程接口(API)供应的像素着色器程序。为了执行像素着色器程序,像素着色器602经由线程分派器604将线程分派到执行单元(例如608A)。在某些实施例中,像素着色器602使用采样器610中的纹理采样逻辑来访问被存储在存储器中的纹理映射中的纹理数据。纹理数据和输入几何数据上的算术操作为每个几何片段计算像素颜色数据,或者从进一步处理中丢弃一个或多个像素。
在某些实施例中,数据端口614将为线程执行逻辑600输出处理的数据到存储器提供存储器访问机制以用于在图形处理器输出管线上处理。在某些实施例中,数据端口614包括或者耦合至一个或多个高速缓冲存储器(例如,数据高速缓冲存储器612)以便高速缓存数据以用于经由数据端口的存储器访问。
图16是说明根据某些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线盒子说明了通常被包括在执行单元指令中的部件,而虚线包括是可选的或者仅仅被包括在指令的子集中的部件。在某些实施例中,与一旦指令被处理则由指令产生的微操作解码相反,所描述的和所说明的指令格式700是宏指令,因为它们是被供应给执行单元的指令。
在某些实施例中,图形处理器执行单元本地支持128位格式710的指令。基于所选择的指令、指令选项以及操作数的数量,64位压实的指令格式730对于某些指令是可用的。本地128位格式710提供对所有指令选项的访问,而某些选项和操作被限制在64位格式730。64位格式730的可用的本地指令随实施例而变化。在某些实施例中,使用索引字段713中的索引值的集合来部分压实指令。执行单元硬件基于索引值来引用压实表的集合并且使用压实表输出来重建128位格式710的本地指令。
对于每个格式,指令操作码712定义执行单元将要执行的操作。执行单元跨每个操作数的多个数据元素并行执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同时加法操作。缺省地,执行单元跨操作数的所有数据通道执行每个指令。在某些实施例中,指令控制字段714使能控制某些执行选项,诸如通道选择(例如预测)和数据通道顺序(例如搅和(swizzle))。对于128位指令710,执行大小(exec-size)字段716限制将被并行执行的数据通道的数量。在某些实施例中,执行大小字段716不可用于64位压实指令格式730。
某些执行单元指令具有多达三个操作数,包括两个源操作数src0 722、srd1 722和一个目的地718。在某些实施例中,执行单元支持双目的地指令,其中目的地中的一个被暗示。数据操纵指令可以具有第三源操作数(例如,SRC2 724),其中指令操作码712确定源操作数的数量。指令的最后源操作数可以是随指令传递的立即(例如硬编码)值。
在某些实施例中,128位指令格式710包括指定例如是使用直接寄存器寻址模式还是使用间接寄存器寻址模式的访问/地址模式信息726。当使用直接寄存器寻址模式时,通过指令710中的位直接提供一个或多个操作数的寄存器地址。
在某些实施例中,128位指令格式710包括指定对于指令的地址模式和/或访问模式的访问/地址模式字段726。在一个实施例中,访问模式定义用于指令的数据访问对准。某些实施例支持包括16字节对准的访问模式和1字节对准的访问模式的访问模式,其中访问模式的字节对准确定指令操作数的访问对准。例如,当处在第一模式时,指令710可以为源和目的地操作数使用字节对准的寻址并且当处在第二模式时,指令710可以为所有源和目的地操作数使用16字节对准的寻址。
在一个实施例中,访问/地址模式字段726的地址模式部分确定指令将使用是直接还是间接寻址。当使用直接寄存器寻址模式时,指令710中的位直接地提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址立即字段计算一个或多个操作数的寄存器地址。
在某些实施例中,基于操作码712位字段来对指令分组以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的精确的操作码分组仅仅是示例。在某些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在某些实施例中,移动和逻辑组742共享五个最高有效位(MSB),其中移动(mov)指令是以0000xxxxb的形式并且逻辑指令是以0001xxxxb的形式。流程控制指令组744(例如,调用、跳(jmp))包括以0010xxxxb的形式(例如0x20)的指令。杂项指令组746包括指令的混合,包括以0011xxxxb的形式(例如0x30)的同步指令(例如,等待、发送)。并行数学指令组748包括以0100xxxxb的形式(例如0x40)的分量方式算术指令(例如,加、乘(mul))。并行数学组748跨数据通道并行执行算术操作。向量数学组750包括以0101xxxxb的形式(例如0x50)的算术指令(例如dp4)。向量数学组对向量操作数执行算术,诸如点积计算。
图17是图形处理器800的另一个实施例的框图。具有与本文的任何其它图的元件相同的附图标记(或名称)的图17的元件可以以与本文在别的地方描述的类似的任何方式来操作或者运行,但是不限于这样。
在某些实施例中,图形处理器800包括图形管线820、媒体管线830、显示器引擎840、线程执行逻辑850以及渲染输出管线870。在某些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。通过寄存器写到一个或多个控制寄存器(未示出)或者借助于经由环形互连802发出到图形处理器800的命令来控制图形处理器。在某些实施例中,环形互连802将图形处理器800耦合至其它处理部件,诸如其它图形处理器或通用处理器。通过将指令供应给图形管线820或者媒体管线830的单独的部件的命令流化器803来解释来自环形互连802的命令。
在某些实施例中,命令流化器803指导从存储器读取顶点数据并且执行由命令流化器803提供的顶点处理命令的顶点读取器805的操作。在某些实施例中,顶点读取器805将顶点数据提供给执行坐标空间转换和点亮操作到每个顶点的顶点着色器807。在某些实施例中,顶点读取器805和顶点着色器807通过经由线程分派器831将执行线程分派到执行单元852A、852B来执行顶点处理指令。
在某些实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在某些实施例中,执行单元852A、852B具有专用于每个阵列或者在阵列之间共享的附加的L1高速缓冲存储器851。高速缓冲存储器可以被配置为数据高速缓冲存储器、指令高速缓冲存储器或者被分区成包含不同分区中的数据和指令的单个高速缓冲存储器。
在某些实施例中,图形管线820包括用来执行3D对象的硬件加速的镶嵌的镶嵌部件。在某些实施例中,可编程外壳着色器811配置镶嵌操作。可编程域着色器817提供镶嵌输出的后端评估。镶嵌器813在外壳着色器811的指导下操作并且包含专用逻辑以基于作为到图形管线820的输入而被提供的粗几何模型来生成详细的几何对象的集合。在某些实施例中,如果未使用镶嵌,可以绕过镶嵌部件811、813、817。
在某些实施例中,可以通过几何着色器819借助于被分派到执行单元852A、852B的一个或多个线程来处理全部几何对象,或者全部几何对象可以直接进入限幅器829。在某些实施例中,如在图形管线的先前级中那样,几何着色器在整个几何对象上操作,而不是顶点或者顶点的补片。如果镶嵌被停用,则几何着色器819从顶点着色器807接收输入。在某些实施例中,如果镶嵌单元被停用,则几何着色器819通过几何着色器程序是可编程的以执行几何镶嵌。
在光栅化之前,限幅器829处理顶点数据。限幅器829可以是具有限幅和几何着色器功能的可编程限幅器或者固定功能限幅器。在某些实施例中,渲染输出管线870中的光栅化器/深度873分派像素着色器以将几何对象转换成它们的每像素表示。在某些实施例中,像素着色器逻辑被包括在线程执行逻辑850中。在某些实施例中,应用可以绕过光栅化器873并且经由流输出单元823来访问未光栅化的顶点数据。
图形处理器800具有互连总线、互连结构或者允许数据和消息在处理器的主要部件之间传递的某个其它互连机制。在某些实施例中,执行单元852A、852B和一个或多个关联的高速缓冲存储器851、纹理和媒体采样器854以及纹理/采样器高速缓冲存储器858经由数据端口856互连以执行存储器访问并且与处理器的渲染输出管线部件通信。在某些实施例中,采样器854、高速缓冲存储器851、858以及执行单元852A、852B各自具有单独的存储器访问路径。
在某些实施例中,渲染输出管线870包含将基于顶点的对象转换成关联的基于像素的表示的光栅化器和深度测试部件873。在某些实施例中,光栅化器逻辑包括窗口器/掩蔽器单元以执行固定功能三角形和线光栅化。在某些实施例中,关联的渲染高速缓冲存储器878和深度高速缓冲存储器879也是可用的。像素操作部件877对数据执行基于像素的操作,虽然在某些实例中,与2D操作相关联的像素操作(例如利用混合的位块图像传送)通过2D引擎841来执行,或者使用叠加显示平面通过显示器控制器843在显示时间被替代。在某些实施例中,共享的L3高速缓冲存储器875可用于所有图形部件,允许数据共享而不使用主系统存储器。
在某些实施例中,图形处理器媒体管线830包括媒体引擎837和视频前端834。在某些实施例中,视频前端834从命令流化器803接收管线命令。在某些实施例中,媒体管线830包括单独的命令流化器。在某些实施例中,在将命令发送到媒体引擎837之前,视频前端834处理媒体命令。在某些实施例中,媒体引擎337包括线程产生功能性以产生用于经由线程分派器831分派到线程执行逻辑850的线程。
在某些实施例中,图形处理器800包括显示器引擎840。在某些实施例中,显示器引擎840在处理器800的外部并且经由环形互连802或者某个其它互连总线或结构与图形处理器耦合。在某些实施例中,显示器引擎840包括2D引擎841和显示器控制器843。在某些实施例中,显示器引擎840包含能够独立于3D管线来操作的专用逻辑。在某些实施例中,显示器控制器843与显示器设备(未示出)耦合,所述显示器设备可以是如在膝上型计算机中的系统集成的显示器设备,或者是经由显示器设备连接器附接的外部显示器设备。
在某些实施例中,图形管线820和媒体管线830是可配置的以便基于多个图形和媒体编程接口来执行操作并且不是专用于任何一个应用编程接口(API)的。在某些实施例中,用于图形处理器的驱动器软件将专用于特定图形或媒体库的API调用翻译成可以被图形处理器处理的命令。在某些实施例中,为来自Khronos组的公开图形库(OpenGL)和公开计算语言(OpenCL)、来自Microsoft公司的Direct3D库提供支持,或者可以向OpenGL和D3D两者提供支持。还可以为开源计算机视觉库(OpenCV)提供支持。如果可以进行从未来API的管线到图形处理器的管线的映射,则还将支持具有兼容的3D管线的未来API。
图18A是说明根据某些实施例的图形处理器命令格式900的框图。图18B是说明根据实施例的图形处理器命令序列910的框图。图18A中的实线盒子说明了通常被包括在图形命令中的部件,而虚线包括是可选的或者仅仅被包括在图形命令的子集中的部件。图18A的示范的图形处理器命令格式900包括数据字段以识别命令的目标客户902、命令操作码(操作码)904以及用于命令的相关数据906。子操作码905和命令大小908也被包括在某些命令中。
在某些实施例中,客户902指定处理命令数据的图形设备的客户单元。在某些实施例中,图形处理器命令解析器检查每个命令的客户字段以调节命令的进一步处理并且将命令数据路由到适当的客户单元。在某些实施例中,图形处理器客户单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户单元具有处理命令的对应处理管线。一旦由客户单元接收到命令,客户单元读取操作码904和子操作码905(如果存在的话)以确定要执行的操作。客户单元使用数据字段906中的信息来执行命令。对于某些命令,预期显式的命令大小908以指定命令的大小。在某些实施例中,命令解析器基于命令操作码来自动确定至少某些命令的大小。在某些实施例中,借助于双字的倍数来对准命令。
图18B中的流程图示出了示范的图形处理器命令序列910。在某些实施例中,以图形处理器的实施例为特色的数据处理系统的软件或者固件使用示出的命令序列的版本来建立、执行和终止图形操作的集合。仅仅为了示例的目的来示出和描述采样命令序列,因为实施例不限于这些特定的命令或者不限于这个命令序列。此外,命令可以作为命令序列中的批量的命令被发出,使得图形处理器将至少部分同时处理命令的序列。
某些实施例中,图形处理器命令序列910可以始于管线冲洗命令912以促使任何活动的图形管线为管线完成当前未决的命令。在某些实施例中,3D管线922和媒体管线924不会同时操作。执行管线冲洗以促使活动的图形管线完成任何未决的命令。响应于管线冲洗,用于图形处理器的命令解析器将暂停命令处理直到活动的绘图引擎完成未决的操作并且使相关的读取高速缓冲存储器无效。可选地,可以将渲染高速缓冲存储器中的被标记‘脏’的任何数据冲洗到存储器。在某些实施例中,管线冲洗命令912可以被用于管线同步或者在将图形处理器置于低功率状态之前可以使用管线冲洗命令912。
在某些实施例中,当命令序列要求图形处理器显式地在管线之间切换时,使用管线选择命令913。在某些实施例中,在发出管线命令之前,在执行上下文内仅要求管线选择命令913一次,除非上下文是为两个管线发出命令。在某些实施例中,在借助于管线选择命令913的管线切换之前立即要求管线冲洗命令912。
在某些实施例中,管线控制命令914配置用于操作的图形管线并且被用来编程3D管线922和媒体管线924。在某些实施例中,管线控制命令914为活动的管线配置管线状态。在一个实施例中,管线控制命令914被用于管线同步并且被用来在处理批量的命令之前从活动的管线内的一个或多个高速缓冲存储器清除数据。
在某些实施例中,返回缓冲器状态命令916被用来为相应的管线配置返回缓冲器的集合以写入数据。某些管线操作要求分配、选择或者配置在处理期间操作将中间数据写入的一个或多个返回缓冲器。在某些实施例中,图形处理器还使用一个或多个返回缓冲器来存储输出的数据并且执行交叉线程通信。在某些实施例中,返回缓冲器状态916包括选择返回缓冲器的大小和数量以用于管线操作的集合。
命令序列中的剩余命令基于用于操作的活动的管线而不同。基于管线确定920,命令序列适应始于3D管线状态930的3D管线922,或者始于媒体管线状态940的媒体管线924。
用于3D管线状态930的命令包括3D状态设置命令以用于顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及在处理3D图元命令之前将要被配置的其它状态变量。至少部分地基于在使用中的特定3D API来确定这些命令的值。在某些实施例中,如果将不会使用某些管线元件的话,3D管线状态930命令还能够选择性地停用或者绕过那些元件。
在某些实施例中,3D图元932命令被用来提交将要被3D管线处理的3D图元。将借助于3D图元932命令被传递到图形处理器的命令和关联的参数转发到图形管线中的顶点读取功能。顶点读取功能使用3D图元932命令数据来生成顶点数据结构。在一个或多个返回缓冲器中存储顶点数据结构。在某些实施例中,3D图元932命令被用来借助于顶点着色器在3D图元上执行顶点操作。为了处理顶点着色器,3D管线922将着色器执行线程分派到图形处理器执行单元。
在某些实施例中,借助于执行934命令或事件来触发3D管线922。在某些实施例中,寄存器写入触发命令执行。在某些实施例中,借助于命令序列中的‘go’或‘kick’命令来触发执行。在一个实施例中,使用管线同步命令来触发命令执行以通过图形管线来冲洗命令序列。3D管线将为3D图元执行几何处理。一旦操作完成,光栅化所得到的几何对象并且像素引擎给所得到的像素上色。控制像素着色和像素后端操作的附加命令也可以为了那些操作而被包括在内。
在某些实施例中,当执行媒体操作时,图形处理器命令序列910沿媒体管线924路径而行。通常,用于媒体管线924的编程的特定使用和方式取决于将要被执行的媒体或计算操作。在媒体解码期间,可以将特定媒体解码操作推卸给媒体管线。在某些实施例中,还可以绕过媒体管线并且可以使用由一个或多个通用处理核提供的资源来完全或者部分地执行媒体解码。在一个实施例中,媒体管线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中图形处理器被用来使用不是显式地与图形图元的渲染有关的计算着色器程序来执行SIMD向量操作。
在某些实施例中,以与3D管线922类似的方式来配置媒体管线924。在媒体对象命令942之前,将媒体管线状态命令940的集合分派或者置于命令序列中。在某些实施例中,媒体管线状态命令940包括配置将被用来处理媒体对象的媒体管线元件的数据。这包括配置媒体管线内的视频解码和视频编码逻辑的数据,诸如编码或解码格式。在某些实施例中,媒体管线状态命令940还支持使用到包含批量的状态设置的“间接”状态元件的一个或多个指针。
在某些实施例中,媒体对象命令942将指针供应给媒体对象以用于由媒体管线处理。媒体对象包括包含有将要被处理的视频数据的存储器缓冲器。在某些实施例中,在发出媒体对象命令942之前,所有媒体管线状态必须是有效的。一旦配置了管线状态并且使媒体对象命令942排队,就借助于执行命令944或等同的执行事件(例如,寄存器写入)来触发媒体管线924。接着可以通过由3D管线922或媒体管线924提供的操作来后处理来自媒体管线924的输出。在某些实施例中,以与媒体操作类似的方式配置和执行GPGPU操作。
图19说明了根据某些实施例的数据处理系统1000的示范的图形软件体系结构。在某些实施例中,软件体系结构包括3D图形应用1010、操作系统1020和至少一个处理器1030。在某些实施例中,处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。
在某些实施例中,3D图形应用1010包含包括有着色器指令1012的一个或多个着色器程序。着色器语言指令可以是以高级着色器语言的,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。应用还包括适合于由通用处理器核1034执行的机器语言中的可执行指令1014。应用还包括通过顶点数据定义的图形对象1016。
在某些实施例中,操作系统1020是来自Microsoft公司的Microsoft® Windows®操作系统、私有的类UNIX操作系统、或者使用Linux内核的变体的开源类UNIX操作系统。当Direct3D API在使用中时,操作系统1020使用前端着色器编译器1024来将HLSL中的任何着色器指令1012编译成更低级着色器语言。编译可以是即时(JIT)编译或者应用可以执行着色器预编译。在某些实施例中,在3D图形应用1010的编译期间,将高级着色器编译成低级着色器。
在某些实施例中,用户模式图形驱动器1026包含将着色器指令1012转换成硬件特定的表示的后端着色器编译器1027。当OpenGL API在使用中时,将以GLSL高级语言的着色器指令1012传递到用户模式图形驱动器1026以用于编译。在某些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029通信。在某些实施例中,内核模式图形驱动器1029与图形处理器1032通信以分派命令和指令。
可以通过存储在机器可读介质上的表示和/或定义集成电路(诸如处理器)内的逻辑的代表性代码来实现至少一个实施例的一个或多个方面。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当通过机器读取时,指令可以促使机器制作执行本文描述的技术的逻辑。被称为“IP核”的这样的表示是用于集成电路的逻辑的可重复使用单元,其可以作为描述集成电路的结构的硬件模型被存储在有形的机器可读介质上。可以将硬件模型供应给将硬件模型加载到制造集成电路的制作机器上的各种顾客或制造设施。可以制作集成电路使得电路执行与本文描述的实施例中的任何实施例相关联而描述的操作。
图20是说明可以被用来制造执行根据实施例的操作的集成电路的IP核开发系统1100的框图。IP核开发系统1100可以被用来生成可以被并入更大设计的模块化的可重复使用设计或者被用来建造整个集成电路(例如,SOC集成电路)。设计设施1130可以以高级编程语言(例如,C/C++)生成IP核设计的软件模拟1110。软件模拟1110可被用来设计、测试和验证IP核的行为。接着可以由模拟模型1100创建或者合成寄存器传送级(RTL)设计。RTL设计1115是对硬件寄存器之间的数字信号流建模的集成电路的行为的抽象,包括使用建模的数字信号执行的关联的逻辑。除了RTL设计1115之外,还可以创建、设计或者合成逻辑级或者晶体管级的更低级设计。因此,初始设计和模拟的特定细节可以变化。
可以通过设计设施来将RTL设计1115或者等同物进一步合成为可以是以硬件描述语言(HDL)或者物理设计数据的某个其它表示的硬件模型1120。可以进一步模拟或者测试HDL以验证IP核设计。可以使用非易失性存储器1140(例如,硬盘、闪速存储器或者任何非易失性存储介质)来存储IP核设计以用于传递到第3方制作设施1165。备选地,可以通过有线连接1150或者无线连接1160传输(例如,经由互联网)IP核设计。制作设施1165可以接着制作至少部分基于IP核设计的集成电路。制作的集成电路可以被配置成执行根据本文描述的至少一个实施例的操作。
图21是说明根据实施例的可以使用一个或多个IP核来制作的示范的片上系统集成电路1200的框图。示范的集成电路包括一个或多个应用处理器1205(例如,CPU)、至少一个图形处理器1210并且可以另外地包括图像处理器1215和/或视频处理器1220,其中的任何一个可以是来自相同或者多个不同设计设施的模块化IP核。集成电路包括外围设备或者总线逻辑,其包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2S/I2C控制器1240。另外,集成电路可以包括耦合至移动行业处理器接口(MIPI)显示器接口1255和高清多媒体接口(HDMI)控制器1250中的一个或多个的显示器设备1245。可以通过包括闪速存储器和闪速存储器控制器的闪速存储器子系统1260来提供存储。可以经由存储器控制器1265来提供存储器接口以用于访问SDRAM或SRAM存储器设备。某些集成电路另外地包括嵌入式安全引擎1270。
另外,其它逻辑和电路可以被包括在集成电路1200的处理器中,包括附加的图形处理器/核、外围接口控制器或者通用处理器核。
下面的条款和/或示例属于另外的实施例:
一个示例实施例可以是一种方法,包括提供耦合至处理器的近存储器和远存储器,其中所述近存储器比所述远存储器更快并且所述近存储器被所述远存储器支持,使用编解码器压缩将要被存储在所述近存储器中的数据,压实所述压缩的数据,以及存储所述压实的数据使得所述压缩且压实的数据的占用比压实之前的压缩的数据的占用更少。所述方法还可以包括在将压缩的数据存入近存储器之前压实。所述方法还可以包括将多个高速缓冲存储器线路的块一起压实为可寻址组。所述方法还可以包括在所述编解码器和所述近存储器之间提供缓冲器,所述缓冲器用来为所述编解码器存储压缩的数据,使得所述缓冲器中的所述压缩的数据与来自编解码器的压缩的数据相比具有更小的占用。所述方法还可以包括确定是否可以将多个高速缓冲存储器线路作为连续块来存储,并且如果是这样的话,在近存储器中连续存储所述块。所述方法还可以包括将所述块作为高速缓冲存储器线路大小的整数倍存储在近存储器中。所述方法还可以包括提供如存储的所述块被压实的指示。所述方法还可以包括通过下列操作来从所述近存储器中读取数据:由所述指示来确定所述块是否被压实并且如果是这样的话,解压实所述块并且将所述解压实的组块作为高速缓冲存储器线路大小的整数倍存储在所述缓冲器中。所述方法还可以包括在近存储器中压实所述数据。所述方法还可以包括响应于需要空闲的存储器的指示而压实。所述方法还可以包括压实所选择的范围的存储页面。所述方法还可以包括将压实的范围的页面地址存储在地址翻译表中。所述方法还可以包括存储所述范围的页面已经被压实的指示。所述方法还可以包括使用可以在任意时间点运行的独立软件来压实。所述方法还可以包括将压实的和未压实的压缩的数据两者存储在近存储器中。所述方法还可以包括在写到所述近存储器时压缩接着解压实以及通过解压实接着解压缩来读取数据。
另一个示例实施例可以是存储被处理器执行来执行序列的指令的一个或多个非暂时性计算机可读媒体,所述序列包括提供耦合至处理器的近存储器和远存储器,其中所述近存储器比所述远存储器更快并且所述近存储器被所述远存储器支持,使用编解码器压缩将要被存储在所述近存储器中的数据,压实所述压缩的数据,以及存储所述压实的数据使得所述压缩且压实的数据的占用比压实之前的压缩的数据的占用更少。所述媒体可以包括所述序列,所述序列包括在将压缩的数据存储在近存储器中之前压实。所述媒体可以包括所述序列,所述序列包括将多个高速缓冲存储器线路的块一起压实为可寻址组。所述媒体可以包括所述序列,所述序列包括在所述编解码器和所述近存储器之间提供缓冲器,所述缓冲器用来为所述编解码器存储压缩的数据,使得所述缓冲器中的所述压缩的数据与来自编解码器的压缩的数据相比具有更小的占用。所述媒体可以包括确定是否可以将多个高速缓冲存储器线路作为连续块来存储,并且如果是这样的话,将所述块连续存储在近存储器中。所述媒体可以包括所述序列,所述序列包括将所述块作为高速缓冲存储器线路大小的整数倍存储在近存储器中。所述媒体可以包括所述序列,所述序列包括提供如存储的所述块被压实的指示。所述媒体可以包括所述序列,所述序列包括通过下列操作来从所述近存储器读取数据:由所述指示来确定所述块是否被压实并且如果是这样的话,解压实所述块并且将所述解压实的组块作为高速缓冲存储器线路大小的整数倍存储在所述缓冲器中。
在另一个示例实施例中可以是一种装置,所述装置包括处理器、耦合至处理器的近存储器和远存储器,其中所述近存储器比所述远存储器更快并且所述近存储器被所述远存储器支持,所述装置包括编解码器,所述编解码器用来压缩将要被存储在所述近存储器中的数据,并且所述处理器用来压实所述压缩的数据并且存储所述压实的数据,使得所述压缩且压实的数据的占用比压实之前的压缩的数据的占用更少。所述装置可以包括所述编解码器以在将压缩的数据存储在近存储器中之前压实。所述装置可以包括所述编解码器以将多个高速缓冲存储器线路的块一起压实为可寻址组。所述装置可以包括所述编解码器和所述近存储器之间的缓冲器,所述缓冲器为所述编解码器存储压缩的数据,使得所述缓冲器中的所述压缩的数据与来自编解码器的压缩的数据相比具有更小的占用。所述装置可以包括所述处理器以确定是否可以将多个高速缓冲存储器线路作为连续块来存储,并且如果是这样的话,将所述块连续存储在近存储器中。所述装置可以包括所述处理器以将所述块作为高速缓冲存储器线路大小的整数倍存储在近存储器中。
可以在各种硬件体系结构中实现本文描述的图形处理技术。例如,可以将图形功能性集成到芯片集内。备选地,可以使用分立的图形处理器。作为又一个实施例,可以通过包括多核处理器的通用处理器来实现图形功能。
整个本说明书提及“一个实施例”或者“实施例”意味着与实施例有关地描述的特定特征、结构或特性被包括在本公开内包含的至少一个实现中。因此,短语“一个实施例”或者“在实施例中”的出现不必指相同的实施例。此外,可以以除所说明的特定实施例之外的其它合适的形式来设立特定的特征、结构或特性并且所有这样的形式可以被包含在本申请的权利要求内。
虽然已经描述了有限数量的实施例,但是本领域技术人员将会从中意识到许多的修改和变化。意图是所附的权利要求覆盖了属于本公开的真实精神和范围的所有这样的修改和变化。

Claims (36)

1.一种用于存储器分级体系的压实的方法,包括:
提供耦合至处理器的近存储器和远存储器,其中所述近存储器比所述远存储器更快并且所述近存储器被所述远存储器支持;
使用编解码器来压缩将要被存储在所述近存储器中的数据;
使用所述编解码器和所述近存储器之间的缓冲器来为所述编解码器存储压缩的数据,使得所述缓冲器中的所述压缩的数据与来自所述编解码器的压缩的数据相比具有更小的占用;
压实所述压缩的数据;以及
存储所述压实的数据使得所述压缩且压实的数据的占用比压实之前的压缩的数据的占用更少。
2.如权利要求1所述的方法,包括在将压缩的数据存储在所述近存储器中之前压实。
3.如权利要求1所述的方法,包括将多个高速缓冲存储器线路的块一起压实为可寻址组。
4.如权利要求1所述的方法,包括确定是否能够将多个高速缓冲存储器线路作为连续块来存储,并且如果是这样的话,将所述块连续存储在近存储器中。
5.如权利要求4所述的方法,包括将所述块作为高速缓冲存储器线路大小的整数倍存储在所述近存储器中。
6.如权利要求5所述的方法,包括提供如存储的所述块被压实的指示。
7.如权利要求6所述的方法,包括通过下列操作来从所述近存储器读取数据:由所述指示来确定所述块是否被压实并且如果是这样的话,解压实所述块并且将所述解压实的组块作为高速缓冲存储器线路大小的整数倍存储在所述缓冲器中。
8.如权利要求1所述的方法,包括在所述近存储器中压实所述数据。
9.如权利要求8所述的方法,包括响应于需要空闲的存储器的指示而压实。
10.如权利要求9所述的方法,包括压实选择的范围的存储页面。
11.如权利要求9所述的方法,包括将压实的范围的页面地址存储在地址翻译表中。
12.如权利要求10所述的方法,包括存储所述范围的页面已经被压实的指示。
13.如权利要求8所述的方法,包括使用能够在任意时间点运行的独立软件来压实。
14.如权利要求1所述的方法,包括将压实的和未压实的压缩的数据两者存储在近存储器中。
15.如权利要求1所述的方法,包括在写到所述近存储器时压缩接着解压实以及通过解压实接着解压缩来读取数据。
16.一种用于存储器分级体系的压实的装置,包括:
处理器;
耦合至所述处理器的近存储器和远存储器,其中所述近存储器比所述远存储器更快并且所述近存储器被所述远存储器支持;
编解码器,所述编解码器用来压缩将要被存储在所述近存储器中的数据;
所述编解码器和所述近存储器之间的缓冲器,所述缓冲器用来为所述编解码器存储压缩的数据,使得所述缓冲器中的所述压缩的数据与来自所述编解码器的压缩的数据相比具有更小的占用;以及
所述处理器用来压实所述压缩的数据并且存储所述压实的数据,使得所述压缩且压实的数据的占用比压实之前的压缩的数据的占用更少。
17.如权利要求16所述的装置,所述编解码器用来在将压缩的数据存储在所述近存储器中之前压实。
18.如权利要求16所述的装置,所述编解码器用来将多个高速缓冲存储器线路的块一起压实为可寻址组。
19.如权利要求16所述的装置,所述处理器用来确定是否能够将多个高速缓冲存储器线路作为连续块来存储,并且如果是这样的话,将所述块连续存储在近存储器中。
20.如权利要求19所述的装置,所述处理器用来将所述块作为所述近存储器的高速缓冲存储器线路大小的整数倍来存储。
21.一种或多种非暂时性计算机可读媒体,其上存储有指令,所述指令在被处理器执行时执行如权利要求1至15中的任何一项所述的方法。
22.一种用于存储器分级体系的压实的设备,包括:
用于提供耦合至处理器的近存储器和远存储器的部件,其中所述近存储器比所述远存储器更快并且所述近存储器被所述远存储器支持;
用于使用编解码器来压缩将要被存储在所述近存储器中的数据的部件;
用于使用所述编解码器和所述近存储器之间的缓冲器来为所述编解码器存储压缩的数据,使得所述缓冲器中的所述压缩的数据与来自所述编解码器的压缩的数据相比具有更小的占用的部件;
用于压实所述压缩的数据的部件;以及
用于存储所述压实的数据使得所述压缩且压实的数据的占用比压实之前的压缩的数据的占用更少的部件。
23.如权利要求22所述的设备,包括用于在将压缩的数据存储在所述近存储器中之前压实的部件。
24.如权利要求22所述的设备,包括用于将多个高速缓冲存储器线路的块一起压实为可寻址组的部件。
25.如权利要求22所述的设备,包括用于确定是否能够将多个高速缓冲存储器线路作为连续块来存储并且如果是这样的话,将所述块连续存储在近存储器中的部件。
26.如权利要求25所述的设备,包括用于将所述块作为高速缓冲存储器线路大小的整数倍存储在所述近存储器中的部件。
27.如权利要求26所述的设备,包括用于提供如存储的所述块被压实的指示的部件。
28.如权利要求27所述的设备,包括用于通过由所述指示来确定所述块是否被压实并且如果是这样的话,解压实所述块并且将所述解压实的组块作为高速缓冲存储器线路大小的整数倍存储在所述缓冲器中来从所述近存储器读取数据的部件。
29.如权利要求22所述的设备,包括用于在所述近存储器中压实所述数据的部件。
30.如权利要求29所述的设备,包括用于响应于需要空闲的存储器的指示而压实的部件。
31.如权利要求30所述的设备,包括用于压实选择的范围的存储页面的部件。
32.如权利要求30所述的设备,包括用于将压实的范围的页面地址存储在地址翻译表中的部件。
33.如权利要求31所述的设备,包括用于存储所述范围的页面已经被压实的指示的部件。
34.如权利要求29所述的设备,包括用于使用能够在任意时间点运行的独立软件来压实的部件。
35.如权利要求22所述的设备,包括用于将压实的和未压实的压缩的数据两者存储在近存储器中的部件。
36.如权利要求22所述的设备,包括用于在写到所述近存储器时压缩接着解压实以及通过解压实接着解压缩来读取数据的部件。
CN201680011969.6A 2015-03-24 2016-02-24 用于存储器分级体系的压实的方法和装置 Active CN107250996B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111598534.5A CN114461543A (zh) 2015-03-24 2016-02-24 用于存储器分级体系的压实的方法和装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/666,756 US9892053B2 (en) 2015-03-24 2015-03-24 Compaction for memory hierarchies
US14/666756 2015-03-24
PCT/US2016/019274 WO2016153691A1 (en) 2015-03-24 2016-02-24 Compaction for memory hierarchies

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111598534.5A Division CN114461543A (zh) 2015-03-24 2016-02-24 用于存储器分级体系的压实的方法和装置

Publications (2)

Publication Number Publication Date
CN107250996A CN107250996A (zh) 2017-10-13
CN107250996B true CN107250996B (zh) 2022-01-11

Family

ID=56975460

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111598534.5A Pending CN114461543A (zh) 2015-03-24 2016-02-24 用于存储器分级体系的压实的方法和装置
CN201680011969.6A Active CN107250996B (zh) 2015-03-24 2016-02-24 用于存储器分级体系的压实的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111598534.5A Pending CN114461543A (zh) 2015-03-24 2016-02-24 用于存储器分级体系的压实的方法和装置

Country Status (4)

Country Link
US (1) US9892053B2 (zh)
EP (1) EP3274841B1 (zh)
CN (2) CN114461543A (zh)
WO (1) WO2016153691A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US9767237B2 (en) 2015-11-13 2017-09-19 Mentor Graphics Corporation Target capture and replay in emulation
US9990452B2 (en) 2015-11-13 2018-06-05 Mentor Graphics Corporation Low power corruption of memory in emulation
US9898563B2 (en) * 2015-11-13 2018-02-20 Mentor Graphics Corporation Modeling memory in emulation based on cache
US9817757B2 (en) 2015-11-17 2017-11-14 International Business Machines Corporation Scalable metadata management in a multi-grained caching framework
US9916249B2 (en) 2015-11-17 2018-03-13 International Business Machines Corporation Space allocation in a multi-grained writeback cache
US10095595B2 (en) 2015-11-17 2018-10-09 International Business Machines Corporation Instant recovery in a multi-grained caching framework
US9971692B2 (en) 2015-11-17 2018-05-15 International Business Machines Corporation Supporting concurrent operations at fine granularity in a caching framework
US9965390B2 (en) 2015-11-17 2018-05-08 International Business Machines Corporation Reducing defragmentation in a multi-grained writeback cache
US10528284B2 (en) 2016-03-29 2020-01-07 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US9983821B2 (en) 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US10496543B2 (en) 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US10678704B2 (en) 2016-03-29 2020-06-09 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US9966152B2 (en) 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
KR102525229B1 (ko) * 2016-05-13 2023-04-25 에스케이하이닉스 주식회사 메모리 모듈 및 이를 포함하는 시스템
US10715818B2 (en) 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
US10602174B2 (en) * 2016-08-04 2020-03-24 Intel Corporation Lossless pixel compression for random video memory access
US10901894B2 (en) * 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
US10452613B2 (en) * 2017-07-19 2019-10-22 Sap Se Persistent directory for variable-size entry container free-space handling
US10291925B2 (en) 2017-07-28 2019-05-14 Intel Corporation Techniques for hardware video encoding
CN109426473B (zh) * 2017-08-25 2023-07-28 微软技术许可有限责任公司 无线可编程媒体处理系统
CN110096693B (zh) * 2018-01-29 2024-05-28 北京搜狗科技发展有限公司 一种数据处理方法、装置和用于数据处理的装置
WO2019178264A1 (en) * 2018-03-14 2019-09-19 Fungible, Inc. Flexible processing of network packets
US11055902B2 (en) * 2018-04-23 2021-07-06 Intel Corporation Smart point cloud reconstruction of objects in visual scenes in computing environments
US11218574B2 (en) 2018-06-08 2022-01-04 Fungible, Inc. Directed graph traversal using content-addressable memory
US11025913B2 (en) 2019-03-01 2021-06-01 Intel Corporation Encoding video using palette prediction and intra-block copy
US11016763B2 (en) * 2019-03-08 2021-05-25 Advanced Micro Devices, Inc. Implementing a micro-operation cache with compaction
US11258726B2 (en) 2019-03-27 2022-02-22 Fungible, Inc. Low latency packet switch architecture
US10855983B2 (en) 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search
US11372984B2 (en) * 2019-08-14 2022-06-28 International Business Machines Corporation Key-compressible encryption
US11579802B2 (en) 2019-10-04 2023-02-14 Fungible, Inc. Pipeline using match-action blocks
US11175338B2 (en) 2019-12-31 2021-11-16 Alibaba Group Holding Limited System and method for compacting test data in many-core processors
EP4111306A4 (en) * 2020-05-26 2023-05-03 Huawei Technologies Co., Ltd. DEVICE AND METHOD FOR DATA PACKING IN A MEMORY
GB2601183B (en) * 2020-11-23 2022-11-16 Advanced Risc Mach Ltd Data processing systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001080016A2 (en) * 2000-04-14 2001-10-25 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache
CN102473093A (zh) * 2009-06-30 2012-05-23 英特尔公司 对多个通道中的紧缩数据解压缩
CN104090987A (zh) * 2014-07-28 2014-10-08 华中科技大学 一种历史数据存储及索引方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903454A (en) * 1991-12-23 1999-05-11 Hoffberg; Linda Irene Human-factored interface corporating adaptive pattern recognition based controller apparatus
JP2000347936A (ja) * 1999-06-04 2000-12-15 Mitsubishi Electric Corp プログラム実行システム
US6484228B2 (en) * 2000-04-19 2002-11-19 Motorola, Inc. Method and apparatus for data compression and decompression for a data processor system
US7085020B2 (en) * 2001-11-14 2006-08-01 International Business Machines Corporation Raster data compression apparatus and method
US20090327621A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US20120290793A1 (en) * 2011-05-10 2012-11-15 Jaewoong Chung Efficient tag storage for large data caches
US8949513B2 (en) * 2011-05-10 2015-02-03 Marvell World Trade Ltd. Data compression and compacting for memory devices
US20130077673A1 (en) 2011-09-23 2013-03-28 Cisco Technology, Inc. Multi-processor compression system
US9053003B2 (en) 2012-06-21 2015-06-09 Microsoft Technology Licensing, Llc Memory compaction mechanism for main memory databases
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001080016A2 (en) * 2000-04-14 2001-10-25 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache
CN102473093A (zh) * 2009-06-30 2012-05-23 英特尔公司 对多个通道中的紧缩数据解压缩
CN104090987A (zh) * 2014-07-28 2014-10-08 华中科技大学 一种历史数据存储及索引方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
On real-time arrhythmia detection in ECG monitors using antidictionary coding;Takahiro Ota等;《2012 International Symposium on Information Theory and its Applications》;IEEE;20130107;全文 *
多通道数据采集系统数据压缩算法的研究与实现;陶宇翔;《中国优秀硕士学位论文全文数据库(电子期刊)》;中国学术期刊(光盘版)电子杂志社;20111215(第12期);全文 *

Also Published As

Publication number Publication date
EP3274841A4 (en) 2018-11-21
EP3274841A1 (en) 2018-01-31
CN107250996A (zh) 2017-10-13
US9892053B2 (en) 2018-02-13
CN114461543A (zh) 2022-05-10
US20160283391A1 (en) 2016-09-29
WO2016153691A1 (en) 2016-09-29
EP3274841B1 (en) 2022-11-16

Similar Documents

Publication Publication Date Title
CN107250996B (zh) 用于存储器分级体系的压实的方法和装置
US11748843B2 (en) Apparatus and method for non-uniform frame buffer rasterization
CN108701347B (zh) 用于多格式无损压缩的方法和装置
US10262456B2 (en) Method and apparatus for extracting and using path shading coherence in a ray tracing architecture
EP3608880B1 (en) Merging fragments for coarse pixel shading using a weighted average of the attributes of triangles
US20180082464A1 (en) Apparatus and method for an efficient 3d graphics pipeline
US10354434B1 (en) Level of detail selection during ray tracing
US10282808B2 (en) Hierarchical lossless compression and null data support
US20190087680A1 (en) Edge-Based Coverage Mask Compression
US9705526B1 (en) Entropy encoding and decoding of media applications
US20180005345A1 (en) Reducing memory latency in graphics operations
US20160283825A1 (en) Clustered Palette Compression
US20170083450A1 (en) Supporting Data Conversion and Meta-Data in a Paging System
WO2017074377A1 (en) Boosting local memory performance in processor graphics
US10430229B2 (en) Multiple-patch SIMD dispatch mode for domain shaders
US10332278B2 (en) Multi-format range detect YCoCg compression

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant