موضوع مقاله: کارآیی کامپیوتر | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # کارآیی کامپیوتر | مقدمه: در محاسبات رایانه ای (رایانش)، کارایی رایانه میزان کار مفیدی است که توسط یک سیستم رایانه ای انجام می‌شود. | ## بخش 1: کارآیی کامپیوتر | خارج از زمینه‌های خاص، عملکرد رایانه از نظر دقت، بازده ای و سرعت اجرای دستورالعمل‌ها در یک برنامه رایانه ای تخمین زده می‌شود. وقتی صحبت از عملکرد بالای رایانه ای می‌شود، ممکن است یک یا چند عامل زیر دلیل این امر باشند: زمان پاسخ‌دهی کوتاه برای یک کار مشخص. تعاریف فنی و غیرفنی کارایی هر سیستم رایانه ای را می‌توان با استفاده از یک یا چند معیار ذکر شده در بالا، به لحاظ فنی و قابل اندازه‌گیری، ارزیابی کرد. به عنوان جنبه ای از کیفیت نرم‌افزاری کارایی نرم‌افزار رایانه ای، به ویژه زمان پاسخ‌دهی نرم‌افزار، جنبه ای از کیفیت نرم‌افزار است که در تعاملات انسان و رایانه مهم است. مهندسی کارایی مهندسی کارایی در مهندسی سیستم‌ها شامل مجموعه ای از نقش‌ها، مهارت‌ها، فعالیت‌ها، شیوه‌ها و ابزارها و تحویل دادنی‌هایی (نتیجه کار) است که در هر مرحله از چرخه عمر توسعه سیستم‌ها به کار گرفته می‌شوند و این اطمینان را می‌دهد که برای کارایی مورد نیاز، یک راه حل طراحی، پیاده‌سازی و پشتیبانی عملیاتی خواهد شد. گاهی اوقات یک طراح پردازنده می‌تواند با بهبود یکی از جنبه‌های عملکرد، که در پایین‌تر ارائه شده‌اند، راهی برای ساخت پردازنده ای با عملکرد کلی بهتر پیدا کند، بدون اینکه کارایی پردازنده را در زمینه‌های دیگر کاهش دهد. با این حال، گاهی اوقات افزایش شدید یک نوع از کارایی در پردازنده منجر به افت کارایی کلی در آن می‌شود، زیرا سایر جنبه‌های مهم، قربانی رسیدن به تنها یک عدد بزرگ و چشمگیر می‌شوند. مهندسی کارایی برنامه مهندسی کارایی برنامه (APE)، یک روش‌شناسی خاص در مهندسی کارایی است که برای پاسخگویی به چالش‌های مرتبط با کارایی برنامه‌ها در محیط‌های توزیع شده فزایندهٔ سیار، ابری و IT-زمینی، طراحی شده‌است. این شامل نقش‌ها، مهارت‌ها، فعالیت‌ها، شیوه‌ها، ابزارها و تحویل دادنی‌هایی (نتیجه کار) است که در هر مرحله از چرخه حیات برنامه به کار گرفته می‌شوند و این اطمینان را می‌دهد که یک برنامه برای پاسخگویی به الزامات کارایی غیر عملکردی طراحی، اجرا و پشتیبانی عملیاتی خواهد شد. جنبه‌های عملکرد معیارهای عملکرد رایانه (مواردی که اندازه‌گیری می‌شوند) شامل آماده به کار بودن، زمان پاسخ‌دهی، ظرفیت کانال، تأخیر، زمان اتمام، زمان سرویس، پهنای باند، توان عملیاتی، بازده نسبی، مقیاس پذیری، کارایی در هر وات، نسبت فشرده سازی، طول مسیر دستورالعمل و تسریع می‌باشد. دسترسی (آماده به کار بودن) در دسترس بودن یک سیستم معمولاً با اطمینان پذیری آن رابطه مستقیم دارد - هرچه اطمینان پذیری افزایش یابد، در دسترس بودن نیز افزایش می‌یابد (یعنی زمان اکار کمتر). همچنین با پیش بردن استراتژی تمرکز نه بر افزایش اطمینان پذیری، بلکه بر افزایش تست پذیری و نگهداشت‌پذیری می‌توان در دسترس بودن یک سیستم را افزایش داد. با این حال، از آنجا که عدم قطعیت در تخمین‌های اطمینان پذیری در اکثر موارد بسیار زیاد است، حتی در حالی که سطح نگهداشت‌پذیری بسیار بالاست، احتمالاً بر مشکل در دسترس بودن (عدم اطمینان در پیش‌بینی) غلبه می‌کند. در محاسبات، این سرویس می‌تواند هر واحد کار از یک IO دیسک ساده تا بارگیری یک صفحه وب پیچیده باشد. زمان پاسخ مجموع سه عدد است: زمان سرویس - مدت زمانی که طول می‌کشد تا کار درخواستی انجام شود. زمان انتظار - مدت زمانی که درخواست باید منتظر بماند تا درخواست‌های قبل از آن در صف انجام شوند. زمان انتقال - چه مدت طول می‌کشد تا درخواست به رایانه داده شود و پاسخ به درخواست دهنده برگردانده شود. سرعت پردازش اکثر مصرف‌کنندگان، معماری رایانه ای را انتخاب می‌کنند (معمولاً معماری Intel IA32) تا بتوانند تعداد زیادی از نرم‌افزارهای از قبل کامپایل شده را اجرا کنند. برخی به دلیل آگاهی نداشتن درست از بنچمارک‌های رایانه ای، پردازنده ای را صرفاً بخاطر بالا بودن فرکانس کاری اش انتخاب می‌کنند (افسانه مگاهرتز). برخی از طراحان سیستم که رایانه‌های موازی می‌سازند، پردازنده را براساس سرعت-بر-دلار انتخاب می‌کنند. ظرفیت کانال ظرفیت کانال محکم‌ترین حدِ بالای نرخ اطلاعاتی است که می‌تواند به‌طور مطمئن از طریق یک کانال ارتباطی منتقل شود. با استفاده از نظریه برنامه‌نویسی کانال پر سر و صدا، ظرفیت کانال یک کانال معین، نرخ اطلاعات محدود کننده (در واحد اطلاعات در واحد زمان) است که با احتمال خطای ناچیز دلخواه قابل دستیابی است. نظریه اطلاعات، که توسط کلود شانون در طول جنگ جهانی دوم ساخته شد، مفهوم ظرفیت کانال را تعریف می‌کند و یک مدل ریاضی که آن را قابل محاسبه می‌کند، ارائه می‌دهد. | ## بخش 2: کارآیی کامپیوتر | نتیجه اصلی بیان می‌کند که ظرفیت کانال، که در بالا تعریف شد، با حداکثرِ اطلاعات متقابل بین ورودی و خروجی کانال، یعنی جایی که حداکثر سازی با توجه به توزیع ورودی است، داده می‌شود. تأخیر تأخیر، تعلل زمانی بین علت و نتیجه برخی تغییرات فیزیکی در سیستمِ در حال مشاهده است. این سرعت همیشه کوچکتر مساوی سرعت نور است؛ بنابراین هر سیستم فیزیکی که دارای ابعاد فضایی غیر صفر باشد، نوعی تأخیر را تجربه خواهد کرد. در ارتباطات، حد پایین تأخیر توسط واسطه ای که برای ارتباطات استفاده می‌شود تعیین می‌شود. در سیستم‌های ارتباطی دو طرفه مطمئن، تأخیر حداکثر سرعت انتقال اطلاعات را محدود می‌کند، زیرا غالباً در هر لحظه، محدودیتی در میزان اطلاعاتی که به اصطلاح «در پرواز» هستند وجود دارد. در زمینه تعامل انسان و ماشین، تأخیر محسوس (تأخیر بین آنچه کاربر دستور می‌دهد و زمانی که رایانه نتایج را ارائه می‌دهد) تأثیر زیادی بر رضایت و استفاده‌پذیزی کاربر دارد. در سیستم عامل‌ها، اگر سایر فرایندها نیز در حال اجرا باشند، می‌توان اجرای فرایند را به تعویق انداخت. علاوه بر این، سیستم عامل می‌تواند زمان انجام عملیاتی را که فرایند امر می‌کند، برنامه‌ریزی کند. به عنوان مثال، فرض کنید فرایندی دستور می‌دهد که خروجی ولتاژ کارت کامپیوتر با نرخ ۱۰۰۰ هرتز، به زیاد و کم و زیاد و کم و همین روال تنظیم شود. سیستم عامل ممکن است زمانبندی هر تغییر (زیاد-به-کم یا کم-به-زیاد) را براساس یک کلاک داخلی تنظیم کند. تأخیر در اینجا، تعللی است که بین دستورالعملِ تغییر و لحظه ای که سخت‌افزار تغییر ولتاژ را انجام می‌دهد وجود دارد. طراحان سیستم که در حال ساخت سیستم‌های محاسباتی بی درنگ هستند می‌خواهند پاسخ در بدترین حالت را تضمین کنند. انجام این کار زمانی که پردازنده تأخیر اندکی در وقفه داشته باشد و دارای پاسخ قطعی باشد ساده‌تر است. پهنای باند گاهی اوقات نرخ بیت خالص (یا همان اوج نرخ بیت، سرعت اطلاعات یا نرخ بیت مفید لایه فیزیکی)، ظرفیت کانال یا حداکثر توان عملیاتی یک مسیر ارتباطی منطقی یا فیزیکی را در یک سیستم ارتباطی دیجیتالی تعریف می‌کند. به عنوان مثال، تست‌های پهنای باند حداکثر توان عملیاتی شبکه را اندازه‌گیری می‌کنند. دلیل این کاربرد این است که طبق قانون هارتلی (Hartley's law)، حداکثر نرخ داده یک پیوند ارتباطی فیزیکی متناسب با پهنای باند آن بر حسب هرتز است که گاهی اوقات به آن پهنای باند فرکانس، پهنای باند طیفی، پهنای باند RF، پهنای باند سیگنال یا پهنای باند آنالوگ گفته می‌شود. در شبکه‌های بی‌سیم یا شبکه‌های ارتباطی سلولی، بازده طیفی سیستم در واحد بیت/ثانیه/هرتز/ناحیه، بیت/ ثانیه/ هرتز/سایت (منطقه) یا بیت/ثانیه/هرتز/سلول (سل)، حداکثر توان سیستم (توان کل) تقسیم بر پهنای باند آنالوگ و یک مقدار سطح تحت پوشش سیستم است. در مدارهای مجتمع (IC)، اغلب یک بلوک در نمودار جریان داده دارای یک ورودی و یک خروجی است و بر روی بسته‌های گسسته اطلاعاتی کار می‌کند. از آنجا که واحدهای توان عملیاتی متقابل با واحد تأخیر انتشار هستند که «ثانیه بر هر پیام» یا «ثانیه بر هر خروجی» است، می‌توان از توان تولیدی برای ربط دادن یک دستگاه محاسباتی که یک عملکرد اختصاصی مانند ASIC یا پردازنده تعبیه شده را به یک کانال ارتباطی، استفاده کرد که تجزیه و تحلیل سیستم را ساده می‌کند. کارایی نسبی مقیاس پذیری مقیاس پذیری به معنای توانایی سیستم، شبکه یا فرایند برای اداره مقدار زیادی از کار به روشی توانمند یا توانایی بزرگ شدن آن برای سازگاری با این رشد است. کارایی در هر وات طراحان سیستم که رایانه‌های موازی مانند سخت‌افزار گوگل می‌سازند، پزدارنده‌ها را براساس سرعت آنها در هر وات نیرو انتخاب می‌کنند، زیرا هزینه تأمین انرژی پردازنده بیش از هزینه خود پردازنده است. از آنجا که برای استفاده از داده‌های فشرده ابتدا باید از حالت فشرده خارج شوند (وافشاری)، این پردازش اضافی هزینه‌های محاسباتی یا سایر هزینه‌ها را توسط وافشاری ایجاد می‌کند. اندازه و وزن این یک ویژگی مهم در کارایی سیستم‌های سیار است، از تلفن‌های هوشمندی که در جیب خود نگه می‌دارید تا سیستم‌های جاسازی شده قابل حمل در یک فضاپیما. | ## بخش 3: کارآیی کامپیوتر | اثرات زیست‌محیطی تأثیر رایانه یا رایانه‌ها بر محیط در هنگام تولید و بازیافت و همچنین هنگام استفاده. اندازه‌گیری‌ها با هدف کاهش ضایعات، کاهش مواد خطرناک و به حداقل رساندن اثر اکولوژیکی رایانه انجام می‌شود. بنچمارک‌ها از آنجا که برنامه‌های زیادی برای آزمایش پردازنده‌ها در تمام جنبه‌های کارایی وجود دارد، بنچمارک‌ها ایجاد شدند. تست کارایی نرم‌افزار در مهندسی نرم‌افزار، تست کارایی به‌طور کلی تستی برای تعیین نحوه عملکرد یک سیستم از نظر پاسخگویی و پایداری تحت یک حجم کار خاص است. تست کارایی زیرمجموعه ای از مهندسی کارایی است، روشی نوظهور در علوم کامپیوتر که تلاش می‌کند کارایی را در پیاده‌سازی، طراحی و معماری یک سیستم ایجاد کند. پروفایل سازی (تجزیه و تحلیل کارایی) در مهندسی نرم‌افزار، پروفایل سازی ("پروفایل سازی برنامه"، "پروفایل سازی نرم‌افزار") نوعی تجزیه و تحلیل برنامه پویا است که به عنوان مثال فضا (حافظه) یا پیچیدگی زمان یک برنامه، استفاده از دستورالعمل‌های خاص یا فرکانس و مدت زمان صدا زدن توابع را اندازه‌گیری می‌کند. پروفایل سازی با استفاده از کد منبعِ برنامه یا فرم اجرایی دودویی آن با استفاده از ابزاری به نام پروفایلر (یا پروفایلر کد) بدست می‌آید. تکنیک‌های مختلفی ممکن است توسط پروفایلرها استفاده شود، مانند روش‌های مبتنی بر رویداد، آماری، ابزار دقیق و شبیه‌سازی. این معمولاً یک برنامه رایانه ای است، اما می‌توان همین روشها را در بازارهای اقتصادی، دیوان سالاری یا سایر سیستمهای پیچیده نیز اعمال کرد. انگیزه چنین فعالیتی را مشکل کارایی می‌نامند که می‌تواند واقعی یا پیش‌بینی شده باشد. توانایی یک سیستم در پذیرش بار کاری بالاتر مقیاس پذیری نامیده می‌شود و اصلاح سیستم برای کنترل بار کاری بالاتر مترادف با تنظیم کارایی است. یک تنظیم سیستماتیک این مراحل را دنبال می‌کند: مسئله را ارزیابی کرده و مقادیر عددی ایجاد کن که رفتار قابل قبول را دسته‌بندی کند. کارایی ادراک شده کارایی ادراک شده در مهندسی کامپیوتر، به سرعت عمل یک ویژگی نرم‌افزاری در انجام وظیفه اشاره دارد. مدت زمانی که یک برنامه برای راه اندازی، یا یک فایل برای بارگیری نیاز دارد، با نشان دادن صفحه شروع (صفحه اسپلش) یا دیالوگ باکسِ پیشرفت فایل، سریعتر نمی‌شود. با این حال، برخی از نیازهای انسان را برآورده می‌کند: برای کاربر سریعتر به نظر می‌رسد و همچنین یک نشانه بصری به او می‌دهد تا به او بفهماند سیستم در حال انجام درخواست او است. در بیشتر موارد، افزایش کارایی واقعی باعث افزایش کارایی ادراک شده می‌شود، اما وقتی به دلیل محدودیت‌های فیزیکی نمی‌توان کارایی واقعی را افزایش داد، می‌توان از تکنیک‌هایی برای افزایش کارایی ادراک شده استفاده کرد. که از نظر زمان اجرا، "کارایی" است تعداد دستورهایی است که در واقع اجرا شده‌است (طول مسیر دستورالعمل). مقدار N را می‌توان دقیقاً با استفاده از شبیه‌ساز مجموعه دستورالعمل‌ها (در صورت موجود بودن) یا با تخمین تعیین کرد - که خود بخشی از آن بر اساس توزیع فرکانسی تخمینی یا واقعی متغیرهای ورودی و با بررسی کد ماشین تولید شده از یک کامپایلر HLL است. نکته قابل توجه در اینجا این است که سخت‌افزار به‌طور معمول مقدار N را برای برنامه‌های اجرا شده پیگیری نمی‌کند (یا حداقل به راحتی در دسترس قرارش نمی‌دهد). بنابراین تنها با شبیه‌سازی مجموعه دستورالعمل‌ها که به ندرت انجام می‌شود، می‌توان مقدار آن را به‌طور دقیق تعیین کرد. حتی در یک ماشین، یک کامپایلر دیگر یا همان کامپایلر با سوییچ‌های مختلف بهینه‌سازی کامپایلر متفاوت می‌تواند N و CPI را تغییر دهد - اگر کامپایلر جدید بتواند N یا C را بهتر کند بدون اینکه وضعیت دیگری را بدتر کند، بنچمارک سریعتر اجرا می‌شود، اما اغلب بین این‌ها یک بده‌بستانی وجود دارد - آیا بهتر است مثلاً از چند دستورالعمل پیچیده که مدت زمان زیادی طول می‌کشد تا اجرا شوند، استفاده شود یا از دستورالعمل‌هایی که خیلی سریع اجرا می‌شوند استفاده شود، اگرچه تعداد بیشتری از آنها نیاز است تا بنچمارک اجرا شود؟ یک طراح پردازنده اغلب برای اجرای یک مجموعه دستورالعمل خاص مورد نیاز است، و بنابراین نمی‌تواند N را تغییر دهد. | ## جمع‌بندی | گاهی اوقات یک طراح برای بهبود کارایی بر بهبود قابل توجه در f (با تکنیک‌هایی مانند پایپلاین‌های عمیق‌تر و حافظه نهان سریع تر) تمرکز می‌کند، در حالی که (امیدوار است) C، بیش از حد فدای این امر نشود - منجر به طراحی پردازنده سرعتی (ترجیح سرعت کلاک بر IPC) می‌شود.