关于ARM的体系结构

[复制链接]
6361|20
 楼主| fineamy 发表于 2007-6-27 23:14 | 显示全部楼层 |阅读模式
下图是ARM的结构框图,
 楼主| fineamy 发表于 2007-6-28 00:28 | 显示全部楼层

对ARM还不太熟悉

请问图中指令CACHE和数据CACHE分别存储的是什么?<br />另问指令MMU是介于外部MEM和cache之间还是介于CACHE和cpu核之间。
HWM 发表于 2007-6-28 08:40 | 显示全部楼层

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

很清楚就是存储指令和数据了(用于流水线)。<br />MMU给出的是地址,所以不存在介于什么之间。
 楼主| fineamy 发表于 2007-6-28 08:45 | 显示全部楼层

我没说清楚问题,

<a href="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" target=_blank>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</a><br />这里有问题较细描述,请大家到这里讨论,谢谢<br /><br />在进入CACHE前就能分辨出数据和指令了???
HWM 发表于 2007-6-28 09:16 | 显示全部楼层

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

在“取指”周期中指令就被放入指令cache,而在“取数”周期中数据就被放入数据cache,这不是很清楚吗。<br />注意:cache中的指令还未被执行呢,同样cache中的数据也未被处理。
至爱森林 发表于 2007-6-28 09:48 | 显示全部楼层

路过,听听水声

  
ayb_ice 发表于 2007-6-28 10:32 | 显示全部楼层

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

  
 楼主| fineamy 发表于 2007-6-28 12:01 | 显示全部楼层

HWM

“取指”周期中指令就被放入指令cache,而在“取数”周期中数据就被放入数据cache,这不是很清楚吗。<br />注意:cache中的指令还未被执行呢,同样cache中的数据也未被处理。<br /><br /><br />以普通的五级流水线来说,ARM不清楚,估计差不多,<br />取指--&gt译码--&gt执行--&gt访存--&gt回写<br /><br /><br />来说,请问你说的“取指”和“取数”非别对应哪一段流水线.还有这里的指令,数据指什么.<br />我大概看了下,ARM指令集大多32位编码,指令中操作码和操作字完全可以编码到一个字中即32位.见图<br />那么你这里的“取指”和“取数”是否是指操作码和操作字?
 楼主| fineamy 发表于 2007-6-28 12:02 | 显示全部楼层

ARM指令集

HWM 发表于 2007-6-28 12:16 | 显示全部楼层

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

这里所说的数据是由专门的“取数”和“存数”指令所操作的在存储器内的数据,而非寄存器内的数据。
 楼主| fineamy 发表于 2007-6-28 13:15 | 显示全部楼层

另外,DCACHE不太好理解

这里所说的数据是由专门的“取数”和“存数”指令所操作的在存储器内的数据,而非寄存器内的数据<br />谢谢,我将概念搞混了!<br /><br /><br />ICACHE的基础是由于程序指令的空间和时间连续性,<br /><br />而这里DCACHE也存在跟指令同样的情况??我能想到的情形比如数据块传输操作这样类似的批量传输操作dcache确实会起到很大作用,<br />其他的操作好像DCACHE意义不大(这些时候DCACHE经常未击中).如果是这样的话,是不是从命中率来讲,DCACHE可能会经常出现未命中的情况,因为它在那些&quot;少数&quot;&quot;块传输操作&quot;中才会出现高的命中率.除非我们的程序中经常涉及到块传输的情况.<br />而ICACHE除非是跳转,分支这样的&quot;少数&quot;情况,其它基本都会命中.
HWM 发表于 2007-6-28 13:29 | 显示全部楼层

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

一般象遇到转跳指令时会自行的作相应的调整。<br />
 楼主| fineamy 发表于 2007-6-28 13:38 | 显示全部楼层

谢谢,

I-cache&nbsp;和&nbsp;D-cache&nbsp;的调度是根据当前的指令流自动进行的。&nbsp;<br /><br />一般象遇到转跳指令时会自行的作相应的调整。&nbsp;<br />&nbsp;<br />这样一旦跳转,IC和DC必须同时刷新,另外:<br /><br />ICACHE的基础是由于程序指令的空间和时间连续性,<br /><br />而这里DCACHE也存在跟指令同样的情况??我能想到的情形比如数据块传输操作这样类似的批量传输操作dcache确实会起到很大作用,<br />其他的操作好像DCACHE意义不大(这些时候DCACHE经常未击中).如果是这样的话,是不是从命中率来讲,DCACHE可能会经常出现未命中的情况,因为它在那些&quot;少数&quot;&quot;块传输操作&quot;中才会出现高的命中率.除非我们的程序中经常涉及到块传输的情况.<br />而ICACHE除非是跳转,分支这样的&quot;少数&quot;情况,其它基本都会命中.<br /><br />如果我这里理解正确的话,那么是否DCACHE经常出现flush操作!<br />
HWM 发表于 2007-6-28 13:46 | 显示全部楼层

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

  
阿南 发表于 2007-6-28 20:05 | 显示全部楼层

re:fineamy

HWM是复旦大学的老师,所以一定要认真,虚心请教呀
HWM 发表于 2007-6-28 21:52 | 显示全部楼层

15楼:你正是神通广大

楼主实际上说的是ARM920T,Icache和Dcache的结构实际上并不是象上面说的那么简单,在此不可能说的非常清楚。如果楼主感兴趣的话,可以到ARM的官方网站上下载ARM920T的资料。不过建议楼主还是先了解一下ARM9TDMI的结构,这是ARM9的基础。<br />
 楼主| fineamy 发表于 2007-6-28 22:39 | 显示全部楼层

赫赫,受教了,

谢谢HWM,实际上问这个问题是因为最近在学习OPENCORE的开源OR1K&nbsp;CPU,代码看了多边感觉还是没有一个对整体的深刻理解.觉的应该对CPU的体系结构方面知识学习下,
 楼主| fineamy 发表于 2007-6-28 23:16 | 显示全部楼层

赫赫,还没彻底解决,

阿南&nbsp;发表于&nbsp;2007-6-28&nbsp;20:05&nbsp;ARM&nbsp;论坛&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />15楼:&nbsp;re:fineamy&nbsp;<br /><br />HWM是复旦大学的老师,所以一定要认真,虚心请教呀<br />&nbsp;<br />赫赫,那我就再请教了.<br /><br />从ARM的框图中,可以看到IC和DC通过AMBA&nbsp;BUS&nbsp;INTERFACE接口与外界MEM联系.<br /><br />这里AMBA&nbsp;BUS&nbsp;INTERFACE既是BIU单元,它在这里把IC和DC合而为一,然后在与外界MEM联系,起仲裁作用.<br /><br />而在有的CPU中(OR1K就是这样),IC和DC分开,而BIU也是数据和指令分开的,如图中所示,<br />解释下,图中:<br />IWB,DWB:非别是指令,数据WISHBON接口总线,这里做BIU,<br />SB:类似ARM的WB,<br />IC,DC:I-CACHE,D-CACHE,这里也是分开的,它们是L2&nbsp;CACHE<br />QMEM:QUICK&nbsp;MEM,快速嵌入式存储器,在这里做L1&nbsp;CACHE,<br />IMMU,DMMU:同ARM<br /><br />我这里的问题是象这样的架构,在外围存储器中已经分成了数据和指令存储了,<br />那么此类架构其程序代码是否也是分开了,编译器编译来完成这个任务?<br /><br />也即通过编译器编译生成分为两部分:指令部分和数据部分.这两部分将来分别烧入指令存储器和数据存储器中.(常见的.HEX映象文件如ARM的只是一个代码映象)<br /><br />通过前面的讨论,这样的架构(指令,数据分别存储)应该比ARM那样的架构更有效(无意于比较).因为这样指令和数据就都有前面说的时间与空间的连续性了.<br /><br />不知道理解是否正确?<br /><br /><br /><br /><br /><br /><br />
 楼主| fineamy 发表于 2007-6-28 23:37 | 显示全部楼层

另外

程序中的指令段和数据段跟这种是否有关系?<br />
high 发表于 2007-6-29 01:13 | 显示全部楼层

给你补充一些

统一或者分开是因为架构决定的,哈佛结构指令和数据总线分开,所以会有2个cache。冯式则统一。<br /><br />关于image,它包括了相互独立的3个部分text(ro),&nbsp;(data)rw,&nbsp;(bss)zi.他们在未被加载前就是独立的部分(文件形式),独立也是加载的前提条件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

59

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部