2009年07月15日
ソフトウェアとハードウェアの役割分担
KMC は、基本的にはソフトウェアに重点を置く会社です。開発スタッフの多くはソフトウェア技術者です。
しかし、JTAG-ICE デバッガの最下層では、非常にハードウェアに近い技術が必要です。ここら辺は、徐々に若手への技術移転を進めている(進めないといけない)ところなのですが、現在はほぼ CTO と、数人の先輩に強く頼っています。
PARTNER-Jet デバッガが、高速性と高機能を両立できているのは、KMC がソフトウェアとハードウェアの役割分担が上手くできているという点が大きいと思います。ハードの人たちが、非常に高度な JTAG プログラミング技術や、FPGA などのハード的な高速化技術を駆使して、最も負荷がかかる JTAG 通信部分をチューニングしてくれているおかげで、ソフトウェア技術者はあまりパフォーマンスチューニングを意識する必要が無く (もちろん PARTNER-Jet の最大のウリは速度なので、常に速度には神経を使っています)、機能の実装に集中することができるという体制になっているからです。
また、PARTNER デバッガソフトウェアは、25 年以上にも渡りブートストラップ的な開発(デバッガを開発するためには、デバッガが必要という、不思議な循環)を続けてきた結果、非常に独特な内部構造になっています。詳細はもちろん企業秘密なのですが、ちょっと一朝一夕には真似できない、優れた設計になっていると思います。
この独特の設計は、完全に PARTNER (x86 版。今のところは製品としては販売されていない、社内用ツールです) に依存した、PARTNER ありきのものなので、通常のデバッガしか無い状況では、ちょっと実装やデバッグは不可能なのではないかと思います。そしてこの構造こそが、PARTNER のデバッガソフトウェア部分の開発効率が非常に良い(一度理解してしまえば、非常にコードが書きやすい。慣れるまでは大変ですが…)ことの本質となっているのではないかと思います。
しかし、JTAG-ICE デバッガの最下層では、非常にハードウェアに近い技術が必要です。ここら辺は、徐々に若手への技術移転を進めている(進めないといけない)ところなのですが、現在はほぼ CTO と、数人の先輩に強く頼っています。
PARTNER-Jet デバッガが、高速性と高機能を両立できているのは、KMC がソフトウェアとハードウェアの役割分担が上手くできているという点が大きいと思います。ハードの人たちが、非常に高度な JTAG プログラミング技術や、FPGA などのハード的な高速化技術を駆使して、最も負荷がかかる JTAG 通信部分をチューニングしてくれているおかげで、ソフトウェア技術者はあまりパフォーマンスチューニングを意識する必要が無く (もちろん PARTNER-Jet の最大のウリは速度なので、常に速度には神経を使っています)、機能の実装に集中することができるという体制になっているからです。
また、PARTNER デバッガソフトウェアは、25 年以上にも渡りブートストラップ的な開発(デバッガを開発するためには、デバッガが必要という、不思議な循環)を続けてきた結果、非常に独特な内部構造になっています。詳細はもちろん企業秘密なのですが、ちょっと一朝一夕には真似できない、優れた設計になっていると思います。
この独特の設計は、完全に PARTNER (x86 版。今のところは製品としては販売されていない、社内用ツールです) に依存した、PARTNER ありきのものなので、通常のデバッガしか無い状況では、ちょっと実装やデバッグは不可能なのではないかと思います。そしてこの構造こそが、PARTNER のデバッガソフトウェア部分の開発効率が非常に良い(一度理解してしまえば、非常にコードが書きやすい。慣れるまでは大変ですが…)ことの本質となっているのではないかと思います。