Abstract
在傳統電腦系統的設計上,硬體部份與軟體部份是各自獨立並且分割得很清楚。例如就個人電腦而言,硬體方面主要包含一顆或數顆的中央處理單元(CPU)以及數顆應用專用積體電路(Application Specific Integrated Circuit, ASIC)所構成的晶片組;而在軟體方面,則是存放在記憶體的作業系統以及一些應用程式。使用者若是對於整體的效能不滿意,則僅能更換硬體架構,或者是使用功能更強大的軟體,以提高整體的效能。但不論哪一種作法,都無法使軟、硬體之間協調地改善;亦即其中一方面的效能雖然大幅度的提昇。但另一方面卻停留在原地,使高代價的付出得不到在整體效益上相對的提昇。為了解決這個問題,便有人提出硬體╱軟體合作設計(Hardware/Software Co-design)的概念。硬體╱軟體合作設計的主要精神是:使硬體與軟體齊頭並進地改良,以便用最少的代價,來獲取最大的效益。 Java,一個SUN公司所發展的程式語言,配合Java虛擬機器(Virtual Machine)的執行環境,可達成獨立平台、可攜性高、短小簡單以及安全可靠的需求。雖然有以上的優點,Java的執行速度卻為一般人所詬病。為了解決這個問題,SUN 公司便研究發展出第一代的Java晶片-picoJava。picoJava是將Java虛擬機器硬體脂而成的一顆晶片,這種作法是要建立起一個能夠執行Java應用程式的電腦系統。目前應用廣泛的程式語言,除非編譯成Java bytecode,否則無法在picoJava系統上執行。因此在短期之內,這種系統架構恐怕無法普及。 而另一個解決的方法,便是採用硬體╱軟體合作設計的技巧。將Java虛擬機器上的某些致使Java程式執行速度緩慢的部份硬體化,並架構在目前廣泛使用中的系統上,以達到提高Java程式的執行速度及適用於目前的電腦系統等兩方面的要求。在本論文所做的研究,便是採取這種作法,而研究的對象則是Java虛擬機器中的Garbage Collection,一個致使Java程式執行緩慢的重要因素。 本論文選擇名為Kaffe 的Java虛擬機器中的Garbage Collection來研究。在了解Kaffe中Garbage Collection 與其它系統程式之間的關係後,我們便可以很清楚地將Garbage Collection的功能分解出來,然後將它硬體化。在硬體化的過程中,必須要有一個完整的硬體架構,並且需要考量硬體與系統之間的介面。在這方面,本論文參考了『Java加速卡設計與製作之研究』計畫中所發展出來的架構與介面,並且配合Garbage Collection內部功能的特性,做了一些適當的修改。