메모리 의존성 예측

Memory dependence prediction

메모리 의존성 예측은 명령 실행 시 로드와 스토어 간의 진정한 의존성을 예측하기 위해 프로그램 순서에서 벗어난 메모리 액세스 조작(로드 및 저장)을 실행하는 고성능 비순차 실행 마이크로프로세서에 사용되는 기술입니다.예측된 의존성 정보에 의해 프로세서는 특정 로드와 스토어를 추측적으로 실행하도록 결정하면서 다른 로드와 스토어의 순서가 어긋나는 것을 방지할 수 있다(순서대로 유지).파이프라인의 후반부에서 메모리 명확화 기술을 사용하여 로드 및 저장소가 올바르게 실행되었는지 여부를 판단하고 그렇지 않은 경우 복구합니다.

메모리 의존성 프레딕터를 사용하여 대부분의 의존적인 로드와 스토어를 순서대로 유지함으로써 프로세서는 공격적으로 순서가 다른 로드/스토어 실행의 이점을 얻을 수 있지만 로드와 스토어가 잘못 실행되었을 때 발생하는 메모리 의존성 위반의 대부분은 회피할 수 있습니다.이렇게 하면 이러한 메모리 종속성 위반으로부터 복구하는 데 필요한 파이프라인 플러시 가 줄어들기 때문에 성능이 향상됩니다.메모리 의존성, 메모리 의존성 위반 및 복구에 대한 자세한 내용은 메모리 설명 문서를 참조하십시오.

일반적으로 메모리 의존성 예측은 두 개의 메모리 동작이 종속되는지 여부, 즉 동일한 메모리 위치에 액세스하여 상호 작용하는지 여부를 예측합니다.로드 및 스토어의 순서가 다른 스케줄링을 위해 store to load(RAW 또는 true) 메모리 의존성 예측을 사용하는 것 외에 메모리 의존성 예측의 다른 응용 프로그램이 제안되었다.예를 들어 [1]를 참조해 주세요.

메모리 의존성 예측은 메모리 의존성 추측에 대한 최적화입니다.순차 실행 시맨틱스는 저장소와 로드가 프로그램에 의해 지정된 순서로 실행되는 것처럼 보인다는 것을 의미합니다.다만, 다른 명령의 순서가 다른 실행과 같이, 프로그램에 의해서 암시된 순서와는 다른 2개의 메모리 조작을 실행할 수 있습니다.이것은, 2개의 조작이 독립하고 있는 경우에 가능합니다.메모리 의존성 추측에서는 부하가 그 앞에 있는 스토어보다 먼저 실행될 수 있습니다.로드가 저장소와 무관한 경우, 즉 두 명령이 서로 다른 메모리 위치에 액세스할 때 추측이 성공합니다.로드가 저장소에 의존하는 경우, 즉 2개의 액세스가 메모리에 중복되는 경우 추측이 실패합니다.첫 번째 현대식 불규칙한 설계에서는 메모리 투기의 장점이 제한되었기 때문에 메모리 투기는 사용되지 않았습니다.순서 외 실행의 범위가 수십 개의 명령에 걸쳐 증가하여 순진한 메모리 의존성 추측이 사용되었습니다.Naigive Memory Dependence [2]추측에서는 로드는 이전 스토어를 바이패스할 수 있습니다.다른 형태의 투기와 마찬가지로, 올바른 투기의 편익을 잘못된 투기에 대해 지불한 벌칙과 비교하는 것이 중요하다.순서가 잘못된 실행의 범위가 수십 개의 명령으로 확대됨에 따라 순진한 투기의 성능 이점은 감소합니다.공격적인 메모리 의존성 투기의 이점을 유지하면서 오산 비용을 피하기 위해 몇 가지 예측 변수가 제안되었다.

선택적 메모리 의존성[2][3] 예측은 위반이 발생하지 않을 때까지 특정 로드를 정지시킵니다.종속성을 명시적으로 예측하지는 않습니다.이 예측 변수는 부하를 필요 이상으로 지연시킬 수 있으므로 성능이 최적화되지 않을 수 있습니다.실제로 모든 부하를 가능한 한 조기에 순진하게 추측하는 것보다 성능이 떨어지는 경우도 있습니다.이는 대부분의 경우 이전의 모든 저장소가 실행될 때까지 기다리는 것보다 잘못 계산하여 복구하는 것이 빠르기 때문입니다.정확한 기억 의존성 예측은 위스콘신 대학 매디슨에서 개발되었습니다.특히 동적 투기동기화[2][3] 로드가 대기해야 하는 정확한 저장소를 예측하여 필요한 경우에만 로드를 지연시킵니다.이 예측 변수는 정확한 종속성(저장 및 부하 쌍)을 예측합니다.동의어[1] 예측 변수는 공통 부하를 공유하거나 명령을 저장하는 모든 종속성을 함께 그룹화합니다.저장소[4] 집합 예측 변수는 부하가 종속될 수 있는 모든 가능한 저장소를 그룹화하여 여러 잠재적 종속성을 효율적으로 나타냅니다.상점[5] 장벽 예측 변수는 특정 상점 명령을 장벽으로 처리합니다.즉, 이후의 모든 로드 또는 스토어 조작은 특정 스토어를 바이패스할 수 없습니다.저장 장벽 예측 변수는 종속성을 명시적으로 예측하지 않습니다.이 프레딕터는 후속의 독립된 부하를 불필요하게 지연시킬 수 있습니다.메모리 의존성 예측에는 로드 및 저장 스케줄링 이외의 다른 응용 프로그램이 있습니다.예를 들어, 투기 메모리 클로킹[1] 투기 메모리[1] 바이패스는 메모리 의존성 예측을 사용하여 메모리를 통한 값 통신을 합리화합니다.

지점 예측과 유사

로드 및 저장소의 메모리 의존성 예측은 조건부 분기 명령에 대한 분기 예측과 유사합니다.분기 예측에서 분기 예측 변수는 분기가 어떤 방식으로 해결되는지 미리 예측합니다.다음으로 프로세서는 브랜치 경로 중 하나로 명령을 추측적으로 가져와 실행할 수 있습니다.나중에 분기 명령이 실행되면 분기 명령이 올바르게 예측되었는지 여부를 판단할 수 있습니다.그렇지 않은 경우 이는 브랜치의 오답이며 의도적으로 가져오고 실행된 명령을 폐기하려면 파이프라인 플러시가 필요합니다.

분기 예측은 2단계 프로세스로 생각할 수 있습니다.첫째, 예측 변수는 나뭇가지의 방향(취득 여부)을 결정합니다.이것은 이원적인 결정입니다.그런 다음 예측 변수는 실제 대상 주소를 결정합니다.마찬가지로 메모리 의존성 예측은 2단계 프로세스로 생각할 수 있습니다.첫째, 예측 변수는 종속성이 있는지 여부를 확인합니다.그런 다음 이 의존성을 결정합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c d Moshovos, A.; Sohi, G. S. (1997). "Streamlining Inter-Operation Memory Communication via Data Dependence Prediction". Proceedings of 30th Annual International Symposium on Microarchitecture. MICRO'97. pp. 235–245. doi:10.1109/MICRO.1997.645814.
  2. ^ a b c Moshovos, 안드레아스, 균열, 스콧 E.,.Vijaykumar, T.N.;Sohi, Gurindar S.(1997년)."동적 표현과 동기화 데이터 Dependences의".컴퓨터 건축에 24회 연례 국제 심포지엄의 논문집.ISCA'97.를 대신하여 서명함. 181–193. doi:10.1145/264107.264189.또한 기술 보고서, 컴퓨터 과학과 대학 Wisconsin–Madison, 1996년 3월.
  3. ^ a b 메모리 의존성 예측, Moshovos, Ph.D.논문, 위스콘신 대학교 매디슨 컴퓨터 과학부 1998년 12월
  4. ^ Chrysos, G. Z.; Emer, J. S. (1998). "Memory Dependence Prediction Using Store Sets". Proceedings 25th Annual International Symposium on Computer Architecture. ISCA'98. pp. 142–153. doi:10.1109/ISCA.1998.694770.
  5. ^ 단일 프로세서 사이클로 여러 명령을 디스패치, 발행 및 실행할 수 있는 프로세서에서 로드 스토어 명령의 순서가 어긋나는 실행을 동적으로 제어하는 장치(Heson, LeBlanc 및 Ciavaglia, IBM, 미국 특허 5,615,350, 1997년 3월).