Kysymys:
Miksi suhteellisen yksinkertaisemmat laitteet, kuten mikro-ohjaimet, ovat niin paljon hitaampia kuin suorittimet?
Michael
2016-04-11 23:22:45 UTC
view on stackexchange narkive permalink

Kun otetaan huomioon sama määrä putkivaiheita, sama valmistussolmu (esimerkiksi 65 nm) ja sama jännite, yksinkertaisten laitteiden tulisi toimia nopeammin kuin monimutkaisemmat. Myöskään useiden putkivaiheiden yhdistäminen yhdeksi ei saisi hidastua kertoimella kuin vaiheiden lukumäärä.

Ota nyt viisivuotias CPU, joka suorittaa 14 putkivaihetta 2,8 GHz: n taajuudella. Oletetaan, että vaiheet yhdistetään; se hidastuu alle 200 MHz: iin. Lisää nyt jännitettä ja vähennä bittien määrää sanaa kohti; se tosiasiassa nopeuttaisi asioita.

Siksi en ymmärrä, miksi monet tällä hetkellä valmistetut mikro-ohjaimet, kuten AVL, käyvät kauhistuttavalla nopeudella (kuten 20 MHz 5 V: lla), vaikka ne ovatkin paljon monimutkaisempia. Vuosia sitten valmistetut suorittimet pystyivät toimimaan 150 kertaa nopeammin tai 10 kertaa nopeammin, jos rullataan kaikki putkivaiheet yhdeksi, 1,2 V: n taajuudella. Karkeimpien kirjekuoren takaosaa koskevien laskelmien mukaan mikro-ohjainten, vaikka ne valmistettaisiin vanhentuneella vanhentuneella tekniikalla, tulisi toimia vähintään 10 kertaa nopeammin neljänneksellä toimitetusta jännitteestä.

Siten kysymys: Mitkä ovat syitä mikro-ohjaimen hitaille kellotaajuuksille?

Hyvä osa mikrokontrollereista valmistetaan vanhanaikaisella vanhentuneella tekniikalla, koska se maksetaan.
Teho.Tekijä molempien suorittimien virrankulutuksessa, ja ne ovat melko lähellä samaa suorituskykyä / wattia, tai mikro voittaa.
Ajatus siitä, että yksinkertaisempi == nopeampi, on yksinkertaisesti väärä.Suuri osa modernin cisc-prosessorin monimutkaisuudesta menee ominaisuuksiin sen nopeuttamiseksi, kuten monitasoiset välimuistit, putkistot ja haaran ennakointi
että vanha prosessori ei toimi pienestä akusta kuukausia / vuosia.käytti huippuluokan (lue: kallista) tekniikkaa päivästään.ei tarvinnut odottaa hidasta / halpaa salamaa jokaista ohjetta varten.on harvoin tarvetta mcun toimimiselle nopeasti, he voivat ottaa uuden verilogin kehittäjien vuoksi ja toteuttaa sen missä tahansa valimossa.Pidän polkupyörän vs Formula 1 -autokommentista parhaiten, mielestäni se tiivistää sen.
yksi tapa Intel parantaa mips / watin suorituskykyä yksinkertaisesti ajamalla vanhaa mallia paljon hitaammin.
"vähentää bittien määrää sanaa kohti" tekee yllättävän vähän eroa kertojan ulkopuolella.Mikä on valinnainen ominaisuus pienemmissä mikro-ohjaimissa.
.. ja voit saada 200 MHz: n mikrokontrollerin, jos haluat: http://www.marketwired.com/press-release/nxp-ships-worlds-fastest-arm-cortex-m4-and-cortex-m3-microcontrollers-nasdaq-nxpi-1594382.htm - hyödyllisesti he kertovat, että se on valmistettu 90 nm: ssä.
20 MHz ei ole ollenkaan hidas.Olemme vain hemmoteltu tietokoneiden GHz-nopeuksilla, joissa suurin osa resursseista käytetään hienon grafiikan renderöintiin.Voit lentää Kuuhun Kilohertz-prosessorilla ...
Putkilinjan koko tarkoitus on, että suoritat ohjeita niin nopeasti kuin ne käyvät läpi.Kun Kanada laittaa öljytynnyrin putkistoon, heidän ei tarvitse odottaa, kunnes Texasin jalostamo vetää sen ulos laittaakseen lisää.
"mikro-ohjaimet niin paljon hitaampia kuin suorittimet?"- Mikrokontrolleri * on * prosessori :) - vain sanomalla
Viisi vastused:
Adam Haun
2016-04-12 00:15:14 UTC
view on stackexchange narkive permalink

Nopeuteen vaikuttavat myös muut tekijät.

  • Muisti: Todellista suorituskykyä rajoittaa usein muistiviive. Intel-suorittimilla on suuret välimuistit tämän korvaamiseksi. Mikrokontrollerit eivät yleensä. Flash-muisti on paljon hitaampi kuin DRAM.

  • Virrankulutus: Sulautetuissa sovelluksissa tämä on usein iso juttu. Todelliset 200 MHz: n Intel-suorittimet kuluttivat yli 10 wattia (usein paljon enemmän) ja tarvitsivat suuren jäähdytyselementin ja tuulettimen. Se vie tilaa ja rahaa, eikä siihen edes lasketa ulkoista logiikkaa ja muistia. 20 MHz: n AVR kestää noin 0,2 wattia, mikä sisältää kaiken mitä tarvitset. Tämä liittyy myös prosessiin - nopeammat transistorit ovat yleensä vuotavampia.

  • Käyttöolosuhteet: Kuten Dmitry huomauttaa kommenteissa, monet mikro-ohjaimet voivat toimia laajalla jännitteellä ja lämpötila-alue. Että edellä mainittu ATMega toimii välillä -40 ° C - 85 ° C ja voidaan varastoida missä tahansa välillä -65 ° C - 150 ° C. (Muut MCU: t toimivat jopa 125 ° C: seen tai jopa 155 ° C: seen.) VCC-jännite voi olla mikä tahansa välillä 2,7 V - 5,5 V (5 V +/- 10% huipputehosta). Tätä Core i7 -taulukkoa on vaikea lukea, koska ne leikkaavat sallitun VCC: n valmistuksen aikana, mutta jännitteen ja lämpötilan toleranssit ovat varmasti kapeammat - ~ 3%: n jännitetoleranssi ja 105 °: n liitoslämpötila. (Vähintään 5 ° C, mutta kun vedät> 100 ampeeria, vähimmäislämpötilat eivät todellakaan ole ongelma.)

  • Porttien määrä: Yksinkertaisempi ei aina ole nopeampi. Jos olisi, Intel ei tarvitsisi mitään suorittimen arkkitehteja! Se ei ole vain putkisto; tarvitset myös asioita, kuten korkean suorituskyvyn FPU. Se nostaa hintaa. Monissa matalaluokkaisissa keskusyksiköissä on tästä syystä vain kokonaislukuprosessorit.

  • Die-alueen budjetti: Mikrokontrollerien on mahtava paljon toimintoja yhteen muottiin, joka sisältää usein sovelluksessa käytetyn muistin. (SRAM ja luotettava NOR-salama ovat melko suuria.) PC-suorittimet keskustelevat sirun ulkopuolisen muistin ja oheislaitteiden kanssa.

  • Prosessi: Nämä 5 V: n AVR: t on valmistettu vanhasta edullisesta prosessista. Muista, että ne on suunniteltu alusta alkaen halpoja. Intel myy kuluttajatuotteita korkealla marginaalilla käyttäen parasta tekniikkaa, jonka rahalla voi ostaa. Intel myy myös puhdasta CMOS: ää. MCU-prosessien on tuotettava sirulla olevaa flash-muistia, mikä on vaikeampaa.

Monet yllä olevista tekijöistä liittyvät toisiinsa.

Voit ostaa 200 MHz-mikrokontrollerit tänään ( tässä esimerkki). Tietenkin ne maksavat kymmenen kertaa enemmän kuin ne 20 MHz: n ATMegat...

Lyhyt versio on, että nopeus on monimutkaisempi kuin yksinkertaisuus ja halvat tuotteet on optimoitu halpuuteen , ei nopeutta.

Älä unohda vankkuutta: tyypillinen prosessori epäonnistuu, jos syöttöjännite muuttuu noin 5%, kun taas ATMega toimii kaikesta 1,8-5,5 V: n taajuudella 4 MHz: n taajuudella.
@DmitryGrigoryev Hyvä asia!Olen päivittänyt vastaukseni.
compumike
2016-04-12 00:06:03 UTC
view on stackexchange narkive permalink

Hitaiden nopeuksien tärkein tekninen syy on, että halvat / pienet MCU: t käyttävät vain sirulla olevaa flash-muistia ohjelmien tallennukseen (ts. ne eivät suorita RAM-muistista).

Pienet MCU: t eivät yleensä tallenna välimuistia ohjelmamuistiin, joten heidän aina täytyy lukea käsky Flashista ennen kuin se suorittaa sen jokaisessa jaksossa. Tämä antaa deterministisen suorituskyvyn ja # sykliä / operaation, on vain halvempaa / yksinkertaisempaa ja välttää PC: n kaltaiset ongelmat, joissa koodi ja data sekoittuvat, mikä luo uuden joukon uhkia puskurin ylivuotoista jne.

lukeminen flash-muistista (luokkaa 50-100ns) on paljon hitaampaa kuin lukeminen SRAM: lta tai DRAM: lta (luokkaa 10ns tai alle), ja tämä viive on suoritettava jokaisessa jaksossa, mikä rajoittaa osan kellotaajuutta. / p>

Myös teho (ja siten lämpö) kasvaa enemmän kuin lineaarisesti taajuuden kanssa.
En usko, että flash-lukeminen on missään _lähellä_ 100 ns, vai mitä?IIRC on kaksi suuruusluokkaa suurempi.Flash-ohjaimesi sisältää kuitenkin _if_ pienen DRAM-välimuistin, eikä koodi ole liian haarautunut, välimuistin osumisnopeus voi olla erittäin korkea (90% +), joten keskimääräinen viive voi olla paljon pienempi.
Tämä AT91SAM7S-tietolomake, jonka olen avannut, kertoo sisäisestä salamastaan "Nopea pääsy aika, 30 MHz: n yhden jakson pääsy pahimmassa tapauksessa" sisäiselle salamalleen.Se on 33ns.Ja siinä on yksi ennakkohakupuskurin sanasana.Off-die Flashillä voi todellakin olla suurempi latenssi.
@Jamil En muista tarkkaa kaavaa, mutta uskon sen olevan taajuuden neliö.
AndrejaKo
2016-04-11 23:28:37 UTC
view on stackexchange narkive permalink

Miksi ihmiset ajavat polkupyörällä tai pienellä moottoripyörällä, kun sinulla on Formula 1 -auto? On varmasti parempi ajaa sanomalla 300 km / h ja päästä kaikkialle heti?

Yksinkertaisesti sanottuna sinun ei tarvitse olla nopeampi kuin he ovat. Tarkoitan, että on olemassa vähän ja nopeammat mikro-ohjaimet mahdollistavat joitain asioita, mutta mitä aiot tehdä sanoen myyntiautomaatti, joka on jatkuvasti käytössä ehkä tunnin ajan päivässä? Mitä aiot tehdä TV: n sanotulla kaukosäätimellä?

Toisaalta heillä on muita tärkeitä ominaisuuksia, kuten pieni virrankulutus, paljon helpompi ohjelmoida ja niin edelleen. Pohjimmiltaan he eivät ole prosessoreita ja tekevät erilaisia ​​asioita.

Se ei ole minun kysymykseni.Ymmärrän, miksi voi haluta 1 dollarin hidasta laitetta 100 dollarin pikaisen sijaan, kun hidas riittää.En ymmärrä, miksi 1 dollarin laite toimisi koskaan ** yhtä ** hitaasti kuin se, koska yksinkertaisuus merkitsee yleensä nopeutta.
@Michael Mistä saat idean yksinkertainen = nopea?
@Michael Polkupyörä on paljon yksinkertaisempi kuin auto, mutta se on silti hitaampi.Joka tapauksessa Mattilla on oikeus.Jotain yksinkertaista ei ole automaattisesti nopeaa.Toisin sanoen, jotain nopeaa tulee olemaan monimutkaista, vain korkeammille taajuuksille tarvittavien näkökohtien vuoksi.
@MattYoung: on koko RISC-arkkitehtuurien idea: yksinkertaiset tehtävät voidaan hoitaa nopeammin kuin monimutkaiset.Ja monivaiheisen putkiston puuttuessa ohjaimesta tulee paljon yksinkertaisempi.
Suorituskykyiset CISC-prosessorit antavat yleensä enemmän ohjeita kuin yksinkertaiset upotetut prosessorit.He tekevät paljon enemmän työtä rinnakkain, joten ne ovat sekä monimutkaisempia että nopeampia.
@Michael: Yksi tapa saavuttaa nopeus on pitää käskysarja yksinkertaisena, jotta se voidaan johtaa putkilinjaan.** Se ei kuitenkaan tarkoita, että kaikki yksinkertaiset laitteistot voisivat toimia korkeilla kelloilla! ** Kuinka nopeasti jotain voi kellottaa, riippuu siitä, kuinka monta portin viivettä on pisimmällä putkivaiheella, tai jotain sellaista."Yksinkertaisessa" suunnittelussa on todennäköisesti joitain melko hitaita vaiheita, jotka rajoittavat maksimi kelloa, koska se * ei ole * voimakkaasti putkilinjainen.
@Michael $ 1 voi olla ylellisen kallis joissakin sovelluksissa, olen lukenut, että mikro-SD-korttien mikro-ohjaimet maksavat noin 19 senttiä
@Michael "se on RISC-arkkitehtuurien idea: yksinkertaiset tehtävät voidaan hoitaa nopeammin kuin monimutkaiset" Ei!Nykyaikaiset RISC-arkkitehtuurit ovat erittäin monimutkaisia, koska niiden on otettava käyttöön enemmän ohjeita (kuten SIMD) ja tuettava enemmän ominaisuuksia, kuten superskalari, hyperlangoitus, tilauksen ulkopuolinen toteutus ... Niiden monimutkaisuus voi helposti ylittää CISC-arkkitehtuurit.MIPS: llä on nykyään satoja tai tuhansia ohjeita.["CISC v. RISC on pitkälti historiallinen keskustelu"] (https://www.quora.com/What-are-CISC-and-RISC-architecture-How-do-they-differ-from-each-other)
erinomainen avausanalogiikka, tarkka JA lolworthy, lukisi uudestaan.
Spehro Pefhany
2016-04-11 23:45:48 UTC
view on stackexchange narkive permalink

On paljon ARM-ohjaimia, jotka toimivat satoja MHz tai enemmän. Kuka tarvitsee 500 MHz: n PIC-kuvan ja on valmis maksamaan riittävästi osaa perustellakseen miljoonan dollarin naamiot lähellä huipputason prosessia?

Suosittu ATmega328 on tiettävästi valmistettu 350 nm: n tekniikalla, joka on melko vähän jäljessä viimeisimmistä Intel-suorittimista (14 nm Skylake).

Jopa 8-bittiset cheapie-ohjaimet ovat hitaasti reunustaneet nopeudella, ja saat 32 ja 64 MHz PIC-ohjaimet (esimerkiksi PIC18F14K22), jotka toimivat edelleen 5 V: n jännitteellä (jälkimmäinen on huomio järjestelmän kokonaiskustannuksissa).

Yksi huomio on, että nämä ohjaimilla on arkkitehtuuri, joka on optimoitu pienille muistitiloille ja hitaille kellotaajuuksille. Kun aloitat korkean kellotaajuuden, sinun on hylättävä asiat esim. Eskalkalereilla. voisi korvata oheislaitteet, jos mikro-ohjain olisi riittävän nopea. Voit esimerkiksi pudottaa UART: n. En usko, että he kaikki olivat kaupallisesti menestyviä - Scenix-> Ubicom-> Qualcomm (peli ohi).

350 nm?Se selittäisi sen.En tiennyt, että kukaan valmistaisi mitään 20-vuotiaalla tekniikalla.
Jotkut meistä suunnittelevat edelleen (eivätkä pelkästään) 4000-sarjan CMOS: iä, mikä on jotain 3000 nm.
Vanhemmat prosessit ovat myös hyödyllisiä ihmisille, jotka käsittelevät säteilyympäristöjä tai erittäin luotettavia järjestelmiä, jotka vaativat jäljitettävyyttä.
Peli ei ole ohi - Parallax-potkuri on jatkoa kyseiselle konseptille.
@DaveTweed Tai, jos haluat kaupallisesti menestyvämmän esimerkin, katso Cypress PSoC -linjaa.
@duskwuff: En seuraa sinua.AIUI, PSoC ei tarkoita laitteiston korvaamista laiteohjelmistolla, vaan sillä on konfiguroitava laitteisto kiinteän toiminnon lohkojen korvaamiseksi.
@DaveTweed Se on outo arkkitehtuuri, jossain keskellä laitteistoa ja ohjelmistoa.PSoC: n konfiguroitavia komponentteja voidaan muokata ajon aikana, ja ne sisältävät sekä PLD-elementtejä että "datapath" -elementtejä, jotka ovat olennaisesti hyvin pieniä, erityiskäyttöisiä mikro-ohjaimia.
Ymmärrykseni mukaan Scenix-osat hallitsivat ohjelmiston syy-seuraussuhteen, joka oli paljon nopeampi kuin mikään muu ohjain, josta olen kuullut (yhden porttinastan testaaminen ja toisen ehdollisen asettaminen ehdollisesti 20ns: iin).Olen pitkään miettinyt, miksi mikrosiru ei koskaan vaivautunut tuottamaan mitään vastaavaa.
@SpheroPefhany - CD4k CMOS tulee olemaan kanssamme lähitulevaisuudessa - mikään muu ei voi palvella rooliaan lineaarisissa / loogisissa sekajärjestelmissä (joissa logiikkaa kutsutaan toimimaan lineaarisella 12/15 V syöttöjännitteellä).(Joko sitä tai modernempaa HVCMOS-prosessia, kuten ADI: n iCMOS, käytetään korvaamiseen.)
@Michael: Se ei ole vain tekniikan ikä.Koko merkitsee myös.Suuremmalla prosessikoolla on alhaisemmat vikaprosentit, mikä tarkoittaa pienempiä hylkyjä ja siten suurempaa saantoa - mikä johtaa alhaisempiin sirukustannuksiin.Jos olet valmis maksamaan 100 dollaria suorittimesta (kuten pöytätietokoneet), matalammasta tuotosta johtuvat korkeammat kustannukset ovat perusteltuja.Jos olet valmis maksamaan vain 50 senttiä, se ei ole perusteltua.
supercat
2016-04-12 19:39:36 UTC
view on stackexchange narkive permalink

Kuvittele, että haluaa tuottaa autoja. Yksi lähestymistapa olisi käyttää joukko laitteita tehtaalla peräkkäin, rakentamalla yksi auto kerrallaan. Tämä lähestymistapa voidaan tehdä vaatimattomalla määrällä kohtuullisen monimutkaisia ​​laitteita, niin monta laitetta voidaan käyttää useamman kuin yhden vaiheen suorittamiseen. Toisaalta suuri osa tehtaan laitteista istuisi edelleen suurimman osan ajasta tyhjäkäynnillä.

Toinen tapa on perustaa kokoonpanolinja niin, että heti kun ensimmäistä tuotantovaihe on saanut kyseisen auton toiminnon päätökseen, se voi sitten aloittaa vastaavan toiminnan seuraavalla autolla. Yritä käyttää yhtä laitetta uudelleen valmistusprosessin useissa vaiheissa olisi monimutkaista, joten useimmissa tapauksissa on parempi käyttää enemmän laitteita, jotka kukin on optimoitu yhden erityisen tehtävän suorittamiseen (esim. Jos on tarpeen porata 50 10 erikokoista reikää, vähimmäislaitteiden kokoonpano sisältäisi yhden poran, jossa oli 10 bittiä ja pikavaihtomekanismi, mutta kokoonpanolinjalla voi olla 50 poraa, joissa kussakin yksi pysyvästi asennettu kärki, eikä nopeaa vaihtoa tarvita .

DSP: n tai GPU: n kaltaisissa asioissa on mahdollista saavuttaa erittäin suuret nopeudet suhteellisen halvalla, koska suoritettavan työn luonne on hyvin johdonmukainen. Valitettavasti monien suorittimien on kyettävä käsittelemään monimutkaisten ohjeiden mielivaltaisia ​​virheitä. Tehokas tekeminen on mahdollista, mutta se vaatii hyvin monimutkaista ajoituslogiikkaa. Monissa nykyaikaisissa suorittimissa "työn tekemiseen" tarvittava logiikka ei ole liian monimutkaista tai kallista, mutta logiikka, joka tarvitaan kaiken muun koordinoimiseksi, on.

Anteeksi, jos unohdin sen, mutta mikä merkitys tällä on prosessoreille verrattuna 'hitaampiin' mikro-ohjaimiin?Se näyttää keskittyvän vain suorittimiin vs. (tyypillisesti jopa nopeammin) erikoistuneisiin prosessoreihin.
@underscore_d: Ensimmäinen kappale kattaa yksinkertaisemmat mikro-ohjaimet - ne ovat kuin pieni kauppa, joka rakentaa yhden auton kerrallaan.Toisessa kappaleessa todetaan, että on joitain halpoja ohjaimia, jotka voivat suorittaa paljon toimintoja hyvin nopeasti, mutta niiden toiminnot ovat rajalliset.Vaikeinta on pystyä suorittamaan mielivaltainen sekoitus toimintoja samalla, kun ne menevät päällekkäin merkittävällä (mutta erittäin vaihtelevalla) määrällä.Jos jollakin on alijärjestelmä, joka kullakin jaksolla voi hyväksyä kaksi lukua ja tuottaa kahden sykliä sitten lähetetyn luvun tuloksen, ja ...
... toinen, joka hyväksyy jokaisella jaksolla kaksi lukua ja tuottaa summan niistä, jotka lähetettiin kaksi jaksoa sitten, yrittäen selvittää, milloin arvot on lähetettävä, milloin tuloksia on saatavilla, milloin asiat pitäisi ladata ja tallentaarekistereihin jne. voi tulla hyvin monimutkaista, varsinkin jos halutaan välttää kaikkien putkilinjojen täyttämistä pisin.
Kiitos;se selvittää sen.Joo, on järkevää, että nopeat yleiskäyttöiset suorittimet aiheuttavat suurimman osan kustannuksistaan, sekä taloudellisista että energiakustannuksista, rakennustelineillä - putkistoissa, välimuistissa, aikatauluissa, RAM-ohjauksessa jne.mikrossa.Vastaavasti se ei koskaan lakkaa hämmästyttämästä minua, mitä voidaan tehdä suhteellisen pienellä kellotaajuudella prosessorissa, joka on räätälöity erityisesti yhdelle sovellukselle.Kiehtovia juttuja molemmin puolin!
@underscore_d: MIPS-arkkitehtuuri suunniteltiin olettaen, että kääntäjät olisivat vastuussa joistakin aikataulutusongelmista, mikä mahdollistaisi laitteiston yksinkertaistamisen.Luulen, että käsite ei koskaan onnistunut, koska uudemmat prosessorit vaativat usein enemmän putkivaiheita kuin vanhemmat, mutta lyhyemmillä putkistoilla varustetulle prosessorille kirjoitettu koodi ei toimi pidempien prosessorien kanssa ilman laitteistolukituksia.


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...