跳转至

实验步骤

1. 查看Cache和TLB参数

  首先,利用第三方工具查看PC机的Cache和TLB参数,用于验证所编写的测量程序是否正确。

  运行实验包中的CPU-Z工具,点击“缓存”标签页,即可查看本机的Cache结构,如图4-1所示。

图4-1 查看Cache结构

  在虚拟机中输入命令sudo apt install -y x86info,安装x86info工具。安装完毕后,在终端中执行x86info -c命令,即可查看PC机的TLB结构信息,如图4-2所示。

图4-2 查看TLB结构信息

  由图4-2可知,示例PC机的内存页大小为4KB,且TLB采用4路组相联结构,共64条entry。

补充说明 📖

  每台PC机的TLB结构都不相同,请以实际情况为准。

2. 编写测试程序

  将实验包中的cache_test.c程序拷贝到虚拟机,完成各测量函数的编写。

  编写测量函数时,依次在不同的配置参数下进行访存,要求记录并打印每组参数下的平均访存时间。

特别注意 🔥

  记录时间时,需保证不同配置参数下的访存次数相同。

3. 记录实验结果,绘制访问时间折线图

  执行gcc -Og cache_test.c -o cache_test && ./cache_test对程序进行编译、运行。

  查看程序运行结果。对如图4-1和图4-2所示的PC机,参考测量结果如图4-3所示。

图4-3 执行程序并查看运行结果

特别说明 📢

  (1)程序运行时,应当如图4-3一般,实时输出每组参数下的各个平均访存时间。不同参数下的平均访存时间应当能观察到较为明显的梯度变化。此外,可自行编写程序,以根据所记录的一系列平均访存时间,解析出所测出的Cache参数值。

  (2)Cache参数的测量容易受到替换策略、其他层次Cache等影响,尤其是L2 Cache,故其实验结果可能不甚明显。例如,在图4-3中,测量L2 Cache相联度的平均访问时间梯度变化远不如测量其他Cache参数时那般明显。如果测量结果不明显,在实验报告中给出自己的分析。

  将测量各参数时的Cache平均访存时间绘制成折线图,结合折线图分析实验结果。

4. 思考题

  (1)为了进一步提高访存性能,现代处理器往往利用时间局部性和空间局部性,将所访问数据块相邻的数据块预取到Cache中。试分析数据预取将给实验结果带来什么影响?

  (2)试分析Cache对测量TLB造成何种影响?如何排除Cache的干扰?

  (3)测量TLB前,是否需要遍历访问一次全部空间?为什么?

  (4)要写出高效的程序,必须对底层硬件有足够的了解。请谈谈如何利用Cache或TLB提高程序性能。