现代计算机系统的硬件结构

现代计算机系统的硬件结构

          

     

现代计算机系统中的主要硬件是CPU内存IO设备总线(bus),因为它们共同实现了冯·诺依曼结构的主要功能。需要明确这几种硬件不一定完全是物理上互相独立的实体,下面先简单描述它们的功能和结构:

1) 总线:用于在多个硬件之间或多个计算机系统之间实现标准化的连接与数据传输的系统。通常认为总线指硬件,但总线也可泛指相关的标准、协议、软件等。计算机系统中通常包含多种总线,同一种总线还可能有很多个(条)。上述其他硬件通过多种总线互连,它们内部的各个模块也可能通过多种总线互连,而不同总线之间可通过桥片(bridge)这种硬件互连;

2) 内存:配合内存控制器(memory controller)实现冯·诺依曼结构中的内存。内存具备存储能力,其通过内存总线直连内存控制器,再由内存控制器统一处理按内存地址读写的请求。通常将内存和内存控制器统称为内存系统(memory system)。内存可被看作独立的硬件实体,内存控制器则通常是集成在其他硬件中的集成型内存控制器(IMC)

3) CPU:实现冯·诺依曼结构中的处理单元控制单元,但现代计算机系统中的CPU还会集成其他功能,比如内存控制器、总线控制器等。每个CPU通常都是独立的硬件实体,但在一些新型计算机系统中,CPU也被集成在片上系统(SoC)中;

4) IO设备:基本上等同于冯·诺依曼结构中的IO设备;

现代计算机系统在早期使用南北桥结构组织上述硬件,其特点是使用北桥南桥两个桥片。北桥经系统总线直连CPU后分出相对高速的内存、PCI等总线,南桥经总线直连北桥后分出相对低速的IDE等总线,这些总线除内存总线外基本都用于连接各种IO设备。在今天的计算机系统中,南北桥的功能已逐步整合进CPU,整个演化历程大致如下(参考上图):

1) CPU-GPU-北桥-南桥结构:这时内存控制器被集成在北桥中,IO设备GPU通过总线连接北桥;

2) CPU-北桥-南桥结构:这时GPU被集成在北桥中,更高速的PCIe、SATA等总线技术出现;

3) CPU-弱北桥-南桥结构:这时内存控制器被集成在CPU中,北桥的功能被弱化;

4) CPU-南桥结构:这时GPU被集成在CPU中,北桥的部分其他功能被集成进南桥,北桥基本消失;

5) SoC结构:这时南桥基本消失;

下文会继续展开讨论与上述硬件有关的概念。而之后的讨论会主要基于本文中的各种与硬件有关的概念,因为使用这些前置概念能方便于之后的讨论。但之后也会继续使用之前文章中的概念。

 

总线

计算机系统中的不同硬件需要互相通信,若用专用线路两两连接可能互相通信的硬件,则整体线路会很复杂,并且设计硬件时就要确定该硬件可能连接哪些硬件,这会导致后期不方便扩充硬件。为解决这些问题,各厂商会共同制订总线标准,于是设计硬件时就只需保证该硬件能正确接入总线,而无需设计各种专用线路,像PCI标准就由100多家企业共同制订。一套总线标准可能有多种实现,像实现PCIe标准的总线就都是PCIe总线。总线标准通常有如下层次(不一定全部包含):

1) 机械层:接口的外形、尺寸、信号排列、连接线的长度范围等;

2) 电气层:信号描述、电源电压、电平标准、信号质量等;

3) 协议层:信号时序、握手规范、命令格式、出错处理等;

4) 架构层:硬件模型、软件架构等;

根据总线的数据传递方向,可将总线分为如下几类:

1) 单工总线:数据只能从一端传递到另一端,不能反向传递;

2) 双工总线:数据能在两个方向传递。具体又包括如下两种:

2.1) 半双工总线在同一段时间内数据只能从一端传递到另一端,不能反向传递;

2.2) 全双工总线在同一段时间内数据能在两个方向传递;

根据总线使用的信号类型,可将总线分为如下几类:

1) 并行总线同时传输多个基本数据单位。比如PCI总线、IDE总线、DDR3总线;

2) 串行总线逐个传输单个基本数据单位。比如PCIe总线、SATA总线、USB总线;

根据总线硬件在计算机系统中的物理位置,可将总线分为如下几类:

1) 片上总线:互连芯片内部的各个模块。比如ARM的AMBA系列总线;

2) 内存总线:互连内存内存控制器。比如DDR2总线、DDR3总线;

3) 系统总线:互连CPU和桥片。比如Intel的FSB和QPI、AMD的HyperTransport;

4) 设备总线:互连桥片和IO设备,或互连CPU和IO设备。比如PCIe总线、USB总线;

 

内存

现代计算机系统中的内存系统都是随机存取内存(random-access memory,RAM)随机存取(random-access)指读写不同内存地址所需的时间与内存地址无关,该特性能影响到整个计算机系统的设计,包括高级语言程序。RAM包含如下两类:

1) SRAM(静态RAM):静态指不断电就能保持数据。特点是速度较快、成本较高、单位面积的容量较低;

2) DRAM(动态RAM):动态指不断电也要通过定期的刷新(memory refresh)保持数据。特点是速度较慢、成本较低、单位面积的容量较高。现代计算机系统的内存一般采用该方案中的DDR-SDRAM(双倍数据速率的同步型DRAM)

下面给出几种其他类型的存储器,它们不被作为内存使用,但经常被用于实现其他功能:

1) ROM(只读存储器):其特点是只读不可写,但断电后数据不丢失

2) PROM(可编程的ROM):其特点是允许写入(编程)一次。写入是通过熔断熔丝实现的永久写入;

3) EPROM(可擦除可编程的ROM):其特点是芯片上有个小窗口,用强紫外光照射窗口能擦除数据;

4) EEPROM(带电可擦除可编程的ROM):其特点是能直接用电路信号擦除数据,成本比较高;

 

CPU

对于现代计算机系统中的CPU,冯·诺依曼结构中的控制单元通常由相对独立的模块实现,之后也称该模块为控制单元。控制单元在执行指令时可通过发出控制信号建立数据通路(data path),数据通路能够完成数据的处理和计算。上图是建立数据通路执行加法运算的例子,控制信号能从固定的一组寄存器中选择2个寄存器作为ALU的2个输入数据、选择1个寄存器用于存放ALU的输出数据,并控制ALU执行加法运算。可认为上图这种承载各种数据通路的模块对应于冯·诺依曼结构中的处理单元,需要注意的是人们也经常将该模块本身称为数据通路,这时数据通路就基本等同于冯·诺依曼结构中的处理单元。

目前的计算机系统可根据CPU的指令集特征分为RISC(精简指令集计算机)CISC(复杂指令集计算机)。之前的文章提到过1960s到1970s曾是微程序时代,微程序时代结束后,UCB的David Patterson等于1980年左右设计出指令数目很少且使用硬布线控制的名为RISC-I的CPU,并讽刺性的将当时的VAX计算机称为CISC,这就是RISC/CISC的历史,而RISC-I经过三十年的迭代成为了著名的RISC-V开源项目。总之RISC只保留最常用的基本指令,CISC反之。下面给出几类目前流行的指令集:

1) x86系列:属于CISC。其拥有数十年历史,基本垄断整个服务器和PC市场。通常认为发布于1978年的Intel 8086的指令集是首个版本的x86系列指令集。目前使用该指令集的CPU主要由AMD和Intel设计制造。x86系列指令集的最大特点是向前兼容,目前的x86-64指令集CPU仍然支持8086模式,但这种保持向前兼容的设计也使x86系列指令集越来越庞大;

2) ARM系列:属于RISC。基本垄断整个智能手机市场。ARM本身也是公司,苹果公司曾持有其40%以上的股份;

3) AVR系列:属于RISC。主要用于低性能的嵌入式设备。著名的开源电子原型平台Arduino就使用AVR;

 

IO设备

现代计算机系统中的IO设备种类丰富,包括键盘、显示器、打印机等能与现实世界交互的传统IO设备,也包括GPU、网卡等相对新型的IO设备,此外硬盘、闪存等外存设备通常也被作为IO设备管理。通常外存设备是必须的,因为开机后断电易失的内存通常都要从非断电易失的外存上拷贝数据,进而确保计算机系统的正确运行。下面简单介绍几种常用的IO设备:

1) 硬盘:硬盘作为一种外存设备,其优点是存储密度高、单位容量成本低,缺点是相对于内存速度太慢。硬盘中通常包含同轴垂直放置的多个盘片(platter),每个盘片的上下两个盘面(surface)都有用于存储数据的磁性材料,每个盘面都被划为多个圆环形的磁道(track),每个磁道又被划为多个扇形的扇区(sector),扇区是容量相等的最小存储单位。通常每个盘面都有一个独立的读写头,读写头只能在一个方向上移动,但所有盘片都是匀速旋转的,所以读写头能保证访问到所有扇区。硬盘中的硬盘控制器能控制读写头的移动、检查与纠正数据错误,剔除物理坏道等,并且统一向外界提供硬盘的功能;

2) 闪存:闪存作为一种外存设备,其优点是速度快并且尺寸小,缺点是成本高并且数据不如硬盘稳定。常见的闪存设备有U盘、固态硬盘(SSD)、SD卡等。从定义上闪存属于EEPROM且两者的结构相似,但实际的EEPROM产品并不适合作为外存,所以通常不认为闪存是EEPROM。闪存中的闪存控制器能统一向外界提供闪存的功能;

3) GPU:主要用于图形的渲染和计算,也常被用作其他类型的高性能计算。事实上GPU本身就是指令集比较特殊的CPU,而且目前的GPU计算能力很强,完全可以把GPU看作是与计算机系统互连的另一个计算机系统;

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部