使用虚拟向量寄存器文件的系统和方法与流程

文档序号:17123674发布日期:2019-03-16 00:05阅读:186来源:国知局
使用虚拟向量寄存器文件的系统和方法与流程

本申请要求2016年6月23日提交的美国非临时申请no.15/191,339的权益,所述美国非临时申请的内容特此以全文引用的方式并入本文中。



背景技术:

图形处理单元(gpu)是并行处理器,所述并行处理器具有大量执行单元和高带宽存储器通道以同时运行数千个线程。gpu架构以单指令多线程(simt)单元的多个大阵列为中心,每个阵列是有序的基于记分板的超标量机,所述机器具有全套功能性:指令提取和排程管线、包括对超越函数的硬件支持的向量算术逻辑单元(alu)、存储器子系统以及向量寄存器文件。向量寄存器文件已经成为现代gpu架构中的主要瓶颈,这是因为所述向量寄存器文件对gpu操作的所有方面,成本、面积、功率以及计时,提出相当大的挑战。

附图说明

可以从结合附图以举例方式给出的以下描述获得更详细的理解,在附图中:

图1是根据某些实现方式的图形处理器的高阶框图;

图2是根据某些实现方式的图形处理管线的高阶框图;

图3是根据某些实现方式的具有向量寄存器文件的图形处理器的逻辑框图;

图4是根据某些实现方式的单指令多线程(simt)单元的示例流程;

图5是根据某些实现方式的虚拟向量寄存器文件的逻辑框图;

图6是根据某些实现方式的供虚拟向量寄存器文件使用的虚拟向量寄存器文件控制器的逻辑框图;

图7是根据某些实现方式的虚拟向量寄存器文件的具有操作流程的逻辑框图;

图8是根据某些实现方式的使用虚拟向量寄存器文件的流程图;以及

图9是示例装置的框图,一个或多个公开的实现方式可以在所述示例装置中实现。

具体实施方式

描述使用虚拟向量寄存器文件的系统和方法。特别地,图形处理器包括逻辑单元、耦合到所述逻辑单元的虚拟向量寄存器文件、耦合到所述虚拟向量寄存器文件的向量寄存器后备存储,以及耦合到所述虚拟向量寄存器文件的虚拟向量寄存器文件控制器。所述虚拟向量寄存器文件包括深度n向量寄存器文件和深度m向量寄存器文件,其中n小于m。所述虚拟向量寄存器文件控制器至少取决于对某些向量寄存器的存取请求来执行所述深度n向量寄存器文件、所述深度m向量寄存器文件以及所述向量寄存器后备存储之间的回收和分配。

图1是图形处理器或gpu100中的着色器(shader)计算部分的高阶框图。图形处理器100的着色器计算部分包括多个计算单元105,其中每个计算单元105包括序列器107和多个单指令多线程(simt)单元110。每个simt单元110能够包括多个valu115,其中每个valu115能够连接到向量寄存器文件120。每个计算单元105连接到l1高速缓存130,所述l1高速缓存又连接到l2高速缓存140。l2高速缓存140能够连接到存储器150。举例来说,在下一代图形核心(gcn)架构中,每个计算单元105能够包括4个simt单元,每个simt单元能够包括4个valu,并且每个valu能够包括4个alu。尽管本文中的描述与示例架构有关,但是在不背离权利要求的范围的情况下,能够实现每个simt不同等级的多线程、每个simt不同数目个操作数以及不同的硬件宽度。本文中的描述是说明性的。

图2是将三维场景变换成二维场景的图形处理器管线200的高阶框图。图形着色器计算处理管线200最初由计算单元205中的序列器210执行指令提取、解码和排程过程。然后将指令和数据馈送到计算单元210的多个执行单元。所述执行单元能够包括4个simt215,其中每个simt215又能够包括4个valu220。每个valu220可以是4个alu的群。计算单元205的输出能够存储在向量寄存器文件225、l1高速缓存230、l2高速缓存235或存储器240中。

一般来说,图形处理单元(gpu)是并行处理器,所述并行处理器具有大量执行单元和高带宽存储器通道以同时运行数千个线程。gpu架构以simt单元的多个大阵列为中心,每个阵列是有序的基于记分板的超标量机,所述机器具有全套功能性:指令提取和排程管线、包括对超越函数的硬件支持的valu、存储器子系统以及向量寄存器文件。向量寄存器文件已经成为现代gpu架构中的主要瓶颈,这是因为所述向量寄存器文件对gpu操作的所有方面,成本、面积、功率以及计时,提出相当大的挑战。

每个simt单元215能够用硬件来实现广泛的细粒度多线程,并且因此每个向量寄存器文件将需要大量向量寄存器以为同时在simt单元中执行的所有线程维持运行时上下文。因此,许多gpu中的多个simt单元215通常实现大向量寄存器文件。由于simt单元215本质上是向量机,因此所述寄存器文件需要在每个机器时钟周期中提供对三个向量操作数的读访问和对一个向量操作数的写访问。还可能需要额外的读写端口以处置共享存储器或gpu存储器读写。一些gpu通过将向量寄存器文件实现为伪双端口的静态随机存取存储器(sram)的多个库来实现所需的高带宽并使成本受到控制。着色器编译程序执行明断指令排序,以便使由产生的代码触发的库冲突(bankconflict)的可能减到最小。

图3是包括valu305的图形处理器或gpu300的逻辑框图。如上所述,valu305能够具有4个alu(未示出)。valu305经由交叉开关(xbar)310连接或耦合到向量寄存器文件315的多个库,例如,库a、库b、库c以及库d。xbar310能够接收来自向量寄存器文件库的源(读)操作数和来自valu305的写(目的地)操作数。xbar305能够具有用于读写操作的多个端口,包括例如将xbar310分别连接到库a、库b、库c以及库d的库a读端口、库b读端口、库c读端口以及库d读端口。

向量寄存器文件315已经成为现代gpu架构中的主要瓶颈,这是因为所述向量寄存器文件对gpu操作的所有方面,成本、面积、功率以及计时,提出相当大的挑战。就面积和成本来说,simt向量寄存器文件是大部分gpu面积的巨大贡献因素,构成面积的约10%。减小向量寄存器文件面积转变成gpu面积的显著减小。除了直接面积考量之外,向量寄存器文件面积还约束关于功率和性能的许多最优化,所述最优化将另外是平凡的和获益多的。举例来说,最优化包括用于减小功率的另外ram分块(即将ram分段成多个片段,并且仅使被存取的片段处于操作状态下,从而使其他片段处于低功率状态下)。即使仅将sram库的数目加倍也使面积增大25%到30%。举例来说,另一最优化包括使sram以较高频率运行。当前向量寄存器文件sram被实现为伪双端口的(即单个组的字线被用于两个端口),这严重地限制sram能够实现的最高频率。转移到具有用于两个端口的单独字线的真正双端口设计可以引起最大sram操作频率的期望增加,或一般来说,可以使得能够在较低电压下达到相同频率,但是会再次导致面积和功率的增加。从这个角度来说,减小向量寄存器文件区域可以实现性能和/或功率的其他最优化,同时维持相对于现有设计的区域中立性。

就功率来说,除了作为面积的最大单个贡献因素之外,simt向量寄存器文件是gpu有功功率的巨大贡献因素,占gpu功率的10-15%。因此需要减小向量寄存器文件中所消耗的功率。可以通过另外的分块来平凡地实现向量寄存器文件功率的显著减小。然而,如上所述,这个动作可以导致相当大的面积处罚。

就计时来说,使用实现所需的读写带宽的低成本sram配置来实现simt向量寄存器文件。然而,这些sram可能不会特别地快,因此提供由simt设计实现的频率极限(或最小操作电压)。使用较快的真正双端口sram实现向量寄存器文件导致大的面积增加。

如实例中示出的,图1至图3的说明性架构,图形处理器100能够以64操作数宽的simt单元110(或图2中的simt215)的阵列为中心,其中每个simt单元110能够实现对十路同时多线程(其中每个线程又是64操作数宽的simt)的支持。不管每个simt单元110在逻辑上宽64个操作数的事实,在硬件中,所述simt单元被实现为16宽,其中单个simt指令将4个时钟周期用于发布和执行。每个simt单元110中的向量寄存器文件的宽度是16个单精度浮点操作数。

simt单元110依赖于所述simt单元支持几个常驻线程(每个线程的宽度是64个操作数)以隐藏与任何给定线程中的存储器存取相关联的长潜伏时间的事实。举例来说,当目前运行的simt线程遇到对在等待数据从存储器传回的向量寄存器文件的相依性时,暂停所述simt线程并且激活新线程;当解出使线程停顿的相依性时(例如,在数据从存储器传回并填充所提及的向量寄存器后),原始线程被重新激活。不管等待的存储器数据是否来自动态ram(dram)、高速缓存或本地便签式存储器存储器,这个机制是一样的。

保持simt引擎的alu一直被占用对于高效操作是必要的,并且归结为确保在任何给定时刻,始终有准备好的非停顿代码可供分派给alu。全部10个支持的线程停顿并等待相依性解出的情形产生simt引擎上的空闲周期和低效率操作。图4示出10个线程400、402、……、418以几乎不使simt单元达到饱和的配置在simt单元上运行的示例情境。如果线程400、402、……、418中的一个发现其计算/存储器操作比的减小,则simt单元可以开始具有空闲时钟周期,因此降到100%效率之下。有多种方法用于减小由来自存储器的未决数据传回引起的执行停顿,例如数据预提取。然而,这些最优化方法常常导致更大的向量寄存器文件使用率。

图形处理器中的寄存器文件使用也可以进行微调以改进性能。举例来说,当编译一段着色器代码时,编译程序确定所述代码所需要的寄存器的适当数目。编译程序通常使用用户规定的配置,所述配置设定要使用的向量寄存器文件的最大数目。然而,编译程序根据其最优化算法自由地分配向量寄存器文件。如果原始着色器代码真地需要比编译程序被限制使用的向量寄存器文件多的向量寄存器文件,则由编译程序自动地添加执行至和来自存储器的向量寄存器文件溢出和填充的代码。溢出到存储器使性能降低,并且高性能代码通常避免向量寄存器文件溢出和填充的使用。

在编译后着色器能够在图形处理器上执行之前,一个或多个simt单元首先必须为其分配资源。硬件线程排程块(例如,着色器管插补器(spi))执行资源界限检查以作为其排程工作的部分,从而将着色器代码指派给有足够资源可供着色器代码使用的simt单元。作为这个活动的结果,确保分派给任何给定simt单元的全部线程不会使用比simt单元中可用的向量寄存器多的向量寄存器。由线程使用的simt单元的硬件资源专属于同一个线程,直到所述线程已完成其全部指令的执行为止。这种硬件排程的副作用是:一般来说,simt单元中的一些向量寄存器未被使用。作为实例,如果spi正在排程10同等的线程,并且每一个所述线程需要100个向量寄存器,则spi将仅能够一次排程2个线程在任何simt单元上工作。所述两个线程将利用200个向量寄存器,而56个向量寄存器不被使用(假设具有例如256个寄存器的向量寄存器文件)。未使用的向量寄存器的准确数目取决于在图形处理器中运行的代码的混合,但是,在任一情况下,这种行为构成寄存器文件最优化的明确机会。

在另一实例中,在任何给定时间,大量的向量寄存器(用于来自存储器层次中的较高层的数据的分级的全部向量寄存器)正在充当load指令的目标。保存在那些向量寄存器中的值是陈旧的,并且向量寄存器存储本身除了作为数据传回的保留存储器以外是无用的。这是最优化的另一机会。

在另一实例中,现代游戏开发引起常常利用实现超级组的功能性的“超级像素着色器”,所述功能性意图覆盖许多潜在的使用情况,所述着色器具有众多的材料和相关联的双向反射分布函数(brdf),以及众多的具有不同性质的不同光源。着色器开发中的这种趋势导致着色器编译程序必须分配给向量寄存器的许多变量。这种向量寄存器分配可能是多余的,这是因为向量寄存器不可能全部被使用(或非常节约地使用)。这种分配由于关于在给定着色器启用中实际被使用的哪个材料/光/其他特性的决定是使用运行时分支来动态地进行而发生。这是最优化的另一机会。

一般来说,持续性特质在所有图形处理器工作负荷:图形再现和寄存器使用的计算情境中可见。这些特质可以包括向量寄存器值经常(约60%的时间)仅被存取一次。就是说,alu或load导致在被覆写或不再被引用之前仅读取一次。其他特质可以是:向量寄存器值在90%的情况下被存取一次或两次,或只读取一次的向量寄存器值的70%不会立即被销毁。在寄存器值被存取多于一次的情况下,连续存取之间的平均时间大于400个gpu时钟周期,并且对于许多工作负荷来说,所述平均时间大于1000个时钟周期。

描述了使用虚拟向量寄存器文件的系统和方法,所述虚拟向量寄存器文件可以通过在平衡低等待时间和寄存器使用的同时产生较低裸片面积、较低功率以及较快的simt单元来解决当前寄存器文件架构所提出的所有瓶颈。所述虚拟向量寄存器文件架构可以包括两层的非均质硬件向量寄存器文件结构,所述结构能够通过只要有可能,避免存取大结构而改为存取小结构来产生显著的功率效益。提供对两个等级之间的向量寄存器分配的管理,以便将对较大向量寄存器文件的访问数目减到最小。特别地,所述虚拟向量寄存器文件架构通过避免具有在任何给定时间不可用的大比例的向量寄存器和减小向量寄存器文件大小来提供对向量寄存器文件存储的更高效管理。举例来说,对于“超级像素着色器”,所述虚拟向量寄存器文件恰好避免将昂贵的物理向量寄存器存储用在未使用(或使用一次两次,然后死亡)的向量寄存器上。

一般来说,虚拟化向量寄存器文件结构向软件和spi通过相同的逻辑视图(256个虚拟向量寄存器),但是仅实现芯片中的256个虚拟向量寄存器的子集,例如128或196。为了到软件和spi的256个可用向量寄存器的完整逻辑视图,向量寄存器需要支持进出存储器中的后备存储的对换。

图5是图形处理器500的一部分的逻辑框图,所述部分具有虚拟向量寄存器文件505。图形处理器500包括经由交叉开关(xbar)515连接或耦合到虚拟向量寄存器文件505的valu510。特别地,xbar515接收来自valu510的操作数。虚拟向量寄存器文件505能够具有向量寄存器的多个库,例如库a、库b、库c以及库d。向量寄存器的每个库能够包括小的低功率向量寄存器文件520和大的功率饥饿向量寄存器文件525。两种向量寄存器文件的宽度相等。向量寄存器文件520可以是深度n的向量寄存器,而向量寄存器文件525可以是深度m的向量寄存器,其中m大于n。xbar310具有用于读写操作的多个端口,包括例如将xbar310连接到向量寄存器文件520的每个库的库a读端口、库b读端口、库c读端口以及库d读端口。向量寄存器文件525连接到能够以例如dram的存储器来实现的向量寄存器后备存储530。

图6是图形处理器600的一部分的逻辑框图,所述部分包括供虚拟向量寄存器文件610和寄存器后备存储615使用的虚拟向量寄存器文件控制器605。虚拟向量寄存器文件控制器605促进虚拟化功能性和二级向量寄存器文件。特别地,所述虚拟向量寄存器文件控制器605将同一个逻辑视图提供给软件和spi,就像所有向量寄存器文件是物理实现的。虚拟向量寄存器文件控制器605包括连接到分配器/释放器模块625的向量寄存器再映射表620。虚拟向量寄存器文件610包括具有n个向量寄存器的小向量寄存器文件630和具有m个向量寄存器的大向量寄存器文件635。

向量寄存器再映射表620以虚拟向量寄存器编号作为索引,其中每个表项目存储指向对应物理硬件向量寄存器文件(例如小向量寄存器文件630或大向量寄存器文件635)或向量寄存器后备存储615的指针。每个表项目还能够含有:“常驻”位,所述常驻位说明向量寄存器是否存在于物理硬件向量寄存器文件中(与存在于向量寄存器后备存储中相反);“存取”位,所述存取位使替换算法能够用于向量寄存器分配/释放;以及“重写”位,所述重写位能够用于最优化对向量寄存器文件层级的下一个较高层的写回。clock算法可以是替换算法的实例。

除了支持向量寄存器文件虚拟化之外,向量寄存器再映射表620以及分配器/释放器模块625还能够用于管理跨小向量寄存器文件630和大向量寄存器文件635的向量寄存器指派。特别地,定义高效向量寄存器分配/释放方案驱动虚拟向量寄存器文件架构的效率。物理寄存器分配是根据需求(指令需要处于后备存储中的向量寄存器,载入结果已从存储器传回,以及类似情况)、关于是否分配小或大向量寄存器文件中的物理向量寄存器的决定以及关于要回收哪个已常驻在向量寄存器文件中的向量寄存器的确定,预期所有前述内容将基于多个因素或启发法的组合。

在gpu的向量寄存器使用中观察到的一致图案使得能够将一些简单的启发法用于最优化向量寄存器管理。示例启发法可以是来自分配在小向量寄存器文件630中的载入或纹理存取指令的传回数据,因此所述文件有可能很快即被存取。在另一实例中,尝试被指令存取的虚拟向量寄存器目前还未常驻在芯片上(即,所述虚拟向量寄存器在向量寄存器后备存储615中),被分配并被带到小向量寄存器文件630中,这是因为所述虚拟向量寄存器有可能很快即被读取。传入虚拟向量寄存器的向量寄存器文件位置不被分配,直到相关值来自存储器(即及时分配),这与向量寄存器起始后的预分配相反。在另一实例中,保存store指令的值的虚拟向量寄存器能够从小向量寄存器文件630转移到大向量寄存器文件635或向量寄存器后备存储615,这是因为值可能很快不可使用。相比之下,alu指令结果能够存储在小向量寄存器文件630中,因为所述结果有可能很快再次被存取。以上启发法是为了向量寄存器文件分配和释放而说明,并且在不背离说明书的范围的情况下可以使用其他启发法。

虚拟向量寄存器文件控制器605维持一组列表(或数据结构)以用于向量寄存器文件管理。就是说,这些文件可以是硬件管理列表。举例来说,硬件虚拟向量寄存器文件控制器能够维持不同列表,以使向量寄存器移动到不同的向量寄存器文件或后备存储。每个列表能够含有待移动到其他向量寄存器文件或后备存储的最佳候选向量寄存器。可以为了回收处理而维持一组列表,并且所述组列表能够包括:1)回收到大向量寄存器文件的良好候选项(evs2large),其中常驻在小向量寄存器文件中并由alu或store指令存取的向量寄存器被添加到evs2large列表;和2)回收到后备存储的良好候选项(evs2bstr和evl2bstr),其中作为不展现任何分支散开的load指令(所有线程执行所述指令)的目标的向量寄存器将取决于向量寄存器是否常驻在小或大硬件向量寄存器文件中而添加到evs2bstr或evl2bstr。

可以为了分配和释放处理而维持另一组列表,并且所述另一组列表能够包括:1)freesmall,其维持小向量寄存器文件中的当前未分配的物理向量寄存器的列表;和2)freelarge,其维持大向量寄存器文件中的当前未分配的物理向量寄存器的列表。一般来说,freesmall和freelarge列表由于simt单元在经过初始化之后工作而能够逐渐变空白。一旦freesmall和freelarge列表变为空,所述列表将不再填满,以下事件除外:1)simt单元被重新初始化;和2)simt单元完成执行线程,并且与线程相关的向量寄存器被释放。在稳态操作条件下,预期全部向量寄存器释放将由回收处理列表和例如clock算法的替换算法来控制。

另一列表或数据结构能够用于根据线程实现向量寄存器管理。这个列表或数据结构能够根据线程追踪虚拟向量寄存器“所有权”,并且能够基于拥有特定向量寄存器的线程是否被暂停或在作用中来修改向量寄存器对换和大/小硬件向量寄存器文件常驻决定。举例来说,如果线程被暂停,则全部相关向量寄存器文件能够被移到向量寄存器后备文件。

在操作上,如果新的虚拟向量寄存器文件需要被指派大或小硬件向量寄存器文件中的物理槽,则分别检查evs2large、evs2bstr以及evl2bstr列表。如果相关列表并非空白的,则所述列表的顶部值退出队列,并且与顶部列表元素相关联的物理向量寄存器被适当地回收到大向量寄存器文件或向量寄存器后备存储。根据需要来分配新馈入的物理向量寄存器。能够实现如下规则:没有物理向量寄存器常驻在多于一个的严格执行的列表(free*和ev*)中。在适当回收候选项(ev*2*)和自由队列空白并且需要新的物理向量寄存器分配的情况下,可以使用替换算法来进行关于要回收哪个向量寄存器文件(大或小寄存器文件)的决定。在示例替换算法中,由于向量寄存器文件值寿命是回收适合性的有力指示,因此clock算法可以是用于确定要回收的向量寄存器文件的有效方法。

能够通过确保保证任何给定计算单元(cu)/simt单元中的作用中着色器在任何给定时间有进步来实现对由动态分配或死锁引起的潜在资源匮乏的避免。这种避免能够通过将一个作用中着色器指定为专用的来进行。这种指定赋予被指定的作用中着色器比其他着色器高的优先权(这种赋予能够基于分派年龄或其他元数据来进行),并且保证全部资源的指定需要,甚至以其他作用中着色器的低效率和匮乏为代价。

图7是包括虚拟向量寄存器文件710的图形处理器700的具有操作流程的逻辑框图。一般来说,图形处理器700包括两个着色器对(sp),其中每个sp包括一对simt单元。每个simt单元包括四个valu,其中每个valu包括四个alu。出于说明目的,图7示出图形处理器700,其中sp705耦合或连接到序列器(sq)702。sp705包括虚拟向量寄存器文件710,所述虚拟向量寄存器文件又由一组小向量寄存器文件712组成,所述组的向量寄存器文件分别耦合到一组大向量寄存器文件714。小向量寄存器文件712中的每一个经由读/写端口耦合到xbar716,所述xbar又经过耦合以接收来自valu718的操作数。大向量寄存器文件714中的每一个耦合到向量寄存器后备存储720。

sq702包括虚拟向量寄存器文件控制器730、多个每线程指令缓冲器732、寄存器准备检查器734、具有准备向量寄存器的指令缓冲器736以及线程仲裁器738。每线程指令缓冲器732连接到指令高速缓存740。虚拟向量寄存器文件控制器730包括分配器/释放器模块745和寄存器再映射表750。

在操作上,每线程指令缓冲器732被馈入来自指令高速缓存740的指令。在每个每线程指令缓冲器732的顶部的指令有资格发布。向量寄存器准备检查器734确定所述顶部指令向量寄存器是否在物理存储“准备好使用”(例如,小向量寄存器文件712)中或在大向量寄存器文件714或向量寄存器后备存储720中。如果向量寄存器准备好使用,则指令在其等待被选择的情况下被转发到具有准备向量寄存器的指令缓冲器736,以经由线程仲裁器738发布到sp705(即valu718)。

如果向量寄存器碰巧在其被指令需要时并未常驻在硬件向量寄存器文件中,则向量寄存器准备检查器734会被通知所述情况下,并且导致存取的相关线程会被暂停,而另一线程会被选中以用于执行。虚拟向量寄存器文件控制器730接着执行对换过程(回收/分配分析),以将所需的向量寄存器带到至少小向量寄存器文件712中。分配器/释放器模块745和向量寄存器再映射表750适当地复查回收和自由列表,以确定要回收哪些已常驻的向量寄存器,以便带来所需的向量寄存器。选择能够基于例如最近所使用的标准回收策略来进行。随后,虚拟向量寄存器文件控制器730对换遗漏的向量寄存器,并且通知向量寄存器准备检查器734(并且最终,sq702中的排程器):准备好再次排程向量寄存器所要的线程。所述相关指令接着被转发到具有准备向量寄存器的指令缓冲器736,并等待发布。

可以注意到,与具有准备向量寄存器的指令缓冲器736中的指令相关联的全部向量寄存器没有资格被发送到向量寄存器后备存储720,因为允许这种情况可以引起死锁。

本文中所描述的虚拟文件寄存器架构能够每个simt或每个cu地实现。鉴于此,虚拟寄存器文件控制器能够以sp或sq来实现(如图7中所示)。

图8是根据某些实现方式的使用虚拟向量寄存器文件的流程图800。在接收到存储器请求后,图形处理器确定所请求的向量寄存器是否存在于虚拟向量寄存器文件中的对应物理硬件向量寄存器文件中,其中所述虚拟向量寄存器文件包括深度n向量寄存器文件和深度m向量寄存器文件,n小于m(块805)。对向量寄存器再映射表编索引,以确定所述所请求的向量寄存器是否在虚拟向量寄存器文件中的所述对应物理硬件向量寄存器文件中(块810)。分配器/释放器模块复查多个列表,以将所述所请求的向量寄存器带入所述对应物理硬件向量寄存器文件中(块815)。虚拟向量寄存器文件控制器发起对换过程,以将所述所请求的向量寄存器带入所述对应物理硬件向量寄存器文件中(块820),并且发送所述所需向量寄存器现在存在的通知(块825)。

图9是示例装置900的框图,一个或多个公开的实施方案的一个或多个部分可以在所述示例装置中实现。装置900可以包括例如头戴式装置、服务器、计算机、游戏装置、手持装置、机顶盒、电视、移动电话或平板电脑。装置900包括处理器902、存储器904、存储设备906、一个或多个输入装置908,以及一个或多个输出装置910。装置900还可以任选地包括输入驱动器912和输出驱动器914。将理解,装置900可以包括图9中未示出的额外部件。

处理器902可以包括中央处理单元(cpu)、图形处理单元(gpu)、位于同一裸片上的cpu和gpu,或一个或多个处理器核心,其中每个处理器核心可以是cpu或gpu。存储器904可以与处理器902位于同一裸片上,或可以与处理器902分开定位。存储器904可以包括易失性或非易失性存储器,例如随机存取存储器(ram)、动态ram或高速缓存。

存储设备906可以包括固定或可移动存储设备,例如,硬盘驱动器、固态硬盘、光盘或闪存驱动器。输入装置908可以包括键盘、小键盘、触摸屏、触摸板、检测器、传声器、加速度计、陀螺仪、生物扫描器,或网络连接(例如,用于传输和/或接收无线ieee802信号的无线区域网卡)。输出装置910可以包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线,或网络连接(例如,用于传输和/或接收无线ieee802信号的无线区域网卡)。

输入驱动器912与处理器902和输入装置908通信,并且准许处理器902接收来自输入装置908的输入。输出驱动器914与处理器902和输出装置910通信,并且准许处理器902将输出发送到输出装置910。请注意,输入驱动器912和输出驱动器914是任选部件,并且如果输入驱动器912和输出驱动器914不存在,则装置900将以相同方式操作。

一般来说,一种图形处理器包括逻辑单元和耦合到所述逻辑单元的虚拟向量寄存器文件。所述虚拟向量寄存器文件包括深度n向量寄存器文件和深度m向量寄存器文件,其中n小于m。所述图形处理器还包括耦合到所述虚拟向量寄存器文件的向量寄存器后备存储,和耦合到所述虚拟向量寄存器文件的虚拟向量寄存器文件控制器,其中所述深度n向量寄存器文件、所述深度m向量寄存器文件以及所述向量寄存器后备存储之间的回收/分配至少取决于对某些向量寄存器的存取请求。所述虚拟向量寄存器文件控制器包括向量寄存器再映射表和分配器/释放器模块,所述分配器/释放器模块耦合到所述向量寄存器再映射表并且耦合到所述虚拟向量寄存器文件和所述向量寄存器后备存储。

所述向量寄存器再映射表以虚拟向量寄存器编号作为索引,其中每个表项目存储指向所述向量寄存器后备存储或所述虚拟向量寄存器文件中的对应物理硬件向量寄存器文件的指针。每个表项目包括:常驻位,所述常驻位说明向量寄存器是否物理存在于所述虚拟向量寄存器文件中;存取位,所述存取位使替换算法能够用于向量寄存器分配/释放;以及重写位,所述重写位用于最优化对向量寄存器文件层级的下一个较高层的写回。所述分配器/释放器使用多个列表来追踪回收的候选项和追踪为了用于回收/分配分析而未分配的向量寄存器文件。所述分配器/释放器使用列表来根据线程追踪向量寄存器文件所有权以用于回收/分配分析。所述虚拟向量寄存器文件控制器向外部部件呈现全部向量寄存器是用硬件物理实现的逻辑视图。

一般来说,一种在图形处理器中使用虚拟向量寄存器文件的方法确定所请求的向量寄存器是否存在于虚拟向量寄存器文件中的对应物理硬件向量寄存器文件中,其中所述虚拟向量寄存器文件包括深度n向量寄存器文件和深度m向量寄存器文件,n小于m。所述方法还由虚拟向量寄存器文件控制器发起对换过程,以将所述所请求的向量寄存器带入所述对应物理硬件向量寄存器文件中,并且发送所述所需向量寄存器现在存在的通知。

所述方法还对向量寄存器再映射表编索引,以确定所述所请求的向量寄存器是否在虚拟向量寄存器文件中的所述对应物理硬件向量寄存器文件中,并且由分配器/释放器模块复查多个列表,以将所述所请求的向量寄存器带入所述对应物理硬件向量寄存器文件中。所述向量寄存器再映射表以虚拟向量寄存器编号作为索引,其中每个表项目存储指向所述向量寄存器后备存储或所述虚拟向量寄存器文件中的对应物理硬件向量寄存器文件的指针。每个表项目包括:常驻位,所述常驻位说明向量寄存器是否物理存在于所述虚拟向量寄存器文件中;存取位,所述存取位使替换算法能够用于寄存器分配/释放;以及重写位,所述重写位用于最优化对向量寄存器文件层级的下一个较高层的写回。所述多个列表追踪回收的候选项并且追踪为了用于回收/分配分析而未分配的向量寄存器文件。所述分配器/释放器使用列表来根据线程追踪向量寄存器文件所有权以用于回收/分配分析。所述虚拟向量寄存器文件控制器向外部部件呈现全部向量寄存器是用硬件物理实现的逻辑视图。

一般来说,一种非暂时性计算机可读媒体,包括当在图形处理器中执行时致使所述图形处理器执行使用虚拟向量寄存器文件的方法的指令,所述方法确定所请求的向量寄存器是否存在于虚拟向量寄存器文件中的对应物理硬件向量寄存器文件中,其中所述虚拟向量寄存器文件包括深度n向量寄存器文件和深度m向量寄存器文件,n小于m。所述方法由虚拟向量寄存器文件控制器发起对换过程,以将所述所请求的向量寄存器带入所述对应物理硬件向量寄存器文件中,以及发送所述所需向量寄存器现在存在的通知。所述方法还对向量寄存器再映射表编索引,以确定所述所请求的向量寄存器是否在虚拟向量寄存器文件中的所述对应物理硬件向量寄存器文件中,以及由分配器/释放器模块复查多个列表以将所述所请求的向量寄存器带入所述对应物理硬件向量寄存器文件中。所述向量寄存器再映射表以虚拟向量寄存器编号作为索引,其中每个表项目存储指向所述向量寄存器后备存储或所述虚拟向量寄存器文件中的对应物理硬件向量寄存器文件的指针。每个表项目包括:常驻位,所述常驻位说明向量寄存器是否物理存在于所述虚拟向量寄存器文件中;存取位,所述存取位使替换算法能够用于向量寄存器分配/释放;以及重写位,所述重写位用于最优化对向量寄存器文件层级的下一个较高层的写回。所述多个列表追踪回收的候选项并且追踪为了用于回收/分配分析而未分配的向量寄存器文件。所述分配器/释放器使用列表来根据线程追踪向量寄存器文件所有权以用于回收/分配分析。所述虚拟向量寄存器文件控制器向外部部件呈现全部向量寄存器是用硬件物理实现的逻辑视图。

一般来说而非限制本文中所描述的实施方案,一种计算机可读非暂时性媒体,包括当在处理系统中执行时致使所述处理系统执行使用虚拟向量寄存器文件的方法的指令。

应当理解,许多变化基于本文中的公开是可能的。尽管上文以特定组合描述了多个特征和多个元件,但是每个特征或元件可以在没有其他特征和元件的情况下单独使用,或在具有或不具其他特征和元件的情况下以各种组合使用。

所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例说明,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(dsp)、多个微处理器、与dsp核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)电路、任何其他类型的集成电路(ic),和/或状态机。这些处理器可以通过使用处理后的硬件描述语言(hdl)指令的结果和包括网表的其他中间数据(这些指令能够存储在计算机可读媒体上)的结果来配置制造过程而制造。此类处理的结果可以是掩模作品,所述掩模作品接着在半导体制造过程中使用以制造实现实施方案的多个方面的处理器。

本文中所提供的方法或流程图可以用计算机程序、软件或并入非暂时性计算机可读存储媒体中的固件来实现以供通用计算机或处理器执行。非暂时性计算机可读存储媒体的实例包括只读存储器(rom)、随机存取存储器(ram)、寄存器、高速缓存存储器、半导体存储器装置、例如内部硬盘和移动磁碟的磁性媒体、磁光媒体,以及例如cd-rom光碟和数字多功能光碟(dvd)的光学媒体。

***

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1