Implementation of Nested Software Interrupt and Passing Way of Parameters based on ARM9

ARM9기반의 Nested Software Interrupt의 구현 및 Parameter의 전달 방식

  • Received : 2010.10.29
  • Accepted : 2011.07.12
  • Published : 2011.09.25

Abstract

I try to solve the problem of the usage of the general software interrupt with the nested call of the software interrupt and the effective passing way of the parameters. The software interrupt should be protected against the indiscriminate access because it is used to call the system functions or to use the system resources by generating a software interrupt. But, it is difficult to effectively handle the SWI instruction because of its limited usage. I designed and implemented nested call of the software interrupt and the effective way that handle the parameters in the software interrupt service routine to solve this problem in this paper. In other words, from the single SWI call to the nested SWI call, I improved the software interrupt use all the more flexibly, and I compared and analyzed the strong and weak points of the two passing ways of the parameters. The main differences between these two ways are speed and readability. The stack pointer getting way incurred a lot of overhead although it has a very great readability. But, the stack pointer passing way producted 19% of the effectivity in speed by reduce overhead.

SWI 함수의 다중 호출과 매개변수의 효율적인 전달방법으로 일반적인 소프트웨어 인터럽트의 사용방법의 문제점을 해결하고자 한다. 소프트웨어 인터럽트는 강제로 소프트웨어적인 인터럽트를 발생하여 시스템 함수를 호출하거나 시스템 리소스를 사용하기 위해 이용되기 때문에 무분별한 접근들로부터 보호되어야 하지만, SWI명령어의 제한된 사용방식으로 효율적인 처리가 어렵다. 본 논문에서는 이를 해결하기위한 SWI의 Nested Call과 SWI의 서비스 루틴에 매개변수를 효율적으로 전달하는 방식을 설계하고 구현하였다. 즉, 단일 호출방식에서 다중 호출방식으로, 좀 더 유연하게 호출할 수 있도록 하였고, 두 가지 매개변수 이용 방식의 장단점을 비교분석하였다. 두 매개변수 이용 방식의 가장 큰 차이점은 속도와 가독성이다. 비록 스택 포인터 얻는 방식이 가독성이 매우 뛰어난 장점을 보였지만 많은 오버헤드를 발생시켰다. 이에 반해, 스택 포인터 전달 방식은 오버헤드의 발생을 줄여 속도적인 측면에서 약 19 %의 효율성을 보였다.

Keywords

References

  1. 히언, "EMBEDDED RECIPES-3쇄", 코너북, 2009.
  2. ARM Limited, "ARM DDI 0100E: ARM Architecture Reference Manual", 1996.
  3. 안효복, "ARM으로 배우는 임베디드 시스템", 한빛미디어, 2006년
  4. ARM Limited, "ARM DUI 0040D: ARM Developer Suite Developer Guide", pp. 9_16-9_17, 1999.
  5. 친절한 임베디드 시스템 개발자 되기 강좌, "http://recipes.egloos.com/"
  6. ARM Limited, "ARM DAI 0030A: Application Note 30", 1996.
  7. ARM Limited, "ARM IHI 0042D: Procedure Call Standard for the ARM Architecture", 2009.
  8. ARM Limited, "ARM DDI 0180D: ARM9TDMI Technical Reference Manual Rev3", 2000.