为什么硬盘不支持内存管理?

时间:2010-06-21 12:22:15

标签: memory-management hardware

虚拟内存得到现代硬件的良好支持,但应用程序级内存分配仍然是所有已实现的软件,无论是手动堆内存管理a-la C和C ++,还是VM级垃圾收集。

比传统的手动内存管理与垃圾收集辩论更进一步,为什么没有基于硬件的原语可以帮助在用户空间中构建有效的内存管理和/或垃圾收集方案(可能暴露或内置于操作系统,然后是各种虚拟机)。

硬件用于加速图形操作,卸载网络堆栈的各个部分,加密算法和音频/视频编解码器经常在硬件中实现,为什么不能构建块用于更高级别的内存管理?它看起来无处不在,但我不知道任何硬件辅助实现。

鉴于我缺乏硬件知识,这对我来说有点模糊,但我很想听听

  1. 如果有这样的事情(至少在研究阶段),或
  2. 将会或将不会提供超过传统内存管理的任何好处,或者
  3. 为什么在硬件中构建这样的东西是不可行的?

6 个答案:

答案 0 :(得分:10)

理论上,您可以在硬件中实现完整的Java VM,包括内存管理,我相信有一些研究项目(试图)这样做。但是有几个很好的理由来实现硬件中的东西:

  • 硬件已修复,您无法轻松修补错误或实施更新/更好的算法
  • 硬件价格昂贵,对于垃圾收集等复杂操作,您需要大量硬件,而使用现有硬件资源的软件实现要便宜得多
  • 硬件资源占用空间并消耗(静态)电源,即使在不使用时也是如此,而未使用的软件代码的损害相对较小

最后,对于您想要的每个功能,您必须在这些成本与您获得的收益之间进行权衡(执行速度更快或更低)。

对于内存管理,这通常是复杂的算法,但不会经常运行,增益会相当小(您可能能够将垃圾收集速度提高10倍,但如果它只占执行率的1%)时间开始,为什么要这么麻烦?)另一方面,成本将是一个更大的芯片,其中大部分区域被浪费,因为它在大多数时间都处于非活动状态......

答案 1 :(得分:5)

在上一个千禧年的第70和第80期,我们有很多这样的硬件。所有这些Lisp机器都非常适合尝试使用间接和双重间接访问来帮助进行内存管理(如果GC移动对象,则需要)。我们中的一些人还记得80286的第一天,人们认为这些片段可以用于更好的内存管理,并且在性能上表现不佳。

到目前为止,目前的智慧状态是优化CPU以用于通用目的,而不是仅添加不时需要的特殊功能。

现代垃圾收集器已经使用了一些操作系统功能,例如虚拟页面的脏标记来实现写入障碍,但除此之外,算法非常简单,直接且高级别。没有特别需要的硬件。

我最近在使用HP-UX时发现了一个惊人的结果。您可以将虚拟页面大小设置为256MB,这将有效地转换虚拟内存。这使CPU的性能提高了120%。 TLB未命中甚至比缓存未命中更严重。这让我想到了在TLB中存储进程ID的良好的旧MIPS架构,因此它不需要在每个进程交换机上进行完整的TLB刷新。

还有很多内存管理改进的空间比一些高级垃圾收集功能更重要。

答案 2 :(得分:4)

是的,有几个CPU内置了内存管理和GC。一个是为Ceres workstation提供动力的N320xx CPU的自定义版本。它使用34位内存(即32位数据+ 2位额外)。

为什么今天GC几乎没有硬件支持有几个原因:

  1. 您需要一个特殊的主板 - >昂贵
  2. 您需要一个特殊的CPU - >非常昂贵
  3. 您需要可以使用CPU和主板的额外功能的特殊软件
  4. 关于如何提高GC的效率仍有很多研究。这是一个非常活跃的区域,与我们通过设置单个像素绘制图像的时间相当。当我们了解哪些部分可以标准化时,为它构建硬件是有意义的。
  5. 这会浪费所有不使用此功能的程序的内存
  6. [编辑]下一代“通用CPU”可能带有一个可编程区域(FPGA),您可以在其中定义新的“汇编操作码”。这将允许软件根据其特定需求修改CPU。这里要解决的问题是加快FPGA的加载速度,以便可以通过其流程切换内容。

    这将允许为

    创建硬件支持

答案 3 :(得分:3)

在像奔腾这样的现代处理器中,有一些功能支持虚拟内存管理。但是它的实现必须由操作系统来完成,因为有很多可能的算法可以管理内存。

哪种算法最适合取决于内存的使用方式。在计算机上运行哪些应用程序?他们跑多久了?运行了多少个应用程序?任务如何组织起来。

因此,您无法在硬件中硬连线。操作系统更好地了解如何有效地管理内存,因为它是针对特殊的计算机类型(服务器与桌面操作系统),也是对计算机上运行的进程有更高级别的视图。

答案 4 :(得分:2)

在嵌入式领域,Ajile Systems Inc. http://www.ajile.com/生产一系列具有可选GC功能的JVM片上产品。它们还提供了多个JVM功能,其中java进程在具有完全内存保护的确定性时间切片计划中独立地在其自己的VM上执行。

他们似乎提供了三种GC算法和一种关闭模式。因此,不仅芯片上的JVM更像是操作系统,而是在芯片上。

答案 5 :(得分:1)

这个问题有很多不同的算法和方法,没有人能够找到任何常见的原语。