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

Satura rādītājs:

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

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

Video: Kā jūs aprēķināt procesora ātrumu daudzkodolu procesoriem?
Video: How to Choose Knitting Yarn - YouTube 2024, Novembris
Anonim
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.
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.

Jautājums

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

Is it correct to say, for example, that a processor with four cores each running at 3GHz is in fact a processor running at 12GHz?

I once got into a “Mac vs. PC” argument (which by the way is NOT the focus of this topic… that was back in middle school) with an acquaintance who insisted that Macs were only being advertised as 1Ghz machines because they were dual-processor G4s each running at 500MHz.

At the time I knew this to be hogwash for reasons I think are apparent to most people, but I just saw a comment on this website to the effect of “6 cores x 0.2GHz = 1.2Ghz” and that got me thinking again about whether there’s a real answer to this.

So, this is a more-or-less philosophical/deep technical question about the semantics of clock speed calculation. I see two possibilities:

  1. Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
  2. Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.

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ā?

Atbilde

SuperUser autori Mokubai palīdz skaidrībā. Viņš raksta:

The main reason why a quad-core 3GHz processor is never as fast as a 12GHz single core is to do with how the task running on that processor works, i.e. single-threaded or multi-threaded. Amdahl’s Law is important when considering the types of tasks you are running.

If you have a task that is inherently linear and has to be done precisely step-by-step such as (a grossly simple program)

10: a = a + 1

20: goto 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: goto 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.

Ieteicams: