10

Beaglebone上のLinux上でJavaアプリケーションを実行する必要があります。ARMコアは、ハードウェアでJavaバイトコードを実行するためのJazelleテクノロジをサポートしていることを知っています。とにかく、私がこのテクノロジーを利用するために何が必要かは私にはわかりません。何らかの方法でJazelleを「アクティブ化」する必要がありますか?Jazelle対応のJava仮想マシンが必要ですか?Jazelleテクノロジーを利用するJavaソフトウェアをデプロイして実行するためのフローは何ですか?Jazelleを使用するにはライセンスが必要ですか?

ありがとう。

4

3 に答える 3

8

Jazelleは、ARMアーキテクチャの実行モードであり、「Java仮想マシン(JVM)によるバイトコード実行のハードウェアアクセラレーションのアーキテクチャサポートを提供します」-ARMアーキテクチャマニュアルから引用されています。

また、Jazelleには2つのフレーバーがあるようです。DBXおよびRCT。次のテキストは、Cortex-Aシリーズプログラマーガイド(v3)からのものです。

2.2.2 Jazelle
Jazelle-DBX(Direct Bytecode eXecution)がARMv5TEJに導入され、電力を節約しながらJavaのパフォーマンスを向上させました。メモリの可用性の向上とジャストインタイム(JIT)コンパイラの改善の組み合わせにより、アプリケーションプロセッサでの価値が低下しました。その結果、多くのARMv7-Aプロセッサはこのハードウェアアクセラレーションを実装していません。

Jazelle-DBXは、メモリが非常に限られているシステム(たとえば、フィーチャーフォンや低コストの組み込み用途)で高性能Javaを提供するのに最適です。今日のシステムでは、主に下位互換性のために使用されます。

2.2.3サム実行環境(ThumbEE) ARMv7-Aで導入および要求されたThumbEEは、 Jazelle-RCT (ランタイムコンパイルターゲット)
と呼ばれることもあります。これには、Thumb命令セットへの小さな変更が含まれ、制御された環境(Java、Dalvik、C#、Python、Perlなどの管理対象言語など)で実行時に生成されるコードのターゲットとして適しています。ThumbEEは、Just-In-Time(JIT)またはAhead-Of-Time(AOT)コンパイラーで使用するように設計されており、再コンパイルされたコードのコードサイズを削減できます。マネージコードのコンパイルは、このドキュメントの範囲外です。

私の知る限り、Jazelle-DBXのほとんどの用途は、Java Cardの実装であり、小さなチップによって多くのパフォーマンスを提供したいと考えています。この本当に制限されたドメインは、CPUでバイトコードを直接実行することにより、追加のブーストを利用できます。

ただし、Beagleboneのような最新の組み込みシステムのほとんどは、Javaが当時の典型的なデスクトップでデビューしたときよりも多くのメモリとCPUパワーを備えているため、Jazelle-DBXは不要です。これは主に、JITコンパイルをネイティブホストに取得するためです。(JITの実装はJava Cardには大きすぎます。)

ThumbEE/Jazelle-RCTの有用性にも疑問があります。アンドロイド移植の議論からの引用:

無料のnullポインタチェックを取得するためにこれらすべてを実行しても、あまり意味がありません。

結論として、AndroidのDalvikを含むJazelleフレーバーを利用したJavaVMの実装については知りません。組み込みデバイスでJavaを実行する必要がある場合は、次のいずれかを選択します。DalvikJamVMまたはJavaSEEmbedded

于 2012-10-15T22:52:25.937 に答える
7

http://infocenter.arm.comにアクセスする必要があります。ビーグルボーンは、ARMv7であるCortex-A8を使用します。左側のCortex-Aシリーズプロセッサの下で、Cortex-A8は最新のマニュアルr3v2(rev 3.2)を入手します。ARMアーキテクチャでリファレンスマニュアルを展開すると、ARMv7-ARが必要になります(この記事の執筆時点では、C号が最新です)。

私の例に行くその情報を取る

http://github.com/dwelch67/beaglebone_samples

私のビーグルボーンショーの機能例:

12345678                                                                        
Hello World!                                                                    
413FC082                                                                        
410330C3                                                                        
00000000                                                                        
00001131                                                                        
00000011                                                                        
00000000                                                                        
00000000                                                                        
00000000                                                                        
00000002                                                                        
13112111                                                                        
00000000                                                                        
00000000                                                                        
00000002                                                                        
12345678               

つまり、これはr3p2(rev 3.2)コアのように見えます。マニュアルにあるように、ThumbEE、Jazelle、thumb、ARMがサポートされています。

紛らわしいのは、ti WebサイトのTRMです。これに焦点を当てるまで、ARMtrmはすべてJazelleがサポートされていると言っています。

ジャゼルエクステンション

Cortex-A8プロセッサは、Jazelle拡張機能の簡単な実装を提供します。これは、プロセッサがバイトコードの実行を加速せず、すべてのバイトコードがソフトウェアルーチンによって実行されることを意味します。

Jazelle拡張機能の実装では:

Jazelle状態はサポートされていません

BXJ命令はBX命令として動作します。

それは私たちにいくつかのことを教えてくれます。これは、他の場所がそう言っているにもかかわらず、このプロセッサにJazelleハードウェアがないことを本当に意味しますか?

また、jazelleコードを実行するには、bxと同じようにbxjを実行して、アームモードとサムモードを切り替えることも示しています。だから私はそれを試しました:

.globl bxjtest
bxjtest:
    ldr r0,=skip
    bxj r0
    mov r0,#1
    bx lr
skip:
    mov r0,#2
    bx lr

アセンブラがbxjを実装したように見えます

82000064 <bxjtest>:
82000064:   e59f0044    ldr r0, [pc, #68]   ; 820000b0 <GET32+0x8>
82000068:   e12fff20    bxj r0
8200006c:   e3a00001    mov r0, #1
82000070:   e12fff1e    bx  lr

82000074 <skip>:
82000074:   e3a00002    mov r0, #2
82000078:   e12fff1e    bx  lr

ただし、コードはそのアドレスのarm命令から2を返します。それが何かを意味するかどうかわからない、多分あなたがジャゼルを働かせるためにあなたがしなければならない他のことがあるでしょう。そこには本当にジャゼルコアがないという印象を受けますが、ソフトウェアライブラリを購入するという印象を受けます。

Jazelleドキュメントは、アクセスするためにARMに連絡する必要がある種類のようです。だから私はそれ以上に実際にそれを使う方法を知りません。

ARMでさらに読んでください。ID_ISAR1レジスタは1を示します

0b0001

BXJ命令とPSRのJビットを追加します。

この設定は、Jazelle拡張機能の簡単な実装を示している可能性があります。

そして、ID_PFR0レジスタのARM ARM記述には、TRMよりも多くの情報が含まれているとのことです。

Jazelle拡張機能の簡単な実装は、値0b0001で示されます。

そして、0b0001は、そのレジスタのそのフィールドに対して読み取っているものです。

掘り下げるほど、これは「些細な実装」であるように見えます。これは、私にとって「そこにいない」ことを意味します。JMCRレジスタは、それが些細な実装である場合、読み取りはゼロ(RAZ)として返され、書き込みは無視される(WI)必要があることを示しています。それでも、BXJ命令を試しましたが、それでもarmコードが実行されました。

于 2012-10-16T05:17:09.063 に答える
3

基本的に、製品ベンダーとして、Jazelleテクノロジーでコードを有効にして実行する機能をARMからライセンス供与します(料金を支払います)。料金は、予測量、実際の結果などに基づきます。私は実際の価格レベルに精通していません。Javaコードが出入りするときに、CPUをバイトコード実行から切り替えるために必要な特定のコードフラグメントがあります。デバイスベンダーとして特権を支払わない限り、Jazelleは操作できず、静かに無視できます。第一世代のJazelleは、それまでバイトコードインタープリターが唯一の利用可能なオプションであったRAMスペースが制限されたシステムでの迅速なJava実行の必要性に対する答えでした。JITはコンパイルにRAMを必要としますが、初期の電話はメモリサイズを抑えることで低コストに最適化されていました。最初の音楽電話のいくつかは、Jazelleを使用してMIDletの実行パフォーマンスを向上させました。しかし、その後の製品では、メモリはすぐにあらゆる種類のマルチメディアスマートフォンレベルの機能に対応するようになりました。その後、JITコンパイラーが実現可能になり、実際には全体的なパフォーマンスに優れています。Jazelleは、ほとんどの場合、バイトコードをマシンコードのバイナリにマッピングするだけで、「バイトコードよりも速く実行することはできません」と言っています。JITは、特定の一連のバイトコードシーケンスを、一度に1つずつ個々のバイトコード操作に基づく場合よりも高速に実行される効率的なネイティブコードにマップできる場合があります。そのため、初期のJazelleモードはもはや実際には役に立ちません。RAMの増加により、JITがより実現可能になりました。Jazelleは、ほとんどの場合、バイトコードをマシンコードのバイナリにマッピングするだけで、「バイトコードよりも速く実行することはできません」と言っています。JITは、特定の一連のバイトコードシーケンスを、一度に1つずつ個々のバイトコード操作に基づく場合よりも高速に実行される効率的なネイティブコードにマップできる場合があります。そのため、初期のJazelleモードはもはや実際には役に立ちません。RAMの増加により、JITがより実現可能になりました。Jazelleは、ほとんどの場合、バイトコードをマシンコードのバイナリにマッピングするだけで、「バイトコードよりも速く実行することはできません」と言っています。JITは、特定の一連のバイトコードシーケンスを、一度に1つずつ個々のバイトコード操作に基づく場合よりも高速に実行される効率的なネイティブコードにマップできる場合があります。そのため、初期のJazelleモードはもはや実際には役に立ちません。RAMの増加により、JITがより実現可能になりました。

于 2013-02-08T02:56:57.977 に答える