Паралелизам на нивоу наредбе

Паралелизам на нивоу наредбе (енгл. Instruction-level parallelism, ILP) мери колико се операција, у једном рачунарком програму, могу извршити истовремено. Потенцијално преклапање инструкција се назива паралелизам на нивоу наредбе.

Постоје два приступа паралелизму на нивоу наредбе:

  • Хардверски
  • Софтверски

Хардверски ниво ради на основу динамичког паралелизма, док софтверски ниво ради на основу статичког паралелизма.[1] Pentium процесор ради на основу динамичких секвенци паралелног извршавања док Itanium процесор ради на основу паралелизма на статичком нивоу.

Размотримо следећи програм:

  1. e = a + b
  2. f = c + d
  3. m = e * f

Трећа операција зависи од резултата прве и друге операције, тако да се не може добити резултат док се не изврше прве две до краја. Међутим, прве две операције не зависе од других операција тако да се могу извршити истовремено. Ако претпоставимо да се свака операција може завршити у једној јединици времена, онда се овај програм може извршити, укупно, у две јединице времена (добијамо паралелизам на нивоу наредбе 3/2).

Циљ дизајнера компајлера и процесора је да идентификује предност паралелизма на нивоу наредбе и да ту предност искористи што је више могуће. Обични програми се углавном пишу по моделу секвенцијалног извршавања где се инструкције извршавају јена за другом и редоследом који одређује програмер. Паралелизам на нивоу наредбе омогућава процесору и компајлеру преклапање извршавања више инструкција. Може чак дозволити и промену редоследа по коме се инструкције извршавају.

Колико паралелизам на нивоу наредбе постоји у програмима, директно зависи од апликације. У одређеним областима, као што су графика и научна израчунавања, ова врста паралелизма може постојати у великој количини. Међутим, преоптерећења, као што је криптографија, излажу много мање паралелизма.

Микроархитектонске технике које искоришћавају паралелизам на нивоу наредбе:

  • Проточна обрада инструкциија, где се извршавања више инструкција могу делимично преклапати.
  • Суперскаларно извршавање, веома дугачке речи инструкција (енгл. very long instruction word, VLIW) и уско повезани EPIC концепти, у којима се више јединица за извршавање користе за паралелно извршавање више инструкција.
  • Ванредна извршавања (енгл. out-of-order execution, OOE), где се инструкције извршавају у произвољном редоследу који не нарушава зависности података. Ова техника је независна и од проточне обраде и од суперскаларне технике. Тренутна имплементација OOE динамички (нпр. док се програм извршава и без помоћи компајлера) изводи ILP из обичних програма. Алтернативно, може се извести овај паралелизам у времену компајлирања и некако се пренети ова информација хардверу. Због комплексности скалирања OOE технике, индустрија је преиспитала скупове инструкција које експлицитно шифрују више независних операција по инструкцији.
  • Преименовање регистара, односно техника која се користи да се избегне непотребна серијализација програмских операција које су наметнуте поновном употребом регистара тих операција. Ова техника се користи да би се омогућила "ванредно" извршавање.
  • Спекулативно извршавање које омогућава извршавање целих инструкција или делова инструкција пре провере да ли би ова извршавања уопште требало да се десе. Форма спекулативног извршавања која се често користи је контрола тока спекулација где се инструкције (које су прошле контролу тока) извршавају пре него што се утврди мета контроле тока. Користе се и још неколико других форми, укључујући спекулативно извршавање које воде предикција вредности, предикција зависности меморије и предикција кашњења кеша.
  • Предикција гранања, која се корсити да би се избегло одуговлачење ради решаваља контроле зависности. Користи се са спекулативним извршавањем.

Архитектуре токова података су друга класа архитектура где се ILP експлицитно наглашава.

Последњих година, ILP технике су се користиле да би обезбедиле побољшање перформансе упркос повећању разлика између фреквенција рада процесора и времену приступа меморије (рани дизајни ILP-а, као што је IBM 360, су користили технике да савладају ограничења наметнута релативно малим фајловима регистара). Тренутно, кеш пенал за промашај у главној меморији кошта неколико стотина процесорских циклуса. Док је углавном могуће искористити ILP да би дпустио таква кашњења, трошкови повезаног ресурса и расипања енергије су несразмерни. Шта више, комплексност и честа кашњења основних хардверских структура резултују смањење фрекверије рада, и тиме поништавајући било какве бенефиције. Отуда су се наведене технике показале као неадекватне да очувају процесор од одуговлачења за податке ван чипа. Уместо тога, индустрија се креће ка експлоатисању паралелизма вишег нивоа који се може експлоатисати преко техника као што су multiprocessing и multithreading.[2]

Види још уреди

Референце уреди

Литература уреди

  • Hennessy, John L.; Patterson, David A. Computer Architecture: A Quantitative Approach. 

Спољашње везе уреди