uawikipc.ru

Інтелектуальний розподіл обробки таймерного такту

На малюнку нижче зображено процесори, що виконують ISR-процедуру обробки переривання від годинника і обробні закінчення часу таймерів, показано, що процесор 1 залучається кілька разів (суцільні стрілки), навіть при відсутності пов`язаних з ним таймерів із закінченням часу (пунктирні стрілки).

витікання-часу-таймера

Хоча при роботі процесора 1 така поведінка і потрібно (для поновлення часу виконання потоку або процесу і планування стану), що якщо процесор 1 простоює (і не повинен займатися закінченням часу таймерів)? Навіщо йому як і раніше обробляти переривання від годинника? Як уже зазначалось, для поновлення загального системного часу і такту системного годинника потрібно тільки одна додаткова робота.



Як хронометра цілком достатньо призначити лише один процесор (в даному випадку процесор 0) і дати можливість іншим процесорам залишатися в сплячому стані. Якщо вони будуть розбуджені, будь-які коригування, пов`язані з часом, можуть бути виконані шляхом ресинхронізації з процесором 0.

Фактично Windows так і робить, реалізуючи даний принцип (який називається інтелігентним розподілом обробки таймерного такту), і на наступному малюнку показані стану процесорів при виконанні сценарію, за яким процесор 1 знаходиться в сплячому стані (на відміну від колишньої картини, де ми припускали, що він виконує який-небудь код). Як бачите, процесор 1 пробуджується тільки 5 разів для обробки своїх таймерів із закінченням часу, що створює набагато більш широкий розрив (сплячий період).

Ядро використовує змінну KiPendingTimer, яка містить масив з структур масок подібності, що показують, які логічні процесори потребують отримання тактового інтервалу для заданого виконавця таймера (інтервалу такту годин). Потім воно може відповідним чином запрограмувати контролер переривань, а також визначити, яким процесору воно буде відправляти IPI для ініціювання обробки таймерів.

інтелігентне-розподіл-обробки-таймерного-такту

Залишення якомога більших проміжків грає дуже важливу роль, якщо взяти до уваги спосіб управління електроживленням, застосовуваний в процесорах: як тільки процесор виявить, що навантаження постійно зменшується, він зменшує свою споживану потужність (P-стан), поки в кінцевому підсумку не ввійде в стан простою. У процесора є можливість вибірково вимикати свої складові частини і все глибше входити в стан простою або сплячки, наприклад, він може вимикати блоки кеш-пам`яті.

Але якщо процесору знову доведеться прокинутися, на те щоб включитися, буде витрачена енергія і час-тому розробники процесорів, будуть йти на ризик, пов`язаний з введенням цих станів простою і сплячки (C-станів), тільки якщо час, що проводиться в цих станах, перевершує час і енерговитрати, що витрачаються на вхід в ці стани і вихід з них. Зрозуміло, що немає ніякого сенсу витратити 10 мс на вхід в сплячий стан, яке триватиме лише 1 мс.

Заважаючи переривань від годин будити без потреби процесори (через таймерів), можна домогтися їх більш глибокого занурення в C-стану і більш тривалого перебування в цих станах.

Поділитися в соц мережах:
Схожі
» » Інтелектуальний розподіл обробки таймерного такту