ня стану регістра відбулося до поновлення стану регістра будь-який інший інструкцією (попередньої або наступної) в цій групі інструкцій, крім випадків, зазначених Залежно по регістрах і залежність по пам'яті описаних нижче.
Правила упорядкування спочатку формують контекст для обмежень залежно регістра, обмежень залежно пам'яті і порядку повідомлення винятків. Ці обмеження залежно застосовуються тільки між інструкціями, чий ресурс читання і запису не є динамічно заблокованим за допомогою предикації.
· Залежності по регістрах. У групах інструкцій, реєстрові залежності типу RAW (читання після запису) і WAW. Регістрові залежності WAR (запис після читання) дозволені.
Ці обмеження залежно застосовуються і для явних реєстрових звернень (з операндів інструкцій), і для неявних реєстрових звернень (деякі інструкції неявно звертаються до прикладних і керуючим регістрам). Предикатний регістр PR0 є винятком для цього обмеження реєстрової залежності, оскільки запис в PR0 ігнорується, а читання завжди повертає 1.
Деякі оновлення системних станів вимагають більш суворих вимог, ніж описано тут. Залежності по пам'яті. У групах інструкцій, дозволені залежності по пам'яті RAW, WAW, WAR, а також залежності ALAT. Завантаження буде спостерігати результати самого останнього збереження за тією ж адресою пам'яті. Якщо багаторазові збереження присутні в одній і тій же групі інструкцій, то пам'ять буде містити результат самого останнього запам'ятовування після виконання групи інструкцій. Збереження після завантаження по тому ж самому адреса не буде зачіпати дані, завантажені завантаженням. Інструкції попереднього завантаження, перевірки завантаження, перевірки попереднього завантаження, запам'ятовування і семафор пам'яті неявно звертаються до ALAT. Залежності RAW, WAW, WAR і ALAT дозволені в межах групи інструкцій і поводяться точно також, як це було описано для залежностей по пам'яті.
Результуючий ефект обмежень залежно описаних вище зводиться до того, що процесор може виконувати всі (або будь-яка підмножина) інструкцій в межах правильної групи інструкцій одночасно або послідовно з одним і тим же кінцевим результатом. Якщо ці обмеження залежності не виконуються, то поведінка програми не визначено.
Винятки повідомляються в порядку інструкцій. Обмеження залежно застосовуються незалежно від присутності або відсутності винятків, тобто обмеження повинні бути задоволені, не залежно від того чи трапиться виняток у межах групи інструкцій. Для правильно сформованої групи інструкцій, в точці виникнення виключення всі попередні інструкції завершать свою модифікацію архітектурного стану. Усі наступні інструкції не будуть модифікувати архітектурне стан. Якщо група інструкцій порушує вимогу залежності, то модифікація архітектурного стану до і після виключення Не гарантується (обробник помилки побачить невизначене значення в регістрах залучених до порушення залежності, навіть якщо виключення станеться між першою і другою інструкціями в порушенні). У разі багаторазових винятків відбуваються при виконанні інструкцій тієї ж самої групи інструкцій, буде повідомлено виняток, зустрінуте в самій ранній інструкції.
Послідовність інструкцій, що випливає з правил заявлених вище називається послідовним виконанням (sequential execution).
Правила упорядкування та обмежень залежності дозволяють процесору динамічно переупорядочівать інструкції, виконувати інструкції з прихованим часом затрачуваним пристроєм, або навіть одночасно виконувати інструкції по різні сторони стопа або виконаного переходу за умови, що запропонована коректна послідовність, а формування послідовності виконання надано програмісту.
IP - це спеціальний ресурс. Читання і запис в IP виконується послідовно, а не паралельно. Для IP дозволені залежності RAW, а читання отримає IP зв'язки, який його (читання) містить. Так, кожна зв'язка, виконувана паралельно, логічно читає IP, збільшує його і записує назад. Крім того, дозволена залежність WAW.
Ігноровані прикладні регістри не є винятком для цілей перевірки залежності. Залежності RAW і WAW НЕ дозволені для ігнорованих прикладних регістрів.
Спеціальні випадки залежності RAW
Є чотири дозволених спеціальних випадку залежно RAW по регістрах в межах групи інструкцій. Це такі спеціальні випадки: інструкція alloc, інструкції перевірки завантаження, інструкції зачіпають розгалуження та інструкції id8.fill і st8.spill.
Інструкція alloc неявно записує маркер поточного вікна (CFM), який неявно читається всіма інструкціями звертаються до стекового подмножеству файлу основних регістрів. Інструкції, які звертаються до стекового подмножеству файлу основних регістрів можуть з'являтися в тій же сам...