اگر لازم داشته باشيد ميتونم خط به خط کدها رو براتون شرح بدم . :read:
DMA چیست؟
دسترسی مستقیم به حافظه یا DMA یکی از تکنولوژی های پرکاربرد امروزی است و
از این رو بر علم آموزان این حوزه واجب است که بدانند DMA چیست.
بدون حضور DMA پردازش ها بسیار کند خواهند بود و پردازنده ها برای هر عمل کوچکی مدت طولانی درگیر خواهند بود.
در این مقاله ما به طور خلاصه به بررسی DMA، کنترل کننده DMA، رجیستر ها، مزایا و معایب خواهیم پرداخت.
با ما همراه باشید.
1# DMA چیست؟
در پاسخ به سوال DMA چیست می توان گفت که
DMA در واقع سیستمی برای انتقال داده ها به صورت مستقیم بین حافظه و دستگاه های جانبی و بدون استفاده از پردازنده است.
واحدی که فعالیت دسترسی مستقیم به حافظه را کنترل می کند،
کنترلر DMA مخفف عبارت Direct Memory Access نامیده می شود.
پردازنده گذرگاه سیستم را برای چند چرخه کلاک کنار می گذارد؛
بنابراین، کنترلر DMA می تواند وظیفه انتقال داده را از طریق گذرگاه سیستم انجام دهد.
اشکال روش های دیگر انتقال داده این است که برای انتقال یک بلوک بزرگ از داده مفید نیستند؛
اما کنترلر DMA این کار را امکان پذیر می کند و انتقال داده را با سرعت بیشتری انجام می دهد.
بدون DMA، هنگامی که پردازنده از ورودی/خروجی برنامه ریزی شده استفاده می کند،
به طور معمول در کل مدت زمان خواندن یا نوشتن، اشغال شده است؛
بنابراین برای انجام کارهای دیگر در دسترس نیست.
با DMA، پردازنده شروع به انتقال اطلاعات کرده و
در همین حین، درخواست ها و عملیات خواسته شده دیگر را نیز به موازات انجام می دهد.
پس از پایان عملیات انتقال، از کنترل کننده DMA وقفه ای را دریافت می کند.
این ویژگی در هر زمان که CPU نمی تواند با سرعت انتقال داده مطابقت داشته باشد یا
هنگامی که CPU نیاز به انجام کار دارد در حالی که منتظر انتقال داده I/O نسبتاً کند است، مفید است.
بسیاری از سیستم های سخت افزاری همه تعاریف DMA امروزه از DMA استفاده می کنند.
2# منظور از مدهای عملکردی در DMA چیست؟
در این مرحله بررسی می کنیم که حالت های عملکرد در DMA چیست و هر کدام چگونه عمل می کنند.
کنترلر DMA داده ها را در 3 حالت منتقل می کند:
1-2# حالت انفجاری ( Burst mode)
در حالت انفجاری، کل مجموعه داده در یک توالی منتقل می شود.
به عبارتی، هنگامی که کنترلر DMA کنترل گذرگاه سیستم را به دست می آورد،
پس از اتمام انتقال داده، گذرگاه سیستم را آزاد می کند.
تا آن زمان CPU باید منتظر گذرگاه سیستم باشد.
وقتی کنترل کننده DMA به گذرگاه سیستم از طریق CPU دسترسی پیدا کرد،
ابتدا همه بایت های انتقالی را فرستاده و سپس گذرگاه های سیستم را آزاد می کند.
در این حالت، پردازنده برای مدت زمان نسبتاً طولانی غیرفعال می شود.
این حالت “حالت انتقال بلوک” نیز نامیده می شود.
2-2# حالت سرقت چرخه ( Cycle stealing mode)
کاربرد این حالت از DMA در موقعیت هایی است که
غیرفعال ماندن طولانی مدت CPU امکان پذیر نیست.
در حالت سرقت چرخه مشابه حالت قبل، کنترل کننده DMA با استفاده از سیگنال های BR یا Bus Request و
BG یا Bus Grant که دو سیگنال کنترل کننده رابط بین CPU و کنترل کننده DMA هستند، بر گذرگاه تسلط می یابد.
با این حال، در حالت سرقت چرخه، پس از یک بایت انتقال داده، کنترل گذرگاه سیستم از طریق BG به پردازنده کاهش می یابد.
سپس به طور مداوم مجدداً از طریق BR درخواست می شود و
یک بایت داده در هر درخواست منتقل می شود تا زمانی که کل مجموعه داده منتقل گردد.
در اصل در این حالت، کنترل کننده DMA، پردازنده را مجبور می کند تا
عملکرد خود را متوقف کرده و کنترل گذرگاه را برای مدت کوتاهی به کنترلر DMA واگذار کند.
پس از انتقال هر بایت، کنترلر DMA گذرگاه را رها می کند و
سپس مجدداً گذرگاه سیستم را درخواست می کند.
در این حالت، ابتدا CPU یک دستورالعمل را اجرا کرده، سپس DMA از گذرگاه برای انتقال یک داده استفاده می کند.
داده ها به همان سرعت منتقل نمی شوند؛
اما پردازنده برای مدت طولانی در حالت پشت سر هم غیرفعال نیست.
حالت سرقت چرخه در سیستم هایی کاربرد دارد که
کنترل کننده های سیستم، کنترل داده ها را در زمان واقعی انجام می دهند.
3-2# حالت شفاف ( Transparent mode)
انتقال حالت شفاف بیشترین زمان را برای انتقال مجموعه ای از داده ها صرف می کند.
با این حال از نظر عملکرد کلی سیستم، کارآمدترین حالت است.
در حالت شفاف، زمانی که گذرگاه های سیستم مورد استفاده نیستند،
داده ها از طریق کنترل کننده DMA منتقل می شوند.
مزیت اصلی حالت شفاف این است که CPU هرگز اجرای برنامه های خود را متوقف نمی کند و
انتقال DMA از نظر زمان رایگان است.
با این وجود، عیب این روش این است که وضعیت گذرگاه ها باید توسط CPU مشخص شود که
این امر یاعث پیچیدگی سیستم می شود.
نام دیگر این حالت “حالت انتقال داده مخفی DMA” است.
3# نحوه عملکرد DMA
در قدم بعدی لازم است بدانیم که الگوریتم انتقال داده در DMA چیست و چگونه اتفاق می افتد.
کنترلر DMA یک واحد سخت افزاری است که به دستگاه های ورودی/خروجی اجازه می دهد،
بدون مشارکت پردازنده مستقیماً به حافظه دسترسی پیدا کنند.
پردازنده آدرس شروع و تعداد کلمات بلوک داده را که از حافظه به کنترلر DMA یا برعکس منتقل می شوند،
ارائه می دهد و گذرگاه را برای کنترل کننده DMA و انتقال بلوک داده ها آزاد می کند.
DMA را می توان به طرق مختلف پیکربندی کرد.
ممکن است بخشی از دستگاه های ورودی/خروجی جداگانه باشند و
یا همه لوازم جانبی متصل به سیستم یک کنترلر DMA مشترک داشته باشند.
عملکرد DMA به شرح زیر است:
- هر زمان که یک دستگاه ورودی/خروجی بخواهد داده ها را به حافظه یا از حافظه منتقل کند،
درخواست DMA (DRQ) را به کنترل کننده DMA ارسال می کند.
کنترلر DMA این DRQ را می پذیرد و از CPU می خواهد تا
با ارسال درخواست Hold (HLD) چند چرخه ساعت را نگه دارد. - CPU درخواست Hold (HLD) را از کنترلر DMA دریافت و گذرگاه را رها می کند و
تأییدیه Hold (HLDA) را به کنترلر DMA ارسال می کند. - پس از دریافت تأییدیه نگهدارنده (HLDA)، کنترلر DMA به دستگاه ورودی/خروجی (DACK) اعلام می کند که
انتقال داده ها قابل انجام است و کنترلر DMA کنترل گذرگاه سیستم را بر عهده می گیرد و
داده ها را به یا از حافظه منتقل می کند. - هنگامی که انتقال داده ها انجام شد، DMA یک وقفه ایجاد می کند تا
به پردازنده اطلاع دهد که کار انتقال داده به پایان رسیده است و
پردازنده می تواند دوباره کنترل گذرگاه را در دست گرفته و پردازش را در جایی که مانده است آغاز کند.
4# مزایا و معایب DMA چیست؟
تا این جا آموختیم که DMA یک روش انتقال داده بین حافظه اصلی و دستگاه های جانبی است که
داده ها را بدون مشارکت پردازنده به حافظه منتقل می کند.
در مرحله آخر، برای داشتن اطلاعات بیشتر درباره کاربردهای مناسب DMA باید بدانیم که
مزایا و معایب DMA چیست و با استفاده از آن ها کاربرد مناسب آن را پیدا کنیم.
مزایا:
- این قابلیت به یک دستگاه جانبی اجازه می دهد تا بدون عبور از CPU از حافظه بخواند و یا در آن بنویسد.
- می توان کار بر روی بخش دیگری را پیش برد در حالی که محیط جانبی می تواند حافظه را پر کند.
- انتقال داده ها بدون دخالت پردازنده باعث افزایش سرعت عملیات خواندن و نوشتن می شود.
- DMA چرخه ساعت را برای خواندن یا نوشتن یک بلوک داده کاهش می دهد.
- پیاده سازی DMA همچنین بار عملیات پردازنده را کاهش می دهد.
معایب:
- برای انجام این عملیات سیستم نیاز به یک کنترلر DMA دارد که هزینه سیستم را افزایش می دهد.
- در انسجام حافظه cache اختلال به وجود می آورد.
مقاله بالا بخشی از مطالب گسترده برنامه نویسی میکروکنترلر ARM است.
برای یادگیری صفر تا صد این حوزه به آموزش جامع میکروکنترلر آرم مراجعه کنید.
برای مشاهده توضیحات کامل بسته کلیک کنید.
اگر به دنبال یاد گرفتن مهارت بیشتر و افزایش درآمد هستید،
برای دریافت آموزش های رایگان مرتبط با حوزه علاقهمندی خود فقط کافیه فرم رو تکمیل کنید.
وضعیت شغلی خود را انتخاب کنید:
نظرتون درباره این مقاله چیه؟
ما رو راهنمایی کنید تا اون رو کامل تر کنیم و نواقصش رو رفع کنیم.
توی بخش دیدگاه ها منتظر پیشنهادهای فوق العاده شما هستیم.
درباره نویسنده : غزل رحمانیان
کارشناسی مهندسی الکترونیک از دانشگاه علم و صنعت. به الکترونیک گرایش دیجیتال علاقه مندم و سعی دارم با نوشتن محتواهای آموزشی در سایت نماتک، به نشر علم و یادگیری کمک کنم.
DMA چیست؟
آیا شما به دنبال معنی DMA هستید؟ در تصویر زیر می توانید تعاریف عمده DMA را ببینید. اگر می خواهید، می توانید فایل تصویری را برای چاپ نیز دانلود کنید، یا می توانید آن را با دوستان خود از طریق فیس بوک، توییتر، Pinterest، گوگل و غیره به اشتراک بگذارید. برای دیدن همه معانی DMA، لطفا پایین بروید. لیست کامل تعاریف در جدول زیر به ترتیب حروف الفبا نشان داده شده است.
معانی عمده DMA
تصویر زیر بیشترین استفاده از معانی DMA را ارائه می دهد. شما می توانید فایل تصویری را در قالب PNG برای استفاده آفلاین استفاده کنید یا از طریق ایمیل آن را به دوستانتان ارسال کنید.اگر شما یک وب مستر وب سایت غیر تجاری هستید، لطفا تصویری از تعاریف DMA را در وب سایت خود منتشر کنید.
همه تعاریف DMA
همانطور که در بالا ذکر شد، تمام مقادیر DMA را در جدول زیر مشاهده خواهید کرد. لطفا توجه داشته باشید که همه تعاریف در لیست الفبایی فهرست شده اند.شما می توانید بر روی لینک ها در سمت راست کلیک کنید تا اطلاعات دقیق هر تعریف را ببینید، از جمله تعاریف به زبان انگلیسی و زبان محلی خود.
کاربرد ابزارهای PTI و DMA در امواج الیوت
با استفاده از آنالیزور موج الیوت بسیاری از رالیها و نزولها تحت عنوان موج ۳ طبقهبندی خواهند شد. زمانی که موج ۳ ایجاد میشود بر اساس تئوری موج الیوت باید به دنبال موج ۴ اصلاحی (Retracement) باشیم که دنبال آن حرکت دوم در مسیر ترند بازار ایجاد شود که این فاز موج ۵ نام دارد.
الگوهای بالا توالی ۵ موج را تکمیل کردند و از میزان مورد انتظار نیز فراتر رفتهاند. بههرحال زمانی که الگوها در حال تکمیلاند تریدر با مساله مشکلی در پایان موج ۴ اصلاحی مواجه است که این مسأله بهاینعلت است که در موارد زیادی این حرکت دوم به وقوع نمیپیوندد.
تحقیقات در این سالها ادامه یافت و ما موفق به طراحی PTI (Profit Taking Index) شدیم ابزار PTI مومنتوم Buy ها و Sell های موج ۳ را با موج ۴ مقایسه میکند. سپس این مقایسه به الگوریتمی داده میشود که عدد PTI را محاسبه میکند.
مثال ۱: الگوی ۵ موج صحیح
بهطور آماری اگر PTI بالاتر از ۳۵ باشد بازار تمایل شدیدی دارد کهموج ۵ یا دومین موج حرکت را بسازد.
مثال ۲: الگوی ۵ موج نادرست
بهطور آماری اگر PTI کمتر از ۳۵ باشد بازار بهطورمعمول قادر نخواهد بود که موج ۵ یا دومین موج فاز حرکت را ایجاد کند.
مثال ۳: الگوی موج پنجم ناقص : سقف دوقلو
اگر PTI کمتر از ۳۵ بود و بازار در حال ساخت موج ۵ بود احتمال تشکیل سقف دوقلو بسیار زیاد است.
اضافه کردن کانالهای موج چهارم
کانالهای موج چهارم ویژگی دیگری است که همراه PTI میباشد. ابزار PTI اساساً از طریق مومنتوم بای ها و سل ها در مقاطع متفاوت به دست میآید. کانالهای موج چهارم از طریق زمان به دست میآیند. بعد از یک رالی بزرگ فاز اصلاح (Retracement) اجازه میدهد که میزان مشخصی از زمان بگذرد تا دومین فاز حرکت (موج ۵) آغاز شود.
مطالعات آماری نشان میدهد که اگر فاز اصلاح (Retracement) زمان زیادی را به طول انجامد دومین موج حرکت از اثرات اصلیاش کاسته میشود. کانالهای موج چهارم سه خط بر اساس قیمت و زمان هستند.
اگر موج چهارم اصلاحی (Retracement) بالای کانالهای موج چهارم باشد انتظار برای یک موج حرکت دوم قوی زیاد است.
اگر موج چهارم اصلاحی (Retracement) زیر کانالهای موج چهارم باشند انتظار برای موج حرکت دوم قوی خیلی کم خواهد بود.
موضوع: DMA چیست؟ افزایش سرعت.
سلام
DMA یک قسمتی از میکروکنترلر ARM است که می تواند بعضی از کارها را برعهده بگیرد. در واقع DMA می تواند باعث کمتر شدن کار پردازشگر شود و سرعت میکروکنترلر را در نهایت بالا ببرد البته بعضی از بخش های میکروکنترلر می توانند همه تعاریف DMA با DMA کار کنند!!
حال اینکه چگونه می توان از این بخش استفاده کرد را بنده بلد نیستم اگر از اساتید کسی بتواند کمک کند ممنون می شوم. :icon_razz:
دکتر چمران در 1311 در تهران متولد شد
وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.
پاسخ : DMA چیست؟ افزایش سرعت.
واقعیتش بحث dma خیلی مهم است و من تعجب می کنم که چرا اینجا کسی زیاد در مورد این موضوع بحث و گفت و گو نمی کند.
از اساتید و کاربران خواهش می کنم مباحثی را بیان کنند. :rolleyes:
دکتر چمران در 1311 در تهران متولد شد
وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.
پاسخ : DMA چیست؟ افزایش سرعت.
خیلی سادست
کلیات : آدرسهای شروع انتقال و تعداد انتقال و نوع Trigger و یا Interrupt را تنظیم میکنی و انتقال بین دو peripheral صورت میگیره
برای جزییات باید روی مثال های خاص توضیح داد
یک محدودیت : از همه DMA ها نمیشه همزمان استفاده کرد. بستگی به تعداد لایه های باسهای داخلی داره
دانلود کتاب رایگان ARM به زبان فارسی :
پاسخ : DMA چیست؟ افزایش سرعت.
سلام
می شه یک مثال ساده بزنید منظورم برنامه ی ساده ای که از اون من یاد یگیرم
با تشکر از کاربر محترم elecMicro :wow:
دکتر چمران در 1311 در تهران متولد شد
وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.
پاسخ : DMA چیست؟ افزایش سرعت.
من احتیاج دارم از اس رم 4kb را باdma به ssp0 منتقل کنم.
میشه راهنمایی کنید
پاسخ : DMA چيست؟ افزايش سرعت.
من يک نمونه برنامه از dma قرار دادم مطالعه بفرماييد مشکلي بود در خدمتم :job:
پاسخ : DMA چیست؟ افزایش سرعت.
پاسخ : DMA چيست؟ افزايش سرعت.
اگر لازم داشته باشيد ميتونم خط به خط کدها رو براتون شرح بدم . :read:
اما اگر دنبال مفهوم DMA هستيد بحث فرق ميکنه .
بازم هر کمکي خواستيد من هستم سعي ميکنم در حد توانم ياري برسونم .. :agree:
پاسخ : DMA چيست؟ افزايش سرعت.
سلام خيلي از بايت اينکه در اين بحث شرکت کرددي متشکرم
سوالي که بنده و يا بيشتر افراد را (از نظر بنده) مشغول کرده اينکه اين dma چگونه را اندازي مي شود و چگونه کار مي کند
تا آنجايي که من مي دونم dma به همه تعاریف DMA cpu کار ندارد
و مثلا اگر آي سي داراي يک باس dma در قسمت GPIO داشته باشد مي تواند اطلاعات حافظه را مطابق يک اصولي انتقال دهد.
خب حالا چگونه اين اتفاق مي افتد من مي خواهد بودنم و حالا با چه سرعتي مي تواند اين کار را انجام دهد مثلا مي خواهم اطلاعت 0xFFFF FFF5 تا 0xFFFF FFFF که مثلا حافظه فلش هست را بايت بايت به gpio منتقل کنم با تشکر
دکتر چمران در 1311 در تهران متولد شد
وي در زمان اقامت در آمريکا انجمن اسلامي آمريکا را تأسيس کرد که منجر به قطع بورسيه وي توسط شاه شد.
او با اينکه يکي از دانشمندان مطرح آمريکا به حساب مي آمد بدون توجه به مدرک به مصر رفت و آموزش نظامي ديد.
پاسخ : DMA چيست؟ افزايش سرعت.
DMA يا دسترسي مستقيم به حافظه واحديه که امروزه توي ميکروکنترلر ها ميشه ديد ! ولي هميشه هم به صورت يک واحد مستقل طراحي نشده و به عنوان بخشي از يک واحد ديگه در نظر گرفته شده ! مثلا dma در spi و يا dma در usart !
با يه مثال ساده کاربرد dma رو توضيح مي دم !
فرض کنيد توي يه پروژه قراره ميکرو با کامپيوتر ارتباط برقرار کنه و در هر ارتباط يک بسته داده ي 10 بايتي ردوبدل بشه و ميکرو هم بايد بقيه کار رو هم انجام بده !
خب يکي از روش ها اينه که پورت سريال رو توي حالت وقفه قرار بديم همه تعاریف DMA و با دريافت هر کارکتر ميکرو دچار وقفه بشه و کارکتر دريافتي رو ذخيره کنه و بعد دوباره به کاراش برسه ! و وقتي 10 تا بايت رو گرفت ، دستورات مربوطه رو انجام بده پس ميکرو حداقل 10 بار دچار وقفه مي شه !
شايد براي اين حجم داده اتفاق خاصي پيش نياد و اصلا هم مهم نباشه ! ولي اگه حجم داده 1000 بايت و يا 10000 بايت بشه چي ؟ اونوقت ميکرو ميتونه به کارهاي ديگه اش هم برسه ؟
براي اين حالت استفاده از dma پيشنهاد ميشه ! به صوريکه بعد از تنظيم dma به جاي اينکه بايت به بايت ميکرو دچار وقفه بشه ! بعداز اينکه کل بايت ها گرفته شد ، dma به ميکرو اطلاع ميده ( از طريق وقفه ) و ميکرو دستورات مورد نياز رو روي داده انجام مي ده ! و بجاي 10000 بار وقفه تنها يک با دچار وقفه ميشه !
تا اينجا به صورت خيلي ساده DMA توضيح داده شد ! بقيه اين قسمت مربوط به ميکروکنترلرهاي sam7 اتمل هستش :
dma توي اين ميکروکنترلرها چند تا رجيستر داره که دوتا اشاره داره به آرايه اي که داده ها رو ذخيره کنه و دوتا به عنوان شمارنده اند و تعداد بايت هاي ارسالي و يا دريافتيو مشخص مي کنند و دوتا رجيستر کنترلي و وضعيت داره ! (اگه اشتباه نکرده باشم ! چون دسترسي به ديتاشيت الان ندارم ) با تنظيم اين رجيسترها و رجيستر هاي واحدي که قراره باهاش تبادل داده داشته باشي ميتوني به راحتي با dma کار کني
اميدوارم به دردت خورده باشه ! اين واحد برعکس اسمش که سه حرفه (DMA ) خيلي کاربرديه سعي کن هرجور شده راش بندازي :job:
سیستم عامل فصل 1: مفاهیم اولیه و نگاه کلی به سخت افزار کامپیوتر
سیستم عامل Operating System از منابع سخت افزاری شامل یک یا چند پردازنده برای ارائه خدمات به کاربران استفاده می کند. همچنین حافظه ثانویه و I/O را از طرف کاربران مدیریت می کند بنابراین برای بررسی سیستم عامل داشتن درک مناسبی از سخت افزار کامپیوتر ضروری است.
اجزای اصلی هر کامپیوتر عبارتند از:
- پردازنده: کنترل عملیات و نیز اعمال پردازش داده ها را به عهده دارد.
- حافظه اصلی: ذخیره و نگهداری داده ها و برنامه ها را به عهده دارد. همچنین فرار و ناپایدار است.
- مؤلفهI/O: انتقال داده ها میان کامپیوتر و دنیای خارج.
- گذرگاه سیستم: ساختار هایی برای ارتباط بین پردازنده و حافظه اصلی و I/O
نگاهی کلی به اجزاء کامپیوتر:
ارتباط با حافظه و ثبات های کمکی:
- یکی از اعمال اصلی پردازنده ارتباط با حافظه اصلی است. برای تبادل اطلاعات بین CPU و MEMORY از دو ثبات به نام MAR و MBR استفاده می شود.
- MAR آدرس محل بعدی برای عملیات خواندن یا نوشتن را مشخص می کند.
- MBR حاوی داده هایی است که قرار است در حافظه خوانده یا نوشته شوند.
- متشابهاً برای برای تبادل داده ها بین CPU و I/O از دو ثبات I/OBR و I/OAR استفاده می شود.
انواع ثبات های پردازنده:
ثبات های قابل رویت برای کامپیوتر : ثبات هایی که برای کاربران قابل استفاده اند و این امکان را به برنامه نویس زبان ماشین یا اسمبلی می دهند تا با استفاده بهینه از این ثبات ها میزان مراجعه به حافظه اصلی را به حداقل برساند.
ثبات های کنترل وضعیت: برای کنترل عملیات پردازنده
ثبات های قابل رؤیت:
ثبات های داده : برای نگهداری داده ها و برای انتقال داده ها بین توابع (این ثبات ها همه منظوره اند)
ثبات های آدرس: حاوی آدرس داده ها و دستور العمل ها در حافظه (همه منظوره یا تک منظوره)
ثبات شاخص : در آدرس دهی شاخص استفاده می شود. (آدرس شاخص + آدرس پایه = آدرس موثر)
اشاره گر قطعه : در آدرس دهی قطعه بندی حافظه به قطعه هایی تقسیم می شود. از این ثبات برای نگهداری آدرس پایه (آدرس شروع) استفاده می شود.
اشاره گر پشته: برای اشاره به بالای پشته به کار می رود.
چرخه دستورالعمل:
هر برنامه که اجرا می شود مجموعه ای از دستور العمل هاست که در حافظه ذخیره می شود. پردازش دستور العمل دو گام دارد:
- واکشی دستور العمل از حافظه (چرخه واکشی)
- اجرای دستور العمل واکشی شده (چرخه اجرا)
پایان چرخه تنها در موارد زیر رخ می دهد :
- خاموش شدن کامپیوتر
- رخ دادن خطای غیر قابل جبران
- رسیدن به فرمان توقف
دسترسی مستقیم به حافظه (DMA):
همانطور که پردازنده میتواند عمل خواندن یا نوشتن را روی حافظه انجام دهد میتواند این عمل را روی یک مولفه I/O انجام دهد.گاهی مطلوبست داده ها بین I/O و حافظه مستقیما مبادله شوند تا از بار CPU کاسته شود و CPU بتواند برای انجام کارهای دیگر آزاد باشد. این فرایند دسترسی مستقیم به حافظه بدون دخالت پردازنده را DMA می گویند.
وقفه ها (Interrupt) در سیستم عامل:
وقفه علامتی است که از طرف یک منبع خارجی به پردازنده داده می شود و موجب توقف برنامه فعلی می شود. وقفه ها برای افزایش کارایی پردازنده استفاده می شوند. وقفه ها به پردازنده اجازه می دهند تا در حین اجرای عملیات I/O به اجرای دستورالعمل دیگری بپردازد.
دسته های وقفه:
برنامه : وقفه هایی که به دلیل بعضی شرایط حاصل از اجرای یک دستورالعمل برنامه بروز می کنند. مانند : سرریز شدن محاسباتی، تقسیم بر صفر، تلاش برای اجرای یک عمل غیر مجاز، مراجعه به آدرس خارج از فضای مجاز
زمان سنج: وقفه هایی که توسط زمان سنج داخلی پردازنده تولید می شوند و به سیستم عامل اجازه می دهد بعضی عملیات را به صورت مرتب و دوره ای انجام دهد.
ورودی خروجی: وقفه ای که توسط کنترل کنندهI/O تولید می شوند.
نقص سخت افزار: با نقص سخت افزار تولید می شود. مانند قطع برق، خطای توازن حافظه
گرداننده وقفه:
چرخه دستورالعمل با وقفه: در پایان چرخه اجرا پردازنده وجود وقفه را بررسی می کند.در صورتیکه وقفه مطرح باشد پردازنده اجرای برنامه را مسکوت گذاشته و روال خدماتی وقفه یا برنامه گرداننده وقفه مربوطه را اجرا می کند.
بروز وقفه موجب حوادث متعددی در سخت افزار و نرم افزار می شود. این حوادث در شکل نشان داده شده اند:
وقفه های چند گانه:
بروز چندین وقفه با هم را وقفه چندگانه می گویند.
در برخورد با وقفه های چند گانه دو رویکرد می تواند اتخاذ شود.
غیر فعال کردن سایر وقفه ها در هنگام پردازش یک وقفه : یعنی پردازنده میخواهد و میتواند سیگنال وقفه را نادیده بگیرد.وقفه های از کار انداخته شده زمانی پردازش می شوند که به کار انداخته شوند.همه وقفه ها به طور ترتیبی قبل از اجرای برنامه کاربر توسط ریزپردازنده پردازش می شوند.
نکته منفی این رویکرد : اولویت نسبی یا محدودیت های زمانی برای وقفه ها نادیده گرفته می شوند.
وقفه های تو در تو با تعریف اولویت نسبی برای وقفه ها : پردازنده مجاز است برای پردازش وقفه با اولویت بالاتر وقفه با اولویت پایین تر را نادیده بگیرد.
چندبرنامگی:
پردازنده بیش از یک برنامه برای اجرا دارد.
ترتیب اجرای برنامه به اولویت نسبی آنها و میزان انتظار آنها برای I/O است.
هنگامی که برنامه با وقفه موجه می شود، پردازنده کنترل را به برنامه گرداننده وقفه انتقال می دهد. پس از تکمیل برنامه گرداننده وقفه ممکن است کنترل بلافاصله به برنامه قبلی باز نگردد.
سلسله مراتب حافظه:
برای طراحی حافظه به 3 مورد باید توجه شود:
- اندازه (ظرفیت)
- سرعت (زمان دسترسی)
- قیمت (هزینه)
پایین رفتن در سلسله مراتب حافظه:
کاهش هزینه * افزایش ظزفیت * افزایش زمان دسترسی * کاهش تعداد دفعات دسترسی پردازنده به حافظه * کلید توفیق این طراحی اصل چهارم می باشد.
حافظه اصلی(Main memory):
هر گاه پردازنده به داده ها نیاز دارد ابتدا آنها را در حافظه نهان جستجو می کند، اگر آنها را یافت (اصابت) آنها را بازیابی میکند. در غیر این صورت (عدم اصابت) آنها را از حافظه اصلی می خواند.
ثباتها : کوچکترین ، گران ترین، سریعترین نوع حافظه اند.
حافظه پنهان: حافظه ای قابل رؤیت برای پردازنده، برای تبادل داده ها بین حافظه اصلی و ثباتها
راه های توسعه حافظه اصلی :
از نظر سرعت : استفاده از حافظه نهان
از نظر ظرفیت : استفاده از دیسک ها
حافظه پنهان دیسک:
بخشی از حافظه اصلی را می توان به عنوان بافر برای داده هایی که قرار است با دیسک مبادله شوند به کار برد که به آن حافظه نهان دیسک گفته می شود.
مزایای حافظه نهان دیسک:
- نوشتن داده ها روی دیسک به صورت بلوکی(خوشه ای)انجام می شود . (نه بصورت جداگانه) –>افزایش کارایی دیسک
- بعضی از داده ها که قرار است روی دیسک ذخیره شوند ممکن است توسط برنامه دوباره نیاز باشند بنابر این سریعا از حافظه اصلی خوانده میشوند –> مراجعه حافظه کمتر می شود.
حافظه نهان(Cache):
حافظه نهان یا همان کس Cache برای سیستم عامل قابل مشاهده نیست. حافظه نهان به دلیل عدم تطابق سرعت حافظه اصلی با سرعت پردازنده طراحی شد , سرعت حافظه اصلی را افزایش می دهد.
حافظه نهان یا همان کش Cache قسمتی از حافظه اصلی را نگه می دارد و پردازنده ابتدا حافظه نهان را بررسی می کند. اگر در حافظه نهان پیدا نشد بلوکی از حافظه اصلی که حاوی داده های مورد نیاز است به حافظه نهان آورده می شود.
نکته: حافظه اصلی به M بلوکK کلمه ای تقسیم می شود و حافظه نهان به C شکاف K کلمه ای.اما چون M>>C بنابراین هیچ بلوکی نمیتواند برای مدت طولانی در حافظه نهان بماند.
ساختار حافظه اصلی و حافظه نهان
طراحی حافظه نهان:
اندازه حافظه نهان :
یک حافظه کوچک و سریع بسیار کارایی دارد.
اندازه بلوک :
واحد ها بین حافظه نهان و حافظه اصلی مبادله می شوند. اصابت به معنای پیدا کردن اطلاعات در حافظه نهان است. بلوک های با اندازه بزرگتر تا زمانی میزان اصابت را افزایش می دهند که احتمال وجود داده ها در کاشه بیشتر از احتمال واکشی داده های همه تعاریف DMA جدید از حافظه اصلی باشد.
تعیین کننده محل بلوک جدید وارد شده به حافظه نهان
الگوریتم تعویض:
تعیین کننده بلوکی که باید از حافظه نهان حذف شود تا بلوک جدید جایگزین شود. معمولا از الگوریتم LRU : Least Recently Used استفاده می شود.
سیاست نوشتن:
سیاست نوشتن تعیین می کند چه زمانی بلوک موجود در کاشه در حافظه اصلی نوشته شود. 1- زمانی که محتوای بلوک موجود در حافظه نهان تغییر کند 2- هنگام جایگزینی آن را روی حافظه اصلی 3- حداقل میزان نوشتن 4- متروک ماندن حافظه
انواع مدل های حافظه:
- ثباتها، همه تعاریف DMA حافظه نهان، حافظه اصلی، دیسکها، CD ،…
- حافطه ها از نظر قیمت، سرعت و ظرفیت متفاوتند.
- حافظه نهان یک حافظه کوچک ولی بسیار سریع است که سرعت حافظه اصلی را تقویت می کند.
روش های انتقال ورودی خروجی:
- ورودی / خروجی برنامه سازی شده
- ورودی / خروجی مبنی بر وقفه
- دسترسی مستقیم به حافظه (DMA)
ورودی / خروجی برنامه سازی شده:
هنگام مواجهه با یک عمل I/O در حین اجرای برنامه، CPU فرمان لازم را به مؤلفه I/O می فرستد. مؤلفه I/O فرمان را اجرا می کند. بیت های وضعیت را تغییر می دهد. هیچ عمل دیگری انجام نمی دهد (بویژه وقفه نمی دهد) وظیفه CPU است که متناوباً وضعیت مؤلفه I/O را چک کند. در حین انجام فرامین توسط I/O، پردازنده مدام باید در چرخه تست وضعیت دستگاه باقی بماند بنابراین کارایی سیستم بشدت پایین می آید.
دسترسی مستقیم به حافظه (DMA) :
در این روش از مولفه ای به نام DMA استفاده می شود. هنگام خواندن یا نوشتن پردازنده فرامین زیر را به DMA صادر می کند و خودش کنار می رود.
- عمل خواندن مورد نیاز است یا نوشتن
- آدرس دستگاه I/O درگیر
- محلی از حافظه که از آن محل خواندن یا نوشتن شروع می شود.
- تعداد کلماتی که باید خوانده یا نوشته شوند.
پس از اتمام عملیات DMA به پردازنده وقفه ای مبنی بر اتمام عملیات می دهد. CPU تنها در ابتدا و انتهای عملیات I/O مشغول است.
دیدگاه شما