payamvha/North_RAG huggingface dataset:
پیچیده شده‌اند، باعث می‌شود تا نگه داشتن سیگنال ساعت به شکل هم فاز در تمام بخش‌های واحد، دشوار شود. این امر باعث شده‌است تا در بسیاری از CPUهای جدید، چندین سیگنال ساعت مشابه فراهم شود، تا مانع از این شود که یک سیگنال منفرد آن‌قدر تأخیر پیدا کند که موجب اختلال عملکرد پردازنده شود. مشکل مهم دیگری که به‌دنبال افزایش چشمگیر سرعت ساعت به وجود می‌آید، مقدار گرمایی است که توسط پردازنده آزاد می‌شود. تغییر مداوم ساعت موجب می‌شود تا بسیاری از قطعات، صرف نظر از این‌که آیا در آن لحظه استفاده می‌شوند یا خیر، دچار سوئیچ
آیا در آن لحظه استفاده می‌شوند یا خیر، دچار سوئیچ شوند. به‌طور کلی، قطعه‌ای که در حال سوئیچ است، انرژی بیشتری را در مقایسه با عنصری که در وضعیت بدون تغییر است، مصرف می‌کنند؛ بنابراین، با افزایش سرعت ساعت و در نتیجه افزایش مصرف انرژی پردازنده، نیاز به انتشار گرمای بیشتری از طریق روش‌های خنک کنندهٔ پردازنده است. یک روش برای مقابله با سوئیچ‌های بی‌مورد، کلاک گیتینگ (Clock Gating) نام دارد که عبارت است از خاموش کردن سیگنال ساعت برای اجزای بلا استفاده (یعنی، عملاً غیرفعال کردن آن‌ها). با این حال، پیاده‌سازی این
غیرفعال کردن آن‌ها). با این حال، پیاده‌سازی این روش نیز معمولاً دشوار است و استفادهٔ رایجی ندارد، به جز در طراحی‌های بسیار کم‌مصرف. یک طراحی اخیر CPU که قابل ذکر است و از روش کلاک گیتینگ استفادهٔ زیادی می‌کند، پردازندهٔ زنون (Xenon) (که برحسب دستورالعمل‌های پاورپی‌سی شرکت آی‌بی‌ام طراحی شده) در ایکس‌باکس ۳۶۰ است که از این طریق، مصرف انرژی ایکس باکس ۳۶۰ به‌طور چشمگیری کاهش پیدا کرده‌است. شیوهٔ دیگر برای مقابله با بخشی از مشکل سیگنال ساعت سرتاسری، برداشتن سیگنال ساعت به صورت یکپارچه است. اگرچه برداشتن سیگنال
ساعت به صورت یکپارچه است. اگرچه برداشتن سیگنال ساعت سرتاسری، باعث پیچیده‌تر شدن فرایند طراحی به طرق مختلف می‌شود، با این حال، طراحی‌های ناهمگام (یا بدون ساعت) در مقایسه با طراحی‌های مشابه همگام، برتری قابل توجهی از لحاظ مصرف انرژی و انتشار گرما دارند. اگرچه تا حدودی ناشایع است، اما پردازنده‌هایی تماماً ناهمگام ساخته شده‌اند که از سیگنال ساعت سرتاسری استفاده نمی‌کنند. دو مثال قابل ذکر در این رابطه عبارت‌اند از: AMULET منطبق بر ARM و MIPS R3000 منطبق بر MiniMIPS. برخی طراحی‌های CPU، به جای این‌که سیگنال ساعت
برخی طراحی‌های CPU، به جای این‌که سیگنال ساعت را به صورت کلی حذف کنند، فقط بخش‌هایی از سیستم مورد نظر را ناهمگام می‌کنند، مثلاً از ALUهای ناهمگام همراه با خط تولید سوپراسکالر، برای دستیابی به برخی فواید عملکردی در محاسبات استفاده می‌کنند. اگرچه در مجموع، مشخص نیست که آیا طراحی‌های تماماً ناهمگام می‌توانند در حد قابل مقایسه یا بهتری در مقایسه با طراحی‌های همگام عمل کنند یا خیر، اما مشخص شده‌است که حداقل در محاسبات ریاضی ساده‌تر، کارایی بالاتری دارند. این ویژگی، همراه با برتری آنها در مصرف انرژی و انتشار
ویژگی، همراه با برتری آنها در مصرف انرژی و انتشار گرما، آن‌ها را تبدیل به گزینهٔ مناسبی برای کامپیوترهای نهفته کرده‌است. ماژول تنظیم‌کنندهٔ ولتاژ. بسیاری از CPUهای جدید، دارای یک قطعهٔ مجزا برای مدیریت انرژی هستند، که در دای ادغام شده‌است، و وظیفهٔ آن، تنظیم کردن منبع ولتاژ به صورت دلخواه برای مدار CPU است. و بدین طریق، تعادلی را بین عملکرد و مصرف انرژی برقرار می‌کند. محدودهٔ اعداد صحیح. هر پردازنده مقادیر عددی را به شیوه‌ای خاص نمایش می‌دهد. برای مثال برخی کامپیوترهای دیجیتال قدیمی اعداد را به شکل مقادیر
کامپیوترهای دیجیتال قدیمی اعداد را به شکل مقادیر سیستم عددی ده‌دهی (پایه ۱۰) نشان می‌دادند و برخی دیگر از کامپیوترها از نمایش‌های غیرمعمول نظیر، ternary (پایه ۳) استفاده کرده‌اند. تقریباً تمامی پردازنده‌های جدید، اعداد را به فرم باینری (دودویی) نشان می‌دهند، که در آن هر رقم به وسیله یک کمیت فیزیکی دو مقداری، نظیر ولتاژ «بالا» یا «پایین» نمایش داده می‌شود. اندازه و دقت اعداد صحیحی که یک پردازنده می‌تواند نمایش دهد، مربوط به نمایش عددی می‌شود. در رابطه با یک پردازنده باینری، این معیارها به وسیلهٔ تعداد
یک پردازنده باینری، این معیارها به وسیلهٔ تعداد بیت‌هایی (رقم‌های چشمگیر یک عدد صحیح کدگذاری شده به طریق باینری) که پردازنده می‌تواند در یک عملیات پردازش کند، اندازه‌گیری می‌شود، که در واقع، اندازهٔ کلمه، پهنای بیت، پهنای مسیر داده، دقت عدد صحیح، یا اندازه عدد صحیح نام دارد. اندازهٔ عدد صحیح یک پردازنده، محدودهٔ مقادیر صحیحی که پردازنده می‌تواند به‌طور مستقیم روی آن عملیات انجام دهد را مشخص می‌کند. برای مثال، یک پردازندهٔ ۸ بیتی می‌تواند به‌طور مستقیم، اعداد صحیحی را که به شکل ۸ بیت نمایش داده شده‌اند و
صحیحی را که به شکل ۸ بیت نمایش داده شده‌اند و دارای یک محدودهٔ مقادیر اعداد صحیح گسسته به میزان ۲۵۶ (28) هستند، دستکاری کند. کمحدوده اعداد صحیح، همچنین می‌تواند روی تعداد مکان‌هایی از حافظه که پردازنده می‌تواند به صورت مستقیم آدرس دهی کند تأثیر بگذارد (یک آدرس یک مقدار صحیح است که نشان دهنده یک مکان خاص از حافظه است). برای مثال اگر یک پردازنده باینری، از ۳۲ بیت برای نمایش یک آدرس حافظه استفاده کند، آنگاه می‌تواند به‌طور مستقیم 28 مکان حافظه را آدرس‌دهی کند. برای دور زدن این محدودیت، و به دلایل مختلف دیگر،
برای دور زدن این محدودیت، و به دلایل مختلف دیگر، برخی پردازنده‌ها از مکانیسم‌هایی (نظیر، bank switching) استفاده می‌کنند تا بتوانند حافظه بیشتری را آدرس‌دهی کنند.پردازنده‌هایی که دارای اندازه‌های کلمه بزرگتر هستند، نیاز به مداربندی بیشتر دارند و در نتیجه از لحاظ فیزیکی بزرگتر هستند و هزینهٔ بیشتری می‌برند و انرژی بیشتری مصرف می‌کنند (و بنابراین گرمای بیشتری تولید می‌کنند). در نتیجه، در کاربری‌های جدید، به‌طور رایج از میکروکنترلرهای ۴ یا ۸ بیتی استفاده می‌شود، با وجود اینکه پردازنده‌هایی با اندازهٔ کلمه
با وجود اینکه پردازنده‌هایی با اندازهٔ کلمه بسیار بزرگتر (همچون ۱۶، ۳۲، ۶۴ و حتی ۱۲۸ وجود دارند). با این حال، زمانیکه نیاز به عملکرد بالا داریم، مزایای اندازهٔ بزرگ‌تر کلمه (محدوده‌های داده بزرگ‌تر و فضاهای آدرس بزرگتر) ممکن است بر معایب آن چیره شود. مسیرهای دادهٔ داخلی یک پردازنده می‌تواند باریک‌تر از اندازه کلمه باشد، تا اندازه و هزینه کاهش یابد. برای مثال، اگرچه IBM System/360، یک مجموعه دستورالعمل ۳۲ بیتی بود، اما System/360 Model 30 و Model 40 دارای مسیرهای دادهٔ ۸ بیتی در واحد محاسبه و منطق بودند، به
دادهٔ ۸ بیتی در واحد محاسبه و منطق بودند، به گونه‌ای که یک عمل جمع ۳۲ بیتی، نیازمند چهار چرخه بود که برای هر ۸ بیت یک عملوند، یک چرخه لازم بود. اگرچه مجموعه دستورالعمل Motorola 68، یک مجموعه دستورالعمل ۳۲ بیتی بود، اما Motorola 68000 و Motorola 68010 دارای مسیرهای داده ۱۶ بیتی در واحد محاسبه و منطق بود، به گونه‌ای که یک عمل جمع ۳۲ بیتی نیازمند دو چرخه بود. برای بهره‌گیری از برخی از مزایای طول‌های کمتر و بیشتر بیت، بسیاری از مجموعه دستورالعمل‌ها دارای پهناهای بیت متفاوتی برای دادهٔ صحیح و ممیز شناور هستند.
بیت متفاوتی برای دادهٔ صحیح و ممیز شناور هستند. در این حالت، پردازنده‌هایی که از این مجموعه دستورالعمل‌ها استفاده می‌کنند، می‌توانند پهناهای بیت متفاوتی برای قسمت‌های مختلف کامپیوتر داشته باشند. برای مثال، مجموعه دستورالعمل System/360 شرکت آی‌بی‌ام اساساً ۳۲ بیتی بود، اما از مقادیر ممیز شناور ۶۴ بیتی هم پشتیبانی می‌کرد تا دقت و محدودهٔ بیشتری را در رابطه با اعداد ممیز شناور فراهم کند. مدل System/360 Model 65 دارای یک جمع‌کننده ۸ بیتی برای محاسبات دسیمال و باینری ممیز ثابت بود و همزمان دارای یک جمع‌کننده ۶۰
ممیز ثابت بود و همزمان دارای یک جمع‌کننده ۶۰ بیتی برای محاسبات ممیز شناور نیز بود. بسیاری از طراحی‌های بعدی پردازنده از پهنای بیت ترکیبی مشابهی استفاده می‌کنند. علی‌الخصوص، زمانی که پردازنده برای اهداف عمومی استفاده می‌شود، باید یک تعادل منطقی بین قابلیت صحیح و نقطه شناور برقرار شود. موازی‌سازی. توصیفی که از عملکرد پایه‌ای یک پردازنده در بخش قبلی شد، ساده‌ترین فرمی است که یک پردازنده می‌تواند داشته باشد. این نوع از پردازنده که معمولاً آن را ساب اسکالر(subscalar) می‌نامند، یک دستور را روی یک یا دو قطعهٔ
می‌نامند، یک دستور را روی یک یا دو قطعهٔ داده، در یک زمان اجرا می‌کند. این فرایند موجب یک ناکارآمدی ذاتی در پردازنده‌های ساب اسکالر می‌شود. از آنجایی که فقط یک دستور در یک زمان اجرا می‌شود، کل پردازنده باید منتظر بماند تا آن دستور کامل شود تا بتواند به دستور بعدی برود. در نتیجه پردازنده‌های ساب اسکالر، در رابطه با دستوراتی که بیش از یک پالس ساعت (چرخهٔ ساعت) برای اجرا شدن کامل طول می‌کشند، معطل می‌ماند. حتی اضافه کردن یک واحد اجرایی دیگر بهبود زیادی روی عملکرد ندارد، و در این حالت به جای اینکه یک مسیر معطل
ندارد، و در این حالت به جای اینکه یک مسیر معطل باشد، دو مسیر معطل می‌ماند و تعداد ترانزیستورهای بلااستفاده افزایش می‌یابد. این طراحی، که در آن منابع اجرایی پردازنده می‌تواند فقط یک دستور در یک زمان اجرا کند، قادر خواهد بود تا نهایتاً فقط به عملکردی در حد اسکالر (یک دستور در یک چرخهٔ ساعت) برسد. با این وجود عملکرد آن تقریباً همیشه ساب اسکالر (کمتر از یک دستور در یک چرخه) است. تلاش برای رسیدن به عملکردی در حد اسکالر یا بهتر از آن منجر به پیدایش انواعی از روش‌های طراحی شد که باعث می‌شود تا پردازنده، کمتر به
طراحی شد که باعث می‌شود تا پردازنده، کمتر به صورت خطی و بیشتر به صورت موازی عمل کند. در هنگام استفاده از اصطلاح موازی‌سازی برای پردازنده‌ها، دو اصطلاح به‌طور کلی، برای طبقه‌بندی این تکنیک‌های طراحی استفاده می‌شود: موازی سازی در سطح دستورالعمل. یکی از ساده‌ترین روش‌های مورد استفاده برای افزایش موازی‌سازی این است که اولین مراحل واکشی و رمزگشایی دستورالعمل را پیش از اینکه اجرای دستورالعمل قبلی تمام شود، شروع کنیم. این روش ساده‌ترین فرم یک تکنیک بنام خط لوله دستورالعمل (instruction pipelining) است و در تقریباً
(instruction pipelining) است و در تقریباً تمام پردازنده‌های عمومی جدید استفاده می‌شود. خط لوله دستورالعمل، با شکستن مسیر اجرا و تبدیل آن به مراحل جداگانه، باعث می‌شود تا در هر زمان بیش از یک دستورالعمل اجرا شود. این جدا کردن را می‌توان با خط مونتاژ مقایسه کرد که در آن یک دستور در هر مرحله کاملتر می‌شود، تا اینکه کلا از خط خارج شود. با این وجود، روش خط لوله، ممکن است موقعیتی را به وجود آورد که در آن نتایج عملیات قبلی برای کامل کردن عملیات بعدی لازم است. این وضعیت را معمولاً تقابل ناشی از وابستگی می‌نامند.
وضعیت را معمولاً تقابل ناشی از وابستگی می‌نامند. برای جلوگیری از این وضعیت، باید توجه بیشتری شود تا در صورت رخ دادن این شرایط، بخشی از خط لوله دستورالعمل را به تأخیر بیاندازیم. به‌طور طبیعی، برآورده کردن این شرایط نیازمند مداربندی اضافه است، بنابراین پردازنده‌های خط مونتاژی، پیچیده‌تر از انواع ساب اسکالر هستند (البته، خیلی پیچیده‌تر نیستند). یک پردازنده از نوع خط لوله، می‌تواند بسیار نزدیک به حد اسکالر شود، در این شرایط تنها مانع موجود وقفه‌ها (دستورالعملی که بیش از یک چرخهٔ ساعتی در یک مرحله طول می‌کشد)
که بیش از یک چرخهٔ ساعتی در یک مرحله طول می‌کشد) هستند. پیشرفت بیشتر در زمینهٔ ایدهٔ خط لوله، منجر به ابداع روشی شده‌است که زمان بیکاری اجزای پردازنده را حتی به میزان بیشتری کاهش می‌دهد. طراحی‌هایی که اصطلاحاً سوپراسکالر(superscalar) هستند شامل یک خط لوله دستورالعمل طولانی و چندین واحد اجرایی مشابه از جمله: واحدهای بارگزاری/ذخیره‌سازی، واحدهای محاسبه و منطق، واحدهای ممیز شناور، و واحدهای تولید آدرس هستند. در یک خط لوله سوپراسکالر، دستورالعمل‌های متعددی خوانده شده و به توزیع کننده ها(dispatcher) می‌روند،
شده و به توزیع کننده ها(dispatcher) می‌روند، توزیع کننده تصمیم می‌گیرد که آیا دستورالعمل‌های مذکور می‌توانند به‌طور موازی (همزمان) اجرا شوند یا نه. در صورتی که پاسخ مثبت باشد، دستورالعمل‌ها در واحدهای اجرایی موجود توزیع (dispatch) می‌شوند. این کار باعث می‌شود تا چندین دستورالعمل به‌طور هم‌زمان اجرا شوند. به‌طور کلی، هرقدر یک پردازندهٔ سوپراسکالر بتواند دستورالعمل‌های بیشتری را به‌طور هم‌زمان به واحدهای اجرایی در حال انتظار ارسال کند، دستورهای بیشتری در یک چرخهٔ مشخص اجرا می‌شوند. بیشترین دشواری در طراحی یک
مشخص اجرا می‌شوند. بیشترین دشواری در طراحی یک معماری سوپراسکالر پردازنده مربوط به ساخت یک توزیع‌کنندهٔ مؤثر است. توزیع کننده، باید قادر باشد تا به سرعت و بدون اشتباه مشخص کند که آیا دستورالعمل‌ها می‌توانند به‌طور موازی اجرا شوند، و آن‌ها را به شیوه‌ای توزیع کند تا بیشترین واحدهای اجرایی ممکن را از بیکاری خارج کند. این امر نیازمند این است که خط لوله دستورالعمل بیشتر مواقع ممکن پر باشد و معماری‌های سوپراسکالر را نیازمند مقادیر چشمگیری از حافظه نهان پردازنده(cache) می‌کند. همچنین، در این شرایط نیاز به
می‌کند. همچنین، در این شرایط نیاز به تکنیک‌های حیاتی پیشگیری از خطر همچون: پیش‌بینی انشعاب، اجرای حدسی، تغییر نام رجیستر، اجرای خارج از نوبت و حافظه تراکنشی، برای حفظ سطوح بالای کارایی داریم. پردازنده با تلاش برای پیش‌بینی کردن اینکه کدام شاخه یا مسیر در یک دستورالعمل شرطی انتخاب خواهد شد، می‌تواند تعداد دفعاتی را که تمام خط تولید باید معطل بماند تا یک دستورالعمل شرطی کامل شود، به حداقل برساند. اجرای خارج از نوبت تا حدودی ترتیب اجرای دستورالعمل‌ها را تغییر می‌دهد تا تاخیرهای ناشی از وابستگی‌های داده را
می‌دهد تا تاخیرهای ناشی از وابستگی‌های داده را کاهش دهد. اجرای حدسی، با اجرا کردن بخش‌هایی از کد که ممکن است بعد از کامل شدن یک عملیات شرطی مورد نیاز نباشد، معمولاً موجب کمی افزایش در کارایی می‌شود. اجرای خارج از نوبت تا حدودی ترتیب اجرای دستورالعمل‌ها را تغییر می‌دهد تا تاخیرهای ناشی از وابستگی‌های داده را کاهش دهد. همچنین، در مورد جریان "یک دستورالعمل، جریان چندین داده"- که در آن مقدار زیادی داده مشابه باید پردازش شود- پردازنده‌های جدید می‌توانند بخش‌هایی از خط لوله را غیرفعال کنند تا، هنگامی که یک
از خط لوله را غیرفعال کنند تا، هنگامی که یک دستورالعمل به دفعات زیادی اجرا می‌شود، پردازنده بتواند مراحل واکشی و رمزگشایی را نادیده بگیرد و بنابراین باعث افزایش چشمگیر کارایی در مواقع خاصی، خصوصاً در موتورهای برنامه ای یکنواخت همچون نرم‌افزار ایجاد ویدئو و پردازش تصویر شود. در مواردی که بخشی از پردازنده سوپر اسکالر است و بخش‌هایی نیست، آن بخشی که سوپراسکالر نیست، دچار افت عملکرد به دلیل معطلی‌های زمان‌بندی می‌شود. اینتل پنتیوم P5 دارای دو واحد محاسبه و منطق سوپر اسکالر بود که هر کدام از آنها می‌توانستند یک
سوپر اسکالر بود که هر کدام از آنها می‌توانستند یک دستورالعمل را در هر چرخه ساعت بپذیرند، اما واحد ممیز شناور آن نمی‌توانست یک دستورالعمل را در هر چرخه ساعت بپذیرد؛ بنابراین، ALU در رابطه با اعداد صحیح سوپراسکالر بود، اما در رابطه با ممیز شناور سوپراسکالر نبود. معماری نسل بعد از P5، یعنی P6 قابلیت‌های سوپراسکالر را به ویژگی‌های ممیز شناور خود اضافه کرد و بنابراین باعث افزایش چشمگیر در عملکرد دستورالعمل ممیز شناور شد. هم طراحی خط لوله ساده و هم طراحی سوپراسکالر، با فراهم آوردن امکان کامل کردن اجرای
سوپراسکالر، با فراهم آوردن امکان کامل کردن اجرای دستورالعمل‌ها با سرعتی فراتر از یک دستورالعمل در هر چرخه ساعت(ILP) برای یک پردازنده منفرد، موازی سازی سطح دستورالعمل را در CPU افزایش می‌دهند. اکثر طراحی‌های جدید پردازنده حداقل تا حدودی سوپراسکالر هستند و تقریباً تمام پردازنده‌های عمومی که در دهه اخیر طراحی شده‌اند سوپراسکالر هستند. در سال‌های بعدی، بخشی از تأکید در طراحی کامپیوترهای دارای سطوح بالای موازی سازی در سطح دستورالعمل، از سخت‌افزار پردازنده دور شده و بر روی رابط نرم‌افزاری یا همان معماری مجموعه
و بر روی رابط نرم‌افزاری یا همان معماری مجموعه دستورالعمل (ISA) متمرکز شده‌است. رویکرد کلمه دستورالعمل بسیار طولانی (VLIW) باعث می‌شود تا مقداری از موازی سازی در سطح-دستورالعمل به صورت ضمنی و مستقیماً توسط نرم‌افزار انجام گیرد، که منجر به کاهش بار کاری پردازنده برای افزایش ILP می‌شود و بدین گونه پیچیدگی طراحی کاهش یابد. موازی‌سازی در سطح وظایف. رویکرد دیگر برای بهبود کارایی، اجرای چندین ریسمان یا فرایند به صورت موازی است. این بخش از حوزهٔ تحقیقات را رایانش موازی گویند. در تقسیم‌بندی فلین، این رویکرد "جریان
گویند. در تقسیم‌بندی فلین، این رویکرد "جریان چندین دستورالعمل، جریان چندین داده" (multiple instruction stream, multiple data stream) نام دارد. یک تکنولوژی که با این هدف استفاده شد، چندپردازشی (multiprocessing) بود. در ابتدا، فرم محبوب این تکنولوژی، "چندپردازشی متقارن" (symmetric multiprocessing) نام داشت که در آن، تعداد اندکی پردازنده یک نمای یکپارچه از سیستم حافظه خود را به اشتراک می‌گذارند. در این طرح‌بندی، هر CPU دارای سخت‌افزار اضافه برای حفظ یک نمای به روز متداوم از حافظه است. با اجتناب از نماهای
به روز متداوم از حافظه است. با اجتناب از نماهای کهنهٔ حافظه، این پردازنده‌ها می‌توانند روی یک برنامه همکاری کنند و برنامه‌ها می‌توانند از یک پردازنده به پردازندهٔ دیگر مهاجرت کنند. برای افزایش تعداد پردازنده‌های همکاری کننده به بیش از تعداد معدود، طرح‌بندی‌هایی نظیر: "دسترسی به حافظه به شکل غیر-یکپارچه" (non-uniform memory access) و "پروتکل‌های یکپارچه مبتنی بر-دایرکتوری" (directory-based coherence protocols) در در دهه ۱۹۹۰ ارائه شدند. سیستم‌های چند فرایندی متقارن، دارای تعداد کمی پردازنده‌ها هستند،
متقارن، دارای تعداد کمی پردازنده‌ها هستند، درحالی‌که سیستم‌های دسترسی به حافظه به‌شکل غیر یکپارچه، با هزاران پردازنده ساخته شده‌اند. در ابتدا، چند-پردازشی، با استفاده از چندین پردازندهٔ مجزا و بوردهایی برای پیاده‌سازی اتصالات بین آن‌ها، ساخته شد. هنگامی که پردازنده‌ها و اتصالات بین آنها تماماً روی یک چیپ منفرد پیاده‌سازی می‌شوند، این تکنولوژی را چند-پردازشی سطح-تراشه (chip-level multiprocessing) می‌نامند و تک-تراشهٔ مورد نظر را، یک پردازندهٔ چندهسته‌ای می‌نامند. بعداً مشخص شد که موازی سازی ظریف تر،
می‌نامند. بعداً مشخص شد که موازی سازی ظریف تر، می‌تواند با یک برنامه منفرد وجود داشته باشد. یک برنامهٔ منفرد ممکن است دارای چندین ریسمان (یا تابع) باشد، که می‌توان آن‌ها را به صورت مجزا یا موازی اجرا کرد. برخی از قدیمی‌ترین موارد این تکنولوژی، فرآیندهای ورودی-خروجی همچون دسترسی-مستقیم-به-حافظه را به صورت یک ریسمان جدا از ریسمان محاسباتی، پیاده‌سازی می‌کردند. یک رویکرد کلی تر برای این تکنولوژی، در دهه ۱۹۷۰ ارائه شد که در آن، سیستم‌ها طوری طراحی می‌شدند تا چندین ریسمان محاسباتی را به شکل موازی اجرا کنند. به
ریسمان محاسباتی را به شکل موازی اجرا کنند. به این تکنولوژی، چندریسمانی (multi-threading) می‌گویند. این رویکرد، در مقایسه با رویکرد چند-پردازشی به صرفه تر است، زیرا فقط تعداد اندکی از بخش‌های یک پردازنده برای پشتیبانی از چند ریسمانی باید تکثیر شوند، درحالی‌که برای چند-پردازشی، باید کل پردازنده تکثیر شود. در رویکرد چند-ریسمانی، واحدهای اجرایی و سیستم حافظه (از جمله کش‌ها)، در بین چندین ریسمان مشترک هستند. مشکل رویکرد چند-ریسمانی این است که پشتیبانی سخت‌افزاری برای چند-ریسمانی در مقایسه با چند-پردازشی، برای
برای چند-ریسمانی در مقایسه با چند-پردازشی، برای نرم‌افزار نمایان تر است؛ بنابراین، نرم‌افزارهای ناظر همچون سیستم عامل، برای پشتیبانی از چند ریسمانی باید متحمل تغییرات زیادی شوند. یک نوع از چند ریسمانی که پیاده‌سازی شد، چند ریسمانی غیر همزمان نام دارد که در آن، یک ریسمان تا زمانی اجرا می‌شود که مجبور شود برای برگشتن داده از حافظه خارجی معطل شود، که در این هنگام، CPU بلافاصله به ریسمان دیگری که آماده اجرا است تعویض زمینه می‌کند. این تعویض معمولاً، در یک چرخه ساعت پردازنده انجام می‌گیرد؛ مثلاً سیستم
یک چرخه ساعت پردازنده انجام می‌گیرد؛ مثلاً سیستم UltraSPARC از این روش استفاده می‌کند. نوع دیگری از چند ریسمانی، چند ریسمانی همزمان نام دارد، که در آن، دستورالعمل‌های مربوط به چندین ریسمان، به صورت موازی در داخل یک چرخه ساعت پردازنده اجرا می‌شوند.به مدت چندین دهه، از ۱۹۷۰ تا اوایل ۲۰۰۰، در طراحی پردازنده‌های عمومی با کارایی بالا، تمرکز بیشتر روی دستیابی به موازی سازی بالا در سطح-دستورالعمل، از طریق تکنولوژی‌هایی نظیر: خط لوله، حافظه‌های نهان، اجرای سوپراسکالر، اجرای خارج از نوبت و … بود. این روند، منجر به
اجرای خارج از نوبت و … بود. این روند، منجر به تولید پردازنده‌های بزرگ و پرمصرف نظیر اینتل پنتیوم ۴ شد. در اوایل دههٔ ۲۰۰۰، به دلیل رشد ناسازگاری بین فرکانس‌های اجرایی پردازنده و فرکانس‌های اجرایی حافظه و همچنین افزایش روزافزون تولید گرما توسط پردازنده که ناشی از تکنیک‌های اختصاصی موازی سازی در سطح-دستورالعمل بود، طراحان پردازنده دیگر قادر به دستیابی به کارایی‌های بالاتر با استفاده از تکنیک‌های ILP نبودند. بعد از آن، طراحان پردازنده، از ایده‌های بازار رایانه‌های تجاری، همچون فرایند تراکنش که در آن، مجموع
تجاری، همچون فرایند تراکنش که در آن، مجموع کارایی چندین برنامه یا همان رایانش توان عملیاتی (Throughput computing)، مهم‌تر از عملکرد یک ریسمان یا یک فرایند بود، استفاده کردند. همه گیر شدن طراحی‌های پردازنده‌های دو هسته‌ای و چند هسته ای و به‌طور قابل ذکر، شباهت طراحی‌های جدید اینتل به معماری کمتر سوپراسکالر P6، گواه بر این قضیه است. طراحی‌های بعدی در خانواده‌های متنوعی از پردازنده‌ها، نمایانگر چندپردازشی در سطح-چیپ (CMP) بودند، از جمله: x86-64 Opteron وAthlon 64 X2 و SPARC UltraSPARC T1 و POWER4 و POWER5 IBM
64 X2 و SPARC UltraSPARC T1 و POWER4 و POWER5 IBM و همچنین چندین پردازندهٔ کنسول بازی ویدیویی، نظیر طراحی سه هسته‌ای PowerPC ایکس‌باکس ۳۶۰ و ریزپردازنده سلولی ۷ هسته‌ای پلی‌استیشن ۳. موازی‌سازی در سطح-داده. یک مثال به‌طور فزاینده مهم، اما کمتر رایج از پردازنده‌ها (و در واقع به‌طور کلی، رایانش) به موازی سازی داده مربوط می‌شود. پردازنده‌هایی که پیش تر در رابطه با آنها صحبت کردیم، تماماً از نوع اسکالر بودند. همان‌طور که نام آنها نشان می‌دهد، پردازنده‌های برداری با قطعات متعددی از داده در زمینه یک دستورالعمل
با قطعات متعددی از داده در زمینه یک دستورالعمل مرتبط هستند، درحالی‌که پردازنده‌های اسکالر، با یک قطعه از داده برای هر دستورالعمل سر و کار دارند. با استفاده از طبقه‌بندی فلین (Flynn's taxonomy)، این دو روش سر و کار با داده‌ها، به‌طور کلی به ترتیب، "جریان یک دستورالعمل، روی جریان چندین داده" (single instruction stream, multiple data stream) و "جریان یک دستورالعمل، روی جریان یک داده" (single instruction stream, single data stream) نامیده می‌شود. عمده بهره بری در ساخت پردازنده‌هایی که با بردارهای داده سر و کار
ساخت پردازنده‌هایی که با بردارهای داده سر و کار دارند، در بهینه‌سازی وظایفی است که در آن‌ها نیاز است تا برخی اعمال (برای مثال، یک جمع یا یک ضرب برداری) روی مجموعهٔ بزرگی از داده انجام شود. برخی مثال‌های کلاسیک از این نوع وظایف عبارتند از: اپلیکیشن‌های چند رسانه‌ای (تصویر، ویدئو و صدا) و همچنین، انواع مختلفی از وظایف علمی و مهندسی. درحالی که یک پردازنده اسکالر باید تمام فرایند واکشی، رمزگشایی، و اجرای هر دستورالعمل و مقدار را در مجموعه ای از داده‌ها کامل کند، اما پردازنده برداری می‌تواند یک عملیات منفرد را
اما پردازنده برداری می‌تواند یک عملیات منفرد را روی مجموعه نسبتاً بزرگی از داده، فقط با یک دستورالعمل انجام دهد. این حالت، فقط زمانی امکان‌پذیر است که اپلیکیشن مورد نظر نیاز به مراحل متعددی دارد که عملیات مشابهی را روی مجموعه بزرگی از داده انجام می‌دهند. بسیاری از پردازنده‌های برداری ابتدایی نظیر Cray-1، تقریباً به صورت کامل مربوط به تحقیقات علمی و کاربردهای رمزنگاری بودند. با این وجود، از آنجایی که چند رسانه‌ای به میزان زیادی به سمت دیجیتال رفته‌است، نیاز به فرمی از SIMD در پردازنده‌های عمومی بیشتر
نیاز به فرمی از SIMD در پردازنده‌های عمومی بیشتر شده‌است. کمی بعد از اینکه واحدهای ممیز شناور تبدیل به بخش ثابتی از پردازنده‌های عمومی شدند، اختصاص و پیاده‌سازی واحدهای اجرایی SIMD نیز در پردازنده‌های عمومی شروع شد. بعضی از این واحدهای اختصاصی SIMD نظیر:Multimedia Acceleration eXtensions در شرکت HP و MMX در شرکت اینتل فقط مربوط به اعداد صحیح می‌شد، که نوعی محدودیت قابل توجه برای برخی توسعه‌دهندگان نرم‌افزار بود، زیرا بسیاری از اپلیکیشن‌هایی که از SIMD سود می‌برند، اساساً با اعداد ممیز شناور سر و کار دارد.
اساساً با اعداد ممیز شناور سر و کار دارد. به‌طور روزافزون، توسعه دهندگان نرم‌افزار، این طراحی‌های ابتدایی را اصلاح و به فرم واحدهای اختصاصی SIMD پیشرفتهٔ جدید بازسازی کردند، که معمولاً بخشی از یک معماری مجموعه دستورالعمل است. مثال‌های مهمی از این موارد جدید عبارتند از: Streaming SIMD Extensions از شرکت اینتل و PowerPC-related AltiVec (یا همان VMX). پردازنده‌های مجازی. رایانش ابری می‌تواند به شکل تقسیم‌بندی عملیات پردازنده مابین واحدهای پردازش مرکزی مجازی (virtual central processing units) باشد. یک میزبان،
central processing units) باشد. یک میزبان، معادل مجازی یک ماشین فیزیکی است که روی آن، یک سیستم مجازی عمل می‌کند. زمانی که چندین ماشین فیزیکی با یکدیگر کار می‌کنند و به صورت یکپارچه مدیریت می‌شوند، این رایانش گروهی و منابع حافظه یک خوشه(cluster) را به وجود می‌آورد. در برخی سیستم‌ها، این امکان وجود دارد تا به صورت پویا، از خوشه کم کنیم یا به آن اضافه کنیم. منابع موجود در یک میزبان و سطح خوشه را می‌توان به مخازن منبع با اجزای ظریف(fine granularity) تقسیم کرد. عملکرد. عملکرد یا سرعت یک پردازنده بستگی به
کرد. عملکرد. عملکرد یا سرعت یک پردازنده بستگی به فاکتورهایی از جمله سرعت ساعت (به‌طور کلی، به صورت مضرب‌هایی از هرتز داده می‌شود) و "تعداد دستورالعمل‌ها در هر کلاک" (Instructions per clock, IPC) دارد، که مجموعاً با یکدیگر، معیار "تعداد دستورالعمل‌های انجام شده در هر ثانیه"(instructions per second, IPS) را تشکیل می‌دهند. بسیاری از مقادیر IPS گزارش شده، نشان‌دهندهٔ نرخ اجرای «حداکثری» بر روی توالی‌های دستورالعمل ساختگی با انشعابات معدود هستند، درحالی‌که بار کاری واقعی، شامل ترکیبی از دستورالعمل‌ها و
بار کاری واقعی، شامل ترکیبی از دستورالعمل‌ها و اپلیکیشن‌هایی می‌شود که مدت زمان اجرای برخی از آن‌ها نسبت به بقیه بیشتر است. کارایی سلسله‌مراتب حافظه نیز به میزان زیادی روی کارایی پردازنده تأثیر می‌گذارد. این موضوع به ندرت در محاسبات میپس لحاظ شده‌است. به خاطر این مشکلات، تست‌های استاندارد مختلفی که معمولاً برای این هدف محک (Benchmark) نامیده می‌شوند- همچون SPECint- ابداع شده‌اند، تا بتوانند کارایی واقعی را در موارد رایج اندازه‌گیری کنند. کارایی پردازش کامپیوترها، با استفاده از پردازنده‌های چندهسته‌ای که
با استفاده از پردازنده‌های چندهسته‌ای که اساساً اتصال دو یا بیش از دو پردازندهٔ مجزا (با نام هسته‌ها، در این زمینه) در یک مدار مجتمع است، افزایش می‌یابد. به‌طور ایدئال، یک پردازندهٔ دو هسته‌ای تقریباً قدرت معادل دو برابر یک پردازندهٔ تک‌هسته‌ای دارد، اما در واقعیت، افزایش کارایی بسیار کمتر از این است و حدود تقریباً ۵۰٪ است که دلیل آن، الگوریتم‌های نرم‌افزاری و پیاده‌سازی‌های ناکامل است. افزایش تعداد هسته‌ها در یک پردازنده (یعنی دو هسته‌ای، چهار هسته‌ای و …) موجب افزایش میزان بار کاری قابل انجام توسط
و …) موجب افزایش میزان بار کاری قابل انجام توسط پردازنده می‌شود. این بدان معنی است که این پردازنده‌ها می‌توانند وقایع ناهمگام، وقفه‌ها و … را که در حجم زیاد می‌توانند اثرات مخربی روی عملکرد پردازنده داشته باشند، مدیریت کنند. این هسته‌ها را می‌توان به شکل طبقات مختلف در یک ساختمان پردازش در نظر گرفت که هر طبقه یک وظیفهٔ متفاوت را انجام می‌دهد. گاهی این هسته‌ها، در زمانی که یک هسته به تنهایی برای مدیریت اطلاعات کافی نباشد، می‌توانند کاری مشابه با هسته‌های مجاور خود انجام دهند. به دلیل قابلیت‌های خاص