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

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

اگر چند ترانزیستور را به طور صحیح روی هم قرار گیرند، در این صورت آنچه را که به عنوان دروازه منطقی شناخته میشود، ایجاد شده است. دروازههای منطقی دو ورودی باینری میگیرند، بر روی آنها عملیاتی انجام میدهند و یک خروجی را برمیگردانند. به عنوان مثال دروازه OR در صورت درست بودن هر یک از ورودیها، True برمیگرداند. دروازه AND درست بودن هر دو ورودی را بررسی میکند، XOR بررسی میکند که فقط یکی از ورودیها درست باشد و N-variants (NOR، NAND و XNOR) نسخه معکوس دروازه پایه آنها است.
انجام عملیات ریاضی با دروازهها

فقط با دو دروازه میتوان عمل جمع کردن باینری اولیه را انجام داد. نمودار بالا یک نیمه جمع کننده را نشان میدهد. این جمع کننده با استفاده از منطق (Logic)، یک زمین بازی آنلاین رایگان برای دروازههای منطقی ایجاد کرده است. اگر فقط یکی از ورودیها روشن باشد، دروازه XOR در اینجا روشن میشود، اما نه هر دو. اگر هر دو ورودی روشن باشد، دروازه AND روشن میشود، اما اگر ورودی وجود ندارد، خاموش میماند. بنابراین اگر هر دو روشن باشند، XOR خاموش میماند و دروازه AND روشن میشود و به جواب صحیح دو می رسد.

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

یک سیستم جمع کننده کامل دارای سه ورودی است، دو عدد ورودی برای اضافه کردن و یک ورودی برای حمل کردن. حمل کردن برای وقتی که عدد نهایی از آنچه در یک بیت ذخیره میشود، بیشتر است استفاده میشود. جمع کنندههای کامل در یک زنجیره به هم متصل میشوند و حمل از یک جمع کننده به جمع کننده دیگر اضافه میشود. حمل به نتیجه دروازه XOR در نیمه جمع کننده اول اضافه میشود و یک دروازه OR اضافی وجود دارد که هر دو مورد را روشن می کند.
وقتی هر دو ورودی روشن است، حمل روشن میشود و آن را به جمع کننده بعدی در زنجیره بعدی میفرستد.

حرکت به بیتهای بیشتر اساساً فقط به معنای جمع کنندههای بیشتر در یک زنجیره طولانی است.
بیشتر عملیات ریاضی دیگر را میتوان با جمع انجام داد. ضرب فقط جمع مکرر است، تفریق را میتوان با مقداری وارونگی بیت انجام داد و تقسیم فقط تفریق مکرر است. در حالیکه همه کامپیوترهای مدرن راه حلهای مبتنی بر سخت افزار برای سرعت بخشیدن به کارهای پیچیدهتر دارند، از نظر فنی میتوان همه کارها را با یک مدار جمعکننده کامل انجام داد.
گذرگاه (Bus) و حافظه در پردازنده

در حال حاضر، کامپیوتر ما چیزی بیش از یک ماشین حساب بد نیست (منظور مواردی است که در بالا توضیح داده شده است). به این دلیل که هیچ چیزی را به یاد نمیآورد و با خروجیهای خود کاری انجام نمیدهد.
در بالا یک سلول حافظه نشان داده شده است که میتواند همه این کارها را انجام دهد. در زیر این پوسته، از بسیاری از دروازههای NAND استفاده میشود و در زندگی واقعی بسته به روش ذخیرهسازی میتواند کاملاً متفاوت باشد، اما عملکرد آن یکسان است. مقداری ورودی به آن داده میشود، بیت «نوشتن» را روشن میکند و ورودیها را در داخل سلول ذخیره میکند. این فقط یک سلول حافظه نیست، زیرا ما همچنین به روشی برای خواندن اطلاعات از آن نیاز داریم. این کار با فعال کننده انجام میشود، که مجموعهای از دروازههای AND برای هر بیت در حافظه است، همه به ورودی دیگری به نام بیت «خواندن» گره خورده است. بیتهای نوشتن و خواندن اغلب چیدن (set) و قادر ساختن (enable) نیز نامیده میشوند.
این مجموعه کامل در آنچه به عنوان یک ثبت کننده شناخته میشود بسته بندی شده است. این ثبت کنندهها (رجیسترها) به گذرگاه (bus) متصل میشوند. گذرگاه مجموعه ای از سیمها است که در کل سیستم جریان دارد و به هر جز متصل است. حتی کامپیوترهای مدرن نیز دارای یک گذرگاه (bus) هستند، اگرچه ممکن است دارای چندین گذرگاه برای بهبود عملکرد چند وظیفهای باشند.

هر ثبتکننده یک بیت نوشتن و خواندن دارد، اما در تنظیم ورودی و خروجی به یک صورت عمل میکند. این در واقع خوب است. مثلا اگر میخواستید محتوای R1 را در R2 کپی کنید، بیت خوانده شده را برای R1 روشن میکنید که باعث میشود محتوای R1 به گذرگاه وارد شود. در حالی که بیت خواندن روشن است، میتوانید بیت نوشتن را برای R2 روشن کنید، که میتواند محتوای گذرگاه را در R2 کپی کند.
همچنین از ثبتکنندهها برای ایجاد حافظه (RAM) استفاده میشود. حافظه (RAM) معمولاً در شبکه قرار میگیرد، سیمها به دو جهت میروند.

رمزگشاها ورودی باینری گرفته و سیم شمارهگذاری شده مربوطه را روشن میکنند. به عنوان مثال، عدد 11، 3 باینری است که بالاترین عدد 2 بیتی است، بنابراین رمزگشا بالاترین سیم را روشن میکند. در هر تقاطع، یک ثبتکننده وجود دارد. همه اینها به ورودی مرکزی و ورودی اصلی نوشتن و خواندن متصل میشوند. ورودی خواندن و نوشتن فقط در صورتی روشن میشوند که دو سیم عبوری از روی ثبت کننده نیز روشن باشند. در واقع این امکان را میدهد تا ثبتی انتخاب شود که از آن برای نوشتن و خواندن استفاده شود. باز هم، حافظه مدرن به مراتب پیچیدهتر است، اما این تنظیمات هنوز کارساز است.
مفهوم ساعت (Clock)، مرحله (Stepper) و رمزگشا (Decoder) در پردازنده
ثبتکنندهها در همه جا مورد استفاده قرار میگیرند و ابزار اصلی برای جابجایی دادهها و ذخیره اطلاعات در پردازنده (CPU) هستند. پس چه چیزی به آنها میگوید که همه چیز را جابجا کنند؟
ساعت اولین جزء هسته پردازنده است. ساعت در یک بازه مشخص خاموش و روشن میشود، اندازهگیری آن بر حسب هرتز یا سیکل در ثانیه است. این سرعتی است که در کنار پردازنده های مرکزی تبلیغ میشود. یک تراشه 5 گیگاهرتزی میتواند 5 میلیارد سیکل در ثانیه انجام دهد. سرعت کلاک اغلب معیار بسیار خوبی برای سرعت پردازنده است.

ساعت دارای سه حالت مختلف است: ساعت پایه، ساعت فعال و ساعت تنظیم شده. ساعت پایه برای نیم سیکل روشن است و برای نیمه دیگر خاموش است. ساعت روشن برای روشن کردن ثبتکنندهها استفاده میشود و برای اطمینان از فعال بودن دادهها باید مدت بیشتری روشن باشد. ساعت تنظیم شده همیشه باید همزمان با ساعت فعال باشد، در غیر این صورت میتواند دادههای نادرستی نوشته شود.
ساعت به مرحله (stepper) متصل است که از یک تا حداکثر مرحله(step) شمارش میشود. ساعت پس از اتمام کار، خود را مجدداً به یک تنظیم میکند. همچنین ساعت برای هر ثبتکننده که پردازنده میتواند برای آنها بنویسد به AND متصل است.

این دروازههای AND همچنین به خروجی یک جز دیگر، رمزگشا (decoder) دستورالعمل متصل میشوند. رمزگشای دستورالعمل، یک دستورالعمل مانند “SET R2 TO R1” را میگیرد و آن را رمزگشایی میکند تا پردازنده بتواند آن را درک کند. این یک ثبت (رجیستر) داخلی مخصوص به خود دارد که ثبت دستورالعمل (Instruction Register) نام دارد و در آنجا عملیات فعلی ذخیره میشود. پس از رمزگشایی، مجموعه صحیح روشن شده و بیتهایی را برای ثبتهای صحیح فعال میکند که مطابق ساعت خاموش میشوند.
دستورالعمل های برنامه در حافظه (ram) (یا حافظه پنهان L1 که در سیستمهای مدرن، نزدیکتر به CPU قرار دارد) ذخیره میشوند. از آنجا که دادههای برنامه در ثبت کنندهها (رجیسترها) ذخیره میشود، دقیقاً مانند هر متغیر دیگر، میتوان با استفاده از آن دست به تغییر برنامه زد. اینگونه برنامهها ساختار خود را با حلقه و دستورات بدست میآورند. دستورالعمل پرش (jump) مکان فعلی حافظه را تنظیم میکند که رمزگشای دستورالعمل آن را از مکان دیگری میخواند.
چگونه همه این موارد اتفاق میافتد

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