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

  レジスタ5Dはメモリのライトサイクルの設定と言われている。「リードに全く影響を与えない」、「シーケンシャルライトとランダムライトの両方に、同様の変化を引き起こす」、というベンチ結果から推測して、書き込み動作を行なった後、再びアクセス可能になるまでのリカバリタイムを調整しているのだと推測される。
 初期値はB5hで、定番は速い順に80h、C4h、95hとされている。なお、このレジスタのビット7は1で固定されている。

 まずは初期値のベンチ。

値:B5h[10110101b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
   4K |  114.049   114.118   112.182| 2394.139  2250.976   955.785 
   8K |  116.687   115.902   113.249| 2391.799  2299.634   954.108 
  16K |  117.390   117.004   114.177| 2390.631  2331.406   954.108 
  32K |  117.776   117.664   114.650| 2283.005  2268.191   937.027 
  64K |  118.079   117.898   114.824| 1573.195  1304.487   791.272 
  128K |  118.238   118.214   114.944| 1583.024  1311.369   793.743 
  256K |  118.208   118.171   114.951| 1571.333  1297.688   790.561 
  512K |  118.276    66.834    66.295|  353.585   188.586   177.252 
 1024K |  118.299    54.898    54.716|  118.273    54.896    54.718 
 2048K |  118.297    50.397    50.321|  118.307    50.396    50.322 
 4096K |  118.322    48.412    48.378|  118.317    48.413    48.378 
  8192K |  118.314    47.478    47.461|  118.329    47.478    47.461  









 次に、全くビットを立てないで実験してみる。
 
 

値:80h[10000000b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  115.710   113.842   112.621| 2398.827  2234.524   956.530 
    8K |  117.246   116.748   113.372| 2394.133  2310.485   953.176 
   16K |  117.812   117.448   114.637| 2391.792  2353.827   954.943 
   32K |  118.206   118.068   114.791| 2283.531  2268.710   937.428 
   64K |  118.401   118.376   114.900| 1573.317  1304.571   791.302 
  128K |  118.515   118.422   115.058| 1583.083  1311.410   793.756 
  256K |  118.509   118.502   115.014| 1572.070  1298.965   790.746 
  512K |  118.564    76.444    75.706|  353.621   188.855   177.449 
 1024K |  118.570    64.926    64.658|  118.580    64.923    64.654 
 2048K |  118.590    60.376    60.255|  118.590    60.373    60.258 
 4096K |  118.601    58.332    58.276|  118.574    58.328    58.278 
    8192K |  118.592    57.360    57.332|  118.601    57.358    57.332     






 リード性能には全く影響を及ぼしておらず、ライト性能に2割程度の上昇が見られる。結論から先に言ってしまうと、設定としてはこれが最速である。しかし、筆者の環境では、この設定では安定しなかった。Superπは通っても52万桁、それどころかしばしばレジストリ破壊を引き起こしてブルースクリーンを見る羽目になった。

 では、各ビットを1本づつ立てて検証してみよう。
 
 

ビット0:値=81h[10000001b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  115.356   113.784   112.517| 2394.135  2250.971   955.783 
    8K |  117.342   116.768   113.367| 2391.794  2308.307   952.806 
   16K |  117.631   117.484   114.453| 2390.626  2352.698   954.758 
   32K |  118.192   118.009   114.692| 2240.664  2268.186   937.339 
   64K |  118.390   118.350   114.911| 1573.192  1304.485   791.270 
  128K |  118.506   118.496   114.971| 1581.582  1311.367   792.431 
  256K |  118.512   118.494   115.091| 1572.039  1298.751   790.703 
  512K |  118.544    74.998    74.300|  353.621   188.714   177.233 
 1024K |  118.575    63.397    63.107|  118.587    63.394    63.151 
 2048K |  118.585    58.830    58.691|  118.587    58.808    58.696 
 4096K |  118.583    56.777    56.710|  118.600    56.763    56.714 
   8192K |  118.598    55.795    55.791|  118.593    55.795    55.775   
 
 

ビット1:値=82h[10000010b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  115.705   114.604   111.416| 2396.478  2253.043   956.157 
    8K |  117.344   116.321   113.583| 2392.963  2309.395   952.991 
   16K |  117.747   117.434   114.563| 2391.209  2353.262   954.851 
   32K |  118.128   118.022   114.687| 2283.266  2268.448   930.123 
   64K |  118.371   118.360   114.905| 1573.255  1304.528   791.286 
  128K |  118.505   118.468   115.003| 1583.052  1311.388   793.387 
  256K |  118.512   118.478   115.009| 1567.805  1298.761   790.778 
  512K |  118.555    73.658    72.966|  353.621   188.445   177.041 
 1024K |  118.569    61.934    61.685|  118.592    61.931    61.688 
 2048K |  118.594    57.367    57.261|  118.588    57.366    57.263 
 4096K |  118.602    55.328    55.278|  118.575    55.328    55.279 
  8192K |  118.595    54.361    54.338|  118.581    54.362    54.338  
 
 
 

ビット2:値=84h[10000100b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  114.529   114.214   112.146| 2394.135  2250.971   955.783 
    8K |  116.963   116.368   113.557| 2391.794  2306.132   952.806 
   16K |  117.351   117.243   114.189| 2390.626  2352.698   954.758 
   32K |  117.852   117.785   114.662| 2283.000  2268.186   937.339 
   64K |  118.108   118.090   114.851| 1573.192  1304.485   791.270 
  128K |  118.287   118.217   114.957| 1583.021  1311.367   793.741 
  256K |  118.279   118.237   114.991| 1571.755  1298.654   790.667 
  512K |  118.305    74.987    74.306|  353.610   188.878   177.448 
 1024K |  118.333    63.410    63.173|  118.342    63.397    63.168 
 2048K |  118.352    58.841    58.736|  118.344    58.840    58.726 
 4096K |  118.346    56.802    56.745|  118.357    56.793    56.748 
  8192K |  118.356    55.836    55.828|  118.355    55.828    55.818  
 
 
 

ビット3:値=88h[10001000b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  114.723   113.784   111.457| 2394.135  2250.971   955.783 
    8K |  116.537   115.576   113.486| 2391.794  2303.960   952.806 
   16K |  117.263   117.054   114.069| 2390.626  2352.698   954.758 
   32K |  117.553   117.575   114.547| 2283.000  2268.186   937.339 
   64K |  117.880   117.767   114.838| 1573.192  1304.485   791.270 
  128K |  117.920   117.937   114.898| 1583.021  1311.367   793.741 
  256K |  117.969   118.034   114.911| 1571.471  1298.363   790.595 
  512K |  118.043    73.564    72.961|  353.599   188.867   177.415 
 1024K |  118.044    61.898    61.684|  118.082    61.900    61.687 
 2048K |  118.073    57.353    57.261|  118.068    57.355    57.260 
 4096K |  118.095    55.321    55.279|  118.073    55.322    55.279 
 8192K |  118.085    54.358    54.338|  118.088    54.358    54.338 
 
 
 

ビット4:値=90h[10010000b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  115.366   114.658   112.203| 2398.827  2255.118   956.530 
    8K |  117.195   116.298   113.514| 2394.133  2308.305   953.176 
   16K |  117.697   117.385   114.311| 2391.792  2353.827   954.943 
   32K |  118.090   117.997   114.694| 2283.531  2268.710   935.412 
   64K |  118.352   118.257   114.939| 1573.317  1304.571   791.302 
  128K |  118.494   118.506   114.951| 1583.083  1311.410   793.756 
  256K |  118.516   118.475   114.995| 1571.928  1298.190   790.674 
  512K |  118.539    73.713    73.027|  353.614   188.903   177.469 
 1024K |  118.571    61.983    61.748|  118.566    61.992    61.771 
 2048K |  118.574    57.420    57.314|  118.564    57.425    57.318 
 4096K |  118.576    55.402    55.335|  118.586    55.383    55.331 
 8192K |  118.591    54.418    54.400|  118.584    54.418    54.400 
 

ビット5:値=A0h[10100000b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  115.258   113.546   111.457| 2394.135  2250.971   955.783 
    8K |  117.114   116.492   113.296| 2391.794  2303.960   952.806 
   16K |  117.733   117.522   114.297| 2390.626  2352.698   954.758 
   32K |  118.083   118.009   114.644| 2283.000  2268.186   937.339 
   64K |  118.297   118.270   114.893| 1573.192  1304.485   791.270 
  128K |  118.459   118.438   114.968| 1583.021  1311.367   793.741 
  256K |  118.483   118.488   115.061| 1571.755  1298.460   790.703 
  512K |  118.509    71.274    70.646|  353.606   188.855   177.440 
 1024K |  118.552    59.441    59.209|  118.545    59.457    59.213 
 2048K |  118.569    54.874    54.777|  118.564    54.880    54.792 
 4096K |  118.578    52.850    52.810|  118.576    52.853    52.815 
  8192K |  118.564    51.895    51.866|  118.583    51.894    51.882  
 
 

ビット6:値=C0h[11000000b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  114.685   114.129   111.787| 2398.827  2255.118   956.530 
    8K |  117.120   116.698   113.776| 2394.133  2310.485   953.176 
   16K |  117.621   117.639   114.287| 2391.792  2348.180   954.943 
   32K |  118.174   118.087   114.585| 2283.531  2268.710   937.428 
   64K |  118.388   118.277   114.951| 1573.317  1304.571   791.302 
  128K |  118.479   118.467   114.997| 1583.083  1311.410   793.756 
  256K |  118.493   118.494   115.004| 1572.070  1298.965   790.746 
  512K |  118.566    76.451    75.704|  353.621   188.894   177.456 
 1024K |  118.581    64.922    64.654|  118.589    64.923    64.655 
 2048K |  118.596    60.378    60.256|  118.578    60.378    60.256 
 4096K |  118.594    58.331    58.276|  118.594    58.330    58.275 
 8192K |  118.593    57.359    57.332|  118.595    57.357    57.332  



 この結果から、ビット6は意味を持たないことがわかる。初期値でこのビットが0であることを考えると、このビットは立てずにおくべきだろう。その他のビットは、立てることでライト速度の低下をもたらしている。恐らく、あるビットが立つと、その立ったビットに応じて、決まったリカバリタイムが付加されるのだと思われる。
 その負荷は、多少の誤差はあるものの、おおむね、ビット0,2を立てたときのものを2とすると、ビット4が3、ビット1,3が4、ビット5が7であると言える。

 すると、定説の「最速は80h、それがダメならC4h」は間違ってはいない。今回の検証でも、80hに次ぐものは84h=C4hであったからだ。だが、「C4hもダメなら95h」は正しいとは言えない。
 


値=95h[10010101b]

 Access|  Unbuffered Access[MB/sec]  |  Buffered Access[MB/sec]   
  Size |   Read      Write    RD/M/WR|   Read      Write    RD/M/WR 
 ------+-----------------------------+----------------------------- 
    4K |  115.214   113.837   111.188| 2396.483  2253.047   956.158 
    8K |  116.490   116.302   113.916| 2392.968  2305.049   954.294 
   16K |  117.467   117.156   114.274| 2391.214  2353.267   954.201 
   32K |  117.847   117.741   114.645| 2283.270  2268.452   937.385 
   64K |  118.076   118.020   114.866| 1573.258  1304.530   791.288 
  128K |  118.250   118.232   114.973| 1583.055  1311.391   793.750 
  256K |  118.252   118.257   114.986| 1571.679  1298.742   790.804 
  512K |  118.310    71.220    70.625|  353.604   188.694   177.218 
 1024K |  118.315    59.407    59.193|  118.334    59.400    59.190 
 2048K |  118.351    54.855    54.769|  118.328    54.860    54.771 
 4096K |  118.352    52.830    52.793|  118.340    52.834    52.791 
 8192K |  118.351    51.877    51.859|  118.356    51.877    51.856  





 数値的にもA0hとほぼ同じ、負荷7の設定であることがわかるだろう。従って、負荷2のC4hが通らなくとも、負荷3の90h、負荷4の82h、負荷5の91h、負荷6の8Chなど、試すべき設定はいろいろ存在する。

 かえすがえすも、80hと84hの中間になる負荷1の設定値が存在しないことは非常に残念である。



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