Pixel Visual Core

Pixel Visual Core（PVC）は、Googleが設計したARMベースの一連のsystem in a package（SiP）の画像プロセッサである。PVCは、モバイル デバイスおよび将来のIoT向けの、完全にプログラム可能な画像、ビジョン（英語版）、AIのマルチコアのドメイン固有アーキテクチャ（DSA）である。2017年10月19日に発売されたGoogle Pixel 2と2 XLで初めて導入された。Google Pixel 3と3 XLでも導入されている。Pixel 4以降、このチップはPixel Neural Coreに置き換えられた。 Googleは以前、Qualcomm SnapdragonのCPU、GPU、IPU、およびDSPを使用して、Google NexusおよびGoogle Pixelデバイスの画像処理を処理していた。コンピュテーショナルフォトグラフィーの技術の重要性が増してきたことで、GoogleはPixel Visual Core（PVC）を開発した。Googleは、PVCはCPUやGPUを使用するよりも消費電力が少なく、テンソル・プロセッシング・ユニット（TPU）のようなASICとは異なり、完全にプログラム可能であると主張している。実際、従来のモバイルデバイスには、固定機能の画像処理パイプラインである画像信号プロセッサ（ISP）が装備されてきた。これとは対照的に、PVCは画像処理だけに限定されない柔軟なプログラマブルな機能を備えている。 Google Pixel 2と2 XLのPVCには、SR3HX X726C502というラベルが付いている。 Google Pixel 3と3 XLのPVCには、SR3HX X739F030というラベルが付いている。 PVCのおかげで、Pixel 2とPixel 3は98と101のモバイルDxOMark（英語版）を取得した。後者は、iPhone XRと並んで、一眼レフのモバイルDxOMarkスコアの上位であった。 PVCの典型的な画像処理プログラムは、Halide（英語版）で記述されている。現在、浮動小数点演算は行わず、メモリアクセスパターンが制限されているHalideプログラミング言語のサブセットのみをサポートしている。Halideは、ユーザーがアルゴリズムとその実行のスケジューリングを分離できるドメイン固有言語である。これにより、開発者はターゲット ハードウェア アーキテクチャに最適化されたプログラムを作成できる。 PVCには、仮想と物理の2種類の命令セットアーキテクチャ（ISA）がある。まず、高水準言語プログラムが、RISC-V ISAに触発された仮想 ISA（vISA）にコンパイルされ、ターゲット ハードウェア世代から完全に抽象化される。次に、vISAプログラムは、いわゆる物理 ISA（pISA）、つまりVLIW ISAにコンパイルされる。このコンパイル手順では、ターゲット ハードウェア パラメーター（PEサイズの配列、STPサイズなど）を考慮し、メモリ移動を明示的に指定するようになっている。vISAとpISAの分離により、最初のものはクロスアーキテクチャで世代に依存せず、pISAはオフラインまたはJITコンパイルを通じてコンパイルできる。 Pixel Visual Core は、2～16コア設計の偶数の範囲で、スケーラブルなマルチコアのエネルギー効率の高いアーキテクチャとして設計されている。PVCのコアは、画像処理用に調整されたプログラム可能なユニットである画像処理ユニット（IPU）である。Pixel Visual Coreアーキテクチャも、SR3HXのような独自のチップとして、またはシステム オン チップ（SOC）のIPブロックとして設計されている。 IPU コアには、ステンシル プロセッサ（STP）、ライン バッファー プール（LBP）、NoC（英語版）がある。STPは主に、ステンシル計算（英語版）を実行できる処理要素（PE）の2次元SIMDアレイ、つまりピクセルの小さな近傍を提供する。シストリック アレイ（英語版）と波面計算に似ているように見えるが、STPには明示的なソフトウェア制御によるデータ移動がある。各PEは、2x 16ビット算術論理演算ユニット（ALU）、1x 16ビット積和演算ユニット（MAC）、10x 16ビットレジスタ、および10x 1ビット述語レジスタを備えている。 最もエネルギーコストのかかる操作の1つがDRAM アクセスであることを考慮すると、各STPにはデータの局所性を高めるための一時バッファー、つまりLBPがある。使用されるLBPは、さまざまなサイズの読み取りと書き込みに対応する2次元FIFOになっている。LBPは、シングル プロデューサー、マルチコンシューマーの行動モデルを使用する。各LBPは、8つの論理LBメモリとDMA入出力操作用に1つを持つことができる。メモリシステムは非常に複雑であるため、PVC設計者はLBPコントローラを最も困難なコンポーネントの1つとして挙げている。使用されるNoCは、エネルギーの節約とパイプライン化された計算パターンの保存のために、隣接するコアのみと通信するために使用されるリングネットワークオンチップである。 STPにはPEの2次元配列がある。たとえば、完全なPEの16x16配列と、「halo」と呼ばれる単純化されたPEの4レーンである。 STPには、スカラー レーン（SCL）と呼ばれるスカラープロセッサがあり、小さな命令メモリで制御命令を追加する。STPの最後のコンポーネントは、シート ジェネレーター（SHG）と呼ばれるロードストアユニットであり、シートはPVCメモリアクセスユニットである。 SR3HX PVCは、64 ビットARMv8aのARM Cortex-A53（英語版） CPU、8x画像処理ユニット（IPU）コア、512MB LPDDR4、MIPI、PCIeを備えている。IPUコアにはそれぞれ、16 x 16の2次元配列として配置された256の処理要素（PE）で構成される512のALUがある。これらのコアは、カスタムVLIW ISAを実行する。処理要素ごとに2つの16ビットALUがあり、independent、joined、fusedという3つの異なる方法で動作できる。SR3HX PVCは、28 nmプロセス（英語版）のHKMGプロセスを使用してTSMCによってSiPとして製造されている。これは、Intelとのパートナーシップで4年以上かけて設計された（コードネーム: Monette Hill）。Googleは、SR3HX PVCはSnapdragon 835（英語版）よりも7〜16倍エネルギー効率が高いと主張している。また、SR3HX PVCは1秒あたり3兆回の操作を実行できるため、HDR+はSnapdragon 835よりも5倍速く、10分の1未満のエネルギーで実行できる。画像処理用のHalide（英語版）と機械学習用のTensorFlowをサポートしている。現在のチップは426MHzで動作し、単一のIPUは1TeraOPS以上で実行できる。 ^ a b Cutress. “Hot Chips 2018: The Google Pixel Visual Core Live Blog (10am PT, 5pm UTC)”. www.anandtech.com. 2019年2月2日閲覧。 ^ a b c d e f g h Hennessy, John; Patterson, David (2017). Computer Architecture: A Quantitative Approach (Sixth ed.). Morgan Kaufmann. pp. 579-606. ISBN 978-0-12-811905-1  ^ “Google Pixel 2 XL Teardown” (英語). iFixit (2017年10月19日). 2019年2月2日閲覧。 ^ “Google Pixel 3 XL Teardown” (英語). iFixit (2018年10月16日). 2019年2月2日閲覧。 ^ “Pixel 2 DxOMark”. 2021年6月5日閲覧。 ^ “Pixel 3 DxOMark”. 2021年6月5日閲覧。 ^ “iPhone XR DxOMark”. 2021年6月5日閲覧。 ^ a b c d “The Pixel Visual Core: Google’s Fully Programmable Image, Vision and AI Processor for Mobile Devices. HotChips2018”. 2021年6月5日閲覧。 ^ “Pixel Visual Core (PVC) - Google - WikiChip” (英語). en.wikichip.org. 2019年2月2日閲覧。 ^ “Google Partnered with Intel for the Pixel Visual Core Chip in the Pixel 2” (英語). xda-developers (2017年10月25日). 2019年2月2日閲覧。 ^ “Pixel Visual Core: image processing and machine learning on Pixel 2” (英語). Google (2017年10月17日). 2019年2月2日閲覧。