CPU는 정보를 어떻게 램에 기록합니까?


10

내 질문은 CPU가 어떻게 램에 데이터를 쓰나요?

내가 이해 한 바에 따르면 최신 CPU는 다른 수준의 캐시를 사용하여 램 액세스 속도를 높입니다. RAM은 정보에 대한 명령을 얻은 다음 필요한 데이터 (및 CPU가 원하는 주소에 가까운 많은 추가 데이터)를 최고 수준의 캐시에 저장하는 CPU로 데이터 버스트를 보낸 다음 점차적으로 묻습니다. 다른 캐시는 레벨 1 캐시에있을 때까지 캐시 레벨 아래로 더 작은 데이터 청크를 전송하여 CPU 레지스터로 직접 읽습니다.

CPU가 메모리에 쓸 때이 프로세스는 어떻게 작동합니까? 컴퓨터가 캐시 수준을 거꾸로 내려 갑니까 (읽기와 비교하여 역순으로)? 그렇다면 다른 캐시의 정보를 기본 메모리와 동기화하는 것은 어떻습니까? 또한 쓰기 작업 속도와 읽기 작업 속도는 어떻습니까? 버킷 정렬의 경우와 같이 RAM에 지속적으로 쓰는 경우 어떻게됩니까?

미리 감사드립니다.

고장

편집 : 나는 여전히 완전히 받아 들일 수있는 대답을 얻지 못했습니다. RAM 쓰기의 동기화 부분에 대해 특히 알고 싶습니다. CPU에서 직접 L1 캐시에 쓰고 다른 수준의 캐시를 동기화하고 결국 주 RAM이 최상위 계층 캐시와 동기화됨에 따라 데이터가 캐시 수준으로 내려갑니다. 그러나 내가 알고 싶은 것은 캐시가 기본 RAM과 동기화하고 scynocronize하고 읽기 명령과 관련하여 속도가 얼마나 빠를 때입니다.

답변:


11

아, 이것은 정말 복잡한 답변을 가진 간단한 질문 중 하나입니다. 간단한 대답은 글쓰기 방법과 캐싱 유형에 따라 다릅니다. 캐시 작동 방식에 대한 유용한 입문서입니다 .

CPU는 다양한 방법으로 데이터를 쓸 수 있습니다. 캐싱이 없으면 데이터가 곧바로 메모리에 저장되고 CPU는 쓰기가 완료 될 때까지 기다립니다. 캐싱을 사용하면 CPU는 일반적으로 프로그램 순서로 데이터를 저장합니다. 즉, 프로그램이 주소 A에 기록한 다음 주소 B에 기록하면 캐싱에 관계없이 메모리 A가 메모리 B 앞에 기록됩니다. 캐싱은 실제 메모리가 업데이트 될 때만 영향을 미치며 사용 된 캐싱 유형에 따라 다릅니다 (위 링크 참조). 일부 CPU는 일시적으로 데이터를 저장할 수도 있습니다. 즉, 메모리 대역폭을 최대한 활용하기 위해 쓰기 순서를 다시 지정할 수 있습니다. 따라서 A, B에 쓴 다음 (A + 1)은 A, A + 1에 한 번의 버스트, B에 쓰는 순서로 다시 정렬 될 수 있습니다.

또 다른 합병증은 둘 이상의 CPU가 존재하는 경우입니다. 시스템 설계 방식에 따라 데이터가 여전히 첫 번째 CPU 캐시에 있기 때문에 하나의 CPU에 의한 쓰기가 다른 CPU에 표시되지 않습니다 (캐시가 더럽습니다). 여러 CPU 시스템에서 각 CPU의 캐시를 실제 메모리에 일치시키는 것을 캐시 일관성이라고합니다. 이것이 달성 될 수있는 다양한 방법이 있습니다.

물론 위의 내용은 Pentium 프로세서를위한 것입니다. 다른 프로세서는 다른 방식으로 작업을 수행 할 수 있습니다. PS3의 셀 프로세서를 예로 들어 보자. 셀 CPU의 기본 아키텍처는 여러 개의 셀 코어가있는 하나의 PowerPC 코어입니다 (PS3에는 8 개의 셀이 있으며 그 중 하나는 항상 비활성화되어 수율을 향상시킵니다). 각 셀에는 시스템 RAM에 쓰여지지 않는 L1 캐시와 같은 자체 로컬 메모리가 있습니다. DMA (Direct Memory Access) 전송을 사용하여이 로컬 RAM과 시스템 RAM간에 데이터를 전송할 수 있습니다. 셀은 정상적인 읽기 및 쓰기로 보이는 것을 사용하여 시스템 RAM 및 다른 셀의 RAM에 액세스 할 수 있지만 이것은 단지 DMA 전송을 트리거하므로 느리므로 실제로 피해야합니다. 이 시스템의 기본 개념은 게임이 하나의 프로그램이 아니라는 것입니다.

요약하자면, CPU 속도가 RAM 속도와 일치하던 시절에는 RAM에 쓰는 것이 매우 간단했지만 CPU 속도가 증가하고 캐시가 도입되면서 프로세스는 훨씬 더 복잡해졌습니다.

스키즈


2

예, 캐시 수준을 낮추고 메모리에 저장하지만 중요한 것은 다중 처리 시스템에서 캐시는 2 개 이상의 프로세서 (코어) 사이에서 공유되며 데이터는 일관성이 있어야합니다. 이는 모든 다중 프로세서에 대해 공유 캐시를 만들어서 수행해야합니다 캐시가 다르지만 중요 섹션을 사용하여 일관성을 유지합니다 (한 캐시의 데이터가 변경된 경우 메모리에 쓰고 다른 캐시를 업데이트하도록 강제합니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.