"多気筒内燃機関の各気筒に対しそれぞれEGRガスを分配供給する気筒別EGRを実行可能なEGR手段と、ノッキング度合いを表すノック指標値を気筒毎に検出するノック検出手段と、前記EGR手段による気筒別EGRの実行中に気筒間空燃比のばらつき異常の有無を判断すると共に、ばらつき異常有りと判断したときに異常気筒を特定し、且つ当該異常気筒についてばらつき度合いを表すインバランス指標値を算出する異常検出手段と、前記異常気筒の前記ノック指標値と前記インバランス指標値に基づき、前記異常気筒の異常箇所を特定する異常箇所特定手段と、を備えたことを特徴とする内燃機関の診断装置。前記異常箇所特定手段は、燃料系、空気系およびEGR系のいずれかを異常箇所として特定することを特徴とする請求項1に記載の内燃機関の診断装置。前記異常検出手段は、ばらつき異常有りと判断したとき、当該ばらつき異常がリーンずれ異常かリッチずれ異常かを判断し、前記異常箇所特定手段は、前記異常検出手段によりリーンずれ異常と判断されたとき、燃料系およびEGR系のいずれかを異常箇所として特定することを特徴とする請求項1または2に記載の内燃機関の診断装置。前記異常箇所特定手段は、前記異常気筒の異常発生前のノック指標値と、異常発生後のノック指標値との差を所定の第1しきい値と比較し、この比較結果に応じて燃料系およびEGR系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第1しきい値を可変設定することを特徴とする請求項3に記載の内燃機関の診断装置。前記異常箇所特定手段は、前記異常気筒の異常発生後のノック指標値を所定の第2しきい値と比較し、この比較結果に応じて燃料系およびEGR系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第2しきい値を可変設定することを特徴とする請求項3に記載の内燃機関の診断装置。前記異常検出手段は、ばらつき異常有りと判断したとき、当該ばらつき異常がリーンずれ異常かリッチずれ異常かを判断し、前記異常箇所特定手段は、前記異常検出手段によりリッチずれ異常と判断されたとき、燃料系および空気系のいずれかを異常箇所として特定することを特徴とする請求項1~5のいずれか一項に記載の内燃機関の診断装置。前記異常箇所特定手段は、前記異常気筒の異常発生前のノック指標値と、異常発生後のノック指標値との差を所定の第3しきい値と比較し、この比較結果に応じて空気系および燃料系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第3しきい値を可変設定することを特徴とする請求項6に記載の内燃機関の診断装置。前記異常箇所特定手段は、前記異常気筒の異常発生後のノック指標値を所定の第4しきい値と比較し、この比較結果に応じて空気系および燃料系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第4しきい値を可変設定することを特徴とする請求項6に記載の内燃機関の診断装置。ところで、気筒間空燃比ばらつき異常が発生した場合、その異常原因としては、異常気筒の分岐EGR通路の閉塞すなわちEGR系異常のほか、インジェクタの故障などの燃料系異常、あるいは分岐吸気通路の閉塞すなわち空気系異常も考えられる。診断に際しては、これら異常原因ないしは異常箇所を特定できる方が便利である。後の迅速な修理等に資するからである。そこで本発明の目的は、気筒間空燃比ばらつき異常が発生した場合に異常箇所を特定することが可能な内燃機関の診断装置を提供することにある。本発明の一の態様によれば、多気筒内燃機関の各気筒に対しそれぞれEGRガスを分配供給する気筒別EGRを実行可能なEGR手段と、ノッキング度合いを表すノック指標値を気筒毎に検出するノック検出手段と、前記EGR手段による気筒別EGRの実行中に気筒間空燃比のばらつき異常の有無を判断すると共に、ばらつき異常有りと判断したときに異常気筒を特定し、且つ当該異常気筒についてばらつき度合いを表すインバランス指標値を算出する異常検出手段と、前記異常気筒の前記ノック指標値と前記インバランス指標値に基づき、前記異常気筒の異常箇所を特定する異常箇所特定手段と、を備えたことを特徴とする内燃機関の診断装置が提供される。好ましくは、前記異常箇所特定手段は、燃料系、空気系およびEGR系のいずれかを異常箇所として特定する。好ましくは、前記異常検出手段は、ばらつき異常有りと判断したとき、当該ばらつき異常がリーンずれ異常かリッチずれ異常かを判断し、前記異常箇所特定手段は、前記異常検出手段によりリーンずれ異常と判断されたとき、燃料系およびEGR系のいずれかを異常箇所として特定する。好ましくは、前記異常箇所特定手段は、前記異常気筒の異常発生前のノック指標値と、異常発生後のノック指標値との差を所定の第1しきい値と比較し、この比較結果に応じて燃料系およびEGR系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第1しきい値を可変設定する。好ましくは、前記異常箇所特定手段は、前記異常気筒の異常発生後のノック指標値を所定の第2しきい値と比較し、この比較結果に応じて燃料系およびEGR系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第2しきい値を可変設定する。好ましくは、前記異常検出手段は、ばらつき異常有りと判断したとき、当該ばらつき異常がリーンずれ異常かリッチずれ異常かを判断し、前記異常箇所特定手段は、前記異常検出手段によりリッチずれ異常と判断されたとき、燃料系および空気系のいずれかを異常箇所として特定する。好ましくは、前記異常箇所特定手段は、前記異常気筒の異常発生前のノック指標値と、異常発生後のノック指標値との差を所定の第3しきい値と比較し、この比較結果に応じて空気系および燃料系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第3しきい値を可変設定する。好ましくは、前記異常箇所特定手段は、前記異常気筒の異常発生後のノック指標値を所定の第4しきい値と比較し、この比較結果に応じて空気系および燃料系のいずれかを異常箇所として特定し、且つ、前記異常検出手段により算出されたインバランス指標値に基づき前記第4しきい値を可変設定する。本発明によれば、気筒間空燃比ばらつき異常が発生した場合に異常箇所を特定することができるという、優れた効果が発揮される。以下、本発明の実施形態を添付図面に基づき説明する。図1に本実施形態に係る内燃機関を概略的に示す。図示される内燃機関エンジン1は自動車用の直列4気筒火花点火式内燃機関である。エンジン1は1,2,3,4の4つの気筒を含む。但しエンジンの形式、用途、気筒数等に特に制限はない。各気筒に、燃料を噴射するためのインジェクタ燃料噴射弁2が設けられている。インジェクタ2は、対応気筒の吸気通路特に吸気ポート図示せず内に向けて燃料を噴射する。吸気を導入するための吸気通路7は、前記吸気ポートの他、集合部としてのサージタンク8と、各気筒の吸気ポートおよびサージタンク8を結ぶ複数4つの吸気マニホールド9と、サージタンク8の上流側の吸気管10とを含む。各気筒の吸気マニホールド9および吸気ポートがそれぞれ分岐吸気通路をなす。サージタンク8に集合された吸気は分岐吸気通路を介して各気筒に分配される。吸気管10には、上流側から順にエアフローメータ11と電子制御式スロットルバルブ12と吸気圧センサ25とが設けられている。エアフローメータ11は吸気流量に応じた信号を出力する。吸気圧センサ25は吸気圧に応じた信号を出力する。各気筒には、筒内の混合気に点火するための点火プラグ13が設けられる。排気ガスを排出するための排気通路14は、各気筒の排気ポート図示せずと、これら排気ポートの排気ガスを集合させる排気マニホールド16と、排気マニホールド16の下流側に設置された排気管17とを含む。そして排気管17にはそれぞれ三元触媒からなる上流触媒18と下流触媒19が設けられている。上流触媒18の上流側及び下流側直前及び直後にそれぞれ排気ガスの空燃比を検出するための空燃比センサ、即ち触媒前センサ20及び触媒後センサ21が設置されている。これらセンサは排気ガスの酸素濃度に基づいて空燃比を検出する。エンジン1にはEGR装置30が設けられる。EGR装置30は、排気通路17から取り出した排気ガスであるEGRガスを各気筒に対しそれぞれ分配供給する気筒別EGRを実行可能なものである。EGR装置30は、排気管17と各気筒の吸気マニホールド9を結ぶEGR通路31を有する。EGR通路31は、排気管17から延びるメインEGR通路32と、メインEGR通路32から分岐して各気筒の吸気マニホールド9に接続する複数4つの分岐EGR通路33とを有する。EGRガス流れ方向最上流側に位置する1気筒用分岐EGR通路33の上流側のメインEGR通路32に、EGRガス流量を調節するためのEGRバルブ34が設けられる。なおメインEGR通路32にEGRクーラを設けてもよい。エンジン1には制御手段としての電子制御ユニット以下ECUと称す100が設けられている。ECU100は、何れも図示されないCPU、ROM、RAM、入出力ポート、および記憶装置等を含むものである。ECU100には、前述のエアフローメータ11、吸気圧センサ25、触媒前センサ20、触媒後センサ21のほか、エンジン1のクランク角を検出するクランク角センサ22、エンジン1のノッキングを検出するためのノックセンサ26、アクセル開度を検出するアクセル開度センサ23、エンジン冷却水の温度を検出する水温センサ24、その他の各種センサが図示されないA/D変換器等を介して電気的に接続されている。ECU100は、各種センサの検出値等に基づき、所望の出力が得られるように、インジェクタ2、点火プラグ13、スロットルバルブ12、EGRバルブ34等を制御し、燃料噴射量、燃料噴射時期、点火時期、スロットル開度、EGR率またはEGRガス流量等を制御する。なおスロットル開度は通常アクセル開度に応じた開度に制御される。ECU100は、クランク角センサ22からのクランクパルス信号に基づき、クランク角自体を検出すると共にエンジン1の回転数を検出する。ここで回転数とは単位時間当たりの回転数のことをいい、回転速度と同義である。本実施形態では1分間当たりの回転数rpmのことをいう。またECU100は、エアフローメータ11からの信号に基づき、単位時間当たりの吸入空気の量すなわち吸入空気量を検出する。そしてECU100は、検出した吸入空気量およびアクセル開度の少なくとも一方に基づき、エンジン1の負荷を検出する。触媒前センサ20は所謂広域空燃比センサからなり、比較的広範囲に亘る空燃比を連続的に検出可能である。図2に触媒前センサ20の出力特性を示す。図示するように、触媒前センサ20は、検出した排気空燃比触媒前空燃比A/Ffに比例した大きさの電圧信号Vfを出力する。排気空燃比がストイキ理論空燃比、例えばA/F=14.5であるときの出力電圧はVreff例えば約3.3Vである。他方、触媒後センサ21は所謂O2センサからなり、ストイキを境に出力値が急変する特性を持つ。図2に触媒後センサ21の出力特性を示す。図示するように、排気空燃比触媒後空燃比A/Frがストイキであるときの出力電圧、すなわちストイキ相当値はVrefr例えば0.45Vである。触媒後センサ21の出力電圧は所定の範囲例えば0~1V内で変化する。排気空燃比がストイキよりリーンのとき、触媒後センサの出力電圧はストイキ相当値Vrefrより低くなり、排気空燃比がストイキよりリッチのとき、触媒後センサの出力電圧はストイキ相当値Vrefrより高くなる。上流触媒18及び下流触媒19は、それぞれに流入する排気ガスの空燃比A/Fがストイキ近傍のときに排気中の有害成分であるNOx、HCおよびCOを同時に浄化する。この三者を同時に高効率で浄化できる空燃比の幅ウィンドウは比較的狭い。そこで、上流触媒18に流入する排気ガスの空燃比をストイキ近傍に制御するための空燃比制御ストイキ制御がECU100により実行される。この空燃比制御は、触媒前センサ20によって検出された排気空燃比を所定の目標空燃比であるストイキに一致させるような主空燃比制御主空燃比フィードバック制御と、触媒後センサ21によって検出された排気空燃比をストイキに一致させるような補助空燃比制御補助空燃比フィードバック制御とからなる。またEGR制御がECU100によって実行される。ECU100は、検出した実際のエンジンパラメータ例えば回転数と負荷に基づき、図3に示すようなマップを参照して、EGRの実行可否を判断する。検出した実際のエンジンパラメータがEGR実行領域Iにあるとき、ECU100はEGRを実行すべきと判断し、EGRバルブ34を開弁する。するとEGRガスがメインEGR通路32および分岐EGR通路33を通じて各気筒の吸気マニホールド9に分配供給される。他方、実際のエンジンパラメータがEGR非実行領域IIにあるとき、ECU100はEGRを実行すべきでないと判断し、EGRバルブ34を全閉とする。EGRを実行すべきと判断したとき、ECU100は、エンジンパラメータおよび目標EGR率の関係を予め定めた図示の如きマップに従い、目標EGR率を決定する。そしてこの決定した目標EGR率に実際のEGR率が等しくなるように、EGRバルブ34の開度を制御する。これにより実際のエンジンパラメータの値に適したEGR率ないしEGR流量を実現することができる。他方、点火時期制御がECU100によって実行される。ECU100は、図4に示すように、EGR非実行時には全気筒の点火時期をθ1に制御し、EGR実行時には全気筒の点火時期を、θ1より進角側のθ2に制御する。これによりEGRが非実行無しの状態から実行有りの状態に変化すると、点火時期は全気筒一律にθ1-θ2だけ進角される。ECU100は点火時期を気筒毎に変更可能である。但しここで述べたEGRの有無に応じた進角遅角制御は全気筒一律に行う。ECU100は、併せて、ノックセンサ26の信号に基づきノック制御を行う。このノック制御は、エンジン個体や運転条件毎に異なるMBT最大トルク点火時期に実際の点火時期を近づける制御である。さて、このような気筒別EGRを行うエンジン1においては、いずれかの気筒特にいずれか1気筒の分岐EGR通路33にデポジット等が堆積し、当該通路が閉塞するあるいは詰まることがある。かかる閉塞異常が発生すると、EGRガス量が気筒間でばらつき、これに起因して空燃比が気筒間でばらつき、排気エミッションが悪化する虞がある。すなわち、閉塞異常が発生している異常気筒のEGRガス量は、他の正常気筒のEGRガス量より相対的に少なくなる。すると異常気筒においてはEGRガス量が少なくなった分新気の量が増し、その空燃比が正常気筒の空燃比よりリーンとなる。これにより気筒間の空燃比ばらつきが発生する。よって本実施形態では、排気エミッションが悪化した車両の走行を未然に防止するため、気筒間空燃比ばらつき異常を検出する診断装置が具備されている。一方、かかる気筒間空燃比ばらつき異常が発生した場合、その異常原因としては、異常気筒の分岐EGR通路33の閉塞すなわちEGR系異常のほか、インジェクタ13の故障などの燃料系異常、あるいは分岐吸気通路吸気マニホールド9または吸気ポートの閉塞すなわち空気系異常も考えられる。診断に際しては、これら異常原因ないしは異常箇所を特定できる方が便利である。後の迅速な修理等に資するからである。そこで本実施形態の診断装置は、かかる異常原因ないしは異常箇所を特定し得るように構成されている。以下この点につき詳述する。まずECU100は、ノックセンサ26の出力に基づき、ノッキング度合いを表すノック指標値Kを気筒毎に検出する。ノック指標値Kはノック強度またはノック頻度とすることができ、ノッキング度合いが大きいほどノック指標値Kの値は大きくなる。図5において、Aは回転数Neと負荷KLで規定されるエンジン運転領域を示す。またB、Cはノックセンサ26の出力信号を示す。図5B、Cに示すように、ノックセンサ26は、ノッキング特有の周波数域のシリンダブロックの振動を電気信号に変換して出力する振動ピックアップとして構成されている。ECU100は、各気筒の燃焼過程に設定されたゲート期間tg例えばTDCから90°CAまでの期間内のノックセンサ26の出力信号に基づき、ノック指標値Kを検出する。ここで各気筒の点火順序は1,3,4,2気筒の順である。図5Aにおいて、線aは最大負荷ライン所謂WOTラインを表す。そして全運転領域中、ハッチングが施されている領域bがノッキングが起きやすいノック領域である。このノック領域は低回転且つ高負荷側の領域である。図5Aのプロットcで示されるような著しい高負荷時であると、図5Bに示すように、程度の違いこそあれ、全気筒でノッキングが起きるようになる。ノック指標値Kをノック強度とした場合、ノック指標値Kは、ゲート期間tg内におけるノックセンサ出力信号の最大ピークとバックグラウンドレベルとの差ΔVとなる。ノッキング度合いが大きいほどこの差ΔVが大きくなる。図示例では4気筒において顕著なノッキングが発生している。差ΔVが所定のしきい値ΔVsより大きい場合にノッキング有り、差ΔVがしきい値ΔVs以下の場合にノッキング無しと判定することができる。これに対し、図5Aのプロットdで示されるようにより低負荷側であると、図5Cに示すように、ノッキングが起きやすい4気筒でのみノッキングが起きるようになる。この場合、差ΔVは、4気筒のみで大きくなるが、その大きさは図5Bの場合と比較して小さい。このように回転数Neと負荷KLによりノック強度が異なるので、しきい値ΔVsは、回転数Neと負荷KLに応じて所定のマップ関数でもよい。以下同様により定められる。回転数Neが低いほど、また負荷KLが高いほど、しきい値ΔVsは大きくなる。この場合にも、差ΔVがしきい値ΔVsより大きい場合にノッキング有り、差ΔVがしきい値ΔVs以下の場合にノッキング無しと判定することができる。本実施形態では、1エンジンサイクル=720°CA内における各気筒のノック強度、または複数のエンジンサイクル内における各気筒のノック強度の平均値を、各気筒のノック指標値Kとする。代替的に、ノック指標値Kをノック頻度とすることもできる。この場合、複数のエンジンサイクル内において差ΔVがしきい値ΔVsを超える回数を気筒毎にカウントする。そしてこの回数をエンジンサイクルの数で除して各気筒のノック頻度とする。例えば4気筒において、5エンジンサイクル中、差ΔVがしきい値ΔVsを4回超えた場合、4気筒のノック頻度は4/5=80である。なお、ノック指標値Kはこれらノック強度およびノック頻度に限られない。またノック強度およびノック頻度を上述と違う方法で求めてもよい。必要に応じてノックセンサ出力信号に対し周波数解析等を行ってもよい。次に、本実施形態においてECU100は、EGR装置30による気筒別EGRの実行中に気筒間空燃比のばらつき異常の有無を判断する。そしてECU100は、ばらつき異常有りと判断したとき、異常気筒を特定すると共に、異常気筒についてばらつき度合いを表すインバランス指標値を算出する。気筒間空燃比のばらつき異常とは、全気筒のうちの一部の気筒特に1気筒の空燃比が残部の気筒の空燃比と相違し、気筒間において空燃比のばらつきインバランス:imbalanceが発生することをいう。例えば1気筒の空燃比が他の2、3、4気筒の空燃比よりもリーン側にずれる場合等である。ストイキ制御の実行中には原則として各気筒の空燃比がストイキである。しかし、例えば1気筒のインジェクタ2に噴孔詰まりや開弁不良等の異常が発生すると、1気筒が燃料過少となり、上記のような空燃比ずれ異常特にリーンずれ異常が発生する。本実施形態では、触媒前センサ20の出力に基づき各気筒の空燃比A/Fを個別に検出するようになっている。各気筒から排出された排気ガスは時間遅れを伴って次々と触媒前センサ17に接触し、これに応答して触媒前センサ17の検出空燃比も、各気筒の排気ガスの空燃比に対応した値に変化する。図6はこのような触媒前センサ20の検出空燃比Zの変化を示す。ECU100は、検出空燃比がどの気筒の排気ガスに対応する値かを自身の気筒判別機能および吸入空気量Ga等により常時把握している。そして1エンジンサイクル内に、ストイキから大きくすなわち所定値以上ずれた検出空燃比があった場合、空燃比ずれ異常が発生したと判断する。逆にストイキから大きくずれた検出空燃比がない場合、空燃比ずれ異常は発生してないと判断する。こうしてECU100はばらつき異常あるいは空燃比ずれ異常の有無を判定する。なおここでの所定値は例えばストイキ空燃比に対し30相当の値4.35とすることができる。図示例の実線は3気筒にリッチずれ異常が発生した場合を示す。また図示例の破線は3気筒にリーンずれ異常が発生した場合を示す。ECU100は、ばらつき異常有りと判定したとき、検出空燃比Zがストイキから所定値以上ずれた気筒図示例では3気筒を異常気筒と特定する。そしてこの異常気筒について、ばらつき度合いあるいはずれ度合いを表すインバランス指標値を算出する。ECU100は、異常気筒の検出空燃比ZのピークZpとストイキ14.5との差である空燃比差ΔZ=14.5-Zpを算出し、この空燃比差ΔZをインバランス指標値IBとする。空燃比差ΔZがプラス側に大きいほど異常気筒のリッチずれ度合いが大きく、空燃比差ΔZがマイナス側に大きいほど異常気筒のリーンずれ度合いが大きい。なお、気筒毎の空燃比検出方法、ばらつき異常検出方法、異常気筒特定方法およびインバランス指標値算出方法は上述以外の方法も可能である。たとえば、気筒毎の空燃比検出方法については気筒毎に設置した空燃比センサの出力を利用してもよい。ばらつき異常検出方法については、気筒毎の回転変動を利用する方法や、触媒後センサ21の出力を利用する方法なども可能である。異常気筒特定方法については、各気筒順番に燃料噴射量を強制増量または減量する方法も可能である。インバランス指標値算出方法については、気筒毎に設置した空燃比センサの出力を利用する方法が可能である。次に、ECU100は、異常気筒のノック指標値Kとインバランス指標値IBに基づき、異常気筒の異常箇所を特定する。以下この点につき説明する。図7にはノック指標値Kとインバランス指標値IBの関係を線a,b,cで示す。ここでIB=0はストイキ空燃比に対応し、IB<0はリーン空燃比に対応し、IB>0はリッチ空燃比に対応する。線aは、EGR量が回転数と負荷に応じた正常な基準量である場合を示す。これに対し、線bは線aよりEGR量が少ない場合を示し、線cは線aよりEGR量が多い場合を示す。図示するように、ノック指標値Kは、ストイキ空燃比近傍で最大となり、ストイキ空燃比からリーン側にずれてもリッチ側にずれても減少する傾向にある。点dは、特定の1気筒特定気筒の空燃比が正常なストイキであり、且つEGR量が正常な基準量である場合を示す。この状態は、特定気筒において正常にストイキ制御およびEGR制御が実行されている場合に実現される。これに対し、リーンずれ異常が発生した場合、この異常の原因は燃料噴射量の減少とEGR量の減少とが考えられる。これらが変化せずに吸入空気量が1気筒だけ増えることは通常考えられないからである。前者に関しては特定気筒のインジェクタ2の噴孔詰まりや開弁不良、燃料供給不良等が考えられる。また後者に関して、EGR量の減少分だけ吸入空気量が増大し、リーンずれ異常が発生したと考えられる。このEGR量の減少は、特定気筒の分岐EGR通路33のデポジット等による閉塞によると考えられる。そこでリーンずれ異常が検出された場合、燃料系とEGR系のいずれかを異常箇所として特定する。ここで、燃料系異常の場合、点dは、同一の線a上の点eに移動する。他方、EGR系異常の場合、点dは、より小EGR側の線b上の点fに移動する。すなわち図中の各線a~cは、吸入空気量およびEGR量の双方とも変わらず燃料噴射量のみが変化した場合の線である。そこでこの違いを利用して異常箇所を一箇所に特定する。すなわち、燃料系異常の場合には正常時の点dから異常時の点eまでのノック指標値Kの低下量が比較的大きい。しかしながら、EGR系異常の場合には正常時の点dから異常時の点fまでのノック指標値Kの低下量が比較的小さいかまたは低下しない。よって、異常発生前のインバランス指標値IB=0に対応したノック指標値K0と、異常発生後のインバランス指標値IB1に対応したノック指標値K1との差ΔK1=K0-K1を所定の第1しきい値α1と比較する。差ΔK1が第1しきい値α1より大きいときには燃料系を異常箇所として特定し、差ΔK1が第1しきい値α1以下のときにはEGR系を異常箇所として特定する。ここで特に、第1しきい値α1は、異常発生後のインバランス指標値IB1に基づき可変設定される。インバランス指標値IB1がマイナス側リーン側に大きくなるほど第1しきい値α1は大きくなる。この理由は、図7に示すように、インバランス指標値IB1がマイナス側リーン側に大きくなるほど、正常時の点dから異常時の点eまでのノック指標値Kの低下量が大きくなるからである。このように第1しきい値α1をインバランス指標値IB1に基づき可変設定することで、空燃比ずれ度合いリーンずれ度合いに応じた適切なしきい値を用いることができ、診断精度を向上できる。代替的に、異常発生後のインバランス指標値IB1に対応したノック指標値K1のみによって異常箇所を特定してもよい。すなわち、燃料系異常時の点eのノック指標値Kは、EGR系異常時の点fのノック指標値Kより小さい。よって、異常発生後のインバランス指標値IB1に対応したノック指標値K1を所定の第2しきい値α2と比較する。ノック指標値K1が第2しきい値α2より小さいときには燃料系を異常箇所として特定し、ノック指標値K1が第2しきい値α2以上のときにはEGR系を異常箇所として特定する。この場合にも、第2しきい値α2は、異常発生後のインバランス指標値IB1に基づき可変設定される。インバランス指標値IB1がマイナス側リーン側に大きくなるほど第2しきい値α2は小さくなる。この理由は、図7に示すように、インバランス指標値IB1がマイナス側リーン側に大きくなるほど、異常時の点eのノック指標値Kの値が小さくなるからである。このように第2しきい値α2をインバランス指標値IB1に基づき可変設定することでも、空燃比ずれ度合いリーンずれ度合いに応じた適切なしきい値を用いることができ、診断精度を向上できる。次に、リッチずれ異常が発生した場合を説明する。この場合、異常の原因は燃料噴射量の増加と吸入空気量の減少とが考えられる。これらが変化せずにEGR量が1気筒だけ増えることは通常考えられないからである。前者に関しては特定気筒のインジェクタ2の閉弁不良や燃料供給過多等が考えられる。また後者に関して、吸入空気量の減少分だけEGR量が増大し、リッチずれ異常が発生したと考えられる。この吸入空気量の減少は、特定気筒の分岐吸気通路、特に分岐EGR通路33の接続部より上流側の吸気マニホールド9に、デポジット等による閉塞が生じたことによるものと考えられる。そこでリッチずれ異常が検出された場合、燃料系と空気系のいずれかを異常箇所として特定する。ここで、燃料系異常の場合、点dは、同一の線a上の点gに移動する。他方、空気系異常の場合、点dは、より大EGR側の線c上の点hに移動する。そこでこの違いを利用して異常箇所を一箇所に特定する。すなわち、燃料系異常の場合には正常時の点dから異常時の点gまでのノック指標値Kの低下量が比較的小さい。しかしながら、空気系異常の場合には正常時の点dから異常時の点hまでのノック指標値Kの低下量が比較的大きい。よって、異常発生前のインバランス指標値IB=0に対応したノック指標値K0と、異常発生後のインバランス指標値IB2に対応したノック指標値K2との差ΔK2=K0-K2を所定の第3しきい値α3と比較する。差ΔK2が第3しきい値α3より大きいときには空気系を異常箇所として特定し、差ΔK2が第3しきい値α3以下のときには燃料系を異常箇所として特定する。第3しきい値α3も、異常発生後のインバランス指標値IB2に基づき可変設定される。インバランス指標値IB2がプラス側リッチ側に大きくなるほど第3しきい値α3は大きくなる。この理由は、図7に示すように、インバランス指標値IB2がプラス側リッチ側に大きくなるほど、正常時の点dから異常時の点gまでのノック指標値Kの低下量が大きくなるからである。このように第3しきい値α3をインバランス指標値IB2に基づき可変設定することでも、空燃比ずれ度合いリッチずれ度合いに応じた適切なしきい値を用いることができ、診断精度を向上できる。代替的に、異常発生後のインバランス指標値IB2に対応したノック指標値K2のみによって異常箇所を特定してもよい。すなわち、空気系異常時の点hのノック指標値Kは、燃料系異常時の点gのノック指標値Kより小さい。よって、異常発生後のインバランス指標値IB2に対応したノック指標値K2を所定の第4しきい値α4と比較する。ノック指標値K2が第4しきい値α4より小さいときには空気系を異常箇所として特定し、ノック指標値K2が第4しきい値α4以上のときには燃料系を異常箇所として特定する。第4しきい値α4も、異常発生後のインバランス指標値IB2に基づき可変設定される。インバランス指標値IB2がプラス側リッチ側に大きくなるほど第4しきい値α4は小さくなる。この理由は、図7に示すように、インバランス指標値IB2がプラス側リッチ側に大きくなるほど、異常時の点gのノック指標値Kの値が小さくなるからである。このように第4しきい値α4をインバランス指標値IB2に基づき可変設定することでも、空燃比ずれ度合いリッチずれ度合いに応じた適切なしきい値を用いることができ、診断精度を向上できる。次に、本実施形態に係る診断処理を図8を用いて説明する。当該診断処理はECU100によって、好ましくはストイキ制御中に実行される。最初のステップS101ではEGR実行中か否かが判断される。このときECU100は、検出された回転数Neと負荷KLが、図3のマップのEGR実行領域IにあるときEGR実行中と判断し、EGR実行領域IにないときEGR非実行領域IIにあるときEGR実行中でないと判断する。EGR実行中と判断された場合、ステップS102に進み、ばらつき異常の有無が判断される。ばらつき異常有りと判断された場合、ステップS103に進む。なお前述したように、触媒前センサ20により検出された気筒毎の検出空燃比Zの値がストイキから所定値以上ずれた場合に、ばらつき異常有りと判断され、そうでない場合にはばらつき異常無しと判断される。他方、ステップS101でEGR実行中でないと判断された場合、またはステップS102でばらつき異常無しと判断された場合、ステップS101に戻って待機状態となる。ステップS103においては、ばらつき異常の種別がリーンずれ異常であるか否かが判断される。リーンずれ異常であると判断された場合ステップS104に進み、リーンずれ異常でないと判断された場合、すなわちリッチずれ異常であると判断された場合ステップS110に進む。ここでは、ストイキから所定値以上ずれた検出空燃比Zの値が、ストイキよりリーンであるときにリーンずれ異常と判断され、ストイキよりリッチであるときにリッチずれ異常と判断される。ステップS104においては、異常気筒が特定されると共に、異常気筒のインバランス指標値IB1が算出される。すなわち前述したように、ストイキから所定値以上ずれた検出空燃比Zに対応した気筒が異常気筒として特定される。そしてこの異常気筒の検出空燃比ZのピークZpとストイキとの差である空燃比差ΔZ=14.5-Zpが、インバランス指標値IB1として算出される。ここではリーンずれ異常であるからマイナスのインバランス指標値IB1が算出される。次に、ステップS105において、現時点すなわち異常発生後でのノック指標値K1が検出される。この検出は前述したようにノックセンサ26の出力信号に基づいて行われる。次いでステップS106において、異常発生前のインバランス指標値IB=0に対応したノック指標値K0と、異常発生後のインバランス指標値IB1に対応したノック指標値K1との差ΔK1=K0-K1が算出される。異常発生前のノック指標値K0は、異常発生後と同一の運転条件下で異常発生前に実際に検出された値であってもよいし、所定のマップから得られる値であってもよい。マップから得られる値である場合、マップには、回転数Neおよび負荷KLに対応したノック指標値K0の値が予め入力されている。異常発生後のノック指標値K1はステップS105で検出された値である。この後ステップS107において、算出された差ΔK1が所定の第1しきい値α1と比較される。第1しきい値α1は、ステップS104で算出されたインバランス指標値IB1に基づき、所定のマップに従って可変設定される。インバランス指標値IB1がマイナス側リーン側に大きくなるほど第1しきい値α1は大きくなる。この理由は、図7を参照して既に説明したように、インバランス指標値IB1がマイナス側リーン側に大きくなるほど、正常時の点dから異常時の点eまでのノック指標値Kの低下量が大きくなるからである。差ΔK1が第1しきい値α1より大きい場合、ステップS108に進んで、燃料系が異常箇所として特定される。また差ΔK1が第1しきい値α1以下の場合、ステップS109に進んでEGR系が異常箇所として特定される。他方、ステップS103においてリッチずれ異常と判断された場合、ステップS110において、異常気筒が特定されると共に、異常気筒のインバランス指標値IB2が算出される。異常気筒の特定方法はステップS104と同様である。またインバランス指標値IB2の算出については、ステップS104と異なり、プラスのインバランス指標値IB2が算出される。次に、ステップS111において、現時点すなわち異常発生後でのノック指標値K2が検出される。そしてステップS112において、異常発生前のインバランス指標値IB=0に対応したノック指標値K0と、異常発生後のインバランス指標値IB2に対応したノック指標値K2との差ΔK2=K0-K2が算出される。この後ステップS113において、算出された差ΔK2が所定の第3しきい値α3と比較される。第3しきい値α3も、ステップS110で算出されたインバランス指標値IB2に基づき、所定のマップに従って可変設定される。インバランス指標値IB2がプラス側リッチ側に大きくなるほど第3しきい値α3は大きくなる。この理由は、図7を参照して既に説明したように、インバランス指標値IB2がプラス側リッチ側に大きくなるほど、正常時の点dから異常時の点gまでのノック指標値Kの低下量が大きくなるからである。差ΔK3が第3しきい値α3より大きい場合、ステップS114に進んで、空気系が異常箇所として特定される。また差ΔK2が第3しきい値α3以下の場合、ステップS115に進んで燃料系が異常箇所として特定される。特定された異常箇所に関する情報はECU100に記憶される。これにより、後の修理の段階で異常箇所を即座に修理することができ、作業を迅速に行うことができる。勿論、ばらつき異常があった事実、ばらつき異常の種別、異常気筒に関する情報等もECU100に記憶される。そしてばらつき異常有りと判定された場合、その事実をユーザに知らせるため警告装置警告灯等が起動される。このように本実施形態によれば、気筒間空燃比ばらつき異常が発生した場合に異常箇所を特定することができ、後の迅速な修理等に資することが可能である。次に、本実施形態に係る診断処理の変形例を図9を用いて説明する。この変形例は図8に示した基本例とほぼ同様であり、以下相違点を中心に説明する。この変形例は、異常発生前後のノック指標値の差ΔK1,ΔK2を用いる代わりに、異常発生後のノック指標値K1,K2のみを用いる点が、基本例と異なる。それ故、基本例のステップS106,S112に相当するステップは変形例において省略されている。変形例のステップS201~S205、S210,S211は、基本例のステップS101~S105、S110,S111と同じである。ステップS205でリーンずれ異常発生後のノック指標値K1が検出された後、ステップS207において、ノック指標値K1が所定の第2しきい値α2と比較される。第2しきい値α2は、ステップS204で算出されたインバランス指標値IB1に基づき、所定のマップに従って可変設定される。インバランス指標値IB1がマイナス側リーン側に大きくなるほど第2しきい値α2は小さくなる。この理由は、図7を参照して既に説明したように、インバランス指標値IB1がマイナス側リーン側に大きくなるほど、異常時の点eのノック指標値Kの値が小さくなるからである。ノック指標値K1が第2しきい値α2より小さい場合、ステップS208に進んで、燃料系が異常箇所として特定される。またノック指標値K1が第2しきい値α2以上の場合、ステップS209に進んでEGR系が異常箇所として特定される。他方、ステップS211でリッチずれ異常発生後のノック指標値K2が検出された後、ステップS213において、ノック指標値K2が所定の第4しきい値α4と比較される。第4しきい値α4も、ステップS210で算出されたインバランス指標値IB2に基づき、所定のマップに従って可変設定される。インバランス指標値IB2がプラス側リッチ側に大きくなるほど第4しきい値α4は小さくなる。この理由は、図7を参照して既に説明したように、インバランス指標値IB2がプラス側リッチ側に大きくなるほど、異常時の点gのノック指標値Kの値が小さくなるからである。ノック指標値K2が第4しきい値α4より小さい場合、ステップS214に進んで、空気系が異常箇所として特定される。またノック指標値K2が第4しきい値α4以上の場合、ステップS215に進んで燃料系が異常箇所として特定される。以上、本発明の好適な実施形態を詳細に述べたが、本発明の実施形態は他にも様々なものが考えられる。例えば上記で示した数値はあくまで例示であり、他の数値に変更可能である。内燃機関は例えば直噴式やデュアル噴射式であってもよい。またリーンずれ異常時とリッチずれ異常時とで異常箇所特定方法を変えてもよい。例えば、リーンずれ異常時には異常発生前後のノック指標値の差に基づいて異常箇所を特定し、リッチずれ異常時には異常発生後のノック指標値のみに基づいて異常箇所を特定する。本発明の実施形態は前述の実施形態のみに限らず、特許請求の範囲によって規定される本発明の思想に包含されるあらゆる変形例や応用例、均等物が本発明に含まれる。従って本発明は、限定的に解釈されるべきではなく、本発明の思想の範囲内に帰属する他の任意の技術にも適用することが可能である。"