コンピュータアーキテクチャにおいて、16ビット整数、メモリアドレス、またはその他のデータユニットとは、幅が16ビット(2オクテット)のものを指します。また、16ビット中央処理装置(CPU)および算術論理演算装置(ALU)アーキテクチャとは、そのサイズのレジスタ、アドレスバス、またはデータバスに基づいたアーキテクチャを指します。16ビットマイクロコンピュータとは、16ビットマイクロプロセッサを使用するマイクロコンピュータのことです。
16 ビット レジスタには 2 16種類の値を格納できます。16ビットに格納できる整数値の範囲は、使用する整数表現によって異なります。最も一般的な 2 つの表現では、符号なし2 進数として表現する場合は 0 ~ 65,535 (2 16 − 1) 、 2 の補数として表現する場合は-32,768 (−1 × 2 15 ) ~ 32,767 (2 15 − 1) の範囲になります。2 16は 65,536 なので、16 ビットメモリ アドレスを持つプロセッサは、64 KiB (65,536 バイト) のバイト アドレス指定可能なメモリに直接アクセスできます。システムが16 ビット セグメント オフセットによるセグメンテーションを使用する場合は、より多くのメモリにアクセスできます。


MIT Whirlwind ( 1951年頃) [ 1 ] [ 2 ]は、おそらく史上初の 16 ビット コンピュータでした。当時のシステムとしては珍しいワード サイズを持ち、ほとんどのシステムは6 ビットの文字コードを使用し、ワード長は 6 ビットの倍数でした。これはASCII の導入によって変化し、ASCII は 7 ビット コードを使用し、自然に 8 ビットの倍数を使用することにつながり、1 つの ASCII 文字または 2 つのバイナリ コード 10桁を格納できるようになりました。
16 ビットのワード長は、1960 年代、特にミニコンピュータ システムでより一般的になった。初期の 16 ビット コンピュータ ( 1965 ~ 70年頃) には、IBM 1130 [ 3 ]、HP 2100 [ 4 ]、Data General Nova [ 5 ]、およびDEC PDP-11 [ 6 ]がある。初期の16 ビット マイクロプロセッサは、多くの場合ミニ プラットフォームのいずれかをモデルとして、1970 年代に登場し始めた。例 ( 1973 ~ 76年頃) には、5 個のチップを持つNational Semiconductor IMP-16 (1973 年) [ 7 ] 、 2 個のチップを持つNEC μCOM-16 (1974 年) [ 8 ] [ 7 ] 、 3 個のチップを持つWestern Digital MCP-1600 (1975 年)、および 5 個のチップを持つToshiba T-3412 (1976 年) がある。[ 7 ]
初期のシングルチップ 16 ビット マイクロプロセッサ ( 1975 ~ 76年頃) には、Panafacom MN1610 (1975 年)、[ 9 ] [ 10 ] [ 7 ] National Semiconductor PACE (1975 年)、General Instrument CP1600 (1975 年)、Texas Instruments TMS9900 (1976 年)、[ 7 ] Ferranti F100-L、およびHP BPCが含まれます。その他の注目すべき 16 ビット プロセッサには、 Intel 8086、Intel 80286、WDC 65C816、およびZilog Z8000があります。Intel 8088 はIntel 8086 とバイナリ互換性があり、レジスタが 16 ビット幅で、算術命令が 16 ビットの値を操作できるという意味で 16 ビットでしたが、外部バスは 8 ビット幅でした。
16ビットプロセッサはパーソナルコンピュータ業界ではほぼ完全に取って代わられており、組み込みアプリケーションでは32ビット(または8ビット)CPUよりも使用頻度が低い。
Motorola 68000は、基本的な算術演算の処理方法から、16ビットと呼ばれることがあります。命令セットは32ビットの数値に基づいており、内部レジスタも32 ビット幅であるため、一般的な定義では68000は32ビット設計です。内部的には、32ビットの算術演算は2つの16ビット演算を使用して実行されるため、このシステムは16ビット、あるいは「16/32」と表現されることがあります。
このようなソリューションはコンピュータ分野で長い歴史を持ち、さまざまな設計で一度に1ビットずつ演算を実行する「シリアル演算」が用いられてきましたが、1970年代までにはほとんどの設計で少なくとも数ビットずつ処理するようになっていました。よく知られている例として、データゼネラル社のNovaがあります。これは16ビット設計で、16ビット演算を4つの4ビット演算の連続として実行しました。4ビットは広く普及していたシングルチップALUのワードサイズであったため、低コストで実装できました。68000に適用されている定義を用いると、Novaは4ビットコンピュータ、つまり4/16となります。Novaの登場後まもなく、第2バージョンであるSuperNovaが登場しました。SuperNovaは4つの4ビットALUを並列に実行することで 一度に16ビット演算を実行し、より高いパフォーマンスを実現しました。これはユーザーやプログラムからは見えず、プログラムは常に16ビットの命令とデータを使用していました。同様に、Motorola 68020を皮切りに、後の68000ファミリーの製品群は32ビットALUを搭載していた。
システムが16ビットであるか否かを、別の基準に基づいて判断する場合もあります。よくある基準の一つは、アドレス空間のビット数が内部レジスタのビット数と異なる場合です。1970年代の8ビットCPUのほとんどはこの基準に該当します。MOS 6502、Intel 8080、Zilog Z80など、多くのCPUは16ビットのアドレス空間を持ち、64 KiBのアドレス空間を提供していました。これは、アドレス操作に2命令サイクルを要することを意味していました。そのため、ほとんどのプロセッサは、速度を向上させるために、ゼロページと呼ばれる特別な8ビットアドレッシングモードを備えていました。内部レジスタサイズと外部アドレスサイズのこのような差は、1980年代にも残りましたが、当時のメモリコストが高かったため、2 GiBまたは4 GiBの32ビットアドレッシングを備えたマシンは 事実上不可能となり、多くの場合、その差は逆転しました。例えば、68000はDIP上で24ビットのアドレス指定しか公開していなかったため、当時としては巨大な16MiBに制限されていた。[ 11 ]
同様の分析は、Intelの80286 CPUの後継機種である386SXにも当てはまります。386SXは、32ビットALUと内部32ビットデータパスを備えた32ビットプロセッサであり、16ビットの外部バスと、置き換えられたプロセッサの24ビットアドレッシングを備えています。
IBM PC互換機およびWintelプラットフォームの文脈では、16ビットアプリケーションとは、 MS-DOS 、OS/2 1.x、または初期のバージョンのMicrosoft Windows向けに作成され、元々は16ビットIntel 8088およびIntel 80286マイクロプロセッサ上で動作していたソフトウェアを指します。このようなアプリケーションは、20ビットまたは24ビットのセグメントまたはセレクタオフセットアドレス表現を使用して、16ビットアドレスのみを使用した場合よりもアドレス指定可能なメモリ位置の範囲を拡張していました。そのため、 2¹⁶バイト(65,536バイト)を超える命令とデータを含むプログラムでは、64キビバイトのセグメント間を切り替えるための特別な命令が必要となり、16ビットアプリケーションのプログラミングの複雑さが増しました。
シングルチップ16ビットマイクロコントローラは、1983年頃にIntel 8061の登場とともに現れた。2025年現在、16ビットマイクロコントローラは100個単位で1米ドルをはるかに下回る価格で、従来の8ビットと同程度の価格となっている。[ 12 ] 32ビットマイクロコントローラの中にも、1米ドル以下の価格のものもある。