打印

关于ARM的体系结构

[复制链接]
4930|20
手机看帖
扫描二维码
随时随地手机跟帖
沙发
fineamy|  楼主 | 2007-6-28 00:28 | 只看该作者

对ARM还不太熟悉

请问图中指令CACHE和数据CACHE分别存储的是什么?
另问指令MMU是介于外部MEM和cache之间还是介于CACHE和cpu核之间。

使用特权

评论回复
板凳
HWM| | 2007-6-28 08:40 | 只看该作者

"指令CACHE和数据CACHE分别存储的是什么",

很清楚就是存储指令和数据了(用于流水线)。
MMU给出的是地址,所以不存在介于什么之间。

使用特权

评论回复
地板
fineamy|  楼主 | 2007-6-28 08:45 | 只看该作者

我没说清楚问题,

https://bbs.21ic.com/club/bbs/list.asp?boardid=14&page=1&t=2581648&tp=%u95EE%u4E00%u4E2A%u5173%u4E8Ecpu%u4F53%u7CFB%u7ED3%u6784%u65B9%u9762%u7684%u95EE%u9898%uFF08ARM%uFF09
这里有问题较细描述,请大家到这里讨论,谢谢

在进入CACHE前就能分辨出数据和指令了???

使用特权

评论回复
5
HWM| | 2007-6-28 09:16 | 只看该作者

指令和数据有不同的地址,即不同的MMU。

在“取指”周期中指令就被放入指令cache,而在“取数”周期中数据就被放入数据cache,这不是很清楚吗。
注意:cache中的指令还未被执行呢,同样cache中的数据也未被处理。

使用特权

评论回复
6
至爱森林| | 2007-6-28 09:48 | 只看该作者

路过,听听水声

使用特权

评论回复
7
ayb_ice| | 2007-6-28 10:32 | 只看该作者

CACHE可以不用管它与编程无关,主要是为了提高性能...

使用特权

评论回复
8
fineamy|  楼主 | 2007-6-28 12:01 | 只看该作者

HWM

“取指”周期中指令就被放入指令cache,而在“取数”周期中数据就被放入数据cache,这不是很清楚吗。
注意:cache中的指令还未被执行呢,同样cache中的数据也未被处理。


以普通的五级流水线来说,ARM不清楚,估计差不多,
取指-->译码-->执行-->访存-->回写


来说,请问你说的“取指”和“取数”非别对应哪一段流水线.还有这里的指令,数据指什么.
我大概看了下,ARM指令集大多32位编码,指令中操作码和操作字完全可以编码到一个字中即32位.见图
那么你这里的“取指”和“取数”是否是指操作码和操作字?

使用特权

评论回复
9
fineamy|  楼主 | 2007-6-28 12:02 | 只看该作者

ARM指令集

使用特权

评论回复
10
HWM| | 2007-6-28 12:16 | 只看该作者

ARM指令全都是32位(为RISC结构),另外THUMB指令集为16位

这里所说的数据是由专门的“取数”和“存数”指令所操作的在存储器内的数据,而非寄存器内的数据。

使用特权

评论回复
11
fineamy|  楼主 | 2007-6-28 13:15 | 只看该作者

另外,DCACHE不太好理解

这里所说的数据是由专门的“取数”和“存数”指令所操作的在存储器内的数据,而非寄存器内的数据
谢谢,我将概念搞混了!


ICACHE的基础是由于程序指令的空间和时间连续性,

而这里DCACHE也存在跟指令同样的情况??我能想到的情形比如数据块传输操作这样类似的批量传输操作dcache确实会起到很大作用,
其他的操作好像DCACHE意义不大(这些时候DCACHE经常未击中).如果是这样的话,是不是从命中率来讲,DCACHE可能会经常出现未命中的情况,因为它在那些"少数""块传输操作"中才会出现高的命中率.除非我们的程序中经常涉及到块传输的情况.
而ICACHE除非是跳转,分支这样的"少数"情况,其它基本都会命中.

使用特权

评论回复
12
HWM| | 2007-6-28 13:29 | 只看该作者

I-cache 和 D-cache 的调度是根据当前的指令流自动进行的。

一般象遇到转跳指令时会自行的作相应的调整。

使用特权

评论回复
13
fineamy|  楼主 | 2007-6-28 13:38 | 只看该作者

谢谢,

I-cache 和 D-cache 的调度是根据当前的指令流自动进行的。 

一般象遇到转跳指令时会自行的作相应的调整。 
 
这样一旦跳转,IC和DC必须同时刷新,另外:

ICACHE的基础是由于程序指令的空间和时间连续性,

而这里DCACHE也存在跟指令同样的情况??我能想到的情形比如数据块传输操作这样类似的批量传输操作dcache确实会起到很大作用,
其他的操作好像DCACHE意义不大(这些时候DCACHE经常未击中).如果是这样的话,是不是从命中率来讲,DCACHE可能会经常出现未命中的情况,因为它在那些"少数""块传输操作"中才会出现高的命中率.除非我们的程序中经常涉及到块传输的情况.
而ICACHE除非是跳转,分支这样的"少数"情况,其它基本都会命中.

如果我这里理解正确的话,那么是否DCACHE经常出现flush操作!

使用特权

评论回复
14
HWM| | 2007-6-28 13:46 | 只看该作者

当然如果纯粹在寄存器内操作D-cache就不会被使用。

使用特权

评论回复
15
阿南| | 2007-6-28 20:05 | 只看该作者

re:fineamy

HWM是复旦大学的老师,所以一定要认真,虚心请教呀

使用特权

评论回复
16
HWM| | 2007-6-28 21:52 | 只看该作者

15楼:你正是神通广大

楼主实际上说的是ARM920T,Icache和Dcache的结构实际上并不是象上面说的那么简单,在此不可能说的非常清楚。如果楼主感兴趣的话,可以到ARM的官方网站上下载ARM920T的资料。不过建议楼主还是先了解一下ARM9TDMI的结构,这是ARM9的基础。

使用特权

评论回复
17
fineamy|  楼主 | 2007-6-28 22:39 | 只看该作者

赫赫,受教了,

谢谢HWM,实际上问这个问题是因为最近在学习OPENCORE的开源OR1K CPU,代码看了多边感觉还是没有一个对整体的深刻理解.觉的应该对CPU的体系结构方面知识学习下,

使用特权

评论回复
18
fineamy|  楼主 | 2007-6-28 23:16 | 只看该作者

赫赫,还没彻底解决,

阿南 发表于 2007-6-28 20:05 ARM 论坛 ←返回版面    

15楼: re:fineamy 

HWM是复旦大学的老师,所以一定要认真,虚心请教呀
 
赫赫,那我就再请教了.

从ARM的框图中,可以看到IC和DC通过AMBA BUS INTERFACE接口与外界MEM联系.

这里AMBA BUS INTERFACE既是BIU单元,它在这里把IC和DC合而为一,然后在与外界MEM联系,起仲裁作用.

而在有的CPU中(OR1K就是这样),IC和DC分开,而BIU也是数据和指令分开的,如图中所示,
解释下,图中:
IWB,DWB:非别是指令,数据WISHBON接口总线,这里做BIU,
SB:类似ARM的WB,
IC,DC:I-CACHE,D-CACHE,这里也是分开的,它们是L2 CACHE
QMEM:QUICK MEM,快速嵌入式存储器,在这里做L1 CACHE,
IMMU,DMMU:同ARM

我这里的问题是象这样的架构,在外围存储器中已经分成了数据和指令存储了,
那么此类架构其程序代码是否也是分开了,编译器编译来完成这个任务?

也即通过编译器编译生成分为两部分:指令部分和数据部分.这两部分将来分别烧入指令存储器和数据存储器中.(常见的.HEX映象文件如ARM的只是一个代码映象)

通过前面的讨论,这样的架构(指令,数据分别存储)应该比ARM那样的架构更有效(无意于比较).因为这样指令和数据就都有前面说的时间与空间的连续性了.

不知道理解是否正确?






使用特权

评论回复
19
fineamy|  楼主 | 2007-6-28 23:37 | 只看该作者

另外

程序中的指令段和数据段跟这种是否有关系?

使用特权

评论回复
20
high| | 2007-6-29 01:13 | 只看该作者

给你补充一些

统一或者分开是因为架构决定的,哈佛结构指令和数据总线分开,所以会有2个cache。冯式则统一。

关于image,它包括了相互独立的3个部分text(ro), (data)rw, (bss)zi.他们在未被加载前就是独立的部分(文件形式),独立也是加载的前提条件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

59

帖子

1

粉丝