在上期,我们研究了鹿晗和黄子韬如何在小霸王学习机里面化身超级战士“魂斗罗”打败外星人,拯救地球,也打开了一段尘封已久的回忆。
话分两头,某军事论坛由于经常故障无法登录,被网友们嘲讽为使用小霸王学习机做服务器。那么,实际上如果真的使用小霸王学习机作为服务器,会怎么样呢?
在不懈的努力之下,方老师的学生小V搞到了一张小霸王学习机的电路图纸,如下图:
贴错图了,是这个图:
这张图太复杂啦,让我们简化一下:
图中的CPU和PPU的作用,在上一期已经进行了解释。CPU和PPU上各挂载了2KB的SRAM(静态RAM,和我们现在常见的DDR DRAM区别以后再讲),分别作为主运行内存和显存。
在CPU的地址总线和数据总线上还挂着ROM,也就是游戏卡里面的黑色芯片。
出于成本考虑,小霸王学习机是没有磁盘系统的,运行的程序烧写在ROM里面。同样,由于降成本的要求,小霸王学习机的系统资源非常紧张,无法运行操作系统 (哪怕是最简单的uC-OS这样的操作系统),系统复位后会从ROM固定的地址读取程序指令开始运行。如果插入的游戏卡上的ROM内容是《魂斗罗》,那么系统运行的就是《魂斗罗》游戏。
此外,小霸王学习机还有键盘和游戏手柄等外部IO设备,用这些设备可以操纵游戏的角色。
我们再对比一下Intel V7服务器的内部框图:
这台服务器的处理器是两块Intel Xeon Scalable 3代 Gold 5318Y,每块处理器有24个物理内核,48个硬件线程 (Hyper-Thread,这个概念会在以后解释)。
每颗Intel Xeon Scalable 3代 CPU有8个DRAM通道,支持DDR4 DRAM标准,每个DRAM通道支持2个DRAM模组(大白话曰:内存条),整机可支持32条内存,总计6TB RAM。
两颗CPU之间的通道叫做UPI(Ultra Path Interconnect),可以让一颗CPU上的指令访问另一颗CPU上挂载的内存或其他PCIE、IO设备(实际上都是通过地址空间访问,这个问题以后会讲到),也就是所谓的跨NUMA访问。
CPU对外设的标准接口叫做PCI-E接口。PCI-E是Peripheral Component Interconnect-Express的缩写,从1992年诞生以来逐渐改进,从并行总线演进为高速串行总线,目前的PCI-E 4.0标准支持单向32GB/s,双向64GB/s的传输。
我们知道,服务器实质上也是一台计算机。按照大前辈冯·诺依曼的理论,计算机除了控制器、运算器(在CPU内部)和存储器(也就是DDR内存)以外,还需要输入输出设备。服务器的输入输出设备有几种:
在出现NVMe技术以前,所有的系统盘和数据盘分为两种接口。一种是SATA接口,经过IO Hub(俗称南桥),再经过PCI-E总线,挂载到CPU上,另一种是SAS接口,需要经过HBA控制器,再经过PCI-E总线,挂载到CPU上,如下图所示:
而在NVMe技术出现后,可以直接将SSD固态盘通过PCI-E总线挂在CPU上:
我们在前期也给大家解析过NVMe技术,链接在此:《云存储技术硬核内幕(33) ——旧制度与大革命》
此外,键盘、鼠标和BMC等外设也都挂载在南桥芯片上。
显示器接在哪里呢?
由于Intel Xeon处理器没有集成Intel的核芯GPU,服务器是通过BMC芯片上集成的VGA控制器输出VGA信号的。出于成本考虑,服务器不会自带HDMI等高清显示能力,除非增加相关的GPU卡。
好了,让我们看一看现代的服务器和小霸王学习机的部件对比:
服务器 | 小霸王学习机 | |
---|---|---|
中央处理器(CPU) | XEON 5318Y | 理光2A03(6502改) |
图形处理器(GPU) | BMC芯片内置 | 理光2C02 |
内存 | DDR,最大6TB | SRAM,2KB |
系统程序存储 | SSD盘(SATA或NVMe) | ROM(游戏卡) |
外设 | 键盘,鼠标 | 键盘,游戏摇杆,射击枪 |
可见,现代服务器运行程序所依赖的硬件部件,在小霸王学习机里面都是具备的。
那么,小霸王学习机能不能真的充当服务器(如果能忍受缓慢的运行速度)呢?
答案是肯定的。
1936年,著名计算机科学家图灵发表了一篇论文《On Computable Numbers, with an Application to the Entscheidungsproblem》,在论文中提出了一个计算模型——图灵机。只要一台计算机能够实现图灵机的功能,也就是所谓的“图灵完备”的,就能够完成所有的计算任务。
由于小霸王学习机是图灵完备的,因此,它可以运行服务器所需要的指令(只是速度很慢)。
对图灵完备的解释是一个很有意思的话题,请看下期。