Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
cf30f412
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
9 个月 前同步成功
通知
1183
Star
3914
Fork
526
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
XiangShan
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
cf30f412
编写于
8月 06, 2023
作者:
X
Xuan Hu
提交者:
huxuan0307
8月 06, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
backend: refactor
* Prepare for merge master
上级
fd6a6c99
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
84 addition
and
78 deletion
+84
-78
src/main/scala/xiangshan/DbEntry.scala
src/main/scala/xiangshan/DbEntry.scala
+1
-1
src/main/scala/xiangshan/backend/CtrlBlock.scala
src/main/scala/xiangshan/backend/CtrlBlock.scala
+0
-0
src/main/scala/xiangshan/backend/MemBlock.scala
src/main/scala/xiangshan/backend/MemBlock.scala
+4
-5
src/main/scala/xiangshan/backend/ctrlblock/LsInfo.scala
src/main/scala/xiangshan/backend/ctrlblock/LsInfo.scala
+76
-0
src/main/scala/xiangshan/backend/rob/Rob.scala
src/main/scala/xiangshan/backend/rob/Rob.scala
+0
-70
src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
+2
-1
src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
+1
-1
未找到文件。
src/main/scala/xiangshan/DbEntry.scala
浏览文件 @
cf30f412
...
...
@@ -3,7 +3,7 @@ package xiangshan
import
chipsalliance.rocketchip.config.Parameters
import
chisel3._
import
chisel3.util.log2Ceil
import
xiangshan.backend.
rob
.
{
DebugLsInfo
,
DebugMdpInfo
}
import
xiangshan.backend.
ctrlblock
.
{
DebugLsInfo
,
DebugMdpInfo
}
import
xiangshan.cache.DCacheBundle
import
xiangshan.backend.fu.FuType
...
...
src/main/scala/xiangshan/backend/CtrlBlock.scala
已删除
100644 → 0
浏览文件 @
fd6a6c99
src/main/scala/xiangshan/backend/MemBlock.scala
浏览文件 @
cf30f412
...
...
@@ -19,22 +19,21 @@ package xiangshan.backend
import
chipsalliance.rocketchip.config.Parameters
import
chisel3._
import
chisel3.util._
import
coupledL2.PrefetchRecv
import
freechips.rocketchip.diplomacy.
{
BundleBridgeSource
,
LazyModule
,
LazyModuleImp
}
import
freechips.rocketchip.tile.HasFPUParameters
import
coupledL2.PrefetchRecv
import
utils._
import
utility._
import
utils._
import
xiangshan._
import
xiangshan.backend.Bundles.
{
DynInst
,
MemExuInput
,
MemExuOutput
}
import
xiangshan.backend.ctrlblock.DebugLSIO
import
xiangshan.backend.exu.MemExeUnit
import
xiangshan.backend.fu._
import
xiangshan.backend.rob.
{
DebugLSIO
,
RobLsqIO
}
import
xiangshan.backend.rob.
RobLsqIO
import
xiangshan.cache._
import
xiangshan.cache.mmu.
{
TLBNonBlock
,
TlbReplace
,
VectorTlbPtwIO
}
import
xiangshan.mem._
import
xiangshan.mem.mdp._
import
xiangshan.mem.prefetch.
{
BasePrefecher
,
SMSParams
,
SMSPrefetcher
}
import
Bundles.
{
DynInst
,
MemExuInput
,
MemExuOutput
}
class
Std
(
cfg
:
FuConfig
)(
implicit
p
:
Parameters
)
extends
FuncUnit
(
cfg
)
{
io
.
in
.
ready
:=
io
.
out
.
ready
...
...
src/main/scala/xiangshan/backend/ctrlblock/LsInfo.scala
0 → 100644
浏览文件 @
cf30f412
package
xiangshan.backend.ctrlblock
import
chipsalliance.rocketchip.config.Parameters
import
chisel3._
import
chisel3.util._
import
xiangshan.XSBundle
class
DebugMdpInfo
(
implicit
p
:
Parameters
)
extends
XSBundle
{
val
ssid
=
UInt
(
SSIDWidth
.
W
)
val
waitAllStore
=
Bool
()
}
class
DebugLsInfo
(
implicit
p
:
Parameters
)
extends
XSBundle
{
val
s1
=
new
Bundle
{
val
isTlbFirstMiss
=
Bool
()
// in s1
val
isBankConflict
=
Bool
()
// in s1
val
isLoadToLoadForward
=
Bool
()
val
isReplayFast
=
Bool
()
}
val
s2
=
new
Bundle
{
val
isDcacheFirstMiss
=
Bool
()
// in s2 (predicted result is in s1 when using WPU, real result is in s2)
val
isForwardFail
=
Bool
()
// in s2
val
isReplaySlow
=
Bool
()
val
isLoadReplayTLBMiss
=
Bool
()
val
isLoadReplayCacheMiss
=
Bool
()
}
val
replayCnt
=
UInt
(
XLEN
.
W
)
def
s1SignalEnable
(
ena
:
DebugLsInfo
)
=
{
when
(
ena
.
s1
.
isTlbFirstMiss
)
{
s1
.
isTlbFirstMiss
:=
true
.
B
}
when
(
ena
.
s1
.
isBankConflict
)
{
s1
.
isBankConflict
:=
true
.
B
}
when
(
ena
.
s1
.
isLoadToLoadForward
)
{
s1
.
isLoadToLoadForward
:=
true
.
B
}
when
(
ena
.
s1
.
isReplayFast
)
{
s1
.
isReplayFast
:=
true
.
B
replayCnt
:=
replayCnt
+
1.
U
}
}
def
s2SignalEnable
(
ena
:
DebugLsInfo
)
=
{
when
(
ena
.
s2
.
isDcacheFirstMiss
)
{
s2
.
isDcacheFirstMiss
:=
true
.
B
}
when
(
ena
.
s2
.
isForwardFail
)
{
s2
.
isForwardFail
:=
true
.
B
}
when
(
ena
.
s2
.
isLoadReplayTLBMiss
)
{
s2
.
isLoadReplayTLBMiss
:=
true
.
B
}
when
(
ena
.
s2
.
isLoadReplayCacheMiss
)
{
s2
.
isLoadReplayCacheMiss
:=
true
.
B
}
when
(
ena
.
s2
.
isReplaySlow
)
{
s2
.
isReplaySlow
:=
true
.
B
replayCnt
:=
replayCnt
+
1.
U
}
}
}
object
DebugLsInfo
{
def
init
(
implicit
p
:
Parameters
)
:
DebugLsInfo
=
{
val
lsInfo
=
Wire
(
new
DebugLsInfo
)
lsInfo
.
s1
.
isTlbFirstMiss
:=
false
.
B
lsInfo
.
s1
.
isBankConflict
:=
false
.
B
lsInfo
.
s1
.
isLoadToLoadForward
:=
false
.
B
lsInfo
.
s1
.
isReplayFast
:=
false
.
B
lsInfo
.
s2
.
isDcacheFirstMiss
:=
false
.
B
lsInfo
.
s2
.
isForwardFail
:=
false
.
B
lsInfo
.
s2
.
isReplaySlow
:=
false
.
B
lsInfo
.
s2
.
isLoadReplayTLBMiss
:=
false
.
B
lsInfo
.
s2
.
isLoadReplayCacheMiss
:=
false
.
B
lsInfo
.
replayCnt
:=
0.
U
lsInfo
}
}
class
DebugLsInfoBundle
(
implicit
p
:
Parameters
)
extends
DebugLsInfo
{
// unified processing at the end stage of load/store ==> s2 ==> bug that will write error robIdx data
val
s1_robIdx
=
UInt
(
log2Ceil
(
RobSize
).
W
)
val
s2_robIdx
=
UInt
(
log2Ceil
(
RobSize
).
W
)
}
class
DebugLSIO
(
implicit
p
:
Parameters
)
extends
XSBundle
{
val
debugLsInfo
=
Vec
(
backendParams
.
LduCnt
+
backendParams
.
StaCnt
,
Output
(
new
DebugLsInfoBundle
))
}
src/main/scala/xiangshan/backend/rob/Rob.scala
浏览文件 @
cf30f412
...
...
@@ -31,76 +31,6 @@ import xiangshan.frontend.FtqPtr
import
xiangshan.mem.
{
LqPtr
,
SqPtr
}
import
xiangshan.backend.Bundles.
{
DynInst
,
ExceptionInfo
,
ExuOutput
}
class
DebugMdpInfo
(
implicit
p
:
Parameters
)
extends
XSBundle
{
val
ssid
=
UInt
(
SSIDWidth
.
W
)
val
waitAllStore
=
Bool
()
}
class
DebugLsInfo
(
implicit
p
:
Parameters
)
extends
XSBundle
{
val
s1
=
new
Bundle
{
val
isTlbFirstMiss
=
Bool
()
// in s1
val
isBankConflict
=
Bool
()
// in s1
val
isLoadToLoadForward
=
Bool
()
val
isReplayFast
=
Bool
()
}
val
s2
=
new
Bundle
{
val
isDcacheFirstMiss
=
Bool
()
// in s2 (predicted result is in s1 when using WPU, real result is in s2)
val
isForwardFail
=
Bool
()
// in s2
val
isReplaySlow
=
Bool
()
val
isLoadReplayTLBMiss
=
Bool
()
val
isLoadReplayCacheMiss
=
Bool
()
}
val
replayCnt
=
UInt
(
XLEN
.
W
)
def
s1SignalEnable
(
ena
:
DebugLsInfo
)
=
{
when
(
ena
.
s1
.
isTlbFirstMiss
)
{
s1
.
isTlbFirstMiss
:=
true
.
B
}
when
(
ena
.
s1
.
isBankConflict
)
{
s1
.
isBankConflict
:=
true
.
B
}
when
(
ena
.
s1
.
isLoadToLoadForward
)
{
s1
.
isLoadToLoadForward
:=
true
.
B
}
when
(
ena
.
s1
.
isReplayFast
)
{
s1
.
isReplayFast
:=
true
.
B
replayCnt
:=
replayCnt
+
1.
U
}
}
def
s2SignalEnable
(
ena
:
DebugLsInfo
)
=
{
when
(
ena
.
s2
.
isDcacheFirstMiss
)
{
s2
.
isDcacheFirstMiss
:=
true
.
B
}
when
(
ena
.
s2
.
isForwardFail
)
{
s2
.
isForwardFail
:=
true
.
B
}
when
(
ena
.
s2
.
isLoadReplayTLBMiss
)
{
s2
.
isLoadReplayTLBMiss
:=
true
.
B
}
when
(
ena
.
s2
.
isLoadReplayCacheMiss
)
{
s2
.
isLoadReplayCacheMiss
:=
true
.
B
}
when
(
ena
.
s2
.
isReplaySlow
)
{
s2
.
isReplaySlow
:=
true
.
B
replayCnt
:=
replayCnt
+
1.
U
}
}
}
object
DebugLsInfo
{
def
init
(
implicit
p
:
Parameters
)
:
DebugLsInfo
=
{
val
lsInfo
=
Wire
(
new
DebugLsInfo
)
lsInfo
.
s1
.
isTlbFirstMiss
:=
false
.
B
lsInfo
.
s1
.
isBankConflict
:=
false
.
B
lsInfo
.
s1
.
isLoadToLoadForward
:=
false
.
B
lsInfo
.
s1
.
isReplayFast
:=
false
.
B
lsInfo
.
s2
.
isDcacheFirstMiss
:=
false
.
B
lsInfo
.
s2
.
isForwardFail
:=
false
.
B
lsInfo
.
s2
.
isReplaySlow
:=
false
.
B
lsInfo
.
s2
.
isLoadReplayTLBMiss
:=
false
.
B
lsInfo
.
s2
.
isLoadReplayCacheMiss
:=
false
.
B
lsInfo
.
replayCnt
:=
0.
U
lsInfo
}
}
class
DebugLsInfoBundle
(
implicit
p
:
Parameters
)
extends
DebugLsInfo
{
// unified processing at the end stage of load/store ==> s2 ==> bug that will write error robIdx data
val
s1_robIdx
=
UInt
(
log2Ceil
(
RobSize
).
W
)
val
s2_robIdx
=
UInt
(
log2Ceil
(
RobSize
).
W
)
}
class
DebugLSIO
(
implicit
p
:
Parameters
)
extends
XSBundle
{
val
debugLsInfo
=
Vec
(
backendParams
.
LduCnt
+
backendParams
.
StaCnt
,
Output
(
new
DebugLsInfoBundle
))
}
class
RobPtr
(
entries
:
Int
)
extends
CircularQueuePtr
[
RobPtr
](
entries
)
with
HasCircularQueuePtrHelper
{
...
...
src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
浏览文件 @
cf30f412
...
...
@@ -25,8 +25,9 @@ import xiangshan.ExceptionNO._
import
xiangshan._
import
xiangshan.backend.fu.PMPRespBundle
import
xiangshan.backend.fu.FuConfig.LduCfg
import
xiangshan.backend.rob.
{
DebugLsInfoBundle
,
RobPtr
}
import
xiangshan.backend.rob.
RobPtr
import
xiangshan.backend.Bundles.
{
DynInst
,
MemExuInput
,
MemExuOutput
}
import
xiangshan.backend.ctrlblock.DebugLsInfoBundle
import
xiangshan.cache._
import
xiangshan.cache.dcache.ReplayCarry
import
xiangshan.cache.mmu.
{
TlbCmd
,
TlbReq
,
TlbRequestIO
,
TlbResp
}
...
...
src/main/scala/xiangshan/mem/pipeline/StoreUnit.scala
浏览文件 @
cf30f412
...
...
@@ -25,9 +25,9 @@ import xiangshan.ExceptionNO._
import
xiangshan._
import
xiangshan.backend.fu.PMPRespBundle
import
xiangshan.backend.fu.FuConfig.StaCfg
import
xiangshan.backend.rob.DebugLsInfoBundle
import
xiangshan.cache.mmu.
{
TlbCmd
,
TlbReq
,
TlbRequestIO
,
TlbResp
}
import
xiangshan.backend.Bundles.
{
MemExuInput
,
MemExuOutput
}
import
xiangshan.backend.ctrlblock.DebugLsInfoBundle
// Store Pipeline Stage 0
// Generate addr, use addr to query DCache and DTLB
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录