GPUã®ã¡ã¢ãªéå±€
GDDR5 DRAMãHBMã䜿ãGPUã®ã¡ã€ã³ã¡ã¢ãª(以äžã§ã¯CPUã®ã¡ã€ã³ã¡ã¢ãªãšåºå¥ããããããã€ã¹ã¡ã¢ãªãšåŒã¶)ã¯é«ãã¡ã¢ãªãã³ãå¹ ãæã£ãŠããããã¢ã¯ã»ã¹ã«æããæéã¯ãDDR3/4 DRAMãšå€§å·®ãªããGPUã®ã¯ããã¯ã¯CPUãããé ããšèšã£ãŠããçŽæ¥ãããã€ã¹ã¡ã¢ãªãã¢ã¯ã»ã¹ããã®ã§ã¯ãGPUã®åŠçã¯ã¡ã¢ãªããã¯ã«ãªã£ãŠããŸãã
ãã®ãããCPUã®å Žåãšåæ§ã«ãGPUã³ã¢ã®è¿ãã«é«éã®å°å®¹éã®ã¡ã¢ãªã眮ããå€ãã®åŠçã§ã¯ãã®ã¡ã¢ãªã䜿çšããããšã«ãããå¹³åçãªã¢ã¯ã»ã¹æéãççž®ããŠæ§èœãäžãããšããæ¹æ³ãåãããã
CPUã®å Žåã¯ãããŒããŠã§ã¢ã管çããŠèªåçã«äœ¿çšé »åºŠã®é«ãããŒã¿ãå ¥ããŠããããã£ãã·ã¥ã䜿ãããã®ãäžè¬çã§ããããGPUã§ã¯ã·ã§ã¢ãŒãã¡ã¢ãªãªã©ãšåŒã°ããããŒã«ã«ãªã¡ã¢ãªãããœãããŠã§ã¢ã«ãã管çãå¿ èŠãªãã£ãã·ã¥ãçšããããããšãå€ãã
ãã«ãã³ã¢ã§è€æ°ã®ãã£ãã·ã¥ãããCPUã§ã¯ãè€æ°ã®ãã£ãã·ã¥ã®éã§ãåãã¢ãã¬ã¹ã«ç°ãªãããŒã¿ãæžãããŠããŸããšããççŸãçããªãããã«ããã³ããŒã¬ã³ã·å¶åŸ¡ãå¿ èŠã«ãªãããããããã®ããã«ã¯ãæžã蟌ã¿ã«éããŠãä»ã®ãã¹ãŠã®ãã£ãã·ã¥ã«åãã¢ãã¬ã¹ã®ããŒã¿ãå ¥ã£ãŠããªãããšã確èªããããšãå¿ èŠã«ãªãã
äŸãã°ãK40 GPUãã®å Žåã15åã®SM(Streaming MultiprocessorãCPUã®ããã»ãµã³ã¢ã«çžåœããªããNVIDIAã¯Kepler GPUã®SMã¯èŠæš¡ã倧ããã®ã§SMXãšåŒãã§ãã)ããããããããã®SMãL1ãã£ãã·ã¥ãæã¡ã32Ã15ã¹ã¬ããã䞊åã«ã¡ã¢ãªã¢ã¯ã»ã¹ãè¡ãã®ã§ãã³ããŒã¬ã³ã·ãç¶æããããã®ãã©ãã£ãã¯ã7200åãšèšå€§ã«ãªããCPUã®ãããªããŒããŠã§ã¢å¶åŸ¡ã®ãã£ãã·ã¥ãå®çŸããããšãããšãªãŒãããããéåžžã«å€§ãããªã£ãŠããŸãã
ãã®ãããNVIDIAã®Kepler GPU(Tesla Kxxãšããååãä»ããããŠãã)ã®ã¡ã¢ãªéå±€ã¯å³3.8ã®ããã«ãªã£ãŠããã32ã¹ã¬ããã䞊åã«å®è¡ããSMXã®ããŒãã¹ãã¢ãŠãããããã¯ãShared MemoryãL1ãã£ãã·ã¥ãšRead Only Data Cacheãã¢ã¯ã»ã¹ã§ãããç©ççã«ã¯Shared MemoryãšL1ãã£ãã·ã¥ã¯1ã€ã®ã¡ã¢ãªã¢ã¬ã€ã§ãäž¡è ã®åèšã§64kBã®å®¹éãšãªã£ãŠãããShared Memory/L1ãã£ãã·ã¥ã®å®¹éã16KB/48KBã32KB/32KBã48KB/16KBãš3éãã«åå²ããŠäœ¿ãããšãã§ããããã«ãªã£ãŠããã48KBã®Read Only Data Cacheã¯ã°ã©ãã£ãã¯åŠçã®å Žåã«ã¯ãã¯ã¹ãã£ãæ ŒçŽãããããã¡ã¢ãªã§ãèªã¿åºããªã³ãªãŒã§éåžžã®ã¹ãã¢åœä»€ã§ã¯ããŒã¿ãæžã蟌ãããšã¯ã§ããªãã
L1ãã£ãã·ã¥ã¯èªã¿æžãå¯èœãªãã£ãã·ã¥ã§ããããK40 GPUã®å Žåã¯15åããSMã®L1ãã£ãã·ã¥éã®ã³ããŒã¬ã³ã·ã¯ããŒããŠã§ã¢çã«ã¯ç¶æãããŠããããL1ãã£ãã·ã¥ã«æžã蟌ãŸããããŒã¿ã¯ããããL2ãã£ãã·ã¥ã«åãåºãåœä»€ãå®è¡ããªããšL2ãã£ãã·ã¥ã«ã¯æžã蟌ãŸããªãããããŠãL2ãã£ãã·ã¥ã«æžãããããŒã¿ã¯èªåçã«ã¯ä»ã®SMã®L1ãã£ãã·ã¥ã«ã¯åæ ããããåãã¢ãã¬ã¹ã®ããŒã¿ãL1ãã£ãã·ã¥ã«æ®ã£ãŠãããšãå€ãããŒã¿ãèªãã§ããŸãã
AMDã®GCN(Graphics Core Next)ã¢ãŒããã¯ãã£ã®GPUã§ã¯ãL1ãã£ãã·ã¥ã«æžã蟌ãŸããããŒã¿ã¯Wavefront(NVIDIAã®Warpçžåœ)ã®64ã¹ã¬ããå šéšã§ãã®ã¹ãã¢åœä»€ãçµäºããæç¹ã§ãèªåçã«L2ãã£ãã·ã¥ã«ãæžã蟌ãŸãããããããèªåçã«ã¯ä»ã®Compute Unit(NVIDIAã®SMçžåœ)ã®L1ãã£ãã·ã¥ã«ã¯åæ ãããããã®ã¢ãã¬ã¹ã®ããŒã¿ãL1ãã£ãã·ã¥ã«æ®ã£ãŠãããšãå€ãããŒã¿ãèªãã§ããŸããšããç¹ã¯NVIDIAã®Fermi/Keplerã¢ãŒããã¯ãã£ã®GPUãšåãã§ããã
Kepler GPUã§ã¯ã1次ããŒã¿ãã£ãã·ã¥ã¯ãã¬ãžã¹ã¿ãããµããæã«ã¬ãžã¹ã¿ã®å 容ã远ãåºããŠã¬ãžã¹ã¿ã空ããå¿ èŠã«ãªã£ãæã«èªã¿èŸŒããšããã³ã³ãã€ã©ãæ¿å ¥ããSpill/FillåŠçã«éå®ããŠäœ¿ããšããæ¹æ³ã«å€æŽããããSpill/FillåŠçã§ããã°ã溢ããã¬ãžã¹ã¿ã®ããŒã¿ãä»ã®SMXã䜿ãããšã¯æãåŸãªãã®ã§ãSMéã®L1ãã£ãã·ã¥ã®ã³ããŒã¬ã³ã·ãç¶æããå¿ èŠããªãã
ãŸããRead Only Data Cacheã¯ãªãŒããªã³ãªãŒã§ããã®ã§ãSMéã§åãã¢ãã¬ã¹ã®ããŒã¿ãç°ãªãããšã¯æãåŸãªãã®ã§ãããããã£ãã·ã¥ã³ããŒã¬ã³ã·ãç¶æããã¡ã«ããºã ã¯å¿ èŠãªãã
L2ãã£ãã·ã¥ãšRead Only Data Cacheã¯ãåãã¢ãã¬ã¹ç©ºéã®åãã¢ãã¬ã¹ãæå®ããã°ãç°ãªãSMã§åããŠããã¹ã¬ããã§ããåãããŒã¿ãèªãããšãã§ãããL1ãã£ãã·ã¥ã¯ã³ããŒã¬ã³ã·ãç¶æãããŠããã°ãä»ã®SMã§åããŠããã¹ã¬ãããåãã¢ãã¬ã¹ã§åãããŒã¿ãã¢ã¯ã»ã¹ããããšãã§ããã®ã§ããããã³ããŒã¬ã³ã·ãç¶æãããŠããªãç¶æ ã§ã¯ãããã¯ä¿èšŒãããŠããªãã
äžæ¹ãShared Memoryã¯SMã«ããŒã«ã«ãªã¡ã¢ãªã§ãããããã€ã¹ã¡ã¢ãªã®ã¢ãã¬ã¹ç©ºéãšã¯ç¬ç«ãªã¢ãã¬ã¹ã§ã¢ã¯ã»ã¹ãããããããŠãåãSMã§åããŠããã¹ã¬ããéã§ã¯åãã¢ãã¬ã¹ã¯åã32bitããŒã¿ãã¢ã¯ã»ã¹ããããç°ãªãSMã®éã§ã¯ãã¢ãã¬ã¹ãåãã§ãã£ããšããŠãããŸã£ããç°ãªãããŒã¿ãã¢ã¯ã»ã¹ããããšã«ãªããShared Memoryã¯SMããŒã«ã«ãªã¡ã¢ãªã§ãããä»ã®SMã®ããŒã«ã«ã¡ã¢ãªãšã®ã³ããŒã¬ã³ã·ã¯ãæ¬è³ªçã«äžèŠã§ããã
ãããŠãL1ãã£ãã·ã¥ãšRead Only Data Cacheããã¹ãããšãL2ãã£ãã·ã¥ãã¢ã¯ã»ã¹ããããCPUã®L2ãã£ãã·ã¥(ãããã¯ãIntelã®ããLast Level Cache)ã¯ã©ã®ã¡ã¢ãªã¢ãã¬ã¹ã®ããŒã¿ã§ããã£ãã·ã¥ã®æ ŒçŽäœçœ®ã«å¶éã¯ãªãããGPUã®L2ãã£ãã·ã¥ã¯CPUã®L2ãã£ãã·ã¥ãšç°ãªããå³3.9ã«ç€ºãããã«ãé»è²ã®GDDR5ã¡ã¢ãªã®å 容ã¯é»è²ã®L2ãã£ãã·ã¥ã¹ã©ã€ã¹ã«ããå ¥ããªããšããããã«ã察å¿ã決ãŸã£ãŠããã
ããããã®512KBã®L2ãã£ãã·ã¥ã¹ã©ã€ã¹ã¯åè²ã®GDDR5ã¡ã¢ãªã®ã¢ãã¬ã¹ç¯å²ã®ããŒã¿ãããã£ãã·ã¥ããªãã®ã§ãåççã«ãåãã¢ãã¬ã¹ã®ããŒã¿ã2ã€ã®L2ãã£ãã·ã¥ã¹ã©ã€ã¹ã«ååšããããšã¯èµ·ãããªããåŸã£ãŠããã®æ§é ã®L2ãã£ãã·ã¥ã§ã¯èªåçã«ã³ããŒã¬ã³ã·ã¯ä¿ãããã
éåžžã®CPUã®ããã«ãDRAMããããšãã£ãã·ã¥ã®æ ŒçŽäœçœ®ã«å¶çŽã®ãªããã£ãã·ã¥ã®æ¹ããæ ŒçŽã®èªç±åºŠãé«ãããããçãé«ãããããšãã§ãããšæãã®ã§ãããã宿ž¬ããŒã¿ãèŠãããšãç¡ããã©ã®çšåºŠã®å·®ãããã®ãã¯åãããªãã

