欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

怎樣才能帶好一條流水線

怎樣才能帶好一條流水線?

先說說硬件的流水線首先要明確一個(gè)概念,GPU的流水線不是串行的,打個(gè)比方,下面一段OpenGL代碼,

CPU執(zhí)行1的時(shí)候,并不會(huì)要求1所表示的指令塞入到GPU,讓GPU執(zhí)行完后CPU才開始執(zhí)行2。硬件的設(shè)計(jì)上,CPU和GPU是通過一個(gè)所謂的push buffer連接的,push buffer可以看成一個(gè)fifo的queue,CPU把指令塞入push buffer,GPU從push buffer中讀取。回到上面那段代碼,CPU執(zhí)行代碼1的時(shí)候,就是把它塞入到push buffer就返回了,它并不管GPU是不是執(zhí)行完成,接著執(zhí)行代碼2,以此類推。然后在GPU內(nèi)部也有好幾個(gè)模塊,簡(jiǎn)化下大致有FE,frontend是GPU的前段,負(fù)責(zé)從push buffer中讀數(shù)據(jù),之后是PD,就是assember,隨后是vertex shader之類之類的。GPU硬件是時(shí)鐘驅(qū)動(dòng)的(clock domain)。舉例說,第一時(shí)鐘周期,當(dāng)FE讀取一個(gè)命令,并把命令傳達(dá)給流水線上的下一個(gè)模塊PD,在第二個(gè)時(shí)鐘周期,PD才能把這個(gè)命令消化執(zhí)行。以此類推,所以每個(gè)時(shí)刻基本上硬件流水線上的每個(gè)模塊都是在工作著,雖然工作在不同的數(shù)據(jù)上。這就回答了題主的問題一,流水線不會(huì)空。如果要實(shí)現(xiàn)一個(gè)軟件流水線,嚴(yán)格意義上講也要基于時(shí)鐘周期,每一個(gè)模塊之間要用FIFO相連,每一個(gè)模塊可以是一個(gè)獨(dú)立的線程。這樣可以保證最大的并行。最后說一下,圖元不是1個(gè)1個(gè)往下走的,一個(gè)個(gè)往下走會(huì)有一個(gè)很大的問題,就是所有的cache命中率,這個(gè)是另外一個(gè)大題目,以后再說。圖元是一批批往下送的。拿下面一塊代碼來說GPU的FE是一次把1200個(gè)三角形往流水線上塞得,PD會(huì)做一些優(yōu)化,把1200個(gè)三角形分成幾個(gè)批次,提到cache命中率,之后流水線上的大多數(shù)模塊都是在一個(gè)時(shí)鐘周期內(nèi)處理多個(gè)三角形,而不是一個(gè)。華麗麗的分割線=============================FAQ:1、意思就是說硬件圖形管線是完全基于硬件并行于主程序的?實(shí)現(xiàn)軟件渲染器也應(yīng)該模擬這種并行性才能發(fā)揮流水線最大效率?我之前看了一些軟件渲染器的實(shí)現(xiàn),似乎都沒有這一茬,好像流水線都是CPU串行的,所以會(huì)產(chǎn)生這樣的疑問。取決于你的軟件模擬器是想實(shí)現(xiàn)功能,還是想模擬硬件,如果是一個(gè)模擬器著重于功能,可以拋棄這種clock domain的硬件設(shè)計(jì)和push buffer等fifo;如果一個(gè)模擬器需要通過軟件模擬硬件,就需要這么去做,這也是GPU硬件公司里面設(shè)計(jì)硬件的內(nèi)容,就先拿軟件,一般是C++,寫一個(gè)模擬器,模擬出新功能,然后衡量性能的提升。2、按照你的說法,如果流水線渲染完一批數(shù)據(jù)要16ms,要保證流水線永遠(yuǎn)不空,主程序的寫入數(shù)據(jù)周期是不是要小于16ms?這樣的話,如果流水線的執(zhí)行速度遠(yuǎn)大于主程序?qū)懭胨俣龋M不是依然要拖慢渲染效率?而且主程序和渲染結(jié)果將會(huì)不同步?所以說圖形程序有CPU bound和GPU bound的說法。如果CPU的寫入速度慢,GPU在空等,那么就是CPU bound,反之就是GPU bound。程序優(yōu)化的目標(biāo)就是大家都滿載,不要空等。這個(gè)應(yīng)用程序優(yōu)化的范疇。3. GLBufferData怎么執(zhí)行的呢,是內(nèi)部拷貝一份,放入隊(duì)列;還是等隊(duì)列那邊從內(nèi)存取完數(shù)據(jù)再返回glBufferData是一個(gè)blocking call,CPU會(huì)等待GPU完全把數(shù)據(jù)從CPU搬到GPU后才返回執(zhí)行下一條命令。具體的工作機(jī)制,請(qǐng)參看俺的SIGGRAPH Asia 2015 course,Modern OpenGL Programming。http://lihw.github.io/pub/opengl.pdf

java 線程 pdf,怎樣才能帶好一條流水線