# 概要
- マルチコア時代のコンピュータ・アーキテクチャに触れながら、メモリについて詳しく解説している
# 参考
- 2017年時点での状況: https://stackoverflow.com/questions/8126311/how-much-of-what-every-programmer-should-know-about-memory-is-still-valid
# 2 Commodity Hardware Today
![[Pasted image 20251006163350.png]]
- CPUは[[FSB]]で[[Northbridge]]につながっている
- Northbridgeにはメモリコントローラーがあり、[[RAM]]などに繋がっている
- Northbridgeは[[Southbridge]]に繋がっている
- Southbridgeは[[SATA]], [[PCIE]], [[USB]]などのI/Oに繋がっている。
- バスがボトルネックになるので、[[DMA]]やチャネルを複数生やしてメモリインタリーブ(1つのチャネルがビジーな間に次のデータを他のチャネルで読み出す等)などの技術が使われている
![[Pasted image 20251008151956.png]]
- いくつかのシステムでは、Northbridgeにメモリコントローラーを内蔵せず、独立させている
- メモリごとにコントローラーを配置することで、帯域幅を増大させている
![[Pasted image 20251008152252.png]]
- いくつかのシステムでは、CPUごとにメモリを接続している([[NUMA]])
- Figure 2.2と同じように帯域幅を増大させている
- 各CPUは、直接つながっているメモリには高速にアクセスできるが、1ホップ先、2ホップ先へのアクセスはより時間がかかる。非均一だからNUMA。
# 2.1 RAM Types
- [[SRAM]]
- [[DRAM]]