در اواخر دههی ۱۹۹۰ و اوایل دههی ۲۰۰۰ داشتن کامپیوترهایی با دو پردازندهی مرکزی (CPU) چندان غیرمعمول نبود؛ مثلا کاربران میتوانستند یک کامپیوتر با دو پردازندهی اینتل پنتیوم ۳ تهیه کنند و مادربردهای آن زمان نیز با بهرهمندی از دو سوکت پردازنده به خوبی از این پیکربندی پشتیبانی میکردند. البته این سیستمها قیمت بالایی داشتند و بیشتر مورد توجه علاقهمندان حرفهای قرار میگرفتند. اما چه شد که امروزه دیگر نمیتوان مانند گذشته بهراحتی یک پیسی با دو CPU پیدا کرد؟
تا قبل از پیدایش پردازش چندرشتهای، استفاده از دو CPU اتفاق نادری نبود؛ اما امروزه دیگر نیازی به آن نیست. برای مثال، پردازندهی پنتیوم ۳ باوجود قدرت بالا، تکهستهای بود. همین موضوع باعث میشد که نتوان چندین فرآیند را بهطور همزمان روی آن اجرا کرد، زیرا پنتیوم ۳ در لحظه فقط یک رشتهی پردازشی در اختیار سیستم قرار میداد.
تا قبل از پیدایش پردازش چندرشتهای، استفاده از دو CPU رایج بود
بسیاری از مفاهیم بنیادی سیستمعاملهای امروزی، مانند زمانبندی پردازشها (scheduling)، تعویض زمینه (context switching)، پایپلاینینگ (pipelining) و مدیریت حافظه، در دوران پردازندههای پنتیوم ۳ نیز استفاده میشدند. با این حال، تفاوت اصلی در محدودیتهای چشمگیری بود که معماری تکرشتهای آن پردازندهها ایجاد میکرد.
Intel
برای عبور از این محدودیت، فناوری پردازش موازی متقارن (Symmetric Multiprocessing یا SMP) معرفی شد. این معماری اجازه میداد دو پردازندهی پنتیوم ۳ روی یک سیستم واحد نصب شوند و به یک حافظهی مشترک که توسط سیستمعامل مدیریت میشد، دسترسی داشته باشند. در این ساختار، هر دو CPU قادر به اجرای رشتهها به صورت موازی و کاملاً مستقل از یکدیگر بودند و بدینترتیب، توان اجرایی سیستم دو برابر میشد. البته برای استفاده از این قابلیت، هم پردازندهها و هم برنامههایی که در سیستم اجرا میشدند باید از آن پشتیبانی میکردند.
بهرهمندی از این سختافزار دو پردازندهای، کاملاً به نرمافزار بستگی داشت و برنامههایی که برای اجرای موازی و چندرشتهای توسعه یافته بودند، افزایش سرعت قابلتوجهی را تجربه میکردند. خود سیستمعاملهای ویندوز و لینوکس در آن زمان از این قابلیت پشتیبانی میکردند و میتوانستند بار پردازشی را بین دو CPU تقسیم کنند. این امر موجب افزایش سرعت در محیط سیستمعامل میشد، اما اگر برنامهای از آن پشتیبانی نمیکرد، کاربران هیچ تفاوتی در سرعت اجرا احساس نمیکردند.
امروزه بهلطف فراگیر شدن پردازندههای چندهستهای و چندرشتهای، دیگر نیازی به نصب دو CPU جداگانه روی یک سیستم نیست. البته در دنیای سرورها، هنوز هم سیستمهایی با چند پردازندهی اینتل Core Xeon یافت میشود، اما دنیای پیسیها به کلی با این معماری خداحافظی کرده و پردازندههای واحد و قدرتمند روی آورده است.
در چه مواردی از دو CPU روی یک مادربورد استفاده میشود؟
امروزه، تقریبا تنها جایی که سیستمهای دو پردازندهای را میبینیم، در دنیای سرورهاست. دلیل اصلی این موضوع بیش از آنکه قدرت پردازش باشد، به نیاز شدید به پهنای باند حافظه برمیگردد. در سرورهای مدرن، هر پردازنده، کنترلر حافظهی خودش را دارد. این ساختار توسط فناوری NUMA (قابلیت دسترسی غیریکپارچه به حافظه) مدیریت میشود که به هر پردازنده اجازه میدهد یک «حافظهی خانگی» داشته باشد. بهعبارت دیگر، بانک حافظهای که به هر پردازنده اختصاص دارد، به آن نزدیکتر است و در نتیجه، هر CPU با سرعت بسیار بالاتری به حافظه محلی خود دسترسی پیدا میکند.
هنوز میتوان سرورهایی پیدا کرد که از چند پردازندهی اینتل Core Xeon پشتیبانی کنند
البته باید توجه داشت که در این سیستمها، حافظهی کلی همچنان مشترک است. این یعنی یک پردازنده میتواند به حافظهی نزدیک به پردازندهی دیگر دسترسی پیدا کند، اما برای این کار باید از یک اتصال و تقاطع سختافزاری عبور کند.
در سیستمهای مبتنیبر پردازندههای اینتل، مدیریت این کار برعهدهی ابزاری به نام Intel Ultra Path Interconnect یا UPI است. وظیفهی UPI این است که ارتباطی پایدار و بدون وقفه بین دو پردازنده، برقرار کند، اما این «سفر داده» بدون هزینه نیست؛ دسترسی به حافظهی پردازندهی همسایه همیشه کندتر از دسترسی به حافظه نزدیک و محلیِ خودِ پردازنده خواهد بود و این تأخیر اجتنابناپذیر است.
XDAdevelopers
برای مقابله با این تاخیر، برنامهها و سیستمعاملهای پیشرفته سعی میکنند بهطور هوشمندانهای، وظایف پردازشی را همراستا کنند؛ به این معنی که فرآیندهایی که روی پردازندهی شمارهی یک اجرا میشوند، ترجیحا از بانک حافظهی همان پردازنده استفاده کنند تا پردازنده مجبور نباشد برای دسترسی به دادهها دائماً به سراغ حافظهی همسایه برود.
این رویکرد بهینهسازی مبتنیبر NUMA، در کارهای سنگین و حساسی مانند مجازیسازی، پایگاههای دادهی بسیار بزرگ و محاسبات با کارایی بالا (HPC) بسیار مهم است. اما برای کاربریهای عادی، این پیچیدگیها اهمیت چندانی ندارد.
چرا دیگر به کامپیوتری با دو CPU نیاز نداریم؟
امروزه که هر پردازندهی معمولی چندین هسته و هر هسته نیز چندین رشتهی پردازشی دارد، استفاده از دو پردازنده در یک کامپیوتر شخصی، دیگر منطقی نیست؛ چراکه این سیستمها در گذشته تنها برای دور زدن محدودیت یک پردازنده با یک هسته طراحی شده بودند که باعث میشد در هر لحظه تنها یک پردازش انجام شود. از آنجایی که این محدودیت اساسی با ظهور پردازندههای چند هستهای از بین رفته، راه حل آن نیز منسوخ شده است.
برای علاقهمندان به سختافزارهای خاص، تهیه یک سرور دست دوم با دو پردازندهی Xeon میتواند پروژهی سرگرمکنندهای باشد؛ اما فراتر از جنبهی سرگرمی، توجیه عملی برای این کار وجود ندارد، چراکه این سیستمها پرمصرف، پرسروصدا و اغلب ناکارآمدتر از یک کامپیوتر مدرن هستند.
در مقایسه، یک سیستم متوسط امروزی انتخاب هوشمندانهتری است. دوران نیاز به کامپیوترهایی با دو پردازنده برای اجرای وظایف پردازشی سنگین (حداقل با استانداردهای آن زمان) گذشته است و خوشبختانه، این تغییر از هر لحاظ به نفع ما مصرفکنندگان بوده است.
source