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