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µÄ·¢Õ¹·½Ïò¡£