计算机体系结构框架

news2024/12/26 1:18:11

这是基于胡伟武老师的计算机体系结构课程所总结出来的框架,希望能让没有学习该课程的人可以去了解计算机是怎么造的,而对于学习这门课程的人可以在学习课程之前对整体框架有一个初步的认知。
如果不想看文字的话,可以看视频哦!

目录

  • 01与晶体管
  • 基本结构
  • 计算流程
  • 提升速度的结构
    • 静态流水
    • 动态流水
    • 多发射
    • 转移猜测
    • cache
    • TLB
  • 总体架构

01与晶体管

计算机是一个很伟大的发明,他将我们的信息进行传播、处理甚至自动地完成我们的工作。那么他里面到底是怎么运作的呢?我们先来说说输入的信息,
计算机中所要的信息,比如说图像,文字和声音等,在计算机内部转化为成各种的编码,比a SCL码等,最终都会转化成二进制。他其实是一种表达方式,我们各种输入都会抽象地映射到二进制中。
就好像英人采用英语作为母语,我们采用中文作为母语。他都是人们定好的一种规则,他们之间可以相互转化。而二进制就是计算机的一种语言,那么我们需要将信息都进行转化,他才能读懂。转化规则(或者说编码)本质其实就是一个映射表。
为什么要用二进制,因为他最常见,更重要的是计算机最基本组成的晶体管能通过电压高低所造成的电路通断去表达二进制。高电压代表1,低电压代表0。而在其他领域,在量子计算机中,他用的是能级的高低来表示二进制,而超导体的工艺也通过的是磁通量的有无去表达01。

计算机就是用来计算,我刚刚说的晶体管其实是计算部分表达01,但是我们需要对计算的东西也用二进制进行存储,这部分其实是采用电容,如果电容重游电荷,那就代表1,如果没有电荷则代表0。

在初中物理我们学过最简单的灯泡点亮电路,需要一个开关来控制,但是他本身很大,那我们需要做更加复杂的任务,那么就需要我们去拿更小的物质去作为电路通断的基本单元,而这个基本单元就是晶体管,主要在计算机中是cmos管,cmos管分为nmos管和pmos管,我们可以看到,nmos管给予高电压的时候是通路,低电压的时候则短路,而pmos管则相反,这跟里面所掺杂的材质相反而导致的电流流向相反所致。
在这里插入图片描述

基本结构

那么小小的晶体管跟我们计算机有什么关系呢?
就像我们计算也是从最简单的加减法说起,而我们的逻辑计算也是从最简单的与或非开始,如果大家学过数电的话,应该很熟悉,不熟悉的话可以按照类似加减法的基础单元去理解。
在这里插入图片描述

图中所示呢,就代表的是一个相反器,也是一个基础单元,我们发现他只需要一个p极管和n极管就能够达成相反功能。
同理啊,其他的基础单元或者其他功能模块也是由cmos管去组合实现。
更加抽象化,我们可以把它包装成一个输入为一条线,以及它中间的某一个黑盒子,然后会输出一个它的模块
那么我们就可以从小小的模块去不断去堆加,然后变成一个大模块,然后从大模块再继续构成更加复杂的逻辑,然后再封装,成一个更大模块,然后层层叠加去构建我们所理想中的逻辑结构。
怎么去封装成一个黑盒子呢?我们可以发现假设他这个盒子是我们上面所说的一个相反器,当我们遍历它的输入和对应输出的时候,我们叫做增值表,比如说我们把所有他可能的情况都列举出来,然后去知道他的输入对应的输出是什么样子的,
这样的话我们就可以把它封装成一个封成模块,然后以增值表去表达这个模块,这个模块就可以用到更加复杂的逻辑中去,其实现在目前硬件也是这样子,就是他会很成熟的提供各种各样的模块,然后我们需要去看各种模块的功能。然后去啊完成我们各种硬件结构。

计算流程

我们将上面的加法器,我们可以又把它弄成一个黑盒子,这里是一个移位加法器,给他数据他就一定会计算吗?我们发现他由一个控制端来告诉他我要不要把这些数据进行一个计算?这就涉及到了就是指令哦,他的集合是指令集,就是包含了我们可能会给出的指令的所有可能集合,然后我们会通过各种情况给予特定的指令去编译,编辑指令,我的理解成他要哪一些控制端是进行一个高电压,然后一些低控制端,然后控制端是低电压是零,比如说这个指令它是一个加法的运算的,那么在这个加法器中,他的控制端就是会变成一,那么在乘法器这边,他控制端那就是零类似的
在这里插入图片描述

在图中我标注了存储、指令和计算,存储是数据和指令存放的地方,运算就是加法器这个模块,这是冯诺依曼结果,存储和计算分离。指令就是代码,通过指令去告诉计算机怎么做。
而我们计算机一直在做的事就是反复的执行这样的一个流水,但是这一个任务可能会进行上千条指令,这样依次 串行执行十分缓慢,因此体系结构还从不同方面去怎么去提高自条流水的速度。

提升速度的结构

在这里插入图片描述

静态流水

在这里插入图片描述

每一拍其实一条指令,能够做一个事,当第一条指令来到执行的时候,第三条指令才到取指令这里,然后我们发现,第三条指定他需要拿到a的信息,然后a的信息的话,但是他还没执行完,他还没有写回到寄存器中,比如说哦,我还不知道你计算的最新的结果,那我就要拿你这个最新的结果去算,那怎么办呢?我们就需要在他原地等等待,等到他拿到了最新的数据的时候告诉我,然后我才能够去。
为了减少等待的拍数,在第四步、第三步结束的时候,又给了一条电路线,让他引到第二步来,也就是第二步的时候,就能够告诉我第四步和第三步的新的数据

而软件调度则是用软程序员的方式,去让他更改程序指令的顺序,让他们离得更远,因此的话就是在执行的第六条a的时候,他其实a第一条的a他已经走完了整个流水线,所以他已经就能够知道编译的时候,我就能知道a的最新数据是什么?

动态流水

在这里插入图片描述

动态流水线的就是他能够弯道超车,就是他不在一个执行依次的去执行指令。
将就在硬件中多了一个然后再开辟一个模块叫做保留站,然后让还没有得到结果还没有能拿到新数据的指令让他在里面等,关键在于比他慢的且数据准备好的指令他能够不被堵塞,继续往前走。
我们看下面这条流水线的时候,发现当地条指令已经到写回寄存器的时候,第二条指令他还在编译指令第二步这里,然后第三条指令已经绕过了第二条指令,他已经开始执行了,达到一个这样的效果,这样的话就是能够避免中间这直行和存储访问,第四步一直等待。没有数据处理的一个状况。

多发射

在这里插入图片描述
那除了超车,我们还可就是拓宽车道,使得处理计算的速度能够更快 大家都知道一个工厂里,如果只有一个人做一条产业线的话,是很慢,如果是多个人一条做这条产业线,那是不是就可能很快?因此的话,我们就用了多发射,也就是说,把上面的流水增加了多条流水线,但是有一个重要的点也是要顾及到,刚才所说的数据的相关性,因此在多发射的时候也要时时刻刻的检查,就是你在并行的道路的指令上是否也相关,以免发生一些新的指令拿不到最新的数据,这样的一个逻辑上的错误。

转移猜测

在这里插入图片描述
逻辑上我们会产生很多一些指令跳转,比如说比如说如果你做这个事,会发生A后果,如果你不做这样的事,你又会发生B后果,但是这个后果呢?他只有在执行的时候才会知道,才能够知道你要去哪里去取指令,那么我就需要无缘无故就必须要多等2拍去让他知道结果,才能够让我知道下一步应该去哪去指令,因此的话我们就再跳转类似的指令中加入了转移猜测,去提高他的速度

为什么能够用猜测这种方式?因为任务很多时候具有规律,比如说啊,我需要去一个房间拿一个苹果十次,那这样子的话,就是我不断去房间跳转拿苹果,这个其实是历史性的,那我们能不能就定义说?如果你前一次就是跳转的话,那我这次就跳转,

那这样的话,你如果循环十次的话,那只需要在一开始进入的时候不成功,那么出去的时候也预测失误,那这样子的话,我预测的准确率就是80%,也就是说我80%的指令能够不用等这一排,我就猜测我一定去那里拿地址,然后去让流水线走起来,20%则猜测错误,需要加上20%预测错误的时间成本,就需要把这条猜测错误的后续给删除掉,然后重新跳转到我们正确的指令
但是总体上来看,有这个猜测来说,还是能够加快我们的流水线计算,因为哦,我们在很多的一些逻辑事件中都是有一定的规律的

就刚才说的规律,有可能是周期反复,也有可能是指令间之间的相关,就是比如说我去了一个地方,那么我一定不会去另一个地方,那么我知道我去了第一个地方,那下一个地方,我就知道他一定是不去的,那么这样也是一种猜测。

cache

在这里插入图片描述
怎么去取数据更快呢?这里用case的一个技术,通过我之前的那个流水线的加速之后,我发现计算这方面他倒是很快了,但是在取数据这方面他很耗时,确实很长就会导致就是一直在取数据,取数这块,他一直耗着,但是计算那边已经很快的算好了,他就空闲了,那么怎么把这些空闲的时间利用上呢
因此,我们就需要在取数这方面进行一个优化,让他跟计算的时间能够相平衡,才能够把短板补上
而我们在这里,我们就采用了一个数据取数的一个过程,我们一般取数的话,我们都会用存储器内存去一个取数据,但是内存,存储器有一个规律

如果存储的越空间越大的话,他的访问速度会越慢 我们在计算机还是需要这些很大的存储数据,才能够满足我们的需求,那怎么办呢?我们就在CPU内部,再加一个更小的一个啊,存储空叫做cache,其实他其实是存储器里面的一个子集,而不是一个单纯额外的存储空间

是通过研究发现,有时候一些任务的时候,他会重复的去拿存储器中相同的数据,那么这些反复的数据我们就把它放到cache里面,然后这cache的话他就能够让CPU更快的拿取这些相同的数据,有些不常见的数据的话则放到更大的储存储内存里面,然后需要的话我们才去从把它从内存调到cache里面。
如果一个CPU,他需要拿100次4 KB的相同数据,那么那这4 KB的数据那我就的它加入到cache里面,那这样的话,我每次CPU都是只从cache里面去拿着4 KB的数据,但他就比之前的在内存中拿数据会快,如果不频繁的数据,那我就浪费点时间去内存拿数据就好了

TLB

在这里插入图片描述
为了清晰的讲之后的整个计算机框架,我在这里再讲一个叫TLB的一个东西
他其实与操作系统相关。在日常中,我们发现我们电脑其实可以命名多个用户进行使用了,然后在那用户过程中的时候,我们发现好像这个cpu和内存都是我的,我都可以随便的用,当然这也是我们在日常生活中哦,存储盘会大于我们的需求的情况下,因此他们之间不会相互的影响

他其实就是一种虚拟存储技术,操作系统的构建了一个虚拟地址,每个进程都有自己的虚拟地址空间,然后操作系统他就会把这些虚拟地址去映射到磁盘上物理地址空间,那这份的映射表就由操作系统保存,而且也是由操作系统维护

那么CPU呢?它是需要将虚拟地址进行一个映射,映射成物理地址来进行寻址拿数据,但是假设一个程序,他所构建的虚拟空间映射物理空间的这张表页表是4M的话,那么,如果有100个程序在运行的话,那就是有400M,我们CPU再去拿到一个虚拟地址去映射到物理地址之后,那是不是就得去遍历这400M?如果把它放在一个大表里面的话,那他就需要去遍历这400M的映射表,然后去找到对应的物理地址,这是特别的耗时的,因此之后呢,就有人去提出了分级,但是就多了几道转换的工序,这就降低了低级转换的速度。这不是我们所需要的,我们就是要提高它的速度,因此呢,我就想你不能像Cache一样,弄一个更小的子集叫TLB,去存储我们的页表项。
所以呢,在CPU在进行虚拟物理地址转换的时候,他会先去查TLB,如果没有找到的话,再去查操作系统所保存的完整映射表。来提高它的速度。

总体架构

我们就把计算机体系结构的内容基本上讲完了,我们从一开始五级流水线,我们可以知道整个计算机在做计算的时候他是怎么流程。然后下面这张图是计算机的架构,他在五级流水基础上加上我们刚才说的提升他的速度一些结构,然后去组成了整个计算机架构。
具体可以看视频描述,或者大家通过上文也对这张图也有了清晰了解。
在这里插入图片描述

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

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

相关文章

ros2 服务——ubuntu20.04——自定义数据类型

文章目录 自定义一个服务数据类型接口创建sev目录和文件修改包的CMakeLists.txt文件修改包的package.xml文件查看是否成功 服务全部代码 自定义一个服务数据类型接口 创建sev目录和文件 服务的接口类型由两部分组成,请求和相应 在包的src的同级目录下创建sev文件…

OpenCV基础补充自适应阈值及图像金字塔

文章目录 OpenCV基础补充自适应阈值及图像金字塔自适应阈值图像金字塔人脸检测视频检测人脸检测 OpenCV基础补充自适应阈值及图像金字塔 对于OpenCV知识点还有很多,基础的大家可以参考前面几节。 OpenCv基础之绘图及几何变换实例 OpenCV基础操作之图像的形态学运算…

PMP/高项 06-项目成本管理

项目成本管理 概念 项目成本管理 项目成本管理又被称为项目造价管理,是有关项目成本和项目价值两个方面的管理,是为保障以最小的成本实现最大的项目价值而开展的项目专项管理工作。 确保在批准的项目预算内完成项目 成本管理内容 规划成本管理 制定项目…

华为OD机试真题(Java),整数对最小和(100%通过+复盘思路)

一、题目描述 给定两个整数数组array1、array2,数组元素按升序排列。 假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素, 并对取出的所有元素求和,计算和的最小值。 注意: 两对元素如果对应于array1、array2中的两个下标均相同,则视为同一…

FL Studio21没有language选项?如何设置切换中文语言

音乐在人们心中的地位日益增高,近几年音乐选秀的节目更是层出不穷,喜爱音乐,创作音乐的朋友们也是越来越多,音乐的类型有很多,好比古典,流行,摇滚等等。对新手友好程度基本上在首位,…

第14章 项目采购管理

文章目录 采购管理包括如下几个过程14.2 编制采购计划 462编制采购计划的输出1)采购管理计划2)采购工作说明书3)采购文件 14.2.3 工作说明书(SOW) 14.3 实施采购 47414.3.2 实施采购的方法和技术 476(1&…

基于STM32F103-HAL库-IAR的BOOT和APP编写

前言: 在单片机中,将程序分为boot和app,这样可以实现一些功能:使用串口更新app等等; 需求: 编写boot和sys程序段,分别放在flash内存不同位置,先执行boot然后执行sys:boo…

分享24个强大的HTML属性 —— 建议每位前端工程师都应该掌握

前期回顾 是不是在为 API 烦恼 ?好用免费的api接口大全呼之欲出_0.活在风浪里的博客-CSDN博客APi、常用框架、UI、文档—— 整理合并https://blog.csdn.net/m0_57904695/article/details/130459417?spm1001.2014.3001.5501 👍 本文专栏:…

【实例展示通俗易懂】SQL中的内外连接、左右连接

一、分类 连接分为内连接与外连接;外连接分为左连接与右连接。 二、创建两个表格作为例子 AAA: BBB: 三、 外连接 1、左连接 (1&#xff09…

「OceanBase 4.1 体验」|快速安装部署

文章目录 一、Oceanbase数据库简介1.1 核心特性1.2 系统架构1.2.1 存储层1.2.2 复制层1.2.3 均衡层1.2.4 事务层1.2.4.1 原子性1.2.4.2 隔离性 1.2.5 SQL 层1.2.5.1 SQL 层组件1.2.5.2 多种计划 1.2.6 接入层 二、OceanBase 数据库社区版部署2.1 部署方式2.2 基础环境配置2.3 通…

SpringCloud学习-实用篇03

以下内容的代码可见:SpringCloud_learn/day03 1.初识Docker 什么是Docker? 项目部署问题:大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题 依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异 Do…

详解C语言中的6个位操作符:按位取反、按位与、按位或、按位异或、左移、右移

本篇博客会讲解C语言中的6个位操作符&#xff1a;按位取反(~)、按位与(&)、按位或(|)、按位异或(^)、左移(<<)、右移(>>)。这6个操作符都是操作整数的二进制位的。在学习这6个位操作符之前&#xff0c;大家需要先掌握“整数在内存中的存储”这个知识点&#xf…

ESP32设备驱动-TSL2591数光转换器驱动

TSL2591数光转换器驱动 文章目录 TSL2591数光转换器驱动1、TSL2591介绍2、硬件准备3、软件准备4、驱动实现1、TSL2591介绍 TSL2591 是一款非常高灵敏度的光数字转换器,可将光强度转换为能够直接 I2C 接口的数字信号输出。 该器件在单个 CMOS 集成电路上结合了一个宽带光电二极…

如何用ChatGPT做会议总结?

该场景对应的关键词库&#xff08;12个&#xff09;&#xff1a; 会议主题、参与人员、讨论议题、关键观点、决策、时间、地点、修改要求、文本格式、语言风格、列表、段落。 提问模板&#xff08;3个&#xff09;&#xff1a; 第一步&#xff1a;用飞书会议等软件整理好会议…

代码随想录算法训练营第四十九天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

文章目录 121. 买卖股票的最佳时机122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 为什么定义dp数组为二维数组&#xff1f; dp数组定义&#xff0c;dp(i)[0] 表示第i天持有股票所得最多现金&#xff0c;dp(i)[1]表示第i天不持有股票的状态&#xff08;未必当前卖出&#x…

《Netty》从零开始学netty源码(五十)之PoolArena的内存分配

目录 tcacheAllocateSmall()tcacheAllocateNormal()newChunk() allocateHuge()newUnpooledChunk() ​PoolArena根据请求大大小主要分配三中类型的内存&#xff0c;小于28KB的分配PoolSubpage&#xff0c;28KB~4MB的分配池化的PoolChunk&#xff0c;4MB以上的分配非池化的内存​…

【C++ 学习 ②】- 类和对象(上)

目录 一、 面向对象的基本理念 1.1 - 什么是对象&#xff1f; 1.2 - 类和对象 1.3 - 面向对象的五条原则 1.4 - 面向过程 vs 面向对象 二、C 中的结构体 三、类的定义 3.1 - 类的两种定义方式 3.2 - 成员变量的命名规范 四、类的访问限定符和封装 4.1 - 访问限定符 …

SPFA + 链式前向星建图【附Java模板】

SPFA算法是什么&#xff1f;它能解决什么样的问题&#xff1f; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 数据结构与算法专栏的文章图文并茂&#x1f995;生动形象&#x1f996;简…

P3029 [USACO11NOV]Cow Lineup S 双指针 单调队列

“五一”小长假来了趟上海&#xff0c;在倒数第二天终于有时间做了一会儿题目&#xff0c;A了之后过来写一篇题解 【问题描述】 农民约翰雇一个专业摄影师给他的部分牛拍照。由于约翰的牛有好多品种&#xff0c;他喜欢他的照片包含每个品种的至少一头牛。 约翰的牛都站在一条沿…

[MAUI]模仿iOS应用多任务切换卡片滑动的交互实现

文章目录 原理创建布局创建分布函数创建动效创建绑定数据细节调整首张卡片的处理为卡片添加裁剪跳转到最后一张卡片 项目地址 看了上一篇博文的评论&#xff0c;大家对MAUI还是比较感兴趣的&#xff0c;非常感谢大家的关注&#xff0c;这个专栏我争取周更&#x1f609;。 App之…