از کد تا اجرا: اصولی که پشت معماری کامپیوترها قرار دارند

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

معماری کامپیوترلایه‌های انتزاعمعماری مجموعه دستورات

~5 min read · Updated Sep 6, 2026

معماری کامپیوتر دقیقاً چه چیزی را بررسی می‌کند

وقتی افراد اصطلاح Computer Architecture را می‌شنوند، معمولاً فقط اجزای فیزیکی یک ماشین را تصور می‌کنند. در واقعیت، این حوزه دو لایه به‌هم‌پیوسته را پوشش می‌دهد: Instruction Set Architecture (ISA) که واژگانی که یک پردازنده می‌فهمد را تعریف می‌کند، و Hardware Organization که پیاده‌سازی فیزیکی اجراکننده آن دستورات است.

درک این تفاوت اهمیت دارد چون یک مجموعه دستور واحد می‌تواند به شیوه‌های بسیار متفاوتی پیاده‌سازی شود. یک تراشه کم‌مصرف برای دستگاه‌های embedded و یک پردازنده سرور با کارایی بالا می‌توانند هر دو از یک مجموعه دستور پشتیبانی کنند در حالی که سازمان داخلی، سرعت و هزینه‌شان کاملاً متفاوت است.

هشت ایده بنیادین پشت پردازنده‌های امروزی

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

طراحی بر اساس قانون مور

Moore's Law بیان می‌کند که تعداد ترانزیستورهای روی یک تراشه تقریباً هر دو سال یک‌بار دو برابر می‌شود. طراحان سیستم‌ها را با این پیش‌بینی طراحی می‌کنند که سخت‌افزار آینده منابع بیشتری خواهد داشت، بنابراین تصمیمات طراحی امروز با در نظر گرفتن ظرفیت فردا گرفته می‌شود.

استفاده از انتزاع برای ساده‌سازی طراحی

Abstraction جزئیات پیاده‌سازی را پشت یک رابط ساده‌تر پنهان می‌کند. برنامه‌نویسی که با یک زبان سطح بالا کار می‌کند نیازی ندارد بداند پردازنده داخلاً دستورات را چگونه اجرا می‌کند، و طراح سخت‌افزاری که یک مدار می‌سازد نیازی ندارد بداند چه برنامه‌هایی روی آن اجرا خواهد شد.

سریع کردن حالت رایج

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

بهبود کارایی از طریق موازی‌سازی

Parallelism یعنی انجام همزمان چند عملیات به‌جای اجرای پشت‌سرهم آن‌ها. این ایده در همه سطوح دیده می‌شود، از اجرای همزمان چند دستور درون یک هسته تا اجرای هم‌زمان چند هسته یا چند ماشین در کنار هم.

بهبود کارایی از طریق پایپ‌لاینینگ

Pipelining مراحل اجرای چند دستور را هم‌پوشانی می‌کند، شبیه به یک خط تولید. در حالی که یک دستور در حال decode شدن است، دستور دیگری می‌تواند از قبل fetch شود و دستور سومی در حال اجرا باشد.

افزایش کارایی از طریق پیش‌بینی

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

سلسله‌مراتب حافظه

حافظه سریع گران و کوچک است؛ حافظه کند ارزان و بزرگ است. سیستم‌ها چندین سطح را ترکیب می‌کنند، از کش‌های سریع و کوچک تا فضای ذخیره‌سازی بزرگ و کند، تا داده‌های پراستفاده نزدیک به پردازنده نگه داشته شوند.

قابلیت اطمینان از طریق افزونگی

اجزا ممکن است دچار خرابی شوند. افزودن اجزای افزونه یا مکانیزم‌های بررسی خطا به سیستم اجازه می‌دهد حتی وقتی بخشی از آن خراب می‌شود، همچنان درست کار کند یا حداقل خطا را تشخیص دهد.

از کد منبع تا برنامه در حال اجرا

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

  • توسعه‌دهنده کد را با یک High-Level Language مانند C یا Java می‌نویسد، که به زبان انسان نزدیک و از جزئیات سخت‌افزار دور است.
  • یک Compiler این کد سطح بالا را به Assembly Language ترجمه می‌کند، که نمایشی نمادین از دستوراتی است که یک خانواده خاص از پردازنده می‌فهمد.
  • یک Assembler، زبان اسمبلی را به Machine Language تبدیل می‌کند، که شکل باینری‌ای است که سخت‌افزار واقعاً می‌خواند.
  • Operating System بارگذاری این کد ماشین در حافظه را مدیریت کرده و اجرای آن را در کنار سایر برنامه‌های در حال اجرا هماهنگ می‌کند.

مثالی از یک ایده واحد بیان‌شده در دو سطح متفاوت:

عبارت سطح بالا:
total = price + tax

دستور ساده‌شده مشابه اسمبلی:
ADD total, price, tax

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

چرا این ایده‌ها برای سیستم‌های امروزی اهمیت دارند

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

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

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

Continue

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

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

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

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

Continue