[计算机组成原理(唐朔飞 第2版)]第一章 计算机系统概论 第二章 计算机的发展及应用(学习复习笔记)
第1章 计算机系统概论
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
- 计算机系统由“硬件”和“软件”两大部分组成。
- 硬件
- 是指计算机的实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成
- 如主机、外部设备等
- 软件
- 软件看不见摸不着,由人们事先编制的具有各类特殊功能的程序组成。
- 通常把这些程序寄寓于各类媒体(如 RAM ROM、磁带、磁盘、光盘,甚至纸带等),它们通常存放在计算机的主存或辅存内。
- 硬件
- 计算机性能的好坏取决于“软”、“硬"件功能的总和。
- 计算机的软件通常又可以分为两大类
- 系统软件
- 系统软件又称为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。
- 包括:
- 标准程序库
- 语言处理程序(如将汇编语言翻译成机器语言的汇编程序或将高级语言翻译成机器语言的编译程序)
- 操作系统(如批处理系统、分时系统、实时系统)
- 服务程序(如诊断程序、调试程序、连接程序等)
- 数据库管理系统
- 网络软件
- ……
- 系统软件运行过程中不需要人为干预,系统软件位于硬件和软件之间,屏蔽了硬件,使硬件有更高层次的抽象,使用户可用方便地使用计算机
- 应用软件
- 应用软件又称为应用程序,是用户根据任务需要所编制的各种程序
- 系统软件
1.1.2 计算机系统的层次结构
- 现代计算机的解题过程
- 由用户用高级语言编写程序(称为源程序),然后将它和数据一起送入计算机内,再由计算机将其翻译成机器能识别的机器语言程序(称为目标程序),机器自动运行该机器语言程序,并将计算结果输出。
- 实际机器M1M_1M1(机器语言机器)
- 用户使用二进制代码编写的程序(机器语言程序)可以直接运行的机器
- 虚拟机器(汇编语言机器)
- 可以将用户编写的汇编语言程序翻译为机器语言程序的机器
- 这并不是一台实际的机器,只是可以感到存在的一台具有翻译功能的机器,所以称为虚拟机
- 将汇编语言程序翻译为机器语言程序的程序为汇编程序
- 虚拟机器(高级语言机器)
- 可以将高级语言程序翻译成汇编语言程序或其他中间语言程序,或可以将高级语言程序直接翻译为机器语言程序的机器
- 将高级语言程序翻译为机器语言程序的软件为翻译程序
- 翻译程序分为两种
- 编译程序
- 编译程序是将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序。
- 只要源程序不变,就无须再次进行翻译。
- 解释程序
- 解释程序是将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句,并执行这条语句,如此重复直至完成源程序的全部翻译任务。
- 它的特点是翻译一次执行一次,即使下一次重复执行该语句时,也必须重新翻译。
- 编译程序
- 微程序机器M0M_0M0
- 将机器M1M_1M1中的每一条机器指令翻译为一组微指令,即构成一个微程序
- 微程序机器是对实际机器M1M_1M1的分解,即用M0M_0M0的微程序解释并执行MiM_iMi的每一条机器指令
- 为了区分实际机器M1M_1M1与M0M_0M0,将M1M_1M1称为传统机器,M0M_0M0称为微程序机器
- 虚拟机器(操作系统机器)
- 实际上在实际机器M1M_1M1与虚拟机器M2M_2M2之间还有一级虚拟机器,它是由操作系统软件构成的。
- 操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制并管理计算机系统全部硬件和软件资源的作用,为用户使用计算机系统提供极为方便的条件。
- 将硬件研究的主要对象归结为传统机器M1M_1M1和微程序机器M0M_0M0。
- 软件的研究对象主要是操作系统级以上的各级虚拟机。
- 固件:一部分软件功能由硬件来实现,把软件永恒地存于只读存储器中
1.1.3 计算机组成和计算机体系结构
- 计算机体系结构
- 是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。
- 计算机系统的属性通常是指程序员所看到的传统机器的属性,站在不同层次上编程的程序员所看到的计算机属性是各不相同的
- 包括指令集数据类型、存储器寻址技术、I/O机理等,大都属于抽象的属性。
- 计算机组成
- 是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。
- 计算机体系结构指出计算机系统具有哪些属性,如具有哪些指令;计算机组成实现计算机体系结构指出的计算机系统具有的属性,如每条指令如何实现。
1.2 计算机的基本组成
1.2.1 冯·诺依曼计算机的特点
- ENIAC:电子数字积分计算机,世界上第一台计算机
- 冯·诺依曼在研究EDVAC 机时提出了“存储程序”的概念。
- 以“存储程序”概念为基础的各类计算机通称为冯·诺依曼机。
- 冯·诺依曼计算机的特点:
- 计算机由运算器、存储器、控制器、输人设备和输出设备五大部件组成。
- 指令和数据以同等地位存放于存储器内,并可按地址寻访。
- 指令和数据均用二进制数表示。
- 指令由操作码和地址码组成
- 操作码用来表示操作的性质,即执行该指令需要完成什么操作;
- 地址码用来表示操作数在存储器中的位置,即参加运算的数在存储器内的位置。
- 机器指令的操作码和地址码采用0、1代码的组合表示
- 存储程序,程序存储在存储器中,指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
- 机器以运算器为中心,输人输出设备与存储器间的数据传送通过运算器完成。
1.2.2 计算机的硬件框图
- 典型的冯·诺依曼计算机是以运算器为中心的
- 现代的计算机以存储器为中心
- 各部件的功能
- 运算器:
- 用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
- 运算器的核心为ALU(算术逻辑单元),能够完成算术运算和逻辑运算
- 存储器
- 用来存放数据和程序。
- 存储器分为主存储器和辅助存储器
- 主存储器:用来存放程序和数据,可以直接于CPU交换信息
- 辅助存储器,简称辅存,又称外存
- 控制器
- 用来控制、指挥程序和数据的输人、运行以及处理运算结果。
- 控制器的核心为CU(控制单元)
- 用于解释存储器中的指令,并发出各种操作命令来执行指令
- 输人设备
- 用来将人们熟悉的信息形式转换为机器能识别的信息形式
- 输出设备
- 可将机器运算结果转换为人们熟悉的信息形式
- 计算机的五大部件(又称五大子系统)在控制器的统一指挥下,有条不紊地自动工作
- 运算器:
- 由于运算器和控制器在逻辑关系和电路结构上联系寸分紧密,这两大部件往往集成在同一芯片上,通常将它们合起来统称为中央处理器(CPU)。
- ALU和CU是CPU的核心部件
- 把输入设备与输出设备简称为I/O设备
- I/O设备受CU控制,完成相应的输入输出操作
- 现代计算机可认为由三大部分组成:CPU、I/O设备及主存储器
- CPU与主存储器合起来又可称为主机,I/O设备又可称为外部设备。
1.2.3 计算机的工作步骤
- 用计算机解决一个实际问题通常包含两大步骤
- 上机前的准备
- 建立数学模型,根据问题确定数学模型
- 确定计算方法,计算机并不一定完全支持数学方程中的运算,需要将其转为适合计算机的加减乘除等运算
- 编制解题程序
- 上机运行
- 上机前的准备
- 细化的计算机组成框图
- 主存储器
- 主存储器(简称主存或内存)包括存储体M、各种逻辑部件及控制电路等。
- 存储体由许多存储单元组成,每个存储单元又包含若干个存储元件(或称存储基元、存储元),每个存储元件能寄存一位二进制代码“0”或“1”。
- 一个存储单元可存储一串二进制代码,称这串二进制代码为一个存储字,这串二进制代码的位数称为存储字长。
- 一个存储字可代表一个二进制数,也可代表一串字符
- 赋予每个存储单元一个编号,称为存储单元的地址号
- 主存的工作方式就是按存储单元的地址号来实现对存储字各位的存(写人)取(读出)。这种存取方式称为按地址存取方式,即按地址访问存储器(简称访存)。
- 为了能实现按地址访问的方式,主存中还必须配置两个寄存器MAR和MDR。
- MAR是存储器地址寄存器
- 用来存放欲访问的存储单元的地址,其位数对应存储单元的个数
- MDR是存储器数据寄存器
- 用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。
- MAR是存储器地址寄存器
- 存储字长、指令字长、数据字长三者可各不相同,但它们必须是字节的整数倍。
- 运算器
- 运算器最少包括3个寄存器(现代计算机内部往往设有通用寄存器组)和一个算术逻辑单元(ALU)。
- ACC为累加器
- MQ为乘商寄存器
- X为操作数寄存器
- 这3个寄存器在完成不同运算时,所存放的操作数类别也各不相同。
- 不同机器的运算器结构是不同的
- M表示存储器的任一地址号,[M]表示对应M地址号单元中的内容;X表示X寄存器,[X]表示X寄存器中的内容;ACC表示累加器,[ACC]表示累加器中的内容;MQ表示乘商寄存器,[MQ]表示乘商寄存器中的内容
- 控制器
- 控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。
- 完成一条指令操作的具体过程
- 控制器首先要命令存储器读出一条指令,称为取指过程(也称取指阶段)。
- 对这条指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,称为分析过程(也称分析阶段)。
- 根据操作数所在的地址以及指令的操作码完成某种操作,称为执行过程(也称执行阶段)。
- 通常,完成一条指令操作需要取指、分析和执行3个阶段。
- 控制器由程序计数器(PC)、指令寄存器(IR)以及控制单元(CU)组成。
- PC用来存放当前欲执行指令的地址,它与主存的MAR之间有一条直接通路,且具有自动加1的功能,即可自动形成下一条指令的地址。
- IR用来存放当前的指令,IR的内容来自主存的MDR。
- IR中的操作码(OP(IR))送至CU,记作 OP(IR)→CU,用来分析指令;
- 其地址码(Ad(IR))作为操作数的地址送至存储器的MAR,记作Ad(IR)→MAR。
- CU用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象。
- I/O
- I/O子系统包括各种I/O设备及其相应的接口。
- 每一种I/O设备都由I/O接口与主机联系,它接收CU发出的各种控制命令,并完成相应的操作。
1.3 计算机硬件的主要技术指标
1.3.1 机器字长
- 机器字长是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。
- 字长越长,数的表示范围越大,精度也越高。
- 机器的字长直接影响加法器(或ALU)、数据总线以及存储字长的位数。
1.3.2 存储容量
- 存储器的容量包括
- 主存容量
- 主存容量是指主存中存放二进制代码的总位数
- 主存容量 = 存储单元个数 x 存储字长
- MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长。
- 现代计算机中常以字节数来描述容量的大小,因一个字节已被定义为8位二进制代码,故用字节数便能反映主存容量。
- 辅存容量
- 辅存容量通常用字节数来表示
- 主存容量
1.3.3 运算速度
- 吉普森(Gibson)法
- 它综合考虑每条指令的执行时间以及它们在全部操作中所占的百分比
- TmT_mTm为机器运行速度;fif_ifi为第i种指令占全部操作的百分比数;tit_iti为第i种指令的执行时间。
- 吉普森法计算出来的机器运行速度为各种指令执行时间的加权平均值
- MIPS( Million Instruction Per Second,百万条指令每秒 )
- 单位时间内执行指令的平均条数
- CPI( Cycle Per Instruction )
- 执行一条指令所需的时钟周期(机器主频的倒数)
- FLOPS( Floating Point Operation Per Second,浮点运算次数每秒)
- 单位时间内执行浮点运算的次数
1.4 本书结构
- 略
第2章 计算机的发展及应用
- 第一代计算机:电子管计算机
- 第一台计算机:电子数字积分计算机 ENIAC
- EDVAC:首次采用存储程序概念的计算机
- 第二代计算机:晶体管计算机
- 第三代计算机:集成电路计算机
- 第四代计算机:超大规模集成电路计算机
相关文章:

[计算机组成原理(唐朔飞 第2版)]第一章 计算机系统概论 第二章 计算机的发展及应用(学习复习笔记)
第1章 计算机系统概论 1.1 计算机系统简介 1.1.1 计算机的软硬件概念 计算机系统由“硬件”和“软件”两大部分组成。 硬件 是指计算机的实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成如主机、外部设备等 软件 软件看不见…...
Python的数据分析相关的框架
Python特别强大,也是一款可以实现可数据分析语言,它有很多开源的库和工具,可以帮助数据科学家处理和分析数据。 以下是一些常用的Python库和工具: NumPy:NumPy是一个Python库,用于处理大型多维数组和矩阵&…...

为什么会出现植物神经紊乱 总是检查不出来该怎么办
植物神经紊乱是一种很多人都害怕的疾病,你们知道是为什么吗? 植物神经紊乱是一种神经系统失调导致的多种症状的总称,这种疾病是由于社会因素所诱发的脏器功能的失调,是一种非常复杂的疾病。而这种疾病是可能会发生在任何年龄阶段的…...

宏任务和微任务
JavaScript 把异步任务又做了进一步的划分,异步任务又分为两类,分别是: ① 宏任务(macrotask) 异步 Ajax 请求setTimeout、setInterval文件操作其它宏任务 ② 微任务(microtask) Promise.then…...

使用WebSocket、SockJS、STOMP实现消息实时通讯功能
客户端 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head><title>websocket client</title><script src"http://cdn.bootcss.com/sockjs-client/1.1.1/sockjs.min.js"></script>…...

C++回顾(十一)—— 动态类型识别和抽象类
11.1 动态类识别 11.1.1 自定义类型 C中的多态根据实际的对象类型调用对应的函数 (1)可以在基类中定义虚函数返回具体的类型信息 (2)所有的派生类都必须实现类型相关的虚函数 (3)每个类中的类型虚函数都需…...

雷电模拟器安卓7以上+Charles抓包APP最新教程
一、工具准备: 证书安装工具全局代理工具下载: https://download.csdn.net/download/weixin_51111267/87536481 二、Charles设置 (一)电脑上证书安装 (二)安卓模拟器上系统证书安装(RooT权限打…...
vsvode 配置sftp,连接远程linux全过程
在本地安装sftp插件,配置参数https://blog.csdn.net/u011119817/article/details/106630599在linux机台安装vscode-service服务https://zhuanlan.zhihu.com/p/294933020连接超时,将配置文件添加超时时间遇到的错误处理:(272条消息) 【vscode插…...
C++类转换为蓝图、打印日志、蓝图关卡、删除C++文件
蓝图宏 UCLASS(Blueprintable)//c脚本可转换为蓝图 UPROPERTY(BlueprintReadWrite)//蓝图中可创建set,get节点 UFUNCTION(BlueprintCallable)//可创建函数节点 UPROPERTY(BlueprintReadWrite,Category”My Variables”)//节点进行分类打印日志 UE_LOG(LogTemp, Lo…...

elasticsearch高级篇:核心概念和实现原理
1.elasticsearch核心概念1.1 索引(index)一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母&#…...

部署安装Nginx服务实例
其他服务: 搭建zabbix4.0监控服务实例 普罗米修斯监控mysql数据库实战 Linux安装MySQL数据库步骤 一. Nginx概念介绍 1.介绍Nginx程序 Nginx (engine x) 是一款开源且高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。主要特点是占用…...

云原生架构设计原则及典型技术
云原生是面向云应用设计的一种思想理念,充分发挥云效能的最佳实践路径,帮助企业构建弹性可靠、松耦合、易管理可观测的应用系统,提升交付效率,降低运维复杂度。代表技术包括不可变基础设施、服务网格、声明式 API 及 Serverless 等…...

【Linux】-- 工具介绍 vim_gcc/g++_gdb
目录 Linux中的软件管理工具 – yum 在Linux下安装软件的方式 认识yum 查找软件包 安装 卸载 lrzsz.x86_64 rz sz Linux中的编辑器 – vim vim的基本概念 vim各模式切换 vim命令模式命令 vim底行模式命令 gcc / g gcc / g的作用 gcc / g语法 预处理 编译 汇…...

JAVA SE: IO流
一、Java流式输入输出原理Java对于输入输出是以流(Stream)的方式进行的,JDK提供各种各样的“流”类,以获取不同类型的数据。可以理解为将管道插入到文件中,然后从管道获取数据。这个管道外边还可以套管道,外边的管道对数据进行处理…...

打破原来软件开发模式的无代码开发平台
前言传统的系统开发是需要大量的时间和成本的,如今无代码开发平台的出现就改变了这种状况。那么你知道什么是无代码开发平台?无代码开发对企业来说有什么特殊的优势么?什么是无代码平台无代码平台指的是:使用者无需懂代码或手写代码,只需通…...
06-redux中的hook
知识点06-redux的hook 在函数组件中要和redux连接,分为两个步骤 前提状态机已经主备就绪 注入store到根组件 在函数组件中,使用Provider包裹根组件,并将store注入这一步,依旧是不能少的 import store from "./redux/store…...
watch监听不到数组对象的变化
watch监听不到数组对象的变化一、利用索引直接改变arr的值二、修改数组的长度arr.length三、添加和修改对象属性和值Vue不能监听到数组和对象值的变化其实和双向绑定的原理有关。Vue双向绑定原理是利用js中的Object.defineproperty重定义对象的GET和SET方法,而同时这…...
言语理解与表达之语句表达
考点一语句填空提问方式:填入划横线处最恰当的一句是( )1.横线在结尾:总结前文提出对策2.横线在开头:需概括文段的中心内容3.横线在中间:注意与上下文联系把握好主题词,保证文段话题一致实例1和…...
2023年全国最新食品安全管理员精选真题及答案14
百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 131.食品生产企业在一年内()次因违反《中华人民共…...

【MySQL】约束
文章目录1. 约束2. 非空约束 NOT NULL3. 唯一性约束 UNIQUE4. 主键约束 PRIMARY KEY5. 自增约束 AUTO_INCREMENT6. 外键约束FOREIGN KEY7. 默认值约束 DEFAULT8. 小结1. 约束 为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...