龍芯將兩款CPU核開源 助計算機教育從“用”向“造”突破
應用開發人才充足,底層研發人才匱乏
本文引用地址:http://www.104case.com/article/201611/339766.htm龍芯首席科學家胡偉武指出,我國計算機領域的教育更多的還是教學生如何“用”計算機而不是“造”計算機,而且絕大多數高校只能培養應用程序員,而且是對計算機系統底層知之甚少的應用程序員。這直接導致國內IT人才結構失衡,應用開發型人才充足,但底層基礎系統研發人才卻極度匱乏,使中國龐大的IT產業建立在國外軟硬件系統平臺之上——在硬件上,完全依賴國外的X86和ARM,在軟件上,也存在大而不強的現實狀況。
軟件產業強大與否,并不是取決于該國程序員數量,更不取決于軟件產業創造的GDP,而在于產業標準制定權,以及是否擁有核心技術。一流企業做標準,二流企業做品牌,三流企業做產品,掌握了標準的制定權就能獲取高額利潤并立于不敗之地。而國內軟件業從教學到產業,基本上跟著西方的技術標準走,沒有自己的一套技術標準。像程序員常用的編程語言、編譯器、軟件開發工具,基本上用的都是國外產品。
軟件產業大而不強的另一個表現就是產品缺乏核心技術。以我們每天都用的手機和瀏覽器來說,國內各家公司推出了不少瀏覽器,但基本上是國外瀏覽器的“馬甲”,所謂的國產瀏覽器都沒有國人自己編寫的瀏覽器內核。手機操作系統也是如此,雖然很多國產手機都有諸如Emtion、nubia之類的系統,但撥開現象看本質,這些還都是安卓操作系統的馬甲,只能算是一個UI(系統界面)。而BAT等互聯網巨頭推出的操作系統,其本質也是基于安卓的二次開發,編寫的代碼僅限于重寫了虛擬機。
類似的例子還有很多,某家以殺毒軟件起家的互聯網公司,其殺毒軟件的用的是羅馬尼亞的BitDefender引擎。不少廠商隔三差五就會出現于媒體聚光燈下的云解決方案,其實上也是國外開源軟件(Openstack/Xen)的馬甲,有些廠商雖然也貢獻了少量代碼,但含金量遠不及宣傳中那么足。國內有幾十萬JAVA程序員,卻鮮有具備JAVA核心技術——JAVA虛擬機的研發能力。國內從事瀏覽器應用的團隊數以千計,卻少有掌握瀏覽器底層JS引擎研發技術,寫QT的也很多,但QT庫卻沒多少人干……國內IT企業極少參加系統相關標準制定,國內軟件人才向國際開源社區貢獻的代碼也相對偏少。
因此,雖然中國軟件產業和互聯網企業創造了海量的GDP,演繹了一批造富神話,吸納了大批就業崗位,但依附于西方技術標準、沒有自己編譯器和軟件開發工具、應用軟件強而基礎軟件弱已成為中國軟件產業的內傷。
底層研發人才匱乏的另一個表現就是圍繞國產硬件平臺的應用開發能力和適配軟件優化能力嚴重不足,國內非常多做手機APP、網游、頁游的程序員,你讓他們在國外技術框架下寫能在X86、ARM芯片上跑的APP、網游、頁游程序,他們沒問題。但你讓他們脫離國外技術框架去給走自主路線的龍芯、申威開發軟件,就未必能做出來了,至于針對龍芯、申威平臺進行軟硬件磨合優化則根本無所適從,缺乏對國產系統架構平臺的適配調優能力。由于不掌握從硬件角度進行軟件開發與調優的能力,一旦遭遇基礎軟件系統不完善,就不知該如何解決。在上層應用系統與系統結構的磨合適配方面也存在一定問題——應用開發對X86架構形成依賴和慣性,而應用設計的不足被X86平臺強大的性能掩蓋。
推行計算機教育改革試點
若要系統能力的培養則需要從硬件開源做起,讓學生有更多機會了解并設計自己的處理器,使學生掌握如何“造”計算機而不是如何“用”計算機,使學生對計算機系統融會貫通——當鼠標點一下屏幕打開一個網頁的過程中,搞清楚有關瀏覽器、圖形系統、操作系統內核等是如何協同工作的,在完成這些工作過程中指令和數據是如何在硬件系統的CPU、GPU、南北橋中流動的,CPU的微結構中取指、運算、訪存等各個模塊是如何配合的。
對此,中國科學院大學為首的高校聯合產業界共同編撰涵蓋本科、碩士、博士的《計算機體系結構》課程。在本科階段,主要強調基礎性和系統性,學習作為軟硬件界面的指令系統結構,包含CPU、GPU、南北橋協同的計算機硬件結構,CPU的微結構,并行處理結構,計算機性能分析等五部分主要內容。在碩士階段,主要介紹CPU微結構,包括指令系統結構、二進制和邏輯電路、靜態流水線、動態流水線、多發射流水線、運算部件、轉移猜測、高速緩存、TLB、多核對流水線的影響等。在博士階段,主要強調實踐性,通過設計真實的(而不是簡化的)CPU,運行真實的(而不是簡化的)操作系統,對結構設計、物理設計、操作系統做到融會貫通。目前,該課程已經在中國科學院大學講授。
將知識融會貫通,就離不開具體實踐,在龍芯將GS132和GS232兩款CPU核向高校和學術界開源后,大學老師可以基于龍芯平臺設計實驗課程,使學生可以在真實的CPU上運行真實的操作系統,在龍芯實驗平臺上啟動操作系統并進行性能分析。在流水線設計方面,讓學生把GS132的三級靜態流水線改造成五級靜態流水線。在TLB和Cache設計方面,讓學生在五級GS132處理器核上按MIPS32規范實現TLB及Cache,運行通用操作系統,進行有/無Cache的性能分析。在雙發射結構設計方面,把GS132處理器核改造成雙發射CPU,進行單發射和雙發射性能比較。在動態流水線設計方面,在GS232基礎上改寫部分模塊(如乘法器、保留站等)進行靜態單發射、靜態雙發射、動態雙發射的性能分析。
此外,龍芯還研發了CPU實驗平臺、操作系統實驗平臺、并行處理實驗平臺等數款龍芯教學平臺,通過為高校提供完整的線上、線下實驗環境,助力教學改革和計算機專業學生的系統能力培養,實現“設計真實處理器,運行真實操作系統”。
據了解,復旦大學、南開大學、南京航空航天學院、東北林大、金陵科技學院、大連海洋大學將開展基于龍芯平臺的教育試點。雖然中國計算機人才質量不高、行業技術原創少、依附跟隨外國技術等問題不是僅僅設計一個專業課程,增加學生工程規模的系統實踐就能解決的,但這畢竟是一個好的開始,筆者還是衷心希望本次的計算機教育改革試點能解決部分現存的問題,為國家培養更多的專業人才。
評論