2007ǯ08��15��

����ץ�����ߥ󥰡ʤ��Σ���

¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿

3.Memory Ordering

���󥰥�ץ����å��Υޥ������åɤǤϡ�volatile�ѿ���ե饰�ˤ��ƴ�ñ��Ʊ����񤯤��Ȥ��Ǥ��ޤ����� �㤨�С����Τ褦�ʴ����Ǥ����ʥ���ѥ����volatile�ѿ��ؤΥ��������ν���������ؤ��ʤ���ΤȤ��ޤ���

volatile int done = 0;
volatile struct { int foo; int bar; } foobar;

void writer(void) {
    foobar.foo = fizz();
    foobar.bar = bazz();
    done = 1;
}
 
void reader(void) {
    int foo, bar;

    while (!done) sleep(1);
    foo = foobar.foo;
    bar = foobar.bar;
}

����ϡ��ޥ���ץ����å��Ķ��ǤϾ�꤯�����ʤ����Ȥ�����ޤ���������CPU�ϡ�̿�����֤˼¹Ԥ���Ȥϸ¤�ʤ�����Ǥ����㤨�С�����񤭹��ߤ��󤷤ˤ����ꡢ�����ɤ߹��ߤ��굡Ū�ˡ������äơ˼¹Ԥ��ޤ���

�������ä����֤������ؤ��ϡ����Υץ����å�ñ�ΤǸ����Ȥ��ˤϥץ������μ¹Ԥ˱ƶ���̵���褦�ˤ���Ƥ��ޤ�����¾�Υץ����å����鸫���Ȥ��ˤϥ���ι���������ۤʤäƸ����Ƥ��ޤ��ޤ���

����������褹�뤿��ˡ�����ե��󥹤Ȥ������Ȥߤ�����ޤ����㤨�С�i686�Ǥ� lfence, sfence, mfence �Ȥ���̿�᤬����ޤ���lfence̿���ץ������ˤϤ���ȡ�lfence̿��������Load̿�᤬��lfence̿������˼¹Ԥ���뤳�Ȥ��ʤ��ʤ�ޤ���sfence̿���lfence̿��εդǡ�sfence̿��������Store����λ����(����å������ʤɤ˽񤭹��ޤ��)�Τ��Ԥ��ޤ���mfence̿���lfence��sfence��­������ΤǤ���

��ۤɤΥץ������򡢥ޥ���ץ����å��Ǥ�ư���褦�˥���ե��󥹤���������ȡ����Τ褦�ˤʤ�ޤ���

volatile int done = 0;
volatile struct { int foo; int bar; } foobar;

void writer(void) {
    foobar.foo = fizz();
    foobar.bar = bazz();
    asm("    sfence;"); // foo��bar�ν񤭹��ߤ��μ¤˼¹Ԥ����Τ��Ԥ�.
    done = 1;
}

void reader(void) {
    int foo, bar;

    while (!done) sleep(1);
    asm("    lfence;"); // done�����ˤʤ����ˡ�foo��bar��Load�����Τ��ɤ�.
    foo = foobar.foo;
    bar = foobar.bar;
}

������󡢼�ʬ��Ʊ�����褦�Ȥ��ʤ���Ʊ��API��Ƥ٤С������ȥ���ե��󥹤⤷�Ƥ���ޤ��� �����ΰ������ϥǥХå����ɤ���褦�ʥ�ΤǤϤʤ������˥ǥХå����񤷤��Τǡ��ǽ餫��Ʊ��API�� ���Ѥ��뤳�Ȥ򤪴��ᤷ�ޤ���

klab_gijutsu2 at 13:00��Comments(0)��TrackBack(0)��kernel 

�ȥ�å��Хå�URL

���ε����˥����Ȥ���

̾��:
URL:
  ����òµ­²ï¿½: ɾ��: ��    ��
 
 
 
Blog�⸡��
�ǿ�����
Archives
���Υ֥����ˤĤ���
DSAS�Ȥϡ�KLab �����ۤ����Ѥ��Ƥ��륳��ƥ�ĥ����ӥ��Ѥ�Linux�١����Υ���ե�Ǥ�������5����Υǡ������󥿤ˤƹ��ۤ������Ѥ��Ƥ��ޤ������桹��DSAS����Ȥ��䤹�����������ˡ������Ƥ����ϤDZ��ѤǤ��뤳�Ȥ��ܻؤ��ơ��������ɤ˶Ф���Ǥ��ޤ���
���Υ֥����Ǥϡ������ DSAS �ǻȤäƤ��뵻�ѤξҲ�䡢�¸����Ƥߤ���̤���𡢥ȥ�֥�˴������ޤ줿���ηи��̤ʤɡ���������������������򿥤�ޤ��ƾҲ𤷤Ƥ��������Ȼפ��ޤ���
�ǿ�������
<%==comments[n].author%>
<% } %>