710 likes | 879 Views
Department of Computer and IT Engineering University of Kurdistan Computer Architecture Instruction Set Architecture (ISA) By: Dr. Alireza Abdollahpouri. Instruction Set Architecture (ISA).
E N D
Department of Computer and IT Engineering University of Kurdistan Computer Architecture Instruction Set Architecture (ISA) By: Dr. AlirezaAbdollahpouri
Instruction Set Architecture (ISA) ﻣﺸﺘﻤﻞ ﺑﺮ ﺗﻤﺎم آن ﭼﻴﺰي اﺳﺖ ﻛﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن (برنامه نویسان به زبان سطح پایین و طراحان کامپایلر) ﺑﺮاي ﺧﻠﻖ ﺑﺮﻧﺎﻣﻪاي ﺑﺎ ﻋﻤﻠﻜﺮدي درﺳﺖ ﻧﻴﺎزﻣﻨﺪ داﻧﺴﺘﻦ آنﻫﺎ ﻫﺴﺘﻨﺪ. همچنین مجموعه اطلاعاتی است که یک طراح پردازنده برای پیاده سازی به آن نیاز دارد. در واقع نقطه اشتراک طراحان نرم افزار و سخت افزار میباشد.
Instruction Set Architecture (ISA) ﻳﻜﻲ از ﻛﻠﻴﺪي ﺗﺮﻳﻦ واﺳﻂﻫﺎي ﺑﻴﻦ ﺳﺨﺖاﻓﺰار و ﻧﺮم اﻓﺰار ﺳﻄﺢ ﭘﺎﻳﻴﻦ، ﻣﻌﻤﺎري ﻣﺠﻤﻮﻋﻪي دﺳﺘﻮراﻟﻌﻤﻞ (ISA) اﺳﺖ. ISA یک ﺳﻄح ﺗﺠﺮﻳﺪ اﺳﺖ ﻛﻪ اﻳﻦ اﻣﻜﺎن را ﻓﺮاﻫﻢ آورده ﺗﺎ ﭘﻴﺎدهﺳﺎزيﻫﺎي ﻣﺘﻌﺪد ﺑﺎ ﻗﻴﻤﺖ و ﻛﺎرآﻳﻲ ﻣﺘﻔﺎوت از ﻳﻚ ﺳﺨﺖاﻓﺰار ﺧﺎص وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ و ﻫﻤﻪي آنﻫﺎ ﺑﺘﻮاﻧﻨﺪ ﻧﺮم اﻓﺰار واﺣﺪي را اﺟﺮا ﻛﻨﻨد. Intel Pentium AMD
Instruction Set Architecture (ISA) ISA شامل موارد زیر است: • مجموعه دستورالعملها ( تعداد و نوع آنها) • قالب دستورالعملها • مجموعه رجیسترها • محل ذخیره سازی عملوندها • روشهای آدرسدهی (نحوه دسترسی به عملوندها) • نحوه برخورد با استثناها و وقفه ها • و تصمیمات کلی دیگر (نحوه فراخوانی زیربرنامه ها - ترتیب بایتها در حافظه و ...)
اهمیت ISA چقدر است؟ • برای استفاده کننده نهائی • هیچ! • برای برنامه نویس سطح بالا • خیلی کم. تا حدی که بتواند کامپایلر مناسب را انتخاب نموده و عملکرد برنامه را بهینه کند. • برای برنامه نویس سطح پائین/ طراح OS • این افراد باید اطلاعات کافی در مورد رجیسترها، ساختار حافظه، انواع داده های موجود و عملکرد دستورات داشته باشند. • برای طراحان کامپیوتر • این افراد نیز باید اطلاعات فوق را داشته باشند تا بتوانند اجزا سخت افزای مورد نیاز را انتخاب کنند.
How to speak to Computers? temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; High Level Language Program زبان سطح بالا Compiler Assembly Language Program lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) زبان اسمبلی Assembler 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Machine Language Program Machine Interpretation زبان ماشین Control Signal Specification
ISA- Where are the instructions? Harvard architecture Von-Neumann architecture Inst. & data Storage Instruction Storage CPU CPU Data Storage L1 Inst. Cache CPU L2 Cache Memory L1 Data Cache
Key ISA decisions operations operation destination operand c = a+b – how many? – which ones Source operands operands – how many? – location – types – how to specify? (Add R1,R2,R6) instruction format – size – how many formats?
قالب دستورالعمل ها • قالب دستورالعملها وابسته به نوع طراحی CPU است. • بخش های مختلف یک دستورالعمل • OP-CODE • آدرس آپراندها ( حافظه ، ثبات ....) • شیوه آدرسدهی Mode op-code register memory address direct load R3 36 مثال: 00 0101 011 00100100 R3 M[36]
طول دستور ثابت است طول دستور متغیراست قالب دستورالعمل ها – طول دستورالعمل در مورد مزایا و معایب هر کدام بحث کنید
مجموعهدستوراتکامپیوتر • دستوراتمورداستفادهدرکامپیوترهایمختلفازلحاظتعداد،عملکرد،نشانههایمورداستفادهبرایاسمبلی،وکدباینریبسیارمتفاوتهستندبااینوجودتمامیآنهادارایدستوراتیازگروههایزیرمیباشند: - دستوراتانتقالداده - دستوراتمحاسباتی،منطقیوجابجائی - دستوراتکنترلبرنامه
دستورات معمول انتقال اطلاعات انتقالدادهبینحافظهورجیسترها انتقالدادهبینرجیسترها انتقالدادهبینحافظهورجیسترها تعویصدادههایدورجیسترویایکرجیستروحافظه انتقالدادهبینورودی/خروجیورجیسترها انتقالدادهبینپشتهورجیسترها
OperandLocation (محل عملوندها) • Accumulator (انباره) • Stack (پشته) • Registers (ثباتها) • Memory (حافظه) We can classify most machines into 4 types: 1- accumulator, 2- stack, 3- register-memory (most operands can be registers or memory) , 4- load-store (arithmetic operations must have register operands).
سازمان رجيستر عمومی • General Registers • تمامی رجیسترهامی توانند به عنوان اپراند دستورالعملهای ALU بکار برده شوند. • مثال: رجیسترهای پردازنده MIPS
clock R0 R1 R2 R3 R4 R5 R6 R7 Loads DEC MUXA MUXB S1 A B S2 D ALU OPR 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منتقل نماید.
سازمان پشته يا Stack • ساختار LIFO • PUSH • POP • دسترسی فقط به عنصر بالای پشته امکانپذیر است • فقط یک اشاره گر نیاز داریم SP = STACK POINTER
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
تاثیرISA بر تعداد دستورالعملها (Instruction Count) Code sequence for A = B+C for five classes of instruction sets: Register (Load-store) Load R1, B Load R2,C Add R1,R1,R2 Store A,R1 Register (Register-memory) load R1,B add R1,C store A,R1 Stack push B push C add pop A Memory to Memory mov A B add A C Accumulator load B add C store A پردازنده MIPSاز این نوع است
Instruction cycle The CPU uses repeating machine cycles to execute instructions in the program, one by one, from beginning to end. A simplified cycle can consist of three phases: fetch, decode and execute
Example: c = a+ b (first step) Load R0, a Load R1, b ADD R2,R0,R1 Store c, R2 a b c
Example: c = a+ b (second step) Load R0, a Load R1, b ADD R2,R0,R1 Store c, R2 a b c
Example: c = a+ b (third step) Load R0, a Load R1, b ADD R2,R0,R1 Store c, R2 a b c
Example: c = a+ b (fourth step) Load R0, a Load R1, b ADD R2,R0,R1 Store c, R2 a b c
Addressing Objects: Endianess and Alignment • Big Endian:address of most significant byte = word address (xx00 = Big End of word) • IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA • Little Endian:address of least significant byte = word address (xx00 = Little End of word) • Intel 80x86, DEC Vax, DEC Alpha (Windows NT) little endian byte 0 3 2 1 0 0 1 2 3 lsb msb Aligned 0 1 2 3 big endian byte 0 Not Aligned Alignment: require that objects fall on address that is multiple of their size.
روشهاي آدرسدهی دستوراتیککامپیوترعملیرابررویدادهذخیرهشدهدرحافظهویارجیسترهایCPUانجاممیدهند.روشمشخصکردنعملوندیکدستورالعملحالاتآدرسدهیویاaddressing mode نامیدهمیشود. اصولا حالات مختلف آدرسدهی عملوند دستور، تسهیلات زیر را در سیستم فراهم میآورد: • قابلیت ایجاد شمارنده برای برنامه حلقه، و شاخصبندی در دادهها و همچنین ایجاد اشارهگر حافظه و جابجایی برای کاربر فراهم میشود. • امکان تقلیل تعداد بیتهای قسمت آدرس دستور، فراهم میشود.
انواعحالتهایآدرسدهی • آدرسدهیضمنی (Implied) • آدرسدهیبلادرنگ (Immediate) • آدرسدهیثبات (Register) • آدرسدهیغیرمستقیمبکمکثبات (Register Indirect) • آدرسدهیافزایشویاکاهشیخودکار (Autoincrement یا Autodecrement) • آدرسدهیمستقیم (direct) • آدرسدهیغیرمستقیم (Indirect) • آدرسدهینسبی (relative) • آدرسدهیشاخص (index) • آدرسدهیباثباتپايه
آدرسدهیضمنی • 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 0100 Operand 0100
آدرسدهیافزایشویاکاهشیخودکار • Autoincrement or Autodecrement addressing • اینروشمشابهآدرسدهیرجيستريغیرمستقیماستبااینتفاوتکهمقداررجیستربعدیاقبلازاستفادهبرایمحاسبهآدرسموثرافزایشویاکاهشمیابد. Memory CPU registers Instruction R 0100 Operand 0100 R=R+1 R=R-1
آدرسدهیمستقیم • Direct Addressing Mode دراینروشآدرسعملونددرداخلدستورالعملذکرمیشود. • مثلدستورزیردرپردازنده x86 MOV AX,[3000] Memory Instruction Address Operand
آدرسدهیغیرمستقیم • Indirect Addressing Mode دراینروشآدرسموجوددردستورالعملمحلیازحاقطهرامشخصمیکندکهآدرسعملونددرآنجاقراردارد.دراین حالتبرایدسترسیبهعملونددوباررجوعبهحافطهموردنیازاست:یکباربرایپیداکردنآدرسآنوباردیگربرایخواندنمقدارآن. Memory Instruction Operand 00010001 Address 00010001 10010111
آدرسدهینسبی • 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
PC = 200 R1 = 400 XR = 100 AC مثال آدرس حافظه 200 بارکردنAC مقدارآکومولاتوردرصورتاجرایدستورموجوددرآدرس 200 برایحالتهایمختلفآدرسدهیچیست؟ حالت 201 500 = آدرس 202 دستور بعدی 399 450 400 700 500 800 600 900 702 325 800 300
RISC vs. CISC دو دیدگاه متفاوت در معماری کامپیوتر
کامپیوترهایبامجموعهدستوراتپیچیدهCISCکامپیوترهایبامجموعهدستوراتپیچیدهCISC • معمارییککامپیوترمتاثرازمجموعهدستوراتانتخابشدهبرایآناست. • درکامپیوترهایاولیهسعیبراینبودتاتعداددستوراتکموسادهباشدتاپیادهسازیسختافزاریآنممکنباشد. • باپیشرفتدرزمینهسختافزاروارزانشدنآنتعداددستوراتکامپیوترهاافزایشیافتهوبرپیچیدگیآنهاافزودهگردید.هدفاینبودتاهرچهبیشترنیازهایکاربرانرادرسختافزارگنجاندهوباکاهشفاصلهبینزبانهایسطحبالاودستوراتکامپیوتر کارترجمهدستوراتسطحبالاراسادهترکنند.ایننوعکامپیوترهاگاهاتا 200 دستوروتعدادبسیارزیادیمدآدرسدهیداشتند.اینکامپیوترهارا Complex instruction set computer (CISC) مینامند.