OpenPOWER+CAPI實現(xiàn)第二代分布計算
摘要:本文介紹了CAPI技術(shù),并給出基于CAPI應(yīng)用的三個案例。
本文引用地址:http://2s4d.com/article/281881.htm1 向第二代分布計算演進
最早的時候計算機系統(tǒng)單任務(wù)的,隨著數(shù)據(jù)量的增加,單計算任務(wù)的處理能力已不足以滿足人們?nèi)找嬖鲩L的需求,所以計算機系統(tǒng)逐漸演進到多任務(wù)的計算環(huán)境,同時有多個CPU運行(圖1),這就產(chǎn)生一個訪問內(nèi)存中的數(shù)據(jù),數(shù)據(jù)的一致性是要急需解決的問題。那么什么是數(shù)據(jù)一致性的問題呢?當一個CPU對一個數(shù)據(jù)進行操作之后,另外一個CPU需要拿到正確的數(shù)據(jù)。
在系統(tǒng)里面,電腦是用硬件來保證數(shù)據(jù)一致性,同時保證另外一個線程在讀取數(shù)據(jù)的時候能讀取到正確的數(shù)據(jù)。如圖2所示,圖2中有6個CPU核,每個CPU核都有自己的緩存,他們共享了一個更大的主存。圖2展示第一個POWER上面的嶄新的應(yīng)用,要對地址為1000的應(yīng)用進行操作。第一個應(yīng)用會把這個地址為1000的數(shù)據(jù)從主存里面讀到自己的緩存上面,并且對它進行修改,比如把它修改成綠色,有另外一個應(yīng)用跑在了第三個CPU核上面,它也是讀取地址為1000的數(shù)據(jù),應(yīng)該期望的是它讀到的是綠色的數(shù)據(jù)而不是原來白色的數(shù)據(jù)。同樣第三個核上的應(yīng)用會把這個數(shù)據(jù)進行改寫,比如改寫成紅色,這時候如果還有另外一個應(yīng)用跑在了第四個第五個核上面的應(yīng)用,它也會去讀取這個數(shù)據(jù),也應(yīng)該期望它能夠讀到紅色的數(shù)據(jù),這背后都是由一個內(nèi)存通知器硬件來幫軟件完成這些數(shù)據(jù)的一致性,保證它們讀到的數(shù)據(jù)都是最新的數(shù)據(jù)。當計算機系統(tǒng)從一個單CPU系統(tǒng)進化到多CPU系統(tǒng)的時候,它的性能功耗比其實是在下降的,所以現(xiàn)在可以用這樣的系統(tǒng)處理更多的數(shù)據(jù),比如在線交易業(yè)務(wù)、企業(yè)ERT業(yè)務(wù)、數(shù)據(jù)庫業(yè)務(wù)等。
隨著互聯(lián)網(wǎng)的普及,數(shù)據(jù)量比以往更多。對于系統(tǒng)來說需要更強的硬件計算能力,來處理更多的數(shù)據(jù)。常見的解決方案是在CPU核上,開辟更多個硬件的線程,用這些線程來提高其處理能力,來幫助它對I/O端口過來的數(shù)據(jù)進行更好的處理,同時加入了GPU和FPGA,使用這些硬件來幫助系統(tǒng)處理數(shù)據(jù)(圖3)。但是傳統(tǒng)上GPU和FPGA都是以I/O設(shè)備的形式掛載在這個系統(tǒng)上面,為了使用I/O設(shè)備,需要提高技能,如編程人員需要學習硬件知識,需要懂得內(nèi)核的人為I/O設(shè)備進行驅(qū)動的開發(fā),同時由于它們是I/O設(shè)備,沒有和CPU共享內(nèi)存,所以需要內(nèi)核代碼幫助他們做數(shù)據(jù)傳輸。擺在面前的另外一個難題就是半導體技術(shù)的性價比不再持續(xù)增長,現(xiàn)在已經(jīng)到了一個拐點,不能依賴于半導體技術(shù)的增長使系統(tǒng)更快更強,需要從硬件還有固件、操作系統(tǒng)、設(shè)備應(yīng)用等多角度考慮,尋求一個更好的解決方案。
為了解決這種需求,現(xiàn)在引入FPGA使用CAPI(相干加速器處理器接口)接入系統(tǒng)更快更好地處理數(shù)據(jù)。隨著移動互聯(lián)網(wǎng)的發(fā)展,這樣數(shù)據(jù)會比以往更多,所以我們需要硬件來幫助系統(tǒng)處理數(shù)據(jù)。當然整個系統(tǒng)不是IBM提供的封閉系統(tǒng),雖然IBM也有一個192線程的機器,再加上FPGA的板卡,但是IBM沒有提供這樣一個封閉系統(tǒng),相反IBM會有更多的合作伙伴,比如中太數(shù)據(jù)的服務(wù)器、NVIDIA的GPU、賽靈思的FPGA芯片、恒揚的FPGA板卡解決方案,還有Ubuntu的操作系統(tǒng)解決方案、三星提供的存儲解決方案。以一個合作伙伴的形式,向更多的企業(yè)提供應(yīng)用,提供服務(wù)。
CAPI可以使FPGA連接到系統(tǒng)上面(如圖4),通過在FPGA上面內(nèi)嵌了一點處理邏輯,使FPGA上面的硬件可以和CPU線程共同共享一段虛擬的地址空間,在CPU上的線程會產(chǎn)生數(shù)據(jù),同時也會產(chǎn)生一個任務(wù)隊列,隊列可以定義指導FPGA上面硬件如何對數(shù)據(jù)進行操作。在新一代的系統(tǒng)里面,允許FPGA硬件和CPU上面軟件共享虛擬的地址空間,并且它們的一致性是由硬件來進行維護。通過一個調(diào)動CPU上的軟件可以觸發(fā)IPA硬件去任務(wù)隊列里面獲取任務(wù)的描述,然后FPGA通過共享的存儲空間來讀取內(nèi)存上面的數(shù)據(jù),并產(chǎn)生結(jié)果,這些結(jié)果和數(shù)據(jù)都可以被CPU上軟件直接訪問的。IBM已有系統(tǒng)是工作在這樣的模式。用CAPI技術(shù)不再需要面對之前麻煩,但是因為FPGA軟件員不需要再去了解具體的硬件是如何工作,F(xiàn)PGA工作在協(xié)處理器的模式共享內(nèi)存。
圖5是一個OpenPOWER的機器,在紅色的兩個圈子里是兩個POWER8的處理器模塊,綠色的地方是可以插兩個CAPI板卡的地方。
評論