
چرا سختافزار SNES سریعتر از حد انتظار عمل میکند و چرا این یک مشکل است
تاریخ انتشار:
چرا سختافزار SNES سریعتر از حد انتظار عمل میکند و چرا این یک مشکل است
رزوناتورهای سرامیکی ارزان و غیرقابل اعتماد در واحد پردازش صوتی (APU) منجر به بروز مشکلات "ثابت، فراگیر و اجتنابناپذیر" میشوند.
به طور ایدهآل، شما انتظار دارید که هر کنسول Super NES—اگر به درستی نگهداری شود—به طور یکسان با هر واحد Super NES دیگری که تاکنون ساخته شده، عمل کند (حداقل در همان منطقه). با توجه به فایل ROM پایه یکسان و مجموعهای از ورودیهای دقیقا زمانبندی شده، امیدواریم که همه آن کنسولها خروجی مشابهی از گیمپلی را در طول زمان و بین سختافزارهای مختلف ارائه دهند.
جامعه TASBot به این نوع پیشبینیپذیری حالت جامد برای ایجاد سرعترانهای کمکی ابزار (tool-assisted speedruns) که میتواند با دقت رباتیک بر روی سختافزار واقعی کنسول اجرا شود، وابسته است. اما به ویژه در SNES، این تیم به طور عمده در همگامسازی سرعترانهای شبیهسازی شده با نتایج نشان داده شده بر روی کنسولهای واقعی با مشکل مواجه شده است.
پس از تحقیقات و آزمایشات قابل توجه بر روی دهها واحد واقعی SNES، تیم TASBot اکنون معتقد است که یک رزوناتور سرامیکی ارزان که در واحد پردازش صوتی (APU) سیستم استفاده میشود، مسئول بسیاری از این ناهماهنگیها است. در حالی که مستندات خود نینتندو میگوید که APU باید با نرخ ثابتی از 24.576 مگاهرتز (و نرخ نمونهبرداری پردازش سیگنال دیجیتال مرتبط با 32,000 هرتز) عمل کند، در عمل، این نرخ میتواند بر اساس حرارت، سن سیستم و تغییرات جزئی فیزیکی که در طول زمان در واحدهای مختلف کنسول ایجاد میشود، کمی متفاوت باشد.
بازیکنان معمولی تنها این مشکل را به صورت یک نت موسیقی و صداهای درون بازی که به طور تقریباً غیرقابل تشخیص بالاتر از حد معمول است، متوجه میشوند. اما برای TASBot، آلن "dwangoAC" سسیل میگوید که این ساعت غیرقابل اعتماد به یک مشکل "ثابت، فراگیر و اجتنابناپذیر" برای دستیابی به ثبات دقیق در سرعترانهای تأیید شده توسط سختافزار تبدیل شده است.

مشکلات غیر استاندارد
سسیل میگوید که او اولین بار در سال 2016 شروع به مشکوک شدن به نقش APU در مشکلات SNES تیم TASBot کرد، زمانی که کنسول خود را برای آزمایش با یک شمارنده فرکانس خارجی باز کرد. او متوجه شد که ساعت APU او "به اندازهای کاهش یافته که باعث بروز مشکلاتی در تکرارپذیری میشود" و این باعث میشود که کنسول "فریمهای تأخیری" غیرقابل پیشبینی را ایجاد کند، اگر و زمانی که بارهای CPU و APU نتوانند به طور مورد انتظار همراستا شوند. این فریمهای تأخیری به نوبه خود کافی هستند تا ورودی TASBot را بر روی سختافزار واقعی از نتایجی که در یک شبیهساز کنترلشدهتر مشاهده میکنید، "غیر همگام" کنند.
برخلاف کریستالهای کوارتز که در بسیاری از الکترونیکها (از جمله CPU زمانبندی شدهتر و سازگارتر SNES) استفاده میشود، رزوناتورهای سرامیکی ارزانتر در APU SNES "معروف به کاهش کیفیت در طول زمان" هستند، به گفته سسیل. مستندات مربوط به رزوناتورهای استفاده شده در APU همچنین به نظر میرسد که نشان میدهد حرارت اضافی ممکن است بر سرعت چرخه ساعت تأثیر بگذارد، به این معنی که APU ممکن است کمی سریعتر شود وقتی که یک کنسول خاص گرم میشود.
تیم TASBot اولین گروهی نبود که این نوع ناهماهنگی صوتی را در SNES متوجه شد. در اوایل دهه 2000، برخی از توسعهدهندگان شبیهساز متوجه شدند که برخی از بازیهای آخرین دوره SNES به درستی اجرا نمیشوند وقتی که نرخ نمونهبرداری DSP شبیهساز به مقدار مشخص شده توسط نینتندو، یعنی دقیقاً 32,000 هرتز تنظیم شده باشد (این عدد از سرعت ساعت APU به دست آمده است). توسعهدهندگان در آن زمان سختافزار واقعی را آزمایش کردند و متوجه شدند که DSP در واقع با 32,040 هرتز در حال اجرا است و تنظیم DSP شبیهساز به این نرخ خاص ناگهان مشکلات بازیهای تجاری را حل کرد.

این تغییر کوچک اما ضروری در شبیهساز نشان میدهد که "توسعهدهندگان اصلی که این بازیها را نوشتند، از سختافزاری استفاده میکردند که... باید در آن زمان کمی سریعتر عمل میکردند"، سسیل به Ars گفت. "زیرا اگر آنها به طور مستقیم به چیزی که مشخصات میگفتند، نوشته بودند، ممکن است کار نمیکرد."
نظرسنجی میگوید...
در حالی که تحقیقات و آزمایشها وجود این ناهماهنگیهای APU را تأیید کردند، سسیل میخواست ببیند که مشکل در کنسولهای واقعی امروز چقدر بزرگ است. برای انجام این کار، او ماه گذشته یک نظرسنجی غیررسمی آنلاین برگزار کرد و به طور مرموزی به دنبالکنندگان خود در شبکههای اجتماعی هشدار داد که "کنسولهای SNES به نظر میرسد که با گذر زمان سریعتر میشوند." او از پاسخدهندگان خواست تا یک ROM اندازهگیری ساعت DSP را بر روی هر سختافزار SNES کاری که در دسترس داشتند، اجرا کنند و پس از اینکه کنسول زمان کافی برای گرم شدن داشت، آزمایش را دوباره انجام دهند.
پس از دریافت 143 پاسخ و تجزیه و تحلیل دادهها، سسیل گفت که از این که دما به نظر میرسد تأثیر کمی بر سرعت اندازهگیری شده DSP دارد، شگفتزده شد؛ اندازهگیری فقط به طور متوسط 8 هرتز در بین خوانشهای "سرد" و "گرم" بر روی همان کنسول افزایش یافت. سسیل حتی کنسول خود را در فریزر گذاشت تا ببیند آیا نرخ ساعت DSP تغییر میکند و وقتی که دوباره به دمای اتاق گرم شد، فقط 32 هرتز تفاوت مشاهده کرد.

این اثرات حرارتی در مقایسه با نوسانات طبیعی ساعت در کنسولهای مختلف ناچیز بود. کندترین و سریعترین DSPها در نمونه سسیل نشاندهنده تفاوت ساعتی 234 هرتز، یا حدود 0.7 درصد از مشخصات 32,000 هرتز بودند.
این تفاوت به اندازهای کوچک است که بازیکنان انسانی احتمالاً به طور مستقیم آن را متوجه نمیشوند؛ اما عضو تیم TASBot، Total، تخمین زد که ممکن است به "در بدترین حالت یک یا دو ثانیه [تفاوت] در طول ساعتها گیمپلی" منجر شود. با این حال، سرعترانهای ماهر میتوانند تفاوتهای کوچک را متوجه شوند، اگر همراستاییهای مختلف CPU و APU باعث "تغییر الگوهای دشمن به چیزی دیگر" بین اجراها شود، سسیل گفت.
برای یک سرعتران کمکی ابزار که نیاز به دقت فریم دارد، با این حال، نوسانات ساعت بین کنسولها میتواند منجر به سردردهای بیشماری شود. همانطور که عضو تیم TASBot، Undisbeliever، در تحلیل دقیق خود توضیح داد: "در یک کنسول ممکن است 0.126 فریم برای پردازش صدای موسیقی طول بکشد، در یک کنسول دیگر ممکن است 0.127 فریم طول بکشد. ممکن است به نظر نرسد که زیاد است، اما کافی است که ممکن است شروع بارگذاری آهنگ را به اندازه یک فریم به تأخیر بیندازد (بسته به زمانبندی، تأخیر و کد بازی)."
سسیل همچنین گفت که سرعتهای ساعت DSP گزارششده در نظرسنجی نیز کمی بیشتر از آنچه که انتظار داشت، با نرخ متوسط 32,076 هرتز در دمای اتاق بود. این به طور قابل توجهی بیشتر از هر دو نرخ 32,000 هرتز مشخص شده توسط نینتندو و نرخ 32,040 هرتز است که توسعهدهندگان شبیهساز پس از نمونهبرداری از سختافزار واقعی در سال 2003 به آن رسیدند.

برای برخی ناظران، این شواهدی است که APUهای SNES که در دهه 90 تولید شدهاند، به آرامی در حال افزایش سرعت هستند و ممکن است در سالهای آینده و دهههای آینده نیز سریعتر شوند. اما سسیل میگوید که دادههای تاریخی که دارند، به اندازه کافی قوی نیستند تا چنین ادعایی را با اطمینان مطرح کنند.
"ما همه یک دسته از گیمرها و نردهای با مهارتهای متفاوت هستیم و در ذات ماست که درباره آنچه که نتایج به معنای آن هستند، بحث کنیم، که خوب است"، سسیل گفت. "تنها چیزی که میتوانیم با قطعیت بگوییم، اهمیت آماری پاسخهایی است که نشان میدهد نرخ نمونهبرداری DSP فعلی به طور متوسط 32,076 هرتز است، سریعتر از مشخصات اصلی. بقیه آن به تفسیر و مقداری حدس آموخته شده بستگی دارد که میتوانیم از آنچه که میتوانیم استخراج کنیم."
یک قدم اول
برای تیم TASBot، دانستن اینکه زمانبندی واقعی سختافزار SNES چقدر میتواند از مشخصات خشک (و شبیهسازها) متفاوت باشد، گام مهمی برای به دست آوردن نتایج بیشتر سازگار بر روی سختافزار واقعی است. اما این دانش کاملاً مشکلات همگامسازی آنها را حل نکرده است. حتی زمانی که سسیل رزوناتور سرامیکی APU خود را در Super NES خود با یک نسخه کوارتز دقیقتر (تنظیم شده به طور دقیق برای مطابقت با مشخصات نوشته شده نینتندو) جایگزین کرد، تیم "رفتار کاملاً ایدهآلی که انتظار داشتیم را مشاهده نکرد"، او به Ars گفت.

فراتر از ناهماهنگیهای سرعت ساعت، سسیل به Ars توضیح داد که آزمایشهای تیم TASBot یک "الگوی جیتری" اضافی را در نمونهبرداری APU پیدا کرده است که "مقداری واریانس در چقدر طول میکشد تا اقدامهای مختلف را انجام دهد" بین اجراها ایجاد میکند. این به عملکرد غیرقابل پیشبینی حتی در همان سختافزار منجر میشود، سسیل گفت، که به این معنی است که "TASBot احتمالاً پس از چند دقیقه بازی در بیشتر بازیهای SNES" غیر همگام خواهد شد.
تحقیقات گسترده Rasteri نشان میدهد که این ناهماهنگیها در اجراهای مشابه کنسول احتمالاً ناشی از یک "مدار ریست بسیار غیرقابل پیشبینی" است که ترتیب و زمانبندی خاص راهاندازی اجزای فردی کنسول را هر بار که روشن میشود، تغییر میدهد. این منجر به "امکانهای بینهایت" برای مکان نسبی جایی که ساعتهای CPU و APU در "چرخه همگامسازی" خود برای هر اجرای تازه شروع میشوند، میشود و پیشبینی دقیقاً اینکه کجا و چه زمانی فریمهای تأخیری ظاهر خواهند شد، غیرممکن میکند، Rasteri نوشت.
سسیل گفت که این نوع مسائل زمانبندی "اثر پروانهای" SNES را به یک کنسول "به طرز شگفتانگیزی پیچیده" تبدیل میکند که "در برابر تلاشهای ما برای مدلسازی کامل آن و مجبور کردن آن به رفتار سازگار مقاومت کرده است." اما او هنوز امیدوار است که تیم "در نهایت راهی برای بازگرداندن SNES به رفتار مورد انتظار توسعهدهندگان بازی بر اساس مستنداتی که به آنها ارائه شده، بدون ایجاد تغییرات تهاجمی پیدا کند..."
در نهایت، با این حال، سسیل به نظر میرسد که احترام تقریباً مایوسکنندهای نسبت به چگونگی عملکرد غیرقابل پیشبینی معماری عجیب SNES در عمل پیدا کرده است. "اگر بخواهید به عمد یک منبع تصادفی و رفتار غیرقابل پیشبینی ایجاد کنید، داشتن دو منبع ساعت که به طور مستقل در برابر یکدیگر میچرخند، انتخاب فوقالعادهای است"، او گفت.