各種メモリ/ストレージについて,2024年時点で標準的なアクセス時間,所要クロックサイクル,転送速度,容量を,各種カタログスペックを参考にまとめてみました.
レジスタ(レジスタファイル)
最近のCPUのレジスタ(register)のアクセスは,通常CPUの1クロックサイクルで完了します.2024年時点では,標準的なCPUのクロック周波数は,1〜5GHz程度のオーダーです.1GHzは1秒あたり10億回,すなわち1クロックサイクルは1ナノ秒です.
したがって,2024年時点では,レジスタには0.2〜1ナノ秒程度でアクセスできると言えます.
レジスタのメモリ容量は,レジスタファイルに存在するレジスタ数に依存します,これは命令で明示的に指定できるレジスタ数という解釈もありますが,レジスタ・リネーミングのようなプロセッサ技術を用いると,実際にはより多くのレジスタ数を持っていると解釈することもできます.
x86_64アーキテクチャでは,16本の64ビット汎用レジスタと,16本の128ビットXMM(SIMD)レジスタがあります(他にもYMMやZMMのレジスタがあります).なので,明示的に指定できる範囲のレジスタをメモリ容量に換算すると,汎用レジスタが128バイト換算,SIMDレジスタが256(XMM)〜2048(ZMM)バイト換算であると言えます.
ARMアーキテクチャでは,15本の32ビットもしくは31本の64ビットの汎用レジスタを持っています.なので,明示的に指定できる範囲のレジスタをメモリ容量に換算すると,60〜248バイト換算であると言えます.
RISC-Vアーキテクチャでは,標準的には31本の32ビットもしくは64ビットの汎用レジスタを持っています.なので,明示的に指定できる範囲のレジスタをメモリ容量に換算すると,124〜248バイト換算であると言えます.
なお,現代的なCPUのレジスタには,私たちが想像するよりはるかに多くのトランジスタを使っているそうです.理由としては,現代的なCPUでは,アウト・オブ・オーダー実行が前提になっていて,凄まじい勢いでレジスタに並列アクセスするということです.それを捌くようにするために,トランジスタをものすごくたくさん使って設計しているそうです.このようなレジスタのIPコアは,IntelとかAMDとかAppleとかのCPUの高性能さを支えている原動力の1つになっているそうです.なので,新興メーカーが同じような戦略を採用してCPUを設計しても,思うように性能が上がらないらしいです.
1次キャッシュメモリ(L1キャッシュ)
1次キャッシュメモリ(level 1 (L1) cache memories)について,2022年で最も高性能な部類に入るCPUである,Intel Core i9-13900Kでは,4クロックサイクルでアクセスできます.
2024年時点では,L1キャッシュメモリへのアクセスは,だいたい4クロックサイクルで完了するのが標準的であると仮定し,標準的なCPUのクロック周波数を1〜5GHz程度であることを考慮すると,2024年時点では,L1キャッシュメモリへは0.8〜4ナノ秒程度でアクセスできると言えます.
2024年時点では,L1キャッシュメモリの容量は32KB〜96KB程度であるようです.
参考:
2次キャッシュメモリ(L2キャッシュ)
2次キャッシュメモリ(level 2 (L2) cache memories)について,2022年で最も高性能な部類に入るCPUである,Intel Core i9-13900Kでは,10クロックサイクルでアクセスできます.
2024年時点では,L2キャッシュメモリへのアクセスは,だいたい10〜15クロックサイクル程度で完了できるのが標準的であると仮定し,標準的なCPUのクロック周波数を1〜5GHz程度であることを考慮すると,2024年時点では,L2キャッシュメモリへは2〜15ナノ秒程度でアクセスできると言えます.
2022年時点では,L2キャッシュメモリの容量は512〜4MB程度であるようです.
参考:
3次キャッシュメモリ(L3キャッシュ)
最近の高速なマルチコアCPUには3次キャッシュメモリも搭載されています.
3次キャッシュメモリ(level 3 (L3) cache memories)について,2022年で最も高性能な部類に入るCPUである,Intel Core i9-13900Kでは,34クロックサイクル以内,10.27ナノ秒以内でアクセスできます.
2024年時点では,L3キャッシュメモリへのアクセスは,だいたい20〜80クロックサイクル以内程度で完了できるのが標準的であると仮定し,標準的なCPUのクロック周波数を1〜5GHz程度であることを考慮すると,2024年時点では,L3キャッシュメモリへは4〜80ナノ秒程度でアクセスできると言えます.
2024年時点では,L3キャッシュメモリの容量は16〜256MB程度であるようです.
参考:
メインメモリ (DDR5 SDRAM)
最近の高速な x86_64 アーキテクチャではメインメモリに DDR5 SDRAM を採用しています.
DDR5 SDRAM の最大動作周波数や転送速度については,Wikipedia にまとまっています.
下記記事によると,規格更新により8800Mbpsに拡張になったということです.
DDR5だと遅延時間が短いそうです.下記によると13〜18ns程度のようです.
ただし,これは理論上の数値に過ぎないようです.下記記事によると Intel Core i9-13900K からアクセスした実測値だと86.8nsでした.
また,SDRAMについては,アクセスパターンによって所要クロックサイクル数が大きく異なります.前述の理論上の数値は,最良のパターンの場合にあり得るかも,くらいなのでしょうね.
メインメモリの容量は,1枚あたりの容量×メモリスロット数です.2024年時点で市販されているDDR5 SDRAM 1枚あたりの容量は,1TBのものが最大のようです.
参考: メインメモリ (HBM3)
最近はさらに高速なメインメモリとしてHigh Bandwidth Memory (HBM)が注目されています.
HBM3 Iceboltは、最大6.4Gbpsの処理速度と819GB/sに達する帯域幅という次世代の性能を誇ります。
換算するとなんと6.5Tbps程度となります!
SSD (NANDフラッシュメモリ)
市販されているSSDで最も高速な部類のものは,NVMe M.2 PCIe Gen5規格のもので,理論上,PCIe Gen5バスの最大転送速度で転送できます.一方,普及価格帯のSATA規格のものはSATA3.0規格で最大転送速度が6Gbpsです.
下記記事によるとNVMe M.2 PCIe Gen5のアクセス時間の実測値は88.7マイクロ秒(88,700ナノ秒)程度でした.
下記記事によるとNVMe M.2 PCIe Gen5のアクセス速度の実測値は9.5GB/sとなっています.
下記の記事によると,アクセス時間の実測値は,SATA3.0のSSDで100〜200マイクロ秒(100,000〜200,000ナノ秒)程度ということです.一方,SATA3.0のSSD実効転送速度の実測値は,17〜500MB/s程度です.
容量については,2024年時点で,NVMeで最大4TB,SATAで最大8TBのものが市販されているようです.
またSSDや次のHDDの場合は,複数のSSDを組み合わせてRAIDを組むことで,最大容量を増やしたり転送速度を向上させたりできます.この記事ではその点を考察しませんでした.
HDD (ディスクドライブ)
HDDは,内部にキャッシュを装備していることがあり,また機械的な装置で動作することから,実効アクセス時間,シークタイム,サーチタイムといった,様々な計測値が取られます.
情報処理試験にも出るのですが,アクセスにかかる平均時間は,平均シークタイム+平均回転待ち時間+転送時間=平均シークタイム + 60/(回転数(rpm) * 2) + データ長 / 転送速度 です.
平均シークタイムの目安は数〜10数ミリ秒,回転数は5400〜15000rpm程度,転送速度はSATA3.0の場合6Gbpsです.
読み出し始めるのにだいたい10〜20数ミリ秒くらいはかかるというところのようです.
データ転送速度については,0.5〜200MB/s程度のようです.
容量についてですが,2024年時点で,3.5インチのもので250GB〜24TB程度のようです.
参考: ネットワーク
今,規格化されている最も高速な光通信ネットワークはOSFP(800Gbps)のようです.
まとめ
2024年時点の各種メモリ/ストレージのアクセス時間,アクセス開始までの所要クロックサイクル,容量の目安は次のとおりです.
メモリ/ストレージの種類 | アクセス時間 | アクセス開始までの所要クロックサイクル | 最大転送速度 | 容量 |
---|---|---|---|---|
レジスタ | 0.2〜1ナノ秒 | 1 | 205〜768Gbps換算 | 60〜256(2048)バイト換算 |
L1キャッシュ | 0.8〜4ナノ秒 | 4程度 | 205〜768Gbps換算 | 32〜96KB |
L2キャッシュ | 2〜15ナノ秒 | 10〜15程度 | 205〜768Gbps程度? | 512KB〜4MB |
L3キャッシュ | 6〜80ナノ秒 | 20〜80程度 | 205〜768Gbps程度? | 16〜256MB |
メインメモリ(DDR5) | 80〜ナノ秒 | 80〜程度 | 205〜530Gbps程度 | (1枚あたり)〜1TB |
メインメモリ(HBM3) | ? | ? | 6.5Tbps程度 | ? |
NVMe M.2 SSD (PCIe Gen5) | 90マイクロ秒程度 | 90,000程度 | 〜96Gbps程度 (〜12,000MB/s程度) | 〜4TB |
SATA3.0 SSD | 100〜200マイクロ秒程度 | 100,000〜800,000程度 | 0.14〜4Gbps程度 (17〜500MB/s程度) | 〜8TB |
SATA3.0 HDD (3.5inch) | 10〜20数ミリ秒程度 | 10,000,000〜80,000,000程度 | 0.04〜1.6Gbps程度 (0.5〜200MB/s程度) | 〜24TB |
OSFP | - | - | 800Gbps | - |
各種ハードウェアや,プログラミング言語処理系,OS等は,このような数値の目安を参考に設計するのが妥当でしょう.