勉強中の疑問 + 備忘1(プロセッサ~メモリあたり。)

# 疑問解消系1
ITパスポート？の参考書見つつ全般的な知識を手に入れたいなと思って勉強中。
今回は最初の最初。
## Chapter1 プロセッサ

### 1. クロック周波数とMIPS, BIPS の違いについて

参考書籍にMIPSの定義がCPUが1[s]上がりに実行できる命令数と書いてあって、クロック数との関係を確認したかったので備忘。

#### Word Def
1. クロック信号  
  マザーボード上に諸々の装置が同期して動くようにクロック信号という同期用の信号を発生させているが、それがクロック信号
1. クロック周波数（クロック数）  
  クロック信号の振動数（~~回/s）を表したもの。単位は[Hz]
1. MIPS(million instructions per second)  
  CPUのこなせる命令数/s を100万単位で表すもの。  
1. BIPS(billion instructions per second)  
  CPUのこなせる命令数/s を10億単位で表すもの。  

#### MIPSの計算方法について
CPUの平均命令実行時間がN[ns]（ナノ秒）である場合

```math
1[s] * \frac{1}{N * 10^{-9}}  * \frac{1}{10^6} = \frac{1000}{N}
```

で算出される。（単位時間 * (1 / 単位命令実行時間) * (million, billion などの単位整形項））
で、平均命令実行時間にも使われるのがクロック数。

#### クロック数を用いた平均命令実行時間の算出について
一つの演算ないしは処理を行うにあたってCPU側では複数の種類の命令(複数の命令種別)を実行する必要がある。
それぞれの命令種別の出現頻度とまた命令実行に必要な時間が異なるため、平均の実行時間を算出するには以下のような計算が必要となる。

k種類の命令種別があり、それぞれ命令実行に必要なclock数をk_clock, 出現頻度をk_freq(0~1) として場合

```math
clock\_ave = \sum_{k}(k\_clock) * (k\_freq)
```

で平均クロック数は計算することができる。  
動作クロック周波数がf[MHz]とした時に、最終的な平均命令実行時間は

```math
\frac{f * 10^6}{clock\_ave}
```

なるほろ。まぁ単語の定義を調べたら納得。  

#### 参考文献
[MIPS, BIPS計算方法](https://algorithm.joho.info/computer/clock-frequency/)

### 2. スーパーコンピューターとメインフレーム
スパコン => 強い。メインフレーム => 強そう。どこで違うのかなと思ったので調査。

#### Word Def
1. スーパーコンピュータ  
  大規模・高速な計算能力を有するコンピューターである。  
  科学技術計算を主要目的とするため、浮動小数点演算の処理能力が高い事が特徴である  
  FLOPSという1秒間に浮動小数点演算が何回できるか、という性能評価の基準によって分けることもある。  
1. メインフレーム（汎用コンピュータ）  
  主に企業など巨大な組織の基幹業務用などに使用される、大型コンピュータを指す用語。  
  サーバー+クライアント型のモデルやクラウドタイプのものとよく対比で使われてそう。  
  DB周りではトランザクションなどがそれらより速そうなのと、保守運用が楽っぽい。  
  スパコンと比べると性能は下がる。（確かに企業用で用意しているならスパコンレベルぽいぽいは作れなさそうだし売れなさそう。）  

#### 所感
なんかそもそも比べる対象ではない気がしてきた。  

- スパコン => top of 今のPC (基準は浮動点小数)  
- メインフレーム => 企業などが保持するPCの構成の一種  

みたいな。一旦はこれで終了しよう。

#### 参考
[スパコンwiki](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
[FLOPS](https://ja.wikipedia.org/wiki/FLOPS)
[メインフレームwiki](https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0)  



### 3. SRAM, DRAM, ハードディスク、SSDの違いについて

前にやった気もするけどわからなくなっちゃった。

#### Word Def
1. ROM（Read Only Memory)   
  即時では読み出しのみ可能なメモリ。何かしらしたら書き込みが可能なものも含む。  
  以下には部品としてのメモリを記載したが、パンチカードなどもこちらの分類になる。
  1. マスクROM  
    ICの部品であるマスクに必要な情報を載せ、読み出ししかできない  
    変更の必要があればROMコレクションというパッチを当てて対応するしかない  
    量産する分には安く済むが、初期開発費用が高い、修正が大変などから開発中はあまり使用されない。  
    最近で使われたものだと3DSのソフトとか。
  1. PROM（Programmable ROM）  
    ROMは基本書き込めないが、特定の手順を行うことによって書き込めるようにしたROM  
      1. ヒューズROM  
        1回しか書き込みできない。  
        初回時にヒューズ(or何がしか)を破壊して書き込みを行い、以降読み出しのみできる。（完全に物理的に01を記入している）  
      1. EPROM（Erasable Programmable ROM）  
      複数回書き込みできる。正確にはデータを消去することで複数回書き込めるようになっている。  
      UV-EPROM（紫外線で消去）、EEPROM（高電圧で消去）などがある。  
1. RAM（Random Access Memory）  
  本来であれば、格納されたデータに任意の順序でアクセスできる（ランダムアクセス）メモリといった意味。    
  「端から順番に」からしかデータを読み書きできない「シーケンシャルアクセスメモリ」と対比した意味を持つ語であったが、最近ではROMとの対比で使われることが多い。  
  1. DRAM（Dynamic RAM）
    チップ中に形成された小さなキャパシタに電荷を貯めることで情報を保持する記憶素子である。  
    放置すると電荷が放電し情報が喪われるため、常にリフレッシュ（記憶保持動作）を必要とする。（揮発性メモリ）  
    常に動作しているという意味で、Dynamic（動的）とついているらしい。  
    リフレッシュにより電力消費が多いが、回路が単純なため（メモリセルあたりコンデンサとトランジスタくらいらしい。周辺に余分な回路が必要となるが十分集積度は高い。）大容量を安価に提供できるという利点がある。    
    「 微細化の進展とともにセル面積や消費電力が小さくなり、アクセス時間が短くなっている。」、らしい。（構造が理解できていないので、一旦後回し。）    
       - リフレッシュサイクル: リフレッシュがどのくらいの間隔をおいて行なわれるかを示す値。通常は1行アドレスにつき15マイクロ秒～60マイクロ秒程度の間隔で電荷が補充される。    
      - リフレッシュレート: 時間間隔ではなくて単位時間（1秒間）当りにリフレッシュの行われる回数を示す値。上記から算出可能なはず。    
   1. SRAM（Static RAM）  
    内部的にはフリップフロップなどの回路を持った記憶素子。  
    内部構造的に上記の回路ような「スタティック(静的)な回路方式により情報を記憶するもの」であることからその名があるらしい（staticな回路方式とは...）  
    フリップフロップの回路で01を実現しているため揮発性。  
    消費電力はリフレッシュ動作が無いため一般にDRAMより小さい。  
    wikiに「クロック周波数と消費電力」とかも載っているから、必要なら確認した方がよさそう。  
    セルサイズはDRAMの約 6倍大きいが、速度はDRAMの10倍高速とのこと。  
1. 揮発性メモリ  
  メモリを分類する観点のひとつで、電源を供給しないと記憶している情報を保持できない性質（のメモリ）のこと。  
  RAMは大半揮発性。  
  メインメモリは今の所揮発性が多い。多分速度が速いから？  
  SRAMのようにごくわずかな待機電流で記憶を保持可能な場合、内蔵のキャパシタ and・or 電池によりバッテリーバックアップし、短時間or長期の電源切断に渡って、記憶を保持させるようなシステムもある。  
1. 不揮発性メモリ  
  メモリを分類する観点のひとつで、電源を供給しなくとも記憶している情報を保持できる性質（のメモリ）のこと。  
  1. ROM  
    上記参照  
  1. フラッシュメモリ（フラッシュEEPROM or フラッシュROM）  
    基本的な構造はEEROMと同じような構造らしい。  
    NAND,NOR型があるらしい。  
    制御ゲートと半導体間に絶縁膜で覆われた浮遊ゲートというものがあり、制御ゲート・半導体間に高電圧を印加すると半導体中の電子が浮遊ゲートに飛び込み、浮遊ゲートが負に帯電する。  
    それにより制御ゲートに電圧を加えても電流が流れなくすることができる。  
    といっても多分ここがわかりやすい => https://www.logitec.co.jp/data_recovery/column/vol_002/  
    ちなみに電荷の出し入れが発生するために寿命がそれなりにあって数百〜数万と言われているっぽい。そのため主記憶装置としてはまだ使われていないそう。  
    最初は集積率が悪かったようだけれどSLC(Single Level Cell) => QLC(Quadruple Level Cell)に変化する中で大容量化が進んでいるそうな。  
    一つのメモリセルの中に電子がどの程度の量あるのかを検知することで1bit以上を表現するような仕組みらしい。
  1. 磁気記憶装置  
    データ記録に磁性体を塗布した円盤を回転させて行う記録媒体でハードディスクと呼ばれているもの？  
    磁性体を円形の板に塗布し、磁化することで01を表している。  
    埃汚れ衝撃に弱い。  
    補助記憶装置によく用いられる。  
    SSDと比べ、大容量でも低価格なことが特徴。  
    ハードディスク（HDD）、フロッピーとか。  
  1. SSD（Solid State Drive）  
    SSDとしては広義に、メモリにRAMを用いたもの（ハードウェア方式のRAMディスク）と、フラッシュメモリを用いたものに分類される。  
    基本はフラッシュメモリを用いたものを指すっぽい。  
    状態変化をHDDのようにディスク回転、軸の移動、磁気を反転などせず、電荷の出し入れにしか使っていない為か消費電力、速度ともにHDDより良いらしい。  
    また構造的にもHDDより衝撃などには強い。  
  1. 光ディスク（MOディスク、Magneto-Optical disk）  
    光学ドライブで読み書きする。  
    半導体レーザーの反射によって読み込み、レーザー照射によって化学変化させることなどによって書き込んだりする。  
    読み込み専用についてはpitと呼ばれる小さな窪みを先につけておいて、それによる反射の違いを用いて読み込んでいる。  
    CD,DVDなど。  
  1. 紙テープ、パンチカード  
    ある意味ROM  

#### 所感
ざっと追うことはできたけれど、磁気~光あたりがまだまだ調査不足。  
ドライブ、記憶装置、記憶素子あたりの単語から整理した方がよさそう。  

#### 参考
[リフレッシュサイクル、レートwiki](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%83%AC%E3%83%83%E3%82%B7%E3%83%A5%E3%83%AC%E3%83%BC%E3%83%88)
[SRAM,DRAM東工大](http://www.ssc.pe.titech.ac.jp/lectures/icTitech/091207_Titech_IC_08.pdf)
[SRAM wiki](https://ja.wikipedia.org/wiki/Static_Random_Access_Memory)
[DRAM wiki](https://ja.wikipedia.org/wiki/Dynamic_Random_Access_Memory)
[ロジテックフラッシュメモリ動作原理](https://www.logitec.co.jp/data_recovery/column/vol_002/)
[光ディスク wiki](https://ja.wikipedia.org/wiki/%E5%85%89%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF)
[磁気ディスク wiki](https://ja.wikipedia.org/wiki/%E7%A3%81%E6%B0%97%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF)