TMS320C64x+DSP-----Cache优化_第1页
TMS320C64x+DSP-----Cache优化_第2页
TMS320C64x+DSP-----Cache优化_第3页
TMS320C64x+DSP-----Cache优化_第4页
TMS320C64x+DSP-----Cache优化_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、处理器中的cache是存放于处理器附近的高速存储器,它可以用来保存运算处理时的一些 共有的指令,从而加速运算的速度。在本文中,将比较 cache存储器和系统中的普通的存储器,随后将介绍cache的一些基本理论和基本术语, 以及在高速处理器结构中 cache的重要性。以ti的tms320c64x dsp结构 为基础,将着重向开发者介绍 cache是如何工作,如何配置,以及如何正确使用cahce,本文将以cache的一致性贯穿全文。存储器结构在图一中,左边的模块介绍了普通的存储器系统结构,cpu和内部存储器均工作在300mhz。当cpu访问外部存储器时,将不会发生存储器访问禁止的情况。并且当访问内

2、部 存储器时也不会发生访问延迟的情况。当cpu的时钟增加到600mhz时,只有当存储器的速度也增加到600mhz时才不会发生访问等待的状态。很不幸,对于大多数情况下同样频率工作在600mhz的内部存储器价格将十分昂贵。而300mhz的也不是好的选择,因为将大幅降低cpu的频率。设想一个算法需要在每个周期访问存储器,每一次对存储器的访问需等待一个周期,加倍了访问周期从而抵消了 cpu的双倍工作频率。iCPU I时杠600 MHzVOn-ChipL1 CacheGOO MHzH11Wait-States!On-Chip L2 Cache300 MHzmemoryS2ZEOn-chip300 MHz

3、 Memory4缺14扌扩|M Hzir*i X Gtl 7、图一:普通存储器和多层存储器结构解决的办法就是采用一个多层次的存储器。最靠近cpu的存储器由一块速度快但体积小组成, 访问时不存在任何延迟。 稍远离一些 cpu 的采用体积大但速度稍慢的存储器。 对于低 级别的存储器来说,最靠近cpu的这块存储器便是典型的cache存储器位置法则当然, 这个解决办法必须工作在 cpu 能够最快访问最近的存储器的情况时。 由于位置法 则,对于大多数 cpu 来说这一情况都是适用的。 这意为着在一个特定的窗口时间内, 程序仅 仅访问全部地址空间的一块相关的小区域。这包括一下两个基本的位置种类:1、空间位

4、置法则:一块刚刚被访问过的资源附近的资源更有可能被访问2、时间位置法则:在过去的一个时间点刚刚被访问的资源更有可能马上在将来被访问空间位置法则是由计算机程序的编程风格所决定的, 一般情况下, 相关的数据将被连续 的存储在存储器中。 例如一个共同的类型在计算时, 总是将第一个元素放在第一列, 然后是 第二个元素, 以此类推。 同理, 时间位置法则形成的原因是程序包含的结构比如循环结构调 用的是相同的指令(甚至是同样的数据) ,以此反复。图二阐述了空间位置法则,它描述了一个 6 阶 fir 滤波器。为了计算 y0 输出,将从输 入数据缓存 x (值由预算法则对内存中访问的采样数据决定)里读出6 个

5、采样数据。当完成一次数据访问时, cache 控制器从内存中取出 x0 和一系列的取样值地址。这个一系列的 地址值称为 cache 串。如果再从低速率的存储器中取出数据串将导致一些 cpu 的延迟周期。 这样做的目的是而当进行以下计算时, 临近 x0 的这些数据有可能马上将被访问。 而对于 fir 滤波器来说正好适用这个原则,因为接着的五个采样数值( x1-x5 )马上将被访问。这五 个数值的访问过程将进入到cache中完成而不是在低速率的存储器中进行,因而不会产生任何延迟周期。Example: Access pattern of 6-tap FIR filterspjt IOC 3:xtlf

6、re *e(chri nt'* cache0 = WMPI * * h5f<5)Output y1J图二:位置原则当计算下一个输出y1时,五个抽样值(x1-x5)将被再次使用,只有一个抽样值(x6)是新的。所有的抽样值已经提取本篇文章来源于百科全书转载请以链接形式注明出处 网址到cache中,cpu不会发生任何的延迟。这个早先使用过的数据在数据处理中再次被用到的 例子很好的说明了时间位置原则。cache是以局部时间地和空间地访问数据为基础的。因此极大的降低了对低速率的存储 器访问,绝大多数数据访问都由高速cache存储器以cpu的工作频率服务于 cpu。存储器数率:cache系统

7、代表性的包括三种级别1、第一级cache (11)位于cpu芯片上并且运算于 cpu工作频率。2、第二级cache(l2)也位于芯片上比11速度慢而体积大。3、第三级cache(l3)位于cpu外部,是速度最慢体积最大的存储器。每一级别的cahce相应执行的因素决定于 cache距离处理器的距离。表一中体现了一个 有代表性的各自相应的时间。图三:在一个2ns时钟周期的具有多级 cache系统的处理器cache执行时间当运算器需要从存储器中提取数据时,它首先在最高级的cache中寻找然后在次高级的cache中寻找。如果在 cache中找到,则称为命中。反之,则称为不命中。一个cache系统的性能

8、决定于 cache申请命中的次数,也称为命中率。对于一个特定的 级别的cache来说,一个高的 cache命中率意为着更高的性能。而整个cahce系统的性能决定于各级cache的命中率。比如一个cache系统第一级11 cache命中率为70%,第二级l2cache 命中率为20%,第三级l3cache命中率为5%,整个存储器的为 5%,因此基于图三这个系统 的平均存储器性能为:(0.7 * 4) + (0.2 * 5) + (0.05 * 30) + (0.05 * 220) = 16.30 ns为了阐述这个概念,我们以ti的tms320c64x dsp存储器结构为例,(表四)包含了一个两级

9、内部cache存储器以及外部存储器。l1cache可以被cpu无延迟的访问。l2存储器可被编 程并且可分配为l2sram(可设地址的片上存储器)和I2cache。无论何种设置中,l2存储器都只 能每两个周期被访问一次。l2的大小决定于芯片的不同,但总是比11大的多。以tms320c6454 dsp为例,l2的大小为1mbyte。而c64x dsp最多支持2gbytes的外部存储器。存储器的速 度决定于存储器采用的技术种类,绝大多数在100mhz左右。在图三中,所有的 cache和数据通道均自动的由cache控制器控制。I addressabe memoryI cache memory卡 dat

10、a paths manged bycache controllerr .iff 庙一,-www.dzSC.iWMpC64x CPUGOO MHz256 bit屮11 No 51 沛9 2x64 bit7L1D16 KB/teLID16 KByteLI CachekWriteBuffer256 bit256 bitL2 CacheL2 SRAMOn-Chip 1 LI Byte L2 Menioiy i <64 bit'4迎Extei lull Meirojy100 MHz Meioivr m 4,4. 4 y t f * " 1 I i«* f u 期| :、

11、: 0 71I图四:tms320c64x cache存储器结构cache的数据更新因为cache也是主存储器中的一部分备份,因此cache是否能实时反映主存储器的数据显得至关重要。当 cache里的数据改变,而主存储器内的数据未能改变时,cache里的数据被称为"脏”数据。当数据在主存储中改变,而cache中未能实时改变,cache里的这个数据被称为“延迟”数据。cache控制器采用一系列的技术来维持cache的一致性从而保证 cache里存储的都是有用的信息而不是延迟数据。“监测”和“写回”操作便是两种保持cache一致性的办法。”监测“指的是用来允许 cache在主存储器中是否进

12、行影响cache地址的传输。如果 cache探测到有这样的传输发生,它将及时更性自己从而匹配主存储器。这个在主存储器中复制数据的过程称为”写回“操作。因为cache比主存储器体积小,因此经常会被填充满。当此种情况发生时,所有搬到ca本篇文章来源于百科全书转载请以链接形式注明出处 网址因此一旦我们需要获得地址的地址需要从新从第 0列开始。MfervU-i7 闹也E Example: C64x HP 16 KBylvs -32-bytc linesread allocate r«ackonlyOCCtiXLjOh * 'gio rvm ctk nnrr 时 T :iii jnnn

13、 'ni cnjri H> On a miss, line needs to be allocated in caci!2呻斗|J2 HOLXHRiAli'l I <1* - 41 I* M |«H » i 1 2.html che里面的新数据将会取代已经存在的数据。这里有多种决定数据取代的方法。例如随机取 代法、先入先出取代法、最近最少使用取代法。 大多数的处理器采用的都是最近最少使用取 代法。这样可以是的最新的数据取代最近最少使用的数据。这种方法来源于时间位置法则。直接映射cachecache存储器可以被设置为“直接映射”或者“联合方式”。为

14、了解释这些术语,我们以图四所示的c64x的I1pcache为例,这些cache由512列32字节组成。每一排映射到一些固 定的具有相识的存储器地址上。比如:从0000h到0019h的地址经常被 cache安排在第0列从0020h至U 0039h的地址经常被 cache安排在第1列 从3fe0h至U 3fffh的地址经常被 cache安排在第511列。4000h,由于cache的容量被用尽了,因此从4000h至U 4019h> On 3 hit, data is read from cache图五:直接映射 caches为了保持复制的数据,每一行的I1pcache包括:一位有效信号,用来指

15、示 cache的列中 是否包含的是有用的信息一个标记符,其值等于地址的高18位,这个是必须的因为一个指定的列可能包含着不同地址的数据,比如,第0列可以包含的是从 0000h至U 0019h的数据,也可以是从4000h到 4019h的数据。一个可设置的数据,这个数据等同于从第5位到第13位的地址。对于直接映射方式,这个设置的数据同这个列的值是一样的。而对于联合方式时要更加复杂,这种情况我们将在随后讨论。现在让我们看看当 cpu访问位于0020h的地址时发生了什么。假定cache被元全无效,即意为着所有的列都没有包含有效数据。当cpu发出对地址20h的访问请求时,cache控制器开始首先在部分地址

16、位(比如:从第5位到13位)等同于列地址的位置查询。当这个部分地址值(从第 5位到13位)被设置为1时,匹配需查询的地址。控制器将继续检查第一 列的标记位是否也和地址0020h到0039h的高18位相符合。当这些都完成时, 将检查有效数据位看cache保存的是否为有效数据。如果有效数据位为0时,cache控制器记录一个不命中操作。这个不命中操作将使得控制器将从存储器中将此列的数据0020h-0039h读入,并将该有效数据位设置为1。同时将部分地址值保存在标记符 ram中。取得的数据将被传送到 cpu中, 完成访问操作。如果这个0020h的地址被再次访问,cache控制器将再次取得这个地址,检查

17、它的设置 符和标记符。当有效数据位为1时,控制器将记录一个命中操作,因此cache列里面的数据也将被送到cpu中,完成整个访问操作。联合设置方式联合设置方式是直接映射方式的延续。在直接映射方式中,每一个设置只包含一列。而在联合设置方式中,每一个设置包含多个列,被称为多路方式。图五中阐述了这样一个联合设置的cache,以c64x dsp's l1d为例。这是一个两路的包含64个字节总共16kbytes容量的联合设置cache。Example: C64x L1D一 16 KBytes2-way set-associative64-byte lines一 read-allocate -wri

18、te-backGaelic ConliolD miss1 hit <n way Q012127012127Memory (e.g. L2 SRjAN jStet: 7Offset: 613 12Tag: 180: miss vf1: hrt ih waMemory Address为了保持数据,lldcache的每一列包含以下:一个最近最少使用位用来指示哪些路最近很少被使用(这个在lip中未被使用);一个脏数据位,用来指示cache列是否匹配主存储器的容量(这个在lip中未被使用);一个有效数据位,用来指示cache列中包含的是否是有效数据;一个标记位,等价于地址的高18位;一个设置数据,

19、等价于地址的5到13位。命中和不命中决定的方式和直接映射cache方式是一样的。不同的是此时需要两个标记位,一个标记位记录是哪一路的请求数据。如果是第0路的数据被命中,则第0路的列中的数据被访问,如果是第 1路的数据被命中,则第1路的列中的数据被访问。如果两路均不命中的话,数据将从内存中被指派。一个最近最少使用位将本篇文章来源于百科全书转载请以链接形式注明出处 网址 3.html决定数据如何分配类似于一个开关操作。如果被指派的第0列的最近最少使用位被设置为0,那么将把此数据分配于第一列。 最少使用标记位。例如:如果第 最少使用位只记录不命中操作,无论对这个cache列是读还是写的访问, 都将改

20、变这个最近 0路的列被读取,则最近最少使用位将切换到 1。由于最近 但是它的状态每次都会更新,无论对列访问是命中还是不命中,读或者写。对于l1p来说,I1d是一个读分配的cache,不管新数据在内存中申请时读操作是命中或 者不命中。在一个写不命中操作时,数据从写存储器传递到内存中,绕过I1dcacee。在一个写命中操作时,数据写入cache中而不是立即写入内存。当数据被cpu写访问改变时,cache里的内容将提交给一个写回cache,随后数据将被写入内存中。脏数据位指示当cache里面的数据被写操作修改时,而修改后的新数据还未被写入到主 存储器中。最初脏数据位将被赋值为0。一旦当cpu对某列进

21、行写操作时,脏数据位将变为1。当此列被逐出 cache时,这个数据将被写回主存储器中。当发生读不命中操作时新数据 将从脏数据列中申请,这种情况才会发生。一个写回命令将传递给cache控制器从而产生个写回操作,只是这种情况并不经常发生。优化cache性能这里有三种不命中的情况:必然不命中(也叫首次不命中):这种不命中发生在当数据第一次放入cache中,为了和下面两种不命中方式区分开来,它们可以被避免。冲突不命中:不命中发生在在该列在被重复使用之前被取代。容量不命中:这种方式发生在当cache容量被耗尽时,容量不命中是冲突命中的一种方式。对于每一种不命中方式,控制器在将数据从存储器放入cache中时都会产生延迟。为了得到更高的性能,每一列中的内容在被取代之前应该尽可能的被重复利用。重复使用某列以此来获得不同的位置能够改善空间位置的访问,而重复使用某列可以改善时间位置的访问。 这就是优化cache存储性能的一个最基本的准则。例如,当cache存储器经常被访问时,cache的性能是比较高的。这种访问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论