کارآیی کامپیوتر
در محاسبات رایانه ای (رایانش)، کارایی رایانه میزان کار مفیدی است که توسط یک سیستم رایانه ای انجام میشود. خارج از زمینههای خاص، عملکرد رایانه از نظر دقت، بازده ای و سرعت اجرای دستورالعملها در یک برنامه رایانه ای تخمین زده میشود. وقتی صحبت از عملکرد بالای رایانه ای میشود، ممکن است یک یا چند عامل زیر دلیل این امر باشند:
- زمان پاسخدهی کوتاه برای یک کار مشخص.
- توان عملیاتی بالا (میزان پردازش کار).
- بهرهبرداری کم از منابع سیستم.
- فشرده سازی و وافشاری سریع (یا بسیار فشرده) دادهها.
- آماده به کار بودن بالا سیستم یا برنامه.
- پهنای باند بالا.
- زمان انتقال داده کوتاه.
تعاریف فنی و غیرفنی
کارایی هر سیستم رایانه ای را میتوان با استفاده از یک یا چند معیار ذکر شده در بالا، به لحاظ فنی و قابل اندازهگیری، ارزیابی کرد. از این نظر، کارایی میتواند موارد زیر باشد
- کارایی در مقایسه با سایر سیستمها یا همان سیستم، قبل یا بعد از تغییرات
- کارایی به صورت مطلق، به عنوان مثال برای انجام یک تعهد قراردادی
در حالی که تعریف فوق تعریفی علمی و فنی است، تعریف زیر توسط آرنولد آلن برای مخاطبان غیر فنی مفید خواهد بود:
کلمه کارایی در کارایی رایانه همان معنای کارایی در زمینههای دیگر را میدهد، به این معنی که "رایانه کارهایی را که باید انجام دهد چقدر خوب دارد انجام میدهد؟"
به عنوان جنبه ای از کیفیت نرمافزاری
کارایی نرمافزار رایانه ای، به ویژه زمان پاسخدهی نرمافزار، جنبه ای از کیفیت نرمافزار است که در تعاملات انسان و رایانه مهم است.
مهندسی کارایی
مهندسی کارایی در مهندسی سیستمها شامل مجموعه ای از نقشها، مهارتها، فعالیتها، شیوهها و ابزارها و تحویل دادنیهایی (نتیجه کار) است که در هر مرحله از چرخه عمر توسعه سیستمها به کار گرفته میشوند و این اطمینان را میدهد که برای کارایی مورد نیاز، یک راه حل طراحی، پیادهسازی و پشتیبانی عملیاتی خواهد شد.
مهندسی کارایی بهطور مداوم با بدهبستانهای بین انواع کارایی سرو کار دارد. گاهی اوقات یک طراح پردازنده میتواند با بهبود یکی از جنبههای عملکرد، که در پایینتر ارائه شدهاند، راهی برای ساخت پردازنده ای با عملکرد کلی بهتر پیدا کند، بدون اینکه کارایی پردازنده را در زمینههای دیگر کاهش دهد. به عنوان مثال، ساخت پردازنده با استفاده از ترانزیستورهای سریعتر و بهتر.
با این حال، گاهی اوقات افزایش شدید یک نوع از کارایی در پردازنده منجر به افت کارایی کلی در آن میشود، زیرا سایر جنبههای مهم، قربانی رسیدن به تنها یک عدد بزرگ و چشمگیر میشوند. به عنوان مثال نرخ کلاک تراشه (افسانه مگاهرتز).
مهندسی کارایی برنامه
مهندسی کارایی برنامه (APE)، یک روششناسی خاص در مهندسی کارایی است که برای پاسخگویی به چالشهای مرتبط با کارایی برنامهها در محیطهای توزیع شده فزایندهٔ سیار، ابری و IT-زمینی، طراحی شدهاست. این شامل نقشها، مهارتها، فعالیتها، شیوهها، ابزارها و تحویل دادنیهایی (نتیجه کار) است که در هر مرحله از چرخه حیات برنامه به کار گرفته میشوند و این اطمینان را میدهد که یک برنامه برای پاسخگویی به الزامات کارایی غیر عملکردی طراحی، اجرا و پشتیبانی عملیاتی خواهد شد.
جنبههای عملکرد
معیارهای عملکرد رایانه (مواردی که اندازهگیری میشوند) شامل آماده به کار بودن، زمان پاسخدهی، ظرفیت کانال، تأخیر، زمان اتمام، زمان سرویس، پهنای باند، توان عملیاتی، بازده نسبی، مقیاس پذیری، کارایی در هر وات، نسبت فشرده سازی، طول مسیر دستورالعمل و تسریع میباشد. بنچمارکهای پردازندهها نیز موجود میباشند.
دسترسی (آماده به کار بودن)
در دسترس بودن یک سیستم معمولاً با اطمینان پذیری آن رابطه مستقیم دارد - هرچه اطمینان پذیری افزایش یابد، در دسترس بودن نیز افزایش مییابد (یعنی زمان اکار کمتر). همچنین با پیش بردن استراتژی تمرکز نه بر افزایش اطمینان پذیری، بلکه بر افزایش تست پذیری و نگهداشتپذیری میتوان در دسترس بودن یک سیستم را افزایش داد. بهبود نگهداشتپذیری بهطور کلی آسانتر از اطمینان پذیری است. تخمینهای میزان نگهداشتپذیری (نرخهای تعمیرات) نیز بهطور کلی دقیق تر هستند. با این حال، از آنجا که عدم قطعیت در تخمینهای اطمینان پذیری در اکثر موارد بسیار زیاد است، حتی در حالی که سطح نگهداشتپذیری بسیار بالاست، احتمالاً بر مشکل در دسترس بودن (عدم اطمینان در پیشبینی) غلبه میکند.
زمان پاسخدهی
زمان پاسخدهی، کل مدت زمان پاسخگویی به درخواست انجام سرویس است. در محاسبات، این سرویس میتواند هر واحد کار از یک IO دیسک ساده تا بارگیری یک صفحه وب پیچیده باشد. زمان پاسخ مجموع سه عدد است:
- زمان سرویس - مدت زمانی که طول میکشد تا کار درخواستی انجام شود.
- زمان انتظار - مدت زمانی که درخواست باید منتظر بماند تا درخواستهای قبل از آن در صف انجام شوند.
- زمان انتقال - چه مدت طول میکشد تا درخواست به رایانه داده شود و پاسخ به درخواست دهنده برگردانده شود.
سرعت پردازش
اکثر مصرفکنندگان، معماری رایانه ای را انتخاب میکنند (معمولاً معماری Intel IA32) تا بتوانند تعداد زیادی از نرمافزارهای از قبل کامپایل شده را اجرا کنند. برخی به دلیل آگاهی نداشتن درست از بنچمارکهای رایانه ای، پردازنده ای را صرفاً بخاطر بالا بودن فرکانس کاری اش انتخاب میکنند (افسانه مگاهرتز).
برخی از طراحان سیستم که رایانههای موازی میسازند، پردازنده را براساس سرعت-بر-دلار انتخاب میکنند.
ظرفیت کانال
ظرفیت کانال محکمترین حدِ بالای نرخ اطلاعاتی است که میتواند بهطور مطمئن از طریق یک کانال ارتباطی منتقل شود. با استفاده از نظریه برنامهنویسی کانال پر سر و صدا، ظرفیت کانال یک کانال معین، نرخ اطلاعات محدود کننده (در واحد اطلاعات در واحد زمان) است که با احتمال خطای ناچیز دلخواه قابل دستیابی است.
نظریه اطلاعات، که توسط کلود شانون در طول جنگ جهانی دوم ساخته شد، مفهوم ظرفیت کانال را تعریف میکند و یک مدل ریاضی که آن را قابل محاسبه میکند، ارائه میدهد. نتیجه اصلی بیان میکند که ظرفیت کانال، که در بالا تعریف شد، با حداکثرِ اطلاعات متقابل بین ورودی و خروجی کانال، یعنی جایی که حداکثر سازی با توجه به توزیع ورودی است، داده میشود.
تأخیر
تأخیر، تعلل زمانی بین علت و نتیجه برخی تغییرات فیزیکی در سیستمِ در حال مشاهده است. تأخیر نتیجه سرعت محدودی است که با آن، هرگونه تعامل فیزیکی میتواند انجام شود. این سرعت همیشه کوچکتر مساوی سرعت نور است؛ بنابراین هر سیستم فیزیکی که دارای ابعاد فضایی غیر صفر باشد، نوعی تأخیر را تجربه خواهد کرد.
تعریف دقیق تأخیر، به سیستمِ در حال مشاهده و ماهیت تحریک بستگی دارد. در ارتباطات، حد پایین تأخیر توسط واسطه ای که برای ارتباطات استفاده میشود تعیین میشود. در سیستمهای ارتباطی دو طرفه مطمئن، تأخیر حداکثر سرعت انتقال اطلاعات را محدود میکند، زیرا غالباً در هر لحظه، محدودیتی در میزان اطلاعاتی که به اصطلاح «در پرواز» هستند وجود دارد. در زمینه تعامل انسان و ماشین، تأخیر محسوس (تأخیر بین آنچه کاربر دستور میدهد و زمانی که رایانه نتایج را ارائه میدهد) تأثیر زیادی بر رضایت و استفادهپذیزی کاربر دارد.
رایانهها مجموعه ای از دستورالعملها را به نام فرایند اجرا میکنند. در سیستم عاملها، اگر سایر فرایندها نیز در حال اجرا باشند، میتوان اجرای فرایند را به تعویق انداخت. علاوه بر این، سیستم عامل میتواند زمان انجام عملیاتی را که فرایند امر میکند، برنامهریزی کند. به عنوان مثال، فرض کنید فرایندی دستور میدهد که خروجی ولتاژ کارت کامپیوتر با نرخ ۱۰۰۰ هرتز، به زیاد و کم و زیاد و کم و همین روال تنظیم شود. سیستم عامل ممکن است زمانبندی هر تغییر (زیاد-به-کم یا کم-به-زیاد) را براساس یک کلاک داخلی تنظیم کند. تأخیر در اینجا، تعللی است که بین دستورالعملِ تغییر و لحظه ای که سختافزار تغییر ولتاژ را انجام میدهد وجود دارد.
طراحان سیستم که در حال ساخت سیستمهای محاسباتی بی درنگ هستند میخواهند پاسخ در بدترین حالت را تضمین کنند. انجام این کار زمانی که پردازنده تأخیر اندکی در وقفه داشته باشد و دارای پاسخ قطعی باشد سادهتر است.
پهنای باند
در شبکه سازی رایانه ای، پهنای باند اندازهگیری نرخ بیت منابع ارتباطی داده موجود یا مصرف شدهاست که در بیت بر ثانیه یا مضربی از آن (بیت بر ثانیه، کیلوبیت بر ثانیه، مگابیت بر ثانیه، گیگابیت بر ثانیه و غیره) بیان میشود.
پهنای باند گاهی اوقات نرخ بیت خالص (یا همان اوج نرخ بیت، سرعت اطلاعات یا نرخ بیت مفید لایه فیزیکی)، ظرفیت کانال یا حداکثر توان عملیاتی یک مسیر ارتباطی منطقی یا فیزیکی را در یک سیستم ارتباطی دیجیتالی تعریف میکند. به عنوان مثال، تستهای پهنای باند حداکثر توان عملیاتی شبکه را اندازهگیری میکنند. دلیل این کاربرد این است که طبق قانون هارتلی (Hartley's law)، حداکثر نرخ داده یک پیوند ارتباطی فیزیکی متناسب با پهنای باند آن بر حسب هرتز است که گاهی اوقات به آن پهنای باند فرکانس، پهنای باند طیفی، پهنای باند RF، پهنای باند سیگنال یا پهنای باند آنالوگ گفته میشود.
توان عملیاتی
بهطور کلی، توان عملیاتی میزان تولید یا نرخ پردازش چیزی است.
در شبکههای ارتباطی، توان مصرفی اساساً همان مصرف پهنای باند دیجیتال است. در شبکههای بیسیم یا شبکههای ارتباطی سلولی، بازده طیفی سیستم در واحد بیت/ثانیه/هرتز/ناحیه، بیت/ ثانیه/ هرتز/سایت (منطقه) یا بیت/ثانیه/هرتز/سلول (سل)، حداکثر توان سیستم (توان کل) تقسیم بر پهنای باند آنالوگ و یک مقدار سطح تحت پوشش سیستم است.
در مدارهای مجتمع (IC)، اغلب یک بلوک در نمودار جریان داده دارای یک ورودی و یک خروجی است و بر روی بستههای گسسته اطلاعاتی کار میکند. نمونههایی از این بلوکها ماژولهای FFT یا ضربکنندههای باینری هستند. از آنجا که واحدهای توان عملیاتی متقابل با واحد تأخیر انتشار هستند که «ثانیه بر هر پیام» یا «ثانیه بر هر خروجی» است، میتوان از توان تولیدی برای ربط دادن یک دستگاه محاسباتی که یک عملکرد اختصاصی مانند ASIC یا پردازنده تعبیه شده را به یک کانال ارتباطی، استفاده کرد که تجزیه و تحلیل سیستم را ساده میکند.
کارایی نسبی
مقیاس پذیری
مقیاس پذیری به معنای توانایی سیستم، شبکه یا فرایند برای اداره مقدار زیادی از کار به روشی توانمند یا توانایی بزرگ شدن آن برای سازگاری با این رشد است.
مصرف برق
مقدار برق مصرفی کامپیوتر. این امر به ویژه برای سیستمهای دارای منابع تغذیه محدود مانند خورشیدی، باتری و نیروی انسانی مهم میشود.
کارایی در هر وات
طراحان سیستم که رایانههای موازی مانند سختافزار گوگل میسازند، پزدارندهها را براساس سرعت آنها در هر وات نیرو انتخاب میکنند، زیرا هزینه تأمین انرژی پردازنده بیش از هزینه خود پردازنده است.
نرخ فشرده سازی
فشرده سازی مفید است زیرا به کاهش استفاده از منابع سیستمی، مانند فضای ذخیرهسازی دادهها یا ظرفیت انتقال کمک میکند. از آنجا که برای استفاده از دادههای فشرده ابتدا باید از حالت فشرده خارج شوند (وافشاری)، این پردازش اضافی هزینههای محاسباتی یا سایر هزینهها را توسط وافشاری ایجاد میکند. این وضعیتی هزینه تراش است. فشرده سازی دادهها با افزایش پیچیدگی فضا-زمان همراه است.
اندازه و وزن
این یک ویژگی مهم در کارایی سیستمهای سیار است، از تلفنهای هوشمندی که در جیب خود نگه میدارید تا سیستمهای جاسازی شده قابل حمل در یک فضاپیما.
اثرات زیستمحیطی
تأثیر رایانه یا رایانهها بر محیط در هنگام تولید و بازیافت و همچنین هنگام استفاده. اندازهگیریها با هدف کاهش ضایعات، کاهش مواد خطرناک و به حداقل رساندن اثر اکولوژیکی رایانه انجام میشود.
تعداد ترانزیستور
تعداد ترانزیستور، تعداد ترانزیستورهای مدار مجتمع (IC) است. تعداد ترانزیستور متداولترین معیار پیچیدگی IC است.
بنچمارکها
از آنجا که برنامههای زیادی برای آزمایش پردازندهها در تمام جنبههای کارایی وجود دارد، بنچمارکها ایجاد شدند.
مشهورترین بنچمارکها، بنچمارکهای SPECint و SPECfp هستند که توسط Standard Performance Evaluation Corporation و بنچمارک Certification Mark توسط Embedded Microprocessor Benchmark Consortium یا EEMBC ساخته شدهاند.
تست کارایی نرمافزار
در مهندسی نرمافزار، تست کارایی بهطور کلی تستی برای تعیین نحوه عملکرد یک سیستم از نظر پاسخگویی و پایداری تحت یک حجم کار خاص است. همچنین میتواند برای بررسی، اندازهگیری، اعتبارسنجی یا تأیید سایر ویژگیهای کیفی سیستم مانند مقیاس پذیری، اطمینان پذیری و استفاده از منابع سیستمی باشد.
تست کارایی زیرمجموعه ای از مهندسی کارایی است، روشی نوظهور در علوم کامپیوتر که تلاش میکند کارایی را در پیادهسازی، طراحی و معماری یک سیستم ایجاد کند.
پروفایل سازی (تجزیه و تحلیل کارایی)
در مهندسی نرمافزار، پروفایل سازی ("پروفایل سازی برنامه"، "پروفایل سازی نرمافزار") نوعی تجزیه و تحلیل برنامه پویا است که به عنوان مثال فضا (حافظه) یا پیچیدگی زمان یک برنامه، استفاده از دستورالعملهای خاص یا فرکانس و مدت زمان صدا زدن توابع را اندازهگیری میکند. متداولترین کاربرد پروفایل سازی اطلاعات، کمک به بهینهسازی برنامه است.
پروفایل سازی با استفاده از کد منبعِ برنامه یا فرم اجرایی دودویی آن با استفاده از ابزاری به نام پروفایلر (یا پروفایلر کد) بدست میآید. تکنیکهای مختلفی ممکن است توسط پروفایلرها استفاده شود، مانند روشهای مبتنی بر رویداد، آماری، ابزار دقیق و شبیهسازی.
تنظیم کارایی
تنظیم کارایی، بهبود کارایی سیستم است. این معمولاً یک برنامه رایانه ای است، اما میتوان همین روشها را در بازارهای اقتصادی، دیوان سالاری یا سایر سیستمهای پیچیده نیز اعمال کرد. انگیزه چنین فعالیتی را مشکل کارایی مینامند که میتواند واقعی یا پیشبینی شده باشد. اکثر سیستمها به افزایش بار کاری را تا حدی با کاهش کارایی پاسخ میدهند. توانایی یک سیستم در پذیرش بار کاری بالاتر مقیاس پذیری نامیده میشود و اصلاح سیستم برای کنترل بار کاری بالاتر مترادف با تنظیم کارایی است.
یک تنظیم سیستماتیک این مراحل را دنبال میکند:
- مسئله را ارزیابی کرده و مقادیر عددی ایجاد کن که رفتار قابل قبول را دستهبندی کند.
- کارایی سیستم را قبل از اصلاح اندازهگیری کن.
- بخشی از سیستم را که برای بهبود کارایی حیاتی است شناسایی کن. به این گلوگاه (Bottleneck) میگویند.
- برای برداشتن گلوگاه، آن قسمت از سیستم را اصلاح کن.
- کارایی سیستم را پس از اصلاح اندازهگیری کن.
- اگر اصلاح باعث بهتر شدن کارایی میشود، آن را اتخاذ کن. اگر این اصلاح باعث بدتر شدن کارایی میشود، آن را به حالت قبل برگردان.
کارایی ادراک شده
کارایی ادراک شده در مهندسی کامپیوتر، به سرعت عمل یک ویژگی نرمافزاری در انجام وظیفه اشاره دارد. این مفهوم عمدتاً در جنبههای پذیرش کاربر اعمال میشود.
مدت زمانی که یک برنامه برای راه اندازی، یا یک فایل برای بارگیری نیاز دارد، با نشان دادن صفحه شروع (صفحه اسپلش) یا دیالوگ باکسِ پیشرفت فایل، سریعتر نمیشود. با این حال، برخی از نیازهای انسان را برآورده میکند: برای کاربر سریعتر به نظر میرسد و همچنین یک نشانه بصری به او میدهد تا به او بفهماند سیستم در حال انجام درخواست او است.
در بیشتر موارد، افزایش کارایی واقعی باعث افزایش کارایی ادراک شده میشود، اما وقتی به دلیل محدودیتهای فیزیکی نمیتوان کارایی واقعی را افزایش داد، میتوان از تکنیکهایی برای افزایش کارایی ادراک شده استفاده کرد.
معادله کارایی
مقدار کل زمان (t) لازم برای اجرای یک برنامه بنچمارک برابر با
- ، یا معادل آن
که
- از نظر زمان اجرا، "کارایی" است
- تعداد دستورهایی است که در واقع اجرا شدهاست (طول مسیر دستورالعمل). تراکم کد مجموعه دستورالعملها به شدت بر N تأثیر میگذارد. مقدار N را میتوان دقیقاً با استفاده از شبیهساز مجموعه دستورالعملها (در صورت موجود بودن) یا با تخمین تعیین کرد - که خود بخشی از آن بر اساس توزیع فرکانسی تخمینی یا واقعی متغیرهای ورودی و با بررسی کد ماشین تولید شده از یک کامپایلر HLL است. آنرا از تعداد خطوط کد منبع HLL نمیتوان تعیین کرد. N تحت تأثیر سایر فرایندهای موجود بر روی همان پردازنده نمیباشد. نکته قابل توجه در اینجا این است که سختافزار بهطور معمول مقدار N را برای برنامههای اجرا شده پیگیری نمیکند (یا حداقل به راحتی در دسترس قرارش نمیدهد). بنابراین تنها با شبیهسازی مجموعه دستورالعملها که به ندرت انجام میشود، میتوان مقدار آن را بهطور دقیق تعیین کرد.
- فرکانس کلاک در سیکل بر ثانیه است.
- متوسط دستورالعمل بر سیکل (CPI) برای این بنچمارک است.
- میانگین دستورالعملها در هر سیکل (IPC) برای این بنچمارک است.
حتی در یک ماشین، یک کامپایلر دیگر یا همان کامپایلر با سوییچهای مختلف بهینهسازی کامپایلر متفاوت میتواند N و CPI را تغییر دهد - اگر کامپایلر جدید بتواند N یا C را بهتر کند بدون اینکه وضعیت دیگری را بدتر کند، بنچمارک سریعتر اجرا میشود، اما اغلب بین اینها یک بدهبستانی وجود دارد - آیا بهتر است مثلاً از چند دستورالعمل پیچیده که مدت زمان زیادی طول میکشد تا اجرا شوند، استفاده شود یا از دستورالعملهایی که خیلی سریع اجرا میشوند استفاده شود، اگرچه تعداد بیشتری از آنها نیاز است تا بنچمارک اجرا شود؟
یک طراح پردازنده اغلب برای اجرای یک مجموعه دستورالعمل خاص مورد نیاز است، و بنابراین نمیتواند N را تغییر دهد. گاهی اوقات یک طراح برای بهبود کارایی بر بهبود قابل توجه در f (با تکنیکهایی مانند پایپلاینهای عمیقتر و حافظه نهان سریع تر) تمرکز میکند، در حالی که (امیدوار است) C، بیش از حد فدای این امر نشود - منجر به طراحی پردازنده سرعتی (ترجیح سرعت کلاک بر IPC) میشود. گاهی اوقات یک طراح برای بهبود کارایی بر بهبود قابل توجه در CPI (با تکنیکهایی مانند خروج از دستور در حال اجرا، پردازندههای فوق مقیاس، حافظه نهان بزرگتر، حافظه نهان با بهبود نرخ ضربه (برای حافظه نهان)، بهبود پیشبینی پرش، اجرای حدسی و گمان طور و غیره) بر بهبود عملکرد تمرکز میکند، در حالی که (امیدوار است) بیش از حد فرکانس کلاک را قربانی نکند - که منجر به طراحی CPU بِرِینیَک (نابغه) میشود. برای یک مجموعه دستورالعمل (و بنابراین N ثابت) و فرایند نیمه هادی، حداکثر کارایی تک رشتهای (
جستارهای وابسته
منابع
- ↑ Computer Performance Analysis with Mathematica by Arnold O. Allen, Academic Press, 1994. $1.1 Introduction, pg 1.
- ↑ Measuring Program Similarity: Experiments with SPEC CPU Benchmark Suites
- ↑ Saleem Bhatti. "Channel capacity". Lecture notes for M.Sc. Data Communication Networks and Distributed Systems D51 -- Basic Communications and Networks. Archived from the original on 2007-08-21.
- ↑ Jim Lesurf. "Signals look like noise!". Information and Measurement, 2nd ed.
- ↑ "Archived copy". Archived from the original on 2005-03-27. Retrieved 2009-01-21.
- ↑ Paul DeMone. "The Incredible Shrinking CPU". 2004. «نسخه آرشیو شده». بایگانیشده از اصلی در ۳۱ مه ۲۰۱۲. دریافتشده در ۲۷ ژوئن ۲۰۲۱.
- ↑ "Brainiacs, Speed Demons, and Farewell" by Linley Gwennap