CN115145836A - 访问编码数据块 - Google Patents

访问编码数据块 Download PDF

Info

Publication number
CN115145836A
CN115145836A CN202210320667.4A CN202210320667A CN115145836A CN 115145836 A CN115145836 A CN 115145836A CN 202210320667 A CN202210320667 A CN 202210320667A CN 115145836 A CN115145836 A CN 115145836A
Authority
CN
China
Prior art keywords
memory
modifier
data
encoded data
header
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
Application number
CN202210320667.4A
Other languages
English (en)
Inventor
E·菲尔丁
王建
J·A·弗里斯
C·吉利伯托
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.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN115145836A publication Critical patent/CN115145836A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种将编码数据块存储在存储器中的方法,该方法包括对数据元素块进行编码并且确定该编码数据块要存储在其中的存储器位置(26)。然后在确定该存储器位置(26)时,通过在标头(406)中包括存储器地址值(407)以及修改量值(500)来在针对该编码数据块的该标头中指示存储该编码数据块的存储器位置(26),该修改量值表示要应用于该存储器地址值(407)的修改量。当要检索该编码数据块时,读取并处理该标头(406)以确定该存储器位置(26)。

Description

访问编码数据块
背景技术
本文所述技术涉及将编码数据块存储在存储器中的方法以及用于将编码数据块存储在存储器中的设备。其还涉及用于从存储器检索编码数据块的数据的对应方法和用于从存储器检索编码数据块的数据的设备。
数据处理系统中常见的是编码数据元素阵列,诸如图像数据值阵列(例如,视频数据的帧或用于显示的图形数据),以便压缩数据以便减少带宽和存储器消耗。这在例如便携式装置(其中处理资源和功率可能受到限制)的数据处理设备中是特别需要的。
为了编码数据元素阵列,该数据元素阵列通常被划分为数据元素的较小块(子区域)并且在逐块基础上进行编码。然后可将数据块的编码版本存储在存储器中。有效的无损编码技术的一个示例描述于美国专利第8542939号(Arm Limited)中。然而,存在适合用于编码数据块的编码方案的各种其他示例。
当将编码数据块存储在存储器中时,可针对编码数据块提供标头,其中这些标头指示编码数据块在存储器中的位置。当需要对特定编码块进行解码时,可然后读取相关联的标头以便确定其编码块的存储器位置,然后可相应地检索该编码块以用于进行解码。
申请人相信,对于用于编码数据元素阵列的技术仍然存在改进的范围。
附图说明
现在将仅以举例的方式并参考附图来描述本文所述的技术的各种实施方案,其中:
图1示意性地示出了可根据本文所述技术的实施方案进行编码的数据阵列;
图2示意性地示出了根据本文所述技术的实施方案的图形处理器;
图3示出了可用于本文所述技术的实施方案中的图形处理流水线;
图4A示出了根据本文所述技术的实施方案进行编码的数据元素阵列;
图4B示意性地示出了在一个实施方案中的数据阵列的存储;
图4C示出了包括标头和对应编码数据块的数据结构;
图5A更详细地示出了标头数据结构,并且图5B示出了根据本文所述技术的实施方案的标头数据结构;
图6为示出了根据本文所述技术的实施方案的标头生成技术的流程图;并且
图7为示出了根据本文所述技术的实施方案的解码技术的流程图。
具体实施方式
本文所述技术的第一实施方案包括将编码数据块存储在存储器中的方法,该方法包括:
对数据元素阵列的数据元素块进行编码以生成表示该数据元素块的编码数据块;
确定该编码数据块要被存储在其中的存储器位置;
生成针对该编码数据块的标头,该标头指示该编码数据块被存储在其中的该存储器位置,其中在确定该存储器位置时,通过在该标头中包括存储器地址值以及修改量值来指示该存储器位置,该修改量值表示要应用于该存储器地址值的修改量;以及
将该标头和该编码数据块写入到该存储器,其中该编码数据块存储在该存储器中处于针对该编码数据块的该标头中所指示的位置处。
本文所述技术的第二实施方案包括用于将编码数据块存储在存储器中的设备,该设备包括:
编码电路,该编码电路被配置为:对数据元素阵列的数据元素块进行编码以生成表示该数据元素块的编码数据块;
标头生成电路,该标头生成电路被配置为:确定该编码数据块要被存储在其中的存储器位置;并且生成针对该编码数据块的标头,其中该标头指示存储该编码数据块的该存储器位置,其中在确定该存储器位置时,由该标头生成电路指示的该存储器位置在该标头中包括存储器地址值以及修改量值,该修改量值表示要应用于该存储器地址值的修改量;和
写入控制电路,该写入控制电路被配置为:将该标头和该编码数据块写入到存储器,其中该编码数据块存储在存储器中处于针对该编码数据块的该标头中所指示的位置处。
本文所述技术涉及用于对数据元素阵列的数据块进行编码的技术(其中数据元素阵列可例如包括帧或帧的一部分)。
当将编码数据块存储在存储器中时,针对该编码数据块提供标头,其中该标头指示存储器中存储该编码数据块的位置。
对应地,当期望随后从存储器检索编码数据块时,可因此读取相关联的标头以首先确定该编码数据块被存储在其中的该存储器位置,然后从所指示的存储器位置相应地读取该数据。
因此,针对编码数据块的标头指示存储器中存储该编码数据块的位置。受制于本文所述技术的特定要求,该指示通常可采取任何期望和合适的形式,例如,出于指示存储器位置的目的,该指示可通常被包括在标头中。
具体地,在本文所述技术中,该指示包括存储器地址值,该存储器地址值可用于确定要存储编码数据块的存储器位置,例如,如下文将进一步解释的。
存储器地址值本身可采取任何合适和期望的形式。例如,存储器地址值本身可用于指示存储器地址。然而,在实施方案中,存储器地址值用于根据存储器偏移(例如,从缓冲区(诸如存储多个编码数据块的编码数据的缓冲区)开始)指示存储器位置。在这种情况下,可使用(例如,指向缓冲区开始的)指针以及偏移量来确定存储器位置。
针对编码数据块的标头通常具有固定大小,并且因此存在可用于存储存储器地址值的固定数量的位(并且在一个实施方案中,这也是本文所述技术中的情况)。这意味着,在更常规的标头布置中,可在标头中指示的存储器地址的范围受到可用于存储存储器地址值的位的数量的严格限制。
可用于指示存储器位置的位的数量通常可取决于例如数据格式等,但在典型示例中,存储器地址值可以是32位值。在一些情况下,这是可接受的,并且将提供足够大范围的存储器地址。
然而,由于存在可使用存储器地址值本身来指示的有限范围的存储器地址,因此这意味着在不例如增加标头的大小(这可能是不期望的)的情况下编码技术无法支持对较大和/或较高分辨率数据结构(例如,较大帧尺寸,诸如64k×64k帧,这可能越来越多地用于现代图形处理应用)的编码。
因此,在更常规的标头布置中,标头中的存储器地址值字段的(固定)大小引入对编码数据块可被存储在其中的存储器位置的范围的限制,并且因此限制可进行编码的数据结构的大小(因此可能存在可由编码技术支持的最大帧大小,使得该编码技术不与大于该帧大小限制的数据结构兼容)。
为了解决这一点,根据本文所述技术,将修改量值与存储器地址值一起包括在标头中,其中该修改量值表示在确定存储器位置时要应用于存储器地址值的“修改量(modifier)”(例如,偏移量)。如下文将进一步解释的,修改量可因此适当地应用于存储器地址值以进行修改,例如并且在一个实施方案中增加由存储器地址值本身表示的值,从而扩展可由标头指示的存储器地址范围。
以这种方式,可访问较大的存储器地址范围,例如并且在一个实施方案中,不必增加标头的大小或以其他方式显著修改标头结构。这继而允许编码技术支持对较大数据结构的编码。因此,本文所述技术提供了用于使编码技术扩展到较大数据结构的相对简单且便宜的方法。
本文所述技术的修改量可包括可应用于存储器地址值以扩展可用的存储器地址范围的任何合适和期望的修改量。在一个实施方案中,这些修改量包括比例因子(例如,乘数)。因此,并且在一个实施方案中,修改量值表示在确定存储器位置时要应用于存储器地址值的比例因子(乘数)。
也就是说,不是由存储器地址值本身在标头中简单地指示存储器地址(无论是根据绝对存储器地址还是存储器地址偏移量),如可能是在更常规的标头布置中的情况,而是根据存储器地址值以及对应修改量例如比例因子(乘数)在标头中表示存储器地址,该比例因子可应用于存储器地址值以确定存储器地址。
因此,将修改量值包括在标头中指示了在确定存储器位置时哪个修改量要应用于存储器地址值。
当期望检索编码数据块时,可因此读取标头,然后通过适当地应用由包括在针对相关联的存储器地址值的标头中的修改量值指示的相应修改量来计算存储器位置。
例如,在一些实施方案中,存储器地址值包括例如从缓冲区开始的存储器偏移量,例如,该缓冲区可以是存储针对数据元素阵列的多个编码数据块的标头的标头缓冲区。
在这种情况下,用于存储编码数据块的完整存储器位置可通常(例如,在不使用本文所述技术的修改量时)被确定为:
存储器位置=标头_指针+偏移量
其中‘标头_指针’是指向例如根据其定义偏移量的缓冲区开始的合适的指针。
相反,在本文所述技术中,修改量在一个实施方案中应用于偏移量。例如,在一个实施方案中将偏移量乘以修改量,例如使得用于存储编码数据块的完整存储器位置被替代地确定为:
存储器位置=标头_指针+偏移量*修改量。
例如,在修改量包括比例因子(例如,1x、16x、64x、256x乘数)的情况下,通过首先将偏移量(存储器地址值)乘以相关比例因子来确定比例偏移量来确定存储器位置,然后使用比例偏移量和标头指针来确定存储器位置。
类似地,在根据存储器地址值本身(而不是根据偏移量)定义存储器位置的情况下,可通过将存储器地址值乘以相关比例因子来确定比例存储器位置来确定存储器地址。
因此,在实施方案中,修改量值表示要应用于存储器地址值以确定可用于确定存储器位置的比例存储器地址值的比例因子(例如,乘数)。
应用此类修改量(例如,比例因子)通常可降低以该分辨率指示的存储器地址的分辨率(例如,因为当应用256x乘数时,存储器地址仅可在256级中指示)。然而,应当理解,与可(例如,使用30位存储器地址值)指示的整体存储器地址范围相比,这些级仍然相对较小,并且因此这仍然可提供用于存储编码数据块的足够的分辨率,具体地讲,当将编码数据块以“稀疏”方式存储在存储器中时,例如其中数据块(例如,并且在一个实施方案中以规则间隔开的间隔)存储在编码数据的缓冲区中的预定义位置处,如下文将进一步解释的。
其他布置也是可能的,并且修改量不必包括以上述方式应用于存储器地址值的比例因子(例如,乘数),但也可根据需要包括可以任何合适的方式应用于存储器地址值的任何其他合适的修改量,例如以便扩展可用的存储器地址范围。例如,不是将存储器地址值乘以合适的比例因子或乘数,而是修改量可包括应用于存储器地址值以扩展可用的存储器地址范围的添加量或移位量。
以这种方式,通过将合适的修改量应用于标头内的存储器地址值,可由标头指示的地址范围可扩展超过可能使用存储器地址值本身而指示的范围。
此外,由本文所述技术提供的对存储器地址范围的扩展在一个实施方案中实现了相对于现有标头结构的最小的额外开销或修改。举例来说,在实施方案中,存在一组多个可用修改量,并且在标头生成期间确定应将这些可用修改量中的哪一个可用修改量应用于存储器地址值。这意味着不需要在标头中存储实际修改量本身,并且相反,并且在一个实施方案中,修改量值表示并编码这些可用修改量中的哪一个可用修改量要被应用。
因此,包括在标头内的修改量值表示来自一组多个可用修改量中的相应修改量(例如,比例因子)。因此,在实施方案中,方法包括(标头生成电路)从多个可用修改量确定该多个可用修改量中的哪一个可用修改量应与存储器地址值一起使用以用于指示编码数据块要存储在其中的存储器位置,以及在标头中包括表示所确定的修改量的修改量值以及存储器地址值。
要应用的修改量(例如,比例因子)可因此使用相对少量的位来进行编码,例如,并且在一个实施方案中是两位。因此,在一个实施方案中,修改量值包括2位修改量值,其能够表示一组四个可用修改量中的一个可用修改量。例如,在实施方案中,修改量值编码一组四个不同比例因子(诸如1x、16x、64x和256x比例因子)中的一个比例因子,其可应用于适当地按比例调节存储器地址值以扩展可访问的存储器范围。
对不同修改量(比例因子)的编码可例如存储在合适的查找表中,使得可相应地从修改量值确定所需的修改量(例如,其中修改量值“00”表示1x比例因子,修改量值“01”表示16x比例因子等)。
可用修改量可包括任何合适和期望的修改量。在一个实施方案中,它们是比例因子(例如,乘数),如上所述,但也可使用其他修改量。
在一个实施方案中,这些可用修改量中的一个可用修改量是“零”修改量,当其应用于存储器地址值时,并不改变存储器地址值。例如,当修改量包括比例因子或乘数时,这些修改量中的一个修改量在一个实施方案中包括1x乘数。
如下文将进一步解释的,这可促进在存储数据元素阵列的多个编码数据块时存储器地址范围的动态扩展,例如使得存储器地址范围可根据需要扩展以及在需要时扩展。这还使得本文所述技术的方法易于与较小的数据阵列(帧)兼容,例如,在不需要扩展存储器地址范围的情况下。
具体地,在一个实施方案中,当需要扩展存储器地址范围时,例如当确定用于存储特定(下一个)数据块的存储器位置将超过原本可访问的存储器地址范围(例如,基于当前修改量值)时,在编码数据块存储在存储器中的情况下,在编码过程中动态地使用修改量(例如,比例因子)。
例如,虽然上文所述的实施方案与存储单个编码数据块有关,但应当理解,例如,对于给定数据元素阵列(例如,给定帧),可存在要存储在存储器中的多个编码数据块。该多个编码数据块可在那样的情况下被写入到顺序存储器位置,例如使得在通过数据元素阵列(例如,帧)工作时存储器地址单调增加。在实施方案中,当新的编码数据块被写入到存储器时,动态地更新修改量值。
具体地,修改量在一个实施方案中最初被设置为“零”修改量(例如,1x比例因子),并且编码数据块被写入到存储器,其中单独由存储器地址值有效地在标头中指示存储器位置(因为零修改量不改变存储器地址值)。针对每个要写入到存储装置的新的编码数据块,计算完整存储器位置,并且当基于当前修改量确定该存储器位置将超过可用的存储器地址范围时,然后可相应地增加修改量以扩展可用的存储器地址范围。
然后可将编码数据块写入到扩展的存储器地址范围内的存储器位置,直到超过扩展的存储器地址范围时可再次增加修改量以进一步扩展存储器地址范围等等。
因此,在实施方案中,当将多个编码数据块存储在存储器中时,将按顺序写入该多个编码数据块以增加存储器位置,修改量在一个实施方案中最初被设置为“零”修改量(使得存储器地址值不被修改,例如,1x比例因子),并且因此最初使用存储器地址值本身来指示用于顺序开始处的编码数据块的存储器位置,而无需修改(例如,如将通常为例如不使用本文所述技术的情况)。由于处理了更多编码数据块以存储在存储器中,因此这将需要较大的存储器地址。因此,当确定编码数据块的存储器位置将超过可使用存储器地址值与当前所应用的(例如零)修改量在标头中指示的存储器地址范围时,增加修改量以扩展可用的地址范围。
因此,针对要存储在存储器中的每个编码数据块,可首先计算存储器位置。当可使用存储器地址值与当前修改量来指示存储器位置时(存储器位置落入可使用当前修改量访问的存储器地址的范围内),然后基于当前修改量相应地设置存储器地址值。另一方面,当不能使用存储器地址值与当前修改量来指示存储器位置时(存储器位置落在可使用当前修改量访问的存储器地址的范围之外),然后可增加修改量,然后基于增加的修改量相应地设置存储器地址值。
因此,修改量在一个实施方案中随着所需的存储器地址范围增加而逐渐增加,只要需要对更多的阵列的块进行编码/存储。
例如,在存储器地址值包括偏移量并且修改量包括比例因子的实施方案中,当将多个编码数据块存储在存储器中时,其中编码数据块存储在增加的存储器位置中,编码在一个实施方案中开始于1x比例因子,并且最初在由(未修改的)存储器地址值本身提供的可用的存储器地址范围内的存储器位置处存储编码数据块。
一旦存储器位置的计算地址超过该范围,就可应用下一个(例如,16x)比例因子来扩展可用的存储器地址范围等等。
修改量值可与存储器地址值分开包括在标头中,例如该修改量值可在标头数据结构的单独专用字段中。也就是说,可存在始终用于存储修改量值的一组专用的(例如两个)位。
然而,在实施方案中,来自地址值字段本身的一定数量的位被重新用于存储修改量值。也就是说,使用原本(不执行本文所述技术的情况)将用于指示存储器地址值本身的一定数量的位来对本文所述技术的修改量进行编码。
在这方面,本文所述技术认识到,在一些情况下,在地址值字段中存在预期始终为零的一些位,并且因此可将其相应地重新用于编码本文所述技术的修改量。
这具体地讲可能是以“稀疏”方式执行编码的情况,使得编码数据块存储在编码数据的缓冲区中(例如,以预定义顺序(例如,其在一个实施方案中对应于标头存储在标头缓冲区中的顺序))处于预定义位置处。在这种情况下,可为每个编码数据块在缓冲区中分配固定的空间量。例如,可为每个编码数据块分配存储未压缩数据块将需要的相同的空间量。因此,可为每个编码数据块在缓冲区分配相同的空间量,其中在一个实施方案中存在定义用于相应编码数据块的存储器位置的一定数量的等间隔边界。然后,这意味着编码数据块所处的存储器位置仅需要根据其相应边界来指示,并且边界将在缓冲区中具有固定间距。
因此,在实施方案中,为编码数据块各自在存储器中分配固定的空间量,并且将其存储在存储器中处于预定义位置,这些预定义位置与所分配的空间量的相应边界对准(即,使用“稀疏”布局)。
当使用此类“稀疏”布局存储编码数据块时,其中存储编码数据块的存储器位置在缓冲区中是等间隔的,因此这意味着存储器地址值的一定数量的最低有效位将始终为零,例如,当仅需要指示缓冲区内相应边界的位置,而不是更精确的存储器位置时。通常,为零的最低有效位的数量将取决于数据块的大小,例如,因为需要为较大数据块在缓冲区中分配更多的空间,使得存储器位置边界之间的级较大。
这意味着当以“稀疏”方式执行编码时,存在实际上冗余的一定数量的位(因为它们将始终为零),并且这些位可因此被重新用于存储本文所述技术的修改量值。因此,并且在实施方案中,可例如通过去除一定数量的最低有效位来截断存储器地址值。因此,以这种方式截断存储器地址值允许对应数量的位用于存储修改量值。例如,在一个实施方案中,存储器地址值中的(例如,两个)最低有效位被截断。然后可使用这些最低有效位来存储修改量值。在一个实施方案中,由于对应数量的位已经被丢弃,因此存储器地址值朝向更小的有效位位移,并且修改量值存储在最大有效位中。就这一点而言,各种其他布置将是可能的。
在以这种方式截断存储器地址值的情况下,当检索编码数据块时,可在确定存储器位置时重新插入被截断的最低有效位(即,零)。因此,确定存储器位置可能涉及在应用修改量之前修改存储器地址值(通过重新插入任何丢失位)。然而,这通常是不必要的,因为可适当地使用被截断的存储器地址值和修改量来编码存储器地址。
以这种方式截断存储器地址值意味着可用于存储存储器地址值本身(例如,偏移量)的位将会更少,这减少了可使用存储器地址值来指示的存储器地址范围。然而,这可通过本文所述技术提供的增加了大得多的存储器地址范围来补偿。
因此,本文所述技术提供了一种相对简单且便宜的方法,该方法用于扩展编码技术中产生的标头的标头格式,这些编码技术使用标头来指示用于存储编码数据块存储器位置,以跨越较大的存储器地址范围,并且因此允许此类编码技术支持较大的数据结构(例如,帧)。
这通过将合适的修改量值与存储器地址值一起包括在标头中来完成,该合适的修改量值表示要应用于该存储器地址值以(例如,以上文所述方式)确定存储器位置的修改量。当需要从其存储器位置检索编码数据块时,可因此适当地读取标头并且使用存储器地址值和修改量来确定存储器位置。然后可从其存储器位置读取编码数据块,然后对其进行解码以便例如以正常方式使用。
因此,与其他方法相比,本文所述技术可提供各种改进。
由编码电路编码的数据元素(原始未编码)阵列可以是任何合适的数据阵列。其通常可包括多个数据元素(条目),各自在阵列中占据不同的位置。数据阵列可以是图像(可表示图像)。在各种实施方案中,数据阵列是例如用于显示或图形纹理的(图像)(例如,颜色)数据的帧。数据元素阵列还可包括其他图形数据阵列,诸如深度数据阵列或非图形数据阵列。
在一个实施方案中,数据元素阵列是例如用于应用程序(诸如游戏)的显示的由图形处理系统生成的帧。每个数据元素阵列(帧)相应地在一个实施方案中包括待显示的图像。数据元素阵列被划分为单独进行编码的一定数量的块。通常,数据元素阵列将被划分为用于进行编码的多个块。
在这些布置中整体数据阵列出于编码目的被划分为的块可采取任何合适和期望的形式。每个块应包括阵列中的数据元素(位置)的子集,即对应于阵列的特定区域。
这些块可具有任何合适和期望的大小。这些块在一个实施方案中对应于将以其他方式用于所讨论的数据处理系统中的块大小。因此,在基于片的图形处理系统的情况下,这些块在一个实施方案中对应于图形处理系统的渲染过程在其上进行操作的片(具有与这些片相同的大小和配置)。然而,编码块不必对应于这些片。例如,在实施方案中,用于编码技术的块大小小于渲染片大小。
数据阵列元素数据值可采取任何合适和期望的形式,并且将取决于被编码的数据阵列的性质(例如,其是纹理、图像、帧等)。在该性质是纹理的情况下,例如,数据阵列元素数据值应为纹理数据(文素值)。此类纹理数据可包括例如一组颜色值(红色、绿色、蓝色(RGB)、一组颜色和透明度值(红色、绿色、蓝色、α(RGBa))、一组亮度和色度值、一组阴影(光)映射值、一组正常映射(凹凸映射)值、z值(深度值)、模板值、亮度值(亮度纹理)、亮度α纹理和/或光泽纹理等。
在该性质是用于显示的图像或帧的情况下,数据阵列元素数据值应为像素和/或采样位置数据(数据值)。此类像素数据可包括例如适当的颜色(RGB)值或亮度和色度值等。
数据元素阵列可以任何合适的方式生成。数据元素阵列可由处理单元生成(并且数据处理系统可包括该处理单元),该处理单元可包括例如图形处理单元(GPU)、视频处理器/编解码器或视频引擎(视频处理单元(VPU))、数字相机图像信号处理器(ISP)、图像处理器和/或中央处理单元(CPU)等。如果需要,可存在多于一个处理单元。在一个实施方案中,处理单元是图形处理器或视频处理器。
处理单元应以适当的方式生成其阵列,例如在该处理单元是图形处理器的情况下通过渲染阵列、在该处理单元是视频处理器的情况下通过适当地解码输入编码视频数据、在该处理单元是数字相机图像信号处理器(ISP)的情况下从捕获的图像来生成其阵列等等。
一旦生成,数据元素阵列应(并且在一个实施方案中)被提供(发送)到编码电路以用于进行编码。
编码电路可包括任何合适的此类电路,该类电路可操作为编码数据元素阵列以便产生数据元素阵列的编码版本,并且可以任何合适的方式编码数据元素阵列。
编码电路在一个实施方案中可操作为编码由处理单元生成的数据元素阵列。因此,方法在一个实施方案中包括编码电路,该编码电路编码由处理单元生成的数据元素阵列。编码电路可仅编码由处理单元生成的整体数据阵列(例如,帧、图像或纹理)的一部分,但在一个实施方案中,编码由处理单元生成的整个阵列(例如,帧、图像或纹理)。
为了促进这一点,编码电路可(并且在各种实施方案中)形成处理单元的一部分,例如可以是图形处理单元(GPU)、视频处理器/编解码器或视频引擎(视频处理单元(VPU))、数字相机图像信号处理器(ISP)、图像处理器和/或中央处理单元(CPU)等的(集成)编码电路。因此,在这些实施方案中,处理单元既生成数据元素阵列,又对阵列进行编码(使用其编码电路)。
在各种其他实施方案中,编码电路可与处理单元分离,例如可以是单独的电路(例如,集成电路),例如可包括“独立”编码单元,例如该编码单元被配置为从处理电路接收(和编码)数据元素阵列。
一旦产生(编码),可将编码的数据元素阵列存储在存储器中(例如,存储在缓冲区诸如帧缓冲区中),然后可(例如,通过解码电路)从该存储器读取该编码的数据元素阵列。可存储编码的阵列的存储器可包括任何合适的存储器,并且可以任何合适和期望的方式配置。例如,它可以是与编码电路片装的存储器,或者它可以是外部存储器。在一个实施方案中,它位于外部存储器(诸如整体图像处理系统的主存储器)中。它可以是用于此目的的专用存储器,或者它也可以是用于其他数据的存储器的一部分。
数据块的实际编码可以任何合适和期望的方式执行。
在实施方案中,编码根据美国专利第8542939号(Arm Limited)中描述的技术执行。
例如,在实施方案中,编码电路可操作为编码数据元素阵列,以便通过以下方式产生数据元素阵列的编码版本:将数据元素阵列划分为多个单独的块,生成用于表示该数据元素阵列被划分为的每个不同块的相应树表示,以及生成表示每个树表示的数据,以便将该数据元素阵列表示为数据元素阵列的编码版本。
然而,可(并且在各种实施方案中)使用其他编码技术和表示。
如上所述,针对编码数据块(和每个编码数据块)提供标头。标头指示用于存储编码数据块的存储器位置。标头还可包括任何其他合适的数据,为编码数据块可期望地存储该数据,诸如压缩元数据,例如,其指示编码数据块的数据大小,或指示已经使用的压缩方案。
标头可具有任何期望和合适的数据大小。数据大小可以位或字节表示。例如,标头可包括32位或4字节,其指示存储器中用于编码数据块的位置。标头还可包括96位或12字节(例如,对于4×4子块中的每一个子块而言为6位),例如,其指示编码的数据块和/或数据子块的数据大小。因此,标头可以是总共128位或16字节的大小。
一旦已经适当地生成标头,就可(并且)然后将编码数据块写入标头中所指示的存储器位置以用于存储。因此,方法在一个实施方案中还包括将针对编码数据块的标头写入到存储器,并且将该编码数据块写入到存储器,其中该编码数据块存储在存储器中处于针对该编码数据块的标头中所指示的位置处。这在一个实施方案中由编码器设备的合适的写入控制电路执行。
标头可以任何期望和合适的方式存储。例如,并且在一个实施方案中,标头存储在标头缓冲区中。在一个实施方案中,标头例如以预先确定的顺序存储在标头缓冲区中的可预测位置处。就这一点而言,各种布置将是可能的。
类似地,编码数据块可以任何期望和合适的方式存储。在一个实施方案中,如上所述,使用“稀疏”布局来存储编码数据块。因此,可为每个编码数据块分配缓冲区的固定大小部分,其固定大小部分对应于以其原始、未编码的格式存储数据块所需的空间量。这意味着编码数据块将与缓冲区内的相应边界对准。这继而意味着在缓冲区中将存在间隙,因为编码数据块通常将不填充缓冲区的分配部分。然而,用于存储编码数据块的各种其他布置将是可能的。
当随后需要编码数据块例如以供使用时,可因此从其在存储器中的存储器位置检索该编码数据块。具体地,这通过在相关标头中的第一读数来完成,然后使用该标头确定编码数据块被存储在其中的存储器位置。
因此,尽管上文已经特别参考存储编码数据块描述了本文所述技术,但应当理解,本文所述技术还扩展到对应过程,在该过程中,从存储器检索编码数据块的数据,然后对其进行解码以导出编码数据块的数据元素的数据值。
因此,本文所述技术的另一个实施方案包括从存储器检索编码数据块的数据的方法,该方法包括:
当确定用于该编码数据块的存储器位置时,从存储器读取针对该编码数据块的标头,该编码数据块表示数据元素阵列的数据元素块,其中该标头包括存储器地址值以及表示要应用于该存储器地址值的修改量的修改量值;
通过将该修改量应用于该存储器地址值来确定用于该编码数据块的存储器位置;
从所确定的存储器位置读取来自存储器的该编码数据块的数据;以及
对该编码数据块进行解码以导出该编码数据块的数据元素的至少一个数据值。
本文所述技术的另一个实施方案包括用于从存储器检索编码数据块的数据的数据处理设备,该设备包括:
读取控制电路,该读取控制电路被配置为:
当确定用于该编码数据块的存储器位置时,从存储器读取针对该编码数据块的标头,该编码数据块表示数据元素阵列的数据元素块,其中该标头包括存储器地址值以及表示要应用于该存储器地址值的修改量的修改量值;
通过将该修改量应用于该存储器地址值来确定用于该编码数据块的存储器位置;并且
从所确定的存储器位置读取来自存储器的该编码数据块的数据;
解码电路,该解码电路被配置为:
对该编码数据块进行解码以导出该编码数据块的数据元素的至少一个数据值。
如将理解的,从存储器检索编码数据块的数据的这些实施方案可(并且在一些实施方案中)视情况而定包括本文所述技术的任选特征中的任何一个或多个或所有特征,如本文在任何实施方案中所述的。
因此,例如,实施方案既可包括(例如,设备或系统)以本文所述技术的方式存储编码数据块,如本文在任何实施方案中所述的,又可包括以本文所述技术的方式检索编码数据块的数据,如本文在任何实施方案中所述的。
类似地,(原始和/或编码和/或解码的)数据值、数据元素、数据元素块、数据元素阵列、标头、区域等可采取任何期望和合适的形式或格式,例如,如本文在任何实施方案中所述的。
在从存储器读取针对编码数据块的标头的实施方案中,从存储器读取针对编码数据块的标头可以任何期望和合适的方式执行。
从存储器读取编码数据块的数据还可以任何期望和合适的方式执行。
在将存储器位置的相应不同区域分配给相邻数据元素块的相应集合的实施方案中,可以任何期望和合适的方式访问存储器位置的不同区域。在实施方案中,可使用所讨论的存储器位置的不同区域的存储器地址或存储器偏移量来访问存储器位置的不同区域。如上文所讨论的,相关存储器地址或存储器偏移量可指示在针对编码数据块的标头中。
在任何上文实施方案中,用于导出编码数据块的数据元素的数据值的解码方案可采取任何期望和合适的形式,例如,对应于编码方案。可在一个实施方案中使用的解码操作更详细地描述于美国专利第8542939号(Arm Limited)中,其以引用方式并入本文。
因此,解码电路在一个实施方案中可操作为以美国专利第8542939号(ArmLimited)中描述的方式对数据阵列进行解码。因此,方法可包括通过使用表示了表示数据阵列的一些或所有数据元素的表示的数据来对数据元素阵列的编码版本的至少一部分进行解码,以确定要用于该数据阵列的一些或所有数据元素中的每个数据元素的值。
解码电路可包括任何合适的此类电路或电路系统,该电路可操作为对数据元素阵列的编码版本进行解码,并且可以任何合适的方式对数据元素阵列的编码版本进行解码。
解码电路在一个实施方案中可操作为对由编码电路编码的数据元素阵列进行解码。为此,解码电路在一个实施方案中接收数据元素阵列的编码版本的至少一部分,例如通过从存储编码阵列的存储器读取编码的阵列。
由解码电路产生的数据元素阵列的解码版本应(并且在一个实施方案中确实)包括由处理单元产生的数据元素阵列的至少一部分的解码版本,并且在一个实施方案中由处理单元产生的所有数据元素阵列的解码版本。
在各种其他实施方案中,编码电路可与使用(解码的)数据值的处理电路分离,例如,可以是单独的电路(例如,集成电路),例如可包括“独立”解码单元,该解码单元可被配置为解码并提供(发送)数据元素阵列到使用数据值的处理电路。
如将理解的,相对于标头和/或编码块和/或子块和/或数据元素块的片和/或数据元素块的集合执行的上述检索过程中的任何一项可在实践中分别针对数据元素阵列的多个标头和/或编码块和/或子块和/或块的片和/或块的集合中的每一者(例如,每一个)而执行。
类似地,如将理解的,相对于编码块和/或子块的数据值或数据元素执行的上述解码过程中的任何一项可在实践中分别针对编码块和/或子块的多个数据值或数据元素中的每一者(例如,每一个)而执行。
在任何上文实施方案中,一旦确定,可以任何期望和合适的方式使用编码块的数据元素的(解码的)数据值。
数据值可用于例如由处理电路(例如,图形处理器)进行进一步处理,该处理电路按块来处理数据元素阵列,例如而不是按行。
当导出另外的数据值时,可(例如,通过图形处理器(例如,的纹理映射器)使用数据值。在这些实施方案中,数据元素阵列可对应于图形纹理,并且数据值可对应于一个或多个文素。
数据值还可或替代地用于例如由处理电路(例如,输出(例如,显示器)处理器)进行进一步处理,该处理电路按行来处理数据元素阵列,例如而不是按块。
可(例如,通过输出(例如,显示器)处理器)输出数据值(或另外的数据值),例如以用于显示。在这些实施方案中,数据元素阵列可对应于图形数据的帧,并且数据值可对应于一个或多个像素。在这些实施方案中,数据值可形成数据元素的输出阵列的一部分。数据元素的输出阵列可以是相对于(已编码的)存储的数据元素阵列的旋转输出。
因此,与用于从存储器存储(和检索)编码数据块的现有方法相比,本文所述技术(至少在其实施方案中)可提供各种改进。
在一个实施方案中,可选择性地激活以本文所述技术方式的操作。然而,在实施方案中,始终激活本文所述技术的操作。如上所述,本文所述技术的方法易于与任何大小的数据阵列兼容,例如,当所应用的修改量可包括‘零’修改量(例如,1x比例因子)时,在这种情况下,可正常执行寻址。
以及以本文所述技术的方式操作所需的特定单元和部件,数据处理系统还可(并且在一个实施方案中确实)包括数据处理系统可包括的任何其他合适和期望的部件、单元、处理器等中的一者或多者(并且在一个实施方案中包括所有)。因此,数据处理系统可包括以下中的一者或多者(并且在一个实施方案中包括所有):中央处理单元、主机处理器(或多个主机处理器)、图形处理单元、视频处理器、图像信号处理器、相机、系统总线和存储器控制器。在一个实施方案中,数据处理系统包括存储本文所述的数据和/或存储用于执行本文所述的过程的软件的一个或多个存储器和/或存储器装置,并且/或者与该一个或多个存储器和/或存储器装备通信。
本文所述技术的方法和设备可以任何适当的方式实现,例如在硬件或软件中,并且在任何适当的装置或部件中(并且被包括在其中)。
用于以本文所述技术的方式存储数据的实际装置或部件将例如取决于所存储的数据阵列的性质。因此,例如,在是图形纹理的情况下,适当的处理器诸如个人计算机可用于以本文所述技术的方式(例如,由应用程序开发者)生成和存储纹理,并且例如将这样存储的纹理然后作为游戏内容的一部分提供。在存储的数据阵列是用于显示的帧的情况下,则它可以相应地是以所需方式生成和存储数据的图形处理器。
类似地,从操作的数据读取(解码)侧方面,例如,在是纹理数据的情况下,它可以是读取(解码)存储的数据阵列的图形处理器,并且在是用于显示的帧的情况下,它可以是读取(解码)存储的数据阵列的用于显示器的显示控制器。
在一个实施方案中,本文所述技术在图形处理器、显示控制器、图像信号处理器、视频解码器或视频编码器中实现,并且因此本文所述技术还扩展到图形处理器、显示控制器、图像信号处理器、视频解码器或被配置为使用本文所述技术的方法或者包括本文所述技术的设备或者根据本文所述技术的任何一个或多个实施方案的方法进行操作的视频编码器。受制于需要执行上文所讨论的特定功能的任何硬件,此类图形处理器、显示控制器、图像信号处理器、视频解码器或视频编码器可另外包括图形处理器、显示控制器、图像信号处理器、视频解码器或视频编码器可包括的任何一个或多个或所有通常功能单元等。在一个实施方案中,本文所述技术的方法和设备在硬件中实现,在一个实施方案中,在单个半导体平台中实现。
本文所述技术可具体地但非唯一地适用于低功率和便携式装置。因此,在一个实施方案中,本文所述技术在便携式装置中实现,诸如移动电话或PDA。
类似地,存储表示数据阵列中的编码数据块的数据的存储器可包括任何合适的此类存储器并且可以任何合适和期望的方式配置。例如,它可以是片上缓冲区,或者它可以是外部存储器(并且确实可能更可能是外部存储器)。类似地,它可以是用于该目的的专用存储器,或者它也可以是用于其他数据的存储器的一部分。在一个实施方案中,该数据存储在结合图形处理器的系统的主存储器中。
在是纹理数据阵列的情况下,存储器在一个实施方案中是图形处理系统的纹理缓冲区(该缓冲区可根据需要例如在片上,或在外部存储器中)。类似地,在是用于显示的帧的情况下,存储器在一个实施方案中为图形处理系统和/或图形处理系统的输出将提供到其中的显示器的帧缓冲区。
当然,其他存储器布置将是可能的。
本文所述的技术可在任何合适的系统(诸如适当配置的基于微处理器的系统)中实现。在一个实施方案中,本文所述技术在基于计算机和/或微处理器的系统中实现。
本文所述技术的各种功能可以任何期望且合适的方式执行。例如,本文所述技术的功能可根据需要以硬件或软件实现。因此,例如,本文所述技术的各种功能元件可包括一个或多个合适的处理器、一个或多个控制器、功能单元、电路/电路系统、处理逻辑部件、微处理器布置等,这些元件能够操作为执行各种功能等,诸如可被编程以按期望方式操作的适当专用硬件元件和/或可编程硬件元件。
此处还应当指出的是,如本领域的技术人员将理解的,本文所述技术的各种功能等可在给定处理器上复制和/或并行执行。同样,如果需要,各种处理阶段可共享处理电路/电路等。
此外,本文所述技术的处理级中的任何一个或多个或所有处理级和引擎可体现为例如呈一个或多个固定功能单元(硬件)(处理电路系统(电路))的形式以及/或者呈可被编程为执行期望的操作的可编程的处理电路系统(电路)的形式的处理级电路系统(电路)。同样,本文所述技术的处理级和处理级电路系统中的任何一者或多者可作为独立的电路元件提供给其他处理级或处理级电路系统(电路)中的任何一者或多者,并且/或者处理级和处理级电路系统(电路)中的任何一者或多者或所有可至少部分地由共享处理电路/电路系统形成。
本领域的技术人员还应当理解,本文所述技术的所有所述实施方案均可视情况包括本文所述技术的可选特征中的任何一个或多个或所有特征。
根据本文所述技术的方法可至少部分地使用软件例如计算机程序来实现。因此,可以看出,本文所述技术的实施方案包括:计算机软件,该计算机软件特别适于在安装在数据处理器上时执行本文所述的方法;计算机程序元件,该计算机程序元件包括用于当该程序元件在数据处理器上运行时执行本文所述方法的计算机软件代码部分;和计算机程序,该计算机程序包括适于当该程序在数据处理系统上运行时执行本文所述的一个或多个方法的所有步骤的代码。数据处理系统可以是微处理器、可编程FPGA(现场可编程门阵列)等。
本文所述技术还扩展到包括此类软件的计算机软件载体,该软件在用于操作数据(例如图形)、处理器、渲染器或包括数据处理器的其他系统时,使所述处理器、渲染器或系统结合所述数据处理器执行本文所述技术的方法的步骤。此类计算机软件载体可以是物理存储介质,诸如ROM芯片、RAM、闪存存储器、CD ROM或磁盘。
还应当理解,并非本文所述技术的方法的所有步骤都需要由计算机软件执行,因此本文所述技术的另外的广泛的实施方案包括计算机软件和安装在计算机软件载体上的用于执行本文所述方法的步骤中的至少一个步骤的此类软件。
因此,本文所述的技术可适当地体现为与计算机系统一起使用的计算机程序产品。此类具体实施可包括固定在有形非暂态介质上的一系列计算机可读指令,诸如计算机可读介质,例如磁盘、CD ROM、ROM、RAM、闪存存储器或硬盘。该系列计算机可读指令体现了本文先前所述的功能的全部或部分。
本领域的技术人员将会理解,此类计算机可读指令可以多种编程语言编写,以与许多计算机架构或操作系统一起使用。此外,此类指令可使用目前或将来的任何存储器技术(包括但不限于半导体、磁性或光学技术)来存储,或者使用目前或将来的任何通信技术(包括但不限于光学、红外或微波技术)来传输。可以设想的是,此类计算机程序产品可作为带有附随的印刷或电子文档(例如,收缩包装软件)的可移动介质进行分发,可与计算机系统一起预加载在例如系统ROM或固定磁盘上,或者可经由网络(例如,互联网或万维网)从服务器或电子公告板进行分发。
现在将仅以举例的方式并参考附图来描述本文所述技术的各种实施方案。
附图示出了与本文所述技术的实施方案相关的数据处理设备和系统的元件。如本领域的技术人员将理解的,可存在数据处理装置的在附图中未示出的其他元件。此处还应当指出的是,附图仅是示意性的,并且例如在实践中,即使所示的元件在附图中被示意性地示出为独立元件,这些元件也可共享重要的硬件电路。
如上所述,本文所述技术的实施方案涉及包括将编码数据块存储在存储器中的布置。针对编码数据块生成标头。
现在将在对用于显示的图形数据的处理的上下文中描述本文所述技术的各种实施方案。然而,本文所述的概念可同样应用于访问其他类型数据阵列的上下文。
图1示意性地示出了数据处理系统100的实施方案,该数据处理系统可以本文所述技术的方式存储编码的数据元素阵列并且检索编码的数据元素阵列的数据。
在该实施方案中,系统100包括呈片上系统(SoC)102形式的数据处理设备。系统100还包括片外(主)存储器116和显示装置118。
SoC 102包括中央处理单元(CPU)104、图形处理单元(GPU)106、视频编解码器108、显示控制器110、互连器112和存储器控制器114。
如图1所示,CPU 104、GPU 106、视频编解码器108和显示控制器110经由互连器112彼此通信,并且经由互连器112和存储器控制器114与存储器116通信。显示控制器110还与显示装置118通信。
在以下实施方案中,GPU 106生成并存储编码的图形数据。然后,例如通过显示装置118来读取、解码和输出编码的图形数据以用于显示。在其他实施方案中,视频编解码器108可对图形数据进行编码,然后存储编码的图形数据并且/或者可读取编码的图形数据,然后对编码的图形数据进行解码。
图2示出了GPU 106的另外的细节。在该实施方案中,GPU 106包括生成图形数据的帧的数据发生器200。在该实施方案中,数据发生器200使用图形处理流水线来生成图形数据。
GPU 106还包括对图形数据进行编码的编码器202。在这样做时,编码器202将图形数据的帧划分为多个类似形状的非重叠块,然后单独对那些块中的每个块进行编码。然后经由接口206通过写入控制器204将编码的图形数据块写入到存储器116。下文更详细地描述生成和存储编码数据块的过程。
GPU 106还包括读取控制器208,该读取控制器可经由接口206从存储器116读取编码纹理块的数据。然后,在被数据发生器200的纹理映射器212使用之前由解码器210对块的编码数据进行解码。下文更详细地描述检索和解码编码数据块的数据的过程。
现在将参考图3更详细地描述图形处理流水线和渲染过程。
如图3所示,流水线300包括不同阶段的顺序,其中每个阶段对构成帧的特征的表面的“基元”(例如,多边形)执行不同操作以使它们准备好用于输出。
在流水线300中首先是顶点着色器302,其顶点着色基元的顶点以用于所生成的输出。顶点着色器302获得与针对要生成的输出所定义的顶点等相关联的输入数据值,并且处理那些数据值以生成用于由图形处理流水线300的后续阶段使用的顶点着色属性数据值的集合。
然后,光栅化器304操作以光栅化构成被输出到单独图形片段中的渲染的基元以用于处理。为此,光栅化器304接收到用于渲染的图形基元时,将这些基元光栅化为采样点并且生成用于渲染基元的表示适当采样位置的图形片段。然后将由光栅化器304生成的片段向前发送到流水线300的其余部分以用于处理。
然后将由光栅化器304生成的图形片段传递到渲染器306以用于着色。渲染器306的输出是适当地加了阴影的例如用于帧的采样位置的颜色值的集合。然后将渲染器306的输出存储在存储器116的帧缓冲区310中。
渲染器306包括一定数量的不同处理单元,诸如片段着色器、混合器、纹理映射器212等。具体地,如图3所示,渲染器306尤其将访问存储在可由GPU 106访问的纹理缓冲区308中的编码纹理,以便能够将相关纹理应用于其正在渲染的片段。纹理缓冲区308驻留的存储器可以是在片上或在外部存储器(例如,存储器116)中,该纹理缓冲区可由GPU 106访问。
GPU 106相对于纹理缓冲区308中的存储的编码纹理而使用本文所述实施方案的检索过程。因此,当渲染器306需要访问纹理值时,纹理缓冲区308将由读取控制器208以本文所述的方式读取。
GPU 106还相对于要存储在帧缓冲区310中的编码的输出数据而使用本文所述实施方案的存储过程。因此,当来自GPU 106的所生成的输出数据被写入到帧缓冲区310时,数据由编码器202进行编码,然后由写入控制器204以本文所述的方式写入帧缓冲区310。
然后可以本文所述的方式从帧缓冲区310读取该编码的输出数据并例如通过用于其上待显示帧的显示装置118的显示控制器110进行解码。因此,在该实施方案中,显示控制器110包括类似于GPU 106的读取控制器和解码器。在其他实施方案中,视频编解码器108可包括类似于GPU 106的读取控制器和解码器和/或写入控制器和编码器。
当然,数据处理系统100的其他布置也是可能的。举例来说,所执行的渲染可根据需要包括光线跟踪、混合光线跟踪或任何其他合适的渲染技术,在这种情况下,可相应地执行对几何形状集合的处理(渲染)。
现在将参考图4至图7更详细地描述编码和存储数据元素(诸如图形数据的纹理或帧)阵列的数据元素块的过程。
图4A示出了要编码和存储的数据元素阵列400。在该实施方案中,数据元素阵列400是图形数据的帧的一部分,并且大小为128×128数据元素。在该实施方案中,每个数据元素具有RGBX8格式。因此,每个数据元素包括8位红色(R)数据值、8位绿色(G)数据值、8位蓝色(B)数据值和8位透明度(α)数据值,每个数据元素总计给出32位。当然可根据需要使用其他阵列大小和数据元素格式。
如图4A所示,出于编码目的,数据元素阵列400被划分为64(即8×8)个块402。在该实施方案中,每个块402大小为16×16数据元素。因此,在这些实施方案中,每个块的大小为1024字节(即16×16×32/8)。例如,当数据元素阵列可旋转(例如,以用于显示)和/或可用于由通常按块而不是按行来处理数据元素阵列的处理电路系统(例如,图形处理器)进行进一步处理时,这些正方形块实施方案可能特别有效。
当然可根据需要使用其他块大小,诸如大小为32×8数据元素的数据元素块。例如,当数据元素阵列可能不旋转(例如,以用于显示)和/或可用于由通常按行而不是按块来处理数据元素阵列的处理电路系统(例如,输出(例如显示)处理器)进行进一步处理时,这些长方形块实施方案可能更有效,同时如果数据元素阵列恰好被旋转和/或由通常按块而不是按行来处理数据元素阵列的处理电路系统(例如,图形处理器)进行处理,则仍然有效。
还如图4A所示,出于编码目的,数据元素块进一步被划分为16(即4×4)个子块404。在该实施方案中,每个子块404大小为4×4数据元素。因此,在这些实施方案中,每个子块大小为64字节(即4×4×32/8)。同样,可根据需要使用其他子块大小。
在该实施方案中,用于对阵列400的块402进行编码的编码方案是尤其包括以下的无损熵编码方案:针对由块402的数据元素表示的每种类型的数据值(即,针对R、G、B和α中的每一者),确定块402的每个数据元素和子块404的最低数据值和差异值集合。因此,块402的编码版本包括块402的每个数据元素和子块404的最低数据值和差异值集合。
在该实施方案中,块的编码版本的数据大小不是固定的,并且是基于块的特定数据值的。例如,颜色基本上均匀的块402将压缩成的编码块的数据大小比具有更高度变化的颜色的块402更小。
合适的编码方案的进一步细节可在例如美国专利第8542939号(Arm Limited)或美国专利第9014496号(Arm Limited)中找到,这些专利的全部内容以引用方式并入本文。当然可根据需要使用其他编码方案。
如将理解的,针对要编码的每个块402重复编码过程。
图4B示意性地示出了用于存储所生成的数据以表示存储器中的本文所述技术的一些实施方案中的数据阵列的实施方案。
图4B再次示意性地示出了原始数据阵列20,该原始数据阵列是含有多个数据元素(在阵列内的多个特定位置处含有数据条目)并且待被编码和压缩以及存储的二维数据阵列。如文所讨论的,数据阵列20可以是任何合适和期望的数据阵列,但是在图形处理的上下文中,它可能例如是纹理映射(即纹理(文素)元素阵列)或表示待显示的帧的数据阵列(在这种情况下,该数据阵列可以是待显示的像素阵列)。在是纹理映射的情况下,数据阵列中的每个数据条目(位置)将表示适当的文素值(例如,颜色值的集合,诸如RGBa、或亮度和色度、文素的值)。在是用于显示的帧的情况下,阵列中的每个数据条目(位置)将指示待用于在显示器上显示帧的颜色值(例如,RBG值)的集合。
如图4B所示,为了将数据阵列20存储在存储器中,首先将数据阵列20划分为多个非重叠、等大小和均匀的块21,每个块对应于数据阵列20的特定区域。如上文所讨论的,在本实施方案中,数据阵列的每个块21对应于数据阵列20内的16×16元素(位置)的块(即,在是纹理映射的情况下对应于16×16文素的块)。(同样,其他布置当然也是可能的。)
将数据阵列20被划分为的每个块21进一步细分为十六个非重叠、均匀和等大小的子块22的集合。在这种情况下,当每个块21对应于数据阵列内的16×16元素(位置)时,每个子块22相应地对应于块21内的4×4数据元素区域(例如,在是纹理映射的情况下对应于4×4文素)。(为了简化,图4B仅示出了将数据阵列20的一些块21划分为子块。然而,将原始数据阵列20划分为的每一个块21相应地细分为多个子块22的集合。)
为了将数据阵列20存储在存储器中,首先为数据阵列20已被划分为的每个块21存储标头数据块23。这些标头数据块存储在存储器中的标头缓冲区24中。标头缓冲区24开始于存储器中的起始地址A,并且标头数据块23各自存储在标头缓冲区24内的可预测的存储器地址处。
图4B为数据阵列20划分为的一些块21示出了标头缓冲区24中的标头数据块23的位置。数据阵列20划分为的每个块21在标头缓冲区24中具有对应的标头数据块23。从块21(标头数据块23与其有关)的数据阵列内的位置确定(预测)每个标头数据块23被存储在标头缓冲区24内的位置。
在本实施方案中,标头缓冲区24中的每个标头数据块23具有相同的固定大小,其对应于由其中待使用存储的数据阵列的数据处理系统使用的突发大小。这意味着标头数据块23具有可使用系统友好的突发大小而获取的大小。
以及将相应的标头数据块23存储在标头缓冲区24中以用于原始数据20划分为的每个块21,本实施方案的数据存储布置还存储给定数据块划分为的每个子块22的数据。该子块数据存储在子块存储主体块35中的存储器中,该子块存储主体块在本实施方案中包括具有1024字节的对准块。(使主体块将子块数据存储在1024位子块存储块中提供了通过每个编码器在每次用尽空间时通过中央存储库分配新的块来用若干不同的编码器平行地对数据阵列进行编码的能力。)在本实施方案中,主体块35直接存储在标头缓冲区24之后(但这里可以随机顺序出现)。这允许标头数据块中的指针数据呈距标头缓冲区24的末端的偏移量的形式。(这不是必需的,并且如果需要,主体块35可驻留在存储器中的任何位置。)
每个相应的子块的集合的数据的集合26一个接一个地存储在主体块中,如图4B所示。然后,这样做具有以下效果:给定的16×16块21的子块22的集合的数据可跨越两个不同的主体块35(如图4B中针对子块数据的集合27所示)。
图4C示出了标头406和编码数据块408。在该示例中,标头406将存储在存储器116的“标头缓冲区”中,并且编码数据块408将存储在存储器116的“主体缓冲区”中。标头缓冲区和主体缓冲区可例如形成帧缓冲区或纹理缓冲区的一部分。
在该示例中,如图5A所示,标头406包括32位存储器地址值字段407,该字段用于存储从标头缓冲区的开始到主体缓冲区中的对应编码数据块的偏移量。该偏移量允许编码数据块位于存储器中。标头406还含有一定数量的其他字段,但这些字段与本实施方案的讨论不相关(并且因此将不在这里描述)。
在该示例中,存储编码数据块的存储器位置(有效载荷地址)因此计算为:
有效载荷_地址=标头_指针+偏移量。
应当理解,偏移量值的大小(在该示例中为32位)因此限制了可在标头中指示的存储器地址范围。这意味着上文所述的编码技术可能无法支持较大的帧大小,并且存在编码技术可应用于的帧大小限制。帧大小限制通常可取决于数据格式。
因此,本实施方案将标头修改为包括可应用于偏移量的比例因子,以便扩展可访问的存储器地址范围,如下文将进一步解释的。
因此,图5B示出了根据本文所述技术的实施方案的针对编码数据块的经修改的标头506。在该实施方案中,来自32位偏移量字段407的一组位(在该示例中,为两个最高有效位)被重新用于存储要应用的比例因子500的指示。
比例因子500是对一组比例因子(1x、16x、64x和256x)的2位编码,这可使用相应的修改量值00、01、10和11来进行编码。因此,可使用比例因子将有效载荷地址计算为:
有效载荷_地址=标头_指针+偏移量*比例因子。
然后在帧中的每个块动态地使用比例因子。因此,比例因子最初在块的开始处被设置为1x(修改量值“00”),并且仅当所计算的偏移量超过可用地址范围时才会增加。
该方法还意味着根据图5B的新的标头格式向后兼容较小的帧,因为在该情况下,1x比例因子就足够了。
图6示出了根据本文所述技术的实施方案的整体标头生成流程。
对于要存储在存储器中的编码数据块,首先计算完整的地址偏移量(步骤600)。基于该完整的地址偏移量,然后确定适当的比例因子(步骤601)。
然后使用该比例因子将完整的地址偏移量编码到标头中,其中编码的偏移量407和比例因子500被适当地包括在标头中(步骤602)。然后可将标头写入到标头缓冲区并且将编码数据块写入到所指示的存储器位置。
当随后需要编码数据块时,然后将其从其存储器位置检索,并且对其进行解码等以供使用。图7示出了根据本文所述技术的实施方案的对应的整体解码流程。
对于所需的编码数据块,解码电路首先读取相关联的标头并且提取编码的偏移量407和相关联的比例因子500(步骤700)。然后通过应用所指示的比例因子根据编码的偏移量相应地计算完整的地址偏移量(步骤701)。然后可根据完整的地址偏移量适当地确定有效载荷地址(步骤702)。
一旦确定了有效载荷地址,就可获取有效载荷(步骤703)并进行解码(步骤704)。然后可相应地输出解码的数据,例如根据需要以供使用和/或以供显示。
从以上描述可以看出,本文所述技术在其实施方案中至少提供了用于扩展可访问的存储器地址范围的有效方式,该可访问的存储器地址范围可在针对编码数据块的标头内指示。此外,这可以最小的额外开销完成,并且不显著修改现有的标头结构。因此,与其他方法相比,本文所述技术提供各种益处。
上述具体实施方式是为了举例说明和描述的目的而呈现的。其并非旨在穷举或将本文所述的技术限制为所公开的精确形式。按照上述教导内容,许多修改形式和变型形式是可能的。选择所述实施方案以便最好地解释本文所述的技术及其实际应用的原理,从而使得本领域的其他技术人员能够在各种实施方案中并且通过适合于所设想的特定用途的各种修改最好地利用本文所述的技术。本发明的范围旨在由所附权利要求限定。

Claims (24)

1.一种将编码数据块存储在存储器中的方法,所述方法包括:
对数据元素阵列的数据元素块进行编码以生成表示所述数据元素块的编码数据块;
确定所述编码数据块要被存储在其中的存储器位置;
生成针对所述编码数据块的标头,所述标头指示所述编码数据块被存储在其中的所述存储器位置,其中在确定所述存储器位置时,通过在所述标头中包括存储器地址值以及修改量值来指示所述存储器位置,所述修改量值表示要应用于所述存储器地址值的修改量;以及
将所述标头和所述编码数据块写入到所述存储器,其中所述编码数据块存储在所述存储器中处于针对所述编码数据块的所述标头中所指示的位置处。
2.根据权利要求1所述的方法,其中所述修改量值表示在确定所述存储器位置时要应用于所述存储器地址值的比例因子。
3.根据权利要求1或2所述的方法,其中所述存储器地址值表示偏移量,并且其中所述修改量可应用于所述偏移量以生成修改的偏移量,所述修改的偏移量可用于确定所述存储器位置。
4.根据权利要求1或2所述的方法,包括:从多个可用修改量确定所述多个可用修改量中的哪一个可用修改量应与所述存储器地址值一起使用以用于指示所述编码数据块要存储在其中的所述存储器位置,以及在所述标头中包括表示所确定的修改量的所述修改量值以及所述存储器地址值。
5.根据权利要求4所述的方法,其中所述可用修改量中的一个可用修改量包括不修改所述存储器地址值的零修改量。
6.根据权利要求1或2所述的方法,包括将多个编码数据块按顺序存储在相应存储器位置中,其中所述编码数据块存储在逐渐增加的存储器位置处,并且其中所述方法包括将所述修改量值最初设置为零修改量,并且当用于所述编码数据块的所述存储器位置超过可使用所述零修改量访问的存储器地址范围时,增加所述修改量值。
7.根据权利要求1或2所述的方法,其中使用来自存储器地址字段的一定数量的位来存储所述修改量值,所述一定数量的位原本将用于存储所述存储器地址值。
8.根据权利要求1或2所述的方法,为所述编码数据块各自在所述存储器中分配固定的空间量,并且将其存储在所述存储器中处于预定义位置,所述预定义位置与所分配的空间量的相应边界对准。
9.一种从存储器检索编码数据块的数据的方法,所述方法包括:
当确定用于所述编码数据块的存储器位置时,从存储器读取针对所述编码数据块的标头,所述编码数据块表示数据元素阵列的数据元素块,其中所述标头包括存储器地址值以及表示要应用于所述存储器地址值的修改量的修改量值;
通过将所述修改量应用于所述存储器地址值来确定用于所述编码数据块的存储器位置;
从所确定的存储器位置读取来自存储器的所述编码数据块的数据;以及
对所述编码数据块进行解码以导出所述编码数据块的数据元素的至少一个数据值。
10.根据权利要求9所述的方法,其中所述修改量值表示要应用于所述存储器地址值以确定所述存储器位置的比例因子。
11.根据权利要求9或10所述的方法,其中所述存储器地址值表示偏移量,并且其中所述修改量可应用于所述偏移量以生成修改的偏移量,所述修改的偏移量可用于确定所述存储器位置。
12.一种用于将编码数据块存储在存储器中的设备,所述设备包括:
编码电路,所述编码电路被配置为:对数据元素阵列的数据元素块进行编码以生成表示所述数据元素块的编码数据块;
标头生成电路,所述标头生成电路被配置为:确定所述编码数据块要被存储在其中的存储器位置;并且生成针对所述编码数据块的标头,其中所述标头指示存储所述编码数据块的所述存储器位置,其中在确定所述存储器位置时,由所述标头生成电路指示的所述存储器位置在所述标头中包括存储器地址值以及修改量值,所述修改量值表示要应用于所述存储器地址值的修改量;和
写入控制电路,所述写入控制电路被配置为:将所述标头和所述编码数据块写入到存储器,其中所述编码数据块存储在存储器中处于针对所述编码数据块的所述标头中所指示的位置处。
13.根据权利要求12所述的设备,其中所述修改量值表示当确定所述存储器位置时要应用于所述存储器地址值的比例因子。
14.根据权利要求12或13所述的设备,其中所述存储器地址值表示偏移量,并且其中所述修改量可应用于所述偏移量以生成修改的偏移量,所述修改的偏移量可用于确定所述存储器位置。
15.根据权利要求12或13所述的设备,其中所述标头生成电路被配置为:从多个可用修改量确定所述多个可用修改量中的哪一个可用修改量应与所述存储器地址值一起使用以用于指示所述编码数据块要存储在其中的所述存储器位置,以及在所述标头中包括表示所确定的修改量的所述修改量值以及所述存储器地址值。
16.根据权利要求15所述的设备,其中所述可用修改量中的一个可用修改量包括不修改所述存储器地址值的零修改量。
17.根据权利要求12或13所述的设备,其中当将多个编码数据块按顺序存储在相应存储器位置中时,其中所述编码数据块存储在逐渐增加的存储器位置处,所述标头生成设备被配置为将所述修改量值最初设置为零修改量,并且当用于所述编码数据块的所述存储器位置超过可使用所述零修改量访问的所述存储器地址范围时,增加所述修改量值。
18.根据权利要求12或13所述的设备,其中使用来自所述存储器地址字段的一定数量的位来存储所述修改量值,所述一定数量的位原本将用于存储所述存储器地址值。
19.根据权利要求12或13所述的设备,为所述编码数据块各自在所述存储器中分配固定的空间量,并且将其存储在所述存储器中处于预定义位置,所述预定义位置与所分配的空间量的相应边界对准。
20.一种用于从存储器检索编码数据块的数据的数据处理设备,所述设备包括:
读取控制电路,所述读取控制电路被配置为:
当确定用于所述编码数据块的存储器位置时,从存储器读取针对所述编码数据块的标头,所述编码数据块表示数据元素阵列的数据元素块,其中所述标头包括存储器地址值以及表示要应用于所述存储器地址值的修改量的修改量值;
通过将所述修改量应用于所述存储器地址值来确定用于所述编码数据块的存储器位置;并且
从所确定的存储器位置读取来自存储器的所述编码数据块的数据;和
解码电路,所述解码电路被配置为:
对所述编码数据块进行解码以导出所述编码数据块的数据元素的至少一个数据值。
21.根据权利要求20所述的设备,其中所述修改量值表示要应用于所述存储器地址值以确定所述存储器位置的比例因子。
22.根据权利要求20或21所述的设备,其中所述存储器地址值表示偏移量,并且其中所述修改量可应用于所述偏移量以生成修改的偏移量,所述修改的偏移量可用于确定所述存储器位置。
23.一种存储软件代码的计算机可读存储介质,当所述软件代码在数据处理器上执行时,执行根据权利要求1或权利要求9所述的方法。
24.根据权利要求1或9所述的方法或者根据权利要求12或20所述的设备,其中所述存储器对应于用于图形处理系统和/或用于所述图形处理系统的输出将提供到其中的显示器的帧缓冲区。
CN202210320667.4A 2021-03-31 2022-03-29 访问编码数据块 Pending CN115145836A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2104602.4A GB2605577A (en) 2021-03-31 2021-03-31 Accessing Encoded Blocks of Data
GB2104602.4 2021-03-31

Publications (1)

Publication Number Publication Date
CN115145836A true CN115145836A (zh) 2022-10-04

Family

ID=75783519

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210320667.4A Pending CN115145836A (zh) 2021-03-31 2022-03-29 访问编码数据块

Country Status (4)

Country Link
US (1) US11954028B2 (zh)
CN (1) CN115145836A (zh)
GB (1) GB2605577A (zh)
TW (1) TW202240398A (zh)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB276506A (en) * 1926-09-08 1927-09-01 John Boardman Haslam Improved sprinkler head for fire extinguishing
US6192458B1 (en) * 1998-03-23 2001-02-20 International Business Machines Corporation High performance cache directory addressing scheme for variable cache sizes utilizing associativity
US8635428B2 (en) * 2009-12-09 2014-01-21 Oracle America, Inc. Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes
US8990518B2 (en) * 2011-08-04 2015-03-24 Arm Limited Methods of and apparatus for storing data in memory in data processing systems
US9014496B2 (en) 2011-08-04 2015-04-21 Arm Limited Methods of and apparatus for encoding and decoding data in data processing systems
US8542939B2 (en) 2011-08-04 2013-09-24 Arm Limited Methods of and apparatus for using tree representations for representing arrays of data elements for encoding and decoding data in data processing systems
JP5931816B2 (ja) * 2013-08-22 2016-06-08 株式会社東芝 ストレージ装置
GB2576506B (en) * 2018-08-20 2021-06-30 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
US11023152B2 (en) * 2019-07-12 2021-06-01 Arm Limited Methods and apparatus for storing data in memory in data processing systems
US11636069B2 (en) * 2020-07-24 2023-04-25 Capital Thought Holdings L.L.C. Data storage system and method
US11507517B2 (en) * 2020-09-25 2022-11-22 Advanced Micro Devices, Inc. Scalable region-based directory
US11620068B2 (en) * 2021-01-06 2023-04-04 EMC IP Holding Company LLC Data transfer optimizations

Also Published As

Publication number Publication date
US20220318138A1 (en) 2022-10-06
US11954028B2 (en) 2024-04-09
TW202240398A (zh) 2022-10-16
GB2605577A (en) 2022-10-12
GB202104602D0 (en) 2021-05-12

Similar Documents

Publication Publication Date Title
CN107273301B (zh) 存储阵列的方法和设备、确定数据值的方法和设备、介质
US11023152B2 (en) Methods and apparatus for storing data in memory in data processing systems
US8990518B2 (en) Methods of and apparatus for storing data in memory in data processing systems
US9116790B2 (en) Methods of and apparatus for storing data in memory in data processing systems
US9014496B2 (en) Methods of and apparatus for encoding and decoding data in data processing systems
US6825847B1 (en) System and method for real-time compression of pixel colors
US10395394B2 (en) Encoding and decoding arrays of data elements
US10642343B2 (en) Data processing systems
US20140267283A1 (en) Methods of and apparatus for encoding and decoding data
US10466915B2 (en) Accessing encoded blocks of data in memory
US10440360B2 (en) Video processing system
US10824357B2 (en) Updating data stored in a memory
CN110214338B (zh) 增量颜色压缩到视频的应用
CN113170140A (zh) 数据阵列的位平面编码
US11263786B2 (en) Decoding data arrays
US20220398686A1 (en) Methods of and apparatus for storing data in memory in graphics processing systems
US11954028B2 (en) Accessing encoded blocks of data
US11205243B2 (en) Data processing systems
US20140015843A1 (en) Stencil data compression system and method and graphics processing unit incorporating the same
US11327687B2 (en) Encoding data arrays

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