计算机组成原理(1)王道学习笔记
一、 引言
计算机硬件唯一能识别的数据是二进制-----0/1。
用低/高电平表示0/1。
通过很多条电路,可以传递多个二进制数位。
每个二进制数位称为1bit(比特)。
计算机硬件的基本组成
早期的ENIAC计算机是通过手动接线来控制计算。冯·诺依曼首次提出了存储程序的概念。
"存储程序"的概念是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中首地址执行程序中的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
冯·诺依曼计算机
冯·诺依曼计算机的特点:
1.计算机由五大部件组成
2.指令和数据以同等地址存于存储器可按地址寻访。
3.指令和数据用二进制表示。
4.指令由操作码和地址码组成。
5.存储程序
6.以运算器为中心(输入/输出设备与存储器之间的数据传送通过运算器完成)
图片中实线部分表示数据线,虚线部分表示控制线和反馈线。
输入设备将信息转换成及其能识别的形式。
存储器用于存储数据和程序。
运算器进行算术运算和逻辑运算。
控制器指挥程序运行。
在计算机系统中,软件和硬件在逻辑上是等效的。
eg:对于乘法运算,可以设计一个专门的硬件电路实现惩罚运算,也可以用软件的方式,执行多次加法运算来实现。
现代计算机的结构
现代计算机:以存储器为中心。
CPU=运算器+控制器
二、各个硬件的工作原理
主存储器中,用于存放数据的东西叫做存储体。存储体由一系列的存储元件构成。存放二进制0或者1。除了存储体之外,还有两个重要的寄存器MAR和MDR。
MAR:Memory Address Register(存储地址寄存器)
MDR:Memory Data Register(存储数据寄存器)
MAR位数反映存储单元的个数。
数据在存储体内按地址存储。
MDR位数=存储字长
假设 MAR=4位→ 总共有2的四次方个存储单元
MDR=16位→ 每个存储单元可存放16bit,1个字(word)=16bit
运算器的基本组成
运算器:用于实现算术运算(如:加减乘除、逻辑运算(如:与或非))
ACC: 累加器,用于存放操作数,或运算结果。
MQ: 乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
X: 通用的操作数寄存器,用于存放操作数。
ALU: 算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算。
加 | 减 | 乘 | 除 | |
ACC | 被加数、和 | 被减数、差 | 乘积高位 | 被除数、余数 |
MQ | 乘数、乘积低位 | 商 | ||
X | 加数 | 减数 | 被乘数 | 除数 |
控制器的基本组成
CU:控制单元,分析指令,给出控制信号。
IR:指令寄存器,存放当前执行的指令。
PC:程序计数器,存放下一条指令的地址,有自动加1功能。
完成一条指令分为三个阶段 :
1.取指令 PC
2.分析指令 IR
3.执行指令 CU
计算机的工作过程
我们编写高级语言程序,通过编译器将其转换为机器语言。编译器会对高级语言代码进行词法分析、语法分析、语义分析等一系列处理,生成目标机器可执行的指令序列。
指令存储:编译后的机器语言指令以二进制形式存储在外部存储设备(如硬盘)中。当程序运行时,操作系统将这些指令从外部存储设备加载到计算机的主存(内存)中。
主存地址分配:主存由一系列存储单元组成,每个存储单元都有唯一的地址。加载到主存的指令会被分配到特定的主存地址。比如,指令序列可能从主存地址 0x1000 开始依次存放。
取指令:计算机的中央处理器(CPU)中的程序计数器(PC)存储着当前要执行的指令的主存地址。CPU 根据 PC 中的地址,从主存中读取相应的指令到指令寄存器(IR)。例如,若 PC 的值为 0x1000,CPU 就从主存地址 0x1000 处读取指令。
指令译码:存放在指令寄存器中的指令包含操作码和地址码两部分。操作码指明要执行的操作类型,如加法、减法、数据传输等;地址码则指定操作数所在的主存地址或寄存器编号等。指令译码器对操作码进行解析,确定要执行的具体操作。例如,操作码为 0x01 可能表示加法操作。
执行指令:根据指令译码的结果,CPU 执行相应的操作。若为算术运算指令,会从地址码指定的位置获取操作数,在运算器中进行运算;若为数据传输指令,则会在指定的存储单元或寄存器之间传输数据。例如,对于加法指令,CPU 从地址码指定的主存地址或寄存器中取出两个操作数,相加后将结果存放到指定位置。
更新程序计数器:一条指令执行完毕后,程序计数器的值会自动更新,指向下一条要执行的指令的主存地址。通常情况下,程序计数器会增加一个固定的值,该值取决于指令的长度(以字节为单位)。例如,若每条指令长度为 4 字节,程序计数器会在当前值的基础上增加 4,指向下一条指令的地址。
三、计算机系统的多级层次结构
三种级别的语言
机器语言 | 二进制代码 | 0000010000000101 0001000000000110 |
汇编语言 | 助记符 | LOAD 5 MUL 6 |
高级语言 | C/C++、Java | y=a*b+c |
编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)
解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着在翻译下一句(每次执行都要翻译)。
四、计算机性能指标
MAR位数反映存储单元的个数(最多支持多少个)。
MDR位数=存储字长=每个存储单元的大小
总容量=存储单元x存储字长 bit 1Byte = 8bit
=存储单元个数x存储字长/8 Byte
cpu的性能指标
CPU主频:CPU内数字脉冲信号振荡的频率。
1
CPU主频(时钟频率)=—————— 单位:赫兹,Hz
cpu时钟周期
CPI (Clock cycle Per Instruction):执行一条指令所需的时钟周期数
不同的指令,CPI不同,甚至相同的指令,CPI也可能有变化。
执行一条指令的耗时 = CPI x CPU时钟周期
CPU执行时间(整个程序的耗时)=CPU时钟周期/主频=(指令条数*CPI)/主频
IPS( Instructions Per Second ):每秒执行多少条指令(单位:KIPS MIPS)
主频
IPS=——————
平均CPI
FLOPS(Floating-point Operations Per Second): 每秒执行多少次浮点运算
(KFLOPS、MFLOPS、GFLOPS、TFLOPS)
注:此处K、M、G、T为数量单位
K=Kilo=千,M=Million=百万,G=Giga=十亿,T=Tera=万亿
系统整体的性能指标
数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
吞吐量:指系统在单位时间内处理请求的数量。
(它取决于信息能多快的输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。)
响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。
通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。
系统整体的性能指标(动态测试)
基准程序(例如跑分软件)是用来测试计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其他计算机性能进行比较。
问:主频高的CPU一定比主频低的CPU快吗?
答:不一定,如两个CPU,A的主频为2GHz,平均CPI=10;B的主频1GHz,平均CPI=1
相关文章:
计算机组成原理(1)王道学习笔记
一、 引言 计算机硬件唯一能识别的数据是二进制-----0/1。 用低/高电平表示0/1。 通过很多条电路,可以传递多个二进制数位。 每个二进制数位称为1bit(比特)。 计算机硬件的基本组成 早期的ENIAC计算机是通过手动接线来控制计算。冯诺依曼首次…...
LLaMA模型:自然语言处理的革新者
引言 在人工智能的领域中,自然语言处理(NLP)是一个充满挑战的分支,它的目标是让计算机能够理解和生成人类语言。Transformer模型,作为NLP的基石,已经极大地推动了这一领域的发展。然而,为了进一…...
各种特种无人机快速发展,无人机反制技术面临挑战
随着科技的飞速发展,各种特种无人机在军事、民用等领域得到了广泛应用,其性能不断提升,应用场景也日益丰富。然而,无人机反制技术的发展确实面临一定的挑战,难以完全跟上无人机技术的快速发展步伐。以下是对这一问题的…...
1555银行账户概要_pandas解答
目录 题目链接(无_力扣VIP_略过)一.读题(建议使用这种表结构_数据对比看)题目SQL Schema & Pandas Schema 建表语句_数据 二.答案_MySQL一图解MySQL一图解__可只需看此!!!!!!!!!!!!!!!!答案-----------------------------------------------------------------------------…...
【C++补充】第一弹---位图技术揭秘:内存优化与快速访问
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1 位图 1.1 位图相关面试题 1.2 位图的设计及实现 1.3 C库中的位图 bitset 1.4 位图的模拟实现 1.5 位图的优缺点 1.6 位图相关考察题目 1 …...
node.js中实现token的生成与验证
Token(令牌)是一种用于在客户端和服务器之间安全传输信息的加密字符串。在Web开发中,Token常用于身份验证和授权,确保用户能够安全地访问受保护的资源。 作用与意义 身份验证:Token可以用来验证用户的身份࿰…...
服务器登陆后有java变量
需求:在ssh服务器后,用户root 使用java会报错,没有这个变量,其实环境变量中已经有配置了,在/etc/profile 中有写变量及地址,通过source /etc/profile 命令也可以使环境变量加载上,但是ssh后不会…...
层次模型式的工作流
层次模型式的工作流是一种适合分布式版本控制系统(如 Git、Mercurial)的开发协作方式,它将开发团队分成多个层次,每个层次有明确的角色和职责,代码从底层逐步向上层汇总和集成,最终形成一个完整、稳定的产品…...
Linux 发行版介绍与对比:Red Hat、Ubuntu、Kylin、Debian
Linux 操作系统有众多发行版(Distros),每个发行版的设计目标、目标用户、应用场景和使用方式有所不同。常见的 Linux 发行版包括 Red Hat、Ubuntu、Kylin 和 Debian。以下是这些发行版的详细介绍与对比,以及它们的应用场景和使用方…...
G1原理—3.G1是如何提升垃圾回收效率
大纲 1.G1为了提升GC的效率设计了哪些核心机制 2.G1中的记忆集是什么 3.G1中的位图和卡表 4.记忆集和卡表有什么关系 5.RSet记忆集是怎么更新的 6.DCQ机制的底层原理是怎样的 7.DCQS机制及GC线程对DCQ的处理 提升G1垃圾回收器GC效率的黑科技 G1设计了一套TLAB机制 快速…...
IOS界面传值-OC
1、页面跳转 由 ViewController 页面跳转至 NextViewController 页面 (1)ViewController ViewController.h #import <UIKit/UIKit.h>interface ViewController : UIViewControllerend ViewController.m #import "ViewController.h" …...
C# SQL ASP.NET Web
留学生的课程答疑 按照要求完成程序设计、数据库设计、用户手册等相关技术文档; 要求 1. 计算机相关专业,本科以上学历,至少有1年以上工作经验或实习经历。 2. 熟练掌握WinForm程序开发,或ASP.NET Web编程。 3. 熟悉C#中网络…...
asp.net core webapi 并发请求时 怎么保证实时获取的用户信息是此次请求的?
对于并发请求,每个请求会被分配到一个独立的线程或线程池工作线程上。通过 HttpContext 或 AsyncLocal,每个线程都能独立地获取到它自己的上下文数据。由于这些数据是与当前请求相关的,因此在并发请求时不会互相干扰。 在并发请求时…...
软件23种设计模式完整版[附Java版示例代码]
一、什么是设计模式 设计模式是在软件设计中反复出现的问题的通用解决方案。它们是经过多次验证和应用的指导原则,旨在帮助软件开发人员解决特定类型的问题,提高代码的可维护性、可扩展性和重用性。 设计模式是一种抽象化的思维方式,可以帮助开发人员更好地组织和设计他们…...
FPGA 20 ,FPGA按键消抖功能解析与实现
目录 前言 一. 具体场景 二. 消抖方法...
基于单片机的无线气象仪系统设计(论文+源码)
1系统方案设计 如图2.1所示为无线气象仪系统设计框架。系统设计采用STM32单片机作为主控制器,结合DHT11温湿度传感器、光敏传感器、BMP180气压传感器、PR-3000-FS-N01风速传感器实现气象环境的温度、湿度、光照、气压、风速等环境数据的检测,并通过OLED1…...
OA系统如何做好DDOS防护
OA系统如何做好DDOS防护?在数字化办公蔚然成风的当下,OA(办公自动化)系统作为企业内部管理与协作的神经中枢,其安全性和稳定性直接关系到企业的日常运营效率、信息流通效率以及长远发展。OA系统不仅承载着企业内部的日…...
java_单例设计模式
什么是设计模式 什么是单例设计模式 单例设计模式——饿汉式 虽然你没有使用这个对象实例,但是它也帮你创建了!容易造成对象的浪费 對象,通常是重量級的對象, 餓漢式可能造成創建了對象,但是沒有使用. package com.hspedu.singl…...
比较分析:Windsurf、Cody、Cline、Roo Cline、Copilot 和 通义灵码
随着人工智能技术的快速发展,开发者工具变得越来越智能化,特别是在代码生成、辅助编程等领域,市面上涌现了多种 AI 驱动的工具。本文将从开源性、集成能力、功能覆盖范围、支持的编程语言、生态兼容性、成本、学习曲线、响应速度、离线支持以…...
vue3后台系统动态路由实现
动态路由的流程:用户登录之后拿到用户信息和token,再去请求后端给的动态路由表,前端处理路由格式为vue路由格式。 1)拿到用户信息里面的角色之后再去请求路由表,返回的路由为tree格式 后端返回路由如下: …...
C#版 软件开发6大原则与23种设计模式
开发原则和设计模式一直是软件开发中的圣经, 但是这仅仅适用于中大型的项目开发, 在小型项目的开发中, 这些规则会降低你的开发效率, 使你的工程变得繁杂. 所以只有适合你的才是最好的. 设计模式六大原则1. 单一职责原则(Single Responsibility Principle࿰…...
后端Java开发:第十三天
第十三天:继承 - 面向对象的核心概念 欢迎来到第十三天的学习!今天,我们将深入探讨 Java 中的 继承(Inheritance),这是面向对象编程的四大基本特性之一。继承是指一个类(子类)通过继…...
awr报告无法生成:常见分析手段
awr报告无法生成:常见分析手段 STATISTICS_LEVEL和OPEN_MODEAWR快照是否能自动生成?AWR快照能否手动生成?日志有无ORA-12751或ORA-32701报错?MMON进程是否被挂起?排查数据库隐藏参数分析快照生成错误信息分析AWR Snapshot Tracing分析AWR Table Flush是否超时STATISTICS_L…...
基础算法——差分
原理与特点 先回顾一下前缀和算法。 | arr | 1 | 3 | 7 | 5 | 6 | | ---------- | ------ | ------ | ------ | ------ | ------ | | prefix 值 | 101 | 134 | 13711 | 137516 | 1375622 |前缀和的特点是前面的相加prefix(i)sum(i-1)arr(i)。那么差分数组diff就如下面的形式 |…...
[ LeetCode 75 ] 283 移动零(JavaScript)
283 移动零 题目描述解题思路步骤解析时间和空间复杂度代码实现 题目描述 LeetCode 283 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操…...
YOLOv10改进,YOLOv10添加HAttention注意机制用于图像修复的混合注意力转换器,CVPR2023,超分辨率重建
摘要 基于Transformer的方法在低层视觉任务中表现出色,例如图像超分辨率。然而,作者通过归因分析发现,这些网络只能利用有限的空间范围的输入信息。这意味着现有网络尚未充分发挥Transformer的潜力。为了激活更多的输入像素以获得更好的重建效果,作者提出了一种新型的混合…...
VS调试MFC进入系统源代码配置
调试MFC代码有时候能进入MFC的源代码,有时候不能.之前一直没有深入研究.后面经过查资料发现每次调试必能进入源代码的配置.很简单,只需要3步. 1.打开工具->选项->调试->符号,勾选Microsoft符号服务器. 2.打开项目->属性->配置属性->常规,MFC的使用修改成&qu…...
C# 告别FirstOrDefault
一、开篇:FirstOrDefault 的 “江湖地位” 在 C# 编程的世界里,FirstOrDefault 可谓是一位 “常客”,被广大开发者频繁地运用在各种项目场景之中。无论是 Windows 窗体应用程序,需要从数据集中检索第一条记录,或是满足…...
图像处理|腐蚀操作
在计算机视觉与图像处理中,腐蚀操作(Erosion)是形态学操作的一种。形态学操作广泛应用于二值图像中,主要用于分析和提取图像中的结构信息。腐蚀操作是这类操作中最常见的一种,用来对图像进行“收缩”处理,消…...
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(应用)
实战训练1—报数游戏 问题描述: 小明和小鹏玩报数游戏,小明按1∼20 报数,小鹏按1∼30报数。若两人同时开始,并以同样的速度报数,当两人都报了1000个数时,同时报相同数的次数是多少呢? 输入格…...
140.WEB渗透测试-信息收集-小程序、app(11)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:139.WEB渗透测试-信息收集-小程序、app(10) 3.直接有app 直接拿…...
《新闻大厦抢先版》V0.18.105+Dlcs官方学习版
《新闻大厦抢先版》官方版https://pan.xunlei.com/s/VODaeUn3v-ZWVvvmUMfo5AqWA1?pwdnhpz# 建造并不断优化新闻大楼,保障员工权益并及时赶上周日的印刷交期! 招募并管理不同职业以登上成功的阶梯:记者、摄像师、勤杂工,除此以外…...
【Uniapp-Vue3】Prop校验与prop默认值用法及循环遍历数组对象
一、prop校验 如果我们在想要限制prop的类型,就可以在接收prop的时候对接收类型进行限制: defineProps({ 属性名:{ type:类型 } }) 需要注意类型的首字母大写 但是设置了传入参数类型限制并不能严格限制,只会在后台进行提示: 二、…...
Android Studio创建新项目并引入第三方jar、aar库驱动NFC读写器读写IC卡
本示例使用设备:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bbW3AUC&ftt&id615391857885 一、打开Android Studio,点击 File> New>New project 菜单,选择 要创建的项目模版,点击 Next 二、输入项目名称…...
Spring Boot | 基于MinIO实现文件上传和下载
关注:CodingTechWork 介绍 在现代的 web 应用中,文件上传和下载是常见的需求。MinIO 是一个开源的高性能分布式对象存储服务,可以用来存储和管理大量的非结构化数据,如图片、视频、日志文件等。本文将介绍如何在 Spring Boot 应用…...
【DNS 阿里云,域名解析,解析到IP的指定端口】
- 进入 阿里云域名解析界面 - 点击 解析设置 - 添加记录 1.添加一条 A/AAAA 类型解析你的服务器的IP地址(不需要带端口号,这条解析只是起到中转作用) 示例:主机记录:aa.bb.com 记录值:xxx.xxx.xxx.xxx (…...
力扣经典二分题:4. 寻找两个正序数组的中位数
题目链接:4. 寻找两个正序数组的中位数 - 力扣(LeetCode) 一、题目分析 这道题目是让我们在 两个正序的数组中寻找中位数已知两个数组的大小分别是:int m nums1.size(),n nums2.size();中位数性质1:中位数左侧元素 …...
Java Web开发进阶——Spring Boot与Spring Data JPA
Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架,它简化了 JPA 的实现,为开发者提供了一种快速操作数据库的方式。在结合 Spring Boot 使用时,开发者能够快速完成数据库访问层的开发。 1. 介绍Spring Data JPA 1.1 什么是Spr…...
PySpark用sort-merge join解决数据倾斜的完整案例
假设有两个大表 table1 和 table2 ,并通过 sort-merge join 来解决可能的数据倾斜问题。 from pyspark.sql import SparkSession from pyspark.sql.functions import col# 初始化SparkSession spark SparkSession.builder.appName("SortMergeJoinExample&quo…...
【2025 Rust学习 --- 11 实用工具特型01】
清理特型Drop 当一个值的拥有者消失时,Rust 会丢弃(drop)该值。丢弃一个值就必须释放 该值拥有的任何其他值、堆存储和系统资源。 丢弃可能发生在多种情况下: 当变量超出作用域时;在表达式语句的末尾;当…...
关于Linux PAM模块下的pam_listfile
讲《Linux下禁止root远程登录访问》故事的时候,说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。 下面这些就好比人物的简介,甚是恼人;让人看得不明就里,反正“他大舅他二舅都是他舅”。可以直接跳…...
根据中文名称首字母进行分组
很多项目中,需要用到中文名称到首字母进行分组,例如:城市、游戏等等。。。 /*** 将集合数据按照汉字首字母分组排序** param list* return*/public Map<String, Object> screenManufacturer(List<Game> list) {Set<String>…...
springboot 集成 etcd
springboot 集成 etcd 往期内容 ETCD 简介docker部署ETCD 前言 好久不见各位小伙伴们,上两期内容中,我们对于分布式kv存储中间件有了简单的认识,完成了docker-compose 部署etcd集群以及可视化工具 etcd Keeper,既然有了认识&a…...
人工智能-数据分析及特征提取思路
1、概况 基于学生行为数据预测是否涉黄、涉黑等。 2.数据分析 数据分析的意义包括得到数据得直觉、发掘潜在的结构、提取重要的变量、删除异常值、检验潜在的假设和建立初步的模型。 2.1数据质量分析 2.1.1数据值分析 查看数据类型: 首先明确各字段的数据类型…...
设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析
状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态改变时改变其行为,使得对象看起来好像修改了它的类。这种设计模式的核心思想是将对象的状态和行为封装成不同的状态类,通过状态对象的行为改变来避免…...
Android 系统签名 keytool-importkeypair
要在 Android 项目中使用系统签名并将 APK 打包时与项目一起打包,可以按照以下步骤操作: 步骤 1:准备系统签名文件 从 Android 系统源码中获取系统签名文件,通常位于 build/target/product/security 目录下,包括 pla…...
ubuntu22.04 gcc,g++从10.5切换到低版本9.5
一、安装gcc-9.5 mkdir gcc cd gcc sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends gcc-9 | grep -v i386 | grep "^\w") sudo dpkg -i *.deb sudo…...
Microsoft 已经弃用了 <experimental/filesystem> 头文件
#define _CRT_SECURE_NO_WARNINGS 1 #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING 1 //Microsoft 已经弃用了 <experimental / filesystem> 头文件,并计划在将来移除它。取而代之的是 C17 标准引入的 //<filesystem> 头文件…...
git 提交命令记录
1.已有本地和远程仓库 查看仓库远程地址: git remote -v 大量提交 git add . git commit -m "提交说明" git push 之后输入用户名密码 删除文件 git rm 文件名 替代git add 后面一样 2.全新提交 新建远程仓库 git init touch README.md git add . …...
Unity + Firebase + GoogleSignIn 导入问题
我目前使用 Unity版本:2021.3.33f1 JDK版本为:1.8 Gradle 版本为:6.1.1 Firebase 版本: 9.6.0 Google Sign In 版本为: 1.0.1 问题1 :手机点击登录报错 apk转化成zip,解压,看到/lib/armeabi-v…...