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)�ˤƥ�����������Ĥ��Ƥ���ɬ�פ�����ޤ���


�ȥ�å��Хå�URL

�����Ȥ���

̾��
 
  ³¨Ê¸»ú
 
 
��������
�ǿ�����
���̥���������
�ǿ�������
<%==comments[n].author%>
<% } %>
�������������󥿡�
  • ������
  • ������
  • �߷ס�

<% for ( var i = 0; i < 7; i++ ) { %> <% } %>
<%= wdays[i] %>
<% for ( var i = 0; i < cal.length; i++ ) { %> <% for ( var j = 0; j < cal[i].length; j++) { %> <% } %> <% } %>
0) { %> id="calendar-611743-day-<%= cal[i][j]%>"<% } %>><%= cal[i][j] %>
���ƥ����̥���������
�������饦��
QR������
QR¥³¡¼¥É
���ԥޥ���������ԥ塼��