Kā aprēķināt procesora ātrumu vairāku kodolu procesoros?
Ekonomisko patēriņa klases 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 kodolu 3Ghz sistēma patiešām ir 12GHz? Lasiet tālāk, kad mēs izmeklējam.
Šodienas jautājumu un atbilžu sesija mums sniedz pieklājību no SuperUser-Stack Exchange apakšnodaļas, kas ir kopienu disku Q & A tīmekļa vietņu grupa.
Jautājums
SuperUser lasītājs NReilingh bija ziņkārīgs par to, kā procesora ātrums vairāku kodolu sistēmai ir faktiski aprēķināts:
Vai ir pareizi teikt, piemēram, ka procesors ar četriem kodoliem, kas katrs darbojas ar 3GHz, faktiski ir procesors, kas darbojas ar 12GHz?
Es reiz nonācu "Mac vs PC" argumentā (kas, starp citu, nav šīs tēmas uzmanības centrā ... kas bija atpakaļ vidusskolā) ar paziņu, kas uzstāja, ka Mac tika reklamēti tikai kā 1Gz mašīnas, jo viņi bija duāli -processors G4s katrs darbojas 500MHz.
Tajā laikā es zināju, ka tas ir ļoti skalojošs tādu iemeslu dēļ, kas, manuprāt, ir acīmredzami lielākajai daļai cilvēku, bet es tikko redzēju komentāru par šo tīmekļa vietni ar “6 kodoliem x 0.2GHz = 1.2Ghz”, un tas man atkal domāja par to, vai tam ir reāla atbilde.
Tātad, tas ir vairāk vai mazāk filozofisks / dziļas tehnisks jautājums par pulksteņa ātruma aprēķināšanas 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 drīzāk ir ciklu skaits, ko procesors iziet sekundes telpā, tāpēc, kamēr visi serdeņi darbojas vienā ātrumā, katra pulksteņa cikla ātrums paliek tāds pats, neatkarīgi no tā, cik daudz serdeņu ir. . Citiem vārdiem sakot, Hz = (core1Hz + core2Hz +…) / serdeņi.
Tātad, kas ir piemērots veids, kā apzīmēt kopējo pulksteņa ātrumu un, vēl svarīgāk, vai ir iespējams izmantot viena kodola ātruma nomenklatūru daudzkodolu sistēmā?
Atbilde
SuperUser iemaksas Mokubai palīdz noskaidrot lietas. Viņš raksta:
Galvenais iemesls, kāpēc četrkodolu 3GHz procesors nekad nav tik ātrs kā 12GHz vienotais kodols, ir saistīts ar to, kā šis procesors darbojas, t.i. Amdahla likums ir svarīgs, ņemot vērā uzdevumu veidus, kurus jūs izmantojat.
Ja jums ir uzdevums, kas pēc būtības ir lineārs un tas ir jādara precīzi soli pa solim, piemēram, (ļoti vienkārša programma)
10: a = a + 1
20: goto 10
Tad uzdevums lielā mērā ir atkarīgs no iepriekšējā iznākuma rezultāta un nevar palaist vairākas kopijas pati par sevi, nesabojājot vērtību
“a”
tā kā katra kopija iegūs vērtību“a”
dažādos laikos un rakstot to citādi. Tas ierobežo uzdevumu uz vienu pavedienu, un tādējādi uzdevums jebkurā laikā 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 divkodolu sistēmas CPU jaudas vai 1/4 četrkodolu sistēmā.Tagad veiciet uzdevumu, piemēram:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Visas šīs līnijas ir neatkarīgas un tās var sadalīt četrās atsevišķās programmās, piemēram, pirmajās un darboties vienlaicīgi, un katra no tām spēj efektīvi izmantot viena kodola pilnu jaudu bez jebkādas sinhronizācijas problēmas, tāpēc Amdāla likums nonāk tajā.
Tātad, ja jums ir viena vītņota lietojumprogramma, kas veic brutālu spēku aprēķinus, viens 12GHz procesors uzvarēs rokas, ja jūs varat kaut kādā veidā padarīt uzdevumu sadalītu atsevišķās daļās un vairākkārtu vītnē, tad četri serdeņi varētu nonākt tuvu, bet ne tuvu, tāds pats izpildījums kā Amdāla likumam.
Galvenais, kas jums nodrošina vairāku CPU sistēmu, ir atsaucība. Vienā galvenajā mašīnā, kas smagi strādā, sistēma var šķist gausa, jo lielāko daļu laika var izmantot viens uzdevums, un pārējie uzdevumi darbojas tikai īsos sprādzienos starp lielāko uzdevumu, kā rezultātā sistēma, kas šķiet lēna vai spilgta . Daudzkodolu sistēmā smagais uzdevums ir viens kodols un visi pārējie uzdevumi, kas tiek veikti citos kodolos, ātri un efektīvi veicot darbu.
Ar „6 kodoliem x 0.2GHz = 1.2Ghz” arguments ir atkritumi katrā situācijā, izņemot gadījumus, kad uzdevumi ir pilnīgi paralēli un neatkarīgi. Ir ļoti daudz uzdevumu, kas ir ļoti paralēli, bet tiem joprojām ir nepieciešama kāda veida sinhronizācija. Stāvbremze ir video pārveidotājs, kas ļoti labi izmanto visus pieejamos CPU, bet tam ir nepieciešams pamatprocess, lai saglabātu pārējos pavedienus ar datiem un savāktu datus, kas ir veikti ar.
- 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 darba slodze ir piemērota paralēli, lineārajā programmā viss ir 1 kodols.
- Pulksteņa ātrums drīzāk ir ciklu skaits, ko procesors iziet sekundes telpā, tāpēc, kamēr visi serdeņi darbojas vienā ātrumā, katra pulksteņa cikla ātrums paliek tāds pats, neatkarīgi no tā, cik daudz serdeņu ir. . Citiem vārdiem sakot, Hz = (core1Hz + core2Hz +…) / serdeņi.
Es domāju, ka ir maldīgi domāt, ka 4 x 3GHz = 12GHz, piešķirot matemātiku, darbojas, bet jūs salīdzināt ābolus ar apelsīniem un summas vienkārši nav pareizas, GHz nevar vienkārši apvienot katrai situācijai. Es to mainītu uz 4 x 3GHz = 4 x 3GHz.
Vai kaut kas jāpievieno paskaidrojumam? Skaņas izslēgšana komentāros. Vai vēlaties lasīt vairāk atbildes no citiem tehnoloģiju gudriem Stack Exchange lietotājiem? Apskatiet pilnu diskusiju pavedienu šeit.