پر بازدید ترین مطالب

تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید


درک نحوه کارکرد اکثر اجزای کامپیوتر کار نسبتا آسانی است. رم، حافظه ذخیره‌سازی، لوازم‌جانبی و نرم‌افزار همگی با هدف شکل دادن به یک عملیات کامپیوتری با یکدیگر همکاری می‌کنند. اما CPU قلب تپنده سیستم شما به‌شمار می‌آید و ظاهرا عملکرد آن حتی به عقیده بسیاری از افراد فنی نیز اسرارآمیز به‌نظر می‌رسد. در ادامه تلاش شده تا چگونگی عملکرد CPU به‌طور کامل تشریح شود. اکثر منابع تحقیقاتی برای این مقاله از کتاب “But How Do It Know” نوشته جی‌کلارک اسکات استخراج شده‌اند.

What-is-CPU-Featured-670x335 تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

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

شروع با اجزای کوچک

74D59993-C295-4CA6-AF15-F3A7A01D5E6F تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

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

گیت‌های منطقی

7B58FA00-8009-4C98-8D23-C7AE5713DD6A تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

برای دستیابی به درکی درست از نحوه کارکرد ترانزیستور بایستی با المان‌هایی موسوم به گیت‌های منطقی آشنا شویم. گیت‌های منطقی، 2 ورودی باینری را دریافت نموده و پس از انجام عملیات بر روی آن‌ها، یک خروجی را بازگردانی می‌کنند. به‌عنوان مثال در صورتی‌که یکی از ورود‌ی‌ها صحیح باشند، گیت OR مقدار صحیح را بازمی‌گرداند. گیت AND صحیح بودن هر 2 ورودی را بررسی می‌کند. گیت XOR صحت تنها یکی از ورودی‌ها را ارزیابی نموده و گیت‌های منفی شامل NOR، NAND و XNOR نیز نسخه‌های معکوس شده گیت‌های پایه‌ای خود محسوب می‌شوند.

اجرای عملیات ریاضی با گیت‌ها

C0B67AE8-DD24-44A7-AC53-D37F8369C9BA تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

با وجود تنها 2 گیت شما قادر به انجام عملیات ابتدایی جمع دودویی خواهید بود. نمودار بالا یک نیم جمع‌کننده (half adder) را نمایش می‌دهد. این دیاگرام با استفاده از Logicly که یک بستر رایگان و آنلاین برای طراحی گیت‌های منطقی است، ایجاد شده است. در این‌جا تنها در صورت روشن شدن یکی از ورودی‌ها و نه هر دو آن‌ها، گیت XOR روشن خواهد شد. در صورت روشن بودن هر 2 ورودی، گیت AND روشن می‌شود؛ اما با عدم وجود ورودی در وضعیت خاموش باقی خواهد ماند. بنابراین اگر هر 2 ورودی روشن باشند، گیت XOR در وضعیت خاموش باقی مانده و گیت AND روشن می‌شود. این وضعیت در 2 حالت به پاسخ درست منجر خواهد شد:

722A5391-78E7-4F78-ABB4-444AF62E635A تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

این موضوع یک پیکره‌بندی ساده با 3 خروجی متمایز 0، 1 و 2 را در اختیار ما قرار خواهد داد. اما یک بیت قادر به ذخیره‌سازی مقادیر بزرگ‌تر از 1 نیست و این دستگاه چندان مفید نخواهد بود؛ زیرا تنها یکی از ساده‌ترین مسائل ریاضی ممکن را حل می‌کند. اما این مدار تنها نمایانگر یک نیم جمع‌کننده است و در صورتی‌که 2 عدد از آن‌ها را به یک ورودی دیگر متصل نمایید، یک جمع‌کننده کامل (full adder) ایجاد خواهد شد:

Capture-1 تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

جمع‌کننده کامل دارای 3 ورودی است که 2 عدد از آن‌ها برای جمع و یکی به‌عنوان رقم نقلی (carry) استفاده می‌شود. هنگامی‌که فضای لازم برای ذخیره‌سازی عدد نهایی از ظرفیت یک بیت فراتر می‌رود، رقم نقلی به‌کارگیری خواهد شد. جمع‌کننده‌های کامل در یک زنجیره متصل خواهند شد و رقم نقلی از یک جمع‌کننده به جمع‌کننده بعدی منتقل می‌شود. این رقم به نتیجه گیت XOR در اولین نیم جمع‌کننده اضافه خواهد شد و برای مدیریت هر 2 حالتی که ورودی‌های ترانزیستور بایستی روشن باشند نیز از یک گیت OR اضافی استفاده می‌شود.

زمانی‌که هر 2 ورودی روشن هستند، رقم نقلی روشن شده و به جمع‌کننده کامل بعدی در زنجیره ارسال خواهد شد.

Capture-2 تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

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

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

مفهوم گذرگاه و حافظه

این رو هم بخون:

C1CA7358-64C3-44BF-9285-9E36F68A09B8 تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

تا این‌جا کامپیوتر ما چیزی بیش از یک ماشین‌حساب بد نیست. چرا که نمی‌تواند هیچ چیزی را به‌خاطر بسپارد و با خروجی‌های خود نیز هیچ کاری انجام نمی‌دهد. دیاگرام بالا یک سلول حافظه که قادر به انجام کلیه امورات مذکور است را نمایش می‌دهد. در دل این سلول از تعداد زیادی گیت NAND استفاده می‌شود. این سلول در دنیای واقعی و بسته به تکنیک ذخیره‌سازی می‌تواند کاملا متفاوت باشد؛ اما عملکرد آن یکسان خواهد بود. شما چندین ورودی را به حافظه ارایه نموده و بیت “نوشتن” را روشن می‌کنید. بدین ترتیب ورودی‌ها در داخل سلول ذخیره خواهند شد. این تنها یک سلول حافظه نیست؛ چرا که ما به روشی برای خواندن اطلاعات از آن نیز احتیاج خواهیم داشت. این‌کار با استفاده از یک فعال‌ساز انجام می‌شود که مجموعه‌ای از گیت‌های AND برای هر بیت موجود در حافظه است. همگی این‌ها به یک ورودی دیگر با نام بیت “خواندن” متصل هستند. بیت‌های نوشتن و خواندن غالبا تحت عنوان set و enable نیز نام‌گذاری می‌شوند.

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

781A7302-6B1A-483A-BEC4-A91003D8C5E7 تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

هر رجیستر همچنان دارای یک بیت خواندن و نوشتن است؛ اما در این پیکره‌بندی، ورودی و خروجی موجودیت‌های یکسانی هستند. این موضوع واقعا خوب است. به‌عنوان مثال در صورتی‌که مایل باشید محتوای ثبات R1 را در رجیستر R2 کپی نمایید، بیت خواندن ثبات R1 را روشن می‌کنید. بدین ترتیب محتوای ثبات R1 بر روی گذرگاه قرار می‌گیرد. در حالی‌که بیت خواندن روشن است، بیت نوشتن ثبات R2 را روشن خواهید کرد. با این اقدام، محتوای گذرگاه بر روی ثبات R2 کپی می‌شود.

ثبات‌ها برای ساخت حافظه‌های رم نیز به‌کار گرفته می‌شوند. رم غالبا در بستر یک شبکه با سیم‌هایی در 2 جهت قرار می‌گیرد:

0A0A5260-DD4F-4E63-A4B5-D86C50C8B531 تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

دیکدرها یک ورودی باینری را دریافت نموده و سیم با شماره مربوطه را فعال می‌کنند. به‌عنوان مثال عدد 11 در مبنای 2 معادل 3 در مبنای 10 بوده و بزرگ‌ترین عدد 2 بیتی به‌شمار می‌آید؛ بنابراین دیکدر بالاترین سیم را روشن خواهد کرد. در هر تقاطع، یک رجیستر وجود دارد و تمامی آن‌ها به گذرگاه مرکزی و یک ورودی مرکزی خواندن و نوشتن متصل هستند. هر 2 ورودی خواندن و نوشتن تنها در صورتی روشن خواهند شد که 2 سیم عبورکننده از ثبات نیز روشن باشند. این موضوع به‌طور موثر اجازه می‌دهد تا به انتخاب خود، عملیات خواندن یا نوشتن روی ثبات را تعیین نمایید. مجددا بایستی یادآوری کرد که یک رم مدرن، بسیار پیچیده‌تر است؛ اما این پیکره‌بندی همچنان عمل می‌کند.

مفهوم ساعت، Stepper و دیکدر

ثبات‌ها در همه‌جا مورد استفاده قرار می‌گیرند و ابزاری اساسی جهت انتقال داده و ذخیره‌سازی اطلاعات در CPU به‌شمار می‌آیند. اما چه چیزی فرمان جابه‌جایی اطلاعات را به آن‌ها ارسال می‌کند؟

کلاک یا ساعت، نخستین قسمت در هسته CPU است که در فواصل زمانی معین خاموش و روشن خواهد شد. این مشخصه بر حسب واحد هرتز یا سیکل برثانیه سنجیده شده و همان سرعتی است که در تبلیغات CPUها نیز به چشم می‌خورد. یک تراشه 5 گیگاهرتزی قادر به اجرای 5 میلیارد چرخه در هر ثانیه است. سرعت کلاک غالبا یک معیار بسیارمناسب برای سنجش سرعت CPU محسوب می‌شود.

A57AA82B-3EA5-4AFE-9E74-2298C185235D تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

کلاک دارای 3 وضعیت متفاوت است: ساعت پایه (base)، ساعت فعال (enable) و ساعت تنظیم (set)

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

کلاک به یک Stepper متصل می‌شود که از عدد 1 تا گام بیشینه را شمارش نموده و با انجام کار مجددا به عدد 1 باز خواهد گشت. بعلاوه برای هر ثباتی که CPU قادر به نوشتن اطلاعات بر روی آن‌ها است، کلاک به گیت‌های AND نیز اتصال پیدا می‌کند:

E90B8F25-EFA7-4630-B6BA-B086BDC71AB9 تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

این گیت‌های AND به خروجی یک جزء دیگر با نام رمزگشای دستورالعمل‌ها متصل هستند. دیکدر دستوراتی نظیر “SET R2 TO R1” را دریافت نموده و آن‌را به شکلی که برای CPU قابل‌فهم باشد، رمزگشایی می‌کند. دیکدر از رجیسترهای داخلی خاص خود موسوم به “ثبات دستورالعمل” بهره می‌گیرد و عملیات جاری نیز در این ثبات ذخیره می‌شود. نحوه دقیق انجام این‌کار به سیستم در حال اجرا توسط شما وابسته خواهد بود. اما با رمزگشایی دستورالعمل، بیت‌های set و enable مناسب برای رجیستر مربوطه روشن شده و مطابق با ساعت پردازنده، خاموش خواهند شد.

دستورالعمل‌های برنامه در حافظه رم (یا در سیستم‌های پیشرفته‌تر بر روی حافظه کش L1 که به CPU نزدیک‌تر است) ذخیره خواهند شد. از آن‌جا که داده‌های برنامه در ثبات‌ها ذخیره می‌شوند، لذا دقیقا همانند هر متغیر دیگری می‌توانند حین فرآیند انتقال یا پرش دچار تغییر شوند. به این ترتیب برنامه‌ها در ساختار خود از حلقه‌ها و گزاره‌های if استفاده می‌کنند. یک دستور پرش، موقعیت فعلی در حافظه را تعیین می‌کند؛ موقعیتی که داده‌های موجود در آن توسط دیکدر دستورالعمل خوانده شده و به مکانی متفاوت منتقل می‌شوند.

چگونگی کارکرد کلیه اجزا در کنار یکدیگر

FEF2BE7F-2810-4310-ADBB-ED359FB3321A تمام چیزی که باید در مورد نحوه عملکرد CPU بدانید

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

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



لینک منبع

ممکن است به این موارد نیز علاقه مند باشید:

آخرین مطالب