مغالطه: تعداد دستورات بیشتر همیشه یعنی قدرت بیشتر
یک فرض رایج این است که یک مجموعه دستور با تعداد بیشتری دستور تخصصی، ذاتاً توانمندتر از مجموعهای با دستورات کمتر و سادهتر است. در واقعیت، یک مجموعه کوچک از عناصر پایه بهخوبی انتخابشده، مانند دستورات هستهای RISC-V که در سراسر این فصل پوشش داده شد، میتواند هر محاسبهای را که یک مجموعه دستور بزرگتر و پیچیدهتر بیان میکند، صرفاً با ترکیب تعداد بیشتری از آنها با یکدیگر، بیان کند. مبادله در توانایی نیست، بلکه در این است که یک وظیفه مشخص به چند دستور نیاز دارد و سختافزار decode آن باید چقدر ساده باشد.
مغالطه: کد سطح بالا یکبهیک با دستورات ماشین نگاشت میشود
وسوسهانگیز است فرض کنیم هر خط از کد منبع تقریباً به یک دستور ماشین تبدیل میشود. همانطور که مثال مرتبسازی و مقایسه آرایهها در مقابل اشارهگرها پیشتر در این مجموعه نشان دادند، یک عبارت سطح بالای واحد میتواند به چندین دستور گسترش یابد، و تعداد دقیق آن بهشدت به الگوی کد خاص استفادهشده، کامپایلر، و انتخابهای بهینهسازی انجامشده بستگی دارد.
دام: نادیده گرفتن محدودیتهای رجیستر در استدلال درباره کارایی
از آنجا که رجیسترها کم و بسیار سریع هستند در حالی که حافظه فراوان و نسبتاً کند است، کدی که در سطح منبع ساده بهنظر میرسد همچنان میتواند کارایی ضعیفی داشته باشد اگر کامپایلر را مجبور کند بهطور مکرر مقادیر را بین حافظه و رجیسترها جابهجا کند. تشخیص این مبادله، که پیشتر هنگام مقایسه رجیسترها و حافظه بحث شد، برای استدلال درست درباره کارایی واقعی بهجای صرفاً تعداد دستورات ضروری است.
دام: فرض یکسان بودن رفتار اعداد علامتدار و بدون علامت
از آنجا که اعداد علامتدار و بدون علامت میتوانند دقیقاً همان الگوی بیتی را به اشتراک بگذارند اما معنای متفاوتی داشته باشند، مقایسه یا انجام محاسبات روی آنها بدون در نظر گرفتن نمایششان، همانطور که پیشتر درباره مکمل دو پوشش داده شد، منبع رایج و ظریفی از باگهاست، بهویژه در مرزهای بازه قابلنمایش یک عدد.
جمعبندی فصل: چه چیزی همه را به هم مرتبط میکند
در سراسر این فصل، یک موضوع ثابت پدیدار میشود: سختافزار انعطافپذیری را نه از طریق پیچیدگی، بلکه از طریق تعداد کمی بلوک سازنده ساده و منظم به دست میآورد — فرمتهای دستوری ثابت، مجموعهای محدود از عملیاتهای محاسباتی و منطقی، یک فایل رجیستر کوچک، و قراردادهای منظم برای فراخوانی رویهها — که در تعداد عظیمی ترکیب میشوند تا هر چیزی از یک روال مرتبسازی ساده تا یک سیستمعامل کامل را بسازند.
هر مفهومی که معرفی شد، از نمایش عدد باینری تا دستورات همگامسازی اتمیک، برای خدمت به یک هدف زیربنایی وجود دارد: اجازه دادن به نرمافزاری که توسط انسانها، به زبانهای قابلفهم برای انسان نوشته میشود، تا با اطمینان به شکلی ترجمه شود که سختافزار فیزیکی ساده و سریع بتواند آن را بهدرستی اجرا کند.