随看随记
- 为什么闪存也是一种ROM
- 因为闪存是通过位置块进行存储的,而不是像RAM一样,利用地址寻找字节进行存储。
计算机系统
计算机系统简介
- 计算机系统主要分为两大部分,硬件和软件。
软件
- 软件主要分为两个部分
- 系统软件(用来管理整个计算机系统)
- 语言处理程序(Linux中的gcc等)
- 操作系统(Linux)
- 服务性程序(协调多个进程之间的服务)
- 数据库管理系统(存储,使用数据等)
- 网络软件(各种计算机之间的通信)
- 应用软件 按任务需要编制成的各种程序(日常使用的软件)
硬件
- 计算机从高级慢慢向底层转换,高级语言->汇编语言->操作系统->机器语言->微指令语言
计算机体系结构和计算机组成的不同(理论与实践的关系)
- 计算机体系结构:程序员所见到的计算机系统的属性、概念性的结构与功能特性(指令系统、数据类型、寻址技术、I/0机理)
- 计算机组成:实现计算机体系结构所体现的属性(具体指令的实现)
计算机的基本组成
冯.诺依曼计算机的特点
- 计算机由五大部件组成:运算器,控制器,存储器,输入设备,输出设备
- 指令和数据以同等地位存于存储器,可按地址寻访:同等地位存储于存储器中,目前也可以将指令和数据分开存储,并分开查询。但是两者的地位还是相同的。
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
冯.诺依曼计算机硬件框架图
以运算器为中心的计算机硬件框架图
- 实线表示数据流动,虚线表示控制
- 运算器处于中心位置:其功能有算术运算和逻辑运算。
- 存储器:其功能有存放数据和程序
- 控制器:指挥程序的运行
- 输入设备:将信息转换成机器能识别的形式
- 输出设备:将结果转换成人能识别的形式
- 输入设备需要将信息传递到运算器中,运算器进行运算后,传递到存储器中。通过运算器将结果处理好后,传递到输出设备进行输出。
以存储器为中心的计算机硬件框架图
现代计算机硬件框架图
- 这个图有点小毛病,辅存也是I/O设备中的一种。
- 我的理解:辅存是硬盘,主存是内存条。
- 系统复杂性管理的方法-2 (3’Y)
- 层次化(Hierachy) :将被设计的系统划分为多个模块或子模块
- 模块化(Modularity) :有明确定义(well-defined)的功能和接口
- 规则性(regularity) :模块更容易被重用
计算机解决现实问题
- 运算器包含:ACC(累加器),ALU(逻辑单元)等。
- 下图中的计算过程是在运算器中的ACC进行运算的。
- ACC存在于运算器中,β在内存中。[]表示取地址中的内容,和C++中的个’&‘一样。
- 这个图表示加减都是在ACC中完成的。
- 从这个图中也可以看出操作码:1是取,2是存,3是加,4是乘,5是打印,6是停机。地址码都是寻找后面的数据,使用二进制表示。
存储器的基本组成
- 存储器包括三个部分组成:存储体,MAR,MDR。
存储体
- 存储体 - 存储单元 - 存储元件(0/1 )
大楼 - 房间 - 床位 (无人/有人)
一个存储体包含若干个存储的单元,一个存储单元包括若干个存储元件 - 存储单元: 存放一串二进制代码
- 存储字: 存储单元中二进制代码的组合
- 存储字长: 存储单元中二进制代码的位数,每个存储单元赋予一个地址
- 按地址寻访
MAR和MDR
- MAR存储器地址寄存器:反映存储单元的个数
- MDR存储器数据寄存器:反映存储字长
- 假设设MAR=4位,MDR=8位
- 则存储单元个数2^4=16,存储字长8位。
运算器的基本组成
- ACC累加寄存器
- ALU(算术逻辑单元(arithmetic and logic unit) )
- X:临时存储位置
- MQMultiple—Quotient Register):乘除时使用
- 进行运算时各种计算器的作用如下表。
- 下面的M均表示地址。黄色均表示最后的步骤和返回的位置
加法
- 步骤:
- 最开始ACC寄存器中存有原数字,当作被加数。
- 在地址M中取出数放到X中
- 在ALU中将ACC的数字(被加数)和[X]的数字(加数)进行相加得到数字,存储到ACC中。
减法
- 步骤:
- 最开始ACC寄存器中存有原数字,当作被减数。
- 在地址M中取出数放到X中
- 在ALU中将ACC的数字(被减数)和[X]的数字(减数)进行匀速那得到数字,存储到ACC中。
乘法(比较复杂)
- 步骤:
- 最开始ACC寄存器中存有原数字,当作被乘数。
- 在地址M中取出数放到MQ中
- 在ACC中取出数放到X中
- 将ACC中的数字赋值为0
- 在ALU中将X的数字(被乘数)和MQ(乘数)的数字进行乘法处理得到数字,高位存储到ACC中,低位存储到MQ中。
除法
- 步骤:
- 最开始ACC寄存器中存有原数字,当作被除数。
- 在地址M中取出数放到X中
- 在ALU中将ACC的数字(被除数)和X的数字(除数)进行除法运算得到数字,余数存储到ACC中,商存储到MQ。也就是java中的‘%’存放到ACC,‘/’存放到MQ
控制器的基本组成
- 控制器的作用解释指令,保证指令的按序执行
- 取指令-> PC程序计数寄存器(Program Counter Register)
PC存放当前欲执行指令的地址,具有计数功能,当一个指令取过后,计数器加一。 - 分析指令-> IR指令寄存器(IR,Instruction Register)
IR存放当前欲执行的指令。 - 执行指令-> CU控制单元 (Control Unit)
主机完成一条指令的过程
- MAR和MDR时寄存器,本身不具备存储的功能,只是从存储体里查找。
以取数据为例
- PC的地址指向MAR。
- MAR从存储体找到所需指令的地址
- 在MDR中根据所需指令的地址找到需要的指令
- 指令存储到IR中,解析指令
- 解析后的指令给CU进行操作
- IR执行指令,找到MAR
- MAR从存储体找到所需数据的地址
- 在MDR中根据所需数据的地址找到需要的数据
- 将该数据存到ACC中
以存数据为例
-取数据和存数据相同,唯一的不同就是
- 第8步骤时从ACC中取数据到MDR中
- 第9步骤时将储存好的数据,编好地址保存到存储体
以ax^2+bx+c程序的运行为例
- 其主要过程就是指令相关运行过程的重复运行。
- 指令相关运行过程主要分为三个:
- 取指令 PC->M