2413809_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2413809_ja-JP

2413809_ja-JP

LPC55S28 CASPER ECC 乗算実行時間

以下のコードが計測時間内に実行されることが想定されているのか、それとも設定に何か問題があって実行が非常に遅くなっているのかを突き止めようとしています。このコードは、kCASPER_ECC_P256を使用して指定された秘密鍵から公開鍵を生成する関数の一部です。

以下のコードは、GPIOトグルを使用して実行時間を計測します。Set および Clear GPIO 呼び出しの間には 337 ミリ秒かかります。これは、この演算におけるハードウェアアクセラレーションによる計算処理としては遅いように思われる。これは想定内のことでしょうか?私のMCUのコアクロックは148MHzです。CASPERエンジンのクロックソースを選択して処理速度を向上させる方法はありますか?

   /* Base Generator Point G(x, y) for secp256r1 in 32-bit Little-Endian word arrays */
    static const uint32_t G_x_le[8] = {
        0xD898C296, 0xF4A13945, 0x2DEB33A0, 0x77037D81,
        0x63A440F2, 0xF8BCE6E5, 0xE12C4247, 0x6B17D1F2
    };

    static const uint32_t G_y_le[8] = {
        0x37BF51F5, 0xCBB64068, 0x6B315ECE, 0x2BCE3357,
        0x7C0F9E16, 0x8EE7EB4A, 0xFE1A7F9B, 0x4FE342E2
    };

    uint32_t scalar_le[8];
    uint32_t Q_x_le[8];
    uint32_t Q_y_le[8];

    /* Copy Big-Endian private scalar and convert to Little-Endian for CASPER */
    memcpy(scalar_le, key_buffer, 32);
    swap_endian_32((uint8_t *)scalar_le);



    /* 1. Initialize CASPER coprocessor */
    CASPER_Init(CASPER);
    CASPER_ecc_init(kCASPER_ECC_P256);

    HW_DB_PinSet();

    /* 2. Compute Q = d * G using CASPER hardware */
    CASPER_ECC_SECP256R1_Mul(
        CASPER,
        Q_x_le, Q_y_le,
        G_x_le, G_y_le,
        scalar_le
    );
    HW_DB_PinClear();
回复: LPC55S28 CASPER ECC Multiply Execution Time

こんにちは、 @guitardenver

同じ操作を、150MHzで動作するLPC55S28 EVK上でMCUXpresso SDK CASPER例を用いて測定しました。CASPER_ECC_SECP256R1_Mul() を 1 回呼び出すのに約 2410 万 CPU サイクルが必要で、これは約 160 ミリ秒の実行時間に相当します。

この結果に基づくと、アプリケーションで測定された337msは、特に追加のキーフォーマット、データ変換、初期化、デバッグビルドのオーバーヘッドが含まれれば、不合理とは思えません。

CASPERは、ユーザーが設定可能な別のクロックソースを提供していません。実行時間は主にCASPARアクセラレータを利用したECCソフトウェア実装によって決定されます。

BR

ハリー

Re: LPC55S28 CASPER ECC Multiply Execution Time
以下のコードが計測時間内に実行されることが想定されているのか、それとも何か設定がされているのかを調べています。 ちょっと、そこ!ハードウェアアクセラレーションによるECC動作での337msは、P256でも148MHzのMCUとしてはやや高く感じます。調べてくれてありがとう。時にはドライバのオーバーヘッドや時計の問題が忍び込むこともあります。CASPERエンジンの特定のクロックソースや、その性能最適化に関する利用可能なドキュメントは確認しましたか?
Re: LPC55S28 CASPER ECC Multiply Execution Time

できることがいくつかあります。しかし、このMCUでCASPERエンジンのクロック設定オプションは見当たりません。


1. 速度向上のためにO2最適化を使用する

2.フラッシュアクセラレータのプリフェッチと待機状態の最適化を有効にしてください。

SYSCON -> FMCCR |= SYSCON_FMCCR_PREFEN_MASK ;
 
その後、160ミリ秒まで短縮することができました。

 

Tags (1)
No ratings
Version history
Last update:
20 hours ago
Updated by: