ãªãã§ïŒ ãã®å€æ§æ§ããã¹ãŠçè§£ããæ¹æ³ã¯ïŒ
SIMDãSMPãGPGPUããã®ä»ã®æãããèšèã®æå³ã¯ã©ãã©ãå¢ããŠããŸããïŒ
æ¢åã®çç£æ§æè¡ã®é©çšæ§ã®éçã¯äœã§ããïŒ
ã¯ããã«
ãªããã®ãããªå°é£ãããã®ã§ããïŒ
ã³ã³ãã¥ãŒã¿ã®åŠçèœåã¯æ¥éã«æé·ããŠãããåžžã«ãæ¢åã®é床ã§ãã¹ãŠãååã§ãããšæãããŸãã
ããããããã-çç£æ§ã®åäžã«ããã以åã¯ã¢ãããŒãã§ããªãã£ãåé¡ã解決ã§ããŸãã å®¶åºã¬ãã«ã§ããããŒã ãããªã®ãšã³ã³ãŒããªã©ãé·æéã³ã³ãã¥ãŒã¿ãŒãããŒãããã¿ã¹ã¯ããããŸãã ç£æ¥ãç§åŠã«ã¯ãããã«å€ãã®ãã®ãããªã¿ã¹ã¯ããããŸãã巚倧ãªããŒã¿ããŒã¹ãåååååŠèšç®ãè€éãªã¡ã«ããºã ã®ã¢ããªã³ã°-è»ããžã§ãããšã³ãžã³ãªã©ããã¹ãŠã®èšç®ã«ã¯ãŸããŸã匷åãªåãå¿ èŠã§ãã
é廿°å¹Žéãäž»ãªçç£æ§ã®åäžã¯ããã€ã¯ãããã»ããµãŒèŠçŽ ã®ãµã€ãºãçž®å°ããããšã«ãããéåžžã«ç°¡åã«æäŸãããŸããã åæã«ãæ¶è²»é»åãäœäžããåäœåšæ³¢æ°ãå¢å ããã³ã³ãã¥ãŒã¿ãŒã¯ãŸããŸãé«éã«ãªããäžè¬çã«ã¯ã¢ãŒããã¯ãã£ãç¶æãããŸããã è¶ å°ååè·¯ã®è£œé ããã»ã¹æè¡ã¯å€åããŠãããã¡ã¬ãã«ãã¯ã®ã¬ãã«ãã«æé·ããã¡ã¬ãçŸäžã§ããã°ãã®ã¬ã¯ãã§ã«1ç§ããã10ååã®æäœã§ãããããçç£æ§ãåäžããŸãã
ãããããåç¥ã®ããã«ã楜åã¯æ°žé ã§ã¯ãªããã誰ã«ãšã£ãŠãããã§ã¯ãããŸãããã³ã³ãã¥ãŒã¿ãŒã®äžçã§çµãã£ãã®ã¯ããã»ã©æã§ã¯ãããŸããã åšæ³¢æ°ããã以äžäžããããšã¯ã§ããªãããšã倿ããŸãããæŒã黿µãå¢å€§ããããã»ããµãéç±ããŠãããããããã€ãã¹ããããšã¯ã§ããŸããã ãã¡ãããå·åŽã·ã¹ãã ãéçºããããã©ãžãšãŒã¿ãŒã䜿çšããããæ¶²äœçªçŽ ã§å®å šã«å·åŽãããã§ããŸãããããã¯ãã¹ãŠã®ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ããããã§ã¯ãªããã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒããã¯ãããã¢ã ããå©çšã§ããŸãã ãŸããå·åŽãè¡ã£ãå Žåãæé·ã®å¯èœæ§ã¯å°ãããçŽ2åã«ãªããŸãããããã¯ã幟äœåŠçé²è¡ã«æ £ããŠãããŠãŒã¶ãŒã«ã¯åãå ¥ããããŸããã§ããã
ãã©ã³ãžã¹ã¿ã®æ°ãšé¢é£ããã³ã³ãã¥ãŒã¿ãŒã®ããã©ãŒãã³ã¹ã1.5幎ãã2幎ããšã«2åã«ãªã£ãã ãŒã¢ã®æ³åã¯é©çšãããªããªãããã§ãã
èããŠå®éšããæéã§ããèšç®ã®é床ãäžããããã«èãããããã¹ãŠã®æ¹æ³ãæãåºããŠãã ããã
æ§èœåŒ
æãäžè¬çãªæ§èœåŒãåããŸãã

çç£æ§ã¯ã1ç§ãããã«å®è¡ãããåœä»€ã®æ°ã§æž¬å®ã§ããããšãããããŸãã
ããã»ã¹ããã詳现ã«èª¬æããã¯ããã¯åšæ³¢æ°ã玹ä»ããŸãã

åãåã£ãäœæ¥ã®æåã®éšåã¯1ã¯ããã¯ãµã€ã¯ã«ïŒIPCã1åœä»€ãããã®åœä»€ïŒã§å®è¡ãããåœä»€ã®æ°ã2çªç®ã¯åäœæéãããã®ããã»ããµã¯ããã¯ã®æ°ãã¯ããã¯é床ã§ãã
ãããã£ãŠãããã©ãŒãã³ã¹ãåäžãããã«ã¯ãã¯ããã¯åšæ³¢æ°ãäžãããããµã€ã¯ã«ããšã«å®è¡ããåœä»€ã®æ°ãå¢ããå¿ èŠããããŸãã
ãªããªã é »åºŠã®å¢å ã忢ããå Žåãå®è¡å¯èœãªåœä»€ã®æ°ããäžåºŠã«ãå¢ããå¿ èŠããããŸãã
䞊ååŠçãæå¹ã«ãã
ãµã€ã¯ã«ããšã«å®è¡ãããåœä»€ã®æ°ãå¢ããæ¹æ³ã¯ïŒ
æããã«ãäžåºŠã«è€æ°ã®åœä»€ã䞊è¡ããŠå®è¡ããŸãã ãããããããè¡ãæ¹æ³ã¯ïŒ
ããã¯ãã¹ãŠãå®è¡ããŠããããã°ã©ã ã«äŸåããŸãã
ããã°ã©ããŒãããã°ã©ã ãã·ã³ã°ã«ã¹ã¬ãããšããŠèšè¿°ãããã¹ãŠã®åœä»€ãé çªã«å®è¡ãããå Žåãããã»ããµãŒïŒãŸãã¯ã³ã³ãã€ã©ãŒïŒã¯ã人ã®ããã«èãããåæã«å®è¡ã§ããããã°ã©ã ã®äžŠåéšåãæ€çŽ¢ããå¿ èŠããããŸãã
åœä»€ã¬ãã«ã®äžŠè¡æ§
ç°¡åãªããã°ã©ã ãèŠãŠã¿ãŸãããïŒ
a = 1
b = 2
c = a + b
æåã®2ã€ã®åœä»€ã¯äžŠè¡ããŠå®è¡ã§ãã3çªç®ã®åœä»€ã®ã¿ããããã«äŸåããŸãã ãã®ãããããã°ã©ã å šäœã¯3ã€ã®ã¹ãããã§ã¯ãªã2ã€ã®ã¹ãããã§å®äºããããšãã§ããŸãã
ç¬ç«ããç«¶åããåœä»€ãç¬ç«ããŠæ±ºå®ãããããã䞊åã«å®è¡ã§ããããã»ããµãã¹ãŒããŒã¹ã«ã©ãŒãšåŒã³ãŸãã
ææ°ã®x86-ã¹ãŒããŒã¹ã«ã©ãŒããã»ããµãå«ãå€ãã®ææ°ã®ããã»ããµããããŸãããå¥ã®æ¹æ³ããããŸããããã»ããµãåçŽåããã³ã³ãã€ã©ã«äžŠååŠçãå²ãåœãŠãããšã§ãã åæã«ãããã»ããµã¯ãããã°ã©ã ã³ã³ãã€ã©ãæºåãããããããã§ã³ãã³ããå®è¡ããŸãããã®ãããªããã³ãã«ãã¯ãäºãã«ç¬ç«ããŠããã䞊è¡ããŠå®è¡ã§ããåœä»€ã®ã»ããã§ãã ãã®ã¢ãŒããã¯ãã£ã¯VLIWïŒéåžžã«é·ãåœä»€èª-ãéåžžã«é·ããã·ã³åœä»€ãïŒãšåŒã°ãããã®ãããªãéçºã¯EPICïŒæç€ºçãªäžŠååœä»€ã³ã³ãã¥ãŒãã£ã³ã°ïŒ-ã³ãã³ãã®æç€ºçãªäžŠåæ§ãåãããã€ã¯ãããã»ããµã¢ãŒããã¯ãã£ïŒ
ãã®ã¢ãŒããã¯ãã£ãæã€æãæåãªããã»ããµã¯ãIntel Itaniumã§ãã
ãµã€ã¯ã«ããšã«å®è¡ãããåœä»€ã®æ°ãå¢ããããã®3çªç®ã®ãªãã·ã§ã³ããããŸããããã¯ãã€ããŒã¹ã¬ããã£ã³ã°ãã¯ãããžã§ãããã®æè¡ã§ã¯ãã¹ãŒããŒã¹ã«ã©ãŒããã»ããµã¯1ã€ã®ã¹ã¬ããã®åœä»€ã䞊ååããŸããããè€æ°ã®ïŒææ°ã®ããã»ããµã§ã¯2ã€ã®ïŒäžŠåã¹ã¬ããã®ã³ãã³ãã䞊ååããŸãã
ã€ãŸã ç©ççã«ã¯ãããã»ããµã³ã¢ã¯1ã€ã§ããã1ã€ã®ã¿ã¹ã¯ããã»ããµé»æºãå®è¡ãããšãã«ã¢ã€ãã«ç¶æ ã䜿çšããŠãå¥ã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯ããã€ããŒã¹ã¬ããã£ã³ã°ãã¯ãããžãåãã1ã€ã®ããã»ããµïŒãŸãã¯1ã€ã®ããã»ããµã³ã¢ïŒã2ã€ã®ç¬ç«ããããã»ããµãšèŠãªããŸãã ããããå®éã«ã¯ããã¡ããããã€ããŒã¹ã¬ããã£ã³ã°ã¯å®éã®2ã€ã®ç¬ç«ããããã»ããµãããåäœãæªããªããŸãã ãã®ã¿ã¹ã¯ã¯ããããã®éã§èšç®èœåãç«¶ããŸãã
åœä»€ã¬ãã«ã®åæå®è¡æè¡ã¯ã90幎代ãš2000幎代ååã«ç©æ¥µçã«éçºãããŸããããçŸåšã§ã¯ãã®å¯èœæ§ã¯ã»ãšãã©æ¯æžããŠããŸãã ã³ãã³ãã®åé 眮ãã¬ãžã¹ã¿ã®åå倿Žããã®ä»ã®æé©åã®äœ¿çšãã·ãªã¢ã«ã³ãŒãããã®äžŠåå®è¡ã»ã¯ã·ã§ã³ã®éžæã¯å¯èœã§ãããäŸåé¢ä¿ãšåå²ã§ã¯ã³ãŒããèªåçã«äžŠååã§ããŸããã åœä»€ã¬ãã«ã§ã®äžŠè¡æ§ã¯ã人éã®ä»å ¥ãå¿ èŠãšããªãããè¯å¥œã§ããããããæªãããšã§ãã人ããã€ã¯ãããã»ããµãŒããè³¢ãéããçã®äžŠåã³ãŒããæžããªããã°ãªããŸããã
ããŒã¿ã¬ãã«ã®åæå®è¡æ§
ãã¯ãã«ããã»ããµ
æ¢ã«ã¹ã«ã©ãŒæ§ã«ã€ããŠèª¬æããŸããããã¹ã«ã©ãŒã«å ããŠãã¯ãã«ããããã¹ãŒããŒã¹ã«ã©ãŒããã»ããµã«å ããŠãã¯ãã«ããããŸãã
ãã¯ãã«ããã»ããµã¯ãããŒã¿é åå šäœããã¯ãã«ã«å¯ŸããŠäœããã®æäœãå®è¡ããŸãã ãçŽç²ãªã圢ã§ããã¯ãã«ããã»ããµã¯80幎代ã«ç§åŠèšç®çšã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã§äœ¿çšãããŸããã
ããªã³ã®åé¡ã«ãããš ããã¯ãã«ããã»ããµã¯SIMDã«å±ããŸãïŒåäžåœä»€ãè€æ°ããŒã¿-åäžåœä»€ã¹ããªãŒã ãè€æ°ããŒã¿ã¹ããªãŒã ïŒ ã
çŸåšãx86ããã»ããµã¯å€ãã®ãã¯ãã«æ¡åŒµãå®è£ ããŠããŸã-ãããã¯MMXã3DNowïŒãSSEãSSE2ãªã©ã§ãã
ããšãã°ãSSEã䜿çšããŠ1ã€ã®ã³ãã³ãã§4çµã®æ°å€ãä¹ç®ããããã«èŠãããã®ã¯æ¬¡ã®ãšããã§ãã
float a[4] = { 300.0, 4.0, 4.0, 12.0 };
float b[4] = { 1.5, 2.5, 3.5, 4.5 };
__asm {
movups xmm0, a ; // 4 a xmm0
movups xmm1, b ; // 4 b xmm1
mulps xmm1, xmm0 ; // : xmm1=xmm1*xmm0
movups a, xmm1 ; // xmm1 a
};
ãããã£ãŠã4ã€ã®é£ç¶ããã¹ã«ã©ãŒä¹ç®ã®ä»£ããã«ããã£ã1ã€ã®ããšãè¡ããŸããããã¯ãã«ã§ãã
ãã¯ãã«ããã»ããµã¯ã倧éã®ããŒã¿ã®èšç®ãå€§å¹ ã«é«éåã§ããŸããããã®ç¯å²ã¯éãããŠãããåºå®ã¢ã¬ã€ã§ã®äžè¬çãªæäœã¯ã©ãã«ãé©çšã§ããŸããã
ãã ãããã¯ãã«åãèšç®ããããã®ç«¶äºã¯æ±ºããŠçµããã§ã¯ãããŸããããã®ãããææ°ã®Intelããã»ããµã§ã¯ãæ°ãããã¯ãã«æ¡åŒµAVXïŒAdvanced Vector ExtensionïŒ
ãããã圌ãã¯ä»ããã£ãšé¢çœããã§ã
GPU
ææ°ã®ãããªã«ãŒãã®ããã»ããµã®çè«çãªåŠçèœåã¯ãåŸæ¥ã®ããã»ããµãããã¯ããã«éãæé·ããŠããŸãïŒNVIDIAã®æåãªå³ãåç §ïŒ

å°ãåãŸã§ããã®æ©èœã¯CUDA / OpenCLã䜿çšãããŠãããŒãµã«é«æ§èœã³ã³ãã¥ãŒãã£ã³ã°ã«é©åããŠããŸããã
ã°ã©ãã£ãã¯ããã»ããµã®ã¢ãŒããã¯ãã£ïŒGPGPUãGPUã§ã®æ±çšèšç®-ãããªã«ãŒãã«ããæ±çšèšç®ïŒã¯ããã§ã«èæ ®ãããŠããSIMDã«è¿ããã®ã§ãã
SIMT-ïŒåäžåœä»€ãè€æ°ã¹ã¬ããã1åœä»€-è€æ°ã¹ã¬ããïŒãšåŒã°ããŸãã SIMDã®å Žåãšåæ§ã«ãæäœã¯ããŒã¿é åã䜿çšããŠå®è¡ãããŸãããåŠçãããããŒã¿ã®ã»ã«ããšã«ãã³ãã³ãã®åå¥ã®ã¹ã¬ãããæ©èœããã¯ããã«èªç±åºŠããããŸãã
çµæãšããŠ
1ïŒäžŠè¡ããŠãæ°çŸã®ããŒã¿ã»ã«ã«å¯ŸããŠæ°çŸã®æäœãå®è¡ã§ããŸãã
2ïŒã³ãã³ãã®ä»»æã®ã·ãŒã±ã³ã¹ãåã¹ã¬ããã§å®è¡ãããç°ãªãã»ã«ãåç §ã§ããŸãã
3ïŒåå²ãå¯èœã§ãã ãã ãããã®å Žåãæäœã®ã·ãŒã±ã³ã¹ãåãã¹ã¬ããã®ã¿ã䞊åã«å®è¡ã§ããŸãã
GPGPUã¯ãããã€ãã®ã¿ã¹ã¯ã§å°è±¡çãªçµæãéæããŸãã ãããããã®æè¡ãæ®éçãªåœã®æ©äººã«ãªãããšãèš±å¯ããªãæ ¹æ¬çãªå¶éããããŸããããªãã¡
1ïŒGPUã§å éã§ããã®ã¯ãããŒã¿ã«å¿ãã䞊åã³ãŒãã®ã¿ã§ãã
2ïŒGPUã¯ç¬èªã®ã¡ã¢ãªã䜿çšããŸãã GPUã¡ã¢ãªãšã³ã³ãã¥ãŒã¿ãŒã¡ã¢ãªã®éã§ããŒã¿ã転éããã®ã¯éåžžã«é«äŸ¡ã§ãã
3ïŒå€æ°ã®ãã©ã³ããæã€ã¢ã«ãŽãªãºã ã¯GPUã§éå¹ççã«åäœããŸã
ãã«ãã¢ãŒããã¯ãã£
ãã®ãããã³ãã³ããšããŒã¿ã®äž¡æ¹ã§ç¬ç«ããŠäžŠåããå®å šãªäžŠåã¢ãŒããã¯ãã£ã«ãªããŸããã
Flynnã®åé¡ã§ã¯ãããã¯MIMDïŒè€æ°åœä»€ã¹ããªãŒã ãè€æ°ããŒã¿ã¹ããªãŒã -è€æ°ã³ãã³ãã¹ããªãŒã ãè€æ°ããŒã¿ã¹ããªãŒã ïŒã§ãã
ãã®ãããªã·ã¹ãã ã®èœåãæå€§éã«æŽ»çšããã«ã¯ããã«ãã¹ã¬ããããã°ã©ã ãå¿ èŠã§ããããã®å®è¡ãè€æ°ã®ãã€ã¯ãããã»ããµã§ã忣ãããããšãã§ããããã«ããé »åºŠãå¢ããããšãªãçç£æ§ã®åäžãå®çŸã§ããŸãã ããŸããŸãªãã«ãã¹ã¬ãããã¯ãããžãŒãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã§é·ãé䜿çšãããŠããŸããããçŸåšã§ã¯ãããã¯äžè¬ãŠãŒã¶ãŒã«ã倩ããäžãã£ãŠãããããã«ãã³ã¢ããã»ããµãäŸå€ãããäžè¬çã§ãã ãããããã«ãã³ã¢ã¯äžèœè¬ãšã¯ã»ã©é ããã®ã§ãã
å³ããæ³åŸã§ãããããã¯æ³åŸã§ã
䞊ååŠçã¯ãã¯ããã¯é床ã®å¶éãåé¿ããè¯ãæ¹æ³ã§ãããç¬èªã®å¶éããããŸãã
ãŸããããã¯ã¢ã ããŒã«ã®æ³åã§ããã
ããŸããŸãªèšç®æ©ã§åœä»€ã䞊ååããããšã«ããããã°ã©ã ã®å®è¡ãå éããããšã¯ããã®é次åœä»€ãå®è¡ããã®ã«å¿ èŠãªæéã«ãã£ãŠå¶éãããŸãã
ã³ãŒãã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã¯ãããã»ããµã®æ°ãšåŒã«åŸã£ãŠã³ãŒãã®äžŠåæ§ã«äŸåããŸã

å®éã䞊åå®è¡ã䜿çšãããšã䞊åã³ãŒãã®ã¿ã®å®è¡æéãççž®ã§ããŸãã
ã©ã®ããã°ã©ã ã§ãã䞊åã³ãŒãã«å ããŠãé£ç¶ããã»ã¯ã·ã§ã³ããããããã»ããµã®æ°ãå¢ãããŠã»ã¯ã·ã§ã³ãé«éåããããšã¯ã§ããã1ã€ã®ããã»ããµã®ã¿ããããã«åãçµãã§ããŸãã
ããšãã°ãã·ãŒã±ã³ã·ã£ã«ã³ãŒãã®å®è¡ã«ããã°ã©ã å šäœã®å®è¡æéã®25ïŒ ããããã£ãŠããªãå Žåããã®ããã°ã©ã ã4å以äžå éãããšå€±æããŸãã
䞊åã³ã³ãã¥ãŒãã£ã³ã°ããã»ããµã®æ°ã«å¯Ÿããããã°ã©ã ã®å éã®äŸåé¢ä¿ã®ã°ã©ããäœæããŸãããã é æ¬¡ã³ãŒãã®1/4ãšäžŠåã®3/4ãåŒã«ä»£å ¥ãããšã次ã®ããã«ãªããŸãã

æ²ããã§ã ãã®ããã«ã
æ°åã®ããã»ããµãšãã©ãã€ãã®ã¡ã¢ãªãåããäžçæéã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã§ãäžèŠåªããïŒ75ïŒ ïŒïŒäžŠåã¿ã¹ã¯ã§ãéåžžã®ãã¹ã¯ãããã¯ã¯ããã®2åæªæºã®é床ã§ãã
ãããŠããã®çæ³çãªå Žåãããããã«æªãã§ãã çŸå®ã®äžçã§ã¯ã䞊ååŠçã®ã³ã¹ãããŒãã«çãããªãããšã¯ãããŸããããããã£ãŠãããã»ããµã远å ãããšãããæç¹ããããã©ãŒãã³ã¹ãäœäžãå§ããŸãã
ããããçŸä»£ã®éåžžã«ãã«ãã³ã¢ãªã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã®ãã¯ãŒã¯ã©ã®ããã«äœ¿çšãããŠããŸããïŒ
å€ãã®ã¢ã«ãŽãªãºã ã§ã¯ããã©ã¬ã«ã³ãŒãã®å®è¡æéã¯åŠçãããããŒã¿ã®éã«å€§ããäŸåããŸãããã·ãªã¢ã«ã³ãŒãã®å®è¡æéã¯ããã§ã¯ãããŸããã åŠçããå¿ èŠãããããŒã¿ãå€ãã»ã©ã䞊ååŠçããã®ã²ã€ã³ã倧ãããªããŸãã ãããã£ãŠã倧éã®ããŒã¿ãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã«ãé§ãç«ãŠããããšã§ãååãªå éãåŸãããŸãã
ããšãã°ãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã§3 * 3ã®è¡åãä¹ç®ãããšãéåžžã®ã·ã³ã°ã«ããã»ããµããŒãžã§ã³ãšã®éãã«æ°ä»ãããšã¯ã»ãšãã©ãããŸãããããµã€ãºã1000 * 1000ã®è¡åãä¹ç®ããããšã¯ããã«ãã³ã¢ãã·ã³ã§ã¯ãã§ã«å®å šã«æ£åœåãããŸãã
ãã®ãããªç°¡åãªäŸããããŸãïŒ1ãæã®9人ã®å¥³æ§ã¯1人ã®åäŸãåºç£ã§ããŸããã ããã§ã¯äžŠè¡æ§ã¯æ©èœããŸããã ãããã9ãæã§åã81人ã®å¥³æ§ãåºç£ããããšãã§ããŸãïŒæé«ã®å¹çãå®çŸããŸãïŒïŒ81人ã®åäŸã«ãã€ãŸããäžŠåæ§ã®åäžããæå€§ã®çè«ççç£æ§ãåŸãããšãã§ããŸãã ã
倧ããªã³ã³ãã¥ãŒã¿ãŒã«ã¯å€§ããªã¿ã¹ã¯ããããŸãïŒ
ãã«ãããã»ããµ
ãã«ãããã»ããµã¯ãè€æ°ã®ããã»ããµãšãã¹ãŠã®ããã»ããµããèŠããããã»ããµãå«ãã³ã³ãã¥ãŒã¿ã·ã¹ãã ã§ãã ã¢ãã¬ã¹ç©ºéã
ãã«ãããã»ããµã¯ãã¡ã¢ãªã䜿çšããäœæ¥ã®æ§æãç°ãªããŸãã
å ±æã¡ã¢ãªã·ã¹ãã
ãã®ãããªã·ã¹ãã ã§ã¯ãè€æ°ã®ããã»ããµïŒããã³ããã»ããµãã£ãã·ã¥ïŒãåãç©çRAMã«ã¢ã¯ã»ã¹ã§ããŸãã ãã®ãããªã¢ãã«ã¯ãå€ãã®å Žåã察称åãã«ãããã»ãã·ã³ã°ïŒSMPïŒãšåŒã°ããŸãã ãã®ãããªã·ã¹ãã èšèšã«ãããã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ã¯ãUMAïŒUniform Memory AccessïŒãšåŒã°ããŸãã ä»»æã®ããã»ããµãä»»æã®ã¡ã¢ãªäœçœ®ã«ã¢ã¯ã»ã¹ã§ãããã®ã¢ã¯ã»ã¹ã®é床ã¯ã¡ã¢ãªã¢ãã¬ã¹ã«äŸåããŸããã ãã ããåãã€ã¯ãããã»ããµãŒã¯ç¬èªã®ãã£ãã·ã¥ã䜿çšã§ããŸãã

è€æ°ã®ããã»ããµãã£ãã·ã¥ãµãã·ã¹ãã ã¯éåžžããã¹ãä»ããŠå ±æã¡ã¢ãªã«æ¥ç¶ãããŸã
åçãèŠãŠã¿ãŸãããã
äœãç§ãã¡ã«è¯ãã§ããïŒ
ã©ã®ããã»ããµããã¹ãŠã®ã¡ã¢ãªã«ã¢ã¯ã»ã¹ãããã¹ãŠåãããã«æ©èœããŸãã ãã®ãããªã·ã¹ãã ã®ããã°ã©ãã³ã°ã¯ãä»ã®ãã«ãã¢ãŒããã¯ãã£ãããç°¡åã§ãã æªããã¥ãŒã¹ã¯ããã¹ãŠã®ããã»ããµããã¹ãä»ããŠã¡ã¢ãªã«ã¢ã¯ã»ã¹ããåŠçã³ã¢ã®æ°ãå¢ãããšããã®ãã¹ã®ã¹ã«ãŒããããããã«ããã«ããã¯ã«ãªãããšã§ãã
é çãšãã£ãã·ã¥ã®äžè²«æ§ã確ä¿ããåé¡ã远å ããŸãã
ãã£ãã·ã¥ã®äžè²«æ§
ãã«ãããã»ããµã³ã³ãã¥ãŒã¿ãŒããããšããŸãã äžå³ã®ããã«ãåããã»ããµã«ã¯ç¬èªã®ãã£ãã·ã¥ããããŸãã äžéšã®ããã»ããµã«ã¡ã¢ãªã»ã«ãèªã¿åããããšããã£ãã·ã¥ã«æ ŒçŽãããŸãã ãã®ã»ã«ã倿ŽãããŠããªãéãåé¡ãããŸãã-é«éãã£ãã·ã¥ããèªã¿åãããäœããã®åœ¢ã§èšç®ã«äœ¿çšãããŸãã
ããã°ã©ã ã®çµæãããã»ããµã®1ã€ããã®ã¡ã¢ãªã»ã«ã倿ŽããäžäžèŽããªãå Žåãä»ã®ãã¹ãŠã®ããã»ããµããã®æŽæ°ããèŠããããã«ããã«ã¯ã ãã¹ãŠã®ããã»ããµã®ãã£ãã·ã¥ã®å 容ã倿Žãããã®æŽæ°äžã«äœããã®æ¹æ³ã§é床ãèœãšãå¿ èŠããããŸãã
ãã¹ã¯ãããã³ã³ãã¥ãŒã¿ãŒã®ããã«ãã³ã¢/ããã»ããµã®æ°ã2ã§ããã°è¯ãã®ã§ããã8ãŸãã¯16ã§ããã°ïŒ ãããŠããããããã¹ãŠ1ã€ã®ãã¹ãä»ããŠããŒã¿ã亀æããå Žåã¯ã©ãã§ããããïŒ
ããã©ãŒãã³ã¹ã®äœäžã¯éåžžã«é倧ã§ãã
ãã«ãã³ã¢ããã»ããµãŒ
ã¿ã€ã€ã®è² è·ãæžããæ¹æ³ã¯ïŒ
ãŸããäžè²«æ§ã確ä¿ããããã«äœ¿çšã忢ã§ããŸãã ãããè¡ãæãç°¡åãªæ¹æ³ã¯äœã§ããïŒ
ã¯ããã¯ããå ±æãã£ãã·ã¥ã䜿çšããŸãã ããããææ°ã®ãã«ãã³ã¢ããã»ããµã®åäœæ¹æ³ã§ãã

åçãèŠãŠã¿ãŸããããåã®ãã®ãšã¯2ã€ã®éãããããŸãã
ã¯ãããã£ãã·ã¥ã¯ä»ããã¹ãŠã®ãã®ã«ãªããŸãããäžè²«æ§ã®åé¡ã¯äŸ¡å€ããããŸããã ãããŠãåãé·æ¹åœ¢ã«å€ãããããã¯ãã¹ãŠã®ã³ã¢ãšãã£ãã·ã¥ãåããããäžã«ãããšããäºå®ã象城ããŠããŸãã å®éã«ã¯ãç»åã¯ããè€éã§ããã£ãã·ã¥ã¯ãã«ãã¬ãã«ã§ãäžéšã¯äžè¬çãäžéšã¯ããã§ã¯ãªãããããã®éã®éä¿¡ã«ç¹å¥ãªãã¹ã䜿çšã§ããŸããããã¹ãŠã®å®éã®ãã«ãã³ã¢ããã»ããµã¯ãã£ãã·ã¥ã®äžè²«æ§ã確ä¿ããããã«å€éšãã¹ã䜿çšããªããããè² è·ã軜æžãããŸãã
ãã«ãã³ã¢ããã»ããµã¯ãææ°ã®ã³ã³ãã¥ãŒã¿ãŒã®ããã©ãŒãã³ã¹ãåäžãããäž»ãªæ¹æ³ã®1ã€ã§ãã
ãã§ã«6ã€ã®æ žããã»ããµãçç£ãããŠããŸãããå°æ¥çã«ã¯ããã«å€ãã®ã³ã¢ããããŸã...å¶éã¯ã©ãã«ãããŸããïŒ
第äžã«ãããã»ããµã®ãæ žæ§ãã¯æŸç±ã«ãã£ãŠå¶éãããŸãã1ã€ã®ã¯ãªã¹ã¿ã«ã§åæã«åäœãããã©ã³ãžã¹ã¿ãå€ããªãã»ã©ããã®ã¯ãªã¹ã¿ã«ãç±ããªãã»ã©ãå·åŽãé£ãããªããŸãã
ãŸãã2çªç®ã®å€§ããªå¶éã¯ãå€éšãã¹ã®åž¯åå¹ ã§ãã å€ãã®ã³ã¢ã§ã¯ãç²ç ããããã«å€§éã®ããŒã¿ãå¿ èŠã§ããããã¹é床ãååã§ãªããªããããSMPãæŸæ£ããå¿ èŠããããŸã
NUMA
NUMAïŒNon-Uniform Memory Access-ãŸãã¯Non-Uniform Memory Architecture-Non-Uniform Memory ArchitectureïŒ-å ±éã®ã¢ãã¬ã¹ç©ºéã§ãã¡ã¢ãªã¢ã¯ã»ã¹ã®é床ããã®å Žæã«äŸåããã¢ãŒããã¯ãã£éåžžã¯ããã»ããµãç¬èªã®ãã¡ã¢ãªããããã¢ã¯ã»ã¹ã¯ããéãããç°è³ªãªãã¢ã¯ã»ã¹ã¯ããé ããªããŸãã
çŸä»£ã®ã·ã¹ãã ã§ã¯ããã®ããã«èŠããŸã

ããã»ããµã¯ã¡ã¢ãªã«æ¥ç¶ãããé«éãã¹ãä»ããŠçžäºã«æ¥ç¶ãããŸããAMDã®å Žåã¯Hyper Transportãææ°ã®Intelããã»ããµã®å Žåã¯QuickPath Interconnectã§ã
ãªããªã ãã¹ãŠã®ãŠãŒã¶ãŒã«å ±éã®ãã¹ã¯ãããŸããããèªåã®ãã¡ã¢ãªãæäœããå Žåãã·ã¹ãã ã®ããã«ããã¯ã«ãªãããšã¯ãªããªããŸãã
NUMAã¢ãŒããã¯ãã£ã«ãããããªãå¹ççãªãã«ãããã»ããµã·ã¹ãã ãäœæã§ããŸãããŸããææ°ã®ããã»ããµã®ãã«ãã³ã¢ã®æ§è³ªãèæ ®ãããšãããã»ããµãšã¡ã¢ãªã®æ··åã®ãã£ãã·ã¥ã³ããŒã¬ã³ã¹ã確ä¿ããè€éãã«ãã£ãŠäž»ã«å¶éãããã1ã€ã®ããã±ãŒãžãã§ãã§ã«éåžžã«æ·±å»ãªã³ã³ãã¥ãŒãã£ã³ã°ãã¯ãŒãåŸãããŸãã
ããããããã«ãã¯ãŒãå¿ èŠãªå Žåã¯ãè€æ°ã®ãã«ãããã»ããµã
ãã«ãã³ã³ãã¥ãŒã¿ãŒ
ãã«ãã³ã³ãã¥ãŒã¿ãŒã¯ãå ±æã¡ã¢ãªã®ãªãã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã ã§ãããçžäºã«æ¥ç¶ããã倿°ã®ã³ã³ãã¥ãŒã¿ãŒïŒããŒãïŒã§æ§æãããåã³ã³ãã¥ãŒã¿ãŒã«ã¯ç¬èªã®ã¡ã¢ãªããããŸãã å ±éã®ã¿ã¹ã¯ã§äœæ¥ããå Žåããã«ãã³ã³ãã¥ãŒã¿ãŒããŒãã¯çžäºã«ã¡ãã»ãŒãžãéä¿¡ããããšã«ããçžäºäœçšããŸãã
å€ãã®å žåçãªããŒãããæ§ç¯ãããææ°ã®ãã«ãã³ã³ãã¥ãŒã¿ãŒã¯ãã³ã³ãã¥ãŒãã£ã³ã°ã¯ã©ã¹ã¿ãŒãšåŒã°ããŸãã
ææ°ã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã®ã»ãšãã©ã¯ã¯ã©ã¹ã¿ãŒã¢ãŒããã¯ãã£äžã«æ§ç¯ãããé«éãããã¯ãŒã¯ïŒã®ã¬ãããã€ãŒãµããããŸãã¯InfiniBandïŒã䜿çšããŠå€ãã®ã³ã³ãã¥ãŒãã£ã³ã°ããŒããçµã¿åãããçŸä»£ã®ç§åŠã®çºå±ã«ãããŠæå€§éã®ã³ã³ãã¥ãŒãã£ã³ã°èœåãå®çŸããããšãå¯èœã«ããŸãã
圌ãã®åãå¶éããåé¡ãããªã倧ããã
ããã¯ïŒ
1ïŒæ°åã®ã³ã³ãã¥ãŒãã£ã³ã°ããã»ããµã䞊åã«å®è¡ããã·ã¹ãã ã®ããã°ã©ãã³ã°
2ïŒå·šå€§ãªé»åæ¶è²»
3ïŒåºæ¬çãªä¿¡é Œæ§ã®æ¬ åŠã«ã€ãªããè€éã
ãã¹ãŠäžç·ã«
ããŠã匷åãªã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã ãæ§ç¯ããããã®ã»ãŒãã¹ãŠã®æè¡ãšååã«ã€ããŠç°¡åã«èª¬æããŸããã
ä»ã§ã¯ãçŸä»£ã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã®æ§é ãæ³åããããšãã§ããŸãã
ããã¯ãã«ãã³ã³ãã¥ãŒã¿ãŒã¯ã©ã¹ã¿ãŒã§ãããåããŒãã¯è€æ°ã®ããã»ããµãŒãåããNUMAãŸãã¯SMPã·ã¹ãã ã§ãããåããã»ããµãŒã¯è€æ°ã®ã³ã¢ãåããåã³ã¢ã¯ã¹ãŒããŒã¹ã«ã©ãŒå éšäžŠååŠçãšãã¯ãã«æ¡åŒµã®å¯èœæ§ãåããŠããŸãã ããã«å ããŠãGPGPUã¢ã¯ã»ã©ã¬ãŒã¿ã¯å€ãã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ãããŠããŸãã
ããããã¹ãŠã®ãã¯ãããžãŒã«ã¯å©ç¹ãšå¶éããããã¢ããªã±ãŒã·ã§ã³ã«ã¯åŸ®åŠãªç¹ããããŸãã
ãããŠä»ããã®ãã¹ãŠã®çŽ æŽããããå¹ççã«ããŠã³ããŒãããŠããã°ã©ã ããŠã¿ãŠãã ããïŒ
ãã®ã¿ã¹ã¯ã¯ç°¡åã§ã¯ãããŸããããéåžžã«è峿·±ããã®ã§ãã
次ã«äœããæ¥ãŸããïŒ
æ å ±æº
䞊åèšç®ã€ã³ã¿ãŒãããã®åºç€ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒæè¡å€§åŠ
parallels.ruã®Flynnã®åé¡
ãã«ãããã»ããµããã®ã¡ã¢ãªçµç¹ãããã³IntelãšAMDã«ããå®è£
ã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã ã®ããã©ãŒãã³ã¹ãåäžãããæ¹æ³ãšããŠã®ãã«ãã³ã¢
ãŠã£ãããã£ã¢ãšã€ã³ã¿ãŒããã
PSãã®ããã¹ãã¯ã髿§èœã³ã³ãã¥ãŒãã£ã³ã°ã®åéã®ãã¯ãããžãŒã«é¢ããæ å ±ãæŽçããŠæŽçãã詊ã¿ãšããŠçãŸããŸããã äžæ£ç¢ºããã³ãšã©ãŒãçºçããå¯èœæ§ããããŸããã³ã¡ã³ããšã³ã¡ã³ãã«éåžžã«æè¬ããŸãã