计算机体系结构存储系统

news/2024/12/22 23:31:51/

存储系统原理

两种典型的存储系统:Cache存储系统和虚拟存储系统。前者主要目的是提高存储器速度,后者有主存储器和硬盘构成,主要用于扩大存储器容量。
在这里插入图片描述

存储系统的访问效率

e = T 1 T = 1 H + ( 1 − H ) × T 2 T 1 = f ( H , T 2 T 1 ) e=\frac{T_1}{T}=\frac{1}{H+(1-H)\times\frac{T_2}{T_1}}=f(H,\frac{T_2}{T_1}) e=TT1=H+(1H)×T1T21=f(H,T1T2)
可见访问效率主要与命中率和两级存储器的速度之比有关,访问效率实际上是表示存储系统访问速度能到达系统中访问较快组件的百分之多少。

交叉访问存储器

  1. 高位交叉访问存储器

在这里插入图片描述

  1. 低位交叉访问存储器
    在这里插入图片描述
    在这里插入图片描述

用概率刻画访问冲突问题

共有 n n n个存储体,每个存储周期只能取到 k k k个有效字,其余 n − k n-k nk个存储体有冲突。假设 p ( k ) p(k) p(k) k k k的概率密度函数PDF, k k k的平均值为:
N = ∑ k = 1 n k × p ( k ) N=\sum_{k=1}^{n}k\times p(k) N=k=1nk×p(k)
N N N是每个存储周期内能够访问到的平均有效字个数,通常称为并行存储器的加速比。

定义转移成功的概率为 g g g,即读出的是转移指令且转移成功的概率。我们有 p ( k ) = ( 1 − g ) k − 1 g , k = 1 , 2 , ⋅ ⋅ ⋅ , n − 1 p(k)=(1-g)^{k-1}g, k=1,2,···,n-1 p(k)=(1g)k1g,k=1,2,⋅⋅⋅,n1,前 ( k − 1 ) (k-1) (k1)个字不是转移指令或者是不成功的转移指令,第 k k k个字是转移指令且成功转移。

加速比可以通过以下方式计算:
N = g + 2 ( 1 − g ) g + 3 ( 1 − g ) 2 g + . . . + ( n − 1 ) ( 1 − g ) n − 2 g + n ( 1 − g ) n − 1 N=g+2(1-g)g+3(1-g)^2g+...+(n-1)(1-g)^{n-2}g+n(1-g)^{n-1} N=g+2(1g)g+3(1g)2g+...+(n1)(1g)n2g+n(1g)n1

这是一个等差 × \times ×等比数列求和问题(梦回高中)。

首先乘上等比数列的比 ( 1 − q ) (1-q) (1q),得
( 1 − g ) N = ( 1 − g ) g + 2 ( 1 − g ) 2 g + 3 ( 1 − g ) 3 g + . . . + ( n − 1 ) ( 1 − g ) n − 1 g + n ( 1 − g ) n (1-g)N=(1-g)g+2(1-g)^2g+3(1-g)^3g+...+(n-1)(1-g)^{n-1}g+n(1-g)^{n} (1g)N=(1g)g+2(1g)2g+3(1g)3g+...+(n1)(1g)n1g+n(1g)n

和原式作差(注意最后一项形式是不同的(少了 g g g)不能相减)得
N − ( 1 − g ) N = [ g + ( 1 − g ) g + ( 1 − g ) 2 g + . . . + ( 1 − g ) n − 2 g ] + n ( 1 − g ) n − 1 − n ( 1 − g ) n − ( n − 1 ) ( 1 − g ) n − 1 g N-(1-g)N=[g+(1-g)g+(1-g)^2g+...+(1-g)^{n-2}g]+n(1-g)^{n-1}-n(1-g)^{n}-(n-1)(1-g)^{n-1}g N(1g)N=[g+(1g)g+(1g)2g+...+(1g)n2g]+n(1g)n1n(1g)n(n1)(1g)n1g

前面一部分利用等比数列求和公式 S n = a 1 − a n q 1 − q S_n=\frac{a_1-a_nq}{1-q} Sn=1qa1anq,进行求和得到
g N = [ g − ( 1 − g ) n − 1 g 1 − ( 1 − g ) ] + n ( 1 − g ) n − 1 − n ( 1 − g ) n − ( n − 1 ) ( 1 − g ) n − 1 g gN=[\frac{g-(1-g)^{n-1}g}{1-(1-g)}]+n(1-g)^{n-1}-n(1-g)^{n}-(n-1)(1-g)^{n-1}g gN=[1(1g)g(1g)n1g]+n(1g)n1n(1g)n(n1)(1g)n1g
g N = 1 − ( 1 − g ) n − 1 + n ( 1 − g ) n − 1 − n ( 1 − g ) n − ( n − 1 ) ( 1 − g ) n − 1 g gN=1-(1-g)^{n-1}+n(1-g)^{n-1}-n(1-g)^{n}-(n-1)(1-g)^{n-1}g gN=1(1g)n1+n(1g)n1n(1g)n(n1)(1g)n1g

进行合并同类项可得
g N = 1 + ( n − 1 ) ( 1 − g ) n − 1 − n ( 1 − g ) n − ( n − 1 ) ( 1 − g ) n − 1 g gN=1+(n-1)(1-g)^{n-1}-n(1-g)^{n}-(n-1)(1-g)^{n-1}g gN=1+(n1)(1g)n1n(1g)n(n1)(1g)n1g
g N = 1 + ( n − 1 ) ( 1 − g ) n − n ( 1 − g ) n gN=1+(n-1)(1-g)^{n}-n(1-g)^{n} gN=1+(n1)(1g)nn(1g)n
g N = 1 − ( 1 − g ) n gN=1-(1-g)^{n} gN=1(1g)n

最终得到
N = 1 − ( 1 − g ) n g N=\frac{1-(1-g)^{n}}{g} N=g1(1g)n

通过打表查看,加速比和存储体个数以及程序转移概率之间的关系,由于转移指令的存在,实际的加速比大受限制。
在这里插入图片描述

虚拟存储器

多级页表

在这里插入图片描述
保证最后一级页表可以容纳所有虚实页号之间的映射:
2 g × N p N d ≥ N v N p 2^g\times\frac{N_p}{N_d}\geq\frac{N_v}{N_p} 2g×NdNpNpNv
取对数得
g ( l o g 2 N p − l o g 2 N d ) ≥ ( l o g 2 N v − l o g 2 N p ) g(log_2N_p-log_2N_d)\geq(log_2N_v-log_2N_p) g(log2Nplog2Nd)(log2Nvlog2Np)
最小满足以上条件的 g g g ⌈ l o g 2 N v − l o g 2 N p l o g 2 N p − l o g 2 N d ⌉ \lceil\frac{log_2N_v-log_2N_p}{log_2N_p-log_2N_d}\rceil log2Nplog2Ndlog2Nvlog2Np

快慢表

在这里插入图片描述

  • 快表按内容相联访问,内容:用户号+虚页号+实页号
  • 慢表按地址,将用户号和虚页号视为地址,内容:1位装入位+实页号

页面替换算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

高速缓冲存储器

在这里插入图片描述
在这里插入图片描述

  1. 全相联映象,主存的任意一块可以映射到Cache中的任意一块,映象关系有 C b × M b C_b\times M_b Cb×Mb种;
  2. 直接映象,主存中一块只能映射到Cache中的一个特定块中;
  3. 组相联映象,主存中一块可以映射到Cache中的一组块中。

计组中我们将区号叫做主存标识符。

在这里插入图片描述

Cache存储系统性能分析

在这里插入图片描述

Q:块很大时,如果块大小足以通纳一个程序,这样访问命中率为100%,或者是块足以容纳一个循环语句,命中率不至于为0。

三级存储系统

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
Reference
山东大学体系结构李峰老师ppt


http://www.ppmy.cn/news/75283.html

相关文章

Python爬虫为什么需要库

爬虫需要库是因为爬虫需要从网页中提取数据,并对数据进行处理和存储。库是一组已经封装好的工具,可以帮助爬虫快速地完成这些任务。这些库可以大大简化爬虫的开发过程,提高爬虫的效率和稳定性。 Python爬虫常用的库有很多,以下是…

PathWise开发(1) 将增加节点的功能移动到鼠标右键 d3.js/vue.js

PathWise(1) 从零开始搭建知识图谱/个性化学习路径/d3.js/vue.js 2023年5月20日&#xff1a;将增加节点的功能移动到鼠标右键 跑起来先 思路&#xff1a; 将我们之前的MyTableAddNode.vue&#xff0c;删除其中的内容只留下下面的表单<template><!-- <div class…

组态王使用指南|安装包|快速入门教程|含PLC与组态王网口串口通信|速查命令PDF

组态王安装包及安装方法&#xff1a; 组态王7.5 SP3下载安装授权_组态王安装包_城北许工α的博客-CSDN博客 组态王快速入门教程&#xff1a; 组态王教程(基础入门篇).pdf (book118.com) 组态王与PLC通讯&#xff1a; 网口通讯&#xff1a; 西门子1200与组态王TCP通讯 - 知…

CMake Practice 学习笔记五--cmake常用变量

这里列举一些cmake常用变量&#xff0c;后面带**表示常用&#xff0c;了解下&#xff0c;不用全部记住。 1、CMAKE_BINARY_DIR PROJECT_BINARY_DIR ** <projectname>_BINARY_DIR 这三个变量指代的内容是一样的&#xff0c;如果是 in source 编译,指的就是工程顶层目…

Python中的apply和lambda函数应用

Python中的apply和lambda函数应用 在pandas中&#xff0c;apply和lambda两个函数的使用方法简介和测试用例。 1、apply Pandas 的 apply() 方法是用来调用一个函数(Python method)&#xff0c;让此函数对数据对象进行批量处理。Pandas 的很多对象都可以使用 apply() 来调用函…

什么是 Schnorr 签名?

在密码学中&#xff0c;Schnorr 签名是由 Schnorr 签名算法生成的数字签名。 与大多数区块链不同&#xff0c;BTC自其早期以来基本保持不变&#xff0c;大多数升级都是有限的&#xff0c;并旨在增强网络的效率而不是功能。BTC协议的更新是非常罕见的&#xff0c;并且通常用于技…

SpringBoot 一个注解,优雅的实现重试机制retry

1&#xff1a;POM配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.…

Godot4节点树右键菜单添加自定义选项

前言 查看godot的源码推荐使用在线版vscode直接从github上看。&#xff08;直接把网址的com改成dev即可&#xff09; 重点查看以下源码 scene_tree_dock.h scene_tree_dock.cpp 开始 tool extends EditorPluginvar window var scene_menustatic func find_child_by_class(no…