计算机组成原理(五)

news2024/12/23 17:52:09

3.理解主存储器与CPU的连接原理;
  主存通过数据总线、地址总线和控制总线与CPU连接;
  数据总线的位数与工作频率的乘积正比于数据传输率;
  地址总线的位数决定了可寻址的最大内存空间;
  控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻。
在这里插入图片描述

4.掌握Cache的功能、基本原理和命中率计算方法;
Cache存储阵列由高速存储器构成,用于存放主存信息副本,容量小于主存,编址方式、物理单元长度均与主存相同;
功能:提高存储器的平均访问速度,从而使存储器的速度和CPU的速度相匹配。
原理:程序访问的局部性;
命中率计算方法:CPU要访问的内容在Cache中的比率;Cache命中率一般高于85%
  总命中次数为Nc,访问主存次数为Nm,CPU访问Cache的命中率为H:H=Nc/(Nc+Nm)
  命中率与程序行为、Cache的容量、Cache的组织和地址映射方式、块的大小有关。

5.理解Cache的几种地址映射的原理和特点;
Cache中存放数据的部分称为数据Cache,存放指令的部分称为指令Cache,二者统称内容Cache;
Cache中有专门实现主存地址与Cache地址映像的机构,一般由相联存储器组成,其中记录主存内容存入Cache时两者地址对应关系的部件称为标识Cache;
替换策略实现机构是在Cache未命中又没有空闲空间是,按照某种替换算法,调出某一Cache块,然后从内存中装入所需的块;
直接映像方式:
  任何一块主存块只能复制到某一固定的Cache块中;
  当CPU访存时,给出20位主存地址,高14位是主存块号(高6位是主存区号,低8位是区内块号即Cache块号,用于实现与Cache间的地址映像与变换),低6位是块内的字节地址;
  主存块在Cache中的位置固定,一个主存块只能对应一个Cache块,故标识Cache中只需存储每一个块所对应的主存区号;
  访存时,以主存块号为地址定位到标识Cache的相应位置,将主存中的区号与标识Cache中的区号好比较,
    若一样,则Cache命中,主存块号和块内地址变换为Cache块号和块内地址;
    若不同,则表示所需块未装入Cache,此时需要将所需块从主存复制到Cache中并修改对应的标识Cache。
  特点:硬件实现简单,地址变换速度快,主存块在Cache中位置固定,没有替换策略问题,块的冲突率高,Cache利用率降低。
全相联映像方式:
  任意主存单元的数据或指令可以存放到Cache的任意单元中去;
  进行地址变换时,主存地址被分为两部分,高14位为主存块号,低6位为块内地址。Cache标记也为14位,用于指示装入Cache对应块中的主存块号;
  访存时,主存块号也Cache标记相联比较,
    若一样,则表示被访主存块已装入Cache,根据Cache块号访问Cache;
    若不同,则被访主存块未复制到Cache中,
      若此时Cache中有空块,则从主存调入所需块并建立标记;
      若Cache中无空块,则淘汰某一Cache块,再调入新快并修改Cache标记。
  特点:空间利用率高,只有Cache中的块全部装满后才会出现块冲突,块冲突概率小,硬件逻辑复杂,价格高;
组相联映像方式:
  将Cache进行分组,每组块数固定,主存按照Cache的块尺寸分割成若干块。主存中的任何一块只能存放到Cache中的某一固定组中,但存放在该组的哪一块是灵活的;
  12位Cache地址分为3部分,6位组号,2位组内块号和6位块内地址;
  20位主存地址高14位为块号(高8位作为标记存储在表示Cache中,低6位为所在的Cache组号),低6位为块内地址;
  标识Cache中存放每块对应的Cache组内块号,便于地址映像机构形成Cache地址。组的映像是直接映像,主存块号的低6位可以直接作为Cache的组号,不用在表示Cache中指明;
  访存时,地址先被分为两部分,14位块号(8位标记和6位Cache组号)和6位块内地址,根据主存地址中的组号查找表示Cache,在标识Cache中将对应组的4个标记与主存地址中的相联比较,
    若一样,则Cache命中,将匹配块的Cache组内块号取出与主存地址中的组号和块内地址拼接得到访问内容的Cache地址;
    若不同,则未命中,对主存进行访问,将主存中的块调入Cache,将主存地址中的标记写入标识Cache,改变地址映像关系;
  Cache中组的大小为1,则组相联映像就变成直接映像。若Cache只有一个组,则组相联映像就变成全相联映像;
  用多个相等比较器来代替相联访问,以加快查表的速度,这种组相联映像方式称为多路组相联,如:每组中有4块,就被称为四路组相联。

6.理解Cache的几种替换算法;理解Cache的写操作策略;
Cache刷新:Cache存放满了之后,必须要替换掉Cache一个块中的数据或指令,来存放新的数据或指令;
替换算法:
  最近最久未使用算法LRU:将近一段时间内CPU最久未使用的数据替换掉;
  最近最少使用算法LFU:让Cache控制器记录Cache中每块数据最近使用的次数,替换最近使用次数最少的数据块;
  随机替换算法;
  顺序替换算法;
  先进先出替换算法FIFO;
Cache写策略:
  写直达法:数据被同时写入主存和Cache中,保证了内存中的数据总是最新的,但是增加了CPU占用系统总线的时间;
  写回法:CPU将最新的数据写入Cache中,不写入内存,仅当Cache要替换数据时才写入内存。Cache中增加了一位状态位,称为修改位。要替换数据时先查看修改位,
    若修改位为0,则Cache中的数据未修改过可以直接舍弃;
    若修改位为1,则Cache中的数据是新数据,需要写入内存,然后修改位清0。写回法必要时才更新内存的内容,减少CPU占用系统总线的时间。

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

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

相关文章

excel操作实例:如何制作一个学习计划阶段图表

预则立不预则废。不管是为了避免被裁员的窘迫,还是为了获得更高的薪水,都有必要在2023年尽快学精Excel,成为行业高手。教程把要成为Excel高手的几道坎,也是要攻克的目标做成图表,希望大家的努力更有效。要变成Excel高手…

Redis 缓存穿透、缓存击穿和缓存雪崩

Redis 缓存穿透和缓存雪崩 缓存穿透和缓存雪崩这两个概念和知识点我们一定要掌握,因为我们工作中经常会遇到缓存穿透和缓存雪崩的情况。 Redis 缓存穿透(查不到) 缓存穿透是指客户端请求一个缓存和数据库中都不存在的 key。由于缓存中不存在…

【遇见青山】项目难点:集群下的分布式锁问题

【遇见青山】项目难点:集群下的分布式锁问题1.问题简介2.分布式锁分析3.基于Redis实现分布式锁1.0版本4.基于Redis实现分布式锁2.0版本,解决锁误删问题5.基于Redis实现分布式锁3.0版本,解决锁的原子性问题1.问题简介 在《【遇见青山】项目难…

Sliver取代Cobalt Strike成黑客渗透工具“新宠”

8月25日消息,攻击者逐渐弃用Cobalt Strike渗透测试套件,转而使用不太知名的类似框架。开源跨平台工具Sliver正取代Brute Ratel成为受攻击者青睐的武器。 在过去的几年里,Cobal Strike被各类攻击者滥用(包括勒索软件操作&#xff…

行为型模式 - 模板方法模式Template Method

学习而来,代码是自己敲的。也有些自己的理解在里边,有问题希望大家指出。 模式的定义与特点 模板方法(Template Method),模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类…

JavaSE XML解析技术的使用详解

文章目录XML解析技术XML解析技术介绍Dom4j解析XML文件Dom4j解析各个节点Dom4j解析案例实战XML解析技术 XML解析技术介绍 XML的数据作用是什么? 最终需要怎样处理? 作用: 存储数据、做配置信息、进行数据传输。 最终需要被程序进行读取,解析里面的信息。 XML解析…

【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Python蓝桥杯训练:基本数据结构 [链表]

Python蓝桥杯训练:基本数据结构 [链表] 文章目录Python蓝桥杯训练:基本数据结构 [链表]一、链表理论基础知识二、有关链表的一些常见操作三、力扣上面一些有关链表的题目练习1、[移除链表元素](https://leetcode.cn/problems/remove-linked-list-element…

TCP报头详解及TCP十种核心机制(一)

目录 前言: TCP报头 TCP核心机制 一、确认应答 二、超时重传 小结: 前言: 这篇文章详细介绍了TCP报头中的一些核心数据,及两种TCP核心机制。其他的一些机制会在后面文章中详细介绍。 TCP报头 解释: 1&#xff…

电商仓储与配送云仓是什么?

仓库是整个供给链的关键局部。它们是产品暂停和触摸的点,耗费空间和时间(工时)。空间和时间反过来也是费用。经过开发数学和计算机模型来微调仓库的规划和操作,经理能够显著降低与产品分销相关的劳动力本钱,进步仓库空间应用率,并…

docker/docker-compose 安装mysql5.7

目录使用docker安装mysql5.7docker普通安装docker生产环境安装使用docker-compose 安装注意注意一:docker-compose权限问题注意二:docker pull 找不到镜像使用docker安装mysql5.7 docker普通安装 docker pull mysql:5.7 # 启动容器 docker run -p 3306:3306 --name mysql -e …

数组和对象的拷贝(复制)

复制必须要产生新的对象。以下代码不是复制。 const arr ["孙悟空", "猪八戒", "沙和尚"]const arr2 arr // 不是复制,只是将arr的值赋给arr2,他们指的还是一个对象console.log(arr) // 二者输出一样 console.log(…

数楼梯(加强版)

数楼梯(加强版) 题目背景: 小明一天放学回家,看到从1楼到2楼共有n个台阶,因为好奇,他想尝试一下总共有几种方案到二楼?他可以1步,2步,3步的跳,不能跳3步以上. 他试了很多次都没有解决这个问题,于是请求聪明的你帮忙解决这个问题. 题目描述: 1楼到2楼楼梯有n级台阶。小明每…

Learning C++ No.8【内存管理】

引言: 北京时间:2023/2/12/18:04,昨天下午到达学校,摆烂到现在,该睡睡,该吃吃,该玩玩,在一顿操作之下,目前作息调整好了一些,在此记录,2月11&…

C++基础(6) - 复合类型(下)

文章目录指针1、指针概述1.1 存储器和存储地址空间1.2 内存地址1.3 指针和指针变量2、声明和初始化指针变量2.1 指针变量的声明2.2 指针变量的初始化3、使用指针变量3.1 解除引用3.2 野指针和空指针4、指针的宽度和跨度4.1 自身类型和指向类型4.2 指针变量所取内容的宽度4.3 指…

chatGPT会是银弹吗

chatGP最近火的一塌糊涂,它通过语言生成技术和自然语言处理能力,帮助用户快速解决问题并生成内容。目前,这款工具现在已经拥有超过一亿的活跃用户,并且因其高效率和易用性而受到了广大用户的好评。 不过谷歌可就倒霉了&#xff0c…

Shells:一款功能强大的反向Shell快速生成工具

关于Shells Shells是一款功能强大的反向Shell快速生成工具,该工具由4ndr34z负责开发和维护,可以帮助广大研究人员轻松生成常用的反向Shell。如果你需要一种简单的方法来生成格式化的PowerShell以及Python反向Shell的话,Shells这款工具将是你…

【IPD】敏捷开发与IPD结合的实践培训课程「3月11-12日」

课程名称敏捷开发与 IPD结合的实践 (Agile Development - IPD and Agile Development Practice )参加对象企业总工、技术总监、系统架构师、研发经理、测试经理、质量/品质经理、研发测试骨干,以及研发测试技术人员。课程背景软件系统的日益复杂化和用户…

C语言学习笔记-内存管理

这篇将讲解 C 中的动态内存管理。C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。 序号函数和描述1void calloc(int num, int size);在内存中动态地分配 num 个长度为 size 的连续空间&#xff0c;并将每一个字节都初始化为 0。所以…

2023的金三银四,测试员还能找到好工作吗?

按照往年的惯例&#xff0c;春节后复工的 3 月、4 月是人员跳槽最频繁的时候&#xff0c;俗称“金三银四”。然而&#xff0c;市场大环境的影响&#xff0c;很多行业感受到了一丝寒冷的气息。 我们以为受影响比较轻的互联网行业&#xff0c;头上也充满乌云&#xff0c;所谓互联…