24. Out of Order Execution
mov eax, [eax]
xor ebx, ebx
add ebx, eax
inc ecx
add eax, ecx
Load (遅い)
↑の命令とは依存がない
↑の命令とは依存がない
25. Out of Order Execution
mov eax, [eax]
xor ebx, ebx
add ebx, eax
inc ecx
add eax, ecx
Load (遅い)
↑の命令とは依存がない
↑の命令とは依存がない
1
2
3
2
3
命令の順番を入れ替えても構わない
しかも、開いてるポートに並列に実行できる
26. Out of Order Execution
非順序実行
● 実行できる命令から実行する
プロセッサがやらなければならないこと
1. 命令の依存関係を知る
2. 命令をバッファする
3. 実行できる命令から実行する
4. どの命令が終わったかを知る
5. 本来の順序でレジスタへコミットする
27. Out of Order Execution
● Out of Order
○ Intel P6 から実装 (Pentium Pro)
○ Intel Atom (Silvermont から実装)
○ ARM Cortex-A9 から実装
○ mist32
■ ただし Load/Store OoO は未実装
● In Order
○ Intel Atom (初代 Bonnell)
○ ARM Cortex-A7 以前
速くはなるが
回路規模は大きくなる