CPU به زبان ساده

 

مهر ماه 84 شماره 16

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


عناصر تشکیل دهنده CPU
CPU ، این قطعه کوچک اما بسیار پیچیده چیزی نیست جز یک مجموعه بسیار بزرگ از ترانزیستور ها.
اما ترانزیستور چیست ؟ به بیان بسیار ساده ، ترانزیستور از سه سیم تشکیل شده است که یکی ولتاژ به آن وصل است و دو سیم دیگر نیز حامل جریان می باشند. اگر ولتاژ قطع شود در پی آن جریان نیز قطع خواهد شد در حقیقت ترانزیستور مانند یک سوئیچ ساده اما بسیار کوچک عمل می کند.
 یک ترانزیستور به تنهایی کار خاصی انجام نمی دهد بلکه زمانی که تعدادی از آنها در کنار یکدیگر قرار دهیم می توان عملیات خاصی را توسط آنها انجام داد .با کنار هم قرار گرفتن ترانزیستورها می توان گیت های منطقی ایجاد نمود که توسط آنها اعمال منطقی ( Logical ) انجام می شود .
به عنوان مثال جدول 1 نحوه عمل گیت XOR ( Exclusive OR ) را نشان می دهد . خروجی گیت هنگامی 1 است که فقط یکی از ورودی ها حامل ولتاژ ( 1  ) باشد.

 

Y X Z
0 0 0
0 1 1
1 0 1
1 1 0


جدول 1

حال ولتاژها را مانند اعداد دودویی در نظر بگیرید که روشن ( ON ) به معنای 1 و خاموش ( OFF ) به معنای 0 است.
اکنون اعداد باینری را به ورودی گیت XOR می دهیم. اگر هر دو ورودی 0 یا هر دو 1 باشد خروجی نخواهیم داشت یعنی خروجی OFF می باشد ( به جدول 1 توجه نمایید) و اگر فقط یکی از ورودی ها 1 باشد خروجی برابر 1 یعنی روشن ( ON ) می شود.
با در نظر گرفتن مثال فوق و به در صورتیکه از گیت های بیشتری در آن قسمت استفاده شود می توان عملیات منطقی و ریاضی مانند جمع ، تفریق ، ضرب و تقسیم را توسط ترانزیستورها و گیت ها انجام داد که اساس کار CPU است.
اکنون کاری که سازندگان CPU مثلاً AMD یا Intel انجام می دهند عبارت است ازکنار هم قرار دادن ترانزیستورهای بسیار زیادی ( بالغ بر 230 میلیون ترانزیستور ) برای انجام اعمال بسیار پیچیده تر که دقیقا بر پایه همین علوم ساده استوار می باشد.

مراحل کاری CPU
اگر کمی بیشتر پیش برویم مطالب زیاد و مشترکی بین  CPU های مختلف باقی می ماند که قابل بحث می باشد مانند ثبات ها ( Register ) که قطعه بسیار کوچکی از جنس حافظه می باشند و می توانند نتایج اعمال منطقی را در خود ذخیره کنند.
 CPU های مختلف دارای رجیسترهای گوناگون می باشند. بعضی از رجیستری ها برای نگهداری نتایج اعمال استفاده می شود و بعضی دیگر به عنوان اشاره گر و برخی نیز برای اهداف دیگر می باشند. بعنوان مثال رجیستر AX برای نگهداری نتیجه یک عمل دودویی منطقی یا ریاضی بکار می رود و رجیستر Program Counter   ( PC ) یک اشاره گر است که باید به دستوری که در لحظه بعد توسط CPU اجرا شود اشاره کند. برای انجام یک عمل توسط CPU مراحل زیادی باید طی شود تا آن عمل انجام شده و نتیجه مطلوب حاصل گردد.

به طور خلاصه برای انجام یک دستور مراحل زیر انجام می شود:
• ابتدا عملیات Fetch ، یعنی آوردن دستور از داخل حافظه ( RAM ) به داخل CPU انجام گیرد.
• بعد از این مرحله دستور باید Decode شده تا CPU متوجه شود که چه عملی باید انجام گیرد.
• در مرحله بعد عمل Execute انجام می گیرد که دستور در واقع در این مرحله اجرا می گردد. انجام این اعمال بر عهده قسمت های گوناگونی از CPU می باشد که تمامی آنها توسط مولد پالس ساعت CPU همزمان می گردند.
منظور از دستور در این مرحله ساده ترین نوع دستورات می باشد مثلاً ضرب دو مقدار با یگدیگر و یا جمع کردن عددی با عدد دیگر.
مجموعه دستوراتی که در یک CPU می توانند مورد استفاده قرار گیرند Instruction Set نام دارد.

سرعت پردازنده و Clock Puls
کارایی ، کلید موفقیت یک CPU می باشد. اعمالی که باعث می شود کارایی یک  CPU افزایش یابد ، مواردی هستند که موجب برتری یک CPU اینتل به AMD و یا بالعکس می شود. یکی از راه های افزایش کارایی ، بالا بردن سرعت ساعت( Clock Speed )  پردازنده می باشد. همانطور که می دانید پردازنده ها برای کار نیاز به عاملی به نام Clock Puls ( پالس ساعت )  دارند.
پردازنده ها فرکانس پایه که اکثرا سرعت پایینی هم دارد ( مثلا 133 یا 200 مگاهرتز) را از مادر برد می گیرد و بر اساس سرعت خود آن را در یک ضریبی خاص ضرب می کند تا فرکانس اصلی پردازنده را ایجاد کندبه عنوان مثال یک پردازنده Pentium 4 2.8GHz که FSB آن 533 مگاهرتز می باشد فرکانس 133مگاهرتز را از مادریرد می گیرد و آن را در عدد 21 ضرب می کند.این پردازنده در هر ثانیه 2800 میلیون پالس تولید می کند در نتیجه اگر به طور مثال هر دستورالعمل در یک پالس انجام گیرد این پردازنده قادر است در هر ثانیه 2800 میلیون دستور العمل را اجرا کند بنابراین در یک پردازنده هر چه تعداد پالس ها در یک ثانیه افزایش یابد تعداد دستورات بیشتری در هر ثانیه انجام شده و کارایی CPU افزایش می یابد.
اما نکته قابل توجه اینست که افزایش سرعت با مشکلاتی نیز همراه خواهد شد بطور مثال افزایش بیش از حد سرعت می تواند در نحوه عملکرد ترانزیستور ها تاثیر زیادی ایجاد کند که مسئله موجب از کار افتادن پردازنده و بیش از حد داغ شدن آن می شود.

Pipelining
متداولترین راه برای افزایش سرعت یک پردازنده ، بالا بردن فرکانس آن می باشد اما را ه های دیگری نیز وجود دارد که به وسیله آن می توان مقدار قابل توجهی کارایی یک پردازنده را افزایش داد راه هایی چون استفاده از Pipelining ، حافظه نهان ( Cache Memory) و Dual Core .
Pipelining ، روشی می باشد که مدت زیادی است در پردازنده ها از آن استفاده می شود در این روش پردازنده ها کمی باهوش تر عمل می کند.

برای واضح تر شدن موضوع Pipelining ، مثالی از اجرای یک دستور در CPU را شرح می دهیم ؛ یک پردازنده را در نظر بگیرید که در هر پالس یک دستورالعمل را اجرا می کند. در اولین پالس ، دستور را از داخل حافظه اصلی ( RAM ) به داخل CPU  انتقال داده می شود. در پالس بعدی CPU  دستور را Decode و در پالس سوم دستور اجرا می شود . در پالس چهارم نتیجه عمل ذخیره می گردد که ا ین چرخه به صورت متوالی ادامه پیدا خواهد کرد.
در صورتیکه یک پردازنده دارای قابلیت Pipelining باشد می تواند چند عمل را در یک زمان و به صورت موازی انجام دهد بدین ترتیب که :
• در پالس اول ، دستور اول از حافظه اصلی خوانده  می شود.
• در پالس دوم ، دستور اول Decode گشته و همزمان دستور العمل دوم از حافظه اصلی خوانده  می شود.
• در پالس سوم ، دستور العمل اول اجرا ، همزمان دستورالعمل دوم Decode و دستور العمل سوم از حافظه اصلی خوانده  می شود.
بدین ترتیب این کارها همگی در یک زمان انجام می گیرند که به Pipelining معروف می باشد.

طراحان و کارشناسان با انجام تغییر در معماری CPU ها توانستند با تکنولوژی Pipelining کارایی پردازنده را تا 4 برابر افزایش دهند.
نتیجه ای که از این قسمت می توان گرفت اینست که سرعت در پردازنده ها فقط به عامل فرکانس بستگی ندارد بلکه فرکانس فقط یکی از عوامل مهم در سرعت آنها می باشد به همین دلیل است که کمپانی AMD بر خلاف اینتل نام پردازنده های خود را بر حسب فرکانس بیان نمی کند بطور مثال پردازنده AMD Athlon XP 1800+ دارای فرکانسی معادل 1533 مگاهرتز می باشد اما اینتل تمام مدل های خود را برحسب سرعت فرکانس آنها بیان می کند به (  Pentium 4 2800MHz ) .

Cache Memory
یکی دیگر از راه های افزایش کارایی در پردازنده ها استفاده از حافظه نهان یا همان Cache Memory می باشد.
با یک مثال وظیفه حافظه نهان ( Cache Memory ) را شرح می دهیم :
بخش بایگانی اداره ای را در نظر بگیرید .کارمند این بخش ،  پرونده ها را منظم در قفسه های متراکم و شلوغ قرار داده است.
فرض کنید پیدا کردن یک پرونده بطور میانگین یک دقیقه از وقت کارمند را بگیرد.اگر کارمند قسمت بایگانی احتمال دهدکه ممکن است مجددا به این پرونده مراجعه شود و به جای آنکه آن را مجددا در قفسه قرار دهد روی میز خود بگذارد در مراجعه بعدی به همان پرونده دیگر زمانی برای جستجو و پیدا کردن آن تلف نخواهد شد.
وظیفه حافظه نهان یا Cache Memory نیز دقیقا همین است . حافظه نهان در حقیقت همان میز کارمند است ( که در مقایسه با قفسه ها از ابعاد بسیار کوچکی برخوردار می باشد ) و پرونده نیز در حکم دستور العمل و یا داده ای می باشد که از آن زیاد استفاده می شود. پردازنده در هنگام اجرای یک برنامه و خواندن اطلاعات از حافظه اصلی ، با دستورات و یا داده هایی برخورد می کند که به دفعات از آنها استفاده می شود.
برای جلوگیری از مراجعه از تکرا ر مراجعه پردازنده به حافظه اصلی برای خواندن دستورات و یا داده های تکرای این اطلاعات به قسمتی به نام حافظه Cache ممنتقال می گردد. این حافظه به دلیل اینکه از نوع حافظه های Static می باشد( بر خلاف حافظه اصلی که از نوع Dynamic می باشد ) دارای سرعت بسیار بیشتری نسبت به حافظه اصلی است و زمان مراجعه به آن بسیار کمتر از زمان مراجعه به حافظه اصلی ( RAM ) می باشد.
همانطور که می دانید حافظه اصلی ( RAM ) از تعداد بسیار زیادی خازن تشکیل شده است اما در Cache Memory همانند CPU در ساختمان آن از ترانزیستور استفاده شده است و به همین دلیل است که افزایش مقدار Cache در پردازنده ها با افزایش قیمت همراه است . در حال حاضر مقدار حافظه نهان در پردازنده ها معمولی از 256 کلیو بایت تا 1 مگابایت می باشد.

CPU و اصطلاح نانومتر تکنولوژی 
همانطور که در ابتدا نیز به آن اشاره شد یک پردازنده متشکل از چند صد میلیون ترانزیستور است.
استفاده از Pipelining ،  Cache Memory و موارد دیگر در ساختار داخلی پردازنده ها موجب افزایش تعداد ترازیستور ها می شود بطوریکه در پردازنده جدید تعداد ترازیستور ها تقریبا دو برابر شده است. این افزایش ترانزیستور ها موجب شد که متخصصان شرکت های سازنده پردازنده رو به کاهش اندازه ترانزیستور ها بیاورند تا بتواند از ترانزیستور های بیشتر در هسته پردازنده استفاده نمایند.
تا دو سال قبل اندازه هر ترانزیستور 180 نانومتر بود که بعد از مدتی به 130 نانو و 90 نانو رسید و اخیرا نیز اینتل پردازنده Pentium D 900  را با تکنولوژی 65 نانو عرضه کرده است. اما مشکلی که با افزایش تعداد ترانزیستور ها پیش آمده اینست که این عمل موجب افزایش توان مصرفی و همچنین تولیدگرمای بسیار زیاد توسط CPU  می باشد.

شکل 1 : نمایی از داخل یک پردازنده دو هسته ای .


همانطور مشاهده می شود دو هسته کاملا  مشخص شده است.

پردازنده های دو هسته ای
شرکت های Intel و AMD با کاهش سایز ترانزیستورها سعی می کنند تا بتوانند از ترانزیستورها بیشتری در یک CPU استفاده کنند. این قابلیت موجب شده است که این شرکت ها بتوانند در یک پردازنده از دو هسته( Dual Core ) استفاده کنند این عمل در افزایش کارایی پردازنده ها بسیار موثر می باشد.
شرکت  AMDاخیرا پردازنده های Dual Core خود با نام Athlon64 X2 را وارد بازار کرده است و در پی آن نیز شرکت Intel برای ماندن در عرصه رقابت پردازنده های دو هسته ای خود را نیز به بازار ارائه کرده است.

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

  
نویسنده : ali gooliof ; ساعت ۱٢:۱۳ ‎ب.ظ روز ۱۳۸٧/٢/٢٤
تگ ها :