XCELL SOFTWARE JOURNAL: COVER STORY
Processing System Memory NEON
ARMv8-A 32 KB I-Cache w/Parity
32 KB D-Cache w/ECC
GIC-400
DDR4/3/3L LPDDR4/3 32/64 bit w/ECC
Floating Point Unit Memory Management Unit
SCU
Embedded Trace Macrocell
CCI/MMU
1 2 3
ARM Cortex-R5 ARMv7R 128 KB TCM w/ECC
Vendor Floating Point Unit Memory Protection Unit
32 KB I-Cache w/ECC
32 KB D-Cache w/ECC
GIC
4
1 MB L2 w/ECC
1
2
256 KB OCM with ECC
High-speed Connectivity
Graphics Processing Unit ARM Mali-400 MP2 Geometry Processor
Pixel Processor
DisplayPort v1.2a 1
2
PCIe 1.0/2.0
64 KB L2 Cache
PS-GTR
Configuration and Security Unit
System Management
Config AES Decryption, Authentication Secure Boot
Multichannel DMA
Voltage Temp Monitor
Timers WDT, Resets Clocking & Debug
Functional Safety
SATA 3.1
Memory Management Unit
Platform Management Unit
Power Management
USB 3.0
System Functions
TrustZone
General Connectivity
GbE
USB 2.0 CAN UART SPI Quad SPI NOR NAND SD/eMMC
Programmable Logic High-speed Connectivity
Storage & Signal Processing Block RAM
General-purpose I/O
GTH
100G EMAC
UltraRAM
High-performance HDIO
GTY
PCIe@Gen4
DSP
High-density HDIO
Interlaken
Video Codec H.265/H.264 System Monitor
図 3 – Zynq UltraScale+ MPSoC
前のセクションでは、USER モード (EL0) で動作しているプログラ
OS は呼び出しを解釈し、適切な応答 (この場合は要求されたメモリ
ムを SUPER モード (EL1) に移行させるイベントについて説明しま
領域に対するポインターか、利用可能な追加メモリがないことを示す
した。USER モードで実行されているほとんどのプログラムが生成
エラー) を返します。
する 1 つのイベントは、メモリの要求です。EL0 で実行されている ユーザー空間プログラムが EL1 で実行されている OS にメモリを要
デモの作成とツール
求する場合、そのユーザー空間プログラムの C コードは、多くの場合
ここで、筆者らのチームが Zynq UltraScale+ QEMU モデル上
malloc() などの関数を呼び出します。この関数は mmap() または
で Doom を実行した手順について説明します。この手順は、デモの
sbrk() を呼び出し、利用可能なメモリへのポインターを OS に要求し
実行に必要な各コンポーネントをどのように取得し、構築するか、各コン
ます。ARMv8-A アーキテクチャの Linux 上では、この操作はバッ
ポーネントをどのような順序でどのように実行するか、どのようにデモを
クグラウンドで SVC システム コールに変換されます。このシステム
操作するかを示します。このデモが正常に終了すれば、エミュレートされ
コールは、プロセッサを EL1 に移行させて、OS に制御を返します。
た Zynq UltraScale+ MPSoC 上で動作する Xen ハイパーバイザー
12