CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

计算机核心设计中心必然转向中国

已有 3812 次阅读 2010-6-23 11:19 |个人分类:计算机核|系统分类:科研笔记| 计算机核, 精确计算, IEEE754

姜咏江
 
自从冯.诺依曼计算机设计思想提出之后,计算机就以突飞猛进的速度发展着。从科研、军事到民用,计算机无所不在。然而就是这“计算、计算”的呐喊声音的背后,核心计算的理论和方法却存在着巨大的遗憾,“拼凑式”的计算设计方法替代着严格的数值计算理论和方法,其所带来的“恶果”或许至今那些西方的计算机设计专家还一无所知呢。
 
从数学的角度来看,数值计算最不能容忍的是“二义性”。可在西方传过来的机器数值计算方法中,恰恰存在着这种二义性。他们提出了所谓“±0”的概念,例如,在8位二进制的加减法运算中出现10000000,他们就认为这是一个-0,实际上这个8位二进制数唯一表示的是-128。这种规定不仅数学家不能容忍,更糟糕的是会在精确计算中产生“莫名其妙”的错误,这种错误会造成复杂系统“莫名其妙”的瘫痪,也许会让发射的火箭在毫无错误编程的情况下发生爆炸。
 
按着这种糟糕的认识,那么应该有:
 
10000000 = 1000000000000000 = 10000000000000000000000000000000 = …
 
它们都是“-0”,理所当然上面的等式是成立的。可见这种错误是多么的严重!实际,上面3个二进制数的值应是-128,-32768,-2147483648,如何能认为它们是相等的?
 
这种设计的拼凑方法影响了计算机精确计算的发展,体现在IEEE 754所谓的浮点数标准上更是问题多多。看其规定:
 
“ 如果 指数 是0 并且 小数部分 是0,这个数是±0(和符号位相关);”
 
“如果 指数 = 2e − 1 并且 小数部分是0,这个数是 ±无穷大(同样和符号位相关);”
 
“如果 指数 = 2e − 1 并且 小数部分非0,这个数表示为不是一个数(NaN)。”
 
其中e是二进制数的位数。
 
对于IEEE规定的8位阶码的32位浮点数01111111100000000000000000000001就不是一个数了。岂不荒唐!诚然,按照 IEEE 754 单精度浮点数可以在
 
-0.8388607×2127~+0.8388607 ×2127
 
范围内运算,但这种规定会造成数值域的不完备,使其无法进行等值扩充,即使引入双精度浮点数的规范,仍然存在着这个问题。
 
中国当代不乏有世界著名的数学家,计算机界不乏有精明的头脑,在计算机精确计算领域,只要我们不盲从西方的所有理论和技术,深入研究,借助当代计算机面临重大改革时机,敢于挑战,世界计算机核心设计的中心一定会快速地转移到中国来。
 
我说的是“计算机核心设计中心”,而不是“计算机制造中心”。
 
2010-6-23
 


https://blog.sciencenet.cn/blog-340399-338015.html

上一篇:中国的计算机科学界不要那么软
下一篇:机器如何表示正负数和进行运算
收藏 IP: .*| 热度|

0

发表评论 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-18 01:40

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部