---
# System prepended metadata

title: RC_NVM stride test
tags: [research-GraphRC]

---

# [Exp] RC_NVM stride test
###### tags: `research-GraphRC`
[TOC]

## Objective
- To better understand the property of RC_NVM, we designed serveral experiments to observe the behavior of RC_NVM simulator

## Exp1: Memory stride test
- We stride the two-dimensional memory space with various size to better understand the underlying hardware.

### Stride Channel (~0)
```bash=
0 R 0x00000000 0 0
1 R 0x00800000 0 0
```
rb_miss = 1
cyc = 260 / 2 = 130
### Stride Rank (25)
```bash=
0 R 0x00000000 0 0
1 R 0x40000000 0 0
2 R 0x80000000 0 0
3 R 0xC0000000 0 0
```
rb_miss = 3
cyc = 310 / 4 = 77.5
### Stride Bank (17.5)
```bash=
0 R 0x00000000 0 0
1 R 0x01000000 0 0
2 R 0x02000000 0 0
3 R 0x03000000 0 0
4 R 0x04000000 0 0
5 R 0x05000000 0 0
6 R 0x06000000 0 0
7 R 0x07000000 0 0
```
rb_miss = 7
cyc = 400 / 8 = 50
### Stride Subarray (48.75)
```bash=
0 R 0x00000000 0 0
1 R 0x08000000 0 0
2 R 0x10000000 0 0
3 R 0x18000000 0 0
4 R 0x20000000 0 0
5 R 0x28000000 0 0
6 R 0x30000000 0 0
7 R 0x38000000 0 0
```
rb_miss = 7
cyc = 650 / 8 = 81.25
### Stride Mat
```bash=
0 R 0x00000000 0 0
1 R 0x00000008 0 0
2 R 0x00000010 0 0
...
1021 R 0x00001FE8 0 0
1022 R 0x00001FF0 0 0
1023 R 0x00001FF8 0 0
```
rb_hits = 1022
rb_miss = 1
cyc = 20700 / 1024 = 20.21
### Stride Byte
```bash=
0 R 0x00000000 0 0
1 R 0x00000001 0 0
2 R 0x00000002 0 0
3 R 0x00000003 0 0
4 R 0x00000004 0 0
5 R 0x00000005 0 0
6 R 0x00000006 0 0
7 R 0x00000007 0 0
```
rb_hits = 6
rb_miss = 1
cyc = 380 / 8 = 47.5

# Exp2 : Stride diff HW level
![](https://i.imgur.com/XDRvQP4.png)
- Channel : stride size = (1 << 23) = 8 MB
- Bank : stride size = (1 << 24) = 16 MB
- Subarray : stride size = (1 << 27) = 256 MB
- Rank : stride size = (1 << 30) = 1 GB

## Stride 4GB with stride size = 4MB

## Stride Channel (8 MB stride)
- Stride address from 0 to 32 MB
- command `./build/mem_mount_trace R 8 MB 32 MB`
- ![](https://i.imgur.com/HGXlLYp.png)

```
0 R 0x00000000 0 0
1 R 0x00000001 0 0
2 R 0x00000002 0 0
3 R 0x00000003 0 0
4 R 0x00000004 0 0
5 R 0x00000005 0 0
6 R 0x00000006 0 0
7 R 0x00000000 0 0 <- 380 cyc 
8 R 0x00800000 0 0 <- 380 cyc +0
9 R 0x01000000 0 0 <- 400 cyc + 20
10 R 0x01800000 0 0 <- 400 cyc
```

## Stride Bank (16 MB stride)
- Stride address from 0 to 160 MB
- command `./build/mem_mount_trace R 16 MB 160 MB`
- ![](https://i.imgur.com/1sT4oN4.png)

```
0 R 0x00000000 0 0
1 R 0x00000001 0 0
2 R 0x00000002 0 0
3 R 0x00000003 0 0
4 R 0x00000004 0 0
5 R 0x00000005 0 0
6 R 0x00000006 0 0
7 R 0x00000000 0 0 <- 380 cyc
8 R 0x01000000 0 0 <- 400 cyc +20
9 R 0x02000000 0 0 <- 420 cyc + 20
10 R 0x03000000 0 0 <- 445 cyc + 25
11 R 0x04000000 0 0 <- 465 cyc + 20
12 R 0x05000000 0 0 <- 485 cyc + 20
13 R 0x06000000 0 0 <- 505 cyc + 20
14 R 0x07000000 0 0 <- 525 cyc + 25
15 R 0x08000000 0 0 <- 545 cyc + 20
16 R 0x09000000 0 0 <- 565 cyc + 20
```

## Stride Subarray (256 MB stride)
- Stride address from 0 to 2 GB
- command `./build/mem_mount_trace R 256 MB 2 GB`
- ![](https://i.imgur.com/uj7Pkk3.png)
```
0 R 0x00000000 0 0
1 R 0x00000001 0 0
2 R 0x00000002 0 0
3 R 0x00000003 0 0
4 R 0x00000004 0 0
5 R 0x00000005 0 0
6 R 0x00000006 0 0
7 R 0x00000000 0 0 <- 380 cyc
8 R 0x10000000 0 0 <- 445 cyc +65
9 R 0x20000000 0 0 <- 510 cyc +65
10 R 0x30000000 0 0 <- 575 cyc +65
11 R 0x40000000 0 0 <- 575 cyc +0
12 R 0x50000000 0 0 <- 575 cyc +0
13 R 0x60000000 0 0 <- 575 cyc +0
14 R 0x70000000 0 0 <- 600 cyc +25
```
```
0 R 0x00000000 0 0
1 R 0x00000001 0 0
2 R 0x00000002 0 0
3 R 0x00000003 0 0
4 R 0x00000004 0 0
5 R 0x00000005 0 0
6 R 0x00000006 0 0
7 R 0x00000000 0 0
8 R 0x10000000 0 0
9 R 0x40000000 0 0
10 R 0x30000000 0 0
11 R 0x20000000 0 0
12 R 0x70000000 0 0
13 R 0x60000000 0 0
14 R 0x50000000 0 0 <- 600 cyc
```

## Stride Rank (1 GB MB stride)
- Stride address from 0 to 4 GB
- command `./build/mem_mount_trace R 1 GB 4 GB`
- ![](https://i.imgur.com/HJTWTpl.png)
```
0 R 0x00000000 0 0
1 R 0x00000001 0 0
2 R 0x00000002 0 0
3 R 0x00000003 0 0
4 R 0x00000004 0 0
5 R 0x00000005 0 0
6 R 0x00000006 0 0
7 R 0x00000000 0 0 <- 380 cyc
8 R 0x40000000 0 0 <- 405 cyc +25
9 R 0x80000000 0 0 <- 430 cyc +25
10 R 0xC0000000 0 0 <- 455 cyc +25

```
## All stride size across 4 GB space
![](https://i.imgur.com/6yqNiC8.png)
