Inflearn brand logo image

인프런 커뮤니티 질문&답변

박준기님의 프로필 이미지
박준기

작성한 질문수

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

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

address bit수에 대해서 질문 드립니다.

해결된 질문

작성

·

105

0

Direct Mapped chache메모리 설계하기 스텝에서

주어진 조건에 맞춰서 address 와 data bit수를 정하는 부분에서 막혔습니다.

제가 이해한게 맞는지 확인 부탁드립니다.

우선 메모리 사이즈란 DRAM의 사이즈로 이해했습니다.

그래서 디램의 사이즈가 256B이므로 하나의 메모리가 4B로 처리된다면, 디램은 총 64개의 메모리를 저장할 수 있는 것으로 생각했습니다. ( Blocks = 64 )

cache size는 SRAM 즉, 캐시메모리의 사이즈로 이해했습니다. 그렇다면, 캐시메모리에서 저장가능한 갯수는 하나의 메모리가 4B를 담고 있으므로 총 4개 ( 4sets)가 됩니다.

 

데이터를 주고 받는 것에 필요한 라인을 설정해야 하는데, 데이터라인과 어드레스 라인은 서로 다른 것으로 이해했습니다.

어드레스는 상위비트부터 순서대로 tag,index,byte offset으로 분류됩니다.

tag란 DRAM의 어느 곳에서 온 메모리인지를 담고 있는 데이터 입니다. 캐시메모리는 총 4개의 데이터를 저장 가능하며, 하나의 cache line당 16개의 데이터를 맵핑할 수 있습니다.따라서 tag에는 총 4개의 비트가 필요합니다.

index는 4개의 캐시라인에 대한 주소를 의미하므로, 2개의 비트가 필요합니다.

마지막으로 byte offset은 블록 사이즈가 4바이트이므로, 2개의 비트를 사용해야 할 것으로 보입니다.

하여 어드레스에 해당하는 비트 수가 총 8개여야 할 것 같습니다.

 

근데 어드레스로 보이는 코드의 비트수가 6개여서 질문드립니다. 혹시 byte-offset은 고려하지 않은채로 설계가 된건가요?

답변 2

0

네 안녕하세요, 답변 남겨드립니다.
박준기님, 아주 정밀하게 잘 분석해주셨군요.
말씀하신 것처럼 block offset에 대해서는 4바이트 -> 2bit로 표현 되므로 2bit의 offset를 통해 선택해주게 하면 됩니다.
하지만 우리가 다루는 예제에서는 그렇게 하면 코드가 길어지기 때문에 hit와 관련된 Tag와 Index에 집중하여 설계하였습니다.
i_cpu_addr[5:2]: Tag (4비트)

i_cpu_addr[1:0]: Index (2비트)

물론 offset에 대해서 추가해서 무언가를 더 try 해보셔도 좋지만, 캐시 구조에서 가장 핵심적인 부분만 논하시더라도 기본적인 discuss는 될겁니다. 잘 분석해주셨습니다!

0

안녕하세요, 인프런 AI 인턴입니다. 박준기님.

질문하신 Cache 메모리 설계에 대해 상세히 설명 드리겠습니다. 특히 Direct Mapped Cache에 관련된 내용이 중요한 만큼 자세히 다루겠습니다.

  1. 메모리 구조 이해:

    • Direct Mapped Cache 설계에서 메모리 주소는 보통 Tag, Index, 그리고 Byte Offset으로 나누어집니다. 이 구조에서 각각의 비트 수는 메모리 조직의 크기와 관련이 있습니다.
  2. Address 구성 논리:

    • Tag: 중요한 정보로서, 메모리가 어디서 오는지를 알려줍니다. Cache의 라인 개수가 4개라면, 각 라인에 대해 특정 블록이 시점마다 적절한 Tag값과 비교되어야 합니다. 적절한 Tag의 크기는 주어진 조건에 따라 다르게 계산될 수 있습니다.
    • Index: 4개의 Cache 라인을 가리키기 위해 필요한 비트 수는 비트 수가 2개이라고 보시는 것이 맞습니다. (2^2 = 4개의 라인)
    • Byte Offset: 각 블록의 사이즈인 4바이트를 처리하기 위해 2개의 비트가 필요합니다. 이는 캐시 블록 내 데이터를 식별하는 데 사용됩니다.
  3. 주소 계산의 핵심:

    • 전체 주소 비트 수는 Tag, Index, 그리고 Byte Offset의 합부터 시작합니다. 그러나 6개 비트의 어드레스가 사용된 이유라면, 특정 설계 방식에서 Byte Offset을 부분적으로 상정했을 가능성이 있습니다. 설계의 각 단계에서 이 부분은 캐시 설계의 세부 사항과 목표에 따라 바뀔 수 있습니다.
  4. 주소 비트 수 조정:

    • 실제로 디지털 설계에서는 효율성을 높이기 위해 여러 가정을 하게 됩니다. 덕분에 특정 비트를 생략할 수 있는 경우도 있으니, 자세한 요구 사항이 필요합니다.

마지막으로, cache 메모리 설계는 고도의 정밀성을 요구하므로, 이론적과 실제 설계상의 약간의 차이가 있을 수 있습니다. 다음 문서와 URL을 확인하시면서 이론과 실제 설계에서 고려할 사항을 비교해 보시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박준기님의 프로필 이미지
박준기

작성한 질문수

질문하기