• 検索結果がありません。

Martini への乗っ取り機構の実装

第 7 章 Martini における乗っ取り機構の提案・

7.4 Martini への乗っ取り機構の実装

可能とすべきものであるが,Martiniでは実験的な目的ですべてのステートに対してブレークポイ ントを設定できる設計とした.当然,非サスペンダブルなステートに対してブレークポイントを 設定した場合,ソフトウェア処理後に停止状態から正常に処理を再開できない事態が生じる可能 性がある.

7.4.2 乗っ取り機構のモジュールへの実装の具体例

以下では,InitiatorとRFendを例に,Martiniへの乗っ取り機構の実装について述べる.

Initiator

図7.5Initiatorの状態遷移図を示す.

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であった場合は,WindowIDを用いてPGIDTBLを参照して対応するPGIDPID

を取得し(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.6RFendの状態遷移図を示す.

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に 設定し,ハードウェアによるパケット受信処理を再開する.