在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: ahan

【AMBA AHB总线专题讨论】

[复制链接]
发表于 2008-9-18 15:31:02 | 显示全部楼层
很想了解一下这方面的内容
发表于 2008-9-28 00:32:22 | 显示全部楼层
感謝你的分享...
來看看先...
发表于 2008-10-3 16:36:12 | 显示全部楼层
真长啊,学习中
发表于 2008-10-4 19:44:20 | 显示全部楼层
顶顶顶DDDDDD
发表于 2008-10-9 22:32:09 | 显示全部楼层
看了大家讨论,小弟我受益匪浅,现有两个问题请教请老扁大哥

1:1kb边界问题,已经讨论的很清楚了。但我想问为什么协议里要规定有1kb这个限制呢,有什么考虑呢?是为了slave地址划分方便,还是什么?
2:为什么要支持wrap操作,这个主要意图在什么,cache line需要吗?业务流在访问ddr时一般都是顺序递增,wrap好像用不到吧,
发表于 2008-10-11 10:34:38 | 显示全部楼层

关于burst

小弟我也有2个问题想请教老扁大侠,还望多多指教:
1、AMBA的burst有八种模式,可是在实际情况中似乎很少见到wrap类型的,无论使用C还是汇编写的程序,无论复杂或者简单,灌到ARM以后始终不见wrap类型的出现,所以我在测试的时候是通过增加一个多余模块,来强行更改incr的地址造成wrap的效果的,但总感觉这样的仿真不十分可靠,所以想请问一下,究竟在什么状况下才会出现wrap类型呢?能不能用汇编或者C简单的给我举个例子?
2、还是关于burst的一个问题,在burst中,比如incr的时候,地址之间是有关联的,并且地址会连续出来,我想问的是如果是burst中的第一种情况,即single transfer的情况下,地址会不会也连续出来呢?因为在我实际测试程序的过程中发现,即便使用汇编这样的基本语言来对某些地址进行读写操作,比如连续使用mov语句对不同的地址进行写操作,但是ARM最终给出的地址也不是连续的,而会在各次写操作过程之间插入一次对其他地址的操作,这似乎是ARM为了完成写操作而增加的一个自身操作,只有当采用汇编中的对一块地址进行连续操作的ldm或者stm这样语句的时候才会形成连续读写而不插入对其他地址的读写,不过那时候也就形成了incr类型的操作,而不是毫无关联的地址了,所以我想问的是:是否会出现地址不是incr或者wrap那样前后关联但仍然是连续出来的情况呢?
这两个问题都迷惑了我很长时间,还请老扁兄多加指点,谢谢!
发表于 2008-10-18 17:32:02 | 显示全部楼层
学习学习
发表于 2008-10-21 11:44:32 | 显示全部楼层
taihao le  eee
发表于 2008-10-23 00:03:11 | 显示全部楼层


原帖由 lhpred 于 2008-10-9 22:32 发表
看了大家讨论,小弟我受益匪浅,现有两个问题请教请老扁大哥

1:1kb边界问题,已经讨论的很清楚了。但我想问为什么协议里要规定有1kb这个限制呢,有什么考虑呢?是为了slave地址划分方便,还是什么?
2:为什么要支持wrap操作,这个主要意图在什么,cache line需要吗?业务流在访问ddr时一般都是顺序递增,wrap好像用不到吧,



1. 1k边界是为了访问时不要跨slave。这样就不会造成slave对协议的应答错误
2. WRAP其实就是为了cache访问外部memory用的,可以提高cache的性能。
发表于 2008-10-23 00:12:47 | 显示全部楼层


原帖由 wetwing 于 2008-10-11 10:34 发表
小弟我也有2个问题想请教老扁大侠,还望多多指教:
小弟我也有2个问题想请教老扁大侠,还望多多指教:
1、AMBA的burst有八种模式,可是在实际情况中似乎很少见到wrap类型的,无论使用C还是汇编写的程序,无论复杂或者简单,灌到ARM以后始终不见wrap类型的出现,所以我在测试的时候是通过增加一个多余模块,来强行更改incr的地址造成wrap的效果的,但总感觉这样的仿真不十分可靠,所以想请问一下,究竟在什么状况下才会出现wrap类型呢?能不能用汇编或者C简单的给我举个例子?
2、还是关于burst的一个问题,在burst中,比如incr的时候,地址之间是有关联的,并且地址会连续出来,我想问的是如果是burst中的第一种情况,即single transfer的情况下,地址会不会也连续出来呢?因为在我实际测试程序的过程中发现,即便使用汇编这样的基本语言来对某些地址进行读写操作,比如连续使用mov语句对不同的地址进行写操作,但是ARM最终给出的地址也不是连续的,而会在各次写操作过程之间插入一次对其他地址的操作,这似乎是ARM为了完成写操作而增加的一个自身操作,只有当采用汇编中的对一块地址进行连续操作的ldm或者stm这样语句的时候才会形成连续读写而不插入对其他地址的读写,不过那时候也就形成了incr类型的操作,而不是毫无关联的地址了,所以我想问的是:是否会出现地址不是incr或者wrap那样前后关联但仍然是连续出来的情况呢?
这两个问题都迷惑了我很长时间,还请老扁兄多加指点,谢谢!


1. 大多数程序编译后应该都cache line对齐了,你可以写一些频繁随机访问不同地址空间的程序,使得程序在cache中总是miss,可能cache就会经常发wrap出来。
2. 这个应该跟ARM内部的cache控制器和编译器有关了,跟AMBA协议关系不大,你也没必要去关心它为什么不连续出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-28 15:00 , Processed in 0.021816 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表