簡介
繼1979年度圖靈獎首次授予一位加拿大學者K.E.Iverson之後,1989年度的圖靈獎又一次授予加拿大學者威廉·凱亨(WilliamM.Kahan)。
主要貢獻
大家知道,計算機中的“數”有“定點數”和“浮點數”之分,“定點數”的運算部件的設計和實現比較容易,而“浮點數”的運算部件的設計和實現卻複雜得多,困難得多。因此,較早的計算機許多都不配備浮點運算,而是採用IBM的巴科斯(J.Backus,1999年度圖靈獎獲得者)發明的軟體,由定點運算部件去完成浮點運算。但這種做法使浮點運算的速度大大降低,難以滿足某些套用的需要。正是凱亨,在Intel工作期間,主持設計與開發了8087晶片,成功地實現了高速、高效的浮點運算部件。目前,以80×86為CPU的計算機,若需完成科學與工程計算方面的課題,必須同時配置8087這種數學協處理器。一些著名的數學軟體包,如Mathematica,也必須在配有8087數學協處理器的機器上才能運行。由於有這樣的背景,凱亨受命主持制定了二進制的、與基數無關的浮點運算標準,即IEEE754標準和IEEE854標準。這兩個標準至今仍為絕大多數的計算機廠商所遵守。
除了以上主要貢獻外,凱亨在科學、工程、財會計算的數值算法的設計、誤差分析、驗證與自動診斷方面也有卓越的貢獻,他是該領域中世界公認的權威,曾發表過許多有價值的論文。尤其是在矩陣計算方面,凱亨有極高的學術造詣。
作風嚴謹
作為一名數學家,凱亨在教學與研究工作中素以作風嚴密、嚴謹、嚴格著稱。但為此,他也付出了一定的代價。在本文,值得提一下這樣一個小插曲,即凱亨獲得圖靈獎以後,引發了一場爭議和爭論。這在圖靈獎的歷史上是唯一的一次。事情是這樣的:ACM於1990年1月宣布凱亨因在浮點運算標準的制定上的貢獻而獲得圖靈獎,並在1990年2月於華盛頓召開的?90CSC(計算機科學會議)上正式向凱亨頒獎。這之後,ACM收到了一名讀者對凱亨獲獎表示異議的信。按照“言論自由”的原則,ACM把這封信不加評論地發表在《ACM通訊》7月份的“ACM論壇”(ACMForum)這一專欄中。
讀者異議
這名讀者提出異議的理由主要有兩條:一是憑“制定標準”就獲獎,條件不足。但對這一點,該讀者大概也覺得並不理直氣壯,因而並未發揮,匆匆帶過。重點在第二條,即凱亨在伯克利大學對學生不公正。不公正表現在哪裡呢?該讀者說,伯克利大學的大學生絕大多數課程都能取得高分,只有凱亨教授上的數據結構和程式設計課例外,這是其一。其二是該讀者自己和其他5~6名同學在進入伯克利的研究生院的初試中,6門筆試課中的5門都順利通過,只有凱亨教授主持的數值分析課的考試通不過,不得不重考。而他之所以未能通過,是因為他認為解題的步數比運算結果的精度更加重要,凱亨教授不同意他的這種觀點。這封讀者來信發表以後,10月份出版的《ACM通訊》上,在“ACM論壇”中發表了另一名讀者表示不同意見的來信。這名讀者認為,上述讀者介紹的情況,恰恰說明凱亨教授對學生高標準、嚴要求,是值得稱道的;而解題步數同運算結果精度相比何者更重要,顯然正確的一方是凱亨教授。因此這名讀者表示,在看了上述讀者的信之後,他只是更加增加了對凱亨教授的敬意,而不是相反。爭論至此結束。在這個過程中,圖靈獎的評獎委員會和凱亨教授本人都沒有出來說任何話。這一小插曲也許對我國教育界和學術界有所啟示。
凱亨目前仍在伯克利計算機科學系任教授。
浮點運算
什麼是浮點數
要了解什麼是浮點數,首先要了解什麼是整數。數和計算通常是按“整數”或“浮點數”進行劃分的。整數計算使用計算的所有位(如32位)記錄整數“值”。而浮點計算則使用計算的一部分位表示“值”(如23位),另一部分位表示指數(8位)。由於一部分位用來表示指數,所以浮點計算得出的值可以比整數計算得出的值大很多或是小很多。換句話說,對於給定數量的位,浮點計算的精度沒有整數計算高,但浮點計算結果的範圍卻比整數計算大很多。
哪些處理器執行單元用於浮點運算
大多數人會認為所有的浮點運算都通過處理器中的浮點單元完成。總體說來是這樣的,但不是所有的浮點單元都一樣,所有的浮點指令也不盡相同。同樣,許多人認為所有的SIMD(單指令多數據流)指令都是由SIMD單元完成的。然而事實並非如此。有些SIMD指令執行整數運算,而有些則執行浮點運算。同樣,執行浮點運算的SIMD指令使用的執行單元與非SIMD浮點指令(如x87浮點指令)相同。
何謂不同的浮點指令集
在增加MMX或SSE/SSE2/SSE3指令集之前,x86架構中的所有浮點計算都被認為是x87指令。這意味著他們使用特定的80x87暫存器堆疊並且是80位擴展精度計算。所有x87指令都有一個源和目標運算元(例如單條指令,單個數據)。
x87暫存器位於堆疊中,而非平面暫存器檔案(flatregisterfile)。這意味著,訪問x87暫存器要比下述XMM暫存器複雜一些。
採用MMX技術的英特爾®奔騰®處理器中增加了MMX指令。MMX是第一個增加到x86指令集中的SIMD指令。MMX指令是純整數運算;不過使用的是80位x87暫存器堆疊。
英特爾®奔騰®III處理器中增加了SSE指令集。SSE增加了支持單精度浮點運算能力的SIMD指令,它使用8個新的XMM128位暫存器(在64位模式中運算時,新的處理器中有16個XMM暫存器),它們被布置在一個平面暫存器檔案中(這意味著可隨時訪問任何暫存器,並且不使用x87暫存器所用的堆疊協定)。增加的SIMD整數運算也是SSE指令集的一部分。x87暫存器無需執行SSE浮點指令,但是執行浮點運算的那些SSE指令仍使用x87指令所使用的浮點執行單元(FP-add、FP-Mul和FP-Div)。這意味著您不能同時執行SSEFP-Multiply和x87FP-Multiply。
英特爾®奔騰®4處理器和英特爾®至強®處理器中增加了SSE2指令。SSE2增加了支持雙精度浮點運算能力的SIMD指令,它使用SSE指令所使用的128位XMM暫存器(增加的SIMD整數運算也是SSE2指令集的一部分)。許多新的SSE2指令與原來的MMX指令相似;但是新的SSE2指令能夠使用“更加易用”的XMM暫存器,而非“較難用”的x87暫存器堆疊。雙精度浮點SSE2指令繼續使用x87浮點執行單元。
含超執行緒(HT)技術的英特爾®奔騰®4處理器和英特爾®至強®處理器(例如90納米Northwood和Prestonia)中增加了SSE3指令。SSE3指令只是增加了幾個SSE或SSE2指令集中所沒有的較為獨特的指令,但並未增加任何重 要的新功能。
而在英特爾®全線台式機處理器酷睿®、酷睿2®處理器、移動平台上的迅馳®處理器以及伺服器上全新的英特爾®至強®處理器上採用的酷睿®架構中,英特爾在原有的SSE3指令集的基礎上新增了SSE最佳化,包括酷睿2®處理器架構加速的SSE,SSE2和SSE3雙操作(operationstwo-fold)。經過最佳化的架構可以在單時鐘周期內執行一條128位SSE,SSE2或SSE3指令。
下一代SSE4指令集將集成在2007年下半年發布的下一代45nm產品中,其中包括代號Nehalem的英特爾第二代酷睿®架構。SSE4增加了50條性能增強指令。這些指令最佳化矢量編譯、媒體、文本和字元串處理以及程式目標加速。
CPU微體系結構對浮點運算的影響
以下是四核英特爾至強5300處理器(Woodcrest)上其中一個核心的微體系結構圖表。您將注意到FP-Mul/FP-Div和FP-Add單元(在圖表中顯示為Fadd和Fmul/Fdiv)處於不同的輸出連線埠(因此支持每時鐘周期發出和撤銷兩條浮點運算)。
綜述
儘管所有的浮點運算都在一個執行單元內運行,但是不同的指令用於執行不同的運算精度。了解什麼運算單元能運算什麼指令會讓你明白具體每個處理器理論上的浮點運算能力(FLOPS)意味著什麼。簡單的計算一個處理器有多少浮點運算單元並不能準確的告訴你該處理器的浮點運算能力。你需要了解浮點運算單元的計算寬度,每個浮點運算單元能執行的指令,每個指令運算的精度以及在一個時鐘指令內每個指令能執行的數量。
浮點運算與英特爾
對於計算機而言,計算複雜程度越大,要求的記憶體值也就越多,計算所用的時間也就越長,同時也需要更多的電晶體來支持計算。在上世紀九十年代前,這確實是一個難題,怎樣能讓計算機更輕鬆的處理越來越複雜的運算?直到一個人的出現,難題迎刃而解了,他就是浮點計算的先驅——威廉·凱亨(WilliamM.Kahan)。
計算機中的“數”有“定點數”和“浮點數”之分,“定點數”的運算部件的設計和實現比較容易,而“浮點數”的運算部件的設計和實現卻複雜得多,並且困難得多。因此,較早的計算機許多都不配備浮點運算,而是採用IBM的巴科斯(J.Backus,1999年度圖靈獎獲得者)發明的軟體,由定點運算部件去完成浮點運算。可這種做法使浮點運算的速度大大降低,也就難以滿足某些套用的需要了。
就是在這種情況下,威廉·凱亨,這位1933年6月出生在多倫多,曾經供職於英特爾的人解決了這個問題。威廉·凱亨在完成中學學業以後,進入著名的多倫多大學。在那裡,他實現了“三級跳”——繼1954年取得數學學士學位以後,1956年和1958年又先後獲得碩士學位和博士學位。學成以後,凱亨在母校和加州大學伯克利分校從事過教學和研究工作。在英特爾供職期間,凱亨主持設計與開發了8087晶片,成功地實現了高速、高效的浮點運算部件。直到目前,以80×86為CPU的計算機,若需完成科學與工程計算方面的課題,也必須同時配置8087這種數學協處理器。同時,一些著名的數學軟體包,如Mathematica,也必須在配有8087數學協處理器的機器上才能運行。由於他的突出貢獻,凱亨後來又受命主持制定了二進制的、與基數無關的浮點運算標準,即IEEE754標準和IEEE854標準。而這兩個標準至今仍為絕大多數的計算機廠商所遵守。也正是由於這兩個標準,ACM於1990年1月宣布凱亨因在浮點運算標準的制定上的貢獻而獲得圖靈獎。
嚴密、嚴謹、嚴格、追求更進一步是威廉·凱亨的一貫作風,也是他留給英特爾在不斷研發新的計算機浮點運算技術道路上的一筆精神財富。英特爾與浮點運算有著不解之緣,不論是從創始還是到一路走來的發展,英特爾都在貢獻著自己最大的力量,相信在明天,英特爾依然會伴隨著浮點計算的不斷發展繼續前行。
性能指標評測說明
SPECfp™_rate_base2006是一項計算密集型性能指標評測,用於衡量計算機系統在運行大量並行任務時的浮點吞吐性能。性能指標評測包括從實際最終用戶套用開發而來的一組十四個浮點工作負載。通過將性能指標評測的拷貝數量設定成作業系統可識別的邏輯硬體核心數量而同時運行多個性能指標評測拷貝來測量系統吞吐率。報告的性能得分是按工作/小時測量的系統吞吐率的衡量標準。得分越高表示性能越好。
SPECfp2006:當採用全面最佳化的編譯程式進行編譯時的17個標配比率的幾何平均值。每一個比率代表一個浮點運算基準測試。
SPECfp_base2006:當基準測試採用最低最佳化的編譯程式進行編譯時的17個標配比率的幾何平均值。
SPECfp_rate2006:當基準測試採用全面最佳化的編譯程式進行編譯時的17個標配吞吐率的幾何平均值。
SPECfp_rate_base2006:當基準測試採用最低最佳化的編譯程式進行編譯時的17個標配吞吐率的幾何平均值。
IT風雲人物
網際網路正在成為一個黑洞,它在吸收IT、電信很多傳統我們認為不可能跟網際網路產生關係的產業價值,還有把相關的產業公司捲入網際網路整個大的格局中。而這些在IT界的風雲人物,他們通過個人魅力與行業行為對業界實際發展及未來走向產生了深遠影響。 |