تالار گفتمان مانشت
طول دستورات و تعداد دستورات - نسخه‌ی قابل چاپ

طول دستورات و تعداد دستورات - مازیار صفایی - ۲۸ آبان ۱۳۹۰ ۰۱:۱۸ ق.ظ

از این تیپ سوالات هست که می گن اگه طول دستورات ۱۰ بیت باشه و فیلد های آدرس ۳ بیت.
بعد m تا دستورات دو اپرندی داریم n تا یک اپرندی... حالا صفر اپرندی چندتاستConfused

من تو هیچ کتابی پیدا نکردم اینها رو درست توضیح بده . راست و حسینیش اینه که نمی فهمم!Sad

از کجا باید تشخصی بدیم؟
اگه منبع خوب هم سراغ دارید باز هم دعا گو هستیم...

طول دستورات و تعداد دستورات - pos - 28 آبان ۱۳۹۰ ۰۱:۴۴ ق.ظ

نمونه این سوال توی آزمون ۲۵ درصد اول پارسه بود. من هم جایی ندیده بودم چطوری حل میشه. من به روش زیر حل کردمش:

سوال این بود:
اگر طول دستور ۱۰ بیت و طول آدرس ۳ بیت باشد و ۱۴ دستور دو عملوندی و ۱۵ دستور تک عملوندی داشته باشیم چند دستور بدون عملوند می توانیم داشته باشیم؟
خوب فضای کلی دستور به این صورت هست:
---|---|---- = xxxx|yyy|zzz
پس چهار بیت برای opcode دو عملوندی داریم که میشه ۱۶ دستور ولی ما اینجا از ۱۴ تاش استفاده کردیم یعنی ۲ دستور خالی داریم. من فرض می کنم این دو دستور ۰۰۰۰ و ۰۰۰۱ هستند. حالا گفته ۱۵ تا دستور تک عملنودی داریم من از سه بیت بخش دوم (yyy) استفاده می کنم. چون یک اپرند می خوایم مشکلی پیش نمیاد. و چون ۳ بیت هست میشه باهاش ۸ دستور ایجاد کرد ولی توی مرحله قبل ما دو دستور ۰۰۰۰ و ۰۰۰۱ را خالی داریم. پس اینها را با هم ترکیب می کنیم تا بتوانیم ۱۶ دستور تک عملوندی ایجاد کنیم که میشه:
---|y|yyy---
خوب همانطور که دیدی ما می توانیم ۱۶ دستور ۲ تک عملوندی داشته باشیم که از ۱۵ تاش داریم استفاده می کنیم. من فرض می کنم دستور باقیمانده ---|۰۰۰|۰۰۰۰ باشه.
خوب پس می توانم با ترکیب این دستور و ۳ بیت باقیمانده ۸ دستور بدون عملوند استفاده کنم.

حالا با این نکته دقت کن:
اگر گفته بود ۱۶ دستور تک عملوندی داریم دیگه نمی شد دستور بدون عملوند ایجاد کرد چون ---|۰۰۰|۰۰۰۰ جزئ دستورات تک عملوندی می شد و اگر من از سه بیت باقیمانده برای دستورات صفر عملوندی استفاده می کردم کامپیوتر نمی تونست تشخیص بده این دستور بدون عملوند هست یا اینکه یک دستور تک عملوندی است.

امیدوارم تونسته باشم درست توضح بدم Wink

طول دستورات و تعداد دستورات - مازیار صفایی - ۲۸ آبان ۱۳۹۰ ۰۲:۱۷ ق.ظ

توضیحاتتون عالی بود
بسیار متشکرم!
من هر وقت می خوام از معماری یک نفس راحت بکشم یک چیزی هست که .....!

باز هم متشکر

طول دستورات و تعداد دستورات - Xilinx - 01 آذر ۱۳۹۰ ۱۱:۵۴ ب.ظ

دقت کنید توی تست های آخر فصل پوران ۳تا سوال این مدلی هست ;-) آپلود کنم ؟؟!

طول دستورات و تعداد دستورات - مازیار صفایی - ۰۲ آذر ۱۳۹۰ ۱۲:۱۶ ق.ظ

دستتون درد نکنه!
دارمشون....

RE: طول دستورات و تعداد دستورات - firouzi.s - 02 آذر ۱۳۹۰ ۰۴:۲۸ ب.ظ

منم این سوالو اشکال دارم
دو زاریم هنوز نیفتاده فقط کج شده Big Grinمی شه یه مثال دیگه هم بزنید Tongue
ممنون

طول دستورات و تعداد دستورات - Xilinx - 02 آذر ۱۳۹۰ ۰۶:۲۶ ب.ظ

نقل قول: منم این سوالو اشکال دارم
دو زاریم هنوز نیفتاده فقط کج شده Big Grinمی شه یه مثال دیگه هم بزنید

منم اینو خوندم دو زاریم کج شد ولی بعدش گرفتم چی شده Big Grin

ولی من همین توضیحات رو تکمیل میکنم (با اجازه)

نقل قول: اگر طول دستور ۱۰ بیت و طول آدرس ۳ بیت باشد و ۱۴ دستور دو عملوندی و ۱۵ دستور تک عملوندی داشته باشیم چند دستور بدون عملوند می توانیم داشته باشیم؟
خوب فضای کلی دستور به این صورت هست:
---|---|---- = xxxx|yyy|zzz
پس چهار بیت برای opcode دو عملوندی داریم که میشه ۱۶ دستور ولی ما اینجا از ۱۴ تاش استفاده کردیم یعنی ۲ دستور خالی داریم. من فرض می کنم این دو دستور ۰۰۰۰ و ۰۰۰۱ هستند. حالا گفته ۱۵ تا دستور تک عملنودی داریم من از سه بیت بخش دوم (yyy) استفاده می کنم. چون یک اپرند می خوایم مشکلی پیش نمیاد. و چون ۳ بیت هست میشه باهاش ۸ دستور ایجاد کرد ولی توی مرحله قبل ما دو دستور ۰۰۰۰ و ۰۰۰۱ را خالی داریم. پس اینها را با هم ترکیب می کنیم تا بتوانیم ۱۶ دستور تک عملوندی ایجاد کنیم که میشه:
---|y|yyy---
خوب همانطور که دیدی ما می توانیم ۱۶ دستور ۲ تک عملوندی داشته باشیم که از ۱۵ تاش داریم استفاده می کنیم. من فرض می کنم دستور باقیمانده ---|۰۰۰|۰۰۰۰ باشه.
خوب پس می توانم با ترکیب این دستور و ۳ بیت باقیمانده ۸ دستور بدون عملوند استفاده کنم.

نکته ای که باید بگم اینه‌: ما این نکته رو میدونیم که با مثلا ۴تا بیت میشه ۲ به توان ۴ تا حالت (یعنی ۱۶ تا حالت) ایجاد کرد.حالا ما از اون قسمت xxxx می تونیم ۱۶ تا حالت (یا همون ۱۶ تا دستور) میتونیم داشته باشیم در حالی که قسمت yyy و zzz برای دو آدرس بکار بره (چون توی سوال گفته که طول آدرس ۳ بیت هست) پس میتونیم ۱۶ تا دستور دو آدرسه(یا دو عملوندی) داشته باشیم.ولی توی سوال گفته ما ۱۴ تاشو رزرو کردیم. پس ما این (با تفکر بقالی) دو حالت واسه خودمون داریم.(۱۶-۱۴=۲) خب حالا نکته ای که باید بگم اینه که ما دیگه از این ۴بیت اول xxxx هیچ استفاده ای نمیتونیم بکنیم(در واقع فقط از همون دو حالت میتونیم استفاده کنیم) پس به این فکر کنید که ۴ بیت از ۱۰ بیت رفته و ۶ بیت مونده.حالا این ۶ بیت خب ۳ بیتش واسه آدرس همون ۱ عملوندمون استفاده میشه.با این ۳ بیت yyy ما میتونیم ۲ به توان ۳تا دستور داشته باشیم(یعنی ۸تا) حالا دوتا حالت هم از xxxx‌ها مونده بود(یادتونه ؟! Big Grin الان احساس کردم دارم تدریس میکنمBig GrinBig GrinTongue) بقول دوستومون فرض کنید اونا ۰۰۰۰ یا ۰۰۰۱ باشند ماتونیم جدا از اون ۱۴ حالت دستورای تک عملوندی یه دفعه ۰۰۰۰ رو جای اوی ۴ بیت xxxx در نظر بگیریم و بعدشم با استفاده از yyy هشت تا دستور تعریف کنیم و یا ۰۰۰۱ رو بذاریم و ۸تای دیگه رو تعریف کنیم (خلاصه اینکه ۲ ضربدر ۸ تا حالت میتونیم دستور تک عملوندی تعریف کنیم.خب توی سوال گفته ۱۵تا دستور از ۱۶ تایی که میتونیم تعریف کنیم رو رزرو کردیم.پس ۱ حالتش می مونه) بنابراین این ۳ بیت yyy هم استفاده شد(بجز یه حالتش.زیرا ۱۵-۱۶=۱) حالا تعداد دستورات هیچ عملوندی رو با این zzz تعریف میکنیم.یعنی میشه ۲ به توان ۳ یا همون ۸/پس هیچ عملوندیمون میشن ۸تا.(به نکته آخری که دوستمون گفت توجه کنید)))

با تشکر !!!

RE: طول دستورات و تعداد دستورات - firouzi.s - 03 آذر ۱۳۹۰ ۰۸:۵۳ ق.ظ

مرسی
الان دیگه افتادBig Grin