Sparc V8アーキテクチャでは、N個のレジスタウィンドウがあります。一般に、コンテキスト切り替え中のRTOSはレジスタをプッシュしてポップします。これらのレジスタウィンドウのそれぞれをスレッドの1つとして使用することは可能ですか(または既に行われていますか)。これにより、レジスタウィンドウのシフトやPSRのプッシュ/ポップなど、次のスレッドに切り替えることができます!したがって、コンテキスト切り替え時間を節約し、より速いコンテキスト切り替え周波数を可能にする。Sparc V8 RTOSクエリ
0
A
答えて
0
多分、スレッドの意味とスレッド数によって異なります。
レジスタウィンドウは、関数呼び出しと戻り値の考え方に基づいて構築されており、ハードウェアとソフトウェアのトラップで明確に定義された操作を実装しています。あなたのスレッドがラウンドロビンファッションなどで呼び出される関数であれば、あなたの "スレッド"から呼び出される他の関数と同様に、このように切り替えられます。つまり、レジスタウィンドウの数よりも多くの機能を持つと、レジスタファイルにページングされるようになります。
OSとユーザーコードの観点からは、おそらくファームウェアで理解しているように、トラップとして実装されているようにレジスタウィンドウに入るときと何かをするときに何が起こるのかを制御できません。あなたがSparcを動作させていないのは、それが何をしているのかという理由で、スペックに定義されているからです。
レジスタウィンドウ全体のポイントは常に高速コンテキスト切り替えですが、TLBなどのSparcハードウェアの他の側面は、アドレス空間がフラットなSparc MCUのコンテキスト...ええ、それは本当に速いでしょう。
関連する問題
- 1. SPARCのAvatar.js
- 2. バイナリへのSPARCレジスタ名
- 3. Keil RTX RTOSスレッドスタックサイズ
- 4. RTOSのタスク数
- 5. Integrity RTOS \ Multi Compiler
- 6. AVRのマルチタスクRTOS
- 7. RTOS用メモリマップ
- 8. 窓用フリーRTOS
- 9. RTOSとマイクロコントローラ
- 10. libmraaとrtosのLinux
- 11. SPARCのダブルワードのSLL?
- 12. Solaris SPARC用C++ IDE
- 13. Bing Maps v8、V8のレストサービスURL
- 14. RTOSでのアイドル時間
- 15. のlwIP + RTOSの再接続
- 16. QEMU SPARC VM - SCP to localhost
- 17. Solaris(SPARC)開発環境
- 18. Solaris 8 SparcからISO 10のみを使用したSolaris 10 Sparcへのアップグレード
- 19. デックス(V8)
- 20. V8ライブラリサイズ
- 21. V8デバッグプロトコルコマンド
- 22. RTOSのvTaskDelayとのピンのトグル
- 23. ARM STM32F4xxのKeil RTOSスレッド使用例プロジェクト
- 24. Ada multitasking RTOSでopensourceクロスコンパイラをサポート
- 25. RTOSとスレッドを使用する
- 26. LinuxとRTOS間のプロセッサ間通信
- 27. XC8でのスケジューラ/ RTOSの作成
- 28. ERCOSek RTOSの優先度上限プロトコル?
- 29. Linux RTOS sleep() - タイマータスクのためのwakeup()
- 30. Solaris SPARCプラットフォーム(C++アプリケーション用)のプロファイラ
実装には3〜32個のレジスタウィンドウがありますが、これはこのアプローチを使用する可能性のあるタスクの数に制限があります。 V8 Archマニュアルでは、コンテキスト切り替えについて説明しています。実装にはそれに従うことが期待されます。 V9 Archのマニュアルでは、コンテキストスイッチをさらに高速化するための設計の改良について述べています。 – Clifford
私はあなたのポイントを知っています。私の質問は、可能かどうかです。それが超高速コンテキスト切り替えを可能にするかどうかである。 – Prakhar
隣接するレジスタウィンドウ間に重複があることを忘れないでください。 1つのウィンドウの出力レジスタは、次の入力レジスタになります。したがって、各タスクにレジスタウィンドウを割り当てても、各コンテキストスイッチに入力レジスタ(およびグローバル)を保存/復元する必要があります。 –