Think ParallelōsI

��2��@����̃v���Z�b�T�ƕ�����s

������Ѓt�B�b�N�X�^�[�Y
���� �F�j

2009/8/24

CPU�̎��g���̍��������������ł��ɂȂ�A1�R�A�ɂ����鏈���\�͂͌��E�ƂȂ����BCPU�̐i�����}���`�R�A���Ɍ����������ʁA����R���s���[�e�B���O�̖�˂��J���ꂽ�i�ҏW���j

�}���`�v���Z�b�T�T��

�@�v���Z�b�T�̃n�[�h�E�F�A�́A����v���O�����Ƃ͐؂��Ă��؂�Ȃ��֌W�ɂ���܂��B

�@��1��u���񏈗���̊����Ă݂悤�v�Ő��������Ƃ���A����v���O���������s����w�i�ɂ́A����v���O�����̍������̌��E������܂��B���̌��E�́A���񉻂������N�������Ƃ��������łȂ��A����܂ł̔ėp�v���Z�b�T�ł͂��܂茩���Ȃ��������A�N�Z�X�̕��@��A���ߎ��s�̕��@���̗p�����v���Z�b�T�̓o��������N�����܂����B

�@���‚ăv���O�����̍œK���Ƃ������̂́A���ߎ��s�ɕK�v�ȃN���b�N����A���ߐ��A���W�X�^�����l�������v���O�����������Ƃ����Ӗ��ł����B����ł͂����̍œK���ɂ‚��ẮA�p�C�v���C�����s�⃌�W�X�^���̑����A�R���p�C���̍œK���Z�p�̔��B�ɂ���āA���Ȃ肤�܂����ۉ�����Ă��܂��B

�@�������A�������A�N�Z�X�̕��@�����Ȗ��߂̎��s�����܂����ۉ�������@�͂܂����‚����Ă��炸�A�������l�������v���O�����������ɂ́A�v���O���}�����ɂ��킹�đn�ӍH�v������ȊO�̕��@�͂���܂���B

�@�‚܂�A����v���O���~���O�̎���ɂ́A�v���O���}������ȃ������A�N�Z�X�▽�ߎ��s�̕��@�Ȃǂ𗝉����������ŁA����ɂ��킹������v���O�����������K�v������̂ł��B

�@�n�[�h�E�F�A��m�炸���ĕ��񉻂����Ȃ���A�Ƃ������ƂŁA����́u����̃v���Z�b�T�ƕ�����s�v�Ƒ肵�܂��āA���݂̈�ʓI�ȃv���Z�b�T�Ɍ��������n�[�h�E�F�A�ɂ‚��ĉ�����Ă����܂��B

���܂ǂ��̃v���Z�b�T�̍\��

�@�����Ƃ����ƁA�}���`�v���Z�b�T��}���`�R�A�̂��Ƃ�z��������������Ǝv���܂����A���ۂ̃n�[�h�E�F�A������Ƃق��ɂ����܂��܂ȃ��x���ŕ�����s���s���Ă�����𔭌��ł��܂��B

�@�����ł͂������܂߂Č���̃v���Z�b�T�Ɏg���Ă��������s�̎d�g�݂Ƃ��̎d�g�݂��̗p�����w�i�ɂ‚��Đ������܂��B

�@�܂��́A����̈�ʓI�Ȕėp�v���Z�b�T�̃n�[�h�E�F�A�\���ɂ‚��Đ������܂��傤�B����n�[�h�E�F�A�́A�����‚�����n�[�h�E�F�A�̂����A�ǂ̕���������ɓ��삷�邩�ɂ���ĕ��ނ���Ă���A����n�[�h�E�F�A��m�邽�߂ɂ̓v���Z�b�T�̍\���Ƃ������̂�m���Ă����K�v������܂��B

�@���܂ǂ��̃v���Z�b�T�̍\���̃u���b�N�}�������܂��B

�}1�@���܂ǂ��̃v���Z�b�T�̍\���̃u���b�N�}
܂ǂ̃vZbT̍\̃ubN}

�@�e�������ꂼ��������Ă����܂��傤�B

architectural state

���W�X�^�Ȃǃv���O���������s���邽�߂ɕK�v�ȃv���Z�b�T�̏�ԑS�̂��܂ޕ����ł�

���߃f�R�[�_

���C���������������͖��߃L���b�V���Ɋ܂܂�閽�߂��n�[�h�E�F�A�����s���邽�߂̐M���ɕϊ����镔���ł�

���s���j�b�g

���߃f�R�[�h��̐M�������߂��Ď��ۂɌv�Z���s�������ł�

�L���b�V��

�������A�N�Z�X�����������邽�߂Ƀ��C���������ɂ��閽�߂�f�[�^���ꎞ�I�ɒ~���Ă��������ł�

�������R���g���[��

���C���������Ƃ̃f�[�^�̂��Ƃ���s�������ł�

�o�X

���C������������Ӌ@��̃f�[�^���^�ԕ����ł�

���C��������

�f�[�^��~���Ă��������ł��i�����ł̓L���b�V���������Ƌ�ʂ��邽�߂Ɂu���C���v�������Ƃ��Ă����܂��j

�@���ۂ̃n�[�h�E�F�A�ɂȂ�ƁA���������ׂ�����؂�ꂽ��A��؂肪�B���ɂȂ����肵�܂����A��̂͂��̂悤�ȗ����Ŗ��Ȃ��Ǝv���܂��B

�X�[�p�[�X�J���[

�@��قǂ̃u���b�N�}�Ŏ������悤�ɍ\���𕪂����ꍇ�A�v���O�����̎��s�𑬂�����ɂ́A���̖��O���炵�����s���j�b�g��������ē����ɕ����̖��߂����s�ł���悤�ɂ���΂悢�A�Ƃ����C�����܂��B

�@����͎��ۂɂ��̂Ƃ���ŁA�ǂ�ȃv���O�������悭����ƕ��񏈗��ł����������̂ł��B�Ⴆ�΁A���X�g1�̂悤�ɉ����l�����ɏ������V���O���X���b�h�̃v���O�����̃��[�v�ł�i�̃C���N�������g�Ai��n�̔�r�A������sum+=a[i]�̕����͓����Ɏ��s�ł��܂��ii�̒l�̍X�V�ɒ��ӂ���K�v������܂����j�B

�����X�g1�@�����l�����ɏ��������v�����߂�v���O����
for (i=0; i<n; i++) {
   sum += a[i];
}

�@����𓯎����s�ł���n�[�h�E�F�A������΁A�v���O�������������s�ł���悤�ɂȂ�ł��傤�B

�@�X�[�p�[�X�J���[�́A���������������̂ŁA���s���j�b�g����񉻂������̂ł��B�܂��A���s���j�b�g�������ɂȂ����ꍇ�A����ɂ��킹�ĕ����̖��߂𓯎��Ƀf�R�[�h����K�v�����邽�߁A���߃f�R�[�_�����񉻂��Ă���܂��B

�@�X�[�p�[�X�J���[�̃u���b�N�}�������܂��B�}���ʼn��F�Ŏ�����镔�������񉻂���Ă�����ł��B

�}2�@�X�[�p�[�X�J���[�v���Z�b�T�̃u���b�N�}
X[p[XJ[vZbT̃ubN}

�@�X�[�p�[�X�J���[�͊�{�I�ɂ̓\�t�g�E�F�A����͌����Ȃ��悤�ɂȂ��Ă��܂����A�X�[�p�[�X�J���[���ӎ����ăv���O�����������A�v���O���������������邱�Ƃ͉”\�ł��B

�@�Ⴆ�΁A�����Z����x�ɕ������s�ł���v���Z�b�T�̏ꍇ�́A���X�g2�̂悤�ɏ������Ƃō������ł���ꍇ������܂��B

�����X�g2 �X�[�p�[�X�J���[���ӎ��������v�����߂�v���O����
for (i=0; i<n; i+=2) {
   sum0 += a[i+0];
   sum1 += a[i+1];
}
sum = sum0 + sum1;

�@���X�g1�̃v���O�����ł͉��Z�Ɉˑ������邽�ߕ�����s�ł��܂��񂪁A���X�g2�̃v���O�����ł͈ˑ����Ȃ����Z��2���񓯎����s�ł��܂��B

 
1/3
next

Index
����̃v���Z�b�T�ƕ�����s
Page1
�}���`�v���Z�b�T�T��
���܂ǂ��̃v���Z�b�T�̍\��
�X�[�p�[�X�J���[
  Page2
Single Instruction Multiple Data
�}���`�R�A�E�}���`�v���Z�b�T
  Page3
�n�[�h�E�F�A�}���`�X���b�h

index Think Parallel�ōs�����I


Coding Edge �t�H�[���� �V���L��
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

>

Coding Edge �L�������L���O

�{�� ����