link もっと前
   2018年 7月 4日 -
      2018年 7月 4日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

日々

link permalink

デスクランブラのテスト

先日、作った(2018年 6月 1日の日記参照)ISDB というか ARIB のデスクランブラの続きです。

DVB API で制御可能なチューナー(私は PT2 で確認しています)を使っている方であれば、下記のようにチューニング(コードは GitHub にあります)できます。チューニングに成功して放送が受信されると、/dev/dvb/adapter0/dvr0 からスクランブルの掛かった MPEG2-TS が出力されます。

PT2 のチューニングのテスト
例: BS プレミアム(衛星はアダプタ 0 か 2、地デジはアダプタ 1 か 3 を使います)

$ ./sample_dvb 0 S BS 3 0x4031
...

ごちゃごちゃ出るのが邪魔くさければ、

$ ./sample_dvb 0 S BS 3 0x4031 > /dev/null

スマートカードリーダーを PC に接続し、B-CAS カードをリーダーに挿入した上で、下記のようにデスクランブル(コードは GitHub にあります)できます。デスクランブルした MPEG2-TS は UDP で送るか、ファイルに保存できます。

デスクランブルのテスト
例: 自分自身に UDP で送る

$ ./arib_descramble /dev/dvb/adapter0/dvr0 localhost 1234
...

VLC を起動し、udp://@:1234 を再生すると、受信中の放送が映るはずです。

改良

自身の規格理解のためもあって、かなり手抜き実装していて、異常に重いため、いくつか改良してみました。まずプロファイラで見てみると、MULTI2 復号と、どこかにある無駄なコピーに、時間がかかっているようです。

MULTI2 復号の高速化には SSE2 を使ってみました。MULTI2 の復号は 8バイトずつですが、SSE2 を活用するには 32バイトの方が都合が良いです。ですので 4単位まとめて(4 x 8バイト = 32バイト = 128bit = SSE2 のレジスタ幅)処理して、残った 32バイトに満たないデータは従来どおり 8バイトずつ処理します。

残念ながら、結果から言うとあまり最適化が効きませんでした。SIMD で高速化できないロード/ストアの割合が高いのか、計算が占める割合が低いのか、いまいちわからなかったのですが、あまり高速化できませんでした。CPU 利用率でいうと 12% が 11% になるか、ならないか…程度です。

無駄なコピーは 2箇所見つけたのでガッツリ消しました。これは効果があったようで、CPU 利用率でいうと 11% が 10% くらいまで削減できました。

無駄なコピーはもう 1つありましたが、単純に消すわけにいかなくてやや難しそうだったので、また今度にします。

ARM でも実行してみた

PC だと、CPU 利用率 10% 程度だったので、最近のマルチコア CPU なら割と余裕の負荷です。ではショボい CPU で実行するとどうなるか、試してみました。

手持ちの Raspberry Pi 3(ARM Cortex A53 x 4/1.4GHz)で実行してみたところ、CPU 利用率 25〜27% 程度でした。動かないかもしれないと思っていたので、正直意外でした。かなり健闘していると思います。

ARM には NEON という SIMD 命令がありますが、NEON を使った復号の高速化にはまだ手を出していません。今度やってみますが、SSE2 の結果を見た限りでは、絶大な効果は見込めないでしょう。きっと。

[編集者: すずき]
[更新: 2018年 7月 5日 00:44]
link 編集する

コメント一覧

  • すずき 
    NEON にも対応してみましたが、やはり MULTI2 の復号はボトルネックではないらしく、CPU 負荷はほとんど変わりませんでした……。 
    (2018年07月11日 21:26:36)
open/close この記事にコメントする



link もっと前
   2018年 7月 4日 -
      2018年 7月 4日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 9/20 11:22

カレンダー

<2018>
<<<07>>>
1234567
891011121314
15161718192021
22232425262728
293031----

最近のコメント 5件

  • link 18年09月07日
    すずき 「ありがとう!\nこちらこそ、楽しみにして...」
    (更新:09/11 19:30)
  • link 18年09月07日
    よしだあ 「おつかれさまでした!\nまた仕事できるの...」
    (更新:09/11 19:17)
  • link 18年08月15日
    すずき 「うーん、なんか暴走したり、動かなかったり...」
    (更新:08/15 10:52)
  • link 18年08月15日
    すずき 「実行できた。あと実行ファイルパスについて...」
    (更新:08/15 10:42)
  • link 18年08月15日
    すずき 「さすがに x86_64 と arm のク...」
    (更新:08/15 10:35)

最近の記事 20件

link もっとみる
  • link 18年09月15日
    すずき 「[TigerVNC のエラーメッセージ] TigerVNC Jav...」
    (更新:09/20 11:22)
  • link 18年09月16日
    すずき 「[音が出なくなったよ Windows 10] 昨日まで元気に動作し...」
    (更新:09/20 11:10)
  • link 18年09月13日
    すずき 「[府民から都民へ] 家が決まりました。今月末から東京都民です。さよ...」
    (更新:09/17 20:03)
  • link 18年09月11日
    すずき 「[エアコン浄化] 今年の 7月に(2018年 7月 17日の日記参...」
    (更新:09/17 19:38)
  • link 18年09月10日
    すずき 「[引っ越し準備] 引っ越し用の新品の段ボールが 50箱以上届き、家...」
    (更新:09/17 19:32)
  • link 18年09月07日
    すずき 「[最終勤務日] 今日は Socionext の最終勤務日でした。9...」
    (更新:09/09 01:21)
  • link 18年09月06日
    すずき 「[さくらのメールサーバーと git send-email] 自宅か...」
    (更新:09/07 01:24)
  • link 18年09月03日
    すずき 「[ROCK64 のカーネルだけ元に戻したい] ROCK64 のカー...」
    (更新:09/04 01:34)
  • link 18年08月27日
    すずき 「[DTI の配ってくる IP アドレス] 以前、高槻市での WAK...」
    (更新:08/31 01:40)
  • link 18年08月26日
    すずき 「[不思議なダメージ計算式] 宇宙戦艦物語 RPG というスマホのゲ...」
    (更新:08/31 01:27)
  • link 18年08月21日
    すずき 「[エアコンがまた臭くなった] 先日(2018年 7月 17日の日記...」
    (更新:08/23 19:25)
  • link 18年08月20日
    すずき 「[Rock64 の U-Boot スクリプトを読む] 先日(201...」
    (更新:08/22 00:04)
  • link 18年08月15日
    すずき 「[自分のマシンは何 GFLOPS か? その 3] その 1、その...」
    (更新:08/15 10:46)
  • link 18年08月14日
    すずき 「[自分のマシンは何 GFLOPS か? その 2] その 1、その...」
    (更新:08/15 10:08)
  • link 18年08月13日
    すずき 「[自分のマシンは何 GFLOPS か? その 1] その 1、その...」
    (更新:08/15 10:08)
  • link 18年08月12日
    すずき 「[ARM PC で開発できるか?] 最近の ARM 搭載 SoC ...」
    (更新:08/14 13:32)
  • link 18年08月10日
    すずき 「[エディタ] 誰しもお気に入りのエディタがあると思いますが、私は割...」
    (更新:08/12 21:55)
  • link 19年08月11日
    すずき 「[間違えた] 1年、間違えたので、消す。...」
    (更新:08/12 21:33)
  • link 18年08月11日
    すずき 「[地震保険] AIG 損害保険から「大阪北部地震で被害を受けた方は...」
    (更新:08/12 21:32)
  • link 18年08月08日
    すずき 「[久しぶりに自作 ARM エミュレータ] 久しぶりに自作 ARM ...」
    (更新:08/09 00:51)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報