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