H8

H8シリーズは日立製作所が開発したマイクロコントローラである。ターゲットは組み込み市場であり、様々な機能を内蔵した多岐な製品をシリーズ展開していた。形態としてはマスクROM版・ROMレス版のほかに、EPROMを内蔵したZTAT版のほか、フラッシュメモリを内蔵したF-ZTAT版がある。

当初は8ビットCPUで、「H8」の名前のまま、16ビット・32ビットの後継シリーズが開発された。内部レジスタ幅は16ビットまたは32ビットで、データバスの幅によってビット数を分類している。

2013年現在、H8シリーズの生産・供給は続けられているものの、ルネサス エレクトロニクスの会社統合による製品ラインナップの整理により、今後の新製品の開発予定は無いとされる。

2023年現在、8、16、32ビットのH8/300、H8S、H8SXが、IP製品として提供されている。生産中止ということがなく、継続的に使用可能とされる。H8/3048などの汎用マイコン機能のFPGA実装用IPも提供されている。H8/3048FやH8/3052FのIPとして、H8S IPが利用可能とされる。

1. 概要
-----

いわゆるCISCアーキテクチャで、R0～R7の16ビット汎用レジスタが8本あり、これらはR0H、R0Lなど8ビットレジスタ16本としても使用できる。なお、R7はスタックレジスタである。上位のシリーズではさらに各レジスタを32ビット幅に拡張してER0～ER7としている。

アドレッシングモードが豊富で直交性の高い命令体系を持つ。MC68000にも似ていて、同様に奇数アドレスをワードアクセスすることはできないが、エラーは発生しない。I/O空間はメモリマップドI/O。ロード命令ではソースを先にデスティネーションを後に書き、ビッグエンディアンである。

製品としてはCPUコアにROM、RAM、割り込みコントローラ、タイマ、入出力ポート、シリアルコントローラ、A/Dコンバータ、D/Aコンバータ、DMAなどが統合されたパッケージで販売される。I2Cバス、スマートカードインターフェースや液晶コントローラなどを持つシリーズもある。また、ピン配置に互換性のない複数のシリーズに細かく分けられている。パッケージはQFPやPLCCなどの表面実装型が多く、シュリンクDIPなどの挿入型の品種も存在する。

開発環境としては純正のC/C++/アセンブラパッケージおよび統合開発環境HEWがあるほか、各社からCコンパイラなどが発売されている。GCCでも対応している。

2. 背景
-----

H8は1980年代後半に日立が開発した独自命令セットの8ビットプロセッサで、Hシリーズマイクロコンピュータの１つである。Hシリーズとして、当時の同社の類似した命名方式のプロセッサには、32ビットのTRONCHIPのH32、16ビットのH16があった。H32はスーパー301条適用がほのめかされた圧力によるTRONプロジェクトの失速の影響で少数の生産に止まった。H16は「日立対モトローラ事件」の影響もあり消滅し、H8のみが残った。日立はそれまでモトローラの、MC6800のセカンドソースHD6300シリーズ、MC68000のセカンドソースHD68000、ザイログのZ80上位互換のHD64180を製造して販売しており、その経験からか、H8はこれらの長所を取り入れたアーキテクチャとなっている。

後に同社が開発したSuperHシリーズは、H8とは別の用途、視点から開発され、当初はよりCISC的な仕様を取り入れることも検討されたが、動作クロックやパフォーマンスを考慮しRISC的なマイクロコントローラとしてデザインしたものである。このためHD64180やSuperHシリーズなどとのバイナリの互換性はない。またルネサス移行後に発売されたR8C/Tinyシリーズは元三菱電機のM16C系統のCPUであり、やはり互換性はない。

組み込み向けのマイクロプロセッサとしては世界的に大きなシェアを有する。電子工作用や教材用としてもそれまでのZ80などに代わって、中規模のマイコンとして広く使われていて、シリーズによっては秋葉原などでも容易に入手することができる。また日立が支援していた「マイコンカーラリー」には古くから使われているほか、レゴのMINDSTORMSにも使われている。

近年はTinyシリーズのようにオンチップ・デバッキングインターフェースを内蔵して、廉価なオンチップ・エミュレータを使用できるシリーズに移行しつつある。また純正開発環境の無償評価版の配布もWebや雑誌などで積極的に行われている。

3. 命令セットアーキテクチャ
---------------

プログラミングマニュアルまたはソフトウェアマニュアルとして、以下が発行されており、命令セットアーキテクチャとしては7種類がある。

H8/500
H8/300
H8/300L
H8/300H
H8S/2600、H8S/2000
H8SXH8/500を除き、H8/300L、H8/300、H8/300H、H8S/2000、H8S/2600、H8SXの命令セットはオブジェクトレベルで互換性がある。これらのアセンブラおよびコンパイラは共通である。H8/500とH8/300は、それぞれ固有の命令を持つものの、基本的にアセンブラソースレベルでコンパチブルとされている。

H8の初期には「RISC指向」といった説明がされていた。当時におけるRISC的な特徴として、H8/300では、2バイト単位可変長命令、汎用レジスタ、レジスタ‐レジスタ間演算、ワードデータ境界などがある。

最後の命令セットアーキテクチャであるH8SXは「ルネサス32ビットCISCマイクロコンピュータ」とされ、命令、サイズ、アドレッシングモードの直交性が高く、メモリ‐メモリ間の演算も可能であり、ワード、ロングワードデータを奇数アドレスから配置可能である。

4. 主なシリーズ
---------

シリーズ名は、命令セットアーキテクチャあるいはCPUと対応しており、これに、TinyやSLPを組み合わせたシリーズもある。

Tinyシリーズには、H8/300H Tiny、H8S/Tinyが含まれている。SLPシリーズには、H8/300L SLP、H8/300H SLP、H8S SLPがある。

シリーズの上位としてファミリの名称が設けられ、H8ファミリ、H8SファミリおよびH8SXファミリが存在する。これらのファミリは、CPUと内蔵メモリのアクセス仕様が相違しており、H8ファミリは16ビットデータバス・2ステートアクセス、H8Sファミリは16ビットデータバス・1ステートアクセス、H8SXファミリは32ビットデータバス・1ステートアクセスである。

H8Sファミリは、プログラミングマニュアルでは、H8S/2600とH8S/2000の2つのシリーズとなっているが、製品としては「H8Sファミリ／H8S/2x00シリーズ」と、細かくシリーズを分けている。H8S/2600とH8S/2400シリーズは、H8S/2600CPUを内蔵している。H8S/2200、H8S/2300とH8S/2500シリーズは、H8S/2000CPUを内蔵している。H8S/2100シリーズには、H8S/2000CPUを内蔵した製品とH8S/2600CPUを内蔵した製品がある。

H8SXファミリには、H8SX/1700、H8SX/1600、H8SX/1500シリーズがある。

8ビット版
H8/300 : メモリ空間最大64KB。ページ切り替えはない。H8/500下位互換。
H8/300L : H8/300の低電力版。
16ビット版
H8/500 : メモリ空間最大16MB、レジスタは16ビット幅。64KB以上のアドレス空間をページレジスタでページ切り替えする。
H8/300H : メモリ空間を最大16MBに、レジスタを32ビット幅に拡張。命令を高速化。外部データバスは8/16ビット切り替え可能。F-ZTAT版もある。H8/300上位互換。
H8S/2000 : 基本命令を1クロックに高速化。H8/300H上位互換。
H8/300H Tiny : H8/300Hを16ビットコアのままで小ピン化。ノーマルモードで動作するシリーズとアドバンストモードで動作するシリーズがあり、動作モードは固定。外部バスはない。基本的にF-ZTAT対応。
32ビット版
H8SX : H8S上位互換。最初の製品はH8SX/1650である。H8SX/1720SはH8SX V2 CPU内蔵で、動作周波数は80MHzである。

5. ライセンス提供
----------

1996年に、日立製作所が米国アナログ・デバイセズ社に対し、H8/300HのCPUコアをライセンス供与することで合意したとの発表があった。

2023年現在、ルネサスエレクトロニクス株式会社から、H8/300、H8S、H8SXが、IP製品として提供されている。CPUと周辺機能を組み合わせて、既存のマイコン製品と同等の機能仕様を実現したパッケージとして、H8S/2655、H8/3048、H8/327対応パッケージがある。H8S/2355やH8/338の機能の実現も可能である。ハードウェアとソフトウェアの設計財産を組み合わせた形で保持し、長期にわたる継続的な使用が可能になるとされている。このIP製品の1つである、H8S C200コアは、マイコン製品とは別に、2000年代から、FPGA実装可能なソフトマクロとして紹介されている。

また、2023年現在、株式会社マクニカから、H8S C200 IPが提供されている。これは2014年に株式会社アルティマから発表されている。

6. 脚注
-----

7. 関連項目
-------

組み込みシステム
シーケンス制御