Patēriņa pakāpes daudzkodolu procesoru parādīšanās rada jautājumu daudziem lietotājiem: kā jūs efektīvi aprēķināt daudzkodolu sistēmas reālo ātrumu? Vai 4-core 3Ghz sistēma patiešām ir 12Ghz? Lasiet tālāk, kā mēs izmeklējam.
Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, Q & A tīmekļa vietņu kopienas diskusiju grupu.
SuperUser lasītājs NReilingh bija interesanti, kā faktiski aprēķināt procesoru ātrumu daudzcentru sistēmai:
Vai ir pareizi pateikt, piemēram, ka procesors ar četriem kodoliem, kas darbojas 3GHz, faktiski ir procesors, kas darbojas ar 12 GHz frekvenci?
Es reiz nonācu pie "Mac vs PC" argumenta (kas, starp citu, ir NOT šis temats ... tas bija vidusskolā) ar paziņu, kas uzstāja, ka Mac tika reklamēti tikai kā 1Ghz mašīnas, jo tie bija dubultā -procesors G4, katrs darbojas pie 500MHz.
Tajā laikā es zināju, ka tas ir hogwash tādēļ, ka es domāju, ka tas ir acīmredzams lielākajai daļai cilvēku, bet es tikko redzēju komentāru šajā tīmekļa vietnē par "6 serdes x 0.2GHz = 1.2Ghz" efektu, un tas man lika atkal domāt par to, vai uz to ir patiesa atbilde.
Tātad, tas ir vairāk vai mazāk filozofisks / dziļš tehnisks jautājums par pulksteņa ātruma aprēķina semantiku. Es redzu divas iespējas:
- Katrs kodols faktiski veic x aprēķinus sekundē, tādējādi kopējais aprēķinu skaits ir x (serdeņi).
- Pulksteņa ātrums ir diezgan skaitlis ciklu skaitam, ko procesors iziet otrajā vietā, lai tik ilgi, kamēr visi serdeņi darbojas ar tādu pašu ātrumu, katra pulksteņa cikla ātrums paliek nemainīgs neatkarīgi no tā, cik daudz serdes pastāv . Citiem vārdiem sakot, Hz = (core1Hz + core2Hz + ...) / serdeņi.
Tātad, kāds ir piemērots veids, kā apzīmēt kopējo pulksteņa ātrumu un, vēl svarīgāk, vai ir iespējams izmantot vienkodolu ātruma nomenklatūru daudzkodolu sistēmā?
SuperUser autori Mokubai palīdz skaidrībā. Viņš raksta:
Galvenais iemesls, kāpēc četrkodolu 3GHz procesors nekad nav tik strauji kā 12 GHz vienīgais kodols, ir saistīts ar to, kā darbojas šī procesora darbs, t.i., ar vienu vītni vai ar vairākiem vītņotiem. Amdahl likums ir svarīgs, apsverot uzdevumu veidus, kurus jūs izmantojat.
Ja jums ir uzdevums, kas pēc būtības ir lineārs un jādara precīzi pakāpeniski, piemēram, (ļoti vienkārša programma)
10: a = a + 1
20: doties uz 10
Tad uzdevums lielā mērā ir atkarīgs no iepriekšējās caurlaides rezultāta un nevar palaist vairākas pašas kopijas, neatgriežot vērtību
"a"
jo katrs eksemplārs iegūst vērtību"a"
dažādos laikos un rakstot to atpakaļ atšķirīgi. Tas ierobežo uzdevumu vienam pavedienam un tādējādi uzdevums jebkurā brīdī var darboties tikai vienā kodolā, ja tas darbotos vairākos kodolos, tad notiktu sinhronizācijas korupcija. Tas ierobežo to līdz 1/2 no dual core sistēmas cpu jaudas vai 1/4 no četrkodolu sistēmas.Tagad uzņemiet tādu uzdevumu kā:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: doties uz 10
Visas šīs līnijas ir neatkarīgas, tās var iedalīt 4 atsevišķās programmās, piemēram, pirmajā un palaist vienā un tajā pašā laikā, katra no tām spēj efektīvi izmantot visas viena kodolenerģijas jaudas bez sinhronizācijas problēmām. Tieši šeit Amdahl's Law nonāk tajā.
Tātad, ja jums ir viens vītņots pieteikums darot brutālu spēku aprēķinus, viens 12 GHz procesors varētu uzvarēt roku uz leju, ja jūs varat kaut kā padarīt uzdevumu sadalīt atsevišķās daļās un multi-threaded, tad 4 serdeņi varētu nonākt tuvu, bet ne gluži sasniegt, tāds pats rezultāts kā Amdahl likumā.
Galvenais, ka multiprocesora sistēma dod jums ir atsaucība. Viena kodola mašīna, kas cītīgi strādā, sistēma var šķist lēna, jo lielāko daļu laika to var izmantot viens uzdevums, bet citi uzdevumi darbojas tikai īsos pārrāvumos starp lielo uzdevumu, kā rezultātā izveidojas sistēma, kas šķiet lēna vai apgrūtinoša . Daudzkodolu sistēmā smags uzdevums kļūst par vienu kodolu, un visi pārējie uzdevumi spēlē uz citiem kodoliem, ātri un efektīvi veicot darbu.
Arguments par "6 serdeņiem x 0.2GHz = 1.2Ghz" ir atkritumi visās situācijās, izņemot gadījumus, kad uzdevumi ir pilnīgi paralēli un neatkarīgi. Pastāv ļoti daudz uzdevumu, kas ir ļoti paralēli, taču tiem joprojām ir vajadzīga kāda veida sinhronizācija. Rokas bremze ir video trancoder, kas ir ļoti labs, izmantojot visus pieejamos CPU, bet tas prasa galveno procesu, lai saglabātu citus pavedienus, kas piepildīti ar datiem, un apkopo datus, ar kuriem tie tiek izpildīti.
- Katrs kodols faktiski veic x aprēķinus sekundē, tādējādi kopējais aprēķinu skaits ir x (serdeņi).
Katrs kodols spēj veikt x aprēķinus sekundē, pieņemot, ka slodze ir piemērota paralēli, lineārajai programmai, kas jums pieder, ir 1 kodols.
- Pulksteņa ātrums ir diezgan skaitlis ciklu skaitam, ko procesors iziet otrajā vietā, lai tik ilgi, kamēr visi serdeņi darbojas ar tādu pašu ātrumu, katra pulksteņa cikla ātrums paliek nemainīgs neatkarīgi no tā, cik daudz serdes pastāv . Citiem vārdiem sakot, Hz = (core1Hz + core2Hz + ...) / serdeņi.
Es domāju, ka ir maldīgi domāt, ka 4 x 3GHz = 12 GHz, piešķir matemātikas darbus, bet jūs salīdzināt ābolus ar apelsīniem un summas vienkārši nav pareizi, GHz vienkārši nevar pievienot kopā katrai situācijai. Es to nomainīšu uz 4 x 3GHz = 4 x 3GHz.
Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.