finished timing
This commit is contained in:
parent
fde2d37407
commit
0732946b25
|
@ -8,10 +8,10 @@
|
||||||
|
|
||||||
#define LINE_SIZE 64
|
#define LINE_SIZE 64
|
||||||
// [1.2] TODO: Uncomment the following lines and fill in the correct size
|
// [1.2] TODO: Uncomment the following lines and fill in the correct size
|
||||||
//#define L1_SIZE TODO
|
#define L1_SIZE 768*1024
|
||||||
//#define L2_SIZE TODO
|
#define L2_SIZE 16*1024*1024
|
||||||
//#define L3_SIZE TODO
|
#define L3_SIZE 64*1024*1024
|
||||||
//#define BUFF_SIZE TODO
|
#define BUFF_SIZE 16*1024*1024
|
||||||
|
|
||||||
int main (int ac, char **av) {
|
int main (int ac, char **av) {
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ int main (int ac, char **av) {
|
||||||
|
|
||||||
// [1.2] TODO: Uncomment the following line to allocate a buffer of a size
|
// [1.2] TODO: Uncomment the following line to allocate a buffer of a size
|
||||||
// of your chosing. This will help you measure the latencies at L2 and L3.
|
// of your chosing. This will help you measure the latencies at L2 and L3.
|
||||||
//volatile uint8_t *eviction_buffer = (uint8_t *)malloc(BUFF_SIZE);
|
volatile uint8_t *eviction_buffer = (uint8_t *)malloc(BUFF_SIZE);
|
||||||
|
|
||||||
// Example: Measure L1 access latency, store results in l1_latency array
|
// Example: Measure L1 access latency, store results in l1_latency array
|
||||||
for (int i=0; i<SAMPLES; i++){
|
for (int i=0; i<SAMPLES; i++){
|
||||||
|
@ -53,17 +53,45 @@ int main (int ac, char **av) {
|
||||||
// [1.2] TODO: Measure DRAM Latency, store results in dram_latency array
|
// [1.2] TODO: Measure DRAM Latency, store results in dram_latency array
|
||||||
// ======
|
// ======
|
||||||
//
|
//
|
||||||
|
for (int i=0; i<SAMPLES; i++){
|
||||||
|
// Step 1: bring the target cache line into DRAM
|
||||||
|
clflush((void *)target_buffer);
|
||||||
|
|
||||||
|
// Step 2: measure the access latency
|
||||||
|
dram_latency[i] = measure_one_block_access_time((uint64_t)target_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
// ======
|
// ======
|
||||||
// [1.2] TODO: Measure L2 Latency, store results in l2_latency array
|
// [1.2] TODO: Measure L2 Latency, store results in l2_latency array
|
||||||
// ======
|
// ======
|
||||||
//
|
//
|
||||||
|
for (int i=0; i<SAMPLES; i++){
|
||||||
|
// Step 1: bring the target cache line into L1 by simply accessing
|
||||||
|
// the line
|
||||||
|
tmp = target_buffer[0];
|
||||||
|
for(int j=0; j<L1_SIZE/LINE_SIZE; j++){
|
||||||
|
tmp = eviction_buffer[j*LINE_SIZE];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 2: measure the access latency
|
||||||
|
l2_latency[i] = measure_one_block_access_time((uint64_t)target_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
// ======
|
// ======
|
||||||
// [1.2] TODO: Measure L3 Latency, store results in l3_latency array
|
// [1.2] TODO: Measure L3 Latency, store results in l3_latency array
|
||||||
// ======
|
// ======
|
||||||
//
|
//
|
||||||
|
for (int i=0; i<SAMPLES; i++){
|
||||||
|
// Step 1: bring the target cache line into L1 by simply accessing
|
||||||
|
// the line
|
||||||
|
tmp = target_buffer[0];
|
||||||
|
for(int j=0; j<L2_SIZE/LINE_SIZE; j++){
|
||||||
|
tmp = eviction_buffer[j*LINE_SIZE];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 2: measure the access latency
|
||||||
|
l3_latency[i] = measure_one_block_access_time((uint64_t)target_buffer);
|
||||||
|
}
|
||||||
|
|
||||||
// Print the results to the screen
|
// Print the results to the screen
|
||||||
// When compile to main and used by `make run`,
|
// When compile to main and used by `make run`,
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
|
|
||||||
| Cache | Cache Line Size | Total Size | Associativity | Number of Sets | Raw Latency |
|
| Cache | Cache Line Size | Total Size | Associativity | Number of Sets | Raw Latency |
|
||||||
| ----- | --------------- | ---------- | ------------- | -------------- | ----------- |
|
| ----- | --------------- | ---------- | ------------- | -------------- | ----------- |
|
||||||
| L1-D | 64 | | | | |
|
| L1-D | 64 | 768K | 12 | 1K | |
|
||||||
| L2 | | | | | |
|
| L2 | 64 | 16M | 16 | 16K | |
|
||||||
| L3 | | | | | |
|
| L3 | 64 | 64M | 16 | 64K | |
|
||||||
|
|
||||||
## 1-3
|
## 1-3
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue