APP下载

计算思维下再谈原码设计思想

2015-12-21孙丽

电脑知识与技术 2015年27期
关键词:计算机组成原理计算机教育计算思维

孙丽

摘要:该文按照计算思维过程对原码设计思想进行了阐述,论述了原码为何在计算机组成原理课程中出现,原码能解决哪些运算问题,分别从原码加减法、原码乘除法对原码运算特性进行了讨论。最后总结了原码设计的计算思维过程。

关键词:计算思维;原码;运算器;计算机组成原理;计算机教育

中图分类号:TP311 文献标识码: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

在《基于计算思维的计算机组成原理课程研究与教学》项目进行中,要围绕计算思维培养的思路选择适用的计算思维教学案例,在运算器设计这一章,我们选取原码作为计算思维教学案例之一。

计算思维是我们在遇到问题时,考虑用计算工具在问题可解的情况下,思考如何运用计算语言描述解决问题的过程。这个思考过程的结果是可在计算工具运行并由计算语言表述的有先后顺序的序列。

计算机组成原理课程全书讲述的核心问题是计算机是怎么设计的,第二章为了解决运算器设计问题,出现了原码。真值转换为机器数表示是运算器设计的第一步,真值转换为机器数不是编码完成即可,而是为用转换后的机器数编码在运算器完成各类运算且能简化运算器设计,真值的定义为带“+”“-”符号的数,机器数的定义是符号数字化的数(特别指二进制数据),那么真值转换为机器数表示,只要把符号数字化、其余位不变化就能最简单地完成机器数编码,我们把这种编码就叫原码,所以在机器数编码设计中原码的优势的是非常明显的,原码应该是最重要的一种编码,那原码把握住这个机会了吗?如果原码能满足运算要求,可能别的编码就不会再有机会出现。

下面,以最简单的核心运算:加减乘除为例,讨论一下原码运算性能。(注:本文数据如未作特殊说明,皆为二进制数据)。

1 原码加减法

加法运算是一个重要的基本运算器设计单元,后继很多运算器设计都与其有关。

原码加减法运算可参考的原型只有使用几千年的加减法竖式,但这种加法的特点是符号和数值分开计算,不能符号和数值一起参加运算。

要想进行加法要先讨论参加运算的两个数值的符号,如果符号相同做加法,如果异号做减法,那就要完成加法器设计必先完成减法器设计。

再看减法,要想进行减法要先讨论参加运算的两个数值的符号,如果符号相同做减法,如果异号做加法,那就要完成减法器设计必先完成加法器设计。

综上分析,加法器和减法器的设计,二者出现了互为条件的死锁,原码加减法运算器设计思路到此止步。

2 原码乘除法

原码乘除法的设计原型是:笔—纸乘除法方法,然后加法器器件为基础,增加一些硬件从而实现乘除法运算器设计。因此原码进行乘除法运算要相对简便些,这是因为乘积的符号可以根据被乘数与乘数的符号来确定,其规则是:两数相同,乘积符号为正;两数异号,乘积符号为负,除法类同。因此,原码乘除法实际上是两个无符号数相乘,乘积结果再加上符号位。原码乘除法的设计思路可行,此处我们只以原码乘法为例说明之,因篇幅原因除法略。

2.1原码乘法原型

在笔—纸乘法方法中,乘积由部分积相加得到。部分积的个数由乘数B的位数决定,当乘积B的个位数值是1时,部分积为被乘数左移后的值,当乘积B的个位数值是0时,部分积为0。

以上是人工乘法过程,为了便于计算机实现,部分积相加得出乘积的过程可以改为:每得出一个部分积就进行一次加法,并将被乘数左移改为部分积右移,这样只要用和被乘数、乘数位数一样的n位加法器就能完成2n位加法运算了。

2.2原码一位乘法

由于原码乘法被转化为一系列的加法和右移操作,n位相乘需要n次加法周期,原码一位乘法具体操作是:每次通过乘数B的末位值来判断是否需要加法,当乘积B的末位数值是1时,执行加被乘数的操作,当乘积B的末位数值是0时,不执行加被乘数的操作;然后部分积直接右移一位(高位用进位位填充),移出的一位放入乘数B中的最高位,同时B也右移一位,把乘数移出(判断过的)一位,即刚刚比较过的B的末位移出丢弃,然后对新的B的末位进行判断,重复以上过程直到处理完乘数B的所有位。

原码一位乘法中,每次判断加或不加之后,部分积都要进行右移操作。为了存放部分积,部分积寄存器P初值得为0,结果值即乘积高n位存放在部分积寄存器中,低n位存放在乘数寄存器B中。

2.3原码二位乘法

2.3.1原码二位乘法思想

为了提高乘法的运算速度,可以采用二位同时乘或多位同时乘的方法,二位乘法就是每次处理同时考虑乘数二位,根据它们的不同组合(00、01、10、11)一步求出两位的部分积,只需增加少量的逻辑线路,就可以将乘法的速度提高一倍,从而提高乘法的速度。

2.3.2对于原码两位乘位算法的几个思考

1)部分积与被乘数采用三个符号位,这样表示的原因是:当加法处理+X或-X操作时,可能会影响到中间结果符号位的最低一位,这样最低一位符号位就不能代表结果真正的符号位,当加法处理+2X操作时,可能会影响到中间结果符号位的中间一位,这样中间一位符号位就不能代表结果真正的符号位,而无论做怎样的操作都不能影响到中间结果符号位的最高位,所以中间结果符号位的最高位能正确标识结果的符号位,我们在每次处理二位后都要进行移位操作,当同步右移二位时,符号位移出的空位是用中间结果符号位填充的,当部分积与被乘数采用三个符号位时,就能保证每次移位操作的简单与正确。

2)在实际运算中–X操作以+[–X]补完成,这是因为此时运算为乘数与被乘数的数值部分的运算,而正数的原码与补码相同,所以可以看成是两个正数原码的运算,也可以看成是两个正数补码的运算,结果依然为正数,所以可以把运算中–X操作以+[–X]补完成;

3)原码二位乘法算法中数值位N的奇偶问题的讨论

有关奇偶问题的处理,不同书中方法不一,这个奇偶处理算法在设计运算器时还是有点复杂的,也是教学过程中同学容易出错的地方。个人觉得如果奇偶处理放在运算进行之前,会简化运算器设计的,就是当发现数值位N为奇数时,我们在不影响数据实际值的情况下直接增加一位变成偶数位参加运算就可以了,最后只进行T是否是1的判断和处理就结束了。

3 结论

原码在运算器设计中,最基本的加法运算器设计不能实现,原码乘除法运算器的设计以加法器器件为基础,原码乘除法运算器性能尚可。原码加减运算器留下的设计空白是必须填补的,这给了设计新的机器数编码的机会,这也是原码进行运算器设计的缺陷。最后总结原码设计的计算思维过程见图一。

参考文献:

[1] 陈国良.计算思维导论[M].北京:高等教育出版社,2012.

[2] 袁春风.计算机组成与系统结构[M].北京:清华大学出版社,2010.

[3] 任国林 计算机组成原理[M].北京:电子工业出版社,2010.

猜你喜欢

计算机组成原理计算机教育计算思维
《计算机组成原理》综合教学辅助平台的设计与实现
以就业为导向的中职计算机教育教学实践研究
公安院校计算机课堂教学改革研究初探
构建具有专业美术院校特色的计算机课程教育
程序设计课程中计算思维和应用能力培养问题研究
面向计算机系统能力培养的计算机组成原理实验教学
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
关于我国计算机教育MOOC发展的思考
浅谈艺术专业学生计算思维能力的培养