
زیرساخت ارتباطات و فناوری اطلاعات
یک کامپیوتر فیزیکی واحد میتواند بهنظر برسد چند سیستمعامل کاملاً مجزا را همزمان اجرا میکند، هرکدام بیخبر از وجود دیگری. این مقاله توضیح میدهد یک ماشین مجازی واقعاً چیست، یک هایپروایزر چگونه این توهم را مدیریت میکند، و چرا این فناوری هم برای تجمیع سرور و هم امنیت سیستم اهمیت دارد.
برنامهها طوری رفتار میکنند که گویی به یک بلوک بزرگ و خصوصی از حافظه دسترسی دارند، حتی اگر RAM فیزیکی محدود و بین بسیاری از فرآیندهای در حال اجرا مشترک باشد. این مقاله توضیح میدهد حافظه مجازی چگونه این توهم را از طریق ترجمه آدرس ایجاد میکند، جدولهای صفحه و TLB چگونه ترجمه را سریع میکنند، و وقتی داده مورد نیاز در حال حاضر در حافظه فیزیکی نباشد چه اتفاقی میافتد.
کشها و حافظه مجازی در نگاه اول سیستمهای بسیار متفاوتی بهنظر میرسند، اما هر دو دقیقاً به همان چهار پرسش بنیادین پاسخ میدهند. این مقاله نشان میدهد این چهار پرسش چگونه جایگذاری بلوک، شناسایی بلوک، جایگزینی بلوک، و مدیریت نوشتن را در سراسر هر سطح سلسلهمراتب حافظه، از کشهای کوچک تا حافظه مجازی پشتیبانیشده با دیسک، یکپارچه میکنند.
یک کش صرفاً بهطور غیرفعال داده ذخیره نمیکند؛ منطق کنترلی سختافزار باید چند گام مجزا را برای مدیریت درست یک miss طی کند. این مقاله توضیح میدهد یک ماشین حالت متناهی چگونه این منطق کنترلی را مدل میکند، حالتهای درگیر در مدیریت یک cache hit و یک cache miss را مرور میکند، و نشان میدهد چرا این مدل رسمی طراحی کنترلکننده کش را برای استدلال دربارهاش راحتتر میکند.
وقتی چند هسته پردازنده هرکدام کش خصوصی خودشان را دارند اما همان حافظه زیربنایی را به اشتراک میگذارند، یک مسئله جدی از نظر درستی پدیدار میشود: هستههای مختلف میتوانند در نهایت دیدگاههای متناقضی از همان مکان حافظه داشته باشند. این مقاله توضیح میدهد انسجام کش یعنی چه، چرا در سیستمهای چندهستهای ضروری میشود، و پروتکلهای مبتنی بر snooping چگونه داده کششده هر هسته را سازگار نگه میدارند.
یک درایو ذخیرهسازی واحد میتواند در هر لحظه خراب شود، و بهطور بالقوه داده ارزشمند را بدون هیچ هشداری نابود کند. این مقاله توضیح میدهد RAID چگونه چند دیسک را ترکیب میکند تا قابلیت اطمینان، کارایی، یا هر دو را بهبود بخشد، و مبادلات بین رویکردهای mirroring، striping، و مبتنی بر پریتی را پوشش میدهد.
مفاهیم نظری کش و حافظه در پردازندههای تجاری واقعی با چند سطح کش و اندازههای بهدقت تنظیمشده شکل مشخصی به خود میگیرند. این مقاله سلسلهمراتب حافظه واقعی در پردازندههای ARM و Intel را مقایسه میکند، نشان میدهد Cache Blocking چگونه ضرب ماتریس را در عمل تسریع میکند، و فصل سلسلهمراتب حافظه را با پرداختن به تصورات غلط رایج به پایان میرساند.
نوشتن نرمافزاری که بهدرستی و کارآمد از چند پردازنده استفاده کند، اساساً سختتر از نوشتن کد پیدرپی است. این مقاله توضیح میدهد چرا برنامهنویسی موازی چالشهای منحصربهفردی درباره هماهنگی و بازده کاهشی معرفی میکند، سپس طبقهبندی کلاسیک فلین را پوشش میدهد که سختافزار موازی را به SISD، MIMD، SIMD، و مدلهای مرتبط دستهبندی میکند.
Hardware Multithreading: پنهان کردن تأخیر با جابهجایی بین وظایف
پردازندههای چندهستهای رایجترین شکل سختافزار موازی امروزی هستند، اما نحوه اشتراکگذاری واقعی حافظه توسط هستههایشان به شیوههای مهمی متفاوت است. این مقاله مدل چندپردازنده حافظه مشترک را توضیح میدهد، طرحهای دسترسی یکنواخت و غیریکنواخت به حافظه را مقایسه میکند، و توضیح میدهد سیستمعامل و برنامهنویس چگونه کار را در سراسر هستهها هماهنگ میکنند.
یک GPU ایده SIMD که پیشتر در این مجموعه پوشش داده شد را به یک مقیاس افراطی میبرد، و هزاران رشته سبک را بهطور همزمان اجرا میکند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح میدهد چرا GPU ها از نظر معماری اینقدر با CPU متفاوتاند، مدل اجرای رشته آنها چگونه کار میکند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی میبرند.
فراتر از یک تراشه واحد، موازیسازی به کل ساختمانهای پر از کامپیوترهای مستقلی که با هم کار میکنند گسترش مییابد. این مقاله گذار از چندپردازندهسازی حافظه مشترک به کلاسترهایی از ماشینهای جداگانه را توضیح میدهد، مفهوم محاسبات در مقیاس انبار را معرفی میکند، و توپولوژیهای شبکه که این ماشینهای مستقل را بهطور کارآمد متصل میکنند را پوشش میدهد.