传统观点认为,固态硬盘SSD总有一天会取代所有硬盘,但实际上,事实证明,固态硬盘对DRAM市场来说比对硬盘市场更具挑战性。
然而,要理解它,你必须像计算机架构师一样看待计算机,或者换句话说,要理解计算机的内存/存储层次结构。
对于程序而言没有硬盘和内存的概念,只有内存。虚拟内存系统是操作系统的一部分,通过在需要时将代码和数据移动到DRAM中,并在不再重要时将其移回HDD,从而无需告诉应用程序它正在移动任何东西来隐藏两者之间的差异。
通俗点说,DRAM让HDD看起来更快,HDD让DRAM看起来很大。
如果你认为DRAM是使HDD看起来更快的东西,那么额外的DRAM应该有助于使HDD看起来更快。长期以来,这一直是加速计算机性能的标准方法。
奇怪的是,服务器中使用的固态硬盘比硬盘更能取代DRAM。系统管理员发现,虽然他们添加更多DRAM,他们的软件运行速度会更快,但如果他们不添加DRAM,而是添加与附加DRAM成本相同的SSD,则会运行速度更快。
这是一种多年来一直被服务器社区理解的现象,但它仍然让DRAM/SSD/HDD社区的其他成员感到神秘。我会以一种能够帮助任何人理解的方式解释它。
下图中,黑线表示一个程序,其代码和数据访问主要发生在相对狭窄的范围内,而红色曲线表示访问地址分布更广泛的程序。
所有程序的行为方式都相似——大多数访问发生在一定范围内,而超出该范围的访问较少。这被称为“局部性locality”,这也是计算机可以利用cache内存和虚拟内存层次结构配置的原因。
现在,一台没有SSD的典型计算机会将其中一些访问存储在DRAM中,而其他访问则需要从HDD获取。DRAM由下图中的黄色框表示。框的宽度表示由DRAM服务的访问地址范围,框外的访问强制操作系统进入HDD,这大约需要DRAM访问的100万倍(10^6)。
想要提高计算机速度的系统管理员会添加更多的DRAM来捕获更多访问权限。下图显示添加两倍DRAM的效果。
很明显,黑线比红线从中受益更多。尽管如此,许多访问都出框框,造成了10^6倍的硬盘的内存访问代价。
一个替代方案是在SSD上花费相同金额。今天,SSD NAND是DRAM的二十倍:8GB DRAM模块的价格与160GB SSD差不多。SSD比DRAM慢得多,提供数据的时间大约是DRAM的1000(10^3)倍,但它要大得多,因此它覆盖的访问次数明显更多。这有帮助吗?下图试图提供这方面的视觉表现。
显然,现在很少有访问必须进入缓慢的硬盘HDD。
固态硬盘的速度较慢是由框框的高度更低来表示的,但这不是准确表示这一点的方法,所以让我们做一些计算。
对于黑线,单个DRAM块满足约55%的所有访问,双DRAM系统可以满足约90%的访问。
在双DRAM系统等待HDD时,所有其他访问将需要100万倍的时间。
如果我们添加SSD,它将提供几乎所有剩余访问的数据,因此我们将为单个DRAM提供的55%以外的访问提供44%的“hit率”。也就是说,SSD提供的数据速度是DRAM的10^3倍,访问量是DRAM的44%,而HDD的访问速度是DRAM的10^6倍,只有1%的时间被访问。
使用此,我们可以计算两个成本大致相同的系统的平均延迟,即双DRAM系统(标记为“无SSD”)与包含SSD的单DRAM系统:
基于SSD的系统的平均延迟显然要好一个数量级。这就是为什么固态硬盘已经成为当今几乎每个服务器安装的一部分。这也在一定程度上限制了DRAM市场的增长。
请记住,这只是黑线程序的计算。红线程序从添加的DRAM中受益较少,但几乎所有的访问都由SSD覆盖,因此从双DRAM配置到单DRAM/SSD配置将看到更好的改进。
因此,如果你有固定的预算,固态硬盘可以帮助你充分利用系统,并且是比额外的DRAM更好的选择。
如果你花更多的钱将DRAM翻倍,同时添加SSD会发生什么。在这种情况下,90%的访问将进入DRAM,仍然只有1%进入HDD,另外9%进入SSD。与单DRAM系统相比,性能仅改进3%左右,成本却大幅增加。
其实上面的分析确实也挺片面的,因为对于系统的需求仅限于这个所谓的平均延迟而言的,而且上面的曲线并不代表真正的程序。总之,DRAM/SSD/HDD的配置因系统而异。
END
来源:数字芯片实验室
推荐阅读
更多数字IC设计技术干货等请关注数字芯片实验室专栏。添加极术小姐姐(微信:aijishu20)微信可申请加入IC设计交流群。