عکس پیش‌فرض نوشته

سطح ریز معماری بالاتر از منطق دیجیتال قرار دارد. وظیفه این سطح اجرای دستورات سطح ISA است، که دستورات این سطح بالای سطح ریزمعماری قرار دارند.

چگونگی طراحی سطح ریز معماری علاوه بر هزینه، کارآیی و هدف های کامپیوتر، به ISA ی پیاده سازی شده نیز بستگی دارد.

همانند سایر مسائل موجود در علم کامپیوتر، طراحی سطح ریز معماری پر از توازن و trade-offs است.

طراحی سطح ریز معماری سیستم های کامپیوتری

 

کامپیوترها ویژگی های خوشایند بسیار زیادی دارند که شامل سرعت، هزینه، قابلیت اطمینان، استفاده آسان، انرژی مورد نیاز و اندازه فیزیکی میشود.

یکی از مسائل مهم که بر روی انتخاب های طراحان CPU تاثیرگذار است، مسئله سرعت در مقابل هزینه است.

 

تکنولوژی نوین منجر به افزایش سرعت در هر دوره زمانی میشود، که این مسئله فراتر از موضوع این بحث است.

بهبود یافتن سرعت ناشی از سازماندهی است، در حالی که این مسئله نسبت به مدارهای سریعتر کمتر شگفت انگیز است، اما برای یک تکنولوژی مداری و یک ISA، سه روش برای افزایش سرعت اجرا وجود دارد:

1- کاهش دادن تعداد سیکل های ساعت مورد نیاز برای اجرای یک دستورالعمل

2- ساده تر کردن سازماندهی به منظور کوتاه کردن سیکل ساعت

3- هم پوشانی در اجرای دستورات

 

دو مورد اول به اندازه کافی واضخ است، اما روش های طراحی زیادی وجود دارد که میتواند تاثیر چشمگیری بر روی تعداد سیکل های ساعت، دوره ساعت و اغلب اوقات بر روی هر دوی آنها بگذارد.

در ادامه مثالی خواهیم زد که معلوم میکند چطور رمزگذاری و رمزگشایی یک دستورالعمل میتواند روی سیکل ساعت تاثیر بگذارد.

تعداد سیکل های ساعت مورد نیاز برای اجرای یک مجموعه عملیات به عنوان طول مسیر شناخته میشود.

گاهی اوقات، با اضافه کردن سخت افزار مخصوصی میتوان طول مسیر را کوتاه تر کرد. برای مثال، با افزودن یک افزایش دهنده (مثلاً جمع کننده با یک طرف ثابت که همیشه با 1 جمع میشود) به رجیستر PC (مخفف Program Counter)، دیگر مجبور نیستیم با استفاده از ALU (مخفف Arithmetic Logic Unit) مقدار PC را افزایش دهیم و به این شیوه، سیکل های ساعت استفاده شده را کاهش میدهیم.

باید توجه داشت که نرخ پرداخت سخت افزار بیشتر است. به هر حال، این قابلیت کمک چندانی به اجرا شدن نمیکند. در اکثر دستورالعمل ها، سیکل هایی که PC را افزایش میدهند، همان سیکل هایی هستند که برای انجام یک عمل خواندن به کار میروند.

در هر صورت دنباله دستورالعمل ها نمیتوانند بلافاصله اجرا شوند زیرا این کار به داده های ورودی از حافظه بستگی دارد.

 

مسئله کاهش تعداد سیکل های مورد نیاز دستورالعمل برای واکشی (fetch) دستورالعمل ها، فقط با افزودن یک مدار برای افزایش PC قابل حل نیست. به منظور افزایش سرعت واکشی دستورالعمل ها به هر اندازه ای، باید از سومین تکنیک مطرح شده، یعنی هم پوشانی در اجرای دستورالعمل ها، به صورت گسترده استفاده شود.

جدا کردن مدارات برای واکشی دستورالعمل ها (یعنی پورت 8 بیتی حافظه و رجیسترهای MBR و PC) میتواند بیشترین تاثیر را داشته باشد، اگر یک واحد ساخته شود که عملاً مستقل از مسیر اصلی باشد.

در این روش، خودِ این واحد میتواند opcode دستورالعمل بعدی یا یک عملوند را واکشی کند و حتی میتواند به صورت غیر همزمان (نسبت به وقت CPU) آن را اجرا کند و همیشه یک یا چند دستورالعمل را زودتر واکشی کرده و به سرعت عمل اجرای دستورات بیافزاید.

 

یکی از وقت گیرترین فازهای اجرای دستورات در بین چند دستور، واکشی یک offset دو بایتی و گسترش آن به اندازه مقتضی و قرار دادن آن در ثبات H به منظور آماده سازی آن برای جمع بعدی می باشد.

راه حل دیگر این بحث، ساختن پورت حافظه 16 بیتی است که این مسئله خود باعث پیچیدگی بیشتر عملیات میشود؛ زیرا حافظه در واقع 32 بیت پهنا دارد. 16 بیتی ها نیز ممکن است به اندازه یک word فضا اشغال کنند، بنابراین حتی خواندن 32 بیتی لزوماً نمیتواند هر دو بایت مورد نیاز را fetch کند.

هم پوشانی در اجرای دستورات بسیار جالب توجه است و همچنین بیشترین امکان ها برای افزایش چشمگیر سرعت را ارائه میکند.

هم پوشانی ساده، در دستورالعمل های واکشی و اجرا تاثیر بسیار زیادی دارد.

با این وجود، اکثر تکنیک های سطح بالا و پیچیده با هم پوشانی در اجرای تعداد زیادی دستورالعمل، از این مورد هم فراتر رفته اند.

در حقیقت این ایده در قلب طراحی کامپیوترهای مدرن قرار گرفته است.

 

سرعت نیمی از مسئله و هزینه نیمه دیگر آن است. هزینه به روش های متفاوتی اندازه گیری میشود، اما ارائه یک تعریف دقیق از هزینه مسئله ای پیچیده است.

بعضی از مقیاس ها بسیار ساده اند و فقط به شمارش اجزا محدود میشوند. این مسئله زمانی قابل لمس است که اجزای یک پردازنده به صورت جداگانه خریداری شده و اسمبل میشوند.

امروزه کل پردازنده روی یک تراشه قرار دارد، اما میتوانیم اجزای مستقل مانند ترانزیستورها، گیت ها یا واحدهای عملیاتی را شمارش کنیم؛ اما اغلب، فضایی که این اجزا روی مدارهای مجتمع اشغال میکنند از تعداد آنها مهم تر است.

هر اندازه فضای مورد نیاز برای عملیات های تعبیه شده بیشتر شود، به همان نسبت تراشه های بزرگتری خواهیم داشت؛ و هزینه ساخت تراشه نسبت به سطح آن رشد بیشتری خواهد داشت.

به این دلیل، طراحان اغلب از هزینه به عنوان کلمه Real Estate (املاک) صحبت میکنند، که به معنی سطح (احتمالاً با picometer اندازه گیری میشود) مورد نیاز برای مدار است.

 

یکی از کامل ترین مدارهای مطالعه شده در تاریخ سیستم های کامپیوتری، جمع کننده دودویی است. تا کنون هزاران طراحی در این زمینه صورت گرفته است و بین سرعت سریعترین مدل آن نسبت به کندترین مدل، تفاوت چشمگیری وجود دارد.

آنها همچنین بسیار پیچیده هستند. طراح سیستم باید تصمیم بگیرد که آیا سرعت بیشتر در مقابل فضای اشغالی بیشتر ارزش دارد یا نه …

تنها مدارهای جمع کننده نیستند که گزینه های زیادی برای انتخاب داشته باشند؛ تقریباً تمامی اجزای سیستم میتوانند با یک هزینه متفاوت، طراحی شده و در سرعت های متفاوتی نیز اجرا شوند.

چالشی که در این جا برای طراحان سیستم به وجود می آید این است که آیا میتوان با افزایش سرعت اجزا، سیستم را بهبود بخشید ؟!

مسئله جالت توجه اینجاست که بسیاری از اجزای مستقل میتوانند بدون هیچ تاثیری بر روی سرعت یا حداقل با تاثیر کم، با اجزای سریعتر جایگزین شوند.

 

یکی از فاکتورهای کلیدی در تعیین سرعت کلاک، مقدار (حجم) کاری است که باید در هر سیکل کلاک انجام شود. واضح است که هر چه حجم کارها بیشتر باشد، به سیکل ساعت طولانی تری نیاز خواهیم داشت.

البته این کار خیلی هم ساده نیست، به دلیل این که سخت افزار در انجام کارها به صورت موازی میتواند خوب عمل کند، اما در واقع در اینجا یک دنباله از عملیات هایی وجود دارد که باید به صورت سریال در یک سیکل ساعت انجام شوند، و این مسئله است که طول سیکل ساعت را تعیین میکند.

 

جنبه دیگری که میتوانیم آنرا کنترل کنیم، حجم رمزگشایی مورد نیاز است. برای مثال، هنگامی که همه ثبات ها (به فرض 9 ثبات) میتوانند به درون ALU از طریق یک گذرگاه خوانده شوند، ما در عبارت ریز دستورالعمل به 4 بیت نیاز داریم تا ثبات انتخاب شده را نشان دهیم.

متاسفانه این صرفه جویی، برای ما هزینه در بر خواهد داشت و مدار رمزگشایی مقداری تاخیر به مسیر بحرانی اضافه میکند. این بدان معناست که هر ثبات که داده های خود را روی گذرگاه قرار میدهد، آن فرمان را کمی دیر تحویل میگیرد و در نتیجه داده های روی گذرگاه را کمی دیرتر تحویل میگیرند.

این تاثیر به صورت آبشاری ادامه پیدا خواهد کرد. به صورتی که ALU ورودی ثبات ها را دیرتر دریافت کرده و کمی دیرتر نتیجه آنها را تولید میکند و همینطور تاخیرهایی که در هنگام خروجی دادن و ذخیره در ثبات ها ایجاد میشوند را نیز باید در نظر گرفت.

این تاخیر عاملی مهم در تعیین طول یک سیکل ساعت می باشد و این بدین معنی است که ممکن است کلاک نتواند با سرعت قابل قبولی اجرا شود و در نتیجه کل کامپیوتر باید با سرعت کمتری اجرا شود.

بنابراین یک توازن (trade-off) بین سرعت و هزینه در طراحی سطح ریز معماری سیستم های کامپیوتری وجود دارد.

این آموزش بیش از ۳ سال قبل ارسال شده و اکنون در لیست به‌روزرسانی‌های سایت قرار دارد. اگر پیشنهاد یا انتقادی برای بهبود آموزش دارید، خوشحال می‌شیم به ما اطلاع بدهید.