CN102855122A - 处理流水线控制 - Google Patents
处理流水线控制 Download PDFInfo
- Publication number
- CN102855122A CN102855122A CN2012101725019A CN201210172501A CN102855122A CN 102855122 A CN102855122 A CN 102855122A CN 2012101725019 A CN2012101725019 A CN 2012101725019A CN 201210172501 A CN201210172501 A CN 201210172501A CN 102855122 A CN102855122 A CN 102855122A
- Authority
- CN
- China
- Prior art keywords
- target data
- data
- processing
- sourse instruction
- instruction
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 131
- 230000015654 memory Effects 0.000 claims abstract description 77
- 238000000034 method Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 12
- 238000010248 power generation Methods 0.000 claims description 4
- 241001269238 Data Species 0.000 claims 1
- 238000011112 process operation Methods 0.000 description 10
- 230000004087 circulation Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000005070 sampling Methods 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
- G06F3/0238—Programmable keyboards
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0489—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using dedicated keyboard keys or combinations thereof
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G08—SIGNALLING
- G08C—TRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
- G08C17/00—Arrangements for transmitting signals characterised by the use of a wireless electrical link
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/422—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
- H04N21/42204—User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/426—Internal components of the client ; Characteristics thereof
- H04N21/42653—Internal components of the client ; Characteristics thereof for processing graphics
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control 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/363—Graphics controllers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/422—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
- H04N21/42204—User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
- H04N21/42226—Reprogrammable remote control devices
- H04N21/42227—Reprogrammable remote control devices the keys being reprogrammable, e.g. soft keys
- H04N21/42228—Reprogrammable remote control devices the keys being reprogrammable, e.g. soft keys the reprogrammable keys being displayed on a display screen in order to reduce the number of keys on the remote control device itself
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Abstract
本发明涉及处理流水线控制。图形处理单元(2)包括具有第一流水线部分(18)及第二流水线部分(20)的纹理流水线(6)。第一流水线部分(18)内的源指令在第一流水线部分(18)内再次循环,直到该源指令要从存储器(4)加载的描述符数据已被缓存入共享描述符缓存(22)为止。当描述符已被存储于该共享描述符缓存(22)内时,该源指令继而被传递到在其中进一步的处理操作被执行的第二流水线部分(20),且该源指令再次循环直到那些进一步的处理操作已完成为止。该描述符数据被锁定在共享描述符缓存(22)内,直到纹理流水线(6)内不存在未决的需要使用该描述符数据的源指令为止。
Description
技术领域
本发明涉及数据处理***领域。更具体地,本发明涉及包含处理流水线(processing pipeline)的数据处理***以及在这样的数据处理***中的处理流水线的控制。
背景技术
提供包含处理流水线的数据处理***以便增加数据处理***中并行执行的程度从而相应地增加每个周期所执行的指令数目是已知的。在处理流水线中增加流水线级数会增加能够并行执行的程序指令数目。然而,具有大量的流水线级的处理流水线难以有效地处理失败的指令。例如,如果沿处理流水线行进的一个加载(load)指令未能在预期的时间内接收到它的加载的数据,则,一种做法会是它使该处理流水线暂停。这将会是非常低效的。如果没有后续的指令依赖于该失败的加载指令,则另一种做法是,允许该加载指令作为一处理“气泡”与其他沿该流水线行进的程序指令一致地沿处理流水线行进,从而不干扰那些其他处理指令的执行。这种做法的问题是流水线中气泡的出现降低了并行执行的程序指令的数目,从而降低了每个周期总的被执行的指令的值。
发明内容
从一个方面来看本发明提供了用于处理数据的装置,该装置包括:
一被配置为存储数据的存储器;
一被配置为存储从所述存储器中获取的数据的缓存;以及
一具有多个流水线级且被配置为执行沿所述处理流水线行进的程序指令所指定的数据处理操作的处理流水线,其中
所述处理流水线包括一具有多个流水线级的第一流水线部分,和后续的具有多个流水线级的一第二流水线部分;
所述第一流水线部分包括一加载级,其被配置为响应使用目标数据的一源指令(subject instruction),当所述目标数据还没有存储于所述缓存中时,通过从所述存储器获取所述目标数据并将所述目标数据存储到所述缓存中来进行所述响应;
所述第一流水线部分包括位于所述加载级之后的一第一选通级,该第一选通级被配置为确定所述目标数据是否存在于所述缓存中,以及:
(i)如果所述目标数据未存在于所述缓存中,则通过所述第一流水线部分再次循环所述源指令;以及
(ii)如果所述目标数据存在于所述缓存中,则传递所述源指令至所述第二流水线部分;
所述第二流水线部分包括一进一步的处理级,其被配置为通过使用所述目标数据来执行一进一步的处理操作以响应于所述源指令;以及
所述第二流水线部分包括位于所述进一步的处理级之后的一第二选通级,该第二选通级被配置为确定所述进一步的处理操作是否已完成,以及:
(i)如果所述进一步的处理操作还没有完成,则通过所述第二流水线部分再次循环所述源指令;以及
(ii)如果所述进一步的处理操作已完成,则从所述处理流水线中退休(retire)所述源指令。
本发明提供了一处理流水线,其包括一第一流水线部分以及一第二流水线部分。该第一流水线部分用于加载目标数据至一缓存存储器而后检查该目标数据已加载。如果该目标数据还没有加载,那么该源指令则在该第一流水线部分再次循环(返回到一在前流水线级)且不被传递到该第二流水线部分。这样就防止了一处理气泡被传递到该第二流水线部分且给了该第一流水线部分进一步的时间以完成该源指令。该第二流水线部分自身用于执行进一步的处理操作且包括一第二选通级,该第二选通级检查以确定那些进一步的处理操作是否已经完成。如果该进一步的处理操作还没有完成,则在该第二流水线部分内再次循环该源指令以给该进一步的处理操作更多的时间去完成。如果该第二选通级确定该进一步的处理操作已完成,那么该源指令则可退休。该处理流水线由此包括两个循环,一个由该第一流水线部分形成,一个由该第二流水线部分形成。该源指令在该第一流水线部分再次循环,直到用于该源指令的目标数据已存储在该缓存内为止。一旦该目标数据已被收集且在该缓存中可用,则该源指令被释放到该第二流水线部分,在该第二流水线部分中它可在必要的情况下再次循环,直到由该第二流水线部分所执行的该进一步的处理操作已完成且该源指令已退休为止。
在本发明的优选实施例中,该目标数据可被锁定在该缓存中直到所有使用该目标数据的程序指令已从该处理流水线中退休为止。这样做效率会被提高,因为由该第一流水线部分的操作在该缓存中放置的目标数据将会被保持在该缓存中直到其不再被需要为止。这减少了在该第二流水线部分中出现处理气泡的可能性。
尽管可以被领会的是,该目标数据可采取多种不同形式,但在一些实施例中,该目标数据是指定进一步的目标数据的一个或多个属性的描述符数据,以及进一步的处理操作用以依赖于该缓存中存储的该目标数据而从存储器中获取进一步的目标数据。因此该进一步的处理操作中从存储器中对数据的获取是依赖于目标数据而被间接指定的,且相应地,重要的是该目标数据应该在值得尝试执行该进一步的处理操作以从该第二流水线部分获取该进一步的目标数据之前被该第一流水线部分的操作存储于该缓存存储器中。
该第一选通电路以及该第二选通电路用于再次循环该源指令至一在前级,该在前级可以是所考虑的流水线部分内的第一级或中间级这两者之一。
该第二流水线部分可直接后续于该第一流水线部分是可能的。但是,在其他实施例中,该处理流水线包括在该第一流水线部分和该第二流水线部分之间的一个或多个中间级。
可以被领会的是,当前的技术可运用于多种不同的形式和应用的处理流水线。然而,当前的技术非常适合于在其中处理流水线是图像处理单元中的纹理流水线(texture pipeline)的实施例。这样的纹理流水线通常会对从存储器中加载数据有高的需求,其中纹理流水线中进一步的处理操作依赖于之前加载的数据。在这样的背景下,当前技术确保目标数据在允许源指令行进到第一流水线部分以外之前被存储在缓存中,从而通过减少在第一流水线部分下游的处理流水线中出现的处理气泡的数目而提高了效率。
该进一步的目标数据可以是纹理数据且该目标数据可以是指定该纹理数据的一个或多个参数的描述符数据。这些参数例如可以用于定位要用于一特定像素的纹理数据的存储地址。
该目标数据可以被大量的源指令重复使用,且如果存储在该缓存中的该目标数据是共享的话,效率就可被提高。在每条源指令经过该处理流水线时与其相关地存储的状态数据可包括指定该共享的目标数据的缓存内的存储地址的值。
源指令可以是一组共享目标数据且一同被处理的源指令中的一个,其具有状态数据来在该组程序指令中标识每个源指令(例如,该组源指令可与四个相邻接的要被四个一起处理的像素值相关)。
针对该组源指令的目标数据会被锁定在缓存中,直到所有的该组源指令都已完成了它们对该共享的目标数据的使用为止。
当处理流水线中的源指令来自于不同的程序线程从而不存在源指令之间的相互依赖时,处理流水线的效率一般会提高。线程分发电路可被配置为分发源指令至处理流水线以便处理,而线程退休电路可被用来当源指令已完成时从处理流水线中退休它们。
从另一个方面来看,本发明提供了用于处理数据的装置,该装置包括:
存储器装置,用于存储数据;
缓存装置,用于存储从所述存储器装置中获取的数据;以及
处理流水线装置,用于执行沿所述处理流水线装置行进的程序指令所指定的数据处理操作,所述处理流水线装置具有多个用于执行数据处理操作的流水线级装置,其中
所述处理流水线装置包括具有多个流水线级装置的一第一流水线部分,和后续的具有多个流水线级装置的一第二流水线部分;
所述第一流水线部分包括加载级装置,用于响应一使用目标数据的源指令,当所述目标数据还没有存储于所述缓存装置中时,通过从所述存储器装置获取所述目标数据并将所述目标数据存储到所述缓存装置中来进行所述响应;
所述第一流水线部分包括位于所述加载级装置之后的第一选通级装置,用于确定所述目标数据是否存在于所述缓存装置中,以及:
(i)如果所述目标数据未存在于所述缓存装置中,则通过所述第一流水线部分再次循环所述源指令;以及
(ii)如果所述目标数据存在于所述缓存装置中,则传递所述源指令至所述第二流水线部分;
所述第二流水线部分包括进一步的处理级装置,用于通过使用所述目标数据来执行一进一步的处理操作以响应于所述源指令,以及
所述第二流水线部分包括位于所述进一步的处理级装置之后的第二选通级装置,用于确定所述进一步的处理操作是否已完成,以及:
(i)如果所述进一步的处理操作还没有完成,则通过所述第二流水线部分再次循环所述源指令;以及
(ii)如果所述进一步的处理操作已完成,则从所述处理流水线装置中退休所述源指令。
从一个进一步的方面来看,本发明提供了一种处理数据的方法,该方法包括以下步骤:
在一存储器中存储数据;
在一缓存中存储从所述存储器中获取的数据;以及
在一处理流水线中执行沿所述处理流水线行进的程序指令所指定的数据处理操作,所述处理流水线具有多个流水线级,其中
所述处理流水线装置包括具有多个流水线级的一第一流水线部分,和后续的具有多个流水线级的一第二流水线部分;并进一步包括:
在所述第一流水线部分中使用一加载级,以响应一使用目标数据的源指令,当所述目标数据还没有存储于所述缓存中时,通过从所述存储器获取所述目标数据并将所述目标数据存储到所述缓存中来进行所述响应;
在所述第一流水线部分中使用位于所述加载级之后的一第一选通级,以确定所述目标数据是否存在于所述缓存中,以及:
(i)如果所述目标数据未存在于所述缓存中,则通过所述第一流水线部分再次循环所述源指令;以及
(ii)如果所述目标数据存在于所述缓存中,则传递所述源指令至所述第二流水线部分;
在所述第二流水线部分中使用一进一步的处理级,通过使用所述目标数据来执行一进一步的处理操作以响应于所述源指令;以及
在所述第二流水线部分中使用位于所述进一步的处理级之后的一第二选通级,以确定所述进一步的处理操作是否已完成,以及:
(i)如果所述进一步的处理操作还没有完成,则通过所述第二流水线部分再次循环所述源指令;以及
(ii)如果所述进一步的处理操作已完成,则从所述处理流水线装置中退休所述源指令。
以上这些,以及本发明的其它对象、功能和优点,通过下面示例性的实施例的详细描述并结合附图的阅读会变得清晰。
附图说明
图1示意性地示出包括多个处理流水线的图形处理单元;
图2示意性地示出包括第一流水线部分和第二流水线部分的纹理流水线;
图3示意性地示出由纹理流水线处理的描述符数据和纹理数据之间的关系;
图4示意性地示出共享描述符缓存以及一组共享描述符数据的程序指令;以及
图5是示意性地示出图2的纹理流水线的操作的流程图。
具体实施方式
图1示意性地示出了耦合到存储器4的图形处理单元2。存储器4存储程序数据、纹理数据、描述符数据以及图形处理所需的其它数据,如图形处理领域的人员所熟知的那样。图形处理单元2包括多个处理流水线,其包括纹理流水线6、加载存储流水线8、第一算术流水线10以及第二算术流水线12。线程分发电路14向适当的处理流水线6、8、10、12分发程序指令,而线程退休电路16则从处理流水线6、8、10、12退休程序指令以及当处理线程完全结束时退休处理线程。可以被领会的是,流水线布局图1只是包括处理流水线的处理装置的一个示例,许多其他不同形式的处理装置也可用作许多其他不同形式的图形处理单元。
图1中的纹理流水线6被示为具有第一流水线部分18以及第二流水线部分20。第一流水线部分18负责从存储器4中获取描述符数据并将其存储到与纹理流水线6紧密耦合的共享描述符缓存22中。流水线的第二部分20负责依赖于描述符缓存22中存储的描述符数据而从存储器4中获取纹理数据。纹理流水线6的其余部分可执行其它处理操作,例如过滤和像素操作。
在图1中,存储器4被示为一个统一的区块。但是,可以被领会的是,在实际中,存储器4可包括由多层缓存存储器、主存储器(mainmemory)和非易失性数据存储器(如硬盘驱动器)形成的存储器分层结构。
图2示意性地示出了更详细的纹理流水线6。尤其是,纹理流水线6包括第一流水线部分18,多个中间流水线级24以及第二流水线部分20。第一流水线部分18包括加载级26,其响应于源指令(例如,尝试加载像素的纹理的指令)而发起请求至存储器4以获取描述符数据,该描述符数据随后将用于确定要获取的纹理数据的地址。第一流水线部分18中的一随后级用于轮询存储器是否已返回了所请求的描述符数据,以及如果数据已被返回,那么缓存加载级用于将返回的描述符数据加载到共享描述符缓存22中。第一流水线部分18中的第一选通级28用于当源指令到达第一选通级28时,确定描述符数据(目标数据)是否已经被加载到共享描述符缓存22中。如果描述符数据(目标数据)存在于共享描述符缓存22中,那么源指令则被传递到中间级24并且进而到第二流水线部分20。如果描述符数据未存在于共享描述符缓存22中,则通过将源指令返回到第一流水线部分18的顶部使其再次循环以便其可再次通过第一流水线部分从而获得更多的时间以供描述符数据从存储器4返回。这就避免了将共享描述符缓存22中还没有出现其所需要的描述符数据的源指令传递到包括中间级24和第二流水线部分20的流水线的后续部分,从而避免了在纹理流水线6的这些后面部分中引入不必要的处理气泡。
当源指令已通过第一选通级28时,其行进到中间级24,在中间级中进一步的处理操作将被执行,如确定像素值的变化率的导数的生成、纹理映射层级(texture map level)的选择以及用于从存储器4中加载的纹理数据的地址的生成。源指令然后被传递到包括进一步的处理级的第二流水线部分20,其中,该进一步的处理级执行进一步的处理操作,例如从存储器4中加载纹理数据。第二流水线部分20末尾的第二选通级30确定由进一步的处理级执行的进一步的处理操作是否已经完成。以与第一流水线部分18类似的方式,当纹理数据已实际返回时,进一步的处理操作可完成。如果进一步的处理操作还没有完成,那么源指令将在第二流水线部分20中再次循环以便允许更多的时间以供返回纹理数据。当纹理数据已被返回时,其可能经历纹理流水线6中的该第二流水线部分之后的处理操作,例如对获取的纹理数据运用过滤操作以及将得到的颜色值写入寄存器。
图3示意性地示出了描述符数据与纹理数据之间的关系。描述符数据可包括图像描述符32、表面描述符34以及采样描述符36。所有这些描述符32、34、36都存储在存储器4中且被纹理流水线6使用来确定从存储器4中读出纹理数据38的什么部分以及如何处理所获取的纹理数据。尤其是,针对源指令而获取的图像描述符数据可包括如下数据,该数据指定在给定了当前采用的纹理比例、纹理数据的格式(例如RGB等)、纹理数据的尺寸以及指向所考虑的纹理数据的表面描述符的指针的情况下,使用多个纹理表示中的哪一个。该表面描述符包含一指针和一间距(pitch)值,所述指针指向要采用的纹理数据的相关实例的起始存储地址,所述间距值指示该纹理数据的实例的行间距。
图3所示的描述符数据与纹理数据之间的关系是在第一流水线部分18中存储到缓存中的目标数据与依赖于该缓存的目标数据由第二流水线部分20获取的进一步的目标数据之间的关系的一个示例。当前的技术并不局限于该示例,乃至图形处理领域。
图4示意性地示出了共享描述符缓存22,其包括多个缓存行(cacheline),每行均存储描述符数据的共享实例且具有一相关的索引值。在该示例中共享描述符缓存22被索引,但是在其他实施例中,存储的标记值可被用于标识其所期望从共享描述符缓存22中获取的特定的描述符数据是可能的。同样如图4所示,共享描述符缓存22的每个缓存行包括一锁计数器字段40,其存储着一计数值,该计数值指示有多少纹理流水线6中正在进行着处理的源指令需要使用所考虑的描述符。每当一源指令尝试着去加载一描述符,不管那个描述符是否已缓存,锁计数都将会递增以表明希望使用那个描述符的源指令存在于纹理流水线6中。每当一源指令从纹理流水线6中退休,即其已完成其对所引用的描述符的使用时,针对那些描述符的相关的锁计数值则递减。如此,当锁计数到达0时,纹理流水线6中所有的源指令都已经完成了它们对那个描述符的使用,并且在共享描述符缓存中该描述符可被解锁从而可供缓存行替换以为其他描述符值让路。
图4还示出了线程组状态42。成组的源指令可被一起处理并共享它们所使用的描述符。在此情况下,线程组状态利用标识符TS0,TS1,TS2,TS3来标识每个源指令,并且,在该实施例中,存储索引值,所述索引值指向该线程组中的源指令所使用的描述符所位于的缓存行。
图5是示意性地示出了图2的纹理流水线的操作的流程图。在步骤44,处理等待直到在第一流水线部分18中接收到一源指令。步骤46继而确定针对那个源指令的描述符数据是否已经存在于共享描述符缓存22中。如果该描述符数据已经存在,处理则前进到步骤48。如果该描述符数据还没有存在于共享描述符缓存22中,步骤50则用于发起从存储器4至共享描述符缓存22的描述符加载。步骤52存储任何返回至共享缓存22的描述符数据。步骤54由第一选通级28执行并确定所有该源指令所需的描述符数据是现已处于共享描述符缓存中还是该描述符数据还不存在。如果它不存在,该源指令则再次循环且处理返回到步骤50。
如果所有的描述符数据都被确定为存在于共享描述符缓存22中,处理则行进至步骤48,在其中源指令可能通过一个或多个中间级24被传递到第二流水线部分20。步骤56确定在给定了要绘制的图像部分的分辨率下所要使用的相对于存储的纹理映射数据的纹理映射层级。步骤58继而发起纹理数据加载。该纹理数据加载来自于存储器4中的依赖于存储在共享描述符缓存22中的描述符数据而计算的地址。步骤60由第二选通级30执行并确定进一步的处理操作是否已完成。如果该进一步的处理操作还没有完成,处理则返回到步骤56。如果该进一步的处理操作已完成,处理则行进至步骤62,其中执行过滤操作,然后在步骤64中计算出的颜色像素值被写入至寄存器而作为已被纹理流水线6处理过的源指令的结果。
可以领会的是,由纹理流水线6执行的处理也包括之前针对图4所描述的缓存锁,其中锁值递增和递减以跟踪纹理流水线中“进行中的”源指令的数量。
尽管本发明的示例性实施例在此已经以参照附图的方式被详细的描述,应当理解的是,该发明并不是要局限于那些确切的实施例,而如附加的权利要求所定义的那样,本领域技术人员在没有背离该发明的范围和精神的情况下可做出各种变化和修改。
Claims (17)
1.一种用于处理数据的装置,包括:
存储器,该存储器被配置为存储数据;
缓存,该缓存被配置为存储从所述存储器中获取的数据;以及
处理流水线,该处理流水线具有多个流水线级且被配置为执行沿所述处理流水线行进的程序指令所指定的数据处理操作,其中
所述处理流水线包括具有多个流水线级的第一流水线部分,和后续的具有多个流水线级的第二流水线部分;
所述第一流水线部分包括一加载级,该加载级被配置为当目标数据还没有存储于所述缓存中时,通过从所述存储器获取所述目标数据并将所述目标数据存储到所述缓存中,来响应一使用所述目标数据的源指令;
所述第一流水线部分包括位于所述加载级之后的第一选通级,该第一选通级被配置为确定所述目标数据是否存在于所述缓存中,以及:
(i)如果所述目标数据未存在于所述缓存中,则通过所述第一流水线部分再次循环所述源指令;以及
(ii)如果所述目标数据存在于所述缓存中,则传递所述源指令至所述第二流水线部分;
所述第二流水线部分包括进一步的处理级,该进一步的处理级被配置为通过使用所述目标数据来执行进一步的处理操作从而响应于所述源指令;以及
所述第二流水线部分包括位于所述进一步的处理级之后的第二选通级,该第二选通级被配置为确定所述进一步的处理操作是否已完成,以及:
(i)如果所述进一步的处理操作还没有完成,则通过所述第二流水线部分再次循环所述源指令;以及
(ii)如果所述进一步的处理操作已完成,则从所述处理流水线中退休所述源指令。
2.如权利要求1所述的装置,其中所述目标数据被锁定在所述缓存中,直到所有使用所述目标数据的程序指令都已从所述处理流水线中退休为止。
3.如权利要求1所述的装置,其中所述目标数据是指定进一步的目标数据的一个或多个属性的描述符数据,并且所述进一步的处理操作依赖于所述缓存中存储的所述目标数据而从所述存储器中获取所述进一步的目标数据。
4.如权利要求3所述的装置,其中所述第二流水线部分利用所述目标数据确定所述进一步的目标数据在所述存储器中的存储地址。
5.如权利要求1所述的装置,其中所述第一选通级通过将所述源指令返回给所述第一流水线部分中的一第一级和所述第一流水线部分中的一中间级这两者之一,来再次循环所述源指令。
6.如权利要求1所述的装置,其中所述第二选通级通过将所述源指令返回给所述第二流水线部分中的一第一级和所述第二流水线部分中的一中间级这两者之一,来再次循环所述源指令。
7.如权利要求1所述的装置,其中所述处理流水线在所述第一流水线部分和所述第二流水线部分之间包括一个或多个中间级。
8.如权利要求1所述的装置,其中所述处理流水线是一图像处理单元中的一纹理流水线。
9.如权利要求8所述的装置,其中所述进一步的目标数据是纹理数据且所述目标数据是指定所述纹理数据的一个或多个参数的描述符数据。
10.如权利要求8所述的装置,其中所述图像处理单元包括一个或多个进一步的处理流水线。
11.如权利要求1所述的装置,其中所述处理流水线被配置为为通过所述处理流水线的所述源指令存储状态数据,所述状态数据包括指定所述目标数据在所述缓存中的存储位置的值。
12.如权利要求11所述的装置,其中所述源指令是一组共享目标数据的源指令中的一个,所述状态数据标识该组程序指令中的每个源指令。
13.如权利要求11所述的装置,其中所述目标数据被锁定在所述缓存中,直到至少所有所述的一组共享所述目标数据的源指令都已完成了它们对所述共享的目标数据的使用为止。
14.如权利要求1所述的装置,其中所述源指令是一程序线程的一部分,且所述处理流水线被配置为并行处理多个各自来自不同程序线程的源指令。
15.如权利要求13所述的装置,包括线程分发电路,该线程分发电路被配置为将所述源指令分发至所述处理流水线以供处理。
16.一种用于处理数据的装置,包括:
存储器装置,用于存储数据;
缓存装置,用于存储从所述存储器装置中获取的数据;以及
处理流水线装置,用于执行沿所述处理流水线装置行进的程序指令所指定的数据处理操作,所述处理流水线装置具有多个用于执行数据处理操作的流水线级装置,其中
所述处理流水线装置包括具有多个流水线级装置的第一流水线部分,和后续的具有多个流水线级装置的第二流水线部分;
所述第一流水线部分包括加载级装置,该加载级装置用于当目标数据还没有存储于所述缓存装置中时,通过从所述存储器装置获取所述目标数据并将所述目标数据存储到所述缓存装置中,来响应一使用所述目标数据的源指令;
所述第一流水线部分包括位于所述加载级装置之后的第一选通级装置,该第一选通级装置用于确定所述目标数据是否存在于所述缓存装置中,以及:
(i)如果所述目标数据未存在于所述缓存装置中,则通过所述第一流水线部分再次循环所述源指令;以及
(ii)如果所述目标数据存在于所述缓存装置中,则传递所述源指令至所述第二流水线部分;
所述第二流水线部分包括进一步的处理级装置,该进一步的处理级装置用于通过使用所述目标数据来执行进一步的处理操作从而响应于所述源指令;以及
所述第二流水线部分包括位于所述进一步的处理级装置之后的第二选通级装置,该第二选通级装置用于确定所述进一步的处理操作是否已完成,以及:
(i)如果所述进一步的处理操作还没有完成,则通过所述第二流水线部分再次循环所述源指令;以及
(ii)如果所述进一步的处理操作已完成,则从所述处理流水线装置中退休所述源指令。
17.一种处理数据的方法,包括以下步骤:
在一存储器中存储数据;
在一缓存中存储从所述存储器中获取的数据;以及
在一处理流水线中执行沿所述处理流水线行进的程序指令所指定的数据处理操作,所述处理流水线具有多个流水线级,其中
所述处理流水线装置包括具有多个流水线级的第一流水线部分,和后续的具有多个流水线级的第二流水线部分;并进一步包括:
使用所述第一流水线部分中的一加载级来响应一使用目标数据的源指令,当所述目标数据还没有存储于所述缓存中时,通过从所述存储器获取所述目标数据并将所述目标数据存储到所述缓存中,来进行所述响应;
使用所述第一流水线部分中位于所述加载级之后的第一选通级,来确定所述目标数据是否存在于所述缓存中,以及:
(i)如果所述目标数据未存在于所述缓存中,则通过所述第一流水线部分再次循环所述源指令;以及
(ii)如果所述目标数据存在于所述缓存中,则传递所述源指令至所述第二流水线部分;
使用所述第二流水线部分中进一步的处理级,通过使用所述目标数据来执行进一步的处理操作从而响应于所述源指令;以及
使用所述第二流水线部分中位于所述进一步的处理级之后的第二选通级,来确定所述进一步的处理操作是否已完成,以及:
(i)如果所述进一步的处理操作还没有完成,则通过所述第二流水线部分再次循环所述源指令;以及
(ii)如果所述进一步的处理操作已完成,则从所述处理流水线装置中退休所述源指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1108769.9 | 2011-05-25 | ||
GB1108769.9A GB2491156B (en) | 2011-05-25 | 2011-05-25 | Processing pipeline control |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102855122A true CN102855122A (zh) | 2013-01-02 |
CN102855122B CN102855122B (zh) | 2017-03-01 |
Family
ID=47080881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210172501.9A Active CN102855122B (zh) | 2011-05-25 | 2012-05-25 | 用于处理数据的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9927882B2 (zh) |
JP (1) | JP6017171B2 (zh) |
CN (1) | CN102855122B (zh) |
GB (1) | GB2491156B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN113747060A (zh) * | 2021-08-12 | 2021-12-03 | 荣耀终端有限公司 | 图像处理的方法、设备、存储介质及计算机程序产品 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10085016B1 (en) * | 2013-01-18 | 2018-09-25 | Ovics | Video prediction cache indexing systems and methods |
US9679347B2 (en) | 2014-02-18 | 2017-06-13 | Qualcomm Incorporated | Shader pipeline with shared data channels |
US11379944B2 (en) * | 2020-06-23 | 2022-07-05 | Nvidia Corporation | Techniques for performing accelerated point sampling in a texture processing pipeline |
CN115185860B (zh) * | 2022-09-14 | 2022-12-02 | 沐曦集成电路(上海)有限公司 | 一种缓存访问*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4433374A (en) * | 1980-11-14 | 1984-02-21 | Sperry Corporation | Cache/disk subsystem with cache bypass |
US5375227A (en) * | 1989-08-29 | 1994-12-20 | Hitachi, Ltd. | Method of and apparatus for automatic recovery of a cache in a storage system |
US6236413B1 (en) * | 1998-08-14 | 2001-05-22 | Silicon Graphics, Inc. | Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation |
US6259460B1 (en) * | 1998-03-26 | 2001-07-10 | Silicon Graphics, Inc. | Method for efficient handling of texture cache misses by recirculation |
US20040083341A1 (en) * | 2002-10-24 | 2004-04-29 | Robinson John T. | Weighted cache line replacement |
CN101243420A (zh) * | 2005-06-23 | 2008-08-13 | 高通股份有限公司 | 非dram指示符和存取未存储于dram阵列中的数据的方法 |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
CN101563712A (zh) * | 2006-12-22 | 2009-10-21 | 高通股份有限公司 | 快速像素渲染处理 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965764A (en) * | 1987-03-04 | 1990-10-23 | Nec Corporation | Memory access control system |
US6771264B1 (en) * | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
JP3655908B2 (ja) * | 2003-02-26 | 2005-06-02 | 株式会社東芝 | 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム |
US7027062B2 (en) * | 2004-02-27 | 2006-04-11 | Nvidia Corporation | Register based queuing for texture requests |
US7542043B1 (en) * | 2005-05-23 | 2009-06-02 | Nvidia Corporation | Subdividing a shader program |
US7447879B2 (en) * | 2006-02-09 | 2008-11-04 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
US7984269B2 (en) * | 2007-06-12 | 2011-07-19 | Arm Limited | Data processing apparatus and method for reducing issue circuitry responsibility by using a predetermined pipeline stage to schedule a next operation in a sequence of operations defined by a complex instruction |
US8719553B2 (en) * | 2008-01-31 | 2014-05-06 | Arm Norway As | Method for re-circulating a fragment through a rendering pipeline |
-
2011
- 2011-05-25 GB GB1108769.9A patent/GB2491156B/en active Active
-
2012
- 2012-04-18 JP JP2012094511A patent/JP6017171B2/ja active Active
- 2012-04-30 US US13/459,347 patent/US9927882B2/en active Active
- 2012-05-25 CN CN201210172501.9A patent/CN102855122B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4433374A (en) * | 1980-11-14 | 1984-02-21 | Sperry Corporation | Cache/disk subsystem with cache bypass |
US5375227A (en) * | 1989-08-29 | 1994-12-20 | Hitachi, Ltd. | Method of and apparatus for automatic recovery of a cache in a storage system |
US6259460B1 (en) * | 1998-03-26 | 2001-07-10 | Silicon Graphics, Inc. | Method for efficient handling of texture cache misses by recirculation |
US6236413B1 (en) * | 1998-08-14 | 2001-05-22 | Silicon Graphics, Inc. | Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation |
US20040083341A1 (en) * | 2002-10-24 | 2004-04-29 | Robinson John T. | Weighted cache line replacement |
CN101243420A (zh) * | 2005-06-23 | 2008-08-13 | 高通股份有限公司 | 非dram指示符和存取未存储于dram阵列中的数据的方法 |
CN101563712A (zh) * | 2006-12-22 | 2009-10-21 | 高通股份有限公司 | 快速像素渲染处理 |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
WO2017084330A1 (zh) * | 2015-11-17 | 2017-05-26 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106529668B (zh) * | 2015-11-17 | 2018-12-04 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US11488000B2 (en) | 2015-11-17 | 2022-11-01 | Intitute of Computing Technology, Chinese Academy of Sciences | Operation apparatus and method for acceleration chip for accelerating deep neural network algorithm |
CN113747060A (zh) * | 2021-08-12 | 2021-12-03 | 荣耀终端有限公司 | 图像处理的方法、设备、存储介质及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
US20120303900A1 (en) | 2012-11-29 |
GB2491156B (en) | 2019-08-07 |
GB201108769D0 (en) | 2011-07-06 |
GB2491156A (en) | 2012-11-28 |
JP6017171B2 (ja) | 2016-10-26 |
CN102855122B (zh) | 2017-03-01 |
JP2013016150A (ja) | 2013-01-24 |
US9927882B2 (en) | 2018-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102855122A (zh) | 处理流水线控制 | |
DE102013114072B4 (de) | System und Verfahren zum Hardware-Scheduling von indexierten Barrieren | |
DE102013017640B4 (de) | Verteilte gekachelte Zwischenspeicherung | |
DE102012220267B4 (de) | Rechenarbeitsverteilungs - Referenzzähler | |
DE102013017639B4 (de) | Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichten L2-Cache-Speicher mit Oberflächenkomprimierung | |
DE102015224026A1 (de) | Indirektes Erfassen von Sampledaten zur Durchführung mehrfacher Faltungsoperationen in einem Parallelverarbeitungssystem | |
DE102012222558B4 (de) | Signalisieren, Ordnen und Ausführung von dynamisch erzeugten Aufgaben in einem Verarbeitungs-System | |
DE102009012766A1 (de) | Ein Zugriffssperrenvorgang, um atomare Aktualisierungen zu einem geteilten Speicher zu ermöglichen | |
DE102012221502A1 (de) | System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen | |
DE102013208554A1 (de) | Verfahren und System zum Managen verschachtelter Ausführungsströme | |
DE102020112826A1 (de) | Verfahren zur effizienten durchführung von datenreduktionen in parallelverarbeitungseinheiten | |
DE102013202173A1 (de) | Einheitliche Lade-Verarbeitung für Teilsätze von parallelen Threads | |
DE102013201178B4 (de) | Steuern von Arbeitsverteilung für Verarbeitung von Tasks | |
DE102013020966B4 (de) | Leistungseffiziente Attribut-Handhabung für Parkettierungs- und Geometrie-Schattierungseinheiten | |
DE102012212639A1 (de) | Temporäre SIMT-Ausführungs-Optimierung | |
DE102009046847A1 (de) | Mehrklassen-Daten-Cache-Verfahren | |
DE102012222394A1 (de) | Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden | |
DE102009012409A1 (de) | Systeme und Verfahren zum Zusammenfügen von Speicherzugriffen von parallelen Threads | |
DE102013020968A1 (de) | Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher | |
DE102013205886A1 (de) | Dynamische Bankmodus-Adressierung für Speicherzugriff | |
DE102013020485A1 (de) | Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware | |
CN109255438A (zh) | 调整张量数据的方法和装置 | |
DE102012222932A1 (de) | Gestaltetes Register-Datei-Lesen | |
US20140196043A1 (en) | System and method for re-factorizing a square matrix into lower and upper triangular matrices on a parallel processor | |
DE102012222391B4 (de) | Mehrkanal-Zeitscheibengruppen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |