DRAMSim2学习2——配置文件

system.ini

NUM_CHANS=1                                   ;逻辑独立通道(每一个通道有独立的内存控制器)的个数,必须是2的指数
JEDEC_DATA_BUS_BITS=64           ; 对于DDRx,通常是64,如果是多通道需要写N*64
TRANS_QUEUE_DEPTH=32             ;事务队列,指CPU层的命令,如READ OXbeef
CMD_QUEUE_DEPTH=32                 ;命令队列,指DRAM层命令,如CAS 544,RAS 4
EPOCH_LENGTH=100000                 ;epoch的cycle数,是模拟的粒度
ROW_BUFFER_POLICY=open_page                                               ;行buffer的策略,open_page或close_page
ADDRESS_MAPPING_SCHEME=scheme2                                    ;地址映射机制,有效的机制为1-7,对于多通道应采用机制7,因为有最多的并行
SCHEDULING_POLICY=rank_then_bank_round_robin               ;调度策略,bank_then_rank_round_robin 或者rank_then_bank_round_robin
QUEUING_STRUCTURE=per_rank                                                   ;队列结构,per_rank或per_rank_per_bank
在系统级别上,DRAMSim2模拟属性可以分为两类:数量类和策略类。
数量类包含通道数、数据线位数、事物队列长度、命令队列长度和时间。

策略类包含行buffer策略、地址映射策略、调度策略和队列结构。

device.ini

该配置文件包含了DRAM芯片的容量、延时和功耗参数。以DDR3_micron_32M_8B_x8_sg15.ini文件为例。

NUM_BANKS=8
NUM_ROWS=32768        ;行*列=32M,这就是文件名32M的由来  
NUM_COLS=1024  
DEVICE_WIDTH=8        ;一块DRAM芯片的数据总线宽度8位,而根据DDR3定义,JEDEC_DATA_BUS_BITS=64,组成的一个rank宽度64,所以一个rank需要8块DRAM芯片并联构成。
                      ;根据上面的参数,可以计算得到由这种DRAM芯片构成的一个rank容量为:8banks * 32768rows * 1024cols * 8bit * 8chips = 2GB
                                            ;而运行dramsim2得到的默认输出文件为:2GB.1Ch.1R.scheme2.open_page.32TQ.32CQ.RtB.pRank.vis 

;in nanoseconds  
;#define REFRESH_PERIOD 7800  
REFRESH_PERIOD=7800     ;refresh指令发送周期,单位ns。JEDEC DDR3默认的刷新指令发送周期即7.8us,并且需要满足要求64ms刷新全部行,因此一次刷新的行数为: 32768 * 7.8us / 64ms =  4行。如果要增加行数但保持REFRESH_PERIOD不变,则必须增加每次刷新花费的时间tRFC(可以粗略估计为等比例增长)  
tCK=1.5                 ;DRAM工作时钟周期,单位ns 

;以下是时间参数,单位为cycle。  
CL=10           ;CAS指令到从buffer读出数据的时间  
AL=0            ;从DDR2起,RAS指令后可以马上接CAS指令,但比起传统的RAS后等tRCD再发送CAS的方式,数据能够从阵列中读出的延时并不能间断,AL就是用来表征这段额外延时 
;AL=3; needs to be tRCD-1 or 0; 如果采取RAS指令马上接CAS指令的方式,AL=tRCD-1,如果等tRCD再接CAS指令,则不用计算AL  
;RL=(CL+AL)  
;WL=(RL-1)  
BL=8            ;burst length  
tRAS=24;        ;RAS指令持续时间  
tRCD=10         ;RAS后需要等待tRCD才能发送CAS  
tRRD=4          ;RAS和RAS最短间隔(不同bank)  
tRC=34          ;同一bank RAS和RAS最短间隔  
tRP=10          ;precharge时间  
tCCD=4          ;CAS和CAS最短间隔  
tRTP=5          ;read to precharge  
tWTR=5          ;write to read  
tWR=10          ;写到阵列时间  
tRTRS=1; -- RANK PARAMETER, TODO   
tRFC=107        ;刷新指令执行时间  
tFAW=20         ;Four (row) bank Activation Window  
tCKE=4          ;CKE持续时间  
tXP=4           ;  
  
tCMD=1          ;*  

;以下为DRAM单芯片电流参数,单位mA  
IDD0=130     ;反复RAS precharge的平均电流  
IDD1=155     ;没用到  
IDD2P=10     ;CKE无效,全部bank precharge静态电流  
IDD2Q=70     ;没用到  
IDD2N=70     ;CKE有效,全部bank precharge静态电流  
IDD3Pf=60    ;CKE无效,有bank open静态电流  
IDD3Ps=60    ;跟上面似乎没区别  
IDD3N=90     ;CKE有效,有bank open静态电流  
IDD4W=300    ;写时电流  
IDD4R=255    ;读时电流  
IDD5=305     ;刷新时电流  
IDD6=9       ;没用到  
IDD6L=12     ;没用到  
IDD7=460     ;没用到  
  
;same bank  
;READ_TO_PRE_DELAY=(AL+BL/2+max(tRTP,2)-2)  
;WRITE_TO_PRE_DELAY=(WL+BL/2+tWR)  
;READ_TO_WRITE_DELAY=(RL+BL/2+tRTRS-WL)  
;READ_AUTOPRE_DELAY=(AL+tRTP+tRP)  
;WRITE_AUTOPRE_DELAY=(WL+BL/2+tWR+tRP)  
;WRITE_TO_READ_DELAY_B=(WL+BL/2+tWTR);interbank  
;WRITE_TO_READ_DELAY_R=(WL+BL/2+tRTRS-RL);interrank  
  
Vdd=1.5 ; TODO: double check this  

输出结果

DRAMSim2的输出结果可以分为两类:调试类和汇总类。

调试类包含当前数据总线上的数据、事务队列中的事物、事物对对应的DRAM地址、bank的状态和bank队列中运行的命令。调试类的结果是否显示可以在配置文件system.ini中设置。

汇总类包括总读写次数、总读写数据量和总读写带宽、每个rank的读写次数和读写量、每个rank的耗能、每个bank延迟、带宽。


你可能感兴趣的:(计算机体系结构)