ñòàòüèGNU Free Documentation License ìàòåðèàëû âçÿòû èç Âèêèïåäèè Ñòàòüÿ áûëà èçìåíåíà. Îðèãèíàë ñòàòüè.

3DNow!

Ìàòåðèàë èç Ýíöèêëîïåäèè â ñâîáîäíîé ýíöèêëîïåäèè
Ïåðåéòè ê: íàâèãàöèÿ, ïîèñê

3DNow! â äîïîëíèòåëüíîå ðàñøèðåíèå MMX äëÿ ïðîöåññîðîâ AMD, íà÷èíàÿ ñ AMD K6 3D. Ïðè÷èíîé ñîçäàíèÿ 3DNow! ïîñëóæèëî ñòðåìëåíèå çàâîåâàòü ïðåâîñõîäñòâî íàä ïðîöåññîðàìè ïðîèçâîäñòâà êîìïàíèè Intel â îáëàñòè îáðàáîòêè ìóëüòèìåäèéíûõ äàííûõ.

Òåõíîëîãèÿ 3DNow! ââåëà 21 íîâóþ êîìàíäó ïðîöåññîðà è âîçìîæíîñòü îïåðèðîâàòü 32-áèòíûìè âåùåñòâåííûìè òèïàìè â ñòàíäàðòíûõ MMX-ðåãèñòðàõ. Òàêæå áûëè äîáàâëåíû ñïåöèàëüíûå èíñòðóêöèè, îïòèìèçèðóþùèå ïåðåêëþ÷åíèå â ðåæèì MMX/3DNow! (femms, êîòîðàÿ çàìåíÿëà ñòàíäàðòíóþ èíñòðóêöèþ emms) è ðàáîòó ñ êýøåì ïðîöåññîðà. Òàêèì îáðàçîì òåõíîëîãèÿ 3DNow! ðàñøèðÿëà âîçìîæíîñòè òåõíîëîãèè MMX, íå òðåáóÿ ââåäåíèÿ íîâûõ ðåæèìîâ ðàáîòû ïðîöåññîðà è íîâûõ ðåãèñòðîâ.  ïðîöåññîðàõ AMD âûïóùåííûõ ïîñëå àâãóñòà 2010 ãîäà ïîääåðæêà òåõíîëîãèè ñâåä¸òñÿ ê äâóì èíñòðóêöèÿì.

Ñîäåðæàíèå

[ïðàâèòü] Ïðîâåðêà ïîääåðæêè 3DNow! ïðîöåññîðîì

Ïåðåä íà÷àëîì ðàáîòû ñ ðàñøèðåíèåì 3DNow! ñëåäóåò óáåäèòüñÿ, ÷òî ÖÏ èõ ïîääåðæèâàåò. Äëÿ ýòîãî èñïîëüçóåòñÿ èíñòðóêöèÿ CPUID. Îáùèé ïîðÿäîê äåéñòâèé ïðè ïðîâåðêå âûãëÿäèò ñëåäóþùèì îáðàçîì:

  1. Óáåäèòüñÿ, ÷òî ïðîöåññîð ïîääåðæèâàåò èíñòðóêöèþ CPUID. Åñëè íåò, òî ÖÏ íå ïîääåðæèâàåò è 3DNow!.
  2. Âûïîëíèòü èíñòðóêöèþ cpuid ñî çíà÷åíèåì EAX = 0 â ýòî íåîáõîäèìî äëÿ ñëåäóþùåãî øàãà.
  3. Âûïîëíèòü CPUID ñî çíà÷åíèåì EAX = 80000000h. Åñëè ïîñëå âûïîëíåíèÿ èíñòðóêöèè â EAX áóäåò çíà÷åíèå ìåíüøå 1, òî 3DNow! íå ïîääåðæèâàåòñÿ.
  4. Âûïîëíèòü 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!

[ïðàâèòü] Ñì. òàêæå


Íàáîðû ðàñøèðåíèÿ áàçîâûõ èíñòðóêöèé ïðîöåññîðîâ ñåìåéñòâà x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES


Ïðîñòðàíñòâà èì¸í

Âàðèàíòû
Ïðîñìîòðû
Äåéñòâèÿ