2013-43
某32位计算机,CPU主频为800MHz,Cache命中时的CPI为4,Cache块大小为32字节;主存采用8体交叉存储方式,每个体的存储字长为32位、存储周期为40ns;存储器总线宽度为32位,总线时钟频率为200MHz,支持突发传送总线事务。每次读突发传送总线事务的过程包括:送首地址和命令、存储器准备数据、传送数据。每次突发传送32字节,传送地址或32位数据均需要一个总线时钟周期。请回答下列问题,要求给出理由或计算过程。
(1)CPU和总线的时钟周期各为多少?总线的带宽(即最大数据传输率)为多少?
(2)Cache缺失时,需要用几个读突发传送总线事务来完成一个主存块的读取?
(3)存储器总线完成一次读突发传送总线事务所需的时间是多少?
(4)若程序BP执行过程中,共执行了100条指令,平均每条指令需进行1.2次访存,Cache缺失率为5%,不考虑替换等开销,则BP的CPU执行时间是多少?
答案
(1)CPU时钟周期 = 1 / 800 MHz = 1.25 ns;总线时钟周期 = 1 / 200 MHz = 5 ns;总线带宽 = 32位 × 200 MHz = 800 MB/s。
(2)Cache块大小为32字节,每次突发传送32字节,故需1个读突发传送总线事务。
(3)一次读突发传送总线事务中,地址传送需 1 个总线时钟周期(5 ns);8 体交叉存储从启动第一个存储体到读出全部 8 个字,需 40+(8-1)×5=75 ns;随后在总线上传送最后一个数据还需 1 个总线时钟周期(5 ns)。因此总时间为 5+75+5=85 ns。
(4)基础时间 = 指令数 × 命中CPI × 时钟周期 = 100 × 4 × 1.25 ns = 500 ns。
缺失次数 = 访存次数 × 缺失率 = (100 × 1.2) × 5% = 6次。
缺失损失 = 一次读突发传送事务时间 = 85 ns。
额外时间 = 6 × 85 ns = 510 ns。
总CPU执行时间 = 500 ns + 510 ns = 1010 ns。