@@ -184,26 +184,28 @@ throughput of 16 INT32 lanes when doing element-wise operations (1 OP/byte).
184184| ` 0x0000_0000 ` | ` 0x20000 ` | Shared memory cluster local |
185185| ` 0x0004_0000 ` | ` 0x40000 ` | Requantized shared memory |
186186| ` 0x0008_0000 ` | ` 0x200 ` | Shared print and perf buffer |
187- | ` 0x0008_0200 ` | ` 0x100 ` | Core 0 L0d flush MMIO |
188- | ` 0x0008_0300 ` | ` 0x100 ` | Core 1 L0d flush MMIO |
187+ | ` 0x0008_0200 ` | ` 0x100 ` | Core 0 L0i flush MMIO |
188+ | ` 0x0008_0300 ` | ` 0x100 ` | Core 0 L0d flush MMIO |
189+ | ` 0x0008_0400 ` | ` 0x100 ` | Core 1 L0i flush MMIO |
190+ | ` 0x0008_0500 ` | ` 0x100 ` | Core 1 L0d flush MMIO |
189191| ` 0x0008_4000 ` | ` 0x100 ` | Gemmini MMIO |
190192| ` 0x0008_8000 ` | ` 0x4000 ` | Gemmini scaling factor memory |
191193
192194Gemmini MMIO has the following address map:
193195
194- | Address | Bits | Description |
195- | ---------| ------| -------------------|
196- | ` 0x00 ` | 32 | RoCC instruction |
197- | ` 0x10 ` | 32 | RoCC RS1 LSB |
198- | ` 0x14 ` | 32 | RoCC RS1 MSB |
199- | ` 0x18 ` | 32 | RoCC RS2 LSB |
200- | ` 0x1c ` | 32 | RoCC RS2 MSB |
201- | ` 0x20 ` | 32 | Busy |
202- | ` 0x28 ` | 32 | Num running loops |
203- | ` 0x30 ` | 32 | CISC instruction |
204- | ` 0x40 ` | 32 | LUT word 0 |
205- | ` 0x44 ` | 32 | LUT word 1 |
206- | ` 0x48 ` | 32 | LUT word 2 (RV) |
196+ | Address | Bytes | Description |
197+ | ---------| ------- | -------------------|
198+ | ` 0x00 ` | 4 | RoCC instruction |
199+ | ` 0x10 ` | 4 | RoCC RS1 LSB |
200+ | ` 0x14 ` | 4 | RoCC RS1 MSB |
201+ | ` 0x18 ` | 4 | RoCC RS2 LSB |
202+ | ` 0x1c ` | 4 | RoCC RS2 MSB |
203+ | ` 0x20 ` | 4 | Busy |
204+ | ` 0x28 ` | 4 | Num running loops |
205+ | ` 0x30 ` | 4 | CISC instruction |
206+ | ` 0x80 ` | 384 | LUT table 0 |
207+ | ` 0x200 ` | 384 | LUT table 1 |
208+ | ` 0x380 ` | 384 | LUT table 2 |
207209
208210
209211GPU to requantizer: fp16 in, fp8 out; addressing scheme: magnify by 2x.
@@ -227,13 +229,25 @@ Requantizer will only see data intended to be requantized and not passthroughed.
227229| -----------------| ---------------| ---------------------------------|
228230| ` 0x4000_0000 ` | ` 0x100000 ` | Cluster 0 SMEM (inc. Gemmini) |
229231| ` 0x4010_0000 ` | ` 0x100000 ` | Cluster 1 SMEM (inc. Gemmini) |
232+ | ` 0x4100_0000 ` | ` 0x100 ` | GPU reset aggregator |
230233| ` 0x6000_0000 ` | ` 0x10000 ` | GPU device command processor |
231234| ` 0x8000_0000 ` | ` 0x8000_0000 ` | CPU-only DRAM (2GB) |
232235| ` 0x1_0000_0000 ` | ` 0x8000_0000 ` | GPU DRAM (2GB), CPU addressable |
233236
234237GPU will live in the illusion that addresses start at 0; when its requests leave
235238unified L1, it will be rewritten to append the 33rd bit before arriving at L2.
236239
240+ Reset aggregator has the following address map:
241+
242+ | Address | Bytes | Description |
243+ | ---------| -------| ---------------------------|
244+ | ` 0x00 ` | 4 | GPU reset |
245+ | ` 0x08 ` | 4 | GPU all finished |
246+ | ` 0x10 ` | 4 | Cluster 0 core 0 finished |
247+ | ` 0x14 ` | 4 | Cluster 0 core 1 finished |
248+ | ` 0x18 ` | 4 | Cluster 1 core 0 finished |
249+ | ` 0x1c ` | 4 | Cluster 1 core 1 finished |
250+
237251<!--
238252The Command Processor will need to have its own BootROM to act as failsafe when
239253the CPU fails to schedule work on the SIMT cores.
0 commit comments