KR20150079429A - 캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법 - Google Patents

캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20150079429A
KR20150079429A KR1020140188114A KR20140188114A KR20150079429A KR 20150079429 A KR20150079429 A KR 20150079429A KR 1020140188114 A KR1020140188114 A KR 1020140188114A KR 20140188114 A KR20140188114 A KR 20140188114A KR 20150079429 A KR20150079429 A KR 20150079429A
Authority
KR
South Korea
Prior art keywords
resynchronization
memory
read operation
exception
memory read
Prior art date
Application number
KR1020140188114A
Other languages
English (en)
Inventor
폴 이. 키친
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20150079429A publication Critical patent/KR20150079429A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

장치는 메모리 어드레스에 제1 메모리 읽기 동작 및 상기 메모리 어드레스에 제1 메모리 쓰기 동작을 발행하기 위한 패치 유닛, 상기 제1 메모리 읽기 동작을 실행하고, 상기 제1 메모리 읽기 동작은 재동기화 예외(resynchronization exception)를 발생하는 실행 유닛 및 재동기화 예외와 관련된 명령 어드레스 및 재동기화 예측 스토어(resynchronization predicted store)로 구성된 상기 명령 어드레스에 메모리 읽기 동작이 저장되는 경우를 결정하는 캐시 재동기화 예측기(cache resynchronization predictor)를 포함하되, 상기 제1 메모리 읽기 동작은 상기 명령 어드레스에 저장된다.

Description

캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법{APPARATUS FOR HANDLING PROCESSOR READ-AFTER-WRITE HAZARDS WITH CACHE MISSES AND OPERATION METHOD THEREOF}
본 발명은 장치에 관한 것으로, 좀 더 구체적으로 데이터 관리 및 읽기 및 쓰기 데이터를 관리하는 장치 및 그것의 동작 방법에 관한 것이다.
프로세서들(processors) 또는 컴퓨팅 시스템들(computing systems)은 파이프라인된(pipelined) 아키텍쳐들(architectures)을 활용한다. 컴퓨팅 시스템에서, 파이프 라인은 보통 하나의 요소 또는 파이프라인 스테이지(stage)의 출력이 다음 파이프라인 스테이지에 직렬로 연결된 데이터 처리 요소들(실행 유닛들(units), 기능 유닛 블록들(functional unit blocks)(FUBs), 조합 논리 블록들(combinatorial logic blocks)(CLBs))의 세트(set)이다. 파이프라인 스테이지들은 보통 병렬 또는 시간 분할 방식으로 실행된다.
이것은 일반적으로 컴퓨터가 몇몇 명령들을 제1 명령이 모든 파이프라인 스테이지들에서 완벽하게 수행되지 않음 에도 불구하고, 제1 명령이 제1 파이프 라인 명령에서 종료되자마자 제2 명령이 제1 파이프라인 스테이지에서 시작됨으로써, 병렬 또는 병렬에 가깝게 수행하는 것을 허락한다. 이러한 가상 병렬은 명령들 각각의 의존성에도 불구하고, 명령들의 그룹의 완료를 크게 향상시킬 수 있다(예시적으로, 제2 명령은 제1 명령의 결과에 따를 수 있다.).
더 나아가, 복수의 명령들은 메모리로부터 데이터의 읽기(로드(load)), 또는 쓰기(스토어(store))를 포함할 수 있다. 데이터는 종종 캐시(cache) 시스템에 저장된다. 컴퓨터의 캐시 시스템은 일반적으로 점점 더 작고 빠르게 증가하는 메모리 요소들의 단으로 배열된 시스템이다. 캐시 시스템 각각은 크지만 느린 다음 단에 저장된 데이터의 서브-세트(sub-set)를 저장한다. 요구되는 데이터의 조각이 가장 작은 캐시에서 발견된다면, 가장 빠른 캐시 명령이 완료된다. 데이터가 가장 작고 빠른 캐시에 서브-세트로 저장되어있지 않으면, 데이터는 시스템의 다음 단으로부터 회수되어야 하고, 이는 다른 문제들 및 지연을 야기시킨다.
하지만, 때때로, 같은 메모리 어드레스(address)에 대한 로드(읽기) 명령이 스토어(쓰기) 명령 전에 실행될 때, 로드(읽기)는 잘못되거나 오래된 데이터를 반환할 수 있다. 이는 일반적으로, 파이프라인 해저드(hazard) 또는 좀 더 구체적으로 읽기-후-쓰기(Read-After-Write)(RAW) 해저드라 한다. 일반적으로, RAW 해저드의 발생시, 프로세서들은 많은 비용을 들여 RAW 재동기화 예외(RRE)를 수행함으로써 베드(bad) 로드 데이터를 수정할 필요가 있다. 배드 로드 데이터를 수정하기 위해서, 스토어(쓰기)보다 이른 모든 명령들의 과정은 프로세서의 파이프 라인으로부터 플러쉬(flushed)된다.
본 발명의 목적은 캐시 미시들에 대한 프로세서 읽기 후의 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 장치는 메모리 어드레스에 제1 메모리 읽기 동작 및 상기 메모리 어드레스에 제1 메모리 쓰기 동작을 발행하기 위한 패치 유닛, 상기 제1 메모리 읽기 동작을 실행하고, 상기 제1 메모리 읽기 동작은 재동기화 예외(resynchronization exception)를 발생하는 실행 유닛 및 재동기화 예외와 관련된 명령 어드레스 및 재동기화 예측 스토어(resynchronization predicted store)로 구성된 상기 명령 어드레스에 메모리 읽기 동작이 저장되는 경우를 결정하는 캐시 재동기화 예측기(cache resynchronization predictor)를 포함하되, 상기 제1 메모리 읽기 동작은 상기 명령 어드레스에 저장된다.
실시 예로서, 상기 실행 유닛은, 상기 제1 메모리 읽기 동작 전에 상기 제1 메모리 쓰기 동작을 수행하고, 캐시-미스를 발생하는 상기 제1 메모리 쓰기 동작을 실행하는 경우를 결정하고, 상기 캐시 재동기화 예측기는, 상기 캐시 미스를 발생하는 상기 제1 메모리 쓰기 동작을 실행하는 경우, 상기 재동기화 예외에 의해 발생한 상기 명령 어드레스에 저장되는 상기 제1 메모리 읽기 동작에도 불구하고 상기 명령 어드레스를 재동기화 예측과 관련 짓지 않는다.
실시 예로서, 상기 패치 유닛은, 상기 메모리 어드레스에 제2 메모리 읽기 동작 및 제2 메모리 쓰기 동작을 발행하고, 상기 제2 메모리 읽기 동작은 상기 명령 어드레스에 저장되고, 상기 캐시 재동기화 예측기는 상기 제2 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성되었는지 여부를 판단하고, 상기 실행 유닛은 상기 제2 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성된다면, 상기 제2 메모리 읽기 동작 후 상기 제2 메모리 쓰기 동작을 실행한다.
실시 예로서, 상기 캐시 재동기화 예측기는 메모리 읽기 동작으로부터 발생된 상기 예측 재동기화 예외로부터 발생하는 지연이 메모리 쓰기 동작으로부터 발생하는 예측 지연보다 더 큰지 여부를 판단하고, 더 크다고 결정되면, 상기 재동기화 예측 스토어를 포함하는 상기 메모리 읽기 동작을 결정하고, 더 크지 않다고 결정되면, 상기 재동기화 예측 스토어를 포함하지 않는 상기 메모리 읽기 동작을 결정한다.
실시 예로서, 상기 캐시 재동기화 예측기는, 알 수 없음, 재동기화 예외 허용, 재동기화 예외 회피, 및 예측되는 재동기화 예외 없음으로 구성된 그룹으로부터 선택된 상기 명령 어드레스와 관련된 하나의 상태를 포함한다.
실시 예로서, 상기 실행 유닛은 상기 재동기화 예외가 발생하지 않는 상기 명령 어드레스로부터 제2 메모리 읽기 동작을 실행하고, 상기 재동기화 예외에 응답하는 상기 캐시 재동기화 예측기는, 상기 재동기화 예외와 관련되지 않은 상기 명령 어드레스를 포함한다.
본 발명의 실시 예에 따른 장치는 메모리 어드레스로 메모리 읽기 동작 및 메모리 쓰기 동작을 발행하는 패치 유닛, 재동기화 예외(resynchronization exception)에 의해 발생된 명령 어드레스로부터 이전 메모리 읽기 동작 여부의 적어도 일부분을 기반으로 하고, 재동기화 예측 스토어(resynchronization exception store)로 구성된 상기 메모리 읽기 동작의 여부를 판단하는 캐시 재동기화 예측기(cache resynchronization predictor) 및 상기 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성된 경우, 상기 메모리 읽기 동작 후 상기 메모리 쓰기 동작을 실행하는 실행 유닛을 포함하되, 상기 메모리 읽기 동작은 상기 명령 어드레스에 저장된다.
실시 예로서, 상기 실행 유닛은, 상기 재동기화 예외가 발생하는 상기 명령 어드레스로부터 상기 이전 메모리 읽기 동작이 실행되고, 상기 캐시 재동기화 예측기는 상기 재동기화 예외에 응답하고, 상기 재동기화 예외와 관련된 상기 명령 어드레스를 포함한다.
실시 예로서, 상기 실행 유닛은, 상기 명령 어드레스로부터 상기 이전 메모리 읽기 동작을 실행하고, 상기 이전 메모리 읽기 동작의 상기 실행이 상기 재동기화 예외를 발생한 경우, 상기 캐시 재동기화 예측기로 재동기화 피드백 신호를 발생한다.
본 발명의 실시 예에 따른 동작 방법은 제1 로드 동작 후 명령 어드레스와 관련된 스토어 동작의 제1 실행으로부터 제1 재동기화 예외가 발생하는 단계, 재동기화 예측 스토어(resynchronization prediction store)와 관련된 상기 명령 어드레스와 관련된 재동기화 예측기(resynchronization predictor)를 트레이닝하는 단계 및 상기 재동기화 예측기의 적어도 일부분에서라도 제2 재동기화 예외의 발생으로부터 상기 스토어 동작의 제2 실행을 방지하는 단계를 포함한다.
본 발명의 실시 예에 따른 장치는 메모리 어드레스에 제1 메모리 읽기 동작 및 상기 메모리 어드레스에 제1 메모리 쓰기 동작을 발행하기 위한 패치 유닛, 상기 제1 메모리 읽기 동작을 실행하고, 상기 제1 메모리 읽기 동작은 재동기화 예외(resynchronization exception)를 발생하는 실행 유닛 및 재동기화 예외와 관련된 명령 어드레스 및 재동기화 예측 스토어(resynchronization predicted store)로 구성된 상기 명령 어드레스에 메모리 읽기 동작이 저장되는 경우를 결정하는 캐시 재동기화 예측기(cache resynchronization predictor)를 포함하되, 상기 제1 메모리 읽기 동작은 상기 명령 어드레스에 저장된다.
실시 예로서, 상기 실행 유닛은 상기 제1 메모리 읽기 동작 전에 상기 제1 메모리 쓰기 동작을 수행하고, 캐시-미스를 발생하는 상기 제1 메모리 쓰기 동작을 실행하는 경우를 결정하고; 상기 캐시 재동기화 예측기는, 상기 캐시 미스를 발생하는 상기 제1 메모리 쓰기 동작을 실행하는 경우, 상기 재동기화 예외에 의해 발생한 상기 상기 명령 어드레스에 저장되는 상기 제1 메모리 읽기 동작에도 불구하고 상기 명령 어드레스를 재동기화 예측과 관련 짓지 않는다.
실시 예로서, 상기 패치 유닛은, 상기 메모리 어드레스에 제2 메모리 읽기 동작 및 제2 메모리 쓰기 동작을 발행하고, 상기 제2 메모리 읽기 동작은 상기 명령 어드레스에 저장되고, 상기 캐시 재동기화 예측기는 상기 제2 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성되었는지 여부를 판단하고, 상기 실행 유닛은 상기 제2 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성된다면, 상기 제2 메모리 읽기 동작 후 상기 제2 메모리 쓰기 동작을 실행한다.
실시 예로서, 상기 캐시 재동기화 예측기는 메모리 읽기 동작으로부터 발생된 상기 예측 재동기화 예외로부터 발생하는 지연이 메모리 쓰기 동작으로부터 발생하는 예측 지연보다 더 큰지 여부를 판단하고, 더 크다고 결정되면, 상기 재동기화 예측 스토어를 포함하는 상기 메모리 읽기 동작을 결정하고, 더 크지 않다고 결정되면, 상기 재동기화 예측 스토어를 포함하지 않는 상기 메모리 읽기 동작을 결정한다.
실시 예로서, 상기 캐시 재동기화 예측기는, 알 수 없음, 재동기화 예외 허용, 재동기화 예외 회피, 및 예측되는 재동기화 예외 없음으로 구성된 그룹으로부터 선택된 상기 명령 어드레스와 관련된 하나의 상태를 포함한다.
실시 예로서, 상기 실행 유닛은 상기 재동기화 예외가 발생하지 않는 상기 명령 어드레스로부터 제2 메모리 읽기 동작을 실행하고, 상기 재동기화 예외에 응답하는 상기 캐시 재동기화 예측기는, 상기 재동기화 예외와 관련되지 않은 상기 명령 어드레스를 포함한다.
본 발명의 실시 예에 따른 장치는 메모리 어드레스로 메모리 읽기 동작 및 메모리 쓰기 동작을 발행하는 패치 유닛, 재동기화 예외(resynchronization exception)에 의해 발생된 명령 어드레스로부터 이전 메모리 읽기 동작 여부의 적어도 일부분을 기반으로 하고, 재동기화 예측 스토어(resynchronization exception store)로 구성된 상기 메모리 읽기 동작의 여부를 판단하는 캐시 재동기화 예측기(cache resynchronization predictor) 및 상기 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성된 경우, 상기 메모리 읽기 동작 후 상기 메모리 쓰기 동작을 실행하는 실행 유닛을 포함하되, 상기 메모리 읽기 동작은 상기 명령 어드레스에 저장된다.
실시 예로서, 상기 실행 유닛은, 상기 재동기화 예외가 발생하는 상기 명령 어드레스로부터 상기 이전 메모리 읽기 동작이 실행되고, 상기 캐시 재동기화 예측기는 상기 재동기화 예외에 응답하고, 상기 재동기화 예외와 관련된 상기 명령 어드레스를 포함한다.
실시 예로서, 상기 실행 유닛은, 상기 명령 어드레스로부터 상기 이전 메모리 읽기 동작을 실행하고, 상기 이전 메모리 읽기 동작의 상기 실행이 상기 재동기화 예외를 발생한 경우, 상기 캐시 재동기화 예측기로 재동기화 피드백 신호를 발생한다.
본 발명의 실시 예에 따른 장치의 동작 방법은 제1 로드 동작 후 명령 어드레스와 관련된 스토어 동작의 제1 실행으로부터 제1 재동기화 예외가 발생하는 단계, 재동기화 예측 스토어(resynchronization prediction store)와 관련된 상기 명령 어드레스와 관련된 재동기화 예측기(resynchronization predictor)를 트레이닝하는 단계 및 상기 재동기화 예측기의 적어도 일부분에서라도 제2 재동기화 예외의 발생으로부터 상기 스토어 동작의 제2 실행을 방지하는 단계를 포함한다.
본 발명의 실시 예에 따른 장치 및 그것의 구동 방법은 읽기 후 쓰기 해저드를 제거함으로써, 데이터 포워딩 효율을 향상시킨다.
도 1은 본 발명의 제1 실시 예에 따른 시스템을 보여주는 블록도이다.
도 2는 본 발명의 제2 실시 예에 따른 시스템을 보여주는 블록도이다.
도 3은 본 발명의 제3 실시 예에 따른 시스템을 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 시스템의 동작을 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 따른 처리 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 무선 통신 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다. 실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 제1 실시 예에 따른 시스템을 보여주는 블록도이다.
실시 예로서, 읽기 후 쓰기(Read-After-Write)(RAW) 재동기화 예외(RRE)의 발생을 줄이기 위한 시스템을 보여준다. 구체적으로, 실시 예는 네 개의 명령들을 구체적으로 보여준다. 실시 예로서, 명령들의 제1 페어(pair)는 제1 RRE를 발생시킬 수 있고, 시스템(100)은 명령들의 제2 페어로 인해 발생하는 제2 RRE를 피할 수 있도록 운영된다. 다른 시나리오들(scenarios)은 도 2 및 도 3을 통해 설명된다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
실시 예로서, 시스템(100)은 다양한 명령들 또는 동작 코드들(codes)(예를 들어, 제1 스토어 동작(제1 메모리 쓰기 동작)(190), 제1 로드 동작(제1 메모리 읽기 동작)(192), 제2 스토어 동작(제2 메모리 쓰기 동작)(194), 및 제2 로드 동작(제2 메모리 읽기 동작(196))을 저장하기 위한 명령 메모리(130)를 포함할 수 있다. 각각의 명령들은 동작을 수행하기 위한 시스템(100)을 구동하기 위해 구성된다. 다양한 실시 예로서, 이러한 명령들 각각은 명령 어드레스로 지칭되는 특정 메모리 어드레스에 저장될 수 있다.
실시 예로서, 다른 유형들의 명령들 또는 동작이 존재하지만, 메모리 동작들과 관련된 명령들은(예를 들어, 메모리 읽기 동작 및 메모리 쓰기 동작) 검토된다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
몇몇 실시 예로서, 시스템(100)은 명령 메모리(130)로부터 명령들을 반환, 패치 또는 발생하도록 구성된 패치(fetch) 유닛(102)을 포함할 수 있다. 다양한 실시 예로서, 패치 유닛(102)은 시스템(100)의 파이프라인의 제1 스테이지(stage)로 간주될 수 있다. 실시 예로서, 오직 세 개의 파이프라인 스테이지들(패치 유닛(102), 디코드(decode) 유닛(106), 실행 유닛(108) 등)이 도시된다. 하지만, 이는 파이프라인 스테이지들의 개수를 한정하지 않는다. 예를 들어, 대표적인 축소 명령 집합 컴퓨터(Reduced Instruction Set Computer, RISC) 구조는 다섯 개의 파이프라인 스테이지들을 포함할 수 있고, 여덟, 열넷, 또는 스무 개 이상의 파이라인 스테이지들을 포함하는 컴퓨터들도 존재한다. 몇몇 컴퓨터들은 세 개의 스테이지를 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
실시 예로서, 패치 유닛(102)은 제1 스토어 동작(190)을 패치할 수 있다. 일 실시 예로서, 시스템(100)은 로드/스토어 재동기화 예측기(LSPR)(104)를 포함할 수 있다. 로드/스토어 재동기화 예측기(104)의 동작들은 아래 좀 더 자세하게 설명된다. 로드/스토어 재동기화 예측기(104)는 제1 스토어 동작(190)에 관하여 특별한 조치를 지시하지 않는다. 일 실시 예로서, 제1 스토어 동작(190)은 기존 처리 스토어 동작으로써 처리될 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 패치 유닛(102)은 현재 명령(제1 스토어 동작(190))의 명령 어드레스(본 발명에서는 물리적인 공간을 의미한다.)를 저장하기 위한(일시적으로) 프로그램 카운터(program counter)(PC)(112)를 포함할 수 있다. 다양한 실시 예들로서, PC(112)는 RRE와 같은 다양한 파이프라인 해저드들과 관련된 메모리 쓰기 동작들(제1 스토어 동작(190))을 이용할 수 있다. 구체적으로 PC(112)는 메모리 스토어 동작의 명령 어드레스를 나타내는 식별자와 함께 LSRP(104)를 제공할 수 있다.
일 실시 예로서, 제1 스토어 동작(190)은 명령 버스(bus)(150)를 통해 파이프라인의 다음 스테이지로 진행할 수 있다. 다양한 실시 예들에서, 시스템(100)은 명령(제1 스토어 동작(190))에 포함된 비트들을 시스템의 다른 부분들(실행 유닛(108))을 제어하는 제어 신호들로 변환하도록 구성된 디코드 유닛(106)을 포함할 수 있다.
제1 스토어 동작(190)이 디코드 유닛(106)으로부터 처리되는 클럭 주기 동안, 패치 유닛(102)은 제1 로드 동작(192)을 패치할 수 있다. 실시 예로서, 제1 로드 동작(192)은 제1 스토어 동작(190)보다 “더 우선적”이다. 다양한 실시 예로서, 복수의 주기들 및 명령들은 제1 스토어 동작(190) 및 재1 로드 동작(192)의 패칭 사이를 패스(pass)할 수 있다.
다양한 실시 예들에서, 시스템(100)은 메모리 동작들(로드들, 스토어들)로 구성된 실행 유닛(108)을 포함할 수 있다. 다양한 실시 예들에서, 시스템(100)은 다양한 기능들(덧셈, 부동 소수점 계산 등)을 수행하기 위한 복수의 실행 유닛들을 포함할 수 있다. 몇몇 실시 예들로서, 실행 유닛(108)은 로드/스토어 유닛(LSU)을 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
다양한 실시 예들로서, 제1 스토어 동작(190) 및 제1 로드 동작(192)은 결국 실행 유닛(108)으로부터 수신될 수 있고, 대기 처리로 일시적으로 저장될 수 있다. 다양한 실시 예들로서, 패치 유닛(102)은 명령 메모리(130)로부터 명령들(미 도시)의 패치를 지속할 수 있고, 명령들은 제1 스토어 동작(190) 및 제1 로드 동작(192)의 실행을 기다리는 종안 파이프라인을 통해 공급될 수 있다.
다양한 실시 예들로서, 실행 유닛(108)은 명령들(제1 스토어 동작(190) 및 제1 로드 동작(192))의 수신 즉시 실행하도록 구성되지 않을 수 있다. 몇몇 실시 예들로서, 메모리 동작들은 타깃 데이터가 저장되거나 저장될 구체적인 메모리 어드레스를 목표로 삼을 수 있다. 일 실시 예로서, 올바른 메모리 주소를 디코딩하거나 결정해야 할 수 있다. 이러한 결정은 많은 시간일 걸릴 수 있다. 다양한 실시 예들로서, 이러한 메모리 어드레스 결정 시간의 변화는 명령들의 비순차적 실행을 가능하게 할 수 있다. 예를 들어, 만약, 더 이르게 발생하는 명령들의 타깃 메모리 어드레스가 첫 번째로 결정된다면, 실행 유닛(108)은 더 이후에 발생하는 명령들(제1 스토어 동작) 보다 더 이르게 발생하는 명령들(제1 로드 동작(192))을 실행할 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
실시 예로서, 실행 유닛(108)은 실행을 대기하는 모든 메모리 동작들을 포함하도록 구성된 로드-스토어 스케줄러(Load-Store Scheduler)(118)를 포함할 수 있다. 다양한 실시 예들로서, 로드-스토어 스케줄러(118)는 실행될 수 있는 가장 오래된 메모리 동작(메모리 어드레스로 알려진)을 선택하도록 구성될 수 있다. 상기 설명된 바와 같이, 상이한 메모리 동작들에 대한 메모리 어드레스들의 계산은 가변적인 시간이 걸릴 수 있기 때문에, 더 이른 메모리 동작들은 더 오래된 메모리 동작들 이전에 실행되도록 준비될 수 있고, 메모리 동작들은 패치 유닛(102)에 의해 반입된 순서로 프로그램 또는 순서를 벗어나서 실행될 수 있다.
다양한 실시 예들로서, 실행 유닛(108)은 이전 스토어의 실행된 모든 로드들을 저장하도록 구성된 아웃-오브-오더 로드 큐(Out-of-Order Load Queue)(OOLQ)(116)를 포함할 수 있다. 일 실시 예로서, 제1 로드 동작(192)는 로드-스토어 스케줄러(118)로부터 선택되고, 제1 로드 동작(192)은 파이프라인에서 로드가 가장 오래된 메모리 일 때, OOLQ(116)로부터 로드를 제거하기 위해 구성될 수 있다.
실시 예로서, 시스템(100)은 데이터 메모리(132)를 포함할 수 있다. 다양한 실시 예들로서, 제1 로드 동작(192)이 실행될 때, 메모리 동작 요청(158)은 데이터 메모리(132)로부터 만들어 질 수 있다. 더 나아가, 다양한 실시 예들로서, 데이터 메모리(132)는 캐시 시스템의 적어도 하나 이상의 레벨들 또는 단계들을 포함할 수 있다. 일 실시 예로서, 캐시 시스템은 제1 레벨 데이터(L1-D) 캐시(133) 및 메인 메모리(134)를 포함할 수 있다.
실시 예로서, 메모리 어드레스에서 요청된 데이터는 L1-D 캐시(133)에 포함될 수 있고, 메모리 동작 응답(160)을 통해 반환될 수 있다. 다른 실시 예로서, 데이터는 데이터 메모리(132)에 포함되지 않을 수 있고, 버스(162)를 통해 메인 메모리(134)로부터 반환될 필요가 있을 수 있다. 그러나, 이러한 실시 예로서, 제1 로드 동작(192)은 문제없이 실행할 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
실시 예로서, 나중에, 제1 스토어 동작(190)은 실행을 위해 선택될 수 있다. 다양한 실시 예들로서, 메모리 스토어 동작이 실행을 위해 선택될 때, 실행 유닛(108)은 같은 메모리 어드레스에 접근하는 이전에 실행된 로드보다 스토어가 더 오래되었는지 검사할 수 있다. 몇몇 실시 예로서, 이러한 검사는 OOLQ(116)를 통해 발생할 수 있다. 일 실시 예로서, OOLQ(116)는 상기 언급된 메모리 로드 동작들의 타깃 메모리 어드레스를 포함할 수 있다.
실시 예로서, 제1 스토어 동작(190) 및 제1 로드 동작(192)은 같은 타깃의 메모리 어드레스를 공유 또는 포함할 수 있다. 일 실시 예로서, 제1 로드 동작(192)가 무효한 데이터로 반환됨을 의미하는 더 이른 제1 로드 동작(192) 이후에 더 오래된 제1 스토어 동작(190)의 실행은 RAW 재동기화 예외(RRE)의 원인으로써 확인될 수 있다.
실시 예로서, 실행 유닛(108)은 RRE 메시지(170)를 패치 유닛(102)로 보내기 위한 구성을 포함할 수 있다. 일 실시 예로서, RRE 메시지(170)는 제1 스토어 동작(190)이 명령 메모리(130)로부터 패치되는 시점에 시스템(100)의 동작을 리와인드(rewind)하기 위해 패치 유닛(102)을 발생할 수 있다.
다양한 실시 예들로서, 시스템(100)은 로드/스토어 재동기화 예측기(104)를 포함할 수 있다. 다양한 실시 예들로서, 로드/스토어 재동기화 예측기(104)는 더 이전의 메모리 로드 동작(같은 타깃 메모리 어드레스)후에 실행되는 메모리 스토어 동작이 RRE의 발생과 관련이 있는지 예측하도록 구성될 수 있다. 실시 예로서, 실행 유닛(108)은 RPS 트레이닝(training) 메시지(172)를 로드/스토어 재동기화 예측기(LSRP)(104)로 보내기 위한 구성을 포함할 수 있다. 이러한 일 실시 예로서, RPS 트레이닝 메시지(172)는 LSRP(104)를 트레이닝할 수 있고, LSRP(104)의 예측 능력을 지원할 수 있다.
다양한 실시 예들로서, LSRP(104)는 RRE의 가능성과 관련된 명령 어드레스들로 구성될 수 있다. 실시 예로서, LSRP(104)는 재동기화 예측 스토어(Resynchronization Predicted Store)(RPS) 리스트(List)(114)를 포함할 수 있다. 이러한 일 실시 예로서, RPS 리스트(114)는 RRE들의 이전 발생들과 관련된 메모리 스토어 동작들의 명령 어드레스들로 구성될 수 있다.
다양한 실시 예들로서, RPS 리스트(114)는 네 개의 스테이지들 중 하나의 명령 어드레스 엔트리(entry)와 관련될 수 있다. 일 실시 예로서, 제1 상태는 RRE의 실행 시 결과 및 명령 어드레스들이 이전에 발생하였음을 지시하는 명령 어드레스가 “RRE 회피” 상태일 수 있다.
제2 상태는 RRE의 실행 시 결과 및 명령 어드레스가 이전에 직면하는 것을 지시하는 “RRE 허용”을 포함할 수 있다. 이 상태는 RRE의 발생의 몇몇 이유가 RRE 발생 또는 RRE의 방지와 관련된 비용을 가지지 않는 RRE가 과거에 발생했음에도 불구하고 지시할 수 있다. 일 실시 예로서, 실행 유닛(108)은 RRE를 피하기 위해 특별한 페인(pain)을 받지 않을 수 있고, 제1 스토어 동작(190) 및 제1 로드 동작(192)과 관련하여 더 오래된 스토어 및 더 이전에 발생한 로드 쌍을 다룰 수 있다. 이 상태에 대해서는 도 2를 통해 더 자세히 설명된다.
제3 상태는 “알 수 없음” 상태이고, 이는 LSRP(104)를 알 수 없거나 메모리 스토어 동작이 이전에 발생한 RRE를 포함하는지 아닌지에 대한 어떠한 데이터도 가지지 않는 것을 의미할 수 있다. 몇몇 실시 예로서, 제3 상태는 RPS 리스트(114)에 저장될 수 없다. 하지만, 제3 상태는 주어진 명령 어드레스에서 어떠한 엔트리도 발견되지 않는다면, 디폴트(default) 상태일 것이다. 실시 예로서, 제1 스토어 동작(190)이 패치 될 때, 제3 상태는 LSRP(104)로부터 전해질 것이다.
일 실시 예로서, 제4 상태는 명령 어드레스가 이전에 발생하였고, RRE를 발생하지 않았음을 지시하는 “예측되는 RRE가 없음” 상태를 포함할 수 있다. 몇몇 실시 예로서, 실행 유닛(108)은 메모리 스토어 동작이 RRE를 발생하지 않아도 RPS 트레이닝 메시지(172)를 LSRP(104)로 보내는 구성을 포함할 수 있다. 실시 예로서, LSRP(104)는 제4 상태를 사용하지 않을 수 있고, LSRP(104)는 오직 제1 내지 제3 상태를 사용할 수 있다. 이러한 일 실시 예로서, 실행 유닛(108)은 오직 RRE만이 발생하였을 때 RPS 트레이닝 메시지(172)를 보내도록 구성될 수 있다. 이러한 일 실시 예로서, 메모리 스토어 동작이 아무런 문제없이 실행하였을 때, LSRP(104)는 알려지지 않을 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
실시 예로서, 패치 유닛(102)은 제2 스토어 동작(194)을 패치할 수 있다. 다양한 실시 예들로서, 패치 유닛(102)은 제3 스토어 동작(194)이 RRE를 발생시킬 것인지 예측을 요청하는 LSRP(104)를 요청할 수 있다. 다양한 실시 예들로서, 패치 유닛(102)은 제2 스토어 동작(194)의 명령 어드레스(152)와 함께 LSRP(104)를 공급할 수 있다.
실시 예로서, 제1 스토어 동작(190) 및 제2 스토어 동작(194)은 같은 명령 어드레스에 저장될 수 있다. 이러한 일 실시 예로서, 제1 스토어 동작(190)은 제2 스토어 동작(194)와 같은 명령일 수 있고, 서로 상이한 시간에 패치될 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
이러한 일 실시 예로서, LSRP(104)는 제2 스토어 동작(194)의 명령 어드레스와 RPS 리스트(114)에 저장된 명령 어드레스를 비교할 수 있다. 제1 스토어 동작(190)이 RRE를 발생했을 때, 명령 어드레스(제1 및 제2 스토어 동작들(190, 194)와 공유되는)는 RPS 리스트(114)에 포함될 수 있고, RRE와 관련될 수 있다. 다양한 실시 예들로서, 제2 스토어 동작(194)은 RRE를 발생할 것으로 예측되는 LSRP(104)로서 “재동기화 예측 스토어(Resynchronization Predicted Store(RPS))”으로 언급될 수 있다.
몇몇 실시 예들로서, RPS는 이전 RRE와 관련될 수 있고, LSRP(104)는 RRE가 발생되지 않는 것을 바란다. 예를 들어, RPS는 “RRE 회피”, “RRE 허용”하지 않는, “알 수 없음” 또는 “RRE가 예측되지 않음” 상태를 포함할 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
실시 예로서, LSRP(104)는 예측 메시지(154)를 통해 패치 유닛(102)에서의 예측 또는 관련된 상태를 제공할 수 있다. 다양한 실시 예들로서, 예측 메시지(154)는 명령 버스(150)을 따라서 또는 옆으로 송신될 수 있다. 실시 예로서, 이는 적어도 하나 이상의 신호들 또는 예측 비트들(156)로부터 완료될 수 있다. 다른 실시 예로서, 예측 메시지(154)는 전체 상태 정보(네 개의 가능한 상태에 대한 2-비트 상태 코드, 더 많은 개수의 가능한 상태들에 대한 더 많은 비트들) 또는 다른 정보(RRE를 발생하는 명령 어드레스의 회수에 대한 백분율)를 포함할 수 있다. 그리고, 예측 비트들(156)은 단순화되거나 정제된 정보(허용/금지 비트 플래그(flag))을 포함할 수 있다.
다른 실시 예로서, 명령 어드레스 또는 룩 업(look up) 인덱스(index)로부터의 몇몇 정보 예측 비트들(156)을 통해 송신될 수 있고, 패치 유닛(102)의 특정 명령 어드레스들과 관련된 RRE 이벤트들(events)과 사용될 수 있다.
이러한 일 실시 예로서, 인코딩된 값, 전체 비트 대신 156 비트 또는 부분적인 명령 어드레스를 전송함으로써, 파이프라인 스테이지들 사이로 전송되는 비트들은 감소될 수 있다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
도 3의 다양한 실시 예들을 통해, 패치 유닛(102)으로부터 실행 유닛(108)로 전송되는 전체 또는 부분적인 명령 어드레스에 대해 좀 더 자세히 설명된다. 하지만, 몇몇 실시 예들에서(도 1 및 도 2), LSRP(104)가 패치 유닛(102) 근처에 존재하는 것이 효율적이다. 명령 어드레스는 파이프라인 아래로 전송되지 않고, 대신에 비교적 짧은 거리를 통해 전송된다. 다양한 실시 예들로서, 파이프라인 스테이지들을 통해 전송되는 많은 수의 신호들(32, 64, 또는 128 비트 어드레스)에 대한 비용은 대체적으로 높다. 이러한 일 실시 예에서, 파이프라인들의 스테이지들을 통해(패치 유닛(102) 및 디코드 유닛(106) 사이) 오직 예측 비트들(156)만을 전송하는 것은 전체 명령 어드레스(도 3에 도시)를 전송하는 것보다 더 저렴하다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
다시, 제2 로드 동작(196)은 패치될 수 있다. 제2 스토어 동작(194) 및 제2 로드 동작(196)은 같은 메모리를 타깃으로 할 수 있다. 이러한 일 실시 예에서, 제2 로드 동작(196)은 제2 로드 동작(196)은 “이른” 명령이고, 제2 스토어 동작(194)는 “늦은” 명령이다. 제2 스토어 동작(194) 및 제2 로드 동작(196)은 실행 유닛(108)에 저장되고, 실행을 기다린다.
그러나, 제1 케이스(case)인 실행 유닛(108)은 제1 스토어 동작(190) 또는 제1 로드 동작(192)이 어떤 순서로 동작하는지에 대해 자유로울 때, 제2 케이스인 실행 유닛(108)은 더 제어된다. 제2 스토어 동작(194)은 RPS의 것으로 LSRP(104)로부터 확인된다. 이러한 일 실시 예에서, 실행 유닛(108)은 제2 스토어 동작(194)(더 늦은 명령)의 실행이 완료되기 전에 제2 로드 동작(196)(더 이른 명령)이 실행되는 것을 허락하지 않는다. 이러한 일 실시 예에서, RRE는 제2 스토어 동작(194)이 가장 최근의 데이터에 쓰여진 후, 제3 로드 동작(196)이 데이터를 읽는 것을 불가능하게 할 수 있다. 다양한 실시 예들로서, 이런 엄격한 명령은 로드-스토어 스케줄러(118)로부터 완수된다.
몇몇 실시 예들로서, 실행 유닛(108)은 로드들의 타깃 메모리 어드레스에 상관 없이 RPS가 완료될 때까지 이른 로드들을 차단 또는 지연시킬 수 있다. 다양한 실시 예들로서, 더 이르게 발생하는 로드들은 상이한 메모리 어드레스를 가질 수 있다. 로드들의 불규칙한 실행은 RRE를 발생할 수 없을 것이다(같은 메모리 어드레스의 불규칙한 메모리 동작들로부터 발생하는 RRE).
다양한 실시 예들로서, 이러한 상이한 메모리 어드레스들에 대한 로드들은 “중요하지 않은 로드들(Noncritical loads(NCLs))”라고 언급될 수 있고, NCLs 지연의 수행 비용은 “NCL 페널티(penalty)”라고 언급될 수 있다. 이러한 일 실시 예로서, RRE 페널티를 피하는 수행 이득은 NCLs 차단 수행 손실보다 클 수 있다.
그러나, 다른 실시 예로서, 실행 유닛(108)은 RPS 때문에 지연되는 이른 로드들 필터링하거나 차단할 수 있다. 그렇다면, 로드는 RPS가 수행될 때까지 지연될 수 있다. 그렇지 않으면, 다른 충돌하지 않는 메모리 어드레스가 로드로부터 타깃이 될 수 있다. 로드는 비 순차적으로 실행하도록 허락된다. 이는 본 발명을 설명하기 위한 예시들이므로, 본 발명을 한정하지 않는다.
도 2는 본 발명의 제2 실시 예에 따른 시스템을 보여주는 블록도이다. 실시 예에서, 비용을 줄이기 위한 시스템(200)은 RRE 때문에 발생된다. 구체적으로, 네 개의 명령들이 예시적으로 도시된다. 실시 예로서, 명령들의 제1 페어는 제1 RRE를 발생시킬 수 있고, 시스템(200)은 명령들의 제2 페어 때문에 발생하는 제2 RRE를 허용하기 위해 채용될 수 있다.
실시 예로서, 시스템(200)은 명령 메모리(130), 패치 유닛(202), 디코드 유닛(106), 실행 유닛(108), 데이터 메모리(132), 및/또는 메인 메모리(134)를 포함할 수 잇다. 도 2의 명령 메모리(130), 디코드 유닛(106), 실행 유닛(108), 데이터 메모리(132), 및/또는 메인 메모리(134)들은 도 1에 도시된 명령 메모리(130), 디코드 유닛(106), 실행 유닛(108), 데이터 메모리(132), 및/또는 메인 메모리(134)와 유사하게 동작할 수 있다.
그러나, 실시 예로서, 패치 유닛(202)은 LSRP(104)와 통합되거나, LSRP(104)를 포함할 수 있다. 다양한 실시 예들로서, 패치 유닛(202)는 명령 메모리(130)로부터 명령들을 발행, 패치 또는 회수하도록 구성된 명령 패쳐(203)를 포함할 수 있다.
실시 예로서, 패치 유닛(202)은 제1 스토어 동작(190) 및 제1 로드 동작(292)을 패치할 수 있다. 이러한 일 실시 예로서, 제1 스토어 동작(190) 및 제1 로드 동작(292)은 같은 메모리 어드레스를 타깃으로 할 수 있다. 이러한 명령들은 실행 유닛(108)에 저장될 수 있고, 실행을 기다린다. 일 실시 예로서, 제1 로드 동작(292(이른 명령) 첫 번째로 실행될 수 있다.
실시 예로서, 제1 로드 동작(292)로부터 요청된 데이터는 데이터 메모리(132)(또는 L1-D 캐시(133))에 저장되지 않을 수 있다. 이러한 일 실시 예로서, 데이터 메모리(132)는 응답(160)으로서 캐시-미스 지시(cache-miss indication, CMI)를 발생할 수 있다. 그리고, 데이터 메모리(132)는 메인 메모리(134)(또는 캐시 시스템의 다음 단계)로 캐시 필(fill) 요청을 발행할 수 있다. 이러한 일 실시 예로서, 요청된 데이터로써 발생할 수 있는 지연은 메인 메모리(134)로부터 반환된다. 이러한 지연은 지연되는 파이프라인(명령들은 데이터가 반환될 때까지 같은 파이프라인 스테이지에 남아있을 수 있다.)을 발생할 수 있고, 수행 페널티들을 발생할 수 있다.
다양한 실시 예들로서, 요청된 데이터가 데이터 메모리(132)에 저장되지 않으면, OOLQ(116)는 제1 로드 동작(292)에 대한 캐시-미스 지시(CMI)를 저장하기 위한 구성을 포함할 수 있다. 제1 스토어 동작(190)이 실행될 때, OOLQ(116)는 참고될 수 있다. 다양한 실시 예들로서, OOLQ(116)는 오래된 제1 스토어 동작(190) 전에 이른 로드 동작(제1 로드 동작(292)이 실행되도록 지시할 수 있다. 다양한 실시 예들로서, 이것은 RRE 및 RRE 메시지(170)의 원인이 될 수 있다.
다양한 실시 예들로서, 실행 유닛(108)은 RRE를 발생시킨 제1 스토어 동작(190)을 지시하는 RPS 트레이닝 메시지(272)를 LSRP(104)로 발행할 수 있다. 그러나, 실시 예로서, RPS 트레이닝 메시지(272)는 캐시-미스를 발생시킨 RRE와 관련된 로드 동작(제1 로드 동작(292))의 지시를 포함할 수 있다. 이러한 일 실시 예로서, RPS 트레이닝 메시지(272)는 “안티-트레이닝(anti-train)” LSRP(104)로 구성될 수 있다. 이러한 일 실시 예로서, RPS 트레이닝 메시지(272)는 “RRE를 허락하는” 상태의 제1 스토어 동작(190)의 명령 어드레스와 관련될 수 있다. 이러한 일 실시 예로서, LSRP(104)는 캐시 미스의 지연 때문에 발생된 페널티가 RRE로부터 발생된 페널티보다 더 크거나 작은 것에 대해 판단할 수 있다.
예를 들어, 캐시-미스에 의해 발생된 페널티는 바람직하지 않을 수 있다. 그러나, 캐시-미스에 의해 발생된 페널티는 L1-D 캐시(133)에 저장될 타깃 메모리 어드레스를 발생할 수 있다. 제1 스토어 동작(190)이 첫 번째로 또는 순서대로 실행되었다면, 제1 스토어 동작(190)은 캐시 미스를 발생하고, 페널티를 초래할 것이다. 그러므로, 캐시 미스 페널티는 피할 수 없을 것이고, 가능한 빨리 이른 로드 동작을 수행함으로써, 캐시 미스 페널티는 가능한 빨리 해결될 것이다.
타깃 데이터는 오래된 스토어 동작이 데이터 메모리(132)에 접근을 시도함으로써, 데이터 메모리(132)에 반환되고, 저장될 것이다. 이러한 일 실시 예로서, 캐시 미스 및 RRE 페널티들은 그들의 전반적인 영향을 감소시킬 수 있다. 만약 캐시 미스 및 RRE 페널티들이 연속으로 발생한다면, 그들의 영향은 극대화될 수 있다.
다양한 실시 예들로서, RPS 트레이닝 메시지(272)는 RRE 및 CMI의 발생을 포함할 수 있다. 다른 실시 예로서, RPS트레이닝 메시지(272)는 제1 스토어 동작(190)이 RPS로 간주되어서는 안됨을 지시할 수 있다. 다른 실시 예로서, RPS 트레이닝 메시지(272)는 RRE 메시지(170)의 일부 또는 RRE 메시지(170)로서 포함될 수 있다. RPS 트레이닝 메시지(272)는 전송되지 않을 수 있고, LSRP(104)는 RRE와 관련된 제1 스토어 동작(190)의 명령 어드레스를 발생하지 않을 수 있다.
실시 예로서, 패치 유닛(202)은 제2 스토어 동작(194)을 패치할 수 있다. 다양한 실시 예들로서, LSRP(104)는 제2 스토어 동작(194)이 RPS를 포함하는지 여부에 대해 지시할 수 있다. 다양한 실시 예들로서, LSRP(104)는 이런 예측을 기반으로 할 수 있고, 제3 스토어 동작(194)의 명령 어드레스의 일부분일 수 있다.
이러한 일 실시 예로서, LSRP(104)는 RPS 리스트(114)에 저장된 명령 어드레스들과 제2 스토어 동작(194)의 명령 어드레스를 비교할 수 있다. 제1 스토어 동작(190)은 RRE를 발생할 수 있고, 명령 어드레스(두 개의 스토어 동작들(190, 194)와 공유되는)는 RRE와 관련될 수 있다. 하지만, 제1 스토어 동작(190)은 CMI 또는 다른 완화 표시기와 관련될 수 있다. 이러한 일 실시 예로서, 명령 어드레스는 “허용된 RRE”일 수 있고, 더 일반적으로, 안티-트레이닝된 상태일 수 있다. 그리고, 제2 스토어 동작(194)은 RPS로 고려되지 않을 수 있다.
제2 로드 동작(196)은 패치될 수 있다. 제2 스토어 동작(194) 및 제2 로드 동작(196)은 같은 메모리 어드레스를 타깃으로 할 수 있다. 이러한 일 실시 예로서, 제2 로드 동작(196)은 제2 스토어 동작(194)보다 더 이른 동작일 수 있다. 제2 스토어 동작(194) 및 제2 로드 동작(196)은 실행 유닛(108)에 저장될 수 있고 실행을 기다린다.
도 1에 도시된 실시 예에서, 실행 유닛(108)은 제2 스토어 동작(194) 및 제2 로드 동작(196)이 실행될 때, 제약될 수 있다. 도 2에 도시된 실시 예로부터, 제2 스토어 동작(194)는 RPS가 아니라고 LSRP(104)로부터 확인된다. 이러한 일 실시 에로서, 실행 유닛(104)은 제2 스토어 동작(194)가 실행되기 전에 제2 로드 동작(196)이 실행되는 것을 허용할 수 있다. 이러한 일 실시 예로서, RRE는 가능할 수 있다.
이러한 일 실시 예로서, 타깃 메모리 어드레스가 데이터 메모리(132) 또는 L1-D 캐시(133)로부터 퇴출되면, 제2 로드 동작(196)은 캐시 미스를 발생할 수 있다. 이러한 일 실시 예로서, 캐시 미스 페널티 및 RRE 페널티는 전체 성능 비용이 감소되는 방식으로 발생할 수 있다. 이와 같이, NCL 실행 유닛(108)이 제2 스토어 동작(194) 이전에 이른 로드들을 가져오는 것이 자유롭기 때문에 페널티가 발생하지 않는다.
다양한 실시 예들로서, 실행 유닛(108) 또는 LSRP(104)는 예측 결과들의 세트를 결정하기 위한 지연 가능성의 규칙들의 예측된 설정에 기반한 “RRE 허용” 상태들 또는 “RRE 방지” 상태들과 함께 메모리 스토어 동작(또는 메모리 스토어 동작의 명령 어드레스)과 관련될 수 있다. 다른 실시 예로서, LSRP(104)는 복수의 이전 메모리 동작들에 기반한 상태들을 설정하기 위한 휴리스틱(heuristic) 가중치 방식을 사용할 수 있다.
도 3은 본 발명의 제3 실시 예에 따른 시스템을 보여주는 블록도이다. 실시 예로서, 도 3은 RRE 발생 또는 RRE 때문에 발생하는 비용을 감소하기 위한 시스템(300)을 보여준다. 다양한 실시 예들로서, 시스템(300)은 도 1 및/또는 도 2의 구성들과 유사한 동작들을 수행할 수 있다.
실시 예로서, 시스템(300)은 명령 메모리(130), 패치 유닛(102), 디코드 유닛(106), 실행 유닛(308), 데이터 메모리(132) 및/또는 메인 메모리(134)를 포함할 수 있다. 도 3에 도시된 명령 메모리(130), 패치 유닛(102), 디코드 유닛(106), 데이터 메모리(132) 및/또는 메인 메모리(134)들은 도 1 및 도 2에 도시된 명령 메모리(130), 패치 유닛(102), 디코드 유닛(106), 데이터 메모리(132) 및/또는 메인 메모리(134)들과 유사한 기능을 수행할 수 있다.
그러나, 실시 예로서, 실행 유닛(308)은 LSRP(104)를 포함하거나, LSRP(104)와 통합될 수 있다. 더 나아가, 다양한 실시 예들로서, 실행 유닛(308)은 메모리 동작들(로드, 스토어 등)을 수행할 수 있는 로드?스토어 기능 유닛 블록(load-store function unit block, FUB)(309)를 포함할 수 있다.
더 나아가, 명령 어드레스(152)(전체 또는 일부분) 패치 유닛(102)으로부터 실행 유닛(308)으로 전송될 수 있다. 몇몇 실시 예들로서, 명령 어드레스(152)는 명령 버스(150)를 통해 전송될 수 있다. 실시 예로서, 명령 어드레스(152)는 각각 전송될 수 있다.
도 4는 본 발명의 실시 예에 따른 시스템의 동작을 보여주는 순서도이다. 다양한 실시 예들로서, 기술(400)은 도 1 내지 도 3에 도시된 시스템들로부터 사용될 수 있다. 이는 상기 개시된 주제를 제한하지 않는 몇몇 예시들이다.
블록(402)에서, 상술한 바와 같이, 제1 재동기화 예외는 로드 동작 이후 스토어 동작의 제1 실행으로부터 발생할 수 있다. 다양한 실시 예들로서, 상술한 바와 같이, 스토어 동작은 명령 어드레스와 관련될 수 있다. 다양한 실시 예들로서, 상술된 바와 같이, 블록에 도시된 적어도 하나 이상의 액션(들)(action(s))은 도 1, 도 2, 도 3 및 도 5의 시스템들 또는 장치들 또는 도 1 내지 도 3의 실행 유닛들로부터 수행될 수 있다.
블록(404)에서, 상술된 바와 같이, 재동기화 예측기는 재동기화 예측 스토어와 관련된 명령 어드레스로 트레이닝될 수 있다. 다양한 실시 예들로서, 상술된 바와 같이, 블록에 도시된 적어도 하나 이상의 액션(들)(action(s))은 도 1, 도 2, 도 3 및 도 5의 시스템들 또는 장치들 또는 도1 내지 도 3의 실행 유닛들로부터 수행될 수 있다.
블록(406)에서, 상술된 바와 같이, 스토어 동작의 제2 실행은 제2 재동기화 예측의 발생으로부터 방지될 수 있다. 다양한 실시 예들로서, 상술된 바와 같이, 방지는 재동기화 예측기의 적어도 일부분을 기반으로 할 수 있다. 일 실시 예로서, 제2 재동기화 예측의 발생으로부터 스토어 동작의 제2 실행의 방지는 스토어 동작의 완료하는 제2 실행까지 제2 로드 동작의 실행을 지연을 포함할 수 있다. 제2 로드 동작은 제2 스토어 동작보다 이르게 수행되는 동작이다.
다른 실시 예로서, 만약 로드 동작의 실행이 캐시 미스를 발생하지 않는다면, 재동기화 예측의 발생으로부터 스토어 동작의 제2 실행을 방지하는 것은 제2 재동기화 예측의 발생으로부터 제2 실행의 방지를 포함할 수 있다. 이러한 일 실시 예로서, 만약 로드 동작의 실행이 캐시 미스를 발생한다면, 방지는 제2 재동기화 예측의 발생에 의한 스토어 동작의 제2 실행의 허용을 포함할 수 있다.
다른 실시 예에서, 제2 재동기화 예측의 발생으로부터 스토어 동작의 제2 실행을 방지하는 것은 메모리로부터 스토어 동작의 패치를 포함할 수 있다. 이러한 일 실시 예에서, 방지는 스토어 동작의 명령 어드레스를 재동기화 예측기로 송신을 포함할 수 있다. 이러한 일 실시 예로서, 방지는 스토어 동작이 제2 시간에 발생한다면, 원하지 않은 재동기화 예외가 발생할지 여부에 대해 예측하는 재동기화 예측기로부터 재동기화 예측을 수신할 수 있다. 다양한 실시 예들로서, 블록에 도시된 적어도 하나 이상의 액션(들)(action(s))은 도 1, 도 2, 도 3 및 도 5의 시스템들 또는 장치들 또는 도1 내지 도 3의 실행 유닛들 또는 패치 유닛들 또는 로드/스토어 재동기화 예측기들로부터 수행될 수 있다.
도 5는 본 발명의 실시 예에 따른 처리 시스템을 보여주는 블록도이다. 처리 시스템(500)은 본 발명에 개시된 반도체 장치를 포함할 수 있다.
도 5를 참조하면, 정보 처리 시스템(500)은 본 발명에 개시된 원리들을 따르는 적어도 하나 이상의 장치들을 포함할 수 있다. 다른 실시 예로서, 정보 처리 시스템(500)은 본 발명에 개시된 원리들을 따르는 적어도 하나 이상의 기술들을 사용하거나 실행 할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(400)은 휴대용 컴퓨터, 사무용 컴퓨터, 워크스테이션(workstation), 서버(server), 블레이드 서버(blade server), 개인 휴대 정보 단말기, 스마트 폰(smart phone), 테블릿(tablet), 및 다른 적합한 컴퓨터들 또는 가상 기계 또는 가상 컴퓨팅(computing) 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예들로서, 정보 처리 시스템(500)은 유저(user, 미 도시)로부터 사용될 수 있다.
개시된 주제와 관련된 정보 처리 시스템(500)은 더 나아가 중앙 처리 유닛(CPU), 로직(logic), 또는 프로세서(510)를 포함할 수 있다. 몇몇 예시들로서, 프로세서(510)는 하나 이상의 기능 단위 블록들(FUBs) 또는 조합 로직 블록들(CLBs)(515)를 포함할 수 있다. 이러한 일 실시 예로서, 조합 로직 블록은 다양한 불 논리 동작들(Boolean logic operations)(예를 들어, NAND, NOR, NOT, XOR, 등) 안정 로직 장치들(예를 들어, 플립-플롭들(flip-flops), 래치들(latches) 등), 다른 로직 장치들 또는 이들을 결합한 장치들을 포함할 수 있다. 이러한 조합 논리 동작들은 바라던 결과를 성취하기 위한 입력 신호들을 처리하는 단순하거나 복잡한 방식을 포함할 수 있다.
동기 조합 논리 연산의 몇몇 예시들은 예시적인 실시 예를 설명하면서, 개시된 요지는 이에 한정되지 않고, 비 동기 동작 또는 이들을 혼합한 것을 포함할 수 있다고 이해된다. 일 실시 예로서, 조합 논리 동작은 복수의 상보형 금속 산화 반도체(CMOS) 트랜지스터들로 구성될 수 있다. 다양한 실시 예들로서, 이러한 CMOS 트랜지스터들은 논리 동작을 수행하기 위한 게이트들로 구성될 수 있다. 다른 기술들은 사용될 수 있고, 개시된 요지의 스코프(scope) 내에 있다고 이해된다.
개시된 요지에 따른 정보 처리 시스템(500)은 휘발성 메모리(520)(예를 들어, 랜덤 액세스 메모리(Random Access Memory, RAM), 등)를 더 포함할 수 있다. 개시된 요지에 따른 정보 처리 시스템(500)은 비 휘발성 메모리(530)(예를 들어, 하드 드라이브(hard drive), 광 메모리, NAND 또는 플래시 메모리(Flash memory), 등)를 더 포함할 수 있다. 몇몇 실시 예들로서, 휘발성 메모리(520), 비 휘발성 메모리(530), 또는 그것의 부분들 또는 결합은 "저장 매체"라고 할 수 있다. 다양한 실시 예들로서, 휘발성 메모리(520) 및/또는 비 휘발성 메모리(530)는 반 영구적이거나 영구적인 형태로 데이터를 저장할 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(500)은 정보 처리 시스템(400)의 일부 및 통신 네트워크를 통해 통신할 수 있도록 구성된 하나 이상의 네트워크 인터페이스들(network interfaces)(540)을 포함할 수 있다. (와이-파이(Wi-Fi) 프로토콜은 전자 전기 기술자 협회(IEEE)802.11g, IEEE 802.11n 등을 포함할 수 있다. 하지만 이에 한정되지 않는다. 무선 프로토콜은 IEEE 802.16m, GSM에 대한 향상된 데이터 레이트(Global System for Mobile Communication) 에볼루션(Evolution)(EDGE), 이볼브드(Evolved) 고속 패킷 접속(HSPA+)등을 포함할 수 있다. 유선 프로토콜은 IEEE 802.3, 파이버 채널(Fibre Channel), 전력선 통신망(홈 플러그(Home Plug), IEEE1901)등을 포함할 수 있다.
개시된 요지에 따른 정보 처리 시스템(500)은 사용자 인터페이스부(550)(예를 들어, 디스플레이 어댑터(display adapter, 햅틱 인터페이스(haptic interface), 인간 인터페이스 장치, 등)를 더 포함할 수 있다. 다양한 실시 예들로서, 사용자 인터페이스부(450)는 사용자로부터 입력을 받고/거나 사용자에게 출력을 공급할 수 있다. 다른 종류의 장치들은 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 공급되는 피드백(feedback)은 시각 피드백, 청각 피드백, 또는 촉각 피드백 및 사용자가 청각, 말, 또는 촉각과 같은 임의의 형태를 수신함으로써 감각적 피드백의 임의의 형태일 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(500)은 하나 이상의 다른 장치들 또는 하드웨어 요소들(560)(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 장치, 등)을 포함할 수 있다. 상술된 내용은 본 발명을 설명하기 위한 예시이다. 따라서, 본 발명은 이에 한정되지 않는다.
개시된 요지와 관련된 정보 처리 시스템(500)은 하나 이상의 시스템 버스들(system buses)(505)을 더 포함할 수 있다. 이러한 일 실시 예로서, 시스템 버스(405)는 프로세서(410), 휘발성 메모리(420), 비 휘발성 메모리(530), 네트워크 인터페이스(440), 사용자 인터페이스부(550) 및 하나 이상의 하드웨어 요소들(460)을 통신할 수 있게 연결할 수 있다. 프로세서(510)로부터 진행되는 데이터, 또는 비 휘발성 메모리(530)의 외부로부터 입력되는 데이터는 비 휘발성 메모리 장치(430) 또는 휘발성 메모리 장치(520)에 저장될 수 있다.
다양한 실시 예들로서, 정보 처리 시스템(500)은 하나 이상의 소프트웨어(software) 요소들(570)을 실행 또는 포함할 수 있다. 몇몇 실시 예들로서, 소프트웨어 요소들(570)은 운영 체제(OS) 및/또는 어플리케이션(application)을 포함할 수 있다. 몇몇 실시 예들로서, OS는 어플리케이션을 위한 하나 이상의 서비스들 및 어플리케이션과 정보 처리 시스템(500)의 다양한 하드웨어 요소들(예를 들어, 프로세서(510), 네트워크 인터페이스(540), 등) 사이의 중개자로서 동작 또는 운영하도록 구성될 수 있다.
이러한 일 실시 예로서, 정보 처리 시스템(500)은 국부적으로 설치될 수 있고(예를 들어, 비 휘발성 메모리(530) 내에), 프로세서(510)로부터 바로 실행되고, OS와 바로 상호작용하는 하나 이상의 네이티브 어플리케이션들(native applications)을 포함할 수 있다. 이러한 일 실시 예로서, 네이티브 어플리케이션들은 프로세서(410)에 의해 실행되는 코드 내에 오브젝트 코드(object code) 또는 변환 소스로 구성된 스크립트(script) 해석기(예를 들어, C셀(csh), 애플스크립트(AppleScript), 오토 핫키(Auto Hotkey), 등) 또는 가상 실행 기기(VM)(예를 들어, 자바 가상 머신(Java Virtual Machine), 마이크로소프트 공용 언어 런타임(Microsoft Common Language Runtime), 등)을 포함할 수 있다.
상술된 반도체 장치들은 다양한 패키징(packaging) 기술들을 사용하여 캡슐화될 수 있다. 예를 들어, 개시된 요지의 이론들을 따라 구성된 반도체 장치들은 패키지 온 패키지(package on package)(POP) 기술, 볼 그리드 어레이들(ball grid arrays)(BGAs) 기술, 칩 스케일 패키지들(chip scale packages)(CSPs) 기술, 플라스틱 리디드 칩 케리어(plastic leaded chip carrier)(PLCC) 기술, 플라스틱 듀얼 인-라인 패키지(plastic dual in-line package)(PDIP) 기술, 다이 인 와플 팩(die in waffle pack) 기술, 다이 인 와퍼 폼(die in wafer form) 기술, 칩 온 보드(chip on board)(COB) 기술, 세라믹 듀얼 인-라인 패키지(ceramic dual in-line package)(CERDIP) 기술, 플라스틱 메트릭 쿼드 플랫 패키지(plastic metric quad flat package)(PMQFP) 기술, 플라스틱 쿼드 플랫 패키지(plastic quad flat package)(PQFP) 기술, 스몰 아웃라인 패키지(small outline package)(SOIC) 기술, 슈링크 스몰 아웃라인 패키지(shrink small outline package)(SSOP) 기술, 씬 스몰 아웃라인 패키지(thin small outline package) (TSOP) 기술, 씬 쿼드 플랫 패키지(thin quad flat package) (TQFP) 기술, 시스템 인 패키지(system in package) (SIP) 기술, 멀티칩 패키지(multichip package)(MCP) 기술, 와퍼-레벨 페브리케이트 패키지(wafer-level fabricated package)(WFP) 기술, 와퍼-레벨 프로세스 스텍 패키지(wafer-level processed stack package)(WSP) 기술 또는 당업자에게 공지되어있을 것 같은 다른 방법 중 어느 하나를 사용하여 캡슐화될 수 있다.
방법 단계들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 기능들을 수행하는 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세스들로부터 수행될 수 있다. 예를 들어, FPGA(필드 프로그래머블 게이트 어레이(field programmable gate array)) 또는 ASIC(어플리케이션-스페시픽 인터게이트 서킷(application-specific intergated circuit))와 같은 특수 목적 논리 회로로부터 방법 단계들은 수행될 수 있고, 장치는 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 시스템 190: 명령들
102: 실행부 192: PF 데이터
104: 프리 패치부 194: 가상 어드레스
106: 메모리 시스템 196: 물리적 어드레스
112: 어드레스 테이블 204: 프리-패치부
110: 변환 색인 버퍼 236: L3 캐시
114: L1 필 버퍼 238: 데이터
116: L1 캐시 242: 캐시 프리-패쳐
118: 데이터 244: 프리-패치 스케줄러
122: L2 프리-패치 요청 버퍼 400: 정보 처리 시스템
124: L2 필 버퍼 405: 버스
126: L2 캐시 410: 프로세서 및/또는 로직
128: 데이터 420: 휘발성 메모리
136: 메인 메모리 430: 비휘발성 메모리
138: 데이터 440: 네트워크 인터페이스
142: 캐시 프리-패쳐 450: 사용자 인터페이스부
143: PA 체커 460: 다른 하드웨어 장치들
144: 프리-패쳐 스케줄러 470: 소프트웨어

Claims (10)

  1. 메모리 어드레스에 제1 메모리 읽기 동작 및 상기 메모리 어드레스에 제1 메모리 쓰기 동작을 발행하기 위한 패치 유닛;
    상기 제1 메모리 읽기 동작을 실행하고, 상기 제1 메모리 읽기 동작은 재동기화 예외(resynchronization exception)를 발생하는 실행 유닛; 및
    재동기화 예외와 관련된 명령 어드레스 및 재동기화 예측 스토어(resynchronization predicted store)로 구성된 상기 명령 어드레스에 메모리 읽기 동작이 저장되는 경우를 결정하는 캐시 재동기화 예측기(cache resynchronization predictor)를 포함하되,
    상기 제1 메모리 읽기 동작은 상기 명령 어드레스에 저장되는 장치.
  2. 제 1 항에 있어서,
    상기 실행 유닛은,
    상기 제1 메모리 읽기 동작 전에 상기 제1 메모리 쓰기 동작을 수행하고,
    캐시-미스를 발생하는 상기 제1 메모리 쓰기 동작을 실행하는 경우를 결정하고;
    상기 캐시 재동기화 예측기는,
    상기 캐시 미스를 발생하는 상기 제1 메모리 쓰기 동작을 실행하는 경우, 상기 재동기화 예외에 의해 발생한 상기 명령 어드레스에 저장되는 상기 제1 메모리 읽기 동작에도 불구하고 상기 명령 어드레스를 재동기화 예측과 관련 짓지 않는 장치.
  3. 제 1 항에 있어서,
    상기 패치 유닛은,
    상기 메모리 어드레스에 제2 메모리 읽기 동작 및 제2 메모리 쓰기 동작을 발행하고, 상기 제2 메모리 읽기 동작은 상기 명령 어드레스에 저장되고;
    상기 캐시 재동기화 예측기는 상기 제2 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성되었는지 여부를 판단하고,
    상기 실행 유닛은 상기 제2 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성된다면, 상기 제2 메모리 읽기 동작 후 상기 제2 메모리 쓰기 동작을 실행하는 장치.
  4. 제 1 항에 있어서,
    상기 캐시 재동기화 예측기는 메모리 읽기 동작으로부터 발생된 상기 예측 재동기화 예외로부터 발생하는 지연이 메모리 쓰기 동작으로부터 발생하는 예측 지연보다 더 큰지 여부를 판단하고,
    더 크다고 결정되면, 상기 재동기화 예측 스토어를 포함하는 상기 메모리 읽기 동작을 결정하고,
    더 크지 않다고 결정되면, 상기 재동기화 예측 스토어를 포함하지 않는 상기 메모리 읽기 동작을 결정하는 장치.
  5. 제 1 항에 있어서,
    상기 캐시 재동기화 예측기는, 알 수 없음, 재동기화 예외 허용, 재동기화 예외 회피, 및 예측되는 재동기화 예외 없음으로 구성된 그룹으로부터 선택된 상기 명령 어드레스와 관련된 하나의 상태를 포함하는 장치.
  6. 제 1 항에 있어서,
    상기 실행 유닛은 상기 재동기화 예외가 발생하지 않는 상기 명령 어드레스로부터 제2 메모리 읽기 동작을 실행하고,
    상기 재동기화 예외에 응답하는 상기 캐시 재동기화 예측기는, 상기 재동기화 예외와 관련되지 않은 상기 명령 어드레스를 포함하는 장치.
  7. 메모리 어드레스로 메모리 읽기 동작 및 메모리 쓰기 동작을 발행하는 패치 유닛;
    재동기화 예외(resynchronization exception)에 의해 발생된 명령 어드레스로부터 이전 메모리 읽기 동작 여부의 적어도 일부분을 기반으로 하고, 재동기화 예측 스토어(resynchronization exception store)로 구성된 상기 메모리 읽기 동작의 여부를 판단하는 캐시 재동기화 예측기(cache resynchronization predictor); 및
    상기 메모리 읽기 동작이 상기 재동기화 예측 스토어로 구성된 경우, 상기 메모리 읽기 동작 후 상기 메모리 쓰기 동작을 실행하는 실행 유닛을 포함하되,
    상기 메모리 읽기 동작은 상기 명령 어드레스에 저장되는 장치.
  8. 제 7 항에 있어서,
    상기 실행 유닛은,
    상기 재동기화 예외가 발생하는 상기 명령 어드레스로부터 상기 이전 메모리 읽기 동작이 실행되고;
    상기 캐시 재동기화 예측기는 상기 재동기화 예외에 응답하고, 상기 재동기화 예외와 관련된 상기 명령 어드레스를 포함하는 장치.
  9. 제 7 항에 있어서,
    상기 실행 유닛은,
    상기 명령 어드레스로부터 상기 이전 메모리 읽기 동작을 실행하고,
    상기 이전 메모리 읽기 동작의 상기 실행이 상기 재동기화 예외를 발생한 경우, 상기 캐시 재동기화 예측기로 재동기화 피드백 신호를 발생하는 장치.
  10. 제1 로드 동작 후 명령 어드레스와 관련된 스토어 동작의 제1 실행으로부터 제1 재동기화 예외가 발생하는 단계;
    재동기화 예측 스토어(resynchronization prediction store)와 관련된 상기 명령 어드레스와 관련된 재동기화 예측기(resynchronization predictor)를 트레이닝하는 단계; 및
    상기 재동기화 예측기의 적어도 일부분에서라도 제2 재동기화 예외의 발생으로부터 상기 스토어 동작의 제2 실행을 방지하는 단계를 포함하는 동작 방법.

KR1020140188114A 2013-12-31 2014-12-24 캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법 KR20150079429A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361922803P 2013-12-31 2013-12-31
US61/922,803 2013-12-31
US14/307,444 US9274970B2 (en) 2013-12-31 2014-06-17 Method and apparatus for handling processor read-after-write hazards with cache misses
US14/307,444 2014-06-17

Publications (1)

Publication Number Publication Date
KR20150079429A true KR20150079429A (ko) 2015-07-08

Family

ID=53481917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140188114A KR20150079429A (ko) 2013-12-31 2014-12-24 캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9274970B2 (ko)
KR (1) KR20150079429A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020176828A1 (en) * 2019-02-28 2020-09-03 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
KR102152973B1 (ko) 2020-03-05 2020-09-07 고연우 월류방지벽의 설치구조
US10908821B2 (en) 2019-02-28 2021-02-02 Micron Technology, Inc. Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US10970222B2 (en) 2019-02-28 2021-04-06 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US11288199B2 (en) 2019-02-28 2022-03-29 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150261631A1 (en) * 2014-03-12 2015-09-17 Kabushiki Kaisha Toshiba Memory system and memory controller
US11099846B2 (en) 2018-06-20 2021-08-24 Advanced Micro Devices, Inc. Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability
US11681533B2 (en) 2019-02-25 2023-06-20 Intel Corporation Restricted speculative execution mode to prevent observable side effects

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987561A (en) * 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5781752A (en) 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US6694424B1 (en) 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
US7590825B2 (en) 2006-03-07 2009-09-15 Intel Corporation Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
US8521992B2 (en) 2009-12-22 2013-08-27 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020176828A1 (en) * 2019-02-28 2020-09-03 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
US10908821B2 (en) 2019-02-28 2021-02-02 Micron Technology, Inc. Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US10970222B2 (en) 2019-02-28 2021-04-06 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US11106609B2 (en) 2019-02-28 2021-08-31 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
US11288199B2 (en) 2019-02-28 2022-03-29 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system
US11675705B2 (en) 2019-02-28 2023-06-13 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US11914520B2 (en) 2019-02-28 2024-02-27 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system
KR102152973B1 (ko) 2020-03-05 2020-09-07 고연우 월류방지벽의 설치구조

Also Published As

Publication number Publication date
US20150186285A1 (en) 2015-07-02
US9274970B2 (en) 2016-03-01

Similar Documents

Publication Publication Date Title
KR20150079429A (ko) 캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법
US20210406027A1 (en) Advanced processor architecture
US9891923B2 (en) Loop predictor-directed loop buffer
US9851979B2 (en) Split-level history buffer in a computer processing unit
CN106951217B (zh) 由易于得到的预取器准确性动态控制的指令预取器
KR20150110337A (ko) 미스 후 미스의 검색을 가속화하기 위해 레벨2 캐시에서 레벨2 분기 목적지 버퍼를 분리하는 장치 및 그 방법
CN114201219B (zh) 指令调度方法、指令调度装置、处理器及存储介质
CN110806900B (zh) 一种访存指令处理方法及处理器
CN114168202B (zh) 指令调度方法、指令调度装置、处理器及存储介质
WO2018059337A1 (zh) 数据处理装置和方法
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
KR20190092245A (ko) 엣지 특성이 검증된 마이크로 분기 타깃 버퍼를 이용하여 컴퓨터 프로세서의 전력 소모를 감소시키는 시스템 및 방법
US10372902B2 (en) Control flow integrity
US8984263B2 (en) Information processing device and emulation processing program and method
US11093401B2 (en) Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
US10642621B2 (en) System, apparatus and method for controlling allocations into a branch prediction circuit of a processor
US20230195649A1 (en) Validation of store coherence relative to page translation invalidation
CN109614146B (zh) 一种局部跳转指令取指方法及装置
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
WO2022051161A1 (en) Alternate path for branch prediction redirect
CN115269011A (zh) 指令执行单元、处理单元及相关装置和方法
CN112130905A (zh) 计算装置和计算系统
JP3161711B2 (ja) 情報処理装置
WO2017019008A1 (en) Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction
JP2014056359A (ja) マイクロコンピュータ及び命令処理方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid