CPU
تاریخچه CPU
واحدهای پردازش مرکزی, ویژگی پایه ای قابل برنامه ریزی شدن را در رایانه های رقمی فراهم می کنند، و یکی از مهم ترین اجزاء رایانه ها هستند. یک پردازندهٔ مرکزی، مداری یکپارچه می باشد که معمولاً به عنوان ریزپردازنده شناخته می شود. امروزه عبارت CPU معمولاً برای ریزپردازنده ها به کار می رود.
عبارت Central Processor Unit (واحد پردازندهٔ
مرکزی) یک ردهٔ خاص از ماشین را معرفی می کند که می تواند برنامه های
رایانه را اجرا کند. این عبارت گسترده را می توان به راحتی به بسیاری از
رایانه هایی که بسیار قبل تر از عبارت CPU بوجود آمده بودند نیز تعمیم داد.
به هر حال این عبارت و شروع استفاده از آن در صنعت رایانه، از اوایل سال
1960 رایج شد. شکل، طراحی و پیاده سازی پردازنده ها نسبت به طراحی اولیه آنها تغییر کرده است ولی عملگرهای بنیادی آنها همچنان به همان شکل باقی مانده است.
پردازنده های اولیه به عنوان یک بخش از سامانه ای بزرگ تر که معمولاً یک نوع رایانه
است، دارای طراحی سفارشی بودند. این روش گران قیمت طراحی سفارشی پردازنده
ها برای یک بخش خاص، به شکل قابل توجهی، مسیر تولید انبوه آنرا که برای
اهداف زیادی قابل استفاده بود فراهم نمود. این استانداردسازی روند قابل
ملاحظه ای را در عصر مجزای ابر رایانه های ترانزیستوری و ریز کامپیوترها
آغاز نمود و راه عمومی نمودن مدارات مجتمع (IC یا Integrated Circuit) را
سرعت فراوانی بخشید. یک مدار مجتمع، امکان افزایش پیچیدگی ها برای طراحی
پردازنده ها و ساختن آنها در مقیاس کوچک را (در حد میلیمتر) امکان پذیر می
سازد. هر دو فرایند (کوچک سازی و استاندارد سازی پردازنده ها)، حضور این
تجهیزات رقمی را در زندگی مدرن گسترش داد و آن را به فراتر از یک دستگاه
خاص مانند رایانه تبدیل کرد. ریزپردازنده های جدید را در هر چیزی از
خودروها گرفته تا تلفن های همراه و حتی اسباب بازی های کودکان می توان
یافت.
مدت زمان انجام یک کار به وسیله رایانه، به عوامل متعددی بستگی دارد که اولین آنها، سرعت پردازشگر رایانه است. پردازشگر یک تراشه الکترونیکی
کوچک در قلب کامپیوتر است و سرعت آن بر حسب مگاهرتز یا گیگاهرتز سنجیده می
شود. هر چه مقدار این پارامتر بیشتر باشد، پردازشگر سریعتر خواهد بود و در
نتیجه قادر خواهد بود، محاسبات بیشتری را در هر ثانیه انجام دهد. سرعت
پردازشگر به عنوان یکی از مشخصه های یک کامپیوتر به قدری در تعیین کارآیی
آن اهمیت دارد که معمولاً به عنوان یکی از اجزای تشکیل دهنده نام کامپیوتر
از آن یاد می شود. تراشه پردازشگر و اجزای الکترونیکی که آن را پشتیبانی می کنند، مجموعاً به عنوان واحد پردازش مرکزی یا CPU شناخته شده است.
واحد پردازش مرکزی واحد محاسباتی (ALU) و کنترلی (CU) رایانه است که دستورالعمل ها را تفسیر و اجرا می کند. رایانه های بزرگ و ریزرایانه
های قدیمی بردهایی پر از مدارهای مجتمع داشته اند که عمل پردازش را انجام
میداده اند. تراشه هایی که ریز پردازنده نامیده می شوند، امکان ساخت رایانه
های شخصی و ایستگاه های کاری (Work Station) را میسر ساخته اند.
پیش از
ظهور اولین ماشین که به پردازنده های امروزی شباهت داشت؛ کامپوترهای مثل
اینیاک(انیاک) مجبور بودند برای اینکه کارهای مختلفی را انجام دهند
دوباره سیم کشی شوند. این ماشین ها کامپیوترهایی با برنامه
ثابت نامیده می شوند. از آنجای که عبارت پردازنده عموماً برای دستگاه هایی
که برنامه های کامپیوتری را اجرا می کنند به کار می رود، می توان
کامپیوترهای برنامه ذخیره شده (stored-program computer) را به عنوان اولین
پردازنده ها نام برد. ایده کامپیوترهای برنامه ذخیره شده در طراحی J.
Presper Eckert و John William برای کامپیوتر اینیاک ارائه شده بود، ولی
خیلی زود از طرح حذف گشت تا طرح سریع به اتمام برسد.
در 30 ژوئن 1945 قبل از اینکه اینیاک ساخته شود، ریاضی دانی به نام John von Neumann یک مقاله با عنوان اولین پیش نویس گزارش EDVAC منتشر کرد. که این طرح کلی از اولین کامپیوتر برنامه ذخیره شده بود که سرانجام در آگوست 1949 به اتمام رسید. EDVAC برای انجام تعداد خاصی از دستورالعمل ها طراحی شده بود. این دستورالعمل ها می توانستند ترکیب شوند و برنامه های مفیدی را روی EDVAC اجرا کنند. روشن است که برنامه هایی که برای EDVAC نوشته شده بودن روی حافظهٔ سریع کامپیوتر ذخیره می شدند به جای سیم کشی کردن مشخص کامپیوتر.
طراحی von Neumann بر این محدودیت اینیاک، که زمان و تلاش زیاد برای پیکربندی مجدد برای انجام کار جدید بود غلبه کرد. برنامه یا نرم افزار ی که بر روی EDVAC اجرا می شد می توانست به راحتی محتویات حافظه را تغییر دهد. در ابتدا CPUها به صورت اختصاصی به عنوان بخشی از یک دستگاه بزرگتر طراحی می شدند که گاهی بخشی از یک رایانه بودند. با این حال این روش سفارشی طراحی برای یک کاربرد خاص، راه را برای تولید انبوه پردازنده های ساخته شده نا هموار می کرد. استاندارد سازی پردازنده ها با پیدایش ترانزیستورها و میکرو کامپیوترها شروع شد و با ظهور آی سی ها شتاب بیشتری گرفت. آی سی ها این اجازه را می دادند که CPUهای پیچیده تر و با قواعد طراحی نانو متر تولید شوند. استانداردسازی و کوچک شدن CPUها هر دو باعث افزایش حضور دستگاه های دیجیتال در زندگی مدرن در مقابل کاربرد محاسباتی خاص شدند. ریز پردازنده ها در هر جایی از ماشین ها تا تلفن های همراه و اسباب بازی های کودکان حضور دارند.
هرچند von Neumann به خاطر طراحی EDVAC
خود شناخته شده است، قبل از او افرادی مانند Konrad Zuse ایده های مشابهی
را مطرح و پیاده سازی نموده بودند. اصطلاح معماری هاروارد Harvard Mark که
یک طراحی برنامه ذخیره شده که از نوار کاغذهای منگنه بجای حافظه های
الکترونیکی استفاده می کرد، قبل از EDVAC تمام شده بود. تفاوت اصلی بین
طراحی ون و معماری هاروارد فضای مشترک برای ذخیره دستورالعمل ها و داده ها
در مقابل فضاهای جدا گانه طراحی هاروارد بود. اغلب CPUهای مدرن از طراحی ون
پیروی می کنند، اما المان هایی هم وجود دارند که معماری هاروارد پیروی می
کنند. رله ها و لامپ های خلا که عموماً به عنوان عناصر سوئیچینگ مورد
استفاده قرار می گرفتند. یک کامپیوتر مفید به هزاران یا صدها هزار از این
المان های سوئیچینگ نیاز دارد و سرعت کلی سیستم به سرعت این سوئیچ ها
وابسته است. کامپیوترهای لامپ خلا نزیر EDVAC , تقریباً 8 ساعت بدون خرابی
کار می کردند در حالی که کامپیوترهای رله ای مانند طراحی هاروارد خیلی
زودتر با مشکل مواجه می شدند. در نهایت CPUهای بر پایه لامپ خلا به دلیل
سرعت قابل توجه و قابلیت اطمینان بیشتر بر هم نوعان خود پیروز شدند. اغلب
CPUهای سنکرون نسبت به CPUهای مدرن با فرکانس کلاک کمتری در حد 100Hz تا 4
MHz کار می کردند که این محدودیت به دلیل سرعت کم المان های سوئیچ بود.
پیچیدگی
طراحی پردانده ها هم زمان با افزایش سریع فناوری های متنوع که ساختارهای
کوچک تر و قابل اطمینان تری را در وسایل الکترونیک باعث می شد، افزایش
یافت. اولین موفقیت با ظهور اولین ترانزیستورها حاصل شد.
پردازنده های ترانزیستوری در طول دهه های 50 و 60 میلادی زمان زیادی نبود
که اختراع شده بود و این در حالی بود که آنها بسیار حجیم، غیر قابل اعتماد و
دارای المانهای سوئیچینگ شکننده مانند لامپ های خلا و رله های الکتریکی
بودند. با چنین پیشرفتی پردازنده هایی با پیچیدگی و قابلیت اعتماد بیشتری
بر روی یک یا چندین برد مدار چاپی که شامل قسمت های تفکیک شده بودند ساخته
شدند.
مفهوم اساسی یک سی پی یو به صورت زیر است:
در
طراحی یک سی پی یو یک لیست از عملیات بنام مجموعهٔ دستوری بصورت ذاتی وجود
دارد که سی پی یو آن ها را انجام می دهد. چنین عملیاتی ممکن است شامل جمع
کردن یا تفریق کردن دو عدد، مقایسهٔ اعداد یا پرش به بخشی دیگر از یک
برنامه باشد. هرکدام از این عملیات پایه ای توسط توالی خاصی از بیت ها
نمایش داده می شود که این توالی, برای چنین عملیات خاصی, اپکد
نام دارد. فرستادن یک اپکد خاص به یک سی پی یو باعث می شود تا سی پی یو
عملی را که توسط اپکد مذکور نمایش داده می شود انجام دهد. برای اجرای یک
دستور در یک برنامهٔ کامپیوتری، سی پی یو از اپکد دستور مذکور و نیز
نشانوندهای آن (برای مثال، در مورد یک عمل جمع، دو عددی که قرار است با
همجمع شوند.) استفاده می کند. عمل ریاضی واقعی برای هر دستور توسط یک
زیرواحد از سی پی یو به نام واحد محاسبه و منطق (ALU)انجام می گیرد.
یک سی پی یو علاوه بر اینکه از ALU
خودش برای انجام اعمال استفاده می کند، اعمال دیگری نظیر: خواندن دستور
بعدی از حافظه، خواندن اطلاعات مشخص شده بصورت نشانوند از حافظه و نوشتن
یافته های حاصل در حافظه را نیز به عهده دارد. در بسیاری از طراحی های سی
پی یو، یک مجموعهٔ دستوری مشخصا بین اعمالی که اطلاعات را از حافظه بارگیری
می کنند و اعمال ریاضی افتراق می دهد. در این مورد اطلاعات بارگیری شده از
حافظه در رجیسترها ذخیره می شود و یک عمل ریاضیاتی هیچ گونه نشانوندی نمی
گیرد بلکه بسادگی عمل محاسباتی مذکور را روی اطلاعات موجود در رجیسترها
انجام داده و آن را در یک رجیستر جدید می نویسد.