|||
由于本人近期从事GPGPU体系结构研究。GPGPU-Sim是加拿大UBC大学的Admodt教授所带领的课题组开发的世界上第一款cycle accurate的GPGPU仿真器。对于从事GPGPU微架构,编译器以及应用执行特征提取等工作十分有帮助。本人在GPGPU-Sim的官网(www.gpgpu-sim.org)上的Manual部分,根据自己的理解进行了翻译和整理工作。主要包含三个部分内容:GPGPU-Sim微架构模型,GPGPU-Sim使用说明以及GPGPU-Sim的源码分析。其中微架构模型和使用说明是对原Manual的翻译,源代码分析部分将根据自己在学习过程中的体会对文档进行补充和细化。
由于本人能力和精力有限,欢迎对GPGPU体系结构或者对计算机体系结构感兴趣者批评指正。
2.1 Overview
2.1.1 Top-level Organization
图1 OverallGPU Architecture Modeled by GPGPU-Sim
GPGPU-Sim中的GPU模型由一系列SIMT核心构成,这些SIMT核心通过片上互连网络与MemoryPartition连接,实现与GDDRDRAM的通讯。
每个SIMT核心是一个高并行流水的SIMD处理器,等同于NVIDIA的流多处理器SM或者AMD的计算单元CU。GPGPU-Sim的结构如图1所示。
2.1.2 Clock Domains
GPGPU-Sim支持4个独立的时钟域:(1) SIMT核心簇(SIMT Core Cluster)时钟域(2)互连网络时钟域(3) L2 Cache时钟域,这个时钟域被应用到memorypartition中所有的逻辑,除了DRAM(4) DRAM时钟域。
时钟频率可以设置任意值。也就是说,我们可以假设时钟域之间存在同步装置。在GPGPU-Sim3.x仿真模型中,相邻时钟域中的单元通过clockcrossing buffers进行通讯,这个buffer以源时钟频率填充,以目的时钟频率排空。
2.2 SIMT Core Clusters
图2 SIMTCore Clusters
所有SIMT核心被分组成SIMT核心簇,如图2所示。每个SIMT核心簇中的SIMT核心共享一个公共的,连接到互连网络的端口。每个SIMT核心簇有一个单独的response FIFO,
保存从互连网络发送过来的包。这些包被传送给每个SIMT核心的指令Cache(如果发生取指miss)或者发送到存储流水线(LDSTunit)。这些包以FIFO的方式从responseFIFO中排出。ResponseFIFO被挂起,假如一个核心不能接收FIFO头部的包。对于LDST单元产生的存储器访问请求,每个SIMT核心有自己的独享的injectionport连接到互连网络。然而,injectionport buffer被簇中所有的SIMT核心所共享。
2.3 SIMT Cores
图3为GPGPU-Sim3.x中所仿真的SIMT核心的微体系结构。每个SIMT核心是一个高并行流水的SIMD处理器,等同于NVIDIA的流多处理器SM或者AMD的计算单元CU。一个流处理器(SP)或一个CUDA核心对应一个lane,也就是SIMT核心中的一个ALU流水线。
图3 Detailed Microarchitecture Model of SIMT Core
这个微体系结构模型包括了很多早期GPGPU-Sim版本中没有的细节,包括:
l 一个新的指令前端,对指令Cache进行了建模,并将warp调度阶段(发射issue)从取指和译码阶段中分离出来。
l 记分板逻辑使得一个warp中多条指令可以一次一起进入流水线。
l 构建了一个operand collector的详细模型,可以实现对于单端口寄存器堆块(bank)的操作数访问的调度。
l 实现了一个支持多种SIMD功能单元的灵活模型。它允许存储器指令和ALU指令可以在不同的流水线中进行操作。
下面的各个小节将描述图3中所示的流水线中每个阶段的细节。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-14 15:12
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社