อ่าน 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!