学操作系统之前还是要对计算机有一定的概念比较妥当!
进入二十一世纪的现在,没有用过电脑的朋友应该算很少了吧?但是,你了解电脑是什么吗? 电脑的机壳里面含有什么组件?不同的电脑可以作什么事情?你生活周遭有哪些电器用品内部是含有电脑相关组件的? 底下我们就来谈一谈这些东西呢!
所谓的电脑就是一种计算机,而计算机其实是:『接受用户输入指令与数据, 经由中央处理器的数学与逻辑单元运算处理后,以产生或保存成有用的信息』。 因此,只要有输入设备 (不管是键盘还是触摸屏)及输出设备(屏幕或直接打印出来),让你可以输入数据使该机器产生信息的, 那就是一部计算机了。
根据这个定义你知道哪些东西是计算机了吗?包括一般商店用的简易型加减乘除计算机、打电话用的手机、开车用的卫星定位系统 (GPS)、提款用的提款机 (ATM)、你常使用的桌面型个人电脑、可携带的笔记本电脑还有这两年 (2008, 2009) 很火红的 Eee PC (或称为 netbook) 等等,这些都是计算机!
那么计算机主要的组成组件是什么呢?底下我们以常见的个人电脑来作为说明。
关于电脑的组成部分,其实你可以观察你的台式机分析一下,依外观来说这家伙主要分为三部分:
我们主要通过输入设备如鼠标与键盘来将一些数据输入到主机里面,然后再由主机的功能处理成为图表或文章等信息后, 将结果传输到输出设备,如屏幕或打印机上面。重点在于主机里面含有什么组件呢?如果你曾经拆开过电脑主机机壳, 会发现其实主机里面最重要的就是一片主板,上面安插了中央处理器 (CPU) 以及主内存还有一些适配器设备而已。
整部主机的重点在于中央处理器 (Central Processing Unit, CPU),CPU 为一个具有特定功能的芯片, 里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关内置的微指令集才可以。 由于 CPU 的工作主要在于管理与运算,因此在 CPU 内又可分为两个主要的单元,分别是: 算数逻辑单元与控制单元。(注1) 其中算数逻辑单元主要负责程序运算与逻辑判断,控制单元则主要在协调各周边组件与各单元间的工作。
既然 CPU 的重点是在进行运算与判断,那么要被运算与判断的数据是从哪里来的? CPU 读取的数据都是从主内存来的! 主内存内的数据则是从输入单元所传输进来!而 CPU 处理完毕的数据也必须要先写回主内存中, 最后数据才从主内存传输到输出单元。
综合上面所说的,我们会知道其实电脑是由几个单元所组成的,包括输入单元、 输出单元、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特色也可以考虑喔!
例题:
最新的Intel/AMD的x86架构中,请查找出多媒体、虚拟化、省电功能各有哪些重要的微指令集?(仅供参考)
答:
|
单有CPU也无法运作电脑的,所以电脑还需要其他的周边设备才能够实际运作。 除了前面稍微提到的输入/输出设备,以及CPU与主内存之外,还有什么周边设备呢? 其实最重要的周边设备是主板!因为主板负责将所有的设备通通连接在一起,让所有的设备能够进行协调与沟通。 而主板上面最重要的组件就是主板芯片组!这个芯片组可以将所有的设备汇集在一起!
其他重要的设备还有:
更详细的各项周边设备我们将在下个小节进行介绍!在这里我们先来了解一下各组件的关系啰! 那就是,电脑是如何运作的呢?
如果不是很了解电脑的运作流程,鸟哥拿个简单的想法来思考好了~ 假设电脑是一个人体,那么每个组件对应到那个地方呢?可以这样思考:
由这样的关系图当中,我们知道整个活动中最重要的就是脑袋瓜子! 而脑袋瓜子当中与现在正在进行的工作有关的就是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 等。 而这些单位在不同的进制下有不同的数值表示,底下就列出常见的单位与进制对应:
进制 | K | M | G | T | P |
二进位 | 1024 | 1024K | 1024M | 1024G | 1024T |
十进位 | 1000 | 1000K | 1000M | 1000G | 1000T |
一般来说,文件容量使用的是二进位的方式,所以 1 GBytes 的文件大小实际上为:1024x1024x1024 Bytes 这么大! 速度单位则常使用十进位,例如 1GHz 就是 1000x1000x1000 Hz 的意思。
CPU的运算速度常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少 Mbit。举例来说,大家常听到的 8M/1M ADSL 传输速度,如果转成文件容量的 byte 时,其实理论最大传输值为:每秒 1Mbyte/ 每秒125Kbyte的下载/上传容量喔!
例题:
假设你今天购买了500GB的硬盘一颗,但是格式化完毕后却只剩下460GB左右的容量,这是什么原因?
答:
因为一般硬盘制造商会使用十进位的单位,所以500GByte代表为500*1000*1000*1000Byte之意。
转成文件的容量单位时使用二进位(1024为底),所以就成为466GB左右的容量了。
硬盘厂商并非要骗人,只是因为硬盘的最小物理量为512Bytes,最小的组成单位为磁区(sector), 通常硬盘容量的计算采用『多少个sector』,所以才会使用十进位来处理的。相关的硬盘信息在这一章后面会提到的! |
一般消费者常说的电脑通常指的就是x86的个人电脑架构,因此我们有必要来了解一下这个架构的各个组件。 事实上,Linux最早在发展的时候,就是依据个人电脑的架构来发展的,所以,真的得要了解一下呢! 另外,因为两大主流x86开发商(Intel, AMD)的CPU架构并不兼容,而且设计理念也有所差异, 所以两大主流CPU所需要的主板芯片组设计也就不太相同。目前(2009)最新的主板架构主要是这样的:
就如同前一小节提到的,整个主板上面最重要的就是芯片组了!而芯片组通常又分为两个桥接器来控制各组件的沟通, 分别是:(1)北桥:负责链接速度较快的CPU、主内存与显卡等组件;(2)南桥:负责连接速度较慢的周边接口, 包括硬盘、USB、网络卡等等。(芯片组的南北桥与三国的大小乔没有关系 @_@)至于AMD的芯片组架构如下所示:
与Intel不同的地方在于主内存是直接与CPU沟通而不通过北桥!从前面的说明我们可以知道CPU的数据主要都是来自于主内存提供, 因此AMD为了加速这两者的沟通,所以将内存控件集成到CPU当中, 理论上这样可以加速CPU与主内存的传输速度!这是两种CPU在架构上面主要的差异点。
毕竟目前世界上x86的CPU主要供应商为Intel,所以底下鸟哥将以Intel的主板架构说明各组件啰! 我们以技嘉公司出的主板,型号:Gigabyte GA-X48-DQ6作为一个说明的范例,主板各组件如下所示:
主要的组件为:CPU、主内存、磁盘设备(IDE/SATA)、总线芯片组(南桥/北桥)、显卡接口(PCI-Express)与其他适配器(PCI)。 底下的各项组件在讲解时,请参考Intel芯片组架构与技嘉主板各组件来印证喔!
如同技嘉主板示意图上最上方的中央部分,那就是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喔!
我们前面谈到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的型号与频率及带宽之间的关系。
SDRAM/DDR | 型号 | 数据宽度(bit) | 外频(MHz) | 频率速度 | 带宽(频率x宽度) |
SDRAM | PC100 | 64 | 100 | 100 | 800MBytes/sec |
SDRAM | PC133 | 64 | 133 | 133 | 1064MBytes/sec |
DDR | DDR266 | 64 | 133 | 266 | 2.1GBytes/sec |
DDR | DDR400 | 64 | 200 | 400 | 3.2GBytes/sec |
DDR | DDRII800 | 64 | 200 | 800 | 6.4GBytes/sec |
DDR SDRAM又依据技术的发展,有DDR, DDRII, DDRIII等等,其中,DDRII 的频率倍数则是 4 倍喔!
主内存除了频率/带宽与型号需要考虑之外,内存的容量也是很重要的喔! 因为所有的数据都得要加载内存当中才能够被CPU判读,如果内存容量不够大的话将会导致某些大容量数据无法被完整的加载, 此时已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用内存容量大于该数据,那份新数据才能够被加载呢! 所以,通常越大的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的数据。 以服务器来说,主内存的容量有时比CPU的速度还要来的重要的!
由于所有的数据都必须要存放在主内存,所以主内存的数据宽度当然是越大越好。 但传统的总线宽度一般大约仅达64比特,为了要加大这个宽度,因此芯片组厂商就将两个主内存汇整在一起, 如果一支内存可达64比特,两支内存就可以达到128比特了,这就是双信道的设计理念。
如上所述,要激活双信道的功能你必须要安插两支(或四支)主内存,这两支内存最好连型号都一模一样比较好, 这是因为启动双信道内存功能时,数据是同步写入/读出这一对主内存中,如此才能够提升整体的带宽啊! 所以当然除了容量大小要一致之外,型号也最好相同啦!
你有没有发现图 2.1.3、技嘉主板示意图上那四根内存插槽的颜色呢?是否分为两种颜色,且两两成对? 为什么要这样设计?答出来了吗?是啦!这种颜色的设计就是为了双信道来的!要启动双信道的功能时, 你必须要将两根容量相同的主内存插在相同颜色的插槽当中喔!
理论上,CPU与主内存的外频应该要相同才好。不过,因为技术方面的提升,因此这两者的频率速度不会相同, 但外频则应该是一致的较佳。举例来说,上面提到的Intel E8400 CPU外频为333MHz,则应该选用DDR II 667这个型号, 因为该内存型号的外频为333MHz之故喔!
除了主内存之外,事实上整部个人电脑当中还有许许多多的内存存在喔!最为我们所知的就是CPU内的第二层高速缓存。 我们现在知道CPU的数据都是由主内存提供,但主内存的数据毕竟得经由北桥送到CPU内。 如果某些很常用的程序或数据可以放置到CPU内部的话,那么CPU数据的读取就不需要通过北桥了! 对于性能来说不就可以大大的提升了?这就是第二层缓存的设计概念。第二层缓存与主内存及CPU的关系如下图所示:
因为第二层缓存(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的插槽。 这些插槽最大的差异就是在数据传输的带宽了!如下所示:
规格 | 宽度 | 速度 | 带宽 |
PCI | 32 bits | 33 MHz | 133 MBytes/s |
PCI 2.2 | 64 bits | 66 MHz | 533 MBytes/s |
PCI-X | 64 bits | 133 MHz | 1064 MBytes/s |
AGP 4x | 32 bits | 66x4 MHz | 1066 MBytes/s |
AGP 8x | 32 bits | 66x8 MHz | 2133 MBytes/s |
PCIe x1 | 无 | 无 | 250 MBytes/s |
PCIe x8 | 无 | 无 | 2 GBytes/s |
PCIe x16 | 无 | 无 | 4 GBytes/s |
比较特殊的是,PCIe(PCI-Express)使用的是类似管线的概念来处理,每条管线可以具有250MBytes/s的带宽性能, 管线越大(最大可达x32)则总带宽越高!目前显卡大多使用x16的PCIe规格,这个规格至少可以达到4GBytes/s的带宽! 比起AGP是快很多的!此外,新的PCIe 2.0规格也已经推出了,这个规格又可将每个管线的性能提升一倍呢! 好可怕的传输量....
如果你的主机是用来打3D游戏的,那么显卡的选购是非常重要喔!如果你的主机是用来做为网络服务器的, 那么简单的入门级显卡对你的主机来说就非常够用了!因为网络服务器很少用到3D与图形图像功能。
例题:
假设你的桌面使用1024x768分辨率,且使用全彩(每个像素占用3bytes的容量),请问你的显卡至少需要多少内存才能使用这样的彩度?
答:
因为1024x768分辨率中会有786432个像素,每个像素占用3bytes,所以总共需要2.25MBytes以上才行!
但如果考虑屏幕的更新率(每秒钟屏幕的更新次数),显卡的内存还是越大越好!
|
电脑总是需要记录与读取数据的,而这些数据当然不可能每次都由用户经过键盘来打字!所以就需要有保存设备咯。 电脑系统上面的保存设备包括有:硬盘、软碟、MO、CD、DVD、磁带机、U盘(闪存)、还有新一代的蓝光光驱等, 乃至于大型机器的局域网路保存设备(SAN, NAS)等等,都是可以用来保存数据的。而其中最常见的应该就是硬盘了吧!
大家应该都看过硬盘吧!硬盘依据桌面型与笔记本电脑而有分为3.5吋及2.5吋的大小。我们以3.5吋的台式机使用硬盘来说明。 在硬盘盒里面其实是由许许多多的圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成的,整个内部如同下图所示:
实际的数据都是写在具有磁性物质的磁盘盘上头,而读写主要是通过在机械手臂上的读取头(head)来达成。 实际运作时, 主轴马达让磁盘盘转动,然后机械手臂可伸展让读取头在磁盘盘上头进行读写的动作。 另外,由於单一磁盘盘的容量有限,因此有的硬盘内部会有两个以上的磁盘盘喔!
既然数据都是写入磁盘盘上头,那么磁盘盘上头的数据又是如何写入的呢? 其实磁盘盘上头的数据有点像下面的图标所示:
整个磁盘盘上头好像有多个同心圆绘制出的圆形图,而由圆心以放射状的方式分割出磁盘的最小保存单位,那就是磁区(Sector), 在物理组成分面,每个磁区大小为512Bytes,这个值是不会改变的。而磁区组成一个圆就成为磁道(track), 如果是在多碟的硬盘上面,在所有磁盘盘上面的同一个磁道可以组成一个磁柱(Cylinder), 磁柱也是一般我们分割硬盘时的最小单位了!
在计算整个硬盘的保存量时,简单的计算公式就是:『header数量 * 每个header负责的磁柱数量 * 每个磁柱所含有的磁区数量 * 磁区的容量』,单位换算为『header * cylinder/header * secter/cylinder * 512bytes/secter』,简单的写法如下: Head x Cylinder x Sector x 512 Bytes。 不过要注意的是,一般硬盘制造商在显示硬盘的容量时,大多是以十进位来编号,因此市售的500GB硬盘, 理论上仅会有460GBytes左右的容量喔!
由于传输速度的需求提升,目前硬盘与主机系统的联系主要有几种传输接口规格:
如果你想要增加一颗硬盘在你的主机里头时,除了需要考虑你的主板可接受的插槽接口(IDE/SATA)之外, 还有什么要注意的呢?
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设置画面。
主板与各项输出/输入设备的链接主要都是在主机机壳的后方,主要有:
我们以技嘉主板的链接接口来看的话,主要有这些:
除了上面这些组件之外,其实还有一个很重要的组件也要来谈一谈,那就是电源供应器(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的意义为:
特别注意:『任何数值的零次方为1』所以100的结果就是1啰。 同样的,将这个原理带入二进位的环境中,我们来解释一下1101010的数值转为十进位的话,结果如下:
这样你了解二进位的意义了吗?二进位是电脑基础中的基础喔!了解了二进位后,八进位、十六进位就依此类推啦! 那么知道二进位转成十进位后,那如果有十进位数值转为二进位的环境时,该如何计算? 刚刚是乘法,现在则是除法就对了!我们同样的使用十进位的106转成二进位来测试一下好了:
最后的写法就如同上面的红色箭头,由最后的数字向上写,因此可得到1101010的数字啰! 这些数字的转换系统是非常重要的,因为电脑的加减乘除都是使用这些机制来处理的! 有兴趣的朋友可以再参考一下其他计算计概论的书籍中,关于1的补数/2的补数等运算方式喔!
既然电脑都只有记录0/1而已,甚至记录的数据都是使用byte/bit等单位来记录的,那么文本该如何记录啊? 事实上文本文件也是被记录为0与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等等。 机器语言与高端编程语言的差别如下所示:
从上面的图标我们可以看到高端编程语言的代码是很容易察看的!鸟哥已经将代码(英文)写成中文说~ 这样比较好理解啦!所以这样已经将程序的修改问题处理完毕了。 问题是,在这样的环境底下我们还是得要考量整体的硬件系统来设计程序喔!
举例来说,当你需要将运作的数据写入内存中,你就得要自行分配一个内存区块出来让自己的数据能够填上去, 所以你还得要了解到内存的地址是如何定位的,啊!眼泪还是不知不觉的流了下来... 怎么写程序这么麻烦啊!
为了要克服硬件方面老是需要重复撰写控制码的问题,所以就有操作系统(Operating System, OS)的出现了! 什么是操作系统呢?底下就来谈一谈先!
如同前面提到的,在早期想要让电脑运行程序就得要参考一堆硬件功能函数,并且学习机器语言才能够撰写程序。 同时每次写程序时都必须要重新改写,因为硬件与软件功能不见得都一致之故。那如果我能够将所有的硬件都驱动, 并且提供一个发展软件的参考接口来给工程师开发软件的话,那发展软件不就变的非常的简单了?那就是操作系统啦!
操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。 我们刚刚谈到电脑没有软件只是一堆废铁,那么操作系统的功能就是让CPU可以开始判断逻辑与运算数值、 让主内存可以开始加载/读出数据与代码、让硬盘可以开始被访问、让网络卡可以开始传输数据、 让所有周边可以开始运转等等。总之,硬件的所有动作都必须要通过这个操作系统来达成就是了。
上述的功能就是操作系统的内核(Kernel)了!你的电脑能不能做到某些事情,都与内核有关! 只有内核有提供的功能,你的电脑系统才能帮你完成!举例来说,你的内核并不支持TCP/IP的网络协定, 那么无论你购买了什么样的网卡,这个内核都无法提供网络能力的!
但是单有内核我们用户也不知道能作啥事的~因为内核主要在管控硬件与提供相关的能力(例如网络功能), 这些管理的动作是非常的重要的,如果用户能够直接使用到内核的话,万一用户不小心将内核程序停止或破坏, 将会导致整个系统的崩溃!因此内核程序所放置到内存当中的区块是受保护的! 并且开机后就一直常驻在内存当中。
既然我的硬件都是由内核管理,那么如果我想要开发软件的话,自然就得要去参考这个内核的相关功能! 唔!如此一来不是从原本的参考硬件函数变成参考内核功能,还是很麻烦啊!有没有更简单的方法啊!
为了解决这个问题,操作系统通常会提供一整组的开发接口给工程师来开发软件! 工程师只要遵守该开发接口那就很容易开发软件了!举例来说,我们学习C编程语言只要参考C编程语言的函数即可, 不需要再去考量其他内核的相关功能,因为内核的系统调用接口会主动的将C编程语言的相关语法转成内核可以了解的任务函数, 那内核自然就能够顺利运作该程序了!
如果我们将整个电脑系统的相关软/硬件绘制成图的话,他的关系有点像这样:
电脑系统主要由硬件构成,然后内核程序主要在管理硬件,提供合理的电脑系统资源分配(包括CPU资源、内存使用资源等等), 因此只要硬件不同(如x86架构与RISC架构的CPU),内核就得要进行修改才行。 而由于内核只会进行电脑系统的资源分配,所以在上头还需要有应用程序的提供,用户才能够操作系统的。
为了保护内核,并且让程序员比较容易开发软件,因此操作系统除了内核程序之外,通常还会提供一整组开发接口, 那就是系统调用层。软件开发工程师只要遵循公认的系统调用参数来开发软件,该软件就能够在该内核上头运作。 所以你可以发现,软件与内核有比较大的关系,与硬件关系则不大!硬件也与内核有比较大的关系! 至于与用户有关的,那就是应用程序啦!
简单的说,上面的图标可以带给我们底下的概念:
既然内核主要是在负责整个电脑系统相关的资源分配与管理,那我们知道其实整部电脑系统最重要的就是CPU与主内存, 因此,内核至少也要有这些功能的:
老实说,驱动程序可以说是操作系统里面相当重要的一环了!不过,硬件可是持续在进步当中的! 包括主板、显卡、硬盘等等。那么比较晚推出的较新的硬件,例如显卡,我们的操作系统当然就不认识啰! 那操作系统该如何驱动这块新的显卡?为了克服这个问题,操作系统通常会提供一个开发接口给硬件开发商, 让他们可以根据这个接口设计可以驱动他们硬件的『驱动程序』,如此一来,只要用户安装驱动程序后, 自然就可以在他们的操作系统上面驱动这块显卡了。
由上图我们可以得到几个小重点:
所以,如果妳想要在某个操作系统上面安装一张新的显卡,那么请要求该硬件厂商提供适当的驱动程序吧! ^_^! 为什么要强调『适当的驱动程序』呢? 因为驱动程序仍然是依据操作系统而开发的, 所以,给Windows用的驱动程序当然不能使用于Linux的环境下了。
应用程序是参考操作系统提供的开发接口所开发出来软件,这些软件可以让用户操作,以达到某些电脑的功能利用。 举例来说,办公室软件(Office)主要是用来让用户办公用的;图像处理软件主要是让用户用来处理影音数据的; 浏览器软件主要是让用户用来上网浏览用的等等。
需要注意的是,应用程序是与操作系统有关系的,如同上面的图标当中的说明喔。因此,如果你想要购买新软件, 请务必参考软件上面的说明,看看该软件是否能够支持你的操作系统啊!举例来说,如果你想要购买在线游戏光盘, 务必参考一下该光盘是否支持你的操作系统,例如是否支持Windows XP/Windows Vista/MAC/Linux等等。 不要购买了才发现该软件无法安装在你的操作系统上喔!
我们拿常见的微软公司的产品来说明。妳知道Windows XP, Office 2007之间的关系了吗?