Как изчислявате скоростта на процесора на многоядрените процесори?

Съдържание:

Как изчислявате скоростта на процесора на многоядрените процесори?
Как изчислявате скоростта на процесора на многоядрените процесори?

Видео: Как изчислявате скоростта на процесора на многоядрените процесори?

Видео: Как изчислявате скоростта на процесора на многоядрените процесори?
Видео: 5 techniques to speak any language | Sid Efromovich | TEDxUpperEastSide - YouTube 2024, Април
Anonim
Навлизането на икономични потребителски многоядрени процесори повдига въпроса за много потребители: как ефективно изчислявате реалната скорост на многоядрената система? Една 4-core 3Ghz система наистина 12Ghz? Прочетете нататък, докато разследваме.
Навлизането на икономични потребителски многоядрени процесори повдига въпроса за много потребители: как ефективно изчислявате реалната скорост на многоядрената система? Една 4-core 3Ghz система наистина 12Ghz? Прочетете нататък, докато разследваме.

Днешната сесия за въпроси и отговори се отнася до нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Четецът на SuperUser NReilingh беше любопитен с това как се изчислява скоростта на процесора за многоядрената система:

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.

И така, какъв е подходящият начин да се обозначи общата честота на часовника и по-важното е, че дори е възможно да се използва едноядрена скоростна номенклатура на многоядрената система?

Отговорът

Сътрудниците на SuperUser Mokubai помагат да се изчистят нещата. Той пише:

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

След това задачата зависи в голяма степен от резултата от предишния пропуск и не може да изпълнява няколко копия от себе си без да корумпира стойността на

'a'

тъй като всяко копие ще получи стойността на

'a'

в различно време и да го напиша обратно по различен начин. Това ограничава задачата до една нишка и по този начин задачата може да работи само на едно ядро в даден момент, ако се изпълнява на няколко ядра, тогава ще се стигне до синхронизация. Това го ограничава до 1/2 от силата на процесора на двуядрената система или на 1/4 в четириколонната система.

Сега поемете задача като:

10: a = a + 1

20: b = b + 1

30: c = c + 1

40: d = d + 1

50: goto 10

Всички тези линии са независими и биха могли да бъдат разделени в 4 отделни програми като първите и да се изпълняват по едно и също време, като всеки може да използва ефективно пълната мощност на едно от сърцевините без никакъв синхронизиращ проблем, това е законът на Amdahl влезе в него.

Така че, ако имате еднократно приложение с резба, което правите изчисления за груба сила, единичният 12 GHz процесор ще спечели ръцете си, ако успеете по някакъв начин да разделите задачата на отделни части и с многофункционални, тогава 4-ядрата могат да се доближат до, същото изпълнение, според закона на Amdahl.

Основното, което ви дава многобройна CPU система, е отзивчивостта. На едноядрената машина, която работи усилено, системата може да изглежда бавна, тъй като по-голямата част от времето би могла да бъде използвана от една задача, а другите задачи се изпълняват само в кратки изблици между по-голямата задача, което води до система, която изглежда бавна или дръзка, На многоядрената система тежката задача получава едно ядро и всички останали задачи играят върху другите сърцевини, като вършат работата си бързо и ефективно.

Аргументът на "6 ядра x 0.2GHz = 1.2Ghz" е боклук във всяка ситуация, освен когато задачите са напълно паралелни и независими. Има голям брой задачи, които са много успоредни, но все пак се нуждаят от някаква форма на синхронизация. Ръчната спирачка е видео транскодер, който е много добър при използване на всички процесори, които са на разположение, но изисква основен процес, за да се запазят останалите нишки, пълни с данни и да се съберат данните, с които са направени.

Всяко ядро всъщност прави изчисления х в секунда, така че общият брой изчисления е х (ядра).

Всяко ядро е в състояние да направи x изчисления за секунда, като се приеме, че работното натоварване е подходящо паралелно, на линейна програма, всичко, което имате, е 1 ядро.

Скоростта на часовника е по-скоро брой на циклите, през които процесора минава за секунда, така че докато всички ядра вървят със същата скорост, скоростта на всеки часовников цикъл остава същата без значение колко ядра съществуват, С други думи, Hz = (core1Hz + core2Hz + …) / ядра.

Мисля, че е заблуда да мислиш, че 4 x 3GHz = 12GHz, дават математически работи, но сравняваш ябълки с портокали, а сумите просто не са прави, GHz не може просто да се прибави заедно за всяка ситуация. Бих го промените на 4 x 3GHz = 4 x 3GHz.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.

Препоръчано: