Пређи на садржај

Рачунар са сложеним скупом инструкција

С Википедије, слободне енциклопедије

Рачунар са сложеним скупом инструкција (CISC) је рачунар где једна инструкција може да изврши неколико операција ниског-нивоа (као што су учитавање из меморије, аритметичке операције и меморијско складиште) и/или су у стању да ураде операције са више корака или режиме адресирања унутар појединачних инструкција. Термин је дат ретроактивно за разлику од рачунара са смањеним скупом инструкција (RISC).[1][2]

Примери CISC скупа инструкција архитектура су System/360 кроз z/Architecture, PDP-11, VAX, Motorola 68k, и x86.

Историјски контекст дизајна

[уреди | уреди извор]

Распламсавање сукоба и предности

[уреди | уреди извор]

Пре него што је RISC филозофија постала истакнута, многи рачунарски архитекти покушали су да премосте тзв семантички јаз, односно креирање инструкционих скупова који директно подржавају програмске конструкције на високом нивоу, као што су процедуре позива, контрола петље и сложени режими адресирања, што омогућава да се структура података и приступ низу комбинују у појединачне инструкције. Инструкције су углавном високо кодиране у циљу унапређења густине кода. Компактна природа таквог инструкционог скупа резултује у програме мањих величина и мање (спорије) приступа главне меморије, што је у то време (почетком 1960-их у даље) резултовало огромним уштедама на трошковима за меморију рачунара и складиштење дискова, као и бржег извршења. То је значило добру продуктивност програмирања чак и у асемблерском језику, као и у језику високог нивоа као што су Fortran и Algol где нису увек доступни или одговарајући (микропроцесори у овој категорији су и даље понекад програмирани на асемблерском језику за поједине врсте критичних апликација).

Нове инструкције

[уреди | уреди извор]

У 1970. години, анализа језика високог нивоа показала је неке сложене имплементације машинског језика и утврђено је да нове инструкције могу побољшати перформансе. Неке инструкције су додате које никада нису биле намењене да се користе у асемблерском језику, али се добро уклапају са компајлерским језицима високог нивоа. Компајлери су ажурирани да искористе предности ових инструкција. Предности семантички богатих инструкција са компактним кодирањем може се видети и у новим процесорима, посебно у сегменту високих перформанси где су кешови централне компоненте (за разлику од већине уграђених система). То је зато што су ове брзе, али сложене и скупе, меморије ограничене величине, чинећи компактан код корисним. Наравно, главни разлог зашто су потребне је тај да главне меморије (тј. данас динамички RAM) остају споре у поређењу са (високим перформансама) CPU-језгром.

Питања дизајна

[уреди | уреди извор]

Док многи дизајни постижу циљ високог протока по нижој цени и такође омогућавају да језичке конструкције високог нивоа буду изражене помоћу мањих инструкција, примећено је да то није увек случај. На пример, на нижим крајевима верзија комплексних архитектура (тј. који користе мање хардвер) може да дође до ситуација у којима је било могуће да се побољшају перформансе без коришћења сложених инструкција (као што су процедуре позивања или улазна инструкција), већ уместо тога коришћењем секвенца једноставнијих инструкција.

Чак и у балансираним дизајнима високих перформанси, високо кодиране и (релативно) инструкције на високом нивоу могу бити компликоване за декодовање и ефикасно извршавање унутар ограниченог транзисторског буџета. Такве архитектуре су због тога захтевале много рада на делу дизајна процесора у кешовима где једноставније, али (обично) спорије, решење базирано на декодованим табелама и/или микрокод секвенцирање није прикладно. У време када су ресурси за транзисторе и друге компоненте били ограничени, тада је такође остало мање компонената и мање могућности за друге врсте оптимизације дизајна.

Кола која обављају радње дефинисане микрокодом у многим (али не свим) CISC процесорима је, само по себи, процесор који у много чему подсећа на структуру раних CPU дизајна. У раним 1970-им годинама, то је довело до идеје повратка једноставнијем дизајну процесора како би он могао да се избори без (тада релативно великих и скупих) ROM табела и/или PLA структура за секвенцирање и/или декодирање. Први (ретроактивни) RISC-означени процесор (IBM 801 - IBM's Watson Research Center, средином 1970-их година) био је чврсто pipelined једноставна машина првобитно намењена да се користи као интерни микрокод кернела, или мотора, у CISC дизајну, али такође је постао процесор који је увео идеју RISC-а у нешто већој јавности. Једноставност и правилност у видљивом скупу инструкција олакшали су имплементацију фазе преклапања процесора (pipelining) на машинском нивоу (тј. на нивоу гледања компајлером.) Међутим, pipelining на том нивоу је већ коришћен у неким CISC “суперрачунарима” високих перформанси у циљу смањења времена циклуса инструкција (упркос компликацијама имплементирања у оквиру ограниченог броја компоненти и изводљивости сложених ожичења у то време). Извршење унутрашњег микрокода у CISC процесорима, с друге стране, може бити више или мање pipelined у зависности од одређеног дизајна, и стога више или мање сличан основној структури RISC процесора.

Суперскалар

[уреди | уреди извор]

У савременијем контексту, сложене променљиве дужине кодирања користе се од стране неких типичних CISC архитектура које их чине импликованим, али ипак изводљивим, да би се изградила суперскаларна имплементација CISC који програмира модел директно; у-реду (in-order) суперскаларни првобитни Pentium и изван-реда (out-of-order) суперскаларни Cyrix 6x86 су добро познати примери. Чести приступ меморији за операнде типичне CISC машине може ограничити ниво паралелизма инструкција које се могу издвојити из кода, иако је то јако посредовано брзим кеш структурама коришћених у модерним дизајнима, као и другим мерама. Због само по себи компактним и семантички богатим инструкцијама, просечан износ обављеног рада по јединици кода машине (тј. по бајту или биту) већи је за CISC него за RISC процесоре, што му може дати значајну предност у модерно кеш заснованој примени.

Транзистори за логику, PLAs, и микрокод нису више оскудни ресурси; данас су само велики кешеви високе брзине лимитирани максималним бројем транзистора. Иако комплексан, број транзистора CISC декодера није експоненцијално растао као укупан број транзистора по процесору (већина се обично користи за кеш). Заједно са бољим алатима и побољшаној технологији, дошло се до нових имплементација високо кодираних и дизајна променљиве дужине без ограничења оптерећења-складишта (тј. не-RISC). Ово регулише ре-имплементацију старијих архитектура као што је свеприсутни x86 (види доле), као и нови дизајн за микроконтролере за уграђене системе, и за сличне употребе. Суперскаларна сложеност у случају модерног x86 је решена конвертовањем инструкција у једној или више микрооперација, односно посредним и непосредним суперскаларним извршавањем; Pentium Pro и AMD K5 су рани примери за то. Он омогућава да прилично једноставни суперскаларни дизајн да буде лоциран после (релативно сложеног) декодера (и бафера), чинећи га светски поштованим.

CISC и RISC термини

[уреди | уреди извор]

Термини CISC и RISC су постали мање значајни са континуираним развојем CISC и RISC дизајна и имплементацијама. Прва високо (или чврсто) pipelined x86 архитектура, на 486 дизајну Intel-а, AMD-а, Cyrix-а, и IBM-а, подржавала је сваку инструкцију коју су његови претходници урадили, али су постигли максималну ефикасност само на прилично једноставном x86 подскупу који је био само нешто више од типичног RISC скупа инструкција (тј. без типичних RISC ограничења оптерећења-складишта). Intel P5 Pentium генерација била је суперскаларна верзија ових принципа. Међутим, савремени x86 процесор такође (типично) декодира и дели инструкције у динамичким секвенцама интерно баферованим микро-операцијама, које не само што помажу извршавању већих подскупова инструкција у pipelined (преклапању) облику, већ такође олакшавају напреднију екстракцију паралелизма изван стрим кода, за још беље перформансе.

Насупрот популарним поједностављењима (представљеним такође у неким академским текстовима), нису сви CISCs микрокодовани или са “сложеним” инструкцијама. Како је CISC постајао свеобухватни термин са значењем било чега што није оптерећење-складиште (RISC) архитектура, то није број инструкција, нити сложеност имплементације или самих инструкција, који дефинишу CISC, већ чињеница да аритметичке инструкције такође обављају меморијски приступ. У поређењу са малим 8-битним CISC процесором, RISC са инструкцијама у покретној тачки је сложен. CISC чак и не мора да има сложен начин адресирања; 32 или 64-битни RISC процесор може имати сложенији начин адресирања него мали 8-битни CISC процесор.

PDP-10, PDP-8, Intel 386, Intel 4004, Motorola 68000, System z mainframe, Burroughs B5000, VAX, Zilog Z80000, и MOS Technology 6502 све неравномерно варирају бројем, величинама и форматима инструкција, бројем врстама и величинама регистара и доступним типовима података. Неки имају хардверску подршку за операције као скенирање за поднит, произвољно прецизну BCD аритметику, или трансцеденталне функције, док други имају само 8-битно сабирање и одузимање. Али они су сви у CISC категорији јер имају “оптерећење-радне” инструкције која оптерећује и/или меморијске складишне садржаје у оквиру исте инструкције које обављају стварне калкулације. На пример, PDP-8 који има само 8 фиксне дужине инструкције и уопште нема микрокод, је CISC јер како инструкције раде, PowerPC, који има више од 320 инструкција (више него VAXes) и унутрашњу сложеност као преименовање регистара и поновно ређање бафера је RISC, док Minimal CISC има 8 инструкција, али је јасан CISC јер комбинује приступ меморији и рачуна у истим инструкцијама.

Неки од проблема и противречности у овој терминологији ће можда нестати као више систематски термини, као што су (не) оптерећење/складиште, постаће популарнији и евентуално заменити непрецизне и мало контра-интуитивне RISC/CISC термине.

Референце

[уреди | уреди извор]
  1. ^ Patterson, D. A. and Ditzel, D. R. 1980. The case for the reduced instruction set computing. SIGARCH Comput. Archit. News 8, 6 (October 1980), 25-33. doi= http://doi.acm.org/10.1145/641914.641917
  2. ^ Lakhe, Pravin R. (2013). „A Technology in Most Recent Processor is Complex Reduced Instruction Set Computers (CRISC): A Survey” (PDF). International Journal of Innovation Research and Studies. стр. 711—715. Архивирано из оригинала (PDF) 14. 07. 2015. г. Приступљено 11. 12. 2013. 

Литература

[уреди | уреди извор]
  • Tanenbaum, Andrew S (2006). Structured Computer Organization (5th изд.). Upper Saddle River, NJ: Pearson Education, Inc.