第零章、计算机概论
由过去的经验当中,鸟哥发现到因为兴趣或生活所逼而必须要接触 Linux 的朋友,很多可能并非信息相关科系出身, 因此对于电脑软/硬件方面的概念不熟。然而操作系统这种咚咚跟硬件有相当程度的关连性, 所以,如果不了解一下计算机概论,要很快的了解 Linux 的概念是有点难度的。因此,鸟哥就自作聪明的添加一个小章节来谈谈计概啰! 因为鸟哥也不是信息相关学门出身,所以,写的不好的地方请大家多多指教啊!^_^
0.1 电脑:辅助人脑的好工具
现在的人们几乎无时无刻都会碰电脑!不管是台式机(桌机)、笔记型电脑(笔电)、平板电脑、智能型手机等等,这些东西都算是电脑。 虽然接触的这么多,但是,你了解电脑里面的组件有什么吗?以桌机来说,电脑的机壳里面含有什么组件?不同的电脑可以应用在哪些工作? 你生活周遭有哪些电器用品内部是含有电脑相关组件的?底下我们就来谈一谈这些东西呢!
所谓的电脑就是一种计算机,而计算机其实是:『接受用户输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后, 以产生或保存成有用的信息』。因此,只要有输入设备 (不管是键盘还是触摸屏) 及输出设备 (例如电脑屏幕或直接由打印机打印出来),让你可以输入数据使该机器产生信息的, 那就是一部计算机了。
好了,根据这个定义你知道哪些东西是计算机了吗?其实包括一般商店用的简易型加减乘除计算机、打电话用的手机、开车用的卫星定位系统 (GPS)、提款用的提款机 (ATM)、你上课会使用的桌面型个人电脑、外出可能会带的笔记型电脑 (包括 notebook 与 netbook),还有近几年 (2015前后) 非常热门的平板电脑与智能型手机, 甚至是未来可能会大流行的单版电脑 (Xapple pi, banana pi, Raspberry pi, 注1) 与智能型手表,甚至于更多的智能型穿戴式电脑(注2)等等,这些都是计算机喔!
那么计算机主要的组成组件是什么呢?底下我们以常见的个人电脑主机或服务器工作站主机来作为说明好了。
0.1.1 电脑硬件的五大单元
关于电脑的硬件组成部分,其实你可以观察你的台式机来分析一下,依外观来说这家伙主要可分为三部分,分别是:
- 输入单元:包括键盘、鼠标、读卡机、扫描仪、手写板、触摸屏幕等等一堆;
- 主机部分:这个就是系统单元,被主机机壳保护住了,里面含有一堆板子、CPU 与主内存等;
- 输出单元:例如屏幕、打印机等等
我们主要透过输入设备如鼠标与键盘来将一些数据输入到主机里面,然后再由主机的功能处理成为图表或文章等信息后, 将结果传输到输出设备,如屏幕或打印机上面。那主机里面含有什么组件呢?如果你曾经拆开过电脑主机机壳 (包括拆开你的智能型手机也一样喔!), 会发现其实主机里面最重要的就是一片主板,上面安插了中央处理器 (CPU) 以及主内存、硬盘 (或记忆卡) 还有一些适配器设备而已。 当然大部分智能型手机是将这些组件直接焊接在主板上面而不是插卡啦!
整部主机的重点在于中央处理器 (Central Processing Unit, CPU),CPU 为一个具有特定功能的芯片, 里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关内置的微指令集才可以。 由于 CPU 的工作主要在于管理与运算,因此在 CPU 内又可分为两个主要的单元,分别是: 算数逻辑单元与控制单元。(注3) 其中算数逻辑单元主要负责程序运算与逻辑判断,控制单元则主要在协调各周边组件与各单元间的工作。
既然 CPU 的重点是在进行运算与判断,那么要被运算与判断的数据是从哪里来的? CPU 读取的数据都是从主内存来的! 主内存内的数据则是从输入单元所传输进来!而 CPU 处理完毕的数据也必须要先写回主内存中,最后数据才从主内存传输到输出单元。
综合上面所说的,我们会知道其实电脑是由几个单元所组成的,包括输入单元、 输出单元、CPU 内部的控制单元、算数逻辑单元与主内存五大部分。 这几个东西的相关性如下所示:
上面图标中的『系统单元』其实指的就是电脑机壳内的主要组件,而重点在于 CPU 与主内存。 特别要看的是实线部分的传输方向,基本上数据都是流经过主内存再转出去的! 至于数据会流进/流出内存则是 CPU 所发布的控制命令!而 CPU 实际要处理的数据则完全来自于主内存 (不管是程序还是一般文档数据)!这是个很重要的概念喔! 这也是为什么当你的内存不足时,系统的性能就很糟糕!也是为什么现在人们买智能型手机时,对于可用内存的要求都很高的原因!
而由上面的图标我们也能知道,所有的单元都是由 CPU 内部的控制单元来负责协调的,因此 CPU 是整个电脑系统的最重要部分!
那么目前世界上有哪些主流的 CPU 呢?是否刚刚我们谈到的硬件内全部都是相同的 CPU 架构呢?底下我们就来谈一谈。
0.1.2 一切设计的起点: CPU 的架构
如前面说过的,CPU 其实内部已经含有一些微指令,我们所使用的软件都要经过 CPU 内部的微指令集来达成才行。 那这些指令集的设计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要 CPU 架构, 分别是:精简指令集 (RISC) 与复杂指令集 (CISC) 系统。底下我们就来谈谈这两种不同 CPU 架构的差异啰!
- 精简指令集 (Reduced Instruction Set Computer, RISC):(注5)
这种 CPU 的设计中,微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的运行性能较佳; 但是若要做复杂的事情,就要由多个指令来完成。常见的 RISC 微指令集 CPU 主要例如甲骨文 (Oracle) 公司的 SPARC 系列、 IBM 公司的 Power Architecture (包括 PowerPC) 系列、与安谋公司 (ARM Holdings) 的 ARM CPU 系列等。
在应用方面,SPARC CPU 的电脑常用于学术领域的大型工作站中,包括银行金融体系的主要服务器也都有这类的电脑架构; 至于PowerPC架构的应用上,例如新力(Sony)公司出产的Play Station 3(PS3)就是使用PowerPC架构的Cell处理器; 那安谋的 ARM 呢?你常使用的各厂牌手机、PDA、导航系统、网络设备(交换器、路由器等)等,几乎都是使用 ARM 架构的 CPU 喔! 老实说,目前世界上使用范围最广的 CPU 可能就是 ARM 这种架构的呢! (注6)
- 复杂指令集(Complex Instruction Set Computer, CISC):(注7)
与RISC不同的,CISC在微指令集的每个小指令可以运行一些较低级的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令运行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。
由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人电脑(Personal computer)用途上面, 因此,个人电脑常被称为x86架构的电脑!那为何称为x86架构(注8)呢? 这是因为最早的那颗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架构中,请查找出多媒体、虚拟化、省电功能各有哪些重要的微指令集?(仅供参考)
答:
|
0.1.3 其他单元的设备
五大单元中最重要的控制、算术逻辑被集成到 CPU 的封装中,但系统当然不可能只有 CPU 啊!那其他三个重要电脑单元的设备还有哪些呢? 其实在主机机壳内的设备大多是透过主板 (main board) 连接在一块,主板上面有个链接沟通所有设备的芯片组,这个芯片组可以将所有单元的设备链接起来, 好让 CPU 可以对这些设备下达命令。其他单元的重要设备主要有:
- 系统单元:如图 0.1.2 所示,系统单元包括 CPU 与内存及主板相关组件。而主板上头其实还有很多的连接界面与相关的适配器,包括鸟哥近期常使用的 PCI-E 10G 网络卡、
磁盘数组卡、还有显卡等等。尤其是显卡,这东西对于玩3D游戏来说是非常重要的一环,他与显示的精致度、色彩与分辨率都有关系。
- 记忆单元:包括主内存 (main memory, RAM) 与辅助内存,其中辅助内存其实就是大家常听到的『保存设备』啰!包括硬盘、软碟、光盘、磁带等等的。
- 输入、输出单元:同时涵盖输入输出的设备最常见的大概就是触摸屏了。至於单纯的输入设备包括前面提到的键盘鼠标之外,目前的体感设备也是重要的输入设备喔! 至于输出设备方面,除了屏幕外,打印机、音效喇叭、HDMI电视、投影机、蓝牙耳机等等,都算喔!
更详细的各项主机与周边设备我们将在下个小节进行介绍!在这里我们先来了解一下各组件的关系啰!那就是,电脑是如何运作的呢?
0.1.4 运作流程
如果不是很了解电脑的运作流程的话,鸟哥拿个简单的想法来思考好了~假设电脑是一个人体,那么每个组件对应到那个地方呢?可以这样思考:
- CPU=脑袋瓜子:每个人会作的事情都不一样(微指令集的差异),但主要都是透过脑袋瓜子来进行判断与控制身体各部分的活动;
- 主内存=脑袋中放置正在被思考的数据的区块:在实际活动过程中,我们的脑袋瓜子需要有外界刺激的数据 (例如光线、环境、语言等)
来分析,那这些交互数据暂时存放的地方就是主内存,主要是用来提供给脑袋瓜子判断用的信息。
- 硬盘=脑袋中放置回忆的记忆区块:跟刚刚的主内存不同,主内存是提供脑袋目前要思考与处理的信息,但是有些生活琐事或其他没有要立刻处理的事情,
就当成回忆先放置到脑袋的记忆深处吧!那就是硬盘!主要目的是将重要的数据记录起来,以便未来将这些重要的经验再次的使用;
- 主板=神经系统:好像人类的神经一样,将所有重要的组件连接起来,包括手脚的活动都是脑袋瓜子发布命令后,
透过神经(主板)传导给手脚来进行活动啊!
- 各项周边设备=人体与外界沟通的手、脚、皮肤、眼睛等:就好像手脚一般,是人体与外界交互的重要关键!
- 显卡=脑袋中的影像:将来自眼睛的刺激转成影像后在脑袋中呈现,所以显卡所产生的数据源也是CPU控制的。
- 电源供应器 (Power)=心脏:所有的组件要能运作得要有足够的电力供给才行!这电力供给就好像心脏一样,如果心脏不够力, 那么全身也就无法动弹的!心脏不稳定呢?那你的身体当然可能断断续续的~不稳定!
由这样的关系图当中,我们知道整个活动中最重要的就是脑袋瓜子! 而脑袋瓜子当中与现在正在进行的工作有关的就是CPU与主内存!任何外界的接触都必须要由脑袋瓜子中的主内存记录下来, 然后给脑袋中的CPU依据这些数据进行判断后,再发布命令给各个周边设备!如果需要用到过去的经验, 就得由过去的经验(硬盘)当中读取啰!
也就是说,整个人体最重要的地方就是脑袋瓜子,同样的,整部主机当中最重要的就是CPU与主内存, 而CPU的数据源通通来自于主内存,如果要由过去的经验来判断事情时, 也要将经验(硬盘)挪到目前的记忆(主内存)当中,再交由CPU来判断喔!这点得要再次的强调啊! 下个章节当中,我们就对目前常见的个人电脑各个组件来进行说明啰!
0.1.5 电脑用途的分类
知道了电脑的基本组成与周边设备,也知道其实电脑的CPU种类非常的多,再来我们想要了解的是,电脑如何分类? 电脑的分类非常多种,如果以电脑的复杂度与运算能力进行分类的话,主要可以分为这几类:
- 超级电脑(Supercomputer)
超级电脑是运作速度最快的电脑,但是他的维护、操作费用也最高!主要是用于需要有高速计算的计划中。 例如:国防军事、气象预测、太空科技,用在仿真的领域较多。详情也可以参考: 国家高速网络与计算中心http://www.nchc.org.tw的介绍! 至于全世界最快速的前500大超级电脑,则请参考:http://www.top500.org。 - 大型电脑(Mainframe Computer)
大型电脑通常也具有数个高速的CPU,功能上虽不及超级电脑,但也可用来处理大量数据与复杂的运算。 例如大型企业的主机、全国性的证券交易所等每天需要处理数百万笔数据的企业机构, 或者是大型企业的数据库服务器等等。 - 迷你电脑(Minicomputer)
迷你电脑仍保有大型电脑同时支持多用户的特性,但是主机可以放在一般作业场所, 不必像前两个大型电脑需要特殊的空调场所。通常用来作为科学研究、工程分析与工厂的流程管理等。 - 工作站(Workstation)
工作站的价格又比迷你电脑便宜许多,是针对特殊用途而设计的电脑。在个人电脑的性能还没有提升到目前的状况之前, 工作站电脑的性能/价格比是所有电脑当中较佳的,因此在学术研究与工程分析方面相当常见。 - 微电脑(Microcomputer)
个人电脑就属于这部份的电脑分类,也是我们本章主要探讨的目标!体积最小,价格最低,但功能还是五脏俱全的! 大致又可分为桌面型、笔记型等等。
若光以性能来说,目前的个人电脑性能已经够快了,甚至已经比工作站等级以上的电脑运算速度还要快! 但是工作站电脑强调的是稳定不当机,并且运算过程要完全正确,因此工作站以上等级的电脑在设计时的考量与个人电脑并不相同啦! 这也是为啥工作站等级以上的电脑售价较贵的原因。
0.1.6 电脑上面常用的计算单位 (容量、速度等)
电脑的运算能力除了 CPU 微指令集设计的优劣之外,但主要还是由速度来决定的。至于存放在电脑保存设备当中的数据容量也是有单位的。
- 容量单位
电脑对数据的判断主要依据有没有通电来记录信息,所以理论上对于每一个纪录单位而言,它只认识 0 与 1 而已。0/1 这个二进位的的单位我们称为 bit。 但 bit 实在太小了,所以在保存数据时每份简单的数据都会使用到 8 个 bits 的大小来记录,因此定义出 byte 这个单位,他们的关系为:
1 Byte = 8 bits
不过同样的,Byte 还是太小了,在较大的容量情况下,使用 byte 相当不容易判断数据的大小,举例来说,1000000 bytes 这样的显示方式你能够看得出有几个零吗?所以后来就有一些常见的简化单位表示法,例如 K 代表 1024 byte,M 代表 1024K 等。 而这些单位在不同的进制下有不同的数值表示,底下就列出常见的单位与进制对应:
进制 | Kilo | Mega | Giga | Tera | Peta | Exa | Zetta |
二进位 | 1024 | 1024K | 1024M | 1024G | 1024T | 1024P | 1024E |
十进位 | 1000 | 1000K | 1000M | 1000G | 1000T | 1000P | 1000E |
一般来说,文件容量使用的是二进位的方式,所以 1 GBytes 的文件大小实际上为:1024x1024x1024 Bytes 这么大! 速度单位则常使用十进位,例如 1GHz 就是 1000x1000x1000 Hz 的意思。
- 速度单位
CPU的运算速度常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少 Mbit。举例来说,大家常听到的 20M/5M 光世代传输速度,如果转成文件容量的 byte 时,其实理论最大传输值为:每秒 2.5Mbyte/ 每秒625Kbyte的下载/上传速度喔!
例题:
假设你今天购买了500GB的硬盘一颗,但是格式化完毕后却只剩下460GB左右的容量,这是什么原因?
答:
因为一般硬盘制造商会使用十进位的单位,所以500GByte代表为500*1000*1000*1000Byte之意。
转成文件的容量单位时使用二进位(1024为底),所以就成为466GB左右的容量了。
硬盘厂商并非要骗人,只是因为硬盘的最小物理量为512Bytes,最小的组成单位为磁区(sector), 通常硬盘容量的计算采用『多少个sector』,所以才会使用十进位来处理的。相关的硬盘信息在这一章后面会提到的! |
0.2 个人电脑架构与相关设备组件
一般消费者常说的电脑通常指的就是x86的个人电脑架构,因此我们有必要来了解一下这个架构的各个组件。事实上,Linux最早在发展的时候,就是依据个人电脑的架构来发展的, 所以真的得要了解一下呢!另外,早期两大主流x86开发商(Intel, AMD)的CPU架构与设计理念都有些许差异。不过互相学习对方长处的结果,就是两者间的架构已经比较类似了。 由于目前市场占有率还是以 Intel 为大宗,因此底下以目前(2015)相对较新的 Intel 主板架构来谈谈:
图 0.2.1、Intel芯片架构
由于主板是链接各组件的一个重要项目,因此在主板上面沟通各部组件的芯片组设计优劣,就会影响性能不少喔!早期的芯片组通常分为两个桥接器来控制各组件的沟通, 分别是:(1)北桥:负责链接速度较快的CPU、主内存与显卡界面等组件;(2)南桥:负责连接速度较慢的设备接口, 包括硬盘、USB、网络卡等等。(芯片组的南北桥与三国的大小乔没有关系 @_@)。不过由于北桥最重要的就是 CPU 与主内存之间的桥接,因此目前的主流架构中, 大多将北桥内存控制器集成到 CPU 封装当中了。所以上图你只会看到 CPU 而没有看到以往的北桥芯片喔!
毕竟目前世界上x86的CPU主要供应商为Intel,所以底下鸟哥将以Intel的主板架构说明各组件啰! 我们以华硕公司出的主板,型号:Asus Z97-AR 作为一个说明的范例,搭配着主板芯片组逻辑图 0.2.1 的说明,主板各组件如下所示:
上述的图片中,主板上面设计的插槽主要有 CPU (Intel LGA 1150 Socket)、主内存 (DDR3 3200 support)、显卡界面 (PCIe3.0)、SATA 磁盘插槽 (SATA express)等等。 底下的组件在解说的时候,请参考上述两张图标来印证喔!
0.2.1 运行脑袋运算与判断的 CPU
如同华硕主板示意图上半部的中央部分,那就是CPU插槽。 由于CPU负责大量运算,因此CPU通常是具有相当高发热量的组件。所以如果你曾经拆开过主板, 应该就会看到CPU上头通常会安插一颗风扇来主动散热的。
x86个人电脑的CPU主要供应商为Intel与AMD,目前(2015)主流的CPU都是双核以上的架构了! 原本的单核心CPU仅有一个运算单元,所谓的多核心则是在一颗CPU封装当中嵌入了两个以上的运算核心, 简单的说,就是一个实体的CPU外壳中,含有两个以上的CPU单元就是了。
不同的CPU型号大多具有不同的脚位(CPU上面的插脚),能够搭配的主板芯片组也不同, 所以当你想要将你的主机升级时,不能只考虑CPU,你还得要留意你的主板上面所支持的CPU型号喔! 不然买了最新的CPU也不能够安插在你的旧主板上头的!目前主流的CPU有Intel的 i3/i5/i7 系列产品中,甚至先后期出厂的类似型号的脚位也不同, 例如 i7-2600 使用 LGA1155 脚位而 i7-4790 则使用 FCLGA1150 脚位,挑选时必须要很小心喔!
我们前面谈到CPU内部含有微指令集,不同的微指令集会导致CPU工作效率的优劣。除了这点之外, CPU性能的比较还有什么呢?那就是CPU的时脉了!什么是时脉呢?简单的说, 时脉就是CPU每秒钟可以进行的工作次数。 所以时脉越高表示这颗CPU单位时间内可以作更多的事情。举例来说,Intel的 i7-4790 CPU时脉为3.6GHz, 表示这颗CPU在一秒内可以进行3.6x109次工作,每次工作都可以进行少数的指令运作之意。
- CPU的工作时脉:外频与倍频
早期的 CPU 架构主要透过北桥来链接系统最重要的 CPU、主内存与显卡设备。因为所有的设备都得掉透过北桥来链接,因此每个设备的工作频率应该要相同。 于是就有所谓的前端总线 (FSB) 这个东西的产生。但因为 CPU 的运算速度比其他的设备都要来的快,又为了要满足 FSB 的频率,因此厂商就在 CPU 内部再进行加速, 于是就有所谓的外频与倍频了。
总结来说,在早期的 CPU 设计中,所谓的外频指的是CPU与外部组件进行数据传输时的速度,倍频则是 CPU 内部用来加速工作性能的一个倍数, 两者相乘才是CPU的时脉速度。例如 Intel Core 2 E8400 的内频为 3.0GHz,而外频是333MHz,因此倍频就是9倍啰!(3.0G=333Mx9, 其中1G=1000M)
但如此一来所有的数据都被北桥卡死了,北桥又不可能比 CPU 更快,因此这家伙常常是系统性能的瓶颈。为了解决这个问题,新的 CPU 设计中, 已经将内存控制器集成到 CPU 内部,而链接 CPU 与内存、显卡的控制器的设计,在Intel部份使用 QPI (Quick Path Interconnect) 与 DMI 技术,而 AMD 部份则使用 Hyper Transport 了,这些技术都可以让 CPU 直接与主内存、显卡等设备分别进行沟通,而不需要透过外部的链接芯片了。
因为现在没有所谓的北桥了 (集成到 CPU 内),因此,CPU 的时脉设计就无须考虑得要同步的外频,只需要考量整体的频率即可。 所以,如果你经常有查阅自己 CPU 时脉的习惯,当使用 cpu-z (注9) 这个软件时,应该会很惊讶的发现到,怎么外频变成 100MHz 而倍频可以到达 30 以上!相当有趣呢!
- 32比特与64比特的CPU与总线『宽度』
从前面的简易说明中,我们知道 CPU 的各项数据通通得要来自于主内存。因此,如果主内存能提供给 CPU 的数据量越大的话,当然整体系统的性能应该也会比较快! 那如何知道主内存能提供的数据量呢?此时还是得要借由 CPU 内的内存控制芯片与主内存间的传输速度『前端总线速度(Front Side Bus, FSB) 来说明。
与 CPU 的时脉类似的,主内存也是有其工作的时脉,这个时脉限制还是来自于 CPU 内的内存控制器所决定的。以图0.2.1 为例, CPU 内置的内存控制芯片对主内存的工作时脉最高可达到 1600MHz。这只是工作时脉(每秒几次)。一般来说,每次时脉能够传输的数据量,大多为 64 比特,这个 64 比特就是所谓的『宽度』了! 因此,在图0.2.1 这个系统中,CPU可以从内存中取得的最快带宽就是 1600MHz * 64bit = 1600MHz * 8 bytes = 12.8Gbyte/s。
与总线宽度相似的,CPU每次能够处理的数据量称为字组大小(word size), 字组大小依据CPU的设计而有32比特与64比特。我们现在所称的电脑是32或64比特主要是依据这个 CPU解析的字组大小而来的!早期的32比特CPU中,因为CPU每次能够解析的数据量有限, 因此由主内存传来的数据量就有所限制了。这也导致32比特的CPU最多只能支持最大到4GBytes的内存。
- 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做最佳化的设计,万一哪天你发现一些程序是注明给x86_64的CPU使用时, 就不要将他安装在686以下等级的电脑中,否则可是会无法运行该软件的! 不过,在x86_64的硬件下倒是可以安装386的软件喔!也就是说,这些东西具有向下兼容的能力啦!
- 超线程 (Hyper-Threading, HT)
我们知道现在的 CPU 至少都是两个核心以上的多核心 CPU 了,但是 Intel 还有个很怪的东西,叫做 CPU 的超线程 (Hyper-Threading) 功能! 那个是啥鬼东西?我们知道现在的 CPU 运算速度都太快了,因此运算核心经常处于闲置状态下。而我们也知道现在的系统大多都是多任务的系统, 同时间有很多的进程会让 CPU 来运行。因此,若 CPU 可以假象的同时运行两个进程,不就可以让系统性能增加了吗?反正 CPU 的运算能力还是没有用完啊!
那是怎么达成的啊这个 HT 功能?强者鸟哥的同事蔡董大大用个简单的说明来解释。在每一个 CPU 内部将重要的寄存器 (register) 分成两群, 而让进程分别使用这两群寄存器。也就是说,可以有两个进程『同时竞争 CPU 的运算单元』,而非透过操作系统的多任务切换! 这一过程就会让 CPU 好像『同时有两个核心』的模样!因此,虽然大部分 i7 等级的 CPU 其实只有四个实体核心,但透过 HT 的机制, 则操作系统可以抓到八个核心!并且让每个核心逻辑上分离,就可以同时运作八个进程了。
虽然很多研究与测试中,大多发现 HT 虽然可以提升性能,不过,有些情况下却可能导致性能降低喔!因为,实际上明明就仅有一个运算单元嘛! 不过在鸟哥使用数值模式的情况下,因为鸟哥操作的数值模式主要为平行运算功能,且运算通常无法达到 100% 的 CPU 使用率,通常仅有大约60%运算量而已。 因此在鸟哥的实作过程中,这个 HT 确实提升相当多的性能!至少应该可以节省鸟哥大约30%~50%的等待时间喔!不过网络上大家的研究中, 大多说这个是 case by case,而且使用的软件影响很大!所以,在鸟哥的例子是启用 HT 帮助很大!您的案例就得要自行研究啰!
0.2.2 内存
如同图0.2.2、华硕主板示意图中的右上方部分的那四根插槽,那就是主内存的插槽了。 主内存插槽中间通常有个突起物将整个插槽稍微切分成为两个不等长的距离, 这样的设计可以让用户在安装主内存时,不至于前后脚位安插错误,是一种防呆的设计喔。
前面提到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的型号与频率及带宽之间的关系。(注11)
SDRAM/DDR | 型号 | 数据宽度(bit) | 内部时脉(MHz) | 频率速度 | 带宽(频率x宽度) |
SDRAM | PC100 | 64 | 100 | 100 | 800MBytes/sec |
SDRAM | PC133 | 64 | 133 | 133 | 1064MBytes/sec |
DDR | DDR-266 | 64 | 133 | 266 | 2.1GBytes/sec |
DDR | DDR-400 | 64 | 200 | 400 | 3.2GBytes/sec |
DDR | DDR2-800 | 64 | 200 | 800 | 6.4GBytes/sec |
DDR | DDR3-1600 | 64 | 200 | 1600 | 12.8GBytes/sec |
DDR SDRAM又依据技术的发展,有DDR, DDR2, DDR3, DDR4等等,其中,DDR2 的频率倍数则是 4 倍而DDR3 则是 8 倍喔! 目前鸟哥用到服务器等级的内存,已经到 DDR4 了耶!超快超快!
主内存除了频率/带宽与型号需要考虑之外,内存的容量也是很重要的喔! 因为所有的数据都得要加载内存当中才能够被CPU判读,如果内存容量不够大的话将会导致某些大容量数据无法被完整的加载, 此时已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用内存容量大于该数据,那份新数据才能够被加载呢! 所以,通常越大的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的数据。 以服务器来说,主内存的容量有时比CPU的速度还要来的重要的!
- 多信道设计
由于所有的数据都必须要存放在主内存,所以主内存的数据宽度当然是越大越好。 但传统的总线宽度一般大约仅达64比特,为了要加大这个宽度,因此芯片组厂商就将两个主内存汇整在一起, 如果一支内存可达64比特,两支内存就可以达到128比特了,这就是双信道的设计理念。
如上所述,要启用双信道的功能你必须要安插两支(或四支)主内存,这两支内存最好连型号都一模一样比较好, 这是因为启动双信道内存功能时,数据是同步写入/读出这一对主内存中,如此才能够提升整体的带宽啊! 所以当然除了容量大小要一致之外,型号也最好相同啦!
你有没有发现图 0.2.2、华硕主板示意图上那四根内存插槽的颜色呢?是否分为两种颜色,且两两成对? 为什么要这样设计?答出来了吗?是啦!这种颜色的设计就是为了双信道来的!要启动双信道的功能时, 你必须要将两根容量相同的主内存插在相同颜色的插槽当中喔!
- DRAM与SRAM
除了主内存之外,事实上整部个人电脑当中还有许许多多的内存存在喔!最为我们所知的就是CPU内的第二层高速缓存。 我们现在知道CPU的数据都是由主内存提供,但CPU到主内存之间还是得要透过内存控制器啊! 如果某些很常用的程序或数据可以放置到CPU内部的话,那么CPU数据的读取就不需要跑到主内存重新读取了! 这对于性能来说不就可以大大的提升了?这就是第二层缓存的设计概念。第二层缓存与主内存及CPU的关系如下图所示:
因为第二层缓存(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)(注12)很多也是使用ROM来进行软件的写入的。 固件像软件一样也是一个被电脑所运行的程序,然而他是对于硬件内部而言更加重要的部分。例如BIOS就是一个固件, BIOS虽然对于我们日常操作电脑系统没有什么太大的关系,但是他却控制着开机时各项硬件参数的取得! 所以我们会知道很多的硬件上头都会有ROM来写入固件这个软件。
BIOS 对电脑系统来讲是非常重要的,因为他掌握了系统硬件的详细信息与开机设备的选择等等。但是电脑发展的速度太快了, 因此 BIOS 代码也可能需要作适度的修改才行,所以你才会在很多主板官网找到 BIOS 的更新程序啊!但是 BIOS 原本使用的是无法改写的 ROM ,因此根本无法修正 BIOS 代码!为此,现在的 BIOS 通常是写入类似闪存 (flash) 或 EEPROM (注13) 中。(注14)
0.2.3 显卡
显卡插槽如同图 0.2.2、华硕主板示意图所示,在中左方有个 PCIe 3.0 的项目, 这张主板中提供了两个显卡插槽喔!
显卡又称为VGA(Video Graphics Array),他对于图形影像的显示扮演相当关键的角色。 一般对于图形影像的显示重点在于分辨率与色彩深度,因为每个图像显示的颜色会占用掉内存, 因此显卡上面会有一个内存的容量,这个显卡内存容量将会影响到你的屏幕分辨率与色彩深度的喔!
除了显卡内存之外,现在由于三度空间游戏(3D game)与一些3D动画的流行,因此显卡的『运算能力』越来越重要。 一些3D的运算早期是交给CPU去运作的,但是CPU并非完全针对这些3D来进行设计的,而且CPU平时已经非常忙碌了呢! 所以后来显卡厂商直接在显卡上面嵌入一个3D加速的芯片,这就是所谓的GPU称谓的由来。
显卡主要也是透过CPU的控制芯片来与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 1.0 x1 | 无 | 无 | 250 MBytes/s |
PCIe 1.0 x8 | 无 | 无 | 2 GBytes/s |
PCIe 1.0 x16 | 无 | 无 | 4 GBytes/s |
比较特殊的是,PCIe(PCI-Express)使用的是类似管线的概念来处理,在 PCIe 第一版 (PCIe 1.0) 中,每条管线可以具有250MBytes/s的带宽性能, 管线越多(通常设计到 x16 管线)则总带宽越高!另外,为了提升更多的带宽,因此 PCIe 还有高端版本,目前主要的版本为第三版,相关的带宽如下:(注15)
规格 | 1x带宽 | 16x带宽 |
PCIe 1.0 | 250MByte/s | 4GByte/s |
PCIe 2.0 | 500MByte/s | 8GByte/s |
PCIe 3.0 | ~1GByte/s | ~16GByte/s |
PCIe 4.0 | ~2GByte/s | ~32GByte/s |
若以图0.2.2的主板为例,它使用的是 PCIe 3.0 的 16x,因此最大带宽就可以到达接近 32Gbytes/s 的传输量! 比起AGP是快很多的!好可怕的传输量....
如果你的主机是用来打3D游戏的,那么显卡的选购是非常重要喔!如果你的主机是用来做为网络服务器的, 那么简单的入门级显卡对你的主机来说就非常够用了!因为网络服务器很少用到3D与图形影像功能。
例题:
假设你的桌面使用1024x768分辨率,且使用全彩(每个像素占用3bytes的容量),请问你的显卡至少需要多少内存才能使用这样的彩度?
答:
因为1024x768分辨率中会有786432个像素,每个像素占用3bytes,所以总共需要2.25MBytes以上才行!
但如果考虑屏幕的更新率(每秒钟屏幕的更新次数),显卡的内存还是越大越好!
|
除了显卡与主板的连接接口需要知道外,那么显卡是透过什么格式与电脑屏幕 (或电视) 连接的呢?目前主要的连接接口有:
- D-Sub (VGA端子):为较早之前的连接接口,主要为 15 针的连接,为模拟信号的传输,当初设计是针对传统映像管屏幕而来。 主要的规格有标准的 640x350px @70Hz、1280x1024px @85Hz 及 2048x1536px @85Hz 等。
- DVI:共有四种以上的接头,不过台湾市面上比较常见的为仅提供数字信号的 DVI-D,以及集成数字与模拟信号的 DVI-I 两种。DVI 常见于液晶屏幕的链接, 标准规格主要有: 1920x1200px @60Hz、 2560x1600px @60Hz 等。
- HDMI:相对于 D-sub 与 DVI 仅能发送影像数据,HDMI 可以同时发送影像与声音,因此被广泛的使用于电视屏幕中!电脑屏幕目前也经常都有支持 HDMI 格式!
- Display port:与 HDMI 相似的,可以同时传输声音与影像。不过这种界面目前在台湾还是比较少屏幕的支持!
0.2.4 硬盘与保存设备
电脑总是需要记录与读取数据的,而这些数据当然不可能每次都由用户经过键盘来打字!所以就需要有保存设备咯。 电脑系统上面的保存设备包括有:硬盘、软碟、MO、CD、DVD、磁带机、随身碟(闪存)、还有新一代的蓝光光驱等, 乃至于大型机器的局域网路保存设备(SAN, NAS)等等,都是可以用来保存数据的。而其中最常见的应该就是硬盘了吧!
- 硬盘的物理组成
大家应该都看过硬盘吧!硬盘依据桌面型与笔记型电脑而有分为3.5吋及2.5吋的大小。我们以3.5吋的台式机使用硬盘来说明。 在硬盘盒里面其实是由许许多多的圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成的,整个内部如同下图所示:
实际的数据都是写在具有磁性物质的磁盘盘上头,而读写主要是透过在机械手臂上的读取头(head)来达成。 实际运作时, 主轴马达让磁盘盘转动,然后机械手臂可伸展让读取头在磁盘盘上头进行读写的动作。 另外,由於单一磁盘盘的容量有限,因此有的硬盘内部会有两个以上的磁盘盘喔!
- 磁盘盘上的数据
既然数据都是写入磁盘盘上头,那么磁盘盘上头的数据又是如何写入的呢?其实磁盘盘上头的数据有点像下面的图标所示:
由于磁盘盘是圆的,并且透过机器手臂去读写数据,磁盘盘要转动才能够让机器手臂读写。因此,通常数据写入当然就是以圆圈转圈的方式读写啰! 所以,当初设计就是在类似磁盘盘同心圆上面切出一个一个的小区块,这些小区块集成成一个圆形,让机器手臂上的读写头去访问。 这个小区块就是磁盘的最小物理保存单位,称之为磁区 (sector),那同一个同心圆的磁区组合成的圆就是所谓的磁道(track)。 由于磁盘里面可能会有多个磁盘盘,因此在所有磁盘盘上面的同一个磁道可以组合成所谓的磁柱 (cylinder)。
我们知道同心圆外圈的圆比较大,占用的面积比内圈多啊!所以,为了善用这些空间,因此外围的圆会具有更多的磁区(注16)! 就如同图 0.2.5 的示意一般。此外,当磁盘盘转一圈时,外圈的磁区数量比较多,因此如果数据写入在外圈,转一圈能够读写的数据量当然比内圈还要多! 因此通常数据的读写会由外圈开始往内写的喔!这是默认值啊!
另外,原本硬盘的磁区都是设计成 512byte 的容量,但因为近期以来硬盘的容量越来越大,为了减少数据量的拆解,所以新的高容量硬盘已经有 4Kbyte 的磁区设计! 购买的时候也需要注意一下。也因为这个磁区的设计不同了,因此在磁盘的分割方面,目前有旧式的 MSDOS 兼容模式,以及较新的 GPT 模式喔! 在较新的 GPT 模式下,磁盘的分割通常使用磁区号码来设计,跟过去旧的 MSDOS 是透过磁柱号码来分割的情况不同喔!相关的说明我们谈到磁盘管理 (第七章) 再来聊!
- 传输界面
为了要提升磁盘的传输速度,磁盘与主板的连接界面也经过多次的改版,因此有许多不同的界面喔!传统磁盘界面包括有 SATA, SAS, IDE 与 SCSI 等等。 若考虑外置式磁盘,那就还包括了 USB, eSATA 等等界面喔!不过目前 IDE 已经被 SATA 取代,而 SCSI 则被 SAS 取代,因此我们底下将仅介绍 SATA, USB 与 SAS 界面而已。
- SATA接口
如同华硕主板图标右下方所示为SATA硬盘的连接接口插槽。这种插槽所使用的排线比较窄小, 而且每个设备需要使用掉一条SATA线。因为SATA线比较窄小之故,所以对于安装与机壳内的通风都比较好!因此原本的IDE粗排线界面就被SATA取代了! SATA的插槽示意图如下所示:
由于SATA一条排线仅接一颗硬盘,所以你不需要调整跳针。不过一张主板上面SATA插槽的数量并不是固定的, 且每个插槽都有编号,在连接SATA硬盘与主板的时候,还是需要留意一下。此外,目前的 SATA 版本已经到了第三代 (注17), 每一代之间的传输速度如下所示,而且重点是,每一代都可以向下兼容喔!只是速度上会差很多就是了。目前主流都是使用 SATA3 这个界面速度可达 600Mbyte/s 的界面!
版本 | 带宽 (Gbit/s) | 速度 (Mbyte/s) |
SATA 1.0 | 1.5 | 150 |
SATA 2.0 | 3 | 300 |
SATA 3.0 | 6 | 600 |
因为 SATA 传输界面传输时,透过的数据算法的关系,当传输 10 比特编码时,仅有 8 比特为数据,其余 2 比特为检验之用。因此带宽的计算上面, 使用的换算 (bit 转 byte) 为 1:10 而不是 1byte=8bits 喔!上表的对应要稍微注意一下。另外,虽然这个 SATA3 界面理论上可达 600Mbytes/s 的传输速度, 不过目前传统的硬盘由于其物理组成的限制,一般极限速度大约在 150~200Mbyte/s 而已啦!所以厂商们才要发展固态硬盘啊! ^_^
- SAS接口
早期工作站或大型大脑上面,为了读写速度与稳定度,因此在这样的机器上面,大多使用的是 SCSI 这种高端的连接接口。 不过这种接口的速度后来被 SATA 打败了!但是 SCSI 有其值得开发的功能,因此后来就有串列式 SCSI (Serial Attached SCSI, SAS) 的发展。这种接口的速度比 SATA 来的快,而且连接的 SAS 硬盘的磁盘盘转速与传输的速度也都比 SATA 硬盘好! 只是...好贵喔!而且一般个人电脑的主板上面通常没有内置 SAS 连接接口,得要透过外置卡才能够支持。因此一般个人电脑主机还是以 SATA 接口为主要的磁盘连接接口啰。
版本 | 带宽 (Gbit/s) | 速度 (Mbyte/s) |
SAS 1 | 3 | 300 |
SAS 2 | 6 | 600 |
SAS 3 | 12 | 1200 |
因为这种接口的速度确实比较快喔!而且还支持例如热拔插等功能,因此,许多的设备连接会以这种接口来链接! 例如我们经常会听到的磁盘数组卡的连接插槽,就是利用这种 SAS 接口开发出来的支持的 SFF-8087 设备等等的 (注18)。
- USB接口
如果你的磁盘是外置式的界面,那么很可能跟主板链接的就是 USB 这种界面了!这也是目前 (2015) 最常见到的外置式磁盘界面了。 不过传统的 USB 速度挺慢的,即使是比较慢的传统硬盘,其传输率大概都还有 80~120Mbytes/s ,但传统的 USB 2.0 仅有大约 60Mbytes/s 的理论传输率, 通常实做在主板上面的连接口,竟然都仅有 30~40 Mbyte/s 而已呢!实在发挥不出磁盘的性能啊!
为了改善 USB 的传输率,因此新一代的 USB 3.0 速度就快很多了!据说还有更新的 USB 3.1 正在发展中!这几代版本的带宽与速度制表如下 (注19):
版本 | 带宽 (Mbit/s) | 速度 (Mbyte/s) |
USB 1.0 | 12 | 1.5 |
USB 2.0 | 480 | 60 |
USB 3.0 | 5G | 500 |
USB 3.1 | 10G | 1000 |
跟 SATA 界面一样,不是理论速度到达该数值,实际上就可以跑到这么高!USB 3.0 虽然速度很快,但如果你去市面上面买 USB 的传统磁盘或快闪碟, 其实他的读写速度还是差不多在 100Mbytes/s 而已啦!不过这样就超级快了!因为一般 USB2.0 的快闪碟读写速度大约是 40Mbytes/10Mbytes 左右而已说。 在购买这方面的外置式磁盘时,要特别考量喔!
- 固态硬盘 (Solid State Disk, SSD)
传统硬盘有个很致命的问题,就是需要驱动马达去转动磁盘盘~这会造成很严重的磁盘读取延迟!想想看,你得要知道数据在哪个磁区上面,然后再命令马达开始转, 之后再让读取头去读取正确的数据。另外,如果数据放置的比较离散(磁区分布比较广又不连续),那么读写的速度就会延迟更明显!速度快不起来。因此, 后来就有厂商拿闪存去制作成高容量的设备,这些设备的连接界面也是透过 SATA 或 SAS,而且外型还做的跟传统磁盘一样!所以, 虽然这类的设备已经不能称为是磁盘 (因为没有读写头与磁盘盘啊!都是内存!)。但是为了方便大家称呼,所以还是称为磁盘!只是跟传统磁盘 (Hard Disk Drive, HDD) 不同, 就称为固态硬盘 (Solid State Disk 或 Solid State Driver, SSD)。
固态硬盘最大的好处是,它没有马达不需要转动,而是透过内存直接读写的特性,因此除了没数据延迟且快速之外,还很省电! 不过早期的 SSD 有个很重要的致命伤,就是这些闪存有『写入次数的限制』在,因此通常 SSD 的寿命大概两年就顶天了!所以数据存放时, 需要考虑到备份或者是可能要使用 RAID 的机制来防止 SSD 的损毁(注20)!
其实我们在读写磁盘时,通常没有连续读写,大部分的情况下都是读写一大堆小文件,因此,你不要妄想传统磁盘一直转少少圈就可以读到所有的数据! 通常很多小文件的读写,会很操硬盘,因为磁盘盘要转好多圈!这也很花人类的时间啊!SSD 就没有这个问题!也因为如此,近年来在测试磁盘的性能时, 有个很特殊的单位,称为每秒读写操作次数 (Input/Output Operations Per Second, IOPS)!这个数值越大,代表可操作次数较高,当然性能好的很!
- 选购与运转须知
如果你想要增加一颗硬盘在你的主机里头时,除了需要考虑你的主板可接受的插槽接口(SATA/SAS)之外,还有什么要注意的呢?
- HDD 或 SSD
毕竟 HDD 与 SSD 的价格与容量真的差很多!不过,速度也差很多就是了!因此,目前大家的使用方式大多是这样的,使用 SSD 作为系统碟, 然后数据保存大多放置在 HDD 上面!这样系统运作快速 (SSD),而数据保存量也大 (HDD)。 - 容量
毕竟目前数据量越来越大,所以购买磁盘通常首先要考量的就是容量的问题!目前(2015)主流市场HDD容量已经到达 2TB以上, 甚至有的厂商已经生产高达 8TB 的产品呢!硬盘可能可以算是一种消耗品,要注意重要数据还是得常常备份出来喔! 至于 SSD 方面,目前的容量大概还是在 128~256GB 之间吧! - 缓冲内存
硬盘上头含有一个缓冲内存,这个内存主要可以将硬盘内常使用的数据缓存起来,以加速系统的读取性能。 通常这个缓冲内存越大越好,因为缓冲内存的速度要比数据从硬盘盘中被找出来要快的多了! 目前主流的产品可达64MB左右的内存大小喔。 - 转速
因为硬盘主要是利用主轴马达转动磁盘盘来访问,因此转速的快慢会影响到性能。 主流的台式机硬盘为每分钟7200转,笔记型电脑则是5400转。有的厂商也有推出高达10000转的硬盘, 若有高性能的数据访问需求,可以考虑购买高转速硬盘。 - 运转须知
由于硬盘内部机械手臂上的磁头与硬盘盘的接触是很细微的空间, 如果有抖动或者是脏污在磁头与硬盘盘之间就会造成数据的损毁或者是实体硬盘整个损毁~ 因此,正确的使用电脑的方式,应该是在电脑通电之后,就绝对不要移动主机,并免抖动到硬盘, 而导致整个硬盘数据发生问题啊!另外,也不要随便将插头拔掉就以为是顺利关机!因为机械手臂必须要归回原位, 所以使用操作系统的正常关机方式,才能够有比较好的硬盘保养啊!因为他会让硬盘的机械手臂归回原位啊!
0.2.5 扩充卡与界面
你的服务器可能因为某些特殊的需求,因此需要使用主板之外的其他适配器。所以主板上面通常会预留多个扩充界面的插槽, 这些插槽依据历史沿革,包括 PCI/AGP/PCI-X/PCIe 等等,但是由于 PCIe 速度快到太好用了,因此几乎所有的卡都以 PCIe 来设计了! 但是有些比较老旧的卡可能还需要使用啊,因此一般主板大多还是会保留一两个 PCI 插槽,其他的则是以 PCIe 来设计。
由于各组件的价格直直落,现在主板上面通常已经集成了相当多的设备组件了! 常见集成到主板的组件包括声卡、网络卡、USB控制卡、显卡、磁盘数组卡等等。 你可以在主板上面发现很多方形的芯片,那通常是一些个别的设备芯片喔。
不过,因为某些特殊的需求,有时你可能还是需要增加额外的扩充卡的。举例来说,我们如果需要一部个人电脑连接多个网域时(Linux 服务器用途), 恐怕就得要有多个网络卡。当你想要买网络卡时,大卖场上面有好多耶!而且速度一样都是 giga 网卡 (Gbit/s),但价格差很多耶! 观察规格,主要有 PCIe x1 以及 PCI 界面的!你要买哪种界面呢?
观察一下 0.2.3 显卡的章节内,你会发现到 PCI 界面的理论传输率最高指到 133Mbytes/s 而已,而 PCIe 2.0 x1 就高达 500Mbytes/s 的速度! 鸟哥实测的结果也发现,PCI 界面的 giga 网卡极限速度大约只到 60Mbytes/s 而已,而 PCIe 2.0 x1 的 giga 网卡确实可以到达大约 110Mbytes/s 的速度! 所以,购买设备时,还是要查清楚连接界面才行啦!
在 0.2.3 节也谈到 PCIe 有不同的信道数,基本上常见的就是 x1, x4, x8, x16 等,个人电脑主板常见是 x16 的,一般中阶服务器则大多有多个 x8 的界面, x16 反而比较少见。这些界面在主板上面的设计,主要是以插槽的长度来看的,例如华硕主板示意图中,左侧有 2 个 PCI 界面, 其他的则是 3 个 x16 的插槽,以及 2 个 x1 的插槽,看长度就知道了。
- 多信道卡 (例如 x8 的卡) 安装在少信道插槽 (例如 x4 的插槽) 的可用性
再回头看看图 0.2.1 的示意图,你可以发现 CPU 最多最多仅能支持 16 个 PCIe 3.0 的信道数,因此在图标当中就明白的告诉你, 你可以设计(1)一个 x16 (2)或者是两个 x8 ,(3)或者是两个 x4 加上一个 x8 的方式来增加扩充卡!这是可以直接链接到 CPU 的信道!咦! 那为何图 0.2.2 可以有 3 个 x16 的插槽呢?原因是前两个属于 CPU 支持的,后面两个可能就是南桥提供的 PCIe 2.0 的界面了! 那明明最多仅能支持一个 x16 的界面,怎么可能设计 3 个 x16 呢?
因为要让所有的扩充卡都可以安插在主板上面,所以在比较中高端的主板上面,他们都会做出 x16 的插槽,但是该插槽内其实只有 x8 或 x4 的信道有用! 其他的都是空的没有金手指 (电路的意思)~咦!那如果我的 x16 的卡安装在 x16 的插槽,但是这个插槽仅有 x4 的电路设计,那我这张卡可以运作吗? 当然可以!这就是 PCIe 的好处了!它可以让你这张卡仅使用 x4 的电路来发送数据,而不会无法使用!只是...你的这张卡的极限性能,就会只剩下 4/16 = 1/4 啰!
因为一般服务器惯用的扩充卡,大多数都使用 PCIe x8 的界面 (因为也没有什么设备可以将 PCIe 3.0 的 x8 速度用完啊!), 为了增加扩充卡的数量,因此服务器级的主板才会大多使用到 x8 的插槽说!反正,要发挥扩充卡的能力,就得要搭配相对应的插槽才行啦!
0.2.6 主板
这个小节我们特别再将主板拿出来说明一下,特别要讲的就是芯片组与扩充卡之间的关系了!
- 发挥扩充卡性能须考虑的插槽位置
如同图 0.2.1 所示,其实系统上面可能会有多个 x8 的插槽,那么到底你的卡插在哪个插槽上面性能最好? 我们以该图来说,如果你是安插在左上方跟 CPU 直接连接的那几个插槽,那性能最佳!如果你是安插在左侧由上往下数的第五个 PCIe 2.0 x8 的插槽呢? 那个插槽是与南桥连接,所以你的扩充卡数据需要先进入南桥跟大家抢带宽,之后要传向 CPU 时,还得要透过 CPU 与南桥的沟通管道, 那条管道称为 DMI 2.0。
根据 Intel 方面的数据来看,DMI 2.0 的传输率是 4GT/s,换算成文件传输量时,大约仅有 2GByte/s 的速度, 要知道,PCIe 2.0 x8 的理论速度已经达到 4GByte/s 了,但是与 CPU 的信道竟然仅有 2GB,性能的瓶颈就这样发生在 CPU 与南桥的沟通上面! 因此,卡安装在哪个插槽上面,对性能而言也是影响很大的!所以插卡时,请详细阅读您主板上面的逻辑图标啊 (类似本章的 Intel 芯片示意图)! 尤其 CPU 与南桥沟通的带宽方面,特别重要喔!
- 设备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接口取代,甚至较新的主板可能就不再提供 PS/2 界面了;
- USB接口:通常只剩下 USB 2.0 与 USB 3.0,为了方便区分,USB 3.0 为蓝色的插槽颜色喔!
- 声音输出、输入与麦克风:这个是一些圆形的插孔,而必须你的主板上面有内置音效芯片时,才会有这三个东西;
- RJ-45网络头:如果有内置网络芯片的话,那么就会有这种接头出现。 这种接头有点类似电话接头,不过内部有八蕊线喔!接上网络线后在这个接头上会有灯号亮起才对!
- HDMI:如果有内置显示芯片的话,可能就会提供这个与屏幕连接的界面了!这种接口可以同时传输声音与影像, 目前也是电视机屏幕的主流连接接口喔!
我们以华硕主板的链接接口来看的话,主要有这些:
0.2.7 电源供应器
除了上面这些组件之外,其实还有一个很重要的组件也要来谈一谈,那就是电源供应器(Power)。 在你的机壳内,有个大大的铁盒子,上头有很多电源线会跑出来,那就是电源供应器了。 我们的CPU/RAM/主板/硬盘等等都需要用电,而近来的电脑组件耗电量越来越高,以前很古早的230W电源已经不够用了, 有的系统甚至得要有500W以上的电源才能够运作~真可怕~
电源供应器的价差非常大!贵一点的300W可以到4000 NT,便宜一点的300W只要500 NT不到! 怎么差这么多?没错~因为Power的用料不同,电源供应的稳定度也会差很多。如前所述,电源供应器相当于你的心脏, 心脏差的话,活动力就会不足了!所以, 稳定度差的电源供应器甚至是造成电脑不稳定的元凶呢!所以,尽量不要使用太差的电源供应器喔!
- 能源转换率
电源供应器本身也会吃掉一部份的电力的!如果你的主机系统需要 300W 的电力时,因为电源供应器本身也会消耗掉一部份的电力, 因此你最好要挑选400W以上的电源供应器。电源供应器出厂前会有一些测试数据,最好挑选高转换率的电源供应器。 所谓的高转换率指的是『输出的功率/输入的功率』。意思是说,假如你的主板用电量为250W, 但是电源供应器其实已经使用掉320W的电力,则转换率为:250/320=0.78的意思。 这个数值越高表示被电源供应器『玩掉』的电力越少,那就符合能源效益了!^_^
0.2.8 选购须知
在购买主机时应该需要进行整体的考量,很难依照某一项标准来选购的。 老实说,如果你的公司需要一部服务器的话,建议不要自行组装,买品牌电脑的服务器比较好! 这是因为自行组装的电脑虽然比较便宜,但是每项设备之间的适合性是否完美则有待自行检测。
另外,在性能方面并非仅考量CPU的能力而已,速度的快慢与『整体系统的最慢的那个设备有关!』,如果你是使用最快速的Intel i7 系列产品,使用最快的 DDR3-1600 内存, 但是配上一个慢慢的过时显卡,那么整体的3D速度性能将会卡在那个显卡上面喔!所以,在购买整套系统时, 请特别留意需要全部的接口都考虑进去喔!尤其是当您想要升级时,要特别注意这个问题, 并非所有的旧的设备都适合继续使用的。
例题:
你的系统使用 i7 的 4790 CPU,使用了 DDR3-1600 内存,使用了 PCIe 2.0 x8 的磁盘数组卡,这张卡上面安装了 8 颗 3TB 的理论速度可达 200Mbyte/s 的硬盘 (假设为可加总速度的 RAID0 配置),
是安插在 CPU 控制芯片相连的插槽中。网络使用 giga 网卡,安插在 PCIe 2.0 x1 的接口上。在这样的设备中,上述的哪个环节速度可能是你的瓶颈?
答:
|
- 系统不稳定的可能原因
除此之外,到底那个组件特别容易造成系统的不稳定呢?有几个常见的系统不稳定的状态是:
- 系统超频:这个行为很不好!不要这么做!
- 电源供应器不稳:
这也是个很严重的问题,当您测试完所有的组件都没有啥大问题时,记得测试一下电源供应器的稳定度!
- 内存无法负荷:现在的内存品质差很多,差一点的内存,可能会造成您的主机在忙碌的工作时,
产生不稳定或当机的现象喔!
- 系统过热:『热』是造成电子零件运作不良的主因之一,如果您的主机在夏天容易当机, 冬天却还好,那么考虑一下加几个风扇吧!有助于机壳内的散热,系统会比较稳定喔! 『 这个问题也是很常见的系统当机的元凶!』(PS1:鸟哥之前的一台服务器老是容易当机, 后来拆开机壳研究后才发现原来是北桥上面的小风扇坏掉了,导致北桥温度太高。后来换掉风扇就稳定多了。 PS2:还有一次整个实验室的网络都停了!检查了好久,才发现原来是网络交换器 switch 在夏天热到当机!后来只好用小电风扇一直吹他...)
0.3 数据表示方式
事实上我们的电脑只认识0与1,记录的数据也是只能记录0与1而已,所以电脑常用的数据是二进位的。 但是我们人类常用的数值运算是十进位,文本方面则有非常多的语言,台湾常用的语言就有英文、中文(又分正体与简体中文)、日文等。 那么电脑如何记录与显示这些数值/文本呢?就得要透过一系列的转换才可以啦!底下我们就来谈谈数值与文本的编码系统啰!
0.3.1 数字系统
早期的电脑使用的是利用通电与否的特性的真空管,如果通电就是1,没有通电就是0, 后来沿用至今,我们称这种只有0/1的环境为二进制,英文称为binary的哩。所谓的十进位指的是逢十进一位, 因此在个位数归为零而十位数写成1。所以所谓的二进位,就是逢二就前进一位的意思。
那二进位怎么用呢?我们先以十进位来解释好了。如果以十进位来说,3456的意义为:
特别注意:『任何数值的零次方为1』所以100的结果就是1啰。 同样的,将这个原理带入二进位的环境中,我们来解释一下1101010的数值转为十进位的话,结果如下:
= 64 + 32 + 0x16 + 8 + 0x4 + 2 + 0x1 = 106
这样你了解二进位的意义了吗?二进位是电脑基础中的基础喔!了解了二进位后,八进位、十六进位就依此类推啦! 那么知道二进位转成十进位后,那如果有十进位数值转为二进位的环境时,该如何计算? 刚刚是乘法,现在则是除法就对了!我们同样的使用十进位的106转成二进位来测试一下好了:
最后的写法就如同上面的红色箭头,由最后的数字向上写,因此可得到1101010的数字啰! 这些数字的转换系统是非常重要的,因为电脑的加减乘除都是使用这些机制来处理的! 有兴趣的朋友可以再参考一下其他计算计概论的书籍中,关于1的补数/2的补数等运算方式喔!
0.3.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.4 软件程序运作
鸟哥在上课时常常会开玩笑的问:『我们知道没有插电的电脑是一堆废铁,那么插了电的电脑是什么?』 答案是:『一堆会电人的废铁』!这是因为没有软件的运作,电脑的功能就无从发挥之故。 就好像没有了灵魂的躯体也不过就是行尸走肉,重点在于软件/灵魂啰!所以底下咱们就得要了解一下『软件』是什么。
一般来说,目前的电脑系统将软件分为两大类,一个是系统软件,一个是应用程序。但鸟哥认为我们还是得要了解一下什么是程序, 尤其是机器程序,了解了之后再来探讨一下为什么现今的电脑系统需要『操作系统』这玩意儿呢!
0.4.1 机器程序与编译程序
我们前面谈到电脑只认识0与1而已,而且电脑最重要的运算与逻辑判断是在CPU内部, 而CPU其实是具有微指令集的。因此,我们需要CPU帮忙工作时,就得要参考微指令集的内容, 然后撰写让CPU读的懂的脚本给CPU运行,这样就能够让CPU运作了。
不过这样的流程有几个很麻烦的地方,包括:
- 需要了解机器语言:机器只认识0与1,因此你必须要学习直接写给机器看的语言!
这个地方相当的难呢!
- 需要了解所有硬件的相关功能函数:因为你的程序必须要写给机器看,
当然你就得要参考机器本身的功能,然后针对该功能去撰写代码。例如,你要让DVD影片能够放映,
那就得要参考DVD光驱的硬件信息才行。万一你的系统有比较冷门的硬件,光是参考技术手册可能会昏倒~
- 程序不具有可携性:每个CPU都有独特的微指令集,同样的,每个硬件都有其功能函数。
因此,你为A电脑写的程序,理论上是没有办法在B电脑上面运作的!而且代码的修改非常困难!
因为是机器码,并不是人类看的懂得编程语言啊!
- 程序具有专一性:因为这样的程序必须要针对硬件功能函数来撰写, 如果已经开发了一支浏览器程序,想要再开发文件管理程序时,还是得从头再参考硬件的功能函数来继续撰写, 每天都在和『硬件』挑战!可能需要天天喝蛮牛了!@_@
那怎么解决啊?为了解决这个问题,计算机科学家设计出一种让人类看的懂得编程语言, 然后创造一种『编译器』来将这些人类能够写的编程语言转译成为机器能看懂得机器码, 如此一来我们修改与撰写程序就变的容易多了!目前常见的编译器有C, C++, Java, Fortran等等。 机器语言与高端编程语言的差别如下所示:
从上面的图标我们可以看到高端编程语言的代码是很容易察看的!鸟哥已经将代码(英文)写成中文说~ 这样比较好理解啦!所以这样已经将程序的修改问题处理完毕了。 问题是,在这样的环境底下我们还是得要考量整体的硬件系统来设计程序喔!
举例来说,当你需要将运作的数据写入内存中,你就得要自行分配一个内存区块出来让自己的数据能够填上去, 所以你还得要了解到内存的地址是如何定位的,啊!眼泪还是不知不觉的流了下来... 怎么写程序这么麻烦啊!
为了要克服硬件方面老是需要重复撰写控制码的问题,所以就有操作系统(Operating System, OS)的出现了! 什么是操作系统呢?底下就来谈一谈先!
0.4.2 操作系统
如同前面提到的,在早期想要让电脑运行程序就得要参考一堆硬件功能函数,并且学习机器语言才能够撰写程序。 同时每次写程序时都必须要重新改写,因为硬件与软件功能不见得都一致之故。那如果我能够将所有的硬件都驱动, 并且提供一个发展软件的参考接口来给工程师开发软件的话,那发展软件不就变的非常的简单了?那就是操作系统啦!
- 操作系统核心(Kernel)
操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。 我们刚刚谈到电脑没有软件只是一堆废铁,那么操作系统的功能就是让CPU可以开始判断逻辑与运算数值、 让主内存可以开始加载/读出数据与代码、让硬盘可以开始被访问、让网络卡可以开始传输数据、 让所有周边可以开始运转等等。总之,硬件的所有动作都必须要透过这个操作系统来达成就是了。
上述的功能就是操作系统的核心(Kernel)了!你的电脑能不能做到某些事情,都与核心有关! 只有核心有提供的功能,你的电脑系统才能帮你完成!举例来说,你的核心并不支持TCP/IP的网络协定, 那么无论你购买了什么样的网卡,这个核心都无法提供网络能力的!
但是单有核心我们用户也不知道能作啥事的~因为核心主要在管控硬件与提供相关的能力(例如访问硬盘、网络功能、CPU资源取得等), 这些管理的动作是非常的重要的,如果用户能够直接使用到核心的话,万一用户不小心将核心程序停止或破坏, 将会导致整个系统的崩溃!因此核心程序所放置到内存当中的区块是受保护的! 并且开机后就一直常驻在内存当中。
- 系统调用(System Call)
既然我的硬件都是由核心管理,那么如果我想要开发软件的话,自然就得要去参考这个核心的相关功能! 唔!如此一来不是从原本的参考硬件函数变成参考核心功能,还是很麻烦啊!有没有更简单的方法啊!
为了解决这个问题,操作系统通常会提供一整组的开发接口给工程师来开发软件! 工程师只要遵守该开发接口那就很容易开发软件了!举例来说,我们学习C编程语言只要参考C编程语言的函数即可, 不需要再去考量其他核心的相关功能,因为核心的系统调用接口会主动的将C编程语言的相关语法转成核心可以了解的任务函数, 那核心自然就能够顺利运作该程序了!
如果我们将整个电脑系统的相关软/硬件绘制成图的话,他的关系有点像这样:
电脑系统主要由硬件构成,然后核心程序主要在管理硬件,提供合理的电脑系统资源分配(包括CPU资源、内存使用资源等等), 因此只要硬件不同(如x86架构与RISC架构的CPU),核心就得要进行修改才行。 而由于核心只会进行电脑系统的资源分配,所以在上头还需要有应用程序的提供,用户才能够操作系统的。
为了保护核心,并且让程序员比较容易开发软件,因此操作系统除了核心程序之外,通常还会提供一整组开发接口, 那就是系统调用层。软件开发工程师只要遵循公认的系统调用参数来开发软件,该软件就能够在该核心上头运作。 所以你可以发现,软件与核心有比较大的关系,与硬件关系则不大!硬件也与核心有比较大的关系! 至于与用户有关的,那就是应用程序啦!
简单的说,上面的图标可以带给我们底下的概念:
- 操作系统的核心层直接参考硬件规格写成,
所以同一个操作系统程序不能够在不一样的硬件架构下运作。举例来说,个人电脑版的Windows
8.1 不能直接在 ARM 架构 (手机与平板硬件) 的电脑下运作。
- 操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统档。
如果没有其他的应用程序辅助,操作系统只能让电脑主机准备妥当(Ready)而已!并无法运作其他功能。
所以你现在知道为何Windows上面要达成网页影像的运作还需要类似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)
就如同上面提到的,硬件的管理是核心的主要工作之一,当然啰,设备的驱动程序就是核心需要做的事情啦! 好在目前都有所谓的『可加载模块』功能,可以将驱动程序编辑成模块,就不需要重新的编译核心啦! 这个也会在后续的第十九章当中提到的!
- 操作系统与驱动程序
老实说,驱动程序可以说是操作系统里面相当重要的一环了!不过,硬件可是持续在进步当中的! 包括主板、显卡、硬盘等等。那么比较晚推出的较新的硬件,例如显卡,我们的操作系统当然就不认识啰! 那操作系统该如何驱动这块新的显卡?为了克服这个问题,操作系统通常会提供一个开发接口给硬件开发商, 让他们可以根据这个接口设计可以驱动他们硬件的『驱动程序』,如此一来,只要用户安装驱动程序后, 自然就可以在他们的操作系统上面驱动这块显卡了。
由上图我们可以得到几个小重点:
- 操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
- 一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序;
- 要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
- 驱动程序是由厂商提供的,与操作系统开发者无关。
所以,如果你想要在某个操作系统上面安装一张新的显卡,那么请要求该硬件厂商提供适当的驱动程序吧! ^_^! 为什么要强调『适当的驱动程序』呢? 因为驱动程序仍然是依据操作系统而开发的, 所以,给Windows用的驱动程序当然不能使用于Linux的环境下了。
0.4.3 应用程序
应用程序是参考操作系统提供的开发接口所开发出来软件,这些软件可以让用户操作,以达到某些电脑的功能利用。 举例来说,办公室软件(Office)主要是用来让用户办公用的;影像处理软件主要是让用户用来处理影音数据的; 浏览器软件主要是让用户用来上网浏览用的等等。
需要注意的是,应用程序是与操作系统有关系的,如同上面的图标当中的说明喔。因此,如果你想要购买新软件, 请务必参考软件上面的说明,看看该软件是否能够支持你的操作系统啊!举例来说,如果你想要购买在线游戏光盘, 务必参考一下该光盘是否支持你的操作系统,例如是否支持Windows XP/Windows Vista/MAC/Linux等等。 不要购买了才发现该软件无法安装在你的操作系统上喔!
我们拿常见的微软公司的产品来说明。你知道Windows 8.1, Office 2013之间的关系了吗?
- Windows 8.1 是一套操作系统,他必须先安装到个人电脑上面,否则电脑无法开机运作;
- Windows 7 与Windows 8.1 是两套不同的操作系统,所以能在Win 7上安装的软件不见得可在Win 8.1上安装;
- Windows 8.1安装好后,就只能拥有很少的功能,并没有办公室软件;
- Office 2013是一套应用程序,要安装前必须要了解他能在哪些操作系统上面运作。
0.5 重点回顾
- 计算机的定义为:『接受用户输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或保存成有用的信息』;
- 电脑的五大单元包括:输入单元、输出单元、控制单元、算数逻辑单元、记忆单元五大部分。其中CPU占有控制、算术逻辑单元,记忆单元又包含主内存与辅助内存;
- 数据会流进/流出内存是CPU所发布的控制命令,而CPU实际要处理的数据则完全来自于主内存;
- CPU依设计理念主要分为:精简指令集(RISC)与复杂指令集(CISC)系统;
- 关于CPU的时脉部分:外频指的是CPU与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍数, 两者相乘才是CPU的时脉速度;
- 新的 CPU 设计中,已经将北桥的内存控制芯片集成到 CPU 内,而 CPU 与主内存、显卡沟通的总线通常称为系统总线。 南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网络卡等周边设备;
- 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);
- 目前主流的外置卡界面大多为 PCIe 界面,且最新为 PCIe 3.0,单信道速度高达 1GBytes/s
- 常见的显卡连接到屏幕的界面有 HDMI/DVI/D-Sub/Display port 等等。HDMI 可同时发送影像与声音。
- 传统硬盘的组成为:圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成的,其中磁盘盘的组成为磁区、磁道与磁柱;
- 磁盘连接到主板的界面大多为 SATA 或 SAS,目前桌机主流为 SATA 3.0,理论极速可达 600Mbytes/s。
- 常见的文本编码为 ASCII,繁体中文编码主要有 Big5 及 UTF8 两种,目前主流为 UTF8
- 操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。
- 电脑主要以二进位作为单位,常用的磁盘容量单位为bytes,其单位换算为1 Byte = 8bits。
- 最阳春的操作系统仅在驱动与管理硬件,而要使用硬件时,就得需要透过应用软件或者是壳程序(shell)的功能, 来调用操作系统操纵硬件工作。目前称为操作系统的,除了上述功能外,通常已经包含了日常工作所需要的应用软件在内了。
0.6 本章习题
- 根据本章内文的说明,请找出目前全世界跑的最快的超级电脑的:(1)系统名称 (2)所在位置 (3)使用的 CPU 型号与规格 (4)总共使用的 CPU 数量
(5)全功率操作 1 天时,可能耗用的电费 (请上台电网站查找相关电价来计算)。
- 动动手实作题:假设你不知道你的主机内部的各项组件数据,请拆开你的主机机壳,并将内部所有的组件拆开,并且依串行出:
- CPU的厂牌、型号、最高时脉;
- 主内存的容量、接口 (DDR/DDR2/DDR3 等);
- 显卡的接口 (AGP/PCIe/内置) 与容量
- 主板的厂牌、南北桥的芯片型号、BIOS的厂牌、有无内置的网卡或声卡等
- 硬盘的连接接口 (SATA/SAS等)、硬盘容量、转速、缓冲内存容量等。
- 利用软件:假设你不想要拆开主机机壳,但想了解你的主机内部各组件的信息时,该如何是好?
如果使用的是Windows操作系统,可使用CPU-Z(http://www.cpuid.com/cpuz.html)这套软件,如果是Linux环境下,可以使用『cat /proc/cpuinfo』
及使用『lspci』来查阅各项组件的型号;
- 如本章图0.2.1所示,找出第四代 Intel i7 4790 CPU 的: (1)与南桥沟通的 DMI 带宽有多大? (2)第二层缓存的容量多大?
(3)最大 PCIe 信道数量有多少?并据以说明主板上面 PCIe 插槽的数量限制。(请 google 此 CPU 相关数据即可发现)
- 由 google 查找 Intel SSD 520 固态硬盘相关的功能表,了解 (1)连接界面、(2)最大读写速度及 (3)最大随机读写数据 (IOPS) 的数据。
0.7 参考数据与延伸阅读
- 注1:名片型电脑,或单版电脑:
- 香蕉派台湾官网:http://tw.bananapi.org/
- Xapple pi 粉丝团:https://www.facebook.com/roseapplepi
- 注2:可穿戴式电脑:http://en.wikipedia.org/wiki/Wearable_computer
- 注3:对于CPU的原理有兴趣的读者,可以参考维基百科的说明:
英文CPU(http://en.wikipedia.org/wiki/CPU)
中文CPU(http://zh.wikipedia.org/wiki/中央处理器)。 - 注4:图片参考:
Wiki book: http://en.wikibooks.org/wiki/IB/Group_4/Computer_Science/Computer_Organisation
作者:陈锦辉,『计算机概论-探索未来2008』,金禾信息,2007出版 - 注5:更详细的RISC架构可以参考维基百科:
http://zh.wikipedia.org/w/index.html?title=精简指令集&variant=zh-tw
相关的 CPU 种类可以参考:
Oracle SPARC: http://en.wikipedia.org/wiki/SPARC
IBM Power CPU: http://en.wikipedia.org/wiki/IBM_POWER_microprocessors - 注6:关于ARM架构的说明,可以参考维基百科:
http://zh.wikipedia.org/w/index.html?title=ARM架构&variant=zh-tw - 注7:更详细的CISC架构可参考维基百科:
http://zh.wikipedia.org/w/index.html?title=CISC&variant=zh-tw - 注8:更详细的x86架构发展史可以参考维基百科:
http://zh.wikipedia.org/w/index.html?title=X86&variant=zh-tw - 注9:用来观察 CPU 相关信息的 CPU-Z 软件网站:
http://www.cpuid.com/softwares/cpu-z.html - 注10:Intel i7 4790 CPU 的详细规格介绍
http://ark.intel.com/zh-tw/products/80806/Intel-Core-i7-4790-Processor-8M-Cache-up-to-4_00-GHz - 注11:DDR 内存的详细规格介绍
http://zh.wikipedia.org/wiki/DDR_SDRAM - 注12:相关的固件说明可参考维基百科:
http://zh.wikipedia.org/w/index.html?title=固件&variant=zh-hant - 注13:相关 EEPROM 可以参考维基百科:
http://zh.wikipedia.org/w/index.html?title=EEPROM&variant=zh-tw - 注14:相关 BIOS 的说明可以参考维基百科:
http://zh.wikipedia.org/w/index.html?title=BIOS&variant=zh-tw - 注15:相关 PCIe 的说明可以参考维基百科:
http://en.wikipedia.org/wiki/PCI_Express - 注16:关于磁盘盘数据的说明:Zone bit recording :
http://en.wikipedia.org/wiki/Zone_bit_recording - 注17:关于 SATA 磁盘界面的 wiki 说明 :
http://zh.wikipedia.org/wiki/SATA - 注18:关于 SAS 磁盘界面的 wiki 说明 :
http://en.wikipedia.org/wiki/SCSI#SCSI-EXPRESS
http://en.wikipedia.org/wiki/Serial_attached_SCSI - 注19:关于 USB 界面的 wiki 说明 :
http://en.wikipedia.org/wiki/USB - 注20:关于 SSD 的 wiki 说明 :
http://en.wikipedia.org/wiki/Solid-state_drive - 感谢:本章当中出现很多图标,很多是从Tom's Hardware(http://www.tomshardware.com/)网站取得的,在此特别感谢!