提交 6e4a4779 编写于 作者: C czw 提交者: ZhangZifei

refactor(ReservationStationStd): success for povray, mcf, gcc

TODO: modify the asynchronous read regfile to synchronous read regfile
上级 d7531d35
......@@ -504,7 +504,6 @@ class BaseReservationStation(params: RSParams)(implicit p: Parameters) extends R
// Do the read data arbitration
val s1_is_first_issue = Wire(Vec(params.numDeq, Bool()))
val s1_all_src_ready = Wire(Vec(params.numDeq, Bool()))
val s1_out_addr = Wire(Vec(params.numDeq, UInt(params.numEntries.W)))
val dataArrayWrite = Wire(Vec(params.numEnq, new Bundle{
val enable = Bool()
val addr = UInt(params.numEntries.W)
......@@ -525,9 +524,6 @@ class BaseReservationStation(params: RSParams)(implicit p: Parameters) extends R
s1_out(i).bits.uop := Mux(s1_issue_oldest(i), payloadArray.io.read.last.data,
Mux(s1_in_selectPtrValid(i), payloadArray.io.read(i).data, s1_dispatchUops_dup.head(i).bits))
s1_out_addr(i) := Mux(s1_issue_oldest(i), s1_oldestSel.bits,
Mux(s1_in_selectPtrValid(i), select.io.grant(i).bits, dataArrayWrite(i).addr))
s1_is_first_issue(i) := Mux(s1_issue_oldest(i), statusArray.io.isFirstIssue.last,
Mux(s1_in_selectPtrValid(i), statusArray.io.isFirstIssue(params.numEnq + i),
statusArray.io.update(i).data.isFirstIssue))
......@@ -682,7 +678,7 @@ class BaseReservationStation(params: RSParams)(implicit p: Parameters) extends R
a := b
}
}else{
readData := readIntRf_asyn.slice(i*numIntRfPorts,(i+1)*numIntRfPorts).map(_.data)
readData := DontCare
val readAddr0 = readIntRf_asyn.slice(i*numIntRfPorts,(i+1)*numIntRfPorts).map(_.addr)
val readAddr1 = readFpRf_asyn.slice(i*numFpRfPorts,(i+1)*numFpRfPorts).map(_.addr)
(readAddr0.zip(readAddr1)).zip(readAddr.bits.uop.psrc).foreach{
......@@ -700,7 +696,7 @@ class BaseReservationStation(params: RSParams)(implicit p: Parameters) extends R
immExt
}
val dataSlowCaptureAddr = s1_out_addr
val dataSlowCaptureAddr = s1_issuePtrOH.map(_.bits)
for ((port, addr) <- dataSelect.io.fromSlowPorts.zip(dataSlowCaptureAddr)) {
for (j <- 0 until params.numSrc) {
port(j) := VecInit(dataArrayMultiWrite.map(w => w.enable && (addr & w.addr(j)).asUInt.orR)).asUInt
......
......@@ -35,9 +35,7 @@ class StdRSImp(params: RSParams, wrapper: StdRSWrapper) extends BaseReservationS
class StdRS(params: RSParams)(implicit p: Parameters) extends BaseReservationStation(params)
with RSDropNotOnRedirect {
for (((statusUpdate, uop), i) <- statusArray.io.update.zip(s1_payloadUops).zipWithIndex) {
when (uop.needRfRPort(0, true, false)) {
s1_deqRfDataSel(i)(0) := enqReverse(readFpRf_asyn)(i).data
}
for ((uop, i) <- s1_payloadUops.zipWithIndex) {
s1_deqRfDataSel(i)(0) := Mux(uop.needRfRPort(0, true, true), readFpRf_asyn(i).data, readIntRf_asyn(i).data)
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册