【系统架构设计】计算机组成与体系结构(三)

news2024/9/21 4:26:25

计算机组成与体系结构(三)

  • 计算机系统组成
  • 存储器系统
    • 主存储器
    • 辅助存储器
    • Cache存储器
      • Cache 基本原理
      • 映射机制
        • 直接映射
        • 全相联映射
        • 组相联映射
      • 替换算法
      • 写操作
  • 流水线(计算)
    • 流水线周期
    • 流水线执行时间
    • 流水线的吞吐率
    • 流水线的加速比

计算机系统组成

存储器系统

主存储器

辅助存储器

Cache存储器

Cache 功能是提高CPU数据输入输出的速率,突破所谓的“冯·诺依曼瓶颈”,即CPU与存储系统间数据传送带宽限制。其容量小但速度快

Cache 通常采用相联存储器(ContenAddressable Memory,CAM)。CAM是一种基于数据内容进行访问的存储设备。当对其进行写入数据时,CAM能够自动选择一个未用的空单元进行存储;当要读出数据时,不是给出其存储单元的地址,而是直接给出该数据或者该数据的一部分内容,CAM对所有存储单元中的数据同时进行比较,并标记符合条件的所有数据以供读取。由于比较是同时、并行进行的,所以这种基于数据内容进行读写的机制,其速度比基于地址进行读写的方式要快很多。

ps:也就是相联存取 方法。

Cache 基本原理

使用Cache 改善系统性能的依据是程序的局部性原理,即最近的、未来要用的指令和数据大多局限于正在用的指令和数据,或是存放在与这些指令和数据位置上邻近的单元中。这样就可以把目前常用或将要用到的信息预先放在Cache 中,当CPU需要读取数据时,先在Cache 中查找所需要的内容,如果有则直接读取;如果没有再从内存中读取该数据,然后同时送往CPU和Cache。如果CPU需要访问的内容大多都能在Cache 中找到(称为访问命中),则大大提高系统性能。

ps:这里要注意,如果没有从Cache 读到数据,从内存读到的数据会同时送往CPU 和Cache

如果以h 代表对Cache的访问命中率(1-h 称为失效率,或称为 未命中率),t1 表示Cache 的周期时间,t2 表示内存的周期时间,以读操作为例,使用”Cache +主存储器“的系统的平均周期是t3 ,则

t3=t1 * h + t2 *(1-h)

映射机制

当CPU发出访存请求后,存储器地址先被送到Cache 控制器以确定所需数据是否已经在Cache 中,若命中则直接对Cache 进行访问,该过程被称为Cache 的地址映射(映像)。在Cache 地址映射中,主存和Cache 将均分成容量相同的块(页)。常见的映射方法有 直接映射 、全相联映射、组相联映射

直接映射

直接映射方式以随机存取存储器作为Cache存储器,硬件电路较简单。在进行映射时,主存地址被分成了三部分,从高到低依次是:区号、页号、页内地址
在这里插入图片描述

在本例中,假设内存容量为1GB,Cache容量为8MB,页面的大小为512KB。直接映射中,先分区,再分页一个区的大小就是Cache的容量大小,所以一共分:1GB/8MB=128个区,所以区号是7位;每个区分:8MB/512KB=16个页,所以页号是4位.

在直接映射方式中,每个主存页只能复制到某一个固定的Cache 页中,如图1-4所示。直接映射方式的映射规律是:主存中每个区的第0页,只能进入Cache 的第0页,若当前时刻Cache中0号页被占据,而1-15号页空闲,现在需要将1区第0页(即内存的16页)调入Cache 是会发生冲突的。所以直接映射的块冲突率很高
在这里插入图片描述
在Cache 中,为每一个页设立一个Cache 标记,用于识别当前Cache 块来自于哪个内存区。直接映射中,由于每个区的N号页都必须进入到Cache的N号页,所以只需要记录区号就可以,所以在本例中,对应标记的长度也是7位。

直接映射方式的优点是比较容易实现,缺点是不够灵活,有可能使Cache的存储空间得不到充分利用

ps:要看清楚,到底是内存页还是Cache页内存区还是Cache标记

全相联映射

全相联映射使用相联存储器组成的Cache 存储器,在全相联映射方式中,主存的每一页可以映射到Cache的任一页,如果淘汰Cache 中某一页的内容,则可以调入任一主存页的内容,因而较直接映射方式灵活

在全相联映射方式中,主存地址分为:地址部分(主存页标记)和数据部分(页内地址)数据部分用于存放数据,而地址部分则存放该数据的存储器地址
在这里插入图片描述
每个Cache 页可以映射到主页存的任一页,所以每页Cache 标记只需要表明它现在所映射的主存页号即可。在全相联映射方式中,主存地址不能直接提取Cache页号,而是需要将主存页标记与Cache各页标记逐个比较,直到找到标记符合的页(访问Cache 命中),或者全部比较完后仍无符合的标记(访问Cache失败)。因此这种映射方式速度很慢,失去了高速缓存的作用,这是全相联映射方式最大缺点。而且Cache标记信息位数增加,比较逻辑成本随之增加。当然如果让主存页标记和各Cache标记同时比较,则成本又太高。全相联映射方式因比较器电路难于设计和实现,只适用于小容量Cache
在这里插入图片描述

ps: 以上2种映射方式,全相联映射以页位单位,可以自由映射,没有固定的对应关系;直接映射方式,主存分组,主存组内的各页与Cache 的页之间采取的是固定的映射关系,但各组均可映射到Cache中

组相联映射

组相联映射(页组映射)介于直接映射和全相联映射之间,是这2种映射的一种折衷方式。在该方式中,主存与Cache 都分组,主存中一个组内页数与Cache 的分组数相同,如图1-7所示。
在这里插入图片描述
根据之前的例子,主存依旧是128区,而每个区是8组,每个组是2页。组相联映射方式的主存地址组织如图1-8所示。基本规则是:主存中的组与Cache的组形成直接映射关系,而每个组内的页是全相联映射关系。如主存1区0页,由于在0组,所以只能进入Cache的0组中,至于进入Cache的0组0页还是0组1页,并无强制要求,可以任意放置。
在这里插入图片描述
容易看出,如果Cache 中每组只有1页,那组相联映射就变成了直接映射方式;如果Cache 中每组有16页(即Cache只分一组),那就变成了全相联映射方式。因此,在具体设计组相联映射时,可以根据设计目标选取具体分组页数。由于Cache中每组有若干可供选择的页,因而它在映射定位方面较直接映射方式更灵活;每组页数有限,因此较全相联映射付出的代价不是很大。

ps: 为保障性能,内存与Cache之间的映射往往采用硬件完成,编程时不用考虑。

替换算法

当Cache产生一次访问未命中,相应数据应同时写入CPU和Cache,但当Cache 已存满数据后,新数据必须替换某些旧数据,常用替换算法有以下三种:

  • 随机算法:随机选择一块进行替换
  • 先进先出:将最先进入Cache的块作为被替换的块。该方法要求为每块做一个记录,记下它们进入Cache 的先后次序。优点是:容易实现,系统开销小;缺点:可能会将一些需要经常使用的程序块替换掉
  • 近期最少使用(Least Recently Used ,LRU)算法:把CPU近期最少使用的块作为被替换的块。该方法需要随时记录Cache中各块的使用情况,以便确定哪个块是近期最少使用的块。该方法相对合理,但实现较为复杂,系统开销大。通常需要对每一块设置一个称为“年龄计数器”的硬件或软件计数器,用以记录其使用情况。

写操作

为保证缓存在Cache中的数据与内存中的内容一致,常用方法如下:

  • 写直达(write through):当要写Cache 时,数据同时写入主存,有时也被称为写通;当要被替换时,不需要将这块写回主存,新调入块直接替换Cache块就行。该方法实现简单,而且能随时保持主存数据正确性,但可能增加多次不必要主存写入,降低存取速度
  • 写回(write back):修改Cache 某块,相应数据不写入主存,而是当该块要被淘汰了再写回主存。在采用该更新策略的Cache块表中,一般有一个标志位,当一块中任一单元被修改时,标志位被置1,在需要替换掉这块时,如果标志位1则必须先把这块写回到主存后再调入新块;如果标志位0,则不必写回主存,直接替换这块就行。该方法操作速度快,但因主存中的字块未随时修改而有可能出错
  • 标记法:对Cache 中每个数据设置一个有效位。当数据进入Cache后,有效位置1,当CPU要对该数据进行修改时,数据只需写入内容并同时将该标志位置0;当要从Cache 读数据时,如果标志位1则从Cache 读,如果0则从内存读

流水线(计算)

流水线技术把一个任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构负责执行,而这些机构可以同时并行工作。在任一时刻,任一任务只占用其中一个执行机构,这样就可以实现多个任务的重叠执行,以提高工作效率。

流水线周期

流水线应用过程中,会将需要处理的工作分为N阶段,最耗时那一段的时间为流水线周期。如使用流水线技术执行100条指令,每条指令取指2ms,分析4ms,执行1ms,则流水线周期为4ms。

流水线执行时间

1个任务的执行过程可分成N个阶段,假设每个阶段完成时间t,则完成改任务时间为Nt。若以传统方式,k个任务就是kNt;而使用流水线技术,则时Nt+(k-1)t。即:

  • 流水线执行时间 = 第1条任务的执行时间 + (n-1)x 流水线周期

ps:流水线执行时间,其实进一步可分为理论情况和实践情况两种不同的处理方式。在真正做流水线处理时,考虑到处理的复杂性,会将任务的每个执行阶段的时间都统一为流水线周期,即第1条任务的执行时间 = N x 流水线周期

流水线的吞吐率

流水线的吞吐率(Though Put rate ,TP)是指单位时间内流水线所完成的任务数量或输出的结果数量。有些文献也称为平均吞吐率、实际吞吐率。

  • 吞吐率 = 任务数k / 处理完成k个任务所用时间
  • 最大吞吐率 = 1/ 流水线周期

ps: 接用实际的流水线执行时间 ,吞吐率=k /[(N + k-1) *流水线周期],k 无穷就可以推出最大吞吐率。

流水线的加速比

完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比

  • 最大的加速比 = 单个任务的阶段数N

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

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

相关文章

【unity笔记】九、Unity添加串口通信

unity仿真使用虚拟串口调试。下面为简单流程。 常用串口调试软件在这里下载。 1.虚拟串口 添加虚拟串口,这里使用com1 com2 2. 串口调试 在这里为虚拟串口发送消息。 3. unity配置 3.1 设置 在文件->生成设置->玩家设置->玩家->其他设置 中找到…

C++|智能指针

目录 引入 一、智能指针的使用及原理 1.1RAII 1.2智能指针原理 1.3智能指针发展 1.3.1std::auto_ptr 1.3.2std::unique_ptr 1.3.3std::shared_ptr 二、循环引用问题及解决方法 2.1循环引用 2.2解决方法 三、删除器 四、C11和boost中智能指针的关系 引入 回顾上…

接口测试框架基于模板自动生成测试用例!

引言 在接口自动化测试中,生成高质量、易维护的测试用例是一个重要挑战。基于模板自动生成测试用例,可以有效减少手工编写测试用例的工作量,提高测试的效率和准确性。 自动生成测试用例的原理 为了实现测试用例数据和测试用例代码的解耦&a…

企事业网站需要做软件测试吗?包括哪些测试内容和好处?

在这个数字化时代,企事业网站已经成为宣传和交流的重要平台,它的稳定性、安全性和用户体验对于企业形象和业务发展至关重要。因此,为了确保企事业网站的良好运行,对其进行软件测试是至关重要的。那么网站测试具体有哪些好处?又包…

从 ArcMap 迁移到 ArcGIS Pro

许多 ArcMap 用户正在因 ArcGIS Pro 所具有的现代 GIS 桌面工作流优势而向其迁移。 ArcGIS Pro 与其余 ArcGIS 平台紧密集成,使您可以更有效地共享和使用内容。 它还将 2D 和 3D 组合到一个应用程序中,使您可以在同一工程中使用多个地图和多个布局。 Arc…

redis源码分析之底层数据结构(一)-动态字符串sds

1.绪论 我们知道redis是由c语言实现的,c语言中是自带字符串的,但是为什么redis还要再实现自己的动态字符串呢,这种动态字符串的底层数据结构是怎样的呢?接下来我们带着这些问题来看一看redis中的动态字符串sds。 2.sds的组成 struct __at…

Python模块ConfigParser读取应用程序的配置文件简单示例

一、模块说明: 系统管理员通常通过文本编辑器编辑这些配置文件,以设置应用程序的默认值,然后应用程序将读取并解析这些配置文件,并根据其中的内容执行对应操作。ConfigParser模块具有read()方法,用于读取配置文件。 …

socket编程(2) -- TCP通信

TCP通信 2. 使用 Socket 进行TCP通信2.1 socket相关函数介绍socket()bind()listen()accept()connect()2.2 TCP协议 C/S 模型基础通信代码 最后 2. 使用 Socket 进行TCP通信 Socket通信流程图如下: 这里服务器段listen是监听socket套接字的监听文件描述符。如果客户…

稳!连续五年蝉联第一,华为UPS何以领跑市场?

数字经济的蓬勃发展、人工智能浪潮的兴起,使得数据中心产业正经历一场影响深远的变革。 这其中,作为数据中心电能质量治理和不间断供电的核心组件,UPS(不间断电源,Uninterruptible Power Supply)堪称数据中…

python数据可视化(1)——绘制柱状图

课程学习来源:b站up:【蚂蚁学python】 【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接:【链接】】 #导入数据 import pandas as pd df pd.read_excel("../DATA_POOL/PY_DATA/ant-learn-vi…

楼宇智慧公厕如何做到厕位状态、环境数据实时监控

在现代化的楼宇中,智慧公厕的出现为人们提供了更加便捷、舒适和卫生的如厕环境。其中,厕位状态和环境数据的实时监控是其关键特性之一。 一、楼宇智慧公厕简介 楼宇智慧公厕是一种融合了先进技术的现代化公厕设施,旨在提升用户体验、提高管理…

STL(一)

书写形式:string (const string& str, size_t pos, size_t len npos); 举例: int main(){ string url("https://mp.csdn.net/mp_blog/creation/editor?spm1000.2115.3001.4503") string sub1(url,0,5);//从下标为0开始向后5个字符&…

树莓派pico入坑笔记,dht11使用及温湿度表制作

目录 关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏 用到的库adafruit_dht,需要导入pico才能使用,在这里下载 样例程序 进阶玩法,显示信息的温湿度计 屏幕使用见树莓派pico专栏的ssd1306oled屏幕使用 代码 效…

Excel的Index+MATCH组合使用方法

INDEX函数 INDEX函数作用:用于从指定的单元格区域中返回特定行和列的值。 参数形式为:INDEX(array, row_num, [column_num]) array:必需。单元格区域或数组常量。 row_num:必需。要返回的值所在的行号。 [column_num]&#x…

开发者必读:获取电商API的多种渠道

开发电商软件往往需要对接电商API,电商API可以从哪些渠道获取?下面给大家介绍两种获取渠道。 一、从电商平台开放平台获取电商API 电商平台的开放平台是获取电商API最直接的渠道,但是电商平台较多,每一个电商平台都需要单…

【理解串】

目录 一、串的基本概念二、串的基本操作及实现三、串的存储实现3.1、静态数组实现3.2、动态数组实现 四、串的朴素模式匹配4.1、算法思想4.2、代码实现 五、KMP算法5.1、算法思想5.2、求模式串的next数组5.2、代码实现 一、串的基本概念 串:即字符串(st…

常见的点云数据的获取方式

1. 激光雷达(LiDAR) 获取方式:激光脉冲测距原理:激光雷达通过发射激光脉冲并接收反射信号来测量物体与传感器之间的距离。计算激光脉冲从发射到返回所需的时间,并将其转换为距离,从而生成三维点云数据。常…

上班摸鱼吗?一文详解代码生成神器-Velocity

引言 “我不是在教你学坏,而是教你如何提高生产效率。” ----------- 牛顿 人类社会能够一直进步发展出现在的文明世界,最大的一个原因就是这个世界上懒人居多,懒人为了偷懒就需要提高生产效率,效率提高节省下来的时间才能创造出艺术、娱乐以及更高效率的科学技术。程序员…

丑数问题,力扣264,坑点

丑数问题,力扣264,坑点 力扣链接 给你一个整数 n ,请你找出并返回第 n 个 丑数 。 丑数 就是质因子只包含 2、3 和 5 的正整数。 示例 1: 输入:n 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, 9, …

33 IRF配置思路

IRF配置思路网络括谱图 主 Ten-GigabitEthernet 1/0/49 Ten-GigabitEthernet 1/0/50 Ten-GigabitEthernet 1/0/51 备 Ten-GigabitEthernet 2/0/49 Ten-GigabitEthernet 2/0/50 Ten-GigabitEthernet 2/0/51 思路 主 1 利用console线进入设备的命令行页面去更改…