计算机系统层次结构
系统结构
控制器:解决计算机系统内部各个部件协调沟通的问题
控制线是双向的, 因为一方面控制器要向部件发出控制信号,另一方面控制信号的发出是基于每个部件当前的工作状态以及需求,这是一个双向的信号反馈过程。
将存储器放到中间,运算器处理的数据可以以块为单位。
软件和硬件在逻辑上是等效的,比如两个8位可以等效于16位。
组成原理里的主机和现实中购买的主机不一样,现实里的主机除了那三样还集成了很多其他部件。
cpu
ALU Arithmetic and Logic Unit 算术逻辑单元,进行算术和逻辑运算
MQ Multiple-Quotient Register 乘商寄存器
ACC Accumlator 累加器
X 通用寄存器
MQ、ACC、X存放运算的中间结果
PSW Program Status Word 程序状态字寄存器 存储一些状态比如运算的初步结论(有无益处、进位是否错误等)供控制器用作下一步参考。
CU Control Unit 控制单元
ALU和CU分别代表了两类主要的硬件设计方式,ALU采用了组合逻辑的设计方式,CU采用了时序逻辑的设计方式。
组合逻辑:1+1=2,根据规则看到输入就能得到输出
时序逻辑:管理整个操作步骤的安排,简单记录当前步骤的结果,然后根据这个结果判断下一步要做什么。如果不需要判断能够直接执行下一步。
IR 指令寄存器, 指令会从IR输入到CU
PC 程序计数器寄存器,IR永远从PC找下一条指令。
工作过程——取数指令
- MDR和MAR
主存储器是由地址寄存器(MAR),数据寄存器(MDR),存储体,时序控制逻辑,地址寄存器存放访存地址,经过地址译码后找到所选的存储单元。数据寄存器,是存储器与其他部件的中介,用于暂存要从存储器读或写的信息。时序控制逻辑用于产生存储器操作所需的各种时序信号。在现代CPU,MAR和MDR是在CPU中的。
- 如何区分指令和数据
MDR->IR、ACC: CPU区分指令和数据的依据是指令周期的不同阶段,在取指令阶段取出来的肯定是指令,在执行指令阶段取出来的肯定是数据放到相应的寄存器。
如何区分阶段:cpu设置了相应的触发器(寄存器),通过查询触发器(寄存器)的状态就可以知道处于哪个阶段。
I/O设备
辅助存储器也可以看作一个I/O设备,既能读也能写
至于每一类怎么和主机之间进行交流,重点在于I/O接口的基本结构和逻辑设计。
软件系统
软件分类
系统软件包括 操作系统,数据库管理系统,语言处理系统(比如编译器),分布式软件系统,网络软件系统,标准库系统,服务性系统(比如连接程序)。
应用软件包括各种科学计算类程序,工程设计类程序,数据统计与处理程序。
注意 数据库管理系统和数据库系统是有区别的。数据库管理系统是系统软件,为数据库系统编写提供一些接口。而数据库系统一般是由数据库,数据库管理系统,数据库管理员和应用系统构成。所以只能说它里面有系统软件,但并不能说它为系统软件。
编程语言
高级语言也可以直接翻译为机器语言。
编译程序:高级语言一口气翻译成机器语言,优点是可以结合上下分优化执行
解释程序:高级语言逐条编译和执行,缺点是不能结合上下文执行
五层结构
存储器
外存可以看成是一种I/O,既能输入又能输出。
存储体 存储数据
MAR(地址寄存器)和MDR(数据寄存器) 读取数据
MAR:承接外部送过来的一个地址,这个地址用来定位到存储体中的某一个存储单元,这个存储单元被定位后会自动地把一部分数据输出到MDR中暂存,然后外部单元再从MDR中取出,整个过程由时序控制逻辑进行控制。
存储器的存储原理:存储体是如何实现存储的呢?
实现存储的结构有很多种,以下是一种方式
存储元、存储单元、存储体是硬件单元,存储字是从这些硬件单元读出来的信号。
寻址
译码器:如图中绿色线所示,同一时刻只能对一行存储单元供电(否则错乱),假设右边共有8行(8个存储单元),可以使用3位二进制表示这8行,比如000表示第一行,其实000表示的就是第一个存储单元的地址。译码器就是根据地址来找到对应的存储单元。
驱动器是用来增强供电的能力,如图中的1信号要供8个存储元。
数据寄存器,当取出一个存储字之后,直接送往数据寄存器,所以存储单元的位数也就决定了数据寄存器的位数。
存储器数据寄存器(MDR)和存储器地址寄存器(MAR)在设计上是属于内存的,最终实现是放在cpu里面。