《计算机组成原理》读书笔记--概论

简介: 基本概念 计算机系统的组成 1)计算机系统由”硬件”和”软件”两大部分组成;计算机性能的好坏,取决于软件和硬件功能的总和;2)硬件:计算机系统的实体部分,由看得见摸得着的电子元件组成;3)软件:事先编制的具有特定功能的程序;4)固件:将某种特定功能的软件持久化到只读存储器中;5)计算机软件通常可以.

基本概念

计算机系统的组成

1)计算机系统由”硬件””软件”两大部分组成;计算机性能的好坏,取决于软件和硬件功能的总和;
2)硬件:计算机系统的实体部分,由看得见摸得着的电子元件组成;
3)软件:事先编制的具有特定功能的程序;
4)固件:将某种特定功能的软件持久化到只读存储器中;
5)计算机软件通常可以分为两类:系统软件应用软件
6)系统软件:用来对整个计算机进行调度、管理、监视及服务的各种软件;
7)应用软件:用户在各自系统中开发和应用的各种程序;

机器字长

1)CPU一次能够处理的数据的位数,和CPU寄存器的位数相关;
2)字长越长,数的表示范围越大,精度越高;
3)字长越短,统一操作需要运算的次数可能会增加,故字长会影响机器的运算速度;
4)直接影响ALU、数据总线宽度、存储字长的位数;

区别:机器字长,指令字长,存储字长
机器字长:CPU一次能处理的数据的位数;

指令字长:机器指令二进制代码的总位数;
存储字长:存储单元中存放二进制代码的总位数;

存储容量

1)包括主存容量辅存容量
2)主存容量:主存中存放二进制代码的总位数;即:

$$ 存储容量=存储单元个数*存储字长 $$

3) 主存中MAR的位数反映了存储单元的个数;MDR的位数反映了存储字长;

运算速度

Gibson法

考虑每条指令的执行时间以及指令在全部操作中的占比;求加权平均数;

$$ T_m=\sum_{i=1}^{n}f_{i} t_{i} $$

$T_{m}$:机器的运行速度;
$F_{i}$:第i种指令占全部操作的百分比数;
$T_{i}$:第i中指令的执行时间;

MIPS

MIPS(Millon Instruction Per Second,百万条指令每秒):单位时间内执行指令的平均条数;

CPI

CPI(Cycle Per Instruction):执行一条指令所需要的时钟周期,机器主频的倒数;

FLOPS

FLOPS(Floating Point Operation Per Second):每秒浮点运算次数;

问:计算机体系结构和计算机组成原理的区别?

计算机体系结构,属于What,描述计算机概念性的结构和功能;
计算机组成原理,属于How,描述如何实现计算机体系结构所描述的结构和功能;

计算机系统的组成

多层结构计算机系统

多层结构计算机系统

冯·诺依曼计算机结构特点(运算器为中心的计算机结构)

image

1) 计算机由运算器,存储器,控制器,输入设备,输出设备五大部分组成;
2) 指令和数据以同等的地位存放于存储器内,并可按地址寻访;
3) 指令和数据均用二进制数表示;
4) 指令由操作码和地址码组成;操作码表示操作类型;地址码表示操作数在存储器中的位置;
5) 指令在存储器中按顺序存放;通常,指令是顺序执行的,特定条件下,可根据运算结果/设定条件改变执行顺序;
6) 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成;

总结:冯·诺依曼计算机基于存储程序原理(数据和程序都以等同的地位存放到存储器中),特点是按照地址访问并顺序执行指令;

存储器为中心的计算机结构

以存储器为中心的计算机结构

问:以运算器为中心和以存储器为中心有何异同?

相同点:各个设备的操作都由控制器统一调度;
不同点:数据流向不同,以控制器为中心的计算机,外设和存储器的数据交互由运算器进行中转;而以存储器为中心的计算机,外设和存储器的数据交互无须经过运算器中转;

计算机硬件设备功能

1)运算器:用来完成算数运算和逻辑运算,暂存中间运算结果;
2)存储器:用来存放数据和程序;
3)控制器:用来控制程序和数据的输入、运行,处理运算结果;
4)输入设备:将人类熟悉的信息形式转换为机器能识别的信息形式,如:键盘、鼠标等;
5)输出设备:将机器运算结果转换为人类熟悉的信息形式,如:打印机输出、显示器输出等;
6)运算器和控制器逻辑紧密,集成在一起,称中央处理器;
7)输入设备和输出设备统称为I/O设备;
8)现代计算机有三大部分组成:CPU,I/O设备,主存储器;CPU和主存储器合称为主机;I/O设备称为外部设备;

计算机硬件设备

image

主存储器

1)由存储体M、各种逻辑部件、控制电路等组成;
2)存储单元:存储体由许多存储单元组成;
3)存储基元:一个存储单元包含若干个存储元件;每个存储原件能够存放一位二进制数,0/1;
4)存储字&存储字长:一个存储单元能够存放一串二进代码,称为存储字;二进制代码的位数称为存储字长;
5)存储字可以表示一个二进制数、字符串、指令等;
6)地址号:每个存储单元都有一个编号,称为地址号;
7)访存:主存的工作方式就是按照存储单元的地址号实现对存储字各位的读写;
8)指令和数据都由存储单元的地址号反映,故访问一条指令和一条数据的操作可以视作是相同的,能够通过一套控制线路完成;
9)MAR&MDR:为了实现按地址访问的方式,主存中需要两个寄存器MAR和MDR;
10)MAR:memory address register,存放将要访问的存储单元地址,位数对应存储单元的个数;
11)MDR:memory data register,存放要读写某存储单元的数据,位数与存储字长相等;
12)存储字长、机器字长、指令字长的长度可不相同,但必须是字节的整数倍;

运算器

1)运算器至少由3个寄存器和一个算数逻辑单元组成(ALU)组成;
2)寄存器包括:ACC(Accumulator,累加器)、MQ(Multiplier-Quotient Register,乘商寄存器)、X(操作数寄存器);
3)在完成不同运算时,寄存器存放的操作数类别各不相同;

image

控制器

1)控制各个部件自动、协调工作,包括取指,分析,执行三个阶段;
2)取指阶段:命令存储器读出一条指令;
3)分析阶段:分析指令要进行的操作以及操作数的地址;
4)执行阶段:根据指令的操作码和操作数地址完成操作;
5)控制器由PC(Program Counter,程序计数器),IR(Instruction Register,指令寄存器),CU(控制单元)组成;
6)PC:存放将要执行的指令地址,与主存的MAR有直接通路;具有自增功能,能够自动形成下一条指令的地址;
7)IR:存放当前要执行的指令,内容来自主存的MDR;指令由操作码和操作数地址组成;操作码被送入到CU(OP(IR)->CU),操作数被送入到MAR(Ad(IR)->MAR);
8)CU:分析当前指令需要完成的操作,发出微操作命令序列,控制所有被控对象;

I/O

1) 包括I/O设备和接口;
2) I/O设备通过I/O接口与主机联系,接受CU的控制;

计算机的工作过程

指令执行流程

以ADD M(M为主存地址)指令为例,执行流程如下:
1)取指过程:PCMARMMDRIR;
2)分析过程:OP(IR)CU;
3)执行过程:Ad(IR)MARMMDRIRX;

      ACCALU;XALU;
      ALUACC

计算机工作过程

计算机的工作过程实质就是不断从存储器中逐条取出指令,送至控制器,经分析后由CU发出各种命令,指挥各部件完成各种操作,直至全部指令执行结束;

目录
相关文章
|
Java 数据库
若依框架---模板生成
若依框架---模板生成
319 0
|
XML 前端开发 Java
深入了解Spring MVC工作流程
深入了解Spring MVC工作流程
|
Shell Windows
Webstorm安装激活破解2022.09最新破解教程「永久激活,亲测有效」
Webstorm安装激活破解2022.09最新破解教程「永久激活,亲测有效」
8376 0
Webstorm安装激活破解2022.09最新破解教程「永久激活,亲测有效」
|
5月前
|
网络协议 安全 网络安全
NAT网络地址转换
NAT(网络地址转换)是一种关键的网络技术,通过将内部私有地址转换为外部公网地址,实现多设备共享单一公网IP上网。它不仅解决了IPv4地址不足的问题,还增强了网络安全,隐藏了内部网络结构。NAT主要分为静态NAT、动态NAT和NAPT(网络地址端口转换)三种类型,广泛应用于家庭和企业网络中。然而,NAT也存在对某些应用不友好、增加延迟及与IPv6不兼容等缺点。
674 14
|
存储 JSON 监控
Elasticsearch索引监控全面解析
Elasticsearch索引监控全面解析
315 0
|
缓存 前端开发 JavaScript
React中怎么实现状态自动保存(KeepAlive)?
React中怎么实现状态自动保存(KeepAlive)?
517 0
|
XML JSON 前端开发
Java @RequestParam和@RequestBody的区别是什么?
【8月更文挑战第28天】Java @RequestParam和@RequestBody的区别是什么?
385 5
|
12月前
|
前端开发 开发者
大模型代码能力体验报告之贪吃蛇小游戏《二》:OpenAI-Canvas-4o篇 - 功能简洁的文本编辑器加一点提示词语法糖功能
ChatGPT 的Canvas是一款简洁的代码辅助工具,提供快速复制、版本管理、选取提问、实时编辑、代码审查、代码转写、修复错误、添加日志和注释等功能。相较于 Claude,Canvas 更加简单易用,但缺少预览功能,适合一般开发者使用。
180 0
|
存储 安全 Linux
在Linux中,用户和组的概念是什么?
在Linux中,用户和组的概念是什么?
|
边缘计算 安全 人工智能