Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Мікропроцесор Intel Itanium 9300

Реферат Мікропроцесор Intel Itanium 9300





ційних архітектур часто обмежені у своїх можливостях щодо застосування спекулятивної інформації, оскільки вони не можуть гарантувати, що вона завжди коректна. Архітектура Itanium дозволяє компілятору використовувати спекулятивну інформацію без шкоди для коректності виконання додатка. У традиційній архітектурі виклики процедур обмежують продуктивність, через зливання (spill) і заливання (fill) регістрів. Архітектура Itanium дозволяє процедурам передавати застосування регістрів процесору. Це дозволяє процесору планувати процедурні регістрові операції навіть при низькому ступені ILP.

Архітектура Itanium забезпечує такі механізми як шаблони інструкцій, підказки (hint) переходів і кеш-підказки дозволяють компілятору передавати процесору інформацію з процесу компіляції. Додатково, це дозволяє компілювати код для керівництва пристроями процесора, що використовують інформацію в процесі виконання. Ці комунікаційні механізми необхідні для мінімізації втрат продуктивності пов'язаних з переходами і кеш-промахами.

Витрати на переходи мінімізуються за допомогою дозволяючого коду передавального інформацію переходу на апаратні засоби до фактичного виконання переходу.

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


.5 Спекулятивність


Існує два типи спекулятивності: з управління і за даними. В обох спекулятивних компілятор, використовуючи ILP, запускає дію заздалегідь і усуваючи час очікування цієї дії для критичного шляху. Компілятор запустить дію спекулятивно, якщо він буде резонно впевнений, що спекуляція буде вигідна. Щоб було вигідно повинні виконуватися дві умови: (1) це має бути статистично досить часто, щоб ймовірність того, що потрібно відновлення, була мала і (2) запуск операції заздалегідь, повинен дати додаткову ILP-підвищену оптимізацію. Спекулятивність - це один з первинних механізмів для компілятора, щоб використовувати статистичний ILP, шляхом поєднання, і тому допустимості затримок операцій.

Спекулятивність з управління

Спекулятивність з управління - це виконання операції до переходу на гілку програми, що містить цю команду. Розглянемо наступну послідовність коду:

if (a gt; b) load (ld_addr1, target1) load (ld_addr2, target2)

Якщо операція load (ld_addr1, target1) була виконана попередньо, до завершення перевірки (a gt; b), то операція буде спекулятивної з управління по відношенню до керуючому умові (a gt; b). При нормальному виконанні операція load (ld_addr1, target1) може бути виконається, а може бути і немає. Якщо нова спекулятивна завантаження з управління з'явиться причиною виключення, то виключення буде обслуговуватися, тільки якщо (a gt; b). Коли компілятор використовує спекуляцію з управління, він залишає операцію перевірки на своєму місці. Перевірка перевіряє, чи відбулося виняток і якщо так, то переходить до відновлював (recovery) коду. Тепер послідовність кодів перетворюється приблизно так:

/* до критичного шляху */

sload (ld_addr1, target1)

sload (ld_addr2, target2)

/* крім операторів використовують target1/target2 */

if (a gt; b) scheck (target1, recovery_addr1) scheck (target2, recovery_addr2)


Спекулятивність за даними

Спекулятивність за даними - це виконання завантаження з пам'яті до збереження, яке передувало йому, і яке може потенційно змінити її. Спекулятивна завантаження даних також згадується як «попередня завантаження» (advanced load). Розглянемо наступну послідовність коду:


store (st_addr, data)

load (ld_addr, target)

use (target)

Процес визначення часу обчислення взаємини між зверненнями до пам'яті називається зняттям невизначеності (disambiguated). Якщо в наведеному прикладі не може бути знята невизначеність між st_addr і ld_addr , і якщо завантаження була виконана раніше збереження, то це буде спекулятивна завантаження за даними щодо збереження. Якщо адреси пам'яті накладаються один на одного, то спекулятивна завантаження даних запущена раніше збереження, поверне значення, що відрізняється...


Назад | сторінка 3 з 16 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Як бути, якщо контрагент за договором - нерезидент?
  • Реферат на тему: Розробка термогенератора, який буде використовувати тепло двигуна для заряд ...
  • Реферат на тему: Програма управління базою даних, яка містить інформацію про читачів, книгах ...
  • Реферат на тему: Штучний інтелект: чи може машина бути розумною?
  • Реферат на тему: Визначення оптимального завантаження транспортного судна