孫麗
摘要:該文按照計算思維過程對原碼設(shè)計思想進行了闡述,論述了原碼為何在計算機組成原理課程中出現(xiàn),原碼能解決哪些運算問題,分別從原碼加減法、原碼乘除法對原碼運算特性進行了討論。最后總結(jié)了原碼設(shè)計的計算思維過程。
關(guān)鍵詞:計算思維;原碼;運算器;計算機組成原理;計算機教育
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)28-0077-02
Again Discuss Design idea of the original code on the Computational Thinking
SUN Li
(Chenxian College of Southeast University, Nanjing 210088, China)
Abstract: In accordance with the Computational Thinking process,Design idea of the original code is discussed.Why appear the original code in the computer component principle.The original code can solve what arithmetic problems. Operational characteristics of the original code is related and analyzed from the aspects of addition, subtraction, multiplication and division.The final,Summary the of design idea of the original code.on the Computational Thinking process.
Key words: computational thinking; The original code; ALU; computer component principle; computer education
在《基于計算思維的計算機組成原理課程研究與教學(xué)》項目進行中,要圍繞計算思維培養(yǎng)的思路選擇適用的計算思維教學(xué)案例,在運算器設(shè)計這一章,我們選取原碼作為計算思維教學(xué)案例之一。
計算思維是我們在遇到問題時,考慮用計算工具在問題可解的情況下,思考如何運用計算語言描述解決問題的過程。這個思考過程的結(jié)果是可在計算工具運行并由計算語言表述的有先后順序的序列。
計算機組成原理課程全書講述的核心問題是計算機是怎么設(shè)計的,第二章為了解決運算器設(shè)計問題,出現(xiàn)了原碼。真值轉(zhuǎn)換為機器數(shù)表示是運算器設(shè)計的第一步,真值轉(zhuǎn)換為機器數(shù)不是編碼完成即可,而是為用轉(zhuǎn)換后的機器數(shù)編碼在運算器完成各類運算且能簡化運算器設(shè)計,真值的定義為帶“+”“-”符號的數(shù),機器數(shù)的定義是符號數(shù)字化的數(shù)(特別指二進制數(shù)據(jù)),那么真值轉(zhuǎn)換為機器數(shù)表示,只要把符號數(shù)字化、其余位不變化就能最簡單地完成機器數(shù)編碼,我們把這種編碼就叫原碼,所以在機器數(shù)編碼設(shè)計中原碼的優(yōu)勢的是非常明顯的,原碼應(yīng)該是最重要的一種編碼,那原碼把握住這個機會了嗎?如果原碼能滿足運算要求,可能別的編碼就不會再有機會出現(xiàn)。
下面,以最簡單的核心運算:加減乘除為例,討論一下原碼運算性能。(注:本文數(shù)據(jù)如未作特殊說明,皆為二進制數(shù)據(jù))。
1 原碼加減法
加法運算是一個重要的基本運算器設(shè)計單元,后繼很多運算器設(shè)計都與其有關(guān)。
原碼加減法運算可參考的原型只有使用幾千年的加減法豎式,但這種加法的特點是符號和數(shù)值分開計算,不能符號和數(shù)值一起參加運算。
要想進行加法要先討論參加運算的兩個數(shù)值的符號,如果符號相同做加法,如果異號做減法,那就要完成加法器設(shè)計必先完成減法器設(shè)計。
再看減法,要想進行減法要先討論參加運算的兩個數(shù)值的符號,如果符號相同做減法,如果異號做加法,那就要完成減法器設(shè)計必先完成加法器設(shè)計。
綜上分析,加法器和減法器的設(shè)計,二者出現(xiàn)了互為條件的死鎖,原碼加減法運算器設(shè)計思路到此止步。
2 原碼乘除法
原碼乘除法的設(shè)計原型是:筆—紙乘除法方法,然后加法器器件為基礎(chǔ),增加一些硬件從而實現(xiàn)乘除法運算器設(shè)計。因此原碼進行乘除法運算要相對簡便些,這是因為乘積的符號可以根據(jù)被乘數(shù)與乘數(shù)的符號來確定,其規(guī)則是:兩數(shù)相同,乘積符號為正;兩數(shù)異號,乘積符號為負(fù),除法類同。因此,原碼乘除法實際上是兩個無符號數(shù)相乘,乘積結(jié)果再加上符號位。原碼乘除法的設(shè)計思路可行,此處我們只以原碼乘法為例說明之,因篇幅原因除法略。
2.1原碼乘法原型
在筆—紙乘法方法中,乘積由部分積相加得到。部分積的個數(shù)由乘數(shù)B的位數(shù)決定,當(dāng)乘積B的個位數(shù)值是1時,部分積為被乘數(shù)左移后的值,當(dāng)乘積B的個位數(shù)值是0時,部分積為0。
以上是人工乘法過程,為了便于計算機實現(xiàn),部分積相加得出乘積的過程可以改為:每得出一個部分積就進行一次加法,并將被乘數(shù)左移改為部分積右移,這樣只要用和被乘數(shù)、乘數(shù)位數(shù)一樣的n位加法器就能完成2n位加法運算了。
2.2原碼一位乘法
由于原碼乘法被轉(zhuǎn)化為一系列的加法和右移操作,n位相乘需要n次加法周期,原碼一位乘法具體操作是:每次通過乘數(shù)B的末位值來判斷是否需要加法,當(dāng)乘積B的末位數(shù)值是1時,執(zhí)行加被乘數(shù)的操作,當(dāng)乘積B的末位數(shù)值是0時,不執(zhí)行加被乘數(shù)的操作;然后部分積直接右移一位(高位用進位位填充),移出的一位放入乘數(shù)B中的最高位,同時B也右移一位,把乘數(shù)移出(判斷過的)一位,即剛剛比較過的B的末位移出丟棄,然后對新的B的末位進行判斷,重復(fù)以上過程直到處理完乘數(shù)B的所有位。
原碼一位乘法中,每次判斷加或不加之后,部分積都要進行右移操作。為了存放部分積,部分積寄存器P初值得為0,結(jié)果值即乘積高n位存放在部分積寄存器中,低n位存放在乘數(shù)寄存器B中。
2.3原碼二位乘法
2.3.1原碼二位乘法思想
為了提高乘法的運算速度,可以采用二位同時乘或多位同時乘的方法,二位乘法就是每次處理同時考慮乘數(shù)二位,根據(jù)它們的不同組合(00、01、10、11)一步求出兩位的部分積,只需增加少量的邏輯線路,就可以將乘法的速度提高一倍,從而提高乘法的速度。
2.3.2對于原碼兩位乘位算法的幾個思考
1)部分積與被乘數(shù)采用三個符號位,這樣表示的原因是:當(dāng)加法處理+X或-X操作時,可能會影響到中間結(jié)果符號位的最低一位,這樣最低一位符號位就不能代表結(jié)果真正的符號位,當(dāng)加法處理+2X操作時,可能會影響到中間結(jié)果符號位的中間一位,這樣中間一位符號位就不能代表結(jié)果真正的符號位,而無論做怎樣的操作都不能影響到中間結(jié)果符號位的最高位,所以中間結(jié)果符號位的最高位能正確標(biāo)識結(jié)果的符號位,我們在每次處理二位后都要進行移位操作,當(dāng)同步右移二位時,符號位移出的空位是用中間結(jié)果符號位填充的,當(dāng)部分積與被乘數(shù)采用三個符號位時,就能保證每次移位操作的簡單與正確。
2)在實際運算中–X操作以+[–X]補完成,這是因為此時運算為乘數(shù)與被乘數(shù)的數(shù)值部分的運算,而正數(shù)的原碼與補碼相同,所以可以看成是兩個正數(shù)原碼的運算,也可以看成是兩個正數(shù)補碼的運算,結(jié)果依然為正數(shù),所以可以把運算中–X操作以+[–X]補完成;
3)原碼二位乘法算法中數(shù)值位N的奇偶問題的討論
有關(guān)奇偶問題的處理,不同書中方法不一,這個奇偶處理算法在設(shè)計運算器時還是有點復(fù)雜的,也是教學(xué)過程中同學(xué)容易出錯的地方。個人覺得如果奇偶處理放在運算進行之前,會簡化運算器設(shè)計的,就是當(dāng)發(fā)現(xiàn)數(shù)值位N為奇數(shù)時,我們在不影響數(shù)據(jù)實際值的情況下直接增加一位變成偶數(shù)位參加運算就可以了,最后只進行T是否是1的判斷和處理就結(jié)束了。
3 結(jié)論
原碼在運算器設(shè)計中,最基本的加法運算器設(shè)計不能實現(xiàn),原碼乘除法運算器的設(shè)計以加法器器件為基礎(chǔ),原碼乘除法運算器性能尚可。原碼加減運算器留下的設(shè)計空白是必須填補的,這給了設(shè)計新的機器數(shù)編碼的機會,這也是原碼進行運算器設(shè)計的缺陷。最后總結(jié)原碼設(shè)計的計算思維過程見圖一。
參考文獻(xiàn):
[1] 陳國良.計算思維導(dǎo)論[M].北京:高等教育出版社,2012.
[2] 袁春風(fēng).計算機組成與系統(tǒng)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2010.
[3] 任國林 計算機組成原理[M].北京:電子工業(yè)出版社,2010.