MENU

Raspberry Pi 5でA2 microSDを使用する

SDのアプリケーションパフォーマンスクラス

最近のmicroSDには、アプリケーションパフォーマンスクラスが「A1」や「A2」のものがあります。ここで、アプリケーションパフォーマンスクラスは、SD Associationによって定義されているものです。SDカードの拡張用途としてアプリケーションやデータを書き込んで使う場合には、シーケンシャルアクセスだけでなくランダムアクセスのパフォーマンスを向上して、アプリケーションの操作を快適にするために定められた規格となります。

SD Associationのページから引用した下記の表で、A1とA2における最小要件がまとめられています。ここで、IOPSは1秒あたりに実行できる4KB読取/書込みコマンドの数を示しています。

注意する必要があるのが、A2では、コマンドキューイングとキャッシュの機能を使用することで、SDカードのパフォーマンスをA1よりはるかに高めます。ただし、そのためにはサポートするホストとカードの組み合わせでのみ利用できるとされている点です。

上図は、SD AssociationのApplication Performance Classのページからの引用です。

Raspberry Pi 5でのmicroSDの使用

手元にあるアプリケーションパフォーマンスクラスA1とA2のmicroSDを使って、簡単に速度を測定して見ます。ここでは、Raspberry Pi OSに搭載されているSD Cardの速度測定用のツールであるRaspberry Pi Diagnosticsを使用しています。このRaspberry Pi Diagnosticsは、Raspberry Piメニューのアクセサリーから実行することが出来ます。

最初にBuffalo 64GB A1を使用して実行して見ます。

Test : SD Card Speed Test
Run 1
prepare-file;0;0;17094;33
seq-write;0;0;17338;4
seq-read;86430;21;0;0
rand-4k-write;0;0;6380;1595
rand-4k-read;14212;3553;0;0
Sequential write speed 17338 KB/sec (target 10000) - PASS
Random write speed 1595 IOPS (target 500) - PASS
Random read speed 3553 IOPS (target 1500) - PASS

続けて、SanDisk 64GB A2を使用して実行して見ます。

Test : SD Card Speed Test
Run 1
prepare-file;0;0;63167;123
seq-write;0;0;61507;15
seq-read;88832;21;0;0
rand-4k-write;0;0;4080;1020
rand-4k-read;8569;2142;0;0
Sequential write speed 61507 KB/sec (target 10000) - PASS
Random write speed 1020 IOPS (target 500) - PASS
Random read speed 2142 IOPS (target 1500) - PASS

A2の方がシーケンシャル書込みは早いのですが、ランダムアクセスでは遅くなっています。これでは、Raspberry Piで使用する場合に、A2のmicroSDの方が遅くなってしまうかも知れないということになります。

A2 SDカードのコマンドキューイング

現在のRaspberry Pi OSでは、config.txtファイルにdtparam=sd_cqeを追加することでアプリケーションクラスA2のmicroSDでコマンドキューイングを利用することが出来るようになっています。

sd_cqe

SDインターフェースでコマンドキューイングを有効にして、クラスA2カードのパフォーマンスを高速化するために使用します(Pi 5のみ、デフォルトは「オフ」

overlays READMEより

そこで、/boot/firmware/config.txtファイルにdtparam=sd_cqeの行を追加してから再起動して試してみます。

この際の起動ログを見ると、次のようになっています。

$ dmesg | grep mmc0
[ 0.666511] mmc0: CQHCI version 5.10
[ 0.702847] mmc0: SDHCI controller on 1000fff000.mmc [1000fff000.mmc] using ADMA 64-bit
[ 0.802536] mmc0: Command Queue Engine enabled, 31 tags
[ 0.802541] mmc0: new ultra high speed SDR104 SDXC card at address aaaa
[ 0.802724] mmcblk0: mmc0:aaaa SN64G 59.5 GiB
[ 0.859742] mmcblk0: mmc0:aaaa SN64G 59.5 GiB (quirks 0x00004000)

最初に、CQHCIのversion 5.10が使われるようになったことと、Command Queue Engine enabledと表示されてコマンドキューイングが有効化されていることがわかります。

先ほどと同様にSanDisk A2 64GBを使用して、Raspberry Pi Diagnosticsを実行して見ます。

Test : SD Card Speed Test
Run 1
prepare-file;0;0;62728;122
seq-write;0;0;64838;15
seq-read;90269;22;0;0
rand-4k-write;0;0;12969;3242
rand-4k-read;24118;6029;0;0
Sequential write speed 64838 KB/sec (target 10000) - PASS
Random write speed 3242 IOPS (target 500) - PASS
Random read speed 6029 IOPS (target 1500) - PASS

シーケンシャル書込みは少し早くなっていて誤差の程度ですが、ランダムアクセスについては3倍近く早くなっていることがわかります。

これで、Raspberry Pi 5であればコマンドキューイングを有効にすることで、A2クラスのmicroSDを有効に使うことが出来るようになります。

先ほど引用したドキュメントにあるように、このコマンドキューイングの機能はRaspberry Pi 5でのみ使用できる点には注意が必要です。

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!
目次