Qualcomm Hexagon「Comet Board」とは何ですか?

Qualcomm Hexagon「Comet Board」とは何ですか?

Linuxメインラインカーネルには、Qualcomm Hexagon DSPアーキテクチャのサポートが含まれていますarch/hexagon。リストされた管理者はMAINTAINERS次のとおりです。

QUALCOMM HEXAGON ARCHITECTURE
M:      Richard Kuo <[email protected]>
L:      [email protected]
S:      Supported
F:      arch/hexagon/

ファイルarch/hexagon/configs/comet_defconfig構成定義によると、「Comet Board」というボードがありますarch/hexagon/Kconfig

この彗星ボードは何ですか?誰がそうでしたか?

答え1

Rob Landley(Qualcomm&quicで「Linuxのインストールに半年を過ごしました」)は、このマザーボードについていくつかのメモをしました。不特定のSnapdragonと256MBまたはRAM、一部のネットワーキング、ローカルストレージのない社内Qualcommマザーボード。このチップはNexus Oneのチップと同じである可能性が高いです。QSD8250(Snapdragon S1)、65nmで作られた600MHzの一部のQDSP6、おそらくqdsp6 V2でしょう。

https://landley.net/notes-2012.html#24-02-2012

人々は電子メールでQualcomm Hexagonについて尋ねてきました、そして私は長い説明を書き続けて書くのをやめました。以下は、子孫のために私が最近書いた電子メールです。 1年半が経ち、私たちがやってきた基礎作業が完了し、今話が出るようになりました。

この仕事に対する私の契約は2010年10月に期限切れになったので、次は1年前の漠然とした記憶です。

彼らは生産のために第三者にアウトソーシングする恐ろしい独占製品である内部シミュレータを持っています。私の記憶が正しい場合、クアルコムの弁護士は彼らが正しく機能していることを確認するために多くの努力をしました。いいえソースコードを入手してください。 「独占コードがはっきりしたほうがいいです」が多いからです。私はこれが彼らに大きな打撃を与えると思います。なぜなら、この愚か者はLinuxの移植には役に立たないからです。

ほとんどの場合、実際のハードウェアを使用しています。私たちはスナップドラゴンSOCと約256Mのメモリを備えた「彗星」ボードと呼ばれており、このボードから起動してコードを実行できます。 (ローカルリポジトリがないので、最終的にビジボックスにnbd-clientを実装していくつかを得ました。)

qemuに六角形のサポートを追加しようとしましたが失敗しました(Scottの誰かがしました...)。残念ながら、それを試した人はTCGを理解できず(ほとんどの管理者だったようです)、どこにも行きませんでした。 :( ...

Linuxでは、100MHzで動作する6way SMPチップですが、サイクルあたり最大4つのコマンドを予約できるため、300MHzに近いパフォーマンスに戻ることができます。

Snapdragonシステムオンチップ(Nexus Oneなどのデバイスに見られる)には、実際には4つのプロセッサが含まれています。

1)ARMv7「Scorpion」プロセッサQualcommはARMからライセンスを取得して最適化しました(Raleighキャンパスでは、Qualcommの内部ポリシーである自分の領域を保護しました)。

2)Qualcommが内部的に開発したQDSP6「Scorpion」プロセッサ(オースティン)。 Androidでは「マルチメディアセカンダリプロセッサ」として使用されますが、実際には多数のベクトル命令を備えた強力な4方向VLIWユニバーサルプロセッサです。 ...

Linuxポートの場合、Hexagonの起動後に残りの3つのプロセッサをシャットダウンしました。私は本当にNexus OneでAndroidアプリとして実行して六角形でLinuxを起動できるブートローダーを望んでいます(ubootとkernel + initramfs blobをメモリにコピーし、ARMv5を起動してプロセッサを起動してそのubootを実行し、ARM停止します)私はRichard Kuoや他の誰にも書くことができませんでした。 (少なくともシリアルコンソールを提供するためのUSBシリアルアダプタがないと動作しません。これは単純な問題ではありません。すべてのSnapdragon周辺機器ドライバはAndroidツリーにありますが、Arch / armの下にあります。)これを使用できるように、共通のアーキテクチャにインポートします。

MMUに関する注意:このチップにはまだMMUがありません。代わりに、ソフトウェアによってロードされた変換参照バッファスロットのセットがあります。これらはMMUとして機能するバイナリブロブを作成し、u-bootのスナップドラゴンポート(armv5ブートプロセッサで実行されると考えられる)がこのブロブをロードしてページエラー割り込みに接続するため、ソフトウェアmmu(Linuxポートが依存するポート)です。

従来のSnapdragonチップ(まあ、QDSP6v2だと思います)のHexagon変形の主な問題は、TLBスロットが十分ではないことです。 gccコンパイルなどのためにフル6方向SMPを実行すると、キャッシュに深刻な影響を与え、速度が遅くなります。私のテストでは、パフォーマンスの「最適なポイント」は-j3または-j4程度でした。私たちはこれをQDSP6v3に対して修正するのに十分速く捕捉できなかったと思います。 (たとえこれがレベル4 500 MHzのバリエーションであるため、とにかくTLBにストレスが少ないので、最適なポイントにある程度あります)する)。しかし、QDSP6v4(私が去ったときに開発していた)には、より多くのTLBスロットが追加され、Linuxでパフォーマンスが大幅に向上します。

2013年から公開minivmハイパーバイザー -http://permalink.gmane.org/gmane.linux.ports.hexagon/553v2とv3でのみ利用可能:https://www.codeaurora.org/projects/all-active-projects/hexagon-minivm「この実装は、Hexagon アーキテクチャ v2 および v3 でのみ実行されます。」

Minivmのソースコードは次のとおりです。https://source.codeaurora.org/quic/hmvm/hexagonMVM/tree/minivm.S

#define TLB_ENTRIES 64
 * V2/V3 User/Supervisor Strategy:
 * MSB of ASID is used for User/Supervisor.

QDSP6v2(600MHz / 6スレッド)のパラメータもLinuxソースコードにハードコードされています。 http://elixir.free-electrons.com/linux/v4.12.3/source/arch/hexagon/kernel/setup.c#L56

/*
 * These will eventually be pulled in via either some hypervisor
 * or devicetree description.  Hardwiring for now.
 */
pcycle_freq_mhz = 600;
thread_freq_mhz = 100;
sleep_clk_freq = 32000;

...
 * This is just really brutal and shouldn't be used anyways,
 * especially on V2.  Left here just in case.

一部のシミュレータもサポートしています(Hexagon-Simかどうかわからない)。

/*
 * Simulator has a few differences from the hardware.
 * For now, check uninitialized-but-mapped memory
 * prior to invoking setup_arch_memory().
 */
if (*(int *)((unsigned long)_end + 8) == 0x1f1f1f1f)
    on_simulator = 1;

Linuxコードは2009-2010年頃に書かれています。http://elixir.free-electrons.com/linux/v4.12.3/source/arch/hexagon/lib/memcpy.S

 * History
 *
 *   DJH  5/15/09 Initial version 1.0
 *   DJH  6/ 1/09 Version 1.1 modified ABI to inlcude R16-R19
 *   DJH  7/12/09 Version 1.2 optimized codesize down to 760 was 840
 *   DJH 10/14/09 Version 1.3 added special loop for aligned case, was
..
 *   DJH  4/23/10 version 1.6

関連情報