(Translated by https://www.hiragana.jp/)
3DNow! - 维基百科,自由的百科全书 とべ转到内容ないよう

3DNow!

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
重定しげさだこう3D Now!

3DNow!よりどころせつ“3D No Waiting!”てき縮寫しゅくしゃゆかりAMD開發かいはつてきいちSIMD媒體ばいたい指令しれいしゅう支持しじ單精度たんせいど浮點すう的矢まとやりょう運算うんざんよう增强ぞうきょうx86構的電腦でんのうざい三维圖像處理上的性能。

历史

[编辑]

1996ねんIntelくびさき推出りょう支持しじMMXてきPentium处理,极大ひさげだかりょうCPU处理媒体ばいたいすうすえてき能力のうりょく广泛应用于语音合成ごうせい语音识别おと频视频编かい码、图像处理くしりゅう媒体ばいたいとう领域。ただしMMXただ支持しじ整数せいすう运算,浮点すう运算仍然よう使用しよう传统てきx87协处指令しれいよし于MMXあずかx87てきよせそん相互そうごじゅう叠,ざいMMXだい码中插入そうにゅうx87指令しれい时必须先执行EMMS指令しれいしんじょMMXじょう态,频繁きり换状态将严重かげ性能せいのう。这限せいりょうMMX指令しれいざい需要じゅよう大量たいりょう浮点运算てきほどじょ,如さん维几なん变换、たっ剪和投影とうえいちゅうてき应用。

另一方面ほうめんゆかり于x87かいてきうずたかしき暫存结构,使つかいとくかたけんじょうはた流水りゅうすい线软件じょう合理ごうり调度指令しれい很困难,这成为提だかx86构浮てん性能せいのうてきいち个瓶颈。

了解りょうかい决以じょう这两个问题,AMD公司こうし于1998ねん推出りょう包含ほうがん21じょう指令しれいてき3DNow!指令しれいしゅう,并在其K6-2处理ちゅう实现。K6-2だい一个能执行浮点SIMD指令しれいてきx86处理,也是だい一个支持水平浮点寄存器模型的x86处理じょ3DNow!,K6-2实现りょうx86处理じょうさいかいてき浮点单元,ざいまい个时钟周ない最多さいたいた4个单精度せいど浮点すう结果,传统x87协处てき4ばい。许多ゆう戏厂しょう为3DNow!优化りょうほどじょほろてきDirectX 7也为3DNow!做了优化,AMD处理てきゆう性能せいのうだいいちちょう过Intel,这大だいひさげますりょうAMDざいけし费者しんちゅうてき地位ちい。K6-2ずいきさきてきK6-IIIなり为市场上てき热门货。

1999ねんずいAthlon处理てき推出,AMD为3DNow!增加ぞうかりょう5じょうしんてき指令しれいよう增强ぞうきょう其在DSP方面ほうめんてき性能せいのう,它们しょう为“扩展3DNow!”(Extended 3DNow!)。

为了对抗3DNow!,Intel公司こうし于1999ねん推出りょうSSE指令しれいしゅう。SSE几乎のう提供ていきょう3DNow!てき所有しょゆうこうのう,而且のうざい一条指令中处理两倍多的单精度浮点数;どう时,SSE完全かんぜん支持しじIEEE 754ざい处理单精度せいど浮点すう时可以完ぜん代替だいたいx87。这迅そく瓦解がかいりょう3DNow!てき优势。

1999ねんきさきずい主流しゅりゅう操作そうさけいかず软件开始支持しじSSE并为SSE优化,AMDざい其2000ねん发布てきだいごう为“ThunderbirdてきAthlon处理ちゅう添加てんかりょう对SSEてき完全かんぜん支持しじ(“经典”てきAthlonあるK7ただ支持しじSSEちゅうあずかMMXゆう关的部分ぶぶん,AMDしょう为“扩展MMX”そくExtended MMX)。ずいきさき,AMD致力于AMD64构的开发;ざいSIMD指令しれいしゅう方面ほうめん,AMD跟随Intel,为自己じこてき处理添加てんかSSE2SSE3支持しじ,而不さいあらため进3DNow!。

2010ねんはちがつ,AMD宣布せんぷはたざいしん一代处理器中取消除了两条数据预取指令之外3DNow!指令しれいてき支持しじ,并鼓励开发者しょう3DNow!だい码重新用しんようSSE实现。

支持しじ检测

[编辑]

支持しじ3DNow!てきCPUてきCPUID扩展こうのう(EAX=80000001h时执ぎょうCPUID指令しれいいたてきEDXてき内容ないようてき(从低いた高位こういだい31为1。支持しじ扩展3DNow!てきCPUてきCPUID扩展こうのうてき(从低いた高位こういだい30为1。

K6-2いたりK10これ间AMD所有しょゆうてきx86处理支持しじ3DNow!,包括ほうかつAthlon 64OpteronSempron处理;AMDしょう3DNow!从RyzenAMD FX處理しょりうつりじょCyrixとう一些其他厂家生产的某些处理器也支持3DNow!;ただしIntelせい产的所有しょゆう处理支持しじ3DNow!。

执行环境

[编辑]

3DNow!指令しれいてき执行环境あずかMMXいち样,みやこただししょう8个x87よせそんST0~ST7てきてい64じゅう命名めいめい为MMXよせそんMM0~MM7,并依平坦へいたんしき进行操作そうさそく指令しれい任意にんい访问这8个寄そんちゅうてきにんなん一个而不必使用堆栈)。

よし于3DNow!使用しようてきよせそんあずかx87よせそんじゅう叠,にん务切换时,保存ほぞんx87よせそんじょう态的どう时也保存ほぞんりょう3DNow!てきじょう态,所以ゆえん3DNow!需要じゅよう操作そうさけい统的额外支持しじただようCPU支持しじ3DNow!,含有がんゆう3DNow!だい码的ほどじょ以在ただこう虑到x87じょう态的はらゆうてき操作そうさけい统上おさむあらため运行。

よし于3DNow!平坦へいたんしき访问よせそん,对3DNow!浮点单元てきかん线化变得容易ようい,这也于编译器生成せいせいだかこうてき浮点だい码。

3DNow!指令しれいしゅう

[编辑]

3DNow!かず扩展3DNow!てき26じょう指令しれい从功のうじょう以分为以类。

精度せいど浮点运算指令しれい

[编辑]

此类指令しれいてき操作そうさすうひとし为64,其高32かずてい32ぶん别是IEEE 754格式かくしきてき精度せいど浮点すうだい部分ぶぶん指令しれい一次可接受两个这样的操作数,并得いた两个单精度せいど浮点すうてき结果。它们てき汇编语言じょ记符PF开头。

3DNow!还包含有がんゆう计算单精度せいどたおせすう开方たおせすうてき指令しれい,并可以依ほどじょ需要じゅようとくいた12精度せいど24精度せいどてき结果。这些指令しれい一次只能处理一个单精度浮点数。

3DNow!てき一个特色是可以将同一寄存器內的64操作そうさすうちゅうてき两个单精度せいど浮点すうそうある相乘そうじょう,这在复数运算ない积运さんちゅう非常ひじょう有用ゆうよう。Intelちょくいた最近さいきんざいざいSSE3指令しれい集中しゅうちゅう增加ぞうかりょう这项こうのうしょう为“水平すいへい操作そうさ”。

为了证与きゅうゆう操作そうさけい统的けんようせいあずかMMX指令しれいいち样,3DNow!指令しれい引发にんなにさん术异つね。3DNow!指令しれいかい生成せいせい不能ふのうせい确处NaN规格すう,也不支持しじ指定してい捨入しきよし此3DNow!并不IEEE 754てき一个完整实现,そく使ただわたる及单精度せいど浮点すう时也不能ふのう完全かんぜん代替だいたいx87。

增强ぞうきょうてきMMX指令しれい

[编辑]

PAVGUSBよう于求64紧缩节(8×8节)てき平均へいきん值,可用かよう于视频编码中てきぞうもと平均へいきん图像缩放とう可能かのう识到这个こうのうてき重要じゅうようせい,IntelざいSSEちゅう添加てんかりょうこうのう完全かんぜんしょうどうてきPAVGB指令しれい

PMULHRW则用らい补充MMX指令しれいPMULHWてき不足ふそくざい紧缩(4×16相乘そうじょう时可以得いたきさきしゃさらじゅん确的结果。Intelちょくいた最近さいきんざいざいSSSE3ちゅう增加ぞうかりょうこうのう相似そうじてき指令しれいPMULHRSW

PSWAPD指令しれいよう于交换紧缩双(2×32ちゅう两个そう字数じすうすえてき位置いち

かずすえ类型转换指令しれい

[编辑]

PF2IDPI2FDとう4じょう指令しれいよう完成かんせい整数せいすう精度せいど浮点すう间的相互そうご转换。

かずすえ预取指令しれい

[编辑]

PREFETCH/PREFETCHW指令しれいよう于把はたよう使用しよういたてきすうすえしゅ記憶きおくたいひさげまえいれかいなか,以减しょう访问ぬし記憶きおくたいてき指令しれい执行时的のべ迟。IntelざいSSEちゅう添加てんかりょう类似てきPREFETCHTx指令しれい

快速かいそく退出たいしゅつMMXじょう态指れい

[编辑]

FEMMS指令しれいあずかMMXちゅうてきEMMSこうのうしょうどうよう退出たいしゅつMMXじょう态。ざいK6-2K6-III处理ちゅうFEMMSEMMSさらかいざいAthlon及更新こうしんてき处理ちゅうFEMMSひとしどうEMMS

外部がいぶ链接

[编辑]