
توضیحی شفاف و ساختاریافته از نحوه تعامل سختافزار و نرمافزار در سطح بنیادی. این محتوا طراحی پردازنده، اجرای دستورات، پایپلاین، سلسلهمراتب حافظه، موازیسازی و اصول اصلی تعیینکننده عملکرد سیستم را پوشش میدهد. با استفاده از یک معماری دستورالعمل مدرن و سادهشده، پایهای قوی برای درک واقعی نحوه کار کامپیوترها و سرورها ایجاد میکند.
هر برنامهای که یک توسعهدهنده مینویسد در نهایت به سیگنالهای الکتریکی داخل تراشه تبدیل میشود. این مقاله توضیح میدهد معماری کامپیوتر دقیقاً چه چیزی را بررسی میکند، هشت ایده بنیادین که طراحی پردازندههای امروزی را شکل دادهاند را مرور میکند و مسیری که یک برنامه از کد قابلفهم برای انسان تا سختافزار طی میکند را دنبال میکند.
باز کردن یک کامپیوتر مجموعه کوچکی از بلوکهای سازنده تکرارشونده را نشان میدهد که صرفنظر از اندازه یا کاربرد دستگاه، در کنار هم کار میکنند. این مقاله اجزای اصلی سختافزاری که هر سیستمی به آنها متکی است را مرور میکند، توضیح میدهد این اجزا چگونه فیزیکاً از سیلیکون خام ساخته میشوند، و روش درست سنجش و مقایسه کارایی پردازنده را نشان میدهد.
برای دههها، پردازندهها عمدتاً با افزایش سرعت ساعت سریعتر میشدند. این رویکرد به یک محدودیت فیزیکی مرتبط با مصرف توان و گرما برخورد کرد و کل صنعت را مجبور کرد جهت خود را بهسمت چند هسته پردازشی تغییر دهد. این مقاله توضیح میدهد چرا دیوار توان اتفاق افتاد، صنعت چگونه با چندپردازندهای پاسخ داد، اعداد بنچمارک واقعی چه چیزی درباره ادعاهای کارایی نشان میدهند، و چه تصورات غلط رایجی باید در استدلال درباره کارایی سختافزار کنار گذاشته شوند.
هر عبارت سطح بالایی که یک برنامهنویس مینویسد، در نهایت به مجموعهای کوچک و ثابت از عملیات سطح سختافزار تجزیه میشود. این مقاله توضیح میدهد چرا مجموعه دستورات عمداً ساده نگه داشته میشود، عملیاتهای محاسباتی و جابهجایی دادهای که یک پردازنده پشتیبانی میکند را مرور میکند، و توضیح میدهد عملوندهایی مانند رجیسترها و مکانهای حافظه چگونه در سطح سختافزار نمایش داده و دسترسیپذیر میشوند.
زیر هر مقداری که یک برنامه دستکاری میکند و هر دستوری که یک پردازنده اجرا میکند، یک رشته بیت با عرض ثابت قرار دارد. این مقاله توضیح میدهد اعداد علامتدار و بدون علامت چگونه از یک الگوی باینری یکسان به شکلهای متفاوتی تفسیر و نمایش داده میشوند، و خود دستورات ماشین چگونه در فیلدهای باینری ثابتی کدگذاری میشوند که سختافزار میتواند با سرعت بالا آنها را decode کند.
فراتر از محاسبات ریاضی، پردازندهها نیاز دارند بیتهای تکی را دستکاری کنند و مسیر اجرای خود را بر اساس شرطها تغییر دهند. این مقاله عملیاتهای منطقی اصلی مورد استفاده برای دستکاری بیت را پوشش میدهد و توضیح میدهد شاخهزنی شرطی و حلقهسازی چگونه از یک مجموعه کوچک از دستورات مبتنی بر مقایسه ساخته میشوند.
فراخوانی یک تابع در کد سطح بالا ساده بهنظر میرسد، اما در سطح سختافزار نیازمند یک پروتکل دقیق برای ذخیره آدرس بازگشت، انتقال آرگومانها و حفظ مقادیر رجیستر است. این مقاله توضیح میدهد فراخوانی رویهها چگونه با استفاده از رجیسترهای اختصاصی و یک پشته پیادهسازی میشود، سپس نحوه نمایش متن قابلفهم برای انسان بهصورت دنبالهای از کاراکترهای کدگذاریشده را پوشش میدهد.
یک دستور ۳۲ بیتی نمیتواند یک ثابت بزرگ یا یک آدرس حافظه دور را مستقیماً درون خودش جا دهد، و چند پردازندهای که حافظه را به اشتراک میگذارند نمیتوانند بدون هماهنگی، یک داده یکسان را با امنیت بهروزرسانی کنند. این مقاله توضیح میدهد RISC-V چگونه مقادیر فوری و آدرسهای بزرگ را از قطعات کوچکتر میسازد، و دستورات اتمیک چگونه اجازه میدهند برنامههای موازی با امنیت همگام شوند.
تبدیل یک برنامه C به چیزی که سیستمعامل واقعاً بتواند اجرا کند شامل چندین مرحله ترجمه مجزاست، که هرکدام یک فایل میانی متفاوت تولید میکنند. این مقاله کل این خط لوله را از کامپایلر تا loader مرور میکند، سپس مفاهیم این فصل را روی یک مثال کامل و واقعی بهکار میبرد: ترجمه گامبهگام یک روال مرتبسازی C به اسمبلی RISC-V.
در C، آرایهها و اشارهگرها اغلب قابلتعویض بهنظر میرسند، و بسیاری از برنامهنویسان با آنها بهعنوان یک چیز واحد رفتار میکنند. با این حال در سطح سختافزار، آنها به توالیهای دستوری قابلتوجهی متفاوت با ویژگیهای کارایی متفاوت کامپایل میشوند. این مقاله این دو رویکرد را با استفاده از اسمبلی RISC-V مقایسه میکند تا دقیقاً نشان دهد چرا کد مبتنی بر اشارهگر اغلب سریعتر است.
پس از پوشش عملیاتها، عملوندها، کدگذاری و کنترل جریان، ارزش دارد لحظهای مکث کنیم تا چند تصور غلط پایدار درباره مجموعه دستورات که حتی برنامهنویسان باتجربه هم گاهی به آنها دارند را اصلاح کنیم. این مقاله فصل مجموعه دستورات را با پرداختن مستقیم به این مغالطات به پایان میرساند و خلاصه میکند چرا درک دستورات ماشین فراتر از کنجکاوی آکادمیک اهمیت دارد.
سختافزار چگونه جمع و تفریق انجام میدهد و سرریز را تشخیص میدهد