File tree Expand file tree Collapse file tree 1 file changed +30
-2
lines changed Expand file tree Collapse file tree 1 file changed +30
-2
lines changed Original file line number Diff line number Diff line change 82
82
2、指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。
83
83
3、执行指令,分两个阶段“取操作数”和“进行运算”。
84
84
4、修改指令计数器,决定下一条指令的地址。
85
- -- 5000 * 0.2的运算过程:寄存器1中的5000和寄存器2中的0.2导入ALU,计算结果1000返回到寄存器3中
86
- -- 时钟:《为什么CPU需要时钟才能工作》https://www.zhihu.com/question/21981280/answer/126921197
85
+ -- 时钟:
86
+ -- 时钟就是一个固定频率的方波发生器
87
+ -- 工作原理:时钟产生一个方波,低电平代表逻辑0,高电平时代表逻辑1。逻辑电路中专门有电路能侦测到时钟的跳变,也就是从0 到1或者从1到0的过程。当检测到这个跳变后,CPU就开始执行下一个指令。因此时钟越快,CPU运转越快。超频就是把时钟都加快,让CPU工作在一个更快的频率下。
88
+ -- Q&A:
89
+ -- 5000 * 0.2的运算过程是怎样的?寄存器1中的5000和寄存器2中的0.2导入ALU,计算结果1000返回到寄存器3中
90
+ -- 《为什么CPU需要时钟才能工作》https://www.zhihu.com/question/21981280/answer/126921197
87
91
·cpu指令集:运算的抽象集合
88
92
-- 指令:
89
93
-- 计算机通过指令指挥计算机工作。
184
188
-- 地址的两次转换,的确是非常麻烦而且没有必要的,因为直接可以把线性地址抽像给进程。之所以这样冗余,Intel完全是为了兼容而已(Intel为了兼容,将远古时代的段式内存管理方式保留了下来,x86体系的处理器刚开始时只有20根地址线,寻址寄存器是16位。我们知道16位的寄存器可以访问64K的地址空间,如果程序要想访问大于64K的内存,就需要把内存分段,每段64K,用段地址+偏移量的方式来访问,这样使20根地址线全用上,最大的寻址空间就可以到1M字节,这在当时已经是非常大的内存空间了。)。
185
189
-- 文档:
186
190
《CPU是如何访问到内存的?--MMU最基本原理》:https://blog.csdn.net/jasonchen_gbd/article/details/79461771
191
+ ·中断:
192
+ -- 外界发生中断时,中断信号经过中断控制器,最终达到CPU的中断引脚上,当那个管脚电平变低(或者变高)的时候,cpu就会被打断,并从特定地址开始执行。
193
+ -- 中断的意义:中断是处理器对外开放的实时受控接口。一个没有中断的计算机体系是决定论的:得知某个时刻CPU和内存的全部数据状态,就可以推衍出未来的全部过程。这样的计算机无法交互,只是个加速器。添加中断后,计算机指定了会兼容哪些外部命令,并设定服务程序,这种服务可能打断当前任务。这使得CPU“正在执行的程序”与“随时可能发生的服务”,二者形成了异步关系,外界输入的引入使得计算机程序不再是决定论。由人实时控制的中断输入,是无法预测的。再将中断响应规则化,推广开,非计算机科学人群就能控制计算机,发挥创造力。电竞鼠标微操,数码板绘,音频输入合成,影像后期数值调整,键盘点评天下大势,这些都不是定势流程,是需要人实时创造参与其中的事件,就由中断作为载体,与计算机结合了起来。
194
+ -- 提高工作效率
195
+ 例如如果没有中断,将产生如下代码,要监听打印机是否就绪就花费大量资源
196
+ while(!printer.ready()){
197
+ sleep(10ms)
198
+ }
199
+ doPrint()
200
+ -- 故障恢复(异常处理,紧急事件等)
201
+ -- 简化编程模型(try/catch,计时器等)
202
+ -- 中断请求:
203
+ -- 硬件设备发给主板(打印机、键盘、鼠标等)
204
+ -- 硬件中断:CPU异常(除以0),时钟信号等
205
+ -- 软件中断:发出(异常、切换到内核态等)
206
+ -- 中断向量表:
207
+ -- (一般在内存中)一块区域,存储了中断类型和中断响应程序的对应关系。每一行叫做一个中断向量
208
+ -- 向量表实例:
209
+ 中断类型 ISR地址 描述
210
+ 00 0x0000 除以0
211
+ 01 0x0004 调试单步
212
+ 09 0x0024 键盘
213
+ 18 0x0048 打印机
214
+ 100 0x0190 自定义
187
215
188
216
189
217
*汇编语言:
You can’t perform that action at this time.
0 commit comments