L1, L2 캐시, DRAM에서는 랜덤 액세스보다 순차 액세스가 더 빠른가요?

L1, L2 캐시, DRAM에서는 랜덤 액세스보다 순차 액세스가 더 빠른가요?

L1, L2 캐시 및 DRAM에서는 미리 읽기를 설정할 수 있기 때문에 랜덤 액세스보다 순차 액세스가 더 빠른가요? 물론 HDD에서는 이것이 훨씬 더 빠르다는 것을 알고 있습니다.

답변1

, 일부는 동일하지만 정확히 동일하지는 않습니다.

프로세서 매뉴얼에 따르면 :-)
http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf

특정 하드웨어 프리페치가 있으며 프로그래머는 이를 프리페치하도록 지시할 수 있으며, 이를 인지하고 있는 프로그래머가 이점을 얻을 수 있는 데이터 청크 크기에서 작동하는 방식도 있습니다. 또한 동일한 하드웨어 또는 소프트웨어 방법을 약간 잘못 수행하면 프리페치가 계속해서 던져질 수 있으며, 이와 같은 현상은 프로세서마다 다릅니다.

필요할 것이라고 가정하여 데이터를 더 높은 수준으로 이동하고(미리 읽기 등), 데이터가 해당 수준으로 이동하는 청크 크기 내에 있기 때문에 거기에 있습니다(순차적이면 도움이 될 수 있음).
프로세서는 거기에 어떤 명령어 세트가 있는지 또는 수행할 작업 목록을 알고 있으므로 해당 데이터를 준비합니다.

2.1.5.4 데이터 프리페칭 데이터는 소프트웨어 프리페칭, 하드웨어 프리페칭 또는 이 둘의 조합을 사용하여 추측에 따라 L1 DCache에 로드될 수 있습니다. . . .

--

Streamer: 이 프리페처는 주소의 오름차순 및 내림차순 시퀀스에 대한 L1 캐시의 읽기 요청을 모니터링합니다. 모니터링되는 읽기 요청에는 로드 및 저장 작업과 하드웨어 프리페처에 의해 시작된 L1 DCache 요청과 코드 가져오기를 위한 L1 ICache 요청이 포함됩니다. 요청의 정방향 또는 역방향 스트림이 감지되면 예상되는 캐시 라인이 프리페치됩니다. 프리페치된 캐시 라인은 동일한 4K 페이지에 있어야 합니다. . . .

--

Wide Dynamic Execution  
Smart Memory Access - prefetches data  
Branch Prediction Unit  
Instruction Fetch Unit  
Instruction PreDecode  

목록에는 앞으로 생각하고 있는 많은 기능이 포함되어 있습니다.

링크된 문서의 60페이지부터 시작하세요.

https://stackoverflow.com/questions/1922249/c-cache-aware-programming 더 많은 PDF가 Stack Overflow에 링크되어 있으며 거기에 대한 더 많은 정보가 있다고 확신합니다.

이것과 기술에 대한 데이터는 여기에 게시하기가 너무 길고 프로그래머가 "실제로 어떻게 작동하는지"에 대해서도 너무 길어질 것입니다. 뿐만 아니라 나는 그것을 거의 이해하지 못합니다. 그 내용(및 프로그래머 정보)을 읽은 후에는 왜 한 소프트웨어가 거의 동일한 작업을 수행하고, 다른 소프트웨어보다 50배 더 ​​빠를 수 있고, 일을 꼼꼼하게 수행하고 테스트하고 다시 테스트하여 궁극적인 최적화를 얻을 수 있는지, 또는 몇 가지를 놓치고 평범해지세요.

&아니요, 램은 모두 완전 무작위 액세스이고, 대기 시간이 매우 짧습니다. 하드 드라이브가 미리 읽기 작업을 수행하는 데 사용하는 것은 "Ram"이며, 버스트 전송은 플래터에서 읽을 수 있는 것보다 몇 배 더 빠릅니다. 헤드 이동에 시간이 걸리고 플래터에서 데이터를 가져오지 않기 때문에 순차성은 하드 드라이브에서 매우 중요합니다. 헤드가 해당 위치에 도착한 후 회전에서 데이터가 나타날 때까지 기다려야 합니다.
하드 드라이브 미리 읽기를 사용하면 동일한 회전에서 데이터를 가져와 수 밀리초의 시간을 절약할 수 있습니다.

2에 대해 비슷한 것이 있다고 가정하는 것은 상상의 엄청난 확장일 수 있습니다. :-)

관련 정보