ビットスライスとは、コンピュータのプロセッサの処理などを、小さなビット幅ごとに分割(スライス)すること、あるいはそのように分割して、小さなモジュールなどの組み合わせによって処理すること。そのようにして構成されているプロセッサないしその部品をビットスライスプロセッサと呼ぶ。ビットスライスプロセッサを構成する部品のうち、特にいわゆるデータパスを構成する部品は、各オペランドを所定のビット幅ぶん(スライス)だけ処理する。

また、音声画像などのデータをビットプレーン構造などで扱うためスライスすることやスライスしたものも「ビットスライス」と呼ぶことがある。詳細はビットプレーン参照。

概要

編集

ビットスライス構成では、ひとつのコンピュータのひとつのCPUとして機能するプロセッサ(前提として、シングルプロセッサマシンとする)を、複数の集積回路(IC)の組合せにより実現する。特に、ワードの幅と無関係な制御まわりは全く共通としつつ、ALUをはじめとしたワード幅に関係した部分を4ビットか8ビットのICを必要なだけ横に[1]並べる、というような構成とするのが特徴である。

例えば、2個の4ビットALU(例えば74181演算装置の記事も参照)を相互接続すると8ビットのALUが構成される。ALUを制御するための制御装置や他のコンポーネントは別の回路として接続する。74181の例では、4個や16個を使い、16ビットや64ビットといった大きなワードを扱うために、74182のように、特に組み合わせるように設計されたICがあるようなものもある。

ファミリICとしての実例には、Intel 3000 ファミリ英語版AMD Am2900ファミリナショナル セミコンダクター IMP-16/IMP-8ファミリなどがある。

歴史

編集

かつて集積回路が使われるようになる以前、ビットスライスは一般的に使われた技術だった(ただし、そのように呼ばれていたわけではない)。初期の例としてEDSAC 2(en:EDSAC 2)がある[2]

集積回路の集積度が低く高価であった当時、コンピュータシステムのバス幅をどれだけにするのが適切かという議論があった。複数の単純な(かつ安価な)ALUを組み合わせて使用することは、費用を抑えつつ計算能力を高めるための効果的な方法であった。


複数の標準的量産部品を組み合わせてビットスライス方式を使えば、より強力で複雑なコンピュータを安価に製作可能だった。ALUの複雑な部分は既に実装済みなので、新たなコンピュータアーキテクチャを作る際の複雑さやデバッグの手間も大幅に低減される。

60年代末から80年代中ごろにかけて、バイポーラトランジスタを使ったビットスライス方式のプロセッサは、NMOSやCMOSのプロセッサよりも高速動作するという利点があった。そのためクロック周波数を高くでき、高速性を要求される用途に便利だった。例えば、当時のDSPXerox Alto など、高速性と柔軟性からビットスライス式でプロセッサを構成していたものがあった。

現代的用途

編集

1998年、Matthew Kwan はビットスライシングという用語の新たな用法を提案した[3]。64ビットマイクロプロセッサのような、比較的ワードが長い汎用プロセッサとその命令(いわゆるスカラ命令)を、あたかも、ビットを対象とした64並列のSIMD命令であるかのごとくみなし、ビット単位の扱いが必要な処理を多数並列で行う、という技法である(SIMD Within A Register、en:SWAR を参照)。

この技法の起源は、Eli Biham の1997年の論文 A Fast New DES Implementation in Software であり[4]、この技法を使ってDESの性能を大幅に向上させた。

脚注

編集
  1. ^ 繰上り(キャリー)だけは下から上に伝搬させる必要がある。
  2. ^ EDSAC 2の責任者であったウィルクスが振り返って書いた1992年の文献( doi:10.1109/85.194055 )の梗概に「At the mechanical level of organization, EDSAC 2 was packaged in a bit-sliced manner, with interchangeable plug-in units.」とある。
  3. ^ Matthew Kwan (1998年). “Bitslice DES”. 2013年2月2日閲覧。
  4. ^ Eli Biham (1997). A Fast New DES Implementation in Software. http://www.cs.technion.ac.il/users/wwwb/cgi-bin/tr-info.cgi?1997/CS/CS0891. 

この記事は2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。

関連項目

編集

外部リンク

編集