860 likes | 1.16k Views
Department of Computer and IT Engineering University of Kurdistan Computer Architecture CPU Structure By: Dr. Alireza Abdollahpouri. اجزا تشکیل دهنده CPU. مجموعه رجيسترها. Control. ALU. داده ها را ذخیره میکند. مشخص میکند که چه عملی در چه زمانی انجام گیرد. از کلاک استفاده میکند
E N D
Department of Computer and IT Engineering University of Kurdistan Computer Architecture CPU Structure By: Dr. AlirezaAbdollahpouri
اجزا تشکیل دهندهCPU مجموعه رجيسترها Control ALU داده ها را ذخیره میکند • مشخص میکند که چه عملی در چه زمانی انجام گیرد. • از کلاک استفاده میکند • بصورت سخت افزاری و یا میکروپروگرام سیگنال لازم را به بخشهای مختلف میفرستد. عملیات محاسباتی و منطقی را انجام میدهد
معماريهاي مختلف CPU • سازمان تک انباره ای • سازمان چند رجيستري مانند SPARC, MIPS, Alpha, • سازمان پشته ای مثال: ماشین های X86 دارای یک معماری با مجموعه دستورات پیچیده ای است که تمامی جنبه های معماری های فوق را در بر میگیرد.
اهمیت معماری CPU چقدر است؟ • استفاده کننده نهائی: • هیچ! • برنامه نویس سطح بالا • خیلی کم. تا حدی که بتواند کامپایلر مناسب را انتخاب نموده و عملکرد برنامه را بهینه کند. • برنامه نویس سطح پائین/ طراح OS • این افراد باید اطلاعات کافی در مورد رجیسترها، ساختار حافظه، انواع داده های موجود و عملکرد دستورات داشته باشند. • طراحان کامپیوتر: • این افراد نیز باید اطلاعات فوق را داشته باشند تا بتوانند اجزا سخت افزای مورد نیاز را انتخاب کنند.
ساختار رجیسترها • یکی از مهمترین ویژگی های تعیین کننده برا ی یک CPU ساختار رجیسترهای داخلی آن است. این رجیستر ها به دو دسته تقسیم بندی میشوند: • رجیسترهائی که استفاده کننده آنها را می بیند! و میتواند از طریق برنامه نویسی به آنها دسترسی داشته باشد • Data registers • Address registers • index register • segment pointer • stack pointer • Condition codes (flags) • رجیسترهائی که برای کنترل و نگهداری وضعیت CPU بکار میروند. این رجیسترها توسط واحد کنترل برای اجرای دستورات مورد استفاده واقع میشوند. • Program counter • Instruction register
سازمان تک انباره ای 4096*16 RAM BUS • یک آکومولاتور • مشابه با کامپیوتر پایه فصل پنجم ADDRESS AR PC DR ALU AC INPR همواره یکی از اپرندها اکومولاتور است IR TR OUTR
سازمان رجيستر عمومی • GENERAL REGISTER • تمامی رجیسترهامی توانند به عنوان اپراند دستورالعملهای ALU بکار برده شوند. • مثال : رجیسترهای داده در پردازنده پنتیوم
ورودي خارجي(حافظه) clock R1 R2 R3 R4 R5 R6 R7 Loads DEC MUXA MUXB S1 A B S2 D ALU OP-CODE Output
مجموعه رجیسترهای عمومی و ALU مشترک • در شکل فوق: • خروجی هر رجیستر به دو MUX متصل شده است. اینکار باعث میشود تا هر یک از آنان را بتوان آزادانه بعنوان مبدا عملیات ALU انتخاب نمود. • برای اینکه بتوان خروجی ALU را به هر یک از رجیستر ها منتقل نمود این خروجی به ورودی تمام رجیسترها متصل شده و علاوه بر آن با استفاده از یک دیکودر مقصد عملیات را مشخص میکنیم. • یک ALU ممکن است که قادر به انجام عملیات مختلفی باشد، برای انتخاب یک عمل مورد نیاز از خطوط کنترلی OPR استفاده میشود.
مثالی از عملیات ALU • برای مثال فرض کنید که میخواهیم میکرو اپریشن زیر را انجام دهیم: • R1 R2 + R3 • برای انجام این عمل واحد کنترل باید سیگنالهای لازم را برای انتخاب ورودیهای متناسب دیکودر MUXA, MUXB, و ALU انتخاب نماید: • تعیین مقدار مناسب برای ورودی MUXA یعنی S1 طوری که محتوی رجیستر R2 در روی باس A قرار گیرد. • تعیین مقدار مناسب برای ورودی MUXB یعنی S2 طوری که محتوی رجیستر R3 در روی باس B قرار گیرد. • تعیین مقدار لازم برای ورودی OPR که ALU را وادار به انجام عمل جمع A+B نماید. • در نهایت انتخاب مقدار مناسب برای دیکور D به نحویکه خروجی ALU را به رجیستر R1 منتقل نماید.
قالب دستورالعملها • انتخاب عمل در ALU • انتخاب رجیسترهای مبدا • مولتی پلکسر 1 • مولتی پلکسر 2 • انتخاب رجیستر مقصد • دیکدر • اين چهار قسمت قبل از وارد شدن پالس ساعت بايد آماده ياشند. • ALU از مدارات بسيار سريع ساخته ميشود تا نتيجه را سريعتر آماده كند. 5 3 3 3 OP-CODE S1 S2 D
عملیات ALU • در CPU انجام عملیات محاسباتی و منطقی بر عهده ALU است. عمل شیفت را میتوان توسط یک Shifter که قبل و یا بعد از ALU قرار میگیرد انجام داد. در مواردی هم ممکن است عمل شیفت توسط خودALU انجام شود. در فصل 4 طراحی چنین ALU را دیدیم که عملیات آن در جدول مقابل ذکر شده است.
مثال • برای انجام میکرواپریشن زیر R1 R2 – R3 میبایست کلمه کنترلی بصورت زیر انتخاب شود: همانطور که قبلا دیدیم یک راه پیاه سازی واحد کنترل استفاده از میکروپروگرامینگ است که در آن هر کلمه کنترلی در یک محل از حافظه ROM ذخیره خواهد شد.
ارتباط با حافظه INPUT R1 R2 R3 R4 R5 R6 R7 DEC MUX MUX ALU
سازمان پشته يا Stack • ساختار LIFO • PUSH • POP • دسترسی فقط به عنصر بالای پشته امکانپذیر است • فقط یک اشاره گر نیاز داریم • SP = STACK POINTER
PUSH • SP ← SP+1 • M[SP] ← DR • IF ( SP=0) THEN (FULL←1) • EMPTY ← 0 يك پشته 64 كلمه اي 63 3 2 1 0 FULL EMPTY SP 6 بيتي DR
POP • DR ← M[SP] • SP ← SP-1 • IF ( SP=0) THEN ( EMPTY ←1) • FULL ← 0 63 3 2 1 0 FULL EMPTY SP 6 بيتي DR
کاربرد- استفاده برای صدا زدن برنامه فرعی • صدا زدن برنامه فرعی(Procedure call) • call label • Push return address on stack; • Jump to label • برگشت از تابع(Procedure return) • ret • Pop address from stack; • Jump to address
کاربرد- استفاده در برنامههايبرگشتپذير (recursive) • استفاده از پشته باعث میشود تا امکان پیاده سازی برنامه های برگشت پذیر فراهم گردد. • با استفاده از پشته میتوان برای هر نسخه از تابع صدا زده شده حافظه جداگانه ای در نظر گرفت • آرگومانها و متغیرهای محلی را میتوان در پشته ذخیره نمود. • آدرس دهی متغیرهای محلی و آرگومانها نسبت به موقعیت پشته انجام میشود. • بازگشت از توابع عکس حالتی است که صدا زده شده اند
کاربرد • عبارات محاسباتی • A*B+C/D • POLISH NOTATION • AB*CD/+
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)
AB*CD/+ PUSH A PUSH B B A
AB*CD/+ PUSH A PUSH B MUL PUSH C PUSH D D C A*B
AB*CD/+ PUSH A PUSH B MUL PUSH C PUSH D DIV C/D A*B
AB*CD/+ PUSH A PUSH B MUL PUSH C PUSH D DIV ADD A*B+ C/D
کدام مجموعه از عملیات ذیل می تواند یک پشته را پیاده سازی نماید ؟
انواع ساختار پشته • پشته رجيستري • سرعت دسترسی بالا • قیمت زیاد • تعداد کم • پشته حافظه ای • کند • ارزان • حجم زیاد
تاثیر نوع CPU بر قالب دستورات • تک انباره • معمولا یک اپرند آکومولاتور است • دستورات تک آدرسی • چندرجيستری (رجيسترهاي عمومي) • اپرندها رجيسترهستند • دستورات سه آدرسی ( یا دو آدرسی) • پشته ای • فقط اپرند مربوط به پوش یا پاپ • دستورات یک آدرسی و صفر آدرسی
تاثیر قالب دستورالعمل ها بر روی سرعت اجرا • مقایسه یک عملیات یکسان در سه حالت مختلف • محاسبه (A+B)*(C+D)X= • دستورات سه آدرسی • دستورات دو آدرسی • دستورات یک آدرسی • دستورات صفرآدرسی
دستورات سه آدرسی در کامپیوترهای سهآدرسی، هر قسمت آدرس، برای مشخص نمودن یک ثبات پردازنده و یا آدرس یک عملوند در حافظه تخصیص داده میشود. X = (A+B) * (C+D) • ADD R1, A, B R1 M[A] + M[B] • ADD R2, C, D R2 M[C] + M[D] • MUL X, R1, R2 M[X] R1 × R2
دستورات دو آدرسی دستورات دوآدرسی معمولترین فرمت دستور در کامپیوترها هستند. قسمت آدرس میتواند یک رجيسترپردازنده یا یک خانه حافظه را مشخص نماید. X = (A+B) * (C+D) • MOV R1, A R1 M[A] • ADD R1, B R1 R1 + M[B] • MOV R2, C R2 M[C] • ADD R2, D R2 R2 + M [D] • MUL R1, R2 R1 R1 × R2 • MOV X, R1 M[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
دستورات صفرآدرسی • PUSH A • PUSH B • ADD • PUSH C • PUSH D • ADD • MUL • POP X X = (A+B) * (C+D)
X = (A + B) × (C + D) LOAD R1, A R1 M[A] LOAD R2, B R2 M[B] LOAD R3, C R3 M[C] LOAD R4, D R4 M[D] ADD R1, R1, R2 R1 R1 + R2 ADD R3, R3, R4 R3 R3 + R4 MUL R1, R1, R3 R1 R1 × R3 STORE X, R1 M[X] R1 دستوراتكامپيوترهاي RISC
روشهاي آدرسدهی دستوراتیککامپیوترعملیرابررویدادهذخیرهشدهدرحافظهویارجیسترهای CPU انجاممیدهند. روشمشخصکردنعملوندیکدستورالعملحالاتآدرسدهیویا addressing mode نامیدهمیشود. اصولا حالات مختلف آدرسدهی عملوند دستور، تسهیلات زیر را در سیستم فراهم میآورد: • قابلیت ایجاد شمارنده برای برنامه حلقه، و شاخصبندی در دادهها و همچنین ایجاد اشارهگر حافظه و جابجایی برای کاربر فراهم میشود • امکان تقلیل تعداد بیتهای قسمت آدرس دستور، فراهم میشود.
انواعحالتهایآدرسدهی • آدرسدهیضمنی • آدرسدهیبلادرنگ • آدرسدهیثبات • آدرسدهیغیرمستقیمبکمکثبات • آدرسدهیافزایشویاکاهشیخودکار • آدرسدهیمستقیم • آدرسدهیغیرمستقیم • آدرسدهینسبی • آدرسدهیشاخص • آدرسدهیباثباتپابه • 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
آدرسدهیضمنی • Implied Addressing Mode دراینروشاپراندهابصورتضمنیدرداخلدستورالعملمشخصمیشوند. • مثلدستور CMA کهمحتویآکومولاتوررامتمممیکند. • دستوراتصفرآدرسیمورداستفادهدرکامپیوترهای stack machine نیزازآدرسدهیضمنیاستفادهمیکنندزیراعملوندهابطورضمنیدربالایپشتهدرنظرگرفتهمیشوند.
آدرسدهیبلادرنگ • Immediate Addressing Mode دراینروشمقدارعملونددرداخلخوددستورالعملدادهمیشود. اینمدآدرسدهیبرایمقداردهیرجیسترهابکارمیرود. • مثلدستورزیردرپردازنده x86 MOV CX, 1024 Operand Instruction
آدرسدهیرجیستري • Register Addressing دراینروشعملوندهادرداخلرجیسترهایپردازندهقراردارند. بااستفادهاز K بیتمیتوانتعداد 2kرحیستررامشخصنمود. • مثلدستورزیردرپردازنده x86 ADD AL, BL CPU registers R Instruction Operand
آدرسدهیرجيستريغیرمستقیم • Register Indirect Addressing • دراینروشدستورالعملرجیستریرامشخصمیکندکهمحتویآنآدرسعملونددرحافظهرامشخصخواهدنمود. • مثلدستورزیردرپردازنده x86 MOV BX,[SI] Memory CPU registers Instruction R Operand
آدرسدهیافزایشویاکاهشیخودکار • Autoincrement or Autodecrement addressing • اینروشمشابهآدرسدهیرجيستريغیرمستقیماستبااینتفاوتکهمقداررجیستربعدیاقبلازاستفادهبرایمحاسبهآدرسموثرافزایشویاکاهشمیابد. Memory CPU registers R Instruction Operand R=R+1 R=R-1
آدرسدهیمستقیم • Direct Addressing Mode دراینروشآدرسعملونددرداخلدستورالعملذکرمیشود. • مثلدستورزیردرپردازنده x86 MOV AX,[3000] Memory Instruction Address Operand
آدرسدهیغیرمستقیم • Indirect Addressing Mode دراینروشآدرسموجوددردستورالعملمحلیازحاقطهرامشخصمیکندکهآدرسعملونددرآنجاقراردارد. دراین حالتبرایدسترسیبهعملونددوباررجوعبهحافطهموردنیازاست: یکباربرایپیداکردنآدرسآنوباردیگربرایخواندنمقدارآن. Memory Instruction Operand Address
آدرسدهینسبی • Relative Addressing Mode • دراینروشآدرسموثرازجمعآدرسمشخصشدهدرداخلدستورالعملومحتوی PC حاصلمیشود: Effective Address= address part of instruction + content of PC Memory Instruction Address Operand + PC
آدرسدهیشاخصدار • Index Addressing Mode • دراینروشآدرسموثرازجمعآدرسمشخصشدهدرداخلدستورالعملومحتوییکرجیسترمخصوصکهرجیسترایندکسنامیدهمیشودحاصلمیشود: Effective Add.= address part of instruction + content of index register • معمولاازاینروشبرایدسترسیبهدادههاییکآرایهاستفادهمیشود. کهمحلشروعدادههادرحافظهدردستورالعملمشخصمیشودوفاصلهدادهموردنظرتامحلشروعتوسطرجیسترایندکستعیینمیگردد. Memory Instruction Address Operand + Index Register
آدرسدهیباثباتپایه • Base Register Addressing Mode • اینروشمشابهآدرسدهیباثباتشاخصاستبااینتفاوتکهبجایثباتشاخصازثباتپایهاستفادهمیشود. تفاوتاین دوروشدرنحوهاستفادهاز رجیسترهاست. Effective Add.= address part of instruction + content of Base register Memory Instruction Address Operand + Base Register
PC = 200 R1 = 400 XR = 100 AC آدرس حافظه مثالعددی مقدارآکومولاتوردرصورتاجرایدستورموجوددرآدرس 200 برایحالتهایمختلفآدرسدهیچیست؟ 200 بارکردن AC حالت 201 500 = آدرس 202 دستور بعدی 399 450 400 700 500 800 600 900 702 325 800 300
مجموعهدستوراتکامپیوتر • دستوراتمورداستفادهدرکامپیوترهایمختلفازلحاظتعداد،عملکرد،نشانههایمورداستفادهبرایاسمبلی،وکدباینریبسیارمتفاوتهستندبااینوجودتمامیآنهادارایدستوراتیازگروههایزیرمیباشند: • دستوراتانتقالداده • دستوراتمحاسباتی،منطقیوجابجائی • دستوراتکنترلبرنامه
دستورات معمول انتقال اطلاعات انتقالدادهبینحافظهورجیسترها انتقالدادهبینرجیسترها انتقالدادهبینحافظهورجیسترها تعویصدادههایدورحیسترویایکرجیستروحافظه انتقالدادهبینورودی/خروجیورجیسترها انتقالدادهبینپشتهورجیسترها