计算机基本原理 学习笔记(八)

本篇目录

接上)

十一、软件工程

1.面向对象编程

2.软件开发工具

十二、集成电路&摩尔定律

1.数字暴政

2.集成电路IC

3.印刷电路板

3.光刻技术

4.摩尔定律

5.技术瓶颈

总结


接上一篇 学习笔记(七)

十一、软件工程

为了写各种大型程序,程序员需要用到各种编程方法和工具,这些构成了“软件工程”学科。

1.面向对象编程

1.对象

大型程序一般有很多个函数,具有相关性的函数还可以继续向上抽象,打包成“对象”Object。比如汽车对象中可能包含了“启动引擎”这个函数,也包含了“熄火”这个函数。同时,汽车对象中还包含了“车身颜色”、“座椅数量”等变量。一个程序员负责写好对汽车对象的描述(代码),其它程序员就可以建立一个汽车对象,并且调用其中的功能,而不需要了解汽车对象内部的功能是如何实现的。对象中也可以包含对象,比如一个铅笔对象中可能包含有铅笔芯对象,而一个文具盒对象中可能包含有铅笔对象、钢笔对象等。将变量、函数打包抽象为对象,是按照事物的内在逻辑来进行的,而不是随意的。

2.面向对象

通过这样的将函数打包成对象的编程思想就是“面向对象编程”。程序员在调用对象中的某一个函数时,通常是通过“.”来由外而内层层写出对应的对象名、函数名等,直到找到最内层想要调用的那个函数或者变量。面向对象编程能够封装内部组件,隐藏复杂度。

面向对象编程,有利于将大型项目分成一个个小的单元,让不同程序员方便地协作完成一个大项目,每个人的代码都具有相对独立性。

3.程序编程接口API

有时一个程序员要调用其它程序员写好的对象中的函数,这时就需要“文档”来帮助理解这些代码的功能,以及定义好的“程序编程接口”,即API。API帮助不同程序员合作,不用管代码的具体实现细节,只需要知道这些功能怎么使用就可以了。

一个对象中,有些函数是提供给外部访问的,这些函数的权限就是Public,另外一些函数是只允许对象内部的函数进行调用的,这些函数的权限就是Private。这样做的目的是为了避免外部函数错误地使用内部函数而带来危险。

面向对象编程能够选择性地对外公开功能,做大型项目非常有用。常见的面向对象编程语言有C++、C#、Java、Python等。

2.软件开发工具

1.集成开发环境IDE

程序员可以在记事本或者其它文字编辑器中写代码,但是专业的软件可以提供更多功能,比如代码高亮(提高可读性)、拼写检查、编译工具、源代码管理等。因为这样的软件集成了开发所需要的一切,因此叫集成开发环境,即IDE。

2.调试

程序员会将大部分时间花在代码调试而不是写代码上。IDE可以提供代码调试功能,帮助程序员定位到出错的代码,并提供信息来帮助修改。

3.文档和注释

程序员的另一项重要工作是给代码写文档以及注释。文档一般放在一个“README”文件里,里边说明了这些程序的功能以及使用方法。也可以代码中写注释,使用注释标记就可以在编译的时候让编译器绕过这些注释文本。注释很重要,能帮助程序员自己理清思路、几个月后回来还能理解自己的代码,以及帮助其它程序员理解这些代码(而不是让其它程序员通读代码来理解功能)。

4.版本控制

如果是团队合作的大型项目,那么还需要一个负责“源代码管理”的软件,也叫“版本控制”。大型软件公司会将所有代码放到一个中心服务器上,即“代码仓库”。程序员可以从这个服务器上下载(check out)一段代码,然后修改、增加新功能、测试等,等到测试无误后再“提交”,更新代码仓库中的代码。

当这段代码被check out 并且重新提交了,这说明这段代码可能被改过了,那么其它程序员就不会再来改动这段代码,这避免了重复劳动。如果一些新改动的代码中出现了bug,导致整个软件出现了不稳定性,源代码管理软件可以跟踪所有变化(谁改了什么代码),并且能够使全部或者部分代码回滚到之前的某一个稳定版本。

5.质量控制

写好的代码需要测试,代码的测试可以统称为“质量保证测试”,即QA。通过测试模拟各种情景,尽可能找出所有存在的bug,以保证软件的稳定性。

6.Beta、Alpha版本

beta版本是指软件接近完成,公司有时会向公众发布beta版本,以便让公众帮助公司发现潜在的问题。Alpha版本,一般只是具有雏形,还有许多问题,经常只在公司内部测试。


十二、集成电路&摩尔定律

软件与硬件的发展是相辅相成的。

1.数字暴政

1949-1960年代,计算机都由独立部件(即“分立元件”)组成,然后再用线连接在一起。如果想要更好的性能,就要增加更多的部件,使用更多的线路,计算机变得更复杂,这个问题叫“数字暴政”。

1950年代中期,晶体管开始商业化,用在计算机里。晶体管比电子管更小更快更可靠,但依然是分立元件。晶体管标志着“计算2.0时代”的到来。但是它仍然没有解决数字暴政的问题,越来越复杂的计算机难以设计、难以生产。解决的方法就是,提升新一层抽象,隐藏复杂度。

2.集成电路IC

1958年Jack Killby 演示了一个电子部件,将电路的所有组件都集成在一起,简单说就是将多个组件打包在一起,变成一个新的独立组件。这就是集成电路(IC)。Killby使用锗元素来做集成电路,但是地球中锗元素稀少且不稳定。1959年 Robert Noyce 的仙童半导体使用硅元素来做半导体(硅元素是地壳中含量第二高的元素,且稳定可靠),这让集成电路成为现实。因此,Noyce被公认为现代集成电路之父,开创了电子时代,创造了硅谷(仙童公司所在地,之后许多半导体企业都出现在硅谷)。

3.印刷电路板

起初,一个IC(集成电路)只有几个晶体管,其中集成了一些更小的部件。但这样做仍然需要将这些小的IC连接组装成为计算机。后来工程师们发明了印刷电路板PCB,它通过蚀刻金属线的方式,将零件连接到一起。因此PCB可以大规模生产,无需焊接或者使用一大堆线路。通过PCB与IC的组合使用,工程师们可以大幅减少独立组件和电线,制造更小、更便宜、更可靠的计算机。

3.光刻技术

初级的IC只能集成很少的几个晶体管,为了实现更加复杂的设计,工程师们发展出了光刻技术。

光刻技术简单来说就是用光将复杂图案印到半导体材料上,它通过重复执行几个基础的步骤,来制造出复杂的电路。

① 初始,准备一片硅(像一片硅饼),这叫“晶圆”。硅是半导体,适合制作晶体管,因此可以将复杂的电路都集成到一片晶圆上。

② 在硅片顶部加一层氧化层。

③ 在氧化层顶部加一层光刻胶,这种化学物质在被光照射后会变得可溶。溶解之后的光刻胶可以被特定的化学试剂洗掉。光刻胶一般与光掩模配合使用。

④ 在光刻胶层顶部加一层光掩模。光掩模就像胶片一样,上边有要转移到晶圆上的图案。这些有图案的地方就能够透光。

⑤ 强光照射。光掩模上图案的地方,会透光,于是下一层的光刻胶会溶解。

⑥ 用特定化学试剂溶解的光刻胶之后,这些地方会暴露出氧化层。

⑦ 再用另一种化学物质(通常是一种酸)可以洗掉露出来的氧化层部分,进而蚀刻最下层的硅层。这就是在晶圆上刻下了所需要的图案(电路)。

⑧ 现在晶圆上还有一部分氧化层,这部分氧化层上面还有未溶解的光刻胶作为保护。这时再用一种特定的试剂洗掉这些未溶解的光刻胶。

⑨ 现在有一部分硅是暴露出来的,用“掺杂”(doping)这种化学过程来优化这部分硅的导电性。这一步通常用高温气体(比如磷)来做,渗透进暴露出的硅,从而改变其电学性质。

⑩ 回到②,重复光刻法的步骤,只是光掩模上的图案会有所不同,“掺杂”过程的感温气体也有所不同,蚀刻硅层的深度也有所不同。这样,可以在硅层上制造出晶体管。

①① 最后,在氧化层上做通道,这样可以用细小金属导线,连接不同的晶体管。这一步再次使用光刻胶和光掩模,蚀刻出小通道,接着用一种新的处理方法,“金属化”,在氧化层之上放一层薄薄的金属(比如铝或铜)。之后再次用光刻胶+光掩模,然后强光照射,然后溶解掉暴露的光刻胶、暴露的金属。

①② 这样,晶体管终于做好了,它有三根线连接着硅的三个不同区域,每个区域的掺杂方式不同(电气性质也就不同),这就是双极型晶体管。

这个1962年的真实专利,使得工程师们可以利用光刻技术,制造出晶体管、电阻、电容等各种电子元件,这些元件都集成在一片硅(晶圆)上,并且相互连接的电路也做好了。光刻法一次会做上百万个细节,光可以聚焦到非常小的区域,从而制作出非常精细的细节。一片晶圆可以做很多集成电路,整块晶圆都做好后,可以切割然后包进微型芯片。芯片(chip)的核心都是一小片IC。

4.摩尔定律

随着光刻技术发展,晶体管变小,密度变高。1965年,戈登·摩尔提出了集成电路的发展趋势:每两年左右,同样大小的空间内,晶体管的数量将翻倍。这就是摩尔定律。与此同时,芯片的价格也在急剧下降。晶体管越小,要移动的电荷量就越少,能更快速地切换状态,更省电;电路更紧凑,延迟就进一步降低,时钟速度提高。

1968年,Robert Noyce(仙童半导体公司的创始人)和戈登·摩尔联手成立了一家新公司,名称取自Integrated(集成)的int 以及Electronics(电子)的el,即Intel,这是如今最大的芯片制造商。微型处理器,使用的就是半导体集成电路制作的处理器。集成电路的出现,尤其是用来做微处理器,开启了“计算3.0”时代。

随着技术发展,光刻的分辨率从约一万纳米,发展到如今的7纳米。其它的电子器件(如内存、显卡、固态硬盘等)也在呈指数式发展。超大规模集成(VLSI)软件,用来自动生成芯片设计,有人认为这是“计算4.0”时代的开始。

5.技术瓶颈

但这样的发展可能最终会面临瓶颈,晶体管进一步做小会面临两个大问题。

① 因为光的波长有限,将光掩膜的图案刻到晶圆上的精度已达极限。因此科学家在研制波长更短的光源,以投射更小的形状。

② 当晶体管非常小,电极之间可能只距离几个原子,这时电子会跳过间隙,即发生“量子隧道贯穿”。这相当于是晶体管漏电,这样的元件是不可靠的。科学家在努力寻找解决方法。


总结

本篇内容:

1.软件工程

2.集成电路与摩尔定律

猜你喜欢

转载自blog.csdn.net/Dr_Cheeze/article/details/128110708