حداکثر دستورات ، مهندسی نرم افزار ۹۰ - نسخهی قابل چاپ |
حداکثر دستورات ، مهندسی نرم افزار ۹۰ - joyebright - 30 آذر ۱۳۹۴ ۰۹:۵۰ ق.ظ
سلام تو این سوال فقط یه چیز و متوجه نمیشم چرا با ۱۶ بیت نمیشه بهش آدرس دهی کرد ، مگه نگفته ۲ به توان ۱۶ کلمه ۱۶ بیتی پس ۱۶ بیت آدرس داریم . فکر کنم آوردن این جمله تو سوال : هر کلمه معادل دو واحد آدرس پذیر است یکم فهم موضوع رو برام مشکل کرده . لطفا یه توضیح بدید چرا از ۱۷ بیت برای فیلد آدرس استفاده می کنیم با تشکر فراوان |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - rad.bahar - 29 فروردین ۱۳۹۵ ۰۸:۵۴ ق.ظ
اخه من هر چی حساب و کتاب می کنم میشه ۵۱۲ تا دستور که اصلا تو گزینه ها نیست چون تعداد بیت های ادرس یک ثبات کمتر ار تعداد بیت های ادرس یک خانه حافظه است. فرض کردم که در دستور یک کلمه ای سه ثبات ادرس دهی شده اند و در دستور دو کلمه ای دو ثبات و یک خانه حافظه ادرس دهی شده اند. بیت های دستور یک کلمه ای یک بیت برای نوع ادرس دهی (ادرس دهی سه ثبات یا ادرس دهی دو ثبات و خانه حافظه) ۶ بیت برای انتخاب یکی از ۶۴ دستور ۱۶-۶-۱=۹ تعداد بیت ها برای انتخاب سه ثبات ، بنابراین برای ادرس دهی هر ثبات ۳ بیت استفاده می شود بیت های دستور دو کلمه ای یک بیت برای نوع ادرس دهی (ادرس دهی سه ثبات یا ادرس دهی دو ثبات و خانه حافظه) ۱۶ بیت برای ادرس دهی یک خانه حافظه ۳ بیت برای ادرس دهی ثبات اول ۳ بیت برای ادرس دهی ثبات دوم ۳۲-۱۶-۱-۳-۳ = ۹ بیت برای انتخاب یک دستور، که در کل دو به توان ۹ یعنی ۵۱۲ دستور می تواند انتخاب شود. خوب حالا راه حل چه اشتباهی داره. هر چند که جواب نمی دانم ولی به سوال این دوست عزیز جواب دادم شاید انگیزه ای شود تا دیگران به این سوال جواب درست را بدهند |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - Saman - 29 فروردین ۱۳۹۵ ۱۰:۲۴ ق.ظ
سلام حافظه اصلی شامل [tex]2^{16}[/tex] کلمه هست،و یه بیت هم داریم برای تعیین نوع، چرا تعیین نوع؟؟ تا بفهمیم که دستورات حافظه ای هستند یا ثباتی(این یک بیت ربطی به ۱۷ تایی شدن ندارد*دقت کنید هاااااااا*).به خاطر معادل بودن هر کلمه با دو واحد آدرس پذیرهست که باید ۱۷ بیت آدرس دهی داشته باشیم(البته فقط در دستورات دو کلمه ای این مفهوم میتونه معنا داشته باشه چرا که در دستوات یک کلمه ای آدرسی وجود نداره و فقط رجیستر ها رو داریم). پس در کل تعداد خطوط آدرس ما [tex]17[/tex] بیت است برا دستورات دو کلمه ای(هر کلمه معادل دو واحد آدرس پذیر) . دقت کنید تعداد خطوط آدرس [tex]17[/tex] بیت است و این موضوع هیچ ربطی به قالب دستور العمل ندارد. وقتی آدرس یک کلمه ای است [tex]16[/tex] بیت داریم که از این [tex]16[/tex] تا یک بیت برای تعیین نوع است و چون تعداد دستورات یک کلمه ای [tex]64=2^6[/tex] است ۶ بیت برای آن جدا میکنیم از ۱۶ بیت موجود،و یک بیت هم برای تعیین نوع جدا کردیم. [tex]9[/tex] بیت باقی مانده باید آدرسی به رجیستر ها باشند(انگار مستقیم توی ثبات های CPU نوشتیم).که میشه [tex]9\div3=3[/tex] یعنی ۳ رجیستر داریم. ------------- حالا برای دستورات دو کلمه ای : یعنی [tex]2\times16=32\: [/tex] بیت داریم.[tex]17\: [/tex] بیت را برای آدرس جدا میکنیم،این [tex]17\: [/tex] بیت از [tex]32[/tex] بیت جدا شده است.و برای آدرس دهی هست.(همونطور که دیدید در دستورات یک کلمه ای سه فیلد برای رجیستر ها داشتیم که حالا یکی از آن ها باید فیلد آدرس شود و ۱۷ بیت اندازه ی آن است و دو فیلد برای رجیستر ها(هر کدام ۳ بیت که میشود ۶ بیت) و یک ۱ بیت برای تعیین نوع؛ [tex]8[/tex] بیت باقی مانده تعیین کننده ی دستورات دو آدرسی هست. که مجموعا [tex]32[/tex] بیت میشود. نتیجه این که : برا این دست سوالات ابتدا تکلیف خودمون رو باید با یک ، دو و یا چند کلمه ای بودن مشخص کنیم(و صد البته با این موضوع که هر کلمه معادل چند واحد آدرس پذیر است معادل دو واحد آدرس پذیر بودن یعنی اضافه شدن یک بیت برای تعیین آدرس،باز هم دقت شود و با تاکید عرض کنم که این یک بیت اضافه شده ربطی به قالب دستور العمل ندارد ) و قالب دستور العمل همون اول باید ساخته بشه.بعد از رسم قالب بیت ها رو جدا میکنیم. مدرسان شریف این سوال را اشتباه پاسخ داده. و استدلالش هم افتضاح هست. دوستان مدرسانی مراقب باشند . . . |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - joyebright - 29 فروردین ۱۳۹۵ ۱۱:۳۰ ق.ظ
(۲۹ فروردین ۱۳۹۵ ۱۰:۲۴ ق.ظ)samanbeigmiri سلام ،مرسی بابت وقتی که گذاشتی و پاسخ دادی، حقیقتا شما لطف کردی کل مساله رو توضیح دادی اما ، من با کل مراحل مشکلی نداریم تو سوالمم هم گفتم فقط دلیل منطقی تبدیل ۱۶ بیت خط آدرس رو به ۱۷ بیت متوجه نمیشم ، بازم تاکید می کنم اگه سوالی مشابه بیاد طبق قواعدموجود می تونم تحلیل کنم ما مفهوم این ۱۶ بیت به ۱۷ بیت واسم ملموس نیست و نتونستم از نظر مفهومی درکش کنم ، اگه توضیحاتی داری که به فهم این موضوع کمک می کنه ممنون میشم با سپاس فراوان |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - Saman - 29 فروردین ۱۳۹۵ ۱۱:۴۵ ق.ظ
امیدوارم پاسخ رو خونده باشید، یا حداقل دوباره بخونید!!! |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - rad.bahar - 29 فروردین ۱۳۹۵ ۰۳:۱۹ ب.ظ
ممنون از جوابتان ولی من هم مثل این دوست عزیز متوجه نشدم که چرا از ۱۷ بیت و نه۱۶ بیت استفاده کرد. ممکن هست یکبار دیگر با روشی متفاوت تر این علت را دوباره توضیح دهید شاید هر دو متوجه شدیم. در ضمن این حرفی که نوشته بودید و در اینجا بازنویسی کردم یعنی چی ... به خاطر معادل بودن هر کلمه با دو واحد آدرس پذیرهست که باید ۱۷ بیت آدرس دهی داشته باشیم(البته فقط در دستورات دو کلمه ای این مفهوم میتونه معنا داشته باشه چرا که در دستوات یک کلمه ای آدرسی وجود نداره و فقط رجیستر ها رو داریم). پس در کل تعداد خطوط آدرس ما ۱۷ بیت است .... "به خاطر معادل بودن هر کلمه با دو واحد آدرس پذیرهست" یعنی چی |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - Saman - 29 فروردین ۱۳۹۵ ۰۳:۴۲ ب.ظ
انگار توی هر خونه ای که یک بیت جا داره دوتا بیت گذاشتیم،فرض کنید داریم [tex]2^2[/tex] حالا اگر هر کلمه رو معادل دو واحد آدرس پذیر بگیریم، میشه ۸ تا یعنی [tex]2^3[/tex] . همون یک بیت که اضافه بشه دقیقا معادل این در میاد که دوبرابرش کرده باشیم که میشه همون دو واحد آدرس پذیر. سوال ۴۰ پوران رو هم نگاه کنید دقیقا عین همینه. توی شبکه هم یادمه در بخش کنترل خطا یه همچین کارایی میکردن.مثلا میومد ۱۱ بیت میداد میگفت اینا معادل یک بایته. |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - reza.bsh - 29 فروردین ۱۳۹۵ ۰۴:۰۰ ب.ظ
سلام توضیحات دوست خوبم سامان درست بود. اما برای کمک به دوستان joyebright و rad.bahar واسه لمس تعداد خطوط آدرس حافظه باید بگم که بهتره این جوری به قضیه نگاه کنیم که: حافظه اصلی کلمه هارو آدرس دهی نمیکنه بلکه واحد های آدرس پذیر رو آدرس دهی میکنه.در اینجا ما [tex]2^{16}[/tex] کلمه داریم،که هر کلمه شامل ۲ واحد آدرس پذیر می باشد.پس در کل [tex]2^{17}[/tex] واحد آدرس پذیر خواهیم داشت.در نتیجه تعداد خطوط آدرس ما ۱۷ بیت خواهد شد. سامان کجای کتاب مدرسان این سوالو حل کرده؟ من هرچی گشتم نبود.صفحه چنده؟ |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - Saman - 29 فروردین ۱۳۹۵ ۰۴:۲۱ ب.ظ
در مورد سوال ۴۰ هم باید اینطوری بگیم : سوال اینه : طول کلمه ۱۶ بیت(واحد آدرس پذیر ۸ بیتی) یعنی از این ۱۶ بیته هر ۸ بیتش یک آدرسه، که در کل میشه همون سوال قبلی که هر کلمه دو واحد آدرس پذیر داره. ۱۶ میشه دو تا ۸ تایی.خب حالا ما باید به این ۱۶ کلمه ایی که به صورت دو تا ۸ بیتی هست باید آدرس بدیم.یعنی مثلا خط های آدرس رو مشخص کنیم. خود حافظه [tex]2^{15}[/tex] بوده حالا کلمات داخلش رو هر کدوم دو تیکه کردیم(همون ۸ بیتی ها) و هر کدوم هم یک آدرس میخواد. اگر یک بیت به توان اضافه کنید میشه آدرس کل این کلمات ۱۶ بیتی که دو تیکه شدن یعنی همون [tex]2^{16}[/tex]. خیلی دیگه خودمونی شد (۲۹ فروردین ۱۳۹۵ ۰۴:۰۰ ب.ظ)reza.bsh نوشته شده توسط: سلام صفحه ی ۱۷۹ مثال ۲۶/ کلا ۶۴ در آورده |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - joyebright - 30 فروردین ۱۳۹۵ ۰۵:۰۹ ق.ظ
مرسی بابت پاسخ دوستان ، مشکل حل شد فقط واسه اینکه مطمئن بشم درست قضیه رو گرفتم یه مثال از خودم میزنم ، لطف کنید اگه درسته تاییدش کنید . سایز حافظه ای [tex]2^{16}[/tex] کلمه ۳۲ بیتی (۸ واحد آدرس پذیر) است، پس طبق توضیحاتتون الان ۳۲ بیت کلمه داریم که به جای هر یک بیت ۸ بیت گذاشتیم که مجموعا میشه ۲۵۶ بیت ، پس یعنی [tex]2^3[/tex] تا افزایش بیت داریم. حالا کافی [tex]2^3\ast2^{16}[/tex] بکنیم و در نهایت ۱۹ بیت برای آدرس دهی نیاز است . سپاس |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - Saman - 30 فروردین ۱۳۹۵ ۱۰:۰۱ ق.ظ
بله همین درسته. حالا شما توی هر ۳۲ بیتی که برای یک کلمه داری هشت تا آدرس داری.(هشت واحد آدرس پذیر)یعنی برای مشخص کردن این کلمه ی ۳۲ بیتی برای هر یک کلمه ش ۸ تا آدرس درست کردی.دقت کن که اگر سوال بگه واحد آدرس پذیر ۸ بیتی خیلی فرق داره با ۸ واحد آدرس پذیر.توی اولی منظورش اینه که برای هر ۸ بیت یک ادرس بده، توی دومی میگه ۳۲ بیتت رو به ۸ قسمت تقسیم که و به هر قسمتی آدرس بده(مثال شما).یعنی توی هر خط ۸ تا آدرس تولید کن. |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - joyebright - 30 فروردین ۱۳۹۵ ۱۲:۵۰ ب.ظ
(۳۰ فروردین ۱۳۹۵ ۱۰:۰۱ ق.ظ)samanbeigmiri نوشته شده توسط: بله همین درسته.آیا مطلب زیر رو با توجه به توضیحاتتون تایید می کنید؟ تو همین مثال با واحد آدرس پذیر ۸ بیتی چون باید به هر ۸ بیت یک آدرس بدیم در نهایت باید به ۴ تا ۸ بیت آدرس بدیم پس داریم ۲ بتوان ۱۶ * ۲ بتوان ۲ که مجموع به ۱۸ بیت آدرس نیازه . سپاس مجدد |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - Saman - 30 فروردین ۱۳۹۵ ۰۱:۱۳ ب.ظ
(۳۰ فروردین ۱۳۹۵ ۱۲:۵۰ ب.ظ)joyebright نوشته شده توسط:بله درسته.هر کلمه رو ۴ قسمت میکنی.و هر قسمتش یک آدرس میخواد.یعنی تعداد آدرس هایی که لازم داری [tex]2^2=4[/tex] برابر حالت موجود که [tex]2^{16}[/tex] هست میشه.این طوری :(30 فروردین ۱۳۹۵ ۱۰:۰۱ ق.ظ)samanbeigmiri نوشته شده توسط: بله همین درسته.آیا مطلب زیر رو با توجه به توضیحاتتون تایید می کنید؟ [tex]2^{16}\times2^2[/tex] |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - joyebright - 30 فروردین ۱۳۹۵ ۰۴:۴۳ ب.ظ
(۳۰ فروردین ۱۳۹۵ ۰۱:۱۳ ب.ظ)samanbeigmiri نوشته شده توسط:(30 فروردین ۱۳۹۵ ۱۲:۵۰ ب.ظ)joyebright نوشته شده توسط:بله درسته.هر کلمه رو ۴ قسمت میکنی.و هر قسمتش یک آدرس میخواد.یعنی تعداد آدرس هایی که لازم داری [tex]2^2=4[/tex] برابر حالت موجود که [tex]2^{16}[/tex] هست میشه.این طوری :(30 فروردین ۱۳۹۵ ۱۰:۰۱ ق.ظ)samanbeigmiri نوشته شده توسط: بله همین درسته.آیا مطلب زیر رو با توجه به توضیحاتتون تایید می کنید؟ مرسی کارت خیلی درسته .راستی شما با یه نام کاربری دیگه تو سایت نبودید ؟ |
RE: حداکثر دستورات ، مهندسی نرم افزار ۹۰ - Saman - 30 فروردین ۱۳۹۵ ۰۵:۵۹ ب.ظ
بله با کاربری های amniat0101 و neghab01 و neghab001 بودم اینجا. سرچ کنید همشون میان بالا.بعدش دوس داشتم با اسم واقعیم بیام.اولیه که کلا از سال ۹۱ فک کنم عضو بودم. کلا هیچی بلد نبودم از مانشت.البته amniat0101 و neghab001غیر فعال شد همون مدتی که مانشت خراب بود.neghab01 هم که واقعا دوسش دارم خودم خرابش کردم. حالا هم هر چی به مدیرا میگم رمزشو برام نمیگن. یه بارم یادمه سر کتاب شبکه(حل تمرین فارسی راس شکایتم کردن مسدود شدم)خدایی قصدم خوبی بود. نه تبلیغ.مدیری هم که اینو میخونه وجدانن هر اطلاعاتی بخواد میدم بهش که رمز اون اکانت رو بهم بدن. |