1
5
在上个千年的70和80年代,我们有很多这种硬件。所有这些lisp机器都非常擅长通过间接访问和双重间接访问来帮助内存管理(如果GC移动对象,则是必需的)。我们中的一些人还记得80286的最初几天,人们认为段可以用于更好的内存管理,并且在性能上失败了。 目前的智慧状态是,为了通用用途而优化CPU,而不是添加一些有时只需要的特殊功能,这样做要好得多。 现代垃圾收集器已经使用了一些操作系统功能,比如虚拟页面的脏标记来实现写屏障,但是另外,这些算法非常简单、简单和高级。不需要特别的硬件。 我最近在使用HP-UX时发现了一个惊人的结果。您可以将虚拟页面大小设置为256MB,这将有效地转换虚拟内存。这使得这个CPU的性能提高了120%。TLB未命中比缓存未命中更严重。这让我想到了一个很好的旧MIPS体系结构,它在TLB中存储了一个进程ID,因此它不需要在每个进程开关上进行完整的TLB刷新。 内存管理改进还有很大的空间,比一些高级垃圾收集功能更重要。 |
2
10
理论上,你可以在硬件中实现一个完整的Java虚拟机,包括内存管理,我相信有一些研究项目(尝试)做到这一点。但有几个很好的理由 不 要在硬件中实现内容:
最后,对于您想要的每个特性,您必须在这些成本和您获得的收益(更快或更低的执行能力)之间进行权衡。 对于内存管理,这通常是一种复杂的算法,但并不经常运行,因此获得的收益将相当小(您可以将垃圾收集速度提高10倍,但如果开始时只需要1%的执行时间,那么何必费心呢?)另一方面,成本将是一个更大的芯片,其中大部分区域被浪费,因为大部分时间它是不活动的… |
3
4
是的,有几个CPU内置内存管理和GC。其中一个是为 Ceres workstation . 它使用34位内存(即32位数据+2位额外内存)。 现在很少有硬件支持GC有几个原因:
[编辑]下一代“通用CPU”可能带有可编程区域。( FPGA )您可以在其中定义新的“汇编程序操作代码”。这将允许软件根据其特定需求修改CPU。这里要解决的问题是使FPGA的加载速度更快,这样它的内容就可以通过它们的过程进行切换。 这将允许为 |
4
3
在奔腾这样的现代处理器中,有支持虚拟内存管理的功能。但是它的实现必须由操作系统来完成,因为有很多可能的算法可以用来管理内存。 哪种算法最适合取决于内存的使用方式。在计算机上运行哪些类型的应用程序?它们能跑多久?运行了多少应用程序?以及如何组织任务切换。 因此,你不能在硬件中硬接线。操作系统更了解如何有效地管理内存,因为它是为一种特殊的计算机类型(服务器与桌面操作系统)而设计的,而且它对计算机上运行的进程具有更高的级别视图。 |
5
2
在嵌入式空间中,Ajile Systems Inc., http://www.ajile.com/ 在具有可选GC的芯片产品上生成一系列JVM。它们还提供了多个JVM特征,其中Java进程独立地在自己的虚拟机上独立地执行具有完整内存保护的确定的、时间分割的调度。 它们似乎提供了三种GC算法和一种关闭模式。所以不仅仅是芯片上的JVM,更像是芯片上的操作系统。 |
6
1
对于这个问题,有很多不同的算法和方法,至今还没有人找到它们的任何共同原语。 |
TheKing · 为什么数组的地址可以有负值? 2 年前 |
yurnero · MATLAB:“加载”一个快速访问功能 6 年前 |
joe · 一页可以同时在两个工作集中吗? 6 年前 |
Jaques · “.exe”已触发断点 6 年前 |
adn bps · 在函数中修改变量的高效内存方法 6 年前 |
Gauraang Khurana · C语言中分段错误的不稳定行为 6 年前 |
Rajesh K · 如何查找设备中存在的广告垃圾? 6 年前 |