Порядок виконання команд програми

Суперконвеєрна архітектура, застосована в процесорах Р6, ділить ступені стандартного конвеєра на дрібніші частини, ніж у ранніх процесорах Intel.

Це означає, що кожна окрема ступінь буде містити менше схемотехнических елементів, і час між подачею на їх вхід керуючих сигналів і отриманням результату стане менше. Це, в свою чергу, дозволяє підвищити тактову частоту роботи процесора.

Конвеєр складається з 12 стадій:

    I-4 – визначення адреси команди і її вибірка; 5-6 – декодування команди і перетворення в МО; 7 – перейменування регістрів; 8 – запис микроопераций в станцію-резервуар; 9 – передача МО зі станції-резервуара до виконавчих блокам; 10 – виконання МО (один або кілька тактів); II-12 – завершення команди: запис результатів в регістри.

Блок вибірки команди зчитує потік команд з кеша команд першого рівня порціями по 32 байти за такт. Рядки вибираються на підставі інформації з буфера передбачення переходів. У ліченої рядку за допомогою обчислювача адреси наступної команди визначається початок команди. Якщо команда знаходиться в кінці рядка, зчитується другий рядок, звідки вибираються відсутні байти цієї команди. Вирівняні 16 байт команд передаються на три дешифратора.

ДШК складається з трьох паралельних дешифраторів, два з яких – прості (дешифратори простих команд) і один – складний (дешифратор складних команд). Завдання кожного дешифратора – перетворення команд х86 в одну або декілька МО.

Прості дешифратори перетворять команду в єдину МО. Складний дешифратор працює з командами, яким відповідають від однієї до чотирьох МО. Деякі особливо складні команди передаються планировщику послідовності МО, який, звертаючись до таблиць, генерує необхідну послідовність МО. Спочатку всі команди передаються дешифраторами простих команд. Якщо команда виявляється складною, вона передається дешифратор складних команд або планировщику послідовності МО. Така пересилання злегка уповільнює дешифрацию, але за рахунок буферизації за допомогою станції-резервуара це незначно позначається на продуктивності процесора.

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

Оскільки в класичній архітектурі процесора х86 є тільки вісім логічних регістрів загального призначення, то при паралельному виконанні декількох команд вельми вірогідна ситуація, коли одні й ті ж регістри будуть використовуватися в різних командах. Звідси виникає необхідність використовувати для різних команд різні фізичні регістри. Для цього попередньо потрібно перепризначити зазначені в командах логічні регістри на реальні регістри процесора, різні для різних команд. Посилання в командах на логічні регістри замінюються посиланнями на реальні регістри, що знаходяться в елементах буфера переупорядочивания МО (пулу команд). Ця процедура виконується в таблиці призначення регістрів.

Крім того, тут відстежується порядок виконання МО, відповідних командам, таким чином, щоб команди, що використовують в якості операндів результати попередніх команд, виконувалися пізніше. У разі необ-хідності запису результату в один і той же регістр для двох різних команд вони шикуються в чергу. Таким чином, пізніша команда не може бути оброблена до завершення більш ранньої команди.

Станція-резервуар виступає диспетчером і планувальником МО, для чого вона безперервно сканує буфер переупорядочивания МО (пул команд) і вибирає команди, готові до виконання, тобто мають всі вихідні операнди. Результат виконання повертається назад в буфер і зберігається разом з МО до виводу. Оскільки результати виконання МО можуть бути вихідними операндами для наступних МО, вони будуть взяті безпосередньо з пулу команд. Порядок виконання команд грунтується не на їх первісної послідовності, а на факті готовності команди і її операндів до виконання. Ця процедура називається out-of-order – виконання з измене-нієм послідовності. Такий порядок роботи процесора був вперше реалізований в радянському суперкомп’ютері “Ельбрус”, а його ведучий розробник В. М. Пентковський, який став після розвалу Радянського Союзу керівником проекту Pentium Pro, використовував цю ідеологію при створенні мікроархітектури Р6. Виконання команд програми зі зміною послідовності їх виконання стало одним з наріжних каменів мікроархітектури Р6, який забезпечив різкий підйом продуктивності процесора.

Всього станція-резервуар може одночасно видати на виконавчі блоки, що працюють паралельно, п’ять МО. Однак така ситуація виникає досить рідко. Набагато частіше на них видається три МО за такт.


1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)

Порядок виконання команд програми