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

شمارش تعداد کلاکها - StudentSE - 05 آذر ۱۳۹۰ ۱۱:۳۶ ق.ظ

سلام
درمورد سوالاتی که تعداد کلاک پالسها رو برای اجرای یک دستور در یک data path میخواد اگه میشه راهنمایی کنید.
توی آزمون ۵۰% پارسه هم ازش سوال اومده بود.
تشکر

شمارش تعداد کلاکها - Xilinx - 05 آذر ۱۳۹۰ ۱۲:۴۶ ب.ظ

منم واقعا توی این سوالات مشکل دارم .فکر میکنم چندتا نکته رو اگه همیشه توی این سوالات چک کنیم راه درست بدست میاد !
بعد از جواب دادن بچه‌ها یه جمع بندی میکنیم !

RE: شمارش تعداد کلاکها - homa - 08 آذر ۱۳۹۰ ۱۲:۴۵ ب.ظ

برای اجرای یک دستورات به طور کلی باید مراحل زیر طی شود:
۱)دستور از حافظه واکشی بشه
۲)مراحل اجرای دستور واکشی شده(شامل ترجمه‌ی دستور،بدست آوردن عملوندها ،انجام عملیاتی که کد عملوند مشخص میکنه)
ابتدا تک تک مراحلی که باید انجام بشه مشخص می کنیم بدون در نظر گرفتن سیکل زمانی.بعد از این مشخص می کنیم که کدوم مراحل می تونن با هم همپوشانی داشته باشن یعنی اجرای یکی به دیگری ضرر نمیزنه و حالا تعدا سیکل های ما مشخصه
من با توجه به سوال ۶۹ پارسه اونچه که فهمیدم رو می نویسم ولی نتونستم عکسش رو بذارم اگه کسی بتونه بذاره تا بقیه که پارسه ندارن هم در موردش نظر بدن ممنون میشم.Blush
مراحل را مشخص می کنیم:
۱)باید دستوراز حافظه بیرون بیاد،اول باید PC در MAR قرار بگیره چون PC مستقیم به حافظه وصل نیست.مرحله (۱)[tex]MAR\leftarrow PC[/tex]، مرحله (۲) [tex]PC\leftarrow PC 1[/tex]

۲)همیشه دستور برای اجرا باید در ثبات IR قرار بگیره‌، دستور الان میشه [tex]MEM\left [ MAR\right ][/tex] که باید به IR انقال بدیم اما را مستقیمی بین حافظه و IR وجود نداره پس مجبوریم اول بریزیم تو MDR و بعدش IR که اینجا دو مرحله داریم: مرحله(۳)[tex]MBR\leftarrow MEM\left [ MAR\right ][/tex] و مرحله(۴) [tex]IR\leftarrow MBR[/tex]
تا اینجا واکشی تموم شد حالا اجرای دستور
۳)[tex]Res\leftarrow R0[/tex]مرحله (۵)
۴)[tex]R0\leftarrow R1[/tex]مرحله (۶)
۵)[tex]R1\leftarrow Res[/tex]مرحله (۷)
مراحل ۳و ۲ میتونن همپوشانی داشته باشن‌، تو مراحل دیگه نمیتونن هم پوشان بشن چون یا اینکه ما یک باس مشترک داریم و چند مقدار رو یه باس جواب نمیده و یا اینکه در صورت همپوشان شدن مقدار‌ها ممکن اشتباه خونده یا نوشته بشه
تعداد مراحلمون شد ۶ تا پس ۶ سیکل

RE: شمارش تعداد کلاکها - مازیار صفایی - ۰۸ آذر ۱۳۹۰ ۰۱:۳۱ ب.ظ

(۰۸ آذر ۱۳۹۰ ۱۲:۴۵ ب.ظ)homa نوشته شده توسط:  برای اجرای یک دستورات به طور کلی باید مراحل زیر طی شود:
۱)دستور از حافظه واکشی بشه
۲)مراحل اجرای دستور واکشی شده(شامل ترجمه‌ی دستور،بدست آوردن عملوندها ،انجام عملیاتی که کد عملوند مشخص میکنه)
ابتدا تک تک مراحلی که باید انجام بشه مشخص می کنیم بدون در نظر گرفتن سیکل زمانی.بعد از این مشخص می کنیم که کدوم مراحل می تونن با هم همپوشانی داشته باشن یعنی اجرای یکی به دیگری ضرر نمیزنه و حالا تعدا سیکل های ما مشخصه
من با توجه به سوال ۶۹ پارسه اونچه که فهمیدم رو می نویسم ولی نتونستم عکسش رو بذارم اگه کسی بتونه بذاره تا بقیه که پارسه ندارن هم در موردش نظر بدن ممنون میشم.Blush
مراحل را مشخص می کنیم:
۱)باید دستوراز حافظه بیرون بیاد،اول باید PC در MAR قرار بگیره چون PC مستقیم به حافظه وصل نیست.مرحله (۱)[tex]MAR\leftarrow PC[/tex]، مرحله (۲) [tex]PC\leftarrow PC 1[/tex]

۲)همیشه دستور برای اجرا باید در ثبات IR قرار بگیره‌، دستور الان میشه [tex]MEM\left [ MAR\right ][/tex] که باید به IR انقال بدیم اما را مستقیمی بین حافظه و IR وجود نداره پس مجبوریم اول بریزیم تو MDR و بعدش IR که اینجا دو مرحله داریم: مرحله(۳)[tex]MBR\leftarrow MEM\left [ MAR\right ][/tex] و مرحله(۴) [tex]IR\leftarrow MBR[/tex]
تا اینجا واکشی تموم شد حالا اجرای دستور
۳)[tex]Res\leftarrow R0[/tex]مرحله (۵)
۴)[tex]R0\leftarrow R1[/tex]مرحله (۶)
۵)[tex]R1\leftarrow Res[/tex]مرحله (۷)
مراحل ۳و ۲ میتونن همپوشانی داشته باشن‌، تو مراحل دیگه نمیتونن هم پوشان بشن چون یا اینکه ما یک باس مشترک داریم و چند مقدار رو یه باس جواب نمیده و یا اینکه در صورت همپوشان شدن مقدار‌ها ممکن اشتباه خونده یا نوشته بشه
تعداد مراحلمون شد ۶ تا پس ۶ سیکل
باید اسفند دود کنید..... شما همیشه سوالهای معماری رو خوب جواب میدید.

شمارش تعداد کلاکها - Xilinx - 08 آذر ۱۳۹۰ ۰۳:۰۸ ب.ظ

آره واقعا باید اسفند دود کنیم.حقا که واسه رشته ای که دارن واسش تلاش میکنن ساخته شدن Smile

شمارش تعداد کلاکها - pos - 08 آذر ۱۳۹۰ ۰۹:۳۰ ب.ظ

(۰۸ آذر ۱۳۹۰ ۱۲:۴۵ ب.ظ)homa نوشته شده توسط:  مراحل ۳و ۲ میتونن همپوشانی داشته باشن‌، تو مراحل دیگه نمیتونن هم پوشان بشن چون یا اینکه ما یک باس مشترک داریم و چند مقدار رو یه باس جواب نمیده و یا اینکه در صورت همپوشان شدن مقدار‌ها ممکن اشتباه خونده یا نوشته بشه
تعداد مراحلمون شد ۶ تا پس ۶ سیکل

من این قسمت را دقیقا نفهمیدم. منظورتون همپوشانی دستورات ۳و۵ توی خطوط زیر هست؟

۱- MAR<-PC
۲- PC<-PC+1
۳- MDR<-MEM[MAR]
۴- IR<-MDR
۵- Res<-R0
۶- R0<-R1
۷- R1<-Res

اون جدول کدی که روی به روی مدار می کشه به چه درد میخوره؟
ممنون.

RE: شمارش تعداد کلاکها - homa - 09 آذر ۱۳۹۰ ۱۲:۳۸ ق.ظ

(۰۸ آذر ۱۳۹۰ ۰۹:۳۰ ب.ظ)pos نوشته شده توسط:  
(08 آذر ۱۳۹۰ ۱۲:۴۵ ب.ظ)homa نوشته شده توسط:  مراحل ۳و ۲ میتونن همپوشانی داشته باشن‌، تو مراحل دیگه نمیتونن هم پوشان بشن چون یا اینکه ما یک باس مشترک داریم و چند مقدار رو یه باس جواب نمیده و یا اینکه در صورت همپوشان شدن مقدار‌ها ممکن اشتباه خونده یا نوشته بشه
تعداد مراحلمون شد ۶ تا پس ۶ سیکل

من این قسمت را دقیقا نفهمیدم. منظورتون همپوشانی دستورات ۳و۵ توی خطوط زیر هست؟

۱- MAR<-PC
۲- PC<-PC+1
۳- MDR<-MEM[MAR]
۴- IR<-MDR
۵- Res<-R0
۶- R0<-R1
۷- R1<-Res

اون جدول کدی که روی به روی مدار می کشه به چه درد میخوره؟
ممنون.
نه من گفتم مراحل ۲و۳ همون دستورات دوم و سوم که نوشتید.مراحل ۵و۳ به هیچ وجه نمیشه هم پوشان بشن چون ما تا دستور رو برای اجرا آماده نکردیم که نمیشه به مرحله‌ی اجرا بریم.
در مورد جدول کناری که میکشه به نظر من منظورش اینه که تعداد مراحل اجرای یک دستور رو مشخص میکنه،یعنی چه دستوراتی تو این مسیر داده میتونه انجام بگیره و با توجه به اونا ما به هدف اصلیمون برسیم.
مثلا تو سوال بعدی پارسه اگه برای مکمل ۲ حساب کردن اگه یک کد عملیات بود که مستقیم اینکار رو میکرد لازم نبود تو دو مرحله (اول بر عکسش حساب کنیم بعد بعلاوه یک کنیم) انجام بشن.