CN108140363A - 基于翻转队列管理的图形上下文调度 - Google Patents

基于翻转队列管理的图形上下文调度 Download PDF

Info

Publication number
CN108140363A
CN108140363A CN201680056794.0A CN201680056794A CN108140363A CN 108140363 A CN108140363 A CN 108140363A CN 201680056794 A CN201680056794 A CN 201680056794A CN 108140363 A CN108140363 A CN 108140363A
Authority
CN
China
Prior art keywords
context
frame buffer
response
processor
scheduler
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
CN201680056794.0A
Other languages
English (en)
Other versions
CN108140363B (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.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of CN108140363A publication Critical patent/CN108140363A/zh
Application granted granted Critical
Publication of CN108140363B publication Critical patent/CN108140363B/zh
Active 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • 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/18Use of a frame buffer in a display terminal, inclusive of the display panel

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

一种处理器[100]包括调度器[105],所述调度器决定多个待处理图形上下文[102、103、104]中的哪一个被选择用于在处理器的图形流水线上执行。所述处理器还包括多个翻转队列[115、116、117],所述多个翻转队列存储准备好在显示设备上渲染的数据。正在执行的图形上下文可以发出翻转请求以改变存储在所述翻转队列中的一个处的数据。响应于确定所述翻转请求针对正用于在所述显示设备上渲染的翻转队列,所述调度器执行上下文切换以调度不同的图形上下文用于在所述图形流水线上执行。

Description

基于翻转队列管理的图形上下文调度
相关申请的交叉引用
本申请要求2015年12月18日提交的美国非临时专利申请号14/974,585的权益,所述专利申请的内容特此以引用方式并入本文。
背景技术
公开领域
本公开总体上涉及处理器,并且具体地涉及处理器上的图形上下文调度。
相关技术的描述
为了提高处理效率,处理器有时采用专用图形流水线来生成数据以供在显示设备上显示。通过采用专用图形流水线,处理器从其中央处理单元中移除显示数据生成和管理的任务,从而允许那些单元执行与系统管理和用户发起的应用的执行相关的操作。处理器基于这些操作生成不同的图形上下文,其中每个图形上下文均表示将由图形流水线使用的指令和状态数据,以便显示与图形上下文相关联的一个或多个对象。
在图形流水线上执行期间,图形上下文可以生成称为翻转(flip)请求的请求,以改变正在显示的帧缓冲器。在某些情况下,必须延迟用于改变缓冲器内容的命令的执行,直到显示器硬件准备好执行请求为止。例如,当形成用于改变帧缓冲器内容的命令时,翻转请求所针对的帧缓冲器可能正在使用的过程中,使得立即执行该命令可能导致撕裂或其他显示错误。为了防止出现这些错误,停止图形流水线上的操作的执行,直到帧缓冲器可用于执行命令为止,但此类延迟会对处理效率产生负面影响。
附图简述
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员变得明显。在不同的图中使用相同的参考符号来指示相似或相同的项目。
图1是根据一些实施方案的基于翻转队列管理来调度图形流水线上的图形上下文执行的处理器的框图。
图2是示出了根据一些实施方案的基于帧缓冲器的可用性来调度图1的处理器上的图形上下文的框图。
图3是示出了根据一些实施方案的基于先前不可用帧缓冲器变得可用来恢复图1的处理器上的图形上下文的执行的框图。
图4是根据一些实施方案的基于翻转队列管理来调度图形上下文用于执行的图1的处理器的调度器的框图。
图5是根据一些实施方案的基于帧缓冲器的可用性来调度图形上下文用于在处理器上执行的方法的流程图。
图6是根据一些实施方案的基于帧缓冲器变得可用来将图形上下文置于可运行状态的方法的流程图。
详述
图1-6示出了用于基于翻转队列管理来调度处理器上的图形上下文的执行的技术。该处理器包括调度器,该调度器决定多个待处理图形上下文中的哪一个被选择用于在处理器的图形流水线上执行。该处理器还包括:一组帧缓冲器,所述帧缓冲器存储将在显示设备上渲染的数据;以及多个翻转队列,所述多个翻转队列存储用于改变这组帧缓冲器上的数据的翻转请求。响应于确定由正在执行的图形上下文发出的命令针对由于先前翻转请求而正用于在显示设备上渲染的帧缓冲器,调度器执行上下文切换以调度不同的图形上下文用于在图形流水线上执行。由此,调度器确保图形流水线上的操作不会由于翻转请求而停止,从而提高处理效率。
图1示出了根据一些实施方案的可以基于一个或多个帧缓冲器的可用性来调度多个待处理图形上下文的执行的处理器100。处理器100是通常被配置成执行以一个或多个计算机程序的形式组织的指令集以便代表电子设备执行操作的设备。因此,处理器100可以被包括在任何其他各种电子设备中,诸如台式计算机、膝上型计算机、服务器、游戏控制台、平板电脑、智能手机等。为了便于与用户进行交互,处理器100可以经由有线或无线协议连接到显示设备(图1中未示出),诸如显示屏。
为了支持在显示设备上显示信息,处理器100包括图形流水线110、调度器105、翻转队列115、116、117和显示控制器118。如本文进一步描述的,处理器100的这些特征通常被配置成支持图形上下文(例如,图形上下文102、103和104)的管理和执行以在显示设备上显示信息。如本文所使用的,图形上下文是指与将显示的对象相对应的指令集和相关联状态信息。因此,图形上下文可以与计算机设备可以显示的任何对象相关联,诸如窗口、图标、桌面背景、图形对象(例如,在计算机游戏中显示的子画面或其他对象)等。因此,例如,与计算机窗口相对应的图形上下文包括用于基于包括在图形上下文中的状态信息(诸如窗口大小、标题、菜单项、按钮等)来生成用于显示窗口的数据的指令。
为了进行描述,假定图形上下文由处理器100的CPU(未示出)执行的一个或多个计算机程序生成。例如,由CPU执行的应用程序可以生成与用于由应用程序显示信息的一个或多个窗口相对应的图形上下文。
调度器105是通常被配置成调度图形上下文用于在图形流水线110上执行的硬件模块。为了进行说明,在一些实施方案中,CPU可以生成多个图形上下文(示为图形上下文102-4),用于在显示设备上同时显示。这些多个图形上下文被称为“待处理”图形上下文以反映其准备好在图形流水线110上执行。处理器100的CPU或其他模块可以随时间改变待处理图形上下文以反映对应显示对象的变化。例如,CPU可以响应于用户提供指示窗口数据将在显示器上更新的输入信息来更新与窗口对象相对应的图形上下文。CPU更新图形上下文以反映窗口中的数据更新,导致图形上下文包含新的或不同的指令用于执行。在一些实施方案中,图形上下文保持待处理,直到CPU识别出指示不再显示对应对象的动作,诸如指示窗口已被用户关闭的动作为止。
待处理图形上下文各自在给定时间点处于至少两种不同状态之一,称为可运行状态和不可运行状态,从而反映图形上下文是否可被调度用于在图形流水线110上执行。图形流水线110、调度器105、CPU或处理器100的另一个模块可以使图形上下文的状态从可运行状态变为不可运行状态,且反之亦然,以便有效地管理图形流水线110上的图形上下文的调度。例如,如本文进一步描述的,调度器105可以响应于确定执行图形上下文所需的特定资源诸如翻转队列暂时不可用来将正在执行的图形上下文的状态从可运行状态变为不可运行状态。一旦资源可用,调度器105就可以将图形上下文的状态从不可运行状态变为可运行状态,以使得可以恢复图形上下文的执行。
调度器105基于指定调度方案和处理器100上感测到的条件的组合来调度那些处于可运行状态的待处理图形上下文用于执行。为了进行说明,在一些实施方案中,调度器105包括一个或多个模块,该一个或多个模块用于感测图形流水线110上的条件和处理器100的其他模块上的条件。基于这些感测到的条件,调度器105选择将在图形流水线110上执行的待处理图形上下文之一。如果感测到的条件指示可以选择多于一个待处理图形上下文用于执行,则调度器105可以基于指定选择方案(诸如循环法方案)来在上下文之中进行选择。例如,调度器105可以为可运行图形上下文中的每一个分配指定持续时间的一部分用于执行,并且在每个可运行图形上下文分配的部分时间期间执行每个可运行图形上下文。通过基于感测到的条件在待处理上下文中进行选择,调度器105可以提高处理器100上的处理效率。
图形流水线110是通常被配置成执行经调度图形上下文的指令的一组阶段。因此,在一些实施方案中,图形流水线110包括获取阶段、指派阶段、一个或多个执行阶段和撤回阶段。响应于来自调度器105的用于执行不同的图形上下文的请求(称为“上下文切换”),图形流水线110可以保存当前正在执行的图形上下文的状态信息,为所请求的图形上下文加载任何所保存的状态信息,且然后针对所请求的图形上下文发起指令的获取、指派、执行和撤回,直到调度器105发出另一个上下文切换请求为止。
在指令执行过程中,图形流水线110生成改变正在显示设备上显示的数据的请求。为了进行说明,处理器100包括翻转队列115、116和117,各自用于请求改变或翻转用于在显示设备上显示的数据。在一些实施方案中,图形上下文102-104各自被分配给翻转队列115-117中的不同翻转队列。因此,例如,图形上下文102可以被分配给翻转队列115,图形上下文103可以被分配给翻转队列116,并且图形上下文104可以被分配给翻转队列117。在一些实施方案中,图形上下文可以被分配给多个翻转队列,但每个翻转队列与仅一个图形上下文相关联。为了改变要显示的数据,图形上下文向该队列发出翻转请求。
显示控制器118是通常被配置成从翻转队列115-117读取翻转请求并且基于翻转请求来改变用于在显示设备上渲染的数据的硬件模块。为了进行说明,显示控制器118与帧缓冲器119进行交互。帧缓冲器119各自存储将在显示设备上渲染的数据。将存储在帧缓冲器119中的单独一个上的数据称为“帧”。为了提高显示器吞吐量,显示控制器118继续经由帧缓冲器119来顺序地显示对应帧,从而在显示设备的同步间隔(诸如垂直同步间隔)期间改变帧缓冲器。这允许通过下文进一步描述的命令来改变没有在渲染过程中的帧,从而提高显示控制器的吞吐量。为了进行说明,在一些实施方案中,帧缓冲器119包括三个不同的帧缓冲器,分别指定为缓冲器A、缓冲器B和缓冲器C。显示控制器118首先渲染在缓冲器A中的帧,在此时间期间可以分别改变缓冲器B和缓冲器C中的帧,而不引起可见的显示错误。响应于来自图形上下文的翻转请求并且在完成缓冲器A的渲染之后,如由显示设备的垂直同步时段所指示的,显示控制器118继续渲染存储在缓冲器B上的帧,并且可以改变缓冲器A和缓冲器C上的帧。在渲染缓冲器B上的帧之后,显示控制器118响应于来自图形上下文的另一个翻转请求来继续渲染在缓冲器C上的帧。响应又一个翻转请求并且在完成缓冲器C上的帧之后,显示控制器118返回到缓冲器A。因此,显示控制器118基于通过执行图形上下文而发出的翻转请求来通过帧缓冲器。
如上所述,存储在翻转队列115-117中的每个翻转请求表示切换到帧缓冲器119中的一个的请求。因此,每个翻转请求均包括翻转请求所针对的帧缓冲器的指示符。在一些实施方案中,翻转队列115-117可以共同地包括针对显示设备的多个翻转请求。显示控制器118可以包括复合器以协调所请求的变化,并且由所针对的显示设备的多个帧缓冲器构成合成帧。
如上所示,显示控制器118渲染来自帧缓冲器119的帧。在渲染帧缓冲器时,该帧缓冲器的变化会导致在显示器中出现可见错误,诸如撕裂、重影或其他视觉错误。因此,显示控制器118防止显示设备上正在渲染过程中的帧缓冲器发生变化。出于讨论的目的,将正在提供其数据用于渲染过程中的帧缓冲器称为不可用。将没有在提供其数据用于在显示设备上渲染过程中的帧缓冲器称为可用,并且将其所存储的数据称为正在等待用于显示。
修改正在渲染过程中的帧缓冲器上的帧数据可能导致撕裂或其他显示错误。为了防止出现这样的错误,显示控制器118防止修改翻转队列,所述翻转队列的数据用于在显示设备上渲染的过程中。例如,在一些实施方案中,响应于对来自图形上下文的翻转请求的发起,将指定值写入到与帧缓冲器相关联的状态寄存器111。在完成从帧缓冲器检索数据用于渲染时,显示控制器从状态寄存器111清除这个值。在更新帧缓冲器中的数据之前,图形流水线110针对帧缓冲器检查状态寄存器。如果状态寄存器存储指定的值,则图形流水线110停止并避免更新帧缓冲器中的数据。
为了减少这种停止对处理器100的性能的影响,调度器105可以基于翻转请求所针对的帧缓冲器的可用性来调度图形上下文102-104的执行。为了进行说明,调度器105针对请求修改帧缓冲器上的数据的命令监视图形流水线110并同时监视帧缓冲器119中的哪个可用。响应于识别出请求修改数据的命令针对不可用的帧缓冲器并因此将导致对应的图形上下文停止,调度器105选择不同的图形上下文用于在图形流水线110上执行。一旦帧缓冲器已经完成渲染,调度器105就可以立即或在未来方便的时间点恢复先前调度的图形上下文的执行。
通过基于帧缓冲器119的可用性来调度图形上下文的执行,调度器105通过确保一个图形上下文的停止不会引起所有待处理图形上下文的停止来增强处理器性能。为了进行说明,在常规处理器中,请求修改正在渲染过程中的帧缓冲器上的数据的命令使得发出该命令的图形上下文的执行停止。处理器等到直到帧缓冲器的渲染已完成,然后恢复已停止的图形上下文的执行。当处理器等待帧缓冲器变为可用时,所有其他待处理图形上下文也会停止。通过使用本文所描述的技术,响应于图形上下文发出请求修改正在渲染过程中的帧缓冲器的命令,调度器105调度不同的图形上下文用于执行。这允许图形流水线110执行有用的工作,同时一个或多个图形上下文等待帧缓冲器的可用性。
图2示出了根据一些实施方案的图1的调度器105基于帧缓冲器可用性来调度图形流水线110上的图形上下文的示例。在所示出的示例中,在时间201时,图形上下文102正在图形流水线110上执行,而图形上下文103处于待处理状态并等待执行。另外,在所示出的示例中,显示控制器118包括三个帧缓冲器,指定为帧缓冲器221、帧缓冲器222和帧缓冲器223。帧缓冲器221存储指定为正在渲染过程中的帧,且因此帧缓冲器221不可用。帧缓冲器222和223均可用。
在时间201时,图形上下文103识别出其下一个命令是用于更新帧缓冲器221中的数据的命令。在图形上下文103继续更新数据之前,其首先检查帧缓冲器221是否可用。作为响应,调度器105识别出所针对的帧缓冲器221因为其正由显示控制器渲染而不可用。因此,在时间202时,调度器105通过暂停图形上下文102的执行以及调度图形上下文103的执行来执行上下文切换。因此,当图形上下文102正在等待帧缓冲器221的可用性时,图形流水线110执行图形上下文103,从而提高处理器100上的处理效率。在一些实施方案中,当正在等待的图形上下文被允许保持停止并且不暂停时,调度器105可以采用超时时段,以防帧缓冲器在不久之后变得可用,从而避免上下文切换开销。
图3示出了根据一些实施方案的调度器105恢复图形流水线110上的先前暂停的图形上下文的执行的示例。图3的示例是图2的示例的继续,其中图形上下文103已响应于由于帧缓冲器221不可由图形上下文102更新而导致的图形上下文102的执行暂停被调度用于在图形流水线110上执行。在时间303时,在图2的时间202之后发生,调度器105从显示控制器118接收同步信号。作为响应,图形流水线110检查状态寄存器111,并且基于存储在那里的值,确定帧缓冲器221上的帧数据的渲染已完成。因此,在时间304时,调度器105执行上下文切换以暂停图形上下文103的执行并恢复图形上下文102的执行。在一些实施方案中,调度器105不响应于同步信号立即检查状态寄存器,而是等待更方便或更有效的时间,诸如当图形上下文103在不可用的帧缓冲器上停止时或者当图形上下文103另外到达其正在等待来自处理器100的另一个模块的响应的时间点时。
图4示出了根据一些实施方案的调度器105的示例的框图。在所描绘的示例中,调度器105包括调度控制器420、不可运行上下文令牌存储区425和可运行上下文令牌存储区426。不可运行上下文令牌存储425是诸如一组寄存器的存储结构,其存储关于处于不可运行状态的待处理以用于执行的上下文的标识符值(例如,令牌428)。在一些实施方案中,当CPU生成上下文时,其还为该上下文生成与其他待处理图形上下文的令牌值不同的令牌值。CPU将令牌值提供给调度器105,所述调度器采用令牌值来识别图形上下文用于上下文切换和其他管理操作。
可运行上下文存储区426是诸如一组寄存器的存储结构,其存储关于处于可运行状态的上下文的令牌值(例如,令牌429)。存储在不可运行上下文存储区425和可运行上下文存储区426上的值可以由调度器105或另一模块更新以改变图形上下文的可运行状态。例如,为了指示图形上下文处于可运行状态,调度器105可以将图形上下文的令牌值写入到可运行上下文存储区426。响应于确定图形上下文不可运行(例如,因为上下文已经针对正在渲染过程中的翻转队列发出翻转请求),调度器105从可运行上下文存储区426中清除图形上下文的令牌值并将该令牌值写入到不可运行上下文存储区425。这个过程可以颠倒过来将图形上下文的状态从不可运行状态变为可运行状态。
调度控制器420是被配置成识别上下文切换的条件并且响应于识别出此类条件向图形流水线110发出上下文切换的请求的模块。在操作中,响应于从显示控制器118接收到已针对正在渲染过程中的帧缓冲器发出翻转请求的指示,调度控制器420从可运行上下文存储区426中清除正在执行的图形上下文的上下文令牌值,以指示图形上下文已停止并因此不可运行。调度控制器然后从可运行上下文令牌值存储区426中选择另一个令牌值。在一些实施方案中,基于与令牌值相关联的优先级值、基于在处理器100上的一个或多个检测到的条件、基于所定义的选择顺序诸如FIFO顺序或循环法序等等来选择令牌值。调度控制器420将选定的令牌值或与其相关联的值(诸如,指示将执行的图形上下文的下一指令的指令指针值)提供给图形流水线110。然后,图形流水线110发起或恢复与选定的令牌值相对应的图形上下文的执行。
调度控制器420还可以从显示控制器118接收帧缓冲器上的帧的渲染已经完成的指示。响应于该指示,调度控制器420可以识别已经等待帧缓冲器的可用性的任何图形上下文的令牌值。调度控制器420然后将那些令牌值传送到可运行上下文存储区426,使得与线程相对应的图形上下文可用于在下一个上下文切换事件期间进行选择。在一些实施方案中,来自显示控制器118的指示本身可以由调度控制器420触发上下文切换。
图5示出了根据一些实施方案的基于翻转队列可用性来调度图形流水线上的图形上下文的方法500的框图。为了描述的目的,相对于图1的处理器100上的示例实现方式来描述方法500。在框502处,在图形流水线110上执行的图形上下文请求改变存储在帧缓冲器中的数据的至少一部分。在框504处,调度器105和图形流水线110确定翻转请求所针对的帧缓冲器是否可用。也就是说,调度器105确定所针对的帧缓冲器是否正用于由显示控制器118渲染的过程中且因此不可用。
如果翻转请求所针对的帧缓冲器可用,则方法流程进行到框508,并且图形流水线110在所针对的帧缓冲器上执行数据更新请求。返回到框504,如果数据更新请求所针对的帧缓冲器不可用,则方法流程转到框506,并且调度器105执行上下文切换。具体地讲,调度器105将当前正在执行的图形上下文置于不可运行状态,并且从当前处于可运行状态的这组图形上下文中选择不同的图形上下文。然后,调度器105向图形流水线110发出上下文切换请求。作为响应,图形流水线110保存当前正在执行的图形上下文的状态信息,以使得稍后可以恢复该状态信息,为选定的图形上下文加载任何先前保存的状态信息,并继续执行选定的图形上下文的指令。
图6示出了根据一些实施方案的基于翻转请求来恢复先前暂停的图形上下文的执行的方法600的流程图。为了描述的目的,相对于图1的处理器100上的示例实现方式来描述方法600。在框602处,调度器105接收显示设备上同步信号的指示,诸如垂直同步信号或水平同步信号。同步信号指示适当的时间来检查状态寄存器有关图形上下文以确定帧缓冲器是否变得可用。在框604处,调度器105识别处于不可运行状态的任何图形上下文,这些图形上下文由于针对新近可用帧缓冲器的翻转请求而处于该状态。也就是说,调度器105识别正在等待翻转队列变为可用的那些图形上下文。在框606处,调度器105将所识别的图形上下文置于可运行状态。在框608处,响应于下一个上下文切换,调度器105从处于可运行状态的图形上下文中进行选择,这些图形上下文包括在框606处置于可运行状态的那些图形上下文,从而允许那些图形上下文完成其翻转请求并且恢复执行。
在一些实施方案中,上述装置和技术在一种包括一个或多个集成电路(IC)设备(也称为集成电路封装或微芯片)的系统中实现,所述集成电路(IC)设备诸如以上参考图1-6所描述的处理器。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可用于设计和制造这些IC设备。这些设计工具通常被表示为一个或多个软件程序。该一个或多个软件程序包括可由计算机系统执行的代码,以便操纵计算机系统在代表一个或多个IC设备的电路的代码上进行操作,从而执行过程的至少一部分以将制造系统设计或适配为制造电路。该代码可以包含指令、数据或指令和数据的组合。表示设计工具或制造工具的软件指令通常存储在计算系统可访问的计算机可读存储介质中。同样,表示IC设备的设计或制造的一个或多个阶段的代码可以存储在相同的计算机可读存储介质或不同的计算机可读存储介质中并且可以从其中进行访问。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何存储介质或存储介质的组合。这样的存储介质可以包括,但不限于光学介质(例如,光盘(CD)、数字多功能光盘(DVD)、蓝光光盘)、磁介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器)或者经由有线或无线网络耦合到计算机系统(例如,网络可访问存储(NAS))。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器来实施。所述软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。所述软件可以包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂时性计算机可读存储介质可以包括例如磁盘或光盘存储设备、固态存储设备例如快闪存储器、高速缓存、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备及类似物。存储在非暂时性计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或者被一个或多个处理器解译或以其他方式执行的其他指令格式。
应注意,并非上述一般性描述中的所有活动或元素都是必需的,特定活动或设备的一部分可能不是必需的,并且除了所描述的那些以外,还可以执行一个或多个其他活动,或者还可以包括一个或多个其他元素。更进一步地,列出活动的顺序不一定是其被执行的顺序。而且,已经参考具体实施方案描述了所述概念。然而,本领域的普通技术人员应理解,在不脱离如所附权利要求书所阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性意义的,并且意在将所有这样的修改包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,可能导致任何益处、优点或解决方案发生或变得更明显的益处、优点、问题的解决方案以及任何特征都不应被解释为任何或所有权利要求的关键、必需或本质特征。此外,以上公开的特定实施方案仅仅是说明性的,因为所公开的主题可以受益于本文教示的本领域技术人员明白的不同但等效的方式进行修改和实践。除了在所附权利要求书中所描述的之外,不打算对本文示出的构造或设计的细节进行限制。因此,显而易见的是,上面公开的特定实施方案可以被改变或修改,并且所有这样的变化都被认为在所公开的主题的范围内。因此,本文寻求的保护如所附权利要求书中所阐述。

Claims (14)

1.一种方法,其包括:
响应于在处理器[100]上从在所述处理器上执行的第一图形上下文[102]接收到指示渲染第一帧缓冲器[221]的请求的第一翻转请求,在第一存储位置[111]处存储第一值以指示所述第一帧缓冲器正在使用中;
响应于接收到改变所述第一帧缓冲器的内容的请求:
响应于所述第一存储位置存储所述第一值:
暂停所述第一图形上下文[202]的执行;以及
调度第二图形上下文[103]用于在所述处理器上执行。
2.根据权利要求1所述的方法,其进一步包括:
响应于完成所述第一翻转请求,在所述第一存储位置处存储第二值。
3.根据权利要求2所述的方法,其进一步包括:
响应于识别出所述第二值存储在所述第一存储位置处,恢复所述第一图形上下文的执行[304]。
4.根据权利要求3所述的方法,其进一步包括响应于显示设备的同步信号而识别出第二值存储在所述第一存储位置处[303]。
5.根据权利要求2所述的方法,其进一步包括:
基于所述第二上下文与等待用于显示的第二帧缓冲器[222]的内容的修改相关联来从多个待处理图形上下文中选择所述第二图形上下文。
6.根据权利要求5所述的方法,其进一步包括:
响应于在所述处理器上从所述第二上下文接收到第二翻转请求,响应于所述第二上下文与所述第二帧缓冲器等待用于显示时它上的数据的修改相关联而维持所述第二上下文的执行。
7.在包括可用于由显示控制器[118]选择用于显示的多个帧缓冲器[119]的处理器[100]上,一种方法包括:
基于来自多个图形上下文[102、103、104]的请求渲染所述多个帧缓冲器的翻转请求以及基于指示所述多个帧缓冲器中的哪一个由所述显示控制器选择用于显示的所存储值[111],调度所述多个图形上下文的执行。
8.根据权利要求7所述的方法,其中调度执行包括:
响应于所述多个图形上下文中的第一图形上下文[102]请求由所述所存储值指示为选择用于由所述显示控制器显示的第一帧缓冲器的修改,暂停[202]所述第一图形上下文的执行。
9.根据权利要求8所述的方法,其中调度执行进一步包括:
响应于所述第一图形上下文的执行被暂停以及响应于所述多个图形上下文中的第二图形上下文[103]与由所述所存储值指示为没有被选择用于由所述显示控制器显示的第二帧缓冲器的修改相关联,执行[202]所述第二图形上下文。
10.一种处理器,其包括:
多个帧缓冲器[119],所述多个帧缓冲器包括第一帧缓冲器[221];
图形流水线[110];
多个存储位置,所述多个存储位置包括第一存储位置[111];
显示控制器[118],所述显示控制器用于响应于第一翻转请求而渲染所述第一帧缓冲器上的数据;
调度器[105],所述调度器用于响应于在所述图形流水线上执行的第一图形上下文[102]指示改变所述第一帧缓冲器的内容的请求:
暂停[202]所述第一图形上下文的执行;
在所述第一存储位置处存储指示所述第一图形上下文被暂停的值;以及
调度[202]第二图形上下文[103]用于在所述图形流水线上执行。
11.根据权利要求10所述的处理器,其中所述调度器用于:
响应于完成所述第一翻转请求,在所述第一存储位置处存储第二值。
12.根据权利要求11所述的处理器,其中所述调度器用于:
响应于识别出所述第二值存储在所述第一存储位置,调度所述第一图形上下文用于恢复所述图形流水线上的执行[304]。
13.根据权利要求12所述的处理器,其中所述调度器用于:
响应于来自所述显示控制器的同步信号而识别出所述第二值存储在所述第一存储位置处[303]。
14.根据权利要求11所述的处理器,其中所述调度器用于:
基于所述第二上下文与等待用于显示的所述多个翻转队列中的第二帧缓冲器的内容的修改相关联,从多个待处理图形上下文中选择所述第二图形上下文。
CN201680056794.0A 2015-12-18 2016-09-22 基于翻转队列管理的图形上下文调度 Active CN108140363B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/974,585 US10176548B2 (en) 2015-12-18 2015-12-18 Graphics context scheduling based on flip queue management
US14/974,585 2015-12-18
PCT/CA2016/051113 WO2017100908A1 (en) 2015-12-18 2016-09-22 Graphics context scheduling based on flip queue management

Publications (2)

Publication Number Publication Date
CN108140363A true CN108140363A (zh) 2018-06-08
CN108140363B CN108140363B (zh) 2022-06-03

Family

ID=59055498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680056794.0A Active CN108140363B (zh) 2015-12-18 2016-09-22 基于翻转队列管理的图形上下文调度

Country Status (6)

Country Link
US (1) US10176548B2 (zh)
EP (1) EP3391364A4 (zh)
JP (1) JP6584655B2 (zh)
KR (1) KR102407781B1 (zh)
CN (1) CN108140363B (zh)
WO (1) WO2017100908A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB202012559D0 (en) * 2020-08-12 2020-09-23 Samsung Electronics Co Ltd Reducing latency between receiving user input and displaying resulting frame

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224210A (en) * 1989-07-28 1993-06-29 Hewlett-Packard Company Method and apparatus for graphics pipeline context switching in a multi-tasking windows system
US20040187122A1 (en) * 2003-02-18 2004-09-23 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
CN1636238A (zh) * 2002-02-19 2005-07-06 英特尔公司 稀疏刷新双重缓冲
CN1645472A (zh) * 2005-02-06 2005-07-27 威盛电子股份有限公司 显示控制系统及其方法
US20070091102A1 (en) * 2005-10-26 2007-04-26 John Brothers GPU Pipeline Multiple Level Synchronization Controller Processor and Method
CN104115105A (zh) * 2011-11-28 2014-10-22 亚马逊技术股份有限公司 电子纸显示器上的逐步页过渡
CN104951358A (zh) * 2014-03-27 2015-09-30 英特尔公司 基于优先级的上下文抢占

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487212B1 (en) * 1997-02-14 2002-11-26 Advanced Micro Devices, Inc. Queuing structure and method for prioritization of frames in a network switch
US5969728A (en) * 1997-07-14 1999-10-19 Cirrus Logic, Inc. System and method of synchronizing multiple buffers for display
US6747654B1 (en) * 2000-04-20 2004-06-08 Ati International Srl Multiple device frame synchronization method and apparatus
US6674841B1 (en) * 2000-09-14 2004-01-06 International Business Machines Corporation Method and apparatus in a data processing system for an asynchronous context switching mechanism
US6982719B2 (en) * 2002-07-15 2006-01-03 Sun Microsystems, Inc. Switching sample buffer context in response to sample requests for real-time sample filtering and video generation
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7176848B1 (en) * 2003-04-14 2007-02-13 Ati Technologies, Inc. Method of synchronizing images on multiple display devices with different refresh rates
US7522167B1 (en) * 2004-12-16 2009-04-21 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US20090184972A1 (en) * 2008-01-18 2009-07-23 Qualcomm Incorporated Multi-buffer support for off-screen surfaces in a graphics processing system
US9176794B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics compute process scheduling
US20130152108A1 (en) * 2011-12-13 2013-06-13 Ati Technologies Ulc Method and apparatus for video processing
US8578129B2 (en) * 2011-12-14 2013-11-05 Advanced Micro Devices, Inc. Infrastructure support for accelerated processing device memory paging without operating system integration
US10368108B2 (en) * 2011-12-21 2019-07-30 Ati Technologies Ulc Downstream video composition
US9099051B2 (en) * 2012-03-02 2015-08-04 Ati Technologies Ulc GPU display abstraction and emulation in a virtualization system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224210A (en) * 1989-07-28 1993-06-29 Hewlett-Packard Company Method and apparatus for graphics pipeline context switching in a multi-tasking windows system
CN1636238A (zh) * 2002-02-19 2005-07-06 英特尔公司 稀疏刷新双重缓冲
US20040187122A1 (en) * 2003-02-18 2004-09-23 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
CN1645472A (zh) * 2005-02-06 2005-07-27 威盛电子股份有限公司 显示控制系统及其方法
US20070091102A1 (en) * 2005-10-26 2007-04-26 John Brothers GPU Pipeline Multiple Level Synchronization Controller Processor and Method
CN1983326A (zh) * 2005-10-26 2007-06-20 威盛电子股份有限公司 图形处理单元管线多阶同步控制处理器及其方法
CN104115105A (zh) * 2011-11-28 2014-10-22 亚马逊技术股份有限公司 电子纸显示器上的逐步页过渡
CN104951358A (zh) * 2014-03-27 2015-09-30 英特尔公司 基于优先级的上下文抢占

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ANDERSON T E: "The performance implications of thread management alternatives for shared-memory multiprocessors", 《1989 ACM SIGMETRICS AND PERFORMANCE 89: INTERNATIONAL CONFERENCE ON MEASUREMENT AND MODELING OF COMPUTER SYSTEMS》 *
BILGE SAGLAM AKGUL: "A system-on-a-chip lock cache with task preemption support", 《CASES 2001. INTERNATIONAL CONFERENCE ON COMPILERS, ARCHITECTURE, AND SYNTHESIS FOR EMBEDDED SYSTEMS》 *
DEREK WILSON: "Triple Buffering:Why We Love It What are Double Buffering,vsync and Triple Buffering?", 《HTTPS://WWW.ANANDTECH.COM/SHOW/2794/2》 *
JEFF A STUART: "Efficient Synchronization Primitives for GPUs", 《CORNELL UNIVERSITY LIBRARY》 *
PC PLUS: "AMD HD3D technology:what you need to know", 《HTTPS://WWW.TECHRADAR.COM/NEWS/COMPUTING-COMPONENTS/GRAPHICS-CARDS/AMD-HD3D-TECHNOLOGY-WHAT-YOU-NEED-TO-KNOW-1055719》 *

Also Published As

Publication number Publication date
KR102407781B1 (ko) 2022-06-10
WO2017100908A1 (en) 2017-06-22
KR20180093875A (ko) 2018-08-22
JP6584655B2 (ja) 2019-10-02
EP3391364A4 (en) 2019-05-22
EP3391364A1 (en) 2018-10-24
US20170178273A1 (en) 2017-06-22
JP2019505864A (ja) 2019-02-28
CN108140363B (zh) 2022-06-03
US10176548B2 (en) 2019-01-08

Similar Documents

Publication Publication Date Title
US20230185607A1 (en) Hardware accelerated dynamic work creation on a graphics processing unit
KR101900172B1 (ko) 가상화 환경에서의 지능형 gpu 스케줄링
JP6320520B2 (ja) 多数の優先順キューに対するスレッドの割り当ておよびスケジューリング
US6006247A (en) Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
EP2307972B1 (en) Interrupt control for virtual processing apparatus
CN104838359B (zh) 等待时间敏感的软件中断和线程调度
US8549524B2 (en) Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems
US9852008B2 (en) Computer-readable recording medium storing execution information notification program, information processing apparatus, and information processing system
US10970129B2 (en) Intelligent GPU scheduling in a virtualization environment
JP2011192281A (ja) 仮想マシンモニター及び仮想マシンモニターのスケジューリング方法
US8793696B2 (en) Dynamic scheduling for frames representing views of a geographic information environment
EP2613257B1 (en) Systems and methods for use in performing one or more tasks
JP5970461B2 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
CN111813520A (zh) 线程调度方法、装置、存储介质及电子设备
JP2004078322A (ja) タスク管理システム、プログラム、記録媒体、及び制御方法
CN108140363A (zh) 基于翻转队列管理的图形上下文调度
CN111801653A (zh) 用于多线程数据处理环境的线程调度
WO2019097794A1 (ja) 情報処理装置、情報処理方法、および、プログラム
US20220382587A1 (en) Data processing systems
JP2004295451A (ja) プロセッサ及び実行可能タスク選択方法

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