CPU 캐시 메모리가 주 메모리보다 훨씬 더 빠른 이유는 무엇입니까? 계층 형 캐시 시스템에서 이점을 볼 수 있습니다. 캐시가 작을수록 검색 속도가 더 빠릅니다. 그러나 더 많은 것이 있어야합니다.
CPU 캐시 메모리가 주 메모리보다 훨씬 더 빠른 이유는 무엇입니까? 계층 형 캐시 시스템에서 이점을 볼 수 있습니다. 캐시가 작을수록 검색 속도가 더 빠릅니다. 그러나 더 많은 것이 있어야합니다.
답변:
CPU 캐시의 경우 프로세서와 동일한 다이에 있기 때문에 속도가 더 빠릅니다. 다시 말해, 요청 된 데이터를 프로세서로 버스 업할 필요가 없습니다. 이미 있습니다.
하드 드라이브의 캐시의 경우 회전 플래터가 아닌 솔리드 스테이트 메모리에 있기 때문에 속도가 더 빠릅니다.
웹 사이트의 캐시의 경우 데이터베이스에서 데이터를 이미 검색했기 때문에 속도가 더 빠릅니다 (일부 경우 세계 어느 곳에 나있을 수 있음).
그래서 그것은 주로 지역성 에 관한 것 입니다 . 캐시는 데이터 전송 단계를 제거합니다 .
지역 성은 시간이나 공간에서 "함께 가까이있는"데이터를 표현하는 멋진 방법입니다. 일반적으로 상대적으로 적은 양의 전체 데이터가 가장 자주 액세스되는 데이터이기 때문에 더 작고 더 빠르지 만 (일반적으로 더 비싼) 메모리로 캐싱하는 것이 좋습니다.
더 가깝고 DRAM이 아닌 SRAM이기 때문에 더 빠릅니다.
SRAM은 DRAM보다 훨씬 빠르며 값이 정적으로 유지 되므로 ( S RAM 의 S )주기를 없애기 위해 새로 고칠 필요가 없습니다. DRAM은 작은 충전식 배터리와 같이 역동적이므로 정기적으로 재충전해야 배터리가 방전되지 않고 0이되지 않습니다. 비트 등에 액세스하는 방법 외에도 사이클 시간을 훔칩니다.
프로세서와 동일하거나 더 가까운 다이에 있기 때문에 왕복이 줄어들므로 액세스 관점에서 L1과 L2가 DRAM보다 빠릅니다.
SRAM은 사과를 사과로 가져가는 DRAM보다 액세스 속도가 빠르며 캐시는 일반적으로 DRAM보다 칩에 가깝거나 버스에 가깝거나 버스가 빠르므로 액세스 시간도 빨라집니다.
명시 적으로 언급해야 할 것은 빛의 속도의 영향입니다. 에서 이 비디오 그레이스 호퍼는 전기 신호가 * 하나 나노초 여행 할 수있는 방법 멀리 오랫동안 발, 대한 전선의 조각을 보여줍니다. CPU가 3GHz로 작동하는 경우 클럭 사이클 당 4 "의 거리를 의미합니다. 이것은 메모리 액세스 속도에 대한 물리적 한계입니다. 이는 L1 캐시와 같이 CPU에 근접한 이유의 대부분입니다. 더 빠른 메모리.
편집 * 실제로 빛이 진공에서 얼마나 멀리 이동할 수 있는지, 구리 / 실리콘을 통한 거리는 짧습니다.
다른 답변은 이미 모든 관련 비트를 다뤘습니다. 지역성 (및 관련 데이터 전송 비용, 버스 폭 및 클럭 등); 광속 (다시, 전송 비용 및 버스 폭 및 처리량과 관련됨); 다른 메모리 기술 (SRAM과 DRAM). 이 모든 것이 비용 / 성능 균형에 비추어 볼 수 있습니다.
Darkhogg 의견에서 언급 된 비트는 하나만 남았습니다. 캐시가 클수록 적중률은 높지만 대기 시간은 길어집니다. 이 절충을 해결하기 위해 도입 된 여러 레벨의 캐시.
전자 SE 에 대한이 시점에서 훌륭한 질문과 답변이 있습니다.
대답에서 강조해야 할 점은 다음 과 같습니다. 캐시 읽기에 필요한 모든 작업을 수행하는 논리는 간단하지 않습니다 (특히 오늘날 캐시와 같이 캐시가 설정되어있는 경우). 게이트와 논리가 필요합니다. 따라서 비용과 공간을 배제하더라도
누군가 엄청나게 큰 L1 캐시를 구현하려고하면 캐시 읽기에 필요한 모든 작업을 수행하는 논리도 커집니다. 어떤 시점에서,이 모든 로직을 통한 전파 지연은 너무 길 수 있으며 사전에 단일 클록 사이클을 수행 한 작업은 여러 클록 사이클로 분할되어야합니다. 이것은 대기 시간을 증가시킵니다.
다른 답변에는 많은 장점이 있지만 주소 디코딩 대기 시간이라는 한 가지 요소가 누락 된 것으로 보입니다.
다음은 메모리 주소 디코딩이 어떻게 작동하는지에 대한 과장된 단순화이지만, 왜 대형 DRAM 칩이 일반적으로 상당히 느린 지에 대한 좋은 아이디어를 제공합니다.
프로세서가 메모리에 액세스해야하는 경우 메모리 칩에 명령을 보내서 사용하려는 특정 단어를 선택합니다. 이 명령을 열 주소 선택이라고합니다 (현재 행 주소는 무시합니다). 메모리 칩은 이제 요청 된 열을 활성화해야합니다.이 열은 일련의 논리 게이트 아래로 주소를 전송하여 열의 모든 셀에 연결되는 단일 쓰기를 수행합니다. 구현 방법에 따라 결과가 다른 쪽 끝으로 나올 때까지 각 주소 비트에 대해 일정량의 지연이 발생합니다. 이를 메모리의 CAS 대기 시간이라고합니다. 이러한 비트를 순차적으로 검사해야하므로이 프로세스는 프로세서주기 (대개 몇 개의 트랜지스터 만 대기하는 순서)보다 훨씬 오래 걸립니다. 또한 버스주기보다 훨씬 오래 걸립니다 (일반적으로 프로세서주기보다 몇 배 느립니다). 일반적인 메모리 칩의 CAS 명령은 5ns 정도 (IIRC-타이밍을 살펴본 후 오랜 시간이 소요됨) 프로세서 프로세서보다 10 배 이상 느릴 수 있습니다.
다행히 주소를 세 부분 (열, 행 및 뱅크)으로 분할하여 각 부분을 더 작게 만들고 해당 부분을 동시에 처리 할 수 있습니다. 그렇지 않으면 대기 시간이 훨씬 길어집니다.
그러나 프로세서 캐시에는이 문제가 없습니다. 주소는 훨씬 작을뿐 아니라 주소 변환이 더 쉬운 작업입니다. 실제로는 주소의 작은 조각 (일부 변형에서는 전혀 없음)을 번역 할 필요가 없습니다. 왜냐하면 연관성이 있기 때문입니다. 즉, 캐시 된 각 메모리 라인과 함께 주소의 일부 (또는 모두)를 저장하는 추가 메모리 셀이 있습니다. 분명히 이것은 캐시를 더 비싸게 만들지 만, 모든 셀에 쿼리하여 동시에 원하는 특정 메모리 라인이 있는지 확인한 다음 올바른 데이터가있는 유일한 셀이 그것을 덤프 할 수 있음을 의미합니다 전체 메모리를 주 프로세서 코어에 연결하는 버스에 연결합니다. 이 과정은 훨씬 간단하기 때문에 사이클 미만으로 발생합니다.
필자가 연구 한 철학 중 하나는 캐시 기반 메모리, 즉 CPU 캐시, 버퍼 캐시 또는 해당 용도의 메모리 캐시에 대해 이야기 할 때 최대 처리량을 최소로 확보하는 하드웨어 움직임이었습니다. 기본적인 동기는 데이터 검색 / 읽기 / 쓰기를위한 하드웨어 이동이 최소이거나없는 경우에 달성되며 작업이 더 빨리 완료됩니다.
데이터는 디스크-> 주 메모리 (RAM) (임시 스토리지)-> CPU 캐시 (자주 액세스하는 데이터를 위해 CPU 근처에있는 더 작은 임시 스토리지)-> CPU (처리)에서 전송됩니다.
CPU 캐시는 가장 최근에 사용 된 기본 메모리 위치의 데이터 사본을 저장하는 작고 빠른 메모리 공간입니다.
버퍼 캐시는 가장 최근에 사용한 디스크 위치의 데이터 사본을 저장하는 기본 메모리 영역입니다.
브라우저 캐시는 사용자가 가장 최근에 방문한 웹 사이트의 데이터 사본을 저장하는 디렉토리 또는 유사한 공간입니다.
참조 : 컴퓨터 메모리 작동 방식