006주차 (2013.06.01) arm 아키텍쳐 세미나 2차


#1

6주차 Study Note (2013/06/01)

Status

Notice

  • ARM v7아키텍쳐 (Exception, Cache, MMU) 등에 대해 강의
  • 세미나 종료 후 간단한 회의 실시
    • Kernel분석 할 Architecture는 Exynos5410으로 결정
    • 이후의 세미나 방향은 “ARM System Developer’s Guide”로 진행하나, 선정된 챕터만 보자.
    • 금일 예정이었던 회식은 전체 회식과 겹쳐서 전체 회식으로 참여

Issues (Clear)

Table에서 LR의 offset은 ARM과 thumb이 거의 동일함을 보여준다. 그 이유는 thumb/ARM 별도 처리시 exception handler의 code size가 길어지므로, core에서 자동으로 보정하여 handler를 한가지 mode가정으로 처리한다. (HW 관점에서는 wire 연결만 변경하면 되는 것으로 간단한 방법이었다.)

일부 SWI에서 LR을 수정하지 않고 바로 return 주소로 사용하는 경우는 thumb의 경우 +2이다.

  • [x] 2. Cache의 Write Buffer는 언제 비워지는가? [#41]

    여러가지 technique이 존재 가능하지만, 기본적으로 2가지 방법을 사용합니다.

    1) barrier 명령 사용 : ARMv7의 경우 “DSB”는 write buffer drain 보장 (v6의 “DWB”(Drain Write Buffer) 명령어를 대체)

    2) MMU의 strongly-ordered 영역 사용 " Strongly-ordered region access시 그 이전의 모든 operation이 완료를 보장

  • [x] 3. FIQ, IRQ가 동시에 걸리면??

    FIQ와 IRQ가 동시에 걸리면 IRQ가 무시될 수 있기 때문에, IRQ를 먼저 실행하고 곧바로 FIQ로 전환하여 FIQ Stack에 IRQ를 넣어두고 나중에 실행한다는 구문이 Reference Manual에 있다.

    FIQ와 IRQ가 동시에 걸려도 IRQ는 무시되지 않는다. 또한 동시에 걸리면 당연히 FIQ가 먼저 실행된다.

    (참고: ARM exception priority: reset(1), abort(2), fiq(3), irq(4), …)

    FIQ mode가 동작하고 interrupt를 clear할 때 interrupt controller(INTC)에 register write하여 처리한 interrupt 만 clear한다.

    FIQ mode에서 return 한뒤(FI→fi) 다시 IRQ가 enable되고 irq input pin이 assert되어 있으면 IRQ mode에 진입하여 해당 interrupt를 처리한다.

    단 응답성 등의 향상을 위하여 몇가지 interrupt nesting 기법이 있고

    필요한 경우 FIQ mode진입후 return 되기전에 발생하는 모든 FIQ, IRQ 모두 처리하도록 programming도 가능은 하다.