Държави за управление на захранването: P-състояния, C-състояния и Burst C-състояния

(Можете да изтеглите PDF прикачен файл на тази статия.)

Съдържание

Предговор. Какво, защо и къде?

Тази статия консолидира поредица от публикации, обхващащи състоянията на управление на захранването. Тази поредица е част от още по-голям набор от блогове, обхващащи голямо разнообразие от теми за управление на захранването, включително състояния за управление на захранването (тази поредица), състояния на турбо и хиперпоточни захранвания, конфигурация и политики за управление на захранването. Съдържанието на тези публикации ще бъде полезно за всички, въпреки че тук е описан само съпроцесорът Intel® Xeon Phi ™. Единственото изключение е серията за персонализиране, която по своята същност е по-зависима от платформата; той се фокусира върху Intel® Xeon Phi ™ копроцесор и Intel® Manycore Platform Software Stack (MPSS). В допълнение към този набор от блогове за управление на захранването, вижте още две компилации: поредицата за измерване на производителността [i] и друг набор от по-ранни публикации по различни теми, като например откъде идва C * V 2 * f.

Зоната за разработчици на Intel® има отделни блогове, изброени в още една статия: Списък на полезни статии, блогове и връзки за управление на захранването.

Затова седнете и се опитайте да се насладите на вълнуващата тема за управлението на захранването.

Глава 1. Въведение за любознателните умове

Какви са специфичните състояния на мощност за съпроцесора Intel Xeon Phi? Какво се случва във всяко от тези състояния? Би било интересно да се знае. Ако се интересувате от високопроизводителни изчисления, тогава тези знания ще ви бъдат полезни.

Но това няма да бъде задълбочена, изчерпателна, подробна и високотехническа научна работа по управление на захранването. Ако търсите такъв материал, предлагам ви да прочетете Intel Xeon Phi Coprocessor [ii] Ръководство за разработчици на софтуер (SDG). Но бъдете предупредени: Когато в раздела за управление на захранването на Ръководството за разработчици става въпрос за създатели на софтуер (т.е. програмисти), изрично или имплицитно, нямаме предвид. Целевата аудитория на това ръководство е разработчиците на операционна система и драйвери. Между другото, в миналия живот бях един от тези разработчици. Една от целите на тази поредица от блогове е да разгледаме управлението на захранването от гледна точка на разработчик на приложения, т.е. аз или вие, а не от гледна точка на създателя на операционна система или драйвер.

Накратко, има P-състояния на пакет, C-състояния на ядра (понякога те се наричат ​​CC-състояния) и C-състояния на пакет (PC-състояния). Също така съпроцесорът може да работи в режим "Turbo" 3. Р-състоянията на ядрата не съществуват.

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

В по-късна серия ще говоря за P-състояния на взрив (включително режим "Turbo" [iv]), C-състояния на ядра и състояния на взрив PC. Ще говоря и за това как вие като разработчик на приложения можете да управлявате захранването на копроцесора...

И още една забележка. Не гарантирам, че всички версии на съпроцесора Intel Xeon Phi (т.е. типове копроцесори) поддържат всички тези функции за управление на захранването.

Глава 2. Р-състояния. Намалена консумация на енергия, без да се жертва производителността

От самото начало мога да заявя, че P-състоянията няма да повлияят на производителността на приложението. Те обаче са важни за приложението по други причини. Тъй като повечето читатели на този блог не приемат нищо за даденост, критични и скептични са към цялата възприемана информация (като инженери и учени), ще подкрепя това свое твърдение с доказателства.

P-състоянията са двойки стойности на напрежение и честота, които определят скоростта на копроцесора и мощността, която консумира. Колкото по-ниско е работното напрежение на процесора, толкова по-малко енергия той консумира. (В една от по-ранните си публикации обясних това на много високо техническо ниво.) Тъй като честотата също намалява с напрежението, скоростта на изчисление намалява. Така че виждам как узрява вашият въпрос: „Как може да има ситуации в високопроизводителни изчислителни приложения, когато трябва да активирам P-състояния и да намаля ефективността на приложението?“ Използването на P-състояния е по-малко важно в HPC, отколкото в по-малко интензивни среди като клиентски компютри и сървъри за данни. Но дори и в съпроцесорни и високопроизводителни изчислителни среди, дългите периоди на неактивност са доста често срещани между големите изчислителни задачи. Например, ако използвате модела за разтоварване, копроцесорът вероятно няма да се използва между разтоварванията. В допълнение, родното приложение, работещо на копроцесор, често е неактивно по различни причини, например, в очакване на следващата част от данните да бъдат обработени.

Програмата за управление на мощността на съпроцесора поддържа състояния P от P0 до Pn. Броят на P-състоянията, поддържани от всяко освобождаване (тип) на копроцесора, може да варира, но винаги е поне два. Освен това някои видове поддържат Turbo P-състояния. Програмата за управление на захранването на копроцесора обработва преходи от едно P-състояние в друго. Програмата за управление на захранването на хоста няма много общо с това.

Възниква естествен въпрос: как всичко това ще се отрази на представянето? Все още работим в изчислителна среда с висока производителност. Отговорът е прост: няма практически ефект върху изчислителната производителност. Не се съмнявам, че сега имате няколко въпроса:

(а) „Чакай малко! Как е възможно? Ако съпроцесорът забави процесора чрез намаляване на честотата му, как може да не повлияе на производителността на моето приложение? "

(б) „Просто искам приложението да работи възможно най-бързо. Защо изобщо да се мъча да намаля консумацията на електроенергия? “

Разгледайте първо вариант Б. Разбирам, че мощността не е основен приоритет за вас като разработчик на приложения. Но това все още косвено влияе върху производителността на приложението. Повишеното потребление на енергия е свързано с такива неща като по-високи разходи в стаята, увеличен разход на електроенергия за охлаждане и климатизация, необходимост от по-голяма площ на помещението и др. Просто ние (програмистите) не трябва да се грижим за това, но нашите колеги - администратори, системни архитекти, мениджъри на помещения и т.н.

За да бъда честен, трябва да помислите и за това. Това се отразява на вашето приложение по много важен начин, въпреки че не винаги е очевидно. Ако центърът за данни може да намали консумацията на енергия, без да се жертва производителността, това означава, че повече процесори могат да бъдат инсталирани в едно и също пространство, без да се надвишава определеното захранване. Тоест, образно казано, „получавате повече за същите пари“. И това е много добре за вас като програмист или учен. По-ниските изисквания за мощност означават, че повече процесори могат да бъдат настанени на по-малко място. Това от своя страна означава, че вие ​​като разработчик на приложения или учен можете не само да се справяте с по-мащабни задачи (в системата има повече ядра), но и да обработвате тези задачи по-бързо (по-ниска латентност на трансфера на данни между ядра).

Да се ​​върнем към P-състоянията. Теоретично P-състоянията ще повлияят на производителността, но не по начин, който влияе на приложения с висока производителност. Как е възможно? Въпросът е в преходи между Р-състояния. Също така имайте предвид използването на процесора. Софтуерът за управление на захранването периодично следи използването на процесора. Ако употребата е под определен праг, P-състоянието се увеличава, което означава, че процесорът влиза в следващото състояние на енергийна ефективност. Ключовата дума в предишното изречение е "използване". Какво според вас ще бъде използването на процесора при изпълнение на ресурсно интензивна HPC задача? В идеалния случай тя трябва да бъде възможно най-близо до 100%. В какво P-състояние ще бъде приложението ви с това използване на процесора? Това е P0, най-бързото P-състояние (без Turbo режим). Следователно P-състоянията с най-високи икономии на енергия няма да повлияят на вашето приложение: ситуация, при която процесорът, поддържащ вашето добре настроено високопроизводително приложение, може да влезе в едно от тези състояния, просто няма да възникне.

Така че всички високопроизводителни части на приложение винаги ще използват почти 100% процесори. Използването на почти 100% почти винаги гарантира най-бързото P-състояние, т.е. P0. Следователно P-състоянията не оказват влияние върху производителността на приложението.

Как да накарам моето приложение да работи в един от тези турбо режими? Това не трябва да се прави, защото е твърде опасно. Много е лесно да направите малка грешка, която ще прегрее и ще повреди копроцесора. Ако процесорът поддържа "Turbo", оставете управлението на този режим на операционната система.

Глава 3. C-състояния на ядрата: подробности

ПРЕДШЕСТВАЩО СЪСТОЯНИЕ: КРАТКО СЪОБЩЕНИЯ ЗА НЕАКТИВНОСТТА

Ето кратко описание на C-състоянията. C-състоянията са неактивни енергоспестяващи състояния (за разлика от P-състоянията, които са енергоспестяващи състояния по време на работа). В P-състояние процесорът продължава да изпълнява инструкции, а в C-състояние (с изключение на C0 състояние), процесорът е в неактивен режим, не се изпълняват инструкции. Може да се даде аналогия: празен процесор е като къща, в която всички светлини са включени, но там няма никой. Консумацията на цялото това електричество не служи за никаква полезна цел, освен ако не носи известна печалба на електрическата компания. Кой е най-добрият начин да продължите? Ако вкъщи няма никой, тоест къщата е неактивна, защо да оставяте осветлението включено? Същото се отнася и за процесора. Ако никой не го използва, защо да захранваме неизползвани елементи и да хабим електричество? Можете да ги изключите и да запазите.

C0 е "нулевото" състояние на мощност: в това състояние ядрото всъщност работи, а не на празен ход.

РАЗЛИКА МЕЖДУ СЪСТОЯНИЯТА НА ЯДРЕНО И ПАКЕТНО ИНДИКУВАНТЕ

Съпроцесорът съдържа до 60 (или дори повече) ядра в една опаковка. Състоянията на празен ход на ядрото (C-състояния) работят за всяко ядро: едно от тези 60 ядра може да бъде в състояние на C0, т.е. Състоянията на компютъра са състояния на неактивност за целия пакет, т.е. състояния на икономия на енергия за всички 60 ядра и поддържащи електронни компоненти на чип. Както се досещате, за да поставите пакет в състояние PC-6, всички ядра трябва да са в състояние C6. Защо? Тъй като пакетът има функционалност, която поддържа всички ядра, „деактивирането“ на някои електронни компоненти на пакета засяга всички ядра.