本論文我們以先前 JAIP 為基礎提出 Multicore multithreading Java Processor 架構。每 個 JAIP 處理器的可容納多個 threads、達到極小的 context-switching overhead、time slice 數值可以壓縮到 20 milliseconds,並且大幅減少電路資源的使用;在多核心 JAIP 處理器 方面,我們提出 Inter-Core Communication Unit 與 Data Coherence Controller 新的設計,
用以支援 thread 的分配、lock object 與 waiting thread 的維護,修改每個處理器的 Thread Manager Unit 以支援 waiting thread 管理與排班。實驗結果顯示我們提出的架構可大幅縮 減 Java 處理器電路資源使用並且有效支援更多 threads。
未來設計方向有 3 點:(1)使用不同 thread scheduling 方法實作成電路例如 priority queue,當 Java 應用程式內每個 thread 的指令數量或重要性不一致時,能夠設定每個 thread 的 priority 並且作為 scheduling 電路模組的參數 (2)藉由 JAIP 的 Hardware Native Interface 支援更多 Java native methods (3)多核心 JAIP 處理器下 Object Heap Cache 與存取效率的 改進,目前 JAIP 處理器的 Heap Cache Controller 採用 Write-through 機制,由於每次執 行 Object Heap Cache 寫入的指令時皆需要傳資料到 DDR memory,因此需要設計 Write-back 或是更進階的 flush 機制減少 memory accessing overhead。
80
參考文獻
[1] Hung-Cheng Su, “Design of Multithreading Architecture for a Java Processor, ” Master thesis, NCTU, 2013.
[2] Chia-Che Hsu, “Performance Evaluation and Optimization of String Manipulation on a Java Processor, ” Master thesis, NCTU, 2013.
[3] Z.-G. Lin, H.-W. Kuo, Z.-J. Guo, and C.-J. Tsai, “Stack Memory Design for a Low-Cost Instruction Folding Java Processor,” IEEE ISCAS, May, 2012.
[4] Kent, K. B., & Serra, M. “Hardware/software co-design of a Java virtual machine.”
In Rapid System Prototyping, 2000. RSP 2000. Proceedings. 11th International Workshop on (pp. 66-71). IEEE, 2000
[5] T. Lindholm and F. Yellin, The Java Virtual Machine Specification, 2nd Ed., Addison-Wesley, 1999.B. R. Montague, “JN: OS for an Embedded Java Network Computer,” IEEE Micro, 17, 3, 1997, pp. 54-60.
[6] Venners, Bill. Inside the Java virtual machine. McGraw-Hill, Inc., 1996. ch.5 ch.6 ch.7 ch.8.
[7] Krall, Andreas. "Efficient Java VM just-in-time compilation." Parallel Architectures and Compilation Techniques, International Conference on. IEEE, Oct. 1998, pp. 205-212
[8] Microsystem, S. U. N. "Connected Device Configuration (CDC) of J2ME; JSR 36, JSR 218." URL: http://java. sun. com/products/cdc/index. jsp (2006).
[9] Connected Limited Device Configuration Specification Version 1.0a, Sun Microsystems White Paper, May. 2000.
[10] Jun Qin, Qiaomin Lin, and Xiujin Wang, Research on Embedded Java Virtual Machine and its Porting, IJCSNC International Journal of Computer Science and Network Security, Vol.7 No.9, September 2007.
[11] ARM inc, “Jazelle technology: ARM acceleration technology for the Java Platform”, 2004.
81
[12] Nazomi Communication, inc, “JSTAR-Java Coprocessor for ARM Microprocessors”.
[13] Sun Inc, ”picoJava-II Processor Core”, Datasheet,1999.
[14] Harlan McGhan, Mike O’Connor, “PicoJava: A Direct Execution Engine For Java Bytecode”, IEEE 1998.
[15] aJile Inc, “aJile Java Processor Core JEMCore”, 2001.
[16] aJile Inc, “aj-102 technical reference manual v2.4.”, 2009
[17] U. Brinkschulte, C. Krakowski, J. Kreuzinger, and T. Ungerer, “A Multithreaded Java Microcontroller for Thread-Oriented Real-Time Event-Handling,” Proc. of 1999 Int.
Conf. on Parallel Architectures and Compilation Techniques (PACT’99), pp. 34-39, Newport Beach, Oct. 1999
[18] M. Schoebel, “Evalution of a Java Processor,” Tagungsband Austrochip 2005, pp.
127-134, Oct. 2005.
[19] Kreuzinger, Jochen, et al. "Real-time event-handling and scheduling on a multithreaded Java microcontroller." Microprocessors and Microsystems 27.1 (2003): 19-31.
[20] Uhrig, Sascha, and Jörg Wiese. "jamuth: an IP processor core for embedded Java real-time systems." Proceedings of the 5th international workshop on Java technologies for real-time and embedded systems. ACM, 2007.
[21] Sun Microsystems Inc,”picoJava-II Programer’s Reference Guide”, Mar. 1999.
[22] Patel, Mukesh K., Udaykumar R. Raval, and Harihar J. Vyas. "Java hardware accelerator using thread manager." U.S. Patent No. 6,826,749. 30 Nov. 2004.
[23] M. Schoeberl, "Design rationale of a processor architecture for predictable real-time execution of Java programs." Proc. of International Conference On Real-Time And Embedded Computing Systems And Applications. 2004.
[24] Pitter, Christof, and Martin Schoeberl. "A real-time Java chip-multiprocessor."ACM Transactions on Embedded Computing Systems (TECS) 10.1 (2010): 9.
[25] Stoif, Christian, et al. "Hardware synchronization for embedded multi-core
82
processors." Circuits and Systems (ISCAS), 2011 IEEE International Symposium on.
IEEE, 2011.
[26] C.-J. Tsai, H.-W. Kuo, Z. Lin, Z.-J. Guo, J.-F. Wang, “A Java Processor IP Design for Embedded SoC,” ACM Transactions on Embedded Computing Systems, accepted on January 4, 2014. An electronic manuscript of the paper is available from:
http://www.cs.nctu.edu.tw/~cjtsai/research/jaip.
[27] Ko, Hou-Jen, and Chun-Jen Tsai. "A double-issue Java processor design for embedded applications." Circuits and Systems, 2007. ISCAS 2007. IEEE International Symposium on. IEEE, 2007.
[28] Schoeberl, Martin, and Juan Ricardo Rios. "Safety-critical Java on a Java processor." Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems. ACM, 2012.
[29] Gruian, Flavius, and Martin Schoeberl. "Hardware support for CSP on a Java chip multiprocessor." Microprocessors and Microsystems 37.4 (2013): 472-481.
83