レジスタ5Fの検証
<Top Page>

 レジスタ5Fが何を司るのかは実のところ不明である。一説にはメモリのリフレッシュサイクルを司っている、とも言われるが、実際の挙動はそれを裏付けるとまでは言えなかった。

 結論から言うと、このレジスタを操作する意義は薄い。どう操作しようが、大した差は出なかったからだ。しかし、僅かながらもパフォーマンスを向上させる設定が存在したので、それについて検証していく。
 このレジスタの初期値は40hであり、リードオンリービットは無い。一般に流布されている設定は60h、D0h、F0hが有名であり、定番はD0hのようだ。
 

 標準状態でのパフォーマンスは以下の通りである。

値:40h[01000000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   91.382    60.238    89.798| 2393.189  2388.514   955.406
   8K |   93.551    61.225    90.356| 2390.849  2388.514   953.729
  16K |   92.878    60.959    91.760| 2389.681  2388.514   953.729
  32K |   93.541    60.882    91.079| 2375.177  2333.816   952.105
  64K |   93.729    61.056    91.205| 1590.854   792.961   795.282
 128K |   93.686    60.977    91.412| 1591.081   596.223   795.338
 256K |   93.634    61.041    91.487| 1590.644   530.362   795.237
 512K |   93.651    61.102    56.959|  328.800   109.549   165.684
1024K |   93.719    61.093    47.883|   93.704    78.401    47.875
2048K |   93.700    61.085    44.351|   93.715    68.658    44.347
4096K |   93.705    61.075    42.769|   93.717    64.629    42.778
8192K |   93.718    61.085    42.028|   93.715    62.802    42.029
 

 次に、ビットごとの検証に入る。まずは00h。

値:00h[00000000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   71.775    21.839    70.794| 2392.940  2388.266   955.307
   8K |   72.871    21.782    71.703| 2390.601  2388.266   953.630
  16K |   73.042    21.761    71.980| 2389.433  2388.266   953.630
  32K |   73.226    21.749    72.031| 2374.931  2333.573   952.330
  64K |   73.325    21.738    72.076| 1590.689   792.879   795.199
 128K |   73.315    21.735    71.998| 1590.915   596.161   795.256
 256K |   73.292    21.732    72.056| 1590.479   530.307   795.155
 512K |   73.314    21.732    41.170|  328.545    41.755    74.138
1024K |   73.333    21.732    33.910|   73.304    28.588    33.911
2048K |   73.319    21.734    31.152|   73.311    24.695    31.155
4096K |   73.311    21.734    29.943|   73.312    23.118    29.942
8192K |   73.306    21.732    29.369|   73.302    22.403    29.369
 

 とんでもなく遅くなっている。他のビットも1本だけ立てて試した結果(ベンチ結果は割愛する)、判明したのは、

1、ビット6が0である場合はパフォーマンスが極端に低下する。
2、下位4ビットはパフォーマンスに影響しない。

という2点である。従って、下位ニブルは初期値通りに0として、上位ニブルの検証に入る。前提として、ビット6は1でなければならないので、これと他のビットの挙動を組み合わせる。
 
 

値:50h[01010000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   92.596    61.298    90.637| 2393.184  2388.510   955.404
   8K |   94.906    60.957    91.343| 2390.844  2388.510   953.727
  16K |   94.649    61.344    92.519| 2389.676  2388.510   953.727
  32K |   94.538    61.289    92.706| 2375.172  2333.811   952.427
  64K |   94.490    61.339    92.462| 1590.851   792.959   795.280
 128K |   94.688    61.360    92.486| 1591.077   596.222   795.337
 256K |   94.627    61.349    92.538| 1590.641   530.361   795.236
 512K |   94.640    61.344    57.589|  328.751   110.050   167.423
1024K |   94.687    61.361    48.454|   94.666    78.766    48.447
2048K |   94.672    61.381    44.887|   94.677    68.980    44.885
4096K |   94.667    61.377    43.296|   94.740    64.968    43.295
8192K |   94.666    61.376    42.536|   94.655    63.133    42.541
  

値:60h[01100000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   92.849    60.278    93.441| 2393.179  2388.505   955.402
   8K |   94.807    61.032    92.904| 2390.839  2388.505   953.725
  16K |   94.403    61.316    92.574| 2389.671  2388.505   953.725
 32K |   94.661    61.431    92.453| 2375.168  2333.806   952.426
 64K |   94.692    61.428    92.805| 1590.848   792.958   795.278
 128K |   94.871    61.477    92.695| 1591.074   596.221   795.335
 256K |   94.853    61.467    92.701| 1590.637   530.360   795.234
 512K |   94.862    61.439    57.694|  328.732   110.209   167.883
1024K |   94.852    61.473    48.541|   94.853    78.914    48.527
2048K |   94.861    61.477    44.951|   94.857    69.073    44.962
4096K |   94.854    61.480    43.355|   94.875    65.084    43.359
8192K |   94.880    61.458    42.601|   94.853    63.221    42.601
   
値:C0h[11000000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   92.344    61.146    90.006| 2393.179  2388.505   955.402
   8K |   93.874    61.101    90.884| 2390.839  2388.505   953.725
  16K |   93.141    61.430    91.932| 2389.671  2388.505   953.725
  32K |   94.394    61.467    92.245| 2375.168  2333.806   952.426
  64K |   94.034    61.435    91.864| 1590.848   792.958   795.278
 128K |   94.256    61.516    91.962| 1591.074   596.221   795.335
 256K |   94.164    61.502    91.981| 1590.637   530.360   795.234
 512K |   94.186    61.523    57.018|  328.762   110.234   166.284
1024K |   94.281    61.534    47.928|   94.274    78.941    47.927
2048K |   94.211    61.488    44.388|   94.182    69.142    44.368
4096K |   94.187    61.528    42.783|   94.187    65.117    42.793
8192K |   94.180    61.539    42.028|   94.206    63.278    42.038
  

 僅かだが、どのビットを立ててもパフォーマンスの向上は見られた。この中ではビット5を立てた場合が一番向上率が高い。有名な60hの設定もあながち間違いではないと言うことだ。

 次に、これと他の2ビットとの組み合わせを検証する。

値:70h[01110000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   93.113    60.217    91.010| 2393.418  2388.743   955.497
   8K |   93.495    61.011    92.961| 2391.078  2388.743   953.821
  16K |   94.453    61.381    92.567| 2389.910  2388.743   953.821
  32K |   94.803    61.437    92.806| 2375.405  2334.039   952.521
  64K |   94.844    61.487    92.763| 1591.006   793.037   795.358
 128K |   94.949    61.481    92.885| 1591.233   596.280   795.414
 256K |   94.913    61.464    92.834| 1590.796   530.413   795.313
 512K |   94.924    61.490    57.772|  328.739   110.190   167.890
1024K |   94.973    61.471    48.575|   94.956    78.976    48.565
2048K |   94.932    61.497    44.989|   94.954    69.164    44.992
4096K |   94.985    61.499    43.391|   94.946    65.110    43.393
8192K |   94.973    61.497    42.633|   94.941    63.232    42.639
 

値:D0h[11100000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   93.135    60.224    91.614| 2393.179  2388.505   955.402
   8K |   95.490    61.592    92.070| 2390.839  2388.505   953.725
  16K |   95.130    61.622    93.010| 2389.671  2388.505   953.725
  32K |   95.741    61.457    93.354| 2375.168  2333.806   952.426
  64K |   95.331    61.513    93.407| 1590.848   792.958   795.278
 128K |   95.514    61.531    93.376| 1591.074   596.221   795.335
 256K |   95.521    61.542    93.423| 1590.637   530.360   795.234
 512K |   95.523    61.529    57.769|  328.469   110.247   168.522
1024K |   95.538    61.548    48.511|   95.546    78.992    48.511
2048K |   95.548    61.556    44.925|   95.552    69.145    44.914
4096K |   95.541    61.541    43.302|   95.544    65.152    43.311
8192K |   95.546    61.534    42.545|   95.546    63.297    42.542
 

値:F0h[11110000b]
Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]  
 Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR
------+-----------------------------+-----------------------------
   4K |   93.714    61.408    94.186| 2393.179  2388.505   955.402
   8K |   94.609    61.094    92.619| 2390.839  2388.505   953.725
  16K |   95.506    61.427    93.353| 2389.671  2388.505   953.725
  32K |   95.593    61.438    93.656| 2375.168  2333.806   952.426
  64K |   95.810    61.494    93.782| 1590.848   792.958   795.278
 128K |   95.812    61.496    93.795| 1591.074   596.221   795.335
 256K |   95.880    61.549    93.750| 1590.637   530.360   795.234
 512K |   95.862    61.538    57.907|  328.734   110.289   169.055
1024K |   95.868    61.500    48.629|   95.876    78.991    48.627
2048K |   95.867    61.529    45.016|   95.866    69.180    45.014
4096K |   95.874    61.537    43.403|   95.869    65.133    43.406
8192K |   95.876    61.538    42.637|   95.876    63.288    42.638
  

 どう設定しても差は僅かである。一応、最速はF0hであり、筆者もこれを採用している。次点はD0h、以下70h、60hと続く。
 しかし、繰り返しになるが、この程度の向上では無茶をする意味は余りない。他の設定を煮詰めた後で、余裕があれば設定する程度に留めたほうが賢明であろう。



<INTELSATの研究の目次へ>
<研究室入口へ>