Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
148ba860
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 搜索 >>
提交
148ba860
编写于
1月 22, 2021
作者:
L
LinJiawei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[WIP] fix cifIndex update logic
上级
cde9280d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
8 addition
and
7 deletion
+8
-7
src/main/scala/xiangshan/Bundle.scala
src/main/scala/xiangshan/Bundle.scala
+1
-1
src/main/scala/xiangshan/backend/CtrlBlock.scala
src/main/scala/xiangshan/backend/CtrlBlock.scala
+1
-1
src/main/scala/xiangshan/backend/ftq/Ftq.scala
src/main/scala/xiangshan/backend/ftq/Ftq.scala
+6
-5
未找到文件。
src/main/scala/xiangshan/Bundle.scala
浏览文件 @
148ba860
...
...
@@ -203,7 +203,7 @@ class FtqEntry extends XSBundle {
// backend update
val
mispred
=
Vec
(
PredictWidth
,
Bool
())
val
jalr_
target
=
UInt
(
VAddrBits
.
W
)
val
target
=
UInt
(
VAddrBits
.
W
)
}
...
...
src/main/scala/xiangshan/backend/CtrlBlock.scala
浏览文件 @
148ba860
...
...
@@ -200,7 +200,7 @@ class CtrlBlock extends XSModule with HasCircularQueuePtrHelper {
val
jumpInst
=
dispatch
.
io
.
enqIQCtrl
(
0
).
bits
ftq
.
io
.
ftqRead
(
0
).
ptr
:=
jumpInst
.
cf
.
ftqPtr
// jump
io
.
toIntBlock
.
jumpPc
:=
GetPcByFtq
(
ftq
.
io
.
ftqRead
(
0
).
entry
.
ftqPC
,
jumpInst
.
cf
.
ftqOffset
)
io
.
toIntBlock
.
jalr_target
:=
ftq
.
io
.
ftqRead
(
0
).
entry
.
jalr_
target
io
.
toIntBlock
.
jalr_target
:=
ftq
.
io
.
ftqRead
(
0
).
entry
.
target
// pipeline between decode and dispatch
for
(
i
<-
0
until
RenameWidth
)
{
...
...
src/main/scala/xiangshan/backend/ftq/Ftq.scala
浏览文件 @
148ba860
...
...
@@ -96,7 +96,10 @@ class Ftq extends XSModule with HasCircularQueuePtrHelper {
val
cfiUpdate
=
wb
.
bits
.
redirect
.
cfiUpdate
when
(
wb
.
bits
.
redirectValid
){
mispredict_vec
(
wbIdx
)(
offset
)
:=
cfiUpdate
.
isMisPred
when
(!
cfiIndex_vec
(
wbIdx
).
valid
||
cfiIndex_vec
(
wbIdx
).
bits
>
offset
){
when
(!
cfiUpdate
.
taken
&&
offset
===
cfiIndex_vec
(
wbIdx
).
bits
){
cfiIndex_vec
(
wbIdx
).
valid
:=
false
.
B
}
when
(
cfiUpdate
.
taken
&&
offset
<
cfiIndex_vec
(
wbIdx
).
bits
){
cfiIndex_vec
(
wbIdx
).
valid
:=
true
.
B
cfiIndex_vec
(
wbIdx
).
bits
:=
offset
cfiIsCall
(
wbIdx
)
:=
wb
.
bits
.
uop
.
cf
.
pd
.
isCall
...
...
@@ -132,7 +135,7 @@ class Ftq extends XSModule with HasCircularQueuePtrHelper {
commitEntry
.
cfiIsCall
:=
RegNext
(
cfiIsCall
(
headPtr
.
value
))
commitEntry
.
cfiIsRet
:=
RegNext
(
cfiIsRet
(
headPtr
.
value
))
commitEntry
.
cfiIsRVC
:=
RegNext
(
cfiIsRVC
(
headPtr
.
value
))
commitEntry
.
jalr_
target
:=
RegNext
(
target_vec
(
headPtr
.
value
))
commitEntry
.
target
:=
RegNext
(
target_vec
(
headPtr
.
value
))
io
.
commit_ftqEntry
.
valid
:=
RegNext
(
commitVec
.
asUInt
().
orR
())
io
.
commit_ftqEntry
.
bits
:=
commitEntry
...
...
@@ -140,9 +143,7 @@ class Ftq extends XSModule with HasCircularQueuePtrHelper {
// read logic
for
((
req
,
i
)
<-
io
.
ftqRead
.
zipWithIndex
){
dataModule
.
io
.
raddr
(
1
+
i
)
:=
req
.
ptr
.
value
val
dataRead
=
WireInit
(
dataModule
.
io
.
rdata
(
1
+
i
))
dataRead
.
mispred
:=
RegNext
(
mispredict_vec
(
req
.
ptr
.
value
))
req
.
entry
:=
dataRead
req
.
entry
:=
dataModule
.
io
.
rdata
(
1
+
i
)
}
// redirect, reset ptr
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录