15Aug

Kā jūs aprēķināt procesora ātrumu daudzkodolu procesoriem?

Problēmas, kas saistītas ar patērētājiem paredzētu daudzkodolu procesoru parādīšanos, 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ājums &Atbildes sesija mums priecājas par SuperUser - Stack Exchange dalību, Q & A tīmekļa vietņu kopienas vadīšanas grupu.

Jautājums

SuperUser lasītājs NReilingh bija ziņkārīgs, kā faktiski aprēķināt procesoru ātrumu daudzcentru sistēmai:

Vai ir pareizi teikt, piemēram, ka procesors ar četriem kodoliem, kas darbojas 3GHz, patiesībā ir procesorspie 12GHz?

es reiz nonācu pie "Mac vs PC" argumenta( kas, starp citu, ir NOT šis temats. .. tas atkal bija vidusskolā) ar paziņu, kas uzstāja, ka Mac reklamēja tikai kā 1Ghz mašīnas, jo tie bijaDual-processor G4, katrs darbojas ar 500MHz.

Tajā laikā, kad es zināju, ka tas ir hogwash iemeslu dēļ, manuprāt, ir acīmredzama lielākajai daļai cilvēku, bet es tikko redzēju komentāru par šo tīmekļa vietni par "6 serdes x 0.2GHz = 1.2Ghz" efektu, un tas man lika man atkārtoti domāt parvai ir reāla atbilde uz šo jautājumu.

Tātad, tas ir vairāk vai mazāk filozofisks / dziļš tehnisks jautājums par pulksteņa ātruma aprēķināšanas semantiku. Es redzu divas iespējas:

  1. Katrs kodols faktiski veic x aprēķinus sekundē, tādējādi kopējais aprēķinu skaits ir x( serdeņi).
  2. Pulksteņa ātrums ir diezgan skaitlis ciklu skaitam, ko procesors iet otrajā vietā, 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 serdespastā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 viencindu ātruma nomenklatūru daudzkodolu sistēmā?

Atbildes

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 šis procesors, t.i., ar vienu vītni vai vairākiem vītņotiem. Amdahl likums ir svarīgs, apsverot veicamo uzdevumu veidus.

Ja jums ir uzdevums, kas pēc būtības ir lineārs un ir jāveic precīzi pakāpeniski, piemēram,( ļoti vienkārša programma),

10: a = a + 1 20: goto 10

Tad uzdevums ir ļoti atkarīgs no rezultātano iepriekšējās caurlaides un nevar palaist vairākas pašas kopijas, neatgriežot "a" vērtību, jo katra kopija "a" vērtību iegūst dažādos laikos un to atveido 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 šādu uzdevumu:

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 varētuvar sadalīt četrās atsevišķās programmās, piemēram, pirmajā un palaist vienā un tajā pašā laikā, katra no tām spēj efektīvi izmantot visu dzinēju pilnu jaudu bez sinhronizācijas problēmām; šajā vietā ir iekļauts Amdahl likums.

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.

  1. 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, uz lineārās programmas, kas jums pieder, ir 1 kodols.

  1. Pulksteņa ātrums ir diezgan skaitlis ciklu skaitam, ko procesors iziet otrajā vietā, 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 serdespastā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 nevar vienkārši pievienot katrai situācijai. Es to nomainīšu uz 4 x 3GHz = 4 x 3GHz.

Vai kaut kas jāpievieno paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem?Šeit skatiet pilnu diskusiju pavedienu.