@@ -28,7 +28,16 @@ StoreUnit 是存储指令执行单元 ,由多个协同工作的子模块组成
2828
2929#### 存储地址流水线
3030
31- ![ Scalar] ( scalar.png )
31+ <div >
32+ <center>
33+ <img src="../scalar.png"
34+ alt="sw指令流水示意图"
35+ style="zoom:100%"/>
36+ <br>
37+ 图1:LoadQueueRAR结构示意图<br><br>
38+ </center>
39+ </div >
40+
3241
3342由4级结构组成:
3443
@@ -84,7 +93,16 @@ StoreUnit 是存储指令执行单元 ,由多个协同工作的子模块组成
8493对于除 SEG指令外的向量内存访问指令,VSSplit 负责接收向量内存访问指令发射队列发送的微操作(uop),并将该微操作拆分为多个元素。随后VSSplit 将这些元素发送至StoreUnit 执行,执行流程与标量内存访问指令相同。执行完成后,元素会被写回至 VSMerge,其中 Merge 模块会将这些元素收集并组合成微操作,最终写回向量寄存器文件。
8594SEG 指令则由独立的 VSegmentUnit 模块处理。
8695
87- ![ Vector] ( vector.png )
96+ <div >
97+ <center>
98+ <img src="../vector.png"
99+ alt="vse指令流水示意图"
100+ style="zoom:100%"/>
101+ <br>
102+ 图2:LoadQueueRAR结构示意图<br><br>
103+ </center>
104+ </div >
105+
88106
89107StoreUnit处理非对齐Store指令流程和标量类似,特别的:
90108
@@ -118,7 +136,16 @@ StoreUnit处理非对齐Store指令流程和标量类似,特别的:
118136
119137原子指令、MMIO与NC地址空间均不支持非对齐访问,这些情况将触发AccessFault异常。
120138
121- ![ Misalign] ( misalign.png )
139+ <div >
140+ <center>
141+ <img src="../misalign.png"
142+ alt="非对齐sd指令流水示意图"
143+ style="zoom:100%"/>
144+ <br>
145+ 图3:非对齐sd指令流水示意图<br><br>
146+ </center>
147+ </div >
148+
122149
123150StoreUnit处理非对齐Store指令流程和标量类似,特别的:
124151
@@ -147,7 +174,16 @@ RAW内存违例:处理器核执行的Load指令的结果应来源于当前处
147174
148175Store指令地址流水线分为S0/S1/S2/S3四级,如图所示:
149176
150- ![ StoreUnit整体框图] ( StoreUnit.png )
177+ <div >
178+ <center>
179+ <img src="../StoreUnit.png"
180+ alt="StoreUnit整体框图"
181+ style="zoom:100%"/>
182+ <br>
183+ 图4:StoreUnit整体框图<br><br>
184+ </center>
185+ </div >
186+
151187
152188接收store地址发射队列发来的请求,处理完成之后需要给后端和向量部分响应,处理过程中需要给发射队列反馈信息,给StoreQueue反馈信息,最后写回, 如果中间出现异常则从发射队列重新发射。
153189
@@ -700,7 +736,15 @@ SBuffer支持超时清空机制;超过2^20周期未被换出的数据块将被
700736
701737### 接口时序实例
702738
703- ![ StoreUnit接口时序] ( LSU-StoreUnit-Timing.svg )
739+ <div >
740+ <center>
741+ <img src="../LSU-StoreUnit-Timing.svg"
742+ alt="StoreUnit接口时序"
743+ style="zoom:100%"/>
744+ <br>
745+ 图1:StoreUnit接口时序<br><br>
746+ </center>
747+ </div >
704748
705749
706750
0 commit comments