Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenXiangShan
XiangShan
提交
6c4a4192
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 搜索 >>
提交
6c4a4192
编写于
10月 26, 2020
作者:
W
William Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[WIP] Memend: fix mem rf port width, add tlbFeedback
上级
59a40467
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
9 addition
and
16 deletion
+9
-16
src/main/scala/top/XiangShanStage.scala
src/main/scala/top/XiangShanStage.scala
+2
-2
src/main/scala/xiangshan/backend/Backend.scala
src/main/scala/xiangshan/backend/Backend.scala
+2
-9
src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
+2
-2
src/main/scala/xiangshan/backend/issue/ReservationStation.scala
...in/scala/xiangshan/backend/issue/ReservationStation.scala
+1
-1
src/main/scala/xiangshan/backend/rename/Rename.scala
src/main/scala/xiangshan/backend/rename/Rename.scala
+1
-1
src/main/scala/xiangshan/mem/Memend.scala
src/main/scala/xiangshan/mem/Memend.scala
+1
-1
未找到文件。
src/main/scala/top/XiangShanStage.scala
浏览文件 @
6c4a4192
...
@@ -5,7 +5,7 @@ import firrtl.AnnotationSeq
...
@@ -5,7 +5,7 @@ import firrtl.AnnotationSeq
import
firrtl.annotations.NoTargetAnnotation
import
firrtl.annotations.NoTargetAnnotation
import
firrtl.options.
{
HasShellOptions
,
Shell
,
ShellOption
}
import
firrtl.options.
{
HasShellOptions
,
Shell
,
ShellOption
}
import
firrtl.stage.
{
FirrtlCli
,
RunFirrtlTransformAnnotation
}
import
firrtl.stage.
{
FirrtlCli
,
RunFirrtlTransformAnnotation
}
import
xstransforms.ShowPrintTransform
//
import xstransforms.ShowPrintTransform
import
xstransforms.PrintModuleName
import
xstransforms.PrintModuleName
case
class
DisablePrintfAnnotation
(
m
:
String
)
extends
NoTargetAnnotation
case
class
DisablePrintfAnnotation
(
m
:
String
)
extends
NoTargetAnnotation
...
@@ -78,7 +78,7 @@ object XiangShanStage {
...
@@ -78,7 +78,7 @@ object XiangShanStage {
(
new
XiangShanStage
).
execute
(
(
new
XiangShanStage
).
execute
(
args
,
args
,
annotations
++
Seq
(
annotations
++
Seq
(
RunFirrtlTransformAnnotation
(
new
ShowPrintTransform
),
//
RunFirrtlTransformAnnotation(new ShowPrintTransform),
RunFirrtlTransformAnnotation
(
new
PrintModuleName
)
RunFirrtlTransformAnnotation
(
new
PrintModuleName
)
)
)
)
)
...
...
src/main/scala/xiangshan/backend/Backend.scala
浏览文件 @
6c4a4192
...
@@ -58,15 +58,6 @@ class Backend extends XSModule
...
@@ -58,15 +58,6 @@ class Backend extends XSModule
hasZero
=
false
hasZero
=
false
))
))
// decode.io := DontCare
// brq.io := DontCare
// decBuf.io := DontCare
// rename.io := DontCare
// dispatch.io := DontCare
// roq.io := DontCare
// intRf.io := DontCare
// fpRf.io := DontCare
// backend redirect, flush pipeline
// backend redirect, flush pipeline
val
redirect
=
Mux
(
val
redirect
=
Mux
(
roq
.
io
.
redirect
.
valid
,
roq
.
io
.
redirect
.
valid
,
...
@@ -123,6 +114,7 @@ class Backend extends XSModule
...
@@ -123,6 +114,7 @@ class Backend extends XSModule
case
otherCfg
=>
case
otherCfg
=>
exeUnits
(
i
).
io
.
in
<>
rs
.
io
.
deq
exeUnits
(
i
).
io
.
in
<>
rs
.
io
.
deq
exeUnits
(
i
).
io
.
redirect
<>
redirect
exeUnits
(
i
).
io
.
redirect
<>
redirect
rs
.
io
.
tlbFeedback
:=
DontCare
}
}
rs
rs
...
@@ -146,6 +138,7 @@ class Backend extends XSModule
...
@@ -146,6 +138,7 @@ class Backend extends XSModule
io
.
mem
.
roqDeqPtr
:=
roq
.
io
.
roqDeqPtr
io
.
mem
.
roqDeqPtr
:=
roq
.
io
.
roqDeqPtr
io
.
mem
.
ldin
<>
reservedStations
.
filter
(
_
.
exuCfg
==
Exu
.
ldExeUnitCfg
).
map
(
_
.
io
.
deq
)
io
.
mem
.
ldin
<>
reservedStations
.
filter
(
_
.
exuCfg
==
Exu
.
ldExeUnitCfg
).
map
(
_
.
io
.
deq
)
io
.
mem
.
stin
<>
reservedStations
.
filter
(
_
.
exuCfg
==
Exu
.
stExeUnitCfg
).
map
(
_
.
io
.
deq
)
io
.
mem
.
stin
<>
reservedStations
.
filter
(
_
.
exuCfg
==
Exu
.
stExeUnitCfg
).
map
(
_
.
io
.
deq
)
io
.
mem
.
tlbFeedback
<>
reservedStations
.
filter
(
_
.
exuCfg
==
Exu
.
ldExeUnitCfg
).
map
(
_
.
io
.
tlbFeedback
)
++
reservedStations
.
filter
(
_
.
exuCfg
==
Exu
.
stExeUnitCfg
).
map
(
_
.
io
.
tlbFeedback
)
jmpExeUnit
.
io
.
exception
.
valid
:=
roq
.
io
.
redirect
.
valid
&&
roq
.
io
.
redirect
.
bits
.
isException
jmpExeUnit
.
io
.
exception
.
valid
:=
roq
.
io
.
redirect
.
valid
&&
roq
.
io
.
redirect
.
bits
.
isException
jmpExeUnit
.
io
.
exception
.
bits
:=
roq
.
io
.
exception
jmpExeUnit
.
io
.
exception
.
bits
:=
roq
.
io
.
exception
...
...
src/main/scala/xiangshan/backend/dispatch/Dispatch.scala
浏览文件 @
6c4a4192
...
@@ -38,10 +38,10 @@ class Dispatch extends XSModule {
...
@@ -38,10 +38,10 @@ class Dispatch extends XSModule {
val
commits
=
Input
(
Vec
(
CommitWidth
,
Valid
(
new
RoqCommit
)))
val
commits
=
Input
(
Vec
(
CommitWidth
,
Valid
(
new
RoqCommit
)))
// read regfile
// read regfile
val
readIntRf
=
Vec
(
NRIntReadPorts
-
NRMemReadPorts
,
Flipped
(
new
RfReadPort
))
val
readIntRf
=
Vec
(
NRIntReadPorts
-
NRMemReadPorts
,
Flipped
(
new
RfReadPort
))
val
readFpRf
=
Vec
(
NRFpReadPorts
,
Flipped
(
new
RfReadPort
))
val
readFpRf
=
Vec
(
NRFpReadPorts
-
exuParameters
.
StuCnt
,
Flipped
(
new
RfReadPort
))
// read reg status (busy/ready)
// read reg status (busy/ready)
val
intPregRdy
=
Vec
(
NRIntReadPorts
-
NRMemReadPorts
,
Input
(
Bool
()))
val
intPregRdy
=
Vec
(
NRIntReadPorts
-
NRMemReadPorts
,
Input
(
Bool
()))
val
fpPregRdy
=
Vec
(
NRFpReadPorts
,
Input
(
Bool
()))
val
fpPregRdy
=
Vec
(
NRFpReadPorts
-
exuParameters
.
StuCnt
,
Input
(
Bool
()))
// load + store reg status (busy/ready)
// load + store reg status (busy/ready)
val
memIntRf
=
Vec
(
NRMemReadPorts
,
Flipped
(
new
RfReadPort
))
val
memIntRf
=
Vec
(
NRMemReadPorts
,
Flipped
(
new
RfReadPort
))
val
memFpRf
=
Vec
(
exuParameters
.
StuCnt
,
Flipped
(
new
RfReadPort
))
val
memFpRf
=
Vec
(
exuParameters
.
StuCnt
,
Flipped
(
new
RfReadPort
))
...
...
src/main/scala/xiangshan/backend/issue/ReservationStation.scala
浏览文件 @
6c4a4192
...
@@ -64,7 +64,7 @@ class ReservationStation
...
@@ -64,7 +64,7 @@ class ReservationStation
val
numExist
=
Output
(
UInt
(
iqIdxWidth
.
W
))
val
numExist
=
Output
(
UInt
(
iqIdxWidth
.
W
))
// tlb hit, inst can deq, only used in ld/st reservation stations
// tlb hit, inst can deq, only used in ld/st reservation stations
val
tlbFeedback
=
Flipped
(
ValidIO
(
new
TlbFeedback
))
val
tlbFeedback
=
Flipped
(
ValidIO
(
new
TlbFeedback
))
// TODO
})
})
val
srcAllNum
=
3
val
srcAllNum
=
3
...
...
src/main/scala/xiangshan/backend/rename/Rename.scala
浏览文件 @
6c4a4192
...
@@ -44,7 +44,7 @@ class Rename extends XSModule {
...
@@ -44,7 +44,7 @@ class Rename extends XSModule {
val
fpRat
=
Module
(
new
RenameTable
(
float
=
true
)).
io
val
fpRat
=
Module
(
new
RenameTable
(
float
=
true
)).
io
val
intRat
=
Module
(
new
RenameTable
(
float
=
false
)).
io
val
intRat
=
Module
(
new
RenameTable
(
float
=
false
)).
io
val
fpBusyTable
=
Module
(
new
BusyTable
(
NRFpReadPorts
,
NRFpWritePorts
)).
io
val
fpBusyTable
=
Module
(
new
BusyTable
(
NRFpReadPorts
,
NRFpWritePorts
)).
io
val
intBusyTable
=
Module
(
new
BusyTable
(
NRIntReadPorts
+
NRMemReadPorts
,
NRIntWritePorts
)).
io
val
intBusyTable
=
Module
(
new
BusyTable
(
NRIntReadPorts
,
NRIntWritePorts
)).
io
fpFreeList
.
redirect
:=
io
.
redirect
fpFreeList
.
redirect
:=
io
.
redirect
intFreeList
.
redirect
:=
io
.
redirect
intFreeList
.
redirect
:=
io
.
redirect
...
...
src/main/scala/xiangshan/mem/Memend.scala
浏览文件 @
6c4a4192
...
@@ -73,7 +73,7 @@ class MemToBackendIO extends XSBundle {
...
@@ -73,7 +73,7 @@ class MemToBackendIO extends XSBundle {
// replay all instructions form dispatch
// replay all instructions form dispatch
val
replayAll
=
ValidIO
(
new
Redirect
)
val
replayAll
=
ValidIO
(
new
Redirect
)
// replay mem instructions form Load Queue/Store Queue
// replay mem instructions form Load Queue/Store Queue
val
tlbFeedback
=
Vec
(
exuParameters
.
LduCnt
+
exuParameters
.
Ld
uCnt
,
ValidIO
(
new
TlbFeedback
))
val
tlbFeedback
=
Vec
(
exuParameters
.
LduCnt
+
exuParameters
.
St
uCnt
,
ValidIO
(
new
TlbFeedback
))
val
commits
=
Flipped
(
Vec
(
CommitWidth
,
Valid
(
new
RoqCommit
)))
val
commits
=
Flipped
(
Vec
(
CommitWidth
,
Valid
(
new
RoqCommit
)))
val
dp1Req
=
Vec
(
RenameWidth
,
Flipped
(
DecoupledIO
(
new
MicroOp
)))
val
dp1Req
=
Vec
(
RenameWidth
,
Flipped
(
DecoupledIO
(
new
MicroOp
)))
val
lsIdxs
=
Output
(
Vec
(
RenameWidth
,
new
LSIdx
))
val
lsIdxs
=
Output
(
Vec
(
RenameWidth
,
new
LSIdx
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录