boom-analysis-0314.rst 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 3月14日日报
  2. ===========
  3. 今天对执行单元和功能单元的源码进行了简单的阅读,熟悉了一点Scala/Chisel的语法。
  4. execute.scala 中包含的 class
  5. ----------------------------
  6. execute.scala中定义了以下类:
  7. - ExeUnitResp
  8. - FFlagsResp: 只在浮点运算相关的模块找到它的使用
  9. - ExecutionUnitIO
  10. - ExeUnit classes: 在execution_units.scala被使用,在不同的 ISSUE_WIDTH 配置下,ExecutionUnits会使用其中 ISSUE_WIDTH 数量的执行单元
  11. - ALUExeUnit
  12. - FDivSqrtExeUnit
  13. - MemExeUnit
  14. - ALUMemExeUnit
  15. 容易找到其中的一些类包含关系:
  16. - ExeUnitResp: 在ExecutionUnitIO.resp 和 RobIo.wb_resps (rob.scala) 中被使用
  17. - ExecutionUnitIO: ExecutionUnit.io为它的一个实例
  18. functional_unit.scala
  19. ---------------------
  20. 该源文件定义了 FunctionalUnitIo, GetPredictionInfo, FuncUnitReq, FuncUnitResp, BypassData, BrResolutionInfo, BranchUnitResp 这些结构类,它们会和其他部件连接。
  21. 之后是各种功能单元的定义。和specification中说的一样,功能单元是按照抽象层次分类定义的。
  22. - 最高层是 **abstract class FunctionalUnit**,其中有 **FunctionalUnitIo** 存放功能单元中需要包含的数据和信号。功能单元能分为流水和非流水两种,用 **abstract class PipelinedFunctionalUnit** 和 **abstract class UnPipelinedFunctionalUnit** 两种抽象类表示。
  23. - 流水功能部件包含:
  24. - ALUUnit
  25. - MemAddrCalcUnit
  26. - FPUUnit
  27. - PipelinedMulUnit
  28. - 非流水功能部件包含:
  29. - MuldivUnit