فصل 4
مسيــــــــر داده :
مسير داده يك پردازنده DSP ساختــاري است كه پردازشهاي اصلي حسابي روي سيگنال در آن جا انجام مي شود . مسيرهاي داده در DSP طوري طـــراحي مي شوند كه انواع محاسبات معمول در كاربردهاي DSP را نظير اعمال ضرب – انبارش با كـــارايي هر چه بيشتر انجام دهند . قابليتهاي مسير داده بهمراه معماري حافظه در DSP ويژگيهايي هستند كه پردازنده هاي DSP را از نوع ديگر ريزپردازنده ها متمايز مي سازند . مسيرهاي داده در پردازنـــده هاي مميز شناور بطور قابل ملاحظه اي نسبت به نوع مميز ثابت تفاوت دارد زيرا دو نوع حساب نيازهاي متفاوتي دارند . در اين بخش ابتدا مسير داده ثابت و سپس مميز شناور بررسي مي شود .
4-1 مسير داده مميز ثابت :
مسيرهاي داده پردازنده هاي مميز ثابت معمولاً شامل يك ضرب كننده ، يك AIU ، يك يا چندشيفت دهنده،رجيسترهاي عملوند،انباره هاوديگرواحدهاي ويژه مي باشند . بعضي فروشندگان به مسيرداده، ALU يا واحد حسابي نيز مي گويند . اما در اين جا واژه ALU براي واحدهاي عملياتي جمع كننده / تفـريق كننده و اعمال منطقي بكار مي رود . شكل ( 4-1 ) يك مسير داده مميز ثابت معمولي را از شركت موتورولا نشان مي دهد .
مسيرداده درDSP عموماً براي محاسبات آدرس حافظه بكارنمي رود . اما معمولاً در پردازنده هاي مميز ثابت يك واحد سخت افزار مجزا براي محاسبه آدرس وجود دارد . اين واحد اغلب واحد توليد آدرس يا AGU ناميده مي شود . اين سخت افزارمعمولاً مجموعه اي غني ازمحاسبات آدرس را نظير آدرس دهي ماژول و bit – neversed انجام مي دهد . ATRDSP32C و DSP32XX استثنــاء هستند . در آنها مسيرهاي مميز شناور و مميز ثابت مجزا مي باشند بطوريكه مسير مميزثابت براي محاسبات آدرس استفاده مي شود .
تنوع روشهاي آدرس دهي ويژه كه در پردازنده هاي DSP وجود دارد ، يكي ازعواملي است كه اين تراشه ها را از ديگر انواع پردازنده ها نظير پردازنده هاي RISC هدف عمومي متمـــــايز مي سازد . واحد هاي توليد آدرس در DSP و روشهاي آدرس دهي در فصل 6 بررسي مي شوند .
ضرب كننده :
وجود يك ضرب كننده تك سيكلي بخشي از تعريف يك DSP قابل برنامه ريزي مي باشد . ضرب عمل خاصي است كه بطور فراوان در همه كاربردهاي DSP وجود دارد .
در بسياري از كاربردها نيم يا بيشتردستوراتي كه توسط پردازنده اجرامي شوند،عمل ضرب را در بر دارند . بنابراين در همه پردازنده هاي DSP يك ضرب كننده وجود دارد بطوريكه دو عملوند با عرض قالب اصلي پردازنده را در يك سيكـل ضرب مي كند . هر چند ظرفيتهاي ضرب كننده در پردازنده هاي گوناگون متفاوت است .
گاهي اوقات خط لوله داخلي ضرب كننــــده مي تواند تاخيري بيشتر از يك سيكل را بين وروديها و خروجي هانتيجه دهد.اين تاخير از ورودي تا نتيجه حاصل « دوره » ناميده مي شود . اين ضرب كننده هاكارايي خودراتنهامواقعي نشان مي دهندكه دنباله اي ازاعمال ضرب انجام ميشود . اگر تنها يك عمل ضرب مورد نظر باشد ، مي بايست براي نتيجه آن چندين سيكل صبـــر كرد . پردازنده اي با اين نوع ضرب كننده CD2450 مي باشد .
در بعضي موارد ( DSP 5600X ) ضرب كننـــده بهمراه يك جمع كننده براي تشكيل واحد ضرب – انبارش مجتمع مي شود . در موارد ديگر ( AT&TDSP16XX ) ضرب كننـــده مجزا است بطوريكه خروجي آن به يك رجيستر ضرب منتقل شده و ازآن جامي تواند به يك جمع كننده جهت انبارش فرستاده شود . اگر ضرب كننده و جمع كننده متمايز باشند ، نتيجه عمل ضرب – انباره قبل اينكه دستور بعدي بتواند از آن استفاده كند ، يك سيكل دستور تاخير مي يابد .
تفاوت ديگري در بين ضرب كننده هاي DSP اندازه ضرب بوده كه مرتبط به عملونــــدها مي باشد . عموماً هنگام ضرب دو عدد n بيتي ، 2n بيت نياز بوده تا نتيجه ضرب بدون خطـا بدست آيد . به اين فرآيند قانون حفظ بيت نيز مي گويند . لذا خود ضرب كننده در محاسبات خطايــي را موجب نخواهد شد . هر چند بعضي از پردازنده هاي مميز ثابت به دليل اقتصادي و ســـــرعت از ضرب كننده هايي استفاده ميكنندكه نتايج كوتاهتري توليدمي كنندلذا منجربه خطاهاي محاسباتي مي شوند . براي مثال Z893XX و CD2400 عملوندهاي 16 بيتي را گرفته نتايج 24 بيتي به جاي 32 بيتي توليد مي كنند . اگـــــر چه اين امكان وجود دارد كه نتيجه كامل ضرب را به مرحله بعد محاسبات بفرستيم اما اين امر معمولاً غير عملي مي باشد چرا كه دنباله اي از اعمال ضرب و جمع نتايجي با عرض خيلي بيشترتوليد خواهند كرد . بنابراين در اكثر موارد لزومي ندارد كه نتيجه كامل ضرب را داشته باشيم زيرا اغلب محدوده ديناميك و دقت اضافي مفيد نمي باشد.بنابراين به دلايل عملي برنامه نويس معمولاًزيرمجموعه اي ازبيتهاي خروجي ضرب راكه براي محاسبات لازم است انتخاب مي كند.يا ممكن است جهت انبارش مجموعه اي از نتايج ضرب ابتدا انبارش با طول كامل انجام شود سپس نتيجه نهايي قبل از رفتن به مرحله بعدي محاسبات گرد شود .
هنگاميكه دوعددباينري ضرب مي شوند مكان مميز در نتيجه كامل بستگي به مكان مميزها در عملوندها دارد . اين مورد در شكل ( 4-2 ) و ( 4-3 ) آورده شده است . اگر حساب صحيح بكار مي رود خروجي ضرب كننده با عرض كامل نيز صحيح است و برنامه نويس معمولاً بيتهاي پاييني را حفظ مي كند. دراين مورد اندازه عملوندها مي بايست توسط برنامه نويس محدود شود بطوريكه نتيجه ضرب كامـلاً در نيمه پايين نتيجه ضرب كننده قرار مي گيرد . هنگاميكه اين عمل انجام شد 1+ بيت پردازشتر از N بيت نتيجه بيت علامتند ( كه گاهگاهي بيتهاي گسترش علامت ناميده مي شوند ) . بنابراين هنگاميكه بيت حذف شوند ، تقريباً اطلاعاتي از بين نمي رود .
چنانچه حساب كسري استفاده شود،نتيجه كامل ضرب در طرف راست دو برابر عملوندهاي ضرب مي باشد و برنامه نويس معمولاً بيت هاي كم ارزش را حذف مي كند .
رجيسترهاي انباره :
رجيسترهاي انباره نتيج مياني و يـا نهايي عمل ضرب – انباره و ديگر اعمال حسابي را حفظ مي كنند . اكثر پردازنده هاي DSP دو يا چنـد انباره دارند . بعضي از آنها تنها يك انباره داشته كه مي توانددربسياري از كاربردها ناكارآمد باشد . وجود يك انباره در معماري DSP مساله ساز است . از آنجاييكه انباره معمولاً به عنوان عملوند منبع يـا مقصد براي اعمال ALU به حساب مي آيد لـذا مي بايست محتوياتش به صورت پي در پي بارگذاري شود ( و يا ذخيره شود ) . بنابراين در حاليكه ALU براي وظايف متغيري بكار مي رود ، اين بارگذاري ها و ذخيره ها نرخي راكه درآن داده بتواند از ALU بگذرد محدود مي كند .
معمولاً اندازه رجيسترهاي انباره مي بايست از اندازه كلمه خروجي ضرب كننده چندين بيت بزرگتر باشد . بيتهاي بيشتر ، بيتهاي گارد ناميده مي شوند . اين بيتها برنامه نويس را قــــــادر مي سازند تعدادي از مقادير را بدون سرريز شدن انباره يا بدون مقيـــــاس بندي مقادير مياني، پردازش و انبارش نمايد . انباره اي با R بيت گارد معادل 2N مقدار ( جهت انبارش بدون سرريز ) ظرفيت دارد . اكثر پردازنده ها 4 يا 8 بيت گارد دارند . مثلاً DSP 16XX ، 4 بيت گارد ( انباره هاي 36 بيتي با رجيستر ضرب 32 بيتي ) و ADSP – 21 XX ، 8 بيت گارد ( 40 بيت انبـــاره و رجيستر ضرب 32 بيتي ) را فراهم مي كنند .
در يك پردازنده فاقد بيتهاي گارد ، سيگنالهاي ورودي يا نتايج مياني اغلب مي بايست قبل از جمع با مقدار انباره مقياس بندي شوند تا امكان سرريز حذف شود . معمولاً اين عمـــل شامل مقياس بندي نتيجه ضرب ( با شيفت آن چند بيت به راست ) مي شود . در نبود بيتهاي گارد گاهي اوقات قابليت شيفت مقادير رجيستر ضرب بدون ضرب سيكل دستور وجود دارد . مثلاً در C2X و C5X رجيستر ضرب بطور خودكار 6 بيت به راست شيفت مي يابد . اين قبيل شيفتها با كم شدن دقت همراه است .
بيتهاي گارد انعطاف پذيري بيشتري را نسبت به مقياس بندي نتيجه ضرب نتيجه مي دهند چراكه امكان حفظ ماكزيمم دقت را در مراحل مياني محاسبات ميسر مي سازند . در C1X بيتهـاي گارد و قابليت مقياس بندي ضرب وجود ندارد لذا بايستي ورودي ضرب كننده مقياس بنـدي شده كه اين امر منجر به كم شدن دقت به ميزان زيادي خواهد شد . فقدان اين دو ويژگي در بسيـاري از موارد محدوديتهاي جدي به بار مي آورد .
ALU
واحدهــاي محاسبه و منطق در DSP اعمال حسابي و منطقي را در يك سيكل دستور انجام مي دهند . اعمـال عمومي جمع ، تفريق ، افزايش و اعمال منطقي OR ، and ، NOT مي باشند .در ALU ها اندازه كلمــه اي كه براي اعمال منطقي بكتر مي رود ، متغير است . بعضي از پردازنده ها اعمال منطقي را روي عملوندهايي كه عرض كاملي از انباره هستند، انجام مي دهند در حاليكه انواع ديگر اعمال را روي كلمــات داده با قالب اصلـي DSP انجام مي دهند . مثلاً در DSP 16XX اعمال منطقي روي مقادير انبــاره 36 بيتي انجام مي شود در حاليكه در DSP5600X با انباره 56 بيتي اين اعمال روي 24 بيت انجـام مي شود . اگر ALU نتواند اعمال منطقي را روي داده اي با عرض انباره انجام دهد برنامه نويسان مي بايست در چندين مرحله با صرف سيكلهاي دستور اين كار را انجام دهند .
شيفت دهند ها :
ضرب و جمع منجر به رشد نتايج در محاسبات مي شوند . دراكثـــــر موارد برنامه نويس زيرمجموعه اي از بيتهاي نتيجه را براي پردازش به مرحله بعدي محاسبه مي فرستد . يك شيفت دهنده در مسير داده اين امكان را با مقياس بندي ورودي اش بصورت تواني از 2 آسان مي سازد .
مقياس بندي عمل مهمي است كه در اكثر كاربردهاي DSP مميز ثابت وجود دارد .اين بدان علت است كه اكثر وظابف DSP اثر انقباض يا انبساط روي محدوده مقادير سيگنالهاي پــردازش
شده دارند .به مثال سـاده فيلتر FIR كه در شكل ( 4-4 ) آمده است توجه كنيد . فيلتر مثال بهـره 100 دارد . به اين معناكه محدوده مقادير در خروجي فيلتر مي توانند 100مرتبه بزرگتر از محدوده مقادير درورودي باشند.اگرسيگنال ورودي به بازه 1- تا 1+ محدود شود مقاديرخروجي به محدوده 100- تا 100 محدود مي شوند . مشكل وقتي به وجود مي آيد كه نمايش عددي به بازه 1- تا 1+ محـدود شود ( براي حساب كسري ). اگر سيگنالها با اين شرايط پردازش شوند سرريز رخ داده نتايج غير صحيح توليد خواهد شد . لذا برنامه نويس مي بايست به محدوده مقادير سيگنال در هر نقطـــه از برنامه توجه كرده سيگنالها را مقياس بندي نمايد . همانگونه كه در شكل ( 4-4 ) آمده است برنامه نويس مي تواند امكان سرريز را با مقياس بندي سيگنال xn با ضريب 0 . 0078 ( ،
نزديكترين توان دو به ) قبل از فيلتر آن حذف نمايد . مصالحه اي كه بهمراه اين مقياس بــندي حاصل مي شود كم شدن دقت و محدوده ديناميك است . با توجه به تعريف دقت هنگاميكه يك سيگنال مقياس بندي شود ( به محدوده كوچكتري ) برخي از بيتهاي مرتبه پايين مقدار اصلي از طريق ترانكيشن و گرد كردن از بين مي روند . بنابراين دامنه مقادير قابل نمايش كمتر شده در حاليكه ماكزيمم دامنــــه خطاي كوانتيزاسيون بدون تغيير باقي مي ماند . لذا دقت ك مي شود . بطور مشابه از آنجاييكه دامنــه بزرگتـــــرين مقدار قابل نمايش كم مي شود اما دامنه كوچكترين مقدار قابل نمايش بدون تغيير باقي
مي ماند لذا محدوده ديناميك كم مي شود .
بنابراين مقياس بندي مي بايست با دقت فراوان انجام شود بطوريكه امكان سرريز حذف شده و در عين حال محدوده ديناميك و دقت مناسب نيز حفظ شود .
خاصيت مقيــــاس بندي سيگنال مي تواند در پياده سازي يك كاربرد روي پردازنده مميز ثابت مطالعه قابل ملاحظه اي باشد. معمولاً توسعه دهندگان كاربرد از تحليلها و شبيه سازي هاي ظريفي براي تعيين اينكه كجا و چگونه مي بايست سيگنالها مقياس بندي شوند استفاده مي كنند . آنگاه اعمال لازم را در موقعيتها و مكانهاي دقيق لحاظ مي كنند .
نكته اينكه مقياس بنـــدي با بيتهاي گارد انباره مرتبط است چرا كه در هر دو حذف يا امكان كم كردن سرريزمورد نظر است.مقياس بندي محدوده نتايج مياني يا نهايي را به محدوده مقادير قابل نمايش منحصرمي كند.اما بيتهاي گاردامكان نمايش مقاديرمياني را بامحدوده بزرگتري ممكن مي سازند . لـــذا مقياس بندي نتايج مياني مي تواند گاهگاهي براي عدم نياز به بيتهاي گارد استفاده شود . اما بيتهاي گارد نياز به مقياس بندي را حذف نمي كنند . هنگام استفاده از بيتهاي گارد لازم است كه نتيجه پاياني مقياس بندي شود . براي مثال در پردازنـــده 16 بيتي با 4 بيت گارد در انباره ممكن است لازم باشد كه مقادير انباره با ضريب 2 – 4 قبل از نوشتن آنها به حافظه به عنوان مقادير 16 بيتي مقياس بندي شوند .
اغلب بلافاصله بعدازALU ياضرب كننده يك شيفت دهنده لحاظ مي شود.بعضي ازشيفت دهنده ها ظرفيتهاي محدودي دارند ( براي مثال يك بيت شيفت به راست يا چپ ) . شيفتهاي چند بيتـي به صورت يك بيت در هر لحظه مي تواند وقت گير باشد .نوعي ازشيفت دهنده ها،شيفت دهنده هاي گردشي ناميده مي شود كه انعطاف پذيري بيشتري داشته شيفت چندين بيت را در يك سيكل دستور ممكن مي سـازند. در بعضي از پردازنده ها شيفت دهنده با ظرفيتهـــاي متفاوت در مكانهاي مختلف مسير داده قرار دارند . بنابراين انعطاف پذيري بيشتري براي انجام شيفت در هر الگوريتم وجود دارد . براي مثال DSP 5600 n دو شيفت دهنده با ظرفيت محدود و مستقا دارد . يكي براي مقياس بندي نتايج ضرب – انباره در حـــال نوشتن آنها به حافظه مي باشد و ديگري جهت شيفت مقادير داخل انباره ( شيفتهاي گردشي و منطقـي ) استفاده مي شود .
سرريز و اشباع :
بسياري از كاربردهاي DSP انبارش مجموعه اي از مقادير را شامل مي شوند . اين فرآيند به عنوان مثال در الگوريتم پالايش رخ مي دهد . در آنجا داده ها در ضرايب ضرب شده نتايج با يكديگر جمـــــع مي شوند . هنگام انبارش مجموعه اي از اعداد ممكن است دامنه رشد يابد و متجاوز ازمقدار قابل نمايش از انباره شود . در اين حالت كه سرريز ناميده مي شود مقدار نادرستي ذخيره خواهد شد و خروجي واقعي از مقدار دقيق بسيار دور خواهد بود . حتي اگر رجيستر انباره سرريز نداشته باشد رخـــداد سرريز هنگام انتقال مقدار به حافظه نيز ممكن است ( در صورتي كه انباره بيتهاي گارد داشته باشد ). در ايـــن حالت
انباره مي تواند اعداد بزرگتري را نسبت به كلمه حافظه نمايش دهد . اين امر در بسياري از پردازنــده ها خصوصــاً PineDSP و DSP 16 XX مشاهده مي شود . سرريز در مواقعي كه شيفت دهنده براي مقياس بندي مقدار انباره استفاده مي شود نيز مي تواند اتفاق بافتد چرا كه مقدار در حافظه ذخيره مي شود .
دو روش عمومــي در برخورد با سرريز وجود دادرد . تكنيك اول مقياس بندي دقيق همه محاسبات صرفنظر از مقدار ورودي مي باشـد . روش ديگر حساب اشباع است . در اين حساب مدار ويژه اي رخداد سرريز را آشكار كرده خروجي نادرستي را با بزرگترين عدد مثبت يا منفي قابل نمايش جايگزين مي كند . هر چند نتيجه همچنان غلط است اما خطا كوچكتر از موقعي است كه از اين حساب استفاده نمي شود . براي مثال در حساب دهدهي ودو رقمي نتيجه جمع سه عدد 50 و 45 و 20 بدون اشباع 15 مي شود . اما در حساب اشباع مقدار آن وو خواهد بود كه تنها به اندازه 16 مقدار با 115 فاصله دارد .
از آنجاييكه اغلب دلخـواه و عملي نمي باشد كه سيگنالها را براي حذف امكان سرريز مقياس بندي نماييم لذا حساب اشباع بسيــار مفيد است . پردازنده هاي مميز ثابت عموماً سخت افزار ويژه اي جهت حساب اشباع دارند . اين ساختـار بطور خودكار ( شايد تحت كنترل يك رجيستر مود ) يا با اجراي دستور ويژه اي فعال مي شود . اين واحد توسط بعضي از سازندگان محدود كننده نيز ناميده مي شود .
گرد كردن :
همانطور كه ديديم ضرب ، انبارش و ديگر اعمال حسابي منجر به افزايش تعداد بيتهايي مي شوند كه براي دقت منــاسب نتايج مورد نياز هستند . در بعضي حالات لازم است كه دقت اين نتايج كم شود . ( مثلاً هنگام انتقـــال محتويات انباره 36 بيتي به حافظه 16 بيتي ) . ساده ترين روش براي اينكار حذف بيتهاي كم ارزشتر مي باشد . اين عمل ترانكيشن يا سرزني ناميده مي شود .
براي مثال جهت سرزني مقدار 36 بيتي به 16 بيتي ، 20 بيت كم ارزش حذف شده تنها 16 بيت با ارزش تر پردازش مي شوند . از آن جاييكه بخشي از اطلاعات در اين روش از بين مي روند لذا در شروع كار خطايي در سيگنالها رخ مي دهد . مقدار حاصل همواره كوچكتر يا مساوي مقدار اصلي مي باشد . بدان
معنا كه عمل سرزني آفست يا باياسي را به سيگنالها اضافه مي كند . بعضي از پردازنده ها عمل گردكردن را همـانند اشباع به صورت خودكار انجام مي دهند . ديگر پردازنده ها دستور ويژه اي را براي اينكار اجرا مي كننــــد . خانواده هاي ADSP – 21XX و DSP 5600X دستورات ويژه اي را براي گردكردن متفاوت بكار مي برند . در اين پردازنده ها گردكردن شرطي نيز پشتيباني مي شود .
رجيسترهاي عملوند :
دراكثر پردازنده هاي مميز ثابت عملوندها در مسير داده توسط تعداد كمي از رجيسترهاي عملوند يا توسط انباره تغذيه مي شوند.مقاديرمي بايست در رجيسترهاي عملوند قبل از پردازش به كمك دستورات MOVE بارگذاري شوند . پردازنــده اي كه داده ها را تنها پس از باركردن آنها در رجيسترهاي عملوند پردازش مي كند اغلب منتسب به معمــاري Load – store مي باشد . رجيسترها به كمك آدرس دهي مستقيم و رجيستر در دسترس واقع مي شوند .
در پردازنده هاي ديگري نظيـــــر C5X و PineDSP عملوندها مستقيماً از حافظه به مسير داده توسط آدرس دهي غيرمستقيم رجيستر يا مستقيم حافظه تغذيه مي شوند .
4-2 مسير داده مميز شناور :
مسيرهاي داده درپردازنده مميز شناور شبيه به آنهايي است كه در نوع مميز ثابت پيدا مي شوند اما در چندين مورد متفاوتنــد . در اين بخش اين تفاوتها بررسي مي شوند . شكل ( 4-6 ) مسير داده مميز شناور AT&T DSP DSP3210 را نشان مي دهد .
در اكثر پردازنده هـــاي مميز شناور مسير اصلي داده قابليت محاسبات مميز ثابت و مميز شناور را تواماً دارا مي باشد . اما تنهــا در هر دستور يك نوع عمليات مي تواند انجام شود . اين مورد در پردازنده هاي مميز شناور Texas Tnstruments ، Motorola و Analog derices مشاهده مي شود .
بعضي از پردازنده ها دو مسير داده داده دارند . يكي براي اعمال مميز شناور و ديگري با ظرفيتهاي
كمتر براي اعمال مميز ثابت . براي مثال در تراشه DSP32XX واحد حساب كنترل به محاسبات آدرس و حساب صحيح دسترسي دارد در حاليكه واحد حساب داده محاسبات مميز شناور را انجام مي دهد . در پردازنده هايي كه مسيرهاي داده مميز شناور و ثابت متمايزي دارند ، مسير داده مميز ثابت شامل ضرب كننده نمي شود .
ضرب كننده :
ضرب كننده هاي مميزشناور دو عملوند مميز شناور ( معمولاً 32 بيت ) را دريافت مي كنند . برخلاف ضرب كننده هاي مميز ثابت،دراين نوع عموماًجهت كم نشدن دقت كلمه خروجي بزرگي توليد نمي شود . براي مثال هنگام ضرب دو مقدار مميز شناور تك دقت ( IEEE 754 ) هر مقدار ورودي مانتيس مناسبي با عرض 24 بيت دارا مي باشد . براي دقت كامل عرض مانتيس خروجي مي بايست 48 بيت باشد . اكثر پردازنده هاي مميز شناور اين عرض كامل را ندارند . اما قالب خروجي عموماً از قالب ورودي به اندازه 8 الي 12 بيت در مانتيس بزرگتر مي باشد .
ALU
واحدهاي محاسبه و منطق در مميز شناور معمولاً جمع ، تفريق و ديگر اعمـال حسابي را نظير قدر مطلق مكمل ، ماكزيمم و مينيمم را انجام مي دهند .بعضي از اين واحدها اعمال خاص ديگري را نيز انجام مي دهند كه در جدول ( 1-4 ) ليست شده اند .
پردازنده هاي مميزشناورازALU جهت انجام عمل جمع دراعمال ضرب– انباره استفاده مي كنند . علاوه بر اعمال ضرب – انباره بعضي از پردازنده ها نظير AT&TDSP32C يك عمل ضرب – جمع را نيز انجام مي دهند . اين عمل با ضرب – انباره تفاوت دارد چرا كه نتيجه حاصـل در انباره متفاوتي نوشته مي شود . اعمال منطقي نظير and ، or و not عموماً در مسير داده مميز شنــاور آنچنان حائز اهميت نمي باشند .
سرريز و ديگر موارد استثنايي :
در حســاب مميز شناور سرريز و ديگر شرايط شبيه ب آن غالباً موارد خاص ناميده مي شوند . اين موارد شرايطـــــي هستند كه موجب نتايج نادرست مي شوند . پردازنده اين پديده ها را توسط بيتهاي رجيستر حالت يا وقفـه ها تشخيص مي دهد . سرريز اغلب در پردازنده هاي مميز شناور كمتر مورد توجه قرار مي گيرد چرا كه محــدوده ديناميك بزرگ است . اكثر پردازنده هاي مميز شناور خطاي سرريز را با تنظيم پرچم حالت ثبت نموده بطور خودكار نتيجه عمل را اشباع مي كنند .
رجيسترهاي انباره :
عموماً در پردازنده هاي مميز شناور رجيسترهاي بيشتر و بزرگتري نسبت به مميز ثابت وجود دارد. در بعضي از آنها نظيـــــــر AT&TDSP3210 تعداد كمي از رجيسترها مشخصاً براي انباره طراحي مي شوند . در پردازنده هاي ديگر بانكي از رجيسترهاي عمومي وجود دارد . براي مثال C3X كه در آن 8 رجيستر 40 بيتي و 32 بيتي وجود دارد .
شيفت دهنده ها :
در حساب مميز شنــاور سخت افزاري وجود دارد كه بطور خودكار نتايج را با بيشترين دقت ممكن مقياس بندي مي كند . در مسيـر داده مميز شناور شيفت دهنده اي براي اين منظور وجود داشته اما غالباً توسط برنامه نويس قابل كنتــرل و مشاهده نمي باشد . اما در پردازنده هايي كه از هر دو مسير استفاده مي كنند مي توات از شيفت دهنده براي اعمال كنترلي استفاده كرد .
رجيسترهاي عملوند :
در اين جا نيز مشابه نوع مميــز ثابت رجيسترهايي براي عملوندهاي مسير داده طراحي مي شوند . پردازنده هاي معدودي نظيـــر AT&DSP32XX عملوندها را بطور مستقيم از حافظه به مسير داده به كمك آدرس دهي غيرمستقيم رجيستر تغذيه مي كنند . نتايج حسابي به يك انباره نوشته شده و يا ممكن است با اين آدرس دهي به حافظه منتقل شود .
4-3 واحدهاي عملياتي ويژه :
پردازنده هاي DSP كه در كاربردهاي بسيار خاص استفاده مي شوند ساختارهاي ويـــــژه اي را مي طلبند لذا به همين دليل سازندگان به دنبال طراحي و گنجاندن سخت افزار ويژه اي در مسيـــر داده پردازنده به منظور كارايي بيشتر مي باشند . يك مثال آن DSP 1610 مي باشد . اين پردازنده بـــراي كاربردهاي راديويي موبايل مورد توجه است . در اين كاربردها پردازنده هاي DSP به منظــــور كدينگ گفتار استفاده مي شوند . اين كاربردها معمولاً اعمال بيتي فراواني را شامل مي شوند . ( مثلاً لحاظ كردن n بيت در مكان ويژه اي داخل m بيت ) .
معمـاري پايه كه از DSP1600 مشتق مي شود شيفت دهنده گردشي را شامل نمي شود بنابراين نمي تواند اعمال مديريت بيت را بطور مناسب انجام دهد . كمپاني AT&T اين نقص را با اضافه كردن واحد ويـــژه مديريت بيت ( BMU ) در مسير داده DSP1610 برطرف كرد . افزودن BMU كارايي قابل مقايســه DSP1610 را در اعمال مديريت بيت به پردازنده هاي ديگر بسيار خوب نشان مي دهد زيرا در اين پردازنده ها تنها يك شيفت گردشي در مسير اصلي داده وجود دارد .
اين معماري ابتكاري كه توسطAT&T آغازشد گاهگاهي با واحدهاي عملياتي كاربرد – مخصوص نيز تلفيق مي شود . دستوراتي نيز براي دسترسي به اين واحدها طراحي مي شوند .
فصل 5
معماري حافظه :
همــانگونه كه در بخش قبل مشاهده شد مسيرهاي داده پردازنده DSP به منظور فراهم آوردن كارايي بيشتـر در انواع الگوريتم هاي سنگين محاسباتي بهينه مي شوند . هر چند مسير داده كارآمد تنها بخشي از يك پردازنده بسيار كارا مي باشد . به منظور نگه داشتن مسير داده اي كه با داده تغذيه مي شود و همچنين جهت ذخيره نتايج اعمال مسير داده ، پردازنده هاي DSP به قابليتي نياز دارند كه حجم انبوهي از داده ها را به و يا از حافظه منتقل كنند . بنابراين سازمان حافظه و اتصالاتش بهمراه مسير داده پردازنده ها فكتورهاي اصلي در تعيين كارايي پردازنده مي باشند . اين مشخصات را معماري حافظه پردازنده ناميده و انواع معماريهاي حافظه كه در پردازنده هاي DSP پيدا مي شوند بررسي خواهند شد . فصل 6 روشهاي آدرس دهي را پوشش مي دهد . اين روشها به عنوان ابزاري جهت دسترسي به حافظه براي برنامه نويسان تلقي مي شوند .
به منظور درك نياز به پهناي باند حافظه بيشتر در كاربردهاي DSP مثال فيلتر FIR در شكل ( 5-1) مفروض است . اين مثال ساده ترين نمونه براي توضيح نياز به ويژگيهاي مخصوص در پردازنده DSP مي باشد .
بلوكهاي D واحد تاخير مي باشند بطوريكه خروجي آنها همانند ورودي است كه يك نمونه تاخير يافته است . مجموعه اي از عناصر ذخيره سازي ( معمولاً مكانهاي حافظه ) براي شبيع سازي اين بلوكها به كار مي روند . فيلتر FIR مجموعه اي از tab ها مي باشد . هر tab يك عمل ضرب و انبارش را شامل مي شود . در هر زمان R-1 نمونه ورودي در خط تاخير مقيم مي شوند . n تعداد tab در فيلتر است . هر لحظه يك نمونه ورودي جديد اعمال شده نمونه هاي قبلي يك مكان به راست شيفت مي يابند و نمونه خروجي توليد مي شود .
همانگونه كه در فصل 4 بحث شد مسيرهاي داده در dsp براي انجام عمل ضرب – انباره در يك سيكل دستور طراحي مي شوند . اين بدان معناست كه اعمال مورد نياز براي يك tab مي توانند در يك
سيكل محاسبه شوند . لذا يك نمونه خروجي جديد مي تواند براي n ، tab فيلتر FIT در هر n سيكل دستور توليد شود . اگر چه براي انجام اين عمل پردازنده مي بايست امكان جندين دسترسي به حافظه را در يك سيكل دستور داشته باشد . پردازنده مي بايست موارد زير ردا انجام دهد :
دستور ضرب – انباره ( MAC ) را برداشت نمايد .
مقدار داده را از خط تاخير بخواند .
مقدار ضريب را نيز بخواند .
مقدار داده را به موقعيت بعد در خط تاخير به منظور شيفت داده بنويسد .
بنابراين اگر قرار است عمل MAC در يك سيكل اجرا شود پردازنده مي بايست چهار دسترسي به حافظه در اين سيكل داشته باشد . در عمل تعضي از پردازنده ها تكنيكهاي ديگري را براي كم كردن تعداد دسترسي به حافظه ( 3 يا 2 دسترسي ) بكار مي برند . با اين حال همه پردازنده ها براي محاسبه يك فيلتر FIR با يك tab در هر دستور به چندين دسترسي به حافظه در يك سيكل نياز دارند . اين پهناي باند حافظه براي ديگر الگوريتم هاي مهم DSP در كنار فيلتر FIR نيز نياز است .
5-1 ساختارهاي حافظه :
ساده ترين ساختار حافظه پردازنده يك بانك حافظه است كه پردازنده از طريق يك مجموعه از خطوط آدرس و داده به آن دسترسي دارد . اين ساختار در شكل ( 5-2 ) آمده است .
اين ساختار كه در ميان پردازنده هاي DSP عموميت ندارد معماري Von-neumann neumann
ناميده مي شود . هر دوي دستورات برنامه و دادها در يك حافظه ذخيره مي شوند . در ساده ترين و عمومي ترين حالت پردازنده مي تواند يك دسترسي ( خواندن يا نوشتن ) به حافظه در طي يك سكل دستور داشته باشد . اگر براي پياده سازي الگوريتم فيلتر FIR به معماري ساده Von numann دقت شود ضعف معماري بلافاصله مشاهده مي شود . اگر چه كامل شدن عمل ضرب – ئانباره در يك سيكل دستور مورد نظر است اما پهناي سيكل دستور در اين معماري نياز خواهد بود زيرا حافظه به صورت ترتيبي در اختيار پردازنده قرار مي گيرد . اين مورد دليل بر آن است كه چرا پردازنده هاي معمولي و عمومي غالباً در كاربردهاي سنگين DSP به خوبي عمل نمي كنند . طراحان DSP تحولات اساسي در اين معماري به وجود آورده اند . هر يك از اين تحولات در قياس با معماري Von numann پيشرفت هايي را در پهناي باند حافظه در اختيار قرار مي دهند .
پردازنده هاي گوناگون تكنيكهاي متفاوتي را براي افزايش پهناي باند حافظه بكار مي برند و در بسياري از موارد ( اكثراً در قطعات مميز ثابت و كوچك ) پردازنده ها در قبال اين پهناي باند اضافه شده محدوديتهايي دارند . اين محدوديتها اغلب در پيچيدگي نرم افزار توسعه براي پردازنده هاي DSP بطور قابل ملاحظه اي سهيم هستند .
