Abstract
Data transfers occur during the execution time of a Java program, from constant to variable, from variable to other variable and so on. Data are located in memory and hence data transfer requires access to memory. As memory access generates both time delay and energy consumption it is absolutely necessary to know the data transfer overheads incurred among different paths not only to write an efficient program but also to build a high-performance Java virtual machine. In this paper we classify Java memory into three different regions, constant, local variable, and field, and then investigate data transfer overheads among these regions. The result says that the transfer between local variables incur the least overhead usually, while the transfer between fields incur the most. The difference of overheads reaches up to a double. Optimization techniques like JIT reduces the data transfer overhead dramatically. It is observed that the overhead is reduced from 14 to 27 times for the case of Hotspot JVM.
자바 프로그램이 실행되면서 자료들은 상수에서 변수로, 변수에서 변수로 등 다양한 경로로 이동한다. 자료들은 메모리에 위치하며 자료의 이동은 메모리에 대한 접근을 필요로 한다. 메모리 접근은 시간지연과 에너지 소비를 야기하므로 여러 경로의 자료 이동이 어떤 부담을 갖는지를 아는 것은 효율적 프로그램 작성은 물론 고성능 자바가상기계의 구현에도 필수적이라 할 수 있다. 본 논문에서는 자바 메모리를 상수, 지역변수, 필드 등 세 가지 영역으로 나누고 각 영역 간의 자료 이동에 대한 부담을 조사하였다. 분석 결과 지역변수에서 지역변수로의 자료 이동이 가장 부담이 작고 필드에서 필드로의 이동이 가장 부담이 큰 것으로 조사 되었으며 부담 차이는 최대 2배에 이르는 것을 발견하였다. JIT 등 최적화 기술은 자료 이동 부담을 현저히 감소시켰으며 HotSpot JVM의 경우 최소 14배에서 최대 27배까지 부담 저하 효과를 나타내었다.