Mikrodenetleyicilerin neden bu kadar az RAM'i var?


39

Belki de bu daha çok algılayıcı bir sorundur, ancak mikro denetleyicilerin son 20 yılda, neredeyse her açıdan, daha yüksek saat hızı, daha fazla çevre birimi, daha kolay hata ayıklama, 32-bit çekirdek, vb.

RAM’i 10's KB’de (16/32 KB) görmek hala yaygındır.

Doğrudan bir maliyet veya boyut sorunu gibi görünmüyor. RAM denetleyicisiyle bir miktar eşiğin üstünde bir karmaşıklık sorunu mu?

Yoksa sadece genel olarak gerekli değil mi?

Popüler bir İnternet sağlayıcısındaki parça matrisine baktığımda , 256 KB'lık bir Cortex M4'ü 8 dolardan daha düşük bir fiyatla görüyorum ve birkaç dolar daha uzun süre ROMASIZ olan bir kaç tane daha bulabilirsiniz, ancak oldukça seyrek ...

MB ile geçici depolama alanı olan bir mikrodenetleyiciye tam olarak ihtiyacım yok, ancak biri sanki ...


8
Belki de daha teknik bir sebep var, ama bana bir pazar meselesi gibi görünüyor. Mikrodenetleyicileri, bunları kullanan uygulamalarınız olduğunda, daha fazla güce ihtiyaç duyduğunuzda genellikle daha eksiksiz bir gömülü sisteme geçersiniz.
Jarrod Christman

15
10'ar kB. Bu çok büyük. Prototip
yapımında

2
Bir keresinde 86B'de 2KB RAM ile bir Arduino'ya 3B yazılım rasterleştiricisi yazmıştım. Beni üzdü çünkü 10KB ya da 50KB bile olsa gerçekte hafızaya gerçek modeller yerleştirmeye başlayabilirdim ve ilginç bir şey yapabilirdim. ”Aslında tam olarak aynı soruyu sordum ve şu anki cevapları sanmıyorum. yeterince iyi konuş. Evet SRAM pahalıdır - ancak CPU'ların SRAM'den üretilen megabayt önbellekleri vardır ve yine de oldukça ucuzdurlar. Bir topal bahane gibi geliyor.
imallett

2
@slebetman çok daha iyi cihazlar daha yaygın ve daha ucuz olduğunda 20 yaşında bir mikro gibi herhangi bir nedenle?
işaretler

3
it seems like somebody mightBurada yakalamak, çoğu insan yok. Netflix'i o yonga üzerinde tam olarak yayınlamayacaksınız ve 64K genellikle bir mikro denetleyiciyle yapmanız gereken her şey için fazlasıyla yeterli . Daha yükseğe çıkmak istiyorsanız, tam gelişmiş bir kompozisyon elde edin, örneğin ahududu.
TC1

Yanıtlar:


44

Bunun birkaç nedeni var.

Her şeyden önce, bellek çok fazla silikon alan kaplar. Bu, RAM miktarını arttırmanın doğrudan çipin silikon alanını ve dolayısıyla maliyeti arttırdığı anlamına gelir. Daha büyük silikon alanın fiyat üzerinde 'iki kat' etkisi vardır: daha büyük cipsler gofret başına daha az cips anlamına gelir, özellikle kenar çevresinde ve daha büyük cipsler her cipsin bir kusur alma olasılığının daha yüksek olduğu anlamına gelir.

İkincisi süreç meselesidir. RAM dizileri mantıktan farklı şekillerde optimize edilmeli ve aynı çipin farklı parçalarını farklı işlemlerle göndermek mümkün değildir - bütün çip aynı işlemle üretilmelidir. DRAM üretmeye adanmış az ya da çok yarı iletken temeller vardır. CPU veya diğer mantık değil, sadece doğrudan DRAM. DRAM, alan açısından verimli kapasitörler ve çok düşük kaçak transistörleri gerektirir. Kondansatörlerin yapılması özel işlem gerektirir. Sızıntı yapan düşük transistörlerin yapılması, daha yavaş transistörlere neden olur; bu, DRAM okuma elektroniği için iyi bir dengedir, ancak yüksek performanslı bir mantık oluşturmak için bu kadar iyi olmaz. Bir mikroişlemci kalıbı üzerinde DRAM üretmek, bir şekilde işlem optimizasyonunu denemeniz gerektiği anlamına gelir. Büyük RAM dizilerinin aynı zamanda geniş alanları, verimi düşüren ve artan maliyetleri nedeniyle arıza yaratması daha muhtemeldir. Büyük RAM dizilerinin test edilmesi de zaman alır ve bu nedenle büyük diziler dahil olmak üzere test maliyetleri artar. Ek olarak, ölçek ekonomileri daha fazla özel mikrodenetleyiciden çok, ayrı RAM yongalarının maliyetini düşürmektedir.

Güç tüketimi başka bir neden. Gömülü uygulamaların çoğu güç kısıtlıdır ve sonuç olarak birçok mikrodenetleyici çok düşük güçte uyku durumuna geçebilecek şekilde üretilmiştir. Çok düşük güçte uyku sağlamak için SRAM, içeriğini çok düşük güç tüketimi ile sürdürme kabiliyeti nedeniyle kullanılır. Batarya destekli SRAM, durumunu tek bir 3V düğmeli batarya ile yıllarca koruyabilir. Öte yandan DRAM, durumunu saniyenin bir kesirinden daha fazla tutamaz. Kondansatörler o kadar küçüktür ki, bir avuç elektron tünel dışına ve alt tabakaya tünellenir ya da hücre transistörlerinden sızar. Bununla mücadele etmek için DRAM sürekli okunmalı ve geri yazılmalıdır. Sonuç olarak, DRAM boştayken SRAM'den çok daha fazla güç tüketir.

Kapak tarafında, SRAM bit hücreleri DRAM bit hücrelerinden çok daha büyüktür, bu nedenle çok fazla bellek gerekirse, DRAM genellikle daha iyi bir seçenektir. Bu nedenle, daha büyük miktarda DRAM (MB - GB) ile birleştirilmiş yonga önbellek belleği olarak az miktarda SRAM (kB - MB) kullanmak oldukça yaygındır.

Düşük maliyetli bir gömülü sistemde mevcut RAM miktarını artırmak için kullanılan bazı çok güzel tasarım teknikleri olmuştur. Bunlardan bazıları, işlemci ve RAM için ayrı kalıplar içeren çoklu yonga paketleridir. Diğer çözümler CPU paketinin üstünde pedler üretmeyi içerir, böylece bir RAM yongası üstüne istiflenebilir. Bu çözüm çok zekicedir, çünkü gerekli RAM miktarına bağlı olarak CPU üzerine üstte farklı RAM yongaları lehimlenebilir, ek bir seviye kartı yönlendirmesi gerekmez (bellek kartları çok geniştir ve çok sayıda pano alanı kaplar). Bu sistemlerin genellikle mikrodenetleyici olarak kabul edilmediğini unutmayın.

Çok küçük birçok gömülü sistem zaten çok fazla RAM gerektirmez. Çok fazla RAM'e ihtiyacınız varsa, muhtemelen SRAM yerine harici DRAM'a sahip bir üst seviye işlemci kullanmak isteyeceksiniz.


İşlemcilerin (BGA paketleri olan) üzerine yapıştırılmış / yapıştırılmış ve üzerine yapıştırılmış / yerleştirilmiş her şeyi olan gerçek RAM IC'lerini gördüm! Tahta alanı için yaptığımız şeyler !! Ruslar, TRIZ tasarım metodolojisine dikkat
çektiler

2
+1 SRAM ve DRAM arasındaki önemli ayrım için. SRAM, özellikle boştayken hem daha hızlı hem de daha verimlidir, ancak not ettiğiniz gibi, oldukça daha pahalıdır ve daha fazla alan gerektirir.
fizzle

SRAM'ın en pahalı RAM türü olduğunu sanmıyorum. Flip flop ve multiplexer kombinasyonları, SRAM'den daha iyi performans sağlayacak, ancak çok daha yüksek bir silikon maliyetiyle rastgele bir erişim belleği olarak kullanılabilir. Bu tür anılar genellikle yaklaşık 32 kelimeden daha büyük olmaz, ancak böyle bir bellek bir SRAM'ın yapamadığı şekillerde aynı anda okuyabilir ve yazabilir.
supercat

1
Doğru, kayıt dosyaları ve parmak arası terlikler SRAM'den daha pahalıdır, ancak genel amaçlı sistem belleği için kullanılmazlar.
alex.forencich

1
160kB SRAM içeren ve harici DRAM bulunmayan bir MCU’da çalışan bir HTTP sunucusu gördüm. Pek çok paralel bağlantıyı kaldıramadı ancak çalıştı.
Jan Dorniak

15

Bellek muhtemelen en fazla silikon alanı kaplar ve RAM'in kullanımı çok hızlı olması geçicidir ve durumunu korumak için sürekli güç kullanır. Çok sayıda RAM'e ihtiyaç duymazsanız, diğer birçok uygulama için kullanışlı değildir . Gömülü bir sistem tasarımcısının daha fazla RAM'e ihtiyacı varsa, yalnızca harici bir RAM yongası alırlar ve mikrodenetleyicilerin sık sık takıp çalıştırması için bu günlerde sahip oldukları çevresel bellek arabirimlerini kullanırlar. Neden genel olarak mikrokontrolörlerin hala düşük RAM yerleşiklerine sahip olduklarını görmemin nedeni budur; çünkü makul uygulama kodu ve kullanım senaryosu senaryoları normalde pek bir şeye ihtiyaç duymaz.

İşletim sistemlerinde tam olarak çalışması gereken daha büyük mimarilere ulaşmaya başladığınızda, RAM son derece önemli hale gelir, ancak bu daha sonra mikroişlemcilerden ve Beaglebone ve Raspberri Pi panolarında gördüğünüz gibi gömülü bilgisayarlardan oluşur. günler. Ve bu aşamada bile, işlemciler o kadar karmaşık ve o kadar fazla özellik barındırıyorlar ki, görevlerinde ihtiyaç duydukları RAM miktarına yer kalmayacakları için harici bellek neredeyse hiç çalışması için gerekli.

DÜZENLE:

Kişisel bir anekdot olarak, son zamanlarda hareket algılama ve nesne izleme ve takip gibi düşük çözünürlüklü bilgisayar vizyonu için kullanmak amacıyla küçük bir otonom robot kontrol panosu yaptım. Bu görev için düşük pinli ARM Cortex M3'ü seçtim ve Atmel'in SAM3 serisi işlemciler seçimine bakarken, gerçekten bulabildiğim en yüksek RAM'e gittim - çünkü bu durumda harici bir RAM IC almak istemedim. kart alanı nedeniyle ve PCB'de yüksek hızlı RAM bellek veriyolunun karmaşıklığını istememek. Bu uygulamam için, eğer mümkünse 100 KB daha fazla RAM seçeneğine sahip olmak isterdim.


iyi nokta bile güç tüketimi hakkında düşünmedim ...
Grady Player

4
“ve RAM değişken, ancak kullanımı çok hızlı, durumlarını korumak için sürekli güç kullanıyor”. SRAM dahil CMOS mantığı, durum değiştirilmediğinde çok az güç kullanır. Çoğu mikrodenetleyicinin RAM içeriğini aşırı düşük güç tüketen modlarda olsa bile koruduğuna dikkat edin.
Chris Stratton

@ChrisStratton: Birkaç farklı üreticiden, RAM'lerinden bazılarını durduran, güç tasarrufu yapmak için modları kapatan modlara sahip bir dizi mikrodenetleyici gördüm. sistem sıfırlama olmadan. Bu son kısıtlamanın amacının ne olduğundan emin değil; belirli işlemler sırasında geçici depolama için büyük miktarda RAM’e ihtiyacım varsa, ancak başka türlü değil, neden gerektiğinde açıp kapatmamam gerektiğini anlamıyorum, ancak böyle bir durumda görmedim özellik.
supercat

14

Diğer cevaplarda ortaya çıkan mükemmel noktaların yanı sıra, sınırlı RAM'in bir başka nedeni de mikrodenetleyicinin mimarisidir. Örneğin, yalnızca 448 bayt program (flash) belleğe ve 64 bayt RAM'e sahip olan Microchip PIC10LF320 modelini alın . Fakat büyük miktarlarda muhtemelen sadece 25ȼ (veya daha az) tutar. PIC10 komut sözcüğünün sınırlı büyüklüğü (12 bit) yalnızca doğrudan 128 bayt RAM adreslemesini sağlar.

Dışarıda yalnızca 8 bit adres veri yolu olan ve 256 bayt RAM'e sınırlayan başka mikrodenetleyiciler olduğundan eminim.

Ancak çoğu orta sınıf mikrodenetleyici (8 bit veri yoluna sahip olanlar dahil), 16 bit adres yoluna sahiptir. Bu yongalar için en önemli mimari husus, yonganın Harvard veya Von Neumann mimarisini kullanmasıdır.

Çoğu mikrodenetleyici, program belleği, RAM ve bellek eşlemeli G / Ç adresleri için ayrı 16 bit adres alanlarına sahip Harvard mimarisini kullanır. Böylece, bunlar için 16-bit adres veriyolu 64K (65,536) bayt RAM'e erişebilir. Mimarinin yerleştirdiği 64K'lık bir sınır var ve eğer üst seviyeye çıkmak istiyorsa, bir çeşit çağrı kullanılması gerekiyor. RAM alanı yerine program alanı için disk belleği kullanmak çok daha yaygındır.

Freescale HCS08 hattı gibi Von Neumann mimarisini kullanan mikrodenetleyiciler, program belleği, RAM ve bellek eşlemeli G / Ç arasında bölünmüş tek bir adres alanına sahiptir. Makul bir program alanına sahip olmak için, bu RAM miktarını tipik olarak 4K veya 8K ile sınırlandırır. Yine mevcut program veya RAM alanını arttırmak için çağrı kullanılabilir.


1
Yine de, PIC çekirdeğinin o kadar tamamen kod etkisiz olduğunu ve hiçbir şey için fazladan flaş kullanacağını aklınızda tutmalısınız. Çok fazla RAM gerektirmemesinin bir nedeni de, örneğin çağrı yığını derinliği üzerinde ciddi kısıtlamalar bulunmasıdır.
Lundin

@Lundin Anlaşıldı, orijinal PIC10 ve PIC12'yi derleme dilinde çok dikkatli bir şekilde programlamanız gerekiyor . Yeni PIC12F ve PIC16F cihazları şimdi 16 seviyeli bir donanım destesine ve 14 yeni talimata sahip. bazıları sadece C için eklendi, bu yüzden çok daha kullanışlı.
tcrosley

@ Lundin: 12 ve 14 bitlik talimat uzunluğuna sahip PIC yongaları, düşündüğüm kod yoğunluğu için oldukça iyi. PIC18F, HiTech derleyicisini kullanırken ve genellikle gerekli olan aşırı banka değiştirme işleminden dolayı kod yoğunluğunun gerçekten düşme eğilimindedir.
supercat

7

Şimdilik mikrodenetleyiciler ve küçük sistemler ile uzun süre çalıştıktan sonra, çok az RAM'in gerekli olduğunu belirtmek isterim. Bir MCU’nun çok fazla şey başarabilecek olmasına rağmen, bugünün trendinin öncekinden daha fazla sayıda MCU kullanmak ve daha fazla sistemi daha büyük sistemlerde dağıtmak için daha fazla kullanmak olduğunu unutmayın. Bu, Windows'ta programlanması gereken şişirilmiş geliştirme sistemlerinden farklı olarak, MCU geliştirme işleminde, çoğu zaman çok az veya hiç işletim yükü olmadan, çoğu zaman çok verimli C ve C ++ kaynak koduyla çok iyi optimize edilmiş derleyiciler kullanır. İsminizi, OS kaynakları dahil olmak üzere en az yüz kilobayt tüketmeden herhangi bir cihaza göstermek için nadiren bir Windows programı yazabilirsiniz.

Elbette, diğerlerinin de belirttiği gibi maliyet ve mekan sorunları var. Ancak buradaki eldeki tarih, bu günlerde yeni gelenler tarafından az miktarda RAM sayılan şeyin gerçekten her zamankinden biraz daha fazla olduğu ve MCU ile etkileşimde bulunmak için gereken bileşen ve cihazların kendilerini daha akıllı hale getirdiğidir. Dürüst olmak gerekirse, son zamanlarda çoğu MCU uygulamasında RAM'i en çok kullandığımda, veri kaybetme korkusu olmadan MCU'yu diğer işler için serbest bırakma, kesintiye dayalı iletişim arabellekleri oldu. Ancak, ister inan ister inanma, sıradan bir mantık ve hesaplamalı işlevsellik için, MCU'lar sınırlı RAM ve flaş kaynaklarıyla sınırlı kalıyorlar ve gerçekten çok az şeyle çok şey yapabilirsiniz.

Bir zamanlar, ham grafikli ancak "PAC Man" ve "Space Invaders" gibi karmaşık oyun mantığına sahip ünlü Video oyunlarının genellikle 8 veya 16 KB RAM'e sahip makinelerde genellikle 8K ROM'larda yapıldığını unutmayın!


Peki ya SD kartlar? SDHC kartları 256 veya 512 bayt arabellek gerektirmez mi (standart / eski SD kartlar artık üretilmez)?
Peter Mortensen

Atari 2600 Video Bilgisayar Sistemi için Pac Man'ın sürümü 4K ROM'du ve VCS'nin kendisi 128 byte RAM'e sahipti. Ancak birçok arcade makinesinde, dönemin ev bilgisayarlarına kıyasla oldukça iyi bir ROM ve RAM yığını vardı. Örneğin, Defender’ın 32K veya ROM ve 64K RAM’i olduğunu düşünüyorum, ancak 32K RAM CPU’nun bakış açısından “salt yazılabilir” idi (işlemci, ekran donanımının monitörde göstereceği verileri koyacaktır) .
supercat

@PeterMortensen Pek çok SD kartın flaşı yönetmek için bir çeşit entegre işlemcisi vardır. Bazı kartlarda, muhtemelen 16 veya 32K RAM takılı tam 32 bit ARM çekirdeği bulunur.
alex.forencich 16:14

@ alex.forencich: Evet, ancak bir SDHC SD kartını çalıştırmak için SPI arayüzü ana bilgisayar tarafında bir tampon gerektirmiyor (yerleşik sistem / mikrodenetleyici) - eski kartların aksine? Başka bir deyişle, bit adresleme artık yeni (SDHC) kartlar için mümkün değil mi? Yoksa sadece dosya sistemine mi bağlı (bit adresleme hala mümkün)? Yeni kartlar blok transferleri gerektirmiyor mu (ve böylece 256 veya 512 baytlık bir tampon gerektiriyor)?
Peter Mortensen

Evet, hatırlıyorsam 512B. Verilerin ilk X baytını atmak için verimsiz bir SD kart sürücüsü yazabilirsiniz -> "büyük" arabellek gerekmez.
domen

3

Maliyet ve üretim konusundaki mükemmel noktaların yanı sıra, çok sayıda yonga RAM için şaşırtıcı derecede az talep var.

Genellikle onlarca kB (16kB, 32kB) flaşlı ve kB aralığında (1kB, 2kB) RAM'li mikrodenetleyicilerle çalışıyorum. Çok sık flaş tükenir ve neredeyse hiç RAM tükenmez. Projelerimin çoğunda flaş sınırına oldukça yaklaşıyorum, ancak genellikle RAM'in% 20'sinden daha azına ihtiyaç duyuyorum.

Çoğu küçük mikrodenetleyicinin iki farklı rolü vardır:

  • düzenleme ve kontrol: bir makine parçasını kontrol etmeleri gerekir. Onlarca kB kod alanına sahip olan karmaşık bir denetleyici algoritması durumunda bile, çok az RAM gereklidir. Fiziksel bir işlemin kontrolü sizde ve birkaç fiziksel birim içeren değişkenlere ve belki de döngü sayacı olarak birkaç değişkene sahipsiniz. Daha fazlasına gerek yok.

  • veri işleme: Nadir durumlarda aynı anda büyük miktarda veri kaydetmeniz gerekir, harici RAM kullanabilirsiniz. Hemen hemen tüm modern mikrodenetleyicilerin bunun için doğal desteği var. Çok fazla bellek kullanan basit bir programa ihtiyacınız varsa, yüksek düzeyde bir mikrodenetleyici yerine küçük bir mikrodenetleyici ve harici RAM kullanmak hem daha ucuz hem de daha küçük olacaktır. Hiç kimse birkaç portlu, küçük flaşlı ve geniş RAMli kontrol cihazları üretmez, çünkü onlar için çok az talep vardır.


2

Bahsedilen nedenlerin tümü, elbette, teknik olarak geçerlidir ve doğrudur. Ancak, elektroniğin bir iş olduğunu ve MCU'ların elektronik endüstrisindeki en rekabetçi niş pazarlardan biri olduğunu unutmayın .

Bir MCU’nun fiyat etiketini gömülü SRAM miktarına bağlamanın gerçek nedenlerinin, maliyet nedenlerinin değil, esas olarak pazarlama nedenleri olduğunu söylemeye cüret ediyorum:

  • Çoğu tasarımda, ulaşılabilir maksimum saat frekansı sınırlayıcı faktör değildir. Bunun yerine, mevcut SRAM miktarıdır. Beni yanlış anlamayın, CPU frekansı oldukça önemlidir, ancak belirli bir MCU ailesi segmentinde , genellikle maksimum CPU frekansına bağlı olarak farklı fiyatlarda farklı cihaz modelleri teklif edilmez. Ayrıca, Flash programının depolanması diğer önemli sınırlayıcı faktördür, ancak Flash'a çok fazla odaklanmayacağım (soru özellikle SRAM'a yöneliktir).

  • Kullanılabilir SRAM'ın miktarı, MCU'nuza yerleştirebileceğiniz karmaşıklık düzeyiyle doğrudan ilişkilidir, üçüncü taraf kütüphaneleriyle veya kendi dışa aktarılmış kodunuzla. Bu nedenle, MCU fiyatlarınızı baz alarak segmentlere ayırmak “doğal” bir ölçümdür. Teknik bir müşterinin daha karmaşık görevler (daha fazla SRAM, daha fazla Flash depolama alanı) yapabilen bir MCU'nun daha pahalıya mal olması gerektiğini kabul etmesi anlaşılır bir durumdur. Burada fiyat, MCU'nun altında yatan değerin (sağlama yetenekleri) bir yansımasıdır. Flash depolama genellikle SRAM ile orantılı bir miktarda sunulur.

  • Aksine, masaüstü ve mobil CPU pazarını kullanıyorsanız, genellikle pek çok farklı SRAM boyutunda belirli bir MCU / CPU kaynağı sağlayamazsınız. Bunun yerine, fiyatlandırma şeması genellikle MCU / CPU'nun yürütme / performans yetenekleri üzerine kuruludur: frekans, çekirdek sayısı, güç verimliliği ...


Bunun muhtemelen doğru olduğunu düşünüyorum, ancak kanıt var mı? A yongasını b yongası olarak satmak için izleri bırakmak gibi mi?
Grady Oyuncu

Uhm ... ilginç düşünce. Bu tür uygulamalar hakkında kanıtım yok. Ancak, temel üretim maliyetleri hakkında ilginç bir soru getiriyor. SRAM boyutunda daha küçük bir SRAM boyutunda çizik olması durumunda silikon çipin (gofretin) boşa harcanmış gayrimenkulü daha pahalı olur mu? Ya da tek bir cihaz değil iki ürün üretmeyle ilgili artan üretim ve stok maliyetleri? Korkarım tüm elektronik endüstrisi, maliyetlerini açıkça tartışmak konusunda oldukça seçici. Bunu asla bilemeyebiliriz.
jose.angel.jimenez

1
Deliller için: MT6250, tek yonga özellikli telefonlar için kullanılan, hacimli 2 $ 'dan daha düşük maliyetli ve bir mcu'dan çok daha karmaşık olan ve 8 MB sram kalıbı içeren çok amaçlı bir çiptir. teknoloji bir SRAM zengin mcu.
hulkingtickets

Bu, "neden MCU’nun fiyat etiketi gömülü SRAM’ın miktarına bağlı?" Ancak orijinal soruya cevap vermiyor gibi görünüyor. Neden herhangi bir fiyata 512 KB SRAM-yongasında ondan daha az mikrodenetleyici mevcut ? Özel SRAM yonga üreticileri, düşük stok maliyetlerinin yalnızca 2'lerin ebatlarında özel SRAM yongaları üretmeye değdiğini düşündüğü zaman, "garip" 2 güçsüz SRAM boyutuna sahip neden bu kadar çok mikrodenetleyici var?
davidcary

1

Öncelikle, 16 KB veya 32 KB’nin muazzam miktarda bellek olduğunu ve bugün satılan çoğu mikrodenetleyicinin bu kadar fazla RAM’i olmadığını göz önünde bulundurmalısınız.

Pek çok mikrodenetleyici programında 10 veya 50 Bayt bellek gerekir. Yüzlerce Byte'da daha da karmaşık şeyler gerekir.

Temel olarak, KB'lerin sırasına göre RAM'e ihtiyaç duyduğunuz üç kullanım durumu vardır: a) Mikrodenetleyiciniz grafik yaptığında b) büyük rasgele hesaplamalar için mikrodenetleyici kullanırken c) PC arayüzleriyle arayüzeyken

İkincisi, lütfen mikrodenetleyici RAM hakkında konuşursanız, Seviye 0 / Seviye 1 önbelleği hakkında konuşacağınızı unutmayın. Bir Intel Haswell'in "sadece" 64 KByte Seviye 1 önbelleğe sahip olduğunu düşünüyorsanız, bir mikroişlemcinin RAM boyutunu yeniden gözden geçirirsiniz.

Üçüncüsü, bir mikroişlemciye herhangi bir miktarda harici RAM, özellikle de bir CPU'ya ekleyebildiğinizden daha fazlasını ekleyebilirsiniz.

Şahsen birçok mikrodenetleyici uygulaması geliştiriyorum ve hiçbir zaman 1 KB belleğe ve hatta daha fazlasına ihtiyacım olmadı. Ben de harici RAM kullanmamıştım.

Programınız ve verileriniz ROM’da olduğu için ROM’a (bugün Flash) gelirsek durum farklıdır. Mikrodenetleyicinize harici ROM bağladığınız birçok uygulama var çünkü birçok veriniz var.

Bir örneği inceleyelim: Bir mikrodenetleyici uygulamasını analiz edelim; ekranlı ve 4 Gigabayt Flash'lı taşınabilir bir MP3 çalar alıyoruz.

Bu uygulama için belki 1 KB RAM gerekir. Bu işi yapmak için yeterli. Ancak, USB'den Flash'a yazmayı hızlandırmak için daha büyük arabelleklerde biraz daha RAM kullanabilirsiniz.

Şimdi farkı görüyorsunuz: Tipik bir PC tüm programları ve verileri RAM'de tutar. Bu nedenle çok miktarda RAM'e ihtiyacı var. Mikrodenetleyici için hepsi Flash / ROM'da.


2
Birçok uygulamada RAM kullanımını hafife alıyorsunuz. Büyük miktarda değil, ama örneğe bağlı olarak belki de 10-100 faktörü ile. MP3 çalarların dijital sinyal işleme yapması gerekir.
Jason S,

Neden ikinizin de böyle şeyler söylediğini bilmek istiyorum. Ne tür C komutları RAM gerektirir. "Bu uygulamalar daha fazla RAM gerektirir" demek yerine "Ben bu işlemleri daha fazla RAM gerektirir" tercih ederim, çünkü ... "
Frederick

-1

Bir MCU tasarlarken, PC’lerde önemli olmayan koşullarla yüzleşmelisiniz.

  1. dayanıklılık

    Bileşenleri seçmek için, en iyi ve / veya en yüksek performansa sahip parçaları mutlaka kullanın, ancak birkaç yıl kullanıldıktan sonra düzgün çalıştığını kanıtlayanlar, birkaç yıl kullanılabilir olacak ve 7 gün 24 saat çalışabilecekler. yıl. Bu durum nedeniyle, eğer bir denetleyici birkaç yıldır piyasadaysa, işini iyi yapıyorsa, bugün PC standardıyla karşılaştırıldığında, RAM'in zayıf olduğu görülüyor. Ama yine de, işini iyi yapıyor ve mühendislik iyiyse değişime gerek kalmamalı.

  2. Alan, boş yer, mekan

    Mikroişlemci üniteleri tam anlamıyla mikrodur. İhtiyaç duyulan alanı mutlak asgari seviyeye indirmelisiniz. Tabii ki, 10 yaşındaki 64 KB cips ile aynı alanda 256 MB alabilirsiniz. Burası 1 numaraya işaret ediyor.

  3. Fiyat

    Sadece satın alma fiyatı değil, aynı zamanda güç tüketimi. İşletmenizdeki rakibiniz yalnızca 25 W'a ihtiyaç duyan bir giriş sistemi üzerinde kontrol sahibi olan, 1000 W'a ihtiyaç duyan bir MCU tasarlamak istemezsiniz. Tabii ki daha ucuz alım fiyatı (aynı kalitede) herzaman daha iyi.


1
Bu gerçekten yüksek güçlü bir mikroişlemci!
KyranF

2
Bir 1kW MCU'nun çok uzun süre sağlam bir durumda kalmayacağını tahmin ediyorum.
Dan Bryant,

1
Günümüzde PC tasarımında her üç nokta da son derece önemlidir.

@KyranF: Evet, her iki sayıyı da 100'e bölün. Ancak bir şey olursa, batarya uygulamaları için yüksek performanslı işlemci ve düşük güçlü mikrodenetleyiciler arasındaki göreceli güç farkını anladı.
Ben Voigt
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.