【计算机组成原理 - 第一章】计算机系统概论(完结)
本章参考王道考研相关课程:
【2021版】1.2.1_计算机硬件的基本组成_哔哩哔哩_bilibili
【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili
【2021版】1.2.3_计算机系统的层次结构_哔哩哔哩_bilibili
【2021版】1.3_计算机的性能指标_哔哩哔哩_bilibili
目录
一、计算机的发展
二、计算机软硬件概念
三、计算机系统层次结构
1、三个级别的语言
2、翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?
四、计算机的基本组成
1、冯诺依曼计算机特点
2、计算机硬件框图
(1)主存储器(cpu可以直接访问)、辅助存储
(2)运算器
(3)控制器
五、计算机工作过程
1、取数指令 编辑
2、乘法指令
3、加法指令
4、存数指令
5、计算机工作过程总结
1、取指阶段(必经阶段)
2、分析阶段(必经阶段)
3、执行阶段(根据不同指令步骤不同)
六、计算机性能指标
1、机器字长
2、存储器的性能指标
3、CPU的性能指标
4、系统整体性能指标
5、主频高的CPU一定比主频低的CPU快吗?为什么?
一、计算机的发展
- 第一代:电子管计算机
- 第二代:晶体管计算机
- 第三代:较小规模集成电路
- 第四代:较大规模集成电路
二、计算机软硬件概念
- 系统软件:标准程序库、语言处理程序、操作系统、服务程序、数据库管理系统、网络软件等
- 应用软件:科学计算类程序,工程设计类程序,数据统计与处理程序
三、计算机系统层次结构

1、三个级别的语言
- 机器语言:二进制代码,计算机唯一可以直接识别和执行的语言
- 汇编语言:用英文单词或其缩写代替二进制指令,必须经过一个称为汇编程序的系统软件翻译,将其转换为机器语言,才能在计算机的硬件系统上执行
- 高级语言:为方便程序员处理问题,经过编译程序编译成汇编语言,然后通过汇编程序转换成机器语言,或直接由高级语言程序翻译成机器语言
- 高级语言 ——编译——> 汇编语言 ——汇编——> 机器语言
- 边翻译边执行叫做解析
2、翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?
翻译程序:包括编译程序和解释程序
- 编译程序:将高级语言一次全部翻译成目标程序
- 解释程序:翻译一句执行一句,并且不会生成目标程序
汇编程序:将汇编语言翻译成机器语言
四、计算机的基本组成
1、冯诺依曼计算机特点

- 计算机由运算器、存储器、控制器、输入设备、输出设备组成
- 指令和数据以同等地位存放于存储器内,并按地址寻访
- 数据和指令均用二进制数表示
- 指令由操作码和地址码组成
- 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成
- 早期冯诺依曼机最根本特征是【程序存储】,即按照地址访问并顺序执行指令
- 计算机五大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能
2、计算机硬件框图
(1)主存储器(cpu可以直接访问)、辅助存储
存储体含有许多存储单元,每个存储单元包含若干个存储元,每个存储元可以0或1
- 存储字:一个存储单元存储一串二进制代码
- 存储字长:这串二进制代码的位数
为了实现按地址存取,主存配置两个寄存器:
- 地址寄存器MAR:指明要读/写哪个存储单元。位数=存储单元的个数
- 数据寄存器MDR:暂存要读/写的数据。位数=存储字长

(2)运算器
- 运算器最少包括3个寄存器和一个算数逻辑单元ALU
- 寄存器:ACC累加器、MQ乘商寄存器、X操作数寄存器
(3)控制器
- 完成一条指令操作:取指阶段PC、分析阶段IR、执行阶段CU
- 控制器由PC程序计数器、IR指令寄存器、CU控制单元组成
- (Program Counter)PC程序计数器:存放下一条指令的地址,将指令传给MAR,有自动+1功能
- (Instruction Register)IR指令寄存器:存放当前执行的指令,拆分出操作码传给CU,拆分出地址码传给MAR,MAR在主存储体中取出数据传给MDR
- (Control Unit)CU控制单元:分析指令,给出控制信号
五、计算机工作过程
【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili(16min开始)
高级语言的一段代码
int a=2,b=3,c=1,y=0;void main() {y=a*b+c; }

1、取数指令 
2、乘法指令

3、加法指令

4、存数指令

5、计算机工作过程总结

CPU区分指令和数据的依据:指令周期的不同阶段
1、取指阶段(必经阶段)
- PC存放下一条指令的地址 ——> MAR(存放欲访问的存储单元地址)
- MAR在存储体内找到存储指令的地址 ——> MDR(存放从主存储体取来的数据)
- MDR将指令 ——> IR(存放当前执行的指令)
- 取数阶段结束 PC++
2、分析阶段(必经阶段)
- IR拆分出操作码 ——> CU
- 分析阶段结束
3、执行阶段(根据不同指令步骤不同)
- IR拆分出地址码 ——> MAR
- MAR在存储体内找到存储的数据的地址 ——> MDR
- MDR ——> ACC
- 执行阶段结束
六、计算机性能指标

1、机器字长
CPU一次能处理数据的位数,一般等于内部寄存器的大小,决定了计算机的运算精度
2、存储器的性能指标
- MAR:位数反映存储单元的数量
- MDR:位数反映存储字长(存储字长=存储单元二进制码的位数)
总容量 = 存储单元个数×存储字长 bit(b)
= 存储单元个数×存储字长÷8 byte(B)
1 byte = 8 bit
eg:MAR为32位,MDR为8位
总容量 =
描述存储容量、文件大小时:
K—
M—
G—
T—
P=
3、CPU的性能指标
1、时钟周期:CPU中最小时间单位(单位:微秒、纳秒)
2、CPU主频(时钟频率):CPU内数字脉冲信号振荡频率,主频越高的CPU不一定比主频低的CPU快
CPU主频=1/时钟周期 (单位:Hz)
3、CPI:执行一条指令所需的时钟周期数,不同指令CPI不同,相同指令CPI也可能变化
4、CPU执行时间(运行一个程序花费的时间) =(指令条数×CPI)÷主频
eg:某CPU主频为1000Hz,某程序包含100条指令,平均来看指令的CPI=3,问该程序走该CPU上执行需要多久?
100×3÷1000=0.3s
5、IPS:每秒执行多少条指令 IPS=主频÷平均CPI
KIPS、MIPS——比如:2MIPS,即每秒能执行
条指令
6、FLOPS:每秒执行多少次浮点运算
KFLOPS、MFLOPS、GFLOPS、TFLOPS
7、核数——处理器个数(核心数:八核)
描述频率、速度时:
K=
M=
G=
T=
![]()
4、系统整体性能指标
1、数据通路带宽:数据总线一次所能并行传送信息的位数,各硬件部件通过数据总线传输数据
2、吞吐量:指系统在单位时间内处理请求的数量,主要取决于主存的存储周期
3、响应时间
4、基准程序(动态测试):像鲁大师这种跑分软件,一般情况下,基准测试程序能够反映机器性能的好坏。但由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题
5、主频高的CPU一定比主频低的CPU快吗?为什么?
衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU的好坏。
CPU的主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、 Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象
相关文章:
【计算机组成原理 - 第一章】计算机系统概论(完结)
本章参考王道考研相关课程: 【2021版】1.2.1_计算机硬件的基本组成_哔哩哔哩_bilibili 【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili 【2021版】1.2.3_计算机系统的层次结构_哔哩哔哩_bilibili 【2021版】1.3_计算机的性能指标_哔哩哔哩_bilibili 目录 一、…...
C++类与对象(下)【详析】
类与对象(下) 目录类与对象(下)一、再谈构造函数1.构造函数体赋值2.初始化列表定义:注意点:总结:3.explicit关键字引入:explicit:二、 static成员回顾:static…...
exe反编译为.py文件
介绍公司以前的一个exe包,我们需要查看里面python源码,但是以前的py源码文件找不到,所以只能反编译,介绍一下反编译的过程。首先准备:pyinstxtractor.py这个文件,网上很多,自己下载准备查看二进…...
38 openEuler搭建FTP服务器-FTP总体介绍
文章目录38 openEuler搭建FTP服务器-FTP总体介绍38.1 FTP简介38.2 FTP使用到的端口38.3 vsftpd简介38 openEuler搭建FTP服务器-FTP总体介绍 38.1 FTP简介 FTP(File Transfer Protocol)即文件传输协议,是互联网最早的传输协议之一࿰…...
三天吃透操作系统面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...
vue后台管理系统——添加i18n国际化功能——技能提升
昨天在写后台管理系统时,遇到一个需求就是需要实现国际化功能。 antd和element-ui这两个框架其实都是有国际化的。 具体展示形式就是如下: 点击右上角头部的语言,切换语言,然后整个系统的文字都改变成对应的语言展示。 切换成…...
理清gcc、g++、libc、glibc、libstdc++的关系
0 理清gcc、g++、libc、glibc、libstdc++的关系 0.1 $ dpkg -L libc6 $ dpkg -L libc6 /lib/x86_64-linux-gnu /lib/x86_64-linux-gnu/ld-2.31.so /lib/x86_64-linux-gnu/libBrokenLocale-2.31.so /lib/x86_64-linux-gnu/libSegFault.so /lib/x86_64-linux-gnu/libanl-2.31.s…...
一、快速入门 MongoDB 数据库
文章目录一、NoSQL 是什么1.1 NoSQL 简史1.2 NoSQL 的种类及其特性1.3 NoSQL 特点1.4 NoSQL 的优缺点1.5 NoSQL 与 SQL 数据库的比较二、MongoDB 基础知识2.1 MongoDB 是什么2.2 MongoDB 的体系结构2.3 MongoDB 的特点2.4 MongoDB 键特性2.5 MongoDB 的核心服务和工具2.6 Mongo…...
PMP第一章到第三章重要知识点
第1章引论 1.1指南概述和目的 PMBOK指南收录项目管理知识体系中被普遍认可为“良好实践”的那一部分: “普遍认可”:大多数时候适用于大多数项目,获得一致认可。 “良好实践”:能提高很多项目成功的可能性。 全球项目管理业界…...
【事务与锁】当Transactional遇上synchronized
事务与锁 - Transactional与Synchronize🥰前言问题回放问题一1、代码与结果复现2、原因分析3、解决方法问题二1、问题复现2、原因分析事务Transactional与锁synchronized1、synchronized与Transactional区别2、可能带来的问题3、针对问题二的解决前言 最近工作中遇…...
Pytorch模型转TensorRT步骤
Pytorch模型转TensorRT步骤 yolov5转TRT 流程 当前项目基于yolov5-6.0版本,如果使用其他版本代码请参考 https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5 获取转换项目: git clone https://github.com/wang-xinyu/tensorrtx.git git …...
产品经理入门——必备技能之【产品运营】
文章目录一、基础介绍1.1 用户生命周期 & 产品生命周期1.2 运营的目的1.3 运营的阶段1.4 运营的主要工作(海盗模型)二、AARRR模型2.1 Acquisition 拉新2.2 Activision 促活2.3 Retention 留存2.4 Revenue 转化2.5 Referral 传播总结产品运营技能是产…...
【Java实现文件上传】java后端+vue前端实现文件上传全过程详解(附源码)
【写在前面】其实这篇文章我早就想写了,只是一直被需求开发耽搁,这不晚上刚好下班后有点时间,记录一下。需求是excel表格的上传,这个是很多业务系统不可或缺的功能点,再此也希望您能够读完我这篇文章对文件上传不再困惑…...
什么是SSD?SSD简述
什么是SSD?SSD简述前言一. SSD组成二. SSD存储介质存储介质按材料不同可分为三大类:光学存储介质、半导体存储介质和磁性存储介质三. SSD接口形态固态硬盘有SATA 3.0接口、MSATA接口、M.2接口、PCI-E接口、U.2接口五种类型。三. SSD闪存颗粒分类闪存颗粒…...
MySQL基础------sql指令1.0(查询操作->select)
目录 前言: 单表查询 1.查询当前所在数据库 2.查询整个表数据 3.查询某字段 4.条件查询 5.单行处理函数(聚合函数) 6.查询时给字段取别名 7.模糊查询 8.查询结果去除重复项 9.排序(升序和降序) 10. 分组查询 1…...
Python数据分析处理报告--实训小案例
目录 1、实验一 1.1、题目总览 1.2、代码解析 2、实现二 2.1、题目总览 2.2、代码解析 3、实验三 3.1、题目总览 3.2、代码解析 4、实验四 3.1、题目总览 3.2、代码解析 哈喽~今天学习记录的是数据分析实训小案例。 就用这个案例来好好巩固一下 python 数据分析三…...
OpenCV入门(十二)快速学会OpenCV 11几何变换
OpenCV入门(十二)快速学会OpenCV 11几何变换1.图像平移2.图像旋转3.仿射变换4.图像缩放我们在处理图像时,往往会遇到需要对图像进行几何变换的问题。图像的几何变换是图像处理和图像分析的基础内容之一,不仅提供了产生某些图像的可…...
小菜鸟Python历险记:(第二集)
今天写的文章是记录我从零开始学习Python的全过程。Python基础语法学习:Python中的数值运算一共有7种,分别是加法()、减法(-)、除法(/)得到的结果是一个浮点数、乘法(*&a…...
ContentProvider程序之间数据的相互调用
1权限的获取和调用 权限分为普通权限和危险权限,除了日历信息,电话,通话记录,相机,通讯录,定位,麦克风,电话,传感器,界面识别(Activity-Recognit…...
金三银四最近一次面试,被阿里P8测开虐惨了...
都说金三银四涨薪季,我是着急忙慌的准备简历——5年软件测试经验,可独立测试大型产品项目,熟悉项目测试流程...薪资要求?5年测试经验起码能要个20K吧 我加班肝了一页半简历,投出去一周,面试电话倒是不少&a…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...






