| µÚ11Ò³£ºGeForce 8µÄ¶àÖ´ÐÐÖîÌåϵ£¨2£© |
G8XµÄTPC½á¹¹Í¼

ÿ¸öMultiprecessorËù¹ÜÀíµÄ½á¹¹

G80µÄÏ̹߳ÜÀíµ÷¶ÈÆ÷±»ÃüÃûΪGigaThread£¬´Óǰ׺¡°Giga¡±ÎÒÃǾͿÉÒÔ¸ÐÊܵ½ËüÇ¿´óµÄµ÷¶ÈÄÜÁ¦ºÍ³äÅæµÄ×ÊÔ´¡£G80½«128¸öUnified Streaming Precessor(ͨÓÃÁ÷´¦ÀíÆ÷)·Ö³É8×飬ÿ×é³ÆÎªÒ»¸ö¡°TPC¡±£¬Ã¿¸öTPCÓÐ2¸öÏ̺߳ͷÖÖ§¹ÜÀíµ÷¶ÈÆ÷(Multiprocessor)£¬Ã¿¸öMultiprocessor¶¼¾ß±¸ÓÐ16KBµÄOn-Chip Shared memory£¬×ܹ²16¸öMultiprocessor±»Ò»¸ö¿í¶È³¬¹ý2000bitµÄCrossbarÍøÂçÁ¬½ÓÆðÀ´¡£G80µÄMultiprocessor°Ñÿ·Ýdata¶¼ÓÃÒ»¸öThread¹ÜÀí£¬Ã¿¸öpixel£¬Ã¿¸övertex¶¼Ëã³ÉÒ»¸öThread¡£Í¨¹ýOn-Chip Shared memory(ƬÉϹ²Ïí»º´æ)£¬G80ÄÜÒÔ32¸öpixel»òvertex(2TCP 32SP)Ϊһ¸öwarp(ThreadÇл»µÄ»ù±¾µ¥Î»£¬¿ÉÒÔÀí½âΪÏñËØÕóÁÐ)À´Çл»Thread¡£Ã¿¸öTCPÄÚ¶¼¿ÉÒÔ»ì½øÈÎÒⲻͬµÄVS¡¢PSÖ¸ÁΪÁ˱£Ö¤Á÷Ë®Ïß×ã¹»µÄƽÐÐÐÔ£¬G80ÔÚͬһ¸öʱ¼ä¶ÎÄÚÁ÷Ë®ÏßÒ»¹²¿ÉÒÔά³Ö×ܹ²8192¸öThread¡£G80µÄËùÓÐOn-Chip Shared memory¡¢Global memory¡¢Constant Memory¡¢Texture Memory¶¼ÊǶÀÁ¢µÄ£¬ËùÒÔG80µÄƬÄÚcacheÒ»¹²ÊÇ16KB¡Á16 + 8KB¡Á8 + 8KB¡Á8 = 384KB£¬¼ÓÉÏ128KB¶ÀÁ¢µÄL2 Cache£¬G80µÄƬÄÚ»º´æÒ»¹²ÊÇ512KB£¡Ïà±È֮ϣ¬R580µÄÁ÷Ë®ÏßÒ»¹²¿ÉÒÔά³Ö×î¶à512¸öThread£¬¶øÇÒ²¢²»ÊÇPer pixelµÄ£¬Ã¿¸öThread¶¼Òª¸ºÔð¹ÜÀíÒ»¸ö4¡Á4µÄÏñËØ¿é£»R580µÄƬÉÏ»º´æ²»»á³¬¹ý100KB¡£
G80µÄ·Ö²ãThreadÌåϵÖеÄOn-Cinp Memory

ËùÓеÄÕâÒ»Çж¼ÎªG80µÄÁ÷Ë®ÏßÌṩÁ˼¸ºõÎÞÇîÎÞ¾¡µÄ¶¯Á¦¡£²»¹Ü´æ´¢Æ÷ÑÓ³Ù´øÀ´¶àÉÙ¸östall£¬²»¹ÜShaderÈçºÎ¸´ÔÓ¶à±ä£¬G80µÄGigaThreadÏ̹߳ÜÀíµ÷¶ÈÆ÷¶¼¿ÉÒÔÑÚ¸ÇÑÓ³Ù£¬µ÷ÕûThread˳Ðò£¬ÓÅ»¯ShaderÁ÷³Ì£¬ÈÃÿһ¸öƽÐйÜÏß¶¼Ê±¿ÌÄܱ£³Ö³äÅæµÄ´¦Àí״̬¡£¾Ù¸öÀý×Ó£¬±ÈÈç:
code:
add r1, r2, r3
add r3, r1, r2
ÕâÖÖÏà¹ØÐÔµÄÖ¸ÁµÚ¶þÌõÖ¸ÁîÐèҪʹÓõÚÒ»ÌõÖ¸ÁîµÄ½á¹û, ÓÉÓÚÁ÷Ë®ÏߵĹØÏµ, addÖ¸Áî¿ÉÄÜÐèÒªn¸öÖÜÆÚ²Åretire, ËùÒÔµÚ¶þ¸öaddÐèÒªµÈ´ýÁ÷Ë®ÏßÍê³É²ÅÄܽøÐд¦Àí¡£Óöµ½ÕâÑùµÄÇé¿ö£¬G80¾ÍÖ±½ÓÇл»µ½ÆäËûµÄthread£¬×î´óÏ޶ȵı£Ö¤´¦Àíµ¥ÔªµÄÀûÓÃÂÊ¡£
G8XµÄ·ÖÖ§ÐÔÄܼõÉÙÁËÖ¸Áî¼äµÄÒÀ´æÐÔ

ÓÉÓÚMulti-thread»á³ÉΪӰÏìShaderЧÂʵÄÖØÒª¹Ø¼ü£¬¶ø±»ÊÓΪδÀ´GPUЧÂʵÄÖØ´óÓ°ÏìÒòËØ¡£GPUµÄÐÔÄÜÔ½À´Ô½²»ÔÙÊÇÖ»µ¥´¿µØÊܵ½Á÷Ë®ÏßÊýÁ¿¡¢ShaderÊýÁ¿»òÊÇʱÖÓÆµÂʵȵÄÒòËØÓ°Ï죬¶øÔ½À´Ô½ÄÑÒÔÅжÏÁË¡£±È·½Ëµ£¬¼´Ê¹(ÀíÂÛЧÄÜXXX GFLOPS)ÓиßÓеͣ¬µ«ÒòΪMulti-threadÖ®ÀàµÄShader¿ØÖƽṹµÄ²»Í¬»áÓ°ÏìЧÂÊ£¬Êµ¼ÊÉϵÄÐÔÄܸßÏ¿ÉÄÜÓÖÊÇÁíÍâÒ»»ØÊÂÁË¡£G8X¼Ü¹¹Ìåϵ½«Multi-threading¼Ü¹¹ÍÆÏòÁËеĸ߷塣