第 7 章 Martini における乗っ取り機構の提案・
7.4 Martini への乗っ取り機構の実装
可能とすべきものであるが,Martiniでは実験的な目的ですべてのステートに対してブレークポイ ントを設定できる設計とした.当然,非サスペンダブルなステートに対してブレークポイントを 設定した場合,ソフトウェア処理後に停止状態から正常に処理を再開できない事態が生じる可能 性がある.
7.4.2 乗っ取り機構のモジュールへの実装の具体例
以下では,InitiatorとRFendを例に,Martiniへの乗っ取り機構の実装について述べる.
Initiator
図7.5にInitiatorの状態遷移図を示す.
PGID
IPA
CONT
CHK1 Suspended
state
PATLB miss-hit
PGID protection violation Unsupported
communication request
MISS
IPAH
IPA2
BOTF
CHK2 IDLE
図7.5 Initiatorの状態遷移図
Initiatorは,ホストからWindowに通信要求が書き込まれると処理を開始する.ホストからの要
求がPUSHであった場合は,WindowのIDを用いてPGIDTBLを参照して対応するPGIDとPID
を取得し(PGID),通信領域として用いるホストメモリの物理アドレスの取得(IPA–IPA2)を行った
後,DMA要求を発行し(CHK1およびCHK2),CONTTBLを参照してWindowに書き込まれた処 理が完了したことをホストに通知して処理を完了する(CONT).
図7.5において網がけとなっているステートは例外を発生する可能性のあるステートであり,サ スペンダブルに設計されている.オンチッププロセッサは,Initiatorからの割込みを検出すると,
Initiator内のレジスタからInitiatorが サスペンデッドステート に遷移する直前のステートを読み 出し,それを元に乗っ取り要求の原因を判断して処理を行う.以下に,Initiatorにおけるサスペン デッドステート に遷移する直前のステートに対応する処理の一例を示す.
IDLE Windowに書き込まれた内容がPUSHもしくはPULLの要求,およびBOTFによるパケッ
ト発行のいずれでもなかったことを示す.オンチッププロセッサはWindowに書き込まれた 内容を元に,ソフトウェアによる要求処理を行うことになる.すなわちこれを利用すること で,ユーザプロセスからファームウェアの処理を呼び出すことができる.
PGID 無効なWindowから要求が発行されたことを示す.オンチッププロセッサは現在Initiatorが
保持している通信要求をキャンセルし,InitiatorのステートをIDLEに設定することで,次 の通信要求の処理を開始する.
IPA2 PUSHを処理する際,送信領域の物理アドレスを取得する段階でPATLBがミスヒットした ことを示す.オンチッププロセッサはPATLBのミスヒットしたエントリをリプレースメン トした上で,InitiatorのステートをIPAに設定し,PUSHプリミティブの処理を再開する.
RFend
図7.6にRFendの状態遷移図を示す.
SET1 SET2 SET3
FLIT0
FLIT2 AOTF
AOTFR
RVATLB miss-hit Suspended
state
Control packet
Unsupported packet IDLE
RVA CHK RVA
SET4
FLIT1
FLIT3
RVA CHK2
図7.6 RFendの状態遷移
RFendはネットワークからのパケットの到着により処理を開始する.まずパケットヘッダの解析
を行い(FLIT0–FLIT3),次にSIDを仮想アドレスに変換するアドレス変換を行う(RVACHKおよ びRVA).その後,ヘッダの解析結果や変換後のアドレスをRBendやReplierへ渡す(SET1–SET4). 受信したパケットがAOTFによる特殊なパケットであった場合,低遅延で受信するために別ステー トで処理を行う(AOTFおよびAOTFR).
なお,図中のRVACHK2は,RVATLBのリプレースメントを完了した後に,ハードウェア処理 を安全に再開できるよう新規に追加したステートである.
図の網がけのステートはサスペンダブルに設計されている.以下に,RFendにおけるサスペン デッドステートに遷移する直前のステートとそれに対応する処理の一例を示す.
FLIT1 ネットワーク制御用の特殊パケットが受信されたことを示す.オンチッププロセッサはパ
ケットに対応した処理を行い,その後,RFendのステートをIDLEに設定することで次のパ ケットの受信に備える.
FLIT3 ハードウェア処理できないパケットが受信されたことを示す.オンチッププロセッサはパ
ケットに対応するソフトウェア処理を行う.すなわちこれを利用することで,独自フォー マットのパケットを導入し,リモートでソフトウェア処理させることが可能となる.
RVA RVATLBでミスヒットが発生したことを示す.オンチッププロセッサは何らかの方法でRVATLB のミスヒットしたエントリをリプレースメントした上で,RFendのステートをRVACHK2に 設定し,ハードウェアによるパケット受信処理を再開する.