Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mikrokontrolery z zewnętrznym flashem ale bez cache - czy to ma sens?

Freddie Chopin 16 Wrz 2011 09:27 2282 16
  • #1 16 Wrz 2011 09:27
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Witam!

    Pytanko bardziej z tych filozoficznych filozoficznych.

    W moich planach jest układzik który ze względu na specyficzne wymagania pozwala przebierać tylko w kilku modelach mikrokontrolerów. Problem jest tego typu, że te najfajniejsze układy zwykle nie mają pamięci flash, więc potrzebny jest flash zewnętrzny. Ponieważ układy te mają mieć też SDRAM i dosyć mocno z niego korzystać "pozaprogramowo" (20-30Mbps), zastanawiam się czy takie coś w ogóle ma prawo działać szybko... W końcu zarówno program, jego stałe jak i zewnętrzny RAM będą na JEDNEJ magistrali, a ona szybciej niż rdzeń nie chodzi. Skoro w "normalnych" ARMach producenci prześcigają się w projektowaniu różnorakich akceleratorów pamięci flash z buforami predykcyjnymi i innymi cudami, to czy rdzeń pracujący "bezpośrednio" z zewnętrznego flasha (a dodatkowo równolegle z mocno używaną pamięcią SDRAM) z prędkością 100 - 120MHz ma w ogóle szansę zbliżyć się do spodziewanej wydajności, czy może układy bez cache to w ogóle jest "ślepy zaułek ewolucji" i taka sztuka dla sztuki? Może np. sens ma tylko wykonywanie kodu z wewnętrznego RAMu, bo w końcu to inna magistrala a i dostęp dużo szybszy...

    Im dłużej się nad tym zastanawiam tym bardziej wydaje mi się, że do szybkich systemów z zewnętrznymi pamięciami cache jest po prostu koniecznością, ale - jak zapewne można się domyślić - moje rozważania są czysto teoretyczne, więc chętnie posłucham kogoś bardziej doświadczonego.

    Z góry dzięki za opinie (;

    4\/3!!

    0 16
  • Pomocny post
    #3 16 Wrz 2011 10:36
    michalko12
    Specjalista - Mikrokontrolery

    Bez cache nie ma szans na sprawne działanie a i z cache to nie jest to samo co z wewnętrznym RAM i Flash. Inna sprawą jest to, że nawet jak jest zew. flash i SDRAM to i tak program jest przeładowywany do SDRAM.

    0
  • #4 16 Wrz 2011 10:50
    Freddie Chopin
    Specjalista - Mikrokontrolery

    albertb napisał:
    Freddie, bądź że trochę mniej tajemniczy.
    Podaj, które są te najfajniejsze, jakieś ramy wymagań.

    Ten się łapie:
    http://ics.nxp.com/products/lpc3000/datasheet/lpc3152.lpc3154.pdf ?

    Nie chodzi o tajemniczość, po prostu poza faktem znanego obciążenia SDRAMu (20-30Mbps) więcej nie wiem [; Chodzi o układy z kontrolerem LCD, a takich zbyt wiele nie ma, a do tego zawsze jest jakieś "ale". LPC2478 - stary (ARM7) i najwolniejszy. LPC3250 - brak flasha (ale akurat jest cache), strasznie szybki, ale znów ARM9, więc bardziej skomplikowany. LPC1850 - brak flasha i brak cache, obecnie w fazie "nowość", więc wiele rzeczy w nim nie działa. LPC1788 - Cortex-M3, ma flash, ma akcelerator flasha, troszkę mniej rozbudowany od LPC1850 (miejscami jest bardzo zbliżony do LPC2xxx). Jest jeszcze Kinetis K70, ale sample mają być dopiero w przyszłości (ponoć bardzo niedalekiej - październik), więc go nie liczę.

    Na logikę to licząc wynika, że normalny bieg programu bez cache jest w stanie zająć minimum 50% przepustowości zewnętrznego flasha (zakładając [bo nie wiem jak jest], że 1cykl = 1 odczyt), bo mniejszych rozkazów niż 2bajty nie ma w ARMach. Dodatkowo biorąc poprawkę na to, że część instrukcji jest większa (4bajty), a część instrukcji wymaga dostępu do stałych w pamięci programu (choćby dostęp do dowolnego rejestru za pomocą wskaźnika - pobranie adresu), to już nawet można powiedzieć, że obciążenie przewyższa (teoretyczną) przepustowość pamięci [quote="michalko12"]isnąć jakikolwiek dostęp do SDRAMu i czy takie coś może się zbliżyć wydajnością do układu z cache lub układu z wewnętrznym flashem i akceleratorem? Bo im dłużej o tym myślę, tym bardziej wychodzi mi, że nie ma szans...

    michalko12 napisał:
    Bez cache nie ma szans na sprawne działanie a i z cache to nie jest to samo co z wewnętrznym RAM i Flash.

    Jak dla mnie taki cache powinien (w teorii) działać minimalnie lepiej lub tak samo jak wewnętrzny flash, jeśli program nie jest serią losowych i bardzo dalekich skoków do bardzo różnych miejsc pod adresy pobierane z RAMu [;

    Cytat:
    Inna sprawą jest to, że nawet jak jest zew. flash i SDRAM to i tak program jest przeładowywany do SDRAM.

    Eeee... Nie no - zewnętrzny flash normalnie widoczny jest w pamięci, nic nie jest ładowane do RAMu czy SDRAMu... Chyba że ja o czymś nie wiem (;

    4\/3!!

    0
  • #5 16 Wrz 2011 11:25
    michalko12
    Specjalista - Mikrokontrolery

    Freddie Chopin napisał:

    Jak dla mnie taki cache powinien (w teorii) działać minimalnie lepiej lub tak samo jak wewnętrzny flash, jeśli program nie jest serią losowych i bardzo dalekich skoków do bardzo różnych miejsc pod adresy pobierane z RAMu [;

    To jest jedyny przypadek gdzie z cache powinno co najmniej tak szybko działać jak z wew. RAM i dokładnie jest tak jak mówisz czyli wszystko zależy od tego jak program jest rozskakany.



    Freddie Chopin napisał:


    Eeee... Nie no - zewnętrzny flash normalnie widoczny jest w pamięci, nic nie jest ładowane do RAMu czy SDRAMu... Chyba że ja o czymś nie wiem (;

    No jest widoczny, ale ile waitów potrzeba, żeby go obsługiwać? Tutaj już akceleratora nie ma.
    Cache jak jest przeładowywany to całymi blokami czyli idealnie pod działanie z SDRAM.

    0
  • #6 16 Wrz 2011 12:13
    Freddie Chopin
    Specjalista - Mikrokontrolery

    michalko12 napisał:
    Freddie Chopin napisał:
    Eeee... Nie no - zewnętrzny flash normalnie widoczny jest w pamięci, nic nie jest ładowane do RAMu czy SDRAMu... Chyba że ja o czymś nie wiem (;

    No jest widoczny, ale ile waitów potrzeba, żeby go obsługiwać? Tutaj już akceleratora nie ma.
    Cache jak jest przeładowywany to całymi blokami czyli idealnie pod działanie z SDRAM.

    No tak, ale "samosię" do tego SDRAMu nic nie ładuje, po prostu można sobie zrobić to samemu - problem pozostaje tak czy siak, bo SDRAM jest wciąż na tej samej magistrali, jedyne co mogłoby szybciej chodzić (niż zewnętrzny flash czy zewnętrzny RAM) to program z pamięci wewnętrznej. Chyba [;

    4\/3!!

    0
  • #7 16 Wrz 2011 12:55
    94075
    Użytkownik usunął konto  
  • #8 16 Wrz 2011 13:47
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Bardziej chodzi o to, że raczej wolałbym Cortexa, a Atmel ma też ARM9 (ten sam rdzeń nawet), więc żadna różnica [; No może poza tym, że LPC3250 jest szybszy i ma więcej RAMu [;

    EDIT:
    Swoją droga - czyżby ARM926 nie był dużo bardziej skomplikowany niż mikrokontrolerowy Cortex-M3? Wiadomo, że procki te osiągają kosmiczne prędkości (LPC3250 - 266MHz), jednak nie jestem pewien, czy taki zwyczajny człowiek jest w stanie to ogarnąć dosyć szybko, a o Cortexach jednak jakieś pojęcie już mam.

    4\/3!!

    0
  • #9 16 Wrz 2011 14:56
    michalko12
    Specjalista - Mikrokontrolery

    Freddie Chopin napisał:
    No tak, ale "samosię" do tego SDRAMu nic nie ładuje, po prostu można sobie zrobić to samemu

    Ale ja nigdzie nie mówiłem, że to "samosię". Przez tą opcje wiele urządzeń ma bardzo długi start.

    Nie wiem jak bardzo masz skomplikowany projekt, ale LPC1788 naprawdę wymiata i już jest do kupienia i nie jest w BGA.
    Właśnie zastanawiam się nad zakupem czegoś z LCD
    http://www.embeddedartists.com/products/kits/lpc1788_kit.php
    lub
    http://www.teamfdi.com/development-tools-kits/products/1/uEZGUI-1788-70WVE
    lub
    http://www.teamfdi.com/development-tools-kits/products/1/DK-57VTS-LPC1788


    Link

    0
  • #10 16 Wrz 2011 15:48
    nsvinc
    Poziom 35  

    michalko12 napisał:
    Ale ja nigdzie nie mówiłem, że to "samosię". Przez tą opcje wiele urządzeń ma bardzo długi start.

    Ale urządzenie o które pyta Freddie właśnie ma wstawać szybko ;]
    Dodatkowo, jest odgórnie preferowany scalak w BGA, bo całe urządzenie będzie 2/3 wielkości demoboarda z filmiku. Dodatkowo, na PCB jest dostępne też tylko 2/3 całkowitego miejsca - gdzieś musi być bateria...

    Patrząc na płynność wyświetlania grafiki generowanej przez LPC1788 można powiedzieć, że chyba jest wystarczająca...

    0
  • #11 16 Wrz 2011 20:58
    michalko12
    Specjalista - Mikrokontrolery

    nsvinc napisał:
    Ale urządzenie o które pyta Freddie właśnie ma wstawać szybko ;]
    Heh! Jakoś tego nigdzie we wcześniejszych postach niedoczytałem.

    nsvinc napisał:
    Dodatkowo, jest odgórnie preferowany scalak w BGA, bo całe urządzenie będzie 2/3 wielkości demoboarda z filmiku. Dodatkowo, na PCB jest dostępne też tylko 2/3 całkowitego miejsca - gdzieś musi być bateria...

    Tego tez nigdzie nie doczytałem, a wróżką nie jestem.

    0
  • #12 16 Wrz 2011 21:02
    nsvinc
    Poziom 35  

    No spoko, ja tylko uzupełniam to, czego Freddie nie napisał :D

    0
  • Pomocny post
    #13 16 Wrz 2011 21:34
    Szaflik
    Poziom 20  

    A może coś ze stajni freescale'a ? ARM9@454MHz z rodziny I.MX - ciekawa propozycja z kontrolerem LCD za niewygórowaną cenę ;) W zależności od wymagań starsza seria I.MX233 lub nowsza I.MX28 (ten ma mnóstwo opcji bootowania np. z karty SD - nie posiada jednak flashu, cache D/I) :)

    0
  • #14 16 Wrz 2011 23:54
    Freddie Chopin
    Specjalista - Mikrokontrolery

    jakby patrzeć tak bardzo wysoko, to jest w czym przebierać, tylko że te maszynki są właśnie dużo bardziej zakręcone od takiego przyjemnego Cortex-M3 (; Wysoki stopień zakręcenia niekoniecznie jest tutaj pożądany (;

    4\/3!!

    0
  • #15 17 Wrz 2011 00:08
    michalko12
    Specjalista - Mikrokontrolery

    Ja tam tez wychodzę z założenia, że CM3 to jest wszystko dla jednoosobowego "zespołu".
    Przeoranie zasobów CM3 naprawdę zajmuje dużo czasu jednej osobie.

    0
  • #16 19 Wrz 2011 18:23
    Szaflik
    Poziom 20  

    No ok ... a co z STM32 serii F2 ? Konkretny zegar, kontroler LCD (FSMC) też się znajdzie ... może coś w tym kierunku ? :)

    0
  • #17 19 Wrz 2011 19:42
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Jakby miały kontroler SDRAM to kto wie... (; Jest jeszcze STM32F4xx - 168MHz i rdzeń -M4 robi wrażenie [;

    Na razie stanęło na LPC1788.

    EDIT:
    "Kontroler LCD" w STM32F2xx i STM32F4xx to po prostu opcja w kontrolerze FSMC, a więc interfejs do zewnętrznego kontrolera LCD, a nie do samego panela.

    4\/3!!

    0