数据单元的关联性检查方法以及使用该方法的装置与流程

文档序号:16253220发布日期:2018-12-12 00:13阅读:141来源:国知局
数据单元的关联性检查方法以及使用该方法的装置与流程

本发明涉及一种三维图形技术,特别是一种数据单元的关联性(dependency)检查方法以及使用该方法的装置。

背景技术

在三维图形管道中,光栅化器(rasterizer)转换像素(primitives)为画素(pixels),并且将画素传送至画素着色器(pixelshader)。画素着色器则用以决定即将写入绘制目标的最后画素颜色。光栅化器顺序性地产生像素,并且为每一个像素产生片元。数据单元(例如,小方块,quads)的信息会摘要出来并打包至执行线程。一个执行线程包含一定数目的数据单元,画素着色器初始并平行执行多个执行线程。执行线程于画素着色器中执行时可能不按照顺序。但是,画素着色器需要依据光栅化器产生数据单元的顺序来输出这些数据单元。然而,对于相同数据单元,执行线程间可能发生未写入便读出的意外。因此,需要一种数据单元的关联性检查方法以及使用该方法的装置,用以避免以上所述的问题。



技术实现要素:

本发明的实施例提出一种数据单元的关联性检查方法。上述数据单元的关联性检查方法包含:从一画素着色器中的一第一执行线程接收关联于一数据单元的一存储器存取请求;从一窗口缓存器的一储存格的多个比特值取得上述数据单元的一处理状态,其中上述储存格的每个比特值关联于一二维影像的具体坐标处的一个数据单元;藉由检查上述储存格的对应比特值判断上述数据单元是否正被一第二执行线程处理;如果是,则执行一请求拒绝程序,用以避免上述第一执行线程存取一动态随机存取存储器中关联于上述数据单元的属性值;以及否则,执行一请求允许程序,用以允许上述第一执行线程存取上述动态随机存取存储器中关联于上述数据单元的属性值。上述存储器存取请求中包含上述数据单元于上述二维影像上的坐标,以及上述窗口缓存器为一读一写类型或二读二写类型的静态随机存取存储器。于上述从一窗口缓存器取得上述数据单元的一处理状态的步骤,更包含:依据上述坐标计算一储存格索引;读取上述一读一写类型或二读二写类型的静态随机存取存储器中相应于上述储存格索引的整个储存格数据;以及从上述整个储存格数据取得上述数据单元的上述处理状态。

本发明的实施例提出一种数据单元的关联性检查装置,包含窗口缓存器及窗口检查器。窗口检查器耦接于窗口缓存器,从一画素着色器中的一第一执行线程接收关联于一数据单元的一存储器存取请求;从上述窗口缓存器的一储存格的多个比特值取得上述数据单元的一处理状态,其中上述储存格的每个比特值关联于一二维影像的具体坐标处的一个数据单元;藉由检查上述储存格的对应比特值判断上述数据单元是否正被一第二执行线程处理;如果是,则执行一请求拒绝程序,用以避免上述第一执行线程存取一动态随机存取存储器中关联于上述数据单元的属性值;否则,执行一请求允许程序,用以允许上述第一执行线程存取上述动态随机存取存储器中关联于上述数据单元的属性值。上述存储器存取请求中包含上述数据单元于上述二维影像上的坐标,上述窗口缓存器为一读一写类型或二读二写类型的静态随机存取存储器,以及上述窗口检查器依据上述坐标计算一储存格索引;读取上述一读一写类型或二读二写类型的静态随机存取存储器中相应于上述储存格索引的整个储存格数据;以及从上述整个储存格数据取得上述数据单元的上述处理状态。

附图说明

图1是依据本发明实施例的数据单元的关联性检查装置的硬件架构图。

图2是依据本发明实施例的转换到二维影像的像素示意图。

图3是依据本发明实施例的画素处理方法流程图。

图4是依据本发明实施例由窗口检查器130执行的关联性检查方法的流程图。

图5是依据本发明实施例由窗口释放器150执行的关联性检查方法的流程图。

图6是依据本发明实施例的仲裁器的方块图。

具体实施方式

以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。

必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。

于权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。

图1是依据本发明实施例的数据单元的关联性检查装置的硬件架构图。动态随机存取存储器120储存关联于2d影像中画素的属性值,例如坐标、z值、颜色等。于执行特定作业时,例如,产生光栅顺序视图(rov,rasterorderedviews)、融合像素间的画素值等,画素着色器110需要存取动态随机存取存储器(dram,dynamicrandomaccessmemory)120中的画素的属性值。一个作业通常包含从动态随机存取存储器120读取关联特定位置的属性值、运算以及将关联特定位置的运算结果写回动态随机存取存储器120。于此须注意的是,当画素着色器110中的一个执行线程已经读取特定位置的属性值但尚未将运算结果写回时,特定位置的属性值不能被其它执行线程读取。否则,将发生未写入便读出的意外。图2是依据本发明实施例的转换到二维(2d,two-dimensional)影像的像素示意图。光栅化器依序产生像素210及230,并转换到以小方块(quads)为单位的2d影像,其中反斜线的部分是像素210及230间重叠的区域。当重叠区域中的任一画素同时被关联于像素210及230的执行线程处理时,画素着色器110需保证除非关联于像素210的执行线程处理此画素结束,否则不能让关联于像素230的执行线程开始处理此画素。

图3是依据本发明实施例的画素处理方法的流程图。此方法由画素着色器110中的一个执行线程实施。首先,从缓存器取得待处理的数据单元的信息(步骤s311)。其中,数据单元可为一或多个画素、小方块、片元等。取得信息中至少包含此数据单元于2d影像上的位置。2d影像的位置可以(x,y)坐标、小方块编号(quadnumber)、片元编号(tilenumber),或其它信息表示。为保证执行线程间存取相同画素的属性值的顺序符合像素产生的顺序,执行线程向窗口检查器(windowchecker)130发出关联于此数据单元的存储器存取请求(步骤s313)。存储器存取请求中至少包含此数据单元于2d影像上的位置。接着,于接收到窗口检查器130的请求允许信息(acknowledgement)后(步骤s315中“是”的路径),从动态随机存取存储器120读取关联于此数据单元的属性值(步骤s331)。于接收到窗口检查器130的请求拒绝信息(rejection)后(步骤s315中“否”的路径),执行线程可于一段时间后重新向窗口检查器130发出关联于此数据单元的存储器存取请求(步骤s313)。于另一些实施例中,执行线程可于发出存储器存取请求后启动一个定时器,用以计时一段时间。当定时器逾时前接收到窗口检查器130的请求允许信息后(步骤s315中“是”的路径),从动态随机存取存储器120读取关联于此数据单元的属性值(步骤s331)。当定时器逾时后(步骤s315中“否”的路径),重新向窗口检查器130发出关联于此数据单元的存储器存取请求(步骤s313)。于读取所需数据后(步骤s331),执行线程对此数据单元的属性值进行运算(步骤s333),将此数据单元的运算结果写回动态随机存取存储器120(步骤s335),以及通知窗口释放器(windowreleaser)150关联此数据单元的存储器存取结束(步骤s337)。窗口检查器130及窗口释放器150的技术细节将讨论如后。

窗口缓存器160储存每一个数据单元的处理状态,可实施于一读一写类型的静态存取存储器(1r1wtypesram,staticrandomaccessmemory)。窗口缓存器160可包含一定数量m的储存格(cell),以及每一储存格包含一定数量n的比特(bit)。每一个比特表示关联于一个数据单元的处理状态,“1”表示此数据单元目前正被一个执行线程处理,“0”表示此数据单元目前没有被任何执行线程处理。例如,为符合画素着色器110的最大处理能力,窗口缓存器160包含256个储存格,以及每一储存格包含256个比特。窗口缓存器160中的数据单元的处理状态寻址与2d影像的位置相符。于一个例子中,第0个储存格中第0至255个比特分别表示坐标(0,0)至(0,255)的画素的处理状态,第1个储存格中第0至255个比特分别表示坐标(1,0)至(1,255)的画素的处理状态,依此类推。于另一个例子中,第0个储存格中第0至255个比特分别表示编号0至255的小方块或片元的处理状态,第1个储存格中第0至255个比特分别表示编号256至511的小方块或片元的处理状态,依此类推。于再一个例子中,第0个储存格中第0至3个比特分别表示编号0的小方块中第0至3个画素的处理状态,第0个储存格中第4至7个比特分别表示编号1的小方块中第0至3个画素的处理状态,依此类推。虽然以上实施例以一读一写类型的静态存取存储器描述,窗口缓存器160亦可以使用二读二写类型的静态存取存储器(2r2wtypesram)实施,于付出可接受的闸数成本情况下,得到更佳的效能。

图4是依据本发明实施例由窗口检查器130执行的关联性检查方法流程图。首先,窗口检查器130从一个执行线程接收关联于数据单元的存储器存取请求(步骤s411)。存储器存取请求中至少包含此数据单元于2d影像上的位置。依据数据单元的位置计算储存格索引(cellindex)后(步骤s413),发出读取指定储存格的请求给仲裁器(arbiter)140(步骤s431),以及从仲裁器140取得此数据单元的处理状态(步骤s433)。窗口检查器130发出的读取指定储存格的请求包含计算后的储存格索引。于此需注意的是,仲裁器140可一次读取一整个储存格的处理状态并回复给窗口检查器130,接着,窗口检查器130依据数据单元的位置从回复的数据中取得关联于此数据单元的处理状态。例如,假设第0个储存格储存编号0至255小方块的处理状态,以及此数据单元为第7个小方块:窗口检查器130可从仲裁器140回复的256比特的数据中依据数据单元的位置取得比特7的值。窗口检查器130判断此数据单元是否正被另一执行线程处理(步骤s451),若是,则执行请求拒绝程序,用以避免此执行线程存取动态随机存取存储器120中关联此数据单元的属性值(步骤s471至s473);否则,执行请求允许程序,用以允许此执行线程存取动态随机存取存储器120中关联此数据单元的属性值(步骤s491至s495)。于步骤s451,举例来说,当相应比特值为“1”,代表此数据单元正被另一执行线程处理。当相应比特值为“0”,代表此数据单元没有被任何执行线程处理。于请求拒绝程序中,窗口检查器130回复请求拒绝信息给此执行线程(步骤s471),以及发出写入指定储存格的请求给仲裁器140,用以写入原来读取的处理状态至窗口缓存器160中相应于储存格索引的位置(步骤s473)。窗口检查器130发出的写入指定储存格的请求包含计算后的储存格索引。于另一些实施例中,步骤s471可被省略。于请求允许程序中,窗口检查器130回复请求允许信息给此执行线程(步骤s491),更新相应于此数据单元的比特值,用以指出此数据单元正被此执行线程处理(步骤s493),以及发出写入指定储存格的请求给仲裁器140,用以写入更新后的处理状态至窗口缓存器160中相应于储存格索引的位置(步骤s495)。于步骤s495,须注意的是,指定储存格中除了相应于此数据单元的处理状态外,其它的处理状态与原来读取的相同。为简化仲裁器140的锁定设计,指定储存格的读取请求及写入请求是成对执行。也就是说,窗口检查器130发出指定储存格的读取请求后,接着发出此储存格的写入请求。

图5是依据本发明实施例由窗口释放器150执行的关联性检查方法的流程图。首先,窗口释放器150从一个执行线程接收关联于数据单元的存储器存取结束通知(步骤s511)。存储器存取结束通知中至少包含此数据单元于2d影像上的位置。依据数据单元的位置计算储存格索引后(步骤s513),发出读取指定储存格的请求给仲裁器140(步骤s531),更新相应于此数据单元的比特值,用以指出此数据单元没有被任何执行线程处理(步骤s533),以及发出写入指定储存格的请求给仲裁器140,用以写入更新后的处理状态(步骤s535)。窗口释放器150发出的读取及写入指定储存格的请求包含计算后的储存格索引。于此需注意的是,仲裁器140可一次读取一整个储存格的处理状态并回复给窗口释放器150,接着,窗口释放器150依据数据单元的位置更新关联于此数据单元的处理状态。例如,假设第0个储存格储存编号0至255小方块的处理状态,以及此数据单元为第7个小方块:窗口释放器150可从仲裁器140回复的256比特的数据中依据数据单元的位置更新比特7的处理状态。于步骤s535,须注意的是,指定储存格中除了相应于此数据单元的处理状态外,其它的处理状态与原来读取的相同。为简化仲裁器140的锁定设计,指定储存格的读取请求及写入请求也是成对执行。

为了协调窗口检查器130及窗口释放器150的请求,仲裁器140使用如下所述的规则来准许其中之一的请求,用以避免画素着色器110中的一个执行线程已对一个数据单元进行运算但还未写入前,便由另一个执行线程读出此数据单元的意外。图6是依据本发明实施例的仲裁器的方块图。缓存器630纪录窗口检查器130的锁定旗标(lockflag)及储存格索引。当窗口检查器130的锁定旗标为“真(true)”时,代表窗口检查器130已读取窗口缓存器160中指定储存格(以储存格索引表示)的处理状态但尚未写回。当窗口检查器130的锁定旗标为“伪(false)”时,代表窗口检查器130尚未从窗口缓存器160读取新的储存格数据。缓存器630另纪录窗口释放器150的锁定旗标及储存格索引。当窗口释放器150的锁定旗标为“真”时,代表窗口释放器150已读取窗口缓存器160中指定储存格(以储存格索引表示)的处理状态但尚未写回。当窗口释放器150的锁定旗标为“伪”时,代表窗口释放器150尚未从窗口缓存器160读取新的储存格数据。

每当控制单元610从窗口检查器130接收到一个请求(可为读取请求或写入请求),将请求中的储存格索引储存至缓存器630。类似地,每当控制单元610从窗口释放器150接收到一个请求(可为读取请求或写入请求),将请求中的储存格索引储存至缓存器630。控制单元610从缓存器630读取以上所述的锁定旗标及储存索引,并使用以下所述规则选择执行窗口检查器130及窗口释放器150中之一者发出的请求(可为读取请求或写入请求)。在第一个规则中,当窗口检查器130及窗口释放器150的锁定旗标皆为“伪”且两个储存格索引相同时(代表窗口检查器130及窗口释放器150请求读取相同储存格的处理状态),控制单元610选择执行窗口释放器150的读取请求。也就是说,当冲突发生,窗口释放器150的优先权比窗口检查器130高,用以避免如上所述未写入便读出的意外。详细来说,控制单元610驱动存取界面620从指定储存格读取处理状态,回复读取数据给窗口释放器150,以及更改窗口释放器150的锁定旗标为“真”。在第二个规则中,当窗口检查器130的锁定旗标为“真”而窗口释放器150的锁定旗标为“伪”且两个储存格索引不同时(代表窗口检查器130请求写入处理状态至一个储存格而窗口释放器150请求从另一储存格读取处理状态),控制单元610选择执行窗口释放器150的读取请求。详细来说,控制单元610驱动存取界面620从指定储存格读取处理状态,回复读取数据给窗口释放器150,以及更改窗口释放器150的锁定旗标为“真”。在第三个规则中,当窗口检查器130的锁定旗标为“伪”而窗口释放器150的锁定旗标为“真”且两个储存格索引不同时(代表窗口检查器130请求从一个储存格读取处理状态而窗口释放器150请求写入处理状态至另一储存格),控制单元610选择执行窗口检查器130的读取请求。详细来说,控制单元610驱动存取界面620从指定储存格读取处理状态,回复读取数据给窗口检查器130,以及更改窗口检查器130的锁定旗标为“真”。在第四个规则中,当窗口检查器130的锁定旗标为“真”而窗口释放器150的锁定旗标为“伪”且两个储存格索引相同时(代表窗口检查器130请求写入处理状态至一个储存格而窗口释放器150请求从相同储存格读取处理状态),控制单元610选择执行窗口检查器130的写入请求,用以确保执行窗口检查器130的读取及写入请求可依序执行而不让窗口释放器150的读取请求插入至两者之间。详细来说,控制单元610驱动存取界面620写入处理状态至指定储存格,回复写入数据成功的信息给窗口检查器130,以及更改窗口检查器130的锁定旗标为“伪”。在第五个规则中,当窗口检查器130的锁定旗标为“伪”而窗口释放器150的锁定旗标为“真”且两个储存格索引相同时(代表窗口检查器130请求从一个储存格读取处理状态而窗口释放器150请求写入处理状态至相同储存格),控制单元610选择执行窗口释放器150的写入请求,用以确保窗口释放器150的读取及写入请求可依序执行而不让窗口检查器130的读取请求插入至两者之间。详细来说,控制单元610驱动存取界面620写入处理状态至指定储存格,回复写入数据成功的信息给窗口释放器150,以及更改窗口释放器150的锁定旗标为“伪”。在第六个规则中,当窗口检查器130及窗口释放器150的锁定旗标皆为“真”且两个储存格索引不同时(代表窗口检查器130及窗口释放器150请求写入处理状态至不同的储存格),控制单元610选择执行窗口释放器150的写入请求。详细来说,控制单元610驱动存取界面620写入处理状态至指定储存格,回复写入数据成功的信息给窗口释放器150,以及更改窗口释放器150的锁定旗标为“伪”。

于此须注意的是,针对没有冲突的第二、第三及第六个规则中的任一者,可使用窗口检查器130优先的策略裁定。也就是说,控制单元610选择执行窗口检查器130的请求。或者是,以轮替(round-robin)的原则裁定,以获得更平衡的输出(throughput)。例如,当前一次选择执行窗口释放器130的请求时,控制单元610选择执行窗口检查器130的请求;反之亦然。

于另一些实施方式中,可将窗口缓存器160更改为使用缓存器储存如上所述的处理状态,以及设置大量的比较器来完成类似于本发明实施例的功能。然而,这样的实施方式将消耗至少三倍于本发明实施例的闸数成本(gate-countcost)。

虽然图1及图6中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其它的附加组件,以达成更佳的技术效果。此外,虽然图3至图5的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,熟习此技术人士可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。

虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟习此技术人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。

【符号说明】

110画素着色器;120动态随机存取存储器;

130窗口检查器;140仲裁器;

150窗口释放器;160窗口缓存器;

210、230像素;s311~s337方法步骤;

s411~s495方法步骤;s511~s535方法步骤;

610控制单元;620存取界面;

630缓存器。

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