چگونه یک CPU در داخل کار می کند؟ از ترانزیستورها تا معماری مجموعه دستورالعمل
CPU (واحد پردازش مرکزی) مغز یک کامپیوتر و ارتباط اصلی بین نرم افزار و سخت افزار است. کارکرد نرم افزار بر روی سخت افزار را ممکن می سازد.
با این حال، چگونه با جزئیات عمیق کار می کند؟ و چگونه می تواند برنامه ها را به سخت افزار کامپیوتر خاصی متصل کند؟
هدف این مقاله این است که با توضیح عمیق نحوه عملکرد یک CPU، این ارتباط را درک کنید. این موضوع اغلب فقط برای کسانی آشنا است که در طراحی سخت افزار کامپیوتر از کالج پیشینه دارند.
اغلب، بسیاری از فارغ التحصیلان علوم کامپیوتر هرگز کلاسی در منطق دیجیتال پیشرفته ندارند. پس حتی برنامه نویسان بسیار با تجربه نیز ممکن است درک درستی از نحوه پردازش اطلاعات توسط یک CPU نداشته باشند.
اگرچه ما گیتهای منطقی را از ترانزیستورها یا اجزای CPU از گیتهای منطقی طراحی نمیکنیم، اما مفاهیم کلیدی مورد نیاز برای درک اینکه چگونه یک CPU دادههای ایجاد شده توسط یک برنامه نوشته شده در یک زبان برنامهنویسی را پردازش میکند، پوشش خواهیم داد.
خواهیم دید:
قیاس: مقدمه ای بر آنچه باعث می شود CPU ها کار کنند
جاده های داده: پیمایش در مسیر داده های CPU
کنترلکنندههای ترافیک: نقش ماشینهای حالت در CPU
روال روزانه: چرخه Fetch-Execute توضیح داده شده است
کتاب قانون: رمزگشایی معماری مجموعه دستورالعمل (ISA)
از زبان های برنامه نویسی گرفته تا کد ماشین
چالش های شهر: رسیدگی به مشکلات CPU
نتیجه گیری: واحدهای کنترل بهتر و قطعات داده
من از Intel 8008 به عنوان مرجع استفاده خواهم کرد.
قیاس: مقدمه ای بر آنچه باعث می شود CPU ها کار کنند
برای درک عمیق نحوه عملکرد یک کامپیوتر، بیایید یک شهر را به عنوان سناریوی زندگی واقعی خود تصور کنیم. ما عناصر کامپیوتر را با بخشهایی از این شهر مقایسه میکنیم.
به این ترتیب، دید واضح تری از قسمت های مختلف CPU و چرایی اهمیت آنها خواهید داشت. پس از آن، ما به طور عمیق به هر یک از اجزاء نگاه خواهیم کرد
هاب حافظه: آشنایی با رم و رام
RAM (حافظه دسترسی تصادفی) مانند یک کتابخانه عمومی شهری است: کتاب ها و اطلاعات را برای افراد ذخیره می کند تا در صورت نیاز آنها را قرض بگیرند و برگردانند.
در رایانه، رم داده ها و دستورالعمل ها را از حافظه رایانه بارگیری می کند CPU برای پردازش داده ها مورد نیاز است.
رام (بخوانید فقط حافظه) مانند یک آرشیو تاریخی در شهر است: فقط رکوردهایی را ذخیره می کند که هرگز تغییر نخواهند کرد و هرگز از مردم قرض نمی گیرند.
جاده های داده: پیمایش در مسیر داده های CPU
مسیر داده CPU شبکه ای از جاده های شهر است. اتوبوس ها و رجیسترهای مسیر داده CPU مانند شبکه جاده های شهر عمل می کنند.
همانطور که جاده ها به حرکت خودروها و افراد کمک می کنند، مسیر داده های CPU تضمین می کند که داده ها به شیوه ای کارآمد در CPU حرکت کنند.
کنترلکنندههای ترافیک: نقش ماشینهای حالت در CPU
ماشین های ایالات به عنوان سیستم های کنترل ترافیک عمل می کنند.
سیستم کنترل ترافیک جریان وسایل نقلیه را مدیریت می کند و ماشین های حالت جریان داده ها را طبق دستورالعمل های ارائه شده به CPU مدیریت می کنند.
روال روزانه: چرخه Fetch-Execute توضیح داده شده است
چرخه واکشی-اجرای رفت و آمد روزانه برای ساکنان شهر است.
مردم هر روز تصمیم می گیرند که کجا بروند، به آنجا سفر کنند، وظایف خود را انجام دهند و به خانه بازگردند. این روند همیشه تکرار می شود.
به همین ترتیب، CPU دستورالعمل ها را واکشی می کند، آنها را رمزگشایی می کند و آنها را در یک چرخه تکراری اجرا می کند.
کتاب قانون: رمزگشایی معماری مجموعه دستورالعمل (ISA)
معماری مجموعه دستورالعمل مانند قانون حمل و نقل شهری است.
قانون حمل و نقل شهری نشان می دهد که چه کاری در شهر در رابطه با حمل و نقل افراد قانونی است.
معماری مجموعه دستورالعمل مجموعه قوانین و دستورالعمل هایی است که CPU می تواند اجرا کند.
هاب حافظه: آشنایی با رم و رام
RAM مخفف Random Access Memory است و می توان از آن برای خواندن و نوشتن داده ها استفاده کرد.
CPU ابتدا داده ها را از حافظه رایانه به RAM می برد تا از زمان انتظار طولانی جلوگیری کند.
سپس از داده های RAM برای تکمیل دستورالعمل ها استفاده می کند.
آنها در رایانه ها و در بسیاری از دستگاه های الکترونیکی به دلیل فرار بودن حافظه استفاده می شوند. این بدان معناست که دادهها فقط در زمانی که رایانه روشن است وجود دارد و آن را برای ذخیرهسازی موقت در حین کار دستگاه ایدهآل میکند.
ROM مخفف Read Only Memory است. در آنجا، فقط داده هایی وجود دارد که در طول ساخت کامپیوتر اضافه شده است.
آنها به طور گسترده در سیستم عامل برای دستگاه ها، BIOS و سیستم های کوچک جاسازی شده استفاده می شوند.
این به این دلیل است که ROM یک حافظه غیر فرار است. این بدان معنی است که وقتی دستگاه خاموش می شود در حافظه باقی می ماند و برای ذخیره سازی دائمی داده ها بسیار مهم است.
جاده های داده: پیمایش در مسیر داده های CPU
مسیر داده CPU یک مدار دیجیتال پیچیده با اجزای بسیاری است که با یکدیگر کار می کنند، مانند:
واحد منطق حسابی (ALU): عملیات حسابی و منطقی را در داخل قسمت داده CPU انجام می دهد.
ثبتها: مکانهای ذخیرهسازی سریع و کوچک برای دادههای موقت بازیابی شده از RAM.
Buses: گذرگاه های داده، کنترل و آدرس سیم هایی هستند که در داخل مسیر داده های CPU برای انتقال اطلاعات استفاده می شوند.
در حالی که CPU ها از زمان Intel 8008 تغییر زیادی کرده اند، اینها برخی از اجزایی هستند که هنوز به عنوان پایه و اساس همه CPU ها عمل می کنند.
به لطف آنها، می توان اجازه داد که جریان داده شود، اما جریان واقعی را کنترل نکنیم. این وظیفه واحد کنترل در CPU است که در Intel 8008 به عنوان ماشین های حالت ایجاد شده است.
کنترلکنندههای ترافیک: نقش ماشینهای حالت در CPU
ماشین حالت سیستمی است که برای انجام وظایف بین حالت های مختلف جابجا می شود.
آنها از تعدادی حالت و انتقال تشکیل شده اند. آنها در Intel 8008 برای ایجاد واحد کنترل به دلیل ساختار و روش مؤثر آن برای مدیریت توالی عملیات مورد نیاز برای پردازش دستورالعمل ها استفاده شدند.
هر یک از حالت ها می توانند یک یا چند جزء CPU را برای پردازش یک دستورالعمل اسمبلی خاص فعال کنند.
به این ترتیب، برخی از قطعات مسیر داده CPU برای تکمیل یک دستورالعمل فعال می شوند.
علاوه بر این، به لطف این ماشین های حالت، CPU کامل است و می تواند تمام دستورالعمل های مورد نظر کاربر را در یک حلقه پیوسته به نام چرخه واکشی-اجرا انجام دهد.
روال روزانه: چرخه Fetch-Execute توضیح داده شده است
ماشین حالت در CPU کنترل می کند که چگونه مسیر داده CPU با هم کار می کند تا یک دستور داده شده را انجام دهد.
امروزه هر کامپیوتری میلیون ها دستورالعمل در ثانیه دریافت می کند. به این ترتیب، ماشین های حالت به عنوان یک حلقه برای دریافت دستورالعمل ها و اجرای آنها عمل می کنند.
این فرآیند به عنوان چرخه واکشی-اجرای شناخته می شود، که در آن CPU دستورالعمل ها را بازیابی و اجرا می کند:
Fetch: CPU دستورات را از حافظه واکشی می کند.
رمزگشایی: دستورالعمل واکشی شده برای تعیین عمل مورد نیاز رمزگشایی می شود.
Execute: دستورالعمل رمزگشایی شده با استفاده از اجزای CPU مناسب اجرا می شود.
Write-back: نتیجه اجرا به حافظه یا ثبات بازگردانده می شود.
در مرحله واکشی، واحد کنترل به RAM می گوید که دستور بعدی را به CPU بدهد.
در مرحله رمزگشایی، CPU دستور را تفسیر می کند و در مرحله اجرا، عملیات را انجام می دهد. پس از آن، مرحله نوشتن بازگشت اطمینان حاصل می کند که نتیجه به درستی ذخیره می شود.
این چرخه زمانی که رایانه شخصی روشن است ادامه می یابد. به این ترتیب، در پردازنده های مدرن، میلیاردها دستورالعمل در ثانیه پردازش می شود.
اما اطلاعات از صفحه کلید یا ماوس چیست؟
این داده ها از رم نمی آیند بلکه از طریق مکانیزمی به نام وقفه ها مدیریت می شوند. در حالی که CPU دستورالعمل ها را اجرا می کند، می تواند تشخیص دهد که چه زمانی داده ها از دستگاه های جانبی می آیند.
اگر این اتفاق بیفتد، CPU کار فعلی خود را متوقف می کند و دستورالعمل های دستگاه های جانبی را اولویت بندی می کند. پس از آن، CPU وظایف قبلی خود را از سر می گیرد.
راه های زیادی برای مدیریت وقفه ها وجود دارد که برخی از محبوب ترین آنها عبارتند از:
وقفه های نظرسنجی : CPU به صورت دوره ای تحلیل می کند که آیا وقفه رخ داده است.
وقفه های برداری : دستگاه قطع کننده CPU را به روال سرویس وقفه مناسب هدایت می کند.
وقفههای اولویتدار : وقفهها به سطوح اولویت متفاوتی اختصاص داده میشوند، و اطمینان حاصل میشود که ابتدا وظایف حیاتی انجام میشود.
به این ترتیب، با این مکانیسم ها، CPU عملکرد خود را در هنگام تعامل با دستگاه های جانبی حفظ می کند.
کتاب قانون: رمزگشایی معماری مجموعه دستورالعمل (ISA)
با واحد کنترل، CPU و RAM کامل، می توان دستورالعمل های زیادی را انجام داد.
اما چه دستورالعمل هایی را می توان روی یک CPU انجام داد؟ و چند تا؟ این همان چیزی است که Instruction Set Architecture (ISA) حل می کند.
ISA مجموعه ای از دستورالعمل ها را تعریف می کند که یک CPU خاص می تواند اجرا کند. این چیزی است که به برنامه نویسان اجازه می دهد بفهمند که یک پردازنده چه کاری می تواند انجام دهد و چه کاری را نمی تواند بدون نیاز به درک تمام سخت افزار منطق دیجیتال داخل آن انجام دهد.
به این ترتیب، به عنوان رابط بین نرم افزار و سخت افزار عمل می کند.
جنبه های کلیدی ISA:
انواع دستورالعمل: شامل دستورات حسابی، منطقی، کنترلی و انتقال داده است.
حالتهای آدرسدهی: روشهایی برای تعیین عملوندهای دستورالعملها.
رجیسترها: مجموعه ای از رجیسترها که توسط دستورالعمل ها برای استفاده در دسترس هستند.
ISA های رایج:
x86: به طور گسترده در پردازنده های دسکتاپ و سرور استفاده می شود.
ARM: در دستگاه های موبایل و جاسازی شده به دلیل بهره وری انرژی غالب است.
RISC-V: یک استاندارد باز استاندارد ISA که برای طیف وسیعی از کاربردها طراحی شده است.
هر CPU اغلب نسخه خاص خود را از معماری مجموعه دستورالعمل دارد. و معماری مجموعه دستورالعمل اغلب با زبان های برنامه نویسی اسمبلی تعریف می شود.
به همین دلیل است که نسخه های زیادی از زبان برنامه نویسی اسمبلی وجود دارد.
از آنجایی که هر CPU مشخصات سخت افزاری خاص خود را دارد، هر کدام دارای اجزای مشابه با CPU های دیگر و در نتیجه زبان های برنامه نویسی اسمبلی مشابه هستند.
انتخاب ISA بر طراحی، عملکرد و سازگاری CPU با نرم افزار تأثیر می گذارد.
به عنوان مثال، پیچیدگی x86 به برنامه های دسکتاپ قدرتمند اجازه می دهد، در حالی که سادگی ARM به نفع دستگاه های تلفن همراه کم مصرف است.
از زبان های برنامه نویسی تا کد ماشین
در حالی که هر پردازنده زبان اسمبلی مخصوص به خود را دارد، مدیریت کد در اسمبلی و نوشتن کد در اسمبلی برای ساخت برنامه های بزرگ می تواند پیچیده باشد.
این بسیار پیچیده است و ممکن است منجر به اتلاف وقت برای تصحیح چیزها و جزئیات به جای مدیریت سریعتر و آسان تر توسعه یک برنامه و در واقع توسعه آن شود.
برای حل این مشکل، بسیاری از زبان های برنامه نویسی از اسمبلی ساخته شدند. کد را در زبان های برنامه نویسی می نویسیم و سپس به اسمبلی تبدیل می شود.
به این ترتیب، به جای صرف زمان بر روی جزئیات، می توان روی موارد مهم تری مانند توسعه سیستم و طراحی الگوریتم تمرکز کرد.
این فرآیندی است که توسط آن اکثر زبان های برنامه نویسی کد خود را به اسمبلی تبدیل می کنند:
کد را از طریق کامپایلر یا مفسر به کد اسمبلی تبدیل کنید.
سپس کد اسمبلی به کد ماشین خام تبدیل شده و توسط CPU اجرا می شود.
یک حلقه خاص در ماشین حالت CPU تکمیل می شود.
سپس CPU دستور بعدی را واکشی و اجرا می کند.
بیایید دو نمونه از زبان های برنامه نویسی را ببینیم که این کار را انجام می دهند!
زبان برنامه نویسی C
زبان برنامه نویسی C از اسمبلی در اوایل دهه 1970 ایجاد شد. این زبان برای ارائه یک زبان سطح بالاتر برای برنامه نویسی کارآمد در سطح سیستم ایجاد شده است که امکان دستکاری سخت افزار را نیز فراهم می کند.
با یک کامپایلر، کد C به اسمبلی تبدیل می شود و سپس توسط CPU کامل پردازش می شود.
به لطف این تبدیل، با نوشتن برنامه ها به زبان برنامه نویسی C، می توانیم بسیاری از مشکلات را به شیوه ای کارآمدتر برطرف کنیم، مانند:
خطاهای مدیریت حافظه
بافر سرریز می شود
مسائل بهینه سازی دستی
امروزه حتی برای کارهای ساده تر، کد اسمبلی تبدیل شده از کامپایلر C بسیار کارآمدتر و قابل اعتمادتر از نوشتن کد اسمبلی توسط انسان است.
اگر می خواهید در مورد کامپایلر C بیشتر بدانید، می توانید تحلیل کنید:
زبان برنامه نویسی پایتون
زبان برنامه نویسی پایتون از زبان C در اواخر دهه 1980 ایجاد شد.
هدف آن ارائه یک زبان برنامه نویسی کاربرپسند و سطح بالا که بر خوانایی و سادگی تأکید دارد و اجازه می دهد توسعه سریع برنامه
در پایتون، یک مفسر کد پایتون را خط به خط به بایت کد تبدیل می کند.
و این بایت کد در CPU به کد ماشین تبدیل می شود و در چرخه fetch-execute پردازش می شود.
به این ترتیب، این امکان برای افراد فراهم میشود که به روشی سادهتر برنامهنویسی کنند و روی برنامههای بزرگتر تمرکز کنند، مانند:
مدل های هوش مصنوعی
برنامه های وب
تحلیل داده ها
محاسبات علمی
با این حال، چالش CPU در تمام زبان های برنامه نویسی این است که داده ها را به صورت متوالی پردازش می کند.
چالش های شهر: رسیدگی به مشکلات CPU
CPU یک هسته ای سنتی، داده ها را به صورت متوالی، دستورالعمل پشت دستور پردازش می کند. اگر دستورالعمل های زیادی برای پردازش داشته باشیم، این یک محدودیت می شود.
این همان چیزی است که GPU ها (واحدهای پردازش گرافیکی) برای رفع آن آمدند. به لطف پردازندههای گرافیکی، میتوانیم دستورالعملها را به صورت موازی پردازش کنیم و در نتیجه زمان محاسبات را به میزان قابل توجهی کاهش دهیم.
با این قابلیت های پردازش موازی، دستیابی به محاسبات بسیار سریعتر و کارایی بهبود یافته در طیف وسیعی از کاربردها امکان پذیر است.
نتیجه گیری: واحدهای کنترل بهتر و قطعات داده
علاوه بر اینکه CPU های مدرن چند هسته ای هستند، پیشرفت در واحدهای کنترل و مسیرهای داده نقش مهمی در بهبود عملکرد پردازنده دارد.
واحدهای کنترل اغلب با استفاده از ریزبرنامه نویسی یا واحدهای کنترل سیمی سخت طراحی می شوند.
ریزبرنامهنویسی انعطافپذیری بیشتر و بهروزرسانیهای آسانتری را برای منطق کنترل ارائه میدهد، در حالی که واحدهای کنترل سیمی با پیادهسازی مستقیم سیگنالهای کنترل، عملکرد سریعتری را ارائه میکنند.
یکی دیگر از پیشرفت های مهم، اکتشاف مواد جدید برای ترانزیستورها در گیت های منطقی است.
به جای تکیه صرف بر سیلیکون، محققان در حال تحلیل مواد جایگزین برای ایجاد پردازندههای سریعتر و کارآمدتر هستند.
همانطور که فناوری به پیشرفت خود ادامه می دهد، درک این مفاهیم اساسی هم برای علاقه مندان و هم برای متخصصان در این زمینه ضروری خواهد بود.
همگام شدن با این پیشرفت ها، نوآوری و بهبود مستمر طراحی و عملکرد CPU را تضمین می کند.
ارسال نظر