第 7 章 Martini における乗っ取り機構の提案・
7.3 ハードウェアモジュールへの乗っ取り機構の実装
既存のハードウェアモジュールに乗っ取り機構を実装するには,ハードウェアモジュールに以 下の3項目を実装する必要がある.
• 停止状態
• 停止状態への移行手段
• 停止状態下での制御機構
7.3.1 停止状態
停止状態とは,モジュールがステートの遷移を停止して内部レジスタなどのリソースをオンチッ ププロセッサに解放している状態を指す.乗っ取り機構は,モジュールが例外発生やオンチップ プロセッサからの要求などによって停止状態となることで成り立つ.
乗っ取りの対象となるモジュールにおいて,例外などの発生により処理が停止する可能性のあ るステートが複数ある場合,個々のステートに停止状態になるような機構を設けるよりも,自発 的に他のステートに遷移せず,一切のリソースを要求しないステートを新たに設け,例外発生や オンチッププロセッサからの要求によって乗っ取られた状態となる際に,自発的にこのステート へ遷移する設計とした方が実装が容易である.以下では,このような停止状態のために設けたス テートを“サスペンデッドステート”と呼ぶ(図7.2).あるステートからサスペンデッドステート に遷移する際に,リソースを解放する機構を加えることで,停止状態を実現できる.
Suspended state Suspendable
state
Suspendable state
Suspendable state
図7.2 サスペンデッドステート
また,乗っ取り機構では,ソフトウェア処理が完了した後,モジュールがサスペンデッドステー トから元のステートに安全に復帰し,ハードウェア処理を再開できる必要がある.これを実現す るには,停止状態になったモジュールに入力を与えたり,そのモジュールの出力を利用するよう な依存のある他のモジュールを必要に応じて待機させたりするような構造にしなければならない.
モジュールがサスペンデッドステートへ遷移し,その後オンチッププロセッサによってステー トを戻された後も,正常にハードウェア処理を再開できるようなステートを,以下では“サスペ ンダブル”なステートと呼ぶ.図7.2の“Suspendable State”はサスペンダブルなステートである.
乗っ取り対象となるモジュールのステートS がサスペンダブルであるには,以下の条件を満た す必要がある.
• 乗っ取り対象モジュールと依存のある周辺モジュールが,有限ステート遷移した後に遷移を 停止し,ステートS の次のステートにおいて発生する信号を待ち続ける.
• 依存のある周辺モジュールのステートをオンチッププロセッサが認識できるか,乗っ取り 対象のモジュールがステートS に滞在している間の周辺モジュールのステートが一意に定 まる.
以下ではサスペンダブルなステートについて例を示しつつ述べる.
まず,図7.3に示すような,乗っ取り対象となるモジュールYが,周辺モジュールXと依存関係 にある場合を考える.それぞれのモジュールは,順序機械MX(IX, OX, SX,σx,λx)およびMY(IY, OY, SY,σy,λy)で表される.ここでIは入力集合,Oは出力集合,Sは状態集合,σは状態遷移関 数,λは出力関数である.
SYm SYn SXj
Target Sequencer Y
Surrounding Circuit X λ(SXj)
else λ(SYn)
else
SXk
SXi
図7.3 サスペンダブルなステートの例
Xは,状態S XiからS Xj に遷移する際に,Yにハンドシェイク要求出力信号λ(S Xj)を送信し,
その後YがS Ynに遷移することで出されるアクノリッジ信号λ(S Yn)を受け取らない限り,次の 状態S Xkに遷移しないものとする.このような場合,YがS Ymからサスペンデッドステートに遷 移しても,XはS Xjから先のステートへ進めずに待機することになる.このため,Yがサスペン デッドステートからの復帰時にS YmからS Ynに遷移することで,Xは正常にハードウェア処理を 再開することができる.よって,YにおいてS Ymはサスペンダブルなステートであると言える.
すなわち,以下の条件を満たす場合に,状態S Ymはサスペンダブルであると言える.
周辺モジュールXについて:
σ(S Xj, λ(S Yn))=S Xk
σ(S Xj, λ(S Yn))=S Xj 乗っ取り対象モジュールYについて:
σ(S Ym, λ(S Xj))=S Yn
σ(S Ym, λ(S Xj))=S Ym
ただし,ここでOはOの補集合を表すものとする.
一方,YがS Ynに遷移したかどうかにかかわらずXのステートがλ(S Xj)を出力した後にS Xj
から別の状態に遷移してしまう場合,YがS Ymから サスペンデッドステートに移行している間 にXの処理が進んでしまう.従って,復帰後にYが正常なハードウェア処理を再開できない可能 性が生じてしまう.
このような状況でも,以下の条件を満たす場合,Yは安全に処理を再開できる.
• XはS Xjから数ステート先の特定のステートS Xpで待機し,YがS Ynに遷移したことを示
す信号λ(S Yn)の入力がない限りその先のステートへは遷移しない
• オンチッププロセッサが,Xの現在のステートを知ることができる
この例の場合,YがS Ymからサスペンデッドステートへ遷移した後,オンチッププロセッサは XがS Xpまで遷移したことを確認した上でYを サスペンデッドステートからS Ynに遷移させる ことができるため,安全に処理を再開できることになる.すなわち,S Ymはサスペンダブルなス テートとなる.
この場合のS Ymがサスペンダブルとなる条件は以下の通りである.
周辺モジュールXについて:
σ(S Xp, λ(S Yn))=S Xq σ(S Xp, λ(S Yn))=S Xp
例として,図7.4に示すような状況を考える.図7.4ではXはハンドシェイク要求信号λ(S Xj) を出した後,Yからのアクノリッジ信号を待たずにS Xjから先のステートに進んでしまう.ただ し,XはS XpでYからのアクノリッジ信号λ(S Yn)を待つものとする.
SYm SYn SXi SXj
Target Sequencer Y
Surrounding Circuit X
else
else
SXk
SXp
λ(SXj)
λ(SYn) SXq
図7.4 条件つきでサスペンダブルとなるステートの例
この場合,オンチッププロセッサは,YがS Ymからサスペンデッドステートに遷移した後,復 帰する際に,XがS Xpまで到達しているのを確認した上で,YのステートをS YmにせずにS Yn
に設定する.このようにすることで,X,Y共にハードウェア処理を正常に再開することが可能 となり,S Ymはサスペンダブルなステートとなる.
7.3.2 停止状態への移行手段
乗っ取り機構では,モジュールが停止状態となる要因として,以下の2つを想定している.
• モジュール自身による停止
• オンチッププロセッサからの要求によるモジュールの停止
前者には,TLBのミスヒットなどでモジュールがハードウェア処理を続行できない状態に陥った 際に,ソフトウェアに処理の続きを依頼するケースが該当する.この場合,ハードウェアモジュー ルが例外などを検出した段階で,リソースを解放し,サスペンデッドステートへ遷移する設計と すればよい.
一方,後者には,ソフトウェア処理でハードウェアモジュールの機能を部分的に利用するケース などが該当する.この場合,ソフトウェア処理によってモジュールのステートをサスペンデッドス テート に変更すればよいが,モジュールのステートをソフトウェア側が任意のタイミングで強制 的にサスペンデッドステートに変更してしまうと,そのモジュールのすべてのステートがサスペ ンダブルでない場合,非サスペンダブルなステートから直接停止状態となり,後にハードウェア 処理を正常に再開できなくなる可能性が生じる.この問題は,モジュール側がソフトウェアから の要求に応じて,サスペンダブルなステートに達したことを確認してからサスペンデッドステー トに遷移するような設計とすれば回避することができる.
7.3.3 停止状態下での制御機構
乗っ取り機構では,オンチッププロセッサは,各モジュールが停止状態になったことを確認し た上で制御下に置き,代わりの処理を行う.これには以下の仕組みが必要となる.
• モジュールが停止状態になったことをオンチッププロセッサに通知するための仕組み
• 停止状態になったモジュールのステートマシンやレジスタにオンチッププロセッサがアクセ スするための仕組み
• オンチッププロセッサが停止状態のきっかけを判別するための仕組み
停止状態の通知には,一般的に専用ハードウェアからの例外発生の通知と同様にオンチッププ ロセッサに対する割込みを用いる方法が考えられる.
また,停止状態になった各モジュールのステートマシンやレジスタへアクセスするための仕組 みの実現には,オンチッププロセッサから乗っ取り対象となるすべてのモジュールに対して制御 用のバスを配線すればよい.
停止状態への遷移のきっかけは,停止の原因を示すレジスタをモジュール内に新たに設けるこ とでオンチッププロセッサが認識可能となる.あるいは,停止状態となる直前のステートがわか ればハードウェアモジュールが処理を続行できなくなった理由が一意に定まるのであれば,直前 に滞在していたステートを記録するレジスタを新たに設けるだけでもよい.