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

محاسبه درصد کند شدن پردازنده - آسمان ابری - ۱۷ مهر ۱۳۹۲ ۰۵:۱۵ ب.ظ

راه حلی برای این مساله ؟

RE: محاسبه درصد کند شدن پردازنده - azad_ahmadi - 17 مهر ۱۳۹۲ ۰۵:۵۳ ب.ظ

سلام.

روند حل سوال به این صورت هست. اولا باید مفاهیم ارتباطات بین CPU,DMA و RAM رو خوب درک کرده باشید.
همونطورکه میدونیم، DMA ابزاری برای دسترسی مستقیم به حافظه است، و زمانهایی که گذرگاه در اختیار DMA قرار دارد، CPU حق استفاده از گذرگاه رو نخواهد داشت. دقت به این نکته مهم هست که سرعت دسترسی CPU به حافظه بیشتر از سرعت دسترسی DMA به حافظه است.
همونطور که در صورت سوال گفته، CPU با نرخ ۱ میلیون دستورالعمل در یک ثانیه واکشی را انجام میده، این یعنی که در یک ثانیه میتونه ۱ میلیون دستورالعمل رو بخونه؛ پس هر یک میکروثانیه یا هر یک میلیونیوم ثانیه ( [tex]10^{-6}[/tex] ) میتواند یک مراجعه به حافظه داشته باشد. دقت کنید که نوشتم "می تواند"؛ اما با توجه به اینکه همیشه گذرگاه در خدمت CPU نیست و بعضا DMA از اون استفاده میکنه، این زمان دستکاری میشه.
در صورت سوال گفته شده که DMA با نرخ ۱۶Kbps میتونه از دستگاه خارجی ب حافظه ارتباط داشته باشه، این یعنی که تعداد کاراکتر هایی که در یک ثانیه انتقال داده میشوند برابر هست با [tex]16Kbps = \frac{16000}{8} = 2000[/tex] (اینجا ۲ نکته وجود داره، کیلوبایت رو ۱۰۰۰ درنظر میگیریم و نه ۱۰۲۴، و اینکه هر کاراکتر ۸ بیتی هست، و برای اینکه بفهمیم چند کاراکتر انتقال داده شده، تقسیم بر ۸ میکنیم) که در نهایت میشه ۲۰۰۰ کاراکتر را در یک ثانیه میتوان از DMA به RAM انتقال داد.

حالا دقت کنید که اگر CPU بخواد به RAM دسترسی داشته باشه، هر ۱/۱۰۰۰۰۰۰ میتونه این کار رو انجام بده، اما اگر DMA بخواد اینکار رو انجام بده هر ۱ ثانیه ۲۰۰۰ کاراکتر میتونه انتقال بده، پس به ازای هر ۵۰۰ دستور که CPU انجام میده، یک دستور هم DMA انجام میده. (برای انتقال ۱میلیون دستور نیاز به ۵۰۰ثانیه هست) .
در کل ۱/۵۰۰ * ۱۰۰% برابر هست با ۰/۲% . که گذینه ۴ میشود جواب درست.

جایی سوال داشتید بگید بیشتر توضیح میدم.

RE: محاسبه درصد کند شدن پردازنده - آسمان ابری - ۱۷ مهر ۱۳۹۲ ۰۶:۱۵ ب.ظ

حالا دقت کنید که اگر CPU بخواد به RAM دسترسی داشته باشه، هر ۱/۱۰۰۰۰۰۰ میتونه این کار رو انجام بده، اما اگر DMA بخواد اینکار رو انجام بده هر ۱ ثانیه ۲۰۰۰ کاراکتر میتونه انتقال بده، پس به ازای هر ۵۰۰ دستور که CPU انجام میده، یک دستور هم DMA انجام میده. (برای انتقال ۱میلیون دستور نیاز به ۵۰۰ثانیه هست) .
در کل ۱/۵۰۰ * ۱۰۰% برابر هست با ۰/۲% . که گذینه ۴ میشود جواب درست.

جایی سوال داشتید بگید بیشتر توضیح میدم.
[/quote]

واااااااااااااااااااااای واقعا ممنون خیلی من الان خوشحالم چون تازه مفهومشا یاد گرفتم ولی اصلا از این جملات اخریتونو هیچی متوجه نشدم می شه یکم بیشتر توضیح بدینUndecided
ببخشید واقعا
ممنونم

RE: محاسبه درصد کند شدن پردازنده - azad_ahmadi - 17 مهر ۱۳۹۲ ۰۶:۳۱ ب.ظ

(۱۷ مهر ۱۳۹۲ ۰۶:۱۵ ب.ظ)آسمان ابری نوشته شده توسط:  حالا دقت کنید که اگر CPU بخواد به RAM دسترسی داشته باشه، هر ۱/۱۰۰۰۰۰۰ میتونه این کار رو انجام بده، اما اگر DMA بخواد اینکار رو انجام بده هر ۱ ثانیه ۲۰۰۰ کاراکتر میتونه انتقال بده، پس به ازای هر ۵۰۰ دستور که CPU انجام میده، یک دستور هم DMA انجام میده. (برای انتقال ۱میلیون دستور نیاز به ۵۰۰ثانیه هست) .
در کل ۱/۵۰۰ * ۱۰۰% برابر هست با ۰/۲% . که گذینه ۴ میشود جواب درست.

جایی سوال داشتید بگید بیشتر توضیح میدم.

واااااااااااااااااااااای واقعا ممنون خیلی من الان خوشحالم چون تازه مفهومشا یاد گرفتم ولی اصلا از این جملات اخریتونو هیچی متوجه نشدم می شه یکم بیشتر توضیح بدینUndecided
ببخشید واقعا
ممنونم
[/quote]

خواهش میکنم.
ببینید، هر ۱میکروثانیه معادل هست با ۱/۱/۰۰۰/۰۰۰ثانیه(یک میلیونیوم ثانیه). یعنی وقتی گفته میشه پردازنده ۱میلیون دستور العمل رو در یک ثانیه واکشی میکنه، یعنی هر ۱میکروثانیه یک مراجعه به حافظه داره. اما اگه DMA بخواد عملیاتی رو انجام بده، هر یک ثانیه، فقط میتونه ۲۰۰۰ کاراکتر رو از حافظه بخونه.(این درحالی هست که CPU میتونه ۱میلیون دستور العمل رو از حافظه بخونه). پس به عبارتی با وجود DMA وقتی بخواهیم ۱/۰۰۰/۰۰۰ دستور العمل رو رد وبدل کنیم، نیاز به ۵۰۰ ثانیه زمان داریم.(یک تناسب ساده هست، ۱ثانیه ۲۰۰۰کاراکتر، ۵۰۰ثانیه ۱میلیون کاراکتر) پس ۱/۵۰۰ سرعت تضعیف میشه. و اگه بخواهیم بر اساس % حساب کنیم، ۱/۵۰۰ رو در ۱۰۰% ضرب میکنیم.

RE: محاسبه درصد کند شدن پردازنده - آسمان ابری - ۱۸ مهر ۱۳۹۲ ۱۲:۲۹ ب.ظ

(۱۷ مهر ۱۳۹۲ ۰۶:۳۱ ب.ظ)azad_ahmadi نوشته شده توسط:  
(17 مهر ۱۳۹۲ ۰۶:۱۵ ب.ظ)آسمان ابری نوشته شده توسط:  حالا دقت کنید که اگر CPU بخواد به RAM دسترسی داشته باشه، هر ۱/۱۰۰۰۰۰۰ میتونه این کار رو انجام بده، اما اگر DMA بخواد اینکار رو انجام بده هر ۱ ثانیه ۲۰۰۰ کاراکتر میتونه انتقال بده، پس به ازای هر ۵۰۰ دستور که CPU انجام میده، یک دستور هم DMA انجام میده. (برای انتقال ۱میلیون دستور نیاز به ۵۰۰ثانیه هست) .
در کل ۱/۵۰۰ * ۱۰۰% برابر هست با ۰/۲% . که گذینه ۴ میشود جواب درست.

جایی سوال داشتید بگید بیشتر توضیح میدم.

ببینید، هر ۱میکروثانیه معادل هست با ۱/۱/۰۰۰/۰۰۰ثانیه(یک میلیونیوم ثانیه). یعنی وقتی گفته میشه پردازنده ۱میلیون دستور العمل رو در یک ثانیه واکشی میکنه، یعنی هر ۱میکروثانیه یک مراجعه به حافظه داره. اما اگه DMA بخواد عملیاتی رو انجام بده، هر یک ثانیه، فقط میتونه ۲۰۰۰ کاراکتر رو از حافظه بخونه.(این درحالی هست که CPU میتونه ۱میلیون دستور العمل رو از حافظه بخونه). پس به عبارتی با وجود DMA وقتی بخواهیم ۱/۰۰۰/۰۰۰ دستور العمل رو رد وبدل کنیم، نیاز به ۵۰۰ ثانیه زمان داریم.(یک تناسب ساده هست، ۱ثانیه ۲۰۰۰کاراکتر، ۵۰۰ثانیه ۱میلیون کاراکتر) پس ۱/۵۰۰ سرعت تضعیف میشه. و اگه بخواهیم بر اساس % حساب کنیم، ۱/۵۰۰ رو در ۱۰۰% ضرب میکنیم.
اینجا نمی تونیم اینو بگیم که ، CPU میتواند ۱۰۰۰۰۰۰دستور العمل را در یک ثانیه واکشی کند، اما DMA میتواند ۲۰۰۰دستور را در یک ثانیه انتقال بده، پس در کل ۲/۱۰۰۰ سرعت سیستم بخاطر استفاده از DMA هدر میرود. اگر ۲/۱۰۰۰ را در ۱۰۰% ضرب کنیم جواب بدست امده ۰/۲%خواهد بود که جواب سوال هم هست. و دیگه اون توضیحات بالا را به کار نبریم؟ البته من این جا را طبق سوال قبلی که خودتون زحمتشو انجام داده بودین نوشتم
چون من واقعا گیج می شوم توضیحات بالا

RE: محاسبه درصد کند شدن پردازنده - azad_ahmadi - 19 مهر ۱۳۹۲ ۰۲:۰۶ ق.ظ

(۱۸ مهر ۱۳۹۲ ۱۲:۲۹ ب.ظ)آسمان ابری نوشته شده توسط:  
(17 مهر ۱۳۹۲ ۰۶:۳۱ ب.ظ)azad_ahmadi نوشته شده توسط:  
(17 مهر ۱۳۹۲ ۰۶:۱۵ ب.ظ)آسمان ابری نوشته شده توسط:  حالا دقت کنید که اگر CPU بخواد به RAM دسترسی داشته باشه، هر ۱/۱۰۰۰۰۰۰ میتونه این کار رو انجام بده، اما اگر DMA بخواد اینکار رو انجام بده هر ۱ ثانیه ۲۰۰۰ کاراکتر میتونه انتقال بده، پس به ازای هر ۵۰۰ دستور که CPU انجام میده، یک دستور هم DMA انجام میده. (برای انتقال ۱میلیون دستور نیاز به ۵۰۰ثانیه هست) .
در کل ۱/۵۰۰ * ۱۰۰% برابر هست با ۰/۲% . که گذینه ۴ میشود جواب درست.

جایی سوال داشتید بگید بیشتر توضیح میدم.

ببینید، هر ۱میکروثانیه معادل هست با ۱/۱/۰۰۰/۰۰۰ثانیه(یک میلیونیوم ثانیه). یعنی وقتی گفته میشه پردازنده ۱میلیون دستور العمل رو در یک ثانیه واکشی میکنه، یعنی هر ۱میکروثانیه یک مراجعه به حافظه داره. اما اگه DMA بخواد عملیاتی رو انجام بده، هر یک ثانیه، فقط میتونه ۲۰۰۰ کاراکتر رو از حافظه بخونه.(این درحالی هست که CPU میتونه ۱میلیون دستور العمل رو از حافظه بخونه). پس به عبارتی با وجود DMA وقتی بخواهیم ۱/۰۰۰/۰۰۰ دستور العمل رو رد وبدل کنیم، نیاز به ۵۰۰ ثانیه زمان داریم.(یک تناسب ساده هست، ۱ثانیه ۲۰۰۰کاراکتر، ۵۰۰ثانیه ۱میلیون کاراکتر) پس ۱/۵۰۰ سرعت تضعیف میشه. و اگه بخواهیم بر اساس % حساب کنیم، ۱/۵۰۰ رو در ۱۰۰% ضرب میکنیم.
اینجا نمی تونیم اینو بگیم که ، CPU میتواند ۱۰۰۰۰۰۰دستور العمل را در یک ثانیه واکشی کند، اما DMA میتواند ۲۰۰۰دستور را در یک ثانیه انتقال بده، پس در کل ۲/۱۰۰۰ سرعت سیستم بخاطر استفاده از DMA هدر میرود. اگر ۲/۱۰۰۰ را در ۱۰۰% ضرب کنیم جواب بدست امده ۰/۲%خواهد بود که جواب سوال هم هست. و دیگه اون توضیحات بالا را به کار نبریم؟ البته من این جا را طبق سوال قبلی که خودتون زحمتشو انجام داده بودین نوشتم
چون من واقعا گیج می شوم توضیحات بالا

به نوعی میتونه درست باشه. درکل باید تناسب را رعایت کرد. وقتی از CPU بصورت تنها استفاده میشه، هیچ هدررفتی نداریم، اما باید وقتی DMA به سیستم اضافه میشه چقدر میتونه وقت پردازنده رو هدر بده. اینو باید درک کنیم.