دستورالعملهای ALU
اسلاید 1: فصل 5مظفر بگ محمدیبهار 94دانشگاه ایلام
اسلاید 2: روش مافقط از فلیپ فلاپها استفاده می کنیم.تمام آنها با یک لبه کار می کنند. (مثلا لبه ی پایین رونده)کلاک همه یکسان است.نیازی به رسم کلاک نیست.تمام اعمال مورد نظر در یک کلاک خاتمه می یابند.
اسلاید 3: روش ما (ادامه...)کلاک وارد هیچ گیتی نمی شود. طراحی صحیح:
اسلاید 4: مسیر داده – CPI برابر 1فرض: یعنی هر دستورالعمل در یک کلاک انجام می شود.دستورالعملها:add, sub, and, or slt, lw, sw, & beqهر دستورالعمل را جدا طراحی می کنیم. بعد همه را به هم وصل می کنیم.
اسلاید 5: واکشی دستورالعملهادستورالعمل را واکشی کنید، سپس PC را افزایش دهید. برای همه دستورات یکسان است. فرض کنید: PC هر سیکل به روزرسانی می شود. فعلا jump و انشعاب نداریم. بعد از انجام این دستور، دستور بعدی را واکشی می کنیم.
اسلاید 6: دستورالعملهای ALUand $1, $2, $3 # $1 <= $2 & $3E.g. MIPS R-formatOpcodersrtrdshamtfunction655556
اسلاید 7: دستورالعملهای load/storelw $1, immed($2) # $1 <= M[SE(immed)+$2]E.g. MIPS I-format:Opcodertrtimmed65516
اسلاید 8: دستورالعملهای انشعابbeq $1, $2, addr # if ($1==$2) PC = PC + addr<<2در حقیقت:newPC = PC + 4target = newPC + addr << 2 # in MIPS offset from newPCif (($1 - $2) == 0)PC = targetelsePC = newPC
اسلاید 9: دستورالعملهای انشعاب
اسلاید 10: تجمیع همه
اسلاید 11: نمای کلی واحد کنترلدستورالعملهای تک سیکلیمسیر داده: منطق ترکیبی، حافظه ی دستورالعملها، رجیسترها، حافظه ی داده، PC، سه حافظه ی آخر در انتهای چرخه نوشته می شود. نیاز به کنترل دارد: از منطق ترکیبی استفاده می کنیم. ورودیها: دستور العملها (خروجی واحد حافظه ی دستورالعملها)صفر (برای دستور beq)خروجیها:خطوط کنترلی مولتی پلکسرهاALUopWrite-enables
اسلاید 12: نمای کلی واحد کنترلکنترل سریعهر واحدی به چه داده ای نیاز دارد؟هر چه تعداد ورودیها کمتر باشد، مدار سریعتر است. مثال:کنترل کننده ی عمومی نیازی ندارد بداند که کدام ALUop اجرا می شود.
اسلاید 13: کنترل ALUفرض کنید ALU از جدول زیر استفاده می کند:000and001or010add110sub111slt (set less than)othersdon’t care
اسلاید 14: کنترل ALUALU-ctrl = f(opcode,function)برای ساده کردن ALU-ctrlALUop = f(opcode)2 bits6 bitsدستورالعملعملکد دستورالعملopcodeبیتهای functionaddadd000000100000subsub000000100010andand000000100100oror000000100101sltslt000000101010lwadd100011xxxxxxswadd101011xxxxxxbeqsub000100xxxxxx
اسلاید 15: کنترل ALUALU-ctrl = f(ALUop, function)3 bits2 bits6 bitsمی توان مدار مربوطه را با 5 گیت و تعدادی معکوس کننده ساخت. 10add, sub, and, …00lw, sw01beq
اسلاید 16: کنترلهای عمومیR-format: opcodersrtrdshamtfunction655556I-format: opcodersrtaddress/immediate65516J-format: opcodeaddress626
اسلاید 17: کنترلهای عمومیاز instruction[25:21] به عنوان رجیستر خواندنیreg1 استفاده کنید. از instruction[20:16] به عنوان رجیستر خواندنیreg2 استفاده کنید. از instruction[20:16] در دستور load و instruction[15:11] در بقیه ی دستورات به عنوان رجیستر نوشتن استفاده کنید. از یک مولتی پلکسر استفاده کنید. از instruction[31:26] به عنوان op[5:0] استفاده کنید.
اسلاید 18: کنترلهای عمومیخروجیهاALU-ctrl- اسلایدهای قبلی را ببینید. ALU src- R-format, beq vs. ld/stMemRead- lwMemWrite- swMemtoReg- lwRegDst- lw dst in bits 20:16, not 15:11RegWrite- all but beq and swPCSrc- beq taken
اسلاید 19: کنترلهای عمومیخروجیهای عمومیPCsrc را با موارد زیر جابجا کنید: Branch beqPCSrc = Branch * Zeroچه ورودیهایی برای تعیین سیگنالهای کنترلی فوق الذکر ضروری است؟ فقط Op[5:0]
اسلاید 20: سیگنالهای کنترلی مورد نیاز
اسلاید 21: کنترلهای عمومیRegDst = ~Op[0]ALUSrc = Op[0] RegWrite = ~Op[3] * ~Op[2]InstructionOpcodeRegDstALUSrcrrr00000010lw10001101sw101011x1beq000100x0???othersxx
اسلاید 22: کنترلهای عمومیاگر کل MIPS ISA را پیاده کنیم، به ساختار سازمان یافته تری نیاز داریم.تا بتوان گیتها را بین سیگنالهای کنترلی به اشتراک گذاشت. راه حل رایج: PLAکد دستورالعملهای MIPS طوری طراحی شده اند که ورودیهای PLA، مینترمها و خروجیها حداقل شوند.
اسلاید 23: اضافه کردن دستور Jump
اسلاید 24: سیگنالهای کنترلی مورد نیاز Jump
اسلاید 25: طراحی تک سیکلی چه مشکلی دارد؟بحرانی ترین مسیر احتمالاً مال دستور lw است: I-mem, reg-read, alu, d-mem, reg-writeدستورات دیگر سریعتر هستند:مثلاً دستورات rrr نیازی به d-mem ندارند. اگر کل ISA را پیاده کنیم تفاوت بین دستورات خیلی معنادارتر است. تقسیم اعداد اعشاریعدم وجود دستور در حافظه ی نهان (فصلهای بعدی)Instructions Cycles ProgramInstructionTimeCycle (code size)XX (CPI) (cycle time)
اسلاید 26: پیاده سازی تک سیکلیراه حلها: کلاک متغییر؟کنترل و طراحی خیلی مشکل است. یک کلاک کوچک و ثابتتعداد کلاکهای مورد نیاز هر دستور (یعنی CPI) متفاوت خواهد بود.
اسلاید 27: پیاده سازی چند سیکلیClock cycle = max(i-mem, reg-read+reg-write, ALU, d-mem)از منطق ترکیبی در سیکلهای متفاوت مجددا استفاده می کنیم:یک حافظهیک ALU و عدم استفاده از بقیه ی جمع کننده ها اما:کنترل خیلی پیچیده تر خواهد بودبه رجیسترهای جدیدی برای ذخیره ی نتایج نیاز داریم (مثل IR) .در سیکلهای بعدی مجددا استفاده می شود.منطقی که سیگنالها را محاسبه می کند نیز مجددا استفاده می شود.
اسلاید 28: یک مسیر داده چند سیکلی سطح بالاتوجه: رجیستر دستورالعمل، رجیستر داده حافظهیک حافظه که دارای باس آدرس است.یک ALU که خروجی آن در رجیستر ALUOut ذخیره می شود.
اسلاید 29: توضیح باسسیمها را به اشتراک می گذاریم تا تعداد سیگنالها کاهش یابند. یک مولتی پلکسر توزیع شده داریم. چندین منبع روی یک باس هستند.باید مطمئن باشیم که در هر لحظه از زمان فقط یکی از آنها فعال هستند!
اسلاید 30: سیگنالهای کنترلی در طراحی چند سیکلی
اسلاید 31: مسیر داده ی چند سیکلی
اسلاید 32: گامهای طراحی چند سیکلیStepDescriptionSample ActionsIFFetchIR=MEM[PC]PC=PC+4IDDecodeA=RF(IR[25:21])B=RF(IR[20:16])ALUout=PC+SE(IR[15:0]) << 2EXExecuteALUout = A + SE(IR[15:0]) # lw/swALUout = A op B # rrrALUout=A-B # beqif (zero==1) PC = ALUout # beqPC=PC[31-28]:SE(IR[25:0])<<2 # jmpMemMemoryMEM[ALUout] = B # swMDR = MEM[ALUout] #lwWBWritebackRF(IR[15:11]) = ALUout # rrrReg(IR[20:16]) = MDR # lw
اسلاید 33: کنترل طراحی چند سیکلیتابعی از Op[5:0] و حالت فعلیبه عنوان یک ماشین حالت متناهی (FSM) یایک میکرو-برنامه یا میکرو-کد (بعدا)outputsNextStateNextState FnOutput FnCurrent stateInputs
اسلاید 34: ماشین حالت متناهیبرای هر حالت تعریف کنید: سیگنالهای کنترلی مورد نیاز مسیر داده در این سیکلسیگنالهای کنترلی برای تعیین حالت بعدیتمام دستورات از IF شروع می شوند. تمام دستورات بعد از خاتمه، یک IF جدید را شروع می کنند:البته قبل از آن، PC را به صورت مناسب به روز رسانی می کنند.
اسلاید 35: مثال چند سیکلی: andPCWritePCSource = 10ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCondPCSource = 01ALUSrcA = 1ALUSrcB = 00ALUOp = 10MemReadIorD = 1MemWriteIorD = 1RegDst = 1RegWriteMemtoReg = 0RegDst = 0RegWriteMemtoReg = 1StartMemReadALUSrcA=0IorD = 0IRWriteALUSrcB = 01ALUOp = 00PCWritePCSrc = 00ALUSrcA = 0ALUSrcB = 11ALUOp = 00ALUSrcA = 1ALUSrcB = 10ALUOp = 00LW | SWRRRBEQJLWSWIFIDEXMEMWBWB
اسلاید 36: مثال چند سیکلی :and
اسلاید 37: FSM: تخصیص حالتهاتخصیص حالت باعث تبدیل حالتهای منطقی به معادل دودویی آنها می شود. اهمیت موضوع؟اگر تخصیص حالت را درست انجام دهیم، مدار کنترلی حاصله کوچکتر خواهد بود.پیدا کردن جواب بهینه سخت است. در ماشین طراحی شده 10 حالت داریم. می توان هر یک از اعداد 0 تا 15 را به هر کدام از حالتها تخصیص داد.
اسلاید 38: تخصیص حالت: سیگنال RegWritePCWritePCSource = 10ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCondPCSource = 01ALUSrcA = 1ALUSrcB = 00ALUOp = 10MemReadIorD = 1MemWriteIorD = 1RegDst = 1RegWriteMemtoReg = 0RegDst = 0RegWriteMemtoReg = 1StartMemReadALUSrcA=0IorD = 0IRWriteALUSrcB = 01ALUOp = 00PCWritePCSrc = 00ALUSrcA = 0ALUSrcB = 11ALUOp = 00ALUSrcA = 1ALUSrcB = 10ALUOp = 00LW | SWRRRBEQJLWSWIFIDEXMEMWBWBState 0State 1State 2State 6State 8State 9State 3State 5State 7 (0111b)State 4 (0100b)Original: 2 inverters, 2 and3s, 1 or2State 8 (1000b)State 4State 7State 9 (1001b)New: No gates--just bit 3!
اسلاید 39: دستور lwPCWritePCSource = 10ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCondPCSource = 01ALUSrcA = 1ALUSrcB = 00ALUOp = 10MemReadIorD = 1MemWriteIorD = 1RegDst = 1RegWriteMemtoReg = 0RegDst = 0RegWriteMemtoReg = 1StartMemReadALUSrcA=0IorD = 0IRWriteALUSrcB = 01ALUOp = 00PCWritePCSrc = 00ALUSrcA = 0ALUSrcB = 11ALUOp = 00ALUSrcA = 1ALUSrcB = 10ALUOp = 00LW | SWRRRBEQJLWSWIFIDEXMEMWBWB
اسلاید 40: دستور lw
اسلاید 41: دستور swPCWritePCSource = 10ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCondPCSource = 01ALUSrcA = 1ALUSrcB = 00ALUOp = 10MemReadIorD = 1MemWriteIorD = 1RegDst = 1RegWriteMemtoReg = 0RegDst = 0RegWriteMemtoReg = 1StartMemReadALUSrcA=0IorD = 0IRWriteALUSrcB = 01ALUOp = 00PCWritePCSrc = 00ALUSrcA = 0ALUSrcB = 11ALUOp = 00ALUSrcA = 1ALUSrcB = 10ALUOp = 00LW | SWRRRBEQJLWSWIFIDEXMEMWBWB
اسلاید 42: دستور sw
اسلاید 43: دستور (beq T)PCWritePCSource = 10ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCondPCSource = 01ALUSrcA = 1ALUSrcB = 00ALUOp = 10MemReadIorD = 1MemWriteIorD = 1RegDst = 1RegWriteMemtoReg = 0RegDst = 0RegWriteMemtoReg = 1StartMemReadALUSrcA=0IorD = 0IRWriteALUSrcB = 01ALUOp = 00PCWritePCSrc = 00ALUSrcA = 0ALUSrcB = 11ALUOp = 00ALUSrcA = 1ALUSrcB = 10ALUOp = 00LW | SWRRRBEQJLWSWIFIDEXMEMWBWB
اسلاید 44: دستور (beq T)
اسلاید 45: دستور (beq NT)
اسلاید 46: دستور jPCWritePCSource = 10ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCWriteCondPCSource = 01ALUSrcA = 1ALUSrcB = 00ALUOp = 10MemReadIorD = 1MemWriteIorD = 1RegDst = 1RegWriteMemtoReg = 0RegDst = 0RegWriteMemtoReg = 1StartMemReadALUSrcA=0IorD = 0IRWriteALUSrcB = 01ALUOp = 00PCWritePCSrc = 00ALUSrcA = 0ALUSrcB = 11ALUOp = 00ALUSrcA = 1ALUSrcB = 10ALUOp = 00LW | SWRRRBEQJLWSWIFIDEXMEMWBWB
اسلاید 47: دستور j
اسلاید 48: خلاصهپیاده سازی پردازندهمسیر دادهکنترلپیاده سازی چند سیکلیبعدی: microprogramming
نقد و بررسی ها
هیچ نظری برای این پاورپوینت نوشته نشده است.