汇编语言研究1

1.冯诺依曼结构和哈佛结构

1.冯诺依曼结构特点:是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

2.哈佛结构特点:是一种将程序指令存储和数据存储分开的存储器结构

下面分析两种不同结构在实际应用中形成的差异:

冯诺依曼结构的cpu不能同时处理数据和指令,哈佛结构的cpu可以同时处理数据和指令。


冯诺依曼结构


哈佛结构

这引出了一个相关问题:计算机是如何区分指令和数据的呢?

看一个简单的例子,取数指令。

冯诺依曼结构:

1.在第一个取指周期中先锁定程序的最开头的地址,将program counter中读入该地址。

2.将program counter中的地址通过地址总线传输到MAR(memory address register)中。

3.根据MAR中的地址去在主存中寻找该指令,找到后存入MDR(memory data register)中。

4.将MDR中的数据通过数据总线传入CU(control unit)中分析指令中的操作码部分。

5.操作码要求我们根据指令提供的地址码到主存中寻找到该数据。先将地址码传入MDR中,再通过MDR找到数据并传回MAR。

再由MAR传入到运算器中。

总结:有个指针叫PC(Program Counter),一直指向下一条指令的地址。CPU的取指器就照着这个PC的值取指令。没有跳转指令的话,每条指令完成后PC自增指向下一条指令的地址;有跳转指令的话,PC指向跳转指令指向的目标地址。PC“一般”都指向存指令的内存

数据的话,通过指令访问内存。每个指令都有一个地址码,这个地址一般都指向存数据的内存。

但是这不是绝对的,PC指向指令内存、地址码指向数据内存是由程序/OS“约定俗成”地维护的,即由OS习惯上将指令内存和数据内存分开放在两片不同的内存区域中。机器是无法直接区分机器码中的“01010010”的具体含义的,这有一些多米诺骨牌的递推的味道在里面。

哈佛结构:

cpu首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作.

数据和指令本身就是分开存储的,所以想要区分它们也比较容易。

你可能感兴趣的:(汇编语言研究1)