

アシンクロナス(非同期)SRAMとバーストSRAMとを比べた場合アシンクロナスSRAMの方が遅くなるとなことです。

非同期と付く物のほうが高速という認識でしたが、なぜ非同期の方が遅くなるのでしょうか？  
FPGAの設計に役に立つと思うので教えてください。


CC BY-SA 3.0
2015-05-08T08:12:59.350
9943
2015-05-11T01:29:22.070
2015-05-11T01:29:22.070
9521
9521
question
非同期
非同期SRAMと同期SRAM の違い


あまり自信が無いのですが...

非同期とバーストモードの違いですね。  
バーストモードを持っているメモリは、アクセスの手順が簡略化することが可能です。

任意のメモリアドレスにアクセスする場合は、このアドレスの値ちょうだいってメモリにお願いします。このお願いが都度発生します。が、バーストモードはこっからここまでの値ちょうだいってお願いする方法です。  
次にアクセスしたいメモリアドレスもメモリ内で生成されるため、手順が減る分早くなってるんじゃないかと思います。

<http://h50146.www5.hp.com/products/servers/proliant/whitepaper/wp034_050501/p01.html>


CC BY-SA 3.0
2015-05-08T08:49:02.600
9945
2015-05-08T08:49:02.600
2383
9943
answer


# 非同期SRAMと同期SRAMのアクセス手順の違い

  * 非同期SRAM

    1. マスタはマスタのクロックでアドレスバスにアドレスを指定
    2. マスタはマスタのクロックでチップセレクト(CE:ChipSelect)を有効にする
    3. SRAMはSRAMのクロックでチップセレクトの変化を検出 SRAMはSRAMのクロックでアドレスを読み取る
    4. SRAMはSRAMのクロックでアドレスのデータを取り出す
    5. SRAMのSRAMのクロックでデータバスに出力 
    6. SRAMはSRAMのクロックで出力有効信号(OE:OutputEnable)を変化させる
    7. マスタはマスタのクロックで出力有効信号の変化を検出
    8. マスタはマスタのクロックでデータバスからデータを読み取る
    9. マスタはマスタのクロックでチップセレクトを無効にする  

  * 同期SRAM

    1. マスタは共通クロック(バスクロック)でアドレスバスにアドレスを指定
    2. SRAMは共通クロックのエッジでアドレスを読み取る
    3. SRAMは共通クロックでアドレスからデータを取り出す。(SRAM内部の動作としては共通クロックである必要は無い)
    4. SRAMの共通クロックでクロックでデータバスに出力(バスクロックに同期して出力)
    5. マスタは共通クロックで固定クロック後にデータバスからデータを読み取る。

非同期は異なるクロックでやり取りする必要があるためにCE,OEのようなタイミングを取るための信号で待ち合わせをする必要があります。  
そのかわりにSRAMは自由なクロックで動作できます。  
マスタ側とSRAMの動作クロックに乖離やズレがある場合には非同期を使用します。

同期はCE,OEのような待ち合わせがない分だけ手順が少ないので高速でやり取りできます。  
ただし、クロックに遅れないように動作に余裕を持たせる必要があり、SRAMの動作限界よりも低めで動作することになります。  
マスタ側とSRAMのクロックのズレは許容されません。(FPGAではたいてい共通のクロックから派生しているので普通はズレません)

# バーストと非バーストのアドレス指定の違い

  * バースト  
アドレス指定を1回すると、連続したアドレスのデータを連続で出力します。

  * 非バースト  
アドレス指定を1回すると、指定したアドレスのデータをのみを出力します。

連続したアドレスのデータを読み出す場合、バーストで読みだすとアドレス指定が1回で済むため、アドレス指定の処理を減らすことができます。また連続したアドレスとわかっているので、データ取り出しをパイプライン化することで高速化することができます。

アドレスの指定の仕方の違いだけなので、同期バースト・非同期バーストのどちらも作ることはできます。  
ただし非同期バーストではデータ出力毎にOEの変化のやり取りが必要なので同期バーストよりも手順が多くなります。そのため、通常はバーストといえば同期バーストを指します。

# 非同期が遅くなる理由

非同期非バーストSRAMでは手順が多く、アドレス指定回数も多くなるので遅くなります。  
同期バーストSRAMではSRAM自体の処理速度は非同期に劣りますが、手順が少なくアドレス指定も最小になるために結果的に高速になります。

# 非同期は速いという思い込み

ブロック単位での非同期では各ブロックが自由なクロックで限界まで高速化できるので速くなります。しかしブロック間でやり取りが行われる場合には、何らかの待ち合わせが発生するので、必ずしも速くなるとは限りません。


CC BY-SA 3.0
2015-05-08T10:55:33.403
9954
2015-05-08T11:30:53.960
2015-05-08T11:30:53.960
4926
4926
9943
answer