革命性DX11架構(gòu)!GTX480/470權(quán)威評(píng)測(cè)
第五章/第五節(jié) Fermi計(jì)算架構(gòu):首次支持顯存ECC
NVIDIA在與程序員的溝通與反饋中發(fā)現(xiàn),雖然共享內(nèi)存能夠惠及許多問(wèn)題,但它并不能夠用于解決所有問(wèn)題。一些算法會(huì)自然而言地關(guān)聯(lián)到共享內(nèi)存,另一些則要求高速緩存,還有一些要求二者的組合。非常好的的內(nèi)存層級(jí)結(jié)構(gòu)應(yīng)能夠同時(shí)為共享內(nèi)存和高速緩存帶來(lái)優(yōu)勢(shì),同時(shí)讓編程人員可以選擇在二者之上進(jìn)行設(shè)計(jì)。Fermi內(nèi)存層級(jí)結(jié)構(gòu)支持兩種類型的程序行為。

Fermi的緩存層級(jí):其中對(duì)于并行計(jì)算無(wú)用的紋理緩存已被剔除
為加載/存儲(chǔ)操作添加一個(gè)真正的高速緩存層級(jí)結(jié)構(gòu)會(huì)帶來(lái)嚴(yán)峻挑戰(zhàn)。傳統(tǒng)的GPU架構(gòu)為紋理操作提供了只讀“加載”路徑,同時(shí)為像素?cái)?shù)據(jù)輸出提供了只寫(xiě)“輸出”路徑。然而,這一方法在執(zhí)行要求同時(shí)進(jìn)行讀寫(xiě)的通用C或C++線程程序時(shí)表現(xiàn)非常不佳。例如,向內(nèi)存發(fā)起一個(gè)寄存瀑然后再讀回會(huì)形成寫(xiě)后讀威脅。如果讀和寫(xiě)路徑不同,可能會(huì)直接覆蓋掉整個(gè)寫(xiě)/“導(dǎo)出”路徑,而無(wú)法正確發(fā)起讀操作,從而使得讀路徑上的任意高速緩存不能與寫(xiě)數(shù)據(jù)保持一致。

Fermi通過(guò)為加載和存儲(chǔ)提供單個(gè)統(tǒng)一的內(nèi)存請(qǐng)求路徑解決了這一挑戰(zhàn),這一方法為每一個(gè)SM多處理器提供一個(gè)一級(jí)高速緩存,同時(shí)設(shè)置統(tǒng)一的二級(jí)高速緩存,以支持所有操作(加載、存儲(chǔ)和紋理)。每個(gè)SM多處理器上的一級(jí)高速緩存可以進(jìn)行配置,以支持共享內(nèi)存和緩存本地與全局內(nèi)存操作。64KB的內(nèi)存可分出48 KB用作共享內(nèi)存,16KB用作一級(jí)高速緩存;或者16KB用作共享內(nèi)存,48KB用作一級(jí)高速緩存。當(dāng)提供48KB的共享內(nèi)存時(shí),需要廣泛使用共享內(nèi)存的程序(如電子動(dòng)態(tài)模擬)的性能將可以提高三倍。對(duì)于預(yù)先無(wú)法確定內(nèi)存訪問(wèn)情況的程序,設(shè)置48KB的一級(jí)高速緩存將能夠比直接訪問(wèn)DRAM帶來(lái)顯著改進(jìn)的性能。
在任意一種配置中,一級(jí)高速緩存都可以通過(guò)緩存復(fù)雜程序的臨時(shí)寄存器溢出對(duì)性能有所幫助。前一代GPU將寄存器直接交給DRAM,從而增加了訪問(wèn)延遲。通過(guò)使用一級(jí)高速緩存,性能能夠隨著臨時(shí)寄存器容量的增加逐步提升。
Fermi采用了一個(gè)768KB統(tǒng)一二級(jí)高速緩存,用于支持所有加載、存儲(chǔ)和紋理請(qǐng)求。二級(jí)高速緩存在GPU之間提供了有效、高速的數(shù)據(jù)共享。針對(duì)以前未知的數(shù)據(jù)地址的算法,如Physics Solver、光線追蹤以及稀疏矩陣相乘等,將能夠從這一高速緩存結(jié)構(gòu)中受益最大。此外,要求多個(gè)SM來(lái)讀取同一數(shù)據(jù)的過(guò)濾器和卷積內(nèi)核也能夠從中受益。
● 第一款支持ECC顯存的GPU
Fermi是第一個(gè)在顯存中提供了基于糾錯(cuò)碼(ECC)的數(shù)據(jù)保護(hù)功能的GPU。CPU計(jì)算用戶使用ECC來(lái)在高性能計(jì)算環(huán)境中增強(qiáng)數(shù)據(jù)完整性。ECC是諸如醫(yī)療成像以及大型集群計(jì)算等領(lǐng)域中一個(gè)迫切需要的特性。
自然發(fā)生的輻射可能導(dǎo)致內(nèi)存中的數(shù)據(jù)被更改,導(dǎo)致軟錯(cuò)誤。ECC技術(shù)能夠在單位軟錯(cuò)誤影響系統(tǒng)之前就予以發(fā)現(xiàn)并進(jìn)行糾正。由于此類輻射所致錯(cuò)誤的可能性隨已安裝系統(tǒng)的數(shù)量直線增長(zhǎng),ECC是大型集群部署中的一個(gè)必備要求。
Fermi支持單錯(cuò)糾正雙錯(cuò)檢測(cè)(SECDED)ECC代碼,能夠在數(shù)據(jù)被訪問(wèn)期間糾正硬件中的任意單位錯(cuò)誤。此外,SECDED ECC還確保了所有雙位錯(cuò)誤和眾多多位錯(cuò)誤能夠被發(fā)現(xiàn)和報(bào)告,以便能夠重新運(yùn)行程序,而不是繼續(xù)執(zhí)行不良數(shù)據(jù)。
Fermi的寄存器文件、共享內(nèi)存、一級(jí)高速緩存、二級(jí)高速緩存和顯存均提供有ECC保護(hù)功能,從而不僅是適用于HPC應(yīng)用的最強(qiáng)大GPU,同時(shí)也是最可靠的GPU。此外,F(xiàn)ermi還支持行業(yè)標(biāo)準(zhǔn),能夠當(dāng)在芯片間傳輸數(shù)據(jù)時(shí)對(duì)其進(jìn)行檢查。所有NVIDIA GPU均支持用于CRC檢查的PCI-E標(biāo)準(zhǔn),能夠在數(shù)據(jù)鏈路層進(jìn)行重試。Fermi還支持用于CRC檢查的同類GDDR5標(biāo)準(zhǔn),能夠當(dāng)數(shù)據(jù)在內(nèi)存總線上傳輸時(shí)進(jìn)行重試(也稱作“EDC”)。
是否支持ECC,成為GeForce與Tesla的最大區(qū)別,當(dāng)然Tesla還配備了更大容量的顯存,為密集型數(shù)據(jù)處理提供更高的性能。
關(guān)注我們


