为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

计算机存储原理

2017-12-19 50页 doc 1MB 32阅读

用户头像

is_337177

暂无简介

举报
计算机存储原理计算机存储原理 计算机存储器工作原理 如果分析一下存储器的类型,您会惊讶地发现原来我们在日常生活中所使用的电子存储器的种类竟然有如此之多,其中很多存储器已经成 为人们日常词汇中不可或缺的一部分 RAM ROM 缓存 动态RAM 静态RAM 闪存 记忆棒 虚拟内存 视频存储器 BIOS 您应该已经知道您现在所使用的计算机内具有存储器。但是您可能不了解,我们日常使用的大部分电子设备也包含着某种形式的存储器。 下面只是使用存储器的众多设备中的几个示例: 手机 PDA 游戏机 车载无线电 VCR 电...
计算机存储原理
计算机存储原理 计算机存储器工作原理 如果分析一下存储器的类型,您会惊讶地发现原来我们在日常生活中所使用的电子存储器的种类竟然有如此之多,其中很多存储器已经成 为人们日常词汇中不可或缺的一部分 RAM ROM 缓存 动态RAM 静态RAM 闪存 记忆棒 虚拟内存 视频存储器 BIOS 您应该已经知道您现在所使用的计算机内具有存储器。但是您可能不了解,我们日常使用的大部分电子设备也包含着某种形式的存储器。 下面只是使用存储器的众多设备中的几个示例: 手机 PDA 游戏机 车载无线电 VCR 电视 这些设备中的每一个都以不同的方式使用不同类型的存储器~ 在本文中,您将了解为什么会存在如此多的不同类型的存储器以及各 个存储器术语的含义。 计算机存储器 BIOS工作原理 高速缓存工作原理 闪存工作原理 RAM的工作原理 可移动存储器工作原理 只读存储器工作原理 虚拟内存工作原理 尽管存储器从技术上是指任何形式的电子存储设备,但它更多的是用来表示快速、临时的存储形式。如果计算机的CPU需要经常访问硬盘以获得所需的每条数据,则整个系统的运行会非常缓慢。但是,如果将信息保存在存储器中,CPU读取这些信息的速度就可以大大加快, 大多数的存储器形式都是用来存储临时数据的。 如上图所示,CPU根据不同的层级来访问存储器。不管数据是来自永久性存储设备(硬盘)还是来自输入设备(键盘),大部分数据都会首先进入随机存取存储器(RAM)。然后CPU存储需要访问的数据(通常存储在缓存中),并在寄存器中维护某些特殊的指令。我们稍后将 讨论缓存和寄存器。 计算机中的所有部件(如CPU、硬盘驱动器和操作系统)作为一个团队协同工作,存储器是这个团队中最重要的成员之一。从你启动计算机一直到关机,CPU一直都在使用存储器。下面让我们来看一种典型 的情况: 启动计算机。 计算机从只读存储器(ROM)中加载数据,然后执行通电自检 (POST),确认所有主要的部件都运行正常。作为自检的一部分,存储器控制器会通过一个快速的读/写操作来检查所有的存储器地址,以确保存储器芯片中没有错误。读/写操作意味着将 数据写到一个位上,然后再从该位上读取出来。 计算机从ROM加载基本输入/输出系统(BIOS)。BIOS提供有关存储设备、启动顺序、安全性、即插即用(自动设备识别) 功能和其他一些项目的最基本的信息。 计算机将操作系统从硬盘加载到系统的RAM中。通常来说,只要计算机处于开启状态,就会在RAM中维护操作系统的关键内容。这样有助于CPU立即访问操作系统,从而提高整个系统的 性能和功能。 当您打开某个应用程序时,就会将其加载到RAM中。为了节省RAM,很多应用程序最初只加载程序最基本的部分,然后再根据 需要加载程序的其他部分。 在某个应用程序加载完之后,在该应用程序中打开使用的任何 文件将会加载到 RAM 中。 当您保存某个文件或关闭应用程序时,该文件会被写入到指定 的存储设备,然后从RAM中清除该文件和应用程序。 在上例中,每当加载或者打开某个对象时,都会将其放入到RAM中。这就意味着已将这些对象放入了计算机的临时存储区域,这样CPU就可以更容易地读取相关信息。CPU从RAM中请求它需要的数据,处理这些数据,然后将新数据写回到RAM中,这样就形成了一个连续的循环。在大部分计算机中,CPU和RAM之间的这种数据交换每秒多达数百万次。在关闭一个应用程序之后,该应用程序及相关文件通常会从RAM中被清除,以便为新数据腾出空间。如果经过修改的文件在被清 除之前没有保存到永久性存储设备上,这些文件则会丢失。 然而,大家普遍会问一个有关台式计算机的常见问题:“为什么一台 计算机需要这么多存储系统,”典型的计算机具有: 一级缓存和二级缓存 系统RAM 虚拟内存 硬盘 为什么会有这么多存储器,您可以从这个问题的答案中获得很多关 于存储器的知识~ 快速而强大的CPU需要快速轻松地存取大量数据才能实现最优性能。如果CPU无法获得所需要的数据,则只能停下来等待这些数据。运行速度约为1 GHz的现代CPU可以处理大量的数据——每秒处理的数据有望达到数十亿字节。然而,计算机者所面临的难题是能够匹配1GHz的CPU的存储器非常昂贵——而这些大量昂贵存储器的费用远 非人们可以负担。 聪明的计算机设计者采用“分级”存储器的方法解决了这一成本问题 ——使用少量的昂贵存储器并辅以大量较便宜的存储器。 目前,广泛应用的最便宜的读/写存储器就是硬盘。硬盘提供了大量便宜的永久存储容量,每兆字节的硬盘存储空间成本只需几美分,但是从硬盘上读取1兆数据时需要一些时间(接近一秒)。因为硬盘上的存储空间不仅便宜而且容量大,所以它处于CPU存储器层次的最末 级,称作虚拟内存。 CPU存储器层次的下一层便是RAM。我们将在RAM的工作原理中详细 讨论,但是在这里有必要先了解几点有关RAM的知识。 CPU位的大小是指它可以同时从RAM中存取多少个字节的信息。例如,一个16位的CPU一次可以处理2个字节的数据(1字节=8位,因此16位=2字节),一个64位的CPU一次可以处理8个字节的数据。 兆赫(MHz)是CPU处理速度(或称时钟周期)的一个度量,单位为百万次/每秒。因此,在一个32位800 MHz的奔腾?,CPU可以同时处理4个字节的数据,每秒工作8亿次(可能更多地基于流水线技术), 而存储器系统的目标是要满足这些要求。 然而,计算机的系统RAM自身的速度无法跟上CPU的速度,这就是我们需要缓存的原因。不过,RAM的速度是越快越好。现在的大部分芯片的运行周期为50-70纳秒。读/写速度通常与所使用的RAM类型(例如DRAM、SDRAM和RAMBUS)相关。我们稍后将讨论这些不同类型的 存储器。 首先,让我们谈一谈系统RAM。 系统RAM的速度受总线宽度和总线速度的控制。总线宽度是指可以同时发送给CPU的位数,总线速度是指每秒可以发送一组位数据的次数。每当数据从存储器传送到CPU,就完成了一个总线周期。例如,一个100MHz 32位的总线理论上每秒可以向CPU发送1亿次数据,每次包含4个字节(32位/8=4字节),66MHz 16位的总线理论上每秒可以发送6,600万次数据,每次包含2个字节。经过计算,您会发现,只要我们将示例中的总线宽度从16位增加到32位并且将速度从66MHz增加到100MHz,就可以使每秒钟传送到CPU的数据量增加到以 前的三倍(原来为1.32亿字节,现在为4亿字节)。 实际上,RAM并不是一直以最佳速度运行的,等待时间从根本上改变了这一算式。等待时间是指读取一位的信息需要的时钟周期数。例如,速度为100MHz的RAM可以在0.00000001秒内发送一位的数据,但是您可能需要等待0.00000005秒才能开始读取第一位。为了补偿等待 时间,CPU采用了称作突发模式的特殊技术。 突发模式需要以下假设作为前提:CPU请求的数据将存储在顺序存储单元中。存储器控制器预见到CPU处理的任何数据都将来自于同一序列的存储器地址,因此它会同时读出一些连续位的数据。这就意味着只有第一位的读取完全受到等待时间的影响,读取后续比特的用时将明显减少。存储器的额定突发模式通常用由短划线隔开的四个数字表示。第一个数字是指开始一个读操作需要的时钟周期数;第二个、第三个和第四个数字分别指出依次读取每个连续的位所需要的时钟周期数,这也称作字符线。例如:5-1-1-1说明它使用了五个周期来读取第一位,接下来分别用一个周期读取之后的每位。很显然,这些数 字越小,存储器的性能就越好。 突发模式经常和流水线技术结合使用,这是最大程度减少等待时间的另一种方法。流水线技术将数据检索组织到类似组装线的过程中。存储器控制器同时从存储器中读取一个或多个字,并将当前的一个或多个字发送到CPU,然后将其写入到存储单元。结合使用突发模式和流 水线技术可以极大地减少等待时间所导致的延迟。 既然如此,为什么不买速度最快的、位宽最大的存储器呢,存储器总线的速度和带宽应与系统的总线相匹配。您可以将专门用于100MHz系统的存储器用在66MHz的系统上,但是它将以66MHz的总线速度运行,这样并不能凸现自身的优势,而且32位的存储器也并不适用于 16位总线。 即使总线已经具备了足够的位宽和速度,从存储器卡上读取数据到CPU所需的时间仍然要大于CPU实际处理这些数据的时间。缓存就是设计用来缓解这一瓶颈的,它可以让CPU经常使用的数据立即可用,这是通过直接在CPU中构建小容量的存储器(称作主缓存或者一级缓 存)而实现的。一级缓存非常小,容量通常在2-64KB之间。 辅助缓存或二级缓存通常位于CPU附近的存储器卡上。二级缓存直接连接到CPU。主板上有一个专门的集成电路(L2控制器)来管理CPU对二级缓存的使用。根据不同的CPU,二级缓存的大小在256KB到2M之间。在大部分系统中,CPU需要的数据在大约95%的时间里都是从缓存中存取的,这样最大限度地减少了CPU在等待主存储器中的数据 时所需的开销。 一些便宜的系统省去了所有二级缓存,而一些高性能的CPU现在将二级缓存整合到了CPU芯片上。因此,二级缓存的大小以及是否采用板载形式(整合在CPU上)是CPU性能的主要决定性因素。有关缓存的 更多详细信息,请参阅高速缓存工作原理。 静态随机存取存储器(SRAM)是一种特殊类型的RAM,主要用于缓存。SRAM的每个存储单元使用多个晶体管,通常为4-6 晶体管。SRAM具有一个外部门阵列(称作双稳态多谐振荡器),可在两种状态之间进 行切换或翻转。这就意味着它不需要像DRAM那样持续刷新,每个单元,而只要在通电状态下就可以保留数据。由于SRAM不需要经常刷新,因而可以极快地运行。但是由于每个单元相当复杂,使得其价格 昂贵,而不可能用作标准的RAM。 缓存中的SRAM可以是异步的,也可以是同步的。同步SRAM可以完全匹配CPU的运行速度,而异步的则不行。这一细微的时差造成了性能上的差别。能与CPU的时钟速度匹配当然是再好不过了,因此人们始终应寻求同步的SRAM。(有关各种类型的RAM的更多信息,请参见 RAM的工作原理。) 最后介绍的存储器是寄存器。寄存器是直接在CPU内部构建的存储单元,其中包含CPU(特别是算术和逻辑单元(ALU))所需的特定数据。作为CPU自身的一个组成部分,寄存器由向CPU发送处理信息的编译器直接控制。有关寄存器的详细信息,请参见微处理器工作原理。 存储器可以分为两大类:易失性存储器和非易失性存储器。易失性存储器在系统关闭时会丢失所有数据。它要求维持通电状态才能保持正 常工作。大部分RAM都属于此类。 RAM存储器模块。从上往下依次为:SIMM、DIMM 和SODIMM。 非易失性存储器在系统或者设备关闭时也不会丢失数据,许多类型的存储器都属于这一类。其中最为人所熟悉的是ROM,不过类似CF或SM卡的闪存存储设备也都属于非易失性存储器。您可以查看以下链 接来获取有关这些存储器类型的信息。 ROM存储器模块 随机存取存储器(RAM)的工作原理 随机存取存储器(RAM)是计算机存储器中最为人熟知的一种。之所以RAM被称为“随机存储”,是因为您可以直接访问任一个存储单元, 只要您知道该单元所在记忆行和记忆列的地址即可。 与RAM形成鲜明对比的是顺序存取存储器(SAM)。SAM中的数据存储单元按照线性顺序排列,因而只能依顺序访问(类似于盒式录音带)。如果当前位置不能找到所需数据,就必须依次查找下一个存储单元,直至找到所需数据为止。SAM非常适合作缓冲存储器之用,一般情况下,缓存中数据的存储顺序与调用顺序相同(显卡中的质素缓 存就是个很好的例子)。而RAM则能以任意的顺序存取数据。 在本文中,您会了解到RAM究竟是什么,您应该购买哪一型的RAM, 以及RAM的安装方法。 类似于微处理器,存储器芯片也是一种由数以百万计的晶体管和电容器构成的集成电路(IC)。计算机存储器中最为常见的一种是动态随机存取存储器(DRAM),在DRAM中晶体管和电容器合在一起就构成一个存储单元,代表一个数据位元。电容器保存信息位——0或1(有关位的信息,请参见位和字节)。晶体管起到了开关的作用,它能让 内存芯片上的控制线路读取电容上的数据,或改变其状态。 电容器就像一个能够储存电子的小桶。要在存储单元中写入1,小桶内就充满电子。要写入0,小桶就被清空。电容器桶的问题在于它会泄漏。只需大约几毫秒的时间,一个充满电子的小桶就会漏得一干二净。因此,为了确保动态存储器能正常工作,必须由CPU或是由内存控制器对所有电容不断地进行充电,使它们在电子流失殆尽之前能保持1值。为此,内存控制器会先行读取存储器中的数据,然后再把数 据写回去。这种刷新操作每秒钟要自动进行数千次。 动态RAM正是得名于这种刷新操作。动态RAM需要不间断地进行刷新,否则就会丢失它所保存的数据。这一刷新动作的缺点就是费时,并且 会降低内存速度。 存储单元由硅晶片蚀刻而成,位于由记忆列(位线)和记忆行(字线)组成的阵列之中。位线和字线相交,就形成了存储单元的地址。 将位元排列在二维栅格中,就构成了内存。 在上图中,红色的存储单元代表1值,而白色的存储单元代表0值。 在演示动画片中,先选出一个记忆列,然后对记忆行进行充电以将数据写入指定的记忆列中。 DRAM工作时会向选定的记忆列(CAS)发送电荷,以激活该记忆列上每个位元处的晶体管。写入数据时,记忆行线路会使电容保持应有状态。读取数据时,由灵敏放大器测定电容器中的电量水平。如果电量水平大于50%,就读取1值;否则读取0值。计数器会跟踪刷新序列,即记录下哪些行被访问过,以及访问的次序。完成全部工作所需的时间极短,需要以纳秒(十亿分之一秒)计算。存储器芯片被列为70纳秒级的意思是,该芯片读取单个存储单元并完成再充电总共需要 70纳秒。 如果没有读写信息的策略作为支持,存储单元本身是毫无价值的。所以存储单元拥有一整套由其他类型的专用电路构成的底层设施。这些 电路具有下列功能: 判别记忆行和记忆列的地址(行选址和列选址) 记录刷新序列(计数器) 从存储单元中读取、恢复数据(灵敏放大器) 告知存储单元是否接受电荷(写保护) 内存控制器要执行其他一些任务,包括识别存储器的类型、速度和容 量,以及检错等等。 静态RAM使用了截然不同的技术。静态RAM使用某种触发器来储存每一位内存信息(有关触发器的详细信息,请查见布尔逻辑的应用)。存储单元使用的触发器是由引线将4-6个晶体管连接而成,但无须刷新。这使得静态RAM要比动态RAM快得多。但由于构造比较复杂,静态RAM单元要比动态RAM占据更多的芯片空间。所以单个静态RAM芯 片的存储量会小一些,这也使得静态RAM的价格要贵得多。 静态RAM速度快但价格贵,动态RAM要便宜一些,但速度更慢。因此,静态RAM常用来组成CPU中的高速缓存,而动态RAM能组成容量更大 的系统内存空间。 台式机所用的内存芯片最早采用一种称为双列直插式封装(DIP)的引脚构造。这种引脚构造可以焊接到计算机主板上的焊孔内,也可以 将其插入焊接在主板上的插槽内。采用这种方法,在主机只有一两兆字节的内存时还能运转良好,但随着内存需求的增加,所需的芯片数 目就要增加,因而会占据更多的主板空间。 解决这一问题的方法是,将内存芯片连同其支持组件一起,装配到一快单独的印刷电路板(PCB)上,而这块板可以插入主板上一种特定的连接器(内存插槽)中。这类芯片中的绝大多数采用小外形J接脚(SOJ})构造,但还是有少数生产商采用薄型小外形封装(TSOP)构造。新型的引脚构造同早先的DIP构造相比,最关键的区别在于SOJ和TSOP芯片是贴装到PCB板上的。换言之,引脚是直接焊接到电路 板上的,而非插入槽中或孔中。 通常内存芯片只能以部分内存卡的形式出售,称之为模组。您也许见到过一些标注着8x32或4x16的内存。这些数字代表着芯片的数目乘以每片芯片的容量,以兆比特(Mb,即一百万比特)为单位。将乘积除以8,就能得到该模组的兆字节数。举例来说,4x32意味着模组有4片32兆比特的芯片。4乘以32得到128兆比特。我们知道1字节等于8比特,所以还需将乘积128再除以8。结果是16兆字节~ 在过去几年间,台式机使用的RAM内存条及其引线技术有了长足的进步。最早几型的内存享有专利权,亦即不同的电脑生产商依其特有的技术体系进行内存条的研发。随后出现了SIMM,意为单列直差式内存模组。这种内存条采用30针引脚,大小约为9 x 2厘米。对于多 数的计算机来说,您应当安装一对容量相同、速度相等的SIMM内存条。这是因为总线的带宽大于单个SIMM内存条的带宽。例如,您可以安装两条8兆字节(MB)的SIMM内存条以获得16MB的RAM容量。单个SIMM内存条一次可以传送8位数据,而系统每次可以处理16位数据。后期的SIMM内存条要略大一些,约为11x2.5厘米,使用72 针引脚以获取更大的带宽,并把RAM容量提升到256MB。 由上而下依次是:SIMM、DIMM和SODIMM内存模组 随着处理器速度和处理带宽的提升,计算机行业采用了一种新的内存标准——双列直插式内存模组(DIMM)。DIMM采用加长的168针或184针引脚,大小约为14x2.5厘米,每个模组的容量从8MB到1GB不等,还能支持单模组安装,无需配对使用。多数PC机内存模组以及Mac G5系统使用的内存模组的工作电压为2.5伏,而老一些的Mac G4系统工作电压一般为3.3伏。另一种标准是Rambus直插式内容模 组(RIMM),在大小和引脚构造方面同DIMM区别不大,但RIMM采用 了独特的内存总线设计,大大提高了处理速度。 很多笔记本电脑品牌都使用享有专利权的内存模组,但还是有几家生产商采用了小外形双列直插式内存模组(SODIMM)的RAM构造。SODIMM内存卡很小,只有约5x2.5厘米,采用144针或200针引脚。每个模组的容量范围从16MB 到1GB。为了节省空间,苹果iMac台式电脑采用了SODIMM内存条,以替代传统的DIMM内存条。亚笔记本电脑采用更小的DIMM内存条,称为MicroDIMM,有144针或172针两种引脚。 目前市面上可见的多数内存是非常可靠的。多数内存系统只是靠内存控制器在启动时进行检错工作,并且相当依赖这种机制。具有内置检错功能的内存芯片通常会采用一种称为奇偶校验的检错机制。奇偶校验芯片在每8位数据后会附加一位数据。其工作原理很简单。我们先 来看偶校验。 当芯片接收到一个字节中的8位数据时,就会计算其中1的总数。如果1的总数是奇数,奇偶校验位就设为1。如果总数为偶数,校验位就设为0。再次读取数据时,系统还会计算总和,并将其同奇偶校验位作比较。如果总和是奇数,而校验位为1,则数据被判为有效,并将其传送给CPU。但如果总和是奇数,而校验位为0,芯片就会知道在这8位数据中的某一位出现了错误,数据则会被丢弃。奇校验的工作方式与此相似,只是当每个字节中有偶数个1时,校验位会设为1。 奇偶校验的问题是,它只能检错而没有纠错的能力。如果一个字节的数据没有通过奇偶校验,那么这一字节会被丢弃,并且系统会重试一次。重要部门的计算机需要更高的容错水平。高端服务器通常会采用一种称为纠错码(ECC)的检错方式。类似于奇偶校验,ECC同样采取附加校验位的方法来监测每个字节的数据。区别在于ECC的校验位有好几位(具体数目取决于总线宽度),而不是1位。ECC内存采用特定的算法,不仅能检测出一位错误,而且还能纠正之。ECC内存还能检测出一个字节中出现超过一位错误的情形。这种错误非常罕见, 即便使用ECC也难以纠正。 目前市面上的电脑主要采用非奇偶校验内存芯片。这些芯片不提供任 何内置的检错机制,而是依靠内存控制器进行检错。 下面是常见的几种RAM类型: SRAM:静态随机存取存储器采取多重晶体管设计,通常每个存 储单元使用4-6只晶体管,但没有电容器。SRAM主要用于缓存。 DRAM:动态随机存取存储器中每个存储单元由配对出现的晶体 管和电容器构成,需要不断地刷新。 FPM DRAM:快速页模式动态随机存取存储器是最早的一种DRAM。 在存储器根据行列地址进行位元定位的全程中,FPM DRAM必须 处于等待状态,数据读取之后才能开始处理下一位数据。向二 级缓存的最高传输速率约为176MB每秒。 EDO DRAM:扩展数据输出动态随机存取存储器在处理前一位数据的过程中无需全程等待,就可以开始处理下一位数据。只要前一位数据的地址定位成功,EDO DRAM就开始为下一位数据寻址。它比FPM快5%左右。向二级缓存的最高传输速率约为264MB 每秒。 SDRAM:同步动态随机存取存储器利用了爆发模式的概念,大大提升了性能。这种模式在读取数据时首先锁定一个记忆行,然后迅速扫过各记忆列,与此同时读取列上的位元数据。之所以有这种设计思想,是因为多数时候CPU请求的数据在内存中的位置是相邻的。SDRAM比EDO RAM快5%左右,已成为当今台式 机内存中应用最广的一种。向二级缓存的最高传输速率约为 528MB 每秒。 DDR SDRAM:双倍速率同步动态RAM与SDRAM相似,但带宽更高,即速度更快。向二级缓存的最高传输速率约为1064MB每秒。 (133兆赫兹DDR SDRAM)。 RDRAM:Rambus动态随机存取存储器同先前的DRAM体系有着根本性的区别。由Rambus公司设计的RDRAM采用了Rambus直插式内存模组(RIMM),在外形尺寸和引脚构造方面类似于标准的DIMM。RDRAM与众不同之处在于它采取一种特殊的高速数据总线设计,称为Rambus信道。RDRAM内存芯片在并行模式下工作频率可达800兆赫(数据速率1600兆字节)。由于操作速率很高,RDRAM产生的热量要大大多于其他类型的芯片。为了驱 散多余的热量,Rambus芯片配有散热器,这种散热器看上去就像是又长又薄的圆片。正如DIMM有其小外形版本一样,生产商 还为笔记本电脑设计了小外形RIMM。 信用卡内存:信用卡内存是一种享有专利权的独立DRAM内存模 组,使用时要将其插入笔记本电脑的特制长槽中。 PCMCIA内存卡:另一种用于笔记本电脑的独立DRAM内存模组,这种内存卡不享有专利权,只要系统总线能与内存卡设置相互 匹配,即可用于各种笔记本电脑。 CMOS RAM:CMOS RAM这一术语是指用于电脑和其他设备中的一种小容量存储器,用来存储硬盘设置等信息——有关详细信息,请查见为什么计算机需要电池,一文。这种内存需要一个小型 电池来供电,以维持存储器的内容。 VRAM:视频RAM,亦称多端口动态随机存取存储器(MPDRAM),为显示适配器和3D加速卡所专用。所谓“多端口”是指VRAM通常会有两个独立的访问端口,而非单一端口,允许CPU和图形处理器同时访问RAM。VRAM位于图形卡上,且种类繁多,其中很多享有专利权。VRAM的大小往往能决定显示器的分辨率和色深度。VRAM还可以用来保存一些图形专用信息,例如3D几何数据和质素图。真正的多端口VRAM往往价格不菲,因而当今的图形卡使用SGRAM(同步图形RAM)作为替代品。两种显存性 能相差无几,而SGRAM价格更为便宜。 想要更为全面地了解各种RAM类型,请查阅金士顿(Kingston)网站 上的基础内存一文。 常言道,银子永远不嫌多,这同样适用于RAM,对于那些从事高强度图形工作的人,还有电脑游戏玩家来说,更是如此。RAM是影响计算机性能的最重要因素之一,其重要性几乎不亚于CPU本身。如果内存 不足,增加RAM 的效果比更换CPU还要明显~ 如果您的系统响应迟缓,还要不停地访问硬盘,就应该增加RAM。如果您使用 Windows XP系统,微软公司向你建议的最低内存要求是128MB。如果内存只有64MB,使用应用程序时您就会频繁地遇到问题。对于普通台式机应用程序使用者来说,若想获得理想性能,建议使用256MB内存。如果您使用Windows 95/98系统,您只需32MB内存,如果您的电脑内存有64MB,性能就会大大提升。Windows NT/2000系统最低内存要求为64MB,而内存对于系统来说多多益善,所以您可 能需要128MB或更多的内存。 Linux系统只需4MB RAM就能愉快地工作。如果您打算添加X-Windows或是有更重要的工作要做,您可能需要64MB。Mac OS X系统的内存 最低要求是128MB,达到理想性能则需要512MB。 以上列出的各系统所需RAM数量的估值,仅针对一般性的用途——访问互联网、文字处理、普通家庭或办公应用程序以及较为简单的娱乐 程序。如果您从事计算机辅助设计(CAD)、3D建模或动画、高强度数据处理,或者是一位发烧级游戏玩家,那么您一定还要追加RAM。如果您使用的电脑是一台服务器(包括网页、数据库、应用程序、FTP、 或网络等各类服务器),您同样需要更多RAM。 另外一个问题是,您的显卡需要多少VRAM。几乎所有您能买到的显卡都有至少16MB RAM。一般来讲,这足够应付普通的办公环境了。如果您想要做下面的事情,最好还是购买32MB或显存更高的图形卡: 玩仿真电脑游戏 采集、编辑视频 创建3D图形 在高分辨率、全彩色环境下工作 设计全彩色图示 购买显卡时,切记一点:您的显示器和主机必须能支持您选择的显卡。 如何安装RAM 多数情况,安装RAM是非常简单而又直截了当的过程。关键是要做好 调研功课。下面是您应该了解的几件事: 您有多少RAM内存 您想要增加多少RAM内存 形状系数 RAM类型 所需工具 保修协议 内存条应安装在哪里 RAM通常以16兆字节的倍数出售:16、32、64、128、256、512、1024(相当于1GB)。这意味着,如果您眼下使用的系统有64MB内存,而您想将内存总数添加到至少100MB RAM,那么您应该再追加一个 64MB的模组。 知道需要多少RAM之后,就该关注一下您所需内存的形状系数(内存条类型)。在随机附送的操作手册中您应该能找到形状系数,如果找不到的话,可以联系生产商。有一点须知:您的选择取决于你电脑的构造。当今市场上出售的多数家用或办公用计算机采用DIMM插槽。高端系统开始普遍使用RIMM技术,而这种技术终将占领普通台式机市场。由于DIMM和RIMM两种插槽外观十分接近,所以请注意,一定要搞清楚您的电脑用的是哪一种。插入槽内的内存条如果类型有误, 就可能导致系统受损,还会毁掉内存条。 您还应当知道所需RAM的类型。有些计算机操作要求的RAM类型非常特殊。例如,或许您的电脑只能使用60-70纳秒的奇偶校验EDO RAM。多数电脑不会如此苛刻,但多少还是有所限制。为了达到理想性能,添加到您电脑上的RAM应当同原有的RAM在速度、奇偶校验和类型等 指标上能够匹配。当今市面上最常见的内存类型是SDRAM。 另外,有些电脑支持双通道RAM配置,这种配置有时是可选的,有时则是必需的。双通道的含义是,RAM模组必须配对地安装到电脑中去,也就是说如果您安装了一个512MB RAM内存条,必须在旁边再安装一个512MB 内存条。当双通道是一个可选配置时,配对安装RAM能提升某些应用程序的性能。当双通道为必需配置时,例如使用Mac G5芯片的计算机,如果不以配对形式安装RAM芯片,电脑就会发生功能 异常。 打开机箱之前,应当确认一下您会不会违反保修协议。有些生产商将机箱密封起来,用户必须经由授权的技术人员来安装RAM。如果您执意要打开机箱,要先断电,并且拔掉计算机电源。请使用防静电板或防静电腕带,将你身上的静电放给大地。根据你电脑的实际情况,借助螺丝刀或螺母刀打开机箱。当今市面上有很多系统采用免工具机 箱,靠手旋螺母或简易扣栓来固定机箱盖。 安装更多RAM时,先要找到计算机主板上的内存模组。左图为Macintosh G4,右图为PC机。 实际中安装内存模组不需要任何工具。主板上有一排长槽,称为内存插槽,RAM就安装在这里。内存模组的一面有刻痕,如果安装的方向有误,就无法将模组插入长槽。安装SIMM和部分DIMM时,您应当沿约45度角将模组插入长槽。然后将其扶正,直至它与主板相垂直,并且要让两端的金属夹能够卡紧。如果金属夹没能卡紧插槽,请检查一下内存上的刻痕在不在正确的一端,还要看看内存条有没有固定好。很多DIMM模组没有金属夹;它们靠摩擦力把自己固定在适当位 置上。我们还是要请您再次确认一下模组有没有固定好。 只要内存模组安装完毕,就可以盖上机箱盖、接通电源,然后开机。当计算机开始进行POST自检时,就能自动识别内存。这就算是大功 告成了~ 虚拟内存工作原理 虚拟内存是大多数台式计算机所用的操作系统中的一个常见组成部分。之所以如此,是因为它以极低的成本为用户提供了巨大的好处。 在本文中,您将了解什么是虚拟内存,它在计算机中有什么作用,以 及您应如何在自己的计算机中配置虚拟内存来优化性能。 如今大多数计算机都有512或1024兆字节(MB)的内存供中央处理器(CPU)使用(有关内存的详细介绍,请参见RAM的工作原理)。然而,大多数用户希望能同时运行所有需要的程序,而仅有这点内存 是不够的。 举例来说,如果您将操作系统、电子邮件程序、Web浏览器和游戏客户端同时加载到内存中,那么仅有512MB的RAM是无法运行所有这些程序的。若没有虚拟内存,那么当您把可用的内存都装满后,您的计算机就会告诉您:“对不起,您无法加载其他应用程序了。若要继续加载,请先关闭某个应用程序。”而有了虚拟内存技术,计算机就可以检查内存,找出最近未使用的内存区,并将它们的内容复制到硬盘 上。这将释放内存中的空间,以加载新的应用程序。 由于这一复制过程是自动完成的,所以在进行过程中您甚至不会察觉。有了虚拟内存,计算机即使只安装了不多的内存,也会让人觉得它是无穷无尽的。因为硬盘空间比内存芯片便宜得多,所以这种方法 还会带来不错的经济效益。 硬盘驱动器的读写速度大大低于内存,而且它采用的技术无法同时访问多个较小的数据块。如果您的系统过于依赖虚拟内存,您将会发现 系统性能明显下降。关键在于,您应当有足够的内存来处理所有要同时使用的程序——只有当您切换任务时才会出现轻微的停顿现象,让您觉得虚拟内存有点慢。在这种情况下,虚拟内存的表现堪称完美。 如果不是这样,那么操作系统必须不断地在内存和硬盘之间来回地交换数据。这称为抖动,它会使计算机的速度慢得让人难以置信。 内存映像的硬盘区域称为页面文件。页面文件将内存分页放置在硬盘上,而操作系统则在页面文件和内存之间来回移动数据。在运行 Windows的计算机上,页面文件的扩展名为.SWP。 以Windows98为例,它是一个典型的使用虚拟内存的操作系统。Windows98有一个智能化的虚拟内存管理器,它使用默认设置来帮助Windows按照需要为虚拟内存分配硬盘空间。在大多数情况下,默认设置都能满足您的需要,但有时您可能会希望手动配置虚拟内存,尤其是在您拥有多个物理硬盘驱动器,或运行对速度要求较高的应用程 序时。 手动配置虚拟内存的方法是:打开“控制面板”窗口,然后双击“系统”图标,打开“系统”对话框窗口。请点击“性能”选项卡,然后 单击“虚拟内存”按钮。 单击写着“用户自己指定虚拟内存设置”的选项,以激活其下的各个选项。单击“硬盘:”旁边的下拉列表,选择您要设置虚拟内存的那个硬盘驱动器。请记住,在您拥有的多个物理硬盘之间平均分配虚拟 内存是一条很好的经验法则。 在“最小值:”框中,输入所指定的硬盘上用作虚拟内存的最小空间数值。这个数值的单位是兆字节(MB)。对于“C:”驱动器,最小值应为2MB。“最大值:”可以设为任意数值,但最高上限可能是物理 内存大小的两倍。 您为虚拟内存分配的硬盘空间大小是十分重要的。如果分配的空间过小,将会出现“内存不足”的错误。在您觉得自己需要继续增大虚拟内存的同时,可能会发现系统变得很慢,而且需要频繁地访问硬盘。在这种情况下,您应该考虑购买更多的内存,将虚拟内存和RAM的大小比例保持在2:1左右。某些应用程序在拥有大量虚拟内存时会有好的表现,但它们并不经常访问虚拟内存。在这种情况下,大页面文件 会更适用。 改善虚拟内存性能的技巧之一(特别是需要大量虚拟内存时)是使它的最小值与最大值相等。这会强制操作系统在您启动计算机时分配一 个完整的页面文件。这样,当程序运行时,页面文件将不会增大,从而使性能得以改善。许多视频类应用程序建议用户使用这一技巧,以 避免在硬盘和磁带之间读写视频信息时出现停顿。 另一个影响虚拟内存性能的因素是页面文件的位置。如果您的系统中有多个物理硬盘驱动器(不是指多个盘符,而是指实际的驱动器),您可以在每个驱动器上生成较小的页面文件,将工作负载分散到这些驱动器上。对于所有大量使用虚拟内存的系统而言,这种简单的修改 能显著提高它们的速度。 只读存储器工作原理 只读存储器(ROM),亦称为固件,是一种在生产时用特定数据进行过编程的集成电路。ROM芯片不仅用于电脑,还出现在大多数其他电子设备中。 在本文中,您会了解到几种不同的ROM,还有它们自的工作原理。ROM有五种基本类型:ROM PROM EPROM EEPROM 闪存 在本文中您会了解到,上述的各类ROM都有其独特属性,但它们同属于一种存储器,这种存储器有两个特征:这些芯片中存储的数据具有非易失性——即断电时不会丢失数据。 这些芯片中存储的数据具有不可变更性,或是需要特定的操作才能变更数据(这与读写数据都很方便的RAM不同)。 这就意味着,切断芯片的电源不会丢失任何信息。 类似于RAM,ROM芯片(见图1)也包含由记忆行与记忆列组成的栅格。但在记忆行与记忆列相交处,ROM芯片与RAM芯片有根本性的区别。RAM使用晶体管打开或关闭通往位于交点处的电容器的访问电路,而ROM则使用二极管来控制线路,当二极管取1值时,线路导通。当 它取0值时,线路就完全切断。 图1:使用闪存的BIOS,闪存是ROM的一种类型。 一般来说,二极管允许电流单向流通,并且有一个阈值电压,亦称正向导通电压,这一电压决定了导通二极管所需电流的大小。在硅半导体器件(例如处理器和存储器芯片等)中,正向导通电压约为0.6伏。利用二极管这些独特属性,ROM芯片能够生成一个高于正向导通电压的电势,然后这一电势沿着选定的记忆列传导到一个选定的接地(零电势)记忆行上,这样芯片就与存储单元建立了连接。如果在该存储单元处有一个二极管,电流会被导向大地(零电势),并且在二进制系统下,这一存储单元被认为是“通路”(取1值)。存储单元取0 值的情况比较简单,此时相交处的二极管不能连通记忆行与记忆列。 因而记忆列上的电势不能传导到记忆行上。 不难理解,ROM芯片的工作方式要求生产时写入芯片的数据必须完好无损。一般ROM芯片不能重复编程或重复写入。如果数据有误或需要更新,您只能把旧的ROM扔掉,然后从新来过。创建ROM芯片的原始模板是一项艰苦的工作,通常要经历一个屡败屡试的过程。但ROM芯片仍然是利大于弊。只要完成了模板的设计,单个芯片的实际成本相当低廉,只有几美分。它们的能耗极低,使用起来非常可靠,并且用于小型电子设备时,它们多数情况下都内含控制设备所需的全部程序。唱歌鱼使用的小型芯片就是一个很好的例子。该芯片大小略同于您的手指甲,写入了几首时长30秒的歌曲片段,并且内含能控制电 动机并使其与音乐保持同步的程序代码。 如果完全从零开始,生产少量的ROM将会是一件既耗时又耗财的工作。主要针对这一点,开发商发明了一种新型ROM,称为可编程只读存储器(PROM)。空白的PROM价格低廉,只要你拥有一种称为编程 器的特殊工具,就能将代码写入其中。 PROM芯片(见图2)同普通ROM一样,由记忆行与记忆列相交而成的栅格组成。区别在于,PROM芯片中记忆行与记忆列的每一个交点都是靠熔丝将它们连接起来。电势会沿记忆列导向接地的记忆行,电流会流经存储单元处的熔丝,这表示存储单元取1值。由于全部的存储单元都有熔丝,因而PROM芯片所有存储单元的初始(空白)状态都 是1值。若想将单元值变为0,必须使用编程器向存储单元发送一定量的电流。更高的电压能烧断熔丝,并造成记忆行与记忆列之间形成 开路。这一过程称为烧制PROM。 图2 PROM只能进行一次编程。它们比ROM更娇气。静电电击很容易就能烧断PROM中的熔丝,从而使得关键位元的取值由1变为0。空白PROM不仅价格低廉,更是在将元件交付高成本的ROM制造过程之前,打造 数据原型的极佳选择。 使用ROM和PROM可能并不经济。尽管它们的单价并不昂贵,然而随时间的流逝,总成本会越来越高。可擦除可编程只读存储器(EPROM)解决了这个问题。EPROM芯片可以多次复写。擦除EPROM需要一种特制工具,这种工具能发射某一频率的紫外线。配置EPROM时必须由EPROM编程器提供一个特定的电压,电压水平由EPROM的类型决定。 我们又要提到记忆行与记忆列形成的栅格。在EPROM中,位于行列相交处的每个存储单元都有两个晶体管。这两个晶体管被一个薄氧化层隔开。其中一个称为浮栅,另一个为控制栅。由浮栅通往记忆行(字 线)的唯一路径必须经过控制栅。只要这条线路能够接通,存储单元就取1值。若想将1值转换为0值,则需要经过一个奇妙的过程,这就是福勒诺德海姆隧道效应(Fowler-Nordheim tunneling)。隧道效应能改变浮栅上的电子分布。浮栅上要施加一个电压(通常是10-13伏)。电流从记忆列(位线)流出,流过浮栅后流向大地(零电势)。 这一外加电压让浮栅晶体管起到了电子枪的作用。受激发的电子被推向薄氧化层的另一面并陷入其中,使得薄氧化层带有负电荷。这些带负电的电子在控制栅和浮栅之间起到了壁垒的作用。一种称为单元传感器的设备能监测流过浮栅的电量水平。如果穿过浮栅的电流超过总电量的50%,记忆单元就取1值。如果流过浮栅的电量低于阈值的50%,则单元取值变为0。在空白EPROM中,所有栅都是完全打开的,因而 所有单元都取1值。 想要复写EPROM,首先要将其擦除。进行擦除时,必须要提供足够强大的能量,才能打通阻碍着浮栅的负电子壁垒。对于一般的EPROM来说,完成这一工作的最佳选择是频率为253.7的紫外线。因为这一频率的光波不能穿透大多数塑料制品和玻璃制品,每个EPROM芯片的顶部都置有一副石英窗。EPROM必须与擦除器的光源保持很近的距离(要 在两到五厘米以内),才能正常工作。 EPROM擦除器不具有选择性,它会擦除EPROM的全部内容。EPROM必须从设备中移除,然后要在EPROM擦除器发出的紫外线下放置几分 钟。如果放置时间过长,有可能导致过度擦除。在这种情况下,EPROM 的浮栅会完全丧失负载电子的能力。 尽管EPROM比PROM在复用性上有了巨大的进步,但当数据需要改动时,EPROM仍需使用专用设备,还要经过繁琐的操作程序,才能移除原有数据并写入新数据。并且EPROM不能局部地修改数据;必须擦除芯片保存的全部数据。电可擦除可编程只读存储器(EEPROM)芯片解 决了EPROM最大的技术缺陷。 在EEPROM中: 芯片无需移除即可进行复写。 更改局部数据时,芯片无需全部擦除。 无需使用附加的专用设备,即可改写芯片内容。 无需使用紫外光,您只要在记忆单元处施加局部电场,就可以使得EEPROM存储单元中的电子回归常态。这样就能擦除EEPROM的目标单元,而后就可以进行复写。EEPROM一次可以改动一个字节,这种方法操作起来虽然很灵活,但速度太慢。实际中,对于那些需要快速改 变芯片上所存数据的产品来说,EEPROM的速度还达不到要求。 生产商为了应对这一技术局限,研制出了闪存,这种EEPROM采用电路内接线技术,闪存在擦除数据时,会在整个芯片上或在某一个预先 选定的区域上(称为区块)施加一个电场。闪存的工作速度比传统的EEPROM要快得多,因为它能大面积地写入数据,通常是512字节,而非一次1字节。请查阅闪存工作原理一文,以了解这种ROM及其应 用的详细信息。 闪存工作原理 我们已在只读存储器工作原理中讨论了闪存的基本技术,本文仅做简 单回顾: 闪存是一种EEPROM芯片。它包含一个由若干行和列组成的网格,其 中各个交汇处均有一个含有两个晶体管的单元。 这两个晶体管由一层薄氧化层隔开。两个晶体管分别称为浮点门和控制门。浮点门只能通过控制门连接到行,即字元线。一旦连接,该单元值将为1。若要将值更改为0,需要经过名为Fowler-Nordheim隧道效应的奇妙过程。接下来,我们将介绍隧道效应。隧道效应用于更改浮点门中的电子位置。浮点门通常采用10到13伏之间的电荷。电 荷来自列,即位元线,进入浮点门,并排入地面。 通过这些电荷,浮点门晶体管可具有类似电子枪的作用。将激发的电子推入薄氧化层并在薄氧化层的另一面将其捕获,使其带有负电荷。这些带负电荷的电子在控制门和浮点门之间起到障碍物的作用。一种称为单元传感器的特殊设备用于监控通过浮点门的电荷水平。如果通过浮点门的电流超过电荷的50%,则值为1。通过的电荷低于50%的 限制时,值更改为0。在一个空白EEPROM中,所有门完全打开,每 个单元值均为1。 通过使用电场(一种高压电荷),闪存芯片各单元中的电子可恢复正常值(“1”)。闪存通过内电路布线将电场应用于整个芯片或预先确定的区域(称为块)。这将擦除芯片的目标区域,该区域可在以后重新写入数据。闪存每次不是擦除一个字节,而是每次擦除一个块或 整个芯片,然后再进行重写,因此比传统 EEPROM速度更快。 您可能会想到车载收音机装有闪存,因为您可以设计预设值,车载收音机能够记住预设值。但实际上车载收音机使用的是Flash RAM。区别是Flash RAM必须通过电源来保留其中的内容,而闪存则无需任何外部电源即可保留其数据。即使关掉电源,车载收音机也在使用很小的电流来保留Flash RAM中的数据。因此,如果您的车载电池电量耗 尽或线路断开,收音机预设值将丢失。 可移动存储器工作原理 可移动存储器的历史几乎同计算机本身一样悠久。早期的可移动存储器基于磁带,就是盒式录音带使用的那种。此前,一些电脑甚至使用 过纸质的穿孔卡片来储存信息~ 如上图所示,穿孔卡片上面的小孔会被电脑转译成特定的信息。 从穿孔卡片时代一路走来,我们的科技有了长足的进步。新型的可移动存储设备可以在单个磁盘、盒式磁带、闪存卡或磁碟上储存几百兆字节(甚至可达几千兆字节)的数据。在本文中,您将会了解到三种主流存储技术。我们还会探讨采用上述技术的各种存储设备,以及这几种技术各自的前景。不过,先让我们来了解一下人们使用可移动存 储器的原因吧。这些设备通通可以归入三大类: 磁存储器 光学存储器 固态存储器 在下面几节里,我们会一一剖析上述三种技术 多数情况下,可移动磁性存储设备需要使用驱动器,这是一种与主机 相连的机械设备。您需要将实际存储信息的介质插入驱动器。 同硬盘驱动器一样,可移动的磁存储设备使用的介质也具有一个氧化铁涂层。这种氧化物为铁磁性材料,意即只要将这种材料暴露在磁场下,就能使其永久磁化。这种介质一般称为磁盘或磁碟。驱动器使用 马达让介质高速转动起来,并通过一种称为磁头的小型设备访问(读 取)介质上存储的信息。 每一个磁头上都有一个微型电磁体,由包裹线圈的铁芯构成。该电磁体会施加一个磁通量到介质的氧化涂层上,氧化物能永久性地“记住”它感受到的磁通效应。进行写操作时,数据信号沿线圈传播,继而在铁芯中产生一个磁场。在磁通效应的作用下,磁头和介质间的空隙内会形成干涉条纹。这种干涉效应会在空隙间形成一个桥接,继而磁化介质上的氧化物。当驱动器读取数据时,读磁头会施加一个能穿过空隙的变化磁场,于是铁芯中也会产生一个变化的磁场,线圈上就会得到一个电信号。随后,这一信号会以二进制数据的形式传送给计算机。 磁盘或磁碟有几点共同之处: 采用带有氧化铁涂层的薄塑料或金属基片。 可以瞬时记录信息。 可以反复擦除、反复使用。 价格合理,使用方便。 如果您用过盒式录音带,就会知道它有一个很大的缺点——它是一种顺序存储设备。磁带有一个起始点,有一个终止点,若想让磁带跳转到后面的歌曲,您必须使用快进按钮和回退按钮,才能找到歌曲开始的地方。这是因为磁带中磁头的位置是固定的。 磁盘或磁碟同磁带一样,都是由双面涂有磁性材料的塑料薄片构成。只是其形状更像是一个圆盘,而非细长的薄带。磁道以同心圆环的形式排列,因而软件可以从“文件1”跳转到“文件19”,而无需快进通过文件2到文件18。磁盘或磁碟可以像唱片一样旋转,而磁头会移动到正确的磁道上,这就是直接访问存储设备。事实上,一些可移动设备带有一张磁盘盘片,类似于硬盘驱动器的内部结构。磁带仍然用于某些长期存储事务,例如备份服务器硬盘等无需迅速访问数据的应用场合。 如上图所示,您可以看到磁盘被分为磁道(棕色)和扇区(黄色)。 读写磁头(“写”是指将新信息保存到存储介质中)在磁道间移动时,不会接触介质。通常存在某种形式的保护机制,设定之后磁盘或磁碟将受到保护,任何信息都不能写入。例如,利用电子光学设备检测 3.5英寸软盘底角处是否存在一个缺口(或是5.25英寸软盘侧面的 凹口),计算机就能知道用户是否想对磁盘实施写保护。 多年间,磁存储技术有了很大进步。由于软盘得到了广泛普及并且成本很低,容量更高的可移动存储器还不能完全取代软盘的地位。但市场上还是出现了很多替代产品,它们各有千秋,也大受欢迎。Iomega 公司出品的Zip存储器就是其中一例。 Iomega Corporation供图 Zip驱动器可以使用多种端口规格, 如SCSI、USB、并行端口以及内置ATAPI接口等。 Zip盘同软盘最主要的区别在于使用的涂层不 同。Zip盘使用的涂层品质要高得多。高品质 Iomega Corporation供图 的涂层意味着,Zip盘可以使用比软盘磁头小一张Zip盘 得多(十分之一左右)的读写磁头。更为小巧 的磁头配合上类似于硬盘所使用的磁头定位机制,让Zip驱动器在磁盘表面上每英寸的空间内可以压缩数千条磁道。Zip驱动器在每个磁道中使用可变数目的扇区,以便能最大程度地利用磁盘空间。所有这些属性结合起来,可以让软盘拥有巨大的数据容量——目前可达750MB。采用磁存储技术制造可移动存储器的另一种方法是,将盘片(实质上是硬盘)装入独立的外壳中。Iomega Jaz是采用此法最为成功的产品之一。每片Jaz磁碟实质上是一个装在硬质塑料外壳中的多盘片硬盘。磁碟中既没有磁头,也没有用来转动磁盘的马达;这些 设备装置在驱动器单元里。 Iomega Corporation供图 最新的Jaz驱动器采用2GB磁碟, 但仍可以兼容早先Jaz所用的1GB盘片。 由于移动硬盘是完全外接型设备,所以它能迅速赢得市场,这很大程度上还要归功于USB技术。这些移动硬盘类似于一般PC机的内置硬盘,将驱动设备和存储介质全部封装在外壳内。驱动器通过USB线与PC机相连,只要安装了驱动软件,就能自动被Windows列为可用的 驱动器。 Pockey Drives供图 这个20GB Pockey Drive可以放到您的手掌心上。 另一种移动硬盘称为微型硬盘(Microdrive)。这种嵌入PCMCIA卡的微型硬盘可以插入任何一款具有PCMCIA插槽的计算机,例如膝上型电脑。 Iomega Corporation供图 这种微型硬盘能保存340MB的数据,大小略同于一个火柴盒。 在《硬盘工作原理》和《磁带录音机工作原理》两篇文章中,您可以了解到更多有关磁存储器的信息。要了解光学存储技术,请查看下一页的内容。 Cd工作原理 我们最熟悉的光学存储器是紧凑盘(CD)。CD盘可以将大量的数字信息(783MB)储存在一张非常小的盘面上,而这种盘片的生产价格极其低廉。实现这一理念的设计十分简单:CD盘的表面是一个印盖着数十亿个坑点的镜面,这些坑点排列在一个缠绕得很紧的长螺旋结构中。CD播放机利用精确的激光能够读出坑点所代表的信息, 并将其转译为位元数据。 坑点螺旋起始于CD盘的中心。CD轨道极其窄小,须用微米(百万分之一米)衡量。CD轨道宽约0.5微米,相邻轨道间距约为1.6微米。单个延长坑点宽约0.5微米,最小长度为0.83微米,最小高度为125 纳米(十亿分之一米)。 厚度约1.2毫米的清晰聚碳酸酯注塑件基片占据了CD盘大部分的重量。生产过程中,这种塑料基片上会压盖上微小的坑点,并形成长螺旋形轨道。随后,盘面表层会涂上一个很薄的反射铝层,并覆盖坑点。CD技术中最精巧的地方,在于它能以正确的顺序、正确的速度,正确地读取全部坑点。为了完成这些作业,当CD播放机发出的激光定 焦于坑点轨道上时,必须处理得极为精确。 播放CD盘时,激光束穿过CD上的聚碳酸酯层,然后从铝层反射出来,最终触击一个能监测光线变化的光电设备。从坑点反射出的光线与从平坦铝层(称为平台)反射出的光线有所不同。光电传感器可以探测出反射光线中的变化,然后CD机驱动器中的电子设备就能将其转译 为数据位元。 CD播放机的基本零件 上文介绍了普通CD的工作原理,这非常适用于预先打包的软件,但对于用来存储个人文件的可移动存储设备来说,不会有任何帮助。这 就引出了可刻录光盘(CD-R)和可复写光盘(CD-RW)。 CD-R用一种有机染料化合物替代了普通CD盘中的铝层。这种化合物通常具有反射性,但当激光照射在某一点并将其加热到某一温度时,就会“灼烧”染料,使其色彩暗沉。当你需要重新取回CD-R上所写的数据时,激光会重新扫描光盘,并将烧过的染料点判为坑点。这种方法的问题是,您只能一次性地向CD-R写入数据。坑点上的染料在 灼烧之后不能复原。 CD-RW通过相性变换的方法解决了这个难题,这要依赖于一种非常特殊的锑、铟、银、碲的金属混合物。这种特殊的混合物有一种令人称奇的特性:当加热到某一温度时,它就会结晶,冷却后就会具有很高的反射性;当加热到另一更高的温度时,混合物就会转化为非晶态, 冷却后其表面就会变暗沉。 Iomega Corporation供图 Predator是一种由Iomega公司出品的高速CD-RW驱动器。 CD-RW驱动器利用了这一特性,设定了三种激光。 读——普通设定,能够将光线反射到光电传感器。 擦——将激光设定为能使混合物结晶所需的温度。 写——将激光设定为能使混合物去结晶化所需的温度。 其他光学存储设备出离了CD标准,例如DVD采用了类似CD-R和CD-RW的技术。更早的磁光(MO)技术是一种混合型技术,目前己很少采用。MO利用激光使介质表面升温。当表面温度达到某一数值,磁头就会在介质上滑动,根据需要改变存储单元的磁极性。 闪存是一种很流行的可移动存储器,非常适宜应用在数码相机和掌上型电脑等小型设备中。闪存技术是一种固态存储技术,所谓固态存储,主要是指其中没有运动的部件。芯片的内部是由记忆行与记忆列交叉 而成的网栅,在网栅的交点处有一个由两个晶体管构成的存储单元。这两个晶体管被一个薄氧化层隔开。其中一个称为浮栅,另一个为控制栅。由浮栅通往记忆行(字线)的唯一路径必须经过控制栅。只要 这条线路能够接通,存储单元就取“1”值。 若想将单元取值转换为0值,则需要经过一个奇妙的过程,这就是福勒诺德海姆隧道效应(Fowler-Nordheim tunneling)。隧道效应能改变浮栅上的电子分布。浮栅上要施加一个电压(通常是10-13伏)。 电流从记忆列(位线)流出,经过浮栅后流向大地。 这一外加电压让浮栅晶体管起到了电子枪的作用。受激发的负电电子被推向薄氧化层的另一面并陷入其中,使得薄氧化层带有负电荷。这些带负电的电子在控制栅和浮栅之间起到了壁垒的作用。一种称为单元传感器的设备能监测流过浮栅的电量水平。如果穿过浮栅的电流超过总电量的50%,记忆单元就取“1”值。如果流过浮栅的电量低于 阈值的50%,则记忆单元取“0”值。 闪存利用福勒诺德海姆隧道效应改变电子的分布。 通过施加一个电场(高电压),就能让闪存芯片单元中的电子回归常态(“1”值)。为了能施加电场,闪存采用了电路内接线技术,既可以将电场施加在整个芯片上,也可以将其施加于某一个预先选定的区域上(称为区块)。这样就能擦除芯片内的指定区域,之后就能进行复写。闪存的工作速度要远远高于传统的电可擦除可编程只读存储器(EEPROM)芯片,这是因为闪存并非每次只能擦除一个字节,而是能对一个区块或整个芯片进行擦除。 闪存设备(例如CompactFlash卡或SmartMedia卡)已经成为时下最 常见的非易失性电子存储器。Sandisk公司于1994年研发了CompactFlash闪存卡,它同SmartMedia闪存卡有两点重要区别: Compact Flash更厚,并使用控制器芯片。 CompactFlash由包含闪存芯片的小型电路板和专用的控制器芯片组成,它们全部封装在一个非常耐用的外壳里,其厚度数倍于Smart Media卡。增厚的闪存卡能确保更大的存储容量。 CompactFlash的存储容量最小为8MB,最高可达4GB,令人难以置信。集成的控制器能够提升性能,特别是当它被用在那些处理器速度较低的设备上时。但相比于SmartMedia卡,外壳和控制器芯片的存在使 得CompactFlash卡的尺寸、重量和复杂度都有所增加。 固态软盘卡(SSFDC),更为人熟知的名字是SmartMedia,最早由东芝公司研发。SmartMedia卡的容量范围是2MB-128MB。如下图所示, 这种闪存卡本身是非常小巧的。 SmartMedia闪存卡的表面积大约为一个25美分硬币的两倍。 正因其简洁的设计理念,SmartMedia卡更显得卓越不俗。平面电极通过接合线与闪存芯片相连。采用超塑薄封装(OMTP)技术,就能将闪存芯片、平面电极和接合线全部嵌入到一个合成树脂基片上。这种 技术无需焊接,就能把所有元件集成到一个简易的封装之内。 只要您指明了想要保存的数据,SmartMedia卡就能展现其高速、可靠的性能。它们体型小巧,重量很轻,并且便于使用。同其他可移动固态存储器相比,它们比较娇气,所以使用和放置它们时,您应该更 加小心。请查阅《闪存工作原理》一文,获取更多信息。 硬盘工作原理 硬盘发明于20世纪50年代。最初这些直径达20英寸的宽大磁盘只能保存几兆的数据。它们先是被称为“固定磁盘”或“温彻斯特盘”(IBM公司一种流行产品的代号),后来又被称为“硬盘”以区别于 “软盘”。硬盘使用附有磁性介质的硬质盘片,而磁带和软盘使用的是柔软的塑料薄片。 在最为基本的层面上看,硬盘与卡式磁带并无太大不同。它们都使用磁带录音机工作原理一文中介绍的磁记录技术。硬盘与卡式磁带共享磁存储带来的最大好处在于:磁介质很容易被擦除和重写,并可将存于其上的磁通模式“记忆”许多年。 卡式磁带和硬盘的主要差异 下一节我们要谈谈卡式磁带和硬盘的主要差异。 对于卡式磁带,磁记录材料被涂于塑料薄带之上;对于硬盘, 磁记录材料先被层积在高精度的铝制或玻璃基片上,然后再将 盘片打磨成如镜面一样平滑。 对于磁带,要跳到特定位置需快进或快退,若磁带很长则可能 花费数分钟的时间;对于硬盘,可几乎立刻移至磁盘表面的任 一点。 卡带仓中的读写头直接接触磁带。而硬盘的读写头“悬浮”在 磁盘上,从不会有真正的接触。 卡带仓中的磁带以每秒约5厘米的速度移过磁头。而硬盘的盘 体在磁头下的旋转速度可达每秒76米(约为每小时272公里)~ 与卡式磁带相比,硬盘信息被存储于极小的磁畴中。盘片的精 度和介质的速度使这样小的磁畴成为可能。 由于以上的差异,一个硬盘驱动器可以在很小的空间中存储数量惊人的信息,并能在一眨眼的时间里访问信息的任何部分。 典型台式电脑的硬盘容量在10-40G之间。数据以文件的形式保存在磁盘上。一个文件不过是一组命名的字节。这些字节可能是某个文本文件中字符的ASCII码,也可能是供计算机执行的某个应用软件的指令,或者是某个数据库的记录,还可能是某个GIF图像的像素颜色。无论文件包含了什么内容,它只是一个字节流罢了。当在计算机上运行的程序请求使用某个文件时,硬盘将取得文件的字节并依次发送给 CPU。 衡量硬盘驱动器的性能有两个指标: 数据传输率——数据传输率是硬盘每秒钟可以传送给CPU的字 节数。常见的数据传输率在每秒5-40M之间。 寻道时间——寻道时间是从CPU向硬盘请求某个文件开始到该 文件的第一个字节送至CPU结束两个时刻之间的间隔。寻道时 间通常在10-20毫秒之间。 还有一个重要参数就是硬盘的容量,即可以容纳的总字节数。了解硬盘原理的最好方法就是观察一下硬盘内部的样子。(注意硬盘开启后 即被损毁,所以除非您有一块废硬盘,否则请勿尝试。) 这是一个典型的硬盘驱动器: 控制电路附于密封铝制外壳的一侧,用于控制读写机构和驱动盘片旋转的马达。此电路还负责将驱动器中的磁畴信号组装成字节(读)以及将字节转变为磁畴(写)。所有电路都集中在一小块板子上,和驱 动器的其余部分分离: 电路板下面是旋转盘片的马达接合处,以及一个用于维持内外气压平 衡的高度过滤的通风孔: 除去驱动器的壳盖后,一个极其简单但十分精确的内部结构就显露出 来了: 在这张图片中,您可以看到: 盘片——驱动器工作时,它们的旋转速度通常为每分钟3,600 或7,200转。这些盘片被制造成如镜面一般平滑,其表面偏差 之小令人惊叹~ 旋臂——旋臂装有读写磁头,受位于左上角的机构控制。它可 将磁头从盘片轴心处移至边缘。旋臂和它的运动机构极其轻巧 迅速。一个普通硬盘的旋臂能够每秒从轴心到边缘往返移动多 达50次,真令人叹为观止~ 为了增加信息容量,大多数磁盘都包含多个盘片,这个磁盘包含了三 个盘片和六个读写磁头: 硬盘的旋臂运动机构必须极其迅速而且精确,这可以使用高速线性马 达来建造。 许多硬盘采用“音圈”技术驱动旋臂——相同的技术也用于驱动立体 音响扬声器的锥形振膜。 数据保存于盘片表面的扇区和磁道上。磁道是一些同心圆环,扇区是 磁道上的扇形区段,如下所示: 图中用黄色显示一个典型磁道,用蓝色显示一个典型扇区。一个扇区包含固定数目的字节,如256或512个。无论是在驱动器还是操作系 统级,扇区往往集合在一起形成簇。 驱动器使用低级格式化在盘片上划分磁道和扇区。扇区的开始和结束点被标于盘片上。经过低级格式化过程后,硬盘就可以保存字节块了。高级格式化则向扇区写入文件存储结构,如文件分配表等。经过高级 格式化过程后,硬盘就便可以保存文件了。 检索数据时硬盘驱动器为什么发出摩擦音, 在很多计算机上,假设您执行某个简单操作,如双击电子表格文件的图标,这个简单操作都可能需要20到30秒才能完成。而在此过程中硬盘会一直发出摩擦音,硬盘访问灯不停地闪烁,驱动器可能发出一阵嗡嗡、飕飕或声调较高的嘶嘶声。如果驱动器中的机械装置发出的 声音很大,您就会知道它正在进行操作~ 在硬盘工作原理一文中,我们了解到读写磁头是由一个机械臂控制的。这个机械臂将磁头移到磁盘中心附近或磁盘边缘附近的磁道。普通硬盘的直径约为5英寸(12.5厘米),因此,该机械臂可在盘面 上移动约2英寸(5厘米)。 机械臂的移动速度可达到令人吃惊的程度。机械臂非常轻,它的作动器既有力又精确。如果需要,机械臂每秒可在盘面上滑动几百次。 扬声器的工作原理与此并没有太多差异。扬声器每秒数百次地来回移动一个很轻的锥形振膜,从而产生声音。硬盘机械臂快速地来回移动, 产生振动,在人耳听起来就是声音。 然而,为什么在单击简单的电子表格文件时,磁盘的磁头必须如此频繁地移动呢(有时会进行为时20秒到30秒的移动),引起移动的原 因有以下三个: 要启动Excel等电子表格应用程序,硬盘除了必须加载应用程 序本身,还必须加载很多支持该应用程序的DLL(动态链接库)。 所有这些不同文件的总大小可能达到10至20MB,而这些文件 散布在磁盘各处。加载20MB数据需要花很多时间,并且需要磁 头移动数千次才能检索到所有数据。 数据文件本身也必须加载。操作系统(OS)必须将磁头移到驱 动器的目录以查找文件夹,确保文件名存在,然后找到文件的 位置。之后,OS可能需要读取散布在驱动器各处的很多个磁道 才能访问文件。 如果物理RAM已满,则在加载过程中,OS必须卸载部分物理RAM 的内容并将其保存到磁盘上的分页文件中。因此,OS在试图加 载电子表格应用程序、所有DLL以及数据文件的同时,还要试 图将数兆字节的数据写入分页文件,以便为新打开的应用程序 腾出空间。驱动器磁头要在磁盘上各处移动,才能完成这些同 时进行的任务。有关详细信息,请参阅增加内存(RAM)可以提 高计算机速度吗,。 因此,当人们单击某个图标时,总共会导致40到50MB的数据在驱动器和RAM之间移动,而磁头需要在此过程中重定位数千次。这就是驱 动器发出“摩擦”音的原因——它正忙得不可开交~ 操作系统工作原理 如果您拥有一台计算机,那么您对操作系统一定不陌生。人们购买的任何台式或便携式PC通常都预先安装了Windows XP;Macintosh计算机预先安装的是OS X;许多企业的服务器使用Linux或UNIX操作系统。操作系统(OS)是装入计算机的第一个程序,如果没有操作系 统,计算机将毫无用处。 最近,操作系统也开始出现在更小型的计算机中。如果您平时喜欢摆弄电子设备,会很高兴地发现,如今操作系统可以安装在我们日常使用的很多设备中,从手机到多种无线访问终端。这些小型设备中的计算机的功能非常强大,它们都可以运行操作系统和应用程序。现在的一部普通手机中所包含的计算机功能甚至比20年前台式计算机的功能还要强大。因此这种进步很有意义,也是自然发展不可避免的趋势。在任何一台装有操作系统的设备中,通常都提供了更改该设备工作方式的方法。这绝不是一个幸运的巧合,操作系统之所以采用可移植的 代码,而不采用永久性的物理电路,原因之一就是通过代码对其进行 更改或修改时可避免拆卸整台设备。 获得微软公司许可重新印制的包装盒 2003Microsoft Corporation。保留所有权利。 微软Windows XP操作系统 对于台式计算机用户来说,这意味着在进行更改时只需添加一个新的安全更新、系统补丁、新的应用程序,甚至是整个新的操作系统,而无须淘汰计算机去购买全新的一台。只有在了解操作系统的工作原理并知道如何利用时,您才可以在许多方面对计算机的一些工作方式进行更改。此外,手机中操作系统的工作原理与计算机的实际上没有什 么区别。 操作系统用于组织和控制硬件、软件,从而使安装操作系统的设备以一种灵活但可预期的方式运行。在本文中,我们将讲述必须具备什么功能的软件才称为操作系统,并向您介绍台式计算机中操作系统的工 作原理,以及举例说明如何控制身边的其他操作系统。 并不是所有的计算机都具有操作系统。例如,厨房中控制微波炉的计算机就不需要操作系统。微波炉有一组要执行的任务,用户可直接输入所期望执行的操作(数字按键和一些预设置的按钮),并且它还具有可以控制的简单且无需更改的硬件。对于此类计算机,操作系统反而会成为不必要的负担——它将大幅增加产品的开发和生产成本,而且增添不必要的复杂性。因此,微波炉中装入的计算机只需一直运行 一个简单的固化程序即可。 对于其他设备,操作系统需要具有满足以下条件的功能: 实现多种用途 以更复杂的方式与用户进行交互 满足随时间而改变的需求 并不是所有的计算机都具有操作系统。例如,厨房中控制微波炉的计算机就不需要操作系统。微波炉有一组要执行的任务,用户可直接输入所期望执行的操作(数字按键和一些预设置的按钮),并且它还具有可以控制的简单且无需更改的硬件。对于此类计算机,操作系统反而会成为不必要的负担——它将大幅增加产品的开发和生产成本,而且增添不必要的复杂性。因此,微波炉中装入的计算机只需一直运行 一个简单的固化程序即可。 对于其他设备,操作系统需要具有满足以下条件的功能: 实现多种用途 以更复杂的方式与用户进行交互 满足随时间而改变的需求 并不是所有的计算机都具有操作系统。例如,厨房中控制微波炉的计算机就不需要操作系统。微波炉有一组要 执行的任务,用户可直接输入所期望执行 的操作(数字按键和一些预设置的按钮), 并且它还具有可以控制的简单且无需更改 的硬件。对于此类计算机,操作系统反而 会成为不必要的负担——它将大幅增加产品的开发和生产成本,而且增添不必要的复杂性。因此,微波炉中装入的计算机只需一直运行一个简单的固化程序即可。 对于其他设备,操作系统需要具有满足以下条件的功能: 实现多种用途 以更复杂的方式与用户进行交互 满足随时间而改变的需求 所有的台式计算机都具有操作系统。其中最普遍的是微软开发的Windows操作系统、苹果公司开发的Macintosh操作系统以及UNIX 系列操作系统(由若干开发人员、公司及合作者共同开发)。此外,还有针对特殊应用领域的数以百计的其他操作系统,包括专门用于大 型机、机器人技术、生产制造和实时控制系统等的操作系统。 简单来说,操作系统的功能有两个: 1. 它管理系统的硬件和软件资源。在台式计算机中,这些资源包 括处理器、存储器、磁盘空间等。(在手机中,这些资源则包 括键盘、屏幕、通讯簿、电话拔号器、电池和网络连接。) 2. 在无需了解硬件的所有详细信息情况下,为应用程序提供稳定、 一致的方式来处理硬件。 第一个任务(即管理硬件和软件资源)非常重要,因为多个程序和输入方法会出于自己的目的竞相争夺CPU(中央处理单元)的资源,并且使用内存、存储器及输入/输出带宽。在此功能中,操作系统扮演着出色的指挥者角色,它既要确保每个应用程序都得到所需的资源,又要保证与所有其他应用程序的兼容,同时还要充分利用有限的系统 容量,从而最大程度地满足所有用户和应用程序的需要。 如果有多个特定类型的计算机使用操作系统,或者要更换计算机硬件时,第二项任务(即提供兼容的应用程序接口)就变得格外重要。一致的应用程序接口(API)使软件开发人员在一台计算机上编写应用程序时,有信心保证此应用程序可以在另一台同一类型的计算机上运 行,尽管两台计算机的内存容量或存储器数量各不相同。 即使某种特殊计算机是唯一的,操作系统也可以确保在硬件升级和更新时应用程序得以正常运行。这是因为,操作系统(而不是应用程序)负责管理硬件和分配其资源。开发人员面临的挑战之一是要保证他们的操作系统具有足够的灵活性,从而可以在成千上万的计算机设备供应商所提供的硬件上运行。因为当今的系统可以配置成千上万种不同 种类的打印机、磁盘驱动器以及任何可能组合的特殊外设。 操作系统拥有广泛的系列,根据它们所控制的计算机类型和所支持应 用程序的类型,大致可分为四类。这些广泛的分类包括: 实时操作系统(RTOS)——实时操作系统用于控制机械设备、 科学仪器以及工业系统。由于RTOS在交付使用时采用的是“全 封闭”形式,因此在通常情况下,该系统几乎没有什么用户界 面功能,也没有最终用户实用程序。RTOS的一个重要作用是管 理计算机资源,从而在每次执行某种特定的操作时,都严格使 用相同的时间。在一台复杂的机器中,由于其具备可用系统资 源而使机器的某一部分以更快的速度运行,这将与因系统繁忙 而无法运行一样具有相同的灾难性。 单用户,单任务——顾名思义,该操作系统设计用于管理计算 机,使单个用户每次只能高效地执行一个操作。用于掌上电脑 的Palm OS是现代单用户、单任务操作系统的一个良好示例。 单用户,多任务——这就是目前多数用户在他们的台式计算机 或笔记本电脑中使用的操作系统类型。微软公司的Windows操 作系统和苹果公司的MacOS操作系统平台均为一个用户可以同 时运行多个程序的操作系统的范例。例如,一个Windows用户 一边在文字处理软件上撰写日记,一边从互联网下载文件,同 时还在打印一封电子邮件消息的文本,这是完全可能的。 多用户——多用户操作系统允许多个不同用户同时使用计算机 的资源。操作系统必须确保均衡地满足各个用户的要求,他们 使用的各个程序都具有足够且独立的资源,从而使一个用户的 问题不会影响到整个用户群。Unix、VMS和大型机操作系统(如 MVS)是多用户操作系统的范例。 苹果公司供图 Mac OS X Panther操作系统屏幕截图 区分多用户操作系统和支持网络的单用户操作系统很重要。Windows 2000和Novell Netware均可以支持成千上万的网络用户,但操作系统本身并不是真正的多用户操作系统。系统管理员是Windows 2000 或Netware的唯一“用户”。从操作系统的整体计划来看,网络支持和所有远程用户均可登录到网络,这些都属于由管理员用户运行的程序。在了解了各种不同类型的操作系统后,现在我们将进一步介绍操作系统所提供的基本功能。 操作系统的任务 打开计算机的电源时,通常运行的第一个程序是保存在计算机只读存储器(ROM)中的一组指令。此代码检验系统硬件,从而确保一切运行正常。上电自检(POST)将检测CPU、内存和基本输入输出系统(BIOS) 是否存在错误并将结果存储在某个特殊的内存位置。一旦成功完成POST,载入ROM的软件(有时则称为BIOS或固件)将开始激活计算机的磁盘驱动器。在大多数现代计算机中,当计算机激活硬盘驱动器时,该计算机将运行第一个操作系统:引导装入程序。 这种引导装入程序是具有单一功能的小程序:它将操作系统载入到内存并使之开始运行。引导装入程序通过最基本的形式设置与之交互的小驱动程序,并控制计算机的各个硬件子系统。它设置存放操作系统、用户信息及应用程序的内存分区,也建立装有大量信号、标记和信号量(用于在子系统和计算机应用程序内部及之间通信)的数据结构, 然后再将其对计算机的控制转移给操作系统。 在一般情况下,操作系统的任务基本分为六种类型: 处理器管理 内存管理 设备管理 存储器管理 应用程序接口 用户界面 尽管有人争论操作系统应执行比这六项任务更多的功能,并且确实也有一些操作系统供应商将更多的实用程序及辅助功能集成到他们的操作系统中,但这六项任务几乎涵盖了所有操作系统的核心内容。下 面我们将介绍操作系统执行每项功能所使用的工具。 管理处理器的核心内容可以归结为两个相关问题: 确保每个进程及应用程序得到足够的处理器时间来实现其正常 功能。 实际工作中尽可能使用更多的处理器周期。 在由处理器完成工作的计划中,操作系统处理的软件基本单元为进程 或线程,具体取决于操作系统。 通常,人们倾向于将进程看作是一个应用程序,但这并没有全面给出进程与操作系统和硬件之间的关联。实际上,我们所了解的应用程序(文字处理器、电子数据表或游戏)的确是一个进程,但该应用程序可能会导致几个其他进程开始运行,比如,与其他设备或计算机进行通信的任务。然而,此外还有大量我们察觉不到的运行的进程,因为它们不会提供直观的证据。例如,Windows XP和UNIX可以同时运行十几个后台进程以处理网络、内存管理、磁盘管理和病毒检查等。 因此,进程是执行一些操作的软件,并且可由用户、其他应用程序或 操作系统进行控制。 操作系统控制进程(而不是应用程序),并由CPU安排执行。在单任务系统中,计划表简明易懂,操作系统允许应用程序开始运行,只有 在要处理中断和用户输入时,才会暂停足够长的时间。 中断是由硬件或软件发送给CPU的特殊信号。就好比在某一次现场会议上,计算机的某部分突然举手示意以引起CPU的关注。有时操作系统通过安排进程的优先级,从而使中断被屏蔽——换言之,操作系统将忽略来自于某些源的中断,从而能够尽快完成特定的任务。然而有一些中断(比如出现错误或内存故障)非常重要,因此不能忽略。无论当前正在执行什么其他任务,都必须立即处理这些非屏蔽中断 (NMI)。 尽管在单任务系统中,中断为进程的执行增加了一些复杂性,但操作系统的任务在多任务系统中更为复杂。那么,操作系统必须安排应用程序的执行,从而使人们相信这几件事看上去是同时发生的。因为CPU在某一时间只能做一件事情,这就变得很复杂。为了制造同时做多件事的假象,操作系统必须每秒在不同的进程之间转换数千次。下 面我们来介绍它的过程: 一个进程占用一定量的RAM,同时还会使用CPU和操作系统内 存空间中的寄存器、堆栈和队列。 当两个进程具有多个任务时,操作系统将为一个程序分配一定 数量的CPU执行周期。 在运行该数量的周期后,操作系统将备份该进程所使用的所有 寄存器、堆栈和队列,并标明进程执行中止的位置。 然后加载第二个进程所使用的所有寄存器、堆栈和队列,并允 许它运行一定数量的CPU周期。 当这些步骤完成后,操作系统将备份第二个程序所使用的所有 寄存器、堆栈和队列,然后加载第一个程序。 在将切换数据存储在称为进程控制块的数据包中后,所有信息都将用 于跟踪一个进程。进程控制块通常包括: 可识别进程的识别号码 指向程序中的位置及上次处理处的数据的指针 寄存器内容 各种标记和切换的状态 指向进程所需内存的上界和下界 由进程打开的一系列文件 进程的优先级 进程所需的所有I/O设备的状态 每个进程都具有与之相关联的状态,很多进程在获得某类输入之前不会消耗CPU时间。例如,一个进程可能需要用户按键才会启用,而等待按键时,该进程不消耗任何CPU时间。处于等待状态时,该进程被“中止”;当开始按键时,OS会改变其状态。比如,当该进程的状态发生改变(例如,从等待到活动状态,或从中止状态到运行状态)时,必须像使用任何其他程序中的数据一样使用进程控制块中的信 息,从而直接执行操作系统的任务切换部分。 执行此进程切换无需进行直接的用户干涉,每个进程可以获得足够的CPU周期,从而在适量的时间内完成任务。但是,如果用户试图同时运行太多的进程,那么就会出现问题。操作系统本身需要一些CPU周期来执行应用程序进程中所有寄存器、堆栈和队列的保存及切换。如果启动太多的进程,并且操作系统又没有经过精心设计,系统便可能会占用大多数可用的CPU周期在进程之间进行切换,而不是运行进程。当出现此种情况(称为系统颠簸)时,通常需要某种直接的用户 干涉以停止进程,从而使系统恢复秩序。 操作系统设计人员降低发生系统颠簸几率的一个方法是,减少新进程执行多项任务的需求。一些操作系统允许“小进程”(称为线程),可以处理普通进程的所有CPU密集型任务,但通常不会处理各种类型的I/O,并且也不会创建要求常规进程的大量进程控制块的结构。一个进程可能启用很多线程或其他进程,但线程却不能启动进程。 到目前为止,我们所讨论的所有安排都是关于单个CPU的。在一个具有两个或更多CPU的系统中,操作系统必须在各个CPU之间分配工作量,试图平衡不同CPU可用周期所需进程的需求。不对称的操作系统针对自身需求使用一个CPU,并在剩余的CPU中分配应用程序的进程。对称的操作系统则将自身分配到各个CPU中,即使在只有操作系统本 身运行的情况下,也要平衡需求和CPU可用性。 虽然操作系统是需要执行的唯一软件,但CPU却不是需要安排的唯一 资源。内存管理是确保所有进程平稳运行的下一个关键步骤。 当操作系统管理计算机的内存时,有两个主要任务需要完成: 内存存储器管理 1. 每个进程必须具有足够的内存以执行操作,并且既不可以在其 他进程的内存空间中运行,也不可以让其他进程在这一内存空 间运行。 2. 必须合理使用系统中不同类型的内存,以使每个进程可以高效 运行。 第一项任务需要操作系统为不同类型的软件和单个应用程序设置内 存边界。 当操作系统管理计算机的内存时,有两个主要任务需要完成: 1. 每个进程必须具有足够的内存以执行操作,并且既不可以在其 他进程的内存空间中运行,也不可以让其他进程在这一内存空 间运行。 2. 必须合理使用系统中不同类型的内存,以使每个进程可以高效 运行。 第一项任务需要操作系统为不同类型的软件和单个应用程序设置内 存边界。 我们以一个虚拟的小型系统为例来进行分析,该系统有1兆字节(1,000千字节)的RAM。在启动进程过程中,我们将虚拟计算机的操作系统设计为位于所有可用内存的顶部,然后充分进行“备份”以满足操作系统本身的需求。例如,操作系统运行需要300千字节。那么现在,操作系统进入到RAM池的底部,并使用控制计算机硬件子系统的各驱动程序软件开始创建。在我们虚拟的计算机中,驱动程序占用了200千字节。因此,在将操作系统完全加载后,还有剩余的500 千字节可用于应用程序进程。 当应用程序开始载入内存时,它们以操作系统确定的块大小进行载入。如果块大小为2千字节,那么每个已载入的进程将会获得多个大小为2千字节的内存块。应用程序将会以这些固定的块大小载入,并开始和结束于由4或8个字节的字创建的边界。这些块和边界有助于确保各应用程序不会因为一两个字节的计算误差而载入彼此内存空间的顶部。在确保满足这一条件后,更重要的问题是,当500千字节 的应用程序空间被填满之后应当采取什么措施。 在多数计算机中,可以在原有内存空间的基础上添加内存。例如,您可以将RAM从1兆字节扩展到2兆字节。这是可行的,但通常比较昂贵。此外,这忽视了计算的一个基本现状,即由应用程序存储在内存中的多数信息在给定时间内并不会被使用。处理器一次只能访问处于一个位置的内存,因此大多数的RAM不会在任意时段使用。因为磁盘空间相对于RAM更为充足,所以将RAM中的信息移动到硬盘可以在不 花费任何代价的情况下大大扩展RAM空间,这项技术被称为虚拟内存 管理。 磁盘存储是必须由操作系统管理的唯一一种内存类型,并且也是最慢 的一种类型。按速度排序,计算机系统中的内存类型可分为: 高速缓存——它是通过快速连接,从而使CPU可用的、相对少 量的内存。缓存控制器预先判断CPU下一步将需要哪些数据, 并将这些数据从主内存调入高速缓存,从而提高系统性能。 主内存——这是购买计算机时所能看到的以兆字节为单位的 RAM。 辅助存储器——这就是大多数情况下使所有应用程序和数据可 用的旋转电磁存储,它的作用是充当操作系统控制下的虚拟 RAM。 操作系统必须使用不同类型内存的可用性来平衡各进程的需求,按照进行的指示计划将数据以块(称为页面)的形式在可用内存之间移动。 我们以一个虚拟的小型系统为例来进行分析,该系统有1兆字节(1,000千字节)的RAM。在启动进程过程中,我们将虚拟计算机的操作系统设计为位于所有可用内存的顶部,然后充分进行“备份”以 满足操作系统本身的需求。例如,操作系统运行需要300千字节。那么现在,操作系统进入到RAM池的底部,并使用控制计算机硬件子系统的各驱动程序软件开始创建。在我们虚拟的计算机中,驱动程序占用了200千字节。因此,在将操作系统完全加载后,还有剩余的500 千字节可用于应用程序进程。 当应用程序开始载入内存时,它们以操作系统确定的块大小进行载入。如果块大小为2千字节,那么每个已载入的进程将会获得多个大小为2千字节的内存块。应用程序将会以这些固定的块大小载入,并开始和结束于由4或8个字节的字创建的边界。这些块和边界有助于确保各应用程序不会因为一两个字节的计算误差而载入彼此内存空间的顶部。在确保满足这一条件后,更重要的问题是,当500千字节 的应用程序空间被填满之后应当采取什么措施。 在多数计算机中,可以在原有内存空间的基础上添加内存。例如,您可以将RAM从1兆字节扩展到2兆字节。这是可行的,但通常比较昂贵。此外,这忽视了计算的一个基本现状,即由应用程序存储在内存中的多数信息在给定时间内并不会被使用。处理器一次只能访问处于一个位置的内存,因此大多数的RAM不会在任意时段使用。因为磁盘空间相对于RAM更为充足,所以将RAM中的信息移动到硬盘可以在不花费任何代价的情况下大大扩展RAM空间,这项技术被称为虚拟内存 管理。 磁盘存储是必须由操作系统管理的唯一一种内存类型,并且也是最慢 的一种类型。按速度排序,计算机系统中的内存类型可分为: 高速缓存——它是通过快速连接,从而使CPU可用的、相对少 量的内存。缓存控制器预先判断CPU下一步将需要哪些数据, 并将这些数据从主内存调入高速缓存,从而提高系统性能。 主内存——这是购买计算机时所能看到的以兆字节为单位的 RAM。 辅助存储器——这就是大多数情况下使所有应用程序和数据可 用的旋转电磁存储,它的作用是充当操作系统控制下的虚拟 RAM。 操作系统必须使用不同类型内存的可用性来平衡各进程的需求,按照进行的指示计划将数据以块(称为页面)的形式在可用内存之间移动。 操作系统和所有不位于计算机主板上的硬件是通过一种称为驱动程序的特殊程序进行通信的。驱动程序的主要作用是充当硬件子系统的电子信号、操作系统及应用程序的高级编程语言之间的转换器。驱动程序将操作系统已定义的数据视为文件,然后将它们转换成存储设备 上特定位置处的比特流,或打印机中的一系列激光脉冲。 因为在由驱动程序控制的硬件之间存在着很大的差异,因此驱动程序运行的方式也存在差异,但大多数驱动程序都会根据设备的要求运行,并且运行方式也与任何其他进程类似。操作系统频繁地将拥有较 高优先级的块分配给驱动程序,以使硬件资源尽可能快地得到释放并 准备进一步使用。 驱动程序与操作系统之所以分开,其中一个原因是为了将新增功能添加到驱动程序(从而添加到硬件子系统),而无需对操作系统本身进行修改、重新编译以及重新分配。通过开发新的硬件设备驱动程序,通常由子系统的制造商执行开发或付费,而不是操作系统的发行商, 整个系统的输入/输出功能将得到大幅度提高。 管理输入和输出很大程度上是管理队列和缓冲器,从某一设备接收字节流的特殊存储设备(可能是键盘或串行端口)将存储这些字节,再将其以CPU可以处理的足够慢的速度释放到CPU。当大量进程同时运行并占用处理器时间时,这个功能尤其的重要。该操作系统将对缓冲器发出指令,使之可以继续接收该设备的输入,但当使用该输入的进程处于中止状态时,操作系统会停止向CPU发送数据。那么,当需要输入的进程再一次激活时,操作系统将会命令缓冲器发送数据。该进程允许使用键盘或调制解调器处理外部用户或高速运行的计算机的 需求,尽管有时CPU不能使用那些来源的输入。 管理计算机系统的所有资源是操作系统的主要功能,对于实时操作系统,可能需要所有的功能。但是对于其他操作系统,为应用程序提供相对简单、一致的方式以及人们使用功能强大的硬件是它们存在的一 个重要原因。 应用程序接口 正如驱动程序为应用程序提供了一种无需了解硬件运行的每个细节即可使用硬件子系统的方法,应用程序接口(API)使每位应用程序员可以使用计算机和操作系统的功能,而无需直接跟踪CPU运行的所有细节。让我们看一个有关创建保存数据的硬盘文件的例子,以了解 它的重要性。 一位正在编写一个从科学仪器记录数据应用程序的程序员,可能希望科学家能够指定所创建文件的名称。操作系统可能提供一种称为MakeFile的API功能来创建文件。当编写该程序时,该程序员可能 会插入一行,如: MakeFile [1, %Name, 2] 在此示例中,该指令告诉操作系统创建一个允许随机访问其数据的文件(以1表示,对于序列文件中的其他选项可以用0表示),将由用户(%Name)键入名称,并且其大小取决于存储在该文件中的数据多少(以2表示,其他选项中的固定大小可能用0表示,并且用1表示文件在添加数据时变大,但在数据删除时却不会减小)。现在,让我 们了解一下操作系统如何将指令转换成操作。 操作系统向磁盘驱动器发送请求,以确定第一个可用空白存储空间的 位置。 使用该信息,操作系统在文件系统中创建一个项以显示文件的起始与结束位置、文件名、文件类型、文件是否归档、哪些用户具有查看或 修改文件的权限,以及文件的创建日期和时间。 操作系统在标识文件的起始位置编写信息,设置可能的访问类型,并包含将文件捆绑到应用程序的其他信息。在所有信息中,发送到磁盘驱动器的请求和文件起始与结束点的地址在格式方面很大程度上取 决于制造商和磁盘驱动器的型号。 由于程序员编写了程序来使用磁盘存储的API,因此程序员不需要跟踪指令代码、数据类型以及每个可能的硬盘和磁带驱动器的响应代码。与各硬件子系统的驱动程序相关联的操作系统,可以处理硬件更改的细节——程序员必须简单编写API的代码并相信操作系统可以 完成剩下的任务。 近年来,API已成为计算机行业竞争最为激烈的领域之一。很多公司认识到,使用API的程序员会最终将其转换成一种控制并从该行业的某一特定领域获利的能力。这就是为什么目前有这么多的公司愿意为公众免费提供阅读器和查看器之类的应用程序的原因之一。他们了解消费者将会要求这类程序可以利用免费的阅读器,而应用程序公司就准备要求支付使用费才可以使用提供消费者要求的各种功能的软件。 用户界面 正如API为应用程序提供了可以一直使用计算机系统资源的方法,用户界面(UI)则提供了一个用户与计算机进行交互的结构。在过去十年中,几乎所有用户界面的发展都出现在图形用户界面(GUI)领域。苹果公司的Macintosh和微软公司的Windows都引起了众多关注并占领了多数市场份额。广受欢迎的开源软件技术Linux操作系统也支持 图形用户界面功能。 Screen shot copyright 2003 Red Hat, Inc. 保留所有权利。 获得Red Hat, Inc.许可,重新印刷 Red Hat Linux操作系统的屏幕截图 还有用于其他操作系统的其他用户界面,有些是图形界面,有些则不 是。 例如,Unix具有称为外壳的用户界面,相对于标准操作系统基于文本的界面,该用户界面具有更大的灵活性以及更强大的功能。诸如Korn外壳和C外壳的程序是添加了重要实用程序的基于文本的界面, 但它们的主要目的是使用户可以更轻松地利用操作系统的功能。也有一些图形用户界面,如X-Windows和Gnome,可以使Unix和Linux 操作起来更像是Windows和Macintosh计算机。 在所有这些示例中,用户界面作为一个层面是位于操作系统本身之上的程序或程序集,记住这一点很重要。对于具备不同机制的Windows和Macintosh操作系统而言,原理也是一样的。核心操作系统工作功能,即计算机系统的管理,在于操作系统的内核。尽管显示管理器与位于下方的内核紧密相连,但它是独立的。操作系统内核和用户界面、实用程序以及其他软件之间的联系决定了当今操作系统的很多差异, 并且将会在未来进一步影响它们。 操作系统新增功能 日益增长的网络的重要性 对于桌面系统而言,访问局域网或互联网已经成为一种必备的功能,从而在很多方面只要谈及操作系统,就不能不说它与其他计算机和服务器的连接。操作系统开发人员已经使互联网成为能够提供重要操作系统更新和错误修复的标准方法。尽管可以通过CD接受这些更新,但使用这种方式的人越来越少。事实上,一些完整的操作系统本身只 能通过互联网发布来获得。 其次,一种称为NetBooting的进程可以很轻松地将普通消费者的台式计算机中正在运行的操作系统(内核、用户界面及所有其他内容) 从它所控制的计算机上移除。而这在先前只有那些多用户平台(如UNIX)上经验丰富的超级用户以及使用特殊应用程序套件才可以实现。NetBooting允许一台计算机的操作系统通过网络中所连接任意位置的一台远程计算机服务于整个网络连接。一台NetBoot服务器可以同时为几十台客户端计算机和每台客户端计算机的用户提供操作系统,使用户得到类似于使用他们熟知的桌面操作系统(如Windows 或MacOS)的体验。 开源软件技术 有关软件分发的特殊理念是操作系统未来发展所需关注的一个问题,即开发一种同时适用于公司和消费者的操 作系统。 大家普遍认为Linux作为一种根据开源软 件技术的原则创建和分发的操作系统,已经 对操作系统产生了较大的影响。大多数操作 系统、驱动程序和实用程序由分发其软件可 执行版本(这些版本不可以研究或更改)的 商业组织编写。开源软件技术需要分发可以拉里?厄文供图 Linux徽标 研究、更改以及在其基础上创建的原始源材 料,并且其结果也可再次自由分发。在台式计算机领域内,这将导致无数有用的和无成本的应用程序(如图像操作程序GIMP和广受欢迎的网络服务器Apache)的开发及分发。在消费者设备领域,Linux的 使用已经在更大程度上为个人用户控制其设备的工作方式铺平了道 路。 了解操作系统 许多消费电子设备(如手机和路由器)都有意避免用户访问其中的操作系统,很大程度上是为了确保操作系统不会在无意中被破坏或删除。在许多情况下,他们保留了一种“开发人员模式”或“程序员模式”,这允许具有相应知识的用户可以进行更改。通常这些系统的编程方式是使之可以在仅有的范围内进行更改。但有些设备保留访问模式以及进行增强功能的更改方式都是开放的,特别是在使用Linux时 较为常见。下面介绍几个例子: TiVo DVR运行在Linux的修改版本上。所有的修改都是公开的, 您可以在此处下载它们,以及用于操作代码的一些特殊工具。 很多大胆的TiVo用户也是那样做的,他们为自己的系统上添加 了很多功能,包括增大存储容量,进入到UNIX外壳将模式从 NTSC更改为PAL。 Amazon.com供图 Philips HDR312 TiVo30小时数码录像机和Linksys EZXS55W EtherFast 10/100 5端口工作组交换机 很多家庭路由器也使用Linux,包括Linksys公司的路由器。 本文由G4TechTV提供,其中将讨论如何改编您的Linksys路由 器以及控制其中的Linux。 微处理器工作原理 您在浏览本页面时使用的计算机便通过微处理器来完成其工作。微处理器是所有标准计算机的心脏,无论该计算机是桌面计算机、服务器还是笔记本电脑。您正在使用的微处理器可能是奔腾、K6、PowerPC、Sparc或者其他任何品牌和类型的微处理器,但是它们的作用大体相 同,工作方式也基本类似。 如果您曾经疑惑计算机中的微处理器是干什么用的,或者对各种类型的微处理器之间的差异感到迷惑,请继续阅读下面的内容。在本文中,您将了解到简简单单的数字逻辑电路技术如何让计算机完成诸如玩 游戏或是对文档进行拼写检查的工作。 微处理器(又称为CPU或中央处理单元)是装配 在单颗芯片上的一个完整的计算引擎。第一颗微 处理器是1971年问世的Intel 4004。4004的能 Intel4004芯片 力不算强大_它只能执行加减运算,而且每次只能 对4位的数据进行运算。但是它是一个很奇妙的产品,因为所有东西都集成在一颗芯片中。在4004出现之前,工程师们要么使用一堆芯片来制造计算机,要么使用零散部件来搭建出计算机(一次连接一个 晶体管)。4004曾被用来生产第一款便携式电子计算器。 使计算机进入寻常百姓家的第一款微处理器是 Intel 8080,它是一个完整的8位计算机芯片, 于1974年问世。而迅速在市场中走红的第一款微 处理器则是1979年推出的Intel 8088,大概在Intel8080 1982年左右面世的IBM PC便使用了此微处理器。 如果您熟悉PC市场及其历史,便会知道PC市场经历了从8088到80286、80386、80486,再到奔腾、奔腾II、奔腾III乃至奔腾4的发展过程。所有这些微处理器都是由英特尔制造的,而且都是对8088基本设计的改进。奔腾4可以执行最初的8088所能运行的所有代码, 但是它的速度是8088的5000倍。 微处理器的发展过程:Intel 下表可帮助您了解 Intel 在不同时间推出的不同处理器之间的差 异。 微时钟频数据宽名称 日期 晶体管数量 MIPS 米 率 度 8080 1974 6,000 6 2 MHz 8位 0.64 16位 8088 1979 29,000 3 5 MHz 8 位总0.33 线 80286 1982 134,000 1.5 6 MHz 16位 1 80386 1985 275,000 1.5 16 MHz 32位 5 80486 1989 1,200,000 1 25 MHz 32位 20 32位 奔腾 1993 3,100,000 0.8 60 MHz 64位总100 线 32位 233 奔腾 II 1997 7,500,000 0.35 64位总~300 MHz 线 32位 450 奔腾 III 1999 9,500,000 0.25 64位总~510 MHz 线 32位 1.5 奔腾 4 2000 42,000,000 0.18 64位总~1,700 GHz 线 32 位 3.6 奔腾 4“Prescott” 2004 125,000,000 0.09 64 位总~7,000 GHz 线 数据来自Intel微处理器快速参考指南和TSCP基准测试成绩 与此表有关的信息: 什么是芯片, 芯片又称集成电路。通常,它是一个很小、很薄的硅片,上面蚀刻 有组成微处理器的晶体管。芯片可能只有2.5厘米见方大小,但是却 包含几千万个晶体管。较简单的处理器可能在几毫米见方的芯片上 刻有几千个晶体管。 日期是该款处理器首次推出的年份。许多处理器会在首次发布 之后在多年中不断推出具有更高时钟频率的型号。 晶体管数量是指芯片上晶体管的数量。可以看到,芯片上包含 的晶体管数量在逐年稳步上升。 微米是指芯片上最细的电路的宽度(单位为微米)。可以用人的头发做个比较,头发的宽度为100微米。随着芯片外形尺寸 不断缩小,晶体管数量却在不断增加。 时钟频率是指芯片的最大时钟速度。我们将在下一节中详细介 绍时钟频率。 数据宽度是指 ALU的宽度。8位的ALU可以对两个8位(8比 特)数字进行加减乘除运算,而32位的ALU可以计算32位的 数字。8位ALU如果要对两个 32位数字进行加法操作,必须执 行四条相加指令,而32位ALU则只需要执行一条指令。很多情 况下,外部数据总线的宽度与ALU相同,但也有不同的情况。 8088的ALU为16位,而总线为8位,而现代的奔腾处理器的 数据总线宽度为64位,ALU为32位。 MIPS代表“每秒百万条指令”,是衡量CPU性能的粗略标准。 对于现代 CPU的许多工作,MIPS指标在很大程度上已经失去了 意义,但是您可以将它作为一个大致的量度,根据本栏中的数 据来了解CPU的性能强弱。 从本表中可以看到,总体来说,时钟频率和MIPS之间存在一定关系。最大时钟频率与制造工艺和芯片内的延迟密切相关。此外,在晶体管数量和MIPS之间也存在一定联系。例如,8088的时钟频率为5MHz,但是只能以0.33MIPS的速度执行指令(大约每15个周期执行1条指令)。现代的处理器经常可以在每个时钟周期内执行两条指令。这种能力改进与晶体管的数量有直接关系,我们将在下一节中对此加以讨论。 为了理解微处理器的工作原理,首先看看它的内部结构和了解其工作逻辑会很有帮助。在这个过程中,您还可以了解到汇编语言——微处理器的固有语言——以及工程师们为了提高处理器速度所做的大量 工作。 微处理器执行一组机器指令,这组指令可向处理器告知应执行哪些操 作。微处理器就会根据指令执行三种基本工作: 通过使用ALU(算术/逻辑单元),微处理器可以执行数学计算。 例如:加法、减法、乘法和除法。现代的微处理器包含完整的 浮点处理器,它可以对很大的浮点数执行非常复杂的浮点运算。 微处理器可以将数据从一个内存位置移动到另一个位置。 微处理器可以做出决定,并根据这些决定跳转到一组新指令。 微处理器能够执行许多非常复杂的工作,但是所有工作都属于这三种基本操作的范畴。下图显示了一个能够执行上述三种操作的非常简单 的微处理器: 这是一个进行了最大程度简化的微处理器。此微处理器具有: 一条地址总线(总线宽度可以8位、16位或32位),用于向 内存发送一个地址 一条数据总线(总线宽度可以是8位、16位或32位),能够 将数据发送到内存或从内存取得数据 一条RD(读)和WR(写)线路,告诉内存它是希望写入某个地 址位置还是获得某个地址位置的内容 一条时钟线路,将时钟脉冲序列发送到处理器 复位线路,用于将程序计数器重置为零(或者其他内容)并重 新开始执行 在本例中,我们假定地址和数据总线的宽度都是8位的。 以下是这个简单的微处理器的各个组成部分: 寄存器A、B和C就是一些用触发器制造的锁存器。(有关详细信息,请参见布尔逻辑的应用一文的“边缘触发锁存器”部分。) 地址锁存器与寄存器A、B和C极其类似。 程序计数器也是一个锁存器,但是它有一种额外的能力,也就是能够在执行每条语句后将计数器加一,并在被告知应进行重 置时将计数器重置为零。 ALU可以像一个8位加法器一样简单(有关详细信息,请参见布尔逻辑的应用一文中有关加法器的部分),也可以较为复杂,能够对8位的值进行加法、减法、乘法和除法运算。我们假定 是后面一种加法器。 测试寄存器是一种特殊的锁存器,可以存放在ALU中执行的比较运算的结果。ALU通常可以比较两个数字,并确定它们是否相等以及其中一个数字是否大于另一个数字等。测试寄存器通常还可以保存加法器上一次计算产生的进位。它将这些值存放 在触发器中,随后指令解码器可以使用这些值做出决定。 图中有六个标记有“3-State”(三态)的方框。它们是三态缓冲区。三态缓冲区可以输出1、0或者彻底断开其输出(可以将其想像为一个将输出线从电路中彻底断开的开关)。三态缓冲区能够将多种输出连接到电路中,但是线路上的某一个输出实 际上代表的是1或0。 指令寄存器和指令解码器负责控制所 有其他组件。 有用的文章 如果您不熟悉数字逻辑电路,以虽然没有显示在此图中,但实际上存在一些下文章可以帮您理解这部分内 容: 来自指令解码器的控制线,它们的作用是: , 位和字节 A寄存器锁存当前在数据总线上, 布尔逻辑的应用 传递的值 , 电子门工作原理 通知B寄存器锁存当前在数据总线上 传递的值 通知C寄存器锁存当前由ALU输出的值 通知程序计数器寄存器锁存当前在数据总线上传递的值 通知地址寄存器锁存当前在数据总线上传递的值 通知指令寄存器锁存当前在数据总线上传递的值 通知程序计数器进行递增 通知程序计数器重置为零 激活所有六个三态缓冲区(六条单独的线路) 通知ALU要执行的操作 通知测试寄存器锁存ALU的测试位 激活RD线路 激活WR线路 来自测试寄存器和时钟线路(以及指令寄存器)的数据位会进入到指 令解码器中。 RAM和ROM 上一节中我们讨论了地址和数据总线,以及RD和WR线路。这些总线和线路连接到RAM或ROM——通常是同时连接到二者。在我们作为例子的微处理器中,有一个宽度为8位的地址总线和一个宽度为8位的 8数据总线。也就是说,该微处理器可以寻址(2) 256个字节的内存空间,并且可以向内存读取或写入8位的数据。我们假定这个简单的微处理器有128字节的ROM,其地址从0开始,此外还有128字节的RAM, 其地址从128开始。 ROM芯片 ROM代表只读内存。ROM芯片使用永久性的预设字节进行了编程。地址总线通知ROM芯片应取出哪些字节并将它们放在数据总线上。当RD线的状态更改后,ROM芯片会将选择的字 节放在数据总线上。 RAM代表随机存取内存。它包含多个字节的 信息,微处理器可以读取或写入这些字节, 而具体操作取决于信号是由RD线路给出的 RAM芯片 还是 WR 线路给出的。RAM 芯片的一个缺点 是,在电源中断后,保存的所有信息都会消失。这也就是为何计算机 需要使用 ROM 的原因。 顺便说一下,几乎所有计算机都包含一定数量的 ROM(可以制造出不包括任何RAM的简单计算机——许多微控制器便做到了这一点,方法是将少量的RAM字节放在处理器芯片自身中——但是,通常不可能制造出不包含任何ROM的计算机)。在PC中,ROM称作BIOS(基本输 入输出系统)。在微处理器启动时,它开始执行在BIOS中找到的指令。BIOS指令会执行对计算机中的硬件进行测试这样的工作,然后访问硬盘以读取启动扇区(有关详细信息,请参见硬盘工作原理)。该启动扇区是另一个小型程序,在将其从磁盘中读出后,BIOS将它存储在RAM中。然后,微处理器开始从 RAM中执行启动扇区的指令。启动扇区程序会通知微处理器将其余指令从硬盘读入RAM,微处理器随后又会执行这些指令,以此类推。这就是微处理器加载和执行整个操作系统的过程。 微处理器指令 虽然前面例子中的微处理器非常简单,但是它仍然可以执行相当多的指令。指令集通过位模式的方式实现,每一个位模式在加载到指令寄存器中后都有不同的含义。由于人们不能很好记住这些位模式,所以定义了一些简短的单词来表示不同的位模式。这些单词的集合称作处理器的汇编语言。汇编程序可以将这些单词轻松翻译成它们的位模 式,然后会将汇编程序的输出放在内存中供处理器执行。 以下是设计人员可以为例子中的微处理器建立的一组汇编语言指令: LOADA mem——将某个内存地址的数据加载到寄存器A中 LOADB mem——将某个内存地址的数据加载到寄存器B中 CONB con——将一个常量值加载到寄存器B中 SAVEB mem——将寄存器B的内容保存到某个内存地址 SAVEC mem——将寄存器C的内容保存到某个内存地址 ADD——将A和B相加并将结果保存在C中 SUB——将A和B相减并将结果保存在C中 MUL——将A和B相乘并将结果保存在C中 DIV——将A和B相除并将结果保存在C中 COM——将A和B进行比较并将结果保存在测试寄存器中 JUMP addr——跳转到某个地址 JEQ addr——如果相等则跳转到某个地址 JNEQ addr——如果不相等则跳转到某个地址 JG addr——如果大于则跳转到某个地址 JGE addr——如果大于或等于则跳转到某个地址 JL addr——如果小于则跳转到某个地址 JLE addr——如果小于或等于则跳转到某个地址 STOP——停止执行 如果你读过C语言入门教程一文,那么会知道下面这段简单的C代码可计算5的阶乘(5的阶乘=5!=5X4X3X2X1=120): a=1; f=1; while (a<=5) { f=f*a; a=a+1; } 在程序执行末尾,变量f中包含了5的阶乘。 汇编语言 C编译器可将这段C代码编译为汇编语言。假定此处理器中RAM的地 址从128开始,而ROM(包含汇编语言程序)的地址从0开始,那么 对于我们这个简单的微处理器来说,该汇编语言看起来如下所示: // 假定a位于地址128处 // 假定F位于地址129处 0 CONB 1 // a=1; 1 SAVEB 128 2 CONB 1 // f=1; 3 SAVEB 129 4 LOADA 128 // 如果a>5,则跳转到17 5 CONB 5 6 COM 7 JG 17 8 LOADA 129 // f=f*a; 9 LOADB 128 10 MUL 11 SAVEC 129 12 LOADA 128 // a=a+1; 13 CONB 1 14 ADD 15 SAVEC 128 16 JUMP 4 // 进行循环,返回到比较部分 17 STOP ROM 那么,现在的问题是:所有这些指令在ROM中是什么样的,所有这些 汇编语言指令必须以二进制数字的形式表示。为了简单起见,我们假 定每条汇编语言指令具有一个唯一的编号,如下所示: LOADA-1 LOADB-2 CONB-3 SAVEB-4 SAVEC mem-5 ADD -6 SUB -7 MUL -8 DIV -9 COM -10 JUMP addr -11 JEQ addr -12 JNEQ addr -13 JG addr -14 JGE addr -15 JL addr -16 JLE addr -17 STOP -18 这些数字称作opcode(优化代码)。在ROM中,我们的小程序看起来如下所示: // 假定a位于地址128处 // 假定F位于地址129处 地址 opcode/值 0 3 // CONB 1 1 1 2 4 // SAVEB 128 3 128 4 3 // CONB 1 5 1 6 4 // SAVEB 129 7 129 8 1 // LOADA 128 9 128 10 3 // CONB 5 11 5 12 10 // COM 13 14 // JG 17 14 31 15 1 // LOADA 129 16 129 17 2 // LOADB 128 18 128 19 8 // MUL 20 5 // SAVEC 129 21 129 22 1 // LOADA 128 23 128 24 3 // CONB 1 25 1 26 6 // ADD 27 5 // SAVEC 128 28 128 29 11 // JUMP 4 30 8 31 18 // STOP 您可以看到,七行C代码变成了18行汇编语言,并且变成了ROM中 的32个字节。 解码 指令解码器需要将每个opcode转变为一组能够驱动微处理器内部各 个部件的信号。让我们以ADD指令为例,看看解码器都执行了哪些工 作: 1. 在第一个时钟周期,我们需要实际载入该指令。因此,指令解 码器需要: , 激活程序计数器的三态缓冲区 , 激活RD线路 , 激活data-in(读入数据)三态缓冲区 , 将指令锁存在指令寄存器中 2. 在第二个时钟周期中,对ADD指令进行解码。需要做的工作很 少: , 将ALU的操作设置为加法 , 将ALU的输出锁存到C寄存器中 3. 在第三个时钟周期中,程序计数器会进行递增(理论上这个过 程与第二个时钟周期是重叠进行的)。 所有指令都会像这样分解成一组有序操作,按照正确的顺序操作微处理器的各个组件。有些指令(例如这条ADD指令)需要2或3个时钟周期即可完成。而其他指令则可能需要5或6个时钟周期才能完成。 可用晶体管的数量对处理器性能有巨大影响。如上所述,在8088这样的处理器中,通常要花费15个时钟周期才能执行一条指令。由于乘法器的设计方式,在 8088上进行16位的乘法运算大约需要80个时钟周期。而晶体管越多,就越有可能在一个周期中执行更多的乘法 运算。 晶体管数量的增多还使我们能够使用一种称为流水线的技术。在流水线式的体系结构中,指令的执行过程是相互重叠的。所以,虽然需要花费5个时钟周期来执行每条指令,但是可以同时执行5条指令的各个阶段。这样,表面看起来在每个时钟周期内即可执行完一条指令。 许多现代的处理器具有多个指令解码器,每一个都有自己的流水线。这样便存在多个指令流,也就是说每个时钟周期可以完成多条指令。但是这种技术实现起来非常复杂,因此需要使用大量的晶体管。 发展趋势 处理器设计的发展趋势主要是:完全32位的ALU(内置快速浮点处理器)和多指令流的流水线式执行方式。处理器设计的最新进展是64位ALU,预计在下一个十年中家用PC就会用上这种处理器。此外,还存在为处理器添加可高效执行某些操作的特殊指令(例如MMX指令)的趋势,以及在处理器芯片中增加硬件虚拟内存支持和L1缓存的趋势。所有这些趋势都进一步增加了晶体管的数量,导致现在的处理器包含数千万个晶体管。而这些处理器每秒大约可以执行十亿条指 令~ 64位处理器 64位处理器在1992年就已经开发成功,预计它们在21世纪将逐步成为主流产品。I英特尔和AMD都开发出了64位芯片,Mac G5也是 一款64位处理器产品。64位处理器具有64位ALU、64位寄存器、 64位总线等等。 AMD供图 人们需要64位处理器的原因之一是它们具有更大的地址空间。32位芯片通常只能访问最大2GB或4GB的RAM空间。这听起来似乎是一个很大的空间,是因为当前的大多数家用计算机只配备了256MB到512MB的RAM。但是,对于服务器和运行大型数据库的计算机来说,4GB的内存空间限制是一个严重问题。而且,即使是家用计算机,如果按照当前趋势继续发展,也很快会遇到2GB或4GB限制这个问题。64位芯片则不存在上述限制,因为在可以预见的未来,64位RAM地址空间都可以说是一个无限大的地址空间——2^64字节的RAM大概 相当于十亿吉字节的 RAM。 凭借64位地址总线以及主板上宽阔的高速数据总线,64位计算机还可以为硬盘驱动器和显卡这样的设备提供更快的I/O(输入/输出) 速度。这些特点可极大地提升系统的性能。 服务器肯定会受益于64位技术,但是它对于普通用户有何意义呢,除了解除RAM限制之外,目前我们还不是很清楚64位芯片能够为普通用户提供那些切实的好处。但是它们可以更快地处理数据(能够计算很复杂的实数)。进行视频编辑和处理超大图像的人会受益于这种强大的计算能力。高端游戏也会从中受益,但是需要对它们进行重新编码以利用64位技术。而阅读电子邮件、浏览网络和编辑Word文档的人实际则不需要使用这种处理器。 字节:ASCII码 字节经常用于存放文本文件中的各个字符。在ASCII字符集中,每个介于0到127之间的二进制值均表示一个特定的字符。大多数计算机都扩展了ASCII字符集以使用一个字节所能表示的所有256个字符。上部的128个字符负责处理特殊项,如来自常见外国语言的重音符。 您可以看到以下的127个标准ASCII编码。计算机使用这些编码在磁盘和内存中存储文本文件。例如,如果您在Windows 95/98中使用记事本创建一个包含“Four score and seven years ago”这些单词的文本文件,记事本将为每个字符使用1个字节的内存(包括为单词之间的每个空格使用1个字节,对应的ASCII字符为32)。当记事本 将该句子保存在磁盘上的文件中时,文件中的每个字符和每个空格也 会占用1个字节的空间。 请做一下下面这个试验:在记事本中打开一个新文件并输入“Four score and seven years ago”这个句子。将文件以getty.txt的名称保存到磁盘中。然后使用资源管理器查看文件大小。您将发现磁盘上的文件大小为30字节:每个字符1个字节。如果您在句子结尾又加了一个单词并重新保存该文件,文件大小将变为相应的字节数。每 个字符都占用一个字节。 如果您用计算机方式来看待文件,您会发现每个字节包含的不是一个字母,而是一个数字——该数字就是与字符对应的ASCII码(参见下 文)。因此在磁盘中,文件中的各个数字显示如下: F o u r a n d s e v e n 70 111 117 114 32 97 110 100 32 115 101 118 101 110 通过查找ASCII表,您可以看到每个字符和ASCII码之间的一一对应关系。请注意,空格对应的数字为32——32是空格的ASCII码。从技术角度来说,正确的表示方式应该是将这些十进制数展开为二进制数(因此32=00100000)——计算机实际上处理的是这种形式的内容。 布尔逻辑的应用 您是否曾想过计算机是如何完成像支票簿核算、下棋或文档拼写检查那样的工作的,仅仅在几十年之前,这些事情只有人类才可以完成, 而现在计算机便可以轻轻松松地完成这些任务。令人好奇的是,由硅和导线制成的“芯片”究竟是如何完成看起来需要人类思维才能完成 的工作的, 如果您希望从本质上深入了解这一问题的答案,首先需要了解布尔逻辑的概念。布尔逻辑最初是由乔治?布尔于19世纪中叶提出的,它可将许多意想不到的事情映射为位和字节。有关布尔逻辑最重要一点是,一旦您真正掌握了它,就会觉得布尔逻辑(或者理解计算机工作方式所需的最基本的知识)相当简单。在本篇文章中,我们将首先讨论一些简单的逻辑“门电路”,然后了解如何将这些门电路进行组合 以实现一些有用的元件。 简单的门电路 您需要了解三种、五种或七种简单的门电路,具体取决于您要采用的门电路种类计算方式(很快您就会知道原因)。您可以对这些简单的门电路进行组合,以实现任何想要的数字元件。这些门电路看起来有些枯燥,并且极其简单,但在下面几节中我们将看到一些有趣的组合,这些将使你感到兴奋。如果您还不了解位和字节的概念,请在继续之 前阅读位和字节,这将会很有帮助~ 最简单的门电路称为“反相器”,也叫做非门。这种门电路的输入为0或1,而输出则为其反相即1或0。下表显示了非门的逻辑表以及 在电路图中用来表示非门的标准符号: 非门 A Q 0 1 1 0 可以在该图中看到非门有一个称为A的输入端和一个称为Q(用“Q”表示输出是因为如果使用了“O”,会很容易与0混淆)的输出端。该表显示了非门的工作方式,并且原理非常简单:将0应用于A时, Q会产生1;将1应用于A,则Q会产生0。 与门对两个输入A和B执行逻辑“与”运算: 与门 A B Q 0 0 0 0 1 0 1 0 0 1 1 1 与门的工作原理是”如果A和B都为1,则Q应该为1。“您可以在 与门的逻辑表中查看其工作方式。逐行阅读该表,如下所示: 与门 A B Q 0 0 0 如果 A和B均为0,则Q也为0。 0 1 0 如果 A为0,且B为1,则Q为0。 1 0 0 如果 A为1,且B为0,则Q为0。 1 1 1 如果 A和B均为1,则Q为1。 下一种门电路是或门。其基本工作原理是“如果A为1,或B为1(或 两者都为1),则Q为1。” 或门 A B Q 0 0 0 0 1 1 1 0 1 1 1 1 以上为三种基本的门电路(此为门电路种类的一种计算方法)。通常还需知道其他两种门电路:与非门和或非门。这两种门电路不过是与门或者或门与非门的组合。如果将这两种门电路包括在内,则门电路将增加到5 种。以下是与非门和或非门的基本工作方式——您会发 现它们不过是与门和或门的相反状态: 或非门 A B Q 0 0 1 0 1 0 1 0 0 1 1 0 与非门 A B Q 0 0 1 0 1 1 1 0 1 1 1 0 有时还会将另外两种门电路——异或门和异或非门——包括在门电 路种类中,以下是这两种门电路的逻辑表: 异或门 A B Q 0 0 0 0 1 1 1 0 1 1 1 0 异或非门 A B Q 0 0 1 0 1 0 1 0 0 1 1 1 异或门的工作原理是:如果A或B为1,但不是两者都为1,则Q为1。门电路种类中不包括异或门的原因是您可以使用先前列出的三种 原始的门电路来实现异或门。下面提供了一种实现方法: 如果尝试A和B的所有四种不同输入模式并跟踪相关电路,您会发现Q的工作方式类似于异或门。由于异或门的符号很容易理解,因此通常将异或门视为“标准门电路”,并且在电路图中像使用与门和或门 一样来使用该门电路会更为简单。 简单的加法器 在位和字节一文中,您已经了解了二进制加法。本节中,您将了解如何使用上一节介绍的门电路来创建能够执行二进制加法的电路。 让我们先了解一下一位加法器。假定您现在需要将一位数加在一起并算出答案,为此开始设计电路时所采用的方式是首先查看所有逻辑组 合。您可以查看以下四组数的求和: 0 0 1 1 + 0 + 1 + 0 + 1 0 1 1 10 在您遇到1+1之前,一切情况都很正常。在1+1的情况下,您需要考虑比较麻烦的进位问题。如果不考虑进位(因为这毕竟是1位加法问题),您会发现可通过异或门电路来解决此问题。但是如果考虑进位, 则可能要改写等式,从而始终包括2位输出,如下所示: 0 0 1 1 + 0 + 1 + 0 + 1 00 01 01 10 通过这些等式,您可以生成下面的逻辑表: 带进位输出的1位加法器 A B Q CO 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 通过查看该表,您会发现可通过异或门电路来实现Q,通过与门电路 来实现CO(进位输出)。一切都很简单。 如果要将两个8位的字节加在一起,又要如何处理呢,实现该操作要稍微难一些。最简单的方法是将该问题模块化为可重用的元件,然后复制这些元件。这种情况下,我们只需要创建一个元件:全二进制加 法器。 我们发现全加法器和上述加法器之间的差别在于全加法器可将A、B输入与进位输入(CI)输入相加。拥有全加法器之后,我们可以将8个这样的全加法器串接在一起,从而形成一个字节宽的加法器,并将 进位输入从一个加法器级联到另一个加法器。 与我们前面使用的逻辑表相比,全加法器的逻辑表稍微复杂一些,原 因是我们现在有3个输入位。该逻辑表如下所示: 带有进位输入和进位输出的1位全加法器 CI A B Q CO 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 有多种不同的方法来实现该表,在此我们将介绍一种易于理解的方法。如果您查看Q位,会发现顶部4位的工作方式与针对A 和B的异或门电路类似,而底部4位的工作方式与针对A和B的同或门电路类似。同样,CO顶部4位的工作方式与针对A和B的与门电路类似,而底部4位的工作方式则和或门电路类似。根据这些事实,下面的电路可实现全加法器: 这当然不是实现全加法器最有效的方法,但却极易理解,并且很容易跟踪使用该方法的逻辑。如果有兴趣,您可以思考一下如何使用更少 的门电路来实现该逻辑。 现在我们有了一个名为“全加法器”的功能。计算机工程师下一步要做的是将全加法器装在“黑盒子”中,这样他就不用考虑该元件的细 节了。用于全加法器的黑盒子将如下所示: 通过这个黑盒子,现在很容易就可画出一个4位全加法器: 在该电路图中,每一位的进位输出将直接输入到下一位的进位输入。通过硬连线方式将最初的进位输入位设为0。如果在A和B线路上输入两个4位的数字,则将会在Q线路上获得该4位数的和输出,另外还有1位用来表示最终进位输出。你会发现该链可随意扩展,如果需 要,可扩展到8位、16位或32位。 我们刚刚创建的4位加法器称为行波进位加法器。之所以称为行波进位加法器,是因为进位位像波纹一样从一个加法器输入到另一加法器。该实现方式的优点在于它非常简单,但其缺点是存在速度问题。在实际电路中,门电路的状态切换需要时间(该转换时间属于纳秒级,但对于高速计算机来说纳秒也是很重要的)。由于存在行波进位,因此32或64位的行波进位加法器可能需要100到200纳秒来获得最终的求和结果。为此,工程师创建了更高级的名为先行进位加法器的加法器。实现先行进位加法器所需的门电路数量很大,但是该加法器在 计算速度上大有改进。 触发器 通过布尔门电路可以实现的一项更为有趣的功能是形成记忆。如果门电路的连接正确,它们将会记住输入值。这一简单概念成为计算机中RAM(随机存取存储器)的基础,并且还使得创建其他各种有用的电 路成为可能。 记忆依赖于一个名为反馈的概念,也就是说门电路的输出将反馈给输 入。下面显示的是使用两个反相器的最简单的反馈电路: 如果沿着反馈路线,则会看到如果Q为1,则它始终为1;如果Q为0,则它始终 0。由于有必要控制所创建的电路,因此上面的电路没 有多大用处,但它能够使您了解反馈的工作方式。 事实上,在“真正”的电路中,可使用这类简单的反相器反馈方法。 下面显示了一种更有用的使用两个与非门电路的反馈电路: 该电路有两个输入(R和S)和两个输出(Q和Q')。由于存在反馈, 因此该电路的逻辑表与先前看到的逻辑表相比有些不同。 R S Q Q' 非法 0 0 0 1 1 0 1 0 0 1 记忆 1 1 从逻辑表可以看到: 如果R和S的状态相反,则Q与S相同,且Q'与Q相反。 如果R和S同时切换为1,则电路会记住R和S上先前显示的 内容。 有趣的是,该逻辑表中还有一种非法状态。在这种状态下,R和S都为0,在此状态下没有记忆值。由于存在非法状态,因此通常要在输 入端添加一些条件逻辑以防止出现这种状态,如下图所示: 在该电路中,有两个输入(D和E)。您可以将D视为“数据”,并将E视为“启用”。如果E为1,则Q的状态将与D相同。但是如果E更改为0,则Q将会记住在D上最后看到的内容。以这种方式运行 的电路通常称为触发器。 触发器的一种常见形式是J-K触发器。人们并不清楚“J-K”名称的 历史来由,但通常它会出现在一个黑盒子中,如下所示: 在该示意图中,P代表“预设”,C代表“清除”,Clk代表“时钟”。 该逻辑表如下所示: P C Clk J K Q Q' 1 1 1到0 1 0 1 0 1 1 1到0 0 1 0 1 切换 1 1 1到0 1 1 1 0 X X X 0 1 0 1 X X X 1 0 该表表明:首先,“预设”和“清除”完全覆盖J、K和Clk。因此,如果“预设”变为0,则Q将变为 1;如果“清除”变为0,则Q将会变为0(不管J、K和Clk执行何种操作)。但是,如果“预设”和“清除”都为1,则J、K和Clk均可执行。1到0符号表示时钟从1更改为0时,如果J和K的状态相反,则将记住J和K的值。在时钟的下降沿(从1到0的转换),将存储J和K。但是,如果J和K在下降沿上正巧都为1,则Q只能切换。也就是说,Q将从当前状态 变为相反的状态。 现在你可能会问自己:“这究竟会带来什么益处,”事实上,“跳变沿触发”概念是非常有用的。J-K触发器仅“锁存”从1转换为0时的J-K输入,这一事实使其作为一种记忆设备更为有用。J-K触发器 对计数器(广泛用于创建数字时钟)同样也很有用。以下是一个使用 J-K触发器的4位计数器示例: 该电路的输出是A、B、C和D,并且它们表示一个4位的二进制数字。在最左侧的触发器的时钟输入端,会输入一个反复从1变为0再变回1的信号(振荡信号)。计数器将对该信号中的下降沿计数。也就是说,每次输入信号从1更改为0时,由A、B、C和D表示的4位数将增加1。因此计数将从0变为15,然后再循回到0。您可以向计数器添加任意多的位数,并且可随意计数。例如,如果在门上放置一个磁力开关,则计数器将会计算开门和关门的次数。如果在公路上放置一 个光学传感器,则计数器可计算驶过的汽车的数量。 J-K触发器的另一用途是用于创建跳变沿触发的锁存,如下所示: 在这种排列下,时钟跳变沿从低变为高时将“锁存”D上的值。锁存器对于诸如计算机的CPU和外围设备之类的设计来说至关重要。 实现门电路 在前几节中,我们了解到通过使用非常简单的布尔门电路,可以实现加法器、计数器、锁存器等。这一进步具有伟大的意义,因为在不久以前有些事只有人类才能做到,比如对两个数字进行相加。通过完成少量的工作,人们不难设计出可执行减法、乘法、除法等运算的布尔电路。可以看到,要设计出便携式计算器并不是那么遥不可及。因此, 设计出可用于计算机的成熟的CPU也并非没有可能。 在现实生活中我们应该如何实现这些门电路,布尔先生以书面形式提出了这些门,采用这种形式使它们看起来很不错。但是,若要使用这些门电路,我们需要真正实现这些门电路以便它们可以主动执行逻辑运算。实现这一飞跃之后,我们就已经开始了创建真正的计算设备 的工作。 了解有关布尔逻辑的物理实现最简便的方法是使用继电器。实际上,这是最早的几台计算机的实现方式。如今没有人再通过继电器来制成计算机,人们现在使用蚀刻在硅片上的亚显微晶体管。这些晶体管的体积之小、速度之快都令人难以置信,与继电器相比,它们所消耗的电能非常少。但是,继电器的原理很容易理解,并且也非常易于实现布尔逻辑。由于其简单性,您将能够看到从“书面形式表示的门电路” 转变为“在现实世界中实现的有源门电路”是可行的,并且能够直接 转换,从而使得使用晶体管执行这一转变也很容易。 让我们先来看看反相器吧。通过继电器实现非门是很简单的:我们要做的就是通过电压来表示位状态。将二进制1定义为6伏并将二进制0定义为0伏(接地)。然后将使用6伏的蓄电池来为电路提供电源。 因此非门将如下图所示: 如果您看不懂该图是什么意思,请阅读继电器工作原理以获取详细说 明。 可以看到,在该电路中如果A端的输入电压为0伏,则在Q端可获得6伏输出;如果A端的输入电压为6伏,则在Q端可获得0伏输出。 通过继电器很容易实现反相器~ 通过两个继电器来实现与门也同样简单: 在此您可以看到如果A和B端的输入电压均为6伏,则Q端电压为6伏。在其他情况下,Q端则为0伏,这正是我们想通过与门实现的结果。或门更为简单——仅将A和B两条电线连在一起就可形成或门电路。如果将两个继电器并联,您会得到更加令人意想不到的结果。 从讨论中可以看到,您可以通过继电器创建三种基本的门电路:非门、或门及与门。然后使用上面显示的逻辑电路图将这些物理门电路连接在一起,以创建物理的8位行波进位加法器。如果使用简易开关将A和B输入应用到加法器并将所有8条Q线路与灯泡连接,则能够将任意两个数字相加并读取灯上的结果(“灯亮”=1,“灯灭”=0)。 以简单门电路形式表示的布尔逻辑非常直白易懂。通过简单门电路,您可创建更复杂的函数,例如加法运算。在现实中可以实现门电路且非常容易。通过了解以上三项内容,您已经掌握了数字化革命的核心, 并从根本上了解了计算机的工作方式。 电子门工作原理 组装数字设备基本工作 在布尔逻辑的应用一文中,我们了解了七种基本的门。这些门是所有数字设备的基本组成部分。我们还了解了如何将这些门组装成更高级的设备,如全加器。如果您要试验一下这些门,以便自己动手组装设备,最简便的方法是购买称为TTL芯片的部件,并快速在称为无焊电路试验板的设备上将电路连接在一起。我们简要介绍一下这一技术和 过程,以使您能够真正组装好设备~ 如果回顾一下计算机技术的发展历史,您就会发现所有计算机都是围绕布尔门进行设计的。但是,经过多年的发展,用于实现这些门的技术已发生了根本性变化。第一个电子门是使用继电器制造出来的。这种门的速度很慢,并且体积庞大。后来,电子管取代了继电器。电子管的速度要快得多,但体积仍然很庞大,并且还会受到电子管容易烧毁的问题的困扰(就像灯泡一样)。随着晶体管日趋完善(晶体管于1947年问世),计算机开始使用通过分立式晶体管制成的门。晶体管具有很多优点:比电子管或继电器的可靠性高、功耗低且尺寸小。这些晶体管是分立式设备,这意味着每个晶体管都是单独的设备。每个晶体管位于豌豆大小的金属上,并连接了三根导线。要制作一个门, 可能需要三或四个晶体管以及一些电阻器和二极管。 在60年代早期,集成电路(IC)问世了。这意味着可以在一个晶片上集成晶体管、电阻器和二极管。这一发现导致了小规模集成电路(SSI)的出现。小规模集成电路通常由3平方毫米的晶片构成,上面蚀刻了大约20个晶体管和各种其他元件。典型的芯片可能包含四 个或六个单独的门。这些芯片将计算机的尺寸缩小了大约100倍,使 制造计算机变得容易得多。 随着芯片制造技术的改进,可以在单个芯片上集成越来越多的晶体管,从而导致了中规模集成电路(MSI)的出现,其中包含由多个门组成的简单元件,如全加器。然后出现了大规模集成电路(LSI),设计人员可以将简单微处理器的所有元件都放到单个芯片上。1974年,英特尔研制出 8080处理器,这是商业上第一个成功的单芯片微处理器。它是一个包含4,800个晶体管的大规模集成电路。从那时起到现在,超大规模集成电路(VLSI)又稳步提高了晶体管的数量。第一个奔腾处理器于1993年问世,它包含320万个晶体管,最新的芯 片可能包含多达2000万个晶体管。 为了试验一下门,我们还是延用早期的小规模集成电路。 这些芯片在很多地方仍然有售,性能极其可靠且价格低廉。您可以逐个使用它们制作所需的某种设备,一次使用一个门。 我们将使用的芯片属于最常见的TTL系列(称为7400系列)。这一系列中可能有100种不同的SSI和MSI芯片,范围涵盖简单的和门以及完整的算术逻辑单元 (ALU)。 7400系列芯片使用双列直插式封装(DIP)。 如右图所示,DIP是一个小塑料包装,从中 伸出 14、16、20 或24根小金属引线以提 供到内部门的连接。使用这些门组装设备的 最简便方法是将芯片放在无焊电路试验板上。通过使用电路试验板,您只需将接线端插入电路试验板的连接孔中,即可连接好这些部件。 无焊电路试验板 所有电子门都需要电源。TTL门使用5伏电源来保持运行。芯片对这一电压的要求是相当严格的,因此,每次使用TTL芯片时,我们都需要使用无波动的5伏稳压电源。某些其他芯片系列(如4000系列的CMOS芯片)对于所使用的电压就没有那么严格。CMOS芯片还有另外一个优点,即它们使用的能耗要小得多。但是,它们对静电非常敏感,从而使其可靠性下降,除非在无静电的环境中使用。因此,我们此处 仍坚持使用TTL。 组装ttl门设备 为了组装TTL门,您手头必须有一些设备部件。以下是需要购买的部 件清单: 电路试验板 电压电阻计(也称为万用表) 逻辑探针(可选) 5伏稳压电源 一组用于试验的TTL芯片 几个用于查看门输出的LED(发光二极管) 几个用于LED的电阻器 一些导线(规格为20至28),用于将部件搭接在一起 这些部件总共可能需要花费40至60美元左右,具体取决于从何处购 买它们。 下面我们简要介绍一下这些部件,以便加深您对它们的了解: 正如上一页中所述,电路试验板是一个可简化电路接线的设备。 电压电阻计可用来方便地测量电压和电流。我们将使用此仪表 来确保电源产生合适的电压。 逻辑探针是可选的。它可简化测试导线状态(1或0)的过程, 您也可以使用LED实现相同的效果。 在上述部件中,只有5伏电源不太容易准备。似乎没有厂家销售简单、便宜的5伏稳压电源。因此,您有两种选择。您可以从Jameco购买并使用5伏库存电源(类似于视频游戏使用的电源),或者使用小型 power-cube 变压器,然后自己动手组装 调节器。我们将在下面讨论这两种选择。 LED(发光二极管)是小型灯泡。可以 使用LED来查看门输出。 我们将使用电阻器来保护LED。如果无 法使用电阻器,LED将立即烧毁。 电阻器和LED 日杂店一般不会出售此类设备。但是,这些 部件并不难买到。在设法购买上面列出的元件时,您可以有几种选择: 1. Radio Shack 2. 当地电子器件商店——大多数主要城市都有电子器件商店,很多城市都有不错的库存电子设备商店。如果可以在当地找到一家不错的库存商店,并且能够满足人们自己的组装要求,那就 再好不过了。 3. 像Jameco一样的邮购商店——Jameco已有数十年的经营历史, 不仅货物品种齐全,而且价格经济实惠。(请确保下载其PDF产品目录或者向其索取打印目录——这可大大简化浏览其网站 的过程。) 下表显示了需要购买的部件并列出了Jameco部件号。 部件 Jameco编号 电路试验板 20722 电压电阻计 119212 逻辑探针(可选) 149930 5伏稳压电源 如下所示 7400(NAND门) 48979 7402(NOR门) 49015 7404(NOT门) 49040 7408(AND门) 49146 7432(OR门) 50235 7486(XOR门) 50665 5至10个LED 94529* 5至10个330欧姆电阻器 30867 导线(规格为20至28) 36767 对于电源(可选) (请参见下一节以了解详细信息) 部件 Jameco编号 变压器(7至12伏,300毫安) 149964 7805 5伏电压调节器(TO-220封装) 51262 2个470微法拉电解电容器 93817 说明 *Jameco还具有“分门别类的LED”(LED套装包),比购买单一LED要便宜得多。仔细看一下有哪些种类的LED。其中的库 存电子器件商店的价格要便宜得多。 如果在Jameco购买部件,每种芯片您可能需要购买两套或三套以备不时之需——每个芯片只需花费约30美分。您还可能需要 购买额外的一个或两个7805。 您还需要一对导线剪钳和剥皮钳。必要时,您可以使用剪刀和指甲,但使用正确的工具会使工作变得容易得多。您可以从 Jameco、沃尔玛、Radio Shack和很多其他地方购买导线剪钳 和剥皮钳。我还发现有时使用一对小针头钳也是很有帮助的。 为ttl芯片提供电源 您必须准备5伏稳压电源以使用TTL芯片。正如前面所提到的一样,Radio Shack和Jameco似乎都未提供标准的廉价5伏稳压电源。您的一种选择是从Jameco购买类似部件号116089的部件,这是旧Atari视频游戏使用的5伏电源。如果看一下Jameco产品目录,您就会发现它们大约有20种与此部件类似的各种库存电源,可产生各种不同的电压和电流。您需要5伏电压且电流至少为0.3安(300毫安)的电源;您需要的电流不超过2安,因此,只需购买所需容量的电源。您所做的只是购买电源,然后切掉连接器并连接5伏导线和地线。这样做的效果很好,并且可能是最简便的途径。您可以使用电压计(如 下所示)以确保电源产生所需的电压。 另一种选择是,通过小型power-cube变压器产生5伏电源。您所需的就是一个可产生7至12伏直流电压和100毫安或更高电流的变压 器。 请注意: 变压器必须产生直流电压。 它必须产生7至12伏的电压。 它必须产生100毫安(0.1安)或更高的电流。 您可以使用闲置的旧变压器;请阅读外壳上印制的文字,并确保它满足所有这三条要求。如果没有,可以从Radio Shack或Jameco购买 变压器。 Radio Shack销售9伏300毫安的变压器(部件号273-1455)。Jameco具有7.5伏 300毫安的型号(部件号149964)。从变压器上剪掉连接器,并将两根导线分开。将两根导线剥除一厘米左右的绝缘层。现在插入变压器(插入后,切勿让变压器的两根导线彼此接触,否则可能会烧毁变压器)。请使用电压计(如下所示)来测量电压。您需要确保变压器产生的电压与规定的电压比较接近(它可能会产生高达两倍的电压——这是正常情况)。变压器的作用类似于电池,因此,您还需要确定哪根导线是负极,哪根导线是正极。将电压计的黑色和红色引线随意搭接在变压器导线上,看测量的电压是正值还是负值。如果为负值,请反接引线。现在,您知道黑色引线所连接的导线是负极 导线(地线),而另一根引线是正极导线。 使用电压电阻计 电压电阻计(万用表)可测量电压、电流和电阻。它具有两根“引 线”(导线):一根为黑色,一根为红色。我们现在需要做的是, 了解如何使用该仪表测量电压。为此,请找到一节要使用的AA、C 或D电池(不能是废电池)。我们将其作为电源。 每个仪表都是不同的,但通常可以使用以下步骤来测量电池电压: 1. 将黑色测试引线插入标有“Common”、“Com”、“Ground”、 “Gnd”或“-”(负极)的插孔中(具体插入哪个插孔取决 于所使用的仪表)。 2. 将红色测试引线插入标有“Volts”、“V”、“Pos”或“+” (正极)的插孔中(具体插入哪个插孔取决于所使用的仪 表)。某些仪表具有多个红色引线插孔,请确保使用电压插 孔。 3. 将刻度盘转到“DC Volts”(直流电电压)部分。通常,此 部分中提供了多个电压量程——在我的仪表上,量程是2.5 伏、50伏、250伏和1,000伏(假设自动量程仪表可以自动 设置量程)。您的仪表应具有类似的量程。电池电压为1.25 伏,因此,请找到大于1.25伏的最接近的电压。对于我的 仪表,电压为2.5伏。 现在,将黑色引线固定到电池的负接线端,而将红色引线固定到电 池的正接线端。仪表上的读数应该与1.25伏接近。一定要将黑色引 线搭接在负极上,而将红色引线搭接在正极上,并始终保持这种接 线方式。 现在,您也可以使用仪表来测试电源。必要时更改电压量程,然后 将黑色引线接地,而将红色引线连接到假定为+5伏电压的导线上。 仪表的读数应该为5伏。 组装调节器 要组装调节器,您需要使用三个部件: 7805 5伏电压调节器,采用TO-220封装(Radio Shack部件号 为276-1770) 两个电解电容器,容量介于100和1,000微法拉之间(通常, Radio Shack部件号为272-958) 7805的电压介于7和30伏之间,可将其电压调低到正 好为5伏。第一个电容器用于消除来自变压器的任何电 压波动,以使7805接收平稳的输入电压;第二个电容 器用作负载平衡器以确保从7805获得一致的输出。 电解电容器 7805有三根引线。如果从前面看7805(上面印有文字的那一面),三根引线从左到右依次为输入电压(7至30伏)、地线和输出电压 (5伏)。 要将调节器连接到变压器上,您可以使用以下配置: 两个电容器用平行线表示。“+”号表示电解电容器已极化:电解电容器具有正极和负极接线端(其中的一个接线端带有 标记)。在安装电容器时,您需要确保正确连接电极。 您可以在电路试验板上组装此调节器。 为此,您需要了解电路试验 板内部的接线方式。下图显示了接线情况: 电路试验板的外边缘有两根贯穿电路试验板的接线端。所有这些接线端都是内部连接的。通常,其中一个接线端的电压为+5伏,另一个接线端接地。电路试验板中心是一个通道。通道两侧是由五个互连接线端构成的接线端组。您可以使用电压电阻计来查看互连情况。请将仪表的刻度盘设置为其欧姆设置,然后将导线连接到电路试验板中的不同位置(仪表的测试引线可能太粗而无法放在电路试验板的插孔 中)。 在欧姆设置中,仪表测量的是电阻。如果两个点之间有接线,则电阻为零(将两根引线轻轻接触就可以看到这种效果);如果两个点之间没有接线,则电阻为无穷大(将两根引线分开就可以看到这种效果)。您会发现电路试验板上的点实际按下图所示进行互连。另一种查看连接的方法是,揭开一点电路试验板背面的标签,您即可看到金属连接 器。 现在,我们来连接调节器的部件: 1. 将变压器的地线连接到电路试验板上较长的外侧接线条之一。 2. 将7805插入五孔插排中的三排。 3. 使用导线将地线从接线条连接到7805的中间引线:只需切下很 短的一段导线,剥除两端的护套,然后将它们插入。 4. 将正极导线从变压器连接到7805的左侧引线(输入)。 5. 将电容器从7805的左侧引线接地,要注意极性是否正确。 6. 将7805的5伏引线连接到电路试验板上另一个较长的外侧接线 条。 7. 在5伏电压和地线接线条之间连接第二个电容器。 您已经装好了调节器。 装好后的调节器可能如下所示(两个视图): 在上面的两个图中,变压器的导线是从左侧引入的。您可以看到,变压器地线直接连接到贯穿电路试验板底部的地线接线条上。顶部接线条提供+5伏电压并直接连接到7805的+5引脚上。左侧的电容器对变压器电压进行滤波;右侧的电容器对 7805产生的+5伏电压进行滤波。LED通过电阻器连接+5和地线接线条,并让您知道何时电源“打 开”。 插入变压器并测量7805的输入和输出电压。您会看到恰好从7805输出5伏电压以及变压器提供的电压。如果没有看到,请立即将变压器 断开连接并执行以下操作: 拔出电容器。重新插入变压器,稍后再看一下情况是否发生变 化。 确保地线和变压器的正极导线没有接反(如果接反,7805可能 会变得很热,并且可能会烧毁)。 将变压器断开连接并使用电压计进行检查,以确保变压器能够 产生电压。请参见上一页以了解如何 执行此操作。 在看到调节器输出5伏电压后,可通过将其 连接到LED,进一步对其进行测试并查看其 是否正常工作。您需要串联LED和电阻器— —在电路试验板上很容易完成此操作。您必须使用电阻器,否则LED将立即烧毁。比较适合的电阻器值为330欧姆,但介于200和500欧姆之间的值也具有很好的效果。作为二极管的LED具有极性,因此, 如果LED没有亮起,请尝试反接引线并查看是否奏效。 我们似乎花费了很大的气力才将电源接通并使其正常工作。但您从中 学到了很多东西。现在,我们可以对布尔门进行试验了~ 使用布尔门 如果使用上一页中的表来订购部件,则会购得六种不同的芯片(包含 六种不同类型的门): 7400-NAND(与非)(每个芯片四个门) 7402-NOR(或非)(每个芯片四个门) 7404-NOT(非)(每个芯片六个门) 7408-AND(与)(每个芯片四个门) 7432-OR(或)(每个芯片四个门) 7486-XOR(异或)(每个芯片四个门) 芯片的内部结构如下所示: 让我们从7408AND芯片入手吧。如果看一下该芯片,您就会发现引脚1上通常有一个点、端头上有刻痕或者有某种其他标记以表示引脚1。将芯片推入电路试验板以使其横跨中心通道。可以从图中看出,在所有芯片上,引脚7必须接地,引脚14必须连接到+5伏电压导线上。因此,请正确地连接这两个引脚。(如果接反这两个引脚,则会将芯片烧毁,因此,切勿接反这两个引脚。如果不小心烧毁了芯片,请将其扔掉以免与完好部件弄混。)现在,在芯片的引脚3和地线之间连 接LED和电阻器。LED应该会亮起。如果没有亮起,请反接LED,它 将会亮起。IC应该如下所示: 在此图中,芯片在引脚14(红线)上接收+5伏电压,并在引脚 7(黑 线)上与地线相连。电阻器从引脚3开始连接到LED,LED 也连接到 地线上。从+5连接导线并将其接地到门的A和B输入端以使门发挥 作用。 以下是所发生的情况。在TTL中,+5表示二进制“1”,地线表示二进制“0”。如果门的输入引脚没有连接到任何接线端,它将“悬浮为高电位”,这意味着门假设该引脚上为1。 因此,AND门的A和B输入端均为1,这意味着引脚3的输出电压为5伏。因此,LED将会亮起。如果在芯片中将引脚1和(或)2接地,LED将会熄灭。这是 AND门的标准行为,如布尔逻辑的应用中所述。 将其他门连接到电路试验板上,试一下这些门会发生什么情况,看它们的行为是否均符合布尔逻辑文章中的逻辑表。然后试一下连接更复 杂的电路。例如,连接 XOR门或者全加器的Q位,看它们是否按预 期方式工作。 从理论上说,您现在已掌握了组装任何数字设备所需的基础知识。您可以使用本文中讨论的基本门来组装任何设备。但是,使用更大规模的设备通常会方便得多,这样,您就无需组装50个芯片来制作像ALU之类的常见设备。查看组装门以制作复杂系统的各种方法的示例也是 非常有帮助的。 如果要完成较大的项目,您可以尝试制作数字时钟工作原理中所述的数字时钟。如果要了解有关TTL设备的更多信息,以下书籍是非常有 帮助的: TTL Cookbook:作者Don Lancaster,这是一本精彩的启蒙书 籍,内容详实且充满奇思妙想 TTL Logic Data Book:由Texas Instruments出版,提供了所 有TTL芯片的完整数据(也可以从Jameco购买) IC Projects:作者Carl J. Bergquist、Curt Reeder Radio Shack销售的部件号62-5010至62-5026的书籍:这些 书籍价格低廉,并且包含大量电路可供试验和使用。 您会惊奇地发现只需使用几个集成电路并运用一些创造力,即可制作 出各种设备。祝您玩得开心~ 数字时钟工作原理 时钟基础知识 如果您阅读了摆钟工作原理,你就会知道所有时钟(不管采用什么技 术)都有几个必需的组件: 时钟的能量源 在摆钟里面,钟锤或弹簧充当能量源。 充当时钟心脏的准确时基 在摆钟里面,钟摆和擒纵装置提供此功能。 将时基转换为精确的时间单位(时、分、秒)的组件 在摆钟里面,齿轮提供此功能。 显示时间的组件 在摆钟里面,指针和钟面提供此功能。 电子时钟也跟这差不多。只不过,它是以电子方式而不是机械方式来完成这些功能。 因此在电子时钟里面,有一个电源(可能是电池或从墙壁插座接入的120伏交流电),一个电子时基按某种已知的精确速度发出信号,一个类似“齿轮装置”的某种电子部件,数字时钟通常使用“计数器”部件完成时基转换。 此外还有一个显示屏,通常 是LED(发光二极管)或LCD(液晶显示屏)。 数字时钟元件 以下内容可帮助您对数字时钟的元件有一个更深层次的了解。 时钟的心脏部分是一个可以生成精确的60赫兹(每秒振荡数)信号 的部件。该部件使用两种方法生成此信号: 1. 该信号可以从普通电源线中的60赫兹振荡提取。许多从墙壁插 座获取电源的时钟都使用该方法,因为它既便宜又方便。电源 线上的60赫兹信号相当精确,完全可以实现此目的。 2. 该信号也可以使用晶体振荡器生成。显然,使用电池的时钟或 手表都会用这种方法。它需要更多的部件,不过通常更加精确。 60赫兹信号使用计数器进行细分。在设计自己的时钟时,通常TTL部件会使用7490十进制计数器。此部件可配置为除以2到10之间的任意数,并生成一个二进制数作为输出。因此在采用60赫兹时基时,先除以10,再除以6,这样您就可以得到1赫兹(每秒振荡一次)信号。 这个1赫兹非常适合驱动显示屏的“秒钟”部分。到此,时钟 的设计进度如方块图中所示: 要实际看到秒数,计数器的输出需要驱动一个显示屏。两个计数器会产生二进制数。除10计数器输出0-1-2-3-4-5-6-7-8-9 序列,而除6计数器输出0-1-2-3-4-5序列。我们需要在7段显示屏上显示这些二进制数。7段显示屏上有七个条,通过亮显不同的条,您可以显示 不同的数字: 若要将0到9之间的二进制数转换为相应的信号来驱动7段显示,您可以使用(相应命名的)“二进制数到7段显示转换器”。该芯片查看传入的二进制数,然后在7段LED上开启相应的条来显示该数。如 果我们显示秒,则时钟的秒数部分会显示如下: 此阶段的输出会按一分钟一个周期的频率振荡。可以想象时钟的分钟部分与这部分是完全相同的。最后,小时部分几乎也是相同的,只是 除6计数器替换为除2计数器。 现在还剩下两个细节,可用来判断您是否设计了一个真正的时钟: 这里设计的时钟并不知道在12:59:59时循环到1:00。这是一 个小难题,不过有许多解决方法。一种方法是设计一个能够检 测到13并且将小时部分重置为1(非零)的小逻辑位。另一种 方法是使用一个加法器。 就我们的目的而言,采用24小时格 式时更容易处理,因为24小时格式的时间包括0小时。 我们需要一种方法来设定时钟。通常,可以在分钟部分中输入 比正常情况下高的频率。例如,大多数时钟都有一个“快”和 “慢”设定按钮。当您按“快”按钮时,60赫兹信号直接输入 分钟计数器。当您按“慢”按钮时,1赫兹信号会输入分钟部 分。还可能有其他的方法,不过这是最常用的一种。 现在让我们看看,要构造一个真正的时钟,我们必须完成哪些工作~ 如何自制数字时钟 了解数字时钟的不同元件以及这些元件如何协同工作的最好方法是动手实践,按相应的步骤自制数字时钟。这里我们只设计时钟的“秒钟”部件,您可以很容易进一步拓展,设计出包括时、分、秒的完整时钟。要了解这些步骤,您需要阅读布尔逻辑的应用和电子门工作原理。特别是,电子门文章会向您介绍TTL芯片、电路试验板和电源。 如果您已经按该文的介绍研究了电子门,这里的描述会更有意义。 您首先需要一个电源。我们在电子门一文中曾设计了一个电源。当时,我们使用一个标准的市电转换器生成直流电,然后使用7805调制成5伏。对于时钟,我们需要有所改变,因为我们要从电源线提取60赫兹时基。这意味着,我们需要用交流转换器而不是直流转换器,我 们将会使用一个桥式整流器将直流转换成交流。因此,我们需要用以 下部件来设计电源: 部件名称 Jameco部件号 12伏交流转换器 115602 桥式整流器 103018 7805 5伏调节器 (TO-220) 51262 两个470微法的电解电容 93817 5.1伏稳压二极管 36097 1K欧姆电阻 29663 有关所用部件的几条说明: 此处使用的交流转换器与我们在关于电子门的文章中所用的直流转换器之间的区别是交流转换器保留120市电中的60赫兹正弦波。如果要使用您的万用表测量交流转换器的电压,请确保 使用交流电压量程而不是直流量程。 我们使用桥式整流器将直流电转换成交流电。整流器的一端标有“+”,根据这个记号您可以找到“-”和交流输入。交流转换器没有极性,因此哪个转换器引线连接到整流器的哪根交流 引线没有什么关系。 7805和电容的连线与电子门一文中的介绍相同。 电阻和稳压二极管将从转换器的正弦波提取60赫兹信号。 二极管是电子的单向电子管。稳压二极管也是一个单向电子管,只不过在高于特定电压时还会朝另一方向传递电子。因此,稳 压二极管会将10伏正弦波转换成在0伏和5伏间振荡的限幅波。这非常适合对TTL计数器计时。1K欧姆的电阻可确保流向稳压二极管的电流受到限制,这样就不会烧坏二极管。二极管 上带有条纹的一端应该与电阻相连。 数字时钟电路图 下面是电源和时基的电路图: 正如有关电子门的文中所述,电源是最困难的一部分~ 要构造时钟的其余部分,您需要: 至少四个7490或74LS90芯片 至少两个7447或74LS47二进制到七段转换器 至少20个用于七段显示屏中的发光二极管的电阻(最好330 欧姆)。 一些普通的LED 至少两个共阳极(CA)七段发光LED显示屏(通常采用Jameco 部件号17208) 电路板、线等(有关详细的列表,请参见此页。) 您需要的芯片、电阻和LED数量取决于要实现的位数。这里我们只讨 论秒,因此是“至少”的数量。 7490引线 让我们简要地看一下7490是如何工作的。它的引线如下所示: 7490是一个十进制计数器,这表示它能够从0到9循环计数,这也是它的自然态序。更确切地说,QA、QB、QC和QD分别代表二进制数 的4个数位,这些引线从0循环到9,如下所示: QD QC QB QA 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 您还可以对芯片进行设置,使其计数到其他最大数字,然后再恢复到0。设置方法是更改R01、R02、R91和R92线的连接。如果R01和R02都是1(5伏)并且R91或R92为0(接地),则芯片会将QA、QB、QC和QD 重置为0。如果R91和R92都是1(5伏),则QA、QB、QC 和QD上的计数将是1001(5)。因此: 若要构造一个除10计数器,您应该先将引线5连接到+5伏, 再将引线10接地来给芯片供电。然后将引线12连接到引线1, 将引线2、3、6和7接地。在引线14上运行来自时基或上一个 计数器的输入时钟信号。然后在QA、QB、QC和QD上输出。将 引线11上的输出连接到下一个阶段。 若要构造一个除6计数器,您应该先将引线5连接到+5伏,再 将引线10接地来给芯片供电。然后将引线12连接到引线 1, 将引线6和7接地。将引线2连接到引线 9,将引线3连接到 引线 8。在引线14上运行来自时基或上一个计数器的输入时钟 信号。在QA、QB和QC上输出。使用引线8连接到下一个阶段。 创造数字时钟秒表 知道了这些,您就很容易创造数字时钟的秒针。 如下所示: 在此示意图中,上面两个7490会将电源的60赫兹信号除系数60。第三个7490获取1赫兹输入信号,将其除10,它的四个输出驱动此示意图中的普通LED。第四个7490将第三个7490的输出除6,然后它的三个输出也驱动普通的LED。此时您已经为时钟设计好了秒针,秒针的输出表现为二进制形式。如果要构造用二进制显示时间的时 钟,则已经实现了~下图所示的电路板包含一个除10计数器、一个除6计数器以及一组用来以二进制形式显示计数器输出的LED: 从左边进入图片的几根线分别是电路板的电源线、接地线和时钟线。 左边的计数器是一个设置为除10的7490,右边的计数器是一个设置 为除6的7490。 如果组装更紧凑、布线更简洁,则一个电路试验板上最多可装四个计 数器。 以数字方式显示时间 如果要以数字方式显示时间,您需要使用7447。以下是7447的引线, 以及7段LED的段标签: 可以用如下方法将7447连接到7490: 在引线16上提供+5V电源,并且将引线8接地来为7447芯片 供电。 分别将QA、QB、QC和QD从7490连接到7447的引线 7、1、2 和6。 将330欧姆的电阻连接到7447的引线13、12、11、10、9、15和14,然后将这些电阻连接到7段LED的a、b、c、d、e、f 和g段。 将7段LED的共阳极连接到+5伏。 您必须有适合所用特定LED显示屏的插脚引线,以便知道如何将7447的输出连线到7段显示装置中的LED。(此外请注意7448与7447功能相同,只不过它驱动共阳极显示屏。在此情况下将LED的共阳极接 地。) 您会发现,通过拓展电路,我们很容易构造一个完整的时钟。要构造时钟的“分针”部分,您只需要复制“秒针”部分。要构造“时针”部分,您将需要完成一些创造性的工作。可能最容易的解决方法是构造以24小时格式显示时间的时钟。这样,您只需使用一个与门(或7490的R输入)来识别二进制数24,然后使用识别器的输出将小时 计数器重置为0。 最后需要构造的部件是设定机制。在电路试验板上很容易设定时钟,只需移动输入线,将更高频率的信号输入时钟的分针部分即可。在真正的时钟上,您需要使用按钮或开关以及门控来实现这些功能。 如果碰巧拆开了床头的时钟或手表,您会发现里面可能并没有15个TTL IC。事实上,您可能连一个芯片都找不到。在大多数现代化的钟表上,时钟的所有功能(包括闹钟和其他任何功能)都集成到一个低功耗的芯片中(在手表中,芯片和显示屏加在一起功耗也只有约1瓦的百万分之一)。这个芯片可能直接被嵌入到电路板中。您可能会看到一小块保护该芯片的黑色塑料。这一个微小的芯片包含了我们这里 讨论的所有元件。 到此,您应该对数字时钟的原理有了一个全面的了解。下次再看到床边的时钟或数字手表时,您会觉得自己已经了解了它的内部工作原理~如果要进一步地深入了解时钟,弄明白如何使用微控制器构造数 字时钟,请参阅微控制器工作原理。 为什么计算机需要电池, 大多数计算机都有一块小电池。很多情况下,电池直接焊接在主板上,但它通常还是放置在电池底座中,以便更换。计算机并不是唯一使用此类小电池的设备——摄像机和数码相机也常常使用。几乎所有需要 跟踪时间的设备都有电池。 在计算机(以及其他设备)中,电池为实时时钟(RTC)芯片供电。RTC实质上是一个石英表,无论计算机是否有电,它都会一直运行。电池就是为这个时钟供电。计算机启动过程中,会向RTC询问正确的时间和日期。一块小电池可供这样一个小石英钟运行5至7年。之后, 就要更换电池了。 不过,这些解释还是没有回答计算机不启动的原因。您可能觉得,计算机应该正常启动,只是时间和日期不正确。不能开机是因为RTC芯片还包含64(或更多)字节的随机存取内存(RAM)。时钟使用这个空间中的10个字节,其余54个字节留作它用。BIOS(基本输入输出系统)将所有类型的信息存储在CMOS RAM区域中,如软盘和硬盘驱 动器的数量、硬盘驱动器的型号等。如果CMOS RAM缺电,计算机就 可能无法知道任何关于机器硬盘配置的信息,因而不能启动。 很多更加先进的计算机并不会这样依赖CMOS RAM。它们在非易失性RAM中存储这些设置,这种RAM不加电也可正常工作。在电池耗尽,时钟停止时,通过使用非易失性RAM区域中的信息,计算机还是可以启动。 Usb工作过程 启动主机后,它会查询所有与总线相连的设备,并为每个设备分配一个地址。这个过程称为枚举——在将设备连接到总线时,主机也会枚举它们。此外,主机还会查出每台设备要执行的数据传输类型。 中断——鼠标或键盘等设备发送的数据非常少,它们会选择中 断模式。 批量——打印机等设备接收的数据包含在一个大的数据包中, 它们会使用批量传输模式。这种模式会将大块数据发送到打印 机(块的大小为64个字节),并对这些数据进行验证,以确保 它们的正确性。 同步——流式设备(如扬声器)都使用同步模式。在这种模式 下,设备与主机之间的数据是实时传输的,其间没有数据纠正 过程。 此外,主机还可以通过控制数据包发送命令或查询参数。 列举设备时,主机会一直跟踪所有同步和中断设备所请求的总带宽情况。如果总带宽为480Mbps(兆比特每秒),这些设备最多可占用90%的带宽。在用完这部分带宽后,主机就会拒绝访问任何其他同步或中断设备,控制数据包和用于批量传输的数据包将使用剩下的带宽(至 少有10%)。 通用串行总线会将可用带宽分成多个帧,而主机则控制着这些帧。每个帧包含1,500个字节的数据,每隔一毫秒就会启动一个新帧。在形成帧的过程中,将为同步和中断设备分配一个槽,以便保证它们得到所需要的带宽。批量和控制传输将使用剩下的空间来传输数据。如果想了解更多信息,您可以查看本文末尾的技术链接,它们提供了大量 的详细信息。 USB性能特点 通用串行总线具有以下性能特点: 计算机可以充当主机。 主机上可以连接多达127台设备(可直接连接,也可以通过USB 集线器连接)。 单根USB线缆可达5米之长;使用集线器后,设备最多可以在 远离主机30米的地方工作,这相当于六根线缆的长度。 使用USB 2.0时,总线的最大数据传输速率可达到每秒480兆 比特。 USB线缆包含两根电源线(一根电压为5伏的电线,另一根是 地线)和一对用来承载数据的双绞线。 在电源线上,计算机在5伏电压下可提供高达500毫安的电流。 低功率设备(如鼠标)可以直接使用总线中的电流。高功率设备(如打印机)则配有自己的电源,总线只向它们提供很少一部分电能。集线器也自己有电源,能够直接为与之相连的设备 供电。 USB设备都是热插拔型的,这表示您随时都可以将它们插入总 线和拔掉它们。 当计算机进入省电模式时,主计算机可以将许多USB设备置于 睡眠状态。 与USB端口相连的设备依靠USB线缆来承载电源和数据。 USB线缆的内部构成:两根电源线,其中一根是电压为5伏的电线(红 色),另一根是地线(棕色);一对用来承载数据的双绞线(黄色和 蓝色)。该线缆还是屏蔽电缆。 USB 2.0 USB 2.0标准是USB 1.1的升级版本,于2000年4月推出。 USB 2.0(高速USB)为多媒体和存储应用程序提供了额外带宽,其 数据传输速度比USB 1.1快40倍。为了让消费者和制造商顺利实现 这一过渡,USB 2.0具有完全的向前和向后兼容性,它不仅可以用于 原来的USB设备,而且还能使用之前USB制造的线缆和接口。 USB 2.0支持三种速度模式(每秒1.5、12和480兆比特),这样它既可支持键盘和鼠标等低带宽设备,也可支持高分辨率的网络摄像机、扫描仪、打印机和高容量的存储系统等高带宽设备。随着USB 2.0的广泛应用,个人计算机(PC)领域的领导者可以加快新一代PC外设的开发,以跟上现有高性能PC的发展步伐。USB 2.0的传输速度也促进了新一代PC和应用程序的发展。除了改进功能和鼓励创新外,USB 2.0还提高了用户应用程序的效率,用户可以同时运行多个PC 应用程序或高性能外设。 计算机主板工作原理 如果您打开过计算机的机箱,您会看到有一个部件将所有部件连接在一起,那就是主板。通过主板,计算机的所有部件可以得到电源并相互通信。 在过去二十年中主板已经取得了长足进展。第一款主板上安装的实际部件少之又少。首款IBM PC主板仅有一个处理器和一些 卡槽。用户将软驱控制器和内存等部件插入插槽中。 现在,主板通常拥有多种不同的内置功能,并且可以直接影响计算机的功能和升级潜力。在本文中,我们将了解一下主板的通用部件。随 后,我们将仔细研究显著影响计算机性能的五点内容。 HowStuffWorks Shopper供图 计算机主板 尽管仅有主板什么也作不了,但如果没有它计算机则无法运行。主板的主要工作是支撑计算机的微处理器芯片并让所有其他部件与其连接。有助于计算机运行或增强性能的所有部件要么是主板的一部分, 要么通过插槽或端口插在主板上。 主板的形状和布局被称为外形。外形影响各个部件的位置以及计算机机箱的形状。多数 PC 主板采用几种特定外形,这样主板便可以装入标准机箱内。有关外形的比较、过去与现状,请浏览Motherboards.org 网站。 外形只是适用于主板的多种标准之一。其他一些标准包括: 微处理器的插槽,它决定主板采用什么类型的中央处理器 (CPU)。 芯片组,它是主板逻辑系统的一部分,通常由北桥和南桥两部 分构成。这两座“桥梁”将CPU与计算机的其他部件相连。 基本输入/输出系统(BIOS)芯片,它控制计算机最基本的功能 并在每次开机时执行自检。有些系统具有双BIOS,可在一个 BIOS发生故障或者在更新过程中出错时提供备份。 实时时钟芯片,它是一种受电池操控的芯片,维持基本设置和 系统时间。 主板上的插槽与端口包括: 外围组件互连(PCI)——显卡、声卡、视频采集卡及网卡的插 槽 加速图形端口(AGP)——显卡专用端口 电子集成驱动器(IDE)——硬盘接口 通用串行总线或火线——连接外设 内存插槽 一些主板还将较新的技术进步融入其中: 独立磁盘冗余阵列(RAID)控制器允许计算机将多个驱动器识 别为一个驱动器。 PCI Express是一种更加新颖的协议,其作用更像是一个网络 而不是总线。有了它,就不再需要包括AGP端口在内的其他端 口。 一些主板具有板载声卡、网卡、显卡或其他外设支持,而不是 依靠插入式板卡。 HowStuffWorks Shopper供图 Socket754主板 许多人在考虑计算机的速度和性能时首先想起的是CPU。处理器越快,计算机的“思考”速度就越快。在个人计算机的早期,所有处理器具有相同的一组针脚将 CPU与主板连接,这称为针脚栅格阵列(PGA)。这些针脚可以插入到名Socket7的插槽布局中。这意味着处理器与主 板之间实现完全兼容。 HowStuffWorks Shopper供图 Socket939主板 然而目前CPU厂商英特尔和AMD使用多种PGA,其中没有一种能够插入到Socket7中。随着微处理器的进步,它们需要愈来愈多的针脚, 用来处理新增功能并向芯片提供越来越大的能量。 当前的插槽布局通常按照PGA中的针脚数来命名。常用的插槽如下: Socket478——适用于老式的奔腾和赛扬处理器 Socket754——适用于AMD Sempron和某些AMD Athlon处理器 Socket939——适用于更新、更快的AMD Athlon处理器 SocketAM2——适用于最新的AMD Athlon处理器 SocketA——适用于老式的AMD Athlon处理器 HowStuffWorks Shopper供图 Socket LGA755主板 最新的英特尔CPU没有PGA。它拥有LGA,也称为Socket T。LGA代表栅格阵列。LGA与PGA的不同之处在于,针脚实际上是插槽而非CPU 的一部分。 主板的选择应该是以CPU的型号为依据的。例如,如果您想使用由英特尔或AMD生产的其中一种新型多核芯片,那么您需要选择具有适合这些芯片的插槽的主板。因为CPU完全无法插入与其PGA不匹配的插 槽中。 HowStuffWorks Shopper供图 北桥和南桥 芯片组就好象“粘合剂”,它将微处理器与主板的其他部分连接,继而与计算机的其他部分相连。在一台PC上,芯片组包括两个基本部分——北桥和南桥。计算机的所有不同部件都通过芯片组与CPU通 信。 芯片组将CPU与计算机的其他部分相连 北桥通过前端总线(FSB)直接连接到处理器。内存控制器位于北桥上,这样可让CPU快速访问内存。北桥还连接到AGP或PCI Express总线 并与内存连接。 南桥要比北桥慢,而且CPU中的信息必须经过北桥才能到达南桥。其他总线将南桥连接到PCI总线、USB 端口以及IDE或SATA硬盘接口。 芯片组选择与CPU选择有着密切的关系,因为制造商会对芯片组进行优化以使其与特定的CPU配套使用。芯片组是主板上集成的一部分,因此无法拆除或对它进行升级。这意味着,不仅主板的插槽要与CPU相匹配,而且主板的芯片组也必须能与CPU进行最理想的协作。 接下来,我们将了解总线、内存以及主板的其他功能。 事实上,总线是将主板上不同部分相互连接的电路。总线一次可以处理的数据越多,其信息传输速度就越快。总线速度的单位是兆赫兹 (MHz),指的是可以同时通过总线的数据量。 总线连接主板上的不同部分 总线速度通常指的是前端总线(FSB)的速度,前端总线将CPU连接到北桥。FSB速度可以从66MHz到800MHz以上。由于CPU通过北桥 访问内存控制器,因此FSB速度可以显著影响计算机的性能。 下面是主板上的其他一些总线: 后端总线,它将CPU与二级(L2)高速缓存相连,二级(L2) 高速缓存又称为辅助或外部高速缓存。处理器决定着后端总线 的速度。 内存总线,它将北桥连接到内存。 IDE或ATA,它总线将南桥连接到磁盘驱动器。 AGP总线,它将显卡连接到内存和CPU。AGP总线的速度通常是 66MHz。 PCI总线,它将PCI插槽与南桥相连。在大多数系统中,PCI 总线的速度是33MHz。PCI Express 也与PCI兼容,它比PCI 更快并且还和最新的软件和操作系统兼容。PCI Express有可 能取代PCI和AGP总线。 从某种程度而言,计算机的总线速度越大,计算机的运行速度就越大。但即便总线速度再大,也无法弥补较慢的处理器或芯片组的不足。 现在,让我们来了解一下内存以及内存是如何影响主板速度的。 我们已经知道处理器本身的速度决定着计算机“思考”的速度。芯片组和总线的速度控制处理器与计算机的其他部分通信的速度。RAM连接的速度直接控制计算机访问指令与数据的速度,因此对系统性能有很大的影响。在RAM速度很慢的情况下,快速的处理器将毫无用处。 可用内存的数量也控制着计算机可以直接使用的数据量。RAM构成计 算机内存的主要部分。经验表明,计算机的RAM越多越好。 RAM 有关不同类型的RAM的信息,请 浏览RAM的工作原理。 HowStuffWorks Shopper供图 184针脚DDR DIMM RAM 目前市售的多数内存都是双倍数据传输率(DDR)内存。这种内存的特性是,它可以在一个时钟周期内传输两次数据,相比其他类型的内存,速度更快。此外,多数主板都为潜在的内存芯片预留空间,并且在一些较新的主板上,内存经常通过双总线而非单总线与北桥连接。 这进一步提高了处理器从内存中获取数据的速度。 HowStuffWorks Shopper供图 200针脚DDR SO DIMM RAM 主板的内存插槽对所支持的内存种类和内存数量有直接的影响。正如其他部件一样,内存也是通过一系列针脚插接到插槽内。内存模块必须具有正确数量的针脚才能插入到主板上 的插槽中。 在主板问世不久的一段时期内,基本上除处 理器之外的所有部件都以卡的形式插入主 板。现在,主板具有各种板上配件,例如 LAN支持、显卡、声卡支持和RAID控制器。 HowStuffWorks Shopper 供图 配件齐全的主板非常方便且易于安装。有些64MB SDRAM SIMM 主板上包括了构建一台完整计算机所需的 所有部件,您要做的只是将主板装入机箱,然后添加硬盘、CD 驱动 器和电源。这样,一块主板就可以构建一台完整的计算机了。 对于许多普通用户而言,这些内置功能已经足以达到他们对视频和声音的技术要求。然而,对于狂热的游戏迷或者进行大量图形或计算机 辅助设计(CAD)工作的用户来说,单独的显卡可能是一个需要额外配 备的设备。 加密狗的工作原理 所有加密狗的基本工作原理都是类似的:当用户启动或者使用软件时,软件会联络软件狗,并且读取其中的数据。如果软件狗返回正确的数据的话,软件可以正常使用,否则软件将会停止工作,并且向用 户显示出错的提示。 从这种原理我们可以看出,如果软件狗要起到不错的加密效果,和被加密的软件的设计是紧密相关的。一般来说,软件读取加密狗的次数越频繁、传输的数据越复杂多样、读取数据的函数越多,破解加密狗 的难度就会越大,保护效果也就越好。 从软件狗的诞生到现在,从技术原理上看,已经有了四代产品,而第 五代产品也正在逐渐走入人们的视野。 最早的软件狗仅有储存功能。在软件狗硬件中储存一部分保密数据,被加密软件在运行过程中随机读取这些数据,并且进行判断。当数据经过验证时,软件认为计算机上安装了正确的软件狗,继续正常运行,否则停止运行。这种软件狗比较简单,一般可以通过跟踪截取软件狗的数据传输,并且通过找出数据规律来破解,破解难度比较低。不过 这种软件狗的成本比较低,因此目前还占据了一些市场份额。 第二代软件狗中置入了一些加密算法,这些算法是不公开的。这一代软件狗中一般都会有一个单片机——即相当于一台微型计算机的一块芯片,只不过功能比较单一——通过算法来进行加密。在被加密的软件和软件狗之间建立一个加密协议,软件向软件狗请求数据时,软件狗将数据加密传回软件,软件对其解密,然后加以验证。也就是说,在对使用这种软件狗的数据,即使截取软件狗的数据也没有用,除非能够正确地将这些数据解密。破解者在分析这种软件狗时,一般会对被加密的软件进行跟踪,分析调用了软件狗的函数来找到真正的数据。为了防止这种情况,被加密的软件在设计中也会通过给软件加壳、 增加反跟踪代码等方式来应对。 第三代软件狗更进一步,允许软件开发者自己定义加密算法,对其进行编程。也就是说,软件开发者可以把软件狗当成一块磁盘来看待,可以在其中放入程序中的某些模块或者功能,并且对这些模块传输的数据加密。这样,软件相当于在两块磁盘上安装,当运行时两块磁盘相互访问,像一块拼图一样。破解者在获得盗版软件时,只是获得了这两块磁盘中的一块。这种出发点是非常好的,但是因为成本限制,软件狗中的程序可用空间比较小,使用比较受限制。在不同厂商的产品中采用了不同的手段,例如在数据传输的时候添加干扰、设置垃圾 程序、频繁地移动数据等等。这一类加密狗比较难破解。 第四代软件狗在第三代的基础上,又安装了一块单片机,用来给传输的数据加密变换。这是比较成熟的软件狗,当有设计良好的被加密软 件配合时,破解难度会相当大。 软件狗的发展方向是向智能卡。就像是我们使用的手机卡一样,智能卡内置运算器和存储器,可以用来存放较多的软件代码,并且具有强大的运算和处理能力。随着成本降低和市场成熟,智能卡软件狗将会 应用越来越广泛。 虽然理论上并没有不可破解的软件,但是只要破解软件的成本大于破解者可能获得的收益,破解者就不会去破解它。软件狗正是为了增大破解成本而设计出来的一类产品,在这一点上,它和软件防盗版手段 并没有本质上的不同。
/
本文档为【计算机存储原理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索