موازی‌سازی زیرکلمه‌ای: یک دستور چگونه چند مقدار را هم‌زمان پردازش می‌کند

پردازنده‌های امروزی اغلب نیاز دارند یک عملیات ساده یکسان را به‌طور هم‌زمان روی داده‌های کوچک زیادی اعمال کنند، مانند تنظیم روشنایی میلیون‌ها پیکسل یک تصویر. این مقاله موازی‌سازی زیرکلمه‌ای، نحوه تقسیم یک رجیستر پهن به چند لِین کوچک‌تر که در یک دستور واحد پردازش می‌شوند، و چگونگی کاربرد این ایده در سخت‌افزار تجاری از طریق افزونه‌های واقعی مانند SIMD و AVX را توضیح می‌دهد.

پردازش برداریدستورات SIMDموازی‌سازی زیرکلمه‌ای

~3 min read · Updated Sep 6, 2026

مسئله: تکرار یک عملیات یکسان بارها

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

ایده اصلی: تقسیم یک رجیستر پهن به لِین‌ها

Subword Parallelism این مسئله را با رفتار با یک رجیستر پهن به‌گونه‌ای که گویی چندین مقدار کوچک‌تر مستقل کنار هم بسته‌بندی شده‌اند، و انجام همان عملیات روی همه آن‌ها در یک دستور واحد، حل می‌کند.

برای مثال، یک رجیستر ۶۴ بیتی می‌تواند به‌جای یک عدد بزرگ، به‌عنوان چهار مقدار جداگانه ۱۶ بیتی در نظر گرفته شود:

رجیستر به‌صورت 4 لِین 16 بیتی:
[ Lane 3 | Lane 2 | Lane 1 | Lane 0 ]

یک دستور جمع موازی زیرکلمه‌ای واحد سپس می‌تواند لِین‌های متناظر را به‌طور مستقل و هم‌زمان جمع کند، و چهار نتیجه جداگانه در زمانی که در غیر این صورت برای اجرای یک جمع ساده لازم بود تولید کند.

چرا این تکنیک SIMD نامیده می‌شود

این تکنیک کلی SIMD (Single Instruction, Multiple Data) نامیده می‌شود: یک دستور صادر می‌شود، اما روی چند قطعه داده مستقل به‌طور هم‌زمان عمل می‌کند، به‌جای حالت معمول یک دستور که روی یک مقدار تکی عمل می‌کند.

واقعیت‌های عملی: افزونه‌های SIMD در پردازنده‌های تجاری

خانواده‌های اصلی پردازنده افزونه‌های SIMD خودشان را برای بهره‌برداری از این ایده در مقیاس بزرگ پیاده‌سازی می‌کنند. در معماری x86، افزونه‌هایی مانند SSE (Streaming SIMD Extensions) و بعدها AVX (Advanced Vector Extensions) رجیسترهای پهنی معرفی کردند، برخی تا ۵۱۲ بیت، که به‌طور خاص برای نگه‌داشتن مقادیر کوچک زیادی که با هم در یک دستور واحد پردازش می‌شوند طراحی شده‌اند. این افزونه‌ها به‌طور گسترده برای تسریع کدگذاری چندرسانه‌ای، محاسبات علمی، و بارهای کاری یادگیری ماشین استفاده می‌شوند.

چرا موازی‌سازی زیرکلمه‌ای اهمیت دارد

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

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

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

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

Continue

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

یک کلاستر از ماشین‌ها فقط زمانی مفید است که بتواند به‌طور کارآمد هم داخلی و هم با دنیای بیرون ارتباط برقرار کند. این مقاله لایه‌های شبکه‌سازی درگیر در ارتباط کلاستر، مبادلات بین تأخیر و پهنای باند در مقیاس، و اینکه کلاسترها چگونه به شبکه‌های خارجی و کاربران متصل می‌شوند را پوشش می‌دهد.

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

فراتر از یک تراشه واحد، موازی‌سازی به کل ساختمان‌های پر از کامپیوترهای مستقلی که با هم کار می‌کنند گسترش می‌یابد. این مقاله گذار از چندپردازنده‌سازی حافظه مشترک به کلاسترهایی از ماشین‌های جداگانه را توضیح می‌دهد، مفهوم محاسبات در مقیاس انبار را معرفی می‌کند، و توپولوژی‌های شبکه که این ماشین‌های مستقل را به‌طور کارآمد متصل می‌کنند را پوشش می‌دهد.

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

یک GPU ایده SIMD که پیش‌تر در این مجموعه پوشش داده شد را به یک مقیاس افراطی می‌برد، و هزاران رشته سبک را به‌طور هم‌زمان اجرا می‌کند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح می‌دهد چرا GPU ها از نظر معماری این‌قدر با CPU متفاوت‌اند، مدل اجرای رشته آن‌ها چگونه کار می‌کند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی می‌برند.

Continue