²»ÐíÁªÏëÒôÀÖʱ¼ä
User Rating: / 0
 
GPUÌôÕ½CPU!Ïê½âCUDA+OpenCLÍþÁ¦
User Rating: / 0
ÖÚËùÖÜÖª£¬GPUÓµÓÐÊýÊ®±¶ÓÚCPUµÄ¸¡µãÔËËãÄÜÁ¦£¬µ«Èç´ËÇ¿´óµÄʵÁ¦¶àÊýÇé¿öÏÂÖ»ÄÜÓÃÀ´ÍæÓÎÏ·£¬Æñ²»¿Éϧ£¿Òò´Ë½üÄêÀ´Òµ½ç¶¼ÔÚÖÂÁ¦ÓÚ·¢¾òGPUµÄDZÄÜ£¬ÈÃËüÄܹ»ÔÚ·Ç3D¡¢·ÇͼÐÎÁìÓò´óչȭ½Å¡£

¡¡¡¡1999Ä꣬Ê׿ÅGPU(GeForce 256)µ®Éú£¬GPU´ÓCPUÊÖÖнӹÜT&L(×ø±êת»»ºÍ¹âÔ´)

¡¡¡¡2000Ä꣬HopfÔÚGPUÉÏʵÏÖС²¨±ä»»

¡¡¡¡2001Ä꣬LarsenÀûÓÃGPUµÄ¶àÎÆÀí¼¼Êõ×ö¾ØÕóÔËËã

¡¡¡¡2002Ä꣬HarrisÔÚGPUÉÏÓÃϸ°û×Ô¶¯»ú(CA)·ÂÕæ¸÷ÖÖÎïÀíÏÖÏó£¬PurcellµÚÒ»´ÎʹÓÃGPU¼ÓËÙ¹âÏ߸ú×ÙËã·¨

¡¡¡¡2003Ä꣬ÊÇGPGPUÁìÓò¾ßÓÐÀï³Ì±®ÒâÒåµÄÒ»Ä꣬KrugerʵÏÖÁËÏßÐÔ´úÊý²Ù×÷£»LiʵÏÖÁËLattice BoltzmannµÄÁ÷Ìå·ÂÕæ£»LefohnʵÏÖÁËLevel Set·½·¨µÈÒ»´óÅú³É¹û

¡¡¡¡2004Ä꣬GovindarajuÔÚÊý¾Ý¿âÁìÓòÓ¦ÓÃGPU¼ÓËÙÈ¡µÃ½øÕ¹£»ÉÌÒµÁìÓò£¬AppleÍÆ³öÖ§³ÖGPUµÄÊÓÆµ¹¤¾ß

¡¡¡¡2006Ä꣬Ê׿ÅDX10 GPU(GeForce 8800)µ®Éú£¬GPU´úÌæCPU½øÐиü¸ßЧµÄGeometry Shader(¼¸ºÎ×ÅÉ«)ÔËËã

¡¡¡¡2007Ä꣬Ö÷Á÷DX10 GPUÈ«ÃæÉÏÊУ¬½«CPU´ÓÀÍÀÛ²»¿°µÄ¸ßÇåÊÓÆµ½âÂëÔËËãÖнâ·Å³öÀ´£¬Èç½ñÕûºÏGPU¶¼ÍêÃÀÖ§³ÖÓ²½âÂë

¡¡¡¡2008Ä꣬CUDA¼Ü¹¹³õ¶·æÃ¢£ºPhysXÒýÇæ·¢²¼£¬GPU´úÌæCPUºÍPPU½øÐÐÎïÀí¼ÓËÙÔËË㣻Badaboom¡¢TMPGEncµÈÈí¼þ¿ªÊ¼ÀûÓÃGPUµÄ²¢ÐмÆËãÄÜÁ¦À´¼ÓËÙÊÓÆµ±àÂë

¡¡¡¡2009Ä꣬CUDA¡¢OpenCL¡¢DX11 Compute Shader°Ù»¨Æë·Å£¬GPU½«»áÈ«ÃæÈ¡´úCPU½øÐв¢ÐмÆË㣬´óÅúÓ¦ÓÃÈí¼þ¸ÄͶGPUÃÅÏÂ……
¡¡¡¡
¡¡ ¿ÉÒÔÕâô˵£¬CPUÊÇÍòÄܵģ¬Ëü¼¸ºõ¿ÉÒÔ´¦ÀíÈκÎÊÂÇ飬µ«ÓÉÓÚÉî¶ÈÁ÷Ë®×÷Òµ¼Ü¹¹µÄÌØÐÔ¡¢ÒÔ¼°¸¡µãÔËËãÄÜÁ¦µÄÏÞÖÆ£¬Ëü´¦ÀíһЩÈÎÎñʱµÄЧÂʺܵ͡£×ݹ۽üÄê À´GPUµÄ·¢Õ¹Àú³Ì£¬¾ÍÊÇÒ»²½²½µÄ½«ÄÇЩ²»ÊʺÏCPU´¦Àí¡¢»òCPUËã²»¶¯µÄÈÎÎñ×ªÒÆ¹ýÀ´£¬´Ó¶øÏû³ý³ÌÐòÔËËãʱµÄÆ¿¾±£¬´ó·ùÌáÉýµçÄÔÖ´ÐÐЧÄÜ£¬ÒÔ¸üСµÄ´ú ¼Û(³É±¾ºÍ¹¦ºÄ)ʵÏÖ¸üÇ¿´óµÄÐÔÄÜ¡£

¡¡¡¡µ«ÊÇ£¬ÏëÒªÈÃÒ»´óÅúÓ¦ÓÃÈí¼þ´ÓCPUÒÆÖ²µ½GPUÉÏ£¬·ÇÒ»³¯Ò»Ï¦ËùÄÜÍê³É£¬ÐèÒªÒµ½çµÄ´óÁ¦ÍƹãÒÔ¼°¿ª·¢Æ½Ì¨¼°±à³ÌÓïÑÔµÄÖ§³Ö¡£NVIDIAÔçÔÚ2005Ä꿪ʼ¾ÍÖÂÁ¦ÓÚÑз¢CUDA¼Ü¹¹¼°»ùÓÚCUDAµÄCÓïÑÔ¿ª·¢Õ߯½Ì¨£¬²¢ÓÚ2007ÄêÕýÊ½ÍÆ³ö£¬¶øÇÒרÃÅ·¢²¼ÁËÕë¶Ô¿ÆÑ§¼ÆËãµÄTeslaÆ·ÅÆ£¬ÔÚGPU¼ÆËã·½ÃæÒ»Ö±´¦ÓÚÁìÅܵØÎ»¡£

¡¡¡¡¶ø½ñÄêÓÉÆ»¹ûËù³«µ¼µÄOpenCL±ê×¼·¢²¼ºó£¬°üÀ¨NVIDIA¡¢Intel¡¢AMDÔÚÄÚµÄËùÓÐIT¾ÞÍ·¶¼±íʾ³öÁËŨºñµÄÐËȤ¡£ÓÐÁËͳһµÄ±ê×¼Ö®ºó£¬GPU¼ÆËãµÄÍÆ¹ãÓëÆÕ¼°¾ÍÊÇË®µ½Çþ³É֮ʣ¬GPU½«»áÔÚµçÄÔϵͳÖаçÑݸüÖØÒªµÄ½ÇÉ«¡£

¡¡¡¡ÄÇôCUDAÓëOpenCLÖ®¼äÓÐʲôÀûº¦¹ØÏµÄØ£¿Î´À´Ë­½«×óÓÒGPUµÄ·¢Õ¹£¿GPU»á·ñÈ¡´úCPU³ÉΪ¼ÆËã»úºËÐÄ£¿±ÊÕßͨ¹ýËѼ¯¸÷·½×ÊÁÏ£¬²¢²É·ÃNVIDIAÏà¹Ø¼¼ÊõÑо¿ÈËÔ±£¬Îª´ó¼ÒÉîÈë·ÖÎöGPUµÄͨÓüÆËã֮·¡£

¡¡ ¿ÉÄܺܶàÅóÓÑ»¹ÐÄ´æÒÉ»ó£ºÄ¿Ç°CPUµÄÐÔÄÜÒѾ­ºÜÇ¿´óÁË£¬ÎªÊ²Ã´»¹Òª»¨ºÜ´óµÄ´ú¼ÛÈÃGPU½øÐи¨ÖúÔËËãÄØ£¿Õâ¸öÎÊÌâ¿ÉÒÔ´ÓÁ½¸ö½Ç¶ÈÀ´»Ø´ð£ºÒ»°ãÎÒÃÇÈÏΪ CPUÔÚ¸¡µãÔËËã/²¢ÐмÆËã·½ÃæµÄÐÔÄÜÔ¶²»ÈçGPUÇ¿´ó£¬ËùÒÔ½«GPUµÄʵÁ¦ÊͷųöÀ´¿ÉÒÔ½«µçÄÔ»ñµÃеķÉÔ¾£»Èç¹û´Ó¸üÉî²ãÃæ¿¼Âǵϰ£¬Ä¿Ç°CPUµÄ·¢Õ¹ ÒѾ­Óöµ½ÁËÆ¿¾±£¬ÎÞÂÛºËÐļܹ¹µÄЧÂÊ»¹ÊǺËÐÄÊýÁ¿¶¼ºÜÄÑ»ñµÃ´ó·ùÌáÉý£¬¶øGPUÔòÊÇеÄÍ»ÆÆµã£¬ËüµÄDZÁ¦¼¸ºõÊÇÎÞÏ޵ģ¡

¡¡¡¡¡ñ CPUºËÐÄЧÂÊÌáÉý¾Ù²½Î¬¼è

¡¡ ¾ÍÄÃĿǰIntel×îÇ¿µÄCore i7´¦ÀíÆ÷À´Ëµ£¬¼Ü¹¹·½ÃæÏà±ÈÉÏ´úCore 2 Quad·¢ÉúÁËÌì·­µØ¸²µÄ±ä»¯£º½ºË®Ëĺ˱ä³ÉÁËÔ­ÉúËĺˡ¢ÒýÈëÈý¼¶»º´æ¡¢¸ßËÙQPI×ÜÏß¡¢ÈýͨµÀDDR3ÄÚ´æ¿ØÖÆÆ÷¡¢³¬Ï̼߳¼Êõ¡¢Öî¶àÄں˼°Ö¸ÁÓÅ»¯µÈ µÈ……£¬ËùÓÐÕâЩ¼¼Êõ¹²Í¬×÷ÓõĽá¹û¾ÍÊÇ——ͬƵÂÊÏÂi7 965µÄ×ÛºÏÐÔÄܽö±ÈÉÏ´úQX9770ÌáÉýÁË10-20%£¬Õâ˵Ã÷ÁËÊ²Ã´ÄØ£¿ËµÃ÷IntelµÄ´¦ÀíÆ÷¼Ü¹¹ÒѾ­·Ç³£ÓÅÐãÁË£¬ÒÔÖÁÓÚÔÚ´Ë»ù´¡ÉϺÜÄÑÔÙÓÐ Pentium Dµ½Core 2 DuoÄÇÖÖ·ÉԾʽÌáÉý¡£


Core i7µÄÐÔÄܱíÏÖûÓдøÀ´¾ªÏ²

¡¡¡¡AMD·½ÃæµÄÇé¿öÒ²´óÖÂÈç´Ë£¬Phenom IIÏà±ÈPhenomµÄÌáÉýÖ÷ÒªÀ´×ÔÓÚ45nm¹¤ÒÕ´øÀ´µÄ¸ßƵÂÊ£¬ºËÐļܹ¹ÓÅ»¯µÄ¹±Ï×½öÓв»µ½5%¡£Ä¿Ç°Á½´ó´¦ÀíÆ÷¾ÞÍ·µ¥ºËÐÄЧÄܶ¼Òѽӽü¼«ÏÞ£¬Ö»ÄÜÒÀ¿¿Ð¹¤ÒÕ´øÀ´µÄ´ó»º´æ¡¢¸ßƵÂÊ£¬¶ø»ñµÃ΢ÈõµÄÐÔÄÜÌáÉý¡£

 
Fermi¼Ü¹¹½â¶Á
User Rating: / 0

ǰÑÔ£ºÔÚ¾­¹ýÂþ³¤µÄ4Ä꿪·¢ÆÚÖ®ºó£¬ÖÚÍûËù¹éµÄFermi“·ÑÃ×”¼Ü¹¹GPUÖÕÓÚµ®Éú£¬Õâ¿îGPUÉíÉÏÄý¾ÛÁËÖÚ¶à “µÚÒ»”£¬´òÆÆÁ˺ܶàоƬÉè¼ÆµÄÊÀ½ç¼Ç¼¡£¶ø¸üΪÉîÔ¶µÄÒâÒåÔÚÓÚ£¬´úºÅGF100µÄFermi¼Ü¹¹GPU²úÆ·£¬ÔÚ±£³ÖͼÐÎÐÔÄܵÄǰÌáÏ£¬½«Í¨ÓüÆËãµÄÖØÒª ÐÔÌáÉýµ½Ç°ËùδÓеĸ߶ȡ£ÎÒÃǸù¾Ý×î½üÊÕ¼¯µÄ×ÊÁÏ£¬ÓëËùÓйØ×¢ÏÔ¿¨¡¢¹Ø×¢ÓÎÏ·¡¢¹Ø×¢Í¨ÓüÆËãµÄÍøÓÑÒ»Æð̽ѰFermi¼Ü¹¹µÄÉè¼Æ·½ÏòºÍÐÔÄÜÌØÐÔ¡£Í¬Ê±£¬ÎÒ Ãǹ²Í¬ÆÚ´ýÁ½¼Ò³§ÉÌÔÍÄðÒѾõÄGPU¶Ô¾ö¡£ÏÖÔÚÀëFermi×îºóµÄ·¢²¼£¬½öÓÐ1Ììʱ¼ä£¬ÈÃÎÒÃǹ²Í¬ÆÚ´ý¡£

Fermi“·ÑÃ×”¼Ü¹¹µÚÒ»Ó¡Ïó

¡¡¡¡¡ñÒ»¿é40nm¹¤ÒÕ£¬30ÒÚ¸ö¾§Ìå¹ÜµÄ´óоƬ

¡¡¡¡ÓÉÓÚÅÓ´óµÄÔËËã×ÊÔ´¡¢¿ØÖÆ×ÊÔ´ºÍ»º´æ×ÊÔ´µÄ¼ÓÈ룬FermiÔÚÉè¼ÆÖ®³õ£¬¾ÍûÓп¼ÂǹýСоƬսÂÔ£¬ÒòΪÕâÊDz»¿ÉÄÜ×öµ½µÄ¡£ËùÒÔ¼´½«µÇ³¡µÄ£¬ÊÇÒ»¿é¼¯³É¶È¸ß´ï30ÒÚ¸ö¾§Ìå¹ÜµÄµ¥¹Üо·âװоƬ£¬ÕâÊǰ뵼Ì幤ҵµÄÆæ¼£¡£

¡¡¡¡¡ñ»ùÓÚͼÐΣ¬µ«³¬Ô½Í¼ÐεÄGPUÉè¼Æ·½°¸

¡¡ FermiµÄÖÚ¶àÌØÐÔ£¬ÒѾ­Ã÷Ã÷°×°×¸æËßÓû§£¬Õâ²»ÊǽöΪÓÎÏ·»òÕßͼÐÎÔËËãÉè¼ÆµÄGPU£¬¶øÊÇÃæÏòͼÐκÍͨÓüÆËã×ۺϿ¼Âǵijɹû¡£È«¾ÖECCÉè¼Æ¡¢¿É¶Áд »º´æ¡¢¸ü´óµÄshared memory¡¢ÉõÖÁ³öÏÖÁË·ÖÖ§Ô¤²â¸ÅÄî……Õâ´ÎFermiÅׯú³¤ÆÚʹÓõēÁ÷´¦ÀíÆ÷”³ÆÎ½·½Ê½£¬¸üÃ÷È·ÌåÏÖÁËNVIDIAµÄÒâͼ¡£

¡¡¡¡¡ñÒ»¿é4ºËÐĵÄGPU£¬ÒòΪËü°üº¬4¸öGPC

¡¡¡¡GF100ÓµÓÐÕâÑùµÄÈý²ã·Ö¼¶¼Ü¹¹£º4¸öGPC¡¢16¸öSM¡¢512¸öCUDAºËÐÄ¡£Ã¿¸öGPC°üÀ¨4¸öSM£¬Ã¿¸öSM°üÀ¨32¸öCUDAºËÐÄ¡£Äã¿ÉÒÔÈÏΪGF100ÊÇÒ»¿Å4ºËÐÄ£¨GPC£©´¦ÀíÆ÷£¬ÒòΪÕâ¸öGPC¼¸ºõÊÇÈ«Äܵġ£


¡¡¡¡¡ñ¸ü´ó¸üÈ«µÄ»º´æ

¡¡¡¡GF100ºËÐÄ£¬³ýͬÑùÓµÓÐ12KBµÄL1ÎÆÀí»º´æÖ®Í⣬ÆäÓµÓÐÕæÕýÒâÒåµÄ¿É¶ÁдL1»º´æºÍL2»º´æ¡£GF100ºËÐĵÄÉè¼ÆË¼Â·Ö±½Óµ¼ÖÂGPUÖÐÊ״γöÏÖÁË64KBµÄRAMÖ§³Ö¿ÉÅäÖõÄshared memoryºÍL1»º´æ¡£

¡¡¡¡¡ñTessellationϸ·ÖÇúÃæµ¥ÔªÒýÈ룬´øÀ´¼¸ºÎÐÔÄÜ´ó·ùÌáÉý

¡¡ ÔÚÕâ֮ǰ£¬3DÏÔ¿¨µÄ¼¸ºÎÐÔÄܵÄÌáÉý¹ý³ÌÊǷdz£»ºÂýµÄ£¬´ÓGeForce FX 5800µ½GeForce GTX 285£¬ÏÔ¿¨µÄÏñËØäÖȾÄÜÁ¦ÌáÉýÁ˳¬¹ý150±¶£¬µ«ÊǼ¸ºÎÐÔÄܽö½öÌáÉýÁ˲»µ½3±¶¡£DirectX 11ÒªÇóµÄÓ²¼þTessellationµ¥Ôª¸Ä±äÁËÕâÑùµÄ×´¿ö£¬Fermi¸üÊǽ«Ï¸·ÖÇúÃæµ¥Ôª×öµ½ÁËÄã²»¿É˼ÒéµÄ¹æÄ£¡£

¡¡¡¡¡ñTMUºÍROPµÈºó¶Ëµ¥ÔªµÄÔöÇ¿

¡¡ ´úºÅRV770µÄHD4870ÊÇAMD·Ç³£³É¹¦µÄÒ»¿î²úÆ·£¬ËüÓÃ×îСµÄ¾§Ìå¹ÜÏûºÄ£¬´ò»÷Á˶ÔÊÖNVIDIAµÄÍ´´¦——GPUºó¶ËÉè¼Æ¡£ËùÒÔÎÒÃÇ¿´µ½ÔÚ¿ª Æô¸ß±¶AAµÈЧ¹ûʱ£¬ºó¶ËÇ¿´óµÄGPUÐÔÄÜË¥¼õÄܹ»µÃµ½ÓÐЧ¿ØÖÆ¡£Õâ´ÎFermi¼Ü¹¹ÖصãÔöÇ¿ÁËGPUºó¶ËÉè¼Æ£¬¶øÇÒÁ¦¶È²»Ð¡¡£

¡¡¡¡¡ñµ×²ã¼ÆËãµ¥Ôª²»¶Ï¸Ä½ø

¡¡ ºÁÎÞÒÉÎÊ£¬G80µ½GT200ÒÔÀ´£¬NVIDIAµÄMIMD¼Ü¹¹Á÷´¦ÀíÆ÷Éè¼ÆÒ»Ö±ÊÇͼÐÎоƬÖÐЧÂÊ×î¸ßµÄ£¬ËäÈ»ËüºÜºÄ·Ñ¾§Ìå¹Ü£¬µ«ÊÇÒÔ×îºóʵ¼ÊÐÔÄܺâÁ¿£¬ »¹ÊǺܻ®ËãµÄ¡£Õâ´ÎFermiÑÓÐøÁËÕâÖÖÉè¼Æ£¬µ«ÊÇÔÚ¼ÆËãµ¥ÔªºÍÖܱß×ÊÔ´·½Ãæ×öÁËÀ©³ä£¬¸ü¸ß¾«¶ÈºÍ¸üСÐÔÄÜË¥¼õÊÇÓÀÔ¶µÄÄ¿±ê¡£

¡¡¡¡¡ñGPUÉè¼Æ¸üÌù½üÓ¦Óã¬Ò²¸üÆ«ÏòCPU

¡¡ Fermi·ÅÆúÁËGPU¹ÌÓеļò½àÃ÷¿ìµÄÉè¼ÆÀíÄת¶øÏò¸üÉî²ã´Î·¢Õ¹£¬µ«ÊǸüÇ¿µÄÏ߳̿ØÖÆÄÜÁ¦ºÍÖܱß×ÊÔ´µÄ³äÅæ¶È£¬ÒѾ­ÈÃFermi´ò¿ªÁË“Å˶àÀ­Ä§ ºÐ”……NVIDIAÈç¹ûÄÜÓ¦¸¶µÃÁËÕâЩÎÊÌ⣬½«ÔÚGPUÁìÓòÈ¡µÃһϵÁÐÍ»ÆÆ£¬Èç¹ûÓ¦¸¶²»Á˸÷ÖÖÆËÃæ¶øÀ´µÄÎÊÌ⣬ÕâÖÖÉè¼ÆËù¸¶³öµÄ´ú¼ÛÓпÉÄÜÍÏ¿å NVIDIAÕû¸ö¹«Ë¾¡£

ͼÐÎÐÔÄÜÓëͨÓüÆËã²¢ÖØµÄÉè¼Æ·½Ïò

¡¡ ´úºÅGF100µÄFermiÉè¼Æ·½°¸ÔÚ4Äêǰȷ¶¨ÏÂÀ´²¢¸¶ÖîÐж¯£¬ÕâʱÕýÖµ´úºÅG80µÄGeforce 8800GTX×ö×îºóµÄ³ö³§×¼±¸¡£G80ƾ½èȫеÄMIMD£¨¶àÖ¸ÁîÁ÷¶àÊý¾ÝÁ÷£©Í³Ò»×ÅÉ«Æ÷£¨ÓÖ³ÆÁ÷´¦ÀíÆ÷£©»ñµÃÁËÒµ½çµÄÒ»ÖÂÈÏͬ£¬Í¬Ê±±»Òµ½ç¹Ø×¢µÄ»¹ÓÐ G80µÄͨÓüÆËãÐÔÄÜ¡£

¡¡¡¡NVIDIAµÄTony TamasiÏÈÉú£¨NVIDIA¸ß¼¶¸±×ܲ㬲úÆ·Óë¼¼Êõ×ܼࣩ±íʾ£º“ÒÔǰµÄG80¼Ü¹¹ÊǷdz£³öÉ«µÄͼÐδ¦Æ÷¡£µ«FermiÔòÊÇÒ»¿îͼÐδ¦ÀíͬÑù³öÉ«µÄ²¢Ðд¦ÀíÆ÷¡£”

    Õâ¾ä»°½ÒʾÁËFermiµÄÓëÖÚ²»Í¬£¬ËüÒѾ­²»ÔÙÃæÏòͼÐÎÁìÓòÉè¼ÆÁË£¬ÒòΪ¸ü¹ãÀ«µÄͨÓüÆËãÊг¡ÔڵȴýËü¡£Fermi½«ÎªÍ¨ÓüÆËãÊг¡´øÀ´Ç°ËùδÓеıä¸ï£¬Í¼ÐÎÐÔÄܺÍÓÎÏ·±»Ìá¼°ÒѾ­Ô½À´Ô½ÉÙ¡£



NVIDIA¹«Ë¾ÔÚ²»¶ÏÇ¿µ÷²¢ÐмÆËãµÄÖØÒªÐÔ

    ´ÓNVIDIA´¦ÀíÆ÷¼Ü¹¹µÄ·¢Õ¹À´¿´£¬TamasiÏÈÉúµÄ»°Òâ˼ºÜÇå³þ¡£»Ø¹ËÀúÊ·ÎÒÃÇ¿ÉÒÔ·¢ÏÖNVIDIA×î½ü¼¸Äê¼ä£¬´ó¹æÄ£¸Ä½øÍ¼Ðδ¦Àí¼Ü¹¹Éè¼ÆµÄÊÇ GeForce 6000£¨NV40£©ÏµÁУ¬Ö®ºó¾ÍÊÇGeForce 8000£¨G80£©ºÍGeForce GTX 200£¨GT200£©£¬×îºó¾ÍÊÇFermi¡£

    “CUDA Cores”ÊÇFermi×î»ù´¡µÄÔËËãµ¥Ôª£¬½«ËüµÄÀúÊ·ÏòÉÏ×·ËÝÊ×ÏÈÊÇG80ʱ´úµÄͳһ×ÅÉ«µ¥Ôª£¨Unified Shader Model£©£¬ÎÒÃÇÔÚG80ºÍGT200ʱ´ú½«Ëüͳ³ÆÎªÁ÷´¦ÀíÆ÷£¨Stream Processor£©£¬ÔÙÏòÉÏ×·ËÝ¿ÉÖª£¬Õâ¸öµ¥Ôª½«Vertex Shader£¨¶¥µã×ÅÉ«Æ÷£©ºÍPixel Shader£¨ÏñËØ×ÅÉ«Æ÷£©ºÏ²¢¶ø³É¡£

    ÀíÂÛÉÏ˵“CUDA Cores”Ö»ÊÇÆðÁËÒ»¸öºÃÌýµÄÃû×Ö£¬ÈÃÈËÃǸü¿´ÖØGPUͨÓüÆËãµÄ×÷Óã¬Êµ¼ÊÉÏÎÒÃÇÔÚͼÐÎÁìÓò»¹Êǽ«ËüÊÓΪÆÕͨµÄÁ÷´¦ÀíÆ÷¡£µ«Õâ±³ºó͸¶³öNVIDIA ¹«Ë¾µÄÁíÒ»Öּƻ®——ÃæÏò²¢ÐмÆËãÁìÓòÉè¼ÆÒ»¿ÅоƬ£¬²¢Ê¹Æä¾ß±¸Í¼ÐÎÔËËãÄÜÁ¦£¬Õâ¿ÅоƬÓÉÖÚ¶àµÄ“CUDA Cores”×é³É£¬ÔËËãËÙ¶ÈÖ÷ÒªÓÉ“CUDA Cores”µÄÊýÁ¿ºÍƵÂʾö¶¨¡£

¡¡¡¡Fermi¾ÍÔÚÕâÖÖÉè¼ÆÄ¿±êϵ®ÉúÁË£¬Äã¿ÉÒÔ˵Ëü²»ÊÇGPU£¬ÒòΪËüÕæµÄÊÇÒ»¿Å²¢ÐÐͨÓüÆËãоƬ£¬Ö»²»¹ýËüÒ²Äܰ²×°ÔÚÏÔ¿¨ÉϰïÄãÔËÐÐÓÎÏ·¡£²»¹ý¶ÔÓÚÎÒÃÇÆÀ²âÈËÔ±¾Í±È½ÏÂé·³£¬Fermiµ®ÉúÖ®ºó£¬ÎÒÃÇÐèÒª¶ÔËüµÄµ×²ãÔËËãÐÔÄܺÍʵ¼ÊÔËËã±íÏÖ×öÆÀ²â£¬µ«ÊÇÄÃËüºÍË­¶Ô±ÈÄØ£¿ÊÇHD 5870£¬»¹ÊÇI7-965£¿

    ËÆºõËüÃǶ¼Ã»ÓпɱÈÐÔ£¬Ò²Ã»ÓÐͳһµÄÆÀ±È±ê×¼¡£Ò»ÇпÉÒÔÔÚFermiÉÏÔËÐеijÌÐò£¬I7-965Ò²ÄܰìµÃµ½£¬µ«ÊÇ´ó¹æÄ£²¢ÐÐËٶȲҲ»È̶㻺ܶàFermi ÄÜ×öµÄ¹¤×÷£¬HD 5870È´×ö²»ÁË£¬ÒòΪËüûÓÐ×ã¹»µÄÖܱß×ÊÔ´ÖîÈçLDS£¨Local Data Share£©Ö§³ÅÕâô¶àÁ÷´¦ÀíÆ÷ͬʱÔË×÷£¬Í¬Ê±Õâ¿ÅGPUÉíÉϸüÕÒ²»µ½ÈκοɶÁдµÄ»º´æ¡£

    ÔÚûÓÐÁ˽âFermiµÄºËÐĹ¹³É֮ǰ£¬ºÜ¶àÈË“CUDA Cores”¸ÅÄîàÍÖ®ÒԱǣ¬ÈÏΪÕâÊÇNVIDIA¹«Ë¾µÄÓªÏú²ßÂÔ£¬¾ÍÏñHD5870ËùÓµÓеÄ1600¸öÁ÷´¦ÀíÆ÷Ò»Ñù£¬Êµ¼ÊÉÏÊÇ320¸öSIMDµ¥Ôª¡£Á½¼Ò ¹«Ë¾È·Êµ´òÁ˲»ÉÙ¿ÚË®ÕÌ£¬ÎÞÊýÍæ¼ÒÒ²¸ú×ÅËüÃÇÌá³öµÄ¸ÅÄîÉý¼¶ÁË×Ô¼ºµÄÏÔ¿¨¡£²»¹ýÕâ´ÎFermi¸Ä±äÃû³ÆºÍÉè¼Æ·½Ïò£¬ÊÇÓб¸¶øÀ´µÄ¡£


Ô½À´Ô½¶àµÄ»ú¹¹ºÍ³§ÉÌÒâʶµ½Í¨ÓüÆËãµÄÖØÒªÐÔ

    NVIDIAÕâ´Î¸ÒÌá³öͼÐÎÐÔÄܺÍͨÓüÆËã²¢ÖØ£¬ËµÃ÷GPUÉè¼ÆµÄÖØµãºÍÄѵ㶼ÔÚͨÓüÆËã·½Ãæ¶ø·ÇͼÐΡ£ÒòΪһ¿ÅÒѾ­ÑÝ»¯ÁËÊ®ÄêµÄGPU¿Ï¶¨ÄÜ×öºÃ×Ô¼ºµÄÀϱ¾ÐÐͼÐμÆË㣬µ«ÊÇÒª×öͨÓüÆË㣬ÐèÒª¸üÇ¿´óµÄÏ̹߳ÜÀíÄÜÁ¦£¬¸üÇ¿´óµÄÖٲûúÖÆ£¬·á¸»µÄ¹²ÏícacheºÍ¼Ä´æÆ÷×ÊÔ´ÒÔ¼°³ä×ãµÄ·¢Éä¶Ë……Èç¹û×ö²»ºÃÕâЩ¶«Î÷£¬GPUÓÀÔ¶¶¼ÊÇPCÖеÄÅä½Ç£¬ÓÀÔ¶¶¼ÊÇÒ»¿ÅÁ÷´¦ÀíÆ÷¡£ÕâЩ±íÃæÉÏ¿´ÕâЩ²¿¼þÊǼ«Õ¼¾§Ìå¹ÜµÄ¶«Î÷£¬¸ü¿ÉŵÄÊÇÉè¼ÆÕâЩ²¿¼þÐèҪ̫¶à¿ÆÑгɱ¾ºÍʱ¼ä¡£

    Impress WatchÍøÕ¾ÖªÃûITÆÀÂÛÈËááÌÙºëï³ÆNVIDIAÈ«ÐÂFermi¼Ü¹¹£¬ÊÇÒÔ´¦ÀíÆ÷ΪĿ±ê½øÐÐÉè¼ÆµÄ¡£ÒòΪÄãÔÚFermiÉíÉÏ¿ÉÒÔ¿´µ½ÒÔǰGPUÉÏ´ÓÀ´ ûÓеĶ«Î÷£¬°üÀ¨¸ü¶àµÄÖ¸ÁîË«·¢É䡢ͳһµÄL2È«¾Ö»º´æ¡¢64KBµÄ¿ÉÅäÖÃʽL1»òÕßShared Memory¡¢´óÁ¿µÄÔ­×Ó²Ù×÷µ¥ÔªµÈµÈ¡£

    µ±È»Í¼ÐÎÐÔÄÜÒ²ºÁ²»º¬ºý£¬³ýÁ˷dz£±©Á¦µÄ´¦ÀíºËÐÄ“CUDA Cores”Ö®Í⣬FermiÓµÓÐÇ¿´óµÄROPºÍTMUµ¥Ôª£¬¿ÉÒÔÌṩ¸ü¸ß¼¶±ð¸÷ÖÖAAËã·¨£¬²¢ÇÒÓÐЧ¿ØÖÆÐÔÄÜË¥¼õ¡£Gather 4Ö¸Áî¿ÉÒÔÓÐЧÖúÁ¦¶¶¶¯²ÉÑùʵÏÖ¸ü¸ß»­ÖÊ¡£È«ÐÂÉè¼ÆµÄPolyMorph Engine£¨¶àÐÎÌåÒýÇæ£©ºËÐĸÅÄî——Tessellation¹¦ÄÜÊDZز»¿ÉȱµÄ£¬ËäÈ»Õâ¸ö¸ÅÄîÓÉ΢ÈíÌá³ö£¬ÓÉAMDÂÊÏÈÓ¦ÓÃÔÚGPUÉϲ¢¼á³Öµ½HD 5870£¬µ«ÊÇÕâ´Î³ÊÏÖÔÚÎÒÃÇÃæÇ°µÄFermiÔÚTessellation¶àÊý¾Ý²¢ÐмÆËã·½ÃæÒ£Ò£ÁìÏÈHD 5870¡£

FermiÔËËãµ¥Ôª¹¹³Éģʽ

    ¡ñGF100ÕûÌå¼Ü¹¹

    GF100 GPU»ùÓÚͼÐδ¦ÀíÍÅ´Ø£¨·­ÒëΪGPC£©£¬¿ÉÀ©Õ¹Á÷ÕóÁжദÀíÆ÷£¨SM£©ºÍÄÚ´æ¿ØÖÆÆ÷£¨MC£©¡£Ò»¸öÍêÕûGF100ʵÏÖËĸöGPC£¬16¸öSMºÍ6¸öÄÚ´æ ¿ØÖÆÆ÷¡£Í¨¹ý¶ÔGPCµÄ¿ªÆôºÍ¹Ø±Õ£¬¶ÔSMºÍÄÚ´æ¿ØÖÆÆ÷²»Í¬µÄÅäÖ㬿ÉÒÔ»®·Ö³öÂú×㲻ͬ¼ÛλµÄ²úÆ·¡£ËùÒÔÎÒÃÇÒ²¿ÉÒÔ³ÆGF100Ϊһ¸ö4 GPCºËÐĵÄGPU¡£



Fermi¼Ü¹¹GF100¹¦Äܵ¥Ôª·Ö²¼

    ͼÖÐÎÒÃÇ¿ÉÒÔ¿´µ½GF100µÄ×ÜÏß½Ó¿Ú¡¢GigaThreadÏ̵߳÷¶ÈÆ÷¡¢ËĸöÍêÕûµÄGPCµ¥Ôª¡¢Áù¸öÄÚ´æ¿ØÖÆÆ÷¡¢Áù¸öROP´ØºÍ768KB¶þ¼¶»º´æ¡£Ã¿¸öGPCµ¥Ôª°üº¬Ëĸö¶à±ßÐÎÒýÇæ¡£Áù¸öROP´Ø½ôÁÚ¶þ¼¶»º´æ¡£

    CPU µÄÃüÁîͨ¹ýHost Interface×ÜÏß½Ó¿Ú´«Êäµ½GPU¡£ÔÚGigaThreadÒýÇæ»á´ÓϵͳÄÚ´æÌáȡָ¶¨Êý¾Ý£¬²¢°ÑËüÃÇ¿½±´µ½Ö¸¶¨µÄÏÔ´æ¡£ GF100¼¯³ÉÁË6¸ö64λGDDR5ÄÚ´æ¿ØÖÆÆ÷£¨¹²¼Æ384룩£¬ÒÔ±ã»ñµÃ¸ß´ø¿íºÍµÍÑÓ³Ù¡£È»ºóGigaThreadÒýÇæ´´½¨²¢µ÷¶ÈÕâЩblockµ½¸÷ ¸öSM£¬Æä´ÎÔÙµ½warp£¨Ã¿¸öwarp°üº¬32¸öthreadsỊ̈߳©½»¸øCUDA CoreºÍÆäËûÖ´Ðе¥Î»¡£ÔÚGigaThreadÒýÇæÖØÐ·ÖÅ乤×÷ʱ£¬Í¼ÐÎÁ÷Ë®ÏßÉϵĸ÷¸öµ¥ÔªÈçϸ·ÖÇúÃæºÍ¹âÕ¤»¯Ö®ÀàµÄµ¥ÔªÒ²»á¼ÌÐø¹¤×÷¡£

    GF100ÓµÓÐ512¸öCUDA Core£¬ËüÃÇÊôÓÚ16¸öSMµ¥Ôª£¬Ã¿¸öSMµ¥Ôª°üÀ¨32¸öCUDAÄںˡ£Ã¿¸öSMÊÇÒ»¸ö¸ß¶ÈƽÐд¦ÀíÆ÷£¬×î¶àÖ§³ÖÔÚÈκι涨ʱ¼äÍê³É¶Ô48¸öwarpµÄ ´¦Àí ¡£Ã¿¸öCUDA CoreÊÇÒ»¸öͳһµÄ´¦ÀíÆ÷ºËÐÄ£¬Ö´Ðж¥µã£¬ÏñËØ£¬¼¸ºÎºÍkernelº¯Êý¡£Ò»¸öͳһµÄ768KB¶þ¼¶»º´æ¼Ü¹¹¸ºÔðÏ̼߳ÓÔØ¡¢´æ´¢ºÍÎÆÀí²Ù×÷¡£Ã¿×éSMÀï ËĸöÎÆÀíµ¥Ôª£¬¹²ÏíʹÓÃ12KBÒ»¼¶ÎÆÀí»º´æ£¬²¢ºÍÕû¸öоƬ¹²Ïí768KB¶þ¼¶»º´æ¡£Ã¿¸öÎÆÀíµ¥ÔªÃ¿ÖÜÆÚ¿É¼ÆËãÒ»¸öÎÆÀíѰַ¡¢Ê°È¡ËĸöÎÆÀí²ÉÑù£¬²¢Ö§³Ö DX11еÄѹËõÎÆÀí¸ñʽ¡£


Fermi¼Ü¹¹GF100ºËÐÄÕÕÆ¬

    GF100ÓµÓÐ48¸öROPµ¥Ôª£¬ÓÃÀ´Ö´Ðп¹¾â³ÝºÍÔ­×ÓÄÚ´æ²Ù×÷¡£Õâ48¸öROPµ¥Ôª±»·ÖÅäΪ6×飬ÿ×é8¸ö£¬Ã¿×éROPÅ䱸һ¸öÄÚ´æ¿ØÖÆÆ÷¡£ÄÚ´æ¿ØÖÆ Æ÷¡¢L2¸ßËÙ»º´æºÍROPµ¥ÔªÊǽôÃÜñîºÏµÄ£¬Ò²¿ÉÒÔ³É×éÆÁ±Î¡£ËùÓÐROPµ¥ÔªºÍÕû¸öоƬ¹²Ïí768KB¶þ¼¶»º´æ£¨GT200ÀïÊǶÀÏí£©¡£

    ¹ØÓÚÔËÐÐÆµÂÊ£¬ÔÚÿһ×éSMÕóÁÐÀï£¬ÎÆÀíµ¥Ôª¡¢Ò»¶þ¼¶»º´æ¡¢ROPµ¥ÔªºÍ¸÷¸öµ¥ÔªµÄƵÂÊÒ²¶¼ÍêÈ«²»Í¬ÓÚÒÔÍù¡£³ýÁËROPµ¥ÔªºÍ¶þ¼¶»º´æ£¬¼¸ºõÆäËûËùÓе¥Ôª µÄƵÂʶ¼ºÍShaderƵÂÊ£¨NVIDIAÔݳÆÖ®ÎªGPCƵÂÊ£©¹ØÁªÔÚÒ»Æð£ºÒ»¼¶»º´æºÍShaderµ¥Ôª±¾ÉíÊÇÈ«ËÙ£¬ÎÆÀíµ¥Ôª¡¢¹âÕ¤ÒýÇæ¡¢¶àÐÎÌåÒýÇæÔò¶¼ ÊÇÒ»°ë¡£

    Fermiµß¸²ÁËG80ÒÔÀ´µÄ·ÖƵģʽ£¬Ôø½ñÎÒÃdzƹ̶¨µ¥ÔªµÄƵÂÊÊÇGPUºËÐÄÆµÂÊ£¬¶øÁ÷´¦ÀíÆ÷ƵÂʽϸߣ¬ËüµÄËÙ¶ÈÊǺËÐĵÄ2.15»òÕß2.25±¶¡£´Ó Fermi¿ªÊ¼“ºËÐÄÆµÂÊ”¾ÍÊÇÁ÷´¦ÀíÆ÷ƵÂÊ£¨Ò²¿ÉÒÔ³ÆÎªGPCƵÂÊ£©£¬¶ø¹Ì¶¨µ¥ÔªµÄƵÂÊĬÈÏΪ“ºËÐÄÆµÂÊ”µÄÒ»°ë£¬Î´À´µÄ³¬ÆµÄ£Ê½¿Ï¶¨Òª·¢Éú±ä»¯ÁË¡£

 ¡ñFermi GPCÔËËã¼Ü¹¹

    ÎÒÃÇ¿ÉÒÔÕâÑùÈÏΪ£ºNVIDIAµÄµÚÒ»´úCUDA»ú¹¹ÊÇ´ÓG80¿ªÊ¼ÑÓÉìÖÁGT200£¬¶øGF100½«Êǵڶþ´úCUDA¼Ü¹¹²úÆ·¡£G80ºËÐĵĵ®Éúµì¶¨ÁË NVIDIAδÀ´ºËÐļܹ¹µÄÖ÷·½Ïò£¬²¢Ò»Ö±ÑÓÐøÖÁGT200£¬µ±È»ÔÚ·¢Õ¹µÄ¹ý³ÌÖÐNVIDIA»¹ÊÇ»á¶ÔºËÐÄÕûÌå½øÐÐÓÅ»¯µ÷Õû£¬µ«×ÜÌåÀ´Ëµ¾ÍÊÇÀÛ»ý¾§Ìå¹ÜÔö ¼ÓÓ²¼þ¹æ¸ñ£¬¹¦ÄÜ·½Ãæ²¢Îޱ仯¡£·´¹ÛFermi£¬ºËÐÄÓ²¼þ¹æ¸ñÊýÁ¿Ïà±ÈGT200ȷʵҲÓдó·ùÔö³¤£¬µ«ÊÇÔÚ²úÆ·ÕûÌå¼Ü¹¹ÉÏFermi×öÁ˺ܴó¸Ä¶¯£¬¿ÉÒÔ˵ Êǵ߸²ÐԸ͝£¬Ëü²»½ö½öÊÇ½è¼øÒÔǰ³ÉÊìµÄ¼Ü¹¹Ìåϵ£¬»¹µ÷Õû²¢Ôڼܹ¹ÉÏÐÂÔö¹¦ÄÜÄ£¿é£¬ÁîFermi²»ÔÙ¼ò¼òµ¥µ¥µÄÊÇͼÐκËÐÄ£¬¶øÊÇÒ»¸ö¸´ºÏÐ͹¦ÄܺËÐÄ¡£

    ÔÚNVIDIA²úÆ·½øÈëDirectX 10µÄͳһ¼Ü¹¹ºó£¬ÎÒÃÇ¿´µ½ºËÐÄÖÐÒýÈëÁËTPC£¨Thread Processing Cluster£©¡¢SM£¨Streaming Mulitporcessor£©ºÍSP£¨Streaming Processor£©µÈиÅÄî¡£ÀýÈ磬G80ÓµÓÐ8¸öTPC£¬Ã¿¸öTPCÓµÓÐ2¸öSM£¬Ã¿¸öSMÓµÓÐ8¸öSP£¬ÕâÖÖÓÉ·±»¯¼òµÄ½á¹¹Ò»Ö±ÑÓÐøÔÚNVIDIA µÄͼÐβúÆ·ÖС£



G80ºÍGT200µÄTPC¹¹³É£¬Í¼Æ¬À´×ÔAnandtechÍøÕ¾

    ͨ¹ý¶Ô±ÈG80¡¢GT200µ½GF100µÄ·¢Õ¹Ä£Ê½£¬ÎÒÃÇ¿´µ½SM¾ØÕóÊýÁ¿ÔÚ¼õÉÙ£¬¶øÃ¿¸öGPCÖÐSMÊýÁ¿ºÍÿ×éSMÖÐSPÊýÁ¿ÔÚÔö¼Ó¡£ÔÚÕâÖмܹ¹Éè¼ÆÀíÄîÉÏGF100ËäÈ»ÊÇÑÓÐøÁËG80µÄ×é³ÉÉè¼Æ£¬µ«ÊÇÿ¸ö×é³ÉÄ£¿éµÄÊýÁ¿ÓÅ»¯ÉÏÓÐÁË´ó·ù¸Ä±ä¡£

    GF100ͼÐμܹ¹ºËÐÄ£¬´ÓÓ²¼þµÄ¿éÊý³ÆÎªÍ¼Ðδ¦ÀíÍÅ´Ø£¨GPC£©¡£Ã¿¸öGPC°üº¬Ò»¸ö¹âÕ¤ÒýÇæºÍËĸöSMµ¥Ôª¡£GPCÊÇGF100Õ¼Ö÷µ¼µØÎ»µÄ¸ß²ã´ÎµÄ Ó²¼þÄ£¿é¡£³ýÁ˼ÆËãµ¥ÔªËü»¹°üÀ¨Á½¸öÖØÒªÌØµã——·Ö±ðÊÇÒ»¸ö¿ÉÉý¼¶µÄ¹âÕ¤ÒýÇæ£¨Raster Engine£©¡¢Z-cullºÍÒ»¸ö´øÓÐÊôÐÔÌáÈ¡ºÍϸ·ÖÇúÃæµÄ¶à±ßÐÎÒýÇæ£¨Polymorph Engine£©¡£


Fermi¼Ü¹¹GPC¼Ü¹¹Í¼

    ÕýÈçÆäÃû³ÆËùʾ£¬ËùÓеÄGPC¶¼¼¯³ÉÁ˹ؼüµÄͼÐδ¦Àíµ¥Ôª¡£Ëü°üÀ¨¶¥µã£¬¼¸ºÎ£¬¹âÕ¤£¬ÎÆÀí¾ùºâÉèÖúÍÏñËØ´¦Àí×ÊÔ´¡£Ëæ×ÅROPµ¥Ôª¹¦ÄܵIJ»¶ÏÔöÇ¿£¬Ò»¸öGPCµ¥Ôª¿ÉÒÔ±»¿´×÷ÊÇÒ»¸öÅäÖÃÆëÈ«µÄGPU£¬¶øGF100ÓµÓÐ4¸öÕâÑùµÄºËÐÄ¡£

¡ñ²¢Ðм¸ºÎ´¦ÀíÁ÷Ë®ÏßÉè¼Æ

    ´«Í³µÄGPU¼¸ºÎµ¥ÔªÉè¼ÆÊ¹ÓÃÁËÒ»¸öµ¥Æ¬Ç°¶ËÓÃÀ´»ñÈ¡¡¢×°ÅäºÍ¹âÕ¤»¯Èý½ÇÐΡ£ÕâÖ̶ֹ¨¹ÜÏßģʽֻÄÜÌṩÐÔÄ̶ܹ¨µÄ²¢ÐÐÖ´ÐÐÄÚºËÊýÁ¿¡£¶øËæ×ÅÓ¦ÓóÌÐòµÄ¹¤×÷ Á¿²»Í¬£¬ÕâÌõ¼¸ºÎ¹ÜÏß³£³£Æ¿¾±»òÀûÓÃÂʲ»×ã¡£µ¥Ò»µÄ¼¸ºÎ´¦Àí¹ÜÏßÔÚÃæ¶Ô¸´Ôӵļ¸ºÎÐèÇóʱ£¬³ÉΪGPUÐÔÄܵÄÖ÷ÒªÕϰ­¡£

    Fermi¾ß±¸µÄ¹âÕ¤²¢Ðл¯ÊÇÒ»¸öÖØÒª´´Ð¡£NVIDIA³ÆFermi GF100ÊÇÒ»¸öȫмܹ¹£¬²»µ«ÊÇͨÓüÆËã·½Ãæ£¬ÓÎÏ··½ÃæËüÒ²·¢ÉúÁË·­Ì츲µØµÄ±ä»¯£¬¼¸ºõÿһ¸öÔ­ÓÐÄ£¿é¶¼½øÐÐÁËÖØ×飺ÓеĿ³µôÁË£¬ÓеÄ×ªÒÆÁË£¬ÓеÄÔöÇ¿ ÁË£¬»¹ÓÐÐÂÔöµÄ¹âÕ¤ÒýÇæ£¨Raster Engine£©ºÍ¶àÐÎÌåÒýÇæ£¨PolyMorph Engine£©¡£



¹âÕ¤ÒýÇæ£¨Raster Engine£©

    ¹âÕ¤ÒýÇæÑϸñÀ´Ëµ¹âÕ¤ÒýÇæ²¢·ÇÈ«ÐÂÓ²¼þ£¬Ö»ÊÇ´ËǰËùÓйâÕ¤»¯´¦ÀíÓ²¼þµ¥ÔªµÄ×éºÏ£¬ÒÔÁ÷Ë®Ïߵķ½Ê½Ö´ÐбßÔµ/Èý½ÇÐÎÉ趨(Edge/Triangle Setup)¡¢¹âÕ¤»¯(Rasterization)¡¢ZÖáѹËõ(Z-Culling)µÈ²Ù×÷£¬Ã¿¸öʱÖÓÑ­»·ÖÜÆÚ´¦Àí8¸öÏñËØ¡£GF100ÓÐËĸö¹âÕ¤Òý Çæ£¬Ã¿×éGPC·ÖÅäÒ»¸ö£¬Õû¸öºËÐÄÿÖÜÆÚ¿É´¦Àí32¸öÏñËØ¡£


¶àÐÎÌåÒýÇæ£¨PolyMorph Engine£©

    ¶àÐÎÌåÒýÇæÔòÒª¸ºÔð¶¥µãʰȡ£¨Vertex Fetch£©¡¢Ï¸·ÖÇúÃæ£¨Tessellation£©¡¢ÊÓ¿Úת»»£¨Viewport Transform£©¡¢ÊôÐÔÉ趨£¨Attribute Setup£©¡¢Á÷Êä³ö£¨Stream Output£©µÈÎå¸ö·½ÃæµÄ´¦Àí¹¤×÷£¬DX11ÖÐ×î´óµÄ±ä»¯Ö®Ò»Ï¸·ÖÇúÃæµ¥Ôª£¨Tessellator£©¾ÍÔÚÕâÀï¡£Fermi GF100²úÆ·ÖÐÓÐ16¸ö¶àÐÎÌåÒýÇæ£¬Ã¿¸öSMÒ»¸ö£¬»òÕß˵ÿ¸öGPCÓµÓÐËĸö¡£

    ƾ½è¶àÐÎÌåPolyMorphÒýÇæ£¬FermiʵÏÖÁËÈ«ÇòÊ׿î¿ÉÀ©Õ¹¼¸ºÎѧÁ÷Ë®Ïߣ¬¸ÃÁ÷Ë®ÏßÔÚµ¥¿ÅGPUÖаüº¬ÁË×î¶à16¸öTessellationÒý Çæ¡£ÕâЩÒýÇæÔÚDirectX 11×îÖØÒªµÄÈ«ÐÂͼÐÎÌØÐÔGPU¼ÓËÙTessellationÖÐÄܹ»·¢»Ó³ö¸ïÃüÐÔµÄÐÔÄÜ¡£Í¨¹ý½«¸ü¼ÓϸÄåµÄ¼¸ºÎͼÐÎÈÚÈëµ½³¡¾°µ± ÖУ¬TessellationÈÿª·¢ÈËÔ±Äܹ»´òÔì³öÊÓ¾õÇåÎú¶È¼«¸ß¡¢¸ü¼Ó¸´ÔӵĻ·¾³¡£¾â³Ý±ßԵƽ»¬ÁË£¬´Ó¶øÊ¹ÓÎÏ·ÖÐËùäÖȾ³öÀ´µÄÈËÎïÄܹ»ÓµÓÐÓ°Ôº°ãϸÄåµÄ »­ÖÊ¡£

    ÔÚÒÔǰµÄ¼Ü¹¹ÖУ¬¹Ì¶¨¹¦Äܵ¥ÔªÖ»Êǵ¥Ò»µÄÒ»ÌõÁ÷Ë®Ïß¡£¶øÔÚGF100£¬ÎÞÂÛÊǹ̶¨¹¦Äܵ¥ÔªºÍ¿É±à³Ì²Ù×÷µ¥Ôª¶¼²¢ÐÐÉè¼Æ£¬Õâ´ó´óÌá¸ßͼÐÎÐÔÄÜ£¬Ò²½â¾öÁËGPU³¤ÆÚÒÔÀ´Î´ÓÐÖØ´óÍ»ÆÆµÄÐÔÄ̰ܶ塣

    ¶àÐÎÌåPolyMorphÒýÇæµÄ³öÏÖ£¬ÊǼ¸ºÎÁ÷Ë®Ïß½ü¼¸Äê¼ä²»¶ÏÑÝ»¯µÄÖØ´óÍ»ÆÆ¡£ÌرðÊÇϸ·ÖÇúÃæ²Ù×÷£¬ÐèÒªµÄÈý½ÇÐκ͹âÕ¤ÄÜÁ¦¶¼Òì³£¿ÉÅ£¬´«Í³GPUÎÞ·¨ Ó¦¶Ô¡£¶à±ßÐÎÒýÇæµÄ³öÏÖ´ó·ù¶ÈÌá¸ßÁËÈý½ÇÐΡ¢Ï¸·ÖÇúÃæºÍÁ÷Êä³öÄÜÁ¦¡£Í¨¹ý¸øÃ¿¸öSM´îÔØÊôÓÚ×Ô¼ºµÄϸ·ÖÇúÃæTessellationÓ²¼þµ¥Ôª£¬²¢ÎªÃ¿¸ö GPC´îÔØÊôÓÚ×Ô¼ºµÄ¹âÕ¤»¯ÒýÇæ£¬GF100×îÖÕΪÎÒÃÇÌṩÁ˸ߴï8±¶ÓÚGT200¼¸ºÎÐÔÄÜ¡£´ó¹æÄ£»º´æºÍShared memoryÒýÈë¼°ÆäÒâÒå

    ΪÁËÔö¼Ó¼ÆËãµ¥ÔªµÄЧÄÜ£¬¸üºÃµØÅäºÏ¼ÆËãºËÐÄ£¬½µµÍ´æ´¢Æ÷ÑÓ³Ù£¬»º´æµÄ¸ÅÄîÒýÈëµ½¹¦ÄÜ´¦ÀíÆ÷ÖУ¬ÀýÈçCPUÏÖÔÚÒѾ­ÓµÓÐL1¡¢L2ºÍL3Èý¸öµÈ¼¶»º´æ£¬¶ø ÔÚGPUÖлº´æ¸ÅÄÊÇÊ®·ÖÄ£ºý¡£Ö÷ÒªÔ­ÒòÊÇGPUµÄÔËËãºËÐÄÊýÁ¿Ì«¶à£¬»º´æÐèÇóÁ¿Ì«´ó£¬¶øÁíÒ»¸ö·½Ã棬ÔÚÒÔÍùµÄGPUͨÓüÆËã³ÌÐòÖУ¬È·ÊµºÜÉÙÓÐÓõ½»º ´æ£¬ÌرðÊǿɶÁдµÄÕæÕýÒâÒåÉϵĻº´æ¡£



CPUºÍGPU¹¦ÄÜÐÔµ¥Ôª¶Ô±È

    ΪÁËÔö¼ÓGPUµÄ¼ÆËãÄÜÁ¦ºÍ¼ÆËãЧÂÊ£¬NVIDIA¹¤³Ìʦ´óµ¨µÄ½«»º´æ¸ÅÄîÒýÈëµ½GF100ÖУ¬×ÔÈ»ÒýÈ뻺´æÊƱØÐèÒª´óÁ¿¾§Ìå¹ÜÍê³É£¬ÔÚÕâµãÉÏÓëCPUµÀ ÀíÏàͬ¡£ÕâÑùµÄÑ¡ÔñÒª³Ðµ£ºÜ´ó·çÏÕ£¬µ«ÊÇÃæÏòÓ¦ÓÃÉè¼ÆµÄGPU±ØÐë½øÐиĽø£¬Ò²±ØÐëÖ±ÃæÎÊÌâ¶ø²»Äܻرܡ£ÎªÁËÔÚÂú×ãÊý¾Ý¼ÆËãÍÌÍÂÂʵÄǰÌáÏ£¬NVIDIA ¹¤³ÌʦΪGF100Éè¼ÆÁËÒ»Ì×ʵÓÃÁé»îµÄL1ºÍL2¡£

    ͨ¹ýÁ˽ⲻͬµÄ³ÉǧÉÏÍòµÄÓ¦ÓóÌÐò£¬NVIDIA¹¤³Ìʦ·¢ÏÖshared memory¿ÉÒÔ½â¾öÒ»²¿·Ö³ÌÐòµÄÐèÇ󣬵«ÊDz»Äܽâ¾öËùÓеÄÎÊÌ⡣һЩӦÓóÌÐòÌìÈ»ÐèÒªshared memory£¬ÓÐЩӦÓóÌÐòÔòÐèÒª»º´æcache£¬ÓеļÈÐèÒªshared memoryÒ²ÐèÒªcache¡£ÓÅ»¯µÄÄÚ´æÉè¼Æ¿ÉÒÔ¼ÈÌṩshared memoryÒ²Ìṩcache£¬¿ÉÒÔÈóÌÐòÔ±¸ù¾Ý×Ô¼ºµÄÐèÇóÀ´×öÑ¡Ôñ¡£Fermi¼Ü¹¹Í¨¹ý±ä»¯´æ´¢Æ÷µÄ×ÊÔ´ÅäÖ㬿ÉÒÔͬʱ֧³ÖÕâÁ½ÖÖÐèÇó¡£


Fermi¼Ü¹¹¿ÉÅäÖûº´æ½á¹¹

    GF100µÄÿһ¸öSMÖÐÓµÓÐ64KBµÄ¿ÉÅäÖÃÆ¬ÉÏ»º´æ£¬¿ÉÒÔÉèÖÃΪ48KB¹²Ïí»º´æ¼Ó16KB L1»º´æ£¬Ò²¿ÉÒÔÉèÖÃΪ16KB¹²Ïí»º´æ¼Ó48KB L1»º´æ¡£ÔÚ֮ǰµÄGT200ºËÐÄÖУ¬²¢Ã»ÓÐL1»º´æµÄÉè¼Æ¡£L1»º´æ¿ÉÒÔÓÃÓÚ´¦Àí¼Ä´æÆ÷Òç³ö¡¢¶ÑÕ»²Ù×÷ºÍÈ«¾ÖLD/ST¡£¹ýÈ¥£¬GPUµÄ¼Ä´æÆ÷Èç¹û·¢Éú Òç³ö£¬»á´ó·ù¶ÈÔö¼Ó´æÈ¡Ê±ÑÓ¡£

    ÓÐÁËL1»º´æÒԺ󣬼´Ê¹ÁÙʱ¼Ä´æÆ÷ʹÓÃÁ¿Ôö¼Ó£¬³ÌÐòµÄÐÔÄܱíÏÖÒ²²»ÖÁÓÚ´óÆð´óÂ䣬˫¾«¶ÈµÈÔËËãµÄË¥¼õ¿ØÖÆÒ²½«¸üΪÓÅÐã¡£¶ÔÓÚÄÇЩÎÞ·¨Ô¤ÖªÊý¾ÝµØÖ·µÄËã·¨£¬ ÀýÈçÎïÀí¼ÆËã¡¢¹âÏß×·×Ù¶¼¿ÉÒÔ´ÓGF100µÄרÓÃL1»º´æÉè¼ÆÖÐÏÔÖø»ñÒæ¡£¹²Ïí»º´æµÄÉè¼ÆÔòÓÐÀûÓÚ¶àÏ̼߳äÊý¾ÝÖØÓã¬ÈóÌÐò°Ñ¹²Ïí»º´æµ±³É»º´æÀ´Ê¹Óã¬ÓÉÈí¼þ¸ºÔðʵÏÖÊý¾ÝµÄ¶ÁдºÍÒ»ÖÂÐÔ¹ÜÀí¡£¶ø¶ÔÄÇЩûÓÐʹÓù²Ïí»º´æµÄÓ¦ÓóÌÐòÀ´Ëµ£¬Ò²¿ÉÒÔÖ±½Ó´ÓL1»º´æÖÐÊÜÒæ£¬ÏÔÖøËõ¼õÔËÐÐCUDA³ÌÐòµÄʱ¼ä¡£


GT200ºÍGF100¼Ü¹¹»º´æ¹¹³ÉÐÎʽÓëÈÝÁ¿¶Ô±È

    FermiÓÐ768KBµÄͳһµÄL2»º´æ£¬¿ÉÒÔÖ§³ÖËùÓеĴæÈ¡ºÍÎÆÀí²Ù×÷¡£L2»º´æºÍËùÓеÄSM¶¼Ïàͨ¡£L2ÌṩÓÐЧºÍ¸ßËÙµÄÊý¾ÝÖ§³Ö¡£ÓÐЩËã·¨²»ÄÜÔÚÔË ÐÐǰ¾ÍÈ·¶¨ÏÂÀ´£¬ÏñһЩÎïÀíÎÊÌ⣬¹âÏ߸ú×Ù£¬Ï¡Êè¾ØÕó³Ë·¨£¬ÓÈÆäÐèÒª»º´æµÄÖ§³Ö¡£¹ýÂËÆ÷ºÍת»»Æ÷ÐèÒªËùÓеÄSM¶¼È¥¶ÁÈ¡ÏàͬÊý¾ÝµÄʱºò£¬»º´æÒ»Ñù»áÓкܴó µÄ°ïÖú¡£

    ¶øFermiµÄ¶ÔÊÖ´úºÅR800µÄHD5870Ëù¾ß±¸µÄcacheÊDz»¿ÉËæ±ãµ÷Óõģ¬HD5870µÄ»º´æÊµ¼ÊÉÏÊÇ´«Í³µÄTexture cache£¬Ö»²»¹ýÏÖÔÚ¿ÉÒÔÓÃÀ´ÁÙʱÊͷŽá¹û×öLDS£¨Local Data Share£©£¬²»¿É±à³Ì£¬²»¿É²Ù×÷£¬²»¿Éд£¬Ö»¶Á¡£ËùÒÔR800ÏÖÔÚÊÇ16KB LDS+16KB cache£¬Ò²¾ÍÊÇ˵רÓÃLDSÖ»ÓÐ16KB¡£

    ÕâÀï˳±ãÌá¼°FermiÊ×´ÎÔÚGPUÖÐÒýÈëÈ«¾ÖECCµÄ×÷Óá£FermiÊǵÚÒ»¿îÖ§³ÖÄÚ´æ´íÎó¼ì²éºÍÐÞ¸´£¨ECC£©µÄGPU¼Ü¹¹¡£ÔÚʹÓÃGPU×ö´óÊý¾ÝÁ¿µÄ´¦ÀíºÍ¸ßÐÔÄܼÆËãµÄʱºò£¬ECCÊÇÓдóÁ¿µÄÐèÇó¡£ÔÚÒ½ÁÆÍ¼Ïñ´¦ÀíºÍ´óÐͼ¯ÈºÖУ¬ECCÊÇ×îÓÐÓõÄÌØÐÔ¡£

    Õý³£Çé¿öϵÄÄÚ´æÎ»µÄ´æ´¢´íÎ󣬶¼»áÒýÆðÈí¼þµÄ´íÎó¡£ECC¾ÍÊÇÔÚÉÏÊö´íÎóûÓжàϵͳÔì³ÉÓ°ÏìµÄÇé¿öÏ£¬ÓÃÀ´¼ì²éºÍ¾ÀÕýÕâÑùµÄ´íÎó¡£ÓÉÓÚÕâÑùµÄ´íÎó»á¸ù¾ÝϵͳµÄÔö´óÏßÐÔµÄÔö¼Ó£¬ECC¾Í³ÉΪ´óÐͼ¯ÈºÖбز»¿ÉÉÙµÄÐèÇó¡£

    Fermi¼Ü¹¹GPUµÄ¼Ä´æÆ÷£¬¹²ÏíÄڴ棬L1»º´æ£¬L2»º´æºÍDRAMÄÚ´æ¶¼Êܵ½ECC±£»¤£¬ÕâÑùµÄÉè¼Æ²¿Ö»ÊÇΪÁ˸ßÐÔÄܵÄGPUÓ¦Óã¬Ò²ÊÇΪÁËÔö¼Óϵ ͳµÄ¿É¿¿ÐÔ£¬ÕâÊÇ´ó¹æÄ£²¿ÊðTeslaµÈ¸ß¶ËͨÓüÆËã²úÆ·µÄǰÌá¡£µ«ÊÇECC¼¼ÊõÊÇÔÚÔ­À´µÄÊý¾ÝλÉÏÍâ¼ÓλÀ´ÊµÏֵģ¬ËùÒÔÖ§³ÖECC¼¼ÊõµÄFermiʵÏÖ ¸÷ÖÖ´æ´¢µÄ´ú¼Û£¬¶¼Òª´óÓÚÆÕͨGPU¡£µ±È»ÎÒÃÇÒ²ÕÒµ½ÁíÍâÒ»ÖÖ˵·¨³ÆFermiDRAM ECCʵÏÖ»úÖÆºÍ´«Í³CPUÿ8-bitÔö¼ÓÒ»¸öλԪµÄ·½Ê½²»Ò»Ñù£¬ÊÇÒ»ÖÖרÀû·½Ê½¡£

¡ñÇ¿´óµÄÏ̵߳÷¶ÈÄÜÁ¦

    ¹ØÓÚÏ̵߳ĵ÷¶ÈÎÊÌ⣬ÎÒÃÇÊ×ÏÈÐèÒªÁ˽âһЩG80ÒÔÀ´CUDA¼Ü¹¹µÄÏ̹߳ØÏµ¡£

    Ï߳̽ṹ£ºCUDA½«¼ÆËãÈÎÎñÓ³ÉäΪ´óÁ¿µÄ¿ÉÒÔ²¢ÐÐÖ´ÐеÄỊ̈߳¬²¢ÇÒÓ²¼þ¶¯Ì¬µ÷¶ÈºÍÖ´ÐÐÕâЩÏ̡߳£KernelÒÔÏß³ÌÍø¸ñ£¨Grid£©µÄÐÎʽ×éÖ¯£¬Ã¿¸öÏß ³ÌÍø¸ñÓÉÈô¸É¸öÏ߳̿飨block£©×é³É£¬Ã¿¸öÏ߳̿éÓÖÓÉÈô¸É¸öỊ̈߳¨thread£©×é³É¡£ÊµÖÊÉÏ£¬kernelÊÇÒÔblockΪµ¥Î»Ö´Ðеģ¬CUDAÒý ÈëGridÖ»ÊÇÓÃÀ´±íʾһϵÁпÉÒÔ±»²¢ÐÐÖ´ÐеÄblockµÄ¼¯ºÏ¡£¸÷blockÊDz¢ÐÐÖ´Ðеģ¬block¼äÎÞ·¨Í¨ÐÅ£¬Ò²Ã»ÓÐÖ´ÐÐ˳Ðò¡£Ä¿Ç°Ò»¸ö kernelº¯ÊýÖÐÓÐÒ»¸ögrid£¬¶øÎ´À´Ö§³ÖDX11µÄÓ²¼þ²ÉÓÃÁËMIMD£¨¶àÖ¸Áî¶àÊý¾Ý£©¼Ü¹¹£¬ÔÊÐíÔÚÒ»¸ökernelÖдæÔÚ¶à¸ö²»Í¬µÄgrid¡£



Ï̡߳¢Ï߳̿éºÍÖ´ÐÐÄں˵ĹØÏµ

    Block£ºCUDAÖеÄkernelº¯ÊýʵÖÊÉÏÊÇÒÔblockΪµ¥Î»Ö´Ðеģ¬Í¬Ò»blockÖеÄÏß³ÌÐèÒª¹²ÏíÊý¾Ý£¬Òò´ËËüÃDZØÐëÔÚͬһ¸öSMÖз¢É䣬¶ø blockÖеÄÿһ¸öỊ̈߳¨thread£©Ôò±»·¢Éäµ½Ò»¸öSPÉÏÖ´ÐС£Ò»¸öblock±ØÐë±»·ÖÅäµ½Ò»¸öSMÖУ¬µ«ÊÇÒ»¸öSMÖÐͬһʱ¿Ì¿ÉÒÔÓжà¸ö»î¶¯Ïß³Ì ¿é£¨active block£©ÔڵȴýÖ´ÐУ¬¼´ÔÚÒ»¸öSMÖпÉÒÔͬʱ´æÔÚ¶à¸öblockµÄÉÏÏÂÎÄ¡£µ±Ò»¸öblock½øÐÐͬ²½»òÕß·ÃÎÊÏÔ´æµÈ¸ßÑÓ³Ù²Ù×÷ʱ£¬ÁíÒ»¸öblock¾Í ¿ÉÒÔ“³ÃÐé¶øÈ딣¬Õ¼ÓÃGPU×ÊÔ´£¬×î´óÏÞ¶ÈÀûÓÃSMµÄÔËËãÄÜÁ¦¡£

    Warp£ºÔÚʵ¼ÊÔËÐÐÖУ¬block»á±»·Ö¸îΪ¸üСµÄÏß³ÌÊø£¬Õâ¾ÍÊÇwarp¡£Ïß³ÌÊøµÄ´óСÓÉÓ²¼þµÄ¼ÆËãÄÜÁ¦°æ±¾¾ö¶¨¡£ÔÚĿǰËùÓеÄNVIDIA GPUÖУ¬Ò»¸öÏß³ÌÊøÓÉÁ¬ÐøµÄ32¸öÏß³Ì×é³É¡£warpÖеÄÏß³ÌÖ»Óëthread IDÓйأ¬¶øÓëblockµÄά¶ÈºÍÿһάµÄ³ß¶ÈûÓйØÏµ£¬ÕâÖַָʽÊÇÓÉÓ²¼þ¾ö¶¨µÄ¡£ÒÔGT200µÄ½Ç¶ÈÀ´½âÊÍ£¬warpÖаüº¬32ÌõÏß³ÌÊÇÒòΪÿ·¢Éä Ò»ÌõwarpÖ¸ÁSMÖеÄ8¸öSP»á½«ÕâÌõÖ¸ÁîÖ´ÐÐ4±é¡£ÔÚÓ²¼þÖÐʵ¼ÊÔËÐгÌÐòʱ£¬warp²ÅÊÇÕæÕýµÄÖ´Ðе¥Î»¡£ËäÈ»warpÊÇÒ»¸öÓÉÓ²¼þ¾ö¶¨µÄ¸ÅÄ ÔÚ³éÏóµÄCUDA±à³ÌÄ£ÐÍÖв¢²»´æÔÚ£¬µ«ÊÇÆäÓ°ÏìÁ¦¾ø¶Ô²»ÈݺöÂÔ¡£

¡ñSMµ¥ÔªµÄË«warpµ÷¶ÈÄÜÁ¦

    FermiµÄÿһ¸öSM¶¼ÓÐÁ½¸öÖ¸Áî·¢Ë͵¥Ôª£¬¿ÉÒÔͬʱÈÃÁ½¸öwarpÏ໥¶ÀÁ¢µÄ²¢·¢ÔËÐС£FermiµÄDual warpµ÷¶È»úÖÆ¿ÉÒÔͬʱ²¢·¢µ÷¶ÈÁ½¸öwarpµÄÒ»ÌõÖ¸Áî·Ö±ðÔÚ16¸öÒ»×éµÄCUDA coreÉϽøÐмÆË㣬»òÕßÔÚ16¸ö´æ/È¡µ¥ÔªÔËÐУ¬»òÕß4¸öSFUÉÏÔËÐС£FermiµÄµ÷¶ÈÆ÷²¢²»ÐèÒªÔÚÖ¸ÁîÁ÷Ö®¼ä½øÐи½Êô¼ì²é¡£ÀûÓÃÈç´ËÓÅÃÀµÄË«·¢Éäµ÷ ¶È»úÖÆ£¬Ê¹µÃFermi¿ÉÒÔÈÃÓ²¼þµÄ¼ÆËãÄÜÁ¦´ïµ½¼«Ö¡£



Fermi¼Ü¹¹µÄWarpÔËÐйØÏµ

    ÔÚFermi¼Ü¹¹ÖУ¬·Ç³£¶àµÄÖ¸Áî¿ÉÒÔ½øÐÐË«·¢É䣬ÀýÈçÁ½ÌõÕûÊýÔËËãÖ¸ÁÁ½Ìõ¸¡µãÊýÔËÐÐÖ¸Á»òÕß»ìºÏµÄÕûÊý£¬¸¡µã£¬´æÈ¡£¬ºÍSFUÌØÊâ´¦ÀíÖ¸Áî¶¼¿ÉÒÔ±»²¢·¢Ö´ÐС£µ¥¾«¶ÈºÍË«¾«¶ÈµÄÖ¸ÁîÒ»Ñù¿ÉÒÔ²¢·¢Ö´ÐС£

    ¡ñ²¢ÐÐÖ¸Áî¸ü×ÔÓÉ

    NV²»¶Ï³äʵÖܱß×ÊÔ´£¬Ê¹Óøü¼¤½øµÄ¼Ü¹¹£¬¶øAMD²»¶ÏÀ©´óÁ÷´¦ÀíÆ÷¹æÄ££¬¶¼ÊÇΪÁ˸üºÃµÄÒþ²ØÑÓ³Ù¡£GT200¼Ü¹¹ÒѾ­¿ÉÒÔ¿ØÖÆSMIT»îÓÃÌø×ªÀ´ÔÚʵÏÖ Ïß³ÌÔÚ²»Í¬µÄSMµ¥ÔªÖ®¼ä½øÐÐÌøÔ¾¡£ÃüÁԪΪmulti-threadģʽ£¬Äܹ»Ö´ÐÐOut-of-OrderÖ¸Á¶øµ±´¦ÀíwarpÃüÁîÁ÷ʱÔòÊÇ In-Order£¬¶ø¸ù¾ÝNV¼Ü¹¹Éè¼ÆÊ¦John NickollsµÄ½éÉÜ£¬GT200¼Ü¹¹Êµ¼ÊwarpÖеÄÏß³ÌÒ²Äܹ»Ö§³ÖOut-of-Order¡£

    FermiÔÚÿ¸öSMǰ¶Ë¶¼ÓÐÁ½¸öWarpµ÷¶ÈÆ÷ºÍÁ½¸ö¶ÀÁ¢·ÖÅäµ¥Ôª£¬ºÍSMÆäËü²¿·ÖÍêÈ«¶ÀÁ¢£¬¾ù¿ÉÔÚÒ»¸öʱÖÓÑ­»·ÀïÑ¡Ôñ·¢ËÍÒ»°ëWarp£¬¶øÇÒÕâЩÏß³Ì ¿ÉÒÔÀ´×Ô²»Í¬µÄWarp¡£·ÖÅäµ¥ÔªºÍÖ´ÐÐÓ²¼þÖ®¼äÓÐÒ»¸öÍêÕûµÄ½»²æ¿ª¹Ø£¨Crossbar£©£¬Ã¿¸öµ¥Ôª¶¼¿ÉÒÔÏñSMÄÚµÄÈκε¥Ôª·ÖÅäỊ̈߳¨²»¹ý´æÔÚһЩÏÞ ÖÆ£©¡£

    ×÷ΪÔËËãµ¥ÔªµÄCUDAºËÐÄÔÚFermiµÄSMÿ¸öµ¥ÔªÖй²2¸ö×飬ÿ×é16¸ö£¬SFUÓÐ4×é£¬ÔØÈë/´æ´¢µ¥Ôª16¸ö¡£Õâ4¸öС×éÄܹ»¸÷×Ô²¢ÐÐÖ´Ðв»Í¬µÄ Warp²»Í¬µÄÖ¸Áî¡£ÓÉÓÚCUDAºËÐÄÊÇ16¸öÒ»×飬16Ï̲߳¢ÁлáÈÃÎïÀívector±ä³¤¡£Òò´Ë2¸öÖÜÆÚÄܹ»ÒÔ32Ï̹߳¹³ÉµÄµ¥WarpµÄÒ»¸öÖ¸Áî¡£ÔØ Èë/´æ´¢µ¥ÔªÒ²Í¬ÑùÈç´Ë¡£SFUÒòΪÊÇ4Ï̲߳¢ÁУ¬Òò´ËÊÇÒÔ8ÖÜÆÚÖ´ÐÐ1¸öwarp¡£ÕâÑùÖ¸Áîµ¥Ôª±¾ÉíÔö¼Óµ½ÁË2¸ö£¬¸÷¸öÖ¸Áîµ¥ÔªÄܹ»Ã¿¸öÖÜÆÚ·¢³ö2ÌõÖ¸ Áî¡£¿ÉÒÔ˵FermiʵÏֵIJ¢Ðл¯Ö¸Áî×ÔÓɶȸü¸ß¡£

¡ñGigaThreadÏ̵߳÷¶ÈÓÅ»¯

    Fermi¼Ü¹¹µÄÁíÒ»¸öÖØÒªÌØÐÔ£¬¾ÍÊÇËüµÄË«²ã·Ö²¼Ê½µ÷¶È»úÖÆ¡£ÔÚÆ¬ÉϵIJãÃæ£¨SPA Streaming Processor Array£¬Á÷ʽ´¦ÀíÆ÷¾ØÕ󼶱𣩣¬È«¾ÖµÄ·Ö²¼Ê½Ï̵߳÷¶ÈÒýÇæ£¨global work distribution engine£©·Ö·¢blockµ½Ã¿Ò»¸öSMÉÏ£¬ÔÚSM²ãÃæ£¬Ã¿Ò»¸öwarp·Ö²¼Ê½µ÷¶ÈÒýÇæ°´ÕÕ32¸öÏß³ÌΪһ¸öwarpÖ´ÐС£

    FermiʵÏÖÁËSM¼¶±ðµÄË«·¢É䣬Òâζ×ÅSPMD£¨µ¥Ï̶߳àÈÎÎñ£©µÄʵÏÖ¡£´Ó²¢ÐÐkernelÏÂ̽µ½×îµ×²ã£¬Êµ¼ÊÉϾÍÊÇ¿¿µÄSM¼¶±ðµÄË«·¢Éä¡£SM¼¶±ð µÄSPMDÉÏÉýµ½GPUºËÐļ¶±ð£¬Fermi¾ÍÊÇMPMD£¨¶àÏ̶߳àÈÎÎñ£©¡£ÕâÖÖÉè¼ÆÒѾ­Ô½À´Ô½ÏñCPU£¬¶øÇÒËæ×ÅGPUµÄ·¢Õ¹£¬Ã¿×ßÒ»²½£¬¾Í¶àÏñÒ»·Ý¡£



FermiʵÏÖÁËSMµ¥Ôª¼¶±ðµÄË«·¢Éä

    µÚÒ»´úGigaThreadÏ̵߳÷¶ÈÒýÇæ£¬ÔÚG80¼Ü¹¹ÖÐʵÏÖÁË12288¸öÏ̵߳ÄʵʱµÄµ÷¶È¹ÜÀí¡£Fermi¼Ü¹¹²»Ö»ÊÇÔöÇ¿ÁËÔ­ÓеĻúÖÆ£¬¶øÇÒÒý½øÁ˸ü ¿ìµÄcontextÉÏÏÂÎĽ»»»»úÖÆ£¬²¢ÐÐkernelÖ´ÐлúÖÆ£¬ÔöÇ¿ÁËÏß³ÌblockµÄµ÷¶ÈÄÜÁ¦¡£FermiµÄÕâÏîÄÜÁ¦Ïà¶ÔÓÚÉÏÒ»´úGPUÌá¸ßÁË10±¶¡£

    ͬʱÏñCPUÒ»Ñù£¬GPUÒ²¿ÉÒÔÀûÓÃcontextÉÏÏÂÎĽ»»»»úÖÆÀ´¹ÜÀí¶àÈÎÎñµÄÇл»£¬Ã¿Ò»¸öÈÎÎñ¶¼¿ÉÒÔÓ÷ÖʱµÄ·½Ê½ÀûÓô¦ÀíÆ÷µÄ¼ÆËã×ÊÔ´¡£FermiµÄ ÔËËãÁ÷Ë®Ïß¾­¹ýÓÅ»¯Éè¼Æ£¬°ÑcontextÉÏÏÂÎĵÄÇл»Ê±¼ä¼õÉÙµ½ÁË10~20ºÁÃ룬¼«´óµÄÓÅ»¯ÁËÉÏÒ»´úµÄGPU¼Ü¹¹¡£²»Ö»ÊÇÐÔÄܵÄÌá¸ß£¬Õâ¸öÉè¼Æ¿ÉÒÔÈà ¿ª·¢Õß´´½¨¸ü¿ìµÄkernel-to-kernelÓ¦ÓóÌÐò£¬ÀýÈçÈóÌÐòÔÚͼÐκÍPhysXÉϵÄÓ¦Óã¬Í¼ÐÎÓëÎïÀíЧ¹û´¦ÀíÖ®¼äµÄÔËËãÒ²½«ÊÜÒæÓÚ¸ü¿ìµÄ contextÉÏÏÂÎĽ»»»»úÖÆ¡£

¡ñ²¢ÐÐÖ´ÐÐÄÚºËConcurrent Kernel Execution


²¢ÐÐÖ´ÐÐÄÚºËÈÃ×ÊÔ´ÀûÓøü³ä·Ö£¬¼ÆËãËٶȸü¿ì

    FermiÖ§³Ökernel²¢·¢ÔËÐУ¬Í¬Ò»Ó¦ÓóÌÐòµÄ²»Í¬kernel¿ÉÒÔͬʱÔËÐÐÔÚGPUÉÏ¡£Kernel²¢·¢»úÖÆ¿ÉÒÔÈÃÓ¦Óû¹ÔøÏòÖ´Ðиü¶àµÄ kernelÀ´·¢»ÓGPUµÄÄÜÁ¦¡£ÀýÈ磬PhysXÓ¦ÓóÌÐòÐèÒª¼ÆËãÁ÷ÌåºÍ¹ÌÌ壬Èç¹ûÊÇ´®ÐÐÖ´ÐУ¬Ö»ÄÜÀûÓÃÒ»°ëµÄÏ̴߳¦ÀíÆ÷¡£FermiµÄ¼Ü¹¹¿ÉÒÔÈÃͬһ ¸öCUDA contextµÄkernel¶¼Í¬Ê±ÔËÐÐÔÚͬһ¸öGPUÉÏ£¬ÕâÑù¿ÉÒÔ¸üÓÐЧµÄÀûÓÃGPUµÄ×ÊÔ´¡£²»Í¬Ó¦ÓóÌÐòcontextµÄkernelº¯ÊýÒ²¿ÉÒÔͨ¹ý ¸ü¿ìËÙµÄcontextÇл»£¬¸ü¿ìµØÔËÐÐÔÚGPUÉÏ¡£

ϸ·ÖÇúÃæ¼¼Êõ´øÀ´µÄ±ä¸ï

    ÔÚÓÎÏ·»­ÃæµÄÉú³É¹ý³ÌÖУ¬ÎÒÃÇÒ»°ã¿´µ½µÄÊÇ3D»­ÃæµÄÌùͼ£¬µ«ÊÇÒþ²ØÔÚÌùͼÀïÃæµÄ»¹ÓÐ3D»­ÃæµÄ¹Ç¼Ü——¼¸ºÎ¹¹Í¼¡£3D»­ÃæµÄÐγÉÊ×ÏÈÒª¹¹½¨¼¸ºÎ¹¹Í¼£¬È» ºóÔÙ½øÐÐäÖȾ¡£¼¸ºÎ¹¹Í¼Ô½¸´ÔÓ£¬×îÖÕÐγɵÄÎïÌå±íÃæ¾ÍÔ½½Ó½üÏÖʵ¡£¿ÉÒÔÈÏΪTessellationϸ·ÖÇúÃæÊÇDirectX 11ΪÎÒÃÇ´øÀ´µÄ×îÖØÒªµÄ¸ïС£



ÇúÃæÏ¸·ÖʾÒâͼ£¬ÇúÃæÔ½¸´ÔÓÔ½½Ó½üÕæÊµ

    DirectX 11ÌṩµÄTessellatorµ¥Ôª±¾Éí²»¾ß±¸¿É±à³ÌÐÔ£¬Òò´ËDirectX11ÏòTessellatorµ¥ÔªÊäÈë»òÕß´ÓÖÐÊä³öµÄ¹ý³ÌÊÇͨ¹ýÁ½¸ö´«Í³µÄ ¹ÜÏß½×¶ÎÍê³ÉµÄ£ºHull Shader £¨HS£¬Íâ¿Ç×ÅÉ«Æ÷£©ºÍDomain Shader £¨DS£¬Óò×ÅÉ«Æ÷£©¡£

    Hull Shader¸ºÔð½ÓÊÕËöËéµÄͼÐÎÊý¾ÝºÍ×ÊÁÏ£¬¶øcontrol points½«»á»ùÓÚÈçºÎÅäÖÃTessellatorÀ´²úÉúÊý¾Ý¡£¿ÉÒÔ˵£¬Tessellator¾ÍÊÇÒ»¸ö¹Ì¶¨¹¦ÄÜÄ£¿é£¬ÓÃÀ´´¦ÀíһЩ»ùÓÚÒ»¶¨²ÎÊýµÄÊäÈë Êý¾Ý¡£×îºóDomain Shader½«»á½ÓÊÕÓÉTessellator²úÉú³öµÄµã£¬²¢ÒÀÕÕÖÕµã¿ØÖÆ£¨control points£©Öû»Ìùͼ½«ÕâЩµãÐγÉÒ»¸öºÏÊʵļ¸ºÎͼÐΡ£

    ʵ¼ÊÉÏR6xxºÍR7xxÓ²¼þ¶¼¾ßÓÐTessellationµ¥Ôª£¬µ«ÊÇÓÉÓÚTessellationÊôÓÚרÓÐʵÏÖ·½°¸£¬ÊÇAMDµÄ¶ÀÓм¼Êõ£¬Òò´ËÓ¦Óò¢ ²»ËãºÜ¹ã·º¡£¶øÔÚAMD µÄÍÆ¶¯Ï£¬´Ë´ÎTessellation³ÉΪÁËDirectX 11ÖеÄÒ»¸ö±Ø±¸µÄ²¿·Ö£¬AMD³¤ÆÚ²»Ð¸µÄ¼á³ÖÖÕÓڵõ½»Ø±¨¡£

    ÔÚ´Ë֮ǰ£¬ÈËÃǶԵʹú¼Û¶à±ßÐβÙ×÷·¨ÒѾ­Ì½Ë÷Á˽ü10Ä꣬´Ó×ʼµÄ¶ÔÈý½ÇÐεÄfan²Ù×Ý£¬µ½ºóÀ´µÄ¹êÁѺͳåײ¼ì²é£¬ÕâЩ·½·¨¿ÉÒÔʵÏÖÇúÃæÏ¸·ÖЧ¹û£¬µ«ÊÇ ¶Ô×ÊÔ´µÄÏûºÄÁ¿Ì«´ó²»¿É¿ØÖÆ¡£Õâ´Î΢ÈíÔÚDirectX 11ÖмÓÈëÓ²¼þTessellationµ¥Ôª£¬ÎÒÃÇ¿ÉÒÔÊÓ×÷ÇúÃæÏ¸·Ö¼¼ÊõÀú¾­³¤Ê±¼äµÄÄ¥Á·ºóÐÞ³ÉÕý¹û¡£ËäÈ»Ëü²»Ì«·ûºÏͨÓô¦Àíµ¥ÔªµÄÉè¼Æ·½Ïò£¬µ«ÊÇÈç¹û¼Æ Ëã¾§Ìå¹ÜµÄͶÈëÓëÐÔÄܻر¨£¬¶ÀÁ¢µÄÓ²¼þTessellationµ¥ÔªÊÇĿǰ×îºÃµÄÑ¡Ôñ¡£

    ATIһֱǿµ÷µÄTessellationÊÇ´´Ôì¸ü¶àÎÆÀíϸ½Ú¡¢ÒõÓ°ÒÔ¼°Æ½»¬±ßÔµµÄ¼¸ºÎͼÐεÄ×î¼Ñ;¾¶Ö®Ò»¡£¶øÇÒ£¬¸ß¼¶¼¸ºÎͼÐÎͬʱҲÐèÒªÕæÕýµÄ¡¢ÍêÃÀµÄ Î»ÒÆÌùͼ¡£µ±Ç°£¬´ó²¿·Ö¼¸ºÎͼÐζ¼ÊÇͨ¹ýÎÆÀíäÖȾºÍijЩÖîÈ簼͹Ìùͼ¡¢ÊÓ²îÌùͼ֮ÀàµÄ¼¼ÊõÄ£ÄâʵÏֵġ£¿ª·¢ÕßÃDzÉÓÃTessellation¼¼ÊõµÄ»°£¬ÎÒ ÃÇ¿ÉÒÔ¿´µ½·Ç³£±ÆÕæµÄÎïÌåЧ¹û£¬¶øÇÒËæ×ÅDX11µÄÆÕ¼°£¬NVIDIAÒÔ¼°AMD×îÖÕ½«»á´ÓTessellation¼¼ÊõÖлñÒæ¡£

    GF100ÓµÓиü¶àµÄPolyMorph£¨¶àÐÎÌåÒýÇæ£©£¬ÊÇÒÔSM£¨Á÷´¦ÀíÆ÷£©Îªµ¥Î»·ÖÅäµÄ£¬ÓµÓжà´ï16×é¡£¶àÐÎÌåÒýÇæÔòÒª¸ºÔð¶¥µãʰȡ(Vertex Fetch)¡¢Ï¸·ÖÇúÃæ(Tessellation)¡¢ÊÓ¿Úת»»£¨Viewport Transform£©¡¢ÊôÐÔÉ趨£¨Attribute Setup£©¡¢Á÷Êä³ö£¨Stream Output£©µÈÎå¸ö·½ÃæµÄ´¦Àí¹¤×÷¡£


TessellationЧ¹ûÐÔÄܶԱÈ

    DirectX 11ÖÐ×î´óµÄ±ä»¯Ö®Ò»Ï¸·ÖÇúÃæµ¥Ôª£¨Tessellator£©¾ÍÔÚÕâÀÒò´ËGF100µÄÀíÂÛTessellationÐÔÄܽ«»áÔ¶³¬HD 5870£¨ºËÐÄ´úºÅCypress£©£¬ÒòΪCypressÖ»ÓÐÒ»¸öTessellatorµ¥Ôª¡£ÕâЩӲ¼þÉϵÄÉè¼Æ£¬ÈÃGF100ÔÚ½øÐÐ Tessellation²Ù×÷ʱ£¬ÐÔÄÜϽµºÜÉÙ¡£

    ×ÜÌåÀ´¿´£¬FermiµÄ¶àÐÎÌåÒýÇæÏà¶ÔÓÚÒÔǰ¾ø·Ç¼¸ºÎµ¥Ôª¸ÄÍ·»»Ãæ¡¢ÔöÇ¿ËٶȶøÒÑ£¬ËüÈÚºÏÁË֮ǰµÄ¹Ì¶¨¹¦ÄÜÓ²¼þµ¥Ôª£¬Ê¹Ö®³ÉΪһ¸öÓлúÕûÌå¡£ËäȻÿһ¸ö¶à ÐÎÌåÒýÇæ¶¼ÊǼòµ¥µÄ˳ÐòÉè¼Æ£¬µ«16¸ö×÷ΪһÌå¾ÍÄÜÏñCPUÄÇÑù½øÐÐÂÒÐòÖ´ÐУ¨OoO£©ÁË£¬Ò²¾ÍÊÇÇ÷ÏòÓÚ²¢Ðд¦Àí¡£NVIDIA»¹ÌصØÎªÕâЩ¶àÐÎÌåÒýÇæÉè ÖÃÁËÒ»¸öרÓÃͨÐÅͨµÀ£¬ÈÃËüÃÇÔÚÈÎÎñ´¦ÀíÖÐά³ÖÕûÌåÐÔ¡£

    µ±È»ÕâÖֱ仯¸´ÔÓµÃÒªÃü£¬Ò²ÏûºÄÁËNVIDIA¹¤³ÌʦÎÞÊýµÄ¾«Á¦¡¢×ÊÔ´ºÍʱ¼ä¡£ÓÐÒ»ÖÖ´«ÑÔ˵£¬¶àÐÎÌåÒýÇæÊÇGF100ºËÐı仯µÄÖØÒª×é³É²¿·Ö£¬Ò²ÊÇ GF100ÎÞ·¨ÔÚÈ¥Ä꼰ʱ·¢²¼µÄ×îÖ÷ÒªÔ­Òò¡£Õâô×öÒ²ÊDz»µÃÒѶøÎªÖ®¡£¿¼Âǵ½Ï¸·ÖÇúÃæµ¥ÔªµÄ¼¸ºÎ¸´ÔÓÐÔ£¬¹Ì¶¨¹¦ÄÜÁ÷Ë®ÏßÒѾ­²»ÊÊÓã¬Õû¸öÁ÷Ë®Ïß¶¼ÐèÒªÖØÐ ƽºâ¡£Í¨¹ý¶àÐÎÌåÒýÇæµÄ²¢ÐÐÉè¼Æ£¬¼¸ºÎÓ²¼þ²»ÔÙÊÜÈκι̶¨µ¥ÔªÁ÷Ë®ÏߵľÖÏÞ£¬¿ÉÒÔ¸ù¾ÝоƬ³ß´çµ¯ÐÔÉìËõ¡£

ÓÎÏ·»­ÖʽøÒ»²½¸ÄÉÆ

    ÓÉÓÚROPºÍTMUµ¥ÔªµÄ×ÊÔ´¿Õǰ³äÅæ£¬Fermi¿ÉÒÔ¸øÍæ¼Ò¸üºÃµÄÓÎÏ·»­ÖÊÌåÑ飬°üÀ¨¸üÏȽøµÄ²ÉÑù¼¼ÊõºÍÐÔÄÜË¥¼õ¸üСµÄ¿¹¾â³Ý¼ÓËÙ¡£

    ´úºÅRV770µÄHD4870ÊÇAMD·Ç³£³É¹¦µÄÒ»¿î²úÆ·£¬ËüÓÃ×îСµÄ¾§Ìå¹ÜÏûºÄ£¬´ò»÷Á˶ÔÊÖNVIDIAµÄÍ´´¦——GPUºó¶ËÉè¼Æ¡£ËùÒÔÎÒÃÇ¿´µ½ÔÚ¿ªÆô¸ß±¶AAµÈЧ¹ûʱ£¬GPUµÄÐÔÄÜË¥¼õÄܹ»µÃµ½¿ØÖÆ¡£¶øÕâ´ÎFermi¼Ü¹¹Ò²ÔöÇ¿Á˺ó¶Ë£¬¶øÇÒÁ¦¶È²»Ð¡¡£

    ÖÚ¶à×ÊÁÏÖУ¬ÎÒÃÇÊ×ÏÈÁ˽⵽µÄÊÇFermi¼Ü¹¹µÄGF100ËùÖ§³ÖµÄGather4¶¶¶¯²ÉÑùÖ¸Áî¡£DirectX 11Ïêϸ¶¨ÒåÁËÏÔ¿¨ÐèÒªÌṩµÄÌØÐÔ£¬µ«¶ÔäÖȾºó¶ËµÄ¹¤×÷Éæ¼°ÉõÉÙ£¬ËùÒÔNVIDIA×öÁ˶àÐÎÌåÒýÇæ£¬»¹Óж¶¶¯²ÉÑù¡£¶¶¶¯²ÉÑù²»ÊÇм¼Êõ£¬³¤ÆÚÓÃÓÚÒõÓ°Ìùͼ ºÍ¸÷ÖÖºóÆÚ´¦Àí£¬Í¨¹ý¶ÔÁÙ½üÎÆËØ£¨Telex/ÎÆÀíÉϵÄÏñËØµã£©½øÐвÉÑùÀ´´´½¨¸üÈáºÍµÄÒõÓ°±ßÔµ¡£ËüµÄȱµãÒ²ÊǷdz£ÏûºÄ×ÊÔ´¡£

    DirectX 9/10É϶¶¶¯²ÉÑùÊÇ·Ö±ðʰȡÿһ¸öÎÆËØ£¬DirectX 10.1¿ªÊ¼¸ÄÓÃGather4Ö¸ÁNVIDIAÔòÔÚÓ²¼þÉÏʹÓõ¥¶ÀÒ»ÌõʸÁ¿Ö¸Áî¡£NVIDIA×Ô¼ºµÄ²âÊÔÏÔʾ£¬Õâô×öµÄÐÔÄÜ´óÔ¼ÊÇ·ÇʸÁ¿Ö´ÐеÄÁ½±¶¡£



Gather4¶¶¶¯²ÉÑùÖ¸Áîϸ½Úͼ½â

    Gather4Ö¸ÁʹËĸöÎÆÀíÓ³Éäµ½Ò»¸ö128×128µÄµ¥ÎÆÀíÖ¸ÁîÏñËØ¡£GF100µÄDirectX 11ʵÏÖ4±¶½ÚʡӲ¼þ×ÊÔ´µÄGather4£¬´ó´ó¼Ó¿ìÒõÓ°Ó³Éä¡¢»·¾³±ÕÈûºÍºóÆÚ´¦ÀíËã·¨¡£Ëæ×Ŷ¶¶¯È¡ÑùµÄÓ¦Óã¬ÓÎÏ·¿ÉÒÔʵÏÖÆ½»¬ÈáºÍÒõÓ°»ò×Ô¶¨ÒåÎÆÀí¹ýÂË Ð§ÂÊ¡£¶ÔÓÎÏ·¿ª·¢ÕßÀ´Ëµ£¬ÕâÒâζ×ÅÏûºÄµÄÓ²¼þ×ÊÔ´¸üÉÙ£»¶ÔÓÎÏ·Íæ¼ÒÀ´Ëµ£¬ÔòÒâζןüºÃµÄ»­ÖÊ¡£

    ÔÚ²ÉÑù¹ý³ÌÓÅ»¯µÄͬʱ£¬ÓÎÏ·Íæ¼Ò¹Ø×¢µÄ¿¹¾â³ÝЧ¹ûÒ²ÔÚ²»¶Ï·¢Õ¹¡£CSAAÈ«³Æ Coverage Sample Anti-Aliasing£¨¸²¸Ç²ÉÑù¿¹¾â³Ý£©£¬G80ʱ´úÒѾ­±»NVIDIAÒýÈ룬²»¹ýµ±Ê±Ö»Ö§³Öµ½16X£¬Fermi½«Õâ¸öÊýÖµÌáÉýµ½ÁË32X£¬²¢ÇÒ ½«É«²ÊÈ¡ÑùºÍ¸²¸ÇÈ¡Ñù·Ö¿ª´¦Àí£º8¸öÉ«²ÊÈ¡Ñù£¬24¸ö¸²¸ÇÈ¡Ñù£¬»­ÖʺÍÐÔÄܶ¼ÏÔÖøÌáÉý¡£


8XºÍ32X CSAAµÄЧ¹û¶Ô±È

    Alpha to Coverage¿ÉÒÔʹÓÃÈ«²¿²ÉÑùµã£¬ÓµÓÐ33¸ö͸Ã÷¼¶±ð£¬ÉÏͼÊÇGT200²»Ê¹Óø²¸Ç²ÉÑùÓëGF100²ÉÓÃ32X CSAAµÄЧ¹û¶Ô±È£¬32X CSAAЧ¹û¸üΪÎÂÈó³öÉ«¡£Ïà±È´«Í³µÄ¿¹¾â³Ýģʽ£¬FermiÖ´ÐÐCSAAÐÔÄÜϽµ·Ç³£µÍ£¬32X CSAAÐÔÄÜϽµÖ»Óд«Í³8XµÄ0.7%×óÓÒ¡£

    ÕâÒ»ÇÐÐÔÄÜË¥¼õ·½ÃæµÄÓÅÐã±íÏÖ£¬¶¼Àë²»¿ªNVIDIA¶ÔGF100µÄROPºÍTMUµ¥Ôª×ö³öµÄ¸Ä½ø¡£¹ØÓÚGPUºó¶ËÕⲿ·Ö×ÊÔ´£¬ÎÒÃǽ«ÔÚÒÔºóµÄÆÀ²âÖÐΪ´ó¼ÒÏêϸ·ÖÎö¡£

µ×²ã¼ÆËãµ¥ÔªµÄ¸Ä½øºÍЧ¹û

    ËäÈ»ÔÚCUDA¸ÅÄîÀCUDA core»òÕßSP¾ÍÊÇÒ»¸öÄںˣ¬µ«ÊÇ´ÓĿǰʵÏÖµÄÓ²¼þÕûÌå¶øÑÔ£¬CUDA coreÆäʵֻÊÇÒ»¸ö¹¦Äܵ¥Ôª¶øÒÑ¡£ÕæÕýÄܱȽϽӽüÓÚÎÒÃdz£ËµµÄÄںˣ¬ÔòÊÇCUDA coreµÄÉÏÒ»¼¶——Streaming Multiprocessor£¨¼òдΪSM£©£¬ÒòΪĿǰֻÓÐÔÚSMÕâÒ»¼¶²Å¾ß±¸Program Counter£¨³ÌÐò¼ÆÊýÆ÷£©¡¢µ÷¶È×ÊÔ´ÒÔ¼°·ÖÀëµÄ¼Ä´æÆ÷¶Ñ¿é¡£



Ò»¸öCUDA CoreÔËËãºËÐĵĹ¹³É

    FermiµÄÿ¸öSMÓµÓÐ32¸ö¸ßÐÔÄÜCUDA Core——ÕâÊÇËı¶ÓÚG80/GT200µÄÉè¼Æ£¬Ã¿¸öCUDA core¶¼ÓÐÈ«Á÷Ë®Ïß»¯µÄÕûÊýËãÊõÂß¼­µ¥Ôª£¨ALU£©ºÍ¸¡µãµ¥Ôª£¨FPU£©¡£FermiµÄALU¼¸ºõ²ÉÓÃÍêеÄÉè¼Æ£¬Ö§³Ö64bitºÍÀ©Õ¹µÄ¾«È·µÄÖ¸ÁîÔË Ë㣬ͬʱ֧³Ö¼ÆËã£¬ÒÆÎ»£¬²¼¶ûÖµ£¬±È½Ï£¬×ª»¯ºÍ¸ü¶àµÄÖ¸Áî²Ù×÷¡£

    FermiµÄËùÓÐÁ÷´¦ÀíÆ÷ÏÖÔÚ¶¼·ûºÏIEEE 754-2008¸¡µãËã·¨(AMDµÄCypress¼Ü¹¹Ò²ÊÇÈç´Ë)ºÍÍêÕûµÄ32λÕûÊýËã·¨£¬¶øºóÕßÔÚ¹ýÈ¥Ö»ÊÇÄ£ÄâµÄ£¬ÊÂʵÉϽöÄܼÆËã24-bitÕûÊý³Ë ·¨£»Í¬Ê±FermiÈ«ÃæÒýÈëÁË»ýºÍÈÛ¼ÓÔËËã(Fused Multiply-Add/FMA)£¬Ã¿Ñ­»·²Ù×÷Êýµ¥¾«¶È512¸ö¡¢µ¥¾«¶È256¸ö(G200½öÖ§³Öµ¥¾«¶ÈFMA)¡£ËùÓÐÒ»Çж¼·ûºÏÒµ½ç±ê×¼£¬¼ÆËã½á¹û²» »á²úÉúÒâÍâÆ«²î¡£

    ºÍMAD£¨multiply-add£©Ö¸ÁîÏà±È£¬FermiËùÖ§³ÖµÄFMAÖ¸ÁîÔÚ×ö³ËÔËËãºÍ¼ÓÔËËãµÄʱºòÖ»ÔÚ×îºóÔËËãµÄʱºò×÷Ò»´ÎÉáÈ룬²»»áÔÚÖ´Ðмӷ¨µÄ ʱºò¾Í³öÏÖ¾«¶ÈËðʧ£¬¾«¶È±È°Ñ²Ù×÷·ÖÀëÖ´Ðиü¸ß¡£µ±È»ÎÒÃÇÐèÒªÁ˽âµÄÊÇ£¬GT200ÔÚÖ´ÐÐË«¾«¶È¸¡µãÔËËãµÄʱºò£¬Ê¹ÓõÄÊÇFMAÖ¸ÁÕâ¾ÍÖ¤Ã÷GT200 ʱ´úSMÖеÄDPUË«¾«¶Èµ¥ÔªÒѾ­³ÉÊìÂú×ãÁËFMAÖ¸ÁîËùÐèµÄÓ²¼þÒªÇó¡£


FMAÖ¸ÁîÔÚ¾«¶ÈÉϵÄÓÅÊÆ

¡ñ4¸öÌØÊ⹦Äܵ¥ÔªFour Special Function Units £¨SFU£©

    ÌØÊ⺯Êý´¦Àíµ¥Ôª´¦Àí³¬Ô½º¯Êý£¬°üÀ¨sin¡¢cosine¡¢Çóµ¹Êý¡¢Æ½·½¸ù¡£Ã¿Ò»¸öSFUÔÚÒ»¸öÖÜÆÚÄÚÿһ¸öÏ߳̿ÉÒÔÖ´ÐÐÒ»¸öÖ¸Áî²Ù×÷£¬Ã¿Ò»¸öwarpÖ´ ÐÐÐèÒª8¸öÖÜÆÚ¡£Ö¸Áî·Ö·¢Æ÷¿ÉÒÔ°´ÕÕµ±Ç°SFUµÄÔËÐÐÇé¿öÀ´·Ö·¢Ö¸Áµ±Ò»¸öSFUÔÚ½øÐÐÔËËãµÄʱºò£¬¿ÉÒÔ½«Ö¸Áî·Ö·¢µ½ÆäËûµÄSFU´¦Àíµ¥Ôª¡£
 
    ¡ñË«¾«¶ÈÉè¼ÆDesigned for Double Precision

    FermiµÄË«¾«¶È¸¡µã£¨FP64£©ÐÔÄÜÒ²´ó·ù¶ÈÌáÉý£¬·åÖµÖ´ÐÐÂÊ¿ÉÒÔ´ïµ½µ¥¾«¶È¸¡µã£¨FP32£©µÄ1/2£¬¶ø¹ýÈ¥Ö»ÓÐ1/8£¬AMDÏÖÔÚÒ²²»¹ý1/5£¬ ±ÈÈçRadeon HD 5870·Ö±ðΪµ¥¾«¶È2.72TFlops¡¢Ë«¾«¶È544GFlops¡£ÓÉÓÚ×îÖÕºËÐÄÆµÂÊ䶨£¬ËùÒÔÔÝʱ»¹²»Çå³þFermiµÄ¾ßÌ帡µãÔËËãÄÜÁ¦£¨Ë«¾«¶ÈÔ¤ ¼Æ¿É´ï624GFlops£©¡£

    Ë«¾«¶ÈµÄ¸¡µã¼ÆËãÔÚ¸ßÐÔÄܼÆËãÖÐÓÐןËÐĵÄÖØÒªÎ»Öã¬ÔÚÇó½âÏßÐÔ´úÊýÖУ¬ÊýÖµ¼ÆËãÁ¿×Ó»¯Ñ§Öж¼»áÐèҪ˫¾«¶È¸¡µãÔËËã¡£Fermi¼Ü¹¹ÎªÖ§³ÖË«¾«¶È¸¡µãÔËËã ½øÐÐÁËÌØ±ðÉè¼ÆÃ¿Ò»¸öSMÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ¿ÉÒÔÍê³É16¸öË«¾«¶È¸¡µãÊýµÄFMA²Ù×÷¡£ÊÇÔÚGT200¼Ü¹¹ÒÔºóÓÖÒ»¼¤¶¯ÈËÐĵÄÉè¼Æ¡£



Ë«¾«¶ÈÔËËãÖÐFermi¼Ü¹¹µÄÐÔÄÜÌáÉý

    ¡ñ¿ìËÙÔ­×ÓÄÚ´æ²Ù×÷

    ÔÚ¶à½ø³Ì£¨Ị̈߳©µÄ²Ù×÷ϵͳÖв»Äܱ»ÆäËü½ø³Ì£¨Ị̈߳©´ò¶ÏµÄ²Ù×÷¾Í½ÐÔ­×Ó²Ù×÷£¬ÎļþµÄÔ­×Ó²Ù×÷ÊÇÖ¸²Ù×÷ÎļþʱµÄ²»Äܱ»´ò¶ÏµÄ²Ù×÷¡£Ô­×Ó²Ù×÷ÔÚ²¢ÐмÆËãÖзdz£ÖØÒª£¬Ëü¿ÉÒÔÈÃÏ̶߳Թ²ÏíµÄÄÚ´æ½á¹¹×öÕýÈ·µÄ¶Áд²Ù×÷¡£

    Ô­×Ó²Ù×÷°üÀ¨add¡¢min¡¢±È½ÏºÍ½»»»¡¢¶Á¡¢Ð޸ĺÍд²Ù×÷£¬ËüÃǶ¼²»Óôò¶ÏÆäËûµÄÕýÔÚÔËÐеÄÏ̡߳£Ô­×Ó²Ù×÷±»´óÁ¿Ê¹ÓÃÔÚ²¢Ðд洢¡¢Ëõ¼õºÍ²¢ÐеĽ¨Á¢Êý¾Ý½á¹¹ÖУ¬¶ø²»ÐèÒªËø¶¨Ï̵߳ÄÖ´ÐС£


FermiÔ­×Ó²Ù×÷ÄÜÁ¦ÌáÉý

    ´óÁ¿Ô­×Ó²Ù×÷µ¥ÔªºÍL2»º´æµÄʹÓ㬴ó´óÔöÇ¿ÁËFermiGPU¼Ü¹¹ÖеÄÔ­×Ó²Ù×÷ÄÜÁ¦¡£ÔÚÏàͬλÖõÄÔ­×Ó²Ù×÷£¬FermiµÄËٶȱÈGT200¿ì20±¶£¬Á¬ÐøµÄÄÚ´æ²Ù×÷ÊÇGT200µÄ7.5±¶¡£

    ÔÚGPUÖ§³ÖµÄÄÚ´æÑ°Ö·¿Õ¼ä·½Ã棬GT80/GT200¶¼ÊÇ32-bitµÄ£¬×î¶à´îÅä4GB GDDR3ÏԴ棬¶øFermiÒ»¾ÙÖ§³Ö64-bitѰַ£¬¼´Ê¹Êµ¼ÊѰַֻÓÐ40-bit£¬Ö§³ÖÏÔ´æÈÝÁ¿×î¶àÒ²¿É´ï¾ªÈ˵Ä1TB£¬Ä¿Ç°Êµ¼ÊÅäÖÃ×î¶à6GB GDDR5——ÈÔÊÇTesla¡£

    ͬʱFermiͳһÁËѰַ¿Õ¼ä£¬¼ò»¯ÎªÒ»ÖÖÖ¸ÁÄÚ´æµØÖ·È¡¾öÓڴ洢λÖãº×îµÍλÊDZ¾µØ£¬È»ºóÊǹ²Ïí£¬Ê£ÏµÄÊÇÈ«¾Ö¡£ÕâÖÖͳһѰַ¿Õ¼äÊÇÖ§³ÖC++µÄ±ØÐè ǰÌá¡£¶øÒÔǰµÄ¼Ü¹¹Àï¶àÖÖ²»Í¬ÔØÈëÖ¸Áȡ¾öÓÚÄÚ´æÀàÐÍ£º±¾µØ£¨Ã¿Ị̈߳©¡¢¹²Ïí£¨Ã¿×éỊ̈߳©¡¢È«¾Ö£¨Ã¿Äںˣ©¡£Õâ¾ÍºÍÖ¸ÕëÔì³ÉÁËÂé·³£¬³ÌÐòÔ±²»µÃ²»·Ñ¾¢Çå Àí¡£

Ê×´ÎÒýÈëÓÎÏ·¼ÆËã¼Ü¹¹

    ¹ýÈ¥µÄGPUÔÚ´¦ÀíÓÎÏ·ÖеÄͼÐÎÔËËãʱ£¬¼¸ºõ²»ÄÜ×öÆäËû²Ù×÷¡£Î¨Ò»¿ÉÒÔ×öµÄ¾ÍÊÇÔÚÖ§³ÖPhysXÎïÀíЧ¹ûµÄÓÎÏ·ÖÐÌṩһ¶¨µÄÎïÀíÔËËãÖ§³Ö¡£ÓÎÏ·ÖеÄAI£¨È˹¤ÖÇÄÜ£©¡¢¾°Éî¡¢¹âÏß×·×ٵȵÈЧ¹û£¬¶¼ÊÇÒÀÀµCPUÔËÐеġ£GPUÎÞ·¨¶ÔÆä½øÐмÓËÙ¡£

    Fermi¼Ü¹¹ÒýÈëµÄÓÎÏ·¼ÆËã¼Ü¹¹£¨Compute Architecture for Graphic£©£¬´òÆÆÁËÕâÒ»´«Í³¡£Ëæ×ÅͨÓüÆËãµÄÊ¢ÐУ¬×¨ÒµÁìÓòºÍÃñÓÃÁìÓò¶¼Ç°Í¾ÎÞÁ¿£¬NVIDIA CUDA²¢ÐмÆËã¼Ü¹¹¾Í»áÔÚGF100Fermi¼Ü¹¹ÖмÌÐø·¢Ñï¹â´ó£¬¶øÇÒÓÃ;¸ü¼Ó¹ã·º£¬µ¥¾ÍÓÎÏ·¶øÑÔÊÜÒæÒ²ÊÇ¶à·½ÃæµÄ¡£

    ¿É±à³Ì×ÅÉ«Æ÷µÄÔËËãÐÔÄܽüÄêÀ´ÓÐÁ˺ܴóµÄ½ø²½¡£Õ¹ÍûδÀ´£¬¿É±à³ÌÈÔÈ»ÔÚGPUÖн«¼ÌÐø³äµ±Ñ¹µ¹Ò»ÇеÄÖØÒªÐÔ£¬Ëü¿ÉÒÔÈÿª·¢ÈËÔ±Äܹ»´´½¨ÐÂÒ»´úµÄÊÓ¾õЧ¹û¡£ ¹âÕ¤»¯£¨Pasteurization£©£¬¹âÏ߸ú×Ù£¨ray tracing£©ºÍÀ×Ү˹·¨£¨Reyes£©ÊÇÖÚËùÖÜÖªµÄÒ»°ãäÖȾËã·¨¡£½ØÖÁFermi³öÏÖ֮ǰ£¬GPUµÄÉè¼ÆÈÔÈ»´¿´âΪ¹âÕ¤»¯¡£¿ª·¢ÈËÔ±¼ÌÐøÑ°ÕÒеķ½Ê½ À´¸ÄÉÆËûÃǵÄͼÐÎÒýÇæ£¬GPUÔòÐè񻃮ÓÚ¶àÑù»¯ºÍ²»¶ÏÔö³¤µÄͼÐÎËã·¨¼¯¡£ÓÉÓÚÕâЩËã·¨ÊÇͨ¹ýÒ»°ãͨÓüÆËãAPI£¬ËùÒÔGPUµÄÔËËãÄÜÁ¦¶ÔÒ»¸öÇ¿´óµÄ¼ÆËã¼Ü ¹¹µÄÖ´ÐÐЧÂÊÊÇÖÁ¹ØÖØÒªµÄ¡£´Ó±¾ÖÊÉϽ²£¬¿ÉÒÔÈÏΪÓÎÏ·¼ÆËã¼Ü¹¹ÊÇÒ»ÖÖеĿɱà³Ì×ÅɫӦÓá£

    GF100µÄ¼ÆËã¼Ü¹¹ÊÇÉè¼ÆÖ®³õ¾Í¿¼Âǵ½ÉäÏß×·×Ù¡£GF100ÊǵÚÒ»¿îGPUÓ²¼þÖ§³ÖµÝ¹é£¬¿ÉÒÔ¸ßЧµÄʵÏÖ¹âÏß×·×ÙËã·¨ºÍÆäËûͼÐÎËã·¨µÄGPU¡£ GF100µÄL1ºÍL2»º´æ´ó´óÌá¸ß¹âÏß×·×ÙÐÔÄÜ£¬¸ÄÉÆ¾ÍϸÁ£ÄÚ´æ·ÃÎʵÄЧÂÊ¡£L1»º´æÌá¸ßÁËÁÚ½üµÄ¹â´æ´¢Ð§ÂÊ£¬¶ø¶þ¼¶»º´æ£¬½øÒ»²½·Å´óÁËÕû¸ö´¦ÀíϵͳµÄ ´æ´¢´ø¿í¡£

    CUDA¼Ü¹¹µÄʵÏÖ;¾¶¶àÖÖ¶àÑù£¬CUDA C¡¢CUDA C++¡¢OpenCL¡¢DirectCompute¡¢PhysX¡¢OptiX Ray-TracingµÈµÈ¡£ÕâÆäÖмÈÓÐNVIDIA×Ô¼ºËÆÓеĿª·¢·½Ê½£¬Ò²Óпª·ÅµÄÒµ½ç±ê×¼¹æ·¶£¬¿ª·¢ÉÌ¿ÉÒÔ×ÔÓÉÑ¡Ôñ¡£



GPUÓÎÏ·¼ÆËã¼Ü¹¹ÊµÀý

    ÔÚÓÎÏ·ÖУ¬NVIDIA CUDA¼ÆËã¼Ü¹¹¿ÉÒÔÖ´Ðл­ÖÊ´¦Àí¡¢Ä£Äâ¡¢»ìºÏäÖȾµÈµÈ£¬ÊµÏÖ¾°Éģºý¡¢ÎïÀí¡¢¶¯»­¡¢È˹¤ÖÇÄÜ¡¢Ë³ÐòÎÞ¹ØÍ¸Ã÷£¨OIT£©¡¢ÈáºÍÒõÓ°Ìùͼ¡¢¹âÏß×·×Ù¡¢Á¢ÌåÏñËØäÖȾµÈ´óÁ¿»­ÃæÐ§¹û¡£

    NVIDIA»¹Ðû³Æ£¬GF100µÄÓÎÏ·¼ÆËãÐÔÄÜÏà±ÈGT200ÓÐÁË´ó·ùÌá¸ß£¬±ÈÈçPhysXÁ÷ÌåDEMOÑÝʾ³ÌÐò3.0±¶¡¢¡¶Dark Void¡·ÓÎÏ·ÎïÀí2.1±¶¡¢¹âÏß×·×Ù3.5±¶¡¢È˹¤ÖÇÄÜ3.4±¶¡£

    ÏÂÃæ¼òÒª½éÉܼ¸¸öGPUÓÎÏ·¼ÆËãµÄʵÀý£º¡¶µØÏÂÌú2033¡·ÊǽüÆÚÍÆ³öµÄÒ»¿îFPSÓÎÏ·£¬Æä¾°ÉîЧ¹ûµÄ¼ÆËã¾Í²ÉÓÃÁËDirectCompute¡£²ÉÓÃÒÔÍù ´«Í³µÄºó´¦Àí·½Ê½Ð§¹û²¢²»ÄÜÈÃÈËÂúÒ⣬¶ø²ÉÓÃÆ¤¿Ë˹µÄ¼¼ÊõÔòϵͳ×ÊÔ´ÏûºÄÔò»áÌ«´ó£¬¶ø²ÉÓÃCUDAÔòÄܺܺõÄЭµ÷¼¼ÊõÑз¢ÕߺÍÓÎÏ·¿ª·¢ÕßÖ®¼äµÄ¹¤×÷¡£


GPUÓÎÏ·¼ÆËã¼Ü¹¹Ä£Äâ³ö·Ç³£ÕæÊµµÄ¾°ÉîЧ¹û

    Capcom·¢ÊÛµÄDark Void¾ÍÀûÓÃÁËNVIDIA APEX TurbulenceÄ£¿é¼¼Êõ£¬ÓÃÀ´±íÏÖ»úеºÍÎäÆ÷µÄ¿ª»ðºÍÁ£×ÓЧ¹û¡£

    CUDA»¹¿ÉÒÔÓÃÓÚÓÎÏ·µÄAIѰ·¼ÆË㣬¿ÉÒÔ¸ßЧµÄ¼ÆËã×î¶Ì·¾¶£¬²¢¿ÉÒÔ×ö³åͻԤ²â£¬GF100ÔÚѰ··½ÃæÒÔÌṩÈý±¶ÓÚGT200µÄÐÔÄÜ¡£

    Á÷ÌåÄ£Äâ»ùÓÚÁ£×Ó²ã´Î£¬Ä£Äⳬ¹ý128000¸öÁ£×Ó»¥¶¯£¬ÉõÖÁ°üÀ¨ÒºÌå±íÃæÕÅÁ¦¼ÆË㣬GF100¿ÉÒÔÌṩÁ½±¶ÓÚGT200µÄÐÔÄÜ£¬ÕâÑùµÄ¼¼Êõ¿ÉÒԹ㷺ӦÓà ÓÚÓÎÏ·µÄË®Á÷¡¢ÄཬºÍѪҺµÈÁ÷ÌåµÄÎïÀíÌØÐÔÄ£Äâ¡£PhysX 3.0µÃÒæÓÚ²¢ÐкËÐijÌÐòÖ´ÐУ¬Ïà±È֮ǰÐÔÄÜ¿ÉÒÔÓÐ20-40%µÄÌáÉý£¬¶øÔÚʵ¼ÊÓÎÏ·Ó¦ÓÃÖÐÐÔÄÜÌáÉý»á¸üΪÃ÷ÏÔ¡£

    GF100µÄ¹âÏß×·×Ù²ÉÓùâÕ¤»¯ºÍ¹âÏß×·×Ù×éºÏµÄ·½Ê½£¬Ö÷Òª¹âÔ´ÒÀÈ»²ÉÓùâÕ¤»¯£¬¶øÒõÓ°ºÍ·´Éä²ÉÓùâÏß×·×ٵķ½Ê½£¬GF100µÃÒæÓÚÐµĻº´æ¼Ü¹¹ÔÚÕâÒ»Ó¦ÓÃÖпÉÒÔÌṩËı¶ÓÚGT200µÄÐÔÄÜ¡£

FermiÊÇ·ñÌôÕ½°ëµ¼Ì幤ÒÕ¼«ÏÞ

    Ò»¿ÅÓµÓÐÁËÖÚ¶à¸Ä½ø²¢ÇÒÖØÐÂÉè¼ÆµÄGPUоƬ£¬×ÜÊÇÄÜÒýÆðÎÒÃǵÄÎÞÏÞåÚÏë¡£Fermi¼Ü¹¹µÄGF100ºËÐÄÓµÓжà´óµÄÀíÂÛ¸¡µãÖµÎÒÃÇÔÚÎÄÖм¸ºõûÓÐÌá¼°¹ý£¬¶øÈÃÎÒ¸ü×ÅÃÔµÄÊÇFermiÈçºÎ¼Ì³ÐG80ºÍGT200µÄÓÅÐ㴫ͳ£¬½«Êµ¼ÊºÍÀíÂ۵IJîÖµ½µµ½×îС¡£

    ǰÎÄÒѾ­¸æËß´ó¼Ò£¬FermiÓÃ×·¼Ó´óÁ¿µÄ¼Ä´æÆ÷ºÍÏ̵߳÷¶È×ÊÔ´½â¾öÁËÕâÒ»ÎÊÌ⣬Èñà³ÌÕß²»ÔÙÃÔãÔõÑù¸Äд³ÌÐò²ÅÄÜ´ïµ½×î¼Ñ״̬£¬Óû§Ò²²»±Øµ£ÐÄ×Ô¼ºµÄGPU»á²»»áÒòË¥¼õÌ«¹ýÑÏÖØ¶øÔ¶Àë±ê³ÆÐÔÄÜ¡£

    µ«ÊÇÒÔÉÏÁ½Ïî¸Ä½ø£¬ÈÃFermi¸¶³öÁËÌ«´óµÄ¾§Ìå¹Ü´ú¼Û£¬ÓÐÈËÉõÖÁÒÉ»óFermiÊÇÈçºÎÔÚÒ»¿éоƬÉÏ×°½øÁË512¸öCUDAºËÐÄ£¬Ò²ÓÐÈ˳ÆÕâÖÖÐÐΪÊÇNVIDIA¶Ä²©Ê½µÄ¼¤½ø£¬×îÖÕÒª¸¶³ö´ú¼Û……

    ʵ¼ÊÉÏFermiÃæÁÙµÄÎÊÌâÔÚÁ½¸ö²ãÃæ£¬Ê×ÏÈÊǰ뵼ÌåÎïÀíѧ¼«ÏÞ¡£ÆÕ±é¹ÛµãÈÏΪ¹ý¸ßµÄ¾§Ìå¹Ü¼¯³É¶È»á¸øÒ»¿éоƬÔì³É²»ÄܳÐÊܵķ¢ÈȺ͹¦ºÄ£¬µ«ÊÇÈçºÎÁ¿»¯ “¹ý¸ß”Õâ¸ö¸ÅÄʵ¼ÊÇé¿öÊÇFermiµÄ30ÒÚ¸ö¾§Ìå¹ÜÔÚÓ¦ÓÃ40nm¹¤ÒÕʱ£¬ÉÐδ´¥ÅöÕâ¸öÎÊÌâ¡£ÎÒÃǵõ½µÄÏûÏ¢ÊÇFermiµÄÔËÐÐÆµÂʺ͹¦ºÄ¶¼¿É¿Ø£¬ ×îÖ÷ÒªµÄÒ»µãÊÇGTX480¹¦ºÄÔÚ250W×óÓÒ£¬Ã»Óг¬Ô½PCI-E 2.0¹æ·¶ÒªÇóµÄ300W¡£



̨»ýµç40nm¹¤ÒÕÄÚ²¿»¥Áª²ãʾÒâͼ

    µ«ÊÇGPUоƬµÄÄÚ²¿»¥ÁªÏß³¤Êý¾Ý´ó¼Ò¿ÉÒÔ×Ðϸ¶Ô±È¡£¾ÝÎÒÃÇÁ˽⣬R600µÄÄÚ²¿»¥ÁªÏß³¤´ïµ½19000¹«ÀRV770µ½ÁË27000¹«ÀÈç¹û RV770²»»»µôringbus»·ÐÎÄÚ´æ×ÜÏߣ¬Ïß³¤¿ÉÄÜÒª³¬¹ý40000¹«ÀÏÖÔÚR800ÔÚAMDµÄÈ«Á¦¸Ä½øÏÂÎȶ¨ÔÚÁË36000¹«Àï¡£ÀíÂÛÉÏ»ùÓÚIC Éè¼Æ²ãÃæ£¬R800»¹¿ÉÒÔ¼ÌÐøÀ©Õ¹¹æÄ££¬µ«ÊÇʵ¼Ê²Ù×÷Öм¸ºõÒѾ­²»¿ÉÄÜÁË¡£ICÉè¼ÆÖУ¬²»ÊǾ§Ìå¹Ü¶àÄÚ²¿»¥ÁªÏß³¤¾Í»á¹ý¶È£¬Òª¿´Ð¾Æ¬¾ßÌå½á¹¹£¬´óÁ¿Öظ´µÄ µ¥Ôª²Å»áµ¼ÖÂÏß³¤¼±¾ç·Å´ó¡£

    ÄÚ²¿»¥ÁªÏß³¤¶ÔоƬ»¥Áª²ãÊýÌá³öÁ˼«¸ßÒªÇó£¬ATIһζÔö¼ÓGPUÖØ¸´µ¥Ôª£¨Á÷´¦ÀíÆ÷£©µÄ×ö·¨£¬µ¼ÖÂAMDÊÖÍ·ÒѾ­Ã»ÓмÌÐøÉϹ¥»¥Áª²ãµÄ¼¼Êõ´¢±¸ÁË£¬Ä¿Ç°ÊÇ9/14£¬¼ÈÂß¼­»¥Áª²ãΪ9£¬ÎïÀí»¥Áª²ãΪ14¡£


AMD×ÔR600ʱ´ú¿ªÊ¼Öظ´µ¥Ôª¼±¾çÅòÕÍ

    ¶øNVIDIAµÄоƬ¹æÄ£Ò»Ö±½Ï´ó£¬È´ÓµÓи÷ÖÖ¸´ÔӵķÇÖØ¸´µ¥Ôª£¬×îºóʹµÃ˶´óµÄGT200оƬӵÓв»µ½20000¹«ÀïµÄÄÚ²¿»¥ÁªÏß³¤£¬Õâ¸öֵСÓÚAMD Ŀǰ×î´óµÄGPUºËÐÄR800Ö»ÊǺÍÔø½ñµÄR600²î²»¶à£¬N¿¨µÄ»¥ÁªÏß³¤Æ½¾ùÖ»ÓÐͬ´úA¿¨µÄ60%¡£FermiµÄ¾ßÌåÊý¾ÝÉв»µÃ¶øÖª£¬µ«ÊÇÎÒÃǸù¾Ý GPUÄÚ²¿µ¥ÔªÉèÖã¬ÍƲâÔÚÏß³¤·½ÃæFermiûÓÐÕϰ­¡£

    ×îÖÕµÄÐ¾Æ¬Ãæ»ý·½Ã棬R800ºËÐÄÃæ»ý334mm2£¬FermiGF100ºËÐÄÃæ»ý576mm2£¬Ð¹¤ÒյįôÓÃʹµÃÁ½Õß¶¼±È²»ÉÏ55nm¹¤ÒÕµÄ GT200b´ó¡£¸üÏ¡ËɵÄоƬ²¼¾ÖʹµÃFermiûÓÐÌôÕ½µ½°ëµ¼Ì幤ÒÕµÄÎïÀí¼«ÏÞ£¬Í¬Ê±¶Ô¹©µçµÄÐèÇó²¢²»ËãÌ«¸ß£¬½Ï´óÌå»ýµÄоƬ£¬Î¨Ò»ÐèÒªÌôÕ½µÄ¾ÍÊÇ×îÖÕ Á¼Æ·ÂÊ¡£


Fermi¼Ü¹¹ÃæÁٵĴóоƬÎÊÌâ

    ´ó¸öÍ·µÄFermi¼Ü¹¹ÃæÁÙµÄÎÊÌâÊÇÍêÈ«²»¿É»Ø±ÜµÄ¡£ÈçÉÏͼËùʾ£¬¸ù¾ÝBSNÔ­À´µÄ¹À¼Æ£¬Ã¿Æ¬300mm¾§Ô²ËùÄܲú³öµÄGF100×î´óƬÊýΪ130Ƭ¡£²» ¹ýºóÀ´ËûÃǵÃÖªGF100оƬµÄÕæÊµ³ß´çΪ24x23.9mm£¨»ò24x24mm£©£¬Õâ¸öÊýÖµ¾Ý³ÆÓë65nmÖÆ³ÌµÄGT200 GPUºËÐijߴçÍêȫһÑù£¬Ãæ»ý¾ùΪ570ƽ·½ºÁÃס£ÕâÑù¾­¹ý¼ÆË㣬ÿƬ300mm¾§Ô²ÉÏÄܲú³öµÄ×î´óGF100ƬÊýΪ94¸ö¡£

    GF100ÔÚA1²½½øÖƳÌʱ£¬Ã¿Æ¬300mm¾§Ô²Éϲú³öµÄºÏ¸ñGF100оƬֻÓÐ9Ƭ£¬Ò²¾ÍÊÇ˵Á¼Âʽö²»×ã10%£¬A2²½½øÖƳ̵ijǫ̈±ã˳Àí³ÉÕÂÁË£¬²»¹ý ¾ÝBSNÕÆÎÕµÄÏûÏ¢ÏÔʾ£¬A2²½½øµÄÁ¼ÂÊ´óÔ¼ÊÇ25%×óÓÒ£¬Ò²¾ÍÊÇ˵ÿƬ300mm¾§Ô²Äܲú³ö24-26ƬºÏ¸ñоƬ£¬ÕâÑùÿƬоƬµÄ¼Û¸ñÔÚ208ÃÀÔª×ó ÓÒ£¬ÕâÖÖ¼Û¸ñÒѾ­½Ó½üÁ½Æ¬AMD CypressоƬR800ºËÐĵļ۸ñ¡£Ä¿Ç°ÉÏÊеÄÔòÊÇA3ÖÆ³ÌµÄFermiºËÐÄ£¬Á¼Æ·ÂʽøÒ»²½ÌáÉý£¬µ«¼Û¸ñ»¹ÊÇÃ÷ÏÔ¸ßÓÚR800оƬ¡£ÎÒÃÇ·ÖÎöµÃ³ö FermiËäȻûÓÐÌôÕ½°ëµ¼Ì幤ÒÕ¼«ÏÞ£¬µ«ÊÇÖÁ½ñ»¹ÊÇÊܳɱ¾Ñ¹ÖÆ£¬Èç¹ûÁ¼Æ·Âʲ»Äܵõ½ÓÐЧÌáÉý£¬NVIDIAºÜÄѽ«Í¶Èë²ú³ö±È×î´ó»¯¡£

¾Û½¹Î´À´GPU·¢Õ¹·½Ïò

    ´ÓSIGGRAPH 2003´ó»áÊ×ÏÈÌá³öGPUͨÓüÆËã¸ÅÄµ½NVIDIA¹«Ë¾2007ÄêÍÆ³öCUDAƽ̨£¬ÔÙµ½½ñÌìFermi¼Ü¹¹ÃæÏòͨÓüÆËãÁìÓòÉè¼Æ¡£Ô½À´Ô½¶àµÄÐźŸæËßÎÒÃÇ£¬GPUͨÓüÆËãÊÇһƬÕýÔÚ±»´ò¿ªµÄDZÁ¦¾Þ´óµÄÊг¡¡£

    GPUͨÓüÆËãĿǰÓöµ½µÄ×î´óÕϰ­£¬ÆäʵÀ´×ÔGPUÒ»¹áµÄ¼Ü¹¹Éè¼Æ¡£ÓÉÓÚGPUÎÞ·¨°ÚÍÑ´«Í³µÄͼÐμÓËÙÆ÷Éí·Ý£¬¶øÍ¼ÐÎÁìÓòSIMDºÍVLIWÊÇÊý¾Ý²¢ÐÐÐԺͲÙ×÷²¢ÐÐÐԵĵäÐͽṹ¡£

    ¡ñSIMD¼Ü¹¹µÄÞÏÞÎ

    SIMDÊʺ϶àýÌåÖеķÖ×éÊý¾ÝÁ÷£¬Í¨¹ýÌØ¶¨Ëã·¨½«³¤µÄÊý¾ÝÁ÷½Ø³É¶¨³¤¶ÌÏòÁ¿ÐòÁУ¬´Ó¶ø¿ÉÒÔºÍÏòÁ¿´¦ÀíÆ÷ÄÇÑùʵÏÖ¶Ô¶¨³¤¶ÌÏòÁ¿ÐòÁеĸßЧ´¦Àí¡£VLIW¾ß ÓеÄÓŵãÊÇ£ºÖ¸Áî²Ù×÷Óò¶¨³¤£¬ÒëÂë¼òµ¥£»ÊʺÏÁ÷Ë®´¦Àí£¬¼õÉÙCPI£»±àÒëÆ÷ÐèÒª¿ª·¢³ÌÐòDZÔÚµÄÖ¸Áî¼¶²Ù×÷²¢ÐÐÐÔ¡£VLIWÖ¸Áî×ֽϳ¤£¬¶øSIMD¾ßÓкÜÇ¿ µÄÊý¾ÝѹËõÄÜÁ¦¡£ÊÂʵÉÏ£¬´«Í³¹ÛµãÒ»Ö±ÈÏΪVLIWºÍSIMD¼¼ÊõÏà½áºÏ¿ÉÒÔ»ñµÃ¸ü¸ßµÄÐÔÄܼÓËٱȣ¬Çҷdz£Êʺ϶àýÌåÊý¾Ý´¦Àí¡£



AMDÓëNVIDIAµÄGPUÁ÷´¦ÀíÆ÷µ¥Ôª¶Ô±È

    AMD´ÓR600ºËÐÄ¿ªÊ¼£¬Ò»Ö±ÑÓÐø×ÅÉÏÊöÀíÄîÉè¼ÆGPU²úÆ·£¬R600ÉíÉÏÓкܶഫͳGPUµÄÓ°×Ó£¬ÆäStream Processing UnitsºÜÏñÉÏ´úµÄShader Units£¬ËüÒÀÈ»ÊÇ´«Í³µÄSIMD¼Ü¹¹¡£ÕâЩSIMD¼Ü¹¹µÄ5D ALUʹÓÃVLIW¼¼Êõ£¬¿ÉÒÔÓÃÒ»ÌõÖ¸ÁîÍê³É¶à¸ö¶ÔÊýÖµµÄ¼ÆËã¡£

    ÓÉÓÚÄÚ²¿µÄ5¸ö1D ALU¹²Ïíͬһ¸öÖ¸Áî·¢Éä¶Ë¿Ú£¬Òò´Ëºê¹ÛÉÏR600Ó¦¸ÃËãÊÇSIMD£¨µ¥Ö¸Áî¶àÊý¾ÝÁ÷£©µÄ5DʸÁ¿¼Ü¹¹¡£µ«ÊÇR600ÄÚ²¿µÄÕâ5¸öALUÓ봫ͳGPUµÄ ALUÓÐËù²»Í¬£¬ËüÃÇÊǸ÷×Ô¶ÀÁ¢Äܹ»´¦ÀíÈÎÒâ×éºÏµÄ1D/2D/3D/4D/5DÖ¸ÁÍêÃÀÖ§³ÖCo-issue£¨Ê¸Á¿Ö¸ÁîºÍ±êÁ¿Ö¸Áî²¢ÐÐÖ´ÐУ©£¬Òò´Ë΢ ¹ÛÉÏ¿ÉÒÔ½«Æä³ÆÎª5D Superscalar³¬±êÁ¿¼Ü¹¹¡£

    SIMDËäÈ»ºÜ´ó³Ì¶ÈÉÏ»º½âÁ˱êÁ¿Ö¸ÁîÖ´ÐÐЧÂʵÍϵÄÎÊÌ⣬µ«ÒÀÈ»ÎÞ·¨×î´óÏ޶ȵķ¢»ÓALUÔËËãÄÜÁ¦£¬ÓÈÆäÊÇÒ»µ©ÓöÉÏÑ­»·Ç¶Ì×·ÖÖ§µÈÇé¿ö£¬SIMDÔÚʸÁ¿ ´¦Àí·½Ãæ¸ßЧÄܵÄÓÅÊÆ½«»á±»Ëðʧ´ù¾¡¡£Í¬Ê±VLIWµÄЧÂÊÒÀÀµÓÚÖ¸ÁîϵͳºÍ±àÒëÆ÷µÄЧÂÊ¡£SIMD¼ÓVLIWÔÚͨÓüÆËãÉÏÈõÊÆµÄÔ­Òò¾ÍÔÚÓÚ´ò°ü·¢ËͺͲð°ü ¹ý³Ì¡£

    ¡ñMIMD¼Ü¹¹µÄ¸Ä½ø

    NVIDIA´ÓG80¿ªÊ¼¼Ü¹¹×÷Á˱仯£¬°ÑÔ­À´µÄ4D×ÅÉ«µ¥Ôª³¹µ×´òÉ¢£¬Á÷´¦ÀíÆ÷²»ÔÙÕë¶ÔʸÁ¿Éè¼Æ£¬¶øÊÇͳͳ¸Ä³ÉÁ˱êÁ¿ÔËËãµ¥Ôª¡£Ã¿Ò»¸öALU¶¼ÓÐ×Ô¼ºµÄ רÊôÖ¸Áî·¢ÉäÆ÷£¬³õ´ú²úÆ·ÓµÓÐ128¸öÕâÑùµÄ1DÔËËãÆ÷£¬³ÆÖ®ÎªÁ÷´¦ÀíÆ÷¡£ÕâЩÁ÷´¦ÀíÆ÷¿ÉÒÔ°´ÕÕ¶¯Ì¬Á÷¿ØÖÆÖÇÄÜÖ´Ðи÷ÖÖ4D/3D/2D/1DÖ¸ÁÎÞÂÛ Ê²Ã´ÀàÐ͵ÄÖ¸ÁîÖ´ÐÐЧÂʶ¼ÄܽӽüÓÚ100%¡£

    AMDËùʹÓõÄSIMD¼Ü¹¹Á÷´¦ÀíÆ÷£¬¾ßÓзdz£Ã÷ÏÔµÄÓÅÊÆ¾ÍÊÇÖ´ÐÐÈ«4DÖ¸Áîʱ¼ò½à¸ßЧ£¬¶Ô¾§Ìå¹ÜµÄÐèÇóÁ¿¸üС¡£¶øNVIDIAΪÁË´ïµ½MIMDÁ÷´¦ÀíÆ÷ Éè¼Æ£¬ÏûºÄÁËÌ«¶à¾§Ìå¹Ü×ÊÔ´£¬Í¬Ê±´ÙʹNVIDIA´óÁ¿»¨·Ñ¾§Ìå¹ÜµÄ»¹ÓÐÅÓ´óµÄÏß³ÌÖٲûúÖÆ¡¢¶Ë¿Ú¡¢»º´æºÍ¼Ä´æÆ÷µÈµÈÖܱß×ÊÔ´¡£NVIDIAΪÁË TLP£¨Ï̲߳¢Ðжȣ©¸¶³öÁËÌ«¶àµÄ´ú¼Û£¬¶øÕâÒ»Çдú¼Û£¬¶¼ÊÇΪÁËGPUÄܸüºÃµØÔËÐÐÔÚ¸÷ÖÖ¸´ÔÓ»·¾³Ï¡£

    ¡ñNVIDIAÓöµ½µÄÕϰ­

    TLPÏ̲߳¢ÐжȵÄÉè¼Æ·½ÏòÊǽüÄêÀ´NVIDIA¹«Ë¾GPUÉè¼ÆµÄÖ÷ҪĿ±ê¡£Õ¹ÍûδÀ´GPU·¢Õ¹£¬ÒÔϼ¸¸öÎÊÌâÊDZØÐë½â¾öµÄ¡£Ê×ÏÈÊÇ·ÖÖ§Ô¤²âÄÜÁ¦£¬GPU ÐèÒªÓµÓиüºÃµÄ·ÖÖ§ÄÜÁ¦£¬²ÅÄÜÔËÐиü¶à¸´ÔÓ³ÌÐò£¬¸üºÃµÄÀûÓÃcacheÀ´ÑڸǷÖÖ§µÄÑÓ³Ù£»È»ºóÊǸü´óµÄ»º´æºÍShared memory£¨AMD³ÆÖ®ÎªLDS £¬Local Data Share£©£¬ÕâÖÖ¹²Ïí¼Ä´æÆ÷¸ºÔð¹²ÏíÊý¾ÝºÍÁÙʱ¹ÒÆðỊ̈߳¬ÈÝÁ¿Ô½´ó£¬Ïß³ÌÌø×ªºÍ·ÖÖ§ÄÜÁ¦¾ÍԽǿ£»Ïß³ÌÁ£¶ÈͬÑùÖØÒª£¬Á£¶ÈԽϸÄܹ»µ÷Óò¢ÐжÈÀ´½øÐÐÖ¸ÁîÑÓ ³ÙÑڸǵĻú»áÔ½´ó£¬ÐÔÄÜË¥¼õԽС¡£Ï¸»¯Á£¶È¶ÔGPUµÄÏß³ÌÖٲûúÖÆÒªÇóºÜ´ó£»Í¬Ê±´óÈÝÁ¿»º´æµÄ¿É¶ÁдÐÔÒ²ÊDZØÐë¾ß±¸µÄ……

    ³ý´ËÖ®ÍâʵÏÖ¸ü¸ßˮƽµÄͨÓüÆË㻹Óкܶ༬ÊÖµÄÎÊÌ⣬ÏÖÔÚËüÃÇÒѾ­±»°Úµ½NVIDIAÃæÇ°¡£NVIDIAÑØ×Å×Ô¼ºÉ趨µÄ·½Ïò£¬È´ÓÃ×Ô¼ºµÄ²úÆ·´ò¿ªÁËGPUÁìÓòµÄ“Å˶àÀ­Ä§ºÐ”£¬Fermi¼Ü¹¹µ½µ×¸ÃÈçºÎ¿´´ý£¬¸üÊÇ´ø¸øÒµ½çǰËùδÓеÄ˼¿¼¡£

    2009ÄêÔÚ¼ÓÖÝÊ¥ºÉÎ÷ÕÙ¿ªµÄNVIDIA·¢Õß´ó»áÉÏÃÀ¹úÏðÊ÷Áë¹ú¼ÒʵÑéÊÒÐû²¼Ò»Ïîг¬¼¶¼ÆËã»ú¼Æ»®£¬½«ÓÃÀ´Ñо¿ÄÜÔ´ÓëÆøºò±äǨ£¬ËÙ¶È¿ÉÍû±ÈĿǰ×î¿ìµÄ³¬¼¶µçÄÔ¸ü¿ìÊ®±¶¡£Æä½«²ÉÓõÄÕýÊÇNVIDIAÕûºÏ30ÒÚ¸ö¾§Ìå¹ÜµÄGPU——“Fermi”¼Ü¹¹GF100¡£

    ÏðÊ÷ÁëµÄµçÄÔÓëÔËËã¿ÆÑ§ÊµÑéÊÒ¸±Ö÷ÈÎJeff NicholsÔÚÉùÃ÷Öбíʾ£ºFermi GPU¿É´Ù³ÉÒÔÍù²»¿ÉÄÜʵÏֵē֨´ó¿ÆÑ§Í»ÆÆ”¡£Ëû˵:“½èÓÉNVIDIAµÄ¼¼ÊõÖ§³Ö£¬ÏðÊ÷ÁëÄÜ´´ÔìÒ»¸öÄÜÌṩÒÚÒڴΣ¨exascale,10µÄ18´Î ·½£©ÔËËãµÄÔËËãÆ½Ì¨¡£”ÒÚÒÚ´ÎÔËËãÊdz¬Ô½Ä¿Ç°Ç§Õ״Σ¨petaflop£©ÔËËã1,000±¶µÄ¼¼Êõ£¬´ïµ½Ã¿Ãë100ÍòÕ×´ÎÔËËã¡£´ËºóÓÖÓÐÏûÏ¢³ÆNVIDIA ½«ºÍ΢ÈíºÏ×÷£¬¿ª·¢Ê¹ÓÃTesla¸ßÐÔÄܼÆË㿨µÄ»ùÓÚWindows HPC Server 2008ƽ̨µÄ¼¯Èº·þÎñÆ÷¡£ÕâЩÐźŶ¼±êÖ¾×ÅNVIDIAÒѾ­Õýʽ½øÈ볬¼¶¼ÆËã»úÊг¡¡£


ÃÀ¹úÏðÊ÷Áë¹ú¼ÒʵÑéÊÒ¹ØÓÚFermi»ìºÏÔËËã¼Ü¹¹µÄÑо¿

    FermiµÄ·ÖÖ§ÄÜÁ¦ËäÈ»µÃµ½ÔöÇ¿£¬µ«ËüÒÀÈ»²»ÊÇ·ÖÖ§Ô¤²â£¬¶øÊÇ·ÖÖ§ÂÛ¶Ï£¨predication£©£¬ÕâÒ»²½µÄÌáÉýÔÚÒÔǰÊDz»¸ÒÏëÏóµÄ¡£ÔÚFermiÖÐΪ ÕâÒ»¹¦Äܵijõ²½ÊµÏÖÌṩÁËÒ»¸ö¶ÀÁ¢µ¥Ôª£¬ËüºÍÖÙ²ÃÆ÷¡¢Atomicµ¥ÔªµÄµØÎ»Ò»ÑùÖØÒª¡£·ÖÖ§ÂÛ¶ÏÖ»ÄÜËãÊÇ·ÖÖ§Ô¤²âµÄ³ûÐλòǰÉí£¬ÐèÒªµÄÓ²¼þ¿ªÏúµÄÒ²½ÏС£¬ µ«Õ⻹ÊǸøNVIDIA´øÀ´Á˺ܶàÄÑÌâ¡£

    ¸ü´óµÄ»º´æ¸üÊÇÒ£²»¿É¼°£¬ÎÞÂÛÊÇShared memory»¹ÊÇcache£¬ÕâЩ»º´æ¿Õ¼äµÄÌáÉýÐèÒª°ëµ¼Ì幤ÒÕµÄÇ¿´óÖ§³Ö£¬ÒòΪÕⲿ·Ö»º´æºÍCPUÒ»ÑùʹÓÃ6T SRAM¾§Ìå¹Ü£¬SRAMµÄÿһ¸ö±ÈÌØÎ»ÐèÒªÕ¼ÓÃ6¸ö¾§Ìå¹Ü£¬´æ´¢ÃܶȽϵͣ¬1MBÈÝÁ¿µÄ¶þ¼¶»º´æ¾ÍÐèÒªÕ¼ÓÃ5000Íò¸ö¾§Ìå¹Ü£¬ÕâÊÇÒ»¸öÏ൱¾ªÈ˵ÄÊý ×Ö¡£

    »º´æµÄ¿É¶ÁдÐÔ´øÀ´Á˺ܶàÎÊÌ⣬Ëü°üÀ¨»º´æÒ»ÖÂÐÔЭÒ飬»º´æµÄÃüÖÐÂʵÈÎÊÌ⣬ÕâЩÎÊÌâÿÄêÒªÏûºÄIntelºÍAMDµÈCPUÖÆÔ칫˾ºÜ¶àÑз¢Á¦Á¿£¬¶øFermiµÄµ®Éú£¬Ö»ÄܰÑNVIDIAҲǣÁ¬½øÀ´¡£

    Ãæ¶Ôǰ·½ÎÞ¾¡µÄÕϰ­ºÍÄÑÌ⣬ÎÒÃÇËÆºõÓÐЩ±¯¹Û£¬Æäʵ´ó¿É²»±ØÕâÑù£¬GPU·¢Õ¹µ½½ñÌ죬ÒѾ­Í»ÆÆÁËÎÞÊý¼¼ÊõÆÁÕÏ£¬ËäÈ»ÄãºÜÄÑÏëÏóÒ»¸ö×î³õÒòͼÐδ¦Àí¶øµ®ÉúµÄ Ó²¼þ£¬½ñÌ쾹Ȼ³ÉΪ´ó¹æÄ£²¢ÐмÆËãÁìÓòµÄÃ÷ÐÇ£¬µ«ÊÂʵ¾ÍÊÇÕâÑù¡£NVIDIA»¨·Ñ¾Þ´ó¾«Á¦Éè¼Æ³öµÄFermi¼Ü¹¹²»µ«ÎªNVIDIA´ò¿ªÁËͨÓüÆËãÁìÓò¸ü ¹ãÀ«µÄ¿Õ¼ä£¬´øÀ´Á˿ɹ۵ÄÀûÈó£¬Ò²´ò¿ªÁËGPUÉè¼ÆÁìÓòµÄ“Å˶àÀ­Ä§ºÐ”£¬¸ü¶àÒÔǰ²»¿ÉÏëÏóµÄ¹¦ÄÜÒ²ÕýÔÚGPUоƬÖв»¶ÏʵÏÖ¡£

    ÔÚÎÄÕÂ×îºóÈÃÎÒÃÇÒ»Æð»ØÒäÎÄÕ¿ªÊ¼Ê±ÄǾ侭µäµÄÆÀÂÛ£º“FermiÊÇÒ»¿îͼÐδ¦ÀíͬÑù³öÉ«µÄ²¢Ðд¦ÀíÆ÷¡£”²»Óû³ÒÉ£¬FermiËù´ú±íµÄÕýÊÇδÀ´GPUµÄ·¢Õ¹·½Ïò¡£

 
Windows 7µÄ50¸öʹÓÃС¾÷ÇÏ
User Rating: / 0
 
Begin Parallel Programming With OpenMP
User Rating: / 0
This one is a great article for parallel processing in VS2005 and .NET framework.
 
Introduction to Parallel Computing: Part 1
User Rating: / 0
Introduction to Parallel Computing: Part 1
(Page 1 of 2)
Blaise Barney, Lawrence Livermore National Laboratory
The basics of parallel computing

This two-part article covers the basics of parallel computing. Part 1 begins with a brief overview, including concepts and terminology associated with parallel computing. The topics of parallel memory architectures and programming models are then explored. Part 2 presents a discussion on a number of issues related to designing parallel programs, concluding with several examples of how to parallelize simple serial programs. Provided courtesy Lawrence Livermore National Laboratory.
 
Intel® Software Development Emulator
User Rating: / 0

 
Introduction to Parallel Computing: Part 2
User Rating: / 0
Blaise Barney, Lawrence Livermore National Laboratory
Designing and implementing parallel programs

This two-part article covers the basics of parallel computing. Part 1 began with an overview, including concepts and terminology associated with parallel computing. The topics of parallel memory architectures and programming models were then explored. This installment presents a discussion on a number of issues related to designing parallel programs, concluding with several examples of how to parallelize simple serial programs. Provided courtesyLawrence Livermore National Laboratory.
 
GPU¼ÆËãÖ®¸´ÔÓ¶àÏàÁ÷¶¯·Ö×Ó¶¯Á¦Ñ§Ä£Äâ
User Rating: / 0
 
ÃλÃÖ®ÂÃ--ÉîÈë´ó¹æÄ£Ð¾Æ¬Éè¼ÆÈ«¹ý³Ì
User Rating: / 0

±àÕß°´

Ô­ÎÄÓÉСÐÜÔÚÏß×îÏÈ·¢±í£¬½éÉÜÁËnavida¹«Ë¾Éè¼ÆÍ¼Ïó´¦ÀíоƬ£¨GPU£©µÄÈ«¹ý³Ì£¬±¾Õ¾¶ÔÎÄÕÂÖÐһЩרҵÄÚÈݽøÐÐÁËÐ޸ĺͲ¹³ä£¬Èôó¼Ò¿ÉÒÔ¶Ô´ó¹æÄ£Ð¾Æ¬Éè¼ÆµÄ¹ý³Ì£¬ÒÔ¼°FPGAÔÚICÉè¼ÆÖеÄ×÷Óã¬ÓÐÒ»¸öÐÎÏóµÄÁ˽⡣

 
GPUͨÓüÆË㣨GPGPU£©¡ª¡ª½«Í¼Ðδ¦ÀíÆ÷ÓÃÓÚ¸ßÐÔÄܼÆËãÁìÓò
User Rating: / 0
 
<< Start < Prev 1 2 Next > End >>

 
 

© 2012 Nankai ISC & NKStars Cluster
ÄÏ¿ª¿ÆÑ§¼ÆËãÑо¿Ëù   ½òICP±¸05003117ºÅ    ½ò½Ì±¸0062ºÅ
The system is Powered by xiang
This page took 0.160133 seconds to load.