ในความคิดเห็นต่อคำตอบนี้ Kortuk ถามว่าข้อดีของ ARM คืออะไร ฉันเพิ่มข้อโต้แย้งในคำตอบของฉันก่อน แต่ฉันคิดว่าคำถามน่าสนใจพอที่จะเป็นคำถามในตัวเองเพื่อที่จะได้คำตอบเพิ่มเติม
ในความคิดเห็นต่อคำตอบนี้ Kortuk ถามว่าข้อดีของ ARM คืออะไร ฉันเพิ่มข้อโต้แย้งในคำตอบของฉันก่อน แต่ฉันคิดว่าคำถามน่าสนใจพอที่จะเป็นคำถามในตัวเองเพื่อที่จะได้คำตอบเพิ่มเติม
คำตอบ:
ประสิทธิภาพเป็นข้อได้เปรียบอย่างหนึ่ง การเป็นโปรเซสเซอร์ 32 บิตมันมีประสิทธิภาพสูงกว่า (เกือบ) คอนโทรลเลอร์ 8 บิตทั้งหมดที่ชาญฉลาด DMIPS แกนกลางยังผ่านหลายชั่วอายุคนอ่านการเพิ่มประสิทธิภาพ
การเพิ่มประสิทธิภาพเหล่านี้ไม่เพียง แต่แสดงในหมายเลขประสิทธิภาพ แต่ในการใช้พลังงานเช่นกัน แกนหลักล่าสุดได้เพิ่มอัตราส่วน DMIPS / mW เป็นสองเท่าเมื่อเทียบกับรุ่นก่อนหน้า (ดูคำตอบนี้ )
ARM มีให้บริการจากผู้ผลิตหลายรายมากกว่าไมโครคอนโทรลเลอร์อื่น ๆ และแต่ละรุ่นมีหลายรุ่นให้เลือกโดยมีอุปกรณ์ต่อพ่วงและหน่วยความจำบนชิปที่แตกต่างกัน ในกรณีที่จุด: NXP มีไม่น้อยกว่า35 ตัวควบคุมด้วยอีเธอร์เน็ตบนชิป
ARM คือราคาไม่แพง ; ARM น่าจะเป็นคอนโทรลเลอร์รุ่น 32 บิตตัวแรกที่ทำลายกำแพง USD 1
การรวมกันของประสิทธิภาพการทำงานที่กว้างขวางและราคาต่ำทำให้คุณไม่สามารถมองข้าม ARM ได้:
ในปี 2548 ประมาณ 98% ของโทรศัพท์มือถือทั้งหมดใช้แกน ARM ที่ออกแบบมาอย่างน้อยหนึ่งตัวบนมาเธอร์บอร์ด (ที่มา )
จุดหนึ่งที่ยังไม่ได้กล่าวถึง: ในปี 1908 ผู้ชายที่ชื่อนายPL โรเบิร์ตคิดค้นใหม่หัวสกรูที่ดีขึ้นและคนขับรถ เขาต้องการเป็นคนเดียวในการผลิตสกรูและไดรเวอร์ตามการออกแบบของเขา ทศวรรษต่อมามีคนอีกคนหนึ่งที่ชื่อนายเฮนรี่เอฟ. ฟิลลิปส์ได้ออกแบบทางเลือกขึ้นมา ซึ่งแตกต่างจาก Mr. Robertson Mr. Phillips สนใจในการออกใบอนุญาตการออกแบบมากกว่าการผลิตสกรูและไดรเวอร์
ในทำนองเดียวกันในปี 1970 โซนี่ขึ้นมาด้วยเทคโนโลยีที่เรียกว่าBetamax ; JVCเกิด VHS ขึ้นมาหนึ่งตัว Sony สนใจผลิต VCR; JVC มีความสนใจในเรื่องใบอนุญาตมากกว่า
ดูเหมือนจะมีรูปแบบที่นี่ (หมายเหตุ: สำหรับชั่วขณะนั้น Intel ได้อนุญาตให้ใช้เทคโนโลยี80x86แต่ได้ให้ความสำคัญกับการพัฒนาเทคโนโลยีสำหรับการใช้งานภายในเป็นเวลาหลายทศวรรษ)
ฮาร์ดแวร์ / ซอฟต์แวร์เดียวกันที่พัฒนาขึ้นเพื่อ ARM ของผู้ขายทั้งหมด คุณซื้อ JLINK / ULINK และ Keil IDE บางครั้งและสามารถใช้เพื่อพัฒนาเลียนแบบและดีบักแขนเกือบทุกดวงบนโลกใบนี้
ไม่จำเป็นต้องเรียนรู้สถาปัตยกรรมใหม่เมื่อย้ายไปที่ผู้จัดจำหน่ายชิปใหม่ => ล็อคผู้ขายน้อยลง => การแข่งขันมากขึ้น => ราคาที่ต่ำลง
ในกระบวนการเทคโนโลยีที่ทันสมัย (0.18um และต่ำกว่า) ARM core นั้นเล็กมากการเสียสละสำหรับ 8bit core จะไม่ช่วยให้เห็นเศษส่วนของราคา ดังนั้นเหตุผลที่เลือกสถาปัตยกรรมมาตรฐานประสิทธิภาพสูง แต่ราคาถูก
ประสิทธิภาพ - เฉพาะ ARM เท่านั้นที่คุณสามารถมีนาฬิกา 32 * 32-> 32 คูณและสนับสนุนฮาร์ดแวร์สำหรับ 32 * 32-> 64 และการหารสำหรับอุปกรณ์ย่อย 1 ดอลลาร์ (เช่น STM32 ระดับล่าง)
ARM ไม่โลภมากเกินไปและไม่เรียกเก็บค่าธรรมเนียมที่ไม่สมเหตุสมผลสำหรับใบอนุญาตดังนั้นผู้ผลิตจึงสามารถผลิตไมโครสโคปราคาถูกได้
ฉันกำลังมุ่งเน้นไปที่โปรเซสเซอร์ARMระดับกลางด้วยเหตุผลเหล่านี้:
รองรับ Linux เต็มรูปแบบ
นี่หมายถึงไดรเวอร์อุปกรณ์เกือบฟรี ฉันทำโฮสต์ USB และรหัสอุปกรณ์เพียงพอแล้วฉันไม่ต้องการทำอย่างนั้นอีกต่อไป ฉันยังไม่ตื่นเต้นกับการพยายามเพิ่ม TCP / IP ไปยังแพลตฟอร์มตัวประมวลผลแบบสุ่มด้วย (แม้ว่าLwIP / uIPนั้นไม่เลวเลย) ฉันไม่เคยลองทำ Wi-Fi สแต็คบลูทู ธ จริงเว็บแคมและอื่น ๆ การใช้ Linux หมายความว่าอุปกรณ์ที่หลากหลายนั้นจะพูดคุยได้ง่ายกว่ามาก
ฉันรู้สึกประหลาดใจอย่างมากกับการที่ไดรเวอร์อุปกรณ์ลินุกซ์เขียนได้อย่างมีเหตุผลและใช้งานง่าย หลังจากทำบางไดรเวอร์อุปกรณ์ Windows Linux เป็นฝัน (เพื่อความเป็นธรรมเฟรมเวิร์กไดรเวอร์ Windows ได้พัฒนาขึ้นมากมายตั้งแต่ฉันทำ)
แพลตฟอร์มซอฟต์แวร์นั้นยอดเยี่ยมเช่นกัน ฉันได้รับการเข้ารหัส SSL, ระบบไฟล์, การจัดการระยะไกล, อัพเดทแอพพลิเคชั่นง่าย ๆ (คัดลอกไฟล์แทน bootloader ที่ซับซ้อน) ฯลฯ โอ้และยูทิลิตี้ที่มีอยู่มากมายหากคุณต้องการทำอะไร
นอกจากนี้ยังไม่มีค่าลิขสิทธิ์และง่ายกว่าที่จะโค้งงอตามความประสงค์ของคุณมากกว่าจะบอกว่าแพลตฟอร์มWinCEแบบโอเพ่นซอร์สจะเป็นเช่นนั้น (ไม่ใช่ว่าฉันเป็นนักอุดมการณ์โอเพนซอร์ซจริง ๆ ... มันเป็นเหตุผลเชิงปฏิบัติจริง ๆ สำหรับฉัน)
ฉันกำลังพูดถึง ARM cores กับMMUจริงดังนั้นนี่คือชิประดับกลางถึงระดับสูง (แม้ว่าคุณจะสามารถใช้μClinuxฉันได้)
การใช้พลังงาน
นี่เป็นความคิดเห็นของคนอื่นซ้ำ แต่มันเป็นปัจจัยใหญ่สำหรับฉัน ปัจจุบันแพลตฟอร์ม 454 MHz ARM ของฉันใช้งาน 1/2 a watt และ 1 watt ที่ max CPU คุณไม่สามารถเข้าใกล้ได้ด้วย x86
นั่นเป็นเหตุผลของฉันมาก ฉันไม่เห็นสมการที่เปลี่ยนแปลงเร็ว ๆ นี้
ARM ได้ผ่านการพัฒนา:
สถาปัตยกรรม ARM ช่วยให้การดำเนินการที่ค่อนข้างซับซ้อนสามารถดำเนินการได้อย่างรวดเร็ว - เร็วกว่าชิปอื่น ๆ ตัวอย่างเช่น (ใช้ ARM7-TDMI):
ldrh r0, [r10, # ADDR_BUS_OFS]; อ่านบัสแอดเดรสระบบเป้าหมาย (13 บิต) ldrb r1, [r9, r0, lsr # 8]; ใช้บิตส่วนบนเพื่อค้นหาที่อยู่ในตารางตัวจัดการ เพิ่มพีซี, r9, r1 lsl # 2; ไปที่ตัวจัดการที่เหมาะสม
ตัวจัดการแต่ละตัวจะถูกจัดเก็บเป็นไบต์ซึ่งให้ 1/4 ของการกระจัดที่อยู่จากจุดเริ่มต้นของตาราง ผลกระทบสุทธิคือเมื่อเนื้อหาของแอดเดรสบัสถูกเรียกใช้เวลาเพียงหกรอบ (สองคำสั่ง) เพื่อข้ามไปยังตัวจัดการตามห้าบิตบนของการดึงข้อมูลโดยใช้ตารางการกระโดด 32- ไบต์
รหัส THUMB ที่สอดคล้องกันจะเป็นดังนี้:
; สมมติว่าเราไม่ต้องการ r6 / r7 สำหรับสิ่งอื่นพวกเขาถูกกำหนดใหม่จาก r9 / r10 ldrh r0, [r7, # ADDR_BUS_OFS] mov r1, r0 lsr r1, r1, # 8; THUMB ต้องการต้นทางและปลายทางให้เหมือนกัน ldrb r1, [r6, r1] lsl r1, r1, # 1; สามารถใช้ shift-left-two ถ้าที่อยู่เป้าหมายมีการจัดตำแหน่งแบบเต็มคำ เพิ่ม pc, r1
นั่นเป็นเรื่องปกติจากจุดยืนของความหนาแน่นของรหัสเนื่องจากคำแนะนำนั้นมีขนาดใหญ่กว่าต้นฉบับเพียงครึ่งเดียว แต่จะใช้เวลาเก้ารอบหลังจากการดึงข้อมูลมามากกว่าหกครั้ง ในแอปพลิเคชั่นที่บัสกำลังรับชมจะวิ่งด้วยความเร็วของมันเองไม่ว่า ARM จะจัดการได้หรือไม่คำสั่ง ARM ที่เร็วกว่านั้นจะเป็นข้อดีอย่างยิ่ง
อนึ่ง Thumb2 เข้ากันได้กับไบนารีซึ่งใช้อำนวยความสะดวกในการใช้เครื่องมือก่อนหน้านี้ แต่หมายความว่ามีบางสิ่งที่ไม่สามารถทำได้เช่นเดียวกับ ARM ดั้งเดิม ตัวอย่างเช่นใน ARM หนึ่งสามารถ "หมุน" บิตแมปขนาด 8x8 ที่จัดขึ้นในสี่รีจิสเตอร์โดยใช้คำสั่งประมาณ 3 ต่อสองบิต:
movs r0, r4, lsl # 25; ใส่บิตสูงสุดของ LSB เป็น C และบิตถัดไปเป็น N orrcs r6, # 0x00000001 orrmi r6, # 0x00000100
ใน Thumb2 จำเป็นต้องเพิ่มคำแนะนำแบบมีเงื่อนไขอย่างชัดเจน:
movs r0, r4, lsl # 25; ใส่บิตสูงสุดของ LSB เป็น C และบิตถัดไปเป็น N ITCS orrcs r6, # 0x00000001 ITMI orrmi r6, # 0x00000100
ลดเวลาและพื้นที่ในการทำงานลง 33% สุทธิเมื่อเทียบกับ ARM นั่นอาจเกี่ยวกับตัวอย่างที่แย่ที่สุดของรหัส Thumb ซึ่งมีประสิทธิภาพน้อยกว่า ARM และแม้ว่ามันจะไม่น่ากลัวเท่าไหร่
ข้อเสียเล็กน้อยอีกข้อหนึ่งของ Thumb2 เมื่อเทียบกับ ARM: ในรหัส ARM คำแนะนำทั้งหมดเริ่มต้นที่ขอบเขตของคำแบบเต็มซึ่งอำนวยความสะดวกในการวิเคราะห์แบบคงที่ ใน Thumb2 คำแนะนำสามารถเริ่มต้นที่ขอบเขตครึ่งคำโดยพลการและข้ามขอบเขตเต็มคำ การวิเคราะห์แบบคงที่จึงอาจเป็นเรื่องยากมากขึ้น
ประวัติศาสตร์คืออะไรAcornต้องการ CPU แบบกำหนดเอง (เช่นในตัวควบคุมหน่วยความจำ ฯลฯ ) สำหรับคอมพิวเตอร์เครื่องใหม่ในปี 1980 (8 บิต 6502 นั้น จำกัด สิ่งที่พวกเขาสามารถทำได้) พวกเขาคุยกับ Intel แต่ Intel จะไม่อนุญาตให้ใช้ CPU กับพวกเขา
ดังนั้น Acorn จึงออกแบบ RISC CPU อย่างง่าย ๆ แต่เนื่องจากพวกเขาไม่ใช่ผู้ผลิต CPU พวกเขาจึงยินดีที่จะอนุญาตให้ทุกคน (และต้องการเงินด่วนทั้งหมดที่พวกเขาจะได้รับ!) (ฉันเชื่อว่าซีพียูทำงานครั้งแรกส่วนหนึ่งเพราะมันง่ายมากและผู้ออกแบบได้สร้างซีพียูวิจัยจำนวนมากในขณะที่มหาวิทยาลัยเคมบริดจ์)
ในช่วงหลายปีที่ผ่านมาการออกแบบ CPU กลายเป็นเรื่องง่ายและง่ายขึ้นในการออกแบบชิปลูกค้า
ผู้ผลิตชิปรู้สึกว่าการออกใบอนุญาตอย่างปลอดภัยจาก Acorn เนื่องจากพวกเขาไม่ใช่คู่แข่ง นอกจากนี้ยังไม่มีใครคิดว่าพวกเขากำลังจะไปบ้านของคู่แข่งที่จะได้รับใบอนุญาตเป็นโอ๊กอยู่ในเคมบริดจ์(จริงหนึ่ง!) (มีโอกาสในการ“ ไปหาข้อเท็จจริง” ที่เคมบริดจ์เพื่อไปเยี่ยม Acorn มีผลทำให้รายชื่อตัวเลือกต่าง ๆ สั้นลง ณ จุดใด….)
การออกแบบจำนวนมากที่รวมถึง Acorn Risc Machine CPU สำหรับระบบฝังคือการใช้พลังงานเป็นสิ่งสำคัญ เครื่องมือพัฒนาราคาถูกและดียังถูกสร้างขึ้นสำหรับ CPU ของ Acorn Risc Machine
ดังนั้นเมื่อโทรศัพท์มือถือเริ่มต้องการชิปที่กำหนดเองด้วย CPU ในตัว Acorn จึงถูกเปลี่ยนชื่อเป็น ARM และส่วนที่เหลือคือประวัติ (บางทีมันก็เป็นบิตที่ซีพียูอื่น ๆ ส่วนใหญ่ถูกควบคุมโดยสหรัฐอเมริกา แต่โทรศัพท์มือถือกลายเป็นเรื่องปกติในยุโรป)
(สิ่งนี้ทำให้คุณนึกถึง Microsoft และ Dos กับทีมเล็ก ๆ จาก IBM หรือไม่?)
ความจริงที่ว่า ARM เป็นหนึ่งในซีพียูที่ดีที่สุดในขณะนั้น (และยังคงเป็น) สำหรับงานจำนวนมากก็ช่วยได้เช่นกัน - เพียงแค่มีการออกแบบซีพียูที่ดีที่สุดก็ยังไม่เพียงพอ
ปัญหาทางเทคนิคนอกเหนือจากนั้นยังมีเหตุผลที่ไม่ใช่ด้านเทคนิคสำหรับ ARM แต่คำตอบอย่างรวดเร็วคือ: ไม่ใช่ Intel (หรือ x86)
หากคุณดูว่าการลงทุนด้าน R&D ของ CPU ดอลลาร์ตอนนี้พวกเขาตกอยู่ในสองค่ายคือ ARM และ Intel (ฉันเพิกเฉยต่อ MCU ขนาดเล็กและฉันเอเอ็มดีกับ Intel ในก้อน) มีเงินน้อยมากใน PowerPC, MIPS, SPARC และ CPU ขนาดใหญ่อื่น ๆ แขนและ Intel เป็นคนเดียวที่ยังคงยืนอยู่
ด้วย Intel และซีพียูอื่น ๆ ของ x86 คุณจะได้รับกระเป๋าสัมภาระจำนวนมาก ตัวอย่างเช่นคุณต้องมีชิปเซ็ต BIOS และสิ่งอื่น ๆ แม้ว่าซีพียูจะมีประสิทธิภาพการใช้พลังงานสูงสุดอุปกรณ์อื่น ๆ เหล่านั้นมักจะทำให้ระบบของคุณมีน้ำหนักน้อยลงและทำให้มันใหญ่ขึ้นใช้พลังงานได้มากขึ้นและมีราคาแพงกว่า เพียงแค่พัฒนา PCB กับ Intel CPU เป็นปัญหาใหญ่แล้วคุณต้องเจรจากับผู้จำหน่ายไบออส ฯลฯ เพื่อให้เรื่องแย่ลงผู้ขายหลายรายสำหรับชิปเซ็ตไบออสชิปวิดีโอ ฯลฯ ไม่ต้องการ ทำธุรกิจกับคนกลุ่มเล็กที่จะไม่ขายน้อยกว่าหนึ่งล้านหน่วยต่อปี
ด้วย ARM คุณไม่มีกระเป๋าสัมภาระใบนั้น มีแหล่งที่มาของชิปมากมายจากสิ่งที่ไมโครคอนโทรลเลอร์จนถึงมอนสเตอร์แบบมัลติคอร์ คุณไม่จำเป็นต้องจัดการกับการให้สิทธิ์ใช้งาน BIOS (ซึ่งเหมือนกับพนักงานขายรถมือสอง) และผู้ผลิตและผู้จำหน่ายโดยทั่วไปก็ดีสำหรับคุณ
เปรียบเทียบARM7 / ARM9กับMIPS IVและมีข้อได้เปรียบเล็กน้อยนอกเหนือจากปัญหาด้านลิขสิทธิ์ที่กล่าวถึงแล้ว ภายในของชุดคำสั่ง MIPS และบัสภายในทำให้ดีกว่า (ประสิทธิภาพต่อราคา) สำหรับการออกแบบบางประเภท นี่คือเหตุผลที่เราเตอร์ Wi-Fi จำนวนมากใช้ MIPS cores มากกว่า ARM ARM
เนื่องจากแกนกลางของ ARM ถูกนำไปใช้กับอุปกรณ์มือถือเป็นส่วนใหญ่ ASIC จึงเพิ่มคุณสมบัติการควบคุมพลังงานในขณะที่ MIPS ให้ความสำคัญกับประสิทธิภาพต่อรอบมากกว่าการใช้พลังงานต่ำ ประโยชน์ของRISCผ่าน Intel x86 คือการอภิปรายที่แตกต่าง