지연 시간 허용
마이크로 프로세서의 속도는 10 년에 10 배 이상 증가했지만 DRAM (Commodity Memory)의 속도는 두 배에 불과합니다. 즉, 액세스 시간이 절반으로 줄어 듭니다. 따라서 프로세서 클럭주기 측면에서 메모리 액세스 대기 시간이 10 년 동안 6 배 증가합니다. 다중 프로세서가 문제를 더욱 심화 시켰습니다.
버스 기반 시스템에서 프로세서와 메모리 사이에 고 대역폭 버스를 설정하면 메모리에서 데이터를 가져 오는 대기 시간이 증가하는 경향이 있습니다. 메모리가 물리적으로 분산되면 네트워크 및 네트워크 인터페이스의 대기 시간이 노드의 로컬 메모리에 액세스하는 대기 시간에 추가됩니다.
더 많은 노드가 계산에 비해 더 많은 통신을 의미하고, 일반 통신을위한 네트워크에서 더 많은 점프를 의미하고, 더 많은 경합이 발생할 가능성이 높기 때문에 지연 시간은 일반적으로 시스템 크기에 따라 증가합니다. 하드웨어 설계의 주요 목표는 확장 가능한 높은 대역폭을 유지하면서 데이터 액세스 대기 시간을 줄이는 것입니다.
지연 시간 허용 개요
대기 시간 허용 오차를 처리하는 방법은 머신의 리소스와 리소스 활용 방법을 살펴보면 가장 잘 이해할 수 있습니다. 프로세서 관점에서 한 노드에서 다른 노드로의 통신 아키텍처는 파이프 라인으로 볼 수 있습니다. 파이프 라인의 단계에는 소스 및 대상의 네트워크 인터페이스는 물론 네트워크 링크 및 스위치가 포함됩니다. 아키텍처가 통신을 관리하는 방법에 따라 통신 지원, 로컬 메모리 / 캐시 시스템 및 메인 프로세서에도 단계가 있습니다.
기본 통신 구조의 사용 문제는 프로세서 또는 통신 아키텍처가 주어진 시간에 사용 중이며, 통신 파이프 라인에서는 전송되는 단일 단어가 소스에서 대상으로 이동하기 때문에 한 번에 한 단계 만 사용 중입니다. 지연 시간 허용의 목표는 이러한 리소스의 사용을 가능한 한 많이 겹치는 것입니다.
명시 적 메시지 전달의 지연 시간 허용
메시지 전달의 실제 데이터 전송은 일반적으로 전송 작업을 사용하여 보낸 사람이 시작합니다. 수신 작업 자체가 데이터를 전달하도록 동기를 부여하는 것이 아니라 들어오는 버퍼의 데이터를 애플리케이션 주소 공간으로 복사합니다. 수신자가 시작한 통신은 데이터 소스 인 프로세스에 요청 메시지를 발행하여 수행됩니다. 그런 다음 프로세스는 다른 전송을 통해 데이터를 다시 보냅니다.
동기식 전송 작업은 메시지의 모든 데이터를 대상에 전달하는 데 걸리는 시간, 수신 처리 시간 및 승인이 반환되는 시간과 동일한 통신 대기 시간을 갖습니다. 동기 수신 작업의 대기 시간은 처리 오버 헤드입니다. 여기에는 데이터를 애플리케이션으로 복사하는 것과 데이터가 아직 도착하지 않은 경우 추가 대기 시간이 포함됩니다. 가능한 경우 오버 헤드를 포함하여 양쪽에서 이러한 지연 시간을 숨기고 싶습니다.
공유 주소 공간의 대기 시간 허용
기본 통신은 공유 주소 공간에서 읽기 및 쓰기를 통해 이루어집니다. 편의상 읽기-쓰기 통신이라고합니다. 수신자가 시작한 통신은 다른 프로세서의 메모리 또는 캐시의 데이터에 액세스하는 읽기 작업으로 수행됩니다. 공유 데이터의 캐싱이 없으면 원격 메모리에 할당 된 데이터에 쓰기를 통해 송신자가 시작한 통신을 수행 할 수 있습니다.
캐시 일관성을 사용하면 쓰기 효과가 더 복잡해집니다. 쓰기가 송신자 또는 수신자가 시작한 통신으로 이어지는 것은 캐시 일관성 프로토콜에 따라 다릅니다. 수신자가 시작하거나 발신자가 시작하는 하드웨어 지원 읽기 쓰기 공유 주소 공간의 통신은 자연스럽게 세분화되므로 허용 대기 시간이 매우 중요합니다.
공유 주소 공간에서 데이터 전송 차단
공유 주소 공간에서 하드웨어 나 소프트웨어에 의해 데이터 통합 및 블록 전송 시작은 사용자 프로그램에서 명시 적으로 수행되거나 시스템에서 투명하게 수행 될 수 있습니다. 명시 적 블록 전송은 사용자 프로그램에서 전송과 유사한 명령을 실행하여 시작됩니다. 전송 명령은 소스 노드에서 대상으로 파이프 라인 방식으로 데이터를 전송하는 통신 지원에 의해 설명됩니다. 목적지에서 통신 지원은 네트워크 인터페이스에서 데이터 단어를 가져와 지정된 위치에 저장합니다.
송신-수신 메시지 전달과는 두 가지 주요 차이점이 있는데, 둘 다 송신 프로세스가 데이터가 대상에 배치 될 프로그램 데이터 구조를 직접 지정할 수 있다는 사실에서 발생합니다. 이러한 위치는 공유 주소 공간에 있기 때문입니다. .
공유 주소 공간에서 과거의 긴 대기 시간 이벤트 처리
메모리 작업이 비 차단으로 만들어지면 프로세서는 메모리 작업을지나 다른 명령으로 진행할 수 있습니다. 쓰기의 경우 일반적으로 쓰기가 쓰기 버퍼에 저장되고 버퍼가 메모리 시스템에 대한 쓰기를 처리하고 필요에 따라 완료를 추적하는 동안 프로세서가 계속 작동하면 구현하기가 매우 간단합니다. 차이점은 쓰기와 달리 일반적으로 읽기에 의해 반환 된 값을 필요로하는 명령이 읽기에 이어진다는 것입니다.
공유 주소 공간에서의 사전 통신
Pre-communication은 이미 상용 마이크로 프로세서에 널리 채택 된 기술이며 향후 그 중요성이 커질 것으로 보입니다. 프리 페치 명령어는 데이터 항목의 실제 읽기를 대체하지 않으며, 오버랩을 통해 대기 시간을 숨기려는 목표를 달성하려면 프리 페치 명령어 자체가 비 블로킹이어야합니다.
이 경우 공유 데이터가 캐시되지 않으므로 프리 페치 된 데이터는 프리 페치 버퍼라는 특수 하드웨어 구조로 가져옵니다. 단어가 다음 반복에서 실제로 레지스터로 읽혀지면 메모리가 아닌 프리 페치 버퍼의 헤드에서 읽 힙니다. 숨길 지연 시간이 단일 루프 반복을 계산하는 시간보다 훨씬 더 큰 경우, 미리 여러 반복을 미리 가져 오며 한 번에 미리 가져 오기 버퍼에 여러 단어가있을 수 있습니다.
공유 주소 공간의 멀티 스레딩
다른 유형의 대기 시간을 숨기는 측면에서 하드웨어 지원 멀티 스레딩은 아마도 다목적 기술 일 것입니다. 다른 접근 방식에 비해 다음과 같은 개념적 이점이 있습니다.
특별한 소프트웨어 분석이나 지원이 필요하지 않습니다.
동적으로 호출되기 때문에 캐시 충돌과 같은 예측할 수없는 상황과 예측 가능한 상황을 처리 할 수 있습니다.
프리 페치와 마찬가지로 스레드 내에서 액세스 순서를 변경하지 않기 때문에 메모리 일관성 모델을 변경하지 않습니다.
이전 기술은 메모리 액세스 대기 시간을 숨기는 것이 목적이지만, 멀티 스레딩은 런타임에 이벤트를 감지 할 수있는 한 쉽게 지연 시간이 긴 이벤트의 대기 시간을 잠재적으로 숨길 수 있습니다. 여기에는 동기화 및 명령 대기 시간도 포함됩니다.
이 추세는 프로세서 속도에 비해 지연 시간이 점점 더 길어짐에 따라 향후 변경 될 수 있습니다. 또한 이미 멀티 스레딩을 위해 확장 할 수있는 방법을 제공하는보다 정교한 마이크로 프로세서와 멀티 스레딩과 명령어 수준 병렬 처리를 결합하기 위해 새로운 멀티 스레딩 기술이 개발됨에 따라 이러한 추세는 확실히 미래에 약간의 변화를 겪고있는 것 같습니다.