وقتی چیپای کامپیوتری با شماره‌گذاری مخفی قوی‌تر میشن!

Fall Back

بیا یه خورده با هم در مورد یه موضوع خیلی جالب دنیای سخت‌افزار حرف بزنیم! می‌خوایم بدونیم چی میشه که هوش مصنوعی‌های جدید و بزرگ دیگه فقط روی یه چیپ یا پردازنده (همون Processor که همه می‌شناسیم) جواب نمی‌دن و باید چندین تا چیپ رو به هم وصل کنیم تا بتونن این همه داده رو پردازش کنن.

خب، وقتی بحث اینه که چند تا چیپ با هم کار کنن و کلی دیتا بینشون رد و بدل شه، یه چیزی وارد داستان میشه به اسم Interconnect. این یعنی شبکه‌ای که چیپ‌ها رو به هم وصل می‌کنه تا بتونن اطلاعاتی که نیاز دارن رو به سرعت و با حجم بالا به هم برسونن.

اینجا چند تا پروتکل معروف وارد می‌شن، مثل CXL (Compute Express Link)، NVLink و UALink. اگه اسم‌ها عجیب به نظر میان، بدون نگران نباش، اینا فقط استانداردهاییه که برای انتقال داده بین چیپ‌ها با سرعت بالا و بسته‌های کوچیک طراحی شدن، تا موقع پردازش مدل‌های بزرگ هوش مصنوعی، هیچ‌چیپ دست خالی نمونه!

اما وقتی سرعت انتقال داده بین این چیپ‌ها خیلی زیاد می‌شه، کم‌کم مشکل‌هایی هم سر و کله‌شون پیدا میشه. مثلاً چی؟ خب، احتمال خطا و اشتباه توی انتقال بیشتر میشه، چون تعداد بسته‌هایی که باید بی‌وقفه برن و بیان بیشتره، و ممکنه بعضی وقتا یه تیکه از این داده‌ها یواشکی حذف بشن و کسی هم خبر نداشته باشه.

برای اینکه جلوی این خطاها رو بگیرن، معمولاً از یه سری ابزار باحال مثل CRC (Cyclic Redundancy Check یا همون بررسی چرخشی خطا، که یه جور کدگذاریه تا بفهمیم دیتا درست رسیده یا نه) و FEC (Forward Error Correction یا تصحیح پیشاپیش خطا، که اجازه میده بعضی خطاها خودکار اصلاح بشن) استفاده می‌کنن. اما وقتی شبکه‌بندی چیپ‌ها پیچیده‌تر میشه و مثلا توی یه شبکه چندنودی (یعنی جایی که چند چیپ یا سرور به هم وصله)، بعضی خطاها دیگه به این راحتی قابل شناسایی نیستن، مخصوصاً وقتی یه بسته یا فلِت (Flit یعنی کوچک‌ترین بسته داده توی این شبکه‌ها) بدون اینکه مشخص باشه، بندازنش دور.

حالا این مقاله یه راه‌حل خلاقانه آورده: مکانیزم جدیدی به اسم Implicit Sequence Number یا به اختصار ISN. بذار راحت‌تر بگم؛ ISN یه روش شیکه که شماره دنباله اطلاعات رو بدون این‌که توی هر بسته داده شماره بذاره، به صورت مخفی و هوشمندانه پیگیری می‌کنه. اینطوری قاچاقی حذف شدن فلِت‌ها خیلی راحت‌تر کشف می‌شه و نظم رسیدن بسته‌ها هم حفظ میشه، بدون اینکه بالای سر هر بسته یه خرج اضافه بزاره و ترافیک شبکه رو سنگین کنه!

تازه بر پایه همین ایده، نویسنده‌ها یه راهکار دیگه هم معرفی کردن به اسم RXL یا Reliability Extended Link. به زبان ساده، RXL یه نسخه‌ی توسعه داده‌شده‌ی همون CXL هست که این قابلیت ISN رو داره. یعنی باهاش می‌تونن چیپ‌های بیشتری رو بدون نگرانی از حذف شدن مخفی فلِت‌ها به هم وصل کنن و همچنان مدار هماهنگی دیتا رو با حداکثر سرعت نگه دارن. مهم‌تر اینکه RXL هنوز با استاندارد موجود CXL سازگاره و مدل بسته‌هاش رو تغییر اساسی نمیده و این یعنی اپگریدش راحت‌تره.

یه نکته جالب دیگه اینه که توی RXL، کد CRC رو هم یه لایه بالاتر منتقل کردن به اسم transport layer. این یعنی علاوه بر خطاگیری اولیه توی خود لینک ها، کل مسیر رو هم تا مقصد چک می‌کنن که یه وقت اُورداده یا شماره بسته بهم نریزه. FEC هم که همچنان وظیفه تصحیح خطاهای ریز رو توی همون لایه پایین‌تر (link-layer یا همون لایه ارتباطی بین چیپ‌ها) داره.

خلاصه وسط این همه تکنیک خفن و راه‌حل‌های عجیب، هدف این مقاله اینه که بشه شبکه ارتباطی بین چیپ‌ها رو بدون اینکه از سرعت داده یا پهنای باند (bandwidth) چیزی کم بشه، هم قوی‌تر کرد، هم گسترش داد و هم خیالتون برای خطاهای پنهونی راحت‌تر بشه.

پس اگر وقت دیگه‌ای بحث سر ساخت کامپیوترهای هیولا واسه مدل‌های سنگین هوش مصنوعیه، بدونید یه عالمه مهندس دارن فکر می‌کنن که حتی یه فلِت هم اشتباهی جا نمونه یا حذف نشه 😉
منبع: +