inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

CPU의 Spec.에 표기되는 L1, L2, L3 Cache 메모리 설계하기

cache 코드 관련 질문드립니다!

해결된 질문

244

b0i4s

작성한 질문수 21

2

always @(posedge i_clk, negedge i_rstn) begin

if(!i_rstn) r_wb_mem <= 0;

else if(w_cpu_we) r_wb_mem[w_cc_wa] <= 1;

else if(w_mem_re) r_wb_mem[w_cc_wa] <= 0;

else if(w_mem_we) r_wb_mem[w_cc_wa] <= i_cpu_write;

end

위 코드의 경우 별도의 설명이 없었던 것 같습니다.

코드를 분석하는 중 궁금한 점이 몇가지 생겨서 질문 드립니다.

  1. cpu_we이 1인 경우 CPU에서 (읽기를 통해 값을 비교하여 바꾸는 작업이 아닌) 쓰기 작업에 대한 요청을 보냈기 때문에 Main Memory에 값을 쓰기 위한 wb이 반드시 1로 되는게 맞는건지 궁금합니다.

  2. mem_re가 1인 경우 wb이 0이 되는 것이 헷갈립니다.

     

    제가 이해한 Write Back은 쓰기 Main Memory에 데이터를 저장하는 것이기 때문에 mem_re 즉, 읽기 요청이 왔을 때 쓰는 행위가 같이 일어나면 안되는 것이라서 그런것인지 궁금합니다. (추가로 다른 이유가 있는지 궁금합니다.)

  3. mem_we가 1인 경우 memory에 Data를 써야하기 때문에 i_cpu_wirte에 값을 전달 받는 것이 아니라 1이 되어야 하는게 아닌지 궁금합니다.(i_cpu_write가 0인데 mem_we가 1인 상태가 궁금합니다. => 그냥 메모리에 쓸 준비가 되어 있는 상태에서 i_cpu_write 요청이 들어오면 그때 wb을 1로 만들겠다는 의미가 맞는지 궁금합니다.)

아직 해석이 완벽하지 않아 내용 정리 및 전달이 미흡한점 죄송합니다.

컴퓨터-구조 verilog-hdl fpga 임베디드 amba

답변 1

0

회로설계 멘토 삼코치

네 안녕하세요, 답변 남겨드립니다.

  1. cpu_we이 1인 경우 CPU에서 (읽기를 통해 값을 비교하여 바꾸는 작업이 아닌) 쓰기 작업에 대한 요청을 보냈기 때문에 Main Memory에 값을 쓰기 위한 wb이 반드시 1로 되는게 맞는건지 궁금합니다.
    -> 네 맞습니다. 쓰기 작업 요청 시, wb이 1로 되어야 write가 가능해지기 때문입니다.

  2. mem_re가 1인 경우 wb이 0이 되는 것이 헷갈립니다.

     

    제가 이해한 Write Back은 쓰기 Main Memory에 데이터를 저장하는 것이기 때문에 mem_re 즉, 읽기 요청이 왔을 때 쓰는 행위가 같이 일어나면 안되는 것이라서 그런것인지 궁금합니다. (추가로 다른 이유가 있는지 궁금합니다.)
    -> 이것도 맞습니다. re가 read enable이기 때문에 메모리가 읽히는 과정에서 Write back이 일어나면 안되기 때문입니다.


  3. mem_we가 1인 경우 memory에 Data를 써야하기 때문에 i_cpu_wirte에 값을 전달 받는 것이 아니라 1이 되어야 하는게 아닌지 궁금합니다.(i_cpu_write가 0인데 mem_we가 1인 상태가 궁금합니다. => 그냥 메모리에 쓸 준비가 되어 있는 상태에서 i_cpu_write 요청이 들어오면 그때 wb을 1로 만들겠다는 의미가 맞는지 궁금합니다.)
    -> 이것도 맞는데요, 정말 잘 이해하시네요! 실제로 메모리 쪽에서도 쓸 준비가 되고, CPU에서 요청이 들어와야 write back 될 수 있습니다.
    그래서 조건문에 i_cpu_write 를 and 치고, 1을 <= 으로 넣어주는것도 하나의 방법이 될 수 있습니다.

    코드가 있는 그대로 해석하면 되는 것이기 때문에 해석을 잘 하셨으며, 해석에 포함된 의미 또한 추측하신바가 맞습니다.



    또 궁금한 점이 있다면 질문주시기 바랍니다!

0

b0i4s

아직 부족한부분이 많아 코드를 그대로 해석하지 못하고 이런저런 생각을 많이 하게 되는 것 같습니다. 자세한 답변 감사드립니다.

강의 만료일 연장 신청

0

33

2

강의자료 pdf파일

0

89

2

수강기간변경

0

75

2

프로그램 종류

0

90

1

안녕하세요 강의 도중 궁금한 점 있어서 질문드립니다!

0

87

1

수강기간 변경관련

0

65

2

수강기간 만료

0

72

2

수강 연장 문의

0

71

2

I2C SCL_Synched, SDA_Synched 질문

0

84

1

no data path질문

0

102

3

SRAM 강의 modelsim 시뮬레이션에서 inner 메모리를 Objects 리스트에서 찾으려고 하는데 안보입니다.

0

89

2

DataMem 스펙 질문

0

54

1

Hamming Code 질문

0

66

1

W_CRC 값 질문하기

0

60

1

Precharge에 대한 질문

0

167

1

tpsram spec 질문

0

64

2

학습 관련 질문 있습니다!

0

88

2

[과제7] AXI 통신 프로토콜 설계하기 문의드립니다

0

94

2

SRAM 강의 TB 작성 후 waveform 확인시에 dout이 모두 don't care 처리 관련 질문드립니다.

0

105

5

SRAM Interface Behavior(Diagram) 질문

0

133

3

vivado와 quartus 프로그램의 systhesis 결과 차이에 대해 궁금한 점 있습니다

0

185

2

tool 질문

0

92

2

CDC 메타스태빌리티 질문

0

66

1

SRAM module RTL viewer 이상

0

97

2