先决条件:计算系统,处理单元
处理单元:
- 处理单元还具有一些称为寄存器的小内存。
- 处理器(处理单元)和内存之间的接口应以相同的速度工作,以提高系统性能。
记忆:
在内存中,有两种类型,SRAM和DRAM。 SRAM昂贵但快速,而DRAM便宜但速度慢。最初,SRAM被用作存储器。当内存大小开始增加时,DRAM的使用量增加了,如今只有DRAM用作主内存。
在此期间,处理器速度有所提高,但内存速度并未提高。因此,即使提高了处理器速度,系统性能也没有提高。为了解决该问题,设计人员在处理器和主存储器之间引入了高速SRAM。
此内存称为缓存。由于SRAM价格昂贵,因此SRAM的尺寸很小。它仅存储来自主存储器的最新访问。为了存储最新访问并检查高速缓存中的内容是否可用,设计中包括了高速缓存控制器。
处理器可以整体禁用缓存控制器,也可以指示缓存控制器缓存或不缓存任何特定的内存块。
下面是一个存储在内存中的数据示例:
C
// C program to execute for loop 100 times
#include
// Driver Code
int main()
{
int i, j;
j = 0;
// For loop execute 100 times
for (i = 0; i < 100; i++) {
j = j + i;
}
return 0;
}
解释:
在上面的代码中,当for循环执行100次时,第一次是从主内存中获取变量,而其余99次是从高速缓存中获取变量。这样可以提高性能。这称为“高速缓存命中”和“高速缓存未命中” 。在这种情况下,缓存命中率为99%,缓存未命中率为1%。默认情况下,启用缓存控制器以提高性能。
让我们讨论两种情况:
情况1:主内存在处理器和控制器之间共享。
在这种情况下,如果为处理器和控制器共享的内存块启用了高速缓存,并且如果高速缓存控制器对共享内存的块进行了高速缓存,则处理器将不知道共享内存中控制器的更新。处理器将仅从高速缓存存储器中获取数据。因此,需要从缓存中禁用此共享内存区域。因此,处理器需要指示高速缓存控制器执行此工作。易变的限定词可以完成这项工作。
情况2:处理器正在读写控制器寄存器。
在这种情况下,如果控制器寄存器由于执行某些内部函数而发生更改,则处理器将读取该寄存器。该控制器注册需要禁用缓存的内存位置。在这种情况下,还使用了挥发性限定符。