3DNow!
3DNow! â äîïîëíèòåëüíîå ðàñøèðåíèå MMX äëÿ ïðîöåññîðîâ AMD, íà÷èíàÿ ñ AMD K6 3D. Ïðè÷èíîé ñîçäàíèÿ 3DNow! ïîñëóæèëî ñòðåìëåíèå çàâîåâàòü ïðåâîñõîäñòâî íàä ïðîöåññîðàìè ïðîèçâîäñòâà êîìïàíèè Intel â îáëàñòè îáðàáîòêè ìóëüòèìåäèéíûõ äàííûõ.
Òåõíîëîãèÿ 3DNow! ââåëà 21 íîâóþ êîìàíäó ïðîöåññîðà è âîçìîæíîñòü îïåðèðîâàòü 32-áèòíûìè âåùåñòâåííûìè òèïàìè â ñòàíäàðòíûõ MMX-ðåãèñòðàõ. Òàêæå áûëè äîáàâëåíû ñïåöèàëüíûå èíñòðóêöèè, îïòèìèçèðóþùèå ïåðåêëþ÷åíèå â ðåæèì MMX/3DNow! (femms, êîòîðàÿ çàìåíÿëà ñòàíäàðòíóþ èíñòðóêöèþ emms) è ðàáîòó ñ êýøåì ïðîöåññîðà. Òàêèì îáðàçîì òåõíîëîãèÿ 3DNow! ðàñøèðÿëà âîçìîæíîñòè òåõíîëîãèè MMX, íå òðåáóÿ ââåäåíèÿ íîâûõ ðåæèìîâ ðàáîòû ïðîöåññîðà è íîâûõ ðåãèñòðîâ.  ïðîöåññîðàõ AMD âûïóùåííûõ ïîñëå àâãóñòà 2010 ãîäà ïîääåðæêà òåõíîëîãèè ñâåä¸òñÿ ê äâóì èíñòðóêöèÿì.
Ñîäåðæàíèå |
[ïðàâèòü] Ïðîâåðêà ïîääåðæêè 3DNow! ïðîöåññîðîì
Ïåðåä íà÷àëîì ðàáîòû ñ ðàñøèðåíèåì 3DNow! ñëåäóåò óáåäèòüñÿ, ÷òî ÖÏ èõ ïîääåðæèâàåò. Äëÿ ýòîãî èñïîëüçóåòñÿ èíñòðóêöèÿ CPUID. Îáùèé ïîðÿäîê äåéñòâèé ïðè ïðîâåðêå âûãëÿäèò ñëåäóþùèì îáðàçîì:
- Óáåäèòüñÿ, ÷òî ïðîöåññîð ïîääåðæèâàåò èíñòðóêöèþ CPUID. Åñëè íåò, òî ÖÏ íå ïîääåðæèâàåò è 3DNow!.
- Âûïîëíèòü èíñòðóêöèþ cpuid ñî çíà÷åíèåì EAX = 0 â ýòî íåîáõîäèìî äëÿ ñëåäóþùåãî øàãà.
- Âûïîëíèòü CPUID ñî çíà÷åíèåì EAX = 80000000h. Åñëè ïîñëå âûïîëíåíèÿ èíñòðóêöèè â EAX áóäåò çíà÷åíèå ìåíüøå 1, òî 3DNow! íå ïîääåðæèâàåòñÿ.
- Âûïîëíèòü CPUID ñ EAX = 80000001h. Åñëè ïîñëå âûïîëíåíèÿ áèò 31 ðåãèñòðà EDX áóäåò óñòàíîâëåí â 1, òî 3DNow! ïîääåðæèâàåòñÿ. Èíà÷å â íåò.
[ïðàâèòü] Èíñòðóêöèè 3DNow!
- PAVGUSB â âû÷èñëåíèå ñðåäíåãî 8-áèòîâûõ öåëûõ çíà÷åíèé
- PI2FD â ïåðåâîä 32-áèòíûõ öåëûõ â âåùåñòâåííûå ÷èñëà
- PF2ID â ïåðåâîä âåùåñòâåííûõ â 32-áèòíûå öåëûå ÷èñëà
- PFCMPGE â ñðàâíåíèå âåùåñòâåííûõ ÷èñåë, áîëüøå èëè ðàâíî
- PFCMPGT â ñðàâíåíèå âåùåñòâåííûõ ÷èñåë, áîëüøå
- PFCMPEQ â ñðàâíåíèå âåùåñòâåííûõ ÷èñåë, ðàâíî
- PFACC â íàêîïëåíèå ñóììû âåùåñòâåííûõ ÷èñåë
- PFADD â ñëîæåíèå âåùåñòâåííûõ ÷èñåë
- PFSUB â âû÷èòàíèå âåùåñòâåííûõ ÷èñåë
- PFSUBR â îáðàòíîå âû÷èòàíèå âåùåñòâåííûõ ÷èñåë
- PFMIN â íàõîæäåíèå ìèíèìóìà âåùåñòâåííûõ ÷èñåë
- PFMAX â íàõîæäåíèå ìàêñèìóìà âåùåñòâåííûõ ÷èñåë
- PFMUL â óìíîæåíèå âåùåñòâåííûõ ÷èñåë
- PFRCP â íàõîæäåíèå ïðèáëèæ¸ííîãî çíà÷åíèÿ îáðàòíîãî (1/x) âåùåñòâåííûõ ÷èñåë
- PFRSQRT â íàõîæäåíèå ïðèáëèæ¸ííîãî çíà÷åíèÿ îáðàòíîãî îò êâàäðàòíîãî êîðíÿ (1/sqrt(x)) âåùåñòâåííûõ ÷èñåë
- PFRCPIT1 â ïåðâûé øàã âû÷èñëåíèÿ çíà÷åíèÿ îáðàòíîãî (1/x) âåùåñòâåííûõ ÷èñåë
- PFRSQIT1 â ïåðâûé øàã âû÷èñëåíèÿ çíà÷åíèÿ îáðàòíîãî îò êâàäðàòíîãî êîðíÿ (1/sqrt(x)) âåùåñòâåííûõ ÷èñåë
- PFRCPIT2 â âòîðîé øàr âû÷èñëåíèÿ çíà÷åíèÿ îáðàòíîãî èëè îáðàòíîãî îò êâàäðàòíîãî êîðíÿ âåùåñòâåííûõ ÷èñåë
- PMULHRW â óìíîæåíèå 16-áèòíûõ öåëûõ ÷èñåë ñ îêðóãëåíèåì
- FEMMS â áûñòðîå ïåðåêëþ÷åíèå ñîñòîÿíèÿ FPU/MMX
- PREFETCH/PREFETCHW â ïðåäâûáîðêà ñòðîêè êýøà ïðîöåññîðà èç ïàìÿòè
[ïðàâèòü] Ïðîöåññîðû, ïîääåðæèâàþùèå 3DNow!
- íà÷èíàÿ ñ AMD K6-2 è äî Phenom X6 âêëþ÷èòåëüíî; èç ñîâðåìåííûõ ïðîöåññîðîâ AMD èíñòðóêöèè 3DNow! íå ïîääåðæèâàþò ïðîöåññîðû ñ àðõèòåêòóðîé Bulldozer è Fusion.
- National Semiconductor Geode GX2, AMD Geode GX/LX/NX
- VIA C3/CoreFusion/Eden
- IDT WinChip 2
[ïðàâèòü] Ñì. òàêæå
- Èíñòðóêöèÿ CPUID.
- Áóäóùèå ïðîöåññîðû AMD ëèøàòñÿ ïîääåðæêè èíñòðóêöèé 3DNow
- 3DNow! Instructions are Being Deprecated | AMD Developer
| Íàáîðû ðàñøèðåíèÿ áàçîâûõ èíñòðóêöèé ïðîöåññîðîâ ñåìåéñòâà x86 |
|---|
| MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES |
| Ýòî çàãîòîâêà ñòàòüè î ïðîãðàììíîì îáåñïå÷åíèè. Âû ìîæåòå ïîìî÷ü ïðîåêòó, èñïðàâèâ è äîïîëíèâ å¸. |