Tech Note 29: NS Basic/Palmがネイティブに!

December 22, 2003

© 2022 NSB Corporation. All rights reserved.

[英語版]

Palm OSは元々Motorola 68000(68Kとよく呼ぶ)プロセッサー用に書かれましたが、Palm OS 5に移る時、いくつものメーカーが製造するStrongArmプロセッサーに移行しました。この新しいプロセッサーは、数多くの機能を持ち、それが68Kプロセッサーと比べ、かなり処理速度がましています。

Palm OS用の大量のソフトウエアと互換性を持たせるため、PalmSourceはPACE ("Palm Application Compatibility Environment") と呼ばれるStrongArmプロセッサー上で動作する68Kのエミュレータを作りました。これによって、68K用に書かれたアプリケーションは、変更を加えずに新しいデバイスでも動作します。新しいプロセッサーの処理速度が速いため、仮に68Kのエミュレータが使われている状態でも、ソフトウエア(NS Basic/Palmプログラムも含む)の実行速度は増します。

68Kのエミュレータを取り除けるとすると、さらに飛躍的な速度の向上が期待できます。NS Basic/Palm 4.1は完全な「Arm Native」です。すなわちNS Basicで開発されたプログラムは、PACE内で動作するのではなく、StrongArmのネイティブコードの中で動作します。

この速度向上はめざましく、最高で25倍速くなります。これからNSBasicを使えば、いままでは遅過ぎたものも含め、どの種類のアプリケーション開発でも実用的です。

また改善されたのは速度だけではなく、それに連携してバッテリー消費を抑えていますので、よりNSBasicを効果的にしています。

Arm Native NS Basic/Palmを使う

68Kモードで動作するどのNS Basic/Palmプログラムも、コードに変更を加えることなく、Arm Nativeモードで動作します。だた1つの違いは、どのバージョンのRuntimeを使うかです。Arm Nativeモードで動作させるには、NS Basic/Palm 4.0でコンパイルしなければなりません。古いバージョンでコンパイルしたプログラムは、68Kモードでしか動作しません。

どのRuntimeを使うかは、適切なバージョンを選んでデバイスにインストールするか、NS Basic/Palm IDE上で「ツール... オプション... コンパイル/ダウンロード」と選び、プログラムを「Fatアプリ」に指定して下さい。

Arm Nativeコードは68Kコードより大きくなります。インストラクションは16ビットではなく32ビットで、アライメントは4バイトの境になくてはなりません。結果としてArm Native Runtimeはかなり大きくなっています。NS Basicプログラム自体は同じ大きさのままです。

Runtimeは以下の2つの中から選べます:

ベンチマーク

様々なテストを行って68K RuntimeとArm Native Runtimeを比べました。最後にある注記を読んで、結果を良く理解して下さい。

68k の結果 - NSBRuntime68Kを使用

Device Bench1 Bench2 Bench3 FormBench
Palm IIIx 453 492 112 268
Tungsten T 137 153 458 41
Zire 71 125 132 539 38
Zire 21 141 150 454 33
Sony NX70 82 88 867 21
Zodiac2 66 70 1065 32
Tungsten T3 41 154 1731 15

Arm Native の結果 - NSBRuntimeArm68Kを使用

Device Bench1 Bench2 Bench3 FormBench
Palm IIIx 488 533 102 270
Tungsten T 5 24 5040 31
Zire 71 5 23 5574 29
Zire 21 6 27 5821 22
Sony NX70 5 18 9876 17
Zodiac2 4 13 14099 29
Tungsten T3 2 8 23138 13

結果を理解するための重要な注記

あなたのアプリケーションはどれだけ速くなるのでしょう? それはアプリケーションによります。NSBasicコード、システムコール、スクリーン更新はArm Nativeコードには、それぞれ違って影響がでます。混ざっている場合、合わせた純益が結果となるでしょう。