第零章 计算器概论
1. 计算机的组成:
2. 世界上常见的两种主要CPU种类: 精简指令集(RISC)和复杂指令集(CISC)系统。
-- 精简指令集(Reduced Instruction Set Computer, RISC): 微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;常见的RISC微指令集CPU有:Sun的SPARC系列、 IBM的Power Architecture(包括PowerPC)系列、与ARM系列等。
-- 复杂指令集(Complex Instruction Set Computer, CISC):微指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等癿x86架构的CPU。
3. 个人计算机的整个主板上面最重要的就是芯片组了!而芯片组通常又分为两个网桥来控制各组件的沟通, 分别是:(1)北桥:负责链接速度较快的CPU、主存储器与显示适配器等组件;(2)南桥:负责连接速度较慢的周边接口, 包括硬盘、USB、网卡等等。与Intel不同的地方在于主存储器是直接与CPU沟通而不通过北桥。AMD为了加速这两者的沟通,所以将内存控制组件整合到CPU中, 理论上这样可以加速CPU与主存储器的传输速度。
4. CPU与外部各组件的速度理论上应该要一致才好。但是因为CPU需要较强大的运算能力, 因为很多判断与数学都是在CPU内处理的,因此CPU开发商就在CPU内再加上一个加速功能。所谓的外频指的是CPU与外部组件进行数据传输时的速度,倍频则是 CPU 内部用来加速工作效能的一个倍数, 两者相乘才是CPU的频率速度。
5. CPU运算的数据都是由主存储器提供的,主存储器与CPU的沟通速度靠的是外部频率, 那么每次工作可以传送的资料量有多大呢?那就是总线的功能了。一般主板芯片组有分北桥与南桥,北桥的总线称为系统总线,因为是内存传输的主要信道,所以速度较快。 南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网卡等接口设备。北桥所支持的频率我们称为前端总线速度(Front Side Bus, FSB), 而每次传送的位数则是总线宽度。 那所谓的总线带宽则是:『FSBx总线宽度』亦即每秒钟可传送的最大数据量。目前常见的总线宽度有32/64位(bits)。CPU每次能够处理的数据量称为字长(word size), 字长依据CPU的设计而有32位与64位。我们现在所称的计算机是32还是64位主要是依据这个 CPU的字长而来的。
6. 由于所有的数据都必须要存放在主存储器,所以主存储器的数据宽度当然是越大越好。 但传统的总线宽度一般大约仅达64位,为了要加大这个宽度,因此芯片组厂商就将两个主存储器汇整在一起, 如果一根内存可达64位,两根内存就可以达到128位了,这就是双通道的设计理念。 要使用双通道的功能你必须要安插两根(或四根)主存储器,这两支内存最好连型号都一模一样比较好, 这是因为启动双通道内存功能时,数据是同步写入/读出这一对主存储器中,如此才能够提升整体的带宽,所以当然除了容量大小要一致以外,型号也最好相同。
7. 因为二级缓存(L2 cache)整合到了CPU内部,因此它的速度必须要与CPU频率相同。 使用DRAM是无法达到这个频率速度的,此时就需要静态随机存取内存(Static Random Access Memory, SRAM)的帮忙了。 新一代癿CPU都有内建容量不等的L2 cache在CPU内部, 以加快CPU的运作效能。
8. 主板上面的组件是非常多的,而每个组件的参数,是被记录到主板上头的一个称为CMOS的芯片上,这个芯片需要借着额外的电源来发挥记录功能,这也是为什么你的主板上面会有一颗电池的缘故。CMOS内癿数据是通过BIOS进行读取与更新的。BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中,这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器(Read Only Memory, ROM)。BIOS 程序代码也可能需要作适度的修改,所以你会在很多主板官网找到 BIOS的更新程序,因此,现在的BIOS 通常是写入类似闪存 (flash) 或 EEPROM中的。
9. 一些3D的运算早期是交给CPU去运作的,但是CPU并非完全针对这些3D来进行设计的,而且CPU平时已经非常忙碌了。所以后来显示适配器厂商直接在显示适配器上面嵌入一个3D加速的芯片,这就是所谓的GPU称谓的由来。
10. PCIe(PCI-Express)使用的是类似管道的概念来处理,每条管道可以具有250MBytes/s的带宽效能, 管道越多(最大可达x32)则总带宽越高!新的PCIe 2.0规格也已经推出了,这个规格又可将每个管线的效能提升一倍。
11. 整个磁盘上头有多个同心圆绘制出的饼图,而由圆心以放射状的方式分割出磁盘的最小储存单位,那就是扇区(Sector),每个扇区大小为512Bytes,这个值是不会改变的。而扇区组成一个圆就成为磁道(track), 如果是在多碟的硬盘上面,在所有磁盘上面的同一个磁道可以组成一个磁柱(Cylinder), 磁柱也是一般我们分割硬盘时的最小单位了。在计算整个硬盘的储存量时,简单的计算公式就是:『header数量 * 每个header负责的磁柱数量 * 每个磁柱所含有的扇区数量 * 扇区的容量』,单位换算为『header * cylinder/header * secter/cylinder * 512bytes/secter』。
12. I/O地址有点类似每个装置的门牌号码,每个装置都有他自己的地址。如果I/O地址想成是各装置的门牌号码的话,那么IRQ就可以想成是各个门牌连接到邮件中心(CPU)的专门路径。各装置可以透过IRQ中断信道来告知CPU该装置的工作情,以方便CPU进行工作分配。
13. CMOS主要的功能为记录主板上面的重要参数,包括系统时间、CPU电压与频率、各项设备的I/O地址与IRQ等,由于这些数据的记录要花费电力,因此主板上面才有电池。 BIOS为写入到主板上某一块 flash 或 EEPROM 癿程序,他可以在开机的时候执行,以加载CMOS中的参数, 幵尝试呼叫储存装置中的开机程序,进一步进入操作系统当中。BIOS程序也可以修改CMOS中的数据。
14. 操作系统的功能就是让CPU可以开始判断逻辑与运算数值、让主存储器可以开始加载/读出数据与程序代码、让硬盘可以开始被存取、让网卡可以开始传输数据、让所有周边可以开始运转等等。总之,硬件的所有动作都必须要通过这个操作系统来达成。上述的功能就是操作系统的核心(Kernel)了。因为核心主要在管控硬件与提供相关的能力, 这些管理的动作是非常的重要,如果使用者能够直接使用到核心的话,万一用户不小心将核心程序停止或破坏,将会导致整个系统的崩溃!因此核心程序所放置到内存当中的区块是受保护的! 并且开机后就一直常驻在内存当中。
15. 操作系统通常会提供一整组的开发接口给工程师来开发软件。为了保护核心,并且让程序设计师比较容易开发软件,因此操作系统除了核心程序以外,通常还会提供一整组开发接口,那就是系统呼叫(System call)层。软件开发工程师只要遵循公认癿系统呼叫参数来开发软件,该软件就能够在该核心上头运作。
16. 操作系统的核心层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运作。应用程序的开发都是参考操作系统提供的开发接口,所以该应用程序只能在该操作系统上面运作而已,不可以在其他操作系统上面运作的。
17. 核心至少要有以下这些功能:
-- 系统呼叫接口(System call interface) 这是为了方便程序开发者可以轻易地通过与核心的沟通,将硬件的资源进一步地利用,于是需要有这个简易的接口来方便程序开发者。
-- 程序管理(Process control) 一部计算机可能同一时间有很多的工作跑到CPU等待运算处理,核心这个时候必须要能够控制这些工作,让CPU癿资源作有效的分配才行!另外,良好的CPU排程机制(就是CPU先运作哪个工作的排列顺序)将会有效地加快整体系统效能。
-- 内存管理(Memory management) 控制整个系统的内存管理,通常核心会提供虚拟内存的功能,当内存不足时可以提供内存置换(swap) 的功能。
-- 文件系统管理(Filesystem management) 例如数据的输入输出(I/O)等等的工作、还有不同文件格式的支持等等。
-- 装置的驱动(Device drivers) 硬件的管理是核心的主要工作之一,装置的驱劢程序就是核心需要做的事情。目前都有『可加载模块』功能,可以将驱动程序编辑成模块,就不需要重新编译核心了。