Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,16 @@ StoreUnit 是存储指令执行单元 ,由多个协同工作的子模块组成

#### 存储地址流水线

![Scalar](scalar.png)
<div>
<center>
<img src="../scalar.png"
alt="sw指令流水示意图"
style="zoom:100%"/>
<br>
图1:LoadQueueRAR结构示意图<br><br>
</center>
</div>


由4级结构组成:

Expand Down Expand Up @@ -84,7 +93,16 @@ StoreUnit 是存储指令执行单元 ,由多个协同工作的子模块组成
对于除 SEG指令外的向量内存访问指令,VSSplit 负责接收向量内存访问指令发射队列发送的微操作(uop),并将该微操作拆分为多个元素。随后VSSplit 将这些元素发送至StoreUnit 执行,执行流程与标量内存访问指令相同。执行完成后,元素会被写回至 VSMerge,其中 Merge 模块会将这些元素收集并组合成微操作,最终写回向量寄存器文件。
SEG 指令则由独立的 VSegmentUnit 模块处理。

![Vector](vector.png)
<div>
<center>
<img src="../vector.png"
alt="vse指令流水示意图"
style="zoom:100%"/>
<br>
图2:LoadQueueRAR结构示意图<br><br>
</center>
</div>


StoreUnit处理非对齐Store指令流程和标量类似,特别的:

Expand Down Expand Up @@ -118,7 +136,16 @@ StoreUnit处理非对齐Store指令流程和标量类似,特别的:

原子指令、MMIO与NC地址空间均不支持非对齐访问,这些情况将触发AccessFault异常。

![Misalign](misalign.png)
<div>
<center>
<img src="../misalign.png"
alt="非对齐sd指令流水示意图"
style="zoom:100%"/>
<br>
图3:非对齐sd指令流水示意图<br><br>
</center>
</div>


StoreUnit处理非对齐Store指令流程和标量类似,特别的:

Expand Down Expand Up @@ -147,7 +174,16 @@ RAW内存违例:处理器核执行的Load指令的结果应来源于当前处

Store指令地址流水线分为S0/S1/S2/S3四级,如图所示:

![StoreUnit整体框图](StoreUnit.png)
<div>
<center>
<img src="../StoreUnit.png"
alt="StoreUnit整体框图"
style="zoom:100%"/>
<br>
图4:StoreUnit整体框图<br><br>
</center>
</div>


接收store地址发射队列发来的请求,处理完成之后需要给后端和向量部分响应,处理过程中需要给发射队列反馈信息,给StoreQueue反馈信息,最后写回, 如果中间出现异常则从发射队列重新发射。

Expand Down Expand Up @@ -700,7 +736,15 @@ SBuffer支持超时清空机制;超过2^20周期未被换出的数据块将被

### 接口时序实例

![StoreUnit接口时序](LSU-StoreUnit-Timing.svg)
<div>
<center>
<img src="../LSU-StoreUnit-Timing.svg"
alt="StoreUnit接口时序"
style="zoom:100%"/>
<br>
图1:StoreUnit接口时序<br><br>
</center>
</div>



Expand Down