@HUST-SuWB
2015-02-09T00:58:13.000000Z
字数 3253
阅读 464
读书笔记
【编码的奥秘[M]. 机械工业出版社, 2000.】
这本书英文原书名为《CODE》,作者Charles Petzold。这是一本深入浅出、充满趣味的计算机原理普及读物,虽然这本书花了大量的篇幅讲述了与计算机原理相关的各种编码方法,并通过数字逻辑电路(包括逻辑与开关、逻辑门电路与触发器、二进制加法器等)以及存储器、微处理器的形成、组织及发展阐述了编码的实现。此外,本书还涉及到计算机系统、操作系统、编程语言等的产生及发展,甚至对计算机图形化的相关技术也给了一个全面的描述。但是跟着作者的这种介绍思路,通过本书的学习你将会发现你已经获得了一个理解今天的PC、数字多媒体和因特网的真实背景。
计算机中使用了不同的编码来传递和存储数字、声音、音乐、图像和视频(电影)。计算机不能直接处理人类世界的编码,因为它不能模拟人类的眼睛、鼻子、嘴和手指来接收信息。尽管这些年来计算机的发展趋势使我们的桌上电脑具有捕获、存储、处理和提供人类交流中所使用的各种信息的能力,而且不论这些信息是视觉的(文字和图片)、听觉的(语言、声音及音乐)还是两者的混合(动画和电影)。所有这些信息都要求使用它们自己的编码方式,正如交谈需要使用人的某些器官(嘴和耳朵),而书写和阅读则需要使用另外一些器官(手和眼睛)一样。而摩尔斯电码是一种很常见的编码,它被称为二元码(binary code),因为编码中仅含“滴”和“嗒”。这与一个硬币很相似,硬币着地时只可能是正面或反面。二元事物(例如硬币)、二元编码(例如摩尔斯电码)常常用2的乘方来描述。
而实现编码的方式有很多种。首先,我们现在都知道,灯泡会亮是因为有电流流过,把这个过程用水和水管作个类比的话,电流与流经水管的水量很相似,而电压类似于水压,电阻类似于水管的粗细程度—水管越小、阻力越大。因此水压越高,流过水管的水量越大;水管越小,流过它的水量就越少。流过水管的水量(电流)与水压(电压)成正比而与水管的阻力(电阻)成反比。
远距离传输信号的方式有一个重要的实现就是电报。电报思想的正式成形是在19世纪早期。1832年在摩尔斯开始试验之前,已经有其他科学家在做一些试探。原理上讲,电报思想很简单:你在线的一端做某些事引起线的另一端发生了某些事。但摩尔斯不可能使用灯泡作为他的信号设备,因为实用性灯泡直到1879年才发明出来。摩尔斯使用的是电磁现象。电磁铁是电报的基础。一端上开关的闭合引起另一端上的电磁铁产生一些动作。
当我们考虑计算机的计算时,必须首先明确的就是计算机会的进制。在人类文明的历史上,出现过以八进制,十进制,甚至十二进制的文明,但是最终只有十进制存留下来了,究其原因是因为人类生而有十个手指十个脚趾。但对于计算机而言,二进制却更好理解,除此之外还有八进制和十六进制。不论我们在键盘上输入的是什么,计算机总是把它当做二进制信号来处理的。
我们都知道,在传统代数中,操作数(通常是字母)代表数字,而操作符(多是“ +”或“×”)指明这些操作数如何结合到一起。传另外一个特点是它总是处理数字,如豆腐的重量或鸭子的数量,火车行驶的距离或家庭成员的年龄。可是布尔却用他超凡的智慧使代数脱离了数字的概念而变得更加抽象。在布尔代数中(布尔的代数最终被这样命名)操作数不是指数字,而是指集(类)。一个类仅仅表示一组事物,也就是后来熟知的集合。
像开关一样,继电器也可以串联或并联以执行逻辑中的简单任务。继电器的组合称为逻辑门。这里所说的“逻辑门执行简单逻辑任务”是指逻辑门只完成最基本的功能。继电器比开关好是因为继电器可以被其他继电器控制而不必用手指控制,这意味着逻辑门可以被组合起来以执行更复杂的任务,比如一些简单的算术操作。而加法是最基本的算术运算。所以,如果想要建造一台计算机,必须首先知道如何构造一种机器,它可以把两个数加起来。当你解决了这个问题,你会发现加法正是计算机唯一所做的事情,因为通过使用用于加法的机器,我们还可以构造用加法来实现减法、乘法、除法以及计算房产抵押款、引导向火星发射卫星、下棋和电话计费等等功能的机器。
计算的中间结果和最终结果都需要保存。先写后读,先保存后取回,先存储后访问,存储器的作用就是在这两类事件间保证信息的完好无损。无论什么时候存储信息,都要用到不同类型的存储器。纸是保存文本信息的最佳媒体,磁带则能很好地保存音乐和电影。
电报继电器---当集成为逻辑门然后再集成为触发器---也一样可以保存信息。逻辑门是由继电器还是由真空管来制造的并不重要。利用逻辑门可集成加法器、选择器、译码器、触发器和计数器。虽然晶体管使得在一个小空间里能安装更多的逻辑门,但你还得担心这些组件的互连。Kildy和Noyce被认为是集成电路,或称IC,更普遍的是叫芯片的共同发明者。集成电路要经过复杂的工序才能生产出来,这些工序包括把很薄的硅晶片分层,精确地上涂料,和在不同的区域蚀刻形成微部件。尽管开发一种新的集成电路很昂贵,但收益来自于它的大量生产—生产得越多,就越便宜。
微处理器—集成计算机中央处理器(CPU)的所有组件在一个硅芯片上诞生于1971年。它的产生有一个很好的开端:第一个微处理器是Intel4004,其中有2300个晶体管。
数字计算机存储器按位存储,所以,需要在计算机上处理的信息必须按位的形式存储。我们已经知道如何用位来表示数和机器码,下一个问题是如何用它来表示文本。为了以数字形式表示文本,必须开发一些系统使得系统里的每一个字母有唯一的编码。文本中也存在数字和标点符号,所以也必须有它们的编码。简单地说,所有的字母、数字和符号都要编码,这样的系统叫作字符编码集,每一个编码叫作字符编码。幸运的是,我们已经有了这样一个标准,即美国信息交换标准代码,简写为ASCII码。它1967年正式公布,此后一直是计算机工业界最为重要的标准。除了一个大的例外(在后面讲到),可以肯定的是,无论什么时候处理文本,总会以某种方式涉及到ASCII码。ASCII码是7位编码,用二进制代码0000000~1111111,即十六进制代码00h~7Fh来表示。
对操作系统而言,系统开始时会进行初始化。初始化程序首先设置堆栈指针,使得堆栈分配到内存的有效区域,然后,把视频显示存储器的每一个字节设置为十六进制数20h,即ASCII码的空格,这样就可以去掉屏幕上的随机字符。所以如果字符行以R开头,该命令意味着Run(运行),如下的命令:
R 1000
意味着“运行从地址1000h处开始存储的程序”。命令处理程序把1000h存到寄存器对HL中,然后执行指令PCHL,即把寄存器对HL的值装入程序计数器,也就是跳转到该地址处执行程序。采用键盘处理程序和命令处理程序进行工作是一个重要的里程碑。有了它,无需再用什么控制面板,从键盘输入容易、迅速且效果良好。
当我们有了操作系统以后,再往下就是编程语言了。尽管许多早期计算机的设计者都试图用代数符号来阐明他们的观点,但通常认为第一个真正成功的编译程序是由Grace Murray Hopper(1906-1992)于1952年在雷明顿为UNIVAC而设计的A-0。当Hopper博士1944年为Howard Aiken工作时,就已开始了计算机的早期研究工作。在她80多岁时,仍然活跃在计算机界,为DEC公司作一些公关工作。今天仍然在使用的最古老的高级语言(尽管这些年中得到了广泛的修改)是FORTRAN。许多计算机语言的名字都是大写字母,因为它们是由许多单词的首字母构成的。FORTRAN是由FORmula前3个字母TRANslation的前4个字母混合而成,是在20世纪50年代中期由IBM公司为704系列计算机开发的。多年来,FORTRAN一直被选作为科学和工程的计算语言,它广泛支持浮点运算甚至支持复数运算。
当你从编码开始,逐步实现了各种逻辑电路,并且架构出了存储器、微处理器以及上层的操作系统和编程语言时,恭喜你,你的计算机就造好了。