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

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

فصل 85
سطح: پیشرفته
موضوع: ارتباط پردازنده با حافظه اصلی
تمرکز: IMC / Memory Channel / DDR / Bandwidth / Rank / DIMM

RAM مستقیماً و بدون واسطه با هسته های CPU صحبت نمی کند؛ کنترلر حافظه یکی از مهم ترین بخش های مسیر میان پردازنده و حافظه اصلی است

<

Integrated Memory Controller
و Memory Channel؛ CPU چگونه با RAM ارتباط برقرار می کند؟

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

اما ارتباط CPU و RAM
فقط یک مسیر ساده
برای انتقال Byteها نیست.

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

یکی از اجزای کلیدی
این فرآیند:

Integrated Memory Controller

یا به اختصار:

IMC

است.

CPU Core
→
Cache Hierarchy
→
Memory Controller
→
Memory Channel
→
DRAM

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

  • Memory Controller چیست.
  • Integrated Memory Controller چیست.
  • چرا کنترلر حافظه وارد خود CPU شد.
  • Memory Channel چیست.
  • Single Channel و Dual Channel چه تفاوتی دارند.
  • Quad Channel و کانال های بیشتر کجا استفاده می شوند.
  • Bus Width چیست.
  • DDR چگونه داده را منتقل می کند.
  • MT/s با MHz چه تفاوتی دارد.
  • Memory Bandwidth چگونه محاسبه می شود.
  • Memory Latency چیست.
  • DIMM و SO-DIMM چیست.
  • Memory Rank چیست.
  • Single Rank و Dual Rank چه تفاوتی دارند.
  • Bank و Bank Group چیست.
  • چرا تعداد ماژول RAM با تعداد Channel یکی نیست.
  • چرا Dual Channel همیشه Performance را دو برابر نمی کند.
  • چرا گرافیک مجتمع به پهنای باند RAM حساس است.
  • Memory Controller چگونه روی اورکلاک RAM اثر می گذارد.
  • ECC و Registered Memory چه ارتباطی با پلتفرم های حرفه ای دارند.

Memory Controller چیست؟


کنترلر حافظه — Memory Controller
Memory Controller
بخشی از سیستم است
که ارتباط میان پردازنده
و حافظه DRAM
را مدیریت می کند.

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

Integrated Memory Controller چیست؟

در بسیاری از پردازنده های مدرن،
Memory Controller
داخل خود Processor Package
یا Dieهای مرتبط با پردازنده
قرار دارد.

به این معماری:

Integrated Memory Controller

گفته می شود.

عبارت رایج آن:

IMC

است.

قبل از IMC ارتباط CPU و RAM چگونه بود؟

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

این چیپ
معمولاً بخشی از
Northbridge
بود.

CPU
→
Front-Side Bus
→
Northbridge
→
Memory Controller
→
RAM

در معماری های مدرن
بخش بزرگی از این مسیر
به داخل پردازنده
منتقل شده است.

چرا Memory Controller وارد CPU شد؟

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

  • کاهش بخشی از Latency ارتباط با حافظه،
  • حذف برخی واسطه های قدیمی،
  • کنترل مستقیم تر Memory Interface،
  • امکان طراحی بهتر برای پردازنده های چند هسته ای،
  • و افزایش مقیاس پذیری Memory Subsystem.

مسیر یک دسترسی به RAM چگونه است؟

به صورت بسیار ساده شده،
اگر داده مورد نیاز
در Cacheهای نزدیک پردازنده
پیدا نشود،
درخواست می تواند
به سمت Memory Subsystem
حرکت کند.

Core
→
L1
→
L2
→
Last-Level Cache
→
Memory Controller
→
DRAM

مسیر دقیق
به Microarchitecture
وابسته است
و نباید این نمودار
را نقشه فیزیکی یکسان
برای تمام CPUها در نظر گرفت.

Memory Channel چیست؟


کانال حافظه — Memory Channel
Memory Channel
یک رابط مستقل
برای ارتباط Memory Controller
با حافظه است.

افزایش تعداد Channelها
می تواند امکان انتقال
مقدار بیشتری داده
در واحد زمان
را فراهم کند.

Single Channel چیست؟

اگر Memory Subsystem
فقط از یک Channel فعال
برای انتقال داده استفاده کند،
سیستم در حالت:

Single Channel

کار می کند.

در یک سیستم DDR معمولی،
یک کانال حافظه
معمولاً مسیر داده ای
با عرض مجموع 64 بیت
در اختیار دارد.

Dual Channel چیست؟

در Dual Channel،
Memory Controller
می تواند از دو Channel
برای ارتباط با حافظه
استفاده کند.

Channel A
+
Channel B

در شرایط مناسب،
این ساختار
پهنای باند نظری حافظه
را نسبت به یک Channel
افزایش می دهد.

تفاوت مفهومی Single Channel و Dual Channel

Single Channel:
CPU
⇄
64-bit Memory Path
⇄
RAM

Dual Channel:
CPU
⇄
Channel A
+
Channel B
⇄
RAM

نکته مهم این است
که Channel
را نباید با
تعداد ماژول های RAM
یکی دانست.

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

خیر.

تعداد ماژول ها
و تعداد Channelهای فعال
دو مفهوم متفاوت هستند.

مادربرد،
CPU،
نحوه سیم کشی Slotها،
ظرفیت ماژول ها
و محل نصب آنها
می توانند تعیین کنند
حافظه در چه حالتی
کار کند.

به همین دلیل
هنگام نصب RAM
باید راهنمای مادربرد
یا سیستم
بررسی شود.

چرا مادربرد چهار Slot RAM دارد ولی CPU ممکن است Dual Channel باشد؟

چون تعداد Slot
الزاماً برابر
با تعداد Memory Channel نیست.

یک مادربرد Dual Channel
می تواند برای هر Channel
بیش از یک DIMM Slot
داشته باشد.

Channel A
→
DIMM A1
/
DIMM A2

Channel B
→
DIMM B1
/
DIMM B2

بنابراین چهار Slot
می توانند همچنان
متعلق به دو Channel باشند.

Quad Channel چیست؟

Quad Channel
یعنی Memory Controller
چهار کانال حافظه
در اختیار دارد.

Channel A
+
Channel B
+
Channel C
+
Channel D

چنین طراحی هایی
بیشتر در برخی
پلتفرم های Workstation،
HEDT
و Server
دیده می شوند.

آیا پردازنده می تواند بیشتر از چهار Memory Channel داشته باشد؟

بله.

پردازنده های Server
می توانند تعداد بسیار بیشتری
Memory Channel
نسبت به سیستم های مصرفی
داشته باشند.

دلیل اصلی
نیاز به Memory Bandwidth
بسیار بیشتر
برای تغذیه تعداد زیادی Core
و Workloadهای حجیم است.

پشت صحنه فنی — Under the Hood: چرا CPU چند کانال حافظه می خواهد؟

تصور کنید
ده ها Core
همزمان
درخواست داده داشته باشند.

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

افزایش تعداد Channelها
یکی از راه های
افزایش پهنای باند کل
Memory Subsystem است.

More Channels
→
More Aggregate Data Paths
→
Higher Potential Memory Bandwidth

به همین دلیل
پردازنده های Server
معمولاً Memory Subsystem
بسیار گسترده تری
از پردازنده های مصرفی دارند.

Memory Bus Width چیست؟

Bus Width
نشان می دهد
در هر انتقال
چند Bit داده
می توانند روی مسیر
جابه جا شوند.

برای یک کانال معمولی
DDR بدون در نظر گرفتن
بیت های اضافی برخی پیاده سازی ها:

64 bits
=
8 bytes

این عدد
در محاسبه
پهنای باند نظری
اهمیت دارد.

DDR چیست؟


نرخ داده دوگانه — Double Data Rate
DDR
مخفف:

Double Data Rate

است.

این فناوری
امکان انتقال داده
در دو لبه
سیگنال Clock
را فراهم می کند.

MT/s و MHz چه تفاوتی دارند؟

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

MHz
واحد فرکانس است،
در حالی که:

MT/s
=
Mega Transfers per Second

نرخ انتقال
را بیان می کند.

برای مثال
وقتی حافظه ای
با عنوان:

DDR4-3200

معرفی می شود،
مقدار 3200
به طور صحیح
نرخ انتقال موثر
بر حسب MT/s است،
نه Clock واقعی 3200 MHz.

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

برای یک Channel
با Data Bus
برابر 64 Bit:

64 bits
÷
8
=
8 bytes

بنابراین:

Theoretical Bandwidth
=
Transfer Rate
×
8 Bytes
×
Number of Channels

مثال: پهنای باند DDR4-3200

برای یک Channel:

3200 MT/s
×
8 Bytes
=
25,600 MB/s

یعنی تقریباً:

25.6 GB/s

برای دو Channel نظری:

25.6 GB/s
×
2
=
51.2 GB/s

چند نمونه از پهنای باند نظری یک کانال

حافظه نرخ انتقال پهنای باند نظری یک کانال
DDR4-2666 2666 MT/s حدود 21.3 GB/s
DDR4-3200 3200 MT/s 25.6 GB/s
DDR5-4800 4800 MT/s 38.4 GB/s
DDR5-5600 5600 MT/s 44.8 GB/s
DDR5-6400 6400 MT/s 51.2 GB/s

این اعداد
پهنای باند نظری هستند
و Performance واقعی
می تواند کمتر باشد.

چرا ساختار Channel در DDR5 کمی متفاوت است؟

در DIMMهای DDR5،
ساختار داخلی کانال
نسبت به نسل های قبلی
تغییر کرده است.

یک DIMM استاندارد DDR5
به جای یک Data Channel
واحد 64 بیتی،
از دو Subchannel مستقل
32 بیتی برای داده
استفاده می کند.

DDR5 DIMM
→
2 × 32-bit Subchannels

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

اما نباید از این موضوع
نتیجه گرفت
که یک DIMM DDR5
روی یک پلتفرم معمولی
معادل دو کانال کامل
64 بیتی نسل های قبلی است.

Memory Latency چیست؟

Bandwidth
مقدار داده قابل انتقال
در واحد زمان را نشان می دهد.

Latency
نشان می دهد
پاسخ به یک درخواست
چقدر زمان می برد.

Bandwidth
=
How Much Data?

Latency
=
How Long To Get It?

این دو مفهوم
مرتبط هستند
اما یکسان نیستند.

CAS Latency چیست؟

یکی از Timingهای معروف RAM:

CAS Latency
/
CL

است.

CL تعداد Cycleهای مربوط
به بخشی از فرآیند
پاسخ DRAM را بیان می کند.

اما CL به تنهایی
Latency واقعی حافظه
را مشخص نمی کند.

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

چرا CL کمتر همیشه به معنی RAM سریع تر نیست؟

فرض کنید دو حافظه
CL متفاوتی دارند،
اما نرخ انتقال آنها
نیز متفاوت است.

تعداد Cycle
به تنهایی کافی نیست.

باید زمان واقعی Cycle
نیز در نظر گرفته شود.

به همین دلیل:

Lower CL
≠
Automatically Lower Real Latency

DIMM چیست؟


ماژول حافظه — DIMM
DIMM
فرم رایج ماژول RAM
در بسیاری از
سیستم های Desktop،
Workstation
و Server است.

DIMM
=
Dual Inline Memory Module

SO-DIMM چیست؟

SO-DIMM
نسخه کوچک تر
ماژول حافظه است
که در بسیاری از:

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

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

SO-DIMM
=
Small Outline DIMM

آیا RAM همیشه به صورت DIMM یا SO-DIMM است؟

خیر.

در بسیاری از دستگاه های
باریک و کم مصرف،
Memory Packageها
می توانند مستقیماً
روی برد
لحیم شده باشند.

در این حالت
امکان ارتقا
ممکن است محدود
یا کاملاً حذف شده باشد.

LPDDR چیست؟

LPDDR
خانواده ای از حافظه
با تمرکز ویژه
بر مصرف انرژی پایین
و طراحی مناسب
دستگاه های Mobile
و سیستم های کم مصرف است.

LPDDR
=
Low Power Double Data Rate

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

Memory Rank چیست؟


رنک حافظه — Memory Rank
Rank
مجموعه ای از
Memory Chipها است
که با هم
یک Data Width مناسب
برای Channel
فراهم می کنند
و به صورت یک واحد
توسط Memory Controller
انتخاب می شوند.

Single Rank و Dual Rank چیست؟

یک Memory Module
می تواند
یک Rank
یا چند Rank
داشته باشد.

1R
=
Single Rank

2R
=
Dual Rank

Rank
با Channel
یک مفهوم نیست.

اشتباه رایج — Common Mistake: Dual Rank همان Dual Channel است

خیر.

Channel
مسیر ارتباط Memory Controller
با حافظه است.

Rank
سازمان دهی داخلی
Chipهای حافظه
روی یک Module
را توصیف می کند.

Memory Channel
≠
Memory Rank

Rank Interleaving چیست؟

وجود چند Rank
می تواند به Memory Controller
اجازه دهد
برخی عملیات را
میان Rankهای مختلف
بهتر همپوشانی کند.

در حالی که یک Rank
مشغول بخشی از
عملیات DRAM است،
کنترلر ممکن است
بتواند روی Rank دیگری
کار مفیدی انجام دهد.

این رفتار
در برخی Workloadها
می تواند
Memory-Level Parallelism
را بهبود دهد.

DRAM Bank چیست؟

DRAM
به بخش های داخلی
متعددی تقسیم می شود
که Bank
یکی از سطوح مهم
این سازمان دهی است.

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

Bank Group چیست؟

در نسل های جدیدتر DDR،
Bankها
می توانند در گروه هایی
سازمان دهی شوند.

این ساختار
بخشی از تلاش
برای افزایش Parallelism
و نرخ انتقال
در DRAM مدرن است.

Row در DRAM چیست؟

داده DRAM
در ساختاری
شامل Row و Column
سازمان دهی می شود.

برای دسترسی به داده،
یک Row
معمولاً باید
در Bank مربوط
فعال شود.

Row فعال
می تواند در ساختاری
که معمولاً:

Row Buffer

نامیده می شود
در دسترس قرار گیرد.

Row Buffer Hit چیست؟

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

به این وضعیت:

Row Buffer Hit

گفته می شود.

Row Miss یا Row Conflict چیست؟

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

این عملیات
نسبت به Row Hit
هزینه بیشتری دارد.

Close Current Row
→
Activate New Row
→
Access Data

Memory Controller فقط داده را منتقل می کند؟

خیر.

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

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

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

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

فرض کنید
چند Memory Request
در صف قرار دارند.

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

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

Request Queue
→
Scheduling
→
DRAM Commands
→
Data Transfer

این یکی از دلایلی است
که Memory Performance
بسیار پیچیده تر
از یک عدد ساده
روی بسته بندی RAM است.

Read و Write در Memory Controller چگونه مدیریت می شوند؟

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

Memory Controller
باید جریان Read و Write
را مدیریت کند
و محدودیت های Timing
و Bus Direction
را نیز در نظر بگیرد.

تغییر مکرر
میان Read و Write
می تواند هزینه هایی
در Memory Bus
ایجاد کند.

Memory Interleaving چیست؟

Memory Controller
می تواند Addressها
را میان Channel،
Rank
یا Bankهای مختلف
توزیع کند.

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

Address Stream
→
Channel / Rank / Bank Distribution
→
More Parallel Memory Activity

آیا Dual Channel سرعت سیستم را دو برابر می کند؟

معمولاً خیر.

Dual Channel
می تواند پهنای باند نظری
Memory Subsystem
را به شکل قابل توجهی افزایش دهد،
اما Performance کل سیستم
فقط به Memory Bandwidth
وابسته نیست.

اگر Workload
به حافظه محدود نباشد،
افزایش Bandwidth
ممکن است تاثیر کمتری
بر Performance نهایی داشته باشد.

2× Theoretical Memory Bandwidth
≠
2× Application Performance

تاثیر بر عملکرد — Performance Impact: ارزش Channel بیشتر به نوع Workload بستگی دارد

Workloadهای مختلف
حساسیت متفاوتی
به Memory Bandwidth دارند.

بعضی برنامه ها
بیشتر به:

  • Compute Throughput،
  • Cache Performance،
  • Single-Thread Performance،
  • یا Branch Prediction

وابسته اند.

در مقابل،
Workloadهایی که
حجم زیادی داده
میان RAM و CPU
جابه جا می کنند
می توانند از
Memory Bandwidth بیشتر
سود بیشتری ببرند.

چرا Dual Channel برای گرافیک مجتمع اهمیت زیادی دارد؟

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

در بسیاری از طراحی ها،
GPU مجتمع
از حافظه اصلی سیستم
استفاده می کند.

CPU
+
Integrated GPU
→
Shared System Memory

بنابراین Memory Bandwidth
می تواند مستقیماً
روی Performance گرافیک مجتمع
اثر بگذارد.

چرا استفاده از یک ماژول RAM می تواند گرافیک مجتمع را محدود کند؟

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

در Workloadهای گرافیکی
Bandwidth-Sensitive،
این تفاوت
می تواند محسوس باشد.

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

تعداد Memory Channel چه تاثیری روی بازی دارد؟

تاثیر آن
به بازی،
CPU،
GPU،
Resolution،
Memory Speed
و Bottleneck سیستم
بستگی دارد.

در سیستم دارای
کارت گرافیک مجزا،
اثر ممکن است
از یک بازی
تا بازی دیگر
متفاوت باشد.

اما در سیستم
دارای Integrated Graphics،
Memory Bandwidth
معمولاً اهمیت بیشتری دارد.

Memory Channel در Workstation چرا مهم است؟

Workstationها
ممکن است با:

  • شبیه سازی،
  • پردازش علمی،
  • تحلیل داده،
  • رندر CPU،
  • کامپایل پروژه های بزرگ،
  • ماشین های مجازی،
  • و Datasetهای حجیم

سروکار داشته باشند.

برخی از این Workloadها
می توانند از
Memory Bandwidth بیشتر
بهره ببرند.

چرا Server CPUها Memory Channelهای بیشتری دارند؟

یک Server CPU
ممکن است تعداد زیادی Core
داشته باشد.

اگر تمام این Coreها
مجبور باشند
از Memory Bandwidth محدود
استفاده کنند،
حافظه می تواند
به Bottleneck
تبدیل شود.

Many Cores
+
Few Memory Channels
→
Potential Bandwidth Bottleneck

به همین دلیل
پلتفرم های Server
معمولاً تعداد Channelهای
بیشتری ارائه می کنند.

ظرفیت RAM و Memory Bandwidth چه تفاوتی دارند؟

ظرفیت مشخص می کند
چه مقدار داده
می تواند در RAM
نگهداری شود.

Bandwidth مشخص می کند
چه مقدار داده
می تواند در واحد زمان
منتقل شود.

Capacity
=
How Much Can Be Stored?

Bandwidth
=
How Much Can Be Transferred Per Second?

داشتن RAM بیشتر
الزاماً Memory Bandwidth
بیشتری ایجاد نمی کند.

سرعت RAM چه ارتباطی با Memory Controller دارد؟

Memory Controller
باید بتواند
Memory Interface
را در سرعت مورد نظر
به صورت پایدار
مدیریت کند.

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

  • CPU،
  • Memory Controller،
  • Motherboard،
  • تعداد DIMMها،
  • تعداد Rankها،
  • Memory Generation،
  • و تنظیمات Firmware

وابسته باشد.

عبارت Memory Support در مشخصات CPU یعنی چه؟

سازنده CPU
معمولاً سرعت ها
و Configurationهای مشخصی
را به صورت رسمی
برای Memory Controller
اعلام می کند.

استفاده از سرعت بالاتر
ممکن است در برخی Platformها
امکان پذیر باشد،
اما می تواند
در محدوده Memory Overclocking
قرار گیرد.

XMP و EXPO چه ارتباطی با Memory Controller دارند؟

Profileهایی مانند:

Intel XMP

و:

AMD EXPO

مجموعه ای از
تنظیمات Memory
را برای رسیدن
به Speed و Timing مشخص
در اختیار سیستم قرار می دهند.

اما توانایی اجرای پایدار
آن Profile
به کل Memory Subsystem
وابسته است.

چرا پر کردن تمام Slotهای RAM می تواند دستیابی به فرکانس بالا را سخت تر کند؟

اضافه شدن DIMMها
و Rankهای بیشتر
می تواند بار الکتریکی
بیشتری روی Memory Interface
ایجاد کند.

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

More DIMMs / Ranks
→
More Electrical Load
→
Potentially Harder High-Speed Operation

ECC Memory چیست؟

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

ECC
=
Error-Correcting Code

پشتیبانی واقعی ECC
به ترکیبی از:

  • CPU،
  • Memory Controller،
  • Motherboard،
  • Firmware،
  • و نوع Memory Module

وابسته است.

Registered Memory یا RDIMM چیست؟

RDIMM
نوعی Memory Module
است که از Register
برای بخشی از
سیگنال های کنترلی
استفاده می کند.

این طراحی
می تواند امکان استفاده
از ظرفیت های بالاتر حافظه
و تعداد بیشتری Module
را در Platformهای Server
فراهم کند.

RDIMM
با DIMM معمولی Desktop
یکسان نیست
و نیازمند Platform سازگار است.

UDIMM چیست؟

UDIMM
مخفف:

Unbuffered DIMM

است.

این نوع Module
در بسیاری از
Desktopهای معمولی
استفاده می شود.

Memory Controller چه ارتباطی با NUMA دارد؟

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

در NUMA،
Latency و Bandwidth
دسترسی به حافظه
ممکن است بسته به
محل Core
و محل Memory
متفاوت باشد.

Local Memory
→
Usually Lower Access Cost

Remote Memory
→
Additional Interconnect Path

معماری Chiplet چه ارتباطی با Memory Controller دارد؟

در CPUهای Chiplet-Based،
Coreها،
Cache،
I/O
و Memory Controller
الزاماً روی یک Die واحد
قرار ندارند.

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

طراحی دقیق
به Microarchitecture
بستگی دارد.

آیا Memory Controller می تواند Bottleneck شود؟

بله.

Memory Subsystem
منابع محدودی دارد.

تعداد Channelها،
Request Queueها،
DRAM Timing،
Bandwidth،
Interconnect
و تعداد درخواست های همزمان
همگی می توانند
روی Throughput نهایی
اثر بگذارند.

فصل قبل چه ارتباطی با Memory Controller دارد؟

Hardware Prefetcher
می تواند درخواست های آینده
را زودتر
وارد Memory Hierarchy کند.

اگر این درخواست ها
نیازمند DRAM باشند،
در نهایت
Memory Controller
باید آنها را
همراه Demand Requestهای دیگر
مدیریت کند.

Prefetcher
→
Memory Requests
→
Memory Controller
→
DRAM

Prefetch بیش از حد
می تواند فشار بیشتری
روی Memory Controller
و Bandwidth
ایجاد کند.

چرا Cache همچنان مهم است اگر RAM بسیار سریع داشته باشیم؟

حتی DRAM سریع
همچنان از Cacheهای داخلی CPU
فاصله Latency قابل توجهی دارد.

بنابراین Memory Controller
جای Cache
را نمی گیرد.

Registers
→
L1
→
L2
→
LLC
→
DRAM

هر سطح
نقش متفاوتی
در Memory Hierarchy دارد.

اشتباه رایج — Common Mistake: هرچه ظرفیت RAM بیشتر شود CPU هم سریع تر می شود

ظرفیت RAM
و Performance پردازنده
رابطه خطی ندارند.

اگر سیستم
RAM کافی داشته باشد،
افزایش ظرفیت بیشتر
الزاماً اجرای CPU
را سریع تر نمی کند.

البته کمبود RAM
می تواند باعث
استفاده شدید از Storage
و افت بسیار زیاد
Performance شود.

آیا RAM سریع تر همیشه سیستم را سریع تر می کند؟

نه به یک اندازه.

تاثیر RAM سریع تر
به Workload
و Bottleneck سیستم
بستگی دارد.

اگر برنامه
بیشتر داخل Cache
کار کند،
افزایش DRAM Bandwidth
ممکن است اثر محدودی داشته باشد.

اگر Workload
Memory-Bound باشد،
تفاوت می تواند
بسیار مهم تر شود.

نکته مهندسی — Engineering Insight: RAM سریع فقط وقتی ارزش واقعی خود را نشان می دهد که پردازنده بتواند از آن استفاده کند

Memory Performance
حاصل یک قطعه منفرد نیست.

باید کل مسیر
بررسی شود:

Core
→
Cache
→
Interconnect
→
Memory Controller
→
Channels
→
DRAM

ضعف در هر قسمت
می تواند باعث شود
افزایش سرعت یک جزء
اثر کمتری
روی Performance نهایی
داشته باشد.

در لپ تاپ هنگام بررسی RAM به چه چیزهایی توجه کنیم؟

فقط ظرفیت RAM
کافی نیست.

بهتر است بررسی شود:

  • نوع حافظه،
  • سرعت حافظه،
  • تعداد Channelهای قابل استفاده،
  • تعداد ماژول های نصب شده،
  • لحیم شده یا قابل تعویض بودن حافظه،
  • تعداد Slotهای آزاد،
  • حداکثر ظرفیت پشتیبانی شده،
  • و Configuration واقعی دستگاه.

در Desktop چه نکته ای مهم است؟

در Desktop
معمولاً آزادی بیشتری
برای انتخاب RAM وجود دارد،
اما Compatibility
همچنان مهم است.

باید:

  • نسل DDR،
  • پشتیبانی CPU،
  • پشتیبانی مادربرد،
  • Slot Configuration،
  • Memory Profile،
  • و تعداد DIMMها

بررسی شوند.

در All-in-One چه نکته ای مهم است؟

All-in-Oneها
می توانند از طراحی حافظه
شبیه Laptop
یا Desktop
استفاده کنند.

بنابراین نباید
صرفاً از ظاهر دستگاه
درباره نوع RAM
نتیجه گیری کرد.

مدل دقیق دستگاه
باید بررسی شود.

در Mini PC چطور؟

Mini PCها
ممکن است:

  • SO-DIMM قابل ارتقا،
  • حافظه لحیم شده،
  • LPDDR،
  • یا ترکیب های خاص سازنده

داشته باشند.

در مدل های دارای iGPU،
Configuration حافظه
می تواند اهمیت بیشتری
برای Performance گرافیکی
داشته باشد.

چرا Serverها تعداد بسیار زیادی DIMM Slot دارند؟

Serverها
علاوه بر Bandwidth بالا
ممکن است به ظرفیت بسیار زیاد RAM
نیز نیاز داشته باشند.

Workloadهایی مانند:

  • Virtualization،
  • Database،
  • In-Memory Computing،
  • Analytics،
  • Scientific Computing،
  • و Enterprise Applications

می توانند صدها گیگابایت
یا حتی چندین ترابایت
حافظه نیاز داشته باشند.

چرا نحوه پر کردن Slotهای RAM در Server مهم است؟

اگر CPU
تعداد زیادی Memory Channel
داشته باشد
ولی ماژول ها
فقط روی تعداد محدودی Channel
نصب شوند،
ممکن است بخشی از
Bandwidth بالقوه سیستم
استفاده نشود.

بنابراین در Server
فقط ظرفیت کل RAM
مهم نیست؛
Memory Population
نیز اهمیت دارد.

اشتباهات رایج — Common Mistakes: Memory Controller و Memory Channels
  • یکی دانستن تعداد RAMها با تعداد Channelها.
  • یکی دانستن Dual Rank با Dual Channel.
  • فرض اینکه چهار Slot RAM یعنی Quad Channel.
  • فرض اینکه Dual Channel Performance کل سیستم را دو برابر می کند.
  • نادیده گرفتن اهمیت Dual Channel برای Integrated Graphics.
  • یکی دانستن MT/s و MHz.
  • مقایسه RAM فقط بر اساس CL.
  • فرض اینکه CL کمتر همیشه Latency واقعی کمتری دارد.
  • نادیده گرفتن Memory Controller هنگام Memory Overclocking.
  • فرض اینکه ظرفیت RAM بیشتر یعنی Bandwidth بیشتر.
  • فرض اینکه RAM سریع تر همیشه تفاوت بزرگی ایجاد می کند.
  • نادیده گرفتن تعداد DIMM و Rank در دستیابی به سرعت بالا.
  • فرض اینکه ECC فقط به خود RAM وابسته است.
  • استفاده از RDIMM بدون بررسی سازگاری Platform.
  • نادیده گرفتن Memory Population در Serverها.

سوالات متداول درباره Memory Controller و Memory Channel

Memory Controller چیست؟

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

IMC چیست؟

مخفف Integrated Memory Controller
و به معنی کنترلر حافظه
یکپارچه شده با پردازنده است.

Dual Channel چیست؟

حالتی است که
Memory Controller
از دو Channel
برای ارتباط با حافظه
استفاده می کند.

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

خیر.
Configuration واقعی
به CPU،
مادربرد،
Slotها
و مشخصات ماژول ها
بستگی دارد.

آیا چهار Slot RAM یعنی Quad Channel؟

خیر.
مادربرد Dual Channel
می تواند چهار Slot
داشته باشد.

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

خیر.
Rank مربوط به
سازمان دهی Memory Module
است،
اما Channel
رابط Memory Controller
با حافظه است.

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

چون iGPU
معمولاً از System Memory
استفاده می کند
و در بسیاری از Workloadها
به Memory Bandwidth
حساس است.

MT/s همان MHz است؟

خیر.
MT/s نرخ انتقال داده
و MHz واحد فرکانس است.

آیا RAM با CL کمتر همیشه سریع تر است؟

خیر.
نرخ انتقال
و زمان واقعی Cycle
نیز باید بررسی شوند.

چرا Server CPUها Channel بیشتری دارند؟

برای تامین Memory Bandwidth
بیشتر برای تعداد زیاد Core
و Workloadهای سنگین.

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

  • Memory Controller: کنترل کننده ارتباط و عملیات حافظه اصلی.
  • IMC: کنترلر حافظه یکپارچه شده با پردازنده.
  • Memory Channel: رابط مستقل ارتباط Memory Controller با حافظه.
  • Single Channel: استفاده از یک کانال حافظه.
  • Dual Channel: استفاده از دو کانال حافظه.
  • Quad Channel: استفاده از چهار کانال حافظه.
  • Bus Width: تعداد Bit قابل انتقال در یک مسیر داده.
  • DDR: فناوری Double Data Rate.
  • MT/s: میلیون انتقال در ثانیه.
  • Memory Bandwidth: مقدار داده قابل انتقال در واحد زمان.
  • Memory Latency: زمان لازم برای پاسخ حافظه.
  • CAS Latency: یکی از Timingهای اصلی DRAM.
  • DIMM: فرم رایج ماژول حافظه.
  • SO-DIMM: فرم کوچک تر DIMM.
  • LPDDR: حافظه DDR کم مصرف.
  • Memory Rank: گروهی از Chipهای حافظه که به عنوان یک واحد انتخاب می شوند.
  • Bank: یکی از بخش های داخلی سازمان دهی DRAM.
  • Bank Group: گروهی از Bankهای DRAM.
  • Row Buffer: ساختاری مرتبط با Row فعال DRAM.
  • Row Buffer Hit: دسترسی به Rowی که از قبل فعال است.
  • Row Conflict: نیاز به تغییر Row فعال برای پاسخ به درخواست جدید.
  • Memory Interleaving: توزیع دسترسی ها میان منابع مختلف حافظه برای افزایش Parallelism.
  • ECC: فناوری تشخیص و اصلاح برخی خطاهای حافظه.
  • RDIMM: Registered DIMM مورد استفاده در پلتفرم های سازگار.
  • UDIMM: Unbuffered DIMM رایج در بسیاری از سیستم های Desktop.

خلاصه فصل

Memory Controller
یکی از اجزای کلیدی
Memory Subsystem
پردازنده است.

در بسیاری از CPUهای مدرن،
این کنترلر
در خود Processor
یکپارچه شده است.

Integrated Memory Controller
=
IMC

Memory Channelها
مسیرهای ارتباطی
میان Memory Controller
و DRAM
را فراهم می کنند.

More Memory Channels
→
Higher Potential Aggregate Bandwidth

اما افزایش تعداد Channel
به معنی افزایش خطی
Performance تمام برنامه ها نیست.

اثر واقعی
به میزان وابستگی Workload
به Memory Bandwidth
بستگی دارد.

در سیستم های دارای
Integrated Graphics،
Memory Configuration
اهمیت بیشتری پیدا می کند،
زیرا CPU و GPU
می توانند از حافظه اصلی
مشترک استفاده کنند.

همچنین باید میان:

Channel
/
DIMM
/
Rank
/
Bank
/
Row

تفاوت قائل شد.

اینها لایه های متفاوتی
از سازمان دهی
Memory Subsystem هستند.

در نهایت،
Performance حافظه
حاصل همکاری مجموعه ای از:

Cache
+
Prefetcher
+
Interconnect
+
Memory Controller
+
Memory Channels
+
DRAM

است.


بنابراین هنگام ارزیابی یک سیستم،
عبارت ساده «16 گیگ RAM» یا «DDR5» اطلاعات کافی درباره عملکرد حافظه نمی دهد؛
ظرفیت، سرعت، تعداد کانال ها، Rank، Latency، نوع ماژول و توانایی Memory Controller
همگی می توانند در رفتار واقعی سیستم نقش داشته باشند.

فصل 86
سطح: پیشرفته
موضوع: ساختار داخلی و عملکرد DRAM
تمرکز: Cell / Row / Column / Bank / Refresh / Timing

برای درک واقعی سرعت RAM باید بدانیم داخل تراشه DRAM هنگام یک Read یا Write چه اتفاقی می افتد

DRAM چگونه کار می کند؟ از سلول حافظه و Row Buffer تا Refresh و Memory Timing

در فصل قبل دیدیم
Memory Controller
چگونه پردازنده را
به حافظه اصلی
متصل می کند.

حالا یک مرحله
عمیق تر می شویم:

وقتی Memory Controller
از RAM درخواست داده می کند،
داخل تراشه DRAM
دقیقاً چه اتفاقی می افتد؟

چرا RAM
مفاهیمی مانند:

Row
/
Column
/
Bank
/
Activate
/
Precharge
/
Refresh

دارد؟

و اعدادی مانند:

CL
/
tRCD
/
tRP
/
tRAS

که در مشخصات RAM
دیده می شوند
واقعاً چه معنایی دارند؟

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

  • DRAM چیست.
  • چرا حافظه اصلی معمولاً از DRAM استفاده می کند.
  • سلول DRAM چگونه داده را نگه می دارد.
  • Capacitor و Transistor چه نقشی دارند.
  • چرا DRAM باید Refresh شود.
  • Row و Column چیست.
  • Bank چیست.
  • Row Buffer چیست.
  • Activate Command چیست.
  • Read و Write چگونه انجام می شوند.
  • Precharge چیست.
  • Row Hit چیست.
  • Row Miss و Row Conflict چیست.
  • CAS Latency چیست.
  • tRCD چیست.
  • tRP چیست.
  • tRAS چیست.
  • Command Rate چیست.
  • Refresh چه تاثیری بر Performance دارد.
  • چرا Memory Timing را نباید فقط با CL مقایسه کرد.

DRAM چیست؟


حافظه دسترسی تصادفی پویا — Dynamic Random-Access Memory
DRAM
نوعی حافظه نیمه هادی
است که در آن
اطلاعات باید به صورت دوره ای
بازسازی شوند.

عبارت:

Dynamic

به همین نیاز
به Refresh دوره ای
اشاره دارد.

چرا از DRAM برای حافظه اصلی استفاده می شود؟

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

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

DRAM
تراکم ذخیره سازی
بسیار بیشتری
فراهم می کند.

SRAM
→
Very Fast
+
Expensive Per Bit
+
Lower Density

DRAM
→
Higher Density
+
Lower Cost Per Bit
+
Higher Latency

سلول DRAM چیست؟

در مدل کلاسیک DRAM،
هر Bit اطلاعات
می تواند توسط ساختاری
شامل یک Transistor
و یک Capacitor
نگهداری شود.

1T1C
=
1 Transistor
+
1 Capacitor

این ساختار ساده
یکی از دلایل
تراکم بالای DRAM است.

Capacitor چه کاری انجام می دهد؟

به صورت مفهومی،
وضعیت شارژ
Capacitor
برای نمایش اطلاعات
استفاده می شود.

اما این شارژ
برای همیشه باقی نمی ماند.

به مرور زمان
Charge Leakage
رخ می دهد.

Stored Charge
→
Leakage Over Time
→
Data Would Eventually Be Lost

Transistor در سلول DRAM چه نقشی دارد؟

Access Transistor
مانند یک سوئیچ
عمل می کند
و هنگام انتخاب سلول
ارتباط آن را
با Bitline
برقرار می کند.

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

چرا DRAM باید Refresh شود؟

چون Capacitorهای DRAM
به تدریج
بخشی از شارژ خود
را از دست می دهند.

اگر اطلاعات
در بازه مناسب
بازسازی نشوند،
وضعیت ذخیره شده
دیگر قابل اعتماد
نخواهد بود.

Charge Leakage
→
Periodic Refresh Required

چرا نام آن Dynamic RAM است؟

چون نگهداری اطلاعات
نیازمند عملیات دوره ای
برای حفظ وضعیت
سلول های حافظه است.

در مقابل،
SRAM
تا زمانی که
توان الکتریکی برقرار باشد،
برای نگهداری Bit
به Refresh مشابه DRAM
نیاز ندارد.

سلول های DRAM چگونه سازمان دهی می شوند؟

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

به صورت مفهومی
می توان بخشی از DRAM
را شبیه یک آرایه
از Rowها و Columnها
تصور کرد.

DRAM Array
→
Rows
×
Columns

Row چیست؟

Row
مجموعه ای از سلول ها
در یک بخش
از DRAM Array است.

برای دسترسی به داده
معمولاً ابتدا
Row مربوطه
فعال می شود.

Select Bank
→
Activate Row

Column چیست؟

پس از فعال شدن Row،
بخش مورد نیاز داده
از طریق Column Selection
انتخاب می شود.

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

Bank
→
Row
→
Column
→
Data

Bank چیست؟

DRAM
به چند Bank
تقسیم می شود.

هر Bank
می تواند بخشی
از ساختار Row و Column
خود را داشته باشد.

وجود Bankهای متعدد
امکان ایجاد
Parallelism بیشتر
در Memory Subsystem
را فراهم می کند.

Bank-Level Parallelism چیست؟

اگر درخواست ها
به Bankهای مختلف
مربوط باشند،
Memory Controller
ممکن است بتواند
بخشی از عملیات آنها
را همپوشانی کند.

Bank A
→
Operation 1

Bank B
→
Operation 2

Bank C
→
Operation 3

این Parallelism
یکی از عناصر مهم
در Performance حافظه
است.

Row Buffer چیست؟

وقتی یک Row
فعال می شود،
اطلاعات آن
توسط Sense Amplifierها
تشخیص داده شده
و در ساختاری
که معمولاً Row Buffer
نامیده می شود
در دسترس قرار می گیرد.

بنابراین CPU
مستقیماً یک سلول منفرد
را از Array
مثل یک فایل ساده
نمی خواند.

Sense Amplifier چیست؟

شارژ موجود
در سلول DRAM
بسیار کوچک است.

Sense Amplifier
تغییر بسیار کوچک
روی Bitline
را تشخیص می دهد
و آن را
به یک وضعیت منطقی
قابل استفاده تبدیل می کند.

Sense Amplifierها
همچنین در بازسازی
اطلاعات Row
نقش مهمی دارند.

چرا خواندن DRAM را Destructive Read می نامند؟

فرآیند Sense کردن
وضعیت سلول
باعث تغییر
وضعیت شارژ اولیه
آن می شود.

بنابراین داده
پس از خوانده شدن
باید دوباره
در سلول بازسازی شود.

Read Cell
→
Sense Value
→
Restore Cell

به همین دلیل
Read در DRAM
از نظر داخلی
یک عملیات کاملاً Passive
نیست.

ACTIVATE Command چیست؟

برای دسترسی
به یک Row بسته،
Memory Controller
فرمان:

ACTIVATE

را برای Bank مربوط
صادر می کند.

این عملیات
Row مورد نظر
را فعال
و محتویات آن را
در Sense Amplifierها
قابل استفاده می کند.

READ Command چه کاری انجام می دهد؟

پس از اینکه Row مناسب
فعال شد،
فرمان READ
می تواند Column مورد نظر
را انتخاب کند.

سپس داده
از مسیر داخلی DRAM
به سمت Memory Bus
منتقل می شود.

ACTIVATE Row
→
READ Column
→
Data Transfer

WRITE Command چه کاری انجام می دهد؟

در عملیات Write،
داده از Memory Bus
وارد DRAM می شود
و در محل انتخاب شده
نوشته می شود.

Select Active Row
→
WRITE Column
→
Update Stored Data

PRECHARGE چیست؟

اگر لازم باشد
Row فعال فعلی
بسته شود
تا Row دیگری
در همان Bank
باز شود،
عملیات:

PRECHARGE

انجام می شود.

Precharge
Bank را
برای Activate کردن
Row بعدی
آماده می کند.

یک دسترسی DRAM از ابتدا تا انتها چگونه است؟

در یک حالت ساده
که Row مورد نیاز
از قبل باز نیست:

Request
→
PRECHARGE If Needed
→
ACTIVATE
→
Wait
→
READ / WRITE
→
Data Transfer

دقیقاً همین مراحل
باعث می شوند
Timingهای مختلف DRAM
اهمیت پیدا کنند.

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

DRAM
مانند یک آرایه ساده
با دسترسی آنی
به هر Byte
عمل نمی کند.

ابتدا باید مشخص شود
Address مورد نظر
به کدام Channel،
Rank،
Bank،
Row
و Column
نگاشت شده است.

اگر Row مناسب
فعال نباشد،
ممکن است Row فعلی
ابتدا بسته شود.

PRECHARGE
→
ACTIVATE
→
COLUMN ACCESS
→
DATA

هر مرحله
محدودیت های زمانی
و الکتریکی
مخصوص خود را دارد.

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

Open Row چیست؟

در هر Bank،
یک Row فعال
می تواند در Row Buffer
نگه داشته شود.

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

Row Hit چیست؟

اگر داده مورد نیاز
در Rowی باشد
که هم اکنون
در Bank مربوط
فعال است،
دسترسی:

Row Hit

محسوب می شود.

Row Already Open
→
Column Access
→
Data

این حالت
معمولاً هزینه کمتری
نسبت به تغییر Row دارد.

اگر هیچ Rowی باز نباشد چه می شود؟

در این حالت
Row مورد نظر
باید با ACTIVATE
باز شود.

Closed Bank
→
ACTIVATE
→
Column Access

Row Conflict چیست؟

اگر Bank
یک Row فعال داشته باشد،
اما درخواست جدید
به Row دیگری
در همان Bank
نیاز داشته باشد،
Row فعلی
باید بسته شود.

Row A Open
→
Need Row B
→
PRECHARGE
→
ACTIVATE Row B
→
Access

این حالت
هزینه بیشتری
از Row Hit دارد.

مقایسه Row Hit، Closed Row و Row Conflict

وضعیت شرایط عملیات اضافی هزینه نسبی
Row Hit Row مورد نیاز باز است کمتر معمولاً بهترین حالت
Closed Row Bank Row فعالی ندارد ACTIVATE بیشتر از Row Hit
Row Conflict Row دیگری باز است PRECHARGE + ACTIVATE معمولاً پرهزینه تر

Memory Timingها چه هستند؟

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

محدودیت های الکتریکی
و معماری
حداقل فاصله زمانی
میان عملیات مختلف
را تعیین می کنند.

این محدودیت ها
با Timingهای DRAM
بیان می شوند.

Primary Memory Timings چیست؟

چهار Timing
که معمولاً
بیشتر از بقیه
در مشخصات RAM
دیده می شوند:

CL
–
tRCD
–
tRP
–
tRAS

هستند.

برای مثال:

16-18-18-36

CAS Latency یا CL چیست؟

CAS Latency
به صورت ساده
فاصله زمانی
بر حسب Cycle
میان صدور فرمان Read
برای Column
و آماده شدن
داده مربوطه
را توصیف می کند.

READ Command
→
CL
→
Data

CL فقط یکی
از بخش های
کل Memory Latency است.

tRCD چیست؟

tRCD
مخفف:

Row Address to Column Address Delay

است.

به صورت ساده،
این Timing
فاصله لازم
میان فعال کردن Row
و صدور فرمان
دسترسی Column
را مشخص می کند.

ACTIVATE
→
tRCD
→
READ / WRITE

tRP چیست؟

tRP
مخفف:

Row Precharge Time

است.

این Timing
به زمانی مربوط است
که برای Precharge
یک Bank
پیش از Activate
کردن Row جدید
لازم است.

PRECHARGE
→
tRP
→
ACTIVATE New Row

tRAS چیست؟

tRAS
مخفف:

Row Active Time

است.

این Timing
حداقل مدت زمانی
را مشخص می کند
که Row باید
پس از Activate شدن
فعال باقی بماند
پیش از اینکه
بتوان آن را Precharge کرد.

Timingها در یک Row Conflict چگونه کنار هم قرار می گیرند؟

به صورت مفهومی:

PRECHARGE
→
tRP
→
ACTIVATE
→
tRCD
→
READ
→
CL
→
DATA

این نمودار
نشان می دهد
چرا نگاه کردن
فقط به CL
تصویر کاملی
از Memory Latency
ارائه نمی دهد.

نکته مهندسی — Engineering Insight: عدد CL فقط یک بخش از مسیر دسترسی DRAM است

دو RAM
ممکن است CL مشابهی
داشته باشند،
اما رفتار واقعی
Memory Subsystem
متفاوت باشد.

Performance نهایی
می تواند تحت تاثیر:

  • Transfer Rate،
  • tRCD،
  • tRP،
  • tRAS،
  • Secondary Timings،
  • Memory Controller،
  • Rank Configuration،
  • Channel Configuration،
  • و Access Pattern

قرار گیرد.

Timing بر حسب Cycle با زمان واقعی چه تفاوتی دارد؟

عدد CL
تعداد Clock Cycle
را بیان می کند.

اما مدت هر Cycle
به Clock حافظه
وابسته است.

بنابراین:

Real Time
=
Number of Cycles
×
Duration of Each Cycle

به همین دلیل
RAM با CL عددی بالاتر
می تواند در برخی موارد
Latency زمانی مشابه
یا حتی بهتری
نسبت به RAM کندتر
با CL پایین تر داشته باشد.

مثال ساده از Latency واقعی

برای DDR4-3200،
Clock واقعی پایه
تقریباً:

1600 MHz

است.

اگر حافظه:

CL16

باشد،
زمان تقریبی CAS:

16
÷
1600 MHz
≈
10 ns

است.

حال DDR5-6000 CL30
را در نظر بگیرید.

Clock پایه:

3000 MHz

بنابراین:

30
÷
3000 MHz
≈
10 ns

یعنی CL عددی
تقریباً دو برابر شده،
اما CAS Latency زمانی
تقریباً مشابه است.

فرمول سریع محاسبه CAS Latency

اگر DDR Data Rate
بر حسب MT/s
مشخص باشد:

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

برای مثال:

DDR4-3200 CL16
→
16 × 2000 ÷ 3200
=
10 ns

Command Rate چیست؟

Command Rate
به Timing مربوط
به ارسال Command
به حافظه
و انتخاب Rank
مربوط می شود.

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

1T
/
2T

دیده می شوند.

تنظیم تهاجمی تر
می تواند Latency را
اندکی کاهش دهد،
اما ممکن است
دستیابی به Stability
را در Configurationهای سنگین تر
دشوارتر کند.

Secondary Timings چیست؟

DRAM
Timingهای بسیار بیشتری
از چهار عدد معروف
روی مشخصات RAM دارد.

Timingهایی مانند:

tRFC
/
tRRD
/
tFAW
/
tWR
/
tWTR
/
tCCD

نمونه هایی
از Timingهای دیگر هستند.

هرکدام
محدودیت زمانی
میان نوع خاصی
از عملیات DRAM
را بیان می کنند.

tRFC چیست؟

tRFC
به زمان لازم
برای عملیات Refresh
مربوط است.

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

بنابراین Refresh
کاملاً بدون هزینه
نیست.

Refresh چه تاثیری بر Performance دارد؟

DRAM باید
به طور دوره ای
Refresh شود.

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

Refresh Activity
→
Temporary Resource Occupation
→
Potential Access Delay

Memory Controller
و خود DRAM
تلاش می کنند
این فرآیند
را با کمترین اثر ممکن
مدیریت کنند.

دما چه ارتباطی با Refresh دارد؟

رفتار Leakage
سلول های DRAM
به شرایط فیزیکی
از جمله دما
وابسته است.

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

Burst Transfer چیست؟

DRAM مدرن
معمولاً پس از
یک Column Command
فقط یک Bit منفرد
منتقل نمی کند.

داده در مجموعه ای
از Transferهای متوالی
منتقل می شود.

به این رفتار:

Burst Transfer

گفته می شود.

Burst Length چیست؟

Burst Length
مشخص می کند
یک Command
چه تعداد Transfer
متوالی داده
ایجاد می کند.

افزایش Data Rate
و تغییر Burst Structure
از روش های مهم
تکامل نسل های DDR
بوده است.

Burst DRAM چه ارتباطی با Cache Line دارد؟

CPU معمولاً داده
را در واحدهای Cache Line
میان Cache و حافظه
مدیریت می کند.

Memory Subsystem
باید مجموعه ای
از Transferهای DRAM
را برای تامین
این داده انجام دهد.

DRAM Transfers
→
Memory Controller
→
Cache Line Fill

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

چرا Access Pattern برنامه روی DRAM Performance اثر دارد؟

اگر درخواست های متوالی
به Rowهای باز
و Bankهای مناسب
دسترسی داشته باشند،
Memory Controller
می تواند از منابع
بهتر استفاده کند.

اما Pattern نامناسب
می تواند تعداد بیشتری:

Row Conflict
/
Bank Conflict
/
Activate
/
Precharge

ایجاد کند.

Locality فقط برای Cache مهم است؟

خیر.

Locality
می تواند در سطوح مختلف
Memory Hierarchy
مفید باشد.

دسترسی منظم
علاوه بر کمک
به Cache و Prefetcher،
می تواند رفتار
DRAM Row Buffer
را نیز بهبود دهد.

چرا Random Access می تواند برای DRAM سخت تر باشد؟

دسترسی های تصادفی
ممکن است مرتباً
میان Rowها
و Bankهای مختلف
جابه جا شوند.

این رفتار
می تواند احتمال
Row Hit
را کاهش دهد
و عملیات بیشتری
برای تغییر Row
ایجاد کند.

چرا Sequential Access معمولاً مطلوب تر است؟

دسترسی ترتیبی
معمولاً Locality
بیشتری دارد.

این موضوع
می تواند به:

  • Cache Line Utilization بهتر،
  • Hardware Prefetching موثرتر،
  • Row Buffer Locality بهتر،
  • و انتقال های کارآمدتر حافظه

کمک کند.

تاثیر بر عملکرد — Performance Impact: دو برنامه با تعداد Instruction مشابه می توانند رفتار حافظه کاملاً متفاوتی داشته باشند

اگر برنامه اول
بیشتر از Cache
و Rowهای باز
استفاده کند،
بخش بزرگی از
Memory Latency
می تواند پنهان
یا حذف شود.

برنامه دوم
ممکن است
دائماً Cache Miss
و Row Conflict
ایجاد کند.

Same Instruction Count
≠
Same Memory Behavior
≠
Same Performance

نسل های جدید DDR چگونه Performance را افزایش می دهند؟

افزایش Performance
فقط با کاهش Latency
انجام نمی شود.

نسل های جدید
می توانند از:

  • Data Rate بالاتر،
  • Bankهای بیشتر،
  • Bank Groupهای متفاوت،
  • Burst Structure جدید،
  • Channel Organization متفاوت،
  • و بهبودهای Protocol

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

به همین دلیل
نسل جدید ممکن است
Bandwidth بسیار بیشتری داشته باشد
حتی اگر بعضی Timingهای عددی
بزرگ تر شده باشند.

DDR5 چه تغییر مهمی در ساختار حافظه ایجاد کرد؟

DDR5
علاوه بر Data Rate بالاتر،
تغییرات معماری
متعددی نسبت به DDR4
دارد.

از جمله
ساختار Subchannel
در DIMMهای استاندارد،
Bank Organization گسترده تر
و تغییراتی در Burst
و Power Management.

بنابراین مقایسه DDR4 و DDR5
فقط با یک عدد CL
مقایسه درستی نیست.

Memory Controller چگونه از ساختار DRAM استفاده می کند؟

Memory Controller
فقط درخواست ها
را به ترتیب ورود
ارسال نمی کند.

در بسیاری از طراحی ها
می تواند عواملی مانند:

  • Row Hit،
  • Bank Availability،
  • Read/Write Queue،
  • Timing Restrictions،
  • Refresh،
  • و Priority درخواست ها

را در Scheduling
در نظر بگیرد.

FR-FCFS چیست؟

یکی از سیاست های معروف
در بحث Academic
زمان بندی DRAM:

First Ready
–
First Come First Serve

یا:

FR-FCFS

است.

ایده کلی
این است که
درخواست های آماده تر،
مخصوصاً درخواست هایی
که می توانند از Row باز
استفاده کنند،
ممکن است اولویت پیدا کنند.

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

چرا Memory Scheduler فقط نباید Row Hit را ترجیح دهد؟

اگر همیشه
درخواست های دارای Row Hit
اولویت بگیرند،
درخواست های دیگر
ممکن است بیش از حد
منتظر بمانند.

بنابراین Scheduler
باید میان:

Throughput
/
Latency
/
Fairness

تعادل برقرار کند.

در CPU چند هسته ای چه اتفاقی می افتد؟

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

علاوه بر آنها،
بخش هایی مانند:

  • Hardware Prefetcher،
  • Integrated GPU،
  • DMA Engines،
  • و سایر Deviceها

نیز ممکن است
Memory Traffic
ایجاد کنند.

Memory Controller
باید این ترافیک
را مدیریت کند.

گرافیک مجتمع چگونه فشار روی DRAM را افزایش می دهد؟

iGPU
ممکن است
Frame Buffer،
Texture،
Geometry
و سایر داده های گرافیکی
را در System Memory
نگهداری کند.

بنابراین CPU و GPU
می توانند همزمان
از DRAM
استفاده کنند.

CPU Traffic
+
iGPU Traffic
→
Shared Memory Subsystem

این یکی از دلایل
اهمیت Memory Bandwidth
در سیستم های دارای
گرافیک مجتمع است.

DRAM در Server چه چالش هایی دارد؟

Serverها
می توانند:

  • Coreهای بسیار زیاد،
  • Memory Channelهای متعدد،
  • DIMMهای فراوان،
  • ظرفیت حافظه بسیار بالا،
  • و تعداد زیادی Memory Request همزمان

داشته باشند.

در چنین محیطی
Memory Scheduling،
Bandwidth،
NUMA،
Reliability
و Power Consumption
اهمیت زیادی پیدا می کنند.

ECC در سطح DRAM چه نقشی دارد؟

Memory Error
می تواند به دلایل مختلف
رخ دهد.

ECC
با ذخیره اطلاعات اضافی
امکان تشخیص
و اصلاح برخی خطاها
را فراهم می کند.

این موضوع
به ویژه در:

  • Serverها،
  • Workstationهای حساس،
  • Scientific Computing،
  • و سیستم های Mission-Critical

اهمیت بیشتری دارد.

Rowhammer چیست؟

Rowhammer
پدیده ای است
که در آن
فعال سازی مکرر
برخی Rowهای DRAM
می تواند تحت شرایط خاص
باعث ایجاد Bit Flip
در Rowهای مجاور شود.

این موضوع
نشان داد
که رفتار فیزیکی
سلول های بسیار متراکم DRAM
می تواند پیامدهای
Reliability
و Security
داشته باشد.

سازندگان چگونه با Rowhammer مقابله می کنند؟

روش های مختلفی
در نسل ها
و Platformهای متفاوت
استفاده شده اند.

این روش ها
می توانند شامل
مکانیزم های مرتبط با:

  • Refresh،
  • تشخیص الگوی Activate،
  • Targeted Row Refresh،
  • Memory Controller،
  • و طراحی داخلی DRAM

باشند.

DRAM چگونه انرژی مصرف می کند؟

مصرف انرژی RAM
فقط هنگام انتقال داده
نیست.

عملیات مختلفی مانند:

  • Activate،
  • Precharge،
  • Read،
  • Write،
  • Refresh،
  • و حفظ وضعیت مدارها

انرژی مصرف می کنند.

چرا حافظه در دستگاه های Mobile طراحی متفاوتی دارد؟

در دستگاه های Battery-Powered،
Memory Subsystem
باید علاوه بر Performance،
مصرف انرژی
را نیز به شدت
کنترل کند.

به همین دلیل
خانواده LPDDR
مجموعه ای از
ویژگی های Power Management
را برای چنین سیستم هایی
ارائه می کند.

Memory Overclocking در سطح DRAM یعنی چه؟

افزایش Data Rate
یا کاهش Timingها
باعث می شود
Margin زمانی
برای انجام عملیات
کمتر شود.

اگر تنظیمات
بیش از توان:

  • DRAM Chips،
  • Memory Controller،
  • Motherboard Trace Layout،
  • و Signal Integrity

باشند،
خطا یا ناپایداری
ممکن است رخ دهد.

چرا RAM ناپایدار می تواند مشکل عجیبی ایجاد کند؟

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

ممکن است باعث:

  • Crash تصادفی،
  • خرابی فایل،
  • خطای برنامه،
  • Blue Screen،
  • خطای محاسباتی،
  • یا رفتار غیرقابل پیش بینی

شود.

به همین دلیل
Stability حافظه
اهمیت زیادی دارد.

اشتباهات رایج — Common Mistakes: DRAM و Memory Timing
  • فرض اینکه DRAM مثل یک آرایه ساده با دسترسی آنی به هر Byte عمل می کند.
  • نادیده گرفتن نیاز DRAM به Refresh.
  • فرض اینکه Read در DRAM کاملاً Passive است.
  • نادیده گرفتن Row Buffer.
  • یکی دانستن Row Hit و Row Conflict.
  • مقایسه RAM فقط با عدد CL.
  • فرض اینکه CL16 همیشه از CL30 سریع تر است.
  • نادیده گرفتن Clock واقعی هنگام تبدیل Cycle به Nanosecond.
  • نادیده گرفتن tRCD و tRP.
  • نادیده گرفتن Secondary Timingها.
  • فرض اینکه Data Rate بالاتر همیشه Latency پایین تری ایجاد می کند.
  • نادیده گرفتن Memory Controller در Performance RAM.
  • نادیده گرفتن Access Pattern برنامه.
  • فرض اینکه تمام Memory Requestها هزینه یکسان دارند.
  • نادیده گرفتن هزینه Refresh.

سوالات متداول درباره DRAM و Timing حافظه

DRAM چیست؟

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

چرا DRAM باید Refresh شود؟

چون Charge
ذخیره شده در سلول ها
به مرور زمان
نشت می کند.

Row Buffer چیست؟

ساختاری مرتبط
با Sense Amplifierها است
که اطلاعات Row فعال
را در دسترس قرار می دهد.

Row Hit چیست؟

زمانی است
که درخواست جدید
به Rowی مربوط باشد
که از قبل
در Bank فعال است.

Row Conflict چیست؟

زمانی است
که Row دیگری
در همان Bank باز است
و برای دسترسی جدید
باید ابتدا بسته شود.

CL چیست؟

CAS Latency
یکی از Timingهای DRAM
و مربوط به فاصله
میان Read Command
و آماده شدن داده است.

tRCD چیست؟

فاصله زمانی لازم
میان ACTIVATE
و دسترسی Column
را توصیف می کند.

tRP چیست؟

Timing مربوط
به Precharge
پیش از باز کردن
Row جدید است.

آیا CL کمتر همیشه بهتر است؟

خیر.
Data Rate
و سایر Timingها
نیز باید در نظر گرفته شوند.

چرا RAM سریع تر ممکن است CL بالاتری داشته باشد؟

چون هر Clock Cycle
در حافظه سریع تر
زمان کوتاه تری دارد
و عدد Cycle به تنهایی
زمان واقعی را نشان نمی دهد.

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

  • DRAM: حافظه Dynamic Random-Access Memory.
  • DRAM Cell: واحد پایه ذخیره اطلاعات در DRAM.
  • 1T1C: ساختار کلاسیک یک Transistor و یک Capacitor.
  • Capacitor: عنصر ذخیره Charge در سلول DRAM.
  • Access Transistor: ترانزیستور کنترل دسترسی به سلول.
  • Wordline: خط کنترلی انتخاب Row سلول ها.
  • Bitline: مسیر مرتبط با خواندن یا نوشتن وضعیت سلول.
  • Sense Amplifier: مدار تشخیص و تقویت وضعیت سلول.
  • Refresh: بازسازی دوره ای اطلاعات DRAM.
  • Row: مجموعه ای از سلول های DRAM که با هم فعال می شوند.
  • Column: بخش انتخابی داده در Row فعال.
  • Bank: بخش نسبتاً مستقل داخلی DRAM.
  • Row Buffer: ساختار مرتبط با Row فعال.
  • ACTIVATE: فرمان باز کردن Row.
  • PRECHARGE: آماده سازی Bank برای Row جدید.
  • Row Hit: دسترسی به Row از قبل فعال.
  • Row Conflict: نیاز به بستن Row فعلی و باز کردن Row دیگر.
  • CAS Latency: Timing مربوط به Column Read.
  • tRCD: فاصله ACTIVATE تا Column Command.
  • tRP: زمان Precharge.
  • tRAS: حداقل زمان فعال ماندن Row.
  • tRFC: Timing مرتبط با Refresh.
  • Command Rate: Timing مربوط به Command و Rank Selection.
  • Burst Transfer: انتقال چند داده متوالی پس از Command.
  • Burst Length: تعداد Transferهای یک Burst.
  • Bank-Level Parallelism: اجرای همپوشان عملیات در Bankهای مختلف.
  • Rowhammer: پدیده ایجاد Bit Flip ناشی از فعال سازی شدید برخی Rowها در شرایط خاص.

خلاصه فصل

DRAM
حافظه ای با تراکم بالا است
که بخش اصلی
System Memory
بسیاری از کامپیوترها
را تشکیل می دهد.

در مدل کلاسیک،
هر Bit
با ساختاری شامل:

1 Transistor
+
1 Capacitor

نگهداری می شود.

چون Charge
به مرور نشت می کند،
اطلاعات باید
به صورت دوره ای
Refresh شوند.

DRAM
به ساختارهایی مانند:

Channel
→
Rank
→
Bank
→
Row
→
Column

سازمان دهی می شود.

برای دسترسی
به یک Row جدید،
ممکن است لازم باشد:

PRECHARGE
→
ACTIVATE
→
READ / WRITE

انجام شود.

اگر Row مورد نیاز
از قبل باز باشد،
Row Hit
ایجاد می شود
و دسترسی معمولاً
ارزان تر است.

Timingهایی مانند:

CL
/
tRCD
/
tRP
/
tRAS

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

بنابراین
مقایسه RAM
فقط با CL
اشتباه است.

باید:

Data Rate
+
Timings
+
Channels
+
Ranks
+
Memory Controller
+
Access Pattern

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


نکته اصلی این فصل این است که RAM یک مخزن ساده و یکنواخت از Byteها نیست؛
پشت هر Memory Access مجموعه ای از انتخاب Bank و Row، فعال سازی سلول ها،
Sense کردن داده، Timingها، انتقال Burst، Refresh و تصمیم های Memory Controller قرار دارد.

فصل 87
سطح: متوسط
موضوع: نسل های حافظه مرتبط با CPU
تمرکز: DDR3 / DDR4 / DDR5 / LPDDR / Data Rate / Voltage / Compatibility

DDR3، DDR4 و DDR5 فقط نسل های سریع تر RAM نیستند؛ هر نسل رابط، Data Rate، Power و Platform متفاوتی دارد

DDR3، DDR4، DDR5 و LPDDR؛ نسل های حافظه دقیقاً چه تفاوتی دارند؟

وقتی مشخصات یک پردازنده
یا لپ تاپ را بررسی می کنیم،
معمولاً در کنار CPU
عباراتی مانند:

DDR3
/
DDR4
/
DDR5
/
LPDDR4X
/
LPDDR5
/
LPDDR5X

دیده می شوند.

این نام ها
فقط نشان دهنده
«RAM قدیمی یا جدید»
نیستند.

هر نسل حافظه
مجموعه ای از تغییرات
در:

  • Data Rate،
  • Bandwidth،
  • Voltage و Power،
  • ساختار داخلی،
  • Memory Channel،
  • ظرفیت قابل پشتیبانی،
  • و Interface الکتریکی

ایجاد کرده است.

مهم تر از همه:

DDR3
≠
DDR4
≠
DDR5

این نسل ها
معمولاً جایگزین مستقیم
یکدیگر روی همان Platform
نیستند.

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

  • DDR چیست.
  • چرا نسل های مختلف DDR ایجاد شدند.
  • DDR3 چه ویژگی هایی دارد.
  • DDR4 چه تغییراتی نسبت به DDR3 ایجاد کرد.
  • DDR5 چه تفاوت هایی با DDR4 دارد.
  • LPDDR چیست و چرا در لپ تاپ ها استفاده می شود.
  • DDR و LPDDR چه تفاوتی دارند.
  • Data Rate با Memory Clock چه تفاوتی دارد.
  • چرا DDR5 با وجود Timing بالاتر می تواند Bandwidth بیشتری داشته باشد.
  • On-Die ECC در DDR5 چیست.
  • چرا On-Die ECC جای ECC Memory واقعی را نمی گیرد.
  • چرا CPU تعیین می کند چه نسل RAMی قابل استفاده است.
  • چرا DDR5 را نمی توان در Slot DDR4 نصب کرد.
  • چرا RAM جدیدتر همیشه سیستم را به همان نسبت سریع تر نمی کند.
  • در خرید سیستم استوک کدام نسل حافظه اهمیت بیشتری دارد.

DDR چیست؟

DDR مخفف:

Double Data Rate

است.

مفهوم اصلی DDR
این است که Data
در دو لبه
Clock Signal
منتقل می شود.

Rising Edge
+
Falling Edge
→
Two Data Transfers Per Clock Cycle

به همین دلیل
Data Rate مؤثر
بیشتر از Clock پایه
رابط حافظه است.

چرا DDR نسل های مختلف دارد؟

با افزایش Performance CPUها،
تعداد Coreها
و حجم Data،
Memory System نیز
باید توان انتقال
بیشتری فراهم کند.

نسل های جدید DDR
تلاش می کنند
محدودیت هایی مانند:

  • Bandwidth محدود،
  • ظرفیت Memory،
  • مصرف انرژی،
  • Signal Integrity،
  • و قابلیت Scaling

را بهبود دهند.

بنابراین تغییر نسل
فقط افزایش یک عدد
در نام RAM نیست.

مقایسه کلی DDR3، DDR4 و DDR5

ویژگی DDR3 DDR4 DDR5
جایگاه نسلی قدیمی تر نسل بسیار رایج سیستم های چند سال اخیر نسل جدیدتر Platformهای مدرن
Data Rate معمول پایین تر بالاتر از DDR3 بالاتر از DDR4
Voltage اسمی رایج بالاتر کمتر از DDR3 کمتر از DDR4
Bandwidth بالقوه کمتر متوسط تا بالا بالاتر
ساختار داخلی ساده تر بهبود یافته Parallelism داخلی بیشتر و تغییرات گسترده تر
سازگاری فیزیکی مختص DDR3 مختص DDR4 مختص DDR5

این جدول
مقایسه مفهومی است.

Speed دقیق،
Timing
و قابلیت ها
به Module،
CPU
و Platform
بستگی دارند.

DDR3 چیست؟

DDR3
یکی از نسل های
مهم DRAM
در سیستم های قدیمی تر
Desktop،
Laptop
و Workstation است.

بسیاری از سیستم های
نسل های قدیمی Intel Core
و AMD
از DDR3
استفاده می کردند.

DDR3
هنوز ممکن است
در بازار استوک
دیده شود،
به خصوص در:

  • Desktopهای اداری قدیمی،
  • Workstationهای نسل قدیم،
  • و Laptopهای قدیمی تر.

DDR3L چیست؟

DDR3L
نسخه ای از DDR3
با Voltage عملیاتی
پایین تر است.

حرف L
از:

Low Voltage

می آید.

DDR3L
در بسیاری از Laptopها
و سیستم های کم مصرف تر
استفاده شده است.

در سیستم استوک
نباید فقط به عبارت DDR3
اکتفا کرد؛
نوع دقیق Module
و سازگاری Platform
باید بررسی شود.

DDR4 چه تغییری نسبت به DDR3 ایجاد کرد؟

DDR4
برای افزایش
Data Rate،
ظرفیت
و Efficiency
نسبت به DDR3
طراحی شد.

در سطح کلی:

DDR3
→
DDR4
=
More Bandwidth
+
Better Scaling
+
Lower Operating Voltage

DDR4
برای سال ها
حافظه اصلی
طیف بسیار گسترده ای
از:

  • Desktopها،
  • Laptopها،
  • Workstationها،
  • و Serverها

بوده است.

چرا DDR4 در سیستم های استوک اهمیت زیادی دارد؟

بخش بزرگی
از Laptopها
و Workstationهای استوک
کاربردی امروز
از DDR4
استفاده می کنند.

مزیت مهم DDR4
در بازار استوک
این است که معمولاً:

  • دسترسی به Module آن آسان است،
  • ارتقای Capacity معمولاً اقتصادی است،
  • و تنوع SO-DIMM و DIMM زیادی وجود دارد.

بنابراین DDR4 بودن
به خودی خود
یک ضعف مهم محسوب نمی شود.

DDR5 چه تغییری نسبت به DDR4 ایجاد کرد؟

DDR5
برای ادامه افزایش
Memory Bandwidth
و Scaling
طراحی شده است.

مهم ترین جهت گیری های آن:

  • Data Rate بالاتر،
  • Bandwidth بیشتر،
  • ظرفیت بالاتر در نسل های جدیدتر Module،
  • Parallelism بیشتر در Memory Subsystem،
  • و تغییراتی در Power Management و ساختار Module

هستند.

DDR5
→
Higher Memory Throughput Potential

چرا ساختار Channel در DDR5 متفاوت شده است؟

یکی از تغییرات مهم
DDR5 DIMM
تقسیم مسیر Data
به Subchannelهای مستقل تر
در سطح Module است.

این طراحی
امکان استفاده کارآمدتر
از Memory Transactions
و Parallelism بیشتر
را فراهم می کند.

اما نباید
این Subchannelها
را مستقیماً با مفهوم
Dual Channel
در سطح Memory Controller CPU
یکی دانست.

DDR5 DIMM Subchannels
≠
CPU Memory Channel Count

Power Management در DDR5 چه تغییری کرده است؟

DDR5
بخشی از مدیریت Voltage
مربوط به Module
را نسبت به نسل های قبلی
تغییر داده است.

در DIMMهای DDR5
معمولاً Power Management IC
روی خود Module
نقش مهم تری دارد.

هدف این تغییرات
مدیریت بهتر Power
و امکان Scaling
در Data Rateهای بالاتر است.

On-Die ECC در DDR5 چیست؟

DDR5 DRAM
از مکانیزم
On-Die ECC
برای کمک به اصلاح
بعضی خطاهای داخلی
در خود تراشه DRAM
استفاده می کند.

DRAM Cell Array
→
Internal Error Correction
→
Data Interface

هدف اصلی
افزایش Reliability
داخلی خود DRAM
با افزایش تراکم
و پیچیدگی ساخت است.

آیا On-Die ECC یعنی تمام DDR5ها ECC Memory هستند؟

خیر.

این یکی از مهم ترین
سوءتفاهم ها
درباره DDR5 است.

On-Die ECC
عمدتاً برای اصلاح
خطاهای داخلی
داخل DRAM Die
طراحی شده است.

System-Level ECC
مسیر Data
را در سطح گسترده تری
محافظت می کند.

DDR5 On-Die ECC
≠
ECC DIMM
≠
End-to-End Memory Protection

بنابراین اگر
Workstation یا Server
به ECC واقعی نیاز دارد،
باید پشتیبانی ECC
در:

  • CPU،
  • Motherboard،
  • Memory Controller،
  • و Module

بررسی شود.

چرا عدد CL در DDR5 معمولاً بزرگ تر از DDR4 است؟

Timingهایی مانند CL
با تعداد Cycle
بیان می شوند.

DDR5
Data Rate
بالاتری دارد،
بنابراین هر Cycle
زمان فیزیکی متفاوتی
نسبت به Memory کندتر
دارد.

به همین دلیل
نمی توان فقط نوشت:

CL40 > CL16
→
DDR5 Is Much Slower

این نتیجه گیری
اشتباه است.

برای بررسی Latency
باید:

Timing
+
Memory Clock
+
Memory Architecture

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

عددی مانند DDR4-3200 یا DDR5-5600 چه معنایی دارد؟

عدد انتهای نام
معمولاً Data Rate
مؤثر را بیان می کند.

DDR4-3200
→
3200 MT/s

DDR5-5600
→
5600 MT/s

MT/s
به معنی:

Mega Transfers Per Second

است.

استفاده از اصطلاح MHz
برای این اعداد
در بازار رایج است،
اما از نظر فنی
MT/s
توصیف دقیق تری
برای Data Rate است.

Data Rate بیشتر چه چیزی را افزایش می دهد؟

Data Rate بیشتر
ظرفیت انتقال Data
در Memory Bus
را افزایش می دهد.

Higher MT/s
→
Higher Potential Bandwidth

اما Performance واقعی
فقط به Bandwidth
بستگی ندارد.

Latency،
Channel Configuration،
Cache،
CPU
و Workload
نیز مهم هستند.

آیا DDR5 همیشه بسیار سریع تر از DDR4 است؟

خیر.

DDR5
Bandwidth بالقوه بیشتری
فراهم می کند،
اما میزان افزایش
Performance Application
به رفتار Workload
بستگی دارد.

اگر برنامه
Memory-Bandwidth Bound باشد:

More Memory Bandwidth
→
Potentially Significant Gain

اگر برنامه
بیشتر Compute-Bound
یا Cache-Resident باشد:

More Memory Bandwidth
→
Possibly Small Gain

LPDDR چیست؟


LPDDR
Low-Power Double Data Rate
خانواده ای از حافظه DRAM
با تمرکز ویژه بر
مصرف انرژی پایین
و دستگاه های Mobile است.

LPDDR
بیشتر در:

  • Smartphone،
  • Tablet،
  • Ultrabook،
  • لپ تاپ های بسیار باریک،
  • و بعضی SoCها

دیده می شود.

LPDDR4، LPDDR4X، LPDDR5 و LPDDR5X چیست؟

LPDDR نیز
مانند DDR معمولی
نسل های مختلف دارد.

LPDDR3
→
LPDDR4
→
LPDDR4X
→
LPDDR5
→
LPDDR5X

در نسل های جدیدتر
هدف اصلی
افزایش:

  • Data Rate،
  • Bandwidth،
  • Power Efficiency،
  • و قابلیت استفاده در Deviceهای Mobile

بوده است.

DDR و LPDDR چه تفاوتی دارند؟

ویژگی DDR LPDDR
تمرکز اصلی Performance و قابلیت ارتقا Power Efficiency و Mobility
کاربرد رایج Desktop / Laptop / Workstation / Server Mobile / Thin Laptop / SoC
فرم نصب اغلب DIMM یا SO-DIMM اغلب Soldered یا نزدیک SoC
قابلیت ارتقا در بسیاری از سیستم ها امکان پذیر اغلب محدود یا غیرممکن
تمرکز مصرف انرژی متعارف بسیار مهم

چرا LPDDR معمولاً قابل ارتقا نیست؟

LPDDR
در بسیاری از Laptopها
مستقیماً روی Motherboard
یا نزدیک Processor
لحیم می شود.

این روش
می تواند مزایایی مانند:

  • مصرف کمتر،
  • مسیر Signal کوتاه تر،
  • طراحی باریک تر،
  • و امکان Data Rate بالا

داشته باشد.

اما عیب مهم:

Soldered Memory
→
Limited Or No RAM Upgrade

هنگام خرید لپ تاپ دارای LPDDR چه نکته ای مهم است؟

اگر RAM دستگاه
لحیم شده باشد،
Capacity زمان خرید
اهمیت بسیار بیشتری دارد.

برای مثال
اگر Laptop:

8 GB LPDDR

داشته باشد
و امکان ارتقا
وجود نداشته باشد،
کاربر در آینده
نمی تواند به سادگی
RAM را افزایش دهد.

بنابراین برای استفاده
چندساله:

Capacity آینده
باید از ابتدا
در نظر گرفته شود.

چرا CPU تعیین می کند چه نوع DDRی قابل استفاده است؟

Memory Controller
داخل Processor
برای Interfaceهای
مشخصی طراحی می شود.

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

CPU IMC
↔
Supported Memory Technology

بعضی نسل های CPU
فقط یک نسل Memory
را پشتیبانی می کنند.

بعضی Platformهای انتقالی
ممکن است بسته به Motherboard
از DDR4 یا DDR5
پشتیبانی کنند،
اما معمولاً یک Board مشخص
برای یکی از آنها
طراحی شده است.

آیا DDR5 را می توان داخل Slot DDR4 نصب کرد؟

خیر.

نسل های DDR
تفاوت های:

  • فیزیکی،
  • الکتریکی،
  • Signal،
  • Voltage،
  • و Protocol

دارند.

محل Key
روی Module
نیز متفاوت است
تا نصب اشتباه
جلوگیری شود.

DDR4 DIMM
≠
DDR5 DIMM

DIMM و SO-DIMM چه ارتباطی با نسل DDR دارند؟

DDR Generation
نوع فناوری Memory
را مشخص می کند.

DIMM و SO-DIMM
بیشتر به Form Factor
Module مربوط هستند.

DDR4 DIMM
→
Desktop

DDR4 SO-DIMM
→
Laptop / Mini PC

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

آیا نسل جدیدتر RAM ظرفیت بیشتری هم فراهم می کند؟

نسل های جدیدتر
معمولاً امکان استفاده
از Device Density
و Module Capacity
بالاتر را
بهتر فراهم می کنند.

اما Maximum RAM
یک سیستم
فقط به نسل DDR
وابسته نیست.

عوامل مهم:

  • Memory Controller CPU،
  • Motherboard،
  • BIOS/UEFI،
  • تعداد Slot،
  • Module Density،
  • و نوع Platform.

DDR5 بودن یعنی Dual Channel بودن سیستم؟

نه لزوماً.

Memory Channel
در سطح Platform
و Memory Controller
تعریف می شود.

تغییرات داخلی
DDR5 Module
نباید با تعداد
Channelهای CPU
اشتباه گرفته شوند.

برای تشخیص
Channel Configuration
باید Layout واقعی
سیستم بررسی شود.

نسل RAM چه تاثیری بر Integrated GPU دارد؟

Integrated GPU
معمولاً از
System Memory
استفاده می کند.

بنابراین Memory Bandwidth
می تواند روی
Performance آن
تاثیر زیادی داشته باشد.

Faster Memory
+
Adequate Channels
→
More Bandwidth For iGPU

به همین دلیل
بعضی Laptopهای دارای
LPDDR5 یا DDR5
می توانند برای iGPU
Bandwidth بیشتری
نسبت به Configurationهای
قدیمی تر فراهم کنند.

البته Performance نهایی
به خود GPU
و Architecture آن
نیز بستگی دارد.

آیا ارتقا از DDR4 به DDR5 CPU را سریع تر می کند؟

خود Core CPU
با تعویض نسل RAM
تغییر نمی کند.

چیزی که تغییر می کند
رفتار Memory Subsystem است.

اگر CPU
مرتباً منتظر Memory باشد،
افزایش Bandwidth
یا تغییر Latency
می تواند Performance
را بهتر کند.

اما اگر Workload:

Cache-Resident
OR
Compute-Bound

باشد،
تفاوت ممکن است
بسیار کمتر باشد.

چرا RAM نسل جدیدتر همیشه سیستم سریع تری نمی سازد؟

Performance سیستم
حاصل همکاری
اجزای متعدد است.

CPU
+
Cache
+
Memory Controller
+
RAM
+
Channels
+
Software
→
Real Performance

اگر Bottleneck
جای دیگری باشد،
افزایش Memory Bandwidth
ممکن است اثر کمی داشته باشد.

در خرید سیستم استوک DDR3، DDR4 یا DDR5 چقدر مهم است؟

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

باید همزمان بررسی شود:

  • مدل CPU،
  • نسل پردازنده،
  • ظرفیت RAM،
  • Channel Configuration،
  • قابلیت ارتقا،
  • Storage،
  • GPU،
  • و قیمت کل سیستم.

آیا سیستم DDR3 هنوز ارزش خرید دارد؟

بستگی به:

  • قیمت،
  • نوع کاربری،
  • CPU،
  • قابلیت ارتقا،
  • و عمر مورد انتظار سیستم

دارد.

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

اما برای خریدی
با هدف استفاده بلندمدت،
Platform قدیمی DDR3
معمولاً محدودیت های بیشتری
از نظر:

  • CPU Generation،
  • Memory Capacity،
  • Efficiency،
  • I/O،
  • و Upgrade Path

دارد.

آیا DDR4 هنوز برای سیستم استوک مناسب است؟

بله.

DDR4
در بسیاری از
Laptopها،
Workstationها
و Desktopهای
کاملاً کاربردی
استفاده می شود.

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

  • اداری،
  • مهندسی،
  • برنامه نویسی،
  • طراحی،
  • و حتی Gaming

DDR4
همچنان می تواند
Performance کافی
ارائه دهد.

چه زمانی DDR5 مزیت مهم تری محسوب می شود؟

DDR5
ارزش بیشتری پیدا می کند
زمانی که:

  • Workload به Bandwidth حساس باشد،
  • Platform جدیدتر مورد نیاز باشد،
  • Integrated GPU از Bandwidth بیشتر سود ببرد،
  • Memory Capacity بالا لازم باشد،
  • یا Upgrade Path جدیدتر اهمیت داشته باشد.

اما نباید
CPU ضعیف تر
را فقط به خاطر
DDR5 بودن سیستم
به CPU قوی تر
روی Platform DDR4
ترجیح داد.

در لپ تاپ استوک دارای LPDDR چه چیزی را بررسی کنیم؟

  1. ظرفیت RAM را مشخص کنید.
  2. بررسی کنید Memory کاملاً Soldered است یا خیر.
  3. امکان ارتقا را بررسی کنید.
  4. نسل LPDDR را ثبت کنید.
  5. نیاز RAM آینده کاربر را تخمین بزنید.
  6. Performance واقعی دستگاه را بررسی کنید.

در Laptop دارای
16 GB LPDDR Soldered
ممکن است Speed حافظه
عالی باشد،
اما سقف Capacity
برای همیشه
همان 16 GB بماند.

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

  1. مدل دقیق CPU را پیدا کنید.
  2. نسل Memory پشتیبانی شده را بررسی کنید.
  3. نوع Motherboard یا Laptop را مشخص کنید.
  4. DIMM، SO-DIMM یا Soldered بودن را بررسی کنید.
  5. حداکثر Capacity پشتیبانی شده را بررسی کنید.
  6. Data Rate رسمی Platform را بررسی کنید.
  7. تعداد Channelها را بررسی کنید.
  8. در Workstation، ECC Support را در صورت نیاز بررسی کنید.
  9. در Laptop، Slotهای قابل ارتقا را مشخص کنید.

زیرساخت فنی — چرا افزایش نسل DDR فقط افزایش Clock نیست؟

اگر هدف فقط
افزایش Clock
همان Interface قدیمی بود،
با افزایش Speed
مشکلات:

  • Signal Integrity،
  • Power،
  • Timing Margin،
  • و Scalability

شدیدتر می شدند.

به همین دلیل
نسل جدید Memory
معمولاً مجموعه ای
از تغییرات معماری
ایجاد می کند.

DDR Generation Change
↓
Electrical Changes
+
Protocol Changes
+
Internal Organization Changes
+
Power Changes
+
Higher Data Rate

Memory Controller CPU
نیز باید
برای این Interface جدید
طراحی شده باشد.

CPU IMC
↔
Motherboard
↔
Memory Technology

به همین دلیل
RAM را نمی توان
مستقل از CPU
و Platform
بررسی کرد.

نکته مهندسی — Memory Generation را با Memory Performance یکی ندانید

عبارت:

DDR5

به تنهایی
Performance دقیق RAM
را مشخص نمی کند.

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

  • Data Rate متفاوت،
  • Timing متفاوت،
  • Channel Configuration متفاوت،
  • CPU متفاوت،
  • و Memory Controller متفاوت

داشته باشند.

DDR Generation
=
Technology Generation

Real Memory Performance
=
Generation
+
Data Rate
+
Timing
+
Channels
+
IMC
+
Workload

تاثیر بر عملکرد — Bandwidth بیشتر زمانی ارزش دارد که CPU واقعاً بتواند از آن استفاده کند

تصور کنید
DDR5
Bandwidth بسیار بیشتری
نسبت به DDR4
در اختیار سیستم قرار دهد.

اگر Workload
مرتباً حجم زیادی Data
از RAM بخواند:

More Bandwidth
→
Less Memory Bottleneck
→
More Performance

اما اگر بیشتر Data
داخل Cache
باقی بماند:

High Cache Hit Rate
→
Less DRAM Traffic
→
Smaller DDR Generation Impact

بنابراین تفاوت DDR4 و DDR5
در تمام برنامه ها
درصد یکسانی
از Performance
ایجاد نمی کند.

اشتباهات رایج — Common Mistakes درباره نسل های DDR
  • فرض اینکه DDR5 همیشه چند برابر DDR4 سریع تر است.
  • مقایسه RAM فقط براساس نام نسل.
  • فرض اینکه DDR4 را می توان در Slot DDR5 نصب کرد.
  • فرض اینکه DDR5 را می توان در Slot DDR4 نصب کرد.
  • یکی دانستن MHz و MT/s.
  • مقایسه CL بدون توجه به Data Rate.
  • فرض اینکه CL بالاتر همیشه Latency واقعی بالاتر دارد.
  • فرض اینکه DDR5 On-Die ECC همان ECC Memory کامل است.
  • فرض اینکه DDR5 بودن به معنی Dual Channel بودن سیستم است.
  • نادیده گرفتن Memory Controller CPU.
  • نادیده گرفتن Motherboard هنگام بررسی سازگاری RAM.
  • فرض اینکه LPDDR ضعیف تر از DDR است.
  • نادیده گرفتن غیرقابل ارتقا بودن LPDDR در بسیاری از Laptopها.
  • خرید Laptop با RAM Soldered ناکافی فقط به دلیل Speed بالاتر.
  • رد کردن سیستم DDR4 فقط به دلیل وجود DDR5 در بازار.
  • خرید CPU ضعیف تر فقط به خاطر استفاده سیستم از DDR5.

نسل های حافظه در خرید سیستم؛ برداشت سریع

نوع حافظه برداشت کلی مهم ترین نکته خرید
DDR3 / DDR3L Platform قدیمی تر قیمت، CPU و عمر مفید مورد انتظار را دقیق بررسی کنید
DDR4 Platform بالغ و هنوز بسیار کاربردی Capacity و Dual Channel را بررسی کنید
DDR5 Platform جدیدتر با Bandwidth بالقوه بیشتر فقط به DDR5 بودن اکتفا نکنید؛ CPU و Configuration مهم اند
LPDDR4X Mobile و کم مصرف اغلب قابلیت ارتقا محدود است
LPDDR5 / LPDDR5X Mobile مدرن با Bandwidth و Efficiency بالا Capacity ثابت دستگاه را قبل از خرید جدی بگیرید

سوالات متداول درباره DDR3، DDR4، DDR5 و LPDDR

DDR چیست؟

Double Data Rate
خانواده ای از حافظه DRAM است
که Data را در دو لبه
Clock منتقل می کند.

DDR4 بهتر است یا DDR5؟

DDR5 نسل جدیدتری است
و Bandwidth بالقوه بیشتری دارد،
اما Performance واقعی
به CPU،
Timing،
Channel
و Workload بستگی دارد.

آیا DDR5 را می توان روی سیستم DDR4 نصب کرد؟

خیر.
Interface فیزیکی و الکتریکی
این دو نسل متفاوت است.

آیا DDR5 همیشه سریع تر است؟

از نظر Bandwidth بالقوه
معمولاً مزیت دارد،
اما افزایش Performance Application
به Workload بستگی دارد.

On-Die ECC در DDR5 یعنی RAM من ECC است؟

خیر.
On-Die ECC
مکانیزم داخلی DRAM است
و جای ECC Memory
در سطح سیستم را نمی گیرد.

LPDDR چیست؟

Low-Power DDR
خانواده ای از DRAM
با تمرکز بر
مصرف انرژی پایین
و Deviceهای Mobile است.

LPDDR قابل ارتقا است؟

در بسیاری از Laptopها
LPDDR روی Motherboard
لحیم شده است
و قابل ارتقا نیست.

DDR4 در سال های آینده ضعیف محسوب می شود؟

صرفاً DDR4 بودن
سیستم را ضعیف نمی کند.
CPU،
Capacity،
Channel Configuration
و Workload
بسیار مهم تر هستند.

برای لپ تاپ استوک DDR4 بهتر است یا LPDDR5؟

به نیاز کاربر بستگی دارد.
LPDDR5 می تواند
Bandwidth و Efficiency خوبی داشته باشد،
اما DDR4 SO-DIMM
ممکن است قابلیت ارتقای بسیار بهتری ارائه دهد.

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

  • DDR: Double Data Rate؛ خانواده ای از حافظه DRAM.
  • DDR3: نسل قدیمی تر DDR که در بسیاری از سیستم های نسل قبل استفاده شده است.
  • DDR3L: نسخه Low-Voltage از DDR3.
  • DDR4: نسل بعدی DDR با Data Rate و Efficiency بالاتر نسبت به DDR3.
  • DDR5: نسل جدیدتر DDR با تمرکز بر Bandwidth و Scaling بیشتر.
  • LPDDR: Low-Power DDR؛ حافظه با تمرکز بر مصرف انرژی پایین در Deviceهای Mobile.
  • LPDDR4X: نسخه کم مصرف تر تکامل یافته خانواده LPDDR4.
  • LPDDR5: نسل جدیدتر LPDDR با Bandwidth و Efficiency بیشتر.
  • LPDDR5X: توسعه LPDDR5 برای Data Rateهای بالاتر.
  • MT/s: Mega Transfers Per Second؛ نرخ Transfer داده.
  • On-Die ECC: Error Correction داخلی داخل DRAM Die.
  • PMIC: Power Management Integrated Circuit.
  • SO-DIMM: فرم فاکتور کوچک تر Memory Module که در بسیاری از Laptopها استفاده می شود.
  • Soldered Memory: حافظه ای که مستقیماً روی Board لحیم شده و معمولاً قابل تعویض نیست.

خلاصه فصل

DDR3،
DDR4
و DDR5
نسل های مختلف
Main Memory
هستند.

حرکت از یک نسل
به نسل بعد
فقط افزایش Frequency نیست.

New DDR Generation
=
Higher Data Rate
+
Interface Changes
+
Power Changes
+
Internal Architecture Changes
+
Better Scaling

DDR5
Bandwidth بالقوه
بیشتری ارائه می دهد،
اما افزایش Performance
در Application
به Workload وابسته است.

LPDDR
نیز مسیر متفاوتی
با تمرکز بیشتر
بر Power Efficiency
و دستگاه های قابل حمل
دنبال می کند.

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

CPU Memory Controller
+
Motherboard
+
Firmware
+
Physical Interface

سازگار باشد.


در خرید سیستم، DDR5 بودن به تنهایی دلیل برتری نیست
و DDR4 بودن نیز به تنهایی نقطه ضعف محسوب نمی شود؛
باید کل Platform، CPU، ظرفیت RAM، Channel Configuration،
قابلیت ارتقا و Workload واقعی کاربر را در کنار هم بررسی کرد.

فصل 88
سطح: متوسط تا پیشرفته
موضوع: سطوح دسترسی پردازنده
تمرکز: User Mode / Kernel Mode / Privilege / System Call

پردازنده به همه برنامه ها اجازه اجرای هر دستور و دسترسی مستقیم به تمام منابع سیستم را نمی دهد

User Mode و Kernel Mode چیست؟ CPU چگونه سطح دسترسی برنامه ها را کنترل می کند؟

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

اگر هر برنامه
اجازه داشت مستقیماً
جدول صفحات حافظه را تغییر دهد،
Interruptها را کنترل کند،
به حافظه Kernel دسترسی داشته باشد
یا منابع حیاتی CPU را تغییر دهد،
سیستم عامل نمی توانست
امنیت و پایداری سیستم
را حفظ کند.

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

Privilege Levels

را در اختیار
سیستم عامل قرار می دهد.

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

  • User Mode چیست.
  • Kernel Mode چیست.
  • Privilege Level چیست.
  • Privileged Instruction چیست.
  • چرا برنامه عادی نمی تواند مستقیماً همه دستورهای CPU را اجرا کند.
  • Ring 0 تا Ring 3 در معماری x86 چیست.
  • چرا معمولاً بیشتر درباره Ring 0 و Ring 3 صحبت می کنیم.
  • Exception و Interrupt چگونه باعث تغییر مسیر اجرای CPU می شوند.
  • System Call چیست.
  • CPU هنگام System Call چه کاری انجام می دهد.
  • Mode Switch با Context Switch چه تفاوتی دارد.
  • ARM Exception Levels چیست.
  • EL0 تا EL3 چه کاربردی دارند.
  • Privilege چگونه به امنیت سیستم کمک می کند.
  • Hypervisor چه ارتباطی با سطوح دسترسی دارد.

چرا CPU اصلاً به سطح دسترسی نیاز دارد؟

یک سیستم مدرن
ممکن است همزمان
صدها Process
و هزاران Thread
داشته باشد.

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

CPU باید بتواند
میان کدی که
اجازه مدیریت سیستم را دارد
و کدی که
فقط یک Application معمولی است
تفاوت ایجاد کند.

Application Code
≠
Operating System Kernel

User Mode چیست؟


حالت اجرای محدود برای برنامه های معمولی
User Mode
حالتی است که
Applicationهای معمولی
با سطح دسترسی محدود
در آن اجرا می شوند.

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

مرورگر،
نرم افزار Office،
بسیاری از بازی ها،
نرم افزارهای مهندسی
و بیشتر Applicationها
عمدتاً در User Mode
اجرا می شوند.

User Mode چه محدودیت هایی دارد؟

جزئیات دقیق
به ISA
و سیستم عامل
وابسته است،
اما برنامه User Mode
معمولاً اجازه ندارد
مستقیماً عملیات حساس
و مدیریتی را انجام دهد.

برای مثال
دسترسی آزاد به:

  • کنترل Memory Management،
  • تغییر مستقیم Page Tableهای Kernel،
  • کنترل برخی Interruptها،
  • تغییر وضعیت های حساس CPU،
  • دسترسی آزاد به حافظه Kernel،
  • و اجرای برخی Privileged Instructionها

محدود می شود.

Kernel Mode چیست؟


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

Kernel
برای مدیریت:

  • Processها،
  • Virtual Memory،
  • Interruptها،
  • Deviceها،
  • Scheduler،
  • و سایر منابع سیستم

به چنین سطح دسترسی
نیاز دارد.

مدل ساده User Mode و Kernel Mode

Applications
→
User Mode

Operating System Kernel
→
Kernel Mode

اما این تقسیم بندی
فقط یک مدل ساده شده است.

معماری های مختلف
می توانند چند سطح
Privilege
داشته باشند.

Privileged Instruction چیست؟

بعضی Instructionها
فقط زمانی
قابل اجرا هستند
که CPU
در سطح دسترسی
مناسب قرار داشته باشد.

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

Privileged Operation
→
Privilege Check
→
Allowed or Exception

اگر برنامه عادی یک دستور غیرمجاز اجرا کند چه می شود؟

CPU
سطح دسترسی فعلی
را بررسی می کند.

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

در عوض
یک Exception
ایجاد می شود.

User Program
→
Privileged Instruction
→
CPU Privilege Check
→
Exception

پشت صحنه فنی — Under the Hood: محدودیت User Mode فقط یک قانون نرم افزاری نیست

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

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

CPU هنگام اجرای
برخی Instructionها
و Memory Accessها
وضعیت Privilege فعلی
را بررسی می کند.

Current Privilege
+
Requested Operation
+
Protection Rules
→
Hardware Decision

این Hardware Enforcement
یکی از پایه های اصلی
Isolation
در سیستم های مدرن است.

Protection Ring در x86 چیست؟

معماری x86
چهار سطح Privilege
را در مدل Ring
تعریف می کند.

Ring 0
→
Highest Privilege

Ring 1

Ring 2

Ring 3
→
Lowest Privilege

Ring 0 چیست؟

Ring 0
بالاترین سطح
Privilege
در مدل کلاسیک
Protection Ringهای x86 است.

Kernel سیستم عامل
معمولاً در این سطح
اجرا می شود.

Ring 0
→
Kernel
→
High Privilege

Ring 3 چیست؟

Applicationهای User Space
معمولاً در Ring 3
اجرا می شوند.

Ring 3
→
User Applications
→
Restricted Privilege

پس Ring 1 و Ring 2 چه شدند؟

معماری x86
آنها را تعریف می کند،
اما سیستم عامل های مدرن
معمولاً مدل اصلی خود را
بیشتر بر:

Ring 0
+
Ring 3

بنا می کنند.

بنابراین در توضیحات
سیستم عامل های امروزی
Ring 1 و Ring 2
بسیار کمتر دیده می شوند.

مقایسه ساده Ringهای x86

Ring سطح دسترسی کاربرد رایج در سیستم های مدرن
Ring 0 بسیار بالا Kernel سیستم عامل
Ring 1 میانی معمولاً کمتر استفاده می شود
Ring 2 میانی معمولاً کمتر استفاده می شود
Ring 3 محدود Applicationهای User Space

CPL چیست؟

در x86
مفهوم:

Current Privilege Level

یا CPL
سطح Privilege
فعلی اجرای کد
را توصیف می کند.

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

Privilege Level چه ارتباطی با حافظه دارد؟

Page Table Entryها
می توانند مشخص کنند
یک Page
برای User Mode
قابل دسترسی است
یا فقط Kernel
اجازه دسترسی دارد.

Virtual Address
→
Page Translation
→
Permission Check
→
Access or Fault

بنابراین Memory Protection
فقط Address Translation
نیست.

Permission Check
نیز بخش مهمی
از این فرآیند است.

CPU هنگام دسترسی به حافظه چه Permissionهایی را بررسی می کند؟

بسته به معماری،
Page Table
می تواند اطلاعاتی
درباره مجاز بودن:

  • Read،
  • Write،
  • Execute،
  • و User/Supervisor Access

نگهداری کند.

CPU هنگام Memory Access
این محدودیت ها
را اعمال می کند.

چرا برنامه User Mode نمی تواند حافظه Kernel را بخواند؟

Pageهای متعلق به Kernel
می توانند به شکلی
علامت گذاری شوند
که دسترسی User Mode
به آنها مجاز نباشد.

اگر Application
تلاش کند
به چنین Pageای
دسترسی پیدا کند،
CPU
Protection Fault
ایجاد می کند.

اگر برنامه محدود است، چگونه از سیستم عامل کاری می خواهد؟

اینجا مفهوم:

System Call

وارد می شود.

Application
درخواست خود
را از طریق Interface
کنترل شده ای
به Kernel
ارسال می کند.

Application
→
System Call
→
Kernel
→
Requested Service

یک مثال ساده از System Call

فرض کنید برنامه
می خواهد داده ای
از یک File
بخواند.

Application
خودش مستقیماً
کنترل کامل Storage Device
را در اختیار نمی گیرد.

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

Application
→
Read Request
→
System Call
→
Kernel
→
File System / Driver
→
Result

هنگام System Call چه اتفاقی برای CPU می افتد؟

پردازنده
باید از اجرای
کد محدود User Space
وارد مسیر کنترل شده
Kernel شود.

این Transition
توسط مکانیزم های
تعریف شده معماری CPU
انجام می شود.

User Mode
→
Controlled Entry
→
Kernel Mode
→
Kernel Handler

دستور SYSCALL چیست؟

x86-64
مکانیزم هایی
برای ورود سریع
از User Space
به Kernel
فراهم می کند.

یکی از Instructionهای مهم:

SYSCALL

است.

Kernel
از قبل
وضعیت لازم
برای Entry Point
مناسب را
تنظیم می کند.

SYSRET چیست؟

در معماری x86-64
دستور:

SYSRET

می تواند
در مسیر بازگشت
از Kernel
به سطح User
استفاده شود.

User
→
SYSCALL
→
Kernel
→
SYSRET
→
User

Interrupt چه ارتباطی با Privilege دارد؟

Interrupt
می تواند باعث شود
CPU اجرای عادی
یک برنامه را متوقف کند
و وارد Handler
مشخصی شود.

این Handler
معمولاً بخشی
از Kernel
یا کد سطح بالای
سیستم است.

بنابراین Interrupt Handling
می تواند شامل
تغییر Control Flow
و Privilege State
باشد.

Exception چه تفاوتی با System Call دارد؟

System Call
معمولاً یک درخواست
عمدی و کنترل شده
از Application
برای دریافت سرویس
از Kernel است.

Exception
می تواند در نتیجه
یک وضعیت خاص
هنگام اجرای Instruction
ایجاد شود.

برای مثال:

  • Page Fault،
  • Divide Error،
  • Invalid Opcode،
  • Protection Violation،
  • و برخی خطاهای اجرای Instruction.

Trap چیست؟

اصطلاح Trap
بسته به معماری
و سیستم عامل
می تواند کاربرد
دقیق متفاوتی داشته باشد.

اما به طور کلی
به انتقال کنترل
به Handler
در نتیجه یک رویداد
همزمان با اجرای برنامه
مربوط می شود.

بنابراین بهتر است
اصطلاحات:

Interrupt
/
Exception
/
Trap

را با توجه
به معماری مشخص
تفسیر کنیم.

Mode Switch چیست؟

Mode Switch
در این بحث
به تغییر سطح اجرا
میان User Mode
و Kernel Mode
اشاره دارد.

User Mode
↔
Kernel Mode

این تغییر
الزاماً به معنی
عوض شدن Process
نیست.

Mode Switch و Context Switch یکی هستند؟

خیر.

این دو مفهوم
به یکدیگر مرتبط اند
اما یکسان نیستند.

در System Call
ممکن است همان Thread
از User Mode
وارد Kernel Mode شود
و سپس دوباره
به همان Thread
بازگردد.

در این حالت
الزاماً Scheduler
Thread دیگری
را جایگزین نکرده است.

مقایسه Mode Switch و Context Switch

مفهوم چه چیزی تغییر می کند؟ آیا Process یا Thread حتماً عوض می شود؟
Mode Switch Privilege / Execution Mode خیر
Context Switch Execution Context معمولاً Thread یا Process اجرایی تغییر می کند

چرا System Call هزینه دارد؟

اجرای System Call
نسبت به یک Function Call
معمولی
پیچیده تر است.

CPU و Kernel
باید Transition
کنترل شده ای
میان دو محیط
انجام دهند.

ممکن است:

  • بخشی از Register State مدیریت شود،
  • Privilege تغییر کند،
  • Kernel Entry Code اجرا شود،
  • Permissionها بررسی شوند،
  • و در پایان مسیر بازگشت انجام شود.
اشتباه رایج — Common Mistake: هر System Call یک Context Switch کامل است

خیر.

System Call
می تواند باعث
ورود همان Thread
به Kernel Mode شود
بدون اینکه CPU
اجرای Thread دیگری
را آغاز کند.

System Call
≠
Necessarily a Context Switch

البته اگر عملیات
باعث Block شدن Thread شود،
Scheduler
ممکن است Thread دیگری
را اجرا کند
و در آن حالت
Context Switch نیز رخ دهد.

Privilege Levels چگونه امنیت سیستم را افزایش می دهند؟

اگر یک Application
دچار Bug شود،
محدودیت Privilege
می تواند جلوی
بسیاری از آسیب های
مستقیم به Kernel
را بگیرد.

همچنین اگر
یک برنامه مخرب
در User Mode اجرا شود،
برای دستیابی
به کنترل کامل سیستم
باید محدودیت های
بیشتری را دور بزند.

User Isolation
+
Memory Protection
+
Privilege Enforcement
→
Stronger Security Boundary

چرا Bug در Kernel خطرناک تر است؟

کدی که در Kernel Mode
اجرا می شود
Privilege بسیار بیشتری
دارد.

بنابراین خطا
در Kernel
یا Driver سطح Kernel
می تواند تاثیر
بسیار گسترده تری
از Crash
یک Application معمولی
داشته باشد.

Driverها در چه سطحی اجرا می شوند؟

این موضوع
به طراحی سیستم عامل
و نوع Driver
بستگی دارد.

بسیاری از Driverهای
سنتی سیستم عامل
دارای بخش هایی هستند
که با Privilege بالا
اجرا می شوند.

به همین دلیل
آسیب پذیری یک Driver
می تواند
از نظر امنیتی
بسیار مهم باشد.

ARM چگونه سطوح دسترسی را مدیریت می کند؟

معماری های جدید ARM
به جای مدل Ring
از مفهومی به نام:

Exception Levels

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

در AArch64
معمولاً سطوح:

EL0
/
EL1
/
EL2
/
EL3

مطرح هستند.

EL0 تا EL3 چه معنایی دارند؟

سطح کاربرد مفهومی رایج Privilege نسبی
EL0 Application / User Space کمتر
EL1 Operating System Kernel بالاتر
EL2 Hypervisor بالاتر
EL3 Secure Monitor / Firmware در طراحی های مربوط بسیار بالا

EL0 در ARM چیست؟

EL0
معمولاً سطحی است
که Applicationهای
User Space
در آن اجرا می شوند.

EL0
→
User Applications

EL1 در ARM چیست؟

Kernel سیستم عامل
معمولاً در EL1
اجرا می شود.

EL1
→
Operating System Kernel

EL2 چیست؟

EL2
برای قابلیت های
Virtualization
و Hypervisor
در نظر گرفته شده است.

EL2
→
Hypervisor / Virtualization

EL3 چیست؟

EL3
در سیستم هایی
که از این سطح استفاده می کنند،
با Secure Monitor
و مدیریت انتقال
میان Security Stateها
ارتباط دارد.

این بخش
با معماری امنیتی ARM
ارتباط عمیقی دارد.

Hypervisor چگونه مسئله Privilege را پیچیده تر می کند؟

در Virtualization،
ممکن است یک Guest OS
تصور کند
خودش Kernel
با بالاترین سطح کنترل
سیستم است.

اما Hypervisor
باید بتواند
Guestها را
از یکدیگر
و از Host
جدا کند.

Applications
→
Guest Kernel
→
Hypervisor
→
Physical Hardware

CPU چگونه به Hypervisor کمک می کند؟

پردازنده های مدرن
قابلیت های سخت افزاری
مخصوص Virtualization
دارند.

در x86
فناوری هایی مانند:

Intel VT-x
/
AMD-V

برای این هدف
توسعه یافته اند.

این قابلیت ها
اجازه می دهند
Guest OS
با کارایی و Isolation بهتر
اجرا شود.

اصطلاح Ring -1 چیست؟

گاهی در توضیحات
Virtualization
اصطلاح غیررسمی:

Ring -1

برای اشاره
به سطح Hypervisor
استفاده می شود.

اما باید توجه داشت
که Ring -1
بخشی از چهار Ring کلاسیک:

Ring 0
/
Ring 1
/
Ring 2
/
Ring 3

نیست.

این بیشتر
یک اصطلاح توضیحی
برای بیان
جایگاه Virtualization
است.

System Management Mode یا SMM چیست؟

در پردازنده های x86
حالت ویژه ای
به نام:

System Management Mode
=
SMM

وجود دارد.

SMM
برای برخی وظایف
سطح پایین Platform
و Firmware
طراحی شده است.

ورود به این حالت
از طریق:

System Management Interrupt
=
SMI

انجام می شود.

Ring -2 چیست؟

مشابه Ring -1،
گاهی اصطلاح:

Ring -2

به صورت غیررسمی
برای اشاره به SMM
استفاده می شود.

اما این نام
یک Ring رسمی
در مدل کلاسیک x86
نیست.

Firmware چه ارتباطی با Privilege CPU دارد؟

Firmware
در مراحل مختلف
Boot
و مدیریت Platform
می تواند از قابلیت های
سطح پایین CPU
استفاده کند.

برخی محیط های Firmware
به منابعی دسترسی دارند
که Application معمولی
هرگز نباید
مستقیماً کنترل کند.

نکته مهندسی — Engineering Insight: CPU فقط Instruction اجرا نمی کند؛ مرز امنیتی نیز اعمال می کند

معمولاً هنگام توضیح CPU
تمرکز روی:

Fetch
→
Decode
→
Execute

است.

اما پردازنده
در بسیاری از عملیات
باید علاوه بر
«چه Instructionی اجرا شود»
بررسی کند:

Is This Operation Allowed
At The Current Privilege Level?

این بررسی
بخشی بنیادی
از معماری سیستم های
چندکاربره،
چندپردازه
و امن امروزی است.

تاثیر بر عملکرد — Performance Impact: عبور از مرز User و Kernel رایگان نیست

System Call،
Exception
و Interrupt
می توانند باعث اجرای
مسیرهای کنترلی
پیچیده تری
نسبت به اجرای عادی
Instructionها شوند.

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

به همین دلیل
طراحی API،
Batching عملیات،
Buffering
و کاهش System Callهای
غیرضروری
می تواند روی Performance
اثر بگذارد.

آیا Privilege Check همیشه برای جلوگیری از نشت اطلاعات کافی است؟

از دید معماری،
دسترسی غیرمجاز
نباید Commit شود.

اما تحقیقات امنیتی
روی Speculative Execution
نشان داده اند
که رفتار Microarchitectural
می تواند
Side Channelهایی
ایجاد کند.

خانواده حملاتی مانند:

Meltdown
/
Spectre

اهمیت تفاوت
میان Architectural State
و Microarchitectural Effects
را نشان دادند.

Architectural Permission و Microarchitectural Leakage چه تفاوتی دارند؟

Architectural Permission
تعیین می کند
برنامه از نظر ISA
مجاز به مشاهده
چه اطلاعاتی است.

اما اجرای Speculative
می تواند وضعیت هایی
در Cache
یا سایر ساختارهای داخلی
ایجاد کند.

اگر این اثرها
قابل اندازه گیری باشند،
ممکن است
Side Channel
ایجاد شود.

اشتباهات رایج — Common Mistakes: User Mode، Kernel Mode و Privilege
  • فرض اینکه User Mode فقط یک قرارداد نرم افزاری است.
  • فرض اینکه Application معمولی مستقیماً سخت افزار را کاملاً کنترل می کند.
  • یکی دانستن User Mode با User Account.
  • یکی دانستن Kernel Mode با Administrator Account.
  • فرض اینکه Ring 0 یعنی CPU سریع تر Instruction اجرا می کند.
  • فرض اینکه Ring 1 و Ring 2 در x86 وجود ندارند.
  • فرض اینکه هر System Call یک Context Switch کامل است.
  • یکی دانستن Mode Switch و Context Switch.
  • فرض اینکه Interrupt فقط یک اتفاق نرم افزاری است.
  • یکی دانستن Ringهای x86 با Exception Levelهای ARM.
  • فرض اینکه Ring -1 و Ring -2 Ringهای رسمی مدل کلاسیک x86 هستند.
  • فرض اینکه On-CPU Privilege Protection به تنهایی تمام مشکلات امنیتی را حل می کند.

سوالات متداول درباره User Mode و Kernel Mode

User Mode چیست؟

حالت اجرای محدود
برای Applicationهای معمولی است
که CPU در آن
دسترسی به عملیات حساس
را محدود می کند.

Kernel Mode چیست؟

حالت اجرای
دارای Privilege بالا
برای Kernel
و بخش های مورد اعتماد
سیستم است.

Ring 0 چیست؟

بالاترین Privilege Level
در مدل کلاسیک
Protection Ringهای x86 است.

Ring 3 چیست؟

سطحی است
که Applicationهای User Space
معمولاً در آن
اجرا می شوند.

آیا Administrator در ویندوز یعنی برنامه در Ring 0 اجرا می شود؟

خیر.
مفهوم User Account Privilege
با CPU Protection Ring
یکسان نیست.
Application معمولی
حتی با حساب Administrator
معمولاً User Mode است.

System Call چیست؟

مکانیزم کنترل شده ای
است که Application
از طریق آن
سرویس مورد نیاز
را از Kernel
درخواست می کند.

آیا System Call همان Context Switch است؟

خیر.
ممکن است همان Thread
وارد Kernel شود
و بدون تعویض Thread
دوباره به User Mode
بازگردد.

ARM هم Ring 0 و Ring 3 دارد؟

مدل معماری ARM
متفاوت است
و در AArch64
از Exception Levelهایی
مانند EL0 تا EL3
استفاده می شود.

EL2 در ARM برای چیست؟

با قابلیت های
Virtualization
و Hypervisor
ارتباط دارد.

Ring -1 چیست؟

اصطلاحی غیررسمی
برای توضیح جایگاه
Virtualization
و Hypervisor است
و Ring رسمی پنجم
در مدل کلاسیک x86 نیست.

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

  • Privilege Level: سطح مجاز دسترسی کد به قابلیت های پردازنده.
  • User Mode: حالت اجرای محدود Applicationها.
  • Kernel Mode: حالت اجرای دارای Privilege بالا.
  • Privileged Instruction: دستوری که اجرای آن به سطح دسترسی مشخص نیاز دارد.
  • Protection Ring: مدل سطح دسترسی در x86.
  • Ring 0: بالاترین Ring کلاسیک x86.
  • Ring 3: سطح رایج اجرای User Application در x86.
  • CPL: Current Privilege Level.
  • System Call: درخواست کنترل شده Application از Kernel.
  • Mode Switch: تغییر Execution Privilege Mode.
  • Context Switch: تغییر Context اجرایی میان Threadها یا Processها.
  • Exception: رویداد همزمان ناشی از اجرای Instruction یا وضعیت پردازنده.
  • Exception Level: مدل سطح اجرای AArch64.
  • EL0: سطح معمول Application در ARM.
  • EL1: سطح معمول Kernel در ARM.
  • EL2: سطح مرتبط با Hypervisor.
  • EL3: سطح مرتبط با Secure Monitor در طراحی های مربوط.
  • SMM: System Management Mode در x86.
  • SMI: System Management Interrupt.

خلاصه فصل

CPU
همه کدها را
با یک سطح دسترسی
اجرا نمی کند.

Applicationهای معمولی
در محیط محدود:

User Mode

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

در x86
مدل کلاسیک:

Ring 0
→
Ring 1
→
Ring 2
→
Ring 3

وجود دارد،
اما سیستم عامل های مدرن
عمدتاً از Ring 0
برای Kernel
و Ring 3
برای User Space
استفاده می کنند.

در ARM نیز
مفهوم مشابهی
با ساختار متفاوت:

EL0
→
EL1
→
EL2
→
EL3

وجود دارد.

System Call
مسیر کنترل شده
ورود Application
به سرویس های Kernel
است.

این Transition
نباید با Context Switch
اشتباه گرفته شود.


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

مرکز ارتباط
ارتباط با استوک شاپ
پیام به استوک شاپ
دستیار خرید و فروش استوک شاپ
برای شروع گفتگو فقط شماره موبایل خود را تایید کنید.
ورود / ثبت‌نام