(۰۷ مهر ۱۳۹۳ ۰۸:۲۳ ب.ظ)ریحان نوشته شده توسط: دوستان من متوجه نمیشم این سوال رو.خواهشا ببینین و کمکم کنین...فصل ۴///طراحی کامبیوتر بایه...سوال ۱۵///سال چاب مهم نیست.همه همینن....گفته دستور sta addr کدوم میشه......
من کسی را ندارم سوالامو ازش ببرسم....
این تست با فرض اینکه
یک کامپیوتر تک آدرسه (مبتنی بر Accumulator) طرح شده است (این امر را از
روی دستور متوجه شدیم) و منظور از
STA addr انجام ریزدستور زیر می باشد:
M[addr]<-AC
برای اینکه شما متوجه شوید گزینه ها را یکی یکی بررسی می کنیم و
دلیل رد هر گزینه را بیان می کنیم:
در گزینه یک در T2 ابتدا PC را یک واحد اضافه کرده و DR را داخل AR ریخته و در کلاک بعد، AC را در خانه ای از حافظه که آدرسش در AR هست ذخیره کرده، اگر دقت کنید
در فازهای واکشی و دیکود، PC یک بار اضافه شده بود و
هدف ما از اجرای دستور STA addr صرفاً ریختن AC در محتویات خانه است که آدرس آن در فیلد addr دستور است و دستور (یا قسمتی از دستور) بعد از واکشی در DR می باشد، بنابراین انجام عمل
افزایش یک واحدی PC در کلاک T2 امری بی مورد و غلط می باشد و باعث شده است، ما از روی یک دستور موجود در حافظه بپریم که
هدف این دستور نبود و
به همین دلیل گزینه رد می شود. در صورت نبودن این مورد، گزینه یک می توانست درست باشد.
گزینه ۲ را به سادگی می توان رد کرد چون در کلاک T2
همزمان به ثبات DR دو مقدار مختلف ریخته می شود که
Conflict است و
گزینه رد می شود.
حالا گزینه های ۳ و ۴ باقی مانده اند که مشابه یکدیگر هستند و
یکی از آنها پاسخ تست می باشد:
در هر دو گزینه محتویات خانه ای که PC به آن اشاره می کند داخل DR ریخته شده و بعد PC یک واحد افزایش یافته است و در کلاک آخر AC داخل خانه از حافظه که AR یه آن اشاره می کند ریخته شده است. اگر دقت کنید تفاوت دو گزینه در کلاک T3 است که در گزینه ۳، DR در AR ریخته شده است ولی
در گزینه ۴، DR در AC ریخته شده است. همین جا
غلط گزینه ۴ مشخص می شود، ما قرار بود محتویات AC را در حافظه ذخیره کنیم ولی
با انجام عمل AC<-DR، محتویات AC قبلی را از دست داده ایم و به جای آن DR که یک دستور (یا قسمتی از دستور) در آن هست را در حافظه ذخیره کرده ایم و
همچنین ARیی که در کلاک بعد استفاده می کنیم، هنوز مشخص نشده است که
به این دلایل گزینه رد می شود و بنابراین
گزینه ۳ صحیح است.
از روی گزینه ۳ متوجه می شویم که
دستور STR addr دو خانه از حافظه را در بر گرفته است که در خانه اول Opcode و
در خانه دوم addr قرار داده شده است و به همین دلیل یکبار دیگر M[PC] را می خوانیم و در DR می ریزیم و
به این طریق addr را از دستور خوانده ایم و باید داخل AR (و نه AC) بریزیم تا عمل M[AR]<-AC به درستی انجام شود.
توجه داشته باشید که
تنها ثباتی که می تواند به حافظه آدرس دهد AR (یا MAR) است و
تنها ثباتی که می تواند داده حافظه را بخواند DR (یا MDR یا MBR) می باشد.
دلیل اینکه گفته شد با حذف PC<-PC+1 از گزینه یک، می توان این گزینه را درست درنظر گرفت با فرض اینکه دستور یک خانه از حافظه از اشغال کرده است می باشد که فرض درستی می تواند باشد.