计算机系统结构 存储体系

一、存储器的层次结构

1.1 存储层次的性能参数

(1)存储层次的平均每位价格 C

假设存储器M的容量、访问时间、每位价格为S,T,C,则存储层次的平均每位价格C

(2)命中率 H 和不命中率 F

命中率是指CPU在访问存储系统时,在存储器M中找到所需信息的概率。
不命中率=1-命中率。

(3)平均访存时间 T

二、“Cache-主存”和“主存-辅存”层次

2.1 Cache-主存

2.2 主存-辅存

2.3 比较

三、Cache基本工作原理和结构

3.1 Cache的基本结构

在带Cache的存储器中, CPU的访存地址被分割成两部分:
① 块地址(块框架地址、块号):用于查找该块在Cache中的位置。
② 块内位移(块内偏移量):用于确定所访问的数据在块中的位置。

3.2 Cache的工作过程

(1)当CPU需要进行访存时,首先给出主存实地址。
(2)地址映像变换机构接收到主存实地址后,根据块号判定所访问的信息字是否在Cache中。
若在,通过地址变换机构变换为Cache块地址,在根据块内地址,对Cache进行存取。
若不在,则通知访问Cache块失效。然后通过CPU与主存之间的直接数据通路访问主存,将被访问字直接送给CPU,
并将包含该字的新块装入Cache。若Cache已满,则通过替换策略实现机构,调出某一Cache块,然后装入所需的块。

3.3 映像规则

(1)全相联映像

全相联映像是指主存中的任一块可以被放置到Cache中的任意一个位置。

(2)直接映像

直接映像是指主存中的每一块只能被放置到Cache中唯一的一个位置。

(3)组相联映像

组相联映像是指主存中的每一块可以被放置到Cache中固定的一个组中的任何一个位置。

3.4 替换策略

(1)随机法

随机选择被替换的块。

(2)先进先出(FIFO)

选择最早调入的块作为被替换的块。

(3)最近最少使用法(LRU)

选择近期最少被访问的块作为被替换的块。

3.5 写策略

(1)写直达法(WT)

在执行“写”操作时,不仅把信息写入Cache中相应的块,而且也写入下一级存储器中相应的块。

(2)写回法(WB)

在执行“写”操作时,只把信息写入Cache中相应的块,该块只有在被替换时,才被写回主存。

3.6 数据Cache、指令Cache及混合Cache

数据Cache :存放数据的Cache 。
指令Cache:存放指令的Cache。
混合Cache:既存放数据又存放指令Cache。

对数据的访问有读操作和写操作,对指令的访问仅是读操作。所以数据Cache需要进行写操作,而指令Cache则不需要进行写操作。
读入指令Cache的指令在块替换出去时不需将Cache中的指令写回主存,而读入数据Cache的数据,在进行块替换时,通常需要写回主存。

对相同的容量,指令Cache的命中率比数据Cache的高。
将混合Cache分离成指令Cache和数据Cache有助于提高Cache的命中率。

3.7 Cache性能分析

(1)平均访问时间

平均访问时间=命中时间+失效率×失效开销
平均访存时间=指令所占的百分比×(指令命中时间+指令失效率×失效开销)+数据所占的百分比×(数据命中时间+数据失效率×失效开销)

(2)程序执行时间

在考虑存储器对系统性能影响时,可以将系统性能描述为

CPU时间=(CPU执行周期数+存储器停顿周期数)×时钟周期时间
存储器停顿周期数 = “读”的次数 × 读失效率 × 读失效开销 + “写”的次数 × 写失效率 × 写失效开销

如果读、写失效率以及读、写失效开销相差不大

存储器停顿周期数 = 访存次数 × 失效率 × 失效开销
CPU时间 = IC × [CPIexe + 访存次数 / 指令数 × 失效率 × 失效开销] × 时钟周期时间

3.8 Cache优化

(1)8种降低失效率方法

增加Cache块大小
提高相联度
增加Cache的容量
Victim Cache
伪相联映像Cache
硬件预取
编译器控制的预取
编译器优化

(2)5种减少失效开销方法

读失效优于写
写缓冲合并
请求字处理技术
非阻塞Cache技术
采用两级Cache

(3)4种减少命中时间方法

容量小、结构简单的Cache
虚拟Cache
Cache 访问流水化
Trace Cache

3.9 降低Cache失效率的方法

(1)失效的原因

1)强制性失效:当第一次访问一个块时,该快不在Cache中,需从下一级存储器中调入Cache,这就是强制性失效。
2)容量失效:如果程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就是发生失效,
这种失效称为容量失效。
3)冲突失效:在组相联或直接映像Cache中,若太多的块映像到同一组中,则会出现该组中的某个块被别的块替换、然
后又被重新访问的情况,这样就发生了冲突失效。

(2)增加Cache块大小

(3)提高相联度

(4)增加Cache的容量

(5)Victim Cache

时间: 2024-08-06 11:58:17

计算机系统结构 存储体系的相关文章

计算机系统结构,组成和实现

计算机系统结构的定义: 计算机系统结构是其所处环境中最高层次的概念,是对计算机系统中各个机器之间界面的划分和定义,以及对各级界面上,下的功能进行分配.也称为体系结构. 计算机体系结构指的是计算机系统设计的观念和架构,描述计算机在实际中所做的设计的原则. 计算机体系结构是从程序员的角度所看到的系统的属性,是概念上的结构和功能上的行为. 例如: 功能特性指令系统及其执行模式: 数据表示:硬件直接识别和处理的数据类型 寻址技术:编址方式,寻址方式和定位方式 寄存器定义:寄存器的定义,数量和使用规则 指

计算机系统结构之重要知识点总结2

一.名词解释 1)虚拟机:指通过软件模拟具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统 2)系统加速比:同一个任务在系统改进前花费总时间和在系统改进后花费总时间的比率 3)Amdahl定律:计算计算机系统中某个部件改进后能获得多少总性能提高的定律 4)系列机:由同一厂家生产的具有相同的系统结构,但是具有不同组成和实现的一系列不同型号的计算机 5)模拟:指用软件的方法在一台现有的计算机上实现另外一台计算机的指令集 6)仿真:指用一台现有计算机的微程序取解释实现另外一个计算机的指令

计算机系统结构概述

计算机系统的多层次结构: 是从使用语言的角度,基于程序员与计算机系统对话中所采用的语言结构和语义划分. 系统结构.组成和实现三者的相互关系: 具有相同系统结构的计算机可以采用不同的组成,一种计算机组成可以采用多种不同的计算机实现: 采用不同的系统结构会使可以采用的组成技术产生差异,计算机组成也会影响系统结构. 计算机系统的设计原则: 哈夫曼压缩原理 Amdahl定律 程序访问的局部性规律 计算机系统的设计思路: 由上往下(Top-down) 由下往上(Bottom-up) 由中间开始(Middl

浮点数在计算机中存储方式

浮点数在计算机中存储方式 C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的, float遵从的是IEEE R32.24 ,而double 遵从的是R64.53. 无论是单精度还是双精度在存储中都分为三个

计算机系统结构(一)

第一章 计算机系统结构基本概念 1.1.1.计算机系统的层次结构 计算机系统是由硬件和软件组成的,按照功能划分为7个层次 0级机器有硬件实现是机器的硬件内核 1级机器有位程序(固件)实现 ,它根据各种指令的操作所需要的控制时 序,配备一套微指令,编写微程序,控制信息在个寄存器之间的传送. 2级是传统的机器语言机器.这级的机器语言是该机的指令系统.机器语言的程序员用着记得指令系统编写的程序有第一级的为程序进行解释. 3级是操作系统机器 4级是汇编语言机器.有汇编语言编写的程序首先翻译成第3级或者第

计算机系统结构

一.计算机的种类 个人计算机         Personal Computer (PC) 工作站              WorkStation (WS) 小型机              Mini Computer 中型机              Mainframe 小巨型机            Minisupercomputer 巨型机              Supercomputer 二.摩尔定律 1.集成电路芯片上所集成的电路的数目,每隔18个月就翻一番. 2.微处理器的性能

《深入理解Spark-核心思想与源码分析》(四)第三章存储体系

天行健,君子以自强不息:地势坤,君子以厚德载物.--<易经> 本章导读 Spark的初始化阶段.任务提交阶段.执行阶段,始终离不开存储体系. Spark为了避免Hadoop读写磁盘的I/O操作成为性能瓶颈,优先将配置信息.计算结果等数据存入内存,极大的提升了系统的执行效率. 4.1 存储体系的概述 4.1.1 块管理器BlockManager的实现 原文地址:https://www.cnblogs.com/sunrunzhi/p/10321249.html

从java toBinaryString() 看计算机数值存储方式(原码、反码、补码)

一.toBinaryString 方法及其含义 1.1 方法说明 该方法位于java.lang.Integer类中 方法签名:public static String toBinaryString(int i) 含义:返回参数数值的补码形式,正数则忽略前面的0.(官方注释:返回表示传入参数的一个无符号(这里无符号大概单纯指数值前面没有+-号,实则是有符号位) 的二进制字符串.如果参数为负数x,返回的值则为 2^32 + x [就是它的补码]) 1.2 使用示例 System.out.printl

【5分钟系列】计算机系统结构的定义

1,计算机系统的层次结构 从语言角度来看,一台计算机是由软硬件组合成的,按照功能划分,可以形成多层机器级组成的层次结构. 不同层次的语言,可以使用翻译或解释技术来实现.例如 C# 语言是应用语言,在编译时会生成 IL 语言(高级语言),属于翻译(Translation 美 /tr?nz?le??n,tr?ns?le??n/ ). 在启动程序时,IL 翻译成汇编,由操作系统执行. 不断将高一级的语言转换为低一级的语言. 而解释(Interpretation 美 /?n?t??rpr??te??n/