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

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

  • 计算机系统组成
  • 存储器系统
    • 主存储器
    • 辅助存储器
    • 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.mzph.cn/bicheng/45109.shtml

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

相关文章

卷积是如何计算的

使用代码,看卷积是如何计算的。 torch.nn torch.nn.functional srtide 的用法,代表卷积核的步幅 import torch import torch.nn.functional as F # 这个是输入的一个二维矩阵 input torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],…

Javascript[ECMAScript] 新特性—1

背景 JS1.1(1997) 第一版基于Netscape Navigator 3.0中实现的JAVASCRIPT 1.1 JS1.2(1999) 基于Netscape Navigator 4.0中实现的JavaScript 1.2。添加了正则表达式、更好的字符串处理、新的控制语句、Try/Catch异常处理、更严格…

推荐3个提升工作效率的实用电脑工具

PearOCR PearOCR是一款基于网络的光学字符识别(OCR)工具,旨在通过先进的图像处理和机器学习技术,快速、准确地从图片中提取文字。该工具的所有功能完全免费,这主要得益于其所有文件都在本地进行识别,不需要…

完美解决:MySQL8报错:Public Key Retrieval is not allowed

在配置数据源的时候直接将属性allowPublicKeyRetrieval设置为true即可 &AutoReconnecttrue

使用getopt处理参数

文章目录 使用getopt处理参数1. shift 命令1.1 删除一个参数1.2 删除多个参数1.3 多次执行 shift 参数1.4 参数解析示例1.5 优化处理1.6 问题处理 2. getopt 命令2.1 常用参数及示例2.2 脚本参数优化示例2.3 参数校验 3. 示例展示4. eval 命令4.1 示例示例 1示例 2示例 3示例 4…

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线进入设备的命令行页面去更改…

【C语言】C语言-身份证管理系统(源码+注释)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

关于.NETCORE站点程序部署到nginx上无法访问静态文件和无法正确生成文件的问题解决过程。

我的netcore6项目,部署到IIS的时候,生成报告时,需要获取公司LOGO图片放到PDF报告文件中,这时候访问静态图片没有问题。 然后还有生成邀请二维码图片,这时候动态创建图片路径和图片也没有问题,可以在站点的…

Python爬虫教程第4篇-使用BeautifulSoup解析html

文章目录 Beautiful Soup简介安装Beautiful Soup快速开始如何使用Beautiful Soup中的对象TagNameAttributes多值属性 NavigableStringBeautifulSoupComment 遍历文档树子节点tag名字.contents 和 .children.descendants.strings 和 stripped_strings 父节点.parent.parents 兄弟…

git批量删除本地包含某字符串的特定分支

git批量删除本地包含某字符串的特定分支 git branch -a | grep 分支中包含的字符串 | xargs git branch -D git删除本地分支_git查看删除本地分支-CSDN博客文章浏览阅读989次。git branch -d <分支名>可以通过: git branch 查看所有本地分支及其名字&#xff0c;然后删…

JavaScript(9)——作用域的一些问题

如果在函数内部&#xff0c;变量没有声明直接赋值&#xff0c;也会当做全局变量看。强烈不推荐&#xff01;&#xff01; function op() {num 80}op()console.log(num) 在不同作用域下&#xff0c;可能存在变量命名冲突的情况&#xff1a; let num 10 function fn(){let num…

Spring-Spring、IoC、DI、注解开发

1、Spring是什么 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。 Spring整体架构 Spring优点&#xff1a; Spring属于低侵入设计。IOC将对象之间的依赖关系交给Spring,降低组件之间的耦合&#xff0c;实现各个层之间的解耦&#xff0c;让我们更专注于业务…

5G中的RedCap

5G中的RedCap&#xff1a;降低能力的重要性和实现方式 随着5G技术的推广和普及&#xff0c;设备和终端的多样化使得网络能力的管理变得更加复杂和关键。RedCap&#xff08;Reduced Capability&#xff09;作为一个重要的概念&#xff0c;旨在解决设备能力差异对网络服务和用户…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十三章 Linux连接档

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

前台线程和后台线程(了解篇)

在多线程编程中&#xff0c;理解线程的不同类型对于编写高效、稳定的程序至关重要。特别地&#xff0c;前台线程&#xff08;Foreground Threads&#xff09;与后台线程&#xff08;Background Threads&#xff09;在行为上有着根本的区别&#xff0c;这些区别直接影响到程序的…

jdevelope安装

准备 1.jdk1.8&#xff08;已经安装不做记录&#xff09; 2.下载jdevelope安装包 3.安装包安装jdevelope开发工具 4.创建或导入项目 下载jdevelope安装包 官网下载地址&#xff1a;https://edelivery.oracle.com 安装包安装jdevelope开发工具 cmd管理员权限运行安装脚本…

【栈和队列OJ题】

栈和队列OJ题 文章目录 栈和队列OJ题1. 用队列实现栈2. 用栈实现队列3. 括号匹配问题4. 循环队列 1. 用队列实现栈 OJ链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 好的&#xff0c;我们一起来看一下题目&#xff0c;题目是这样说的 思路&…

2024年06月CCF-GESP编程能力等级认证C++编程三级真题解析

本文收录于专栏《C等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里。订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级&…

天润融通引领客服革新,AI大模型助力品牌服务升级

AI时代&#xff0c;消费零售品牌的客户服务应该怎么做&#xff1f; 如今消费者的关注点已经越来越复杂&#xff0c;一条毛巾&#xff0c;关注点就可以包括&#xff1a; 是否婴幼儿可用&#xff0c;是否儿童成人可用&#xff1b;是否可以直接接触皮肤&#xff1b;是否无甲醛、…

张量笔记(4):张量网络

张量分解通常是将高维张量分解成一系列较低维的张量&#xff0c;表示能力相对较低。而张量网络可以表示复杂的高维数据结构&#xff0c;通过连接多个张量形成网络结构&#xff0c;可以更灵活地表示和处理复杂的数据关系。本节主要介绍HT和TT网络。 2.5.1 HT分解——首先我们引入…