CPU架構(gòu)與技術(shù)發(fā)展詳解
CPU是中央處理單元(Central Processing Unit)的縮寫,它可以被簡稱做微處理器(Microprocessor),不過經(jīng)常被人們直接稱為處理器(processor)。CPU是計算機的核心,其重要性好比大腦對于人一樣,因為它負(fù)責(zé)處理、運算計算機內(nèi)部的所有數(shù)據(jù)。下面我們從CPU的發(fā)展歷程來看看CPU架構(gòu)和技術(shù)的發(fā)展。
整合浮點運算協(xié)處理器
首先我們來重拾一個幾乎快要被遺忘的名詞——協(xié)處理器,它是一種芯片,用于減輕系統(tǒng)微處理器的特定處理任務(wù),早些年協(xié)處理器主要是用以輔助進行浮點運算。
★ 最初的CPU只能進行整點運算,浮點運算效率極低
CPU最基本的運算就是“加減乘除”,但實際上計算機只能用加法器來完成整數(shù)以及固定小數(shù)點位置(整點)的算術(shù)運算,而不能處理小數(shù)點可以浮動的數(shù)值(浮點)。對于小數(shù)多采用的是二進制的科學(xué)計數(shù)法、也就是浮點數(shù)表示法:尾數(shù)、階數(shù)符號位各占一位,然后再對其余數(shù)位尾數(shù)、階數(shù)的有效數(shù)位合理分配。
在CPU運算時,浮點數(shù)的運算量遠(yuǎn)比整數(shù)復(fù)雜,因為不僅尾數(shù)要參與運算,階數(shù)也要參與,并且需要對尾數(shù)和階數(shù)的符號位都進行處理,所以,最早的CPU并沒有能力進行浮點運算(8088/8086,80286,80386SX),需要浮點運算時,由CPU通過軟件模擬來實現(xiàn),所以,進行浮點運算時就會慢很多。
★ 協(xié)處理器誕生,專門處理浮點運算
8086處理器和它的協(xié)處理器8087
8086是當(dāng)今CPU的鼻祖,所謂X86架構(gòu)也就是指8086處理器所開創(chuàng)的指令集體系。為了彌補8086在進行浮點運算時的不足,Intel與1980年設(shè)計了8087數(shù)學(xué)協(xié)處理器,并且為X86體系推出了第一個浮點格式IEE754。8087提供兩個基本的32/64bit浮點資料形態(tài)和額外的擴展80bit內(nèi)部支援來改進復(fù)雜運算之精度。除此之外,8087還提供一個80/17bit封裝BCD (二進制編碼之十進制)格式以及16/32/64bit整數(shù)資料形態(tài)。
386處理器和它的協(xié)處理器387
X87協(xié)處理器新增約60個指令給程序員,所有的指令都是以“F”開頭跟其他的標(biāo)準(zhǔn)8086整數(shù)運算指令有所區(qū)別,舉例來說,相對于ADD/MUL,8087提供FADD/FMUL。
8087是于1980年發(fā)布,然后被80287、80387DX/SX和487SX所取代。
★ 協(xié)處理器被整合進入CPU內(nèi)部
以往,協(xié)處理器都是可選配件,在主板上X86處理器旁邊一般都會為X87設(shè)計一個空的插槽,只有當(dāng)用戶確實有需要時才會專門購買相應(yīng)的X87協(xié)處理器插進去,來加速浮點運算。
486DX是第一顆整合了浮點運算協(xié)處理器的產(chǎn)品,相當(dāng)于486SX+487SX
隨著時代的發(fā)展,越來越多的程序要求使用更高精度的浮點運算,X87協(xié)處理器幾乎成為必備品。于是在制造工藝日趨成熟之后,Intel在486一代將X86和X87整合在了一起,浮點運算成為了CPU的一項基本功能,而且重要性越來越大。
Intel 486DX、Pentium之后的CPU都內(nèi)含了協(xié)處理器,AMD K5、K6之后的CPU都內(nèi)建了協(xié)處理器,所以此后就很少有人會提及協(xié)處理器的概念了。