- 论坛徽章:
- 0
|
本帖最后由 Heng_Liao 于 2014-05-12 12:13 编辑
软件有时是硬件的遮羞布。硬件处在具体现实的物理世界中,难免要碰上这样那样的现实困难,因此每个技术常常会伴随着现实的苦果。上层软件处在完全虚拟世界中,可以像庄生梦蝶一样,梦境中套梦境,应用套应用,操作系统套操作系统,虚拟机套虚拟机,完全不需顾及何谓真实,何谓物理。这个虚构的抽象世界自有其妙处。物理现实的不理想,可以通过一层firmware或底层软件来弥补修正成上层软件想要的理想世界。
就拿存储来说吧,硬盘会因故障损坏,通过RAID层的软件就可把一组不可靠的盘呈现为一个十分可靠的逻辑盘,这样应用的程序员就可以忽视由于硬盘损坏造成的数据丢失和相关的恢复,保障等问题。
再说说NAND flash, 由于存储芯片写之前要对大数据块先擦除,因此不能以小扇区为单位做随机写,这给使用带来很大的不便利。每关系,软件可以补救,在固件中引入Flash Translation Layer,可以把这些不便利全部藏起来。程序员还可以回到以扇区为单位访问的块设备模式向传统硬盘一样使用。因此,过去的文件系统和应用程序可以继续使用。
还要提一下我们用了几十年的硬盘,简单块设备的访问模式也到头了,为了继续增加容量(磁记录密度),SMR (Shingled Magnetic Recording) 模式的硬盘就要来了,道和道直接要重叠覆盖,因此,不能再像过去的硬盘一样任意随即以扇区为单位写,而像Flash一样要以GB量级的Band 为单位做改写(Read Modify Write), 因此要引入类似于Flash Translation Layer的翻译影射层来呈现大家想看到的块设备。
这一切层层叠叠都是为了回到软件所想要看到的简单的梦境般的理想的抽象世界中去。不过软件虚构之梦境此终还在降低性能功耗成本等等硬件方面下功夫。
|
|