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

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

موازی‌سازی سطح دستورپردازنده‌های سوپراسکالرصدور چندگانه

~3 min read · Updated Sep 6, 2026

محدودیت یک پایپ‌لاین پایه

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

فراتر رفتن از یک دستور در هر سیکل

Instruction-Level Parallelism (ILP) به تکنیک‌هایی اشاره دارد که به یک پردازنده اجازه می‌دهند بیش از یک دستور را در همان سیکل ساعت اجرا کند، با تکرار منابع سخت‌افزاری و صادر کردن چند دستور هم‌زمان به پایپ‌لاین به‌جای یکی‌یکی.

صدور چندگانه: تکرار جلوی پایپ‌لاین

یک پردازنده قادر به این کار Multiple-Issue یا Superscalar نامیده می‌شود. برای پشتیبانی از صدور بیش از یک دستور در هر سیکل، سخت‌افزار منابع کلیدی را تکرار می‌کند: چند ALU اجازه می‌دهند بیش از یک عملیات محاسباتی به‌طور هم‌زمان اجرا شود، پورت‌های خواندن و نوشتن اضافی روی فایل رجیستر اجازه می‌دهند عملوندهای بیشتری هم‌زمان دسترسی‌پذیر باشند، و مرحله واکشی دستور باید بیش از یک دستور را در هر سیکل از حافظه بازیابی کند.

پایپ‌لاین تک‌صدور: 1 دستور در هر مرحله در هر سیکل
پایپ‌لاین دوصدور: تا 2 دستور در هر مرحله در هر سیکل،
                    نیازمند 2 ALU، پورت‌های اضافی فایل رجیستر،
                    و واکشی دستور پهن‌تر

زمان‌بندی ایستا در مقابل پویا

تصمیم‌گیری درباره اینکه کدام دستورات می‌توانند با امنیت در همان سیکل با هم اجرا شوند می‌تواند به دو روش متفاوت رخ دهد. Static Scheduling از پیش توسط کامپایلر انجام می‌شود، و دستورات را در ترتیبی که شناخته‌شده برای اجتناب از تعارضات است پیش از اینکه برنامه اصلاً اجرا شود، مرتب می‌کند. Dynamic Scheduling توسط سخت‌افزار در زمان اجرا انجام می‌شود، که دستورات را همان‌طور که می‌رسند بررسی می‌کند و بی‌درنگ تصمیم می‌گیرد کدام‌ها می‌توانند با هم صادر شوند، به قیمت پیچیدگی سخت‌افزاری اضافی برای گرفتن این تصمیمات به‌سرعت.

چرا وابستگی‌ها محدود می‌کنند چقدر موازی‌سازی ممکن است

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

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

چرا این رویکرد محدودیت‌های عملی دارد

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

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