Cortex M0, 8 bitlik denetleyicilere kıyasla nasıl çalışır?


10

Bu belgede bir Cortex M0 için 60 DMIPS / mW, bir M3 için 31 DMIPS / mW belirtilmiştir. (İkincisi, bu belgedeki 1,25 DMIPS / MHz ve 0,19 mW / MHz'den bahsederek 6,6 DMIPS / mW veren sayılarla uyuşmuyor.)
M0 performansının / gücünün 8/16-bit kontrol cihazlarıyla nasıl karşılaştırıldığını bilen var mı? AVR, PIC ve MSP430 gibi mi? Peki M3 rakamlarıyla olan anlaşma nedir?


3
@frederico bu çok yüklü bir soru ve kolay bir cevap yok. Benim deneyimim diğer şeyler performansı belirler .. Önceden alma yetenekleri, veri yolu hızları, bir otobüs asılı çevre birimi sayısı, flaş erişim hızları vb gibi şeyler. Bir sistemi iyi profil eğer veri almak neredeyse her zaman ve dışarı şişe boynu olur. Uygulamanızı detaylandırırsanız, işlemciyi seçmek için en iyi yolun ne olduğu konusunda bilgi vermekten memnuniyet duyarız.
Frank

1
@Frank: Dhrystone karşılaştırması, önceden getirme ve veri yolu hızı gibi şeyleri kesin olarak dikkate almıyor mu? Özellikle çelişen NXP M3 rakamlarının açıklanmasını istiyorum. Uygulama hakkında ayrıntılar veremiyorum, çünkü ayrıntılar henüz yok :-)
Federico Russo

@Frederico, kendimi ortalama bir mühendisin altında görüyorum, kesinlikle bir mimar değil. Veriler neredeyse her zaman masaj yapıldığı için herhangi bir karşılaştırmaya güvenmiyorum. Örneğin, verileri içeri ve dışarı doğru itmenizi gerektiren yüksek hızlı bir veri havuzunuz varsa ve bu arada belleğe ve diğer çevre birimlerine erişmeniz gerekiyorsa, bu durum veriyolu engel olur. Bu işlemciler ortalama kullanım durumları için tasarlanmıştır. Birkaç bellek okuma / yazma gerektiren belirli verilerin yumuşak kod çözme işlemini gerçekleştiriyorsanız ve veri yolu taşabilir veya aç kalabilir. Bu genellikle yazılım kullanıcıları için uykusuz gecelerde sona erer.
Frank

Bugünlerde Dhrystone eğlenceli bir oyuncak ama çok fazla şey söylemiyor. Deneyler genel olarak size çok fazla şey anlatmaz. Uygulamanızı alıp çalıştırmalısınız. Herhangi bir kodu veya donanımı değiştirmemeyi seçtiğiniz derleyici, birkaç kat artı veya eksi performans farkı yapabilir, bu yüzden hepsi çok zordur. Numaraları istediğinizi göstermek için kıyaslamalar yapabilirsiniz.
old_timer

ARM, saf performans için geri kalanı etrafında daireler çizecek (aynı boyutta ve benzer bir fiyata, mutlaka güç değil). Bir 8051'in bile bir PIC kadar yavaş olduğunu düşünmüyorum, yararlı bir şey yapmak için kayıp saatlerin sayısını kavrayabilir misiniz? Asm kullanarak, millet C kullanır ve izlemek dayanılmaz hale gelir. Msp430, muhtemelen kapattığınız uygulamalar için istediğiniz gibi, mavi ayda bir kez uyanır, birkaç şey yapar, sonra bir TV uzaktan kumandası veya benzeri bir şey uyur.
old_timer

Yanıtlar:


9

İşte size sağlayabileceğim birkaç işaretçi. NXP'nin sağladığı özellikler, tüm yongaları (çekirdek, bellek, çevre birimleri) içindir. ARM'nin sağladığı özellikler sadece çekirdeğe dayanıyor. Sayılar farklı türetildiklerinden karşılaştırmayı yapmak gerçekten zor.

Bu yüzden, geri çekilmemizi ve iki cihaza bakmamızı öneriyorum. NXP M0 tabanlı bir MCU ve MXP M3 tabanlı bir MCU.

M0 tabanlı MCU için LPC1111'e bakalım. Bu MCU meşgul bir rölanti devresi yürütürken, 12MHz saat hızında 3mA akım tüketir. Bu, 3.3V'de 825uW / MHz olan 250uA / MHz üretir.

M3 tabanlı MCU için LPC1311'e bakalım. Bu MCU aynı meşgul rölanti devresini yürütürken, 12MHz'de 4mA akım tüketir. 1.1mW / MHz olan 333.3uA / MHz.

MSP430C1101 MCU'ya (16 bit) bakarsak, voltaj 3V olduğunda 1MHz'de 240uA kullanacağını göreceğiz. Bu 720uW / MHz üretir.

Ardından, ATMega328'e (Arduino Uno'da kullanılır) dönelim. 1MHz'de 2V voltajla 200uA kullanıldığını görüyoruz. Bu 400uA / MHz üretir.

Ayrıca MSP430 ve AVR'nin farklı belirtildiği de belirtilmelidir. Güç tüketimi 1MHz'de, M0 ve M3 ise 12MHz'de verilmiştir. Bu, M0 ve M3'ün sayılarına pişmiş 12MHz'e kadar ölçeklendirme verimsizliğine sahip olduğu anlamına gelir.

Bu değerlerin tümü aktif akım tüketim sayılarıdır. Cihaz uyku durumundayken mevcut tüketime bakarsanız, daha az güç harcanan emir görürsünüz. 32bit M0'ın sağladığı avantaj, 8 ve 16 bit MCU'dan daha kısa sürede çok daha fazla iş yapabilmesidir. Bu, belirli bir iş yükü için uyku durumunda çok daha fazla zaman harcayacağı anlamına gelir. İyi bir mühendisin elindeki M0, aktif güç tüketimindeki farklılıklara rağmen, genellikle daha az yetenekli bir mühendisin elinde 8 bitlik MCU'dan çok daha iyi güç verimliliği elde edecektir.

Deneyimlerime göre M0, uygulamadaki birçok farklılığı telafi edebileceğiniz 16 ve 8 bit aktif güç tüketimine çok yakın. Ayrıca, MCU'dan sarktığınız her şeyin güç tüketimi birçok kez MCU'yu cüce eder. Dolayısıyla, MCU'nun verimliliğiyle mücadele eden birçok uygulama için en önemli şey değildir.

Umarım bu yardımcı olur. Güç tüketiminin biraz daha kötü olduğunu söylemenin uzun bir yolu, ancak bu saat döngülerinde diğer yongalardan çok daha fazla iş yapıyorsunuz. Yani, gerçekten uygulamanıza bağlıdır.


1
İlk paragrafınıza bakın: ARM rakamları hemen hemen çekirdekse, çevre birimleri gücü içeren NXP rakamlarından daha yüksek olmalıdırlar. Ama daha düşükler. Ben de açıklayamam.
stevenvh

1
Ayrıca, denetleyicileri eşit voltajlarda karşılaştırmalısınız. LPC1111'i MSP430 gibi 3V'de çalıştırırsanız güç tüketimi çok yakındır. NXP ARM için fena değil; MSP430 düşük gücü ile bilinir.
stevenvh

1
ARM korteks cihazlarında MSP430'a kıyasla yaşadığım büyük bir problem, ARM cihazlarının düşük güç modlarından çalışma durumuna geri dönerek çok fazla işlemci döngüsü yakabilmesidir. RAM verileri kaybolur ve yeniden oluşturulmalı / başlatılmalıdır (pil destekli SRAM dışında) PLL ve saat sistemi yeniden başlatılmalıdır. MSP, bir sonraki talimattan itibaren RAM'in uyku moduna geçtiği andan itibaren devam eder. İşleminiz aktif ve uyku modları arasında sık geçişler içeriyorsa ARM kaybedecektir.
u

3

12MHz ile 1MHz karşılaştırması önyargılıdır - yüksek saat hızları MHz başına daha az akım gerektirir. Örneğin, en son MSP430'lar aktif modda 8 / 16MHz ile MHz başına 80-120uA kadar düşük olabilir.

Düzgün yazılmış kodun aktif MCU modunu% 1'in (hatta% 0.1) altında tuttuğundan bahsetmek gerekir, bu nedenle güç modları burada çok fark yaratır.

Gerçek hayatta MSP430'ları yenmek zordur (ben bir TI çalışanı değilim), diğer MCU'ların uyanması daha uzun sürdüğü veya RAM içeriğini tutmadıkları çok faydalı düşük güç durumları nedeniyle bu çok saçma.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.