TMS1000
TMS1000は、
テキサス・インスツルメンツ(TI)が1974年に市場に投入した
4ビットマイクロコントローラーのシリーズです。
CPU(中央演算処理装置)、ROM(読み出し専用メモリ)、RAM(ランダムアクセスメモリ)、そして外部とのデータのやり取りを担うI/O(入出力)端子の全てを、一つの半導体チップ上に実装した「ワンチップ上のコンピューター」として設計されました。自動車部品、家庭用電化製品、電子玩具、測定機器など、様々な
組み込みシステム用途を主なターゲットとしていました。
このチップは、前身であるTMS0100シリーズが存在するものの、商業的に広く普及した最初の
マイクロコントローラーとして知られています。1974年当時は、大量購入すれば1個あたり約2ドルという低価格で入手可能であり、この価格設定も普及を後押ししました。その結果、1979年までには年間およそ2600万個が販売されるほどの成功を収めました。TI自身が開発した教育玩具「Speak & Spell」や、プログラム可能な玩具自動車「Big Trak」、人気の電子ゲーム「サイモン」といった製品にも、TMS1000が組み込まれています。
歴史的背景
TMS0100シリーズ
TMS1000の登場に先立ち、TIではTMS0100シリーズが開発されていました。
スミソニアン博物館の記録によれば、TIの技術者であるゲアリー・ブーンとマイケル・コクランは、1971年にシングルチップの計算機用
集積回路TMS1802NCを完成させ、これが世界初の
マイクロコントローラー、あるいはマイクロコンピューターと見なされることがあります。1971年9月17日に発表されたこのチップには、四則演算を行う電卓プログラムが内蔵されており、TIのDatamath電卓やSinclair Executive電卓に採用されました。後にTMS0102と改称され、TMS0100シリーズの一部となりました。ただし、このシリーズは電卓以外の用途での利用が想定されておらず、ユーザーが独自のプログラムを実行する機能を持たなかったため、広義の
マイクロコントローラーとは区別される場合もあります。
TMS1000シリーズの確立
1974年に発売されたTMS1000シリーズは、TIによってプログラム済みの組み込み用途向けであることが特に強調されました。「ワンチップ上のコンピューター」という概念、すなわち
マイクロプロセッサコア、メモリ、そしてI/O機能を単一チップに統合するアイデアは、TIのゲアリー・ブーンとマイケル・J・コクランに与えられた米国特許第4,074,351号に関連しています。一般的なマイクロコンピューターが一つ以上の
マイクロプロセッサを
CPUとして使用するのに対し、この特許における定義は現在の
マイクロコントローラーに近いものでした。
技術的特徴
TMS1000ファミリーは、当初の
PMOSロジックに加え、後にNMOSや
CMOSロジックを採用した製品も登場しました。チップごとの違いとして、ROMやRAMの容量、I/O端子の数などが異なる多様なモデルが存在し、中には開発用途や外部ROM使用を想定したROM非搭載版もありました。オリジナルのTMS1000は、1024バイトのプログラムROM、64
ニブル(
4ビット×64=256ビット)のデータRAM、そして23本のI/O端子を備えていました。
プログラムROMには
マスクROMが採用されていました。これは、ユーザーが開発したプログラムをTIに渡し、TIがそのプログラムに基づいてチップ製造時にROMの内容を決定する特殊なマスクを作成する方式です。一度チップが製造されると、ROMの内容を現場で変更することはできませんでした。この方式は、初期のマスク製作に高い費用がかかる一方、チップ単体の製造コストを非常に低く抑えられるため、年間数千個以上の大量生産を行う製品に適していました。
プロセッサ内部のデータ経路(RAMへのアクセスなど)は、全て
4ビット幅(
ニブル)でした。プログラムROMとデータRAMは異なるアドレス空間を持っており、これはハーバードアーキテクチャに類似した設計であり、後の多くの
マイクロコントローラーで一般的な特徴となりました。ALU(算術論理
演算装置)はキャリーフラグを備え、これは
8ビット幅の計算を支援するのに役立ちました。内蔵RAMへのアクセスは、XレジスタとYレジスタの組み合わせで行われました。Yレジスタは
4ビット固定でしたが、XレジスタはRAMサイズに応じて2ビットまたは3ビットでした。
プログラムカウンターは6ビット幅で、これに
4ビットのpageレジスタを組み合わせることで最大1024バイトのROMをアドレス指定できました。一部のファミリーモデルには、さらにchapterビットが追加され、2048バイトまでのROMに対応可能でした。
サブルーチン呼び出しのためのスタックは搭載されていませんでしたが、プログラムカウンターを一時保存するレジスタが用意されており、これにより1レベルの
サブルーチン実行が可能でした(一部モデルでは2または3レベルに対応)。割り込み機能は存在しませんでした。I/O端子の数はモデルによって異なり、外部プログラムメモリを利用する一部モデルでは、パッケージのピン数の制約からI/O端子が4本に限定される場合もありました。
蛍光表示管や
7セグメントディスプレイを直接駆動できる特殊な出力端子や、7セグメント表示を支援するPLA(プログラム可能論理アレイ)を搭載したモデルもありました。入力端子は通常4本が提供され、キーボードのスキャンや外部デバイスの状態検出などに利用されました。
電源電圧とロジックレベルに関しても違いが見られました。初期のPMOS版は-9Vまたは-15Vで動作し、約6mAを消費しましたが、出力ロジックレベルは当時の標準であるTTL(Transistor-Transistor Logic)と互換性がありませんでした。一方、NMOS版や
CMOS版は+5V単一電源で動作し、TTL互換のロジックレベルを持っていたため、他の多くのデジタルICとの相互接続が容易でした。
命令セットはモデルによって若干異なり、基本セットは43命令でしたが、一部モデルでは最大54命令が利用できました。命令長は
8ビットでした。BCD(二進化十進数)演算を支援する命令は提供されていましたが、レジスタの内容に対してANDやORといった論理演算を行う直接的な命令はありませんでした。
サブルーチンの呼び出しレベルは多くのモデルで1レベルに制限されていましたが、一部の高機能モデルでは2または3レベルの入れ子が許容されました。命令実行速度は、PMOSやNMOS版で10から15マイクロ秒程度でしたが、
CMOS版では約6マイクロ秒と高速化されました。チップに内蔵された発振器により、実効クロック速度は約0.3 MHzでした。
TMS1000は主に28ピンまたは40ピンのスルーホールDIP(Dual In-line Package)に収められていましたが、製品試作用の一部モデルではよりピン数の多い64ピンパッケージも存在しました。全てのモデルは摂氏0度から摂氏70度の温度範囲で動作が保証されていました。TMS1000ファミリーは、単一チップで機能が完結することを意図していたため、例えば
UART(Universal Asynchronous Receiver-Transmitter)のような通信機能などを提供する、TMS1000専用の特別なサポートチップは存在しませんでした。
TMS1000シリーズは、その低コストと単一チップによる機能統合によって、様々な電子機器への
マイクロコントローラーの組み込みを現実的なものとし、現代の多様な
組み込みシステムが発展する上で重要な役割を果たしたと言えます。