本期验证实战任务将帮助学习香山昆明湖架构中TLB模块的设计,并接触MMU模块中除TLB外的其它内容,了解使用RISC-V指令架构设计模块的一般思路。点击此处报名填写报名表,报名提交后可加入QQ群(群号:976081653)以方便后续联系。

TLB模块为translation lookaside buffer的缩写,是MMU模块的一部分。MMU模块即memory management unit,负责虚拟内存地址向物理内存地址的映射,这种映射将通过多级页表存放在内存中,TLB则是处理器访问该页表的一个加速硬件,用于存储部分使用更为频繁的页表条目,以加速处理器的内存访问过程。在工作流程中,TLB将负责接收需要存储的页表映射并将其暂存,再次访问时就会命中TLB并快速返回结果。具体可详见 ITLB 文档

参与验证

本次验证任务请基于UnityChipForXiangShan仓库提供的验证框架完成验证工作。验证结束后向该仓库提交PR以提交。

在本期ITLB验证任务中,由于ITLB本身为MMU子模块,将不再按模块进行划分任务,参与本期验证时将需要验证完整的ITLB模块。我们将通过测试完整度(覆盖率等)进行分级,在验证过程中,您将需要按自选的功能点自行划分测试点进行测试,功能点及对应难度如下:

功能分类功能点详细描述难度
请求处理TLB接收请求接收来自CPU的虚拟地址转换请求,解析请求类型(读/写/执行)2
命中与未命中处理TLB miss处理未命中时触发页表遍历(Page Table Walk),加载缺失条目到TLB并重试转换3
TLB hit处理命中时直接返回物理地址及权限信息,完成地址转换2
缓存管理替换策略采用PLRU算法淘汰旧条目,为新条目腾出空间5
TLB缓存大小支持存储条目的最大数量,影响命中率和硬件成本3
TLB压缩合并相邻条目或编码优化,提升空间利用率3
维护操作刷新支持全TLB刷新(如ASID切换)或指定条目刷新(通过INVTLB指令)3
Reset上电或复位时清空所有TLB条目,重置内部状态1
安全与异常权限检查验证请求的操作类型(读/写/执行)是否符合页表条目中的权限标记4
异常处理触发Page Fault(权限违规/缺页)或TLB异常(无效条目),转交异常处理单元3
隔离通过ASID(地址空间标识符)隔离不同进程/虚拟机的TLB条目,避免信息泄露3
性能优化并行访问全相联结构支持同时查找多个条目,降低访问延迟2
大小页支持支持混合页大小(如4KB/2MB/1GB),减少TLB覆盖范围不足的瓶颈4
物理设计时序满足处理器流水线时序要求,通常设计为1-3周期延迟,影响关键路径和主频2

注:若您对功能点有所补充,也可自行划分。

BUG报告

若您在进行验证的过程中发现BUG,可通过UnityChipForXiangShan仓库中的BUG REPORT模板通过提issue的方式进行BUG报告。提交BUG时,请先在label中选择bug need to confirm标签,然后使用label提供的四种bug分级(minor、normal、serious、critical)中自行选择您认为最符合的分级并使用ut_fronted.mmu.itlb标签,若您对GitHub使用存在问题,也可以直接在QQ群(群号:976081653)中提出,我们承诺将保护您的知识产权不受侵犯,仅首次报告的BUG有效。通过Report Bug,在我们确认并评估后,您将可能获得额外的奖励。

提交说明

在您认为验证完成后,需要向我们提交如下成果:

1、代码仓库链接或压缩包。我们推荐使用GitHub托管您的代码,也可提交压缩包。提交前请务必确保您的代码正常运行,并在README.md文件中注明所有测试用例的运行方式,以便我们进行测试。若您使用GitHub并向我们提交链接,请注明代码版本,我们将使用您所注明的版本号下载您的代码。若您在提交后发生了必要的代码更改,请务必及时说明。

2、测试用例及其说明。通过尽可能简洁的任何形式说明您所划分的每个用例。

3、验证报告。

将上述三项内容打包并提交即可,最终提交的目录结构要求如下:

姓名_ut_fronted_mmu_itlb/
│
├── code/
│     ├── link.md
│     └── code.zip
│
├── cases/
│     ├── 功能点名称/
│     │      └── 测试用例说明.md
│     └── 功能点名称/
│
└── report/
      └── file.pdf

奖励说明

在您提交完成后,根据您所选择的任务的难度及完成情况,我们将会为您发放数额不等的奖金,您的努力将会获得回报。此外,如果您在验证过程中首次找到了bug并联系我们确认后,将根据bug实际情况获得额外的奖金。