Kysymys:
Miksi ei ole 256- tai 512-bittisiä mikroprosessoreita?
Michael harris
2012-10-04 18:02:23 UTC
view on stackexchange narkive permalink

8-bittisessä mikroprosessorissa sen tietoväylä koostuu 8 tietolinjasta. 16-bittisessä mikroprosessorissa sen tietoväylä koostuu 16 datalinjasta ja niin edelleen.

Miksi ei ole 256-bittistä eikä 512-bittistä mikroprosessoria? Mikseivät vain lisää datalinjojen määrää ja luo 256-bittisen mikroprosessorin tai 512-bittisen mikroprosessorin?

Mikä on este, joka estää 256-bittisen mikroprosessorin tai 512-bittisen prosessorin luomisen bittinen mikroprosessori?

Jopa markkinointi ei voi vain lisätä määrää ikuisesti.
"... sen tietoväylä koostuu ..." Ei niin totta näinä päivinä ...
Miksi 256-terää ei ole vielä olemassa?
@Rocket: Odota vielä muutama vuosi. Muistan jo 1970-luvulla, kun Gillette tuli esiin "Track 2" -elokuvalla. Sen piti olla suuri uusi edistysaskel. Saturday Night Live teki harhaanjohtavan "Track 3" -mainoksen iskulauseella *, koska uskot kaikkeen *. Nyt meillä on itse asiassa Track 3 (tai mitä he sitä itse asiassa kutsuvatkin). Ilmeisesti todella uskot mitään.
@OlinLathrop Katso [Gillette Fusion Power] (https://fi.wikipedia.org/wiki/Gillette_%28brand%29#Newer_products), 5 terää ja akku!
Vastaus on suunnilleen sama kuin tähän kysymykseen: Meillä on 1 & 2 & 3 & 4 & 5 & 6 & 8 & 12 & 16-sylinterisiä autoja. Miksi meillä ei ole 32-, 64- ja 128-sylinterisiä autoja?
Miksi meillä on autoja?
@Russell: Koska sylintereistä olisi sitten maailmanlaajuinen pula.
@RussellMcMahon: kuka sanoo, että emme? Tässä on Mini Cooper Diesel, jonka tilavuus on 78 litraa, kahdeksantoista sylinteriä, noin 12 turboahtinta, mielen hämmentävä 3500 hevosvoimaa ja yli 10000 lb-ft vääntömomentti: http://www.topspeed.com/cars/car-news /mini-gets-stupefyingly-ormous-diesel-engine-to-make-appearance-at-goodwood-ar92857.html
@jippie - Pidän siitä. Mutta siinä on vain 18 sylinteriä :-). Ei edes listan alimmalla tasolla 32 sylinterillä :-).
Mielenkiintoinen pieni juttu 128-bittisistä mikroprosessoreista täällä: http://en.wikipedia.org/wiki/128-bit (koska vähintään kaksi on suunniteltu, mutta mitään ei ole käytännössä).
"x-bittisessä prosessorissa on x datalinjaa." Ei. Intelin 8088, noin vuonna 1979, oli 16-bittinen proci, jossa oli 8 tietolinjaa. Intelin 80386-SX, noin vuonna 1988, oli 32-bittinen proc, jossa oli 16 datalinjaa. Motorola (Freescale) 68000, noin 1979, 32-bittinen proc, 16 datalinjaa. Motorola 68008, noin 1982, 32-bittinen proc ja 8-linjainen tietoväylä. Olen varma, että on muitakin. http://en.wikipedia.org/wiki/8088, http://en.wikipedia.org/wiki/80386SX#The_i386SX_variant, http://en.wikipedia.org/wiki/Motorola_68000, http: // fi. wikipedia.org/wiki/Motorola_68008
Transmeta toi esiin 256-bittisen prosessorin jonkin aikaa sitten. Se jäljitteli x86: ta, jotta se voisi suorittaa vakiosovelluksia. En voi puhua 256-bittisen suorituskyvystä, mutta 128-bittinen oli vähän hidas! http://en.wikipedia.org/wiki/Transmeta_Crusoe
Koska markkinat eivät ole vielä valmiita heille. Markkinoiden hyväksyntä on erittäin iso juttu hienoimmalle tuotteelle.
@OlinLathrop - Etkö tarkoita maailmanlaajuista puutetta _rei'istä? Nuo suuret kiiltävät reiät ovat kalliita, tiedät.
Kymmenen vastused:
Olin Lathrop
2012-10-04 18:39:45 UTC
view on stackexchange narkive permalink

Ajattele sitä. Mitä tarkalleen kuvittelet "256-bittisen" prosessorin olevan? Mikä tekee prosessorin bittisyydestä ensinnäkin?

Luulen, että jos lisävaatimuksia ei tehdä, prosessorin bittisyys viittaa sen ALU-leveyteen. Tämä on binääriluvun leveys, jonka se voi käsitellä natiivisti yhdellä operaatiolla. "32-bittinen" prosessori voi siis toimia suoraan enintään 32 bitin levyisillä arvoilla yksittäisissä ohjeissa. 256-bittinen prosessorisi siis sisältäisi erittäin suuren ALU: n, joka pystyy lisäämään, vähentämään, ORing, ANDing jne., 256-bittisiä numeroita yksittäisissä operaatioissa. Miksi haluat sen? Minkä ongelman vuoksi suuri ja kallis ALU kannattaa saada ja maksaa, jopa niissä tapauksissa, joissa prosessori laskee vain 100 silmukan iteraatiota ja vastaavia?

Asia on, että sinun on maksettava laaja ALU riippumatta siitä, käytätkö sitä sitten paljon vai vain pieni osa sen ominaisuuksista. 256-bittisen ALU: n perustelemiseksi sinun on löydettävä tarpeeksi tärkeä ongelma, joka voi todella hyötyä 256-bittisten sanojen manipuloinnista yksittäisissä ohjeissa. Vaikka voit todennäköisesti keksiä muutamia esimerkkejä, ei ole tarpeeksi sellaisia ​​ongelmia, jotka saavat valmistajat tuntemaan saavansa koskaan tuottoa tällaisen sirun tuottamiseen tarvittavilta merkittäviltä investoinneilta. Jos siinä on kapeita mutta tärkeitä (hyvin rahoitettuja) ongelmia, jotka voivat todella hyötyä laajasta ALU: sta, näemme sovellukselle erittäin kalliita tarkasti kohdennettuja prosessoreita. Niiden hinta kuitenkin estäisi laajan käytön kapean sovelluksen ulkopuolella, jolle se oli suunniteltu. Esimerkiksi, jos 256 bittiä mahdollistaisi tietyt salaussovellukset armeijalle, syntyisi todennäköisesti erikoistuneita 256-bittisiä prosessoreita, jotka maksavat 100--1000 dollaria. Et kuitenkaan laittaa yhtä näistä leivänpaahtimeen, virtalähteeseen tai edes autoon.

Minun pitäisi myös olla selvä, että laaja ALU ei vain kallista ALU: ta, vaan myös sirun muita osia. 256-bittinen leveä ALU tarkoittaa myös, että datapolkuja on oltava 256-bittisiä. Pelkästään se vie paljon piin aluetta. Tietojen on tultava jostain ja menemään jonnekin, joten laajaa ALU: ta on käytettävä tehokkaasti. Siinä on oltava rekisterit, välimuisti, muu muisti jne.

Toinen asia on, että voit tehdä mitä tahansa leveysaritmeettinen missä tahansa leveysprosessorissa. Voit lisätä 32-bittisen muistisanan toiseen 32-bittiseen muistisanaan PIC 18: ssa 8-ohjeissa, kun taas voit tehdä sen samalla arkkitehtuurilla, joka on skaalattu 32-bittiseksi vain kahdessa ohjeessa. Asia on, että kapea ALU ei estä sinua suorittamasta laajoja laskelmia, vain että leveät laskelmat vievät kauemmin. Kyse on siis nopeudesta, ei kyvystä. Jos tarkastelet sovellusten spektria, joiden on käytettävä tiettyjä leveyslukuja, näet hyvin harvat vaativat 256-bittisiä sanoja. Vain muutaman sovelluksen nopeuttaminen laitteistolla, joka ei auta muita, ei vain ole sen arvoista eikä tee hyvää investointia tuotekehitykseen.

Vihaan sanoa sitä, mutta olen eri mieltä täällä. Sallikaa minun keksiä esimerkki: Videopelien grafiikka. Se on pieni markkina, josta olet ehkä kuullut 10 miljardin dollarin arvosta.
@Rocket: Ensinnäkin OP kysyi * mikroprosessorista *, ei grafiikkaprosessorista. Toiseksi, grafiikan renderointi ei vaadi erityisen laajoja sanoja. Paljon pienempiä toimintoja voidaan suorittaa rinnakkain, mutta en kutsuisi 8 rinnakkaista CPU-ydintä, joista kukin työskentelee 32-bittisellä datalla "256-bittisenä" prosessorina. Viittaatko neliytimiseen tietokoneeseesi "256-bittiseen" prosessoriin vain siksi, että jokainen ydin voi toimia 64-bittisellä datalla natiivisti? Mielestäni tämä on termin väärinkäyttö, eikä edes Intelin markkinointi näytä tuottavan useita ytimiä tällä tavalla.
Siinä tapauksessa edelleen väärin. Kutsuisin Intel Pentiumia MMX: llä * mikroprosessoriksi *, ja siinä on SIMD. Tätä ei pidä sekoittaa 8 ytimeen. SIMD: n toteuttaa todellisuudessa laaja ALU. Jokaisessa ytimessä on oma laaja SIMU-yhteensopiva ALU.
@Rocket: SIMD on erityyppinen rinnakkaisuus, mutta en silti kutsuisi sitä laajaksi ALU: ksi, vain joukko pieniä ALU: ita kulkee tiiviisti rinnakkain. Et voi tehdä 256-bittistä lisäystä kaikkien kantojen kanssa, esimerkiksi sellaisella SIMD-prosessorilla. Rinnakkaisuus ei ole sama kuin laajempi ALU. Näyttää siltä, ​​että olet menossa päinvastoin. Ehkä voit kiistellä sanamuotoa siitä, mikä on rinnakkaista verrattuna laajempaan, mutta epätavanomaisten määritelmien käyttäminen ja sitten väittää, että muut tulkinnat ovat * hämmästyttävän väärät *, on vain mukana kusta kilpailussa.
Esimerkiksi SIMD-lisäyskäsky on identtinen hyvin leveän lisäyskäskyn kanssa, paitsi että siirto on rikki useissa pisteissä.
+1 Haluaisin kuitenkin lisätä tähän vastaukseen, että jos todella tarvitset tällaisia ​​toimintoja ja käytät tällaisia ​​arvoja käyttäviä algoritmeja, ** digitaalinen signaaliprosessori ** saattaa olla parempi valinta, ja ne ovat jo olemassa. Tällaisia ​​laskelmia varten pidän pientä DSP: tä, jossa on SIMD-ominaisuus (yksi käsky, useita tietoja, hyödyllisiä esimerkiksi vektorikertoimelle), paljon hyödyllisempi kuin yksinkertainen prosessori, jolla on laajempi ALU.
@Rocketmagnet kyllä, ja Intel Pentium MMX: llä ei ole "128-bittinen suoritin", se on 32-bittinen. :)
@hobbs - Ei, se on vain varhainen esimerkki SIMD: stä. Kuitenkin Intelin sirut, joissa on [AVX] (http://en.wikipedia.org/wiki/Advanced_Vector_Extensions) *, pystyvät * käsittelemään 256 bittiä tietoja ALU: ssa kullekin käskylle * jokaiselle ytimelle *. Tämä tekee niistä olennaisesti 256-bittisiä suorittimia. Tämä on selkeä esimerkki siitä, että 256-bittisillä suorittimilla on järkeä ja ne tehdään niitä haluaville markkinoille. Siksi Olin on väärässä.
@Rocket: Ainoastaan ​​siksi, että CPU voi toimia 256 bitillä kerralla tekemällä joukko toimintoja samanaikaisesti, se ei tee siitä "256-bittistä" prosessoria. Se tarkoittaisi, että se voi todella toimia suoraan 256-bittisillä leveillä numeroilla, mitä se ei voi. Kuten sanoitte itse, erillisten rinnakkaisten ALU-yksiköiden välillä ei ole kantoa, joten se ei ole 256-bittinen ALU. Sinulla näyttää olevan epätavallinen määritelmä siitä, mitä suorittimen bitti tarkoittaa. Se ei ole bittien määrä, jota se voi käsitellä kerralla, vaan sanan leveys, jonka se voi käsitellä kokonaisuutena.
@OlinLathrop - Olet liian jäykkä ajattelussa. CPU: n bittileveyden määrittelemiseksi on monia tapoja, mukaan lukien osoitteen leveys, väyläleveys, käskynleveys, rekisterikoko, ALU-leveys. On melko kohtuullista soittaa 256-bittiselle CPU: lle, jos se voi kerätä kaksi 256-bittistä pakettia muistista tai rekistereistä, käsitellä ne 256-bittisen leveän ALU: n läpi ja kirjoittaa 256 bittiä takaisin.
Kun olin koulussa, meille opetettiin, että ohjelmisto-ihmiset mittaavat bittiä "loogisen" käskysarjan leveydellä ja että laitteistohenkilöt mitasivat bittiä väyläleveydellä. Joten 8088 oli 16-bittinen prosessori ohjelmistohenkilöille ja 8-bittinen prosessori laitteistohenkilöille. 8086 oli 16-bittinen kaikille. Tietysti markkinointihenkilöt ottaisivat eniten löytämiään lukumääriä, joten toivotaan, etteivät he lue tätä kommenttiketjua ja alkavat markkinoida 512-bittisiä suorittimia! :-)
@Rocketmagnet Olin päävastauksessaan kattoi poikkeukset, kuten salauksen (yli 2000-bittinen matemaattinen operaatio, kerro, lisää) ja grafiikat. SIMD: tä käytetään laajalti grafiikassa, ja se on tapa suorittaa tämän tyyppinen matematiikka rinnakkain, mutta sillä ei ole yleiskäyttöistä tapausta. käsikoodatut algoritmit jne. 32-64-bittinen on runsaasti 99%: lle tekemistämme, surffailemme verkkosivuilla, jotka ovat täynnä tekstiä ja kuvia. Lähetä viestejä toisilleen ja peuraa foorumeita. Näiden erityistarkoitusten ulkopuolella kustannukset ovat kaukana yleisestä laskennasta, kukaan ei osta niitä.
En ole varma siitä, olisiko kaikki 256-bittiset yhdistelmät niin hyödyllisiä, koska kaiken, mikä vaatii energiaa, käyttäminen ... http://fi.wikipedia.org/wiki/Brute-force_attack#Theoretical_limits
@woliveirajr: Monet epäsymmetrisen avaimen salausalgoritmit edellyttävät kykyä laskea `(n1 * n2) mod n3`, jossa n1, n2 ja n3 ovat kaikki suuruusluokkaa 1000-4000 bittiä. Suuri kertoja voi olla hyödyllinen prosessori. Toisaalta, jos halutaan suorittaa 4096x4096-bittiset kerrannaiset, voi olla nopeampaa ja halvempaa jakaa ne 256 palaan kumpaankin 4096x16, kuin 256 palaan kumpaankin 256x256 (edellinen malli voitaisiin johtaa putkilinjaan, jotta saadaan 16 bittiä lopputulosta per sykli, ilman kantoketjua, joka on yli 32 vaihetta).
"datapolkuja on oltava 256 bittiä. Pelkästään se vie paljon piin pinta-alaa" - älä unohda loiskapasitanssia.256-bittisen rekisterin vaihtaminen -1: stä 0: een vie paljon mehua.Mikä tarkoittaa paljon hukkalämpöä.Mikä tarkoittaa kovempia faneja, suurempia faneja, faneja, jotka kuluvat ennemmin.Saat sen.
stevenvh
2012-10-04 18:23:33 UTC
view on stackexchange narkive permalink

No, en tiedä 256- tai 512-bittisestä, mutta olen kuullut 1024-bittisestä prosessorista (en löydä sitä juuri nyt). Sana on VLIW , joka tarkoittaa erittäin pitkää ohjesanaa . Joten se on komentoväylä, ei tietoväylän leveys. Etuna on, että voit toteuttaa ohjeiden tason rinnakkaisuuden (ILP) laajamittaisesti.

Ensimmäisen tapaamiseni ILP: n kanssa on täytynyt olla 20 vuotta sitten Motorola DSP: n kanssa, jolla oli ohjeita MAC: n suorittamiseen (kerro ja kerää) siirtäessäsi tietoja muistiin ja muistista, jotta voit suorittaa uuden MAC: n seuraavalla käskyllä ​​tuhlaamatta aikaa kahden MAC: n välillä tietojen siirtämiseen.
Nykyään on olemassa myös yleiskäyttöisiä ohjaimet, jotka tarjoavat tämän vaihtoehdon. VLIW soveltaa tätä paljon suuremmassa mittakaavassa.

Koska tietoväylän leveys ei ole yhtä leveä, käskyssä voi olla useita ohjeita ja vakioita. Syy miksi tietoväylä ei noudata trendi on, että se on melko hyödytön; 64-bittinen tietorekisteri voi edustaa 20 desimaalilukua. Milloin tarvitsit viimeksi 20 numeron tarkkuuden? Useimmissa sovelluksissa 10 \ $ ^ {20} \ $ = \ $ \ infty \ $.

Lisätietoja
VLIW-arkkitehtuuri

useimmat taloudelliset laskelmat :( törmää tähän ongelmaan nyt
Luulin, että x86 oli VLIW-prosessori. ;-)
@MarcusLindblom Vain jos tarkoitat VLIW-sanalla muuttuvan pituisen käskyn sanoja. ;-)
@MarcusLindblom: Tämä johtuu todennäköisesti siitä, että sillä on muuttuvan pituuden ohjeet. Yksi syy siihen, että se menee edelleen hyvin; yleiset ohjeet ovat lyhyempiä, mikä hyödyttää koodivälimuistia.
@AK4749, Suoritatko taloustoimia, jotka vaativat 20 desimaalin tarkkuudella? Vaihdan mielelläni pankkitilit kanssasi, vaikka sinun määräsi olisi Rupia.
@ThePhoton hahaha joo, kukaan ei nähnyt tämän tulevan muutama vuosi sitten, joten nyt olemme juuttuneet käyttämään temppuja, kuten dynaaminen pyöristäminen ja mitä muuta, jotta pienet FP-virheet eivät kerääntyisi vain muutaman vuoden aikana amortisoinnin aikana
@AK4749,-tilinpäätösstandardien historia ulottuu taaksepäin ennen kuin tietokoneita oli saatavilla jokaisessa pankkipalvelussa. Luulen, että Yhdysvalloissa laskelmat tehdään vain noin 0,00001 senttiin (1/100 mil). Jos suoritat rahoitusta, sinun tulee käyttää kiinteää pistettä ja käyttää maassasi yleisiä pyöristysstandardeja, älä käytä liukulukua ja yritä maksimoida tarkkuus näiden standardien ulkopuolella.
@ThePhoton Ah, mutta näe, missä meillä on väärinkäsitys. Käsittelemme rahoitusasiakkaita ja heidän * ennusteitaan *. 12-numeroinen luku ennen desimaalia voi heittää jälkiarvon peräti sadasosaan harvinaisissa tapauksissa, joissa vanhoja tapahtumia toistetaan eri tuloksilla. Yhden sentin erolla voidaan ennustaa ylimääräinen biljoona dollaria vain vuosikymmenen aikana. Ajantasainen kirjanpito on yksinkertainen, tarkka tiede. Meidän ei ole.
@AK4749 Tällöin ennusteet todennäköisesti samoin heittävät pois pankit, jotka käsittelevät tapahtumiasi käyttämällä "todellisia" kirjanpitosääntöjä. Jos aiot toteuttaa suunnitelman näiden sääntöjen perusteella, se ei anna odotettuja tuloksia, koska todelliset pankit käyttävät todellisia kirjanpitosääntöjä, ei nanosentin tarkkuutta. Ja tietysti, koska markkinat ovat epävarmat. Joten jos yhden sentin virhe alussa antaa 1 biljoonan dollarin virheen lähdössä, tuo biljoona dollari on vain simulointivaikutus, ei sellaista, jonka asiakkaidesi tulisi käyttää suunnitelmien tekemiseen.
Tietenkään he eivät koskaan käytä vuosikymmenen mittaisia ​​ennusteita nykyisten päätösten perustana, vaikka minä ohjelmoijana en olisi niin typerä. Kuitenkin (ja selkeyden vuoksi olemme ratkaisseet erilaisten virheiden ongelman, joten sitä ei ole olemassa) suurimmat asiakkaat vaativat itse asiassa tämän tyyppisiä ominaisuuksia mihin tahansa ilkeisiin tarkoituksiin, joita he päättävät olla paljastamatta toimittajilleen. Sen lisäksi, että olen työskennellyt rahoitusalueella pari vuotta, voin kertoa teille, että rahoitusyhtiöt tosiasiallisesti käyttävät tarkempia laskelmia (1/2)
(2/2) ja tarvittaessa muunnettava takaisin pienempään tarkkuuteen luovuttaessa tietoja sektorille / tytäryhtiölle, jos ne jostain syystä eivät pysty selviytymään suuremmista tarkkuusluvuista. * Pankkitoiminta * on erillinen tila * rahoituksesta *, ja sillä on hyvin erilaiset vaatimukset erilaisten tavoitteiden seurauksena.
Ants Aasma
2012-10-04 18:48:57 UTC
view on stackexchange narkive permalink

Mikroprosessorin "todistus" määritellään yleensä yleiskäyttöisten rekisterien koon perusteella. Koko määrittää, kuinka suuria lukuja prosessori pystyy käsittelemään natiivisti ja kuinka paljon muistia se voi käyttää. 64-bittiset numerot riittävät melkein mihin tahansa algoritmiin, ja osoitettavan muistin määrä (16 miljoonaa teratavua) riittää vielä pitkään. Yleiskäyttöisten rekisterien koon kasvattamisella ei yksinkertaisesti ole mitään etua. Kääntöpuolella aritmeettisten logiikkayksiköiden (ALU) alue, jota käytetään toimintojen suorittamiseen rekistereissä, skaalautuu bittien määrän neliöön. 256-bittinen ALU olisi 16x suurempi ja huomattavasti hitaampi.

Toisaalta on syytä laajentaa prosessoria, jotta monet pienemmät toiminnot voidaan suorittaa kerralla. Itse asiassa Intelin Sandy Bridge- ja Ivy Bridge -prosessorit tekevät juuri sen, niillä on 256-bittiset SIMD-rekisterit ja ne voivat tehdä kaksi aritmeettista operaatiota ja yhden muistitoiminnon jaksoa kohti. Joten voisi perustella kutsuvan heitä 256- tai jopa 768-bittisiksi prosessoreiksi, jos joku olisi harha markkinoija, joka haluaa taivuttaa säännöllisesti käytettyjä termejä.

Se on vaikuttava arkkitehtuuri.
+ 1-merkki "harhaanjohtavalle markkinoijalle, joka haluaa taivuttaa säännöllisesti käytettyjä termejä".
Kaz
2012-10-04 23:12:05 UTC
view on stackexchange narkive permalink

Ensinnäkin prosessorin bittikoko määräytyy yleensä abstraktin arkkitehtuurin mukaan, joka näkyy konekielen ohjelmoijalle, eikä toteutuksen yksityiskohdista, kuten tietoväylän koosta.

Esimerkiksi Motorola 68000 on 32-bittinen prosessori. Siinä on 32-bittiset tietorekisterit ja 32-bittiset osoiterekisterit. Tämän arkkitehtonisen perheen ensimmäinen versio paljastaa vain 24 bittiä osoiteriviä. Lisäksi on olemassa muunnelmia, joissa on vain 8-bittinen tietoväylä (joten prosessori suorittaa 32-bittiset muistitoiminnot useina pääsysykleinä).

Nyt kysymyksestä, miksi ei mennä sivuihin 256 ja 512. "Natiivisti" manipuloida monenlaisia ​​tietotyyppejä, joten on hyödyllistä tarkastella, mitä 256 tai 512 bittiä tarkoittaa kullekin näistä tietotyypeistä erikseen. Meillä on kokonaislukuja, osoittimia ja liukulukutyyppejä.

  1. Kokonaisluvut: Ohjelmat saavat paljon mittarilukemia 32- ja 64-bittisistä kokonaislukuista. Jos 64 bittiä on rajoitus, korjaukseen on oltava ohjelmistolla toteutetut bignum-kokonaisluvut. Korkean tason kielet voivat toteuttaa kokonaislukutyyppejä siten, että toiminnot siirtyvät sujuvasti "fixnumien" ja "bignumien" välillä. Tietysti otat suorituskyvyn osuman bignumeilla, mutta sinun on otettava se huomioon suuressa kuvassa: kuinka moni ohjelman toiminnoista on bignum-operaatioita. 256- tai 512-bittiset numerot eivät poista bignumien tarvetta, ne vain lisäävät tilaa, ennen kuin joudumme siirtymään bignumeihin. Jos haluat manipuloida 2048-bittisiä julkisia avaimia, 512-bittiset kokonaisluvut eivät toimi (mutta 512-bittinen bignum voi olla nopea).

  2. Osoittimet: Laajemmat osoittimet mahdollistavat kaksi asiaa: laajemmat osoiteavaruudet ja osoittimeen tallennetut lisätiedot. Osoitealueet ovat nykyään virtuaalisia, joten ne voivat kasvaa, vaikka muistot eivät kasva. On ehdotettu, että jos sinulla on 128-bittisiä osoittimia, osoitetila on niin suuri, että voit sijoittaa kaikki käyttöjärjestelmän ja ytimen käyttäjä-avaruusprosessit satunnaisiin paikkoihin yhteen suojaamattomaan tilaan, ja ne ovat epätodennäköisiä törmätä. Sen sijaan, että vain luodaan suurempi osoiteavaruus, paksumpia osoittimia voidaan käyttää bittien, jotka eivät ole osoitebittejä, kuten viittausobjektin (tyyppi, koko ja muu tieto) tai tietoturvaan liittyvien tietojen kuljettamiseen. Tällaisille asioille on todennäköisesti jonkin verran "optimaalista rasvaa", ja jos arvaaisin, korvasin sen edelleen 128 bitillä. Ei vaikuta järkevältä mennä 256-bittisiin osoittimiin, älä välitä 512. Rasvemmilla osoittimilla on haitta: ne paisuttavat kaikkia tietorakenteita, jotka sisältävät osoittimia. Ja yleensä haluat, että osoittimet ovat samankokoisia, muuten tarvitset komplikaatioita komentojoukkoarkkitehtuurissa (kuten muistisegmentit), jolloin sinulla on täydet osoittimet (segmenttikuvaaja ja siirtymä) tai vain paikalliset osoittimet (siirtymä joillakin ymmärretyillä segmenteillä) .

  3. Liukulukutyypit: Lisää bittejä liukulukuissa tarkoittaa tarkkuutta. Sanoisin, että liukulukutyypit hyötyvät eniten laajemmasta esityksestä. 256- tai 512-bittinen kelluva tyyppi parantaa numeerisen koodin vakautta ja monia iteraatioita vaativien tieteellisten laskelmien laatua ja kerää virheitä matkan varrella. Liukulukujen tarkkuus ei ole sama kuin kokonaislukujen tarkkuus: emme voi erottaa liukulukutyyppiä alueiksi, kuten kiinteät numerot vs. bignumit. Suurempi tarkkuus kelluvassa pisteessä vaikuttaa kaikkien epätarkkojen numeroiden laatuun, olivatpa ne lähellä nollaa tai suuria. Lisää bittejä liukuluku-eksponenteissa voi myös laajentaa huomattavasti liukulukujen aluetta ja paljon nopeammin kuin bittien lisääminen bignum-kokonaislukuun.

Näistä syistä epäilen, että hallitseva tulevaisuuden trendi on laitteistojen liukulukujen leveyden kasvu, jota ei välttämättä seuraa osoittimien ja kokonaislukujen leveyden kasvu.

Muista, että liukuluvut ovat jo edenneet muita tyypit aiemmin. Esimerkiksi jonkin aikaa meillä oli hallussaan 32-bittisiä prosessoreita, jotka tukivat 64-bittisiä IEEE-kaksoiskellukoita. Tämä johtuu siitä, että vaikka voit tehdä paljon 32-bittisillä osoittimilla ja kokonaisluvuilla, 32-bittiset kellukkeet ovat hyvin rajoitettuja vakavaan numeeriseen työhön.

Yksi erittäin hyödyllinen ominaisuus, jonka olisi mukava nähdä nousevan liukulukuesityksiin, olisi muutama varabitti tyyppi-tagille. Liukulukutyyppien toteuttaminen dynaamisissa, korkean tason kielissä (joissa esineillä on tyyppi, mutta tallennuspaikoilla on minkä tahansa tyyppisiä arvoja) on taistelu, koska kun taas varaosabittejä löytyy osoittimista ja kokonaislukuisista objekteista osien sijoittamiseksi tunnistettaessa tyyppitunnistetta, tätä on vaikea tehdä liukulukujen kanssa. Joten mitä usein tapahtuu, on se, että liukuluvut lasketaan kasaan. Jotkut järjestelmät varastavat bittiä mantissasta, joten tällöin kyseisen kielen kelluvat tyypit menettävät tarkkuuden verrattuna saman koneen muilla kielillä oleviin kellukkeisiin.

Mukava kuvaus. Muuten, tavallisilla x86-prosessoreilla on ollut 80-bittinen liukuluku pitkään, koska heidän ensimmäinen laitteiston liukulukuyksikkö, jos muistan oikein. 80 bittiä on FPU: n sisäinen, sitten yleensä 32 tai 64 bittiä viedään.
Teknisesti, jo tehty. Google "nan boxing" tai "nun nyrkkeily". Lupaavampia ovat laitteistotyyppiset tagit 64-bittisissä ARM-tiedostoissa, mutta valitettavasti se ei tule pian.
80-versioon oli mahdollista päästä suoraan. 90-luvulla, kun opettelin ohjelmoimaan Turbo Pascalissa, oli 80-bittinen float-tyyppi.
@DanNeely: Olen joskus ajatellut, että prosessorit hyötyisivät 3D-koordinaattien liukulukutyypeistä, yhdistämällä joko kolme 80-bittistä numeroa 256-bittiseksi palaksi tai kolme 42-bittistä numeroa 128-bittiseksi palaksi tai kolme 21- bittiset numerot 64-bittisiksi paloiksi. Mietin, kuinka vaikeaa tällainen asia olisi toteuttaa, ja kuinka hyödyllinen se voi päätyä olemaan?
@supercat GPGU Wikipedia: * Suurin osa [NVidia] GPU: n toiminnoista toimii vektoroidulla tavalla: yksi operaatio voidaan suorittaa enintään neljälle arvolle kerralla. Esimerkiksi, jos yksi väri moduloidaan toisella värillä , GPU voi tuottaa tuloksena olevan värin yhdessä operaatio.*
@Kaz: Kysymykseni perustui havaintoon, että vaikka 256 bittiä riittäisikin tallentamaan vain kaksi 80-bittistä arvoa, jotka oli pehmustettu 128 bittiin kumpaankin, kolmoset 256 bittiin saisivat paremman tallennustilan / väylän / välimuistin tehokkuuden ja numerot usein käytetään kolmoisina. Kaipaan 80-bittisiä laitteistojen liukulukutyyppejä, joita Borland-kääntäjät tukivat, ja haluaisin heidän käyttävän enemmän. Edelleen. 40-bittiset tyypit olisivat parempia kuin 32 ja 20-ikäiset paremmin kuin 16, jos XYZ-arvot tarvitsevat pieniä muotoja.
pjc50
2012-10-04 18:29:39 UTC
view on stackexchange narkive permalink

Se ei todellakaan auta sinua tekemään mitään hyödyllistä. 64-bittiset numerot antavat sinulle riittävän tarkkuuden melkein mihin tahansa tarkoitukseen (Intel-järjestelmissä on kuitenkin 80-bittinen liukuluku), mutta ylimääräiset linjat lisäävät kustannuksia ja virrankulutusta samalla, kun niillä on pieni negatiivinen vaikutus kellotaajuuteen.

Historiallisesti keskusyksiköt käyttävät bittien vähimmäismäärää, mikä on järkevää käyttötarkoitukseensa. Teknologian kehityksen myötä laajemmat väylät ja ALU: t tulivat mahdolliseksi, joten väyläkoon kasvu lisäsi laajempaa sovellettavuutta:

  • 4 bittiä: tarpeeksi numerolle, joten käytännöllinen (BCD-tyylisille) laskimille , kassakoneet jne. (mikä on melko rajoitettu alue)
  • 8 bittiä: riittää (ASCII) -merkkiin, käytännöllinen tekstinkäsittelyjärjestelmille (joka on ERITTÄIN laaja alue), myös matalille -laatuääntä
  • 16 bittiä: kun 16-bittiä oli suosittu, 2 ^ 16 muistiosoitetta oli kohtuullinen määrä (ainakin paljon kohtuullisempi kuin 2 ^ 8 tai 2 ^ 32). 16 bittiä tuottaa melko hyväksyttävän äänenlaadun, ja useimmat A / D-muuntimet tuottavat alle 16 bittiä tulosta, joten on järkevää laskea tällaisilla arvoilla 16 bitillä
  • 32 bittiä: 32 bittiä sopii useimpien tarkkuuteen (mutta ei kaikkia) ihmisen mittaamia määriä, ja ellet ole tekemisissä suurten tietokantojen kanssa, 2 ^ 32 osoitetta olivat riittäviä käytännöllisimpiin tarkoituksiin.
  • 64 bittiä:> 2 ^ 32 tavua muistia on nyt käytännöllinen.
  • 128 bittiä: tällä hetkellä pieni etu 32: een nähden, paitsi salaus. Milloin kiintolevylle odotetaan yli 2 ^ 64 tavua? ei todennäköisesti pian.
Sinun on todennäköisesti luettava stevenvh: n linkit ja tehtävä enemmän tutkimusta ennen kuin sanot sen.
"640 kt: n pitäisi riittää kenellekään." -Bill Gates (1981)
@jippie - Gates ei koskaan sanonut niin.
@Rocketmagnet ajattelin myös sen olevan totta, mutta luulen, että olet oikeassa
Itse asiassa suurin osa 8-bittisistä suorittimista pystyi osoittamaan 2 ^ 16 tavua muistia ja 16 bittiä 2 ^ 32, 80386 (32 bittiä) voisi teoriassa kohdistaa myös 2 ^ 64 tavua (4 Gt) muistia, joka olisi ollut melko hyödytöntä noina päivinä joka tapauksessa ...
@Rocket - Se kuuluu kuuluisien lainausten luetteloon, jotka eivät ole totta, kuten "Toista uudelleen, Sam", jota Bogart ei myöskään koskaan sanonut.
@Axel - 16-bittinen 8086 pystyi käsittelemään vain 2 \ $ ^ {20} \ $ tavua muistia, ja kun he huomasivat, että se ei ollut tarpeeksi, heidän oli keksittävä kauheita asioita, kuten laajennetut ja laajennetut muistinhallintaohjelmat.
@stevenvh 8086 ilmestyi vuonna ** 1978 ** (suunnitteluprosessit alkoivat muutama vuosi aiemmin), jolloin 1 Mt RAM-muistia on täytynyt tuntua yhtä äärimmäiseltä kuin 4 Gt RAM-muistia, kun 80386 esiteltiin vuosina 1985-1986. Vertaa TRS-80: tä, joka alun perin toimitettiin ** 4 KiB ** RAM-muistilla vuonna 1977. Yli 4 GiB RAM-muistia on nykyään tavallista myös matalan tai keskisuuren koti-PC: n kanssa (kotoni tietokoneessa on 32 GiB RAM-muistia, mikä oli melkein käsittämätöntä edes toissijaisena tallennustilana tietokoneelle muistuttavalle laitteelle 80386: n käyttöönoton aikana ja ehkä 100 Mt: n kiintolevyä pidettiin suurena.
Kyllä, muistan päivät ... kaikki eivät olleet tuolloin parempia ;-)
@MichaelKjörling: Etkö ole varma, oliko 100 Mt: n kiintolevyjä edes silloin olemassa. FAT pystyi käsittelemään kohtuullisesti vain tietyn koon osioita, eikä myöskään levyjen osioiden määrä ollut rajoittamaton. Ensimmäisellä tietokoneella, jonka kiintolevy näki, oli uskomaton 10 Mt (IBM XT). Kukaan ei tiennyt mitä tehdä niin suurelle tallennustilalle tuolloin ...
@Axel - ensimmäisellä tietokoneellani oli jättimäinen 80 Mt: n kiintolevy, joka jouduin jakamaan kahteen 32 Mt: n ja 16 Mt: n osioon, koska 32 Mt oli suurin mahdollinen DOS: n kyky.
@Axel Se on eräänlainen mielipiteeni. 386-pohjaisella tietokoneella, joka meillä oli kotona jossain noin tuolloin, oli 40 Mt kiintolevy, kuten muistan. Tiedän, että huippuluokan ja verkkopalvelinmarkkinoille oli kohdennettu suurempia levyjä, mutta en tiedä, oliko silloin olemassa 100 Mt: n asemia. Se on kuitenkin sen kohdan lisäksi, että tällaista asemaa olisi pidetty silloin suurena, toisin kuin tosiasia, että nykyään monilla koti-tietokoneilla on useita Gt ** RAM-muistia **.
Oikeastaan ​​Wikipedia mainitsee marraskuulle 1985 "monet 40 ja 80 megatavun levyt olivat käytössä" [lähde] (http://fi.wikipedia.org/wiki/Timeline_of_DOS_operating_systems) (noin puolivälissä sivulla)
@Michael - se on kaikkien aikojen, ja olen nähnyt sen koko urani aikana: siellä on hyvin vähän todella visionäärejä tuotepäälliköitä. Anekdootti: 1970-luvun alku Robert Noycen luennolla mikroprosessorien tulevaisuudesta hän ennustaa tämänhetkisen pienoiskuvan, ja joku yleisöstä sanoo: "Hitto, en halua menettää kokonaista tietokonetta lattialla." Mihin Noyce vastasi halveksivasti: "Et ymmärrä sitä ollenkaan. Et välitä siitä, jonka menetit; sinulla on tuhansia muita". Se oli 1970-luvun alku. Robert Noyce oli visionääri.
@Michael - 8-bittisellä 6809-prosessorilla oli mukana oleva MMU-siru 6829, joka pystyi osoittamaan 2 Mt. 8-kartaiselle ennen vuotta 1980.
@stevenvh Tämä on alkanut näyttää laajennetulta keskustelulta, mutta tietysti voit luoda arkkitehtuurin, joka sallii enemmän muistia myös pienen bittimäärän suorittimella. Sanoin, että ajan muistikokojen ja 8086: n todennäköisen käytön mukaan ei ehkä ole ollut tärkeätä suunnittelukriteeri pystyä käyttämään suoraan niin suuria määriä kuin yli 1 Mt RAM-muistia. Tämä ratkaistiin, kun 80286 ilmestyi vuonna 1982 ja pystyi suoraan osoittamaan 16 Mt RAM-muistia, mutta hyvin harvat DOS-sovellukset hyödynsivät tätä kykyä, ja harvoilla tietokoneilla oli niin paljon RAM-muistia.
Jos laskelmat ovat oikein, 64 bittiä riittää määrittämään maailmankaikkeuden koko lähimpään Planckin pituuteen!
@Rocket - Havaittavissa oleva halkaisija universumi: 46 miljardia valovuotta. 1 valovuosi = 9,5 x 10 ^ 15 m. -> maailmankaikkeus on 4,4 x 10 ^ 26 m, = 2 ^ 88 m, mikä on jo suurempi kuin 2 ^ 64. Planckin pituudet: 2,7 x 10 ^ 61 = 2 ^ 204. Näyttää siltä, ​​että tarvitsemme sen 256-bittisen prosessorin! :-)
@stevenvh - Hitto Windows-laskin! Ilmeisesti sen suurin binääriluvun pituus on 64 numeroa. Luulin, että se kuulosti liian hämmästyttävältä ollakseen totta.
Rocketmagnet
2012-10-04 20:47:11 UTC
view on stackexchange narkive permalink

Itse asiassa tällaisia ​​prosessoreita on olemassa ja ne ovat yleisiä, riippuen siitä, kuinka määrität bittisyyden. Käytät melkein varmasti yhtä. Kuten Olin selitti, 256-bittisille numeroille ei ole paljon käyttöä, mutta entä 4 x 32-bittiset numerot? Entä jos ALU voisi lisätä 4 paria 32-bittisiä numeroita samanaikaisesti. Tällaiset ALU: t (joista tiedän) otettiin ensimmäisen kerran käyttöön vektori-supertietokoneissa 1970-luvulla. Ensimmäistä kertaa omistin tällaisen tietokoneen, kun minulla oli yksi Intel Pentium -laitteista MMX: n kanssa.

Intel MMX guy

Muistatko nuo kaverit?

MMX-siruilla oli yksi käsky - usean tiedon käskysarja ( SIMD), jonka avulla voit lisätä 1 × 64-bittisen parin, 2 × 32-bittisen parin, 4 × 16-bittisen parin tai 8 × 8 -bit paria.

Mutta se ei ole mitään. Nykyaikaisella grafiikkakortilla on GPU (joka aikaisemmin tarkoitti grafiikkaprosessoriyksikköä, mutta nyt tarkoittaa yleistä prosessoriyksikköä). Nämä ovat usein laajoja SIMD-toteutuksia, jotka pystyvät haarautumaan, lataamaan ja tallentamaan 128 tai 256 bittiä kerrallaan. Intelin Larrabee-prototyyppimikroarkkitehtuuri sisältää yli kaksi 512-bittistä SIMD-rekisteriä kumpaankin ytimeen.

GPU SIMD

Huomaa, että SIMD: tä ei pidä sekoittaa moniytimiseen. Jokaisella suorittimen ytimellä on oma laaja ALU, joka pystyy yhdistämään joukon kokonaislukuja.

"1 × 16-bittinen pari, 2 × 32-bittinen pari, 4 × 16-bittinen pari tai 8 × 8-bittinen pari" Oletko varma, että olet saanut oikean osan?
Ensi silmäyksellä se näytti kuin Kraft Single, jossa oli Intel-logo
4x32-bittiset muuttujat ovat ** edelleen ** vain 32 bittiä. Bittisyys on suurin * yksittäinen * kokonaisluku, jota ALU voi käyttää. Jos teet sen useita kertoja rinnakkain, bittileveyttä ei lisätä. -1
Axel
2012-10-05 10:53:43 UTC
view on stackexchange narkive permalink

Koska sitä ei vielä tarvita.

Normaalisti bittiys (jonka määritän rekisterin bittien lukumääräksi) kääntää enemmän tai vähemmän suoraan osoitettavan muistin määräksi. Tätä on tietysti yksinkertaistettu, koska prosessorista riippuen rekistereissä voi olla kaksinkertainen bittipituus, tai on olemassa tekniikoita näiden muistirajoitusten kiertämiseksi (kukaan muu muistaa ohjelmoivan 16-bittisissä ikkunoissa?) / p>

davidcary
2012-12-22 13:52:24 UTC
view on stackexchange narkive permalink

"Miksi he eivät yksinkertaisesti lisää datarivien määrää ja luo 256-bittistä"

Kaikilla LGA-2011 Socketiin sopivilla Intel-prosessoreilla on itse asiassa 256 datanastaa , muodostaen yhteyden emolevyn 256 tietolinjaan, jotka johtavat DRAM-muistiin. Olisin hieman yllättynyt, jos viimeisimmässä käyttämässäsi kannettavassa tietokoneessa tai pöytäkoneessa ei olisi vähintään 256 tietolinjaa. Kysyn, mistä sait tämän virheellisen ajatuksen siitä, että he "eivät ... yksinkertaisesti lisää datarivien määrää"?

LGA-211 Socket -taulukko (oli: LGA-2011 Socket -taulukko), osa 6.1 osoittaa, että näillä suorittimilla on 256 datanasta ja 76 osoitetappia (pankki- ja muistiosoite).

Paulo
2012-10-05 08:59:47 UTC
view on stackexchange narkive permalink

koska ei ole sovellusta, joka tarvitsisi tai jolla olisi mahdollisuus edustaa tietoja yli 128 bitillä kerralla.

Ja tiedät, että multimediaprosessorit ja grafiikkakortit pääsevät tielle ennen emolevyjen suorittimia, vain siksi, että valokuvan / videon kanssa on järkevää käyttää niin suuria datan pituuksia, että ne voidaan käsitellä kerralla.

Sri Krishna
2012-10-05 11:44:39 UTC
view on stackexchange narkive permalink

Tietokonejärjestelmä on merkityksessään tietokonekone, joka vaatii joitain syötteitä ja antaa joitain tuloksia. Meidän on tyydytettävä tietokone näillä linjoilla, joten kehittäjät saivat vertailukohdan omistamalla 3 bussia, nimittäin osoitebussi, tietoväylä ja ohjausväylä. 1) Osoiteväylä hakee / valitsee tietyn osoitteen muistista luku- / kirjoitusoperaatioita varten. 2) Tietoväylä hakee tämän jälkeen tiedot, jotka ovat esillä nämä tiedot prosessorille / prosessorilta ja muistille käsittelyä / tallennusta varten. Luo käyttöliittymän ohjausprotokolla ja pyytää järjestelmää kunnioittamaan sitä.

Näitä tarvitaan jonkin hyödyllisen laskennan tekemiseen käyttäjälle / palvelimelle / asiakkaalle. Yleensä suorituskyky (tehtävän suorittamisen nopeus, vähemmän häiriöitä jne.) Riippuu pullon kaulojen poistamisesta järjestelmässä. ts. jos CPU pystyy prosessoimaan paljon nopeammin kuin siirtonopeus kiintolevyltä, pullonkaula tapahtuu kiintolevyllä. Vastaavasti meillä on oltava oikea käsittelynopeus tietyille tiedonsiirtonopeuksille ja koodileveydelle.

Alusta alkaen useista syistä, kuten valokuvien monimutkaisuus, kustannukset, vaatimus, tehokkaat algoritmit ja tärkein syy markkinoihin Laajuus ovat tärkeimmät esteet suuren tietoväyläleveyden tuotannolle, kuten kysymys isäntä mainitsi, esimerkiksi 256 bittiä tai 512 bittiä. Nämä ovat mahdollisia! Vaatimusta ei kuitenkaan vielä ole, markkinoiden laajuus ei ole vielä näkyvissä nykypäivän tarpeiden ja täydentävän ohjelmistotuen puuttuessa.

256-bittinen prosessori tarkoittaa tietoväylän leveyttä, jonka tietty prosessori voi käsitellä. tai ALU voi käsitellä yhdellä suorituksella. Aloitimme muodosta 4 bittiä, sitten 8,16,32 ja tällä hetkellä 64 ja jopa 128 bittiä, jotka ovat nykyisiä Market Scope -tuotteita.

Joten ennen näiden kysymysten esittämistä sinun on aina tarkasteltava markkinapuolen kysyntää ja sen laajuutta, historiassa se on ainoa suoraviivainen tapa ymmärtää elämäntapoja. Jos sinulla ei ole varaa siihen, miten voit ostaa sen? ja jos et voi ostaa sitä, miten tuottaja voi tuottaa? ja jos hän ei pysty tuottamaan, tuota tuotetta ei ole olemassa !!

Substantiivien käyttö isoilla kirjaimilla tekee siitä vaikeata lukea.
hmm, kyllä ​​minun täytyy alkaa tehdä se.
@pjc50 Ehkä hän on Saksasta?Voi odota, "Asking" ja "Buy" ovat myös isoja, ehkä ei ...


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