CN101048764A - 具有前向进度位的存储器管理*** - Google Patents
具有前向进度位的存储器管理*** Download PDFInfo
- Publication number
- CN101048764A CN101048764A CNA2005800365349A CN200580036534A CN101048764A CN 101048764 A CN101048764 A CN 101048764A CN A2005800365349 A CNA2005800365349 A CN A2005800365349A CN 200580036534 A CN200580036534 A CN 200580036534A CN 101048764 A CN101048764 A CN 101048764A
- Authority
- CN
- China
- Prior art keywords
- page
- forward progress
- data
- client
- frame buffer
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 124
- 238000012545 processing Methods 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 35
- 238000000034 method Methods 0.000 claims description 17
- 230000008034 disappearance Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims description 2
- 230000001105 regulatory effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000002349 favourable effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007170 pathology Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种虚拟存储器***,其保持需要驻留在帧缓冲器中的页面的列表,以确保在由多个客户端构成的图形***上运行的图形应用程序上下文最终取得前向进度。需要处于帧缓冲存储器中的页面从不会从所述存储器换出。所需页面列表可动态地调整大小或为固定大小。标记文件用于防止对为取得前向进度所需的帧缓冲器中的页面进行页面交换。前向进度指示符表示页面出故障的客户端已代表上下文取得前向进度。前向进度指示符的存在用于清除所述标记文件,由此使得能够对所述帧缓冲存储器中先前经标记的页面进行页面交换。
Description
技术领域
本发明涉及适于与图形***一起使用的存储器管理***。更具体而言,本发明涉及使用前向进度信息来管理物理页面存储器以确保图形***存储器客户端取得前向进度。
背景技术
计算机***总是包括存储器。实际上,大部分计算机***具有许多不同类型和等级的存储器,例如,主存储器、高速缓冲存储器、只读存储器、随机存取存储器、硬盘存储器、闪速存储器等。然而,在简单地提及计算机存储器时,通常是指用于存储由处理器执行的程序指令及由这些指令使用及产生的数据的主存储器。
主存储器的数量及类型对于整个***性能而言十分重要。主存储器***可以由且通常由动态随机存取存储器(DRAM)和磁盘存储器两种存储器构成。DRAM速度很快;数据读取和写入通常是在以纳秒来计量的时间内进行。遗憾的是,尽管DRAM很快,但其也相对较贵。该费用往往限制可用的DRAM数量。为扩增其DRAM,现代计算机将磁盘存储器并入其主存储器***中。当与DRAM比较时,磁盘存储器很慢,其读取和写入时间以微秒来计量。然而,有利的是,磁盘存储器比DRAM便宜得多。尽管下文经常论述磁盘存储器—主要是因为磁盘存储器很常用,但事实上在使用磁盘存储器时,应了解,还可使用其他类型的存储器,例如“虚拟磁盘”存储器。还应了解,在论述虚拟存储器***的上下文中,术语“物理存储器”适用于***的DRAM。
对于将物理存储器和磁盘存储器二者结合以形成一整体主存储器的假象的需求已引起了虚拟存储器***和虚拟存储器管理器的发展。虚拟存储器管理器可使在计算机***上运行的应用程序(计算机程序)能够一致地访问比计算机实际上在物理存储器中所具有的多得多的存储器。将所述应用程序称为访问“虚拟存储器”,“虚拟存储器”的基本存储实际上由物理和磁盘存储器组合构成,其由虚拟存储器管理器在幕后(从软件应用程序的角度来看)进行管理。
虚拟存储器管理器大多使用页面概念。程序及其相关数据存储在页面中,其中使频繁使用的页面保持可在物理存储器中得到。不太经常使用的页面存储于磁盘存储器中。当软件应用程序需要使用不在物理存储器中的页面时,操作***/虚拟存储器管理器声明页面故障异常。当发生页面故障异常时,虚拟存储器管理器使处于磁盘存储器中的所请求页面***到物理存储器中,且将物理存储器中的被置换页面移动到磁盘存储器中以便为将进入的页面腾出空间。该过程称为页面交换。
通过使用硬件机制和操作***软件机制的组合来实施虚拟存储器***和虚拟存储器管理器。为获得高的性能效率,通常以如下方式构建虚拟存储器***:当由应用程序进行的虚拟存储器访问会使得在不要求任何页面交换的情况下进行物理存储器访问时,通常会完全使用比软件快得多的硬件机制来执行必需的物理访问。
虚拟存储器子***的管理器组件的页面置换算法(又称为页面管理器)负责决定将哪一页面逐出物理存储器并写回到磁盘中以便为所请求的页面腾出空间。页面管理器还负责启动DRAM与磁盘之间的相关传输。页面管理器更新由硬件和软件用来记录虚拟页面与DRAM或磁盘页面之间的映射的各种表格。由于页面管理器通常实施于软件中,且由于其可经得起花费一些时间来作决定,因此页面管理器可使用相对高级的算法来决定逐出哪一页面有可能对***性能的不利性最小。
虚拟存储器***非常有用,因为其使计算机能够运行需要使用的存储器比可用物理存储器更多的软件应用程序(或程序),而又不会给软件应用程序(或其程序员)增加具有任何关于上面正在运行(或将运行)程序的存储器的基本组成的知识的负担。此外,虚拟存储器允许每一计算机程序在专用虚拟存储器上下文中运行,该专用虚拟存储器上下文给程序造成如下假象:即使其他程序(或相同程序的其他实例)与该程序在***上同时运行(或将运行),每当其运行时仍可使用相同的虚拟存储器地址范围。虚拟存储器上下文的此种每程序实例能够执行现代的多任务,例如使文字处理器、图形程序、电子表格、及数据库全部同时运行,且不要求这些程序中的任意一者知晓可能有其他程序正在同时运行。
尽管非常有利,但虚拟存储器***并非不存在问题。如果计算机***的物理存储器不足,则虚拟存储器管理器可引起不断的(或几乎不断的)页面交换,这种情况称为***失效抖动现象,其导致***性能不佳。然而,这种问题通常众所周知且通常通过并入足够的物理存储器以防止或将***失效抖动现象降低至可接受的水平来加以解决。
尽管现有技术计算机***均得益于虚拟存储器和虚拟存储器管理器,然而现有的虚拟存储器管理方法可能不足以应对现代和未来的图形处理单元(GPU)的存储器要求。在最近几年里,图形处理已发展成为由多个存储器客户端组成的、具有极高速度的并行处理***,其可对必须从GPU的主存储器读出及/或向GPU的主存储器写入的巨量数据执行数学运算及相关运算。应注意,传统上(即在不构建虚拟存储器的GPU中),GPU的主存储器通常称为“帧缓冲器”。
在图形术语中,“存储器客户端”是GPU中的硬件实体,该硬件实体可处理存储在GPU的主存储器中的数据以实现所需结果。例如,本发明的受让人制成的图形处理装置包括多个着色器流水线,每一着色器流水线具有多个处理站(例如纹理站),且每一处理站可单独进行编程来处理数据段。每一流水线的纹理站可为存储器客户端,因为其对存储在GPU的主存储器中的纹理数据进行读取和操作,以实现针对其对流水线进行编程的预期结果。其他客户端可包括光栅操作处理器、光栅化器、几何引擎等。
图形处理程序可划分成所要完成的具体任务的群组。这些任务在本文中称为上下文。上下文本身可划分成多个线程,其中线程是可“完成”的上下文的一部分。也就是说,线程产生一给定的结果,该给定的结果然后可由其他线程使用。这时,由于该线程不再需要所述数据,因而该线程“撤除数据”。
现代图形***提出的挑战是确保每一存储器客户端具有为执行其所分配的任务所需的信息(程序和数据)。随着客户端数量的增加及随着每一客户端可处理的数据量的增加,确保所有客户端均实际上取得进度变得十分重要且越来越困难。页面交换尽管有利,但是其不能独立地确保多个客户端取得进度。
基本问题是多个存储器客户端可为了同一物理存储器而相互竞争。所述问题会因以下事实而进一步加剧:所有客户端可能需要协同工作,要求来自每一客户端的某些页面在物理存储器中同时存在,以在遇到另一页面故障之前完成处理某些工作。例如,如果一个客户端需要四个页面来取得进度,但是缺失一个页面,另一客户端可能需要几个其他页面。然后,可能会将第一客户端所要求的四个页面中的一者从物理存储器交换入磁盘存储器中,以便为第二客户端所要求的页面腾出空间。由于其他客户端引起页面交换,因此第一客户端可能永远不能访问其需用来取得进度的所有页面。同样,其他客户端可能永远不能访问它们需用来取得进度的所有页面。结果是抖动现象过度且可能导致图形***冻结。
因此,一种确保可获得所需页面以使图形***取得进度的方法将较为有利。一种可用来确保取得或将取得前向进度的简单硬件机制也将是较为有利。
发明内容
本发明的原理大体而言涉及一种用于提供虚拟存储器***的技术,且具体而言涉及一种页面管理器,该页面管理器具有足够的信息来保持要求驻留在帧缓冲器(物理存储器)中的页面的列表,以保证在由多个存储器客户端构成的图形***上运行的图形上下文最终取得前向进度。“图形上下文”意指图形应用程序(例如计算机游戏)的给定运行实例。有利的是,所需页面列表可动态调整大小,尽管也可使用大小固定的所需页面列表。可对所需页面列表中的至少一些页面进行标记,以禁止对经标记的所需页面进行页面交换。
有利的是,存储器***通过使客户端选择性地对页面故障异常附上一前向进度位来运行。存在前向进度位意味着自客户端上一次遇到正在运行的同一上下文的页面故障以来该页面故障客户端已经取得了前向进度,而缺乏前向进度位意味着自客户端在该上下文中出现上一次故障以来该页面故障客户端仍未取得前向进度。前向进度位的存在用来清除所述标记,由此使先前所标记的页面能够从帧缓冲存储器交换出。
附图说明
为能够更详细地理解上文所引用的本发明的特点,可参照实施例对上述简要归纳的本发明做更详细说明,其某些实施例显示于附图中。但是应注意:附图仅图解说明本发明的典型实施例,且因此不得视为限定本发明的范围,因为本发明可接受其它等效的实施例。
图1图解说明通过本发明的原理来解决问题的概要;
图2图解说明具有带多个客户端的图形处理单元、并实施本发明的原理的计算机***;
图3图解说明帧缓冲存储器内容、所需的页面列表、及标记列表之间的关系;及
图4图解说明在虚拟存储器***中的多个客户端的交互作用,包括当所需页面不在帧缓冲存储器中时存储器管理单元(MMU)、主机接口、及CPU之间的交互作用。
为便于理解,尽可能使用相同的参考编号来表示各附图中共有的相同元件。
具体实施方式
本发明的原理提供用于解决与在具有由多个存储器客户端(下文中仅称为“客户端”)构成的GPU的计算机***中管理虚拟存储器相关的问题的方法和***。图1适用于图解说明由本发明所解决的问题。在多客户端***中,为避免在自磁盘存储器向帧缓冲器进行页面交换的相对较慢的磁盘传输期间使GPU空闲而浪费时间,如果上下文A 50(正在执行的程序或程序段)正在由客户端A 52和B 56处理,且如果客户端A在访问位于磁盘存储器54中的虚拟页面AAA时遇到页面故障,则在故障的页面通过存储器管理器61得以从磁盘存储器54交换至帧缓冲存储器60时,GPU(未示出)会自动执行上下文切换,以允许由客户端B 58运行上下文A 50(或客户端C 51来运行上下文B 53等)。在页面AAA驻留于帧缓冲存储器60中之后,上下文A52将按其正确的顺序自由地尝试在对上下文A 50执行的工作上取得前向进度。在页面AAA换入且上下文A恢复到运行状态后,客户端A 50将执行其任务一小段时间,直到给予客户端B 58机会(例如通过超时)来服务于上下文A 50为止。客户端A 52很可能不会执行完其任务,且客户端B可能发现其需要另一虚拟页面ABB,且发生另一页面故障异常以获得ABB。
为使上下文A继续取得前向进度,客户端A仍需要页面AAA,而客户端B需要页面ABB。为使上下文A前进,必须得到这两个页面。但是,如果将页面AAA逐出(换出)至磁盘存储器54以便为页面ABB在帧缓冲器60中腾出空间,客户端A将引发其试图服务于上下文A的另一页面故障。因此,如果***从磁盘存储器54重新获得页面AAA,但使页面ABB被换出至磁盘存储器54以便为页面AAA腾出空间,则客户端B接任且发现页面ABB缺失,并声明又一页面故障。这种循环可继续许多次。应记住,其他客户端可正在运行其他上下文(或相同的上下文),因而一个页面故障引起另一客户端所需的页面被逐出的几率增加。整个***性能可减慢,或者甚至由于页面故障引起未来的页面故障而停止。
应注意,即使GPU仅包含单个客户端X,而该客户端X需要两个页面AXA和AXB同时驻留以允许上下文A前进,则仍可能存在类似的问题。多个客户端的存在只会使问题更加复杂化,因为其会产生同时遇到多个页面故障的可能性。在GPU中的多个客户端可意味着上下文的一些线程在一些客户端上运行时可取得前向进度,而同一上下文的其他线程在其他客户端上运行时不会取得前向进度。但是,这种情况仍构成所述上下文的整个前向进度。
本发明的原理可确保上下文(在我们实例中的上下文A)的所有所需页面(在我们主实例中的页面AAA和页面ABB)将最终同时驻留于物理存储器中,同时还允许将不需要的页面逐出。本发明的基本原理是将关于上下文的哪些页面需要(或不需要)同时驻留于物理存储器中(以及因此应或不应选择哪些页面来由后续页面故障逐出)的基本信息传送给由中央处理器运行的页面管理器的页面置换算法,以保证所述上下文最终取得前向进度。如果仅仅由于同时需要的页面多于***中的物理页面而不能取得前向进度,则所传送信息也可向页面管理器传递某些知识。这种知识使中央处理器能够更适度地处理这种情况。
此外,本发明的原理通过允许页面管理器作出更好的页面置换决策而减轻***失效抖动现象。这会在具有给定量的物理存储器情况下提高***性能,尤其是如果开始时的物理存储器相对较少时。这一优点也可变换为构建具有较小物理存储器、却与不使用本发明的***具有相同性能的更廉价的***。
图2图解说明计算机***100,其具有与中央处理器103进行交互作用的带多个客户端的图形处理单元102。中央处理器103正在运行操作***和应用程序,或者在存储于存储器***105中的多个应用程序之间执行多任务。存储器***105既包括物理存储器105A,即帧缓冲器60,又包括硬盘105B,即磁盘存储器54。应用程序是使用图形处理单元102中的各个客户端的图形程序。操作***和应用程序可从计算机可读媒体105C输入。计算机可读媒体105C包括程序指令,中央处理器103按照所述程序指令来实施本发明的原理。
图形处理单元102包括自中央处理器103接收原始图形数据的主机接口/前端(在下文中称为主机接口104)。主机接口104缓冲输入信息,并将原始图形信息提供至几何引擎106。几何引擎可通过帧缓冲器接口116访问帧缓冲存储器60。几何引擎106将形成、按比例缩放、旋转、并将存储于帧缓冲存储器60中的“模型”座标中的图元的三维顶点投影成二维帧缓冲器座标。通常,使用三角形作为三维对象的图元,但通常使用矩形作为二维对象(例如文本显示)的图元。应了解,帧缓冲存储器60可为图形***专用存储器,或为***存储器的一部分。
将来自几何引擎106的图元的顶点的二维帧缓冲器座标应用于光栅化器108。光栅化器108识别图元中的所有像素的位置。这通常沿延伸于界定各图元的线之间的光栅(水平)线来执行。光栅化器108的输出称为光栅化像素数据。
经光栅化的像素数据应用于着色器110,着色器110使用着色器程序(指令序列)来处理输入数据(代码、位置、纹理、条件、常量等)以产生输出数据。着色器可视为能同时处理大量数据(例如通过并行处理数据)的处理能力的集合。
着色器110包括用于将经光栅化的像素数据修改为具有所需纹理和光学特征的纹理引擎112。可使用高速处理大量数据的硬件流水线来实施可访问存储于帧缓冲存储器60中的数据的纹理引擎112。然后将经着色的像素数据发送至光栅操作处理器114(图2中的光栅op),光栅操作处理器114视需要对经着色的像素数据进行其他处理。结果是通过帧缓冲器接口116存储在帧缓冲存储器60中的像素数据。帧像素数据可用于各种过程,例如显示器122上所显示。
如图2所示,各种站(例如主机接口104、光栅化器108、纹理站112、以及光栅操作处理器114)可访问帧缓冲存储器60。实际上,着色器110包括多个纹理站,每一纹理站均可访问帧缓冲存储器60。所有这些可访问帧缓冲存储器的站均处理数据以实现所需结果,且因此为客户端。
在图1帮助图解说明本发明所解决的问题,且图2图解说明适用于实施本发明原理的计算机***的同时,图3帮助解释如何在计算机100中实施本发明的原理。图中显示GPU 102具有存储器管理单元—在下文中为MMU 300,MMU 300处理对于客户端A 52、客户端B 58、及计算机***100的其他客户端的存储器管理任务,且可能存在许多此种装置,然而为了清晰起见没有示出。客户端自身不知道如何从帧缓冲存储器60向其提供页面。客户端只是通过客户端接口302与MMU 300发生交互作用。例如,客户端A 52可能请求页面AAA。响应于该请求,计算机100以下文所述的方式处理所述请求,该方式确保所请求的页面AAA处于或将处于帧缓冲存储器60中。
图3显示两个客户端及其支持总线、线路和存储器装置310。其他客户端将具有类似支持器件。为了将上下文装载至客户端中(比如将上下文A装载入客户端A 52中),主机接口104获得上下文(比如从CPU 103)并以上下文A对客户端A 52编程。客户端A 52然后根据上下文A处理数据,并将假定使用虚拟地址最终将对信息页面的请求发送至MMU 300。MMU 300剖析所述虚拟地址来确定所请求的页面是否可在帧缓冲存储器60中得到。如果没有页面故障—意味着所请求的信息可在帧缓冲存储器60中得到,则MMU 300不在线303上声明页面故障,且客户端A通过帧缓冲器接口116从帧缓冲存储器60获得所请求的页面。如果客户端A在执行上下文A方面取得任何前向进度,则客户端A设置其存储器装置310(例如正反器),以产生前向进度位,该前向进度位通过其接口302输入至MMU 300中。
前向进度是指撤除在正执行的过程中使用的一些数据页面,以使所述数据页面不会再被正运行的上下文的线程所需要。然而,所述数据页面可由另一线程所需要,但是这并不会影响是否已经取得前向进度。
然而,如果客户端A所请求的页面(比如页面AAA)不位于帧缓冲存储器60中,则MMU 300在线路303上将页面故障发送至客户端A 52,从而使客户端A停止处理上下文A。MMU 300还询问前向进度位的状态,并通过总线305向主机接口104发送页面异常请求页面AAA以及关于页面异常发起客户端(在该情况中为客户端A)是否已报告前向进度的指示。主机接口104将所缺失页面(页面AAA)的虚拟地址发送至中央处理器103。此外,如果且只有当客户端A报告前向进度时,主机接口104也将前向进度位发送至中央处理器103。
如果中央处理器103接收到页面故障虚拟地址,但未接收到前向进度位,则中央处理器103会询问帧缓冲存储器60以确定哪些页面可供用于交换。然而,根据本发明的原理,中央处理器103以特别的方式执行这一点。如果由于一客户端(比如客户端A 52)需要一页面(比如页面AAA)(参见图1)而由该客户端引起页面故障异常,但该客户端未报告前向进度,则中央处理器103将页面AAA添加至页面列表402中,参见图4。此外,因为为使客户端A 52取得前向进度,页面AAA必须处于帧缓冲存储器60中,所以应使用相关联的标记列表404将页面AAA标记为所需页面。然后,通过将所不需要(即在标记列表404中未伴随有标记)的页面中的一者(比如页面GHB)从帧缓冲存储器60交换到磁盘驱动器105B中以便为页面AAA腾出空间,来执行对该页面故障异常的服务。
应注意,页面列表402仅包含帧缓冲存储器60中的页面的列表,而不包含数据本身。还应注意,只有在标记列表404中具有标记的页面必须保持在帧缓冲存储器60中。所有其他页面可被换出,以便为所需页面腾出空间。检查标记列表404并确保所有经标记的页面保持在帧缓冲存储器中,是中央处理器103的任务。
上文已注重于保持标记列表404。然而,响应于页面异常,中央处理器103还向主机接口104发送用于另一客户端的上下文,比如客户端B 58。这会避免使GPU 102空闲地等待为服务于页面故障而需要进行的磁盘存取而浪费时间。以上下文(可能为上下文A)经由主机接口104对客户端B 58进行编程,且当在帧缓冲存储器60中可提供所请求的页面AAA时,启动客户端B 58的运行。如果不存在其他需要运行上下文,则可允许GPU相对空闲。此外,主机接口104为客户端B 58清除存储器装置310。如果客户端B报告任何前向进度,则存储器装置310的状态改变以通知MMU 300前向进度已报告。现在,将假定由于不能获得另一页面(比如页面BCD),客户端B引发页面故障异常,但是也不报告前向进度。然后重复关于客户端A的上述动作。
随着更多客户端引发页面故障异常且不报告前向进度,标记列表404中的经标记页面数量增加。例如,当客户端B 58因不能获得其所请求的页面BCD而引发页面故障异常且也不报告前向进度时,页面列表402及标记列表404增大。该过程重复进行,直到一个客户端引发页面故障异常但报告前向进度为止。即,客户端在遇到页面故障之前找到其所需要的所有数据而取得前向进度。在此种情况下,主机接口104对页面故障异常附加前向进度位。
当出现一伴随有前向进度位的页面故障时,中央处理器103清除标记列表404中的所有标记。这使帧缓冲器中的任何页面(产生页面故障异常的页面除外)均可被换出。
上文已论述前向进度位。大体而言,前向进度位可由任何会通知所述***引发页面故障的客户端是否已取得前向进度的信号来替代。这些信号可为特殊位、对标志的设置或清除、字或特殊代码、或类似的此类信号。报告前向进度(或无前向进度)才是重要的。然而,为了清楚起见,下文将继续称为前向进度位。
当尚未发生页面故障异常时,中央处理器103控制每一客户端必须运行其上下文的时间。在所分配的时间经过之后,中央处理器103使主机接口104让另一客户端运行上下文。这使得能够运行多个上下文,或允许多个客户端以交错方式运行一个上下文。
知晓客户端是否取得前向进度十分重要,因为这意味着至少一个客户端在帧缓冲器60中具有充分的信息以实际上撤除某一组数据,从而使上下文无需使用目前的编程指令再次处理该组数据。实质上,前向进度意味着某些工作已经完成,且因此再也无需重复,因为在执行所述工作期间,其因页面故障而被丢弃。
根据本发明的实施例,如果客户端(比如客户端A 52)在该客户端引起页面故障异常时已取得前向进度,并附加前向进度位,则中央处理器103知晓最近运行的上下文在触发页面故障之前取得了前向进度。然而,如果客户端尚未取得前向进度,则中央处理器103知晓没有取得前向进度。甚至无需知晓哪一客户端报告了关于哪一具体上下文的前向进度,中央处理器103知晓上下文的至少一个线程取得了前向进度。该知识不仅足以保证该线程取得前向进度,而且可使用在***中进行的前向进度位传播来确保最终整体上实现前向进度。
上文中隐含一种假设,即如果正在多个客户端上运行的上下文的其他线程(例如用于将一不同的像素纹理化)保持取得前向进度同时偶尔遇到页面故障(因此清除所需页面列表)—一客户端正在运行一尤其不幸运的、不能取得前向进度的线程,所述不幸运的线程将最终成为阻止启动上下文的任何新线程的不满意的从属。这使得不幸运的线程成为可为该上下文运行的唯一线程。这一线程称为关键线程。需要为上下文保持的列表402和404中的页面将最终削减至仅有为允许所述关键线程取得前向进度所需的页面。所述关键线程所不需要的已完成线程的页面将已被标记为自由。这意味着***将最终并自动地使所需数量的物理页面专用于使所述关键线程能够取得前向进度,而不会在使所述关键线程取得进度时所不需要的页面上浪费任何物理页面。
如果有几个完全独立的线程正在GPU中的独立的子***上运行,则上述方法可修改为使客户端以子***标识符来标记每一请求(以及可能每一所产生的页面故障)。然后,页面管理器将在所需页面列表上附加每子***的标识符。在此种情景下,操作***将变成负责保持使所需页面可提供给每一子***,以保证每一子***可取得进度。由操作***使用子***标识符来保持有效的每子***所需页面表以确保每一子***取得前向进度与其保持有效的每上下文所需页面列表以确保每一上下文取得进度类似。主要差别在于子***id由GPU客户端提供,而操作***将已经知晓所运行上下文的上下文id。
本发明的一替代实施例为每一上下文保持一个页面列表。在这一实施例中,页面置换算法可通过仅释放刚刚报告其已取得前向进度的上下文的前向进度所需要的页面,来确保每一上下文取得前向进度。这允许页面管理器保证每一上下文的前向进度,而不是仅仅保护任何一个上下文。
根据本发明的原理的计算机***使用前向进度位、或缺少前向进度位来保证其运行的图形应用程序或多任务应用程序当计划在GPU上运行时可实际上均取得前向进度。上述情形的一实例是当纹理子***(其为GPU中的虚拟存储器客户端)需要多个纹素,以便能够撤除一具体像素来作为执行图形应用程序的上下文的一部分时。如果这多个纹素处在不同的虚拟存储器页面上,在提取所述多个虚拟存储器页面期间可能发生多个页面故障。如果所有所需虚拟存储器页面未同时驻留于帧缓冲器中,则纹理子***将永远不能撤除该像素,从而有效地冻结图形应用程序试图渲染该像素。在不能在一定程度上保证所有所需页面将同时驻留的情况下,不能保证图形应用程序取得前向进度。
可使用具有固定大小的所需页面列表来实施上述总体方案。例如,所需页面列表的内容可能动态变化,但列表的大小却不会。当需要添加一新页面至列表中时,CPU103然后可采用某种置换策略(例如后进先出)。然而,大体而言,动态变化所需页面列表大小会避免将固定大小页面列表制作得大到足以确保在所有情况(包括病理最坏情况)下均可取得前向进度这一需求、或消除病理最坏情况要求这一需求。
虽然上文已阐述使用图形客户端的本发明的原理,但是这些原理比所述原理更宽泛。例如,客户端可包括软件应用程序和媒体处理***,例如视频和音频***。实施本发明的原理可能需要对一些操作***进一些修改。
虽然上文是关于本发明的实施例,但在不背离本发明的基本范畴的前提下,还可构想出本发明的其它及进一步实施例,且本发明的范畴由随附权利要求确定。
Claims (20)
1、一种用于操作运行具有线程的图形应用程序上下文的计算机***的方法,其包括下述步骤:在因线程需要未处于帧缓冲器中的信息而由客户端引发页面故障异常之后,向处理器发送前向进度信息,其中所述前向进度信息指明是否刚好在所述页面故障异常之前所述客户端代表所述上下文取得前向进度。
2、如权利要求1所述的方法,其中前向进度信息包括前向进度位。
3、如权利要求1所述的方法,其进一步包括确保将线程的前向进度所需的页面保持在所述帧缓冲存储器中,直到报告前向进度为止。
4、如权利要求3所述的方法,其进一步包括以下步骤:保持需要保持在帧缓冲器中的页面的列表。
5、如权利要求4所述的方法,其中动态地调节所述所需页面的列表的大小。
6、如权利要求4所述的方法,其中所述所需页面的列表由页面列表和标识所述所需页面的标记列表构成。
7、如权利要求6所述的方法,其中禁止对所述帧缓冲存储器中在所述标记列表中得到标记的页面进行页面交换。
8、一种包含用于处理器的指令的计算机可读媒体,所述处理器控制具有带多个客户端的图形处理子***的计算机***执行下述步骤:在因线程需要帧缓冲器中缺失的信息而由客户端引发页面故障异常之后,向处理器发送前向进度信息,其中所述前向进度信息提供是否刚好在所述页面故障异常之前代表所述上下文取得所述前向进度。
9、如权利要求8所述的计算机可读媒体,其中发送前向进度信息由发送前向进度位构成。
10、如权利要求8所述的计算机可读媒体,其中所述指令进一步使所述计算机***将前向进度所需的页面保持在帧缓冲存储器中,直到报告前向进度为止。
11、如权利要求10所述的计算机可读媒体,其中所述指令进一步使所述计算机***保持需要保持在所述帧缓冲器中的页面的列表。
12、如权利要求11所述的计算机可读媒体,其中所述页面的列表动态地调节大小。
13、如权利要求10所述的计算机可读媒体,其中页面的列表包括对要保持在所述帧缓冲器中的所述页面进行标记的标记列表。
14、如权利要求10所述的计算机可读媒体,其中禁止对经标记的页面进行页面交换。
15、一种具有带多个客户端的图形子***的计算机***,其包括:
帧缓冲存储器,其用于存储第一多个数据页面;
非驻留存储器,其用于存储第二多个数据页面;
多个客户端,其用于运行上下文,其中在服务于上下文时每一客户端可访问所述第一多个数据页面的页面,且其中每一客户端可发送虚拟页面请求;
存储器管理单元,其用于接收虚拟页面请求,所述存储器管理器进一步用于在所述所请求的页面不是所述第一多个数据页面的页面且因此是缺失的页面时,发送页面故障,其中所述页面故障标识所述缺失页面;
多个存储器装置,每一者均以操作方式连接至相关联的客户端及连接至所述存储器管理单元;
主机接口,其用于将上下文发送至所述多个客户端,其中上下文包括使数据页面得到请求的线程,所述主机控制器进一步用于自所述存储器管理单元接收页面故障并用于发送缺失的页面信息;
处理器,其用于选择性地将数据页面从所述第二多个数据页面交换至第一多个数据页面中,并用于将数据页面从所述第一多个数据页面交换至所述第二多个数据页面中,所述选择***换是响应于所述缺失页面信息而执行,所述处理器进一步用于为所述主机接口提供上下文;
其中当所述多个客户端中的第一客户端在上下文线程上取得前向进度时,所述第一客户端设置其相关联的存储器装置以报告前向进度;
其中当所述第一客户端请求未处于所述帧缓冲器中的数据页面时,所述存储器管理单元产生页面故障异常,所述页面故障异常包括与所述第一客户端相关联的所述存储器装置的状态;
其中所述页面故障异常使所述主机接口将缺失页面信息和前向进度信息发送至所述处理器;
其中所述处理器将所述缺失的数据页面从所述第二多个数据页面交换至所述第一多个数据页面中,并将选定的数据页面从所述第一多个数据页面交换至所述第二多个数据页面中;
其中所述所交换的缺失数据页面作为经标记的页面添加在所需页面列表中;
其中所述选定的数据页面不是所述所需页面列表中经标记的页面;
其中如果报告前向进度,则清除所述所需页面列表中除所述缺失的数据页面以外的所有所述标记;及
其中当所述第一客户端再一次运行所述上下文时,使与所述第一客户端相关联的所述存储器装置的状态复位。
16、如权利要求15所述的计算机***,其中所述帧缓冲存储器是物理存储器。
17、如权利要求15所述的计算机***,其中所述图形子***是图形处理单元。
18、如权利要求15所述的计算机***,其中所述处理器进一步确定所述多个客户端中的每一客户端可运行上下文的最大时间。
19、如权利要求15所述的计算机***,其中所述处理器构建虚拟存储器管理器。
20、如权利要求15所述的计算机***,其中所述页面故障异常使所述主机控制器切换客户端以允许运行另一上下文线程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/976,978 | 2004-10-29 | ||
US10/976,978 US7369135B2 (en) | 2004-10-29 | 2004-10-29 | Memory management system having a forward progress bit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101048764A true CN101048764A (zh) | 2007-10-03 |
CN100481029C CN100481029C (zh) | 2009-04-22 |
Family
ID=35744870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005800365349A Expired - Fee Related CN100481029C (zh) | 2004-10-29 | 2005-10-25 | 操作运行具有线程的图形应用程序上下文的计算机***的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7369135B2 (zh) |
CN (1) | CN100481029C (zh) |
TW (1) | TWI276959B (zh) |
WO (1) | WO2006049938A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655783B (zh) * | 2009-05-08 | 2012-05-16 | 上海大学 | 前瞻多线程划分方法 |
CN108349082A (zh) * | 2015-11-11 | 2018-07-31 | 库卡德国有限公司 | 用于产生操纵器程序的图形用户界面的方法和计算机程序 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7590803B2 (en) * | 2004-09-23 | 2009-09-15 | Sap Ag | Cache eviction |
US7580915B2 (en) * | 2004-12-14 | 2009-08-25 | Sap Ag | Socket-like communication API for C |
US7600217B2 (en) * | 2004-12-14 | 2009-10-06 | Sap Ag | Socket-like communication API for Java |
US20060143398A1 (en) * | 2004-12-23 | 2006-06-29 | Stefan Rau | Method and apparatus for least recently used (LRU) software cache |
US7523263B2 (en) * | 2004-12-28 | 2009-04-21 | Michael Wintergerst | Storage plug-in based on shared closures |
US20060143389A1 (en) * | 2004-12-28 | 2006-06-29 | Frank Kilian | Main concept for common cache management |
US7493449B2 (en) * | 2004-12-28 | 2009-02-17 | Sap Ag | Storage plug-in based on hashmaps |
US7694065B2 (en) | 2004-12-28 | 2010-04-06 | Sap Ag | Distributed cache architecture |
US7437516B2 (en) * | 2004-12-28 | 2008-10-14 | Sap Ag | Programming models for eviction policies |
US20060143256A1 (en) | 2004-12-28 | 2006-06-29 | Galin Galchev | Cache region concept |
US8204931B2 (en) | 2004-12-28 | 2012-06-19 | Sap Ag | Session management within a multi-tiered enterprise network |
US7539821B2 (en) * | 2004-12-28 | 2009-05-26 | Sap Ag | First in first out eviction implementation |
US7971001B2 (en) | 2004-12-28 | 2011-06-28 | Sap Ag | Least recently used eviction implementation |
US7451275B2 (en) * | 2004-12-28 | 2008-11-11 | Sap Ag | Programming models for storage plug-ins |
US7512737B2 (en) * | 2004-12-28 | 2009-03-31 | Sap Ag | Size based eviction implementation |
US7552284B2 (en) * | 2004-12-28 | 2009-06-23 | Sap Ag | Least frequently used eviction implementation |
US7516277B2 (en) * | 2005-04-28 | 2009-04-07 | Sap Ag | Cache monitoring using shared memory |
US7831634B2 (en) | 2005-04-29 | 2010-11-09 | Sap Ag | Initializing a cache region using a generated cache region configuration structure |
US7581066B2 (en) * | 2005-04-29 | 2009-08-25 | Sap Ag | Cache isolation model |
US20070038939A1 (en) * | 2005-07-11 | 2007-02-15 | Challen Richard F | Display servers and systems and methods of graphical display |
US7966412B2 (en) * | 2005-07-19 | 2011-06-21 | Sap Ag | System and method for a pluggable protocol handler |
US7809904B1 (en) | 2005-12-19 | 2010-10-05 | Nvidia Corporation | Page preloading using page characterization data |
US8639892B1 (en) * | 2005-12-19 | 2014-01-28 | Nvidia Corporation | Selectively inhibit page usage bit updates |
US9437031B2 (en) * | 2006-09-15 | 2016-09-06 | Nvidia Corporation | Virtual memory based noise textures |
US20080163063A1 (en) * | 2006-12-29 | 2008-07-03 | Sap Ag | Graphical user interface system and method for presenting information related to session and cache objects |
US8264491B1 (en) * | 2007-04-09 | 2012-09-11 | Nvidia Corporation | System, method, and computer program product for controlling a shader to gather statistics |
US20100305861A1 (en) * | 2009-05-28 | 2010-12-02 | Schlumberger Technology Corporation | Systems and methods to process oilfield data |
US8537169B1 (en) * | 2010-03-01 | 2013-09-17 | Nvidia Corporation | GPU virtual memory model for OpenGL |
TWI514324B (zh) * | 2010-11-30 | 2015-12-21 | Ind Tech Res Inst | 影像目標區域追蹤系統與方法及電腦程式產品 |
US9652560B1 (en) | 2011-07-18 | 2017-05-16 | Apple Inc. | Non-blocking memory management unit |
US9201810B2 (en) * | 2012-01-26 | 2015-12-01 | Microsoft Technology Licensing, Llc | Memory page eviction priority in mobile computing devices |
US10310854B2 (en) | 2015-06-30 | 2019-06-04 | International Business Machines Corporation | Non-faulting compute instructions |
US10061539B2 (en) * | 2015-06-30 | 2018-08-28 | International Business Machines Corporation | Inaccessibility status indicator |
US10884950B2 (en) | 2016-05-16 | 2021-01-05 | International Business Machines Corporation | Importance based page replacement |
US11116420B2 (en) * | 2017-12-26 | 2021-09-14 | Biosense Webster (Israel) Ltd. | Monitoring distance to selected anatomical structures during a procedure |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105051A (en) | 1997-10-23 | 2000-08-15 | International Business Machines Corporation | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor |
US8024735B2 (en) * | 2002-06-14 | 2011-09-20 | Intel Corporation | Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution |
US7673304B2 (en) | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
-
2004
- 2004-10-29 US US10/976,978 patent/US7369135B2/en not_active Expired - Fee Related
-
2005
- 2005-10-25 WO PCT/US2005/038294 patent/WO2006049938A1/en active Application Filing
- 2005-10-25 CN CNB2005800365349A patent/CN100481029C/zh not_active Expired - Fee Related
- 2005-10-27 TW TW094137710A patent/TWI276959B/zh active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655783B (zh) * | 2009-05-08 | 2012-05-16 | 上海大学 | 前瞻多线程划分方法 |
CN108349082A (zh) * | 2015-11-11 | 2018-07-31 | 库卡德国有限公司 | 用于产生操纵器程序的图形用户界面的方法和计算机程序 |
US10940583B2 (en) | 2015-11-11 | 2021-03-09 | Kuka Deutschland Gmbh | Method and computer program for producing a graphical user interface of a manipulator program |
CN108349082B (zh) * | 2015-11-11 | 2022-02-08 | 库卡德国有限公司 | 用于产生操纵器程序的图形用户界面的方法和计算机程序 |
Also Published As
Publication number | Publication date |
---|---|
CN100481029C (zh) | 2009-04-22 |
US20060092165A1 (en) | 2006-05-04 |
TW200622622A (en) | 2006-07-01 |
WO2006049938A1 (en) | 2006-05-11 |
TWI276959B (en) | 2007-03-21 |
US7369135B2 (en) | 2008-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100481029C (zh) | 操作运行具有线程的图形应用程序上下文的计算机***的方法 | |
US9311097B2 (en) | Managing per-tile event count reports in a tile-based architecture | |
US7999819B2 (en) | Systems and methods for managing texture descriptors in a shared texture engine | |
JP4071196B2 (ja) | ゾーン・レンダリング用の自動メモリ管理 | |
US7928990B2 (en) | Graphics processing unit with unified vertex cache and shader register file | |
US20070165042A1 (en) | Rendering apparatus which parallel-processes a plurality of pixels, and data transfer method | |
US6505283B1 (en) | Efficient memory allocator utilizing a dual free-list structure | |
US8233006B2 (en) | Texture level tracking, feedback, and clamping system for graphics processors | |
KR102674513B1 (ko) | 그래픽 처리 | |
DE102012222558B4 (de) | Signalisieren, Ordnen und Ausführung von dynamisch erzeugten Aufgaben in einem Verarbeitungs-System | |
JP2013047950A (ja) | アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用 | |
US20130141448A1 (en) | Graphics Command Generation Device and Graphics Command Generation Method | |
US8671261B2 (en) | Lightweight random memory allocation | |
DE102013205886A1 (de) | Dynamische Bankmodus-Adressierung für Speicherzugriff | |
US20080007560A1 (en) | Parameter compaction in tile based rendering device | |
CN103003839A (zh) | 反锯齿样本的拆分存储 | |
US20190235915A1 (en) | Techniques for ordering atomic operations | |
US9146870B2 (en) | Performance of accesses from multiple processors to a same memory location | |
US20190138458A1 (en) | Data processing systems | |
US6862028B2 (en) | Bin pointer and state caching apparatus and method | |
US20210158613A1 (en) | Graphics processing systems | |
US6778175B2 (en) | Method of arbitration of memory request for computer graphics system | |
CN115934590A (zh) | 电路和方法 | |
US10043230B2 (en) | Approach to reducing voltage noise in a stalled data pipeline | |
US11036644B2 (en) | Data processing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090422 Termination date: 20161025 |
|
CF01 | Termination of patent right due to non-payment of annual fee |