کنسول PS5 سریعترین بارگذاری اطلاعاتی را که تاکنون در دستگاه های مصرف کننده در بازار انبوه در دسترس است داشته
و ما فکر می کنیم ممکن است حتی از آنچه که قبلا از کارایی های این ویژگی ها شنیده اید بهتر باشد. آنچه این امکان را برای شما فراهم میکند یک SSD سریع است. یک پشته IO عالی که به طور کامل مستقل از پردازنده مرکزی کنسول عمل میکند و این ویژگی رمزگشای سخت افزاری Kraken نام دارد . فشرده سازی Kraken به عنوان ضریب سرعت IO و ظرفیت دیسک عمل می کند و به عبارتی دیتاهای بسیار بیشتری را ذخیره می کند و متناسب با نسبت فشرده سازی سریعتر بارگیری می شود.
سونی قبلاً اطلاعاتی برای ما منتشر کرده بود که SSD قادر به سرعت انتقال ۵٫۵ گیگابایت بر ثانیه است و انتظار می رود پهنای باند آن حدود ۸-۹ گیگابایت بر ثانیه باشد . با این حساب بر اساس اندازه گیری نسبت فشرده سازی متوسط بازی ها در حدود ۱٫۵ تا ۱میشود اندازه گیری کرد . در حالی که Kraken یک کمپرسور عمومی فوق العاده عالی است ، برای یافتن الگوهای قابل استفاده در نوع مهم محتوایی آن میشود گفت بافت های GPU که بخش عمده ای از محتوای بازی ها را تشکیل می دهند از آن زمان ما با پیشرفت Oodle Texture که آنها را به گونه ای رمزگذاری می کند که فشرده سازی بعدی توسط Kraken می تواند الگوهایی را پیدا کند که می تواند در بهنیه سازی باز ها و سرعت انتقال داده ها مورد استفاده قرار گیرد ، در پیشرفت نسبت فشرده سازی GPU پیشرفت چشمگیری داشته ایم. نتیجه این است که ما انتظار داریم میانگین نسبت فشرده سازی بازی ها در آینده بسیار بهتر و نزدیک به ۲ به ۱ باشد.

میتوان گفت Oodle Kraken یک فشرده سازی داده های بدون ضرر است که ما در RAD Game Tools آن را اختراع کردیم. که نسبتهای فشرده سازی بسیار بالایی دارد و رمزگشایی آن نیز بسیار سریع است. Kraken به طور منحصر به فردی برای فشرده سازی محتوای بازی و مطابقت با سرعت مورد نیاز SSD های سریع بسیار مناسب است بدون اینکه اصلا گلوگاه برای کنسول و معماری سخت افزاری آن ایجاد نکند . ما در ابتدا Oodle Kraken را به عنوان نرم افزاری برای پردازنده های به روز مدرن طراحی کردیم و توسعه دادیم. پس ۲ هدف اصلی ما در کراکن اصلاح فرم و شکل فشرده سازی برای به حداکثر رساندن میزان موازی سازی سطح دستورالعمل در پردازنده مرکزی با کار کردی تماما مستقل در همه زمان ها بود. و حداقل وابستگی ها و شاخه های این روند و تطبیق آن برای سخت افزار مورد نظر چالش جدیدی بود. اما میتوانیم بگوییم مشخص شد که تصمیماتی که در مورد طراحی Kraken در پردازنده های مدرن گرفته بودیم دقیقاً همان چیزی بود که برای یک سخت افزار با کیفیت لازم بود.
رمز گشا و یا همان دکودر ( decoder معنای رمز گشایی چیزی رو داره که از انتقال یک ویژگی به ویژگی دیگه میتونه رمز گشایی کنه و در بخش های مختلف سخت افزاری میتونه معانی کم و بیش مختلفی داشته باشه ولی کلیت کار همین معنی هست که برای شما انجام دادم . ) ویژگی Kraken به عنوان یک ضریب سرعت بسیار موثر برای بارگذاری داده ها عمل می کند. داده ها بر روی SSD فشرده شده و در زمان بارگذاری بر روی PS5 به صورت شفاف رمزگشایی می شوند. آنچه شما در بازی ها مشاهده می کنید میزان دریافت داده های فشرده شده است برابر است با سرعت SSD ضربدر نسبت فشرده سازی که بر روی آن صورت گرفته است .
فشرده سازی خوب داده ها همچنین زمان بارگیری بازی را بهبود می بخشد و به شما این امکان را می دهد بازی های بیشتری را روی دیسک خودتان ذخیره کنید. بازهم نسبت فشرده سازی به عنوان یک ضریب موثر برای سرعت بارگیری و ظرفیت دیسک عمل می کند. به طور مثال یک بازی ممکن است از ۸۰ گیگابایت فشرده نشده استفاده کند . اما با فشرده سازی ۲ تا ۱ فقط ۴۰ گیگابایت بر روی دیسک شما ذخیره میشود و به شم این امکان را می دهد دو برابر بیشتر بازی ها را ذخیره کنید. دیسک کوچکتر با فشرده سازی بهتر می تواند بازی های بیشتری نسبت به دیسک بزرگتر با فشرده سازی بدتر در خود جای دهد .
هنگامی که یک بازی به داده های PS5 نیاز دارد درخواستی را به سیستم IO ارائه می دهد. که داده های فشرده شده را از SSD بارگیری می کند. سپس به رمزگشای ( Decoder ) سخت افزاری Kraken تحویل داده می شود که داده های فشرده شده بازی را به RAM منتقل می کند. تا آنجا که به بازی مربوط می شود آنها فقط داده های فشرده شده خود را دریافت میکنند . اما با عملکرد بالاتر در سیستم عامل های دیگر Kraken می تواند در نرم افزار اجرا شود و همان سود ها و بهینه سازی ها و کارایی های مثبت در بخش فشرده سازی را بدست می آورد اما تفاوت این است که هسته پردازنده برای رمزگشایی استفاده می کند. هنگام استفاده از نرم افزار Kraken ابتدا داده های فشرده شده را بارگیری می کنید سپس پس از اتمام IO و رفع فشار بر روی پردازنده را انجام می دهید.
اگر نسبت فشرده سازی دقیقاً ۱٫۵ به ۱ باشد ، حداکثر پهنای باند ۵٫۵ گیگابایت بر ثانیه SSD به ۸٫۲۵ گیگابایت بر ثانیه بایت خارج از فشرده سازی از رمزگشایی Kraken از حالت فشرده سازی خارج می شود. سونی برای بازیهای فاقد Oodle Texture نسبت فشرده سازی بین ۴۵/۱ به ۱ و ۶۴/۱ به ۱ را تخمین زده است و در نتیجه پهنای باند پهنای باند ۸-۹ گیگابایت بر ثانیه را انتظار دارد.
از آن زمان سونی اجازه فن آوری جدید Oodle Texture ما را برای همه بازی های PS4 و PS5 داده است. Oodle Texture به شما این امکان را می دهد که بازی ها بافت خود را رمزگذاری کنند تا توسط Kraken به شدت فشرده شوند و از کیفیت بصری بالایی برخوردار باشند. بافت ها غالباً بیشتر محتوای بازی های بزرگ را تشکیل می دهند و فشرده سازی آنها برای کمپرسورهای عمومی مانند Kraken بسیار دشوار بود.
ترکیبی از Oodle Texture و Kraken می تواند در نسبت فشرده سازی سود بسیار زیادی به دست آورد. به عنوان مثال روی بافتی که از یک بازی اخیر تنظیم شده است:
Kraken plus Oodle Texture تقریباً دو برابر فشرده سازی Zip به تنهایی روی این مجموعه بافت را بدست می آورد.
Oodle Texture یک کتابخانه نرم افزاری است که سازندگان بازی در زمان تولید محتوا از آن برای جمع آوری هنر منبع خود در قالب های آماده GPU BC1-7 استفاده می کنند. همه بازی ها از رمزگذارهای بافت GPU استفاده می کنند. اما رمزگذارهای قبلی بافت های کامپایل شده را برای فشرده سازی بهینه نمی کنند مانند بافت Oodle. همه بازی های هنگام عرضه PS5 از Oodle Texture استفاده نخواهند کرد زیرا این یک فناوری بسیار جدید است ، اما ما انتظار داریم که در بیشتر بازی های PS5 در آینده باشد. به همین دلیل ما انتظار داریم که نسبت فشرده سازی متوسط و در نتیجه سرعت IO موثر حتی بهتر از برآورد قبلی باشد.
کراکن چگونه این کار را انجام می دهد؟
متداول ترین گزینه برای Kraken کمپرسور Zip شناخته شده (معروف به “zlib” یا “deflate”) است. رمزگشاهای سخت افزاری Zip به راحتی در دسترس هستند . اما Kraken مزایای ویژه ای نسبت به Zip برای این برنامه دارد. فشرده سازی Kraken بیشتر از Zip است زیرا می تواند الگوها و افزونگی را در داده هایی که Zip نمی تواند مدل کند. همچنین رمزگشایی Kraken ذاتاً سریعتر از Zip است. که در سخت افزار به بیشتر بخش بایت پردازش شده در هر چرخه تفسیر می شود.
ویژگی Kraken یک نوآوری در فشرده سازی فرهنگ لغت برای دنیای مدرن و امروزی است. کمپرسورهای سنتی مانند Zip در حدود نیاز جریان با تأخیر کم ساخته شده اند. در گذشته برای کمپرسورها بسیار مهم بود که بتوانند چند بایت ورودی پردازش کرده و بلافاصله چند بایت دیگر تولید کنند. به طوری که رمزگذاری و رمزگشایی می تواند به صورت تدریجی انجام شود. این به دلیل میزان RAM بسیار کم و کانالهای ارتباطی بسیار کند مورد نیاز بود. و اندازه داده های معمولی بسیار کمتر از حال حاضر بود. هنگام بارگیری از HDD یا SSD ما همیشه داده ها را به صورت تکه ای بارگذاری می کنیم. بنابراین از حالت فشرده سازی با افزایش های کمتر نیازی نیست. Kraken اساساً در اطراف رمزگشایی قطعات کامل توسعه و ساخته شده است. و با تغییر این نیاز Kraken توانایی این را دارد به روش های مختلفی کار کند که برای سخت افزار بسیار کارآمدتر و مفید تر باشد .
همه کمپرسورهای موجود در بانگ اطلاعاتی برای تولید مجدد بایت های فشرده نشده فرامین را به رمزگشا ارسال می کنند. اینها یا مطابقت با زیر رشته قبلی با طول مشخص شده ( برای جبران کارکرد ها ) از نشانگر خروجی فعلی در جریان فشرده نشده است.
کمپرسورهای قدیمی مانند Zip جریان بیت فشرده را بصورت سریال به سریال تجزیه می کنند. عمل بر روی هر بیت به روش های مختلفی که به شاخه های زیادی در رمز گشایی احتیاج دارد . و آیا این بیت به شما می گوید که این جریان های شاخه به شاخه بر یکدیگر مطابقت دارد یا به معنای واقعی هیچ مشکلی در این بین وجود ندارد . و همین طور این حالت میگوید که چند بیت باید جبران کنم و بگیرم و از این قبل مسائل . این نیز وابستگی ذاتی یک داده را ایجاد می کند. که در آن رمزگشایی هر رمز به آخرین نشانه بستگی دارد. زیرا باید بدانید که نشانه قبلی به کجا ختم می شود تا مورد بعدی را پیدا کند . این بدان معناست که پردازنده مرکزی قبل از شروع مرحله بعدی باید منتظر هر مرحله از رمزگشا ( Decoder ) باشد. Kraken می تواند تمام نیاز ها و پیچ و خم های های مورد نیاز برای تشکیل خروجی را از قبل رمزگشایی کند . سپس همه را یک باره یک شاخه کرده و یک انتخاب بدون شاخه برای تشکیل بایت های خروجی انجام دهد. ( یعنی دیگه دردسر های فشرده سازی در فایل های زیپ قدیمی از بین میره و بخش فشرده سازی شاخه به شاخه و گرفتاری هایی که این وسط داشت فراموش میشه و کراکن به صورت یک تک شاخه و بدون هیچ دردسر و گرفتاری داده ها رو انتقال میده )

Kraken جریانهای بهینه شده ای را برای رمزگشا ( Decoder ) ایجاد می کند
یکی از نکات جالب توجه در مورد Kraken این است که قالب جریان بیت رمزگذاری شده مدولار است. ویژگی های مختلف رمزگذار را می توان روشن و خاموش کرد. مانند حالت های کدگذاری آنتروپی برای اجزای مختلف تبدیل داده ها و حالت های منطبق رشته ای که میتوان آن ها را روشن و خاموش کرد . از اهمیت بسیار مهم رمزگذار Kraken می تواند این حالت ها را بدون رمزگذاری مجدد کل جریان انتخاب کند. بنابراین می تواند نحوه کار رمزگذاری را برای هر بخش داده ای که می بیند بهینه کند. Orthogonality گزینه های جریان بیت یک تغییر دهنده بازی است. این بدان معناست که می توانیم با اندازه گیری مستقل سود هر گزینه ، گزینه های بولی را فقط در زمان o – n امتحان کنیم. اگر مجبور بودید برای هر مجموعه گزینه مجددا کدگذاری کنید (مانند کمپرسورهای یکپارچه سنتی) برای یافتن بهترین تنظیمات زمان O 2 ^ N طول می کشد.
گزینه های مختلف جریان بیت در انواع مختلف داده ها به خوبی کار می کنند. و آنها از نظر سرعت رمز گشا ( Decoder ) در مقابل نسبت فشرده سازی محاسبات متفاوتی دارند. در کنسول پلی استیشن ۵ ما از این مورد برای ایجاد بیت های رمزگذاری شده استفاده می کنیم که می توانند در اوج پهنای باند SSD مصرف شوند تا رمزگشای Kraken هرگز گلوگاه ایجاد نکند . تا زمانی که رمز گشای Kraken با سرعت بیشتری از ورودی ۵٫۵ گیگابایت بر ثانیه کار کند. می توانیم حالت های کندتر را که فشرده سازی بیشتری دارند روشن کنیم. این به ما این اجازه و توانایی را می دهد تا جریان را برای استفاده حداکثر از بودجه زمان تنظیم و تعیین کنیم. برای به حداکثر رساندن نسبت فشرده سازی تحت محدودیت همیشه خواندن بیت های فشرده از SSD با سرعت کامل بدون ایجاد هیچ مشکل و گلوگاهی . بدون این توانایی تنظیم جریان سرعت رمزگشایی بسیار متغیری خواهید داشت. بنابراین مجبورید بیش از حد از رمزگشا ( Decoder ) استفاده کنید تا اطمینان حاصل کنید که هرگز گلوگاه ایجا نمیشود و این اغلب باعث اتلاف ظرفیت محاسباتی می شود.
تعداد زیادی جریان فشرده ممکن وجود دارد که همه به همان بایت های فشرده نشده رمزگشایی می شوند. ما فکر می کنیم رمزگشای Kraken به عنوان یک ماشین مجازی است که دستورالعمل هایی را برای ساخت بایت های خروجی اجرا می کند. و جریانهای فشرده شده برنامه هایی برای آن ماشین مجازی هستند. رمزگذار Kraken سپس مانند یک کامپایلر بهینه ساز است که سعی می کند بهترین برنامه ممکن را برای اجرا در آن ماشین مجازی (رمزگشای) پیدا کند. کمپرسورهای قبلی فقط سعی داشتند اندازه جریان فشرده را بدون در نظر گرفتن تأثیر گزینه ها بر زمان رمزگشایی تا جایی که میوانند به حداقل برسانند. وقتی برای رمزگشای نرم افزار رمزگذاری می کنیم. رمزگذار Kraken ترکیبی از زمان و اندازه رمزگشایی را هدف قرار می دهد. هنگام رمزگذاری برای رمزگشای سخت افزاری کنسول پلی استیشن ۵ ما به دنبال کوچکترین جریانی هستیم که سرعت مورد نیاز را برآورده کند.
ما Kraken را طراحی کردیم تا ذاتاً عملکرد متغیر کمتری نسبت به کمپرسورهای سنتی مانند Zip داشته باشد. تمام کمپرسورهای سنتی با کپی کردن موارد منطبق در زیر رشته هایی که اغلب اتفاق می افتند کار می کنند. بنابراین هنگامی که تعداد زیادی تطابق رشته ای دارند حالت سریع فشرده سازی دارند و می توانند تعداد بسیار زیادی بایت در هر مرحله از رمزگشای را خارج کنند. کمپرسورهای قبلی مانند Zip در حالت فشرده سازی سخت داده ها با چند تطابق در یک حالت بسیار کندتر قرار می گیرند که در آن واحد فقط یک بایت در هر بار خروجی تولید می شود و حالت آهسته دیگری که باید بین مسابقات واقعی و کوتاه جابجا شوند. در Kraken ما رمزگشایی را مرتب می کنیم تا کار بیشتری برای تولید مسابقات طولانی انجام شود ، زیرا این یک مسیر بسیار سریع است و ما اطمینان می دهیم که بدترین حالت سریعتر است. داده های دارای تطابق کوتاه یا بدون تطابق یا سوئیچ های مکرر بین این دو را می توان در یک مرحله رمزگشایی کرد تا حداقل سه بایت در هر مرحله خروجی بگیرد. این اطمینان می دهد که عملکرد ما بسیار پایدارتر از قبل است . این بدان معناست که سرعت ساعت رمزگشای سخت افزاری Kraken برای رسیدن به حداقل سرعت مورد نیاز لازم نیست آنقدر زیاد باشد .

Kraken plus Oodle Texture می تواند نسبت فشرده سازی قبلی را دو برابر کند
Kraken یک کمپرسور عمومی قدرتمند است که می تواند فشرده سازی خوبی روی داده هایی با الگوها یا ساختار تکرار شده پیدا کند. برخی از انواع داده ها به گونه ای با هم آمیخته می شوند که یافتن قابلیت فشرده سازی برای Kraken دشوار است . مگر اینکه داده ها به روش صحیح و درستی تهیه شده و آنها را به شکل قابل استفاده قرار دهد. مورد مهم این مورد در بازی ها و کلید اصلی کار در بافت های GPU است.
Oodle Kraken حتی اگر با Oodle Texture ترکیب شود مزایای بزرگتری را نیز برای بازی ها فراهم می کند. غالباً بیشتر محتوای بازی در بافتهای BC1-BC7 وجود دارد. بافت های BC1-7 فرمت زیان دهی برای GPU است که بلوک های ۴×۴ پیکسل را به بلوک های ۸ یا ۱۶ بایت کد می کند. Oodle Kraken برای مدل سازی این نوع دانه بندی طراحی شده است . اما با رمزگذارهای قبلی بافت BC1-BC7 ، هیچ الگویی برای یافتن وجود نداشت . تقریباً با Zip و Kraken قابل تطبیق نبودند. Oodle Texture بافت های BC1-7 را به گونه ای ایجاد می کند که الگوهایی در داده ها دارد که Kraken می تواند برای بهبود فشرده سازی پیدا کند . اما برای چشم انسان قابل مشاهده نیست. Kraken می تواند ببیند که برخی ساختارهای خاص داده ها تکرار می شوند ، طول تطابق ها و جبران ها و فاصله بین تطابق ها را به تصویر بکشد و آنها را در بیت های کمتری کد می کند. این کار بدون عملیات گران قیمت مانند کدگذاری متن یا کدگذاری حساب انجام می شود.

واقعاً لذت کار با سونی در زمینه پیاده سازی سخت افزاری Kraken برای کنسول پلی استیشن ۵ بسیار جالب بوده است. مدت طولانی است که ماموریت ما در RAD این است که بهترین فشرده سازی ممکن را برای بازی ها ایجاد کنیم . بنابراین ما خوشحالیم که ناشران و پلتفرم ها بخش بارگیری دیتا ها ( Loading ) و اندازه دیتا ها را جدی میگیرند و این موضوعات برایشان بسیار مهم است .