Abstract
To optimize the performance of software programs, it is important to know certain hardware parameters such as the CPU speed, the cache size, the number of TLB entries, and the parameters of the memory subsystem. There exist several ways to obtain the values of various hardware parameters. Firstly. the values can be taken from the hardware manual. Secondly, the parameters can be obtained by calling functions provided by the operating systems. Finally, hardware detection programs can find the desired values. Such programs are usually executed on PC or server systems and report the CPU speed, the cache size, the number of TLB entries, and so on. However, they do not sufficiently detect the parameters of one of the most important parts of the computer concerning performance, namely the memory bank layout in the memory subsystem. In this paper, we present an algorithm to detect the memory bank parameters. We run an implementation of our algorithm on various embedded systems and compare the detected values with the real hardware parameters. The results show that the presented algorithm detects the cache size, the number of TLB entries, and the memory bank layout with high accuracy.
임베디드 시스템에서 프로그램 성능을 향상시키기 위해서는 시스템의 하드웨어를 이해하고 활용하는 것이 중요하다. 특히 메모리 서브시스템에 대한 이해는 프로그램을 주어진 하드웨어에 최적화하여 성능을 향상시키는 데 큰 역할을 한다. 본 논문에서는 cache, TLB, DRAM과 같은 메모리 서브시스템의 파라미터를 자동적으로 검출하는 기존의 알고리즘을 임베디드 시스템에 적용해 보고, 새롭게 메모리 뱅크 개수 검출 알고리즘을 제안한다. 제안한 알고리즘은 실제 여러 가지 임베디드 시스템 환경에서 실험을 통해 검증하였고, 실험 결과 메모리 서브시스템의 파라미터를 정확히 검출해 낼 수 있는 것을 확인하였다.