📄 2。5.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>高速缓存(5)</title>
<meta name="Microsoft Theme" content="arcs 011">
</head>
<body background="../images/arctile.jpg" bgcolor="#FFFFFF" text="#000000" link="#3399FF" vlink="#666666" alink="#FF9900">
<p align="center"><font color="#000000" size="6"> 高速缓存(5)</font>
</p>
<p align="right"><font color="#000000"><a href="Index.htm"><img border="0" src="IMAGES/BACK.GIF" align="left" width="60" height="45"></a>
<a href="2。4.htm"><img border="0" src="IMAGES/PREV.GIF" width="60" height="45"></a>
<a href="第三节.htm"><img border="0" src="IMAGES/FORW.GIF" width="60" height="45"></a></font>
</p>
<p><font color="#000000"> </font>
</p>
<p><font color="#000000" size="4">
7.支持缓存的多级存储系统的设计</font>
</p>
<p><font color="#000000" size="4"> 一个和字块大小相关的更严肃的问题是失效增加的代价。从更低一层中获 得字块并且调入CACHE中所需的时间决定了失效损失。获取字块的时间分为两部分:等待找到第一个字的时间和传输字块所需的时间。如果不改变主存,传输时间将会 随着字块大小的增 加而增加。如果我们设计一种主存来更有效的传输字块,我们就可以同时增加字块大小 和提高CACHE性能。我们可以</font>
</p>
<p><font color="#000000" size="4"> 通过增加主存和CACHE之间的带宽来减少损失时间。(下图7.12) <br>
<img border="0" src="IMAGES/2。5.3.gif" width="542" height="397">
</font>
</p>
<p><font color="#000000" size="4"> 三种方案的比较:<br>
a.一次传送一个字宽度<br>
b. 宽总线型<br>
c. 多体交叉访问结构(Interleaving) <br>
</font>
</p>
<p><font color="#000000" size="4"> 先看一个理想的存贮器:<br>
a. 一个时钟周期送出访问地址<br>
b. 10个时钟周期用DRAM的初始化<br>
c. 一个时钟周期发送一个字宽数据<br>
</font>
</p>
<p><font color="#000000" size="4"> 第一种方案:<br>
设缓存字块容量为4个字,DRAM与CACHE的接口为字宽度,则失效损失时间:(以 内存读一块(4字),如图7.12(a))</font>
</p>
<p><font color="#000000" size="4"> 1+10*4+4*1=45时钟周期</font>
</p>
<p><font color="#000000" size="4"> 在失效处理中,每个时钟传送字节数:4*4/45=0.35字节/每时钟(per clock cycle)</font>
</p>
<p><font color="#000000" size="4">第二种方案:<br>
增加存储器和总线的宽度,则成比例的增加存储系统的宽度,但可以减少失效损失的时间,如总线宽度为2字宽,则失效损失时间为:</font>
</p>
<p><font color="#000000" size="4"> 1+2*10+2*1=23时钟周期,</font>
</p>
<p><font color="#000000" size="4"> 16/23=0.69字节/每时钟;<br>
<br>
如总线宽度为4字宽,则失效损失时间为:</font>
</p>
<p><font color="#000000" size="4"> 1+1*10+1*1=12时钟周期,</font>
</p>
<p><font color="#000000" size="4"> 16/12=1.33字节/每时钟周期。<br>
<br>
</font>
</p>
<p><font color="#000000" size="4"> 第三种方案:<br>
CACHE和总线宽度以字宽度传送,存储器多体交叉存取。此时,一次性读或写数据,然后再一个字一个字的传送。例如四体结构,则失效损失时间为:</font>
</p>
<p><font color="#000000" size="4"> 1+1*10+4*1=15时钟周 期; <br>
<br>
16/15=1字节/每时钟周期。</font>
</p>
<p><font color="#000000" size="4">
多体交叉存取可以同时读和写。<br>
</font>
</p>
<p><font color="#000000" size="4">
8.CACHE性能分析对机器性能的影响<br>
<br>
CPU时间=(CPU执行时钟周期+存储器等待时钟周期)*时钟周期时间
</font>
</p>
<p><font color="#000000" size="4"> 计算假设:(1)存储器的等待时间主要来自CACHE失效</font>
</p>
<p><font color="#000000" size="4">
(2)限于讨论存储系统简化模型</font>
</p>
<p><font color="#000000" size="4"> 在实际CPU中,读和写产生的等待是相当复杂的。正确的性能预见比通常要求非常详细的CPU与存储系统的模拟simulations(软件)。<br>
<br>
存储器等待时钟周期=读等待时钟周期+写等待时钟周期</font>
</p>
<p><font color="#000000" size="4"> 读等待时钟周期=读访问次数/每个程序*读失效率*读失效损失时间(Read
miss penalty)
</font>
</p>
<p><font color="#000000" size="4"> 写等待时钟周期=写访问次数/每个程序*写失效率*写失效损失时间+写缓冲等待
</font>
</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -