本文主要将目前三种HSA模拟器设计文献进行翻译总结,文献请查看上传文件。
gem5-gpu: http://download.csdn.net/detail/lpn709695399/9620482
multi2sim: http://download.csdn.net/detail/lpn709695399/9621438
socrocket: http://download.csdn.net/detail/lpn709695399/9620483
http://download.csdn.net/detail/lpn709695399/9608852
gem5-gpu: A Heterogeneous CPU-GPU Simulator
-> 2013
集成CPU与GPU系统的模拟器,基于gem5(CPU)与GPGPU-sim(GPU)搭建
most memory accesses基于Ruby搭建,gem5中的可配置存储系统:
1. cache一致性
2. CPU/GPU共享虚拟地址,独享物理地址
可以运行CUDA 3.2的代码,非阻塞运行,CPU与GPU可并行运行,本文提供软件架构和性能分析,并提出扩展方案 <---如何实现非阻塞运行
1. Introduction
gem5为全系统多核模拟器,有多种CPU、指令集 和 存储模型;另外gem5支持面向对象的设计,灵活多变的配置方案。逐渐成熟的技术使得gem5成为评估通用CPUs和多核平台的主要工具。 <---是否包含ARM
GPGPU-sim为GPGPU的模拟器,为GPGPU的CU(compute units,如NVIDIA中的SM)和GPU的存储系统进行建模
gem5-gpu借鉴GPGPU-sim中的CU模型 和 gem5的CPU和存储系统模型
采用execution-driven simulation
trace-driven的prtition方法比较好
[1] MacSim中采用了更加细化的方法,相对于Multi2Sim和FusionSim,具有更灵活的存储架构和一致性协议,仿真时间比较长
优势:
1.Detailed cache coherence model
2.Full-system simulation
3.Checkpointing
4.Tightly integrated with the latest gem5 simulator
5.Increased extensibility of GPGPU programming model and entire system architecture
DMA engine可以对CPU和GPU地址空间进行数据搬运建模
2 Heterogeneous Computing
GPGPU计算是计算迁移(Computation Offloading)的代表
计算迁移:针对特定的工作任务,受当前计算系统资源的限制,需要将计算任务分配到其他外部平台,比如a cluster, grid, or a cloud。可以用到Artificial intelligence, Artifitial Vision and object tracking, or computational decision making
data-parallel image processing, scientific, and numerical algorithms
迁移到GPU的任务称为Kernel,Kernel可以分为许多线程,而只占用GPU一条指令的SIMT执行
Work units offloaded to the GPU are called kernels
CPU与GPU采用独立的存储空间时,GPU与CPU之间需要进行数据的搬运
程序迁移至GPU需要use-level calls,调用GPGPU的API(runtime),其中包含kernel-level驱动控制GPU设备。目前比较流行的runtime为CUDA和OpenCL
HSA fundation提出未来异构计算中统一存储方案(heterogeneous uniform memory access, hUMA)
[7]中NVIDIA也提出统一存储空间的方法UVA
gem5-gpu目的就是支持这种灵活、可扩展的编程模型和体系结构
3. The Giant's shoulders
3.1 gem5
gem5.org由学术界与工业界的许多实验室开发
gem5包含许多CPU,存储系统和指令集模型
two execution modes:
1) system call emulation: 系统调用仿真,可以执行User-level binaries调用emulated system calls <- 不是特别懂
2) full-system: 建模所有设备来boot并运行操作系统,提供检查点(checkpoint),可以有目的的进行仿真
优势:
1. 提供融合新体系架构机制,可以使用集成在gem中的EXTRAS接口例化外部代码 <- 如何添加
2. 集成了详细的cache和memory模拟器Ruby,Ruby是基于domain specific language, SLICC(用来描述cache一致性协议)开发的环境,目前还没有GPU的模型
3.2 GPGPU-Sim
[2] backed by a strong publication record
为现有的NVIDIA显卡进行建模
GPGPU-Sim将应用程序编译为PTX(NVIDIA中间指令集)或者汇编本地GPU机器码
GPGPU-Sim为线程分配逻辑、highly-banked regster file、特殊功能单元和存储器系统的计算流水进行功能和时序模型
GPGPU-Sim包含GPU的存储器、DRAM、cache模型
constant/scratchedpad/low-latency in-core cache/local/parameter/instruction/texture
GPGPU-Sim可以将源代码连接到为对应的GPGPU运行库
GPGPU-Sim是一个功能优先模拟器,先执行所有的指令,然后反馈给时间模拟器
GPGPU-Sim在为异构系统建模的缺陷:
1. 没有主CPU的时钟模型
2. 没有主设备拷贝函数的时钟模型
3. 严格的cache模型
4. 没有主设备间的交互模型
4. gem5-gpu architecture
GPU由许多CU组成,每个CU均有取指/译码逻辑、a large register file,许多执行通道(execution lanes, 多为32/64)
当读取global memory时,每个通道将各自地址发送到聚结器(coalescer),将所有的memory accesses指向相同的cache块,GPU也可以有自己的cache架构
4.1 gem5<-->GPGPU-Sim Interface
我们的目标之一是在gem5与GPGPU-sim间提供简洁的接口,在gem5中添加一条伪指令,简化DMA engine和GPU功能的调用
gem5-gpu将GPGPU-Sim对global address space的访问通过gem5接口映射到Ruby的访存指令
4.2 Memory Syst