2010ǯ08��10��
Cortex-A9�Υ������륫���󥿤����Ѥ�����ñ�ʼ¹Ի��֤η�¬��ˡ
����ARM11�Υѥե����ޥ󥹥�˥������Ѥ�����ñ�ʼ¹Ի��֤η�¬��ˡ��Ҳ𤷤ޤ����������Ʊ�����Ȥ�Cortex-A9�Ǥ�äƤߤޤ�����
��¬�Ѥδؿ����ڤ˻Ȥ���褦�˥����������ɤ��ĤΥإå��ե�����ˤޤȤ�Ƥ��ޤ���
����ؿ���ʣ������ˡ�Ǽ������ơ��ɤ��餬®��������Ӥ�����������Ǥ���
������������
�����󥿤��ɤ߽Ф��λ��Υ����С��إåɤ򾯤ʤ����뤿�ᥤ��饤��ؿ��ˤ��Ƥ��ޤ���
gcc�γ�ĥ��ˡ����Ѥ��Ƥ��ޤ���
#ifndef __KMC_PMON_CA9_H #define __KMC_PMON_CA9_H /* Performance Monitor Control Register of Cortex A9*/ #define PMCR_D 3 #define PMCR_C 2 #define PMCR_E 0 #define PMCNTENSET_C 31 volatile __inline__ static unsigned long __attribute__((always_inline)) pmon_start_cycle_counter() { unsigned long x; x = 1 << PMCNTENSET_C; asm volatile("mcr p15, 0, %0, c9, c12, 1" :: "r" (x)); asm volatile("mrc p15, 0, %0, c9, c12, 0" : "=r" (x)); x |= ((1 << PMCR_D) | (1 << PMCR_C) | (1 << PMCR_E)); asm volatile("mcr p15, 0, %0, c9, c12, 0" :: "r" (x)); asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (x)); return x; } volatile __inline__ static unsigned long __attribute__((always_inline)) pmon_read_cycle_counter() { unsigned long x; asm volatile ("mrc p15, 0, %0, c9, c13, 0": "=r" (x)); return x; } #endif /* __KMC_PMON_CA9_H */
������ˡ
pmon_ca9.h �򥤥󥯥롼�ɤ���(#include "pmon_ca9.h")
�ǽ��pmon_start_cycle_counter()��Ƥ�ǥ�����Ȥ򥹥����Ȥ����ޤ���
���θ��Ǥ�դΤȤ�����pmon_read_cycle_counter()�ǥ������륫���󥿤��ɤ߽Ф������κ�ʬ�ǻ��֤�פ�ޤ���pmon_read_cycle_counter()��ʣ����ƤӽФ��ƥ�åץ������¬�ꤹ�뤳�Ȥ�Ǥ��ޤ���
�饤�֥��ʤɤ��ɲä���ɬ�פ��ʤ��Τǡ�Makefile�����ѹ������פǤ�����¬��������ʬ�Υ������ե�����������ѹ��ǻȤ��ޤ���
ARM��Thumb2�Τɤ���Υ⡼�ɤǤ���ѤǤ��ޤ���
������
#include <stdio.h> #include "pmon_ca9.h" int func(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } int main() { unsigned long start, end; int x; start = pmon_start_cycle_counter(); x = func(1000); end = pmon_read_cycle_counter(); printf("time = %ld, x = %d\n", end - start, x); return x; }
- �ѥե����ޥ󥹥�˥����������륫���󥿤ξܺ٤�Cortex-A9�Υƥ��˥����ե���󥹥ޥ˥奢��򻲾Ȥ��Ƥ���������
- ư���ǧ�Ϥ��Ƥ��ޤ��󤬡������餯Cortex-A8�⤳��Ȥۤ�Ʊ���������ǤǤ���Ȼפ��ޤ���Cortex-A8�Υƥ��˥����ե���󥹥ޥ˥奢��򻲾Ȥ��Ƥ���������
- ���Υ��������ø��⡼�ɤǻ��Ѥ��뤳�Ȥ����ꤷ�Ƥ��ޤ����桼�����⡼�ɤ���ѥե����ޥ󥹥�˥��Υ쥸�����˥����������뤿��ˤϤ��餫����User Enable Register(PMUSERENR)�ˤƥ�����������Ĥ��Ƥ���ɬ�פ�����ޤ���