
در این بخش، به دنیای برنامهنویسی، الگوریتمها، شبکه و زیرساختهای فناوری میپردازیم

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