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