[MOSUT20150131] Linux Runs on SoCKit Board with the GPGPU

  • Published on
    15-Jul-2015

  • View
    323

  • Download
    7

Embed Size (px)

Transcript

Linux Runs on the SoCKit Board with the GPGPU

Linux Runs on the SoCKit Board with the GPGPUAJ ()

2015.1.31OutlineNyuzi processorGlobal System Reference Design (GSRD)

Nyuzi Processor-SIMDA custom RISC instruction set (load-store architecture)30 general purpose scalar registers32 vector registers, each with 16 lanesInstructions are 32-bit fixed length and must be 32-bit aligned

des op2 op1 mask add_i_mask v1, s2, v2, v3Nyuzi Processor4

Nyuzi processor:Nyuzi processorOScontext switch3D renderOS(?)

Nyuzi processorboot code$ jload boot.hex$ bin/serial_boot program.elf

GPGPUNiso IIThe DE2-115 BoardUbutun14.10

USB Blaster-JTAGClock rate: ~60 Mhz?Niso IIThe DE2-115 BoardGPGPUMemoryUART00xffffffff

serial_boot.cprogram.ELFboot.cserial_boot.ccommandhex codememory

5. serial_boot.cboot.c,code.start.sstack0x2000codeJTAG LoaderPCstart.sboot.c

stack0x200000GPGPU resetaddress 0start.s sp = 0x2000boot.c

PC, sp0x200000 (?) boot.hexUbutun14.10step1step6step4

GPGPUHEX code board memorystart.sboot.c$ jload boot.hex$ bin/serial_boot program.elf?OS()?: the SoCKit board

RocketBoards.orgGSRD 14.1 for the SoCKit board

? (2014 )GSRDLinux FPGASoftware IPLinux DriverFile I/OSoftware IP:Image,run.updateBooting Linux Using Prebuilt SD Card ImageCreating and Updating SD Card

Altera Hard Process System (HPS)

H2FHigh bandwidthLight weightF2H (FPGA to HPS system)F2S (FPGA-to-HPS SDRAM Interface)

Cyclone V HPS Memory MapSoCKitCortex-A9H2Fsoftware IP LWAXI 0xFF200000 ~0xFF3FFFFF(2MB)HPS2FPGA (high bandwidth)0xC000000

Golden Hardware Reference Design (GHRD)On-Chip RAM

F2HF2SSoCKitsoftware IPF2HF2SmemoryCortex-A9software IPmemory

SoCKit Video Server and Video IP (VIP) Reference Design

LWAXIF2HQsysAXI master/slaveSoftware IPQsys,@@?AXI master slaveAMBA AXI and ACE Protocol Specification AXI3, AXI4, and AXI4-Lite, ACE and ACE-Lite, Demo AXI Memory Design ExampleQsys System Design Tutorial :AXI masterslavepinAXI slave's ID bit widthIf an AXI slave's ID bit width is smaller than required for your system, the AXI slave response might not reach all AXImaximum_master_id_width_in_the_interconnect + log2(number_of_masters_in_the_same_interconnect)Nyuzi ProcessorQsys

Software IP

+0xff20 0000GSRD

QsysLWAXIF2HXD

,FPGA? Yes, it works.

Converting .sof to .rbfDevice tree generationdriverI/OnameDevice Treeaddress[]Preloader image generationpreloadersource code FPGAConfigure Pinmux Preloader and U-Boot Customization - v13.1Updating SD card

GDRDVIP RDNiso IIThe DE2-115 BoardGPGPUMemoryUART00xffffffff

serial_boot.cprogram.ELFboot.cserial_boot.ccommandhex codememory

5. serial_boot.cboot.c,code.start.sstack0x2000codeJTAG LoaderPCstart.sboot.c

stack0x200000GPGPU resetaddress 0start.s sp = 0x2000boot.c

PC, sp0x200000 (?) boot.hexUbutun14.04step1step6step4

GPGPUHEX code board memorystart.sboot.cCortex-A9The SoCKit BoardGPGPUMemory00xffffffffstackcodePCUbutun14.04LINUXHPSSD cardProgram.hex produced by elf2hexLWAXIAddressdata0xFF200000RESET0xFF200004Code base address0xFF200008Stack address (*highest* stack)0xFF20000CHeap address0xFF200010Frame addressLinuxcode,code base addressstack address fd = open(/dev/mem,..) used_ptr = mmap(..,fd,0xff200000)cortex-A9SD cardcodememorycortex-A9GPGPU RESET signal

step 1step 2F2HLWAXIF2Hboot.hexHow to build

Elf2hex is as a loaderTutorial: Creating an LLVM Backend for the Cpu0 Architecture

LLVM-nyuzi is built to the targetCortex-A9The Sockit BoardLINUXHPSSD cardld.mcldllvm-arelf2hexclang.s, .c, .cpp.o.a.o.elf.hex.hex,..

CPU/GPU,HSA

CUDA LLVM Compiler