Kysymys:
Mikä on nopeampi, suoritetaanko ohjelma ROM- tai RAM-muistilta?
Prince Rambade
2015-12-02 00:37:49 UTC
view on stackexchange narkive permalink

Useimmat meistä elektroniikkataustasta tietävät, että SRAM on nopeampi kuin DRAM. Mutta mitä tulee RAM-muistin vertaamiseen ROM-levyihin, en ole varma.

Kysymykseni liittyy mikro-ohjaimeen: "Jos koodi suoritetaan suoraan RAM / ROM-levyltä, kenen suorituskyky on parempi? 1 ) suoritus RAM-muistilta tai 2) ROM-levyltä tai 3) molemmat suorittavat samanarvoisesti "

Ottaen huomioon myös sen, että ROM-levyllä on suurempi READ-nopeus. kun taas RAM-muistilla on kirjoitusominaisuuksien kompromissi lukunopeudesta.

Lue tietolomake (perusteellisesti) on paras tapa.Joskus ohjelman suorittaminen RAM-muistista on nopeampi kuin flash-muisti.Jotkut mikrot eivät voi suorittaa ohjelmia RAM-muistista ollenkaan, ja toiset saattavat toimia samalla nopeudella.
Monet nykyiset ARM Cortex-M -osat ovat erinomaisia esimerkkejä niistä, jotka * voidaan * suorittaa SRAM: ltä, mutta ovat * hitaampia *, kun teet niin, koska erillistä salamavalon ohjeistusta ei voida käyttää.Toisaalta salaman tiedonsiirto voi olla hitaampaa kuin RAM-muistiin
En voi vielä lisätä kommenttia, yritän vain olla hyödyllinen.Riippuu siitä, onko ROM itse asiassa nopeampi kuin käyttämäsi RAM.Ovatko ne yhtä nopeita?
Mutta hieman vanhemmilla ARM7-siruilla (kokemukseni oli LPC2106: lla ja LPC2148: lla) RAM-muistista erottaminen on usein nopeampaa kuin FLASH: sta.Mikä yhdessä Chrisin vastauksen kanssa osoittaa, että ainoa asia, jonka voimme sanoa, on "se riippuu".
Jos sinulla on jo laitteisto, helpoin tapa on yksinkertaisesti suorittaa kaksi skenaariota ja verrata.Jos ei, lomakkeet ovat paras veto.
Kolme vastused:
Olin Lathrop
2015-12-02 01:02:37 UTC
view on stackexchange narkive permalink

Datalehden tulisi kertoa, kuinka kauan kukin käsky kestää, ja mitä eroja RAM-muistista tai ROM-levyltä suorittamisen välillä on, jos sellaisia ​​on.

Mikro-ohjaimille, jotka tarjoavat mahdollisuuden suorittaa RAM-muistista, luultavasti nopeammin, mikä on todennäköisesti pääasia, kun ylimääräistä RAM-tilaa käytetään koodin suorittamiseen. Saattaa olla myös joitain haun päällekkäisyyksiä. Joissakin tapauksissa se voi olla nopeampi suorittaa ROM-levyltä, koska se on erillinen muisti ja RAM-muistin käyttö voi olla käynnissä samanaikaisesti.

Jälleen ainoa tapa tietää tietylle mikrolle on LUE TEKNISET TIEDOT .

Se on vielä nopeampi suorittaa rekisteristä.
@Joshua Onko sinulla esimerkkejä siitä, mitä voisit tehdä rekisteristä suoritetun ohjelman kanssa?Se näyttää jumalattomasti fiksulta, mutta rajoitettu melko pieneen ohjelmakokoon.Olen kuullut 64 kt: n grafiikkademoista, mutta 16 rekisterin demo?=)
@CortAmmon: Minulla on yksi pöydälläni istuva 512 rekisteriä, joista 400 sisältää ohjelmakoodin.RAM on 3 kertaa hitaampi, ja ROM on niin hidas, että se kopioidaan RAM-muistiin käynnistyksen yhteydessä (joka kestää 100 sekuntia millisekuntia).Minulla on SD-kortin alustus / lukija, joka mahtuu 300 rekisteriin, ilman laitteistotukea GPIO-nastojen lisäksi.Kirjoittaja ottaa vielä noin 100 rekisteröintiä, joten koko asia ei mahdu rekisteriin (tämä ei jätä tarpeeksi tekemään mitään mielenkiintoista), mutta en tarvitse alustusohjelmaa enää, joten korvaa.
Adam Haun
2015-12-02 01:24:29 UTC
view on stackexchange narkive permalink

Se riippuu kokonaan muistista ja suorittimen arkkitehtuurista. Nyrkkisääntönä on, että SRAM on nopeampi kuin salama, etenkin nopeammilla MCU: lla (> 100 MHz). SRAM-bittisolut tuottavat (enemmän tai vähemmän) logiikkatason ulostulon, kun taas flash-muistin on käytävä läpi hitaampi virran tunnistamisprosessi.

Kuinka paljon nopeampi (jos sellainen on) riippuu jälleen arkkitehtuurista - muistien sanakoko, jokaisen odotustilan määrä, välimuistin läsnäolo, suorittimen ohjeiden koko jne. Jos suoritat riittävän matalalla taajuudella, flash-muistilla ja RAM-muistilla voi olla nolla odotustilaa, joten ne saattavat juosta samalla nopeudella.

Koodilla on myös merkitystä. Jos koodisi on ehdottomasti lineaarinen (ei haarautumista), salama voi noutaa ohjeet tarpeeksi nopeasti pitääkseen prosessorin kyllästettynä myös korkeammilla taajuuksilla. Kuten Olin sanoi, Harvardin arkkitehtuurin keskusyksikkö, jolla on erilliset ohjelma- ja datanlukupolut, voisi toimia eri tavalla, kun koodi ja data ovat eri muisteissa. ja se voi olla tai ei olla yhtä nopea kuin SRAM. Kyky kirjoittaa ei välttämättä muuta; se koskee enemmän bittisolulähdön ominaisuuksia ja piirien tunnistamista.

Datalehti antaa sinulle karkean kuvan nopeuserosta, mutta ainoa tapa tietää varmasti on koodata profiili.

MarkU
2015-12-02 03:24:29 UTC
view on stackexchange narkive permalink

"Ohjelman suorittaminen" vaatii suorittimen, jossa on synkroninen kello. Hidas muisti voidaan sijoittaa joko suorittamalla koko järjestelmä riittävän hitaalla kellolla tai lisäämällä odotustilat (ylimääräiset ei-mitään-kellosyklit haku- ja dekoodausvaiheiden välillä), aktiivinen vain tietyille osoitealueille (katso esimerkiksi muinainen 8085). CPU-käskyn nouto ei tiedä eikä välitä tarkalleen, kun data on asetettu lopulliseen arvoonsa, kunhan se ei muutu asennuksen / pidon aikana.

Mikrokontrollerilla on yleensä koko muisti sirulla, joten ellei toisin mainita, oletan, että muistijärjestelmä on kaikki odottamaton tila. (mutta vahvista lukemalla tietolomake). Tyypillisten mikro-ohjainten on tarkoitus olla yksinkertaisempia, yhden sirun ratkaisuja työpöydälle verrattuna, joten odotustilat ovat epätodennäköisiä mikro-ohjaimessa. Joten on epätodennäköistä, että mikro-ohjain olisi ristiriidassa sirun muistinopeuksien kanssa.

Nopeampi muisti maksaa yleensä palkkion (suurempi jännite, pienempi kapasitanssi, enemmän kysyntä). 80xx86: lla on nopea SRAM L2-välimuistissa ja vielä nopeampi SRAM L1-välimuistissa, ja paljon hitaampaa DRAM-sirua, joka on kiinnitetty muistin ohjaimeen. Tällainen järjestelmä on paljon monimutkaisempi kuin mikro-ohjain, ja se on kysymyksen ulkopuolella. (Mutta kiinnostaa suuresti tietokoneinsinööriä!)

Itse asiassa täysin sovitettu muotoilu ei ole mahdollista ilman rajoituksia.Suoritin joko erottaa käskyt ja datamuistin, käyttää muistinopeutta liian vähän muistidata-ohjeissa, kärsii odotustiloista tai käyttää moniporttista muistia.
Odotustilat ovat melko yleisiä korkean suorituskyvyn mikrokontrollereissa.Salama on hidasta.
@AdamHaun: Kääntöpuolella monet sisäiset flash-ryhmät voivat lukea useita sanoja kerralla;Jos koodi hyppää johonkin mielivaltaiseen paikkaan flash-muodossa, ensimmäisen käskyn noutaminen voi viedä pari sykliä, mutta kun se on haettu, muutamat seuraavat ohjeet voivat olla käytettävissä ilman lisäviiveitä.Monissa tapauksissa pääsy johonkin puskurin loppupuolelle valmistelee järjestelmää lataamaan seuraavan sanasarjan.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...