커널 3.4 에 릴리즈된 주요 내용중 아키텍쳐에 종속적인 변경이 있습니다.

그 중에서 한가지씩 살펴보도록 하겠습니다.


perf: add support for the Cortex-A7 PMU (commit)


내용은 간단한 한줄인데요... 내용은 꽤 복잡합니다.

디버깅을 위한 방법으로 여러가지가 있는데 ETM 이라는 기능을 이용하는 방법이 있습니다.

ETM 은 ebmedded trace macrocell 의 약자인데요.

앞뒤 자르고 간단하게 얘기하면 특정 상황이 발생하면 이벤트를 발생할수 있도록 해주는 것입니다.


http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbighbf.html

의 링크를 보시면 Coretex-A8 에서 어떤 이벤트를 걸수 있는지에 대한 종류가 있습니다.

그 이벤트를 지정해서 트리거를 시켜 인터럽트를 발생시킬수 있습니다.


발생시킬수 있는 이벤트는 V6, V7 이 조금씩 다르고 Xscale 도 이 기능을 지원합니다.

L1, L2 캐쉬에 대한 접근 방법에 따라 트리거를 걸수도 있고, aling 되지 않은 엑세스나 코프로세서에 대한

접근시 이벤트를 발생시킬수도 있습니다.

특정 레지스터에 접근시에도 이벤트가 가능한 것도 있습니다.


이런 기능들을 사용하면 좋긴 할것 같은데... 디버깅이나 실사용을 어떤 경우에 적당한지는 생각을 좀 해봐야 겠습니다.


커널에서 소스는 arch/arm/kernel/perf_xxxx 로 되어 있는 소스들이 해당 소스들입니다.


그럼...