第零章、计算机概论

最近更新日期:2009/08/03
这几年鸟哥开始在大学任教了,在教学的经验中发现到,由於对 Linux 有兴趣的朋友很多可能并非信息相关科系出身, 因此对於计算机硬件及计算机方面的概念不熟。然而操作系統跟硬件有相当程度的关连性, 所以,如果不了解一下计算机概论,要很快的了解 Linux 的概念是有点难度的。因此,鸟哥就自作聪明的新增一个小章节来谈谈计概罗! 因为鸟哥也不是信息相关学门出身,所以,写的不好的地方请大家多多指教啊!^_^


计算机:辅助人脑的好工具


进入二十一世纪的现在,没有用过计算机的朋友应该算很少了吧?但是,你了解计算机是什么吗? 计算机的机壳里面含有什么组件?不同的计算机可以作什么事情?你生活周遭有哪些电器用品内部是含有计算机相关组件的? 底下我们就来谈一谈这些东西呢!

所谓的电脑就是一种计算机,而计算机其实是:『接受使用者输入指令与数据, 经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的信息』。 因此,只要有输入设备 (不管是键盘还是触控式萤幕)及输出设备(萤幕或直接打印出来),让你可以输入数据使该机器产生信息的, 那就是一部计算机了。

计算机的功能
图1.1.1、计算机的功能

根据这个定义你知道哪些东西是计算机了吗?包括一般商店用的简易型加减乘除计算机、打电话用的手机、开车用的卫星定位系统 (GPS)、提款用的提款机 (ATM)、你常使用的桌上型个人计算机、可携带的笔记型计算机还有这两年 (2008, 2009) 很火红的 Eee PC (或称为 netbook) 等等,这些都是计算机!

那么计算机主要的组成组件是什么呢?底下我们以常见的个人计算机来作为说明。


计算机硬件的五大单元


关於计算机的组成部分,其实你可以观察你的桌上型计算机分析一下,依外观来说这家伙主要分为三部分:

  • 输入单元:包括键盘、鼠標、读卡机、扫描器、手写板、触控萤幕等等一堆;
  • 主机部分:这个就是系统单元,被主机机壳保护住了,里面含有 CPU 与主内存等;
  • 输出单元:例如萤幕、打印机等等

我们主要透过输入设备如鼠标与键盘来将一些数据输入到主机里面,然后再由主机的功能处理成为图表或文章等信息后, 将结果传输到输出设备,如萤幕或印表机上面。重点在於主机里面含有什么组件呢?如果你曾经拆开过计算机主机机壳, 会发现其实主机里面最重要的就是一片主机板,上面安插了中央处理器 (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种类的差异!


  • 精简指令集(Reduced Instruction Set Computer, RISC):(注3)

这种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)


  • 复杂指令集(Complex Instruction Set Computer, CISC):(注5)

与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架构中,请查询出多媒体、虚拟化、省电功能各有哪些重要的微指令集?(仅供参考)
答:
  • 多媒体微指令集:MMX, SSE, SSE2, SSE3, SSE4, AMD-3DNow!
  • 虚拟化微指令集:Intel-VT, AMD-SVM
  • 省电功能:Intel-SpeedStep, AMD-PowerNow!
  • 64/32位相容技术:AMD-AMD64, Intel-EM64T


周边设备


单有CPU也无法运作计算机的,所以计算机还需要其他的周边设备才能够实际运作。 除了前面稍微提到的输入/输出设备,以及CPU与主内存之外,还有什么周边设备呢? 其实最重要的周边设备是主机板!因为主机板负责将所有的设备通通连接在一起,让所有的设备能够进行协调与沟通。 而主机板上面最重要的组件就是主机板芯片组!这个芯片组可以将所有的设备汇集在一起!

其他重要的设备还有:

  • 储存装置:储存装置包括硬盘、软盘、光盘、磁带等等;
  • 显示装置:显示卡对於玩3D游戏来说是非常重要的一环,他与显示的精致度、色彩与解析度都有关系;
  • 网络装置:没有网络活不下去啊!所以网络卡对於计算机来说也是相当重要的!

更详细的各项周边装置我们将在下个小节进行介绍!在这里我们先来了解一下各组件的关系! 那就是,计算机是如何运作的呢?


运作流程


如果不是很了解计算机的运作流程,鸟哥拿个简单的想法来思考好了~ 假设计算机是一个人体,那么每个组件对应到那个地方呢?可以这样思考:

各组件运作
图1.4.1、各组件运作
  • CPU=脑袋瓜子:每个人会作的事情都不一样(微指令集的差异), 但主要都是透过脑袋瓜子来进行判断与控制身体各部分的活动;

  • 主内存=脑袋中的记录区块:在实际活动过程中,我们的脑袋瓜子能够将外界的互动暂时记录起来, 提供CPU来进行判断;

  • 硬盘=脑袋中的记忆区块:将重要的数据记录起来,以便未来将这些重要的经验再次的使用;

  • 主机板=神经系统:好像人类的神经一样,将所有重要的组件连接起来,包括手脚的活动都是脑袋瓜子发布命令后, 透过神经(主机板)传导给手脚来进行活动啊!

  • 各项周边设备=人体与外界沟通的手、脚、皮肤、眼睛等:就好像手脚一般,是人体与外界互动的重要关键!

  • 显示卡=脑袋中的影像:将来自眼睛的刺激转成影响后在脑袋中呈现,所以显示卡所产生的数据来源也是CPU控制的。

  • 电源供应器 (Power)=心脏:所有的组件要能运作得要有足够的电力供给才行!这电力供给就好像心脏一样,如果心脏不够力, 那么全身也就无法动弹的!心脏不稳定呢?那你的身体当然可能断断续续的~不稳定!

由这样的关系图当中,我们知道整个活动中最重要的就是脑袋瓜子! 而脑袋瓜子当中与现在正在进行的工作有关的就是CPU与主内存!任何外界的接触都必须要由脑袋瓜子中的主内存记录下来, 然后给脑袋中的CPU依据这些数据进行判断后,再发布命令给各个周边设备!如果需要用到过去的经验, 就得由过去的经验(硬盘)当中读取罗!

也就是说,整个人体最重要的地方就是脑袋瓜子,同样的,整部主机当中最重要的就是CPU与主内存, 而CPU的数据来源通通来自於主内存,如果要由过去的经验来判断事情时, 也要将经验(硬盘)挪到目前的记忆(主内存)当中,再交由CPU来判断喔!这点得要再次的强调啊! 下个章节当中,我们就对目前常见的个人计算机各个组件来进行说明!


计算机分类


知道了计算机的基本组成与周边装置,也知道其实计算机的CPU种类非常的多,再来我们想要了解的是,计算机如何分类? 计算机的分类非常多种,如果以计算机的复杂度与运算能力进行分类的话,主要可以分为这几类:

  • 超级计算机(Supercomputer)
    超级计算机是运作速度最快的计算机,但是他的维护、操作费用也最高!主要是用於需要有高速计算的计画中。 例如:国防军事、气象预测、太空科技,用在模拟的领域较多。详情也可以参考: 国家高速网络与计算中心http://www.nchc.org.tw的介绍! 至於全世界最快速的前500大超级计算机,则请参考:http://www.top500.org

  • 大型计算机(Mainframe Computer)
    大型计算机通常也具有数个高速的CPU,功能上虽不及超级计算机,但也可用来处理大量数据与复杂的运算。 例如大型企业的主机、全国性的证券交易所等每天需要处理数百万笔数据的企业机构, 或者是大型企业的数据库服务器等等。

  • 迷你计算机(Minicomputer)
    迷你计算机仍保有大型计算机同时支持多使用者的特性,但是主机可以放在一般作业场所, 不必像前两个大型计算机需要特殊的空调场所。通常用来作为科学研究、工程分析与工厂的流程管理等。

  • 工作站(Workstation)
    工作站的价格又比迷你计算机便宜许多,是针对特殊用途而设计的计算机。在个人计算机的效能还没有提升到目前的状况之前, 工作站计算机的性能/价格比是所有计算机当中较佳的,因此在学术研究与工程分析方面相当常见。

  • 微计算机(Microcomputer)
    又可以称为个人计算机,也是我们这里主要探讨的目标!体积最小,价格最低,但功能还是五脏俱全的! 大致又可分为桌上型、笔记型等等。

若光以效能来说,目前的个人计算机效能已经够快了,甚至已经比工作站等级以上的计算机运算速度还要快! 但是工作站计算机强调的是稳定不当机,并且运算过程要完全正确,因此工作站以上等级的计算机在设计时的考量与个人计算机并不相同啦! 这也是为啥工作站等级以上的个人计算机售价较贵的原因。


计算机上面常用的计算单位 (容量、速度等)

计算机的运算能力是由速度来决定的,而存放在计算机储存设备当中的数据容量也是有单位的。


  • 容量单位

计算机依有没有通电来记录信息,所以理论上它只认识 0 与 1 而已。0/1 的单位我们称为 bit。但 bit 实在太小了, 并且在储存数据时每份简单的数据都会使用到 8 个 bits 的大小来记录,因此定义出 byte 这个单位,他们的关系为:

1 Byte = 8 bits

不过同样的,Byte 还是太小了,在较大的容量情况下,使用 byte 相当不容易判断数据的大小,举例来说,1000000 bytes 这样的显示方式你能够看得出有几个零吗?所以后来就有一些常见的简化单位表示法,例如 K 代表 1024,M 代表 1024K 等。 而这些单位在不同的进位制下有不同的数值表示,底下就列出常见的单位与进位制对应:

进位制KMGTP
二进位10241024K1024M1024G1024T
十进位10001000K1000M1000G1000T

一般来说,档案容量使用的是二进位的方式,所以 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)最新的主机板架构主要是这样的:

Intel芯片架构
图2.1.1、Intel芯片架构

就如同前一小节提到的,整个主机板上面最重要的就是芯片组了!而芯片组通常又分为两个桥接器来控制各组件的沟通, 分别是:(1)北桥:负责连结速度较快的CPU、主内存与显示卡等组件;(2)南桥:负责连接速度较慢的周边介面, 包括硬盘、USB、网络卡等等。(芯片组的南北桥与三国的大小乔没有关系 @_@)至於AMD的芯片组架构如下所示:

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喔!

不同的CPU脚位
图2.1.4、不同的CPU脚位

我们前面谈到CPU内部含有微指令集,不同的微指令集会导致CPU工作效率的优劣。除了这点之外, CPU效能的比较还有什么呢?那就是CPU的频率了!什么是频率呢?简单的说, 频率就是CPU每秒钟可以进行的工作次数。 所以频率越高表示这颗CPU单位时间内可以作更多的事情。举例来说,Intel的Core 2 Duo型号E8400的CPU频率为3.0GHz, 表示这颗CPU在一秒内可以进行3.0x109次工作,每次工作都可以进行少数的指令运作之意。

Tips:
注意,不同的CPU之间不能单纯的以频率来判断运算效能喔!这是因为每颗CPU的微指令集不相同,架构也不见得一样, 每次频率能够进行的工作指令数也不同之故!所以,频率目前仅能用来比较同款CPU的速度!
鸟哥的图示

  • CPU的『外频』与『倍频』

我们可以看到图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)

Tips:
很多计算机硬件玩家很喜欢玩『超频』,所谓的超频指的是: 将CPU的倍频或者是外频透过主机板的设定功能更改成较高频率的一种方式。但因为CPU的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频, 可以将他的外频333MHz调整成为400MHz,但如此一来整个主机板的各个组件的运作频率可能都会被增加成原本的1.333倍(4/3), 虽然CPU可能可以到达3.6GHz,但却因为频率并非正常速度,故可能会造成当机等问题。
鸟哥的图示

  • 32位与64位

前面谈到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的内存。

Tips:
字长大小与系统总线宽度是可以不同的!举例来说,在Pentium Pro时代,该CPU是32位的处理器, 但当时的芯片组可以设计出64位的系统总线宽度。在这样的架构下我们通常还是以CPU的字长大小来称呼该架构。 个人计算机的64位CPU是到2003年由AMD Athlon64后才出现的。
鸟哥的图示

  • CPU等级

由於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宽度)
SDRAMPC10064100100800MBytes/sec
SDRAMPC133641331331064MBytes/sec
DDRDDR266641332662.1GBytes/sec
DDRDDR400642004003.2GBytes/sec
DDRDDRII800642008006.4GBytes/sec

DDR SDRAM又依据技术的发展,有DDR, DDRII, DDRIII等等,其中,DDRII 的频率倍数则是 4 倍喔!

Tips:
主内存型号的挑选与CPU及芯片组有关,所以主机板、CPU与内存在购买的时候必须要考虑其相关性喔。 并不是任何主机板都可以安插DDR III的內存呢!
鸟哥的图示

主内存除了频率/频宽与型号需要考虑之外,內存的容量也是很重要的喔! 因为所有的数据都得要载入內存当中才能够被CPU判读,如果內存容量不够大的话将会导致某些大容量数据无法被完整的载入, 此时已存在內存当中但暂时没有被使用到的数据必须要先被释放,使得可用内存容量大於该数据,那份新数据才能够被载入呢! 所以,通常越大的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的数据。 以服务器来说,主内存的容量有时比CPU的速度还要来的重要的


  • 双通道设计

由於所有的数据都必须要存放在主内存,所以主内存的数据宽度当然是越大越好。 但传统的系统总线宽度一般大约仅达64位,为了要加大这个宽度,因此芯片组厂商就将两个主内存汇整在一起, 如果一支内存可达64位,两支内存就可以达到128位了,这就是双通道的设计理念。

如上所述,要启用双通道的功能你必须要安插两支(或四支)主内存,这两支内存最好连型号都一模一样比较好, 这是因为启动双通道内存功能时,数据是同步写入/读出这一对主内存中,如此才能够提升整体的频宽啊! 所以当然除了容量大小要一致之外,型号也最好相同啦!

你有没有发现图 2.1.3、技嘉主机板示意图上那四根内存插槽的颜色呢?是否分为两种颜色,且两两成对? 为什么要这样设计?答出来了吗?是啦!这种颜色的设计就是为了双通道来的!要启动双通道的功能时, 你必须要将两根容量相同的主内存插在相同颜色的插槽当中喔!


  • CPU频率与主内存的关系

理论上,CPU与主内存的外频应该要相同才好。不过,因为技术方面的提升,因此这两者的频率速度不会相同, 但外频则应该是一致的较佳。举例来说,上面提到的Intel E8400 CPU外频为333MHz,则应该选用DDR II 667这个型号, 因为该内存型号的外频为333MHz之故喔!


  • DRAM与SRAM

除了主内存之外,事实上整部个人计算机当中还有许许多多的内存存在喔!最为我们所知的就是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的运作效能。


  • 只读内存(ROM)

主机板上面的组件是非常多的,而每个组件的参数又具有可调整性。举例来说,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的插槽。 这些插槽最大的差异就是在数据传输的频宽了!如下所示:

规格宽度速度频宽
PCI32 bits33 MHz133 MBytes/s
PCI 2.264 bits66 MHz533 MBytes/s
PCI-X64 bits133 MHz1064 MBytes/s
AGP 4x32 bits66x4 MHz1066 MBytes/s
AGP 8x32 bits66x8 MHz2133 MBytes/s
PCIe x1250 MBytes/s
PCIe x82 GBytes/s
PCIe x164 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、磁带机、随身碟(快闪内存)、还有新一代的蓝光光驱等, 乃至於大型机器的区域网络储存设备(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左右的容量喔!


  • 传输介面

由於传输速度的需求提升,目前硬盘与主机系统的联系主要有几种传输介面规格:

两款硬盘介面(左边为IDE介面,右边为SATA介面)
图2.4.3、两款硬盘介面(左边为IDE介面,右边为SATA介面)
  • IDE介面

    如同图 2.1.3、技嘉主机板图示右侧的较宽的插槽所示,那就是IDE的介面插槽。 IDE介面插槽所使用的排线较宽,每条排线上面可以接两个IDE装置,由於可以接两个装置,那为了判别两个装置的主/从架构, 因此这种磁碟机上面需要调整跳针(Jump)成为Master或slave才行喔!这种介面的最高传输速度为Ultra 133规格, 亦即每秒理论传输速度可达133MBytes。

    IDE 介面的排线 (图示取自 Seagate 网站)
    图2.4.4、IDE 介面的排线 (图示取自 Seagate 网站)

  • SATA介面

    如同技嘉主机板图示右下方所示为SATA硬盘的连接介面插槽。 我们可以看到该插槽要比IDE介面的小很多,每条SATA连接线仅能接一个SATA装置。SATA介面除了速度较快之外, 由於其排线较细小所以有利於主机机壳内部的散热与安装!目前SATA已经发展到了第二代, 其速度由SATA-1的每秒150MBytes提升到SATA-2每秒300MBytes的传输速度喔, 也因此目前主流的个人计算机硬盘已经被SATA取代了。SATA的插槽示意图如下所示:

    SATA 介面的排线 (图示取自 Seagate 网站)
    图2.4.5、SATA 介面的排线 (图示取自 Seagate 网站)

    由於SATA一条排线仅接一颗硬盘,所以你不需要调整跳针。不过一张主机板上面SATA插槽的数量并不是固定的, 且每个插槽都有编号,在连接SATA硬盘与主机板的时候,还是需要留意一下。

  • SCSI介面

    另一种常见於工作站等级以上的硬盘传输介面为SCSI介面,这种介面的硬盘在控制器上含有一颗处理器, 所以除了运转速度快之外,也比较不会耗费CPU资源喔!在个人计算机上面这种介面的硬盘不常见啦!


  • 选购与运转须知

如果你想要增加一颗硬盘在你的主机里头时,除了需要考虑你的主机板可接受的插槽介面(IDE/SATA)之外, 还有什么要注意的呢?

  • 容量
    通常首先要考量的就是容量的问题!目前(2009)主流市场硬盘容量已经到达320GB以上,甚至有的厂商已经生产高达 2TB 的产品呢!硬盘可能可以算是一种消耗品,要注意重要数据还是得常常备份出来喔!

  • 缓冲内存
    硬盘上头含有一个缓冲内存,这个内存主要可以将硬盘内常使用的数据缓存起来,以加速系统的读取效能。 通常这个缓冲内存越大越好,因为缓冲内存的速度要比数据从硬盘盘中被找出来要快的多了! 目前主流的产品可达16MB左右的内存大小喔。

  • 转速
    因为硬盘主要是利用主轴马达转动磁碟盘来存取,因此转速的快慢会影响到效能。 主流的桌上型计算机硬盘为每分钟7200转,笔记型计算机则是5400转。有的厂商也有推出高达10000转的硬盘, 若有高效能的数据存取需求,可以考虑购买高转速硬盘。

  • 运转须知
    由於硬盘内部机械手臂上的磁头与硬盘盘的接触是很细微的空间, 如果有抖动或者是脏污在磁头与硬盘盘之间就会造成数据的损毁或者是实体硬盘整个损毁~ 因此,正确的使用计算机的方式,应该是在计算机通电之后,就绝对不要移动主机,并免抖动到硬盘, 而导致整个硬盘数据发生问题啊!另外,也不要随便将插头拔掉就以为是顺利关机!因为机械手臂必须要归回原位, 所以使用操作系统的正常关机方式,才能够有比较好的硬盘保养啊!因为他会让硬盘的机械手臂归回原位啊!
Tips:
可能因为环境的关系,计算机内部的风扇常常会卡灰尘而造成一些声响。很多朋友只要听到这种声响都是二话不说的 『用力拍几下机壳』就没有声音了~现在你知道了,这么做的后果常常就是你的硬盘容易坏掉! 下次千万不要再这样做!
鸟哥的图示

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游戏的玩家以及强调高效能运算的主机来说,就不是这么适合了。

至於独立型芯片组虽然可能具有较高的效能,不过你可能必须要额外负担周边设备的金錢呢! 例如显示卡、网络卡、音效卡等等。但独立型芯片组也有一定程度的好处,那就是你可以随时抽换周边设备。


  • 设备I/O位址与IRQ中断通道

主机板是负责各个计算机组件之间的沟通,但是计算机组件实在太多了,有输出/输入/不同的储存装置等等, 主机板芯片组怎么知道如何负责沟通啊?这个时候就需要用到所谓的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与BIOS的功能,在这里我们再来强调一下: CMOS主要的功能为记录主机板上面的重要参数, 包括系统时间、CPU电压与频率、各项设备的I/O位址与IRQ等,由於这些数据的记录要花费电力,因此主机板上面才有电池。 BIOS为写入到主机板上某一块 flash 或 EEPROM 的程序,他可以在开机的时候执行,以载入CMOS当中的参数, 并尝试呼叫储存装置中的开机程序,进一步进入操作系统当中。BIOS程序也可以修改CMOS中的数据, 每种主机板呼叫BIOS设定程序的按键都不同,一般桌上型计算机常见的是使用[del]按键进入BIOS设定画面。


  • 连接周边设备的介面

主机板与各项输出/输入设备的连结主要都是在主机机壳的后方,主要有:

  • PS/2介面:这是常见的键盘与鼠标的介面,不过渐渐有被USB介面取代的趋势;
  • USB介面:目前相当流行的一个介面,支持随插即用。 主流的USB版本为USB 2.0,这个规格的速度可达480Mbps,相对之下的USB 1.1仅达12Mbps差异很大,购买周边设备要注意啊! 不然copy一些数据到USB硬盘时,会吐血....
  • 声音输出、输入与麦克风:这个是一些圆形的插孔, 而必须你的主机板上面有内建音效芯片时,才会有这三个东西;
  • RJ-45网络头:如果有内建网络芯片的话,那么就会有这种接头出现。 这种接头有点类似电话接头,不过内部有八蕊线喔!接上网络线后在这个接头上会有灯号亮起才对!
  • 其他过时介面:包括早期的用来连结鼠标的九针序列埠(com1),以及连结印表机的25针并列埠(LPT1)等等。

我们以技嘉主机板的连结介面来看的话,主要有这些:

连接周边介面
图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速度效能将会卡在那个显示卡上面喔!所以,在购买整套系统时, 请特别留意需要全部的介面都考虑进去喔!尤其是当您想要升级时,要特别注意这个问题, 并非所有的旧的设备都适合继续使用的。


  • 系统不稳定的可能原因

除此之外,到底那个组件特别容易造成系统的不稳定呢?有几个常见的系统不稳定的状态是:

  • 系统超频:这个行为很不好!不要这么做!

  • 电源供应器不稳: 这也是个很严重的问题,当您测试完所有的组件都没有啥大问题时,记得测试一下电源供应器的稳定度!

  • 内存无法负荷:现在的内存品质差很多,差一点的内存,可能会造成您的主机在忙碌的工作时, 产生不稳定或当机的现象喔!

  • 系统过热:『热』是造成电子零件运作不良的主因之一,如果您的主机在夏天容易当机, 冬天却还好,那么考虑一下加几个风扇吧!有助於机壳内的散热,系统会比较稳定喔! 『 这个问题也是很常见的系统当机的元凶!』(鸟哥之前的一台服务器老是容易当机, 后来拆开机壳研究后才发现原来是北桥上面的小风扇坏掉了,导致北桥温度太高。后来换掉风扇就稳定多了。)
Tips:
事实上,要了解每个硬件的详细架构与构造是很难的!这里鸟哥仅是列出一些比较基本的概念而已。 另外,要知道某个硬件的制造商是哪间公司时,可以看该硬件上面的信息。 举例来说,主机板上面都会列出这个主机板的开发商与主机板的型号,知道这两个信息就可以找到驱动程序了。 另外,显示卡上面有个小小的芯片,上面也会列出显示卡厂商与芯片信息喔。
鸟哥的图示

数据表示方式


事实上我们的计算机只认识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运作了。

不过这样的流程有几个很麻烦的地方,包括:

  • 需要了解机器语言:机器只认识0与1,因此你必须要学习直接写给机器看的语言! 这个地方相当的难呢!

  • 需要了解所有硬件的相关功能函数:因为你的程序必须要写给机器看, 当然你就得要参考机器本身的功能,然后针对该功能去撰写程序码。例如,你要让DVD影片能够放映, 那就得要参考DVD光驱的硬件信息才行。万一你的系统有比较冷门的硬件,光是参考技术手册可能会昏倒~

  • 程序不具有可携性:每个CPU都有独特的微指令集,同样的,每个硬件都有其功能函数。 因此,你为A计算机写的程序,理论上是没有办法在B计算机上面运作的!而且程序码的修改非常困难! 因为是机器码,并不是人类看的懂得程序语言啊!

  • 程序具有专一性:因为这样的程序必须要针对硬件功能函数来撰写, 如果已经开发了一支浏览器程序,想要再开发档案管理程序时,还是得从头再参考硬件的功能函数来继续撰写, 每天都在和『硬件』挑战!可能需要天天喝蛮牛了!@_@

那怎么解决啊?为了解决这个问题,计算机科学家设计出一种让人类看的懂得程序语言, 然后创造一种『编译器』来将这些人类能够写的程序语言转译成为机器能看懂得机器码, 如此一来我们修改与撰写程序就变的容易多了!目前常见的编译器有C, C++, Java, Fortran等等。 机器语言与高阶程序语言的差别如下所示:

编译器
图4.1.1、编译器的角色

从上面的图示我们可以看到高阶程序语言的程序码是很容易察看的!鸟哥已经将程序码(英文)写成中文说~ 这样比较好理解啦!所以这样已经将程序的修改问题处理完毕了。 问题是,在这样的环境底下我们还是得要考量整体的硬件系统来设计程序喔!

举例来说,当你需要将运作的数据写入内存中,你就得要自行分配一个内存区块出来让自己的数据能够填上去, 所以你还得要了解到内存的位址是如何定位的,啊!眼泪还是不知不觉的流了下来... 怎么写程序这么麻烦啊!

为了要克服硬件方面老是需要重复撰写控制码的问题,所以就有操作系统(Operating System, OS)的出现了! 什么是操作系统呢?底下就来谈一谈先!


操作系统


如同前面提到的,在早期想要让计算机执行程序就得要参考一堆硬件功能函数,并且学习机器语言才能够撰写程序。 同时每次写程序时都必须要重新改写,因为硬件与软件功能不见得都一致之故。那如果我能够将所有的硬件都驱动, 并且提供一个发展软件的参考介面来给工程师开发软件的话,那发展软件不就变的非常的简单了?那就是操作系统啦!


  • 操作系统核心(Kernel)

操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在於管理计算机的所有活动以及驱动系统中的所有硬件。 我们刚刚谈到计算机没有软件只是一堆废铁,那么操作系统的功能就是让CPU可以开始判断逻辑与运算数值、 让主内存可以开始载入/读出数据与程序码、让硬盘可以开始被存取、让网络卡可以开始传输数据、 让所有周边可以开始运转等等。总之,硬件的所有动作都必须要透过这个操作系统来达成就是了。

上述的功能就是操作系统的核心(Kernel)了!你的计算机能不能做到某些事情,都与核心有关! 只有核心有提供的功能,你的计算机系统才能帮你完成!举例来说,你的核心并不支持TCP/IP的网络协定, 那么无论你购买了什么样的网卡,这个核心都无法提供网络能力的!

但是单有核心我们使用者也不知道能作啥事的~因为核心主要在管控硬件与提供相关的能力(例如网络功能), 这些管理的动作是非常的重要的,如果使用者能够直接使用到核心的话,万一使用者不小心将核心程序停止或破坏, 将会导致整个系统的崩溃!因此核心程序所放置到内存当中的区块是受保护的! 并且开机后就一直常驻在内存当中。

Tips:
所以整部系统只有核心的话,我们就只能看著已经准备好运作(Ready)的计算机系统,但无法操作他! 好像有点望梅止渴的那种感觉啦!这个时候就需要软件的帮忙了!
鸟哥的图示

  • 系统呼叫(System Call)

既然我的硬件都是由核心管理,那么如果我想要开发软件的话,自然就得要去参考这个核心的相关功能! 唔!如此一来不是从原本的参考硬件函数变成参考核心功能,还是很麻烦啊!有没有更简单的方法啊!

为了解决这个问题,操作系统通常会提供一整组的开发介面给工程师来开发软件! 工程师只要遵守该开发介面那就很容易开发软件了!举例来说,我们学习C程序语言只要参考C程序语言的函式即可, 不需要再去考量其他核心的相关功能,因为核心的系统呼叫介面会主动的将C程序语言的相关语法转成核心可以了解的任务函数, 那核心自然就能够顺利运作该程序了!

如果我们将整个计算机系统的相关软/硬件绘制成图的话,他的关系有点像这样:

操作系统的角色
图4.2.1、操作系统的角色

计算机系统主要由硬件构成,然后核心程序主要在管理硬件,提供合理的计算机系统资源分配(包括CPU资源、内存使用资源等等), 因此只要硬件不同(如x86架构与RISC架构的CPU),核心就得要进行修改才行。 而由於核心只会进行计算机系统的资源分配,所以在上头还需要有应用程序的提供,使用者才能够操作系统的。

为了保护核心,并且让程序设计师比较容易开发软件,因此操作系统除了核心程序之外,通常还会提供一整组开发介面, 那就是系统呼叫层。软件开发工程师只要遵循公认的系统呼叫参数来开发软件,该软件就能够在该核心上头运作。 所以你可以发现,软件与核心有比较大的关系,与硬件关系则不大!硬件也与核心有比较大的关系! 至於与使用者有关的,那就是应用程序啦!

Tips:
在定义上,只要能够让计算机硬件正确无误的运作,那就算是操作系统了。所以说, 操作系统其实就是核心与其提供的介面工具,不过就如同上面讲的,因为最简单的核心缺乏了与使用者沟通的亲和介面, 所以在目前,一般我们提到的『操作系统』都会包含核心与相关的使用者应用软件呢!
鸟哥的图示

简单的说,上面的图示可以带给我们底下的概念:

  • 操作系统的核心层直接参考硬件规格写成, 所以同一个操作系统程序不能够在不一样的硬件架构下运作。举例来说,个人计算机版的Windows XP不能直接在RISC架构的计算机下运作。 所以您知道为何Windows XP又分为32位及64位的版本了吧?因为32/64位的CPU指令集不太相同, 所以当然要设计不同的操作系统版本了。

  • 操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出装置及档案系统档。 如果没有其他的应用程序辅助,操作系统只能让计算机主机准备妥当(Ready)而已!并无法运作其他功能。 所以你现在知道为何Windows XP上面要达成网页影像的运作还需要类似PhotoImpact或Photoshop之类的软件安装了吧?

  • 应用程序的开发都是参考操作系统提供的开发介面, 所以该应用程序只能在该操作系统上面运作而已,不可以在其他操作系统上面运作的。 现在您知道为何去购买线上游戏的光盘时,光盘上面会明明白白的写著该软件适合用於哪一种操作系统上了吧? 也该知道某些游戏为何不能够在Linux上面安装了吧?


  • 核心功能

既然核心主要是在负责整个计算机系统相关的资源分配与管理,那我们知道其实整部计算机系统最重要的就是CPU与主内存, 因此,核心至少也要有这些功能的:

  • 系统呼叫介面(System call interface)
    刚刚谈过了,这是为了方便程序开发者可以轻易的透过与核心的沟通,将硬件的资源进一步的利用, 於是需要有这个简易的介面来方便程序开发者。

  • 程序管理(Process control)
    总有听过所谓的『多工环境』吧?一部计算机可能同时间有很多的工作跑到CPU等待运算处理, 核心这个时候必须要能够控制这些工作,让CPU的资源作有效的分配才行!另外, 良好的CPU排程机制(就是CPU先运作那个工作的排列顺序)将会有效的加快整体系统效能呢!

  • 内存管理(Memory management)
    控制整个系统的内存管理,这个内存控制是非常重要的,因为系统所有的程序码与数据都必须要先存放在内存当中。 通常核心会提供虚拟内存的功能,当内存不足时可以提供内存置换(swap)的功能哩。

  • 档案系统管理(Filesystem management)
    档案系统的管理,例如数据的输入输出(I/O)等等的工作啦!还有不同档案格式的支持啦等等, 如果你的核心不认识某个档案系统,那么您将无法使用该档案格式的档案罗!例如:Windows 98就不认识NTFS档案格式的硬盘;

  • 装置的驱动(Device drivers)
    就如同上面提到的,硬件的管理是核心的主要工作之一,当然罗,装置的驱动程序就是核心需要做的事情啦! 好在目前都有所谓的『可载入模组』功能,可以将驱动程序编辑成模组,就不需要重新的编译核心啦! 这个也会在后续的第二十章当中提到的!
Tips:
事实上,驱动程序的提供应该是硬件厂商的事情!硬件厂商要推出硬件时,应该要自行参考操作系统的驱动程序开发介面, 开发完毕后将该驱动程序连同硬件一同贩卖给使用者才对!举例来说,当你购买显示卡时, 显示卡包装盒都会附上一片光盘,让你可以在进入Windows之后进行驱动程序的安装啊!
鸟哥的图示

  • 操作系统与驱动程序

老实说,驱动程序可以说是操作系统里面相当重要的一环了!不过,硬件可是持续在进步当中的! 包括主机板、显示卡、硬盘等等。那么比较晚推出的较新的硬件,例如显示卡,我们的操作系统当然就不认识罗! 那操作系统该如何驱动这块新的显示卡?为了克服这个问题,操作系统通常会提供一个开发介面给硬件开发商, 让他们可以根据这个介面设计可以驱动他们硬件的『驱动程序』,如此一来,只要使用者安装驱动程序后, 自然就可以在他们的操作系统上面驱动这块显示卡了。

驱动程序与操作系统的关系
图4.2.2、驱动程序与操作系统的关系

由上图我们可以得到几个小重点:

  • 操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
  • 一般来说,操作系统会提供开发介面,让开发商制作他们的驱动程序;
  • 要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
  • 驱动程序是由厂商提供的,与操作系统开发者无关。

所以,如果你想要在某个操作系统上面安装一张新的显示卡,那么请要求该硬件厂商提供适当的驱动程序吧! ^_^! 为什么要强调『适当的驱动程序』呢? 因为驱动程序仍然是依据操作系统而开发的, 所以,给Windows用的驱动程序当然不能使用於Linux的环境下了。


应用程序


应用程序是参考操作系统提供的开发介面所开发出来软件,这些软件可以让使用者操作,以达到某些计算机的功能利用。 举例来说,办公室软件(Office)主要是用来让使用者办公用的;影像处理软件主要是让使用者用来处理影音数据的; 浏览器软件主要是让使用者用来上网浏览用的等等。

需要注意的是,应用程序是与操作系统有关系的,如同上面的图示当中的说明喔。因此,如果你想要购买新软件, 请务必参考软件上面的说明,看看该软件是否能够支持你的操作系统啊!举例来说,如果你想要购买线上游戏光盘, 务必参考一下该光盘是否支持你的操作系统,例如是否支持Windows XP/Windows Vista/MAC/Linux等等。 不要购买了才发现该软件无法安装在你的操作系统上喔!

我们拿常见的微软公司的产品来说明。你知道Windows XP, Office 2007之间的关系了吗?

  • Windows XP是一套操作系统,他必须先安装到个人计算机上面,否则计算机无法开机运作;
  • Windows 98与Windows XP是两套不同的操作系统,所以能在Win 98上安装的软件不见得可在WinXP上安装;
  • Windows XP安装好后,就只能拥有很少的功能,并没有办公室软件;
  • Office 2007是一套应用程序,要安装前必须要了解他能在哪些操作系统上面运作。

重点回顾


  • 计算机的定义为:『接受使用者输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的信息』;
  • 计算机的五大单元包括:输入单元、 输出单元、CPU内部的控制单元、算数逻辑单元与主内存五大部分;
  • 数据会流进/流出内存是CPU所发布的控制命令,而CPU实际要处理的数据则完全来自於主内存;
  • CPU依设计理念主要分为:精简指令集(RISC)与复杂指令集(CISC)系统;
  • 关於CPU的频率部分:外频指的是CPU与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作效能的一个倍数, 两者相乘才是CPU的频率速度;
  • 一般主机板芯片组有分北桥与南桥,北桥的系统总线称为系统系统总线,因为是内存传输的主要通道,所以速度较快。 南桥就是所谓的输入输出(I/O)系统总线,主要在联系硬盘、USB、网络卡等周边设备;
  • 北桥所支持的频率我们称为前端系统总线速度(Front Side Bus, FSB),而每次传送的位数则是系统总线宽度。
  • CPU每次能够处理的数据量称为字长大小(word size),字长大小依据CPU的设计而有32位与64位。 我们现在所称的计算机是32或64位主要是依据这个 CPU解析的字长大小而来的!
  • 个人计算机的主内存主要组件为动态随机访问内存(Dynamic Random Access Memory, DRAM), 至於CPU内部的第二层缓存则使用静态随机访问内存(Static Random Access Memory, SRAM);
  • BIOS(Basic Input Output System)是一套程序,这套程序是写死到主机板上面的一个内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那就是只读内存(Read Only Memory, ROM);
  • 显示卡的规格有PCI/AGP/PCIe,目前的主流为PCIe介面;
  • 硬盘的组成为:圆形磁碟盘、机械手臂、 磁碟读取头与主轴马达所组成的,其中磁碟盘的组成为磁区、磁轨与磁柱;
  • 操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在於管理计算机的所有活动以及驱动系统中的所有硬件。
  • 计算机主要以二进位作为单位,常用的磁碟容量单位为bytes,其单位换算为1 Byte = 8bits。
  • 最阳春的操作系统仅在驱动与管理硬件,而要使用硬件时,就得需要透过应用软件或者是壳程序(shell)的功能, 来呼叫操作系统操纵硬件工作。目前称为操作系统的,除了上述功能外,通常已经包含了日常工作所需要的应用软件在内了。

本章习题


  • 动动手实作题:假设你不知道你的主机内部的各项组件数据,请拆开你的主机机壳,并将内部所有的组件拆开,并且依序列出:
    • CPU的厂牌、型号、最高频率;
    • 主内存的容量、介面 (DDR/DDR II等);
    • 显示卡的介面 (AGP/PCIe/内建) 与容量
    • 主机板的厂牌、南北桥的芯片型号、BIOS的厂牌、有无内建的网卡或音效卡等
    • 硬盘的连接介面 (IDE/SATA等)、硬盘容量、转速、缓冲内存容量等。
    然后再将他组装回去。注意,拆装前务必先取得你主机板的说明书,因此你可能必须要上网查询上述的各项数据。

  • 利用软件:假设你不想要拆开主机机壳,但想了解你的主机内部各组件的信息时,该如何是好? 如果使用的是Windows操作系统,可使用CPU-Z(http://www.cpuid.com/cpuz.php)这套软件,如果是Linux环境下,可以使用『cat /proc/cpuinfo』 及使用『lspci』来查阅各项组件的型号;

  • 依据文末的延伸阅读连结,自行搜寻出 BIOS 的主要任务,以及目前在个人计算机上面常见的 BIOS 制造商有哪几家?

参考数据与延伸阅读



2008/07/22:利用暑假期间足足写了快要两个星期这篇才写完!好多图示都不知道如何呈现比较漂亮~@_@
2008/07/29:又加入了SATA/IDE的连线排线,还有一些额外的图示。
2009/08/03:加入电源供应器是心脏一词的说明
2009/08/03:更正原本 BIOS 只放於 ROM 的数据,新的 BIOS 通常放於 EEPROM 或 Flash 内存中。
2010/10/19:感谢讨论区网友 186003415a 兄的回报,发现 DDR II 的外频写错了!是 200MHz 才对喔!