存储和服务器的三大件③

存储和服务器的三大件

存储和服务器的三大件②

本文为系列第三篇!

解决了启动问题之后,随着三大组件的CPU和内存高速发展,总线上的IO设备速率就跟不上了另外两大组件的速率了。

为了解决这个问题,1987年康柏(Compaq)公司提出了一个解决办法,将低频率的I/O设备从系统总线中剥离出来,在总线与I/O设备之间架设一个高速的缓冲设备,用于缓冲高速频率的CPU、内存和低频率的I/O设备,这个缓冲设备就是南桥芯片的前身,南桥芯片就是据此发展而来,虽然南桥芯片在今天已经是被淘汰的组件,但是在当时是具有进步意义的重要发明,是计算机体系结构进步的重要事件。

架构如下图所示:

该高速缓冲设备的系统总线端保持和CPU、内存一样的时钟频率,在I/O设备端保持和I/O设备一样的时钟频率。这中间的时钟频率差倍就依靠该高速缓冲设备在内部进行高速缓冲。经过这种看似简单的组合,使得高速的CPU、内存组件摆脱了低速I/O设备的束缚,能够提高整体的时钟频率,提升系统整体的性能。CPU内部时钟是由锁相环提供;锁相环的输出是一个振荡器,它的频率由外部控制信号决定;外部控制逻辑首先将锁相环输出分频(除以“倍频”倍),此后与参考频率(外频)比较,如果振荡频率过高则降低输出频率,反之提高输出频率,直到锁相环的输出频率等于倍频*外频为止另外振荡器通常不用非线性元件产生谐波再滤掉实现,因为这样做产生的高次谐波幅度太小,基本没法用。用最基本的锁相环就行了。

在1980年之前,Intel公司所生产的4004、8008、8080、8086/8088系列微处理器的时钟频率均不高。4004系列处理器是世界上第一块4位微处理器,采用P沟道MOS微电路,拥有2300个晶体管,功能相当有限,速度很慢。速度慢到什么程度呢?当时,4004的时钟频率是108KHz,每秒执行6万条指令(0.06 MIPs)。微处理器4004实物图如下所示:

在这之后,Intel 继续基于P沟道MOS微电路推出的8008处理器是第一个8位微处理器。由于P沟道MOS微电路天生缺陷,Intel 在1973年8月推出推出基于N沟道MOS微电路的8080处理器,Intel 8080主频2MHz,运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPs。之后1979年Intel生产出16位微处理器Intel8086/8088系列,同时还生产出与之相配合的数学协处理器i8087(X86)。Intel 8086/8088系列芯片上有2.9万个晶体管,采用HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。8086有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据。可寻址的内存空间为1MB。8088可称为准16位微处理器,它的内部寄存器,运算部件及内部数据总线都是按16位设计的,但外部数据总线只有8条。推出8086的主要目的是为了与当时已有的一套Intel外部设备接口芯片直接兼容使用。

1981年8月,IBM推出了IBM PC的第一个型号5150型。这不是第一台个人计算机,因为市场上已有各种8位微型计算机,如Apple II,TRS-80和各种CP/M机器(CP/M是比DoS更古老的系统)。甚至在这些之前还有其他更原始的机器,可称为个人计算机。之所以把IBM PC单独拎出来说明,是因为IBMPC和大多数其他机器之间的区别在于它的CPU。该机器使用8088微处理器,并搭配MS-DOS 1.0(IBM获得授权,将其改编为PC DOS),从而开创了全新的微机时代。在但是,这款机器的8088 CPU采用16位架构和20位地址总线,可以处理高达1MB的内存。设计PC平台时,640kB保留用于RAM,其余用于扩展板(如视频卡)和ROM。此外,IBM PC有扩展插槽,可以在其中插入视频卡,软盘控制器卡,串行和并行接口卡,当然还有更多RAM。IBM PC典型配置至少有64kB的RAM和两个软盘驱动器。他们将运行微软销售的PC-DOS 1.0操作系统,此外,微软还出售了同一台机器上的ROM BASIC。在PC-DOS上运行的BASIC解释器将使用ROM中的大部分代码,因此DOS程序非常小。

PC-DOS(MS-DOS的IBM OEM版本)与CP/M非常相似,使CP/M应用程序的移植相对容易。此外,Intel 8088虽然与8080不兼容,但移植缺非常容易。例如,8080有三组两个8位寄存器,每个寄存器可以作为一个16位寄存器一起使用。(8位B和8位C寄存器将构成一个16位BC寄存器)。DE和HL也是如此。8088和8080在BX(BH和BL),CX和DX寄存器具有完全相同的结构。此外,8088支持与8080相同的状态标志(包括奇偶校验),因此从8080移植到8088相对容易。这有助于软件公司在MS-DOS版本中提供CP/M应用程序。

现在到了内部架构。我们说8088 CPU运行的时钟频率是近10MHz左右,而我们的总线却在以4.77MHz的时钟频率运行,很明显CPU处理器与总线之前的时钟频率出现差异,为了保持针对总线的兼容和运行,于是CPU处理器就引入了Cache或Buffer的概念,也就是缓存器,用于缓冲高速CPU与总线之间的差异时钟频率。

在该款机器中,8088 CPU(以4.77MHz的时钟频率运行,保持和总线一直的时钟频率)具有8位外部数据总线和20位地址总线。但是,8个地址位与数据总线却在相同的引脚上复用。在整个总线周期内,需要一个8位锁存器来锁存地址位。在主板上放置几个支持芯片,例如8254定时器,8259中断控制器,8237 DMA控制器,支持键盘和PC扬声器的芯片以及许多用作复用逻辑的简单TTL IC。主板包含一些RAM,ROM和一个用于8087浮点协处理器的空插槽。扩展总线和内部系统总线基本上是同一个。扩展总线上的大多数信号直接对应于CPU上的信号,其间只有缓冲器或锁存器。

这些主板上放置的8254定时器,8259中断控制器,8237 DMA控制器以及许多用作复用逻辑的简单TTL IC,主要用于CPU、内存与 I/O设备交互的一个控制媒介,通过这些设备的校时与中断控制复用CPU的引脚地址总线,将来自CPU 的数据流和控制流和来自内存的数据流传送到I/O设备上。BIOS ROM(完全独立于BASIC ROM)的大小为8kB。主要用于低级初始化和开机自检。每次启动机器时,它都会对所有RAM内存执行简单但耗时的测试。在使用RAM之前,必须对8237上的一个DMA通道进行编程以执行DRAM刷新。检测和执行其他ROM中的代码。此外,BIOS ROM将第一张软盘的第一个扇区加载到地址0000:7c00的RAM中并跳转到它执行相同系统启动。同时,BIOS还会和中断控制器进行交互,BIOSROM中存储了用作设备驱动程序地址的设备中断号,每个设备都有自己的软件中断号。在启动时,BIOS ROM将设备中断号地址信息加载到内存中,CPU就可利用在内存中的设备中断号地址信息和中断控制器进行交互,传输的数据流和控制流到I/O设备。

之后,在总线上添加了硬盘控制器卡,硬盘控制器卡可以有自己的BIOSROM,也可以扩展原始BIOSROM的功能(将额外的磁盘添加到机器)。有了硬盘控制器卡之后,DOS系统就可以放置到硬盘中,当时,硬盘的基本大小为10MB。内存标配为256kB,可以扩展到640kB。它仍然具有ROM BASIC,但只要硬盘仍可启动,ROM BASIC的系统就永远不会运行。同时硬盘控制器卡有自己的BIOS,与主BIOS分开。而相应的,PC-DOS 2.0添加了对硬盘和子目录的支持。

随着硬件技术的发展,该类组合架构中,CPU可以支持更多的数据总线和位地址总线,也就意味着CPU可以支持更多的内存空间,此外增加了第二个DMA控制器和第二个中断控制器,因此该架构也具有更多的DMA通道和更多的IRQ线。这些多余的控制器和卡需要更多的总线进行连接,因此扩展总线成为常态,在当时,该类扩展总线成为PC / AT扩展总线。PC / AT扩展总线基本上与CPU总线完全相同。但是,有一些逻辑可以将16位访问分成两个连续的8位扩展卡8位访问。此扩展总线后来称为ISA总线。

除了不同的CPU,16位扩展总线和高容量软盘驱动器之外,新一代的架构与其前代产品的区别在于实时时钟芯片。每次在旧架构上启动MS-DOS时,我们都需要手动输入当前日期和时间,以便正确设置文件时间戳。在之后的架构中,设计了一个小型电池供电芯片。该芯片帮助MS-DOS启动后从该芯片读取当前的时间,节省不必要手动时间设置。除了实时时钟之外,该芯片还有一个小型RAM,可以存储配置信息,例如软盘驱动器的类型和硬盘类型。由于该芯片需要在主板上电时依靠电池供电,因此必须是低功耗芯片,这意味着这是CMOS类型芯片。在当时,CMOS不用于PC内的常规数字电路,仅用于特殊的低功耗电路,如数字手表和袖珍计算器。因此,这个包含实时时钟和配置RAM的芯片被称为CMOS芯片。

之后,架构继续进行优化组合,主板上的许多所需芯片(例如8254定时器,两个8259中断控制器和两个8237 DMA控制器以及大量的复用逻辑)被组合成一些更大的芯片。这极大地降低了PC主板的成本。PC芯片组诞生了。然而,许多这些芯片组需要在软件中配置。必须将此芯片组初始化代码添加到BIOS ROM中。随着时间的推移,这种芯片组初始化将变得越来越复杂,需要更大的主板和特定代码块。

同时,CPU频率变更更强大。由原先的兼容总线的4.7MHz到6MHz再到8MHz、12MHz和高达25MHz。在内存中,该总线几乎可以保持和CPU处理器的Cache相同的时钟频率运行和技术更新,当时ISA总线在12和25MHz时只能运行8MHz。因此,为了保证速率和整体架构系统的告诉运行,必须通过总线桥将扩展总线(以8MHz运行)与内部系统总线(以16MHz运行)分开。这样的架构对于系统来说,总线桥必须在32位内部总线和16位ISA总线之间进行转换。这种总线桥也将是PC芯片组的组件。这些芯片组后来演变成著名的北桥、南桥和超级芯片。

后来,ISA总线对于图形工作来说变得非常慢。作为替代的解决方案,VLB(VESA本地总线)被引入。这基本上是连接到主存储器的本地CPU总线的接口。VLB(VESA本地总线)只是个短暂的过渡,到1993年推出了PCI。PCI是32位总线,时钟频率为33MHz(64位版本和66MHz版本也存在,但这些并不常见)。这提供了8倍的ISA吞吐量。此外,PCI提供了配置接口,因此BIOS或操作系统可以为每个卡分配地址而不会发生冲突。这对ISA来说是一次巨大飞跃,PCI情况下,每个设备都负责自己的地址解码。许多设备都自己的寄存器,因此可以(手动)配置不同的I / O地址。然后,用户负责配置所有寄存器地址而不会发生地址冲突(并且没有中断和DMA冲突)。在这期间,ISA总线和PCI总线共存长达10年之久。

同样CPU也推陈出新。它的总线比80486复杂得多,因此必须使用专用芯片将其连接到内存和IO设备。也就是90年代起,该架构中开始使用著名的北桥、南桥芯片组。北桥连接CPU与内存和南桥芯片。南桥将系统与PCI总线连接起来。它还包含ATA接口和ISA桥接器。Superio芯片包含板载慢速外设接口,如软盘、串口和键盘等设备。

后来随着CPU、内存以及IO的发展,出现了SATA,PCIe,AMD64等互联技术。ATA接口将被串行ATA(SATA)取代,PCI总线将被替换为PCIe(PCI总线的串行变体,具有几乎完全相同的软件接口)。虽然这两种技术在2003年左右开始出现,但又有一个漫长的过渡期,大概在2011年左右,全部出厂的服务器及电脑等大多数主板都有PCIe和PCI插槽,同时具有ATA和SATA连接器。

2003年AMD为x86指令集引入了64位扩展,类似于80386引入的16位到32位的扩展。英特尔在Itanium中采用了不同的64位策略。AMD64指令集后来被英特尔复制,现在存在于大多数CPU中。随着64CPU的出现,CPU、内存和IO这三者之间的互联技术又发生了剧烈的变化。这三者相互互联的技术即用于外部连接也可用于内部分拆的组件之间的连接。每一个组件的更新换代和他们之间的互联技术的发展是不协调的,从时间周期来看,特别是CPU的更新换代,这三者之间的互联技术往往需要经过十年时间的发展才能达到性能互联的顶峰。

64位扩展后的CPU、内存和IO江湖,变化剧烈,互联技术多样精彩,相较于这之前的变化,可谓爆炸性的数量级增长。

原文发布于微信公众号 - 时间之外沉浮事(tasnrh)

原文发表时间:2019-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券