1 冯诺依曼结构
它基于以下3个主要概念:
- 数据和指令存储在单一的“读/写存储器”中。
- 存储器的内容通过位置寻址,而不关心存储在其中的数据类型。
- 以顺序的形式从一条指令到下一条指令的(除非有明确的修改)执行。
2 指令的读取和执行
在典型的处理器中,用一个称为程序计数器(PC)的寄存器来保存下一条将要读取指令的地址。除非特别说明,否则处理器在每次取指令之后总是将PC的值加上一个增量,以便将来顺序地读取下一条指令。
读取的指令装入处理器中的指令寄存器(IR)。它规定了处理器将要执行的动作。总的来说,分为4类:
- 处理器-存储器:数据可从处理器传送到存储器或从存储器传送到处理器。
- 处理器-I/O:通过处理器和I/O模块之间的传输,数据可传送到或来自外部设备。
- 数据处理:处理器可以对数据执行一些算术逻辑操作。
- 控制:指令可以用来改变顺序。例如,处理器可能从149单元取得一条指令,而这条指令指出下一指令取自182单元。处理器通过程序计数器设置为182来记录这一事实。这样,在下一个取指周期,指令将取自182单元,而不是150单元。
3 中断
几乎所有的计算机都提供一种机制,其他模块通过此机制可以中断处理器的正常处理。中断处理很复杂,这里我们专注于由中断引起的模块间的通信。
中断类型 | 产生的原因 |
---|---|
程序 | 算术溢出、除以零、企图执行一些非法的机器指令或访问的地址超出了用户的存储器空间 |
定时器 | 由处理器中的定时器产生,它允许操作系统以规整的时间间隔执行特定的功能 |
I/O | 由I/O控制器产生,以通知操作的正常完成或各种出错情况 |
硬件故障 | 由电源故障或存储器奇偶校验出错这类的故障产生 |
如果出现中断请求,则处理器执行以下操作:
- 挂起当前正在执行的程序,并保存其状态。这意味着保存下一条即将执行的指令的地址以及任何与处理器当前活动相关的数据。
- 将程序计数器设置为中断处理程序的起始地址。
中断处理程序完成后,处理器能够在断点处恢复用户程序的执行。
Q:多重中断的的两种处理方法
A:第一种是在中断处理过程种禁止其他中断。第二种方法是定义中断的优先级,且允许优先级高的中断引起低级中断处理程序本身被中断。
4 互连设备
- 存储器
- 处理器
- I/O模块
从计算机系统内部的观点看,I/O在功能上与存储器相似,它们都有读和写两类操作。此外,一个I/O模块可以控制多个外设。我们可以定义每个与外部设备的接口为端口(port),给它分配一个唯一的地址(例如,0、1、···、M-1)。此外,还有向外部设备输入和输出数据的外部数据路径。最后,I/O模块可以给处理器发送中断信号。
根据排列组合,定义了6种数据交换。互联结构必须支持这6种数据交换。迄今为止,最普遍的是总线和各种多总线结构。
4.1 总线互连
总线(bus)是连接两个或多个设备的通信通路。其关键特征是共享传输介质。任何一个设备发出的信号可以被其他连接到总线上的设备所接收,如果两个设备同时发送,它们的信号将会重叠,这样会引起混淆。因此,每次只能由一个设备能够成功地利用总线发送数据。
通常,总线由多条通信路径或线路组成,每条线能够传送代表二进制1和0的信号。例如,一个8位的数据能通过总线种的8条线传送。
总线的操作如下,如果一个模块希望向另一个模块发送数据,它必须做两件事:(1)获得总线的使用权;(2)通过总线传送数据。同理请求数据。
总结
- 中断发生时,处理器挂起正在执行的程序,并保存其状态。中断完成后,处理器能后再断点处恢复用户程序的执行。
- 多重中断有两种处理方式,一种是禁止其他中断,一种是根据优先级进行处理。
- 总线分为数据总线、地址总线和控制总线,也可分为单总线和多总线。
参考文献:
计算机组成与体系结构:性能设计