コンピュータの構造

### レジスタ
汎用レジスタ、フラグレジスタ、プログラムカウンタ(EIP)、スタックポインタ(ESP)、制御レジスタ(EFLAGS)がある
フラグレジスタは算術結果を保存
プログラムカウンタは次のどのアドレスから読み込めば良いかを示す
スタックポインタはスタックと呼ばれるメモリ上に確保された記憶領域のアドレスを表す

### 制御装置
フェッチ、デコード(機械語の解読)、指示、プログラムカウンタを更新

### リトルエンディアン
リトルエンディアンはビットにかかわらずアドレスから値を呼び出すことができる
ビッグエンディアンはビットごとに調整しなければならない

x86とは?

x86はインテルがパソコンなど向けに開発製造しているマイクロプロセッサ
8086と共通の命令セットで、Intel Core i3/i5/i7/i9などにも引き継がれている
AMD64に習い64ビットプロセッサをx86-64と呼んでいいる

PowerPCとは?

PowerPCとは、Apple, IBM, Motorolaによって開発されたRISCアーキテクチャ
AppleのMacintoshやIBMのRS/6000などで採用
ゲーム機、組み込みシステム、スーパーコンピュターで使用
現在は新規採用されるケースは少ない

[kernel]マルチプロセッサ

物理メモリを共有して管理するメモリ共有型並列コンピューティング方式のこと
特定のCPUに非対称的に割り付けられた処理に依存することなく、全てのCPUに対して対称的、均一的に処理が割り付けられた並列処理方式
二つ目以降のCPUの起動は、一つ目のCPUがカーネル初期化関数(start_kernel関数)の一番最後に呼び出す関数 smp_init関数にて行われる
二つ目以降のCPU上で動作する初期化プロセスは処理が終了するとそのままアイドルプロセスへと変化する。その後は、スケジューラによりプロセスが割り当てらられるのを待ち続ける

FPGA

FPGAとは?
-> Field Programmable Gate Arrayの略
-> 現場で書き換え可能な論理回路の多数配列:ハードウェア言語で修正が出来るデバイス

ハードウェア言語とは一般的に半導体の回路記述をする際に用いる言語
論理回路とはデジタル信号を扱う回路のこと
論理合成と配置配線はハードウェア言語で記述された回路をFPGAに書き込む為のデータに変換すること

CPLDは汎用ロジックIC数百個~数千個分の回路を内部で構成できる
LSIを超える規模の回路を簡単に構成できる
PLGの一種

【組み込み系の開発工程】
要求分析→要件定義→基本設計・詳細設計→RTL設計(Verilog、VHDLなどを用いてコーディング) →論理合成→動作シミュレーション→配置配線

ビッグデータのデータ処理やディープラーニング向けの並列計算等にFPGAやASICが使われることもある

[CPU]命令セット

– 命令の集まり
– コンピュータで使われる命令の表現形式と各命令の動作を定めたもの
命令 = 操作オペランド + 対象
L ソースオペランド
L デスティネーションオペランド
オペランドとなるものはデータレジスタ、メモリ語、プログラムカウンタ、その他レジスタ

### 命令の表現形式
(1)R型: op(5:操作コード) rs(5:オペランドレジスタ) rt(5) rd(5) aux(11:実行細則)
(2)I型: op(6) rs(5) rt(5) imm/dpl(16:immediate displacement)
(3)A型: op(6) addr(26:メモリアドレス)
命令語が32ビット、命令セットの大きさが64、レジスタ数が32

アセンブリ言語表現
R型:add r2 r3 r1 0
I型:subi r2 r1 14
A型:j 1048581

算術論理演算命令(R型(整数)、I型、 R型(浮動小数点))
加算:add, addi, fadd
減算:sub, subi, fsub
乗算:mul, muli, fmul
除算:div, divi, fdiv
除余:rem, remi
絶対値:abs, , fabs
算術左シフト: sla, ,
算術右シフト: sra, ,
論理積:and, andi
論理和:or, ori
否定:not,
NOR:nor, nori
NAND:nand, nandi
排他的論理和:xor, xori
EQUIV:eq, eqi
論理左シフト:sll
論理右シフト:srl

命令の動作はオペランドがデコーダでALUに行き、レジスタのアドレスを取得して計算する

シリコンチップで集積回路を作るには、シリコン上の構造物の配置を図面に落とす必要がある
基本素子を作り、それを配置していく

ICチップを作るには、まず原材料としてシリコンウェハー(Si)が必要
ピラニア溶液(H2SO4:H2O2)、RCA1(H2O:NH3:H2O2)、RCA2(H2O:HCL:H2O2)で洗浄してHF液につけて自然酸化膜を作る

なるほど、CPUの設計って回路設計だけでなく、物理、化学、光学、電気学などかなり幅広い知識を応用してんだな。

スパコン

スパコンは多数のノード(cpuとメモリ)をネットワークで繋げたもの
典型的なノードは数万ノード(京は8万)
※88128CPU(705024コア) 70万コアってことは1コア9スレッド?
パイプライン方式で処理を高速化
チューニングは作用反作用無視、条件分岐削除、相互作用粒子ソード、除算削除
OSはlinuxが多い
開発言語はFortran, C/C++

中国の「神威太湖之光」。1秒間に9.3京回の計算
中国はCPUも内製

現在の主な用途は、軍事、量子力学、天気予報、気象研究、計算化学、物理シミュレーションなどか。

EC2のCPUはインテル? AMD?

EC2ってiシリーズ使ってるの?
AMDのEPYCを使っているらしい。x86-64マイクロプロセッサ
EPYCのシリーズをみるとL1, L2, L3をみると、L3が拡大化してるな。
—-
Amazon Elastic Compute Cloud (Amazon EC2) は、安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービスです。開発者がウェブスケールのクラウドコンピューティングを簡単に利用できるように設計されています。 AWS は、AMD とのパートナーシップを通じて、最も広くかつ深いインスタンスポートフォリオを強化する追加的な EC2 インスタンスを提供し、ワークロード要件に対するコストとパフォーマンス両方の最適化を実現します。
—-
AMD EPYC プロセッサ
Amazon EC2 インスタンスには現在、全コアターボのクロック速度が 2.5 GHz の AMD EPYC 7000 シリーズプロセッサが搭載されています。AMD ベースのインスタンスは、お客様に新たな選択肢を提供します。コンピューティングリソースが十分に活用されていない多くのワークロードに、よりぴったりなものが見つかる可能性があります。コンピューティングリソースと使用率の間のバランスを最適化することにより、これらのインスタンスでは類似のインスタンスと比べコストを 10% 節約できます。
——
https://aws.amazon.com/jp/ec2/amd/

あれ、GCPもAzureもEPYC? これまじ?
Intelじゃなくて、CPU=AMDなんだ。。

CPUの構造

パッケージ:基盤
ダイ:集積回路、シリコンウェーハ(高純度シリコンから切り出された薄い板、ケイ素(Si))

ダイはバスインターフェイス、キャッシュメモリー、制御装置、演算装置からなる。
バスインターフェイス: 内部バス(CPU内部の回路)、外部バス(CPUとメモリ)
 L アドレスバス、データバス、コントロールバスがある
キャッシュメモリ: バスメモリーから受け取ったデータを一時的に保存
 L 一次キャッシュ、二次キャッシュ、三次キャッシュ
  キャッシュメモリーがあれば、RAMにアクセスしなくて良いため、高速になる。
制御装置: フェッチユニット、デコーダー、レジスタ
 L フェッチユニットは読み込み
 L デコーダーはdecode
演算装置:整数演算ユニット、浮動小数点数演算ユニット、レジスタ
 L 演算ユニットが複数ある場合、マルチコアとなる
 L スレッドはOS(カーネル)が認識するコア数

ピンはCPUとマザーボードとの接続。LGA1151の1151はピンの数
最近のcpuでは発熱量に応じて、自動で電圧を上げて処理速度を高める設計
gpuがcpu内にあるものもある

あら、CPUの中に更にメモリがあるんですね。
Intel Core i7-4785T 2.2GHz Quad-Core SR1QU CPU Processor
Intel Core i5-4570T 2.9GHz SR1CA 5GT/s LGA 1150
Intel Core i7-6900K 20M Broadwell-E 8-Core 3.2 GHz LGA 2011-v3 140W
Threadripper 1950X YD195XA8AEWOF(AMD) 16コア、スレッド32

これはピンが4587個あるってこと?いや、違うな、型番か?LGAの後がピンの数ですね。
こうやってみると、i7-6900Kの8core 3.2GHzの性能が一番良さそうですね。

2.2GHzはクロック周波数。CPUはクロック信号に合わせて処理されるので、クロック周波数が大きい方が、高速になる。

ターミナルから確認できる
mac:ubuntu mac$ system_profiler SPHardwareDataType
Hardware:

Hardware Overview:

Model Name: MacBook Pro
Model Identifier: MacBookPro14,1
Processor Name: Intel Core i5
Processor Speed: 2.3 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache (per Core): 256 KB
L3 Cache: 4 MB
Memory: 8 GB
Boot ROM Version: MBP141.0169.B00
SMC Version (system): 2.43f6
Serial Number (system): **********
Hardware UUID: A7D32EAF-45A2-5CDD-AD44-**********

Number of Processorsが、1CPUで、total number of cores:2なので2コアという意味
AWSのvCPUはスレッドの方。

コア数とスレッド数の確認。logicalcpuの4がカーネルから認識されるコア数ということになる
mac:ubuntu mac$ sysctl -n hw.logicalcpu_max
4
mac:ubuntu mac$ sysctl -n hw.physicalcpu_max
2

カーネルは認識しているコア数(演算ユニット)に割り振って処理をする
CPUメーカーはインテル(シェア80%)、AMD(ゲーム用、キャッシュメモリが多い)

intelのcpu core architectの採用情報を見てみましょう
MS or PhD in CS, EECS, ECE, or related computing discipline
Minimum 10 years of experience with the following skillsets:
o High performance CPU microarchitecture and research
o Substantial experience with CPU simulators, tracing technologies, and performance analysis.
o Quick and efficient software development and debug skills
—-
In this position, you will be involving in the training, design and development of next generation SOC/CPU for wide range of Intel products. Your responsibilities will include some of the following but not limited to:
– Assist design unit owner in Register Transfer Level RTL model functional validation. Use CAD tool extensively to simulate logic behavior and circuit performance and direction of physical design for next generation, deep sub-micron embedded circuit solutions. Verify the circuit behavior against the original simulation model and first silicon.
– Define VLSI Structural Design methodology and developing design flows. Implement structural physical designs, such as synthesis, floor planning, power-grid and clock tree designs, timing budgeting and closure, place and route, RC-extraction and integration. Verify structural physical designs, such as functional equivalency, timing/performance, noise, layout design rules, reliability and power.
– Develop Analog IP on next generation deep submicron process for the Intel’s SOC, perform tasks related to Very-large-scale integration VLSI complementary metal-oxide-semiconductor CMOS IC design, Solid state physics and physical layout. Such tasks may include: Circuit design of high speed clocking related circuits [phase-locked loop PLL, delay-locked loop DLL, bandgap] or high voltage input/output IO [double data rate DDR/LPDDR, General-purpose input/output GPIO, OPIO].
– Responsible for Integration of Third party IPs — Synthesis, functional and/or timing convergence, and pre and post-si debug of IPs developed by various external vendors as well as within the company. Handling of signals crossing power planes and clock domains, industry standard protocols including hardware and software details dealing with Memory LPDDR, storage eMMC, SATA, UFS, peripherals PCIe, USB, and MIPI interfaces in SOC devices. System integration dealing with Si/ Platform/ FW/ MW/ drivers/ OS/ Apps on Android Windows-based tablets and phones.

Intel側はダイの設計をどうするか考えているわけだ。
すると、OSのカーネル側としても、クライアント側のcore数、スレッド数、GHzだけでなく、cpu内のキャッシュメモリ・GPUの設計なども意識して書いていくわけね。

CPU

今更って感じではあるが、やはり、知っておかないといけいないようだ。

CPUの主な役割
– 単純な計算(算術計算、論理演算)、単純な判断、データのコピー、機器の制御

CPUの流れ
システムバス、メモリバス、外部バスなどで接続されている

RAMは作業用のメインメモリ、電源を消すと消える
パーソナルPCは4〜16GB、業務用だと32GB程度
SPは1〜6GB程度
mac bookのメモリとはRAMを表している。surface proでも、4GB、8GB、16GBとある
メモリ容量が多い方が高速になる。足りない分はHDD, SDDなどで補う。メモリは記憶用のICチップが付いている。DDR4が主流。LPDDRはスマホ向けメモリ。メモリスロットに取り付ける。データ転送は一般的には一度に64ビット幅の送信が可能。

EC2の場合だとメモリがRAM 0.5~32, 3904もある
AWSだと、CPUやramはそれぞれのリージョンのデータセンターにあるって理解で良いのかな?
リージョン→東京:4 ap-northeast-1a/b/c/d
Transit Center→Equinix TY2、アット東京中央データセンター
エッジロケーション:東京8
噂では、千葉市印西、江東区枝川、横浜市磯子区あたりにDCがあるとされていますね。
クラウドって言ってるけど、AWS、Azure、GCPも実態は分散オンプレミスって感じか。。

メモリバスはメモリモジュールと他の部品をつなぐモジュール
“バスクロック”で表されていて、メモリが駆動するクロック周波数で変化するデータ転送速度

ん?ってことは、CPUとメモリの接続はマザーボードがやってる?
カーネルは、マザーボードに対してどういうデータの流れで処理してるのかしら??