
توضیحی شفاف و ساختاریافته از نحوه تعامل سختافزار و نرمافزار در سطح بنیادی. این محتوا طراحی پردازنده، اجرای دستورات، پایپلاین، سلسلهمراتب حافظه، موازیسازی و اصول اصلی تعیینکننده عملکرد سیستم را پوشش میدهد. با استفاده از یک معماری دستورالعمل مدرن و سادهشده، پایهای قوی برای درک واقعی نحوه کار کامپیوترها و سرورها ایجاد میکند.
هر دستوری آنطور که انتظار میرود اجرا نمیشود — برخی شرایط خطایی مانند یک opcode نامعتبر یا سرریز محاسباتی را فعال میکنند که پردازنده باید با امنیت به آنها پاسخ دهد. این مقاله توضیح میدهد استثناها چه هستند، یک پردازنده پایپلاینشده چگونه آنها را بدون خراب کردن وضعیت برنامه تشخیص داده و مدیریت میکند، و چرا استثناها مشابه خطرهای کنترلی رفتار میشوند.
موازیسازی سطح دستور: اجرای بیش از یک دستور بهطور همزمان
مفاهیم نظری پایپلاین در پردازندههای تجاری واقعی شکل مشخصی به خود میگیرند، که بسته به اهداف طراحیشان از نظر عمق پایپلاین و عرض صدور بهطور گسترده متفاوتاند. این مقاله مقایسه میکند ARM Cortex-A53 و Intel Core i7 چگونه پایپلاینینگ را متفاوت برای کارایی توان در مقابل کارایی خام پیادهسازی میکنند، سپس نشان میدهد موازیسازی سطح دستور چگونه ضرب ماتریس را در عمل تسریع میکند.
پس از پوشش datapath ها، پایپلاینینگ، خطرها، و مقایسههای پردازنده دنیای واقعی، وقت آن است چند تصور غلط پایدار درباره نحوه رفتار واقعی پردازندهها را اصلاح کنیم. این مقاله به مغالطات رایج درباره پایپلاینینگ و کارایی میپردازد، سپس مسیر کامل از datapath های ساده تا اجرای سوپراسکالر که در سراسر این فصل پوشش داده شد را به هم پیوند میدهد.
هیچ فناوری حافظه واحدی همزمان سریع، بزرگ، و ارزان نیست. این مقاله مفهوم سلسلهمراتب حافظه که چند فناوری حافظه مختلف را ترکیب میکند تا به سرعت سریعترین آنها با هزینه ارزانترین نزدیک شود را معرفی میکند، سپس فناوریهای اصلی که هر سطح را میسازند مرور میکند.
یک کش فقط به این دلیل کار میکند که برنامهها تمایل دارند داده یکسان یا نزدیک به هم را بهطور تکراری دسترسی کنند نه بهصورت تصادفی. این مقاله اصل محلیت که کش را مؤثر میکند را توضیح میدهد، یک کش مستقیمنگاشتشده چگونه داده را با استفاده از یک آدرس مکانیابی میکند، و در یک hit کش در مقابل یک miss کش چه اتفاقی میافتد.
همه miss های کش یکسان نیستند، و درک علل آنها اولین گام برای بهبود کارایی است. این مقاله توضیح میدهد چگونه تأثیر واقعی کارایی کش را با استفاده از نرخ miss و جریمه miss محاسبه کنیم، سه علت رایج miss های کش را دستهبندی میکند، و استراتژیهای عملی برای کاهش هرکدام را توضیح میدهد.
سختافزار حافظه بهطور کامل قابلاعتماد نیست؛ نویز الکتریکی و نقصهای فیزیکی میتوانند بیسروصدا بیتهای ذخیرهشده را برگردانند. این مقاله توضیح میدهد کدهای تشخیص و تصحیح خطا چگونه به سختافزار اجازه میدهند این مقادیر خرابشده را متوجه شود، و در بسیاری موارد بهطور خودکار پیش از اینکه باعث رفتار نادرست برنامه شوند تصحیح کند.
یک کامپیوتر فیزیکی واحد میتواند بهنظر برسد چند سیستمعامل کاملاً مجزا را همزمان اجرا میکند، هرکدام بیخبر از وجود دیگری. این مقاله توضیح میدهد یک ماشین مجازی واقعاً چیست، یک هایپروایزر چگونه این توهم را مدیریت میکند، و چرا این فناوری هم برای تجمیع سرور و هم امنیت سیستم اهمیت دارد.
برنامهها طوری رفتار میکنند که گویی به یک بلوک بزرگ و خصوصی از حافظه دسترسی دارند، حتی اگر RAM فیزیکی محدود و بین بسیاری از فرآیندهای در حال اجرا مشترک باشد. این مقاله توضیح میدهد حافظه مجازی چگونه این توهم را از طریق ترجمه آدرس ایجاد میکند، جدولهای صفحه و TLB چگونه ترجمه را سریع میکنند، و وقتی داده مورد نیاز در حال حاضر در حافظه فیزیکی نباشد چه اتفاقی میافتد.
کشها و حافظه مجازی در نگاه اول سیستمهای بسیار متفاوتی بهنظر میرسند، اما هر دو دقیقاً به همان چهار پرسش بنیادین پاسخ میدهند. این مقاله نشان میدهد این چهار پرسش چگونه جایگذاری بلوک، شناسایی بلوک، جایگزینی بلوک، و مدیریت نوشتن را در سراسر هر سطح سلسلهمراتب حافظه، از کشهای کوچک تا حافظه مجازی پشتیبانیشده با دیسک، یکپارچه میکنند.
یک کش صرفاً بهطور غیرفعال داده ذخیره نمیکند؛ منطق کنترلی سختافزار باید چند گام مجزا را برای مدیریت درست یک miss طی کند. این مقاله توضیح میدهد یک ماشین حالت متناهی چگونه این منطق کنترلی را مدل میکند، حالتهای درگیر در مدیریت یک cache hit و یک cache miss را مرور میکند، و نشان میدهد چرا این مدل رسمی طراحی کنترلکننده کش را برای استدلال دربارهاش راحتتر میکند.