بخشی از مقاله
چکیده -
کاربردهای تحمل پذیر خطا، مانند پردازش صوت وتصویر، یادگیری ماشین و... این فرصت را فراهم کرده اند تا محققین بجای روش های تصحیح خطا که هزینه بالا طراحی را شامل می شوند، بر روی روش های کاهش اثر خطا متمرکز شوند. از آنجا که حافظه، در وسایل الکترونیکی امروزی، یک بخش اصلی و اجتناب ناپذیر است و تمام عملیات خواندن و نوشتن اطلاعات در حافظه انجام می گیرد، حفاظت از حافظه بسیار با اهمیت است. در این مقاله، هدف کاهش اثرخطا درحافظه برای کاربردهای تحمل پذیر خطا است.
در طرح پیشنهادی از یک مکانیزم شیفت چرخشی استفاده شده است تا در صورتی که یک یا چند خطا در قسمت با ارزش تر حافظه رخ داد، اثر آن را به قسمت های کم ارزش تر حافظه منتقل کند. این کار باعث توزیع خطا در بیت های با مرتبه کمتر می شود و اثرخطا در خروجی را به میزان قابل توجهی کاهش می دهد. این طرح در مقایسه با روش های مشابه، حتی زمانی که در چند قسمت از یک کلمه حافظه به صورت همزمان خطا رخ دهد، تاثیر قابل ملاحظه ای در کاهش اثر خطا دارد. روش پیشنهادی توانایی کاهش اثر خطا را برای %98حالات دارد.
-1 مقدمه
تقاضای افزایش ظرفیت حافظه بر روی تراشه همچنان ادامه دارد. به طوریکه در سال 2017، %70 سطح تراشه را حافظه تشکیل می دهد.[1] یکی از عوامل اصلی تسهیل کننده این روند، کاهش سریع سایز ترانزیستور ها است، که به دلیل تغییرات پارامترها، درسیر تکنولوژی زیر میکرون، چالش های جدیدی را به ویژه در طراحی حافظه با تراکم زیاد و انرژی کارآمد، ایجاد کرده است
زمانی که مکانیزم هایی مانند کاهش سطح ولتاژ، برای صرفه جویی توان، به کار گرفته می شود، حاشیه نویز سلول بدترمی شود و در نتیجه احتمال خطا در سلول افزایش می یابد.[3] از آنجا که قابلیت اطمینان موضوع بسیار مهمی در حافظه است، یک راه حل معمول استفاده ازکدهای تشخیص و تصحیح خطا است که وابسته به تعداد بیت های توازن که به هر کلمه اطلاعات اضافه می شود، می تواند تعداد یک خطا یا بیشتر را تصحیح کند
به طور کلی درکد های تشخیص و تصحیح خطا یک کلمه W بیتی با اضافه کردن c بیت توازن برای هر نوشتن در حافظه، تبدیل به یک کلمه کد C بیتی می شود - .C=W+c - C>W هنگام خواندن از حافظه، با استفاده از بیت های توازن ارسال شده، تشخیص و تصحیح خطا انجام می گیرد.[5] اما اضافه کردن بیت های توازن به منظور انجام عملیات تشخیص و تصحیح خطا، باعث اعمال سربار مساحت، توان و تاخیرمی شود. هر چند تکنیک هایی وجود دارد که حافظه را در برابر خطاهایی که ممکن است در فرآیند ساخت رخ دهد، مقاوم می کند، اما استفاده از طرح های حافظه مقاوم در برابر خطا، به دلیل کاهش ابعاد سیلیکون، با شک و تردید رو به رو است
واقعیتی که در بالا توضیح داده شد، یعنی ویژگی تحمل پذیری خطا در بسیاری از کاربردها، منجر به جایگزینی استراتژی طرح های محاسبات تقریبی شده است تا سربار سخت افزار و اطلاعات و توان مصرفی راکاهش دهد
ادامه این مقاله به ترتیب زیر، ساماندهی شده است: بخش2 شامل مروری بر تحقیقات گذشته است. در بخش 3 روش پیشنهادی این مقاله بیان می شود. در این بخش، ساختار تست خود به خودی حافظه، چگونگی اعمال چرخش به اطلاعات و میزان کاهش اثر خطا در خروجی بیان می شود. در بخش 4 علاوه برمحاسبه میانگین مجذور خطا به عنوان معیاری از کاهش اثر خطا توسط روش پیشنهادی و مقایسه آن با روش های [12]و[13]، میزان سربار سطح و توان و تاخیر مسیر بحرانی روش پیشنهادی نیز بیان می شود. درنهایت بخش 5 نتیجه گیری را در بر می گیرد.
-2 مروری بر تحقیقات گذشته
یک روش مبتنی بر محاسبات تقریبی در[10] مطرح شده است. دراین پژوهش به منظور کاهش تعداد بیت های سربار و نیز داشتن یک تقریب مناسب از اطلاعات اصلی، استفاده از روش های تحمل پذیری خطا، فقط برای بیت های با ارزش تر را پیشنهاد نموده است. در این مقاله، از روش های کد همینگ وکدBCH برای تحمل پذیر کردن بیت های با ارزش استفاده شده است. برای مثال یک کلمه اطلاعات 64 بیتی برای تصحیح یک خطا، با استفاده ازکد همینگ، نیاز به 7 بیت سربار دارد که در مجموع به یک کلمه کد71 بیتی تبدیل می شود. اما اگر این کد به 32 بیت یا 8 بیت با ارزش ترکلمه 64 بیتی، اعمال شود به ترتیب نیاز به 6 و4 بیت توازن است، که سربارسطح را بسیار کاهش می دهد. در این مقاله برای تشخیص و تصحیح خطا در بیت های کم ارزش تر از کد همینگ که به تعداد بیت توازن کمتری نیاز دارد، و برای بیت های بار ارزش تر از کد BCH با تعداد بیت توازن بیشتر و در نتیجه قابلیت تصحیح بیشتر، استفاده شده است.
با توجه به اینکه تمام بیت های داده ارزش یکسانی ندارند، هدف از محاسبات تقریبی، در نظر گرفتن ارزش بیت های داده جهت تحمل پذیرکردن آنها به منظورکاهش سربار سطح و توان می باشد، با توجه به این نکته، در مرجع[11] ابتدا آنالیزی انجام می شود تا بخش های حساس - بیت های حساس - شناسایی شوند و سپس برای این بخش ها برای رسیدن به بازده مورد نظر، از سلول حافظه با احتمال خطای کمتراستفاده شود. در>11]، برای این بیت ها ازسلول حافظه8 ترانزیستوری که احتمال خطا کمتری دارد استفاده شده است.
روش دیگری برای کاهش اثر خطا در مرجع[12] معرفی شده است، در این روش ابتدا یک کلمه حافظه به قسمت های مساوی تقسیم می شود، سپس توسط ساختار تست خود به خودی، آدرس قسمت خطا دار، در جدول مراجعه ثبت می شود.
هنگام نوشتن اطلاعات ابتدا این مقدار از جدول خوانده می شود ، اطلاعات طبق این مقدار، چرخش به راست داده می شوند تا قسمت کم ارزش، به سلول های خطا دار و قسمت با ارزش به سلول های سالم منتقل شود. این کار باعث کاهش اثر خطا در خروجی می شود. تعداد بیت هایی که برای جدول در نظر گرفته می شود یک رابطه بین کیفیت اطلاعات خروجی، سربار توان و مساحت برقرار می کند.
به عنوان مثال، اگر 5 بیت برای جدول مراجعه، در نظر گرفته شود، حافظه به 32 بخش تقسیم می شود - توسط 5 بیت عدد 31 را میتوان در داخل جدول نوشت - حال اگر در بیت 32 خطا رخ دهد، با استفاده از مکانیزم چرخش اطلاعات، مقدار خطا از231 به مقدار 20 کاهش می یابد. در این روش اگر به طور همزمان در دو قسمت یک کلمه حافظه خطا رخ دهد، به دلیل اینکه جدول فقط قادر است یک مقدار را نگه داری کند، مکانیزم کاهش اثر خطا با مشکل مواجه می شود. بنابراین روش ارائه شده در[12] قابلیت کاهش اثر خطا را در صورت وجود دو و یا تعداد بیشتر قسمت خطا دار در یک کلمه حافظه از دست می دهد.
روش ارائه شده در مرجع[13] مبتنی بر روش پیشنهادی در مرجع[12] است. هدف این پژوهش حفظ نمودن بیت های با ارزش تر هر بایت در برابر خطا می باشد. برای این منظور دو روش پیشنهاد شده است. در این روش ها میزان چرخش اطلاعات کمتر خواهد بود. این روش نیاز به Nfm بیت، برای ثبت آدرس بیت خطا دار هر بایت دارد. - که این مقدار Nfm،اگر 1،2 و 3 بیت باشد به ترتیب می تواند 1،3و7 بیت با ارزش هر بایت را محافظت کند. به عنوان مثال اگر در بیت 6 یک بایت خطا رخ دهد، عدد 2 به عنوان مقدار چرخش ثبت می شود. - تعداد بیت Nfm رابطه بین کیفیت خروجی و سربار سطح است.
در روش اول، برای هر بایت، Nfm بیت نیاز است. در روش دوم که به منظور کاهش سربار سطح پیشنهاد شده است، برای R بایت، یک مقدار چرخش در نظر گرفته می شود، بجای اینکه برای هر بایت یک مقدارچرخش در نظر گرفته شود. - به عنوان مثال برای 32 بیت اطلاعات که شامل 4 بایت است، در روش اول نیاز به Nfm×4 بیت و برای روش دوم نیاز به Nfm بیت است - ، و به اندازه logR بیت برای ثبت موقعیت بایت خطا دار، نیاز است. به عنوان مثال برای یک بلوک 32 بیتی که شامل 4 بایت است، دو بیت، برای ثبت موقعیت بایت خطا دارنیاز دارد. این روش میزان سربار سطح را کاهش می دهد اما زمانی قابلیت کاهش اثر خطا را دارد که فقط در یک بایت و آن هم در یک بیت با ارزش، خطا رخ دهد.
روش پیشنهادی این مقاله براساس محاسبات تقریبی در حافظه با هدف داشتن بیشترین میزان کاهش اثر خطا در خروجی است. روش های پیشنهادی قبل به گونه ای هستند که توانایی کاهش اثر خطا را، زمانی که بیش از یک قسمت خطا دار در یک کلمه حافظه وجود داشته باشد، ندارند.
روش پیشنهادی این مقاله به گونه ای طراحی شده است که اگر یک یا چند قسمت یک کلمه حافظه شامل یک یا چند خطا باشند، توانایی کاهش اثر خطا در خروجی را داشته باشد.
-3 روش پیشنهادی
هدف اصلی از انجام این تحقیق این است که هر گاه در قسمت هایی از یک کلمه حافظه که ارزش بیشتری دارند، خطا رخ داد، مکانیزم چرخش اعمال شود و قسمت های کم ارزش تر یک کلمه حافظه را به قسمت خطا دار منتقل کند. بنابراین همیشه قسمت های با ارزش تر در سلول های بدون خطا و بخش های کم ارزش تر در سلول های خطا دارذخیره می شوند.
در ادامه با استفاده از یک مثال ساده، نحوه کار روش پیشنهادی را بیان می کنیم. فرض کنید که 32 بیت عدد صحیح به فرم مکمل دودویی در یک ساختار حافظه استاندارد 32 بیتی، با وجود چندین سلول خطا دار، ذخیره شده است. همانطور که در شکل 1 نشان داده شده است. بدون مکانیزم تصحیح، حداکثر میزان خطای خروجی در هر بایت است. n - شماره بایت خطادار است. -
برای بالاترین سطر نشان داده شده در شکل 1، حداکثر میزان خطا است. روش ارائه شده در مرجع [12]، توانایی کاهش اثر خطا در این حالت، یعنی داشتن دو بایت خطا دار، در یک کلمه حافظه را ندارد. دو روش ارائه شده در مرجع [13] نیز به ترتیب در صورتی که فقط دریک بیت از بیت های با ارزش هر بایت و یا فقط در یک بایت خطا رخ دهد می تواند اثر خطا را کاهش دهد. در شکل 1 از روش پیشنهادی برای کاهش اثر خطا استفاده شده است. در این مثال به یک جدول برای تعیین وضعیت خطا نیاز است.
در صورتی که هر بایت خطا دار باشد یک سلول متناظر با آن بایت درجدول 1 می شود و در غیر این صورت 0 می شود. مقدار ثبت شده در این جدول، تصمیم می گیرد که به چه میزان چرخش به چپ از بیت سمت راست، لازم است تا به طور قطعی قسمت های کم ارزش به قسمت های خطا دار منتقل شوند. در واقع طرح پیشنهادی شامل دو مرحله است. در مرحله اول محل بیت خطا دار در حافظه توسط ساختار تست خود به خودی، مشخص می شود. در صورتی که یک یا بیش از یک خطا در هر بایت رخ دهد، در جدول ثبت، خطا دار بودن آن بایت با یک شدن سلول متناظر با آن بایت مشخص می شود.
در مرحله دوم بعد از مشخص شدن وضعیت بیت های جدول ثبت وضعیت خطا، این اطلاعات به یک دیکودر داده می شود. این دیکودر میزان چرخش به چپ اطلاعات قبل از نوشتن در حافظه را مشخص می کند. توجه کنید که هر واحد چرخش معادل 8 بیت چرخش است. هنگام خواندن دیگر نیاز به جدول ثبت وضعیت خطا نیست، و فقط دو بیت تولید شده توسط دیکودر، بررسی می شود و اطلاعات این بار به همین مقدار به راست چرخش داده می شوند، تا به اطلاعات اولیه مورد نظر دست پیدا کنیم. پیاده سازی این روش در یک حافظه استاندارد 32 بیتی نیاز به یک جدول ثبت وضعیت خطا دارد.
اطلاعات این جدول به عنوان ورودی به دیکودر داده می شود و نهایتا خروجی مدار دیکودر به عنوان ورودی مدار شیفت چرخشی در نظر گرفته خواهد شد. در مثال شکل1، بالاترین کلمه حافظه دارای دو بایت خطا دار است و متناظر با هر بایت خطا دار، محتوای جدول ثبت وضعیت خطا، 0011 خواهد بود. جدول1 میزان چرخش به چپ برای هر 16 حالت ممکن را نشان می دهد. برای این مقدار طبق جدول1 نیاز به دو واحد چرخش به چپ اطلاعات این کلمه حافظه است.
بنابراین دیکودر عدد 2 را تولید و به مدار چرخش به چپ می دهد. اطلاعات قبل از نوشته شدن در حافظه دو واحد چرخش می یابد و در نتیجه قسمت های با ارزش کمتر به قسمت های خطا دار منتقل می شود. - حداکثرخطا از به تبدیل می شود. - همان طور که قبلا بیان شد، محل بیت های خطا دار با استفاده از ساختار تست خود به خودی مشخص می شودکه این تست می تواند پس از اتمام عملیات ساخت و یا در حین استفاده از حافظه انجام شود. مزیت اصلی این عملیات این است که هر گاه سیستم دوباره راه اندازی شود، خطا های احتمالی ناشی از تخریب زمانی، نیز ردیابی می شوند، و با توجه به تغییر مقدار جدول ثبت وضعیت خطا، میزان چرخش تعیین می شود.