Cortex M0 hoạt động như thế nào so với bộ điều khiển 8 bit?


10

Tài liệu này trích dẫn 60 DMIPS / mW cho Cortex M0, so với 31 DMIPS / mW cho một M3. (Cái sau không đồng ý với các số trong tài liệu này , trích dẫn 1,25 DMIPS / MHz và 0,19 mW / MHz, cho 6,6 DMIPS / mW.)
Có ai biết hiệu suất / công suất M0 so với bộ điều khiển 8/16 bit như thế nào như AVR, PIC và MSP430? Và những gì đối phó với các con số M3?


3
@frederico đây là một câu hỏi rất tải và không có câu trả lời dễ dàng. Vì, kinh nghiệm của tôi là những thứ khác quyết định hiệu suất .. Những thứ như khả năng tìm nạp trước, tốc độ xe buýt, số lượng thiết bị ngoại vi treo trên xe buýt, tốc độ truy cập flash, v.v. Nếu bạn cấu hình tốt một hệ thống, bạn hầu như luôn thấy nhận được dữ liệu trong và ra trở thành cổ chai. Chà, nếu bạn nói chi tiết về ứng dụng của mình, tôi sẽ rất vui khi cung cấp cái nhìn sâu sắc về con đường tốt nhất để chọn bộ xử lý.
Frank

1
@Frank: Không phải điểm chuẩn Dhstallone có tính đến những thứ như tải trước và tốc độ xe buýt không? Tôi đặc biệt muốn xóa các số liệu NXP M3 mâu thuẫn. Không thể cung cấp cho bạn thông tin chi tiết về ứng dụng, vì chi tiết chưa tồn tại :-)
Federico Russo

@Frederico, tôi coi mình dưới mức kỹ sư trung bình, chắc chắn không phải là kiến ​​trúc sư. Tôi không tin bất kỳ điểm chuẩn nào ngoài đó vì dữ liệu hầu như luôn được mát xa. Ví dụ: nếu bạn có một kho dữ liệu tốc độ cao đòi hỏi bạn phải đẩy dữ liệu vào và ra trong thời gian trung bình bạn cần truy cập vào bộ nhớ và các thiết bị ngoại vi khác, trường hợp xe buýt này sẽ cản trở bạn. Những bộ xử lý được thiết kế cho các trường hợp sử dụng trung bình. Nếu bạn đang thực hiện giải mã mềm một số dữ liệu yêu cầu đọc / ghi bộ nhớ và đường dẫn dữ liệu có thể bị tràn hoặc chết đói. Điều này thường kết thúc trong đêm mất ngủ cho những kẻ phần mềm.
Frank

Ngày nay, Dhstallone là một món đồ chơi thú vị nhưng không cho bạn biết nhiều. Điểm chuẩn nói chung không cho bạn biết nhiều. Bạn phải lấy ứng dụng của bạn và chạy nó. Trình biên dịch bạn chọn không thay đổi bất kỳ mã hoặc phần cứng nào có thể tạo ra sự khác biệt hiệu năng nhiều lần cộng hoặc trừ, vì vậy điều này rất khó khăn. Bạn có thể tạo điểm chuẩn làm cho các con số hiển thị bất cứ điều gì bạn muốn.
old_timer

ARM sẽ chạy các vòng tròn xung quanh phần còn lại để có hiệu năng thuần túy (với kích thước tương tự và giá tương tự, không nhất thiết phải là sức mạnh). Tôi không nghĩ ngay cả một chiếc 8051 cũng chậm như PIC, bạn có thể hiểu được số lượng đồng hồ bị mất để làm bất cứ điều gì hữu ích không? Sử dụng asm, sau đó mọi người sử dụng C và nó trở nên không thể chịu đựng được khi xem. Msp430, có lẽ bạn muốn nó cho các ứng dụng khi bạn tắt nó, nó thức dậy một lần trong một mặt trăng xanh làm một vài điều sau đó đi ngủ, như một điều khiển từ xa TV hoặc một cái gì đó tương tự.
old_timer

Câu trả lời:


9

Dưới đây là một vài gợi ý mà tôi có thể cung cấp. Các thông số kỹ thuật mà NXP đang cung cấp là cho toàn bộ chip của họ (lõi, bộ nhớ, thiết bị ngoại vi). Thông số kỹ thuật mà ARM cung cấp chỉ dựa trên cốt lõi. Khi các con số có nguồn gốc khác nhau, thật khó để so sánh.

Vì vậy, tôi đề nghị chúng tôi lùi lại và xem xét hai thiết bị. MCU dựa trên NXP M0 và MCU dựa trên MXP M3.

Đối với MCU dựa trên M0, hãy nhìn vào LPC1111. Khi MCU này đang thực hiện một vòng lặp nhàn rỗi bận rộn, nó sẽ tiêu thụ 3mA dòng điện ở tốc độ xung nhịp 12 MHz. Điều này mang lại 250uA / MHz, ở mức 3,3V là 825uW / MHz.

Đối với MCU dựa trên M3, hãy nhìn vào LPC1311. Khi MCU này đang thực hiện cùng một vòng lặp nhàn rỗi bận rộn, nó sẽ tiêu thụ 4mA dòng điện ở mức 12 MHz. Năng suất 333.3uA / MHz, là 1.1mW / MHz.

Nếu chúng ta nhìn vào MCU MSP430C1101 (16 bit), chúng ta sẽ thấy nó sẽ sử dụng 240uA ở 1 MHz khi điện áp là 3V. Điều này mang lại 720uW / MHz.

Tiếp theo, hãy chuyển sang ATMega328 (được sử dụng trong Arduino Uno). Chúng tôi thấy 200uA được sử dụng ở 1MHz với điện áp 2V. Điều này mang lại 400uA / MHz.

Cũng cần lưu ý rằng MSP430 và AVR được chỉ định khác nhau. Mức tiêu thụ năng lượng của chúng được đưa ra ở mức 1 MHz, trong đó M0 và M3 được cung cấp ở mức 12 MHz. Điều này có nghĩa là M0 và M3 không hiệu quả khi nhân rộng lên đến 12 MHz được ghi vào số của chúng.

Những giá trị này là tất cả các số tiêu thụ hiện tại hoạt động. Nếu bạn nhìn vào mức tiêu thụ hiện tại khi thiết bị ở trạng thái ngủ, bạn sẽ thấy các đơn đặt hàng có cường độ ít hơn được sử dụng. Ưu điểm mà M0 32 bit cung cấp là nó có thể hoàn thành nhiều công việc hơn trong thời gian ngắn hơn MCU 8 và 16 bit. Điều này có nghĩa là với một khối lượng công việc nhất định, nó sẽ tốn nhiều thời gian hơn trong trạng thái ngủ. M0 trong tay một kỹ sư giỏi thường sẽ có hiệu suất năng lượng tốt hơn nhiều so với MCU 8 bit trong tay một kỹ sư kém kỹ năng hơn mặc dù có sự khác biệt về mức tiêu thụ năng lượng chủ động.

Theo kinh nghiệm của tôi, M0 rất gần với mức tiêu thụ năng lượng hoạt động 16 và 8 bit mà bạn có thể bù đắp cho rất nhiều sự khác biệt trong ứng dụng. Ngoài ra, nhiều lần tiêu thụ năng lượng của tất cả mọi thứ bạn có trong MCU lùn MCU. Vì vậy, đối với nhiều ứng dụng giải quyết hiệu quả của MCU không phải là điều quan trọng nhất.

Tôi hy vọng điều đó sẽ giúp. Đó là một cách dài để nói rằng tiêu thụ năng lượng là một chút tồi tệ, nhưng bạn sẽ làm được nhiều hơn với các chu kỳ xung nhịp so với các chip khác. Vì vậy, nó thực sự phụ thuộc vào ứng dụng của bạn.


1
Re đoạn đầu tiên của bạn: nếu các số liệu ARM chỉ là về lõi thì chúng phải cao hơn các số liệu NXP, bao gồm sức mạnh ngoại vi. Nhưng chúng thấp hơn. Tôi cũng không thể giải thích nó.
stevenvh

1
Ngoài ra, bạn nên so sánh các bộ điều khiển ở điện áp bằng nhau. Nếu bạn chạy LPC1111 ở 3V như MSP430 thì mức tiêu thụ năng lượng của họ rất gần. Không tệ cho NXP ARM; MSP430 được biết đến với công suất thấp.
stevenvh

1
Một vấn đề lớn mà tôi gặp phải với các thiết bị vỏ não ARM so với MSP430 là các thiết bị ARM có thể đốt cháy rất nhiều chu kỳ bộ xử lý để trở về trạng thái chạy từ chế độ năng lượng thấp. Dữ liệu RAM bị mất và phải được tạo lại / khởi tạo (ngoài SRAM được hỗ trợ bằng pin), PLL và hệ thống đồng hồ phải được khởi động lại. MSP chỉ tiếp tục từ hướng dẫn tiếp theo với tất cả RAM còn nguyên từ khi đi ngủ. Nếu quy trình của bạn liên quan đến việc chuyển đổi thường xuyên giữa chế độ hoạt động và chế độ ngủ thì ARM sẽ mất.
uɐɪ

3

So sánh 12 MHz với 1 MHz là sai lệch - tốc độ xung nhịp cao hơn đòi hỏi ít dòng điện hơn trên mỗi MHz. Ví dụ, MSP430 mới nhất có thể xuống thấp tới 80-120uA mỗi MHz với 8/16 MHz ở chế độ hoạt động.

Điều đáng nói là mã được viết đúng giữ chế độ hoạt động của MCU dưới 1% (hoặc thậm chí 0,1%) thời gian, vì vậy chế độ năng lượng tạo ra nhiều sự khác biệt ở đây.

Trong đời thực, MSP430 rất khó bị đánh bại (Tôi không phải là người có TI) do các trạng thái năng lượng thấp rất hữu ích khi các MCU khác mất nhiều thời gian hơn để thức dậy hoặc không giữ nội dung RAM, điều này thật vô lý.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.