8 ve 16 bitlik mikrodenetleyicilerin yeri nedir? 32-bit neden devralınmadı?


9

32 bit mikrodenetleyicileri seçmek için maliyet ve performans arasındaki denge açısından gerçek kesme noktası nedir?

Başka bir deyişle, ARM mimarilerinin yükselişi ve hakimiyeti ile neden hala 8-bit ve 16-bit mikrodenetleyiciler kullanıyoruz? Hala çok daha ucuz mu?

Çok düşük kaliteli cihazların daha büyük ve daha karmaşık mimarilerin sunduğu kaynaklara ihtiyaç duymadığını anlıyorum. Bununla birlikte, maliyetler aynı aralığa yaklaşıyor gibi görünüyorsa, bunları kullanmak için gerçek motivasyon nedir?


1
Güç tüketimi?
Leon Heller

7
Gördüğüm Digikey'deki en ucuz 32-bit µC yaklaşık 0.64 $, en ucuz 8-bit 0.35 $. Milyonlarca basit widget oluşturacak büyük bir şirketseniz, bu çok büyük bir fark.
Samuel

@LeonHeller İlk bakışta hemfikirim ama önerilen cevabın yorumlarında bahsettiğim noktaya bakıyorum.
Bruno Morais

2
DigiKey'de toplu fiyatlandırmaya bakmak bile parlak bir rehber değil, seri üretilen küçük düşük güçlü gömülü uygulamalarda düzgün bir şekilde küçük mikrolar için, kimse onları DigiKey'den satın almıyor ve şansı satın almak için kalıp satın almama şansı bir tahta üzerine lehim için bir çip paketi. 8 bitlik bir mikro, her zaman 32 bitlik eşdeğer yapıdakinden daha küçük, daha basit, daha ucuz ve daha düşük güç olacaktır. Evet, marj birçok insan için önemsizliğe düşüyor, ancak toplu hacimlerde kurtarılan bir kuruşun 1 / 10'u bile buna değer.
John U

Electronic Design'ın web sitesinde karşılaştığım ilgili bir makale: 8 Bit mi yoksa 32 Bit mi? Bir Sonraki Tasarımınızın MCU'sunu Seçme
Garth Wilson

Yanıtlar:


17

Belki bir yıl önce, düşük uçlu 8-bitterler ile en ucuz 32-bit mikrodenetleyiciler arasında önemli bir fark vardı. Artık durum böyle değil.

Digi-Key toplu fiyatlandırmasına dayanarak, SOT-23-6 paketinde 2500 miktarda 35 8 için 8 bitlik bir PIC10F200 alabilirsiniz . Bir SOIC-8 paketinde 2500 miktarda 36ȼ için 32 bit CY8C4013SXI-400 (ARM Cortex-M0) elde edersiniz . (Digi-Key toplu fiyatlandırma, üreticilerin gerçekte ne ödeme yaptığı konusunda gerçekçi değildir, bu muhtemelen çok daha azdır, ancak benzer miktarlar için farklı ürünler arasında kaba bir fiyatlandırma karşılaştırması için geçerli olduğunu düşünüyorum.)

OP doğru, yakınsama yapıyorlar.

Peki 32-bit yongalar neden daha fazla kullanılmıyor? İlk paragrafımda söylediğim gibi, bu fiyat noktası ve boyut paritesi sadece son yıl veya 18 ay içinde oldu. Rekabet edebilmek için yeterli fiş bulunmadan önce hala uzun bir yol var.

Of 6875 Digi-Key mevcut ARM çipleri vardır sadece dört bir dolar altında miktar fiyatlandırma ile stok. Dört . Bu arada mühendislerin seçebileceği bir doların altında yüzlerce 8 bit yonga var.

Ancak diyelim ki en az birkaç düzine düşük-uç 32-bit mikron mevcut. Otomatik olarak 8-bit olanların üzerinden mi alınırlar?

Her şeyden önce mühendislerin onlardan haberdar edilmesi gerekir. Değişime karşı her zaman çok direnç var. Öğrenilecek yeni şeyler - donanım açısından, yeni çipi bir devreye nasıl dahil edeceğinizi öğrenme. Devre içi programcıları, yeni derleyiciler vb.Gibi yeni araçlar vardır. Ürün yazılımı mühendisleri için, yepyeni bir çevre birimi ve zamanlayıcı setinin nasıl kullanılacağını öğrenmek (çoğunlukla kayıt düzenleri ve bit anlamları).

32-bit güzel ve tüm bunlar, ama çok fazla yoğun hesaplama yapmak gerekmedikçe, ne anlamı var? Yalnızca dört GPIO pininiz varsa, 32 bit kayıt olarak dahili olarak erişilmesi, 8 bit kayıt kullanmanın avantajını sağlamaz.

Bence güç tüketimi her zaman 8 bitlik mikrolar lehine olacak.

Örneğin PIC10F200, 4 MHz'de çalışan 175 µA ve uyku modunda 2v ve 100 nA çekiyor. CY8C4013SXI-400, uyku modunda yaklaşık 800 µA @ 4MHz ve 2v ve 1 uA çalışır. (CY8C4013SXI için veri sayfasında 4 MHz veya 2v için numaralar yoktu, bu yüzden biraz tahmin yapmak zorunda kaldım - veri sayfası 2 ma 6 MHz ve 3.3v çektiğini söylüyor.)

Böylece ARM uyanıkken 4,5 kat, uyurken 10 kat fazla akım çeker. Çok fazla görünmüyor, ancak 3 ay veya bir yıl boyunca bir madeni para hücresinde çalışma arasındaki fark. (Her iki mikrodenetleyicinin çoğunlukla zamanlama, bağlantı noktaları güncelleme vb. Yaptığını ve gerçek ağır hesaplama yapmadıklarını varsayıyorum. Eğer ikincisi ise ve 8 bit mikro uzun bir süre için çok baytlı aritmetik yapmak zorundadır zaman avantajlarından bir kısmını kaybeder.)

ARM'nin 8 acıdan yaklaşık dört kat daha fazla akım çekmesi ilginçtir ve sırayla dört kat genişliğinde iç kayıtlara ve veri yollarına sahiptir. Bunun bir tesadüf olduğunu düşünmüyorum. CMOS için, güç tüketimi kabaca değiştirilen transistör sayısı ile orantılıdır ve ARM açık bir şekilde yapılan her talimat için çok daha fazlasını yapmaktadır.

Daha fazla ARM satıcısı düşük uçlu yongalar çıkardığı için, Microchip gibi satıcıların fiyatlarını daha da düşürmesi şaşırmam. Her durumda, fiyatlar daha fazla veya daha az eşit, benzer boyutta paketler, ancak aralarından seçim yapabileceğiniz çok daha az 32 bit yonga ile, 8 bitlik mikrodenetleyicilerin hala bir süre civarında olacağını düşünüyorum - özellikle de on binlerce mühendisi tanıdı.


Uyku modları uygulandığında güç tüketimi için kod verimliliğini de dikkate almanız gerekir. MCU bir tetikleyici ile uyanır, ardından bir kod yürütür ve uyku moduna geri dönerse, işi bitirmek için gereken saat tiklerinin sayısı oldukça alakalı olacaktır. Bir MCU'nun mevcut tüketiminin çoğunun tam hızda çalışan osilatörden geldiğini düşünürüm. 32 acı ile aynı işi yapmak için, 8 acı muhtemelen devir sayısının yaklaşık beş katına ihtiyaç duyacaktır, çünkü basit aritmetik yaparken bile genellikle çok daha az kod etkilidirler.
Lundin

(Ve bu çok fazla değil, çünkü 8 bitlik bir veri yoluna sahipler, ancak esas olarak piyasanın tüm ana 8-bitlerinin 70'lerden ve 80'lerden gelen eski CPU çekirdek tasarımlarına sahip oldukları için.)
Lundin

1
@Lundin Cevabımda bunu söylüyorum - eğer 8 acı ISR'de çok fazla süslü matematik yapmak zorundaysa, yine de avantajının bir kısmını kaybediyor. Ancak, yalnızca bazı bayraklar ayarlıyorsa veya bir kaydı güncelliyorsa, daha verimli olacaktır.
tcrosley

5

Üç ana nokta:

  • Fiyat
  • Boyut
  • Güç tüketimi

50 ¢ 10.000 fiş sipariş ederken çok para var. 100.000 fiş sipariş ederken daha da fazlası.

SOT23-6 paketinde bulunan PIC10 gibi 32 bit yongalardan oldukça küçük 8 bit yongalar alabilirsiniz.

32 bit yongalar, çünkü genellikle daha hızlı saatlenirler ve daha fazlasını yaparlar, 8 bitlik küçük bir yongadan çok daha fazla güç tüketirler. Piller daha hızlı bitiyor, güç sistemleri daha fazla akım sağlamak (ve dolayısıyla daha pahalı olmak) vb.

Sonuçta, yanındaki kapıya bir fincan şeker almak için neden bir juggernaut alıyorsunuz?


2
Sadece aynı üreticinin iki yongasını karşılaştırın - örneğin Microchip'ten PIC18F25K20 ve PIC32MX250F512. Her iki modern MCU. Her iki veri sayfası da Idd'e karşı saat hızına sahiptir. 8 bit'in grafiği 5mA'da, 32-bit'in 20mA'da tepesi. Bunu düşünürseniz, 8 bitlik bir işlem 8 mandalla bir şey yapar - 32 bitle 32 mandalla aynı (veya eşdeğer) olur. Bu, manipüle edilmesi gereken mandalların 4 katı, yani tipik akım tüketiminin 4 katı.
Majenko

2
32 bit için boşta akım ~ 0.5mA ile 7mA arasındadır. 8 bit'in rölanti akımı grafiği µA ölçeğinde ölçülür ve normal oda sıcaklığında çalışırken sadece 4µA 7µA'da başlar ...!
Majenko

3
Bazı veri sayfalarını kazın ve kendinizi arayın.
Majenko

2
Yani çipin yaptığı tek şey işlemek. Harici sensörlerden veri okumak gibi çipin hızına bağlı olmayan şeyler zaman alır. 80MHz 32 bit CPU, 16MHz 8 bit CPU'dan daha hızlı bir 100KHz I2C cihazı okumaz.
Majenko

3
Eski yazılımları (özellikle sertifika gerektiren sistemler için) ve geliştiricinin tanıdıklığını, çevresel / RAM / flash bileşen seçimini (daha yüksek performanslı bir işlemciye sahip bir mikrodenetleyici tasarımı bellek için daha fazla yonga alanı kullanacaktır; 256 bayt RAM'li bir Cortex-M yakında herhangi bir zamanda olası görünmüyor) ve paket / voltaj seçenekleri. İyi bir yanıt, 16 bit pazarın neden daha iyi performans göstermediğini (ve AVR gibi daha modern 8 bit ISA'ları) ve 4 bit pazarın neden çok kısıtlı göründüğünü (saatler ve başka ne?) Açıklamalıdır.
Paul A. Clayton

2

Ticari ürünler için geliştirdiğim uC uygulamaları neredeyse hiçbir zaman 8 bit'ten büyük veri boyutlarını işlemedi; bu nedenle 32-acı 8-acı ile aynı fiyat olsa bile, yine de faydası olmazdı. Başka birinin söylediği gibi, tanıdık olana gidiyoruz, böylece daha hızlı bir şekilde yumruk atabiliriz. Ancak en son geliştirdiğim, kullandığım PIC16'yı her yönden sınıra itti - ama bu veri boyutu nedeniyle değildi. Eğer böyle bir şey daha yaparsam, gerçekten ARM öğrenmeliyim.


Çoğu küçük mikro uygulama için gerekli olan en büyük veri boyutunun 16 bit veya belki 24 olacağını tahmin ediyorum. Çoğu uygulamanın 8 bit'ten büyük şeylerle fazla bir şey yapması gerekmeyecek, ancak bir şeyler yapmaları gerekecek. Öte yandan, şimdiye kadar yapılmış hemen hemen her 8-bit mikrodenetleyicinin (kesinlikle her biri değilse), 16-bit (veya daha büyük) bir işlemi gerçekleştirmek için bir dizi işlemin kullanılmasını mümkün kılan bir taşıma bayrağı vardır.
supercat

2

ARM çiplerinin bir şeyin "bilgisayar" gibi davrandığı fonksiyonların çoğunu devralmasını beklerim. Öte yandan, bir çok 8-bit mikrodenetleyici, nispeten basit bir programlanabilir mantık aygıtı veya orta sayıda kapı ile yapılabilecek şeyler yapmak için kullanılır, ancak aslında bir kullanarak daha ucuz ve / veya daha az akım çekimi ile yapılabilir basit 8-bit mikro. Daha karmaşık uygulamalar tasarlarken, 32 bit mikro kullanmak 8 bit olandan daha kolaydır, ancak bir çipin tüm amacı, örneğin belirli bir girişi izlemek ve geri almak ve eğer yüksek olursa, 200 çıkışını başlatmak 1ms aralıklarla belirli bir çıkışta darbeler, sonra 2ms aralıklarda 100, sonra 3ms'de 100, daha sonra 100ms için duraklayın ve giriş düşene kadar bunu yapmaya devam edin, bunun için kod tasarlamak gerçekten daha kolay olabilir32 bit olandan daha 8 bitlik bir mikroda. 8 bit ve 32 bit mikronlar arasındaki maliyet farkı, çoğu durumda, bir projeyi 8 bitlik bir mikroma "sığdırmak" için ek mühendislik harcamasını haklı göstermek için yeterli olmayabilir, ancak 32 bitlik bir parçanın Herhangi bir mühendislik çabasını kurtarmayın, bir kuruş bile harcamak için bir neden yoktur.


Katılıyorum, ancak iki araç zinciriyle yetkin kalmanın ve yetkin kalmanın kendi mühendislik çabalarını içerdiğine dikkat çekiyorum.
Scott Seidman

2
@ScottSeidman: Doğru. Öte yandan, bazı 8 bitlik mikronların açılışta hemen hemen kod çalıştırmaya başlayabileceğini belirtmek gerekirken, gördüğüm 32 bitlik mikrolar biraz daha uzun sürüyor.
supercat

ARM lisansının 8-bit platformları görüp göremeyeceğimizi merak ediyorum. ARM uygulamalarının, yudum gücü açısından diğer platformların etrafında 8 bit ARMS çalıştırma halkaları yapması gereken tüm çevre birimlerini ve veri yollarını basitçe saatlendirememe gibi bazı harika özellikleri vardır. Eğer mfct CMSIS uyumlu kütüphaneler yaparsa, sonunda büyük oyuncuları yok edeceklerini düşünüyorum.
Scott Seidman

@ScottSeidman: Aslında görmek istediğim, çevre birimlerinin zamanlamaya duyarlı kısımlarının (örn. Zamanlayıcılar, baud hızı üreteçleri, vb.) CPU hızından bağımsız sabit bir zaman tabanı ile çalışmasını sağlayacak tasarımlar olurdu. , ama böyle bir konsepte çok az destek gördüm. Silikonda zor olmaz, ancak sentez araçlarının bu tür şeyleri verimli bir şekilde yapma araçlarından yoksun olduğunu tahmin ediyorum.
supercat

@supercat Diğer mikrodenetleyicilerden emin değilim, ancak PIC32, ana saatten farklı bir saat hızına ayarlanabilen çevresel bir otobüs saati konseptine sahip. Böylece CPU hızını değiştirebilirsiniz, örneğin güçten tasarruf etmek ve aynı PB saatini tutmak, böylece tüm çevresel baud hızlarınızı vb.
Yeniden

1

CPU maliyetinin ve güç tüketiminin en önemli nedenler olduğunu kabul etsem de, burada henüz görmediğim bir başka nokta da PCB alanı. Elektronik banyo tartısı gibi birçok gömülü sistem için çok fazla G / Ç'ye ihtiyaç yoktur, daha büyük veri yolu boyutuna ve daha hızlı işlemeye fayda yoktur. Ancak, orada olduğunubaskılı devre kartının yerleşimini ve yönlendirilmesini daha basit ve çoğu zaman daha küçük hale getirdiği için daha az iğneli daha küçük bir pakete fayda sağlar. Bir kart 4 katmanlı bir karttan ziyade 2 katmanlı bir kart olarak tasarlanabilirse, önemli bir maliyet tasarrufu vardır ve genellikle 8 bit işlemcilerle gelen daha küçük pim sayıları, bu tasarrufları 32- genellikle daha fazla pime ve fiziksel olarak daha büyük paketlere sahip bit işlemciler.


Bunun 2 1/2 yıllık bir soru olduğunu anlıyorsunuz, değil mi?
Olin Lathrop

@Olin Başka bir bakış açısı incinmez.
m.Alin

@OlinLathrop: evet, 8-bit CPU güdümlü saatim / takvimim gayet iyi çalışıyor. :)
Edward

0

8 bitlik dünyada bile, daha yeni türlerin eski türlerin lehine devralınması çok uzun sürdüğü bilinmektedir - MCS51'in nişlerinde hala hayatta olduğunu ve MCS48'in beklenmedik yerlerde bulunduğunu görün.

Çoğu durumda, değişiklik olmaz çünkü ek bir değer getirmez ve henüz orada kaldığı kanıtlanmamış ve / veya hala hareketli bir hedef olması beklenen yeni bir teknolojiyi öğrenme maliyeti ile birlikte gelir. MCU teknolojisine odaklanmak isteyen ancak uygulamalarına odaklanmak isteyen ve bu yılın ARM vintage'ini uyarlamak için üretim yazılımını sürekli olarak düzeltmek ve tekrar test etmek istemeyen insanlar için can sıkıcı!). Bazılarına göre artık geliştirilmemiş bir bileşen kullanılmıyor, diğerlerine göre nihayet kararlı hale geldi ve batık böcekler için geçici çözümlere ihtiyaç duysa da, bunlar için en azından kararlı bir platform sağlıyor. Lav akışı her zaman kırıldığı antipattern değildir - dağların f ... kalmasını sağlar.

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.