開啟主選單

求真百科

運算器,計算機中執行各種算術邏輯運算 操作部件。運算器的基本操作包括加、減、乘、除四則運算,與、或、非、異或等邏輯操作,以及移位、比較和傳送等操作,亦稱算術邏輯部件(ALU)。計算機運行時,運算器的操作和操作種類由控制器決定。運算器處理的數據來自存儲器;處理後的結果數據通常送回存儲器,或暫時寄存在運算器中。[1]

運算器

目錄

信息概述

運算器是由算術邏輯單元(ALU)、累加寄存器、數據緩衝寄存器和狀態條件寄存器組成,它是數據加工處理部件。相對控制器而言,運算器接受控制器的命令而進行動作 ,即運算器所進行的全部操作都是由控制器發出的控制信號來指揮的所以它是執行部件。主要功能:執行所有的算術運算;執行所有的邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。

計算機系統的硬件結構主要由四部分組成:控制器、運算器、內存和輸入輸出設備,其中,控制器和運算器統稱為中央處理器。簡稱CPU.它是計算機硬件系統的指揮中心.它包括控制器和運算器兩個部件。[2]

1、算術邏輯運算單元ALU(Arithmetic and Logic Unit) ALU主要完成對二進制數據的定點算術運算(加減乘除)、邏輯運算(與或非異或)以及移位操作。在某些CPU中還有專門用於處理移位操作的移位器。通常ALU由兩個輸入端和一個輸出端。整數單元有時也稱為IEU(Integer Execution Unit)。我們通常所說的「CPU是XX位的」就是指ALU所能處理的數據的位數。

2、浮點運算單元FPU(Floating Point Unit)FPU主要負責浮點運算和高精度整數運算。有些FPU還具有向量運算的功能,另外一些則有專門的向量處理單元。

3、通用寄存器組是通用寄存器組是一組最快的存儲器,用來保存參加運算的操作數和中間結果。在通用寄存器的設計上,RISC與CISC有着很大的不同。CISC的寄存器通常很少,主要是受了當時硬件成本所限。比如x86指令集只有8個通用寄存器。所以,CISC的CPU執行是大多數時間是在訪問存儲器中的數據,而不是寄存器中的。

這就拖慢了整個系統的速度。而RISC系統往往具有非常多的通用寄存器,並採用了重疊寄存器窗口和寄存器堆等技術使寄存器資源得到充分的利用。對於x86指令集只支持8個通用寄存器的缺點,Intel和AMD的最新CPU都採用了一種叫做「寄存器重命名」的技術,這種技術使x86CPU的寄存器可以突破8個的限制,達到32個甚至更多。不過,相對於RISC來說,這種技術的寄存器操作要多出一個時鐘周期,用來對寄存器進行重命名。

4、專用寄存器通常是一些狀態寄存器,不能通過程序改變,由CPU自己控制,表明某種狀態。

主要功能

對數據進行各種運算。這些運算除了常規的加、減、乘、除等基本的算術運算之外,還包括能進行「邏輯判斷」的邏輯處理能力,即「與」、「或」、「非」這樣的基本邏輯運算以及數據的比較、移位等操作。

相關數據

運算器的處理對象是數據,所以數據長度和計算機數據表示方法,對運算器的性能影響極大。70年代微處理器常以1個、4個、8個、16個二進制位作為處理數據的基本單位。大多數通用計算機則以16、32、64位作為運算器處理數據的長度。能對一個數據的所有位同時進行處理的運算器稱為並行運算器。

如果一次只處理一位,則稱為串行運算器。有的運算器一次可處理幾位 (通常為6或8位),一個完整的數據分成若干段進行計算,稱為串/並行運算器。運算器往往只處理一種長度的數據。有的也能處理幾種不同長度的數據,如半字長運算、雙倍字長運算、四倍字長運算等。有的數據長度可以在運算過程中指定,稱為變字長運算。按照數據的不同表示方法,可以有二進制運算器、十進制運算器、十六進制運算器、定點整數運算器、定點小數運算器、浮點數運算器等。按照數據的性質,有地址運算器和字符運算器等。

操作流程

運算器能執行多少種操作和操作速度,標誌着運算器能力的強弱,甚至標誌着計算機本身的能力。運算器最基本的操作是加法。一個數與零相加,等於簡單地傳送這個數。將一個數的代碼求補,與另一個數相加,相當於從後一個數中減去前一個數。將兩個數相減可以比較它們的大小。左右移位是運算器的基本操作。

在有符號的數中,符號不動而只移數據位,稱為算術移位。若數據連同符號的所有位一起移動,稱為邏輯移位。若將數據的最高位與最低位鏈接進行邏輯移位,稱為循環移位。

運算器的邏輯操作可將兩個數據按位進行與、或、異或,以及將一個數據的各位求非。有的運算器還能進行二值代碼的16種邏輯操作。乘、除法操作較為複雜。很多計算機的運算器能直接完成這些操作。乘法操作是以加法操作為基礎的,由乘數的一位或幾位譯碼控制逐次產生部分積,部分積相加得乘積。

除法則又常以乘法為基礎,即選定若干因子乘以除數,使它近似為1,這些因子乘被除數則得商。沒有執行乘法、除法硬件的計算機可用程序實現乘、除,但速度慢得多。有的運算器還能執行在一批數中尋求最大數,對一批數據連續執行同一種操作,求平方根等複雜操作。

運算方法

實現運算器的操作,特別是四則運算,必須選擇合理的運算方法。它直接影響運算器的性能,也關係到運算器的結構和成本。另外,在進行數值計算時,結果的有效數位可能較長,必須截取一定的有效數位,由此而產生最低有效數位的捨入問題。選用的捨入規則也影響到計算結果的精確度。

在選擇計算機的數的表示方式時,應當全面考慮以下幾個因素:要表示的數的類型(小數、整數、實數和複數):決定表示方式,可能遇到的數值範圍:確定存儲、處理能力。數值精確度:處理能力相關;數據存儲和處理所需要的硬件代價:造價高低。

兩種常用格式:定點格式:定點格式容許的數值範圍有限,但要求的處理硬件比較簡單;浮點格式:容許的數值範圍很大,但要求的處理硬件比較複雜。

1、定點數表示法:定點指小數點的位置固定,為了處理方便,一般分為定點純整數和純小數。

2、浮點數表示法:由於所需表示的數值取值範圍相差十分懸殊,給存儲和計算帶來諸多不便,因此出現了浮點運算法。

浮點表示法,即小數點的位置是浮動的。其思想來源於科學計數法。IEEE754的浮點數(比較特殊)浮點數的規格化:主要解決同一浮點數表示形式的不唯一性問題。規定 ,否則尾數要進行左移或右移。

機器零的概念:尾數為0或是階碼值小於所能表示的最小數。

3、十進制數串的表示方法:由於人們對十進制比較熟悉,因此在計算機中要增加對十進制運算的支持。兩種方式:將十進制數變為二進制數運算,輸出時再由二進制變為十進制。直接的十進制運算。直接運算的表示方法:字符串形式:用於非數值計算領域、壓縮的十進制數串:分為定長和不定長兩種。需要相應的十進制運算器和指令支持。

4、自定義數據表示:標誌符數據表示、描述符數據表示。區別:標誌符與每個數據相連,二者合起來存放在一個存儲單元,而描述符要和數據分開存放;描述符表示中,先訪問描述符,後訪問數據,至少增加一次訪存;描述符是程序的一部分,而不是數據的一部分。原碼:比較自然的表示法,最高位表示符號,0為正,1為負。優點:簡單易懂。缺點:加減法運算複雜。補碼:加減法運算方便,減法可以轉換為加法。定點小數的補碼。定點整數的補碼,反碼:為計算補碼方便而引入。由反碼求補碼:符號位置1,各位取反,末位加1。移碼:用於階碼的表示,兩個移碼容易比較大小,便於對階。

ASCII碼輸入碼:用於漢字輸入;漢字的存儲;字模碼:用於漢字的顯示。餘數處理的兩種方法:恢復餘數法:運算步驟不確定,控制複雜,不適合計算機運算。加減交替法:不恢復餘數,運算步驟確定,適合計算機操作。邏輯數概念:不帶符號的二進制數。四種邏輯運算:邏輯非、邏輯加、邏輯乘、邏輯異。

多功能算術/邏輯運算單元(ALU) 並行進位,行波進位加/減法器存在的兩個問題:運算時間長,行波進位加/減法器只能完成加法和減法,而不能完成邏輯操作,控制端M用來控制作算術運算還是邏輯運算,兩種運算的區別在於是否對進位進行處理。M=0時,對進位無影響,為算術運算;M=1時,進位被封鎖,為邏輯運算。 正邏輯中,「1」用高電平表示,「0」用低電平表示,而負邏輯剛好相反。邏輯與負邏輯的關係為,正邏輯的「與」到負邏輯中變為「或」,即+·互換。

內部總線,總線分類:內部總線、外部總線(系統總線)、通信總線。總線又可分為單向總線和雙向總線。帶鎖存器的總線可實現總線的復用。運算器包括ALU、陣列乘除器件、寄存器、多路開關、三態緩衝器、數據總線等邏輯部件。運算器的設計,主要是圍繞着ALU和寄存器同數據總線之間如何傳送操作數和運算結果而進行的。

運算器的三種結構形式:單總線結構的運算器:這種結構的主要缺點是操作進度較慢,但控制電路比較簡單。雙總線結構的運算器。三總線結構的運算器:三總線結構的運算器的特點是操作時間快。

相關結構

運算器包括寄存器、執行部件和控制電路3個部分。在典型的運算器中有3個寄存器:接收並保存一個操作數的接收寄存器;保存另一個操作數和運算結果的累加寄存器;在進行乘、除運算時保存乘數或商數的乘商寄存器。執行部件包括一個加法器和各種類型的輸入輸出門電路。

控制電路按照一定的時間順序發出不同的控制信號,使數據經過相應的門電路進入寄存器或加法器,完成規定的操作。為了減少對存儲器的訪問,很多計算機的運算器設有較多的寄存器,存放中間計算結果,以便在後面的運算中直接用作操作數。

為了提高運算速度,某些大型計算機有多個運算器。它們可以是不同類型的運算器,如定點加法器、浮點加法器、乘法器等,也可以是相同類型的運算器。運算器的組成決定於整機的設計思想和設計要求,採用不同的運算方法將導致不同的運算器組成。但由於運算器的基本功能是一樣的,其算法也大致相同,因而不同機器的運算器是大同小異的。

運算器主要由算術邏輯部件、通用寄存器組和狀態寄存器組成。 1、算術邏輯部件ALU。ALU 主要完成對二進制信息的定點算術運算、邏輯運算和各種移位操作。算術運算主要包括定點加、減、乘和除運算。邏輯運算主要有邏輯與、邏輯或、邏輯異或和邏輯非操作。移位操作主要完成邏輯左移和右移、算術左移和右移及其他一些移位操作。

某些機器中,ALU 還要完成數值比較、變更數值符號、計算操作數在存儲器中的地址等。可見,ALU 是一種功能較強的組合邏輯電路,有時被稱為多功能發生器,它是運算器組成中的核心部件。ALU 能處理的數據位數(即字長)與機器有關。

如 Z80 單板機中,ALU 是 8 位;IBM PC/XT 和 AT 機中,ALU 為 16 位;386 和 486 微機中,ALU 是 32 位。ALU 有兩個數據輸入端和一個數據輸出端,輸入輸出的數據寬度(即位數)與 ALU 處理的數據寬度相同。


2、通用寄存器組近期設計的機器的運算器都有一組通用寄存器。它主要用來保存參加運算的操作數和運算的結果。早期的機器只設計一個寄存器,用來存放操作數、操作結果和執行移位操作,由於可用於存放重複累加的數據,所以常稱為累加器。通用寄存器均可以作為累加器使用。

通用寄存器的數據存取速度是非常快的,目前一般是十幾個毫微秒(ns)。如果 ALU 的兩個操作數都來自寄存器,則可以極大地提高運算速度。 通用寄存器同時可以兼作專用寄存器,包括用於計算操作數的地址(用來提供操作數的形式地址,據此形成有效地址再去訪問主存單元)。例如,可作為變址寄存器、程序計數器(PC)、堆棧指示器(SP)等。必須注意的是,不同的機器對這組寄存器使用的情況和設置的個數是不相同的。

3、狀態寄存器狀態寄存器用來記錄算術、邏輯運算或測試操作的結果狀態。程序設計中,這些狀態通常用作條件轉移指令的判斷條件,所以又稱為條件碼寄存器。一般均設置如下幾種狀態位:

1)零標誌位(Z):當運算結果為 0 時,Z 位置「1」;非 0 時,置「0」;(2)負標誌位(N):當運算結果為負時,N 位置「1」;為正時,置「0」;(3)溢出標誌位(V):當運算結果發生溢出時,V 位置「1」;無溢出時,置「0」;(4)進位或借位標誌(C):在做加法時,如果運算結果最高有效位(對於有符號數來說,即符號位;

對無符號數來說,即數值最高位)向前產生進位時,C 位置「1」;無進位時,置「0」。在做減法時,如果不夠減,最高有效位向前有借位(這時向前無進位產生)時,C 位置「1」;無借位(即有進位產生)時,C 位置「0」。除上述狀態外,狀態寄存器還常設有保存有關中斷和機器工作狀態(用戶態或核心態)等信息的一些標誌位(應當說明,不同的機器規定的內容和標誌符號不完全相同),以便及時反映機器運行程序的工作狀態,所以有的機器稱它為「程序狀態字」或「處理機狀態字」(Processor Status Word,PSW )。

發展歷史

公元前5世紀,中國人發明了算盤,廣泛應用於商業貿易中,算盤被認為是最早的計算機,並一直使用至今。算盤在某些方面的運算能力要超過目前的計算機,算盤的方面體現了中國人民的智慧。 直到17世紀,計算設備才有了第二次重要的進步。

1642年,法國人Blaise Pascal(1623-1662)發明了自動進位加法器,稱為Pascalene。1694年,德國數學家Gottfried Wilhemvon Leibniz(1646-1716)改進了Pascaline,使之可以計算乘法。後來,法國人Charles Xavier Thomas de Colmar發明了可以進行四則運算的計算器。

現代計算機的真正起源來自英國數學教授Charles Babbage。Charles Babbage發現通常的計算設備中有許多錯誤,在劍橋學習時,他認為可以利用蒸汽機進行運算。起先他設計差分機用於計算導航表,後來,他發現差分機只是專門用途的機器,於是放棄了原來的研究,開始設計包含現代計算機基本組成部分的分析機。

(Analytical Engine) Babbage的蒸汽動力計算機雖然最終沒有完成,以今天的標準看也是非常原始的,然而,它勾畫出現代通用計算機的基本功能部分,在概念上是一個突破。 在接下來的若干年中,許多工程師在另一些方面取得了重要的進步,美國人Herman Hollerith(1860-1929),根據提花織布機的原理髮明了穿孔片計算機,並帶入商業領域建立公司。 第一代電子管計算機 (1946-1957)

1946年2月15日,標誌現代計算機誕生的ENIAC(Electronic Numerical Integrator and Computer)在費城公諸於世。ENIAC代表了計算機發展史上的里程碑,它通過不同部分之間的重新接線編程,還擁有並行計算能力。ENIAC由美國政府和賓夕法尼亞大學合作開發,使用了18000個電子管,70000個電阻器,有5百萬個焊接點,耗電160千瓦,其運算速度為每秒5000次。

第一代計算機的特點是操作指令是為特定任務而編制的,每種機器有各自不同的機器語言,功能受到限制,速度也慢。另一個明顯特徵是使用真空電子管和磁鼓儲存數據 。

第二代晶體管計算機 (1957-1964)

1948年,晶體管發明代替了體積龐大電子管,電子設備的體積不斷減小。1956年,晶體管在計算機中使用,晶體管和磁芯存儲器導致了第二代計算機的產生。第二代計算機體積小、速度快、功耗低、性能更穩定。1960年,出現了一些成功地用在商業領域、大學和政府部門的第二代計算機。

第二代計算機用晶體管代替電子管,還有現代計算機的一些部件:打印機、磁帶、磁盤、內存、操作系統等。計算機中存儲的程序使得計算機有很好的適應性,可以更有效地用於商業用途。在這一時期出現了更高級的COBOL和FORTRAN等語言,使計算機編程更容易。新的職業(程序員、分析員和計算機系統專家)和整個軟件產業由此誕生。 第三代集成電路計算機 (1964-1972)

1958年德州儀器的工程師Jack Kilby發明了集成電路(IC),將三種電子元件結合到一片小小的硅片上。更多的元件集成到單一的半導體芯片上,計算機變得更小,功耗更低,速度更快。這一時期的發展還包括使用了操作系統,使得計算機在中心程序的控制協調下可以同時運行許多不同的程序。

第四代大規模集成電路計算機 (1972-現在)

大規模集成電路 (LSI) 可以在一個芯片上容納幾百個元件。到了 80 年代,超大規模集成電路 (VLSI) 在芯片上容納了幾十萬個元件,後來的 (ULSI) 將數字擴充到百萬級。可以在硬幣大小的芯片上容納如此數量的元件使得計算機的體積和價格不斷下降,而功能和可靠性不斷增強。

70 年代中期,計算機製造商開始將計算機帶給普通消費者,這時的小型機帶有友好界面的軟件包,供非專業人員使用的程序和最受歡迎的字處理和電子表格程序。 1981 年, IBM 推出個人計算機 (PC) 用於家庭、辦公室和學校。 80 年代個人計算機的競爭使得價格不斷下跌,微機的擁有量不斷增加,計算機繼續縮小體積。與 IBM PC 競爭的 Apple Macintosh 系列於 1984 年推出, Macintosh 提供了友好的圖形界面,用戶可以用鼠標方便地操作。

紀事年表

1666年,在英國Samuel Morland發明了一部可以計算加數及減數的機械計數機。

1673年,Gottfried Leibniz 製造了一部踏式(stepped)圓柱形轉輪的計數機,叫「Stepped Reckoner」,這部計算器可以把重複的數字相乘,並自動地加入加數器里。

1694年,德國數學家,Gottfried Leibniz ,把巴斯卡的Pascalene 改良,製造了一部可以計算乘數的機器,它仍然是用齒輪及刻度盤操作。

1773年,Philipp-Matthaus 製造及賣出了少量精確至12位的計算機器。

1775年,The third Earl of Stanhope 發明了一部與Leibniz相似的乘法計算器。

1786年,J.H.Mueller 設計了一部差分機,可惜沒有撥款去製造。

1801年, Joseph-Marie Jacquard 的織布機是用連接按序的打孔卡控制編織的樣式。

1854年,George Boole 出版 「An Investigation of the Laws of Thought」,是講述符號及邏輯理由,它後來成為計算機設計的基本概念。

1858年,一條電報線第一次跨越大西洋,並且提供了幾日的服務。

1861年,一條跨越大陸的電報線把大西洋和太平洋沿岸連接起來。

1876年,Alexander Graham Bell 發明了電話並取得專利權。

1876至1878年,Baron Kelvin 製造了一部泛音分析機及潮汐預測機。

1882年,William S. Burroughs 辭去在銀行文員的工作,並專注於加數器的發明。

1889年,Herman Hollerith 的電動制表機在比賽中有出色的表現,並被用於 1890 中的人口調查。Herman Hollerith 採用了Jacquard 織布機的概念用來計算,他用咭貯存資料,然後注入機器內編譯結果。這機器使本來需要十年時間才能得到的人口調查結果,在短短六星期內做到。

1893年,第一部四功能計算器被發明。

1895年,Guglielmo Marconi 傳送廣播訊號。

1896年,Hollerith 成立制表機器公司(Tabulating Machine Company)。

1901年,打孔鍵出現,之後的半個世紀只有很少的改變。

1904年,John A.Fleming 取得真空二極管的專利權,為無線電通訊建立基礎。

1906年,Lee de Foredt 加了一個第三活門在Felming 的二極管, 創製了三電極真空管。

1907年,唱片音樂在紐約組成第一間正式的電台。

1908年,英國科學家 Campbell Swinton 述了電子掃描方法及預示用陰極射線管制造電視。

1911年,Hollerith 的表機公司與其它兩間公司合併,組成 Computer Tabulating Recording Company (C-T-R),制表及錄製公司。但在1924年,改名為International Business Machine Corporation (IBM)。

1911年,荷蘭物理學家 Kamerlingh Onnes 在 Leiden Unversity 發現超導電。

1931年,Vannever Bush 發明了一部可以解決差分程序的計數機,這機器可以解決一些令數學家,科學家頭痛的複雜差分程序。

1935年,IBM (International Business Machine Corporation) 引入 "IBM 601」,它是一部有算術部件及可在1秒鐘內計算乘數的穿孔咭機器。 它對科學及商業的計算起很大的作用。總共製造了1500 部。

1937年,Alan Turing 想出了一個「通用機器(Universal Machine)」 的概念,可以執行任何的算法,形成了一個"可計算(computability)」的基本概念。Turing 的概念比其它同類型的發明為好,因為他用了符號處理(symbol processing) 的概念。

1939年11月,John Vincent Atannsoff 與 John Berry 製造了一部16位加數器。它是第一部用真空管計算的機器。

1939年,Zuse 與 Schreyer 開鈶製造了"V2」[後來叫Z2],這機器沿用 Z1的機械貯存器,加上一個用斷電器邏輯(Relay Logic)的新算術部件。但當 Zuse完成草稿後,這計劃被中斷一年。

1939-40年,Schreyer 完成了用真空管的10位加數器,以及用氖氣燈(霓虹燈)的存貯器。

1940年1月,在 Bell Labs, Samuel Williams 及Stibitz 完成了一部可以計算複雜數字的機器,叫「複雜數字計數機(Complex Number Calculator)」,後來改稱為「斷電器計數機型號I (Model I Relay Calculator)」 。它用電話開關部份做邏輯部件:145個斷電器,10個橫槓開關。數字用「Plus 3BCD」代表。在同年9月,電傳打字 etype 安裝在一個數學會議里,由New Hampshire 連接去紐約。

1940年,Zuse 終於完成Z2,它比運作得更好,但不是太可靠。

1941年夏季,Atanasoff及Berry完成了一部專為解決聯立線性方程系統(system of simultaneous linear equations) 的計算器,後來叫做"ABC (Atanasoff-Berry Computer)」,它有60個50位的存貯器,以電容器(capacitories)的形式安裝在2個旋轉的鼓上,時鐘速度是60Hz。

1941年2月,Zuse 完成「V3」(後來叫Z3),是第一部操作中可編寫程序的計數機。它亦是用浮點操作,有7個位的指數,14位的尾數,以及一個正負號。存貯器可以貯存64 個字,所以需要1400個斷電器。它有多於1200個的算術及控制部件,而程序編寫,輸入,輸出的與 Z1 相同。 1943年1月 Howard H. Aiken完成"ASCC Mark I」(自動按序控制計算器Mark I ,Automatic Sequence -- Controlled Calculator Mark I),亦稱「Haward Mark I」。這部機器有51尺長,重5頓,由750,000部份合併而成。它有72個累加器,每一個有自己的算術部件,及23位數的寄存器。

1943年12月, Tommy Flowers與他的隊伍,完成第一部「Colossus」,它有2400個真空管用作邏輯部件,5 個紙帶圈讀取器(reader),每個可以每秒工作5000字符。

1943年,由 John Brainered領導,ENIAC開始研究。而 John Mauchly 及J. Presper Eckert負責這計劃的執行。

1946年,第一台電子數字積分計算器(ENIAC)在美國建造完成。

1947年,美國計算器協會(ACM)成立。

1947年,英國完成了第一個存儲真空管O 1948貝爾電話公司研製成半導體。

1949年,英國建造完成「延遲存儲電子自動計算器」(EDSAC)

1950年,「自動化」一詞第一次用於汽車工業。

1951年,美國麻省理工學院製成磁心

1952年,第一台"儲存程序計算器"誕生。

1952年,第一台大型計算機系統IBM701宣布建造完成。

1952年,第一台符號語言翻譯機發明成功。

1954年,第一台半導體計算機由貝爾電話公司研製成功。

1954年,第一台通用數據處理機IBM650誕生。

1955年,第一台利用磁心的大型計算機IBM705建造完成。

1956年,IBM公司推出科學704計算機。

1957年,程序設計語言FORTRAN問世。

1959年,第一台小型科學計算器IBM620研製成功。

1960年,數據處理系統IBM1401研製成功。

1961年,程序設計語言COBOL問世。

1961年,第一台分系統計算機由麻省理工學院設計完成。

1963年,BASIC語言問世。

1964年,第三代計算機IBM360系列製成。

1965年,美國數字設備公司推出第一台小型機PDP-8。

1969年,IBM公司研製成功90列卡片機和系統--3計算機系統。

1970年,IBM系統1370計算機系列製成。

1971年,伊利諾大學設計完成伊利阿克IV巨型計算機。

1971年,第一台微處理機4004由英特爾公司研製成功。

1972年,微處理機基片開始大量生產銷售。

1973年,第一片軟磁盤由IBM公司研製成功。

1975年,ATARI--8800微電腦問世。

1977年,柯莫道爾公司宣稱全組合微電腦PET--2001研製成功。

1977年,TRS--80微電腦誕生。

1977年,蘋果--II型微電腦誕生。

1978年,超大規模集成電路開始應用。 1978年,磁泡存儲器第二次用於商用計算機。

1979年,夏普公司宣布製成第一台手提式微電腦。

1982年,微電腦開始普及,大量進入學校和家庭。

1984年,日本計算機產業着手研製"第五代計算機"---具有人工智能的計算機。

性能指標

1、機器字長,機器字長是指參與運算的數據的基本位數。它決定了寄存器、運算器和數據總線的位數,因而直接影響到硬件的價格。字長標誌着計算精度。為協調精度與造價,並滿足多方面的要求,許多計算機允許變字長計算,例如半字長、全字長和雙倍字長等。由於數和指令代碼都放在主存中,因而字長與指令碼長度往往有一個對應關係,字長也就影響到指令系統功能的強弱。計算機字長從 4 位、8 位、16 位、32 位到 64 位不等。機器字長可包含一個或多個字節。用於科學計算的機器,為了確保精度,需要較長的字長;用於數據處理、工業控制的機器,字長為 16 位或 32 位就能滿足要求。

2、運算速度 它是計算機的主要指標之一。計算機執行不同的運算和操作所需的時間可能不同,因而對運算速度存在不同的計算方法。一般常用平均速度,即在單位時間內平均能執行的指令條數來表示,如某計算機運算速度為 100 萬次 /秒,就是指該機在一秒鐘內能平均執行 100萬條指令(即 1MIPS)。有時也採用加權平均法(即根據每種指令的執行時間以及該指令占全部操作的百分比進行計算)求得的等效速度表示。

功能分類

運算器的基本功能是完成對各種數據的加工處理,例如算術四則運算,與、或、求反等邏輯運算,算術和邏輯移位操作,比較數值,變更符號,計算主存地址等。運算器中的寄存器用於臨時保存參加運算的數據和運算的中間結果等。運算器中還要設置相應的部件,用來記錄一次運算結果的特徵情況,如是否溢出,結果的符號位,結果是否為零等。 計算機所採用的運算器類型很多,從不同的角度分析,就有不同的分類方法。從小數點的表示形式可分為定點運算器和浮點運算器。

定點運算器只能做定點數運算,特點是機器數所表示的範圍較小,但結構較簡單。浮點運算器功能較強,既能對浮點數,又能對定點數進行運算,其數的表示範圍很大,但結構相當複雜。從進位制方面分為二進制運算器和十進制運算器。一般計算機都採用二進制運算器,隨着計算機廣泛應用於商業和數據處理,越來越多的機器都擴充十進制運算的功能,使運算器既能完成二進制的運算,也能完成十進制運算。 計算機中運算器需要具有完成多種運算操作的功能,因而必須將各種算法綜合起來,設計一個完整的運算部件。 浮點運算器

1、浮點運算器的一般結構

浮點運算可用兩個鬆散連接的定點運算部件來實現:即階碼部件和尾數部件,浮點運算器的一般結構尾數部件實質上就是一個通用的定點運算器,要求該運算器能實現加、減、乘、除四種基本算術運算。其中三個單字長寄存器用來存放操作數:AC為累加器,MQ為乘商寄存器,DR為數據寄存器。

AC和MQ連起來還可組成左右移位的雙字長寄存器AC-MQ。並行加法器用來完成數據的加工處理,其輸入來自AC和DR,而結果回送到AC。MQ寄存器在乘法時存放乘數,而除法時存放商數,所以稱為乘商寄存器。DR用來存放被乘數或除數,而結果(乘積或商與餘數)則存放在AC-MQ。在四則運算中,使用這些寄存器的典型方法如下:

運算類別 寄存器關係加法 AC+DR→AC 減法 AC-DR→AC 乘法 DR×MQ→AC-MQ 除法 AC÷DR→AC-MQ

對階碼部件來說,只要能進行階碼相加、相減和比較操作即可。在圖2-21中,操作數的階碼部分放在寄存器E1和E2,它們與並行加法器相連以便計算。浮點加法和減法所需要的階碼比較是通過E1-E2來實現的,相減的結果放入計數器E中,然後按照E的符號為決定哪一個階碼較大。在尾數相加或相減之前,需要將一個尾數進行移位,這是由計數器E來控制的,目的是使E的值按順序減到0。E每減一次1,相應的尾數則向右移1位。一旦尾數高速完畢,它們就可按通常的定點方法進行處理。運算結果的階碼值仍放到計數器E中。

2、點協處理器,80x87是美國Intel公司為處理浮點數等數據的算術運算和多種函數計算而設計生產的專用算術運算處理器。由於它們的算術運算是配合80x86CPU進行的,所以又稱為協處理器。 現在我們以80x87為例來討論浮點運算器部件的組成。浮點協處理器的主要功能如下:(1) 可與配套的CPU芯片異步並行工作。

80x87相當於386的一個I/O部件,本身有它自己的指令,但不能單獨使用,它只能作為386主CPU的協處理器才能運算。因為真正的讀寫主存的工作不是80x87完成,而是由386執行的。如果386從主存讀取的指令是80x87浮點運算指令,則它們以輸出方式把該指令送到80x87,80x87接收後進行譯碼並執行浮點運算。

在80x87進行運算期間,386可取下一條其他指令予以執行,因而實現了並行工作。如果在80x87執行浮點運算指令過程中386又取來一條80x87指令,則80x87以給出「忙」的標誌信號加以拒絕,使386暫停向80x87發送命令。只有待80x87完成浮點運算而取消「忙」的標誌信號以後,386才可以進行一次發送操作。(2) 高性能的80位字長的內部結構,有8個80位字長的以堆棧方式管理的寄存器組。80x87從存儲器取數和向存儲器寫數時,均用80位的臨時實數和其他6種數據類型執行自動轉換。

全部數據在80x87中均以80位臨時實數的形式表示。因此80x87具有80位的內部結構,並有八個80位字長以 「先進後出」方式管理的寄存器組,又稱寄存器堆棧。這些寄存器可以按堆棧方式工作,此時,棧頂被用作累加器;也可以按寄存器的編號直接訪問任一個寄存器。(3) 浮點數的格式,完全符合IEEE制定的國際標準。(4) 能處理包括二進制浮點數、二進制整數和十進制數串三大類共7種數據。此7種數據類型在寄存器中表示如下:短整數(32位整數) S 31位 (二進制補碼) 長整數(64位整數) S 63位 (二進制補碼) 短實數(32位浮點數)

S 指數 尾數(23位) 長實數(64位浮點數) S 指數 尾數(52位) 臨時實數(80位浮點數) S 指數 尾數(64位) 十進數串(十進制18位) S -- d17d16…d1d0 。此處S為一位符號位,0代表正,1代表負。三種浮點數階碼的基值均為2。階碼值用移碼表示,尾數用原碼表示。尾數有32位、64位、80位三種。

不僅僅是一個浮點運算器,還包括了執行數據運算所需要的全部控制線路,就運算部分講,有處理浮點數指數部分的部件和處理尾數部分的部件,還有加速移位操作的移位器線路,它們通過指數總線和小數總線與八個80位字長的寄存器堆棧相連接。

(5) 內部的出錯管理功能為了保證操作的正確執行,80x87內部還設置了三個各為16位字長的寄存器,即特徵寄存器、控制字寄存器和狀態寄存器。特徵寄存器用每兩位表示寄存器堆棧中每個寄存器的狀態,即特徵值為00-11四種組合時表明相應的寄存器有正確數據、數據為0、數據非法、無數據四種情況。

控制字寄存器用於控制80x87的內部操作。其中PC為精度控制位域(2位):00為24位,01為備用,10為53位,11為64位。RC為捨入控制位域(2位):00為就近捨入,01朝-方向捨入,10朝+方向捨入,11朝0捨入。IC為無窮大控制位:該位為0時+與-作同值處理,該位為1時+與-不作同值處理。控制寄存器的低6位作異常中斷屏蔽位:

IM為非法處理,DM為非法操作數,ZM為0作除數,OM為上溢,UM為下溢,PM為精度下降。狀態字寄存器用於表示80x87的結果處理情況,例如當「忙」標誌為1時,表示正在執行一條浮點運算指令,為0則表示80x87空閒。狀態寄存器的低6位指出異常錯誤的6種類型,與控制寄存器低6位相。當的控制寄存器位為0(未屏蔽)而狀態寄存器位為1時,因發生某種異常錯誤而產生中斷請求。

3.CPU內的浮點運算器,奔騰CPU將浮點運算器包含在芯片內。浮點運算部件採用流水線設計。指令執行過程分為8段流水線。前4段為指令預取(DF)、指令譯碼(D1)、地址生成(D2)、取操作數(EX),在U,V流水線中完成;後4段為執行1(X1)、執行2(X2)、結果寫回寄存器堆(WF)、錯誤報告(ER),在浮點運算器中完成。一般情況下,由V流水線完成一條浮點操作指令。

浮點部件內有浮點專用的加法器、乘法器和除法器,有8個80位寄存器組成的寄存器堆,內部的數據總線為80位寬。因此浮點部件可支持IEEE754標準的單精度和雙精度格式的浮點數。另外還使用一種稱為臨時實數的80位浮點數。對於浮點的取數、加法、乘法等操作,採用了新的算法並用硬件來實現,其執行速度是80486的10倍多。

參考來源