- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作为电子或计算机专业的学生, 电脑(计算机) 对于大家已经不再是什么新鲜的东西了。 大家都知道, 计算机可以为我们做很多的事情, 替我们节约很多时间, 为我们计算各种复杂的 数据并且准且无误。 那么, 计算机为什么能够做这些事情呢?计算机内部到底是怎么工作的
呢?本章将为你展示计算机的主要部件的设计过程。
计算机最核心的部分叫做中央处理器,也就是我们常说的 CPU ,计算机所做的工作都是由CPU 来完成的。当然,作为学习,我们不能够设计出类似奔腾处理器( Pentium microprocessor )的 CPU ,我们用一个能够完成简单功能的简单的 CPU 作为讲解, 麻雀虽小,
五脏俱全,这个简单的 cpu 具有一般 CPU 的全部基本特征。
CPU 概览
众所周知, cpu 只能识别二进制数据,也就是机器码。所以,在 CPU 内部靠不同的二进制序列来区别不同的机器码。我们把这些机器码存储在一个存储器中,共 CPU 读取使用。同时,为了用户和程序员能够更好的记住机器码的含义, 采用相应的助记符来表示这些机器码, 如:用 LDA 表示二进制的 000 等。这些助记符通常被称为汇编语言,不同架构的计算机的
汇编语言通常都是各不相同的。
CPU 的内部框架
下图是本章准备设计的一个 CPU 内部结构框架。
PC 控制器
ALU
存储器
指令解码器
CPU 的内部工作原理
不同架构的计算机工作原理也是不同的, 此处仅以本课本中讲授的 CPU 工作原理为例讲解。首先, CPU 的指令是存储在存储器中的,所以 cpu 执行指令的第一步是从存储器中取出
(fetch )指令,第二步,将取出的指令解码,第三步,根据指令解码出的功能决定是否再从
存储器中取出需要处理的数据,第四步,根据解码出的指令决定进行相应的计算,这由
( ALU )完成。第五步,根据解码出的指令决定是否将计算结果存入存储器,第六步,修改 PC 指针,为下一次取指令做准备。整个执行过程由控制器控制。
在介绍具体的 CPU 硬件架构之前,我们先确定一些 CPU 能够执行的指令,在这里, 为了教学演示, 我们设定 6 个计算机指令, 分别为: LDA 指令、 STA 指令、 ADD 指令、 SUB 指令、AND 指令和 HLT 指令。指令集表示的含义见下表:
操作码
助记符
执行的功能
000
LDA
addr
将地址为 addr 处的存储器中的内容装载到 A 寄存器
001
STA
addr
将 A 寄存器的内容存储到存储器中的 addr 地址处
010
ADD
addr
将 A 寄存器的内容加上存储器中的 addr 地址处的内容
011
SUB
addr
将 A 寄存器的内容减去存储器中的 addr 地址处的内容
100
AND
addr
将 A 寄存器的内容与上存储器中的 addr 地址处的内容
101
HLT
停止指令的执行
前两条指令, “ LDA ”和“ STA”是数据传输指令,就像助记符表示的那样,这些指令在 A 寄存器和存储器之间传送数据。 对于 LDA 指令,“源” 数据是存储器的 addr 地址处的值 (也称为内容),目的寄存器是 A 寄存器;对于 STA 指令,“源”数据是 A 寄存器,目的寄存器是存储器的 addr 地址处的存储空间。
这里为了以后的表达方便, 我们采用一种简单的方式来表示上述指令的功能, 如 : 表 示 LDA addr 指令可以用 A (addr),而 STA addr 可以用( addr) A 来表示。同样,加法指令 ADD addr 用 A A+(addr) 表示, 减法指令 SUB addr 用 A A - (addr)表示。“AND addr”
用 A A (addr) 表示。注意,由于这里涉及到计算的结果,我们设置了一些标志用来标识
结果的特殊性,如:Z(零标志)
,标识运算的结果A中为0;N(负数标志)
,标识运算的
结果A中小于0;V(溢出标志)
,标识运算的结果A溢出;C(进位标志)
,标识运算的结
果A中产生了进位; 值得一提的是C位的处理, 加法和减法对于C的处理是不一样的。 对于ADD,进位标志是A中的最高位产生了进位;对于减法,最高位产生借位将C为置1。
为了能够更好的理解 CPU的运行, 我们以一个简单的汇编程序的执行来讲解。 这个程序将使用以上的全部指令。 在这里,我们使用助记符的方式写汇编程序, 实际在, 在存储器内部是以二进制码来存储的,例如:第一行“ LDA 01011”在存储器中为
LDA
01011
A (01011)
ADD
01100
A A+(01100)
STA
01101
(01100) A
LDA
01
原创力文档


文档评论(0)