Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
f3f22d72
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 搜索 >>
未验证
提交
f3f22d72
编写于
3月 04, 2021
作者:
Y
Yinan Xu
提交者:
GitHub
3月 04, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
csr: add smblockctl for customized control of memory block (#634)
上级
d3815aec
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
19 addition
and
5 deletion
+19
-5
src/main/scala/xiangshan/Bundle.scala
src/main/scala/xiangshan/Bundle.scala
+6
-3
src/main/scala/xiangshan/XSCore.scala
src/main/scala/xiangshan/XSCore.scala
+1
-0
src/main/scala/xiangshan/backend/MemBlock.scala
src/main/scala/xiangshan/backend/MemBlock.scala
+3
-0
src/main/scala/xiangshan/backend/fu/CSR.scala
src/main/scala/xiangshan/backend/fu/CSR.scala
+6
-0
src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
+1
-1
src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
+2
-1
未找到文件。
src/main/scala/xiangshan/Bundle.scala
浏览文件 @
f3f22d72
...
...
@@ -532,11 +532,14 @@ class CustomCSRCtrlIO extends XSBundle {
// Prefetcher
val
l1plus_pf_enable
=
Output
(
Bool
())
val
l2_pf_enable
=
Output
(
Bool
())
// Labeled XiangShan
val
dsid
=
Output
(
UInt
(
8.
W
))
// TODO: DsidWidth as parameter
// Load violation predict
// Load violation predict
or
val
lvpred_disable
=
Output
(
Bool
())
val
no_spec_load
=
Output
(
Bool
())
val
waittable_timeout
=
Output
(
UInt
(
5.
W
))
// Branch predict
e
r
// Branch predict
o
r
val
bp_ctrl
=
Output
(
new
BPUCtrl
)
}
\ No newline at end of file
// Memory Block
val
sbuffer_threshold
=
Output
(
UInt
(
4.
W
))
}
src/main/scala/xiangshan/XSCore.scala
浏览文件 @
f3f22d72
...
...
@@ -465,6 +465,7 @@ class XSCoreImp(outer: XSCore) extends LazyModuleImp(outer)
integerBlock
.
io
.
fenceio
.
sfence
<>
memBlock
.
io
.
sfence
integerBlock
.
io
.
fenceio
.
sbuffer
<>
memBlock
.
io
.
fenceToSbuffer
memBlock
.
io
.
csrCtrl
<>
integerBlock
.
io
.
csrio
.
customCtrl
memBlock
.
io
.
tlbCsr
<>
RegNext
(
integerBlock
.
io
.
csrio
.
tlb
)
memBlock
.
io
.
lsqio
.
roq
<>
ctrlBlock
.
io
.
roqio
.
lsq
memBlock
.
io
.
lsqio
.
exceptionAddr
.
lsIdx
.
lqIdx
:=
ctrlBlock
.
io
.
roqio
.
exception
.
bits
.
uop
.
lqIdx
...
...
src/main/scala/xiangshan/backend/MemBlock.scala
浏览文件 @
f3f22d72
...
...
@@ -78,6 +78,8 @@ class MemBlockImp(outer: MemBlock) extends LazyModuleImp(outer)
val
exceptionAddr
=
new
ExceptionAddrIO
// to csr
val
roq
=
Flipped
(
new
RoqLsqIO
)
// roq to lsq
}
val
csrCtrl
=
Flipped
(
new
CustomCSRCtrlIO
)
})
val
difftestIO
=
IO
(
new
Bundle
()
{
val
fromSbuffer
=
new
Bundle
()
{
...
...
@@ -304,6 +306,7 @@ class MemBlockImp(outer: MemBlock) extends LazyModuleImp(outer)
lsq
.
io
.
sqempty
<>
sbuffer
.
io
.
sqempty
// Sbuffer
sbuffer
.
io
.
csrCtrl
<>
RegNext
(
io
.
csrCtrl
)
sbuffer
.
io
.
dcache
<>
dcache
.
io
.
lsu
.
store
sbuffer
.
io
.
dcache
.
resp
.
valid
:=
RegNext
(
dcache
.
io
.
lsu
.
store
.
resp
.
valid
)
sbuffer
.
io
.
dcache
.
resp
.
bits
:=
RegNext
(
dcache
.
io
.
lsu
.
store
.
resp
.
bits
)
...
...
src/main/scala/xiangshan/backend/fu/CSR.scala
浏览文件 @
f3f22d72
...
...
@@ -355,6 +355,11 @@ class CSR extends FunctionUnit with HasCSRConst
csrio
.
customCtrl
.
no_spec_load
:=
slvpredctl
(
1
)
csrio
.
customCtrl
.
waittable_timeout
:=
slvpredctl
(
8
,
4
)
// smblockctl: memory block configurations
// bits 0-3: store buffer flush threshold (default: 8 entries)
val
smblockctl
=
RegInit
(
UInt
(
XLEN
.
W
),
"h7"
.
U
)
csrio
.
customCtrl
.
sbuffer_threshold
:=
smblockctl
(
3
,
0
)
val
tlbBundle
=
Wire
(
new
TlbCsrBundle
)
tlbBundle
.
satp
:=
satp
.
asTypeOf
(
new
SatpStruct
)
csrio
.
tlb
:=
tlbBundle
...
...
@@ -486,6 +491,7 @@ class CSR extends FunctionUnit with HasCSRConst
MaskedRegMap
(
Spfctl
,
spfctl
),
MaskedRegMap
(
Sdsid
,
sdsid
),
MaskedRegMap
(
Slvpredctl
,
slvpredctl
),
MaskedRegMap
(
Smblockctl
,
smblockctl
),
//--- Machine Information Registers ---
MaskedRegMap
(
Mvendorid
,
mvendorid
,
0.
U
,
MaskedRegMap
.
Unwritable
),
...
...
src/main/scala/xiangshan/backend/fu/util/CSRConst.scala
浏览文件 @
f3f22d72
...
...
@@ -53,8 +53,8 @@ trait HasCSRConst {
// Supervisor Custom Read/Write
val
Sbpctl
=
0x5C0
val
Spfctl
=
0x5C1
val
Slvpredctl
=
0x5C2
val
Smblockctl
=
0x5C3
val
Sdsid
=
0x9C0
...
...
src/main/scala/xiangshan/mem/sbuffer/NewSbuffer.scala
浏览文件 @
f3f22d72
...
...
@@ -56,6 +56,7 @@ class NewSbuffer extends XSModule with HasSbufferConst {
val
forward
=
Vec
(
LoadPipelineWidth
,
Flipped
(
new
LoadForwardQueryIO
))
val
sqempty
=
Input
(
Bool
())
val
flush
=
Flipped
(
new
SbufferFlushBundle
)
val
csrCtrl
=
Flipped
(
new
CustomCSRCtrlIO
)
})
val
difftestIO
=
IO
(
new
Bundle
()
{
val
sbufferResp
=
Output
(
Bool
())
...
...
@@ -257,7 +258,7 @@ class NewSbuffer extends XSModule with HasSbufferConst {
val
do_eviction
=
Wire
(
Bool
())
val
empty
=
Cat
(
stateVec
.
map
(
s
=>
isInvalid
(
s
))).
andR
()
&&
!
Cat
(
io
.
in
.
map
(
_
.
valid
)).
orR
()
do_eviction
:=
validCount
>=
12.
U
do_eviction
:=
validCount
>=
RegNext
(
io
.
csrCtrl
.
sbuffer_threshold
+&
1.
U
)
io
.
flush
.
empty
:=
RegNext
(
empty
&&
io
.
sqempty
)
// lru.io.flush := sbuffer_state === x_drain_sbuffer && empty
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录