解释计算机体系结构中缓存的性能?
在计算机中包含缓存内存的主要原因是通过减少访问内存所需的时间来提高系统性能。缓存性能的组成部分是**缓存命中**和**缓存未命中**。
每次CPU访问内存时,它都会确定缓存。如果请求的数据在缓存中,CPU会访问缓存中的数据,而不是物理内存,这就是缓存命中。如果数据不在缓存中,CPU会从主内存访问数据。这就是缓存未命中。
平均内存访问时间,**TM**是缓存访问时间**TC**加上物理内存访问时间**TP**的加权平均值。加权因子是命中率h。**TM**可以表示为
TM=h TC+(1−h)TP
由于**TC**远小于**TP**,因此提高命中率可以减少平均内存访问时间。下表显示了**TC=10 ns,TP=60 ns**以及h的各种值。
命中率和平均内存访问时间
| h | TM |
|---|---|
| 0.0 | 60 ns |
| 0.1 | 55 ns |
| 0.2 | 50 ns |
| 0.3 | 45 ns |
| 0.4 | 40 ns |
| 0.5 | 35 ns |
| 0.6 | 30 ns |
| 0.7 | 25 ns |
| 0.8 | 20 ns |
| 0.9 | 15 ns |
| 1.0 | 10 ns |
假设一个计算机系统具有一个8字节的关联缓存、一个直接映射缓存或一个两路组关联缓存。CPU按所示顺序访问以下位置。每个值的索引是其物理内存地址的低3位。
A0 B0 C2 A0 D1 B0 E4 F5 A0 C2 D1 B0 G3 C2 H7 I6 A0 B0
它可以确定这三种缓存配置的此访问模式的命中率和平均内存访问时间,再次假设
**TC**=10 ns 并且
**TP**=60ns。
首先,考虑关联缓存。它最初为空,并使用FIFO替换策略。下表显示了访问每个值时的缓存内容。18次访问中有7次命中,命中率为h = 0.389,平均内存访问时间为
**TM**=40.56 ns。
使用关联缓存的缓存活动
| 数据 | A | B | C | A | D | B | E | F | A | C | D | B | G | C | H | I | A | B |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | |
| C | B | B | B | B | B | B | B | B | B | B | B | B | B | B | B | B | B | |
| A | C | C | C | C | C | C | C | C | C | C | C | C | C | C | C | C | ||
| C | D | D | D | D | D | D | D | D | D | D | D | D | D | D | ||||
| H | E | E | E | E | E | E | E | E | E | E | E | E | ||||||
| E | F | F | F | F | F | F | F | F | F | F | F | |||||||
| G | G | G | G | G | G | |||||||||||||
| H | H | H | H | |||||||||||||||
| 命中? | √ | √ | √ | √ | √ | √ | √ |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP