一.计算机用途分类

回到顶部

计算机接受用户输入指令与数据,经中央处理器数学与逻辑运算单元处理后,产生或储存成有用的信息。 只要有输入设备(不管是键盘还是触摸屏)及输出设备(例如计算机屏幕或直接由打印机打印出来), 可以输入数据并产生信息的, 就是计算机。
其实包括一般商店用的简易型加减乘除计算器、智能手机、GPS卫星定位系统、ATM提款机、个人桌面计算机、 便携式笔记本、平板计算机、流行的开源硬件计算机Xapple pi,banana pi,Raspberry pi、智能手表、智能穿戴设备等等,这些都是计算机!
根据复杂度与运算能力,可以将计算机分为如下几类:

超级计算机(Supercomputer)

回到顶部

超级计算机是运行速度最快的计算机,但是维护和操作费用也最高!
主要用于有高速计算需求的项目计划中,例如国防军事、气象预测、太空科技等领域。 国内的太湖之光、银河等都是超级计算机。
太湖之光 全球前500名超级计算机参考:http://www.top500.org。

大型计算机(Mainframe Computer)

回到顶部

大型计算机通常也具有数个高速的CPU,功能上虽不及超级计算机,但也可用来处理大量数据与复杂的运算。 例如大型企业的主机、证券交易所等每天需要处理数百万数据的企业机构,或者是大型企业的数据库服务器等。

迷你计算机(Minicomputer)

回到顶部

迷你计算机仍保有大型计算机同时支持多用户的特性,主机可以放在一般工作场所, 不必像前两个大型计算机需要特殊的空调场所。通常用来作为科学研究、工程分析以及工厂的流程管理等。

工作站(Workstation)

回到顶部

工作站的价格比迷你计算机便宜许多,是针对特殊用途而设计的计算机。 在个人计算机的性能还没有提升之前, 工作站计算机的性价比是所有计算机当中最好的,因此广泛应用于学术研究与工程分析中。

个人微型计算机(Microcomputer)

回到顶部

微型计算机常用于个人娱乐办公,体积小价格低,但功能还是五脏俱全的! 个人计算机又可分为桌面和便携式笔记本等。
目前的个人计算机性能已经足够强大了,甚至比工作站等级以上的计算机指令周期还要快! 但是工作站计算机强调的是稳定不死机,并且运算过程要完全正确,因此工作站以上等级的计算机在设计时的考虑与个人计算机并不相同! 这也是为什么工作站等级以上的计算机售价较贵的原因。

嵌入式设备(embedded system)

回到顶部

嵌入式设备无处不在,路由器、智能手机、网络电视都是嵌入式设备。

一.计算机硬件五大单元

回到顶部

计算机系统分为硬件和软件两大部分。硬件是计算机系统的可见部分,是软件运行和存储的基础。软件则是控制硬件操作的指令序列。
linux操作系统与所运行的硬件环境密切相关,如果想彻底理解操作系统运行的全过程,那么就需要了解它所运行的计算机硬件组成原理。 以常见的个人计算机主机或服务器工作站主机为例。通过观察可以发现,一台个人台式电脑主要由鼠标、键盘、显示器、主机这几大部分组成。这些设备可以分为如下三大类:
1.输入设备:包括键盘、鼠标、扫描仪、手写板、触控屏等;
2.主机部分:主机中最主要的就是主板以及主板上的中央处理器(CPU)、主存储器(内存)、硬盘以及显卡等适配卡设备;
3.输出设备:包括屏幕、打印机等。
计算机通过输入设备如鼠标与键盘将数据输入到主机里面,然后由主机的功能处理成为图表或文章等信息后, 将结果输出到屏幕或打印机等输出设备。
主机里面最重要的是主板,主板上面有各种接口标准的插槽,上面安插了中央处理器CPU、主存储器、硬盘以及一些适配卡设备如显卡等。 大部分智能手机将这些组件直接焊接在主板上而不是插卡!

计算机硬件分为五大基本单元,分别为算数运算单元、逻辑控制单元、存储器单元、输入单元和输出单元。
五大单元中最重要的控制单元和算术逻辑运算单元被整合到中央处理器CPU(Central Processing Unit)中!
CPU作为具有特定功能指令集的芯片, 主要工作在于管理与运算,CPU内部又可分为两个主要的单元,分别是算数逻辑单元与控制单元。 其中算数逻辑单元负责程序运算与逻辑判断,控制单元则主要协调各周边组件与各单元间的工作。
其他三大单元对应的设备还有哪些呢? 主机内的设备大多是通过主板(mainboard)连接在一起, 主板上面有个连结沟通所有设备的芯片组,芯片组可以将所有单元的设备连接起来, 系统单元:系统单元包括CPU与内存及主板相关组件。主板上有很多的连接接口与相关的适配卡, 包括网络卡、磁盘阵列卡、还有显示适配器等。对于3D游戏来说显示适配器是非常重要的,与显示的精细度、色彩与分辨率都有关系。
存储单元:包括主存储器(main memory, RAM)与外部辅助存储设备,辅助存储设备包括硬盘、软盘、光盘、磁带等。
也可以将硬盘、光盘等外部存储设备看作输入设备或输出设备。
输入、输出单元:常用的输入设备有键盘鼠标以及各种传感器设备! 输出设备有显示器、打印机、音效喇叭、HDMI电视、投影仪、蓝芽耳机等!有些设备既可以作为输出设备也可以作为输入设备例如触摸屏! CPU执行运算与判断的数据从哪里来呢? CPU读取的数据都是从主存储器来的! 主存储器内的数据则是从输入单元传输进来!而CPU处理完毕的数据也必须要先写回主存储器中, 最后数据才从主存储器传输到输出单元。
所有的数据都要经过主存储器的传输, 如果内存的容量太小,就会影响数据的读写效率,严重影响系统的整体性能! 对于Linux服务器,要加快系统性能,通常就是将内存容量加大。
计算机由五大基本单元组成,包括CPU内部的控制单元和算数逻辑单元、存储器单元、输入单元、输出单元。如下图所示: 计算机结构图 CPU是整个计算机系统的控制中心,所有的单元都是由CPU内部的控制单元负责协调, CPU处理的数据(不管是程序还是一般文件数据)来自于主存储器,CPU控制指令控制内存数据的读写! 当内存不足时系统的性能就会变差!也是为什么现在人们买智能型手机时,对于可用内存的要求都很高的原因!

二.微型计算机硬件组成原理

回到顶部

传统微型计算机硬件组成结构如下图所示: 传统微型计算机组成框图 其中,CPU作为系统的处理中心,通过总线接口与其他部分相连,CPU通过地址线、数据线和控制信号线组成的本地总线(或称为内部总线) 与系统其他部分进行数据通信。
地址线用于提供内存或IO设备的地址,即指明需要读/写数据的具体位置。
数据线用于在CPU和内存或IO设备之间提供数据传输的通道,而控制线则负责指挥执行的具体读/写操作。
对于使用80386CPU的PC机,其内部地址线和数据线都分别有32根,即都是32位的。因此地址寻址空间范围有2^32字节,从0到4GB。
图中上部控制器和存储器接口通常都集成在计算机主板上,这些控制器分别都是以一块大规模集成电路芯片为主组成的功能电路。 例如,中断控制器由 Intel 8259A 或其兼容芯片构成;DMA 控制器通常采用Intel 8237A 芯片构成;定时计数器的核心则是 Intel 8253/8254 定时芯片; 键盘控制器使用的是 Intel 8042芯片来与键盘中的扫描电路进行通信。

控制卡(或者称为适配器)通过扩展插槽与主板上系统总线连接。总线插槽是系统地址总线、数据总线和控制总线与扩展设备控制器的标准连接接口。 这些总线接口标准通常有工业标准结构ISA(Industry Standard Architecture)总线、扩展工业标准结构总线EISA(Extented ISA)、 外围组件互连PCI(Peripheral Component Interconnect)总线、加速图形端口AGP(Accelerated Graphics Port)视频总线等。 这些总线接口的主要区别在于数据传输速率和控制灵活性方面。随着计算机硬件的发展,传输速率更高、控制更灵活的总线接口还在不断推出, 例如采用串行通信点对点技术的高速PCIE (PCI Express)总线。 最初的 80386 机器上只有 ISA 总线,因此系统与外部 IO 设备最多只能使用 16 位数据线进行数据传输。

随着计算机技术的发展,很多原来使用控制卡来完成的功能(例如硬盘控制器功能)都已经集成在计算机主机板上少数几个超大规模集成电路芯片中, 几个甚至是一个这样的芯片就确定了主机板的主要特性和功能,并且为了让系统的不同部分都能达到其最高传输速率,总线结构也发生了很大变化。 现代PC机的组成结构通常可以使用下图来描述: 现代PC机芯片集框图 除了CPU以外,现代PC机主板主要使用2个超大规模芯片构成的芯片组或芯片集(Chipsets)组成:北桥(Northbridge)芯片和南桥(Southbridge)芯片。 北桥芯片用于与CPU、内存和AGP视频接口,这些接口具有很高的传输速率。北桥芯片还起着存储器控制作用,因此Intel把该芯片标号为MCH(Memory Controller Hub)芯片。 南桥芯片用来管理低、中速的组件,例如,PCI 总线、IDE 硬盘接口、USB 端口等,因此南桥芯片的名称为ICH(IO Controller Hub)。 之所以用“南、北”桥来分别统称这两个芯片,是由于在 Intel 公司公布的典型 PC 机主板上,它们分别位于主版的下端和上端(即地图上的南部和北部)位置,并起着与 CPU 进行通道桥接的作用。

虽然总线接口发生了很大变化,甚至今后北桥和南桥芯片都将会合二为一,但是对于我们编程人员来说,这些变化仍然与传统的PC机结构兼容。 因此为传统 PC 机硬件结构编制的程序仍然能运行于现在的PC机上。这从Intel的开发手册上可以证实这个结论。 所以为了便于入门学习,我们仍然以传统PC机结构为框架来讨论和学习PC的组成和编程方法,当然这些方法仍然适合于现代PC机结构。

个人计算机架构与相关设备组件

回到顶部

一般消费者常说的计算机通常指的就是个人计算机x86架构, Linux早期也是依据x86的架构发展而来!
早期两大主流x86开发商Intel和AMD的CPU架构与设计理念有些许差异。 随着两者互相借鉴学习,目前架构已经基本类似。目前市场占有率最大的主要是Intel, 某款Intel主板如下图所示:
主板结构 由于主板是链接各组件的一个重要项目,因此在主板上面沟通各部组件的芯片组设计优劣,就会影响 效能不少喔! 早期的芯片组通常分为两个网桥来控制各组件的沟通, 分别是:
(1)北桥:负责链接速度较快的CPU、主存储器与显示适配器界面等组件;
(2)南桥:负责连接速度较慢的设备接口, 包括硬盘、USB、网络卡等等。
不过由于北桥最重要的就是CPU与主存储器之间的桥接,因此目前的主流架构中, 大多将北桥内存控制器整合到CPU封装中了。 早期芯片组分南北桥,北桥可以连接CPU、主存储器与显示适配器。 只是CPU要读写到主存储器的动作,还需要北桥的支持,也就是CPU与主存储器的交流, 会瓜分掉北桥的总可用带宽,真浪费! 因此目前将记忆控制器整合到CPU后,CPU与主存储器之间的沟通是直接交流,速度较快之外,也不会消耗更多的带宽!
主板上面设计的插槽主要有 CPU (Intel LGA 1150 Socket)、主存储器 (DDR3 3200 support)、显示适配器界面 (PCIe3.0)、SATA 磁盘插槽 (SATA express)等

计算机组件cpu

回到顶部

目前世界上有哪些主流的CPU架构呢?

精简指令集和复杂指令集

回到顶部

CPU内部含有一些微指令,软件工程师编写的软件最终都会转换成cpu执行的指令集。 不同的指令集形成了不同的cpu架构,指令集的设计主要分为两种,分别是精简指令集(RISC)和复杂指令集(CISC)。

1.精简指令集RISC(Reduced Instruction Set Computer)

回到顶部

这种CPU设计中,指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳; 但是若要做复杂的事情,就要由多个指令来完成。
常见的RISC指令集CPU主要有甲骨文(Oracle)公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、 与ARM公司(ARM Holdings)的ARM CPU系列。
在应用方面,SPARC CPU计算机常用于学术领域的大型工作站,包括银行金融体系的主服务器也都有这类的计算机架构;
至于PowerPC架构的应用上,索尼(Sony)公司出产的Play Station 3(PS3)就是使用PowerPC架构的Cell处理器;
而最常使用的智能手机、PDA、导航系统、网络设备(交换器、路由器等)等几乎都使用ARM架构的CPU!
目前世界上使用范围最广的CPU可能就是ARM架构处理器了!

2.复杂指令集CISC(Complex Instruction Set Computer)

回到顶部

与RISC不同,CISC指令集的每个指令可以执行一些较低阶的硬件操作,指令数目多且复杂, 每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条指令可以处理的工作较为丰富。 常见的CISC指令集CPU主要有AMD、Intel、VIA等x86架构CPU。 AMD、Intel、VIA所开发出来的x86架构CPU被大量用于个人计算机(Personal computer), 因此,个人计算机常被称为x86架构计算机!那为何称为x86架构呢? 因为最早那颗Intel开发出来的CPU代号称为8086, 后来依此架构又开发出80286,80386...,这种架构的CPU就被称为x86架构了。
2003年以前由Intel开发的x86架构CPU由8位升级到16、32位, 后来AMD依此架构修改新一代的CPU为64位, 为了区别两者的差异,64位的个人计算机CPU又被统称为x86_64架构!
cpu位数指的是CPU一次读取数据的最大量! 64位CPU表示CPU一次可以读写64bits的二进制数据,32位CPU表示CPU一次只能读取32位二进制数据。 CPU读取数据量有限制,因此能够从内存中读写的数据也就有限制。一般32位CPU所能读写的最大数据量就是4GB左右。
不同的x86架构CPU有什么差异呢?除了CPU的整体结构(如第二层快取、每次运行可执行的指令数等)之外, 主要是在于指令集的不同。新的x86CPU大多含有很先进的指令集, 这些指令集可以加速多媒体程序的运行,也能够加强虚拟化的效能,而且某些指令集更能够增加能源效率, 让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

执行运算与控制的CPU

回到顶部

CPU负责大量运算,因此CPU的发热量通常比较大,通常在CPU上面安装有风扇散热。 个人计算机x86 CPU主要供货商为Intel和AMD,目前主流的CPU多为双核以上架构! 原本的单核心CPU仅有一个运算单元,所谓的多核心则是在一颗CPU封装中嵌入了两个以上的运算核心, 也就是在一个实体CPU外壳中,含有两个以上的CPU单元。
不同的CPU型号具有不同的引脚封装,能够搭配的主板芯片组也不同, 想要升级主机时,需要留意主板所支持的CPU型号! 目前主流的CPU有Intel的i3/i5/i7系列产品中,甚至先后期出厂的类似型号的引脚封装也不同, 例如i7-2600使用LGA1155引脚而i7-4790则使用FCLGA1150引脚,在选购时需要留意!
CPU工作效率除了受cpu指令集设计的影响外,还会受CPU工作频率的影响! 频率就是CPU每秒钟可以进行的工作次数。频率越高表示CPU单位时间内可以作更多的事情。 举例来说,Intel的i7-4790 CPU频率为3.6GHz, 表示这颗CPU在一秒内可以进行3.6x10 9次工作,每次工作都可以进行少数的指令运行之意。
注意,不同的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的倍频通常在出厂时已经被锁定而无法修改, 较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频, 可以将外频333MHz调整为400MHz, 如此一来整个主板的各个组件的运行频率可能都会被增加成原本的1.333倍(4/3), 虽然CPU可能可以到达3.6GHz,但因为频率并非正常速度,可能会造成当机等问题。
所有的数据传输都要经过北桥,北桥不可能比CPU更快,因此北桥常常是系统效能的瓶颈。 为了解决这个问题,新的CPU设计中,已经将内存控制器整合到CPU内部, 而连接CPU与内存、显示适配器的控制器的设计,Intel使用QPI(Quick Path Interconnect)与DMI技术, 而AMD则使用Hyper Transport,这些技术都可以让CPU直接与主存储器、显示适配器等设备分别进行沟通,而不需要通过外部的连接芯片。
现在没有所谓的北桥了(整合到CPU内),因此CPU的频率设计就无须考虑得要同步的外频,只需要考虑整体的频率即可。 所以,如果你经常有查阅自己CPU频率的习惯,当使用cpu-z这个软件时,应该会很惊讶的发现到,怎么外频变成100MHz而倍频可以到达30以上!
现在Intel的CPU会主动帮你超频!例如i7-4790 CPU基本频率为3.6GHz,但是最高可自动超频到4GHz! 通过Intel的turbo 技术。同时,如果没有大量的运算需求,CPU频率会降到1.xGHz,藉此达到节能省电的目的! 所以不需要自己手动超频了! Intel已经自动帮你进行超频了...,如果妳用cpu-z观察CPU频率,会发现该频率会一直自动变动!

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内部的设计, CPU得以个别跟各个组件进行沟通! 因此,每种组件与CPU的沟通具有很多不同的方式!例如主存储器使用系统总线带宽来与CPU沟通。 而显示适配器则通过PCI-E的序列通道设计来与CPU沟通喔! 详细说明我们在本章稍后的主板部份再来谈谈。

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的运算能力还是没有用完啊!
在每一个CPU内部将重要的寄存器(register)分成两群, 而让程序分别使用这两群寄存去。 也就是说,可以有两个程序同时竞争CPU的运算单元,而非通过操作系统的多任务切换! 这一过程就会让CPU好像同时有两个核心一样! 虽然大部分i7等级的CPU其实只有四个实体核心,但通过HT机制,则操作系统可以抓到八个核心! 并且让每个核心逻辑上分离,就可以同时运行八个程序了。
虽然很多研究与测试发现HT虽然可以提升效能,不过,有些情况下却可能导致效能降低! 因为,实际上明明就仅有一个运算单元! 不过在使用数值模式的情况下,因为操作的数值模式主要为平行运算功能, 且运算通常无法达到100%的CPU使用率,通常仅有大约60%运算量而已。 因此在的实作过程中,这个HT确实提升相当多的效能! 至少应该可以节省大约30%~50%的等待时间!不过网络上大家的研究中,大多说这个是case by case,而且使用的软件影响很大!

冯诺依曼和哈佛结构

回到顶部

冯·诺依曼结构(von Neumann architecture)
  冯·诺依曼结构也称作普林斯顿结构,是一种将程序(指令序列的集合)和数据存放在同一存储器的不同地址的电脑设计概念结构。
这是建立在冯·诺依曼原理,即程序可看做一种特殊的“数据”,同样地可以被处理和存储,故两者可存放在同一存储器中,采用单一的地址总线和数据总线。 特点:
第一,程序和数据存放在同一存储器的不同地址上;
第二,存储单元线性排列,且其位数固定;
第三,顺序执行,即程序/数据—>内存—>取指令执行指令;
  顺序执行程序。执行前,将需要的程序和数据先放入存储器(PC为内存)。
当执行时把要执行的程序和要处理的数据按顺序从存储器中取出指令一条一条地执行,称作顺序执行程序。 第四,组成上有运算器,存储器,控制器,输入/输出设备。如下图:
  冯·诺依曼体系结构的特点决定了它可以最大限度地利用资源。怎么理解呢?你数据和程序放在同一个地方,不用花销太多的资源就能取到数据和程序。
这也算是冯氏结构的一大优点吧。可是由于程序和数据存放在同一存储区,存取程序和数据间时共享同一总线,导致了冯·诺依曼瓶颈。
哈佛结构
  与冯氏结构相对的是哈佛结构,即将程序和数据分开存储的结构。
其过程CPU首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。
程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度。如下图:
  联系冯氏结构的瓶颈,我们很快能想到哈佛结构能够完成指令和数据的并发操作,减轻了程序运行时的访存瓶颈,
也就是提高吞吐量,是一种并行结构;而冯氏结构只能是顺序操作,是一种串行的处理方式。原始的冯·诺依曼体系结构,通过引入流水线技术(Pipeline)提高吞吐量。
  流水线技术与并行处理有所区别,流水线是在顺序指令流计算机中实现处理时间重叠的技术。
流水线的并行处理是指完成对一条指令的不同操作(取指令、解码指令、执行指令)的各个部件在时间上是可以同时重叠工作(三级流水线)。
CPU是按照取指令、解码指令、执行指令来完成一条指令的操作,当CPU取完第一条指令后,接着解码第一条指令,
同时CPU取第二条指令,该步完成后,CPU执行第一条指令,同时解码第二条指令、取第三条指令,如此重叠操作。
  因此,各部件同时处理是针对不同指令而言的,各部件分别同时为多条指令的不同部分(step、stage)进行工作,
以提高各部件的利用率来提高指令的平均执行速度。但是这样虽然提高了系统的速率,由于流水线结构使得不容易计算程序运行的时间,
对一些时序要求很严的情况,该结构还是存有弊端的。所以在一些实时性很强的嵌入式系统采用哈佛结构可以高速数据处理,
同时读取指令和数据,大大提高了数据吞吐率,保证了系统的可靠性。

计算机组件之内存

回到顶部

主存储器就是我们通常所说的内存!
主板上的内存插槽中间通常有个突起将整个插槽切分成为两个不等长的距离,防止用户将内存条插反,这是主板上常用的一种防呆设计!
CPU处理的数据均来自内存(main memory),不论是软件程序还是数据,都必须要读入内存后CPU才能利用。
ddr内存条 个人计算机的内存主要是动态随机存取内存DRAM(Dynamic Random Access Memory), DRAM中的数据断电后就会消失,因此这种RAM也称为易失性内存。
DRAM内存通常可以分为SDRAM与DDR SDRAM两种。
目前大部分PC使用的都是DDR内存。
DDR是双倍数据传送速度(Double Data Rate),可以在一次工作周期中进行两次数据传送,类似CPU的倍频!所以传输频率比SDRAM要快。
下表列出SDRAM与DDR SDRAM的型号与频率及带宽之间的关系。

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了!
内存的规格内提到DDR3/DDR3L同时支持,我们知道DDR3了,那DDR3L是啥鬼?
为了节省更多的电力,新的制程中降低了内存的操作电压,因此DDR3标准电压为1.5V,但DDR3L则仅须1.35V!通常可以用在耗电量需求更低的笔电中!
但并非所有的系统都同步支持!这就得要看主板的支持规格啰!否则你买了DDR3L安插在不支持的主板上,DDR3L内存是可能会烧毁的喔!
内存除了频率/带宽与型号需要考虑之外,内存的容量也是很重要的喔!
所有的数据都得要加载到内存中才能够被CPU读取,如果内存容量不够大的话将会导致某些大容量数据无法被完整的加载, 此时已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用内存容量大于该数据,那份新数据才能够被加载呢!
所以,通常越大的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的数据。
对于服务器来内存的容量往往比CPU的速度还要重要!

内存的多通道设计

回到顶部

由于所有的数据都必须要存放在内存,所以内存的数据宽度当然是越大越好。
传统的总线宽度一般大约仅达64位,为了加大宽度,芯片组厂商将两个内存汇整在一起, 如果一根内存可达64位,两根内存就可以达到128位了,这就是双通道设计。
要启用双通道必须要安插两根(或四根)内存, 启动双通道内存后,数据是同步写入或读出这一对内存中,这样才提高整体的带宽,两根内存的容量和型号最好是一模一样。
大部分计算机主板都会将内存插槽用颜色标记,相同颜色的插槽就可以用来作为双通道!
要启动双通道,必须将两根容量相同的内存插在相同颜色的插槽中!
服务器所需要的速度更快!因此,除了双通道之外,中阶服务器也经常提供三通道,甚至四通道的内存环境!

cpu多级缓存

回到顶部

除了DDR SDRAM内存外,整部计算机中还有其他类型的内存!
例如CPU内部的二级高速缓存。
CPU的数据都是由内存提供,但CPU到内存之间需要通过内存控制器!
二级缓存(L2 cache)整合到CPU内部,将常用的程序或数据放到CPU内部,不需要去内存重新读取!
可以大大提高系统的运行速度。
L2内存的速度必须和CPU频率相同,DRAM是无法达到cpu频率速度的,需要静态随机存取内存SRAM(Static Random Access Memory)。
SRAM在设计上使用的晶体管数量较多,价格较高,且不易做成大容量,不过由于其速度快, 因此整合到CPU内成为高速缓存以加快数据的存取是个不错的方式喔!

只读存储器(ROM)

回到顶部

计算机中还有一种内存就是ROM了,上面提到的cpu多级缓存并不会编址到内存地址空间。
但是在冯诺依曼计算机体系结构中,ROM就会被被编址到内存地址空间了。
主板上的每个组件的参数具有可调整性。
举例来说,CPU与内存的频率是可调整的;
而主板上面如果有内建的网络卡或者是显示适配器时,该功能是否要启动与该功能的各项参数, 是被记录到主板上头的一个称为CMOS的芯片上,这个芯片需要借着额外的电源来发挥记录功能, 这也是为什么你的主板上面会有一颗电池的缘故。
那CMOS内的数据如何读取与更新呢?
计算机在开机的时候可以按下[Del]按键来进入一个名为BIOS的画面, BIOS(Basic Input Output System)就是固化在只读存储器ROM(Read Only Memory)中的一段计算机程序, ROM为非易失性内存,在没有通电时也能够将数据记录下来。
固件(firmware)就是存放在ROM中的一段计算机程序代码。很多的硬件上头都会有ROM来写入固件程序。例如磁盘阵列卡、网卡、交换机等!
对于硬件内部而言更加重要的部分。
BIOS是系统在开机第一个被读取执行的程序,BIOS虽然对于我们日常操作计算机系统没有什么太大的关系, BIOS对计算机系统来讲是非常重要的,掌握了系统硬件的详细信息与开机设备的选择,控制着开机时各项硬件参数的取得!
BIOS程序也是软件,只要是软件就可能存在隐藏bug,也可能需要作适度的修改才行,所以主板官网通常都会提供BIOS的更新程序下载!
BIOS原本使用的是无法改写的ROM,现在的BIOS通常写入类似闪存(flash)或EEPROM中。

计算机组件主板

回到顶部

主板上通常整合了非常多的设备组件! 常见组件有声卡、网卡、USB控制卡、显示适配器、磁盘阵列卡等。 可以看到主板上有一些方形的芯片,通常就是一些设备的控制芯片。
服务器可能因为某些特殊的需求,需要使用主板之外的其他适配卡。 所以主板上面通常会预留多个扩展接口插槽, 这些扩展接口包括PCI/AGP/PCI-X/PCIe等, 目前最新的扩展接口大多采用速度最快的PCIe接口。 为了兼容一些老设备,主板大多还是会保留一两个PCI插槽。
在选购外部设备的时候,例如服务器可能会连接多个局域网,需要多张网卡,在选购网卡的的时候需要注意购买主板支持的接口, 现在基本都是PCIe接口了。
PCIe有不同的信道数,常见的就是x1, x4, x8, x16等,个人计算机主板常见是x16,一般中阶服务器则大多有多个x8接口, x16反而比较少见。 这些接口在主板上主要是以插槽的长度来区别。

特别要讲的就是芯片组与扩展卡之间的关系了! 系统上面可能会有多个x8插槽,一般扩展卡,例如磁盘阵列卡或网卡插在和CPU直接连接的几个插槽性能最好。 如果是插在和南桥相连的插槽内性能会有一定的影响。 插槽与南桥连接,扩展卡数据需要先进入南桥抢带宽,之后再传向CPU时,还得要透过CPU与南桥的沟通管道DMI2.0。
根据 Intel 方面的资料来看,DMI 2.0 的传输率是 4GT/s,换算成文件传输量时,大约仅有 2GByte/s 的速度, 要知道, PCIe 2.0 x8 的理论速度已经达到 4GByte/s 了,但是与 CPU 的通道竟然仅有 2GB, 性能的瓶颈就这样发生在CPU与南桥的沟通上面! 因此,卡安装的插槽位置对性能也是有很大影响的! 所以插卡时,请详细阅读主板的逻辑图标!尽量插入和cpu直连的插槽!
连接接口设备的接口
主板与各项输出/输入设备的链接主要都是在主机机壳的后方,主要有:
PS/2 接口:这原本是常见的键盘与鼠标的接口,不过目前渐渐被 USB 接口取代,甚至较新的主板可能就不 再提供 PS/2 接口了;
USB 接口:通常只剩下 USB 2.0 与 USB 3.0,为了方便区分,USB 3.0 为蓝色的插槽颜色喔! 声音输出、输入与麦克风:这个是一些圆形的插孔,而必须你的主板上面有内建音效芯片时,才会有这三 个东西;
RJ-45 网络头:如果有内建网络芯片的话,那么就会有这种接头出现。 这种接头有点类似电话接头,不过 内部有八蕊线喔!接上网络线后在这个接头上会有灯号亮起才对!
HDMI:如果有内建显示芯片的话,可能就会提供这个与屏幕连接的接口了!这种接口可以同时传输声音与 影像, 目前也是电视机屏幕的主流连接接口喔!
CPU/RAM/主板/硬盘等都需要用电,电源适配器相当于心脏。 电源供电的稳定是主机稳定运行的基础保障。 电源适配器本身也会消耗掉一部份的电力! 如果主机系统需要300W的电力时,因为电源供应器本身也会消耗掉一部份电力, 最好挑选400W以上的电源适配器。 电源的转换率指的是输出的功率/输入的功率。假如主板用电量为250W, 但是电源适配器实际用掉320W电力, 则转换率为:250/320=0.78。 很明显数值越高表示电源适配器转换率越高,
企业环境选购服务器一定要购买品牌服务器厂商的服务器,千万不要自行组装! 不然会有填不完的坑。 系统的整体性并不是取决于最快的设备,例如并不是cpu的性能越高,计算机的整体想能就越好, 计算机的性能往往取决于整个系统中最慢的那个设备。 例如Intel i7搭配DDR3-1600内存,再加上牛逼的3D独立显卡,这个搭配本身没有毛病,很完美。 但是如果再配上一个过时的大头显示器,那么系统的整体性能将无法完全发挥出来
例如系统使用i7的4790CPU,搭配DDR3-1600内存,PCIe 2.0 x8磁盘阵列卡, 这张卡上面安装了8颗3TB的理论速度可达200Mbyte/s的硬盘 (假设为可加总速度的 RAID0 配置), 是安插在CPU控制芯片相连的插槽中。 网络使用giga网卡,安插在PCIe 2.0 x1的接口上。
DDR3-1600 的带宽可达:12.8GBytes/s
磁盘阵列卡理论传输率:PCIe 2.0 x8 为4GBytes/s
磁盘每颗200MBytes/s,共八颗,总效率为:200MBytes*8 ~ 1.6GBytes/s
网络接口使用PCIe 2.0 1x,接口速度可达 =500MBytes/s。 但是Giga网络最高为125MBytes/s,速度最慢的为网络!所以整个系统需要对网卡进行升级才能提高系统的整体性能!
系统不稳定的可能原因
系统超频:现在cpu都可以只能超频,尽量不要手动超频! 电源适配器不稳: 这个最坑爹,往往很难发现!
内存无法负荷:产生不稳定或当机的现象喔!
系统过热:热是造成电子零件运作不良的主因之一,如果您的主机在夏天容易当机, 冬天却还好,那 么考虑一下加几个风扇吧!有助于机壳内的散热,系统会比较稳定喔! 这个问题也是很常见的系统当机的元凶!
事实上,要了解每个硬件的详细架构与构造是很难的!这里仅是列出一些比较基 本的概念而已。 另外,要知道某个硬件的制造商是哪间公司时,可以看该硬件上面的信息。 举例来说,主板上面 都会列出这个主板的开发商与主板的型号,知道这两个信息就可以找到驱动程序了。 另外,显示适配器上面有个小小的芯片,上面也会列出显示适配器厂商与芯片信息喔。

计算机组件磁盘构造和磁盘分区

回到顶部

PC 机的软盘控制子系统有软盘片和软盘驱动器组成。由于软盘可以存储程序和数据并且携带方便,因此长期以来软盘驱动器是 PC 机上的标准配置之一。
linux磁盘 硬盘也是由盘片和驱动器组成,但是通常硬盘的金属盘片固定在驱动器中,不可拆卸。
​由于硬盘具有很大的存储容量,并且读写速度很快,因此它是 PC机中最大容量的外部存储设备,通常也被称为外存。
软盘和硬盘都是都是利用磁性介质保存信息,具有类似的存储工作方式。因此这里我们以硬盘为例简要说明它们的工作原理。
在盘片上存储数据的基本方式是利用盘片表面的一层磁性介质在磁化后的剩磁状态。软盘通常使用聚脂薄膜作基片,而硬盘片通常使用金属铝合金作基片。
一张软盘中含有一张聚脂薄膜圆盘片,使用上下两个磁头在盘片两面读写数据,盘片旋转速率大约在 300 转/分钟。硬盘中通常起码包括 2 张或者更多张金属片,因此具有多个读写磁头。例如,对于包含 2 个盘片的硬盘中就具有 4 个物理磁头,含有 4 个盘片的硬盘中有 8 个读写磁头。如下图所示,硬盘旋转速率很快,通常在 4500 转/分钟到 10000 转/分钟,因此硬盘数据的传输速度通常可达几十兆/秒。
位于磁盘表面的磁头上分别有一个读线圈和写线圈。在读数据操作过程中,磁头首先移动到旋转着的磁盘某个位置上。由于磁盘在旋转,磁介质相对磁头作匀速运动, 因此磁头实际上在切割磁介质上的磁力线。从而在读线圈中因感应而产生电流。根据磁盘表面剩磁状态方向的不同,在线圈中感应产生的电流方向也不同,因此磁盘上记录着的 0 和 1 数据就被读出,从而可从磁盘上顺序读出比特数据流。 linux磁盘组成

​由于磁头读取的每个磁道上都有存放信息的特定格式,因此通过识别所读比特数据流中的格式,磁盘电路就可以区分并读取磁道上各扇区中的数据,如下图所示。 其中,GAP 是间隔字段,用于起隔离作用。通常 GAP 是 12 字节的 0。每个扇区地址场的地址字段存放着相关扇区的柱面号、磁头号(面号)和扇区号,因此通过读取地址场中的地址信息就可以唯一确定一个扇区。 硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。 盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。 如下图: linux磁盘组成

磁盘内部结构实物如下图所示: linux磁盘组成

下图显示的是一个盘面,盘面中一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。 扇区是磁盘的最小组成单元,通常是512字节。(由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是4096字节) linux磁盘组成

硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。
磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。
如下图: linux磁盘组成

磁盘容量计算

存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
上图中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,每条磁道有12个扇区,所以此磁盘的容量为:
存储容量 6 * 7 * 12 * 512 = 258048
每个磁道的扇区数一样是说的老的硬盘,外圈的密度小,内圈的密度大,每圈可存储的数据量是一样的。新的硬盘数据的密度都一致,这样磁道的周长越长,扇区就越多,存储的数据量就越大。

磁盘读取响应时间

读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。
寻道时间:磁头从开始移动到数据所在磁道所需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。普通硬盘一般都是7200rpm,慢的5400rpm。
数据传输时间:完成传输所请求的数据所需要的时间。
为提高磁盘传输效率,软件应着重考虑减少寻道时间和延迟时间。我们最关心的应该只有两个:寻道时间;旋转延迟。

块/簇

磁盘块/簇(虚拟出来的)。 块是操作系统中最小的逻辑存储单位。操作系统与磁盘打交道的最小单位是磁盘块。 通俗的来讲,在Windows下如NTFS等文件系统中叫做簇;在Linux下如Ext4等文件系统中叫做块(block)。每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。
为什么存在磁盘块?
读取方便:由于扇区的数量比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
分离对底层的依赖:操作系统忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。

页page

操作系统经常与内存和硬盘这两种存储设备进行通信,类似于“块”的概念,都需要一种虚拟的基本单位。所以,与内存操作,是虚拟一个页的概念来作为最小单位。 与硬盘打交道,就是以块为最小单位。

扇区、块/簇、page的关系

扇区: 硬盘的最小读写单元
块/簇: 是操作系统针对硬盘读写的最小单元
page: 是内存与操作系统之间操作的最小单元。
扇区 <= 块/簇 <=page

一.磁盘结构与分区

我们在 磁盘构造和磁盘分区 一文中已经详解介绍了磁盘的组成结构与分区的概念。 这里再总结一下磁盘结构和分区的相关内容。
传统的机械磁盘的物理组成结构包括:
磁盘物理结构:
- 磁头(Head):代表有多少层盘面
- 磁道(Track)
- 柱面(Cylinder):每一个盘面上有多少圈磁道
- 扇区(Sector):一圈磁道上有很多扇区,每个扇区有512字节,第一个扇区称为引导扇区。
- fdisk 可以看到每一块盘上述结构的数量。fdisk 看到磁盘的大小 = (盘面 * 柱面 * 扇区 * 512bytes)
圆形的磁盘片,用来存储数据;
机械手臂上的读写磁头,用来读取磁盘中的数据,或者将数据写入磁盘;
主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据。
扇区(Sector)为最小的物理储存单位,且依据磁盘设计的不同,目前主要有 512bytes 与 4K 两种格式;
将扇区组成一个圆,那就是磁柱(Cylinder);
早期的分区主要以磁柱为最小分区单位,现在的分区通常使用扇区为最小分区单位(每个扇区都有其号码喔,就好像座位一样);
磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。
MBR 分区表中,第一个扇区最重要,里面有:(1)主要开机区(Master boot record, MBR)及分区表(partition table), 其中 MBR 占有 446 bytes,而 partition table 则占有 64 bytes。
GPT 分区表除了分区数量扩充较多之外,支持的磁盘容量也可以超过 2TB。
我们知道linux中的设备都被抽象为设备文件,所以磁盘在linux中也有对应的设备文件, 一般磁盘的设备文件为/dev/sd[a-p],例如第一个磁盘的设备文件名为/dev/sda,第二个磁盘的设备文件名为/dev/sdb。 而磁盘中的分区也被抽象为设备文件,磁盘分区的设备文件名通常为/dev/sda[1-128],也就是在磁盘设备文件名的基础上加上数字。
1.分区结构
磁盘通过分区,可以实现多个文件系统,多个操作系统,快速的IO。物理上分区是通过柱面来进行分割的。目前最为广泛的还是MBR分区,但是 MBR 最大只支持2T 磁盘,且只支持4个主分区,所以未来将逐渐使用 GPT 分区。 MBR 分区
MBR (Master Boot Record) 是指磁盘第一个扇区,包括引导程序、MBR分区表、MBR结束标志3部分构成,一共占用512个字节。
主引导程序(bootloader),446字节,有grub(linux),LILO,BOOTMGR等,提供给用户可以启动的操作系统,每一个分区开头也有一个引导程序部分, 通过主引导找到分区上的引导程序可以实现多系统。
分区表,64字节,每一个分区需要16个字节。MBR 只能有4个主分区,或者3+1扩展分区。
每一个分区表16字节中有4个字节来记录扇区号,每个分区最大支持2T,2^(4*8)*512byte=2T,通过4K大小的扇区可以解决。
结束标志2字节,55aa = (0101 0101 1010 1010 )
GPT 分区
GPT 分区(GUID Partition Table)全称全局唯一标识分区表,是EFI标准一部分,用来代替bios以及MBR。GPT分区使用64bit记录逻辑地址,8 ZiB个扇区大小的磁盘。
- GPT 使用逻辑区块地址(LBA 512字节一个,一个扇区大小)取代了早期的CHS寻址方式。在非传统硬盘上,例如SSD 有可能LBA 是2K/4K。
- 传统 MBR 信息存储于LBA 0,引导启动程序也在这里,GPT 头存储于LBA 1,接下来才是分区表本身。
- GPT 分区表大小不是固定的,64位Windows操作系统使用16,384字节(或32扇区)作为GPT分区表(最多128个分区=16,384/128),
- 接下来的LBA 34是硬盘上第一个分区的开始。

计算机组件显卡

回到顶部

显示适配器VGA(Video Graphics Array)也就是我们平常所说的显卡。
显卡的作用就是显示图像。
显卡分为主板集成显卡和独立显卡。如果对显卡要求不高,可以直接使用主板集成的显卡, 如果对显卡的性能要求比较高,可以购买独立的显卡插到主板扩展插槽上。
显卡

1.显存和GPU

回到顶部

显卡通过CPU的控制芯片来与CPU、主存储器等沟通。
显卡上也有内存,称为显存。
显存主要用来存放图像数据,显存容量影响屏幕分辨率与颜色深度!
假设桌面的屏幕分辨率为1024x768,1024x768分辨率中会有786432个像素,每个像素占用3bytes,至少需要2.25MBytes以上的显存容量!
考虑屏幕的刷新率(每秒钟屏幕的刷新次数),显卡的内存越大越好!
显存中用于直接显示的内存区域直接占用计算机内存的部分地址空间, 在早期386计算机中该地址空间一般位于地址0xB800-0xBC00范围,该地址空间就是内存的显示缓冲区, c程序员可以将要在屏幕上显示的内容直接写入该内存地址空间,如下图所示显示缓冲区所在的内存区域:
pc机内存区域图 对于图像尤其是3D游戏,对显卡性能要求比较高,数据的传输也是越快越好!
早期的3D运算由cpu完成,但是CPU并非完全针对3D运算设计的,系统的CPU本来就已经非常繁忙! 再加上3D运算,导致系统效率非常低下。后来显卡厂商直接将3D加速芯片集成到显卡中,也就是GPU。

2.显卡和主板的接口

回到顶部

早期显卡的接口标准为PCI,后来转为AGP,目前最新主流的显卡接口标准为PCI-Express。
这些接口标准最大的差异就是数据传输的带宽!

              标准        宽度     速度      带宽
              PCI        32bits  33MHz    133MBytes/s
              PCI2.2     64bits  66MHz    533MBytes/s
              PCI-X      64bits  133MHz   1064MBytes/s
              AGP4x      32bits  66x4MHz  1066MBytes/s
              AGP8x      32bits  66x8MHz  2133MBytes/s
              PCIe1.0x1  无      无        250MBytes/s
              PCIe1.0x8  无      无        2GBytes/s
              PCIe1.0x16 无      无        4GBytes/s
            
PCIe(PCI-Express)使用类似管道的概念来处理, 在PCIe 1.0中,每条管道可以具有250MBytes/s的带宽效能, 管道越多(通常设计到x16管道)则总带宽越高! 目前PCIe主流的版本为第三版,具有更高的带宽。各版本带宽对比如下:
              标准       1x带宽        16x带宽
              PCIe1.0   250MByte/s   4GByte/s
              PCIe2.0   500MByte/s   8GByte/s
              PCIe3.0   ~1GByte/s    ~16GByte/s
              PCIe4.0   ~2GByte/s    ~32GByte/s
            
PCIe 3.0的16x最大带宽可以达到接近32Gbytes/s的传输量!
目前3D游戏(3D game)和3D动画的流行,显卡的运算能力越来越重要,显卡的选购是非常重要!
不过如果主机是用做网络服务器, 简单的入门级显卡就够用了!
毕竟网络服务器很少用到3D与图像功能。

3.查看linux主机的显卡信息

回到顶部

一切设备在linux中都是以文件的形式存在,可以在/dev目录下找到显卡设备文件, 如果你的显卡是nvidia,一般会找到类似/dev/nvidia的文件,这就是显卡设备文件。 显卡主板的标准接口为pci,所以显卡也是标准的pci设备,可以使用lspci命令查看详细的显卡信息:

              [peter@study ~]$ lspci | grep -i vga
              00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
            
由于我的这台linux主机是虚拟机,所以可以看到虚拟显卡。 如果你的主机安装的是nvidia显卡,也可以这样查看显卡信息:
              [peter@study ~]$ lspci | grep -i nvidia
            

4.显卡和显示器的接口

回到顶部

上面提到的PCI接口是显卡和主板之间的连接接口标准,那么显卡和显示器之间是怎么连接的呢?
目前主要的连接接口有:
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相似的,可以同时传输声音与影像。这种接口目前市面上相对较少!

initroot编辑整理,转载请注明www.initroot.com