شناسه پست: 10453
بازدید: 432

مقایسه چهار طرح ضرب کننده RNS

فهرست مطالب
1- مقدمه 1
1-1 سيستم عددي باقيمانده 1
1-2 قضيه باقي مانده هاي چيني 2
1-3 كاربردهاي RNS 3
2- روشهاي ضرب پيمانه اي  5
2-1 روش مونتگمري 5
2-2 بررسي اجمالي روشهاي موجود پياده سازي ضرب در RNS 6
2-3 نكاتي پيرامون چهار طرح مورد نظر 7

3- طرح اول 8
 3-1 مقدمه 8
 3-2 بررسي سوابق 8
 3-3 الگوريتم 9
 3-4 پياده سازي سخت افزاري 10
3-5 محاسبه پيچيدگي مساحت و تأخير طرح اول 13
4- طرح دوم 15
4-1 مقدمه 15
4-2 بررسي سوابق  15
4-3 الگوريتم 15
4-4 پياده سازي سخت افزاري 18
4-5 محاسبه پيچيدگي مساحت و تأخير طرح دوم 20
5- طرح سوم 21
5-1 تبديل سيستم RNS (Residue Conversion) 28
5-2 پياده سازي سخت افزاري 30
5-2-1 پياده سازي تبديل RNS 31
5-2-2 پياده سازي بخش اصلي الگوريتم (الگوريتم مونتگمري با RNS) 34
5-3- محاسبه پيچيدگي مساحت و تأخير طرح سوم  36
5-3-1 عناصر وابسته به ROM 36
5-3-2 عناصر رياضي 36
5-3-3 تأخير و مساحت تبديل كننده RNS استاندارد 37
5-3-4 محاسبه مساحت و تأخير تبديل كننده RNS سريع 44
5-3-5 مساحت و تأخير طرح سوم 50
5-4 نتايج پياده سازي در طرح سوم  56
6- طرح چهارم 58
6-1 بيان مقاله در مورد سيستم RNS  59
6-2 بيان مقاله از ضرب پيمانه اي بدون تقسيم (روش مونتگمري) 60
6-3 بررسي صحت الگوريتم 62
6-4 روش تبديل RNS 66
6-5 پياده سازي سخت افزاري 67
6-5-1 تبديل RNS ناقص 68
6-5-2 پياده سازي بخش اصلي طرح چهارم (الگوريتم مونتگمري) 68
6-6 محاسبه پيچيدگي تأخير و مساحت طرح چهارم 70
6-6-1 محاسبه تأخير و مساحت تبديل RNSناقص 70
6-6-2 محاسبه تأخير و مساحت در طرح چهارم 72
6-7 نتايج شبيه سازي در طرج چهارم 80
7- مقايسه  طرح ها وجمع بندي  81
7-1- مقايسه چهار طرح 81
7-2- جمع بندي  98
8- مراجع
ضميمه : MOMA

فصل اول
مـقدمـه
1- مقدمه
همانطور كه مي دانيم ضرب پيمانه اي در علم رمزنگاري نقش مهمي ايفا مي كند. از جمله روشهاي رمزنگاري كه به ضرب كننده پيمانه اي سريع نياز دارد، روش رمزنگاري RSA مي باشد كه در آن نياز به توان رساندن اعداد بزرگ در پيمانه هاي بزرگ مي باشد. معمولاً براي نمايش اعداد در اين حالات از سيستم باقي مانده (RNS) استفاده مي شود و ضرب (به عنوان هسته توان رساني) در اين سيستم به كار مي رود.
در اينجا براي آشنايي بيشتر به توضيح سيستم عددي باقي مانده مي پردازيم و به كاربردها و فوايد آن اشاراتي خواهيم داشت.
1-1 سيستم عددي باقيمانده (Residue Number System (RNS))
در حدود 1500 سال پيش معمايي به صورت شعر توسط يك شاعر چيني به صورت زير بيان شد. «آن چه عددي است كه وقتي بر اعداد 3،5و7 تقسيم مي شود باقيمانده هاي 2،3و2 بدست مي آيد؟» اين معما يكي از قديمي ترين نمونه هاي سيستم عددي باقي مانده است.
در RNS يك عدد توسط ليستي از باقيمانده هايش برn  عدد صحيح مثبت m1 تا mn كه اين اعداد دو به دو نسبت به هم اولند (يعني بزرگترين مقسوم عليه مشترك دوبدوشان يك است) به نمايش در مي آيد. به اعداد m1 تا mn پيمانه (moduli)
مي گويند. حاصلضرب اين nعدد،  تعداد اعدادي كه مي توان با اين پيمانه ها نشان داد را بيان مي كند. هر باقيمانده xi را به صورت xi=Xmod mi نمايش مي دهند. در مثال بالا عدد مربوطه به صورت X=(2/3/2)RNS(7/5/3) به نمايش در مي آيد كه X mod7=2 و X mod5=3 و X mod3=2. تعداد اعداد قابل نمايش در اين مثال   مي باشد. مي توان هرمجموعه 105 تايي از اعداد صحيح مثبت يا منفي متوالي را با اين سيستم عددي باقيمانده نمايش داد.
اثبات اين كه هر عدد صحيح موجود در محدوده، نمايش منحصر به فردي در اين سيستم دارد به كمك قضيه باقي‌مانده هاي چيني(Chinese Remainder Theorem (CRT)) امكان پذير است. اين قضيه به صورت زير بيان مي شود:
1-2 قضيه باقي مانده هاي چيني:
اعداد صحيح مثبت   را كه نسبت به هم دو به دو اول هستند در نظر بگيريد و M را حاصلضرب   فرض كنيد. همچنين اعداد   را فرض كنيد. اثبات مي شود كه فقط و فقط يك عدد صحيح U وجود دارد كه شرايط زير دارد:
     ,          ,
كه U برابر است با:
 اعمال رياضي جمع، تفريق و ضرب به راحتي و به صورت زير در اين سيستم انجام مي شود.
در فرمول بالا به جاي علامت  مي توان هر كدام از علائم +،-،* را قرار داد.
سه عمل رياضي (+،-،*) در اين سيستم عددي راحت‌تر از سيستم نمايش عادي اعداد انجام مي شود، زيرا هنگام انجام اين عمل در اين سيستم رقم نقلي (carry) بين بخشها رد و بدل نمي شود. در واقع انجام عمليات مربوط به مانده هاي هر پيمانه تاثيري روي ديگر عمل ها ندارد. يعني محاسبه “ ” مي تواند بطور مستقل (و در واقع موازي) انجام شود و نتيجه آن تاثيري در بقيه “ ”ها ندارد. بدين ترتيب عمليات رياضي سريعتر (بعلت موازي شدن) و راحت تر (بعلت عدم تاثيرگذاري محاسبات مربوط به هر مانده برهم) انجام مي شود.
 1-3- كاربردهاي RNS
سيستم عددي باقي مانده در چند دهه اخير مورد توجه قرار گرفته، زيرا مي توان بعضي از اعمال رياضي را تحت RNS به صورت چند مجموعه زير عمل رياضي تقسيم كرد. ولي به دليل اينكه اين اعمال فقط شامل ضرب، جمع و تفريق هستند از RNS در محاسبات “خاص منظوره” استفاده مي شود. RNS در پياده سازي سريع مسائلي كه شامل تصحيح و تشخيص خطا در سيستم هاي Fault-tolerant و سيستم‌هاي پردازش سيگنال هستند كاربرد دارد. كاربردهايي از قبيل تبديل فوريه سريع، فيلتر ديجيتال و پردازش تصوير از اعمال رياضي سريع RNS استفاده مي كند. RNS راه خود را در كاربردهايي مثل تبديلات تئوري اعداد و تبديل فوريه گسسته پيدا كرده است. همچنين مستقل بودن رقم هاي باقيمانده باعث مي شود كه رخ دادن خطا در يك رقم به رقم هاي بعدي منتقل نشوند كه اين مسأله، باعث ايجاد يك معماري Fault-tolerant خواهد شد. [35],[20]
سيستم عددي RNS در رمزنگاري و به خصوص در روش RSA كاربرد زيادي دارد[35]. البته در RSA از ضرب پيمانه اي جهت عمليات توان رساني استفاده مي‌شود.
در اين پروژه سعي مي شود كه چهار طرح از رويكردهاي ضرب RNS را پياده‌سازي و با هم مورد مقايسه قرار دهيم. اين مقايسه براساس حجم و تاخير طرح ها مي‌باشد. در پياده سازي سعي شده است كه از پيشنهادات مقالات جهت عناصر بكار رفته استفاده شود (بخصوص در دو طرح اول) و در مواقعي كه پيشنهاد خاصي انجام نشده (مثل طرح هاي سوم و چهارم) پيشنهاد مناسب از لحاظ خود من انجام شده است.
در ادامه ابتدا به اصول ضرب RNS و روشهاي بكار رفته براي اينكار اشاره مي‌كنيم. سپس هر يك از چهار طرح را به تفصيل مورد بررسي قرار مي دهيم و در مورد هر طرح، الگوريتم و سخت افزار بيان خواهد شد و سپس تاخير و مساحت آن را تعيين مي كنيم. در نهايت جمع بندي و مقايسه چهار طرح را انجام مي دهيم. در ضمايم نيز كدهاي VHDL نوشته شده را خواهيد يافت.
2- روشهاي ضرب پيمانه اي
اين روشها را مي توان به دو دسته كلي تقسيم كرد. در دسته اول ابتدا عمل ضرب به صورت كامل انجام مي شود و سپس كاهش به پيمانه روي نتيجه آخر اعمال مي شود. اين روشها را Reduction After Multiplication (RAM) مي نامند. در دسته دوم عمل كاهش به پيمانه در هر مرحله ضرب و با هر حاصلضرب جزئي انجام مي شود كه به اين روشها Reduction During Multiplication (RDM) مي گويند[38]. از ميان طرحهاي مورد نظر ما دو طرح اول به دسته اول و دو طرح بعدي به دسته دوم تعلق دارند.
2-1- روش مونتگمري
در روش RDM چون روش كاهش به پيمانه به دفعات تكرار مي شود بايد اين عمل را سرعت بخشيد. يكي از تكنيك هاي پر طرفدار براي اينكار كه در طرحهاي ما نيز به كار رفته روش مونتگمري [2] در كاهش پيمانه است.
پيمانه N را در نظر بگيريد. عدد R را كه نسبت به N اول است و N<R را طوري انتخاب كنيد كه محاسبات به پيمانه R آسان باشد.   را نيز طوري انتخاب كنيدكه   باشد. حال براي محاسبه  به شرطي كه   باشد:
function REDC(T):
if
بدين ترتيب با به كارگيري عدد كمكي R، عمل كاهش T به پيمانه N سريعتر انجام مي شود.
2-2- بررسي اجمالي روشهاي موجود پياده سازي ضرب در RNS
طرحهاي ارائه شده را مي توان براساس روش پياده سازي سخت افزاري به سه مجموعه تقسيم كرد.
 مجموعه اول:
از تعداد خاصي از پيمانه ها مثل   استفاده مي كنند. در اين مجموعه n مي تواند مقادير كوچك، متوسط و گاهي بزرگ داشته باشد. در پياده سازي اين طرح ها عمدتاً فقط از مدارات منطقي استفاده شده و از ROM استفاده نمي شود. در هر حال اين طرحها به پيمانه هاي خاصي محدود هستند و به همين دليل كاربردهاي محدودي دارند[3]. به طور مثال مي توان به طرحهاي [13],[12],[11] مراجعه كرد.
مجموعه دوم:
توانايي كار با هر پيمانه اي را دارند ولي پياده سازي اين گروه، راه حلهايي بر اساس ROM دارند و معمولاً از مدارات منطقي ديگر استفاده چنداني نمي كند. اندازه حافظه با افزايش n به سرعت رشد مي كند كه طرح را براي پيمانه‌اي بزرگ غير عملي مي سازد. به طور مثال مي توان طرحهاي [10],[9],[8],[7] را ذكر كرد.