鸟哥的 Linux 私房菜
Linux 基础篇 | Linux 服务器篇 | Linux 企业应用篇 | 安全管理
     
 
第零章、计算机概论
最近更新日期: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 Computing, 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 等。 而这些单位在不同的进位制下有不同的数值表示,底下就列出常见的单位与进位制对应:

进位制 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)最新的主机板架构主要是这样的:

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宽度)
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 400 800 6.4GBytes/sec

DDR SDRAM又依据技术的发展,有DDR, DDRII, DDRIII等等。

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的插槽。 这些插槽最大的差异就是在资料传输的频宽了!如下所示:

规格 宽度 速度 频宽
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、磁带机、随身碟(快闪记忆体)、还有新一代的蓝光光碟机等, 乃至于大型机器的区域网络储存设备(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游戏的玩家以及强调高效能运算的主机来说,就不是这么适合了。

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


  • 设备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 记忆体中。



 
     
中国存储网 chinastor.cn排版整理
原文作者鸟哥,主页,更多Linux学习资料在线看:Linux系统管理员手册 - Linux命令大全 - Linux调用大全- Linux专栏 - 国产Linux