[H8-ML(6073)] Re: [H8-ML(6070)] バーストROMインターフェイスの使い方
From: "Makoto Hirasawa" <hirasawa@xxxxxxxxxxxxxxxx>
Date: 2006年09月21日(木)09時42分39秒
こんにちは、平澤です。
あまり、H8については詳しくないのですが、わかる範囲で説明します。
推敲する時間が取れませんので間違いがありましたら、ご指摘下さい。

まず、最初に知らなくてはならないのは、バーストアクセスをする
為にはそれ専用のROM、RAMが必要になるという事です。

普通に売っているEEPROMや、フラッシュROM、SRAM等ではバースト
アクセスに対応していません。対象となるブツがバーストに対応
している事を確認したら、次に通常のアクセス時間、バーストアクセス
時間を(言葉は違うかも)を確認します。

さて、バーストROMですが、H8S2368のハードウエアマニュアルの
228ページを参照してください。ここに書いてある図を見ながら
解説します。

左側にフルアクセス(T1,T2)と書いてありますよね。これが通常の
アクセス方式でこの図では2サイクルで完了しています。
次に右側がバーストアクセスで(T1)とあります。1サイクルで完了
しているのが判ると思います。つまり、バーストアクセスとは
1ワード(その時のバス幅による)をCPU内部に取り込むための
サイクル数を減らすことを目的としています。

たとえば、先ほど確認してもらったROMで通常アクセスが100nSec,
バーストアクセス時に10nSecだとします。
※数値は適当にしています。正確にはマニュアルのAC特性を
よく検討して下さいませ。

H8S2368は最大34MHzで動作出来るようなので1サイクルは30nSec
とすると、先ほどの図でフルアクセス時には 3Wait 必要になり
バーストアクセス時には 0Wait ですみます。
つまり
 通常アクセス  ( T1 + 3Wait + T2 ) = 5 サイクル(約150nSec)
が
 バーストアクセス( T1 )              = 1 サイクル(約 30nSec)
となる訳です。

ここからキモなのですが、H8はマシン語(今でもそう言うのか不明)レベルでは
1つの命令が2,3,4バイトで構成されています。もし、3バイト構成の
命令でROMのバス幅は8ビットであるなら、
 バーストなしの時
  通常 + 通常 + 通常 = 15サイクル(450nSec)
 バーストありの時
  通常 + バースト + バースト = 7サイクル(210nSec)
 となります。

また ROM幅が8ビットでロングワード(4byte)のデータを取り込む時には
 バーストなしの時
  通常 + 通常 + 通常 + 通常 = 20サイクル(600nSec)
 バーストありの時
  通常 + バースト + バースト + バースト = 8サイクル( 240nSec )
 となります。

ここでまでで、ピンときたと思いますが、ソフトウエアから積極的に
バーストを利用したのであれば、型(一度に扱う大きさ)を大きくする事が
必要になります。
 ROM幅が8ビットで char なら
  通常
 ROM幅が8ビットで short なら
  通常 + バースト
 ROM幅が8ビットで long なら
  通常 + バースト + バースト + バースト
となります。

また、H8には[DMA]や[ブロック転送]があったと思います。これらを積極的に
利用すれば、上記の理屈(連続アドレスのアクセス)でバースト頻度が増えます。

以上 乱文ご容赦下さい。



スレッド概略
[6070(R)](起点)
 └[表示中]
   └[6075(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]