はじめに
中華ゲーム機ってなに?
という方は「pyxelを中華ゲーム機のLinuxで動作させるためのノウハウ」をご覧くださいませ
中華ゲーム機のOS開発者にとってA2規格のSDが使い勝手いい話
中華ゲーム機のOSを作り・リリースする際には、その作業過程でSDカードの書き込みを数十回行う必要があるため、時短を最優先するためにアプリケーションパフォーマンスクラス「A2規格」のSDカードを利用しています。
OSイメージファイルは2GB~6GBほどあるため、この容量を何十回とSDカードに書き込まなければなりません。
下記の表はA1とA2のランダムアクセス時のパフォーマンスが記されていますが、実はシーケンシャルwriteの速度は2~3倍ほどの差があります。
A1 | A2 | |
---|---|---|
ランダムアクセス(IOPS) | Read1500/Write500 | Read4000/Write2000 |
64GB A1規格のSDカードだと実測20~25MB/s程度で、128GB A2規格だと65~90MB/sの書き込み速度が得られます。
単純に作業時間が1/2~1/3になるのでこの差はとても大きいです。
OSが完成してリリースした後は速度にこだわる必要がなくなるため、64GB A1規格のSDカードを利用しています。
なおハンドヘルド側がA2に対応しているか否かは考えておらず、あくまでも作業PC(Windows、Mac)側がA2の仕様で動作してくれれば良いのであります🫡
中華ゲーム機においてSDカードはどのように扱われるか
中華ゲーム機で使われているLinuxは、OS起動時・起動後に何らかのファイルを積極的にSDカードへ書き込むことはしません。
そのためsquashfs
と呼ばれる「読み取り専用の領域」を利用しているOSもあります。
プレイするゲームも同様に、そもそもROMカートリッジやCD-ROMなど「読み取り専用の媒体」で販売されていることから、ファイルを書き込むという動作はしないことがわかると思います。
あるとしたらセーブデータぐらいなものです。
よってSDカードに求められる性能は「読み込み速度」を重視して選択すればいいわけで、書き込み速度はさほど気にする必要がないともいえます。
ただし次の項目で例を出しますがステートセーブのようにユーザが任意のタイミングで積極的にファイルを書き込んだりする場合は、write性能に注目する必要があります。
中華ゲーム機におけるwrite性能のパフォーマンス
昨今のハンドヘルドではA2規格のSDカードを使うと素晴らしいパフォーマンスを体験できます。
例えばステートセーブを行う際に、ステートセーブファイル容量の大きいPS,SS,DCなどでは一瞬でステートセーブが完了、ステートロードも一瞬です。
機種によってはA1だとステートファイル作成時にプチフリしたり、ステートファイル作成時の時間がかかることもしばしばあります。
plumOS系列ではステートセーブ場所を「ROMと同じ場所」になるよう設定を変更してリリースしています。
(他のOSではデフォでSD1側にステートファイルを保存する場合が多い)
一般的にはOSが格納されているSD1には容量が小さく・遅いSDカードを選択される傾向があり、ROMを格納するSD2には大容量(=高速)なものを選択する傾向があります。
よってplumOS系列では高速なSD2にステートファイルが保存されるよう設計しています。
また、シェーダーキャッシュを生成するようなエミュ(wiiとか3DSとか)では、書き込み性能をフル重視した方が快適に動作するでしょう。
下記の例ではSDカードよりも高速なwrite性能を持つSSDを利用しているにも関わらず、シェーダキャッシュ生成によってプチフリに近い状況に陥っていることがわかると思います。
とはいえ上記の例は特殊といえば特殊な状況ですので、利用したいエミュの特性に応じて自分に必要なSDカードをチョイスするといいでしょう。
A2規格のおすすめSD
Amazonでは128GBのA1とA2では価格差がほとんどなく、場合によってはA1の方が値段が高い場合があります。
私が実際に使っているA2規格でおすすめの2枚をご紹介します。(スクショは2024年12月6日現在)
- SAMSUNG EVO Plus
- TCELL Endurance
以上