최근 휴대폰이나 멀티미디어 장치들의 개발에 많이 사용하는 낸드 부팅 기법은 전원이 인가되면 낸드 플래시 메모리에 있는 실행파일을 램으로 이동시켜서 실행시키기 때문에 기존의 롬을 이용한 부팅 방식에 비하여 램의 소요량이 증가하게 되어 프로그램 실행 시 동적으로 사용되는 스택이나 힙에 배정할 수 있는 메모리 공간이 상대적으로 줄어들게 된다.
본 논문에서는 램으로 적재되는 실행파일이 차지하는 램의 크기를 절감시키기 위하여 운영체제를 탑재하지 않은 낸드 부팅 기반 임베디드 시스템에 적합한 요구 페이징 기법인 eDPL(Embedded Demand Paging Loader)을 제안하고 이를 설계하여 여러 벤치마크 프로그램을 대상으로 성능을 평가하였으며 eDPL 기법 적용 시 프로그램 실행시간 5% 이하의 지연에서 코드 메모리가 40~80% 절감됨을 확인하였다.
또한 본 연구에서는 제안한 eDPL 기법 적용 시 요구 페이징으로 인한 실행시간 지연을 개선하기 위하여 상수 데이터 요구 페이징 배제, 함수 복귀 예측, 잦은 전환 요구 페이지 잔류, 가상 인터럽트 벡터 기법을 제안하였다. 이를 성능 평가한 결과 프로그램에 따라서 선택적으로 제안한 기법을 적용 시 실행시간 지연 감소 효과가 있음을 확인하였으며 eDPL 기법의 실용화를 위하여 낸드 부트로더와 eDPL 그리고 응용 프로그램을 하나의 실행파일로 생성한 자기 적재형 요구 페이징 로더인 SELF-eDPL 환경을 설계하였다.
본 논문에서 제안한 SELF-eDPL 환경을 운영체제를 사용하지 않고 낸드 플래시 메모리 기반으로 부팅하는 임베디드 시스템의 개발에 적용하는 경우 응용 프로그램의 램 사용량은 줄고 상대적으로 스택이나 힙의 용량이 증가하게 되어 프로그램 실행 시 스택 넘침이나 힙의 부족 현상의 개선이 가능하여 프로그램의 신뢰성 향상에 기여할 수가 있게 된다.
Alternative Abstract
Recently a NAND booting method is widely used in the development of mobile phones and multimedia systems. When the power is switched on, an application program is downloaded from the NAND flash memory to the RAM memory. Because of this, the RAM usage is much more increased compared to when in a traditional ROM booting method. Therefore, the memory size of the stack or heap which is dynamically used at run-time is relatively reduced.
In this thesis, I suggested and designed the eDPL(Embedded Demand Paging Loader) technique which adopts demand paging to reduce the total RAM usage for non-OS and NAND booting based embedded systems. The performance of this eDPL was evaluated with various benchmark programs, and it was shown that 40~80% of the code memory is reduced with below 5% execution time delay.
For the enhancement of the performance of the eDPL, I suggested some useful techniques: excluding constant data from the demand paging, predicting the page return from the running function, frequently used pages being remained and virtual exception vector techniques. As a result of an evaluation of the performance with benchmark programs, it was shown that the techniques suggested above helped in reducing the execution time delay. Furthermore, I also suggested and designed a SELF-eDPL platform, which is a merged platform of the NAND bootloader, the eDPL and the application program.
By applying the suggested SELF-eDPL platform to the development of non-OS and NAND booting based embedded systems, it is possible to reduce the total RAM usage. Using the reduced memory to increase the stack or heap memory size can contribute to increasing the run-time operation reliability from stack-overflows or heap-shortages.