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

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

فصل 77
سطح: متوسط تا پیشرفته
موضوع: کنترلر حافظه و ارتباط CPU با RAM
تمرکز: IMC / Channel / Data Rate / Bandwidth / Latency / Dual Channel

CPU فقط به RAM متصل نیست؛ یک کنترلر حافظه باید درخواست ها، Channelها، Timing و انتقال داده را مدیریت کند

کنترلر حافظه CPU چیست؟ RAM، Channel، Frequency، Bandwidth و Latency چگونه به پردازنده مرتبط می شوند؟

وقتی CPU داده ای را در Cache پیدا نمی کند،
در بسیاری از موارد
باید آن را از Main Memory
دریافت کند.

اما CPU مستقیماً
به شکل خام
با تراشه های RAM
صحبت نمی کند.

بین Coreهای پردازنده
و حافظه DRAM
مجموعه ای از
Controllerها،
Channelها،
Signalها
و Timingها
قرار دارند.

CPU Core
↓
Cache
↓
Memory Controller
↓
Memory Channel
↓
DIMM / DRAM

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

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

  • Memory Controller چیست.
  • IMC چیست.
  • CPU چگونه با RAM ارتباط برقرار می کند.
  • Memory Channel چیست.
  • Single Channel و Dual Channel چه تفاوتی دارند.
  • Memory Data Rate چیست.
  • MT/s و MHz چه تفاوتی دارند.
  • Memory Bandwidth چیست.
  • Memory Latency چیست.
  • CAS Latency چه چیزی را نشان می دهد.
  • چرا Frequency بیشتر همیشه Latency کمتر ایجاد نمی کند.
  • چرا Channel بیشتر می تواند Bandwidth را افزایش دهد.
  • Memory Rank چیست و چه ارتباطی با Controller دارد.
  • Memory Training چیست.
  • چرا CPU و Motherboard هر دو در پشتیبانی RAM نقش دارند.
  • چرا لپ تاپ با RAM تک کاناله می تواند Performance پایین تری داشته باشد.
  • چه Workloadهایی به Memory Bandwidth حساس تر هستند.

Memory Controller چیست؟


Memory Controller
بخشی از سیستم است
که دسترسی CPU
به Main Memory
را مدیریت می کند.

وظایف آن
می توانند شامل:

  • دریافت Memory Requestها،
  • زمان بندی Requestها،
  • مدیریت Channelها،
  • اعمال Timingهای لازم،
  • ارسال Command به DRAM،
  • و انتقال Data میان RAM و CPU

باشند.

Memory Request
→
Memory Controller
→
DRAM Commands
→
Data Transfer

IMC چیست؟

IMC
مخفف:

Integrated Memory Controller

است.

در CPUهای مدرن
Memory Controller
معمولاً داخل Processor
یا Package پردازنده
یکپارچه شده است.

این طراحی
مسیر ارتباط
CPU و RAM
را مستقیم تر
از معماری های قدیمی تر
می کند.

CPU
+
Integrated Memory Controller
→
Direct Memory Interface

در سیستم های قدیمی Memory Controller کجا بود؟

در برخی Platformهای قدیمی،
Memory Controller
داخل Chipset
یا Northbridge
قرار داشت.

CPU
→
Front-Side Bus
→
Chipset / Memory Controller
→
RAM

در بسیاری از CPUهای مدرن:

CPU
→
Integrated Memory Controller
→
RAM

این تغییر
یکی از تحولات مهم
در طراحی Platformهای مدرن
بود.

Memory Channel چیست؟


Memory Channel
مسیر مستقل ارتباطی
میان Memory Controller
و مجموعه ای از
Memory Deviceهاست.

اگر Controller
چند Channel داشته باشد،
می تواند Data
را از چند مسیر
منتقل کند.

Memory Controller
↙
Channel A
↘
Channel B

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

Single Channel و Dual Channel چه تفاوتی دارند؟

در Single Channel
فقط یک Channel
فعال است.

CPU
→
Channel A
→
RAM

در Dual Channel
دو Channel مستقل
می توانند
به صورت همزمان
Data منتقل کنند.

CPU
→
Channel A
+
Channel B
→
Higher Aggregate Bandwidth

بنابراین
Dual Channel
معمولاً ظرفیت انتقال
بیشتری نسبت به
Single Channel
فراهم می کند.

Channel با ظرفیت RAM یکی نیست

مقدار RAM
و تعداد Channel
دو مفهوم متفاوت هستند.

برای مثال:

16 GB RAM

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

1 × 16 GB

یا:

2 × 8 GB

پیاده سازی شود.

اگر Platform
Dual Channel باشد،
Configuration دوم
معمولاً امکان استفاده
از دو Channel
را فراهم می کند.

عرض Memory Channel چه تاثیری دارد؟

هر Channel
دارای Data Width
مشخصی است.

Bandwidth نظری
به Data Rate
و Width
بستگی دارد.

Theoretical Bandwidth
≈
Data Rate
×
Bus Width
×
Number Of Channels

این رابطه
یک مدل ساده شده
برای درک Bandwidth است.

Frequency RAM با Data Rate چه تفاوتی دارد؟

در حافظه DDR
Data
در هر Cycle Clock
بیش از یک انتقال
انجام می دهد.

DDR مخفف:

Double Data Rate

است.

بنابراین عددی که
به شکل DDR4-3200
یا DDR5-5600
بیان می شود،
بهتر است به عنوان
Data Rate
در واحد:

MT/s

در نظر گرفته شود.

MT/s و MHz یکی هستند؟

خیر.

MHz
Frequency Clock
را توصیف می کند.

MT/s
تعداد Transfer
در ثانیه را
بیان می کند.

در DDR:

Effective Data Rate
≈
2 × Memory Clock

برای مثال
حافظه DDR با Data Rate
حدود 3200 MT/s
Clock واقعی پایین تری
دارد.

Memory Bandwidth چیست؟


Memory Bandwidth
مقدار Data
قابل انتقال میان
CPU و Memory
در واحد زمان است.

Bandwidth بیشتر
مخصوصاً برای Workloadهایی
که حجم زیادی Data
منتقل می کنند
اهمیت دارد.

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

Higher Data Rate
+
More Channels
→
Higher Potential Memory Bandwidth

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

برای یک Memory Channel
64 بیتی،
می توان به صورت ساده
نوشت:

Bandwidth
=
Data Rate
×
8 Bytes

چون:

64 bits
=
8 Bytes

برای مثال:

DDR4-3200
→
3200 MT/s
×
8 Bytes
≈
25.6 GB/s
Per 64-bit Channel

در Dual Channel
Bandwidth نظری
تقریباً دو برابر
می شود.

Bandwidth واقعی
معمولاً کمتر
از عدد نظری است.

Memory Latency چیست؟

Latency
مدت زمانی است
که CPU
برای دریافت پاسخ
یک Memory Request
منتظر می ماند.

Request
→
Wait
→
Data

Bandwidth و Latency
دو معیار متفاوت هستند.

Bandwidth
=
How Much Data Per Second?

Latency
=
How Long Until Data Arrives?

چرا Bandwidth بالا الزاماً Latency پایین نیست؟

یک Memory System
ممکن است
حجم بسیار زیادی Data
در ثانیه منتقل کند،
اما پاسخ یک Access منفرد
همچنان Latency قابل توجهی
داشته باشد.

مشابه یک بزرگراه:

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

High Throughput
≠
Low Latency

CAS Latency یا CL چیست؟

CL
یکی از Timingهای
مهم DRAM است.

CAS
مخفف:

Column Address Strobe

است.

CAS Latency
تعداد Clock Cycle
مشخصی را
در بخشی از فرایند
دسترسی DRAM
بیان می کند.

اما CL
به تنهایی
Latency کامل RAM
را نشان نمی دهد.

چرا CL بیشتر همیشه بدتر نیست؟

CL
با تعداد Cycle
بیان می شود،
نه مستقیماً
با Nanosecond.

اگر Memory Clock
بیشتر شود،
هر Cycle
زمان کمتری دارد.

بنابراین:

Higher CL
+
Higher Frequency
Can Still Produce
Similar Or Lower Absolute Latency

برای مقایسه صحیح
باید Timing
و Clock
را با هم دید.

Memory Rank چیست؟

Rank
گروهی از Memory Chipهاست
که Memory Controller
آنها را به عنوان
یک مجموعه منطقی
مدیریت می کند.

DIMM
می تواند
Single Rank
یا Multi Rank
باشد.

Rank بیشتر
می تواند در برخی شرایط
به Controller اجازه دهد
بین Rankها
Requestها را
بهتر همپوشانی دهد.

اما Rank
با Channel
یکی نیست.

Channel و Rank چه تفاوتی دارند؟

مفهوم تعریف
Channel مسیر مستقل ارتباط Memory Controller با RAM
Rank گروه منطقی Memory Chipها روی یک یا چند Module
DIMM ماژول فیزیکی Memory

Memory Training چیست؟

هنگام Boot
سیستم باید
پارامترهای مناسب
برای ارتباط پایدار
با RAM
را تنظیم کند.

این فرایند
Memory Training
نامیده می شود.

Training
می تواند شامل
تنظیم Timing،
Signal Alignment
و پارامترهای
الکتریکی باشد.

Boot
→
Detect Memory
→
Train Interface
→
Verify Stable Parameters
→
Start System

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

Memory Controller
داخل CPU
برای Standardها
و Speedهای مشخصی
طراحی می شود.

بنابراین CPU
می تواند روی:

  • DDR Generation،
  • تعداد Channel،
  • Data Rate رسمی،
  • Memory Capacity،
  • ECC Support،
  • و نوع Moduleهای پشتیبانی شده

محدودیت ایجاد کند.

اگر Memory Controller داخل CPU است، Motherboard چه نقشی دارد؟

Motherboard
مسیرهای الکتریکی،
Slotها،
BIOS/UEFI
و Power Delivery
مورد نیاز RAM
را فراهم می کند.

بنابراین:

Memory Compatibility
=
CPU IMC
+
Motherboard Design
+
BIOS / Firmware
+
Memory Module

وجود پشتیبانی
در CPU
به تنهایی
تضمین نمی کند
هر Module
روی هر Board
با هر Speed
کار کند.

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

Memory Moduleها
دارای Profile
و Timingهای
مشخصی هستند.

JEDEC
Standardهای پایه
Memory را تعریف می کند.

Profileهایی مانند:

XMP
/
EXPO

می توانند
تنظیمات Performance
بالاتر از Profileهای پایه
ارائه دهند.

استفاده از آنها
به CPU،
Motherboard،
Firmware
و قابلیت Memory
وابسته است.

Memory Overclocking چه فشاری روی CPU ایجاد می کند؟

افزایش Memory Data Rate
فقط RAM
را درگیر نمی کند.

IMC داخل CPU
نیز باید
با Speed بالاتر
Interface
را پایدار نگه دارد.

بنابراین Maximum Stable Memory Speed
می تواند به:

  • کیفیت IMC همان CPU،
  • تعداد DIMMها،
  • تعداد Rankها،
  • Motherboard Layout،
  • Voltage،
  • و Firmware

وابسته باشد.

چرا استفاده از DIMMهای بیشتر می تواند Speed پایدار را کاهش دهد؟

اضافه شدن Moduleهای بیشتر
Load الکتریکی
Interface حافظه
را افزایش می دهد.

در نتیجه
دستیابی به Data Rate
بسیار بالا
می تواند دشوارتر شود.

More DIMMs / Ranks
→
More Electrical Load
→
Potentially Lower Stable Memory Speed

به همین دلیل
Specification رسمی CPU
ممکن است برای Configurationهای
مختلف Memory
Speedهای متفاوتی
تعریف کند.

RAM لحیم شده در لپ تاپ چگونه روی Channel اثر می گذارد؟

در Laptopهای جدید
Memory ممکن است:

  • کاملاً Soldered،
  • کاملاً Module-Based،
  • یا ترکیبی از Soldered و SO-DIMM

باشد.

تعداد Slot
به تنهایی
تعیین نمی کند
سیستم Single Channel
یا Dual Channel است.

باید Topology واقعی
Memory Platform
بررسی شود.

چرا Dual Channel برای Integrated GPU اهمیت زیادی دارد؟

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

بنابراین CPU Coreها
و iGPU
ممکن است
Memory Bandwidth
را به اشتراک بگذارند.

CPU
+
Integrated GPU
→
Shared System Memory

در چنین شرایطی
افزایش Memory Bandwidth
از طریق Configuration مناسب
می تواند Performance
iGPU را به شکل قابل توجهی
تحت تاثیر قرار دهد.

چه Workloadهایی به Memory Bandwidth یا Latency حساس هستند؟

همه برنامه ها
به یک اندازه
به RAM حساس نیستند.

Workloadهای احتمالی حساس:

  • Integrated Graphics،
  • Scientific Computing،
  • Data Processing،
  • Compression در بعضی الگوریتم ها،
  • Simulation،
  • Virtualization،
  • بعضی Gameها،
  • و Workloadهای دارای Working Set بزرگ.

در مقابل
بعضی Workloadها
ممکن است بیشتر
Compute-Bound باشند
و افزایش Bandwidth
اثر کمی داشته باشد.

Capacity مهم تر است یا Speed؟

اگر RAM کافی نباشد،
سیستم ممکن است
به Paging
یا Swap
متکی شود.

این وضعیت
معمولاً هزینه Performance
بسیار بیشتری
از اختلاف کوچک
Memory Speed دارد.

Insufficient Capacity
→
Storage Paging
→
Very High Latency

بنابراین در عمل:

ابتدا Capacity کافی،
سپس Configuration مناسب
و بعد Speed/Timing
اهمیت پیدا می کنند.

Cache چگونه فشار روی Memory Controller را کاهش می دهد؟

اگر Data
در Cache
پیدا شود،
Request
به Main Memory
ارسال نمی شود.

Cache Hit
→
No DRAM Access Required

Cache Hit Rate بالاتر
می تواند:

  • Memory Traffic را کاهش دهد،
  • Latency متوسط را کاهش دهد،
  • و فشار روی Memory Controller را کمتر کند.

چرا Coreهای بیشتر به Memory System قوی تر نیاز دارند؟

با افزایش Coreها،
تعداد Threadهایی
که همزمان
Data درخواست می کنند
می تواند افزایش یابد.

More Active Cores
→
More Potential Memory Requests
→
Higher Memory Traffic

اگر Bandwidth
به محدودیت برسد،
اضافه کردن Core
ممکن است Scaling
کمتری ایجاد کند.

Memory-Bound یعنی چه؟

Workload زمانی
Memory-Bound
است که Performance آن
بیشتر توسط
Memory System
محدود شود
تا Execution Capacity CPU.

برای مثال
CPU ممکن است
Execution Unit آزاد
داشته باشد،
اما Data هنوز
از Memory
نرسیده باشد.

Execution Resources Ready
+
Data Not Ready
→
Memory Stall

عوامل اصلی Performance حافظه در یک نگاه

عامل اثر اصلی
Capacity مقدار Data قابل نگهداری بدون Paging
Data Rate ظرفیت Transfer در واحد زمان
Channel Count افزایش مسیرهای مستقل انتقال Data
Timing بخشی از هزینه زمانی عملیات DRAM
Rank ساختار منطقی Memory و امکان Interleaving بیشتر در برخی شرایط
IMC مدیریت ارتباط CPU با DRAM
Cache Hit Rate کاهش نیاز به مراجعه به Main Memory

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

  1. ظرفیت کل RAM را ثبت کنید.
  2. نوع Memory مانند DDR4 یا DDR5 را مشخص کنید.
  3. Data Rate واقعی را بررسی کنید.
  4. تعداد Moduleها را بررسی کنید.
  5. Channel Configuration را بررسی کنید.
  6. وجود RAM Soldered را مشخص کنید.
  7. تعداد Slot آزاد را بررسی کنید.
  8. حداکثر Capacity قابل پشتیبانی را بررسی کنید.
  9. در سیستم دارای iGPU، Dual Channel بودن را جدی تر بررسی کنید.
  10. در Workstation، ECC Support را در صورت نیاز بررسی کنید.

زیرساخت فنی — وقتی CPU به RAM نیاز دارد چه مسیری طی می شود؟

فرض کنید
یک Load Instruction
به Data نیاز دارد.

ابتدا Cache Hierarchy
بررسی می شود.

Load
↓
L1 Cache
↓
L2 Cache
↓
LLC

اگر Data
در Cache پیدا نشود:

Cache Miss
↓
Memory Request
↓
Integrated Memory Controller

Controller
Request را
به Channel مناسب
هدایت می کند.

IMC
↓
Channel
↓
DIMM
↓
Rank
↓
Bank
↓
Row / Column

سپس DRAM
عملیات داخلی لازم
را انجام می دهد.

Data
از Memory Bus
به Controller
باز می گردد.

DRAM
↓
Memory Channel
↓
IMC
↓
Cache
↓
CPU Core

تمام این مسیر
بسیار کندتر
از دسترسی به Register
یا L1 Cache
است.

همین اختلاف
دلیل اهمیت
Cache،
Prefetching،
Out-of-Order Execution
و Memory-Level Parallelism
در CPU مدرن است.

نکته مهندسی — RAM سریع فقط با عدد MT/s تعریف نمی شود

دو Memory Kit
ممکن است Data Rate
متفاوتی داشته باشند،
اما Performance واقعی
به عوامل بیشتری
بستگی دارد.

Memory Performance
=
Data Rate
+
Timing
+
Channel
+
Rank
+
Controller
+
Workload

همچنین افزایش
Bandwidth نظری
فقط زمانی مفید است
که Workload
واقعاً به Bandwidth
بیشتری نیاز داشته باشد.

تاثیر بر عملکرد — Single Channel می تواند CPU و iGPU را بدون تغییر مدل پردازنده محدود کند

فرض کنید
دو Laptop
CPU یکسانی دارند.

سیستم اول:

1 × 16 GB
→
Single Channel

سیستم دوم:

2 × 8 GB
→
Dual Channel

اگر Workload
به Memory Bandwidth
حساس باشد،
سیستم دوم
می تواند Performance
بالاتری داشته باشد.

این تفاوت
مخصوصاً در Integrated Graphics
و بعضی Workloadهای
Memory-Intensive
می تواند محسوس باشد.

Same CPU
+
Different Memory Configuration
=
Different Real Performance

اشتباهات رایج — Common Mistakes درباره CPU و RAM
  • یکی دانستن MHz و MT/s.
  • فرض اینکه Data Rate بیشتر همیشه RAM سریع تر می سازد.
  • مقایسه CL بدون در نظر گرفتن Frequency.
  • یکی دانستن Bandwidth و Latency.
  • یکی دانستن Channel و DIMM.
  • یکی دانستن Channel و Rank.
  • فرض اینکه دو Module همیشه Dual Channel ایجاد می کنند.
  • فرض اینکه یک Module همیشه Single Channel است بدون بررسی Platform.
  • نادیده گرفتن RAM Soldered در Laptop.
  • نادیده گرفتن Memory Controller داخل CPU.
  • نادیده گرفتن محدودیت Motherboard و Firmware.
  • فرض اینکه هر Speed تبلیغ شده روی هر CPU پایدار است.
  • نادیده گرفتن تعداد DIMM هنگام Memory Overclocking.
  • خرید RAM بسیار سریع با Capacity ناکافی.
  • نادیده گرفتن Dual Channel در سیستم دارای iGPU.
  • فرض اینکه RAM سریع تر در تمام Workloadها Performance مشابهی اضافه می کند.

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

Memory Controller چیست؟

بخشی است که
ارتباط CPU
با Main Memory
را مدیریت می کند.

IMC چیست؟

Integrated Memory Controller
یعنی Memory Controller
داخل Processor
یا Package آن
یکپارچه شده است.

Dual Channel چه فایده ای دارد؟

امکان استفاده
از دو مسیر مستقل Memory
را فراهم می کند
و می تواند
Bandwidth کلی
را افزایش دهد.

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

خیر.
MHz Clock Frequency
و MT/s تعداد Transfer
در ثانیه را بیان می کند.

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

نه به تنهایی.
CAS Latency
باید همراه
با Memory Frequency
و Timingهای دیگر
بررسی شود.

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

خیر.
اثر آن به Workload
و میزان حساسیت برنامه
به Bandwidth و Latency
بستگی دارد.

برای iGPU Dual Channel مهم است؟

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

آیا ظرفیت RAM از Speed مهم تر است؟

اگر ظرفیت کافی نباشد،
کمبود RAM
می تواند بسیار شدیدتر
از اختلاف Speed
روی Performance اثر بگذارد.

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

  • Memory Controller: واحد مدیریت ارتباط CPU و DRAM.
  • IMC: Integrated Memory Controller.
  • Memory Channel: مسیر مستقل ارتباط Controller با RAM.
  • Single Channel: استفاده از یک Memory Channel فعال.
  • Dual Channel: استفاده از دو Memory Channel فعال.
  • MT/s: Mega Transfers per Second؛ واحد نرخ Transfer حافظه.
  • Memory Bandwidth: حجم Data قابل انتقال در واحد زمان.
  • Memory Latency: زمان لازم برای پاسخ Memory.
  • CAS Latency: یکی از Timingهای مهم DRAM.
  • Rank: مجموعه منطقی Memory Chipهایی که با هم روی Bus کار می کنند.
  • Memory Training: تنظیم و کالیبراسیون Interface حافظه هنگام Boot.
  • JEDEC: سازمان استانداردگذاری فناوری های Semiconductor و Memory.
  • XMP: Profileهای Memory Performance مورد استفاده در Platformهای مرتبط.
  • EXPO: Profile حافظه AMD برای تنظیمات Performance در Platformهای پشتیبانی شده.
  • Memory-Bound: Workloadی که Performance آن توسط Memory System محدود می شود.

خلاصه فصل

CPU برای دسترسی
به Main Memory
به Memory Controller
متکی است.

در CPUهای مدرن
این Controller
معمولاً داخل Processor
یکپارچه شده است.

Performance Memory
فقط از ظرفیت RAM
یا عدد Data Rate
تشکیل نمی شود.

Memory Performance
=
Capacity
+
Data Rate
+
Channels
+
Timing
+
Rank
+
IMC
+
Workload

Channel بیشتر
می تواند Bandwidth
را افزایش دهد،
اما Latency
مفهوم متفاوتی است.

همچنین Memory Configuration
می تواند Performance
واقعی CPU
و به خصوص
Integrated GPU
را تغییر دهد.


بنابراین هنگام مقایسه دو سیستم،
فقط مدل CPU و مقدار RAM را نبینید؛
نوع حافظه، تعداد Channel،
Data Rate، Timing و محدودیت Memory Controller
نیز بخشی از Performance واقعی سیستم هستند.

فصل 78
سطح: پیشرفته
موضوع: معماری داخلی DRAM
تمرکز: Cell / Row / Column / Bank / Burst / Prefetch / DDR4 / DDR5

RAM یک فضای ذخیره سازی تخت نیست؛ پشت هر درخواست CPU مجموعه ای از عملیات داخلی انجام می شود

معماری داخلی DRAM؛ از Cell و Row تا DDR4 و DDR5

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

حافظه DRAM
دارای ساختاری چندلایه شامل
Cell،
Row،
Column،
Bank
و بخش های داخلی دیگری است
که باید با ترتیب مشخصی کار کنند.

Memory Request
→
Bank
→
Row Activation
→
Row Buffer
→
Column Access
→
Data Transfer

شناخت این مسیر
به ما کمک می کند بفهمیم
Latency حافظه از کجا می آید
و چرا افزایش Data Rate
تنها عامل تعیین کننده Performance نیست.

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

  • DRAM چیست.
  • Memory Cell چیست.
  • چرا DRAM به Refresh نیاز دارد.
  • Row و Column چیستند.
  • Memory Bank چیست.
  • Bank Group چیست.
  • Row Buffer چیست.
  • Row Hit، Row Miss و Row Conflict چیست.
  • ACTIVATE و PRECHARGE چه می کنند.
  • Burst چیست.
  • Burst Length چیست.
  • Prefetch در DRAM چیست.
  • چرا انتقال حافظه به صورت بلوکی انجام می شود.
  • DDR4 و DDR5 از نظر معماری چه تفاوت هایی دارند.
  • Sub-Channel در DDR5 چیست.
  • On-Die ECC چیست.
  • چرا On-Die ECC با ECC Memory معمولی یکسان نیست.
  • Refresh چگونه روی Performance اثر می گذارد.
  • چرا Data Locality برای RAM اهمیت دارد.

DRAM چیست؟


حافظه دسترسی تصادفی پویا — Dynamic Random Access Memory

DRAM
مخفف:

Dynamic Random Access Memory

است.

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

DDR4 و DDR5
هر دو بر پایه
فناوری DRAM ساخته شده اند.

DRAM Cell چیست؟


سلول حافظه — DRAM Cell
اطلاعات در DRAM
در تعداد بسیار زیادی
سلول حافظه ذخیره می شوند.

در مدل کلاسیک،
هر DRAM Cell
از اجزایی مانند:

1 Transistor
+
1 Capacitor

تشکیل می شود.

وضعیت بار الکتریکی Capacitor
برای نمایش اطلاعات
مورد استفاده قرار می گیرد.

چرا DRAM حافظه Volatile است؟

DRAM
برای حفظ اطلاعات
به انرژی الکتریکی نیاز دارد.

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

به چنین حافظه ای:

Volatile Memory

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

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

بار الکتریکی ذخیره شده
در Cellهای DRAM
برای همیشه باقی نمی ماند.

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

Stored Charge
→
Leakage
→
Charge Decay

بنابراین داده ها
باید به صورت دوره ای
بازخوانی و بازیابی شوند.

این عملیات:

Refresh

نام دارد.

پشت صحنه فنی — Under the Hood: چرا در نام DRAM کلمه Dynamic وجود دارد؟

اطلاعات DRAM
بدون عملیات نگهداری دوره ای
پایدار باقی نمی مانند.

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

Store Data
→
Charge Slowly Leaks
→
Refresh
→
Data Preserved

همین نیاز به بازسازی دوره ای
یکی از دلایل استفاده
از واژه Dynamic
در نام DRAM است.

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

Cellهای حافظه
به صورت آرایه هایی
سازمان دهی می شوند.

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

DRAM Array
=
Rows
×
Columns

اما ساختار واقعی
چندلایه تر از یک جدول ساده است.

Row چیست؟


ردیف حافظه — Row

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

Column چیست؟


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

Select Row
→
Activate Row
→
Select Column
→
Transfer Data

Memory Bank چیست؟


بانک حافظه — DRAM Bank
حافظه DRAM
به چند بخش مستقل تر
به نام:

Bank

تقسیم می شود.

هر Bank
دارای مجموعه ای
از Rowها و Columnهاست.

وجود چند Bank
به Memory Controller
اجازه می دهد
عملیات حافظه را
بهتر زمان بندی کند.

Bank-Level Parallelism چیست؟

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

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

Bank 0
→
Operation A

Bank 1
→
Operation B

Bank-Level Parallelism
→
Better Memory Throughput

Bank Group چیست؟


گروه بانک — Bank Group
در نسل های جدید DDR،
Bankها می توانند
در گروه هایی
به نام:

Bank Groups

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

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

Timing برخی عملیات
می تواند بسته به اینکه
دسترسی ها در یک Bank Group
یا گروه های متفاوت باشند
متفاوت باشد.

Row Buffer چیست؟


بافر ردیف — Row Buffer
وقتی یک Row
از DRAM فعال می شود،
محتوای آن
توسط مدارهای Sense Amplifier
خوانده می شود.

این مجموعه
عملاً نقش
Row Buffer
را نیز ایفا می کند.

DRAM Row
→
ACTIVATE
→
Sense Amplifiers / Row Buffer

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

پشت صحنه فنی — Under the Hood: خواندن DRAM فقط «نگاه کردن» به Cell نیست

بار ذخیره شده
در DRAM Cell
بسیار کوچک است.

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

عملیات Read در DRAM
ذاتاً با فرآیند بازسازی
داده همراه است.

Cell Charge
→
Sense
→
Amplify
→
Restore

بنابراین معماری DRAM
بسیار متفاوت
از تصور ساده
«خواندن یک بیت از یک خانه»
است.

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

برای دسترسی به Row
ابتدا فرمان:

ACTIVATE

صادر می شود.

این فرمان
Row مورد نظر را
در Bank مربوطه
فعال می کند.

سپس باید
زمان مشخصی
پیش از دسترسی Column
سپری شود.

بخشی از این فاصله زمانی
با پارامتری مانند:

tRCD

مرتبط است.

PRECHARGE چیست؟

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

این فرآیند
با:

PRECHARGE

مرتبط است.

زمان مورد نیاز آن
با Timingهایی مانند:

tRP

ارتباط دارد.

Row Hit چیست؟

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

این وضعیت:

Row Hit

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

Requested Data
∈
Already Open Row
→
Row Hit

Row Hit
معمولاً نسبت به دسترسی
به Row جدید
سریع تر است.

Row Miss و Row Conflict چیست؟

اگر Row مورد نیاز
در Bank باز نباشد،
دسترسی پیچیده تر می شود.

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

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

این وضعیت
می تواند Latency بیشتری
نسبت به Row Hit داشته باشد.

نکته مهندسی — Engineering Insight: محل قرار گرفتن داده ها روی Performance حافظه اثر دارد

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

اما الگوهای تصادفی
ممکن است باعث:

More Row Changes
→
More ACTIVATE / PRECHARGE
→
Higher Effective Latency

شوند.

بنابراین Memory Access Pattern
خود نرم افزار
می تواند روی Performance
تاثیر بزرگی داشته باشد.

Burst در حافظه چیست؟


انتقال پشت سرهم داده — Burst Transfer
DRAM
معمولاً داده را
به صورت یک بیت منفرد
برای هر درخواست
منتقل نمی کند.

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

این رفتار:

Burst Transfer

نام دارد.

Burst Length چیست؟

Burst Length
یا
BL
تعداد واحدهای انتقال داده
در یک Burst
را توصیف می کند.

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

One Memory Command
→
Multiple Sequential Data Transfers

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

Prefetch در DRAM چیست؟

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

این مفهوم
با CPU Hardware Prefetcher
که در فصل های قبلی بررسی کردیم
یکسان نیست.

اشتباه رایج — Common Mistake: DRAM Prefetch همان CPU Prefetch است

خیر.

CPU Prefetcher
تلاش می کند
داده مورد نیاز آینده
را زودتر به Cache بیاورد.

اما DRAM Prefetch
بخشی از معماری داخلی
انتقال داده حافظه است.

CPU Prefetch
≠
DRAM Prefetch Architecture

Prefetch در DDR4 چگونه است؟

DDR4
از معماری:

8n Prefetch

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

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

DDR5 از چه Prefetch استفاده می کند؟

DDR5 نیز
از ساختار:

8n Prefetch

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

بنابراین افزایش Data Rate
در DDR5
صرفاً نتیجه دو برابر کردن
Prefetch نسبت به DDR4 نیست.

تغییرات معماری دیگری
نیز در DDR5
نقش دارند.

معماری DDR4 چه ویژگی هایی دارد؟

DDR4
نسبت به نسل های قبل
تغییراتی در:

  • Data Rate،
  • Bank Architecture،
  • Bank Groups،
  • Voltage،
  • Signal Integrity،
  • و ظرفیت حافظه

ایجاد کرد.

DDR4
برای سال ها
حافظه اصلی بسیاری از:

  • Desktopها،
  • Laptopها،
  • Workstationها،
  • Serverها،
  • All-in-Oneها،
  • و Mini PCها

بوده است.

DDR5 چه تغییر مهمی ایجاد کرد؟

DDR5
فقط نسخه ای از DDR4
با Clock بالاتر نیست.

تغییرات مهمی
در ساختار داخلی
و رابط ماژول حافظه
ایجاد شده است.

از جمله:

  • Data Rate بالاتر،
  • Bankهای بیشتر،
  • Bank Groupهای بیشتر،
  • Burst Length بزرگ تر،
  • تقسیم کانال ماژول به Sub-Channel،
  • On-Die ECC،
  • و تغییرات در Power Management.

Sub-Channel در DDR5 چیست؟


زیرکانال مستقل — DDR5 Sub-Channel
یکی از تغییرات مهم DDR5
تقسیم ساختار 64 بیتی
ماژول معمولی
به دو Sub-Channel
مستقل تر است.

به صورت ساده:

DDR4 DIMM
→
One 64-bit Data Channel

DDR5 DIMM
→
Two 32-bit Sub-Channels

در ماژول های دارای ECC،
بیت های اضافی مربوط به ECC
نیز باید در نظر گرفته شوند.

نکته مهندسی — Engineering Insight: چرا DDR5 یک DIMM را به دو Sub-Channel تقسیم کرد؟

تقسیم رابط حافظه
به دو Sub-Channel
اجازه می دهد
Memory Controller
درخواست های کوچک تر
را مستقل تر مدیریت کند.

در نتیجه
بهره برداری از پهنای باند
می تواند بهبود پیدا کند.

More Independent Access Opportunities
→
Better Bus Utilization

اشتباه رایج — Common Mistake: یک DDR5 DIMM یعنی همان Dual Channel سنتی

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

DDR5 DIMM
دارای دو Sub-Channel است،
اما این موضوع
با مفهوم سنتی
تعداد کانال های حافظه
در سطح Memory Controller
دقیقاً یکسان نیست.

بنابراین هنگام مقایسه
Single DIMM
و چند DIMM
باید معماری کامل پلتفرم
بررسی شود.

Burst Length در DDR4 و DDR5 چه تفاوتی دارد؟

نسل حافظه Burst Length اصلی ساختار کلی کانال ماژول معمولی
DDR4 BL8 یک مسیر داده 64 بیتی
DDR5 BL16 دو Sub-Channel مستقل 32 بیتی

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

CPUها معمولاً داده را
در واحدهایی به نام Cache Line
میان سطوح حافظه جابه جا می کنند.

در بسیاری از معماری های رایج:

Cache Line
=
64 Bytes

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

پشت صحنه فنی — Under the Hood: چرا ترکیب 32-bit Sub-Channel و BL16 در DDR5 مهم است؟

یک Sub-Channel
معمولی DDR5
عرض داده 32 بیت دارد.

32 بیت برابر است با:

32 bit
=
4 Byte

اگر Burst Length
برابر 16 باشد:

4 Byte
×
16 Transfers
=
64 Bytes

یعنی یک Burst کامل
روی یک Sub-Channel
می تواند با اندازه رایج
Cache Line
هماهنگ شود.

این نمونه خوبی است
از اینکه چرا فقط نگاه کردن
به عدد MT/s
برای فهم معماری حافظه کافی نیست.

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


تصحیح خطا داخل تراشه DRAM — On-Die ECC
تراشه های DDR5
از مکانیزمی به نام:

On-Die ECC

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

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

اشتباه رایج — Common Mistake: چون DDR5 دارای On-Die ECC است، پس همه DDR5ها ECC RAM هستند

خیر.

On-Die ECC
درون خود DRAM Chip
عمل می کند.

اما ECC Memory
در سطح سیستم
برای محافظت از داده
در مسیر گسترده تری
میان Memory Controller
و حافظه طراحی شده است.

On-Die ECC
≠
System-Level ECC Memory

بنابراین وجود On-Die ECC
به معنی جایگزین شدن
ECC DIMM
در Workstation یا Server نیست.

PMIC در DDR5 چیست؟


مدار مدیریت توان — Power Management Integrated Circuit
در بسیاری از ماژول های DDR5،
بخشی از مدیریت توان
به خود DIMM منتقل شده است.

قطعه ای به نام:

PMIC
=
Power Management Integrated Circuit

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

ولتاژ پایه DDR4 و DDR5 چه تفاوتی دارد؟

به طور معمول،
ولتاژ اسمی پایه DDR4
حدود:

DDR4
→
1.2 V

و برای DDR5
حدود:

DDR5
→
1.1 V

است.

البته پروفایل های Performance
و Memory Overclocking
می توانند از ولتاژهای دیگری
استفاده کنند.

چرا DDR5 با وجود MT/s بیشتر الزاماً Latency بسیار کمتری ندارد؟

افزایش Data Rate
عمدتاً ظرفیت انتقال داده
را افزایش می دهد.

اما Latency واقعی
حاصل مجموعه ای از عوامل است:

Memory Controller
+
Timings
+
DRAM Core Operations
+
Row State
+
Data Rate
+
Platform Architecture

بنابراین:

Higher MT/s
≠
Automatically Lower Total Latency

تاثیر بر عملکرد — Performance Impact: مزیت اصلی DDR5 فقط Latency نیست

یکی از مزیت های مهم DDR5
ظرفیت دستیابی
به Memory Bandwidth بالاتر است.

این موضوع
در Workloadهایی که:

  • داده زیادی جابه جا می کنند،
  • هسته های CPU زیادی را همزمان درگیر می کنند،
  • از Integrated GPU استفاده می کنند،
  • یا Memory-Bound هستند

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

Refresh چگونه روی Performance اثر می گذارد؟

هنگام انجام برخی عملیات Refresh،
بخشی از منابع DRAM
برای مدت کوتاهی
درگیر نگهداری داده می شوند.

در این مدت
دسترسی عادی
می تواند محدود شود.

Refresh Activity
→
Temporary Resource Occupation
→
Potential Access Delay

کنترلرهای مدرن
تلاش می کنند
این عملیات را
تا حد ممکن کارآمد مدیریت کنند.

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

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

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

این یکی از نمونه هایی است
که نشان می دهد
Temperature فقط مسئله CPU و GPU نیست؛
حافظه نیز یک قطعه الکترونیکی
وابسته به شرایط حرارتی است.

Rowhammer چیست؟


اثر اختلال میان ردیف های DRAM — Rowhammer
در برخی نسل ها
و شرایط DRAM،
فعال سازی بسیار مکرر
یک یا چند Row
می تواند روی Cellهای مجاور
اثر الکتریکی بگذارد.

این پدیده:

Rowhammer

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

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

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

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

Memory Controller
الزاماً آنها را
دقیقاً به ترتیب ورود
اجرا نمی کند.

کنترلر ممکن است
ترتیب برخی درخواست ها
را برای استفاده بهتر
از:

  • Open Rows،
  • Bank Parallelism،
  • Bus Availability،
  • Timing Constraints،
  • و Read / Write Efficiency

تغییر دهد.

پشت صحنه فنی — Under the Hood: RAM فقط منتظر دستور بعدی CPU نمی ماند

فرض کنید چند درخواست
برای Bankهای مختلف
در صف وجود دارند.

بعضی از آنها
به Row باز فعلی
دسترسی دارند
و بعضی نیازمند
تغییر Row هستند.

Memory Controller
می تواند با زمان بندی مناسب،
از فرصت Row Hit
و Bank-Level Parallelism
استفاده کند.

Request Queue
→
Scheduling
→
Bank / Row Selection
→
DRAM Commands

بنابراین کیفیت Memory Controller
نیز بخشی از Performance
زیرسیستم RAM است.

Read و Write در DRAM چه تفاوتی دارند؟

در Read،
داده از DRAM
به سمت Memory Controller
منتقل می شود.

DRAM
→
Memory Controller
→
CPU

در Write،
جهت انتقال برعکس است.

CPU
→
Memory Controller
→
DRAM

تغییر جهت Bus
و محدودیت های Timing
می توانند هزینه داشته باشند.

چرا Memory Controller ممکن است Writeها را گروه بندی کند؟

تغییر مداوم
میان Read و Write
می تواند باعث سربار
روی Bus شود.

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

Read Phase
→
Bus Turnaround
→
Write Phase

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

Latency واقعی RAM فقط CL نیست

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

CPU Request
→
Cache Miss
→
Memory Controller Queue
→
DRAM Scheduling
→
Row Access
→
Column Access
→
Data Transfer
→
CPU

بنابراین عدد CL
فقط بخشی
از کل Memory Access Latency است.

بخش اثر احتمالی بر تاخیر
Cache Miss CPU مجبور به مراجعه به حافظه اصلی می شود
Memory Controller Queue درخواست ممکن است منتظر نوبت بماند
Row State Row Hit یا Row Conflict روی زمان دسترسی اثر دارد
tRCD زمان میان فعال سازی Row و دسترسی Column
CL بخشی از تاخیر Column Read
tRP در تغییر Row می تواند به مسیر اضافه شود
Bus Transfer زمان انتقال داده روی رابط حافظه
نکته مهندسی — Engineering Insight: حالا دلیل وجود Cacheهای بزرگ CPU روشن تر می شود

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

در مقابل،
Cache داخلی CPU
بسیار نزدیک تر
و کم تاخیرتر است.

بنابراین معماری CPU
تلاش می کند
تا حد امکان
از مراجعه مستقیم
به DRAM جلوگیری کند.

Better Cache Hit Rate
→
Fewer DRAM Accesses
→
Lower Effective Memory Delay
→
Better CPU Utilization

دسترسی Sequential و Random چه تفاوتی برای RAM دارند؟

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

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

دسترسی Sequential
معمولاً فرصت بیشتری
برای:

  • Prefetch،
  • Row Locality،
  • Burst Transfer،
  • و استفاده موثر از Bandwidth

فراهم می کند.

تاثیر بر عملکرد — Performance Impact: پهنای باند بالا همیشه مشکل دسترسی Random را حل نمی کند

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

اما اگر Workload
تعداد زیادی دسترسی Random
وابسته به یکدیگر داشته باشد،
Latency هر دسترسی
اهمیت بیشتری پیدا می کند.

Sequential Workload
→
Bandwidth Often Matters More

Random Dependent Access
→
Latency Often Matters More

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

مقایسه مفهومی DDR4 و DDR5

ویژگی DDR4 DDR5
Data Rate بالقوه پایین تر بالاتر
Prefetch 8n 8n
Burst Length اصلی BL8 BL16
ساختار ماژول معمولی یک کانال داده 64 بیتی دو Sub-Channel مستقل 32 بیتی
Bank Architecture Bank و Bank Group Bank و Bank Group بیشتر
On-Die ECC ویژگی عمومی نسل نیست در تراشه های DDR5 وجود دارد
ولتاژ پایه رایج 1.2V 1.1V
مدیریت توان DIMM بخش عمده خارج از DIMM PMIC روی ماژول در طراحی استاندارد

آیا DDR4 و DDR5 قابل جایگزینی با یکدیگر هستند؟

خیر.

نسل های DDR
فقط از نظر سرعت
متفاوت نیستند.

تفاوت هایی در:

  • ساختار الکتریکی،
  • Pinout،
  • Voltage،
  • Memory Controller Support،
  • و طراحی Slot

وجود دارد.

بنابراین نوع RAM
باید با CPU
و مادربرد
سازگار باشد.

LPDDR چه ارتباطی با این معماری دارد؟

در لپ تاپ های باریک
و دستگاه های کم مصرف،
ممکن است به جای DIMMهای معمولی
از خانواده:

LPDDR
=
Low Power Double Data Rate

استفاده شود.

LPDDR
برای اهدافی مانند:

  • کاهش مصرف انرژی،
  • پهنای باند مناسب،
  • و طراحی فشرده

توسعه یافته است.

اما ساختار Channel،
Package
و قابلیت ارتقا
می تواند با DDR DIMMهای معمولی
متفاوت باشد.

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

خیر.

مخصوصاً در سیستم های
دارای LPDDR،
حافظه معمولاً
به صورت لحیم شده
یا Package-Level
طراحی می شود.

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

کدام ویژگی RAM برای کدام Workload مهم تر است؟

نوع Workload عامل حافظه مهم تر
کاربری عمومی ابتدا ظرفیت کافی، سپس تعادل کلی حافظه
Integrated Graphics Memory Bandwidth و Channel Configuration
برخی بازی ها Latency، Bandwidth و Cache Interaction
Scientific Computing بسته به الگوریتم، Bandwidth یا Latency
Database Capacity، Latency و Access Pattern
Virtualization Capacity، Bandwidth و Reliability
Server Capacity، Channels، Bandwidth، ECC و Reliability
Workstation وابسته به نرم افزار؛ Capacity و Reliability اغلب بسیار مهم هستند
اشتباهات رایج — Common Mistakes: معماری DRAM
  • تصور RAM به عنوان مجموعه ای از خانه های مستقل با دسترسی آنی.
  • نادیده گرفتن Row و Column.
  • نادیده گرفتن Bank-Level Parallelism.
  • فرض اینکه تمام دسترسی های DRAM Latency یکسان دارند.
  • نادیده گرفتن تفاوت Row Hit و Row Conflict.
  • یکی دانستن DRAM Prefetch با CPU Prefetch.
  • فرض اینکه DDR5 دارای Prefetch دو برابر DDR4 است.
  • فرض اینکه MT/s بیشتر همیشه Latency کمتر ایجاد می کند.
  • یکی دانستن DDR5 Sub-Channel با Dual Channel سنتی.
  • یکی دانستن On-Die ECC با ECC Memory سیستم.
  • نادیده گرفتن Refresh.
  • نادیده گرفتن Memory Access Pattern نرم افزار.
  • فرض اینکه Bandwidth نظری به طور کامل در برنامه قابل استفاده است.
  • نادیده گرفتن نقش Memory Controller در Scheduling.
  • نادیده گرفتن تفاوت Random Access و Sequential Access.
  • فرض اینکه DDR4 و DDR5 صرفاً با سرعت متفاوت قابل جایگزینی هستند.

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

DRAM چیست؟

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

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

زیرا بار الکتریکی
Cellهای DRAM
به مرور نشت می کند
و برای حفظ داده
باید دوره ای بازیابی شود.

Memory Bank چیست؟

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

Row Buffer چیست؟

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

Row Hit چیست؟

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

چرا Row Conflict کندتر است؟

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

DDR5 از Prefetch 16n استفاده می کند؟

خیر.
DDR5 همچنان
از معماری 8n Prefetch استفاده می کند،
در حالی که Burst Length اصلی آن
نسبت به DDR4 افزایش یافته است.

یک DDR5 DIMM یعنی Dual Channel؟

یک DIMM معمولی DDR5
دارای دو Sub-Channel مستقل 32 بیتی است،
اما این مفهوم
نباید با Dual Channel سنتی
Memory Controller یکی گرفته شود.

آیا همه DDR5ها ECC هستند؟

خیر.
On-Die ECC داخل تراشه DDR5
با System-Level ECC Memory
یکسان نیست.

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

پاسخ به پلتفرم،
Data Rate،
Timing،
Memory Controller
و Workload بستگی دارد.
DDR5 ظرفیت Bandwidth بسیار بالاتری دارد،
اما Performance نهایی
فقط با نام نسل حافظه تعیین نمی شود.

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

  • DRAM: حافظه دسترسی تصادفی پویا.
  • DRAM Cell: واحد پایه ذخیره اطلاعات در DRAM.
  • Volatile Memory: حافظه ای که برای حفظ داده به برق نیاز دارد.
  • Refresh: فرآیند دوره ای بازیابی داده DRAM.
  • Row: ردیفی از Cellهای حافظه.
  • Column: بخش انتخابی داده در Row فعال.
  • Bank: بخش نسبتاً مستقل در ساختار DRAM.
  • Bank Group: گروهی از Bankهای حافظه.
  • Bank-Level Parallelism: استفاده همزمان تر از Bankهای مختلف.
  • Sense Amplifier: مدار تشخیص و تقویت وضعیت Cellهای DRAM.
  • Row Buffer: ساختار نگهدارنده Row فعال.
  • ACTIVATE: فرمان فعال کردن یک Row.
  • PRECHARGE: آماده سازی Bank برای فعال کردن Row دیگر.
  • Row Hit: دسترسی به Rowی که از قبل باز است.
  • Row Conflict: نیاز به بستن Row فعلی و فعال کردن Row دیگری در همان Bank.
  • Burst: انتقال پشت سرهم چند واحد داده.
  • Burst Length: تعداد انتقال ها در یک Burst.
  • DRAM Prefetch: ساختار داخلی آماده سازی چند واحد داده برای رابط I/O.
  • 8n Prefetch: معماری Prefetch مورد استفاده در DDR4 و DDR5.
  • Sub-Channel: زیرکانال مستقل تر در ساختار DDR5 DIMM.
  • On-Die ECC: مکانیزم تصحیح برخی خطاها داخل تراشه DRAM.
  • PMIC: مدار مجتمع مدیریت توان.
  • Memory Scheduling: زمان بندی درخواست های حافظه توسط کنترلر.
  • Bus Turnaround: هزینه تغییر جهت انتقال میان Read و Write.
  • Sequential Access: دسترسی به داده های متوالی.
  • Random Access: دسترسی به آدرس های پراکنده.
  • Rowhammer: پدیده اختلال احتمالی میان Rowهای DRAM بر اثر فعال سازی های مکرر.
  • LPDDR: خانواده حافظه DDR کم مصرف.

خلاصه فصل

DRAM
یک فضای حافظه تخت
با زمان دسترسی ثابت نیست.

داده ها
در ساختاری چندلایه
سازمان دهی شده اند:

Channel
→
DIMM
→
Rank
→
Bank Group
→
Bank
→
Row
→
Column

برای دسترسی به داده،
وضعیت Row فعلی
اهمیت زیادی دارد.

Row Hit
→
Lower Access Cost

Row Conflict
→
PRECHARGE
+
ACTIVATE
+
Additional Delay

همچنین Performance حافظه
حاصل تعامل مجموعه بزرگی
از عوامل است:

Data Rate
+
Timings
+
Banks
+
Row Locality
+
Burst
+
Memory Controller
+
Request Scheduling
+
Workload

DDR5 نیز
صرفاً DDR4
با MT/s بالاتر نیست.

Sub-Channel،
Burst Length بزرگ تر،
تعداد بیشتر Bankها،
On-Die ECC
و تغییرات مدیریت توان
بخشی از تکامل معماری آن هستند.


وقتی CPU منتظر RAM می ماند،
فقط «سرعت RAM» مطرح نیست؛
محل داده، وضعیت Row، صف درخواست ها،
Timingها، معماری Memory Controller
و الگوی دسترسی نرم افزار همگی تعیین می کنند
داده چه زمانی واقعاً به Core برسد.

فصل 79
سطح: پیشرفته
موضوع: NUMA و توپولوژی حافظه
تمرکز: NUMA Node / Local Memory / Remote Memory / Affinity / Multi-Socket / Chiplet

در سیستم های پیچیده، فقط سرعت RAM مهم نیست؛ فاصله منطقی CPU تا داده نیز اهمیت دارد

NUMA و Memory Topology؛ وقتی محل قرار گرفتن داده روی سرعت CPU اثر می گذارد

در یک کامپیوتر ساده،
معمولاً تصور می کنیم
تمام Coreهای پردازنده
به تمام RAM سیستم
با شرایط تقریباً یکسان
دسترسی دارند.

اما در سیستم های بزرگ تر،
مخصوصاً Serverها
و سیستم های چندسوکته،
این تصور همیشه درست نیست.

ممکن است بخشی از RAM
مستقیماً به یک CPU
یا یک بخش مشخص از سیستم
متصل باشد.

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

CPU Core
→
Local Memory
=
Shorter Path

CPU Core
→
Interconnect
→
Remote Memory
=
Longer Path

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

  • Memory Topology چیست.
  • UMA چیست.
  • NUMA چیست.
  • NUMA Node چیست.
  • Local Memory چیست.
  • Remote Memory چیست.
  • چرا Remote Memory می تواند Latency بیشتری داشته باشد.
  • سیستم Multi-Socket چگونه به RAM دسترسی دارد.
  • Inter-Socket Interconnect چیست.
  • Memory Affinity چیست.
  • CPU Affinity چیست.
  • Thread Migration چه اثری دارد.
  • First-Touch Policy چیست.
  • NUMA-aware Software چیست.
  • Virtual Machine چه ارتباطی با NUMA دارد.
  • vNUMA چیست.
  • Chiplet چه ارتباطی با Memory Topology دارد.
  • چرا تعداد Core بیشتر بدون Memory Topology مناسب کافی نیست.

Memory Topology چیست؟


توپولوژی حافظه — Memory Topology

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

UMA چیست؟


دسترسی یکنواخت به حافظه — Uniform Memory Access

UMA
مخفف:

Uniform Memory Access

است.

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

Processor
→
Shared Memory

NUMA چیست؟


دسترسی غیریکنواخت به حافظه — Non-Uniform Memory Access

NUMA
مخفف:

Non-Uniform Memory Access

است.

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

بخشی از RAM
ممکن است به یک CPU
یا Node نزدیک تر باشد
و بخشی دیگر
از طریق Interconnect
در دسترس قرار گیرد.

NUMA Node چیست؟


گره NUMA — NUMA Node
یک
NUMA Node
معمولاً مجموعه ای از
منابع پردازشی
و حافظه نزدیک به آنهاست.

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

NUMA Node
=
CPU Resources
+
Local Memory

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

Local Memory چیست؟

Local Memory
حافظه ای است
که از دید یک NUMA Node
از مسیر مستقیم تر
یا نزدیک تری
قابل دسترسی است.

Core
→
Local Memory Controller
→
Local RAM

این مسیر
معمولاً Latency کمتری
نسبت به دسترسی Remote دارد.

Remote Memory چیست؟

Remote Memory
حافظه ای است
که به Node دیگری
نزدیک تر است.

برای دسترسی به آن،
درخواست ممکن است
از یک Interconnect اضافی
عبور کند.

CPU Node 0
→
Interconnect
→
Memory Controller Node 1
→
RAM Node 1

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

در دسترسی Local،
درخواست حافظه
معمولاً از Memory Controller
نزدیک همان Node عبور می کند.

اما در Remote Access،
درخواست باید
از Fabric
یا Inter-Socket Link
نیز عبور کند.

Local Access
→
Memory Controller
→
DRAM

Remote Access
→
Interconnect
→
Remote Memory Controller
→
DRAM

این مسیر اضافی
می تواند Latency را افزایش دهد
و بخشی از Bandwidth
ارتباط بین Nodeها را نیز مصرف کند.

NUMA در سیستم Multi-Socket چگونه شکل می گیرد؟

فرض کنید یک Server
دارای دو CPU Socket باشد.

هر CPU
Memory Controller
و کانال های حافظه خودش را دارد.

Socket 0
→
Memory Channels
→
RAM 0

Socket 1
→
Memory Channels
→
RAM 1

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

بنابراین CPU 0
می تواند به RAM متصل
به CPU 1 نیز دسترسی داشته باشد،
اما این دسترسی
Remote محسوب می شود.

Inter-Socket Interconnect چیست؟


لینک ارتباطی میان پردازنده ها — Inter-Socket Interconnect
در سیستم های چندسوکته،
پردازنده ها به یک مسیر
ارتباطی پرسرعت نیاز دارند.

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

  • داده،
  • درخواست حافظه،
  • پیام های Coherence،
  • و اطلاعات کنترلی

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

نمونه هایی از ارتباط میان CPUها

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

نمونه های شناخته شده شامل:

Intel UPI

AMD Infinity Fabric

هستند.

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

Memory Affinity چیست؟


وابستگی حافظه به محل اجرا — Memory Affinity
هدف Memory Affinity
این است که داده
تا حد امکان
نزدیک به CPU یا Threadی
قرار گیرد
که بیشتر از آن استفاده می کند.

Thread on Node 0
+
Memory on Node 0
→
Better Locality

CPU Affinity چیست؟

سیستم عامل
می تواند Threadها
را میان Coreهای مختلف
جابه جا کند.

CPU Affinity
مکانیزمی است
که می تواند اجرای Process
یا Thread را
به مجموعه مشخصی
از CPUها یا Coreها
محدود یا ترجیح دهد.

این قابلیت
در برخی Workloadهای حساس
برای کنترل Locality
مفید است.

Thread Migration چگونه Locality را خراب می کند؟

فرض کنید یک Thread
ابتدا روی Node 0 اجرا شود
و حافظه مورد نیازش
نیز روی Node 0
تخصیص پیدا کند.

Thread
→
Node 0
→
Local Memory

اگر بعداً Scheduler
همان Thread را
به Node 1 منتقل کند،
داده ها الزاماً
همراه Thread جابه جا نمی شوند.

Thread
→
Node 1
→
Remote Access
→
Memory on Node 0

در نتیجه
Memory Latency
می تواند افزایش پیدا کند.

First-Touch Policy چیست؟


سیاست اولین دسترسی — First-Touch Policy
در برخی سیستم عامل ها
و محیط های NUMA،
Pageهای حافظه
هنگام اولین استفاده واقعی
به Node مرتبط
با Thread اجراکننده
تخصیص داده می شوند.

به این رفتار
به طور رایج:

First-Touch

گفته می شود.

نکته مهندسی — Engineering Insight: نحوه Initialize کردن آرایه بزرگ می تواند Performance آینده را تغییر دهد

فرض کنید برنامه
یک آرایه بسیار بزرگ
برای پردازش Parallel
ایجاد می کند.

اگر فقط یک Thread
تمام آرایه را
برای اولین بار Initialize کند،
بخش بزرگی از Pageها
ممکن است نزدیک همان Node
تخصیص پیدا کنند.

سپس Threadهای Nodeهای دیگر
ممکن است برای دسترسی به داده
مجبور به Remote Access شوند.

در برخی برنامه های NUMA-aware،
Initialize کردن داده
به صورت Parallel
می تواند توزیع مناسب تری
ایجاد کند.

NUMA-aware Software چیست؟

نرم افزار
NUMA-aware
از ساختار NUMA سیستم
آگاه است
و تلاش می کند:

  • Threadها را در محل مناسب اجرا کند،
  • Memory را نزدیک Thread مصرف کننده قرار دهد،
  • Remote Access را کاهش دهد،
  • داده را میان Nodeها مناسب تقسیم کند،
  • و از Bandwidth حافظه هر Node بهتر استفاده کند.
تاثیر بر عملکرد — Performance Impact: برنامه ای که NUMA را نادیده می گیرد ممکن است از CPU بزرگ به خوبی استفاده نکند

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

اگر تعداد زیادی Thread
مرتباً به Remote Memory
دسترسی داشته باشند،
بخشی از مزیت
Parallelism پردازنده
از بین می رود.

More Cores
+
Poor Memory Locality
→
More Remote Traffic
→
Lower Scaling Efficiency

NUMA فقط مسئله Latency نیست

هر Node
معمولاً Memory Channelهای
خودش را دارد.

بنابراین توزیع مناسب داده
می تواند امکان استفاده
از مجموع Bandwidth
چند Memory Controller
را فراهم کند.

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

Balanced Memory Placement
→
Multiple Memory Controllers
→
Higher Aggregate Bandwidth

چرا نحوه نصب RAM در Server اهمیت زیادی دارد؟

در یک Server چندسوکته،
نصب تمام DIMMها
فقط کنار یک CPU
می تواند Topology نامتعادلی
ایجاد کند.

علاوه بر ظرفیت،
باید نحوه پر شدن:

  • Socketها،
  • Memory Channelها،
  • DIMM Slotها،
  • و NUMA Nodeها

نیز بررسی شود.

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

خیر.

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

256 GB RAM

داشته باشند،
اما نحوه توزیع DIMMها
میان Socketها و Channelها
متفاوت باشد.

در نتیجه
Bandwidth،
Locality
و حتی Performance واقعی
آنها می تواند متفاوت باشد.

سیستم عامل چگونه NUMA را مدیریت می کند؟

سیستم عامل مدرن
می تواند Topology سخت افزار
را شناسایی کند.

Scheduler
و Memory Manager
تلاش می کنند
تصمیم هایی درباره:

  • محل اجرای Thread،
  • محل تخصیص Memory Page،
  • Load Balancing،
  • Thread Migration،
  • و Memory Locality

اتخاذ کنند.

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

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

سیستم عامل می داند
کدام CPUها
و NUMA Nodeها وجود دارند.

اما برنامه ممکن است بهتر بداند
کدام Thread
قرار است برای مدت طولانی
روی کدام Dataset کار کند.

به همین دلیل
نرم افزارهای حرفه ای
می توانند از APIها
و سیاست های NUMA
برای کنترل دقیق تر
Thread Placement
و Memory Placement
استفاده کنند.

NUMA چرا برای Database مهم است؟

Databaseهای بزرگ
می توانند:

  • حافظه بسیار زیادی مصرف کنند،
  • Threadهای متعدد داشته باشند،
  • Cacheهای نرم افزاری بزرگ ایجاد کنند،
  • و حجم بالایی از Memory Access تولید کنند.

در چنین شرایطی،
NUMA Topology
می تواند روی:

  • Latency،
  • Throughput،
  • Scalability،
  • و Tail Latency

تاثیر بگذارد.

NUMA چه ارتباطی با Virtualization دارد؟

Hypervisor
ماشین های مجازی
را روی منابع فیزیکی Host
اجرا می کند.

اگر Host
دارای چند NUMA Node باشد،
محل قرار گرفتن:

  • vCPUها،
  • حافظه VM،
  • و Threadهای Hypervisor

می تواند روی Performance
ماشین مجازی اثر بگذارد.

vNUMA چیست؟


NUMA مجازی — Virtual NUMA

vNUMA
روشی است
که Hypervisor
بخشی از ساختار NUMA
را به Guest Operating System
نمایش می دهد.این کار
می تواند به سیستم عامل
و نرم افزار داخل VM
کمک کند
Topology پردازشی
و حافظه را بهتر درک کنند.

تاثیر بر عملکرد — Performance Impact: VM بسیار بزرگ می تواند از مرز NUMA Node عبور کند

اگر یک VM
به تعداد زیادی vCPU
و حجم زیادی RAM
نیاز داشته باشد،
ممکن است منابع آن
روی چند NUMA Node فیزیکی
قرار گیرند.

در این شرایط
NUMA Awareness
در Hypervisor،
Guest OS
و Application
اهمیت بیشتری پیدا می کند.

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

در برخی CPUهای مدرن،
تمام Coreها
روی یک Die یکپارچه
قرار ندارند.

پردازنده می تواند
از چند Die
یا Chiplet
تشکیل شده باشد.

CPU Package
→
Multiple Compute Dies
+
I/O Components

در چنین طراحی هایی
فاصله منطقی
میان Core،
Cache،
I/O Die
و Memory Controller
می تواند متفاوت باشد.

اشتباه رایج — Common Mistake: هر CPU Chiplet-based الزاماً برای سیستم عامل چند NUMA Node است

خیر.

Chiplet
یک روش طراحی فیزیکی
و معماری پردازنده است.

NUMA Node
نحوه ارائه Topology حافظه
و پردازش به سیستم عامل
را توصیف می کند.

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

آیا حتی داخل یک CPU هم Latency می تواند متفاوت باشد؟

بله.

در CPUهای پیچیده،
Coreها،
Cache Sliceها،
Memory Controllerها
و I/O
از طریق Interconnect داخلی
به یکدیگر متصل هستند.

بسته به معماری،
مسیر میان دو Core
یا میان Core و Memory Controller
می تواند متفاوت باشد.

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

Data Locality

فقط مخصوص Serverهای دوپردازنده ای نیست.

Core Cluster چگونه روی Performance اثر می گذارد؟

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

Coreهای یک Cluster
ممکن است:

  • Cache مشترک داشته باشند،
  • مسیر ارتباطی کوتاه تری داشته باشند،
  • یا برای ارتباط با Cluster دیگر از Fabric عبور کنند.

به همین دلیل
Thread Placement
می تواند در برخی Workloadها
روی Performance اثر بگذارد.

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

اگر دو Thread
دائماً روی داده های مشترک
کار کنند،
فاصله زیاد توپولوژیک
میان آنها
می تواند ترافیک بیشتری
در Interconnect ایجاد کند.

Thread A
↔
Shared Data
↔
Thread B

اگر این Threadها
روی Coreهایی قرار گیرند
که ارتباط مناسب تری دارند،
هزینه تبادل داده
می تواند کاهش پیدا کند.

Cache Coherence چه ارتباطی با NUMA دارد؟

اگر چند CPU یا Core
روی داده مشترک کار کنند،
Cacheهای آنها
باید درباره وضعیت
Cache Lineهای مشترک
هماهنگ باشند.

در سیستم بزرگ،
پیام های Coherence
ممکن است از Interconnect
میان Nodeها عبور کنند.

More Shared Writes
→
More Coherence Traffic
→
More Interconnect Pressure

بنابراین NUMA Performance
فقط به محل RAM محدود نیست؛
الگوی اشتراک داده
میان Coreها نیز اهمیت دارد.

False Sharing در سیستم بزرگ چرا دردسرساز می شود؟

ممکن است دو Thread
متغیرهای کاملاً متفاوتی
را تغییر دهند،
اما این متغیرها
داخل یک Cache Line مشترک
قرار گرفته باشند.

در این حالت،
Cache Line
ممکن است مرتباً
میان Coreها جابه جا شود.

Independent Variables
+
Same Cache Line
→
False Sharing

اگر Coreها
روی Nodeهای دورتر باشند،
هزینه این ترافیک
می تواند بیشتر شود.

نکته مهندسی — Engineering Insight: خرید RAM سریع تر نمی تواند Topology بد را همیشه جبران کند

فرض کنید حافظه
Data Rate بسیار بالایی دارد،
اما Thread
مرتباً مجبور باشد
از Node دیگر
داده دریافت کند.

مسیر Interconnect
و Remote Latency
همچنان وجود دارند.

بنابراین Performance حافظه
باید به صورت:

DRAM Performance
+
Memory Channels
+
Controller
+
Interconnect
+
Topology
+
Software Placement

بررسی شود.

NUMA برای Workstation چه اهمیتی دارد؟

Workstationهای حرفه ای
ممکن است تعداد Core زیاد،
RAM بسیار بالا
و Workloadهای سنگین داشته باشند.

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

  • رندرینگ CPU،
  • Simulation،
  • تحلیل مهندسی،
  • Scientific Computing،
  • Virtualization،
  • پردازش داده،
  • و برخی نرم افزارهای تولید محتوا

می توانند از Memory Topology
تاثیر بگیرند.

آیا کاربر دسکتاپ معمولی باید نگران NUMA باشد؟

در بسیاری از سیستم های
دسکتاپ تک سوکته معمولی،
سیستم عامل و Firmware
بیشتر جزئیات Topology
را بدون نیاز به دخالت کاربر
مدیریت می کنند.

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

اهمیت آن بیشتر
با افزایش:

  • تعداد Core،
  • تعداد Socket،
  • حجم RAM،
  • تعداد VM،
  • و اندازه Workload

افزایش پیدا می کند.

اشتباه رایج — Common Mistake: برای افزایش سرعت باید NUMA را غیرفعال کنیم

چنین قانون عمومی
وجود ندارد.

NUMA
بخشی از معماری
سیستم های مقیاس پذیر است.

مسئله اصلی
استفاده صحیح
از Topology است،
نه صرفاً حذف آن.

تغییر تنظیمات NUMA
بدون شناخت Workload
حتی می تواند
Performance را کاهش دهد.

چگونه بفهمیم NUMA به Bottleneck تبدیل شده است؟

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

نشانه های قابل بررسی شامل:

  • Remote Memory Access بالا،
  • عدم توازن مصرف RAM میان Nodeها،
  • Memory Bandwidth نامتعادل،
  • Thread Migration زیاد،
  • افت Scaling با افزایش Thread،
  • Interconnect Traffic بالا،
  • و تفاوت Performance با تغییر Affinity

هستند.

چه ابزارهایی برای مشاهده NUMA وجود دارند؟

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

نمونه های شناخته شده:

Windows
→
Task Manager
/
Performance Monitoring Tools

Linux
→
lscpu
/
numactl
/
numastat

ابزارهای Profiling
تخصصی پردازنده
نیز می توانند
اطلاعات بسیار عمیق تری
درباره Memory Access
و NUMA Behavior ارائه دهند.

ابزارهایی مانند numactl چه کاری انجام می دهند؟

در سیستم های Linux،
ابزارهایی مانند
numactl
می توانند برای مشاهده
یا کنترل سیاست های:

  • CPU Placement،
  • Memory Placement،
  • Node Binding،
  • و Memory Interleaving

استفاده شوند.

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

Memory Interleaving در NUMA چیست؟

یکی از سیاست های ممکن
این است که Memory Pageها
میان چند Node
توزیع شوند.

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

Page 0
→
Node 0

Page 1
→
Node 1

Page 2
→
Node 0

Page 3
→
Node 1

این روش
می تواند برای برخی Workloadها
Bandwidth را بهتر توزیع کند،
اما برای همه برنامه ها
بهترین سیاست نیست.

نکته مهندسی — Engineering Insight: Local Allocation و Interleaving دو هدف متفاوت دارند

Local Allocation
تلاش می کند Latency
را با نزدیک نگه داشتن داده
به Thread کاهش دهد.

Interleaving
می تواند داده
را میان چند Memory Controller
توزیع کند
تا Aggregate Bandwidth
افزایش پیدا کند.

Locality Strategy
→
Lower Access Distance

Interleaving Strategy
→
Better Bandwidth Distribution

انتخاب مناسب
به Workload بستگی دارد.

چرا NUMA برای CPU Scaling مهم است؟

فرض کنید تعداد Coreها
دو برابر شود.

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

معماری NUMA
با توزیع:

  • Memory Controller،
  • Memory Channel،
  • RAM Capacity،
  • و Memory Bandwidth

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

تاثیر بر عملکرد — Performance Impact: 64 Core فعال الزاماً به معنی استفاده موثر از 64 Core نیست

اگر یک برنامه
روی 64 Core اجرا شود
اما داده های اصلی آن
فقط از Memory Controller
یک Node تامین شوند،
ممکن است آن Node
به Bottleneck تبدیل شود.

Many Threads
→
One Memory Node
→
Bandwidth Contention

توزیع مناسب داده
و Thread
می تواند برای Scaling
به اندازه تعداد Core
اهمیت داشته باشد.

هنگام خرید Server یا Workstation چه مشخصاتی را بررسی کنیم؟

ویژگی چرا مهم است؟
Socket Count می تواند ساختار NUMA و مسیرهای Remote Access را تغییر دهد
Core Count تعداد مصرف کنندگان بالقوه پهنای باند حافظه را افزایش می دهد
Memory Channels per Socket روی پهنای باند حافظه هر CPU اثر مستقیم دارد
DIMM Population تعیین می کند کانال ها چگونه استفاده می شوند
RAM per Socket روی Local Memory Capacity اثر دارد
Inter-Socket Bandwidth روی هزینه ترافیک میان CPUها اثر دارد
Workload NUMA Awareness مشخص می کند نرم افزار تا چه حد از Topology استفاده می کند
Virtualization Topology برای VMهای بزرگ و Hostهای پرتراکم اهمیت دارد
اشتباهات رایج — Common Mistakes: NUMA و Memory Topology
  • فرض اینکه تمام RAM سیستم Latency یکسان دارد.
  • نادیده گرفتن تفاوت Local Memory و Remote Memory.
  • تمرکز فقط روی ظرفیت RAM در Server.
  • نادیده گرفتن توزیع DIMMها میان Socketها.
  • نادیده گرفتن Memory Channel Population.
  • فرض اینکه Core بیشتر همیشه Scaling خطی ایجاد می کند.
  • نادیده گرفتن Memory Affinity.
  • نادیده گرفتن Thread Migration.
  • نادیده گرفتن First-Touch Policy در برنامه های بزرگ.
  • فرض اینکه سیستم عامل همیشه بهترین Placement ممکن را انجام می دهد.
  • یکی دانستن Chiplet Architecture با NUMA.
  • نادیده گرفتن NUMA در VMهای بزرگ.
  • نادیده گرفتن Cache Coherence Traffic میان Nodeها.
  • نادیده گرفتن False Sharing.
  • تلاش برای حل Topology نامناسب فقط با RAM سریع تر.
  • تغییر تنظیمات NUMA بدون Profiling.

سوالات متداول درباره NUMA و Memory Topology

NUMA چیست؟

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

NUMA Node چیست؟

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

Local Memory چیست؟

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

Remote Memory چیست؟

حافظه متعلق به Node دیگری است
که دسترسی به آن
معمولاً نیازمند عبور
از Interconnect اضافی است.

آیا Remote Memory همیشه غیرقابل استفاده است؟

خیر.
بخشی طبیعی از معماری NUMA است،
اما معمولاً هزینه دسترسی آن
با Local Memory یکسان نیست.

First-Touch چیست؟

سیاستی است
که در آن محل تخصیص واقعی
برخی Memory Pageها
می تواند بر اساس Node
اولین Thread استفاده کننده
تعیین شود.

آیا NUMA فقط برای Server است؟

بیشترین اهمیت آن
در Serverها،
Workstationهای بزرگ
و سیستم های چندسوکته دیده می شود،
اما مفهوم Data Locality
در معماری های مدرن دیگر
نیز اهمیت دارد.

vNUMA چیست؟

نمایش توپولوژی NUMA
به ماشین مجازی است
تا Guest OS و Application
بتوانند منابع را بهتر مدیریت کنند.

آیا Chiplet همان NUMA است؟

خیر.
Chiplet روش ساخت
و سازمان دهی اجزای پردازنده است،
در حالی که NUMA
مدل دسترسی غیریکنواخت
به حافظه را توصیف می کند.

آیا RAM سریع تر مشکل NUMA را حل می کند؟

الزاماً خیر.
Remote Access،
Interconnect Traffic،
Memory Placement
و Thread Placement
همچنان می توانند
محدودیت ایجاد کنند.

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

  • Memory Topology: ساختار ارتباط پردازنده، کنترلر حافظه و RAM.
  • UMA: معماری دسترسی نسبتاً یکنواخت به حافظه.
  • NUMA: معماری دسترسی غیریکنواخت به حافظه.
  • NUMA Node: مجموعه منابع پردازشی و حافظه محلی مرتبط.
  • Local Memory: حافظه نزدیک تر به Node اجراکننده.
  • Remote Memory: حافظه ای که از Node دیگری قابل دسترسی است.
  • Inter-Socket Interconnect: لینک ارتباطی میان CPUهای چندسوکته.
  • Memory Affinity: نزدیک نگه داشتن حافظه به محل پردازش.
  • CPU Affinity: محدود یا ترجیح دادن اجرای Thread روی CPUهای مشخص.
  • Thread Migration: انتقال Thread میان Coreها یا Nodeها.
  • First-Touch: تخصیص حافظه بر اساس محل اولین استفاده.
  • NUMA-aware: نرم افزاری که Topology NUMA را در تصمیم های خود لحاظ می کند.
  • Memory Placement: تعیین محل فیزیکی یا منطقی تخصیص داده.
  • Thread Placement: تعیین محل اجرای Thread.
  • Memory Interleaving: توزیع Pageهای حافظه میان چند Node.
  • vNUMA: توپولوژی NUMA ارائه شده به ماشین مجازی.
  • Chiplet: طراحی پردازنده از چند Die یا بلوک سیلیکونی.
  • Data Locality: نزدیک بودن داده به محل مصرف آن.
  • False Sharing: ایجاد Coherence Traffic به دلیل اشتراک ناخواسته یک Cache Line.
  • Aggregate Memory Bandwidth: پهنای باند مجموع چند کنترلر یا Node حافظه.

خلاصه فصل

در سیستم های NUMA،
تمام حافظه
از دید تمام Coreها
فاصله یکسانی ندارد.

Local Memory
→
Shorter Path
→
Usually Lower Latency

Remote Memory
→
Interconnect
→
Longer Path
→
Usually Higher Latency

اما NUMA
فقط مسئله Latency نیست.

توزیع Memory Controllerها
و Channelها میان Nodeها
می تواند Bandwidth کلی سیستم
را نیز افزایش دهد.

بنابراین Performance
یک سیستم بزرگ
حاصل تعامل:

CPU Cores
+
Memory Controllers
+
Memory Channels
+
NUMA Nodes
+
Interconnect
+
Thread Placement
+
Memory Placement
+
Software Behavior

است.


در سیستم های بزرگ، سؤال فقط این نیست که
«چقدر RAM داریم؟»
بلکه باید پرسید:
«این داده در کدام حافظه قرار دارد،
کدام Core آن را پردازش می کند
و برای رسیدن داده به آن Core
چند مرحله باید طی شود؟»

فصل 80
سطح: متوسط تا پیشرفته
موضوع: معماری PCI Express
تمرکز: PCIe Lane / Link Width / Root Complex / GPU / NVMe / Chipset / Lane Sharing

CPU فقط با RAM ارتباط ندارد؛ بخش بزرگی از تجهیزات پرسرعت سیستم از مسیر PCI Express به پردازنده متصل می شوند

معماری PCI Express؛ مسیر ارتباط CPU با GPU، SSD NVMe و تجهیزات پرسرعت

وقتی کارت گرافیک،
SSD NVMe،
کارت شبکه پرسرعت
یا یک شتاب دهنده
در سیستم نصب می شود،
باید مسیری برای تبادل داده
با CPU و Memory
وجود داشته باشد.

یکی از مهم ترین استانداردهایی
که این ارتباط را فراهم می کند:

PCI Express
=
PCIe

است.

اما PCIe
فقط نام یک Slot
روی مادربرد نیست.

پشت این رابط
یک معماری ارتباطی
شامل Lane،
Link،
Root Complex،
Endpoint،
Switch
و چند لایه Protocol
وجود دارد.

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

  • PCI Express چیست.
  • PCIe Lane چیست.
  • چرا هر Lane دو مسیر مستقل دارد.
  • Link Width چیست.
  • x1، x2، x4، x8 و x16 چه معنی دارند.
  • PCIe Full Duplex چیست.
  • Root Complex چیست.
  • Endpoint چیست.
  • PCIe Switch چیست.
  • CPU PCIe Lanes چه هستند.
  • Chipset Lanes چه هستند.
  • تفاوت اتصال مستقیم به CPU و اتصال از طریق Chipset چیست.
  • PCIe 3.0، 4.0، 5.0 و 6.0 چه تفاوتی دارند.
  • GT/s چیست.
  • چرا GT/s با GB/s یکی نیست.
  • Encoding Overhead چیست.
  • Lane Bifurcation چیست.
  • Lane Sharing چیست.
  • چرا نصب یک SSD ممکن است بعضی Portها را غیرفعال کند.
  • GPU واقعاً به چه تعداد Lane نیاز دارد.
  • SSD NVMe چگونه از PCIe استفاده می کند.
  • چه زمانی PCIe به Bottleneck تبدیل می شود.

PCI Express چیست؟


اتصال سریع تجهیزات جانبی — Peripheral Component Interconnect Express

PCI Express
یا
PCIe
یک استاندارد ارتباطی
پرسرعت و سریال است
که برای اتصال
تجهیزات مختلف
به سیستم استفاده می شود.نمونه هایی از تجهیزات PCIe:

  • کارت گرافیک،
  • SSD NVMe،
  • کارت شبکه،
  • کارت صدا،
  • کارت Capture،
  • RAID Controller،
  • شتاب دهنده های محاسباتی،
  • و برخی کنترلرهای I/O.

PCIe چرا Point-to-Point است؟

PCIe
برخلاف برخی Busهای قدیمی،
از لینک های اختصاصی
میان دو Endpoint ارتباطی
استفاده می کند.

Device A
↔
PCIe Link
↔
Device B

بنابراین یک Link PCIe
مستقیماً دو بخش
از ساختار PCIe
را به یکدیگر متصل می کند.

PCIe Lane چیست؟


مسیر پایه ارتباطی — PCIe Lane
یک
PCIe Lane
واحد پایه
انتقال داده در PCI Express است.

هر Lane
دارای مسیر ارسال
و دریافت مستقل است.

One PCIe Lane
=
TX Differential Pair
+
RX Differential Pair

TX
مسیر ارسال
و RX
مسیر دریافت داده است.

Differential Pair چیست؟

PCIe
از سیگنالینگ تفاضلی
استفاده می کند.

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

Differential Signaling
→
Better Noise Immunity
+
High-Speed Signal Integrity

این روش
برای ارتباطات بسیار پرسرعت
اهمیت زیادی دارد.

Full Duplex در PCIe یعنی چه؟

چون مسیر TX و RX
مستقل هستند،
داده می تواند
همزمان در دو جهت
منتقل شود.

CPU
→
GPU

GPU
→
CPU

این ویژگی:

Full Duplex

نام دارد.

چند Lane
می توانند
کنار یکدیگر قرار بگیرند
و یک Link عریض تر بسازند.

x1
=
1 Lane

x4
=
4 Lanes

x8
=
8 Lanes

x16
=
16 Lanes

هرچه تعداد Laneها بیشتر باشد،
پهنای باند بالقوه Link
نیز بیشتر می شود.

اشتباه رایج — Common Mistake: هر Slot فیزیکی x16 حتماً با 16 Lane کار می کند

خیر.

اندازه فیزیکی Slot
الزاماً تعداد Laneهای
الکتریکی فعال را مشخص نمی کند.

ممکن است Slot
از نظر ظاهری x16 باشد،
اما از نظر الکتریکی:

x16 Physical
/
x4 Electrical

باشد.

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

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

سپس درباره مواردی مانند:

  • Generation،
  • Link Speed،
  • Link Width،
  • و وضعیت Laneها

توافق می شود.

این فرآیند
بخشی از:

Link Training

است.

نکته مهندسی — Engineering Insight: Link با توانایی ضعیف ترین طرف محدود می شود

فرض کنید یک GPU
از PCIe 4.0 پشتیبانی کند،
اما مادربرد یا CPU
فقط PCIe 3.0 ارائه دهد.

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

PCIe 4.0 Device
+
PCIe 3.0 Host
→
PCIe 3.0 Link

همین منطق
درباره Link Width
نیز صدق می کند.

Root Complex چیست؟


نقطه اتصال پردازنده و حافظه به ساختار PCIe — Root Complex

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

CPU / Memory
↔
Root Complex
↔
PCIe Devices

بسته به معماری،
Root Complex
می تواند بخشی از CPU
یا SoC باشد.

PCIe Endpoint چیست؟

تجهیزی که
در انتهای یک ساختار PCIe
قرار می گیرد
معمولاً:

Endpoint

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

برای مثال:

  • GPU،
  • NVMe Controller،
  • Network Adapter،
  • Capture Card

می توانند PCIe Endpoint باشند.

PCIe Switch چیست؟


سوئیچ PCI Express — PCIe Switch
PCIe Switch
امکان اتصال چند Endpoint
به یک ساختار بالادستی
را فراهم می کند.

Root Complex
↔
PCIe Switch
↔
Multiple Endpoints

این قطعات
در Serverها،
Workstationها،
Storage Systemها
و سیستم های دارای
تعداد زیاد Accelerator
اهمیت بیشتری دارند.

نکته مهندسی — Engineering Insight: PCIe Switch Lane تولید نمی کند

Switch
می تواند چند Device
را به یک Upstream Link
متصل کند،
اما پهنای باند نامحدود
ایجاد نمی کند.

Multiple Downstream Devices
→
Shared Upstream Bandwidth

اگر چند Device
همزمان ترافیک سنگین داشته باشند،
Upstream Link
می تواند Bottleneck شود.

CPU PCIe Lanes چیست؟

بسیاری از CPUهای مدرن
تعدادی PCIe Lane
مستقیماً در اختیار سیستم قرار می دهند.

این Laneها
معمولاً برای تجهیزات
پرسرعت مانند:

  • GPU،
  • NVMe SSD،
  • و در پلتفرم های حرفه ای Acceleratorها

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

CPU
→
Direct PCIe Lanes
→
Device

Chipset PCIe Lanes چیست؟

Chipset
نیز می تواند
PCIe Laneهای اضافی
برای اتصال تجهیزات فراهم کند.

اما Chipset
خودش از طریق
یک لینک مشخص
به CPU متصل است.

Device
→
Chipset
→
Chipset-to-CPU Link
→
CPU

بنابراین چند Device
متصل به Chipset
می توانند بخشی از مسیر بالادستی
را با یکدیگر به اشتراک بگذارند.

اتصال مستقیم به CPU با اتصال از طریق Chipset چه تفاوتی دارد؟

ویژگی اتصال مستقیم به CPU اتصال از طریق Chipset
مسیر کوتاه تر عبور از Chipset
پهنای باند بالادستی اختصاصی تر ممکن است با تجهیزات دیگر مشترک باشد
کاربرد رایج GPU و برخی SSDهای اصلی Storage، USB، Network و Expansion Devices
احتمال Contention معمولاً کمتر بسته به بار سایر تجهیزات بیشتر
پشت صحنه فنی — Under the Hood: چرا مجموع Laneهای Chipset می تواند از لینک CPU بیشتر باشد؟

ممکن است Chipset
تعداد زیادی Port
و Lane
در اختیار مادربرد قرار دهد.

اما تمام این تجهیزات
الزاماً همزمان
با حداکثر پهنای باند
کار نمی کنند.

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

Oversubscription

استفاده کند.

Many Downstream Interfaces
→
Shared Upstream Link

این موضوع
شبیه شبکه ای است
که تعداد زیادی Client
از یک Uplink مشترک
استفاده می کنند.

نسل های PCIe چه تفاوتی دارند؟

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

نسل نرخ انتقال خام هر Lane پهنای باند تقریبی یک طرفه x1 پهنای باند تقریبی یک طرفه x16
PCIe 3.0 8 GT/s حدود 0.985 GB/s حدود 15.75 GB/s
PCIe 4.0 16 GT/s حدود 1.97 GB/s حدود 31.5 GB/s
PCIe 5.0 32 GT/s حدود 3.94 GB/s حدود 63 GB/s
PCIe 6.0 64 GT/s حدود 7.56 GB/s* حدود 121 GB/s*

* اعداد PCIe 6.0
به صورت تقریبی
و با در نظر گرفتن ساختار
FLIT و FEC بیان شده اند؛
نرخ کاربردی دقیق
به سربار Protocol
و نوع ترافیک وابسته است.

GT/s چیست؟


نرخ انتقال — GigaTransfers per Second

GT/s
مخفف:

GigaTransfers per Second

است.

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

GT/s
مستقیماً همان GB/s نیست.

اشتباه رایج — Common Mistake: 32 GT/s یعنی 32 GB/s روی هر Lane

خیر.

GT/s
نرخ Transfer
را بیان می کند،
در حالی که GB/s
حجم داده منتقل شده
در هر ثانیه است.

نوع Encoding
و سربار Protocol
باید در تبدیل
در نظر گرفته شوند.

GT/s
≠
GB/s

Encoding در PCIe چیست؟

داده روی Link
به شکل خام
و بدون ساختار
ارسال نمی شود.

نسل های مختلف PCIe
از روش های متفاوتی
برای Signal Encoding
استفاده کرده اند.

PCIe 3.0 تا PCIe 5.0
از:

128b / 130b Encoding

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

یعنی برای هر 128 بیت
Payload سطح Encoding،
130 بیت روی Link
منتقل می شود.

چرا PCIe 2.0 با وجود 5 GT/s فقط حدود 500 MB/s در هر Lane داشت؟

نسل های اولیه PCIe
از:

8b / 10b Encoding

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

یعنی برای انتقال
8 بیت داده،
10 بیت روی Link
منتقل می شد.

این روش
حدود 20 درصد
Encoding Overhead
ایجاد می کرد.

PCIe 6.0 چرا معماری انتقال متفاوتی دارد؟

PCIe 6.0
برای رسیدن به نرخ انتقال بالاتر
از فناوری:

PAM4
=
Pulse Amplitude Modulation 4-Level

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

به جای دو سطح سیگنال،
PAM4
از چهار سطح استفاده می کند
و می تواند در هر Symbol
اطلاعات بیشتری حمل کند.

پشت صحنه فنی — Under the Hood: افزایش سرعت PCIe 6.0 بدون هزینه نیست

چهار سطحی شدن سیگنال
باعث می شود
فاصله میان Levelهای الکتریکی
کمتر شود.

در نتیجه
Signal Integrity
حساس تر می شود.

PCIe 6.0
برای حفظ Reliability
از فناوری هایی مانند:

PAM4
+
FLIT Mode
+
FEC

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

FEC
مخفف:

Forward Error Correction

است.

پهنای باند PCIe چگونه افزایش پیدا می کند؟

دو عامل اصلی:

  • سرعت هر Lane،
  • و تعداد Laneها

هستند.

Link Bandwidth
≈
Per-Lane Bandwidth
×
Number of Lanes

برای مثال
PCIe 4.0 x8
تقریباً پهنای باندی مشابه
PCIe 3.0 x16
در سطح Link دارد.

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

پهنای باند هر Lane
تقریباً با هر نسل
دو برابر شده است.

PCIe 3.0 x16
≈
PCIe 4.0 x8
≈
PCIe 5.0 x4

این برابری
درباره پهنای باند نظری Link است
و به معنی Performance یکسان
برای تمام Deviceها و Workloadها نیست.

GPU چگونه از PCIe استفاده می کند؟

کارت گرافیک مجزا
معمولاً از PCIe
برای ارتباط با:

  • CPU،
  • System Memory،
  • Driver،
  • و سایر اجزای سیستم

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

بسیاری از GPUهای دسکتاپ
از Linkهای x16
استفاده می کنند،
اما برخی GPUها
از نظر الکتریکی
x8 یا تعداد Lane کمتری دارند.

آیا GPU برای هر عملیات گرافیکی از PCIe به RAM سیستم مراجعه می کند؟

خیر.

GPU مجزا
معمولاً VRAM اختصاصی
خودش را دارد.

GPU
↔
Local VRAM

این حافظه
از طریق رابط بسیار پهن
مستقیماً در اختیار GPU قرار دارد.

PCIe
بیشتر برای انتقال داده
میان GPU
و سایر بخش های سیستم
استفاده می شود.

آیا x8 بودن کارت گرافیک همیشه Performance را نصف می کند؟

خیر.

نصف شدن تعداد Lane
پهنای باند نظری Link
را کاهش می دهد،
اما Performance برنامه
فقط به پهنای باند PCIe
وابسته نیست.

اگر بیشتر داده مورد نیاز GPU
در VRAM باقی بماند،
PCIe ممکن است
Bottleneck اصلی نباشد.

تاثیر واقعی
به:

  • GPU،
  • نسل PCIe،
  • Workload،
  • VRAM Capacity،
  • Data Transfer Pattern،
  • و Application

بستگی دارد.

تاثیر بر عملکرد — Performance Impact: کمبود VRAM می تواند اهمیت PCIe را بسیار بیشتر کند

اگر Dataset
یا Textureهای مورد نیاز
داخل VRAM جا نشوند،
انتقال داده
میان System RAM و GPU
می تواند افزایش پیدا کند.

Insufficient VRAM
→
More Host ↔ GPU Transfers
→
More PCIe Traffic

در چنین شرایطی
محدودیت PCIe
می تواند محسوس تر شود.

SSD NVMe چگونه به PCIe متصل می شود؟

بسیاری از SSDهای NVMe
مستقیماً از PCI Express
برای ارتباط استفاده می کنند.

یک SSD رایج M.2 NVMe
معمولاً:

PCIe x4

است.

برای مثال:

PCIe 3.0 x4
→
~3.94 GB/s Raw Link Payload Capacity

PCIe 4.0 x4
→
~7.88 GB/s Raw Link Payload Capacity

PCIe 5.0 x4
→
~15.75 GB/s Raw Link Payload Capacity

اشتباه رایج — Common Mistake: PCIe 4.0 x4 یعنی SSD حتماً 7.88 GB/s سرعت دارد

خیر.

این عدد
ظرفیت تقریبی Link
در سطح Encoding است.

Performance واقعی SSD
به عوامل دیگری مانند:

  • NAND Flash،
  • SSD Controller،
  • Firmware،
  • Queue Depth،
  • نوع Workload،
  • Temperature،
  • SLC Cache،
  • و Protocol Overhead

وابسته است.

NVMe و PCIe یک چیز هستند؟

خیر.

PCIe
مسیر ارتباطی
و Transport زیرساختی را فراهم می کند.

NVMe
یک Interface و Command Set
طراحی شده برای Storage
مبتنی بر حافظه Non-Volatile است.

PCIe
=
Transport / Interconnect

NVMe
=
Storage Protocol / Command Set

آیا هر M.2 یک SSD NVMe است؟

خیر.

M.2
یک Form Factor
و استاندارد اتصال فیزیکی است
که می تواند
رابط های متفاوتی را حمل کند.

بنابراین:

M.2
≠
Automatically NVMe

بعضی M.2 SSDها
می توانند SATA باشند
و برخی از PCIe/NVMe
استفاده کنند.

PCIe Bifurcation چیست؟


تقسیم یک Link عریض به چند Link کوچک تر — PCIe Bifurcation

Bifurcation
به تقسیم Laneهای
یک مجموعه PCIe
به چند Link مستقل
گفته می شود.برای مثال:

x16
→
x8 + x8

یا:

x16
→
x4 + x4 + x4 + x4

البته CPU،
مادربرد
و Firmware
باید Configuration مورد نظر
را پشتیبانی کنند.

چرا کارت چهار SSD M.2 ممکن است بدون Bifurcation درست کار نکند؟

برخی Adapterها
چهار SSD PCIe x4
را روی یک Slot x16
قرار می دهند.

برای اینکه هر SSD
Link مستقل x4 داشته باشد،
Host باید بتواند:

x16
→
4 × x4

را ایجاد کند.

اگر Bifurcation
پشتیبانی نشود
و Adapter
PCIe Switch مستقل نداشته باشد،
ممکن است فقط بخشی از SSDها
شناسایی شوند.

Lane Sharing چیست؟

تعداد PCIe Laneها
در هر پلتفرم محدود است.

بنابراین مادربرد
ممکن است یک مجموعه Lane
را میان چند Connector
به اشتراک بگذارد.

برای مثال:

M.2 Slot
↔
Shared Resources
↔
PCIe Expansion Slot

یا:

M.2 Slot
↔
Shared Resources
↔
SATA Ports

پشت صحنه فنی — Under the Hood: چرا با نصب SSD بعضی Portهای مادربرد غیرفعال می شوند؟

مادربرد
منابع ارتباطی محدودی دارد.

سازنده ممکن است
یک مسیر HSIO
یا PCIe Resource
را برای چند Connector
در نظر گرفته باشد.

وقتی یکی از این مسیرها
توسط M.2 استفاده شود،
Connector دیگر
ممکن است غیرفعال
یا محدود شود.

Shared Resource
→
Device A Enabled
→
Device B Disabled / Reduced

به همین دلیل
مطالعه Block Diagram
و Manual مادربرد
اهمیت زیادی دارد.

چرا نصب کارت دوم می تواند GPU اول را از x16 به x8 تبدیل کند؟

فرض کنید CPU
برای بخش Expansion
شانزده Lane
در اختیار مادربرد قرار دهد.

مادربرد می تواند
این Laneها را:

One Device
→
x16

یا:

Two Devices
→
x8 + x8

تقسیم کند.

بنابراین با نصب Device دوم،
Link Width
کارت اول ممکن است
تغییر کند.

آیا کارت x16 در Slot x8 کار می کند؟

اگر Slot از نظر فیزیکی
امکان نصب کارت را داشته باشد
و سیستم سازگار باشد،
Device می تواند
با Link Width کمتر
کار کند.

x16 Device
→
x8 Link

PCIe
برای Negotiation
عرض Link
طراحی شده است.

PCIe نسل های مختلف با هم سازگار هستند؟

در بسیاری از موارد،
PCI Express
سازگاری نسل به نسل
را حفظ می کند.

برای مثال
یک Device PCIe 4.0
می تواند روی Host PCIe 3.0
کار کند،
اما با سرعت نسل پایین تر.

Device Gen4
+
Host Gen3
→
Gen3 Operation

چرا با افزایش نسل PCIe طراحی مادربرد سخت تر می شود؟

هرچه Data Rate
افزایش پیدا کند،
کیفیت مسیر الکتریکی
اهمیت بیشتری پیدا می کند.

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

  • طول Trace،
  • PCB Material،
  • Connector Quality،
  • Impedance Control،
  • Signal Loss،
  • Crosstalk،
  • و Noise

اهمیت بیشتری پیدا می کنند.

PCIe Retimer چیست؟


بازسازی کننده سیگنال — PCIe Retimer
در مسیرهای طولانی
یا طراحی های پرسرعت،
کیفیت سیگنال
ممکن است کاهش پیدا کند.

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

Degraded Signal
→
Retimer
→
Recovered Signal

Retimerها
در نسل های سریع تر PCIe،
Serverها،
Riserها
و مسیرهای طولانی
اهمیت بیشتری پیدا می کنند.

PCIe Riser چیست؟

Riser
وسیله ای برای تغییر
موقعیت فیزیکی
اتصال PCIe است.

در:

  • Serverها،
  • سیستم های Rackmount،
  • کیس های کوچک،
  • و برخی Workstationها

استفاده از Riser
رایج است.

در سرعت های بالا،
کیفیت Riser
و Signal Integrity
اهمیت زیادی دارد.

Resizable BAR چه ارتباطی با PCIe دارد؟

CPU
برای دسترسی
به منابع PCIe Device
از Address Spaceهای مشخص
استفاده می کند.

در GPUها،
فناوری هایی مانند:

Resizable BAR

اجازه می دهند
CPU بتواند
پنجره بزرگ تری
از VRAM
را در Address Space
Map کند.

این قابلیت
می تواند در برخی Workloadها
مدیریت انتقال داده
میان CPU و GPU
را کارآمدتر کند.

BAR در PCIe چیست؟


Base Address Register
PCIe Device
دارای منابعی است
که باید در Address Space سیستم
قابل دسترسی باشند.

BAR
به سیستم کمک می کند
محدوده های آدرس
مورد نیاز Device
را تعیین و Map کند.

BAR
=
Base Address Register

DMA چه ارتباطی با PCIe دارد؟


دسترسی مستقیم به حافظه — Direct Memory Access
بسیاری از PCIe Deviceها
می توانند از:

DMA
=
Direct Memory Access

برای انتقال داده
میان Device
و System Memory
استفاده کنند.

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

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

فرض کنید کارت شبکه
یک Packet دریافت کرده است.

به جای اینکه CPU
هر Byte
را از کارت شبکه
بخواند و در RAM بنویسد،
Device می تواند
از DMA
برای انتقال مستقیم تر
داده به Memory
استفاده کند.

Network Device
→
DMA
→
System Memory

CPU سپس
روی داده موجود در Memory
پردازش انجام می دهد.

این معماری
سربار پردازنده
را به شدت کاهش می دهد.

IOMMU چیست و چرا برای PCIe مهم است؟


واحد مدیریت حافظه ورودی و خروجی — Input-Output Memory Management Unit

IOMMU
برای مدیریت
دسترسی Deviceها
به Memory
استفاده می شود.این واحد
می تواند آدرس های DMA
را ترجمه
و دسترسی Device
را محدود کند.

Device DMA Address
→
IOMMU
→
Physical Memory

IOMMU چرا برای Virtualization مهم است؟

در Virtualization،
ممکن است بخواهیم
یک PCIe Device
مستقیماً در اختیار
یک Virtual Machine
قرار گیرد.

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

Intel VT-d

AMD IOMMU

از سازوکارهای IOMMU
برای Isolation
و Device Assignment
استفاده می کنند.

PCIe چه ارتباطی با NUMA دارد؟

در Serverهای چندسوکته،
PCIe Device
ممکن است از نظر Topology
به یک CPU Socket
نزدیک تر باشد.

برای مثال:

GPU
→
PCIe Root Complex
→
Socket 0

اگر Thread اصلی
روی Socket 1 اجرا شود
و Memory نیز روی Node دیگری باشد،
مسیر داده
می تواند پیچیده تر شود.

نکته مهندسی — Engineering Insight: Device Locality هم مانند Memory Locality مهم است

در سیستم های بزرگ،
فقط نزدیک بودن RAM
به CPU مهم نیست.

نزدیک بودن:

  • GPU،
  • NIC،
  • NVMe SSD،
  • و Accelerator

به Node پردازشی
نیز می تواند
روی Performance اثر بگذارد.

CPU Affinity
+
Memory Affinity
+
Device Affinity
→
Better Locality

PCIe Peer-to-Peer چیست؟

در برخی معماری ها،
PCIe Deviceها
می توانند داده را
با دخالت کمتر CPU
میان یکدیگر منتقل کنند.

PCIe Device A
↔
PCIe Fabric
↔
PCIe Device B

این قابلیت
در Workloadهای:

  • GPU Computing،
  • Storage،
  • Networking،
  • و Accelerator-heavy Systems

اهمیت پیدا می کند.

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

در روش سنتی،
ممکن است داده
ابتدا وارد System Memory
شود
و سپس به Device دیگر منتقل گردد.

Device A
→
System Memory
→
Device B

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

Fewer Data Copies
→
Lower CPU Overhead
+
Potentially Lower Latency

کارت شبکه پرسرعت چرا به PCIe سریع نیاز دارد؟

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

اگر PCIe Link
نتواند این ترافیک را حمل کند،
رابط PCIe
به Bottleneck تبدیل می شود.

این موضوع
در NICهای:

25 GbE
/
40 GbE
/
100 GbE
/
200 GbE
/
Higher-Speed Networking

اهمیت بیشتری پیدا می کند.

چرا بعضی Capture Cardها به x4 یا x8 نیاز دارند؟

Capture Card
ممکن است چند Stream
ویدئویی با Resolution
و Frame Rate بالا
دریافت کند.

حجم داده خام
می تواند زیاد باشد.

بنابراین سازنده
Link Width مشخصی
برای کارت تعیین می کند.

نصب کارت
در Slot با Lane کمتر
ممکن است Performance
یا قابلیت های آن
را محدود کند.

PCIe در سیستم های AI و محاسبات سنگین چه اهمیتی دارد؟

در سیستم های دارای
چند GPU یا Accelerator،
حجم زیادی از داده
ممکن است میان:

  • CPU و GPU،
  • RAM و VRAM،
  • Storage و GPU،
  • Network و GPU،
  • و Acceleratorهای مختلف

جابه جا شود.

بنابراین PCIe Topology
می تواند بخش مهمی
از طراحی سیستم باشد.

چه زمانی PCIe به Bottleneck تبدیل می شود؟

PCIe زمانی Bottleneck می شود
که Device
بخواهد داده بیشتری
از ظرفیت موثر Link
منتقل کند.

Required Data Rate
>
Available PCIe Throughput
→
PCIe Bottleneck

اما Bottleneck
همیشه فقط به Bandwidth مربوط نیست.

Latency،
Protocol Overhead،
Queueing،
Topology
و Software Stack
نیز می توانند موثر باشند.

سناریو احتمال اهمیت PCIe دلیل
GPU Gaming با VRAM کافی معمولاً متوسط یا پایین تر بخش زیادی از داده در VRAM باقی می ماند
GPU با VRAM ناکافی بالاتر انتقال Host ↔ GPU افزایش پیدا می کند
SSD NVMe بسیار سریع بالا Link می تواند سقف Sequential Throughput را تعیین کند
NIC پرسرعت بالا ترافیک شبکه باید از PCIe عبور کند
Multi-GPU Compute بسیار وابسته به Workload حجم و مسیر انتقال داده تعیین کننده است
کارت صدای معمولی پایین نیاز پهنای باند بسیار محدودتر است

هنگام نصب کارت PCIe چه چیزهایی را باید بررسی کرد؟

  • اندازه فیزیکی Slot،
  • تعداد Lane الکتریکی Slot،
  • نسل PCIe Slot،
  • نسل PCIe Device،
  • Lane Sharing،
  • Bifurcation Support،
  • اتصال Slot به CPU یا Chipset،
  • تغییر Link Width با نصب Deviceهای دیگر،
  • محدودیت های Firmware،
  • و نیاز پهنای باند Device.

چرا Block Diagram مادربرد بسیار مهم است؟

جدول مشخصات مادربرد
ممکن است فقط تعداد Slotها
و Portها را نشان دهد.

اما Block Diagram
مشخص می کند
این Portها
واقعاً چگونه
به CPU و Chipset
متصل شده اند.

CPU
├─ GPU x16
├─ NVMe x4
└─ Chipset Link
├─ USB
├─ SATA
├─ Network
└─ Additional PCIe

این اطلاعات
برای Workstation،
Server
و سیستم های دارای
چند Device پرسرعت
بسیار ارزشمند است.

PCIe در لپ تاپ چه نقشی دارد؟

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

برای مثال:

  • GPU مجزا،
  • SSD NVMe،
  • Wi-Fi Controller در برخی طراحی ها،
  • Thunderbolt / USB4 Controller در برخی پلتفرم ها،
  • و سایر کنترلرهای داخلی.

اما تعداد Lane،
Routing
و قابلیت ارتقا
در لپ تاپ
معمولاً توسط طراحی سازنده
محدودتر است.

PCIe در Mini PC و All-in-One چه اهمیتی دارد؟

سیستم های کوچک
فضای PCB
و توان محدودی دارند.

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

  • NVMe،
  • Network،
  • Wireless،
  • External I/O،
  • و سایر Controllerها

تقسیم کند.

به همین دلیل
دو دستگاه با CPU مشابه
می توانند
قابلیت I/O متفاوتی داشته باشند.

نکته مهندسی — Engineering Insight: نام CPU به تنهایی تمام قابلیت PCIe سیستم را مشخص نمی کند

CPU
تعداد و نسل مشخصی
از Laneها را پشتیبانی می کند،
اما سازنده سیستم یا مادربرد
تعیین می کند
این Laneها چگونه Route شوند.

بنابراین:

CPU Capability
≠
Guaranteed System Configuration

برای بررسی واقعی
باید CPU،
Chipset،
مادربرد
و Block Diagram
با هم دیده شوند.

اشتباهات رایج — Common Mistakes: PCI Express
  • یکی دانستن اندازه فیزیکی Slot با تعداد Lane فعال.
  • فرض اینکه x16 همیشه از نظر الکتریکی x16 است.
  • یکی دانستن GT/s با GB/s.
  • نادیده گرفتن Encoding و Protocol Overhead.
  • فرض اینکه PCIe نسل بالاتر همیشه Performance برنامه را دو برابر می کند.
  • نادیده گرفتن اتصال Device به CPU یا Chipset.
  • نادیده گرفتن Shared Chipset Uplink.
  • نادیده گرفتن Lane Sharing مادربرد.
  • نادیده گرفتن Bifurcation در کارت های چند NVMe.
  • فرض اینکه PCIe Switch پهنای باند نامحدود ایجاد می کند.
  • فرض اینکه هر M.2 حتماً NVMe است.
  • یکی دانستن NVMe و PCIe.
  • فرض اینکه x8 شدن GPU الزاماً Performance را نصف می کند.
  • نادیده گرفتن VRAM Capacity هنگام بررسی PCIe GPU.
  • نادیده گرفتن NUMA و Device Locality در Server.
  • نادیده گرفتن Signal Integrity در نسل های سریع PCIe.
  • نادیده گرفتن Manual و Block Diagram مادربرد.

سوالات متداول درباره PCI Express

PCIe Lane چیست؟

واحد پایه ارتباط PCI Express است
که دارای مسیر مستقل
ارسال و دریافت داده است.

PCIe x16 یعنی چه؟

یعنی Link
می تواند از 16 Lane
برای ارتباط استفاده کند.
البته Slot فیزیکی x16
الزاماً 16 Lane الکتریکی ندارد.

GT/s همان GB/s است؟

خیر.
GT/s نرخ Transfer
و GB/s نرخ انتقال حجم داده است.
Encoding و سربارهای دیگر
باید در نظر گرفته شوند.

آیا PCIe 4.0 x8 از PCIe 3.0 x16 کندتر است؟

از نظر پهنای باند نظری Link،
این دو تقریباً مشابه هستند.
Performance واقعی
به Device و Workload بستگی دارد.

آیا GPU x16 در حالت x8 کار می کند؟

در صورت سازگاری سیستم،
بله.
PCIe می تواند Link
را با تعداد Lane کمتر
Negotiation کند.

چرا با نصب M.2 بعضی SATA Portها غیرفعال می شوند؟

زیرا در برخی مادربردها
منابع I/O
میان چند Connector
به اشتراک گذاشته شده اند.

NVMe همان PCIe است؟

خیر.
PCIe زیرساخت ارتباطی است
و NVMe پروتکل و Command Set
مخصوص Storage است.

هر M.2 یک SSD NVMe است؟

خیر.
M.2 Form Factor است
و یک SSD M.2
می تواند از رابط های مختلف
از جمله SATA یا PCIe/NVMe
استفاده کند.

PCIe Bifurcation چیست؟

تقسیم یک Link عریض
مانند x16
به چند Link مستقل کوچک تر
مانند x4+x4+x4+x4 است.

اتصال SSD به CPU بهتر است یا Chipset؟

اتصال مستقیم CPU
معمولاً مسیر مستقیم تری دارد،
اما در بسیاری از کاربری ها
SSD متصل به Chipset نیز
Performance کاملاً مناسبی دارد.
اهمیت تفاوت
به بار همزمان سایر تجهیزات
و Workload بستگی دارد.

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

  • PCI Express: استاندارد ارتباط سریال پرسرعت تجهیزات.
  • PCIe Lane: واحد پایه مسیر ارتباط PCIe.
  • TX: مسیر ارسال داده.
  • RX: مسیر دریافت داده.
  • Differential Pair: جفت مسیر الکتریکی برای انتقال تفاضلی سیگنال.
  • Full Duplex: انتقال همزمان داده در دو جهت.
  • Link Width: تعداد Laneهای تشکیل دهنده Link.
  • Link Training: فرآیند راه اندازی و توافق مشخصات Link.
  • Root Complex: نقطه اتصال CPU و Memory به ساختار PCIe.
  • Endpoint: تجهیز انتهایی PCIe مانند GPU یا NVMe Controller.
  • PCIe Switch: قطعه ای برای اتصال چند Endpoint به ساختار PCIe.
  • GT/s: میلیارد Transfer در ثانیه.
  • Encoding: روش کدگذاری اطلاعات روی Link.
  • 128b/130b: Encoding مورد استفاده در PCIe 3.0 تا 5.0.
  • PAM4: مدولاسیون چهارسطحی مورد استفاده در PCIe 6.0.
  • FLIT: واحد انتقال با اندازه ثابت در معماری جدید PCIe.
  • FEC: تصحیح خطای پیشرو.
  • Bifurcation: تقسیم Laneهای یک Link به چند Link مستقل.
  • Lane Sharing: اشتراک منابع Lane میان چند Connector.
  • Oversubscription: بیشتر بودن ظرفیت اسمی Downstream نسبت به Uplink مشترک.
  • Retimer: قطعه بازسازی کننده سیگنال پرسرعت.
  • Riser: رابط تغییر موقعیت فیزیکی PCIe.
  • BAR: Base Address Register برای Map کردن منابع Device.
  • Resizable BAR: قابلیت تغییر اندازه پنجره Addressable منابع PCIe Device.
  • DMA: انتقال مستقیم داده میان Device و Memory با دخالت کمتر CPU.
  • IOMMU: واحد مدیریت و ترجمه دسترسی I/O به حافظه.
  • Device Affinity: نزدیکی توپولوژیک Device به CPU یا NUMA Node.
  • Peer-to-Peer: ارتباط داده میان PCIe Deviceها با مسیر مستقیم تر.

خلاصه فصل

PCI Express
یکی از مهم ترین
مسیرهای ارتباطی
در کامپیوترهای مدرن است.

ساختار پایه آن
از Laneها تشکیل شده است:

Lane
→
Link
→
Root Complex / Switch
→
Endpoint

پهنای باند Link
به نسل PCIe
و تعداد Laneها بستگی دارد.

PCIe Generation
+
Link Width
→
Available Link Bandwidth

اما Performance واقعی
فقط با عدد x16
یا PCIe 5.0
تعیین نمی شود.

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

Device
→
PCIe Link
→
CPU or Chipset
→
Memory
→
Software

Lane Sharing،
Bifurcation،
Chipset Uplink،
NUMA،
DMA،
IOMMU
و Device Locality
همگی می توانند
روی رفتار واقعی سیستم
اثر بگذارند.


بنابراین هنگام بررسی یک GPU،
SSD، کارت شبکه یا هر تجهیز PCIe،
فقط به نسل PCIe نگاه نکنید؛
باید بدانید Device چند Lane دارد،
این Laneها از کجا می آیند،
به CPU یا Chipset متصل هستند،
با چه تجهیزاتی مشترک اند
و Workload واقعاً چه مقدار داده
از این مسیر عبور می دهد.

مرکز ارتباط
ارتباط با استوک شاپ
پیام به استوک شاپ
دستیار خرید و فروش استوک شاپ
برای شروع گفتگو فقط شماره موبایل خود را تایید کنید.
ورود / ثبت‌نام