Processing

CPU(Central Processing Unit)

コンピューターにおいて,脳に例えられることが多い.

現在のCPUは,プロセッサの一種であり,マイクロチップとして実装されている.

概要

1. メモリ上にあるプログラムを読み込む 2. 解釈 3. 実行(データの加工) 4. 書き込み

メモリバスとデータバスからなる,CPU以外との通信を行う.

構造

  • http://web.sfc.keio.ac.jp/~rdv/keio/sfc/teaching/architecture/computer-architecture-2018/hennessy-patterson/AppA-fig17.jpg
  • http://web.sfc.keio.ac.jp/~rdv/keio/sfc/teaching/architecture/computer-architecture-2018/hennessy-patterson/AppA-fig18.jpg

主な機能

  • 制御装置
  • 演算装置
  • レジスタ
  • 外部とのインターフェース
  • キャッシュメモリ
  • 浮動小数点演算ユニット(FPU)
  • DMAコントローラ
  • タイマー
  • シリアルインターフェース

などがハードウェアとして実装されている.

クロック数と呼ばれる,信号によって,規則正しいタイミングで動作の統率を取っており, クロック数が高い方が高速に動作するため高性能である.

動作

ノイマン型コンピュータにおけるCPUは,プログラムの実行を書かれた通りにするだけである.

実行に際して,

1. fetch 2. decode 3. execute

という3つのステップを踏む

bit

基本的にコンピュータでは値を2進数で扱うことで値を表現・解釈している.

一度に扱えるあたいの大きさのことで,16bitであれば,2**16種類の情報を扱うことができる.

プロセッサ製造の技術

  • トランジスタ
     - 電気的なon/off動作をするスイッチ
  • 集積回路
     - 数十から数百のトランジスタを1スイッチにまとめて接続したもの

ムーアの法則が,CPUの性能の連続的な増加を予測した時,チップあたりのトランジスタの数の伸び率に着目し. 現代においては,1チップあたりのトランジスタの数は,数百から数百万へと驚異的な伸び率を記録した.

1951年の真空管の時の相対コスト性能比を1とすると,2013年現在の超々大規模集積回路(ULSI)では,相対コスト性能比は250,000,000,000(2500億)となっている

製造の工程

シリコン結晶インゴットから始まる 巨大なソーセージのような形をしており,直径は約10センチ,長さが12〜24センチである.

このインゴットを薄切りにして,厚さ1ミリほどのウエーハにする. このウエーハに化学物質でパターンを作成し,加工し,トランジスタと導体と絶縁体を作成する.

https://www.tel.co.jp/museum/magazine/material/150430_report04_03/img/img_report04_03.jpg

この工程において,微細だとしても傷が生じれば,その部品は不良品となる.

そこで,単一ウエーハ上に独立した構成要素を配置し,切り出す.このようにすることで,実際に傷があるダイのみを破棄すれば大丈夫になる.

集積回路のコスト

  • ダイあたりのコスト = ウエーハあたりのコスト / (ウエーハあたりのダイの数 * 歩留まり)
  • ウエーハあたりのダイの数 = ウエーハの面積 / ダイの面積
  • 歩留まり = 1 / (1 + (単位面積の欠陥数 * ダイの面積 / 2)) ** 2

プロセッサにおける性能の定義

二つのコンピュータを比較する場合

  • 同じプログラムを早く終わらせたコンピュータ(実行時間に焦点を当てた場合)
  • 全てのジョブを先に終わらせたコンピュータ(スループットに焦点を当てた場合)

実行時間を基準にしたコンピュータの定義として

性能x = 1 / 実行時間x

とする.

ここでいう時間とは,CPU実行時間である(経過時間とは異なる)

クロック数

クロックを用いて,プロセッサ内のパイプラインなどのタイミングの同期を測っている. これはCPU時間ではない時間のうちに,どのくらいCPU時間が経過するかを表す.

つまり,プロセッサがどのくらい高速化をするかを表す.

CPU性能

このクロック数を基準に,基本的にCPUの性能は

`あるプログラムのCPU実行時間 = プログラムのクロックサイクル数 * クロックサイクル時間`

`あるプログラムのCPU実行時間 = プログラムのクロックサイクル数 / クロック周波数`

`CPUクロックサイクル数 = プログラムの実行命令数 / 命令あたりの平均クロックサイクル数`

引用


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-22 (月) 14:48:59 (860d)