电脑硬件的五大单元
- 输入单元:包括键盘、鼠标、卡片阅读机、扫描仪、手写板、触控屏幕等等一堆;
- 主机部分(控制单元、算数逻辑单元与主存储器):这个就是系统单元,被主机机壳保护住了,里面含有一堆板子、CPU 与主存储器等;
- 输出单元:例如屏幕、打印机等等
主机部分
中央处理器 (Central Processing Unit, CPU)
- CPU 为一个具有特定功能的芯片,里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关内建的微指令集才可以。
- 被运算与判断的数据是从哪里来的?
输入单元----->主存储器 ------>cpu
CPU 处理完毕----->主存储器------>输出单元
算数逻辑单元
算数逻辑单元主要负责程序运算与逻辑判断
控制单元
控制单元则主要在协调各周边组件与各单元间的工作
CPU 的架构
微指令集
精简指令集 (RISC) 系统
- 微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。
- 目前世界上使用范围最广的 CPU 可能就是 ARM 这种架构的呢
复杂指令集 (CISC) 系统
- CISC 在微指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。
- 常见的 CISC 微指令集 CPU 主要有 AMD、Intel、VIA 等的 x86 架构的 CPU。
所谓的位指的是 CPU 一次数据读取的最大量!
64 位 CPU 代表 CPU 一次可以读写 64bits这么多的数据,
32 位 CPU 则是CPU 一次只能读取 32 位的意思。 因为 CPU 读取数据量有限制,因此能够从内存中读写的数据也就有所限制。所以,一般 32 位的CPU 所能读写的最大数据量,大概就是 4GB 左右。
电脑分类
- 超级计算机(Supercomputer)
国防军事、气象预测、太空科技 - 大型计算机(Mainframe Computer)
例如大型企业的主机、全国性的证券交易所等每天需要处理数百万笔数据的企业机构, 或者是大型
企业的数据库服务器等等。 - 迷你计算机(Minicomputer)
通常用来作为科学研究、工程分析与工厂的流程管理等 - 工作站(Workstation)
在学术研究与工程分析方面相当常见。 - 微电脑(Microcomputer)
个人计算机就属于这部份的计算机分类
计算机上面常用的计算单位 (容量、速度等)
- 容量单位
1 Byte = 8 bits
1字节 =1 Byte
1 K = 1024 byte
1 M = 1024K - 速度单位
CPU 的指令周期常使用 MHz 或者是 GHz 之类的单位,Hz 其实就是秒分之一
网络使用的Mbit/s就是每秒多少Mbit
个人计算机架构与相关设备组件
早期的芯片组通常分为两个网桥来控制各组件的沟通, 分别是:
- 北桥:负责链接速度较快的 CPU、主存储器与显示适配器界 等组件;
- 南桥:负责连接速度较慢的装置接口, 包括硬盘、USB、网络卡等等。
不过由于北桥最重要的就是 CPU 与主存储器之间的桥接,因此目前的主流架构中, 大多将北桥内存控制器整合到 CPU封装当中了。所以上图你只会看到 CPU 而没有看到以往的北桥芯片
执行脑袋运算与判断的 CPU
原本的单核心 CPU 仅有一个运算单元,所谓的多核心则是在一颗 CPU 封装当中嵌入了两个以上的运算核心, 简单的说,就是一个实体的 CPU 外壳中,含有两个以上的 CPU 单元
不同的 CPU 型号大多具有不同的脚针(CPU 上面的插脚),能够搭配的主板芯片组也不同, 所以当你想要将你的主机升级时,不能只考虑 CPU,你还得要留意你的主板上面所支援的 CPU 型号
cpu性能比较
不同的微指令集会导致 CPU 工作效率的优劣
CPU 的频率(能用来比较同款 CPU 的速度): 频率就是 CPU 每秒钟可以进行的工作次数。 所以频率越高表示这颗 CPU 单位时间内可以作更多的事情
CPU 的工作频率:外频与倍频
背景
早期的 CPU 架构主要透过北桥来链接系统最重要的 CPU、主存储器与显示适配器装置。因为所有的设备都得掉透过北桥来连结,因此每个设备的工作频率应该要相同。 于是就有所谓的前端总线(FSB) 这个东西的产生。但因为 CPU 的指令周期比其他的设备都要来的快,又为了要满足 FSB 的频率,因此厂商就在CPU 内部再进行加速, 于是就有所谓的外频与倍频了。
什么是外频和倍频
在早期的 CPU 设计中
- 外频:指的是 CPU 与外部组件进行数据传输时的速度
- 倍频:是 CPU 内部用来加速工作效能的一个倍数。
两者相乘才是 CPU 的频率速度。例如 Intel Core 2E8400 的内频为 3.0GHz,而外频是 333MHz,因此倍频就是 9 倍!(3.0G=333Mx9, 其中 1G=1000M)
- 超频: 将 CPU 的倍频或者是外频透过主板的设定功能更改成较高频率的一种方式。但因为 CPU 的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。
32 位与 64 位的 CPU 与总线『宽度』
如何知道主存储器能提供的数据量呢?
此时还是得要藉由 CPU 内的内存控制芯片与主存储器间的传输速度【前端总线速度】(Front Side Bus, FSB) 来说明。
与 CPU 的频率类似的,主存储器也是有其工作的频率,这个频率限制还是来自于 CPU 内的内存控制器所决定的。
- 位宽:一般来说,每次频率能够传输的数据量,大多为 64 位,这个 64 位就是所谓的『宽度』了
以图 0.2.1 为例, CPU 内建的内存控制芯片对主存储器的工作频率最高可达到1600MHz。这只是工作频率(每秒几次)。一般来说,每次频率能够传输的数据量,大多为 64 位,这个 64 位就是所谓的『宽度』了! 因此,在图 0.2.1 这个系统中,CPU 可以从内存中取得的最快带宽就是 1600MHz * 64bit = 1600MHz * 8 bytes = 12.8Gbyte/s。
- 字组大小(word size):与总线宽度相似的,CPU 每次能够处理的数据量称为字组大小(word size),字组大小依据 CPU 的设
计而有 32 位与 64 位。我们现在所称的计算机是 32 或 64 位主要是依据这个 CPU 解析的字组大小而来的!
CPU 等级
有不统一的脚位与设计,为了将不同种类的 CPU 规范等级,所以就有 i386,i586,i686 等名词出现了
32 位 CPU 就称为 i686等级。 至于目前的 64 位 CPU 则统称为 x86_64 等级。
超线程 (Hyper-Threading, HT)
- 怎么达成这个 HT 功能?
在每一个 CPU内部将重要的缓存器 (register) 分成两群, 而让程序分别使用这两群缓存器。。也就是说,可以有两个程序『同时竞争 CPU 的运算单元』,而非透过操作系统的多任务切换! 这一过程就会让 CPU 好像『同时有两个核心』的模样!因此,虽然大部分 i7 等级的 CPU 其实只有四个实体核心,但透过HT 的机制, 则操作系统可以抓到八个核心!并且让每个核心逻辑上分离,就可以同时运作八个程序了
内存
个人计算机的主存储器主要组件为动态随机存取内存(DynamicRandom Access Memory, DRAM), 随机存取内存只有在通电时才能记录与使用,断电后数据就消失 了。因此我们也称这种 RAM 为挥发性内存。
使用上较广泛
- SDRAM
- DDR SDRAM
脚位与工作电压上的不同之外,DDR 是所谓的双倍数据传送速度(Double Data Rate), 他可以在一次工作周期中进行两次数据的传送,感觉上就好像是 CPU 的倍频啦! 所以传输频率方面比 SDRAM 还要好。
通常越大的内存代表越快速的系统,以服务器来说,主存储器的容量有时比 CPU 的速度还要来的重要的
多通道设计
背景:由于所有的数据都必须要存放在主存储器,所以主存储器的数据宽度当然是越大越好。 但传统的总线宽度一般大约仅达 64 位,为了要加大这个宽度,因此芯片组厂商就将两个主存储器汇整在一起,如果一支内存可达 64 位,两支内存就可以达到 128 位了,这就是双通道的设计理念。
要启用双信道的功能你必须要安插两支(或四支)主存储器,容量大小要一致之外,型号也最好相同,要启动双信道的功能时, 你必须要将两根容量相同的主存储器插在相同颜色的插槽当中
DRAM 与 SRAM
CPU 内的第二层高速缓存
如果某些很常用的程序或数据可以放置到 CPU 内部的话,那么 CPU数据的读取就不需要跑到主存储器重新读取了
因为第二层快取(L2 cache)整合到 CPU 内部,因此这个 L2 内存的速度必须要 CPU 频率相同。 使用DRAM 是无法达到这个频率速度的,此时就需要静态随机存取内存(Static Random Access Memory, SRAM)的帮忙了。
只读存储器(ROM)
- BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器(Read Only Memory, ROM)。 ROM 是一种非挥发性的内存。另外,BIOS 对于个人计算机来说是非常重要的, 因为他是系统在开机的时候首先会去读取的一个小程序
- 固件(firmware)很多也是使用 ROM 来进行软件的写入的。
显卡
硬盘与存储设备
硬盘的物理组成
圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成
实际的数据都是写在具有磁性物质的磁盘盘上头,而读写主要是透过在机械手臂上的读取头(head)来达成。
实际运作时, 主轴马达让磁盘盘转动,然后机械手臂可伸展让读取头在磁盘盘上头进行读写的动作。 另外,由于单一磁盘盘的容量有限,因此有的硬盘内部会有两个以上的磁盘盘
- 扇区 (sector):设计就是在类似磁盘盘同心圆上面切出一个一个的小区块,这些小区块整合成一个圆形,让机器手臂上的读写头去存取。 这个小区块就是磁盘的最小物理储存单位。原本硬盘的扇区都是设计成 512byte 的容量。新的高容量硬盘已经有 4Kbyte 的扇区设计
- 磁道(track):那同一个同心圆的扇区组合成的圆。
- 磁柱(柱面) (cylinder):由于磁盘里面可能会有多个磁盘盘,因此在所有磁盘盘上面的同一个磁道可以组合成一个磁柱
默认通常数据的读写会由外圈开始往内写
传输接口
SATA 接口
SAS 接口
USB接口
固态硬盘 (Solid State Disk, SSD)
传统硬盘有个很致命的问题,就是需要驱动马达去转动磁盘盘~这会造成很严重的磁盘读取延迟
后来就有厂商拿闪存去制作成高容量的设备,这些设备的连接界面也是透过SATA 或 SAS,而且外型还做的跟传统磁盘一样!所以, 虽然这类的设备已经不能称为是磁盘 (因为没有读写头与磁盘盘啊!都是内存!)。但是为了方便大家称呼,所以还是称为磁盘!只是跟传统磁盘 (Hard Disk Drive, HDD) 不同, 就称为固态硬盘 (Solid State Disk 或 Solid State Driver, SSD)。
固态硬盘最大的好处是,它没有马达不需要转动,而是透过内存直接读写的特性,因此除了没数据延
迟且快速之外,还很省电!
每秒读写操作次数 (Input/Output Operations Per Second, IOPS)!这个数值越大,代表可操作次数较高,当然效能好的很
选购与使用须知
- 考虑你的主板可接受的插槽接口(SATA/SAS)
- HDD 或 SSD
使用 SSD 作为系统碟,然后数据储存大多放置在 HDD 上面!这样系统运作快速 (SSD),而数据储存量也大 (HDD) - 容量
- 缓冲存储器
硬盘上头含有一个缓冲存储器,这个内存主要可以将硬盘内常使用的数据快取起来,以加速系统的读取效能。 通常这个缓冲存储器越大越好 - 转速
- 运转须知
正确的使用计算机的方式,应该是在计算机通电之后,就绝对不要移动主机,并免抖动到硬盘;使用操作系统的正常关机方式
扩充卡与接口
一般服务器惯用的扩充卡,大多数都使用 PCIe x8 的界面
主板
发挥扩充卡效能须考虑的插槽位置
如同图 0.2.1 所示,如果你是安插在左上方跟 CPU 直接联机的那几个插槽,那效能最佳!如果你是安插在左侧由上往下数的第五个 PCIe 2.0 x8 的插槽呢? 那个插槽是与南桥连接,所以你的扩充卡数据需要先进入南桥跟大家抢带宽,之后要传向 CPU 时,还得要透过 CPU 与南桥的沟通管道, 那条管道称为 DMI 2.0。
设备 I/O 地址与 IRQ 中断请求
有输出/输入/不同的储存装置等等, 主板芯片组怎么知道如何负责通信呢?
- I/O 地址
有点类似每个装置的门牌号码,每个装置都有他自己的地址 - IRQ 中断
如果 I/O 地址想成是各装置的门牌号码的话,那么 IRQ 就可以想成是各个门牌连接到邮件中心(CPU)的专门路径。如果 I/O 地址想成是各装置的门牌号码的话,那么 IRQ 就可以想成是各个门牌连接到邮件中心(CPU) 的专门路径
CMOS 与 BIOS
- CMOS
CMOS 主要的功能: 为记录主板上面的重要参数, 包括系统时间、CPU 电压与频率、各项设备的 I/O 地址与 IRQ 等,由于这些数据的记录要花费电力,因此主板上面才有电池。 - BIOS
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:如果有内建显示芯片的话,可能就会提供这个与屏幕连接的界面了!这种接口可以同时传输声音与影像, 目前也是电视机屏幕的主流连接接口
数据表示方式
数字与文字编码系统
当我们要写入文件的文字数据时,该文字数据会由编码对照表将该文字转成数字后,再存入文件当中。同样的,当我们要将文件内容的数据读出时,也会经过编码对照表将该数字转成对应的文字后,再显示到屏幕上。 现在你知道为何浏览器上面如果编码写错时,会出现乱码了吗?这是因为编码对照表写错, 导致对照的文字产生误差
由国际组织 ISO/IEC 跳出来制订了所谓的 Unicode 编码系统, 我们常常称呼的
UTF8 或万国码的编码就是这个东西,因为这个编码系统打破了所有国家的不同编码, 因此目前因特网社会大多朝向这个编码系统为主
软件程序运行
- 软件分两大类
- 系统软件
- 应用程序
操作系统
操作系统内核
操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。
只有内核有提供的功能,你的计算机系统才能帮你完成!
内核主要在管控硬件与提供相关的能力(例如存取硬盘、网络功能、CPU 资源取得等)
核心程序所放置到内存当中的区块是受保护的! 并且开机后就一直常驻在内存当中。
系统调用
操作系统通常会提供一整组的开发接口给工程师来开发软件! 工程师只要遵守该开发接口那就很容易开发软件了!举例来说,我们学习 C 程序语言只要参考 C 程序语言的函式即可, 不需要再去考虑其他核心的相关功能,因为核心的系统呼叫接口会主动的将 C 程序语言的相关语法转成核心可以了解的任务函数, 那核心自然就能够顺利运作该程序了!
只要硬件不同(如 x86 架构与 RISC 架构的 CPU),核心就得要进行修改才行。而由于核心只会进行计算机系统的资源分配,所以在上头还需要有应用程序的提供,用户才能够操作系统的。
-
操作系统的核心层直接参考硬件规格写成, 所以同一个操作系统程序不能够在不一样的硬件架构下运作。
-
操作系统只是在管理整个硬件资源,包括 CPU、内存、输入输出装置及文件系统文件。 如果没有其他的应用程序辅助,操作系统只能让计算机主机准备妥当(Ready)而已!并无法运作其他功能。
-
应用程序的开发都是参考操作系统提供的开发接口, 所以该应用程序只能在该操作系统上面运作而已,不可以在其他操作系统上面运作的。
内核功能
-
系统调用接口(System call interface)
为了方便程序开发者可以轻易的透过与核心的沟通,将硬件的资源进一步的利用, 于是需要有这个简易的接口来方便程序开发者。 -
程序管理(Process control)
总有听过所谓的『多任务环境』吧?一部计算机可能同时间有很多的工作跑到 CPU 等待运算处理, 核心这个时候必须要能够控制这些工作,让 CPU 的资源作有效的分配才行!另外, 良好的 CPU 排程机制(就是CPU 先运作那个工作的排列顺序)将会有效的加快整体系统效能呢! -
内存管理(Memory management)
通常核心会提供虚拟内存的功能,当内存不足时可以提供内存置换(swap)的功能。 -
文件系统管理(Filesystem management)
-
装置的驱动(Device drivers)
-
操作系统与驱动程序
- 操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
- 一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序;
- 要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
- 驱动程序是由厂商提供的,与操作系统开发者无关。