มีสาเหตุหลายประการที่จะเลือกใช้ CISC เหตุผลที่โดดเด่นที่สุดคือเพื่อความเข้ากันได้ของไบนารีกับชุดคำสั่ง CISC ที่มีอยู่ ในขณะที่เทคโนโลยีการแปลไบนารีซอฟต์แวร์ได้รับการปรับปรุงความเข้ากันได้กับฮาร์ดแวร์มีข้อดีทางเทคนิคบางประการ (รวมถึงข้อเสียของการแคชการแปลที่น้อยกว่า) และข้อดีทางเทคนิคที่น้อยลงของการดูน่าเชื่อถือมากขึ้น
ความหนาแน่นของรหัสอาจเป็นเหตุผลสำคัญอันดับสองสำหรับการเลือก CISC Renesas RX ได้รับการออกแบบให้เป็น CISC โดยเฉพาะสำหรับความหนาแน่นของรหัสเนื่องจากมีเป้าหมายเป็นไมโครคอนโทรลเลอร์ที่ขนาดหน่วยความจำรหัสเป็นปัจจัยด้านต้นทุนที่สำคัญ คำแนะนำความยาวผันแปรคำแนะนำที่ซับซ้อน (ส่วนใหญ่โหมดการกำหนดแอดเดรส) ตัวถูกดำเนินการทางอ้อมและการลงทะเบียนต่ำกว่าจะนับความหนาแน่นของรหัสผลประโยชน์ทั้งหมด
เหตุผลทางประวัติศาสตร์ (และในความคิดของฉันเข้าใจผิด) เหตุผลในการเลือก CISC คือการปิดช่องว่างความหมายระหว่างโปรแกรมเมอร์โดยใช้ภาษาระดับสูงและโปรเซสเซอร์ เนื่องจากโดยทั่วไปคำสั่งที่ซับซ้อนสามารถถูกแทนที่ด้วยลำดับของคำสั่งที่ง่ายกว่าความซับซ้อนของคอมไพเลอร์ภาษาระดับสูงสำหรับ RISC จึงไม่จำเป็นต้องมีความซับซ้อนมากไปกว่า CISC ที่ตรงกันกับภาษา RISC หลีกเลี่ยง "semantic clash" (โดยที่คำสั่งตัวประมวลผลทำงานได้มากกว่าหรือน้อยกว่าคำสั่งภาษาที่เกี่ยวข้อง) และช่วยลดความแรงและกำหนดเวลาการปรับให้เหมาะสม (ดู"อะไรคือข้อแลกเปลี่ยนในความพยายามพัฒนาคอมไพเลอร์ที่เกี่ยวข้องกับ CISC กับ RISC?"สำหรับรายละเอียดเพิ่มเติม)
อาจมีค่าใช้จ่ายคงที่สำคัญที่เกี่ยวข้องกับการดำเนินการคำสั่ง สิ่งนี้สนับสนุนให้ใช้คำสั่งที่ค่อนข้างซับซ้อนเพื่อกระจายค่าใช้จ่ายนี้ไปยังงานจริงมากขึ้น การลดจำนวนคำสั่งแบบไดนามิกสามารถปรับปรุงประสิทธิภาพได้ เมื่อค่าใช้จ่ายของลอจิกและ RAM สูงกว่าค่า ROM มากแรงจูงใจสำหรับคำสั่งที่ซับซ้อนนั้นมีความสำคัญเนื่องจากคำสั่งนั้นถูกถอดรหัสโดยการค้นหาไมโครโค้ด
เหตุผลในการใช้ CISC ที่อาจขัดแย้งกับหลักฐานทางประวัติศาสตร์คือไมโครโค้ดสามารถปรับให้เหมาะสมสำหรับแต่ละไมโครอาร์คิเทคเจอร์ในขณะที่ไลบรารี่มาตรฐานอาจช้าในการใช้ประโยชน์จากคุณสมบัติของการใช้งานใหม่ ระดับการปรับให้เหมาะสมของการใช้งานซอฟต์แวร์ของ memcopy กับไมโครโค้ดสำหรับ REP MOVSB หมายความว่าห้องสมุดสามารถได้รับความสนใจมากกว่าไมโครโค้ด ส่วนหนึ่งอาจมาจากผู้จำหน่ายหน่วยประมวลผลที่กำหนดเป้าหมายฐานผู้ใช้ที่กว้างขึ้นดังนั้นการให้เหตุผลของความพยายามอาจยากขึ้นเมื่อเทียบกับโอเพนซอร์ซหรือซอฟต์แวร์ภายในซึ่งผลประโยชน์ของผู้พัฒนาหรือผู้ใช้
ความสามารถในการจัดส่งไลบรารี่มาตรฐานที่ปรับให้เหมาะสมกับโปรเซสเซอร์นั้นมีจุดสนใจที่สำคัญ การจัดเก็บและการดำเนินการของไลบรารีมาตรฐานของแพลตฟอร์มสามารถปรับให้เหมาะสมโดยการใช้รหัสฮาร์ดแวร์ซอฟต์แวร์ ความแตกต่างระหว่างคำสั่งที่ซับซ้อนและการเรียก Platform Abstraction Layer นั้นอาจจะบอบบาง (หรือไม่มีอยู่จริง) การออกแบบ RISC สามารถใช้เทคนิคการนำไปปฏิบัติแบบเดียวกันสำหรับการจัดการการโทร PAL เหมือนกับ CISC สำหรับคำสั่งที่ซับซ้อนรวมถึงการใช้งานที่ไม่ได้ระบุไว้ในชุดคำสั่งทั่วไปกับฮาร์ดแวร์พิเศษโดยใช้การแคชและถอดรหัสที่ชาญฉลาดและระบุตัวถูกลงทะเบียน มักใช้รีจิสเตอร์เฉพาะที่คล้ายกับฟังก์ชันต่อ ABI) แบบจำลองทางจิตที่เกี่ยวข้องกับ CISC สามารถส่งเสริมการปรับให้เหมาะสมดังกล่าว นอกจากนี้ผู้ใช้อาจถูกทำให้ขุ่นเคืองน้อยลงด้วยการรวมการบังคับของ "
การถอดรหัสคำสั่งที่ค่อนข้างซับซ้อนอาจมีค่าใช้จ่ายน้อยกว่า (และอาจเป็นไปได้ที่จะถูกต้องในเจตนาที่ฉลาด) กว่าเทคนิค RISC ที่เปรียบเทียบได้ของการรับรู้สำนวนซึ่งลำดับของคำสั่งนั้นได้รับการยอมรับว่าเป็นหน่วยความหมาย ความแตกต่างของค่าใช้จ่ายนี้จะเห็นได้ชัดเจนที่สุดในการติดตั้งใช้งานที่น้อยลง แต่ค่าใช้จ่ายในการใช้ข้อมูลนี้จะลดความสำคัญของการประหยัดการถอดรหัส
ข้อมูลบริบทเพิ่มเติมสามารถอำนวยความสะดวกในการปรับแต่งฮาร์ดแวร์ ตัวอย่างเช่นเมื่อการเพิ่มค่าในหน่วยความจำฮาร์ดแวร์สามารถรับรู้ว่าที่อยู่หน่วยความจำถูกใช้สองครั้ง (สำหรับการโหลดและที่เก็บ) ให้โอกาสในการบันทึกวิธีการบันทึกและแคชแคช คำแนะนำที่ซับซ้อนสามารถให้ข้อมูลดังกล่าวได้อย่างชัดเจน ในการเรียนการสอนที่ซับซ้อนค่ากลางมีอายุการใช้งานที่ชัดเจน (ที่ของการเรียนการสอน); ด้วยค่าการลงทะเบียน RISC แบบดั้งเดิมจะต้องถูกเขียนทับอย่างชัดเจนเพื่อบ่งบอกถึงจุดสิ้นสุดของชีวิต (หมายเหตุ: RISC สามารถระบุการลงทะเบียนซึ่งจะเป็นศูนย์เสมอหลังการใช้งานแต่ละครั้งโดยมีวิธีการระบุค่าชั่วคราวแบบใช้ครั้งเดียวคำแนะนำดังกล่าวจะซับซ้อนกว่าปานกลาง)
หากรายละเอียดการใช้งานไม่ได้ซ่อนอยู่หลังเลเยอร์นามธรรมมันก็ยิ่งยากที่จะใช้สถาปัตยกรรมขนาดเล็กที่แตกต่างกันเพื่อปรับให้เหมาะสมสำหรับการแลกเปลี่ยนที่แตกต่างกัน การเปิดเผยรายละเอียดทางสถาปัตยกรรมขนาดเล็กในขณะที่การค้ำประกันทางสถาปัตยกรรมเป็นการล็อกสถาปัตยกรรมแบบไมโครในการรับประกันความเข้ากันได้ ในขณะที่ซอฟต์แวร์ PAL สามารถปรับให้เหมาะสมเช่นเดียวกับคำแนะนำที่ซับซ้อนเช่นต้องใช้รหัสซอฟต์แวร์ฮาร์ดแวร์ การแยกองค์กรและความหลากหลายทำให้การลงรหัสทำได้ยากขึ้น
คำแนะนำที่ซับซ้อนสามารถให้การเข้าถึงที่มีสถานะเตรียมพร้อม ตัวอย่างเช่นคำแนะนำที่ซับซ้อนมักจะเป็นอะตอมที่เกี่ยวกับการขัดจังหวะ ในขณะที่ชุดคำสั่ง RISC สามารถจัดเตรียมกลไกระดับผู้ใช้เพื่อหยุดการขัดจังหวะชั่วคราวอาจเป็นบางสิ่งบางอย่างเช่นโหลดลิงก์เพื่อให้ซอฟต์แวร์พยายามดำเนินการอย่างชัดเจนหากถูกขัดจังหวะ
ในทำนองเดียวกันคำสั่งที่ซับซ้อนสามารถให้การควบคุมการเข้าถึงและ / หรือการใช้ข้อมูลพิเศษ เนื่องจากการดำเนินการที่ดำเนินการได้มีการควบคุมความหมายการละเมิดสิทธิ์ที่แท้จริงสามารถหลีกเลี่ยงได้ ทางเลือกที่มุ่งเน้น RISC ประกอบด้วยรหัส PAL (ซึ่งโดยทั่วไปจะมีค่าใช้จ่ายสูง) และการเข้าถึงการกำหนดค่ารีจิสเตอร์ (หรือสำเนาเงาของรีจิสเตอร์) ที่มีสถานะสิทธิพิเศษบางอย่าง การให้บริการโซลูชันทั่วไป (RISC) นั้นยากกว่าการจัดหาโซลูชันให้กับกรณีพิเศษหนึ่งหรือสองสามกรณี (CISC) แต่มีประสิทธิภาพมากกว่าและมีความเสี่ยงน้อยกว่าต่อการสะสมกรณีพิเศษ หากใครเชื่อว่ากรณีพิเศษที่สำคัญมีน้อย CISC สามารถดึงดูดได้มากกว่า
คำแนะนำที่ซับซ้อนสามารถซ่อนสถานะจากซอฟต์แวร์ ข้อได้เปรียบที่โดดเด่นอย่างหนึ่งของการทำเช่นนี้คือเพื่อการบันทึกบริบทและการกู้คืน ด้วยคำแนะนำที่บันทึกและกู้คืนสถานะสถาปัตยกรรมจำเป็นต้องสื่อสารขนาดบริบทไปยังระบบปฏิบัติการไม่ใช่กลไกเฉพาะสำหรับการถ่ายโอนสถานะไปยังหน่วยความจำ สิ่งนี้อนุญาตให้แอปพลิเคชันที่ทำงานบนระบบปฏิบัติการรุ่นเก่าใช้ส่วนขยาย ISA ซึ่งเพิ่มสถานะไว้ (อีกครั้งซอฟต์แวร์ PAL สามารถให้ฟังก์ชันการทำงานเดียวกันได้)
ความซับซ้อนส่วนใหญ่ของ x86 มาจากความเข้ากันได้กับส่วนขยายจำนวนมาก ด้วยคำแนะนำที่ซับซ้อนและน้อยกว่า orthogonal (มีประโยชน์สำหรับความหนาแน่นของรหัส) การลบงานบางอย่างที่ไม่จำเป็นออกไปโดยทั่วไปหลีกเลี่ยงการพึ่งพาเครือข่ายที่ไม่จำเป็น (เช่นมีเพียงบิตเดียวเท่านั้น ออกมาใช้กันอย่างแพร่หลายและสามารถปรับให้เหมาะสมในการเรียนการสอนที่ซับซ้อน - สิ่งเหล่านี้จะต้องเพิ่มการเรียนการสอนใหม่และทำให้ ISA ที่ชื่นชอบสุนทรียภาพน้อยลง
ในหลายกรณี RISC จะไม่พบปัญหาดังกล่าวเนื่องจากคำแนะนำนั้นมีมุมฉากและดั้งเดิม ในบางกรณี RISC อาจจำเป็นต้องเพิ่ม primitives ใหม่ แต่โดยทั่วไปจะสามารถใช้ได้กับการใช้มากกว่าหนึ่งครั้ง
นอกจากนี้เมื่อโครงสร้างพื้นฐานพร้อมรองรับคำสั่งที่ซับซ้อนอุปสรรคจะลดลงสำหรับคำแนะนำที่ซับซ้อนเพิ่มเติม นั่นคือต้นทุนส่วนใหญ่ของคำแนะนำที่ซับซ้อนในการไม่เกิดซ้ำ ISIS RISC ที่แข็งแกร่งประสบอุปสรรคที่สมบูรณ์เพื่อแนะนำคุณสมบัติ CISCy
ความถี่ของการขยายของ x86 อาจเป็นผลมาจากความนิยมในการใช้งานคอมพิวเตอร์ทั่วไปและโมเดลตัวประมวลผลการค้า RISC ISAs มักถูกผูกติดอยู่กับผู้ขาย sysem ซึ่งมุ่งเน้นไปที่แอพพลิเคชั่นที่แคบลงและขาดการแข่งขันสำหรับการใช้งาน RISC ISA ที่เฉพาะเจาะจงค่อนข้างท้อใจการใช้ส่วนขยายชุดคำสั่งสำหรับการตลาด ความนิยมยังทำให้ค่าใช้จ่ายในการพัฒนาส่วนขยายใหม่ลดลงอย่างมีนัยสำคัญ (ค่าใช้จ่ายที่ไม่เกิดขึ้นประจำมีความสำคัญน้อยกว่าในปริมาณที่สูงขึ้น)
ปรัชญาความเข้ากันได้ของ x86 อาจมีอคติต่อการขยายกลไกที่มีอยู่แทนที่จะให้การหยุดพักที่สะอาดยิ่งขึ้นซึ่งหมายความว่าคุณลักษณะใหม่จะได้รับอิทธิพลจากคุณลักษณะที่มีอยู่ ความถี่ที่สูงขึ้นของการขยายยังส่งเสริมการเปลี่ยนแปลงที่เพิ่มขึ้นซึ่งสนับสนุนกลไกการใช้ซ้ำโดยมีแนวโน้มลดความตั้งฉาก
การเปรียบเทียบการนำเสนอเชิงวิชาการของ MIPS แบบคลาสสิก (ซึ่งเป็นส่วนย่อยของ MIPS รุ่นทันสมัยและไม่รวมส่วนขยาย ISA ที่เป็นตัวเลือก) กับ x86 ที่ทันสมัย (ซึ่งร่องรอยความเข้ากันได้ของไบนารีกลับไปเป็น 16 บิต 8086 และความเข้ากันได้เสมือน ด้วยกระเป๋าสัมภาระประวัติศาสตร์ทั้งหมดไม่ได้นำเสนอกรณีที่ดีที่สุดสำหรับ CISC หรือกรณีที่เป็นจริงสำหรับ RISC