ラベル RaspberryPi の投稿を表示しています。 すべての投稿を表示
ラベル RaspberryPi の投稿を表示しています。 すべての投稿を表示

2013年10月1日火曜日

Mac OS X Mountain Lion で RaspberryPi とシリアル接続する

前回の記事、FreeBSD on RaspberryPi でシリアルコンソールを使用するでは、FreeBSD box と FreeBSD on RaspberryPi とのシリアル接続でしたが、この記事では、Mac OS X Mountain Lion と FreeBSD on RaspberryPi とのシリアル接続を扱います。

RaspberryPi の設定などは全く同じですが、記事の読みやすさを考慮して、こちらにも手順を再掲します。

RaspberryPi でシリアル接続をするのに、今回使用しているのは、GPIO に直接差して使うタイプの、3線式 USB シリアル変換ケーブルです。ケーブルの色などはお持ちのものに適宜読み替えてください。


1: RaspberryPi にシリアルコンソールの設定をする

  1. /boot/loader.rc の先頭に以下の設定を追加します。
    \ use serial console
    set boot_multicons="YES"
    set boot_serial="YES"
    set comconsole_speed="115200"
    set console="comconsole,vidconsole"
    
  2. /etc/ttys に以下の設定を追加します。crochet でイメージを作ると恐らくこのエントリーは入っているはずなので、その場合は、デフォルトでは dialup になっている部分を vt100 に修正します。
    ttyu0   "/usr/libexec/getty 3wire.115200"       vt100   on secure
    

2: RaspberryPi にケーブルを差す

RaspberryPi の GPIO に間違えないように注意しながらケーブルを差します。

PaspberryPi は一旦シャットダウンして電源を切っておくことを強くお勧めします。

GPIO が RaspberryPi の右上にくるように見た場合、左側の列の一番上がピン番号 1、右側の列の一番上がピン番号 2 なので、右側の上から 3 番目が 6:GND, 4 番目が 8:TX, 5番目が 10:RX です。

OLIMEX のケーブルは、GNDは青、RX(INPUT)はグリーン、TX(OUTPUT)は赤、とリンク先に書いてありますので、青 (GND) を 3 番目、グリーン (RX) を 4 番目、赤 (TX) を 5 番目に差します。RX、TX をクロスにするのがポイントです。尚、上から 1,2 番目は 5V ですので、うっかり間違えないように注意しましょう。

3: Mac OS X に USB シリアル用デバイスドライバを追加する

Mac OS X 用の Prolific PL2303 のデバイスドライバは、Prolific のサイトからダウンロードすることができます。

PL2303 Mac OS X Driver Download http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41

今回は、md_PL2303_MacOSX-10.6up_v1.5.1.zip をクリックしてダウンロードします。

ダウンロードしたファイルはダブルクリックして解凍し、PL2303_MacOSX_v1.5.1.pkg をクリックしてインストールします。

この時点で USB ケーブルを差してみて、RaspberryPi に電源を投入し、双方でシリアル USB がきちんと認識されるかどうかと、作成されるデバイスファイル名を確認します。デバイスファイルは、/dev の下に、 Max OS X 側には cu.usbserial と tty.usbserial、RaspberryPi 側には cuau0 と ttyu0 ができているはずです。

また、以下のコマンドを RaspberryPi 側で実行することで、シリアル出力のプロセスが正しく動作しているかどうかを確認することができます。

% ps -axww | grep getty
1275 u0  Is+  0:00.03 /usr/libexec/getty 3wire.115200 ttyu0
1271 v0  Is+  0:00.03 /usr/libexec/getty Pc ttyv0
1272 v1  Is+  0:00.03 /usr/libexec/getty Pc ttyv1
1273 v2  Is+  0:00.03 /usr/libexec/getty Pc ttyv2
1274 v3  Is+  0:00.03 /usr/libexec/getty Pc ttyv3

4: Mac OS X に minicom をインストールする

Mac OS X ではデフォルトで screen が使えるので、別にこれでもいいや、という人は特にインストールする必要はありません。
screen でシリアル接続をするのであれば、

% screen /dev/tty.usbserial 115200

で RaspberryPi とシリアル接続することができます。

しかし、わたしは、screen でシリアル接続して RaspberryPi にビルドさせている時に、ビルド中にエラーが発生すると、なぜかその時画面に出力されていたビルドログだけが画面表示から消えてしまうが、シリアル接続は切れていない、という謎現象に悩まされたため、結局 Mac OS X でも minicom を入れることにしました・・。

まず、ソースコードをダウンロードします。

minicom http://alioth.debian.org/projects/minicom/

ページの中ほどにある「最新ファイルリリース」の download のアイコンをクリックすると、ファイルリストのページに飛びますので、Latest version と表示されているバージョンの tar.gz ファイルをクリックしてダウンロードします。今回は、minicom-2.6.2.tar.gz をダウンロードしました。

ダウンロードしたら、クリックして解凍します。Mac って便利ですよね。

解凍したら、以下を実行します。
尚、Mac OS X Mountain Lion では、以下のコマンドの実行には、Xcode 及び、Command Line Tools ( Xcode の Preferences からインストール) が必要となります。

% cd Downloads/minicom-2.6.2
% ./configure
% sudo make
% sudo make install

デフォルトでは、/usr/local/binにインストールされますので、/usr/local/bin へのパスは通しておきましょう。

5: minicom の設定をする

ここで minicom の設定をします‥。いきなり起動しようとすると、おそらくエラーになりますので注意です。

% sudo minicom -s
            +-----[configuration]------+
            | Filenames and paths       |
            | File transfer protocols     |
            | Serial port setup             |
            | Modem and dialing          |
            | Screen and keyboard      |
            | Save setup as dfl            |
            | Save setup as..               |
            | Exit                                 |
            | Exit from Minicom           |
            +------------------------------+

こんな画面が表示されて、カーソルキーでメニュー選択ができます。英語な分表示が崩れないので、まだ、いろんな意味でだいぶんましです。

その中の、「Serial port setup」を、それぞれ、以下の内容に修正する必要があります。頭のアルファベットを選ぶと該当の部分にカーソルが飛びますので、なんとか目的の内容になるように入力してください。
尚、シリアルデバイスのパスはご自分の環境にあわせてください。多分このままで大丈夫だとは思いますが。

A - Serial Device
/dev/tty.usbserial
E - Bps/Par/Bits
115200 8N1
F - Hardware Flow Control
No
G - Software Flow Control
Yes

全ての設定を終えたら、「Save setup as dfl」して終了します。もしくは、「Save setup as..」で任意の設定ファイルを指定して終了することもできますが、その場合は起動するときに設定ファイルを指定して起動する必要があります。

6: minicom を起動する

設定が全て完了したら、後はただ起動するだけです。

% minicom

自分で設定ファイルを指定した場合は

% minicom -o 設定ファイル名

特に問題なければ以下のようなメッセージが画面に表示されます。

Welcome to minicom 2.6.2

OPTIONS:                                                                     
Compiled on Oct  1 2013, 12:24:06.                                           
Port /dev/tty.usbserial, 14:39:02                                            
                                                                             
Press CTRL-A Z for help on special keys 

こんな感じに表示されたら、あとはシリアルコンソールを使うだけです。

RaspberryPi が起動済みであれば、このあとエンターキーを押したりすれば、ログインプロンプトが表示されるはずなので、無事にログインできれば ok です。

念のため RaspberryPi を再起動してみて、無事に起動メッセージが表示されるかどうか確認してみるといいでしょう。

2013年9月12日木曜日

FreeBSD on RaspberryPi でシリアルコンソールを使用する

RaspberryPi だと、通常の作業では ssh でログインして作業するので大体間に合ってはいるのですが、どうも最近無線が不安定なのか、何かをやっている最中によく ssh が落ちてしまっていろいろ面倒だったので、シリアルコンソールが使えるように設定してみました。やっぱり、これはこれで便利ですよね。いざというときにいちいちディスプレイつながなくてもいいし。

RaspberryPi でシリアル接続をするのに、多分一番お手軽に使えるのが、GPIO に直接差して使うタイプの、3線式 USB シリアル変換ケーブルです。

わたしは、ここで買いました。送料を含めても多分一番お安いのではないかと思います。

ただ、よく売ってる RaspberryiPi 用のケースって GPIO のところに穴が開いてないんですよね。

なので、とりあえず、こんな感じに穴を開けてみました。適当にやったわりにはそれっぽく見えるので、ま、いいか~。

それでは実際の設定方法です。ここで想定しているのは FreeBSD の入った RaspberryPi と FreeBSD box とのシリアル通信です。


1: RaspberryPi にシリアルコンソールの設定をする

  1. /boot/loader.rc の先頭に以下の設定を追加します。
    \ use serial console
    set boot_multicons="YES"
    set boot_serial="YES"
    set comconsole_speed="115200"
    set console="comconsole,vidconsole"
    
  2. /etc/ttys に以下の設定を追加します。crochet でイメージを作ると恐らくこのエントリーは入っているはずなので、その場合は、デフォルトでは dialup になっている部分を vt100 に修正します。
    ttyu0   "/usr/libexec/getty 3wire.115200"       vt100   on secure
    

2: RaspberryPi にケーブルを差す

RaspberryPi の GPIO に間違えないように注意しながらケーブルを差します。

PaspberryPi は一旦シャットダウンして電源を切っておくことを強くお勧めします。

GPIO が RaspberryPi の右上にくるように見た場合、左側の列の一番上がピン番号 1、右側の列の一番上がピン番号 2 なので、右側の上から 3 番目が 6:GND, 4 番目が 8:TX, 5番目が 10:RX です。

OLIMEX のケーブルは、GNDは青、RX(INPUT)はグリーン、TX(OUTPUT)は赤、とリンク先に書いてありますので、青を 3 番目、グリーンを 4 番目、赤を 5 番目に差します。尚、上から 1,2 番目は 5V ですので、うっかり間違えないように注意しましょう。

3: FreeBSD box に USB シリアル用デバイスドライバを追加する

今回使用している USB シリアル変換ケーブルは、Prolific PL2303 を使用している、とのことなので、以下の設定を /boot/loader.conf に追加します。

uplcom_load="YES"
ucom_load="YES"

ここで一旦再起動するか、再起動するのが面倒な場合は、以下のコマンドを実行して手動でカーネルモジュールを読み込みます。

# kldload uplcom
# kldload ucom

ちなみに、dmesg の出力は以下の通りです。

ugen2.3: <Prolific Technology Inc.> at usbus2
uplcom0: <Prolific Technology Inc. USB-Serial Controller, class 0/0, rev 1.10/3.00, addr 3> on usbus2

この時点で USB ケーブルを差してみて、RaspberryPi に電源を投入し、双方でシリアル USB がきちんと認識されるかどうかと、作成されるデバイスファイル名を確認します。デバイスファイルは、/dev の下に、FreeBSD box 側には cuaU0 と ttyU0、RaspberryPi 側には cuau0 と ttyu0 ができているはずです。

また、以下のコマンドを RaspberryPi 側で実行することで、シリアル出力のプロセスが正しく動作しているかどうかを確認することができます。

% ps -axww | grep getty
1275 u0  Is+  0:00.03 /usr/libexec/getty 3wire.115200 ttyu0
1271 v0  Is+  0:00.03 /usr/libexec/getty Pc ttyv0
1272 v1  Is+  0:00.03 /usr/libexec/getty Pc ttyv1
1273 v2  Is+  0:00.03 /usr/libexec/getty Pc ttyv2
1274 v3  Is+  0:00.03 /usr/libexec/getty Pc ttyv3

4: FreeBSD box に minicom をインストールする

シリアルコンソールを使うのに、一番無難‥ならしいので、ports から minicom をインストールします。

# cd /usr/ports/comms/minicom/
# make config-recursive
# make install clean

このままの状態で、minicom を起動してデバイスにアクセスしようとすると permission deny になるため、以下を実行します。

# chmod -s /usr/local/bin/minicom

5: minicom の設定をする

minicom の設定は面倒臭いです。なんか、古くてあまり思い出したくないようなユーザインターフェースを思いっきり見せつけられちゃいます‥。

でも、仕方ないので、基本設定を行います。

# minicom -s
            +-----[設定]------+
            | ファイル名とパス名     |
            | ファイル転送プロトコル   |
            | シリアルポート       |
            | モデムとダイヤル      |
            | 画面とキーボード      |
            | "dfl" に設定を保存  |
            | 新規に設定を保存      |
            | 終了            |
            | Minicom を終了   |
            +---------------+

こんな画面が表示されて、カーソルキーでメニュー選択ができます。冗談抜きで、こんな感じに表示されます。

その中の、シリアルポートの設定を、それぞれ、以下の内容に修正する必要があります。頭のアルファベットを選ぶと該当の部分にカーソルが飛びますので、なんとか目的の内容になるように入力してください。
尚、シリアルデバイスのパスはご自分の環境にあわせてください。多分このままで大丈夫だとは思いますが。

A - シリアルデバイス
/dev/ttyU0
E - 速度/パリティ/ビット
115200 8N1
F - ハードウェア流れ制御
いいえ
G - ソフトウェア流れ制御
はい

全ての設定を終えたら、「"dfl" に設定を保存」して終了します。もしくは、任意の設定ファイルを指定して終了することもできますが、その場合は起動するときに設定ファイルを指定して起動する必要があります。

6: minicom を起動する

設定が全て完了したら、後はただ起動すればおkです。

# minicom

自分で設定ファイルを指定した場合は

# minicom -o 設定ファイル名

特に問題なければ以下のようなメッセージが画面に表示されます。

minicom へようこそ 2.6.2

オプション: I18n 
コンパイルされた日時は:  Sep 10 2013, 23:10:21.
ポート /dev/ttyU0, 18:02:51

CTRL-A Z を押すと、説明画面になります。

こんな感じに表示されたらシリアルコンソールを使用する準備が無事完了したということです。

RaspberryPi が起動済みであれば、このあとエンターキーを押したりすれば、ログインプロンプトが表示されるはずなので、無事にログインできれば ok です。

念のため RaspberryPi を再起動してみて、無事に起動メッセージが表示されるかどうか確認してみるといいでしょう。

8: なんかうまくいかないときは・・

結構いくつかはめられどころがあったので、一応ここに書いておきます・・。

A: ちゃんとデバイスドライバを入れてるのに、USB シリアルがうまく認識されないで、変なエラーがでます

usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED
usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED
usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED
usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED
usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED
ugen1.3:  at usbus1 (disconnected)
uhub_reattach_port: could not allocate new device

複数 USB のポートがある時に、うまく認識されるポートと認識されないポートがありました。なので、とりあえず、USB のポートを全て試してみると解決するかもしれません。

B: 設定はうまくいってるはずなのに、minicom にログインプロンプトが表示されません

RaspberryPi の GPIO の接続を間違えてないか確認しましょう。特に赤と緑を逆に接続しがちです・・。

C: ログインプロンプトはでたのに、キー入力ができません

minicom の「F - ハードウェア流れ制御」と「G - ソフトウェア流れ制御」の値が正しく設定されているかどうか確認してみましょう。

2013年8月22日木曜日

inline assembler コードをdisable した clang と inline assembler コードを enable した gcc4.2 のベンチマークテスト

freebsd-arm の ml で、security/libgcrypt をinline assembler コードをdisable した clang と inline assembler コードをenable した gcc4.2 ではどちらが速いのか、という話が出ていたのですが、どうも誰も実験してみないようなので、試しに実験してみました♪

security/libgcrypt は、make install した後の work の中に、なんとびっくり、テスト用のアプリがいろいろ入っているのです。しかも、そのものずばり、benchmark というアプリがあるので、これを使って実行結果を見てみることにしました。テストアプリの基本的な使い方は、好きなアプリを選んでファイルを実行するだけという、お手軽仕様。便利な世の中になったものですね〜。

ちなみに、うっかり clean しちゃうと work がなくなっちゃいますので、要注意です。

# cd /usr/ports/security/libgcrypt/work/libgcrypt-1.5.3/tests 
# ./benchmark > /path/to/home/benchmark.txt

ちなみに、テストに使用した RPI の uname -a は次の通りです。

FreeBSD raspberry-pi 10.0-CURRENT FreeBSD 10.0-CURRENT #0: Tue Aug 13 03:22:23 JST 2013 user@PC:/usr/home/user/crochet-freebsd/work/obj/arm.armv6/usr/src.arm/sys/RPI-B-ELY arm

clang の最適化機能は下手なアセンブラよりも上という噂も聞かないではないので、真面目な話どっちがどのくらい速いのかというのは非常に興味深いですよね。
さてさて、結果はいかに !?


USE_GCC=4.2 longling.h inline assmbler enable

MD5          234375ms 625000ms 3984375ms 546875ms 156250ms
SHA1         546875ms 781250ms 4218750ms 859375ms 468750ms
RIPEMD160    468750ms 859375ms 4140625ms 859375ms 468750ms
TIGER192     1093750ms 1484375ms 5156250ms 1328125ms 1171875ms
SHA256       781250ms 1484375ms 5000000ms 1171875ms 781250ms
SHA384       1953125ms 3046875ms 6250000ms 2265625ms 1875000ms
SHA512       1953125ms 3046875ms 6250000ms 2265625ms 1953125ms
SHA224       781250ms 1562500ms 5000000ms 1093750ms 937500ms
MD4          78125ms 468750ms 3750000ms 546875ms 234375ms
CRC32        234375ms 234375ms 4375000ms 468750ms 312500ms
CRC32RFC1510 234375ms 156250ms 4375000ms 468750ms 390625ms
CRC24RFC2440 1171875ms 1171875ms 5625000ms 1484375ms 1250000ms
WHIRLPOOL    6484375ms 6953125ms 14843750ms 6875000ms 6562500ms
TIGER        1093750ms 1562500ms 5156250ms 1328125ms 1015625ms
TIGER2       1015625ms 1484375ms 5156250ms 1406250ms 1171875ms

                ECB/Stream         CBC             CFB             OFB             CTR      
             --------------- --------------- --------------- --------------- ---------------
IDEA         3437500ms 3359375ms 3671875ms 3750000ms 3515625ms 3593750ms 3593750ms 3593750ms 5468750ms 5468750ms
3DES         7343750ms 7343750ms 7734375ms 7812500ms 7578125ms 7656250ms 7734375ms 7656250ms 9609375ms 9609375ms
CAST5        1796875ms 1875000ms 2031250ms 2109375ms 1953125ms 1953125ms 2031250ms 2031250ms 3906250ms 3828125ms
BLOWFISH     2187500ms 2109375ms 2421875ms 2421875ms 2343750ms 2265625ms 2421875ms 2343750ms 4218750ms 4296875ms
AES          1953125ms 1796875ms 1875000ms 1796875ms 1718750ms 1718750ms 2265625ms 2109375ms 1718750ms 1796875ms
AES192       2187500ms 2109375ms 2187500ms 2031250ms 2031250ms 2031250ms 2421875ms 2421875ms 2031250ms 2031250ms
AES256       2421875ms 2421875ms 2421875ms 2343750ms 2265625ms 2343750ms 2734375ms 2656250ms 2265625ms 2265625ms
TWOFISH      1562500ms 1640625ms 1718750ms 1875000ms 1718750ms 1640625ms 1796875ms 1718750ms 3515625ms 3515625ms
ARCFOUR      390625ms 468750ms
DES          2968750ms 3046875ms 3359375ms 3437500ms 3281250ms 3203125ms 3281250ms 3359375ms 5156250ms 5234375ms
TWOFISH128   1562500ms 1640625ms 1796875ms 1796875ms 1718750ms 1640625ms 1640625ms 1718750ms 3515625ms 3515625ms
SERPENT128   1875000ms 1796875ms 2109375ms 2109375ms 2031250ms 2031250ms 1953125ms 2109375ms 3828125ms 3828125ms
SERPENT192   1875000ms 1796875ms 2109375ms 2031250ms 2031250ms 2031250ms 2109375ms 2031250ms 3828125ms 3828125ms
SERPENT256   1875000ms 1796875ms 2109375ms 2031250ms 1953125ms 2031250ms 2031250ms 2109375ms 3828125ms 3828125ms
RFC2268_40   2578125ms 2031250ms 2812500ms 2421875ms 2656250ms 2734375ms 2656250ms 2734375ms 4609375ms 4609375ms
SEED         1875000ms 1875000ms 1953125ms 2187500ms 1953125ms 1953125ms 1953125ms 2109375ms 3828125ms 3828125ms
CAMELLIA128  3359375ms 3359375ms 3593750ms 3671875ms 3515625ms 3437500ms 3515625ms 3593750ms 5312500ms 5390625ms
CAMELLIA192  3828125ms 3828125ms 4062500ms 4140625ms 3984375ms 3984375ms 4062500ms 3984375ms 5859375ms 5703125ms
CAMELLIA256  3828125ms 3828125ms 4062500ms 4140625ms 3984375ms 3984375ms 4062500ms 4062500ms 5703125ms 5781250ms

Algorithm         generate  100*sign  100*verify
------------------------------------------------
RSA 1024 bit       8593750ms   78359375ms     2187500ms
RSA 2048 bit       45546875ms   418671875ms     5625000ms
RSA 3072 bit       1337109375ms   1147109375ms     10234375ms
RSA 4096 bit       881875000ms   2457812500ms     16640625ms
DSA 1024/160             -   37343750ms     40156250ms
DSA 2048/224             -   139531250ms     132343750ms
DSA 3072/256             -   299609375ms     275390625ms
ECDSA 192 bit      3437500ms   87734375ms     157812500ms
ECDSA 224 bit      4218750ms   107187500ms     192500000ms
ECDSA 256 bit      5078125ms   126328125ms     236875000ms
ECDSA 384 bit      10078125ms   253593750ms     478984375ms
ECDSA 521 bit      24062500ms   596796875ms     1134765625ms

powm       2890625ms 7812500ms 21250000ms

random     390625ms 468750ms

clang longling.h inline assmbler disable

MD5          234375ms 468750ms 3046875ms 468750ms 390625ms
SHA1         468750ms 703125ms 3359375ms 703125ms 390625ms
RIPEMD160    468750ms 703125ms 3281250ms 625000ms 390625ms
TIGER192     703125ms 1171875ms 3828125ms 1015625ms 625000ms
SHA256       781250ms 1328125ms 4062500ms 1015625ms 781250ms
SHA384       1328125ms 2187500ms 4687500ms 1562500ms 1328125ms
SHA512       1250000ms 2187500ms 4687500ms 1562500ms 1328125ms
SHA224       703125ms 1328125ms 4062500ms 937500ms 859375ms
MD4          156250ms 468750ms 2968750ms 468750ms 234375ms
CRC32        78125ms 156250ms 2578125ms 390625ms 234375ms
CRC32RFC1510 156250ms 156250ms 2500000ms 390625ms 312500ms
CRC24RFC2440 546875ms 546875ms 2890625ms 781250ms 703125ms
WHIRLPOOL    6015625ms 6406250ms 9296875ms 6328125ms 6093750ms
TIGER        781250ms 1093750ms 3906250ms 937500ms 859375ms
TIGER2       703125ms 1171875ms 3828125ms 937500ms 859375ms

                ECB/Stream         CBC             CFB             OFB             CTR      
             --------------- --------------- --------------- --------------- ---------------
IDEA         2187500ms 2109375ms 2421875ms 2500000ms 2343750ms 2187500ms 2265625ms 2343750ms 4062500ms 3984375ms
3DES         5000000ms 5000000ms 5234375ms 5312500ms 5156250ms 5156250ms 5234375ms 5234375ms 6875000ms 6953125ms
CAST5        1562500ms 1562500ms 1875000ms 2031250ms 1640625ms 1718750ms 1718750ms 1718750ms 3515625ms 3515625ms
BLOWFISH     1640625ms 1796875ms 2109375ms 2109375ms 1953125ms 1796875ms 1953125ms 1953125ms 3671875ms 3671875ms
AES          1406250ms 1406250ms 1250000ms 1250000ms 1250000ms 1250000ms 1562500ms 1640625ms 1250000ms 1250000ms
AES192       1640625ms 1484375ms 1484375ms 1406250ms 1406250ms 1406250ms 1796875ms 1875000ms 1406250ms 1484375ms
AES256       1796875ms 1718750ms 1718750ms 1562500ms 1640625ms 1640625ms 2031250ms 2031250ms 1640625ms 1640625ms
TWOFISH      1406250ms 1328125ms 1640625ms 1640625ms 1484375ms 1484375ms 1562500ms 1484375ms 3203125ms 3125000ms
ARCFOUR      468750ms 390625ms
DES          2265625ms 2265625ms 2500000ms 2656250ms 2343750ms 2421875ms 2421875ms 2500000ms 4140625ms 4140625ms
TWOFISH128   1328125ms 1406250ms 1562500ms 1640625ms 1484375ms 1562500ms 1484375ms 1640625ms 3125000ms 3125000ms
SERPENT128   1718750ms 1640625ms 1875000ms 1875000ms 1796875ms 1796875ms 1796875ms 1875000ms 3437500ms 3437500ms
SERPENT192   1562500ms 1562500ms 1875000ms 1875000ms 1796875ms 1796875ms 1796875ms 1953125ms 3437500ms 3437500ms
SERPENT256   1718750ms 1562500ms 1953125ms 1875000ms 1718750ms 1718750ms 1796875ms 1875000ms 3437500ms 3359375ms
RFC2268_40   1718750ms 2187500ms 2031250ms 2500000ms 1796875ms 1875000ms 1953125ms 1875000ms 3593750ms 3593750ms
SEED         1406250ms 1406250ms 1640625ms 1640625ms 1562500ms 1484375ms 1562500ms 1562500ms 3125000ms 3125000ms
CAMELLIA128  2812500ms 2734375ms 3125000ms 3125000ms 2890625ms 2890625ms 2890625ms 2890625ms 4531250ms 4609375ms
CAMELLIA192  3046875ms 3046875ms 3281250ms 3359375ms 3203125ms 3125000ms 3203125ms 3203125ms 4843750ms 4843750ms
CAMELLIA256  3125000ms 3046875ms 3359375ms 3359375ms 3046875ms 3203125ms 3203125ms 3281250ms 4843750ms 4765625ms

Algorithm         generate  100*sign  100*verify
------------------------------------------------
RSA 1024 bit       10000000ms   103359375ms     3125000ms
RSA 2048 bit       230468750ms   602031250ms     8437500ms
RSA 3072 bit       1168750000ms   1783750000ms     16640625ms
RSA 4096 bit       1171875000ms   3805000000ms     27109375ms
DSA 1024/160             -   50703125ms     53046875ms
DSA 2048/224             -   211640625ms     197968750ms
DSA 3072/256             -   489843750ms     439531250ms
ECDSA 192 bit      3515625ms   90390625ms     162968750ms
ECDSA 224 bit      4453125ms   111093750ms     207421875ms
ECDSA 256 bit      5468750ms   134062500ms     254296875ms
ECDSA 384 bit      11484375ms   281718750ms     528203125ms
ECDSA 521 bit      26640625ms   667500000ms     1300156250ms

powm       3671875ms 11015625ms 32031250ms

random     390625ms 234375ms

ちょっと、数値がいっぱい過ぎて、細かい検証はしてません。(爆

結局、longlong.h の使われ方にも左右されるのでしょうが、やっぱり、全体的に inline assembler enable な gcc の方が速いことが多い・・ように見えますね。これで、clang の方が速い!とかだったら、面白かったのにな〜。今はどうしても、asm コードが原因でビルドが通らないことが多いので、やっぱり、なんとか asm コードが通るようになってほしいものですね・・。