Свака инструкција процесора има више фаза у свом раду. За сваку од ових фаза потребан је један ЦПУ циклус. Ове фазе су преузимање инструкције, декодирање инструкције, извршење, приступ меморији и повратно уписивање. Респективно, ови добијају инструкције које треба да се доврше, одвајају операцију од вредности којима се управља он, изврши процес, отвори регистар у који ће бити уписан резултат и уписати резултат у отворени регистровати.
Хисторицал Ин Ордер Процессорс
У раним рачунарима, ЦПУ није користио цевовод инструкција. У овим ЦПУ-има, свака операција једног циклуса је морала да се деси за сваку инструкцију. То је значило да је било потребно пет тактова да би се просечна инструкција у потпуности обрадила пре него што би следећа могла да се покрене. Неке операције можда неће морати да запишу никакав резултат у регистар, што значи да се фазе приступа меморији и повратног уписивања могу прескочити.
Међутим, постоји проблем када се покреће комплетна инструкција пре него што се може прећи на следећу инструкцију. Проблем је промашај кеша. ЦПУ складишти податке које активно обрађује у регистру. Овоме се може приступити са кашњењем у једном циклусу. Проблем је у томе што је регистар мали јер је уграђен у језгро процесора. ЦПУ мора ићи у већу, али спорију Л1 кеш меморију ако подаци већ нису учитани. Ако га нема, мора поново да иде у већи и спорији Л2 кеш. Следећи корак је Л3 кеш; последња опција је системска РАМ меморија. Свака од ових опција захтева све више и више ЦПУ циклуса за проверу.
Сада, ово додатно кашњење може бити велики проблем у систему који мора да заврши сваку инструкцију у потпуности пре него што започне следећу инструкцију. Оно што је било процесор са 5 циклуса по инструкцији, може се изненада заглавити на једној инструкцији за десетине или стотине циклуса такта. Све време, ништа друго не може да се деси на рачунару. Технички, ово се може донекле ублажити поседовањем два независна језгра. Ништа их, међутим, не спречава да раде исту ствар, потенцијално истовремено. Дакле, спуштање вишејезгарним путем ово не поправља.
Класични РИСЦ цевовод
РИСЦ је скраћеница од Редуцед Инструцтион Сет Цомпутер. То је стил дизајна процесора који оптимизује перформансе тако што олакшава декодирање сваке инструкције. Ово је у поређењу са ЦИСЦ-ом или рачунаром са сложеним скупом инструкција, који дизајнира сложеније скупове инструкција дозвољавајући да је потребно мање инструкција за обављање истих задатака.
Класични РИСЦ дизајн укључује цевовод инструкција. Уместо покретања било које од пет фаза инструкције у било ком датом циклусу, цевовод дозвољава да се изведе свих пет фаза. Наравно, не можете покренути свих пет фаза једне инструкције у циклусу. Али можете да ставите у ред пет узастопних инструкција са помаком од једне фазе свака. На овај начин, нова инструкција се може завршити сваки циклус такта. Нуди потенцијално повећање перформанси од 5к за релативно низак пораст сложености језгра.
Процесори који немају цевовод могу бити само субскаларни, јер не могу да изврше једну комплетну инструкцију по циклусу. Са овим примарним петостепеним цевоводом, можете направити скаларни ЦПУ који може да заврши инструкцију за сваки процес. Креирањем још далекосежнијих цевовода, можете направити суперскаларне процесоре који могу да изврше више од једне инструкције по циклусу такта. Наравно, и даље постоје потенцијални проблеми.
Стилл Секуентиал
Ништа од овога не решава проблем чекања много циклуса за одговор када је потребно да се испитају различити нивои кеша и РАМ-а. Такође уводи нови проблем. Шта ако се једна инструкција ослања на излаз претходне инструкције? Ови проблеми се самостално решавају уз помоћ напредног диспечера. Пажљиво планира редослед извршења тако да ниједна упутства која се ослањају на излаз другог нису преблизу. Такође се бави промашајима кеша тако што паркира инструкцију и замењује је у цевоводу другим инструкције које су спремне за покретање и не захтевају његов резултат, настављајући инструкцију када је спреман.
Ова решења могу да раде на процесорима без цевовода, али су потребна за суперскаларни процесор који покреће више од једне инструкције по такту. Предиктор гране је такође веома користан јер може покушати да предвиди исход инструкције са више од једног потенцијалног исхода и настави под претпоставком да је тачан осим ако се не докаже супротно.
Закључак
Цјевовод омогућава да се све различите могућности процесора користе у сваком циклусу. То ради тако што истовремено покреће различите фазе различитих инструкција. Ово чак ни не додаје много сложености дизајну ЦПУ-а. Такође отвара пут да се дозволи више од једне инструкције да изврши једну фазу по циклусу.