文以载道分享 http://blog.sciencenet.cn/u/biotrader 邮箱:zyubin AT gmail DOT com

博文

沙的智慧—从硅到人工智能

已有 6166 次阅读 2008-11-16 23:17 |个人分类:未分类|系统分类:科普集锦| 人工智能, 集成电路, 加法器, 编译原理, 数据结构


这是我给生物专业的博士们介绍IT业基本概念的一个PPT。IT业是一个热闹的行业,基本上每个月都有新技术,新名词出现,什么是这个行业这个学科的大根、大本?只有从历史出发,“重走长征路”理清那些最原始最朴素的思想才能有所发展创新吧,从其他行业进入这个行业(或者要完成学科的集成融合)也才能不是只看热闹吧。



硅的提纯制造工艺,我们国家还没有掌握,有了CPU的设计版图还要到台湾去流片。其实我们在装备制造业链条中我们很多东西不能生产,这大大的阻碍了科技研发。怀念六七十年代,人人几乎都可以买到一些电阻、电容等等自己去组装收音机,收音机可是当时的高科技产品呀。实际上两弹一星和神七的很多技术基础也是那时候搞出来的。



场效应管象一个水阀门一样,把电子从两个绿色的方块中间推开,电路断;把电子从底部吸引到两个绿色中间搭桥则电路通。这个水阀门简称门电路,P(postive)表示正,N(negative)表示负,M—金属 O—氧化物 S—半导体 图中红蓝白三个东西。
单用NMOS或单用PMOS也能完成数字逻辑,但是静态功耗不是0,就是说不用也耗电。在大规模集成电路情况下,这点尤其不能容忍。曙光集群一天的电费可是以万元计的。所以用NMOS和PMOS组成CMOS,C是互补的意思P永远接正极,N接地,静态功耗为0.

数字逻辑,布尔代数的运算可以在二进制下实现很多组合。

 



1930年左右数学家图灵提出了串行状态的计算和存储的模型(是一个数学的可计算性问题),计算机的方向有了,物理就剩下解决集成电路如何运算,如何存储的问题了。加法是最基本的,再复杂的运算也可以归结到加法,实变函数是y轴上的积分,还可以归到加法。其他很多可以用级数、连分数逼近的值计算机就更拿手了。ENAIC是世界上第一台计算机,但是还要有人推最后一把,因为运算和存储解决了,但程序指令还是外部人工用纸带输入的,这个速度太慢了,不解决的话计算机就会夭折。这时冯诺依曼加入了ENAIC团队,他把指令当作数据一样存储起来,读指令——执行——读指令。。。。。自动完成。计算机终于实用化了。当然这个存储程序的思想不是冯诺依曼首先提出的,在图灵之前就有,图灵本人也提过。

我们知道电是不好存贮的,用自反馈实现存储真是一个天才的想法!

其实最需要加和跳转就好了。CPU设计在体系结构方面为了更快的速度又衍生出很多奇思妙想,比如多级流水、乱序发射、动态调度、转移猜测等。它最大程度利用有效运算能力,保证指令进去时和最后出来时有序就行了,中间执行序允许在不影响结果的情况下打乱,当然有时打乱是错误的,但它有机制回退到原处。通用CPU有一个评定的标准SPEC是一套程序,有编译器,图形处理,浮点运算看运行效果来给CPU打分。所以通用CPU设计要权衡的因素很多,有时CPU中cache占的面积和运算单元的面积不相上下。这就如同排兵布阵一样,“运用之妙,存乎一心”。

FPGA的设计需要了解verilog,SystemC等。注意Verilog是描述语言和我们一般的C语言不同,不要在里面for,他是并行的就是一下全部执行,而C语言是串行的。这些描述和硬件的排布关系很大。不过随着SystemC等发展软件工程师和硬件工程师之间的鸿沟正在磨平。要学的话最好有相关设备,学电脑都知道要买电脑,这个学硬件,光有书效果不好。






验证和设计是一体的两面,因为芯片验证不到位,欧洲掉过火箭,Intel赔过几十亿美元。

 


层层的封装往往使人忘了来时路,社会大分工下的人们只能看到细枝末节吗?歧路亡羊尤可叹。BTW,现在有了VMware server可以用GDB远程调试linux内核,学习操作系统就方便多了。

编译器转化的汇编人看不懂了吧,但是注意有很多add,mov吧,其实还是归结到前面的加法器。

 

理解人的语言?那是机器吗?那是人!人工智能的永恒悖论。

但是在简化的计算机语言中我们还是可以实现的,如上下文无关文法。

1.小明放学回家了,他已经不在了。

2.小明去世10年了,他已经不在了。

后半句“他已经不在了”意思不同,因为和上半句有关,机器语言不允许这种情况,叫上下文无关文法,而上下文有关文法中“他已经不在了”这段可以是一段话,也可以是空集。当选空集时,就是上下文无关文法了。

而编译原理教材上来就告诉你乔姆斯基2型(无关)文法属于乔姆斯基1(有关)型文法,也不介绍乔老原始和朴素的思想过程,你很容易糊涂,我无拘无束的(无关),还属于你有限制多多的了(有关)?











编译器是用了一个超复杂的数据结构,而操作系统是用了一大批较简单(也有复杂的)的数据结构,总之都是数据结构了。数据结构和算法是一体的两面,树、图等复杂的结构配合复杂的算法。但是也有实现有两个路线,现在主流的语言基本是队列、树、图、分别定义使用。但是相Lisp这样的语言只有一个广义表,List因为这个列表本身内部的元素可以又是列表,有嵌套,所以它一种就可以实现树、图等所有的结构了。

开个玩笑,聪明人学不好数据结构。因为聪明人他总是用人的思维,还是人的思维中难度最大的,哪里能容忍你电脑把好好的并行的东西,硬拗到串行硬件上,然后再通过栈等的延迟来回到假并行。艺术家学数据结构能把他委屈死。



这里挂一漏万地提到了计算机学科的各个领域,整篇语言粗陋而且学术上也很不严谨,但是目的在于帮助初学者在心中建立一个计算技术大厦的整个体系——从沙到人工智能。我们希望教材要有体系,语言要严谨,但绝不能空洞乏味,更不能割裂知识与其原创者直觉之间的联系。


 

 

 

邮箱  zyubin    AT  gmail  DOT   com



https://wap.sciencenet.cn/blog-200153-205560.html

上一篇:国父孙总理谈房地产问题
下一篇:科学家最应该懂金融
收藏 IP: 119.40.39.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

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

GMT+8, 2024-4-27 00:56

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部