ซีพียู64บิต
ในสถาปัตยกรรมคอมพิวเตอร์ , ประมวลผลแบบ 64 บิตคือการใช้การประมวลผลที่มี DataPath ความกว้างจำนวนเต็มขนาดและหน่วยความจำที่อยู่ในความกว้าง 64 บิต (แปดoctets ) นอกจากนี้ 64 บิตCPUและALU สถาปัตยกรรมเป็นคนที่จะขึ้นอยู่กับการลงทะเบียน , รถโดยสารที่อยู่หรือข้อมูลรถเมล์ที่มีขนาดที่ จากมุมมองของซอฟต์แวร์ประมวลผลแบบ 64 บิตหมายความว่าการใช้รหัสที่มี 64 บิตที่อยู่หน่วยความจำเสมือน
ระยะ64 บิตเป็นตัวบอกให้กับรุ่นของเครื่องคอมพิวเตอร์ที่ประมวลผล 64 บิตเป็นบรรทัดฐาน 64 บิตเป็นคำขนาดที่กำหนดบางชั้นเรียนของสถาปัตยกรรมคอมพิวเตอร์, รถโดยสาร, หน่วยความจำและซีพียูและนามสกุลซอฟต์แวร์ที่ทำงานกับพวกเขา ซีพียู 64 บิตมีอยู่ในซูเปอร์คอมพิวเตอร์ตั้งแต่ปี 1970 ( เครย์-1 , 1975) และในRISC -based เวิร์กสเตชันและเซิร์ฟเวอร์ตั้งแต่ช่วงต้นทศวรรษ 1990 สะดุดตาธันวาคมอัลฟา , อาทิตย์ UltraSPARC , บริษัท ฟูจิตสึ SPARC64และIBM RS64และPOWER3และต่อมาพาวเวอร์ ไมโครโปรเซสเซอร์ . ในปี 2003 ซีพียู 64 บิตได้รับการแนะนำให้รู้จักกับ (ก่อนหน้านี้32 บิต ) สาขาคอมพิวเตอร์ส่วนบุคคลเวทีในรูปแบบของx86-64และ 64 บิตPowerPCประมวลผลสถาปัตยกรรมและในปี 2012 แม้เป็นสถาปัตยกรรม ARMการกำหนดเป้าหมายมาร์ทโฟนและแท็บเล็ต คอมพิวเตอร์ขายครั้งแรกที่ 20 กันยายน 2013 ในiPhone 5Sขับเคลื่อนโดยARMv8- A7 แอปเปิ้ล SoC .
64 บิตลงทะเบียนสามารถจัดเก็บ 2 (มากกว่า 18 quintillionหรือ 1.8 × 10 19 ) ค่าที่แตกต่างกัน ดังนั้นโปรเซสเซอร์ที่มีหน่วยความจำที่อยู่ 64 บิตโดยตรงสามารถเข้าถึง 2 64ไบต์ (= 16 exbibytes ) ของไบต์แอดเดรสหน่วยความจำ
โดยไม่ต้องมีคุณสมบัติเพิ่มเติมสถาปัตยกรรมคอมพิวเตอร์ 64 บิตโดยทั่วไปมีจำนวนเต็มและที่อยู่ที่ลงทะเบียนที่มี 64 บิตกว้างให้การสนับสนุนโดยตรงสำหรับชนิดข้อมูลแบบ 64 บิตและที่อยู่ อย่างไรก็ตามซีพียูอาจจะมีภายนอกข้อมูลรถเมล์หรือรถโดยสารที่อยู่ที่มีขนาดแตกต่างจากการลงทะเบียนแม้ขนาดใหญ่ (32 บิตPentiumมี 64 บิตบัสข้อมูลตัวอย่างเช่น[ 2 ] ) ระยะนี้ยังอาจหมายถึงขนาดของชนิดข้อมูลในระดับต่ำเช่น 64 บิตลอยจุดหมายเลข
ลงทะเบียนประมวลผลโดยทั่วไปจะแบ่งออกเป็นหลายกลุ่มจำนวนเต็ม , ทศนิยม , SIMD , การควบคุมและการลงทะเบียนมักจะเป็นพิเศษสำหรับการคำนวณที่อยู่ที่อาจมีการใช้งานที่หลากหลายและชื่อเช่นที่อยู่ , ดัชนีหรือฐานลงทะเบียน . อย่างไรก็ตามในการออกแบบที่ทันสมัยและฟังก์ชั่นเหล่านี้มักจะดำเนินการโดยเพิ่มเติมวัตถุประสงค์ทั่วไปจำนวนเต็มลงทะเบียน ในการประมวลผลมากที่สุดเพียงจำนวนเต็มและ / หรือที่อยู่ที่ลงทะเบียนสามารถนำมาใช้เพื่อรับมือกับข้อมูลที่อยู่ในหน่วยความจำ ประเภทอื่น ๆ ของการลงทะเบียนไม่สามารถ ขนาดของการลงทะเบียนเหล่านี้จึงมักจะ จำกัด จำนวนของหน่วยความจำแอดเดรสโดยตรงแม้หากมีการลงทะเบียนเช่นการลงทะเบียนลอยจุดที่มีความกว้าง
ส่วนใหญ่ที่มีประสิทธิภาพสูง 32 บิตและ 64 บิตประมวลผล (ข้อยกเว้นที่น่าสังเกตบางอย่างที่มีอายุมากกว่าหรือฝังARMและ 32 บิตMIPSซีพียู) ได้รวมฮาร์ดแวร์ลอยจุดซึ่งมักจะเป็น แต่ไม่เสมอไปขึ้นอยู่กับหน่วย 64 บิตของข้อมูล ตัวอย่างเช่นแม้ว่าx86 / x87สถาปัตยกรรมมีคำแนะนำที่มีความสามารถในการโหลดและการจัดเก็บ 64 บิต (และ 32 บิต) ค่าทศนิยมในหน่วยความจำข้อมูลจุดลอยภายในและลงทะเบียนรูปแบบ 80 บิตกว้างในขณะที่วัตถุประสงค์ทั่วไป ลงทะเบียนเป็น 32 บิตกว้าง ในทางตรงกันข้าม 64 บิตอัลฟาครอบครัวใช้ 64 บิตข้อมูลทศนิยมและรูปแบบ (เช่นเดียวกับ 64 บิตลงทะเบียนจำนวนเต็ม) ลงทะเบียน
เครื่องคอมพิวเตอร์หลายชุดคำสั่งได้รับการออกแบบเพื่อให้เป็นจำนวนเต็มลงทะเบียนเพียงครั้งเดียวสามารถเก็บที่อยู่ไปยังสถานที่ในทางกายภาพหรือคอมพิวเตอร์ใด ๆหน่วยความจำเสมือน . ดังนั้นจำนวนรวมของที่อยู่ในความทรงจำมักจะถูกกำหนดโดยความกว้างของการลงทะเบียนเหล่านี้ ไอบีเอ็ม ระบบ / 360ของปี 1960 เป็นคอมพิวเตอร์ 32 บิตก่อน; มันมี 32 บิตลงทะเบียนจำนวนเต็มแม้ว่ามันจะใช้เพียงเพื่อต่ำ 24 บิตของคำที่อยู่ที่ส่งผลให้ 16 MB [ 16 × 1024 2ไบต์ ] พื้นที่ที่อยู่ 32 บิตsuperminicomputersเช่นธันวาคม VAXกลายเป็นเรื่องธรรมดาในปี 1970 และไมโครโปรเซสเซอร์ 32 บิตเช่นครอบครัวของโมโตโรล่า 68000และสมาชิก 32 บิตของครอบครัว x 86เริ่มต้นด้วยIntel 80386 , ปรากฏตัวขึ้นในช่วงกลาง 1980 ทำให้ 32 บิตบางสิ่งบางอย่างของพฤตินัยฉันทามติเป็นขนาดลงทะเบียนที่สะดวก
32 บิตที่อยู่ลงทะเบียนหมายความว่า 2 ที่อยู่หรือ 4 GBของแรมจะได้รับการอ้างอิง ในขณะที่สถาปัตยกรรมเหล่านี้ถูกคิดค้น 4 GB หน่วยความจำก็ไกลเกินกว่าปริมาณปกติ (4 MB) ในการติดตั้งว่านี้ได้รับการพิจารณาให้เป็นพอ "เฮดรูม" สำหรับที่อยู่ 4290000000 อยู่มีการพิจารณาขนาดที่เหมาะสมที่จะทำงานกับอีกเหตุผลที่สำคัญ: 4290000000 จำนวนเต็มมีเพียงพอที่จะกำหนดอ้างอิงที่ไม่ซ้ำกับหน่วยงานที่มากที่สุดในการใช้งานเช่นฐานข้อมูล .
บางซุปเปอร์สถาปัตยกรรมของปี 1970 และ 1980 เช่นเครย์ 1 ที่ใช้ลงทะเบียนได้ถึง 64 บิตกว้างและสนับสนุน 64 บิตคณิตศาสตร์แม้ว่าพวกเขาจะไม่สนับสนุน 64 บิตที่อยู่ ในกลางปี 1980, i860 อินเทลการพัฒนาเริ่มสูงสุดใน (สายเกินไป[ 5 ]สำหรับ Windows NT) 1989 ปล่อย; i860 มี 32 บิตลงทะเบียนจำนวนเต็มและ 32 บิตที่อยู่จึงไม่ได้ประมวลผลอย่างเต็มที่ 64 บิตแม้ว่าหน่วยกราฟิกที่สนับสนุน 64 บิตคณิตศาสตร์อย่างไรก็ตาม 32 บิตยังคงปกติจนถึงต้นปี 1990 เมื่อลดลงอย่างต่อเนื่องในค่าใช้จ่ายของหน่วยความจำที่นำไปสู่การติดตั้งที่มีปริมาณของแรมใกล้ 4 GB และการใช้พื้นที่หน่วยความจำเสมือนเกิน 4 GB เพดานกลายเป็นที่น่าพอใจสำหรับการจัดการบางประเภทของปัญหา ในการตอบสนอง MIPS และพัฒนาธันวาคม 64 บิตสถาปัตยกรรมของไมโครโพรเซสเซอร์แรกสำหรับระดับไฮเอนด์เวิร์กสเตชันและเซิร์ฟเวอร์เครื่อง โดยในช่วงกลางทศวรรษที่ 1990, HAL ระบบคอมพิวเตอร์ , Sun Microsystems , IBM , ซิลิคอนกราฟฟิกส์และฮิวเลตต์แพคการ์ดได้พัฒนาสถาปัตยกรรม 64 บิตสำหรับเวิร์กสเตชันและเซิร์ฟเวอร์ระบบของพวกเขา ข้อยกเว้นที่น่าสังเกตแนวโน้มนี้เป็นเมนเฟรมจาก IBM ซึ่งจากนั้นจะใช้ข้อมูลที่ 32 บิตและขนาดที่อยู่ 31 บิต เมนเฟรมของไอบีเอ็มไม่ได้รวมการประมวลผล 64 บิตจนถึงปี 2000 ในช่วงปี 1990 ที่มีต้นทุนต่ำหลายไมโครโปรเซสเซอร์ 64 บิตถูกนำมาใช้ในอุปกรณ์อิเล็กทรอนิกส์และการใช้งานที่ฝัง ยวดนินเทน 64และPlayStation 2มีไมโครโปรเซสเซอร์ 64 บิตก่อนที่จะนำพวกเขาในเครื่องคอมพิวเตอร์ส่วนบุคคล เครื่องพิมพ์ระดับไฮเอนด์และอุปกรณ์เครือข่ายเช่นเดียวกับคอมพิวเตอร์อุตสาหกรรมนอกจากนี้ยังใช้ไมโครโปรเซสเซอร์ 64 บิตเช่นควอนตัมอุปกรณ์ผล R5000 . 64 บิทเริ่มที่จะลอยลงไปที่สก์ท็อปคอมพิวเตอร์ส่วนบุคคลจาก 2003 เป็นต้นไปเมื่อบางรุ่นในแอปเปิ้ลของสายแมคอินทอชเปลี่ยนไปPowerPC 970ประมวลผล (เรียกว่า "G5" โดยแอปเปิ้ล) และเอเอ็มดีเปิดตัวครั้งแรกของ 64 บิตx 86- 64หน่วยประมวลผล
- 1961
- IBM ให้ยืด IBM 7030 ซูเปอร์คอมพิวเตอร์ซึ่งใช้ 64 บิตข้อมูลและคำพูดคำสอน 32 หรือ 64 บิต
- 1974
- การควบคุม Data Corporationเปิดตัวดาว CDC-100ซูเปอร์คอมพิวเตอร์เวกเตอร์ซึ่งใช้สถาปัตยกรรม 64 บิต (ระบบ CDC ก่อนหน้านี้อยู่บนพื้นฐานของสถาปัตยกรรม 60 บิต)
- ระหว่างคอมพิวเตอร์ จำกัดเปิดตัวICL 2900 ซีรีส์กับ 32 บิต 64 บิตและ 128 บิตเติมเต็มสองจำนวนเต็ม; ; 64 บิตและจุดลอย 128 บิต 32 บิต 64 บิตและ 128 บิตทศนิยมบรรจุและ 128 บิตสะสมทะเบียน สถาปัตยกรรมที่รอดมาได้ผ่านความสำเร็จของ ICL และฟูจิตสึเครื่อง ล่าสุดเป็นทางด้านฟูจิตสึซูเปอร์โนวาซึ่งจำลองสภาพแวดล้อมเดิม 64 บิตหน่วยประมวลผลอินเทล
- 1976
- เครย์วิจัยให้เป็นครั้งแรกที่เครย์-1ซูเปอร์คอมพิวเตอร์ซึ่งจะขึ้นอยู่กับสถาปัตยกรรม 64 บิตและจะเป็นพื้นฐานสำหรับการต่อมาเครย์ซุปเปอร์เวกเตอร์
- 1983
- Elxsiเปิดตัวขนาน Elxsi 6400 minisupercomputer . สถาปัตยกรรม Elxsi มี 64 บิตลงทะเบียนข้อมูล แต่พื้นที่ที่อยู่ 32 บิต
- 1989
- Intelเปิดตัวอินเทล i860 RISCประมวลผล วางตลาดเป็น "64 บิตไมโคร" มันก็เป็นหลักสถาปัตยกรรม 32 บิตเพิ่มกับหน่วยกราฟิก 3D ที่มีความสามารถของการดำเนินงานจำนวนเต็ม 64 บิต[ 9 ]
- 1991
- MIPS เทคโนโลยีการผลิตไมโครโปรเซสเซอร์ 64 บิตแรกR4000ซึ่งดำเนิน MIPS III ISA, การแก้ไขที่สามของสถาปัตยกรรม MIPS . CPU ที่ใช้ในเอสจีไอเวิร์คสเตชั่กราฟิกเริ่มต้นด้วยไอริสสีแดงเข้ม . เคนดอลสแควร์การวิจัยของพวกเขาส่งมอบ ครั้งแรกของซูเปอร์คอมพิวเตอร์ KSR1 ขึ้นอยู่กับ 64 บิตสถาปัตยกรรมกรรมสิทธิ์ RISC ที่ใช้โปรเซสเซอร์OSF / 1 .
- 1992
- อุปกรณ์ดิจิตอลคอร์ปอเรชั่น (ธันวาคม) แนะนำ 64 บิตบริสุทธิ์อัลฟาสถาปัตยกรรมที่เกิดจากPRISMโครงการ
- 1993
- อาตาริแนะนำอาตาริจากัวร์ วิดีโอเกมคอนโซลซึ่งรวมถึง 64 บิตบางเส้นทางข้อมูลทั้งในสถาปัตยกรรม
- 1994
- Intelประกาศแผนสำหรับ 64 บิตIA-64สถาปัตยกรรม (พัฒนาร่วมกับHewlett-Packard ) เป็นทายาทที่ 32 บิตของIA-32หน่วยประมวลผล วันที่ 1998-1999 การเปิดตัวมีการกำหนดเป้าหมาย
- 1995
- ซันเปิดตัว 64 บิตSPARCโปรเซสเซอร์UltraSPARC . ฟูจิตสึถือหุ้นระบบคอมพิวเตอร์ HALเปิดตัวเวิร์คสเตชั่ขึ้นอยู่กับ CPU แบบ 64 บิตที่ออกแบบมาฮาลเป็นอิสระรุ่นแรกSPARC64 . IBM รุ่น A10 และ A30 ไมโครโปรเซสเซอร์ PowerPC 64 บิตเป็นหน่วยประมวลผลไอบีเอ็มยังเปิดตัว 64 บิตAS / 400อัพเกรดระบบที่สามารถแปลงระบบปฏิบัติการฐานข้อมูลและการประยุกต์ใช้
- 1996
- นินเทนแนะนำNintendo 64คอนโซลวิดีโอเกมที่สร้างขึ้นรอบตัวแปรต้นทุนต่ำของ MIPS R4000 เอชพีเปิดตัวการดำเนินงานของ 64 บิตรุ่น 2.0 ของPA-RISCสถาปัตยกรรมโปรเซสเซอร์PA-8000 .[ 15 ] IBM เปิดตัวไฮเอนด์ 4 ทิศทาง SMP, รุ่นหลายชิปที่เรียกว่าปลาชนิดหนึ่ง, A25 หรือ A30 ใน ระบบ AS / 400
- 1997
- IBM ออกRS64สายของ 64 บิตPowerPC / PowerPC เป็นโปรเซสเซอร์
- 1998
- IBM ออกPOWER3สายเต็ม 64 บิต PowerPC / เพาเวอร์โปรเซสเซอร์
- 1999
- Intel ออกชุดคำสั่งสำหรับสถาปัตยกรรม IA-64 เอเอ็มดีเปิดเผยต่อสาธารณชนชุดของนามสกุล 64 บิตเพื่อ IA-32 ที่เรียกว่าx86-64 (AMD64 ตราภายหลัง)
- 2000
- IBM เรือลำแรก 64 บิตของz / สถาปัตยกรรม เมนเฟรม , zSeries Z900 z / สถาปัตยกรรมเป็นรุ่น 64 บิต 32 บิตอีเอสเอ / 390สถาปัตยกรรมลูกหลานของ 32 บิตระบบ / 360สถาปัตยกรรม
- 2001
- Intel เรือสายการประมวลผลของ IA-64 หลังจากที่ซ้ำความล่าช้าในการเดินทางไปยังตลาด ตอนนี้ที่มีตราสินค้าItaniumและการกำหนดเป้าหมายเซิร์ฟเวอร์ระดับไฮเอนด์ขายไม่สามารถตอบสนองความคาดหวังของ
- 2003
- เอเอ็มดีเปิดตัวของOpteronและAthlon 64สายการประมวลผลบนพื้นฐานของAMD64สถาปัตยกรรมซึ่งเป็น 64 บิตสถาปัตยกรรมหน่วยประมวลผลครั้งแรกที่ใช้ x86 แอปเปิ้ลยังมีเรือ 64 บิต "G5"PowerPC 970ซีพียูที่ผลิตโดยไอบีเอ็ม อินเทลยืนยันว่าชิป Itanium ของตนจะยังคงโปรเซสเซอร์ 64 บิตเท่านั้น
- 2004
- อินเทลทำปฏิกิริยากับความสำเร็จในตลาดของเอเอ็มดียอมรับว่ามันได้รับการพัฒนาโคลนของนามสกุล AMD64 ชื่อ IA-32e (ภายหลังเปลี่ยนชื่อ EM64T แล้วยังเปลี่ยนชื่ออีกครั้งกับ Intel 64) เรือ Intel รุ่นที่ปรับปรุงของซีออนและPentium 4ตระกูลของโปรเซสเซอร์ที่สนับสนุน 64 บิตชุดคำสั่งใหม่
- VIA เทคโนโลยีประกาศอิสยาห์โปรเซสเซอร์ 64 บิต
- 2006
- ของ Sony, IBM, และโตชิบาจะเริ่มต้นการผลิตของ 64 บิตประมวลผลเซลล์สำหรับใช้ในPlayStation 3เซิร์ฟเวอร์เวิร์กสเตชันและเครื่องใช้ไฟฟ้าอื่น ๆ
- 2011
- ARM Holdingsประกาศ ARMv8-A, รุ่น 64 บิตแรกของสถาปัตยกรรม ARM .
- 2012
- ARM Holdings ประกาศ Cortex-A53 และ Cortex-A57 แกนของพวกเขาใน 30 ตุลาคม 2012
- 2013
- แอปเปิ้ลประกาศ iPhone 5S อ้างว่ามันเป็น "มาร์ทโฟนแบบ 64 บิตครั้งแรกในโลก"; จะใช้ของพวกเขาA7 ARMv8-A-ตามระบบบนชิป
- 1985
- เครย์ออกUNICOSที่ดำเนินการแบบ 64 บิตแรกของยูนิกซ์ระบบปฏิบัติการ
- 1993
- ธันวาคมออก 64 บิตOSF / 1 AXP ธันวาคม Unix เหมือนระบบปฏิบัติการ (ภายหลังเปลี่ยนชื่อ Tru64 ยูนิกซ์) สำหรับระบบบนพื้นฐานของอัลฟาสถาปัตยกรรม
- 1994
- การสนับสนุนสำหรับMIPS R8000ประมวลผลถูกเพิ่มโดยซิลิคอนกราฟฟิกเพื่อIRIX ระบบปฏิบัติการในรุ่น 6.0
- 1995
- ธันวาคมออกOpenVMS 7.0 รุ่น 64 บิตแรกที่เต็มไปด้วย OpenVMS สำหรับ Alpha 64 บิตแรกกระจาย Linuxสำหรับสถาปัตยกรรมอัลฟาถูกปล่อยออกมา
- 1996
- การสนับสนุนสำหรับMIPSตัวประมวลผล R4x00 ในโหมด 64 บิตถูกเพิ่มโดยซิลิคอนกราฟฟิกเพื่อIRIX ระบบปฏิบัติการในรุ่น 6.2
- 1998
- ดวงอาทิตย์ปล่อยโซลาริส 7มี 64 บิตเต็มUltraSPARCสนับสนุน
- 2000
- ไอบีเอ็มเปิดตัวz / OSเป็นระบบปฏิบัติการแบบ 64 บิตสืบเชื้อสายมาจากMVSสำหรับใหม่zSeriesเมนเฟรมคอมพิวเตอร์ 64 บิต; 64 บิตLinux บน zSeriesต่อไปนี้การเปิดตัวซีพียูเกือบจะในทันที
- 2001
- ลินุกซ์จะกลายเป็นเคอร์เนลระบบปฏิบัติการแรกที่จะสนับสนุนอย่างเต็มที่ x86-64 (จำลองเป็นไม่มีการประมวลผล x86-64 ได้รับการปล่อยตัวยัง)
- 2001
- ไมโครซอฟท์เปิดตัวWindows XP 64-Bit EditionสำหรับItaniumสถาปัตยกรรม IA-64 ของแม้ว่ามันจะเป็นความสามารถในการรันโปรแกรม 32 บิตผ่านชั้นการดำเนิน
- 2003
- Apple ออกของMac OS X 10.3 "Panther" ระบบปฏิบัติการซึ่งจะเพิ่มการสนับสนุนสำหรับ 64 บิตคณิตศาสตร์พื้นเมืองPowerPC 970ประมวลผลหลายลินุกซ์ กระจายปล่อยด้วยการสนับสนุนAMD64 . ไมโครซอฟท์ประกาศแผนการที่จะสร้างรุ่นของWindows ที่การดำเนินงาน ระบบที่จะสนับสนุนสถาปัตยกรรม AMD64 ที่มีความเข้ากันได้ย้อนหลังกับโปรแกรม 32 บิตFreeBSDออกด้วยการสนับสนุน AMD64
- 2005
- วันที่ 31 มกราคม, อาทิตย์ออกSolaris 10ด้วยการสนับสนุน AMD64 และ EM64T โปรเซสเซอร์ วันที่ 29 เมษายน, แอปเปิ้ลเปิดตัวMac OS X 10.4 "เสือ" ซึ่งให้การสนับสนุนที่ จำกัด สำหรับ 64 บิตโปรแกรมบรรทัดคำสั่งในเครื่องที่มีหน่วยประมวลผล PowerPC 970; รุ่นที่ใหม่กว่าสำหรับ Intel-based Macs สนับสนุน 64 บิตโปรแกรมบรรทัดคำสั่งใน Macs มีโปรเซสเซอร์ EM64T วันที่ 30 เมษายน, ไมโครซอฟท์เปิดตัวWindows XP Professional x64 Edition ที่สำหรับ AMD64 และ EM64T โปรเซสเซอร์
- 2006
- ไมโครซอฟท์เปิดตัวWindows Vista , รวมทั้งรุ่น 64 บิตสำหรับโพรเซสเซอร์ AMD64 / EM64T ที่ยังคงรักษาความเข้ากันได้ 32 บิต ในรุ่น 64 บิตทุกโปรแกรม Windows และส่วนประกอบเป็น 64 บิตแม้ว่าจะมีหลายยังมีรุ่น 32 บิตของพวกเขารวมถึงความเข้ากันได้กับปลั๊กอิน
- 2007
- Apple ออกMac OS X 10.5 "เสือดาว" ซึ่งสนับสนุนอย่างเต็มที่โปรแกรม 64 บิตบนเครื่องที่มี PowerPC 970 หรือโปรเซสเซอร์ EM64T
- 2009
- ไมโครซอฟท์เปิดตัวWindows 7ที่เช่น Windows Vista, รวมถึงรุ่น 64 บิตเต็มรูปแบบสำหรับ AMD64 / Intel 64; คอมพิวเตอร์เครื่องใหม่ส่วนใหญ่จะโหลดโดยเริ่มต้นด้วยรุ่น 64 บิต นอกจากนี้ยังเปิดตัวWindows Server 2008 R2ซึ่งเป็น 64 บิตระบบปฏิบัติการแรกเท่านั้นที่ออกโดยไมโครซอฟท์ Apple ออกMac OS X 10.6 "เสือดาวหิมะ" ซึ่งมาพร้อมกับ 64-bit kernel สำหรับโปรเซสเซอร์ AMD64 / Intel64 แม้ว่ารุ่นที่ผ่านมาเพียงบางอย่างของเครื่องคอมพิวเตอร์แอปเปิ้ลจะทำงาน 64-bit kernel โดยค่าเริ่มต้น โปรแกรมส่วนใหญ่ที่มาพร้อมกับ Mac OS X 10.6 เป็นตอนนี้ยัง 64 บิต
- 2011
- Apple ออกMac OS X 10.7 "สิงโต" ซึ่งวิ่ง 64-bit kernel โดยค่าเริ่มต้นในเครื่องสนับสนุน เครื่องรุ่นเก่าที่ไม่สามารถเรียกใช้ 64-bit kernel รันเคอร์เนล 32 บิต แต่เช่นเดียวกับรุ่นก่อนหน้ายังคงสามารถเรียกใช้โปรแกรม 64 บิต; สิงโตไม่สนับสนุนเครื่องที่มีตัวประมวลผล 32 บิต เกือบทุกการใช้งานที่มาพร้อมกับ Mac OS X 10.7 เป็นตอนนี้ยัง 64 บิตรวมทั้ง iTunes
- 2013
- Apple ออกiOS 7ซึ่งในเครื่องที่มีหน่วยประมวลผล AArch64 มี 64-bit kernel ที่สนับสนุนการใช้งานแบบ 64 บิต
โปรแกรม 64 บิต
32 บิต vs 64 บิต
เปลี่ยนจาก32 บิตเพื่อสถาปัตยกรรม 64 บิตเป็นการเปลี่ยนแปลงขั้นพื้นฐานเป็นส่วนใหญ่ระบบปฏิบัติการจะต้องได้รับการแก้ไขอย่างกว้างขวางในการใช้ประโยชน์จากสถาปัตยกรรมใหม่เพราะซอฟแวร์ที่มีการจัดการหน่วยความจำที่เกิดขึ้นจริงที่อยู่ฮาร์ดแวร์อื่น ๆ ซอฟแวร์จะต้องได้รับแจ้งที่จะใช้ความสามารถใหม่; ซอฟแวร์ 32 บิตเก่าอาจได้รับการสนับสนุนอย่างใดอย่างหนึ่งโดยอาศัยอำนาจตามชุดคำสั่งแบบ 64 บิตเป็น superset ของชุดคำสั่ง 32 บิตเพื่อให้การประมวลผลที่รองรับชุดคำสั่งแบบ 64 บิตนอกจากนี้ยังสามารถเรียกใช้รหัสสำหรับการเรียนการสอน 32 บิต ชุดหรือผ่านซอฟแวร์จำลองหรือโดยการปฏิบัติจริงของแกนประมวลผล 32 บิตในโปรเซสเซอร์ 64 บิตเช่นเดียวกับบางหน่วยประมวลผลจากอินเทล Itanium ซึ่งรวมถึงIA-32แกนประมวลผลเพื่อให้ทำงานได้ 32 บิตx 86การใช้งานระบบปฏิบัติการสำหรับผู้สถาปัตยกรรม 64 บิตโดยทั่วไปรองรับการใช้งานทั้ง 32 บิตและ 64 บิต
ข้อยกเว้นที่สำคัญนี้คือAS / 400ซึ่งเป็นซอฟต์แวร์ที่ทำงานบนเสมือนการเรียนการสอนชุดสถาปัตยกรรม (ISA) ที่เรียกว่ามี่ (เทคโนโลยีอิสระ Machine Interface) ซึ่งจะแปลให้รหัสเครื่องพื้นเมืองโดยซอฟต์แวร์ระดับต่ำก่อนที่จะถูกดำเนินการ ซอฟต์แวร์แปลภาษาเป็นสิ่งที่จะต้องมีการเขียนใหม่ที่จะย้ายระบบปฏิบัติการทั้งหมดและซอฟแวร์ทั้งหมดไปยังแพลตฟอร์มใหม่เช่นเมื่อ IBM เปลี่ยนสายของพวกเขาจากอายุ 32/48 บิต "Impi" ชุดคำสั่งที่ 64 บิต PowerPC- AS ชุดคำสั่งมีชื่อรหัสว่า "อเมซอน" (ชุดคำสั่ง Impi ค่อนข้างแตกต่างจาก 32 บิตชุดคำสั่ง PowerPC ดังนั้นนี่คือการเปลี่ยนแปลงที่ยิ่งใหญ่กว่าจากรุ่น 32 บิตของชุดคำสั่งไปเป็นรุ่น 64 บิตของ ชุดคำสั่งเดียวกัน)
กับฮาร์ดแวร์ 64 บิตที่มีx86-64สถาปัตยกรรม (AMD64), ระบบปฏิบัติการแบบ 32 บิตมากที่สุดและการใช้งานที่สามารถทำงานได้โดยไม่มีปัญหาความเข้ากันได้ ในขณะที่พื้นที่ที่อยู่ขนาดใหญ่ของสถาปัตยกรรม 64 บิตทำให้การทำงานกับชุดข้อมูลขนาดใหญ่ในการใช้งานเช่นวิดีโอดิจิตอล , คำนวณทางวิทยาศาสตร์และขนาดใหญ่ฐานข้อมูลง่ายขึ้นได้มีการถกเถียงกันมากกับว่าพวกเขาหรือพวกเขาโหมด 32 บิตความเข้ากันได้จะเร็วกว่า ราคาปานระบบ 32 บิตสำหรับงานอื่น ๆ
โปรแกรม Java ที่รวบรวมสามารถทำงานบน 32 หรือ 64 บิต Java เครื่องเสมือนโดยไม่มีการดัดแปลง ความยาวและความแม่นยำของทั้งหมดในตัวชนิดที่ระบุไว้โดยมาตรฐานและไม่ได้ขึ้นอยู่กับสถาปัตยกรรมพื้นฐาน โปรแกรมจาวาที่ทำงานบน 64 บิต Java เครื่องเสมือนที่มีสิทธิ์เข้าถึงพื้นที่ที่อยู่ขนาดใหญ่
ความเร็วไม่ได้เป็นปัจจัยเดียวที่จะพิจารณาในการเปรียบเทียบ 32 บิตและ 64 บิตประมวลผล ใช้งานเช่นมัลติทาสกิ้ง, การทดสอบความเครียดและการจัดกลุ่มสำหรับคอมพิวเตอร์ที่มีประสิทธิภาพสูง(HPC) -May จะเหมาะสมกับสถาปัตยกรรม 64 บิตเมื่อนำไปใช้อย่างเหมาะสม กลุ่ม 64 บิตได้ถูกนำไปใช้อย่างแพร่หลายในองค์กรขนาดใหญ่เช่น IBM, HP, และ Microsoft ด้วยเหตุผลนี้
สรุป:
- โปรเซสเซอร์ 64 บิตดำเนินการที่ดีที่สุดกับซอฟแวร์ 64 บิต
- โปรเซสเซอร์ 64 บิตมีความเข้ากันได้ย้อนหลังและจะจัดการซอฟต์แวร์ 32 บิตมากที่สุด
- หน่วยประมวลผล 32 บิตจะไม่ทำงานร่วมกับซอฟต์แวร์ 64 บิต
ข้อดีและข้อเสีย
ความเข้าใจผิดกันก็คือสถาปัตยกรรม 64 บิตจะไม่ดีกว่าสถาปัตยกรรม 32 บิตถ้าคอมพิวเตอร์มีมากกว่า 4 GB ของหน่วยความจำเข้าถึงโดยสุ่ม . นี้ไม่เป็นความจริงอย่างสิ้นเชิง:
- บางระบบปฏิบัติการและการกำหนดค่าฮาร์ดแวร์บางอย่าง จำกัด พื้นที่หน่วยความจำทางกายภาพ 3 GB ในIA-32ระบบเนื่องจากมากของภูมิภาค 3-4 GB ถูกสงวนไว้สำหรับฮาร์ดแวร์ที่อยู่; เห็น3 GB อุปสรรค ; สถาปัตยกรรม 64 บิตสามารถที่อยู่ไกลมากกว่า 4 GB แต่ IA-32 หน่วยประมวลผลจากPentium IIเป็นต้นไปให้ 36 บิตทางกายภาพพื้นที่หน่วยความจำโดยใช้ส่วนขยายที่อยู่ทางกายภาพ(PAE) ซึ่งให้ 64 GB ช่วงที่อยู่ทางกายภาพที่ได้ถึง 62 GB อาจถูกใช้โดยหลัก หน่วยความจำ ระบบปฏิบัติการที่สนับสนุน PAE อาจจะไม่ถูก จำกัด ให้ 4GB หน่วยความจำกายภาพแม้ใน IA-32 หน่วยประมวลผล อย่างไรก็ตามไดรเวอร์และซอฟต์แวร์โหมดเคอร์เนลอื่น ๆ โดยเฉพาะรุ่นเก่าอาจจะไม่เข้ากันกับ บริษัท พีเออี
- บางส่วนระบบปฏิบัติการสำรองของกระบวนการ พื้นที่ที่อยู่สำหรับ OS ใช้งานได้อย่างมีประสิทธิภาพลดพื้นที่ที่อยู่ทั้งหมดที่มีอยู่สำหรับหน่วยความจำสำหรับโปรแกรมการทำแผนที่ผู้ใช้ เช่น Windows รุ่น 32 บิตขอสงวน 1 หรือ 2 GB (ขึ้นอยู่กับการตั้งค่า) ของพื้นที่ที่อยู่ทั้งหมดสำหรับเคอร์เนลที่ใบเพียง 3 หรือ 2 GB (ตามลำดับ) ของพื้นที่ที่อยู่ที่มีอยู่สำหรับโหมดผู้ใช้ ข้อ จำกัด นี้จะสูงบนระบบปฏิบัติการ 64 บิต
- หน่วยความจำไฟล์แมปจะกลายเป็นเรื่องยากมากที่จะใช้ในสถาปัตยกรรม 32 บิตเป็นไฟล์กว่า 4 GB กลายเป็นเรื่องธรรมดามากขึ้น ไฟล์ขนาดใหญ่ดังกล่าวไม่สามารถเป็นหน่วยความจำที่แมปได้อย่างง่ายดายเพื่อสถาปัตยกรรมเท่านั้น 32 บิตส่วนหนึ่งของไฟล์ที่สามารถแมปลงในพื้นที่ที่อยู่ในช่วงเวลาและการเข้าถึงไฟล์ดังกล่าวโดยการทำแผนที่หน่วยความจำส่วนที่แมปจะต้องมีการเปลี่ยนเข้าและออก พื้นที่ที่อยู่ตามความจำเป็น ปัญหานี้เป็นปัญหาในขณะที่การทำแผนที่หน่วยความจำหากดำเนินการอย่างถูกต้องโดยระบบปฏิบัติการที่เป็นหนึ่งในวิธีการที่ดิสก์ไปยังหน่วยความจำมีประสิทธิภาพมากที่สุด
- บางโปรแกรม 64 บิตเช่นเข้ารหัสถอดรหัสและซอฟต์แวร์การเข้ารหัสสามารถได้รับประโยชน์อย่างมากจากการลงทะเบียน 64 บิตในขณะที่ประสิทธิภาพการทำงานของโปรแกรมอื่น ๆ เช่นคน 3D กราฟิกที่มุ่งเน้นยังคงได้รับผลกระทบเมื่อเปลี่ยนจาก 32 บิตเป็น สภาพแวดล้อมที่ 64 บิต
- บางสถาปัตยกรรม 64 บิตเช่นx86-64สนับสนุนเพิ่มเติมการลงทะเบียนเพื่อใช้งานทั่วไปกว่า 32 บิตของพวกเขา (แม้ว่านี้ไม่ได้เกิดเฉพาะกับความยาวของคำ) นี้นำไปสู่การเพิ่มขึ้นของความเร็วที่สำคัญสำหรับลูปแน่นตั้งแต่หน่วยประมวลผลที่ไม่ได้มีการเรียกข้อมูลจากแคชหรือหน่วยความจำหลักหากข้อมูลที่สามารถใส่ในการลงทะเบียนที่มีอยู่
- เช่นในC :
int ,ข,ค,ง,จ; สำหรับ ( = 0 ; < 100 ; ++ ) { ข= ; ค=ข; D =ค; อี= D ; }
- หากหน่วยประมวลผลมีเพียงความสามารถในการให้สองหรือสามค่าหรือตัวแปรในการลงทะเบียนก็จะต้องย้ายบางค่าระหว่างหน่วยความจำและการลงทะเบียนเพื่อให้สามารถประมวลผลตัวแปรงและ e ดี; นี้เป็นกระบวนการที่ใช้เวลารอบการทำงานหลาย หน่วยประมวลผลที่มีความสามารถในการถือครองค่าทั้งหมดและตัวแปรในการลงทะเบียนห่วงผ่านพวกเขาโดยไม่จำเป็นต้องสามารถที่จะย้ายข้อมูลระหว่างลงทะเบียนและหน่วยความจำสำหรับแต่ละซ้ำ ลักษณะการทำงานนี้ได้อย่างง่ายดายเมื่อเทียบกับหน่วยความจำเสมือนแม้ว่าผลกระทบใด ๆ ขึ้นอยู่กับคอมไพเลอร์
ข้อเสียเปรียบหลักของสถาปัตยกรรม 64 บิตคือว่าเมื่อเทียบกับสถาปัตยกรรม 32 บิตข้อมูลเดียวกันใช้พื้นที่ในหน่วยความจำมากขึ้น (เนื่องจากตัวชี้อีกต่อไปและประเภทอื่น ๆ อาจจะเป็นช่องว่างภายในและการจัดตำแหน่ง) นี้เพิ่มความต้องการหน่วยความจำของกระบวนการที่กำหนดและสามารถมีผลกระทบต่อการใช้หน่วยประมวลผลที่มีประสิทธิภาพแคช ที่ยังคงรักษารูปแบบ 32 บิตบางส่วนเป็นวิธีหนึ่งในการจัดการนี้และอยู่ในทั่วไปที่มีประสิทธิภาพพอสมควร ตัวอย่างเช่นz / OSระบบปฏิบัติการใช้วิธีนี้ต้องใช้รหัสโปรแกรมที่จะอาศัยอยู่ในพื้นที่ที่อยู่ 31 บิต (บิตสูงเพื่อจะไม่ได้ใช้ในการคำนวณอยู่บนแพลตฟอร์มฮาร์ดแวร์พื้นฐาน) ในขณะที่วัตถุข้อมูลสามารถเลือกอาศัยอยู่ใน 64 ภูมิภาคบิต
ณ เดือนมิถุนายน 2011 ส่วนใหญ่เป็นเจ้าของx 86ซอฟแวร์จะรวบรวมลงในรหัส 32 บิตที่มีน้อยที่จะถูกรวบรวมยังเป็นรหัส 64 บิต (แม้ว่าแนวโน้มเสมอภาคอย่างรวดเร็ว ) ดังนั้นส่วนใหญ่ของซอฟแวร์ที่ไม่ได้ใช้ประโยชน์จาก พื้นที่ขนาดใหญ่ 64 บิตที่อยู่หรือ 64 บิตลงทะเบียนและข้อมูลเส้นทางที่กว้างขึ้นในx86-64ประมวลผลหรือเพิ่มเติมลงทะเบียนเพื่อใช้งานทั่วไปแต่ผู้ใช้มากที่สุดแพลตฟอร์ม RISC และผู้ใช้ของฟรีหรือเปิดแหล่งที่มาการดำเนินงาน ระบบ (ที่รหัสแหล่งที่มาที่สามารถใช้ได้สำหรับ recompiling กับคอมไพเลอร์ 64 บิต) ได้รับสามารถที่จะใช้เฉพาะสภาพแวดล้อมประมวลผลแบบ 64 บิตสำหรับปี ไม่ได้ใช้งานดังกล่าวทั้งหมดที่จำเป็นต้องใช้พื้นที่ที่อยู่ขนาดใหญ่หรือจัดการกับรายการข้อมูล 64 บิตดังนั้นโปรแกรมเหล่านี้ไม่ได้รับประโยชน์จากคุณสมบัติเหล่านี้ ประโยชน์หลักของรุ่น 64 บิตของการใช้งานดังกล่าวเป็นความสามารถในการเข้าถึงการลงทะเบียนมากขึ้นในสถาปัตยกรรม x86-64
พร้อมซอฟท์แวร์
ระบบ 64 บิตที่ใช้ x86 บางครั้งขาดเทียบเท่าของซอฟแวร์ที่เขียนขึ้นสำหรับสถาปัตยกรรม 32 บิต ปัญหาที่รุนแรงที่สุดใน Microsoft Windows เข้ากันไม่ได้โปรแกรมควบคุมอุปกรณ์สำหรับฮาร์ดแวร์ล้าสมัย ซอฟแวร์โปรแกรมประยุกต์แบบ 32 บิตส่วนใหญ่สามารถทำงานบนระบบปฏิบัติการ 64 บิตในโหมดที่เข้ากันหรือที่เรียกว่าการแข่งขันโหมดเช่นไมโครซอฟท์ว้าว 64เทคโนโลยีเพื่อ IA-64 และ AMD64 Windows 64-bit โหมด Native สภาพแวดล้อมที่คนขับวิ่งบน Ntdll.Dll 64 บิตซึ่งไม่สามารถเรียก 32 บิตรหัส Win32 ระบบย่อย (อุปกรณ์ที่มักจะมีฮาร์ดแวร์ที่เกิดขึ้นจริงฟังก์ชันเทิดทูนในโหมดผู้ใช้ซอฟแวร์เช่น Winprinters) เพราะไดรเวอร์ 64 บิตสำหรับอุปกรณ์ส่วนใหญ่ไม่สามารถใช้ได้จนกว่าจะถึงต้นปี 2007 (Vista x 64) โดยใช้รุ่น 64 บิตของ Windows ถือเป็นสิ่งที่ท้าทาย อย่างไรก็ตามแนวโน้มตั้งแต่ย้ายไปประมวลผลแบบ 64 บิตโดยเฉพาะอย่างยิ่งการที่ราคาหน่วยความจำลดลงและการใช้มากกว่า 4 GB RAM ที่เพิ่มขึ้น ผู้ผลิตส่วนใหญ่เริ่มที่จะให้ทั้งไดรเวอร์ 32 บิตและ 64 บิตสำหรับอุปกรณ์ใหม่เพื่อให้ความไม่พร้อมของไดรเวอร์ 64 บิตหยุดที่จะเป็นปัญหา ไดรเวอร์ 64 บิตที่ไม่ได้จัดเตรียมไว้สำหรับอุปกรณ์รุ่นเก่าจำนวนมากซึ่งอาจส่งผลให้ไม่สามารถใช้ในระบบ 64 บิต
ความเข้ากันได้ของโปรแกรมควบคุมได้น้อยมีปัญหากับไดรเวอร์โอเพนซอร์สเป็นคนที่ 32 บิตจะมีการปรับเปลี่ยนการใช้งานแบบ 64 บิต สนับสนุนฮาร์ดแวร์ทำก่อนต้นปี 2007 เป็นปัญหาสำหรับแพลตฟอร์มเปิดแหล่งที่มาเนื่องจากจำนวนที่ค่อนข้างเล็กของผู้ใช้
Mac OS X TigerและMac OS X Leopardมีเพียงเคอร์เนล 32 บิต แต่เมล็ดที่สามารถทำงานแบบ 64 บิตรหัสโหมดผู้ใช้บนตัวประมวลผล 64 บิตที่สามารถMac OS X เสือดาวหิมะมีทั้ง 32 บิตและ 64 เมล็ดบิตและในที่สุดแม็คที่ใช้เคอร์เนล 32 บิตแม้ในโปรเซสเซอร์ 64 บิต; นี้ได้รับอนุญาตให้แม็คเหล่านั้นเพื่อสนับสนุนกระบวนการ 64 บิตในขณะที่ยังสนับสนุนโปรแกรมควบคุมอุปกรณ์ 32 บิต - แม้ว่าคนขับรถไม่ได้ 64 บิตและข้อดีประสิทธิภาพที่จะมากับพวกเขาMac OS X Lionวิ่งไปกับ 64-bit kernel ใน Macs มากขึ้นและOS X สิงโตภูเขามี 64-bit kernel เท่านั้น บนระบบที่มีโปรเซสเซอร์ 64 บิตทั้ง 32 และ 64 บิตเมล็ด OS X สามารถเรียกใช้ 32 บิตรหัสโหมดผู้ใช้และทุกรุ่นของ OS X รวมถึงรุ่น 32 บิตของห้องสมุดว่าโปรแกรม 32 บิตจะใช้ ดังนั้น 32 บิตซอฟต์แวร์ที่ใช้งานโหมดสำหรับ OS X จะทำงานบนระบบเหล่านั้น
ลินุกซ์และอื่น ๆ ส่วนใหญ่Unix เหมือนระบบปฏิบัติการและCและC ++ toolchainsสำหรับพวกเขาได้รับการสนับสนุนโปรเซสเซอร์ 64 บิตเป็นเวลาหลายปีที่ผ่านมาการปล่อยรุ่น 64 บิตของระบบปฏิบัติการของพวกเขาก่อนที่จะเผยแพร่ไมโครซอฟท์อย่างเป็นทางการ การใช้งานมากและห้องสมุดสำหรับแพลตฟอร์มเหล่านี้จะเปิดแหล่งที่มาเขียนใน C และ C ++ เพื่อที่ว่าหากพวกเขาเป็น 64 บิตปลอดภัยที่พวกเขาสามารถเรียบเรียงรุ่น 64 บิต รูปแบบการกระจายแหล่งที่มานี้ตามด้วยการเน้นออกบ่อยทำให้ความพร้อมของซอฟแวร์แอพลิเคชันสำหรับระบบปฏิบัติการที่น้อยของปัญหา
ในโปรแกรม 32 บิต, ตัวชี้และประเภทข้อมูลเช่นจำนวนเต็มโดยทั่วไปมีความยาวเดียวกัน นี้ไม่จำเป็นต้องเป็นจริงในเครื่อง 64 บิต[ 29 ] [ 30 ] [ 31 ]ผสมชนิดข้อมูลในการเขียนโปรแกรมภาษาเช่นCและลูกหลานของตนเช่นC ++และวัตถุประสงค์-Cอาจฟังก์ชั่นการใช้งานจึงเกี่ยวกับ 32 บิต แต่ไม่ได้อยู่ใน การใช้งานแบบ 64 บิต
ในสภาพแวดล้อมการเขียนโปรแกรมหลายภาษา C และ C-มาในเครื่อง 64 บิต "int" ตัวแปรที่ยังคงมี 32 บิตกว้าง แต่จำนวนเต็มยาวและชี้เป็น 64 บิตกว้าง เหล่านี้จะอธิบายว่ามีLP64 รูปแบบข้อมูล .ทางเลือกหนึ่งคือILP64รูปแบบข้อมูลในการที่ทั้งสามชนิดข้อมูลเป็น 64 บิตกว้างและแม้แต่SILP64ที่จำนวนเต็ม "สั้น" นอกจากนี้ยังมี 64 บิตกว้างแต่ในกรณีส่วนใหญ่การปรับเปลี่ยนที่จำเป็นจะค่อนข้างน้อยและตรงไปตรงมา และโปรแกรมที่เขียนดีมากก็สามารถคอมไพล์สำหรับสภาพแวดล้อมใหม่โดยไม่มีการเปลี่ยนแปลง ทางเลือกหนึ่งคือLLP64รุ่นซึ่งนับว่าเข้ากันได้กับรหัส 32 บิตโดยออกทั้ง int และระยะยาวเป็น 32 บิต "LL" หมายถึง "จำนวนเต็มยาวยาว" ชนิดซึ่งเป็นอย่างน้อย 64 บิตบนแพลตฟอร์มทั้งหมดรวมทั้งสภาพแวดล้อมที่ 32 บิต
รูปแบบข้อมูล | สั้น (จำนวนเต็ม) | int | ยาว (จำนวนเต็ม) | นานนาน | ตัวชี้ / size_t | ระบบปฏิบัติการตัวอย่าง |
---|---|---|---|---|---|---|
LLP64 / IL32P64 | 16 | 32 | 32 | 64 | 64 | Microsoft Windows (x86-64 และ IA-64) |
LP64 / I32LP64 | 16 | 32 | 64 | 64 | 64 | ส่วนใหญ่UnixและUnix เหมือนระบบเช่นSolaris , Linux , BSDและOS X ; z / OS |
ILP64 | 16 | 64 | 64 | 64 | 64 | HAL ระบบคอมพิวเตอร์พอร์ตของ Solaris เพื่อSPARC64 |
SILP64 | 64 | 64 | 64 | 64 | 64 | "คลาสสิก" UNICOS [ 32 ] (เมื่อเทียบกับ UNICOS / MP ฯลฯ ) |
หลายแพลตฟอร์ม 64 บิตวันนี้ใช้LP64รูปแบบ (รวมทั้ง Solaris, AIX , HP-UX , Linux, OS X, BSD, และ IBM z / OS) Microsoft Windows ใช้LLP64รูปแบบ ข้อเสียของรูปแบบ LP64 ก็คือว่าการจัดเก็บนานเป็นintอาจล้น ในทางตรงกันข้ามการแปลงตัวชี้ไปยังยาวจะ "ทำงาน" ใน LP64 ในรูปแบบ LLP64, กลับเป็นความจริง เหล่านี้ไม่ได้ส่งผลกระทบต่อปัญหาที่รหัสอย่างเต็มที่ตามมาตรฐาน แต่รหัสมักจะเขียนด้วยสมมติฐานนัยเกี่ยวกับความกว้างของชนิดข้อมูล รหัส C จะชอบ ( U ) intptr_tแทนยาวเมื่อหล่อตัวชี้เป็นวัตถุจำนวนเต็ม
โปรดสังเกตว่ารูปแบบการเขียนโปรแกรมเป็นทางเลือกที่ทำในพื้นฐานต่อคอมไพเลอร์และอีกหลายสามารถอยู่ร่วมกันบนระบบปฏิบัติการเดียวกัน อย่างไรก็ตามรูปแบบการเขียนโปรแกรมเลือกให้เป็นรูปแบบหลักสำหรับระบบปฏิบัติการ API มักจะกุมอำนาจ
พิจารณาก็คือรูปแบบข้อมูลที่ใช้สำหรับการขับรถ . คนขับรถทำให้คนส่วนใหญ่ของรหัสระบบปฏิบัติการในที่สุดระบบปฏิบัติการที่ทันสมัย (แม้ว่าหลายคนอาจไม่สามารถโหลดได้เมื่อระบบปฏิบัติการที่ใช้) คนขับรถจำนวนมากใช้ตัวชี้อย่างมากในการจัดการข้อมูลและในบางกรณีมีการโหลดตัวชี้ที่มีขนาดบางลงในฮาร์ดแวร์ที่พวกเขาสนับสนุนสำหรับDMA . ตัวอย่างเช่นโปรแกรมควบคุมสำหรับอุปกรณ์ PCI 32 บิตขออุปกรณ์ข้อมูล DMA ในพื้นที่ตอนบนของหน่วยความจำเครื่อง 64 บิตไม่สามารถตอบสนองการร้องขอจากระบบปฏิบัติการในการโหลดข้อมูลจากอุปกรณ์ไปยังหน่วยความจำดังกล่าวข้างต้นอุปสรรค 4 กิกะไบต์ เพราะตัวชี้สำหรับที่อยู่เหล่านั้นจะไม่เหมาะสมในการลงทะเบียน DMA ของอุปกรณ์ ปัญหานี้จะแก้ไขได้โดยมีระบบปฏิบัติการที่ใช้หน่วยความจำข้อ จำกัด ของอุปกรณ์ที่เข้าบัญชีเมื่อมีการสร้างการร้องขอไปยังไดรเวอร์สำหรับ DMA หรือโดยใช้IOMMU
ตัวอย่างซีพียูของค่ายADM
Athlon 64เป็นรุ่นที่แปดAMD64 -architecture ไมโครโปรเซสเซอร์ที่ผลิตโดยเอเอ็มดีได้รับการปล่อยตัวเมื่อวันที่ 23 กันยายน 2003 เป็นหน่วยประมวลผลที่สามที่จะแบกรับชื่อAthlonและทายาททันทีเพื่อAthlon XP .หน่วยประมวลผลที่สอง (หลังจากOpteron ) ที่จะใช้สถาปัตยกรรม AMD64 และเป็นครั้งแรก64 บิตประมวลผลกำหนดเป้าหมายที่ผู้บริโภคเฉลี่ยมันเป็นไมโครโปรเซสเซอร์ของผู้บริโภคหลักของเอเอ็มดีและการแข่งขันที่เกี่ยวเนื่องกับIntelของPentium 4โดยเฉพาะ "เพรสคอทท์" และ "ซีดาร์โรงสี" เนื้อเรื่องหลัก มันเป็นครั้งแรกที่เอเอ็มดีK8แกนประมวลผลรุ่นที่แปดสำหรับเดสก์ทอปและคอมพิวเตอร์มือถือ[ 4 ]อย่างไรก็ตามการกำเนิด 64 บิตสถาปัตยกรรม AMD64 เป็นย้อนกลับเข้ากันได้กับ 32 บิตx 86คำแนะนำ[ 5 ] 64s Athlon ได้รับการผลิตสำหรับซ็อกเก็ต 754 , ซ็อกเก็ต 939 , ซ็อกเก็ต 940และSocket AM2 . สายที่ประสบความสำเร็จโดย dual-core
Single-Core Athlon 64
ทั้งหมดของโปรเซสเซอร์ 64 บิตขายโดยเอเอ็มดีเพื่อให้ห่างไกลมีแหล่งกำเนิดของพวกเขาในK8หรือค้อนโครงการ เมื่อวันที่ 1 มิถุนายน 2004 เอเอ็มดีเปิดตัวรุ่นใหม่ของทั้งสอง ClawHammer และนิวคาสเซิแก้ไขหลักสำหรับการเปิดตัวใหม่ซ็อกเก็ต 939 , การเปลี่ยนแปลงซ็อกเก็ต 940โดยไม่ต้องใช้หน่วยความจำบัฟเฟอร์[ซ็อกเก็ต 939 เสนอสองการปรับปรุงที่สำคัญกว่า Socket 754: ควบคุมหน่วยความจำมีการเปลี่ยนแปลงที่มีสถาปัตยกรรมแบบ Dual-channel ,เพิ่มแบนด์วิดธ์หน่วยความจำสูงสุดและHyperTransportรถบัสเพิ่มขึ้นในความเร็วจาก 800 MHz ถึง 1000 MHz ซ็อกเก็ต 939 ยังเป็นที่รู้จักใน FX ชุดในรูปแบบของ FX-55 ในขณะเดียวกันเอเอ็มดีก็เริ่มที่จะส่ง "วินเชสเตอร์" หลักขึ้นอยู่กับกระบวนการ 90 นาโนเมตร
แก้ไขหลัก "เวนิซ" และ "ซานดิเอโก" ประสบความสำเร็จในการปรับปรุงก่อนหน้านี้ทั้งหมดในวันที่ 15 เมษายน 2005 เวนิซ, ส่วนล่างสุดเป็นจำนวนมากสำหรับทั้งสองซ็อกเก็ต 754 และ 939 และรวมถึง 512 กิโลไบต์ของแคช L2 ซานดิเอโก , ชิปปลายสูงเป็นจำนวนมากเพียงเพื่อซ็อกเก็ต 939 และสองเท่าของเวนิสแคช L2 ถึง 1 MB . ทั้งสองได้รับการผลิตในกระบวนการผลิต 90 นาโนเมตร[ 19 ]ทั้งยังรวมถึงการสนับสนุนสำหรับSSE3ชุดคำสั่ง, คุณลักษณะใหม่ที่ได้รับการรวมอยู่ในคู่แข่งPentium 4ตั้งแต่การเปิดตัวของแกนเพรสคอทท์ในกุมภาพันธ์ 2004 นอกจากนี้เอเอ็มดีซ่อมแซมควบคุมหน่วยความจำสำหรับการแก้ไขนี้มีผลในการปรับปรุงประสิทธิภาพการทำงานเช่นเดียวกับการสนับสนุนสำหรับ DDR ใหม่ แรม[ 22 ]
dual-core Athlon 64
วันที่ 21 เมษายนปี 2005 น้อยกว่าหนึ่งสัปดาห์หลังจากการเปิดตัวของเวนิซและซานดิเอโก, เอเอ็มดีประกาศเพิ่มต่อไปในสาย Athlon 64, Athlon 64 X2 . วันที่เข้าฉายเมื่อวันที่ 31 พฤษภาคม 2005, ก็ยัง ในตอนแรกมีการแก้ไขสองครั้งหลักที่แตกต่างกันสามารถใช้ได้กับประชาชน, แมนเชสเตอร์และโทเลโดเท่านั้นที่เห็นความแตกต่างระหว่างพวกเขาเป็นจำนวนเงินที่ของแคช L2[ 25 ]ทั้งสองได้รับการปล่อยตัวเพียงสำหรับซ็อกเก็ต 939 Athlon 64 X2 ได้รับการตอบรับดีมาก จากผู้ตรวจสอบและประชาชนทั่วไปที่มีฉันทามติทั่วไปที่เกิดขึ้นใหม่ว่าการดำเนินการของเอเอ็มของแบบ multi-coreจะดีกว่าที่ของการแข่งขันPentium D . บางคนรู้สึกแรกที่ X2 จะทำให้เกิดความสับสนในตลาดเกี่ยวกับจุดราคากับ ตั้งแต่โปรเซสเซอร์ใหม่เป็นเป้าหมายที่เดียวกัน "คนที่กระตือรือร้น" สหรัฐ $ 350 และเหนือตลาดครอบครองแล้วโดยเอเอ็มดีที่มีอยู่ซ็อกเก็ต 939 64s Athlon รายละเอียดอย่างเป็นทางการของชิปเอเอ็มดีวาง X2 Athlon มุ่งเป้าไปที่กลุ่มพวกเขาเรียกว่า "prosumer" พร้อมด้วยแฟน ๆ สื่อดิจิตอล Athlon 64 เป็นเป้าหมายที่ผู้บริโภคหลักและ FX Athlon ที่เกมเมอร์ Sempronประมวลผลงบประมาณเป็นเป้าหมายที่ผู้บริโภคที่มีมูลค่าสติ[ 31 ]หลังจากการเปิดตัวของ Athlon 64 X2 เอเอ็มดีกว่า Intel ในสหรัฐยอดค้าปลีกสำหรับช่วงระยะเวลาหนึ่งแม้ว่าอินเทลยังคงเป็นผู้นำตลาดโดยรวมเพราะความสัมพันธ์พิเศษที่มีทางตรง ผู้ขายเช่น Dell
DDR2
Athlon 64 ได้รับการกล่าวหาโดยนักวิจารณ์บางคนบางครั้งเพราะขาดของการสนับสนุนสำหรับDDR2 SDRAM , เทคโนโลยีใหม่ที่ได้รับการยอมรับมากก่อนหน้านี้โดย Intel ตำแหน่งอย่างเป็นทางการเอเอ็มดีได้ที่แฝง CASใน DDR2 ไม่ได้ก้าวหน้า จนถึงจุดที่มันจะเป็นประโยชน์สำหรับผู้บริโภคที่จะนำมาใช้มันเอเอ็มดีในที่สุดการแก้ไขช่องว่างที่มี "ออรีนส์" การแก้ไขหลักแรก Athlon 64 ให้พอดีนี้Socket AM2ได้รับการปล่อยตัวเมื่อวันที่ 23 พฤษภาคม 2006 "วินด์เซอร์" X2 แก้ไขสำหรับ Socket AM2 Athlon 64 ถูกปล่อยออกมาพร้อมกัน ทั้งออร์และวินด์เซอร์มีทั้ง 512 กิโลไบต์หรือ 1 เมกะไบต์ของแคช L2 ต่อคอ Athlon 64 FX-62 ก็ปล่อยพร้อมกันบนแพลตฟอร์ม Socket AM2 Socket AM2 ยังสิ้นเปลืองพลังงานน้อยกว่าแพลตฟอร์มก่อนหน้านี้และ สนับสนุนAMD-V.
ควบคุมหน่วยความจำที่ใช้ในทุก DDR2 SDRAM หน่วยประมวลผลที่มีความสามารถ (Socket AM2) ได้ขยายช่วงที่อยู่คอลัมน์จาก 11 คอลัมน์แทนของเดิม 10 คอลัมน์และการสนับสนุนของขนาดหน้า 16 กิโลไบต์โดยที่ 2048 รายการแต่ละรายการได้รับการสนับสนุน OCZชุด DDR2 unbuffered เหมาะสำหรับ64 บิต ระบบปฏิบัติการที่ได้รับการปล่อยตัวจะใช้ประโยชน์จากฟังก์ชั่นที่มีให้โดยควบคุมหน่วยความจำในการประมวลผลซ็อกเก็ต AM2 อนุญาตให้ควบคุมหน่วยความจำที่จะอยู่อีกต่อไปในหน้าเดียวกันจึงฟิตงานหนักกราฟิก
ย้ายไปยังพื้นที่ subnotebook
สถาปัตยกรรม Athlon อยู่ไกลออกไปกับการเปิดตัวของAthlon Neoประมวลผลวันที่ 9 มกราคม 2009 บนพื้นฐานของสถาปัตยกรรมเช่นเดียวกับที่อื่น ๆ Athlon 64 สายพันธุ์โปรเซสเซอร์ใหม่มีรอยแพคเกจขนาดเล็กเป้าหมายโน๊ตบุ๊คพกพาในตลาด
AMD Athlon 64 processor ครอบครัว | |||||||
---|---|---|---|---|---|---|---|
Logo | สก์ท็อป | Logo | แล็ปท็อป | ||||
ที่มีชื่อรหัส | แกน | วันที่ออก | ที่มีชื่อรหัส | แกน | วันที่ออก | ||
ClawHammer นิวคาสเซิ วินเชสเตอร์ เวนิซ แมนเชสเตอร์ * ซานดิเอโก โตเลโด * | 130 นาโนเมตร 130 นาโนเมตร 90 นาโนเมตร 90 นาโนเมตร 90 นาโนเมตร 90 นาโนเมตร 90 นาโนเมตร | ธันวาคม 2003 ธันวาคม 2003 ตุลาคม 2004 เมษายน 2005 พฤษภาคม 2005 พฤษภาคม 2005 พฤษภาคม 2005 | ClawHammer โอเดสซา โอก นิวอาร์ | 130 นาโนเมตร 130 นาโนเมตร 90 นาโนเมตร 90 นาโนเมตร | ธันวาคม 2003 กุมภาพันธ์ 2004 สิงหาคม 2004 เมษายน 2005 | ||
ค้อน ClawHammer ซานดิเอโก | 130 นาโนเมตร 130 นาโนเมตร 90 นาโนเมตร | กันยายน 2003 มิถุนายน 2004 มิถุนายน 2005 | |||||
ออ ลิมา | 65 นาโนเมตร 65 นาโนเมตร | กุมภาพันธ์ 2007 พฤษภาคม 2007 | ฮูรอน | 65 นาโนเมตร | มกราคม 2009 | ||
* X2 Athlonกับแคชปิดการใช้งานรายชื่อ AMD Athlon 64 ไมโครโปรเซสเซอร์ |
คุณสมบัติ
มีสี่สายพันธุ์คือAthlon 64 , Athlon 64 FX , มือถือ Athlon 64 (ต่อมาเปลี่ยนชื่อ " Turion 64 ") และ dual-core Athlon 64 X2 . ร่วมกันในหมู่สาย Athlon 64 ความหลากหลายของชุดการเรียนการสอนรวมทั้งMMX , 3DNow! , SSE , SSE2และSSE3 .ทั้งหมด Athlon 64s ยังสนับสนุนNX บิตคุณลักษณะการรักษาความปลอดภัยที่ชื่อ "การป้องกันไวรัสที่เพิ่มขึ้น" โดยเอเอ็มดีและในขณะที่การใช้งานของสถาปัตยกรรม AMD64 ทั้งหมด Athlon 64 สายพันธุ์ที่มี สามารถเรียกใช้16 บิต , 32 บิตx86และAMD64 รหัสผ่านที่แตกต่างกันสองโหมดการประมวลผลสามารถทำงานได้ใน " โหมดเลกาซี่ "และ" โหมดยาว " โหมดการทำงานแบบเดิม 16 บิตและ 32 บิตโปรแกรมกำเนิดและโหมดยาวรันโปรแกรม 64 บิตโดยกำเนิด แต่ยังช่วยให้โปรแกรม 32 บิตที่ทำงานภายใน 64 บิตระบบปฏิบัติการ .[ 43 ]ทั้งหมด Athlon 64 มี 128 กิโลไบต์ระดับ 1 แคชและอย่างน้อย 512 KB จากระดับ 2 แคช[ 41 ]
เมื่อตายควบคุมหน่วยความจำ
Athlon 64 มีตัวควบคุมหน่วยความจำบนตายคุณลักษณะที่เห็นก่อนหน้านี้เพียงTransmeta ครูโซ . ไม่เพียง แต่นี้หมายความว่าตัวควบคุมการทำงานในอัตรานาฬิกาเดียวกับซีพียูของตัวเองก็ยังหมายถึงสัญญาณไฟฟ้ามีระยะทางทางกายภาพที่สั้นกว่าการเดินทางเมื่อเทียบกับอายุNorthbridgeอินเตอร์เฟซผลที่ได้คือการลดลงอย่างมีนัยสำคัญในความล่าช้า ( เวลาตอบสนอง) สำหรับการร้องขอการเข้าถึงหน่วยความจำหลักแฝงที่ต่ำกว่าก็มักจะอ้างว่าเป็นหนึ่งในข้อดีของสถาปัตยกรรม Athlon 64 เหนือคู่แข่งของเหล่านั้นในเวลา
แปล Lookaside บัฟเฟอร์
Lookaside บัฟเฟอร์ (TLBs) นอกจากนี้ยังได้รับการขยาย (40 4k รายการ / 2M / 4M ในแคช L1, 512 4k รายการ) [ 47 ]ที่มีศักยภาพลดลงและการคาดการณ์สาขาที่ดีขึ้นกับสี่เท่าของจำนวนเคาน์เตอร์ bimodal ในประวัติศาสตร์โลก เคาน์เตอร์[ 43 ]นี้และอื่น ๆ การปรับปรุงสถาปัตยกรรมโดยเฉพาะอย่างยิ่งที่เกี่ยวกับการดำเนินการ SSE การปรับปรุงการเรียนการสอนต่อวงจร ( IPC ) ผลการดำเนินงานในช่วงก่อนหน้านี้รุ่น Athlon XP เพื่อให้ง่ายขึ้นสำหรับผู้บริโภคที่จะเข้าใจเอเอ็มดีได้เลือกที่จะทำตลาด Athlon 64 โดยใช้พีอาร์ (การจัดอันดับผลการดำเนินงาน) ระบบที่ตัวเลขประมาณแมปไป Pentium 4 เทียบเท่าประสิทธิภาพมากกว่าความเร็วนาฬิกาที่เกิดขึ้นจริง
Cool'n'Quiet
Athlon 64 นอกจากนี้ยังมีCPUเทคโนโลยีการควบคุมปริมาณความเร็วตราCool'n'Quietคุณลักษณะคล้ายกับของ Intel SpeedStepที่สามารถเค้นความเร็วนาฬิกาโปรเซสเซอร์กลับไปอำนวยความสะดวกในการใช้พลังงานที่ลดลงและการผลิตความร้อนเมื่อผู้ใช้เรียกใช้โปรแกรมประยุกต์และต้องการมาก ภาระในการประมวลผลเป็นแสงความเร็วสัญญาณนาฬิกาของหน่วยประมวลผลและแรงดันไฟฟ้าจะลดลง นี้จะช่วยลดการใช้พลังงานสูงสุด (TDP สูงสุดตั้งไว้ที่ 89 W โดยเอเอ็มดี) ในการที่ต่ำเป็น 32 วัตต์ ( ก้าว C0, ความเร็วนาฬิกาลดลงถึง 800 MHz) 22W (ก้าว CG, ความเร็วนาฬิกาลดลงถึง 1 GHz) Athlon 64 นอกจากนี้ยังมีแบบบูรณาการกระจายความร้อน (ไอเอชเอ) ซึ่งช่วยป้องกันการตายของ CPU จากบังเอิญได้รับความเสียหายเมื่อติดตั้งและ unmounting sinks ความร้อน ก่อนที่เอเอ็มดีมีซีพียูชิม CPUสามารถนำมาใช้โดยคนที่กังวลเกี่ยวกับความเสียหายของตาย
NX บิต
ไม่มีการดำเนินการบิต (NX บิต)สนับสนุนโดยWindows XP Service Pack 2 และรุ่นอนาคตของวินโดวส์ลินุกซ์ 2.6.8 และสูงกว่าและFreeBSD 5.3 และสูงกว่าก็ยังถูกรวมสำหรับการป้องกันที่ดีขึ้นจากบัฟเฟอร์ที่เป็นอันตรายภัยคุกคามความปลอดภัยล้น ระดับการอนุญาตฮาร์ดแวร์ตั้งทำให้เป็นเรื่องยากมากขึ้นสำหรับรหัสที่เป็นอันตรายที่จะใช้การควบคุมของระบบ มันมีจุดมุ่งหมายที่จะทำให้64 บิตคอมพิวเตอร์สภาพแวดล้อมที่ปลอดภัยมากขึ้น
Athlon 64 ซีพียูได้รับการผลิตด้วยนาโนเมตรและ 130 นาโนเมตร 90 ซอยเทคโนโลยีการผลิตทั้งหมดของชิปใหม่ล่าสุด (วินเชสเตอร์, เวนิซและซานดิเอโกรุ่น) อยู่ใน 90 นาโนเมตร เวนิซและซานดิเอโกรุ่นยังมีการใช้เทคโนโลยีซับความเครียดคู่(การรวมกันของซิลิกอนที่ทำให้เครียดและ 'บีบซิลิกอน', หลังจากที่ไม่จริงเทคโนโลยี) การพัฒนาร่วมกับไอบีเอ็ม
เป็นตัวควบคุมหน่วยความจำแบบบูรณาการสู่การตายของ CPU ที่มี FSB สำหรับหน่วยความจำระบบฐานความเร็วของมันเมื่อไม่มีแต่ความเร็วหน่วยความจำระบบจะได้รับโดยใช้สูตรต่อไปนี้ (โดยใช้ฟังก์ชั่นเพดาน ):
ในแง่ง่ายหน่วยความจำจะเคยทำงานในส่วนการตั้งค่าของความเร็วซีพียูที่มีตัวหารเป็นจำนวนทั้งหมด รูป 'เอฟเอ' ยังคงใช้ในการกำหนดความเร็วของ CPU, RAM แต่ความเร็วที่เกี่ยวข้องไม่โดยตรงนี้ 'เอฟเอ' รูป (หรือที่รู้จัก LDT)
เพื่อสรุปสถาปัตยกรรม Athlon 64 มีรถเมล์สองจากซีพียู หนึ่งคือHT รถที่จะเชื่อมต่อ Northbridge CPU กับชิปเซ็ตและอุปกรณ์รถบัสสิ่งที่แนบมา (PCIe, AGP, PCI) และอื่น ๆ ที่เป็นรถบัสหน่วยความจำที่เชื่อมต่อควบคุมหน่วยความจำออนบอร์ดไปยังธนาคารทั้ง DDR หรือ DDR2 DRAM
แกนประมวลผล
Athlon 64 FX
Athlon 64 FX อยู่ในตำแหน่งที่เป็นผลิตภัณฑ์ที่กระตือรือร้นฮาร์ดแวร์วางตลาดโดยเอเอ็มดีโดยเฉพาะอย่างยิ่งต่อนักเล่นเกม . ซึ่งแตกต่างจากมาตรฐาน Athlon 64 ทั้งหมดของโปรเซสเซอร์ Athlon 64 FX มีตัวคูณของพวกเขาปลดล็อคอย่างสมบูรณ์สาย FX เป็นคู่ -core เริ่มต้นด้วย FX-60 FX มักจะมีความเร็วสัญญาณนาฬิกาที่สูงที่สุดของ Athlons ทั้งหมดที่ปล่อยให้เป็นอิสระจาก FX-70 เป็นต้นไปสายการประมวลผลจะยังสนับสนุนการติดตั้งโปรเซสเซอร์คู่กับNUMAชื่อแพลตฟอร์ม AMD Quad FX .
Athlon 64 X2
บทความหลัก: Athlon 64 X2
Athlon 64 X2 เป็นครั้งแรกที่dual-core เดสก์ทอป ซีพียูที่ผลิตโดยเอเอ็มดี . ในปี 2007 เอเอ็มดีเปิดตัวสองสุดท้าย Athlon 64 X2 รุ่น: AMD Athlon 64 X2 5000 + 6400+ และรุ่นสีดำ ประมวลผลทั้งสองมีปลดล็อคตัวคูณซึ่งจะช่วยให้ช่วงใหญ่ของการตั้งค่าการโอเวอร์คล็อก 6400+ จะขึ้นอยู่กับ 90 นาโนเมตรวินด์เซอร์หลัก (3.2 GHz, 2x1MB L2, 125W TDP) ในขณะที่ 5000 + ขึ้นอยู่กับ 65 นาโนเมตรบริสเบนหลัก (2.6 GHz, 2x512KB L2, 65W TDP) โปรเซสเซอร์เหล่าฉบับดำได้ที่ร้านค้าปลีกของเอเอ็ม แต่ไม่รวมถึงฮีทซิงค์ในแพคเกจค้าปลีก
Turion 64 (เดิมถือ Athlon 64)
บทความหลัก: Turion 64
การแนะนำให้รู้จักก่อนหน้านี้เป็น "Mobile Athlon 64" Turion 64ตอนนี้เป็นชื่อแบรนด์ เอเอ็มดีนำไปใช้กับ 64 บิตการบริโภคพลังงานต่ำของ ( มือถือ ) โปรเซสเซอร์ .Turion 64และTurion 64 X2โปรเซสเซอร์แข่งขันกับอินเทลเป็นโปรเซสเซอร์มือถือแรกPentium Mและต่อมาIntel CoreและIntel Core 2โปรเซสเซอร์
ก่อนหน้านี้ Turion 64 เข้ากันได้กับเอเอ็มดีซ็อกเก็ต 754 . ใหม่ "ริชมอนด์" รุ่นถูกออกแบบมาสำหรับเอเอ็มดีซ็อกเก็ต S1 . พวกเขามีการติดตั้ง 512 หรือ 1,024 กิโลไบต์ของแคช L2, ช่องทางเดียว 64 บิตบนตายควบคุมหน่วยความจำและ 800 MHz HyperTransportรถบัส ประหยัดพลังงานแบตเตอรี่คุณสมบัติเช่นPowerNow!เป็นศูนย์กลางของการตลาดและประโยชน์ของซีพียูเหล่านี้
วิธีการรูปแบบการตั้งชื่อ
โครงการรูปแบบการตั้งชื่อไม่ได้ทำให้มันชัดเจนวิธีการเปรียบเทียบหนึ่ง Turion กับคนอื่นหรือแม้กระทั่ง Athlon 64 ชื่อรุ่นเป็นสองตัวอักษรเส้นประและหมายเลขสองหลัก (เช่น ML-34) ตัวอักษรสองตัวร่วมกันกำหนดชั้นการประมวลผลในขณะที่จำนวนหมายถึงคะแนน PR . ตัวอักษรตัวแรกเป็น M สำหรับหน่วยประมวลผลแกนเดียวและ T สำหรับ Dual Core Turion 64 X2โปรเซสเซอร์ ต่อมาในตัวอักษรที่จดหมายฉบับที่สองปรากฏขึ้นให้มากขึ้นรุ่นได้รับการออกแบบสำหรับการเคลื่อนไหว (การใช้พลังงานที่ประหยัด)Take เช่น, MT-30 และ ML-34 ตั้งแต่ T ใน MT-30 ต่อมาในตัวอักษรกว่าลิตร ML-34, MT-30 ใช้พลังงานน้อยกว่า ML-34 แต่ตั้งแต่ 34 มากกว่า 30 ML-34 จะเร็วกว่า MT-30
Athlon Neo
กับ 27 มม× 27 มิลลิเมตรในขนาดและ 2.5 มม, โปรเซสเซอร์ Athlon Neo ใช้แพคเกจใหม่ที่เรียกว่า "ASB1" เป็นหลักBGAแพคเกจสำหรับรอยเท้าขนาดเล็กเพื่อช่วยให้การออกแบบขนาดเล็กสำหรับโน้ตบุ๊คและลดค่าใช้จ่าย นาฬิกาของหน่วยประมวลผลอย่างมีนัยสำคัญต่ำกว่าเดสก์ทอปและคู่มือถืออื่น ๆ ที่จะไปถึง TDP ต่ำที่ 15W สูงสุดสำหรับ x86-64 ซีพียูเดียวที่ 1.6 GHz โปรเซสเซอร์ Athlon Neo มีการติดตั้ง 512 KB แคช L2 และ HyperTransport 1.0 ทำงานที่ความถี่ 800 MHz
ซ็อกเก็ต
- ซ็อกเก็ต 754 : Athlon 64 ค่า / งบประมาณอินเตอร์เฟซหน่วยความจำ 64 บิต (Single-Channel)
- ซ็อกเก็ต 939 : Athlon 64 สายประสิทธิภาพAthlon 64 X2Sและใหม่กว่า Athlon 64 FXS, Opteron , อินเตอร์เฟซหน่วยความจำ 128 บิต ( แบบ Dual-channel )
- ซ็อกเก็ต 940 : Opteronและเก่า Athlon 64 FX อินเตอร์เฟซหน่วยความจำ 128 บิต - ต้องใช้หน่วยความจำ DDR จดทะเบียน
- Socket AM2 : Athlon 64 / Athlon 64 FX / Athlon 64 X2 / Sempron , 940 พิน (ไม่เข้ากันได้กับซ็อกเก็ต 940); ซ็อกเก็ตเอเอ็มดีคนแรกที่ใช้DDR2 SDRAM .
- ซ็อกเก็ต F : Opteron, 1207 Pins
- ซ็อกเก็ต F (1207 FX) : Athlon 64 FX บนแพลตฟอร์ม AMD Quad FXยังเข้ากันได้สำหรับประมวลผลแบบคู่Opteron 2200 ซีรีส์
ที่แนะนำของ Athlon 64 ในเดือนกันยายนปี 2003 เพียง Socket 754 และซ็อกเก็ต 940 (Opteron) มีความพร้อมและสามารถใช้ได้ ควบคุมหน่วยความจำออนบอร์ดไม่ได้มีความสามารถในการใช้งานหน่วยความจำบัฟเฟอร์ (ไม่ลงทะเบียน) ในโหมดดูอัลแชนเนลในช่วงเวลาของการเปิดตัว; เป็นมาตรการชั่วคราวที่พวกเขาเปิดตัว Athlon 64 เมื่อซ็อกเก็ต 754 และนำออกรุ่นที่ไม่ใช่มัลติของ Opteron ที่เรียกว่า Athlon 64 FX เป็นส่วนหนึ่งคูณปลดล็อคผู้ที่ชื่นชอบสำหรับซ็อกเก็ต 940, เทียบเคียงกับของ Intel Pentium 4 Extreme Edition สำหรับ ตลาดท้ายสูง
ในเดือนมิถุนายนปี 2004 เอเอ็มดีเปิดตัวซ็อกเก็ต 939 เป็นหลัก Athlon 64 มีอินเตอร์เฟซหน่วยความจำสองช่องออกจากซ็อกเก็ต 940 แต่เพียงผู้เดียวสำหรับตลาดเซิร์ฟเวอร์ (Opterons) และผลักไสซ็อกเก็ต 754 เป็นเส้นค่า / งบประมาณสำหรับ Semprons และรุ่นที่ช้าลงของ Athlon 64 Socket 754 ในที่สุดแทนที่ซ็อกเก็ตสำหรับ Semprons
ในเดือนพฤษภาคมปี 2006 เอเอ็มดีเปิดตัว Socket AM2 ซึ่งให้การสนับสนุนสำหรับอินเตอร์เฟซหน่วยความจำ DDR2 นอกจากนี้การทำเครื่องหมายการเปิดตัวของเอเอ็มดี-V .
ในเดือนสิงหาคมปี 2006 เอเอ็มดีเปิดตัวซ็อกเก็ต F สำหรับOpteronซีพียูเซิร์ฟเวอร์ซึ่งใช้LGAปัจจัยรูปแบบชิป
ในเดือนพฤศจิกายนปี 2006 เอเอ็มดีเปิดตัวรุ่นเฉพาะของซ็อกเก็ต F เรียกว่า FX 1207 สำหรับสองซ็อกเก็ตแบบ dual-core ประมวลผล Athlon FX บนแพลตฟอร์ม Quad FX ในขณะที่ซ็อกเก็ต F Opterons ได้รับอนุญาตแล้วสำหรับสี่แกนประมวลผล, Quad FX อนุญาตแรมบัฟเฟอร์และการกำหนดค่า CPU / ชิปเซ็ตที่ขยายตัวในไบออส consequentially, ซ็อกเก็ต F และ F 1207 FX เข้ากันไม่ได้และต้องใช้การประมวลผลที่แตกต่างกันชิปเซ็ตและเมนบอร์ด
ตัวอย่างซีพียูของค่ายIntel
Itanium
Itanium 2 หน่วยประมวลผล
| |
ผลิต | จากช่วงกลางปี 2001 ที่จะนำเสนอ |
---|---|
ผู้ผลิตที่พบบ่อย (s) |
|
แม็กซ์ซีพียู อัตรานาฬิกา | 733 MHz ถึง 2.53 GHz |
FSBความเร็ว | 300 MHz ถึง 667 MHz |
ชุดคำสั่ง | Itanium |
แกน | 1, 2, 4 หรือ 8 |
Itanium ( / aɪ เสื้อeɪ n ฉันə เมตร / eye- tay -nee-əm ) เป็นครอบครัวของ 64 บิตอินเทล ไมโครโปรเซสเซอร์ที่ใช้สถาปัตยกรรม Itanium ของ Intel (เดิมเรียกว่าIA-64 ) Intel ตลาดโปรเซสเซอร์สำหรับเซิร์ฟเวอร์ขององค์กรและการใช้งานคอมพิวเตอร์ที่มีประสิทธิภาพสูงระบบ Itanium สถาปัตยกรรมมาที่Hewlett-Packard (HP) และต่อมาได้รับการพัฒนาร่วมกันโดยเอชพีและอินเทล
ระบบที่ใช้ Itanium ได้รับการผลิตโดยเอชพี ( HP Integrity เซิร์ฟเวอร์สาย) และผู้ผลิตอื่น ๆ อีกหลาย ขณะที่ 2008 , Itanium เป็นสถาปัตยกรรมไมโครโปรเซสเซอร์สี่มากที่สุดนำไปใช้สำหรับระบบระดับองค์กรที่อยู่เบื้องหลังx86-64 , อำนาจสถาปัตยกรรมและSPARC หน่วยประมวลผลล่าสุดPoulsonได้รับการปล่อยตัวเมื่อวันที่ 8 พฤศจิกายน 2012
ตลาดเซิร์ฟเวอร์ระดับไฮเอนด์
เมื่อแรกที่ปล่อยออกมาในปี 2001 ผลการดำเนินงานของไอเทเนียมเมื่อเทียบกับที่ดีขึ้นRISCและCISCประมวลผลได้รับการผิดหวังการแข่งขันที่จะใช้งาน x 86 และระบบปฏิบัติการที่มีอยู่ได้ดีโดยเฉพาะอย่างยิ่งกับมาตรฐานในปี 2001 รายงานว่ามันเป็น เทียบเท่าที่ดีที่สุดในการ 100 MHz Pentium ในโหมดนี้ (1.1 GHz Pentiums มีในตลาดในเวลานั้น) Itanium ล้มเหลวที่จะให้ inroads อย่างมีนัยสำคัญกับIA-32หรือ RISC และจากนั้นได้รับความเดือดร้อนจากการเปิดตัวที่ประสบความสำเร็จของx 86- 64ตามระบบเข้าสู่ตลาดเซิร์ฟเวอร์ระดับไฮเอนด์, ระบบที่มีความเข้ากันได้กับการใช้งานที่ 86 ที่มีอายุมากกว่า นักข่าวจอห์นซี Dvorakแสดงความคิดเห็นในปี 2009 เกี่ยวกับประวัติของโปรเซสเซอร์ Itanium กล่าวว่า "นี่ยังคงเป็นหนึ่งใน Fiascos ที่ดีของสุดท้าย 50 ปี" ในบทความหัวข้อ "วิธี Itanium ฆ่าอุตสาหกรรมคอมพิวเตอร์" คอลัมนิเทคแอชลี่ย์แวนซ์ให้ความเห็นว่าความล่าช้าและผลประกอบ "เปิดผลิตภัณฑ์ลงในเรื่องตลกในอุตสาหกรรมชิป". ในการให้สัมภาษณ์โดนัลด์นูกล่าวว่า "วิธี Itanium ... ที่ควรจะเป็นเพื่อที่ยอดเยี่ยมจนได้ กลับกลายเป็นว่าคอมไพเลอร์อยากสำหรับคนโดยทั่วไปเป็นไปไม่ได้ที่จะเขียน
ทั้งRed Hatและไมโครซอฟท์ประกาศแผนการที่จะวางสนับสนุน Itanium ในระบบปฏิบัติการของพวกเขาเนื่องจากการขาดความสนใจตลาดอย่างไรก็ตามอื่น ๆลีนุกซ์เช่นGentooยังคงมีอยู่สำหรับ Itanium ที่ 22 มีนาคม 2011, ออราเคิลประกาศหยุดการพัฒนา Itanium แม้ว่าการสนับสนุนทางเทคนิคสำหรับผลิตภัณฑ์ที่มีอยู่ของมันจะดำเนินต่อไปที่ 20 ตุลาคม, 2013, Oracle ได้เขียนอย่างเป็นทางการเกี่ยวกับความมุ่งมั่นที่จะปล่อย Oracle Database 12.1.0.1.0 ใน HP-UX Itanium 11.31 ต้น 2014 ในเดือนกุมภาพันธ์ปี 2014 Debianได้หยุดพอร์ต ia64 ของพวกเขา
อดีตเจ้าหน้าที่อินเทลรายงานว่าธุรกิจ Itanium ได้กลายเป็นผลกำไรสำหรับอินเทลในช่วงปลายปี 2009 2009 โดยชิปถูกนำไปใช้เกือบทั้งหมดบนเซิร์ฟเวอร์ที่ทำโดยเอชพีซึ่งมีกว่า 95% ของส่วนแบ่งตลาดเซิร์ฟเวอร์ Itanium,ทำให้ระบบปฏิบัติการหลักสำหรับ Itanium HP-UX . เมื่อวันที่ 22 มีนาคม 2011 อินเทลยืนยันความมุ่งมั่นที่จะ Itanium ที่มีหลายรุ่นของชิปในการพัฒนาและตามกำหนดเวลา
ตลาดอื่น ๆ
แม้ว่า Itanium ได้บรรลุความสำเร็จที่ จำกัด ในตลาดเฉพาะของคอมพิวเตอร์ระดับไฮเอนด์อินเทลหวังว่าเดิมก็จะพบว่าได้รับการยอมรับในวงกว้างแทนต้นฉบับx86สถาปัตยกรรม
เอเอ็มดีเลือกทิศทางที่แตกต่างกันการออกแบบรุนแรงน้อยx86-64 , ขยาย 64 บิตเพื่อ x86 สถาปัตยกรรมที่มีอยู่ซึ่งไมโครซอฟท์ได้รับการสนับสนุนจากนั้นบังคับให้อินเทลที่จะแนะนำนามสกุลเดียวกันในที่ใช้ x86 ประมวลผลของตัวเอง[ 16 ]การออกแบบเหล่านี้ สามารถเรียกใช้โปรแกรมที่มีอยู่ 32 บิตที่ความเร็วฮาร์ดแวร์พื้นเมืองในขณะที่ให้การสนับสนุนสำหรับหน่วยความจำแบบ 64 บิตที่อยู่และการปรับปรุงอื่น ๆ ที่จะใช้งานใหม่[ 6 ]สถาปัตยกรรมนี้ได้ตอนนี้กลายเป็นสถาปัตยกรรม 64 บิตเด่นในสก์ท็อปและตลาดแบบพกพา แม้ว่าบางเวิร์กสเตชันที่ใช้ Itanium ถูกเปิดตัวครั้งแรกโดย บริษัท เช่นSGIพวกเขาจะไม่สามารถใช้ได้อีก
ประวัติ
การพัฒนา: 1989-2000 นปี 1989 เอชพีระบุว่าการลดชุดคำสั่งคอมพิวเตอร์ (RISC) สถาปัตยกรรมที่ใกล้ขีด จำกัด ของการประมวลผลที่หนึ่งการเรียนการสอนต่อวงจร . นักวิจัยของ HP ตรวจสอบสถาปัตยกรรมใหม่ภายหลังชื่อคอมพิวเตอร์การเรียนการสอนคู่ขนานอย่างชัดเจน (EPIC) ที่ช่วยให้การประมวลผลที่จะดำเนินการหลายขั้นตอนในวงจรนาฬิกาแต่ละ EPIC ดำเนินการรูปแบบของคำสั่งที่ยาวมาก (VLIW) สถาปัตยกรรมซึ่งคำคำเดียวมีคำแนะนำหลาย ๆ กับมหากาพย์, คอมไพเลอร์จะเป็นตัวกำหนดล่วงหน้าซึ่งคำแนะนำสามารถดำเนินการในเวลาเดียวกันดังนั้นไมโครโปรเซสเซอร์เพียงรันคำสั่งและไม่จำเป็นต้องมีกลไกที่ซับซ้อนเพื่อตรวจสอบคำแนะนำในการดำเนินการคู่ขนานกันเป้าหมายของวิธีการนี้เป็นสองเท่า : เพื่อให้การตรวจสอบลึกลงไปของรหัสที่รวบรวมเวลาเพื่อระบุโอกาสเพิ่มเติมสำหรับการดำเนินการคู่ขนานและการออกแบบเพื่อให้ง่ายต่อการประมวลผลและการลดการใช้พลังงานโดยไม่จำเป็นต้องสำหรับการจัดตาราง runtime วงจร
HP เชื่อว่ามันไม่ได้เป็นค่าใช้จ่ายที่มีประสิทธิภาพสำหรับ บริษัท ระบบองค์กรบุคคลดังกล่าวเป็นตัวเองในการพัฒนาไมโครโปรเซสเซอร์กรรมสิทธิ์จึงร่วมมือกับอินเทลในปี 1994 ที่จะพัฒนา IA-64 สถาปัตยกรรมที่ได้มาจากมหากาพย์ อินเทลก็เต็มใจที่จะดำเนินการพยายามในการพัฒนามีขนาดใหญ่มากใน IA-64 ในความคาดหวังว่าผลไมโครโปรเซสเซอร์จะใช้โดยส่วนใหญ่ของผู้ผลิตระบบองค์กร HP และ Intel ริเริ่มความพยายามร่วมกันพัฒนาขนาดใหญ่ที่มีเป้าหมายในการส่งมอบผลิตภัณฑ์แรกที่เมอร์เซด, ในปี 1998
ในระหว่างการพัฒนา Intel, HP, และนักวิเคราะห์ในอุตสาหกรรมคาดการณ์ว่า IA-64 จะมีอิทธิพลในเซิร์ฟเวอร์เวิร์คสเตชั่และเดสก์ท็ระดับไฮเอนด์และในที่สุดก็มาแทนที่ RISC และซับซ้อนชุดคำสั่งคอมพิวเตอร์ (CISC) สถาปัตยกรรมสำหรับทุกการใช้งานทั่วไปCompaqและซิลิคอนกราฟฟิกส์ตัดสินใจที่จะละทิ้งการพัฒนาต่อไปของอัลฟาและMIPSสถาปัตยกรรมตามลำดับในความโปรดปรานของการโยกย้ายไปยัง IA-64
หลายกลุ่มพัฒนาระบบปฏิบัติการสำหรับสถาปัตยกรรมรวมถึงMicrosoft Windows , Linux , และUNIXสายพันธุ์เช่นHP-UX , Solaris , Tru64 UNIX , และเนยแข็ง / 64 ( ช่วงสามถูกยกเลิกก่อนที่จะถึงตลาด) โดยปี 1997 มันก็เห็นได้ชัดว่าสถาปัตยกรรม IA-64 และคอมไพเลอร์มีมากขึ้นยากที่จะดำเนินการกว่าที่คิดและการส่งมอบของเมอร์เซดเริ่มลื่นไถลรวมถึงความยากลำบากทางเทคนิคจำนวนทรานซิสเตอร์ที่สูงมากจำเป็นในการสนับสนุนการเรียนการสอนกว้าง คำพูดและการแคชขนาดใหญ่นอกจากนั้นยังมีปัญหาเชิงโครงสร้างภายในโครงการขณะที่ทั้งสองเป็นส่วนหนึ่งของทีมงานที่ร่วมกันใช้วิธีการที่แตกต่างกันและมีการจัดลำดับความสำคัญแตกต่างกันเล็กน้อยตั้งแต่เมอร์เซดเป็นหน่วยประมวลผล EPIC แรกการพัฒนา ความพยายามที่ประสบปัญหาที่ไม่คาดคิดมากกว่าทีมที่เป็นที่คุ้นเคยกับการ นอกจากนี้แนวคิด EPIC ขึ้นอยู่กับความสามารถในการคอมไพเลอร์ที่ไม่เคยถูกนำมาใช้ก่อนดังนั้นการวิจัยเพิ่มเติมได้ที่จำเป็น
Intel ประกาศชื่ออย่างเป็นทางการของหน่วยประมวลผลที่ใช้ Itaniumเมื่อวันที่ 4 ตุลาคม 1999 ภายในไม่กี่ชั่วโมงชื่อItanicได้รับการประกาศเกียรติคุณในUsenetข่าวสารอ้างอิงถึงไททานิกที่ "Unsinkable" เรือเดินสมุทรที่จมในปี 1912 "Itanic" ได้ตั้งแต่มักจะถูกนำมาใช้โดยการสมัครสมาชิก ,และอื่น ที่จะหมายความว่าการลงทุนหลายพันล้านดอลลาร์ใน Itanium และ hype ต้นที่เกี่ยวข้องกับมันจะเป็น ตามด้วยการตายที่ค่อนข้างรวดเร็วของ
Itanium (เมอร์เซด): 2001
หน่วยประมวลผลไอเทเนียม
| |
ผลิต | ตั้งแต่เดือนมิถุนายนปี 2001 ถึงมิถุนายน 2002 |
---|---|
ผู้ผลิตที่พบบ่อย (s) |
|
แม็กซ์ซีพียู อัตรานาฬิกา | 733 MHz ถึง 800 MHz |
FSBความเร็ว | 266 MT / s ที่ |
ชุดคำสั่ง | Itanium |
แกน | 1 |
แคช L2 | 96 กิโลไบต์ |
แคช L3 | 2 หรือ 4 MB |
ซ็อกเก็ต (s) |
|
ชื่อแกน (s) |
|
เมื่อถึงเวลาที่ไอเทเนียมได้รับการปล่อยตัวในเดือนมิถุนายน 2001 ผลการดำเนินงานไม่ได้ดีกว่า RISC และ CISC ประมวลผลการแข่งขันItanium แข่งขันที่ต่ำสุด (ส่วนใหญ่ 4 CPU และระบบขนาดเล็ก) กับเซิร์ฟเวอร์อยู่บนพื้นฐานของx86ประมวลผลและใน ระดับไฮเอนด์ที่มีไอบีเอ็ม เพาเวอร์สถาปัตยกรรมและSun Microsystems ' SPARCสถาปัตยกรรม Intel Itanium ปรับเปลี่ยนเพื่อมุ่งเน้นธุรกิจระดับสูงและHPCคอมพิวเตอร์พยายามที่จะซ้ำกันประสบความสำเร็จในตลาดของ x 86 "แนวนอน" (กล่าวคือสถาปัตยกรรมเดียวผู้ขายหลายระบบ)ความสำเร็จของหน่วยประมวลผลรุ่นนี้เริ่มต้นถูก จำกัด ให้เปลี่ยนPA-RISCในระบบ HP, อัลฟาในระบบ Compaq และMIPSในSGIระบบ แต่ไอบีเอ็มยังส่งซูเปอร์คอมพิวเตอร์ที่ใช้ตัวประมวลผลนี้[ 33 ]พาวเวอร์และ SPARC ยังคงแข็งแกร่งในขณะที่ x86 สถาปัตยกรรม 32 บิตยังคงเติบโตในพื้นที่ขององค์กรที่สร้างการประหยัดจากขนาดการเติมพลังด้วยการติดตั้งฐานมหาศาล
ระบบเพียงไม่กี่พันใช้เดิมเมอร์เซดประมวลผล Itanium ถูกขายเนื่องจากประสิทธิภาพการทำงานที่ค่อนข้างยากจน, ค่าใช้จ่ายสูงและความพร้อมใช้ซอฟแวร์ จำกัดระหนักว่าการขาดของซอฟต์แวร์ที่อาจจะเป็นปัญหาร้ายแรงในอนาคตอินเทลทำหลายพันเหล่านี้ ระบบแรกที่มีให้กับผู้ผลิตซอฟต์แวร์อิสระ (ISV) เพื่อกระตุ้นการพัฒนา HP และ Intel นำรุ่นต่อไป Itanium 2 หน่วยประมวลผลในการทำตลาดในปีต่อมา
โปรเซสเซอร์ตระกูลไอเทเนียม | ||||
---|---|---|---|---|
1 มิถุนายน 2001 - 2006 | 2002-2006 / รุ่น 2 | 2006-2010 / รุ่น 2 | 2006-2010 | 2009-2011 |
Itanium ที่ 2: 2002-2010
Itanium 2 หน่วยประมวลผล
| |
ผลิต | จาก 2002-2010 |
---|---|
ออกแบบโดย | อินเทล |
ผู้ผลิตที่พบบ่อย (s) |
|
แม็กซ์ซีพียูอัตรานาฬิกา | 900 MHz ถึง 2.53 GHz |
ชุดคำสั่ง | Itanium |
แกน | 1, 2, 4 หรือ 8 |
แคช L2 | 256 กิโลไบต์ใน Itanium2 256 กิโลไบต์ (D) + 1 MB (I) หรือ 512 กิโลไบต์ (I) ใน (ชุด Itanium2 9x00) |
แคช L3 | 1.5-32 ล้านบาท |
ซ็อกเก็ต (s) |
|
ชื่อแกน (s) |
|
Itanium 2หน่วยประมวลผลที่ได้รับการปล่อยตัวในปี 2002 และได้รับการวางตลาดสำหรับเซิร์ฟเวอร์องค์กรมากกว่าขอบเขตทั้งหมดของคอมพิวเตอร์ระดับไฮเอนด์ Itanium 2 ครั้งแรกมีชื่อรหัสว่าMcKinleyได้รับการพัฒนาร่วมกันโดยเอชพีและอินเทล มันโล่งใจมากของปัญหาการทำงานของโปรเซสเซอร์ Itanium เดิมซึ่งส่วนใหญ่เกิดจากระบบย่อยหน่วยความจำไม่มีประสิทธิภาพMcKinleyมี 221000000 ทรานซิสเตอร์ (ซึ่ง 25 ล้านได้สำหรับตรรกะ), วัด 19.5 มมมมโดย 21.6 (421 มม2 ) และ ถูกประดิษฐ์ใน 180 นาโนเมตร CMOS กลุ่มกระบวนการที่มีหกชั้นของอลูมิเนียม metallization
ในปี 2003 เอเอ็มดีเปิดตัวOpteronซึ่งใช้สถาปัตยกรรม 64 บิตของตัวเอง ( AMD64 ) Opteron รับการยอมรับอย่างรวดเร็วในพื้นที่เซิร์ฟเวอร์ขององค์กรเพราะมันให้อัพเกรดได้ง่ายจากx 86 . Intel ตอบสนองโดยการดำเนินการใน x86-64 ของซีออนโปรเซสเซอร์ในปี 2004
Intel เปิดตัวสมาชิกใหม่ Itanium 2 ครอบครัวมีชื่อรหัสว่าเมดิสัน , ในปี 2003 เมดิสันใช้กระบวนการนาโนเมตร 130 และเป็นพื้นฐานของการประมวลผล Itanium ใหม่ทั้งหมดจนกว่ามอนเตซิโตได้รับการปล่อยตัวในมิถุนายน 2006
ในเดือนมีนาคมปี 2005 อินเทลประกาศว่าจะเป็นคนที่ทำงานบนหน่วยประมวลผล Itanium ใหม่โค้ดเนมซีจะได้รับการปล่อยตัวในปี 2007 วิลลาจะมีสี่แกนประมวลผลและจะเข้ามาแทนที่รถบัส Itanium กับใหม่อินเตอร์เฟซระบบสามัญซึ่งจะถูกนำมาใช้โดย หน่วยประมวลผลซีออนใหม่ต่อมาในปีที่อินเทลปรับปรุงวันที่ส่งมอบวิลลาที่จะปลายปี 2008
ในเดือนพฤศจิกายนปี 2005 ที่สำคัญผู้ผลิตเซิร์ฟเวอร์ Itanium ร่วมกับ Intel และจำนวนของผู้จำหน่ายซอฟต์แวร์ในรูปแบบ Itanium โซลูชั่นพันธมิตรเพื่อส่งเสริมสถาปัตยกรรมและเร่งซอฟต์แวร์ porting พันธมิตรประกาศว่าสมาชิกจะลงทุน 10000000000 $ ในการแก้ปัญหาโดยใช้ Itanium ตอนท้ายของทศวรรษ
ในปี 2006 อินเทลส่งมอนเตซิโต (วางตลาดเมื่อItanium 2 9000ซีรีส์), dual-core processor ว่าประมาณสองเท่าประสิทธิภาพการทำงานและลดการใช้พลังงานโดยประมาณร้อยละ 20
Intel เปิดตัวItanium 2 9100ซีรีส์ชื่อรหัสMontvale , ในเดือนพฤศจิกายน 2007 ในเดือนพฤษภาคม 2009 ตารางเวลาสำหรับวิลลาติดตามตัวของมันได้รับการปรับปรุงอีกครั้งกับการเปิดตัวที่จะ OEMs วางแผนสำหรับไตรมาสแรกของปี 2010
Itanium 9300 (วิลลา): 2010
บทความหลัก: วิลลา (ประมวลผล)
Itanium 9300ชุดประมวลผลโค้ดเนมซีได้รับการปล่อยตัวเมื่อวันที่ 8 กุมภาพันธ์ 2010 มีประสิทธิภาพการทำงานมากขึ้น และความจุของหน่วยความจำ
อุปกรณ์ที่ใช้กระบวนการ 65 นาโนเมตรรวมถึง 2-4 แกนถึง 24 MBบนตายแคชเทคโนโลยี Hyper-Threading และควบคุมหน่วยความจำแบบบูรณาการ จะดำเนินการสองครั้งที่อุปกรณ์การแก้ไขข้อมูลซึ่งจะช่วยในการแก้ไขข้อผิดพลาดในหน่วยความจำ วิลลายังดำเนินIntel QuickPath Interconnect (QPI) เพื่อแทนที่สถาปัตยกรรมรถบัสที่ใช้ Itanium มันมีแบนด์วิดธ์ interprocessor จุดสูงสุดของ 96 GB / s และแบนด์วิดธ์หน่วยความจำสูงสุด 34 GB / s กับ QuickPath ประมวลผลได้รวมตัวควบคุมหน่วยความจำและเชื่อมต่อหน่วยความจำโดยตรงโดยใช้อินเตอร์เฟซ QPI เชื่อมต่อโดยตรงกับหน่วยประมวลผลอื่น ๆ และ I / O ฮับ QuickPath นอกจากนี้ยังใช้ในการประมวลผลของอินเทลใช้Nehalemmicroarchitecture ทำให้มันเป็นไปได้ว่าวิลลาและ Nehalem จะสามารถที่จะใช้ชิปเซ็ตเดียวกันวิลลารวมสี่ตัวควบคุมหน่วยความจำแต่ละที่รองรับหลายDDR3 หน่วยความจำผ่านทางควบคุมหน่วยความจำที่แยกต่างหากเหมือน Nehalem-based ประมวลผลซีออนที่มีชื่อรหัสBeckton .
Itanium 9500 (Poulson): 2012
ที่ISSCC 2011, อินเทลนำเสนอกระดาษที่เรียกว่า "32nm 3.1 พันล้านทรานซิสเตอร์ 12 กว้างออก Itanium โปรเซสเซอร์สำหรับภารกิจเซิร์ฟเวอร์ที่สำคัญ". ให้ประวัติศาสตร์ของ Intel การเปิดเผยรายละเอียดเกี่ยวกับไมโครโปรเซสเซอร์ Itanium ที่ ISSCC บทความนี้มากที่สุด น่าจะหมายถึง Poulson นักวิเคราะห์เดวิด Kanter ตอบแทนที่ Poulson จะใช้สถาปัตยกรรมใหม่ที่มีรูปแบบที่ทันสมัยมากขึ้นแบบมัลติเธรดที่ใช้มากที่สุดเท่าที่สองกระทู้เพื่อปรับปรุงประสิทธิภาพสำหรับเธรดและมัลติเธรดปริมาณงานเดียว[ 54 ]บางข้อมูลใหม่ที่ได้รับการปล่อยตัวHotchipsประชุมข้อมูลใหม่ ๆ นำเสนอการปรับปรุงใน multithreading การปรับปรุง resilency (การเรียนการสอน Replay RAS) และคำใหม่ไม่กี่ (ลำดับความสำคัญด้ายการเรียนการสอนจำนวนเต็ม prefetching แคช, คำแนะนำการเข้าถึงข้อมูล)ชุดประมวลผล Itanium 9500, codenamed Poulsonคือหน่วยประมวลผลติดตามไปยังวิลลาและได้รับการปล่อยตัวเมื่อวันที่ 8 พฤศจิกายน 2012 ตามที่ Intel ก็ข้าม45 นาโนเมตรเทคโนโลยีการผลิตและการใช้32 นาโนเมตรเทคโนโลยีการผลิต; มันมีแปดแกนมีสถาปัตยกรรมที่ 12 ทั้งปัญหาการปรับปรุงมัลติเธรดและคำสั่งใหม่เพื่อใช้ประโยชน์จากความเท่าเทียมโดยเฉพาะอย่างยิ่งในการทำงานแบบเสมือน[ 44 ] [ 48 ] [ 49 ]ขนาดแคช L3 Poulson เป็น 32 MB ขนาดแคช L2 เป็น 6 MB, 512 ฉัน KB , 256 D กิโลไบต์ต่อคอ[ 50 ]ขนาดตายเป็น 544 ตารางมิลลิเมตรน้อยกว่ารุ่นก่อนวิลลา (698.75 ตารางมิลลิเมตร)
ในอินเทลประกาศเปลี่ยนสินค้า (PCN) 111456-01, มันอยู่ 4 รุ่น Itanium 9500 ชุด CPU ซึ่งจะถูกลบออกในภายหลังในเอกสารฉบับปรับปรุงใหม่ส่วนที่ถูกระบุไว้ในเอกสารของ Intel วัสดุประกาศข้อมูลในภายหลัง (MDDS) ฐานข้อมูลอินเทลภายหลังโพสต์คู่มืออ้างอิง Itanium 9500
รุ่นที่:
จำนวนหน่วยประมวลผล | ความถี่ |
---|---|
9520 | 1.73 GHz |
9540 | 2.13 GHz |
9550 | 2.4 GHz |
9560 | 2.53 GHz |
ในการเปรียบเทียบกับXeonครอบครัวของตัวประมวลผลของเซิร์ฟเวอร์ Itanium ไม่เคยมีสินค้าในปริมาณมากสำหรับอินเทล Intel ไม่ปล่อยตัวเลขการผลิต นักวิเคราะห์อุตสาหกรรมหนึ่งที่คาดกันว่าอัตราการผลิตเป็นโปรเซสเซอร์ 200,000 ต่อปีในปี 2007
ตามที่Gartner Inc การจำนวนรวมของเซิร์ฟเวอร์ Itanium (ไม่ประมวลผล) ที่ขายโดยผู้ขายทั้งหมดในปี 2007 ประมาณ 55,000 (มันไม่ชัดเจนไม่ว่าจะเป็นเซิร์ฟเวอร์คลัสเตอร์นับเป็นเซิร์ฟเวอร์เดียวหรือไม่). เทียบกับ 417,000 เซิร์ฟเวอร์ RISC (การแพร่กระจายในทุกผู้ขาย RISC) และ 8400000 x86 เซิร์ฟเวอร์ จาก 2001 ผ่าน 2007 ไอดีซีรายงานว่าจำนวน 184,000 ระบบที่ใช้ Itanium ได้รับการขายสำหรับเพาเวอร์ / SPARC / ระบบ Itanium ตลาดรวมของไอดีซีรายงานว่าเพาเวอร์จับ 42% ของรายได้และ SPARC จับ 32% ในขณะที่รายได้จากระบบที่ใช้ Itanium ถึง 26% ในไตรมาสที่สองของปี 2008 [ 61 ]ตามที่นักวิเคราะห์ของไอดีซี , ในปี 2007 เอชพีคิดอาจจะ 80% ของรายได้จากระบบไอเทเนียมตาม Gartner, ในปี 2008 เอชพีคิดเป็น 95% ของยอดขายไอเทเนียมเอชพีขายระบบ Itanium อยู่ที่อัตราประจำปีของ $ 4.4Bn ที่สิ้นสุด 2008 และลดลงถึง $ 3.5bn ในตอนท้ายของปี 2009 เมื่อเทียบกับที่ลดลง 35% ในรายได้ระบบยูนิกซ์สำหรับดวงอาทิตย์และลดลง 11% สำหรับ IBM ด้วยการเพิ่มรายได้เซิร์ฟเวอร์ x86-64 จาก 14% ในช่วงนี้ ระยะเวลา
ในเดือน ธ.ค. 2012, ไอดีซีเปิดตัวรายงานการวิจัยระบุว่าการส่งมอบเซิร์ฟเวอร์ Itanium จะยังคงแบนผ่าน 2016 โดยมีการจัดส่งประจำปีของ 26,000 ระบบ (ลดลงกว่า 50% เมื่อเทียบกับการส่งออกในปี 2008) [ 64 ]
สนับสนุนฮาร์ดแวร์
ระบบ
การสนับสนุนซอฟต์แวร์
Itanium ได้รับการสนับสนุนโดยต่อไปนี้ระบบปฏิบัติการ :
การแข่งขัน
ประมวลผล
บริษัท | ผลิตภัณฑ์ใหม่ล่าสุด | |||
---|---|---|---|---|
ชื่อ | จาก | ที่จะ | ชื่อ | ซีพียู |
Compaq | 2001 | 2001 | ProLiant 590 | 1-4 |
ไอบีเอ็ม | 2001 | 2005 | x455 | 1-16 |
Dell | 2001 | 2005 | PowerEdge 7250 | 1-4 |
ฮิตาชิ | 2001 | 2008 | Bladesymphony 1000 | 1-8 |
Unisys | 2002 | 2009 | ES7000 / หนึ่ง | 1-32 |
SGI | 2001 | 2011 | Altix 4000 | 1-2048 |
ฟูจิตสึ | 2005 | 2011 | PRIMEQUEST | 1-32 |
เอชพี | 2001 | ตอนนี้ | ความสมบูรณ์ | 1-256 |
กระทิง | 2002 | ตอนนี้ | NovaScale 9410 | 1-32 |
เอ็นอีซี | 2002 | ตอนนี้ | nx7700i | 1-256 |
Inspur | 2010 | ตอนนี้ | TS10000 | 2-1024 |
หัวเว่ย | 2012 | ตอนนี้ | ???? | ???? |
ขณะที่ปี 2012 เพียงไม่กี่ผู้ผลิตมีระบบ Itanium รวมทั้งHP , กระทิง , NEC , Inspurและหัวเว่ย . นอกจากนี้อินเทลมีแชสซีที่สามารถนำมาใช้โดยการติดตั้งระบบที่จะสร้าง Itanium ระบบ HP, เพียงหนึ่งของอุตสาหกรรมชั้นนำของสี่ผู้ผลิตเซิร์ฟเวอร์เพื่อนำเสนอระบบที่ใช้ Itanium ในวันนี้ผู้ผลิตไม่น้อยกว่า 80% ของไอเทเนียมทั้งหมด ระบบ HP 7200 ระบบขายในช่วงไตรมาสแรกของปี 2006 [ 66 ]เป็นกลุ่มของระบบการขายเป็นเซิร์ฟเวอร์ขององค์กรและเครื่องจักรสำหรับการประมวลผลด้านเทคนิคขนาดใหญ่ที่มีราคาขายเฉลี่ยต่อระบบเกินUS $ 200,000 ระบบทั่วไปใช้แปดหรือมากกว่าโปรเซสเซอร์ Itanium
ชิปเซ็ต
Itanium การเชื่อมต่อรถบัสไปยังส่วนที่เหลือของระบบผ่านทางชิปเซ็ต . ผู้ผลิตเซิร์ฟเวอร์องค์กรแยกความแตกต่างของระบบโดยการออกแบบและพัฒนาชิปเซ็ตที่ประมวลผลเชื่อมต่อไปยังหน่วยความจำ, การเชื่อมโยงของพวกเขาและตัวควบคุมอุปกรณ์ต่อพ่วง ชิปเซ็ตเป็นหัวใจของสถาปัตยกรรมระดับระบบสำหรับแต่ละการออกแบบระบบ การพัฒนาชิปเซ็ตค่าใช้จ่ายหลายสิบล้านดอลลาร์และแสดงให้เห็นถึงความมุ่งมั่นที่สำคัญในการใช้ไอเทเนียม ไอบีเอ็มสร้างชิปเซ็ตในปี 2003 และ Intel ในปี 2002 แต่พวกเขาไม่ได้มีการพัฒนาชิปเซ็ตที่รองรับเทคโนโลยีใหม่เช่นDDR2หรือPCI Express . [ 67 ]ปัจจุบันชิปเซ็ตที่ทันสมัยสำหรับ Itanium สนับสนุนเทคโนโลยีดังกล่าวเป็นผลิตภัณฑ์ที่ผลิตโดย HP, ฟูจิตสึ, SGI , เอ็นอีซีและฮิตาชิ
"วิลลา" รูปแบบการประมวลผลไอเทเนียมได้รับการออกแบบมาเพื่อใช้ร่วมกับชิปเซ็ตอินเทลซีออนโปรเซสเซอร์ EX (ประมวลผล Xeon ของอินเทลออกแบบมาสำหรับสี่หน่วยประมวลผลและเซิร์ฟเวอร์ขนาดใหญ่) มีเป้าหมายที่จะเพิ่มความคล่องตัวในการพัฒนาระบบและลดค่าใช้จ่ายสำหรับผู้ผลิตเซิร์ฟเวอร์หลายคนพัฒนาทั้ง Itanium- และเซิร์ฟเวอร์ Xeon ตาม แต่ในปี 2013 ในเป้าหมายนี้ถูกผลักกลับไป "ประเมินโอกาสในการดำเนินงานในอนาคต"
การสนับสนุนซอฟต์แวร์
Itanium ได้รับการสนับสนุนโดยต่อไปนี้ระบบปฏิบัติการ :
- HP-UX 11i
- OpenVMS I64
- ดุ๊กดิ๊ก OS, Intel 64 (x86-64) พอร์ตได้รับการพัฒนา
- การกระจาย GNU / Linux ( GentooและSLES SUSE ของ )
- กระทิง GCOS 8
Itanium ยังได้รับการสนับสนุนโดยระบบปฏิบัติการเหล่านี้:
- Debian (ลดลงสนับสนุนกุมภาพันธ์ 2014)
- Windows NTครอบครัว
- Red Hat Enterprise Linux
- TurboLinux
- NEC ACOS
- FreeBSD
ไมโครซอฟท์ประกาศว่า Windows Server 2008 R2 จะเป็นรุ่นล่าสุดของ Windows Server เพื่อสนับสนุน Itanium และมันก็จะหยุดการพัฒนาของรุ่น Itanium ของVisual StudioและSQL Server .[ 8 ]ในทำนองเดียวกันRed Hat Enterprise Linux 5 (คนแรก ปล่อยมีนาคม 2007) เป็นฉบับที่ใช้ Itanium ล่าสุดของ Red Hat Enterprise Linux [ 9 ]และเป็นที่ยอมรับของอูบุนตู 10.04 LTS (ปล่อยในเดือนเมษายนปี 2010) เป็นที่รองรับการเปิดตัวอูบุนตูเมื่อ Itanium [ 73 ]เอชพีจะไม่ได้รับการสนับสนุนหรือรับรอง Linux บน Itanium 9300 (วิลลา) เซิร์ฟเวอร์
ในปลายเดือนกันยายน 2012, เอ็นอีซีประกาศผลตอบแทนจาก IA64 กับสายโนอาห์ก่อนหน้านี้ในการประมวลผลที่เป็นกรรมสิทธิ์เมนเฟรมผลิตขณะนี้อยู่ในตัวแปร Quad-Core 40 นาโนเมตรที่เรียกว่าโนอาห์-6
ออราเคิลคอร์ปอเรชั่นประกาศมีนาคม 2011 ว่ามันจะลดลงการพัฒนาซอฟต์แวร์แอพลิเคชันสำหรับแพลตฟอร์ม Itanium ที่มีคำอธิบายที่ว่า "การจัดการ Intel ทำให้มันชัดเจนว่าเน้นกลยุทธ์ของพวกเขาคือบน x86 ไมโครโปรเซสเซอร์ของพวกเขาและที่ Itanium กำลังใกล้จะหมดอายุการ". [ 10 ]อย่างไรก็ตามรัฐแคลิฟอร์เนียผู้พิพากษาตัดสินว่า Oracle จะต้องดำเนินการต่อการสนับสนุนและการปล่อยรุ่นใหม่ของซอฟต์แวร์ที่ออกแบบมาสำหรับเซิร์ฟเวอร์ของอินเทลที่ใช้ Itanium ขายโดย Hewlett-Packard หลังจากการตั้งถิ่นฐานและปล่อยข้อตกลงระหว่าง HP, Oracle และมาร์คฮูลด์ได้ เปิดเผยว่าออราเคิลจะต้องดำเนินการเพื่อนำเสนอชุดผลิตภัณฑ์ที่มีต่อของเอชพีที่ใช้ Itanium แพลตฟอร์มเซิร์ฟเวอร์และไม่ได้หารือใน Oracle ดุลยพินิจในการตัดสินใจว่าจะทำเช่นนั้นหรือไม่ ภาระผูกพันของออราเคิลจะดำเนินการเพื่อนำเสนอผลิตภัณฑ์ที่มีต่อของเอชพีที่ใช้ Itanium แพลตฟอร์มเซิร์ฟเวอร์เวลาจนกว่าจะถึงเวลาเช่น HP หยุดการขายของเซิร์ฟเวอร์ที่ใช้ Itanium ของ ออราเคิลได้รับคำสั่งให้พอร์ตผลิตภัณฑ์ของ บริษัท ไปยังเซิร์ฟเวอร์ของเอชพีที่ใช้ Itanium โดยไม่ต้องเสียค่าใช้จ่ายกับ HP
HP ขายvirtualizationเทคโนโลยีเพื่อการ Itanium เรียกว่าIntegrity เครื่องเสมือน .
เพื่อให้ซอฟต์แวร์มากขึ้นในการทำงานบน Itanium อินเทลสนับสนุนการพัฒนาของคอมไพเลอร์ที่ดีที่สุดสำหรับแพลตฟอร์มโดยเฉพาะอย่างยิ่งชุดของตัวเองของคอมไพเลอร์[ 77 ] [ 78 ]เริ่มต้นในเดือนพฤศจิกายน 2010, ด้วยการเปิดตัวชุดผลิตภัณฑ์ใหม่ที่ใช้ Itanium Intel คอมไพเลอร์ที่ไม่ได้มาพร้อมกับอินเทลคอมไพเลอร์ 86 ในผลิตภัณฑ์เดียว Intel มีเครื่องมือและ Intel Itanium เครื่องมือ x 86 รวมทั้งคอมไพเลอร์อิสระที่แตกต่างกันในการรวมกลุ่มสินค้าGCC , [ 79 ] [ 80 ] Open64และMicrosoft Visual Studio 2005 (และต่อมา) [ 81 ]นอกจากนี้ยังมีความสามารถในการผลิตรหัสเครื่องสำหรับ Itanium ตาม Itanium โซลูชั่นพันธมิตรกว่า 13,000 โปรแกรมมีอยู่สำหรับระบบ Itanium ขึ้นในช่วงต้นปี 2008 [ 82 ]แม้ว่าดวงอาทิตย์ได้เข้าร่วมประกวด Itanium นับประยุกต์ใช้ในอดีตที่ผ่านมา[ 83 ]ISA ยังสนับสนุนการGelato , กลุ่มผู้ใช้ Itanium HPC และชุมชนนักพัฒนา ที่รังเพลิงและสนับสนุนการเปิดแหล่งซอฟต์แวร์สำหรับไอเทเนียม[ 84 ]
จำลอง
จำลองเป็นเทคนิคที่ช่วยให้คอมพิวเตอร์รันรหัสไบนารีที่คอมไพล์สำหรับประเภทที่แตกต่างกันของเครื่องคอมพิวเตอร์ ก่อนที่จะเข้าซื้อกิจการของไอบีเอ็มQuickTransitในปี 2009, การประยุกต์ใช้ซอฟแวร์สำหรับไบนารีIRIX / MIPSและSolaris / SPARCสามารถเรียกใช้ผ่านทางประเภทของการแข่งขันที่เรียกว่า "แบบไดนามิกไบนารีแปล" ในลินุกซ์ / Itanium ในทำนองเดียวกันเอชพีนำมาใช้วิธีการที่จะดำเนินการ PA-RISC / HP-UX ที่ใช้ Itanium / HP-UX ผ่านการจำลองเพื่อให้ง่ายต่อการย้ายถิ่นของลูกค้า PA-RISC ของชุดคำสั่ง Itanium ที่แตกต่างกันอย่างสิ้นเชิง โปรเซสเซอร์ Itanium ยังสามารถทำงานในสภาพแวดล้อมเมนเฟรมGCOSจากGroupe กระทิงและอีกหลายx86ระบบปฏิบัติการที่ผ่านการเรียนการสอนชุดจำลอง .
การแข่งขัน
ในปี 2005 ระบบ Itanium คิดเป็นประมาณ 14% ของรายได้จากระบบ HPC แต่ร้อยละลดลงในขณะที่การเปลี่ยนแปลงอุตสาหกรรมเพื่อ x86-64 กลุ่มสำหรับโปรแกรมนี้
ตุลาคม 2008 กระดาษโดย Gartner ในการประมวลผลวิลลากล่าวว่า "... แผนงานในอนาคตสำหรับ Itanium มีลักษณะแข็งแรงเท่าที่ใดมีเพียร์ริสก์เช่นพลังงานหรือ SPARC".
ซูเปอร์คอมพิวเตอร์และระบบคอมพิวเตอร์สมรรถนะสูง
คอมพิวเตอร์ที่ใช้ Itanium ปรากฏตัวครั้งแรกในรายการของTOP500 ซูเปอร์คอมพิวเตอร์ในพฤศจิกายน 2001 ตำแหน่งที่ดีที่สุดที่เคยประสบความสำเร็จโดยใช้ Itanium 2ระบบอยู่ในรายชื่อถูก # 2 ประสบความสำเร็จในเดือนมิถุนายนปี 2004 เมื่อฟ้าร้อง (LLNL) ได้เข้า รายการที่มี Rmax ของ 19.94 teraflops ในเดือนพฤศจิกายนปี 2004 โคลัมเบียเข้ามาในรายการตอนที่ 2 กับ 51.8 teraflops และมีเครื่องคอมพิวเตอร์ที่ใช้ Itanium อย่างน้อยหนึ่งใน 10 อันดับแรกจากนั้นจนถึงมิถุนายน 2007 จำนวนสูงสุดของเครื่องที่ใช้ Itanium ในรายการที่เกิดขึ้นในเดือนพฤศจิกายน 2,004 รายการที่ 84 ระบบ (16.8%); โดยเดือนมิถุนายน 2012 นี้ได้ลดลงถึงหนึ่งในระบบ (0.2%), [ 87 ]และไม่มีระบบ Itanium ยังคงอยู่ในรายชื่อในเดือนพฤศจิกายน 2012
ประมวลผล
ประมวลผลออก
โปรเซสเซอร์ Itanium แสดงความก้าวหน้าในความสามารถ เมอร์เซดเป็นหลักฐานการแนวคิด McKinley มากขึ้นลำดับชั้นของหน่วยความจำและได้รับอนุญาต Itanium จะกลายเป็นความสามารถในการแข่งขันที่เหมาะสม เมดิสันที่มีการเปลี่ยนไปใช้กระบวนการ 130 นาโนเมตรได้รับอนุญาตสำหรับพื้นที่แคชพอที่จะเอาชนะคอขวดประสิทธิภาพการทำงานที่สำคัญ มอนเตซิโตกับกระบวนการ 90 นาโนเมตรได้รับอนุญาตให้ดำเนินการแบบ dual-core และหลักในการปรับปรุงประสิทธิภาพการทำงานต่อวัตต์ Montvale เพิ่มอีกสามคุณสมบัติใหม่: lockstep หลักระดับ demand-based switching และความถี่รถบัสด้านหน้าด้านข้างของได้ถึง 667 MHz
สมญานาม | กระบวนการ | วันที่เข้าฉาย | นาฬิกา | L2 แคช / แกน | L3 แคช / หน่วยประมวลผล | รถบัส | ตาย / อุปกรณ์ | คอร์ /ตาย | วัตต์ / อุปกรณ์ | ความคิดเห็น |
---|---|---|---|---|---|---|---|---|---|---|
Itanium | ||||||||||
เมอร์เซด | 180 นาโนเมตร | 2001-06 | 733 MHz | 96 กิโลไบต์ | ไม่มี | 266 MHz | 1 | 1 | 116 | 2 MB ปิดตายแคช L3 |
800 MHz | 130 | 4 MB ปิดตายแคช L3 | ||||||||
Itanium 2 | ||||||||||
McKinley | 180 นาโนเมตร | 2002/07/08 | 900 MHz | 256 กิโลไบต์ | 1.5 MB | 400 MHz | 1 | 1 | 130 | HW branchlong |
1 GHz | 3 MB | 130 | ||||||||
เมดิสัน | 130 นาโนเมตร | 2003-06-30 | 1.3 GHz | 3 MB | 130 | |||||
1.4 GHz | 4 MB | 130 | ||||||||
1.5 GHz | 6 MB | 130 | ||||||||
2003/09/08 | 1.4 GHz | 1.5 MB | 130 | |||||||
2004-04 | 1.4 GHz | 3 MB | 130 | |||||||
1.6 GHz | ||||||||||
เดียร์ฟิลด์ | 2003/09/08 | 1.0 GHz | 1.5 MB | 62 | แรงดันไฟฟ้าต่ำ | |||||
ฮอน[ 88 ] | 2004 ไตรมาส 1 | 1.1 GHz | 4 MB | 400 MHz | 2 | 1 | 260 | 32 MB L4 | ||
Fanwood | 2004/11/08 | 1.6 GHz | 3 MB | 533 MHz | 1 | 1 | 130 | |||
1.3 GHz | 400 MHz | 62? | แรงดันไฟฟ้าต่ำ | |||||||
เมดิสัน | 2004/11/08 | 1.6 GHz | 9 MB | 400 MHz | 130 | |||||
2005/07/05 | 1.67 GHz | 6 MB | 667 MHz | 130 | ||||||
2005-07-18 | 1.67 GHz | 9 MB | 667 MHz | 130 | ||||||
Itanium 2 9000 ซีรีส์ | ||||||||||
มอนเตซิโต | 90 นาโนเมตร | 2006-07-18 | 1.4 GHz | 256 กิโลไบต์ (D) + 1 MB (I) | 6-24 MB | 400 MHz | 1 | 2 | 104 | virtualization, multithread ไม่ HW IA-32 |
1.6 GHz | 533 MHz | |||||||||
Itanium 2 9100 ซีรีส์ | ||||||||||
Montvale | 90 นาโนเมตร | 2007-10-31 | 1.42-1.66 GHz | 256 กิโลไบต์ (D) + 1 MB (I) | 8-24 MB | 400-667 MHz | 1 | 1-2 | 75-104 | lockstep หลักระดับความต้องการใช้สลับ |
Itanium 9300 ซีรีส์ | ||||||||||
วิลลา | 65 นาโนเมตร | 2010-02-08 | 1.33-1.73 GHz | 256 กิโลไบต์ (D) + 512 กิโลไบต์ (I) | 10-24 MB | QPI ด้วยความเร็ว 4.8 GT / s ที่ | 1 | 2-4 | 130-185 | การเชื่อมต่อใหม่แบบจุดต่อจุดโปรเซสเซอร์QPIแทนที่เอฟเอส . เทอร์โบ |
Itanium ชุด 9500 | ||||||||||
Poulson | 32 นาโนเมตร | 2012/11/08[ 89 ] | 1.73-2.53 GHz | 256 กิโลไบต์ (D) + 512 กิโลไบต์ (I) | 20-32 MB | QPI ด้วยความเร็ว 6.4 GT / s ที่ | 1 | 4-8 | 130-170 | ความกว้างของปัญหาสองเท่า (6-12 คำสั่งต่อรอบ), เทคโนโลยีการเรียนการสอน Replay, hyperthreading คู่โดเมน[ 90 ] [ 91 ] [ 92 ] |
โปรเซสเซอร์ในอนาคต
ในระหว่างเอชพีกับออราเคิลสนับสนุนคดีเอกสารที่ศาลเปิดผนึกจากผู้พิพากษาซานตาคลาราศาลเปิดเผยในปี 2008 Hewlett-Packard จ่ายอินเทลคอร์ปรอบ $ 440,000,000 เพื่อให้การผลิตและการปรับปรุงไมโครโปรเซสเซอร์ Itanium จาก 2009 ถึง 2014 ในปี 2010 ทั้งสอง บริษัท ได้ลงนามในอีก $ 250,000,000 จัดการซึ่งต้องอินเทลที่จะดำเนินการหน่วยประมวลผลกลาง Itanium สำหรับเครื่องของเอชพีจนถึงปี 2017 ภายใต้เงื่อนไขของสัญญา HP มีการจ่ายเงินสำหรับชิปที่ได้รับจากอินเทลในขณะที่อินเทลเปิดตัววิลลา Poulson, Kittson และ Kittson + ชิปในการประมูลจะค่อยๆเพิ่มประสิทธิภาพการทำงานของแพลตฟอร์ม[ 93 ] [ 94 ]
Kittson
Kittsonจะทำตาม Poulson ในปี 2014 Kittson เช่น Poulson จะได้รับการผลิตโดยใช้กระบวนการแบบ 32 นาโนเมตรของอินเทล รายละเอียดอื่น ๆ ไม่กี่เป็นที่รู้จักกันเกินกว่าการดำรงอยู่ของสมญานามและความเข้ากันได้ไบนารีและซ็อกเก็ตที่มี Poulson และวิลลาแม้ว่าจะย้ายไปร่วมกับซ็อกเก็ต 86 ซีออน "จะได้รับการประเมินเพื่อโอกาสในการดำเนินการในอนาคต" หลังจาก Kittson
- 1989:
- HP เริ่มต้นการสืบสวน EPIC [ 19 ]
- 1994:
- มิถุนายน: HP และ Intel ประกาศความร่วมมือ
- 1995:
- กันยายน: HP, Novell และSCOประกาศแผนการสำหรับ "ปริมาณสูงระบบปฏิบัติการยูนิกซ์" เพื่อให้ "64 บิตคอมพิวเตอร์ในเครือข่ายในสถาปัตยกรรม HP / อินเทล"
- 1996
- ตุลาคม: Compaqประกาศว่าจะใช้ IA-64
- 1997:
- 1998:
- มีนาคม: SCO ยอมรับพันธมิตร HP / SCO Unixคือตอนนี้ตายไปแล้ว
- มิถุนายน: ไอดีซีคาดการณ์ว่ายอดขาย IA-64 ระบบจะถึง $ 30bn / ปี 2001
- มิถุนายน: อินเทลประกาศเซดจะล่าช้าจากช่วงครึ่งหลังของปี 1999 ถึงครึ่งแรกของปี 2000
- กันยายน: IBM ประกาศว่าจะสร้างเครื่องเมอร์เซดตาม[ 101 ]
- ตุลาคม: โครงการอร์เรย์มีรูปแบบในการสร้างร่วมกันUNIXสำหรับ IA 64
- 1999:
- กุมภาพันธ์: โครงการ Trillianเป็นที่เกิดขึ้นกับพอร์ตลินุกซ์ที่จะ IA-64
- สิงหาคม: ไอดีซีคาดการณ์ว่ายอดขาย IA-64 ระบบจะถึง $ 25bn / ปี 2002
- ตุลาคม: อินเทลประกาศItaniumชื่อ
- ตุลาคม: ระยะItanicถูกนำมาใช้ครั้งแรกในการสมัครสมาชิก .
- 2000
- กุมภาพันธ์: โครงการ Trillianให้รหัสแหล่งที่มา
- มิถุนายน: ไอดีซีคาดการณ์ว่ายอดขายระบบ Itanium จะถึง $ 25bn / ปี 2003
- กรกฏาคม: ดวงอาทิตย์และ Intel วาง Solaris-on-Itanium แผน
- สิงหาคม: เอเอ็มดีออกข้อกำหนดสำหรับx86-64ชุดของนามสกุล 64 บิตเพื่อ x86 สถาปัตยกรรมของอินเทลเองตั้งใจที่จะแข่งขันกับ IA-64 ในที่สุดมันก็จะทำตลาดภายใต้ชื่อ "AMD64"
- 2001
- มิถุนายน: ไอดีซีคาดการณ์ว่ายอดขายระบบ Itanium จะถึง $ 15bn / ปีในปี 2004
- มิถุนายน: โครงการเนยแข็งตาย
- กรกฏาคม: Itanium ถูกปล่อยออกมา
- ตุลาคม: ไอดีซีคาดการณ์ว่ายอดขายระบบ Itanium จะถึง $ 12bn / ปีโดยสิ้นปี 2004
- พฤศจิกายน: ไอบีเอ็ม 320 โปรเซสเซอร์ไททันตอนนี้คลัสเตอร์ที่ศูนย์แห่งชาติสำหรับการประยุกต์ใช้ซูเปอร์คอมพิวเตอร์เป็น บริษัท จดทะเบียนในTOP500รายการที่ตำแหน่ง # 34
- พฤศจิกายน: Compaq ล่าช้า Itanium ปล่อยสินค้าอันเนื่องมาจากปัญหาเกี่ยวกับการประมวลผล
- ธันวาคมGelatoเกิดขึ้น
- 2002
- มีนาคม: ไอดีซีคาดการณ์ว่ายอดขายระบบ Itanium จะถึง $ 5 พันล้าน / ปีโดยสิ้น 2004
- มิถุนายน: Itanium 2 ถูกปล่อยออกมา
- 2003
- เมษายน: ไอดีซีคาดการณ์ว่ายอดขายระบบ Itanium จะถึง $ 9BN: / ปีในช่วงปลาย 2007
- เมษายน: เอเอ็มดีเปิดตัวOpteron , หน่วยประมวลผลครั้งแรกที่มีนามสกุล x86-64
- มิถุนายน: อินเทลเปิดตัว "เมดิสัน" Itanium 2
- 2004:
- กุมภาพันธ์: อินเทลประกาศว่าได้ทำงานในการดำเนินงาน x86-64 ของตัวเอง (ซึ่งในที่สุดก็จะทำตลาดภายใต้ชื่อ "Intel 64")
- มิถุนายน: อินเทลเปิดตัวหน่วยประมวลผลครั้งแรกที่มีนามสกุล x86-64, Xeonหน่วยประมวลผลที่มีชื่อรหัสว่า "Nocona"
- มิถุนายน: ทันเดอร์ระบบที่LLNLกับ 4096 Itanium 2 โปรเซสเซอร์เป็น บริษัท จดทะเบียนในTOP500รายการที่ตำแหน่ง # 2
- พฤศจิกายน: โคลัมเบีย , SGI Altix 3700 กับ 10160 Itanium 2 โปรเซสเซอร์ที่นาซาศูนย์วิจัยเอมส์, เป็น บริษัท จดทะเบียนในTOP500รายการที่ตำแหน่ง # 2
- ธันวาคม Itanium ขายระบบสำหรับปี 2004 ถึง $ 1.4bn
- 2005
- มกราคม: HP พอร์ตOpenVMSเพื่อ Itanium
- กุมภาพันธ์: การออกแบบเซิร์ฟเวอร์ของไอบีเอ็มลดลงสนับสนุน Itanium
- มิถุนายน: Itanium 2 ชุดบันทึกSPECfp 2000 ผลจาก 2,801 ในฮิตาชิ จำกัด ใบคอมพิวเตอร์ .
- กันยายน: Itanium โซลูชั่นพันธมิตรเกิดขึ้น
- กันยายน: Dell ออกจากธุรกิจ Itanium
- ตุลาคม: การขายเซิร์ฟเวอร์ Itanium ถึง $ 619m / ไตรมาสในไตรมาสที่สาม
- ตุลาคม: อินเทลประกาศความล่าช้าหนึ่งปีสำหรับมอนเตซิโต, Montvale และวิลลา
- 2006
- มกราคม: Itanium โซลูชั่นพันธมิตรประกาศ $ 10bn การลงทุนโดยรวมในปี 2010 ไอเทเนียม
- กุมภาพันธ์: ไอดีซีคาดการณ์ว่ายอดขายระบบ Itanium จะถึง $ 6.6bn / ปีภายในปี 2009
- มิถุนายน: Intel ออก dual-core " มอนเตซิโต "Itanium 2 9000 ซีรีส์
- 2007
- 2009
- ธันวาคมหมวกแดงประกาศว่าจะลดลงการสนับสนุนสำหรับ Itanium ในรุ่นต่อไปขององค์กร OS ของ Red Hat Enterprise Linux 6
- 2010
- กุมภาพันธ์: อินเทลประกาศ "วิลลา" Itanium 9300 ซีรีส์
- เมษายน: ไมโครซอฟท์ประกาศเฟสออกจากการสนับสนุนสำหรับ Itanium
- ตุลาคม: อินเทลประกาศรุ่นใหม่ของอินเทลซี ++ คอมไพเลอร์และIntel Fortran คอมไพเลอร์สำหรับ x86 / x64 ขณะที่การสนับสนุน Itanium จะใช้ได้เฉพาะในรุ่นเก่า
- 2011
- มีนาคม: บริษัท ออราเคิลคอร์ปอเรชั่นประกาศว่าจะหยุดการพัฒนาซอฟแวร์มิดเดิลแวร์และออราเคิลลินุกซ์สำหรับ Itanium [ 10 ]
- มีนาคม: IntelและHPย้ำการสนับสนุนของพวกเขา Itanium
- เมษายน: หัวเว่ยและInspurประกาศว่าพวกเขาจะพัฒนาเซิร์ฟเวอร์ Itanium
- ปี 2012:
- กุมภาพันธ์: เอกสารที่ศาลได้รับการปล่อยตัวจากกรณีระหว่างเอชพีและออราเคิลคอร์ปอเรชั่นที่ให้ความเข้าใจความจริงที่ว่าเอชพีจ่าย Intel $ 690,000,000 เพื่อให้ Itanium ช่วยชีวิต
- SAP หยุดการสนับสนุนสำหรับวัตถุธุรกิจใน Itanium
- กันยายน: ในการตอบสนองต่อการพิจารณาคดีของศาลออราเคิล reinstitutes สนับสนุนสำหรับซอฟต์แวร์ของออราเคิลกับฮาร์ดแวร์ Itanium
- 2013:
- มกราคม: Intel ยกเลิก Kittson เป็น22 นาโนเมตรหดตัวของ Poulson ย้ายมันแทนกระบวนการ 32 นาโนเมตรของ
- พฤศจิกายน: เอชพีประกาศว่าของดุ๊กดิ๊กเซิร์ฟเวอร์จะเริ่มใช้Intel 64 (x86-64) ชิป
----------------------------------------------------------------------------------------------------------------------------------------------
เพิ่มเติม
ชุดคำสั่งของCPU (instruction set cpu)
ชุดคำสั่ง
ชุดคำสั่งหรือชุดคำสั่งสถาปัตยกรรม ( ISA ) เป็นส่วนหนึ่งของสถาปัตยกรรมคอมพิวเตอร์ที่เกี่ยวข้องกับการเขียนโปรแกรมรวมทั้งชาวพื้นเมืองชนิดข้อมูลคำแนะนำการลงทะเบียน , ที่อยู่โหมด , สถาปัตยกรรมหน่วยความจำ , ขัดจังหวะและการจัดการข้อยกเว้นและภายนอกI / O . ISA รวมถึงข้อกำหนดของการตั้งค่าของopcodes ( ภาษาเครื่อง ) และคำสั่งพื้นเมืองดำเนินการโดยหน่วยประมวลผลโดยเฉพาะอย่างยิ่ง
ภาพรวม
สถาปัตยกรรมชุดคำสั่งที่แตกต่างไปจากสถาปัตยกรรมซึ่งเป็นชุดของเทคนิคการออกแบบหน่วยประมวลผลที่ใช้ในการใช้ชุดคำสั่ง เครื่องคอมพิวเตอร์ที่มีสถาปัตยกรรมย่อที่แตกต่างกันสามารถใช้ชุดคำสั่งที่พบบ่อย ตัวอย่างเช่นIntelPentiumและAMD Athlonใช้รุ่นเหมือนกันเกือบ86ชุดคำสั่ง แต่มีการออกแบบภายในที่แตกต่างกันอย่างสิ้นเชิง
บางเครื่องเสมือนที่สนับสนุนbytecodeเป็น ISA ของพวกเขาเช่นSmalltalk , เครื่องเสมือน Javaและไมโครซอฟท์รันไทม์ภาษาทั่วไปดำเนินการโดยการแปล bytecode สำหรับเส้นทางรหัสที่ใช้กันโดยทั่วไปเป็นรหัสเครื่องพื้นเมือง นอกจากนี้เครื่องเสมือนรันใช้ไม่บ่อยเส้นทางรหัสโดยการตีความ (ดู: Just-in-time รวบรวม ) Transmetaดำเนินการเรียนการสอนที่ 86 ตั้งอยู่บนยอดVLIWประมวลผลในแบบนี้
การจัดหมวดหมู่การเรียนการสอนกำหนด
คอมพิวเตอร์ชุดคำสั่งที่ซับซ้อน (CISC) มีคำแนะนำพิเศษมากมายซึ่งอาจจะใช้เพียงในโปรแกรมไม่ค่อยปฏิบัติ ชุดคำสั่งคอมพิวเตอร์ที่ลดลง (RISC) ช่วยลดการประมวลผลโดยเฉพาะการดำเนินการตามคำแนะนำที่ใช้บ่อยในโปรแกรม; การดำเนินงานที่ผิดปกติจะถูกนำมาใช้เป็นซับรูทีนที่เวลาการดำเนินการประมวลผลพิเศษจะชดเชยโดยการใช้งานที่หายากของพวกเขา ในทางทฤษฎีประเภทที่สำคัญคือการเรียนการสอนคอมพิวเตอร์ชุดที่น้อยที่สุดและคอมพิวเตอร์ชุดหนึ่งการเรียนการสอนแต่เหล่านี้จะไม่ถูกนำมาใช้ในการประมวลผลเชิงพาณิชย์ การเปลี่ยนแปลงอีกประการหนึ่งคือคำสอนที่ยาวมาก (VLIW) ที่ประมวลผลได้รับคำแนะนำหลายเข้ารหัสและเรียกในคำสั่งอย่างใดอย่างหนึ่ง
ภาษาเครื่อง
ภาษาเครื่องถูกสร้างขึ้นมาจากแยกงบหรือคำแนะนำ . ในสถาปัตยกรรมการประมวลผลที่เป็นคำสั่งที่ได้รับอาจระบุ:
- โดยเฉพาะอย่างยิ่งการลงทะเบียนสำหรับการคำนวณ, ที่อยู่, หรือฟังก์ชั่นการควบคุม
- สถานที่หน่วยความจำโดยเฉพาะหรือชดเชย
- โดยเฉพาะอย่างยิ่งกับโหมดที่ใช้ในการแปลความหมายของตัวถูกดำเนินการ
การดำเนินงานที่ซับซ้อนมากขึ้นได้รับการสร้างขึ้นโดยการรวมคำแนะนำง่ายๆเหล่านี้ซึ่งจะดำเนินการตามลำดับหรือเป็นผู้กำกับอย่างอื่นโดยควบคุมการไหลของคำแนะนำ
ประเภทคำสั่ง
ตัวอย่างของการดำเนินงานร่วมกันกับชุดคำสั่งจำนวนมากรวมถึง
การดำเนินงานการจัดการข้อมูลและหน่วยความจำ
- กำหนดลงทะเบียนเป็นค่าคงที่คงที่
- ย้ายข้อมูลจากหน่วยความจำตำแหน่งที่จะลงทะเบียนหรือในทางกลับกัน ที่ใช้ในการเก็บเนื้อหาของการลงทะเบียนผลการคำนวณหรือจะดึงข้อมูลที่เก็บไว้ในการดำเนินการคำนวณที่ได้ในภายหลัง
- อ่านและเขียนข้อมูลจากอุปกรณ์ฮาร์ดแว
คณิตศาสตร์และตรรกะการดำเนินงาน
- เพิ่ม , ลบ , คูณหรือหารค่าลงทะเบียนของทั้งสองวางผลในการลงทะเบียนอาจจะตั้งค่าหนึ่งหรือมากกว่าหนึ่งรหัสเงื่อนไขในการลงทะเบียนสถานะ .
- ดำเนินการการดำเนินงานค่าที่เหมาะสมเช่นการร่วมและความร้าวฉานของบิตสอดคล้องกันในคู่ของการลงทะเบียนการปฏิเสธของแต่ละบิตในการลงทะเบียน
- เปรียบเทียบสองค่าในการลงทะเบียน (เช่นเพื่อดูว่าจำนวนใดน้อยกว่าหรือถ้าพวกเขามีความเท่าเทียมกัน)
การควบคุมการไหลการดำเนินงาน
- สาขาไปยังสถานที่ในโปรแกรมอื่นและดำเนินการคำแนะนำมี
- เงื่อนไขสาขาไปยังตำแหน่งอื่นถ้าเงื่อนไขบางอย่างถือ
- สาขาอ้อมไปยังตำแหน่งอื่นในขณะที่ประหยัดสถานที่การเรียนการสอนต่อไปเป็นจุดที่จะกลับไป
ตัวอย่างของชุดคำสั่งเป็น86ชุดการเรียนการสอนซึ่งเป็นเรื่องธรรมดาที่จะพบกับคอมพิวเตอร์ในปัจจุบัน การประมวลผลคอมพิวเตอร์ที่แตกต่างกันสามารถใช้เกือบชุดคำสั่งเดียวกันในขณะที่ยังมีการออกแบบภายในที่แตกต่างกันมากทั้งIntel Pentium และAMD Athlon โปรเซสเซอร์ใช้เกือบชุดคำสั่ง x86 เดียวกัน ชุดคำสั่งสามารถสร้างขึ้นเข้ากับฮาร์ดแวร์ของหน่วยประมวลผลหรือที่จะสามารถเทิดทูนในซอฟแวร์โดยใช้ล่าม การออกแบบฮาร์ดแวร์ที่มีประสิทธิภาพมากขึ้นและเร็วขึ้นสำหรับโปรแกรมที่กำลังทำงานกว่ารุ่นซอฟต์แวร์ที่เทิดทูน
ตัวอย่างของชุดคำสั่ง
- ADD - เพิ่มตัวเลขสองร่วมกัน
- เปรียบเทียบ - เปรียบเทียบตัวเลข
- ใน - ข้อมูลการป้อนข้อมูลจากอุปกรณ์เช่นแป้นพิมพ์
- JUMP - กระโดดไปยังที่อยู่ RAM กำหนด
- JUMP IF - คำสั่งเงื่อนไขที่กระโดดไปยังที่อยู่ RAM ที่กำหนด
- โหลด - โหลดข้อมูลจาก RAM กับ CPU
- OUT - ข้อมูลการส่งออกไปยังอุปกรณ์เช่นจอแสดงผล
- ร้านค้า - เก็บข้อมูลไปที่ RAM
คำแนะนำที่ซับซ้อน
โปรเซสเซอร์ CISC มีคำแนะนำ "ซับซ้อน" ในชุดคำสั่งของพวกเขา เดียว "ซับซ้อน" การเรียนการสอนไม่อะไรบางอย่างที่อาจจะใช้คำแนะนำจำนวนมากบนคอมพิวเตอร์เครื่องอื่น ๆคำแนะนำดังกล่าวจะตรึงตราตามคำแนะนำที่ใช้เวลาหลายขั้นตอนการควบคุมการทำงานหลายหน่วยหรือปรากฏในระดับขนาดใหญ่กว่ากลุ่มของคำแนะนำง่ายๆ ดำเนินการโดยหน่วยประมวลผลที่ได้รับ ตัวอย่างบางส่วนของคำแนะนำ "ซับซ้อน" รวมถึง:
- ประหยัดลงทะเบียนจำนวนมากบนสแต็คในครั้งเดียว
- ย้ายบล็อกขนาดใหญ่ของหน่วยความจำ
- จำนวนเต็มซับซ้อนและการคำนวณจุดลอย ( ซายน์ , โคไซน์ , รากที่สองฯลฯ )
- SIMDคำแนะนำคำสั่งเดียวดำเนินการบนค่าหลายขนาน
- การแสดงอะตอมทดสอบและชุดการเรียนการสอนหรืออื่น ๆ ที่อ่านเขียนปรับเปลี่ยน การเรียนการสอนอะตอม .
- คำสั่งที่ดำเนินการALUดำเนินการกับตัวถูกดำเนินการจากหน่วยความจำมากกว่าที่จะลงทะเบียน
ประเภทการเรียนการสอนที่มีความซับซ้อนที่ได้กลายเป็นที่นิยมโดยเฉพาะอย่างยิ่งเมื่อเร็ว ๆ นี้เป็นSIMDหรือสตรีมเดียวการเรียนการสอนการดำเนินการหลายข้อมูลสตรีมหรือการเรียนการสอนเวกเตอร์ที่มีการดำเนินงานที่มีประสิทธิภาพการดำเนินการทางคณิตศาสตร์ที่เหมือนกันในหลาย ๆ ชิ้นส่วนของข้อมูลในเวลาเดียวกัน . SIMD มีความสามารถในการจัดการกับเวกเตอร์ขนาดใหญ่และการฝึกอบรมในเวลาน้อยที่สุด คำแนะนำ SIMD ให้ง่ายขนานของขั้นตอนวิธีที่เกี่ยวข้องกันทั่วไปในเสียงภาพและการประมวลผลวิดีโอ การใช้งาน SIMD ต่าง ๆ ได้ถูกนำออกสู่ตลาดภายใต้ชื่อทางการค้าเช่นMMX , 3DNow!และAltiVec .
ประเภทหน่วยประมวลผลเฉพาะเช่นGPUsเช่นนี้ยังให้ชุดคำสั่งที่ซับซ้อน อย่างไรก็ตามหลายเหล่านี้หน่วยประมวลผลเฉพาะชุดคำสั่งที่ซับซ้อนไม่ได้มีการเรียนการสอนภาษาที่เปิดเผยต่อสาธารณชนและตั้งพื้นเมืองภาษาประกอบสำหรับฮาร์ดแวร์ที่เป็นกรรมสิทธิ์ที่เกี่ยวข้องกับเหตุผลและมักจะเข้าถึงได้เฉพาะนักพัฒนาซอฟต์แวร์ที่ผ่านมาตรฐานภาษาระดับที่สูงขึ้นและ API OpenGLการเรียนการสอนเสมือนการตั้งค่าและภาษาประกอบเสมือนภาษาประกอบ ARBและCUDAเป็นตัวอย่างของเช่นฮาร์ดแวร์ที่เป็นนามธรรมชั้นด้านบนของหน่วยประมวลผลเฉพาะชุดคำสั่งพื้นเมือง
ระยะเวลาในการเรียนการสอน
ขนาดหรือความยาวของการเรียนการสอนแตกต่างกันอย่างกว้างขวางจากการเป็นเพียงสี่บิตในบางขนาดเล็กหลายร้อยบิตในบางระบบ VLIW หน่วยประมวลผลที่ใช้ในเครื่องคอมพิวเตอร์ส่วนบุคคล , เมนเฟรมและซูเปอร์คอมพิวเตอร์ที่มีการเรียนการสอนขนาดระหว่าง 8 และ 64 บิต การเรียนการสอนที่เป็นไปได้ที่ยาวที่สุดบน x86 คือ 15 ไบต์ (120 บิต) ภายในชุดคำสั่งคำแนะนำที่แตกต่างกันอาจมีความยาวที่แตกต่างกัน ในสถาปัตยกรรมบางอย่างที่สะดุดตาที่สุดลดชุดคำสั่งคอมพิวเตอร์(RISC) คำแนะนำที่มีความยาวคงที่มักจะสอดคล้องกับสถาปัตยกรรมที่ขนาดคำ . ในสถาปัตยกรรมอื่น ๆ คำแนะนำมีความยาวตัวแปรหลายมักจะหนึ่งของไบต์หรือHalfword . บางอย่างเช่นARMด้วยนิ้วหัวแม่มือขยายได้ผสมเข้ารหัสตัวแปรที่สองคงที่มักจะ 32 บิตและ 16 บิตการเข้ารหัสที่คำแนะนำไม่สามารถผสมได้อย่างอิสระ แต่ต้องเปลี่ยนระหว่างสาขา (หรือขอบเขตของข้อยกเว้นใน ARMv8 )
การเรียนการสอน RISC ตั้งตามปกติมีความกว้างคงที่การเรียนการสอน (มักจะ 4 ไบต์ = 32 บิต) ในขณะที่ชุดคำสั่ง CISC ทั่วไปอาจมีคำแนะนำของความยาวที่แตกต่างกัน (1 ถึง 15 ไบต์สำหรับ x86) คำแนะนำความกว้างคงที่มีความซับซ้อนน้อยกว่าในการจัดการกว่าคำแนะนำตัวแปรความกว้างด้วยเหตุผลหลายประการ (ไม่ต้องตรวจสอบว่าการเรียนการสอนคร่อมเส้นแคชหรือขอบเขตหน้าหน่วยความจำเสมือน[ 3 ]เป็นต้น) และจึงค่อนข้างง่ายที่จะเพิ่มประสิทธิภาพสำหรับความเร็ว
แทน
คำแนะนำ constituting โปรแกรมไม่ค่อยที่ระบุไว้ใช้ภายในรูปแบบที่เป็นตัวเลข (ของพวกเขารหัสเครื่อง ); พวกเขาอาจจะระบุโดยโปรแกรมเมอร์ที่ใช้ภาษาประกอบหรือมากกว่าปกติอาจจะเกิดจากการเขียนโปรแกรมภาษาโดยคอมไพเลอร์
การออกแบบ
การออกแบบการเรียนการสอนชุดเป็นปัญหาที่ซับซ้อน มีสองขั้นตอนในประวัติศาสตร์มีไว้สำหรับไมโครโปรเซสเซอร์ อันแรกก็คือ CISC (Complex ชุดคำสั่งคอมพิวเตอร์) ซึ่งมีคำแนะนำที่แตกต่างกัน ในปี 1970 แต่สถานที่เช่นไอบีเอ็มได้ทำการวิจัยและพบว่าคำแนะนำในหลาย ๆ ชุดจะถูกกำจัด ผลที่ได้ RISC (Reduced Instruction Set Computer) สถาปัตยกรรมที่ใช้ชุดเล็กของคำสั่ง ชุดคำสั่งที่เรียบง่ายอาจมีศักยภาพสำหรับความเร็วสูงขนาดหน่วยประมวลผลที่ลดลงและการใช้พลังงานที่ลดลง แต่ชุดที่ซับซ้อนมากขึ้นอาจเพิ่มประสิทธิภาพการดำเนินงานทั่วไปเพิ่มหน่วยความจำ / แคชประสิทธิภาพหรือลดความซับซ้อนในการเขียนโปรแกรม
บางคนออกแบบชุดคำสั่งสำรองหนึ่งหรือมากกว่า opcodes สำหรับชนิดของบางสายระบบหรือซอฟแวร์การขัดจังหวะ .ตัวอย่างเช่นเทคโนโลยี MOS 6502ใช้ 00 H , Zilog Z80ใช้แปดรหัส C7, CF, D7, DF, E7, EF, F7, FF H ในขณะที่โมโตโรล่า 68000รหัสการใช้งานในช่วง A000..AFFF H .
เครื่องเสมือนได้อย่างรวดเร็วมากขึ้นในการดำเนินการในกรณีที่ชุดคำสั่งตรงPopek โกลด์เบิร์กและความต้องการการทำงานแบบเสมือน .
สไลด์ NOPใช้ในการเขียนโปรแกรมภูมิคุ้มกันรอบรู้เป็นเรื่องง่ายที่จะใช้ถ้ารัฐ "unprogrammed" ของหน่วยความจำจะถูกตีความว่าเป็นนพ .
บนระบบที่มีโปรเซสเซอร์หลายตัวไม่ปิดกั้นการประสานขั้นตอนวิธีเป็นเรื่องง่ายที่จะใช้ถ้าชุดคำสั่งรวมถึงการสนับสนุนสำหรับบางสิ่งบางอย่างเช่น " เรียกและเพิ่ม "," โหลดลิงค์ / ร้านเงื่อนไข "(LL / SC) หรือ "อะตอมเปรียบเทียบและแลกเปลี่ยน "
การดำเนินการชุดคำสั่ง
ชุดคำสั่งใด ๆ ให้สามารถดำเนินการได้ในหลายวิธี วิธีการทั้งหมดในการดำเนินการเรียนการสอนโดยเฉพาะอย่างยิ่งการตั้งค่าให้เหมือนรูปแบบการเขียนโปรแกรมและการใช้งานทั้งหมดของชุดคำสั่งที่มีความสามารถในการทำงาน executables ไบนารีเดียวกัน รูปแบบต่างๆของการใช้ชุดการเรียนการสอนที่แตกต่างกันให้เกิดความสมดุลระหว่างค่าใช้จ่ายที่มีประสิทธิภาพการใช้พลังงานขนาดและอื่น ๆ
เมื่อมีการออกแบบสถาปัตยกรรมของโปรเซสเซอร์วิศวกรใช้บล็อกของ "ยากสาย" วงจรอิเล็กทรอนิกส์ (การออกแบบมักจะแยกต่างหาก) เช่นวงจรบวก, เคาน์เตอร์ลงทะเบียน ALUs ฯลฯ ชนิดของบางภาษาการโอนทะเบียนเป็นแล้วมักจะใช้ในการอธิบาย การถอดรหัสและการจัดลำดับการเรียนการสอนของแต่ละ ISA โดยใช้สถาปัตยกรรมทางกายภาพนี้ มีสองวิธีพื้นฐานที่จะสร้างเป็นหน่วยควบคุมที่จะใช้คำอธิบายนี้ (แม้ว่าการออกแบบจำนวนมากใช้วิธีการประนีประนอมหรือกลาง):
- บางการออกแบบคอมพิวเตอร์ "hardwire" ที่สมบูรณ์ชุดคำสั่งการถอดรหัสและการเรียงลำดับ (เช่นเดียวกับส่วนที่เหลือของสถาปัตยกรรม)
- การออกแบบอื่น ๆ ใช้เฟิร์มแวกิจวัตรหรือตาราง (หรือทั้งสอง) การทำเช่นนี้มักจะเป็นบนชิปรอมหรือพลาสหรือทั้งสองอย่าง (แม้ว่า RAMs แยกต่างหากและรอมได้ถูกนำมาใช้ในอดีต)
การออกแบบที่บางคนใช้การรวมกันของการออกแบบเดินสายและเฟิร์มแวสำหรับหน่วยควบคุม
บางการออกแบบซีพียูรวบรวมชุดคำสั่งที่จะเขียนได้RAMหรือแฟลชภายใน CPU (เช่นRekursivประมวลผลและImsys Cjip )หรือ FPGA ( คอมพิวเตอร์ Reconfigurable ) Western Digital MCP-1600เป็นตัวอย่างที่มีอายุการใช้เฉพาะรอมที่แยกต่างหากสำหรับเฟิร์มแว
ISA ยังสามารถเทิดทูนในซอฟแวร์โดยล่าม . ตามธรรมชาติอันเนื่องมาจากค่าใช้จ่ายการตีความนี้จะช้ากว่าทำงานโดยตรงกับฮาร์ดแวร์โปรแกรมเทิดทูนเว้นแต่ฮาร์ดแวร์ทำงานจำลองที่มีลำดับความสำคัญได้อย่างรวดเร็ว วันนี้มันเป็นเรื่องธรรมดาสำหรับผู้ขายของอกหักใหม่หรือสถาปัตยกรรมย่อส่วนเพื่อให้การเลียนแบบซอฟแวร์ที่มีให้กับนักพัฒนาซอฟแวร์ก่อนที่การใช้ฮาร์ดแวร์ที่มีความพร้อม
มักจะมีรายละเอียดของการดำเนินการมีอิทธิพลอย่างมากต่อคำแนะนำโดยเฉพาะอย่างยิ่งที่เลือกสำหรับชุดคำสั่ง ตัวอย่างเช่นการใช้งานจำนวนมากของท่อส่งคำสั่งอนุญาตให้โหลดหน่วยความจำเดียวหรือเก็บความทรงจำต่อการเรียนการสอนที่นำไปสู่สถาปัตยกรรมโหลดเก็บ (RISC) สำหรับอีกตัวอย่างหนึ่งวิธีการบางอย่างในช่วงต้นของการใช้ท่อการเรียนการสอนที่นำไปสู่ช่องล่าช้า .
ความต้องการของการประมวลผลสัญญาณดิจิตอลความเร็วสูงที่มีการผลักดันให้คำแนะนำในการบังคับทิศทางตรงข้ามที่จะดำเนินการในวิธีการเฉพาะ ตัวอย่างเช่นในการดำเนินการกรองสัญญาณแบบดิจิตอลเร็วพอการเรียนการสอนใน MAC ทั่วไปหน่วยประมวลผลสัญญาณดิจิตอล (DSP) ต้องใช้ชนิดของสถาปัตยกรรมฮาร์วาร์ที่สามารถเรียกคำสั่งและคำสองคำข้อมูลพร้อมกันและจะต้องรอบเดียวคูณสะสม คูณ .
ความหนาแน่นของรหัส
ในเครื่องคอมพิวเตอร์ในช่วงต้นของหน่วยความจำมีราคาแพงดังนั้นการลดขนาดของโปรแกรมที่จะทำให้แน่ใจว่ามันจะพอดีในหน่วยความจำที่ จำกัด ก็มักจะกลาง ดังนั้นขนาดรวมของคำแนะนำทั้งหมดที่จำเป็นในการดำเนินงานโดยเฉพาะอย่างยิ่งความหนาแน่นของรหัสเป็นลักษณะที่สำคัญของชุดคำสั่งใด ๆ เครื่องคอมพิวเตอร์ที่มีความหนาแน่นของรหัสสูงมักจะมีคำแนะนำที่ซับซ้อนสำหรับการเข้าขั้นตอนกลับแปรห่วง ฯลฯ (จึงตั้งชื่อย้อนหลังคอมเพล็กซ์ชุดคำสั่งคอมพิวเตอร์ , CISC ) แต่โดยทั่วไปมากขึ้นหรือบ่อย "CISC" คำแนะนำเพียงรวมการดำเนินงาน ALU พื้นฐานเช่น "เพิ่ม" ด้วยการเข้าถึงหนึ่งหรือหลายตัวถูกดำเนินการในหน่วยความจำ (โดยใช้ที่อยู่โหมดเช่นโดยตรงทางอ้อมการจัดทำดัชนี ฯลฯ ) สถาปัตยกรรมบางอย่างอาจช่วยให้สองหรือสามตัวถูกดำเนินการ (รวมผล) โดยตรงในหน่วยความจำหรืออาจจะไม่สามารถปฏิบัติหน้าที่เช่นซอฟแวร์การดำเนินการอื่น ๆ ที่เพิ่มขึ้นชี้อัตโนมัติชุดคำสั่งอาจจะมีคำแนะนำแม้กระทั่งการที่ซับซ้อนมากขึ้นและมีประสิทธิภาพ
ลดการเรียนการสอนคอมพิวเตอร์ตั้ง , RISCถูกนำมาใช้อย่างกว้างขวางเป็นครั้งแรกในช่วงเวลาของการเติบโตอย่างรวดเร็วระบบย่อยของหน่วยความจำ พวกเขาเสียสละความหนาแน่นของรหัสที่จะลดความซับซ้อนของวงจรการดำเนินการและพยายามที่จะเพิ่มประสิทธิภาพการทำงานผ่านความถี่สัญญาณนาฬิกาที่สูงขึ้นและการลงทะเบียนเพิ่มเติม การเรียนการสอน RISC เดียวมักจะดำเนินการเพียงการดำเนินการเดียวเช่น "เพิ่ม" ของการลงทะเบียนหรือ "โหลด" จากที่ตั้งหน่วยความจำลงในทะเบียน การเรียนการสอน RISC ตั้งปกติมีการแก้ไขความกว้างของการเรียนการสอนในขณะที่ CISC ชุดคำสั่งทั่วไปมีคำแนะนำของความยาวที่แตกต่างกันอย่างกว้างขวาง แต่เป็นคอมพิวเตอร์ RISC ปกติต้องเพิ่มเติมและคำแนะนำมักจะนานในการดำเนินงานที่กำหนดพวกเขาโดยเนื้อแท้ทำให้การใช้งานที่เหมาะสมน้อยของแบนด์วิดท์รถบัสและความทรงจำแคช
ชุดคำสั่งคอมพิวเตอร์น้อยที่สุด (MISC) เป็นรูปแบบของเครื่องสแต็คที่มีคำแนะนำที่แยกจากกันไม่กี่ (16-64) เพื่อให้คำแนะนำหลาย ๆ อาจจะพอดีกับคำว่าเครื่องเดียว ประเภทของแกนเหล่านี้มักจะใช้ซิลิกอนเล็ก ๆ น้อย ๆ ในการดำเนินการเพื่อให้พวกเขาสามารถรับรู้ได้ง่ายในFPGAหรือในแบบ multi-coreรูปแบบ ความหนาแน่นของรหัสของ MISC จะคล้ายกับความหนาแน่นของรหัสของริสก์; ความหนาแน่นของการเรียนการสอนที่เพิ่มขึ้นจะชดเชยโดยการกำหนดให้มากขึ้นของคำสั่งพื้นฐานที่จะทำงาน[ ต้องการอ้างอิง ]
ได้มีการวิจัยในการบีบอัดที่ปฏิบัติการเป็นกลไกสำหรับการปรับปรุงความหนาแน่นของรหัส วิชาคณิตศาสตร์ของความซับซ้อน Kolmogorovอธิบายถึงความท้าทายและข้อ จำกัด ของการนี้
จำนวนของตัวถูกดำเนินการ
ชุดการเรียนการสอนอาจจะแบ่งตามจำนวนสูงสุดของตัวถูกดำเนินการอย่างชัดเจนที่ระบุไว้ในคำแนะนำ
(ในตัวอย่างที่เป็นไปตาม, ขและคมี (โดยตรงหรือคำนวณ) ที่อยู่หมายถึงเซลล์หน่วยความจำในขณะที่reg1และอื่น ๆ หมายถึงการลงทะเบียนเครื่อง).
C = A + B
- 0-ตัวถูกดำเนินการ ( เครื่องที่อยู่ศูนย์ ) ที่เรียกว่าเครื่องกอง : ดำเนินการทางคณิตศาสตร์ทั้งหมดจะใช้สถานที่ที่ใช้บนหนึ่งหรือสองตำแหน่งในกอง: ผลักดัน , ผลักดัน ข , เพิ่ม , ป๊อป ค .
- C = A + Bต้องการคำแนะนำ 4 . สำหรับเครื่องกองคำว่า "0-ถูกดำเนินการ" และ "ที่อยู่ศูนย์" นำไปใช้กับเลขคณิตคำแนะนำ แต่ไม่ให้คำแนะนำทั้งหมดเป็น 1 ตัวถูกดำเนินการคำแนะนำการผลักดันและป๊อปที่ใช้ในการเข้าถึงหน่วยความจำ
- 1 ตัวถูกดำเนินการ ( เครื่องหนึ่งที่อยู่ ) เรียกว่าเครื่องสะสมรวมคอมพิวเตอร์ต้นและขนาดเล็กจำนวนมากไมโครคอนโทรลเลอร์ : คำแนะนำส่วนใหญ่ระบุตัวถูกดำเนินการที่เหมาะสมเดียว (ที่เป็นค่าคงที่ลงทะเบียนหรือสถานที่หน่วยความจำ) กับนัยสะสมเป็น ตัวถูกดำเนินการทางด้านซ้าย (และปลายทางถ้ามี): โหลด , เพิ่ม ข , ร้าน ค . ชั้นที่เกี่ยวข้องเป็นจริงเครื่องสแต็คซึ่งมักจะช่วยให้ตัวถูกดำเนินการอย่างชัดเจนเดียวในการคำนวณคำแนะนำ: ผลักดัน , เพิ่ม ข ,ป๊อป ค .
- C = A + Bต้องการคำแนะนำ 3 .
- 2 ตัวถูกดำเนินการ - CISC มากและเครื่อง RISC ตกอยู่ภายใต้หมวดหมู่นี้
- CISC - ย้าย ไปที่C ; แล้วเพิ่ม BไปC .
- C = A + Bต้องการคำแนะนำ 2 . นี้มีประสิทธิภาพ 'ร้าน' ผลโดยไม่ต้องชัดเจนการจัดเก็บการเรียนการสอน
- CISC - บ่อยครั้งที่เครื่องจะถูกจำกัด ไว้ที่หน่วยความจำถูกดำเนินการอย่างใดอย่างหนึ่งต่อการเรียนการสอน:โหลด , reg1 ; เพิ่ม ข reg1 ; ร้าน reg1 ค ; นี้ต้องใช้คู่โหลด / ร้านสำหรับการเคลื่อนไหวของหน่วยความจำใด ๆ ไม่ว่าจะเพิ่มผลจะเสริมการจัดเก็บไปยังสถานที่ที่แตกต่างกันในขณะที่ C = A + B หรือสถานที่ตั้งหน่วยความจำเดียวกัน: = A + B
- C = A + Bต้องการคำแนะนำ 3 .
- RISC - ต้องโหลดหน่วยความจำอย่างชัดเจนคำแนะนำจะ: โหลด , reg1 ; โหลด ข reg2 ; เพิ่ม reg1, reg2 ; ร้านreg2 ค .
- C = A + Bต้องการคำแนะนำ 4 .
- CISC - ย้าย ไปที่C ; แล้วเพิ่ม BไปC .
- 3 ตัวถูกดำเนินการเพื่อให้สามารถนำมาใช้ใหม่ที่ดีขึ้นของข้อมูล: [ 3 ]
- CISC - มันจะกลายเป็นทั้งคำสั่งเดียว: เพิ่ม b, c
- C = A + Bต้องการคำแนะนำ 1 .
- หรือมากกว่าปกติ: ย้าย , reg1 ; เพิ่ม reg1 b, cเป็นเครื่องส่วนใหญ่จะถูก จำกัด ให้สองตัวถูกดำเนินการของหน่วยความจำ
- C = A + Bต้องการคำแนะนำ 2 .
- RISC - คำแนะนำการคำนวณใช้ลงทะเบียนเท่านั้นอย่างชัดเจนเพื่อให้ 2 ตัวถูกดำเนินการคำสั่งการโหลด / ร้านมีความจำเป็น: โหลด , reg1 ; โหลด ข reg2 ; เพิ่ม reg1 + reg2-> reg3 ; ร้าน reg3 ค ;
- C = A + Bต้องการคำแนะนำ 4 .
- ซึ่งแตกต่างจาก 2 ตัวถูกดำเนินการหรือ 1 ตัวถูกดำเนินการใบนี้ทั้งสามค่า b, c และในการลงทะเบียนสำหรับนำมาใช้ใหม่ต่อไป[ 3 ]
- CISC - มันจะกลายเป็นทั้งคำสั่งเดียว: เพิ่ม b, c
- ตัวถูกดำเนินการบางอย่างมากขึ้นเครื่อง CISC อนุญาตให้มีความหลากหลายของรูปแบบที่อยู่ที่ให้มากกว่า 3 ตัวถูกดำเนินการ (ลงทะเบียนหรือหน่วยความจำเข้าถึง) เช่นVAX "POLY" การเรียนการสอนการประเมินผลการพหุนาม
เนื่องจากการจำนวนมากของบิตที่จำเป็นในการเข้ารหัสสามของการลงทะเบียนเรียนการสอน 3 ตัวถูกดำเนินการประมวลผล RISC ใช้คำแนะนำ 16 บิตคงเส้นคงวาเครื่อง 2 ตัวถูกดำเนินการเช่น Atmel AVR, TI MSP430และบางรุ่นของARM นิ้วหัวแม่มือ . โปรเซสเซอร์ RISC ใช้คำแนะนำ 32 บิตมักจะมีเครื่อง 3 ตัวถูกดำเนินการเช่นการประมวลผลการดำเนินการตามอำนาจสถาปัตยกรรม , SPARCสถาปัตยกรรมสถาปัตยกรรม MIPS , สถาปัตยกรรม ARMและAVR32สถาปัตยกรรม
แต่ละคำสั่งระบุจำนวนของตัวถูกดำเนินการ (ลงทะเบียนตำแหน่งหน่วยความจำหรือค่าทันที) บางอย่างชัดเจน . คำแนะนำบางอย่างให้อย่างใดอย่างหนึ่งหรือทั้งสองตัวถูกดำเนินการโดยปริยายเช่นโดยการถูกเก็บไว้ที่ด้านบนของกองหรือในการลงทะเบียนโดยปริยาย ถ้าบางตัวถูกดำเนินการจะได้รับโดยปริยายตัวถูกดำเนินการน้อยลงจำเป็นต้องระบุไว้ในการเรียนการสอนเมื่อ "ถูกดำเนินการยังปลายทาง" อย่างชัดเจนระบุปลายทางถูกดำเนินการเพิ่มเติมจะต้องจัด ดังนั้นจำนวนของตัวถูกดำเนินการเข้ารหัสในการเรียนการสอนอาจแตกต่างจากจำนวนที่จำเป็นของการขัดแย้งทางคณิตศาสตร์สำหรับการดำเนินการตรรกะหรือคณิตศาสตร์ ( arity ) ตัวถูกดำเนินการจะถูกเข้ารหัสอย่างใดอย่างหนึ่งใน "opcode" เป็นตัวแทนของการเรียนการสอนหรืออื่น ๆ ที่จะได้รับเป็นค่าหรือที่อยู่ต่อไปนี้การเรียนการสอน
ตัวอย่างชุดคำสั่ง 80X68
1. กล่าวถึงการดำเนินงานในระดับต่ำของชุดคำสั่ง 80x86 มันอธิบายวิธีการที่วิศวกรของอินเทลตัดสินใจที่จะเข้ารหัสคำแนะนำในรูปแบบที่เป็นตัวเลข (เหมาะสำหรับการจัดเก็บข้อมูลในหน่วยความจำ) และจะกล่าวถึงการค้าที่ไม่ชอบพวกเขาที่จะทำให้เมื่อมีการออกแบบซีพียู บทนี้ยังนำเสนอภูมิหลังทางประวัติศาสตร์ของความพยายามในการออกแบบเพื่อให้คุณสามารถเข้าใจการประนีประนอมที่พวกเขาต้องทำ
2. ความสำคัญของการออกแบบการเรียนการสอนตั้ง
ในบทนี้เราจะได้รับการสำรวจหนึ่งในด้านที่น่าสนใจที่สุดและมีความสำคัญของการออกแบบซีพียู: การออกแบบของชุดคำสั่งของ CPU สถาปัตยกรรมชุดคำสั่ง (หรือ ISA) เป็นหนึ่งในประเด็นการออกแบบที่สำคัญที่สุดที่นักออกแบบซีพียูจะต้องได้รับสิทธิจากการเริ่มต้น คุณสมบัติเช่นแคชไปป์ไลน์การดำเนินงาน superscalar ฯลฯ ทั้งหมดจะสามารถกราฟต์ในการออกแบบซีพียูนานหลังจากที่การออกแบบเดิมเป็นล้าสมัย แต่ก็เป็นเรื่องยากมากที่จะเปลี่ยนคำแนะนำ CPU รันครั้ง CPU ในการผลิตและผู้คนที่เขียนซอฟแวร์ที่ใช้คำแนะนำเหล่านั้น ดังนั้นหนึ่งจะต้องเลือกอย่างระมัดระวังคำแนะนำสำหรับซีพียู
คุณอาจจะอยากที่จะใช้วิธีการ "ครัวอ่างล้างจาน" การออกแบบชุดคำสั่ง1และมีคำแนะนำมากเท่าที่คุณสามารถฝันขึ้นมาในชุดคำสั่งของคุณ วิธีการนี้ล้มเหลวด้วยเหตุผลหลายประการเราจะหารือในย่อหน้าต่อไปนี้ การออกแบบชุดคำสั่งเป็นบุคคลตัวอย่างของการจัดการการประนีประนอม การออกแบบซีพียูที่ดีคือกระบวนการของการเลือกสิ่งที่จะโยนออกมากกว่าสิ่งที่จะออกจากใน. มันง่ายพอที่จะบอกว่า "ให้รวมถึงทุกอย่าง". ส่วนที่ยากคือการตัดสินใจว่าจะลาออกเมื่อคุณรู้ว่าคุณไม่สามารถใส่ทุกอย่างบนชิป
ความเป็นจริงที่น่ารังเกียจ # 1 : อสังหาริมทรัพย์ซิลิคอนจริง . ปัญหาที่เกิดขึ้นครั้งแรกกับ "วางมันทั้งหมดบนชิป" คือการที่แต่ละคุณลักษณะที่ต้องใช้จำนวนบางส่วนของทรานซิสเตอร์ในซิลิกอนตายของ CPU นักออกแบบซีพียูทำงานร่วมกับ "งบประมาณซิลิกอน" และจะได้รับจำนวน จำกัด ของทรานซิสเตอร์ที่จะทำงานกับ ซึ่งหมายความว่ามีไม่ทรานซิสเตอร์เพียงพอที่จะสนับสนุน "วางคุณลักษณะทั้งหมดที่" บน CPU เดิม 8086 ประมวลผลเช่นมีงบประมาณทรานซิสเตอร์น้อยกว่า 30,000 ทรานซิสเตอร์ หน่วยประมวลผล Pentium III มีงบประมาณกว่าแปดล้านทรานซิสเตอร์ สองคนนี้สะท้อนให้เห็นถึงความแตกต่างของงบประมาณในด้านเทคโนโลยีเซมิคอนดักเตอร์ในปี 1978 เทียบกับ 1998
ความเป็นจริงที่น่ารังเกียจ # 2 : ค่าใช้จ่าย . แม้ว่ามันจะเป็นไปได้ที่จะใช้นับล้านทรานซิสเตอร์บน CPU วันนี้, ทรานซิสเตอร์ยิ่งคุณใช้มีราคาแพงกว่าซีพียู โปรเซสเซอร์ Pentium IV ตัวอย่างเช่นหลายร้อยดอลลาร์ค่าใช้จ่าย (ประมาณ 2002) CPU ที่มีเพียง 30,000 ทรานซิสเตอร์ (หรือราว 2002) จะเสียค่าใช้จ่ายเพียงไม่กี่ดอลลาร์ สำหรับระบบที่ใช้ต้นทุนต่ำก็อาจจะมีความสำคัญมากขึ้นที่จะโกนคุณสมบัติบางอย่างและใช้ทรานซิสเตอร์น้อยลงจึงลดค่าใช้จ่ายของ CPU
ความเป็นจริงที่น่ารังเกียจ # 3 : ขยาย . หนึ่งปัญหากับวิธีการ "ครัวอ่างล้างจาน" เป็นว่ามันเป็นเรื่องยากมากที่จะคาดหวังคุณลักษณะทั้งหมดที่คนจะต้องการ ตัวอย่างเช่น MMX และการปรับปรุงการเรียนการสอน SIMD ของอินเทลได้เพิ่มขึ้นจะทำให้การเขียนโปรแกรมมัลติมีเดียปฏิบัติเพิ่มเติมเกี่ยวกับการประมวลผลเพนเทียม กลับในปี 1978 คนน้อยมากที่จะได้อาจจะเป็นที่คาดว่าจะต้องใช้คำแนะนำเหล่านี้
ความเป็นจริงที่น่ารังเกียจ # 4 : มรดกสนับสนุน . นี้เกือบจะตรงข้ามของการขยาย มักจะเป็นกรณีที่มีการเรียนการสอนการออกแบบซีพียูรู้สึกเป็นสิ่งสำคัญที่จะออกมาจะมีประโยชน์น้อยกว่าที่คาดการณ์ไว้ ยกตัวอย่างเช่นการเรียนการสอน LOOP ใน 80x86 CPU เห็นการใช้งานน้อยมากในโปรแกรมที่มีประสิทธิภาพสูงที่ทันสมัย 80x86 ENTER การเรียนการสอนเป็นอีกหนึ่งตัวอย่างที่ดี เมื่อมีการออกแบบซีพียูใช้วิธี "ครัวอ่างล้างจาน" ก็มักจะพบบ่อยในการค้นพบว่าโปรแกรมแทบไม่เคยใช้บางส่วนของคำแนะนำที่มีอยู่ แต่น่าเสียดายที่คุณไม่สามารถลบคำแนะนำในรุ่นที่ใหม่กว่าในการประมวลผลเพราะจะทำลายโปรแกรมที่มีอยู่บางส่วนที่ใช้คำแนะนำเหล่านั้น โดยทั่วไปเมื่อคุณเพิ่มการเรียนการสอนที่คุณต้องสนับสนุนมันตลอดไปในชุดคำสั่ง เว้นแต่โปรแกรมน้อยมากใช้การเรียนการสอน (และคุณยินดีที่จะปล่อยให้พวกเขาทำลาย) หรือคุณจะสามารถจำลองการเรียนการสอนในซอฟต์แวร์ที่ลบคำแนะนำเป็นสิ่งที่ยากมากที่จะทำ
ความเป็นจริงที่น่ารังเกียจ # 4 : ความซับซ้อนของความนิยมของโปรเซสเซอร์ใหม่เป็นวัดได้ง่ายโดยวิธีการที่ซอฟต์แวร์มากคนเขียนสำหรับการประมวลผลที่ ส่วนใหญ่การออกแบบซีพียูตายตายอย่างรวดเร็วเพราะไม่มีใครเขียนซอฟแวร์ที่เฉพาะเจาะจงกับ CPU ที่ ดังนั้นนักออกแบบซีพียูจะต้องพิจารณาประกอบโปรแกรมเมอร์และนักเขียนคอมไพเลอร์ที่จะใช้ชิปที่แนะนำ ในขณะที่ "ครัวอ่างล้างจาน" วิธีการอาจดูเหมือนจะดึงดูดความสนใจการเขียนโปรแกรมดังกล่าวความจริงก็คือไม่มีใครต้องการที่จะเรียนรู้ระบบที่ซับซ้อนมากเกินไป ถ้า CPU ของคุณทำทุกอย่างภายใต้ดวงอาทิตย์นี้อาจดึงดูดคนที่มีความคุ้นเคยกับซีพียู แต่น่าเสียดายจิตวิญญาณที่ไม่ดีที่ไม่ทราบชิปและมีการเรียนรู้มันทั้งหมดในครั้งเดียว
ปัญหาเหล่านี้ด้วยวิธีการ "ครัวอ่างล้างจาน" ทุกคนมีวิธีการแก้ปัญหาร่วมกันออกแบบการเรียนการสอนที่ง่ายตั้งค่าให้เริ่มต้นด้วยและออกจากห้องพักสำหรับการขยายตัวในภายหลัง นี้เป็นหนึ่งในเหตุผลสำคัญที่ทำให้ 80x86 ได้พิสูจน์ให้เป็นที่นิยมและจีรัง อินเทลเริ่มต้นด้วย CPU ที่ค่อนข้างง่ายและคิดออกว่าจะขยายชุดการเรียนการสอนในช่วงหลายปีเพื่อรองรับคุณสมบัติใหม่
3 พื้นฐานการออกแบบการเรียนการสอนเป้าหมาย
ในแบบฉบับฟอนนอยมันน์ซีพียูสถาปัตยกรรมคอมพิวเตอร์เข้ารหัสคำแนะนำ CPU เป็นค่าตัวเลขและเก็บค่าตัวเลขเหล่านี้ในหน่วยความจำ การเข้ารหัสของคำแนะนำเหล่านี้เป็นหนึ่งในงานที่สำคัญในการออกแบบชุดคำสั่งและต้องใช้ความคิดระวังให้มาก
การเข้ารหัสการเรียนการสอนที่เราต้องเลือกค่า opcode ที่เป็นตัวเลขไม่ซ้ำกันสำหรับแต่ละคำสั่ง (เห็นได้ชัดว่าทั้งสองคำแนะนำที่แตกต่างกันไม่สามารถใช้ค่าตัวเลขเดียวกันหรือ CPU จะไม่สามารถที่จะแยกความแตกต่างของพวกเขาเมื่อมันพยายามที่จะถอดรหัสค่า opcode) มีจำนวน n บิตมี 2 nopcodes เป็นไปได้ที่แตกต่างกันเพื่อให้คำแนะนำการเข้ารหัสเมตรคุณจะต้อง opcode ที่อย่างน้อยเข้าสู่ระบบ2 (เมตร) บิตนาน
การเข้ารหัส opcodes เป็นเพียงเล็กน้อยที่เกี่ยวข้องมากขึ้นกว่าการกำหนดค่าตัวเลขที่ไม่ซ้ำกันแต่ละคำสั่ง โปรดจำไว้ว่าเราจะต้องใช้ฮาร์ดแวร์ที่เกิดขึ้นจริง (เช่นวงจรถอดรหัส) จะคิดออกว่าแต่ละคำสั่งและคำสั่งไม่ส่วนที่เหลือของฮาร์ดแวร์ที่จะทำงานที่ระบุ สมมติว่าคุณมี opcode เจ็ดบิต กับ opcode ขนาดนี้เราสามารถเข้ารหัส 128 คำแนะนำที่แตกต่างกัน เพื่อถอดรหัสแต่ละคำสั่งเป็นรายบุคคลต้องเจ็ดเส้น 128 เส้นถอดรหัส - ชิ้นราคาแพงของวงจรสมมติว่าคำแนะนำของเรามีรูปแบบบางอย่างเราสามารถลดฮาร์ดแวร์ถอดรหัสโดยการเปลี่ยนขนาดใหญ่นี้มีสามตัวถอดรหัสขนาดเล็ก
หากคุณมี 128 คำแนะนำซ้ำกันอย่างแท้จริงมีเพียงเล็กน้อยที่คุณสามารถทำได้นอกเหนือจากการถอดรหัสแต่ละคำสั่งเป็นรายบุคคล อย่างไรก็ตามในสถาปัตยกรรมมากที่สุดคำแนะนำไม่ได้เป็นอิสระจากอีกคนหนึ่ง ยกตัวอย่างเช่นซีพียู 80x86 opcodes สำหรับ "MOV (EAX, ebx);" และ "MOV (ECX, EDX);" มีความแตกต่างกัน (เพราะเหล่านี้มีคำแนะนำที่แตกต่างกัน) แต่คำแนะนำเหล่านี้จะไม่เป็นที่ไม่เกี่ยวข้องกัน พวกเขาทั้งสองย้ายข้อมูลจากที่หนึ่งไปยังอีกที่ลงทะเบียน ในความเป็นจริงที่แตกต่างระหว่างพวกเขาเป็นแหล่งที่มาและปลายทางตัวถูกดำเนินการ นี้แสดงให้เห็นว่าเราสามารถเข้ารหัสคำแนะนำเช่น MOV กับย่อย opcode และการเข้ารหัสตัวถูกดำเนินการโดยใช้สายอื่น ๆ ของบิตใน opcode
ตัวอย่างเช่นถ้าเราจริงๆมีเพียงแปดคำแนะนำแต่ละคำสั่งมีสองตัวถูกดำเนินการและแต่ละตัวถูกดำเนินการสามารถเป็นหนึ่งในสี่ค่าที่แตกต่างกันแล้วเราสามารถเข้ารหัส opcode เป็นสาขาเต็มไปสามมีสามสองและสองบิต (ดูรูปที่ 5.1 ) การเข้ารหัสนี้จะต้องใช้สามถอดรหัสง่ายที่สมบูรณ์ตรวจสอบสิ่งที่การเรียนการสอนของ CPU ควรดำเนินการ ขณะนี้เป็นบิตของกรณีที่เล็กน้อยก็ไม่แสดงให้เห็นถึงแง่มุมหนึ่งที่สำคัญมากของการออกแบบชุดคำสั่ง - มันเป็นสิ่งสำคัญที่จะทำให้ opcodes ง่ายต่อการถอดรหัสและวิธีที่ง่ายที่สุดที่จะทำนี้คือการเลิก opcode ในหลายสาขาที่แตกต่างกันบิต, ข้อมูลส่วนแต่ละส่วนของข้อมูลที่จำเป็นในการดำเนินการเรียนการสอนเต็มรูปแบบ สาขาขนาดเล็กบิตเหล่านี้ได้ง่ายขึ้นมันก็จะเป็นฮาร์ดแวร์ที่จะถอดรหัสและดำเนินการได้2 .
แม้ว่าอินเทลอาจจะไปน้อยลงน้ำกับการออกแบบของเดิม 8086 ชุดคำสั่งเป้าหมายของการออกแบบที่สำคัญคือเพื่อให้การเรียนการสอนที่มีขนาดอยู่ในช่วงที่เหมาะสม ซีพียูที่มีคำแนะนำยาวโดยไม่จำเป็นใช้หน่วยความจำเพิ่มเติมสำหรับโปรแกรมของพวกเขา นี้มีแนวโน้มที่จะสร้างขึ้นแคชและดังนั้นเจ็บประสิทธิภาพโดยรวมของซีพียู ดังนั้นเราจึงต้องการคำแนะนำของเราจะเป็นขนาดเล็กที่สุดเท่าที่ทำได้เพื่อให้รหัสโปรแกรมของเราใช้หน่วยความจำน้อยที่สุดเท่าที่เป็นไปได้
มันจะดูเหมือนว่าถ้าเรามีการเข้ารหัส 2 nคำแนะนำที่แตกต่างกันโดยใช้บิต n จะมีงานที่คั่งค้างน้อยมากในการเลือกขนาดของการเรียนการสอน มันจะใช้เวลาบิต n การเข้ารหัสที่ 2 nคำแนะนำที่คุณไม่สามารถทำมันได้กับใด ๆ น้อยลง คุณอาจจะแน่นอนใช้มากกว่าบิต n; และเชื่อหรือไม่ว่าเป็นความลับในการลดขนาดของโปรแกรมทั่วไปบน CPU
ก่อนที่จะคุยถึงวิธีการใช้คำสั่งอีกต่อไปในการสร้างโปรแกรมที่สั้นกว่าการพูดนอกเรื่องสั้นเป็นสิ่งที่จำเป็น สิ่งแรกที่ควรทราบก็คือเรามักไม่สามารถเลือกหมายเลขของพลบิตสำหรับความยาว opcode ของเรา สมมติว่าซีพียูของเรามีความสามารถในการอ่านไบต์จากหน่วยความจำ opcode อาจจะต้องมีบางหลายแม้แปดบิตนาน ถ้า CPU ไม่สามารถอ่านไบต์จากหน่วยความจำ (เช่นส่วนใหญ่ RISC ซีพียูเพียงอ่านหน่วยความจำใน 32 หรือ 64 ชิ้นบิต) แล้ว opcode เป็นไปได้ขนาดเดียวกับวัตถุที่มีขนาดเล็กที่สุดของ CPU สามารถอ่านจากหน่วยความจำในครั้งเดียว (เช่น 32 บิตบนชิป RISC ทั่วไป) ความพยายามที่จะหดตัวขนาด opcode ด้านล่างบัสข้อมูลนี้บังคับใช้วงเงินที่ต่ำกว่าใด ๆ ที่เป็นประโยชน์ เนื่องจากเรากำลังพูดถึงสถาปัตยกรรม 80x86 ในข้อความนี้เราจะทำงานร่วมกับ opcodes ว่าต้องหลายแม้แปดบิตนาน
จุดที่จะต้องพิจารณาที่นี่ก็คือขนาดของตัวถูกดำเนินการเรียนการสอนของ นักออกแบบบาง CPU (โดยเฉพาะนักออกแบบ RISC) รวมถึงตัวถูกดำเนินการทั้งหมดใน opcode ของพวกเขา นักออกแบบ CPU อื่น ๆ (นักออกแบบมัก CISC) ไม่นับตัวถูกดำเนินการเช่นค่าคงที่ทันทีหรือการเคลื่อนอยู่เป็นส่วนหนึ่งของ opcode (แม้ว่าพวกเขาจะมักจะนับลงทะเบียนการเข้ารหัสตัวถูกดำเนินการเป็นส่วนหนึ่งของ opcode) เราจะใช้วิธีการ CISC ที่นี่และไม่นับอย่างต่อเนื่องทันทีหรืออยู่ที่ค่าการเคลื่อนที่เป็นส่วนหนึ่งของ opcode ที่เกิดขึ้นจริง
กับ opcode แปดบิตคุณจะสามารถเข้ารหัส 256 คำแนะนำที่แตกต่างกัน แม้ว่าเราจะไม่นับตัวถูกดำเนินการเรียนการสอนในฐานะที่เป็นส่วนหนึ่งของ opcode มีเพียง 256 คำแนะนำที่แตกต่างกันค่อนข้าง จำกัด มันไม่ใช่ว่าคุณไม่สามารถสร้าง CPU ที่ opcode แปดบิตส่วนใหญ่ของโปรเซสเซอร์แปดบิต predating 8086 มี opcodes แปดบิตก็เพียงว่าโปรเซสเซอร์ที่ทันสมัยมักจะมีมากกว่า 256 คำแนะนำที่แตกต่างกัน ขั้นตอนต่อไปก็คือการ opcode สองไบต์ กับ opcode สองไบต์เราสามารถมีได้ถึง 65,536 คำแนะนำที่แตกต่างกัน (ซึ่งอาจจะเป็นพอ) แต่คำแนะนำของเรามีสองเท่าในขนาด (ไม่นับตัวถูกดำเนินการของหลักสูตร)
ถ้าลดขนาดการเรียนการสอนเป็นเป้าหมายการออกแบบที่สำคัญ3เราสามารถใช้เทคนิคบางอย่างจากทฤษฎีการบีบอัดข้อมูลเพื่อลดขนาดเฉลี่ยของคำแนะนำของเรา แนวคิดพื้นฐานคือ: ครั้งแรกที่เราวิเคราะห์โปรแกรมที่เขียนขึ้นสำหรับ CPU ของเรา (หรือ CPU คล้ายกับของเราถ้าไม่มีใครได้เขียนโปรแกรมใด ๆ สำหรับ CPU ของเรา) และนับจำนวนของการเกิดขึ้นของแต่ละ opcode ในจำนวนมากการใช้งานทั่วไป แล้วเราจะสร้างรายการที่จัดเรียงของ opcodes เหล่านี้ออกจากส่วนใหญ่ที่ใช้บ่อยในการน้อยที่สุดที่ใช้บ่อย จากนั้นเราก็พยายามที่จะออกแบบชุดคำสั่งของเราโดยใช้ opcodes หนึ่งไบต์สำหรับคำแนะนำมากที่สุดที่ใช้บ่อย, opcodes ไบต์สำหรับชุดต่อไปของคำแนะนำส่วนใหญ่ที่ใช้บ่อยและสาม (หรือมากกว่า) opcodes ไบต์สำหรับที่ไม่ค่อยได้ใช้ คำแนะนำ แม้ว่าขนาดการเรียนการสอนสูงสุดของเราอยู่ในขณะนี้สามหรือมากกว่าไบต์มากที่สุดของคำสั่งที่เกิดขึ้นจริงที่ปรากฏในโปรแกรมจะใช้หนึ่งหรือสอง opcodes ไบต์ดังนั้นความยาว opcode เฉลี่ยจะอยู่ที่ไหนสักแห่งระหว่างหนึ่งและสองไบต์ (ขอเรียกว่า 1.5 bytes) และ โปรแกรมทั่วไปจะสั้นลงกว่าที่เราเลือก opcode สองไบต์สำหรับคำแนะนำทั้งหมด (ดูรูปที่ 5.2 )
แม้ว่าจะใช้คำแนะนำยาวตัวแปรช่วยให้เราสามารถสร้างโปรแกรมขนาดเล็กก็มาในราคา แรกของทุกการถอดรหัสคำแนะนำมีความซับซ้อนมากขึ้นอีกนิดก่อนที่จะถอดรหัสข้อมูลการเรียนการสอนซีพียูต้องถอดรหัสขนาดการเรียนการสอนของ นี้ขั้นตอนพิเศษสิ้นเปลืองเวลาและอาจมีผลต่อประสิทธิภาพโดยรวมของ CPU (โดยการแนะนำความล่าช้าในขั้นตอนการถอดรหัสและจึง จำกัด ความถี่สัญญาณนาฬิกาสูงสุดของ CPU) มีปัญหากับคำแนะนำยาวตัวแปรก็คือว่ามันทำให้การถอดรหัสคำแนะนำหลายในท่อค่อนข้างยาก (เนื่องจากเราไม่สามารถตรวจสอบนิดขอบเขตการเรียนการสอนในคิว prefetch) ด้วยเหตุผลเหล่านี้พร้อมกับคนอื่น ๆ คือเหตุผลที่สถาปัตยกรรม RISC ที่นิยมมากที่สุดคำแนะนำหลีกเลี่ยงการปรับขนาด แต่สำหรับจุดประสงค์ของเราเราจะไปด้วยวิธีการระยะเวลาตัวแปรตั้งแต่ประหยัดหน่วยความจำเป็นเป้าหมายที่น่าชื่นชม
ก่อนที่จริงการเลือกคำแนะนำที่คุณต้องการที่จะใช้ในการทำงานของคุณตอนนี้จะเป็นช่วงเวลาที่ดีในการวางแผนสำหรับอนาคต ไม่ต้องสงสัยคุณจะค้นพบความจำเป็นในการคำสั่งใหม่ที่บางจุดในอนาคตดังนั้นการสำรอง opcodes บางส่วนเฉพาะสำหรับวัตถุประสงค์ที่เป็นความคิดที่ดีจริง ถ้าคุณได้รับการเรียนการสอนโดยใช้การเข้ารหัสที่ปรากฏในภาพที่ 5.2สำหรับรูปแบบ opcode ของคุณก็อาจจะไม่ได้เป็นความคิดที่ดีที่จะสำรองหนึ่งช่วงตึกจาก 64 opcodes หนึ่งไบต์ครึ่ง (4,096) ของคำแนะนำสองไบต์และครึ่งหนึ่ง (1,048,576) ของ opcodes สามไบต์สำหรับใช้ในอนาคต โดยเฉพาะอย่างยิ่งให้ขึ้น 64 ของที่มีค่ามาก opcodes หนึ่งไบต์อาจดูเหมือนฟุ่มเฟือย แต่ประวัติศาสตร์แสดงให้เห็นว่าการคาดการณ์ดังกล่าวเป็นรางวัล
ขั้นตอนต่อไปคือการเลือกคำแนะนำที่คุณต้องการที่จะดำเนินการ ทราบว่าแม้ว่าเราได้ลิขสิทธิ์เกือบครึ่งหนึ่งคำแนะนำสำหรับการขยายตัวในอนาคตเราจะไม่จริงต้องดำเนินการตามคำแนะนำสำหรับทุก opcodes ที่เหลือ เราสามารถเลือกที่จะออกจากหมายเลขที่ดีของคำแนะนำเหล่านี้ unimplemented (และมีประสิทธิภาพสำรองพวกเขาในอนาคตได้เป็นอย่างดี) วิธีการที่เหมาะสมไม่ได้ที่จะเห็นวิธีการอย่างรวดเร็วเราสามารถใช้ขึ้น opcodes ทั้งหมด แต่เพื่อให้แน่ใจว่าเรามีชุดคำสั่งที่สอดคล้องกันและมีความสมบูรณ์ได้รับการประนีประนอมที่เราต้องอยู่กับ (เช่นข้อ จำกัด ของซิลิกอน) จุดหลักที่จะเก็บไว้ในใจที่นี่ก็คือว่ามันง่ายมากที่จะเพิ่มการเรียนการสอนต่อไปกว่านั้นคือการเอาการเรียนการสอนในภายหลัง ดังนั้นสำหรับครั้งแรกที่ไปรอบก็มักจะดีกว่าที่จะไปกับการออกแบบที่เรียบง่ายมากกว่าการออกแบบที่ซับซ้อนมากขึ้น
ขั้นตอนแรกคือการเลือกบางชนิดการเรียนการสอนทั่วไป สำหรับความพยายามครั้งแรกคุณควร จำกัด คำแนะนำเพื่อคำแนะนำที่รู้จักกันดีและบางอย่างร่วมกัน สถานที่ที่ดีที่สุดที่จะช่วยหาในการเลือกคำแนะนำเหล่านี้เป็นชุดคำสั่งในการประมวลผลอื่น ๆ ตัวอย่างเช่นการประมวลผลมากที่สุดที่คุณพบจะมีคำแนะนำดังต่อไปนี้:
เป้าหมายของคุณเป็นนักออกแบบของชุดคำสั่งของ CPU เริ่มต้นคือการเลือกชุดที่เหมาะสมของคำแนะนำที่จะช่วยให้โปรแกรมเมอร์ที่จะเขียนได้อย่างมีประสิทธิภาพโปรแกรม (ใช้คำแนะนำไม่กี่เท่าที่เป็นไปได้) โดยไม่ต้องเพิ่มคำแนะนำเป็นจำนวนมากเพื่อให้คุณเกินงบประมาณซิลิกอนหรือละเมิดประนีประนอมระบบอื่น ๆ . นี่คือการตัดสินใจเชิงกลยุทธ์มากคนหนึ่งที่ออกแบบ CPU ควรตั้งอยู่บนพื้นฐานความระมัดระวังการวิจัยการทดลองและการจำลอง งานของนักออกแบบ CPU ไม่ได้ที่จะสร้างชุดการเรียนการสอนที่ดีที่สุด แต่จะสร้างชุดการเรียนการสอนที่ดีที่สุดที่ได้รับข้อ จำกัด ทั้งหมด
เมื่อคุณตัดสินใจที่คำแนะนำที่คุณต้องการรวมไว้ใน (เริ่มต้น) ของชุดคำสั่งขั้นตอนต่อไปคือการกำหนด opcodes สำหรับพวกเขา ขั้นตอนแรกคือการจัดกลุ่มคำแนะนำของคุณเป็นชุดโดยลักษณะทั่วไปของคำแนะนำเหล่านั้น ตัวอย่างเช่นคําสั่ง ADD อาจจะให้การสนับสนุนชุดเดียวกันที่แน่นอนของตัวถูกดำเนินการตามคําสั่ง SUB ดังนั้นมันทำให้รู้สึกที่จะนำทั้งสองคำแนะนำในกลุ่มเดียวกัน ในมืออื่น ๆ ที่การเรียนการสอนไม่ได้มักจะต้องถูกดำเนินการเพียงคนเดียว4เช่นเดียวกับการเรียนการสอน NEG ดังนั้นคุณอาจต้องการใส่ทั้งสองคำแนะนำในกลุ่มเดียวกัน แต่กลุ่มที่แตกต่างกันกว่า ADD และ SUB
เมื่อคุณได้จัดกลุ่มคำแนะนำของคุณทุกขั้นตอนต่อไปคือการเข้ารหัสพวกเขา เข้ารหัสโดยทั่วไปจะใช้บิตบางอย่างที่จะเลือกกลุ่มการเรียนการสอนตกอยู่ในนั้นมันจะใช้บิตบางอย่างที่จะเลือกการเรียนการสอนโดยเฉพาะอย่างยิ่งจากกลุ่มนั้นและมันจะใช้บิตบางส่วนในการกำหนดประเภทของตัวถูกดำเนินการเรียนการสอนที่ช่วยให้ (เช่นลงทะเบียนที่ สถานที่หน่วยความจำและค่าคงที่) จำนวนบิตที่จำเป็นในการเข้ารหัสข้อมูลทั้งหมดนี้อาจจะมีผลกระทบโดยตรงต่อการเรียนการสอนของขนาดโดยไม่คำนึงถึงความถี่ของการเรียนการสอน ตัวอย่างเช่นถ้าคุณต้องการสองบิตเพื่อเลือกกลุ่มสี่บิตเพื่อเลือกการเรียนการสอนในกลุ่มนั้นและหกบิตเพื่อระบุประเภทตัวถูกดำเนินการเรียนการสอนของคุณจะไม่เหมาะสมกับการเรียนการสอนนี้ใน opcode แปดบิต ในทางตรงกันข้ามถ้าทั้งหมดที่คุณต้องการจริงๆที่จะทำคือการผลักดันให้เป็นหนึ่งในแปดลงทะเบียนที่แตกต่างกันบนสแต็คที่คุณสามารถใช้สี่บิตเพื่อเลือกคำสั่ง PUSH และสามบิตเพื่อเลือกการลงทะเบียน (สมมติว่าการเข้ารหัสในรูปที่ 5.2แปดและ HO บิตจะต้องมีศูนย์)
การเข้ารหัสตัวถูกดำเนินการอยู่เสมอปัญหาเพราะคำแนะนำหลายช่วยให้จำนวนมากของตัวถูกดำเนินการ ยกตัวอย่างเช่นการเรียนการสอน 80x86 MOV ทั่วไปต้อง opcode สองไบต์5 . แต่ Intel สังเกตเห็นว่า "การเคลื่อนไหว (DISP, EAX);" และ "MOV (EAX, DISP);" คำแนะนำที่เกิดขึ้นบ่อยมากดังนั้นพวกเขาจึงสร้างรุ่นหนึ่งไบต์พิเศษของคำสั่งเพื่อลดขนาดของมันและดังนั้นขนาดของโปรแกรมเหล่านั้นที่ใช้คำสั่งนี้บ่อย ทราบว่าอินเทลไม่ได้ลบรุ่นสองไบต์ของคำแนะนำเหล่านี้ พวกเขามีสองคำแนะนำที่แตกต่างกันที่จะจัดเก็บในหน่วยความจำ EAX หรือโหลด EAX จากหน่วยความจำ คอมไพเลอร์หรือแอสเซมมักจะปล่อยสั้นของทั้งสองคำแนะนำเมื่อได้รับตัวเลือกที่สองหรือมากกว่าคำสั่งที่ลมขึ้นทำสิ่งเดียวกัน
ขอให้สังเกตที่สำคัญการปิดอินเทลทำด้วยการเรียนการสอน MOV พวกเขาให้ขึ้น opcode พิเศษเพื่อที่จะให้รุ่นสั้นของหนึ่งในคำแนะนำ MOV ที่จริงแล้วอินเทลใช้เคล็ดลับนี้ทั่วสถานที่ในการสร้างที่สั้นและง่ายต่อการถอดรหัสคำแนะนำ กลับในปี 1978 นี้คือการประนีประนอมที่ดี (การลดจำนวนรวมของคำแนะนำที่เป็นไปได้ขณะที่ยังลดขนาดโปรแกรม) วันนี้นักออกแบบซีพียูอาจจะต้องการที่จะใช้ opcodes ซ้ำซ้อนเหล่านั้นเพื่อวัตถุประสงค์ที่แตกต่างกัน แต่การตัดสินใจของ Intel เป็นที่เหมาะสมในเวลานั้น (ได้รับค่าใช้จ่ายสูงของหน่วยความจำในปี 1978)
เพื่อส่งเสริมการสนทนานี้เราต้องทำงานกับตัวอย่าง ดังนั้นส่วนถัดไปจะผ่านกระบวนการของการออกแบบการเรียนการสอนที่ง่ายมากตั้งเป็นวิธีการแสดงให้เห็นถึงขั้นตอนนี้
เพราะของการปรับปรุงที่เกิดขึ้นกับโปรเซสเซอร์ตระกูล 80x86 ปีที่ผ่านมาเป้าหมายของอินเทลออกแบบในปี 1978 และความก้าวหน้าในสถาปัตยกรรมคอมพิวเตอร์ที่เกิดขึ้นในช่วงหลายปีที่การเข้ารหัสของคำแนะนำ 80x86 เป็นอย่างมากที่ซับซ้อนและค่อนข้างไร้เหตุผล ดังนั้น 80x86 ไม่ได้เป็นผู้สมัครที่ดีสำหรับสถาปัตยกรรมตัวอย่างเช่นเมื่อพูดถึงวิธีการออกแบบและการเข้ารหัสชุดคำสั่ง อย่างไรก็ตามตั้งแต่นี้เป็นข้อความเกี่ยวกับการเขียนโปรแกรม 80x86 ภาษาประกอบความพยายามที่จะนำเสนอการเข้ารหัสสำหรับบางหน่วยประมวลผลที่โลกแห่งความจริงที่เรียบง่ายไม่ได้ทำให้ความรู้สึก ดังนั้นเราจะหารือเกี่ยวกับการออกแบบชุดคำสั่งในสองขั้นตอนแรกเราจะพัฒนาง่าย (เล็กน้อย) ชุดคำสั่งสำหรับการประมวลผลสมมุติว่าเป็นส่วนเล็ก ๆ ของ 80x86 แล้วเราจะขยายการสนทนาของเรากับชุดคำสั่ง 80x86 เต็ม หน่วยประมวลผลสมมุติของเราไม่ได้ CPU 80x86 จริงดังนั้นเราจะเรียกมันว่าหน่วยประมวลผล Y86 เพื่อหลีกเลี่ยงการสมาคมอุบัติเหตุใด ๆ กับ Intel x86 ครอบครัว
หน่วยประมวลผล Y86 เป็นมากปล้นลงรุ่นของซีพียู x 86 แรกของทั้งหมด Y86 สนับสนุนเฉพาะขนาดตัวถูกดำเนินการอย่างใดอย่างหนึ่ง - 16 บิตความเรียบง่ายนี้ปลดปล่อยเราจากที่มีการเข้ารหัสขนาดของตัวถูกดำเนินการเป็นส่วนหนึ่งของ opcode (ซึ่งจะช่วยลดจำนวนของ opcodes เราจะต้อง)ความเรียบง่ายก็คือว่าหน่วยประมวลผล Y86 สนับสนุนเพียงสี่ 16 บิตลงทะเบียน: AX, BX, CX, และ DX นี้จะช่วยให้เราเข้ารหัสตัวถูกดำเนินการลงทะเบียนมีเพียงสองบิต (เมื่อเทียบกับสามบิตครอบครัว 80x86 ต้องใช้การเข้ารหัสแปดลงทะเบียน) สุดท้ายโปรเซสเซอร์ Y86 เท่านั้นสนับสนุนรถบัสที่อยู่ 16 บิตพร้อมสูงสุด 65,536 ไบต์ของหน่วยความจำที่ simplifications เหล่านี้บวกกับชุดคำสั่งที่ จำกัด มากจะช่วยให้เราสามารถเข้ารหัสคำแนะนำ Y86 ทั้งหมดที่ใช้ opcode ไบต์เดียวและการเคลื่อนที่สองไบต์ / ชดเชย (ถ้าจำเป็น)
Y86 CPU มี 20 คำแนะนำ เจ็ดคำแนะนำเหล่านี้มีสองตัวถูกดำเนินการแปดคำแนะนำเหล่านี้มีตัวถูกดำเนินการเพียงครั้งเดียวและห้าคำสั่งที่ไม่ถูกดำเนินการในทุก คำแนะนำ MOV (สองรูปแบบ), ADD, SUB, ซีเอ็มพี, AND, OR, NOT, JE, JNE, JB, JBE, JA, JAE, เจเอ็มพี, BRK, IRET, หยุด, GET และ PUT ย่อหน้าต่อไปนี้อธิบายถึงวิธีการทำงานของแต่ละเหล่านี้
การเรียนการสอน MOV เป็นจริงสองชั้นเรียนการเรียนการสอนรวมเข้าไปในการเรียนการสอนเหมือนกัน สองรูปแบบของการเรียนการสอนการเคลื่อนไหวใช้รูปแบบดังต่อไปนี้
ที่regใด ๆ ของขวาน, BX, CX หรือ DX; คงที่เป็นค่าคงที่ที่เป็นตัวเลข (โดยใช้เลขฐานสิบหก) และหน่วยความจำตัวถูกดำเนินการระบุตำแหน่งหน่วยความจำ ส่วนถัดไปจะอธิบายถึงรูปแบบที่เป็นไปได้ถูกดำเนินการหน่วยความจำสามารถใช้ "reg / หน่วยความจำ / คงที่" ตัวถูกดำเนินการจะบอกคุณว่าถูกดำเนินการนี้โดยเฉพาะอาจจะมีการลงทะเบียนที่ตั้งหน่วยความจำหรือคงที่
หมายเหตุ: การเรียนการสอนไม่ปรากฏแยกกันเพราะมันอยู่ในระดับที่แตกต่างกว่าคำแนะนำทางคณิตศาสตร์อื่น ๆ (เพราะมันสนับสนุนเฉพาะถูกดำเนินการเดี่ยว)
คําสั่ง ADD เพิ่มมูลค่าของตัวถูกดำเนินการครั้งแรกที่สอง (ลงทะเบียน) ตัวถูกดำเนินการออกจากผลรวมในที่สอง (ลงทะเบียน) ตัวถูกดำเนินการ คําสั่ง SUB ลบค่าของตัวถูกดำเนินการเป็นครั้งแรกจากที่สองออกจากความแตกต่างในตัวถูกดำเนินการที่สอง การเรียนการสอน CMP เปรียบเทียบตัวถูกดำเนินการครั้งแรกกับครั้งที่สองและบันทึกผลของการเปรียบเทียบนี้เพื่อใช้งานกับหนึ่งในคำแนะนำกระโดดเงื่อนไข (อธิบายไว้ในช่วงเวลา) AND และคำแนะนำหรือคำนวณค่าที่เหมาะสมดำเนินการตรรกะที่ตรงกันทั้งสองตัวถูกดำเนินการและจัดเก็บผลในตัวถูกดำเนินการเป็นครั้งแรก การเรียนการสอนไม่ได้ตีความบิตในหน่วยความจำเดียวหรือลงทะเบียนถูกดำเนินการ
คำแนะนำการถ่ายโอนการควบคุมขัดขวางการดำเนินการลำดับของคำสั่งในหน่วยความจำและการควบคุมการถ่ายโอนไปยังจุดอื่น ๆ ในหน่วยความจำอย่างใดอย่างหนึ่งโดยไม่มีเงื่อนไขหรือหลังจากการทดสอบผลของคำสั่งก่อนหน้านี้ซีเอ็มพี คำแนะนำเหล่านี้รวมถึงต่อไปนี้:
คำแนะนำแรกที่หกให้คุณตรวจสอบผลการเรียนการสอนของซีเอ็มพีก่อนหน้านี้นานกว่า, มากกว่าหรือเท่ากับน้อยกว่าน้อยกว่าหรือเท่ากับความเสมอภาคหรือความไม่เท่าเทียมกัน6 . ตัวอย่างเช่นถ้าคุณเปรียบเทียบขวานและ BX ลงทะเบียนกับ "ซีเอ็มพี (ขวาน BX);" การเรียนการสอนและดำเนินการเรียนการสอน JA, Y86 CPU จะข้ามไปยังสถานที่ปลายทางที่ระบุถ้าขวานมากกว่า BX ถ้าขวานไม่ได้มากกว่า BX ควบคุมจะตกผ่านไปการเรียนการสอนต่อไปในโปรแกรม
คําสั่ง JMP โดยไม่มีเงื่อนไขการถ่ายโอนการควบคุมเพื่อการเรียนการสอนที่อยู่ปลายทาง IRET ผลตอบแทนการเรียนการสอนการควบคุมจากประจำบริการขัดจังหวะซึ่งเราจะหารือในภายหลัง
แถมและคำแนะนำการใส่ให้คุณอ่านและเขียนค่าจำนวนเต็ม GET จะหยุดและแจ้งให้ผู้ใช้สำหรับค่าฐานสิบหกแล้วเก็บค่าที่เป็นขวานลงทะเบียน แสดง PUT (ในเลขฐานสิบหก) ค่าของขวานลงทะเบียน
คำแนะนำที่เหลือไม่จำเป็นต้องถูกดำเนินการใด ๆ ที่พวกเขาจะหยุดและ BRK หยุดยุติการทำงานของโปรแกรมและ BRK หยุดโปรแกรมในรัฐที่จะสามารถเริ่มต้นใหม่
โปรเซสเซอร์ Y86 ต้อง opcode ไม่ซ้ำกันสำหรับการเรียนการสอนที่แตกต่างกันทุกครั้งไม่เพียง แต่การเรียนการสอน แม้ "MOV (BX ขวาน);" และ "MOV (CX, ขวาน);" มีทั้งที่อยู่ในระดับเดียวกันที่พวกเขาจะต้องมีความแตกต่างกันถ้า opcodes CPU คือการแยกความแตกต่างของพวกเขา อย่างไรก็ตามก่อนที่จะมองไปที่ทุก opcodes ที่เป็นไปได้อาจจะจะเป็นความคิดที่ดีที่จะเรียนรู้เกี่ยวกับตัวถูกดำเนินการเป็นไปได้สำหรับคำแนะนำเหล่านี้
3.1 โหมดที่อยู่ใน Y86
คำแนะนำ Y86 ใช้ห้าชนิดที่แตกต่างกันถูกดำเนินการ: ลงทะเบียนค่าคงที่และหน่วยความจำที่อยู่สามรูปแบบ รูปแบบที่แต่ละคนจะเรียกว่าโหมด . หน่วยประมวลผล Y86 สนับสนุนลงทะเบียนที่อยู่โหมด7 , ทันทีโหมด, อ้อมโหมด, การจัดทำดัชนีโหมดและตรงโหมด ย่อหน้าต่อไปนี้อธิบายแต่ละโหมดเหล่านี้
การเรียนการสอนครั้งแรกสำเร็จไม่มีอะไรแน่นอน เป็นชุดค่าจากขวานลงทะเบียนกลับเข้าไปในขวานลงทะเบียน ที่เหลืออีกสามคำแนะนำคัดลอกค่าของ BX, CX และ DX เป็นขวาน ทราบว่าคำแนะนำเหล่านี้ออกจาก BX, CX, และ DX ไม่เปลี่ยนแปลง ตัวถูกดำเนินการที่สอง (ปลายทาง) ไม่ได้ จำกัด อยู่ที่ขวาน; คุณสามารถย้ายค่าใด ๆ ของการลงทะเบียนเหล่านี้
คำแนะนำเหล่านี้เป็นสิ่งที่ตรงไปตรงสวย; พวกเขาโหลดลงทะเบียนของตนมีค่าคงที่เลขฐานสิบหกที่ระบุ8 .
มีสามโหมดที่อยู่ที่เกี่ยวข้องกับการเข้าถึงข้อมูลในหน่วยความจำ คำแนะนำต่อไปนี้แสดงให้เห็นถึงการใช้โหมดเหล่านี้ที่อยู่:
การเรียนการสอนครั้งแรกที่ด้านบนใช้โหมดโดยตรงในการโหลดขวานมีค่า 16 บิตที่เก็บไว้ในหน่วยความจำเริ่มต้นที่สถานที่ตั้ง $ 1,000
"การเคลื่อนไหว ([BX] ขวาน);" การเรียนการสอนโหลดขวานจากที่ตั้งหน่วยความจำที่ระบุโดยเนื้อหาของ BX ลงทะเบียน นี้เป็นโหมดที่อยู่ทางอ้อมแทนที่จะใช้ค่าใน BX คำแนะนำนี้เข้าถึงตำแหน่งหน่วยความจำที่มีอยู่ปรากฏใน BX โปรดทราบว่าต่อไปนี้สองคำแนะนำ:
แน่นอนลำดับที่สองเป็นที่นิยม แต่มีหลายกรณีที่การใช้ความร้ายเร็วสั้นกว่าและดีกว่า เราจะเห็นตัวอย่างบางส่วนของเล็ก ๆ น้อย ๆ ในภายหลัง
การเรียนการสอนนี้จะเพิ่มเนื้อหาของ BX กับ $ 1,000 ในการผลิตที่อยู่ของมูลค่าหน่วยความจำในการเรียกข้อมูล คำสั่งนี้จะมีประโยชน์สำหรับการเข้าถึงองค์ประกอบของอาร์เรย์บันทึกและโครงสร้างข้อมูลอื่น ๆ
3.2 คำแนะนำการเข้ารหัส Y86
แม้ว่าเราจะสามารถกำหนดโดยพล opcodes แต่ละคำแนะนำ Y86, เก็บไว้ในใจว่า CPU จริงใช้วงจรตรรกะที่จะถอดรหัส opcodes และการกระทำที่เหมาะสมกับพวกเขา opcode CPU โดยทั่วไปจะใช้จำนวนหนึ่งของบิตใน opcode เพื่อแสดงว่าการเรียนการสอนในชั้นเรียน (เช่น, MOV, ADD, SUB) และจำนวนที่แน่นอนของบิตการเข้ารหัสแต่ละตัวถูกดำเนินการ
การเรียนการสอน Y86 ทั่วไปใช้รูปแบบที่แสดงในรูปที่ 5.3 . การเรียนการสอนขั้นพื้นฐานเป็นคนใดคนหนึ่งหรือสามไบต์นาน opcode การเรียนการสอนประกอบด้วย byte เดียวที่มีสามช่อง สนามแรก HO สามบิตกำหนดการเรียนการสอน นี้จะให้แปดรวม ในขณะที่คุณอาจจำมี 20 คำแนะนำที่แตกต่างกัน เราไม่สามารถเข้ารหัส 20 คำแนะนำกับสามบิตดังนั้นเราจะต้องดึงเทคนิคบางอย่างที่จะจัดการกับคำแนะนำอื่น ๆ ในขณะที่คุณสามารถเห็นในภาพที่ 5.3 , opcode พื้นฐาน encodes คำแนะนำ MOV (สองคำแนะนำหนึ่งที่RRข้อมูลระบุปลายทางหนึ่งที่mmmข้อมูลระบุปลายทาง) และ ADD, SUB, ซีเอ็มพีและและหรือ คำแนะนำ : มีหนึ่งด้านการเรียนการสอนเพิ่มเติมเป็นพิเศษ . การเรียนการสอนในชั้นเรียนพิเศษมีกลไกที่ช่วยให้เราสามารถขยายจำนวนของการเรียนการสอนที่มีอยู่เราจะกลับไป opcode การขยายตัวนี้ไม่นาน
เพื่อตรวจสอบ opcode การเรียนการสอนโดยเฉพาะอย่างยิ่งของคุณต้องการเพียงเลือกบิตที่เหมาะสมสำหรับiii , RRและmmmสาขา RRข้อมูลมีทะเบียนปลายทาง (ยกเว้นคำสั่ง MOV ที่มีiiiข้อมูลคือ% 111) และmmmข้อมูลเข้ารหัสถูกดำเนินการแหล่งที่มา ตัวอย่างเช่นในการเข้ารหัส "MOV (BX ขวาน);" การเรียนการสอนที่คุณจะเลือกiii = 110 ("MOV (reg, reg);) RR = 00 (ขวาน) และmmm . = 001 (BX) นี้ผลิตหนึ่งไบต์การเรียนการสอน% 11,000,001 หรือ $ C0
คำแนะนำ Y86 ต้องมากกว่าหนึ่งไบต์ ยกตัวอย่างเช่นการเรียนการสอน "การเคลื่อนไหว ([1000], ขวาน);" โหลดลงทะเบียนขวานจากหน่วยความจำสถานที่ $ 1,000 การเข้ารหัสสำหรับ opcode คือ% 11000110 หรือ $ C6 อย่างไรก็ตามการเข้ารหัสสำหรับ "การเคลื่อนไหว ([2000], ขวาน);"opcode การเรียนการสอนเป็นยัง $ C6 เห็นได้ชัดว่าทั้งสองคำแนะนำทำสิ่งที่แตกต่างกันอย่างใดอย่างหนึ่งโหลดลงทะเบียนขวานจากหน่วยความจำสถานที่ $ 1,000 ในขณะที่โหลดอื่น ๆ ที่ลงทะเบียนขวานจากหน่วยความจำสถานที่ $ 2,000 การเข้ารหัสที่อยู่สำหรับ [xxxx] หรือ [xxxx + BX] โหมดที่อยู่หรือการเข้ารหัสคงที่สำหรับโหมดทันทีคุณต้องทำตาม opcode กับที่อยู่ 16 บิตหรือคงที่กับไบต์ LO ทันทีดังต่อไปนี้ opcode ในหน่วยความจำและไบต์ HO หลังจากนั้น ดังนั้นการเข้ารหัสสามไบต์สำหรับ "การเคลื่อนไหว ([1000], ขวาน);" จะเป็น $ C6, $ 00, $ 10 และการเข้ารหัสสามไบต์สำหรับ "การเคลื่อนไหว ([2000], ขวาน);" จะเป็น $ C6, $ 00, $ 20
พิเศษ opcode ช่วยให้ x86 CPU ที่จะขยายชุดของคำสั่งที่มีอยู่ opcode นี้จัดการหลายศูนย์และหนึ่งตัวถูกดำเนินการคำแนะนำดังแสดงในรูปที่ 5.4และรูปที่ 5.5 .
มีสี่หนึ่งตัวถูกดำเนินการเรียนการสอนมี การเข้ารหัสแรก (00) ต่อขยายชุดคำสั่งที่มีชุดคำสั่งศูนย์ตัวถูกดำเนินการ (ดูรูปที่ 5 ) opcode ที่สองยังเป็น opcode การขยายตัวที่ให้ทุก Y86 กระโดดคำแนะนำ (ดูรูปที่ 5.6 ) opcode ที่สามคือการเรียนการสอนไม่ได้ นี้เป็นบิตตรรกะการดำเนินงานไม่ว่าตีความบิตทั้งหมดในการลงทะเบียนปลายทางหรือหน่วยความจำตัวถูกดำเนินการ สี่ opcode เดียวที่ไม่ได้กำหนดเป็นตัวถูกดำเนินการอยู่ในปัจจุบัน ความพยายามที่จะดำเนินการ opcode นี้ใด ๆ ที่จะหยุดการประมวลผลที่มีข้อผิดพลาดการเรียนการสอนที่ผิดกฎหมาย นักออกแบบซีพียูมักจะสงวน opcodes ที่ไม่ได้กำหนดอย่างหนึ่งในการขยายชุดคำสั่งวันที่ในอนาคต (ที่อินเทลได้เมื่อย้ายจากหน่วยประมวลผล 80286 ถึง 80386) นี้
JMP สำเนาคำสั่งค่า 16 บิต (ที่อยู่) ต่อไปนี้ opcode ลงทะเบียนไอพี ดังนั้น CPU จะเรียกคำสั่งถัดจากที่อยู่เป้าหมายนี้ ได้อย่างมีประสิทธิภาพโครงการ "กระโดด" จากจุดที่คําสั่ง JMP เพื่อการเรียนการสอนที่อยู่ที่เป้าหมาย
คําสั่ง JMP เป็นตัวอย่างของการเรียนการสอนกระโดดไม่มีเงื่อนไข มันก็จะถ่ายโอนการควบคุมไปยังที่อยู่ของเป้าหมาย ที่เหลืออีกหกคำแนะนำคำแนะนำกระโดดเงื่อนไข พวกเขาทดสอบสภาพบางอย่างและกระโดดถ้าเงื่อนไขเป็นจริง พวกเขาตกผ่านไปการเรียนการสอนต่อไปถ้าเงื่อนไขเป็นเท็จ คำแนะนำเหล่านี้หก, JA, JAE, JB, JBE, JE และ JNE ให้คุณทดสอบมากขึ้นกว่ามากกว่าหรือเท่ากับน้อยกว่าน้อยกว่าหรือเท่ากับความเสมอภาคและความไม่เท่าเทียม คุณมักจะดำเนินการคำแนะนำเหล่านี้ทันทีหลังจากที่การเรียนการสอน CMP ตั้งแต่มันตั้งน้อยกว่าและความเท่าเทียมกันธงที่ผลการทดสอบคำแนะนำกระโดดเงื่อนไข ทราบว่ามีแปด opcodes กระโดดไปได้มี แต่ x 86 ใช้เพียงเจ็ดของพวกเขา opcode แปดเป็นอีกหนึ่ง opcode ที่ผิดกฎหมาย
กลุ่มสุดท้ายของคำแนะนำคำแนะนำศูนย์ถูกดำเนินการปรากฏในภาพที่ 5.5 . สามคำแนะนำเหล่านี้เป็นคำสั่งที่ผิดกฎหมาย opcodes BRK (พัก) การเรียนการสอนของ CPU หยุดจนกว่าผู้ใช้จะเริ่มต้นใหม่ด้วยตนเองได้ นี้จะเป็นประโยชน์สำหรับการหยุดโปรแกรมระหว่างการดำเนินการในการสังเกตผลIRET (กลับขัดจังหวะ) การเรียนการสอนการควบคุมผลตอบแทนจากบริการประจำขัดจังหวะ เราจะหารือเกี่ยวกับขั้นตอนการให้บริการการขัดจังหวะในภายหลัง โปรแกรมหยุดยุติการทำงานของโปรแกรม การเรียนการสอนแถมอ่านค่าฐานสิบหกจากผู้ใช้และผลตอบแทนค่าในขวานลงทะเบียนนี้ การเรียนการสอน PUT ออกค่าในขวานลงทะเบียน
3.3 คำแนะนำการเข้ารหัสมือ
เก็บไว้ในใจว่าหน่วยประมวลผล Y86 เรียกคำแนะนำเป็นรูปแบบบิตจากหน่วยความจำ มันถอดรหัสและดำเนินการรูปแบบบิตเหล่านั้น หน่วยประมวลผลที่ไม่ดำเนินการคำแนะนำของรูปแบบ "การเคลื่อนไหว (ขวาน BX);" (นั่นคือสตริงของตัวอักษรที่สามารถอ่านได้โดยมนุษย์) แต่จะดำเนินการรูปแบบบิต $ C1 จากหน่วยความจำ คำแนะนำเช่น "MOV (ขวาน BX);" และ "เพิ่ม (5, CX);" เป็นตัวแทนมนุษย์สามารถอ่านคำแนะนำเหล่านี้ที่เราต้องแปลงเป็นรหัสเครื่อง (นั่นคือการเป็นตัวแทนไบนารีการเรียนการสอนว่าเครื่องจริงรัน) ในส่วนนี้เราจะสำรวจวิธีการด้วยตนเองทํางานนี้
ขั้นตอนแรกคือการเลือกคำสั่งเพื่อแปลงเป็นรหัสเครื่อง เราจะเริ่มต้นด้วยการเป็นตัวอย่างที่ง่ายมาก "เพิ่ม (CX, DX);" การเรียนการสอน เมื่อคุณได้เลือกคำสั่งที่คุณมองขึ้นไปการเรียนการสอนในหนึ่งในร่างของส่วนก่อนหน้านี้ คําสั่ง ADD อยู่ในกลุ่มแรก (ดูรูปที่ 5.3 ) และมีคสาขา% 101 ถูกดำเนินการมาเป็น CX ดังนั้นmmmข้อมูลคือ% 010 และถูกดำเนินการปลายทางเป็น DX เพื่อRRข้อมูลคือ% 11 ผสานบิตเหล่านี้ผลิต opcode% 10111010 หรือ $ ปริญญาตรี
ตอนนี้พิจารณา "เพิ่ม (5, ขวาน);" การเรียนการสอน ตั้งแต่การเรียนการสอนนี้มีแหล่งที่มาถูกดำเนินการทันทีฟิลด์ mmm จะ% 111 ตัวถูกดำเนินการลงทะเบียนปลายทางขวาน (00%) ดังนั้น opcode เต็มกลายเป็น 10,100,111 $ หรือ $ A7 อย่างไรก็ตามโปรดทราบว่านี้ไม่ได้ดำเนินการเข้ารหัสของการเรียนการสอน นอกจากนี้เรายังต้องรวมถึง 16 บิตคงที่ $ 0005 เป็นส่วนหนึ่งของการเรียนการสอน เข้ารหัสไบนารีคงต้องปฏิบัติตามทันที opcode ในหน่วยความจำเพื่อให้ลำดับของไบต์ในหน่วยความจำ (จากที่อยู่ที่ต่ำไปยังที่อยู่ที่สูงที่สุด) คือ $ A7, $ 05, $ 00 ทราบว่าไบต์ LO คงดังต่อไปนี้ opcode และไบต์ HO คงดังต่อไปนี้ไบต์ LO ลำดับนี้จะปรากฏขึ้นหลังเพราะไบต์ที่ถูกจัดอยู่ในลำดับที่อยู่ของการเพิ่มหน่วยความจำและไบต์ HO คงที่จะปรากฏในที่อยู่หน่วยความจำสูงสุด
"เพิ่ม ([2FF + BX], CX);" นอกจากนี้ยังมีการเรียนการสอนอย่างต่อเนื่อง 16 บิตที่เกี่ยวข้องกับการเข้ารหัสการเรียนการสอนของ - ส่วนการกำจัดของโหมดการจัดทำดัชนี การเข้ารหัสการเรียนการสอนนี้เราจะใช้ค่าฟิลด์ต่อไปนี้: iii =% 101, RR = 10% และmmm = 101% นี้ผลิต opcode ไบต์% 10110101 หรือ $ B5 การเรียนการสอนที่สมบูรณ์ยังต้องคงที่ $ 2FF เพื่อให้การเรียนการสอนเต็มรูปแบบสามไบต์ลำดับ $ B5, $ FF, $ 02
ตอนนี้พิจารณา "เพิ่ม ([1000], ขวาน);" การเรียนการสอน การเรียนการสอนนี้จะเพิ่มเนื้อหา 16 บิตของหน่วยความจำสถานที่ $ 1,000 และ $ 1,001 มูลค่าในขวานลงทะเบียน อีกครั้งiii = 101% สำหรับการเรียนการสอนเพิ่ม ลงทะเบียนปลายทางคือขวานเพื่อRR = 00% สุดท้ายโหมดเป็นรางเดียวโหมดดังนั้นmmm = 110% นี้เป็น opcode% 10100110 หรือ $ A6 การเรียนการสอนเป็นสามไบต์นานเพราะมันต้องเข้ารหัสราง (ที่อยู่) ของสถานที่ตั้งหน่วยความจำในไบต์ที่สองต่อไปนี้ opcode ดังนั้นที่สมบูรณ์ลำดับสามไบต์เป็น $ A6, $ 00, $ 10
โหมดสุดท้ายที่ต้องพิจารณาคือการลงทะเบียนโหมดทางอ้อม [BX] "เพิ่ม ([BX], BX);" การเรียนการสอนจะใช้ค่าการเข้ารหัสต่อไปนี้: mmm =% 101, RR = 01% (BX) และmmm = 100% ([BX]) ตั้งแต่ค่าใน BX ลงทะเบียนอย่างสมบูรณ์ระบุที่อยู่หน่วยความจำที่มีความจำเป็นในด้านการกำจัดไม่มี ดังนั้นการเรียนการสอนนี้เป็นเพียงหนึ่งไบต์นาน
คุณใช้วิธีการคล้ายการเข้ารหัส SUB, ซีเอ็มพี, และ, และหรือคำแนะนำที่คุณทำคําสั่ง ADD แตกต่างเพียงว่าคุณใช้ค่าที่แตกต่างกันสำหรับiiiสนามใน opcode
การเรียนการสอน MOV เป็นพิเศษเพราะมีสองรูปแบบการเรียนการสอน MOV คุณเข้ารหัสรูปแบบแรก ( iii = 110%) ตรงตามที่คุณทำคําสั่ง ADDสำเนาแบบฟอร์มนี้คงที่หรือข้อมูลจากหน่วยความจำหรือลงทะเบียน ( mmmสนาม) ลงทะเบียนหัวข้อ ( RRเขต)
รูปแบบที่สองของการเรียนการสอน MOV ( iii = 111%) คัดลอกข้อมูลจากแหล่งที่มาลงทะเบียน ( RR ) ไปยังสถานที่หน่วยความจำหัวข้อ (ที่mmmข้อมูลระบุ) ในรูปแบบของการเรียนการสอน MOV นี้ความหมายแหล่งปลายทาง / ของRRและmmmสาขาที่จะกลับเพื่อให้RRเป็นเขตแหล่งที่มาและmmmเป็นเขตปลายทาง ความแตกต่างก็คือว่าmmmข้อมูลอาจมีค่า 100% ([BX]) 101% ([DISP + BX]) และ% 110 ([DISP]) ค่าสถานที่ไม่สามารถเป็น 000% .. 011% (ลงทะเบียน) หรือ% 111 (คงที่) เหล่านี้หลังห้าเข้ารหัสที่ผิดกฎหมาย (ตามคำแนะนำสถานที่ลงทะเบียนจะถูกจัดการโดยการเรียนการสอน MOV อื่น ๆ และการจัดเก็บข้อมูลลงคงไม่ได้ทำให้ความรู้สึกใด ๆ )
หน่วยประมวลผล Y86 สนับสนุนคำสั่งเดียวกับหน่วยความจำเดียว / ลงทะเบียนถูกดำเนินการ - การเรียนการสอนไม่ได้ การเรียนการสอนไม่ได้มีรูปแบบ: "ไม่ได้ (reg);" หรือ "ไม่ได้ (ข่าว);" ข่าวที่เป็นหนึ่งในรูปแบบที่อยู่หน่วยความจำ ([BX], [DISP + BX] หรือ [DISP]) ทราบว่าคุณอาจไม่ได้ระบุค่าคงที่เป็นตัวถูกดำเนินการของการเรียนการสอนไม่ได้
ตั้งแต่การเรียนการสอนไม่ได้มีเพียงตัวถูกดำเนินการเดียวก็เพียงใช้สนาม mmm การเข้ารหัสตัวถูกดำเนินการนี้ RRสนามรวมกับiiiเขตเลือกไม่ได้การเรียนการสอน ( iii = 000% และRR = 10%) เมื่อใดก็ตามที่iiiข้อมูลมีศูนย์นี้จะบอก CPU ที่ถอดรหัสพิเศษเป็นสิ่งจำเป็นสำหรับการเรียนการสอน ในกรณีนี้RRข้อมูลระบุว่าเรามีการเรียนการสอนไม่ได้หรือหนึ่งในคำแนะนำถอดรหัสพิเศษอื่น ๆ
การเข้ารหัสการเรียนการสอนเช่น "ไม่ได้ (ขวาน);" คุณก็จะระบุ% 000 iiiและ 10% สำหรับRRสาขา แล้วคุณจะเข้ารหัสmmmสนามเช่นเดียวกับที่คุณจะเข้ารหัสข้อมูลนี้สำหรับการเรียนการสอนเพิ่ม ตั้งแต่mmm = 000% สำหรับขวาน, การเข้ารหัสของ "ไม่ได้ (ขวาน);" จะ% 00010000 หรือ $ 10
การเรียนการสอนไม่ไม่อนุญาตให้ทันที (คงที่) ตัวถูกดำเนินการจึง opcode% 00,010,111 ($ 17) เป็น opcode ที่ผิดกฎหมาย
Y86 คำแนะนำกระโดดเงื่อนไขยังใช้การเข้ารหัสพิเศษ คำแนะนำเหล่านี้มักจะมีสามไบต์นาน ไบต์แรก (opcode) ระบุซึ่งกระโดดเงื่อนไขการเรียนการสอนที่จะดำเนินการและสองไบต์ต่อไประบุตำแหน่งที่โอน CPU ถ้าเงื่อนไขเป็นไปตาม มีเจ็ดคำแนะนำกระโดด Y86 ที่แตกต่างกันหกกระโดดเงื่อนไขและเป็นหนึ่งกระโดดไม่มีเงื่อนไขเป็น คำแนะนำเหล่านี้ตั้งmmm =% 000 RR = 01% และใช้mmmสนามเพื่อเลือกหนึ่งในการกระโดดไปได้เจ็ด;opcode เป็นไปได้ที่แปดเป็น opcode ที่ผิดกฎหมาย (ดูรูปที่ 5.6 ) การเข้ารหัสคำแนะนำเหล่านี้เป็นที่ค่อนข้างตรงไปข้างหน้า เมื่อคุณได้รับการเรียนการสอนที่คุณต้องการเข้ารหัสคุณได้กำหนด opcode (เนื่องจากมี opcode เดียวสำหรับแต่ละคำสั่ง) ค่า opcode ตกอยู่ในช่วง 08 $ .. $ 0E ($ 0F เป็น opcode ผิดกฎหมาย)
ข้อมูลเดียวที่ต้องใช้ความคิดบางอย่างที่เป็นตัวถูกดำเนินการ 16 บิตที่ตาม opcode สนามนี้ถือเป็นที่อยู่ของการเรียนการสอนเป้าหมายที่ (UN) การถ่ายโอนกระโดดเงื่อนไขถ้าเงื่อนไขเป็นจริง (เช่น, JE ถ่ายโอนการควบคุมไปยังที่อยู่นี้หากมีการเรียนการสอน CMP หน้าที่แล้วพบว่าทั้งสองตัวถูกดำเนินการของตนเท่ากับ) ที่จะต้องเข้ารหัสข้อมูลนี้คุณจะต้องทราบที่อยู่ของไบต์ opcode การเรียนการสอนเป้าหมาย ถ้าคุณได้แปลงแล้วการเรียนการสอนในรูปแบบไบนารีและเก็บไว้ในหน่วยความจำนี้ไม่ได้เป็นปัญหา เพียงแค่ระบุที่อยู่ของคำสั่งที่เป็นตัวถูกดำเนินการของการกระโดดสภาพ ในทางตรงกันข้ามถ้าคุณยังไม่ได้เขียนยังแปลงและวางการเรียนการสอนที่เป็นหน่วยความจำที่รู้ที่อยู่ของมันก็ดูเหมือนจะต้องมีบิตของดวงชะตา โชคดีที่คุณสามารถคิดออกอยู่เป้าหมายโดยการคำนวณความยาวของคำแนะนำทั้งหมดระหว่างการเรียนการสอนกระโดดในปัจจุบันที่คุณกำลังการเข้ารหัสและการสอนเป้าหมาย แต่น่าเสียดายที่นี้เป็นงานที่ยากลำบาก ทางออกที่ดีที่สุดคือการเขียนคำแนะนำทั้งหมดของคุณลงบนกระดาษคำนวณความยาวของพวกเขา (ซึ่งเป็นเรื่องง่ายคำแนะนำทั้งหมดเป็นหนึ่งหรือสามไบต์ยาวขึ้นอยู่กับการปรากฏตัวของตัวถูกดำเนินการ 16 บิต) และกำหนดที่อยู่ที่เหมาะสมกับแต่ละคำสั่ง . เมื่อคุณได้กระทำเช่นนี้ (และสมมติว่าคุณยังไม่ได้ทำผิดพลาดใด ๆ ) คุณจะรู้ว่าที่อยู่เริ่มต้นสำหรับแต่ละคำสั่งและคุณสามารถกรอกข้อมูลในตัวถูกดำเนินการที่อยู่ในเป้าหมายของคุณ (ยกเลิก) คำแนะนำในการกระโดดตามเงื่อนไขที่คุณเข้ารหัสพวกเขา โชคดีที่มีวิธีที่ดีกว่าการทำเช่นนี้ในขณะที่คุณจะเห็นในส่วนถัดไป
กลุ่มสุดท้ายของคำแนะนำคำแนะนำศูนย์ตัวถูกดำเนินการจะง่ายที่สุดในการเข้ารหัส เนื่องจากพวกเขาไม่มีตัวถูกดำเนินการพวกเขาอยู่เสมอหนึ่งไบต์ยาวและการเรียนการสอนที่ไม่ซ้ำกันระบุ opcode สำหรับการเรียนการสอน คำแนะนำเหล่านี้มักจะมีiii =% 000 RR = 00% และmmmระบุ opcode การเรียนการสอนโดยเฉพาะอย่างยิ่ง (ดูรูปที่ 5.5 ) ทราบว่า Y86 CPU ใบที่สามของคำแนะนำเหล่านี้ไม่ได้กำหนด (เพื่อให้เราสามารถใช้ opcodes เหล่านี้สำหรับการขยายตัวในอนาคต)
3.4 การใช้ประกอบการเข้ารหัสคำแนะนำ
แน่นอนโปรแกรมภาษาเครื่องมือการเข้ารหัสที่แสดงในส่วนก่อนหน้านี้จะทำไม่ได้ทั้งหมด แต่โปรแกรมที่เล็กที่สุด แน่นอนว่าคุณไม่ได้มีการทำอะไรเช่นนี้เมื่อเขียนโปรแกรม HLA คอมไพเลอร์ HLA ช่วยให้คุณสามารถสร้างไฟล์ข้อความที่มีรูปแบบที่อ่านได้ของคำแนะนำ คุณอาจสงสัยว่าทำไมเราสามารถเขียนโค้ดดังกล่าว 80x86 แต่ไม่ใช่สำหรับ Y86 คำตอบคือการใช้แอสเซมหรือคอมไพเลอร์สำหรับ Y86 การปฏิบัติงานของผู้ประกอบ / คอมไพเลอร์คือการอ่านไฟล์ข้อความที่มีข้อความที่อ่านได้ของมนุษย์และแปลข้อความเป็นแทน binary เข้ารหัสที่สำหรับโปรแกรมภาษาเครื่องที่เกี่ยวข้อง
ประกอบหรือคอมไพเลอร์จะไม่มีอะไรพิเศษ มันเป็นเพียงโปรแกรมที่รันในระบบคอมพิวเตอร์ของคุณอีก สิ่งเดียวที่พิเศษเกี่ยวกับผู้ประกอบหรือคอมไพเลอร์คือการที่มันแปลโปรแกรมจากรูปแบบหนึ่ง (source code) ไปยังอีก (รหัสเครื่อง) ประกอบ Y86 ทั่วไปเช่นจะอ่านบรรทัดของข้อความแต่ละบรรทัดที่มีการเรียนการสอน Y86 ก็จะแยก9แต่ละคำแล้วเขียนเทียบเท่าไบนารีของแต่ละคำสั่งหน่วยความจำหรือไฟล์สำหรับการดำเนินการในภายหลัง
ประกอบมีสองข้อได้เปรียบใหญ่กว่าการเขียนโปรแกรมในรหัสเครื่อง ครั้งแรกพวกเขาโดยอัตโนมัติแปลสตริงเช่น "ADD (ขวาน BX);" และ "MOV (ขวาน [1000]);" เพื่อรูปแบบไบนารีของพวกเขาที่เกี่ยวข้อง ประการที่สองและอาจจะยิ่งมีความสำคัญมากขึ้นประกอบให้คุณแนบฉลากงบและดูฉลากผู้ที่อยู่ในคำแนะนำกระโดด; นี้หมายความว่าคุณไม่จำเป็นต้องทราบที่อยู่ของเป้าหมายการเรียนการสอนเพื่อที่จะระบุการเรียนการสอนเป็นเป้าหมายของการกระโดดหรือการเรียนการสอนกระโดดเงื่อนไขที่ ผู้ใช้ Windows ที่มีสิทธิ์เข้าถึง Y86 ประกอบง่ายมาก10ที่ช่วยให้คุณระบุถึง 26 ป้ายในโปรแกรม (ใช้สัญลักษณ์ '' .. 'Z') การติดฉลากในงบคุณก็บทการเรียนการสอนที่มีฉลากและลำไส้ใหญ่เช่น
ในการถ่ายโอนการควบคุมไปยังคำสั่งที่มีป้ายชื่อติดอยู่กับมัน, คุณเพียงแค่ระบุชื่อป้ายเป็นตัวถูกดำเนินการเรียนการสอนกระโดดเช่น
ประกอบจะคำนวณที่อยู่ของฉลากและปฏิบัติตามที่อยู่ของคุณเมื่อใดก็ตามที่คุณระบุป้ายชื่อเป็นตัวถูกดำเนินการของการกระโดดหรือการเรียนการสอนกระโดดเงื่อนไข แอสเซมสามารถทำเช่นนี้แม้ว่าจะยังไม่พบป้ายชื่อในแฟ้มแหล่งที่มาของโปรแกรม (เช่นป้ายชื่อที่แนบมากับการเรียนการสอนต่อไปในแฟ้มแหล่งที่มา) ผู้ประกอบส่วนใหญ่ประสบความสำเร็จมายากลนี้โดยการสองผ่านไปแฟ้มแหล่งที่มา ในช่วงที่ผ่านแรกประกอบเป็นตัวกำหนดที่อยู่เริ่มต้นของแต่ละสัญลักษณ์และเก็บข้อมูลในฐานข้อมูลอย่างง่ายที่เรียกว่าตารางสัญลักษณ์ . แอสเซมไม่ได้ปล่อยรหัสเครื่องใด ๆ ในช่วงแรกผ่านนี้ จากนั้นผู้ประกอบทำให้ผ่านที่สองกว่าแฟ้มแหล่งที่มาและที่จริงปล่อยรหัสเครื่อง ในช่วงผ่านที่สองนี้ก็เงยหน้าขึ้นมองอ้างอิงฉลากทั้งหมดในตารางสัญลักษณ์และใช้ข้อมูลจะดึงจากฐานข้อมูลนี้ในการกรอกข้อมูลลงในช่องตัวถูกดำเนินการของคำสั่งที่อ้างถึงสัญลักษณ์บางอย่าง
3.5 ขยายชุด Y86 การเรียนการสอน
Y86 CPU เป็น CPU เล็กน้อยเหมาะสำหรับแสดงให้เห็นถึงวิธีการเข้ารหัสคำแนะนำเครื่อง แต่ชอบใด ๆ CPU ที่ดีการออกแบบ Y86 จะให้ความสามารถในการขยายตัว ดังนั้นถ้าคุณต้องการที่จะปรับปรุงการทำงานโดยการเพิ่มคำสั่งใหม่ความสามารถในการบรรลุเป้าหมายนี้มีอยู่ในชุดคำสั่ง
มีสองวิธีมาตรฐานในการเพิ่มจำนวนของคำแนะนำในชุดคำสั่งของ CPU เป็น กลไกทั้งสองต้องปรากฏตัวของที่ไม่ได้กำหนด (หรือผิดกฎหมาย) opcodes บน CPU ตั้งแต่ Y86 CPU มีหลายเหล่านี้เราสามารถขยายชุดคำสั่ง
วิธีแรกคือการใช้โดยตรง opcodes ไม่ได้กำหนดที่จะกำหนดคำสั่งใหม่ นี้ทำงานได้ดีที่สุดเมื่อมีรูปแบบบิตไม่ได้กำหนดภายในกลุ่ม opcode และการเรียนการสอนใหม่ที่คุณต้องการเพิ่มตกอยู่ในกลุ่มเดียวกันกับที่ ตัวอย่างเช่น 00011mmm% opcode ตกอยู่ในกลุ่มเดียวกับการเรียนการสอนไม่ได้ ถ้าคุณตัดสินใจว่าคุณจำเป็นจริงๆ NEG (ปฏิเสธการใช้ส่วนประกอบทั้งสอง) การเรียนการสอนโดยใช้ opcode นี้โดยเฉพาะเพื่อการนี้ทำให้ความรู้สึกมากเพราะคุณอาจจะคาดหวังว่าการเรียนการสอน NEG ที่จะใช้รูปแบบเดียวกัน (และดังนั้น ถอดรหัส) ในขณะที่การเรียนการสอนไม่ได้
ในทำนองเดียวกันถ้าคุณต้องการที่จะเพิ่มการเรียนการสอนศูนย์ดำเนินการชุดคำสั่งมีสามไม่ได้กำหนดคำแนะนำศูนย์ถูกดำเนินการที่คุณสามารถใช้เพื่อการนี้ คุณเพียงแค่ต้องการที่เหมาะสมหนึ่ง opcodes เหล่านี้และกำหนดคำสั่งของคุณไป
แต่น่าเสียดายที่ Y86 CPU ไม่ได้มีที่ opcodes ที่ผิดกฎหมายจำนวนมากเปิด ตัวอย่างเช่นถ้าคุณต้องการที่จะเพิ่ม SHL, SHR, ROL และคำแนะนำ ROR (เปลี่ยนและหมุนซ้ายและขวา) เป็นคำแนะนำเดียวที่ถูกดำเนินการมีพื้นที่ไม่เพียงพอในการเรียนการสอนเดียว opcodes ถูกดำเนินการเพื่อเพิ่มคำแนะนำเหล่านี้ (มีอยู่ในขณะนี้ เพียงหนึ่ง opcode เปิดคุณสามารถใช้) ในทำนองเดียวกันไม่มี opcodes สองตัวถูกดำเนิน-เปิดดังนั้นหากคุณต้องการที่จะเพิ่มการเรียนการสอนแฮคเกอร์หรืออื่น ๆ การเรียนการสอนสองตัวถูกดำเนินการ, คุณจะออกจากโชค
วิธีการทั่วไปที่จะจัดการกับภาวะที่กลืนไม่เข้าคายไม่ออกนี้ (หนึ่งในนักออกแบบที่มีการจ้างงาน Intel) คือการใช้คำนำหน้าไบต์ opcode นี้รูปแบบการขยายตัว opcode ใช้หนึ่งใน opcodes ไม่ได้กำหนดเป็นคำนำหน้าไบต์ opcode เมื่อใดก็ตามที่ซีพียูพบไบต์คำนำหน้าในหน่วยความจำก็อ่านและถอดรหัสไบต์ต่อไปในหน่วยความจำ opcode ที่เกิดขึ้นจริง แต่ก็ไม่ได้รักษานี้ไบต์ที่สองเป็นมันจะ opcode อื่น ๆ แต่นี้ไบต์ opcode ที่สองใช้รูปแบบการเข้ารหัสที่แตกต่างกันอย่างสมบูรณ์และจึงช่วยให้คุณสามารถระบุคำสั่งใหม่มากเท่าที่คุณสามารถเข้ารหัสในไบต์ (หรือไบต์ถ้าคุณชอบ) ตัวอย่างเช่น opcode $ FF เป็นเรื่องผิดกฎหมาย (มันสอดคล้องกับ "MOV (DX, const);" การเรียนการสอน) เพื่อให้เราสามารถใช้ไบต์เป็นไบต์คำนำหน้าพิเศษที่จะขยายเพิ่มเติมชุดคำสั่ง11 .
4 การเข้ารหัสคำแนะนำ 80x86
Y86 ประมวลผลที่ง่ายต่อการเข้าใจและง่ายต่อการใช้การเข้ารหัสมือสำหรับมันและยานพาหนะที่ดีสำหรับการเรียนรู้วิธีการกำหนด opcodes นอกจากนี้ยังเป็นอุปกรณ์สมมุติอย่างหมดจดมุ่งหวังให้ใช้เป็นเครื่องมือในการเรียนการสอนดังนั้นตอนนี้คุณสามารถลืมทั้งหมดเกี่ยวกับ Y86 ก็ทำหน้าที่จุดประสงค์ของมัน ตอนนี้ก็ถึงเวลาที่จะดูว่ารูปแบบการเรียนการสอนเครื่องที่เกิดขึ้นจริงสำหรับครอบครัว CPU 80x86
พวกเขาไม่ได้เรียก CPU 80x86 คอมเพล็กซ์ชุดคำสั่งคอมพิวเตอร์เพื่ออะไร ถึงแม้ว่าการเรียนการสอนมากขึ้นการเข้ารหัสที่ซับซ้อนไม่อยู่ไม่มีใครจะที่จะท้าทายการยืนยันว่า 80x86 มีการเข้ารหัสการเรียนการสอนที่มีความซับซ้อน การเรียนการสอน 80x86 ทั่วไปใช้รูปแบบที่แสดงในรูปที่ 5.14 . แม้ว่าแผนภาพนี้ดูเหมือนว่าจะหมายความว่าคำแนะนำจะขึ้นอยู่กับ 16 ไบต์นานในความเป็นจริง 80x86 จะไม่อนุญาตให้คำแนะนำมากกว่า 15 ไบต์ในระยะเวลา
ไบต์คำนำหน้าไม่ได้ "คำนำหน้าการขยายตัว opcode" ที่ส่วนก่อนหน้านี้ในบทนี้กล่าวถึง แต่เหล่านี้เป็นไบต์พิเศษในการปรับเปลี่ยนพฤติกรรมของคำสั่งที่มีอยู่ (แทนที่จะกำหนดคำสั่งใหม่) เราจะมาดูที่คู่ของไบต์คำนำหน้าเหล่านี้ในนิด ๆ หน่อย ๆ คนอื่น ๆ ที่เราจะออกจากการอภิปรายในบทต่อ 80x86 แน่นอนสนับสนุนมากกว่าสี่ค่าคำนำหน้า แต่การเรียนการสอนอาจมีได้สูงสุดสี่คำนำหน้าไบต์ที่ติดอยู่กับมัน ยังทราบว่าพฤติกรรมของไบต์คำนำหน้ามากเป็นพิเศษร่วมกันและผลลัพธ์ที่ไม่ได้กำหนดถ้าคุณใส่คู่ของไบต์คำนำหน้าพิเศษร่วมกันในหน้าของการเรียนการสอน
80x86 สนับสนุนสองขนาด opcode พื้นฐาน opcode มาตรฐานหนึ่งไบต์และ opcode สองไบต์ซึ่งประกอบด้วย $ 0F ขยาย opcode คำนำหน้าไบต์และไบต์ที่สองระบุการเรียนการสอนที่เกิดขึ้นจริง วิธีหนึ่งที่จะดูไบ opcode เหล่านี้เป็นส่วนขยายแปดบิตของคข้อมูลในการเข้ารหัส Y86 นี้ให้ได้ถึง 512 การเรียนการสอนที่แตกต่างกัน (แม้ว่า 80x86 ยังไม่ใช้พวกเขาทั้งหมด) ในความเป็นจริงการเรียนการสอนที่แตกต่างกันใช้บิตบางอย่างใน opcode นี้สำหรับวัตถุประสงค์เด็ดที่ไม่ได้การเรียนการสอนชั้น ตัวอย่างเช่นพิจารณา opcode คําสั่ง ADD มันต้องใช้รูปแบบที่แสดงในรูปที่ 5.15 .
หมายเหตุจำนวนบิตที่ศูนย์ระบุขนาดของตัวถูกดำเนินการเรียนการสอนเพิ่มการดำเนินงานตาม ถ้าฟิลด์นี้มีศูนย์แล้วตัวถูกดำเนินการเป็นแปดบิตลงทะเบียนและสถานที่หน่วยความจำ ถ้าบิตนี้มีหนึ่งตัวถูกดำเนินการแล้วมีทั้ง 16 บิตหรือ 32 บิต ภายใต้ระบบปฏิบัติการแบบ 32 บิตเริ่มต้นคือตัวถูกดำเนินการ 32 บิตถ้าฟิลด์นี้มีหนึ่ง เพื่อระบุตัวถูกดำเนินการ 16 บิต (ภายใต้ Windows หรือ Linux) คุณต้องแทรกพิเศษ "ถูกดำเนินการขนาดคำนำหน้าไบต์" ในหน้าของการเรียนการสอน
จำนวนบิตหนึ่งระบุทิศทางของการถ่ายโอน ถ้าบิตนี้เป็นศูนย์แล้วถูกดำเนินการปลายทางเป็นที่ตั้งของหน่วยความจำ (เช่น "เพิ่ม (อัล [ebx]);" ถ้าบิตนี้เป็นหนึ่งในนั้นถูกดำเนินการปลายทางคือการลงทะเบียน (เช่น "เพิ่ม ([ebx] อัล); "เร็ว ๆ นี้จะเห็นว่าบิตทิศทางนี้สร้างปัญหาที่ส่งผลให้การเรียนการสอนหนึ่งมีสอง opcodes เป็นไปได้ที่แตกต่างกัน
4.1 การเข้ารหัสตัวถูกดำเนินการเรียนการสอน
"MOD-reg-R / เมตร" ไบต์ (ในรูปที่ 14 ) ระบุโหมดพื้นฐาน ไบต์นี้มีฟิลด์ต่อไปนี้
ข้อมูลราคาพิเศษระบุ 80x86 ลงทะเบียน ทั้งนี้ขึ้นอยู่กับการเรียนการสอนนี้สามารถเป็นได้ทั้งแหล่งที่มาหรือถูกดำเนินการปลายทาง คำแนะนำหลายคนมี "D" (ทิศทาง) ในสนาม opcode ของพวกเขาที่จะเลือกได้ว่าจะถูกดำเนินการนี้เป็นแหล่งที่มา (d = 0) หรือปลายทาง (d = 1) ตัวถูกดำเนินการข้อมูลนี้จะถูกเข้ารหัสโดยใช้รูปแบบบิตที่พบในตารางต่อไปนี้
สำหรับบาง (ตัวถูกดำเนินการเดี่ยว) คำแนะนำด้านราคาอาจจะมีการขยาย opcode มากกว่าค่าลงทะเบียน (ข้อมูล R / M จะระบุตัวถูกดำเนินการในกรณีนี้)
MOD และ R / M สาขารวมกันเพื่อระบุตัวถูกดำเนินการอื่น ๆ ในการเรียนการสอนสองตัวถูกดำเนินการ (หรือถูกดำเนินการเฉพาะในการเรียนการสอนเดี่ยวถูกดำเนินการเหมือนหรือไม่ NEG) โปรดจำไว้ว่าบิต "D" ใน opcode กำหนดตัวถูกดำเนินการเป็นแหล่งที่มาและที่เป็นสถานที่ MOD และ R / M สาขาที่ร่วมกันระบุโหมดที่อยู่ดังต่อไปนี้
MOD
|
R / M
|
โหมดที่อยู่
|
---|---|---|
00%
|
000%
|
[EAX]
|
01%
|
000%
|
[EAX + DISP 8 ]
|
10%
|
000%
|
[EAX + DISP 32 ]
|
11%
|
000%
|
ลงทะเบียน (อัล / ขวาน / EAX) 1
|
00%
|
001%
|
[ECX]
|
01%
|
001%
|
[ECX + DISP 8 ]
|
10%
|
001%
|
[ECX + DISP 32 ]
|
11%
|
001%
|
ลงทะเบียน (CL / CX / ECX)
|
00%
|
010%
|
[EDX]
|
01%
|
010%
|
[EDX + DISP 8 ]
|
10%
|
010%
|
[EDX + DISP 32 ]
|
11%
|
010%
|
ลงทะเบียน (DL / DX / EDX)
|
00%
|
011%
|
[ebx]
|
01%
|
011%
|
[ebx + DISP 8 ]
|
10%
|
011%
|
[ebx + DISP 32 ]
|
11%
|
011%
|
ลงทะเบียน (BL / BX / ebx)
|
00%
|
100%
|
โหมด SIB
|
01%
|
100%
|
SIB + DISP 8โหมด
|
10%
|
100%
|
SIB + DISP 32โหมด
|
11%
|
100%
|
ลงทะเบียน (อา / SP / ESP)
|
00%
|
101%
|
แทนที่โหมดเท่านั้น
(ราง 32 บิต)
|
01%
|
101%
|
[EBP + DISP 8 ]
|
10%
|
101%
|
[EBP + DISP 32 ]
|
11%
|
101%
|
ลงทะเบียน (CH / bp / EBP)
|
00%
|
110%
|
[ESI]
|
01%
|
110%
|
[ESI + DISP 8 ]
|
10%
|
110%
|
[ESI + DISP 32 ]
|
11%
|
110%
|
ลงทะเบียน (DH / si / ESI)
|
00%
|
111%
|
[EDI]
|
01%
|
111%
|
[EDI + DISP 8 ]
|
10%
|
111%
|
[EDI + DISP 32 ]
|
11%
|
111%
|
ลงทะเบียน (BH / DI / EDI)
|
1บิตขนาดใน opcode ระบุขนาดลงทะเบียนแปดหรือ 32 บิต ในการเลือกลงทะเบียน 16 บิตต้องใช้คำนำหน้าไบต์
|
มีสองสิ่งที่น่าสนใจที่จะต้องทราบเกี่ยวกับตารางนี้ แรกของทั้งหมดทราบว่ามีสองรูปแบบของ [reg + DISP] โหมดที่อยู่: รูปแบบหนึ่งที่มีการเคลื่อนที่แปดบิตและรูปแบบหนึ่งที่มีการเคลื่อนที่ 32 บิต ที่อยู่ในโหมดที่มีการเคลื่อนที่อยู่ในช่วง -128 .. 127 + ต้องการเพียงรางไบต์เดี่ยวหลังจาก opcode;ด้วยเหตุนี้คำแนะนำเหล่านี้จะสั้นลง (และบางครั้งได้เร็วกว่า) คำแนะนำการกำจัดที่มีค่าอยู่นอกช่วงนี้ แต่กลับกลายเป็นว่าชดเชยจำนวนมากในช่วงนี้เพื่อให้ผู้ประกอบ / คอมไพเลอร์สามารถสร้างคำแนะนำสั้นสำหรับใหญ่ร้อยละของคำแนะนำ
สิ่งที่สองที่ควรทราบก็คือว่าไม่มี [EBP] โหมด ถ้าคุณดูในตารางข้างต้นที่โหมดนี้เป็นเหตุผลที่คุณจะพบว่ามันเป็นช่องที่ถูกครอบครองโดยการกำจัด 32 บิตเท่านั้นโหมด รูปแบบการเข้ารหัสขั้นพื้นฐานสำหรับโหมดการอยู่ไม่ได้อนุญาตให้มีการเคลื่อนที่เฉพาะโหมดดังนั้น Intel "ขโมย" การเข้ารหัสสำหรับ [EBP] และใช้สำหรับการกำจัดโหมดเท่านั้น โชคดีที่สิ่งที่คุณสามารถทำอะไรกับ [EBP] ที่อยู่ในโหมดที่คุณสามารถทำได้ด้วย [EBP + DISP 8 ] โหมดโดยการตั้งค่าการเคลื่อนที่แปดบิตให้เป็นศูนย์ ความจริงการเรียนการสอนที่มีนิด ๆ หน่อย ๆ อีกต่อไป แต่ความสามารถยังคงมี Intel (อย่างชาญฉลาด) เลือกที่จะเปลี่ยนโหมดนี้เพราะพวกเขาคาดว่าการเขียนโปรแกรมจะใช้โหมดนี้มักจะน้อยกว่าที่อื่น ๆ ลงทะเบียนโหมดที่อยู่ทางอ้อม (ด้วยเหตุผลที่คุณจะค้นพบในบทต่อมา)
สิ่งที่คุณจะสังเกตเห็นหายไปจากโต๊ะนี้ก็จะอยู่ในรูปแบบของรูปแบบ [ebx + EDX * 4] ที่เรียกว่าปรับโหมดการจัดทำดัชนีที่อยู่ นอกจากนี้คุณยังจะสังเกตเห็นว่าตารางจะหายไปอยู่ในรูปแบบของรูปแบบ [ESP], [ESP + disp 8 ] และ [ESP + disp 32 ] ในช่องที่คุณมักจะคาดหวังกับโหมดเหล่านี้คุณจะได้พบกับ SIB (ไบต์ดัชนีปรับ) โหมดการ ถ้าค่าเหล่านี้ปรากฏอยู่ในเขต MOD และ R / M แล้วโหมดคือโหมดการจัดทำดัชนีปรับด้วยไบต์ที่สอง (ไบต์ SIB) ดังต่อไปนี้ไบต์ / M MOD-รุ่น-R ที่ระบุการลงทะเบียนการใช้งาน (หมายเหตุว่า ฟิลด์ MOD ยังระบุขนาดการกำจัดของศูนย์หนึ่งหรือสี่ bytes) แผนภาพต่อไปนี้แสดงให้เห็นถึงรูปแบบของไบต์ SIB นี้และตารางต่อไปนี้อธิบายค่าสำหรับแต่ละสาขา
ขนาดมูลค่า
|
ดัชนี * มูลค่ามาตราส่วน
|
---|---|
00%
|
ดัชนี * 1
|
01%
|
ดัชนี * 2
|
10%
|
ดัชนี * 4
|
11%
|
ดัชนี * 8
|
ดัชนี
|
สมัครสมาชิก
|
---|---|
000%
|
EAX
|
001%
|
ECX
|
010%
|
EDX
|
011%
|
EBX
|
100%
|
ที่ผิดกฎหมาย
|
101%
|
EBP
|
110%
|
ESI
|
111%
|
EDI
|
ฐาน
|
สมัครสมาชิก
|
---|---|
000%
|
EAX
|
001%
|
ECX
|
010%
|
EDX
|
011%
|
EBX
|
100%
|
ESP
|
101%
|
แทนที่เท่านั้นถ้า MOD = 00%, EBP ถ้า MOD = 01% หรือ 10%
|
110%
|
ESI
|
111%
|
EDI
|
MOD-รุ่น-R / M และ SIB ไบต์มีความซับซ้อนและยุ่งยากคำถามเกี่ยวกับว่าไม่มี เหตุผลเหล่านี้ไบต์โหมดที่ซับซ้อนเพื่อเป็นเพราะอินเทลมาใช้ใหม่ 16 บิตที่อยู่วงจรของพวกเขาในโหมด 32 บิตที่มากกว่าเพียงแค่ละทิ้งรูปแบบ 16 บิตในโหมด 32 บิต มีเหตุผลที่ดีสำหรับฮาร์ดแวร์นี้ แต่ผลสุดท้ายเป็นโครงการที่ซับซ้อนสำหรับการระบุรูปแบบที่อยู่
ส่วนหนึ่งของเหตุผลที่โครงการที่อยู่เป็นที่ซับซ้อนเพื่อเป็นเพราะกรณีพิเศษสำหรับโหมด SIB และการกำจัดอย่างเดียว คุณจะทราบว่าการเข้ารหัสที่ใช้งานง่ายของ / M ไบต์ MOD-รุ่น-R ไม่อนุญาตให้มีโหมดการกำจัดอย่างเดียว อินเทลเพิ่ม kludge อย่างรวดเร็วเพื่อโครงการที่อยู่แทนที่ [EBP] โหมดที่มีโหมดการกำจัดอย่างเดียว โปรแกรมเมอร์ที่จริงต้องการใช้ [EBP] โหมดต้องใช้ [EBP + 0] แทน ความหมายโหมดนี้ก่อให้เกิดผลเหมือนกัน แต่การเรียนการสอนเป็นหนึ่งไบต์นานเนื่องจากต้องการไบต์รางที่มีศูนย์
นอกจากนี้คุณยังจะได้ทราบว่าหากข้อมูลราคาพิเศษของไบต์ MOD-รุ่น-R / M มี 100% และ MOD ไม่ได้มี 11% แล้วโหมดคือ "SIB โหมด" มากกว่าที่คาดว่าจะ [ESP], [ESP + DISP 8 ] หรือ [ESP + disp 32 ] โหมด โหมด SIB จะใช้เมื่อใช้โหมดหนึ่งในการลงทะเบียนการจัดทำดัชนีปรับคือหนึ่งในโหมดที่อยู่ดังต่อไปนี้
ในแต่ละโหมดการแก้ไขเหล่านี้ข้อมูล MOD ของไบต์ MOD-รุ่น-R / M ระบุขนาดของราง (ศูนย์หนึ่งหรือสี่ bytes) นี้จะแสดงผ่านทางโหมด "SIB โหมด", "SIB + DISP 8โหมด "และ" SIB + DISP 32โหมด ". ฐานและดัชนีด้านการไบต์ SIB เลือกฐานและดัชนีลงทะเบียนตามลำดับ ทราบว่าโหมดนี้ไม่อนุญาตให้ใช้ในการลงทะเบียน ESP เป็นดัชนีลงทะเบียน สันนิษฐานว่าอินเทลซ้ายโหมดนี้โดยเฉพาะไม่ได้กำหนดที่จะให้ความสามารถในการขยายรูปแบบที่อยู่ในรุ่นอนาคตของ CPU (แม้ว่าการขยายลำดับโหมดสามไบต์ดูเหมือนว่าบิตมาก)
เช่นการเข้ารหัส MOD-รุ่น-R / M, รูปแบบ SIB นิยามใหม่ของโหมด [EBP + ระดับ * ดัชนี] เป็นโหมดการกำจัดบวกดัชนี อีกครั้งถ้าคุณจริงๆต้องโหมดนี้คุณจะต้องใช้ค่าไบต์เดี่ยวรางที่มีศูนย์เพื่อให้บรรลุผลเดียวกัน
4.2 การเข้ารหัสคำสั่ง ADD: ตัวอย่างบางส่วน
ที่จะคิดออกวิธีการเข้ารหัสการสอนโดยใช้รูปแบบที่ซับซ้อนนี้ตัวอย่างบางรับประกัน จึงขอใช้เวลามากในวิธีการเข้ารหัสการเรียนการสอน 80x86 ADD ใช้กับโหมดต่างๆ opcode เพิ่มเป็น $ 00 $ 01, $ 02 หรือ $ 03 ขึ้นอยู่กับทิศทางและขนาดของบิตใน opcode (ดูรูปที่ 5.15 ) ตัวเลขต่อไปนี้แต่ละอธิบายวิธีการเข้ารหัสรูปแบบต่างๆของการเรียนการสอนเพิ่มโดยใช้โหมดที่อยู่ที่แตกต่างกัน
มีผลข้างเคียงที่น่าสนใจของการดำเนินการของบิตทิศทางและองค์กร MOD-รุ่น-R / M คือคำแนะนำบางอย่างมีสอง opcodes แตกต่างกัน (และทั้งสองตามกฎหมาย) ตัวอย่างเช่นเราสามารถเข้ารหัส "เพิ่ม (อัล, CL);" การเรียนการสอนจากรูปที่ 5.18เป็น $ 02, $ C8 โดยการกลับ AL CL และลงทะเบียนในราคาพิเศษและ R / สาขา M แล้วตั้งค่างบิตใน opcode (บิต # 1) ปัญหานี้นำไปใช้กับคำแนะนำที่มีสองตัวถูกดำเนินการลงทะเบียน
4.3 การเข้ารหัสตัวถูกดำเนินการทันที
คุณอาจสังเกตเห็นว่า MOD-REG-R / M และ SIB ไบต์ไม่ได้มีการรวมบิตใด ๆ ที่คุณสามารถใช้เพื่อระบุตัวถูกดำเนินการทันที 80x86 ใช้ opcode ที่แตกต่างกันอย่างสิ้นเชิงในการระบุตัวถูกดำเนินการทันที ภาพที่ 5.26แสดงให้เห็นถึงการเข้ารหัสขั้นพื้นฐานสำหรับการเพิ่มการเรียนการสอนได้ทันที
มีสามความแตกต่างที่สำคัญระหว่างการเข้ารหัสของการเพิ่มทันทีและคําสั่ง ADD มาตรฐาน ครั้งแรกและที่สำคัญที่สุด opcode มีหนึ่งในตำแหน่งบิต HOนี้จะบอก CPU ที่การเรียนการสอนที่มีอย่างต่อเนื่องได้ทันที การเปลี่ยนแปลงนี้แต่ละคน แต่ไม่ได้บอก CPU ที่จะต้องดำเนินการเรียนการสอนเพิ่มในขณะที่คุณจะเห็นชั่วขณะ
ความแตกต่างที่สองคือว่าไม่มีทิศทางบิตใน opcode นี้ทำให้รู้สึกเพราะคุณไม่สามารถระบุตัวถูกดำเนินการอย่างต่อเนื่องเป็นหัวข้อ ดังนั้นตัวถูกดำเนินการปลายทางอยู่เสมอสถานที่ MOD และ R / M บิตระบุในฟิลด์ MOD-REG-R / M
ในสถานที่ของบิตทิศทาง opcode มีนามสกุลสัญญาณ ( x ) บิต สำหรับตัวถูกดำเนินการแปดบิตซีพียูละเว้นบิตนี้ สำหรับ 16 บิตและ 32 บิตถูกดำเนินการบิตนี้ระบุขนาดของค่าคงที่ดังต่อไปนี้การเรียนการสอนเพิ่ม ถ้าบิตนี้มีศูนย์แล้วคงเป็นขนาดเดียวกับตัวถูกดำเนินการ (เช่น 16 หรือ 32 บิต) ถ้าบิตนี้มีหนึ่งในนั้นคงเป็นค่าแปดบิตลงนามและเข้าสู่ระบบ CPU ขยายค่านี้เป็นขนาดที่เหมาะสมก่อนที่จะเพิ่มตัวถูกดำเนินการ นี้เคล็ดลับเล็ก ๆ มักจะทำให้โปรแกรมค่อนข้างสั้นเพราะโดยทั่วไปคงที่จะเพิ่มมูลค่าขนาดเล็กถึง 16 หรือ 32 บิตตัวถูกดำเนินการ
ความแตกต่างระหว่างสามเพิ่มทันทีและคําสั่ง ADD มาตรฐานคือความหมายของข้อมูลราคาพิเศษในไบต์ MOD-รุ่น-R / M ตั้งแต่การเรียนการสอนที่มีความหมายที่ถูกดำเนินการมาเป็นอย่างต่อเนื่องและเขต MOD-R / M ระบุตัวถูกดำเนินการปลายทางการเรียนการสอนไม่จำเป็นต้องใช้ข้อมูลราคาพิเศษเพื่อระบุตัวถูกดำเนินการ แต่ 80x86 CPU ใช้เหล่านี้สามบิตเป็นส่วนขยาย opcode สำหรับการเพิ่มการเรียนการสอนได้ทันทีทั้งสามชิ้นจะต้องมีศูนย์ (รูปแบบบิตอื่น ๆ ที่จะสอดคล้องกับการเรียนการสอนที่แตกต่างกัน)
ทราบว่าเมื่อมีการเพิ่มอย่างต่อเนื่องไปยังตำแหน่งหน่วยความจำ, การเคลื่อนที่ (ถ้ามี) ที่เกี่ยวข้องกับสถานที่ตั้งหน่วยความจำทันทีก่อนทันที (คงที่) ข้อมูลในลำดับ opcode
4.4 การเข้ารหัสแปดสิบหกและสามสิบสองบิตตัวถูกดำเนินการ
เมื่ออินเทลออกแบบ 8086 พวกเขาใช้หนึ่งบิต ( S ) เพื่อเลือกระหว่างแปดและสิบหกจำนวนเต็มบิตขนาดตัวถูกดำเนินการใน opcode ต่อมาเมื่อพวกเขาขยายสถาปัตยกรรม 80x86 ที่ 32 บิตด้วยการแนะนำของ 80386 ที่พวกเขามีปัญหากับบิตเดียวที่พวกเขาจะสามารถเข้ารหัสสองขนาด แต่พวกเขาจำเป็นต้องใช้การเข้ารหัสสาม (8, 16, และ 32 บิต) เพื่อแก้ปัญหานี้พวกเขาใช้คำนำหน้าตัวถูกดำเนินการขนาดไบต์ .
Intel ศึกษาการเรียนการสอนของพวกเขาตั้งค่าและมาสรุปว่าในสภาพแวดล้อมที่ 32 บิตโปรแกรมมีแนวโน้มที่จะใช้แปดบิตและ 32 บิตถูกดำเนินการไกลบ่อยกว่าตัวถูกดำเนินการ 16 บิต ดังนั้น Intel ตัดสินใจที่จะให้บิตขนาด ( S ) ใน opcode เลือกระหว่างแปดสามสิบสองตัวถูกดำเนินการบิตในขณะที่ส่วนก่อนหน้าอธิบาย แม้ว่าโปรแกรม 32 บิตที่ทันสมัยไม่ใช้ตัวถูกดำเนินการ 16 บิตที่มักจะพวกเขาไม่ต้องการพวกเขาตอนนี้แล้ว เพื่อให้สามารถถูกดำเนินการ 16 บิตของอินเทลช่วยให้คุณคำนำหน้าคำสั่ง 32 บิตกับไบต์คำนำหน้าขนาดตัวถูกดำเนินการค่าซึ่งเป็น $ 66 ไบต์คำนำหน้านี้จะบอก CPU ที่ถูกดำเนินการกับข้อมูลที่ 16 บิตมากกว่าข้อมูล 32 บิต
คุณไม่ได้อย่างชัดเจนใส่คำนำหน้าไบต์ขนาดตัวถูกดำเนินการในด้านหน้าของคำแนะนำของคุณ 16 บิต; แอสเซมจะดูแลเรื่องนี้ให้คุณโดยอัตโนมัติเมื่อคุณใช้ตัวถูกดำเนินการ 16 บิตในการเรียนการสอน แต่ทำเก็บไว้ในใจว่าเมื่อใดก็ตามที่คุณใช้ตัวถูกดำเนินการ 16 บิตในโปรแกรม 32 บิต, การเรียนการสอนมีความยาว (โดยหนึ่งไบต์) เพราะค่าคำนำหน้า ดังนั้นคุณควรจะระมัดระวังเกี่ยวกับการใช้คำแนะนำ 16 บิตถ้าขนาด (และบอช, ความเร็ว) มีความสำคัญเพราะคำแนะนำเหล่านี้จะมีความยาว (และอาจจะช้าลงเพราะผลของพวกเขาในแคช)
4.5 การเข้ารหัสอื่นสำหรับคำแนะนำ
ดังที่ระบุไว้ก่อนหน้านี้ในบทนี้ซึ่งเป็นหนึ่งในเป้าหมายในการออกแบบของอินเทลหลักสำหรับ 80x86 คือการสร้างชุดคำสั่งเพื่อให้การเขียนโปรแกรมเพื่อเขียนโปรแกรมที่สั้นมากเพื่อประหยัดค่า (ในเวลานั้น) หน่วยความจำ วิธีการหนึ่งที่พวกเขาทำอย่างนี้คือการสร้างการเข้ารหัสอื่นของบางคำแนะนำที่ใช้กันมาก คำแนะนำเหล่านี้เป็นทางเลือกที่สั้นกว่าคู่มาตรฐานและ Intel หวังว่าการเขียนโปรแกรมที่จะทำให้การใช้งานที่กว้างขวางของคำแนะนำเหล่านี้ดังนั้นการสร้างโปรแกรมที่สั้นกว่า
ตัวอย่างที่ดีของคำแนะนำเหล่านี้เป็นทางเลือก "เพิ่ม (คงที่สะสม);" คำแนะนำ (สะสมเป็น AL, ขวานหรือ EAX) 80x86 ให้ opcode เดียวไบต์สำหรับ "เพิ่ม (คงที่อัล);" และ "เพิ่ม (คงที่ EAX);" (opcodes เป็น $ 04 และ $ 05 ตามลำดับ) กับ opcode หนึ่งไบต์และไม่มีไบต์ MOD-REG-R / M, คำแนะนำเหล่านี้เป็นหนึ่งในไบต์สั้นกว่ามาตรฐานของพวกเขาใส่คู่ทันที ทราบว่า "เพิ่ม (คงขวาน);" การเรียนการสอนต้องมีคำนำหน้าขนาดตัวถูกดำเนินการ (เช่นเดียวกับมาตรฐาน "เพิ่ม (คงขวาน);" การเรียนการสอนจึงเป็น opcode มีประสิทธิภาพสองไบต์ถ้าคุณนับไบต์คำนำหน้านี้ แต่ยังคงเป็นหนึ่งไบต์สั้นกว่าการเพิ่มมาตรฐานสอดคล้อง. ทันที
คุณไม่ได้มีการระบุอะไรเป็นพิเศษที่จะใช้คำแนะนำเหล่านี้ ๆ ประกอบที่ดีโดยอัตโนมัติจะเลือกการเรียนการสอนที่สั้นที่สุดที่จะสามารถใช้เมื่อแปลรหัสต้นฉบับของคุณเป็นรหัสเครื่อง อย่างไรก็ตามคุณควรทราบว่าอินเทลจะให้การเข้ารหัสสำรองสำหรับการลงทะเบียนสะสม ดังนั้นถ้าคุณมีทางเลือกของหลายคำแนะนำในการใช้และการลงทะเบียนสะสมอยู่ในตัวเลือกเหล่านี้ AL / ขวาน / EAX registers มักจะให้ทางออกที่ดีที่สุด นี่คือเหตุผลว่าทำไมคุณควรใช้เวลาในการสแกนผ่านการเข้ารหัสของคำสั่ง 80x86 บางเวลา โดยทำความคุ้นเคยกับการเข้ารหัสการเรียนการสอนที่คุณจะได้รู้ว่าที่มีคำแนะนำพิเศษ (และดังนั้นสั้น) การเข้ารหัส
5 วางมันทั้งหมดเข้าด้วยกัน
การออกแบบชุดคำสั่งที่สามารถยืนการทดสอบของเวลาเป็นความท้าทายทางปัญญาที่แท้จริง วิศวกรจะต้องสมดุลหลายประนีประนอมเมื่อเลือกชุดคำสั่งและกำหนด opcodes สำหรับคำแนะนำ ชุดคำสั่ง 80x86 Intel เป็นตัวอย่างที่คลาสสิกของ kludge ที่ผู้คนกำลังใช้เพื่อวัตถุประสงค์ในการออกแบบเดิมไม่เคยตั้งใจ อย่างไรก็ตาม 80x86 ยังเป็นบทพิสูจน์ที่ยิ่งใหญ่ให้กับความฉลาดของวิศวกรของอินเทลที่ถูกต้องเผชิญกับงานที่ยากของการขยาย CPU ในรูปแบบมันก็ไม่เคยตั้งใจ ผลลัพธ์ที่ได้ แต่การทำงานมีความซับซ้อนมาก เห็นได้ชัดว่าหนึ่งในการออกแบบซีพียู (ตั้งแต่เริ่มต้น) วันนี้จะเลือกการเข้ารหัสที่วิศวกรของอินเทลกำลังใช้ อย่างไรก็ตาม 80x86 CPU ไม่แสดงให้เห็นว่าการวางแผนอย่างระมัดระวัง (หรือโชคธรรมดาเพียง) จะให้นักออกแบบสามารถในการขยาย CPU ไกลเกินกว่าการออกแบบที่เป็นต้นฉบับ
ประวัติศาสตร์ความเป็นจริงสิ่งสำคัญที่เราได้เรียนรู้จากครอบครัว 80x86 เป็นว่ามันเป็นวางแผนไม่ดีมากที่จะคิดว่า CPU ของคุณจะมีอายุเพียงช่วงเวลาสั้น ๆ และว่าผู้ใช้จะเปลี่ยนชิปและซอฟแวร์ของพวกเขาเมื่อสิ่งที่ดีกว่ามาพร้อม นักพัฒนาซอฟต์แวร์มักจะไม่ได้มีปัญหาปรับตัวเข้ากับสถาปัตยกรรมใหม่เมื่อพวกเขาเขียนซอฟต์แวร์ใหม่ (สมมติว่าแรงจูงใจทางการเงินที่จะทำเช่นนั้น) แต่พวกเขามีความทนทานมากที่จะย้ายซอฟต์แวร์ที่มีอยู่จากแพลตฟอร์มหนึ่งไปยังอีก นี่คือเหตุผลหลัก 80x86 แพลตฟอร์มอินเทลยังคงได้รับความนิยมมาจนถึงทุกวันนี้
คำแนะนำการเลือกที่คุณต้องการที่จะรวมเข้าไปในการออกแบบเบื้องต้นของซีพียูใหม่เป็นงานที่ยาก คุณต้องรักษาความสมดุลของความปรารถนาที่จะให้มีจำนวนมากคำแนะนำที่เป็นประโยชน์กับงบประมาณของซิลิกอนและคุณยังจะต้องระมัดระวังไม่ให้มีจำนวนมากของคำสั่งที่ไม่เกี่ยวข้องว่าโปรแกรมเมอร์ลมขึ้นไม่สนใจสำหรับหนึ่งหรือเหตุผลอื่น โปรดจำไว้ว่ารุ่นอนาคตทั้งหมดของซีพียูอาจจะมีคำแนะนำให้การสนับสนุนทั้งหมดที่อยู่ในชุดคำสั่งเริ่มต้นดังนั้นจึงดีกว่าที่จะผิดพลาดในด้านของการจัดส่งคำแนะนำน้อยเกินไปมากกว่ามากเกินไป จำไว้ว่าคุณสามารถขยายชุดการเรียนการสอนในรุ่นที่ใหม่กว่าของชิป
จับมือกับการเลือกชุดคำสั่งที่เหมาะสมจะช่วยให้การขยายตัวในอนาคตได้ง่ายของชิป คุณต้องออกบางส่วนที่ไม่ได้กำหนด opcodes ใช้ได้เพื่อให้คุณสามารถขยายการเรียนการสอนที่กำหนดในภายหลัง อย่างไรก็ตามคุณต้องรักษาความสมดุลของจำนวน opcodes ไม่ได้กำหนดที่มีจำนวนของคำแนะนำเริ่มต้นและขนาดของ opcodes ของคุณ สำหรับเหตุผลที่มีประสิทธิภาพที่เราต้องการ opcodes ที่จะสั้นที่สุดเท่าที่เป็นไปได้ นอกจากนี้เรายังต้องมีชุดที่เหมาะสมของคำสั่งในชุดคำสั่งเริ่มต้น ชุดคำสั่งที่เหมาะสมอาจใช้มากที่สุดของรูปแบบบิตทางกฎหมายใน opcode ขนาดเล็ก ดังนั้นการตัดสินใจที่ยากที่จะต้องมีการทำ. ลดจำนวนของคำแนะนำในชุดคำสั่งเริ่มต้นเพิ่มขนาดของ opcode หรือพึ่งพาไบต์คำนำหน้า opcode (ซึ่งทำให้คำแนะนำใหม่ (คุณเพิ่มภายหลัง) อีกต่อไปไม่มีเป็น คำตอบที่ง่ายที่จะแก้ไขปัญหานี้เป็นนักออกแบบซีพียูที่คุณจะต้องระมัดระวังชั่งน้ำหนักทางเลือกเหล่านี้ในระหว่างการออกแบบซีพียูเริ่มต้น. แต่คุณไม่สามารถเปลี่ยนความคิดของคุณในภายหลัง
ซีพียูมากที่สุด (ฟอนนอยมันน์สถาปัตยกรรม) ใช้การเข้ารหัสไบนารีของคำสั่งและเรียกคำแนะนำเหล่านี้จากหน่วยความจำ บทนี้จะแนะนำแนวคิดของการเรียนการสอนการเข้ารหัสไบนารีผ่านสมมุติ "Y86" ประมวลผล นี้เป็นที่น่ารำคาญ (และไม่ได้ในทางปฏิบัติมาก) การออกแบบซีพียูที่ทำให้มันง่ายที่จะแสดงให้เห็นถึงวิธีการเลือก opcodes สำหรับชุดคำสั่งง่ายๆตัวถูกดำเนินการเข้ารหัสและออกจากห้องพักสำหรับการขยายตัวในอนาคต คุณลักษณะบางอย่างที่น่าสนใจมากขึ้น Y86 แสดงให้เห็นถึงความจริงที่ว่า opcode มักจะมีฟิลด์และเรามักจะแนะนำกลุ่มด้วยจำนวนของประเภทของตัวถูกดำเนินการที่พวกเขาสนับสนุน การเข้ารหัส Y86 ยังแสดงให้เห็นถึงวิธีการใช้ opcodes พิเศษเพื่อแยกความแตกต่างกลุ่มหนึ่งของคำแนะนำจากที่อื่นและเพื่อให้ไม่ได้กำหนด (ผิดกฎหมาย) opcodes ที่เราสามารถใช้สำหรับการขยายตัวในอนาคต
Y86 CPU หมดจดสมมุติและมีประโยชน์เพียง แต่เป็นเครื่องมือการศึกษา หลังจากการสำรวจออกแบบการเรียนการสอนที่เรียบง่ายชุด Y86, บทนี้เริ่มที่จะหารือเกี่ยวกับการเข้ารหัสของคำแนะนำบนแพลตฟอร์ม 80x86 ในขณะที่ชุดคำสั่ง 80x86 เต็มอยู่ไกลที่ซับซ้อนเกินกว่าที่จะปรึกษาเรื่องนี้ในช่วงต้นของข้อความนี้ (กล่าวคือมีจำนวนมากของคำสั่งที่เรายังคงต้องหารือในภายหลังในข้อความนี้) บทนี้ก็สามารถที่จะหารือเกี่ยวกับการเข้ารหัสการเรียนการสอนขั้นพื้นฐานโดยใช้การเรียนการสอนเพิ่มเป็น ตัวอย่างเช่น ทราบว่าบทนี้เพียงสัมผัสกับรูปแบบการเข้ารหัส 80x86 การเรียนการสอน สำหรับการอภิปรายเต็มรูปแบบของการเข้ารหัส 80x86 ดูภาคผนวกในข้อความนี้และเอกสาร 80x86 อินเทล
1ในขณะที่ "ทุกอย่างรวมทั้งอ่างครัว".
2ไม่พูดถึงได้เร็วขึ้นและราคาไม่แพง
3ในการออกแบบซีพียูจำนวนมากก็ไม่ได้; แต่ตั้งแต่นี้เป็นเป้าหมายการออกแบบสำหรับ 8086 เราจะทำตามเส้นทางนี้
4สมมติว่าการดำเนินการนี้ปฏิบัติตัวถูกดำเนินการเดียวที่เป็นทั้งต้นทางและปลายทางถูกดำเนินการเป็นวิธีการทั่วไปของการจัดการเรียนการสอนนี้
5อันที่จริง Intel อ้างว่ามันเป็น opcode หนึ่งไบต์บวกหนึ่งไบต์ "MOD-reg-R / เมตร" ไบต์ สำหรับวัตถุประสงค์ของเราเราจะรักษา MOD-reg-R / เมตรไบต์เป็นส่วนหนึ่งของ opcode
8ทั้งหมดคงเป็นตัวเลขในภาษาประกอบ Y86 จะได้รับในฐานสิบหก "$" คำนำหน้าไม่จำเป็น
9 "แยก" หมายความว่าจะคิดออกความหมายของคำสั่ง
10โปรแกรมนี้เป็นลายลักษณ์อักษรกับของ Borland Delphi และไม่ได้แจ้งความกับลินุกซ์โดยเวลานี้ถูกเขียนขึ้น
11เราอาจจะได้ใช้ค่า $ F7, $ EF และ $ E7 ตั้งแต่พวกเขายังสอดคล้องกับความพยายามในการจัดเก็บลงทะเบียนเป็นค่าคงที่ อย่างไรก็ตาม $ FF จะง่ายต่อการถอดรหัส ในทางตรงกันข้ามถ้าคุณต้องการแม้ไบต์คำนำหน้ามากขึ้นสำหรับการขยายตัวของการเรียนการสอนที่คุณสามารถใช้เหล่านี้สามค่าเช่นกัน
โหมด (addressing)
โหมดที่อยู่มีลักษณะของสถาปัตยกรรมชุดคำสั่งในส่วนหน่วยประมวลผลกลาง (CPU) เป็นผู้ออกแบบ กับโหมดต่างๆที่กำหนดไว้ในสถาปัตยกรรมชุดคำสั่งให้กำหนดวิธีภาษาเครื่อง คำแนะนำในสถาปัตยกรรมที่สามารถระบุตัวถูกดำเนินการ (หรือตัวถูกดำเนินการ) ของแต่ละคำสั่ง โหมดระบุวิธีการคำนวณที่มีประสิทธิภาพอยู่หน่วยความจำของตัวถูกดำเนินการโดยใช้ข้อมูลที่จัดขึ้นในการลงทะเบียนและ / หรือค่าคงที่การเรียนการสอนที่มีอยู่ภายในเครื่องหรือที่อื่น ๆ
ในการเขียนโปรแกรมคอมพิวเตอร์โหมดที่อยู่เป็นหลักเป็นที่สนใจของcompilerนักเขียนและผู้ที่เขียนโค้ดโดยตรงในภาษาประกอบ .
caveats
โปรดทราบว่าไม่มีทางได้รับการยอมรับโดยทั่วไปของการตั้งชื่อที่อยู่ในโหมดต่างๆ โดยเฉพาะอย่างยิ่งผู้เขียนที่แตกต่างกันและผู้ผลิตคอมพิวเตอร์อาจให้ชื่อที่แตกต่างกันไปยังโหมดที่อยู่เดียวกันหรือชื่อเดียวกันกับโหมดที่อยู่ที่แตกต่างกัน นอกจากโหมดซึ่งในสถาปัตยกรรมที่ได้รับอย่างใดอย่างหนึ่งจะถือว่าเป็นโหมดเดียวอาจเป็นตัวแทนของการทำงานว่าในสถาปัตยกรรมอื่นถูกปกคลุมด้วยสองคนหรือมากกว่าโหมดที่อยู่ ตัวอย่างเช่นบางชุดคำสั่งคอมพิวเตอร์ที่ซับซ้อน (CISC) สถาปัตยกรรมคอมพิวเตอร์เช่นอุปกรณ์ดิจิตอลคอร์ปอเรชั่น (ธันวาคม) VAXรักษาลงทะเบียนและค่าคงที่ตัวอักษรหรือทันทีเช่นเดียวกับอีกโหมด คนอื่น ๆ เช่นไอบีเอ็มระบบ / 360และสืบทอดและส่วนใหญ่ลดชุดคำสั่งคอมพิวเตอร์ (RISC) การออกแบบเข้ารหัสข้อมูลนี้ภายในการเรียนการสอน ดังนั้นเครื่องหลังมีสามการเรียนการสอนที่แตกต่างรหัสสำหรับการคัดลอกหนึ่งลงทะเบียนไปยังอีกคัดลอกตัวอักษรคงที่ในการลงทะเบียนและการคัดลอกเนื้อหาของตำแหน่งหน่วยความจำลงในทะเบียนขณะที่ VAX มีเพียงคนเดียว "MOV" การเรียนการสอน
คำว่า "โหมด" เป็นตัวเองอาจมีการตีความที่แตกต่างกันอย่างใดอย่างหนึ่ง "ความทรงจำโหมดการคำนวณที่อยู่" หรือ "ถูกดำเนินการโหมดการเข้าถึง" ภายใต้การตีความครั้งแรกคำแนะนำที่ไม่ได้อ่านจากหน่วยความจำหรือเขียนถึงหน่วยความจำ (เช่น "เพิ่มตัวอักษรในการลงทะเบียน") ได้รับการพิจารณาไม่ให้มีโหมด "ที่อยู่" ความหมายที่สองช่วยให้เครื่องดังกล่าวเป็น VAX ที่ใช้ตัวถูกดำเนินการบิตโหมดที่จะอนุญาตให้มีการลงทะเบียนหรือถูกดำเนินการตามตัวอักษร เพียงครั้งแรกที่ใช้การตีความคำแนะนำเช่น "โหลดที่อยู่ที่มีประสิทธิภาพ"
โหมดที่อยู่ด้านล่างจะถูกแบ่งออกเป็นรหัสที่อยู่และข้อมูลที่อยู่ มากที่สุดสถาปัตยกรรมคอมพิวเตอร์รักษาความแตกต่างนี้ แต่มีหรือได้รับสถาปัตยกรรมบางอย่างที่อนุญาตให้ (เกือบ) โหมดการอยู่ทั้งหมดที่จะใช้ในบริบทใด ๆ
คำแนะนำที่แสดงด้านล่างเป็นตัวแทนอย่างหมดจดเพื่อที่จะแสดงให้เห็นถึงรูปแบบที่อยู่และไม่จำเป็นต้องสะท้อนค่าขนส่งที่ใช้โดยเครื่องคอมพิวเตอร์ใด ๆ
จำนวนโหมดที่อยู่
สถาปัตยกรรมคอมพิวเตอร์ที่แตกต่างกันแตกต่างกันมากในขณะที่จำนวนของโหมดที่อยู่พวกเขาให้ในฮาร์ดแวร์ มีประโยชน์บางอย่างที่จะช่วยลดความซับซ้อนที่อยู่โหมดและใช้เพียงหนึ่งหรือไม่กี่ง่ายโหมดที่อยู่ที่แม้ว่ามันจะต้องมีคำแนะนำพิเศษบางและบางทีอาจจะลงทะเบียนเป็นพิเศษมันได้พิสูจน์แล้วง่ายมากที่จะออกแบบไปป์ไลน์ซีพียูถ้าโหมดเท่านั้นที่อยู่ที่มีอยู่จะเป็นคนที่เรียบง่าย
ส่วนใหญ่เครื่อง RISC มีเพียงประมาณห้าโหมดที่อยู่ง่ายในขณะที่เครื่อง CISC เช่น supermini ธันวาคม VAX มีกว่าโหมดที่อยู่โหลบางแห่งที่มีความซับซ้อนมาก ไอบีเอ็มระบบ / 360เมนเฟรมมีเพียงสามโหมดที่อยู่; น้อยมากที่ได้รับการเพิ่มเข้ามาสำหรับระบบ / 390 .
เมื่อมีเพียงไม่กี่รูปแบบที่อยู่เป็นโหมดเฉพาะที่จำเป็นมักจะถูกเข้ารหัสภายในรหัสการเรียนการสอน (เช่น IBM System / 360 และสืบทอดส่วนใหญ่ RISC) แต่เมื่อมีจำนวนมากที่อยู่โหมดข้อมูลที่เฉพาะเจาะจงมักจะตั้งไว้ในการเรียนการสอนเพื่อระบุโหมด ธันวาคม VAX ได้รับอนุญาตถูกดำเนินการหลายหน่วยความจำสำหรับคำแนะนำเกือบทั้งหมดและลิขสิทธิ์เพื่อไม่กี่ครั้งแรกบิตของแต่ละตัวถูกดำเนินการระบุเพื่อแสดงโหมดสำหรับตัวถูกดำเนินการโดยเฉพาะอย่างยิ่งที่ การรักษาที่อยู่บิตโหมดระบุแยกออกจากการดำเนินงานบิต opcode ผลิตชุดคำสั่งมุมฉาก .
แม้ในคอมพิวเตอร์ที่มีโหมดการอยู่หลายวัดของโปรแกรมที่เกิดขึ้นจริงแสดงให้เห็นว่ารูปแบบที่เรียบง่ายที่อยู่ด้านล่างบัญชีสำหรับบาง 90% หรือมากกว่าของโหมดที่อยู่ทั้งหมดมาใช้ ตั้งแต่การวัดดังกล่าวส่วนใหญ่จะขึ้นอยู่กับรหัสที่สร้างจากภาษาระดับสูงโดยคอมไพเลอร์นี้สะท้อนให้เห็นถึงบางส่วนข้อ จำกัด ของคอมไพเลอร์ที่ใช้
ผลข้างเคียงที่เป็นประโยชน์
บางสถาปัตยกรรมชุดคำสั่งเช่นx86 Intelและ IBM / 360 และสืบทอดมีการโหลดที่อยู่ที่มีประสิทธิภาพการเรียนการสอนนี้จะดำเนินการคำนวณที่ถูกดำเนินการที่มีประสิทธิภาพ แต่แทนที่จะทำหน้าที่ในตำแหน่งหน่วยความจำที่มันโหลดอยู่ ที่จะได้รับการเข้าถึงลงในทะเบียน นี้จะมีประโยชน์เมื่อผ่านที่อยู่ขององค์ประกอบอาร์เรย์ในการย่อย นอกจากนี้ยังอาจจะเป็นวิธีที่ส่อเสียดเล็กน้อยในการดำเนินการคำนวณมากขึ้นกว่าปกติในการเรียนการสอน สำหรับตัวอย่างเช่นการใช้การเรียนการสอนดังกล่าวที่มีอยู่ในโหมด "ฐาน + ดัชนี + ชดเชย" (รายละเอียดด้านล่าง) ช่วยให้หนึ่งที่จะเพิ่มสองลงทะเบียนและคงอยู่ด้วยกันในหนึ่งการเรียนการสอน
โหมดที่อยู่ที่เรียบง่ายสำหรับรหัส
แน่นอน
+ ---- + + ------------------------------
| กระโดด | ที่อยู่ |
+ ---- + - ---------------------------- +
(ที่อยู่คอมพิวเตอร์ที่มีประสิทธิภาพ = ที่อยู่)
ที่อยู่ที่มีประสิทธิภาพสำหรับการเรียนการสอนที่อยู่แน่นอนเป็นพารามิเตอร์ที่อยู่ของตัวเองด้วยการปรับเปลี่ยนไม่มี
PC-ญาติ
+ ---- + + ------------------------------
| กระโดด | ชดเชย | กระโดดญาติ
+ ---- + ------------------------------ +
(ที่อยู่ที่มีประสิทธิภาพเครื่องคอมพิวเตอร์ = ที่อยู่การเรียนการสอนต่อไป + ออฟเซ็ทอาจจะเป็นลบ)
ที่อยู่ที่มีประสิทธิภาพสำหรับเครื่องคอมพิวเตอร์ที่อยู่การเรียนการสอน -relative เป็นพารามิเตอร์ชดเชยที่เพิ่มไปยังที่อยู่ของคำสั่งต่อไป ชดเชยนี้มักจะมีการลงนามเพื่อให้การอ้างอิงถึงรหัสทั้งก่อนและหลังการเรียนการสอน
นี้จะเป็นประโยชน์โดยเฉพาะอย่างยิ่งในการเชื่อมต่อกับกระโดดเพราะกระโดดทั่วไปคือคำแนะนำที่ใกล้เคียง (ในภาษาระดับสูงส่วนใหญ่ถ้าหรือในขณะที่งบจะสั้นพอสมควร) วัดของโปรแกรมที่เกิดขึ้นจริงแสดงให้เห็นว่าบิต 8 หรือ 10 ชดเชยมีขนาดใหญ่พอสำหรับบาง 90% ของการกระโดดเงื่อนไข[ 8 ]
ประโยชน์จากเครื่องคอมพิวเตอร์ของญาติที่อยู่ก็คือว่ารหัสอาจจะเป็นตำแหน่งที่เป็นอิสระคือมันสามารถโหลดได้ที่ใดก็ได้ในหน่วยความจำโดยไม่จำเป็นต้องปรับที่อยู่ใด ๆ
บางรุ่นของโหมดนี้อาจจะเป็นเงื่อนไขที่สองหมายถึงการลงทะเบียน ("กระโดดถ้า reg1 = reg2") หนึ่งในทะเบียน ("กระโดดเว้นแต่ reg1 = 0") หรือไม่ลงทะเบียนโดยปริยายหมายถึงบางบิตก่อนหน้านี้ที่ตั้งอยู่ในสถานะลงทะเบียน . ดูยังดำเนินการตามเงื่อนไขดังต่อไปนี้
ลงทะเบียนทางอ้อม
+ ------- + ----- +
| jumpVia | reg |
------- + + ----- +
(ที่อยู่คอมพิวเตอร์ที่มีประสิทธิภาพ = เนื้อหาของการลงทะเบียน 'reg')
ที่อยู่ที่มีประสิทธิภาพสำหรับการเรียนการสอนทางอ้อมสมาชิกที่อยู่ในทะเบียนที่ระบุ ยกตัวอย่างเช่น (A7) ในการเข้าถึงเนื้อหาของที่อยู่ลงทะเบียน A7
ผลที่ได้คือการถ่ายโอนการควบคุมเพื่อการเรียนการสอนที่มีอยู่ในการลงทะเบียนที่กำหนด
เครื่องริสก์หลายคนรวมทั้ง CISC IBM System / 360และสืบทอด, มีคำแนะนำสายย่อยที่วางอยู่ผู้ส่งในที่อยู่ลงทะเบียน-โหมดทะเบียนอ้อมจะใช้ในการกลับมาจากสายย่อยที่
โหมดที่อยู่ลำดับ
ดำเนินการต่อเนื่อง
+ ------ +
| nop | ดำเนินการเรียนการสอนต่อไปนี้
+ ------ +
(ที่อยู่คอมพิวเตอร์ที่มีประสิทธิภาพ = ที่อยู่การเรียนการสอนต่อไป)
CPU หลังจากที่การดำเนินการเรียนการสอนต่อเนื่องทันทีที่ดำเนินการเรียนการสอนต่อไปนี้
ดำเนินการต่อเนื่องไม่ว่าจะเป็นโหมดที่อยู่ในคอมพิวเตอร์บางเครื่อง
คำแนะนำมากที่สุดในที่สุดสถาปัตยกรรม CPU คำแนะนำลำดับ เพราะคำแนะนำส่วนใหญ่เป็นคำแนะนำตามลำดับนักออกแบบซีพียูมักจะเพิ่มคุณสมบัติที่จงใจเสียสละประสิทธิภาพการทำงานบนคำแนะนำอื่น ๆ สาขาคำแนะนำในการที่จะทำให้คำแนะนำลำดับเหล่านี้ทำงานได้เร็วขึ้น
สาขาเงื่อนไขโหลดคอมพิวเตอร์กับหนึ่งในผลลัพธ์ที่เป็นไป 2 ขึ้นอยู่กับเงื่อนไขมากที่สุดสถาปัตยกรรมซีพียูใช้บางโหมดอื่น ๆ สำหรับ "ถ่าย" สาขาและการดำเนินการตามลำดับสำหรับ "ไม่เอา" สาขา
คุณสมบัติหลายอย่างในซีพียูที่ทันสมัย - การเรียนการสอน prefetchและซับซ้อนมากขึ้นpipelineing , ออกจากการประมวลผลฯลฯ - รักษาภาพลวงตาว่าแต่ละคำสั่งเสร็จสิ้นก่อนที่หนึ่งต่อไปจะเริ่มให้ผลสุดท้ายเดียวกันแม้ว่าที่ไม่ตรงกับสิ่งที่ ที่เกิดขึ้นภายใน
แต่ละ " บล็อกพื้นฐาน "ของคำสั่งดังกล่าวต่อเนื่องแสดงทั้งเวลาและพื้นที่ใกล้เรือนเคียงของการอ้างอิง .
ซีพียูที่ไม่ได้ใช้ดำเนินการตามลำดับ
ซีพียูที่ไม่ได้ใช้ดำเนินการต่อเนื่องกับโปรแกรมเคาน์เตอร์จะหายากมาก ในซีพียูบางแต่ละคำสั่งมักจะระบุที่อยู่ของการเรียนการสอนต่อไป ซีพียูดังกล่าวมีตัวชี้การเรียนการสอนที่มีที่อยู่ที่ระบุ; ก็ไม่ได้เป็นโปรแกรมเคาน์เตอร์เนื่องจากมีการตั้งสำรองสำหรับการเพิ่มมัน ซีพียูดังกล่าวรวมถึงบางส่วนของหน่วยความจำกลองคอมพิวเตอร์เครื่อง SECDและRTX 32P . [ 9 ]
สถาปัตยกรรมคอมพิวเตอร์อื่น ๆ ไปมากขึ้นความพยายามที่จะหลีกเลี่ยงคอขวด von Neumannใช้ความหลากหลายของทางเลือกในการโปรแกรมเคาน์เตอร์ .
ดำเนินการตามเงื่อนไข
บางสถาปัตยกรรมคอมพิวเตอร์ (เช่นARM ) มีคำแนะนำที่มีเงื่อนไข (หรือโหลดเงื่อนไขเช่น x 86) ซึ่งในบางกรณีสามารถขจัดความจำเป็นสำหรับสาขาเงื่อนไขและหลีกเลี่ยงการล้างท่อการเรียนการสอน . การเรียนการสอนเช่น 'เปรียบเทียบ' จะใช้ในการตั้งรหัสสภาพและคำแนะนำที่ตามมารวมถึงการทดสอบในรหัสเงื่อนไขที่ว่าเพื่อดูว่าพวกเขาจะทำตามหรือไม่สนใจ
ข้าม
+ ------ + ----- + ----- +
| skipEQ | reg1 | reg2 | ข้ามการเรียนการสอนต่อไปนี้หาก reg1 = reg2
+ ------ + ----- + - ---- +
(ที่อยู่คอมพิวเตอร์ที่มีประสิทธิภาพ = ที่อยู่การเรียนการสอนต่อไป + 1)
ข้ามไปที่อยู่อาจมีการพิจารณาชนิดพิเศษของโหมด PC-เทียบกับคงที่ "+1" ชดเชย เช่น PC ญาติที่อยู่, ซีพียูบางรุ่นของโหมดนี้เท่านั้นที่อ้างถึงลงทะเบียน ("ข้ามถ้า reg1 = 0") หรือลงทะเบียนไม่โดยปริยายหมายถึงบางบิตก่อนหน้านี้ที่ตั้งอยู่ในสถานะลงทะเบียน . ซีพียูอื่น ๆ มีรุ่นที่เลือกบิตที่ระบุในไบต์ที่เฉพาะเจาะจงในการทดสอบ ("ข้ามถ้าบิต 7 จาก reg12 เป็น 0")
ซึ่งแตกต่างจากทุกสาขาเงื่อนไขอื่น ๆ "ข้าม" การเรียนการสอนไม่เคยต้องการที่จะล้างท่อการเรียนการสอนแม้ว่ามันอาจจะต้องก่อให้เกิดการเรียนการสอนต่อไปที่จะถูกละเว้น
โหมดที่อยู่ที่เรียบง่ายสำหรับข้อมูล
สมัครสมาชิก (หรือลงทะเบียนโดยตรง)
+ ------ + ----- + ----- + ----- + | มัล | reg1 | reg2 | reg3 | reg1: = reg2 * reg3; + ------ + ----- + ----- + ----- +
นี้ "โหมด" ไม่ได้อยู่ที่มีประสิทธิภาพและไม่ได้รับการพิจารณาให้เป็นโหมดที่อยู่ในคอมพิวเตอร์บางเครื่อง
ในตัวอย่างนี้ตัวถูกดำเนินการทั้งหมดที่อยู่ในการลงทะเบียนและผลที่จะอยู่ในการลงทะเบียน
ฐานบวกชดเชยและการเปลี่ยนแปลง
นี้บางครั้งจะเรียกว่าฐานบวกราง '
+ ------ + ----- + ----- + + ---------------- | โหลด | reg | ฐาน | ชดเชย | reg = แรม [ฐาน + ชดเชย] + ------ + ----- + ----- + ---------------- + (ที่อยู่ที่มีประสิทธิภาพ = ชดเชย + เนื้อหาของ ลงทะเบียนฐานที่ระบุไว้)
ถ้าชดเชยเป็นศูนย์นี้จะกลายเป็นตัวอย่างของการลงทะเบียนทางอ้อมที่อยู่; ที่อยู่ที่มีประสิทธิภาพเป็นเพียงค่าในฐานทะเบียน
ในเครื่อง RISC จำนวนมากลงทะเบียน 0 คงที่ค่าเป็นศูนย์ หากลงทะเบียน 0 จะถูกใช้เป็นฐานทะเบียนนี้จะกลายเป็นตัวอย่างของแน่นอนอยู่ . แต่เพียงส่วนเล็ก ๆ ของหน่วยความจำที่สามารถเข้าถึงได้ (64 กิโลไบต์ถ้าชดเชยคือ 16 บิต)
16 บิตชดเชยอาจดูเหมือนขนาดเล็กมากเมื่อเทียบกับขนาดของความทรงจำที่คอมพิวเตอร์ปัจจุบัน (ซึ่งเป็นเหตุผลที่80386ขยายถึง 32 บิต) มันอาจจะเลวร้ายยิ่ง: IBM System / 360 เมนเฟรมคอมพิวเตอร์มีเพียงการลงนาม 12 บิตชดเชยแต่หลักการของบ้านใกล้เรือนเคียงของการอ้างอิงใช้: มากกว่าช่วงเวลาสั้นที่สุดของรายการข้อมูลโปรแกรมต้องการใช้จะค่อนข้างใกล้เคียงกัน
โหมดนี้จะเกี่ยวข้องอย่างใกล้ชิดกับโหมดแน่นอนการจัดทำดัชนีที่อยู่
ตัวอย่างที่ 1 : ภายใน subroutine โปรแกรมเมอร์ส่วนใหญ่จะมีความสนใจในพารามิเตอร์และตัวแปรท้องถิ่นซึ่งไม่ค่อยจะเกิน 64 กิโลไบต์ซึ่งลงทะเบียนฐานหนึ่ง ( ตัวชี้กรอบ ) พอเพียง หากประจำวันนี้เป็นวิธีการเรียนภาษาเชิงวัตถุแล้วลงทะเบียนฐานที่สองเป็นสิ่งจำเป็นที่จุดที่คุณลักษณะสำหรับวัตถุปัจจุบัน ( นี้หรือตัวเองในบางภาษาระดับสูง)
ตัวอย่างที่ 2 : ถ้าลงทะเบียนฐานมีอยู่ของชนิดคอมโพสิท (ประวัติหรือโครงสร้าง) ชดเชยสามารถใช้ในการเลือกฟิลด์จากบันทึกที่ (ระเบียนที่สุด / โครงสร้างน้อยกว่า 32 กิโลไบต์ในขนาด)
ทันที / ตัวอักษร
+ ------ + ----- + ----- + + ---------------- | เพิ่ม | reg1 | reg2 | คง | reg1: = reg2 + คง + ------ + ----- + ----- + ---------------- +
นี้ "โหมด" ไม่ได้อยู่ที่มีประสิทธิภาพและไม่ว่าจะเป็นโหมดที่อยู่ในคอมพิวเตอร์บางเครื่อง
คงอาจจะมีการลงนามหรือไม่ได้ลงชื่อ ตัวอย่างเช่น move.l # $ FEEDABBA, D0 จะย้ายค่า hex ทันที "FEEDABBA" ลงทะเบียน D0
แทนการใช้ตัวถูกดำเนินการจากหน่วยความจำค่าของตัวถูกดำเนินการจะจัดขึ้นในการเรียนการสอนของตัวเอง บนเครื่องธันวาคม VAX, ขนาดตัวถูกดำเนินการตามตัวอักษรอาจจะ 6, 8, 16, หรือ 32 บิตนาน
แอนดรู Tanenbaumพบว่า 98% ของค่าคงที่ทั้งหมดที่อยู่ในโปรแกรมจะพอดีใน 13 บิต (ดูปรัชญาการออกแบบ RISC )
โดยปริยาย
+ + ----------------- | บิตพกชัดเจน | ----------------- + + + ------ ------------- + | สะสมที่ชัดเจน | ------------------- + +
โหมดโดยนัย[2] นอกจากนี้ยังเรียกว่าโหมดโดยปริยาย ( ภาษาประกอบ X86 ) ไม่ได้ระบุอย่างชัดเจนที่อยู่ที่มีประสิทธิภาพสำหรับทั้งแหล่งที่มาหรือปลายทาง (หรือบางครั้งทั้งสอง)
ทั้งแหล่งที่มา (ถ้ามี) หรือที่อยู่ปลายทางที่มีประสิทธิภาพ (หรือบางครั้งทั้งสอง) เป็นนัยโดย opcode
โดยนัยที่อยู่ได้ค่อนข้างบ่อยในคอมพิวเตอร์เก่า (ได้ถึงกลางปี 1970) เครื่องคอมพิวเตอร์ดังกล่าวโดยทั่วไปแล้วจะมีเพียงการลงทะเบียนเพียงครั้งเดียวในการคำนวณสามารถทำได้ที่สะสม เช่นเครื่องสะสมโดยปริยายอ้างอิงที่สะสมในเกือบทุกการเรียนการสอน ตัวอย่างเช่นการดำเนินการที่ <a := b + c;> สามารถทำได้โดยใช้ลำดับ <โหลดข; เพิ่มค; เก็บ;> - ปลายทาง (สะสม) ก็ส่อให้เห็นในทุก "โหลด" และ "เพิ่ม" การเรียนการสอน แหล่งที่มา (สะสม) ก็ส่อให้เห็นในทุก "เก็บ" การเรียนการสอน
คอมพิวเตอร์ในภายหลังมักจะได้มากกว่าหนึ่งลงทะเบียนที่ใช้งานทั่วไปหรือสถานที่แรมซึ่งอาจจะเป็นแหล่งที่มาหรือปลายทางหรือทั้งคณิตศาสตร์และคอมพิวเตอร์ในภายหลังจึงต้องมีโหมดอื่น ๆ ที่จะระบุแหล่งที่มาและปลายทางของเลขคณิต
ในบรรดาคำแนะนำ x 86, บางคนใช้การลงทะเบียนโดยปริยายสำหรับหนึ่งในตัวถูกดำเนินการหรือผล (คูณหารนับกระโดดเงื่อนไข)
เครื่องคอมพิวเตอร์จำนวนมาก (เช่น x 86 และ AVR) มีวัตถุประสงค์พิเศษลงทะเบียนที่เรียกว่าตัวชี้สแต็คที่เพิ่มขึ้นโดยปริยายหรือ decremented เมื่อผลักดันหรือ popping ข้อมูลจากกองและแหล่งที่มาหรือแหล่งที่มีประสิทธิภาพเป็นที่อยู่ (โดยปริยาย) ที่อยู่ที่เก็บไว้ในที่ ตัวชี้สแต็ค
คอมพิวเตอร์แบบ 32 บิต (เช่น 68000, ARM หรือ PowerPC) ได้มากกว่าหนึ่งลงทะเบียนซึ่งสามารถนำมาใช้เป็นกองชี้และเพื่อใช้ "ลงทะเบียน Autoincrement อ้อม" โหมดที่จะระบุว่าการลงทะเบียนเหล่านั้นควรจะใช้เมื่อ ผลักดันหรือ popping ข้อมูลจากกอง
บางสถาปัตยกรรมคอมพิวเตอร์ปัจจุบัน (เช่นไอบีเอ็ม / 390 และ Intel Pentium) มีคำแนะนำบางอย่างเกี่ยวกับตัวถูกดำเนินการโดยปริยายเพื่อรักษาความเข้ากันได้ย้อนหลังกับการออกแบบก่อนหน้านี้
บนเครื่องคอมพิวเตอร์หลายคำสั่งที่พลิกบิตโหมดผู้ใช้ / ระบบการขัดจังหวะใช้งานบิต ฯลฯ โดยปริยายระบุการลงทะเบียนพิเศษที่มีบิตเหล่านั้น นี้ง่ายฮาร์ดแวร์ที่จำเป็นในการดักคำแนะนำเหล่านั้นเพื่อตอบสนองความPopek โกลด์เบิร์กและความต้องการการทำงานแบบเสมือน -ON ระบบดังกล่าวเป็นตรรกะกับดักไม่จำเป็นต้องมองไปที่ตัวถูกดำเนินการใด ๆ (หรือตามที่อยู่ที่มีประสิทธิภาพสุดท้าย) แต่ที่ opcode .
ไม่กี่ซีพียูได้รับการออกแบบที่ทุกตัวถูกดำเนินการอยู่เสมอที่ระบุโดยปริยายในการเรียนการสอนทุก - ศูนย์ดำเนินซีพียู
โหมดอื่น ๆ ที่อยู่สำหรับรหัสหรือข้อมูล
แน่นอน / ตรง
+ ------ + ----- + ------------------------------------ - + | โหลด | reg | ที่อยู่ | + ------ + ----- + -------------------------- ------------ + (ที่อยู่ที่มีประสิทธิภาพ = ที่อยู่ตามที่กำหนดในการเรียนการสอน)
นี้ต้องใช้พื้นที่ในการเรียนการสอนสำหรับค่อนข้างมากอยู่ มันมักจะมีอยู่ในเครื่อง CISC ซึ่งมีคำแนะนำยาวตัวแปรเช่นx 86 .
บางเครื่องมี RISC พิเศษโหลดตัวอักษรบนซึ่งเป็นสถานที่การเรียนการสอน 16 บิตอย่างต่อเนื่องในครึ่งบนของการลงทะเบียน หรือตัวอักษรคำสั่งที่สามารถใช้ในการแทรก 16 บิตคงที่ในครึ่งล่างของการลงทะเบียนที่เพื่อให้ที่อยู่ 32 บิตเต็มรูปแบบจากนั้นจะสามารถใช้งานผ่านโหมดทะเบียนทางอ้อมที่ตัวเองให้เป็น "ฐาน บวกชดเชย "กับการชดเชยของ 0
การจัดทำดัชนีแน่นอน
+ ------ + ----- + ----- + ------------------------------ - + | โหลด | reg | ดัชนี | ที่อยู่ | + ------ + ----- + ----- + ------------------ -------------- + (ที่อยู่ที่มีประสิทธิภาพ = ที่อยู่ + เนื้อหาของดัชนีลงทะเบียนที่ระบุไว้)
นอกจากนี้ยังต้องใช้พื้นที่ในการเรียนการสอนสำหรับค่อนข้างมากอยู่ ที่อยู่อาจจะเป็นจุดเริ่มต้นของอาร์เรย์หรือเวกเตอร์และดัชนีสามารถเลือกองค์ประกอบอาร์เรย์เฉพาะที่จำเป็น หน่วยประมวลผลที่อาจวัดดัชนีลงทะเบียนเพื่อให้ขนาดขององค์ประกอบอาร์เรย์แต่ละ .
โปรดทราบว่านี้จะมากหรือน้อยเหมือนกันเป็นฐานบวกชดเชยโหมดยกเว้นว่าการชดเชยในกรณีนี้มีขนาดใหญ่พอที่จะอยู่ในสถานที่ตั้งหน่วยความจำใด
ตัวอย่างที่ 1 : ภายใน subroutine โปรแกรมเมอร์อาจกำหนดสตริงเป็นค่าคงที่หรือตัวแปรคง . ที่อยู่ของสตริงจะถูกเก็บไว้ในที่อยู่ที่แท้จริงในการเรียนการสอน ซึ่งชดเชยตัวอักษรของสตริงที่จะใช้ในการทำซ้ำของวงนี้จะถูกเก็บไว้ในดัชนีลงทะเบียน
ตัวอย่างที่ 2 : โปรแกรมอาจกำหนดอาร์เรย์ขนาดใหญ่หลาย Globals หรือเป็นตัวแปรคลาส . จุดเริ่มต้นของอาร์เรย์จะถูกเก็บไว้ในที่อยู่ตามตัวอักษร (แก้ไขอาจจะเป็นในเวลาที่โปรแกรมโหลดโดยโหลดโยกย้าย ) การเรียนการสอนที่อ้างอิงมัน ชดเชยที่รายการจากอาร์เรย์ที่จะใช้ในการทำซ้ำของวงนี้จะถูกเก็บไว้ในดัชนีลงทะเบียน บ่อยครั้งที่คำแนะนำในวงอีกครั้งใช้ลงทะเบียนเดียวกันสำหรับวงเคาน์เตอร์และชดเชยหลายอาร์เรย์
ฐานบวกดัชนี
+ ------ + ----- + ----- + ----- + | โหลด | reg | ฐาน | ดัชนี | + ------ + ----- + - ---- + ----- + (ที่อยู่ที่มีประสิทธิภาพ = เนื้อหาของการลงทะเบียนฐานที่กำหนด + เนื้อหาของดัชนีลงทะเบียนที่ระบุไว้)
ฐานการลงทะเบียนอาจมีอยู่เริ่มต้นของอาร์เรย์หรือเวกเตอร์และดัชนีสามารถเลือกองค์ประกอบอาร์เรย์เฉพาะที่จำเป็น หน่วยประมวลผลที่อาจวัดดัชนีลงทะเบียนเพื่อให้ขนาดขององค์ประกอบอาร์เรย์แต่ละ . นี้สามารถนำมาใช้สำหรับการเข้าถึงองค์ประกอบของอาร์เรย์ผ่านเป็นพารามิเตอร์
ฐานบวกดัชนีบวกชดเชย
+ ------ + ----- + ----- + ----- + + ---------------- | โหลด | reg | ฐาน | ดัชนี | ชดเชย | + ------ + ----- + ----- + ----- + ---------------- + (ที่อยู่ที่มีประสิทธิภาพ = ชดเชย + เนื้อหาของฐานที่กำหนดลงทะเบียน + เนื้อหาของดัชนีลงทะเบียนที่ระบุไว้)
ลงทะเบียนฐานอาจมีอยู่เริ่มต้นของอาร์เรย์หรือเวกเตอร์ของการบันทึกดัชนีสามารถเลือกบันทึกเฉพาะที่จำเป็นและชดเชยสามารถเลือกฟิลด์ภายในบันทึกไว้ว่า หน่วยประมวลผลที่อาจวัดดัชนีลงทะเบียนเพื่อให้ขนาดขององค์ประกอบอาร์เรย์แต่ละ .
ปรับ
+ ------ + ----- + ----- + ----- + | โหลด | reg | ฐาน | ดัชนี | + ------ + ----- + - ---- + ----- + (ที่อยู่ที่มีประสิทธิภาพ = เนื้อหาของการลงทะเบียนฐานที่กำหนด + ปรับเนื้อหาของดัชนีลงทะเบียนที่ระบุไว้)
ฐานการลงทะเบียนอาจมีอยู่เริ่มต้นของอาร์เรย์หรือเวกเตอร์โครงสร้างข้อมูลและดัชนีอาจมีการชดเชยขององค์ประกอบอาร์เรย์หนึ่งโดยเฉพาะที่จำเป็น
โหมดนี้แบบไดนามิกตาชั่งค่าในดัชนีลงทะเบียนเพื่อให้ขนาดขององค์ประกอบอาร์เรย์แต่ละเช่นถ้าองค์ประกอบมากมายที่มีความแม่นยำสองตัวเลขทศนิยมครอบครอง 8 ไบต์แต่ละแล้วค่าในดัชนีลงทะเบียนคูณด้วย 8 ก่อนที่จะถูก ใช้ในการคำนวณที่มีประสิทธิภาพ ปัจจัยระดับปกติ จำกัด ที่จะเป็นพลังของทั้งสองเพื่อให้ขยับมากกว่าคูณสามารถใช้
ลงทะเบียนทางอ้อม[ แก้ไข]
+ ------ + ------ + ----- + | โหลด | reg1 | ฐาน | + ------ + ------ + ----- + ( มีผลบังคับใช้อยู่ = เนื้อหาของฐานลงทะเบียน)
คอมพิวเตอร์บางเครื่องมีนี้เป็นโหมดที่แตกต่าง เครื่องคอมพิวเตอร์จำนวนมากเพียงแค่ใช้ฐานบวกชดเชยกับค่าชดเชยของ 0 ตัวอย่างเช่น (A7)
ลงทะเบียน Autoincrement อ้อม
+ ------ + ----- + + ------- | โหลด | reg | ฐาน | + ------ + ----- + ------- + (ที่อยู่ที่มีประสิทธิภาพ = เนื้อหาของฐานลงทะเบียน)
หลังจากระบุที่อยู่ที่มีประสิทธิภาพคุ้มค่าในการลงทะเบียนฐานจะเพิ่มขึ้นตามขนาดของรายการข้อมูลที่จะเข้าถึงได้ ยกตัวอย่างเช่น (A7) + จะเข้าถึงเนื้อหาของ A7 ที่อยู่ที่ลงทะเบียนแล้วเพิ่มตัวชี้ที่อยู่ของ A7 1 (ปกติ 1 คำ) ภายในวง, โหมดนี้สามารถใช้ในการก้าวผ่านทุกองค์ประกอบของอาร์เรย์หรือเวกเตอร์
ในภาษาระดับสูงมันก็มักจะคิดว่าเป็นความคิดที่ดีที่ฟังก์ชั่นที่ผลตอบแทนไม่ควรมีผลข้างเคียง (ขาดของผลข้างเคียงที่ทำให้เข้าใจโปรแกรมและการตรวจสอบมากขึ้น) โหมดนี้มีผลข้างเคียงในการที่ลงทะเบียนฐานมีการเปลี่ยนแปลง หากมีการเข้าถึงหน่วยความจำที่ตามมาทำให้เกิดข้อผิดพลาด (ข้อบกพร่องของเพจเช่นข้อผิดพลาดรถบัส, ข้อผิดพลาดที่อยู่) ที่นำไปสู่การขัดจังหวะแล้วเริ่มต้นการเรียนการสอนจะกลายเป็นปัญหามากขึ้นตั้งแต่หนึ่งหรือมากกว่าการลงทะเบียนอาจต้องมีการตั้งค่ากลับไปรัฐพวกเขาอยู่ในก่อน การเรียนการสอนที่เริ่มต้น
มีอย่างน้อยสองสถาปัตยกรรมคอมพิวเตอร์ที่มีปัญหาการดำเนินการเกี่ยวกับการกู้คืนจากการขัดจังหวะด้วยเมื่อโหมดนี้จะใช้:
- โมโตโรล่า 68000 (ที่อยู่เป็นตัวแทนใน 24 บิต) อาจจะมีหนึ่งหรือสองตัวถูกดำเนินการลงทะเบียน Autoincrement68010 + แก้ปัญหาได้โดยการบันทึกรัฐภายในหน่วยประมวลผลบนรถบัสหรือที่อยู่ผิดพลาด
- ธันวาคม VAX อาจมีถึง 6 Autoincrement ตัวถูกดำเนินการลงทะเบียน การเข้าถึงตัวถูกดำเนินการแต่ละอาจก่อให้เกิดสองข้อบกพร่องของหน้า (ถ้าตัวถูกดำเนินการที่เกิดขึ้นกับก้าวข้ามพรมแดนหน้า) ของหลักสูตรการเรียนการสอนของตัวเองอาจจะมากกว่า 50 ไบต์ยาวและอาจก้าวข้ามพรมแดนหน้าเช่นกัน!
Autodecrement ลงทะเบียนทางอ้อม[ แก้ไข]
+ ------ + ----- + ----- + | โหลด | reg | ฐาน | + ------ + ----- + ----- + (ที่อยู่ที่มีประสิทธิภาพ = เนื้อหาใหม่ของฐานลงทะเบียน)
ก่อนที่จะกำหนดที่อยู่ที่มีประสิทธิภาพคุ้มค่าในการลงทะเบียนฐานเป็น decremented โดยขนาดของรายการข้อมูลที่จะสามารถเข้าถึง
ภายในวง, โหมดนี้สามารถใช้ในการก้าวไปข้างหลังผ่านทุกองค์ประกอบของอาร์เรย์หรือเวกเตอร์ สแต็คสามารถดำเนินการได้โดยใช้โหมดนี้ร่วมกับโหมดก่อนหน้านี้ (Autoincrement)
ดูการอภิปรายของผลข้างเคียงที่อยู่ภายใต้Autoincrement โหมด .
หน่วยความจำทางอ้อม
ใด ๆ ของรูปแบบที่อยู่ที่ระบุไว้ในบทความนี้อาจจะมีบิตพิเศษเพื่อแสดงให้เห็นทางอ้อมที่อยู่คือที่อยู่คำนวณโดยใช้โหมดบางในความเป็นจริงที่อยู่ของสถานที่ตั้ง (โดยทั่วไปสมบูรณ์คำ ) ซึ่งมีอยู่อย่างมีประสิทธิภาพที่เกิดขึ้นจริง
ทางอ้อมที่อยู่อาจจะใช้สำหรับรหัสหรือข้อมูล มันสามารถทำให้การดำเนินการของตัวชี้หรือการอ้างอิงหรือการจัดการ ง่ายขึ้นและยังสามารถทำให้มันง่ายขึ้นที่จะเรียกซับรูทีนที่ไม่ได้ตั้งที่อื่น อ้อมอยู่ไม่ดำเนินการลงโทษประสิทธิภาพเนื่องจากการเข้าถึงหน่วยความจำพิเศษที่เกี่ยวข้องกับ
บาง minicomputers ต้น (เช่นธันวาคมPDP-8 , ข้อมูลทั่วไปโนวา ) มีเพียงไม่กี่ที่ลงทะเบียนและมีเพียงช่วงที่อยู่ จำกัด (8 บิต) ดังนั้นการใช้หน่วยความจำทางอ้อมอยู่เกือบวิธีเดียวที่หมายถึงจำนวนเงินที่สำคัญใด ๆ ของหน่วยความจำ
PC-ญาติ
+ ------ + ------ + --------- + + ---------------- | โหลด | reg1 | ฐาน = พีซี | ชดเชย | reg1 = แรม [PC + ชดเชย] + ------ + ------ + --------- + ------------- --- + (ที่อยู่ที่มีประสิทธิภาพ = PC + ชดเชย)
โหมด PC ญาติที่อยู่ที่ใช้ในการโหลดลงทะเบียนจาก "คงที่" เก็บไว้ในหน่วยความจำโปรแกรมห่างจากการเรียนการสอนในปัจจุบัน มันอาจจะถูกมองว่าเป็นกรณีพิเศษของ "ฐานบวกชดเชย" โหมดหนึ่งที่เลือกโปรแกรมเคาน์เตอร์ (PC) ในขณะที่ "ฐานทะเบียน"
มีไม่กี่ซีพียูที่สนับสนุน PC-ญาติโหลดข้อมูล ซีพียูดังกล่าว ได้แก่
x86-64สถาปัตยกรรมสนับสนุน "RIP ญาติ" อยู่ซึ่งใช้ 64 บิตตัวชี้สอน RIP เป็นฐานทะเบียน นี้สนับสนุนให้รหัสตำแหน่งอิสระ .
สถาปัตยกรรม ARMและพีซีญาติที่อยู่โดยมีเครื่องคอมพิวเตอร์ที่อยู่ในแฟ้มทะเบียนสนับสนุนธันวาคม VAX สำหรับสถาปัตยกรรมทั้งสอง r15 จะใช้เป็นโปรแกรมเคาน์เตอร์
โมโตโรล่า 6809, สูงมาก CPU 8 บิตการออกแบบในปี 1978 นอกจากนี้ยังสนับสนุนโหมดนี้
เมื่อโหมดนี้จะใช้คอมไพเลอร์มักจะคงที่ในสถานที่สระว่ายน้ำตัวอักษรทันทีก่อนหรือทันทีหลังจากที่ย่อยที่ใช้พวกเขาเพื่อป้องกันไม่ให้ตั้งใจดำเนินการค่าคงที่ที่เป็นคำแนะนำ
โหมดนี้ซึ่งมักจะปรับเปลี่ยนข้อมูลที่ลงทะเบียนแล้วตามลำดับลดลงผ่านการดำเนินการเรียนการสอนต่อไป (จุดที่มีประสิทธิภาพในการข้อมูล) ไม่ควรจะสับสนกับ "PC ญาติสาขา" ซึ่งไม่ได้ปรับเปลี่ยนลงทะเบียนข้อมูลใด ๆ แต่แทนที่จะ สาขาบางการเรียนการสอนอื่น ๆ ที่ได้รับการชดเชย (จุดที่มีประสิทธิภาพในการเรียนการสอนที่ปฏิบัติการ)
โหมดที่อยู่เลิก
โหมดที่อยู่ไว้ที่นี่ถูกนำมาใช้ในช่วง 1950-1980 แต่จะไม่พร้อมใช้บนเครื่องคอมพิวเตอร์ที่เป็นปัจจุบันมากที่สุด รายการนี้ไม่ได้หมายความว่าสมบูรณ์ มีหลายที่น่าสนใจและแปลกกับโหมดอื่น ๆ ที่ใช้เป็นครั้งคราวเช่นแน่นอน-ลบตรรกะ OR สองหรือสามการลงทะเบียนดัชนี
หน่วยความจำหลายระดับอ้อม
ถ้าขนาดคำว่ามีขนาดใหญ่กว่าอยู่แล้วคำอ้างอิงสำหรับหน่วยความจำที่อยู่ตัวเองทางอ้อมอาจมีการตั้งธงอ้อมเพื่อระบุหน่วยความจำอีกรอบทางอ้อม ธงนี้จะเรียกว่าบิตร้ายและตัวชี้ที่เกิดเป็นตัวชี้ที่ติดแท็กบิตร้ายติดแท็กไม่ว่าจะเป็นตัวชี้ทางตรงหรือทางอ้อมชี้ การดูแลเป็นสิ่งจำเป็นเพื่อให้แน่ใจว่าห่วงโซ่ที่อยู่ทางอ้อมไม่ได้หมายถึงตัวเอง; ถ้าไม่หนึ่งจะได้รับวง จำกัดในขณะที่พยายามที่จะแก้ปัญหาที่อยู่
IBM 1620 , ข้อมูลทั่วไปโนวา , HP 2,100ชุดและNAR 2แต่ละคนมีหน่วยความจำดังกล่าวมีหลายระดับทางอ้อมและสามารถเข้าสู่วงเช่นการคำนวณที่อยู่ไม่มีที่สิ้นสุด หน่วยความจำโหมดทางอ้อมต่อโนวาได้รับอิทธิพลการประดิษฐ์ของรหัสเกลียวอ้อม.
ธันวาคมPDP-10เครื่องคอมพิวเตอร์ที่มีที่อยู่ 18 บิตและคำ 36 บิตได้รับอนุญาตหลายระดับทางอ้อมที่อยู่กับความเป็นไปได้ของการใช้ดัชนีลงทะเบียนในแต่ละขั้นตอนเป็นอย่างดี
ลงทะเบียนหน่วยความจำที่แมป
คอมพิวเตอร์บางเครื่องลงทะเบียนได้รับการยกย่องว่าเป็นผู้แรกที่ 8 หรือ 16 คำพูดของหน่วยความจำ (เช่นICL 1900 , ธันวาคม PDP-10) นั่นหมายความว่ามีความจำเป็นที่จะต้องแยกจากกัน "เพิ่มลงทะเบียนเพื่อลงทะเบียน" การเรียนการสอนไม่มี - หนึ่งก็สามารถใช้ "เพิ่มหน่วยความจำที่จะลงทะเบียน" การเรียนการสอน
ในกรณีที่รุ่นแรกของ PDP-10 ซึ่งไม่ได้มีหน่วยความจำแคชใด ๆ ภายในวงแน่นโหลดลงในคำไม่กี่คำแรกของหน่วยความจำ (ที่ลงทะเบียนอย่างรวดเร็วเป็นที่ตั้งได้หากติดตั้ง) วิ่งได้เร็วกว่าก็จะมีใน หน่วยความจำแกนแม่เหล็ก
รุ่นต่อมาของธันวาคมPDP-11ชุดแมปลงทะเบียนไปยังที่อยู่ในพื้นที่เข้า / ส่งออก แต่นี่คือวัตถุประสงค์หลักเพื่อให้การวินิจฉัยระยะไกล พลุกพล่าน 16 บิตลงทะเบียนถูกแมปไปยังที่อยู่ไบต์ 8 บิตที่ต่อเนื่องกัน
หน่วยความจำทางอ้อมและ Autoincrement
ธันวาคมPDP-8มินิคอมพิวเตอร์มีแปดสถานที่พิเศษ (ตามที่อยู่ที่ 8 ถึง 15) เมื่อเข้าถึงได้ผ่านทางหน่วยความจำทางอ้อมที่อยู่, สถานที่เหล่านี้จะเพิ่มขึ้นโดยอัตโนมัติหลังจากการใช้งาน[ 12 ]นี้ทำให้มันง่ายที่จะก้าวผ่านความทรงจำในวงโดยไม่จำเป็นต้องใช้การลงทะเบียนใด ๆ ที่จะจัดการขั้นตอนที่
ข้อมูลทั่วไปโนวามินิคอมพิวเตอร์มี 16 ตำแหน่งหน่วยความจำพิเศษที่อยู่ 16 ถึง 31 [ 13 ]เมื่อเข้าถึงได้ผ่านทางหน่วยความจำทางอ้อมที่อยู่, 16 ถึง 23 จะเพิ่มขึ้นโดยอัตโนมัติก่อนใช้และ 24 ถึง 31 จะพร่องโดยอัตโนมัติก่อนการใช้งาน
หน้าศูนย์
ข้อมูลทั่วไปโนวา , โมโตโรล่า 6800ในครอบครัวและเทคโนโลยี MOS 6502ครอบครัวของตัวประมวลผลเป็นชุดของหน่วยประมวลผลที่มีการลงทะเบียนภายในน้อยมาก คำแนะนำทางคณิตศาสตร์และตรรกะส่วนใหญ่ได้รับการดำเนินการกับค่าในหน่วยความจำเมื่อเทียบกับการลงทะเบียนภายใน เป็นผลให้คำแนะนำที่จำเป็นในหลายสถานที่สองไบต์ (16 บิต) หน่วยความจำ ระบุว่า opcodes บนตัวประมวลผลเหล่านี้เป็นเพียงหนึ่งไบต์ (8 บิต) ในระยะเวลาที่อยู่ในหน่วยความจำจะทำให้ขึ้นเป็นส่วนสำคัญของรหัสขนาด
นักออกแบบของตัวประมวลผลเหล่านี้รวมถึงการรักษาบางส่วนที่เรียกว่า "ศูนย์หน้า" ที่อยู่ เริ่มต้น 256 ไบต์ของหน่วยความจำ ($ 0,000 - $ 00FF; aka, หน้า "0") สามารถเข้าถึงได้โดยใช้หน่วยความจำที่อยู่แน่นอนหรือการจัดทำดัชนีหนึ่งไบต์เวลาการดำเนินการเรียนการสอนนี้ลดลงโดยหนึ่งรอบสัญญาณนาฬิกาและการเรียนการสอนมีความยาวโดยหนึ่งไบต์ โดยการจัดเก็บข้อมูลที่มักจะนำมาใช้ในภูมิภาคนี้โปรแกรมอาจจะทำให้มีขนาดเล็กลงและเร็วขึ้น
เป็นผลให้ศูนย์หน้าถูกนำมาใช้เช่นเดียวกับไฟล์ลงทะเบียน ในระบบจำนวนมาก แต่นี้ส่งผลให้อัตราการใช้สูงของพื้นที่หน่วยความจำหน้าศูนย์โดยระบบปฏิบัติการและโปรแกรมที่ใช้งานซึ่ง จำกัด การใช้งานตั้งแต่พื้นที่ว่างถูก จำกัด
หน้าโดยตรง
โหมดที่อยู่หน้าศูนย์ได้รับการปรับปรุงในรูปแบบปลายโปรเซสเซอร์ 8 บิตรวมทั้งWDC 65816 , CSG 65CE02และโมโตโรล่า 6809 . โหมดใหม่ที่เรียกว่าหน้า "โดยตรง" ที่อยู่, เพิ่มความสามารถในการย้าย 256 หน้าต่างไบต์หน่วยความจำหน้าศูนย์จากจุดเริ่มต้นของหน่วยความจำ (ชดเชยที่ $ 0,000) ไปยังตำแหน่งใหม่ในครั้งแรก 64 กิโลไบต์ของหน่วยความจำ
CSG 65CE02 ได้รับอนุญาตให้หน้าโดยตรงที่จะย้ายไปอยู่ที่ใดขอบเขต 256 ไบต์ภายใน 64 กิโลไบต์แรกของหน่วยความจำโดยการเก็บค่าชดเชย 8 บิตในหน้าฐานใหม่ (B) ลงทะเบียน โมโตโรล่า 6809 สามารถทำเช่นเดียวกันกับที่หน้าโดยตรง (DP) ลงทะเบียน WDC 65816 ไปขั้นตอนต่อไปและได้รับอนุญาตหน้าโดยตรงที่จะย้ายไปยังสถานที่ใด ๆ ภายใน 64 กิโลไบต์แรกของหน่วยความจำโดยการเก็บ 16 บิตค่าชดเชยในโดยตรง (D) ลงทะเบียนใหม่
เป็นผลให้จำนวนมากของโปรแกรมก็สามารถที่จะใช้หน้าโดยตรงเพิ่มขึ้นเมื่อเทียบกับที่อยู่โหมดมรดกโปรเซสเซอร์ที่มีเพียงหน้าศูนย์โหมด
ดัชนีปรับที่มีขอบเขตการตรวจสอบ
นี้จะคล้ายกับดัชนีปรับที่อยู่ยกเว้นว่าการเรียนการสอนที่มีสองตัวถูกดำเนินการเป็นพิเศษ (โดยทั่วไปคงที่) และการตรวจสอบฮาร์ดแวร์ที่ค่าดัชนีอยู่ระหว่างขอบเขตเหล่านี้
รูปแบบหนึ่งที่ใช้อธิบายเวกเตอร์ที่จะถือขอบเขต; นี้จะทำให้มันง่ายต่อการใช้อาร์เรย์จัดสรรแบบไดนามิกและยังคงมีขอบเขตเต็มรูปแบบการตรวจสอบ
ลงทะเบียนทางอ้อมเพื่อไบต์ภายในคำ
ธันวาคมPDP-10ใช้คอมพิวเตอร์36 บิตคำ มันมีโหมดพิเศษที่ได้รับอนุญาตให้หน่วยความจำที่จะได้รับการปฏิบัติเป็นลำดับของไบต์ (ไบต์อาจจะมีขนาดใด ๆ จาก 1 บิตถึง 36 บิต) อธิบายลำดับหนึ่งคำถืออยู่ในปัจจุบันคำที่อยู่ในลำดับที่ตำแหน่งบิตในคำและขนาดของแต่ละไบต์
คำแนะนำในการดำรงอยู่ในการโหลดและการจัดเก็บไบต์ผ่านอธิบายนี้และเพื่อเพิ่มบ่งชี้ที่ไบต์ถัดไป (ไบต์ที่ไม่ได้แยกข้ามขอบเขตของคำ) ซอฟแวร์ที่ใช้มากธันวาคมห้าไบต์ 7 บิตต่อคำ (อักขระ ASCII ธรรมดา), มีหนึ่งบิตต่อคำที่ไม่ได้ใช้ การใช้งานของCต้องใช้สี่ไบต์ 9 บิตต่อคำตั้งแต่ 'malloc' ฟังก์ชั่นใน C สันนิษฐานว่าขนาดของintเป็นหลายขนาดของบางถ่าน ;หลายที่เกิดขึ้นจริงจะถูกกำหนดโดยระบบ -dependent เวลารวบรวมผู้ประกอบการsizeof .
ดัชนีการเรียนการสอนต่อไป
เอลเลียต 503 , เอลเลียต 803 และอพอลโลแนะแนวคอมพิวเตอร์เพียงใช้แน่นอนอยู่และไม่ได้มีการลงทะเบียนดัชนีใด ๆ ดังนั้นกระโดดอ้อมหรือกระโดดผ่านการลงทะเบียนยังไม่ได้รับการสนับสนุนในชุดคำสั่ง แต่มันอาจจะได้รับคำสั่งให้เพิ่มเนื้อหาของคำหน่วยความจำในปัจจุบันเพื่อการเรียนการสอนต่อไป . การเพิ่มค่าขนาดเล็กเพื่อการเรียนการสอนต่อไปที่จะดำเนินการได้เช่นเปลี่ยน
JUMP 0
ในJUMP 20
จึงสร้างผลกระทบของการจัดทำดัชนีกระโดด โปรดทราบว่าการเรียนการสอนมีการแก้ไขในทันทีและยังคงไม่เปลี่ยนแปลงในความทรงจำคือมันไม่ได้รหัสตัวเองปรับเปลี่ยน . ถ้าค่าที่เพิ่มเข้ามาเพื่อการเรียนการสอนต่อไปมีขนาดใหญ่พอที่จะสามารถปรับเปลี่ยน opcode การเรียนการสอนที่เป็นหรือแทนของที่อยู่****มีต่ออีก****
อ้างอิง
http://en.wikipedia.org/wiki/64-bit_computing
http://en.wikipedia.org/wiki/Athlon_64
http://en.wikipedia.org/wiki/X86-64
http://en.wikipedia.org/wiki/Itanium
เพิ่มเติม
http://en.wikipedia.org/wiki/Instruction_sethttp://www.plantation-productions.com/Webster/www.artofasm.com/Linux/HTML/ISA.html
http://minnie.tuhs.org/CompArch/Lectures/week03.html
http://en.wikipedia.org/wiki/Addressing_mode
VL
ตอบลบ