HIDasp速度比較 の変更点
[[HIDasp高速化]]
#contents
----
*HIDasp-0928版の実行速度(UHCIの場合) [#td3ee350]
-FUSIONの効果測定
|コマンド |評価内容| FUSIONなし |FUSIONあり|
|hidspx -d0 2kB.hex |2kB Write/Verify |2.72秒 |2.14秒(957B/秒)|
|hidspx -d0 8kB.hex |8kB Write/Verify |6.57秒 |5.56秒(1.47kB/秒)|
-条件:ターゲット=ATmega88(8kBの場合)ATtiny2313(2kBの場合)
- マザー=i815 ハブ無し直結。
-ログ
-2kB書き込み. FUSION無し.
bash-3.2$ time ./hidspx.exe -ph -d0 2kb.hex
Detected device is ATtiny2313.
Erase Flash memory.
Write Flash: 2048/2048 B
Verify Flash: 2048/2048 B
Passed.
real 0m2.722s
user 0m0.020s
sys 0m0.030s
-2kB書き込み. FUSIONあり.
bash-3.2$ time ./hidspx1.exe -ph -d0 2kB.hex
Detected device is ATtiny2313.
Erase Flash memory.
Write Flash: 2048/2048 B
Verify Flash: 2048/2048 B
Passed.
real 0m2.144s
user 0m0.040s
sys 0m0.010s
-2kB読み出し.
bash-3.2$ time ./hidspx.exe -ph -d0 -rp >out.hex
Detected device is ATtiny2313.
Read Flash: 2048/2048 B
Passed.
real 0m1.269s
user 0m0.030s
sys 0m0.030s
-8kB書き込み. FUSIONなし.
bash-3.2$ time ./hidspx.exe -ph -d0 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m6.570s
user 0m0.020s
sys 0m0.020s
bash-3.2$ time ./hidspx1.exe -ph -d0 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
-8kB書き込み. FUSIONあり.
bash-3.2$ time ./hidspx1.exe -ph -d0 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m5.558s
user 0m0.020s
sys 0m0.030s
-8kB読み出し.
bash-3.2$ time ./hidspx1.exe -ph -d0 -rp >out.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m2.924s
user 0m0.020s
sys 0m0.020s
bash-3.2$
*HIDasp-0928版の実行速度(参考:OHCIの場合) [#td3ee350]
-FUSIONの効果測定およびUHCIとの速度比較
|コマンド |評価内容| FUSIONなし |FUSIONあり|
|hidspx -d0 8kB.hex OHCI|8kB Write/Verify |3.80秒 |3.60秒(2.27kB/秒)|
|hidspx -d0 8kB.hex UHCI(上の表から写し)|8kB Write/Verify |6.57秒 |5.56秒(1.47kB/秒)|
-条件:ターゲット=ATmega88(8kBの場合)ATtiny2313(2kBの場合)
- マザー=SiS USB1.1ハブ経由にて接続。
-UHCI(インテル、VIA系のUSBホストアダプタ)でも、間にUSB2.0ハブを入れると、OHCI並みの速度になるかもしれない(マイクロフレーム効果がある。未確認)
-UHCI(インテル、VIA系のUSBホストアダプタ)でも、間にUSB2.0ハブを入れると、OHCI並みの速度になるかもしれない(マイクロフレーム効果がある。%%未確認%% --一応SiSマザー+USB2.0ハブで確認。intelマザーでは未確認)
--但し、ホストPCとUSB2.0ハブ間が480Mbps接続でないとマイクロフレームがサポートされない。
-ログ
-8kB書き込み. FUSIONなし.
bash-2.02$ time ./hidspx.exe -ph -d0 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m3.799s
user 0m0.015s
sys 0m0.015s
-8kB書き込み. FUSIONあり.
bash-2.02$ time ./hidspx1.exe -ph -d0 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m3.597s
user 0m0.015s
sys 0m0.000s
-8kB読み出し
bash-2.02$ time ./hidspx.exe -ph -d0 -rp >out.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m1.772s
user 0m0.015s
sys 0m0.000s
bash-2.02$ exit
----
*HIDasp-0926版の実行速度 [#td3ee350]
|コマンド |評価内容| 改良前 |高速化後|
|hidspx -d0 test.hex |8kB Write/Verify |10.94秒 |5.56秒(1.47kB/秒)|
|hidspx -d0 -rp >XX.hex |8kB Read |8.39秒| 2.93秒(2.79kB/秒) |
-条件:ターゲット=ATmega88(20MHz水晶)
- マザー=i815 ハブ無し直結。
-ログ
bash-3.2$ time avrspx.exe -d0 -rp >1
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m2.934s
user 0m0.020s
sys 0m0.020s
bash-3.2$ time avrspx.exe -d0 xx.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m5.558s
user 0m0.030s
sys 0m0.020s
bash-3.2$
-intelのUSBホストの場合は、あまり速度が出ないようです。
*HIDasp-0926版の実行速度(OHCIの場合) [#g0b8661b]
|コマンド |評価内容| 改良前 |高速化後|
|hidspx -d0 test.hex |8kB Write/Verify |10.94秒 |3.75秒(2.18kB/秒)|
|hidspx -d0 -rp >XX.hex |8kB Read |8.39秒| 1.71秒(4.79kB/秒) |
-条件:ターゲット=ATmega88(20MHz水晶)
- マザー=SiS USB1.1ハブ経由にて接続。
-ログ
bash-2.02$ time ./hidspx.exe -ph -d0 test.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m3.753s
user 0m0.031s
sys 0m0.000s
bash-2.02$ time ./hidspx.exe -ph -rp -d0 >xx.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m1.707s
user 0m0.015s
sys 0m0.000s
bash-2.02$
----
|コマンド |評価内容|高速化後|
|hidspx -d0 test.hex |2kB Write/Verify |1.30秒(1.58kB/秒)|
|hidspx -d0 -rp >XX.hex |2kB Read |0.60秒(3.41kB/秒) |
-条件:ターゲット=ATtiny2313(25MHz水晶)
- マザー=SiS USB1.1ハブ経由にて接続。
-ログ
bash-2.02$ time ./hidspx.exe -ph -d0 2k.hex
Detected device is ATtiny2313.
Erase Flash memory.
Write Flash: 2048/2048 B
Verify Flash: 2048/2048 B
Passed.
real 0m1.299s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time ./hidspx.exe -ph -d0 -rp >temp.hex
Detected device is ATtiny2313.
Read Flash: 2048/2048 B
Passed.
real 0m0.596s
user 0m0.015s
sys 0m0.000s
bash-2.02$
-tiny2313では、むしろ接続のネゴシエーションとかRESET初期化で時間を取られている感じ。
-ATmega644基板を作りたくなった。作ったらまたベンチマーク猿になるに違いない。(<アホ)
----
*比較表 [#qea2497d]
|コマンド |評価内容| 改良前 |高速化後|
|hidspx -d0 -rp >XX.hex |8kB Read |8.39秒| 2.22秒 |
|hidspx -d1 -rp >XX.hex |8kB Read |8.40秒| 3.12秒 |
|hidspx -d4 -rp >XX.hex |8kB Read |8.39秒| 4.63秒 |
|hidspx -d0 test.hex |8kB Write/Verify |10.94秒 |4.86秒(1.64kB/秒)|
|hidspx -d1 test.hex |8kB Write/Verify |10.96秒 |7.06秒(1.13kB/秒)|
|hidspx -d4 test.hex |8kB Write/Verify |13.26秒 |9.98秒(821B/秒)|
結局、'-d0'のときだけ2倍程度の改善でした。
*旧バージョン計測結果 [#f23df48a]
bash-2.02$ gawk -f hexgen.awk -v size=8 -v fill=random > 8kB.hex
bash-2.02$ ls -l avrspx.exe
08-09-20 15:03 51,200 avrspx.exe
----
- HIDaspのファームは旧バージョン(2007.3)です.
- avrspx.exe は最新版です.
- 書き込み&ベリファイ
bash-2.02$ time avrspx -d0 -ph 8kB.hex
hidasp_init()... OK.
hidasp_program_enable()
Detected device is ATmega88.
Erase Flash memory.
hidasp_program_enable()
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m10.944s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time avrspx -d1 -ph 8kB.hex
hidasp_init()... OK.
hidasp_program_enable()
Detected device is ATmega88.
Erase Flash memory.
hidasp_program_enable()
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m10.961s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time avrspx -d4 -ph 8kB.hex
hidasp_init()... OK.
hidasp_program_enable()
Detected device is ATmega88.
Erase Flash memory.
hidasp_program_enable()
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m13.269s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time avrspx -d10 -ph 8kB.hex
hidasp_init()... OK.
hidasp_program_enable()
Detected device is ATmega88.
Erase Flash memory.
hidasp_program_enable()
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m18.622s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time avrspx -d50 -ph 8kB.hex
hidasp_init()... OK.
hidasp_program_enable()
Detected device is ATmega88.
Erase Flash memory.
hidasp_program_enable()
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 1m1.109s
user 0m0.015s
sys 0m0.000s
bash-2.02$
----
- 読み出し
bash-2.02$ time avrspx -d0 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m8.393s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time avrspx -d1 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m8.397s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time avrspx -d4 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m8.392s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time avrspx -d10 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m8.504s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time avrspx -d20 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m8.576s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time avrspx -d30 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m8.718s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time avrspx -d40 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m8.787s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time avrspx -d50 -ph -rp >xx.rom
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m17.042s
user 0m0.015s
sys 0m0.015s
bash-2.02$
----
* 新バージョン計測結果 [#b15fb1a6]
- HIDaspのファームは高速化改造版です.
- 書き込み&ベリファイ
bash-2.02$ time ./hidspx -d0 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m4.862s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time ./hidspx -d1 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m7.057s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time ./hidspx -d4 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m9.975s
user 0m0.031s
sys 0m0.000s
bash-2.02$ time ./hidspx -d10 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m15.610s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time ./hidspx -d20 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m25.441s
user 0m0.031s
sys 0m0.000s
bash-2.02$ time ./hidspx -d30 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m35.030s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time ./hidspx -d40 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m44.771s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time ./hidspx -d50 -ph 8kB.hex
Detected device is ATmega88.
Erase Flash memory.
Write Flash: 8192/8192 B
Verify Flash: 8192/8192 B
Passed.
real 0m54.396s
user 0m0.031s
sys 0m0.000s
bash-2.02$
----
- 読み出し
bash-2.02$ time ./hidspx -d0 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m2.223s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time ./hidspx -d1 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m3.123s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time ./hidspx -d4 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m4.630s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time ./hidspx -d10 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m7.434s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time ./hidspx -d20 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m12.289s
user 0m0.015s
sys 0m0.000s
bash-2.02$ time ./hidspx -d30 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m17.140s
user 0m0.015s
sys 0m0.015s
bash-2.02$ time ./hidspx -d40 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m21.889s
user 0m0.031s
sys 0m0.000s
bash-2.02$ time ./hidspx -d50 -ph -rp >XX.hex
Detected device is ATmega88.
Read Flash: 8192/8192 B
Passed.
real 0m26.719s
user 0m0.015s
sys 0m0.015s
bash-2.02$
----