15Aug
Tarbijaklassi mitmetuumaliste protsessorite tekkimine tõstatab küsimuse paljudele kasutajatele: kuidas arvutada tegelikult mitme tuumaga süsteemi tegelik kiirus? Kas 4-core 3Ghz süsteem on tõesti 12Ghz? Loe edasi, kui uurime.
tänapäeva küsimus &Vastuse seanss on meile viisakalt SuperUseriga - Q & A veebisaitide kogukonna juhtimisgrupi Stack Exchange osakond.
Küsimus
SuperUser-lugeja NReilingh oli uudishimulik, kui palju protsessorikiirust arvutatakse mitme tuumaga süsteemi jaoks:
Kas on õige öelda näiteks, et protsessori, millel on neli südamikku, mis kõik töötavad 3GHz-is, on tõepoolest protsessori töö12 GHz juures?
Ühel korral jõudisin Mac vs PC-i argumendisse( mis muide ei ole selle teema fookuses. .., mis oli tagasi keskkoolis) koos tuttavaga, kes nõudis, et Mac-id reklaamiksid ainult 1Ghz-seadmetena, kuna need oliddual-processor G4, mis kõik töötavad 500 MHz.
Sel ajal teadsin, et see on hogwash põhjustel, mis minu arvates on enamikule inimestele ilmsed, kuid ma nägin lihtsalt kommentaari selle veebisaidi kohta, mis käsitleb "6 südamikku x 0.2GHz = 1.2Ghz" ja mille tulemusel mind mõtlesin uuestikas sellele on tõeline vastus.
Niisiis, see on rohkem või vähem filosoofiline / sügav tehniline küsimus kella kiiruse arvutamise semantika kohta. Ma näen kahte võimalust:
- Iga tuum teeb tegelikult x arvutusi sekundis, seega on arvutuste koguarv x( südamikud).
- Kellukiirus on üsna arv tsüklite arvu, mida protsessor läbib sekundi ruumis, nii kaua, kuni kõik südamikud töötavad sama kiirusega, jääb iga kella tsükli kiirus samaks olenemata sellest, kui palju südamikkuolemas. Teisisõnu, Hz =( core1Hz + core2Hz +. ..) / südamikud.
Niisiis, milline on sobilik viis, kuidas tähistada kogu kella kiirust, ja mis veelgi olulisem, kas on võimalik isegi kasutada ühe tuumade kiirusklassi nomenklatuuri mitme tuumaga süsteemis?
Vastused
SuperUseri toetajad Mokubai aitab selgeid asju üles. Ta kirjutab:
Peamine põhjus, miks quad-core 3GHz protsessor ei ole kunagi sama kiire kui 12GHz ühe tuumaga, on seotud sellega, kuidas töötab selle protsessori töö, st ühe keermega või mitme keermega. Amdahli seadus on oluline, kui arvestada, milliseid ülesandeid te töötate.
Kui sul on ülesanne, mis on oma olemuselt lineaarne ja seda tuleb teha täpselt sammhaaval nagu( väga lihtne programm)
10: a = a + 1 20: goto 10Seejärel sõltub ülesanne tulemustest vägaeelmisest passist ja ei saa käivitada mitu eksemplari, ilma et see rikuks "a" väärtust, sest iga eksemplari väärtus oleks "a" erinevatel aegadel ja see kirjutataks tagasi erinevalt. See piirab ülesande ühekorraga ja seega võib ülesanne töötada ainult üksiku tuumaga igal ajal, kui see peaks töötama mitmesugustel südamikel, siis võib sünkroonimise korruptsioon juhtuda. See piirab seda kahekordse põhisüsteemi protsessorivõimsusega 1/2 või quad core süsteemis 1/4.
Nüüd võta selline ülesanne nagu:
10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10Kõik need read on sõltumatud ja võivadjagatakse nelja erinevasse programmisse, nagu esimene ja kes töötavad samal ajal, millest igaüks suudab tõhusalt ära kasutada ühe südamiku täisvõimsust ilma sünkroonimisprobleemita, on see siin Amdahli seadus.
Nii et kui teil on ühekordne keermestatud rakendus, mis teostab jõuvõtete arvutamist, saab 12GHz ühe protsessoriga võita käed alla, kui saate mõnevõrra ülesande jagada eraldi osadeks ja mitme keermega, siis võib 4 südamikku jõuda lähedale, kuid mitte piisavalt jõuda, sama jõudlus nagu Amdahli seaduses.
Peamine asjaolu, et multiprotsessorite süsteem annab teile reageerimise. Süsteemil töötava ühekordse põhiseadme puhul võib süsteem tunduda loidana, sest enamus ajast võib seda kasutada ühe ülesande täitmiseks ja teised ülesanded toimivad vaid suurema ülesande vahel lühikeste pursketena, mille tulemuseks on süsteem, mis tundub olevat aeglane või ebakindel. Mitmekeselises süsteemis saab raske ülesanne ühe tuumiku ja kõik muud ülesanded mängivad teistel südamikel, tehes oma tööd kiiresti ja tõhusalt.
Argument "6 südamikku x 0.2GHz = 1.2Ghz" on prügi igas olukorras, välja arvatud juhul, kui ülesanded on täiesti paralleelsed ja sõltumatud. Seal on palju ülesandeid, mis on väga paralleelsed, kuid nendega on siiski vaja mingit sünkroniseerimist. Käeshooburatt on videotekooder, mis kasutab kõiki saadaolevaid CPU-sid väga hästi, kuid see nõuab põhiprotsessi, et teised näpunäited täidaksid andmeid ja kogutaksid nendega seotud andmeid.
- Iga tuum teeb tegelikult x arvutusi sekundis, seega on arvutuste koguarv x( südamikud).
Iga südamik on võimeline tegema x arvutusi sekundis, eeldusel, et töökoormus on sobiv paralleelselt, lineaarprogrammil, mis sul on, on 1 tuum.
- Kellukiirus on pigem arv tsüklitest, mille protsessor läbib sekundi ruumis, nii kaua, kuni kõik südamikud töötavad sama kiirusega, jääb iga kella tsükli kiirus samaks olenemata sellest, kui palju südamikkuolemas. Teisisõnu, Hz =( core1Hz + core2Hz +. ..) / südamikud.
Ma arvan, et on ekslik arvata, et 4 x 3GHz = 12GHz, mis andis matemaatika töö, kuid te võrdlete õunu apelsinidega ja summad lihtsalt ei ole õiged, GHz ei saa lihtsalt iga olukorra jaoks kokku liita. Ma muudaksin selle 4 x 3GHz = 4 x 3GHz.
Kas teil on seletamiseks midagi lisada? Helistage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Tutvu täieliku arutelu teemaga siit.