今日のほとんどのCISCアーキテクチャでのCISC命令の可能な最大長はどれくらいですか?
決定的な答えはまだ見つかりませんが、理論的には16バイトの長さであることが示唆されています。
15時頃のビデオで、なぜスピーカーは「理論上」を提案するのですか、そしてなぜ正確に16バイトなのですか?
今日のほとんどのCISCアーキテクチャでのCISC命令の可能な最大長はどれくらいですか?
決定的な答えはまだ見つかりませんが、理論的には16バイトの長さであることが示唆されています。
15時頃のビデオで、なぜスピーカーは「理論上」を提案するのですか、そしてなぜ正確に16バイトなのですか?
実際にも。x86-64の場合、AMDは許可される命令長を15バイトに制限しています。その後、命令デコーダはあきらめてエラーを通知します。
それ以外の場合、複数の命令プレフィックスとオーバーライドバイトがあると、命令が取得できる正確な長さがわかりません。一部のプレフィックスの冗長な繰り返しを許可する場合は、制限はありません。
アグナーフォグは問題を説明します:
3つ、4つ、または5つの命令を同時に実行することは珍しいことではありません。限界は、私たちがたくさん持っている実行ユニットではなく、命令デコーダーです。命令の長さは、1〜15バイトの範囲で指定できます。複数の命令を同時にデコードしたい場合、深刻な問題が発生します。2番目の命令がどこから始まるかを知る前に、最初の命令の長さを知る必要があります。したがって、最初の命令をデコードする前に2番目の命令をデコードすることはできません。デコードは本質的にシリアルプロセスであり、クロックサイクルごとに複数の命令をデコードできるようにするには多くのハードウェアが必要です。言い換えれば、命令のデコードは深刻なボトルネックになる可能性があり、命令コードが複雑になるほど悪化します。
ここで彼のブログ投稿の残りを参照してください。
CISCは設計哲学であり、アーキテクチャではないため、「CISC命令長」などはなく、特定のCISCアーキテクチャ(x86やMotorola 68kなど)の命令長のみです。
特にx86について話すと、制限は15バイトです。理論的には、プレフィックスを繰り返すことができるため、命令の長さは無限になります。ただし、それはデコーダーにとって困難であるため、80286でIntelはそれを10バイトに制限し始め、その後のISAバージョンでは15バイトに制限し始めました。詳細については、以下をお読みください。
また、RISCは固定長命令を意味するものではないことに注意してください。最新のMIPS、ARM、RISC-V ...はすべて、コード密度を高めるための可変長命令モードを備えています