پردازنده

 کش (Cache) پردازنده چیست؟

 کش (Cache) پردازنده چیست؟

 کش (Cache) پردازنده چیست؟

کش پردازنده یا کش سی پی یو (حافظه پنهان پردازنده) نوعی حافظه است که سرعت دسترسی بسیار بالایی دارد و محاسبات را با سرعت بیشتری انجام می دهد.

این حافظه معمولاً داده هایی را که پردازنده به طور مداوم به آن ها نیاز دارد در خود ذخیره می کند. در نتیجه هر زمان که پردازنده به آن داده نیاز پیدا می کند دیگر لازم نیست تا به حافظه اصلی دسترسی پیدا کند.

حافظه اصلی یک قطعه کامپیوتری است که پایین ترین سرعت دسترسی به اطلاعات را دارد. اگر CPU به داده ای خاص نیاز داشته باشد با استفاده از گذرگاه حافظه (Memory Bus) درخواستی از CPU به حافظه اصلی فرستاده می شود. در ادامه حافظه اصلی به دنبال داده مورد نظر می گردد و آن را به CPU می فرستد. مدت زمان زیادی در طول این چرخه تلف می شود. اگر داده های مورد نظر در محلی نزدیک به CPU ذخیره می شدند چه می شد؟ عملکرد کش پردازنده نیز بر مبنای چنین مفهومی طراحی شده است. برای درک مفهوم حافظه کش ما از مثال کتابخانه در طول این مطلب استفاده می کنیم.

فرض کنید که ما یک کتابخانه و یک فرد کتابدار داریم. اگر شخصی وارد کتابخانه شود و کتاب اول هری پاتر را بخواهد کتابدار به سمت قفسه ها می رود، کتاب را پیدا می کند و آن را به آن شخص می دهد. وقتی کار شخص با کتاب تمام شد کتاب مجددا به قفسه بازگردانده می شود. اگر هر شخص دیگری نیاز وارد کتابخانه شود و همان کتاب را بخواهد این چرخه مجددا تکرار می شود. این روش دقیقا همان روشی است که یک سیستم بدون حافظه کش عمل می کند.

چرا به کش پردازنده نیاز داریم؟

حال می خواهیم بررسی کنیم در حضور حافظه کش چه اتفاقی می افتد. در مثال کتابخانه، یک کشو در میز کتابدار را به عنوان کش در نظر میگیریم. وقتی نفر اول وارد کتابخانه می شود و کتابی را درخواست می کند   روند به همان صورت باقی می ماند. اما وقتی کتاب برگردانده می شود کتابدار آن را به قفسه ها بر نمی گرداند بلکه این بار آن را در کشو میز خود قرار می دهد. حال وقتی نفر بعدی وارد می شود و همان کتاب را درخواست می کند کتابدار به راحتی آن را از کشو در می آورد و به او تحویل می دهد. به طور مشابه، حافظه کش نیز داده هایی را که پردازنده به طور مداوم به آن ها نیاز دارد را در خود ذخیره می کند. در نتیجه هر بار که به آن داده نیاز می شود پردازنده به سادگی داخل حافظه کش را نگاه می کند و داده مورد نظر را به دست می آورد به این ترتیب نیازی نیست تا هر بار مسیر طولانی حافظه اصلی طی شود. این کار به طرز چشمگیری سرعت پردازنده را افزایش می دهد.

آیا حافظه کش تنها داده هایی را که زیاد مورد استفاده قرار می گیرند در خود ذخیره می کند؟

خیر، حافظه کش نوعی حافظه هوشمند است که به دنبال داده هایی که ممکن است در آینده نزدیک لازم شوند نیز می گردد. اگر بخواهیم به مثال کتابخانه برگردیم: وقتی شخص جلد اول هری پاتر را درخواست می کند کتابدار باهوش ما جلد دوم هری پاتر را نیز پیدا می کند و با خود می آورد. حال وقتی شخص جلد اول را خواند به احتمال زیاد از کتابدار جلد دوم را نیز می خواهد. در چنین حالتی نیز جلد دوم در کشو میز کتابدار آماده تحویل به آن شخص است. به طور مشابه وقتی حافظه کش داده ها را از حافظه اصلی می گیرد داده هایی را نیز که در آدرس هایی نزدیک آدرس داده اصلی هستند در خود ذخیره می کند. به این مقادیر داده های مجاور داده اصلی که به کش منتقل می شوند cache line گفته می شود.

کش پردازنده دو سطحی

بسیاری از هارد درایو ها و اجزای دیگر سیستم از کش یک سطحی استفاده می کنند اما کش پردازنده، یک کش دو سطحی است. در این حالت کش سطح 1 (L1) کوچکتر و سریع تر است در حالی که کش سطح 2(L2) کمی کند تر است بااین حال باز هم کش سطح 2 سرعت بسیاری بیشتری نسبت به حافظه اصلی سیستم دارد. کش L1 به دو بخش تقسیم می شود که عبارتند از: کش دستورات و کش داده ها. کش دستورات در واقع دستوراتی را که CPU برای پردازش اطلاعات به آن ها نیاز دارد در خود ذخیره می کند در حالی که کش داده، مقادیری را که برای دستور فعلی در حال اجرا نیاز هستند را ذخیره می کند. وظیفه کش L2 بارگذاری اطلاعات از حافظه اصلی است. اگر بخواهیم دوباره به مثال کتابخانه برگردیم: فرض کنید کشوی میز کتابدار همان کش L1 باشد. در یک روز شلوغ که میزان تقاضا برای کتاب ها زیاد است و کتابدار کتاب های زیادی را در کشوی میز خود قرار داده است این احتمال وجود دارد که کشوی میز به سرعت پر شود. اینجا جایی است که کش L2 وارد ماجرا می شود. یک کمد کتاب را در نزدیکی میز کتابدار به عنوان کش L2 در نظر بگیرید. وقتی کشو پر می شود کتابدار کتاب ها را در کمد قرار می دهد. در این صورت وقتی تقاضا برای یک کتاب محبوب زیاد باشد، کتابدار اول کشوی میز خود را جستجو می کند. اگر آن کتاب در آن جا نبود او به سراغ کمد کتاب ها می رود. به طور مشابه وقتی کش L1 پر می شود داده ها در کش L2 ذخیره می شوند. پردازنده ابتدا در کش L1 به دنبال داده مورد نیاز خود می گردد اگر آن را پیدا نکرد فقط کش L2 را جستجو می کند. اگر آن داده در کش L2 نیز موجود نباشد طی کردن مسیر طولانی تا حافظه اصلی و جستجو در آن اجتناب ناپذیر است.

L3 Cache یا کش لایه سوم پردازنده چیست ؟

کش L3 بین حافظه اصلی سیستم یا همان RAM و کش لایه دوم قرار می گیرد . هدف از طراحی و پیاده سازی کش L3 این است که اگر داده ها در کش لایه دوم پیدا نشدند در لایه سوم بتوان به آنها دسترسی داشت باید به این نکته توجه داشت که کش لایه سوم سرعت پایینتر اما ظرفیت بیشتری نسبت به کش لایه دوم دارد. همان طور که در تصویر پایین مشاهد میکنید ویژگی دیگر کش لایه 3 این میباشد که بین تمام هسته های پردازنده مشترک است.

کش لایه سوم پردازنده

eDRAM یا L4 Cache  یا کش لایه چهارم پردازنده چیست ؟

اگر اطلاعات مورد نیاز پردازنده روی کش سطح سوم هم وجود نداشته باشد، کش L4 در صورت موجود بودن وارد عمل خواهد شد.

حافظه کش سطح چهارم از نوع eDRAM بوده که فقط در پردازنده های برادول (BroadWell) با گرافیک مجتمع Iris Pro با حافظه 128 مگابایت وجود دارد. کمپانی اینتل حافظه کش L4 را Crystal Well نام گذاری کرده و این حافظه را همراه با خود پردازنده اما در تراشه ای جداگانه همانند شکل زیر گنجانده است.

کش لایه چهارم پردازنده

البته باید گفت که فقط اینتل نیست که به فکر افزایش حافظه کش پردازنده های خود افتاده است بلکه کمپانی AMD نیز سعی را بر این داشته که در پردازنده های کنسول XBOX One شرکت مایکروسافت از یک کش اضافه بهره ببرد.

آیا استفاده از کش بیشتر ایده خوبی است؟

بله و خیر. استفاده از کش بیشتر به شما اجازه می دهد تا داده ها را باسرعت بیشتری به دست بیاورید البته این در حالتی است که داده مورد نظر در کشL1 یا L2 موجود باشد. دوباره به مثال کتابخانه باز می گردیم. اگر شخصی یک کتاب محبوب را درخواست کند که در کشو و کمد کتاب ها موجود نباشد، کتابدار ابتدا کشو میز خود را جستجو می کند و سپس به سراغ کمد کتاب ها می رود آن جا را نیز می گردد. با این روش زمان زیادی تلف می شود تا کتابدار در نهایت به سراغ قفسه های اصلی کتاب در کتابخانه برود و کتاب مورد نظر را پیدا کند. به طور مشابه، CPU نیز ابتدا در کش L1 و سپس در کش L2 به دنبال داده مورد نظر می گردد و اگر آن را پیدا نکرد در نهایت درخواست خود را به حافظه اصلی می فرستد. همان طور که حتما متوجه شده اید در این روش زمان زیادی از پردازنده برای جستجو در کش های L1 و L2 تلف می شود. وقتی پردازنده داده مورد نظر را در یکی از کش ها پیدا کند اصطلاحا به آن Cache Hit گفته می شود و در شرایط دیگر به آن Cache miss گفته می شود. داده ها اغلب به صورت تناوبی به روزرسانی شده و با الگوریتم های متفاوتی جایگزین می شوند تا تا بیشترین مقدار Cache Hit اتفاق بیفتد.

یک نفر ممکن است پیش خود فکر کند اگر حافظه کش اینقدر سریع است چرا آن را آنقدر بزرگ طراحی نکنند که بتواند تمام داده های حافظه اصلی را در خود ذخیره کند؟ پاسخ این است که اگرچه حافظه کش سرعت دسترسی به اطلاعات بسیار بالایی را در اختیار ما می گذارد اما این سرعت هزینه های بسیار بالایی در پی دارد. در نتیجه استفاده مناسب از مقدار کش در دسترس کاملاً ضروری است.

 

هارد دیسک

پارتیشن چیست؟

پارتیشن چیست؟

پارتیشن چیست؟

پارتیشن چیست؟

پارتیشن را می توان بخشی از هارد دیسک در نظر گرفت. در واقع جداسازی منطقی بخشی از کل فضای هارد است اما طوری بنظر می رسد که آن بخش هارد را به درایوهای فیزیکی متعددی تقسیم کرده ایم.

برخی اصطلاحات معمول در پارتیشن بندی  یعنی پارتیشن اصلی (Primary)، فعال (Active)، توسعه یافته (Extended) و پارتیشن منطقی (Logical) را در زیر توضیح داده ایم.

چرا هارد درایو را پارتیشن بندی می کنید؟

در ویندوز پارتیشن بندی پایه ی هارد از طریق ابزار مدیریت دیسک Disk Management انجام می گیرد.

مدیریت پیشرفته ی پارتیشن نظیر بزرگ و کوچک کردن پارتیشنهای موجود و ترکیب پارتیشن ها با یکدیگر و مواردی از این دست را نمیتوان از طریق خود ویندوز انجام داد اما میتوان با استفاده از نرم افزارهای مدیریتی ویژه ی پارتیشن بندی این کار را انجام داد.

هدف از پارتیشن بندی چیست؟

بخش بندی هارد درایو به پارتیشنها به دلایل متعددی سودمند است اما فارغ از اینها برای یک کار ضروریست: جهت آماده سازی هارد درایو برای نصب سیستم عامل.

وقتی سیستم عاملی نظیر ویندوز را نصب می کنید بخشی از عمل و در واقع آغاز نصب ویندوز پارتیشن بندی می باشد. این پارتیشن برای تعیین بخشی از هارد بعنوان فضای ذخیره سازی و نصب فایلهای ویندوز به کار می رود. در سیستم عامل ویندوز این پارتیشن اصلی (Primary) را معمولاً با حرف C مشخص می کنند.

هدف از پارتیشن بندی

علاوه بر درایو C ویندوز عموماً بصورت خودکار در حین نصب پارتیشنهای دیگری را هم معمولاً بدون اختصاص حرفی از الفبا به آنها ایجاد می کند. برای مثال در ویندوز 10 یک پارتیشن ریکاوری (بازیابی) با مجموعه ای از ابزارها به نام گزینه های بالا آوردن پیشرفته ی ویندوز نصب می شود که میتوانید با استفاده از آن مشکلات احتمالی درایو C را برطرف نمایید.

دیگر دلیل پارتیشن بندی آن است که بتوانید سیستم عاملهای مختلفی را در یک درایو نصب کنید و با استفاده از بوت دوگانه یا چندگانه انتخاب کنید کدام سیستم عامل بالا بیاید. میتوانید روی یک سیستم ویندوز 7، 10 و لینوکس را در کنار هم داشته باشید و یا حتی 4-3 نوع مختلف سیستم عامل را در سیستمتان نصب کنید.

برای اجرای بیش از یک سیستم عامل حتماً باید پارتیشن دیگری را هم تعریف نمایید زیرا سیستم عامل های جداگانه پارتیشن ها را به شکل درایوهای جداگانه دیده و بیشتر مشکلات تداخلی را نخواهند داشت. چند پارتیشن نیاز شما را به داشتن چند هارد جداگانه برای اجرای چند سیستم عامل مرتفع می سازد.

هدف از پارتیشن بندی

پارتیشنهای هارد درایو را میتوان برای مدیریت بهتر فایلها هم ایجاد نمود. هرچند در اصل تمام پارتیشنها در واقع بخشهایی از یک درایو فیزیکی هستند اما اینکه پارتیشنهایی با حروف درایو جداگانه را برای عکس، ویدئو یا محل دانلود نرم افزار در نظر بگیرید بهتر از این است که تمام فایلها را در یک پارتیشن در فولدرهای جداگانه بریزید.

با اینکه بدلیل مدیریت بهتری که این روزها در ویندوز در دسترس است کمتر نیاز به جداسازی کاربران است اما بازهم میتوان از چند پارتیشن جداگانه برای کاربرانی که بطور مشترک از کامپیوتری استفاده می کنند بهره برد تا فایلهایشان در فضاهای جداگانه ای ذخیره شود و آنها را به راحتی بیشتری باهم به اشتراک گذارند.

دیگر دلیل پارتیشن بندی هارد جداسازی فایلهای سیستم عامل از داده های شخصی می باشد. با این کار اطلاعات شخصی و با ارزش شما در صورتی که از پارتیشن جداگانه ای استفاده کنید در صورت بروز ایراد اساسی در ویندوز و نیاز به نصب مجدد آن از خطر پاک شدن حفظ خواهند شد.

این پارتیشن جداگانه برای اطلاعات شخصی کار تهیه ی نسخه ی پشتیبان از پارتیشن سیستمی را ساده تر می سازد زیرا دو نسخه ی پشتیبان جداگانه برای هر خواهید داشت.