0.1 计算机的组成
0.1.1 计算机硬件的5个单元
- 输入单元
- 输出单元
(同时涵盖输入输出的设备如触摸屏。单纯的输入设备如键盘鼠标,体感装置也是。至于输出设备方面,除了屏幕外,打印机、音效喇叭、HDMI 电视、投影机、蓝芽耳机等。) - CPU内部的控制单元
- 算数逻辑单元
- 主存储器:记忆单元的一部分,(记忆单元:包括主存储器(main memory, RAM) 与辅助内存,辅助内存也即储存装,包括硬盘、软盘、光盘、磁带等。)
0.1.2 CPU的架构
应用层的软件须经过CPU内部的微指令集来达成对计算机资源的使用。现有的常见到的由两种CPU架构,分别是:精简指令集(RISC)和复杂指令集(CISC)系统。
①精简指令集(Reduced Instruction Set Computer,RISC):
该设计中,指令集较为精简,每个指令运行时间短,动作单纯,执行效能佳;但是复杂功能需要多指令协同完成。
常见的有:SPARC系列(Oracle)、Power Architecture(PowerPC)系列(IBM)、ARM CPU系列(ARM Holdings)。
②复杂指令集(Complex Instruction Set Computer:CISC):
微指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常见的CISC 微指令集CPU 主要有AMD、Intel、VIA 等的x86 架构的CPU。
③x86架构:
Intel发展出的其公司最早的CPU代号为8086,后又发展出80286,80386…,因此称为x86架构了。该架构CPU由8位,逐步升级到16、32位,AMD依此修改新一代CPU为64位,为了区分,64位PC的CPU统称为x86_64架构。
0.1.3 计算机上的计算单位(容量、速度等)
①容量单位
②速度单位
CPU 的指令周期常使用MHz 或者是GHz 之类的单位,这个Hz 其实就是秒分之一。而在网络传输方面,由于网络使用的是bit 为单位,因此网络常使用的单位为Mbps 是Mbits per second,亦即是每秒多少Mbit。
0.2 PC架构和相关设备组件
以2015年Intel主板架构为例:
0.2.1 CPU
①CPU的频率及超频
早期的 CPU 架构主要透过北桥来链接系统最重要的CPU、主存储器与显示适配器装置。因为所有的设备都得掉透过北桥来连结,因此每个设备的工作频率应该要相同。于是就有所谓的前端总线(Front Side Bus, FSB:负责CPU 内的内存控制芯片与主存储器间的传输) 这个东西的产生。但因为CPU 的指令周期比其他的设备都要来的快,又为了要满足FSB 的频率,因此厂商就在CPU 内部再进行加速, 于是就有所谓的外频与倍频了。
外频指的是CPU 与外部组件进行数据传输时的速度,倍频则是CPU 内部用来加速工作效能的一个倍数, 两者相乘才是 CPU 的频率速度。超频指的是: 将 CPU 的倍频或者是外频透过主板的设定功能更改成较高频率的一种方式。但因为CPU 的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。对于超频而言,CPU频率非正常速度,故可能宕机。
②CPU的位数及总线宽度
对于CPU:从内存中取得的最快带宽=CPU内建的内存控制芯片对主存储器的工作频率×总线宽度。CPU 每次能够处理的数据量称为字组大小(word size), 字组大小依据 CPU 的设计而有32 位与64 位。我们现在所称的计算机是32 或64 位主要是依据这个CPU 解析的字组大小而来的。不同的位数对应的内存的寻址空间的大小不同,所以对32位的计算机有4GB的寻址空间,同时该4GB的上限空间中,还有一部分用作外部设备的寻址,所以往往达不到4GB的可用内存。
③超线程(Hyper-Threading, HT)
在每一个CPU内部将重要的缓存器(register) 分成两群, 而让程序分别使用这两群缓存器。也就是说,可以有两个程序『同时竞争CPU 的运算单元』,而非透过操作系统的多任务切换。超线程可以让操作系统抓取到比实体核心更多的核心数,使得程序的并行数增加。
0.2.2 内存
个人计算机的主存储器主要组件为动态随机存取内存(Dynamic Random Access Memory,DRAM), 随机存取内存只有在通电时才能记录与使用,断电后数据就消失了。因此我们也称这种RAM 为挥发性内存。
①技术发展
DRAM 根据技术的更新又分好几代,而使用上较广泛的有所谓的SDRAM(Synchronous Dynamic Random-Access Memory)与DDR SDRAM 两种。除了脚位与工作电压上的不同外,DDR 是所谓的双倍数据传送速度(Double Data Rate),可在一次工作周期中进行两次数据的传送。
下表列出内存技术各代的标准:
②多通道设计
传统的总线宽度大约仅达64位,为加大该宽度,芯片组厂商将两个主存储器汇整一起,两支可达128位,这即双通道的设计理念。启用双通道功能,须安插两支主存储器,它们的型号、容量最好完全一致。
③静态随机存取内存(Static Random Access Memory, SRAM)
CPU中的数据是由主存储器提供的,但是之间还需要透过内存控制器。将常用的程序或数据放置到CPU内部,可以减少数据传递,提升效能。为此,有了第二层快取的概念,如下图所示。
因为L2 cache整合在CPU内部,其速度要与CPU频率相同。DRAM是难以达到该频率的,所以就有了SRAM。SRAM特点是晶体管数量多,价格高,容量较小。
④只读存储器(ROM)
主板上组件多种多样,各个组件的参数是可调的,而这些参数记录在主板中的CMOS芯片上,该芯片需要额外的电源来发挥记录功能,如下图:
CMOS内的数据的读取和更新通过BIOS(Basic Input Output System)来进行。BIOS是一套程序,写死在主板上的ROM中,ROM在没有通电情况下数据记录不会消失,是一种非挥发性内存。
类似的,各种硬件产品中会有固件,即是一种嵌入在硬件中的软件。通常它是位于闪存或EEPROM(电可擦除可编程只读存储器)和PROM(可编程只读存储器)中,而且可以让使用者更新。
0.2.3 显示适配器
①显示适配器与主板的连接接口
显示适配器又称VGA(Video Graphics Array)。图形影像重点在于分辨率和颜色深度,每个图像显示的颜色会占用掉内存, 因此显示适配器上面会有一个内存的容量,这个显示适配器内存容量将会影响到屏幕分辨率与颜色深度;除了内存,对3D图像运算专门进行加速的芯片,就是GPU了。
外设部件互连标准(Peripheral Component Interconnect,PCI),它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽,PCI总线是一种树型结构,并且独立于CPU总线,可以和CPU总线并行操作。显示适配器的插槽规格由早期的PCI 导向AGP, 近期 AGP 又被PCI-Express(PCIe使用的是以类似管线的概念来处理的,管线越多,总带宽越高) 规格取代。
②显示适配器与显示器的连接接口
0.2.4 硬盘和存储设备
①磁盘/固态硬盘与主板的连接接口
SATA,SAS,IDE与SCSI等,若考虑外接式,则还有USB,eSATA等。IDE被SATA取代,SCSI被SAS取代。
SATA(Serial Advanced Technology Attachment)
SAS是一种高阶的连接接口。其读写速度和稳定度比SATA还要好,但是价格昂贵。
0.3 数据表示方式
0.3.1 数字系统
主要是二进制系统,还有十六进制,八进制
0.3.2 文字编码系统
(1) 常用的英文编码表ASCII系统,每个符号占用1byte。
(2)中文编码系统早期最常用的为Big5编码表,每个中文字占用2bytes,理论上有
2
16
=
65536
2^{16}=65536
216=65536,但是并非是所有位都是拿来运用成为对照,所以达不到那么多中文字码;此外,某些字的内部编码会误判,读取时会显示乱码。与此同时,其他非英语系国家也有该种问题。
(3)为了解决该问题,ISO/IEC制定了Unicode编码系统,又称为UTF8或万国码。
0.4 软件的运作
0.4.1 机器程序与编译程序
机器程序即01码为内容的程序或指令文件,其特点是需要了解程序语言;需要了解硬件的相关功能函数;程序不可移植;程序具有专一性。为此出现了高级语言,对应不同的语言编译程序(编译器),高级语言是人类可理解的,而且可以方便的进行调试。
0.4.2 操作系统
操作系统(Operating System, OS)其实也是一组程序(严格来说不是程序,因为程序是可以有限步完成的), 这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。
① 核心(Kernel)
主要在管控硬件与提供相关的能力(例如存取硬盘、网络功能、CPU 资源取得等), 这些管理的动作是非常的重要的,核心程序所放置到内存当中的区块是受保护的, 且开机后就一直常驻在内存当中。
核心的功能 |
---|
系统呼叫接口 |
程序管理 |
内存管理 |
文件系统管理 |
装置的驱动 |
②系统呼叫(System Call)
是一整组的开发接口,用作软件开发。对开发者而言,可以屏蔽掉对核心功能的了解,而去调用系统呼叫取实现相关指令或操作,相当于类的接口。同时应当注意到,应用程序的开发都是参考操作系统提供的开发接口, 所以该应用程序只能在该操作系统上面运作而已,不可以在其他操作系统上运作。
③驱动程序
- 操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
- 一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序,所以驱动程序是依据操作系统开发的;
- 要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
- 驱动程序是由厂商提供的,与操作系统开发者无关。
0.5 重点回顾