320 likes | 641 Views
معماری سیستم های کامپیوتری. واحد پردازش مرکزی ( CPU ). مهدی ایل بیگی دانشگاه پیام نور دماوند. اجزائ اصلی یک CPU. ALU : مجری دستورات CU : ایجاد سیگنال های کنترلی لازم REGISTERS : ذخیره داده های میانی. مجموعه ثبات. واحد کنترل. ALU. روش های طراحی CPU. سازمان تک انباره ای
E N D
معماری سیستم های کامپیوتری • واحد پردازش مرکزی (CPU) مهدی ایل بیگی دانشگاه پیام نور دماوند
اجزائ اصلی یک CPU • ALU:مجری دستورات • CU:ایجاد سیگنال های کنترلی لازم • REGISTERS: ذخیره داده های میانی مجموعه ثبات واحد کنترل ALU
روش های طراحی CPU • سازمان تک انباره ای • سازمان ثبات های عمومی (چند ثباتی) • سازمان پشته ای
سازمان تک انباره ای • همواره یکی از اپرندها آکومولاتور است. • نتایج عملیات به آکومولاتور انتقال داده می شود. 4096*16 RAM BUS ADDRESS AR PC DR ALU AC INPR IR TR OUTR
سازمان ثبات های عمومی • در این روش از چند ثبات عمومویGENERAL REGISTERS استفاده می شود. • تمامی ثبات ها می توانند به عنوان اپراند دستورالعمل های ALU بکار برده شوند. (هم بعنوان مبداء و هم بعنوان مقصد) • مثال: رجیسترهای داده در پردازنده پنتیوم.
سازمان ثبات های عمومی ورودی حافظه R1 Operation R2 R3 R4 R5 R6 R7 MUX1 MUX2 DEC SelA SelB A B ALU SelD
قالب دستورالعمل ها در کامپیوتر با سازمان چند ثباتی • بخش های مختلف یک دستورالعمل: • انتخاب عمل در ALU (5 بیت) • انتخاب رجیسترهای مبداء • مولتی پلکسر 1(3 بیتی) • مولتی پلکسر 2 (3 بیتی) • انتخاب رجیستر مقصد • دیکدر (3 بیتی) 3 3 3 5 OP-CODE S1 S2 D
پشته (STACK) • پشته یک ساختار Last In First Out (LIFO) است. • دو عمل اصلی روی پشته قابل انجام است: PUSH و POP • دسترسی فقط به عنصر بالای پشته امکانپذیر است و برای دسترسی به این عنصر فقط یک اشاره گر نیاز داریم که نام آن SP = STACK POINTER می باشد. • در ابتدا مقدار SP = 0 می باشد و اولین عنصر در خانه شماره 1 درج می گردد. و آخرین عنصر در آدرس 0 ذخیره خواهد شد. • پس اگر SP = 0 شود و عملیات قبلی درج باشد پشته پر خواهد شد و اگر SP = 0 شود و عملیات قبلی حذف باشد پشته خالی خواهد شد.
دستورات PUSH و POP • ریز عمل های لازم برای انجام عملیات Push، بشرطی که پشته پر نباشد: SP ← SP+1 M[SP] ← DR IF (SP=0) THEN (FULL←1) // EMPTY ← 0 • ریز عمل های لازم برای انجام عملیات Pop بشرطی که پشته خالی نباشد: DR ← M[SP] SP ← SP-1 IF (SP=0) THEN (EMPTY←1)// FULL ← 0 اگر مقدار SP مثلا برابر با 111 باشد با اعمال درج در پشته، SP برابر 000 خواهد شد و این یعنی پشته پر است. اگر مقدار SP مثلا برابر با 001 باشد با اعمال حذف از پشته، SP برابر 000 خواهد شد و این یعنی پشته خالی شده است.
کاربرد پشته • یکی از کاربردهای پشته، ارزیابی عبارات محاسباتی می باشد. البته این عبارات باید به شکل لهستانی (Postfix) نمایش داده شود. • مثال: A*B+C/D => Polish Notation = 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) B A D C محتویات پشته A*B C/D A*B A*B+ C/D
کدام مجموعه از عملیات ذیل می تواند یک پشته را پیاده سازی نماید؟
انواع ساختار پشته • پشته ثباتی: استفاده از تعدادی ثبات برای پیاده سازی پشته: • ویژگی ها: • سرعت دسترسی بالا • قیمت زیاد • تعداد کم خانه های پشته • پشته حافظه ای: استفاده از قسمتی از حافظه به عنوان پشته: • ویژگی ها: • سرعت دسترسی پایین • ارزان • حجم زیاد
تاثیر نوع CPU بر قالب دستورات • CPU تک انباره: • معمولا یک اپرند آکومولاتور است. • دستورات ارجاع به حافظه، تک آدرسی خواهند بود. • CPU چندثباتی: • اپرندها ثبات هستند. • دستورات سه آدرسی ( یا دو آدرسی). • CPU پشته ای: • اپرند تنها مربوط به دستورات Push و Pop می باشد. • دستورات یک آدرسی و صفر آدرسی.
تاثیر قالب دستورالعمل ها بر روی کد برنامه • برای بررسی این موضوع به مقایسه یک عملیات یکسان در چهار حالت مختلف برای آدرس دهی می پردازیم: • مثال: محاسبه A*B+C/D با استفاده از: • دستورات سه آدرسی • دستورات دو آدرسی • دستورات یک آدرسی • دستورات صفرآدرسی
تاثیر قالب دستورالعمل ها بر روی کد برنامه • محاسبه A*B+C/D با استفاده از دستورات سه آدرسی: MUL R1, A, B DIV R2, C, D ADD R3, R1, R2 • محاسبه A*B+C/D با استفاده از دستورات دو آدرسی: MOV R1, A MUL R1, B MOV R2, C DIV R2, D ADD R1, R2
تاثیر قالب دستورالعمل ها بر روی کد برنامه • محاسبه A*B+C/D با استفاده از دستورات تک آدرسی: LDA A MUL B STA TEMP LDA C DIV D ADD TEMP • محاسبه A*B+C/D با استفاده از دستورات صفر آدرسی: PUSH A PUSH B MUL PUSH C PUSH D DIV ADD
مشخصات دستورالعمل ها • قالب دستورالعمل ها وابسته به نوع طراحی CPU است. • بخش های مختلف یک دستورالعمل: • OP-CODE • آدرس ( حافظه ، ثبات ....) • شیوه آدرسدهی • طول دستورالعمل: • می تواند ثابت باشد. • می تواند متغیر باشد. • تنوع دستورالعمل ها: • کامپیوترهای CISC (دارای تعداد زیادی دستورالعمل) • کامپیوترهای RISC (دارای تعداد کمی دستورالعمل)
Complex Instruction Set computer (CISC) • کامپیوتر های مانند سری 80×86 اینتل و سری های بالاتر مثل پنتیوم، از دسته CISC بشمار می روند. • در این کامپیوترها تعداد دستورالعمل ها زیاد (100 تا 500) است. • دارای دستورالعمل هایی هستند که ندرتا استفاده می شوند. • دارای روش های آدرسدهی متنوع (5 تا 20 روش) می باشند. • در این کامپیوترها قالب دستورات با طول متغیر می باشد. • در این کامپیوترها دستوراتی با عملوند حافظه ای وجود دارند. • در این کامپیوترها برنامه نویسی آسان است. • دارای دستورالعملهایی هستند که کارهای زیادی انجام می دهند. • در این کامپیوترها دیکد کردن دستورات به طول می انجامد. • در این کامپیوترها دسترسی به عملوند های حافظه ای زمانبر است. • در این کامپیوترها کار کامپایلر ساده است.
Reduced Instruction Set Computer (RISC) • در این کامپیوترها تعداد دستورات کم است. • دارای روش های آدرس دهی کمی هستند. • دارای رجیسترهای زیادی می باشند. • در این کامپیوترها اپرندها همواره در رجیسترها هستند. • مراجعات به حافظه تنها در دستورات load و store می باشد. • در این کامپیوترها دستورات با طول ثابت می باشند. • اجرای هر دستور در یک سیکل زمانی صورت می پذیرد. • واحد کنترل سخت افزاری طراحی می گردد. • برنامه های این کامپیوتر طولانی خواهند شد. • سرعت اجرای برنامه ها بالا خواهد بود. • دیکد دستورات سریع می باشد. • استفاده از پردازش pipeline بصورت کارا. • استفاده از پنجره های همپوشان برای فراخوانی سریع زیربرنامه ها.
فراخوانی زیربرنامه (رویه)ها با استفاده از پنجره های همپوشان • در RISC برای فراخوانی زیربرنامه ها از پشته های حافظه ای برای ارسال پارامترها ورودی و دریافت پارامترهای خروجی استفاده نمی شود، و بجای آن از پنجره های ثباتی همپوشان استفاده می گردد. • پنجره های ثباتی همپوشان دارای: • ثبات های محلی (local) برای نگهداری متغیرهای محلی می باشند. • ثبات های عمومی (global) برای نگهداری پارامترهای مشترک بین همه رویه ها می باشند. • ثبات های مشترک با • پنجره قبلی برای دریافت پارامترهای ورودی می باشند. • پنجره بعدی برای ارسال پارامترهای خروجی می باشند.
فراخوانی زیربرنامه (رویه)ها با استفاده از پنجره های همپوشان • هر زیربرنامه ثبات های همپوشان (پنجره) مخصوص به خود را دارد. • اشاره گری وجود دارد که به پنجره فعال اشاره دارد. • با فراخوانی هر زیربرنامه این اشاره گر یک واحد افزایش می یابد. • با بازگشت از زیربرنامه این اشاره گر یک واحد کاهش می یابد. • با فراخوانی زیربرنامه: • پارامترهای ارسالی را در بخش مشترک (با رویه بعدی) قرار می دهیم. • اشاره گر را یک واحد افزایش می هیم. • پس از اجرای زیربرنامه پارامترهای بازگشتی را در بخش مشترک (با رویه قبلی) قرار می دهیم. • اشاره گر را کاهش می دهیم.
common مثال: چهار پنجره همپوشان local win1 تعداد ثبات های قابل دسترسی توسط هر دریچه: Windows Size=L + 2C + G common local win2 common تعداد کل ثبات های مورد نیاز در پردازشگر: Total=W(L + C) + G local win3 common General Registers local win4 common
مثال: پردازنده Berkeley RISCI • مشخصات این CPU: • رجیسترهای 32 بیتی • قالب دستورات 32 بیتی • تعداد دستورات = 31 • روش های آدرسدهی: • بلافصل • ثباتی • نسبی
ویژگی های CISC • یکی از ویژگی های CISC روش های متعدد آدرسدهی حافظه می باشد. • در هر دستورالعمل تعدادی از بیت ها معین کننده نوع آدرس دهی هستند. • تنوع روش های آدرس دهی، زمان اجرا را افزایش می دهد. OP-CODE ADD-MODE ADDRESS
روش های آدرس دهی 1- آدرس دهی ضمنی: عملوند در خود دستور مستتر است. مثال: • CMA • CLE 2- آدرس دهی بلافصل: خود عملوند (و نه آدرس آن) در دستور قرار داده می شود. مثال: • MOV AX, 100 • ADD CX, 25H 3- آدرس دهی ثباتی: عملوند یکی از ثبات های CPU است. مثال: • MOV AX,BX • SUB CX,AX
روش های آدرس دهی 4- روش خود افزایشی یا خود کاهشی: در این روش آدرس عملوند در ثبات وجود دارد و پس از استفاده از حافظه مقدار آدرس بصورت خودکار افزایش یا کاهش می یابد.مثال: • Loop در پردازنده پنتیوم 5- آدرس دهی مستقیم (Direct): آدرس عملوند در داخل دستورالعمل قرار دارد. مثال: • Add M • LDA temp 6- آدرس دهی غیرمستقیم (Indirect): در داخل دستورالعمل مکان (آدرس)، آدرس عملوند را قرار می دهیم. مثال: • Mov ax,[m] • Mov ax,[bx]
روش های آدرس دهی 7- آدرس دهی نسبی: شمارنده برنامه به آدرس درون دستور اضافه می شود: Effective Address = ADDRESS + PC 8- آدرس دهی شاخصدار (Indexed): محتوای ثبات شاخص (Index Register) به آدرس دستور اضافه می شود. 9- آدرس دهی با ثبات پایه (BASE): محتوای رجیستر Base به آدرس دستور اضافه می شود.
نمونه سؤال • مقادیر اولیه ثبات های PC،R1 ،R2 و موجودی حافظه در ذیل داده شده است. مشخص کنید اجرای دستورات برنامه زیر مقادیر فوق را چه تغییری می دهد. توجه شود که ثبات ها 16 بیتی، دستورات 2 بایتی و هر خانه حافظه یک بایتی است. ++ علامت آدرسدهی پس افزاینده (post increment) می باشد و کلیه اعداد در مبنـــای 16 هستند.مقادیر اولیه : PC = 308 hR1 = 100 hR2 = FFE0 hMEM[100 h] = 20 h Add [R1],R2.low Mov[R2]++,R1
جواب • با اجرای دستور اول 8بیت پایینی ثبات R2 با محتویات خانه ای از حافظه که R1 به آن اشاره می کند جمع می شود و در همان خانه از حافظه ذخیره می گردد. بدلیل اینکه خانه های حافظه 8 بیتی هستند و فقط 8 بیت پایینی حاصل جمع (100h)، یعنی (00h) در حافطه ذخیره خواهد شد: • با اجرای دستور دوم ابتدا مقدار ثبات R1 در خانه ای از حافظه که ثبات R2 به آن اشاره می نماید ذخیره می گردد و سپس به دلیل وجود عملگر (++) مقدار ثبات R2 نیز یک واحد افزایش می یابد. • مقدار شمارنده برنامه PC نیز با اجرای هر کدام از دستورها دو واحد افزایش می یابد زیرا هر دستور دوبایتی است و در دو خانه از حافظه ذخیره می گردد: Add [r1],r2.low Mem[100]= E0+20=00 Mem[ffe0]= 00 h R2=ffe1 Mov [r2]++,r1 Pc=308+4=30c h