一般に知られている設定は00h、04h、31h、34h、38hと言ったところで、定番は00h又は31hとされており、00hが通らなければ31h、とするのが定説である。
このレジスタの初期値は35hである。しかし、F5hだ、とした文献も少なからず存在するが、これにはBIOSのリビジョン違い等の要因が考えられよう。ここではあくまで筆者の環境での検証として、先に進もう。このレジスタにはリードオンリービットは存在しない。しかし、ビット6、ビット7のどちらかを立てると、パリティエラーを吐いてフリーズしてしまう。何やら致命的な部分を司っているようだ。エラーを吐く、吐かないに関わらず、この2ビットは弄らないほうが良さそうである。
では検証に入ろう。まずは初期値でのパフォーマンス。
値:35h[00110101b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 91.443 61.436
89.591| 2393.179 2388.505 955.402
8K | 92.248 60.751
90.205| 2390.839 2388.505 953.725
16K | 93.157 60.883
91.313| 2389.671 2388.505 953.725
32K | 93.509 61.112
91.109| 2375.168 2333.806 952.101
64K | 93.676 61.046
91.341| 1590.848 792.958 795.278
128K | 93.618 61.027
91.434| 1591.074 596.221 795.335
256K | 93.646 61.077
91.465| 1590.637 530.360 795.234
512K | 93.639 61.045
56.922| 328.510 109.507 165.792
1024K | 93.687 61.053
47.849| 93.705 78.448 47.873
2048K | 93.705 61.070
44.341| 93.696 68.703 44.350
4096K | 93.716 61.083
42.771| 93.717 64.647 42.777
8192K | 93.701 61.063
42.038| 93.701 62.805 42.014
さて、ここから各ビットの持つ意味を検証していく。
値:00h[00000000b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 115.391 61.402
112.307| 2392.945 2388.271 955.308
8K | 115.929 61.571
111.085| 2390.606 2388.271 953.632
16K | 115.669 61.383 112.620|
2389.438 2388.271 953.632
32K | 115.872 61.470 112.926|
2374.935 2333.578 952.332
64K | 116.383 61.572 112.792|
1590.692 792.880 795.201
128K | 116.206 61.503 112.943|
1590.918 596.163 795.257
256K | 116.305 61.543 113.016|
1590.482 530.308 795.156
512K | 116.297 61.534
68.571| 328.752 110.296 179.788
1024K | 116.307 61.523 57.365|
116.338 79.011 57.300
2048K | 116.321 61.556 52.951|
116.329 69.180 53.001
4096K | 116.323 61.543 51.026|
116.320 65.154 51.007
8192K | 116.330 61.556 50.123|
116.322 63.303 50.104
値:01h[00000001b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 94.332 61.325
89.584| 2393.184 2388.510 955.404
8K | 93.518 60.983
90.491| 2390.844 2388.510 953.727
16K | 92.578 61.451
90.834| 2389.676 2388.510 953.727
32K | 93.160 61.442
91.462| 2375.172 2333.811 952.427
64K | 93.607 61.540
91.561| 1590.851 792.959 795.280
128K | 93.611 61.501
91.416| 1591.077 596.222 795.337
256K | 93.676 61.523
91.490| 1590.641 530.361 795.236
512K | 93.710 61.508
60.207| 328.541 110.259 179.516
1024K | 93.697 61.503
51.442| 93.702 79.014 51.433
2048K | 93.708 61.554
47.932| 93.695 69.149 47.930
4096K | 93.707 61.522
46.352| 93.705 65.143 46.352
8192K | 93.698 61.549
45.598| 93.704 63.297 45.594
値:02h[00000010b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 77.648 61.367
74.627| 2393.184 2388.510 955.404
8K | 77.503 61.017
76.873| 2390.844 2388.510 953.727
16K | 78.132 61.375
76.647| 2389.676 2388.510 953.727
32K | 78.235 61.450
77.047| 2375.172 2333.811 952.427
64K | 78.169 61.577
76.970| 1590.851 792.959 795.280
128K | 78.350 61.525
76.941| 1591.077 596.222 795.337
256K | 78.361 61.506
76.984| 1590.641 530.361 795.236
512K | 78.368 61.564
53.543| 328.516 110.298 179.640
1024K | 78.376 61.538
46.450| 78.343 79.000 46.458
2048K | 78.369 61.552
43.591| 78.358 69.157 43.599
4096K | 78.370 61.512
42.278| 78.361 65.162 42.273
8192K | 78.371 61.551
41.643| 78.373 63.291 41.654
値:04h[00000100b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 110.792 60.038
107.827| 2393.184 2388.510 955.404
8K | 115.892 60.561
111.255| 2390.844 2388.510 953.727
16K | 115.668 60.986 112.654|
2389.676 2388.510 953.727
32K | 115.865 60.966 112.656|
2375.172 2333.811 952.427
64K | 116.311 61.013 113.038|
1590.851 792.959 795.280
128K | 116.413 61.072 112.868|
1591.077 596.222 795.337
256K | 116.300 61.031 113.082|
1590.641 530.361 795.236
512K | 116.305 61.054
64.668| 328.752 109.555 167.355
1024K | 116.332 61.041 53.277|
116.312 78.422 53.275
2048K | 116.303 61.064 48.958|
116.327 68.668 48.956
4096K | 116.327 61.076 47.044|
116.327 64.620 47.045
8192K | 116.331 61.079 46.151|
116.323 62.808 46.150
値:08h[00001000b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 98.218 61.408
94.121| 2393.184 2388.510 955.404
8K | 96.800 61.044
94.405| 2390.844 2388.510 953.727
16K | 98.420 61.420
95.527| 2389.676 2388.510 953.727
32K | 98.629 61.407
95.609| 2375.172 2333.811 952.427
64K | 98.386 61.559
96.074| 1590.851 792.959 795.280
128K | 98.509 61.554
96.059| 1591.077 596.222 795.337
256K | 98.519 61.538
96.025| 1590.641 530.361 795.236
512K | 98.551 61.525
62.249| 328.736 110.320 179.727
1024K | 98.488 61.531
52.923| 98.555 79.010 52.927
2048K | 98.536 61.537
49.241| 98.582 69.210 49.236
4096K | 98.556 61.537
47.585| 98.539 65.145 47.583
8192K | 98.569 61.546
46.799| 98.582 63.297 46.798
値:10h[00010000b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 115.697 61.478
108.170| 2393.184 2388.510 955.404
8K | 117.622 61.577
111.051| 2390.844 2388.510 953.727
16K | 115.484 61.444 112.631|
2389.676 2388.510 953.727
32K | 115.970 61.445 112.411|
2375.172 2333.811 952.427
64K | 116.041 61.573 112.871|
1590.851 792.959 795.280
128K | 116.283 61.505 112.936|
1591.077 596.222 795.337
256K | 116.374 61.525 113.030|
1590.641 530.361 795.236
512K | 116.305 61.540
68.605| 328.761 110.246 188.294
1024K | 116.297 61.560 57.334|
116.315 79.004 57.361
2048K | 116.330 61.533 52.977|
116.329 69.197 52.962
4096K | 116.323 61.555 51.013|
116.314 65.114 51.056
8192K | 116.317 61.536 50.113|
116.328 63.298 50.132
値:20h[00100000b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 112.117 61.478
112.004| 2393.184 2388.510 955.404
8K | 117.852 61.086
113.320| 2390.844 2388.510 953.727
16K | 115.533 61.434 111.820|
2389.676 2388.510 953.727
32K | 115.914 61.443 112.896|
2375.172 2333.811 952.427
64K | 116.236 61.458 112.876|
1590.851 792.959 795.280
128K | 116.179 61.546 113.040|
1591.077 596.222 795.337
256K | 116.365 61.553 113.024|
1590.641 530.361 795.236
512K | 116.324 61.510
68.615| 328.705 110.284 179.771
1024K | 116.304 61.498 57.398|
116.340 78.949 57.295
2048K | 116.311 61.545 53.007|
116.292 69.138 52.984
4096K | 116.306 61.543 51.037|
116.304 65.106 51.061
8192K | 116.302 61.536 50.143|
116.303 63.286 50.122
ビット0、ビット1、ビット3を立てると、メインメモリのリード性能が落ちることがわかる。特にビット1は初期状態以下にまでパフォーマンスが低下している。
また、ビット5はサイズ4KBのアンバッファードリードを若干低下させる。
ビット2はサイズ4KBのアンバッファードリードの低下に加え、若干ではあるがすべてのアンバッファードライトと、サイズ512KB以上のバッファードライトを低下させる。そして、ライト性能の低下以上にリード&ライト性能が低下しており、リード動作からライト動作に移る際にも更なるウェイトが挿入されていると推測される。
いずれにせよ、この5つのビットは速度低下の意味しか持っていないため、パフォーマンスを求めるのであれば立てないほうが良いだろう。
しかし、ビット4は少々複雑だ。サイズ4KBのアンバッファードリード及びアンバッファードリード&ライトを若干低下させるのと引き換えに、サイズ8KBのアンバッファードリードとサイズ512KBのバッファードリード&ライトを向上させている。
と、なると、差し引きどちらが速いか、と言う問題になる。現実問題として、サイズ4KBのアンバッファードリードが遅くなる、というのはかなり痛い。小さな演算はほぼこれに引っかかってくるからだ。反面、256KB超512KB以下のバッファードリード&ライトが生ずる状況は、そうそうないと思える。このサイズに収まる演算で、かつそのデータがトライレベルキャッシュに格納されている状況がそうそうあるとは思えない。
すると、このビットも立てないほうが速いだろう。
これらを総合すると、最速が00h、次点が10hと言うことになり、以下、04hが続く。
ちなみによく使われる設定である31h、34h、38hでの結果は次の通り。
値:31h[00110001b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 91.721 61.380
89.591| 2393.179 2388.505 955.402
8K | 93.534 61.037
90.385| 2390.839 2388.505 953.725
16K | 93.373 61.371
91.474| 2389.671 2388.505 953.725
32K | 93.461 61.473
90.953| 2375.168 2333.806 952.101
64K | 93.720 61.513
91.437| 1590.848 792.958 795.278
128K | 93.611 61.521
91.435| 1591.074 596.221 795.335
256K | 93.634 61.513
91.481| 1590.637 529.198 795.234
512K | 93.682 61.543
60.265| 328.770 110.317 188.325
1024K | 93.695 61.527
51.451| 93.679 78.959 51.413
2048K | 93.686 61.507
47.936| 93.678 69.147 47.925
4096K | 93.684 61.521
46.372| 93.691 65.118 46.346
8192K | 93.703 61.508
45.613| 93.689 63.257 45.597
値:34h[00110100b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 114.914 59.892
112.701| 2393.179 2388.505 955.402
8K | 116.263 61.133
112.266| 2390.839 2388.505 953.725
16K | 115.435 61.130 112.395|
2389.671 2388.505 953.725
32K | 115.908 61.081 112.866|
2375.168 2333.806 952.101
64K | 116.180 60.958 112.911|
1590.848 792.958 795.278
128K | 116.307 61.047 113.029|
1591.074 596.221 795.335
256K | 116.366 61.069 113.024|
1590.637 530.360 795.234
512K | 116.330 61.064
64.674| 328.540 109.497 165.660
1024K | 116.316 61.059 53.260|
116.296 78.379 53.269
2048K | 116.320 61.050 48.955|
116.328 68.679 48.955
4096K | 116.329 61.050 47.047|
116.333 64.662 47.046
8192K | 116.324 61.047 46.146|
116.330 62.818 46.152
値:38h[00111000b]
Access| Unbuffered Access[MB/sec] | Buffered Access[MB/sec]
Size | Read Write
RD/M/WR| Read Write
RD/M/WR
------+-----------------------------+-----------------------------
4K | 95.853 61.374
94.144| 2392.940 2388.266 955.307
8K | 98.171 60.997
94.461| 2390.601 2388.266 953.630
16K | 98.002 61.407
95.465| 2389.433 2388.266 953.630
32K | 98.187 61.437
96.030| 2374.931 2333.573 952.006
64K | 98.498 61.530
95.882| 1590.689 792.879 795.199
128K | 98.498 61.535
96.047| 1590.915 596.161 795.256
256K | 98.451 61.497
96.074| 1590.479 530.307 795.155
512K | 98.456 61.506
62.221| 328.638 110.220 188.110
1024K | 98.483 61.493
52.924| 98.504 78.951 52.903
2048K | 98.506 61.501
49.230| 98.474 69.140 49.228
4096K | 98.482 61.501
47.576| 98.485 65.103 47.576
8192K | 98.495 61.506
46.795| 98.538 63.250 46.791
ビット4、ビット5が大した影響を持っていない以上、下位4ビットの影響がマトモに出ているのが判る。定番とされている31hでは、雀の涙ほどの効果しかない。逆に、あまり使われていない34hは、意外な拾い物かも知れない。標準状態との差はビット0のみなのにもかかわらず、それ相応のパフォーマンスアップが見られるからだ。04hも通らないときに試してみる価値はあるだろう。