911 بازدید 0 دیدگاه
حافظه پنهان CPU چگونه کار می کند؟
How does CPU cache work
حافظه پنهان یک حافظه با سرعت بالاست که در داخل پردازنده قرار گرفته است، تا سرعت دستیابی به داده و دستورات را افزایش دهد. باید در نظر گرفت که یک کامپیوتر کاملا بلااستفاده است، تا زمانیکه شما به پردازنده نگوئید که چه کار انجام دهد. در حقیقت پردازنده، برنامه ها را از حافظه اصلی (RAM) دریافت می کند. اما مشکل حافظه اصلی این است که با قطع جریان برق، محتویات آن از بین می رود. این نوع حافظه، حافظه فرار (RAM) نامیده می شود. بنابراین برنامه و داده باید در رسانه غیر فرار ذخیره شوند (یعنی هنگامی که شما کامپیوتر خود را خاموش می کنید محتویات آن از بین نرود).

رسانه هایی مثل دیسک سخت یا رسانه های نوری مثل CD و DVD.
همچنین هنگامی که شما برای اجرای یک برنامه بر روی آیکن آن در ویندوز کلیک می کنید، برنامه که معمولا بر روی هارددیسک ذخیره شده، به حافظه اصلی آورده می شود. سپس بوسیله مداری که کنترل کننده حافظه اصلی نامیده می شود و در داخل چیپ ست پل شمالی واقع شده، از حافظه اصلی (LOAD) می شود (لازم به ذکر است این مدار در پردازنده های AMD در داخل خود پردازنده واقع شده است)
در نظر داشته باشید، CPU نمی تواند بطور مستقیم داده ها را از دیسک سخت دریافت کند، چون سرعت آنها بسیار پایین است (حتی اگر شما یک دیسک سخت با سرعت بسیار بالا را در نظر بگیرید).
در واقع برای اینکه منظور خود را بتوانیم بیان کنیم، فرض کنید که یک دیسک سخت Sata 300 که سریعترین دیسک سخت فراهم شده برای یک کاربر معمولی است، دارای بالاترین نرخ انتقال اسمی در حدود ۳۰۰ مگابایت بر ثانیه است و این در حالیست که یک CPU می تواند دستورات را با سرعت داخلی ۲GHz و با ۶۴Bit مسیر داده (Data Path) که می تواند داده ها را با سرعت ۱۶GB/s انتقال دهد، در حدود ۵۰ بار از سریعترین دیسک سخت سریعتر است.
همه مدارهایی که داخل ناحیه نقطه چین واقع شده اند با کلاک داخلی CPU اجرا می شوند. ضمنا بسته به نوع CPU، قسمت های کمی از نواحی داخلی، حتی می توانند بالاتر از این کلاک اجرا شوند. بنابراین مسیر داده بین قسمت های CPU می تواند عریض تر باشد. یعنی انتقال بیت ها در هر کلاک می تواند بیشتر از ۶۴ یا ۱۲۸ باشد. برای مثال، مسیر داده بین حافظه پنهان L2 و حافظه پنهان دستوری L1 در CPUهای مدرن، معمولاً ۲۵۶ بیتی است.
در عین حال مسیر داده بین حافظه پنهان دستوری L1 و واحد دریافت کننده (Fetch)، بسته به مدل CPU متفاوت است. اما غالبا ۱۲۸ بیتی، متداول می باشد.
اما در هر صورت برای اینکه بیشترین تعداد بیت در هر کلاک مبادله شود، نیازمند انجام سریعترین مبادله نیز می باشد. یعنی نرخ مبادله هم باید بالا باشد. لازم است در اینجا کمی دقیق شویم و به همین خاطر اشاره می کنیم که بطور خلاصه همه سی پی یو های مدرن، دارای سه حافظه پنهان هستند:
L2 که بزرگترین آنها بوده و بین حافظه RAM و حافظه پنهان دستوری قرار دارد و می تواند دستورالعمل و داده را نگهداری کند.
حافظه پنهان دستوری L1 که برای ذخیره دستورالعمل هایی که توسط CPU اجرا شده اند بکار می رود.
حافظه پنهان داده L1 که برای ذخیره داده هایی که دوباره در حافظه RAM نوشته شده اند بکار می رود.
دقت شود که L1 و L2 به معنی سطح ۱ و سطح ۲ می باشد، که به ترتیب به فاصله آنها از هسته (Core) واحد اجرایی دلالت می کند.
بی تردید ایجاد تأخیر در حد صفر، برای حافظه استاتیک، بزرگترین مسئله است. مخصوصا با CPUهایی که با کلاک بسیار بالایی کار می کنند. از این رو ساختن حافظه های استاتیک با تأخیر در حد صفر، بسیار پر هزینه است.
بنابراین سازندگان از این نوع حافظه، فقط در حافظه پنهان L1 استفاده می کنند و حافظه پنهان L2 از حافظه استاتیک با سرعت برابر با آنچه در حافظه پنهان L1 است، استفاده نمی کند و همین مسئله کمی تأخیر ایجاد می کند. بنابراین به صورت جزئی از حافظه پنهان، L1 کندتر است.
باز هم نظر شما را به شکل بالا جلب می کنیم که در آن مشاهده می کنید که حافظه پنهان دستوری L1، به عنوان حافظه ورودی عمل می کند. در حالیکه حافظه پنهان داده L1، به عنوان حافظه پنهان خروجی عمل می کند. به عبارتی حافظه پنهان دستوری L1 که اغلب کوچکتر از حافظه کش L2 است، در مواقعی که برنامه شروع به تکرار قسمت هایی از خود می کند، به صورت جزئی موثر است. زیرا دستورات لازم، باید به واحد Fetch نزدیکتر باشند.
حافظه پنهان در پردازنده های چند هسته ای
در پردازنده هایی که هسته آنها بیش از یکی است، معماری حافظه پنهان L2، بسیار متنوع است. در پردازنده های Dual Core، هر هسته CPU برای خود حافظه پنهان L2 دارد. بنابراین به صورت یک CPU مستقل است. همچنین در پردازنده های ۲ هسته ای اینتل، یک حافظه پنهان L2 وجود دارد که بین ۲ هسته به اشتراک گذاشته شده است.
ضمنا در CPUهای Core 2 Duo که ۴MB حافظه پنهان L2 دارند، بر خلاف تقسیم ثابت ۵۰% که در CPUهای Dual Core (دو هسته ای) وجود دارد، یک هسته ممکن است از ۳٫۵ مگابایت آن استفاده کند و هسته دیگر ۵۱۲ کیلوبایت آن را مورد استفاده قرار دهد. از طرف دیگر CPUهای متداول چهار هسته ای مثل: Core 2 Extreme یا و Core 2 Quad، از دو تراشه ۲ هسته ای استفاده می کنند و آن بدین معنی است که عمل به اشتراک گذاری بین هسته های ۱و۲و۳و۴ اتفاق می افتد. در آینده اینتل قصد دارد CPUهای ۴ هسته ای را که از یک تراشه استفاده می کنند، متداول کند. در شکل پایین، مقایسه بین سه حافظه پنهان نشان داده شده است.
لازم به ذکر است، پردازنده های AMD مبتنی بر معماری K10، حافظه پنهان اشتراکی L3 دارند که با دوتای دیگر ترکیب خواهد شد. این در شکل پایین نمایش داده شده است. اندازه این حافظه پنهان بستگی به مدل CPU دارد. و خیلی شبیه به آنچه در اندازه حافظه پنهان L2 اتفاق افتاد، می باشد.
حافظه پنهان چگونه کار می کند؟
واحد Fetch با دریافت کننده، به دنبال دستورالعمل بعدی که قرار است در حافظه پنهان L1 اجرا شود می گردد. اگر آنجا نباشد، به دنبال آن در حافظه نهان L2 می گردد. سپس اگر در آنجا نبود، برای اجرای دستورالعمل بعدی، به حافظه RAM سر خواهد زد. در اصطلاح هنگامی که CPU داده یا دستورالعمل لازم را از حافظه پنهان دریافت کرد، ما آن را “موفقیت” می نامیم و هنگامی که داده یا دستورالعمل را به طور مستقیم از حافظه اصلی دریافت کند، شکست می نامیم. البته هنگامی که شما کامپیوتر خود را روشن می کنید، حافظه پنهان خالی است، بنابراین دستیابی به حافظه اصلی لازم است، و این فقدان حافظه پنهان، اجتناب ناپذیر است. اما پس از اینکه اولین دستور العمل آورده شد، شروع خود را نشان می دهد.
به عبارتی هنگامی که پردازنده، دستورالعمل را از محل معین حافظه اصلی (Load) کرد، مداری که کنترل کننده حافظه پنهان نامیده می شود، بلوک کوچکی از داده ها را که در محل قبلی داده فعلی که پردازنده بارگذاری کرده است را به حافظه پنهان می آورد. از آنجائیکه برنامه ها همیشه به صورت ترتیبی روند اجرایی دارند، محل بعدی حافظه اصلی که پردازنده آن را درخواست خواهد کرد، شاید آن محلی باشد که بلافاصله قبل از محلی باشد که قبلاً بار شده است. از اینرو کنترل کننده حافظه پنهان، مقداری داده قبل از اولین محل حافظه اصلی را که توسط پردازنده خوانده شده، بار می کند، و داده بعدی شاید در حافظه پنهان باشد. بنابراین پردازنده نیازی ندارد برای دریافت داده ها به بیرون مراجعه کند. چون آن از قبل به داخل حافظه پنهان که در داخل CPU تعبیه شده است، آورده شده است که می تواند آن را با همان میزان کلاک CPU دریافت کند. این مقدار داده، یک خط (Line) نامیده می شود، و آن معمولا ۶۴ بایت طول دارد.
سازمان دهی حافظه پنهان
حافظه پنهان به طور داخلی به خطوطی تقسیم می شود که هر کدام می تواند ۱۶ تا ۱۲۸ بایت را نگهداری کند که البته به نوع CPU هم بستگی دارد. در اکثر CPUهای امروزی، حافظه پنهان به صورت خطوط ۶۴ بایتی (۵۱۲ بیت) سازماندهی شده است.
لازم به ذکر است، جزئیات در رابطه با حافظه پنهان بسیار گسترده تر و فنی تر از آن چیزی است که در این فرصت توضیح داده شد، اما از آنجایی که این جزئیات خارج از حوصله بسیاری از خوانندگان است، ما به همین مقدار بسنده می کنیم و امیدواریم همین مقدار نیز درک نسبتا عمیق و روشنی در رابطه با عملکرد حافظه پنهان، انواع آن و سایر مطالب مربوطه در اختیار شما قرار داده باشد.
فایل روت تبلت Samsung Galaxy Tab A (2019) – T515N باینری U8
فایل روت تبلت Samsung Galaxy Tab A (2019) – T515N باینری U8 اندروید ۱۱ در این پست برای شما عزیزان…
0 فروش
خرید محصول
فایل ENG EFS گوشی سامسونگ A530F باینری U6
فایل ENG EFS گوشی سامسونگ A530F باینری U6 جهت حل مشکل (e:failed to mount /efs (Invalid argument در ریکاوری فایل EFS چیست؟ در تمامی…
1 فروش
خرید محصول
فایل Eng Root گوشی سامسونگ N920T باینری U4 اندروید ۷
۵,۰۰۰ تومان
فایل Eng Root گوشی سامسونگ N920T باینری U4 اندروید ۷ Eng root گوشی های سامسونگ چیست و چه کاربردی دارد؟…
1 فروش
خرید محصول
فایل روت تبلت سامسونگ SM-T865N باینری U1 اندروید ۹
۸,۰۰۰ تومان
فایل روت تبلت سامسونگ SM-T865N باینری U1 اندروید ۹ اکنون با ارائه لینک دانلود مستقیم از فایل روت شده T865N…
0 فروش
خرید محصول
شماتیک شیائومی مدل (Xiaomi Mi 9 SE (grus
۱۰,۰۰۰ تومان
شماتیک شیائومی مدل (Xiaomi Mi 9 SE (grus در این پست سخت افزاری ما برای شما فایل شماتیک شیائومی مدل…
0 فروش
خرید محصول
شماتیک و سرویس منوال گوشی هواوی مدل NEM-L51
۵,۰۰۰ تومان
شماتیک (schematic) هواوی مدل NEM-L51 در این پست سخت افزاری ما برای شما شماتیک گوشی NEM-L51 قرار داده ایم . امیدوارم این…
0 فروش
خرید محصول
محصولات مشابه
911 بازدید 0 دیدگاه