TLB 및 데이터 캐시는 어떻게 작동합니까?


15

시험 공부를하려고하는데 TLB와 데이터 캐시의 작동 방식이 혼란 스러웠습니다.

TLB는 본질적으로 가장 최근에 사용 된 물리적 주소의 캐시라는 것을 알고 있습니다. 그러나 나는 교과서에있는 다이어그램을보고 있었는데 (아래 그림 참조), 무슨 일이 일어나고 있는지 이해할 수 없습니다. 갑자기 물리적 주소를 분할하고 캐시를 색인하는 데 사용합니다. 그러나 왜 캐시와 데이터를 별도로 표시합니까? 바이트 오프셋이 왜 떠있는 상태입니까? 캐시가 데이터를 저장해야한다고 확신합니다. 그것의 유일한 목적은 그 내부에 히트 또는 누락이 있는지 여부를 결정하는 것이라고 생각하지 않습니다.

나는 무지에 대해 미리 사과하지만 책은 TLB를 거의 다루지 않으며 (페이지보다 조금 더 비슷합니다) TLB와 캐시의 관계를 잘 설명하지 못합니다.

그림


이 질문은 너무 깁니다. 이 중에서 구체적 이고 좁은 질문 을 추출한 다음 질문을 편집하여 하나의 특정 질문으로 정리할 수 있습니까? 좋은 질문을하는 것은 알아야 할 최소한의 본질에 대해 신중하게 생각하고 그 질문에 관련이 있고 필수적인 것만 포함하는 것입니다. 예를 들어, TLB가 어떻게 작동하는지에 대한 특정 질문이 있다면,이 모든 것을 버리지 않고 TLB에 대해 좁게 만들어진 단일 질문을 작성하는 것은 어떻습니까?
DW

스택 교환에 참여하는 대부분의 사람들은 어떤 노력을 기울이지 않고 질문에 대답하는 것을 좋아하지 않기 때문에 (의도적으로) 내가 주제에 대해 이미 이해하고있는 것을 보여 주려는 의도였습니다. 나는 모두를 행복하게 할 수 없다고 생각합니다. 어쩌면 나는 굵게 또는 다른 질문으로 편집 할 것입니다.
audiFanatic

@DW가 더 낫습니까?
audiFanatic

audiFanatic, 당신은 내 의견과 "어떤 노력을 보여줘"마인드를 잘못 해석하거나 오해했을 수 있습니다. 내 제안은 "TLB는 어떻게 작동합니까? 잘 모르겠습니다"와 같은 좁은 질문을 식별 한 다음 해당 질문에만 초점을 맞출 것을 제안합니다. 그렇습니다. 그 질문 에 대답하기 위해 진지한 노력을 기울여야하며 , 특정 질문 에 대답하기 위해 한 노력을 보여 주어야 하지만 관련이없는 주제에 대한 노력은 관련이 없습니다 (예를 들어, 당신이 열심히 노력한 사실) 이 질문을 생각하게 한 숙제 질문의 진행).
DW

이것의 배경을 이해하도록 도와 드리겠습니다. 우리는 당신뿐만 아니라 다른 사람들에게 도움이 될 고품질의 질문과 답변을 보관하고 싶습니다. 도움을주기 위해 할 수있는 최선의 방법은 구체적이고 좁고 잘 정립 된 질문을 추출하여 하나의 질문에만 집중하는 것입니다. 집중적이지 않은 개방적이고 끝이없는 질문은 그 질문에 걸려 넘어 질 수있는 다른 사람들에게는 도움이되지 않을 것입니다. 또한 독자가 질문의 핵심을 이해하고 이해하기가 더 어렵습니다. 좋은 답변을 얻을 가능성이 적습니다).
DW

답변:


23

나는 당신의 혼란을 본 것 같아요. TLB와 데이터 캐시는 두 가지 별도의 메커니즘입니다. 둘 다 일종의 캐시이지만 다른 것을 캐시합니다.

  • 따라서 TLB는이 조회를위한 전용 캐시 역할을합니다. TLB에는 몇 개의 TLB 항목이 있으며 각 TLB 항목에는 가상 주소와 해당 물리적 ​​주소가 모두 들어 있습니다.

    TLB를 사용하면 프로세서가 가상 주소를 물리적 주소로 매우 빠르게 변환 할 수 있습니다. 명령어가 프로세서에 (가상) 주소에서 메모리 작업을 수행하도록 요청하면 프로세서는 먼저 TLB에 해당 가상 주소에 대한 항목이 포함되어 있는지 확인합니다. 이 경우 TLB 조회를 위해 "캐시 적중"이라고하며 TLB 항목에도 변환 된 실제 주소가 포함되어 있으므로 프로세서는 사용할 실제 주소를 즉시 알고 있습니다. 그렇지 않은 경우 이는 TLB 조회에 대한 캐시 누락이며 프로세서는 페이지 테이블을 걸어 가상에서 실제로 변환해야합니다. 해당 변환을 마치면 TLB에 항목을 추가하여 해당 가상 주소의 향후 변환이 훨씬 빨리 수행되도록합니다.

  • 데이터 캐시는 메모리 내용에 대한 캐시입니다. 메인 메모리를 사용하면 물리적 주소를 지정하고 해당 물리적 ​​주소의 값을 읽을 수 있습니다. 그러나 주 메모리가 느립니다. 메모리 작업을 원할 때마다 주 메모리로 이동해야하는 경우 프로세서 속도가 매우 느려집니다.

    따라서 데이터 캐시는 메모리 읽기 전용 캐시 역할을합니다. 데이터 캐시에는 일부 캐시 항목이 있으며 각 캐시 항목에는 실제 주소와 해당 주소의 메모리 값이 포함됩니다.

    데이터 캐시를 통해 프로세서는 메모리에서 매우 빠르게 읽을 수 있습니다. 프로세서가 일부 (물리적) 주소에서 메모리를 읽으려고 할 때 먼저 데이터 캐시를 검사하여 해당 주소에 대한 캐시 항목이 있는지 확인합니다. 그렇다면 "캐시 적중"(데이터 캐시에 있음)이라고하며 프로세서는 주 메모리에 접속할 필요없이 해당 캐시 항목에 저장된 데이터 값을 즉시 사용할 수 있습니다. 그렇지 않으면 "캐시 미스"(데이터 캐시의 경우)이며 프로세서는 기본 메모리로 이동해야합니다. (프로세서가 주 메모리에서 해당 주소의 값을 수신 한 후 동일한 주소를 읽으려고하면 데이터 캐시에 캐시 항목이 추가되어 데이터 캐시에 추가됩니다.)

그것들은 모두 캐시이지만 다른 목적으로 사용됩니다. 프로세서는 각 메모리 작업에 두 가지를 모두 사용합니다. 먼저 TLB를 사용하여 가상 주소에서 실제 주소로 변환 한 다음 데이터 캐시를 검사하여 해당 주소의 메모리에 저장된 값을 읽는 프로세스의 속도를 높입니다.

자세한 내용은 TLB에 대한 Wikipedia 기사를 참조하십시오. . 검색하면 TLB 및 데이터 캐시에 사용할 수있는 다른 많은 정보가 있습니다. "TLB"및 "L1 캐시"또는 "L2 캐시"(후자의 2 개는 일종의 데이터 캐시)를 검색하는 것이 좋습니다.

(나중에 참조 할 수 있도록 : 여기에서 질문하기 전에 질문에 대한 조사를하고 표준 인터넷 소스를 확인해야합니다. Wikipedia에서 답변을 찾을 수 없으면 스스로 조사를 충분히 수행하지 않은 것입니다. 여기에 요청하기 전에 어떻게 TLB들에 대한 정보는 인터넷 소스를 확인하려는 경우 더 좋은 행운. 참조 스택 오버플로 사용자의 기대되는 방법 많은 연구 노력? . 그래서, 당신은 당신의 자신을 개선 할 수있는 방법에 대한 교훈로 사용하는 기회를 연구 기술-경력 전반에 걸쳐 귀중한 것입니다.)


1
감사합니다! 그것은 대부분 모든 것을 정리했습니다. 나는 이것을 연구하는 데 많은 시간을 보냈다. (며칠 동안), 나는 그것을 하나로 묶는 명확하고 간결한 정보를 찾을 수 없었다. (그리고 혼란은 아마도 내 검색에 도움이되지 않았다). 비유로, 나는 진단되지 않은 질병에 대한 치료법을 찾고있는 약국에있는 것 같은 느낌이 들었습니다. 증상으로 만 사용하십시오.
audiFanatic

그것으로, 나는 하나 더 질문이 있습니다. 그것들이 캐시라면, 왜 책이 캐시의 데이터와 태그 부분을 분리 하는가? 캐시가 데이터를 저장하지 않는 것처럼 태그를 확인하는 것 외에 다른 역할을하지 않는 것처럼 보입니다. 캐시의 그림 부분 오른쪽 아래 모서리에있는 데이터 블록입니까 아니면 주 메모리의 해당 부분입니까?
audiFanatic

1
VV+1+1V+2+2V+4095+4095

나는나는나는

큰 확인. 감사. 나는 가장 혼란스러운 분리 였다고 생각합니다.
audiFanatic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.