@@ -404,27 +404,15 @@ begin
404
404
// predecode_mshr_read_address_s1 = mshr_pipe_address_s1;
405
405
predecode_mshr_read_homeid_s1 = mshr_pipe_readres_homeid_s1;
406
406
407
- // mshr_val_array
408
- //mshr_val_array[0] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*1 - 1 -: `L15_NUM_MSHRID_PER_THREAD];
409
- //mshr_st_state_array[0] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*1 - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
410
- //mshr_st_address_array[0] = mshr_pipe_st_address[`L15_PADDR_WIDTH*1 - 1 -: `L15_PADDR_WIDTH];
411
- //mshr_ld_address_array[0] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*1 - 1 -: `L15_PADDR_WIDTH];
412
- //mshr_st_way_array[0] = mshr_pipe_st_way_s1[2*1 - 1 -: 2];
413
- //
414
- //mshr_val_array[1] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*2 - 1 -: `L15_NUM_MSHRID_PER_THREAD];
415
- //mshr_st_state_array[1] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*2 - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
416
- //mshr_st_address_array[1] = mshr_pipe_st_address[`L15_PADDR_WIDTH*2 - 1 -: `L15_PADDR_WIDTH];
417
- //mshr_ld_address_array[1] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*2 - 1 -: `L15_PADDR_WIDTH];
418
- //mshr_st_way_array[1] = mshr_pipe_st_way_s1[2*2 - 1 -: 2];
419
-
420
- for(i = 0; i < `L15_NUM_THREADS; i = i+1)
421
- begin
422
- mshr_val_array[i] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*(i+1) - 1 -: `L15_NUM_MSHRID_PER_THREAD];
423
- mshr_st_state_array[i] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*(i+1) - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
424
- mshr_st_address_array[i] = mshr_pipe_st_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
425
- mshr_ld_address_array[i] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
426
- mshr_st_way_array[i] = mshr_pipe_st_way_s1[`L15_WAY_WIDTH*(i+1) - 1 -: `L15_WAY_WIDTH];
427
- end
407
+ // mshr_val_array
408
+ for(i = 0; i < `L15_NUM_THREADS; i = i+1)
409
+ begin
410
+ mshr_val_array[i] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*(i+1) - 1 -: `L15_NUM_MSHRID_PER_THREAD];
411
+ mshr_st_state_array[i] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*(i+1) - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
412
+ mshr_st_address_array[i] = mshr_pipe_st_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
413
+ mshr_ld_address_array[i] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
414
+ mshr_st_way_array[i] = mshr_pipe_st_way_s1[`L15_WAY_WIDTH*(i+1) - 1 -: `L15_WAY_WIDTH];
415
+ end
428
416
429
417
end
430
418
@@ -450,10 +438,6 @@ reg predecode_tagcheck_matched_trd_ld_s1 [`L15_THREAD_ARRAY_MASK]; // each eleme
450
438
reg predecode_tagcheck_matched_trd_st_s1 [`L15_THREAD_ARRAY_MASK];
451
439
reg predecode_tagcheck_matched_lds_s1;
452
440
reg predecode_tagcheck_matched_sts_s1;
453
- //reg predecode_tagcheck_matched_t0ld_s1;
454
- //reg predecode_tagcheck_matched_t0st_s1;
455
- //reg predecode_tagcheck_matched_t1ld_s1;
456
- //reg predecode_tagcheck_matched_t1st_s1;
457
441
458
442
reg predecode_int_vec_dis_s1;
459
443
reg predecode_tagcheck_matched_s1;
@@ -850,28 +834,26 @@ begin
850
834
851
835
// TAG CHECKING
852
836
predecode_partial_tag_s1[19:4] = pcxdecoder_l15_address[19:4]; // compare partial tag to save energy & timing
853
- predecode_tagcheck_matched_lds_s1 = 0;
854
- predecode_tagcheck_matched_sts_s1 = 0;
837
+ predecode_tagcheck_matched_lds_s1 = 0;
838
+ predecode_tagcheck_matched_sts_s1 = 0;
855
839
856
- for(i = 0; i < `L15_NUM_THREADS; i = i+1)
857
- begin
858
- predecode_tagcheck_matched_trd_ld_s1[i] = mshr_val_array[i][`L15_MSHR_ID_LD]
840
+ for(i = 0; i < `L15_NUM_THREADS; i = i+1)
841
+ begin
842
+ predecode_tagcheck_matched_trd_ld_s1[i] = mshr_val_array[i][`L15_MSHR_ID_LD]
859
843
&& (predecode_partial_tag_s1[19:4] == mshr_ld_address_array[i][19:4]);
860
- predecode_tagcheck_matched_trd_st_s1[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
861
- && (pcxdecoder_l15_address[39:4] == mshr_st_address_array[i][39:4]);
844
+ predecode_tagcheck_matched_trd_st_s1[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
845
+ && (pcxdecoder_l15_address[39:4] == mshr_st_address_array[i][39:4]);
862
846
863
- predecode_tagcheck_matched_lds_s1 = predecode_tagcheck_matched_trd_ld_s1[i] | predecode_tagcheck_matched_lds_s1;
864
- predecode_tagcheck_matched_sts_s1 = predecode_tagcheck_matched_trd_st_s1[i] | predecode_tagcheck_matched_sts_s1;
865
-
866
- if(predecode_tagcheck_matched_trd_st_s1[i] == 1)
867
- predecode_hit_stbuf_threadid_s1 = i;
847
+ predecode_tagcheck_matched_lds_s1 = predecode_tagcheck_matched_trd_ld_s1[i] | predecode_tagcheck_matched_lds_s1;
848
+ predecode_tagcheck_matched_sts_s1 = predecode_tagcheck_matched_trd_st_s1[i] | predecode_tagcheck_matched_sts_s1;
868
849
869
- end
850
+ if(predecode_tagcheck_matched_trd_st_s1[i] == 1)
851
+ predecode_hit_stbuf_threadid_s1 = i;
852
+ end
870
853
871
- predecode_tagcheck_matched_s1 = predecode_tagcheck_matched_lds_s1 | predecode_tagcheck_matched_sts_s1;
854
+ predecode_tagcheck_matched_s1 = predecode_tagcheck_matched_lds_s1 | predecode_tagcheck_matched_sts_s1;
872
855
// misc
873
856
predecode_hit_stbuf_s1 = predecode_tagcheck_matched_sts_s1;
874
- //predecode_hit_stbuf_threadid_s1 = predecode_tagcheck_matched_t1st_s1 ? 1'b1 : 1'b0;
875
857
// note: only work with 2 threads for now; need to change the algo of mshr if need to increase the num of threads
876
858
end
877
859
@@ -3326,31 +3308,35 @@ reg [`L15_UNPARAM_1_0] stbuf_way_s3; // wmt todo: move calculation to s2
3326
3308
always @ *
3327
3309
begin
3328
3310
3329
- stbuf_compare_match_val_s3 = 0;
3330
- stbuf_compare_lru_match_val_s3 = 0;
3331
- for(i = 0; i < `L15_NUM_THREADS; i = i+1)
3332
- begin
3333
- `ifdef PITON_ASIC_RTL
3334
- stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][10:4] == cache_index_s3;
3335
- `else
3336
- stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][39:4] == address_s3[39:4];
3337
- `endif
3311
+ stbuf_compare_match_val_s3 = 0;
3312
+ stbuf_compare_lru_match_val_s3 = 0;
3313
+ for(i = 0; i < `L15_NUM_THREADS; i = i+1)
3314
+ begin
3315
+ `ifdef PITON_ASIC_RTL
3316
+ stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][10:4] == cache_index_s3;
3317
+ `else
3318
+ stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][39:4] == address_s3[39:4];
3319
+ `endif
3338
3320
3339
- stbuf_compare_match_s3[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
3340
- && (mshr_st_state_array[i] == `L15_MESI_TRANSITION_STATE_SM)
3341
- && (stbuf_compare_address_match_s3[i] == 1'b1);
3321
+ stbuf_compare_match_s3[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
3322
+ && (mshr_st_state_array[i] == `L15_MESI_TRANSITION_STATE_SM)
3323
+ && (stbuf_compare_address_match_s3[i] == 1'b1);
3342
3324
3343
- stbuf_compare_lru_match_s3[i] = stbuf_compare_match_s3[i] && (mshr_st_way_array[i] == lru_way_s3);
3325
+ stbuf_compare_lru_match_s3[i] = stbuf_compare_match_s3[i] && (mshr_st_way_array[i] == lru_way_s3);
3344
3326
3345
- if (stbuf_compare_match_s3[i] == 1)
3327
+ if (stbuf_compare_match_s3[i] == 1)
3328
+ begin
3346
3329
stbuf_compare_threadid_s3 = i;
3330
+ end
3347
3331
3348
- if (stbuf_compare_lru_match_s3[i] == 1)
3332
+ if (stbuf_compare_lru_match_s3[i] == 1)
3333
+ begin
3349
3334
stbuf_compare_lru_threadid_s3 = i;
3335
+ end
3350
3336
3351
- stbuf_compare_match_val_s3 = stbuf_compare_match_s3[i] | stbuf_compare_match_val_s3;
3352
- stbuf_compare_lru_match_val_s3 = stbuf_compare_lru_match_s3[i] | stbuf_compare_lru_match_val_s3;
3353
- end
3337
+ stbuf_compare_match_val_s3 = stbuf_compare_match_s3[i] | stbuf_compare_match_val_s3;
3338
+ stbuf_compare_lru_match_val_s3 = stbuf_compare_lru_match_s3[i] | stbuf_compare_lru_match_val_s3;
3339
+ end
3354
3340
3355
3341
stbuf_way_s3 = mshr_st_way_array[stbuf_compare_threadid_s3];
3356
3342
// stbuf_way_wmt_data_s3 = wmt_data_s3[stbuf_way_s3];
0 commit comments