해결된 질문
작성
·
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에 관련된 내용이 중요한 만큼 자세히 다루겠습니다.
메모리 구조 이해:
Address 구성 논리:
주소 계산의 핵심:
주소 비트 수 조정:
마지막으로, cache 메모리 설계는 고도의 정밀성을 요구하므로, 이론적과 실제 설계상의 약간의 차이가 있을 수 있습니다. 다음 문서와 URL을 확인하시면서 이론과 실제 설계에서 고려할 사항을 비교해 보시기 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.