如果硬盘能达到内存的速度,那操作系统的设计是否会有变化?

JJ-魅力值Ax小豪

在逻辑里面,条件为假,任何答案都是真。

对应这个问题就是,如果“硬盘能够达到内存的速度”,那么“操作系统的设计会改变”与“不会改变”这俩答案都对

回到现代计算机的基本架构——冯·诺依曼架构上,计算机只需由运算器和存储器组成,控制器辅助完成控制功能。运算器就是我们熟知的CPU中的ALU,所谓数罗运算单元,控制器就是CPU中的CU,而存储器就是内存,更准确的表达是英文Memory。

而题主问题中的“内存”,确切地说,应该是人们找到的最接近Memory特性的技术RAM(随机存储器)的分支DRAM(动态RAM)中的DDR(双倍速率)技术产品其中的第4代或3代,好拗口~~

无论以上这些Memory技术如何具体落地和升级改造,对计算机基本架构和控制逻辑没有影响。当然,针对不同内存技术的特征,硬件接口和底层驱动,会存在相当的特性优化,但是非常有限,毕竟是完全固化的,这也是为何绝少有不改动内存参数而进行的性能优化。这些内存层面的控制,对OS层面透明,因此OS几乎不用考虑对内存的驱动优化。

与内存相对应,其他所有存储装置都是外存,至于为什么这么叫,计算机原理这门课会专门讲述,这里就说个简单的:内存方位依赖地址,CPU可直接通过地址来访问内存中的数据,访问单位是“字”(不是字节,一个字可以是1、2、4或更多字节),其长度限制是寄存器(后来不够长了,又发明了多次取数)。

CPU笨到不会访问外存,CU会通过其下属的I/O控制将外存数据(通常为块,远比字大,一个块可存储一个或不同组织结构的多个字)映射到内存的特定区域中,CPU才能找到。具体流程是,1、CPU要个数据,2、CU一看没在内存里面,3、赶紧告诉I/O从外存拿,4、I/O拿回来放在内存里,5、其地址告诉CU,5、CU在告诉CPU,6、这数据有 在哪哪哪,7、CPU就去了......如果数据在内存里,那么整个过程就只剩1和6、7步了。

说着都累,实际做起来更是耽误工夫,光这一点,硬盘就没有机会达到内存的速度,因此“硬盘能够达到内存的速度”这个条件就是假的。

正经点,说说题主的潜台词。刚才有说,内存对OS几乎透明,OS几乎无需也不能为内存优化,而外存,具体来说是硬盘,需要通过I/O来完成访问。因此OS是否能为硬盘优化,实际指的是对I/O优化,这个答案是肯定的!不过和硬盘有多快,没有直接关系。

由于I/O升级相对更为频繁,因此OS通常不倾向于对其控制透明化,另一方面原因是其访问复杂、风险高、权限低、性能低,透明化严重拖累系统性能。以PC为例(包括Mac或Macintosh),CU集成在CPU中,所以一开始都是PIO(程序控制I/O)模式,后来硬盘性能提升了,CU没太多心思搭理它造成了性能浪费,于是让这个成绩好的孩子自学去了——DMA(直接内存控制),说白了就是从I/O抓取、被动提供,变成了主动送到内存然后报告地址了。后来又有了小升级NCQ和大升级NVMe,都要在硬盘、控制器支持的基础上,在OS安装驱动程序才能获得相应的性能改善。

但是,这些都不涉及到OS设计改变的层面。虽然计算机技术这几十年飞速发展,但是无论是基础架构还是附着于上的OS设计,都还没到质变的时候。光是硬盘速度提升这个量变,也难以积累到质变。

相对来说,现在英特尔Optane这个技术带来的窗口,非常有机会成为质变的诱发性因素。现在当硬盘看,它的优势是速度,而推动质变的恰恰不是这个因素,至少不是唯一的因素。直接绕过以I/O为界的内外存藩篱,是其最大的几乎点。而架构上来说,还未露面的Optane DIMM,是一种变相地将I/O放到外存里的解决方案,这样它就能告诉CU:“我是内存,别打扰我和CPU唠嗑”,并以内存形式访问——依然在冯·诺依曼架构中。

即便如此,这种方式也只是缩小了外存与内存之间的性能鸿沟,还不足以改变OS设计,只需要OS“了解(安装驱动)”它的工作方式,以此来充分发挥其性能。


分享到:


相關文章: