ÈȵãÍÆ¼ö
ZOLÊ×Ò³ > ÏÔ¿¨ > ¼¼ÊõÓ¦Óà > HDTV >

¼«Ï̷ַ߳¢´¦ÀíÆ÷

À´×ÔATIµÄShader Model3¡ª¡ªRADEON X1000ϵÁм¼Êõ·ÖÎö

http://review.gzeasy.com/ ¡¾×ªÔØ¡¿ 2005Äê10ÔÂ08ÈÕ 13:50 ÆÀÂÛ

RADEON X1000ϵPixel Shader½á¹¹¡ª¡ª¼«Ï̷ַ߳¢´¦ÀíÆ÷

    ÔÚ½éÉÜRADEON X1000ϵPixel ShaderµÄÏ̼߳¼Êõ֮ǰ£¬ÎÒÃÇÓбØÒªÏÈ¿´¿´NVIDIAÒ»Äê¶àǰ¿ªÊ¼Êµ×÷µÄSM3 GPU¡ª¡ªGeForce 6800Êdz¤µÃÔõÑùµÄ¡£

    °´ÕÕNVIDIAÔÚIEEE£¨¹ú¼ÊµçÆøºÍµç×Ó¹¤³ÌʦЭ»á£©Hotchips 16»áÒéÉÏ·¢±íµÄÂÛÎÄ£¬ÔÚGeForce 6800ÖУ¬ÎªÁËÒþ²ØÔÚÏÔ´æÖвéÕÒÎÆÀíËùÏûºÄµÄÊý°Ù¸öʱÖÓÖÜÆÚ£¬ÔÚÿ¸öPixel Shader£¨ÏñËØ×ÅÉ«Æ÷£©Öж¼Î¬³Ö׏©ÊýÒÔ°Ù¼ÆÍ¬Ê±ÔË×÷µÄThreadingµÄ״̬£¨Ị̈߳©(To hide the latency of texture lookups that fetch from external memory, each fragment processor maintains state for hundreds of in-flight threads)£º


Íâ°ü×


    ÉÏͼ¾ÍÊÇÔÚ¸ÃÂÛÎÄÖеÄGeForce 6800Ìåϵ¼Ü¹¹Í¼£¬Í¼ÖеÄShader thread dispatch¾ÍÊÇGeForce 6800µÄ×ÅÉ«Æ÷Ï̷ַ߳¢Æ÷¡£

    ÆÁÄ»ÉϵĶ¥µã¡¢ÏñËØ¶¼ÊǷdz£ºÃµÄ²¢Ðл¯´¦Àí¶ÔÏó£¬Òò´ËÔÚGPU±¾Éí¾ÍÊÇÒ»¸ö·Ç³£µäÐ͵ĶàÏ̻߳¯´¦ÀíÆ÷£¬Ã¿¸ö¶¥µã¡¢Ã¿¸öÏñËØ¶¼¿ÉÒÔ¿´×÷ÊÇÒ»¸öỊ̈߳¨Thread£©¡£ÔÚGeForce 6800µÄVertex ShaderÖУ¬Ã¿¸öVS¶¼ÓÐÈý¸öThreadͬʱÔËÐУ¬¶øÔÚPixel ShaderÕâÒ»¼¶ÔòÊǸü¼ÓÅÓ´ó¡£

    ATIÔÚRADEON X1000ϵµÄ²úÆ·ÖÐÌá³öÁËUltra-Threading Dispatch ProcessorµÄ¸ÅÄÆäÑùʽҲÊÇÓеãÀàËÆÓÚGeForce 6800µÄ¸ÅÄËù²»Í¬µÄÊÇATI¸üÔ¸Òâ´ó·½µØ¹«¿ªÁËÆäÉè¼ÆµÄһЩ¼¼Êõ²ÎÊý¡£

À´×ÔATIµÄShader Model3¡ª¡ªRADEON X1000ϵÁм¼Êõ·ÖÎö

Ultra-Threading Dispatch Processor£¨¼«¶àÏ̷ַ߳¢´¦ÀíÆ÷£©

    °´ÕÕATIµÄ°×ƤÊé½éÉÜ£¬ÔÚR520£¨RADEON X1800£©µÄPixel Shader Engine£¨ÏñËØ×ÅÉ«Æ÷ÒýÇæ£©Öаüº¬ÁËÒ»¸öÖÐÊà·Ö·¢µ¥Ôª£¨central dispatch unit£¬CDU£©£¬Õâ¸öCDUÄܹ»ÎªÒ»¸öPixel Shader Processor Array£¨ÏñËØ×ÅÉ«´¦ÀíÆ÷¾ØÕ󣩷ַ¢¸ß´ï512¸öÏ̡߳£ÕâЩÏñËØ×ÅÉ«´¦ÀíÆ÷±»°´ÕÕ4¸öÒ»×éµÄ·½Ê½°óÔÚÒ»×飬ÿ¸öÕâÑùµÄ×é±»³Æ×öQuad Pixel Shader Cores£¨ËÄ·½ÏñËØ×ÅÉ«Æ÷Äںˣ©¡£¸÷¸öÄں˶¼ÊDZ˴ËÏà¶Ô×ÔÁ¢µÄ´¦Àíµ¥ÔªÄܹ»´¦ÀíÒ»¸ö2x2µÄÏñËØ¿é¡£ÕâÖÖQUADµÄÉè¼ÆÆäʵÊÇ×ÔR300¾ÍÒýÈëµÄ£¬ÔÚNVIDIAµÄGF6¡¢GF7ÉÏÒ²¶¼ÊÇÀàËÆµÄµ¥Ôª×é³ÉÅäÖ÷½Ê½¡£

    Ò»µ©CDU¾õÖªµ½Ä³¸öQUAD´¦ÓÚÏÐÖÃ״̬µÄʱºò£¬¾Í»áÂíÉϵݽ»Ò»¸öеÄÏ̹߳©ÆäÖ´ÐУ¬ÕâÑùµÄÇé¿ö¶àÊý·¢ÉúQUADÔڵȴýÊý¾Ý»òÕßÍê³ÉÁËÈÎÎñµÄʱºò¡£¸ù¾ÝATIµÄ½éÉÜ£¬ÕâÑùµÄÉè¼Æ¿ÉÒÔÈÃX1800µÄPixel ShaderÄÚºËά³Ö³¬¹ý90%µÄÀûÓÃÂÊ¡£

    ΪÁËά³Ö¸ßЧµÄÏß³ÌÇл»£¬ATI¸øX1800Éè¼ÆÁËÒ»¸ö´ó¹æÄ£µÄ¡¢ÄÜͬʱ¶Áд£¨¶à¶Ë¿Ú£©¡¢¸ß´ø¿íµÄͨÓüĴæÆ÷¶Ñ£¬ËùÓеÄÁ¬½Ó×ÜÏß¶¼ÊÇFP32λ¿í£¬È·±£Pixel ShaderÔÚÈκÎʱºò¶¼ÄܸßЧµØÍê³ÉFP32¾«¶È¼ÆËã¡£

    ATIµÄUltra-ThreadingÉè¼Æ»¹Äܹ»Ìá¸ßPixel Shader 3.0¶¯Ì¬·ÖÖ§µÄÐÔÄÜ¡£¶¯Ì¬·ÖÖ§±»ÈÏΪÊÇPixel Shader 3.0µÄÖØÒªÐÂÌØÐÔ£¬¿ÉÒÔÈÃPixel Shader¸ù¾Ý¼ÆËã³öÀ´µÄÊýÖµÀ´Åܲ»Í¬µÄ·ÖÖ§»òÕßÑ­»·¡£Èç¹ûÕýȷʹÓõϰ£¬¶¯Ì¬·ÖÖ§ÄÜÏÔÖøµØÌá¸ßÐÔÄÜ¡£

    ÀýÈçÔÚʹÓÃshadow mapµÄʱºò£¬Èç¹ûÒª¶ÔÒõÓ°×÷±ßÔµÈáºÍÈ¡Ñù£¬Ê¹Óö¯Ì¬·ÖÖ§¿ÉÒÔÔÚÓöµ½²»ÐèÒª×÷È¡ÑùµÄÏñËØÀýÈçµÄʱºò¾ÍÌø¹ýÈ¥£¬ÒÔ½ÚÊ¡´óÁ¿µÄpixel shader¼ÆËã×ÊÔ´¡£

À´×ÔATIµÄShader Model3¡ª¡ªRADEON X1000ϵÁм¼Êõ·ÖÎö

    ÔÚÉÏͼÖУ¬ÎÒÃÇÖ»ÐèÒª¶ÔÓÒÏ·½ÕÚÕÖÖеİ×É«ÇøÓò×÷ÈáºÍÒõÓ°È¡Ñù£¬¶øºÚÉ«µÄ²¿·Ö¾Í¿ÉÒÔÊ¡ÂÔµôÕâ¸öÈáºÍÒõÓ°È¡Ñù²½Ö裨ÕâÕÅͼƬ×óÉÏ¡¢ÓÒÉÏ¡¢×óÏÂÈý¸ö²¿·Ö¶¼ÊÇÓÃÀ´Ëã³öÓÒÏ·½µÄÕÚÕÖ£©¡£ºÍÕÒ³öÕÚÕֵ͝×÷Ïà±È£¬ÈáºÍÒõÓ°È¡ÑùµÄÐÔÄÜ¿ªÏúÒª¸ßµÃ¶à£¬ÕâÑùʹÓö¯Ì¬·ÖÖ§ÌÞ³ýÎÞÐè¼ÆËãÒõÓ°È¡ÑùµÄÏñËØ¾ÍºÜ»®ËãÁË¡£

    µ«ÊÇÐèҪעÒâµÄÊÇ£¬Ä¿Ç°GPUµÄPixel Shader¶¼ÊDzÉÓô«Í³µÄSIMD¼Ü¹¹£¬¶¯Ì¬·ÖÖ§µÄÔË×÷ÍùÍù»áÆÆ»µµô³ÌÐòµÄ²¢ÐÐÐÔ£¬Ê¹µÃ¶¯Ì¬·ÖÖ§´øÀ´µÄÒæ´¦±»Ñڸǵô¡£

    ÎÒÃÇÇ°ÃæÌáµ½£¬°üÀ¨R520¡¢NV40¡¢G70µÈÔÚÄÚµÄshader model 3.0 GPU¶¼ÊDzÉÓÃQUAD×飨4¸öpixel shaderÒ»×飩´îÅ䷽ʽ£¬Í¬Ò»¸öQUADÄÚͬһ¸öÖÜÆÚÖ»ÄÜÅÜͬһÀàÖ¸ÁÒÔ¼ò»¯¿ØÖƵç·¡£ÀýÈçQUADÄÚµÄ4¸öÏñËØ¶¼ÅÜaddÖ¸ÁÄǾͺÜÊæ·þÁË£¬QuadÖ»ÐèÒªÒ»¸öÖÜÆÚ¸ã¶¨ÕâËĸöÏñËØ¡£

   

       µ«ÊÇÈç¹ûÕâ4¸öÏñËØ¸÷×ÔÒªÅܲ»ÊÇͬһÀàÖ¸Á¶ø·Ö±ðÊÇÏñËØAÅÜaddÖ¸Áî¡¢ÏñËØBÅÜmulÖ¸Áî¡¢ÏñËØCÅÜmaddÖ¸Áî¡¢ÏñËØDÅÜsubÖ¸ÁîµÄ»°£¬ÄÇôÕâ¸öQUAD¾ÍÐèÒª4¸öÖÜÆÚ²ÅÄÜÍê³ÉÕâ4¸öÏñËØµÄ´¦Àí£¬±ä³ÉÁËÀàËÆSISDµÄÑù×ÓÁË£¬ÐÔÄÜϽµµ½1/4£¬ÕâÊǵ¥ÖÜÆÚ¶àÊý¾Ý´¦ÀíÆ÷ÅÜ·ÖÖ§µÄÌìÉúÎÊÌâ¡£ÈçÏ£º

ÖÜÆÚ SIMD×Óµ¥Ôª1 SIMD×Óµ¥Ôª2 SIMD×Óµ¥Ôª3 SIMD×Óµ¥Ôª4
1 add nop
(¿Õ²Ù×÷,×ÊÔ´À˷ѵôÁË)
nop nop
2 nop mul nop nop
3 nop nop madd nop
4 nop nop nop sub

    ÎÒÃÇÔÚ½éÉÜNVIDIA NV40/G70µÄʱºò¾ÍÌáµ½£¬Vertex ShaderÊôÓÚMIMDÌåϵ£¨¶àÖ¸Áî¶àÊý¾ÝÁ÷£¬ËäÈ»ALUÒ²ÊÇSIMD£¬µ«ÊǸ÷ALUÄܶÀÁ¢Åܲ»Í¬µÄVSÖ¸Áî¡£NV40ÓÐ6¸öVS£¬Ò»¹²6¸ö4D ALUºÍ6¸ö1D ALU£¬Äܹ»·Ö±ðÅÜ12Ìõ²»Í¬µÄVSÖ¸Á£¬·ÖÖ§Ö¸ÁîµÄ¿ªÏú¼¸ºõ¿ÉÒÔ¿´³ÉÊÇÃâ·ÑµÄ£¬Ö´ÐÐЧÂʷdz£¸ß£¬µ«ÊÇÆäPixel ShaderµÄ¶¯Ì¬·ÖÖ§Ö´Ðл¹ÊÇÊôÓڱȽϳõʼµÄ½×¶Î¡£

     ÔÚÖ´Ðж¯Ì¬·ÖÖ§ÉÏÇé¿öÒ²ÊÇÀàËÆ£¬Èç¹ûQUADÄÚÓÐÁ½¸öPixel£¨ÏñËØ£©ÅܵķÖÖ§ÊÇÒ»Ñù£¬Õâ¸öQUAD¾Í¿ÉÒÔ¿´×÷³ÉÒ»¸öSI2D£¨µ¥Ö¸ÁîË«Êý¾ÝÁ÷£©µÄSIMDµ¥Ôª¡£³öÏÖSI2DµÄÇé¿ö£¬ÀíÂÛÉϾÍÒâζ×ÅÕâ¸öQUADµÄЧÄܽµµÍ50%¡£

     Ò»°ãÀ´Ëµ£¬ÏñÒõÓ°±ßÔµÈáºÍµÄ¶¯Ì¬·ÖÖ§£¬Ò²¾ÍÊÇÁ½Ìõ·ÖÖ§¶øÒÑ£¨ÔÚÒõÓ°±ßÔµÄÚ²»ÐèҪȡÑùºÍÔÚÒõÓ°±ßÔµÍâÐèҪȡÑù£©¡£

À´×ÔATIµÄShader Model3¡ª¡ªRADEON X1000ϵÁм¼Êõ·ÖÎö

    ÉÏͼËù˵µÄÊÇÖ¸ATI X1000ÔÚÅÜ·ÖÖ§³ÌÐòµÄʱºò£¬Äܹ»°ÑÆÁÄ»·Ö³ÉºÜ¶à¸ö4X4µÄС¿éÀ´·Ö±ð´¦Àí£¬ÔÚÕâÑùСµÄÒ»¸öÏñËØ¿éÀïÅöµ½Á½Ìõ²»Í¬µÄ·ÖÖ§µÄ»ú»á¾Í·Ç³£Ð¡£¬½µµÍÁ˳öÏÖSI2DµÄ»ú»á¡£

¶øNVIDIAÔÚÆä¿ª·¢Ö¸ÄÏÖбíʾ£º

¡°in order for it to work optimally, branches should be fairly coherent (for example, over regions of roughly 30 x 30 pixels).¡±

    Õâ¶Î»°µÄÒâ˼¾ÍÊÇ£¬ÓÉÓÚNV40¡¢G70µÄ·ÖÖ§Ö¸ÁÏú½Ï´ó£¬Èç¹ûÏëÔÚNV40¡¢G70ÉϸßЧµØÖ´Ðж¯Ì¬·ÖÖ§£¬×îºÃÊÇÆÁÄ»ÉϱȽϴóµÄÒ»¿éÏñËØÀ´Ö´ÐУ¬ÀýÈç30X30¡£¶øÇÒÔÚÕâ¸ö30X30µÄÏñËØ¿éÄÚÒª¾¡Á¿È·±£¶¼ÊÇÅÜͬһ¸ö·ÖÖ§£¬Èç¹ûÏñËØ¿éÄÚÓÐÆäËü·ÖÖ§£¬ÄÇôÕâÒ»Õû¸öÏñËØ¿éµÄ´¦ÀíËٶȶ¼»áϽµ¡£

    ATI»¹ÌرðÌáµ½ÁË×Ô¼ºµÄ·ÖÖ§µ¥ÔªÃ»ÓÐÕ¼ÓÃALUʱ¼ä£¬ÔÚ·ÖÖ§¿ªÏúÉÏÒª±È´«Í³¼Ü¹¹µÍ²»ÉÙ£º

À´×ÔATIµÄShader Model3¡ª¡ªRADEON X1000ϵÁм¼Êõ·ÖÎö

    ÉÏͼÆäʵ·Ö±ðÊÇNVIDIA GeForce 6800ºÍATI X1800µÄ¶¯Ì¬·ÖÖ§Ö¸ÁîÖ®Ò»µÄ¿ªÏú±È½Ï£¬¶ÔÓ¦NVIDIAµÄ±à³ÌÊֲᣬ¿ÉÒÔ¿´³öATIËù¾ÙµÄÀý×Ó¾ÍÊÇ×ʱ¼äµÄ¡°If /else / endif¡±Ö¸Áî¡£´ó¼Ò¿ÉÒÔ¿´µ½£¬Èç¹ûÅÜͬÑùµÄÁ½Ìõ·ÖÖ§£¬ÔÚÖ´ÐÐif/end/endif·ÖÖ§Ö¸ÁîµÄʱºò£¬¡°´«Í³¼Ü¹¹¡±ÐèÒª»¨20¸öÖÜÆÚ²ÅÄÜÍêÈ«ÅÜÍ꣬¶øATIµÄX1000ϵֻÐèÒª14¸öÖÜÆÚ¡£

ÉÏÒ»Ò³ 1 ...4 5 6 7 8 ...14 ÏÂÒ»Ò³
ƵµÀÈÈ´Ê£º»ªË¶Ö÷°å  Intel  AMD  
ÊÓ¾õ½¹µã
ÏÔ¿¨¼¼ÊõÓ¦ÓÃÈȵã
ÅÅÐÐ ÎÄÕ±êÌâ
TOP10ÖÜÈÈÃÅÏÔ¿¨ÅÅÐаñ
  • ÈÈÃÅ
  • ÐÂÆ·
²é¿´ÍêÕû°ñµ¥>>