شمارنده عملکرد سخت افزار

در رایانه‌ها ، شمارنده‌های عملکرد سخت‌افزار ( HPC )،  یا شمارنده‌های سخت‌افزار مجموعه‌ای از ثبات‌هایی  با هدف خاص هستند که درون ریزپردازنده‌های امروزی تعبیه شده‌اند تا تعداد فعالیت‌های مرتبط با سخت‌افزار در سیستم‌های کامپیوتری را شمارش بکنند . کاربران پیشرفته اغلب برای انجام تحلیل عملکرد سطح پایین یا تنظیم عملکرد به آن شمارنده ها تکیه می‌کنند.

پیاده سازی ها 
تعداد شمارنده‌های سخت‌افزاری در دسترس یک پردازنده محدود است، در حالی که هر مدل پردازشگر مرکزی ممکن است رویدادهای متنوعی داشته باشد که یک توسعه‌دهنده بخواهد اندازه‌گیری کند.هر شمارنده می تواند با اندیس یک نوع رویداد، برای نظارت بر آن برنامه ریزی شود، مانند باخت در حافظه نهان L1 یا پیش بینی نادرست شاخه.

یکی از اولین پردازنده‌هایی که چنین شمارنده‌هایی را به همراه دستورالعمل RDPMC برای دسترسی به آن پیاده‌سازی کرد، Intel Pentium بود، اما تا پیش از آن که Terje Mathisen مقاله‌ای درباره‌ی مهندسی معکوس آنها در مجله بایت در ژوئیه 1994   چاپ کرد، ثبت نشده بودند.

جدول ذیل نمونه هایی از پردازشگرهای مرکزی و تعداد شمارنده های سخت افزاری موجود ‌آن ها را نشان می دهد:

تقابل با تکنیک های نرم افزاری 
در مقایسه با رُخ‌نمانگاری نرم‌افزاری، شمارنده‌های سخت‌افزاری دسترسی به طیف وسیعی از اطلاعات عملکردی مربوط به واحدهای عملیاتی پردازشگر، حافظه‌های پنهان و حافظه اصلی و غیره را با سربار کم فراهم می‌کنند. مزیت دیگر استفاده از آنها این است که به طور کلی نیازی به تغییر کد منبع نیست. با این حال، انواع شمارنده های سخت افزاری و اهداف آنها از معماری به معماری دیگر متفاوت است که دلیل آن تنوع در سازمان های سخت افزاری می‌باشد.

ممکن است مشکلاتی در ارتباط دادن سنجه‌های عملکرد سطح پایین به کد منبع وجود داشته باشد. تعداد محدود ثبات‌ها برای ذخیره شمارنده ها اغلب کاربران را وا می‌دارد تا برای جمع آوری همه‌ی سنجه‌های عملکرد مورد ‌نظر، اندازه گیری‌های متعددی انجام دهند.

نمونه گیری مبتنی بر دستورالعمل 

پردازنده‌های فوق‌اسکالر امروزی، چندین دستورالعمل خارج از ترتیب را به صورت هم‌زمان برنامه‌ریزی و اجرا می‌کنند. این دستورالعمل‌های «در حین پرواز» می‌توانند در هر زمانی کنار گذاشته شوند، که [این زمان] به دسترسی به حافظه، تعداد برد در حافظه پنهان، وقفه در خط لوله و بسیاری از عوامل دیگر وابسته است. این می تواند باعث شود که شمارنده‌های عملکردی به دستورالعمل های اشتباه نسبت داده شوند و تحلیل دقیق عملکرد را دشوار یا غیرممکن کند.

AMD روش هایی را برای تقلیل برخی از این معایب معرفی کرد. برای مثال، پردازنده‌های اپترون  در سال 2007 تکنیکی را به نام نمونه گیری مبتنی بر دستورالعمل(یا IBS) پیاده‌سازی کردند. پیاده‌سازی IBS توسط AMD، شمارنده‌های سخت‌افزاری را برای هر دو نمونه‌برداری واکشی (در جلوی خط لوله‌ی فوق‌اسکالر) و نمونه‌برداری عملیاتی (در پشت خط لوله) مجهز می‌کند. این منجر به داده های عملکرد مجزا می شود که دستورالعمل های بازنشسته را با دستورالعمل AMD64 "والد" مرتبط می کند.

همچنین ببینید 

 perf (لینوکس)
 چکش ردیفی

منابع 

[[رده:واحد پردازشگر مرکزی]]