Âà¶K
====================
¤Ñ¤~の®v
µû»ù¤UG80 VS R600
·íµM¬O°ò¤_²{¦b¤w¸g¤½¶}ªº¸ê®Æ¤§¤Wªºµû»ù
¥»¨Ó§Ú¬O·Q¥u¼g¦Û¤v¬Ýªkªº¡A¦ý爲¤F·ÓÅU¤@¨Çªì¯ÅGZer¡A±a¤W¤F¤ñ¸ûªøªº¸ÑÄÀ¡A½Ð¦U¦ì¦Ñ¤j¦Û¦æ¸õ¹L´N¬O
G80¬[ºc¦b§ÚÓ¤H¬Ý¨Ó¡A®Ú¥»´N¤£¾A¦X¹CÀ¸
Ó¤H»{爲¡A¹ï¤_¹Ï§Î´è¬V¡A¦pªG¥u¦Ò¼{®Ä²v¡AG80·íµM¬O³Ì¦nªºÅé¨t¡C¦ý®Ä²v¤£µ¥¤_®Ä¯à¡A®Ä¯à¬Oºî¦XӤ豦]¯À¡A¤×¨ä¬O·í«e¥b¾ÉÅé¤u¨î³yÃÀ¤ô¥¤§«áªº¤@Óºî¦X©Êªºµ²ªG¡Aºî¦X±q®Ä¯à¤W¨Ó¬Ý¡AG80¨Ã¤£¬O³ÌÀuªºÅé¨t¡C¤]´N¬O»¡¡A¦pªGNV»Ýn¤@´Ú¾Ö¦³¸òG80Ãþ¦üªº¹Ï§Î´è¬V®Ä¯àªºGPU¡A§¹¥þ¥i¥H¥Î§ó¤Öªº¥N»ù(´¹ÅéºÞ)¿ì¨ì¡C§Ú¥u¯à²q´ú¡ANV³o¦¸ªº³¥¤ß¤£¥u¦b¹Ï§Î»â°ì¡C
R600¬Û¤ñ¤§¤U´N°È¹ê±o¦h¡A¥¦¬O¤@´Ú¹ê¹ê¦b¦b爲¹CÀ¸¦Ó¥ÍªºGPU¡AÁöµMAMDªÖ©w¤£·|¤î¨B¤_¦¹¡A½Ñ¦pCTM¤§Ãþªº¤@¨ÇªF¦è«Ü§Ö´N·|³Q±À¨ìÀ³¥Î¼h±¡A¦ý±q¥Ø«e¤w¸g³zÅSªºR600¬[ºc¨Ó¬Ý¡AR600ªººn³]p¥Ø¼Ð´N¬O爲¤F3D´è¬V¡CÅý¹CÀ¸¶]±o§óµº§ó§Ö¬O³oÓ¬[ºc³Ì¥Dnªº¥ô°È¡C
¨º麽¡AÅý§Ų́ӵy·L¸Ô²Óªº¬Ý¤@¤UG80»PR600³]p°¼«ÂI¤§¶¡ªº°Ï§O
G80»P¥H«eªºGPU¡A³Ì¤jªº°Ï§O´N¬O¼Ð¶q¤Æ´è¹Bºâ³æ¤¸©M¦h°õ¦æ½Ñ¬[ºc¡A³o¨âÂI¬OG80³Ì¤Þ¥H爲¶Æªº²·s¡A¦ý¤]¬Oª§½×³Ì¤jªº§ï¶i¡C
©Ò¿×¼Ð¶q¤Æ(scalar)¹Bºâ³æ¤¸¡A¬O¬Û¹ï¤_¤§«eGPUªº¥Ú¶q?vector)¹Bºâ³æ¤¸¦Ó¨¥ªº¡C
§Ú̪¾¹D¡A¦b¹Ï§Î³B²z¤¤¡A³Ì±`¨£ªº¹³¯À³£¬O¥ÑRGB¤TºØ顔¦âºc¦¨ªº¡A¥[¤W¥¦Ì¦@¦³ªº«H®§»¡©ú(Alpha)¡A´N¤@¦@¬O4Ó³q¹D¡CVertex¼Æ¾Ú¤]¤@¯ë¬O¥Ñx,y,z,w¥|Ó§¤¼Ðºc¦¨¡A³o¼Ë¤@¦@¤]¬O4Ó³q¹D¡C¹ï3D¹Ï§Î¶i¦æ´è¬V¡A¨ä¹ê´N¬O§ïÅÜRGBA¥|Ó³q¹D©ÎªÌx,y,z,w¥|Ó§¤¼Ðªº¼ÆÈ¡C©Ò¥H¡A爲¤F¤è«K¡AGPUªº°ò¥»´è¬V³æ¤¸±q¤@¶}©l´N³Q³]p爲¯à¦P®É§¹¦¨¤@Ó¶H¯À´è¬V©ÎªÌ´X¦óÂà´«¡C¼Æ¾Úªº°ò¥»³æ¤¸¬Oscalar(¼Ð¶q)¡A´N¬O«ü¤@Ó³æ¿WªºÈ¡AGPUªºALUùضi¦æªº¤@¦¸³oºØÅܶq¾Þ§@¡A³QºÙ°µ1D scalar¾Þ§@¡C¥Ñ¤_GPUªº¤@ÓALU¦b¤@Ó®ÉÁé©P´Á°õ¦æ¤F4¦¸³o¼Ëªº¨Ã¦æªº¹Bºâ¡A©Ò¥HALUªº¾Þ§@³QºÙ°µ4D vector¾Þ§@¡A¤]´N¬O¥Ú¶q¾Þ§@¡C¤@Óvector(¥Ú¶q)´N¬OnÓscalar(¼Ð¶q)¡A¤@¯ë¨Ó»¡n=4¡C©Ò¥H¡AGPUªºALU«ü¥Oµo®gºÝ¥u¦³¤@Ó¡A¦ý«o¥i¥H¦P®Épºâ4Ó³q¹Dªº¼Æ¾Ú(¦bGPU¤W¤@¯ë¬O3D+1D)¡A³o´N¬OSIMD(³æ«ü¥O¦h¼Æ¾Ú¬y)ªº·N«ä¤F¡C
¹ï¤_¹Ï§Î´è¬V¨Ó»¡¡A³oºØSIMDªº³]p¯u¬O¦A¦n¤£¹L¤F¡A¦]爲VS©MPS³¡¤À¶i¦æªº¤j³¡¤À¹Bºâ³£¬O4D vector(3D+1D)¡A¥¦¥un¥Î¤@Ó«ü¥OºÝ¤f¡A´N¯à³æ©P´Á§¹¦¨4¿ªº¹Bºâ¶q¡A©Ò¥H¦Û¥´GPU½Ï¥Í¶}©l¡A°ò¥»ªº¹Bºâ³æ¤¸´N¤@ª½¬O³oºØvector SIMD³]p¡C
¦ýG80«o¥´¯}¤F³oºØ¶Ç²Î¡A±N³Ì°ò¥»¹Bºâ³æ¤¸²Î²Î§ï¦¨¤Fscalar¡A¤]´N¬O¼Ð¶qALU¡C³o¼Ë¹ï¤_°ò¥»ªºvector¾Þ§@¡A´N»Ýn¦hÓ©P´Á¡A©ÎªÌ±N¥¦Ì©î¤À«á¥Î§ó¦hªº¹Bºâ³æ¤¸¤~¯à§¹¦¨¡C¦³¤°麽¼ËªºªF¦èȱoNV³o¼Ë«_ÀI©O¡H
ì¨Ó¡ANV»{爲¡A²{¦bªºGPU«ü¥O¡Aªø«×¨Ã¤£¤@P¡A¹ï¤_add,mul³o¼Ëªº«ü¥O¡AGPU¯à³æ©P´Á§¹¦¨¡A¦ý¹ï¤_½Ñ¦psqr³o¼Ëªº½ÆÂø«ü¥O¤]»Ýn¦hÓ©P´Á¤~¯à§¹¦¨¡A¹ï¤_³o¨Ç»Ýn¦hÓ°õ¦æ©P´Áªº«ü¥O¡A¹L¡§¤j¡¨ªº4D ALUÅãµM¡§¤£¦Xºâ¡¨¡C¦ÓGPUªº½s;¹§Y¨Ï¸g¹L¤j¶qÀu¤Æ¡A½sĶ¥X¨Óªºshader¤]«ü¥O¤]·|ªøµu¤£¤@¡A¤ªá¤Kªù¡A¾Þ§@¼Æ¬J¦³4D¡A¤]¦³1D¡B2D¡B3D¡C¹ï¤_³q±`°õ¦æ¯à¤O爲4DªºALU¨Ó»¡¡AÅý¥¦¶]1D©ÎªÌ2D«ü¥O¡A¦Ó¥Ñ¤_SIMD¤Ñ¥Íªº³æµo®gºÝ¤f¨î¡A¤£¥i¯à¦P®É¶]¨âөΦhÓ¡A¦Ó¶]¤@Ó³æ©P´Á¤º¥¦ªº¹Bºâ¯à¤O´N¶ñ¤£¹¡¡C³o¼Ë´N«Ü¡§¹º¤£¨Ó¡¨¤F¡C³o´N¬OSIMDªº«ü¥O¨Ã¦æ©Ê°ÝÃD¡C¦bGPU¤¤¡A¦pªG¼Ð¶q©M¥Ú¶q«ü¥O¯à°÷¨Ã¦æ¡A¤ñ¦p3D+1D¡A¨º麽³o³QºÙ°µco-issue¡C¦ý¥¿¦p¤W±©Ò»¡¡A±¹ï½ÆÂøªºshaderÀô¹Ò¡Aco-issue¤£¥i¯à¬O¨C®É¨C¨è³£¦³®Äªº¡A¦]¦¹³q±`ªº4D ALU¦b³oùØ´N¦s¦b¤@Ó®ö¶O°ÝÃD¡C¦Ó¹ï¤_1D ALU¡A´N¤£¦s¦b¤Wz°ÝÃD¤F¡C¦pªG§â1Ó4D ALU¤À¦¨4Ó¤pªº1D ALU©ñ¦b¤@°_¶i¦æ¹Ï§Î´è¬V¡A¦]爲¦U¦Û³£¦³¦Û¤vªº«ü¥Oµo®gºÝ¤f©M±±¨î¸ê·½¡A©Ò¥H¯à«OÃÒ²z½×¤W100%ªº¹B¦æ®Ä²v¡C ¦bG80¤W¡ANV²v¥ý¤Þ¤J¤F³oºØ¯Â¼Ð¶qªº´è¬V³æ¤¸¡A©Ò¥HG80ªº©³¼h°õ¦æ³æ¤¸³QºÙ°µMIMD(¦h«ü¥O¦h¼Æ¾Ú¬y)¬[ºc¡C
G80ªº¨CÓALUªºpºâ¯à¤O³£¤£±j¡A¦ý¥¦Ì¤£¦s¦b¡§®ö¶O¡¨°ÝÃD¡A®Ä²v«Ü°ª¡CµM«á³q¹L¼W¥[¹Bºâ³æ¤¸ªº¼Æ¶q(128SP)¡A´£°ªÀW²v(shader 1.35GHz)¨Ó¼W¥[¹Bºâ¯à¤O¡C
³o¼Ëªº°µªk¡A¬Ý¤W¥h¤@¤Á³£§¹¬ü¡A¬J¦³°ª®Ä²v¡A¤S¦³±j¹Bºâ¯à¤O¡A¦ý¯uªº¬O³o¼Ë¶Ü¡H
¦b¯à°÷co-issueªºµ{§Ç¤¤¡A4Ó1D Scalar ALU»P4D Vector ALUªº¹Bºâ¯à¤O¬O¤@¼Ëªº¡A¦ý1D Scalar ALU¦]爲¦³4Óµo®gºÝ¤f¡A4¥÷±±¨î³æ¤¸¡A¨ä¥e¥Îªº´¹ÅéºÞ¼Æ¶q±N»·»·¶W¹L4D Vector ALU¡C«ö·ÓEJIªº»¡ªk¡Aºâ¤WALUªº¨ä¥L»²§U¸ê·½¡A4Ó1D ALUªºÅé¿n±N¬O1Ó4D ALUªº2-3¿¡A¹ï¤_GPU¦Ó¨¥¡A³o¬O¤@Ó¨aÃø©Êªº¼Æ¦r¡C©ÎªÌ¦³¤H·|»¡¡A¨ºµL©Ò¿×¡A¦b¹Bºâ¯à¤O¬Û¦Pªº±¡ªp¤U¡A1D ALU®Ä²v°ª°Ú¡C¦ý§A¬O§_¦³·Q¹L¡A»P¨ä°µ¤@°ïÃe¤jÁs¸~ªº1D¼Ð¶qALU¡A¤£¦p·F¯Ü¥Î¦P¼Ëªº´¹ÅéºÞ¡A°µ¥¦¤@¥b¼Æ¶q¹Bºâ¯à¤O¶W¹L¥¦¤@¿ªº4D ALU¤£¬O§ó¦Xºâ¡I ¦Ó¹ê»Ú¤W¡AR600´N¬O³o麽°µªº...
¦A¨Ó¬ÝG80ªº¦h°õ¦æ½ÑÅé¨t(Multi-Threading)
¹ê»Ú¤W³oӨ䣯àºâG80ªºº³Ð(§Úı±o¡A²Ä¤@¶ô¯à°÷¯u¥¿ºÙ±o¤WMulti-ThreadingªºGPU¡AÀ³¸Ó¬ONvidia NV40¡AÁöµMÁ٫ܲ®¡A¦ý¥¦¦³§¹µ½ªº±±¨îÅé¨t©Mthreading¸ê·½¡A¾ãÓ¬y¤ô½uªº¤u§@¤]³q¹L½uµ{¤Àµo¾¹¨ÓºÞ²z¡CR4XX¥u¤ä«ùSM2.0¡A¤]¥u°w¹ï½u©Êshader¦Ó³]p¡AÁaµM¥¦¤]³q¹Lthreading¨Ó±»»\©µ¿ð¡A¦ý¨Ã¤£¯àºâ)¡A¦ýG80«o¬O³Ì§¹µ½ªºMulti-Threading GPU¡A¥¦¦³·¥爲Ãe¤jªºregister¸ê·½¡A¯àºû«ù4096Ó¥¦æ½uµ{(¬Ý¬Ý§AªºCPU¡A4®Ö¤ßQX6700¤]¤£¹L¬O4½uµ{¦Ó¤w)¡A¬Æ¦Ü¤Þ¤J¤F¾ã¼Æ«ü¥O¶°¨Ó¤è«KºÞ²z¡C·í¼Æ¾Ú°e¦ÜG80¹Ï§Î®Ö¤ßªº¬y¤ô½u¤§«á¡A·|º¥ý³Q°e¤J¤@Ó¥s°µThread Control Unitªº¦a¤è¡A¬Û·í¤_G80¹Ï§Î®Ö¤ß¾ãÓ¬y¤ô½uªº¥òµô©M±±¨î¾÷ºc¡C³oÓÃþ¦ü¤_³B²z¾¹ªº½uµ{ºÞ²z³æ¤¸·|±N©Ò¦³ªºµÛ¦â³æ¤¸ªº¼Æ¾Ú¥¦æªº©î¦¨¶W¹L4000Ó¥¦æªºThreading(½uµ{)¡A¨Ã°ÊºAºÊ´ú¾ãÓshader array¬y¤ô½uªº¤u§@ª¬ªp¡C¤@¥¹¥¦µo²{¨ä¤U¬YÓµÛ¦â³æ¤¸¥Ñ¤_µ¥«Ý¼Æ¾Ú©Î¤u§@§¹¦¨¦Ó³B¤_¶~¸mª¬ºA¡A´N·|°¨¤W»¼¥æ¤@Ó·sªº½uµ{¨Ñ¨ä°õ¦æ¡C³o¼ËÅý¾ãÓ¬y¤ô½u«O«ù·¥°ªªº¹B¦æ®Ä²v¡C
¦Ó¥B¡A´I¸ÎªºThreading¹ï¤_±»»\¬y¤ô½u©µ¿ð©M°ÊºA¤À¤ä³£¦³·¥爲«nªº·N¸q¡A¸Ô²Ó¤¶²Ð½Ð¬ÝEji¥Sªº³o½g¤å³¹¡A¦r¤Ó¦h¤£¥´¤F¡C
http://we.pcinlife.com/thread-506629-1-1.html
¬Û¤ñ¤§¤U¡AR600¨ÌµMºû«ù512-1024¤§¶¡ªº¤@ÓThread¼Æ¥Ø¡C
¤@ª½¨ì³oùØ¡A§Ú̵o²{Multi-Threading¤S¬O¤@Ó´X¥G§¹¬üªºªF¦è¡A¥¦¹ïGPUªº¥ô¦ó¤@Ó³¡¥óªº®Ä²v´£¤É³£¦³À°§U¡A¦Ó¥Bµ¹¤©¤FGPU§JªA¦sÀx¾¹©µ¿ðªº¤O¶q¡A¨º麽¡A§Ú¨ì©³n»¡¤°麽©O¡H
¹ê»Ú¤W¡A¸ò¼Ð¶q¤Æ´è¬V³æ¤¸¤@¼Ë¡AMulti-Threading½T¹ê¬O´£°ªGPU¹B¦æ®Ä²vªº¦nªF¦è¡A¦Ó§Ú»{爲¥¦ªº¤£¨¬¤§³B¤]¸ò¼Ð¶q´è¬V³æ¤¸¤@¼Ë¡G¹ê²{°_¨Ó¥N»ù¤Ó±a¡A±N¥Î¨Ó¹ê²{¥¦ªº¸ê·½ªá¨ì§Oªº¦a¤è¡A¹ï¤_¹CÀ¸¨Ó»¡®ÄªG¥i¯à§ó©úÅã¡C
·Q·Q¬Ý§a¡A§Ú̯à±qG80¦p¦¹¦hªºThread¤¤±o¨ì¤°麽¡H¬y¤ô½u®Ä²v¡H§O§è½Í¤F¡A®Ä²v°ª«ç麽¤F¡AR520¨ã³Æ512threading¡A§C©µ¿ðªºµw¥ó¤Æ½uµ{¤À°t¾¹¡A¤ä«ùbatch¬°³æ¦ìªºthreading¥æ´«¡A®Ä²vÁÙ¤£°ª¡H¦PÀW¤UÁÙ¤£·Ó¼Ë³Q200¦hthreading¡A¤À°tºÞ²zÅé¨t¤]¤£§¹µ½¡A©µ¿ð¤j±o¦h¡A¨Cthreading¯à§ì¨ìªº¸ê·½¤]¤ÖªºG70¥´±oº¡¦a§ä¤ú¡CG70¤£¹L¬O¦h¸Ë¤F8ÓPixel Shader¦Ó¤w¡C¤£¹L«á¨ÓR580 ATI¤]²M¿ô¤F¡AThreading¸ê·½¨S¦³¥ô¦óÅܤơA¨ÌµM¬O512Ó¡A¦ýPS¼W¥[3¿¡A±q16¨ì48¡A²{¦b¦PÀW¤U½ü¨ìG71º¡¦a§ä¤ú¤F¡A¨þ¨þ¡C
OK¡A§Úª¾¹D¨ì³oùبº¨Ç¤ÑźÄÒ̦^¸é¤ß¤£¦º¡A®³R520ªº¤À¤ä©Ê¯à¨Ó»¡¨Æ¡A¨º麽´N¹ý©³Á¿²M·¡¡C¬y¤ô½u¥¦æ«×ªº°ÝÃD¤w¸g¬O¦Ñ¥Íªø½Í¡A°ÊºA¤À¤ä(Dynamic Branch)¥i¥H¥Î¨Ó¿Ä¦XShader¡A¦ý¤£¥Nªí¨ä¥L´£°ª¥¦æ«×ªº³~®|¤w¸g§¹³J¡C¤@Ó¥Rº¡¤À¤ä©M¸õÂ઺Shader¹ï¹CÀ¸ªºÀ°§U²z½×·N¸q¤j¤_¹ê»Ú·N¸q¡C¦b3DMark06³oºØ¤w¸g¦³¥Î¨ì¬Û·í½ÆÂøªºShaderªºµ{§Ç¤¤¡ADynamic Branch¤]¥u¬O·í§@½Õ¨ý¾¯¦Ó¤£¬O¥Dµæ¨Ó¥Îªº¡C¦Ü¤_Branch¦bshadow filterªºedge soft¤¤ªºÀ³¥Î...®¦¡A§Ú·Q»¡ªº¬O¡Aµ´¤j³¡¤À±¡ªp¤Uedge©Ò¥eªº³¡¤À³£¤£¦h¡A¦Ó¥BÀHµÛ¤À¿ë²vªº´£¤É¡A³oÓ³¡¤Àªº¤ñ¨Ò·|¶V¨Ó¶V¤p¡C¤Þ¥ÎRacingPHT¥Sªº¸Ü¨Ó»¡¡A¤]³\§ÚÌÁÙ±o·PÁÂBranch-----¥¦Åý¤@Ó¥u¯à¶]15FPSªºDEMO´£³t¨ì¤F30FPS-----ÁöµM¥¦¤§«e¯à¶]300FPS¡C°ÝÃD¬O¡GFilter¤@©wn³o麽°µ¶Ü¡H§Ú·QFEARªºSoftShadow¤w¸gµ¹¤F¤@Óªí²v¡C
¸É¤WG80 VS R600(¶Ç¨¥)ªº¼Æ¾Ú¹ï¤ñ¡]²Î²Î®Ú¾Ú©x¤è§÷®Æ¦Óq¡^
shader§]¦R¯à¤O: G80 1350MHz*128*3flops(mul+mad¨Ã¦æ)=519GFlops VS R600 1000MHz*64*12Flop=(mad+add¨Ã¦æ)=768GFlops
Åã¦s±a¼e: G80 86.4GB/S(384bit GDDR4) VS R600 over140 GB/s (GDDR4 over 1.1GHz)
ºî¤W©Òz¡AG80¤£¥i¿×¤£¥ý¶i¡A®Ä²v¤£¥i¿×¤£°ª¡A¦ý¥L±¹ï"¼É¤O"ªºR600¡]»¡±o¦nÅ¥ÂI´N¬O¡§±N¨C¤@Ó´¹ÅéºÞ³£¥Î¤_¹CÀ¸¡¨ªºR600¡^¡A³Óºâ¹ê¦b¤£°ª¡C
¤£¹L¡A¤j®a´N¦¹»{爲NV¬O¥Õè³]p¤F³o麽¤@Ó¹L¤_²z·Q¤Æªº¬[ºc¡A´N¿ù¤F¡CNV±q¨Ó³£¬O¹ê¥Î¦Ü¤W¡C³o¨Ç¦b¹CÀ¸ùØ«ÜÃø³Q¥Î¨ìªº¡§°ª¯ÅªF¦è¡¨¡A±N·|¥Î¨ìþ©O¡A¼K¼K¡A§Ú²{¦b¥´¦r¤]¥´±o¤âµh¤F¡A®e³\§Ú¥´¤@¤U¼s§i¡A¹L´X¤Ñ·|¬Yºô¯¸¦³¤@½g¤å³¹¡AÁöµM¨Ã¤£§¹¥þ¬O§Ú¼gªº¡A¦ý§Ú°Ñ»P¤F¨ä¤¤¡A¨ì®ÉÔ§Ú¦A¨Ó³»¶K