[发明专利]用于无死锁管线操作的系统及方法有效
申请号: | 201010142006.4 | 申请日: | 2010-04-08 |
公开(公告)号: | CN101859257A | 公开(公告)日: | 2010-10-13 |
发明(设计)人: | 迈克尔·托克斯维格;埃里克·林霍尔姆 | 申请(专利权)人: | 辉达公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京市磐华律师事务所 11336 | 代理人: | 董巍;徐丁峰 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 死锁 管线 操作 系统 方法 | ||
技术领域
本发明的实施例总体上涉及图形处理单元(GPU)上的指令处理。
背景技术
随着计算机系统的发展,图形处理单元(GPU)已日益改进。例如,GPU包括多个执行单元,并且维持这些执行单元繁忙对于确保高GPU总体性能变成越来越重要的任务。
GPU常包括用于执行纹理化操作的纹理单元。这些纹理单元需要访问储存在存储器中的纹理数据,以执行纹理操作。相对于GPU的执行单元的速度,存储器访问通常花费相对较长的时间。相应地,在给定时间发送若干纹理请求。在一些传统GPU中,每个纹理请求都指定寄存器以获取参数并且该寄存器就纹理操作的结果而言一般都相同。
令人遗憾的是,用于可以处于执行状态的纹理管线的全部纹理操作的寄存器堆存储空间的量等同于大量存储器存储空间。因此,对存储空间的限制造成对能够发送的请求数的限制,且因而产生对一次能够处理的像素数的限制。一种方案是将纹理操作的结果写回到含有纹理请求的存储位置。然而,此方案仍然要给纹理请求分配存储结果空间,这意味着在任何给定时间能够在管线中处理的像素数受到限制并且执行单元不会保持繁忙,从而影响GPU的总体性能。
另一方案是使每个线程具有多个未决纹理请求,因为这意味着需要少数线程覆盖纹理等待时间(latency)。令人遗憾的是,每个线程也会需要更多寄存器容纳中间结果进行同时存储。这增加了所需的寄存器堆尺寸。将会有利的是,每线程能够发送多个纹理指令,而同时不需要相应大的寄存器堆。照这样,利用节省下来的,如未分配给纹理操作的可用寄存器堆尺寸可以发送更多线程。
发明内容
据此,所需要的是一种能够降低存储空间要求并防止图形线程处理死锁的系统。本发明的实施例提供用于执行单元管线结果的存储空间(如,用于纹理管线结果的缓冲器)。实施例通过限制每个线程的请求数并确保除非有资源可用以完成一组请求中的全部请求否则不发送或开始该组请求,来进一步提供对死锁的防止。因而,本发明的实施例提供了没有死锁的改进性能。
更具体而言,本发明的实施例允许增加使用具有多个未决纹理请求的每个线程而无需大寄存器堆存储空间,这是因为这些纹理操作的结果被储存在管线缓冲器中。纹理指令被分成两部分,一部分是对纹理单元的发送纹理请求且第二部分是从纹理单元读回结果的操作。该结果被放置到管线缓冲器单元而非寄存器堆中。为了避免死锁,除非缓冲器能够适应全部请求,否则线程可以不发送其请求。这将避免由于缓冲器中不存在请求的数据而不能满足该请求的情形。因为结果槽全部被占用,所以需要读取缓冲的结果以避免停滞管线。通过需要较少寄存器堆存储空间,能够同时处理更多线程,从而提高GPU的并行性并因而提高其性能。
在一个实施例中,本发明是一种用于防止图形处理单元(GPU)死锁的由计算机实施的方法。所述方法包括:确定可用管线缓冲器资源的数目,所述可用管线缓冲器资源可以是管线的一部分(如,纹理管线的一部分或纹理单元的缓冲器);以及基于第一线程的一个或多个纹理请求来确定正被请求的资源数。如果所请求的资源数少于缓冲器中的可用资源数,则在缓冲器中分配对应于所述一个或多个请求的资源,否则,则不分配。所述方法进一步包括:调整(如,减少)所述可用资源数并发送所述一个或多个请求。然后,在通过其他操作读出缓冲器的内容时,可调整(如,增加)所述资源数。
在另一实施例中,本发明被实施为用于图形处理的系统,其中,纹理操作被分成纹理请求操作和纹理读回操作,并且进一步其中,纹理操作的结果被储存在与纹理管线相关联的缓冲器中,而非寄存器堆中。所述系统包括:调度模块,用于选择用于执行的线程;和请求跟踪模块,用于确定线程的纹理请求数。每个纹理请求都可对应于执行管线的资源(如,纹理管线的槽或纹理单元的缓冲器槽)。所述系统进一步包括:资源监视模块,用于确定所述执行管线的可用缓冲器资源数;和执行模块,用于基于所述可用资源(如,纹理单元中的槽)数来确定是否执行请求以防止死锁,并用于分配执行管线的资源。
照这样,本发明的实施例总体上有助于提高对图形处理单元(GPU)的利用并且因而有助于改善其性能。实施例为纹理管线提供存储空间(如,缓冲器),以储存结果,从而释放寄存器堆中的存储空间。增大寄存器中可用的空间有利于允许执行单元并发处理更多线程。本发明的实施例通过基于可用缓冲器资源控制可发送的多纹理请求的数目而使线程中读取结果的点总是可达到,来进一步防止死锁。因此,本发明的实施例提供了没有死锁的改进性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于辉达公司,未经辉达公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010142006.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:生物节律信息的获取方法
- 下一篇:记录装置