这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » LPC2220外部存储器接口速度

共4条 1/1 1 跳转至

LPC2220外部存储器接口速度

菜鸟
2007-04-14 00:47:11     打赏

LPC2220外部存储器接口速度:
买了一个ZLG的SmartArm2200开发套件。开始做基础实验。
它的速度好象真的很慢啊。

芯片是LPC2220(ARM7TDMI-S),内部64K SRAM,外部接口总线接了PSRAM和FLASH。都是16位访问。
它的PSRAM的速度据说在80ns左右,FLASH的速度应该也差不多。
它有一个测外部存储器访问速度的实验,拿来做。一做吓一跳。

dly = 80;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
大概是上面这段代码,用定时器测执行时间。
定时器的时钟是PCLK,就是VPB总线的时钟。系统时钟CCLK是4倍速的PCLK。PCLK是11.0592MHz。

外部存储接口的寄存器BCFG0可设置访问速度,我调整了总线空闲时间和读等待时间。
设置后,总线空闲时间为1个CCLK(这是最小值)。读等待时间为5个CCLK(3是最小值,但3和4都会跑飞)。

上面的循环程序,每个小循环在反汇编后是4条指令(包括一个条件跳转)。
可以理解成4条指令的小循环,执行40万次。
在以下3种情况下对代码执行速度进行测试。
程序在内部RAM执行,执行时间是600190个PCLK,每个小循环是1.5个PCLK,即6个CCLK。这个和理想结果很接近。
程序在外部PSRAM执行,执行时间是5401196个PCLK,每个小循环是13.5个PCLK,即54个CCLK。每条指令大概是13.5个CCLK。是内部SRAM执行时间的9倍。
程序在外部FLASH执行,BCFG0与使用PSRAM时设置相同,结果也相同。

这个实验的目的,是通过修改BCFG0,调整访问外部存储器的最佳配置。
如果设置得太快,程序就会跑飞。
按照我的配置,我猜想:读一次,要5个等待+1个总线空闲,就是6个CCLK。
由于是16bit访问,1条指令要读两次,也就是12个CCLK。和上面的13.5个CCLK也差不多。

关键是,在这个板子上我无法把读等待设得更小了,并且最小只能设置为3个等待。
所以我即使使用更快的SRAM,结果也好不到哪里去。

也就是说,代码在外部PSRAM或FLASH的执行速度,是内部SRAM的1/9。
也就是说,在这种情况下,处理器的速度大概是5MHz。

飞利浦(NXP)难道不觉得应该做个CACHE吗?!




关键词: LPC2220     外部     存储器     接口     速度    

菜鸟
2007-04-19 23:12:00     打赏
2楼

楼主大虾真的是高人。。能把测试做这么详细,不为多见,,,,值得我学习。。。

但我有一点没有明白:PSRAM的速度为何是80ns级别的,是什么型号呢?如果它跟Flash速度一样,真的是太没有优势了,完全可以只把数据段(还有BSS段)和堆栈放在SRAM里面了,文本段就在FLash里面,还可以省一点昂贵的SRAM的钱。。。

我选用过一款Cypress的SRAM,速度在10多个ns左右,CPU速度不高的情况下,可以与CPU同频使用,片选寄存器里面也是这样配的。。。。不过,远没有大虾你这么严谨,,没有做性能测试,但内存测试是没有问题的。。。。

Cache我觉得确实能带来性能上的极大改进,但ARM便宜呀,高档的ARM有cache,但贵些。真的难于权衡。。。


菜鸟
2007-04-21 19:32:00     打赏
3楼

仔细看了一下,这个器件是Micron的MT45W4Mx16,叫异步CellularRAM。提供SRAM和PSRAM接口。随机访问时间70ns、85ns。

楼上说的很对,数据段放在片内SRAM,程序在FLASH执行。但是我的程序有点大,可能还是要加一点外部RAM。

没有CACHE有一个好处:对程序的执行时间估算会比较精确,呵呵。如果这也算好处的话。


菜鸟
2007-04-22 04:32:00     打赏
4楼

查了查发现还就只有Cypress的SRAM最快。10个ns的都有,快赶上PC100了。

呵呵,没有Cache就不要进行预取,就没有命中与否和预测失败,程序行为确定,确实是优点。

[align=right][color=#000066][此贴子已经被作者于2007-4-21 20:47:15编辑过][/color][/align]

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]