ARM裸机编程需要知道的汇编知识2---哈弗结构和冯诺依曼结构

来源:互联网 发布:python3 apache 编辑:程序博客网 时间:2024/05/18 01:00

ARM裸机编程需要知道的汇编知识2---哈弗结构和冯诺依曼结构

                                                                                     参考朱有鹏ARM裸机课程


1、RISC和CISC的区别

(1)CISC复杂指令集的设计理念就是用最少的指令完成一个复杂的任务,

         比如乘法只需要一条指令就可以完成,因此CISC的CPU设计比较复杂

          好处是编译器容易设计,Intel就是用CISC设计。

(2)RISC精简指令集是让软件来完成复杂的任务,CPU本身仅提供基本的功能指令集

         因此RISC 的CPU的指令集只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,

但是编译器的设计更难了。


PS:使用汇编语言的区别,如果是使用C语言的区别的话,那么他们是没有啥区别的,因为

编译器帮你做了工作。使用RISC的指令集的CPU比较的低功耗。因为里面使用的电路比较少。


2、统一编址和独立编址,哈弗架构和冯诺依曼结构

什么是IO?什么是内存?(内存可以随机访问,存储数据)

IO:input  and  output:CPU和其他的外部设备(串口、LCD、触摸屏)之间的通信的接口。

IO这里指的是:CPU的各种内部或者外部设备。

通过访问他们之间的寄存器来访问他们:

内存和CPU之间通过总线连接的,然后通过CPU数据总线来进行读写的。

内存与CPU的这种总线连接方式是一种直接连接,优点是效率高,

访问快,缺点是资源有限,扩展性差。


内存要跟使用CPU的频率比较多,把外设的寄存器当作一个内存地址来读写,从而以访问

内存的相同的方式来操作内存。叫做IO与内存统一编址方式。


因为数据是存在内存当中的,所以内存经常要跟CPU进行数据的交互的,所以需要使用这种方式,

效率是比较高的。

另一种是使用专用的CPU指令来访问某种特定外设,叫IO与内存独立编址。独立编址就是CISC架构


对比:

1、由于内存访问的频率高,因此采用总线式连接,直接地址访问,效率最高。

2、IO与内存统一编址方式,优势是IO当作内存来访问,编程简单,缺点是IO也需要占用一定的CPU地址空间,而CPU的地址空间是有限资源。

IO与内存独立编址的方式,优势是不占用CPU地址空间,缺点是CPU设计变复杂了


3、再谈冯诺依曼结构和哈弗结构

代码和数据是构成你的应用程序的两大核心

程序运行两大核心元素:代码(硬盘,FLASH)和数据(内存,RAM)

代码是我们写好的源代码经过编译,汇编之后的机器码,这些机器码可以拿给CPU去解码执行,

CPU不会也不应该去修改代码,所以代码是只读的。


但是数据是程序运行过程中定义和产生的变量的值,程序运行实际就是为了

改变数据的值。


冯诺依曼结构与哈弗结构:

程序和数据都放在内存中,且不彼此分离称为冯诺依曼结构。

CPU均采用这种冯诺依曼结构。

 

哈弗结构:

程序和数据是分开放置在不同的内存块中彼此完全分离。

比如大部分的单片机(51和ARM9)均采用哈弗结构。


优势对比:

(放程序的地方最好是只读的,放数据的地方最好是能读能写的)

1、冯诺依曼结构中程序和数据不区分的放在一起,因此安全和稳定性是个问题,好处是处理起来简单

2、哈弗结构中程序(一般是放在ROM、FLASH中的)和数据(一般是放在RAM中)独立分开存放,因此好处是安全和稳定性高,缺点是软件处理复杂一些。

需要统一的规划连接地址等等。

(不区分就是简单)

嵌入式的设备稳定性是第一要务。把程序和数据分开。

很多病毒都是写这个地方的,因为代码段可以被写。





阅读全文
1 0
原创粉丝点击