RAM 액세스 CPU 속도가 느려 집니까?


2

어제 저는 현재 x86 CPU가 메모리에 액세스하려고 할 때 속도 차이가 있다고 생각했습니다. 일반적으로 RAM은 일부 새로운 Intel CPU의 경우 1333MHz에서 작동합니다. 그러나 CPU 자체는 약 3.2GHz에서 작동합니다.

따라서 CPU가 메모리에 액세스하려면 주소를 주소 버스로, 데이터를 데이터 버스로 ( 전자 쓰기를 원한다고 가정 ) 설정하면 CPU는 메모리에 대한 추가 시간을 기다려야합니까, 아니면 일부가 있습니까? 대기 시간을 처리하는 CPU 빠른 컨트롤러와 CPU가 더 많은 작업을 수행 할 수 있습니까?


네, 체인은 가장 약한 링크만큼이나 강력합니다. 램이 느리고 하드 드라이브와 같은 물리적 장치가 더 느린 반면 레지스트리 (기본적으로 CPU에 위치)가 너무 빠른 이유입니다.
Javed Ahamed

1
@Javed Ahamed : 작은 점 : "등록자"(레지스트리 아님)라고합니다. 그렇지 않으면 완벽하게 옳습니다.
sleske

Doh>. <입력 한 이유를 모르겠습니다.
Javed Ahamed

답변:


2

CPU가 메모리에 액세스하고자 할 때, 주소를 주소 버스로, 데이터를 데이터 버스로 (쓰기를 원한다고 말하십시오) 이제 CPU가 메모리를 위해 여분의 시간을 기다려야합니까

Ulrich Drepper의 악명 높은 기억 기사에서 ...

쓰기 작업의 경우 CPU가 값이 메모리에 안전하게 저장 될 때까지 기다릴 필요는 없습니다. 다음 명령어의 실행이 값이 메모리에 저장된 것처럼 동일한 효과를 나타내는 한 CPU가 바로 가기를 수행하지 못하게하는 것은 없습니다. 다음 명령을 일찍 실행할 수 있습니다. 더 이상 일반 레지스터에서 사용할 수없는 값을 보유 할 수있는 섀도우 레지스터를 사용하면 불완전한 쓰기 작업에 저장 될 값을 변경할 수도 있습니다.

편집 : 분명히 읽기의 경우, 모든 베팅이 해제되어 있습니다. 데이터를 조작하기 전에 데이터를 읽을 때까지 기다려야한다고 확신합니다. 메인 메모리에 액세스하는 경우.


5

대부분의 CPU에서 소량의 고속 캐시 메모리는 CPU와 메인 메모리 사이에 있으며 CPU가 현재 작업중인 코드와 데이터를 유지하고 훨씬 느린 메인 메모리 (또는 다음 레벨의 캐시)에서 사전에 읽기를 시도합니다. ).


2

CPU가 메모리를위한 추가 시간을 기다려야 하는가?

그렇습니다. 사실, 설명하는 문제는 현재 하드웨어를 설계 할 때 CPU 및 시스템 설계자가 겪는 가장 큰 과제 중 하나입니다. .

이것이 모든 최신 CPU에 CPU 캐시 가있는 이유이기도 하지만 문제를 완화 할 수만 있습니다.

또는 대기 시간을 처리하는 CPU 고속 컨트롤러와 CPU가 더 많은 oparations를 할 수 있습니까?

일반적으로 이것은 CPU가 RAM에서 데이터를 기다리는 경우 일반적으로 데이터 없이는 진행할 수 없으므로 불가능합니다. 하이퍼 스레딩과 같은 기술을 사용하면 CPU 가 대기하는 동안 다른 소프트웨어 스레드를 실행하도록 전환 할 있지만 실행중인 소프트웨어의 지원이 필요합니다 (스레드를 사용해야 함).

경우에 따라 CPU는 비 순차적 실행추론 적 실행 과 같은 "트릭"을 사용하여 메모리를 기다리는 동안 유용한 작업을 수행 할 수 있지만 항상 가능한 것은 아닙니다. Andy와 harrymc의 답변도 이것을 설명합니다.

이러한 문제에 대한 광범위한 논의를 위해 훌륭한 논문이 있습니다.

Ulrich Drepper의 모든 프로그래머가 메모리대해 알아야 할 사항


이 링크는 "people.redhat.com"이라는 단어와 redhat.com에 대한 링크 만있는 페이지로 연결됩니다 .
garyjohn

확인해 주셔서 감사합니다. 문서가 이동되었습니다. 구글조차도 아직 최신이 아니다 :-(. 링크 수정 됨
sleske

1
"CPU는 더 많은 oparations을 할 수 있습니다"이것은 기본적으로 하이퍼 스레딩이하는 것입니다 : en.wikipedia.org/wiki/Hyper-threading
pjc50

@ pjc50 : 그렇습니다. 하이퍼 스레딩은 RAM 액세스를 기다리는 동안 CPU가 무언가를 할 수있게합니다. 그러나 이것은 소프트웨어가 다중 스레드를 사용하는 경우에만 작동하므로 "소프트웨어 내부의 스레드 구현"에 대한 나의 언급입니다. 이것은 CPU가 어플리케이션을 위해 투명하게 할 수있는 것이 아닙니다.
sleske

실제로, 어떤 경우에는 RAM 액세스를 기다리는 동안 CPU가 계속 작동 할 수 있습니다. 내 답변을 편집했습니다.
sleske

1

CPU가 RAM을 기다려야하는 경우 (오늘의 CPU 속도에 CPU 다이의 L2 / L3 캐시 포함) CPU가 기다려야합니다. 처리 속도가 느려집니다 (100 % CPU에서 실행되는 스레드가 대부분의주기를 RAM에서 대기하는 데 소비 할 수 있음).

그렇기 때문에 캐시 라인이 교차 될 때 메모리의 데이터 레이아웃을 고려하면 엄격한 데이터 처리 코드의 성능에 큰 영향을 줄 수 있습니다.

(의견 수정 : 최신 DDR3 RAM은 1333을 훨씬 뛰어 넘고 1600은 일반적이며 오버 클로킹을 고려하지 않고 더 빠르게 사용할 수 있습니다.)


1

대기 시간을 처리하는 CPU 고속 컨트롤러와 CPU가 더 많은 작업을 수행 할 수있는 컨트롤러가 있습니까?

예. 그러나 멀티 코어 컴퓨터가 필요하며 CPU를 사용하는 스레드가 두 개 이상 있어야합니다.

이것이 운영 체제 스케줄러가 코어간에 가능한 고르게 스레드를 분배하려고하는 이유와 코어 간 대기를 피하기 위해 각 코어에 자체 캐시 메모리가있는 이유입니다.

실제로 멀티 코어 컴퓨터를 구입할 때는 메모리 캐시의 크기, 특히 컴퓨터 모델에 청구 된 금액이 모든 코어의 총 캐시인지에주의를 기울여야합니다. 실제로 각 코어는 전체의 분수.


1

"... 쓰고 싶다고하자. CPU가 메모리를 확보하기 위해 추가 시간을 기다려야합니까, 아니면 대기 시간을 처리하는 CPU 고속 컨트롤러 나 CPU가 더 많은 작업을 수행 할 수 있습니까?"

예, 고성능 CPU에는 캐시와 버스 인터페이스 장치 및 쓰기 버퍼가 있으므로 CPU가 STORE를 수행 한 후 나머지 CPU (대부분의 경우)는 캐시 및 버스 동안 즉시 명령을 계속 처리 할 수 ​​있습니다. 인터페이스 장치 및 쓰기 버퍼 핸들을 통해 해당 데이터를 주 메모리로 보냅니다.

일부 CPU는 LOAD 명령의 우선 순위를 지정하므로 해당 STORE 명령 바로 다음에 LOAD 명령이 오는 경우 CPU는 데이터를 RAM에 저장하기 전에 RAM에서 요청 된 데이터를로드합니다.

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