به علت نوسانات نرخ ارز، قیمت‌های سایت فاقد اعتبار می‌باشد. استعلام کنید

راهنمای جامع پردازنده های (Intel و AMD) | تشخیص نسل CPU، معنی پسوندها، مقایسه قدرت، انتخاب بهترین پردازنده و کاربرد هر مدل

فصل 61
سطح: پایه تا پیشرفته
موضوع: CPU Cache
تمرکز: L1 / L2 / L3 / Cache Line / Latency / Hit / Miss

پردازنده سریع است؛ اما اگر داده به موقع به آن نرسد، بخشی از این سرعت هدر می رود

حافظه Cache پردازنده چیست؟ بررسی کامل L1، L2، L3 و تاثیر کش بر عملکرد CPU

Cache یا «حافظه نهان»
یکی از مهم ترین بخش های معماری پردازنده است.
وظیفه اصلی آن
نگهداری داده ها و دستورهایی است
که CPU احتمالاً به زودی به آنها نیاز خواهد داشت،
تا پردازنده مجبور نباشد
برای هر درخواست به حافظه اصلی سیستم مراجعه کند.

برای درک اهمیت Cache
باید یک واقعیت اساسی را بدانیم:


سرعت محاسبات CPU
بسیار بیشتر از سرعت دسترسی آن
به حافظه اصلی است.

Cache بخشی از این فاصله سرعت را جبران می کند.

Fast CPU
+
Slow Data Access
=
CPU Waiting

Fast CPU
+
Effective Cache
=
Less Waiting

در این فصل چه چیزهایی یاد می گیریم؟

  • Cache چیست و چرا CPU به آن نیاز دارد.
  • تفاوت Cache با RAM چیست.
  • Memory Hierarchy یا سلسله مراتب حافظه چیست.
  • L1 Cache چیست.
  • L2 Cache چیست.
  • L3 Cache چیست.
  • Instruction Cache و Data Cache چه تفاوتی دارند.
  • Cache Hit چیست.
  • Cache Miss چیست.
  • Hit Rate چه مفهومی دارد.
  • Cache Line چیست.
  • Spatial Locality و Temporal Locality چیست.
  • Cache Associativity چیست.
  • Private Cache و Shared Cache چه تفاوتی دارند.
  • Cache Coherence چیست.
  • Latency چه تاثیری بر Cache دارد.
  • چرا Cache بزرگ تر همیشه سریع تر نیست.
  • چرا Gaming می تواند به Cache حساس باشد.
  • Cache در Server و Workstation چه اهمیتی دارد.
  • 3D V-Cache چگونه ظرفیت Cache را افزایش می دهد.
  • چرا مقایسه CPU فقط با تعداد مگابایت Cache اشتباه است.

Cache چیست؟


حافظه نهان پردازنده — CPU Cache

Cache
که در فارسی معمولاً
«حافظه نهان» گفته می شود،
حافظه ای بسیار سریع
در ساختار پردازنده است.CPU اطلاعاتی را که
احتمال استفاده مجدد از آنها زیاد است
در Cache نگهداری می کند.

هدف اصلی:

Reduce Memory Access Delay

یعنی:
کاهش تاخیر دسترسی به داده ها.

چرا CPU نمی تواند مستقیماً فقط از RAM استفاده کند؟

پردازنده های مدرن
می توانند میلیاردها عملیات را
در هر ثانیه مدیریت کنند.

اما RAM
از نظر زمان دسترسی
بسیار کندتر از منابع داخلی CPU است.

اگر CPU برای هر داده
مجبور باشد منتظر RAM بماند،
واحدهای پردازشی
بخشی از زمان خود را
بدون انجام کار مفید سپری می کنند.

Cache بین CPU و RAM
قرار می گیرد
تا داده های پرکاربرد را
نزدیک تر به پردازنده نگه دارد.

Latency چیست؟


تاخیر — Latency

Latency
یا «تاخیر»
مدت زمانی است
که از لحظه درخواست یک داده
تا زمان قابل استفاده شدن آن
طول می کشد.Latency کمتر
معمولاً به معنی
دسترسی سریع تر است.

در سیستم حافظه،
ظرفیت بیشتر
الزاماً به معنی سرعت بیشتر نیست.

به طور مفهومی:

Smaller / Closer Memory
→
Lower Latency

Larger / Farther Memory
→
Higher Latency

سلسله مراتب حافظه چیست؟


سلسله مراتب حافظه — Memory Hierarchy

Memory Hierarchy
یا «سلسله مراتب حافظه»
ساختاری است که
منابع ذخیره داده را
بر اساس عواملی مانند:

  • سرعت
  • Latency
  • ظرفیت
  • هزینه
  • فاصله منطقی از واحدهای پردازشی

در سطوح مختلف قرار می دهد.

نمای ساده این سلسله مراتب:

Registers
→
L1 Cache
→
L2 Cache
→
L3 Cache
→
RAM
→
SSD
→
HDD

هرچه به CPU نزدیک تر می شویم،
معمولاً حافظه:

  • سریع تر است،
  • Latency کمتری دارد،
  • ظرفیت کمتری دارد،
  • و ساخت آن به ازای هر واحد ظرفیت گران تر است.

Register کجای این ساختار قرار دارد؟


ثبات پردازنده — CPU Register

Register
یا «ثبات پردازنده»
محل بسیار کوچک و بسیار سریعی
در داخل CPU است
که داده های مورد نیاز
برای اجرای مستقیم دستورها
در آن نگهداری می شوند.Register معمولاً
حتی از Cache نیز
به واحدهای اجرایی نزدیک تر است.

L1، L2 و L3 یعنی چه؟

حرف:

L
=
Level

یعنی «سطح».

بنابراین:

L1
=
Level 1 Cache

L2
=
Level 2 Cache

L3
=
Level 3 Cache

این سطوح
از نظر ظرفیت،
Latency،
محل قرارگیری
و نحوه اشتراک میان Coreها
می توانند متفاوت باشند.

L1 Cache چیست؟

L1 معمولاً
کوچک ترین و سریع ترین
سطح اصلی Cache پردازنده است.

در بسیاری از معماری ها
هر Core
منابع L1 مخصوص خود را دارد.

L1 معمولاً
به دو بخش مهم تقسیم می شود:

L1 Instruction Cache

و:

L1 Data Cache


حافظه نهان دستورها — Instruction Cache

Instruction Cache
یا «حافظه نهان دستورها»
بخشی از Cache است
که دستورهای برنامه
را نزدیک واحدهای پردازشی نگهداری می کند.CPU برای اجرای برنامه
باید دائماً دستورهای بعدی
را دریافت کند.


حافظه نهان داده — Data Cache

Data Cache
یا «حافظه نهان داده»
برای نگهداری داده هایی استفاده می شود
که دستورهای پردازنده
با آنها کار می کنند.برای مثال:

  • اعداد
  • متغیرها
  • بخش هایی از آرایه ها
  • داده های موقت برنامه

L2 Cache چیست؟

L2 معمولاً
ظرفیت بیشتری نسبت به L1 دارد،
اما دسترسی به آن
معمولاً کمی کندتر است.

بسته به معماری،
L2 می تواند
برای هر Core خصوصی باشد
یا ساختار متفاوتی داشته باشد.

اگر داده در L1 پیدا نشود،
یکی از مراحل بعدی جستجو
می تواند L2 باشد.

L3 Cache چیست؟

L3 معمولاً
از L1 و L2 بزرگ تر است.

در بسیاری از CPUهای چند هسته ای،
L3 به شکلی میان چند Core
یا گروهی از Coreها
به اشتراک گذاشته می شود.

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

سطح ظرفیت معمول نسبی سرعت نسبی کاربرد کلی
L1 بسیار کم بسیار سریع داده و دستور بسیار نزدیک به Core
L2 بیشتر از L1 سریع لایه میانی Cache
L3 معمولاً بسیار بیشتر کندتر از L1/L2 Cache بزرگ تر برای Coreها یا گروهی از آنها
RAM بسیار بیشتر کندتر از Cache حافظه اصلی سیستم

Cache Hit چیست؟


برخورد موفق در کش — Cache Hit
وقتی CPU
داده مورد نیاز خود را
در سطح Cache مورد بررسی پیدا کند،
به این اتفاق:

Cache Hit

گفته می شود.

مفهوم ساده فارسی:

داده در Cache موجود بوده و نیازی به مراجعه به حافظه دورتر نیست.

Cache Miss چیست؟


عدم یافتن داده در کش — Cache Miss
اگر داده مورد نیاز
در Cache مورد بررسی موجود نباشد،
Cache Miss رخ می دهد.

در این شرایط
پردازنده باید
به سطح دیگری از Memory Hierarchy
مراجعه کند.

این کار
معمولاً Latency بیشتری ایجاد می کند.

Hit Rate چیست؟


نرخ موفقیت کش — Cache Hit Rate

Hit Rate
یا «نرخ موفقیت Cache»
نشان می دهد
چه نسبتی از درخواست های حافظه
از Cache پاسخ داده شده اند.به صورت مفهومی:

Hit Rate
=
Cache Hits
/
Total Cache Accesses

Miss Penalty چیست؟


هزینه زمانی خطای کش — Miss Penalty

Miss Penalty
به زمان یا هزینه اضافی
ناشی از پیدا نشدن داده در Cache
گفته می شود.هرچه CPU مجبور شود
به حافظه دورتر مراجعه کند،
هزینه زمانی می تواند بیشتر شود.

Cache Line چیست؟


خط کش — Cache Line
Cache معمولاً
داده را یک Byte در هر بار
جابه جا نمی کند.

داده ها در بلوک هایی
با اندازه مشخص
میان سطوح حافظه منتقل می شوند
که به آنها:

Cache Line

گفته می شود.

ترجمه مفهومی:
بلوک پایه انتقال داده در Cache.

Locality چیست و چرا Cache کار می کند؟

Cache بر یک ویژگی مهم
در رفتار بسیاری از برنامه ها تکیه دارد:

Locality

Locality
در اینجا به معنی
«محلی بودن الگوی دسترسی به داده»
است.

یعنی برنامه ها
اغلب به داده هایی مراجعه می کنند
که اخیراً استفاده شده اند
یا در نزدیکی داده های قبلی قرار دارند.


محلی بودن زمانی — Temporal Locality

Temporal Locality
یا «محلی بودن زمانی»
یعنی اگر داده ای
اخیراً استفاده شده باشد،
احتمال دارد
در آینده نزدیک
دوباره مورد استفاده قرار گیرد.

محلی بودن مکانی — Spatial Locality

Spatial Locality
یا «محلی بودن مکانی»
یعنی اگر برنامه
به یک محل از حافظه دسترسی داشته باشد،
احتمال دارد
به داده های نزدیک آن نیز
به زودی نیاز پیدا کند.
نکته مهندسی — Engineering Insight: چرا ترتیب دسترسی به داده ها مهم است؟

فرض کنید برنامه
یک Array بزرگ
یا «آرایه بزرگ»
را پردازش می کند.

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

اما دسترسی پراکنده و تصادفی
می تواند تعداد Cache Missها را افزایش دهد.

Sequential Access
→
Better Locality

Random Access
→
Potentially More Cache Misses


دسترسی ترتیبی — Sequential Access

Sequential Access
یا «دسترسی ترتیبی»
یعنی داده ها
با ترتیب منظم
و معمولاً پشت سر هم
خوانده یا نوشته شوند.

دسترسی تصادفی — Random Access

Random Access
یا «دسترسی تصادفی»
در این بحث
به الگوی دسترسی
به محل های پراکنده حافظه اشاره دارد.

Cache Associativity چیست؟


میزان انعطاف جای گذاری داده در کش — Cache Associativity

Cache Associativity
مشخص می کند
یک بلوک از حافظه
در چند محل ممکن
داخل Cache
می تواند قرار بگیرد.این ویژگی
بر احتمال برخورد داده ها
و کارایی Cache
تاثیر می گذارد.

Direct-Mapped Cache چیست؟


کش با جای گذاری مستقیم — Direct-Mapped Cache
در ساختار:

Direct-Mapped Cache

هر بلوک حافظه
فقط یک محل مشخص
برای قرار گرفتن در Cache دارد.

این طراحی ساده است،
اما می تواند
Conflict Miss بیشتری ایجاد کند.


خطای ناشی از تداخل جایگاه — Conflict Miss

Conflict Miss
زمانی رخ می دهد
که چند داده
برای محل های یکسان یا محدود
در Cache رقابت کنند.

Set-Associative Cache چیست؟


کش مجموعه ای چند مسیره — Set-Associative Cache
در این طراحی،
Cache به مجموعه هایی تقسیم می شود
و هر داده
می تواند در یکی از چند جایگاه
داخل مجموعه مربوطه قرار گیرد.

برای مثال:

8-Way Set Associative

یعنی هر Set
دارای هشت جایگاه ممکن
برای نگهداری خطوط Cache است.

Private Cache و Shared Cache چیست؟

نوع معنی ویژگی کلی
Private Cache کش خصوصی به یک Core یا بخش مشخص اختصاص دارد
Shared Cache کش اشتراکی میان چند Core یا واحد پردازشی مشترک است

Shared Cache
می تواند امکان استفاده انعطاف پذیرتر
از ظرفیت Cache
میان چند Core را فراهم کند.

اما طراحی آن
نیازمند مدیریت پیچیده تر
دسترسی و هماهنگی داده ها است.

Cache Coherence چیست؟


سازگاری داده میان کش ها — Cache Coherence

Cache Coherence
یا «سازگاری داده میان Cacheها»
مجموعه سازوکارهایی است
که کمک می کند
Coreهای مختلف
نسخه های ناسازگار
از یک داده مشترک
را استفاده نکنند.
پشت صحنه فنی — Under the Hood: اگر دو Core یک داده را Cache کنند چه می شود؟

فرض کنید Core 1 و Core 2
هر دو نسخه ای
از یک داده را
در Cache خود داشته باشند.

اگر Core 1
مقدار داده را تغییر دهد،
سیستم باید مطمئن شود
Core 2 از نسخه قدیمی
به عنوان داده معتبر استفاده نمی کند.

این هماهنگی
توسط سازوکارهای Cache Coherence
انجام می شود.

بدون چنین سازوکاری،
سیستم چند هسته ای
می توانست نتایج ناسازگار تولید کند.

Coherence Protocol چیست؟


پروتکل هماهنگی کش — Cache Coherence Protocol

Cache Coherence Protocol
مجموعه قوانینی است
که وضعیت نسخه های مختلف داده
در Cacheهای CPU
را مدیریت می کند.هدف این است
که Coreها
دید سازگاری از داده مشترک داشته باشند.

False Sharing چیست؟


اشتراک کاذب — False Sharing

False Sharing
یا «اشتراک کاذب»
زمانی رخ می دهد
که چند Thread
روی داده های متفاوتی کار کنند،
اما آن داده ها
داخل یک Cache Line مشترک قرار گرفته باشند.تغییر داده توسط یک Core
می تواند باعث
جابه جایی یا نامعتبر شدن Cache Line
برای Core دیگر شود،
حتی اگر دو Thread
واقعاً روی یک متغیر کار نکنند.

تاثیر بر عملکرد — Performance Impact: گاهی مشکل CPU کمبود Core نیست، چیدمان بد داده است

در نرم افزارهای Multi-Threaded،
False Sharing
می تواند باعث ایجاد
ترافیک اضافی میان Cacheهای Coreها شود.

در نتیجه
افزایش تعداد Threadها
الزاماً باعث Scaling مناسب نمی شود.

بنابراین Performance
فقط به سخت افزار وابسته نیست؛
نحوه طراحی نرم افزار نیز مهم است.


پردازش چند رشته ای — Multi-Threaded Processing

Multi-Threaded
یا «چند رشته ای»
به نرم افزاری گفته می شود
که می تواند
چند Thread اجرایی را
به طور همزمان یا موازی مدیریت کند.

مقیاس پذیری عملکرد — Performance Scaling

Scaling
در این بحث
به میزان افزایش Performance
هنگام اضافه شدن منابع پردازشی
مانند Core یا Thread اشاره دارد.اگر دو برابر شدن Core
دقیقاً دو برابر Performance ایجاد نکند،
Scaling کامل اتفاق نیفتاده است.

آیا Cache بزرگ تر همیشه بهتر است؟

خیر.

ظرفیت Cache
فقط یکی از پارامترها است.

Performance واقعی Cache
به مواردی مانند:

  • Latency
  • Bandwidth
  • Associativity
  • Cache Architecture
  • Replacement Policy
  • Workload
  • Core Topology

وابسته است.

Replacement Policy چیست؟


سیاست جایگزینی داده — Cache Replacement Policy
وقتی Cache پر باشد
و داده جدید باید وارد شود،
پردازنده باید تصمیم بگیرد
کدام داده موجود
از Cache خارج شود.

الگوریتم یا منطق این تصمیم:

Replacement Policy

یا «سیاست جایگزینی Cache»
نامیده می شود.

Hardware Prefetcher چیست؟


پیش واکشی سخت افزاری — Hardware Prefetcher

Prefetcher
تلاش می کند
الگوی دسترسی به حافظه را تشخیص دهد
و داده هایی را که احتمالاً
در آینده نزدیک لازم می شوند
پیش از درخواست مستقیم CPU
به Cache منتقل کند.ترجمه مفهومی:
پیش آوردن داده قبل از آنکه CPU رسماً آن را درخواست کند.

نکته مهندسی — Engineering Insight: Cache فقط منتظر درخواست CPU نمی ماند

اگر Hardware Prefetcher
تشخیص دهد برنامه
در حال خواندن ترتیبی داده است،
ممکن است بلوک های بعدی را
زودتر وارد Cache کند.

اگر پیش بینی درست باشد:

Future Memory Access
→
Cache Hit

و بخشی از Latency
پنهان می شود.

البته Prefetch همیشه مفید نیست.

اگر پیش بینی اشتباه باشد،
داده هایی وارد Cache می شوند
که CPU به آنها نیاز ندارد.

این مسئله می تواند:

  • Bandwidth مصرف کند،
  • فضای Cache را اشغال کند،
  • و داده مفید را کنار بزند.

آلودگی کش — Cache Pollution

Cache Pollution
یا «آلودگی Cache»
زمانی رخ می دهد
که داده های کم فایده
فضای Cache را اشغال کنند
و باعث خروج داده های مفیدتر شوند.

تفاوت Cache و RAM چیست؟

ویژگی CPU Cache RAM
هدف دسترسی بسیار سریع به داده های پرکاربرد حافظه اصلی برنامه ها و سیستم عامل
ظرفیت کم بسیار بیشتر
Latency بسیار کمتر بیشتر
محل در ساختار CPU ماژول های حافظه سیستم
مدیریت مستقیم کاربر عمدتاً خیر ظرفیت و پیکربندی توسط کاربر قابل انتخاب است
اشتباه رایج — Common Mistake: Cache زیاد یعنی RAM کمتری لازم داریم

Cache و RAM
جایگزین یکدیگر نیستند.

یک CPU
حتی اگر Cache بسیار بزرگی داشته باشد،
همچنان برای اجرای سیستم عامل
و برنامه ها
به RAM کافی نیاز دارد.

Cache Bandwidth چیست؟


پهنای باند کش — Cache Bandwidth

Cache Bandwidth
یا «پهنای باند Cache»
میزان داده ای است
که Cache می تواند
در یک بازه زمانی
منتقل کند.بنابراین دو Cache
با ظرفیت برابر
الزاماً Performance یکسان ندارند.

تفاوت Latency و Bandwidth چیست؟

این دو مفهوم
نباید با هم اشتباه شوند.

Latency
می گوید:

«رسیدن اولین داده چقدر زمان می برد؟»

Bandwidth
می گوید:

«در یک بازه زمانی چه مقدار داده می توان منتقل کرد؟»

Latency
=
How Long?

Bandwidth
=
How Much per Time?

Cache چه تاثیری روی Gaming دارد؟

بازی ها
می توانند مجموعه بزرگی از داده ها
را به صورت مداوم پردازش کنند:

  • وضعیت اشیا
  • Physics
  • AI
  • Animation
  • Game Logic
  • Draw Calls

اگر بخش بیشتری
از Working Set بازی
در Cache قرار بگیرد،
مراجعه به RAM
می تواند کاهش پیدا کند.

به همین دلیل
برخی بازی ها
از Cache بزرگ تر
سود قابل توجهی می برند.

Cache فقط Average FPS را تغییر می دهد؟

خیر.

در بعضی شرایط
Cache و رفتار حافظه
می توانند روی:

Average FPS
/
1% Low
/
Frame Time

اثر بگذارند.


یک درصد پایین فریم ها — 1% Low

1% Low
معیاری برای بررسی
بخش کندتر تجربه اجرای بازی است.این معیار می تواند
اطلاعات بیشتری درباره
افت های لحظه ای Performance
نسبت به Average FPS
ارائه کند.


زمان تولید هر فریم — Frame Time

Frame Time
یا «زمان فریم»
مدت زمان لازم
برای تولید یک Frame است.یکنواختی Frame Time
در احساس روان بودن بازی
اهمیت زیادی دارد.

Cache در Server چه اهمیتی دارد؟

Serverها
ممکن است تعداد زیادی:

  • Thread
  • Process
  • Request
  • Virtual Machine
  • Database Operation

را مدیریت کنند.

در چنین محیط هایی،
ظرفیت و معماری Cache
می تواند روی Performance،
Latency
و Scaling
تاثیر مهمی داشته باشد.


عملیات پایگاه داده — Database Operation

Database Operation
یا «عملیات پایگاه داده»
شامل فعالیت هایی مانند:

  • جستجو
  • خواندن
  • نوشتن
  • مرتب سازی
  • پردازش Query

روی داده های پایگاه داده است.


ماشین مجازی — Virtual Machine

Virtual Machine
یا «ماشین مجازی»
محیط نرم افزاری ای است
که مانند یک کامپیوتر مستقل
روی یک سیستم فیزیکی اجرا می شود.

Cache در Workstation چه اهمیتی دارد؟

پاسخ به نوع نرم افزار بستگی دارد.

بعضی Workloadها
از Cache بیشتر
بسیار خوب استفاده می کنند.

بعضی دیگر
بیشتر به:

  • Core Count
  • Clock
  • Memory Bandwidth
  • GPU Performance
  • Storage I/O

وابسته هستند.

بنابراین برای Workstation
نباید CPU را
فقط با Cache Size انتخاب کرد.


ورودی و خروجی — I/O

I/O
مخفف:

Input / Output

و به معنی
«ورودی / خروجی»
است.

در سخت افزار،
به انتقال داده
میان اجزای مختلف سیستم
یا دستگاه های خارجی اشاره دارد.

3D V-Cache چه چیزی را تغییر می دهد؟

فناوری 3D V-Cache
ظرفیت Cache
را در مدل های مربوطه
به شکل قابل توجهی افزایش می دهد.

هدف این است
که Working Set بزرگ تری
نزدیک CPU نگهداری شود
و در Workload مناسب
تعداد مراجعه به RAM کاهش یابد.

اما:

More Cache
≠
Faster in Every Application

اگر Cache خوب است، چرا CPUها چند گیگابایت Cache ندارند؟

چون Cache رایگان نیست.

افزایش Cache می تواند:

  • سطح تراشه را افزایش دهد،
  • تعداد Transistorها را بالا ببرد،
  • هزینه تولید را افزایش دهد،
  • مصرف انرژی ایجاد کند،
  • طراحی را پیچیده تر کند،
  • و مدیریت Latency را دشوارتر کند.

ترانزیستور — Transistor

Transistor
یا «ترانزیستور»
یکی از عناصر بنیادی
مدارهای دیجیتال است.CPUهای مدرن
از میلیاردها ترانزیستور
برای ساخت واحدهای محاسباتی،
Cache،
کنترلرها
و سایر بخش ها استفاده می کنند.


سطح تراشه — Die Area

Die Area
یا «مساحت Die»
به سطح فیزیکی
تراشه سیلیکونی اشاره دارد.استفاده از سطح بیشتر
می تواند هزینه تولید
و پیچیدگی طراحی را افزایش دهد.

Cache معمولاً از چه نوع حافظه ای ساخته می شود؟


حافظه ایستا — SRAM
Cacheهای CPU
معمولاً با نوعی حافظه به نام:

SRAM

ساخته می شوند.

SRAM مخفف:

Static Random-Access Memory

و ترجمه آن:
حافظه دسترسی تصادفی ایستا
است.

RAM اصلی معمولاً از چه فناوری استفاده می کند؟


حافظه پویا — DRAM
حافظه اصلی سیستم
معمولاً مبتنی بر:

DRAM

است.

DRAM مخفف:

Dynamic Random-Access Memory

و به معنی:
حافظه دسترسی تصادفی پویا
است.

چرا کل RAM را از SRAM نمی سازیم؟

SRAM سریع است،
اما برای ظرفیت بالا
هزینه و فضای بسیار بیشتری
نسبت به DRAM نیاز دارد.

بنابراین سیستم از ترکیب:

Small + Fast SRAM Cache
+
Large + Cheaper DRAM

استفاده می کند.

این همان منطق اصلی
Memory Hierarchy است.

اشتباه رایج — Common Mistake: تقسیم کل L3 بر تعداد Core

اگر CPU مثلاً
مقدار مشخصی Shared L3 داشته باشد،
نباید همیشه آن را
به تعداد Core تقسیم کنیم
و بگوییم هر Core
دقیقاً این مقدار Cache دارد.

Shared Cache
یک منبع اشتراکی است
و نحوه دسترسی Coreها
به معماری CPU بستگی دارد.

Cache Topology چیست؟


ساختار ارتباط کش و هسته ها — Cache Topology

Cache Topology
یا «ساختار ارتباط Cache»
مشخص می کند
Cacheهای مختلف
چگونه میان Coreها،
Clusterها،
Chipletها
یا سایر بخش های CPU
سازمان دهی شده اند.

تراشه کوچک ماژولار — Chiplet

Chiplet
یا «تراشه کوچک ماژولار»
بخشی از یک پردازنده است
که به جای ساخت تمام CPU
روی یک Die واحد،
در کنار بخش های دیگر
یک محصول کامل را تشکیل می دهد.
پشت صحنه فنی — Under the Hood: همه Coreها الزاماً به همه Cacheها با یک Latency دسترسی ندارند

در معماری های پیچیده
ممکن است CPU
از چند Cluster،
Die
یا Chiplet تشکیل شده باشد.

در چنین شرایطی،
فاصله منطقی یک Core
تا یک بخش Cache
می تواند متفاوت باشد.

بنابراین فقط دانستن:

Total L3 Cache = X MB

برای شناخت کامل رفتار CPU
کافی نیست.

باید Cache Topology
نیز در نظر گرفته شود.

چگونه تاثیر Cache را در Benchmark بررسی کنیم؟

برای مقایسه صحیح،
باید Workload مناسب انتخاب شود.

بهتر است بررسی شامل:

  • Gaming
  • Compilation
  • Compression
  • Rendering
  • Database
  • Scientific Workloads

باشد.

زیرا یک تغییر Cache
ممکن است در یک برنامه
تاثیر بسیار زیاد
و در برنامه دیگر
تاثیر کمی داشته باشد.


فشرده سازی — Compression

Compression
یا «فشرده سازی»
فرایند کاهش حجم داده
با استفاده از الگوریتم های مختلف است.

Synthetic Benchmark چیست؟


بنچمارک مصنوعی — Synthetic Benchmark

Synthetic Benchmark
یا «آزمون مصنوعی»
تستی است که
برای اندازه گیری
یک ویژگی یا رفتار مشخص سخت افزار
طراحی شده است.این تست ها مفید هستند،
اما همیشه تجربه واقعی نرم افزار
را به تنهایی نشان نمی دهند.

نکته مهندسی — Engineering Insight: Cache Benchmark را با Real-World Benchmark ترکیب کنید

تست Latency و Bandwidth Cache
اطلاعات معماری ارزشمندی می دهد.

اما برای خرید CPU
باید نتیجه نرم افزار واقعی
نیز بررسی شود.

Microbenchmark
+
Real-World Benchmark
=
Better Understanding


آزمون ریزمعماری — Microbenchmark

Microbenchmark
یا «آزمون کوچک و هدفمند»
تستی است
که یک بخش محدود
از عملکرد سیستم
مانند Cache Latency
یا Memory Bandwidth
را اندازه گیری می کند.

هنگام خرید CPU چگونه Cache را بررسی کنیم؟

01
فقط Total Cache را نگاه نکنیدمشخص کنید مقدار مربوط به L2، L3 یا مجموع چند سطح است.
02
معماری CPU را بررسی کنیددو معماری با Cache برابر الزاماً رفتار یکسان ندارند.
03
Cache Topology را در نظر بگیریدShared، Private، Cluster و Chiplet مهم هستند.
04
نوع Workload را مشخص کنیدGaming، Rendering، Server یا Office؟
05
Benchmark همان نرم افزار را ببینیدتاثیر Cache باید در Workload واقعی سنجیده شود.
06
RAM را فراموش نکنیدCache جایگزین ظرفیت و Performance مناسب RAM نیست.
07
کل CPU را مقایسه کنیدCore، Clock، Architecture، Cache، Power و Platform باید کنار هم بررسی شوند.
اشتباهات رایج — Common Mistakes: تحلیل Cache پردازنده
  • فرض اینکه Cache بیشتر همیشه CPU سریع تری می سازد.
  • جمع کردن L1، L2 و L3 و مقایسه مستقیم عدد نهایی.
  • نادیده گرفتن Latency.
  • نادیده گرفتن Cache Bandwidth.
  • نادیده گرفتن Cache Topology.
  • فرض اینکه Shared Cache به صورت مساوی و ثابت بین Coreها تقسیم شده است.
  • مقایسه Cache دو معماری متفاوت فقط بر اساس MB.
  • فرض اینکه Cache جایگزین RAM است.
  • نادیده گرفتن نوع Workload.
  • نتیجه گیری Gaming فقط از روی Cache Size.
  • نادیده گرفتن GPU Bottleneck در تست Gaming.
  • نادیده گرفتن Prefetcher.
  • نادیده گرفتن رفتار نرم افزار و Locality.
  • فرض اینکه X3D در همه برنامه ها سریع تر است.
  • نادیده گرفتن اثر معماری چند Chiplet روی دسترسی به Cache.

سوالات متداول درباره حافظه Cache پردازنده

Cache CPU چیست؟

حافظه بسیار سریعی در ساختار پردازنده است
که داده ها و دستورهای پرکاربرد
را نزدیک CPU نگه می دارد.

L1 Cache چیست؟

معمولاً کوچک ترین
و سریع ترین سطح اصلی Cache
و بسیار نزدیک به Core است.

L2 Cache چیست؟

سطحی با ظرفیت بیشتر از L1
و معمولاً Latency بالاتر از آن است.

L3 Cache چیست؟

Cache بزرگ تری است
که در بسیاری از معماری ها
میان چند Core
یا گروهی از Coreها مشترک است.

Cache Hit چیست؟

یعنی CPU داده مورد نیاز را
در Cache پیدا کرده است.

Cache Miss چیست؟

یعنی داده در Cache مورد بررسی موجود نبوده
و باید از سطح دیگری دریافت شود.

Cache Line چیست؟

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

Cache بیشتر بهتر است؟

نه همیشه.
معماری،
Latency،
Bandwidth،
Topology
و Workload
نیز مهم هستند.

Cache بیشتر FPS را افزایش می دهد؟

در برخی بازی ها بله،
اما مقدار تاثیر
به موتور بازی،
GPU،
Resolution
و معماری CPU بستگی دارد.

آیا Cache جایگزین RAM می شود؟

خیر.
Cache و RAM
نقش های متفاوتی در سیستم دارند.

3D V-Cache چیست؟

فناوری AMD
برای افزایش ظرفیت Cache
با استفاده از ساختار بسته بندی سه بعدی
در پردازنده های مربوطه است.

Shared Cache چیست؟

Cacheای است
که چند Core یا واحد پردازشی
می توانند از آن استفاده کنند.

Cache Coherence چیست؟

سازوکاری برای حفظ سازگاری
نسخه های یک داده
میان Cacheهای مختلف CPU است.

False Sharing چیست؟

شرایطی است
که Threadهای مختلف
روی داده های متفاوت کار می کنند،
اما داده ها در یک Cache Line قرار دارند
و باعث ترافیک اضافی Cache می شوند.

Prefetcher چیست؟

مکانیزمی است
که تلاش می کند
داده های مورد نیاز آینده را
پیش از درخواست مستقیم CPU
وارد Cache کند.

برای مقایسه دو CPU مقدار L3 کافی است؟

خیر.
معماری، Latency، Topology،
Core Count، Clock
و Benchmark واقعی
نیز باید بررسی شوند.

واژه های جدید این فصل برای واژه نامه نهایی کتاب

  • CPU Cache: حافظه نهان بسیار سریع پردازنده.
  • Latency: تاخیر میان درخواست داده و قابل استفاده شدن آن.
  • Memory Hierarchy: سلسله مراتب حافظه از منابع بسیار سریع و کوچک تا منابع بزرگ تر و کندتر.
  • Register: ثبات بسیار سریع داخل پردازنده.
  • L1 Cache: سطح اول و بسیار سریع Cache.
  • L2 Cache: سطح دوم Cache با ظرفیت بیشتر.
  • L3 Cache: سطح بزرگ تر Cache که اغلب به شکلی اشتراکی استفاده می شود.
  • Instruction Cache: حافظه نهان مخصوص دستورهای برنامه.
  • Data Cache: حافظه نهان مخصوص داده.
  • Cache Hit: پیدا شدن داده مورد نیاز در Cache.
  • Cache Miss: پیدا نشدن داده مورد نیاز در Cache.
  • Hit Rate: نسبت درخواست هایی که از Cache پاسخ داده می شوند.
  • Miss Penalty: هزینه زمانی ناشی از Cache Miss.
  • Cache Line: بلوک پایه انتقال داده در Cache.
  • Locality: محلی بودن الگوی دسترسی به داده.
  • Temporal Locality: احتمال استفاده مجدد از داده ای که اخیراً استفاده شده است.
  • Spatial Locality: احتمال استفاده از داده های نزدیک به محل داده فعلی.
  • Sequential Access: دسترسی ترتیبی به داده.
  • Random Access: دسترسی به محل های پراکنده داده.
  • Cache Associativity: میزان انعطاف محل قرارگیری داده در Cache.
  • Direct-Mapped Cache: Cache با یک جایگاه مشخص برای هر بلوک.
  • Conflict Miss: Cache Miss ناشی از رقابت داده ها برای جایگاه محدود.
  • Set-Associative Cache: Cache دارای چند جایگاه ممکن در هر مجموعه.
  • Private Cache: Cache اختصاصی یک Core یا واحد.
  • Shared Cache: Cache مشترک میان چند Core یا واحد.
  • Cache Coherence: سازگاری نسخه های داده میان Cacheهای مختلف.
  • False Sharing: تداخل عملکردی ناشی از قرارگیری داده های مستقل در یک Cache Line.
  • Performance Scaling: میزان افزایش عملکرد با افزایش منابع پردازشی.
  • Replacement Policy: سیاست انتخاب داده ای که باید از Cache خارج شود.
  • Hardware Prefetcher: مکانیزم پیش واکشی داده پیش از درخواست CPU.
  • Cache Pollution: اشغال Cache توسط داده های کم فایده.
  • Cache Bandwidth: حجم داده قابل انتقال توسط Cache در واحد زمان.
  • 1% Low: معیاری برای نمایش بخش کندتر نرخ فریم بازی.
  • Frame Time: زمان لازم برای تولید هر فریم.
  • I/O: ورودی و خروجی داده.
  • Transistor: عنصر بنیادی مدارهای دیجیتال.
  • Die Area: مساحت فیزیکی تراشه سیلیکونی.
  • SRAM: حافظه دسترسی تصادفی ایستا؛ فناوری رایج برای Cache.
  • DRAM: حافظه دسترسی تصادفی پویا؛ فناوری رایج حافظه اصلی.
  • Cache Topology: نحوه سازمان دهی و ارتباط Cache با Coreها.
  • Chiplet: تراشه کوچک ماژولار که بخشی از پردازنده بزرگ تر را تشکیل می دهد.
  • Synthetic Benchmark: آزمون مصنوعی برای سنجش ویژگی مشخص سخت افزار.
  • Microbenchmark: آزمون محدود و هدفمند یک بخش خاص از عملکرد.

خلاصه فصل

Cache را می توان
یکی از ابزارهای اصلی CPU
برای مقابله با فاصله سرعت
میان پردازنده و حافظه اصلی دانست.

Registers
→
L1
→
L2
→
L3
→
RAM
→
Storage

اما ظرفیت Cache
تنها معیار مهم نیست.

تحلیل صحیح باید شامل:

Cache Size
+
Latency
+
Bandwidth
+
Hit Rate
+
Cache Line
+
Associativity
+
Topology
+
Prefetching
+
Workload

باشد.

به همین دلیل:

64 MB Cache
>
32 MB Cache

به تنهایی
یک نتیجه معتبر درباره
Performance دو CPU نیست.

مهم ترین قانون این فصل:


Cache را با عدد مگابایت قضاوت نکنید؛
Cache بخشی از معماری CPU است
و ارزش آن فقط در ارتباط با معماری و Workload واقعی مشخص می شود.

فصل 62
سطح: پایه تا پیشرفته
موضوع: CPU و RAM
تمرکز: IMC / DDR / Channel / Bandwidth / MT/s / Timing / Rank / ECC

RAM فقط یک قطعه کنار CPU نیست؛ بخشی از مسیر تغذیه داده به پردازنده است

کنترلر حافظه CPU چیست؟ ارتباط پردازنده با RAM، کانال حافظه، پهنای باند و Timing

در فصل قبل دیدیم که Cache
چگونه تلاش می کند داده های مورد نیاز پردازنده
را نزدیک Coreها نگه دارد.
اما همه اطلاعات مورد نیاز CPU
در Cache جا نمی شوند.

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

اینجا مجموعه ای از مفاهیم مهم وارد ماجرا می شوند:

CPU
→
Memory Controller
→
Memory Channel
→
RAM

سرعت این مسیر
می تواند روی عملکرد بسیاری از سیستم ها،
از لپ تاپ و کامپیوتر خانگی
تا Workstation و Server،
تاثیر بگذارد.

در این فصل چه چیزهایی یاد می گیریم؟

  • Memory Controller چیست.
  • IMC چیست و چرا داخل CPU قرار گرفته است.
  • Memory Channel چیست.
  • Single Channel و Dual Channel چه تفاوتی دارند.
  • Quad Channel چیست و کجا استفاده می شود.
  • Memory Bandwidth چیست.
  • DDR به چه معناست.
  • MHz و MT/s چه تفاوتی دارند.
  • چرا عبارت DDR4-3200 با «RAM 3200 MHz» دقیقاً یک مفهوم ندارد.
  • Memory Timing چیست.
  • CL و CAS Latency چیست.
  • چرا CL کمتر به تنهایی به معنی RAM سریع تر نیست.
  • DIMM و SO-DIMM چیست.
  • Memory Rank چیست.
  • Single Rank و Dual Rank چه تفاوتی دارند.
  • ECC چیست.
  • Gear Mode چیست.
  • Memory Training چیست.
  • چرا ظرفیت، سرعت، کانال و Timing باید با هم بررسی شوند.

Memory Controller چیست؟


کنترلر حافظه — Memory Controller

Memory Controller
یا «کنترلر حافظه»
بخشی از سیستم است که
ارتباط و تبادل داده
با حافظه اصلی را مدیریت می کند.این بخش در مدیریت مواردی مانند:

  • درخواست خواندن داده از RAM
  • نوشتن داده در RAM
  • زمان بندی دسترسی ها
  • مدیریت کانال های حافظه
  • هماهنگی با مشخصات حافظه

نقش اساسی دارد.

IMC چیست؟


کنترلر حافظه یکپارچه — Integrated Memory Controller

IMC
مخفف:

Integrated Memory Controller

و به معنی
«کنترلر حافظه یکپارچه»
است.

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

چرا قرار گرفتن Memory Controller داخل CPU مهم شد؟

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

در معماری های مدرن،
نزدیک تر شدن Memory Controller
به CPU
امکان کنترل مستقیم تر
مسیر حافظه را فراهم کرده است.

CPU
↔
Integrated Memory Controller
↔
RAM

پشت صحنه فنی — Under the Hood: وقتی CPU به داده ای در RAM نیاز دارد چه اتفاقی می افتد؟

فرض کنید یک Core
داده ای را درخواست می کند
که در سطح مورد نیاز Cache موجود نیست.

درخواست در نهایت
باید به زیرسیستم حافظه برسد.

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

داده پس از دریافت
می تواند وارد سلسله مراتب Cache شود
و در اختیار Core قرار گیرد.

Core Request
→
Cache Miss
→
Memory Subsystem
→
DRAM
→
Cache
→
Core

به همین دلیل RAM کند
یا پیکربندی نامناسب حافظه
در Workloadهای حساس به حافظه
می تواند CPU را منتظر نگه دارد.

Memory Channel چیست؟


کانال حافظه — Memory Channel

Memory Channel
یا «کانال حافظه»
مسیر منطقی ارتباط
میان کنترلر حافظه
و حافظه RAM است.افزایش تعداد کانال های فعال
می تواند پهنای باند قابل دسترس حافظه
را افزایش دهد.

Single Channel چیست؟


حافظه تک کاناله — Single Channel

Single Channel
یا «حالت تک کاناله»
یعنی سیستم در پیکربندی مورد نظر
از یک کانال حافظه فعال
برای انتقال داده استفاده می کند.

Dual Channel چیست؟


حافظه دو کاناله — Dual Channel

Dual Channel
یا «حالت دو کاناله»
امکان استفاده از دو کانال حافظه
را فراهم می کند.در شرایط مناسب،
این کار پهنای باند نظری حافظه
را نسبت به یک کانال افزایش می دهد.

نکته مهندسی — Engineering Insight: دو ماژول RAM فقط برای افزایش ظرفیت نیستند

فرض کنید یک سیستم
به 16GB RAM نیاز دارد.

در بسیاری از سیستم های Dual Channel،
استفاده از:

2 × 8 GB

می تواند امکان استفاده از دو کانال حافظه
را فراهم کند،
در حالی که:

1 × 16 GB

ممکن است فقط یک کانال را درگیر کند.

البته رفتار دقیق
به معماری CPU،
مادربرد
و نحوه سازمان دهی حافظه بستگی دارد.

Quad Channel چیست؟


حافظه چهار کاناله — Quad Channel

Quad Channel
یا «حالت چهار کاناله»
یعنی کنترلر حافظه
چهار کانال مستقل را پشتیبانی می کند.این ساختار
بیشتر در برخی پلتفرم های:

  • Workstation
  • HEDT
  • Server

دیده می شود.


دسکتاپ رده بالا — HEDT

HEDT
مخفف:

High-End Desktop

و به معنی
«کامپیوتر دسکتاپ رده بالا»
است.

این پلتفرم ها معمولاً
امکانات پردازشی،
حافظه
و توسعه بیشتری
نسبت به دسکتاپ های عادی ارائه می کنند.

اشتباه رایج — Common Mistake: تعداد RAM برابر تعداد Channel است

تعداد ماژول های RAM
الزاماً برابر تعداد کانال های حافظه نیست.

ممکن است مادربرد
چهار اسلات RAM داشته باشد
اما CPU فقط دو کانال حافظه داشته باشد.

بنابراین:

DIMM Slots
≠
Memory Channels

DIMM چیست؟


ماژول حافظه — DIMM

DIMM
مخفف:

Dual Inline Memory Module

و به ماژول حافظه ای گفته می شود
که معمولاً در کامپیوترهای دسکتاپ،
Workstation
و Server استفاده می شود.

SO-DIMM چیست؟


ماژول حافظه کوچک — SO-DIMM

SO-DIMM
فرم کوچک تر ماژول حافظه است
که معمولاً در:

  • لپ تاپ
  • Mini PC
  • All-in-One
  • برخی سیستم های کوچک

استفاده می شود.

SO در این عبارت
به:

Small Outline

اشاره دارد؛
یعنی طراحی با ابعاد کوچک تر.

Memory Bandwidth چیست؟


پهنای باند حافظه — Memory Bandwidth

Memory Bandwidth
یا «پهنای باند حافظه»
نشان می دهد
چه مقدار داده
در یک بازه زمانی
می تواند میان حافظه
و کنترلر حافظه منتقل شود.پهنای باند معمولاً
با واحدهایی مانند:

GB/s

بیان می شود.

پهنای باند نظری RAM چگونه محاسبه می شود؟

برای یک کانال حافظه 64 بیتی،
می توان به صورت ساده نوشت:

Bandwidth
=
Transfer Rate
×
8 Bytes

مثلاً برای حافظه:

DDR4-3200

نرخ انتقال اسمی:

3200 MT/s

است.

بنابراین پهنای باند نظری یک کانال:

3200 × 8
=
25,600 MB/s
≈
25.6 GB/s

و در یک پیکربندی دو کاناله ایده آل:

25.6 × 2
=
51.2 GB/s


پهنای باند نظری — Theoretical Bandwidth

Theoretical Bandwidth
یا «پهنای باند نظری»
حداکثر نرخ انتقالی است
که از مشخصات رابط حافظه
به صورت محاسباتی به دست می آید.Performance واقعی
معمولاً دقیقاً برابر این عدد نیست.

DDR یعنی چه؟


نرخ انتقال دوگانه — DDR

DDR
مخفف:

Double Data Rate

و به معنی
«نرخ انتقال داده دوگانه»
است.

مفهوم اصلی این است
که داده در هر چرخه کلاک
در دو لبه سیگنال منتقل می شود.

تفاوت MHz و MT/s چیست؟

این یکی از رایج ترین نقاط اشتباه
در مشخصات RAM است.


مگاهرتز — MHz

MHz
واحد فرکانس است.یک MHz یعنی:

1,000,000 Cycles per Second

یعنی یک میلیون چرخه در ثانیه.


میلیون انتقال در ثانیه — MT/s

MT/s
مخفف:

Mega Transfers per Second

و به معنی
«میلیون انتقال در ثانیه»
است.

MT/s نرخ انتقال داده را بیان می کند،
نه صرفاً فرکانس کلاک.

پشت صحنه فنی — Under the Hood: آیا DDR4-3200 واقعاً با کلاک 3200MHz کار می کند؟

وقتی روی RAM نوشته می شود:

DDR4-3200

عدد 3200
نرخ موثر انتقال داده را نشان می دهد
و بیان دقیق آن:

3200 MT/s

است.

کلاک پایه مربوط به انتقال DDR
در این مثال حدود:

1600 MHz

است.

چون DDR
در هر چرخه کلاک
دو انتقال انجام می دهد:

1600 MHz
×
2 Transfers per Cycle
=
3200 MT/s

اشتباه رایج — Common Mistake: «RAM 3200MHz»

عبارت «RAM 3200MHz»
در بازار بسیار رایج است
و معمولاً منظور فروشنده و خریدار
DDR4-3200 است.

اما از نظر فنی
بیان دقیق تر:

DDR4-3200
=
3200 MT/s

است،
نه اینکه Clock واقعی حافظه
الزاماً 3200MHz باشد.

Memory Timing چیست؟


زمان بندی حافظه — Memory Timing

Memory Timing
یا «زمان بندی حافظه»
مجموعه ای از مقادیر زمانی
برای عملیات داخلی DRAM است.ممکن است روی یک کیت RAM
اعدادی مانند این ببینید:

16-18-18-38

این اعداد
Timingهای مختلف حافظه را نشان می دهند.

CL چیست؟


تاخیر CAS — CAS Latency

CL
معمولاً به:

CAS Latency

اشاره دارد.

CAS مخفف:

Column Address Strobe

است.

به زبان ساده،
CL تعداد چرخه هایی را
در یکی از مراحل مهم دسترسی حافظه
نشان می دهد.

اشتباه رایج — Common Mistake: CL16 همیشه سریع تر از CL18 است

عدد CL
تعداد Cycle را بیان می کند،
نه زمان مطلق را به تنهایی.

بنابراین برای مقایسه
باید نرخ حافظه نیز در نظر گرفته شود.

مثلاً:

DDR4-3200 CL16

و:

DDR4-3600 CL18

از نظر CAS Latency واقعی
می توانند بسیار نزدیک باشند.

Latency واقعی CL چگونه محاسبه می شود؟

یک رابطه ساده و بسیار کاربردی:

CAS Latency (ns)
≈
CL × 2000 / Data Rate (MT/s)

برای:

DDR4-3200 CL16

داریم:

16 × 2000 / 3200
=
10 ns

و برای:

DDR4-3600 CL18

18 × 2000 / 3600
=
10 ns

پس فقط نگاه کردن به عدد CL
می تواند گمراه کننده باشد.


نانوثانیه — Nanosecond

ns
مخفف Nanosecond
یا «نانوثانیه» است.یک نانوثانیه برابر است با:

0.000000001 Second

Memory Rank چیست؟


رنک حافظه — Memory Rank

Memory Rank
به گروهی از تراشه های حافظه
روی یک ماژول گفته می شود
که کنترلر حافظه
آنها را به عنوان یک مجموعه
برای انتقال داده مدیریت می کند.Rank را نباید
با Channel اشتباه گرفت.

Single Rank و Dual Rank چیست؟

نوع مفهوم
Single Rank ماژول دارای یک Rank قابل انتخاب
Dual Rank ماژول دارای دو Rank قابل انتخاب

Rank Interleaving چیست؟


درهم سازی دسترسی میان رنک ها — Rank Interleaving

Rank Interleaving
یعنی کنترلر حافظه
بتواند دسترسی ها را
میان Rankهای مختلف سازمان دهی کند
تا بخشی از زمان انتظار
بهتر مدیریت شود.
اشتباه رایج — Common Mistake: Dual Rank همان Dual Channel است

این دو کاملاً متفاوت هستند.

Dual Channel
=
Two Memory Channels

Dual Rank
=
Two Ranks on a Memory Module

یک سیستم می تواند
هم Dual Channel باشد
و هم از ماژول های Dual Rank استفاده کند.

ECC چیست؟


کد تصحیح خطا — ECC

ECC
مخفف:

Error-Correcting Code

و به معنی
«کد تصحیح خطا»
است.

حافظه ECC
برای شناسایی
و در شرایط پشتیبانی شده،
اصلاح برخی خطاهای داده
طراحی شده است.

ECC کجا اهمیت بیشتری دارد؟

ECC در سیستم هایی که
صحت داده و پایداری
اهمیت بالایی دارد
بسیار ارزشمند است.

برای مثال:

  • Server
  • Workstationهای حرفه ای
  • محاسبات علمی
  • سیستم های طولانی مدت
  • برخی زیرساخت های سازمانی
نکته مهندسی — Engineering Insight: خرید RAM ECC به تنهایی کافی نیست

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

این موضوع می تواند شامل:

  • CPU
  • Memory Controller
  • Motherboard
  • Firmware / BIOS
  • Memory Module

باشد.


میان افزار راه اندازی سیستم — BIOS / UEFI

BIOS
و
UEFI
محیط های Firmware
یا «میان افزار»
سیستم هستند
که پیش از بارگذاری سیستم عامل
سخت افزار را آماده و پیکربندی می کنند.

Gear Mode چیست؟


نسبت کاری کنترلر حافظه — Gear Mode

Gear Mode
در برخی پلتفرم ها
به نسبت فرکانسی
میان بخش هایی از کنترلر حافظه
و حافظه مربوط می شود.استفاده از Gear متفاوت
می تواند امکان دستیابی
به نرخ حافظه بالاتر را فراهم کند،
اما ممکن است
روی Latency نیز تاثیر بگذارد.

Memory Training چیست؟


آموزش حافظه — Memory Training

Memory Training
یا «فرایند آموزش و تنظیم حافظه»
مرحله ای هنگام راه اندازی سیستم است
که در آن پلتفرم
پارامترهای لازم برای ارتباط پایدار
با RAM را تنظیم و آزمایش می کند.به همین دلیل
در بعضی سیستم ها،
به ویژه پس از تغییر RAM
یا تنظیمات حافظه،
Boot اولیه می تواند
بیشتر طول بکشد.


راه اندازی سیستم — Boot

Boot
یا «راه اندازی»
فرایندی است که
از روشن شدن سیستم آغاز می شود
و تا آماده شدن سیستم عامل
برای استفاده ادامه پیدا می کند.

Memory Profile چیست؟


پروفایل تنظیمات حافظه — Memory Profile

Memory Profile
مجموعه ای از تنظیمات از پیش تعریف شده
برای RAM است
که می تواند شامل:

  • Data Rate
  • Timing
  • Voltage

باشد.

XMP و EXPO چیست؟

اصطلاح مفهوم کلی
XMP پروفایل تنظیمات حافظه که بیشتر با اکوسیستم Intel شناخته می شود
EXPO پروفایل حافظه توسعه یافته برای پلتفرم های AMD مربوطه

JEDEC چیست؟


سازمان استانداردهای حافظه — JEDEC

JEDEC
سازمانی است
که استانداردهای متعددی
در صنعت نیمه هادی و حافظه
تدوین می کند.استانداردهای DDR
نیز در چارچوب مشخصات JEDEC
تعریف می شوند.

وقتی مشخصات CPU می گوید DDR5-5600 یعنی چه؟

این عدد معمولاً
بخشی از مشخصات رسمی
پشتیبانی حافظه پردازنده است.

اما نرخ قابل دستیابی واقعی
می تواند تحت تاثیر:

  • تعداد DIMMها
  • تعداد Rankها
  • مادربرد
  • BIOS
  • Memory Controller
  • نوع CPU
  • نسل پلتفرم
  • تنظیمات حافظه

قرار گیرد.

Memory Overclocking چیست؟


اورکلاک حافظه — Memory Overclocking

Memory Overclocking
یعنی استفاده از حافظه
با تنظیماتی فراتر از
مشخصات پایه یا رسمی
تعریف شده برای یک پلتفرم.این تنظیمات می توانند شامل:

  • Data Rate بالاتر
  • Timing متفاوت
  • Voltage متفاوت

باشند.

اشتباه رایج — Common Mistake: اگر سیستم Boot شد، RAM کاملاً پایدار است

Boot شدن سیستم
به تنهایی
پایداری کامل حافظه را ثابت نمی کند.

تنظیمات ناپایدار حافظه
ممکن است در بار کاری سنگین
باعث:

  • Crash
  • Error
  • Restart
  • خرابی محاسبات
  • رفتار غیرقابل پیش بینی نرم افزار

شوند.

چرا سرعت RAM برای گرافیک مجتمع مهم تر می شود؟

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

بنابراین CPU و GPU مجتمع
ممکن است هر دو
به پهنای باند RAM نیاز داشته باشند.

System RAM
↔
CPU
+
Integrated GPU


معماری حافظه یکپارچه — Unified Memory Architecture

Unified Memory Architecture
یا در این زمینه
«معماری حافظه مشترک»
به ساختاری اشاره دارد
که واحدهای پردازشی
از یک مجموعه حافظه مشترک استفاده می کنند.
تاثیر بر عملکرد — Performance Impact: Single Channel می تواند GPU مجتمع را محدود کند

اگر GPU مجتمع
به RAM سیستم متکی باشد،
کاهش پهنای باند حافظه
می تواند تاثیر بیشتری
نسبت به برخی کاربردهای عادی CPU داشته باشد.

به همین دلیل
در بسیاری از سیستم های دارای iGPU،
پیکربندی مناسب کانال حافظه
اهمیت ویژه ای دارد.

ظرفیت RAM مهم تر است یا سرعت آن؟

ابتدا باید ظرفیت کافی داشته باشید.

اگر برنامه به 20GB RAM نیاز داشته باشد
و سیستم فقط 8GB داشته باشد،
افزایش Data Rate
مشکل کمبود ظرفیت را حل نمی کند.

یک ترتیب منطقی برای انتخاب:

Enough Capacity
→
Correct Channel Configuration
→
Suitable Data Rate
→
Suitable Timings

وقتی RAM کم می آید چه می شود؟

سیستم عامل می تواند
از بخشی از Storage
برای مدیریت کمبود حافظه
استفاده کند.

اما SSD
حتی اگر بسیار سریع باشد،
جایگزین واقعی DRAM
از نظر Latency و رفتار عملکردی نیست.


صفحه بندی حافظه — Paging

Paging
یکی از سازوکارهای مدیریت حافظه
در سیستم عامل است
که داده ها را در واحدهایی به نام Page
مدیریت می کند.در شرایط مختلف،
برخی صفحات حافظه
می توانند میان RAM
و فضای ذخیره سازی جابه جا شوند.


صفحه حافظه — Memory Page

Memory Page
یا «صفحه حافظه»
واحدی با اندازه مشخص
برای مدیریت حافظه مجازی
توسط سیستم عامل و سخت افزار است.

Virtual Memory چیست؟


حافظه مجازی — Virtual Memory

Virtual Memory
یا «حافظه مجازی»
سازوکاری است
که به هر Process
فضای آدرس دهی منطقی مخصوص خود
ارائه می دهد.این آدرس های مجازی
باید به محل های واقعی حافظه
نگاشت شوند.

پشت صحنه فنی — Under the Hood: CPU چگونه آدرس مجازی را به محل واقعی RAM تبدیل می کند؟

برنامه ها معمولاً
مستقیماً با آدرس فیزیکی RAM
کار نمی کنند.

آنها با:

Virtual Address

یا «آدرس مجازی»
کار می کنند.

CPU باید این آدرس را
به:

Physical Address

یا «آدرس فیزیکی»
ترجمه کند.

این کار ما را
به یکی از بخش های مهم معماری CPU می رساند:

MMU
+
Page Table
+
TLB

که موضوع فصل بعدی خواهد بود.

برای انتخاب RAM مناسب CPU چه چیزهایی را بررسی کنیم؟

01
نوع حافظهDDR4، DDR5 یا استاندارد مورد پشتیبانی سیستم را مشخص کنید.
02
ظرفیت کافیابتدا نیاز واقعی نرم افزارها را پوشش دهید.
03
تعداد کانالپیکربندی حافظه را با کانال های پشتیبانی شده CPU هماهنگ کنید.
04
Data Rateنرخ انتقال مناسب پلتفرم را انتخاب کنید.
05
TimingCL و سایر Timingها را همراه Data Rate بررسی کنید.
06
Rankساختار Rank می تواند روی رفتار کنترلر حافظه و Performance تاثیر بگذارد.
07
سازگاری مادربردنوع، ظرفیت و تعداد ماژول های قابل پشتیبانی را بررسی کنید.
08
پایداریبالاترین عدد روی جعبه همیشه بهترین تنظیم عملی نیست.
اشتباهات رایج — Common Mistakes: CPU و RAM
  • گفتن 3200MHz به جای 3200MT/s بدون شناخت تفاوت آنها.
  • فرض اینکه تعداد اسلات RAM همان تعداد Channel است.
  • یکی دانستن Dual Rank و Dual Channel.
  • مقایسه RAM فقط با عدد CL.
  • نادیده گرفتن Data Rate هنگام مقایسه Latency.
  • خرید RAM سریع بدون بررسی پشتیبانی CPU و مادربرد.
  • فرض اینکه فعال شدن XMP یا EXPO در همه سیستم ها تضمین شده است.
  • فرض اینکه Boot شدن سیستم نشانه پایداری کامل RAM است.
  • نادیده گرفتن اهمیت Dual Channel برای GPU مجتمع.
  • اولویت دادن سرعت RAM به ظرفیت مورد نیاز.
  • فرض اینکه SSD می تواند کمبود RAM را بدون افت Performance جبران کند.
  • فرض اینکه همه CPUها تعداد Channel یکسانی دارند.
  • نادیده گرفتن تعداد DIMM و Rank در فرکانس های بالا.
  • فرض اینکه ECC فقط به خود ماژول RAM وابسته است.

سوالات متداول درباره CPU و RAM

Memory Controller چیست؟

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

IMC چیست؟

Integrated Memory Controller
یا کنترلر حافظه یکپارچه است
که در پردازنده های مدرن
در مجموعه CPU قرار دارد.

Dual Channel چیست؟

پیکربندی ای است
که امکان استفاده از دو کانال حافظه
را فراهم می کند.

آیا دو RAM همیشه Dual Channel می شوند؟

خیر.
CPU، مادربرد،
محل نصب ماژول ها
و سازگاری آنها اهمیت دارد.

DDR4-3200 یعنی 3200MHz؟

بیان دقیق نرخ داده آن
3200MT/s است.
اصطلاح 3200MHz در بازار رایج است
اما از نظر فنی دقیق نیست.

MT/s چیست؟

میلیون انتقال داده در ثانیه است
و نرخ انتقال حافظه را بیان می کند.

CL کمتر بهتر است؟

در شرایط برابر می تواند بهتر باشد،
اما CL باید همراه Data Rate
و سایر ویژگی های حافظه بررسی شود.

Dual Rank همان Dual Channel است؟

خیر.
Rank ساختار داخلی ماژول
و Channel مسیر ارتباط حافظه است.

ECC چیست؟

فناوری مرتبط با شناسایی
و اصلاح برخی خطاهای داده در حافظه است.

Memory Training چیست؟

فرایند تنظیم و آزمایش پارامترهای حافظه
هنگام راه اندازی سیستم است.

چرا RAM برای گرافیک مجتمع مهم است؟

چون بسیاری از GPUهای مجتمع
از RAM سیستم استفاده می کنند
و به پهنای باند آن وابسته هستند.

ظرفیت مهم تر است یا سرعت RAM؟

ابتدا ظرفیت کافی اهمیت دارد؛
سپس Channel، Data Rate
و Timing بهینه می شوند.

واژه های جدید این فصل برای واژه نامه نهایی کتاب

  • Memory Controller: کنترلر مسئول مدیریت ارتباط با حافظه.
  • IMC: کنترلر حافظه یکپارچه در مجموعه پردازنده.
  • Memory Channel: کانال ارتباطی کنترلر حافظه و RAM.
  • Single Channel: پیکربندی تک کاناله حافظه.
  • Dual Channel: پیکربندی دو کاناله حافظه.
  • Quad Channel: پیکربندی چهار کاناله حافظه.
  • HEDT: دسکتاپ رده بالا.
  • DIMM: فرم رایج ماژول RAM در دسکتاپ و سرور.
  • SO-DIMM: فرم کوچک تر ماژول حافظه.
  • Memory Bandwidth: حجم داده قابل انتقال حافظه در واحد زمان.
  • Theoretical Bandwidth: حداکثر پهنای باند محاسباتی رابط.
  • DDR: نرخ انتقال داده دوگانه.
  • MHz: واحد اندازه گیری فرکانس.
  • MT/s: میلیون انتقال در ثانیه.
  • Memory Timing: پارامترهای زمان بندی عملیات حافظه.
  • CAS Latency: یکی از تاخیرهای مهم دسترسی DRAM.
  • CL: مقدار CAS Latency بر حسب چرخه.
  • Nanosecond: یک میلیاردم ثانیه.
  • Memory Rank: گروه منطقی تراشه های حافظه روی ماژول.
  • Single Rank: ماژول دارای یک Rank.
  • Dual Rank: ماژول دارای دو Rank.
  • Rank Interleaving: سازمان دهی دسترسی میان چند Rank.
  • ECC: فناوری تشخیص و اصلاح برخی خطاهای حافظه.
  • Firmware: میان افزار سطح پایین سخت افزار.
  • Gear Mode: نسبت کاری بخش هایی از کنترلر حافظه و حافظه.
  • Memory Training: فرایند تنظیم ارتباط پایدار RAM هنگام راه اندازی.
  • Boot: فرایند راه اندازی سیستم.
  • Memory Profile: مجموعه تنظیمات از پیش تعریف شده RAM.
  • XMP: فناوری پروفایل تنظیمات حافظه شناخته شده در اکوسیستم Intel.
  • EXPO: فناوری پروفایل حافظه AMD برای پلتفرم های مربوطه.
  • JEDEC: سازمان تدوین کننده استانداردهای متعدد حافظه و نیمه هادی.
  • Memory Overclocking: استفاده از تنظیمات حافظه فراتر از مشخصات پایه.
  • Unified Memory Architecture: ساختار استفاده مشترک واحدهای پردازشی از حافظه.
  • Paging: مدیریت حافظه بر اساس واحدهایی به نام Page.
  • Memory Page: واحد مدیریت حافظه مجازی.
  • Virtual Memory: فضای آدرس دهی منطقی مدیریت شده توسط سیستم.
  • Virtual Address: آدرس مجازی مورد استفاده برنامه.
  • Physical Address: آدرس متناظر در حافظه فیزیکی.

خلاصه فصل

ارتباط CPU و RAM
فقط به «سرعت RAM»
خلاصه نمی شود.

مسیر کامل تر شامل:

CPU
+
IMC
+
Memory Channels
+
RAM Configuration
+
Data Rate
+
Timings
+
Ranks

است.

برای همین دو سیستم
با CPU یکسان
و حتی ظرفیت RAM یکسان
می توانند Performance متفاوتی داشته باشند.

قانون مهم این فصل:


RAM را با یک عدد مقایسه نکنید.
ظرفیت، تعداد کانال، نرخ انتقال،
Timing، Rank و سازگاری با کنترلر حافظه
باید در کنار یکدیگر بررسی شوند.

فصل 63
سطح: متوسط تا پیشرفته
موضوع: مدیریت و آدرس دهی حافظه
تمرکز: MMU / TLB / Page Table / Page Fault / Huge Pages

برنامه یک آدرس می بیند؛ RAM آدرس دیگری دارد؛ CPU باید میان این دو ترجمه انجام دهد

MMU و TLB چیست؟ CPU چگونه آدرس مجازی را به آدرس فیزیکی RAM تبدیل می کند؟

در فصل قبل دیدیم که
Memory Controller
چگونه ارتباط CPU و RAM را مدیریت می کند.
اما پیش از دسترسی واقعی به حافظه،
یک مسئله مهم دیگر باید حل شود:
پردازنده باید بداند
آدرس مورد استفاده برنامه
به کدام محل واقعی حافظه مربوط است.

برنامه ها معمولاً
مستقیماً با محل فیزیکی RAM کار نمی کنند.
آنها با فضایی به نام
Virtual Address Space یا «فضای آدرس مجازی»
سروکار دارند.

در سطح ساده:

Virtual Address
→
Address Translation
→
Physical Address

این ترجمه یکی از وظایف مهم
زیرسیستم مدیریت حافظه پردازنده است.

در این فصل چه چیزهایی یاد می گیریم؟

  • Virtual Address چیست.
  • Physical Address چیست.
  • Virtual Address Space چیست.
  • MMU چیست.
  • Address Translation چگونه انجام می شود.
  • Page چیست.
  • Page Table چیست.
  • Page Table Entry چیست.
  • TLB چیست و چرا وجود آن ضروری است.
  • TLB Hit و TLB Miss چه هستند.
  • Page Walk چیست.
  • Page Fault چیست.
  • Minor و Major Page Fault چه تفاوتی دارند.
  • Huge Page چیست.
  • چرا اندازه Page روی TLB تاثیر دارد.
  • Memory Protection چگونه با آدرس دهی حافظه ارتباط دارد.
  • چرا Virtual Memory فقط «استفاده از SSD به جای RAM» نیست.

Virtual Address چیست؟


آدرس مجازی — Virtual Address

Virtual Address
یا «آدرس مجازی»
آدرسی است که برنامه و CPU
در چارچوب فضای آدرس مجازی
برای مراجعه به داده یا دستور
از آن استفاده می کنند.این آدرس
الزاماً همان شماره محل واقعی
داده در RAM نیست.

Physical Address چیست؟


آدرس فیزیکی — Physical Address

Physical Address
یا «آدرس فیزیکی»
آدرسی در فضای حافظه فیزیکی سیستم است
که سخت افزار حافظه
می تواند بر اساس آن
به محل مربوطه دسترسی پیدا کند.

چرا اصلاً به آدرس مجازی نیاز داریم؟

اگر تمام برنامه ها
مستقیماً با آدرس های فیزیکی RAM کار می کردند،
مدیریت حافظه بسیار پیچیده تر می شد.

Virtual Memory
امکان ایجاد یک فضای آدرس منطقی
برای هر Process را فراهم می کند.

این ساختار مزایایی مانند:

  • جداسازی فضای حافظه Processها
  • حفاظت بهتر از حافظه
  • مدیریت انعطاف پذیر RAM
  • اشتراک کنترل شده برخی نواحی حافظه
  • جابجایی و نگاشت انعطاف پذیر صفحات

را امکان پذیر می کند.


فرایند — Process

Process
یا «فرایند»
نمونه در حال اجرای یک برنامه
همراه با منابع و وضعیت اجرایی آن است.چند Process
می توانند همزمان در سیستم وجود داشته باشند
و هرکدام فضای آدرس مجازی
مخصوص خود را داشته باشند.

Virtual Address Space چیست؟


فضای آدرس مجازی — Virtual Address Space

Virtual Address Space
یا «فضای آدرس مجازی»
مجموعه آدرس هایی است
که یک Process
می تواند در محیط مجازی خود
از آنها استفاده کند.دو Process مختلف
می توانند یک Virtual Address یکسان داشته باشند،
اما آن آدرس ها
به Physical Addressهای متفاوتی
نگاشت شوند.

نکته مهندسی — Engineering Insight: یک آدرس یکسان می تواند برای دو برنامه به دو محل متفاوت اشاره کند

فرض کنید Process A
و Process B
هر دو به آدرس مجازی فرضی:

0x1000

دسترسی داشته باشند.

این موضوع به معنی
دسترسی آنها به یک محل فیزیکی مشترک نیست.

سیستم می تواند:

Process A:
0x1000
→
Physical Location A

Process B:
0x1000
→
Physical Location B

را ایجاد کند.

این یکی از پایه های
جداسازی حافظه برنامه ها است.

MMU چیست؟


واحد مدیریت حافظه — Memory Management Unit

MMU
مخفف:

Memory Management Unit

و به معنی
«واحد مدیریت حافظه»
است.

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

Address Translation چیست؟


ترجمه آدرس — Address Translation

Address Translation
یا «ترجمه آدرس»
فرایند تبدیل:

Virtual Address
→
Physical Address

است.

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

Page چیست؟


صفحه حافظه — Memory Page
سیستم حافظه مجازی
فضای آدرس را معمولاً
به بلوک هایی با اندازه مشخص
تقسیم می کند.

به هر یک از این بلوک ها:

Page

یا «صفحه حافظه»
گفته می شود.

اندازه رایج Page
در بسیاری از سیستم ها:

4 KB

است؛
هرچند اندازه های دیگری نیز وجود دارند.

Page Frame چیست؟


قاب صفحه — Page Frame

Page Frame
یا «قاب صفحه»
یک بلوک در حافظه فیزیکی است
که می تواند
یک Page از حافظه مجازی
به آن نگاشت شود.

بنابراین می توانیم
مفهوم اصلی را این گونه ببینیم:

Virtual Page
→
Physical Page Frame

Page Table چیست؟


جدول صفحات — Page Table

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

PTE چیست؟


ورودی جدول صفحه — Page Table Entry

PTE
مخفف:

Page Table Entry

و به معنی
«ورودی جدول صفحه»
است.

هر PTE می تواند
اطلاعات مربوط به یک نگاشت
و ویژگی های آن صفحه را نگهداری کند.

برای مثال اطلاعاتی درباره:

  • محل صفحه فیزیکی
  • وضعیت معتبر بودن نگاشت
  • مجوز خواندن یا نوشتن
  • برخی ویژگی های حفاظتی

مشکل Page Table چیست؟

اگر CPU
برای هر دسترسی حافظه
مجبور باشد ابتدا چند دسترسی دیگر
برای پیدا کردن ترجمه آدرس انجام دهد،
هزینه بسیار زیادی ایجاد می شود.

تصور کنید:

Memory Access
→
Address Translation
→
More Memory Accesses
→
Actual Data Access

اینجاست که
یکی از Cacheهای بسیار مهم CPU
وارد عمل می شود:

TLB

TLB چیست؟


حافظه نهان ترجمه آدرس — Translation Lookaside Buffer

TLB
مخفف:

Translation Lookaside Buffer

است.

ترجمه مفهومی مناسب آن:
«حافظه نهان ترجمه آدرس»
است.

TLB ترجمه های اخیر
یا پرکاربرد آدرس های مجازی
به فیزیکی را نگهداری می کند
تا CPU مجبور نباشد
برای هر دسترسی
دوباره Page Table را بررسی کند.

نکته مهندسی — Engineering Insight: TLB در اصل Cache آدرس ها است

در فصل قبل دیدیم
CPU Cache داده و دستورها را
نزدیک پردازنده نگه می دارد.

TLB نیز مفهوم مشابهی دارد،
اما چیزی که Cache می کند
خود داده برنامه نیست.

TLB نتیجه ترجمه:

Virtual Page
→
Physical Page

را نگهداری می کند.

بنابراین:

CPU Cache
=
Cache of Data / Instructions

TLB
=
Cache of Address Translations

TLB Hit چیست؟


یافتن ترجمه در TLB — TLB Hit
اگر ترجمه آدرس مورد نیاز
در TLB موجود باشد،
به این اتفاق:

TLB Hit

گفته می شود.

در این حالت
پردازنده می تواند
ترجمه آدرس را سریع تر
در اختیار داشته باشد.

TLB Miss چیست؟


پیدا نشدن ترجمه در TLB — TLB Miss
اگر ترجمه مورد نیاز
در TLB وجود نداشته باشد،
TLB Miss
رخ می دهد.

در این حالت
باید ترجمه آدرس
از ساختار Page Table
به دست آید.

اشتباه رایج — Common Mistake: TLB Miss همان Page Fault است

خیر.

TLB Miss
فقط یعنی ترجمه آدرس
در TLB پیدا نشده است.

ممکن است Page Table
یک نگاشت کاملاً معتبر داشته باشد.

اما Page Fault
وضعیت دیگری است
که نیازمند رسیدگی سیستم عامل
به دسترسی مورد نظر است.

TLB Miss
≠
Page Fault

Page Walk چیست؟


پیمایش جدول صفحات — Page Walk

Page Walk
یا «پیمایش جدول صفحات»
فرایند بررسی ساختار Page Table
برای پیدا کردن اطلاعات
ترجمه یک Virtual Address است.در معماری های مدرن،
Page Table
معمولاً ساختاری چند سطحی دارد.

بنابراین پیدا کردن یک ترجمه
می تواند نیازمند بررسی
چند سطح از جدول باشد.

Multi-Level Page Table چیست؟


جدول صفحات چند سطحی — Multi-Level Page Table

Multi-Level Page Table
یا «جدول صفحات چند سطحی»
ساختاری سلسله مراتبی
برای مدیریت نگاشت آدرس ها است.به جای یک جدول بسیار بزرگ و تخت،
اطلاعات در چند سطح
سازمان دهی می شوند.

پشت صحنه فنی — Under the Hood: هنگام TLB Miss چه اتفاقی می افتد؟

فرض کنیم CPU
برای یک Virtual Address
ترجمه موجود در TLB ندارد.

در حالت ساده:

Virtual Address
→
TLB Lookup
→
TLB Miss
→
Page Table Walk

اگر Page Table
نگاشت معتبر را داشته باشد:

Page Table Entry Found
→
Translation Loaded into TLB
→
Memory Access Continues

یعنی TLB Miss
الزاماً باعث مراجعه به SSD
یا حتی Page Fault نمی شود.

آیا CPU برای Page Walk هم بهینه سازی دارد؟

بله.

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

جزئیات دقیق
میان معماری ها متفاوت است،
اما ممکن است اطلاعات
مربوط به مراحل Page Walk
نیز Cache شوند.

بنابراین Performance ترجمه آدرس
فقط به ظرفیت یک TLB ساده
محدود نیست.

Page Fault چیست؟


خطای صفحه — Page Fault

Page Fault
یا «خطای صفحه»
زمانی رخ می دهد
که دسترسی به یک Virtual Page
نیازمند رسیدگی سیستم عامل باشد.برخلاف نام آن،
Page Fault همیشه
به معنی خرابی یا خطای خطرناک نیست.

بعضی Page Faultها
بخشی طبیعی
از مدیریت حافظه سیستم عامل هستند.

روند مفهومی:

CPU Memory Access
→
Translation Problem
→
Page Fault
→
Operating System
→
Resolve or Reject Access


سیستم عامل — Operating System

Operating System
یا «سیستم عامل»
نرم افزار پایه ای است
که منابع سخت افزاری سیستم
مانند CPU، RAM، Storage
و دستگاه های ورودی و خروجی
را مدیریت می کند
و محیط اجرای برنامه ها را فراهم می سازد.

Minor Page Fault و Major Page Fault چه تفاوتی دارند؟

نوع معنی مفهومی هزینه نسبی
Minor Page Fault سیستم عامل می تواند مسئله را بدون خواندن صفحه از Storage حل کند کمتر
Major Page Fault برای تامین صفحه، دسترسی به Storage لازم می شود بسیار بیشتر

خطای صفحه جزئی — Minor Page Fault
در Minor Page Fault
سیستم عامل می تواند
نگاشت مورد نیاز را
بدون خواندن داده صفحه
از Storage فراهم کند.


خطای صفحه عمده — Major Page Fault
در Major Page Fault
داده مورد نیاز
باید از Storage
مانند SSD یا HDD
دریافت شود.

این اتفاق می تواند
هزینه زمانی بسیار بیشتری
نسبت به دسترسی عادی RAM داشته باشد.

تاثیر بر عملکرد — Performance Impact: چرا کمبود RAM می تواند سیستم را ناگهان بسیار کند کند؟

اگر Working Set برنامه ها
از ظرفیت قابل استفاده RAM
فراتر رود،
سیستم عامل ممکن است
مجبور شود صفحات بیشتری را
میان RAM و Storage مدیریت کند.

اگر اجرای برنامه
مرتباً منتظر داده ای باشد
که باید از Storage بازگردانده شود،
Latency بسیار افزایش پیدا می کند.

بنابراین تفاوت میان:

Cache Hit
→
RAM Access
→
SSD Access

فقط چند عدد روی کاغذ نیست؛
هر مرحله می تواند
مرتبه متفاوتی از زمان انتظار
ایجاد کند.

Working Set چیست؟


مجموعه داده فعال — Working Set

Working Set
یا «مجموعه داده فعال»
به مجموعه صفحات یا داده هایی گفته می شود
که یک برنامه
در یک بازه زمانی
به طور فعال به آنها نیاز دارد.اگر Working Set
به خوبی در RAM جا شود،
نیاز به جابه جایی مکرر
با Storage کاهش می یابد.

Swap چیست؟


فضای مبادله — Swap

Swap
یا «فضای مبادله»
فضایی روی Storage است
که سیستم عامل می تواند
در مدیریت حافظه مجازی
از آن استفاده کند.این مفهوم
در سیستم عامل های مختلف
ممکن است با پیاده سازی ها
و نام های متفاوتی همراه باشد.

Pagefile چیست؟


فایل صفحه بندی — Pagefile

Pagefile
یا «فایل صفحه بندی»
اصطلاحی است
که به ویژه در Windows
برای فایلی روی Storage
که در مدیریت حافظه مجازی
استفاده می شود
شناخته شده است.
اشتباه رایج — Common Mistake: Virtual Memory یعنی بخشی از SSD که نقش RAM را بازی می کند

این تعریف ناقص است.

Virtual Memory
در اصل یک سیستم
برای مدیریت فضای آدرس مجازی،
نگاشت حافظه،
حفاظت
و مدیریت صفحات است.

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

بنابراین:

Virtual Memory
≠
SSD Used as Fake RAM

Huge Page چیست؟


صفحه بزرگ حافظه — Huge Page

Huge Page
یا «صفحه بزرگ حافظه»
صفحه ای با اندازه بزرگ تر
از Page استاندارد معمول سیستم است.برای مثال،
به جای تعداد بسیار زیادی
Page کوچک،
می توان بخشی از حافظه را
با Pageهای بزرگ تر نگاشت کرد.

Huge Pages چه فایده ای دارند؟

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

فرض کنید هر TLB Entry
یک Page را پوشش دهد.

با Page بزرگ تر،
هر Entry می تواند
محدوده بزرگ تری از حافظه
را پوشش دهد.

Larger Page
→
More Memory Covered per TLB Entry

TLB Reach چیست؟


پوشش TLB — TLB Reach

TLB Reach
یا «محدوده پوشش TLB»
مقدار حافظه ای است
که ترجمه های موجود در TLB
می توانند پوشش دهند.به صورت مفهومی:

TLB Reach
≈
Number of TLB Entries
×
Page Size

نکته مهندسی — Engineering Insight: چرا Page بزرگ می تواند TLB Miss را کاهش دهد؟

فرض کنید برای توضیح ساده،
TLB بتواند 512 ترجمه را نگهداری کند.

اگر Page Size برابر 4KB باشد:

512 × 4 KB
=
2 MB

اما اگر Page Size برابر 2MB باشد:

512 × 2 MB
=
1 GB

بنابراین همان تعداد Entry
می تواند محدوده بسیار بزرگ تری
از حافظه را پوشش دهد.

این مثال صرفاً برای توضیح مفهوم است؛
ساختار واقعی TLB
و تعداد Entryها
به معماری پردازنده بستگی دارد.

آیا Huge Page همیشه بهتر است؟

خیر.

Page بزرگ تر
می تواند مزایایی برای TLB داشته باشد،
اما ممکن است:

  • مدیریت حافظه را کم انعطاف تر کند،
  • هدررفت فضای حافظه را در برخی شرایط افزایش دهد،
  • برای همه Workloadها مفید نباشد،
  • و نیازمند پشتیبانی سیستم عامل و نرم افزار باشد.

Internal Fragmentation چیست؟


هدررفت داخلی حافظه — Internal Fragmentation

Internal Fragmentation
یا «هدررفت داخلی حافظه»
زمانی رخ می دهد
که یک بلوک تخصیص داده شده
بزرگ تر از مقدار واقعی مورد نیاز باشد
و بخشی از فضای داخل آن
بدون استفاده بماند.

Memory Protection چیست؟


حفاظت حافظه — Memory Protection

Memory Protection
یا «حفاظت حافظه»
مجموعه سازوکارهایی است
که مشخص می کند
چه کد یا Processی
اجازه دسترسی
به چه بخش هایی از حافظه را دارد.این قوانین می توانند
دسترسی هایی مانند:

  • Read
  • Write
  • Execute

را کنترل کنند.


مجوزهای خواندن، نوشتن و اجرا — Read / Write / Execute

Read
یعنی اجازه خواندن داده.Write
یعنی اجازه تغییر یا نوشتن داده.

Execute
یعنی اجازه اجرای محتوای آن ناحیه
به عنوان دستور پردازنده.

پشت صحنه فنی — Under the Hood: چرا یک برنامه نمی تواند آزادانه RAM برنامه دیگر را بخواند؟

هر Process
در فضای آدرس مجازی خود کار می کند.

Page Table
فقط نگاشت آدرس نیست؛
اطلاعات مربوط به مجوزهای دسترسی
نیز می تواند در ساختارهای مرتبط
ذخیره شود.

MMU هنگام دسترسی
این محدودیت ها را نیز بررسی می کند.

اگر دسترسی مجاز نباشد،
CPU می تواند Exception ایجاد کند
تا سیستم عامل
وضعیت را مدیریت کند.

Exception چیست؟


رویداد استثنایی پردازنده — Exception

Exception
یا «رویداد استثنایی پردازنده»
رویدادی است
که هنگام اجرای دستور
رخ می دهد
و باعث می شود CPU
جریان عادی اجرای برنامه را
برای رسیدگی به وضعیت خاص
تغییر دهد.Page Fault
یکی از نمونه های مهم
Exceptionهای مرتبط با حافظه است.

Segmentation Fault چیست؟


خطای دسترسی غیرمجاز حافظه — Segmentation Fault

Segmentation Fault
اصطلاحی شناخته شده
برای حالتی است
که یک برنامه
دسترسی حافظه نامعتبری انجام می دهد
و سیستم عامل
اجرای آن را متوقف می کند.این اصطلاح
بیشتر در سیستم های Unix-like
مشاهده می شود.


سیستم های شبه یونیکس — Unix-like

Unix-like
یا «شبه یونیکس»
به خانواده ای از سیستم عامل ها
و محیط هایی گفته می شود
که طراحی یا رفتار آنها
از Unix تاثیر گرفته است.Linux
یکی از شناخته شده ترین نمونه ها است.

32-bit و 64-bit چه ارتباطی با حافظه دارند؟

یکی از تفاوت های مهم
معماری های 32 بیتی و 64 بیتی
به فضای آدرس دهی مربوط می شود.

از نظر ریاضی،
یک فضای آدرس 32 بیتی
می تواند:

2^32
=
4,294,967,296
Bytes

آدرس متمایز ایجاد کند
که تقریباً برابر 4GiB است.

اشتباه رایج — Common Mistake: CPU 64-bit یعنی تمام 64 بیت آدرس فیزیکی استفاده می شوند

خیر.

64-bit بودن معماری
الزاماً به این معنی نیست
که تمام 64 بیت
برای آدرس دهی فیزیکی RAM
در یک پردازنده مشخص پیاده سازی شده باشند.

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


گیبی بایت — GiB

GiB
مخفف:

Gibibyte

است.

یک GiB برابر است با:

2^30 Bytes
=
1,073,741,824 Bytes

GiB با GB
از نظر تعریف دقیق
یکسان نیست.

تفاوت GB و GiB چیست؟

واحد مبنای محاسبه تعداد Byte
GB ده دهی 1,000,000,000
GiB توان های 2 1,073,741,824

Memory-Mapped I/O چیست؟


ورودی و خروجی نگاشت شده در فضای حافظه — Memory-Mapped I/O

Memory-Mapped I/O
یا «ورودی و خروجی نگاشت شده در فضای حافظه»
روشی است
که در آن بخشی از فضای آدرس
برای ارتباط با سخت افزار
و Registerهای دستگاه ها
استفاده می شود.بنابراین هر Physical Address
الزاماً به یک سلول DRAM
اشاره نمی کند.

تاثیر بر عملکرد — Performance Impact: هزینه واقعی دسترسی حافظه فقط Latency خود RAM نیست

برای دسترسی موثر به داده،
عوامل متعددی ممکن است دخیل باشند:

TLB
+
Page Translation
+
Cache Hierarchy
+
Memory Controller
+
DRAM

بنابراین وقتی درباره
Memory Latency صحبت می کنیم،
رفتار واقعی برنامه
می تواند بسیار پیچیده تر
از یک عدد ساده روی مشخصات RAM باشد.

مسیر کامل یک دسترسی حافظه را کنار هم بگذاریم

اکنون می توانیم
بخش مهمی از مطالب سه فصل اخیر
را به هم متصل کنیم.

Program
→
Virtual Address
→
TLB Lookup
→
Address Translation
→
Cache Hierarchy
→
Memory Controller
→
DRAM

البته در CPU واقعی،
اجرای بسیاری از این مراحل
می تواند همپوشانی،
موازی سازی
و بهینه سازی های بسیار پیچیده تری داشته باشد.

اشتباهات رایج — Common Mistakes: آدرس دهی و حافظه مجازی
  • فرض اینکه برنامه مستقیماً آدرس فیزیکی RAM را می بیند.
  • یکی دانستن Virtual Address و Physical Address.
  • تعریف Virtual Memory فقط به عنوان «SSD به جای RAM».
  • یکی دانستن TLB Miss و Page Fault.
  • فرض اینکه هر Page Fault به معنی خرابی سیستم است.
  • فرض اینکه هر Page Fault نیازمند خواندن از SSD است.
  • نادیده گرفتن هزینه Page Table Walk.
  • فرض اینکه Huge Pages در همه برنامه ها Performance را افزایش می دهند.
  • نادیده گرفتن Memory Protection در Page Table.
  • فرض اینکه CPU 64-bit الزاماً از فضای کامل 64 بیتی برای RAM فیزیکی استفاده می کند.
  • یکی دانستن GB و GiB.
  • فرض اینکه تمام فضای Physical Address فقط متعلق به RAM است.

سوالات متداول درباره MMU، TLB و Virtual Memory

MMU چیست؟

Memory Management Unit
یا واحد مدیریت حافظه،
بخش سخت افزاری مهمی است
که در ترجمه آدرس
و اعمال قوانین دسترسی حافظه نقش دارد.

Virtual Address چیست؟

آدرسی است
که برنامه در فضای آدرس مجازی خود
با آن کار می کند
و الزاماً همان آدرس فیزیکی RAM نیست.

Physical Address چیست؟

آدرسی در فضای آدرس فیزیکی سیستم است
که پس از ترجمه آدرس
برای دسترسی سخت افزاری استفاده می شود.

Page Table چیست؟

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

TLB چیست؟

Cache بسیار سریعی
برای نگهداری ترجمه های اخیر
آدرس مجازی به فیزیکی است.

TLB Miss چیست؟

یعنی ترجمه مورد نیاز
در TLB موجود نیست
و باید از ساختارهای Page Table
به دست آید.

Page Walk چیست؟

فرایند پیمایش Page Table
برای پیدا کردن ترجمه
یک آدرس مجازی است.

Page Fault چیست؟

رویدادی است که
هنگام یک دسترسی حافظه
نیازمند رسیدگی سیستم عامل می شود.

آیا Page Fault همیشه بد است؟

خیر.
برخی Page Faultها
بخشی طبیعی از مدیریت حافظه هستند.

Major Page Fault چیست؟

حالتی است
که برای تامین صفحه مورد نیاز
دسترسی به Storage لازم می شود
و معمولاً هزینه زمانی بالایی دارد.

Huge Page چیست؟

صفحه حافظه ای با اندازه بزرگ تر
از Page استاندارد معمول است
که می تواند پوشش موثر TLB
را افزایش دهد.

آیا Virtual Memory همان Pagefile است؟

خیر.
Pagefile فقط یکی از ابزارهایی است
که سیستم عامل می تواند
در چارچوب مدیریت حافظه مجازی
از آن استفاده کند.

چرا TLB برای Performance مهم است؟

چون ترجمه آدرس
در دسترسی های حافظه بسیار پرتکرار است
و TLB می تواند
نیاز به Page Walkهای مکرر را کاهش دهد.

واژه های جدید این فصل برای واژه نامه نهایی کتاب

  • Virtual Address: آدرس مجازی مورد استفاده برنامه.
  • Physical Address: آدرس در فضای حافظه فیزیکی سیستم.
  • Virtual Address Space: فضای آدرس مجازی یک Process.
  • Process: نمونه در حال اجرای یک برنامه.
  • MMU: واحد مدیریت حافظه.
  • Address Translation: ترجمه آدرس مجازی به فیزیکی.
  • Page: بلوک پایه مدیریت حافظه مجازی.
  • Page Frame: بلوک متناظر در حافظه فیزیکی.
  • Page Table: ساختار نگاشت صفحات مجازی به حافظه فیزیکی.
  • PTE: ورودی جدول صفحه.
  • TLB: حافظه نهان ترجمه آدرس.
  • TLB Hit: پیدا شدن ترجمه آدرس در TLB.
  • TLB Miss: پیدا نشدن ترجمه آدرس در TLB.
  • Page Walk: پیمایش جدول صفحات برای یافتن ترجمه آدرس.
  • Multi-Level Page Table: جدول صفحات چند سطحی.
  • Page Fault: دسترسی حافظه ای که نیازمند رسیدگی سیستم عامل است.
  • Minor Page Fault: Page Fault بدون نیاز به خواندن صفحه از Storage.
  • Major Page Fault: Page Fault نیازمند دریافت صفحه از Storage.
  • Working Set: مجموعه داده یا صفحات فعال مورد نیاز برنامه.
  • Swap: فضای مبادله مورد استفاده مدیریت حافظه.
  • Pagefile: فایل صفحه بندی مورد استفاده سیستم عامل.
  • Huge Page: صفحه حافظه با اندازه بزرگ تر.
  • TLB Reach: محدوده حافظه قابل پوشش توسط ترجمه های TLB.
  • Internal Fragmentation: هدررفت فضای داخل بلوک تخصیص داده شده.
  • Memory Protection: سازوکار کنترل مجوزهای دسترسی به حافظه.
  • Read: مجوز خواندن.
  • Write: مجوز نوشتن.
  • Execute: مجوز اجرای کد.
  • Exception: رویداد استثنایی پردازنده که جریان اجرای عادی را تغییر می دهد.
  • Segmentation Fault: خطای ناشی از دسترسی نامعتبر به حافظه.
  • Unix-like: سیستم عامل یا محیط شبه یونیکس.
  • GiB: گیبی بایت؛ برابر 2 به توان 30 بایت.
  • Memory-Mapped I/O: نگاشت منابع سخت افزاری در فضای آدرس حافظه.

خلاصه فصل

برنامه ها معمولاً
مستقیماً با محل واقعی داده در RAM
کار نمی کنند.

آنها از Virtual Address استفاده می کنند
و MMU با کمک ساختارهایی مانند
Page Table و TLB
ترجمه آدرس را مدیریت می کند.

Virtual Address
→
TLB
→
Page Table
→
Physical Address

TLB برای کاهش هزینه
ترجمه های مکرر استفاده می شود.

در صورت TLB Miss،
ممکن است Page Walk لازم شود؛
اما این اتفاق
با Page Fault یکسان نیست.

Page Fault نیز همیشه
به معنی خرابی نیست
و می تواند بخشی طبیعی
از مدیریت حافظه باشد.

مهم ترین قانون این فصل:


دسترسی CPU به RAM فقط پیدا کردن یک شماره خانه در حافظه نیست؛
پیش از رسیدن به داده،
ترجمه آدرس، TLB، Page Table،
قوانین حفاظتی و سلسله مراتب حافظه
می توانند در مسیر قرار داشته باشند.

فصل 64
سطح: متوسط تا پیشرفته
موضوع: معماری داخلی CPU
تمرکز: Pipeline / Branch / Prediction / Speculation / Out-of-Order

CPU سریع فقط CPU با فرکانس بالا نیست؛ مهم است پردازنده در هر لحظه چند کار مفید را جلو ببرد

Pipeline و Branch Prediction چیست؟ پردازنده چگونه دستورهای آینده را حدس می زند؟

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

یکی از راهکارهای بنیادی
برای افزایش کارایی پردازنده
استفاده از:
Pipeline یا «خط لوله پردازشی»
است.

اما Pipeline یک مشکل مهم دارد.
گاهی CPU هنوز نمی داند
دستور بعدی باید از کدام مسیر برنامه خوانده شود.

این وضعیت به ویژه
هنگام دستورهای شرطی یا Branch رخ می دهد.

برای حل این مشکل،
پردازنده تلاش می کند
مسیر آینده برنامه را پیش بینی کند.

Pipeline
→
Branch
→
Prediction
→
Speculation
→
Useful Work or Recovery

در این فصل چه چیزهایی یاد می گیریم؟

  • Pipeline چیست.
  • Pipeline Stage چیست.
  • Instruction Throughput و Latency چه تفاوتی دارند.
  • Branch چیست.
  • Conditional Branch چیست.
  • Branch Prediction چیست.
  • Branch Predictor چیست.
  • Taken و Not Taken چه معنی دارند.
  • Branch Target چیست.
  • BTB چیست.
  • Prediction Accuracy چیست.
  • Branch Misprediction چیست.
  • Misprediction Penalty چیست.
  • Pipeline Flush چیست.
  • Speculative Execution چیست.
  • Out-of-Order Execution چیست.
  • In-Order و Out-of-Order چه تفاوتی دارند.
  • Dependency چیست.
  • Data Dependency چیست.
  • Instruction-Level Parallelism چیست.
  • چرا معماری CPU می تواند از فرکانس مهم تر باشد.

Pipeline چیست؟


خط لوله پردازشی — Pipeline

Pipeline
یا «خط لوله پردازشی»
روشی برای تقسیم پردازش دستور
به چند مرحله است.در این ساختار،
چند دستور مختلف می توانند
همزمان در مراحل متفاوت پردازش قرار داشته باشند.

Pipeline را با یک مثال ساده بفهمیم

یک خط تولید کارخانه را تصور کنید.

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

اما می توان مراحل را تقسیم کرد:

Stage 1
→
Stage 2
→
Stage 3
→
Stage 4

وقتی محصول اول وارد مرحله دوم شد،
محصول دوم می تواند
وارد مرحله اول شود.

CPU نیز با منطق بسیار پیچیده تری
از همین ایده استفاده می کند.

Pipeline Stage چیست؟


مرحله خط لوله — Pipeline Stage

Pipeline Stage
یا «مرحله خط لوله»
یکی از مراحل پردازش دستور
در Pipeline است.برای توضیح مفهومی،
پردازش دستور می تواند
شامل مراحلی مانند:

  • دریافت دستور
  • رمزگشایی دستور
  • آماده سازی عملیات
  • اجرا
  • ثبت نتیجه

باشد.

ساختار واقعی CPUهای مدرن
بسیار پیچیده تر از این مدل ساده است.

Instruction Fetch چیست؟


واکشی دستور — Instruction Fetch

Instruction Fetch
یا «واکشی دستور»
مرحله ای است
که پردازنده دستورهای مورد نیاز
برای اجرا را دریافت می کند.این دستورها معمولاً
از ساختارهای حافظه نزدیک پردازنده
مانند Instruction Cache
تامین می شوند.

Decode چیست؟


رمزگشایی دستور — Instruction Decode

Decode
یا «رمزگشایی»
مرحله ای است
که CPU دستور دریافت شده را
تفسیر می کند
تا مشخص شود چه عملیاتی
باید انجام شود.

Execution چیست؟


اجرای دستور — Execution

Execution
یا «اجرا»
بخشی از فرایند است
که عملیات مورد نیاز دستور
توسط منابع اجرایی پردازنده
انجام می شود.

Retirement چیست؟


نهایی سازی دستور — Instruction Retirement

Instruction Retirement
یا «نهایی سازی دستور»
مرحله ای است
که نتیجه یک دستور اجرا شده
به صورت رسمی
جزئی از وضعیت معماری برنامه می شود.این مفهوم در CPUهای
دارای اجرای خارج از ترتیب
اهمیت زیادی دارد.

پشت صحنه فنی — Under the Hood: چگونه چند دستور همزمان در Pipeline قرار می گیرند؟

برای توضیح ساده
یک Pipeline چهار مرحله ای را تصور کنید:

Fetch
→
Decode
→
Execute
→
Retire

در یک لحظه ممکن است:

Instruction A
=
Retire

Instruction B
=
Execute

Instruction C
=
Decode

Instruction D
=
Fetch

باشد.

بنابراین چند دستور
در یک زمان
در حال پیشروی هستند،
هرچند در مراحل متفاوت قرار دارند.

Latency و Throughput چه تفاوتی دارند؟

مفهوم معنی فارسی سوال اصلی
Latency تاخیر یک عملیات چقدر زمان می برد تا کامل شود؟
Throughput نرخ انجام کار در یک بازه زمانی چند عملیات می توان انجام داد؟

نرخ انجام کار — Throughput

Throughput
یا «نرخ انجام کار»
نشان می دهد
یک سیستم در واحد زمان
چه مقدار کار
می تواند پردازش کند.Pipeline می تواند
Throughput را افزایش دهد
حتی اگر Latency یک دستور
به همان نسبت کاهش پیدا نکند.

اشتباه رایج — Common Mistake: Pipeline یعنی هر دستور سریع تر تمام می شود

الزاماً خیر.

هدف اصلی Pipeline
افزایش استفاده از منابع
و بالا بردن نرخ پردازش دستورها است.

ممکن است زمان عبور یک دستور
از تمام مراحل
همچنان چندین Cycle باشد،
اما دستورهای بیشتری
به صورت همپوشان پردازش شوند.

Branch چیست؟


انشعاب در مسیر اجرای برنامه — Branch

Branch
یا «انشعاب»
دستوری است
که می تواند مسیر اجرای برنامه
را تغییر دهد.یعنی CPU ممکن است
به جای ادامه مستقیم دستورها،
مجبور شود
از محل دیگری در کد
ادامه اجرا را انجام دهد.

Conditional Branch چیست؟


انشعاب شرطی — Conditional Branch

Conditional Branch
یا «انشعاب شرطی»
یعنی مسیر اجرای برنامه
به نتیجه یک شرط بستگی دارد.مثلاً:

if (temperature > limit)
{
reduce_speed();
}

پردازنده باید بفهمد
آیا شرط برقرار است یا خیر.

Taken و Not Taken یعنی چه؟


انتخاب یا عدم انتخاب مسیر انشعاب — Taken / Not Taken
اگر Branch باعث شود
اجرای برنامه
به مقصد مشخص شده انشعاب منتقل شود،
معمولاً می گوییم:

Branch Taken

یعنی «مسیر انشعاب انتخاب شده است».

اگر اجرای برنامه
در مسیر بعدی معمول ادامه پیدا کند:

Branch Not Taken

یعنی «مسیر انشعاب انتخاب نشده است».

چرا Branch برای Pipeline مشکل ایجاد می کند؟

Pipeline برای کارایی بالا
نیاز دارد بداند
دستورهای بعدی از کجا باید دریافت شوند.

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

CPU دو انتخاب دارد:

  • صبر کند تا نتیجه Branch مشخص شود.
  • مسیر احتمالی را حدس بزند و کار را ادامه دهد.

CPUهای مدرن
معمولاً گزینه دوم را انتخاب می کنند.

Branch Prediction چیست؟


پیش بینی انشعاب — Branch Prediction

Branch Prediction
یا «پیش بینی انشعاب»
سازوکاری است
که پردازنده با استفاده از آن
تلاش می کند
نتیجه یک Branch را
پیش از مشخص شدن قطعی آن
پیش بینی کند.

Branch Predictor چیست؟


واحد پیش بینی انشعاب — Branch Predictor

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

نکته مهندسی — Engineering Insight: چرا یک حلقه برای Branch Predictor قابل پیش بینی است؟

یک Loop یا «حلقه تکرار»
را تصور کنید
که 1000 بار اجرا می شود.

در بسیاری از تکرارها،
Branch مربوط به ادامه حلقه
رفتار مشابهی دارد.

Taken
Taken
Taken
Taken
Taken
…
Not Taken

چنین الگوهایی
می توانند برای Predictor
قابل یادگیری باشند.

البته Predictorهای واقعی
بسیار پیچیده تر
از صرفاً نگاه کردن
به آخرین نتیجه Branch هستند.


حلقه تکرار — Loop

Loop
یا «حلقه تکرار»
ساختاری در برنامه نویسی است
که مجموعه ای از دستورها
را بر اساس یک شرط
چند بار اجرا می کند.

Branch Target چیست؟


مقصد انشعاب — Branch Target

Branch Target
یا «مقصد انشعاب»
آدرسی است
که در صورت انتخاب مسیر Branch،
اجرای برنامه باید
از آن محل ادامه پیدا کند.

BTB چیست؟


حافظه مقصد انشعاب — Branch Target Buffer

BTB
مخفف:

Branch Target Buffer

است.

ترجمه مفهومی آن
«حافظه مقصد انشعاب»
است.

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

Prediction Accuracy چیست؟


دقت پیش بینی — Prediction Accuracy

Prediction Accuracy
یا «دقت پیش بینی»
نشان می دهد
چه سهمی از پیش بینی های پردازنده
درست بوده اند.دقت بالاتر Predictor
معمولاً باعث کاهش
دفعات بازیابی ناشی از
پیش بینی اشتباه می شود.

Speculative Execution چیست؟


اجرای حدسی — Speculative Execution

Speculative Execution
یا «اجرای حدسی»
یعنی CPU
بر اساس پیش بینی خود
برخی عملیات مسیر احتمالی آینده
را پیش از قطعی شدن آن مسیر
انجام دهد.اگر پیش بینی درست باشد،
بخش مهمی از کار
از قبل انجام شده است.

پشت صحنه فنی — Under the Hood: CPU چگونه روی یک حدس کار واقعی انجام می دهد؟

CPU به یک Branch می رسد.

Predictor حدس می زند:

Prediction
=
Taken

سپس پردازنده
از مقصد پیش بینی شده
دستورها را Fetch و پردازش می کند.

Branch
→
Prediction
→
Fetch Predicted Path
→
Decode
→
Execute Speculatively

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

Branch Misprediction چیست؟


پیش بینی اشتباه انشعاب — Branch Misprediction
اگر Branch Predictor
مسیر اشتباه را پیش بینی کند،
به آن:

Branch Misprediction

یا «پیش بینی اشتباه انشعاب»
گفته می شود.

Pipeline Flush چیست؟


تخلیه مسیر اشتباه خط لوله — Pipeline Flush
وقتی پردازنده متوجه شود
مسیر اشتباهی را دنبال کرده است،
دستورهای مربوط به مسیر نادرست
نباید به عنوان نتیجه معتبر برنامه
نهایی شوند.

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

این فرایند
معمولاً با مفهوم:

Pipeline Flush

توضیح داده می شود.

Misprediction Penalty چیست؟


هزینه پیش بینی اشتباه — Misprediction Penalty

Misprediction Penalty
یا «هزینه پیش بینی اشتباه»
هزینه زمانی و پردازشی
ناشی از دنبال کردن مسیر نادرست
و بازگشت به مسیر صحیح است.این هزینه
می تواند شامل از دست رفتن
چندین Cycle کاری باشد.

پشت صحنه فنی — Under the Hood: یک پیش بینی اشتباه چه چیزی را هدر می دهد؟

فرض کنید CPU
مسیر A را پیش بینی کرده است:

Branch
→
Predict A
→
Fetch A
→
Decode A
→
Execute A

اما نتیجه واقعی:

Correct Path
=
B

حالا کار انجام شده
روی مسیر اشتباه
باید کنار گذاشته شود
و مسیر B تامین شود.

Wrong Path
→
Discard
→
Redirect
→
Fetch Correct Path

هرچه Pipeline عمیق تر
و میزان کار حدسی بیشتر باشد،
هزینه بازیابی
می تواند قابل توجه باشد.

Deep Pipeline چیست؟


خط لوله عمیق — Deep Pipeline

Deep Pipeline
یا «خط لوله عمیق»
به Pipelineای گفته می شود
که پردازش دستور
به تعداد بیشتری Stage
تقسیم شده است.Pipeline عمیق
می تواند مزایایی داشته باشد،
اما یکی از چالش های آن
افزایش بالقوه هزینه
برخی توقف ها و بازیابی ها است.

اشتباه رایج — Common Mistake: هرچه Pipeline عمیق تر باشد CPU سریع تر است

چنین رابطه ساده ای وجود ندارد.

طراحی Pipeline
مجموعه ای از مصالحه ها
میان فرکانس،
Latency،
Prediction،
مصرف انرژی،
پیچیدگی
و کارایی واقعی است.

به همین دلیل
فقط با تعداد Stageهای Pipeline
نمی توان سرعت یک CPU را تعیین کرد.

Out-of-Order Execution چیست؟


اجرای خارج از ترتیب — Out-of-Order Execution

Out-of-Order Execution
یا «اجرای خارج از ترتیب»
تکنیکی است
که به CPU اجازه می دهد
در صورت امکان
بعضی دستورهای آماده را
پیش از دستور قبلی که منتظر داده است
اجرا کند.هدف این است
که منابع پردازنده
به دلیل انتظار یک دستور
بی استفاده نمانند.

نکته مهندسی — Engineering Insight: CPU چرا باید ترتیب اجرای داخلی را تغییر دهد؟

سه دستور فرضی را تصور کنید:

Instruction 1
=
Waiting for Memory

Instruction 2
=
Depends on Instruction 1

Instruction 3
=
Independent

اگر CPU کاملاً منتظر بماند،
Instruction 3 نیز
بدون دلیل متوقف می شود.

یک پردازنده Out-of-Order
ممکن است Instruction 3 را
زودتر اجرا کند
و در این فاصله
منتظر آماده شدن Instruction 1 بماند.

In-Order Execution چیست؟


اجرای به ترتیب — In-Order Execution

In-Order Execution
یا «اجرای به ترتیب»
مدلی است
که دستورها با محدودیت بیشتری
بر اساس ترتیب برنامه
پیش می روند.طراحی In-Order
می تواند ساده تر و کم مصرف تر باشد،
اما فرصت های کمتری
برای پنهان کردن برخی توقف ها
در اختیار پردازنده قرار دهد.

Dependency چیست؟


وابستگی میان دستورها — Instruction Dependency

Dependency
یا «وابستگی»
یعنی اجرای یک دستور
به نتیجه یا وضعیت
مربوط به دستور دیگری وابسته باشد.

Data Dependency چیست؟


وابستگی داده ای — Data Dependency

Data Dependency
یا «وابستگی داده ای»
زمانی رخ می دهد
که یک دستور
برای اجرای صحیح
به داده تولید شده
توسط دستور دیگری نیاز داشته باشد.مثال:

A = B + C

D = A × 2

دستور دوم
تا زمانی که مقدار A آماده نشده باشد
نمی تواند نتیجه صحیح خود را تولید کند.

Independent Instructions چیست؟


دستورهای مستقل — Independent Instructions

Independent Instructions
یا «دستورهای مستقل»
دستورهایی هستند
که برای اجرای خود
منتظر نتیجه مستقیم
یکدیگر نیستند.وجود تعداد بیشتری
از عملیات مستقل
فرصت بیشتری برای اجرای موازی
در اختیار CPU قرار می دهد.

ILP چیست؟


موازی سازی در سطح دستور — Instruction-Level Parallelism

ILP
مخفف:

Instruction-Level Parallelism

و به معنی
«موازی سازی در سطح دستور»
است.

ILP نشان دهنده فرصت هایی است
که برای پیش بردن
چند عملیات مستقل
به صورت همزمان یا همپوشان
وجود دارد.

Superscalar چیست؟


اجرای چند دستور در یک چرخه — Superscalar

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

Width در معماری CPU یعنی چه؟


پهنای پردازش داخلی — CPU Width
وقتی در تحلیل معماری CPU
از اصطلاح Width
یا «پهنای پردازش» صحبت می شود،
معمولاً منظور ظرفیت بخش مشخصی
از Pipeline برای رسیدگی
به چند عملیات در هر Cycle است.

برای مثال ممکن است درباره:

  • Fetch Width
  • Decode Width
  • Dispatch Width
  • Retire Width

صحبت شود.

این اعداد لزوماً
با یکدیگر برابر نیستند.

Dispatch چیست؟


ارسال عملیات برای پردازش داخلی — Dispatch

Dispatch
یا «ارسال عملیات»
یکی از مراحل داخلی پردازنده است
که در آن عملیات آماده شده
به ساختارهای مربوط
به زمان بندی و اجرا
تحویل داده می شوند.

Instruction Scheduler چیست؟


زمان بند دستورها — Instruction Scheduler

Instruction Scheduler
یا «زمان بند دستورها»
بخشی از پردازنده است
که آماده بودن عملیات
و منابع مورد نیاز آنها را بررسی می کند
تا عملیات مناسب
برای اجرا انتخاب شوند.

Execution Unit چیست؟


واحد اجرایی — Execution Unit

Execution Unit
یا «واحد اجرایی»
بخشی از CPU است
که نوع مشخصی از عملیات
را انجام می دهد.پردازنده می تواند
چندین نوع واحد اجرایی
برای عملیات مختلف داشته باشد.

Reorder Buffer چیست؟


بافر مرتب سازی مجدد — Reorder Buffer

Reorder Buffer
که معمولاً با:

ROB

نشان داده می شود،
یکی از ساختارهای مهم
در بسیاری از پردازنده های
Out-of-Order است.

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

پشت صحنه فنی — Under the Hood: خارج از ترتیب اجرا کن، اما مرتب تحویل بده

این یکی از ایده های کلیدی
CPU مدرن است.

در داخل پردازنده:

Execute
=
Out of Order

اما در سطح معماری برنامه:

Retire
=
In Program Order

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

CPU Front-End چیست؟


بخش جلویی پردازنده — CPU Front-End

Front-End
یا «بخش جلویی پردازنده»
اصطلاحی برای مجموعه بخش هایی است
که وظایفی مانند
پیش بینی مسیر،
تامین دستور
و Decode را انجام می دهند.اگر Front-End
نتواند عملیات کافی
برای بخش های بعدی فراهم کند،
واحدهای اجرایی ممکن است
بدون کار بمانند.

CPU Back-End چیست؟


بخش اجرایی پردازنده — CPU Back-End

Back-End
یا «بخش اجرایی پردازنده»
اصطلاحی برای بخش هایی است
که زمان بندی،
اجرا،
دسترسی داده
و نهایی سازی عملیات
را مدیریت می کنند.

به شکل بسیار ساده:

Front-End
→
Find and Prepare Work
→
Back-End
→
Execute Work

Bottleneck در Pipeline چیست؟


گلوگاه — Bottleneck

Bottleneck
یا «گلوگاه»
بخشی از سیستم است
که ظرفیت یا سرعت آن
عملکرد کل مسیر را محدود می کند.در CPU،
گلوگاه ممکن است
در شرایط مختلف
در بخش های متفاوتی ایجاد شود.

نمونه هایی از محدودیت های احتمالی داخل CPU

  • کمبود دستور در Front-End
  • Branch Misprediction زیاد
  • محدودیت Decode
  • وابستگی زیاد میان دستورها
  • کمبود واحد اجرایی مناسب
  • Cache Miss
  • TLB Miss
  • انتظار برای RAM
  • محدودیت پهنای بخش های داخلی Pipeline

این مفاهیم چه ارتباطی با IPC دارند؟

در فصل های قبلی
با IPC آشنا شدیم.

IPC به شکل ساده
تعداد دستورهای تکمیل شده
در هر Cycle را توصیف می کند.

حالا بهتر می توان فهمید
چرا IPC فقط به یک عامل وابسته نیست.

مواردی مانند:

  • Branch Prediction
  • Pipeline Design
  • Execution Width
  • Out-of-Order Window
  • Cache Performance
  • Memory Latency
  • Instruction Dependencies

می توانند روی IPC واقعی تاثیر بگذارند.

تاثیر بر عملکرد — Performance Impact: چرا 5GHz به تنهایی چیزی درباره سرعت CPU نمی گوید؟

فرکانس مشخص می کند
CPU در هر ثانیه
چند Cycle دارد.

اما باید بدانیم
در هر Cycle
چه مقدار کار مفید انجام می شود.

یک مدل ساده برای درک موضوع:

Performance
∝
Clock Frequency
×
Useful Work per Cycle

اگر یک معماری
Branch Prediction بهتر،
Cache موثرتر،
Pipeline مناسب تر
و اجرای موازی بیشتری داشته باشد،
ممکن است در فرکانس مشابه
کار بیشتری انجام دهد.

چرا بعضی Branchها برای CPU سخت تر هستند؟

Branchهایی که الگوی منظم دارند
معمولاً راحت تر پیش بینی می شوند.

اما اگر نتیجه Branch
به داده ای با رفتار
کم قابل پیش بینی وابسته باشد،
Predictor ممکن است
اشتباه بیشتری داشته باشد.

بنابراین ساختار داده
و رفتار برنامه
می تواند روی کارایی
Branch Prediction تاثیر بگذارد.

نکته مهندسی — Engineering Insight: دو کد با تعداد عملیات مشابه می توانند سرعت متفاوتی داشته باشند

فرض کنید دو الگوریتم
تقریباً تعداد مشابهی
عملیات انجام دهند.

اگر یکی از آنها
Branchهای بسیار قابل پیش بینی داشته باشد
و دیگری Branchهای نامنظم،
رفتار Pipeline
می تواند متفاوت باشد.

بنابراین شمارش ساده
تعداد خطوط کد
یا حتی تعداد عملیات
همیشه Performance واقعی
را مشخص نمی کند.

آیا Speculative Execution فقط مسئله Performance است؟

خیر.

اجرای حدسی
یکی از فناوری های مهم
افزایش Performance CPUهای مدرن است،
اما رفتارهای Microarchitectural
ناشی از اجرای حدسی
در برخی شرایط
می توانند پیامدهای امنیتی نیز داشته باشند.

این موضوع
ما را به خانواده ای
از آسیب پذیری های مهم
مانند Spectre می رساند.

جزئیات امنیتی این موضوع
در فصل جداگانه امنیت CPU
بررسی خواهد شد.


وضعیت ریزمعماری — Microarchitectural State

Microarchitectural State
یا «وضعیت ریزمعماری»
به وضعیت داخلی بخش هایی از CPU
گفته می شود
که الزاماً بخشی از وضعیت رسمی
قابل مشاهده معماری دستورها نیستند.Cacheها،
Predictorها
و برخی ساختارهای داخلی پردازنده
نمونه هایی مرتبط با این مفهوم هستند.

Architectural State چیست؟


وضعیت معماری — Architectural State

Architectural State
یا «وضعیت معماری»
بخشی از وضعیت پردازنده است
که طبق معماری دستورها
برای نرم افزار قابل مشاهده تعریف شده است.برای مثال،
وضعیت Registerهای معماری
می تواند بخشی از این مفهوم باشد.


ثبات پردازنده — Register

Register
یا «ثبات»
فضای ذخیره سازی بسیار کوچک
و بسیار نزدیک به واحدهای پردازشی CPU است
که برای نگهداری داده،
آدرس
یا وضعیت مورد نیاز عملیات
استفاده می شود.
اشتباهات رایج — Common Mistakes: Pipeline و Branch Prediction
  • فرض اینکه Pipeline یعنی یک دستور فوراً اجرا می شود.
  • یکی دانستن Latency و Throughput.
  • فرض اینکه CPU هنگام Branch همیشه منتظر نتیجه می ماند.
  • فرض اینکه Branch Prediction فقط یک حدس ساده بر اساس آخرین Branch است.
  • فرض اینکه Speculative Execution یعنی نتیجه حدسی مستقیماً نتیجه نهایی برنامه می شود.
  • فرض اینکه TLB و Branch Predictor یک کار انجام می دهند.
  • نادیده گرفتن هزینه Branch Misprediction.
  • فرض اینکه Pipeline عمیق تر همیشه سریع تر است.
  • فرض اینکه Out-of-Order Execution ترتیب منطقی برنامه را خراب می کند.
  • نادیده گرفتن Data Dependency.
  • فرض اینکه تعداد Core تنها عامل Performance CPU است.
  • مقایسه CPUها فقط بر اساس GHz.
  • فرض اینکه IPC یک عدد ثابت برای هر CPU است.
  • نادیده گرفتن تاثیر Workload بر رفتار Pipeline.

حالا مسیر اجرای دستور در CPU مدرن را کنار هم بگذاریم

با کنار هم گذاشتن مفاهیم این فصل
می توان یک مدل ساده ساخت:

Branch Prediction
→
Instruction Fetch
→
Decode
→
Dispatch
→
Scheduling
→
Out-of-Order Execution
→
Retirement

در کنار این مسیر،
Cache،
TLB،
Memory Subsystem
و Dependencyها
نیز دائماً روی سرعت پیشروی دستورها
تاثیر می گذارند.

سوالات متداول درباره Pipeline و Branch Prediction

Pipeline چیست؟

روشی برای تقسیم پردازش دستور
به چند مرحله است
تا چند دستور بتوانند
به صورت همپوشان
در مراحل مختلف پردازش شوند.

Branch چیست؟

دستوری است
که می تواند مسیر اجرای برنامه
را تغییر دهد.

Branch Prediction چیست؟

سازوکاری است
که CPU با آن
مسیر احتمالی آینده برنامه
را پیش بینی می کند.

Speculative Execution چیست؟

اجرای حدسی عملیات
بر اساس مسیر پیش بینی شده
پیش از قطعی شدن آن مسیر است.

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

کار مربوط به مسیر اشتباه
باید کنار گذاشته شود
و پردازنده از مسیر صحیح
ادامه دهد.

Pipeline Flush چیست؟

فرایند کنار گذاشتن
عملیات مسیر نامعتبر
و هدایت Pipeline
به مسیر صحیح است.

Out-of-Order Execution چیست؟

اجرای عملیات آماده
خارج از ترتیب اولیه برنامه
برای استفاده بهتر
از منابع CPU است.

آیا نتیجه دستورها هم خارج از ترتیب ثبت می شود؟

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

ILP چیست؟

Instruction-Level Parallelism
یا موازی سازی در سطح دستور،
فرصت اجرای همزمان
یا همپوشان عملیات مستقل است.

چرا دو CPU با GHz برابر سرعت متفاوتی دارند؟

چون معماری داخلی،
IPC،
Cache،
Branch Prediction،
Pipeline،
واحدهای اجرایی
و عوامل متعدد دیگری
روی مقدار کار مفید
انجام شده در هر Cycle
تاثیر دارند.

آیا Branch Prediction همیشه درست است؟

خیر.
Predictor می تواند اشتباه کند
و این اشتباه
هزینه بازیابی ایجاد می کند.

آیا Speculative Execution خطرناک است؟

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

واژه های جدید این فصل برای واژه نامه نهایی کتاب

  • Pipeline: خط لوله پردازشی.
  • Pipeline Stage: مرحله ای از خط لوله پردازش دستور.
  • Instruction Fetch: واکشی دستور برای پردازش.
  • Decode: رمزگشایی و تفسیر دستور.
  • Execution: اجرای عملیات دستور.
  • Instruction Retirement: نهایی سازی نتیجه دستور در وضعیت معماری.
  • Latency: زمان مورد نیاز برای تکمیل یک عملیات.
  • Throughput: مقدار کار قابل انجام در واحد زمان.
  • Branch: دستور تغییر مسیر اجرای برنامه.
  • Conditional Branch: انشعابی که مسیر آن به یک شرط وابسته است.
  • Taken: انتخاب شدن مسیر Branch.
  • Not Taken: انتخاب نشدن مسیر Branch.
  • Branch Prediction: پیش بینی مسیر انشعاب.
  • Branch Predictor: واحد سخت افزاری پیش بینی انشعاب.
  • Loop: حلقه تکرار در برنامه.
  • Branch Target: مقصد اجرای یک Branch.
  • BTB: ساختار نگهداری اطلاعات مقصد Branch.
  • Prediction Accuracy: میزان صحت پیش بینی ها.
  • Speculative Execution: اجرای حدسی مسیر پیش بینی شده.
  • Branch Misprediction: پیش بینی اشتباه مسیر Branch.
  • Pipeline Flush: تخلیه عملیات مربوط به مسیر نامعتبر.
  • Misprediction Penalty: هزینه ناشی از پیش بینی اشتباه.
  • Deep Pipeline: خط لوله دارای مراحل پردازشی بیشتر.
  • Out-of-Order Execution: اجرای خارج از ترتیب عملیات آماده.
  • In-Order Execution: اجرای عملیات با ترتیب محدودتر مطابق جریان برنامه.
  • Dependency: وابستگی میان عملیات.
  • Data Dependency: وابستگی یک دستور به داده تولید شده توسط دستور دیگر.
  • Independent Instructions: دستورهای مستقل از نتیجه مستقیم یکدیگر.
  • ILP: موازی سازی در سطح دستور.
  • Superscalar: معماری قادر به پیش بردن چند عملیات در یک Cycle.
  • CPU Width: ظرفیت بخش مشخصی از پردازنده برای رسیدگی به چند عملیات در هر Cycle.
  • Dispatch: ارسال عملیات آماده به ساختارهای زمان بندی و اجرا.
  • Instruction Scheduler: زمان بند عملیات و دستورهای آماده اجرا.
  • Execution Unit: واحد سخت افزاری انجام عملیات.
  • ROB: Reorder Buffer یا بافر مرتب سازی مجدد.
  • Front-End: بخش تامین، پیش بینی و آماده سازی دستورهای CPU.
  • Back-End: بخش زمان بندی و اجرای عملیات CPU.
  • Bottleneck: گلوگاهی که عملکرد کل مسیر را محدود می کند.
  • Microarchitectural State: وضعیت داخلی ریزمعماری پردازنده.
  • Architectural State: وضعیت رسمی قابل مشاهده طبق معماری پردازنده.
  • Register: ثبات بسیار سریع داخل پردازنده.

خلاصه فصل

CPU مدرن
منتظر نمی ماند
تا هر دستور کاملاً تمام شود
و بعد سراغ دستور بعدی برود.

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

Branch Prediction
تلاش می کند
مسیر آینده برنامه را حدس بزند
تا Front-End متوقف نشود.

Speculative Execution
اجازه می دهد
CPU روی مسیر پیش بینی شده
از قبل کار کند.

Out-of-Order Execution نیز
تلاش می کند
عملیات مستقلی را که آماده هستند
جلو بیندازد
تا منابع CPU بیکار نمانند.

Prediction
+
Pipeline
+
Out-of-Order Execution
+
Cache
+
Memory System
=
Modern CPU Performance

مهم ترین قانون این فصل:


فرکانس فقط می گوید CPU چند Cycle در ثانیه دارد؛
معماری پردازنده تعیین می کند
چه مقدار کار مفید می تواند
از آن Cycleها استخراج کند.

مرکز ارتباط
ارتباط با استوک شاپ
پیام به استوک شاپ
دستیار خرید و فروش استوک شاپ
برای شروع گفتگو فقط شماره موبایل خود را تایید کنید.
ورود / ثبت‌نام