锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
]]>
]]>
]]>
]]>
Continuing our series of occasional interviews with game developers about current and upcoming hardware and game graphics engines, we chat with Marko Kylmamaa, senior graphics programmer for Digital Illusion' Canadian studio.
銆銆鏈湡鐨勯噰璁垮璞℃槸鏉ヨ嚜DICE鐨勯珮綰у浘鍍忕▼搴忓憳Marko Kylmamaa鍏堢敓銆?/p>
聽聽聽 FiringSquad: First, Intel and AMD are pushing dual core processors and within the next year four core processors are due to be released. How will DICE support this kind of tech in the Battlefield 2/2142 engine and will there be any need for special programming to fully support multi core CPUs in PCs?
銆銆鎻愰棶錛氱洰鍓岻ntel涓嶢MD鍔涙帹鍙屾牳CPU錛岀洰鍓嶆槑騫撮兘鍑嗗鎺ㄥ嚭錛旀牳蹇冪殑CPU銆侱ICE鍑嗗濡備綍鍦˙F2寮曟搸涓姞鍏ュ榪欑鎶鏈殑鏀寔錛屽鏋滆繖鏍峰仛闇瑕佷粈涔堢壒孌婄殑緙栫▼鎶鏈箞錛?/p>
聽聽聽 Marko Kylmamaa: While a program geared towards a single-core machine may run fine, with some exceptions, and perhaps even somewhat faster on a multi-core machine, in order to realize the real performance benefits a careful attention has to be paid into structuring the code for the correct granularity in mind, to make it suitable for multi-core execution. With the introduction of the next generation consoles and the PC hardware, the whole industry is in a learning phase for understanding the differences between the traditional multi-threading approaches, and multi-threading for multiple cores. DICE is working closely with hardware vendors in making sure that all of the future titles make the maximum use of the available multi-core architecture.
銆銆鍥炵瓟錛氭湰鏉ュ崟鏍稿績鐨勬満鍣ㄥ氨鍙互榪愯寰楀緢濂斤紝鏈変簺鏃跺欑敋鑷寵蹇簬澶氭牳鏈哄櫒銆傚叾瀹為棶棰樹富瑕佹槸鍦ㄥ鏍稿績鐨勫鐞嗘瘮鍗曟牳蹇冨鏉傦紙綾諱技浜庣棝鑻︾殑澶氱嚎紼嬶級錛岄渶瑕佹紜殑澶勭悊浠g爜鐨勭粨鏋勪笌澶勭悊鍚屾銆傞殢鐫涓嬩竴浠g‖浠剁殑鏅強錛屾暣涓鍩熷紑濮嬪涔犲綰跨▼緙栫▼鎶鏈侱ICE涔熷湪涓嶆柇鍜岀‖浠跺巶鍟嗘繁鍏ュ悎浣滃彂鎸ュ鏍告灦鏋勭殑鎬ц兘銆?/p>
聽聽聽 FiringSquad: The 64-bit CPU has taken longer to really appear in mainstream PCs than some people expected. Do you think 64-bit CPUs will become more popular and how does DICE support it in their Battlefield 2/2142 engine ?
銆銆鎻愰棶錛?4浣岰PU鐨勬櫘鍙婇熷害瓚呰繃浜轟滑鐨勯璁″埌鏉ュ緱濡傛涔嬪揩錛屾偍璁や負錛栵紨浣峜pu浼氭祦琛岃搗鏉ヤ箞錛烡ICE鍦˙F2寮曟搸涓浣曟敮鎸佸畠鍛紵
聽聽聽 Marko Kylmamaa: One of the problems with harnessing the full power of 64-bit CPU鎶?is the lack of adoption of 64-bit operating systems. Due to this it鎶?difficult for the game developers to make full use of the 64-bit execution potential without providing a separate set of executables compiled for the different operating systems. The current Battlefield 2 technology has been thoroughly tested on the 64-bit architecture for guaranteeing a solid performance, and optimizations have been made where possible with such architectures in mind.
銆銆鍥炵瓟錛氱敱浜庣幇鍦?4bit鎿嶄綔緋葷粺瀵?4浣嶏跡錛幫嫉鐨勬敮鎸佷笉鏄潪甯稿ソ錛屾墍浠ヨ繕鏃犳硶瀹屽叏鍙戞尌錛栵紨浣嶏跡錛幫嫉鐨勬ц兘銆傚鏋滀笉鍒嗗埆鐨勪負涓嶅悓騫沖彴緙栧啓紼嬪簭灝辨棤娉曞彂鎸ワ紪錛斾綅鐨勬ц兘錛岃繖鏄釜闅劇偣銆侭F2宸茬粡鍦紪錛斾綅騫沖彴涓婄粡榪囨祴璇曚笌浼樺寲榪囥?/p>
聽聽聽 FiringSquad: Game physics are getting more and more attention as well with more attention being put into destructible objects and better collisions. Where does DICE stand on this kind of support for its engine and what solution is best; having a dedicated card (AGEIA) using a graphics card (ATI/Havok) or using a CPU to handle it?
銆銆鎻愰棶錛氭父鎴忕殑鐗╃悊鐗規ц秺鏉ヨ秺鍙楀埌閲嶈銆侱ICE濡備綍鐪嬪緟瀹冿紵鎮ㄨ涓哄摢縐嶆柟妗堟渶濂藉憿錛熸槸鐙珛鐨凙GEIA鐗╃悊鍗★紝榪樻槸NV/Havok鐨勫浘褰㈠崱錛岃繕鏄敤CPU澶勭悊錛?/p>
聽聽聽 Marko Kylmamaa: Especially with multiplayer games in mind, it is difficult to make use of scaleable physics, since especially from the gameplay perspective all of the players must experience the same end result in simulation regardless of their hardware. This leads to a lot of the scalability of the physics being used for visual effects such as richer particle effects or fluid simulation. The GPU can of course be used for offloading the physics simulation from the CPU, but this will compete with the remaining processing time for graphics. Therefore in most cases it is necessary to strike the right balance between the CPU and GPU usage with the needs of the particular game in mind. The next generation technology at DICE is being built on the bleeding edge and will make use of very comprehensive physical modeling.
銆銆鍥炵瓟錛氬湪澶氫漢娓告垙涓嬌鐢ㄧ墿鐞嗙壒鎬ф槸鐩稿綋闅懼仛鐨勶紝浠庣帺瀹剁殑瑙嗚鏉ヨ錛屾墍鏈夌殑浜や簰瑙掕壊蹇呴』浣撻獙鍒扮浉鍚岀殑鐗╃悊鐗規ц屼笉鍏崇郴浠栦滑璇翠嬌鐢ㄧ殑鏄綍縐嶇‖浠躲傚凡緇忎嬌鐢ㄧ殑鐗╃悊鐗規ф湁姣斿嫻佷綋妯℃嫙綺掑瓙緋葷粺絳夌瓑銆傦姬錛幫嫉鍙互鍒嗘媴涓浜涳跡錛幫嫉鐨勭墿鐞嗘ā鎷熻綆楀伐浣滐紝浣嗘槸榪欐牱灝卞拰鍥懼艦璁$畻浜夋姠浜嗗疂璐電殑璧勬簮銆傝櫧鐒跺姝わ紝鎴戜滑渚濇棫闇瑕佸鉤琛★跡錛幫嫉鍜岋姬錛幫嫉涔嬮棿鐨勮礋杞姐侱ICE灝嗕細鍏呭垎鐨勫埄鐢ㄤ笅涓浠f妧鏈負鐜╁鏋勫緩鏈浼樼鐨勭墿鐞嗕綋楠屻?/p>
聽聽聽 FiringSquad: HDR lighting is also getting a lot of attention in more PC games. How does the Battlefield 2/2142 engine support those features and how will that help the graphics in games that use it?
銆銆鎻愰棶錛欻DR鍏夌収鏁堟灉涔熻瓚婃潵瓚婂鐨勬彁鍙娿侭F2/2142寮曟搸鏄浣曟敮鎸佽繖縐嶇壒鏁堬紝鑰屼笖瀹冨皢濡備綍鎻愬崌娓告垙鐢婚潰鍛紵
聽聽聽 Marko Kylmamaa: HDR lighting can add significantly to the perceived realism in the modern graphics engines. It is becoming an increasingly common feature as the new hardware supports full floating point surfaces and has the required processing power for supporting a multitude of such high end features.
聽聽聽 Some aspects of the HDR lighting were simulated especially in the Battlefield 2聽聽 Expansion Pack: Special Forces, for adding a degree of realism to the night-time look. The effect is fairly settle and was used mainly for fine tuning the overall look. Battlefield 2142 does not have night-time levels, so the same technology was not applicable to it, however there are a great number of special lighting effects for enhancing the desired futuristic look of the game.
銆銆鍥炵瓟錛欻DR鍏夌収鍙互浣滀負鐜頒唬鍥懼艦寮曟搸鐨勪竴涓壒鎬с傚湪鏂扮‖浠跺畬鍏ㄦ敮鎸佹誕鐐硅綆楃殑鏂瑰紡涓嬶紝瀹冨彲浠ユ彁楂樼敾闈㈣川閲忚瀹冪湅璧鋒潵鏇寸湡瀹烇紝鍚屾椂涔熼渶瑕佺浉褰撶殑璁$畻閲忋傦綀锝勶綊鍦絺锝嗭紥鐗瑰埆姝﹀姏銆涓浣跨敤錛岀敤浜庡瑙嗘晥鏋溿侭F2142娌℃湁澶滃競鍦烘櫙錛屾墍浠ヤ篃灝辨病鏈変嬌鐢ㄨ繖縐嶆妧鏈紙搴旇鏄疕DR錛夛紝涓嶈繃鎴戜滑浣跨敤鍏朵粬鐨勫厜鐓ф晥鏋滄彁楂樼敾闈㈢殑鐪熷疄鎰熴?/p>
聽聽聽 FiringSquad: More and more games are using extensive pixel and vertex shading for visual and art effects. How does the Battlefield 2/2142 engine support these features currently and how will pixel and vertex shaders be used in the future, particularly with Windows Vista and DirectX10 support?
銆銆鎻愰棶錛氳秺鏉ヨ秺榪囩殑娓告垙騫挎硾浣跨敤PS鍙奦S鎶鏈彁楂樼敾闈㈣川閲忋侭F2/2142鐨勫紩鎿庡浣曟敮鎸佽繖浜涚壒鑹詫紝鏈潵PS VS灝嗚濡備綍浣跨敤錛岀壒鍒槸VISTA鍜孌X10鐨勬潵涓達紵
聽聽聽 Marko Kylmamaa: The Battlefield 2 engine has been built on the DirectX9 architecture and is a fully shader based model. This allowed for a great flexibility during the development, and not supporting the older fixed function pipeline model allowed us to concentrate solely on the high end features. Battlefield 2142 is based on the improved Battlefield 2 technology and will be released later this year, so considering that the DirectX10 hardware won鎶?be widely available just yet, it hasn鎶?been beneficial to re-architect the engine into a DirectX10 based model for this release. This allowed the available time to be used for adding a number of new special effects and polishing the overall look of the existing engine.
銆銆鍥炵瓟錛氱洰鍓岯F2寮曟搸瀹屽叏鏋勫緩浜嶥X9鏋舵瀯錛岃繖鏄釜瀹屽叏鍩轟簬Shader鐨勬ā鍨嬨傝繖鎻愰珮浜嗗紑鍙戠殑鍙幾緙╂э紝鎽嗚劚浜咶F綆$嚎妯″瀷璁╂垜浠緱浠ュ疄鐜版渶楂樼駭鐨勭壒鏁堛侭F2142鍩轟簬鏀硅繘鐨凚F2寮曟搸鎶鏈紝涓嶄箙灝嗗彂甯冧簬涓栵紝鎵浠ヨ冭檻鍒癉X10紜歡涓嶄細閭d箞蹇殑鏅強錛屾垜浠皢寮曟搸閲嶆柊鏋勫緩浠ラ傚簲DX10鐨勬ā鍨嬨傝繖鏍鋒垜浠氨鏈夋椂闂村湪浠ュ悗鐨勬棩瀛愰噷緇х畫鍔犲叆鏂扮殑鏁堟灉錛屾嫇灞曠幇鏈夌殑寮曟搸銆?/p>
聽聽聽 FiringSquad: What other advanced hardware and graphical features do you think will be supported in upcoming Battlefield 2/2142 engine games and in future graphics engine?
銆銆鎻愰棶錛氭偍璁や負BF2/2142寮曟搸灝嗕細鏀寔鍝簺楂樼駭鐨勭‖浠跺強鍏跺浘褰㈡妧鏈紝鏈潵鐨勫紩鎿庡憿錛?/p>
聽聽聽 Marko Kylmamaa: Battlefield 2142 will support a large range of high end special effects geared towards creating the desired futuristic look. These involve for example new atmospheric effects for creating a unique look that is quite different from Battlefield 2.
銆銆鍥炵瓟錛欱F2142鏀寔璁稿鐗規晥鐢ㄦ潵鏋勫緩緇氫附鐪熷疄鐨勫浘鍍忋傛瘮濡傦紝鐞冧綋鍏夌収鎶鏈紙Atomospheric Effect錛夋妧鏈氨鍜孊F2涓殑涓嶅悓銆?/p>
聽聽聽 FiringSquad: Finally, Mark Rein from Epic has said that Intel is hurting the PC gaming industry through its use of intergrated graphics in PCs. Is this a real threat and if so what can be done about this from the game developer's side?
銆銆鎻愰棶錛氭渶鍚庯紝Epic錛堜笉瑕佸憡璇夋垜涓嶇煡閬擄紝鍗沖皢鍙戝竷鐨刄T2007錛夌殑Mark Rein璇達紝Intel姝e湪閫氳繃闆嗘垚鍥懼艦紜歡鎹熷PC娓告垙宸ヤ笟銆備粠娓告垙寮鍙戣呯殑瑙掑害鏉ヨ鎮ㄥ浣曠湅寰呰繖涓棶棰橈紵
聽聽聽 Marko Kylmamaa: Intel produces what you could call the ultra-low end graphics cards for a market segment that typically doesn鎶?wish to invest the money into a higher end, gaming geared hardware. Clearly there is a demand for this type of hardware as Intel鎶?graphics cards boast a large user base. However, this does impose challenges for the games industry in our attempts at reaching especially for the casual gamer market. Hardware requirements for the next generation games keep growing faster than what is needed for running general applications, which increases the rift between the casual and hardcore hardware markets. I believe that we as an industry will also have to recognize the different requirements these markets impose.
聽聽聽 From the perspective of a developer, it can be difficult or in some cases practically impossible to make the high-end game run on the ultra-low end hardware. Supporting such scalability range in performance could be prohibitive with the required development time and cost in mind. It is ultimately up to each developer to find the correct range of hardware which allows for the desired market penetration.
銆銆鍥炵瓟錛氫拱Intel鐨勬樉鍗$殑浜猴紝灝辨槸閭d簺浣犵О涔嬩負涔頒綆绔揣鐨勯偅浜涗漢錛屼粬浠叾瀹為兘涓嶄細鑺遍挶鏋勫緩涓涓父鎴忓鉤鍙般傝櫧鐒朵簨瀹炲姝わ紝鐢變簬榪欎釜鍘熷洜鐨勫獎鍝嶏紝鎴戜滑榪樻槸涓嶅お瀹規槗寮鎷撹繖鏍風殑涓涓競鍦恒傛父鎴忓紜歡鐨勯渶姹傛繪槸瑕佽繙楂樹簬鍟嗙敤杞歡錛屽叾瀹炶繖涔熸墿澶т簡紜歡甯傚満鐨勫眰嬈″樊璺濄傛垜鐩鎬俊鏁翠釜宸ヤ笟浼氬鐪嬫竻妤氳繖涓棶棰樸備粠涓涓父鎴忓紑鍙戣呯殑瑙掑害鏉ヨ錛岃楂樼娓告垙榪愯鍦ㄤ綆绔鉤鍙頒笂鐫瀹炲洶闅俱傚洜涓鴻鏀寔榪欎簺鎬ц兘涓嶄竴鐨勭‖浠墮渶瑕佹彁楂樺紑鍙戠殑鏃墮棿鍜岃姳璐廣傛洿鏈笂榪樻槸瑕佸紑鍙戣呮牴鎹粬浠墍瑕佸紑鍙戠殑甯傚満榪欎竴瑙掑害榪涜紜歡鐨勫鉤鍙扮殑閫夋嫨銆?/p>
聽聽聽聽聽聽 鏈榪戞娊絀虹爺絀朵簡涓涓?/span> WOW 鐨勬湇鍔″櫒緇撴瀯錛屼篃欏轟究浠庨偅浜涢」鐩腑鍙堝涔犱簡涓涓?/span> ManGOs 涓?/span> template 鏂瑰紡涓?/span> SingleTon 鐨勪嬌鐢ㄦ柟娉曘備笉榪囨湁浜涗笉鏄庣櫧鐨勶紝濡傛灉榪欐牱錛?/span> SingleTon<Master> 榪欐牱鐨勪嬌鐢紝濡傛灉浼犲叆鐨勭被鍨嬩笉鍚岋紝闅鵑亾浼犲嚭鐨?/span> static 鏄竴鏍風殑錛熶笉鍙兘鍚э紝濡傛灉鎵撳嵃鍑?/span> this 鎸囬拡鐪嬬湅鍛紵鎶界┖鎴戝啀璇曡瘯銆?/span> SingleTon 鍦ㄦ父鎴忚璁′腑鏄浉褰撻噸瑕佺殑璁捐妯″紡錛屽ぇ瀹朵竴瀹氳濂藉ソ瀛︿範銆?/span>
璁よ瘉榪囩▼
Wow 鐨勬湇鍔″櫒鏈変袱閮ㄥ垎緇勬垚錛?/span> Logon Server 錛堜互涓嬬畝縐?/span> LS 錛夊拰 Realm Server 錛堜互涓嬬畝縐?/span> RS 錛夈?/span> LS 鎺ュ彈鏉ヨ嚜 Wow 瀹㈡埛绔殑榪炴帴錛屼富瑕佹湁浠ヤ笅鍑犳瀹屾垚錛?/span>
媯鏌ュ鎴風鐗堟湰鍖哄煙絳変俊鎭紝媯瀵熻處鍙峰瘑鐮?/span>
寮濮?/span> / 緇х畫浼犻?/span> Patch 錛堝鏋滄湁錛?/span>
涓庡鎴風榪涜 SRP6 鐨勫姞瀵嗕細璇濓紝鎶婄敓鎴愮殑瀵嗗寵鍐欏叆鏁版嵁搴?/span>
鏍規嵁瀹㈡埛绔姹傚彂閫?/span> Realms 鍒楄〃
褰撳鎴風閫夋嫨濂?/span> Realms 鍚庯紝瀹㈡埛绔氨浠?/span> LS 鏂紑錛岃繛鎺ュ埌 RS 涓婏細
璁よ瘉錛屼嬌鐢ㄥ垰鎵嶇敓鎴愮殑瀹㈡埛绔瘑鍖?/span>
濡傞氳繃錛岃繘琛屾父鎴忓驚鐜殑浜や簰
RS 鍜?/span> LS 浣跨敤鐩稿悓鐨勬暟鎹簱錛?/span> SRP6 瀵嗗寵琚?/span> LS 鐢熸垚騫跺啓鍏?/span> DB 鍚庤繕瑕佺敱 RS 璇誨彇鍑烘潵榪涜涓嬩竴姝ョ殑璁よ瘉銆?/span>
Logon Server 璇﹁В
鍩烘湰鐨勮繛鎺ヨ繃紼嬪涓嬶細
瀹㈡埛绔噯澶囪繛鎺ワ紝鍙戦?/span> CMD_AUTH_LOGON_CHALLENGE 鏁版嵁鍖咃紝鍖呭惈浜嗘墍鏈夌櫥闄嗘墍闇瑕佺殑鏁版嵁姣斿鐢ㄦ埛鍚嶅瘑鐮佺瓑
鏈嶅姟绔繑鍥?/span> CMD_AUTH_LOGON_CHALLENGE 鏁版嵁鍖咃紝濉厖瀛楁鍖呮嫭鏈夋晥楠岃瘉錛屼互鍙婅綆楀ソ鐨勬湇鍔$ SRP6 鏁版嵁
濡傛灉鏈夋晥錛屽鎴風鍙戦?/span> CMD_AUTH_LOGON_PROOF 鏁版嵁鍖咃紝騫舵妸鑷繁璁$畻鐨?/span> SRP6 鏁版嵁濉厖榪涘幓
鏈嶅姟绔繘琛岄獙璇侊紝鍙戦佸洖 CMD_AUTH_LOGON_PROOF 錛屽寘鍚簡 SRP6 楠岃瘉鐨勭粨鏋?/span>
濡傛灉涓鍒囨甯革紝瀹㈡埛绔彂閫?/span> CMD_REALM_LIST 鏁版嵁鍖咃紝璇鋒眰鍙戦佹湁鏁堢殑 Realm
鏈嶅姟鍣ㄥ洖澶?/span> CMD_REALM_LIST 鏁版嵁鎶ワ紝騫跺~鍏呰繃瀹㈡埛绔渶瑕佺殑 Realm 鏁版嵁
瀹㈡埛绔殑 Realm 鍒楄〃姣忛殧 3-4 縐掑氨浼氫粠鏈嶅姟鍣ㄧ鍒鋒柊涓嬈°?/span>
N聽聽聽聽 N = 2q + 1 錛?/span> q 鏄竴涓礌鏁幫紝涓嬮潰鎵鏈夌殑鍙栨ā榪愮畻閮藉拰榪欎釜 N 鏈夊叧
g 聽聽聽 涓涓?/span> N 鐨勬ā鏁幫紝搴旇鏄?/span> 2 涓法澶х殑绱犳暟涔樺緱鏉?/span>
k聽聽聽聽 k = H(N,G) 鍦?/span> SRP6 涓?/span> k = 3
s聽聽聽聽聽 User鈥檚 Salt
I聽聽聽聽聽 鐢ㄦ埛鍚?/span>
p聽聽聽聽 鏄庢枃瀵嗙爜
H()聽 鍗曞悜 hash 鍑芥暟
^聽聽聽聽聽 姹傚箓榪愮畻
u聽聽聽聽 闅忔満鏁?/span>
a,b聽聽 淇濆瘑鐨勪復鏃舵暟瀛?/span>
A,B聽 鍏紑鐨勪復鏃舵暟瀛?/span>
x聽聽聽聽 縐佹湁瀵嗗寵錛堜粠 p 鍜?/span> s 璁$畻寰楁潵錛?/span>
v聽聽聽聽 瀵嗙爜楠岃瘉鏁板瓧
鍏朵腑 x聽 =聽 H(s,p) 鍜?/span> v = g ^ x 錛?/span> s 鏄殢鏈洪夋嫨鐨勶紝 v 鐢ㄦ潵灝嗘潵楠岃瘉瀵嗙爜銆?/span>
涓繪満灝?/span> { I,s,v } 瀛樺叆鏁版嵁搴撱傝璇佺殑榪囩▼濡備笅錛?/span>
瀹㈡埛鍚戜富鏈哄彂閫?/span> I 錛?/span> A = g ^ a 錛?/span> a 鏄竴涓殢鏈烘暟錛?/span>
涓繪満鍚戝鎴峰彂閫?/span>
s
錛?/span>
B = kv + g^b
錛堝彂閫?/span>
salt
錛?/span>
b
鏄竴涓殢鏈烘暟瀛楋級
鍙屾柟鍚屾椂璁$畻 u = H(A,B)
瀹㈡埛璁$畻鏈虹畻 x = H(s,p) 錛堝紑濮?/span> hash 瀵嗙爜錛夛紝 S = ((B - kg^x) ^ (a + ux) ) 錛?/span> K = H(S) 錛岋紙寮濮嬭綆椾細璇?/span> Key 錛?/span>
涓繪満璁$畻 S = (Av^u)^b 錛?/span> K = H(S) 錛屼篃鐢熸垚浼氳瘽 Key
涓轟簡瀹屾垚璁よ瘉錛屽弻鏂逛氦鎹?/span> Key 錛屽悇鑷繘琛屽涓嬬殑璁$畻錛?/span>
瀹㈡埛鎺ユ敹鍒版潵鑷富鏈虹殑 key 鍚庯紝璁$畻 H(A,M,K)
鍚岀悊錛屼富鏈鴻綆?/span> M = H(H(N) xor H(g), H(I), s, A, B, K) 錛岄獙璇佹槸鍚﹀悎鑷繁鍌ㄥ瓨鐨勬暟鍊煎尮閰嶃傝嚦姝ゅ畬鎴愰獙璇佽繃紼嬨?/span>
涓夈?/span> Realm Server 璇﹁В
浠?/span> LS 鏂紑鍚庯紝寮濮嬪拰 RS 璁よ瘉錛?/span>
榪炴帴鍒?/span> RS 錛屽悜鏈嶅姟鍣ㄥ彂閫?/span> SMSG_AUTH_CHALLENGE 鏁版嵁鍖咃紝鍖呭惈涓婃鎵鐢ㄧ殑闅忔満縐嶅瓙
鏈嶅姟鍣ㄥ彂閫佸洖 SMSG_AUTH_CHALLENG 銆傚鎴風浠庢湇鍔″櫒绔彂閫佸洖鏉ョ殑縐嶅瓙鍜?/span> SRP6 鏁版嵁涓駭鐢熼殢鏈虹瀛愶紝鐢熸垚 SHA1 瀛楃涓詫紝鐢ㄨ繖浜涙暟鎹敓鎴?/span> CMSG_AUITH_SESSION 鏁版嵁鍖咃紝鍙戦佺粰鏈嶅姟绔?/span>
闇瑕佹敞鎰忕殑鏄紝榪欎釜榪囩▼鏄病鏈夌粡榪囧姞瀵嗙殑銆傚綋鏈嶅姟绔敹鍒拌璇佸洖澶嶅悗錛岄氳繃瀹㈡埛绔駭鐢熺殑縐嶅瓙涔熺敓鎴愪竴涓?/span> SHA1 涓插拰鏉ヨ嚜瀹㈡埛绔殑榪涜瀵規瘮錛屽鏋滅浉鍚岋紝涓鍒?/span> OK 銆?/span>
涓嬮潰鐪嬩竴涓嬪璐﹀彿鍒涘緩鐨勮鑹茬瓑鎿嶄綔榪涜鍒嗘瀽銆備竴涓處鍙鋒渶澶氬彲浠ュ緩 50 涓鑹插惂錛屾垜榪樻病鏈夌帺榪囷紝鍙槸鐪嬩簡涓涓?/span> Manual 銆?/span>
聽瀹㈡埛绔彂閫佷竴涓?/span>CMSG_CHAR_ENUM鏁版嵁鍖呰姹傛帴鍙楄鑹?/span>
鏈嶅姟绔彂閫佸洖鍖呭惈鎵鏈夎鑹蹭俊鎭殑 CMSG_CHAR_ENUM 鏁版嵁鍖?/span>
榪欓噷瀹㈡埛绔彲浠ュ榪欎簺瑙掕壊榪涜鎿嶄綔浜嗭紝 CMSG_CHAR_CREATE 錛?/span> CMSG_CHAR_DELETE 錛?/span> CMSG_CHAR_PLAYER_LOGIN
瑙掕壊鐧婚檰瀹屾垚鍚庯紝鏈嶅姟鍣ㄥ彂閫佸洖 SMSG_CHAR_DATA 鏁版嵁鍖?/span>
鍦ㄦ父鎴忓驚鐜腑鏄浣曟搷浣滅殑鍛紵
濡傛灉鐜╁绔嬪埢閫鍑烘父鎴忥紝閭d箞瀹㈡埛绔彂閫?/span> CMSG_PLAYER_LOGOUT 錛屾湇鍔″櫒鍥炲 SMSG_LOGOUT_COMPLETE
濡傛灉鐜╁閫夋嫨紼嶅悗閫鍑烘父鎴忥紝鍙戦?/span> CMSG_LOGOUT_REQUEST 銆傛湇鍔$鍥炲 SMSG_LOGOUT_RESPONSE 銆傚鏋滅帺瀹跺湪鍊掕鏃墮樁孌甸鍑猴紝鍙戦?/span> CMSG_PLAYER_LOGOUT 錛岄偅涔堢帺瀹剁殑瑙掕壊渚濇棫絳夊掕鏃跺畬鎴愬悗鍐嶉鍑恒?/span>
濡傛灉鐜╁涓柇浜嗛鍑虹戶緇父鎴忥紝鍙戦?/span>
CMSG_LOGOUT_CANCEL
錛屾湇鍔″櫒鍥炲
SMSG_LOGOUT_CANCEL_ACK
銆?/span>
銆銆鐜板湪鐨?/span> CPU 渚濇棫閲囩敤鍐浼婃浖浣撶郴錛屽枩嬈㈠儚鍌誨瓙涓鏍蜂粠澶存墽琛屽埌灝撅紝涓旀病鏈変換浣曠殑璺寵漿鍋滈】絳夊緟銆傚彲鏄幇瀹炴儏鍐墊槸錛屽ぇ閮ㄥ垎紼嬪簭閲岄潰榪樻槸灝戜笉浜?/span> IF ELSE 涔嬬被鐨勫垽鏂紝寰幆灝辨洿鍔犲緱澶氫簡銆傚浣曚紭鍖栧驚鐜ぇ瀹跺彲浠ヨ嚜宸辯悽紓紝鍏跺疄涓嶉毦錛屽彲浠ュ弬鑰冧竴涓嬨婇珮璐ㄩ噺 C\C++ 緙栫▼鎸囧崡銆?/span>
銆銆鐜板湪 CPU 涓婇兘鏈?/span> Level 1 鎸囦護緙撳瓨錛堝張鍙仛 L1 Trace 錛変笌 Level 1 鏁版嵁緙撳瓨錛?/span> L1 Data Cache 錛夈?/span> PMMX 錛?/span> P2 錛?/span> P3 涓轟簩鑰呴兘鍑嗗浜?/span> 16kb 錛屾垜鐨?/span> P4 Northwood 錛堜互涓嬬畝縐?/span> P4NW 錛夋湁 8kbL1 鏁版嵁緙撳瓨鍜?/span> 12kb 鎸囦護緙撳瓨銆?/span> CPU 璇誨彇 L1 Data Cache 涓殑鏁版嵁鍙渶瑕?/span> 1 涓椂閽熷懆鏈燂紝閫熷害闈炲父蹇紝搴旇鏄粎嬈′簬瀵勫瓨鍣ㄤ簡銆傛暟鎹紦瀛樻槸鐢?/span> 256 鎴栬?/span> 512 琛?/span> 32bytes 緇勬垚鐨勶紝涔熷氨鏄?/span> 32bytes 瀵歸綈鐨勶紝鑰?/span> P4NW 鏄?/span> 64bytes 瀛楄妭瀵歸綈鐨勶紝騫惰 4 璺紝鎬誨叡 128 琛屻傚綋浣犲鐞嗙殑鏁版嵁娌℃湁杞藉叆緙撳瓨鐨勬椂鍊欙紝 CPU 灝嗕粠鍐呭瓨璇誨彇緙撳瓨琛屽ぇ灝忕殑鏁版嵁錛屾墍浠ョ紦瀛樿鎬繪槸瀵歸綈鍒拌兘琚?/span> 32 鏁撮櫎鐨勭墿鐞嗗湴鍧銆?/span> CPU 瀵?/span> L1 鏁版嵁緙撳瓨涓殑鏁版嵁榪涜鎿嶄綔鏄渶蹇熺殑銆傛墍浠ユ帹鑽愬唴瀛樺湴鍧鏈璧風爜鏄?/span> 32byte 瀵歸綈鐨勩傜洰鍓嶇紪璇戝櫒鍦ㄨ繖涓湴鏂圭殑浼樺寲宸茬粡闈炲父濂戒簡錛屼竴鑸兘鏄?/span> 4byte 瀵歸綈錛屽綋鐒朵篃閮芥槸 32 瀵歸綈鐨勩傚湪鍚庨潰浣犲皢浼氱湅鍒幫紝 SSE2 瑕佹眰鏁版嵁鏄?/span> 16 瀛楄妭瀵歸綈鐨勩?/span>
聽 銆銆緙撳瓨綾諱技涓涓?/span> C++ set 瀹瑰櫒錛屼絾鏄笉鑳借祴鍊煎埌涓涓換鎰忕殑鍐呭瓨鍦板潃銆傛瘡琛屾湰韜兘鏈?/span> 1 涓?/span> 7bit 澶у皬鐨勫叧鑱斿鹼紙 set value 錛夎鍜岀洰鏍囧唴瀛樺湴鍧鐨?/span> 5 鍒?/span> 11 浣嶅搴旓紙 0-4 浣嶅凡緇忓拷鐣ヤ簡錛夛紝涔熷彲浠ョ悊瑙d負錛屽叧鑱斿兼槸鍐呭瓨孌靛湴鍧鐨勪竴閮ㄥ垎銆?/span> PPro 涓紝鏈?/span> 128 涓叧鑱斿煎搴斿埌 2 琛岋紝鎵浠ユ渶澶氬彲浠ヤ負浠繪剰鐨勫唴瀛樺崟鍏冨噯澶?/span> 2 涓紦瀛樿銆?/span> PMMX P2 P3 P4NW 鏈?/span> 4 涓傜敱浜庡唴瀛樻槸鍒嗘鐨勶紝鎵浠ヨ CPU 鍙兘涓猴紝 5-11 浣嶅湴鍧鐩稿悓鐨勫唴瀛樺噯澶?/span> 2 鎴栬?/span> 4 涓笉鍚岀殑緙撳瓨琛屻傚浣曚負涓や釜鍐呭瓨鍦板潃璧嬩簣鐩稿悓鐨勫叧鑱斿煎憿錛熸妸 2 涓湴鍧鐨勪綆 5bit 鍘繪帀錛岃繖鏍峰氨鑳借 32 鏁撮櫎浜嗐傚鏋滆繖 2 涓埅鏂簡鐨勫湴鍧閮芥槸 4096 錛?/span> 1000H 錛夌殑鍊嶆暟錛岄偅涔堣繖涓や釜鍦板潃灝辨湁浜嗙浉鍚岀殑鍏寵仈鍊箋?/span>
聽 銆銆璁╂垜浠敤姹囩紪鍔犳繁涓涓嬪嵃璞★紝鍋囪 ESI 涓槸 32 瀵歸綈鐨勫湴鍧銆?/span>
聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 AGAIN:聽 MOV聽 EAX,聽 [ESI]
MOV聽 EBX,聽 [ESI+13*4096+4]
MOV 聽ECX,聽 [ESI+20*4096+28]
DEC聽 聽EDX
JNZ 聽聽AGAIN
銆銆 Oh Year 錛岃繖閲?/span> 3 涓湴鍧閮芥湁鐩稿悓鐨勫叧鑱斿鹼紝鑰屼笖鍦板潃璺ㄥ害閮借秴榪囦簡鏁版嵁緙撳瓨鐨勫ぇ灝忥紝鍙繖涓驚鐜湪 PPro 涓婃晥鐜囦細鐩稿綋浣庛傚綋浣犳兂璇誨彇 ECX 鐨勫肩殑鏃跺欙紝灝嗘病鏈夌┖闂茬殑緙撳瓨琛屼簡 鈥斺?/span> 鍥犱負鍏變韓涓涓叧鑱斿鹼紝鑰屼笖 2 琛屽凡緇忚浣跨敤浜嗐傛鏃?/span> CPU 灝嗚吘鍑烘渶榪戜嬌鐢ㄧ殑 2 涓紦瀛樿錛屼竴涓凡緇忚 EAX 浣跨敤銆傜劧鍚?/span> CPU 鎶婅繖涓紦瀛樿鐢?/span> [ESI+20*4096] 鍒?/span> [ESI+20*4096+31] 鐨勫唴瀛樻暟鎹~鍏咃紝鐒跺悗浠庣紦瀛樹腑璇誨彇 ECX 銆傚惉璧鋒潵濂借薄鐩稿綋鐨勭儲鐞愩傛洿鍔犵碂緋曠殑鏄紝褰撳張闇瑕佽鍙?/span> EAX 鐨勬椂鍊欙紝榪橀渶瑕侀噸澶嶄笂榪扮殑榪囩▼錛岄渶瑕佸鍐呭瓨緙撳瓨鏉ュ洖鎿嶄綔錛屾晥鐜囩浉褰撶殑浣庯紝鐢氳嚦涓嶅涓嶇敤緙撳瓨銆傚彲鏄紝濡傛灉鎴戜滑鎶婄涓夎鏀規垚錛?/span>
MOV聽 ECX,聽 [ESI+20*4096+32]
銆銆鍝︼紝涓嶅ソ錛岀湅璧鋒潵錛屾垜浠殑鍦板潃瓚呰繃浜?/span> 32 錛屼笉鑳借鏁撮櫎浜嗐傚彲鏄繖鏍鋒湁浜嗕笉鍚岀殑鍏寵仈鍊鹼紝涔熷氨鎰忓懗鐫鏈変簡 1 涓柊琛岋紝涓嶅啀鍏變韓鍙滅殑 2 涓銆傝繖鏍蜂竴鏉ワ紝瀵逛笁涓瘎瀛樺櫒鐨勬搷浣滃氨涓嶉渶瑕佸弽澶嶇殑鐢?/span> 2 涓紦瀛樿榪涜璋冨害浜嗭紝鍚勬湁涓涓簡銆傚樋鍢匡紝榪欐鍙渶瑕?/span> 3 涓椂閽熷懆鏈熶簡錛岃屼笂涓涓 60 涓懆鏈熴傝繖鏄湪 PPro 涓婄殑錛屽湪鍚庢潵鐨?/span> CPU 涓兘鏄?/span> 4 璺殑錛屼篃灝變笉瀛樺湪涓婇潰鐨勯棶棰樹簡銆傛悶絎戠殑鏄紝 Intel 鐨勬枃妗e嵈閿欒鐨勮 P2 鐨勭紦瀛樻槸 2 璺殑銆傝櫧鐒惰寰堝皯浜哄湪鐢ㄩ偅涔堝彜鑰佺殑 CPU 錛屽彲鏄叾涓殑閬撶悊澶у搴旇鏄庣櫧銆?/span>
銆銆鍙槸鍒ゆ柇瑕佽闂殑閮ㄥ垎鏁版嵁鏄惁鏈夌浉鍚岀殑鍏寵仈鍊鹼紝涔熷氨鏄叧浜庣紦瀛樻槸鍚﹁兘澶熷懡涓殑闂錛屾槸鐩稿綋鍥伴毦鐨勶紝姹囩紪榪樺ソ錛岀敤楂樼瓑綰ц璦緙栬瘧榪囩殑紼嬪簭楝肩煡閬撴槸鍚﹀緙撳瓨鍋氳繃浼樺寲鍛€傛墍浠ヤ箞錛屾帹鑽愶紝鍦ㄧ▼搴忕殑鏍稿績閮ㄥ垎錛屽鎬ц兘瑕佹眰鏈楂樼殑閮ㄥ垎錛屽厛瀵歸綈鏁版嵁錛岀劧鍚庣‘淇濅嬌鐢ㄧ殑鍗曚釜鏁版嵁鍧椾笉瑕佽秴榪囩紦瀛樺ぇ灝忥紝 2 涓暟鎹潡錛屽崟涓笉瑕佽秴榪囩紦瀛樺ぇ灝忕殑涓鍗婏紙浠旂粏鎯蟲兂涓轟粈涔堬紝鍥犱負鍏寵仈鍊肩殑闂錛屽彲浠ョ紦瀛樺垎涓轟袱閮ㄥ垎澶勭悊涓ゅ潡錛夈傚彲鏄ぇ閮ㄥ垎鎯呭喌涓嬶紝鎴戜滑閮芥槸浣跨敤榪滄瘮鏁版嵁緙撳瓨澶х殑澶氱殑緇撴瀯錛屼互鍙婄紪璇戝櫒鑷繁榪斿洖鐨勬寚閽堬紝鐒跺悗涓轟簡浼樺寲浣犲彲鑳藉笇鏈涙妸鎵鏈夐綣佷嬌鐢ㄧ殑鍙橀噺鏀懼埌涓涓繛緇殑鏁版嵁鍧椾腑浠ュ厖鍒嗗埄鐢ㄧ紦瀛樸傛垜浠彲浠ヨ繖鏍峰仛錛屾妸闈欐佸彉閲忔暟鍊兼嫹璐濆埌鏍堜腑鐨勫眬閮ㄥ彉閲忎腑錛岀瓑瀛愬嚱鏁版垨鑰呭驚鐜粨鏉熷悗鍐嶆嫹璐濆洖鏉ャ傝繖鏍蜂竴鏉ュ氨鐩稿綋浜庢妸闈欐佸彉閲忔斁鍏ヤ簡榪炵畫鐨勫湴鍧絀洪棿涓幓銆?/span>
褰撹鍙栫殑鏁版嵁涓嶅湪 L1 Cache 鍐呮椂錛?/span> CPU 灝嗚浠?/span> L2 Cache 璇誨彇 L1 緙撳瓨琛屽ぇ灝忕殑鏁版嵁鍒?/span> L1 閲屽幓錛屽ぇ姒傞渶瑕?/span> 200ns 鐨勬椂闂達紙涔熷氨鏄?/span> 100Mhz 緋葷粺鐨?/span> 20 涓椂閽熷懆鏈燂級錛屼絾鏄洿鍒頒綘鑳藉浣跨敤榪欎簺鏁版嵁鍓嶏紝鍙堥渶瑕佹湁 50-100ns 鐨勫歡榪熴傛渶緋熺硶鐨勬槸錛屽鏋滄暟鎹篃涓嶅湪 L2 Cache 涓紝閭d箞灝卞彧鑳戒粠鏈鎱㈤熺殑鍐呭瓨閲岃鍙栦簡錛屽唴瀛樼殑榫熼熷摢鑳藉拰鍏ㄩ熺殑緙撳瓨鐩告瘮銆?/span>
濂戒簡錛屽叧浜庣紦瀛樼殑鐭ヨ瘑鍙互灝辨鎵撲綇浜嗭紝涓嬮潰寮濮嬭濡備綍浼樺寲緙撳瓨銆傛棤闈炲氨鏄?/span> 3 縐嶆柟娉曪紝紜歡棰勫彇錛?/span> Prefetch 錛夈佽蔣浠墮鍙栥佷嬌鐢ㄧ紦瀛樻寚浠ゃ傚叧浜庨鍙栫殑娉ㄦ剰浜嬮」涓昏鏈夎繖浜涳細
<!--[if !supportLists]--> 1銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽 <!--[endif]--> 鍚堢悊瀹夋帓鍐呭瓨鐨勬暟鎹紝浣跨敤鍧楃粨鏋勶紝鎻愰珮緙撳瓨鍛戒腑鐜囥?/span>
<!--[if !supportLists]--> 2銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽 <!--[endif]--> 浣跨敤緙栬瘧鍣ㄦ彁渚涚殑棰勫彇鎸囦護銆傛瘮濡?/span>ICC涓殑_mm_prefetch _mm_stream錛岀敋鑷?/span>_mm_load絳夋瘮杈冣滀紶緇熲濈殑鎸囦護銆?/span>
<!--[if !supportLists]--> 3銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽 <!--[endif]--> 灝藉彲鑳藉皯鐨勪嬌鐢ㄥ叏灞鐨勫彉閲忔垨鑰呮寚閽堛?/span>
<!--[if !supportLists]--> 4銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽 <!--[endif]--> 紼嬪簭灝藉彲鑳藉皯鐨勮繘琛屽垽鏂煩杞驚鐜?/span>
<!--[if !supportLists]--> 5銆?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">聽 <!--[endif]--> 浣跨敤const鏍囪錛屼笉瑕佸湪浠g爜涓販鍚?/span>register澹版槑銆?/span>
涓嶈繃瑕佹彁閱掍竴鍙ワ紝鐪熸鎻愰珮紼嬪簭鏁堢巼鐨勬柟娉曚笉鏄?U嶏紝浠庡ご鍒板熬鐢變簬澶栫鎵嬫湳鑸殑瑙e墫錛屼竴涓竴涓湴鏂圭殑浼樺寲錛岃鎶撲綇紼嬪簭鏈鏍稿績鐨勯儴鍒嗚繘琛屼紭鍖栵紝璁頒綇 80-20 瑙勫垯銆?/span>
浣跨敤 SIMD
鍏堝涔犱竴涓嬪榻愭寚浠わ紝 __declspec(aliagn(#)) 錛?/span> # 鏇挎崲涓哄瓧鑺傛暟銆傛瘮濡傛兂澹版槑涓涓?/span> 16 瀛楃粨瀵歸綈鐨勬誕鐐規暟緇勶紝 __declspec(aliagn(16)) float Array[128] 銆傞渶瑕佹敞鎰忕殑鏄紝鏈濂藉厖鍒嗕簡瑙d綘 CPU 鐨勭被鍨嬶紝鏀寔鍝簺鎸囦護闆嗐?/span> SIMD 涓昏浣跨敤鍦ㄩ渶瑕佸悓鏃舵搷浣滃ぇ閲忔暟鎹殑宸ヤ綔棰嗗煙錛屾瘮濡?/span> 3D 鍥懼艦澶勭悊錛堟父鎴忥級錛岀墿鐞嗗緩妯★紙 CAD 錛夛紝鍔犲瘑錛屼互鍙婄瀛﹁綆楅鍩熴傛嵁鎴戞墍鐭ワ紝鐩墠 GPGPU 涔熸槸浣跨敤 SIMD 鐨勪唬琛ㄤ箣涓銆?/span>
MMX
涓昏鐗規э細 57 鏉℃寚浠わ紝 64bit 鐨?/span> FP 瀵勫瓨鍣?/span> MM0-MM7 錛屽榻愬埌 8 涓?/span> 80bit 鐨?/span> FP 瀵勫瓨鍣?/span> ST0-ST7 銆傞渶瑕佹暟鎹?/span> 8 瀛楄妭瀵歸綈錛屼篃灝辨槸浣跨敤 Packed 鏁板瓧銆?/span>
PS 錛氳繖閲屽啋鍑轟簡涓涓棶棰橈紝涓轟粈涔?/span> Intel 瑕佹妸 MMX 鐨勫瘎瀛樺櫒鍜?/span> FPU 鐨勫瘎瀛樺櫒娣峰悎璧鋒潵浣跨敤鍛紵鍥犱負榪欓噷鐗墊秹鍒頒竴涓?/span> FPU 鐘舵佸垏鎹㈤棶棰橈紝鍚庨潰浼氭彁鍒幫紝褰撲綘鍦ㄤ竴孌典唬鐮佷腑鍙堣鐢ㄥ埌 MMX 鎸囦護鍙堣鐢ㄥ埌浼犵粺鐨?/span> FPU 鎸囦護錛岄偅涔堥渶瑕佷繚瀛?/span> FPU 鐘舵侊紝鎴栬呴鍑?/span> MMX 銆傚彲鏄繖縐嶆搷浣滃浜?/span> FPU 鏉ヨ闈炲父鏄傝吹錛岃屼笖瀵逛簬澶氫換鍔℃搷浣滅郴緇熸潵璇達紝榪戜箮浜庝笉鍙兘瀹屾垚鐨勪換鍔?/span> 鈥斺?/span> 鍚屾椂鏈夎澶氱▼搴忥紝鏈変簺闇瑕?/span> MMX 錛屾湁浜涗笉闇瑕侊紝鑰屾紜湴榪涜璋冨害浼氬彉寰楅潪甯稿洶闅俱傛墍浠?/span> Intel 灝嗕繚瀛樼姸鎬佺殑宸ヤ綔瀹屽叏浜ょ粰浜?/span> CPU 鑷繁錛岃蔣浠朵漢鍛樻棤欏諱綔澶榪欐柟闈㈢殑宸ヤ綔錛岃繖鏍蜂竴鏉ワ紝灝卞悜鍓嶅悜鍚庡吋瀹逛簡澶氫換鍔℃搷浣滅郴緇燂紝姣斿 Windows 鍜?/span> Linux 銆傚悗鏉ラ殢鐫鎿嶄綔緋葷粺鍜?/span> CPU 鐨勪笉鏂崌綰э紝鎿嶄綔緋葷粺寮鍙戜漢鍛樺彂甯冧簡涓涓ˉ涓佸寘錛屽氨鍙互璁╂搷浣滅郴緇熶嬌鐢ㄦ柊鐨勫瘎瀛樺櫒銆傝繖鏃朵漢浠兘鍙戠幇 Intel 鐨勮繖縐嶅仛娉曟槸鐩稿綋鐭鐨勶紝榪欏彲浠ュ綋浣滀竴涓噸澶х殑澶辮銆傚悗鏉?/span> Intel 閫氳繃寮曞叆浜嗘柊鐨勬誕鐐規寚浠ら泦錛岃繖鏃舵墠鍔犲叆 XMM 瀵勫瓨鍣ㄣ傚彲閫犳垚榪欐鏁呬簨鐨勫師鍥犲嵈鏍規湰涓嶆槸鎶鏈棶棰橈紝淇濊瘉鍏煎鎬т篃鏄竴涓柟闈紝鎬諱箣鐪熺殑璇翠笉娓呮銆備綘鍙璁板緱鏃犳硶鍚屾椂浣跨敤 MMX 涓?/span> FPU 灝卞彲浠ヤ簡錛?/span> CPU 瑕佽繘琛屾ā寮忓垏鎹€?/span>
SSE1
涓昏鐗規э細 128bit 鐨?/span> FP 瀵勫瓨鍣?/span> XMM0-XMM7 銆傚鍔犱簡鏁版嵁棰勫彇鎸囦護銆傞澶栫殑 64bit 鏁存暟鏀寔銆傛敮鎸佸悓鏃跺鐞?/span> 4 涓崟綺懼害嫻偣鏁幫紝涔熷氨鏄?/span> C\C++ 閲岀殑 float 銆?/span>
閫傜敤鑼冨洿錛氬濯掍綋淇″彿澶勭悊
SSE2
涓昏鐗規э細 128bit 鐨?/span> FP 瀵勫瓨鍣ㄦ敮鎸佸鐞嗗悓鏃跺鐞?/span> 2 涓弻綺懼害 double 嫻偣鏁幫紝浠ュ強 16byte 8word 4dword 2quadword 鏁存暟銆?/span>
閫傜敤鑼冨洿錛?/span> 3D 澶勭悊 璇煶璇嗗埆 瑙嗛緙栫爜瑙g爜
SSE3
涓昏鐗規э細澧炲姞鏀寔闈炲縐?/span> asymmetric 鍜屾按騫?/span> horizontal 璁$畻鐨?/span> SIMD 鎸囦護銆備負 SIMD 鎻愪緵浜嗕竴鏉$壒孌婄殑瀵勫瓨鍣?/span> load 鎸囦護銆傜嚎紼嬪悓姝ユ寚浠ゃ?/span>
閫傜敤鑼冨洿錛氱瀛﹁綆?/span>
澶氱嚎紼嬬▼搴?br />
鎵嬪ご宸ュ叿
1 銆侀夋嫨涓涓悎閫傜殑緙栬瘧鍣紝鎺ㄨ崘鐢?/span> Intel C++ Compiler 錛堜互涓嬬畝縐?/span> ICC 錛夛紝浠ュ強 Visual Studio .NET 2003 鍙婁互涓?/span> IDE 闄勫甫鐨?/span> C++ 緙栬瘧鍣ㄣ傚悓鏃訛紝 Microsoft C++ Compiler 涔熸敮鎸?/span> AMD 鐨?/span> 3DNow 銆?/span> GCC C++ Compiler 娌℃湁嫻嬭瘯銆?/span>
2
銆?/span>
Intel
浠ュ強
AMD
鐨勬眹緙栨寚浠ら泦鎵嬪唽銆傝繖涓槸蹇呴渶鐨勶紝寮虹儓寤鴻姣忎釜C++ Coder浜烘墜鍑嗗涓浠姐?/b>
浣跨敤鑼冧緥錛?/span>
鍚戦噺涔樻硶鍦?/span> 3D 澶勭悊涓潪甯擱潪甯稿錛屽鍗婄敤浜庤綆楀崟浣嶇煝閲忕殑澶硅銆?/span>
鎴戜滑鍏堝畾涔変竴涓《鐐圭粨鏋勩?/span>
w鏄叾嬈″潗鏍囩郴鐨勫弬鏁幫紝澶勭悊鍚戦噺鐨勬椂鍊欎笉闇瑕佺敤鍒般傛垜鐨勫嚱鏁版槸榪欐牱鐨勶細