Конвейрна обработка на информацията
| Информационни технологии | 2009-12-04 | 171 сваляния |
Конвейрна обработка на информацията
В съвременните компютри операциите се изпълняват не само със суматора, а се въвеждат и т.нар. конвейри, които довеждат до по-висока производителност и до определен паралелизъм при изпълнение на опциите. За компютрите използващи конвейри казваме, че притежават Super Pipe Line Architecture (конвейрна архитектура). А компютрите които имат няколко конвейра, имат Super Scalar Architecture (скаларна архитектура).
При конвейра една операция се разбива на много подоперации, които се изпълняват едновременно (паралелно) и по такъв начин се увеличава производителността на обработката. В класа i86 за пръв път конвейри са въведени и в 80486 до сегашните компютърни системи. По принцип конвейрна се счита за характеристика на RISC компютрите и в нашия клас i86 се счита, че има елемент на RISC компютри.
Конвейра се характеризира със стъпала или етапи на обработка, освен етапи или стъпала не наричат фази на обработка. В различните модели и различните поколения компютри се използват конвейри с различна дължина (различно количество стъпала). Ние ще разгледаме най-прост конвейр който е използван в 486 или в Intel Pentium. Този конвейр е 5 стъпален (фазен).
| | | | | |
IF D1 D2 EXE WB
t1
k
вход изход * предполагаме, че в момент от време t1 за обработка на входа идва инструкция к. Подробната таблица е на таблица 1.
IF = Instruction Fetch - Извличане на инструкция. На този етап IF извлича поредната инструкция от паметта в сл-я к-та. Обработка на поредната машинна инструкция във всяка фаза става за един процесорен цикъл. Не винаги процесорният цикъл съвпада с тактовата честота, т.е. генератора и затова казваме процесорен цикъл (такт). На следващ момент t2 се взема следващата инструкция к+1 и к отива на стъпало D1.
D1 = Decode 1 първо декодиране. В тази фаза се декодира кодът на операцията в съответната машинна инструкция в нашият случай в к-тата машинна инструкция. В момент t3 се извлича к+2 машинна инструкция, а останалите се придвижват в конвейра, а к-тата инструкция навлиза във фаза D2.
D2 = Decode 2 второ декодиране. В тази фаза се извършва изчисление на адреса на операндите и извличане на операндите от паметта. На момент t4 се извлича к+3 машинна инструкция, а к-тата навлиза във фаза EXE.
EXE = Execute изпълнение. В тази фаза се извършва изпълнението на посочената фаза с операнди извлечени на предишен етап. В следващ момент от време t5 се извлича следващата машинна инструкция к+4, а другите се придвижват напред в конвейра. К-тата инструкция навлиза във фаза WB.
WB = Write Back Обратен запис. Това означава че полученият след операцията резултат се записва в някакъв регистър. С това се счита, че обработката на к-тата инструкция е приключена, т.е. тя е излязла от конвейра.
За изпълнението на една инструкция в действителност са необходими 5 цикъла, но след първата машинна инструкция всяка следваща излиза на изхода след един процесорен такт, затова често казват, че всяка машинна инструкция освен първата се изпълнява за 1 процесорен такт. Този ефект се получава поради това, че в конвейра се обработват едновременно пет машинни инструкции в различни фази. Счита се, че производителността на компютъра при тази обработка се увеличава значително в най-добрият случай, т.е. теоретично е 1 цикъл, но в действителност не е така. В зависимост от машинната програма и подреждането на машинните инструкции в нея може да се окаже, че времето за обработка равно на един цикъл не е достатъчно. За някои ситуации и в резултат може да настъпят грешки, които ние наричаме блокиране на конвейра. Причините за блокировка на конвейра могат да бъдат следните:
-
машинната програма е подредена така, че следващата машинна инструкция използва резултата от предишната.
Пр.: к mov. eax, ebx
k+1 add. eax, [eax + esi]
или иначе казано: к Премести съдържанието на регистъра ebx в еах. к+1 Събери съдържанието на регистрите еax + esi, а резултата запиши в edx.
В този пример к+1 инструкция ще използва при изчисляването на 2рия операнд старото, невалидно съдържание на регистъра еах, което ще доведе до грешка.
-
Когато изчисленият операнд трябва да бъде извлечен от ОП. Обикновено циклите на ОП са по-бавни от процесорните поне 6 пъти, т.е. грешките се получават поради недостиг на време за обработка на инструкцията за фазата.
Пр.: Ако за една фаза са необходими 10nsec. за обработка, на ОП й трябват около 60nsec., но в конвейра има следващи операции, които на 11-тата nsec. във фазата ще постъпи следващата поред инструкция без първата да е била обработена в ОП за необходимото й време, и така се получава грешката.
-
Ако се срещне инструкция Jump Безусловен преход или Jcc = Jump Code Condition преход по условие. Следва фиг.1.
Инструкции за преход се изпълняват във фазата EXE и чак тогава става ясно каква ще е следващата инструкция която трябва да бъде изпълнена, а през това време конвейра си работи. Докато се изпълнява инструкцията за прехода във фазата EXE конвейрът се пълни с инструкции разположени в машинната програма непосредствено след тази инструкция. След изпълнението може да се окаже, че следващата инструкция която трябва да бъде изпълнена се намира на съвсем друг адрес, т.е. че конвейрът се е напълнил с неправилните инструкции. Тук се получава грешката.
За да се предпази конвейрът от грешки или блокировки се използват 2 принципа (две концепции). Едната се нарича концепция на Бъркли, а другата на Станфорд. Първата е хардуерна, а втората софтуерна.
Тагове от реферата: конвейрна, операиит, съвременнит, информаият











