ラベル パタヘネ の投稿を表示しています。 すべての投稿を表示
ラベル パタヘネ の投稿を表示しています。 すべての投稿を表示

2008年7月23日水曜日

【パタヘネ】今後

通読完了しての雑感。

  • よく書けてる本
  • MIPSの本
  • この本の内容はコンピュータに関わるエンジニアは理解しているべき。
  • 今まで漠然とした認識だったものが、具体物として認識できた。


今後。

  • SPIMをつかってMIPアセンブリを一通り使えるようになるべし。
  • 記憶階層は再読すべし。
  • あとはのんびり一年くらいかけて問題をやりながら楽しむべし。

2008年7月22日火曜日

【パタヘネ】8章 外部記憶装置、ネットワーク、およびその他の周辺装置 (その4)

こつこつ。

  • 8.5 プロセッサ、主記憶、そしてOSと入出力装置のインタフェース

    • 翻訳の質がもどった。
    • メモリ・マップ入出力という形で、入出力装置アクセスをメモリアクセスとしてしまう。OSのファイルの考え方みたいなのはこの階層にもあるんだ。
    • この節、OSに対する要求が他の部分にくらべてとても明確。OSの肝は入出力管理ということか。
    • DMAとバス・マスターの意味がわかった。

  • 8.6 入出力性能の測定法

    • 余談だが、Amdahl自体はわかるが、Amdahlと収穫逓減の関係がわからない。まず逓減がわからないのでしらべると、逓減=漸減ということで、むずかしい言葉なだけで意味は次第に減るということにすぎない。しかしwikipediaをみてみると限界主義というのが経済学的には中心にあり、それがわからないのでわからない。。。まあ、amadahlの法則はわかるのでいいか。

  • 8.7 入出力システムの設計

    • ここの設計でいっていることは、クリティカルパス法と同じかな。

  • 8.8 実例:ディジタル・カメラ

    • お、ここで三洋の例とは。

  • 8.9 誤信と落とし穴

    • この章の誤信と落とし穴、一番身にしみる。。。

  • 8.10 おわりに

    • 「2002年に生み出された情報の量は5エクサバイトであり、過去3年間で全世界の情報量は倍増したとのことである」
    • これが2002年までの話で、これからBRICsもあるとすると、(情報)世界は破滅に向っているような。


おお!! ついにパタヘネ上下とも通読が終わった!!!

2008年7月21日月曜日

【パタヘネ】8章 外部記憶装置、ネットワーク、およびその他の周辺装置 (その3)

こつこつ。

  • 8.4 プロセッサ、メモリ、入出力装置間のバスその他による接続

    • う、この節になって急に翻訳の質が落ちた。
    • バスの意味を再確認できた。

2008年7月20日日曜日

【パタヘネ】8章 外部記憶装置、ネットワーク、およびその他の周辺装置 (その2)

今日はHDDに強くなるぞ!

  • しかし、あらためてHDDの仕組みをみると、えらい機械的な装置だな。よく動いているな。。。
  • むぅ。あんまり新奇な情報はなし。

こつこつ。

2008年7月19日土曜日

【パタヘネ】8章 外部記憶装置、ネットワーク、およびその他の周辺装置

こつこつ。

  • 8.1 はじめに

    • 入出力装置を分類するための三要素。

      • 入出力動作: behavior
      • 入出力の相手: partner
      • データ転送速度: data rate

    • 入出力装置の評価指標として何を用いるかは、アプリケーションによる。
    • スループットを重視するアプリケーションがある。
    • スループットを重視する場合は、もっとも重要な指標は入出力バンド幅である。
    • あり?バンド幅って何だっけ? (wikipedia: そもそもは周波数の範囲のこと。デジタルでは曖昧であり伝送路容量を表すことも多い)
    • おや?スループットって何だっけ? (wikipedia: 一定時間内に処理できるデータ量のこと。)
    • 入出力バンド幅の測定方法は二種類ある。

      • ある時間内にどれだけの量のデータを転送できるか。これが伝送路容量か。
      • 単位時間当たりに何回の入出力操作を行えるか。これはなんだろ、周波数?

    • 応答時間を重視するアプリケーションもある。
    • この場合、1アクセスあたりの所要時間を小さくすることが有効である。
    • ただし入出力リクエストが非常に大量にある場合は、バンド幅にも左右される。
    • デスクトップコンピュータなどの単一ユーザの場合は応答時間が重要である。
    • 高いスループットと短かい応答時間の両方を必要とするアプリケーションもある。
    • Webサーバとか。

2008年7月18日金曜日

【パタヘネ】7章 容量と速度の両立:記憶階層の利用 (その4)

こつこつ。

  • 7.4 仮想記憶

    • お、プロセス、が出てきた。
    • 「ページがいつ置き換えられるかは、あらかじめ知ることができない。したがって、OSは通常、プロセスを作成するときに、そのプロセスのすべてのページ用の領域をディスク上に取る。このディスク領域をスワップ空間という」おお、全部はじめから取っておくのね。
    • 「誤解しないように付け加えると、オペレーティング・システムは単に別のプロセスにすぎず、メモリを制御するページ表はメモリ上に置かれる。」うむ。
    • そうだよね、仮想記憶というのは記憶保護機構でもあるんだよね。
    • コンテキスト・スイッチの説明などを読むと、想像していた以上に、プロセッサとOSは密に連携して機能を成しているのだな。
    • 最後の追い込みのところが、ぐだぐだになったけど、昨日よりはマシ。


この節も長かった。明日は7章の最終局面へ。

2008年7月17日木曜日

【パタヘネ】7章 容量と速度の両立:記憶階層の利用 (その3)

こつこつ。

  • 7.3 キャッシュの性能の測定と改善

    • ストール (stall):航空機が失速すること。自動車などで、エンジンが急に停止してしまうこと。
    • CPU時間 = (CPU実行クロック数 + メモリ・ストール・クロック数) * クロック・サイクル時間
    • メモリ・ストール・クロック数 = 読み出しストール・クロック数 + 書き込みストール・クロック数
    • 読み出しストール・クロック数 = プログラム当たりの読み出し件数 * 読み出しミス率 * 読み出しミス・ペナルティ
    • 書き込みの場合は方式による。

      • ライト・スルー方式。

        • ストールの原因は2つ。書き込みミスと書き込みバッファのストール。
        • 書き込みストール・クロック数 = (プログラム当たりの書き込み件数 * 書き込みミス率 * 書き込みミス・ペナルティ) + 書き込みバッファ・ストール

      • ライト・バッファ方式。

        • ストールの発生は、書き込みの頻度だけでなく、書き込みのタイミングにも影響されるので、単純な式にはならない。
        • 十分なライト・バッファならば、ストールはわずかであり、無視してよい。

      • ライト・バック方式。

        • ストールの発生は潜在的である。キャッシュ・ブロックの置き換えのタイミングで発生する。


    • 「遺憾なことだが、標準的なアルゴリズム分析では記憶階層の影響は無視されている」


この節、長い。。。後半ぐだぐだになった。まずは通読ということで、先へ進む。

2008年7月16日水曜日

【パタヘネ】7章 容量と速度の両立:記憶階層の利用 (その2)

学習が中期にわたってくると、惰性作業の気がでてくる。学習など滅多にできないので、ひとつひとつの事柄に一期一会で接しなければ。こつこつ。

  • 7.2 キャッシュの基礎

    • キャッシュとメモリ、メモリ幅とバス幅、SDRAMとDDR-SDRAM、ということの意味と違いがちゃんとわかった。

2008年7月15日火曜日

【パタヘネ】7章 容量と速度の両立:記憶階層の利用

こつこつ。

  • 7.1 はじめに

    • 記憶階層は、局所性の法則にもとづいて考えられている。
    • 局所性の法則は、時間的局所性と空間的局所性がある、ということ。

2008年7月14日月曜日

【パタヘネ】6章 パイプラインを用いた性能向上 (その2)

こつこつ。

  • 6.9 高度なパイプライン処理:性能のさらなる向上
  • 6.10 実例:Pentium 4のパイプライン
  • 6.11 誤信と落とし穴
  • 6.12 おわりに

    • みっつまとめて。ここもざっと通読。
    • 高速化するためにCPUの中の機構はかなり複雑になっている。
    • なので、人手でアセンブリプログラムを書いた方が速いコードができるというのは、もう難しいだろう。
    • コンパイラが賢くなったから、人手よりも速いものができるようになったというが、CPU側が複雑になったから、というのも理由にあるように思うということ。


さて、ラストの7章8章は「ソフトウエア寄り」もきっちりやらねばいかんところ。がんばろう。

2008年7月13日日曜日

【パタヘネ】6章 パイプラインを用いた性能向上

こつこつ。

  • 6.1 パイプライン処理の概要

    • パイプライン、頭いいなぁ。
    • この節自体、ざっと、通読という感じになってしまった。

【パタヘネ】5章 プロセッサ:データパスと制御 (その2)

こつこつ。

  • 5.9 実例:最近のPentiumの実現方式の構成
  • 5.10 誤信と落とし穴
  • 5.11 おわりに

    • みっつまとめて。
    • そうか、PentiumってコアはRISCで、そのまわりにCISCを実現するマイクロコードがあるんだ。
    • これらはお話なので、あっさり。


次は6章。パイプラインだ。ここも「ソフトウエア寄り」としてはあっさり。

2008年7月12日土曜日

【パタヘネ】5章 プロセッサ:データパスと制御

下巻開始!
下巻はハードウエア寄りの内容が多い。そこで、前書きの示唆にしたがって、ソフトウエア寄りに読む場合に、「注意深く読む」というところだけを通読の対象とする。後は、二周目のお楽しみ。

  • 5.1 はじめに

    • う、この節、結構叙述がラフなような。自分なりの理解を書いていってみる。

    • データパス作成および制御設計の鍵となる基本原理を明らかにするには、次の3つの命令カテゴリを対象とすれば事足りる。

      • メモリ参照命令:lw, sw
      • 算術論理演算命令:add,sub,and,or,slt
      • branch equal (beq)およびジャンプ(j)

    • 以下では、この3つの命令カテゴリのみを対象とすることにする。

    • 実現方式の概要を示す。
    • 命令のタイプによらず、最初のステップは次の2つである。

      • PCの値をコードが保持されているメモリに送る。
      • 命令のレジスタ・フィールドに指定されている1つまたは2つのレジスタを読み出す。

    • 図5.2で考える。

      1. PCは、命令メモリの該当命令アドレスである。
      2. すなわちPCによって、実行すべき命令を得ることができる。
      3. その命令のフィールドによって、使用するレジスタ・オペランドのレジスタ番号が判明する。
      4. レジスタ・オペランドをレジスタからフェッチする。
      5. lwの場合、その値をALUに送って、メモリ・アドレスを計算する。
      6. う、レジスタ・ファイルの定義がない。。。レジスタとの違いがわからない。
      7. 付録Bに定義あり。レジスタ・ファイルは、レジスタ群で構成された状態論理要素。これに対してレジスタ番号を指定することによってレジスタの読み書きができる、というものらしい。
      8. 計算結果にもとづいては、データ・メモリのアドレスからデータを取得する。
      9. 取得したデータは、レジスタ・ファイルに書き込まれる。
      10. 交差点のように結線されている部分にはMUXがある。
      11. MUXとほとんどの各部は「制御」につながっており、制御される。



とりあえずの理解としては、こんな感じかなぁ。

2008年7月11日金曜日

【パタヘネ】4章 性能の評価と理解 (その4)

こつこつ。

  • 4.4 実例:2つのSPECベンチマークと最近のIntelプロセッサの性能

    • SPEC CPU 2000 の浮動小数点ベンチマークがFortran77で組まれていることに軽い衝撃を受けた。
    • この節を読んで、SPECの理解が少し深まった。

  • もういっちょ。
  • 4.5 誤信と落とし穴

    • うむー。Amadahlの法則は、法則と呼ぶ程のものなのか?
    • なるほど、MIPS値は慎重に取り扱う必要があり。

  • もいっちょ。
  • 4.6 おわりに

    • 特になし。



おお。パタヘネ上巻通読完了!

2008年7月9日水曜日

【パタヘネ】4章 性能の評価と理解 (その3)

こつこつ。

  • 4.3 性能の評価

    • ここは特になし。日頃自分が棲息している領域に近いからかな?

【パタヘネ】4章 性能の評価と理解 (その2)

う、今日は業務がキツくて余力がない。。。
メモとりながら、こつこつ。

  • 4.2 CPU性能とその要員

    • CPU性能に議論を限定する。
    • 最終的な性能測定基準はCPU実行時間である。
    • あるプログラムのCPU実行時間 = そのプログラムのCPUクロック・サイクル数 * クロック・サイクル時間
    • あるプログラムのCPU実行時間 = そのプログラムのCPUクロック・サイクル数 / クロック周波数
    • CPUクロックサイクル数 = プログラムの実行命令数 * 命令当たりの平均クロック・サイクル数(CPI)
    • CPIは、クロック・サイクルについて、"そのプログラムの中で実行された"全ての命令に関する平均値である。
    • (あるプログラムの)CPU実行時間 = (そのプログラムの)実行命令数 * (そのプログラムの)CPI * クロック・サイクル時間
    • 実行命令数とCPIの入手は難しい。
    • 実行命令数の方が測定しやすい。
    • CPUクロック・サイクル数の計測や計算に、命令のクラス分けを利用する便法がある。
      CPUクロック・サイクル数 = Σ(i = 1 to n) (CPIi * Ci)
      Ci:実行されたクラスiの実行命令数
      CPIi:そのクラスの命令あたりのクロック・サイクル数
    • 命令ミックス:「1本もしくは複数本のプログラムにまたがっての種々の命令の出現頻度の集計値。

2008年7月7日月曜日

【パタヘネ】4章 性能の評価と理解

こつこつ。

  • 用語の定義いろいろ。
  • 特に新しい知見はない。

4章は速く進むかも

2008年7月6日日曜日

パタヘネの使い方

3章まで読んで、この本は、とても大事な本だと思う。
CDの内容まで含めると、おそらく1年くらいかけてじっくりと自分の中で練り込んでいくべき内容な気がする。
まず他人の馬を走らせて、そして自分の馬として錬成する、ということ。
そのためには、適度な深さの通読がまず必要。
そして、その後、各章に攻め込む。

【パタヘネ】3章 コンピュータにおける算術演算 (その5)

こつこつ。

  • 3.7 実例:IA-32における浮動小数点演算

    • お話し、という感じ。
    • 「IA-32の浮動小数点アーキテクチャは世界中の他のどのコンピュータとも異なっている。」
    • 「IA-32ファミリの浮動小数点性能はかつて、他のコンピュータよりも大きく遅れをとっていた。」
    • 「IntelはSSE2においてどちらかと言えば旧式の浮動小数点アーキテクチャを採用している。」

  • お話し、なのでもう少々。
  • 3.8 誤信と落とし穴

    • Pentium問題の話など。興味深い。

  • 3.9 おわりに

    • MIPSアセンブリ命令 = MIPSコア命令 + MIPS算術コア命令 + 残りのMIP-32 (+ 疑似MIPS)
    • 本書では、MIPSコア命令を主に扱う。



3.10と3.11は2周目対象。
上巻の読了が見えてきた。あと一章!

2008年7月5日土曜日

【パタヘネ】3章 コンピュータにおける算術演算 (その4)

こつこつ。

  • 3.6 浮動小数点演算

    • 浮動小数点形式は、IEEE754浮動小数点規格で標準化されている。
    • あり? ではCでintとかdoubleとかのサイズが環境毎に違うのは何故なんだ?
    • 整数の命令を使い回せるようにした、浮動小数点形式の定義っぷりが頭いい。
    • guard, stickyのあたりは雰囲気だけで精確には理解していない。
    • CからMIPSアセンブリへの翻訳も雰囲気だけ。
    • 「ビット・パターンが何を表すかはそれを操作する命令によって決まる」



2章と3章は、MIPSアセンブリプログラミングができることを目指して遊びながらやるべきものに思えてきた。SPIMを使いつつ。そしてその裏にあるハードウエアの構造を想定しつつ。

あと2節で3章クリア!