第0章 计算机概论

计算机概论
1.1 计算机硬件五大单元:
输入单元、输出单元、CPU内部的控制单元、CPU内部的算数逻辑单元、内存
输入单元:键盘、鼠标、读卡机、扫描仪、手写板、触摸屏
输出单元:屏幕、打印机
主机部分:主板、CPU、内存
主机中一块主板,上面安插中央处理器(cpu)、内存、硬盘、显卡等,智能手机是将这些原件直接焊接在主板上面
整部主机的重点是CPU,CPU是具有特定功能的芯片,含有微指令集。主要在于管理与运算,CPU内又可以分为两个主要单元
分别是:算数逻辑单元与控制单元
算数逻辑单元主要负责程序运算与逻辑判断
控制单元主要在协调各周边原件与各单元间的工作
CPU读取的数据都是从内存中来,内存内的数据是输入单元传输过来的,CPU处理完毕的数据也必须要先写回内存中,最后数据才从内存传输到输出单元
系统性能与内存的关系:
加大内存容量就可以加快系统性能,因为所有的数据都要经过内存的传输,内存容量太小,数据高速缓存不足,影响性能相当大。
 
 
系统单元:就是电脑机箱内的主要元件,重点在于CPU与内存。
数据都是流经过内存再转出去的,数据流进、流出内存是CPU所发布的控制命令
CPU实际要处理的数据则是完全来自于内存(不管是程序还是一般文件数据),这就是为什么当内存不足时,系统的性能很糟糕。
也就是买智能手机的时候,对可用内存的要求很高的原因。
 
所有的单元都是由CPU内部的控制单元来负责协调的,因此CPU是整个电脑系统的最重要部分
 
1.2 CPU架构-----一切设计的起点
CPU架构是一切设计的起点
CPU内部已经包含一些微指令,我们所使用的软件都要经过CPU内部的微指令集来达成。这些指令集的设计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要CPU架构,分别是:
精简指令集(RISC)、复杂指令集(CISC)系统
精简指令集(Reduced Instruction Set Computer, RISC):
这种CPU设计中,微指令集较为精简,每个指令的执行时间都很短,完成的动作也很单纯,指令的执行性能较佳;若做复杂的事情,就要由多个指令来完成。
常见的RISC微指令集CPU主要例如甲骨文 (Oracle) 公司的 SPARC 系列、 IBM 公司的 PowerArchitecture (包括 PowerPC) 系列、与安谋公司 (ARM Holdings) 的 ARM CPU 系列等。
应用方面:
SPARC CPU的电脑常用于学术领域的大型工作站中,包括银行金融体系的主要的服务器也都是这类的电脑架构。
PowerPC架构:索尼(Sony)公司出产的Play Station 3(PS3)就是使用PowerPC架构的Cell处理器。
安谋的 ARM:常使用的各厂牌手机、PDA、导航系统、网络设备(交换器、路由器等)等,几乎都是使用 ARM架构的 CPU !目前世界上使用范围最广的 CPU 可能就是 ARM 这种架构
 
复杂指令集(Complex Instruction Set Computer, CISC):
与精简指令集(RISC)不同,CISC在微指令集的每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。
因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。
常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。
应用:AMD、Intel、VIA所开发出来的x86架构的CPU被大量使用于个人电脑用途上面,因此个人电脑常被称为X86架构的电脑。
 
X86架构:
个人电脑常被称为X86架构,为何称为X86架构?因为最早的那颗Intel发展出来的CPU代号称为8086,后来依此架构又开发出80286、80386,因此这种架构的COU就被称为了X86架构
2003年以前由Intel开发的X86架构CPU由8位升级到16、32位,后来AMD依此架构修改新一代的CPU为64位
为了区别两者差异,64位个人电脑CPU又被统称为x86_64的架构
 
不同的X86架构的CPU有什么差异?
除了CPU的整体结构(如第二层高速缓存、每次运行可执行的指令数等)之外,主要是在于微指令集的不同。新的x86的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
 
32位、64位概念解释:
所谓的位,是CPU一次读取数据的最大量,64位CPU代表CPU一次可以读写64bits这么多的数据,32位CPU则是CPU一次只能读取32bits的意思。
CPU读取数据量有限制,因此能够从内存中读写的数据也就有所限制,一般32位的CPU所能读写的最大数据量大概就是4GB左右
 
1.3 其他单元设备
五大单元中最重要的控制、算术逻辑被整合到CPU的封装中。以下介绍其他三个重要电脑单元的设备:
主板:主机箱中的设备大多是通过主板连接在一块,主板上面有个链接沟通所有设备的芯片组,这个芯片组可以将所有单元的设备链接起来,好让CPU可以对这些设备下达命令。
其他单元重要设备主要有:
  系统单元:系统单元包括 CPU、内存、主板相关元件。
  主板上面还有很多连接接口与相关的适配卡,包括网卡、磁盘阵列卡、显卡,显卡与显示的精致度、色彩与分辨率都有关系。
  存储单元:包括内存、辅助内存。辅助内存就是常说的存储设备,包括:硬盘、软盘、光盘、磁带等
  输入、输出单元:触摸屏、鼠标、键盘、显示器、打印机、音效喇叭等
 
电脑按用途分类:
超级计算机:运行速度最快的电脑,维护操作费用非常高。主要用于需要高速计算的计划中。如国防军事、气象预测、太空科技等。
大型计算机:具有数个高速CPU,功能上不及超级计算机,但也可用来处理大量数据与复杂运算。大型企业主机、全国性的证券交易所、大型企业数据库服务器
迷你电脑:迷你电脑保有大型计算机同时支持多使用者特性,主机可以放在一般作业场所,不必像前两个大型计算机需要特殊的空调场所。通常用来作为科学
研究、工程分析与工厂的流程管理等。
工作站:工作站的价格比迷你电脑便宜很多,针对特殊用途而设计的电脑。在个人电脑性能还没有提升到目前的状况之前,工作站电脑的性能/价格比是所有电脑
中较佳的。在学术研究与工程分析方面相当常见。
微电脑:个人电脑就属于这部分的电脑分类,分为台式、笔记本等。
 
1.4 电脑上面常用的计算单位(容量、速度)
电脑的运算能力除了CPU微指令集设计的优劣之外,主要还是由速度来决定的。存放在电脑存储设备中的数据容量也是有单位的。
容量单位:
  0/1这个二进制的单位称为bit
  Byte:字节 1 Byte = 8 bits
  k: 1k = 1024Byte
  M:1M = 1024K
文件大小使用的是二进制的方式,1GBytes的文件大小实际上为 1024*1024*1024Bytes这么大
速度单位常使用十进制,1GHZ就是1000*1000*1000HZ
 
二进制:每个位置只能是0,1不能出现2(逢2进1位)
十进制:每个位置只能有一个数字,所以不能比9大,逢10进1位
十六进制:每个位置只能出现一个数值,数字仅有0~9,16进制中,用A代表10,B代表11,16进制就是0~9, a, b, c, d, e, f
 
速度单位:
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”,所以才会使用十进制来处理的。
 
1.5 个人电脑架构与相关设备元件
 
Intel芯片架构:
主板是链接各元件的一个重要项目,因此在主板上面沟通各部元件的芯片组设计优劣,就会影响性能不少!早期的芯片组通常分为两个桥接器来控制各元件的沟通, 分别是:
(1)北桥:负责链接速度较快的CPU、内存与显卡接口等元件;(2)南桥:负责连接速度较慢的设备接口, 包括硬盘、USB、网卡等等。
不过由于北桥最重要的就是 CPU 与内存之间的桥接,因此目前的主流架构中, 大多将北桥内存控制器整合到 CPU 封装当中了。所以上图你只会看到 CPU 而没有看到以往的北桥芯片!
 
Tips:早期芯片组分南北桥,北桥可以连接 CPU、内存与显卡。只是 CPU 要读写到内存的动作,还需要北桥的支持,也就是 CPU 与内存的交流, 会瓜分掉北桥的总可用带宽!
因此目前将内存控制器整合到 CPU 后,CPU与内存之间的沟通是直接交流,速度较快之外,也不会消耗更多的带宽!
 
目前世界上x86的CPU主要供应商为Intel,以Intel的主板架构说明各元件
我们以华硕公司出的主板,型号:Asus Z97-AR 作为一个说明的范例,主板各元件如下所示:
上述的图片中,主板上面设计的插槽主要有:
CPU (Intel LGA 1150 Socket)、
内存 (DDR33200 support)、
显卡接口 (PCIe3.0)、
SATA 磁盘插槽 (SATA express)等。
 
1.5.1 CPU
由于CPU负责大量运算,因此CPU通常是具有相当高发热量的元件。所以如果你曾经拆开过主板, 应该就会看到CPU上头通常会安插一颗风扇来主动散热的。
x86个人电脑的CPU主要供应商为Intel与AMD,目前(2015)主流的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每秒钟可以进行的工作次数。 所以频率越高表示这颗CPU单位时间内可以作更多的事情。
举例来说,Intel的 i7-4790 CPU频率为3.6GHz, 表示这颗CPU在一秒内可以进行3.6x109次工作,每次工作都可以进行少数的指令运行之意。
 
Tips 注意:不同的CPU之间不能单纯的以频率来判断运算性能!这是因为每颗CPU的微指令集不相同,架构也不见得一样,可使用的第二层高速缓存及其计算机制可能也不同,加上每次频率能够进行的工作指令数也不同!所以,频率目前仅能用来比较同款CPU的速度!
 
CPU工作频率:外频与倍频
早期的 CPU 架构主要通过北桥来链接系统最重要的 CPU、内存与显卡设备。因为所有的设备都得通过北桥来链接,因此每个设备的工作频率应该要相同。 于是就有所谓的前端总线
(FSB) 这个东西的产生。但因为 CPU 的运算速度比其他的设备都要来的快,又为了要满足FSB 的频率,因此厂商就在 CPU 内部再进行加速, 于是就有所谓的外频与倍频了。
 
外频:总结来说,在早期的 CPU 设计中,所谓的外频指的是CPU与外部元件进行数据传输时的速度。
倍频:倍频是 CPU 内部用来加速工作性能的一个倍数, 两者相乘才是CPU的频率速度
例如 Intel Core 2 E8400 的内频为 3.0GHz,而外频是333MHz,因此倍频就是9倍!
(3.0G=333Mx9, 其中1G=1000M)
 
Tips 很多计算机硬件玩家很喜欢玩“超频”,所谓的超频指的是: 将CPU的倍频或者是外频通过主板的设置功能更改成较高频率的一种方式。
但因为CPU的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频,可以将他的外频333MHz调整成为400MHz,但如此一来整个主板的各个元件的运行频率可能
都会被增加成原本的1.333倍(4/3), 虽然CPU可能可以到达3.6GHz,但却因为频率并非正常速度,故可能会造成死机等问题。
 
如此一来所有的数据都被北桥卡死了,北桥又不可能比 CPU 更快,因此这家伙常常是系统性能的瓶颈。
为了解决这个问题,新的 CPU 设计中, 已经将内存控制器整合到 CPU 内部,而链接 CPU 与内存、显卡的控制器的设计,
在Intel部份使用 QPI (Quick PathInterconnect) 与 DMI 技术,而 AMD 部份则使用 Hyper Transport 了,
这些技术都可以让CPU 直接与内存、显卡等设备分别进行沟通,而不需要通过外部的链接芯片了。
 
现在没有所谓的北桥了 (整合到 CPU 内),因此,CPU 的频率设计就无须考虑得要同步的外频,只需要考虑整体的频率即可。 所以,如果你经常有查阅自己 CPU 频率的习惯,
当使用 cpu-z [9] 这个软件时,应该会很惊讶的发现到,怎么外频变成 100MHz 而倍频可以到达 30 以上!
 
Tips 现在 Intel 的 CPU 会主动超频!例如 i7-4790 这颗 CPU 的规格 [10] 中,基本频率为 3.6GHz,但是最高可自动超频到 4GHz ! 通过的是 Intel 的 turbo 技术。
如果你没有大量的运算需求,该 CPU 频率会降到 1.xGHz 而已,借此达到节能省电的目的!
 
32位与64位的CPU与总线“宽度”:
CPU 的各项数据通通得要来自于内存。因此,如果内存能提供给 CPU 的数据量越大的话,当然整体系统的性能应该也会比较快!
那如何知道内存能提供的数据量呢?此时还是得要借由 CPU 内的内存控制芯片与内存间的传输速度“前端总线速度(Front Side Bus, FSB) 来说明
 
与 CPU 的频率类似的,内存也是有其工作的频率,这个频率限制还是来自于 CPU 内的内存控制器所决定的。
CPU 内置的内存控制芯片对内存的工作频率最高可达到1600MHz。这只是工作频率(每秒几次)。
一般来说,每次频率能够传输的数据量,大多为64 位,这个 64 位就是所谓的“宽度”了!
因此,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 沟通、显卡则通过PCI-E的序列信道设计来与CPU沟通、
 
CPU等级:
由于x86架构的CPU在Intel的Pentium系列(1993年)后就有不统一的脚位与设计,为了将不同种类的CPU规范等级, 所以就有i386,i586,i686等名词出现了。
基本上,在Intel PentiumMMX与AMD K6年代的CPU称为i586等级, 而Intel Celeron与AMD Athlon(K7)年代之后的32位CPU就称为i686等级。 至于目前的64位CPU则统称为x86_64等级。
很多程序都有对CPU做最优化的设计,有的程序注明是给x86_64的CPU使用时,就不要将他安装在686以下等级的电脑中,否则可是会无法执行该软件的。
 
超线程 (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 帮助很大!您
的案例就得要自行研究啰!
 
1.6 内存
CPU所使用的数据都是来自内存,不论是软件程序还是数据,都必须要读入内存后CPU才能利用。
个人电脑的内存主要元件为动态随机存取内存(Dynamic Random Access Memory, DRAM),随机存取内存只有在通电时才能记录与使用,断电后数据消失。
因此也称这种AM为挥发性内存
动态随机存取内存(DRAM): Dynamic Random Access Memory
DRAM分为:SDRAM、DDR SDRAM
DDR:双倍数据传送速度,可以在一次工作周期中进行两次数据的传送
DRAM根据技术的更新又分好几代,而使用上较广泛的有所谓的SDRAM与DDR SDRAM两种。
这两种内存的差别除了在于脚位与工作电压上的不同之外,DDR是所谓的双倍数据传送速度(Double Data Rate), 他可以在一次工作周期中进行两次数据的传送,感觉上就好像是CPU的倍频啦!
所以传输频率方面比SDRAM还要好。新一代的PC大多使用DDR内存了。
SDRAM与DDR SDRAM的型号与频率及带宽之间的关系: 带宽=频率*数据宽度
内存能提供的数据量由CPU 内的内存控制芯片与内存间的传输速度“前端总线速度(Front Side Bus, FSB) 来说明
Byte:字节 1 Byte = 8 bits
k:1k = 1024Byte
M:1M = 1024K
频率:表示内存每秒钟的工作次数
数据宽度:64bit表示cpu一次能读取的数据为64bit
 
DDR SDRAM又依据技术的发展,有DDR, DDR2, DDR3, DDR4等等,其中,DDR2 的频率倍数则是 4 倍而DDR3 则是 8 倍!
Tips :在图 中,内存的规格内提到 DDR3/DDR3L 同时支持,我们知道 DDR3 了,那DDR3L 是啥鬼?
为了节省更多的电力,新的制程中降低了内存的操作电压,因此 DDR3 标准电压为 1.5V,但 DDR3L 则仅须 1.35V !通常可以用在耗电量需求更低的笔记本中!
但并非所有的系统都同步支持!这就得要看主板的支持规格啰!否则你买了 DDR3L 安插在不支持的主板上,DDR3L 内存是可能会烧毁的!
 
内存除了频率/带宽与型号需要考虑之外,内存的容量也是很重要的喔!
因为所有的数据都得要载入内存当中才能够被CPU判读,如果内存容量不够大的话将会导致某些大容量数据无法被完整的载入, 此时已存在内存当中但暂时没有被使用到的数据必须要先被释放,
使得可用内存容量大于该数据,那份新数据才能够被载入呢! 所以,通常越大的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的数据。
以服务器来说,内存的容量有时比CPU的速度还要来的重要的!
 
&& 多通道设计
由于所有的数据都必须要存放在内存,所以内存的数据宽度当然是越大越好。 但传统的总线宽度一般大约仅达64位,为了要加大这个宽度,因此芯片组厂商就将两个内存汇整在一起,
如果一支内存可达64位,两支内存就可以达到128位了,这就是双通道的设计理念。
 
如上所述,要启用双通道的功能你必须要安插两支(或四支)内存,这两支内存最好连型号都一模一样比较好, 这是因为启动双通道内存功能时,数据是同步写入/读出这一对内存中,
如此才能够提升整体的带宽啊! 所以当然除了容量大小要一致之外,型号也最好相同啦!
华硕主板示意图上那四根内存插槽的颜色呢?是否分为两种颜色,且两两成对? 为什么要这样设计?答出来了吗?
是啦!这种颜色的设计就是为了双通道来的!要启动双通道的功能时, 你必须要将两根容量相同的内存插在相同颜色的插槽当中!
 
Tips 服务器所需要的速度更快!因此,除了双通道之外,中阶服务器也经常提供三信道,甚至四信道的内存环境!
例如 2014 年推出的服务器用 E5-2650 v3 的 Intel CPU 中,它可以接受的最大信道数就是四信道且为 DDR4 !
 
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)很多也是使用ROM来进行软件的写入的。 固件像软件一样也是一个被电脑所执行的程序,然而他是对于硬件内部而言更加重要的部分。
例如BIOS就是一个固件, BIOS虽然对于我们日常操作电脑系统没有什么太大的关系,但是他却控制着开机时各项硬件参数的取得!
所以我们会知道很多的硬件上头都会有ROM来写入固件这个软件。
很多硬件上面都会有固件,如磁盘阵列卡、10G网卡、交换器设备等
 
BIOS:
BIOS 对电脑系统来讲是非常重要的,因为他掌握了系统硬件的详细信息与开机设备的选择等。
但是电脑发展的速度太快了, 因此 BIOS 程序码也可能需要作适度的修改才行,所以你才会在很多主板官网找到 BIOS 的更新程序啊!
但是 BIOS 原本使用的是无法改写的 ROM ,因此根本无法修正 BIOS 程序码!为此,现在的 BIOS 通常是写入类似闪存 (flash) 或EEPROM 中。
 
1.7 显卡
显卡又称为VGA(Video Graphics Array),他对于图形影像的显示扮演相当关键的角色。
一般对于图形影像的显示重点在于分辨率与色彩深度,因为每个图像显示的颜色会占用掉内存, 因此显卡上面会有一个内存的容量,这个显存容量将会影响到你的屏幕分辨率与色彩深度!
GPU:
除了显存之外,由于三度空间游戏(3D game)与一些3D动画的流行,因此显卡的“运算能力”越来越重要。
一些3D的运算早期是交给CPU去运行的,但是CPU并非完全针对这些3D来进行设计的,而且CPU平时已经非常忙碌了!
所以后来显卡厂商直接在显卡上面嵌入一个3D加速的芯片,这就是所谓的GPU称谓的由来。
显卡主要也是通过CPU的控制芯片来与CPU、内存等沟通。
对于图形影像(尤其是3D游戏)来说, 显卡也是需要高速运算的一个元件,所以数据的传输也是越快越好!
因此显卡的规格由早期的PCI导向AGP, 近期AGP又被PCI-Express规格所取代了。
如前面华硕主板图示当中看到的就是PCI-Express的插槽。 这些插槽最大的差异就是在数据传输的带宽
 
如果你的主机是用来打3D游戏的,那么显卡的选购是非常重要喔!
如果你的主机是用来做为网络服务器的, 那么简单的入门级显卡对你的主机来说就非常够用了!因为网络服务器很少用到3D与图形影像功能。
 
1.8 硬盘与存储设备
电脑系统上面的存储设备包括:硬盘、软盘、MO、CD、DVD、磁带机、U盘、闪存、新一代蓝光光驱
大型机器的区域网络存储设备(SAN,NAS),NAS属于大型机器的区域网络存储设备
 
硬盘:
物理组成:圆形盘片、机械手臂、磁头、主轴马达组成
实际数据都是写在具有磁性物质的盘片上面,读写主要是通过在机械手臂上的磁头来达成的。实际运行时,主轴马达让盘片转动,然后机械手臂可伸展让磁头在盘片上头进行读写的动作
另外由于单一盘片的容量有限,因此有的硬盘内部会有两个以上的盘片
 
盘片上的数据:
 
 
 盘片上的数据如何写入:
盘片转动才能让机器手臂读写。通常数据写入就是以圆圈转圈的方式读写。
盘片设计就是在类似盘片同心圆上面切除一个一个的小区块,这些小区块整合成一个圆形,让机器手臂上的磁头去存取。
这些小区块就是磁盘的最小物理存储单位,称为扇区
同一个同心圆的扇区组合成的圆就是所谓的磁道
磁盘里面可能会有多个盘片,因此在所有盘片上面的同一个磁道可以组合成所谓的柱面
数据的读写会由同心圆的外圈开始往内写,这是默认值。因为同心圆外圈的圆比较大,占用的面积比内圈多,所以,为了善用这些空间,外围的圆会具有更多的扇区
当盘片转一圈,外圈的扇区数量比较多,数据写入外圈,转一圈能够读写的数据量比内圈多,因此数据的读写又外圈开始往内写
原来硬盘的扇区都是设计成512Byte的容量,现在硬盘容量越来越大,为了减少数据量的拆解,新的大容量硬盘已经有4KByte的扇区设计
 
传输接口:
为了提升磁盘的传输速度,磁盘与主板的连接接口也经过多次改版。目前使用的接口包括:SATA、USB、SAS
 
 SATA接口:
 
 
SAS接口:
 
 
 USB接口:
 
 固态硬盘(Solid State Disk, SSD):
传统硬盘需要驱动马达去转动盘片,会造成很严重的磁盘读取延迟。
要知道数据在哪个扇区上面,然后在命令马达开始转,之后再让磁头去读取正确的数据,如果数据放置的比较离散(扇区分布比较广又不连续),
那么读写的速度就会延迟更明显,速度快不起来。
 
SSD不能成为磁盘:因为没有磁头与盘片,都是内存,为方便还是成为磁盘,只是跟传统磁盘(Hard Disk Drive,HDD)不同,就称为固态硬盘(Solid State Disk,SSD)
固态硬盘:最大的好处是没有马达不需要转动,而是通过内存直接读写的特性,因此除了没数据延迟且快速之外,还很省电。
早期的SSD有个重要的致命伤,就是这些闪存有“写入次数的限制”,因此通常SSD的寿命大概两年就结束了,多以数据存放时需要考虑到备份或者是可能要使用RAID的机制来防止SSD的损毁
磁盘读写性能:
我们在读写磁盘时,通常没有连续读写,大部分的情况下都是读写一大堆小文件,因此,不要想传统磁盘一直转很少圈就可以读到所有的数据。
通常很多小文件的读写会很耗硬盘,因为盘片要转好多圈。SSD不存在这个问题
测试磁盘性能时,有个很特殊的单位,每秒读写操作次数(IOPS: Input/Output Operations Per Second),这个数值越大,代表可操作次数越高,表示性能较好。
 硬盘选购与运行须知:
 
 
电脑通电后绝对不要移动主机,包括笔记本电脑开始之后不要随便移动:抖动到硬盘会导致整个硬盘数据发生问题
电脑开机运行过程中不要随便将插头拔掉就以为顺利关机:关机时磁盘的机械手臂必须要归回原位,所以使用操作系统的正常关机方式,才能够比较好的保护硬盘,硬盘的机械手臂可以归位。
 
1.9 扩展卡与接口
服务器可能因为某些特殊的需求,需要使用主板之外的其他适配卡。所以主板上面通常会预留多个扩充接口的插槽,这些插槽依据历史沿革,包括 PCI/AGP/PCI-X/PCIe 等,由于 PCIe 速度快到太好用了,因此几乎所有的卡都以 PCIe 来设计了,但是有些比较老旧的卡可能还需要使用啊,因此一般主板大多还是会保留一两个 PCI 插槽,其他的则是以 PCIe 来设计。
现在的主板上面通常已经整合了相当多的设备元件,常见整合到主板的元件包括声卡、网卡、USB控制卡、显卡、磁盘阵列卡等。
可以在主板上面发现很多方形的芯片,通常是一些个别的设备芯片。
 
由于某些特殊需求,有时可能还是需要增加额外的扩展卡。例如,需要一部个人电脑连接多个网域时(Linux服务器用途),就要多个网卡。
 
1.10 主板
 
2.数据表示方式
2.1数字系统
电脑常用的数据是二进制的,二进制就是逢二进一的意思。
十进制指逢十进一
十进制3456的意义:
 
1101010的数值转为十进制,结果如下:
 
十进制数值转换为二进制:
十进制的106转成二进制:
这些数字的转换系统非常重要,因为电脑的加减乘除都是使用这些机制来处理的。
2.2 文字编码系统
文字文件在电脑中也是被记录为0与1的二进制文件,这些文字文件的内容要被取出来查阅时,必须要经过一个编码系统的处理才行。
所谓的“编码系统”可以想成是一个“字码对照表”
 
当我们要写入文件的文字数据时,该文字数据会由编码对照表将该文字转成数字后,再存入文件当中。
同样,当我们要将文件内容的数据读出时,也会经过编码对照表将该数字转成对应的文字后,再显示到屏幕上。
浏览器中出现乱码的原因就是由于编码写错,编码对照表出错导致对照的文字产生误差。
 
 
3.软件程序
3.1机器程序与编译程序
4.2 操作系统
早起想要让电脑执行程序就得要参考一堆硬件功能函数,并且学习机器语言才能够撰写程序。
每次写程序时都必须要重新改写,因为硬件与软件功能不见得都一致。
如果能将所有的硬件都驱动,并且提供一个发展软件的参考接口给工程师开发软件,发展软件就变的简单了,那就是操作系统。
操作系统:操作系统其实就是核心与其提供的接口工具。
 
操作系统核心(Kernel)
操作系统(Operating System,OS)其实也是一组程序,这组程序的终点在于管理电脑的所有活动以及驱动系统中的所有硬件。
操作系统的功能就是让CPU可以开始判断逻辑与运算数值、让内存可以开始载入/读出数据与程序码、让硬盘可以开始被存取、让网卡可以开始传输数据、
让左右周边可以开始运行等等。总之,硬件的所有动作都必须要通过这个操作系统来达成。
 
上述的功能就是操作系统的核心了(Kernel),电脑能不能做到某些事情,都是与核心有关。
只有核心有提供的功能,你的电脑系统才能帮你完成
例如:核心不支持TCP/IP的网络协定,那么无论购买了什么样的网卡,这个核心都无法提供网络能力。
 
核心程序防止在内存当中的区块是受保护的,并且开机后一致常驻在内存当中。
因为核心主要管控的硬件与提供相关的功能都是非常重要的,如果使用者能够直接使用到核心的话,不小心将该核心程序停止或破坏,
将会导致整个系统崩溃,因此核心程序所放置到内存当中的区块是受保护的,并且开机后一直常驻在内存当中。
 
系统调用(System Call):
硬件都是由核心管理,如果想要开发软件自然就得要参考这个核心的相关功能。从原本的参考硬件函数变成参考核心功能,还是很麻烦。
为了解决这个问题,操作系统通常提供一整组开发接口给工程师开发软件。工程师只要遵守开发接口就很容易开发软件。
举例:学习C程序语言只要参考C程序语言的函数即可,不需要再去考虑其他核心的相关功能,因为核心的系统调用接口会主动的将C程序语言的相关语法转成核心可以了解的任务函数,那核心自然就能够顺利运行该程序。
 
电脑系统主要由硬件构成,核心程序主要在管理硬件,提供合理的电脑系统资源分配(包括cpu资源、内存使用资源等),因此只要硬件不同核心就得要进行修改才行。由于核心只会进行电脑系统的资源分配,所以在上头还需要有应用程序的提供,使用者才能够操作系统。
为了保护核心,并且让程序设计师比较容易开发软件,因此操作系统除了核心程序之外,通常还会提供一整组开发接口,那就是系统调用层。
软件开发工程师只要遵循公认的系统调用参数来开发软件,该软件就能够在核心上头运行。
所以软件与核心有比较大的关系,与硬件关系不大。硬件也与核心有比较大的关系。
 
驱动程序的提供应该是硬件厂商的事情,硬件厂商要推出硬件时,应该要自行参考操作系统的驱动程序开发接口,开发完毕后将驱动程序连同硬件一同贩卖给使用者才对。
 
操作系统与驱动程序:
驱动程序可以说是操作系统里面相当重要的一环,不过硬件是在持续进步当中的。包括主板、显卡、硬盘等。
那么比较晚推出的较新的硬件,例如显卡,我们的操作系统当然不认识,操作系统如何驱动这块新的显卡。
为了克服这个问题,操作系统通常会提供一个开发接口给硬件开发商,让他们可以根据这个接口设计可以驱动他们硬件的“驱动程序”。
如此以来只要使用者安装驱动程序后,自然就可以在他们的操作系统上面驱动这块显卡。
 
 
操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序;
要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
驱动程序是由厂商提供的,与操作系统开发者无关;
 
4.3 应用程序
应用程序是参考操作系统提供的开发接口开发出来的软件,这些软件可以让使用者操作,以达到某些电脑的功能利用。
 
 
 
 
posted @ 2019-05-10 22:30  veggiegfei  阅读(671)  评论(0编辑  收藏  举报