CPU 캐시 메모리가 왜 그렇게 빠릅니까?


58

CPU 캐시 메모리가 주 메모리보다 훨씬 더 빠른 이유는 무엇입니까? 계층 형 캐시 시스템에서 이점을 볼 수 있습니다. 캐시가 작을수록 검색 속도가 더 빠릅니다. 그러나 더 많은 것이 있어야합니다.


2
메인 메모리 는 무엇을 의미 합니까?
marcocs

1
명확성을 위해 @marcocs가 편집되었습니다. 나는 CPU 캐시 메모리와 메인 시스템 메모리, 즉 대부분의 마더 보드에서 제거 가능한 희미한 것을 말합니다.
ConditionRacer


2
@ratchetfreak Uh ... OP는 최종 원인이 아닌 가까운 원인을 분명히 요구합니다.
Kyle Strand

1
와우 나는 컴퓨터 공학 학위를 사용하지 않을 것이라고 생각했다. 허용되는 답변은 실제로 답변이 아닙니다. CPU 캐시는 훨씬 높은 클럭 속도 (CPU 클럭 속도, 약 4GHz)로 작동하고 주 메모리는 버스 클럭 속도 (약 1600MHz)로 작동하기 때문입니다. 뿐만 아니라 CPU 캐시는 4 클럭 주기로 읽을 수 있지만 시스템 RAM은 100 시스템 클럭주기를 취할 수 있습니다. 또한 시스템 RAM은 디스크 또는 네트워크와 같은 다른 주변 장치와 충돌하며 CPU 캐시는 전용입니다. 와이어가 길수록 작동 속도가 느려집니다. tinyurl.com/zkdsstd
Chloe

답변:


115

CPU 캐시의 경우 프로세서와 동일한 다이에 있기 때문에 속도가 더 빠릅니다. 다시 말해, 요청 된 데이터를 프로세서로 버스 업할 필요가 없습니다. 이미 있습니다.

하드 드라이브의 캐시의 경우 회전 플래터가 아닌 솔리드 스테이트 메모리에 있기 때문에 속도가 더 빠릅니다.

웹 사이트의 캐시의 경우 데이터베이스에서 데이터를 이미 검색했기 때문에 속도가 더 빠릅니다 (일부 경우 세계 어느 곳에 나있을 수 있음).

그래서 그것은 주로 지역성 에 관한 것 입니다 . 캐시는 데이터 전송 단계를 제거합니다 .

지역 성은 시간이나 공간에서 "함께 가까이있는"데이터를 표현하는 멋진 방법입니다. 일반적으로 상대적으로 적은 양의 전체 데이터가 가장 자주 액세스되는 데이터이기 때문에 더 작고 더 빠르지 만 (일반적으로 더 비싼) 메모리로 캐싱하는 것이 좋습니다.

위키 백과에 대한 추가 읽기
캐시 (컴퓨팅)


29
나는 이것이 좋은 대답이라고 생각합니다. 그러나 캐시 할 비용 계층 구조도 있다는 점을 추가 할 가치가 있습니다. 네트워크 스토리지는 로컬 하드 드라이브보다 저렴합니다. 즉, RAM보다 저렴합니다. 이는 온 CPU 캐시보다 훨씬 저렴합니다. 그렇지 않다면 120GB의 메모리가 내장 된 CPU를 만들어서 처리하면됩니다.
Charles E. Grant

1
@ConditionRacer : 같은 이유입니다. L1은 더 빠르지 만 더 비싸므로 L1이 약간 비싸지 만 L1은 저렴하지만 느립니다. 또한 참조 stackoverflow.com/questions/3699582/...
로버트 하비에게

9
"L1이 L2보다 빠른 이유"
-Programmers.SE

5
@ConditionRacer IIRC는 메모리를 구현하는 데 사용되는 기술과 관련이 있습니다. L2는 온칩 DRAM 인 반면 L1은 SRAM 또는 이와 유사한 것입니다. 훨씬 비싸지 만 훨씬 빠릅니다. CPU 디자인에서 일한지 10 년이 지났습니다…
Donal Fellows

4
@ CharlesE.Grant : 비용 계층 구조가 좋은 예이지만 120GB의 온칩 캐시가없는 또 다른 이유가 있습니다. 더 큰 메모리를 처리하려면 더 큰 주소가 필요하므로 더 큰 명령어 또는 더 많은 CPU 사이클이 필요합니다. 따라서 가장 빠른 레지스터 수는 상대적으로 적어야합니다. 물론 레지스터 외에 온칩 메모리를 가질 수 있지만 가장 빠른 계층은 작게 유지해야합니다. 그렇지 않으면 더 이상 그렇게 빠르지 않습니다.
vsz

33

더 가깝고 DRAM이 아닌 SRAM이기 때문에 더 빠릅니다.

SRAM은 DRAM보다 훨씬 빠르며 값이 정적으로 유지 되므로 ( S RAM 의 S )주기를 없애기 위해 새로 고칠 필요가 없습니다. DRAM은 작은 충전식 배터리와 같이 역동적이므로 정기적으로 재충전해야 배터리가 방전되지 않고 0이되지 않습니다. 비트 등에 액세스하는 방법 외에도 사이클 시간을 훔칩니다.

프로세서와 동일하거나 더 가까운 다이에 있기 때문에 왕복이 줄어들므로 액세스 관점에서 L1과 L2가 DRAM보다 빠릅니다.

SRAM은 사과를 사과로 가져가는 DRAM보다 액세스 속도가 빠르며 캐시는 일반적으로 DRAM보다 칩에 가깝거나 버스에 가깝거나 버스가 빠르므로 액세스 시간도 빨라집니다.


1
SRAM은 비트 당 더 많은 전력을 필요로하므로 라디에이터를 추가해야하며 배터리로 작동되는 모든 문제가 발생합니다.
9000

1
SRAM을 더 크게 만들면 속도가 느려진다는 사실은 말할 것도 없습니다.
Darkhogg

다른 스램에 비해 합의되고 더 많은 힘이 있으며 느려집니다. 나는 그것이 sram에 대해 비트 당 4 개의 트랜지스터와 dram에 대해 비트 당 1 개의 트랜지스터라고 생각합니다. dram은 fet의 커패시턴스에 의존하며, 여기서 sram은 좋은 구식 논리에 의존합니다. 주기적으로 전하를 펌핑하는 것이 아니라 항상 모든 트랜지스터에 전원을 공급해야합니다.
old_timer

4
캐시의 SRAM은 일반적으로 4T가 아닌 6T입니다. 또한 SRAM (확실히 6T 변형)이 더 에너지 효율적입니다. DRAM의 실제 전력 소비는 새로 고침주기이며 SRAM은이를 필요로하지 않습니다. SRAM 트랜지스터는 스위칭 할 때 전력을 소비하며 DRAM 커패시터는 항상 누출됩니다. 누설되는 DRAM 캡을 교체하면 EEPROM으로 끝나지만 빠르지는 않습니다. 충전이 누출되기 어려운 경우 정상적인 방법으로 꺼내기가 어렵습니다.
MSalters

@dwelch CMOS FET는 개방 또는 폐쇄 상태 인 경우 전력을 소모하지 않으므로 전력 소비에 대한 논쟁은 유효하지 않습니다. 또한 이것은 CMOS 로직 스위칭으로 CPU가 대부분의 전력을 소모하게합니다. 즉 중간 상태 (1이 아닌 0)의 현재 피크이므로 상황은 사용자가 말하는 것과 반대입니다.)
Ruslan

21

명시 적으로 언급해야 할 것은 빛의 속도의 영향입니다. 에서 이 비디오 그레이스 호퍼는 전기 신호가 * 하나 나노초 여행 할 수있는 방법 멀리 오랫동안 발, 대한 전선의 조각을 보여줍니다. CPU가 3GHz로 작동하는 경우 클럭 사이클 당 4 "의 거리를 의미합니다. 이것은 메모리 액세스 속도에 대한 물리적 한계입니다. 이는 L1 캐시와 같이 CPU에 근접한 이유의 대부분입니다. 더 빠른 메모리.

편집 * 실제로 빛이 진공에서 얼마나 멀리 이동할 수 있는지, 구리 / 실리콘을 통한 거리는 짧습니다.


2
구리에 대한 하드 한계. 이것은 좋은 지적이지만, 현대 프로세서가 엄청나게 빠르지는 않았습니다.
ConditionRacer

@ConditionRacer 방금 보정을 추가했습니다. 진공에서 11.8 인치가 가볍습니다.
Matthew Finlay

2
메모리를 검색하려면 왕복이 필요하므로이 숫자를 반으로 줄여야합니다. 따라서 진공 상태에서 대기 시간당 10cm가 아닌 5cm에 불과 합니다.
코드 InChaos

2
메인 메모리 버스 클럭 (? 2000ish) 몇 년 전에 빨라지고 그것은 직접적인 영향이 아니다 중단 이유를 빛의 속도는 - 그것은 CMOS 로직 신호는 버스 주파수에서 더 이상 완벽한 사각형 파도 없다는 함께 할 수있다 - 그러나 C의 쇼 수학에서 눈에 띄게.
zwol

5

다른 답변은 이미 모든 관련 비트를 다뤘습니다. 지역성 (및 관련 데이터 전송 비용, 버스 폭 및 클럭 등); 광속 (다시, 전송 비용 및 버스 폭 및 처리량과 관련됨); 다른 메모리 기술 (SRAM과 DRAM). 이 모든 것이 비용 / 성능 균형에 비추어 볼 수 있습니다.

Darkhogg 의견에서 언급 된 비트는 하나만 남았습니다. 캐시가 클수록 적중률은 높지만 대기 시간은 길어집니다. 이 절충을 해결하기 위해 도입 된 여러 레벨의 캐시.

전자 SE 에 대한이 시점에서 훌륭한 질문과 답변이 있습니다.

대답에서 강조해야 할 점은 다음 같습니다. 캐시 읽기에 필요한 모든 작업을 수행하는 논리는 간단하지 않습니다 (특히 오늘날 캐시와 같이 캐시가 설정되어있는 경우). 게이트와 논리가 필요합니다. 따라서 비용과 공간을 배제하더라도

누군가 엄청나게 큰 L1 캐시를 구현하려고하면 캐시 읽기에 필요한 모든 작업을 수행하는 논리도 커집니다. 어떤 시점에서,이 모든 로직을 통한 전파 지연은 너무 길 수 있으며 사전에 단일 클록 사이클을 수행 한 작업은 여러 클록 사이클로 분할되어야합니다. 이것은 대기 시간을 증가시킵니다.


5

다른 답변에는 많은 장점이 있지만 주소 디코딩 대기 시간이라는 한 가지 요소가 누락 된 것으로 보입니다.

다음은 메모리 주소 디코딩이 어떻게 작동하는지에 대한 과장된 단순화이지만, 왜 대형 DRAM 칩이 일반적으로 상당히 느린 지에 대한 좋은 아이디어를 제공합니다.

프로세서가 메모리에 액세스해야하는 경우 메모리 칩에 명령을 보내서 사용하려는 특정 단어를 선택합니다. 이 명령을 열 주소 선택이라고합니다 (현재 행 주소는 무시합니다). 메모리 칩은 이제 요청 된 열을 활성화해야합니다.이 열은 일련의 논리 게이트 아래로 주소를 전송하여 열의 모든 셀에 연결되는 단일 쓰기를 수행합니다. 구현 방법에 따라 결과가 다른 쪽 끝으로 나올 때까지 각 주소 비트에 대해 일정량의 지연이 발생합니다. 이를 메모리의 CAS 대기 시간이라고합니다. 이러한 비트를 순차적으로 검사해야하므로이 프로세스는 프로세서주기 (대개 몇 개의 트랜지스터 만 대기하는 순서)보다 훨씬 오래 걸립니다. 또한 버스주기보다 훨씬 오래 걸립니다 (일반적으로 프로세서주기보다 몇 배 느립니다). 일반적인 메모리 칩의 CAS 명령은 5ns 정도 (IIRC-타이밍을 살펴본 후 오랜 시간이 소요됨) 프로세서 프로세서보다 10 배 이상 느릴 수 있습니다.

다행히 주소를 세 부분 (열, 행 및 뱅크)으로 분할하여 각 부분을 더 작게 만들고 해당 부분을 동시에 처리 할 수 ​​있습니다. 그렇지 않으면 대기 시간이 훨씬 길어집니다.

그러나 프로세서 캐시에는이 문제가 없습니다. 주소는 훨씬 작을뿐 아니라 주소 변환이 더 쉬운 작업입니다. 실제로는 주소의 작은 조각 (일부 변형에서는 전혀 없음)을 번역 할 필요가 없습니다. 왜냐하면 연관성이 있기 때문입니다. 즉, 캐시 된 각 메모리 라인과 함께 주소의 일부 (또는 모두)를 저장하는 추가 메모리 셀이 있습니다. 분명히 이것은 캐시를 더 비싸게 만들지 만, 모든 셀에 쿼리하여 동시에 원하는 특정 메모리 라인이 있는지 확인한 다음 올바른 데이터가있는 유일한 셀이 그것을 덤프 할 수 있음을 의미합니다 전체 메모리를 주 프로세서 코어에 연결하는 버스에 연결합니다. 이 과정은 훨씬 간단하기 때문에 사이클 미만으로 발생합니다.


-2

필자가 연구 한 철학 중 하나는 캐시 기반 메모리, 즉 CPU 캐시, 버퍼 캐시 또는 해당 용도의 메모리 캐시에 대해 이야기 할 때 최대 처리량을 최소로 확보하는 하드웨어 움직임이었습니다. 기본적인 동기는 데이터 검색 / 읽기 / 쓰기를위한 하드웨어 이동이 최소이거나없는 경우에 달성되며 작업이 더 빨리 완료됩니다.

데이터는 디스크-> 주 메모리 (RAM) (임시 스토리지)-> CPU 캐시 (자주 액세스하는 데이터를 위해 CPU 근처에있는 더 작은 임시 스토리지)-> CPU (처리)에서 전송됩니다.

CPU 캐시는 가장 최근에 사용 된 기본 메모리 위치의 데이터 사본을 저장하는 작고 빠른 메모리 공간입니다.

버퍼 캐시는 가장 최근에 사용한 디스크 위치의 데이터 사본을 저장하는 기본 메모리 영역입니다.

브라우저 캐시는 사용자가 가장 최근에 방문한 웹 사이트의 데이터 사본을 저장하는 디렉토리 또는 유사한 공간입니다.

참조 : 컴퓨터 메모리 작동 방식


"운영 체제 철학은 ..."입니다. 이것은 여러분의 의견일까요, 아니면 어떻게 든 백업 할 수 있습니까?
gnat

Maurice Bach가 유닉스를 공부하면서 이것에 대해 배웠습니다. 불행히도지지 문서가 없습니다. 편집 ..
roshan4074

5
howstuffworks는 신뢰할 수있는 기술 정보를 얻는 데있어 신뢰할 수없는 것으로 악명이 높습니다. 그들은 평균 Joe와 Jane이 이해할 수있는 총체적 단순화에 좋지만 그게 전부입니다.
jwenting
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.