مجموعه دستورالعمل: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
خط ۱۳۷:
 
== پیاده سازی مجموعه دستورالعمل ==
هر مجموعه دستورالعمل داده شده را می توان به شیوه‌های متفاوتی پیاده‌سازی کرد. تمام شیوه های پیاده سازی یک مجموعه دستورالعمل خاص، یک مدل برنامه نویسی مشابه فراهم می‌کند. و تمام پیاده سازی های این مجموعه دستورالعمل، قادرند تا فایل یا برنامه های قابل اجرای مشابهی را اجرا کنند. شیوه های مختلف پیاده سازی یک مجموعه دستورالعمل، موجب توازن های مختلفی بین هزینه، عملکرد، مصرف انرژی، اندازه، و ... می‌شود. <br>
 
مهندسان در هنگام طراحی کردن [[ریزمعماری|ریز معماری]] یک پردازنده، از قطعات مدار الکترونیکی شش میخ شده( hard-wired) (که معمولاً به طور جداگانه طراحی می‌شوند)، همچون جمع کننده ها، مالتی پلکسر ها، شمارنده ها، رجیسترها، ALU ها و ... استفاده می کنند. سپس معمولاً از انواعی از زبان‌های انتقال رجیستر ( register transfer language) برای توصیف کدگشایی و توالی بندی هر دستورالعمل ISA، با استفاده از این ریز معماری فیزیکی استفاده می شود. دو روش اساسی برای ساختن یک [[واحد کنترل]]( control unit) برای پیاده‌سازی این توصیفات وجود دارد (اگرچه بسیاری از طراحی ها از شیوه‌های بینابین استفاده می کنند).<br>
* ۱. برخی طراحی های کامپیوتر، تمام کد گشایی و توالی بندی مجموعه دستورالعمل را شش میخ می کنند، درست شبیه مابقی ریز معماری.<br>
* ۲. طراحی های دیگر از روتین های ریزکد یا جداول (یا هر دو) برای این کار استفاده می‌کنند- به طور معمول به شکل [[حافظه تنها خواندنی|ROM]] های روی چیپ یا PLA ها یا هر دو (اگرچه به طور تاریخی RAM ها و ROM های جداگانه استفاده شده اند). Western Digital MCP-1600 یک مثال قدیمی است که از یک ROM اختصاصی مجزا برای میکرو کد استفاده می کند.<br>
 
برخی طراحی ها از ترکیبی از طراحی شش میخه و میکروکد برای واحد کنترل استفاده می کنند.
برخی طراحی های پردازنده از یک مخزن کنترل قابل نوشتن (writable control store) استفاده می کنند- آنها مجموعه دستورالعمل مورد نظر را در یک RAM قابل نوشتن یا فلش، در داخل پردازنده (مثلاً پردازنده Rekursiv ) یا یک FPGA (رایانش قابل پیکربندی) کامپایل می کنند. <brref>{{cite web|url=http://cpushack.net/CPU/cpu7.html |title=Great Microprocessors of the Past and Present (V 13.4.0) |website=cpushack.net |access-date=2014-07-25}}</ref>
 
یک ISA را می توان در نرم افزار با استفاده از یک [[مفسر (رایانه)|تفسیرگر]] شبیه سازی کرد. به طور طبیعی، به دلیل سربار ناشی از تفسیر، این روش کندتر از اجرای مستقیم برنامه ها روی سخت افزار شبیه سازی شده است، مگر اینکه سخت افزاری که شبیه ساز را اجرا می کند، چندین برابر سریع تر باشد. امروزه به طور رایجی، فروشندگان ISAها یا ریز معماری های جدید، شبیه سازهای نرم افزاری را پیش از آماده شدن پیاده سازی سخت افزاری، در اختیار توسعه دهندگان نرم افزار قرار می دهند. <br>
معمولاً جزئیات پیاده سازی مورد نظر، تاثیر بسیاری روی دستورالعمل های خاص انتخاب شده برای مجموعه دستورالعمل مورد نظر دارند. برای مثال، بسیاری از پیاده سازی های [[خط لوله (رایانه)|خط لوله]] دستورالعمل، فقط اجازه می دهند تا یک بارگذاری حافظه یا ذخیره سازی حافظه به ازای هر دستورالعمل انجام شود، که منجر به معماری بارگیری-ذخیره سازی (RISC) می شود. به عنوان مثال دیگر، برخی روش‌های ابتدایی پیاده سازی خط لوله دستورالعمل، منجر به یک درگاه تاخیر ( delay slot) شد. <br>
 
نیاز روز افزون به [[پردازشگر سیگنال دیجیتال|پردازش سیگنال دیجیتال]] با سرعت بالا، جهت رویه را معکوس کرده است و باعث شده است تا پیاده سازی دستورالعمل ها به شیوه های خاصی انجام گیرد. برای مثال، دستورالعمل MACH در یک پردازشگر سیگنال دیجیتال، برای انجام سریع فیلترهای دیجیتال، باید از یک نوع [[معماری هاروارد]] استفاده کند، که به طور همزمان یک دستورالعمل و دو کلمه داده را استخراج می کند و نیازمند یک ضرب کننده ی ضرب کن-جمع کن (multiply–accumulate) تک چرخه ای است.