在上期,我们了解了,16位处理器8086和80286的几个特点:
8086和80286能够使用的内存最大数量分别为1MB和24MB。
方老师小时候曾经思考过一个问题:
假设某游戏的屏幕分辨率为640*480,颜色为256色,需要占用多大内存呢?
答案是:640*480*log2(256)/2 = 307200Byte,约300KB。
如果我们想展示一张1024*768,64K色的图片,需要的内存量为
1024*768*log2(64K) / 2 = 1.5MB。显然,这个数字超过了8086处理器能够使用的内存极限。即使在80286下,也会对系统资源造成很大的压力。
因此,我们如果期望计算机具有更强的处理多媒体信息的功能,需要计算机具备更强的寻址能力。
在这样的背景下,1985年,Intel对处理器进行了一次大的革新,设计出了80386。80386的内存位宽为32位,地址线宽度也是32位。这意味着,80386每次能够读写4字节内存,而可使用的内存地址空间理论上可达2的32次方(4GB)。
80386驱动了计算机系统的一系列变革:
首先是内存从SRAM进化到了DRAM。
在上期,我们提到,8086的内存为静态RAM(static RAM,SRAM),其工作频率与CPU一致,接收到CPU地址总线上的地址,以及读写指令后,可以立即完成读写操作。这种内存的优点是速度快,但成本高。
如图,SRAM的每个bit需要6个MOSFET晶体管实现。可想而知,其成本,芯片面积和功耗都会比较高。
而DRAM (Dynamic RAM)的每个bit实现如下图:
图中,每个bit由一个MOSFET晶体管和一个电容构成,MOSFET管的栅极和漏极分别连接到行选择线和列选择线。
整个DRAM芯片是多个bit构成的一个矩阵:
图中可见,DRAM内部有很多行与列,行与列的选择实际上是对行地址和列地址的译码,CPU需要向内存发送行地址(Row Address),列地址(Column Addesss)和读写命令后,才能读取/写入数据。由于DRAM的电路结构很简单,读取过后电容中的电荷会消失,因此读取完后需要对电荷重新充电。
上期中,我们提到过,8086处理器访问SRAM的时候,需要一个锁存器(如74HC373)对8086的前端总线信号进行锁存,把前端总线上的地址和数据转换为SRAM的地址和数据信号,如图所示:
类似地,80386也外挂了这样一颗芯片,它叫做内存控制器:
内存控制器可以将CPU在前端总线(Frong Side Bus,FSB)上发送的地址与数据进行锁存,并转换为行地址、列地址和数据,与DRAM进行交互访问。大家给它起了个容易记住的名字:北桥(Northen Bridge)。
有了北桥,CPU就可以外挂更多廉价的DRAM,从而可以运行Windows一类的图形化操作系统,使得更多人可以较为容易地使用计算机。
北桥芯片的另一个功能,是将CPU的前端总线转化为PCI总线。PCI总线是外设组件互连(Peripheral Component Interconnect)的缩写,可以支持32位地址和32位宽度的数据,其标准传输速率从最初的133MB/s一直演进到PCI-X的2.1GB/s。PCI总线上可以扩展各种外部设备,如下图所示:
那么,软盘、鼠标、键盘等低速IO设备接在哪里呢?
上期中讲到的8086 CPU需要一堆各种IO芯片作为辅助,才能够构成一个完整的计算机系统。这些IO芯片被集成到了一颗芯片里面,并挂在PCI总线上,它叫做IO Hub,俗称南桥。
当然,在现代(2010年以后)的计算机系统中,北桥被吸收进了CPU,CPU与南桥之间的接口也从PCI演进到了PCIe。
同时,其他外挂的RAM、SSD盘等也直接连在CPU上,如下图所示:
它实际上是这个家伙:
这种演进,也带来了对内存子系统的新的挑战。
请看下期。
本期留一个疑问:图片上的服务器是谁家的?