RISC和CISC统一编址和独立编址冯诺依曼结构和哈佛结构

Posted Lewin~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RISC和CISC统一编址和独立编址冯诺依曼结构和哈佛结构相关的知识,希望对你有一定的参考价值。

CISC:复杂指令集CPU
CISC体系的设计理念是用最少的指令来完成任务(譬如计算乘加只需要一条指令即可),一条指令就代表一段复杂的电路,要支持多条指令功能就需要多段功能电路,因此CISC的CPU本身设计复杂,由于电路过于庞大,CPU只有那么一点大,因此CPU的制作工艺很复杂,但好处是编译器好设计,例如:

 c语言中的一条d=a*b+c;
 编译生成汇编代码只有一条,直接乘加

CISC出现较早,至今Intel还一直采用CISC设计。

RISC:精简指令集CPU
RISC的设计理念是让软件来完成具体的任务,CPU本身仅提供基本功能(加法,乘法)指令集。因此RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,但是编译器的设计变难了,例如:

 c语言中的一条d=a*b+c;
 编译生成汇编代码有多条,要先进行乘然后再加

ARM的CPU均采用RISC设计。

统一编址:CPU访问各种外设的方式类似于访问内存的方式,即CPU的地址线除了与内存相连以外,还与外设相连,把外设的寄存器当作一个内存地址来读写,从而以访问内存的相同方式来操作外设,叫IO与内存统一编址方式,这种编址方式常见于RISC设计的CPU,好处是IO当作内存来访问,编程简单,无需关心这个变量是属于内存的还是外设中的寄存器的;

独立编址:使用专用的CPU指令来访问某种特定外设,叫IO与内存独立编址,这种编址方式常见于CISC设计的CPU,例如我需要读写串口,对应于CISC设计,就需要对两条指令定义,倘若我有n个外设,每个外设各需编写两条指令,那么总共需要定义2n条指令,好处是不占用CPU地址空间,缺点是CPU设计变复杂了。

程序和数据都放在内存中,且不彼此分离的结构称为冯诺依曼结构。譬如(电脑)x86架构的CPU均采用冯诺依曼结构。
程序和数据分开独立放在不同的内存块中,彼此完全分离的结构称为哈佛结构。譬如大部分的单片机(MCS51)、嵌入式(ARM9)等ARM架构的CPU均采用哈佛结构。

为什么电脑采用冯诺依曼结构,单片机嵌入式则采用哈佛结构???
冯诺依曼结构中程序和数据不区分的交织放在一起,存放在内存中,意味着程序和数据具有同等地位,支持读和写,这样在程序执行过程中,程序段可能被修改,导致程序崩溃,因此安全和稳定性存在问题,这也是大多数病毒攻击的原理,病毒通过篡改程序,使程序崩溃;冯诺依曼结构的好处是处理起来简单,因为不区分程序和数据。虽然冯诺依曼结构存在安全问题,但这并不影响我们对电脑的使用,因为即使电脑中某个程序由于被修改而导致死机了,但其他程序并没有被修改,我们依然可以通过重启解决。
但这对于单片机嵌入式而言就不适用了,假如这是个控制原子反应堆的单片机,很容易造成爆炸的事故,因此单片机嵌入式多采用哈佛结构。

哈佛结构中单片机的程序和数据独立分开存放,程序存放在ROM(Flash)中,数据存放在RAM(内存),由于Flash是只读的,程序运行时只需转到内存中运行,因此保证了安全和稳定性,但嵌入式系统中的程序和数据“可能”是没有分开的,例如S5PV210这块开发板,程序和数据均存放在RAM(内存)中,在内存中给他们划分各自的区域,由操作系统来管理做出限制,程序段只能读,数据段支持读写,缺点是软件处理复杂一些(需要统一规划链接地址等)

以上是关于RISC和CISC统一编址和独立编址冯诺依曼结构和哈佛结构的主要内容,如果未能解决你的问题,请参考以下文章

请问冯·诺依曼结构和哈佛结构有啥异同?谢谢!

哈佛结构是否比冯诺依曼结构要好?

X86 I/O端口

SoC嵌入式软件架构设计之四 :内存空间规划分配

冯·诺依曼结构和哈佛结构的根本区别

I/O系统