موضوع مقاله: واحد ممیز شناور | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # واحد ممیز شناور | مقدمه: بعضی از سیستم‌ها (مخصوصا نسخه‌های قدیمی تر، معماری مبتنی بر میکرو کد) نیز می‌توانند توابع غیر جبری فراوانی مانند محاسبات نمایی یا مثلثاتی را انجام دهند، اگرچه در اکثر پردازنده‌های پیشرفته این اعمال با استفاده از روال‌های کتابخانه نرم‌افزاری انجام می‌شود. | ## بخش 1: واحد ممیز شناور | در بیشتر طراحی‌های رایانه ای چند منظوره، یک یا چند FPU (واحد ممیز شناور) ممکن است به عنوان واحد اجرایی در واحد پردازش مرکزی (سی پی یو) جای گرفته باشند؛ با این حال بسیاری از پردازنده‌های جاسازی شده از پشتوانهٔ سخت‌افزاری برای عملیات ممیز شناور (fp) برخوردار نیستند (در حالیکه آنها را به‌طور معمول به صورت استاندارد، حداقل ۳۲ بیتی می‌کنند). هنگامی که یک CPU (هستهٔ پردازندهٔ مرکزی) برنامه ای را اجرا می‌کند که نیاز به عملیات نقطه شناور دارد، سه راه برای انجام آن وجود دارد: شبیه‌ساز واحد ممیز شناور (یک کتابخانه ممیز شناور) افزونه FPU FPU یکپارچه تاریخچه از لحاظ تاریخی، سیستم‌ها ممیز شناور را از طریق یک کمک پردازنده به جای یک واحد یکپارچه اجرا می‌کنند (اما در حال حاضر علاوه بر CPU، به عنوان مثال GPUها (واحد پردازش گرافیکی) - که کمک پردازنده هستند و همیشه در CPU ساخته نمی‌شوند- برخلاف نسل‌های اولشان، به عنوان یک قاعده در FPUها هستند). از آنجا که ابزار محاسبه ممیز شناور ارائه نشده‌است، محاسبات ممیز شناور در نرم‌افزار انجام می‌شود که زمان پردازنده بیشتری را می‌گیرد اما از هزینه سخت‌افزاری اضافی اجتناب می‌کند. برای یک معماری کامپیوتری خاص، دستورالعمل‌های واحد ممیز شناور ممکن است توسط یک کتابخانه از توابع نرم‌افزار شبیه‌سازی شوند؛ این ممکن است به کد زبان ماشین یکسان اجازه دهد که در سیستم‌های دارای سخت‌افزار ممیز شناور یا بدون آن اجرا شود. شبیه‌سازی را می‌توان در هر یک از سطوح مختلف انجام داد: در CPU (واحد پردازش مرکزی) به عنوان میکروکد (که یک عمل معمولی نیست)، به عنوان یک عملکرد سیستم عامل، یا در فضای کاربری کد. هنگامی که فقط قابلیت‌های عدد صحیح در دسترس است، معمولاً روش‌های شبیه‌سازی ممیز شناور CORDID استفاده می‌شوند. در بیشتر معماری‌های کامپیوتری پیشرفته، عملیات‌های ممیز شناور از عملیات‌های عدد صحیح جدا می‌شود. این قسمت به‌طور قابل توجهی با معماری متفاوت است؛ بعضی‌ها، مانند Intel x86، دارای ثابت ممیز شناور اختصاصی اند در حالی که بعضی از آنها مستقل از برنامه‌های زمانبندی عمل می‌کنند. | ## بخش 2: واحد ممیز شناور | دستورالعمل CORDIC معمولاً به خوبی در کمک پردازنده‌های اینتل ۸۰۸۷ ،۸۰۲۸۷، ۸۰۳۸۷ تا ۸۰۴۸۶ و در موتورولا ۶۸۸۸۱ و ۶۸۸۸۲ برای برخی از دستورالعمل‌های ممیز شناور، به عنوان یک راه برای کاهش تعداد دریچه (و پیچیدگی) از زیر سیستم FPU پیاده‌سازی شده‌است. در معماری‌های فوق سنجش پیشین (صفتی برای یک نوع معماری ریز پردازنده که آن را قادر می‌سازد تا چند دستورالعمل را در یک چرخه (سیکل) ساعت انجام دهد) بدون اجرای عمومی خارج از دستورالعمل، عملیات نقطه شناور گاهی به صورت جداگانه از عملیات عدد صحیح به صورت خطی انجام می‌شود. از اوایل دهه ۱۹۹۰، بسیاری از ریزکمک پردازنده‌های دسکتاپ و سرورها دارای بیش از یک FPU (واحد ممیز شناور) هستند. کتابخانه ممیز شناور برخی از سخت‌افزارهای ممیز شناور، تنها از ساده‌ترین عملیات‌ها - جمع، تفریق و ضرب - پشتیبانی می‌کنند اما حتی پیچیده‌ترین سخت‌افزار ممیز شناور هم تعداد محدودی عملیات را پشتیبانی می‌کند. به عنوان مثال، هیچ‌یک از آنها از محاسبه‌های دلخواه دقیق به‌طور مستقیم پشتیبانی نمی‌کنند. هنگامی که یک CPU (هسته پردازنده مرکزی) برنامه ای را اجرا می‌کند که نیاز به عملیات ممیز شناوری دارد که به‌طور مستقیم توسط سخت‌افزار پشتیبانی نمی‌شود، از یک سری عملیات‌های ساده شناور استفاده می‌کند. در سیستم‌های بدون سخت‌افزار شناور نقطه ای، CPU آن را با استفاده از یک سری عملیات ساده‌تر محاسباتی نقطه ثابت که در واحد محاسبات منطقی عددی اجرا می‌شود، شبیه‌سازی می کند. نرم‌افزاری که رشته‌های ضروری دستورهای لازم برای عملیات نقطه شناور را لیست می‌کند معمولاً در یک کتابخانه نقطه شناور وجود دارد. | ## بخش 3: واحد ممیز شناور | واحدهای ممیز شناور یکپارچه در بعضی موارد، ممکن است واحدها ممیز شناور تخصصی باشند و بین عملیات‌های ممیز شناور ساده‌تر (خصوصاً جمع و ضرب) و عملیات‌های پیچیده‌تر مانند تقسیم، تقسیم شوند. در برخی موارد، ممکن است تنها عملیات ساده در سخت‌افزار یا میکرو کد انجام شود، در حالی که عملیات پیچیده‌تر به عنوان نرم‌افزار اجرا می‌شود. در برخی از طراحی‌های جدید، قابلیت FPU با واحدها برای انجام محاسبه‌های SIMD (یک دستور چند داده‌ای) ترکیب شده است؛ یک مثال در این مورد، تقویت کردن دستورهای x87 است که با دستورهای SSE تنظیم شده در معماری x86-64 که در پردازنده‌های جدیدتر اینتل و AMD استفاده شده‌است، می‌باشد. افزودنی‌های FPUها در دهه ۱۹۸۰، رایج بود که FPUهای موجود در IBM PC / میکرو رایانه‌های سازگار کاملاً از CPU جدا باشد و معمولاً به عنوان یک افزودنی اختیاری فروخته می‌شد و تنها در صورتی که نیاز به افزایش سرعت یا توانا ساختن برنامه‌های سنگین ریاضیاتی بود خریداری می‌شد. IBM PC , XT و اکثر دستگاه‌های سازگار مبتنی بر ۸۰۸۸ یا ۸۰۸۶ دارای یک سوکت برای کمک پردازنده اختیاری ۸۰۸۷ بودند. AT و سیستم‌های مبتنی بر ۸۰۲۸۶ به‌طور کلی برای ۸۰۲۸۷ و ماشین‌های مبتنی بر ۸۰۳۸۶ / 80386SX نیز به ترتیب برای ۸۰۳۸۷ و 80387SX سوکت دار شده بودند اگر چه نسخه‌های جدیدتر برای ۸۰۲۸۷ سوکت دار شده بودند ولی از آنجایی که ۸۰۳۸۷ هنوز وجود نداشت سایر کمپانی‌ها کمک پردازنده‌ها را برای سری‌های Intel x86 تولید کردند که شامل CYRIX , WEITEK می‌شد. همچنین دستگاه‌های جانبی ریزپردازندهٔ FPU برای دستگاه‌های واحد میکروکنترلر (MCUs به / μCs) / تک هیئت مدیره کامپیوتر (SBCها)، وجود دارد که برای فراهم کردن قابلیت محاسبهٔ ممیز شناور سودمند هستند. | ## جمع‌بندی | این افزودنیهای FPUها مستقل از پردازنده و میزبان هستند، که نیازهای برنامه‌نویسی خود (عملیات، مجموعه دستورالعمل‌ها و غیره) را پردازش می‌کنند و اغلب با محیط‌های یکپارچه و توسعه یافتهٔ خود (IDEها) ارائه می‌شوند.