【软考中级备考笔记】计算机体系结构

news2025/1/17 21:41:40

计算机体系结构 2月19日 – 天气:阴转小雪

1. 冯诺依曼计算机体系结构

冯诺依曼将计算机分为了五大部分,分别是:

  • 控制器:主要负责协调指令到执行
  • 运算器:负责算数和逻辑运算
  • 存储器:负责存储在指令执行过程中产生的一些中间变量
  • 输出输出设备:用于接收用户输入并将结果显示给用户

冯诺依曼计算机体系结构由一下特点:

  • 冯·诺依曼计算机主要由五大部件组成,分别是:运算器、控制器、存储器、输入设备和输出设备;

  • 冯诺依曼体系结构的指令和数据均采用二进制码表示;

  • 指令和数据以同等地位存放于存储器中,均可按地址寻访;

  • 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置;

  • 指令在存储器中按顺序存放,通常指令是按顺序执行的,特定条件下,可以根据运算结果或者设定的条件改变执行顺序;

  • 机器以运算器为中心,输入输出设备和存储器的数据传送通过运算器。

在这里插入图片描述

其中,控制器和运算器成为CPU,而CPU+主存成为主机。

在这里插入图片描述

2. 主存储器

主存储体有三部分组成:

  • 存储体:实际保存内容的记忆体
  • MAR:地址寄存器。
  • MDR:数据寄存器。

还有一些其他的概念需要知道:

  • 存储单元:用于存储一串二进制的数据,是寻址的最小单元
  • 存储字长:存储单元中二进制数据的位数
  • 存储字:存储单元中存储的二进制的数据
  • 机器字长:CPU一次所能处理的最大二进制位数

其中,MAR的位数决定了存储单元的长度。比如一个长度为4的MAR,那么对应的存储单元的个数就是16个。

MDR决定了每一个存储单元可以存储的二进制的位数。因此对于一个长度为16位的MDR,所对应的存储字长位16。

在这里插入图片描述

3. CPU

CPU主要由运算器和控制器组成,下面是运算器的一些基本结构:

  • ACC:累加器
  • MQ:乘商寄存器,用于在乘除运算时存放操作数和运算结果
  • X:通用操作数寄存器,用于存放操作数
  • ALU:算数逻辑单元,使用复杂电路实现算数和逻辑运算
  • DR:数据缓存寄存器
  • PSW:程序状态字,用于保存程序运行的状态

在这里插入图片描述

对于控制器来说,主要组成由:

  • CU:控制单元,负责分析指令并给出控制信号
  • IR:指令寄存器,存放当前正在执行的指令
  • PC:程序计数器,存放下一条待执行的指令,有自动加一的功能
  • AR:地址寄存器,存放当前CPU所要访问的内存地址
  • ID:指令译码器,对操作码进行分析

在这里插入图片描述

4. Flynn分类法

主要就是记住不同类型的英文缩写。重点掌握第三条的特点是仅仅理论存在,在实际上不可行。

在这里插入图片描述

5. 指令系统

指令指的是计算机执行某一种操作的命令,是计算机运行的最小单位

一台计算机中所有的指令的集合称为指令系统,也叫做指令集

指令建立了计算机软件与硬件之间沟通的桥梁。

在这里插入图片描述

一条指令由两部分构成:

  • 操作码:指定要进行的操作,可以是加减运算,系统中断等等
  • 地址码:指定要操作的对象的,可能是对象本身,也可能是对象在内存中或寄存器中的存储的地址

指令可以没有地址码,但是必须有操作码。比如系统中断指令就不需要地址码

寻找指令的方式由叫做寻址方式,分为一下两步:

  • 指令寻址:指令寻址就是从PC中获取下一条需要执行的指令
  • 数据寻址:当分析完毕需要执行的指令时,如果指令中包含了操作码,则需要根据操作码去获取到真正要操作的数据,这一过程称之为地址寻址。

在这里插入图片描述

常见的七种寻址方式:

在计算机科学中,寻址方式是指计算机处理器中用于获取内存地址的方法。以下是七种常见的寻址方式:

  • 立即寻址(Immediate Addressing):指令中包含要操作的数据本身的值,而不是该数据的地址。例如,ADD #5 意味着将寄存器中的值与立即数5相加。

    • 实际操作的数据即不存储在内存中,也不存储于内存中。
    • 不访问内存和寄存器。
  • 直接寻址(Direct Addressing):指令中包含要操作数据的内存地址。例如,LOAD 500 意味着从内存地址500中加载数据到寄存器中。

    • 实际操作的数据存储于内存中。
    • 访问一次内存。
  • 间接寻址(Indirect Addressing):指令中包含一个地址,该地址存储了要操作数据的内存地址。例如,LOAD (500) 意味着从存储在地址500处的内存中加载数据到寄存器中。

    • 实际操作的数据存储于内存中。
    • 访问两次内存。第一次取地址,第二次根据地址找到操作数。
  • 寄存器寻址(Register Addressing):指令中包含一个寄存器的编号,该寄存器中存储了要操作的数据。例如,LOAD R1 意味着将寄存器R1中的数据加载到另一个寄存器中。

    • 实际操作的数据存储于寄存器中。
    • 只访问一次寄存器。
  • 寄存器间接寻址(Register Indirect Addressing):指令中包含一个寄存器的编号,该寄存器中存储了要操作数据的内存地址。例如,LOAD (R1) 意味着从寄存器R1中存储的内存地址中加载数据到寄存器中。

    • 实际操作的数据存储于内存中。
    • 需要首先访问寄存器获取到内存地址。然后根据内存地址获取操作数。
  • 相对寻址(Relative Addressing):指令中包含一个相对于程序计数器(PC)的偏移量,该偏移量用于计算要操作数据的地址。例如,JUMP 10 意味着将程序控制转移到当前位置加上10的地址处。

    • 实际操作的数据存储于内存中。
    • 需要访问一次内存
  • 基址寻址(Base Addressing):指令中包含一个基址寄存器的编号和一个偏移量,该偏移量用于计算要操作数据的地址。例如,LOAD 10(R1) 意味着从存储在寄存器R1中的基址加上偏移量10处加载数据到寄存器中。

    • 实际操作的数据存储于内存中。
    • 需要首先从寄存器中获取基址,根据基址和偏移量获取内存地址。然后访问内存根据地址取出操作数。

一般计算机的指令系统主要分为了CISC和RISC,下面是一个简答的对比:

在这里插入图片描述

6. 流水线计算题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7. 存储系统的层次结构

根据距离CPU的远近程度,划分了一下层级:

在这里插入图片描述

其中cache的作用是为了解决CPU和主存不一致的问题而建立的。

在这里插入图片描述

需要注意的问题

  • cache的作用是为了解决CPU和主存不一致的问题而建立的。
  • cache中存储的是内存中的部分数据
  • CPU先去cache中搜索数据,如果存在则直接返回。如果不存在,则到内存中搜索。同时将搜索到的数据存放到cache中

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

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

相关文章

vue封装el-table表格组件

先上效果图&#xff1a; 本文包含了具名插槽、作用域插槽、jsx语法三种&#xff1a; Render.vue&#xff08;很重要&#xff0c;必须有&#xff09;: <script> export default {name: "FreeRender",functional: true,props: {scope:Object,render: Functio…

Gitlab操作流程

阶段1-构建账户信息 1.1 管理员分配账户 方式1-推荐 企业正常使用gitlab时&#xff0c;一般由项目经理(超级管理员)手动创建开发者账户信息&#xff0c;然后将账户发送给开发者&#xff0c;以便登录使用&#xff1b; 流程如下&#xff1a; 点击创建用户按钮&#xff1b; 创…

自动驾驶中之定位总结

1 前言2 典型的单个定位方式2.1 基于通信的定位方法2.1.1 GNSS 全球卫星导航系统2.1.1.1 gnss的优点与缺点2.1.1.2 gnss定位技术2.1.1.2.1 RTK定位技术2.1.1.2.2 PPP定位技术 2.1.1.2 gnss定位技术总结 2.1.2 车联网定位 2.1 基于航位推算的定位方法2.1.1 惯性测试单元定位IMU2…

docker安装一系列镜像

启动docker systemctl start docker docker 启动已经停止的容器 docker start idOrName PS&#xff1a;idOrName为容器的id或者名称 1、安装mysql镜像 拉取mysql5.7的镜像 docker pull mysql:5.7 查看镜像 docker images 启动mysql #启动mysql docker run --name mysql…

PostgreSQL技术内幕(十三)探究MPP数据库分布式查询分发Dispatcher

Dispatcher&#xff08;分布式查询分发器&#xff09;是MPP数据库的核心组件&#xff0c;所有的查询任务都要经过其进行分发&#xff0c;起着沟通用户到协调者&#xff08;Coordinator&#xff0c;即QD&#xff09;和执行调度的关键作用。 在这次的直播中&#xff0c;我们为大…

Opencv中的RNG-随机绘图

在OpenCV中&#xff0c;RNG是一个随机数生成器类&#xff0c;用于生成各种类型的随机数&#xff0c;包括均匀分布或高斯分布的整数和浮点数。RNG类的实例化时可以接受一个无符号整数作为种子值&#xff0c;这个种子值决定了随机数生成序列的起点&#xff0c;相同的种子值将产生…

分布式id实战

目录 常用方式 特征 潜在问题 信息安全 高性能 UUID 雪花算法 数据库生成 美团Leaf方案 Leaf-segment 数据库方案 Leaf-snowflake 方案 常用方式 uuid雪花算法数据库主键 特征 全局唯一趋势递增信息安全 潜在问题 信息安全 如果id连续递增, 容易被爬虫, 批量下…

【动态规划】【字符串】2167移除所有载有违禁货物车厢所需的最少时间

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 动态规划汇总 LeetCode2167移除所有载有违禁货物车厢所需的最少时间 给你一个下标从 0 开始的二进制字符串 s &#xff0c;表示一个列车车厢序列。s[i] ‘0’ 表示第 i 节车厢 不 含违…

自动化上位机开发C#100例:如何用面向对象的方式封装雷赛运动控制卡EtherCAT总线卡(C#代码)

自动化上位机开发C#100例:雷赛运动控制卡EtherCAT总线卡C#封装类 文章目录 LTDMC.dll下载LTDMC.cs LTDMC.dll C#调用封装下载ICard.cs 运动控制卡接口Card.cs 运动控制卡抽象类CardLTDMC.cs 雷赛运动控制卡EtherCAT总线卡实现类CardList.cs 总线卡列表封装 LTDMC.dll下载 最新…

MLP-Mixer: AN all MLP Architecture for Vision

发表于NeurIPS 2021, 由Google Research, Brain Team发表。 Mixer Architecture Introduction 当前的深度视觉结构包含融合特征(mix features)的层:(i)在一个给定的空间位置融合。(ii)在不同的空间位置&#xff0c;或者一次融合所有。在CNN中&#xff0c;(ii) 是由N x N(N &g…

golangci-lint如何关闭typecheck

https://github.com/golangci/golangci-lint/issues/2912 typecheck是go源码的校验&#xff0c;无法通过.golangci.yml配置关闭 可以直接在golangci-lint源码层面关闭typecheck

Jmeter教程-JMeter 环境安装及配置

Jmeter教程 JMeter 环境安装及配置 在使用 JMeter 之前&#xff0c;需要配置相应的环境&#xff0c;包括安装 JDK 和获取 JMeter ZIP 包。 安装JDK 1.JDK下载 示例环境为Windows11环境&#xff0c;读者应根据实际环境下载JDK的安装包。 JDK下载地址&#xff1a; Java21 下载 …

windows自带录屏指南,让视频制作更简单!

随着网络技术的发展&#xff0c;录制电脑屏幕已成为了许多用户的常见需求&#xff0c;无论是录制游戏画面、软件教程还是制作演示视频&#xff0c;一款好用的录屏工具都至关重要。windows操作系统为用户提供了多种录屏工具&#xff0c;无需额外安装软件。本篇文章将介绍windows…

Guitar Pro 8.1 Mac 2024最新下载、安装、激活、换机图文教程

Guitar Pro 8是吉他手的终极工具箱,也是阅读和编辑乐谱的领先软件。26 年来,Guitar Pro 一直在帮助世界各地的音乐家学习弹吉他、创作歌曲以及转录和编辑歌集。 Guitar Pro是一款专业的吉他制谱软件&#xff0c;现在已更新至Guitar Pro8&#xff0c;新增了支持添加音频轨道、支…

19-树-填充每个节点的下一个右侧节点指针 II

这是树的第19篇算法&#xff0c;力扣链接。 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL 。…

从入门到精通:AI绘画与修图实战指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在这篇文章中&#xff0c;我们将深入探讨如何利…

JAVA高并发——人手一支笔:ThreadLocal

文章目录 1、ThreadLocal的简单使用2、ThreadLocal的实现原理3、对性能有何帮助4、线程私有的随机数发生器ThreadLocalRandom4.1、反射的高效替代方案4.2、随机数种子4.3、探针Probe的作用 除了控制资源的访问&#xff0c;我们还可以通过增加资源来保证所有对象的线程安全。比如…

2024年数学建模竞赛汇总——时间轴

美赛已过&#xff0c;好多小伙伴表示已经错过&#xff0c;不清楚什么时候报名&#xff0c;什么时候准备&#xff0c;其实每年数学建模比赛有很多个&#xff0c;各大比赛的级别、报名时间、参赛对象等要求什么呢&#xff1f;小编从竞赛说明、竞赛级别、是否允许跨校、报名费用、…

MySQL基础学习

MySQL基础 注意&#xff1a;本文的图片截图自尚硅谷MySQL笔记。 一&#xff1a;基本概述&#xff1a; 什么是数据库&#xff1a; 数据库是一种用来存储和管理数据的系统。它是一个组织化的数据集合&#xff0c;可以通过计算机系统进行访问、管理和更新。数据库可以存储各种…

【C++】vector模拟实现+迭代器失效

vector模拟实现 成员变量定义默认成员函数构造函数 迭代器范围for、对象类型匹配原则 容量操作sizeemptycapacityreserve成员变量未更新memcpy值拷贝 resize内置类型的构造函数 数据访问frontbackoperator[ ] 数据修改操作push_backpop_backswapclearinsertpos位置未更新无返回…