當前位置:編程學習大全網 - 源碼下載 - 運算器的基本理論

運算器的基本理論

運算器的處理對象是數據,所以數據長度和計算機數據表示方法,對運算器的性能影響極大。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、通用寄存器組設計的機器的運算器都有壹組通用寄存器。它主要用來保存參加運算的操作數和運算的結果。早期的機器只設計壹個寄存器,用來存放操作數、操作結果和執行移位操作

,由於可用於存放重復累加的數據,所以常稱為累加器。通用寄存器均可以作為累加器使用。通用寄存器的數據存取速度是非常快的,壹般是十幾個毫微秒(μs)。如果 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 )。

  • 上一篇:為了優秀就業和深度學習學什麽?
  • 下一篇:這段php代碼是什麽意思?
  • copyright 2024編程學習大全網