Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
fe02439d
X
XiangShan
项目概览
OpenXiangShan
/
XiangShan
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
fe02439d
编写于
10月 27, 2020
作者:
Z
ZhangZifei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RSNew: fix bug of flush idx && change some log
上级
999721c1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
4 deletion
+7
-4
src/main/scala/xiangshan/backend/issue/ReservationStationNew.scala
...scala/xiangshan/backend/issue/ReservationStationNew.scala
+7
-4
未找到文件。
src/main/scala/xiangshan/backend/issue/ReservationStationNew.scala
浏览文件 @
fe02439d
...
...
@@ -221,7 +221,10 @@ class ReservationStationNew
// redirect
val
redHitVec
=
(
0
until
iqSize
).
map
(
i
=>
uop
(
idxQueue
(
i
)).
roqIdx
.
needFlush
(
io
.
redirect
))
redHitVec
.
zip
(
validQueue
).
map
{
case
(
r
,
v
)
=>
when
(
r
)
{
v
:=
false
.
B
}
}
//redHitVec.zip(validQueue).map{ case (r,v) => when (r) { v := false.B } }
for
(
i
<-
0
until
iqSize
)
{
when
(
redHitVec
(
i
))
{
validQueue
(
i
.
U
-
moveMask
(
i
))
:=
false
.
B
}
}
// bypass send
// store selected uops and send out one cycle before result back
...
...
@@ -273,10 +276,10 @@ class ReservationStationNew
// log
// TODO: add log
XSDebug
(
io
.
enqCtrl
.
valid
||
io
.
deq
.
valid
||
ParallelOR
(
validQueue
),
p
"In(${io.enqCtrl.valid} ${io.enqCtrl.ready}) Out(${io.deq.valid} ${io.deq.ready}) tailPtr:${tailPtr} tailPtr.tail:${tailPtr.tail(1)} tailADeq:${tailAfterRealDeq} isFull:${isFull} validQue:b${Binary(validQueue.asUInt)} readyQueue:${Binary(readyQueue.asUInt)}\n"
)
XSDebug
(
io
.
redirect
.
valid
&&
(
io
.
enqCtrl
.
valid
||
io
.
deq
.
valid
||
ParallelOR
(
validQueue
)),
p
"Redirect: roqIdx:${io.redirect.bits.roqIdx} isException:${io.redirect.bits.isException} isMisPred:${io.redirect.bits.isMisPred} isReplay:${io.redirect.bits.isReplay} isFlushPipe:${io.redirect.bits.isFlushPipe}\n"
)
XSDebug
(
io
.
redirect
.
valid
&&
(
io
.
enqCtrl
.
valid
||
io
.
deq
.
valid
||
ParallelOR
(
validQueue
)),
p
"Redirect: roqIdx:${io.redirect.bits.roqIdx} isException:${io.redirect.bits.isException} isMisPred:${io.redirect.bits.isMisPred} isReplay:${io.redirect.bits.isReplay} isFlushPipe:${io.redirect.bits.isFlushPipe}
RedHitVec:b${Binary(VecInit(redHitVec).asUInt)}
\n"
)
XSDebug
(
io
.
enqCtrl
.
valid
||
io
.
deq
.
valid
||
ParallelOR
(
validQueue
),
p
"SelMask:b${Binary(selectMask.asUInt)} MoveMask:b${Binary(moveMask.asUInt)} rdyQue:b${Binary(readyQueue.asUInt)} selIdxWire:${selectedIdxWire} sel:${selected} selIdxReg:${selectedIdxReg} selReg:${selReg} haveBubble:${haveBubble} deqValid:${deqValid} firstBubble:${firstBubble} findBubble:${findBubble} selRegOH:b${Binary(selectedIdxRegOH)}\n"
)
XSDebug
(
io
.
selectedUop
.
valid
,
p
"Select: roqIdx:${io.selectedUop.bits.roqIdx} pc:0x${Hexadecimal(io.selectedUop.bits.cf.pc)} fuType:b${Binary(io.selectedUop.bits.ctrl.fuType)} FuOpType:b${Binary(io.selectedUop.bits.ctrl.fuOpType)} fixedDelay:${fixedDelay.U}\n"
)
XSDebug
(
io
.
deq
.
fire
,
p
"Deq: SelIdxReg:${selectedIdxReg} pc:0x${Hexadecimal(io.deq.bits.uop.cf.pc)} Idx:${idxQueue(selectedIdxReg)} roqIdx:${io.deq.bits.uop.roqIdx} src1:0x${Hexadecimal(io.deq.bits.src1)} src2:0x${
io.deq.bits.src2} src3:0x${io.deq.bits.src3
}\n"
)
XSDebug
(
io
.
deq
.
fire
,
p
"Deq: SelIdxReg:${selectedIdxReg} pc:0x${Hexadecimal(io.deq.bits.uop.cf.pc)} Idx:${idxQueue(selectedIdxReg)} roqIdx:${io.deq.bits.uop.roqIdx} src1:0x${Hexadecimal(io.deq.bits.src1)} src2:0x${
Hexadecimal(io.deq.bits.src2)} src3:0x${Hexadecimal(io.deq.bits.src3)
}\n"
)
val
broadcastedUops
=
io
.
broadcastedUops
val
extraListenPorts
=
io
.
extraListenPorts
for
(
i
<-
broadcastedUops
.
indices
)
{
...
...
@@ -288,6 +291,6 @@ class ReservationStationNew
}
XSDebug
(
ParallelOR
(
validQueue
),
" : IQ|v|r| src1 |src2 | src3|pdest(rf|fp)| roqIdx|pc\n"
)
for
(
i
<-
0
until
iqSize
)
{
XSDebug
(
validQueue
(
i
),
p
"${i.U}: ${idxQueue(i)}|${validQueue(i)}|${readyQueue(i)}|${srcQueue(i)(0)}
|${srcQueue(i)(1)}|${srcQueue(i)(2
)}|${uop(idxQueue(i)).pdest}(${uop(idxQueue(i)).ctrl.rfWen}|${uop(idxQueue(i)).ctrl.fpWen})|${uop(idxQueue(i)).roqIdx}|${Hexadecimal(uop(idxQueue(i)).cf.pc)}\n"
)
XSDebug
(
validQueue
(
i
),
p
"${i.U}: ${idxQueue(i)}|${validQueue(i)}|${readyQueue(i)}|${srcQueue(i)(0)}
0x${Hexadecimal(data(idxQueue(i))(0))}|${srcQueue(i)(1)} 0x${Hexadecimal(data(idxQueue(i))(1))}|${srcQueue(i)(2)} 0x${Hexadecimal(data(idxQueue(i))(2)
)}|${uop(idxQueue(i)).pdest}(${uop(idxQueue(i)).ctrl.rfWen}|${uop(idxQueue(i)).ctrl.fpWen})|${uop(idxQueue(i)).roqIdx}|${Hexadecimal(uop(idxQueue(i)).cf.pc)}\n"
)
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录