您的位置 首页 开关

ARM处理器的程序与数据存储(冯·诺依曼与哈佛结构)

保存在存储器中的内容可以是程序,也可以是数据。程序是ARM处理器可以运行的指令代码,数据是指令在运行中用到的操作数或者变量。1、程序存…

保存在存储器中的内容可所以程序,也可所以数据。程序是ARM处理器能够运转的指令代码,数据是指令在运转中用到的操作数或许变量。

1、程序存储
ARM处理器支撑两种指令,一种是ARM汇编指令,一种是Thumb汇编指令。ARM汇编指令是32位长,即每条ARM汇编指令都是由四个字节的存储空间保存,所以ARM处理器在履行地址a的ARM汇编指令时,会从地址a + 4取下一条指令。Thumb汇编指令是16位长,即每条Thumb汇编指令都是由两个字节的存储空间保存,所以ARM处理器在履行地址a的Thumb汇编指令时,会从地址a + 2取下一条指令。
ARM处理器能够履行两种格局的指令,运转不同格局的汇编指令在履行和取指方面有很大不同。为了差异,ARM内核能够作业在两种作业状况下。
◎ ARM状况 此刻履行32位字对齐的ARM汇编指令。在这种状况下,ARM处理器对指令的存储、读取或许履行都是以一个字(即32位)为基本单位;
◎ THUMB状况 此刻履行16位半字对齐的Thumb汇编指令。在这种状况下,ARM处理器对指令的存储、读取或许履行都是以一个半字(即16位)为基本单位;
◎ 这两种作业状况能够转化,但转化不影响处理器状况和寄存器的内容。
2、数据存储
ARM处理器对数据操作(读或写)支撑三种数据长度:字节(8位)、半字(16位)、字(32位)。假定在地址为0x0000~0x0004的内存空间保存了如图1所示的数据,下面咱们以三种数据长度从内存空间读取数据。(假定数据的存储格局是小端存储格局)

图1内存空间的内容

◎ 字节:从地址0x0000处取一个字节数据,则取出来的内容为12;从地址0x0001处取一个字节数据,则取出来的内容为34;
◎ 半字:从地址0x0000处取一个半字数据,则取出来的内容为3412;从地址0x0001处取一个半字数据,则取出来的内容为5634;
◎ 字:从地址0x0000处取一个字数据,则取出来的内容为78563412;从地址0x0001处取一个字数据,则取出来的内容为9A785634。
需求留意的是,ARM处理器在对数据操作时要鸿沟对齐,要找到正确的地址。在对16位数据操作时,地址数据末位(0)应该为0,在对32位数据操作时,地址数据末两位(1:0)应该都为0。比方上面临字进行操作时,ARM处理器不答应从地址0x0001处读取一个字内容出来。
现在常用的ARM版别中,都不支撑非对齐字的传输(ARMv3、ARMv4、ARMv5)。在ARMv6中,开端支撑非对齐字的传输。
3、“冯·诺依曼”系统结构和“哈佛”系统结构
提到ARM程序与数据存储,应该讲一下“冯·诺依曼”系统结构和“哈佛”系统结构。因为ARM7系列选用冯·诺依曼系统结构,而ARM9~ARM11选用哈佛系统组织。两种结构描绘如下:
“冯·诺依曼”系统结构
20世纪30年代中期,德国科学家冯诺依曼斗胆的提出,扔掉十进制,选用二进制作为数字核算机的数制根底。一起,他还说预先编制核算程序,然后由核算机来依照人们事前拟定的核算次序来履行数值核算作业。
冯诺依曼理论的关键是:数字核算机的数制选用二进制;核算机应该依照程序次序履行。 其主要内容是:
◎ 核算机由控制器、运算器、存储器、输入设备、输出设备五大部分组成。
◎ 程序和数据以二进制代码方式不加差异地寄存在存储器中,寄存方位由地址确认。
◎ 控制器依据寄存在存储器中地指令序列(程序)进行作业,并由一个程序计数器控制指令地履行。控制器具有判断能力,能依据核算结果挑选不同的作业流程。

“哈佛”系统结构
数字信号处理一般需求较大的运算量和较高的运算速度,为了进步数据吞吐量,在数字信号处理器中大多选用哈佛结构
哈佛结构特色如下:
◎ 运用两个独立的存储器模块,别离存储指令和数据,每个存储模块都不答应指令和数据并存,以便完结并行处理;
◎ 具有一条独立的地址总线和一条独立的数据总线,使用共用地址总线拜访两个存储模块(程序存储模块和数据存储模块),共用数据总线则被用来完结程序存储模块或数据存储模块与CPU之间的数据传输;

两种结构差异
在典型情况下,完结一条指令需求3个过程,即:取指令、指令译码和履行指令。从指令流的守时联系也可看出冯.诺曼结构与哈佛结构处理方式的不同。
举一个最简略的对存储器进行读写操作的指令,指令1至指令3均为存、取数指令,对冯.诺曼结构处理器,因为取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因此它们无法堆叠履行,只要一个完结后再进行下一个。
假如选用哈佛结构处理以上相同的3条存取数指令,如下图所示,因为取指令和存取数据别离经由不同的存储空间和不同的总线,使得各条指令能够堆叠履行,这样,也就克服了数据流传输的瓶颈,进步了运算速度。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/274668.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部