Transcript PUSH
Department of Computer and IT Engineering University of Kurdistan Computer Architecture CPU Structure By: Dr. Alireza Abdollahpouri اجزا تشکیل دهنده CPU داده ها را ذخيره ميکند مجموعه رجيسترها Control ALU عمليات محاسباتی و منطقی را انجام ميدهد 2 •مشخص ميکند که چه عملی در چه زمانی انجام گيرد. •از کالک استفاده ميکند •بصورت سخت افزاری و يا ميکروپروگرام سيگنال الزم را به بخشهای مختلف ميفرستد. معماريهاي مختلف CPU • سازمان تک انباره ای • سازمان چند رجيستري مانند SPARC, MIPS, Alpha, • سازمان پشته ای مثال :ماشين های X86دارای يک معماری با مجموعه دستورات پيچيده ای است که تمامی جنبه های معماری های فوق را در بر ميگيرد. 3 اهمیت معماری CPUچقدر است؟ • استفاده کننده نهائی: هیچ! • برنامه نویس سطح باال خیلی کم .تا حدی که بتواند کامپایلر مناسب را انتخاب نموده و عملکرد برنامه را بهینه کند. • برنامه نویس سطح پائین /طراح OS این افراد باید اطالعات کافی در مورد رجیسترها ،ساختار حافظه ،انواع داده های موجود و عملکرد دستورات داشته باشند. • طراحان کامپیوتر: این افراد نیز باید اطالعات فوق را داشته باشند تا بتوانند اجزا سخت افزای مورد نیاز را انتخاب کنند. 4 ساختار رجیسترها • یکی از مهمترین ویژگی های تعیین کننده برا ی یک CPUساختار رجیسترهای داخلی آن است .این رجیستر ها به دو دسته تقسیم بندی میشوند: • رجیسترهائی که استفاده کننده آنها را می بیند! و میتواند از طریق برنامه نویس ی به آنها دسترس ی داشته باشد – Data registers – Address registers • index register • segment pointer • stack pointer – )Condition codes (flags • رجیسترهائی که برای کنترل و نگهداری وضعیت CPUبکار میروند .این رجیسترها توسط واحد کنترل برای اجرای دستورات مورد استفاده واقع میشوند. – Program counter – Instruction register 5 سازمان تک انباره ای • يک آکوموالتور • مشابه با کامپيوتر پايه فصل پنجم 4096*16 RAM BUS ADDRESS AR PC DR AC ALU INPR همواره يکی از اپرندها اکوموالتور است 6 IR TR OUTR سازمان رجيستر عمومی • GENERAL REGISTER • تمامی رجيسترها می توانند به عنوان اپراند دستورالعملهای ALU بکار برده شوند. • مثال :رجيسترهای داده در پردازنده پنتيوم 7 )ورودي خارجي(حافظه clock R1 R2 R3 R4 R5 R6 R7 Loads DEC S1 MUXA MUXB A B S2 D OP-CODE ALU 8 Output مجموعه رجیسترهای عمومی و ALUمشترک در شکل فوق: • خروجی هر رجیستر به دو MUXمتصل شده است .اینکار باعث میشود تا هر یک از آنان را بتوان آزادانه بعنوان مبدا عملیات ALUانتخاب نمود. • برای اینکه بتوان خروجی ALUرا به هر یک از رجیستر ها منتقل نمود این خروجی به ورودی تمام رجیسترها متصل شده و عالوه بر آن با استفاده از یک دیکودر مقصد عملیات را مشخص میکنیم. • یک ALUممکن است که قادر به انجام عملیات مختلفی باشد ،برای انتخاب یک عمل مورد نیاز از خطوط کنترلی OPRاستفاده میشود. 9 مثالی از عملیات ALU برای مثال فرض کنید که میخواهیم میکرو اپریشن زیر را انجام دهیم: R1 R2 + R3 • برای انجام این عمل واحد کنترل باید سیگنالهای الزم را برای انتخاب ورودیهای متناسب دیکودر MUXA, MUXB,و ALUانتخاب نماید: .1تعیین مقدار مناسب برای ورودی MUXAیعنی S1طوری که محتوی رجیستر R2در روی باس Aقرار گیرد. .2تعیین مقدار مناسب برای ورودی MUXBیعنی S2طوری که محتوی رجیستر R3در روی باس Bقرار گیرد. .3تعیین مقدار الزم برای ورودی OPRکه ALUرا وادار به انجام عمل جمع A+Bنماید. .4در نهایت انتخاب مقدار مناسب برای دیکور Dبه نحویکه خروجی ALUرا به رجیستر R1منتقل نماید. 10 قالب دستورالعملها • • انتخاب عمل در ALU انتخاب رجيسترهای مبدا – مولتی پلکسر 1 – مولتی پلکسر 2 • انتخاب رجيستر مقصد – ديکدر •اين چهار قسمت قبل از وارد شدن پالس ساعت بايد آماده ياشند. • ALUاز مدارات بسيار سريع ساخته ميشود تا نتيجه را سريعتر آماده كند. 3 D 3 3 5 S2 S1 OP-CODE Register Binary code Input 000 R1 001 R2 010 R3 011 R4 100 R5 101 R6 110 R7 11 111 عمليات ALU • در CPUانجام عمليات محاسباتی و منطقی بر عهده ALUاست. عمل شيفت را ميتوان توسط يک Shifterکه قبل و يا بعد از ALU قرار ميگيرد انجام داد .در مواردی هم ممکن است عمل شيفت توسط خود ALUانجام شود .در فصل 4 طراحی چنين ALUرا ديديم که عمليات آن در جدول مقابل ذکر شده است. 12 Symbol Operation OPcode TSFA Transfer A 00000 INCA Increment A 00001 ADD Add A + B 00010 SUB Subtract A – B 00101 DECA Decrement A 00110 AND And A and B 01000 OR OR A and B 01010 XOR XOR A and B 01100 COMA Complement A 01110 SHRA Shift right A 10000 SHLA Shift left A 11000 مثال • برای انجام ميکرواپريشن زير R1 R2 – R3 ميبايست کلمه کنترلی بصورت زير انتخاب شود: D S2 S1 OP-code Field: R1 R3 R2 SUB Symbol 001 011 010 00101 Control word همانطور که قبال ديديم يک راه پياه سازی واحد کنترل استفاده از ميکروپروگرامينگ است که در آن هر کلمه کنترلی در يک محل از حافظه ROMذخيره خواهد شد. 13 ارتباط با حافظه INPUT R1 R2 R3 R4 R5 R6 R7 DEC MUX MUX ALU 14 سازمان پشته يا Stack • • • • • • 15 ساختار LIFO PUSH POP دسترسی فقط به عنصر باالی پشته امکانپذير است فقط يک اشاره گر نياز داريم SP = STACK POINTER PUSH • SP ← SP+1 • M[SP] ← DR • IF ( SP=0) THEN (FULL←1) • EMPTY ← 0 كلمه اي64 يك پشته 63 FULL EMPTY 3 SP 2 بيتي6 1 0 DR 16 POP • • • • DR ← M[SP] SP ← SP-1 IF ( SP=0) THEN ( EMPTY ←1) FULL ← 0 FULL 63 EMPTY 3 SP 2 بيتي6 1 0 DR 17 استفاده برای صدا زدن برنامه فرعی- کاربرد (Procedure call)• صدا زدن برنامه فرعی – call label Push return address on stack; Jump to label (Procedure return) • برگشت از تابع – ret Pop address from stack; Jump to address 18 کاربرد -استفاده در برنامه هاي برگشت پذير )(recursive • • • • • 19 استفاده از پشته باعث میشود تا امکان پیاده سازی برنامه های برگشت پذیر فراهم گردد. با استفاده از پشته میتوان برای هر نسخه از تابع صدا زده شده حافظه جداگانه ای در نظر گرفت آرگومانها و متغیرهای محلی را میتوان در پشته ذخیره نمود. آدرس دهی متغیرهای محلی و آرگومانها نسبت به موقعیت پشته انجام میشود. بازگشت از توابع عکس حالتی است که صدا زده شده اند کاربرد عبارات محاسباتی A*B+C/D POLISH NOTATION AB*CD/+ • • • • 20 AB*CD/+ • • • • • • • PUSH A PUSH B MUL (POP,POP, PUSH A*B) PUSH C PUSH D DIV (POP,POP,PUSH C/D) ADD (POP,POP, PUSH RESULT) 21 AB*CD/+ PUSH A PUSH B B A 22 AB*CD/+ PUSH A PUSH B MUL PUSH C PUSH D D C A*B 23 AB*CD/+ PUSH A PUSH B MUL PUSH C PUSH D DIV C/D A*B 24 AB*CD/+ PUSH A PUSH B MUL PUSH C PUSH D DIV ADD A*B+ C/D 25 کدام مجموعه از عمليات ذيل می تواند يک پشته را پياده سازی نمايد ؟ PUSH A POP A SP ←SP-1 A ←MEM[SP] MEM[SP] ←A SP ←SP+1 SP ←SP+1 A ←MEM[SP] MEM[SP] ←A SP ←SP-1 MEM[SP] ←A SP ←SP+1 SP ←SP-1 A ←MEM[SP] هر سه 1,3 2,3 1 2 3 1,2 26 انواع ساختار پشته • پشته رجيستري – سرعت دسترسی باال – قيمت زياد – تعداد کم • پشته حافظه ای – کند – ارزان – حجم زياد 27 تاثير نوع CPUبر قالب دستورات • تک انباره – معموال يک اپرند آکوموالتور است – دستورات تک آدرسی • چندرجيستری )رجيسترهاي عمومي( – اپرندها رجيستر هستند – دستورات سه آدرسی ) يا دو آدرسی( • پشته ای – فقط اپرند مربوط به پوش يا پاپ – دستورات يک آدرسی و صفر آدرسی 28 تاثير قالب دستورالعمل ها بر روی سرعت اجرا • مقايسه يک عمليات يکسان در سه حالت مختلف • محاسبه )X= (A+B)*(C+D – – – – 29 دستورات سه آدرسی دستورات دو آدرسی دستورات يک آدرسی دستورات صفرآدرسی دستورات سه آدرسی در کامپيوترهای سهآدرسی ،هر قسمت آدرس ،برای مشخص نمودن يک ثبات پردازنده و يا آدرس يک عملوند در حافظه تخصيص داده میشود. )X = (A+B) * (C+D ]R1 M[A] + M[B ]R2 M[C] + M[D M[X] R1 × R2 30 ADD R1, A, B ADD R2, C, D MUL X, R1, R2 دستورات دو آدرسی دستورات دوآدرسی معمولترين فرمت دستور در کامپيوترها هستند .قسمت آدرس میتواند يک رجيستر پردازنده يا يک خانه حافظه را مشخص نمايد. )X = (A+B) * (C+D 31 ]R1 M[A MOV R1, A ]R1 R1 + M[B ADD R1, B ]R2 M[C MOV R2, C ]R2 R2 + M [D ADD R2, D R1 R1 × R2 MUL R1, R2 M[X] R1 MOV X, R1 دستورات يک آدرسی راAC رجيستر اکوموالتور، برای تمام عمليات بر روی دادهها،دستورات يکآدرسی .بهکار میبرند X = (A+B) * (C+D) LOAD A AC M[A] ADD B AC AC + M[B] STORE T M[T] AC LOAD C AC M[C] ADD D AC AC + M[D] MUL T AC AC × M[T] STORE X M[X] AC 32 دستورات صفرآدرسی X = (A+B) * (C+D) • • • • • • • • PUSH A PUSH B ADD PUSH C PUSH D ADD MUL POP X 33 RISC دستورات كامپيوترهاي X = (A + B) × (C + D) LOAD LOAD LOAD LOAD ADD ADD MUL STORE R1, A R2, B R3, C R4, D R1, R1, R2 R3, R3, R4 R1, R1, R3 X, R1 R1 M[A] R2 M[B] R3 M[C] R4 M[D] R1 R1 + R2 R3 R3 + R4 R1 R1 × R3 M[X] R1 34 روشهاي آدرسدهی دستورات یک کامپیوتر عملی را بر روی داده ذخیره شده در حافظه و یا رجیسترهای CPUانجام میدهند .روش مشخص کردن عملوند یک دستورالعمل حاالت آدرس دهی و یا addressing modeنامیده میشود . اصوال حاالت مختلف آدرسدهی عملوند دستور ،تسهیالت زیر را در سیستم فراهم میآورد: .1 قابلیت ایجاد شمارنده برای برنامه حلقه ،و شاخصبندی در دادهها و همچنین ایجاد اشارهگر حافظه و جابجایی برای کاربر فراهم میشود .2 35 امکان تقلیل تعداد بیتهای قسمت آدرس دستور ،فراهم میشود. • • • • • • • • • • انواع حالت های آدرس دهی Implied Addressing Mode Immediate Addressing Mode Register Addressing Register Indirect Addressing Autoincrement or Autodecrement Direct Addressing Mode Indirect Addressing Mode Relative Addressing Mode Index Addressing Mode Base Register Addressing Mode آدرس دهی ضمنی آدرس دهی بالدرنگ آدرس دهی ثبات آدرس دهی غير مستقيم بکمک ثبات آدرس دهی افزايش و يا کاهشی خودکار آدرس دهی مستقيم آدرس دهی غير مستقيم آدرس دهی نسبی آدرس دهی شاخص آدرس دهی با ثبات پابه 36 • • • • • • • • • • آدرس دهی ضمنی • Implied Addressing Mode در اين روش اپراندها بصورت ضمنی در داخل دستورالعمل مشخص ميشوند . – مثل دستور CMAکه محتوی آکوموالتور را متمم ميکند. – دستورات صفر آدرسی مورد استفاده در کامپيوترهای stack machineنيز از آدرس دهی ضمنی استفاده ميکنند زيرا عملوندها بطور ضمنی در باالی پشته در نظر گرفته ميشوند. 37 آدرس دهی بالدرنگ • Immediate Addressing Mode در اين روش مقدار عملوند در داخل خود دستورالعمل داده ميشود. اين مد آدرس دهی برای مقدار دهی رجيسترها بکار ميرود. – مثل دستور زير در پردازنده x86 MOV CX, 1024 Operand 38 Instruction آدرس دهی رجيستري • Register Addressing در اين روش عملوندها در داخل رجيسترهای پردازنده قرار دارند .با استفاده از Kبيت ميتوان تعداد 2kرحيستر را مشخص نمود. – مثل دستور زير در پردازنده x86 ADD AL, BL CPU registers R Instruction Operand 39 آدرس دهی رجيستري غير مستقيم • Register Indirect Addressing • در اين روش دستورالعمل رجيستری را مشخص ميکند که محتوی آن آدرس عملوند در حافظه را مشخص خواهد نمود. – مثل دستور زير در پردازنده x86 ]MOV BX,[SI Memory CPU registers Instruction Operand 40 R آدرس دهی افزايش و يا کاهشی خودکار • Autoincrement or Autodecrement addressing • اين روش مشابه آدرس دهی رجيستري غير مستقيم است با اين تفاوت که مقدار رجيستر بعد يا قبل از استفاده برای محاسبه آدرس موثر افزايش و يا کاهش ميابد. Memory Operand CPU registers R Instruction R=R+1 R=R-1 41 آدرس دهی مستقيم • Direct Addressing Mode در اين روش آدرس عملوند در داخل دستورالعمل ذکر ميشود. – مثل دستور زير در پردازنده x86 ]MOV AX,[3000 Memory Instruction Operand 42 Address آدرس دهی غير مستقيم • Indirect Addressing Mode در اين روش آدرس موجود در دستورالعمل محلی از حاقطه را مشخص ميکند که آدرس عملوند درآنجا قرار دارد .در اين حالت برای دسترسی به عملوند دوبار رجوع به حافطه مورد نياز است :يکبار برای پيدا کردن آدرس آن و بار ديگر برای خواندن مقدار آن . Memory Instruction Operand Address 43 آدرس دهی نسبی Relative Addressing Mode • • در اين روش آدرس موثر از جمع آدرس مشخص شده در داخل : حاصل ميشودPC دستورالعمل و محتوی Effective Address= address part of instruction + content of PC Memory Instruction Address Operand + PC 44 آدرس دهی شاخص دار • Index Addressing Mode • در اين روش آدرس موثر از جمع آدرس مشخص شده در داخل دستورالعمل و محتوی يک رجيستر مخصوص که رجيستر ايندکس ناميده ميشود حاصل ميشود: Effective Add.= address part of instruction + content of index register • معموال از اين روش برای دسترسی به داده های يک آرايه استفاده ميشود .که محل شروع داده ها در حافظه در دستورالعمل مشخص ميشود و فاصله داده مورد نظر تا محل شروع توسط رجيستر ايندکس تعيين ميگردد. Memory Instruction Operand Address + Index Register 45 آدرس دهی با ثبات پايه • Base Register Addressing Mode • اين روش مشابه آدرس دهی با ثبات شاخص است با اين تفاوت که بجای ثبات شاخص از ثبات پايه استفاده ميشود .تفاوت اين دو روش در نحوه استفاده از رجيسترهاست . Effective Add.= address part of instruction + content of Base register Memory Instruction Operand Address + Base Register 46 مثال عددی حافظه مقدار آکوموالتور در صورت اجرای دستور موجود در آدرس 200برای حالتهای مختلف آدرس دهی چيست؟ حالت آدرس بارکردن AC 200 = 500آدرس 201 دستور بعدی 202 PC = 200 R1 = 400 450 399 700 400 800 500 XR = 100 AC 47 900 600 325 702 300 800 مثال عددی 48 حاالت آدرسدهی آدرس مؤثر محتوای اکوموالتور مستقیم 500 800 بالفصل 201 500 غیرمستقیم 800 300 نسبی 702 325 شاخصدار 600 900 ثبات - 400 غیرمستقیم از طریق ثبات 400 700 افزایش خودکار 400 700 کاهش خودکار 399 450 مجموعه دستورات کامپيوتر • • • • 49 دستورات مورد استفاده درکامپيوترهای مختلف از لحاظ تعداد، عملکرد ،نشانه های مورد استفاده برای اسمبلی ،و کد باينری بسيار متفاوت هستند با اين وجود تمامی آنها دارای دستوراتی از گروههای زير ميباشند: دستورات انتقال داده دستورات محاسباتی ،منطقی و جابجائی دستورات کنترل برنامه دستورات معمول انتقال اطالعات 50 فرم سمبولیک نام LD Load ST Store MOV Move انتقال داده بين رجيسترها انتقال داده بين حافظه و رجيسترها XCH Exchange تعويص داده های دو رحيستر و يا يک رجيستر و حافظه IN Input OUT Output PUSH Push POP Pop انتقال داده بين حافظه و رجيسترها انتقال داده بين ورودی/خروجی و رجيسترها انتقال داده بين پشته و رجيسترها هشت حالت آدرسدهی برای دستور بارکردن زبان اسمبلی عملكرد حالت آدرسدهی ]AC M[ADR LD ADR ]]AC M [M[ADR LD @ADR آدرسدهی غیرمستقیم ]AC M [PC + ADR LD $ADR آدرسدهی نسبی AC NBR LD #NBR آدرسدهی بالفصل ]AC M [ADR + XR )LD ADR (X آدرسدهی شاخص AC RI LD RI ]AC M [RI )LD (RI AC M [RI], RI RI + 1 LD (RI)+ 51 آدرسدهی مستقیم آدرسدهی ثبات آدرسدهی رجیستري غیرمستقیم آدرسدهی افزایش خودکار دستورات معمولی ریاضی نام دستور نماد دستور افزایشدهنده یک Increment INC کاهشدهنده یک Decrement DEC جمع Add ADD تفریق Subtract SUB ضرب Multiply MUL تقسیم Divide DIV جمع با بیت نقلی Add with carry ADDC تفریق با بیت قرضی Subtract with borrow SUBB 2 مکمل Negate (2’s complement) NEG 52 دستورات منطقی و عملیات روی بیت نام دستور نماد دستور CLR Clear صفر کردن COM Complement مکمل کردن AND AND AND OR OR OR XOR XOR XOR CLRC Clear carry صفر کردن بیت نقلی SETC Set carry یک کردن بیت نقلی COMC Complement carry مکمل کردن بیت نقلی EI Enable Interrupt فعال کردن وقفه DI Disable Interrupt غیرفعال کردن وقفه 53 دستورات معمولی شیفت نام دستور فرم نمادین شیفت به راست Logical Shift Right SHR شیفت به چپ Logical Shift Left SHL شیفت ریاضی به راست Arithmetic Shift Right SHRA شیفت ریاضی به چپ Arithmetic Shift Left SHLA چرخش به راست Rotate Right ROR چرخش به چپ Rotate Left ROL چرخش به راست از طریق بیت نقلی Rotate Right through carry RORC چرخش به چپ از طریق بیت نقلی Rotate Left through carry ROLC 54 دستورات متداول کنترل برنامه نام دستور فرم نمادین انشعاب Branch BR پرش Jump JMP رد کردن SKIP SKP صدا زدن Call CALL بازگشت Return RET مقایسه Compare( By subtraction) CMP تست Test( By ANDing) TST 55 بيت های وضعيت A B 16-bit ALU C15 C16 F15-F0 شرطهايي كه بر اساس آنها تصميم در مورد پرش گرفته ميشود بر اساس اين بيتها هستند. C S Z V F15 Check For Zero Output Output F 56 مقايسه اعداد عالمت دار و بدون عالمت سوال: Aو Bكدام بزرگترند؟ A= 11110000 جواب :بستگي دارد آنها را عالمت دار و يا بدون عالمت در نظر بگیريم. بدون عالمت)(A>B 57 B= 00010100 عالمت دار)(A<B َA= 240 َA= -16 B = 20 B = 20 وقفه انواع مختلف وقفه در کامپيوتر • وقفه های خارجی – اين وقفه ها سخت افزاری بوده و توسط يک وسيله خارجی نظير IOو يا تايمر رخ ميدهد. • وقفه های داخلی – در اثر استفاده غلط و نابجای يک دستور حاصل ميشود .مثل رخ دادن Overflowانجام يک تقسيم بر صفر ،يک کد دستورالعمل غلط ،سرريز شدن پشته ،و protection violation – برنامه سرويس دهی به وقفه در هر مورد در باره عکس العمل مناسب تصميم ميگيرد .اين وقفه گاهی trapناميده ميشود. • وقفه های نرم افزاری – نوع خاصی از صدا زدن برنامه فرعی هستند .برای انجام عمليات خاصی نظير تغيير مد برنامه از حالت userبه supervisorو يا انجام سرويس خاصي) مثال چاپ يك كاراكتر(بکار ميروند. 58 قالب دستورالعمل ها • قالب دستورالعملها وابسته به نوع طراحی CPUاست. • بخش های مختلف يک دستورالعمل – OP-CODE – آدرس ) حافظه ،ثبات (.... – شيوه آدرسدهی 59 طول دستورالعمل • ثابت • متغير • تنوع دستورالعملها – کامپيوترهای ) CISCپر دستور ( – کامپيوترهای ) RISCکم دستور ( 60 کامپيوترهای با مجموعه دستورات پيچيده CISC • معماری يک کامپيوتر متاثر از مجموعه دستورات انتخاب شده برای آن است. • در کامپيوتر های اوليه سعی بر اين بود تا تعداد دستورات کم و ساده باشد تا پياده سازی سخت افزاری آن ممکن باشد. • با پيشرفت در زمينه سخت افزار و ارزان شدن آن تعداد دستورات کامپيوترها افزايش يافته و بر پيچيدگی آنها افزوده گرديد .هدف اين بود تا هر چه بيشتر نياز های کاربران را در سخت افزار گنجانده وبا کاهش فاصله بين زبانهای سطح باال و دستورات کامپيوتر کار ترجمه دستورات سطح باال را ساده تر کنند .اين نوع کامپيوترها گاها تا 200دستور و تعداد بسيار زيادی مد آدرس دهی داشتند .اين کامپيوتر ها را Complex instruction set )computer (ciscمينامند. 61 ويژگی های کامپيوترهای CISC • • • • • • 62 تعداد زيادی دستورالعمل دارند ) 100تا 200عدد( دستوراتی برای انجام کارهای ويژه دارند که معموال بندرت مورد استفاده قرار ميگيرند تعداد زيادی مد آدرس دهی دارند طول دستورالعمل ها متفاوت است دستوراتی دارند که عملياتی را بر روی اپراندهای موجود در حافظه انجام ميدهند. برای اجرای دستورات به چندين کالک نياز هست. کامپيوترهای با مجموعه دستورات کاهش يافته RISC • معماری RISCابداعی مهم در زمينه سازمان کامپيوتر بشمار ميرود. • در اين معماری سعی شده است تا با ساده تر کردن مجموعه دستورالعمل ها بر قدرت پردازنده افزوده شود. 63 با پيشرفت زيانهای سطح باال اختالف بين برنامه های سطح باال و زبان ماشين گسترش يافت.هر يک از معماريهای فوق روش مختلقی برای کاهش اين اختالف معرفی کردند تا ترجمه زبانهای سطح باال بطرز موثرتری انجام شود. زبان سطح باال زبان ماشين • نگرش : CISCدستورات زبان ماشين پيچيده تر و به زبان سطح باال نزديکتر گردد. • نگرش : RISCدستورات زبان ماشين ساده تر و به نيازهای برنامه نزديکتر گردد. 64 The Semantic Gap The Semantic Gap دستورات پرمصرف در کامپيوتر کدامند؟ • مطالعات زيادی که برای تعيين مشخصات و الگوی دستورات حاصل از ترجمه برنامه های سطح باال انجام گرفت نشان ميدهد که: • از لحاظ تعداد دفعات استفاده از دستورات روند زير بطور تقريب وجود داشته است: moves: 33% conditional branch: 20% arithmetic/logic: 16% others: between 0.1% and 10% دستورات ساده پر مصرف تر هستند 65 – – – – دستورات پرمصرف در کامپيوتر کدامند؟ • از لحلظ مد آدرس دهی: – تقريبا 18 %مواقع از مدهای آدرس دهی پيچيده نظير memory indirect, indexed+indirect, displacement+indexed, stackاستفاده شده است. – در بيشتر موارد از مدهای آدرس دهی ساده که امکان محاسبه آدرس در يک سيکل وجود داشته استفاده ميشود .نظير register, register indirect, displacement مدهای آدرس دهی ساده ارجح هستند. 66 دستورات پرمصرف در کامپيوتر کدامند؟ • • • • از لحاظ نوع عملوندها: 75%عملوندها مقاديرعددی نظيرمقادير صحيح ،حقيقی و يا کاراکتری هستند که ميتوان آنها را در رجيسترها ذخيره نمود. بقيه آنها آرايه ها و استراکچها هستند که بيشتر بصورت متغيرهای خارجی مورد استفاده قرار ميگيرند. 80%عملوندهای عددی بصورت متغيرهای محلی مورد استفاده قرار ميگيرند. اکثر عملوندها بصورت متغیرهای عددی محلی هستند که ميتوان آنها رادر رجيستر ذخیره نمود. 67 دستورات پرمصرف در کامپيوتر کدامند؟ • از لحاظ زمانی که برای اجرای دستورات مصرف ميشود: – با وجود آنکه دستورات مربوط به صدا زدن برنامه فرعی و بازگشت از آن تقريبا 15%از دستورات برنامه را تشکيل ميدهند ،اغلب وقت cpu صرف اجرا آنها ميشود. – دستورات callو returnبه مجموعه بزرگی از دستورات زبان ماشين ترجمه ميشوند که بسيار نياز به رجوع به حافظه دارند. • مطالعات آماری برروی صدا زدن توابع نشان ميدهد که: • فقط 2%توابع بيشتر از 6پارامتر دارند • فقط 7%توابع بيشتر از 6متغير محلی دارند • زنجيره توابعی که يکديگر را صدا بزنند کوتاه بوده و بندرت از 6تابع بيشتر ميشود. بهينه کردن عمل صدا زدن تابع و بازگشت از آن ميتواند کارآيی پردازنده را افزايش دهد 68 ويژگی های RISC • دستورات ساده و کمی دارند – – – – 69 هدف اين است که بتوان دستورات را بسرعت اجرا کرد .اغلب دستورات RISCدر يک سيکل اجرا ميشوند )بعد ازواکشی و رمزگشايی( چون دستورات در زمان مشابهی اجرا ميشوند عمل pipelineدارای بازده بااليی خواهد بود. کم بودن دستورات باعث ساده شدن واحد کنترل ومسيرهای ارتباطی ميشود که منجر به کم شدن تعداد ترانزيستورهای مورد نياز برای ساخت پردازنده ميشود اينکار سرعت پردازنده را نيز افزايش ميدهد.. در ضمن ميتوان واحد کنترل را بروش سيم بندی ساخت. ویژگی های RISC • دسترس ی به حافظه محدود به دستورات load , Storeاست – از آنجائیکه عمل رجوع به حافظه معموال در یک سیکل امکانپذیر نمیباشد،تمهیداتی در کامپایلر استفاده میشود تا pipelineبطور موثرتری استفاده شود. – باقی دستورات بر روی محتوی رجیسترها عمل میکنند. 70 RISC ویژگی های • تعداد مد های آدرس دهی آنها کم است :– معموال فقط از مدهای آدرس دهی زیر استفاده میشود • • • • register addressing direct addressing register indirect addressing displacement addressing 71 ویژگی های RISC • دستورات طول و فرمت یکسانی دارند • اینکار باعث میشود تا خواندن دستورات و رمزگشائی آنها سریع و ساده باشد.زیرا الزم نیست تا معلوم شدن طول دستور برای رمزگشایی آن صبر کرد. • یکسانی فرمت باعث سهولت رمزگشایی میگردد زیرا کد و ادرس همه دستورات در محل یکسانی قرار دارند. 72 ویژگی های RISC • تعداد رجیسترهای زیادی دارند. – کم شدن دستورات باعث کوچگ شدن واحد کنترل و آزاد شدن فضا برای گنجاندن تعداد بیشتری رجیستر میشود. – متغیرهای محلی ،نتایج میانی و پارامترهای توابع در داخل رجیسترها ذخیره شده و تعداد رجوع به حافظه کاهش پیدا میکند. 73 ساير ويژگی های RISC • • • • 74 استفاده ازتکنيک pipeliningکه باهمپوشانی سيکل های واکشی، رمزگشائی و اجرا شده و نهايتا به اجرای هر دستور در يک سيکل منجر ميشود. تعداد زيادی رجيستر در داخل cpuوجود دارد استفاده از تکنيک همپوشانی register windowsکه باعث افزايش سرعت صدا زدن تابغ و بازگشت از آن ميشود. حمايت از کامپايلر برای افزايش کارائی در ترجمه برنامه های سطح باال مقايسه RISC, CISC • برای مثال ترجمه دستور a = a * bبرای دو معماری فوق بصورت زير خواهد بود: • • برای مثال ترجمه دستور a = a * bبرای دو معماری فوق بصورت زير خواهد بود: در معماری CISCسعی بر اين است که با تعداد کمی دستورزبان ماشين عمل مورد نظر انجام شود .در حاليکه در RISCسعی بر اين است که از دستوراتی استفاده شود که هر دستور در يک پالس قابل اجرا باشند .در نتيجه برنامه RISC دارای چندين خط دستور خواهد بود که احتياج به حاقظه بيشتری دارد. 75 MULT a, b CISC LOAD R1, a LOAD R2, b MUL R1,R2 STORE a, R1 RISC مقايسهRISC, CISC • فرمول محاسبه کارائی • اگر از فرمول زير برای محاسبه کارائی کامپيوتر استفاده شود: CISCسعی ميکند تا اين قسمت کاهش پيدا کند 76 RISCسعی ميکند تا اين قسمت کاهش پيدا کند پيشگامان RISC • ايده RISCدر دهه 80معرفی گرديد .از جمله پيشگامان آن ميتوان به موارد زير اشاره نمود – IBM 801 – Stanford MIPS – Berkeley RISC 1 and 2 77 کاربردهای RISC • عمده پردازنده های کامپيوترهای سرور و workstarionاز نوع RISCهستند. • تعدادی از پردازنده های مشهور مبتنی بر RISCعبارتند از: – – – – – 78 ARM/StrongARMکه در تلفنهای همراه استفاده ميشود MIPS Rxx00که در برخی دستگاه های بازی مورد استفاده است. Hitachi SHمورد استفاده در سيستم های embedded POWER/PowerPCمورد استفاده در کامپيوترهایMAC Intel Pentium II and IIIاگرچه از معماری CISCپيروی ميکنند ولی بسياری از ويژگی های RISCرا استفاده ميکنند. overlapped register windows • ديديم که صدا زدن برنامه فرعی و بازگشت از آن بخش مهمی از اجرای برنامه را بخود اختصاص ميدهد .لذا سرعت بخشيدن به آن ميتواند تاثير زيادی در افزايش کارائی پردازنده داشته باشد. • هنگام صدا زدن يک برنامه فرعی دستوراتی استفاده ميشوند که مقادير رجيسترها را ذخيره کنند ،و پارامترها را انتقال دهند. • برای بازگشت از برنامه فرعی مقدار بازگشتی تابع به برنامه صدا زننده منتقل شده و مقادير ذخيره شده رجيسترها بازيابی ميشوند. 79 overlapped register windows • • • • 80 دربرخی از معمارهای RISCبرای سهولت انتقال بين توابع از همپوشانی پنجره ای رجيسترها استفاده ميشود تا نياز به ذخيره و بازيافت مقادير رجيسترها را حذف نمايند. هر زمان که تابعی که صدا زده ميشود پنجره ای از رجيسترها از ميان بانک رجيسترموجود در پردازنده به آن اختصاص ميابد. اينکار از طريق افزايش پوينتری انجام ميشود .با برگشت از تابع پوينتر به مقدار قبلی آن کاهش داده ميشود. پنجره مورد استفاده برای تواب همجوار همپوشانی دارند تا امکان به اشتراک گذاشتن داده ها بين دو تابع وجود داشته باشد. overlapped register windows pointer pointer pointer از قسمت مشترک برای انتقال اطالعات استفاده ميشود با برگشت تابع پوينتر کاهش داده ميشود 81 پنجره رجيستر اوليه پنجره جديد با صدا زدن تابع پنجره جديدی از رجيسترها به آن اختصاص داده ميشود. بانک رجيستر مثال • در کتاب سيستمی معرفی شده است که دارای بانک رجيستری با مشخصات زير است: – – – – – – 82 اين بانک دارای 74رجيستر است. رجيستر های R0تا R9بعنوان رجيسترهای عمومی قابل استفاده تمامی توابع هستند بقيه رحيسترها به به 4گروه A,B,C,Dتقسيم شده اند . هر پنجره دارای 10رجيستر اختصاصی و دو دسته رجيستر 6تائی مشترک با با پنجره های مجاور است. از رجيسترهای اختصاصی برا ذخيره متغيرهای محلی و از رجيسترهای مشترک برای انتقال پارامترها استفاده ميشود. به اين ترنيب هر تابع ميتواند از 32رحيستر استفاده نمايد مثال Common to D and A R15 R10 R73 Local to D R64 R63 Common to D and C R58 Proc. D R57 R48 Local to C R47 R42 Proc. C Common to B and C R41 R32 R9 Local to B R31 R26 Proc.B R10 Global Registers Common to B and A R25 R16 R15 R10 Local to A Common to D and A Proc.A 83 overlapped register windows • نحوه محاسبه رجيسترهای قابل استفاده برای هر تابع به صورت زير است. – – – – = Gتعداد رجيسترهای عمومی = Lتعداد رجيسترهای اختصاصی هر پنجره = Cتعداد رجيسترهای مشترک بين دو پنجره = Wتعداد پنجره ها = L+2C+Gاندازه پنجره = (L+C)W+Gتعداد کل رجيسترها در بانک رجيستری 84 مثالی از پردازندهBerekely RISC I: RISC • يکی از اولين معماری های RISCاست که در دانشگاه برکلی مطرح شد. • اين پردازنده 32بيتی: – – – – 85 دارای آدرس 32بيتی بوده و ميتواند از داده های 8و16و 32بيتی استفاده نمايد. سه مد آدرس دهی دارد :رجيستری ،بالدرنگ و نسبی يک بانک رجيستری 138تائی شامل 10رجيستر عمومی و 8پنجره 32 رجيستری دارد. 31دستورالعمل دارد Brekely RISC I فرمت دستورات 31 24 23 Opcode 19 18 14 13 Rs Rd 0 12 5 4 Not Used 0 S2 Register mode: S2=register 31 24 23 Opcode 19 18 Rs Rd 14 13 12 0 S2 1 Register Immediate mode: S2=operand 31 24 23 19 18 Opcode COND 0 Y PC relative Mode 86