📜  C的挥发性限定词如何在计算系统中工作

📅  最后修改于: 2021-05-25 22:47:34             🧑  作者: Mango

先决条件:计算系统处理单元

处理单元:

  • 处理单元还具有一些称为寄存器的小内存。
  • 处理器(处理单元)和内存之间的接口应以相同的速度工作,以提高系统性能。

记忆:

在内存中,有两种类型,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:处理器正在读写控制器寄存器。

在这种情况下,如果控制器寄存器由于执行某些内部函数而发生更改,则处理器将读取该寄存器。该控制器注册需要禁用缓存的内存位置。在这种情况下,也使用易失性限定符

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。