วันพฤหัสบดีที่ 31 กรกฎาคม พ.ศ. 2557


ซีพียู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หน่วยประมวลผล


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-ตามระบบบนชิป


64 บิตระยะเวลาที่ระบบปฏิบัติการ
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 บิต รูปแบบการกระจายแหล่งที่มานี้ตามด้วยการเน้นออกบ่อยทำให้ความพร้อมของซอฟแวร์แอพลิเคชันสำหรับระบบปฏิบัติการที่น้อยของปัญหา

รุ่น 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 บิต
64 บิตรูปแบบข้อมูล
รูปแบบข้อมูลสั้น (จำนวนเต็ม)intยาว (จำนวนเต็ม)นานนานตัวชี้ /
size_t
ระบบปฏิบัติการตัวอย่าง
LLP64 /
IL32P64
1632326464Microsoft Windows (x86-64 และ IA-64)
LP64 /
I32LP64
1632646464ส่วนใหญ่UnixและUnix เหมือนระบบเช่นSolaris , Linux , BSDและOS X ; z / OS
ILP641664646464HAL ระบบคอมพิวเตอร์พอร์ตของ Solaris เพื่อSPARC64
SILP646464646464"คลาสสิก" 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แล็ปท็อป
ที่มีชื่อรหัสแกนวันที่ออกที่มีชื่อรหัสแกนวันที่ออก
Athlon 64 โลโก้เป็นของปี 2003ClawHammer
นิวคาสเซิ
วินเชสเตอร์
เวนิซ
แมนเชสเตอร์ *
ซานดิเอโก
โตเลโด *
130 นาโนเมตร
130 นาโนเมตร
90 นาโนเมตร
90 นาโนเมตร
90 นาโนเมตร
90 นาโนเมตร
90 นาโนเมตร
ธันวาคม 2003
ธันวาคม 2003
ตุลาคม 2004
เมษายน 2005
พฤษภาคม 2005
พฤษภาคม 2005
พฤษภาคม 2005
Athlon 64 โลโก้มือถือเป็นของปี 2003ClawHammer
โอเดสซา
โอก
นิวอาร์
130 นาโนเมตร
130 นาโนเมตร
90 นาโนเมตร
90 นาโนเมตร
ธันวาคม 2003
กุมภาพันธ์ 2004
สิงหาคม 2004
เมษายน 2005
Athlon 64 FX โลโก้เป็นของปี 2003ค้อน
ClawHammer
ซานดิเอโก
130 นาโนเมตร
130 นาโนเมตร
90 นาโนเมตร
กันยายน 2003
มิถุนายน 2004
มิถุนายน 2005
Athlon 64 โลโก้เหมือน 2008ออ
ลิมา
65 นาโนเมตร
65 นาโนเมตร
กุมภาพันธ์ 2007
พฤษภาคม 2007
โลโก้ Athlon Neo เหมือน 2008ฮูรอน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 สำหรับหน่วยความจำระบบฐานความเร็วของมันเมื่อไม่มีแต่ความเร็วหน่วยความจำระบบจะได้รับโดยใช้สูตรต่อไปนี้ (โดยใช้ฟังก์ชั่นเพดาน ):
\frac{\mathrm{CPU~speed}}{\left\lceil\frac{\mathrm{CPU~multiplier}}{\mathrm{DRAM~divider}}\right\rceil}=\mathrm{DRAM~speed}
ในแง่ง่ายหน่วยความจำจะเคยท​​ำงานในส่วนการตั้งค่าของความเร็วซีพียูที่มีตัวหารเป็นจำนวนทั้งหมด รูป 'เอฟเอ' ยังคงใช้ในการกำหนดความเร็วของ 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

รุ่น MT-34

MT-34 (ล่าง)
     การแนะนำให้รู้จักก่อนหน้านี้เป็น "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

ซ็อกเก็ต

      ที่แนะนำของ 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
KL Intel Itanium2.jpg
Itanium 2 หน่วยประมวลผล
ผลิตจากช่วงกลางปี​​ 2001 ที่จะนำเสนอ
ผู้ผลิตที่พบบ่อย (s)
  • อินเทล
แม็กซ์ซีพียู อัตรานาฬิกา733 MHz ถึง 2.53 GHz
FSBความเร็ว300 MHz ถึง 667 MHz
ชุดคำสั่งItanium
แกน1, 2, 4 หรือ 8
       Itanium ( aɪ เสื้อeɪ ฉันə เมตร / 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พวกเขาจะไม่สามารถใช้ได้อีก

ประวัติ


Itanium เซิร์ฟเวอร์ขายประวัติศาสตร์คาดการณ์[ 17 ] [ 18 ]

พวงกุญแจจาก Compaq คำถามมูลค่าของไอเทเนียม (ด้านอื่น ๆ กล่าวว่า "CALIFORNIA - Y W8 4 HP - การย้ายถิ่นของรัฐ") ก่อนที่จะปรับตัว Compaq Itanium สำหรับเซิร์ฟเวอร์ของตน

การพัฒนา: 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 

Itanium (เมอร์เซด)
KL Intel Itanium ES.jpg
หน่วยประมวลผลไอเทเนียม
ผลิตตั้งแต่เดือนมิถุนายนปี 2001 ถึงมิถุนายน 2002
ผู้ผลิตที่พบบ่อย (s)
  • อินเทล
แม็กซ์ซีพียู อัตรานาฬิกา733 MHz ถึง 800 MHz
FSBความเร็ว266 MT / s ที่
ชุดคำสั่งItanium
แกน1
แคช L296 กิโลไบต์
แคช L32 หรือ 4 MB
ซ็อกเก็ต (s)
  • PAC418
ชื่อแกน (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 หน่วยประมวลผลในการทำตลาดในปีต่อมา
โปรเซสเซอร์ตระกูลไอเทเนียม
2001 โลโก้ Itanium2002 Itanium 2 โลโก้2006 Itanium 2 โลโก้2008 รูปแบบ Itanium2009 Itanium โลโก้
1 มิถุนายน 2001 - 20062002-2006 / รุ่น 22006-2010 / รุ่น 22006-20102009-2011

Itanium ที่ 2: 2002-2010 

Itanium 2 (McKinley)
KL Intel Itanium2.jpg
Itanium 2 หน่วยประมวลผล
ผลิตจาก 2002-2010
ออกแบบโดยอินเทล
ผู้ผลิตที่พบบ่อย (s)
  • อินเทล
แม็กซ์ซีพียูอัตรานาฬิกา900 MHz ถึง 2.53 GHz
ชุดคำสั่งItanium
แกน1, 2, 4 หรือ 8
แคช L2256 กิโลไบต์ใน Itanium2
256 กิโลไบต์ (D) + 1 MB (I) หรือ 512 กิโลไบต์ (I) ใน (ชุด Itanium2 9x00)
แคช L31.5-32 ล้านบาท
ซ็อกเก็ต (s)
ชื่อแกน (s)
  • McKinley
  • เมดิสัน
  • ฮอนดา
  • เดียร์ฟิลด์
  • มอนเตซิโต
  • Montvale
  • วิลลา
  • Poulson

Itanium 2 ในปี 2003
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 
รุ่นที่: 
จำนวนหน่วยประมวลผลความถี่
95201.73 GHz
95402.13 GHz
95502.4 GHz
95602.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 ผู้ผลิตเซิร์ฟเวอร์
บริษัทผลิตภัณฑ์ใหม่ล่าสุด
ชื่อจากที่จะชื่อซีพียู
Compaq20012001ProLiant 5901-4
ไอบีเอ็ม20012005x4551-16
Dell20012005PowerEdge 72501-4
ฮิตาชิ20012008Bladesymphony
1000
1-8
Unisys20022009ES7000 / หนึ่ง1-32
SGI20012011Altix 40001-2048
ฟูจิตสึ20052011PRIMEQUEST1-32
เอชพี2001ตอนนี้ความสมบูรณ์1-256
กระทิง2002ตอนนี้NovaScale 94101-32
เอ็นอีซี2002ตอนนี้nx7700i1-256
Inspur2010ตอนนี้TS100002-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 ได้รับการสนับสนุนโดยต่อไปนี้ระบบปฏิบัติการ :
Itanium ยังได้รับการสนับสนุนโดยระบบปฏิบัติการเหล่านี้:

      ไมโครซอฟท์ประกาศว่า 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ระบบปฏิบัติการที่ผ่านการเรียนการสอนชุดจำลอง .


การแข่งขัน
      Itanium มุ่งเป้าไปที่เซิร์ฟเวอร์ขององค์กรและการใช้งานคอมพิวเตอร์ที่มีประสิทธิภาพสูง (HPC) ตลาด Enterprise- และ HPC ที่มุ่งเน้นอื่น ๆ สายประมวลผลรวมถึงบริษัท ออราเคิลคอร์ปอเรชั่นของSPARC T5และM6 , ฟูจิตสึของSPARC64 X +และIBMของPOWER8 . วัดจากปริมาณการขาย, การแข่งขันที่รุนแรงมากที่สุด Itanium มาจากx86-64ประมวลผลรวมทั้งIntelของตัวเองXeon line และเอเอ็มดีของOpteronสาย 2009 ขณะที่เซิร์ฟเวอร์ส่วนใหญ่ถูกมาพร้อมกับหน่วยประมวลผล x86-64 
ในปี 2005 ระบบ Itanium คิดเป็นประมาณ 14% ของรายได้จากระบบ HPC แต่ร้อยละลดลงในขณะที่การเปลี่ยนแปลงอุตสาหกรรมเพื่อ x86-64 กลุ่มสำหรับโปรแกรมนี้
ตุลาคม 2008 กระดาษโดย Gartner ในการประมวลผลวิลลากล่าวว่า "... แผนงานในอนาคตสำหรับ Itanium มีลักษณะแข็งแรงเท่าที่ใดมีเพียร์ริสก์เช่นพลังงานหรือ SPARC". 

ซูเปอร์คอมพิวเตอร์และระบบคอมพิวเตอร์สมรรถนะสูง


แผนภูมิพื้นที่แสดงเป็นตัวแทนของครอบครัวที่แตกต่างกันของไมโครโปรเซสเซอร์ในTOP500การจัดอันดับรายชื่อของซูเปอร์คอมพิวเตอร์ , 1993-2013
       คอมพิวเตอร์ที่ใช้ 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-06733 MHz96 กิโลไบต์ไม่มี266 MHz111162 MB ปิดตายแคช L3
800 MHz1304 MB ปิดตายแคช L3
Itanium 2
McKinley180 นาโนเมตร2002/07/08900 MHz256 กิโลไบต์1.5 MB400 MHz11130HW branchlong
1 GHz3 MB130
เมดิสัน130 นาโนเมตร2003-06-301.3 GHz3 MB130
1.4 GHz4 MB130
1.5 GHz6 MB130
2003/09/081.4 GHz1.5 MB130
2004-041.4 GHz3 MB130
1.6 GHz
เดียร์ฟิลด์2003/09/081.0 GHz1.5 MB62แรงดันไฟฟ้าต่ำ
ฮอน[ 88 ]2004 ไตรมาส 11.1 GHz4 MB400 MHz2126032 MB L4
Fanwood2004/11/081.6 GHz3 MB533 MHz11130
1.3 GHz400 MHz62?แรงดันไฟฟ้าต่ำ
เมดิสัน2004/11/081.6 GHz9 MB400 MHz130
2005/07/051.67 GHz6 MB667 MHz130
2005-07-181.67 GHz9 MB667 MHz130
Itanium 2 9000 ซีรีส์
มอนเตซิโต90 นาโนเมตร2006-07-181.4 GHz256 กิโลไบต์ (D) +
1 MB (I)
6-24 MB400 MHz12104virtualization, multithread ไม่ HW IA-32
1.6 GHz533 MHz
Itanium 2 9100 ซีรีส์
Montvale90 นาโนเมตร2007-10-311.42-1.66 GHz256 กิโลไบต์ (D) +
1 MB (I)
8-24 MB400-667 MHz11-275-104lockstep หลักระดับความต้องการใช้สลับ
Itanium 9300 ซีรีส์
วิลลา65 นาโนเมตร2010-02-081.33-1.73 GHz256 กิโลไบต์ (D) +
512 กิโลไบต์ (I)
10-24 MBQPI ด้วยความเร็ว 4.8 GT / s ที่12-4130-185การเชื่อมต่อใหม่แบบจุดต่อจุดโปรเซสเซอร์QPIแทนที่เอฟเอส . เทอร์โบ
Itanium ชุด 9500
Poulson32 นาโนเมตร2012/11/08[ 89 ]1.73-2.53 GHz256 กิโลไบต์ (D) +
512 กิโลไบต์ (I)
20-32 MBQPI ด้วยความเร็ว 6.4 GT / s ที่14-8130-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:
    • มิถุนายน: ไอดีซีคาดการณ์ว่ายอดขาย IA-64 ระบบจะถึง $ 38bn / ปี 2001 
    • ตุลาคม: เดลล์ประกาศว่าจะใช้ IA-64
    • ธันวาคมอินเทลและซันประกาศความพยายามร่วมกันเพื่อ Solaris พอร์ต IA-64 
  • 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
    • เมษายน: CentOS ( RHEL -clone) สถานที่สนับสนุน Itanium ไว้ให้ปล่อย 5.0 
    • ตุลาคม: อินเทลเปิดตัว "Montvale" Itanium 2 9100 ซีรีส์
    • พฤศจิกายน: Intel เปลี่ยนชื่อจากครอบครัวItanium 2กลับไปItanium .
  • 2009
    • ธันวาคมหมวกแดงประกาศว่าจะลดลงการสนับสนุนสำหรับ Itanium ในรุ่นต่อไปขององค์กร OS ของ Red Hat Enterprise Linux 6
  • 2010
    • กุมภาพันธ์: อินเทลประกาศ "วิลลา" Itanium 9300 ซีรีส์
    • เมษายน: ไมโครซอฟท์ประกาศเฟสออกจากการสนับสนุนสำหรับ Itanium
    • ตุลาคม: อินเทลประกาศรุ่นใหม่ของอินเทลซี ++ คอมไพเลอร์และIntel Fortran คอมไพเลอร์สำหรับ x86 / x64 ขณะที่การสนับสนุน Itanium จะใช้ได้เฉพาะในรุ่นเก่า
  • 2011
  • ปี 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หรือสตรีมเดียวการเรียนการสอนการดำเนินการหลายข้อมูลสตรีมหรือการเรียนการสอนเวกเตอร์ที่มีการดำเนินงานที่มีประสิทธิภาพการดำเนินการทางคณิตศาสตร์ที่เหมือนกันในหลาย ๆ ชิ้นส่วนของข้อมูลในเวลาเดียวกัน . 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 ในขณะที่โมโตโรล่า 68000รหัสการใช้งานในช่วง A000..AFFF H .
เครื่องเสมือนได้อย่างรวดเร็วมากขึ้นในการดำเนินการในกรณีที่ชุดคำสั่งตรงPopek โกลด์เบิร์กและความต้องการการทำงานแบบเสมือน . 
สไลด์ NOPใช้ในการเขียนโปรแกรมภูมิคุ้มกันรอบรู้เป็นเรื่องง่ายที่จะใช้ถ้ารัฐ "unprogrammed" ของหน่วยความจำจะถูกตีความว่าเป็นนพ . 
บนระบบที่มีโปรเซสเซอร์หลายตัวไม่ปิดกั้นการประสานขั้นตอนวิธีเป็นเรื่องง่ายที่จะใช้ถ้าชุดคำสั่งรวมถึงการสนับสนุนสำหรับบางสิ่งบางอย่างเช่น " เรียกและเพิ่ม "," โหลดลิงค์ / ร้านเงื่อนไข "(LL / SC) หรือ "อะตอมเปรียบเทียบและแลกเปลี่ยน "

การดำเนินการชุดคำสั่ง

ชุดคำสั่งใด ๆ ให้สามารถดำเนินการได้ในหลายวิธี วิธีการทั้งหมดในการดำเนินการเรียนการสอนโดยเฉพาะอย่างยิ่งการตั้งค่าให้เหมือนรูปแบบการเขียนโปรแกรมและการใช้งานทั้งหมดของชุดคำสั่งที่มีความสามารถในการทำงาน executables ไบนารีเดียวกัน รูปแบบต่างๆของการใช้ชุดการเรียนการสอนที่แตกต่างกันให้เกิดความสมดุลระหว่างค่าใช้จ่ายที่มีประสิทธิภาพการใช้พลังงานขนาดและอื่น ๆ
เมื่อมีการออกแบบสถาปัตยกรรมของโปรเซสเซอร์วิศวกรใช้บล็อกของ "ยากสาย" วงจรอิเล็กทรอนิกส์ (การออกแบบมักจะแยกต่างหาก) เช่นวงจรบวก, เคาน์เตอร์ลงทะเบียน ALUs ฯลฯ ชนิดของบางภาษาการโอนทะเบียนเป็นแล้วมักจะใช้ในการอธิบาย การถอดรหัสและการจัดลำดับการเรียนการสอนของแต่ละ ISA โดยใช้สถาปัตยกรรมทางกายภาพนี้ มีสองวิธีพื้นฐานที่จะสร้างเป็นหน่วยควบคุมที่จะใช้คำอธิบายนี้ (แม้ว่าการออกแบบจำนวนมากใช้วิธีการประนีประนอมหรือกลาง):
  1. บางการออกแบบคอมพิวเตอร์ "hardwire" ที่สมบูรณ์ชุดคำสั่งการถอดรหัสและการเรียงลำดับ (เช่นเดียวกับส่วนที่เหลือของสถ​​าปัตยกรรม)
  2. การออกแบบอื่น ๆ ใช้เฟิร์มแวกิจวัตรหรือตาราง (หรือทั้งสอง) การทำเช่นนี้มักจะเป็นบนชิปรอมหรือพลาสหรือทั้งสองอย่าง (แม้ว่า 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 .
  • 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 อนุญาตให้มีความหลากหลายของรูปแบบที่อยู่ที่ให้มากกว่า 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 .


รูปที่ 1 การแยก Opcode เป็นเฉพาะกิจฟิลด์เพื่อความสะดวกในการถอดรหัส
แม้ว่าอินเทลอาจจะไปน้อยลงน้ำกับการออกแบบของเดิม 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 )


รูปที่ 2 การใช้คำแนะนำในการเข้ารหัสตัวแปรความยาว Opcode
แม้ว่าจะใช้คำแนะนำยาวตัวแปรช่วยให้เราสามารถสร้างโปรแกรมขนาดเล็กก็มาในราคา แรกของทุกการถอดรหัสคำแนะนำมีความซับซ้อนมากขึ้นอีกนิดก่อนที่จะถอดรหัสข้อมูลการเรียนการสอนซีพียูต้องถอดรหัสขนาดการเรียนการสอนของ นี้ขั้นตอนพิเศษสิ้นเปลืองเวลาและอาจมีผลต่อประสิทธิภาพโดยรวมของ CPU (โดยการแนะนำความล่าช้าในขั้นตอนการถอดรหัสและจึง จำกัด ความถี่สัญญาณนาฬิกาสูงสุดของ CPU) มีปัญหากับคำแนะนำยาวตัวแปรก็คือว่ามันทำให้การถอดรหัสคำแนะนำหลายในท่อค่อนข้างยาก (เนื่องจากเราไม่สามารถตรวจสอบนิดขอบเขตการเรียนการสอนในคิว prefetch) ด้วยเหตุผลเหล่านี้พร้อมกับคนอื่น ๆ คือเหตุผลที่สถาปัตยกรรม RISC ที่นิยมมากที่สุดคำแนะนำหลีกเลี่ยงการปรับขนาด แต่สำหรับจุดประสงค์ของเราเราจะไปด้วยวิธีการระยะเวลาตัวแปรตั้งแต่ประหยัดหน่วยความจำเป็นเป้าหมายที่น่าชื่นชม
ก่อนที่จริงการเลือกคำแนะนำที่คุณต้องการที่จะใช้ในการทำงานของคุณตอนนี้จะเป็นช่วงเวลาที่ดีในการวางแผนสำหรับอนาคต ไม่ต้องสงสัยคุณจะค้นพบความจำเป็นในการคำสั่งใหม่ที่บางจุดในอนาคตดังนั้นการสำรอง opcodes บางส่วนเฉพาะสำหรับวัตถุประสงค์ที่เป็นความคิดที่ดีจริง ถ้าคุณได้รับการเรียนการสอนโดยใช้การเข้ารหัสที่ปรากฏในภาพที่ 5.2สำหรับรูปแบบ opcode ของคุณก็อาจจะไม่ได้เป็นความคิดที่ดีที่จะสำรองหนึ่งช่วงตึกจาก 64 opcodes หนึ่งไบต์ครึ่ง (4,096) ของคำแนะนำสองไบต์และครึ่งหนึ่ง (1,048,576) ของ opcodes สามไบต์สำหรับใช้ในอนาคต โดยเฉพาะอย่างยิ่งให้ขึ้น 64 ของที่มีค่ามาก opcodes หนึ่งไบต์อาจดูเหมือนฟุ่มเฟือย แต่ประวัติศาสตร์แสดงให้เห็นว่าการคาดการณ์ดังกล่าวเป็นรางวัล
ขั้นตอนต่อไปคือการเลือกคำแนะนำที่คุณต้องการที่จะดำเนินการ ทราบว่าแม้ว่าเราได้ลิขสิทธิ์เกือบครึ่งหนึ่งคำแนะนำสำหรับการขยายตัวในอนาคตเราจะไม่จริงต้องดำเนินการตามคำแนะนำสำหรับทุก opcodes ที่เหลือ เราสามารถเลือกที่จะออกจากหมายเลขที่ดีของคำแนะนำเหล่านี้ unimplemented (และมีประสิทธิภาพสำรองพวกเขาในอนาคตได้เป็นอย่างดี) วิธีการที่เหมาะสมไม่ได้ที่จะเห็นวิธีการอย่างรวดเร็วเราสามารถใช้ขึ้น opcodes ทั้งหมด แต่เพื่อให้แน่ใจว่าเรามีชุดคำสั่งที่สอดคล้องกันและมีความสมบูรณ์ได้รับการประนีประนอมที่เราต้องอยู่กับ (เช่นข้อ จำกัด ของซิลิกอน) จุดหลักที่จะเก็บไว้ในใจที่นี่ก็คือว่ามันง่ายมากที่จะเพิ่มการเรียนการสอนต่อไปกว่านั้นคือการเอาการเรียนการสอนในภายหลัง ดังนั้นสำหรับครั้งแรกที่ไปรอบก็มักจะดีกว่าที่จะไปกับการออกแบบที่เรียบง่ายมากกว่าการออกแบบที่ซับซ้อนมากขึ้น
ขั้นตอนแรกคือการเลือกบางชนิดการเรียนการสอนทั่วไป สำหรับความพยายามครั้งแรกคุณควร จำกัด คำแนะนำเพื่อคำแนะนำที่รู้จักกันดีและบางอย่างร่วมกัน สถานที่ที่ดีที่สุดที่จะช่วยหาในการเลือกคำแนะนำเหล่านี้เป็นชุดคำสั่งในการประมวลผลอื่น ๆ ตัวอย่างเช่นการประมวลผลมากที่สุดที่คุณพบจะมีคำแนะนำดังต่อไปนี้:
คำแนะนำข้อมูลการเคลื่อนไหว (เช่น MOV)
คณิตศาสตร์และตรรกะคำแนะนำ (เช่น ADD, SUB, AND, OR, NOT)
การเปรียบเทียบ
ชุดของคำสั่งกระโดดเงื่อนไข (ใช้โดยทั่วไปหลังจากที่คำแนะนำเปรียบเทียบ)
Input / คำแนะนำเอาท์พุท
คำแนะนำอื่น ๆ อีกจิปาถะ
เป้าหมายของคุณเป็นนักออกแบบของชุดคำสั่งของ 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)
เพื่อส่งเสริมการสนทนานี้เราต้องทำงานกับตัวอย่าง ดังนั้นส่วนถัดไปจะผ่านกระบวนการของการออกแบบการเรียนการสอนที่ง่ายมากตั้งเป็นวิธีการแสดงให้เห็นถึงขั้นตอนนี้
Y86 ประมวลผลสมมุติ
เพราะของการปรับปรุงที่เกิดขึ้นกับโปรเซสเซอร์ตระกูล 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 เป็นจริงสองชั้นเรียนการเรียนการสอนรวมเข้าไปในการเรียนการสอนเหมือนกัน สองรูปแบบของการเรียนการสอนการเคลื่อนไหวใช้รูปแบบดังต่อไปนี้
MOV (reg / หน่วยความจำ / reg คงที่);
MOV (reg, หน่วยความจำ);
ที่regใด ๆ ของขวาน, BX, CX หรือ DX; คงที่เป็นค่าคงที่ที่เป็นตัวเลข (โดยใช้เลขฐานสิบหก) และหน่วยความจำตัวถูกดำเนินการระบุตำแหน่งหน่วยความจำ ส่วนถัดไปจะอธิบายถึงรูปแบบที่เป็นไปได้ถูกดำเนินการหน่วยความจำสามารถใช้ "reg / หน่วยความจำ / คงที่" ตัวถูกดำเนินการจะบอกคุณว่าถูกดำเนินการนี้โดยเฉพาะอาจจะมีการลงทะเบียนที่ตั้งหน่วยความจำหรือคงที่
คำแนะนำทางคณิตศาสตร์และตรรกะใช้รูปแบบดังต่อไปนี้
เพิ่ม (reg / หน่วยความจำ / reg คงที่);
sub (reg / หน่วยความจำ / reg คงที่);
cmp (reg / หน่วยความจำ / คง reg);
และ (reg / หน่วยความจำ / reg คงที่);
หรือ (reg / หน่วยความจำ / reg คงที่);
ไม่ได้ (reg / หน่วยความจำ);
หมายเหตุ: การเรียนการสอนไม่ปรากฏแยกกันเพราะมันอยู่ในระดับที่แตกต่างกว่าคำแนะนำทางคณิตศาสตร์อื่น ๆ (เพราะมันสนับสนุนเฉพาะถูกดำเนินการเดี่ยว)
คําสั่ง ADD เพิ่มมูลค่าของตัวถูกดำเนินการครั้งแรกที่สอง (ลงทะเบียน) ตัวถูกดำเนินการออกจากผลรวมในที่สอง (ลงทะเบียน) ตัวถูกดำเนินการ คําสั่ง SUB ลบค่าของตัวถูกดำเนินการเป็นครั้งแรกจากที่สองออกจากความแตกต่างในตัวถูกดำเนินการที่สอง การเรียนการสอน CMP เปรียบเทียบตัวถูกดำเนินการครั้งแรกกับครั้งที่สองและบันทึกผลของการเปรียบเทียบนี้เพื่อใช้งานกับหนึ่งในคำแนะนำกระโดดเงื่อนไข (อธิบายไว้ในช่วงเวลา) AND และคำแนะนำหรือคำนวณค่าที่เหมาะสมดำเนินการตรรกะที่ตรงกันทั้งสองตัวถูกดำเนินการและจัดเก็บผลในตัวถูกดำเนินการเป็นครั้งแรก การเรียนการสอนไม่ได้ตีความบิตในหน่วยความจำเดียวหรือลงทะเบียนถูกดำเนินการ
คำแนะนำการถ่ายโอนการควบคุมขัดขวางการดำเนินการลำดับของคำสั่งในหน่วยความจำและการควบคุมการถ่ายโอนไปยังจุดอื่น ๆ ในหน่วยความจำอย่างใดอย่างหนึ่งโดยไม่มีเงื่อนไขหรือหลังจากการทดสอบผลของคำสั่งก่อนหน้านี้ซีเอ็มพี คำแนะนำเหล่านี้รวมถึงต่อไปนี้:
จา Dest; - กระโดดถ้าข้างต้น (เช่นมากกว่า)
แจปลายทาง; - กระโดดถ้าข้างต้นหรือเท่ากับ (คือมากกว่าหรือเท่ากับ)
JB Dest; - กระโดดหากราคาต่ำกว่า (เช่นน้อยกว่า)
JBE Dest; - กระโดดหากราคาต่ำกว่าหรือเท่ากับ (คือน้อยกว่าหรือเท่ากับ)
เจ๊ปลายทาง; - กระโดดถ้าเท่ากัน
ฯลฯ Dest; - กระโดดถ้าไม่เท่ากัน
JMP Dest; - กระโดดไม่มีเงื่อนไข
IRET; - อัตราผลตอบแทนจากการขัดจังหวะ
คำแนะนำแรกที่หกให้คุณตรวจสอบผลการเรียนการสอนของซีเอ็มพีก่อนหน้านี้นานกว่า, มากกว่าหรือเท่ากับน้อยกว่าน้อยกว่าหรือเท่ากับความเสมอภาคหรือความไม่เท่าเทียมกัน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 , ทันทีโหมด, อ้อมโหมด, การจัดทำดัชนีโหมดและตรงโหมด ย่อหน้าต่อไปนี้อธิบายแต่ละโหมดเหล่านี้
ตัวถูกดำเนินการลงทะเบียนเป็นที่ง่ายที่สุดที่จะเข้าใจ พิจารณารูปแบบการเรียนการสอนต่อไปนี้ MOV:
MOV (ขวานขวาน);
MOV (BX ขวาน);
MOV (CX, ขวาน);
MOV (DX ขวาน);
การเรียนการสอนครั้งแรกสำเร็จไม่มีอะไรแน่นอน เป็นชุดค่าจากขวานลงทะเบียนกลับเข้าไปในขวานลงทะเบียน ที่เหลืออีกสามคำแนะนำคัดลอกค่าของ BX, CX และ DX เป็นขวาน ทราบว่าคำแนะนำเหล่านี้ออกจาก BX, CX, และ DX ไม่เปลี่ยนแปลง ตัวถูกดำเนินการที่สอง (ปลายทาง) ไม่ได้ จำกัด อยู่ที่ขวาน; คุณสามารถย้ายค่าใด ๆ ของการลงทะเบียนเหล่านี้
นอกจากนี้ยังมีค่าคงที่สวยง่ายที่จะจัดการกับ พิจารณาคำแนะนำดังต่อไปนี้
MOV (25 ขวาน);
MOV (195 BX);
MOV (2056, CX);
MOV (1000 DX);
คำแนะนำเหล่านี้เป็นสิ่งที่ตรงไปตรงสวย; พวกเขาโหลดลงทะเบียนของตนมีค่าคงที่เลขฐานสิบหกที่ระบุ8 .
มีสามโหมดที่อยู่ที่เกี่ยวข้องกับการเข้าถึงข้อมูลในหน่วยความจำ คำแนะนำต่อไปนี้แสดงให้เห็นถึงการใช้โหมดเหล่านี้ที่อยู่:
MOV ([1000], ขวาน);
MOV ([BX] ขวาน);
MOV ([1000 + BX] ขวาน);
การเรียนการสอนครั้งแรกที่ด้านบนใช้โหมดโดยตรงในการโหลดขวานมีค่า 16 บิตที่เก็บไว้ในหน่วยความจำเริ่มต้นที่สถานที่ตั้ง $ 1,000
"การเคลื่อนไหว ([BX] ขวาน);" การเรียนการสอนโหลดขวานจากที่ตั้งหน่วยความจำที่ระบุโดยเนื้อหาของ BX ลงทะเบียน นี้เป็นโหมดที่อยู่ทางอ้อมแทนที่จะใช้ค่าใน BX คำแนะนำนี้เข้าถึงตำแหน่งหน่วยความจำที่มีอยู่ปรากฏใน BX โปรดทราบว่าต่อไปนี้สองคำแนะนำ:
MOV (1000, BX);
MOV ([BX] ขวาน);
เทียบเท่ากับคำสั่งเดียว:
MOV ([1000], ขวาน);
แน่นอนลำดับที่สองเป็นที่นิยม แต่มีหลายกรณีที่การใช้ความร้ายเร็วสั้นกว่าและดีกว่า เราจะเห็นตัวอย่างบางส่วนของเล็ก ๆ น้อย ๆ ในภายหลัง
โหมดหน่วยความจำที่ผ่านมาที่อยู่มีการจัดทำดัชนีโหมด ตัวอย่างของหน่วยความจำนี้โหมดเป็น
MOV ([1000 + 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 การขยายตัวนี้ไม่นาน


รูปที่ 3 การเรียนการสอนขั้นพื้นฐาน Y86 การเข้ารหัส
เพื่อตรวจสอบ 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 .


รูปที่ 5.4 โสดถูกดำเนินการเข้ารหัสการเรียนการสอน


รูปที่5 การเข้ารหัสถูกดำเนินการเป็นศูนย์การเรียนการสอน
มีสี่หนึ่งตัวถูกดำเนินการเรียนการสอนมี การเข้ารหัสแรก (00) ต่อขยายชุดคำสั่งที่มีชุดคำสั่งศูนย์ตัวถูกดำเนินการ (ดูรูปที่ 5 ) opcode ที่สองยังเป็น opcode การขยายตัวที่ให้ทุก Y86 กระโดดคำแนะนำ (ดูรูปที่ 5.6 ) opcode ที่สามคือการเรียนการสอนไม่ได้ นี้เป็นบิตตรรกะการดำเนินงานไม่ว่าตีความบิตทั้งหมดในการลงทะเบียนปลายทางหรือหน่วยความจำตัวถูกดำเนินการ สี่ opcode เดียวที่ไม่ได้กำหนดเป็นตัวถูกดำเนินการอยู่ในปัจจุบัน ความพยายามที่จะดำเนินการ opcode นี้ใด ๆ ที่จะหยุดการประมวลผลที่มีข้อผิดพลาดการเรียนการสอนที่ผิดกฎหมาย นักออกแบบซีพียูมักจะสงวน opcodes ที่ไม่ได้กำหนดอย่างหนึ่งในการขยายชุดคำสั่งวันที่ในอนาคต (ที่อินเทลได้เมื่อย้ายจากหน่วยประมวลผล 80286 ถึง 80386) นี้


รูปที่ 6 กระโดดการเข้ารหัสการเรียนการสอน
มีเจ็ดคำแนะนำกระโดดในชุดคำสั่ง x86 เป็น พวกเขาทั้งหมดจะใช้รูปแบบต่อไปนี้
JXX ที่อยู่ ;
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.7 การเข้ารหัส ADD (CX, DX);
ตอนนี้พิจารณา "เพิ่ม (5, ขวาน);" การเรียนการสอน ตั้งแต่การเรียนการสอนนี้มีแหล่งที่มาถูกดำเนินการทันทีฟิลด์ mmm จะ% 111 ตัวถูกดำเนินการลงทะเบียนปลายทางขวาน (00%) ดังนั้น opcode เต็มกลายเป็น 10,100,111 $ หรือ $ A7 อย่างไรก็ตามโปรดทราบว่านี้ไม่ได้ดำเนินการเข้ารหัสของการเรียนการสอน นอกจากนี้เรายังต้องรวมถึง 16 บิตคงที่ $ 0005 เป็นส่วนหนึ่งของการเรียนการสอน เข้ารหัสไบนารีคงต้องปฏิบัติตามทันที opcode ในหน่วยความจำเพื่อให้ลำดับของไบต์ในหน่วยความจำ (จากที่อยู่ที่ต่ำไปยังที่อยู่ที่สูงที่สุด) คือ $ A7, $ 05, $ 00 ทราบว่าไบต์ LO คงดังต่อไปนี้ opcode และไบต์ HO คงดังต่อไปนี้ไบต์ LO ลำดับนี้จะปรากฏขึ้นหลังเพราะไบต์ที่ถูกจัดอยู่ในลำดับที่อยู่ของการเพิ่มหน่วยความจำและไบต์ HO คงที่จะปรากฏในที่อยู่หน่วยความจำสูงสุด


รูปที่ 8 การเข้ารหัส ADD (5, ขวาน);
"เพิ่ม ([2FF + BX], CX);" นอกจากนี้ยังมีการเรียนการสอนอย่างต่อเนื่อง 16 บิตที่เกี่ยวข้องกับการเข้ารหัสการเรียนการสอนของ - ส่วนการกำจัดของโหมดการจัดทำดัชนี การเข้ารหัสการเรียนการสอนนี้เราจะใช้ค่าฟิลด์ต่อไปนี้: iii =% 101, RR = 10% และmmm = 101% นี้ผลิต opcode ไบต์% 10110101 หรือ $ B5 การเรียนการสอนที่สมบูรณ์ยังต้องคงที่ $ 2FF เพื่อให้การเรียนการสอนเต็มรูปแบบสามไบต์ลำดับ $ B5, $ FF, $ 02


รูปที่ 5.9 การเข้ารหัส ADD ([$ 2FF + BX], CX);
ตอนนี้พิจารณา "เพิ่ม ([1000], ขวาน);" การเรียนการสอน การเรียนการสอนนี้จะเพิ่มเนื้อหา 16 บิตของหน่วยความจำสถานที่ $ 1,000 และ $ 1,001 มูลค่าในขวานลงทะเบียน อีกครั้งiii = 101% สำหรับการเรียนการสอนเพิ่ม ลงทะเบียนปลายทางคือขวานเพื่อRR = 00% สุดท้ายโหมดเป็นรางเดียวโหมดดังนั้นmmm = 110% นี้เป็น opcode% 10100110 หรือ $ A6 การเรียนการสอนเป็นสามไบต์นานเพราะมันต้องเข้ารหัสราง (ที่อยู่) ของสถานที่ตั้งหน่วยความจำในไบต์ที่สองต่อไปนี้ opcode ดังนั้นที่สมบูรณ์ลำดับสามไบต์เป็น $ A6, $ 00, $ 10


รูปที่ 10 การเข้ารหัส ADD ([1000], ขวาน);
โหมดสุดท้ายที่ต้องพิจารณาคือการลงทะเบียนโหมดทางอ้อม [BX] "เพิ่ม ([BX], BX);" การเรียนการสอนจะใช้ค่าการเข้ารหัสต่อไปนี้: mmm =% 101, RR = 01% (BX) และmmm = 100% ([BX]) ตั้งแต่ค่าใน BX ลงทะเบียนอย่างสมบูรณ์ระบุที่อยู่หน่วยความจำที่มีความจำเป็นในด้านการกำจัดไม่มี ดังนั้นการเรียนการสอนนี้เป็นเพียงหนึ่งไบต์นาน


รูปที่ 5.11 การเข้ารหัส ADD ([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


รูปที่ 12 การเข้ารหัสไม่ (ขวาน); การเรียนการสอน
การเรียนการสอนไม่ไม่อนุญาตให้ทันที (คงที่) ตัวถูกดำเนินการจึง 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') การติดฉลากในงบคุณก็บทการเรียนการสอนที่มีฉลากและลำไส้ใหญ่เช่น
L: MOV (0, ขวาน);
ในการถ่ายโอนการควบคุมไปยังคำสั่งที่มีป้ายชื่อติดอยู่กับมัน, คุณเพียงแค่ระบุชื่อป้ายเป็นตัวถูกดำเนินการเรียนการสอนกระโดดเช่น
JMP L;
ประกอบจะคำนวณที่อยู่ของฉลากและปฏิบัติตามที่อยู่ของคุณเมื่อใดก็ตามที่คุณระบุป้ายชื่อเป็นตัวถูกดำเนินการของการกระโดดหรือการเรียนการสอนกระโดดเงื่อนไข แอสเซมสามารถทำเช่นนี้แม้ว่าจะยังไม่พบป้ายชื่อในแฟ้มแหล่งที่มาของโปรแกรม (เช่นป้ายชื่อที่แนบมากับการเรียนการสอนต่อไปในแฟ้มแหล่งที่มา) ผู้ประกอบส่วนใหญ่ประสบความสำเร็จมายากลนี้โดยการสองผ่านไปแฟ้มแหล่งที่มา ในช่วงที่ผ่านแรกประกอบเป็นตัวกำหนดที่อยู่เริ่มต้นของแต่ละสัญลักษณ์และเก็บข้อมูลในฐานข้อมูลอย่างง่ายที่เรียกว่าตารางสัญลักษณ์ . แอสเซมไม่ได้ปล่อยรหัสเครื่องใด ๆ ในช่วงแรกผ่านนี้ จากนั้นผู้ประกอบทำให้ผ่านที่สองกว่าแฟ้มแหล่งที่มาและที่จริงปล่อยรหัสเครื่อง ในช่วงผ่านที่สองนี้ก็เงยหน้าขึ้นมองอ้างอิงฉลากทั้งหมดในตารางสัญลักษณ์และใช้ข้อมูลจะดึงจากฐานข้อมูลนี้ในการกรอกข้อมูลลงในช่องตัวถูกดำเนินการของคำสั่งที่อ้างถึงสัญลักษณ์บางอย่าง

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 .


รูปที่ 13 การใช้คำนำหน้าไบต์ที่จะขยายชุดคำสั่ง

4 การเข้ารหัสคำแนะนำ 80x86

Y86 ประมวลผลที่ง่ายต่อการเข้าใจและง่ายต่อการใช้การเข้ารหัสมือสำหรับมันและยานพาหนะท​​ี่ดีสำหรับการเรียนรู้วิธีการกำหนด opcodes นอกจากนี้ยังเป็นอุปกรณ์สมมุติอย่างหมดจดมุ่งหวังให้ใช้เป็นเครื่องมือในการเรียนการสอนดังนั้นตอนนี้คุณสามารถลืมทั้งหมดเกี่ยวกับ Y86 ก็ทำหน้าที่จุดประสงค์ของมัน ตอนนี้ก็ถึงเวลาที่จะดูว่ารูปแบบการเรียนการสอนเครื่องที่เกิดขึ้นจริงสำหรับครอบครัว CPU 80x86
พวกเขาไม่ได้เรียก CPU 80x86 คอมเพล็กซ์ชุดคำสั่งคอมพิวเตอร์เพื่ออะไร ถึงแม้ว่าการเรียนการสอนมากขึ้นการเข้ารหัสที่ซับซ้อนไม่อยู่ไม่มีใครจะที่จะท้าทายการยืนยันว่า 80x86 มีการเข้ารหัสการเรียนการสอนที่มีความซับซ้อน การเรียนการสอน 80x86 ทั่วไปใช้รูปแบบที่แสดงในรูปที่ 5.14 . แม้ว่าแผนภาพนี้ดูเหมือนว่าจะหมายความว่าคำแนะนำจะขึ้นอยู่กับ 16 ไบต์นานในความเป็นจริง 80x86 จะไม่อนุญาตให้คำแนะนำมากกว่า 15 ไบต์ในระยะเวลา


รูปที่ 5.14 80x86 การเรียนการสอนการเข้ารหัส
ไบต์คำนำหน้าไม่ได้ "คำนำหน้าการขยายตัว 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 เป็นไปได้ที่แตกต่างกัน


รูปที่ 5.15 80x86 ADD Opcode

4.1 การเข้ารหัสตัวถูกดำเนินการเรียนการสอน

"MOD-reg-R / เมตร" ไบต์ (ในรูปที่ 14 ) ระบุโหมดพื้นฐาน ไบต์นี้มีฟิลด์ต่อไปนี้


รูปที่ 5.16 MOD-รุ่น-R / M Byte
ข้อมูลราคาพิเศษระบุ 80x86 ลงทะเบียน ทั้งนี้ขึ้นอยู่กับการเรียนการสอนนี้สามารถเป็นได้ทั้งแหล่งที่มาหรือถูกดำเนินการปลายทาง คำแนะนำหลายคนมี "D" (ทิศทาง) ในสนาม opcode ของพวกเขาที่จะเลือกได้ว่าจะถูกดำเนินการนี​​้เป็นแหล่งที่มา (d = 0) หรือปลายทาง (d = 1) ตัวถูกดำเนินการข้อมูลนี้จะถูกเข้ารหัสโดยใช้รูปแบบบิตที่พบในตารางต่อไปนี้

ราคาพิเศษมูลค่า

ลงทะเบียนถ้าขนาดของข้อมูลเป็นแปดบิต

ลงทะเบียนถ้าขนาดของข้อมูลคือ 16 บิต

ลงทะเบียนถ้าขนาดของข้อมูล 32 บิต

000%

อัล

ขวาน

EAX

001%

CL

CX

ECX

010%

ดล

DX

EDX

011%

BL

BX

ebx

100%

อา

SP

ทาย

101%

CH

bp

EBP

110%

DH

si

ESI

111%

BH

ดิ

EDI
สำหรับบาง (ตัวถูกดำเนินการเดี่ยว) คำแนะนำด้านราคาอาจจะมีการขยาย opcode มากกว่าค่าลงทะเบียน (ข้อมูล R / M จะระบุตัวถูกดำเนินการในกรณีนี้)
MOD และ R / M สาขารวมกันเพื่อระบุตัวถูกดำเนินการอื่น ๆ ในการเรียนการสอนสองตัวถูกดำเนินการ (หรือถูกดำเนินการเฉพาะในการเรียนการสอนเดี่ยวถูกดำเนินการเหมือนหรือไม่ NEG) โปรดจำไว้ว่าบิต "D" ใน opcode กำหนดตัวถูกดำเนินการเป็นแหล่งที่มาและที่เป็นสถานที่ MOD และ R / M สาขาที่ร่วมกันระบุโหมดที่อยู่ดังต่อไปนี้

MOD

ความหมาย

00%

ลงทะเบียนโหมดทางอ้อมหรือ SIB ที่ไม่มีการเคลื่อนที่ (เมื่อ R / M = 100%) หรือแทนที่เท่านั้นที่อยู่โหมด (เมื่อ R / M = 101%)

01%

หนึ่งไบต์ลงนามในการกำจัดต่อไปนี้ที่อยู่โหมดไบต์ (s)

10%

สี่ไบต์ลงนามในการกำจัดต่อไปนี้ที่อยู่โหมดไบต์ (s)

11%

โหมดสมัครสมาชิก

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 นี้และตารางต่อไปนี้อธิบายค่าสำหรับแต่ละสาขา


รูปที่ 5.17 SIB (Byte ดัชนีสเกล) เลย์เอาต์

ขนาดมูลค่า

ดัชนี * มูลค่ามาตราส่วน

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 จะใช้เมื่อใช้โหมดหนึ่งในการลงทะเบียนการจัดทำดัชนีปรับคือหนึ่งในโหมดที่อยู่ดังต่อไปนี้
[reg 32 + EAX n *] MOD = 00%
[reg 32 + ebx n *] หมายเหตุ: n = 1, 2, 4 หรือ 8
[reg 32 + ECX n *]
[reg 32 + EDX n *]
[reg 32 + EBP n *]
[reg 32 + ESI n *]
[reg 32 + EDI n *]
[DISP + reg 8 + EAX n *] MOD = 01%
[DISP + reg 8 + ebx n *]
[DISP + reg 8 + ECX n *]
[DISP + reg 8 + EDX n *]
[DISP + reg 8 + EBP n *]
[DISP + reg 8 + ESI n *]
[DISP + reg 8 + EDI n *]
[DISP + reg 32 + EAX n *] MOD = 10%
[DISP + reg 32 + ebx n *]
[DISP + reg 32 + ECX n *]
[DISP + reg 32 + EDX n *]
[DISP + reg 32 + EBP n *]
[DISP + reg 32 + ESI n *]
[DISP + reg 32 + EDI n *]
[DISP + EAX n *] MOD = 00% และสนาม BASE มี 101%
[DISP + ebx n *]
[DISP + ECX n *]
[DISP + EDX n *]
[DISP + EBP n *]
[DISP + ESI n *]
[DISP + EDI n *]
ในแต่ละโหมดการแก้ไขเหล่านี้ข้อมูล 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 ) ตัวเลขต่อไปนี้แต่ละอธิบายวิธีการเข้ารหัสรูปแบบต่างๆของการเรียนการสอนเพิ่มโดยใช้โหมดที่อยู่ที่แตกต่างกัน


รูปที่18 การเข้ารหัส ADD (อัล, CL); การเรียนการสอน
มีผลข้างเคียงที่น่าสนใจของการดำเนินการของบิตทิศทางและองค์กร MOD-รุ่น-R / M คือคำแนะนำบางอย่างมีสอง opcodes แตกต่างกัน (และทั้งสองตามกฎหมาย) ตัวอย่างเช่นเราสามารถเข้ารหัส "เพิ่ม (อัล, CL);" การเรียนการสอนจากรูปที่ 5.18เป็น $ 02, $ C8 โดยการกลับ AL CL และลงทะเบียนในราคาพิเศษและ R / สาขา M แล้วตั้งค่าบิตใน opcode (บิต # 1) ปัญหานี้นำไปใช้กับคำแนะนำที่มีสองตัวถูกดำเนินการลงทะเบียน


รูปที่ 19 การเข้ารหัส ADD (EAX, ECX); การเรียนการสอน
โปรดทราบว่าเรายังสามารถเข้ารหัส "เพิ่ม (EAX, ECX);" โดยใช้ไบต์ $ 03, $ C8


รูปที่ 20 การเข้ารหัส ADD (DISP, EDX); การเรียนการสอน


รูปที่ 21 การเข้ารหัส ADD ([ebx] EDI); การเรียนการสอน


รูปที่ 22 การเข้ารหัส ADD ([ESI + DISP 8 ], EAX); การเรียนการสอน


รูปที่ 23 การเข้ารหัส ADD ([EBP + DISP 32 ], ebx); การเรียนการสอน


รูปที่ 24 การเข้ารหัส ADD ([DISP 32 + EAX * 1], EBP); การเรียนการสอน


รูปที่ 5.25 การเข้ารหัส ADD ([ebx + EDI * 4], ECX); การเรียนการสอน

4.3 การเข้ารหัสตัวถูกดำเนินการทันที

คุณอาจสังเกตเห็นว่า MOD-REG-R / M และ SIB ไบต์ไม่ได้มีการรวมบิตใด ๆ ที่คุณสามารถใช้เพื่อระบุตัวถูกดำเนินการทันที 80x86 ใช้ opcode ที่แตกต่างกันอย่างสิ้นเชิงในการระบุตัวถูกดำเนินการทันที ภาพที่ 5.26แสดงให้เห็นถึงการเข้ารหัสขั้นพื้นฐานสำหรับการเพิ่มการเรียนการสอนได้ทันที


รูปที่ 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
6หน่วยประมวลผล Y86 เพียง แต่ดำเนินการลงนามการเปรียบเทียบ
7เทคนิคการลงทะเบียนไม่ได้มีอยู่ แต่เราใช้คำว่าโหมดที่จะลงทะเบียนอย่างไรก็ตาม
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 = แรม [ฐาน + ชดเชย] 
   + ------ + ----- + ----- + ---------------- + 

   (ที่อยู่ที่มีประสิทธิภาพ = ชดเชย + เนื้อหาของ ลงทะเบียนฐานที่ระบุไว้)
ชดเชยมักจะค่า 16 บิตลงนาม (แม้ว่า80386ขยายถึง 32 บิต)
ถ้าชดเชยเป็นศูนย์นี้จะกลายเป็นตัวอย่างของการลงทะเบียนทางอ้อมที่อยู่; ที่อยู่ที่มีประสิทธิภาพเป็นเพียงค่าในฐานทะเบียน
ในเครื่อง 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://minnie.tuhs.org/CompArch/Lectures/week03.html
http://en.wikipedia.org/wiki/Addressing_mode






1 ความคิดเห็น: