0、计算机概论

163 阅读14分钟

一、电脑:辅助人脑的工具

计算机其实就是:接受用户输入的命令和数据,经由中央处理器的算术与逻辑单元运算处理后,产生或存储成有用的信息。

1.1 电脑硬件的五大单元

通过观察我们的台式电脑我们可以直观的分析出如下几个组成部分

  • 输入单元:键盘、鼠标、触控板等;
  • 主机单元:这个就是系统单元,被主机箱保护着,里面包含了主板、CPU和内存等,主板上面其实还有很多的硬件接口和适配卡,比如网卡、磁盘阵列卡还有显卡等,尤其是显卡,对于玩3D游戏非常重要,主机箱内的大多设备都是通过主板连接在一起,主板上面有个连接沟通所有设备的芯片组,这个芯片组可以将所有单元的设备连接起来,让CPU可以通过这些设备执行命令;
  • 输出单元:屏幕、打印机等;

其中最重要的就是我们的主机单元了,我们主要通过输入设备来将数据输入到主机中,主机中最重要的就是一块主板,上面安装了中央处理器(CPU)以及内存、硬盘还有一些适配卡设备。

中央处理器(CPU)是一个具有特定功能的芯片,里面含有指令集,如果你想要让主机实现什么特殊功能,就得参考这块CPU是否有相关功能的指令集才可以。

CPU的主要工作在于管理和运算,因此CPU内又分为两个主要单元,分别是:算术逻辑单元控制单元,前者主要负责程序运算与逻辑判断,后者主要协调周边组件与各单元间的工作。

CPU中计算的数据都是从内存来的,内存的数据则是通过输入单元传输进来的,CPU处理完数据后也必须先写回内存,最后才从内存传输到输出单元。

综上所述,电脑的五大组成单元分别如下::

  • 输入单元
  • 输出单元
  • 算术逻辑单元(CPU中包含)
  • 控制单元(CPU中包含)
  • 内存

基本上数据都是通过内存流出去的,至于流进内存还是流出内存则是由CPU发出的指令控制的,CPU实际要处理的数据则是完全来自与内存的

1.2 CPU的架构

CPU内部已经含有一些微指令,我们所使用的软件都要经过CPU内部的指令集来完成,这些指令集又主要分为两种,分别是精简指令集(RISC)复杂指令集(CISC)

精简指令集架构(Reduced Instruction Set Computer)

指令集较为简单,每个指令运算时间短,完成的操作也很简单,指令的执行性能较佳,但是复杂的事情,需要多个指令完成。

常见的RISC指令集的CPU:

  • Oracle公司的SPARC系列:常用于学术领域的大型工作站中,包括银行金融体系的服务器;
  • IBM公司的Power Architecture(PowerPC):例如Sony公司的PS3
  • ARM公司的ARM CPU系列;常使用的各品牌手机、PDA、导航系统、网络设备(交换机、路由器)等,世界上使用范围最广的CPU架构;

ARM 是最流行的处理器,由于其低功耗和合理的性能,特别适用于便携式设备。与其他处理器相比,ARM 具有更好的性能。ARM处理器基本上由低功耗和低成本组成。使用 ARM 进行快速高效的应用程序开发非常容易,这也是 ARM 最受欢迎的主要原因。

复杂指令集架构(Complex Instruction Set Computer)

指令集的每个小指令可以执行一些较低级的硬件操作,指令数目多且复杂,每条指令的长度不相同,每条指令花费时间较长,但单个指令处理的工作较为丰富。

常见的CISC指令集架构的CPU(主要是x86架构):

  • AMD
  • Intel
  • VIA 这些x86架构的CPU被大量用与个人计算机,因此个人计算机常被称为x86架构电脑。

为什么叫做x86架构?因为最早的那块Intel研发出的CPU代号称为8086,后来又依次开发出80826、80836等,因此这种架构的CPU就被称为x86架构

1.3 电脑分类

  • 超级计算机:运行速度最快的电脑,主要用于需要有高速计算的项目,如国防军事、气象预测、太空科技等;
  • 大型计算机:通常也具有数个高速CPU,功能上虽不及超级计算机,但也可以处理大量数据与复杂计算。例如大型企业的主机、全国性的证卷交易所,或大型企业的数据库服务器等;
  • 迷你计算机:科学研究,工程分析等;
  • 工作站:针对特殊用途设计的电脑,在个人电脑性能还没有提升到目前的状况之前,工作站电脑的性能和价格是所有电脑中最佳的,因此在学术研究比较常见;
  • 微电脑:个人电脑。

1.4 电脑上的计算单位(容量、速度等)

容量单位

比特(bit):0/1这种的就是比特,但单位太小了,所以存储数据时每份简单的数据都会使用8个位(bit); 1Byte=8bit 1KB=1024Byte 1MB=1024KB

速度单位

CPU的命令周期常使用MHZ或者是GHZ之类的单位,这里的HZ就是"次数/秒"的意思。 容量单位使用的二进制的方式,速度单位则使用十进制,如1GHZ=100010001000HZ 在网络传输方面,由于网络使用的位(bit)为单位,因此网络常使用的单位为Mbit/s,即每秒多少Mbit

如:20M速度 => 20Mbit/s => 20000Kbit/s(速度单位则使用十进制) => 2500KB/s => 2.5MB/s

二、个人电脑架构与相关设备

以2015年Intel的主板架构来看,因为主板上连接各个单元的芯片组的设计优劣,就会影响性能。早期的芯片组通常分为两个网桥来控制:

  • 北桥:负责连接速度较快的CPU、内存及显卡等;(由于北桥最重要的是连接CPU和内存,所以目前的主流架构中,将北桥的内存控制器整合到了CPU中)
  • 南桥:负责连接速度较慢的设备接口,包括硬盘、USB设备、网卡等。

2.1 执行脑袋运算与判断的CPU

x86个人电脑的CPU目前主要还是Intel和AMD,且主流的CPU都是双核以上架构。原本的单内核CPU仅有一个运算单元,多内核则是在一块CPU中嵌入了两个以上的运算内核,简单说就是一个物理的CPU外壳中,含有两个以上的CPU单元。

不同型号的CPU具有不同的针脚(CPU上面的插脚),能够搭配的主板芯片组也不同,所以换CPU时也要考虑主板支持的CPU型号。

CPU的工作频率:外频和倍频

外频:指的是CPU与外部组件进行数据传输时的速度; 倍频:指的是CPU内部用来加速工作性能的一个倍数;

两个相乘才是CPU的频率速度,例如Intel Core 2 E8400的频率为3.0GHZ,外频时333MHZ,因此倍频就是9倍(3.0GHZ=3000MHZ,3000/333=9)

超频:将CPU的倍频或外频通过主板提供的设置功能更改为更高频率的一种方式,因为倍频一般在出厂时已经设置好且不能更改,所以通常被超频的是外频,例如3.0GHZ的CPU,如果想超频,可以将外频由333MHZ调整为400MHZ(4/3=1.333),这样主板各个组件的运行频率会被提高到额定频率的1.333倍,不过虽然CPU会达到3.6GHZ,但却因为并非正常速度,而导致宕机等问题;

Intel已经自动进行超频,如果使用cpu-z查看CPU频率,发现频率是一直自动变化。

32位与64位CPU与总线的"位宽"

CPU的数据都来自内存,如果内存能提供给CPU的数据量越大的话,整体系统性能也会比较块。怎么知道内存能提供的数据量呢?

这得借由CPU中的内存控制芯片和内存间的传输速度"前端总线速度(Front Side Bus, FSB)"来说明。

与CPU的频率类似,内存也有其工作频率,这个频率的限制来自于CPU中的内存控制器决定。CPU内置的内存控制芯片对内存的工作频率最高可达1600MHZ,一般每个时钟周期能传输的数据量大多约为64位,所以CPU可以从内存中取得的最快带宽就是 1600MHZ64bit=1600MHZ8B=12.8GB/s

因为北桥整合到了CPU内部的设计,CPU得以单独与各个组件进行通信。因此每种组件与CPU的通信具有很多不同的方式。例如内存使用系统总线带宽来与CPU通信,而显卡则通过PCI-E的序列信道设计来与CPU通信。

2.2 内存

个人电脑的内存主要组件为动态随机存取内存(Dynamic Random Access Memory,DRAM),随机内存只有在通电时才能记录和使用,断电后数据就消失,因此也称这种RAM为挥发性内存。

DRAM根据技术的更新又分了好几代,使用比较广泛的有SDRAMDDR SDRAM两种,DDR是所谓的双倍数据传输速度。

多通道设计

由于CPU所需所有的数据都必须存放在内存,所以内存的数据位宽越大越好,但传统的总线位宽一般大约仅为64位,为了加大位宽,芯片组厂商就将两个内存集合到一起,这样就可以达到128位,这就是双通道的设计理念,服务器所需内存速度更快,因此除了双通道之外,中级服务器也经常提供三通道,甚至四通道的内存环境。

DRAM和SRAM

个人电脑除了内存之外,还有类似内存的存储结构存在,那就是CPU内的二级高速缓存。

CPU数据由内存提供,但是内存到CPU还是得通过内存控制器,如果某些常用的数据和程序放置到CPU内部的话,就不需要CPU去内存读了,对性能是非常不错的。

因为二级缓存在CPU内部,因此这个L2内存的速度必须要与CPU频率相同,但使用DRAM是无法做到的,此时就需要SRAM(Static Random Access Memory ,SRAM,静态随机存取内存)

只读存储器(ROM)

主板上面的组件非常多,每个组件都有对应的参数具有可调整性,比如CPU与内存的频率等,这些是被记录到主板上面一个称为CMOS的芯片中的,这个芯片借助额外的电源来使用记录功能(主板上的纽扣电池)

比如BIOS(Basic Input Output System)是一个程序,这个程序是写死到主板上面一个存储芯片中,这个存储芯片在没有通电的情况下也能够记录数据,这就是只读存储器(Read Only Memory, ROM)。

ROM是一种非易失性的存储。

BIOS 对电脑系统非常重要,因为它掌握了系统硬件的详细信息与启动设备的选择等,现在的BIOS通常是写入闪存(flash)或EEPROM存储硬件中的。

2.3 显卡

显卡又称VGA(Video Graphics Array),它对于图形影像的显示扮演关键的角色。图像影像的显示重点在于分辨率与颜色深度,每个图像显示的颜色都会占用内存,因此显卡上面会有集成内存并被称为显存,这个显存的容量将会影响屏幕分辨率与颜色深度。

除了显存之外,由于3D游戏的流行,显卡的计算能力也需要提升,早期的3D运算任务由CPU完成,但是CPU并不太适合做3D运算,后来显卡厂商直接在显卡上面嵌入了一个3D加速的芯片,这就是所谓的GPU。

显卡与主板的连接接口

显卡主要也是通过GPU的控制芯片来与CPU、内存等通信。显卡也是需要高速运算,所以数据传输也是越快越好。因此显卡的规格也由早期的PCI升级为AGP,AGP升级为PCI-Express

显卡与电脑屏幕的连接格式

  • D-Sub(VGA)接口
  • DVI
  • HDMI:HDMI可以同时传输影像与声音,因此被广泛的使用与电视屏幕中。

2.4 硬盘与存储设备

电脑系统上的存储设备有:硬盘、软盘、MO、CD、DVD、磁带机、U盘、蓝光光驱、大型计算机的局域网存储设备(SAN和NAS)等。

硬盘是类似同心圆的方式构成的。且是被设计称一小块的扇区的方式。原本硬盘的扇区都是512B的大小,但是由于硬盘容量越来越大,绝大部分硬盘已经使用了4KB大小的扇区,因为扇区的设计不同,因此在磁盘的分区方面,目前有旧式的MBR模式,以及较新的GPT模式。

传输接口

为了提高磁盘的传输速度,磁盘与主板的连接接口也式经过了多次的改良。

传统的磁盘接口包括有:SATA、SAS、IDE与SCSI等。

SATA

目前的SATA已经到了第三代,主流的都是使用SATA3.0这个接口,速度可达600MB/s

因为SATA接口传输时,通过数据算法的关系,当传输10位编码时,仅有8位为数据,其余2位为校验用,因此带宽计算上面,使用的换算(bit转B)为1:10.

个人电脑一般还是以SATA为主

固态硬盘(Solid State Disk, SSD)

传统硬盘需要驱动马达去转动碟片,这会造成很严重的磁盘读取延迟,如果数据放置的比较分散(扇区分布比较广又不连续),那么读取的延迟就会更加明显。

所以后来厂商就拿闪存去制作存储设备,这些设备没有磁头和碟片,都是闪存,只是跟传统的机械硬盘(Hard Disk Drive, HDD)不同,这些设备被称为固态硬盘(Solid State Disk, SSD)。

现在有个特殊的度量单位,叫每秒读写操作次数(Input/Output Operations Per Second ,IOPS),这个数值越大,代表可操作次数较高,性能越好。

win查看硬盘接口。① cmd输入"diskpart";② list disk;③ select disk 0;④ detail disk

image.png

2.5 操作系统

早期让电脑执行程序,需要参考一堆硬件的功能参数,且需要学习机器语言。

操作系统呢将所有的硬件都驱动,且提供一个软件的参考接口给工程师。

操作系统内核

操作系统(Operating System, OS)其实也是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。总之,硬件的所有操作都必须通过操作系统来实现。这就是操作系统内核。

内核程序非常重要,因此操作系统内核程序是放置到内存当中的区块是受保护的,并且启动后就一直常驻在内存。

系统调用(System Call)

操作系统提供的一套应用程序编程接口。