説明

トレース制御方法、トレース制御プログラムおよび装置

【課題】トレースメモリの同一シーケンスの埋め尽くしを防止し、インタフェース異常発生時のイベントやシーケンスとインタフェース異常に至るイベントやシーケンスを残すことを可能にする。
【解決手段】トレース制御部3が、シーケンスのLOOP(ループ)において、発生したイベントがLOOP可能シーケンスの先頭のイベントであるという条件、発生したイベントがLOOP可能シーケンスの先頭以外のイベントであるという条件を受け付ける。そして、トレース制御部3が、LOOP先頭のシーケンスをトレースメモリ4に登録する状態と、最初にLOOPしたシーケンスをトレースメモリ4に登録する状態と、最初にLOOPしたシーケンスがトレースメモリ4に登録されて以降は当該トレースメモリ4に継続してLOOPするシーケンスのイベント登録しない状態とを管理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、障害が発生したとき容易に正常異常を識別するためのトレース制御方法、トレース制御プログラムおよび装置に関する。
【背景技術】
【0002】
従来、ホストコンピュータ(以下、ホストPCという)と入出力インタフェースをとる入出力装置の入出力アダプタにあっては、ホストPCが多数の入出力処理要求を同時に受けたとき最優先の入出力装置以外の処理要求を一時的にスタックさせる必要がある。
このため、要求とスタックのシーケンスを暫く繰り替えしたり、入出力装置の都合で、ホストPCからの入出力処理要求のポーリグに対してビジー応答シーケンスを暫く繰り返したり、インタフェース障害のリカバリ手段として、同一のシーケンスを一定時間繰り返すなどを行っている。
【0003】
そこで、同一シーケンスを暫く繰り返すことによって生じるトレースメモリの同一シーケンスの上書きを防止して、繰り返しにかかわる原因と結果を判るようにすることにより、障害が発生した場合の障害解析時間の短縮を図り、故障時間の短縮を行うことが求められている。
【0004】
インタフェース障害やインタフェース制御に影響を及ぼす障害に対し、例えば、入出力装置にインタフェースアナライザを装着させれば、障害解析を行うことは可能である。
しかし、インタフェースアナライザ自体が高額な場合や、インタフェースアナライザの装着が顧客の業務運営に不都合な場合などが多く、入出力装置自身または入出力アダプタ自身が障害を容易に解析できるトレース手段を持つことが求められている。
【0005】
例えば、特許文献1は、トレースのLOOPパターンを蓄積して、同一LOOPパターンの場合には、LOOP終了時にパターンの一部を除いてトレースバッファに出力し、同一LOOPパターンが無い場合は、新規LOOPパターンとして蓄積し、LOOP終了時にトレースバッファに出力することにより、LOOP重複による無用なトレースバッファ使用を回避している。また、パターン管理を階層化することにより、メインルーチンLOOP中のサブルーチンCALL/RETURNによる階層化されたLOOP関係における無用なトレースバッファ使用を回避している。
【0006】
例えば、特許文献2は、トレース領域に格納されるトレース情報がシステム内に格納された特定のトレース情報パターンと一致した時に前記格納されたトレース情報を特定パターンのトレース情報として簡単な形式のトレース情報に変換してトレース領域に格納する。
また、システムからトレース領域に書き込まれるトレース情報を一時的に格納し、特定パターンのトレース情報であるパターン情報を予め格納し、トレース情報とトレース情報パターンとを比較して一致したとき一致を含むトレース情報を新たに作成して前記トレース領域へ書き込む。
【0007】
特許文献1,2において、トレースメモリとは別に、トレースフォーマット化した複数のイベント情報パターンを有し、LOOP終了後にまとめてトレースメモリに格納することは、インタフェース制御において突発する障害とLOOPとの時間関係を見極めたり、障害に至る流れを見極めるうえで、効果的ではないといった問題があった。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、上記に鑑みてなされたもので、その目的としては、トレースメモリの同一シーケンスの埋め尽くしを防止し、インタフェース異常発生時のイベントやシーケンスとインタフェース異常に至るイベントやシーケンスを残すことが可能なトレース制御方法、トレース制御プログラムおよび装置を提供することにある。
【課題を解決するための手段】
【0009】
請求項1に係る発明は、ポインタに従ってイベントを順次にトレースメモリに登録していくトレース制御方法において、連続する複数イベントよりなるシーケンスにあって、シーケンスのループが開始されてから終了に至るまでの間にある最初のシーケンスと最後のシーケンスとを前記トレースメモリに登録するステップを有することを特徴とするトレース制御方法である。
【0010】
請求項7に係る発明は、ポインタに従ってイベントを順次にトレースメモリに登録していくトレース制御装置において、連続する複数イベントよりなるシーケンスにあって、シーケンスのループが開始されてから終了に至るまでの間にある最初のシーケンスと最後のシーケンスとを前記トレースメモリに登録する手段を備えることを特徴とするトレース制御装置である。
【発明の効果】
【0011】
本発明によれば、ポインタに従ってイベントを順次にトレースメモリに登録していくトレース制御方法において、連続する複数イベントよりなるシーケンスにあって、シーケンスのループが開始されてから終了に至るまでの間にある最初のシーケンスと最後のシーケンスとをトレースメモリに登録することで、トレースメモリの同一シーケンスの埋め尽くしを防止し、インタフェース異常発生時のイベントやシーケンスとインタフェース異常に至るイベントやシーケンスを残すことを可能にすることができる。
【図面の簡単な説明】
【0012】
【図1】本発明の実施形態に係る入出力アダプタの構成を示す図である。
【図2】図1に示すトレースメモリの内容を示す図である。
【図3】図1に示すインタフェース制御部からの制御信号に基づいてシーケンスを進めるインタフェースにおいて、シーケンスを構成するイベントとシーケンスのLOOPの関係を示すタイミングチャートの一例である。
【図4】図1に示すインタフェース制御部からの制御フレームの送受信に基づいてシーケンスを進めるインタフェースにおいて、シーケンスを構成するイベントとシーケンスのLOOPの関係を示すタイミングチャートの一例である。
【図5】図1に示すインタフェース制御部からイベント発生の通知を受けたトレース制御部が行うトレース制御全体について示すフローチャートである。
【図6】図1に示すトレース制御部による、通常のシーケンスにおけるイベント登録処理を示すフローチャートである。
【図7】図1に示すトレース制御部による、LOOP可能なシーケンス内でイベント登録中の状態にあるイベント登録処理を示すフローチャートである。
【図8】図1に示すトレース制御部による、LOOPシーケンス内でイベント登録中の状態にあるイベント登録処理を示すフローチャートである。
【図9】図1に示すトレース制御部による、イベント登録のないLOOP中の状態におけるイベント処理を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態に係る入出力アダプタについて、図面を参照して具体的に説明する。
図1は、本発明の実施形態に係る入出力アダプタ1の構成を示す図である。
入出力アダプタ1は、インタフェース制御部2、トレース制御部3、トレースメモリ4、タイマ5を備えている。
インタフェース制御部2は、上位装置10とインタフェースを介して接続され、上位装置10と定められた制御信号もしくは制御フレームのシーケンスに基づいて、バスデータもしくはデータフレームをやり取りする。
【0014】
また、インタフェース制御部2は、前記シーケンスを進める上で発生する制御信号の変化や制御フレームの送受信などシーケンスを進める上で発生するイベントをトレースメモリに登録するようトレース制御部3に指示する。
また、インタフェース制御部2は、あるイベントから次のイベントまでの時間や、シーケンス開始からシーケンス終了までの時間など、インタフェースで規定されている時間の監視をタイマ部5を参照して行う。
【0015】
また、インタフェース制御部2は、イベントの条件が、LOOP(ループ)可能なシーケンスの先頭に来るのか、LOOP可能なシーケンスの先頭以外にくるのか、その他の条件であるのかを、トレース制御部3にイベント発生を通知するとき、併せて通知する。
【0016】
トレース制御部3は、インタフェース制御部2からの指示を受け付けて、トレースメモリ4に登録されているポインタやイベントを読み、ポインタを更新し、ポインタが示すトレース領域にインタフェース制御部2が持つイベントとタイマ5の時間情報(TODと略す)を登録する。
また、トレース制御部3は、インタフェース制御部2からイベントの条件が、LOOP可能なシーケンスの先頭に来るのか、LOOP可能なシーケンスの先頭以外にくるのか、その他の条件なのかを受け付けて、LOOP可能シーケンスのイベント登録中の状態、LOOPシーケンスのイベント登録中の状態、LOOPシーケンスのイベント処理中の状態、それ以外のLOOPに関係しない状態の何れの状態にあるかを管理する。
【0017】
トレースメモリ4は、トレース制御部3が読み書きを行うメモリであり、ポインタ情報とイベント及びTOD情報よりなる。
タイマ5は、イベントの発生時間を時系列的に識別できるTOD情報を有する。
【0018】
図2は、トレースメモリ4の詳細を示す図である。
ポインタ情報は、ポインタ21、LOOP開始ポインタ22、LOOP終了ポインタ23よりなる。説明の便宜上、特に説明がない限り、ポインタ21を「P」、LOOP開始ポインタ22を「LSP」、LOOP終了ポインタ23を「LEP」と略す。
【0019】
イベント及びTOD情報は、図2に示す例では1からnまである。一般にnは、数千から数10万の値である。
P=iの場合には、ポインタ21はイベントi+TODiのトレース領域TA(i)を示している。
LSP=iでLEP=i+3の場合には、トレース領域TA(i)、トレース領域TA(i+1)、トレース領域TA(i+2)の3イベントがLOOPしていることを示していて、LOOP先頭がトレース領域TA(i)、LOOP後端がトレース領域TA(i+2)、LOOPから抜け出たLOOP終了がトレース領域TA(i+3)であることを示す。
【0020】
インタフェース制御部2は、発生したイベントがLOOP可能であるシーケンスの先頭イベントの時、トレース制御部3に当該イベントがLOOP可能シーケンスの先頭イベント(条件1)であることを通知する。
また、インタフェース制御部2は、発生したイベントがLOOP可能であるシーケンスの先頭以外のイベント(条件2)の時、トレース制御部3に当該イベントがLOOP可能シーケンスの先頭以外のイベントであることを通知する。
【0021】
また、インタフェース制御部2は、発生したイベントがLOOP可能であるシーケンスの先頭イベント(条件1)でなく、且つ、発生したイベントがLOOP可能であるシーケンスの先頭以外のイベント(条件2)でもなければ、トレース制御部3にそのままイベントを通知する。即ち、条件の無いイベントは、LOOPの無いシーケンスにおけるイベント、又は、LOOPを抜けるイベントである。
【0022】
図3は、インタフェース制御部2が制御信号の変化に基づいてシーケンスを進める上で発生するイベントと、複数イベントによって形成されるシーケンスのLOOPを示すタイミングチャートの一例である。
ホストPC側の制御信号であるTAG(OTAGと略す)と入出力アダプタ側の制御信号であるTAG(ITAGと略す)が相互にON・OFFしながら、入出力アダプタ側が入出力アダプタ側のBUS(IBUSと略す)のデータをホストPC側に通知してスタックされることを繰り返している事例である。
【0023】
ITAG1のONから開始して、OTAG1がONになり、以降、次にITAG1がONするまで、ITAG1〜ITAG4のON/OFF、OTAG1とOTAG2のON/OFFが行われる。それぞれのON/OFF契機がイベントである。図3において、ITAG1のONから次にITAG1がONする直前までが1シーケンスである。
【0024】
図4は、インタフェース制御部2が制御フレームの制御ビットに基づいてのシーケンスを進める上で発生する、制御フレームの送受信を単位とするイベントと、複数イベントによって形成されるシーケンスのLOOPを示すタイミングチャートである。
ホストPCから入出力アダプタへの出力信号線(OSGNと略す)と入出力アダプタからホストPCへの入力信号線(ISGNと略す)で制御フレームを送受信する。図4は、入出力アダプタ側が制御フレーム内に設定したデータをホストPC側に送信しようとしてスタックされることを繰り返している事例である。
【0025】
図4において、ISGNからのデータ送信に対し、ホストPC側のOSGNよりスタックを受信し、ISGNからの応答フレームを送信するまでが1シーケンスである。
【0026】
図5は、トレース制御部3がインタフェース制御部2からイベント発生の通知を受けた時に行うトレース制御の全体について示すフローチャートの一例である。
ステップS1では、LOOP可能シーケンス内のイベントを登録している状態の場合にステップS5に進み、LOOP可能シーケンス内のイベントを登録している状態でない場合にステップS2に進む。
【0027】
ステップS2では、LOOPシーケンス内のイベントを登録している状態の場合にステップS6に進み、LOOPシーケンス内のイベントを登録している状態でない場合にステップS3に進む。
ステップS3では、イベントの登録をしないでLOOPしている状態の場合にステップS7に進み、イベントの登録をしないでLOOPしている状態でない場合にステップS4に進む。
ステップS4では、図6に示す「通常シーケンス登録」をCALLして終了する。
【0028】
ステップS5では、図7に示す「LOOP可能シーケンス登録」をCALLして終了する。
ステップS6では、図8に示す「LOOPシーケンス登録」をCALLして終了する。
ステップS7では、図9に示す「LOOP処理」をCALLして終了する。
以上により、シーケンスのLOOPにおいて、LOOP先頭のシーケンスをトレースメモリに登録する状態と、最初にLOOPしたシーケンスをトレースメモリに登録する状態と、最初にLOOPしたシーケンスがトレースメモリに登録されて以降は継続してLOOPするシーケンスを登録しない状態とを管理することが可能である。
【0029】
図6は、LOOP可能なシーケンス内のイベント登録中、LOOPシーケンス内のイベント登録中、イベントの登録をしないでLOOP中の何れでもない状態、即ち、通常のシーケンスにおけるイベント登録のフローチャートである。
【0030】
ステップS11では、発生イベントがLOOP可能シーケンスの先頭イベントであることをインタフェース制御部2が通知している場合にステップS13に進み、発生イベントがLOOP可能シーケンスの先頭イベントでないことをインタフェース制御部2が通知している場合にステップS12に進む。
ステップS12では、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、ポインタを次の登録領域であるP+1に更新して終了する。
ステップS13では、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、ポインタを次の登録領域であるP+1に更新し、LOOP可能シーケンス登録状態にして終了する。
【0031】
図7は、LOOP可能なシーケンス内でイベント登録中の状態におけるイベント登録のフローチャートである。
ステップS21では、発生イベントがLOOP可能シーケンスの先頭イベントであることをインタフェース制御部2が通知している場合にステップS23に進み、発生イベントがLOOP可能シーケンスの先頭イベントでないことをインタフェース制御部2が通知している場合にステップS22に進む。
【0032】
ステップS22では、発生イベントがLOOP可能シーケンス内の先頭以外のイベントであることをインタフェース制御部2が通知している場合にステップS24に進み、発生イベントがLOOP可能シーケンスの先頭以外のイベントでないことをインタフェース制御部2が通知している場合にステップS25に進む。
【0033】
ステップS23では、LOOP可能なシーケンス内でイベント登録中の状態を解除し、LOOPシーケンス内のイベント登録中の状態にし、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、ポインタを次の登録領域であるP+1に更新し、LOOP開始ポインタ22にポインタ21の内容を入力して終了する。
【0034】
ステップS24では、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、ポインタを次の登録領域であるP+1に更新して終了する。
【0035】
ステップS25では、LOOP可能なシーケンス内でイベント登録中の状態を解除し、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、ポインタを次の登録領域であるP+1に更新して終了する。
【0036】
図8は、LOOPシーケンス内でイベント登録中の状態にあるイベント登録のフローチャートである。
ステップS31では、発生イベントがLOOP可能シーケンスの先頭イベントであることをインタフェース制御部2が通知している場合にステップS33に進み、発生イベントがLOOP可能シーケンスの先頭イベントでないことをインタフェース制御部2が通知している場合にステップS32に進む。
【0037】
ステップS32では、発生イベントがLOOP可能シーケンス内の先頭以外のイベントであることをインタフェース制御部2が通知している場合にステップS34に進み、発生イベントがLOOP可能シーケンスの先頭以外のイベントでないことをインタフェース制御部2が通知している場合にステップS35に進む。
【0038】
ステップS33では、LOOPシーケンス内でイベント登録中の状態を解除し、イベント登録のないLOOP中の状態にし、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、LOOP終了ポインタ23にポインタ21の内容Pに対して次の登録領域であるP+1を入力し、ポインタ21にLOOP開始ポインタ22の内容を入力して終了する。
【0039】
ステップS34では、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、ポインタを次の登録領域であるP+1に更新して終了する。
【0040】
ステップS35では、LOOPシーケンス内でイベント登録中の状態を解除し、ポインタ21が示す登録領域であるTA(P)にイベントとTODを登録し、ポインタを次の登録領域であるP+1に更新して終了する。
以上により、ポインタに従ってイベントを順次トレースメモリに登録していくトレース制御において、連続する複数イベントよりなるシーケンスのLOOP開始からLOOP終了までの中の最初のシーケンスと最後のシーケンスをトレース領域に登録することができる。
【0041】
図9は、イベント登録のないLOOP中の状態におけるイベント処理に関するフローチャートである。
ステップS41では、発生イベントがLOOP可能シーケンスの先頭イベントであることをインタフェース制御部2が通知している場合にステップS42に進み、発生イベントがLOOP可能シーケンスの先頭イベントでないことをインタフェース制御部2が通知している場合にステップS44に進む。
【0042】
ステップS42では、発生イベントがLOOP開始ポインタ22の示す登録領域TA(LSP)のイベントに等しければステップS43に進み、TA(LSP)のイベントに等しくなければステップS47に進む。
ステップS43では、LOOP開始ポインタ22の示す登録領域に、発生イベントは入力せずTODだけ入力し、ポインタ21にLOOP開始ポインタ22の内容を入力して終了する。
【0043】
ステップS44では、発生イベントがLOOP可能シーケンスの先頭以外のイベントであることをインタフェース制御部2が通知している場合にステップS45に進み、発生イベントがLOOP可能シーケンスの先頭以外のイベントでないことをインタフェース制御部2が通知している場合にステップS47に進む。
ステップS45では、発生イベントがポインタ21の示す登録領域TA(P)のイベントに等しければステップS46に進み、TA(P)のイベントに等しくなければステップS47に進む。
【0044】
ステップS46では、LOOP開始ポインタ22の示す登録領域に、発生イベントは入力せずTODだけ入力し、ポインタ21の内容を次の登録領域P+1に更新して終了する。
以上により、シーケンスのLOOPにおいて、発生したイベントがLOOP可能シーケンスの先頭のイベントであるという条件、発生したイベントがLOOP可能シーケンスの先頭以外のイベントであるという条件を受けて、LOOP先頭のシーケンスとLOOP最後のシーケンスだけをトレースメモリに登録することが可能である。
【0045】
また、以上により、ポインタに従ってイベントとタイマ情報を順次トレースメモリに登録していくトレース制御において、最初にLOOPしたシーケンスがトレースメモリに登録されて以降、継続してシーケンスのLOOPが発生していても、LOOP内ポインタの示す登録済みのイベントを上書きしないで、登録済みのタイマ情報の上に新たなタイマ情報を上書きすることが可能である。
【0046】
ステップS47では、イベント登録のないLOOP中の状態を解除し、LOOP終了ポインタ23の示す登録領域に、発生イベントとTODを入力し、ポインタ21にLOOP終了ポインタ23の次の登録領域LEP+1を入力して終了する。
以上により、シーケンスのLOOPにおける前記最後のシーケンスのイベント登録中、LOOP内ポインタの示す登録済みのイベントと新たに登録対象となったイベントが一致した場合、新たな登録対象のイベントを登録せず、不一致の場合、最後に登録されたシーケンスの次にくるイベント登録領域に当該イベントを登録していくことが可能である。
【0047】
本発明の実施形態によれば、シーケンスのLOOPにおいて、発生したイベントがLOOP可能シーケンスの先頭のイベントであるという条件、発生したイベントがLOOP可能シーケンスの先頭以外のイベントであるという条件を受ける。そして、これらの条件を受けて、LOOP先頭のシーケンスをトレースメモリに登録する状態と、最初にLOOPしたシーケンスをトレースメモリに登録する状態と、最初にLOOPしたシーケンスがトレースメモリに登録されて以降は当該トレースメモリに継続してLOOPするシーケンスのイベント登録しない状態とを管理する。
【0048】
これにより、連続する複数イベントよりなるシーケンスのうち、シーケンスのLOOPが開始されてから終了に至るまでの間にある最初のシーケンスと最後のシーケンスだけをトレース領域に登録して、トレースメモリの同一シーケンスの埋め尽くしを防止し、インタフェース異常発生時のイベントやシーケンスとインタフェース異常に至るイベントやシーケンスを残すことが可能である。
【符号の説明】
【0049】
1 入出力アダプタ
2 インタフェース制御部
3 トレース制御部
4 トレースメモリ
5 タイマ
6 出力部
10 上位装置
21 ポインタ
22 LOOP開始ポインタ
23 LOOP終了ポインタ
24 イベント領域
25 TOD領域
【先行技術文献】
【特許文献】
【0050】
【特許文献1】特開2010−79343号公報
【特許文献2】特許第3498702号公報

【特許請求の範囲】
【請求項1】
ポインタに従ってイベントを順次トレースメモリに登録していくトレース制御方法において、
連続する複数イベントよりなるシーケンスにあって、シーケンスのループが開始されてから終了に至るまでの間にある最初のシーケンスと最後のシーケンスとを前記トレースメモリに登録するステップを有することを特徴とするトレース制御方法。
【請求項2】
シーケンスのループにおける前記最後のシーケンスのイベント登録中、ループ内ポインタの示す登録済みのイベントと新たに登録対象となったイベントが一致した場合は、新たな登録対象のイベントを登録せず、不一致の場合は前記最後のシーケンスの次にくるイベント登録領域に当該イベントを登録するステップをさらに有することを特徴とする請求項1に記載のトレース制御方法。
【請求項3】
シーケンスのループにおいて、発生したイベントがループ可能シーケンスの先頭のイベントである条件と、発生したイベントがループ可能シーケンスの先頭以外のイベントである条件と、前記2つの条件に該当にない条件とを判定するステップをさらに有し、
前記判定するステップにより、ループ先頭のシーケンスとループ最後のシーケンスだけを前記トレースメモリに登録することを特徴とする請求項1又は2に記載のトレース制御方法。
【請求項4】
シーケンスのループにおいて、ループ先頭のシーケンスを前記トレースメモリに登録する状態と、最初にループしたシーケンスを前記トレースメモリに登録する状態と、最初にループしたシーケンスが前記トレースメモリに登録されて以降は継続してループするシーケンスを登録しない状態とを管理するステップをさらに有することを特徴とする請求項3に記載のトレース制御方法。
【請求項5】
ポインタに従ってイベントとタイマ情報を順次に前記トレースメモリに登録していくトレース制御において、最初にループしたシーケンスが前記トレースメモリに登録されて以降、当該トレースメモリに継続してシーケンスのループがある場合に、ループ内ポインタの示す登録済みのタイマ情報に新たなタイマ情報を登録するステップをさらに有することを特徴とする請求項3に記載のトレース制御方法。
【請求項6】
請求項1乃至5の何れか1つに記載のトレース制御方法をコンピュータに実行させるためのトレース制御プログラム。
【請求項7】
ポインタに従ってイベントを順次にトレースメモリに登録していくトレース制御装置において、
連続する複数イベントよりなるシーケンスにあって、シーケンスのループが開始されてから終了に至るまでの間にある最初のシーケンスと最後のシーケンスとを前記トレースメモリに登録する手段を備えることを特徴とするトレース制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−238255(P2012−238255A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2011−107979(P2011−107979)
【出願日】平成23年5月13日(2011.5.13)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】