長い命令の途中でCPUが割り込みを受信した場合はどうなりますか? CPUが命令全体を実行するのか、その一部だけを実行するのか?プロセッサが割り込み時の命令を処理する方法
1
A
答えて
1
、いずれかの特定の命令を引退され、そのすべての副作用は、レジスタ/メモリにコミットするかではない(と、それはいるかのようです命令は全く実行されなかった)。命令退職の全ポイントは、割り込みなどの外部イベントの時点でのプログラム状態の一貫したビューを保証することです。
これは特に、命令が順番に終了する理由で、外部のオブザーバはCPUのアーキテクチャ状態を、順番に命令を実行しているかのように見ることができます。
これには例外があります。特に、REP-stringクラスの命令があります。
私はこれがあなたが尋ねたことだと思っていますが、そうでない場合は、私に聞かせてください:どのように命令がどこからでも「部分的に」実行されたことを観察しますか?
1
私が知る限り、それはプロセッサーと命令に依存します。具体的には、プロセッサが保留中の割り込みをサンプリングするかどうかと、プロセッサが割り込みをサンプリングするかどうかとに依存します。プロセッサが現在の命令を完了した後に保留中の割り込みのみを探す場合、途中の命令は何も中断しません。しかし、長い命令が実行されている場合、命令の実行中に何回か割込みをサンプリングすると有益です(レイテンシに敏感です)。これには欠点があります。この場合、命令が部分的に実行された結果として、レジスタとフラグに加えられたすべての変更を復元する必要があります。なぜなら、割り込みが完了した後に戻ってその命令を再発行する必要があるからです。
(出典:ウィキペディア、http://en.wikipedia.org/wiki/Interrupt)プログラマの観点から
関連する問題
- 1. Marklogic - XMLで処理命令を処理する方法
- 2. 割り込みを処理する方法は?
- 3. 割り込みでグローバル変数を処理する方法
- 4. 処理命令の検証
- 5. シングルサイクルMIPSプロセッサ命令実行
- 6. キーボード割り込み処理のLinuxデバイスドライバエラー
- 7. マイクロコントローラでの割り込み処理
- 8. ウィンドウに受信した割り込みの処理時間
- 9. AVRプログラミング、割り込み処理
- 10. STM32 HAL SPI割り込み処理
- 11. PCIe割り込み処理用Linuxカーネル
- 12. Gem5でのARMプロセッサの命令アクセス
- 13. JavaでCtrl + Cのようなシステム割り込みを処理する方法
- 14. Valgrind未処理の命令バイトエラー
- 15. X86アセンブリ - IDIV命令の処理
- 16. 割り込み処理が必要な理由
- 17. kvmのゲストが外部割り込みと外部割り込みを処理する
- 18. 与えられた命令の次の即時命令を得る方法は?
- 19. 命令レベルの並列処理と並列処理の違い
- 20. スレッドに命令を割り当てる
- 21. XML処理命令と空白
- 22. 異常な例外処理ダミー命令
- 23. ARMV7Aプロセッサのユーザモードで割り込みを有効にする
- 24. SDL TridionでXMLファイルの処理命令を保持する方法は?
- 25. WebViewの読み込み処理方法
- 26. bashのstdinから読み込むときに割り込み信号を処理する方法
- 27. C++で割り込みを処理する
- 28. async zmqでキーボード割り込みを処理する
- 29. Androidアプリケーションで割り込みを処理する
- 30. XalanプログラムでXMLから処理命令を取得する方法は?
「長い命令」とはどういう意味ですか?すべてのCPU命令はアトミックであり、(プロセッサの観点から)できるだけ小さな単位の時間を取る。それとも、授業中に何かが恋しいですか? :) – Jakob
@Jakob:現代のスパースカラープロセッサーはどうですか?どこのクロックサイクルで100以上の命令を "飛行中"持っているのでしょうか?割り込みを処理するには、これらの命令をすべて完了する必要がありますか? –
@ヤコブ:インテルマニュアルによると、異なる命令は時間(サイクル)の異なる量をとります –