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

ヘッドライン

2008年12月22日(月)

コンピュータアーキテクチャの話 第143回 多階層のキャッシュ化

このキャッシュシリーズの最初のところで、とある式を掲げた。ここでTは1命令の実行にかかるサイクル数で、命令実行部の実行サイクル数は1.0、メモリアクセス命令の出現頻度は0.3、サイクルタイムを単位としたメインメモリのアクセス時間をtm、同じくキャッシュメモリのアクセス時間をtcとする。そして、hはキャッシュのヒット率である。

[15:00 12/22]

2008年12月15日(月)

コンピュータアーキテクチャの話 第142回 ライトスルーとライトバック

キャッシュにデータを書き込むと、書き込んだアドレスでは、キャッシュライン上のデータと、メインメモリ上にあるデータが異なることになる。この状態を放置しておくと、どちらのデータが正しいのか分からないということになってしまう。

[08:00 12/15]

2008年12月08日(月)

コンピュータアーキテクチャの話 第141回 空きキャッシュラインの確保

新たにメインメモリから読んでくるデータを入れる空きキャッシュラインが無い場合は、現在、データを格納しているどれかのキャッシュラインを追い出して空きを作る必要がある。

[15:00 12/8]

2008年12月01日(月)

コンピュータアーキテクチャの話 第140回 キャッシュの処理フロー

以上のように、フルアソシアティブキャッシュとダイレクトマップキャッシュは帯に短し襷に長しの感があり、両者の長所を併せ持つ解として考案されたのが、セットアソシアソシアティブ(Set Associative)キャッシュである。

[11:00 12/1]

2008年11月25日(火)

コンピュータアーキテクチャの話 第139回 ダイレクトマップキャッシュとその注意点

メインメモリのアドレスに対応して、どのキャッシュラインに格納するかを決めうちにする方式の一番基本的な方式はダイレクトマップ(Direct Map)方式のキャッシュである。ダイレクトマップ方式では、アドレスを上位、中位、下位に三分する。

[14:00 11/25]

2008年11月18日(火)

コンピュータアーキテクチャの話 第138回 キャッシュアクセスの2つの考え方

プロセサからメモリアクセス要求が出されると、そのアドレスのデータがキャッシュメモリに格納されているかどうか、格納されている場合は、どのキャッシュラインに入っているかを高速に判定する必要があるが、キャッシュはメインメモリのあちこちのアドレスのデータを格納するので、これは必ずしも簡単ではない。

[22:08 11/18]

コンピュータアーキテクチャの話 第137回 キャッシュの仕組み

キャッシュメモリは、メインメモリとプロセサに近いローカルな高速メモリの間を、ハードウェアが自動的にデータ転送を行う方式である。前述のように、キャッシュメモリが有効に働くためには、プログラムによるメモリアクセスパターンに局所性があることが必要条件であるが、この局所性をうまく引き出して利用するために色々な工夫が行われて来た。

[22:04 11/18]

2008年11月08日(土)

コンピュータアーキテクチャの話 第136回 ローカルメモリの2つの方法

前者の方式は、プログラマが判断して、本当に必要な情報だけをローカルな高速メモリに入れるので効率が良いが、何時、どのデータを入れるかをプログラマが考えて記述する必要があるので、プログラミングが難しい、あるいは面倒という欠点がある。

[09:00 11/8]

2008年11月03日(月)

コンピュータアーキテクチャの話 第135回 メモリのアクセス時間とローカルメモリ

ここまでは、メモリは1サイクルか2サイクルでアクセスができるという想定でパイプラインを考えてきたが、この想定がある程度成り立っていたのは30年以上も昔のことである。それ以降の30年で、プロセサのクロックは1000倍程度速くなったが、メモリのアクセスタイムは10倍程度しか向上しておらず、結果として、現在のマイクロプロセサがDRAMで構成されたメモリをアクセスするには、100サイクル以上を必要とするようになってきている。

[09:00 11/3]

2008年10月25日(土)

コンピュータアーキテクチャの話 第134回 2種類の例外処理

例外(Exception)には、実行中の命令とは関係なく発生する割り込み(Interrupt)と実行中の命令で異常が発生したことを知らせるトラップ(Trap)がある。割り込みは、リセットボタンが押されたというようなケースや、外部からの信号の到着、あるいは処理時間の長いI/O処理の完了の通知などで発生する。一方、トラップは、未定義命令を実行しようとしたり、割り算の分母がゼロというように、実行しようとする命令が原因で異常が起こる場合に発生させる例外である。

[12:00 10/25]

2008年10月08日(水)

コンピュータアーキテクチャの話 第133回 パイプラインの長さに比例するストールサイクル数

命令フェッチからレジスタ書き込みまで5サイクルの処理をパイプラインを使わず実行すると、1サイクルあたりに実行できる命令数(IPC:Instruction Per Cycle)は平均的には0.2命令であるが、理想的なパイプライン処理ができれば、これが1.0命令となり、5倍に性能が向上する。しかし、各種のハザードがあるので、毎サイクル新しい命令を実行することはできず、これほどの性能向上は得られない。

[20:00 10/8]

2008年09月30日(火)

コンピュータアーキテクチャの話 第132回 プログラムカウンタ

パイプラインのそれぞれのステージで一連の命令が実行されている状態では、どれを実行中の命令と考えるかが問題である。そして、次に実行する命令を指すプログラムカウンタは、どの命令を指せば良いのであろうか。

[17:44 9/30]

2008年09月20日(土)

コンピュータアーキテクチャの話 第131回 パイプラインの制御

パイプラインの制御は色々なやり方が可能で、例えば、現在は、命令Aの4サイクル目、命令Bの3サイクル目、命令Cの2サイクル目、命令Dの1サイクル目という状態であるので、それぞれのマルチプレクサを切り替える信号はこうなり、次のサイクルでは命令Aの5サイクル目、命令Bの4サイクル目、…となるので、制御信号はこうなるという巨大な状態数の順序回路を作ることも、理論的には可能である。

[21:40 9/20]

2008年09月13日(土)

コンピュータアーキテクチャの話 第130回 データハザードを減らすバイパス

これまでの例では、レジスタの読み出しからADDなどの演算を行い、結果をレジスタに書き込むという処理を1サイクルで実行できるとしてきた。このような構成では、レジスタの読み出し時間、演算時間、レジスタの書き込み時間の合計でサイクルタイムが決まり、クロック周波数が低くなってしまう。そのため、クロックを上げて高性能を狙うプロセサでは、これらの処理を独立のパイプステージとしてサイクルタイムを短縮する方法が用いられる。

[22:26 9/13]

2008年09月07日(日)

コンピュータアーキテクチャの話 第129回 実行資源の予約

パイプラインの資源に対しても会議室の予約と同じ手法で、メモリや演算器などの各資源ごとに予約表を作って、命令のデコードサイクルに、その命令の実行を完了するまでの全てのサイクルで必要な資源の予約表をチェックし、全ての資源が予約可能であれば、それらの資源の使用を予約表に書き込んで実行に入る。一方、どれかの資源が予約できない場合は命令の実行開始をストールする。

[00:12 9/7]

2008年08月30日(土)

コンピュータアーキテクチャの話 第128回 パイプラインの制御

ここまでは、命令のデコードを行うと、各部のマルチプレクサなどが適当にコントロールされて、パイプラインの各段で必要な動作が行える仕組みが存在すると仮定してきたが、それをどのようにして実現するかを考えてみよう。

[19:39 8/30]

2008年08月22日(金)

コンピュータアーキテクチャの話 第127回 パイプラインの設計 - パイプラインステージの長さ

これがNetburstアーキテクチャのPentium 4がどんどんクロックを上げて性能向上させることができなくなり、Coreアーキテクチャのプロセサに取って代わられてしまった理由である。

[18:51 8/22]

2008年07月30日(水)

コンピュータアーキテクチャの話 第126回 マルチポートレジスタ(2)

ここで話を戻して、図3.4では構造的ハザードを解消するためにレジスタファイル2を追加しているが、レジスタファイル1のリードポート数を3ポートに増やすのとどちらが良いかを考えてみよう。

[22:14 7/30]

2008年07月22日(火)

コンピュータアーキテクチャの話 第125回 マルチポートレジスタ(1)

奇妙に思われるかも知れないが、トランジスタより配線の方が面積を食い、一般に記憶セルのサイズはトランジスタの数ではなく、水平と垂直の配線の本数でサイズが決まる。

[21:07 7/22]

2008年07月14日(月)

コンピュータアーキテクチャの話 第124回 パイプライン処理と構造的ハザード

パイプライン実行の障害となる必要資源の競合を構造的ハザード(Structural Hazard)と言う。パイプライン実行を行うには、構造的ハザードが生じないようにしなければならない。

[10:04 7/14]

2008年07月02日(水)

コンピュータアーキテクチャの話 第123回 コンピュータの命令処理

次の図に示す簡単な構造のプロセサのブロックダイヤグラムに基づいて、命令を処理するステップを見て行こう。このプロセサは114回に載せたプロセサとほぼ同機能であるが、説明の都合上、ブロックダイヤグラムは若干異なっている。

[21:01 7/2]

2008年06月23日(月)

コンピュータアーキテクチャの話 第122回 コンピュータの性能向上(2)

IntelのFred Pollack氏は、1999年のMicro32の基調講演において次の表1.1のデータを示し、同一テクノロジで作られた2つのアーキテクチャのチップを比較すると、チップ面積は2~3倍になっている。しかし、性能は1.5~1.7倍にかしなっていない。我々は二乗則の悪い側(wrong side)にいると述べた。

[21:00 6/23]

2008年06月06日(金)

コンピュータアーキテクチャの話 第121回 コンピュータのマイクロアーキテクチャ - コンピュータの性能向上

マイクロアーキテクチャは、命令セットアーキテクチャで規定された動作を実現することが必要条件であるが、それだけでは十分ではない。同じ機能を実現するにしても、部品数(最近はワンチッププロセサであり、チップ面積)が少なく、高速で動作する設計が求められる。また、最近では、消費電力が大きな問題となっており、少ない電力で動作する設計であることも重要である。

[12:38 6/6]

2008年05月26日(月)

コンピュータアーキテクチャの話 第120回 CISCアーキテクチャとRISCアーキテクチャ

IBMのSystem 360メインフレームは、シリーズを構成する大型機から小規模なマシンに至るまで、同じ命令セットが動作するという画期的なコンセプトを打ち出したマシンであるが、その実現を可能としたのはマイクロコードという方式である。

[13:15 5/26]

2008年05月18日(日)

コンピュータアーキテクチャの話 第119回 命令の長さ

命令の長さは短いに越したことは無い。命令が短ければ、命令を格納するメモリも少なくて済むし、一定サイズの命令キャッシュに格納できる命令数は増加し、キャッシュのヒット率が向上する。このため、使用頻度の高い命令は短いエンコーディングを行い、相対的に使用頻度の少ない命令は長くても良いというエンコーディングが推奨され、x86命令アーキテクチャにもその思想が取り入れられている。

[17:32 5/18]

2008年05月11日(日)

コンピュータアーキテクチャの話 第118回 データタイプとアライメント(2)

バイト単位のメモリアクセスをサポートするコンピュータでは、アドレスの最小単位はバイトとなる。アクセス対象が1バイトの場合は問題ないが、2バイト以上の場合は、整数として最上位のバイトを最初のアドレスに格納する方式と、この逆に最下位のバイトを最初のアドレスに格納する方式があり得る。

[21:41 5/11]

2008年05月01日(木)

コンピュータアーキテクチャの話 第117回 データタイプとアライメント(1)

過去の製品からの連続性(上位互換)を維持するためには止むを得ないのであるが、この辺りがx86アーキテクチャの汚いところである。このため、Intelのアーキテクトがこれを清算したいと考え、HPと協力してItaniumのIA-64アーキテクチャを開発したのは無理からぬところであると筆者は思うのであるが、その結果はご存知の通りである。これはアーキテクチャが技術だけでは決まらないという好例であろう。

[17:09 5/1]

2008年04月19日(土)

コンピュータアーキテクチャの話 第116回 オペランドのアドレッシング(2)

一般に、プログラムで使用する変数を格納するメモリは、比較的近接したアドレスに配置することが多いので、メモリアドレスの指定を(レジスタの内容)+/-(数値)のように指定できれば、メモリアドレスを指定するレジスタの内容を一々変更しなくて良いということになり、便利である。

[21:19 4/19]

2008年04月13日(日)

コンピュータアーキテクチャの話 第115回 命令の構造 - オペランドのアドレッシング(1)

命令は、演算であれば、加算か論理演算かなどの種別を指定する必要があるし、メモリの読み書きや演算結果の正負の判別など、どのような動作を行うべきかを指定する必要がある。この部分をオペレーションコード、略してOPコードと呼ぶ。

[22:57 4/13]

2008年04月06日(日)

コンピュータアーキテクチャの話 第114回 汎用レジスタマシン

この単純な構造のマイクロアーキテクチャは、必要とするレジスタ数が非常に少なく、とにかく構成部品の数を減らして、コンピュータのコストを下げたいという目的には向いているが、性能が良いとは言えない。

[23:11 4/6]

2008年03月29日(土)

コンピュータアーキテクチャの話 第113回 アキュムレータマシン(2)

DECのミニコンであるPDP-8の場合は、命令語長は12ビットであり、ある程度汎用的な処理ができる命令アーキテクチャとしては驚異的に短い命令語である。そのため、メモリアドレスの指定には7ビットしか使用できず、直接アドレスできるメモリは4K語のページの先頭の128語に限定される。

[16:11 3/29]

2008年03月20日(木)

コンピュータアーキテクチャの話 第112回 単純な構造のコンピュータ - アキュムレータマシン

初期のコンピュータでは、紙テープなどの入力装置からデータを読み、読み込んだデータをメモリに転送するという機能を持った小さなプログラムを手動でスイッチからメモリに格納し、次に、そのプログラムを起動して紙テープに書かれたプログラムをメモリに書き込むというような方法がとられた。この小さなプログラムをBootstrap Loaderという。

[20:09 3/20]

2008年03月09日(日)

コンピュータアーキテクチャの話 第111回 命令セットアーキテクチャとマイクロアーキテクチャ

アーキテクチャには、IntelであればIA-32アーキテクチャ(歴史的な通称はx86アーキテクチャ)のように呼ばれるものと、Netburstアーキテクチャ(Pentium 4)とか、Coreアーキテクチャとか、Core 2アーキテクチャと呼ばれるものがある。

[22:06 3/9]

2008年03月02日(日)

コンピュータアーキテクチャの話 第110回 汎用コンピュータと専用コンピュータ

コンピュータの区分として、汎用と専用という分け方もできる。パソコンやサーバに使われている汎用CPUは、OSが動き、その上でワープロやWebブラウザも動けば、科学技術計算やデータベースも動く。

[16:58 3/2]

2008年02月19日(火)

コンピュータアーキテクチャの話 第109回 ノイマン型コンピュータと非ノイマン型コンピュータ

チューリングマシンは理論的な骨組みとしては強力であるが、計算機械としては実用的ではなく、その意味では、実用的なコンピュータの構造は、ノイマン型と言われる構造である。ノイマンはJohn Von Neumannと言い、高名な数学者である。しかし、この方式のコンピュータはEckert(エッカート)とMauckly(モークリー)がEDVACを設計した時に考案したもので、ノイマン先生は数学的な裏づけを行ったと言われている。

[21:20 2/19]

2008年02月07日(木)

コンピュータアーキテクチャの話 第108回 チューリングマシン

Difference Engineは機械式の加算機であったが、より一般的に、機械的な計算手順でどのような問題が解きうるのかという研究がなされ、1936年に、Alan Turing氏は、計算する機械のモデルとして次のような概念的な機構を考えた。

[08:35 2/7]

2008年01月28日(月)

コンピュータアーキテクチャの話 第107回 ディファレンスエンジン

ディジタル式の計算機械の初期のものとして、Charles Babbageが1849年ころに設計したDifference Engineがある。

[08:56 1/28]

2008年01月20日(日)

コンピュータアーキテクチャの話 第106回 アーキテクチャって何だ?

アーキテクチャは、本来、建築やその他の構築物を設計する技術を意味し、また、設計された建造物そのものに対しても用いられる言葉であった。優れた建造物は沢山あるが、一つを選ぶなら、例えば、ガウディが設計したサグラダファミリア教会である。

[13:12 1/20]

バックナンバー

人気記事

一覧

イチオシ記事

新着記事