第零章、计算机概论
最近更新日期:2009/08/03
1. 电脑:辅助人脑的好工具
1.1 电脑硬体的五大单元 1.2 CPU的种类 1.3 周边设备 1.4 运作流程 1.5 电脑分类 1.6 电脑上面常用的计算单位 (容量、速度等) 2. 个人电脑架构与周边设备 2.1 CPU: CPU的外频与倍频, 32位元与64位元, CPU等级 2.2 记忆体 2.3 显示卡 2.4 硬碟与储存设备 2.5 PCI介面卡 2.6 主机板 2.7 电源供应器 2.8 选购须知 3. 资料表示方式 3.1 数字系统 3.2 文字编码系统 4. 软件程序运作 4.1 机器程序与编译程序 4.2 作业系统 4.3 应用程序 5. 重点回顾 6. 本章习题 7. 参考资料与延伸阅读 8. 针对本文的建议:http://phorum.vbird.org/viewtopic.php?t=31574 电脑:辅助人脑的好工具 进入二十一世纪的现在,没有用过电脑的朋友应该算很少了吧?但是,你了解电脑是什么吗? 电脑的机壳里面含有什么元件?不同的电脑可以作什么事情?你生活周遭有哪些电器用品内部是含有电脑相关元件的? 底下我们就来谈一谈这些东西呢! 所谓的电脑就是一种计算机,而计算机其实是:‘接受使用者输入指令与资料, 经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的资讯’。 因此,只要有输入设备 (不管是键盘还是触控式荧幕)及输出设备(荧幕或直接列印出来),让你可以输入资料使该机器产生资讯的, 那就是一台计算机了。 图1.1.1、计算机的功能 根据这个定义你知道哪些东西是计算机了吗?包括一般商店用的简易型加减乘除计算机、打电话用的手机、开车用的卫星定位系统 (GPS)、提款用的提款机 (ATM)、你常使用的桌上型个人电脑、可携带的笔记型电脑还有这两年 (2008, 2009) 很火红的 Eee PC (或称为 netbook) 等等,这些都是计算机! 那么计算机主要的组成元件是什么呢?底下我们以常见的个人电脑来作为说明。 电脑硬体的五大单元 关于电脑的组成部分,其实你可以观察你的桌上型电脑分析一下,依外观来说这家伙主要分为三部分:
我们主要透过输入设备如滑鼠与键盘来将一些资料输入到主机里面,然后再由主机的功能处理成为图表或文章等资讯后, 将结果传输到输出设备,如荧幕或印表机上面。重点在于主机里面含有什么元件呢?如果你曾经拆开过电脑主机机壳, 会发现其实主机里面最重要的就是一片主机板,上面安插了中央处理器 (CPU) 以及主记忆体还有一些介面卡装置而已。 整部主机的重点在于中央处理器 (Central Processing Unit, CPU),CPU 为一个具有特定功能的晶片, 里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关内建的微指令集才可以。 由于 CPU 的工作主要在于管理与运算,因此在 CPU 内又可分为两个主要的单元,分别是: 算数逻辑单元与控制单元。(注1) 其中算数逻辑单元主要负责程序运算与逻辑判断,控制单元则主要在协调各周边元件与各单元间的工作。 既然 CPU 的重点是在进行运算与判断,那么要被运算与判断的资料是从哪里来的? CPU 读取的资料都是从主记忆体来的! 主记忆体内的资料则是从输入单元所传输进来!而 CPU 处理完毕的资料也必须要先写回主记忆体中, 最后资料才从主记忆体传输到输出单元。 综合上面所说的,我们会知道其实电脑是由几个单元所组成的,包括输入单元、 输出单元、CPU内部的控制单元、算数逻辑单元与主记忆体五大部分。 相关性如下所示: 图1.1.2、电脑的五大单元(注2) 上面图示中的‘系统单元’其实指的就是电脑机壳内的主要元件,而重点在于CPU与主记忆体。 特别要看的是实线部分的传输方向,基本上资料都是流经过主记忆体再转出去的! 至于资料会流进/流出记忆体则是CPU所发布的控制命令!而CPU实际要处理的资料则完全来自于主记忆体! 这是个很重要的概念喔! 而由上面的图示我们也能知道,所有的单元都是由CPU内部的控制单元来负责协调的,因此CPU是整个电脑系统的最重要部分! 那么目前世界上有哪些主流的CPU呢?是否刚刚我们谈到的硬体内全部都是相同的CPU种类呢?底下我们就来谈一谈。 CPU的种类 如前面说过的,CPU其实内部已经含有一些小指令集,我们所使用的软件都要经过CPU内部的微指令集来达成才行。
那这些指令集的设计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要CPU种类:
分别是精简指令集(RISC)与复杂指令集(CISC)系统。底下我们就来谈谈这两种不同CPU种类的差异啰!
这种CPU的设计中,微指令集较为精简,每个指令的执行时间都很短,完成的动作也很单纯,指令的执行效能较佳; 但是若要做复杂的事情,就要由多个指令来完成。常见的RISC微指令集CPU主要例如升阳(Sun)公司的SPARC系列、 IBM公司的Power Architecture(包括PowerPC)系列、与ARM系列等。 在应用方面,SPARC架构的电脑常用于学术领域的大型工作站中,包括银行金融体系的主要服务器也都有这类的电脑架构;
至于PowerPC架构的应用上,例如新力(Sony)公司出产的Play Station 3(PS3)就是使用PowerPC架构的Cell处理器;
那ARM呢?你常使用的各厂牌手机、PDA、导航系统、网络设备(交换器、路由器等)等,几乎都是使用ARM架构的CPU喔!
老实说,目前世界上使用范围最广的CPU可能就是ARM呢!
(注4)
与RISC不同的,CISC在微指令集的每个小指令可以执行一些较低阶的硬体操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。 由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人电脑(Personal computer)用途上面, 因此,个人电脑常被称为x86架构的电脑!那为何称为x86架构(注6)呢? 这是因为最早的那颗Intel发展出来的CPU代号称为8086,后来依此架构又开发出80286, 80386..., 因此这种架构的CPU就被称为x86架构了。 在2003年以前由Intel所开发的x86架构CPU由8位元升级到16、32位元,后来AMD依此架构修改新一代的CPU为64位元, 为了区别两者的差异,因此64位元的个人电脑CPU又被统称为x86_64的架构喔! 那么不同的x86架构的CPU有什么差异呢?除了CPU的整体结构(如第二层快取、每次运作可执行的指令数等)之外, 主要是在于微指令集的不同。新的x86的CPU大多含有很先进的微指令集, 这些微指令集可以加速多媒体程序的运作,也能够加强虚拟化的效能,而且某些微指令集更能够增加能源效率, 让CPU耗电量降低呢!由于电费越来越高,购买电脑时,除了整体的效能之外, 节能省电的CPU特色也可以考虑喔!
周边设备 单有CPU也无法运作电脑的,所以电脑还需要其他的周边设备才能够实际运作。 除了前面稍微提到的输入/输出设备,以及CPU与主记忆体之外,还有什么周边设备呢? 其实最重要的周边设备是主机板!因为主机板负责将所有的设备通通连接在一起,让所有的设备能够进行协调与沟通。 而主机板上面最重要的元件就是主机板晶片组!这个晶片组可以将所有的设备汇集在一起! 其他重要的设备还有:
更详细的各项周边装置我们将在下个小节进行介绍!在这里我们先来了解一下各元件的相关系啰! 那就是,电脑是如何运作的呢? 运作流程 如果不是很了解电脑的运作流程,鸟哥拿个简单的想法来思考好了~ 假设电脑是一个人体,那么每个元件对应到那个地方呢?可以这样思考: 图1.4.1、各元件运作
由这样的关系图当中,我们知道整个活动中最重要的就是脑袋瓜子! 而脑袋瓜子当中与现在正在进行的工作有关的就是CPU与主记忆体!任何外界的接触都必须要由脑袋瓜子中的主记忆体记录下来, 然后给脑袋中的CPU依据这些资料进行判断后,再发布命令给各个周边设备!如果需要用到过去的经验, 就得由过去的经验(硬碟)当中读取啰! 也就是说,整个人体最重要的地方就是脑袋瓜子,同样的,整部主机当中最重要的就是CPU与主记忆体, 而CPU的资料来源通通来自于主记忆体,如果要由过去的经验来判断事情时, 也要将经验(硬碟)挪到目前的记忆(主记忆体)当中,再交由CPU来判断喔!这点得要再次的强调啊! 下个章节当中,我们就对目前常见的个人电脑各个元件来进行说明啰! 电脑分类 知道了电脑的基本组成与周边装置,也知道其实电脑的CPU种类非常的多,再来我们想要了解的是,电脑如何分类? 电脑的分类非常多种,如果以电脑的复杂度与运算能力进行分类的话,主要可以分为这几类:
若光以效能来说,目前的个人电脑效能已经够快了,甚至已经比工作站等级以上的电脑运算速度还要快! 但是工作站电脑强调的是稳定不当机,并且运算过程要完全正确,因此工作站以上等级的电脑在设计时的考量与个人电脑并不相同啦! 这也是为啥工作站等级以上的个人电脑售价较贵的原因。 电脑上面常用的计算单位 (容量、速度等) 电脑的运算能力是由速度来决定的,而存放在电脑储存设备当中的资料容量也是有单位的。
电脑依有没有通电来记录资讯,所以理论上它只认识 0 与 1 而已。0/1 的单位我们称为 bit。但 bit 实在太小了, 并且在储存资料时每份简单的资料都会使用到 8 个 bits 的大小来记录,因此定义出 byte 这个单位,他们的关系为: 1 Byte = 8 bits 不过同样的,Byte 还是太小了,在较大的容量情况下,使用 byte 相当不容易判断资料的大小,举例来说,1000000 bytes 这样的显示方式你能够看得出有几个零吗?所以后来就有一些常见的简化单位表示法,例如 K 代表 1024,M 代表 1024K 等。 而这些单位在不同的进位制下有不同的数值表示,底下就列出常见的单位与进位制对应:
一般来说,文件容量使用的是二进位的方式,所以 1 GBytes 的文件大小实际上为:1024x1024x1024 Bytes 这么大!
速度单位则常使用十进位,例如 1GHz 就是 1000x1000x1000 Hz 的意思。
CPU的运算速度常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少 Mbit。举例来说,大家常听到的 8M/1M ADSL 传输速度,如果转成文件容量的 byte 时,其实理论最大传输值为:每秒 1Mbyte/ 每秒125Kbyte的上传/下载容量喔!
个人电脑架构与周边设备 一般消费者常说的电脑通常指的就是x86的个人电脑架构,因此我们有必要来了解一下这个架构的各个元件。 事实上,Linux最早在发展的时候,就是依据个人电脑的架构来发展的,所以,真的得要了解一下呢! 另外,因为两大主流x86开发商(Intel, AMD)的CPU架构并不相容,而且设计理念也有所差异, 所以两大主流CPU所需要的主机板晶片组设计也就不太相同。目前(2009)最新的主机板架构主要是这样的: 图2.1.1、Intel晶片架构 就如同前一小节提到的,整个主机板上面最重要的就是晶片组了!而晶片组通常又分为两个桥接器来控制各元件的沟通, 分别是:(1)北桥:负责连结速度较快的CPU、主记忆体与显示卡等元件;(2)南桥:负责连接速度较慢的周边介面, 包括硬碟、USB、网络卡等等。(晶片组的南北桥与三国的大小乔没有关系 @_@)至于AMD的晶片组架构如下所示: 图2.1.2、AMD晶片架构 与Intel不同的地方在于主记忆体是直接与CPU沟通而不透过北桥!从前面的说明我们可以知道CPU的资料主要都是来自于主记忆体提供, 因此AMD为了加速这两者的沟通,所以将记忆体控制元件整合到CPU当中, 理论上这样可以加速CPU与主记忆体的传输速度!这是两种CPU在架构上面主要的差异点。 毕竟目前世界上x86的CPU主要供应商为Intel,所以底下鸟哥将以Intel的主机板架构说明各元件啰! 我们以技嘉公司出的主机板,型号:Gigabyte GA-X48-DQ6作为一个说明的范例,主机板各元件如下所示: 图2.1.3、技嘉主机板各元件(图片为各公司所有) 主要的元件为:CPU、主记忆体、磁碟装置(IDE/SATA)、汇流排晶片组(南桥/北桥)、显示卡介面(PCI-Express)与其他介面卡(PCI)。
底下的各项元件在讲解时,请参考Intel晶片组架构与技嘉主机板各元件来印证喔! CPU 如同技嘉主机板示意图上最上方的中央部分,那就是CPU插槽。 由于CPU负责大量运算,因此CPU通常是具有相当高发热量的元件。所以如果你曾经拆开过主机板, 应该就会看到CPU上头通常会安插一颗风扇来主动散热的。 x86个人电脑的CPU主要供应商为Intel与AMD,目前(2009)主流的CPU都是双核以上的架构了! 原本的单核心CPU仅有一个运算单元,所谓的多核心则是在一颗CPU封装当中嵌入了两个以上的运算核心, 简单的说,就是一个实体的CPU外壳中,含有两个以上的CPU单元就是了。 不同的CPU型号大多具有不同的脚位(CPU上面的插脚),能够搭配的主机板晶片组也不同, 所以当你想要将你的主机升级时,不能只考虑CPU,你还得要留意你的主机板上面所支援的CPU型号喔! 不然买了最新的CPU也不能够安插在你的旧主机板上头的!目前主流的CPU有Intel的Core 2 Duo与AMD的Athlon64 X2双核CPU, 高阶产品则有Intel的Core i7 与AMD的Phenom II 四核心CPU喔! 图2.1.4、不同的CPU脚位 我们前面谈到CPU内部含有微指令集,不同的微指令集会导致CPU工作效率的优劣。除了这点之外, CPU效能的比较还有什么呢?那就是CPU的时脉了!什么是时脉呢?简单的说, 时脉就是CPU每秒钟可以进行的工作次数。 所以时脉越高表示这颗CPU单位时间内可以作更多的事情。举例来说,Intel的Core 2 Duo型号E8400的CPU时脉为3.0GHz, 表示这颗CPU在一秒内可以进行3.0x109次工作,每次工作都可以进行少数的指令运作之意。
我们可以看到图2.1.1的晶片架构图当中各个元件都是透过北桥与南桥所连接在一起。 但就像一群人共同在处理一个连续作业一般,如果这一群人里面有个人的动作特别快或特别慢, 将导致前面或者是后面的人事情一堆处理不完!也就是说,这一群人最好能够速度一致较佳! 所以,CPU与外部各元件的速度理论上应该要一致才好。但是因为CPU需要较强大的运算能力, 因为很多判断与数学都是在CPU内处理的,因此CPU开发商就在CPU内再加上一个加速功能, 所以CPU有所谓的外频与倍频! 所谓的外频指的是CPU与外部元件进行资料传输时的速度,倍频则是 CPU 内部用来加速工作效能的一个倍数, 两者相乘才是CPU的时脉速度。我们以刚刚Intel Core 2 Duo E8400 CPU来说,他的时脉是3.0GHz, 而外频是333MHz,因此倍频就是9倍啰!(3.0G=333Mx9, 其中1G=1000M)
前面谈到CPU运算的资料都是由主记忆体提供的,主记忆体与CPU的沟通速度靠的是外部频率, 那么每次工作可以传送的资料量有多大呢?那就是汇流排的功能了。一般主机板晶片组有分北桥与南桥, 北桥的汇流排称为系统汇流排,因为是记忆体传输的主要通道,所以速度较快。 南桥就是所谓的输入输出(I/O)汇流排,主要在联系硬碟、USB、网络卡等周边设备。 目前北桥所支援的频率可高达333/400/533/800/1066/1333/1600MHz等不同频率,支援情况依晶片组功能而有不同。 北桥所支援的频率我们称为前端汇流排速度(Front Side Bus, FSB), 而每次传送的位元数则是汇流排宽度。 那所谓的汇流排频宽则是:‘FSBx汇流排宽度’亦即每秒钟可传送的最大资料量。 目前常见的汇流排宽度有32/64位元(bits)。 而如图 2.1.1中的图示,在该架构中前端汇流排最高速度可达1600MHz。 我们看到记忆体与北桥的频宽为12.8GBytes/s,亦即是1600MHz*64bits = 1600MHz*8Bytes = 12800MByes/s = 12.8GBytes/s 与汇流排宽度相似的,CPU每次能够处理的资料量称为字组大小(word size), 字组大小依据CPU的设计而有32位元与64位元。我们现在所称的电脑是32或64位元主要是依据这个 CPU解析的字组大小而来的!早期的32位元CPU中,因为CPU每次能够解析的资料量有限, 因此由主记忆体传来的资料量就有所限制了。这也导致32位元的CPU最多只能支援最大到4GBytes的记忆体。
由于x86架构的CPU在Intel的Pentium系列(1993年)后就有不统一的脚位与设计,为了将不同种类的CPU规范等级, 所以就有i386,i586,i686等名词出现了。基本上,在Intel Pentium MMX与AMD K6年代的CPU称为i586等级, 而Intel Celeron与AMD Athlon(K7)年代之后的32位元CPU就称为i686等级。 至于目前的64位元CPU则统称为x86_64等级。 目前很多的程序都有对CPU做最佳化的设计,万一哪天你发现一些程序是注明给686的CPU使用时, 就不要将他安装在586以下等级的电脑中,否则可是会无法执行该软件的! 不过,在686倒是可以安装386的软件喔!也就是说,这些东西具有向下相容的能力啦! 记忆体 如同图2.1.3、技嘉主机板示意图中的右上方部分的那四根插槽,那就是主记忆体的插槽了。 主记忆体插槽中间通常有个突起物将整个插槽稍微切分成为两个不等长的距离, 这样的设计可以让使用者在安装主记忆体时,不至于前后脚位安插错误,是一种防呆的设计喔。 前面提到CPU所使用的资料都是来自于主记忆体(main memory),不论是软件程序还是资料,都必须要读入主记忆体后CPU才能利用。 个人电脑的主记忆体主要元件为动态随机存取记忆体(Dynamic Random Access Memory, DRAM), 随机存取记忆体只有在通电时才能记录与使用,断电后资料就消失了。因此我们也称这种RAM为挥发性记忆体。 DRAM根据技术的更新又分好几代,而使用上较广泛的有所谓的SDRAM与DDR SDRAM两种。 这两种记忆体的差别除了在于脚位与工作电压上的不同之外,DDR是所谓的双倍资料传送速度(Double Data Rate), 他可以在一次工作周期中进行两次资料的传送,感觉上就好像是CPU的倍频啦! 所以传输频率方面比SDRAM还要好。新一代的PC大多使用DDR记忆体了。 下表列出SDRAM与DDR SDRAM的型号与频率及频宽之间的关系。
DDR SDRAM又依据技术的发展,有DDR, DDRII, DDRIII等等。
主记忆体除了频率/频宽与型号需要考虑之外,记忆体的容量也是很重要的喔!
因为所有的资料都得要载入记忆体当中才能够被CPU判读,如果记忆体容量不够大的话将会导致某些大容量资料无法被完整的载入,
此时已存在记忆体当中但暂时没有被使用到的资料必须要先被释放,使得可用记忆体容量大于该资料,那份新资料才能够被载入呢!
所以,通常越大的记忆体代表越快速的系统,这是因为系统不用常常释放一些记忆体内部的资料。
以服务器来说,主记忆体的容量有时比CPU的速度还要来的重要的!
由于所有的资料都必须要存放在主记忆体,所以主记忆体的资料宽度当然是越大越好。 但传统的汇流排宽度一般大约仅达64位元,为了要加大这个宽度,因此晶片组厂商就将两个主记忆体汇整在一起, 如果一支记忆体可达64位元,两支记忆体就可以达到128位元了,这就是双通道的设计理念。 如上所述,要启用双通道的功能你必须要安插两支(或四支)主记忆体,这两支记忆体最好连型号都一模一样比较好, 这是因为启动双通道记忆体功能时,资料是同步写入/读出这一对主记忆体中,如此才能够提升整体的频宽啊! 所以当然除了容量大小要一致之外,型号也最好相同啦! 你有没有发现图 2.1.3、技嘉主机板示意图上那四根记忆体插槽的颜色呢?是否分为两种颜色,且两两成对?
为什么要这样设计?答出来了吗?是啦!这种颜色的设计就是为了双通道来的!要启动双通道的功能时,
你必须要将两根容量相同的主记忆体插在相同颜色的插槽当中喔!
理论上,CPU与主记忆体的外频应该要相同才好。不过,因为技术方面的提升,因此这两者的频率速度不会相同,
但外频则应该是一致的较佳。举例来说,上面提到的Intel E8400 CPU外频为333MHz,则应该选用DDR II 667这个型号,
因为该记忆体型号的外频为333MHz之故喔!
除了主记忆体之外,事实上整部个人电脑当中还有许许多多的记忆体存在喔!最为我们所知的就是CPU内的第二层快取记忆体。 我们现在知道CPU的资料都是由主记忆体提供,但主记忆体的资料毕竟得经由北桥送到CPU内。 如果某些很常用的程序或资料可以放置到CPU内部的话,那么CPU资料的读取就不需要透过北桥了! 对于效能来说不就可以大大的提升了?这就是第二层快取的设计概念。第二层快取与主记忆体及CPU的关系如下图所示: 图2.2.1、记忆体相关性 因为第二层快取(L2 cache)整合到CPU内部,因此这个L2记忆体的速度必须要CPU时脉相同。
使用DRAM是无法达到这个时脉速度的,此时就需要静态随机存取记忆体(Static Random Access Memory, SRAM)的帮忙了。
SRAM在设计上使用的电晶体数量较多,价格较高,且不易做成大容量,不过由于其速度快,
因此整合到CPU内成为快取记忆体以加快资料的存取是个不错的方式喔!新一代的CPU都有内建容量不等的L2快取在CPU内部,
以加快CPU的运作效能。
主机板上面的元件是非常多的,而每个元件的参数又具有可调整性。举例来说,CPU与记忆体的时脉是可调整的; 而主机板上面如果有内建的网络卡或者是显示卡时,该功能是否要启动与该功能的各项参数, 是被记录到主机板上头的一个称为CMOS的晶片上,这个晶片需要藉着额外的电源来发挥记录功能, 这也是为什么你的主机板上面会有一颗电池的缘故。 那CMOS内的资料如何读取与更新呢?还记得你的电脑在开机的时候可以按下[Del]按键来进入一个名为BIOS的画面吧? BIOS(Basic Input Output System)是一套程序,这套程序是写死到主机板上面的一个记忆体晶片中, 这个记忆体晶片在没有通电时也能够将资料记录下来,那就是唯读记忆体(Read Only Memory, ROM)。 ROM是一种非挥发性的记忆体。另外,BIOS对于个人电脑来说是非常重要的, 因为他是系统在开机的时候首先会去读取的一个小程序喔! 另外,韧体(firmware)(注7)很多也是使用ROM来进行软件的写入的。 韧体像软件一样也是一个被电脑所执行的程序,然而他是对于硬体内部而言更加重要的部分。例如BIOS就是一个韧体, BIOS虽然对于我们日常操作电脑系统没有什么太大的关系,但是他却控制着开机时各项硬体参数的取得! 所以我们会知道很多的硬体上头都会有ROM来写入韧体这个软件。 BIOS 对电脑系统来讲是非常重要的,因为他掌握了系统硬体的详细资讯与开机设备的选择等等。但是电脑发展的速度太快了, 因此 BIOS 程序码也可能需要作适度的修改才行,所以你才会在很多主机板官网找到 BIOS 的更新程序啊!但是 BIOS 原本使用的是无法改写的 ROM ,因此根本无法修正 BIOS 程序码!为此,现在的 BIOS 通常是写入类似快闪记忆体 (flash) 或 EEPROM (注8) 中。(注9) 显示卡 显示卡插槽如同图 2.1.3、技嘉主机板示意图所示,是在中央较长的插槽! 这张主机板中提供了两个显示卡插槽喔! 显示卡又称为VGA(Video Graphics Array),他对于图形影像的显示扮演相当关键的角色。 一般对于图形影像的显示重点在于解析度与色彩深度,因为每个图像显示的颜色会占用掉记忆体, 因此显示卡上面会有一个记忆体的容量,这个显示卡记忆体容量将会影响到最终你的荧幕解析度与色彩深度的喔! 除了显示卡记忆体之外,现在由于三度空间游戏(3D game)与一些3D动画的流行,因此显示卡的‘运算能力’越来越重要。 一些3D的运算早期是交给CPU去运作的,但是CPU并非完全针对这些3D来进行设计的,而且CPU平时已经非常忙碌了呢! 所以后来显示卡厂商直接在显示卡上面嵌入一个3D加速的晶片,这就是所谓的GPU称谓的由来。 显示卡主要也是透过北桥晶片与CPU、主记忆体等沟通。如前面提到的,对于图形影像(尤其是3D游戏)来说, 显示卡也是需要高速运算的一个元件,所以资料的传输也是越快越好!因此显示卡的规格由早期的PCI导向AGP, 近期AGP又被PCI-Express规格所取代了。如前面技嘉主机板图示当中看到的就是PCI-Express的插槽。 这些插槽最大的差异就是在资料传输的频宽了!如下所示:
比较特殊的是,PCIe(PCI-Express)使用的是类似管线的概念来处理,每条管线可以具有250MBytes/s的频宽效能, 管线越大(最大可达x32)则总频宽越高!目前显示卡大多使用x16的PCIe规格,这个规格至少可以达到4GBytes/s的频宽! 比起AGP是快很多的!此外,新的PCIe 2.0规格也已经推出了,这个规格又可将每个管线的效能提升一倍呢! 好可怕的传输量.... 如果你的主机是用来打3D游戏的,那么显示卡的选购是非常重要喔!如果你的主机是用来做为网络服务器的, 那么简单的入门级显示卡对你的主机来说就非常够用了!因为网络服务器很少用到3D与图形影像功能。
硬碟与储存设备 电脑总是需要记录与读取资料的,而这些资料当然不可能每次都由使用者经过键盘来打字!所以就需要有储存设备咯。
电脑系统上面的储存设备包括有:硬碟、软碟、MO、CD、DVD、磁带机、随身碟(快闪记忆体)、还有新一代的蓝光光碟机等,
乃至于大型机器的区域网络储存设备(SAN, NAS)等等,都是可以用来储存资料的。而其中最常见的应该就是硬碟了吧!
大家应该都看过硬碟吧!硬碟依据桌上型与笔记型电脑而有分为3.5吋及2.5吋的大小。我们以3.5吋的桌上型电脑使用硬碟来说明。 在硬碟盒里面其实是由许许多多的圆形磁碟盘、机械手臂、 磁碟读取头与主轴马达所组成的,整个内部如同下图所示: 图2.4.1、硬碟物理构造(图片取自维基百科) 实际的资料都是写在具有磁性物质的磁碟盘上头,而读写主要是透过在机械手臂上的读取头(head)来达成。 实际运作时, 主轴马达让磁碟盘转动,然后机械手臂可伸展让读取头在磁碟盘上头进行读写的动作。 另外,由于单一磁碟盘的容量有限,因此有的硬碟内部会有两个以上的磁碟盘喔!
既然资料都是写入磁碟盘上头,那么磁碟盘上头的资料又是如何写入的呢? 其实磁碟盘上头的资料有点像下面的图示所示: 图2.4.2、磁碟盘上的资料格式 整个磁碟盘上头好像有多个同心圆绘制出的圆形图,而由圆心以放射状的方式分割出磁碟的最小储存单位,那就是磁区(Sector), 在物理组成分面,每个磁区大小为512Bytes,这个值是不会改变的。而磁区组成一个圆就成为磁轨(track), 如果是在多碟的硬碟上面,在所有磁碟盘上面的同一个磁轨可以组成一个磁柱(Cylinder), 磁柱也是一般我们分割硬碟时的最小单位了! 在计算整个硬碟的储存量时,简单的计算公式就是:‘header数量 * 每个header负责的磁柱数量 *
每个磁柱所含有的磁区数量 * 磁区的容量’,单位换算为‘header * cylinder/header * secter/cylinder *
512bytes/secter’,简单的写法如下: Head x Cylinder x Sector x 512 Bytes。
不过要注意的是,一般硬碟制造商在显示硬碟的容量时,大多是以十进位来编号,因此市售的500GB硬碟,
理论上仅会有460GBytes左右的容量喔!
由于传输速度的需求提升,目前硬碟与主机系统的联系主要有几种传输介面规格: 图2.4.3、两款硬碟介面(左边为IDE介面,右边为SATA介面)
如果你想要增加一颗硬碟在你的主机里头时,除了需要考虑你的主机板可接受的插槽介面(IDE/SATA)之外, 还有什么要注意的呢?
PCI介面卡 PCI介面卡的插槽就如同图2.1.3、技嘉主机板示意图所示的左下方那个白色的插槽, 这种PCI插槽通常会提供多个给使用者,如果使用者有额外需要的功能卡, 就能够安插在这种PCI介面插槽上。 我们在前面显示卡的部分稍微谈过PCI介面,事实上有相当多的元件是使用PCI介面作为传输的, 例如网络卡、音效卡、特殊功能卡等等。但由于PCI Express规格的发展,很多制造商都往PCIe介面开发硬体了。 不过还是有很多硬体使用PCI介面啦,例如大卖场上面常见的网络卡就是一个。 目前在个人电脑上面常见到的网络卡是一种称为乙太网络(Ethernet)的规格,目前乙太网络卡速度轻轻松松的就能到达10/100/1000 Mbits/second的速度,但同样速度的乙太网络卡所支援的标准可能不太一样,因此造成的价差是非常大的。 如果想要在服务器主机上面安装新的网络卡时,得要特别注意标准的差异呢! 由于各元件的价格直直落,现在主机板上面通常已经整合了相当多的设备元件了! 常见整合到主机板的元件包括音效卡、网络卡、USB控制卡、显示卡、磁碟阵列卡等等。 你可以在主机板上面发现很多方形的晶片,那通常是一些个别的设备晶片喔。 由于主机板已经整合了很多常用的功能晶片,所以现在的主机板上面所安插的PCI介面卡就少很多了! 主机板 主机板可以说是整部主机相当重要的一个部分,因为上面我们所谈到的所有元件都是安插在主机板上面的呢! 而主机板上面负责沟通各个元件的就是晶片组,如同图2.1.1、Intel晶片组图示所示, 图中我们也可以发现晶片组一般分为北桥与南桥喔!北桥负责CPU/RAM/VGA等的连接,南桥则负责PCI介面与速度较慢的I/O装置。 由于晶片组负责所有设备的沟通,所以事实上晶片组(尤其是北桥)也是一个可能会散发出高热量的元件。
因此在主机板上面常会发现一些外接的小风扇或者是散热片在这组晶片上面。在本章所附的主机板图示中,
技嘉使用较高散热能力的热导管技术,因此你可以发现图中的南桥与北桥上面覆盖着黄铜色的散热片,
且连接着数根圆形导管,主要就是为了要散热的。
所有的晶片组几乎都是参考CPU的能力去规划的,而CPU能够接受的主记忆体规格也不相同,因此在新购买或升级主机时,CPU、主机板、主记忆体与相关的周边设备都需要同时考虑才行 !此外,每一种晶片组的功能可能都不太相同, 有的晶片组强调的是全功能,因此连显示卡、音效、网络等都整合了,在这样的整合型晶片中, 你几乎只要购买CPU、主机板、主记忆体再加上硬碟,就能够组装成一台主机了。不过整合型晶片的效能通常比较弱, 对于爱玩3D游戏的玩家以及强调高效能运算的主机来说,就不是这么适合了。 至于独立型晶片组虽然可能具有较高的效能,不过你可能必须要额外负担周边设备的CoCo呢!
例如显示卡、网络卡、音效卡等等。但独立型晶片组也有一定程度的好处,那就是你可以随时抽换周边设备。
主机板是负责各个电脑元件之间的沟通,但是电脑元件实在太多了,有输出/输入/不同的储存装置等等, 主机板晶片组怎么知道如何负责沟通呐?这个时候就需要用到所谓的I/O位址与IRQ啰! I/O位址有点类似每个装置的门牌号码,每个装置都有他自己的位址,一般来说,不能有两个装置使用同一个I/O位址, 否则系统就会不晓得该如何运作这两个装置了。而除了I/O位址之外,还有个IRQ中断(Interrupt)这个咚咚。 如果I/O位址想成是各装置的门牌号码的话,那么IRQ就可以想成是各个门牌连接到邮件中心(CPU)的专门路径啰!
各装置可以透过IRQ中断通道来告知CPU该装置的工作情况,以方便CPU进行工作分配的任务。
老式的主机板晶片组IRQ只有15个,如果你的周边介面太多时可能就会不够用,
这个时候你可以选择将一些没有用到的周边介面关掉,以空出一些IRQ来给真正需要使用的介面喔!
当然,也有所谓的sharing IRQ的技术就是了!
前面记忆体的地方我们有提过CMOS与BIOS的功能,在这里我们再来强调一下: CMOS主要的功能为记录主机板上面的重要参数,
包括系统时间、CPU电压与频率、各项设备的I/O位址与IRQ等,由于这些资料的记录要花费电力,因此主机板上面才有电池。
BIOS为写入到主机板上某一块 flash 或 EEPROM 的程序,他可以在开机的时候执行,以载入CMOS当中的参数,
并尝试呼叫储存装置中的开机程序,进一步进入作业系统当中。BIOS程序也可以修改CMOS中的资料,
每种主机板呼叫BIOS设定程序的按键都不同,一般桌上型电脑常见的是使用[del]按键进入BIOS设定画面。
主机板与各项输出/输入设备的连结主要都是在主机机壳的后方,主要有:
我们以技嘉主机板的连结介面来看的话,主要有这些: 图2.6.1、连接周边介面 电源供应器 除了上面这些元件之外,其实还有一个很重要的元件也要来谈一谈,那就是电源供应器(Power)。 在你的机壳内,有个大大的铁盒子,上头有很多电源线会跑出来,那就是电源供应器了。 我们的CPU/RAM/主机板/硬碟等等都需要用电,而近来的电脑元件耗电量越来越高,以前很古早的230W电源已经不够用了, 有的系统甚至得要有500W以上的电源才能够运作~真可怕~ 电源供应器的价差非常大!贵一点的300W可以到4000 NT,便宜一点的300W只要500 NT不到!
怎么差这么多?没错~因为Power的用料不同,电源供应的稳定度也会差很多。如前所述,电源供应器相当于你的心脏,
心脏差的话,活动力就会不足了!所以,
稳定度差的电源供应器甚至是造成电脑不稳定的元凶呢!所以,尽量不要使用太差的电源供应器喔!
电源供应器本身也会吃掉一台份的电力的!如果你的主机系统需要 300W
的电力时,因为电源供应器本身也会消耗掉一台份的电力,
因此你最好要挑选400W以上的电源供应器。电源供应器出厂前会有一些测试数据,最好挑选高转换率的电源供应器。
所谓的高转换率指的是‘输出的功率/输入的功率’。意思是说,假如你的主机板用电量为250W,
但是电源供应器其实已经使用掉320W的电力,则转换率为:250/320=0.78的意思。
这个数值越高表示被电源供应器‘玩掉’的电力越少,那就符合能源效益了!^_^
目前主机板与电源供应器的连接介面主要有20pin与24pin两种规格,购买时也需要考虑你的主机板所需要的规格喔! 选购须知 在购买主机时应该需要进行整体的考量,很难依照某一项标准来选购的。 老实说,如果你的公司需要一台服务器的话,建议不要自行组装,买品牌电脑的服务器比较好! 这是因为自行组装的电脑虽然比较便宜,但是每项设备之间的适合性是否完美则有待自行检测。 另外,在效能方面并非仅考量CPU的能力而已,速度的快慢与‘整体系统的最慢的那个设备有关!’,如果你是使用最快速的Intel Core 2 Duo,使用最快的DDR II记忆体,
但是配上一个慢慢的过时显示卡,那么整体的3D速度效能将会卡在那个显示卡上面喔!所以,在购买整套系统时,
请特别留意需要全部的介面都考虑进去喔!尤其是当您想要升级时,要特别注意这个问题,
并非所有的旧的设备都适合继续使用的。
除此之外,到底那个元件特别容易造成系统的不稳定呢?有几个常见的系统不稳定的状态是:
资料表示方式 事实上我们的电脑只认识0与1,记录的资料也是只能记录0与1而已,所以电脑常用的资料是二进位的。 但是我们人类常用的数值运算是十进位,文字方面则有非常多的语言,台湾常用的语言就有英文、中文(又分正体与简体中文)、日文等。 那么电脑如何记录与显示这些数值/文字呢?就得要透过一系列的转换才可以啦!底下我们就来谈谈数值与文字的编码系统啰! 数字系统 早期的电脑使用的是利用通电与否的特性的真空管,如果通电就是1,没有通电就是0, 后来沿用至今,我们称这种只有0/1的环境为二进位制,英文称为binary的哩。所谓的十进位指的是逢十进一位, 因此在个位数归为零而十位数写成1。所以所谓的二进位,就是逢二就前进一位的意思。 那二进位怎么用呢?我们先以十进位来解释好了。如果以十进位来说,3456的意义为: 3456 = 3x103 + 4x102 + 5x101 +
6x100
特别注意:‘任何数值的零次方为1’所以100的结果就是1啰。 同样的,将这个原理带入二进位的环境中,我们来解释一下1101010的数值转为十进位的话,结果如下: 1101010=1x26 + 1x25 + 0x24 +
1x23 + 0x22 + 1x21 + 0x20
= 64 + 32 + 0x16 + 8 + 0x4 + 2 + 0x1 = 106 这样你了解二进位的意义了吗?二进位是电脑基础中的基础喔!了解了二进位后,八进位、十六进位就依此类推啦! 那么知道二进位转成十进位后,那如果有十进位数值转为二进位的环境时,该如何计算? 刚刚是乘法,现在则是除法就对了!我们同样的使用十进位的106转成二进位来测试一下好了: 图3.1.1、十进位转二进位的方法 最后的写法就如同上面的红色箭头,由最后的数字向上写,因此可得到1101010的数字啰! 这些数字的转换系统是非常重要的,因为电脑的加减乘除都是使用这些机制来处理的! 有兴趣的朋友可以再参考一下其他计算计概论的书籍中,关于1的补数/2的补数等运算方式喔! 文字编码系统 既然电脑都只有记录0/1而已,甚至记录的资料都是使用byte/bit等单位来记录的,那么文字该如何记录啊? 事实上文字文件也是被记录为0与1而已,而这个文件的内容要被取出来查阅时,必须要经过一个编码系统的处理才行。 所谓的‘编码系统’可以想成是一个‘字码对照表’,他的概念有点像底下的图示: 图3.2.1、资料参考编码表的示意图 当我们要写入文件的文字资料时,该文字资料会由编码对照表将该文字转成数字后,再存入文件当中。 同样的,当我们要将文件内容的资料读出时,也会经过编码对照表将该数字转成对应的文字后,再显示到荧幕上。 现在你知道为何浏览器上面如果编码写错时,会出现乱码了吗?这是因为编码对照表写错, 导致对照的文字产生误差之故啦! 常用的英文编码表为ASCII系统,这个编码系统中, 每个符号(英文、数字或符号等)都会占用1bytes的记录, 因此总共会有28=256种变化。至于中文字当中的编码系统目前最常用的就是big5这个编码表了。 每个中文字会占用2bytes,理论上最多可以有216=65536,亦即最多可达6万多个中文字。 但是因为big5编码系统并非将所有的位元都拿来运用成为对照,所以并非可达这么多的中文字码的。 目前big5仅定义了一万三千多个中文字,很多中文利用big5是无法成功显示的~所以才会有造字程序说。 big5码的中文字编码对于某些资料库系统来说是很有问题的,某些字码例如‘许、盖、功’等字, 由于这几个字的内部编码会被误判为单/双引号,在写入还不成问题,在读出资料的对照表时, 常常就会变成乱码。不只中文字,其他非英语系国家也常常会有这样的问题出现啊! 为了解决这个问题,由国际组织ISO/IEC跳出来制订了所谓的Unicode编码系统, 我们常常称呼的UTF8或万国码的编码就是这个咚咚。因为这个编码系统打破了所有国家的不同编码, 因此目前网际网络社会大多朝向这个编码系统在走,所以各位亲爱的朋友啊,记得将你的编码系统修订一下喔! 软件程序运作 鸟哥在上课时常常会开玩笑的问:‘我们知道没有插电的电脑是一堆废铁,那么插了电的电脑是什么?’ 答案是:‘一堆会电人的废铁’!这是因为没有软件的运作,电脑的功能就无从发挥之故。 就好像没有了灵魂的躯体也不过就是行尸走肉,重点在于软件/灵魂啰!所以底下咱们就得要了解一下‘软件’是什么。 一般来说,目前的电脑系统将软件分为两大类,一个是系统软件,一个是应用程序。但鸟哥认为我们还是得要了解一下什么是程序,
尤其是机器程序,了解了之后再来探讨一下为什么现今的电脑系统需要‘作业系统’这玩意儿呢! 机器程序与编译程序 我们前面谈到电脑只认识0与1而已,而且电脑最重要的运算与逻辑判断是在CPU内部, 而CPU其实是具有微指令集的。因此,我们需要CPU帮忙工作时,就得要参考微指令集的内容, 然后撰写让CPU读的懂得指令码给CPU执行,这样就能够让CPU运作了。 不过这样的流程有几个很麻烦的地方,包括:
那怎么解决啊?为了解决这个问题,电脑科学家设计出一种让人类看的懂得程序语言, 然后创造一种‘编译器’来将这些人类能够写的程序语言转译成为机器能看懂得机器码, 如此一来我们修改与撰写程序就变的容易多了!目前常见的编译器有C, C++, Java, Fortran等等。 机器语言与高阶程序语言的差别如下所示: 图4.1.1、编译器的角色 从上面的图示我们可以看到高阶程序语言的程序码是很容易察看的!鸟哥已将经程序码(英文)写成中文说~ 这样比较好理解啦!所以这样已经将程序的修改问题处理完毕了。 问题是,在这样的环境底下我们还是得要考量整体的硬体系统来设计程序喔! 举例来说,当你需要将运作的资料写入记忆体中,你就得要自行分配一个记忆体区块出来让自己的资料能够填上去, 所以你还得要了解到记忆体的位址是如何定位的,啊!眼泪还是不知不觉的流了下来... 怎么写程序这么麻烦啊! 为了要克服硬体方面老是需要重复撰写控制码的问题,所以就有作业系统(Operating System, OS)的出现了! 什么是作业系统呢?底下就来谈一谈先! 作业系统 如同前面提到的,在早期想要让电脑执行程序就得要参考一堆硬体功能函数,并且学习机器语言才能够撰写程序。
同时每次写程序时都必须要重新改写,因为硬体与软件功能不见得都一致之故。那如果我能够将所有的硬体都驱动,
并且提供一个发展软件的参考介面来给工程师开发软件的话,那发展软件不就变的非常的简单了?那就是作业系统啦!
作业系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬体。 我们刚刚谈到电脑没有软件只是一堆废铁,那么作业系统的功能就是让CPU可以开始判断逻辑与运算数值、 让主记忆体可以开始载入/读出资料与程序码、让硬碟可以开始被存取、让网络卡可以开始传输资料、 让所有周边可以开始运转等等。总之,硬体的所有动作都必须要透过这个作业系统来达成就是了。 上述的功能就是作业系统的核心(Kernel)了!你的电脑能不能做到某些事情,都与核心有关! 只有核心有提供的功能,你的电脑系统才能帮你完成!举例来说,你的核心并不支援TCP/IP的网络协定, 那么无论你购买了什么样的网卡,这个核心都无法提供网络能力的! 但是单有核心我们使用者也不知道能作啥事的~因为核心主要在管控硬体与提供相关的能力(例如网络功能), 这些管理的动作是非常的重要的,如果使用者能够直接使用到核心的话,万一使用者不小心将核心程序停止或破坏, 将会导致整个系统的崩溃!因此核心程序所放置到记忆体当中的区块是受保护的! 并且开机后就一直常驻在记忆体当中。
既然我的硬体都是由核心管理,那么如果我想要开发软件的话,自然就得要去参考这个核心的相关功能! 唔!如此一来不是从原本的参考硬体函数变成参考核心功能,还是很麻烦啊!有没有更简单的方法啊! 为了解决这个问题,作业系统通常会提供一整组的开发介面给工程师来开发软件! 工程师只要遵守该开发介面那就很容易开发软件了!举例来说,我们学习C程序语言只要参考C程序语言的函式即可, 不需要再去考量其他核心的相关功能,因为核心的系统呼叫介面会主动的将C程序语言的相关语法转成核心可以了解的任务函数, 那核心自然就能够顺利运作该程序了! 如果我们将整个电脑系统的相关软/硬体绘制成图的话,他的关系有点像这样: 图4.2.1、作业系统的角色 电脑系统主要由硬体构成,然后核心程序主要在管理硬体,提供合理的电脑系统资源分配(包括CPU资源、记忆体使用资源等等), 因此只要硬体不同(如x86架构与RISC架构的CPU),核心就得要进行修改才行。 而由于核心只会进行电脑系统的资源分配,所以在上头还需要有应用程序的提供,使用者才能够操作系统的。 为了保护核心,并且让程序设计师比较容易开发软件,因此作业系统除了核心程序之外,通常还会提供一整组开发介面, 那就是系统呼叫层。软件开发工程师只要遵循公认的系统呼叫参数来开发软件,该软件就能够在该核心上头运作。 所以你可以发现,软件与核心有比较大的关系,与硬体关系则不大!硬体也与核心有比较大的关系! 至于与使用者有关的,那就是应用程序啦!
简单的说,上面的图示可以带给我们底下的概念:
既然核心主要是在负责整个电脑系统相关的资源分配与管理,那我们知道其实整部电脑系统最重要的就是CPU与主记忆体, 因此,核心至少也要有这些功能的:
老实说,驱动程序可以说是作业系统里面相当重要的一环了!不过,硬体可是持续在进步当中的! 包括主机板、显示卡、硬碟等等。那么比较晚推出的较新的硬体,例如显示卡,我们的作业系统当然就不认识啰! 那作业系统该如何驱动这块新的显示卡?为了克服这个问题,作业系统通常会提供一个开发介面给硬体开发商, 让他们可以根据这个介面设计可以驱动他们硬体的‘驱动程序’,如此一来,只要使用者安装驱动程序后, 自然就可以在他们的作业系统上面驱动这块显示卡了。 图4.2.2、驱动程序与作业系统的关系 由上图我们可以得到几个小重点:
所以,如果你想要在某个作业系统上面安装一张新的显示卡,那么请要求该硬体厂商提供适当的驱动程序吧! ^_^! 为什么要强调‘适当的驱动程序’呢? 因为驱动程序仍然是依据作业系统而开发的, 所以,给Windows用的驱动程序当然不能使用于Linux的环境下了。 应用程序 应用程序是参考作业系统提供的开发介面所开发出来软件,这些软件可以让使用者操作,以达到某些电脑的功能利用。 举例来说,办公室软件(Office)主要是用来让使用者办公用的;影像处理软件主要是让使用者用来处理影音资料的; 浏览器软件主要是让使用者用来上网浏览用的等等。 需要注意的是,应用程序是与作业系统有关系的,如同上面的图示当中的说明喔。因此,如果你想要购买新软件, 请务必参考软件上面的说明,看看该软件是否能够支援你的作业系统啊!举例来说,如果你想要购买线上游戏光碟, 务必参考一下该光碟是否支援你的作业系统,例如是否支援Windows XP/Windows Vista/MAC/Linux等等。 不要购买了才发现该软件无法安装在你的作业系统上喔! 我们拿常见的微软公司的产品来说明。你知道Windows XP, Office 2007之间的关系了吗?
重点回顾
本章习题
参考资料与延伸阅读
2008/07/22:利用暑假期间足足写了快要两个星期这篇才写完!好多图示都不知道如何呈现比较漂亮~@_@ 2008/07/29:又加入了SATA/IDE的连线排线,还有一些额外的图示。 2009/08/03:加入电源供应器是心脏一词的说明 2009/08/03:更正原本 BIOS 只放于 ROM 的资料,新的 BIOS 通常放于 EEPROM 或 Flash 记忆体中。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||