计算机系统组成与GEM5

1,993 阅读5分钟

本文主要介绍 1.计算机内部存储结构是怎么样的 2. 用GEM5和NVMain完成研究的策略 3. 具体的代码实现 ==考研啥都不知道的人士 适合想了解计算机内部结构的人士/ 想做一些内存研究但是苦于没有教学资源的人士/ 笔者也是个新手,所以不正确的地方还请多多指教==

参考的博客和论文

博客1

:1 0005641( 2014) 05— 0133— 08 面向混合内存体系结构的模拟器

预备知识

懂得以下术语含义

ROM Read Only Memory ROM 主要用于存放计算机启动程序。与RAM相比,ROM的数据只能被读取而不能写入,如果要更改,就需要紫外线来擦除。另外RAM中的数据掉电丢失,而ROM就不会。

  在计算机开机的时候,CPU加电并开始准备执行程序。此时,由于电源关闭时。RAM中没有程序和数据,所以ROM就可以发挥作用了。

  BIOS( Basic Input Output System,基本输入输出系统)实际上就是被固化到主板的ROM芯片上的程序。它是一组与主板匹配的基本输入输出系统程序,能够识别各种硬件,还可以引导系统,这些程序指示计算机如何访问硬盘、加载操作系统并显示启动信息。

  ==这段话是典型的科班教材,几十年前这句话对的,但是你仔细想想ROM不能更改,那我想改变ROM程序了怎么办?实际上现在的ROM里面都是存储的BIOS引导程序(就是让系统运行BIOS程序的程序)==

随机储存器(RAM)Random Access Memory

RAM就是我们常说的内存。RAM中的内容可以按期地址随时进行存取,RAM主要特点是数据存取速度快,掉电数据丢失。

  按照存储单元的工作原理,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。

动态随机存储器(DRAM) 你猜计算机里装的是哪个?

你猜是哪一个

新型非易失存储器(NVM)

是指当电流关掉后,所存储的数据不会丢失的存储器。非易失性存储器中,依存储器内的数据是否能在使用电脑时随时改写为标准,可分为二大类产品,即ROM和Flash Memory。

非易失存储器,按字节存取、存储密度高、低能耗、读写性能接近DRAM,但读写速度不对称,读远快于写,寿命有限,没有数据寻道。

在这里插入图片描述

相变存储器(PCM)

相变存储器,简称PCM,相变存储器就是利用特殊材料在晶态和非晶态之间相互转化时所表现出来的导电性差异来存储数据的。相变存储器通常是利用硫族化合物在晶态和非晶态巨大的导电性差异来存储数据的一种信息存储装置。

闪存(FLASH MEMORY) 对这两个都是

在这里插入图片描述

高速缓存存储器(Cache)

位于CPU与内存之间的高速存储器,运行频率极高,一般是和CPU同频运作。在同等条件下增大Cache的容量就能减小CPU的等待时间。CPU往往需要重复读取同样的数据块,而缓存容量增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存上寻找,因此提高效率。

  由于CPU芯片面积和成本因素,Cache都很小。目前CPU中的Cache一般分成三级:L1 Cache (一级缓存)L2 Cache(二级缓存) L3 Cache(三级缓存),缓存级别并不是越多越好,命中率越高才是越好。而实际二级缓存以后,增加缓存的级数带来的命中率提高越来越少。

Cache是一种高速小容量的临时存储器,集成在CPU内部,存储CPU即将访问的指令或数据。在计算机中,CPU的速度很快而内存的速度相对很慢,为了解决一个矛盾,在CPU和内存之间放置Cache,来减少速度不对称之间的等待。Cache是CPU中的SRAM储存芯片

清楚计算机结构

在这里插入图片描述
==这张图只是为了让你明白他们的运行原理,实际上内部结构比这个复杂的多==

在这里插入图片描述


下面的就是现在怎么个研究办法了

首先gem5是一个全系统模拟器,主要特点就是精度高但是很慢。 但是gem5不支持混合内存,这就导致我们必须要找一个能够支持混合内存的仿真器,结合gem5来做实验。这里我们选择的就是NVM。

在这里插入图片描述
所以其他的部分我们都用gem5自带的,只需要增加一个混合控制器和NVM模块,就可以达到混合编译的目的。

DARM 模块沿用gem5中的原生模块 ,NVM 模块引入 NVMain中的NVM内存模型.

==dram和nvm的性能开销是不同的,暂时没有数量级的数据==

dram nvm
很慢

所以cache的替换策略也要发生改变,通过增加标志位来表明来自于NVM还是DRAM,要综合考虑命中率和所在介质做判断

在这里插入图片描述

控制器的功能和作用

在这里插入图片描述
主要有4个作用

  1. 页面侦测 记录内存页的冷热

  2. 页面筛选 判断页的冷热

  3. 页面迁移 确定迁移的策略和执行

  4. 页面重映射 维护重映射表

代码实现