ビットスライスとは、コンピュータのプロセッサの処理などを、小さなビット幅ごとに分割(スライス)すること、あるいはそのように分割して、小さなモジュールなどの組み合わせによって処理すること。そのようにして構成されているプロセッサないしその部品をビットスライスプロセッサと呼ぶ。ビットスライスプロセッサを構成する部品のうち、特にいわゆるデータパスを構成する部品は、各オペランドを所定のビット幅ぶん(スライス)だけ処理する。
また、音声や画像などのデータをビットプレーン構造などで扱うためスライスすることやスライスしたものも「ビットスライス」と呼ぶことがある。詳細はビットプレーン参照。
概要 ビットスライス構成では、ひとつのコンピュータのひとつのCPUとして機能するプロセッサ(前提として、シングルプロセッサマシンとする)を、複数の集積回路(IC)の組合せにより実現する。特に、ワードの幅と無関係な制御まわりは全く共通としつつ、ALUをはじめとしたワード幅に関係した部分を4ビットか8ビットのICを必要なだけ横に繰上り(キャリー)だけは下から上に伝搬させる必要がある。並べる、というような構成とするのが特徴である。
例えば、2個の4ビットALU(例えば74181、演算装置の記事も参照)を相互接続すると8ビットのALUが構成される。ALUを制御するための制御装置や他のコンポーネントは別の回路として接続する。74181の例では、4個や16個を使い、16ビットや64ビットといった大きなワードを扱うために、74182のように、特に組み合わせるように設計されたICがあるようなものもある。
ファミリICとしての実例には、、AMD Am2900ファミリ、ナショナル セミコンダクター IMP-16/IMP-8ファミリなどがある。
歴史 かつて集積回路が使われるようになる以前、ビットスライスは一般的に使われた技術だった(ただし、そのように呼ばれていたわけではない)。初期の例としてEDSAC 2(:en:EDSAC 2)があるEDSAC 2の責任者であったウィルクスが振り返って書いた1992年の文献( )の梗概に「At the mechanical level of organization, EDSAC 2 was packaged in a bit-sliced manner, with interchangeable plug-in units.」とある。。
集積回路の集積度が低く高価であった当時、コンピュータシステムのバス幅をどれだけにするのが適切かという議論があった。複数の単純な(かつ安価な)ALUを組み合わせて使用することは、費用を抑えつつ計算能力を高めるための効果的な方法であった。
複数の標準的量産部品を組み合わせてビットスライス方式を使えば、より強力で複雑なコンピュータを安価に製作可能だった。ALUの複雑な部分は既に実装済みなので、新たなコンピュータアーキテクチャを作る際の複雑さやデバッグの手間も大幅に低減される。
60年代末から80年代中ごろにかけて、バイポーラトランジスタを使ったビットスライス方式のプロセッサは、NMOSやCMOSのプロセッサよりも高速動作するという利点があった。そのためクロック周波数を高くでき、高速性を要求される用途に便利だった。例えば、当時のDSPや Xerox Alto など、高速性と柔軟性からビットスライス式でプロセッサを構成していたものがあった。
現代的用途 1998年、Matthew Kwan はビットスライシングという用語の新たな用法を提案した。64ビットマイクロプロセッサのような、比較的ワードが長い汎用プロセッサとその命令(いわゆるスカラ命令)を、あたかも、ビットを対象とした64並列のSIMD命令であるかのごとくみなし、ビット単位の扱いが必要な処理を多数並列で行う、という技法である(SIMD Within A Register、:en:SWAR を参照)。
この技法の起源は、Eli Biham の1997年の論文 A Fast New DES Implementation in Software であり、この技法を使ってDESの性能を大幅に向上させた。
脚注
関連項目
遅延記憶装置 水銀遅延管 直列加算器 多倍長整数
外部リンク A bitslicing primer