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

مشکل در درک Dma - Only_God - 06 آذر ۱۳۹۰ ۰۸:۳۸ ب.ظ

سلام به همگی !
من سیستم عامل دکتر حقیقت رو می خونم مبحث Dma رو کامل متوجه نمیشم !
سوالاتم رو همراه با متن دکتر حقیقت بیان می کنم:
" در لحظاتی که Dma برای انتقال داده به (یا از) حافظه به گذرگاه داده نیاز دارد .cpu نباید از گذرگاه استفاده کند (سوال:cpu کلا چه وقت هایی از گذرگاه استفاده می کند ،آیا هنگام پردازش هم استفاده میکند ؟) تا تداخل پیش نیاید بنابراین به ناچار cpu به اندازه یک سیکل گذرگاه ،بیکار می ماند (چرا یک سیکل ؟ اصلا یک سیکل یعنی چقدر ؟ cpu قبل از این یک سیکل یعنی می توانسته از گذرگاه استفاده کند ؟ )تا انتقال انجام شود ،گاهی گفته می شود که Dma سیکل های پردازنده را می دزدد(cycle stealing) ،توجه کنید که این یک وقفه نیست و نیاز به ذخیره در پشته ندارد بدیهی است که در کل ،کارایی سیستم افزایش خواهد یافت . "
مگه انتقال اطلاعات از طریق گذرگاه انجام نمیشه پس وقتی اطلاعات داره منتقل میشه خب cpu نمیتونه از گذرگاه استفاده کنه نه یک سیکل بلکه چند سیکل اما چرا بالا گفته فقط یک سیکل ؟

در پایان از دوستان می خوام اگه نکته جالبی یا سوال تستی از Dma می دونن اینجا بیارن تا انشالله در بحث Dma ابهام وسوالی نباشه !

مشکل در درک Dma - hkarimi - 06 آذر ۱۳۹۰ ۰۹:۲۴ ب.ظ

سلام به مهندس بزرگوار.
اجازه بدید یه نکته ریز رو بگم . شاید کمک کرد. DMA یا Direct Memory Access همینن طور که از اسمش مشخصه دسترسی مستقیم به حافظه هستش. جالب اینجاس که اولویت دسترسیش به حافظه از خود CPU هم بیشتره‌!!!
به این دلیل DMA از وقفه بهتره که‌، توی دستگاه های سریع، دستگاه‌ها زودی کارشونو انجام میدن و میان سراغ CPU. هی کارشونو انجام میدن هی میان سراغ CPU .
انقد میان که CPU کلافه میشه و میگه بابا من دیگه کاریت ندارم. برو هر کار که دوس داری بکن.(البته لحنش یکم تند تره ولی جهت رعایت شأن سایت اینجوری گفتم) اگه ببینمت نوبت خودمم مال تو.
خلاصه اون دستگاهه میگه خیلیم خوبه (کور از خدا چی میخواد؟؟!). شرو میکنه به ارسال و دیافت و دیگه وفقه نمیددددددددددده تااااااااااااا وقتی که کارش تموم شه. دیگه آخر کار به CPU میگه حاجی کار ما تمومه...
پس به مراتب از وقفه بهتر کار میکنه.

من فقط اینارو میدونستم. ولی اگه کسی نکته جدیدی بلده بگه که ما هم بی نصیب نمونیم.
ممنون از لطف همگی.

RE: مشکل در درک Dma - Only_God - 06 آذر ۱۳۹۰ ۱۰:۰۳ ب.ظ

(۰۶ آذر ۱۳۹۰ ۰۹:۲۴ ب.ظ)hkarimi نوشته شده توسط:  سلام به مهندس بزرگوار.
اجازه بدید یه نکته ریز رو بگم . شاید کمک کرد. DMA یا Direct Memory Access همینن طور که از اسمش مشخصه دسترسی مستقیم به حافظه هستش. جالب اینجاس که اولویت دسترسیش به حافظه از خود CPU هم بیشتره‌!!!
به این دلیل DMA از وقفه بهتره که‌، توی دستگاه های سریع، دستگاه‌ها زودی کارشونو انجام میدن و میان سراغ CPU. هی کارشونو انجام میدن هی میان سراغ CPU .
انقد میان که CPU کلافه میشه و میگه بابا من دیگه کاریت ندارم. برو هر کار که دوس داری بکن.(البته لحنش یکم تند تره ولی جهت رعایت شأن سایت اینجوری گفتم) اگه ببینمت نوبت خودمم مال تو.
خلاصه اون دستگاهه میگه خیلیم خوبه (کور از خدا چی میخواد؟؟!). شرو میکنه به ارسال و دیافت و دیگه وفقه نمیددددددددددده تااااااااااااا وقتی که کارش تموم شه. دیگه آخر کار به CPU میگه حاجی کار ما تمومه...
پس به مراتب از وقفه بهتر کار میکنه.

من فقط اینارو میدونستم. ولی اگه کسی نکته جدیدی بلده بگه که ما هم بی نصیب نمونیم.
ممنون از لطف همگی.

مرسی دوست عزیز من تمام گیرم سر این گذرگاهه !
برای اینکه موضوع رو کامل درک کنم باید ابهاماتم که در ابتدا ذکر کردم برطرف شه !

مشکل در درک Dma - TABAN - 06 آذر ۱۳۹۰ ۱۱:۰۵ ب.ظ

سلام.


سیستم عامل و معماری‌ی خیلی به وهم ابسته هستند که به نظرم واسه درک دقیق‌تر DMA میتونید به کتاب معماری مانو مراجعه کنید.فصل سازمان ورودی خروجی کامل این مبحث رو توضیح داده که من خلاصش رو نوشتم.

سوال اولتون این هستش که cpu چه مواقعی از گذرگا استفاده میکنه:

طبق کتاب پوران پژوهش:
مهمترین تداخل cpu با کنترل کننده‌ی DMA تداخل در کنترل گذرگاه داده و آدرس متصل به حافظه می باشد که در هر لحظه توسط یکی از آن دو قابل استفاده می باشد.CPU در خلال کار کنترل کننده می تواند دستوراتی که گذرگاه نیاز ندارند را اجرا کند.

حالا چه نتیجه ای می تونیم بگیریم از جملات بالا که بر طبق کتاب پوران پژوهش هست؟
اینکه CPU وقتی گذرگاه رو در اختیار میگیره که در اختیار DMAنباشه.

سوال دومی که پرسیدید اینه که چرا یک سیکل؟

طبق کتاب پوران پژوهش و مانو:
وقتی که کنترل کننده DMA گذرگاه را دراختیار می گیرد به دو طریق می تواند انتقال داده بین حافظه و I/Oانجام دهد
(که من فقط یکی رو که الان احتیاج هست توضیح میدم)
۱- انتقال توده ای ۲- سیکل Stealing
خوب مورد ۲ رو که الان بهش نیاز داریم توضیح میدم:
در این روش در هر مرتبه یک کلمه انتقال داده میشود و دوباره گذرگاه در اختیار CPU قرار میگیرد و CPU اجرای هر عملیات خود را به اندازه‌ی یک سیکل حافظه به تاخیر می اندازد تا انتقال داده های I/O کامل گردد.
حالا بحث اینه که این یک سیکل چقدر است؟
طبق کتاب مانو:
کنترل کننده‌ی DMA برای ارتباط با CPUبه مدارهای واسط نیاز دارد.
کنترل کننده DMA دارای یک ثبات آدرس، یک شمارنده کلمات، و یک سری خطوط آدرس است.
شمارنده‌ی کلمات برای شمارش تعداد کلمات انتقال یافته است.
برای هر کلمه ای که انتقال می باید DMAیکی به ثبات آدرس خود اضافه می کند و یکی از شمارنده‌ی کلمه کم می نماید.
اگر دستگاه جانبی کند باشد DMAارتباط خود را با باس‌ها قطع می کند تا اینکه پروسسور بتواند برنامه‌ی خود را اجرا نماید و هر موقعی که دستگاه جانبی از DMA تقاضای ارتباط کرد DMA دوباره از پروسسور تقاشای باس نماید.

پس نتیجه گرفتیم که یه سیکل یعنی چقدر؟یعنی وقتی یه کلمه انتقال پیدا کنه.

به نظرم جواب سوالاتون اینا بود حالا اگه دوستان نظر دیگه ای دارند بسم الله.

RE: مشکل در درک Dma - Only_God - 06 آذر ۱۳۹۰ ۱۱:۵۰ ب.ظ

خیلی ممنون از وقتی که گذاشتید یکی دو ابهام دیگه مونده:
با توجه به مطلب شما "(روش stealing )در این روش در هر مرتبه یک کلمه انتقال داده میشود و دوباره گذرگاه در اختیار CPU قرار میگیرد و CPU اجرای هر عملیات خود را به اندازه‌ی یک سیکل حافظه به تاخیر می اندازد تا انتقال داده های I/O کامل گردد. " ،فرص کنید به اندازه ۱۰۰ کلاک سیستم ،برای اجرای همزمان cpu و dma به هرکدوم چند کلاک (یا سیکل )میرسه ؟۵۰ تا؟

RE: مشکل در درک Dma - TABAN - 07 آذر ۱۳۹۰ ۱۲:۴۵ ق.ظ

(۰۶ آذر ۱۳۹۰ ۱۱:۵۰ ب.ظ)Only_God نوشته شده توسط:  خیلی ممنون از وقتی که گذاشتید یکی دو ابهام دیگه مونده:
با توجه به مطلب شما "(روش stealing )در این روش در هر مرتبه یک کلمه انتقال داده میشود و دوباره گذرگاه در اختیار CPU قرار میگیرد و CPU اجرای هر عملیات خود را به اندازه‌ی یک سیکل حافظه به تاخیر می اندازد تا انتقال داده های I/O کامل گردد. " ،فرص کنید به اندازه ۱۰۰ کلاک سیستم ،برای اجرای همزمان cpu و dma به هرکدوم چند کلاک (یا سیکل )میرسه ؟۵۰ تا؟
خوهش میکنم.
طبق تحلیل خودم جواب میدم حالا از دوستان اگه کسی میتونه کمک کنه ممنون میشم.
به نظر من بستگی داره هر سیکلی چه تعداد کلاک رو واسه خودش داشته باشه.
مثلا توی فصلای اول معماری میخونیم که سیکل اجرای دستور I/O چهار کلاک طول میکشه.
حالا باید ببینیم سیکل انتقال داده در اینجا چقد طول میکشه.این یه بحث یه بحث دیگه به میزان کند بودن دستگاه I/O برمیگرده خوب اگه خیلی کند باشه ممکنه CPUسهم بیشتری از این کلاک‌ها رو ببره.

RE: مشکل در درک Dma - Only_God - 07 آذر ۱۳۹۰ ۰۳:۵۰ ب.ظ

(۰۷ آذر ۱۳۹۰ ۱۲:۴۵ ق.ظ)TABAN نوشته شده توسط:  
(06 آذر ۱۳۹۰ ۱۱:۵۰ ب.ظ)Only_God نوشته شده توسط:  خیلی ممنون از وقتی که گذاشتید یکی دو ابهام دیگه مونده:
با توجه به مطلب شما "(روش stealing )در این روش در هر مرتبه یک کلمه انتقال داده میشود و دوباره گذرگاه در اختیار CPU قرار میگیرد و CPU اجرای هر عملیات خود را به اندازه‌ی یک سیکل حافظه به تاخیر می اندازد تا انتقال داده های I/O کامل گردد. " ،فرص کنید به اندازه ۱۰۰ کلاک سیستم ،برای اجرای همزمان cpu و dma به هرکدوم چند کلاک (یا سیکل )میرسه ؟۵۰ تا؟
خوهش میکنم.
طبق تحلیل خودم جواب میدم حالا از دوستان اگه کسی میتونه کمک کنه ممنون میشم.
به نظر من بستگی داره هر سیکلی چه تعداد کلاک رو واسه خودش داشته باشه.
مثلا توی فصلای اول معماری میخونیم که سیکل اجرای دستور I/O چهار کلاک طول میکشه.
حالا باید ببینیم سیکل انتقال داده در اینجا چقد طول میکشه.این یه بحث یه بحث دیگه به میزان کند بودن دستگاه I/O برمیگرده خوب اگه خیلی کند باشه ممکنه CPUسهم بیشتری از این کلاک‌ها رو ببره.

پس یعنی در هنگامی که cpu , Dma به گذرگاه نیاز دارند یکی در میان از گذرگاه استفاده می کنند به نظر شما چناچه cpu نیاز به گذرگاه داشته باشد(که اغلب اوقات دارد) کارایی cpu نصف نمیشود ؟

مشکل در درک Dma - fatima1537 - 07 آذر ۱۳۹۰ ۰۴:۴۹ ب.ظ

نظر و برداشت شخصی خودم اینه که وقتی از dmaاستفاده میشه که کارمون بیشتر i/o limited هست (یعنی برنامه هایی که بیشتر ورودی خروجی دارند تا نیاز به پردازش cpu) و در نتیجه کلا cpu کمتر به گذرگاه داده نیاز داره و بیشتر پردازش میکنه و وسایل جانبی که i/o بیشتری دارند از گذرگاه استفاده میکنن

RE: مشکل در درک Dma - TABAN - 07 آذر ۱۳۹۰ ۰۵:۱۹ ب.ظ

(۰۷ آذر ۱۳۹۰ ۰۳:۵۰ ب.ظ)Only_God نوشته شده توسط:  پس یعنی در هنگامی که cpu , Dma به گذرگاه نیاز دارند یکی در میان از گذرگاه استفاده می کنند به نظر شما چناچه cpu نیاز به گذرگاه داشته باشد(که اغلب اوقات دارد) کارایی cpu نصف نمیشود ؟

به نظر بهتره یه سوال در این مورد حل کنیم تا شما بهتر متوجه بشید:
سوال ۲۹ فصل ۱۱ معماری مانو:
یک کنترال کننده DMA کلمات ۱۶ بیتی را با روش سرقت سیکل حافظه به حافظه منتقل می کند.
دستگاه ورودی کلمات را در ۲۴۰۰ حرف در ثانیه انتقال می دهد CPU نیز یک میلیون دستور در ثانیه اجرا می نماید بعلت انتقال اطلاعات توسط DMA پروسسور چقدر سرعتش کم می شود؟

جواب:
به طور متوسط CPU هر یک میکروثانیه یک دستور اجرا و به حافظه مراجعه می کند(یک میلیون دستور در ثانیه).از طرفی هر حرف با سرعت ۴۱۶/۶ (از تقسیم یک بر ۲۴۰۰)میکرو ثانیه انتقال می دهد.لذا دو حرف در ۸۳۳/۳ میکرو ثانیه وارد می شود.بنابراین سرعت CPU

۱/۸۳۳ * ۱۰۰ که میشه ۱۲% کاهش می یابد.

پس از این سوال نتیجه می گیریم که لزوما کارایی CPU نصف نمیشه.و به سرعت دستگاه I/Oمربوط میشه.