2023计算机组成原理复习【1-4】

news2024/12/23 14:41:31

第一章 计算机系统概述

1.计算机语言的分类:高级语言,低级语言(汇编语言与机器语言)。P8

  • 高级语言是人类可读写的编程语言。低级语言包括汇编语言和机器语言两种。汇编语言是一种直接使用符号代替计算机指令的语言,便于程序员编写交互式代码。机器语言则是计算机可以直接执行的二进制指令,它不需要编译器或解释器来将代码翻译成计算机能够理解的格式。低级语言相对于高级语言而言,具有更高的运行效率和底层控制能力,但是编写难度较大且可读性不好,通常用于特定场景下的编程需求。
  • ISA(指令集体系结构):软件和硬件之间接口,简称体系结构;ISA规定的内容有哪些?具体实现的组织称微体系结构,简称微架构。
    • ISA规定的内容:1. 指令集:定义CPU所能够支持的指令集合,例如x86、ARM、MIPS等。2. 寄存器:定义CPU中的通用寄存器、特殊寄存器、状态寄存器等寄存器类型及其功能。3 . 内存系统结构:定义内存访问方式、地址线宽度、字节顺序等。4. I/O系统结构:定义输入输出系统架构、控制器等。
  • ISA和微架构是两个不同层面上概念,微架构是软件不可感知部分。P9
    • 指令集体系结构是指软件能感知到的部分,也称软件可见部分。相同的ISA可以有不同的微体系结构,微体系结构由逻辑电路实现。

2.冯·诺依曼原理的内容理解;冯·诺依曼结构计算机中数据采用二进制编码表示,冯·诺依曼计算机中,CPU如何区分取出的二进制流是指令还是数据?P14

  • 冯·诺依曼原理指的是计算机应该采用存储程序的方式,即将指令和数据存储在同一块存储器中,并按地址区分,使得指令可以像数据一样被读取和处理。
  • 时间来说:取指令事件发生在“取指周期”;取数据事件发生在“执行周期”;从空间来说:取出的二进制代码是指令,一定送往指令寄存器(控制器);取出的二进制代码是数据,一定送往数据寄存器(运算器)。

3. 计算机系统性能评价,学会计算:CPI,用户CPU时间,P17- P18

  • CPI = CPU时钟周期数 ÷ 执行的指令条数
  • 用户CPU时间是指用户程序在CPU上消耗的时间,也可以理解为用户程序执行的时间。它是衡量计算机性能的另一个重要指标。用户CPU时间越短,表示用户程序的执行效率越高。
    计算公式如下:
    用户CPU时间 = 执行的指令条数 × CPI × 时钟周期(主频的倒数)

第二章 数据的机器级表示

1.浮点数尾数的规格化:尾数如果采用原码,规格化尾数必定是±0.1****格式。浮点数所能表示的范围和精度分别取决于阶码与尾数。

2.IEEE-754单精度、双精度浮点数格式,能够根据给出的真实值能求出IEEE格式的浮点数。
在这里插入图片描述
在这里插入图片描述

十进制数0.3125转换为IEEE-754单精度浮点数。


答案:将0.3125表示为二进制数为0.0101,对其规范化后变为1.01 x 2^-2。因此,阶码为-2+127=125,二进制表示为01111101。尾数为01000000000000000000000,因此IEEE格式的单精度浮点数为0 01111101 01000000000000000000000。

3.大端方式和小端方式,学会按字节编址的存储空间里如何存储数据。

大端方式是指高字节存储在内存低地址,而小端方式是指高字节存储在内存高地址

以16位整数0x1234为例:

  • 在大端方式中,0x12存储在低地址,0x34存储在高地址。
  • 在小端方式中,0x12存储在高地址,0x34存储在低地址。

大端正常顺序(平常上课见到的那种顺序),小端是大端的逆序

第三章 运算方法和运算部件

1.C语言,包括位扩展及位截断。P53

  • 位扩展是将变量的最高位复制到所有较高的位上,从而保持变量的符号不变。例如,在将8位整数转换成16位整数时,将原来的最高位(即符号位)复制到剩余的8位中,以保持变量的符号值不变。(无符号数就拓展0)
  • 位截断是指将变量的某些位设置为0,从而实现对变量的位精度的控制。例如,在将16位整数转换成8位整数时,需要将变量的高8位截断,只保留低8位的值。

2.ALU干啥的? ALU的核心是加法器。

ALU是专门的算术逻辑部件,用来完成基本逻辑运算和定点数加减运算。

3.结合习题,学会定点数一位乘法(原码一位乘法、补码一位乘法[布斯公式],掌握步骤及特点)。(以例题、习题复习)
另外注意:补码的乘法不具备[X×Y]补=[X]补×[Y]补的性质。

原码一位乘法:1101 × 1011
在这里插入图片描述
关于最后什么时候停止——直到原来的乘数所有位都被丢弃为止

补码一位乘法x=0.1101, y=-0.1011

关于什么时候停止运算——当乘数所有位数都参与完比较后(最后要右移),最后结果低4位不包含原来乘数的位数

4.浮点数的加减法、乘法除法运算步骤(特别注意尾数规格化),结合习题,学会计算。
例如采用IEEE-754扩展的浮点数格式(例如8位浮点数包含1位符号位,4位阶码和3位尾数,阶码的偏置为7),实现浮点数相乘过程。

浮点数加减法(用补码表示)
更早的应该是先将给出的十进制数转为二进制数(IEEE规格化——1.xxx),然后再转成浮点数
(1)对阶:采用小阶向大阶看齐的方法,实现对阶(尾数要移动相应的对阶数
(2)尾数相加减:尾数进行相加减,并保留正确的长度。(正常加减)
(3)规格化
(3)舍入:将结果舍入为对应精度的数值,如四舍五入。
(4)溢出判断:如果加减后的结果超出了该浮点数所能表示的范围,发生了溢出,需要进行错误处理。

在这里插入图片描述

规格化后应该是——1.xxx

在这里插入图片描述

  1. 尾数相乘(原码乘法)、阶码相加(减)
  2. 尾数规格化
  3. 尾数舍入处理
  4. 阶码溢出判断

习题参考部分:见作业参考答案。

原码、补码加减乘除法

在这里插入图片描述

答案

在这里插入图片描述

浮点数加减乘除

在这里插入图片描述
答案
在这里插入图片描述
注意尾数相加处——先用原码相加,如果没有进位则为减数的符号,有进位是被减数的符号(其实,也可以直接根据十进制看正负)。如果符号是负的,还要再用补码进行表示。可以自己算算这里的尾数相加
在这里插入图片描述

第四章 指令系统

1.指令操作码编码:固定长度操作码,扩展操作码。 例如习题6。

一条指令的格式:
| 操作码 | 地址码A1 | 地址码A2 | 地址码A3 |
指令的长度是固定的,题设会给,一般是16字节,地址码长度一般也会给
1.固定操作码编码
指令的操作码部分采用固定长度编码
2.扩展操作码编码
2.1 等长扩展法
2.2 不等长扩展法
在这里插入图片描述

2.指令系统中采用不同灵活的寻址方式,使用尽量短的地址码访问尽可能大的寻址空间。例如变址寻址的目标地址计算、相对寻址方式的计算。

变址寻址:PC+偏移量
相对寻址:寄存器内容+偏移量

3.CISC与RISC的主要特点(尤其RISC特点,选择题角度出发,理解含义就可)。

CISC:

  • 采用复杂指令集,指令长度不固定,有多种寻址方式和操作类型。
  • 拥有大量的指令集和复杂的指令编码方式,可以完成高级操作并减少代码长度。
  • 硬件资源相对较多,能够充分利用硬件实现各种复杂的指令。
  • 对编译器和开发人员的要求较低,直接翻译高级语言到汇编语言即可。
  • 适合于数据密集型应用,如数据库、图像处理等。

RISC:

  • 采用精简指令集,指令长度固定,只支持简单的寻址方式和操作类型。
  • 指令集数量较少,每个指令执行的操作也比较简单,可以提高指令执行速度和效率。
  • 硬件资源相对较少,采用流水线处理等技术来加速指令执行。
  • 对编译器和开发人员的要求较高,需要更多的工作来优化代码。
  • 适合于计算密集型应用,如数据挖掘、模拟仿真等。
  • 计算机执行程序所需要的时间P= I×CPI×T 其中I是指令数,CPI是执行每条指令所需的平均周期数,T时钟周期。单周期CPU:CPI=1,还有流水线CPU,而超标量流水CPU<1。
  • 1 s ( 秒 ) = 1 0 3 m s ( 毫秒 ) = 1 0 6 μ s ( 微秒 ) = 1 0 9 n s ( 纳秒 ) 1s(秒)=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒) 1s()=103ms(毫秒)=106μs(微秒)=109ns(纳秒)
  • 频率在数学表达式中用“f”表示,其相应的单位有:Hz(赫)、kHz(千赫)、MHz(兆赫)、GHz(吉赫)。其中1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz。

4.结合习题,学会C高级语言的MIPS机器代码表示,注意MIPS寄存器的使用约定。注意MIPS汇编语句的执行过程,例如算术移位、逻辑移位

算术移位——带符号
逻辑移位——不带符号

习题参考部分:见作业参考答案。

相对寻址

假定某计算机中有一条转移指令,采用相对寻址方式,共占两个字节,第一字节是操作码,第二字节是相对位移量(用补码表示),CPU每次从内存只能取一个字节。假设执行到某转移指令时PC的内容为200,执行该转移指令后要求转移到100开始的一段程序执行,则该转移指令第二字节的内容应该是多少
在这里插入图片描述
注意取完操作码之后计算,所以是202
用补码表示

变址寻址

在这里插入图片描述
在这里插入图片描述
注意(1)这里的12是指十进制要转成十六进制

相对寻址和变址寻址都是计算完之后就是有效地址,里面的内容就是操作数

指令操作码编码:固定长度操作码,扩展操作码

在这里插入图片描述
注意:定长指令字格式≠定长操作码
在这里插入图片描述
更多参考,一定要看

其中,扩展编码时:二地址留出一种编码(1111)用来给一地址扩展简而言之——给出1111时,计算机辨认出要进行扩展。所以,零地址时,要二地址和一地址的扩展编码总共10位

设计指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看看就行了

转移指令

在这里插入图片描述
在这里插入图片描述

阅读MIPS指令、计算程序运行时间

在这里插入图片描述
1: 将 a2 的内容左移 2 位,即乘 4
2: 将 a3 的内容左移 2 位,即乘 4
3: 将 v 0 v0 v0 置零
4: 将 t 0 t0 t0 置零
5: 将第一个数组的首地址存放在 t 4 t4 t4
6: 取第一个数组的第一个元素存放在 t 4 t4 t4
7: 将 t1 置零
8: 将第二个数组的首地址存放在 t 3 t3 t3
9: 取第二个数组的第一个元素存放在 t3
10: 如果 t3 和 t4 不相等,则跳转到 s k i p skip skip
11: 将 v0 的值加 1,结果存于 v 0 v0 v0
12: 将 t1 的值加 4,结果存于 t 1 t1 t1
13:如果 t 1 t1 t1 不等于 a 3 a3 a3 , 即还未取完数组中所有元素,则转移到 i n n e r inner inner
14: 将 t 0 t0 t0 的值加 4 4 4
15:如果 t 0 t0 t0 不等于 a 2 a2 a2 , 即还未取完数组中所有元素,则转移到 o u t e r outer outer

在这里插入图片描述

写MIPS语句

在这里插入图片描述
在这里插入图片描述
十进制25在MIPS语句中也是直接用十进制(看上去是这样的)
注意一下 L U I LUI LUI

s u b sub sub $t1 $t1 $t2—— t 1 − t 2 t1 - t2 t1t2 存到 t 1 t1 t1

修改MIPS指令

在这里插入图片描述
在这里插入图片描述

MIPS指令

在这里插入图片描述
在这里插入图片描述

根据C语言写MIPS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看看就行了,真别考这种题吧,写不出来😭😭😭

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

C++静态对象的移动问题

7.1返回普通的静态对象 MyString func(const char* p) {static MyString tmp(p);return tmp; } int main() {MyString s1("hello");s1func("helloworld");s1.Print();MyString s2;s2func("hello");s2.Print();return 0; } 结果&#xff1a; 进…

Elagamal和ECC

Elgamal加密方案 椭圆曲线加密体制 椭圆曲线应该是非奇异的&#xff0c;曲线的图不会自我相交或者没有顶点。 椭圆曲线的基本运运算 相异点相加PQ&#xff1a; 相同点相加PP: ## 椭圆曲线加解密 加解密原理&#xff1a; Alice选取一个椭圆曲线 E p ( a , b ) E_p(a,b) Ep​…

从0到1精通自动化测试,pytest自动化测试框架,生成html报告与html报告报错截图+失败重跑(五)

目录 一、生成html报告 1、pytest-html 2、html报告 3、指定报告路径 4、显示选项 5、更多功能 二、html报告报错截图失败重跑 1、conftest.py 2、报告展示 3、失败重试 一、生成html报告 1、pytest-html pytest-HTML是一个插件&#xff0c;pytest用于生成测试结果…

C. Ranom Numbers(统计前缀)

Problem - C - Codeforces 不&#xff0c;不是“随机”数字。 Ranom 数字由大写拉丁字母 A 到 E 表示。此外&#xff0c;字母 A 的值为 1&#xff0c;B 为 10&#xff0c;C 为 100&#xff0c;D 为 1000&#xff0c;E 为 10000。 一个 Ranom 数字是一个 Ranom 数字序列。这个…

初始化列表的使用

问题 类中是否可以定义 const 成员&#xff1f; 下面的类定义是否合法&#xff1f; 如果合法&#xff0c;ci 的值是什么&#xff0c;存储在哪里&#xff1f; C 中提供了初始化列表对成员变量进行初始化 语法规则 注意事项 成员的初始化顺序与成员的声明顺序相同 成员的初始…

3.41 - haas506与esp8266-01s的串口通信(wifi模块)

haas506与esp8266-01s的串口通信 PC端调试wifi模块1.接线(与电脑通信)2.模式案例3.指令演示 开发板与wifi模块通信1.接线(TTL串口通信)2.代码测试 PC端调试wifi模块 esp8266-01s 1.接线(与电脑通信) 与电脑通信时引脚连接&#xff0c;wifi模块需要稳定3.3v供电&#xff0c;…

享好文 | 碰撞检查并不是BIM的目的

不知大家感觉到没有&#xff1f;中国很多行业都有一种惯性思维&#xff1a;只要是国外的就好&#xff0c;习惯了拿来主义。 比如前几年兴起的BIM&#xff0c;各种峰会论坛、培训吹得神乎其技&#xff0c;玩得不亦乐乎&#xff0c;什么协同管理、行业生态。 结果这么多年过去了…

Python 动态生成系统数据库设计到word文档

背景 经常需要交付一些系统文档而且基本都是word的&#xff0c;其中又有系统数据库介绍模块&#xff0c; 看着数据库里的几百张表于是我开始怀疑人生, 所以咱手写一个 涉及知识 pymysql 操作数据库 -tkinter GUI图形库threading 线程queue 阻塞队列pandas python数据计算…

【数据结构(C++)】树型查找——二叉搜索树

目录 1. 二叉搜索树 1.1 二叉搜索树的概念 1.2 二叉搜索树类模板 1.3 二叉搜索树的操作 1.3.1 查找 1.3.2 插入 1.3.3 删除 1.4 二叉搜索树的性能分析 2. 平衡二叉树 2.1 平衡二叉树的概念 2.2 平衡二叉树类模板 2.3 二叉搜索树的插入 3. 红黑树 3.1 红黑树的概念…

合宙Air724UG Cat.1模块硬件设计指南--Camera接口

Camera接口 简介 CAT.1模块支持一路摄像头接口&#xff0c;可以用于扫码&#xff0c;拍照应用。 特性 仅支持SPI接口实现 最高像素30W像素 支持数据格式YUV422, Y420, RAW8, RAW10 集成GC0310驱动 管脚功能 CAM_PWDN。关闭Camera&#xff0c;上电状态默认下拉输入。 CAM_RST。…

pg 绑定变量源码解析

pg 绑定变量相关源码解析 下面以callstmt 为例 说明一下绑定参数的执行流程&#xff08;基于pg13&#xff09; 整体架构 1. exec_parse_message 解析变量。 --> parse_analyze_varparams 解析绑定参数$id--->parse_variable_parameters &#xff0c; 把返回值paramTyp…

《Java黑皮书基础篇第10版》 第18章【习题】

Java语言程序设计 习题第十八章 18.2章节习题 18.1 什么是递归方法?什么是无限递归? 递归方法可以拆解为递和归。在Java中&#xff0c;大多数方法的执行都需要调用栈&#xff0c;来跟踪方法的调用和返回。在递的过程中&#xff0c;递归方法调用自身&#xff0c;把新的调用添…

Vue3 开发语法使用总结(超详细、超基础)

前言 最近开源了一套后台管理模板Wocwin-Admin&#xff0c;是基于 Vue3.2、TypeScript、Vite4、Pinia、Element-Plus、Qiankun(微前端) 技术栈&#xff0c;借此归纳一下Vue3.2的新语法。 一、全局注册(属性/方法) 1、main.ts注册 import { createApp } from "vue";…

Ubuntu22 2023最新版安装教程

Ubuntu22安装教程 2023全网最新版 前置资源准备 如果选择使用虚拟机安装&#xff0c;那么需要准备VmwareWorkstation 在官网进行下载安装 VmwareWorkstation官网:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 前置资源准备好后就可以…

【SpringCloud config分布式配置中心】—— 每天一点小知识

&#x1f4a7; S p r i n g C l o u d c o n f i g 分布式配置中心 \color{#FF1493}{SpringCloud config分布式配置中心} SpringCloudconfig分布式配置中心&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的…

okcc呼叫系统运营商的重点功能有什么

一、资费套餐模块 资费套餐&#xff0c;即客户进行业务时使用的资费标准。填写资费套餐名称&#xff0c;选择计费规则方式&#xff0c;点击“确认”按钮即可创建一条资费套餐&#xff0c;如下图所示。 计费规则即计费所遵循的规则。OKCC系统目前设计了以下三种计费方式(后续还…

Caretta 利用 eBPF 实现 Kubernetes 应用网络拓扑

介绍 Caretta 是一种轻量级的独立工具&#xff0c;快速展示集群中运行的服务可视化网络图。 Caretta 利用 eBPF 有效地展示 K8s 集群中的服务网络交互图&#xff0c;并利用 Grafana 查询和可视化收集的数据。科学家们早就知道&#xff0c;海龟和许多动物一样&#xff0c;通过…

【瑞萨RA_FSP】AGT——低功耗定时器

文章目录 一、AGT简介二、AGT的框图分析1. 16位计数器2. 16位重装载寄存器3. 计数时钟源4. 比较匹配功能5. 比较匹配输出引脚6. 输出引脚7. 下溢事件信号/测量完成事件信号输出 三、AGT工作模式详解四、实验&#xff1a;比较匹配功能——PWM输出1. 硬件设计2. 文件结构3. FSP配…

基础篇:新手使用vs code新建go项目(从0开始到运行)

学习新语言&#xff0c;搭建新环境。在网上找了一些教程&#xff0c;感觉还是写一个比较详细的方便以后自己使用。其实vs code没有新建项目这个功能&#xff0c;具体怎么运行go语言的项目请看下文。 一、下载GO安装包 1.点击go安装包下载链接下载相应的版本&#xff08;本次下…

【计算机网络自顶向下】简答题习题总结(三)

文章目录 第三章 传输层UDP用户数据报协议可靠数据传输原理面向连接传输TCP流量控制可靠数据传输机制 题目 第三章 传输层 传输层服务&#xff1a;在两个不同的主机的运行应用程序之间提供逻辑通信 在接收主机多路分解 将接收到的数据段传递给正确的套接字【多路分解】 在发送…