1. 基本构成
- 计算机主要由4个部分构成:
- 处理器:数据处理。
- 存储器:一般指的是内存。
- 输入输出模块:各种外设,如硬盘。
- 系统总线:在处理器、存储器、输入输出设备之间提供通信。
3. 指令的执行
- 最基本的包括两步:取指令 + 执行指令 = 指令周期
- 程序计数器(Program Counter PC) 中保存下一条指令的位置,取到的指令放在指令寄存器(Instruction Register IR) 中。
4. 中断
-
可以分为四种:(这个分类有点奇怪…)
- 程序中断:程序执行的结果产生,例如出现算术溢出、除0等操作。
- 时钟中断:由CPU内部的计时器发出。
- I/O中断:由I/O控制器发出硬件信号。
- 硬件失效中断:掉电或奇偶校验错误之类的故障产生。
-
有了中断机制,则需要在指令周期中加一个中断阶段来检查是否出现中断。
-
具体来讲,一个外部中断会发生以下事件:
- 设备给处理器发送一个硬件中断信号。
- 处理器在指令周期中检查到中断。
- 处理器给提交中断的设备发送确认信号,允许该设备取消中断信号。
- 处理器把操作权交给中断服务程序:先保存当前程序的信息,最少需要保存程序状态寄存器和PC寄存器,压入系统控制栈。
- 处理器把响应中断的中断程序的入口地址装入PC。这里可能每一类中断有一个程序,也可能每个设备的每一类中断各有一个程序。处理器要能决定调用哪一个中断处理程序。
- 之前只保存了状态寄存器PSW和PC,一般在中断处理程序的开始,会将其他寄存器的值也保存到栈中,因为他们有可能用到这些寄存器。
- 中断处理程序处理中断。
- 恢复保存的寄存器的值。
- 恢复PSW和PC的值,下一条程序则会执行中断断点处的下一条程序。
-
多个中断可以使用中断优先级来解决先后问题。
5. 存储器的层次结构
- 存储器有三个问题:速度,容量,价格。有一定的制约关系。
- 更快的速度,更大的容量以及更低的价格,所以设计时采用了层次结构。
- 局部性原理:CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
6. 高速缓存
- 高速缓存包含一部分内存的数据,处理器试图读取一个字节时,先检查是否在高速缓存中。如果在,则直接传递给处理器;如果不在,那么则将包含这个数据的一块内存读入高速缓存。
7. 直接内存读取(DMA)
- I/O操作有三种方式:程序查询I/O操作、中断驱动I/O操作,直接内存读取。
- 程序查询I/O操作:需要处理器在执行I/O操作后,定期查询I/O状态。效率很低
- 中断驱动I/O操作:I/O模块以中断的方式通知处理器,而不是定期查询,大大节约了时间。但任何数据传送必须要完全通过处理器。
- DMA:由一个单独的模块来完成,处理器告诉模块:读或者写、I/O设备地址、读或者写的存储单元、字节个数等信息,DMA模块自动传送,占用系统总线,但不经过处理器。