อ่าน 5 นาที
3DNow!
3DNow! เป็นส่วนขยายที่เลิกใช้แล้วของ ชุดคำสั่ง x86 ที่พัฒนาโดย Advanced Micro Devices (AMD) โดยเพิ่ม คำสั่ง single instruction multiple data (SIMD) ลงในชุดคำสั่ง x86 พื้นฐาน...
3DNow!
| บริษัทออกแบบ | อุปกรณ์ไมโครขั้นสูง |
|---|---|
| แนะนำ | 1998 |
| พิมพ์ | สถาปัตยกรรมชุดคำสั่ง |
3DNow!เป็นส่วนขยายที่เลิกใช้แล้วของชุดคำสั่งx86 ที่พัฒนาโดยAdvanced Micro Devices (AMD) โดยเพิ่ม คำสั่ง single instruction multiple data (SIMD) ลงในชุดคำสั่ง x86 พื้นฐาน ทำให้สามารถประมวลผลเวกเตอร์ของ การดำเนินการเวกเตอร์ จุดลอยตัวโดยใช้รีจิสเตอร์เวกเตอร์การปรับปรุงนี้ช่วยเพิ่มประสิทธิภาพของแอปพลิเคชันที่เน้นกราฟิกจำนวนมาก ไมโครโปรเซสเซอร์ตัวแรกที่ใช้ 3DNow! คือAMD K6-2ซึ่งเปิดตัวในปี 1998 ในแอปพลิเคชันที่เหมาะสม การปรับปรุงนี้ทำให้ความเร็วเพิ่มขึ้นประมาณ 2–4 เท่า[ 1 ]
อย่างไรก็ตาม ชุดคำสั่งดังกล่าวไม่ได้รับความนิยมมากนัก และ AMD ประกาศในเดือนสิงหาคม 2010 ว่าจะยกเลิกการสนับสนุน 3DNow! ในโปรเซสเซอร์ AMD รุ่นต่อๆ ไป ยกเว้นคำสั่งสองคำสั่ง คือและPREFETCH[ 2 ] คำสั่งทั้งสองนี้ยังมีอยู่ในโปรเซสเซอร์ Intel Bay-Trail ด้วย[ 3 ]PREFETCHW
ประวัติศาสตร์
3DNow! ถูกพัฒนาขึ้นในช่วงเวลาที่กราฟิก 3 มิติเริ่มเป็นที่นิยมในมัลติมีเดียและเกมบนพีซี การแสดงผลกราฟิก 3 มิติแบบเรียลไทม์นั้นขึ้นอยู่กับหน่วยประมวลผลทศนิยม (FPU) ของซีพียูหลักเป็นอย่างมากในการ คำนวณ ทศนิยมซึ่งเป็นงานที่โปรเซสเซอร์ K6 ของ AMD ทำได้ไม่ดีเท่าโปรเซสเซอร์ Intel Pentium II คู่แข่ง
ชุดคำสั่ง 3DNow! เป็นการปรับปรุง ชุดคำสั่ง MMX โดยเพิ่มรีจิสเตอร์ SIMD ของ MMX เพื่อรองรับการคำนวณทางคณิตศาสตร์ทั่วไป (บวก/ลบ/คูณ) บนข้อมูลจุดลอยตัวความแม่นยำเดี่ยว (32 บิต) ซอฟต์แวร์ที่เขียนขึ้นเพื่อใช้ 3DNow! ของ AMD แทนที่จะใช้ FPU x87 ที่ช้ากว่า สามารถทำงานได้เร็วขึ้นถึงสี่เท่า ขึ้นอยู่กับการผสมผสานของคำสั่ง
เวอร์ชัน
3DNow!
การใช้งานเทคโนโลยี 3DNow! ครั้งแรกประกอบด้วยคำสั่งใหม่ 21 คำสั่งที่รองรับ การคำนวณเลขทศนิยม แบบ SIMDรูปแบบข้อมูล 3DNow! เป็น เลขทศนิยมแบบ ความแม่นยำเดี่ยว (single-precision ) ที่บรรจุอยู่ภายใน ชุดคำสั่ง 3DNow! ยังรวมถึงการดำเนินการสำหรับเลขจำนวนเต็มแบบ SIMD การดึงข้อมูลล่วงหน้า และการสลับ MMX เป็นเลขทศนิยมที่เร็วขึ้น ต่อมาIntelได้เพิ่มคำสั่งที่คล้ายกัน (แต่ไม่เข้ากัน) ลงในPentium IIIซึ่งรู้จักกันในชื่อSSE (Streaming SIMD Extensions)
คำสั่งการคำนวณเลขทศนิยมของ 3DNow! มีดังต่อไปนี้:
PI2FD– การแปลงจำนวนเต็ม 32 บิตแบบแพ็คเป็นเลขทศนิยมPF2ID– การแปลงเลขทศนิยมแบบแพ็คเป็นจำนวนเต็ม 32 บิตPFCMPGE– การเปรียบเทียบค่าทศลอยแบบแพ็ค มากกว่าหรือเท่ากับPFCMPGT– การเปรียบเทียบจุดลอยตัวแบบแพ็ค ยิ่งมากขึ้นPFCMPEQ– การเปรียบเทียบจุดลอยตัวแบบแพ็ค เท่ากันPFACC– การสะสมจุดลอยตัวแบบแพ็คPFADD– การบวกเลขทศนิยมแบบแพ็คPFSUB– การลบเลขทศนิยมแบบแพ็คPFSUBR– การลบแบบย้อนกลับจุดลอยตัวแบบแพ็คPFMIN– ค่าต่ำสุดของจุดลอยตัวแบบแพ็คPFMAX– ค่าสูงสุดของจุดลอยตัวแบบแพ็คPFMUL– การคูณเลขทศนิยมแบบแพ็คPFRCP– การประมาณค่าผกผันแบบจุดลอยตัวแบบแพ็คPFRSQRT– การประมาณค่ารากที่สองผกผันแบบจุดลอยตัวแบบแพ็คPFRCPIT1– ค่าผกผันของเลขทศนิยมแบบแพ็ค ขั้นตอนการวนซ้ำครั้งแรกPFRSQIT1– รากที่สองผกผันของเลขทศนิยมแบบแพ็ค ขั้นตอนการวนซ้ำครั้งแรกPFRCPIT2– ค่าผกผัน/รากที่สองของค่าผกผันแบบแพ็ก (Packed floating-point reciprocal/reciprocal square root) ขั้นตอนการวนซ้ำครั้งที่สอง
คำสั่งสำหรับการคำนวณจำนวนเต็มใน 3DNow! มีดังต่อไปนี้:
PAVGUSB– การหาค่าเฉลี่ยของจำนวนเต็มไม่ระบุเครื่องหมาย 8 บิตแบบแพ็คPMULHRW– การคูณจำนวนเต็ม 16 บิตแบบแพ็คพร้อมการปัดเศษ
คำแนะนำในการเพิ่มประสิทธิภาพการทำงานของ 3DNow! มีดังต่อไปนี้:
FEMMS– การเข้า/ออกของ MMX หรือสถานะจุดลอยตัวที่รวดเร็วยิ่งขึ้นPREFETCH/PREFETCHW– ดึงข้อมูลล่วงหน้าอย่างน้อย 32 ไบต์ต่อบรรทัดลงในแคชข้อมูล L1 (นี่เป็นคำสั่งเดียวที่ยังไม่ถูกยกเลิก)
ส่วนขยาย 3DNow!
มีหลักฐานน้อยมากหรือไม่มีเลยว่า 3DNow! เวอร์ชันที่สองเคยได้รับการตั้งชื่อทางการค้าอย่างเป็นทางการ ซึ่งนำไปสู่ความสับสนในเอกสารที่อ้างถึงชุดคำสั่งใหม่นี้ คำที่ใช้กันทั่วไปคือExtended 3DNow! , Enhanced 3DNow!และ3DNow!+วลี "Enhanced 3DNow!" สามารถพบได้ในบางส่วนของเว็บไซต์ AMD แต่การใช้ตัวพิมพ์ใหญ่ของ "Enhanced" ดูเหมือนจะเป็นเพียงหลักไวยากรณ์หรือใช้เพื่อเน้นย้ำโปรเซสเซอร์ที่อาจมีหรือไม่มีส่วนขยายเหล่านี้ (ซึ่งที่โดดเด่นที่สุดคือการอ้างอิงถึงหน้าเกณฑ์มาตรฐานสำหรับ K6-III-P ที่ไม่มีส่วนขยายเหล่านี้) [ 4 ] [ 5 ]
ส่วนขยายของชุดคำสั่ง 3DNow! นี้ถูกนำมาใช้กับ โปรเซสเซอร์ Athlon รุ่นแรก โดย Athlon เพิ่มคำสั่ง 3DNow! ใหม่ 5 คำสั่ง และคำสั่ง MMX ใหม่ 19 คำสั่ง ต่อมา โปรเซสเซอร์K6-2+และK6-III+ (ซึ่งมุ่งเป้าไปที่ตลาดอุปกรณ์พกพา) ได้รวมคำสั่ง 3DNow! ใหม่ 5 คำสั่งไว้ด้วย แต่ไม่ได้เพิ่มคำสั่ง MMX ใหม่ 19 คำสั่ง คำสั่ง 3DNow! ใหม่ถูกเพิ่มเข้ามาเพื่อเพิ่มประสิทธิภาพการประมวลผลสัญญาณดิจิทัล (DSP ) ส่วนคำสั่ง MMX ใหม่ถูกเพิ่มเข้ามาเพื่อเพิ่มประสิทธิภาพการประมวลผลสื่อสตรีมมิ่ง
คำสั่ง MMX ใหม่ 19 คำสั่งเป็นส่วนย่อยของชุดคำสั่ง SSE ของ Intel ในคู่มือทางเทคนิคของ AMD นั้น AMD แยกคำสั่งเหล่านี้ออกจากส่วนขยาย 3DNow! [ 4 ]อย่างไรก็ตาม ในเอกสารผลิตภัณฑ์สำหรับลูกค้าของ AMD การแยกนี้ไม่ชัดเจนนัก โดยประโยชน์ของคำสั่งใหม่ทั้ง 24 คำสั่งนั้นมาจากเทคโนโลยี 3DNow! ที่ได้รับการปรับปรุง[ 6 ]สิ่งนี้ทำให้นักโปรแกรมเมอร์ตั้งชื่อคำสั่ง MMX ใหม่ 19 คำสั่งขึ้นเอง ชื่อที่พบบ่อยที่สุดคือInteger SSE ( ISSE ) [ 7 ] SSEMMXและMMX2ยังพบได้ในเอกสารตัวกรองวิดีโอจากภาคส่วนสาธารณะ ISSE อาจหมายถึง Internet SSE ซึ่งเป็นชื่อแรกเริ่มของ SSE ด้วย
คำแนะนำสำหรับส่วนขยาย 3DNow! DSP มีดังต่อไปนี้:
PF2IW– การแปลงค่าทศนิยมแบบแพ็คเป็นคำจำนวนเต็มพร้อมการขยายเครื่องหมายPI2FW– การแปลงคำจำนวนเต็มแบบแพ็คเป็นเลขทศนิยมPFNACC– การสะสมค่าลบแบบจุดลอยตัวที่บรรจุไว้PFPNACC– การสะสมค่าบวกและลบแบบผสมจุดลอยตัวแบบแพ็คPSWAPD– การแลกเปลี่ยนแบบแพ็คคู่คำ
คำสั่งส่วนขยาย MMX (Integer SSE) มีดังต่อไปนี้:
MASKMOVQ– การจัดเก็บข้อมูลแบบสตรีมมิ่ง (ข้ามแคช) โดยใช้ไบต์มาสก์MOVNTQ– สตรีมมิ่ง (ข้ามแคช) สโตร์PAVGB– ค่าเฉลี่ยแบบแพ็คของไบต์ที่ไม่มีเครื่องหมายPAVGW– ค่าเฉลี่ยแบบบรรจุของคำที่ไม่ระบุเครื่องหมายPMAXSW– บรรจุคำที่ลงนามสูงสุดPMAXUB– ขนาดไบต์ที่ไม่ระบุเครื่องหมายสูงสุดที่บรรจุไว้PMINSW– จำนวนคำที่ลงนามขั้นต่ำที่บรรจุแล้วPMINUB– บรรจุไบต์ขั้นต่ำที่ไม่มีเครื่องหมายPMULHUW– บรรจุคำที่ไม่ระบุเครื่องหมายสูงหลายคำPSADBW– ผลรวมแบบแพ็คของความแตกต่างสัมบูรณ์ของไบต์PSHUFW– คำศัพท์สับเปลี่ยนที่แน่นPEXTRW– แยกคำลงในรีจิสเตอร์จำนวนเต็มPINSRW– แทรกคำจากรีจิสเตอร์จำนวนเต็มPMOVMSKB– ย้ายไบต์มาสก์ไปยังรีจิสเตอร์จำนวนเต็มPREFETCHNTA– ดึงข้อมูลล่วงหน้าโดยใช้ข้อมูลอ้างอิง NTAPREFETCHT0– ดึงข้อมูลล่วงหน้าโดยใช้ข้อมูลอ้างอิง T0PREFETCHT1– ดึงข้อมูลล่วงหน้าโดยใช้ข้อมูลอ้างอิง T1PREFETCHT2– ดึงข้อมูลล่วงหน้าโดยใช้ข้อมูลอ้างอิง T2SFENCE– รั้วร้านค้า
3DNow! มืออาชีพ
3DNow! Professionalเป็นชื่อทางการค้าที่ใช้เพื่อระบุโปรเซสเซอร์ที่รวมเทคโนโลยี 3DNow! เข้ากับชุดคำสั่ง SSE ที่สมบูรณ์ (เช่น SSE, SSE2 หรือ SSE3) [ 8 ] Athlon XPเป็นโปรเซสเซอร์ตัวแรกที่ใช้ชื่อทางการค้า 3DNow! Professional และเป็นผลิตภัณฑ์แรกในตระกูล Athlon ที่รองรับชุดคำสั่ง SSE ที่สมบูรณ์ (รวมทั้งหมด: คำสั่ง 3DNow! ดั้งเดิม 21 คำสั่ง; คำสั่ง DSP ส่วนขยาย 3DNow! 5 คำสั่ง; คำสั่งส่วนขยาย MMX 19 คำสั่ง; และคำสั่ง SSE เพิ่มเติม 52 คำสั่งเพื่อความเข้ากันได้กับ SSE อย่างสมบูรณ์) [ 9 ]
3DNow! และ Geode GX/LX
โปรเซสเซอร์Geode GX และ Geode LXเพิ่มคำสั่ง 3DNow! ใหม่สองคำสั่ง ซึ่งไม่มีในโปรเซสเซอร์อื่นๆ ทั้งหมด
คำแนะนำ "ระดับมืออาชีพ" ของ 3DNow! สำหรับ Geode GX/LX มีดังต่อไปนี้:
PFRSQRTV– การประมาณค่ารากที่สองผกผันสำหรับคู่ของเลขทศลอย 32 บิตPFRCPV– การประมาณค่าผกผันสำหรับคู่ของเลขทศลอย 32 บิต
ข้อดีและข้อเสีย
ข้อดีอย่างหนึ่งของ 3DNow! คือสามารถบวกหรือคูณตัวเลขสองตัวที่เก็บอยู่ในรีจิสเตอร์ เดียวกัน ได้ ในขณะที่ SSE นั้น ตัวเลขแต่ละตัวสามารถบวกหรือคูณได้เฉพาะกับตัวเลขที่อยู่ในตำแหน่งเดียวกันในรีจิสเตอร์อื่นเท่านั้น ความสามารถนี้ ซึ่งในศัพท์ของ Intel เรียกว่า " แนวนอน"เป็นส่วนเพิ่มเติมที่สำคัญที่สุดของชุดคำสั่ง SSE3
ข้อเสียของ 3DNow! คือคำสั่ง 3DNow! และคำสั่ง MMX ใช้ไฟล์รีจิสเตอร์เดียวกัน ในขณะที่ SSE เพิ่มรีจิสเตอร์อิสระใหม่ 8 ตัว ( XMM0– XMM7)
เนื่องจากรีจิสเตอร์ MMX/3DNow! ใช้ร่วมกันโดย FPU x87 มาตรฐาน คำสั่ง 3DNow! และคำสั่ง x87 จึงไม่สามารถทำงานพร้อมกันได้ อย่างไรก็ตาม เนื่องจากมีการกำหนดชื่อแทนให้กับ FPU x87 สถานะของรีจิสเตอร์ 3DNow! และ MMX จึงสามารถบันทึกและเรียกคืนได้โดยใช้คำสั่ง x87 แบบดั้งเดิมF(N)SAVEการF(N)RSTORจัดเรียงนี้ทำให้ระบบปฏิบัติการสามารถรองรับ 3DNow! ได้โดยไม่ต้องแก้ไขเพิ่มเติม ในขณะที่รีจิสเตอร์ SSE จำเป็นต้องได้รับการสนับสนุนจากระบบปฏิบัติการอย่างชัดเจนเพื่อบันทึกและเรียกคืนรีจิสเตอร์ XMM ใหม่ได้อย่างถูกต้อง (ผ่านคำสั่งที่เพิ่มเข้าFXSAVEมาFXRSTOR)
คำสั่ง FX* จาก SSE เป็นชุดคำสั่งที่ครอบคลุมการทำงานของคำสั่ง save และ restore ของ x87 รุ่นเก่า คำสั่งเหล่านี้สามารถบันทึกสถานะรีจิสเตอร์ของ SSE และ x87 ได้ (ดังนั้นจึงสามารถใช้งานได้กับ MMX และ 3DNow! ในกรณีที่รองรับ)
บนแกน AMD Athlon XPและ K8 (เช่นAthlon 64 ) โปรแกรมเมอร์ภาษาแอสเซมบลีได้สังเกตว่าสามารถรวมคำสั่ง 3DNow! และ SSE เพื่อลดแรงดันรีจิสเตอร์ได้ แต่ในทางปฏิบัติการปรับปรุงประสิทธิภาพทำได้ยากเนื่องจากคำสั่งเหล่านี้ทำงานบนหน่วยฟังก์ชันที่ใช้ร่วมกัน[ 10 ]
โปรเซสเซอร์ที่รองรับ 3DNow!
- โปรเซสเซอร์ AMDทุกรุ่นหลังจากK6-2 (ซึ่งใช้สถาปัตยกรรม K6 เป็นพื้นฐาน) ได้แก่ ตระกูลสถาปัตยกรรม Athlon, Athlon 64 และ Phenom
- ไม่รองรับในโปรเซสเซอร์สถาปัตยกรรม Bulldozer, Bobcat และ Zen รวมถึงโปรเซสเซอร์ที่พัฒนาต่อยอดจากสถาปัตยกรรมเหล่านี้
- โปรเซสเซอร์ AMD APUรุ่นสุดท้ายที่รองรับ 3DNow! คือ A8-3870K ซึ่งใช้ สถาปัตยกรรม Llanoและเป็น APU เพียงรุ่นเดียวที่มีคำสั่ง 3DNow! เนื่องจากรุ่น Bobcat ขึ้นไปไม่รองรับคำสั่งนี้
- National Semiconductor Geode GX2ซึ่งต่อมาเปลี่ยนชื่อเป็น AMD Geode
- VIA C3 (หรือเรียกอีกอย่างว่าCyrix III ) แกน "Samuel", "Samuel 2", "Ezra" และ "Eden ESP"
- ไอดีที วินชิป 2, 3
อ่านเพิ่มเติม
- Case, Brian (1 มิถุนายน 1998). "3DNow เพิ่มประสิทธิภาพ 3D สำหรับโปรเซสเซอร์ที่ไม่ใช่ Intel". Microprocessor Report .
- Oberman, S.; Favor, G.; Weber, F. (มีนาคม 1999). "เทคโนโลยี AMD 3DNow: สถาปัตยกรรมและการใช้งาน" . IEEE Micro .
ลิงก์ภายนอก
- 3DNow Technology Partners , เก็บถาวรจากต้นฉบับ (ถูกลบออกจากเว็บไซต์ของ AMD ในช่วงต้นปี 2544)
- คู่มือการพอร์ตคำสั่ง AMD 3DNow (PDF)ที่เก็บถาวรจากต้นฉบับ (ถูกลบออกจากเว็บไซต์ของ AMD ในปี 2014)
- คู่มือการใช้งานเทคโนโลยี 3DNow
- คู่มือส่วนขยาย AMD สำหรับชุดคำสั่ง 3DNow และ MMX
- เอกสารข้อมูลจำเพาะของโปรเซสเซอร์ AMD Geode LX
- AMD 3DNow! SDK มีนาคม 1999 (เก็บถาวร)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ 3DNow!
3DNow! เป็นส่วนขยายที่เลิกใช้แล้วของ ชุดคำสั่ง x86 ที่พัฒนาโดย Advanced Micro Devices (AMD) โดยเพิ่ม คำสั่ง single instruction multiple data (SIMD) ลงในชุดคำสั่ง x86 พื้นฐาน...
ประวัติศาสตร์
3DNow! ถูกพัฒนาขึ้นในช่วงเวลาที่ กราฟิก 3 มิติ เริ่มเป็นที่นิยมในมัลติมีเดียและเกมบนพีซี การแสดงผลกราฟิก 3 มิติแบบเรียลไทม์นั้นขึ้นอยู่กับหน่วยประมวลผลทศนิยม (FPU) ของซีพียูหลักเป็นอย่างมากในการ คำนวณ ทศนิยม ซึ่งเป็นงานที่ โปรเซสเซอร์ K6 ของ AMD...
3DNow!
การใช้งานเทคโนโลยี 3DNow! ครั้งแรกประกอบด้วยคำสั่งใหม่ 21 คำสั่งที่รองรับ การคำนวณเลขทศนิยม แบบ SIMD รูปแบบข้อมูล 3DNow! เป็น เลขทศนิยมแบบ ความแม่นยำเดี่ยว (single-precision ) ที่บรรจุอยู่ภายใน ชุดคำสั่ง 3DNow!
ส่วนขยาย 3DNow!
มีหลักฐานน้อยมากหรือไม่มีเลยว่า 3DNow! เวอร์ชันที่สองเคยได้รับการตั้งชื่อทางการค้าอย่างเป็นทางการ ซึ่งนำไปสู่ความสับสนในเอกสารที่อ้างถึงชุดคำสั่งใหม่นี้ คำที่ใช้กันทั่วไปคือ Extended 3DNow! , Enhanced 3DNow! และ 3DNow!+ วลี "Enhanced 3DNow!