マイナビニュース | テクノロジー | スパコン/HPC | ヘッドライン(2007)(1ページ目)

ヘッドライン

2007年12月20日(木)

コンピュータアーキテクチャの話 第105回 10進数の演算ハードウェア

図にIBMのPOWER6プロセサの10進浮動小数点演算ユニットの構成を示す。ユニットとしては四則演算と各種コンバージョンをサポートしているが、ハードウェアとしては、DPDとBCDの変換回路とBCDの加算器、そして掛け算のための2倍と5倍の値の生成回路と必要なレジスタといった軽い構成で、スライドにも、ハードウェアとしては最小限の実装であると断っている。

[18:04 12/20]

2007年12月16日(日)

コンピュータアーキテクチャの話 第104回 10進浮動小数点演算

審議中のIEEE 754の拡張である754rの主要な追加の一つは、10進の浮動小数点演算である。科学技術計算の場合は、現在、IEEE 754で定義されている2進の浮動小数点演算で問題が無いが、事務計算では10進演算の必要性が高い。

[19:45 12/16]

2007年12月09日(日)

コンピュータアーキテクチャの話 第103回 Newton-Raphson法とGoldschmidt法(2)

もう一つの方法として、1/bをマクローリン級数で展開し、展開した各項を順に計算していくGoldschmidt(ゴールドシュミット)のアルゴリズムと呼ばれる方法がある。

[15:52 12/9]

2007年11月23日(金)

コンピュータアーキテクチャの話 第102回 Newton-Raphson法とGoldschmidt法

現在のマイクロプロセサでは、SRT割り算器で商を求める方式が広く使われているが、浮動小数点の除算や平方根の計算には、別の方式も使われている。その代表的なものが、ニュートンラプソン(Newton-Raphson)法とゴールドシュミット(Goldschmidt)法である。

[20:26 11/23]

2007年11月17日(土)

コンピュータアーキテクチャの話 第101回 浮動小数点除算器と平方根演算器

浮動小数点の乗算の場合は、仮数部の掛け算と指数部の足し算を行ったが、浮動小数点の割り算は、仮数部の割り算と指数部の引き算を行えば良い。

[21:57 11/17]

2007年11月12日(月)

コンピュータアーキテクチャの話 第100回 浮動小数点積和演算器

実際の計算では、積の和を求めるという処理が多く出てくる。例えば、売り上げを計算する場合は、それぞれの品目の単価×数量を計算し、それらの総和を取るという処理となる。また、科学技術計算で良く出てくる行列の積の計算も、行ベクトルと列ベクトルの内積を求める積和計算である。そして、アナログ信号をディジタル処理するディジタルフィルタでも入力に係数を掛けて総和を取るという積和計算が中心的な処理となる。

[12:20 11/12]

2007年11月03日(土)

コンピュータアーキテクチャの話 第99回 浮動小数点乗算器

次は、掛け算器である。1200×150は180000であるが、浮動小数点形式で表現すると、1.2×10の3乗と1.5×10の2乗の積であり、1.2×1.5=1.8と、指数部は10の2乗と3乗で10の5乗であり、結果として、1.8×10の5乗と計算する。

[23:06 11/3]

2007年10月28日(日)

コンピュータアーキテクチャの話 第98回 2パス浮動小数点加算器

オペランドの値がほぼ同じで符号が違う場合は、桁落ちが発生して多数の上位ビットがゼロとなる場合があるので、リーディングゼロカウンタを用いてノーマライズをする必要があることを述べたが、良く考えてみると、このような必要が出るのは、両方のオペランドのEXP値の差が0か1の場合で、かつ、符号が異なる場合だけである。

[23:28 10/28]

2007年10月21日(日)

コンピュータアーキテクチャの話 第97回 多数ビットの桁落ちが発生する場合のノーマライズ

実は、オペランド1とオペランド2の値がほぼ同じで、符号が違っており、アダーで引き算が行われる場合は、もっと厄介である。

[17:16 10/21]

2007年10月10日(水)

コンピュータアーキテクチャの話 第96回 浮動小数点加算器 - 桁合わせと加算

整数の場合は、最下位のビットの重みは常に"1"であり、その上位は2、4、8というようになっていたが、浮動小数点の数値の場合は、ビットの重みが指数部によって変わる。従って、加算をする場合は、両者の数のEXP部の値の差を考慮して、桁あわせを行う必要がある。

[21:47 10/10]

2007年10月03日(水)

コンピュータアーキテクチャの話 第95回 ゼロの表現

ゼロもEXP=0で、かつ、Fractionが全てゼロと定義されている。ゼロは符号Sが"0"と"1"の形があり、それぞれ+0と-0を表わす。+0と-0は通常は区別する必要は殆ど無いが、符号を取り出すような演算では違いがでる。

[15:21 10/3]

2007年09月30日(日)

コンピュータアーキテクチャの話 第94回 区間演算

浮動小数点データ形式は限定されたビット数のFractionでデータを表現するので、1/3のような循環小数や、πなどの無理数を正確に表現することは出来ない。このように誤差を含んだ数値で計算を行った場合、得られた結果がどの程度の誤差を含んでいるのか分からないという問題がある。

[20:16 9/30]

2007年09月18日(火)

コンピュータアーキテクチャの話 第93回 ヒドン(Hidden)ビットで精度を1ビットを稼ぐ

IEEE 754規格は、当時、Zilog社に在籍していたDavid Stevenson氏を議長として、延べ100人近くの参加者による委員会で検討、作成された。規格書には、これらの人達の名前と、所属する企業や団体の名前が50程度並んでいる。

[09:18 9/18]

2007年09月07日(金)

コンピュータアーキテクチャの話 第92回 IEEE 754規格と浮動小数点演算

例えば、3GHzクロックの1周期は3.333*10^(-10)秒であるし、太陽の質量は1.9891*10^30Kgというように、工学や理学の分野では、非常に小さな値や非常に大きな値を扱う必要がある。しかし、このような大きな数や小さな数は整数で計算することはできない。このため、浮動小数点形式というデータ表現形式が用いられる。

[22:34 9/7]

2007年08月29日(水)

コンピュータアーキテクチャの話 第91回 シフト回路(シフター)

割り算器の話しは終わりであるが、整数演算の締めくくりとして、シフト回路について考察しておこう。

[23:01 8/29]

2007年08月11日(土)

コンピュータアーキテクチャの話 第90回 Pentiumの割り算器のバグ

マイクロプロセサにはバグは付き物で珍しくはないが、多分、一番有名なバグは、1994年のPentium 4の割り算器のバグであろう。このバグは浮動小数点の割り算器のバグでこのコラムで説明してきた整数の割り算器ではないが、割り算を行うハードウェアとしては、整数の場合は商を1の桁まで求めると終わりであるが、浮動小数点の場合はレジスタのビットの範囲まで割り算ループを繰り返し計算するという違いだけで、割り算器としての基本的な動作は同じである。

[20:48 8/11]

2007年08月03日(金)

コンピュータアーキテクチャの話 第89回 テーブルにどれだけの重なりを作るか?

Radix-4で計算を行う場合、上記の説明では-2~+2の5つの値を取りうるとしたが、一般的にRadix-r (但し、rは偶数とする)の計算を行う場合、- r/2 ~ + r/2の範囲の整数を取りうるようにすれば、0も含めて、全体ではr+1個の値が取りうることになり、1個の冗長シンボルがあることになる。このような割り当てを最小冗長(Minimally Redundant)なシンボル割り当てという。

[21:20 8/3]

2007年07月25日(水)

コンピュータアーキテクチャの話 第88回 1サイクルに複数ビットの商を求める割り算器(2)

これを解決するのがSRT法で、「部分剰余Piと除数Dの一部の上位ビットから部分商Qiの値を予測」、「Pi - Qi×Dを計算し、部分剰余Pi+1を計算」という手順で計算を行う。

[21:07 7/25]

2007年07月20日(金)

コンピュータアーキテクチャの話 第87回 1サイクルに複数ビットの商を求める割り算器

商を1ビットづつ求めるのは繰り返し回数が多く時間が掛かるので、乗算のブースアルゴリズムのように、複数ビットの商を1サイクルで求められないかということになる。しかし、毎サイクル2ビットの商を求めようとすると、商の値は0~3の可能性があり、その時点での被除数レジスタの値(以下では部分剰余と呼ぶ)が除数Dの1倍以下、2倍以下、3倍以下、それ以上のいずれであるかを正確に知る必要がある。

[23:51 7/20]

2007年07月16日(月)

コンピュータアーキテクチャの話 第86回 引き放し法は本当に速いのか?

割り算の教科書をみると、引き戻し法では最大2Nサイクルを必要とするが、引き放し法では、最大N+1サイクルで計算ができるので、引き放し法の方が速いと書いてある。しかし、引き算の結果がマイナスになったからといって、元に戻すだけのために次の1サイクルを使うような設計は良い設計とは言えない。仕事でこんな設計をしていたのでは、上司にお目玉を食らうのが関の山である。

[01:58 7/16]

2007年07月04日(水)

コンピュータアーキテクチャの話 第85回 引き過ぎを戻す必要があるのか?

筆算では、引き過ぎて部分剰余がマイナスになってしまった場合は、商を一つ減らして、やり直すという手順を踏むが、本当に、戻す必要があるのだろうか?

[23:41 7/4]

2007年06月26日(火)

コンピュータアーキテクチャの話 第84回 割り算器 - 筆算をハード化した引き戻し法

筆算で割り算を行う場合は、商の値を仮定して、それに除数を掛けた値を比除数から引くという作業を繰り返す。

[22:06 6/26]

2007年06月21日(木)

コンピュータアーキテクチャの話 第83回 4-2コンプレッサー

以上で、負の部分積も、あまり多くのカウンタエレメントを追加することなく効率よく扱えるようになり、高速乗算器の話はほぼ終わりであるが、各桁の"1"の数を数える方式について補足しておきたい。

[17:37 6/21]

2007年06月12日(火)

コンピュータアーキテクチャの話 第82回 負の部分積の処理

Wallace Treeの入力数は上位の桁では減少すると書いたが、被乗数Mが正の数であるとしてもBooth Encoderを用いる場合は-Mとか-2Mを加算する必要がある。この場合、2の補数表示の負の数は上位に"1"が並ぶことになり、Wallace Treeの上位の桁での入力数は減少しない。

[09:00 6/12]

2007年06月07日(木)

コンピュータアーキテクチャの話 第81回 Wallace Tree

乗算は乗数の各桁に対応する部分積を作り、それら全ての合計を求めるというのがパラレルアダーの基本的な考え方であるが、乗数の最下位の桁に対応する部分積から順に加算を行う必要は無い。

[22:39 6/7]

2007年05月31日(木)

コンピュータアーキテクチャの話 第80回 Boothのアルゴリズム

パラレルアダー方式の乗算器は64ビットの乗算でも、アダー6段程度の遅延、あるいは6クロック程度で乗算が実行出来るという点で高性能であるが、部分積の数-1個の大量のアダーを必要とし、膨大な物量を必要とするのが欠点である。しかし、部分積の数を減らすことが出来れば、必要なアダーの個数を減らすことが可能となる。

[20:53 5/31]

2007年05月22日(火)

コンピュータアーキテクチャの話 第79回 リニアアレイとパラレルアダー

前述のように、乗数のビットにゼロが多い場合は、ゼロをスキップすれば乗算に必要な繰り返しを減らすことができるが、乗数のビットの"0"、"1"にかかわり無く複数ビットを同時に処理できれば、より望ましい。

[09:00 5/22]

2007年05月16日(水)

コンピュータアーキテクチャの話 第78回 乗算器 (Multiplier)

小学校で習った多桁の掛け算のやり方は、被乗数(Multiplicand)に乗数(Multiplier)の最下位の数を掛け、次に被乗数に乗数の次の桁を掛けたものを1桁ずらして足し込むということを順に繰り返すやり方である。

[20:55 5/16]

2007年05月09日(水)

コンピュータアーキテクチャの話 第77回 アダーの実装に関して

以上の説明では、プリフィックス計算ボックスなどの論理はANDやORなどを用いて記述して来たが、実際にCMOSで作るとなると、インバータとNANDやNORを用いることになる。CMOSを用いて、プリフィックスボックスの論理に忠実に作ると、次の図の左側のような回路となる。

[12:08 5/9]

2007年04月29日(日)

コンピュータアーキテクチャの話 第76回 Lingアダー

1981年にIBMのワトソン研究所のH.Ling氏は、P、G信号とは異なるキャリーの計算方法を提案し、この方式の方が計算が容易で、高速に加算が実現できるという論文を発表した。この方式は、発明者のLing氏にちなんでリングアダーと呼ばれている。

[21:57 4/29]

2007年04月19日(木)

コンピュータアーキテクチャの話 第75回 パラレルプリフィックスアダー(3)

Sklanskyアダーの大きなファンアウト、Kogge-Stoneアダーの必要なボックス数が多いという問題を解決する方法として、Ladner-Fisherアダー、Han-Carlsonアダーなどが提案されている。

[11:56 4/19]

2007年04月16日(月)

コンピュータアーキテクチャの話 第74回 パラレルプリフィックスアダー(2)

1960年にJ.Sklansky氏により発表され、発明者にちなんでSklansky Adderと呼ばれるアダーのキャリー計算回路は次の図のようになっている。

[14:48 4/16]

2007年04月07日(土)

コンピュータアーキテクチャの話 第73回 パラレルプリフィックスアダー

784S181と74S182の場合は、これらのチップが開発された1970年頃の半導体製造技術で可能な集積度やパッケージのピン数の点から1チップに4ビット分のロジックの集積が限界であり、4ビット単位でのP、G信号を生成しているが、半導体の集積度が著しく向上した時代では、マイクロプロセサ内部の32ビットや64ビットアダーの場合は、このような制約はない。このため、構成上の自由度が高く、各種の高速アダーが研究者によって提案されている。

[23:36 4/7]

2007年03月31日(土)

コンピュータアーキテクチャの話 第72回 演算器の設計 - キャリールックアヘッドアダー(2)

これらの信号を用いて16ビットアダーを構成したのが下の図である。この図では、74S181は、動作を分かり易くするため、4ビットごとのP,G信号を生成する部分とSumを計算する部分を別のボックスとして書いているが、実際の74S181ではこれらのペアが1チップに集積されている。

[00:20 3/31]

2007年03月24日(土)

コンピュータアーキテクチャの話 第71回 演算器の設計 - キャリールックアヘッドアダー

フルアダーの図を見ると、Sumの計算は2個のXORゲートで実現されており、これ自体は大して時間のかかる処理ではない。従って、問題は、各桁のC-inをどうやって求めるかということであり、各桁のC-inが短い時間で計算できれば、加算器を高速化できる。

[21:45 3/24]

2007年03月14日(水)

コンピュータアーキテクチャの話 第70回 演算器の設計 - 加算器(Adder)

コンピュータは電子計算機と訳されており、計算する機械である。計算機が実行する演算は、四則の数値演算以外にも、ビット毎のAND、OR、NOTなどをとる論理演算やシフト演算などがある。また、数値演算に限ってみても計算を行う対象は整数と浮動小数点数がある。

[20:57 3/14]

2007年03月12日(月)

コンピュータアーキテクチャの話 第69回 4ビットプロセサのアーキテクチャ設計 - 性能を上げるには(2)

更に性能を上げるにはどうすれば良いであろうか? X1~X4サイクルで命令の実行が終わってから、次の命令のアドレスをAサイクルで送り、Mサイクルで受け取るという動作をしているが、分岐命令でなければ、次の番地の命令を読むという動作が必ず行われる。従って、原理的には、次の命令のフェッチはその必要性が判明した時点から開始して良い。

[12:41 3/12]

2007年02月27日(火)

コンピュータアーキテクチャの話 第68回 4ビットプロセサのアーキテクチャ設計 - 性能を上げるには(1)

命令アーキテクチャの改善で、MJアーキでは4004アーキと比較して10進16桁の加算の1桁分の処理性能を1.43倍に向上させたが、次に、ハードウェアの物量増加をある程度許容した性能向上策を考えてみよう。

[18:59 2/27]

2007年02月20日(火)

コンピュータアーキテクチャの話 第67回 4ビットプロセサのアーキテクチャ設計 - MJアーキテクチャプロセサの性能

最低限の命令が定義されたので、ここで10進16桁の数値を加算するケースについてコーディングと性能を考えてみよう。

[21:37 2/20]

2007年02月17日(土)

コンピュータアーキテクチャの話 第66回 4ビットプロセサのアーキテクチャ設計 - MJアーキのタイミング図とブロックダイヤグラム

RAMにアドレスを送るのに3サイクルを必要としているが、RAMを選択する命令が不要になり、かつ、I/OもメモリマップドI/OとしてRAMと同じ手順でアクセスするようにしたので、4004では必要であったI/O命令やSRC命令の場合の特殊な制御が不要になり、すっきりとしたタイミング図となっている。

[22:53 2/17]

2007年02月11日(日)

コンピュータアーキテクチャの話 第65回 4ビットプロセサのアーキテクチャ設計 - MJアーキテクチャの命令セット(3)

ここでは、4004からハードウェアをあまり増やさないという前提でアーキテクチャを考えているので、4004と同様に、JCN命令は同一ページ内へのジャンプを行う仕様とした。しかし、MJアーキテクチャでは4004から52ビット分のレジスタを削減しているので、その分のトランジスタで、PC相対アドレスを計算するアダーなどを作るという手も考えられる。

[04:51 2/11]

2007年02月04日(日)

コンピュータアーキテクチャの話 第64回 4ビットプロセサのアーキテクチャ設計 - MJアーキテクチャの命令セット(2)

一方、RAMに格納されたデータをメモリアドレスとして使用するためには、メモリからアキュムレータにロードされた値を4ビット単位でIXレジスタに格納する命令が必要である。

[23:03 2/4]

2007年01月24日(水)

コンピュータアーキテクチャの話 第63回 4ビットプロセサのアーキテクチャ設計 - MJアーキテクチャの命令セット(1)

この3つの命令があれば、最低限、メモリからデータを読み、加算と減算を行い、結果をメモリに格納することが出来る。しかし、LD命令、ADD命令、ST命令でRAMのアドレスを指定するためには、アクセスするメモリアドレスをIXレジスタに格納する命令が必要である。

[19:07 1/24]

2007年01月21日(日)

コンピュータアーキテクチャの話 第62回 4ビットプロセサのアーキテクチャ設計 - MJアーキテクチャ 4ビットプロセサの設計(2)

元々のVon Neumann(フォン ノイマン)のストアードプログラムのアーキテクチャでは、メモリ空間は一つであり、命令もデータも同じメモリに格納され、プログラムで命令を書き換えながら実行を行うという機能を含んでいたが、4004では、汎用コンピュータのように、どこか外部からプログラムをメモリに書き込むということは出来ないし、ROMの方がRAMより安く作れるということもあり、命令とデータを分離した構造となっている。

[18:33 1/21]

2007年01月14日(日)

コンピュータアーキテクチャの話 第61回 4ビットプロセサのアーキテクチャ設計 - MJアーキテクチャ 4ビットプロセサの設計(1)

4004と同程度のトランジスタ数で、かつ、16ピンパッケージに収容できる4ビットプロセサの命令アーキテクチャを新たに設計してみようと思う。これは中々おもしろい課題であり、このような場を提供いただいたMYCOMジャーナルに敬意を表して、これから設計するアーキテクチャをMJアーキテクチャと呼ぶことにする。

[21:03 1/14]

バックナンバー

人気記事

一覧

イチオシ記事

新着記事