Cortex M0 มีประสิทธิภาพอย่างไรเมื่อเปรียบเทียบกับคอนโทรลเลอร์ 8 บิต


10

เอกสารนี้อ้างถึง 60 DMIPS / mW สำหรับ Cortex M0 เทียบกับ 31 DMIPS / mW สำหรับ M3 (หลังไม่เห็นด้วยกับตัวเลขในเอกสารนี้ซึ่งอ้างอิง 1.25 DMIPS / MHz และ 0.19 mW / MHz ให้ 6.6 DMIPS / mW.)
ไม่มีใครรู้ว่าประสิทธิภาพของ M0 / พลังงานเปรียบเทียบกับคอนโทรลเลอร์ 8/16 บิต เช่น AVR, PIC และ MSP430? และจัดการกับตัวเลข M3 คืออะไร?


3
@ เฟรเดริโกนี่เป็นคำถามที่โหลดมากและไม่มีคำตอบที่ง่าย เนื่องจากประสบการณ์ของฉันคือสิ่งอื่น ๆ จะกำหนดประสิทธิภาพ .. สิ่งต่าง ๆ เช่นความสามารถในการดึงข้อมูลล่วงหน้า, ความเร็วบัส, จำนวนอุปกรณ์ต่อพ่วงที่ห้อยลงมาจากรถบัส, ความเร็วในการเข้าถึงแฟลชเป็นต้นเป็นต้นหากคุณทำโปรไฟล์ระบบให้ดี และกลายเป็นคอขวด ถ้าคุณบอกรายละเอียดใบสมัครของคุณฉันยินดีที่จะให้ข้อมูลเชิงลึกเกี่ยวกับเส้นทางที่ดีที่สุดในการเลือกโปรเซสเซอร์
แฟรงค์

1
@ Frank: มาตรฐาน Dhrystone ไม่ได้นำสิ่งต่าง ๆ เช่น prefetch และความเร็วบัสโดยปริยาย โดยเฉพาะอย่างยิ่งฉันต้องการให้มีการล้างตัวเลข NXP M3 ที่ขัดแย้งกัน ไม่สามารถให้รายละเอียดแก่คุณเกี่ยวกับแอปได้เนื่องจากยังไม่มีรายละเอียด :-)
Federico Russo

@ เฟรเดริโกฉันคิดว่าตัวเองต่ำกว่าวิศวกรทั่วไปไม่ใช่สถาปนิก ฉันไม่เชื่อถือมาตรฐานใด ๆ เนื่องจากมีการนวดข้อมูลเกือบตลอดเวลา ตัวอย่างเช่นหากคุณมีอ่างข้อมูลความเร็วสูงที่ต้องการให้คุณส่งข้อมูลเข้าและออกและในเวลาที่คุณต้องการเข้าถึงหน่วยความจำและอุปกรณ์ต่อพ่วงอื่น ๆ บัสกรณีนี้จะเข้าสู่ทาง โปรเซสเซอร์เหล่านี้ได้รับการออกแบบสำหรับกรณีการใช้งานโดยเฉลี่ย หากคุณทำการถอดรหัสนุ่มนวลของข้อมูลบางอย่างที่ต้องใช้หน่วยความจำหลายอ่าน / เขียนและเส้นทางข้อมูลอาจล้นหรืออดอยาก ซึ่งมักจะจบลงในคืนที่ไม่หลับสำหรับผู้ใช้ซอฟต์แวร์
Frank

ทุกวันนี้ Dhrystone เป็นของเล่นที่สนุก แต่ไม่ได้บอกอะไรคุณมากนัก มาตรฐานโดยทั่วไปไม่ได้บอกอะไรคุณมากนัก คุณต้องสมัครและเรียกใช้ คอมไพเลอร์ที่คุณเลือกไม่เปลี่ยนรหัสหรือฮาร์ดแวร์ใด ๆ สามารถสร้างความแตกต่างด้านประสิทธิภาพบวกหรือลบได้หลายครั้งดังนั้นทั้งหมดนี้เป็นเรื่องยากมาก คุณสามารถสร้างมาตรฐานที่ทำให้ตัวเลขแสดงสิ่งที่คุณต้องการ
old_timer

ARM จะวิ่งวนรอบส่วนที่เหลือเพื่อประสิทธิภาพที่บริสุทธิ์ (ที่ขนาดใกล้เคียงกันและราคาที่คล้ายกันโดยไม่จำเป็นต้องใช้กำลัง) ฉันไม่คิดว่าแม้ 8051 จะช้าเหมือน PIC คุณสามารถเข้าใจจำนวนนาฬิกาที่หายไปที่จะทำสิ่งที่มีประโยชน์ได้หรือไม่? ใช้ asm แล้วคนใช้ C และมันดูทนไม่ได้ msp430 คุณอาจต้องการมันสำหรับแอพที่คุณปิดมันตื่นขึ้นมาหนึ่งครั้งใน Blue Moon ทำสองสิ่งแล้วเข้าสู่โหมดสลีปเช่นรีโมททีวีหรืออะไรทำนองนั้น
old_timer

คำตอบ:


9

นี่คือคำแนะนำสองสามข้อที่ฉันสามารถให้ได้ ข้อมูลจำเพาะที่ NXP มีให้สำหรับชิปทั้งหมดของพวกเขา (คอร์หน่วยความจำอุปกรณ์ต่อพ่วง) ข้อมูลจำเพาะที่ ARM มอบให้นั้นขึ้นอยู่กับแกนหลักเท่านั้น เนื่องจากตัวเลขได้มาต่างกันมันยากที่จะทำการเปรียบเทียบ

ดังนั้นฉันเสนอให้เราย้อนกลับไปดูอุปกรณ์สองชิ้น MCU ที่ใช้ NXP M0 และ MCU ที่ใช้ MXP M3

สำหรับ MCU ที่ใช้ M0 ลองดูที่ LPC1111 เมื่อ MCU ตัวนี้กำลังทำงานลูปที่ไม่ว่างก็จะใช้กระแส 3mA ที่อัตรานาฬิกา 12MHz สิ่งนี้ให้ผล 250uA / MHz ซึ่งที่ 3.3V คือ 825uW / MHz

สำหรับ MCU ที่ใช้ M3 ลองดูที่ LPC1311 เมื่อ MCU ตัวนี้กำลังทำงานลูปที่ไม่ว่างอันเดียวกันมันจะใช้กระแส 4mA ที่ 12MHz ผลผลิต 333.3uA / MHz ซึ่งเป็น 1.1mW / MHz

ถ้าเราดูที่ MSP430C1101 MCU (16 บิต) เราจะเห็นว่ามันจะใช้ 240uA ที่ 1MHz เมื่อแรงดันไฟฟ้าเป็น 3V อัตราผลตอบแทน 720uW / MHz

ต่อไปให้หันมาใช้ ATMega328 (ใช้ใน Arduino Uno) เราเห็นว่า 200uA ใช้ที่ 1MHz ด้วยแรงดัน 2V สิ่งนี้ให้ผล 400uA / MHz

ควรสังเกตว่า MSP430 และ AVR นั้นมีความจำเพาะแตกต่างกัน การใช้พลังงานของพวกเขาจะได้รับที่ 1MHz ซึ่งเป็น M0 และ M3 จะได้รับที่ 12MHz ซึ่งหมายความว่า M0 และ M3 มีความไร้ประสิทธิภาพในการปรับขนาดได้สูงสุด 12MHz ที่อบเข้าไปในตัวเลข

ค่าเหล่านี้เป็นหมายเลขการใช้ปัจจุบันทั้งหมดที่ใช้งานอยู่ หากคุณดูปริมาณการใช้ไฟฟ้าในปัจจุบันเมื่ออุปกรณ์อยู่ในสถานะสลีปคุณจะเห็นลำดับการใช้พลังงานน้อยลง ข้อดีที่ 32 บิต M0 มอบให้คือสามารถทำงานได้มากขึ้นในเวลาน้อยกว่า MCU 8 และ 16 บิต นี่หมายความว่าเวิร์กโหลดที่กำหนดจะใช้เวลามากขึ้นในสถานะสลีป M0 ในมือของวิศวกรที่ดีมักจะได้รับประสิทธิภาพการใช้พลังงานที่ดีกว่า MCU 8 บิตในมือของวิศวกรที่มีทักษะน้อยกว่าแม้ว่าความแตกต่างของการใช้พลังงานจะแตกต่างกัน

จากประสบการณ์ของฉัน M0 นั้นใกล้เคียงกับการใช้พลังงาน 16 และ 8 บิตที่คุณสามารถชดเชยความแตกต่างได้มากมาย นอกจากนี้หลายครั้งที่การใช้พลังงานของทุกสิ่งที่คุณได้แขวนอยู่กับ MCU ก็แคระ MCU ดังนั้นสำหรับแอปพลิเคชั่นจำนวนมากที่แก้ปัญหาประสิทธิภาพของ MCU ไม่ใช่สิ่งที่สำคัญที่สุด

ฉันหวังว่าจะช่วย เป็นทางยาวที่จะบอกว่าการใช้พลังงานนั้นแย่ลงเล็กน้อย แต่คุณทำได้มากขึ้นกับวงจรนาฬิกาเหล่านั้นมากกว่าชิปอื่น ๆ ดังนั้นมันขึ้นอยู่กับใบสมัครของคุณ


1
ย่อหน้าแรกของคุณ: หากตัวเลข ARM เป็นเพียงแค่แกนหลักพวกเขาควรจะสูงกว่าตัวเลข NXP ซึ่งรวมถึงพลังงานของอุปกรณ์ต่อพ่วง แต่พวกเขากำลังต่ำกว่า ฉันไม่สามารถอธิบายได้เช่นกัน
stevenvh

1
นอกจากนี้คุณควรเปรียบเทียบตัวควบคุมที่แรงดันไฟฟ้าเท่ากัน หากคุณเรียกใช้ LPC1111 ที่ 3V เช่น MSP430 การใช้พลังงานจะใกล้เคียงกันมาก ไม่เลวสำหรับ NXP ARM; MSP430 เป็นที่รู้จักสำหรับพลังงานต่ำ
stevenvh

1
ปัญหาใหญ่อย่างหนึ่งที่ฉันมีกับอุปกรณ์ ARM cortex เมื่อเทียบกับ MSP430 คืออุปกรณ์ ARM สามารถเผาวงจรประมวลผลจำนวนมากกลับสู่สภาวะการทำงานจากโหมดพลังงานต่ำ ข้อมูล RAM สูญหายและจะต้องถูกสร้างขึ้นใหม่ / เริ่มต้นใหม่ (นอกเหนือจาก SRAM สำรองแบตเตอรี่) PLL และระบบนาฬิกาจะต้องเริ่มต้นใหม่ MSP จะดำเนินการต่อจากคำสั่งถัดไปโดยที่ RAM ทั้งหมดไม่เปลี่ยนแปลงจากเมื่อเข้าสู่โหมดสลีป หากกระบวนการของคุณเกี่ยวข้องกับการเปลี่ยนบ่อยระหว่างแอ็คทีฟและโหมดสลีปดังนั้น ARM จะสูญเสีย
คุณ

3

การเปรียบเทียบ 12MHz ถึง 1MHz นั้นมีความลำเอียง - อัตราสัญญาณนาฬิกาที่สูงขึ้นนั้นต้องการกระแสน้อยกว่าต่อ MHz ตัวอย่างเช่น MSP430 รุ่นล่าสุดสามารถใช้พลังงาน 80-120uA ต่อ MHz ที่ 8 / 16MHz ในโหมดแอคทีฟ

เป็นมูลค่าการกล่าวขวัญว่ารหัสที่เขียนอย่างถูกต้องช่วยให้โหมดการใช้งานของ MCU ต่ำกว่า 1% (หรือแม้แต่ 0.1%) ของเวลาดังนั้นโหมดพลังงานสร้างความแตกต่างมากมายที่นี่

ในชีวิตจริง MSP430 นั้นยากที่จะเอาชนะ (ฉันไม่ใช่พนักงานของ TI) เนื่องจากสถานะพลังงานต่ำที่มีประโยชน์มากที่ MCUs อื่นใช้เวลานานในการตื่นขึ้นมาหรือไม่เก็บเนื้อหา RAM ซึ่งไร้สาระ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.