چرا اعداد به نمایش ثابت نیاز دارند
سختافزار کامپیوتر هر مقدار را با تعداد ثابتی بیت ذخیره میکند، که معمولاً در گروههای ۳۲ بیتی یا ۶۴ بیتی به نام Words قرار میگیرند. چون تعداد بیتها ثابت است، محدودیت سختی روی بازه مقادیر قابلنمایش وجود دارد، و همان الگوی بیتی میتواند بسته به نحوه تفسیرش معانی متفاوتی داشته باشد.
اعداد بدون علامت: نمایش فقط مقادیر غیرمنفی
یک Unsigned Number از تمام بیتهای موجود برای نمایش مقدار استفاده میکند، بدون اینکه هیچ بیتی برای علامت رزرو شود. برای یک عدد بدون علامت n بیتی، بازه قابلنمایش این است:
بازه: 0 تا (2^n − 1)نمایش بدون علامت معمولاً برای مقادیری استفاده میشود که منطقاً هرگز نمیتوانند منفی باشند، مانند آدرسهای حافظه.
اعداد علامتدار و مکمل دو
بیشتر محاسبات در برنامههای واقعی به مقادیر منفی نیز نیاز دارند. نمایشی که تقریباً بهطور جهانی در سختافزار امروزی استفاده میشود Two's Complement نام دارد.
در نمایش مکمل دو، بیت سمت چپ Sign Bit نامیده میشود: برای اعداد غیرمنفی صفر و برای اعداد منفی یک است، اما برخلاف نمایش ساده علامت-مقدار، بقیه بیتها فقط یک مقدار ساده نیستند — کل الگو بهگونهای محاسبه میشود که جمع و تفریق با همان مدار سختافزاری، صرفنظر از علامت، درست کار کند.
برای منفی کردن یک عدد در مکمل دو، تمام بیتها معکوس شده و سپس ۱ به نتیجه اضافه میشود:
مرحله ۱: تمام بیتهای عدد را معکوس کن
مرحله ۲: به نتیجه معکوسشده ۱ اضافه کناین روش بهطور خاص انتخاب شده چون اجازه میدهد همان مدار جمعکننده استفادهشده برای جمع بدون علامت، تفریق و اعداد منفی را نیز درست مدیریت کند، و نیاز به سختافزار جداگانه را از بین میبرد.
دستورات ماشین چگونه کدگذاری میشوند
درست همانطور که داده عددی بهشکل الگوهای باینری با عرض ثابت ذخیره میشود، خود دستورات نیز به همین شکل کدگذاری میشوند. هر دستور RISC-V در یک کلمه ثابت ۳۲ بیتی بستهبندی میشود، که به Fields مجزا تقسیم شده، هرکدام حامل یک قطعه اطلاعات مشخص است.
یک فرمت دستور محاسباتی معمول شامل فیلدهایی مانند اینهاست:
Opcode: مشخص میکند دستور به کدام دسته عملیات پایه تعلق دارد.Destination Register (rd): مشخص میکند نتیجه کجا ذخیره خواهد شد.Source Registers (rs1, rs2): مشخص میکنند مقادیر عملوند ورودی از کجا میآیند.Funct Fields: بیتهای اضافی مورد نیاز برای تمایز کامل عملیات دقیق را فراهم میکنند، وقتی opcode بهتنهایی بهاندازه کافی مشخص نیست.
این ساختار لایهای فیلدها Format دستور نامیده میشود، و RISC-V تعداد کمی فرمت استاندارد تعریف میکند تا سختافزار decode بتواند هر فیلد را با استفاده از همان موقعیتهای بیتی ثابت در بسیاری از دستورات مختلف استخراج کند، و منطق decode را ساده و سریع نگه دارد.
چرا کدگذاری با عرض ثابت اهمیت دارد
ثابت نگهداشتن عرض هر دستور، با فیلدهایی که همیشه در موقعیتهای بیتی قابلپیشبینی قرار دارند، به سختافزار decode پردازنده اجازه میدهد عملوندها را استخراج کرده و عملیات را در یک گام واحد و ساده شناسایی کند، بهجای نیاز به منطق تجزیه پیچیده و متغیر — که مستقیماً از اصل طراحی پیشین یعنی سریع نگهداشتن حالت رایج پشتیبانی میکند.