学习机组过程中的疑难问题与解决 -----(1)

news2025/1/10 23:57:32

本文章是在学习计算机组成原理过程中个人感觉需要理解与记忆的问题,还有一些在学习过程中自己产生的疑问以及解答,本文章可能排版不良,精力有限,还请见谅

第一章:

(1)MAR的位数对应着存储单元的个数,这是为什么那?

因为:

存储体是由多个存储单元构成,存储单元是由多个存储元构成(在地址进行寻址过程中“+1”是+的一个存储单元比如(程序计数器pc中的+1))而且MAR是地址寄存器。

MAR是10位的话   则有2^{10}个存储单元

(2)地址总线的条 数与内存单元的个数有关与MAR位数相同

(3)数据总线与存储字长相同 ,与MDR位数也相同 

(4)MDR是数据寄存器,存储的是一个存储单元内的数据,所以位数与存储单元中存储元件(bit)的个数相同

(5)pc的位数与主存的容量相关

因为  主存容量=存储单元的个数*存储字长

(6)在存储中的时候k,m,g是以2的幂次

          在速度与频率中是以10为幂次(且在本场景下为k(小k))

第二章:

 (1)机器存储的机器数

整数原码:

纯小数原码:

  

(2)0的原码有两种表示方式(+0,-0)

(3)在机器字长为n位时,补码可表示的最小负整数时-2^{n-1}

因为:

在n位二进制补码表示法中,最高位是符号位,0表示正数,1表示负数。因此,在n位补码表示法中,对于有符号整数,最小的负数是将符号位设为1,其他各位设为0,即100...00100...00,其值为-2^{n-1}

(个人理解   正数的最大数值是2^{n-1}-1 ,负数的范围比正数大1,所以复数的最小数为-2^{n-1}  而且补码与它绝对值的原码相同, 因为补码0只有一种表示方式)

(4)-8的补码为什么是1000  

-8的补码是1000,因为在计算机中,负数通常使用补码来表示。

首先,我们需要了解补码的定义。正整数的补码与其二进制原码相同,而负整数的补码是将其对应的正整数的补码取反后再加1。

对于-8这个负整数,它的绝对值的二进制原码是 1000,其中最高位的1表示符号(0表示正数,1表示负数)。现在要求-8的补码,我们需要先将其绝对值的二进制原码取反得到 0111,然后加上1得到 1000,即为-8的补码。

因此,-8的补码是 1000

 

 (5)移码是对真值的操作,给真值加一个偏移量为2^{n}  机器字长为(n+1)

移位操作:

加减法的四大标志位:

OF:为什么最高位的进位异或次高位的进位 表示溢出?

溢出只有两种情况(只对有符号数有效)

(1)正数+正数=符号位为1的数

(2)负数+负数=符号位为0的数

情况(1):当正数加正数时 两数的最高位都为0 则最高位进位为0  如果次高位进位为1 则结果为1(负数),发生溢出   此时异或结果为1

情况(2):当两个负数相加的时候,两数的最高位都为1   则最高位的进位必为1  如果次高位进位为0,则最终结果为0 (正数),发生溢出,此时异或结果为1】

SF:判断有符号数的正负性,对无符号数没有意义

SF:0   正数

SF:1   负数

ZF:表示结果是否为0

ZF:  1 结果为0    

ZF:0 结果不为0

CF:是表示无符号数在进行加减法的过程中是否发生进位或者借位(加法是进位,减法是借位)

CF=最高位产生的进位   异或  sub(加减法控制器)  

CF:1  表示进位或者借位

CF:0  表示不发生进位或者借位

原码加减交替法最后余数的处理:

在学习原码出发的时候,学到加减交替法,到最后产生了疑惑。

那就是最后的余数的处理。它的符号到底与什么有关?

后来发现原码的加减交替法是数值位与符号位分开处理的,则在数值计算的过程中,商和余数的符号位一定为0 ,最后根据除数与被除数的符号确定商与余数的符号。(最后的余数如果为负,则需要商0并且加上[|y|]的补码)最后一次不需要移位(为什么说i它最后一位不需要进行移位那  因为不恢复余数法的思想就是2*a+b直接进行下次运算   最后的结果是不需要移位的)

在最后结果,余数与被除数符号一致

n位数值位,则可能加减n+1次或者n+2次   移位n次   

补码加减交替法总结:

补码的加减交替法是带符号位进行运算,最后的商与余数也是补码

执行加或减是根据除数与被除数的符号进行判断的:
同号进行减操作,异号执行加操作

余数与除数的符号来判断商1还是0:

同号:商1,左移减去除数

异号:商0,左移加上除数

商的末尾一定商1  不用进行矫正

原码加减交替法与补码加减交替法对比:

在判断数值是否溢出的时候引入双符号位

01:表示正溢出:两个正数相加,得到的结果超出最大正范围

10:表示负溢出:两个负数相加,得到的结果超出最小负范围

浮点数的表示与计算:

 浮点数的规格化:

左规格化:当尾数的最高数值位不是有效位,则左规,进行消0处理(对应的阶码减一),左规可以进行多次

右规格化:当尾数有效位进到小数点之前的时候,将尾数进行右规格化(右移一位),只需进行一次

在规格化过程中,常用的是IEEE754标准,

在IEEE754标准中会用到移码,对移码中的偏移值产生了疑问?

偏移值定义了在移码中的正零点的位置,偏置值是一个固定的整数,用于表示移码中的零点,常用的偏置值为2^{n-1}-1

eg:
在一字节(5bite)的移码表示中,偏置值为127。这意味着表示值为0的移码将是01111111(即2^7 - 1),而表示正整数的移码将从10000000到11111111,负整数则从00000000到01111111。 

机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常与ALU直接相关)

存储字长:一个存储单元中的二进制代码的位数(通常和MDR位数相同)

也就是存储字长的位数代表一个存储单元可以可以表示数据的上下限

10000---

M与MB 的区别

1m字表示1000000个字

1mb表示2的20次方的B

存储系统:

cache命中率问题:

cache(高速缓冲存储器)中的数据就是主存的一个子集,CPU访问存储器时会先访问cache,如果cache没有找到需要的数据,就会去主存找,于是引入cache命中率,用来描述在cache完成存取的占比,我们希望数据都可以在cache直接找到,所以这个命中率越接近1越好。

 Nc:在命中过程中cache命中的次数
 Nm:在命中过程中主存完成存取的次数

 h:表示命中率

 ta:表示平均存取时间

 tc:表示命中花费的时间

 tm:表示在主存中存取花费的时间

计算地址线和数据线的个数:

存储容量: 存储容量是主存中能存放二进制代码的总位数,即存储容量=存储单元个数×存储字长(每个存储单元的位数),也可用字节总数来表示: 存储容量=存储单元个数*存储字长/8

地址线: 存储单元的个数=2^地址线的条数   (地址线是用来传输地址信息用的

数据线: 数据线确定存储字长,数据线的条数=字长的位数。(相当于一次计算所能传输的最大位数(计算机的位数)

eg:

某计算机字长为32位,其存储容量为16M×32位,它的地址线和数据线的总和是?

先进行转换单位为字节Byte

16m=16*1 024(2的10次方)=16777216(B)

32bit=4Byte

数据容量=16777216*4=67108864(64M  B=2的26次方)

所以:数据线32条 地址线26条(因为相当于需要26位  每位接一个地址线)

DRAM一次完整的刷新过程需要占用几个存储周期

DRAM的一次完整刷新过程通常需要占用一个存储周期。具体来说,DRAM需要在其存储单元之间循环刷新,并检查每个存储单元的电荷状态以确保它们不会漏电。这个刷新周期通常是以毫秒为单位的,但是它通常会被分成许多小的操作,每个操作需要一个存储周期来完成。因此,可以说DRAM的一次完整刷新过程需要占用一个存储周期。
在408考试中交叉编址方式就是低位交叉

 

计算机指令地址并不是物理地址(内存地址)而是逻辑地址(外存地址),执行指令的时候通过硬件将指令中的逻辑地址转换成主存的物理地址

指令系统:

   

汇编条件转移:

存放在暂存寄存器中的数据为什么存放在通用寄存器中数据会被破坏?

存放在暂存寄存器中的数据是为了临时保存,以便进行后续的操作。通用寄存器是CPU中的一种存储设备,用于存储指令执行过程中需要使用或修改的数据。由于通用寄存器的空间有限,不能同时存放多个数据,因此在不同操作之间必须清空寄存器中的数据。如果在存放在通用寄存器中的数据上直接进行修改而没有保存原始数据,则原始数据会被破坏。

另外,暂存寄存器和通用寄存器的设计目的也不同。暂存寄存器通常用于缓冲输入/输出数据、辅助CPU处理数据等,它们的容量比通用寄存器大,但速度较慢。通用寄存器则专门用于CPU执行指令时的数据存储,容量一般比暂存寄存器小,但速度更快。因此,为了保证CPU指令的正确性和高效性,暂存寄存器和通用寄存器各自扮演不同的角色,在不同的场景下发挥作用。

机器周期通常由存取周期来决定

指令字长一般都取存储字长的整数倍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/680328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端三剑客简介

文章目录 css的导入方式CSS选择器 JavascriptJavascript的引入方式输出语句变量数据类型javascript对象String对象 BOM对象DOM对象 W3C标准:网页主要由三部分组成 结构:html表现:css,层叠样式表行为:JavaScript css的…

VulnHub项目:Nagini

1、靶机地址: HarryPotter: Nagini ~ VulnHub 本篇为哈利波特死亡圣器系列的第二部,该靶机中存在3个魂器,依次找到它们,摧毁它们! 2、渗透过程 首先收集靶机ip和确定攻击机ip,同时探测靶机开放端口 存在…

一个简单案例理解为什么在多线程的应用中要使用互斥锁

需求:使用10个线程,同时对一个值count进行加一操作,每个线程对count加100000次,最终使得count1000000 第一版代码:不加锁 ​​​lock.c #include<stdio.h> #include<pthread.h>#define THREAD_COUNT 10void *thread_callback(void *arg){int *pcount(int*)arg;in…

Unity例子——第一人称视角的角色控制器

本文是为了前文Unity四元组的举例示范&#xff0c;为了让读者更好地理解。 效果是实现一个可以由鼠标进行方向操作&#xff0c;键盘进行移动操作的任务。 此为效果视频&#xff1a; 1687597097844 下面进行教学&#xff1a; 一、搭建简单场景 新建一个场景&#xff0c;放置一…

SonarQube(sonar-scanner)+GitLab(gitlab-runner)实现提交代码自动扫描项目代码

安装gitlab-runner 插件挂载目录 mkdir -p /data/gitlab-runner/configdocker run -d --name gitlab-runner \ -v /data/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ --restart always \ --privilegedtrue \ gitlab/gitlab-r…

【数据库必备知识】索引和事务

数据库系列文章 1. 零基础带你快速上手SQL语言2. 玩转表及其数据3. 上手表设计 4. 索引和事务 目录 &#x1f4d6;前言 1. 索引 1.1 索引的概念 1.2 索引的作用 1.3 索引的使用场景 1.4 索引的使用 1.5 索引背后的数据结构(B树) 2. 事务 2.1 事务的概念 2.2 数据库使…

Centos7安装Python3.10

Centos7用yum安装的Python3版本比较旧&#xff0c;想要安装最新版本的Python3需要自己动手编译安装。下面就来讲讲安装步骤&#xff0c;主要分为这么几个步骤&#xff0c;依赖→下载→编译→配置。另外所有操作都是在root用户下进行。 依赖 编译Python源码需要依赖许多库&…

spring.cache 随笔0 集成设计

0. 最近感觉 “困意驱动睡眠” 也有他的意义 spring cache学习&#xff08;一&#xff09;&#xff1a;spring cache注解简单了解 Java Caching JSR107介绍 同样&#xff0c;本章也会简单的集成redisson作为缓存服务 1. 从我们自己写的javaConfig开始吧 Configuration // 这…

Java——文件操作

文件操作 1、File类概述2、File类的常用APIFile类的判断文件类型、获取文件信息功能创建文件、删除文件功能遍历文件夹文件搜索 3、字符集常见字符集字符集的编码、解码操作 4、IO流分类5、字节流的使用文件字节输入流文件字节输出流文件拷贝 6、字符类的使用文件字符输入流文件…

“前端已死”

一、一些迹象 逛社区&#xff0c;偶然看到了这张图片&#xff1a; 嗯……我眉头一皱&#xff0c;久久不语&#xff0c;心想&#xff0c;有这么夸张吗&#xff0c;假的吧&#xff1f; 突然想到&#xff0c;最近我在社区发了个前端招聘的信息&#xff0c;结果简历漫天纷飞&…

【C++】auto_ptr为何被唾弃?以及其他智能指针的学习

搭配异常可以让异常的代码更简洁 文章目录 智能指针 内存泄漏的危害 1.auto_ptr(非常不建议使用) 2.unique_ptr 3.shared_ptr 4.weak_ptr总结 智能指针 C中为什么会需要智能指针呢&#xff1f;下面我们看一下样例&#xff1a; int div() {int a, b;cin >&g…

图表制作办公首选--实用图表工具Echars

实用图表工具Echars 前言 由于工作的需要&#xff0c;在写材料的时候需要使用到柱状图、饼状图、折线图等等展示数据&#xff0c;可以使用PPT等办公软件构建出图表&#xff0c;在这里可以使用更加方便、更加美观的工具Echars。 Echars图表使用 Echars官网&#xff1a;Ecahr…

二叉平衡树之红黑树

目录 1.概念 2.性质 3.节点的定义 4.插入 1.按照二叉搜索树规则插入结点 2.调整颜色 1.uncle存在且为红色 2.uncle不存在或者为黑 cur为 3.根节点改为黑色 5.验证 6.比较 7.应用 1.概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存…

【计算机网络】计算机网络期末自测题(一)

目录 一、 填空题&#xff1a;(20 分&#xff0c;每空 1 分) 二、 选择题(20 分&#xff0c;每小题 1 分) 三、不定项选择题 (10 分&#xff0c;每小题 1 分) 四、名词解释 (15 分&#xff0c;每小题 3 分) 五、简答题 (25 分) 得分 一、 填空题&#xff1a;(20 分&#xff…

【C++】STL——string类详解

&#x1f680; 作者简介&#xff1a;一名在后端领域学习&#xff0c;并渴望能够学有所成的追梦人。 &#x1f681; 个人主页&#xff1a;不 良 &#x1f525; 系列专栏&#xff1a;&#x1f6f8;C &#x1f6f9;Linux &#x1f4d5; 学习格言&#xff1a;博观而约取&#xff0…

混合策略改进的哈里斯鹰优化算法-附代码

混合策略改进的哈里斯鹰优化算法 文章目录 混合策略改进的哈里斯鹰优化算法1.哈里斯鹰优化算法2.改进哈里斯鹰优化算法2.1 初始化种群的改进2.1.1 初始种群多样化2.1.2 初始种群精英化 2.2 逃逸能量递减机制的改进2.4 拉普拉斯交叉算子策略 3.实验结果4.参考文献5.Matlab代码6.…

6.17 、Java初级:锁

1 同步锁 1.1 前言 经过前面多线程编程的学习,我们遇到了线程安全的相关问题,比如多线程售票情景下的超卖/重卖现象. 上节笔记点这里-进程与线程笔记 我们如何判断程序有没有可能出现线程安全问题,主要有以下三个条件: 在多线程程序中 有共享数据 多条语句操作共享数据 多…

移动web-渐变

渐变 使用场景&#xff1a;使用background-image属性实现渐变背景效果 代码&#xff1a;background-image: linear-gradient(参数1,参数2,参数3...); (默认的方位从上到下) 参数1 方位名词: to right, to left 角度deg: 直接写度数 参数2 颜色1 参数3 颜色2... 注意&#xff…

看完这篇 教你玩转渗透测试靶机vulnhub—Corrosion:1

Vulnhub靶机Corrosion:1渗透测试详解 Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a; Vulnhub靶机渗透总结&#xff1a; Vulnhub靶机介绍&#xff1a; vulnhub是个提…

canvas详解01-绘制基本图形

既然我们已经设置了 canvas 环境&#xff0c;我们可以深入了解如何在 canvas 上绘制。到本文的最后&#xff0c;你将学会如何绘制矩形&#xff0c;三角形&#xff0c;直线&#xff0c;圆弧和曲线&#xff0c;变得熟悉这些基本的形状。绘制物体到 Canvas 前&#xff0c;需掌握路…