Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
9975f4c3
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
9975f4c3
编写于
1月 14, 2021
作者:
Y
Yinan Xu
提交者:
GitHub
1月 14, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #424 from RISCVERS/L1DCacheFixSyncBug
DCache: fixed sync bus between probe and LoadPipe, StorePipe and Atom…
上级
460c8e77
e63fb483
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
11 deletion
+11
-11
src/main/scala/xiangshan/cache/dcacheWrapper.scala
src/main/scala/xiangshan/cache/dcacheWrapper.scala
+11
-11
未找到文件。
src/main/scala/xiangshan/cache/dcacheWrapper.scala
浏览文件 @
9975f4c3
...
...
@@ -441,28 +441,28 @@ class DCacheImp(outer: DCache) extends LazyModuleImp(outer) with HasDCacheParame
val
atomics_addr_matches
=
VecInit
(
atomics
.
io
.
inflight_req_block_addrs
map
(
entry
=>
entry
.
valid
&&
entry
.
bits
===
get_block_addr
(
addr
)))
val
atomics_addr_match
=
atomics_addr_matches
.
reduce
(
_
||
_
)
val
prober_
addr_match
=
prober
.
io
.
inflight_req_block_addr
.
valid
&&
prober
.
io
.
inflight_req_block_addr
.
bits
===
get_block_addr
(
addr
)
val
prober_
idx_match
=
prober
.
io
.
inflight_req_block_addr
.
valid
&&
get_idx
(
prober
.
io
.
inflight_req_block_addr
.
bits
)
===
get_idx
(
addr
)
val
miss_idx_matches
=
VecInit
(
missQueue
.
io
.
inflight_req_idxes
map
(
entry
=>
entry
.
valid
&&
entry
.
bits
===
get_idx
(
addr
)))
val
miss_idx_match
=
miss_idx_matches
.
reduce
(
_
||
_
)
store_addr_match
||
atomics_addr_match
||
prober_
addr
_match
||
miss_idx_match
store_addr_match
||
atomics_addr_match
||
prober_
idx
_match
||
miss_idx_match
}
def
block_store
(
addr
:
UInt
)
=
{
val
prober_
addr_match
=
prober
.
io
.
inflight_req_block_addr
.
valid
&&
prober
.
io
.
inflight_req_block_addr
.
bits
===
get_block_addr
(
addr
)
val
prober_
idx_match
=
prober
.
io
.
inflight_req_block_addr
.
valid
&&
get_idx
(
prober
.
io
.
inflight_req_block_addr
.
bits
)
===
get_idx
(
addr
)
val
miss_idx_matches
=
VecInit
(
missQueue
.
io
.
inflight_req_idxes
map
(
entry
=>
entry
.
valid
&&
entry
.
bits
===
get_idx
(
addr
)))
val
miss_idx_match
=
miss_idx_matches
.
reduce
(
_
||
_
)
prober_
addr
_match
||
miss_idx_match
prober_
idx
_match
||
miss_idx_match
}
def
block_atomics
(
addr
:
UInt
)
=
{
val
prober_
addr_match
=
prober
.
io
.
inflight_req_block_addr
.
valid
&&
prober
.
io
.
inflight_req_block_addr
.
bits
===
get_block_addr
(
addr
)
val
prober_
idx_match
=
prober
.
io
.
inflight_req_block_addr
.
valid
&&
get_idx
(
prober
.
io
.
inflight_req_block_addr
.
bits
)
===
get_idx
(
addr
)
val
miss_idx_matches
=
VecInit
(
missQueue
.
io
.
inflight_req_idxes
map
(
entry
=>
entry
.
valid
&&
entry
.
bits
===
get_idx
(
addr
)))
val
miss_idx_match
=
miss_idx_matches
.
reduce
(
_
||
_
)
prober_
addr
_match
||
miss_idx_match
prober_
idx
_match
||
miss_idx_match
}
def
block_miss
(
addr
:
UInt
)
=
{
...
...
@@ -475,11 +475,11 @@ class DCacheImp(outer: DCache) extends LazyModuleImp(outer) with HasDCacheParame
}
def
block_probe
(
addr
:
UInt
)
=
{
val
store_
addr_matches
=
VecInit
(
stu
.
io
.
inflight_req_block_addrs
map
(
entry
=>
entry
.
valid
&&
entry
.
bits
===
get_block_addr
(
addr
)))
val
store_
addr_match
=
store_addr
_matches
.
reduce
(
_
||
_
)
val
store_
idx_matches
=
VecInit
(
stu
.
io
.
inflight_req_block_addrs
map
(
entry
=>
entry
.
valid
&&
get_idx
(
entry
.
bits
)
===
get_idx
(
addr
)))
val
store_
idx_match
=
store_idx
_matches
.
reduce
(
_
||
_
)
val
atomics_
addr_matches
=
VecInit
(
atomics
.
io
.
inflight_req_block_addrs
map
(
entry
=>
entry
.
valid
&&
entry
.
bits
===
get_block_addr
(
addr
)))
val
atomics_
addr_match
=
atomics_addr
_matches
.
reduce
(
_
||
_
)
val
atomics_
idx_matches
=
VecInit
(
atomics
.
io
.
inflight_req_block_addrs
map
(
entry
=>
entry
.
valid
&&
get_idx
(
entry
.
bits
)
===
get_idx
(
addr
)))
val
atomics_
idx_match
=
atomics_idx
_matches
.
reduce
(
_
||
_
)
val
lrsc_addr_match
=
atomics
.
io
.
block_probe_addr
.
valid
&&
atomics
.
io
.
block_probe_addr
.
bits
===
get_block_addr
(
addr
)
...
...
@@ -489,7 +489,7 @@ class DCacheImp(outer: DCache) extends LazyModuleImp(outer) with HasDCacheParame
// the missed req
val
miss_req_idx_match
=
missReq
.
fire
()
&&
get_idx
(
missReq
.
bits
.
addr
)
===
get_idx
(
addr
)
store_
addr_match
||
atomics_addr
_match
||
lrsc_addr_match
||
miss_idx_match
||
miss_req_idx_match
store_
idx_match
||
atomics_idx
_match
||
lrsc_addr_match
||
miss_idx_match
||
miss_req_idx_match
}
def
block_decoupled
[
T
<:
Data
](
source
:
DecoupledIO
[
T
],
sink
:
DecoupledIO
[
T
],
block_signal
:
Bool
)
=
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录