智东西(公众号:zhidxcom)编 | 王颖
导语:最近,谷歌员工研发了一种加速器单元,可以代替CPU完成垃圾收集任务,并能减轻计算机运算负担。
智东西5月9日消息,近日,谷歌员工Martin Maas在IEEE Micro发表了一篇论文,描述了其设计的一种加速器单元,帮助CPU完成垃圾收集任务,预计可将功耗减小15%。
除正常运行工作外,CPU还必须执行一些称为“垃圾收集”的任务,即从应用程序中识别和删除冗余或无关的数据,以释放额外的内存空间,这消耗了计算机大量的计算能力。
垃圾收集消耗了CPU花在应用程序上的总时间的10%甚至更多。当Martin Maas将加速器与小型CPU核心进行比较时,他们发现,根据每个设备各自的尺寸,他们的加速器性能提高了18倍,能够将CPU从垃圾收集任务中分离出来,减轻计算机的运算负担。
一、加速器单元能解决什么问题?
Martin Maas和他的同事注意到了CPU运行负担过重,消耗大量不必要功耗的问题,创建了一个紧凑的加速器单元。将垃圾收集任务委派给加速器单元可以提高计算机的运算效率。
这种加速器只需要少量的芯片面积和功率。它可以添加到CPU中,类似于将一些现代处理器芯片集成到图形处理单元中。
加速器单元以比CPU传统方式更有效的方式进行垃圾收集。例如,CPU必须按特定顺序完成一些垃圾收集操作,而新加速器单元利用这些操作不需要按顺序完成。通过同时执行大量内存操作,它在垃圾收集方面比CPU更有效。
据Martin Maas介绍,当软件应用程序在CPU上运行时,这个加速器单元位于侧面为应用程序执行垃圾收集。Martin Maas说:“原则上,这意味着您可以构建一个系统,软件根本不用担心垃圾收集,只需要继续使用可用内存。”
Martin Maas在论文中提出,这种新设备可能成为未来系统的一个共同组成部分,从而避免CPU承担垃圾收集负担的问题。
Martin Maas指出,CPU的构建非常灵活,可以运行各种应用程序。因此,CPU规模相对较大,占用大量电力。但一直以来,从没有人为CPU的垃圾收集任务单独设计一种设备来减轻CPU的任务和功耗。
二、传统计算机中CPU如何进行垃圾收集?
计算机系统运行时会产生许多“垃圾”,包括临时文件(如:*.tmp、*._mp)日志文件(*.log)、临时帮助文件(*.gid)、磁盘检查文件(*.chk)、临时备份文件(如:*.old、*.bak)等。
CPU作为计算机的运算核心,负责这整个运算环境,也就是说,CPU要在计算机系统产生垃圾时及时清理它们,以确保计算机的运行速度,并释放内存空间。
尽管CPU专用于垃圾收集的计算能力的10%可能看起来不是很多,但在全球范围内,这代表了大量的计算资源。
此前,传统的计算机垃圾收集任务是由CPU完成的,这项工作主要通过Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、和G1这7种类型的垃圾收集器完成。
其中,Serial收集器在工作时最大的问题是,只能进行单线程收集,也就是说在它工作时,其他程序必须暂停,直到它完成整个垃圾收集过程。ParNew收集器其实是Serial收集器的多线程版本,适用于多核CPU环境,但性能有时不如Serial收集器稳定。
这些垃圾收集器的共同问题就是,会导致不可预知的暂停,在进行垃圾收集任务时计算机系统会暂停片刻,清理内存。虽然在计算机应用中通常不会注意到这一点,但在用户关心系统反应是否非常灵敏的情况下,这可能会成为一个问题。程序员会尽量避免这些停顿,而代价往往是在垃圾收集上花费更多的周期。
结语:从垃圾收集中解放的CPU
Martin Maas设计的加速器单元可以在软件应用程序运行时,独立的执行垃圾收集任务,从而将CPU从这一任务中解放出来。
垃圾收集加速器单元如果能够成功应用,它将有效提高计算机的生产效率,解决CPU运行负担过重,消耗大量不必要功耗的问题。
原文来自:IEEE Spectrum