CN105247478A - 命令指令管理 - Google Patents

命令指令管理 Download PDF

Info

Publication number
CN105247478A
CN105247478A CN201480029283.0A CN201480029283A CN105247478A CN 105247478 A CN105247478 A CN 105247478A CN 201480029283 A CN201480029283 A CN 201480029283A CN 105247478 A CN105247478 A CN 105247478A
Authority
CN
China
Prior art keywords
memory cell
group command
current group
disposal
processor
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.)
Granted
Application number
CN201480029283.0A
Other languages
English (en)
Other versions
CN105247478B (zh
Inventor
穆拉特·巴尔契
克里斯托弗·保罗·弗拉斯卡蒂
阿温阿什·赛塔拉迈亚
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105247478A publication Critical patent/CN105247478A/zh
Application granted granted Critical
Publication of CN105247478B publication Critical patent/CN105247478B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Image Generation (AREA)

Abstract

本发明描述用于将命令写入到命令缓冲器的存储器单元链的存储器单元的技术。所述技术可写入所述命令,且如果在所述写入期间,确定所述存储器单元链中没有充足的空间,那么所述技术可冲洗先前所确认的命令。如果在所述写入之后,所述技术确定分配列表中没有充足的空间用于与所述命令相关联的所述处置,那么所述技术可冲洗先前所确认的命令。

Description

命令指令管理
本申请案主张2013年5月31日申请的第61/829,487美国临时申请案的权益,该案的整个内容特此以引用的方式并入。
技术领域
本发明涉及用于图形处理的技术,且更明确地说,涉及用于存储用于图形处理的命令的技术。
背景技术
用于显示的视觉内容,例如用于图形用户接口和视频游戏的内容,可由图形处理单元(GPU)产生。GPU可将二维(2D)或三维(3D)图形对象转换成可在显示装置上显示的2D像素表示。为了执行其功能,GPU执行例如中央处理单元(CPU)等应用程序处理器所发出的命令。一般来说,CPU将所述命令存储在命令缓冲器中,且GPU从命令缓冲器检索所述命令以供执行。
发明内容
一般来说,本发明描述基于确认的命令缓冲器队列产生技术。举例来说,所述技术描述在写入之后确认命令。通过确认所述命令,如果下一组命令无法写入,或分配列表中没有充足的空间用于与所述下一组命令相关联的处置,如在所述下一组命令的写入期间所确定,那么处理器可提交所确认的命令,使得可利用额外存储器单元,或可使分配列表复位。
举例来说,如果处理器能够将所述组命令写入命令缓冲器的存储器单元中,那么处理器可识别确认点,其识别存储器单元中处理器完成了写入所述组命令的位置(例如,存储器单元中的所述组命令的结尾的位置)。所述处理器可接着从所述确认点开始写入下一组命令。然而,如果在写入期间,处理器确定无法将整组命令写入到存储器单元,或在所述命令的写入之后,确定没有充足的分配列表空间用于与所述组命令相关联的处置,那么处理器可在确认点之前提交所述命令。在确认点之前提交所述命令可允许处理器将所述组命令的其余命令写入额外存储器单元中,或为与所述确认点之后的命令相关联的处置创建充足的空间。
在一个实例中,本发明描述一种用于存储命令的方法,所述方法包括用处理器从存储器单元的存储器单元中的当前确认点,将当前组命令写入到命令缓冲器中的存储器单元链。所述方法包含用所述处理器来确定以下各项中的至少一者:在当前组命令的写入期间,当前组命令中尚未写入到存储器单元链的命令是否到达存储器单元链的结尾;以及在当前组命令的写入之后,分配列表中是否有充足的空间来存储与当前组命令相关联的处置。所述方法还包含如果基于所述确定,当前组命令中尚未写入到存储器单元链的命令到达存储器单元链的结尾,或如果基于所述确定,分配列表中没有充足的空间来存储与当前组命令相关联的处置,那么用所述处理器来提交处理器在当前组命令的写入之前存储在存储器单元链中的先前所确认的命令。
在一个实例中,本发明描述一种装置,其包括包含命令缓冲器的系统存储器,以及处理器。所述处理器经配置以从存储器单元的存储器单元中的当前确认点开始,将当前组命令写入到命令缓冲器中的存储器单元链。所述处理器还经配置以确定以下各项中的至少一者:在当前组命令的写入期间,当前组命令中尚未写入到存储器单元链的命令是否到达存储器单元链的结尾;以及在当前组命令的写入之后分配列表中是否有充足的空间来存储与当前组命令相关联的处置。所述处理器进一步经配置以在基于递交所述确定,当前组命令中尚未写入到存储器单元链的命令到达存储器单元链的结尾的情况下,或在基于所述确定,分配列表中没有充足的空间来存储与当前组命令相关联的处置的情况下,提交处理器在当前组命令的写入之前存储在存储器单元链中的先前所确认的命令。
在一个实例中,本发明描述一种上面存储有指令的计算机可读存储媒体,所述指令在被执行时,致使一或多个处理器从存储器单元的存储器单元中的当前确认点开始,将当前组命令写入到命令缓冲器中的存储器单元链。所述指令较致使所述一或多个处理器确定以下各项中的至少一者:在当前组命令的写入期间,当前组命令中尚未写入到存储器单元链的命令是否到达存储器单元链的结尾;以及在当前组命令的写入之后,分配列表中是否存在充足的空间来存储与当前组命令相关联的处置。所述指令还致使所述一或多个处理器在基于所述确定,当前组命令中尚未写入到存储器单元链的命令到达存储器单元链的结尾的情况下,或在基于所述确定分配列表中没有充足的空间来存储与当前组命令相关联的处置的情况下,提交存储器单元链中的一或多个处理器在当前组命令的写入之前存储的先前所确认的命令。
在一个实例中,本发明描述一种装置,其包括用于从存储器单元的存储器单元中的当前确认点开始,将当前组命令写入到命令缓冲器中的存储器单元链的装置。所述装置还包含用于确定以下各项中的至少一者的装置:在当前组命令的写入期间,当前组命令中尚未写入到存储器单元链的命令是否到达存储器单元链的结尾;以及在当前组命令的写入之后,分配列表中是否有充足的空间来存储与当前组命令相关联的处置。所述装置进一步包含用于以下操作的装置:在当前组命令中尚未写入到存储器单元链的命令到达存储器单元链的结尾的情况下,或在分配列表中没有充足的空间来存储与当前组命令相关联的处置的情况下,提交处理器在当前组命令的写入之前存储在存储器单元链中的先前所确认的命令。
在附图中以及下文的描述中陈述一或多个实例的细节。将从描述和图式,且从所附权利要求书明白其它特征、目标和优点。
附图说明
图1是说明可经配置以实施本发明中所描述的一或多个实例技术的装置的框图。
图2是说明根据本发明中所描述的一或多个实例技术的存储在命令缓冲器中的所确认命令和未确认命令的概念图。
图3是说明根据本发明中所描述的一或多个实例技术的存储在命令缓冲器中的所确认命令和未确认命令的另一概念图。
图4是说明根据本发明中所描述的一或多个实例技术的实例操作的流程图。
图5是说明可经配置以实施本发明中所描述的一或多个实例技术的装置的框图。
具体实施方式
本发明中所描述的技术是针对将命令指令存储在命令缓冲器中。为了说明的目的,相对于处理器将用于图形处理单元(GPU)的命令指令存储在命令缓冲器中的方式来描述本发明的技术。
举例来说,在处理器(例如,中央处理单元(CPU))上执行的应用程序致使处理器产生图形数据,以及向另一处理器(例如,GPU)指示关于将处理数据(例如图形数据)的方式的指令。也在处理器上执行的图形驱动器将指令转换成GPU可处理的命令,并将图形数据转换成GPU可处理的数据包(例如,pm4数据包)。术语“pm4数据包”通常指代GPU可处理的数据包,例如命令或数据的包。处理器经由图形驱动器将命令和所产生的图形数据存储在系统存储器(例如,包含处理器和GPU的装置的存储器)中。一般来说,处理器经由图形驱动器将命令存储在系统存储器内的专用命令缓冲器中。处理器的操作系统可将系统存储器的一部分专用为命令缓冲器。
根据本发明中所描述的技术,在不具有命令缓冲器中是否有充足的空间来存储命令,或分配列表中是否有充足的空间用于与所述命令相关联的处置的第一确定的情况下,处理器可尝试将一组命令写入到命令缓冲器的存储器单元。可将所述命令缓冲器视为多个存储器单元的链,其中每一单元可存储多个命令。如果处理器能够将所述组命令写入存储器单元链中,且分配列表中有充足的空间用于与所述命令相关联的处置(下文更详细地描述),那么处理器可识别存储器单元的存储器单元中处理器完成了写入所述组命令的位置。存储器单元中处理器完成了写入所述组命令的位置称为确认点,且在确认点之前存储的命令称为所确认命令。处理器可接着从所述确认点开始写入下一组命令。
如果处理器在下一组命令的写入期间确定存储器单元链中没有充足的空间来写入下一组命令的所有命令,那么处理器可触发冲洗来将所有的所确认命令提交给GPU,供GPU最终执行。如果在下一组命令的写入之后,处理器确定分配列表中没有充足的空间用于与下一组命令相关联的处置,那么处理器可触发器冲洗来将所有所确认命令提交给GPU,以供GPU最终执行。
命令向GPU的递交以供最终执行(即,冲洗)允许处理器将存储器单元添加到存储器单元链,用于存储来自下一组命令的在冲洗之前未存储的任何其余命令。并且,所述命令的提交清理分配列表,这使分配列表的空间能够用于与下一组命令相关联的处置。
一般来说,当处理器向GPU提交所确认命令以供GPU最终执行时,可将处理器视为利用任何技术来使命令可用于执行。作为一个实例,处理器可将命令传送到用于GPU的命令缓冲器。作为另一实例,作为提交所确认命令的一部分,处理器可向GPU指示存储器单元的存储所确认命令以及确认点的位置的存储器地址,使得当GPU将要执行所确认命令时,GPU可确定从哪里存取所述命令。向GPU提交所确认命令的其它实例是可能的,且所述技术不应被视为限于上文的提交所确认命令的实例。
在一些其它技术中,在向命令缓冲器写入之前,处理器将确定当前存储器单元链中是否有充足的空间来存储所述命令,且分配列表中是否有充足的空间用于与所述命令相关联的处置。举例来说,处理器将确定需要存储的命令需要多少存储器空间,且确定存储器单元链中有多少空间是当前可用的。并且,处理器将确定与所述命令相关联的处置需要多少空间,以及分配列表中有多少空间当前可用于所述处置。如果没有充足的空间,那么处理器将执行冲洗操作。
举例来说,在这些其它技术中,如果存储器单元中没有充足的空间或分配列表中没有充足的空间,如在写入之前所确定,那么处理器将递交存储器单元中的命令以及分配列表,清理分配列表,将具有所提交命令的存储器单元从链中去除,并在需要的基础上(例如,作为冲洗操作的一部分),将更多的存储器单元添加到所述链。然而,提前确定需要多少存储器来存储所述命令,当前存储器单元链中多少存储器当前可用,所述处置需要分配列表中的多少空间,以及分配列表中多少空间当前可用于所述处置会消耗相当大的处理资源,且增加处理时间。
根据本发明中所描述的技术,如果存储器单元链中没有充足的空间用于所述命令,或如果分配列表中没有充足的空间用于与所述命令相关联的处置,那么处理器可不需要提前冲洗存储器单元链。相反,处理器可首先尝试写入所述命令,且如果在写入期间或在写入之后立即,处理器确定应冲洗存储器单元链,那么处理器冲洗所述存储器单元链。
应理解,尽管相对于GPU所执行的命令(例如,GPU命令产生)来描述本发明中所描述的技术,但所述技术不限于此。所述技术可扩展到与非GPU有关的命令产生,且可被视为适用于具有多相关性的命令的任何流产生器(例如,在处理器产生将由另一处理单元执行的命令的情况下)。
图1是说明可经配置以实施本发明中所描述的一或多个实例技术的装置的框图。举例来说,图1说明装置10。装置10的实例包含但不限于视频装置、媒体播放器、机顶盒、例如移动电话和所谓的智能电话等无线手持机、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等。
装置10包含处理器12、图形处理单元(GPU)14和系统存储器16。处理器12可为中央处理单元(CPU)。GPU14可为处理单元,其经配置以执行与图形有关的功能,例如产生和输出图形数据以供在显示器上呈现,以及执行与非图形有关的功能,其利用GPU14所提供的大规划处理并行性。举例来说,GPU14可执行图形应用程序和非图形应用程序两者。因为除图形处理能力之外,GPU14还可提供通用处理能力,所以GPU14可称为通用GPU(GP-GPU)。
处理器12和GPU14的实例包含但不限于数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA),或其它等效集成或离散逻辑电路。在一些实例中,GPU14可为经设计以用于特殊用法的微处理器,例如提供用于处理图形以及用于执行与非图形有关的应用程序的大规模并行处理。此外,尽管将处理器12和GPU14说明为分开的组件,但本发明的方面不限于此。举例来说,处理器12和GPU14可驻存在共用集成电路(IC)中。
系统存储器16为装置10的系统存储器,且可驻存在处理器12和GPU14外部(即,相对于处理器12在芯片外,且相对于GPU14在芯片外)。系统存储器16的实例包含但不限于随机存取存储器(RAM)、只读存储器(ROM)或电可擦除可编程只读存储器(EEPROM),或可用于以指令或数据结构的形式运载和存储所要的程序代码,且可由计算机或处理器存取的任何其它媒体。举例来说,可将系统存储器16视为上面存储有指令的存储媒体,所述指令在被执行时,致使一或多个处理器(例如,处理器12或GPU14)实施本发明中所描述的技术。在一些实例中,可将从装置10系统存储器16移除,且移到另一装置。在一些实例中,可将大体上类似于系统存储器16的存储装置插入装置10中。
系统存储器16可存储由处理器12和GPU14执行的应用程序。举例来说,处理器12可执行应用程序18、操作系统20和图形驱动器22。系统存储器16可存储用于应用程序18操作系统20和图形驱动器22的对象代码,处理器12检索所述对象代码来执行。并且,尽管未说明,但GPU14可执行与图形有关的着色器应用程序,例如顶点着色器、片段着色器、几何形状着色器等,且也可潜在地执行称为核心或计算着色器的与非图形有关的着色器应用程序。系统存储器16可商店此类与图形和非图形有关的着色器应用程序的对象代码以及可能源代码。
在一些实例中,系统存储器16可存储GPU14在执行命令时将要对其操作的数据。举例来说,所述数据可包含图元(例如,点、线、三角形、四边形、三角带等)的列表;然而,其它类型的数据也可存在。系统存储器16还可存储因GPU14执行命令或应用程序而产生的数据。举例来说,系统存储器16可存储纹理缓冲器、深度缓冲器、模版缓冲器、顶点缓冲器、帧缓冲器等的任何组合。
此外,系统存储器16可存储将由GPU14执行的命令,以及GPU14将利用的数据。举例来说,如所说明,处理器12可执行应用程序。应用程序18的实例包含视频游戏、网络浏览器、电子邮件,以及通常产生可见内容以供显示的任何应用程序。为了利用GPU14的图形处理,应用程序18可产生GPU14将执行的命令,以及作为所述命令的执行的一部分,GPU14将对其操作的数据。
在处理器12上执行的图形驱动器22可将所述命令转换成可由GPU14执行的命令。举例来说,图形驱动器22可转换所述命令,以使其符合图形应用编程接口(API),例如开放图形库API、开放图形库嵌入式系统(OpenGLES)API、DirectXAPI、X3DAPI、RenderManAPI、WebGLAPI,或任何其它公共或专有标准图形API。
如图1中所说明,系统存储器16包含缓冲器24和缓冲器26。缓冲器24和缓冲器26可一起形成命令缓冲器,其中图形驱动器22存储将由GPU14执行的命令。举例来说,缓冲器24可称为第一间接缓冲器(IB1),且缓冲器26可称为第二间接缓冲器(IB2)。利用缓冲器24和缓冲器26一起形成命令缓冲器可为在处理器12上执行的操作系统20的功能。举例来说,一些操作系统,例如操作系统20,可限制信息可存储在IB1例如,缓冲器24)中的方式。
为了克服操作系统20对IB1的限制,一些技术利用IB2(例如,缓冲器26)来以操作系统20不允许IB1的方式存储信息。在此类技术中,IB1存储参考,例如信息存储在IB2中何处的指针,且IB2存储实际信息。相对于一起形成命令缓冲器的IB1(例如,缓冲器24和IB2(例如,缓冲器26)来描述本发明中所描述的技术。然而,需要缓冲器24和缓冲器26两者来形成命令缓冲器可为操作系统20的限制。对于不同于操作系统20的操作系统,有可能在单个缓冲器(例如,缓冲器24或缓冲器26的一者中)形成命令缓冲器。
因此,出于说明的目的来描述缓冲器24和缓冲器26一起形成命令缓冲器,且不应将其视为限制性的。为了说明的目的,将所述技术描述为用处理器12,经由图形驱动器22,将命令存储在缓冲器26中,且将指示命令位于缓冲器26中何处的信息存储在缓冲器24中。
如上文所述,本发明中所描述的技术与将命令存储在命令缓冲器(例如,缓冲器24和缓冲器26)中有关。命令的一个实例是原子命令。原子命令是需要一起执行的一组命令。举例来说,GPU14可一起检索所述原子命令以供执行。在原子命令的执行期间,GPU14可不执行其它命令。举例来说,GPU14可不暂停所述原子命令中的命令的执行,执行另一组命令,且执行所述原子命令中的其余命令。因为GPU14可一起执行原子命令,所以将原子命令存储在一起可为合意的,从而允许GPU14一起检索所述原子命令以供执行。
出于说明的目的,相对于需要一起执行的一组命令来描述本发明的技术。举例来说,所述组命令形成原子命令。术语“原子操作”是与原子命令同义的另一术语。然而,本发明中所描述的技术不应被视为限于原子命令或操作,且通常适用于将命令存储在命令缓冲器中。
为了将命令存储在缓冲器26中,操作系统20可分配缓冲器26中的存储器空间,且图形驱动器22可将命令存储在缓冲器26中所分配的存储器空间中。在本发明中所描述的技术中,缓冲器26中所分配的存储器空间可呈多个存储器单元的形式。每一存储器单元可能够存储某一量的命令。
在一些实例中,处理器12,经由操作系统20,可分配缓冲器26中的第一存储器单元,且处理器12经由图形驱动器22,可将一组命令中的命令写入到第一存储器单元。如果所述组命令中存在需要写入的额外命令,那么经由操作系统20,可分配缓冲器26中的第二存储器单元,且处理器12经由图形驱动器22,可将所述组命令中的额外命令写入到第二存储器单元,以此类推,直到处理器12经由图形驱动器22完成所述组命令的写入为止。
在这些实例中,图形驱动器22可将指针信息存储在缓冲器24中,所述指针信息指示第一存储器单元、第二存储器单元等等位于缓冲器26中何处。举例来说,所述指针信息可为四个字节。在这个意义上,将所述组命令存储在缓冲器26中所需的第一存储器单元、第二存储器单元和任何额外存储器单元可概念上视为形成存储器单元链。应理解,第一存储器单元和第二存储器单元不一定需要存储在缓冲器26内的连续位置中。相反,使用缓冲器24中的指针信息,GPU14可能够检索一起存储在缓冲器26中的不同存储器单元上的所述组命令。
图形驱动器22可界定可链接在一起的存储器单元的最大数目(例如,界定链大小)。所述链大小可为用户可基于各种因素来配置的,例如系统存储器16的存储能力、关于一组命令中的命令的最大数目的假定等。举例来说,应用程序18可配置有应用程序18可发出的原子命令的最大或最小数目,且图形驱动器22可基于应用程序18可发出的原子命令的最大或最小数目来界定链大小。作为一个实例,应用程序18可发出需要至少两个存储器单元的原子命令,意味着最小链大小可为存储器单元。出于说明的目的,本发明描述四个存储器单元的链大小。然而,链大小可大于或小于四个存储器单元。
所述组命令的命令可与处置相关联。处置可为对处理相关联的命令所需的存储器的分配的参考。一般来说,可将处置视为所述命令对其进行操作的数据的描述符。举例来说,一组命令中的命令可对一组输入图形数据进行操作,且对输入图形数据的操作的结果可为一组输出图形数据。与所述命令相关联的处置可指示需要为输入图形数据和输出图形数据分配的存储器的量。作为一个实例,命令可指令GPU14对纹理数据执行操作。在此实例中,纹理数据可为与所述命令相关联的处置。
处理器12,经由操作系统20,可经配置以维持用于所述组命令的处置的分配列表。在一些实例中,系统存储器16可包含操作系统(OS)缓冲器27,其存储与所述组命令相关联的处置。OS缓冲器27不是在每个实例中都是必要的,且处理器12可实施用于维持处置的分配列表的任何技术。
当处理器12经由图形驱动器22,将写入一组命令时,处理器12经由操作系统20,可为与所述组命令相关联的处置创建分配列表。所述分配列表可为固定大小的阵列,其指示与所述命令相关联的处置。随着处理器12经由图形驱动器22将所述组命令写入到存储器单元链中的存储器单元,处理器12经由图形驱动器22,也可用于所述组命令中的命令相关联的处置来更新分配列表。
随着图形驱动器22将命令写入到存储器单元链的存储器单元且将相关联的处置写入到分配列表,存储器单元链的存储器单元和分配列表开始变满,且可能无法存储额外命令或处置。作为一个实例,图形驱动器22可将第一组命令写入到存储器单元链的存储器单元。在将第一组命令写入到链的存储器单元之后,如果图形驱动器22曾将第二组命令中的命令写入到存储器单元,那么所述链的所有四个存储器单元均将为满,且仍将存在需要写入的所述第二组命令中的命令。在此情况下,操作系统20可能无法分配另一个存储器单元,因为所述链的链大小为四个存储器单元。
作为另一实例,图形驱动器22可将第一组命令写入到存储器单元链的存储器单元,且将与第一组命令相关联的处置的信息存储在分配列表中。在此实例中,存储器单元中可存在充足的空间来存储第二组命令。然而,分配列表中可能没有充足的空间来存储与第二组命令相关联的处置。
在一些其它技术中,不同于图形驱动器22的图形驱动器可首先确定将一组命令写入链的存储器单元中所需的空间量,确定与所述组命令相关联的处置所需的空间量,确定存储器单元链的存储器单元中的可用空间的量,且确定分配列表中的可用空间的量。举例来说,在这些其它技术中,图形驱动器可调用VerifySpace/VerifyHandleSpace函数,以确定将一组命令写入链的存储器单元中所需的空间量,确定与所述组命令相关联的处置所需的空间量,确定存储器单元链的存储器单元中的可用空间的量,且确定分配列表中的可用空间的量。
在这些其它实例中,只有当存储器单元和分配列表中有充足的空间时,图形驱动器才将命令写入到存储器单元。如果存储器单元或分配列表中没有充足的空间,那么在这些其它技术中,图形驱动器可执行冲洗调用。下文更详细地描述冲洗调用。
图形驱动器在命令的写入之前确定将一组命令写入到链的存储器单元中所需的空间量、与所述组命令相关联的处置所需的空间量、存储器单元链的存储器单元中的可用空间量,以及分配列表中的可用空间的量时可能存在限制。举例来说,对于某些类型的应用程序18且对于某些情境来说,处理器12需要花费不合意量的处理资源来执行VerifySpace/VerifyHandleSpace函数是可能的。
VerifySpace/VerifyHandleSpace函数的执行可被视为小批量问题。举例来说,与处理器12需要检查已确定是否有充足的空间来存储命令和处置的存储区域的巨大量相比,需要写入的命令和处置的量可相对较小。换句话说,VerifySpace/VerifyHandleSpace函数可检查相对较大量的存储区域,以确保可写入较小量的数据,这可能导致处理低效。
本发明中所描述的技术描述基于确认的命令缓冲器队列产生技术,其中处理器12经由图形驱动器22,可尝试将一组命令写入到缓冲器26。如果在所述组命令的写入期间,处理器12经由图形驱动器22确定存储器单元链的存储器单元中没有充足的空间来存储所述组命令,那么处理器12经由图形驱动器22可执行冲洗调用。
以此方式,图形驱动器22可无需执行VerifySpace函数来提前确定存储器单元链的存储器单元中是否有充足的空间来存储所述组命令中的命令。换句话说,通过写入所述组命令中的命令,而不预先确定命令缓冲器(例如,缓冲器26)中的存储器单元链的存储器单元中是否有充足的空间,本发明中所描述的技术可促进处理效率,因为处理器12可无需浪费处理资源来确定存储器单元链的存储器单元中是否有充足的空间来存储所述组命令。
并且,在本发明中所描述的技术中,处理器12经由图形驱动器22,可在所述组命令的写入之后确定分配列表中是否有充足的空间用于与所述组命令相关联的处置。如果在所述组命令的写入之后,分配列表中没有充足的空间,那么处理器12经由图形驱动器22可执行冲洗调用。
以此方式,图形驱动器22可不需要执行VerifyHandle函数来提前确定分配列表中是否有充足的空间用于与所述组命令相关联的处置。换句话说,通过写入所述组命令中的命令,而不需要预先确定分配列表中是否有充足的空间用于与所述组命令相关联的处置,本发明中所描述的技术可促进处理效率,因为处理器12可无需浪费处理资源来确定分配列表中是否有充足的空间用于与所述组命令相关联的处置。
如上文所述,如果在所述组命令的写入期间,图形驱动器22确定命令缓冲器中的存储器单元链的存储器单元中没有充足的空间,或如果在所述组命令的写入之后,图形驱动器22确定分配列表中没有充足的空间用于与所述组命令相关联的处置,那么图形驱动器22可执行冲洗调用。所述冲洗调用可为图形驱动器22借此释放用以将命令写入到存储器单元中的空间或释放分配列表中用于与所述命令相关联的处置的空间的机制。
举例来说,冲洗调用的执行结果可为图形驱动器22向GPU14提交分配列表中有充足的空间用于其的已经写入的命令,以供最终执行。举例来说,命令的提交意味着GPU14可能够执行所述命令。作为一个实例,作为向GPU14提交命令的一种方式,图形驱动器22可向GPU14指示存储器单元的存储命令的存储器地址,使得GPU14可检索所述命令以供最终执行。一般来说,提交命令可被视为图形驱动器22利用任何技术来使所述命令可用于GPU14以供最终执行。GPU14可立即执行所述命令,或基于GPU14将执行所述命令的时间,而在稍迟的时间执行所述命令。
另外,冲洗调用的执行结果可为图形驱动器22将存储已经写入的命令的存储器单元从存储器单元链释放。举例来说,假定处理器12经由图形驱动器22写入填满第一存储器单元和第二存储器单元,且部分地填满第三存储器单元的第一组命令。并且,假定在此实例中,分配列表中有充足的空间用于与所述第一组命令相关联的处置。
在此实例中,处理器12经由图形驱动器22,可从处理器12完成将第一组命令写入第三存储器单元中的位置开始,写入第二组命令。举例来说,可将第一组命令视为前一组命令,且可将第二组命令视为当前组命令。然而,在此实例中,处理器12可能无法将第二(例如,当前)组命令中的所有命令写入第三存储器单元和第四存储器单元的剩余部分中。在此实例中,链大小可为四个存储器单元,且因此图形驱动器22可能无法将第四存储器单元之后的存储器单元链接在存储器单元链中。
在图形驱动器22用来自第二组命令的命令填满第四存储器单元之后,处理器12经由图形驱动器22,可执行冲洗调用。作为响应,处理器12经由图形驱动器22,可向GPU14提交第一组命令以供最终执行(例如,通过指示存储第一组命令的位置来使其可用)。处理器12经由图形驱动器22能够写入存储器单元中的第二组命令中的命令保持在存储器单元中,且尚未提供给GPU14。
并且,响应于冲洗调用的执行,处理器12经由图形驱动器22可将第一存储器单元和第二存储器单元从存储器单元链释放,因为第一存储器单元和第二存储器单元仅存储第一组命令中的命令。将存储器单元从存储器单元链释放可意味着破坏所述存储器单元与链中的其它存储器单元的链接。处理器12经由图形驱动器22,可能无法将第三存储器单元从存储器单元链释放,因为第三存储器单元的至少一部分存储第二组存储器单元的命令。
通过将第一存储器单元和第二存储器单元从存储器单元链释放,存储器单元链可包含两个存储器单元(例如,第三存储器单元和第四存储器单元)。因为链大小为四个存储器单元,所以在此实例中,操作系统20可分配缓冲器26中的另一存储器单元,且图形驱动器22可将此新的存储器单元链接到前第四存储器单元的结尾。
在此接合处,存储器单元链中可存在三个存储器单元(即,先前的第三和第四存储器单元,以及新链接的存储器单元)。图形驱动器22可接着将第二组命令中的其余命令(即,在图形驱动器22填满第四存储器单元之后剩余的命令)写入新链接的存储器单元中。如果图形驱动器22无法将第二组命令中的所有剩余命令写入新链接的存储器单元中,那么操作系统20可分配缓冲器26中的另一存储器单元,且图形驱动器22可将此新的存储器单元链接到存储器单元链的三个存储器单元,从而产生具有四个存储器单元(其为链大小)的存储器单元链。
此外,冲洗调用的执行导致分配列表为所述处置的复位。举例来说,除提供第一组命令以供GPU14最终执行之外,处理器12经由图形驱动器22可清理分配列表,并将与第二组命令相关联的处置存储在分配列表中。
在以上实例中,假定在写入第一组命令之后,分配列表中有充足的空间用于与第一组命令相关联的处置。并且,在以上实例中,处理器12经由图形驱动器22确定哪些命令将作为冲洗调用的一部分提交。下文描述处理器12经由图形驱动器22可确定分配列表中是否有充足的空间用于相关联的处置的方式,以及处理器12经由图形驱动器22可确定哪些命令将作为冲洗调用的部分提交的方式。
举例来说,在一组命令的写入期间,图形驱动器22可周期性地触发GetCmdSpace函数,而不预先检验存储器单元中是否有充足的空间用于所述组命令。GetCmdSpace函数可指示图形驱动器22是否已到达位于存储器单元链结尾处的存储器单元的结尾(即,图形驱动器22是否已到达具有四个存储器单元的链大小的存储器单元链的第四存储器单元)。如果GetCmdSpace函数指示图形驱动器22尚未到达存储器单元链的结尾,那么图形驱动器22可保持写入第一组命令中的命令。
如果GetCmdSpace函数指示图形驱动器22已到达存储器单元链的结尾,那么图形驱动器22可执行冲洗调用,如上文所述。并且,图形驱动器22可接着重新尝试GetCmdSpace函数。举例来说,冲洗调用可释放空间,用于链接操作系统20分配的额外存储器单元,且图形驱动器22可接着重新尝试GetCmdSpace函数,这将指示图形驱动器22尚未到达存储器单元链的结尾。
然而,在一些情况下,图形驱动器22可完成写入所述组命令中的命令,且存储器单元中仍可存在可用于来自后续组命令的额外命令的空间。在此情况下,处理器12经由图形驱动器22可执行“确认-写入”命令(称为ConfirmWrite)。一般来说,在将所述组命令中的命令写入到命令缓冲器之后,处理器12经由图形驱动器22可执行确认-写入命令。确认-写入命令的执行可服务一或多个目的。
通过执行所述确认-写入命令,图形驱动器22可指示存储器单元中图形驱动器22完成写入所述组命令的点,使得图形驱动器22可从存储器单元中图形驱动器22完成写入所述组命令的点开始,开始写入用于下一组命令的命令。存储器单元中的所述组命令的结尾的位置称为“确认点”。
举例来说,假定处理器12经由图形驱动器22将第一组命令中的命令写入第一存储器单元、第二存储器单元中,且部分地写入第三存储器单元中。在此实例中,处理器12经由图形驱动器22可识别第三存储器单元中图形驱动器22完成了写入第一组命令(例如,前一组命令)的确认点。举例来说,图形驱动器22完成将第一组命令写入第三存储器单元中之处为第三存储器单元中的第一组命令的结尾的位置。在此情况下,在识别确认点之后,可将第一组命令视为先前所确认的命令。当写入第二组命令(其现在为当前组命令)时,处理器12经由图形驱动器22可开始从第三存储器单元中的确认点开始写入第二组命令。
另外,通过执行确认-写入命令,图形驱动器22可确定分配列表中是否有充足的空间用于与所述组命令中的命令相关联的处置。举例来说,当图形驱动器22正写入一组命令中的命令时,处理器12经由图形驱动器22可执行AddPendingHandle()函数。使用AddPendingHandle函数,图形驱动器22可将与所述组命令相关联的处置添加到临时分配列表,也称为未确认处置列表。
在写入所述组命令之后,所述未确认处置列表包含与所述组命令相关联的处置。图形驱动器22可接着尝试向操作系统20提交所述未确认处置列表中的处置。举例来说,处理器12经由图形驱动器22可执行AddHandle()函数。使用AddHandle()函数,图形驱动器22可向操作系统20提交未确认处置列表中的处置。作为响应,处理器12经由操作系统20可确定分配列表中是否有充足的空间用于所述未确认处置列表的处置。
举例来说,分配列表可包含前一组命令的处置,且假定前一组命令的处置使用分配列表的阵列的90%。在此实例中,图形驱动器22可提交未确认处置列表中的处置,且如果未确认处置列表中的处置需要所述分配列表的小于10%,那么图形驱动器22可将未确认处置列表中的处置存储在分配列表中。在一些实例中,图形驱动器22可尝试将未确认处置列表中的处置存储到分配列表中,而不首先确定分配列表中是否有充足的空间来自未确认处置列表的处置。
然而,如果未确认处置列表中的处置需要分配列表的多于10%(例如,将未确认处置列表中的处置存储到分配列表的尝试不成功),那么图形驱动器22可执行冲洗调用。响应于所述冲洗调用,处理器12经由图形驱动器22,可向GPU14提交存储在命令缓冲器中分配列表当前存储针对其的相关处置的命令,以及分配列表中的相关联的处置,以供最终执行。并且,响应于冲洗调用,处理器12经由操作系统20可使分配列表复位(即,清除具有处置的分配列表),其又允许图形驱动器22将与刚写入的那组命令相关联的处置存储在分配列表中。
以此方式,可将确认-写入命令的执行视为指示可响应于冲洗调用向GPU14提交哪些命令和相关联的处置。举例来说,假定图形驱动器22正写入第一组命令,那么图形驱动器22正维持未确认处置列表(例如,经由AddPendingHandle()函数)。并且,假定图形驱动器22能够将第一组命令中的所有命令写入存储器单元链的存储器单元内。
在此实例中,在写入第一组命令之后,图形驱动器22可执行确认-写入(ConfirmWrite)命令。作为确认-写入命令的一部分,图形驱动器22可(例如,经由AddHandle()函数)向操作系统20提交未确认处置列表。在此实例中,假定分配列表中有充足的空间用于未确认处置列表的处置。因此,图形驱动器22可将未确认处置列表的处置添加到分配列表,并清理未确认处置列表。因为图形驱动器22曾能够将未确认处置列表的处置添加到分配列表,所以作为确认-写入命令的一部分,图形驱动器22可识别图形驱动器完成了写入第一组命令的点(即,确认点)。举例来说,图形驱动器22可在存储器单元中的第一组命令的结尾的位置处识别确认点。处理器12经由图形驱动器22可能尚未提交第一组命令,且可等待直到冲洗调用为止。
在此接合处,可将处理器12视为已写入一帧。如本发明中所使用,术语帧与一组命令同义使用。所述术语帧不应与经渲染图像混淆,经渲染图像有时也称为帧。
在本发明中所描述的技术中,在处理器12经由图形驱动器22执行确认-写入命令,且确认-写入命令的执行成功(即,分配列表中有充足的空间)之后,处理器12经由图形驱动器22,可指示第一组命令为“所确认命令”。处理器12经由图形驱动器22也可识别哪些存储器单元仅存储所确认命令。
举例来说,假定处理器12经由图形驱动器22用第一组命令填充存储器单元链的第一存储器单元、第二存储器单元,且部分地填充第三存储器单元。在此实例中,第一存储器单元和第二存储器单元仅存储所确认命令,且图形驱动器22可指示第一存储器单元和第二存储器单元仅包含所确认命令。举例来说,图形驱动器22可维持用于存储器单元链的每一存储器单元的变量usedEntries。
对于仅存储所确认命令的存储器单元,图形驱动器22针对那些存储器单元,可将变量usedEntries设置为等于confirmedEntries。在此实例中,对于第一存储器单元和第二存储器单元,图形驱动器22可将变量usedEntries设置为等于confirmedEntries,以指示第一存储器单元和第二存储器单元仅存储所确认命令。相对于第三存储器单元,图形驱动器22可将变量usedEntries设置为不是confirmedEntries(即,usedEntries!=confirmedEntries)。这可能是因为第三存储器单元仅部分地包含所确认命令。
处理器12经由图形驱动器22,可接着从所述确认点开始,将第二组命令写入到存储器单元链的存储器单元。举例来说,如果第一组命令为帧0,那么处理器12经由图形驱动器22,可从所述确认点开始,向存储器单元链的存储器单元写入帧1,其为第二组命令。
在写入第二组命令期间,图形驱动器22可将与第二组命令相关联的处置存储在未确认处置列表中。如果在第二组命令的写入期间,图形驱动器22到达存储器单元链的结尾,且第二组命令中有命令尚未写入,那么图形驱动器22可执行冲洗调用。
作为响应,图形驱动器22可提交所有所确认命令以及与所述所确认命令相关联的处置(例如,提交第一组命令以及分配列表中与所述第一组命令相关联的处置)。换句话说,图形驱动器22可提交确认点之前的所有命令及其相关联的处置。举例来说,继续先前的实例,图形驱动器22可提交第一和第二存储器单元中的所有命令,以及部分地填满第三存储器单元的所确认命令,直到确认点为止。图形驱动器22还可提供分配列表中的处置,并清理所述分配列表。
图形驱动器22还可将第一和第二存储器单元从存储器单元链释放,并将第二组命令中的其余命令写入操作系统20所分配的额外存储器单元中。对于不存储任何所确认命令的存储器单元,图形驱动器22可将用于那些存储器单元的变量confirmedEntries设置为等于0。在写入第二组命令之后,图形驱动器22可接着执行确认-写入命令。在此情况下,因为在冲洗第一组命令之后,图形驱动器22清理了分配列表,所以分配列表中将有充足的空间用于与第二组命令相关联的处置,其临时存储在未确认处置列表中。并且,响应于确认-写入命令,可将第二组命令视为所确认命令,且图形驱动器22可将确认点移到图形驱动器22完成了写入第二组命令的结尾。
在以上情况下,在第二组命令的写入期间,图形驱动器22到达存储器单元链的结尾,其中第二组命令中具有尚未写入到存储器单元链的命令。在一些实例中,图形驱动器22可写入第二组命令中的所有命令,且仍未到达存储器单元链的结尾。在这些实例中,因为图形驱动器22能够写入第二组命令中的所有命令,且仍未到达存储器单元链的结尾,所以图形驱动器22可不执行冲洗调用,且因此可不提交第一组命令(即,所确认命令),且可不清理与第一组命令相关联的处置的分配列表。
并且,在这些实例中,在写入第二组命令中的所有命令之后,处理器12经由图形驱动器22可执行确认-写入命令。作为确认-写入命令的一部分,图形驱动器22可尝试将未确认处置列表中的处置添加到分配列表。在此情况下,分配列表可包含与第一组命令相关联的处置。如果将第二组命令的处置添加于未确认处置列表中并不要求分配列表存储比其固定大小将允许的处置多的处置,那么图形驱动器22将第二组命令的处置添加到分配列表,清理未确认处置列表,并将确认点移到第二组命令的结尾。
如果将第二组命令的处置添加于未确认处置列表中要求分配列表存储比其固定大小将允许的处置多的处置,那么图形驱动器22可执行冲洗调用。作为响应,图形驱动器22可提交所有的所确认命令(例如,第一组命令)和相关联的处置,清理分配列表,并释放仅存储所确认命令的存储器单元。图形驱动器22可接着将第二组命令的处置存储在刚清理的处置分配列表中,将确认点移到第二组命令的结尾,且指示第二组命令为所确认命令。
图2是说明根据本发明中所描述的一或多个实例技术的存储命令缓冲器中的所确认命令和未确认命令的概念图。图3是说明根据本发明中所描述的一或多个实例技术的存储在命令缓冲器中的所确认命令和未确认命令的另一概念图。图2说明实例情况,其中因为图形驱动器22填满存储器单元链的存储器单元,一组命令中有尚未写入的额外命令,所以图形驱动器22执行冲洗调用。图3说明实例情况,其中图形驱动器22写入一组命令中的所有命令,但由于分配列表中缺乏空间而执行冲洗调用。
举例来说,在图2和3中,存储器单元链包含存储器单元A、存储器单元B、存储器单元C和存储器单元D。图形驱动器22可经由其相应的指针来参考存储器单元A、B、C和D,所述指针识别缓冲器26中存储器单元A、B、C和D所驻存的位置。举例来说,图2和3说明IB2链头指针,其指向存储器单元链中的第一存储器单元(例如,存储器单元A)。操作系统20可将用于IB2链头指针的信息存储在缓冲器24(例如,IB1缓冲器)中,且存储器单元A、B、C和D可驻存在缓冲器26中。
在图2和3中,图形驱动器22可将第一组命令写入存储器单元A、存储器单元B中,且部分地写入存储器单元C中(由Cpartial指示)。在第一组命令的写入之后,图形驱动器22可执行确认-写入命令。在图2和3中的实例中,图形驱动器22能够将与第一组命令相关联的处置存储在分配列表中。在图2和3中的实例中,图形驱动器22可识别存储器单元C中间的确认点(例如,在Cpartial的结尾)。
因为图形驱动器22能够将第一组命令中的所有命令写入存储器单元链的存储器单元中,且能够将与第一组命令相关联的处置存储在分配列表中,所以可将第一组命令视为所确认命令,如用灰色影线说明。并且,如所说明,因为存储器单元A和B仅存储所确认命令,所以图形驱动器22可将usedEntries变量设置为等于confirmedEntries。因为存储器单元C仅部分地存储所确认命令,所以图形驱动器22可将usedEntries变量设置为不等于confirmedEntries。
在图2和3中,图形驱动器22可接着从所述确认点开始,将第二组命令写入到存储器单元链。举例来说,图形驱动器22可维持指示图形驱动器22将在何处开始写入所述组命令的指针(称为开始指针)。最初,开始指针指向IB2链头指针。在确认-写入命令的成功执行之后,图形驱动器22可将开始指针移到确认点。举例来说,在图2和3中,图形驱动器22可将开始指针移到Cpartial的结尾处。
在图2和3中,用未确认命令来说明第二组命令的写入。第二组命令是未确认命令,因为图形驱动器22尚未成功执行确认-写入命令。在图2和3中,图形驱动器22需要写入第二组命令中的命令,其填满存储器单元C(Cnext),且填满(图2中)或部分地填满(图3中)存储器单元D。因为存储器单元D仅存储未确认命令,所以将存储器单元D的confirmedEntries设定为等于。
在图2中,图形驱动器22可写入第二组命令,且到达存储器单元链的结尾,其中所述组命令仍有命令尚未写入。在此情况下,图形驱动器22可执行冲洗调用,且可向GPU14提交所有所确认命令,以供最终执行。
在图3中,图形驱动器22能够将第二组命令中的所有命令写入存储器单元链内(即,仅填充存储器单元D,直到Dpartial为止)。在图3中,图形驱动器22可执行确认-写入调用;然而,在此情况下,分配列表中可能没有充足的空间用于与第二组命令相关联的处置。举例来说,在第二组命令的写入期间,图形驱动器22可将与第二组命令相关联的处置临时存储在未确认处置列表中。通过执行确认-写入命令,图形驱动器22可尝试将未确认处置列表中的处置添加到分配列表。然而,分配列表可能已经包含与第一组命令(即,所确认命令)相关联的处置,且分配列表中可能没有充足的空间供图形驱动器22将与第二组命令相关联的处置添加到分配列表。在此情况下,图形驱动器22可执行冲洗调用,且可向GPU14提交所有所确认命令和相关联处置,以供最终执行。
在一些实例中,作为提交所确认命令的一部分,图形驱动器22可向GPU14指示存储所确认命令的存储器单元的开始指针和相应指针的位置。另外,图形驱动器22可向GPU14指示指向确认点的指针。GPU14可接着能够基于所指示的指针,从命令缓冲器(例如,缓冲器26)一起检索所有的所确认命令。在图形驱动器22确认下一组命令之后,指向当前确认点的指针变为下一组命令的开始指针,且新确定的确认点(即,图形驱动器22完成写入第二组命令之处)变为所确认命令的结束点。
以此方式,所述技术利用基于确认的方法来指示哪些命令准备好提交给GPU14以供最终执行。基于确认的方法允许图形驱动器22将命令写入到命令缓冲器,而无需提前确定存储器单元中是否有充足的空间来存储命令,或分配列表中是否有充足的空间用于所述处置。当图形驱动器22在命令的写入期间确定存储器单元中没有充足的空间时,图形驱动器22执行冲洗调用,而不在写入命令之前发出冲洗调用。并且,当图形驱动器22在命令的写入之后确定分配列表中没有充足的空间用于与所述命令相关联的处置时,图形驱动器22执行冲洗调用,而不在写入所述命令之前发出冲洗调用。
图4是说明根据本发明中所描述的一或多个实例技术的实例操作的流程图。出于说明的目的,参看图1来描述所述技术。
处理器12经由图形驱动器22,可从当前确认点开始,将当前组命令写入到命令缓冲器的存储器单元链的存储器单元(40)。举例来说,在写入当前组命令之前,处理器12可能已将前一组命令写入到存储器单元链,且可能也已将与所述前一组命令相关联的处置写入到临时列表(例如,写入未确认处置列表中)。
在写入所述前一组命令之后,处理器12可能已执行了确认-写入(例如,ConfirmWrite)命令。在此实例中,假定在所述前一组命令的写入期间,存储器单元链中有充足的空间来存储所述前一组命令的全部,而未到达存储器单元链的结尾(例如,前一组命令中无命令未写入到存储器单元链)。作为确认-写入命令的执行的一部分,处理器12可能已将临时列表中的处置存储到分配列表中(例如,分配列表中有充足的空间用于前一组命令的处置)。在此实例中,作为确认-写入命令的执行的一部分,处理器12可识别当前确认点,其为存储器单元中处理器12完成写入所述前一组命令的点。因此,对于当前组命令,处理器12可从当前确认点开始写入当前组命令中的命令。
处理器12经由图形驱动器22,可在当前组命令的写入期间,将与当前组命令相关联的处置存储在临时列表中(例如,未确认处置列表中)(42)。举例来说,处理器12可创建新的临时列表,并将与当前组命令相关联的处置存储在此新创建的临时列表中。作为另一实例,处理器12可清理先前临时列表,并将与当前组命令相关联的处置存储在此现在干净的临时列表中。举例来说,在将来自临时列表的与前一组命令相关联的处置存储到分配列表中之后,处理器12可清理临时列表,从而允许处理器12将与当前组命令相关联的处置存储在临时列表中。
如所说明,处理器12经由图形驱动器22,可确定在当前组命令的写入期间,当前组命令中尚未写入到存储器单元链的命令是否到达存储器单元链的结尾(44)。如果处理器12经由图形驱动器22以当前组命令中尚未写入的命令到达存储器单元链的结尾(44的是),那么处理器12经由图形驱动器22,可提交先前所确认的命令以供最终执行(46)。
举例来说,先前所确认的命令可为当前确认点之前先前由处理器12存储在存储器单元链中的命令(例如,前一组命令)。举例来说,先前所确认的命令可为在处理器12能够为其确认存储器单元链中有充足的空间且分配列表中有充足的空间来存储与所述前一组命令相关联的处置的当前组命令的写入之前,由处理器12存储在存储器单元链中的前一组命令。
如果处理器12经由图形驱动器22在写入当前组命令之后未到达存储器单元链的结尾(44的否),那么处理器12经由图形驱动器22可确定分配列表中是否有充足的空间来存储与当前组命令相关联的处置(48)。举例来说,处理器12经由图形驱动器22可确定将临时列表中的处置添加到分配列表是否需要分配列表中比可用空间多的空间。
作为一个实例,处理器12可执行确认-写入命令,作为执行的一部分,处理器12可尝试将临时列表中的处置添加到分配列表。如果处置的添加不成功,那么处理器12可确定将临时列表中的处置添加到分配列表需要分配中比可用空间多的空间。如果处置的添加是成功的,那么处理器12可确定将临时列表中的处置添加到分配列表不需要分配列表中比可用空间多的空间。以此方式,处理器12可不需要提前确定分配列表中是否有充足的空间来存储临时列表中的处置,而是可尝试将临时列表中的处置添加到分配列表,而不首先检查分配列表中是否有充足的空间。
如果处理器12经由图形驱动器22确定分配列表中没有充足的空间来存储与当前组命令相关联的处置(48的否),那么处理器12经由图形驱动器22可提交先前所确认的命令以供最终执行,如上文所述(46)。如果处理器12经由图形驱动器22确定分配列表中有充足的空间来存储与当前组命令相关联的处置(48的是),那么处理器12经由图形驱动器22可将确认点移到当前组命令的结尾(50)。另外,图形驱动器22可将与当前组命令相关联的处置存储在分配列表中。
处理器12可确定是否有额外的一组命令需要写入到命令缓冲器(52)。如果有额外的一组命令需要写入(52的是),那么可将所述额外的一组命令视为当前组命令,可将原来的当前组命令视为先前所确认的命令,且可将处理器12将确认点移到的点视为当前确认点。处理器12可接着从当前确认点(新移动到的确认点)开始将当前组命令写入到存储器单元链的存储器单元(40)。处理器12可接着重复图4中所说明的实例步骤。如果没有额外的一组命令需要写入(52的否),那么处理器12可结束命令组的写入,直到有一组命令需要写入为止。
图5是说明可经配置以实施本发明中所描述的一或多个实例技术的装置的框图。举例来说,图5说明实例装置58。装置58可为图5中更详细地说明的图1的装置10的一个实例。在图5的实例中,装置58可包含处理器12、GPU14和系统存储器16。为了简明的目的,未相对于图5进一步描述处理器12、GPU14和系统存储器16,因为先前已相对于图1描述了这些组件。装置58还可包含显示处理器60、收发器模块62、用户接口64和显示器66。收发器模块62和显示处理器60两者可为与处理器12和/或GPU14相同的集成电路(IC)的部分,两者可在包含处理器12和/或GPU14的IC外部,或可形成于包含处理器12和/或GPU14的IC外部的IC中。
装置58可包含图5中为了清楚的目的而未展示的额外模块或单元。举例来说,装置58可包含扬声器和麦克风(两者均未在图5中展示)以实现其中装置58为移动无线电话的实例中的电话通信,或在装置58为媒体播放器的情况下,包含扬声器。装置58还可包含摄像机。此外,装置58中所示的各种模块和单元可能不是装置58的每个实例中必需的。举例来说,在其中装置58为桌上型计算机或经配备以与外部用户接口或显示器介接的其它装置的实例中,用户接口64和显示器66可在装置58外部。
用户接口64的实例包含但不限于轨迹球、鼠标、键盘和其它类型的输入装置。用户接口64也可为触摸屏,且可作为显示器66的一部分而并入。收发器模块62可包含允许装置58与另一装置或网络之间的无线或有线通信的电路。收发器模块62可包含调制器、解调器、放大器,以及其它用于有线或无线通信的此类电路。
在一些实例中,GPU14可将完全形成的图像存储在系统存储器16中。显示处理器60可从系统存储器16检索图像,并输出致使显示器66的像素点亮以显示所述图像的值。显示器66可为装置10的显示GPU14所产生的图像内容的显示器。显示器66可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子体显示器或另一类型的显示装置。
在一或多个实例中,所描述的功能可在硬件、软件、固件或其任何组合中实施。如果在软件中实施,那么所述功能可存储在计算机可读媒体上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中所描述的技术的指令、代码和/或数据结构的任何可用媒体。以实例方式而非限制方式,此计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置。磁盘和光盘,如本文所使用,包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘以及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述各项的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA),或其它等效集成或离散逻辑电路。因此,术语“处理器”在本文中使用时,可指代适合实施本文所描述的技术的前述结构或任何其它结构中的任一者。并且,所述技术可完全在一或多个电路或逻辑元件中实施。
本发明的技术可在各种各样的装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元来强调经配置以执行所揭示技术的装置的功能方面,但不一定要求通过不同硬件单元来实现。相反,如上文所描述,各种单元可在硬件单元中组合,或由相互操作的硬件单元的集合(包括如上文所述的一或多个处理器)结合合适的软件和/或固件提供。
已描述了各种实例。这些和其它实例在所附权利要求的范围内。

Claims (32)

1.一种用于存储命令的方法,所述方法包括:
用处理器,从存储器单元中的一存储器单元中的当前确认点开始,将当前组命令写入到命令缓冲器中的存储器单元链;
用所述处理器,确定以下各项中的至少一者:
在所述当前组命令的所述写入期间,所述当前组命令中尚未写入到所述存储器单元链的命令是否到达所述存储器单元链的结尾;以及
在所述当前组命令的所述写入之后,分配列表中是否有充足的空间来存储与所述当前组命令相关联的处置;以及
如果基于所述确定,所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾,或如果基于所述确定,所述分配列表中没有充足的空间来存储与所述当前组命令相关联的处置,那么用所述处理器,提交所述处理器在所述当前组命令的所述写入之前存储在所述存储器单元链中的先前所确认的命令。
2.根据权利要求1所述的方法,其进一步包括:
在所述当前组命令的所述写入期间,将与所述当前组命令相关联的所述处置存储在临时列表中,
其中确定所述分配列表中是否有充足的空间包括通过尝试将所述临时列表中的所述处置添加到所述分配列表,来确定将所述临时列表中的所述处置添加到所述分配列表是否需要所述分配列表中比可用多的空间。
3.根据权利要求1所述的方法,其进一步包括:
如果在写入所述当前组命令之后,所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置,那么将与所述当前组命令相关联的所述处置存储在所述分配列表中;以及
如果在写入所述当前组命令之后,所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置,那么将所述当前确认点移到另一存储器单元。
4.根据权利要求1所述的方法,其进一步包括:
从所述存储器单元链释放在其中识别所述当前确认点的所述存储器单元之前的存储器单元;以及
如果所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾,那么将一或多个额外存储器单元分配给所述存储器单元链。
5.根据权利要求1所述的方法,其进一步包括:
如果所述分配列表中没有充足的空间来存储与所述当前组命令相关联的所述处置,那么清理所述分配列表。
6.根据权利要求1所述的方法,其中从所述存储器单元中的所述当前确认点开始将所述当前组命令写入所述存储器单元链中包括将所述当前组命令写入所述存储器单元链中,而不需要确定所述存储器单元链中是否有充足的空间来存储所述当前组命令。
7.根据权利要求1所述的方法,其中从所述存储器单元中的所述当前确认点开始将所述当前组命令写入所述存储器单元链中包括将所述当前组命令写入所述存储器单元链中,而不需要确定所述分配列表中是否有充足的空间来存储与所述当前组命令相关联的所述处置。
8.根据权利要求1所述的方法,其中所述处理器包括第一处理器,且其中所述当前组命令用于供第二不同处理器执行。
9.根据权利要求8所述的方法,其中所述第一处理器包括中央处理单元CPU,且所述第二处理器包括图形处理单元GPU。
10.一种装置,其包括:
系统存储器,其包括命令缓冲器;以及
处理器,其经配置以:
从存储器单元中的一存储器单元中的当前确认点开始,将当前组命令写入到所述命令缓冲器中的存储器单元链;
确定以下各项中的至少一者:
在所述当前组命令的所述写入期间,所述当前组命令中尚未写入到所述存储器单元链的命令是否到达所述存储器单元链的结尾;以及
在所述当前组命令的所述写入之后,分配列表中是否有充足的空间来存储与所述当前组命令相关联的处置;以及
如果基于所述确定,所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾,或如果基于所述确定,所述分配列表中没有充足的空间来存储与所述当前组命令相关联的处置,那么提交所述处理器在所述当前组命令的所述写入之前存储在所述存储器单元链中的先前所确认的命令。
11.根据权利要求10所述的装置,其中所述处理器经配置以:
在所述当前组命令的所述写入期间,将与所述当前组命令相关联的所述处置存储在临时列表中,
其中为了确定所述分配列表中是否有充足的空间,所述处理器经配置以通过尝试将所述临时列表中的所述处置添加到所述分配列表,来确定将所述临时列表中的所述处置添加到所述分配列表是否需要所述分配列表中比可用多的空间。
12.根据权利要求10所述的装置,其中所述处理器经配置以:
如果在写入所述当前组命令之后,所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置,那么将与所述当前组命令相关联的所述处置存储在所述分配列表中;以及
如果在写入所述当前组命令之后,所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置,那么将所述当前确认点移到另一存储器单元。
13.根据权利要求10所述的装置,其中所述处理器经配置以:
从所述存储器单元链释放在其中识别所述当前确认点的所述存储器单元之前的存储器单元;以及
如果所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾,那么将一或多个额外存储器单元分配给所述存储器单元链。
14.根据权利要求10所述的装置,其中所述处理器经配置以:
在所述分配列表中没有充足的空间来存储与所述当前组命令相关联的所述处置的情况下,清理所述分配列表。
15.根据权利要求10所述的装置,其中所述处理器经配置以将所述当前组命令写入所述存储器单元链中,而不需要确定所述存储器单元链中是否有充足的空间来存储所述当前组命令。
16.根据权利要求10所述的装置,其中所述处理器经配置以将所述当前组命令写入所述存储器单元链中,而不需要确定所述分配列表中是否有充足的空间来存储与所述当前组命令相关联的所述处置。
17.根据权利要求10所述的装置,其中所述处理器包括第一处理器,所述装置进一步包括第二不同处理器,且其中所述当前组命令用于供所述第二处理器执行。
18.根据17所述的装置,其中所述第一处理器包括中央处理单元CPU,且所述第二处理器包括图形处理单元GPU。
19.一种上面存储有指令的计算机可读存储媒体,所述指令在被执行时致使一或多个处理器:
从存储器单元中的一存储器单元中的当前确认点开始,将当前组命令写入到命令缓冲器中的存储器单元链;
确定以下各项中的至少一者:
在所述当前组命令的所述写入期间,所述当前组命令中尚未写入到所述存储器单元链的命令是否到达所述存储器单元链的结尾;以及
在所述当前组命令的所述写入之后,分配列表中是否有充足的空间来存储与所述当前组命令相关联的处置;以及
如果基于所述确定,所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾,或如果基于所述确定,所述分配列表中没有充足的空间来存储与所述当前组命令相关联的处置,那么提交所述一或多个处理器在所述当前组命令的所述写入之前存储在所述存储器单元链中的先前所确认的命令。
20.根据权利要求19所述的计算机可读存储媒体,其进一步包括致使所述一或多个处理器进行以下动作的指令:
在所述当前组命令的所述写入期间,将与所述当前组命令相关联的所述处置存储在临时列表中,
其中致使所述一或多个处理器确定所述分配列表中是否有充足的空间的所述指令包括致使所述一或多个处理器进行以下动作的指令:通过尝试将所述临时列表中的所述处置添加到所述分配列表,来确定将所述临时列表中的所述处置添加到所述分配列表是否需要所述分配列表中比可用多的空间。
21.根据权利要求19所述的计算机可读存储媒体,其进一步包括致使所述一或多个处理器进行以下动作的指令:
如果在写入所述当前组命令之后,所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置,那么将与所述当前组命令相关联的所述处置存储在所述分配列表中;以及
如果在写入所述当前组命令之后,所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置,那么将所述当前确认点移到另一存储器单元。
22.根据权利要求19所述的计算机可读存储媒体,其进一步包括致使所述一或多个处理器进行以下动作的指令:
从所述存储器单元链释放在其中识别所述当前确认点的所述存储器单元之前的存储器单元;以及
如果所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾,那么将一或多个额外存储器单元分配给所述存储器单元链。
23.根据权利要求19所述的计算机可读存储媒体,其进一步包括致使所述一或多个处理器进行以下动作的指令:
如果所述分配列表中没有充足的空间来存储与所述当前组命令相关联的所述处置,那么清理所述分配列表。
24.根据权利要求19所述的计算机可读存储媒体,其中致使所述一或多个处理器从所述存储器单元中的所述当前确认点开始将所述当前组命令写入所述存储器单元链中的所述指令包括:致使所述一或多个处理器将所述当前组命令写入所述存储器单元链中,而不需要确定所述存储器单元链中是否有充足的空间来存储所述当前组命令的指令。
25.根据权利要求19所述的计算机可读存储媒体,其中致使所述一或多个处理器从所述存储器单元中的所述当前确认点开始将所述当前组命令写入所述存储器单元链中的所述指令包括:致使所述一或多个处理器将所述当前组命令写入所述存储器单元链中,而不需要确定所述分配列表中是否有充足的空间来存储与所述当前组命令相关联的所述处置的指令。
26.一种装置,其包括:
用于从存储器单元中的一存储器单元中的当前确认点开始,将当前组命令写入到命令缓冲器中的存储器单元链的装置;
用于确定以下各项中的至少一者的装置:
在所述当前组命令的所述写入期间,所述当前组命令中尚未写入到所述存储器单元链的命令是否到达所述存储器单元链的结尾;以及
在所述当前组命令的所述写入之后,分配列表中是否有充足的空间来存储与所述当前组命令相关联的处置;以及
用于以下操作的装置:在所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾的情况下,或在所述分配列表中没有充足的空间来存储与所述当前组命令相关联的处置的情况下,提交所述处理器在所述当前组命令的所述写入之前存储在所述存储器单元链中的先前所确认的命令。
27.根据权利要求26所述的装置,其进一步包括:
用于在所述当前组命令的所述写入期间,将与所述当前组命令相关联的所述处置存储在临时列表中的装置,
其中,所述用于确定所述分配列表中是否有充足的空间的装置包括用于通过尝试将所述临时列表中的所述处置添加到所述分配列表,来确定将所述临时列表中的所述处置添加到所述分配列表是否需要所述分配列表中比可用多的空间的装置。
28.根据权利要求26所述的装置,其进一步包括:
用于在写入所述当前组命令之后,在所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置的情况下,将与所述当前组命令相关联的所述处置存储在所述分配列表中的装置;以及
用于在写入所述当前组命令之后,在所述分配列表中有充足的空间来存储与所述当前组命令相关联的所述处置的情况下,将所述当前确认点移到另一存储器单元的装置。
29.根据权利要求26所述的装置,其进一步包括:
用于从所述存储器单元链释放在其中识别所述当前确认点的所述存储器单元之前的存储器单元的装置;以及
用于在所述当前组命令中尚未写入到所述存储器单元链的命令到达所述存储器单元链的所述结尾的情况下,将一或多个额外存储器单元分配给所述存储器单元链的装置。
30.根据权利要求26所述的装置,其进一步包括:
用于在所述分配列表中没有充足的空间来存储与所述当前组命令相关联的所述处置的情况下,清理所述分配列表的装置。
31.根据权利要求26所述的装置,其中所述用于从所述存储器单元中的所述当前确认点开始将所述当前组命令写入所述存储器单元链中的装置包括:用于将所述当前组命令写入所述存储器单元链中,而不需要确定所述存储器单元链中是否有充足的空间来存储所述当前组命令的装置。
32.根据权利要求26所述的装置,其中所述用于从所述存储器单元中的所述当前确认点开始将所述当前组命令写入所述存储器单元链中的装置包括:用于将所述当前组命令写入所述存储器单元链中,而不需要确定所述分配列表中是否有充足的空间来存储与所述当前组命令相关联的所述处置的装置。
CN201480029283.0A 2013-05-31 2014-04-30 用于存储命令的方法及相关装置 Expired - Fee Related CN105247478B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361829487P 2013-05-31 2013-05-31
US61/829,487 2013-05-31
US14/027,816 2013-09-16
US14/027,816 US9165337B2 (en) 2013-05-31 2013-09-16 Command instruction management
PCT/US2014/036239 WO2014193591A1 (en) 2013-05-31 2014-04-30 Command instruction management

Publications (2)

Publication Number Publication Date
CN105247478A true CN105247478A (zh) 2016-01-13
CN105247478B CN105247478B (zh) 2018-02-06

Family

ID=51984586

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480029283.0A Expired - Fee Related CN105247478B (zh) 2013-05-31 2014-04-30 用于存储命令的方法及相关装置

Country Status (6)

Country Link
US (1) US9165337B2 (zh)
EP (1) EP3005304A1 (zh)
JP (1) JP5969145B1 (zh)
KR (1) KR101676990B1 (zh)
CN (1) CN105247478B (zh)
WO (1) WO2014193591A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI628618B (zh) * 2016-02-26 2018-07-01 Google Llc 用於影像處理器之編譯器管理記憶體
CN113906383A (zh) * 2019-05-06 2022-01-07 美光科技公司 主机系统和存储器子系统之间的定时数据传送
CN113906383B (zh) * 2019-05-06 2024-05-17 美光科技公司 主机系统和存储器子系统之间的定时数据传送

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804900B2 (en) * 2014-05-30 2017-10-31 Apple Inc. Manipulating shaders with object-oriented programming
US20160077545A1 (en) * 2014-09-17 2016-03-17 Advanced Micro Devices, Inc. Power and performance management of asynchronous timing domains in a processing device
US20180113794A1 (en) * 2015-06-10 2018-04-26 Intel Corporation Webgl application analyzer
US10685473B2 (en) * 2017-05-31 2020-06-16 Vmware, Inc. Emulation of geometry shaders and stream output using compute shaders
US10269167B1 (en) 2018-05-21 2019-04-23 Apple Inc. Indirect command buffers for graphics processing
TWI660346B (zh) * 2018-09-07 2019-05-21 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1430150A (zh) * 2001-12-29 2003-07-16 深圳市中兴通讯股份有限公司上海第二研究所 通信系统中分系统间的虚拟内存分配管理方法
US20040160449A1 (en) * 2003-02-18 2004-08-19 Microsoft Corporation Video memory management
US20060070072A1 (en) * 2004-09-29 2006-03-30 Sony Corporation Information processing apparatus, memory area management method, and computer program
CN101110044A (zh) * 2007-08-28 2008-01-23 中兴通讯股份有限公司 一种内存监控管理的方法及系统
US20080177914A1 (en) * 2003-06-26 2008-07-24 Nvidia Corporation Hardware support system for accelerated disk I/O
US7830387B2 (en) * 2006-11-07 2010-11-09 Microsoft Corporation Parallel engine support in display driver model
US20110099338A1 (en) * 2007-08-29 2011-04-28 Life Scan Scotland Ltd. Data management system and method

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3784195B2 (ja) * 1999-03-18 2006-06-07 富士通株式会社 データパケット交換機
DE10119754B4 (de) * 2001-04-23 2007-11-29 Infineon Technologies Ag Verfahren und Vorrichtung zum Speichern von Datenpaketen
US7234144B2 (en) 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US7421694B2 (en) 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7728840B2 (en) * 2003-09-04 2010-06-01 Texas Instruments Incorporated Sliding data buffering for image processing
JP2007179085A (ja) * 2005-12-26 2007-07-12 Fujitsu Ltd ディスク装置、ディスク書込データ選択方法およびディスク書込データ選択プログラム
US8269780B2 (en) 2007-06-07 2012-09-18 Apple Inc. Batching graphics operations with time stamp tracking
US8120608B2 (en) 2008-04-04 2012-02-21 Via Technologies, Inc. Constant buffering for a computational core of a programmable graphics processing unit
US20100205367A1 (en) * 2009-02-09 2010-08-12 Ehrlich Richard M Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands
US8719455B2 (en) 2010-06-28 2014-05-06 International Business Machines Corporation DMA-based acceleration of command push buffer between host and target devices

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1430150A (zh) * 2001-12-29 2003-07-16 深圳市中兴通讯股份有限公司上海第二研究所 通信系统中分系统间的虚拟内存分配管理方法
US20040160449A1 (en) * 2003-02-18 2004-08-19 Microsoft Corporation Video memory management
US20080177914A1 (en) * 2003-06-26 2008-07-24 Nvidia Corporation Hardware support system for accelerated disk I/O
US20060070072A1 (en) * 2004-09-29 2006-03-30 Sony Corporation Information processing apparatus, memory area management method, and computer program
US7830387B2 (en) * 2006-11-07 2010-11-09 Microsoft Corporation Parallel engine support in display driver model
CN101110044A (zh) * 2007-08-28 2008-01-23 中兴通讯股份有限公司 一种内存监控管理的方法及系统
US20110099338A1 (en) * 2007-08-29 2011-04-28 Life Scan Scotland Ltd. Data management system and method

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI628618B (zh) * 2016-02-26 2018-07-01 Google Llc 用於影像處理器之編譯器管理記憶體
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10304156B2 (en) 2016-02-26 2019-05-28 Google Llc Compiler managed memory for image processor
US10685422B2 (en) 2016-02-26 2020-06-16 Google Llc Compiler managed memory for image processor
CN113906383A (zh) * 2019-05-06 2022-01-07 美光科技公司 主机系统和存储器子系统之间的定时数据传送
CN113906383B (zh) * 2019-05-06 2024-05-17 美光科技公司 主机系统和存储器子系统之间的定时数据传送

Also Published As

Publication number Publication date
KR20160005144A (ko) 2016-01-13
KR101676990B1 (ko) 2016-11-16
WO2014193591A1 (en) 2014-12-04
US9165337B2 (en) 2015-10-20
EP3005304A1 (en) 2016-04-13
JP2016528566A (ja) 2016-09-15
CN105247478B (zh) 2018-02-06
US20140354660A1 (en) 2014-12-04
JP5969145B1 (ja) 2016-08-17

Similar Documents

Publication Publication Date Title
CN105247478A (zh) 命令指令管理
CN103782280B (zh) 用于图形处理的存储器复制引擎
US10949944B2 (en) System and method for unified application programming interface and model
CN106056529B (zh) 一种对用于图片识别的卷积神经网络训练的方法与设备
CN106575228B (zh) 图形处理中的渲染目标命令重新排序
JP6073533B1 (ja) タイルベースのアーキテクチャ上での最適化されたマルチパスレンダリング
JP2018060556A (ja) グラフィック処理ユニットにおける視界ベースの状態更新
US20140184623A1 (en) REORDERING OF COMMAND STREAMS FOR GRAPHICAL PROCESSING UNITS (GPUs)
CN104641396A (zh) 用于调度图形处理单元命令流的延迟抢占技术
CN111737019B (zh) 一种显存资源的调度方法、装置及计算机存储介质
KR20140105609A (ko) 온라인 게이밍
CN103460253A (zh) 用于图形处理的像素值精简
CN111209116B (zh) 一种分配显存空间的方法、装置及计算机存储介质
KR20180056316A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
CN105210111A (zh) 基于每仓可见性信息以及添加的线内操作的渲染命令的条件性执行
CN104823220A (zh) 用于图形处理的图形存储器加载掩模
US20140059319A1 (en) Resource allocation apparatus and method, and storage medium
US20130063463A1 (en) Real-time atlasing of graphics data
CN104508638A (zh) 多核心处理系统中的高速缓冲存储器数据迁移
CN104321752A (zh) 虚拟表面分配
CN114022344B (zh) 基于Linux服务器的Android容器渲染资源共享方法和装置
US10657678B2 (en) Method, apparatus and device for creating a texture atlas to render images
JP2011090663A (ja) 画像処理装置及びプログラム
CN102542525B (zh) 一种信息处理设备以及信息处理方法
CN109672931B (zh) 用于处理视频帧的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180206

Termination date: 20190430

CF01 Termination of patent right due to non-payment of annual fee