If-Koubou

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

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

Навлизането на икономични потребителски многоядрени процесори повдига въпроса за много потребители: как ефективно изчислявате реалната скорост на многоядрената система? Една 4-core 3Ghz система наистина 12Ghz? Прочетете нататък, докато разследваме.

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

Въпроса

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

Дали е правилно да се каже, например, че един процесор с четири ядра всеки, работещ на 3GHz, всъщност е процесор, работещ на 12GHz?

Веднъж влязох в аргумент "Mac vs. PC" (който между другото не е фокусът на тази тема ..., който беше обратно в средното училище) с познат, който настоя, че Macs се рекламират само като 1Ghz машини, защото са били двойни -процесор G4, всеки работещ на 500MHz.

По онова време знаех, че това ще стане причина за причини, които според мен са очевидни за повечето хора, но току-що видях коментар на този сайт с "6 ядра x 0.2GHz = 1.2Ghz" и това ме накара да мисля отново дали има истински отговор на това.

Така че, това е повече или по-малко философски / дълбоко технически въпрос за семантиката на изчисляване на скоростта на часовника. Виждам две възможности:

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

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

Отговорът

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

Основната причина, поради която четириядрен процесор с честота от 3 GHz никога не е толкова бърз, колкото 12 GHz едно ядро ​​е свързан с работата на задачата, работеща на този процесор, т.е. с едно резбово или с много резба. Законът на Amdahl е важен при разглеждане на видовете задачи, които изпълнявате.

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

10: а = а + 1
20: Отидете на 10 

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

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

10: а = а + 1
20: b = b + 1
30: с = с + 1
40: d = d + 1
50: Отидох на 10 

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

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

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

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

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

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

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

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

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