導(dǎo)語(yǔ):最近,谷歌員工研發(fā)了一種加速器單元,可以代替CPU完成垃圾收集任務(wù),并能減輕計(jì)算機(jī)運(yùn)算負(fù)擔(dān)。
智東西5月9日消息,近日,谷歌員工Martin Maas在IEEE Micro發(fā)表了一篇論文,描述了其設(shè)計(jì)的一種加速器單元,幫助CPU完成垃圾收集任務(wù),預(yù)計(jì)可將功耗減小15%。
除正常運(yùn)行工作外,CPU還必須執(zhí)行一些稱為“垃圾收集”的任務(wù),即從應(yīng)用程序中識(shí)別和刪除冗余或無(wú)關(guān)的數(shù)據(jù),以釋放額外的內(nèi)存空間,這消耗了計(jì)算機(jī)大量的計(jì)算能力。
垃圾收集消耗了CPU花在應(yīng)用程序上的總時(shí)間的10%甚至更多。當(dāng)Martin Maas將加速器與小型CPU核心進(jìn)行比較時(shí),他們發(fā)現(xiàn),根據(jù)每個(gè)設(shè)備各自的尺寸,他們的加速器性能提高了18倍,能夠?qū)PU從垃圾收集任務(wù)中分離出來(lái),減輕計(jì)算機(jī)的運(yùn)算負(fù)擔(dān)。
一、加速器單元能解決什么問(wèn)題?
Martin Maas和他的同事注意到了CPU運(yùn)行負(fù)擔(dān)過(guò)重,消耗大量不必要功耗的問(wèn)題,創(chuàng)建了一個(gè)緊湊的加速器單元。將垃圾收集任務(wù)委派給加速器單元可以提高計(jì)算機(jī)的運(yùn)算效率。
這種加速器只需要少量的芯片面積和功率。它可以添加到CPU中,類似于將一些現(xiàn)代處理器芯片集成到圖形處理單元中。
加速器單元以比CPU傳統(tǒng)方式更有效的方式進(jìn)行垃圾收集。例如,CPU必須按特定順序完成一些垃圾收集操作,而新加速器單元利用這些操作不需要按順序完成。通過(guò)同時(shí)執(zhí)行大量?jī)?nèi)存操作,它在垃圾收集方面比CPU更有效。
據(jù)Martin Maas介紹,當(dāng)軟件應(yīng)用程序在CPU上運(yùn)行時(shí),這個(gè)加速器單元位于側(cè)面為應(yīng)用程序執(zhí)行垃圾收集。Martin Maas說(shuō):“原則上,這意味著您可以構(gòu)建一個(gè)系統(tǒng),軟件根本不用擔(dān)心垃圾收集,只需要繼續(xù)使用可用內(nèi)存。”
Martin Maas在論文中提出,這種新設(shè)備可能成為未來(lái)系統(tǒng)的一個(gè)共同組成部分,從而避免CPU承擔(dān)垃圾收集負(fù)擔(dān)的問(wèn)題。
Martin Maas指出,CPU的構(gòu)建非常靈活,可以運(yùn)行各種應(yīng)用程序。因此,CPU規(guī)模相對(duì)較大,占用大量電力。但一直以來(lái),從沒(méi)有人為CPU的垃圾收集任務(wù)單獨(dú)設(shè)計(jì)一種設(shè)備來(lái)減輕CPU的任務(wù)和功耗。
二、傳統(tǒng)計(jì)算機(jī)中CPU如何進(jìn)行垃圾收集?
計(jì)算機(jī)系統(tǒng)運(yùn)行時(shí)會(huì)產(chǎn)生許多“垃圾”,包括臨時(shí)文件(如:*.tmp、*._mp)日志文件(*.log)、臨時(shí)幫助文件(*.gid)、磁盤(pán)檢查文件(*.chk)、臨時(shí)備份文件(如:*.old、*.bak)等。
CPU作為計(jì)算機(jī)的運(yùn)算核心,負(fù)責(zé)這整個(gè)運(yùn)算環(huán)境,也就是說(shuō),CPU要在計(jì)算機(jī)系統(tǒng)產(chǎn)生垃圾時(shí)及時(shí)清理它們,以確保計(jì)算機(jī)的運(yùn)行速度,并釋放內(nèi)存空間。
盡管CPU專用于垃圾收集的計(jì)算能力的10%可能看起來(lái)不是很多,但在全球范圍內(nèi),這代表了大量的計(jì)算資源。
此前,傳統(tǒng)的計(jì)算機(jī)垃圾收集任務(wù)是由CPU完成的,這項(xiàng)工作主要通過(guò)Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、和G1這7種類型的垃圾收集器完成。
其中,Serial收集器在工作時(shí)最大的問(wèn)題是,只能進(jìn)行單線程收集,也就是說(shuō)在它工作時(shí),其他程序必須暫停,直到它完成整個(gè)垃圾收集過(guò)程。ParNew收集器其實(shí)是Serial收集器的多線程版本,適用于多核CPU環(huán)境,但性能有時(shí)不如Serial收集器穩(wěn)定。
這些垃圾收集器的共同問(wèn)題就是,會(huì)導(dǎo)致不可預(yù)知的暫停,在進(jìn)行垃圾收集任務(wù)時(shí)計(jì)算機(jī)系統(tǒng)會(huì)暫停片刻,清理內(nèi)存。雖然在計(jì)算機(jī)應(yīng)用中通常不會(huì)注意到這一點(diǎn),但在用戶關(guān)心系統(tǒng)反應(yīng)是否非常靈敏的情況下,這可能會(huì)成為一個(gè)問(wèn)題。程序員會(huì)盡量避免這些停頓,而代價(jià)往往是在垃圾收集上花費(fèi)更多的周期。
結(jié)語(yǔ):從垃圾收集中解放的CPU
Martin Maas設(shè)計(jì)的加速器單元可以在軟件應(yīng)用程序運(yùn)行時(shí),獨(dú)立的執(zhí)行垃圾收集任務(wù),從而將CPU從這一任務(wù)中解放出來(lái)。
垃圾收集加速器單元如果能夠成功應(yīng)用,它將有效提高計(jì)算機(jī)的生產(chǎn)效率,解決CPU運(yùn)行負(fù)擔(dān)過(guò)重,消耗大量不必要功耗的問(wèn)題。
關(guān)鍵詞: