AMD公開HSA運(yùn)算架構(gòu)細(xì)節(jié)
AMD發(fā)表新運(yùn)算架構(gòu)技術(shù)hUMA,可讓CPU與GPU共享同一記憶體空間,解決過去的資料重覆拷貝問題
2012年,AMD就攜手ARM、高通、三星、聯(lián)發(fā)科等廠商成立HSA(Heterogeneous Systems Architecture)基金會(huì),希望拓展CPU和GPU協(xié)同運(yùn)算的新架構(gòu),并輔助此架構(gòu)發(fā)展的異質(zhì)運(yùn)算新軟體開發(fā)環(huán)境。
日前,AMD進(jìn)一步公開說明此運(yùn)算架構(gòu)的新技術(shù):hUMA(heterogeneous Uniform Memory Access)。透過hUMA,CPU和GPU能共享同一個(gè)記憶體空間,并且CPU能夠直接存取GPU的記憶體位址,不必像過去得花工夫再將GPU的運(yùn)算資料復(fù)寫到CPU上。
過去CPU和GPU的記憶體池仍獨(dú)立運(yùn)作
換句話說,以過去技術(shù)發(fā)展的狀態(tài),即便GPU和CPU已整合到同一個(gè)晶片上(GPGPU技術(shù)),晶片在運(yùn)算時(shí)要定位記憶體的位置仍然得經(jīng)過繁雜的步驟,這是因?yàn)镃PU和GPU的記憶體池仍然是獨(dú)立運(yùn)作。
先前為了解決兩者記憶體池獨(dú)立的運(yùn)算問題,當(dāng)CPU程式需要在GPU上進(jìn)行部分運(yùn)算時(shí),CPU都必須從CPU的記憶體上復(fù)制所有的資料到GPU的記憶體上,而當(dāng)GPU上的運(yùn)算完成時(shí),這些資料還得再復(fù)制回到CPU記憶體上。這些步驟都會(huì)不斷耗費(fèi)時(shí)間以及程式處理的效能。
此外,復(fù)制資料的步驟也代表著,當(dāng)CPU正在運(yùn)作時(shí),GPU就無法同時(shí)運(yùn)算相同的資料。而當(dāng)不同程式語言間的關(guān)鍵術(shù)語(exact terminology)變化時(shí),CPU資料架構(gòu)會(huì)啟動(dòng)指標(biāo)器(pointers)來指示相關(guān)的資料,但是,因?yàn)镃PU的指標(biāo)器是指示到CPU記憶體上的位置,而GPU的記憶體又是另一個(gè)獨(dú)立架構(gòu),因此這樣的架構(gòu)若復(fù)制到GPU上運(yùn)作,反而會(huì)產(chǎn)生位置錯(cuò)置的問題。
而hUMA技術(shù),就是來解決兩者記憶體獨(dú)立的問題。
hUMA能讓GPU直接存取CPU的記憶體位置
hUMA像個(gè)連貫快取的系統(tǒng),讓CPU和GPU能共享同一個(gè)記憶體空間,讓CPU和GPU在記憶體上看到的資料都能維持一致,如果其中一方上的資料改變,即便舊資料經(jīng)過快取,另一方還是能看到經(jīng)改變的資料。換句話說,hUMA能讓GPU直接存取CPU的記憶體位置,當(dāng)CPU在讀寫資料時(shí),GPU也能同時(shí)讀寫資料。
此外,hUMA也能用在CPU的需要配置虛擬記憶體(demand-paged virtual memory)上。當(dāng)GPU要存取寫在磁碟上的位置時(shí),CPU就能讓作業(yè)系統(tǒng)去尋找,并加載相關(guān)的資料進(jìn)記憶體中。
第一款支援hUMA的產(chǎn)品將會(huì)是AMD的Kaveri APU,預(yù)計(jì)今年下半年上市。根據(jù)AMD表示,hUMA將會(huì)支援C++和Java等開發(fā)語言。