問題タブ [powerpc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hardware - powerpc プロセッサで外部割り込みはどのようにベクトル化されますか?
おそらく問題は、外部割り込みは PowerPC でベクトル化されているのでしょうか? http://www.ibm.com/developerworks/eserver/library/es-archguide-v2.htmlの「book 3」を見て、プロセッサーが応答で適切な割り込みサービスルーチンを見つける方法を理解しようとしています外部割り込みに。PPC が外部割り込みを認識すると、実行が 0x0000_0500 にジャンプすることを示唆しているようです。
私は PPC の仕組みについて誤解している可能性があります。x86 では、プロセッサは割り込み確認サイクルで割り込み要求に応答し、デバイスから直接「ベクトル」を取得します。ベクター (実際にはインデックス) により、CPU は割り込みベクター テーブルから適切なハンドラー ルーチンを選択できます。最も重要なことは、この確認応答/ベクトル フェッチはハードウェア、バス プロトコルの問題であり、それを実現するためにコードを記述する必要はありません。書き込み (読み取り、ソフトウェア) が必要なコードは、ISR 自体だけです。
PPC も同様のことを行いますか? 0x500 にベクトルのテーブルはありますか? それとも、根本的に異なることを行い、デバイスのベクトルを外部割り込みコントローラーに取得する機能をオフロードしますか? 0x500のコードにジャンプするだけで、実際のソフトウェアが (仮想の?) 割り込みコントローラーに問い合わせてベクトルを取得し、それをジャンプ テーブル/what-have-you で使用できると思いますが、できます。いずれにせよ、これが事実であることを確認するためのドキュメントが見つかりません。
cocoa - Objective-Cのガベージコレクションのクラッシュをデバッグするための戦略
私のユーザーの小さなサブセットに影響を与えているかなりイライラするクラッシャーがあります。私の分析から、それは10.5を実行しているPowerPCユーザーに分離されているようです。ガベージコレクターがバックグラウンドで実行されると、アプリケーションがサイレントに強制終了されます。クラッシュログの関連スニペットは次のとおりです。
古いPPCMacでクラッシュを再現できませんでした。エラーの性質があいまいなため、Macでクラッシュが発生している場所を特定するのがやや困難です。
これを分離するために使用できるデバッグ戦略またはツールはありますか?おそらく、クラッシュの原因/原因を特定するためにユーザーに渡すことができるものはありますか?
endianness - PPC のエンディアンに関係なく、Altivec のロードとストアを処理しますか?
Altivec に 32 ビット整数値を並列処理する SIMD コードがあります。場合によっては、整数をリトル エンディアンとしてロードしたい場合もあれば、ビッグ エンディアンとしてロードしたい場合もあります (注: この選択は、ネイティブ CPU のエンディアンに関係なく、実行中のアルゴリズムに基づいています)。実際のバイト スワップの実行は、Altivec の並べ替え操作を使用すると非常に簡単です。Apple が文書化しています。
私が心配しているのは、PowerPC ではビッグ エンディアンまたはリトル エンディアンの操作が許可されているため、リトル エンディアンのロード/ストアまたはビッグ エンディアンのロード/ストアでバイト スワップが必要かどうかわかりません。(現在、私のコードは常にリトル エンディアンで実行され、ビッグ エンディアンのメモリ操作では決してスワップされません。これは、もちろんビッグ エンディアンで実行されているため、現在使用している 970 で正常に動作します)。
私が見つけた限りでは、リトル エンディアン モードの PPC は比較的まれですが、実際には存在します。理想的には、コードがモードに関係なく正しく迅速に動作するようにしたいと考えています。
CPU のエンディアンに関係なく、AltiVec レジスタへのビッグ エンディアンとリトル エンディアンのロードを処理する方法はありますか? これに関連して知っておくべき他の問題はありますか? ウィキペディアには(引用されていない、当然のことながら)声明があります:
「AltiVec の操作は、128 ビットであるにもかかわらず、64 ビットであるかのように扱われます。これにより、AltiVec より前に設計されたリトルエンディアンのマザーボードとの互換性が可能になります。」
これは、リトルエンディアン モードの AltiVec に固有の他の不快感があるかもしれないと私に思わせます。
xcode - Snow Leopard での開発中に、PPC Mac Mini を 10.5 以降のアプリケーションのビルド マシンとして使用すると問題が発生しますか?
Snow Leopard で Xcode 3.2 を使用して開発しています。ただし、開発中のアプリケーションは 10.5+ (Leopard) を対象としています。
継続的インテグレーション サーバーのセットアップを検討しています (CruiseControl 経由)。
私は古い PPC Mac Mini を持っています。Xcode 3.1.3 では 10.5 しか動作しないことがわかりました。
Mini を統合サーバーとしてセットアップするのは運がいいのでしょうか、それとも、あまりにも多くの問題に遭遇して手間をかける価値がないので、Intel マシンのキャンペーンを行ったほうがよいのでしょうか?
私が考えているいくつかのこと:
- iPhone アプリの開発を開始すると、それらを PPC Mini でビルドすることはできなくなります。
- XCode プロジェクト ファイルは、3.1 互換性を維持する必要があります。
- PackageMaker も 10.6 でアップデートを受けたと思います。更新された .pmproj ファイルに下位互換性があるかどうかはわかりません。
interrupt - MPIC を使用して powerpc に IPI の割り込みハンドラをインストールする方法は?
CPU (特に powerpc) では、IPI (プロセッサ間割り込み) 用に割り込みハンドラをインストールできますか? 私が使用している MPIC はコアごとに 4 つの IPI をサポートし、これらの IPI のベクトルと優先度を設定するためのレジスタがありますが、割り込みハンドラはどこにインストールすればよいですか? CPU コアには、外部割り込み、内部割り込み、タイマー割り込み、例外などの割り込みハンドラーを設定するための IVOR (Interrupt Vector Offset Registers) がありますが、IPI にはありません。
macos - OSX 上の Intel と PPC CPU の両方のコンパイル
私は 64 ビット Intel Core 2 Duo プロセッサを搭載した MacBook Pro を使用しており、gcc (i686-apple-darwin9-gcc-4.0.1) を使用して、自分のマシンで正常に実行できる実行可能ファイルをコンパイルしています。最近、誰かが私のアプリケーションを PowerBook G4 で実行しようとしたところ、「実行可能ファイルの CPU タイプが正しくありません」というエラーが表示されました。これは、CPU が Intel ではなく PPC である (また、64 ビットではなく 32 ビットである可能性もある) ためだと思います。
gcc を使用して、さまざまな Mac アーキテクチャすべてで動作するバイナリを作成することは可能ですか。
assembly - PowerPC 初期化
Intel の x86 プロテクト モード スイッチとそれに続くアドレス テーブルなどの初期化と同様に、PowerPC 32 ビット プロセッサ (PPC-440 など) を初期化する方法を知っている人はいますか? これらのプロセッサで OS が処理する必要がある最初の手順に関するドキュメントはありますか?
よろしく、
optimization - Apple の PowerPC memcpy が高速な理由は何ですか?
PowerPC での優れたメモリ戦略を求めて、いくつかのコピー関数を作成しました。Altivec または fp レジスタをキャッシュ ヒント (dcb*) と共に使用すると、大きなデータの単純なバイト コピー ループよりもパフォーマンスが 2 倍になります。最初はそれに満足していたので、通常の memcpy を投入して比較してみました...私のベストよりも 10 倍高速です! memcpy を書き直すつもりはありませんが、memcpy から学び、ほとんどの時間をメモリとの間でピクセルを移動するのに費やすいくつかの単純な画像フィルタを高速化したいと考えています。
サメの分析では、内部ループが dcbt を使用してプリフェッチし、4 つのベクトル読み取りと 4 つのベクトル書き込みを行っていることが明らかになりました。反復ごとに 64 バイトを運ぶように私の最高の関数を微調整した後でも、memcpy のパフォーマンス上の利点は依然として恥ずかしいものです。私は dcbz を使用して帯域幅を解放しています。Apple は何も使用していませんが、どちらのコードもストアで躊躇する傾向があります。
非常によく似たコードに劇的なパフォーマンスのギャップがある理由について、誰か考えがありますか? memcpy が使用している秘密のソースに実画像フィルターをマリネしたいです!
追加情報: すべてのデータはベクトルで整列されています。元の画像を置き換えるのではなく、画像のフィルター処理されたコピーを作成しています。コードは PowerPC G4、G5、および Cell PPU で実行されます。Cell SPU版はすでにめちゃくちゃ速いです。
xcode - Mac のユニバーサル バイナリをテストする
私は OS X の下で intel mac で mac プログラムを開発しています。これはユニバーサル バイナリでもある必要があるため、Xcode を使用してユニバーサル バイナリ (UB) を作成できると思いますが、間違っていますか?
しかし、私の質問は、ある種の仮想マシンまたはそのような他の方法があるかどうかです。したがって、バイナリの powerpc 部分が正常に動作するかどうかをテストできますが、Intel Mac しかありません。
私も PS3 を持っていますが、これには pwerpc proc があるので、ここでコマンド ライン アプリケーションをテストできるのではないかと思います。
ありがとう