Karh09 2 13

Челна част (Front End) на вътрешната архитектура IA-32

Table of Contents

В настоящата тема е описана челната част (Front End) на вътрешната архитектура IA-32: устройство за предсказване на преходите, устройство за извличане на инструкциите и предварителна дешифрация, инструкционен буфер и декодери. Наред с това, са представени техники за повишаване на ефективността на тази секция, а именно макро- и микро-сливане, трасировки.
Челната част (Front End) на вътрешната архитектура на IA-32 е един от основните компоненти на процесорите Intel, както може да се види на фигурата. Тя съдържа кеша за проследяване, който е кеш за инструкции. При липса в кеша за проследяване в непосредствена близост до кеша за проследяване е разположен ROM c микрокода, който съхранява микрооперациите на комплексните инструкции. За комплексните инструкции кешът за проследяване изпраща указател към ROM, по който се извлича съответната последователност от микрооперации, имплементиращи тази инструкция.
В този компонент се включват следните устройства:
• устройство за предсказване на преходите
• устройство за извличане на инструкциите и предварителна дешифрация
• инструкционен буфер
• устройство за декодиране на инструкциите
Следва описание на всеки от изброените компоненти.
1. Устройство за предсказване на преходите – това устройство позволява да се предвиди коя инструкция ще се изпълни при прехода още преди неговото действително изпълнение. За предсказване на прехода се използват различни стратегии за предсказване на преходите (branch prediction), които могат да бъдат статични и динамични. Основната разлика е, че при динамичните стратегии за предсказване на прехода се следи и се взима предвид поведението на програмата до стартирането на конкретната инструкция за условен преход.
Най-често използваните статични стратегии за предсказване на прехода се основават на следното:
• Приема се, че преходът никога не се осъществява и се извличат следващите инструкции;
• Приема се, че преходът винаги се осъществява и се извличат инструкцията-цел на прехода и последователността от инструкциите след нея;
• Решението зависи от операционния код на инструкцията за условен преход.
Основната цел на динамичните стратегии за предсказване на прехода (dynamic branch prediction) е да се повиши точността на прогнозата, като се използва историята на изпълнението на програмата на до този момент. За съхраняването на историята на всяка инструкция за условен преход (или поне на последните изпълнени такива) се използват допълнителни битове, съдържащи стойностите на ключовете за осъществени/неосъществени преходи. Таблицата, съхраняваща историята на преходите, обикновено се съдържа в малък кеш, свързан с фазата на конвейера за предварително извличане на инструкции. Всяка позиция в таблицата съдържа три компоненти: адрес на инструкцията за условен преход, битове за историята на прехода, информация за целта на прехода (адрес на инструкцията-цел на прехода или самата инструкция-цел на прехода). Таблицата, съхраняваща историята на преходите, се нарича буфер за целта на прехода – BTB (Branch Target Buffer) и е представена на втората фигура. При използването на BTB е възможно да се достигне до 85-90% прогнозиране на преходите.
Предимствата на този метод са, че не се изисква рекомпилация на кода или промяна в машинните инструкции. Недостатъците му са, че апаратната реализация е скъпа и ефективността силно се влияе от контекстните превключвания.
2. Устройство за извличане на инструкциите и предварителна дешифрация. Това устройство извлича инструкциите, които е вероятно да бъдат изпълнени, запазва в кеш памет често използваните инструкции и извършва тяхната предварителна дешифрация.
3. Инструкционен буфер. Този буфер извършва буфериране между устройството за предварителна дешифрация и устройството за декодиране на инструкциите.
4. Устройство за декодиране на инструкциите. Декодиращата логика на това устройство се състои в приемане на инструкциите от инструкционния буфер и в тяхното декодиране в микрооперации.
Следва разглеждане на техники за повишаване на ефективността на тази секция, а именно макро- и микро-сливане, трасировки.
При макро-сливането се осъществява сливане на стандартна последователност от две инструкции в една декодирана инструкция (микрооперация), така че двете инструкции изглеждат като една по-дълга инструкция. Така се увеличава производителността на декодирането, намалява се латентността и електрическата консумация.
При микро-сливането се осъществява сливане на стандартна последователност от две микрооперации в една микрооперация. Така се увеличава производителността на завършващата част (Retirement).
Трасировките са техника, при която стековият указател се изчислява чрез използване на специална логика, посредством която се постига повишаване на ефективността на изпълнение на входа и изхода от процедура/функция.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License