# 概要 - マルチコア時代のコンピュータ・アーキテクチャに触れながら、メモリについて詳しく解説している # 参考 - 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]]