KR20180037980A - Pat(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측 - Google Patents

Pat(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측 Download PDF

Info

Publication number
KR20180037980A
KR20180037980A KR1020187004118A KR20187004118A KR20180037980A KR 20180037980 A KR20180037980 A KR 20180037980A KR 1020187004118 A KR1020187004118 A KR 1020187004118A KR 20187004118 A KR20187004118 A KR 20187004118A KR 20180037980 A KR20180037980 A KR 20180037980A
Authority
KR
South Korea
Prior art keywords
memory command
instruction
entry
detected
pat
Prior art date
Application number
KR1020187004118A
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 KR20180037980A publication Critical patent/KR20180037980A/ko

Links

Images

Classifications

    • 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
    • G06F9/3842Speculative instruction execution
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

PAT(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측이 개시된다. 일 양상에서, 명령 프로세싱 회로는 메모리 명령의 어드레스를 각각 포함하는 엔트리들을 포함하는 PAT에 액세스한다. 명령 스트림에서 메모리 명령을 검출하면, 명령 프로세싱 회로는, PAT가 메모리 명령의 어드레스를 갖는 엔트리를 포함하는지 여부를 결정한다. 포함한다면, 명령 프로세싱 회로는, 메모리 명령 펀트를 선점하기 위해, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 이전에 효과를 발생시키는 것을 방지한다. 일부 양상들에서, 명령 프로세싱 회로는, 펜딩 메모리 명령의 실행 시에, 검출된 메모리 명령과 연관된 위협이 발생했는지 여부를 결정할 수 있다. 발생했다면, 검출된 메모리 명령에 대한 엔트리가 PAT에서 생성된다.

Description

PAT(PUNT AVOIDANCE TABLE)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측
[0001] 본 출원은 2015년 8월 14일에 출원되고 발명의 명칭이 "PREDICTING MEMORY INSTRUCTION PUNTS IN A COMPUTER PROCESSOR USING A PUNT AVOIDANCE TABLE (PAT)"인 미국 가특허출원 일련번호 제62/205,400호를 우선권으로 주장하며, 상기 가특허출원의 내용은 그 전체가 인용에 의해 본원에 통합된다.
[0002] 본 출원은 또한 2015년 9월 24일에 출원되고 발명의 명칭이 "PREDICTING MEMORY INSTRUCTION PUNTS IN A COMPUTER PROCESSOR USING A PUNT AVOIDANCE TABLE (PAT)"인 미국 특허출원 일련번호 제14/863,612호를 우선권으로 주장하며, 상기 특허출원의 내용은 그 전체가 인용에 의해 본원에 통합된다.
[0003] 본 개시의 기술은 일반적으로 OOO(out-of-order) 컴퓨터 프로세서에서 프로세싱 메모리 명령들에 관한 것이고, 특히 위협들로 인한 명령들의 리페칭(re-fetching) 및 재실행을 회피하는 것에 관한 것이다.
[0004] OOO(out-of-order) 프로세서들은, 컴퓨터 프로그램의 명령들의 등장 순서와 무관하게, 각각의 명령의 입력 오퍼랜드들의 이용가능성에 의해 결정되는 순서로 컴퓨터 프로그램 명령들을 실행할 수 있는 컴퓨터 프로세서들이다. 명령들을 비순차적으로 실행함으로써, OOO 프로세서는, 그렇지 않으면 OOO 프로세서가 완료하기 위해 데이터 액세스 동작들을 대기하는 동안 낭비되었을 프로세서 클럭 사이클들을 완전히 활용할 수 있다. 예를 들어, 더 오래된 프로그램 명령에 대한 입력 데이터가 리트리브되는 동안 "중지"(즉, 의도적으로 프로세싱 지연을 도입함)해야 하는 것 대신에, OOO 프로세서는 즉시 실행할 수 있는 더 최근의 페칭된 명령을 실행하는 것으로 진행할 수 있다. 이러한 방식으로, 프로세서 클럭 사이클들은 OOO 프로세서에 의해 더 생산적으로 활용될 수 있어서, OOO 프로세서가 프로세서 클럭 사이클마다 프로세싱할 수 있는 명령들의 수에서의 증가를 도출할 수 있다.
[0005] 그러나, 메모리 명령들의 비순차적 실행은 "펀트들"의 발생을 도출할 수 있다. 펀트들은, 검출된 위협으로 인해 하나 이상의 메모리 명령들이 리페칭 및 재실행되어야 하는 환경들이다. 예를 들어, 펀트는 비제한적인 예들로서, RAW(read-after-write) 위협, RAR(read-after-read) 위협 및/또는 자원 제약 위협, 예를 들어, 이용가능한 로드(load) 큐 엔트리들 또는 저장 큐 엔트리들의 부족의 발생으로부터 초래될 수 있다. 메모리 명령들의 리페칭 및 재실행은 프로세서 성능을 감소시킬 수 있고, 더 큰 전력 소비를 초래할 수 있다.
[0006] 상세한 설명에 개시된 양상들은 PAT(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들을 예측하는 것을 포함한다. 이와 관련하여, 일 양상에서, 컴퓨터 프로세서에서 명령 프로세싱 회로는 메모리 명령 펀트들을 예측 및 선점하기 위해 PAT에 액세스한다. 본원에 사용되는 바와 같이, "펀트"는, 메모리 명령의 비순차적 실행으로부터 발생하는 위협 조건에 대한 응답으로, 컴퓨터 프로세서에서 메모리 명령 및 하나 이상의 더 오래된 메모리 명령들을 리페칭 및 재실행하는 프로세스를 지칭한다. PAT는, 이전에 비순차적으로 실행되었고 메모리 명령 펀트에서 초래된 메모리 명령의 어드레스를 각각 포함하는 하나 이상의 엔트리들을 포함한다. 컴퓨터 프로그램의 실행 동안, 명령 프로세싱 회로는 명령 스트림에서 메모리 명령을 검출하고, PAT가 메모리 명령에 대응하는 어드레스를 갖는 엔트리를 포함하는지 여부를 결정한다. PAT가 메모리 명령에 대응하는 어드레스를 갖는 엔트리를 포함하면, 명령 프로세싱 회로는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지함으로써 펀트를 선점할 수 있다. 비제한적인 예들로서, 일부 양상들의 명령 프로세싱 회로는 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령의 순차적 디스패치를 수행할 수 있거나, 또는 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령이 완료될 때까지 검출된 메모리 명령에 의한 데이터의 조기 리턴을 방지할 수 있다. 이러한 방식으로, 명령 프로세싱 회로는 메모리 명령 펀트들의 발생을 감소시킬 수 있고, 따라서 개선된 프로세서 성능을 제공할 수 있다.
[0007] 추가로, 명령 프로세싱 회로에 의해 직면되는 위협이 RAW(read-after-write) 위협인 일부 예시적인 양상들에서, 명령 프로세싱 회로는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 저장 명령들 전에 효과를 발생시키는 것을 방지할 수 있다. 다른 예시적인 양상으로서, 명령 프로세싱 회로에 의해 직면되는 위협이 RAR(read-after-read) 위협인 경우, 명령 프로세싱 회로는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 로드 명령들 전에 효과를 발생시키는 것을 방지할 수 있다. 위협이 자원 제약 위협인 양상들의 경우, 명령 프로세싱 회로는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 명령들 전에 효과를 발생시키는 것을 방지할 수 있다.
[0008] 다른 양상에서, OOO 컴퓨터 프로세서의 명령 프로세싱 회로가 제공된다. 명령 프로세싱 회로는 실행 파이프라인의 프론트-엔드 회로에 통신가능하게 커플링되고, 복수의 엔트리들을 제공하는 PAT를 포함한다. 명령 프로세싱 회로는, 검출된 메모리 명령의 어드레스가 PAT의 복수의 엔트리들 중 일 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 검출된 메모리 명령이, 메모리 명령 펀트를 선점하기 위해 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하도록 구성된다.
[0009] 다른 양상에서, 명령 프로세싱 회로는 OOO 컴퓨터 프로세서에 제공된다. 명령 프로세싱 회로는 PAT에서 복수의 엔트리들을 제공하기 위한 수단을 포함한다. 명령 프로세싱 회로는 또한, 검출된 메모리 명령의 어드레스가 PAT의 복수의 엔트리들 중 일 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 검출된 메모리 명령이, 메모리 명령 펀트를 선점하기 위해 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하기 위한 수단을 포함한다.
[0010] 다른 양상에서, 메모리 명령 펀트들을 예측하기 위한 방법이 제공된다. 방법은 명령 스트림에서 메모리 명령을 검출하는 단계를 포함한다. 방법은, 검출된 메모리 명령의 어드레스가 PAT의 엔트리에 존재하는지 여부를 결정하는 단계를 더 포함한다. 방법은 또한, 검출된 메모리 명령의 어드레스가 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 메모리 명령 펀트를 선점하기 위해, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하는 단계를 포함한다.
[0011] 다른 양상에서, 컴퓨터 실행가능 명령들이 저장된 비일시적 컴퓨터 판독가능 매체가 제공되며, 명령들은 프로세서에 의해 실행되는 경우 프로세서로 하여금 명령 스트림에서 메모리 명령을 검출하게 한다. 저장된 컴퓨터 실행가능 명령들은 추가로, 프로세서로 하여금, 검출된 메모리 명령의 어드레스가 PAT의 엔트리에 존재하는지 여부를 결정하게 한다. 저장된 컴퓨터 실행가능 명령들은 또한, 프로세서로 하여금, 검출된 메모리 명령의 어드레스가 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 메모리 명령 펀트를 선점하기 위해, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하게 한다.
[0012] 도 1은 PAT(punt avoidance table)를 사용하여 메모리 명령 펀트들을 예측하도록 구성되는 명령 프로세싱 회로를 포함하는 예시적인 OOO(out-of-order) 컴퓨터 프로세서의 블록도이다.
[0013] 도 2는 도 1의 명령 프로세싱 회로의 예시적인 PAT의 엔트리들을 예시하는 블록도이다.
[0014] 도 3a 내지 도 3c는, 도 1의 PAT에서 엔트리를 설정하고, 메모리 명령을 검출하는 것에 대한 응답으로 후속적으로 메모리 명령 펀트를 선점하기 위한, 도 1의 명령 프로세싱 회로의 예시적인 통신 흐름들을 예시한다.
[0015] 도 4a 내지 도 4c는 명령 프로세싱 회로의 PAT를 사용하여 메모리 명령 펀트들을 예측하는 도 1의 명령 프로세싱 회로의 예시적인 동작들을 예시하는 흐름도들이다.
[0016] 도 5는 PAT를 사용하여 메모리 명령 펀트들을 예측하도록 구성되는 도 1의 명령 프로세싱 회로를 포함할 수 있는 예시적인 프로세서 기반 시스템의 블록도이다.
[0017] 이제 드로잉 도면들을 참조하면, 본 개시의 일부 예시적인 양상들이 설명된다. 용어 "예시적인"은, "예, 예증 또는 예시로서 기능하는" 것을 의미하도록 본 명세서에서 사용된다. 본 명세서에서 "예시적인" 것으로 설명되는 임의의 양상은 반드시 다른 양상들에 비해 선호되거나 유리한 것으로 해석될 필요는 없다.
[0018] 상세한 설명에 개시된 양상들은 PAT(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들을 예측하는 것을 포함한다. 이와 관련하여, 도 1은 명령 프로세싱 유사성을 증가시키기 위해 명령들의 비순차적 프로세싱을 제공하는 예시적인 OOO(out-of-order) 컴퓨터 프로세서(100)의 블록도이다. 아래에서 더 상세히 논의되는 바와 같이, OOO 컴퓨터 프로세서(100)는 메모리 명령 펀트들을 예측하기 위해 PAT(104)에 액세스하는 명령 프로세싱 회로(102)를 포함한다. 본원에서 사용되는 바와 같은 "메모리 명령"이라는 용어는 일반적으로 비제한적인 예들로서, 메모리 로드 명령들 및/또는 메모리 저장 명령들을 지칭한다. OOO 컴퓨터 프로세서(100)는 다른 엘리먼트들 중, 공지된 디지털 로직 엘리먼트들, 반도체 회로들, 프로세싱 코어들 및/또는 메모리 구조들 중 임의의 하나 또는 이들의 조합들을 포함할 수 있다. 본원에 설명된 양상들은 엘리먼트들의 임의의 특정 배열로 제한되지 않으며, 개시된 기술들은 반도체 다이들 또는 패키지들 상의 다양한 구조들 및 레이아웃들로 용이하게 확장될 수 있다.
[0019] OOO 컴퓨터 프로세서(100)는 메모리 인터페이스 회로(106), 명령 캐시(108), 및 데이터 캐시(112)와 로드/저장 큐(114)를 포함하는 로드/저장 유닛(110)을 포함한다. 일부 양상들에서, 데이터 캐시(112)는 비제한적인 예로서 온-칩 레벨 1(L1) 데이터 캐시를 포함할 수 있다. OOO 컴퓨터 프로세서(100)는 명령 프로세싱 회로(102)를 포함하는 실행 파이프라인(116)을 더 포함한다. 명령 프로세싱 회로(102)는 프론트-엔드 회로(118), 실행 유닛(120) 및 완료 유닛(122)을 제공한다. OOO 컴퓨터 프로세서(100)는 추가적으로, 하나 이상의 범용 레지스터들(GPR들)(126), 프로그램 카운터(128) 및 링크 레지스터(130)를 포함하는 레지스터들(124)을 포함한다. ARM® ARM7™ 아키텍처를 이용하는 것들과 같은 일부 양상들에서, 링크 레지스터(130)는 도 1에 도시된 바와 같은 GPR들(126) 중 하나이다. 대안적으로, IBM® PowerPC® 아키텍처를 활용하는 것들과 같은 일부 양상들은, 링크 레지스터(130)가 GPR들(126)과 별개인 것을 제공할 수 있다(미도시).
[0020] 예시적인 동작에서, 실행 파이프라인(116)의 프론트-엔드 회로(118)는, 비제한적인 예로서 일부 양상들에서 온-칩 레벨 1(L1) 캐시일 수 있는 명령 캐시(108)로부터 명령들(미도시)을 페칭한다. 페칭된 명령들은 프론트-엔드 회로(118)에 의해 디코딩되고 실행 유닛(120)에 발행된다. 실행 유닛(120)은 발행된 명령들을 실행하고, 완료 유닛(122)은 실행된 명령들을 리타이어(retire)한다. 일부 양상들에서, 완료 유닛(122)은 레지스터들(124) 중 하나 이상에 실행 결과들을 저장하는 재기록 메커니즘(미도시)을 포함할 수 있다. 실행 유닛(120) 및/또는 완료 유닛(122) 각각은 하나 이상의 순차적인 파이프라인 스테이지들을 포함할 수 있음을 이해해야 한다. 도 1의 예에서, 프론트-엔드 회로(118)는, 다수의 명령들이 동시에 페칭 및 디코딩되게 하는 하나 이상의 페칭/디코딩 파이프라인 스테이지들(132)을 포함한다. 실행 유닛(120)으로의 디스패치를 펜딩하는 페치된 명령들을 유지하기 위한 명령 큐(134)는 페칭/디코딩 파이프라인 스테이지들(132) 중 하나 이상에 통신가능하게 커플링된다.
[0021] 실행 파이프라인(116)의 명령들을 프로세싱하는 동안, 명령 프로세싱 회로(102)는, 명령들이 페칭되는 프로그램 순서와 상이한 순서로, 메모리 로드 명령들 및/또는 메모리 저장 명령들과 같은 메모리 명령들을 실행할 수 있다. 그 결과, 일부 환경들 하에서, 메모리 명령들의 비순차적 실행은, 검출된 위협으로 인해 메모리 명령 및 하나 이상의 더 오래된 메모리 명령들이 리페칭 및 재실행되어야 하는 메모리 명령 "펀트들"의 발생을 초래할 수 있다. 예를 들어, 동일한 메모리 어드레스에 대한 더 오래된 메모리 저장 명령 이전에 실행되는 더 새로운 메모리 로드 명령은 RAW 위협을 초래할 수 있어서, 메모리 로드 명령 및 메모리 저장 명령이 리페칭 및 재실행되도록 요구할 수 있다. 유사하게, 동일한 메모리 어드레스에 대한 더 오래된 메모리 로드 명령 이전에 실행되는 더 새로운 메모리 로드 명령은 RAR 위협이 발생하게 할 수 있어서, 메모리 로드 명령들 둘 모두의 리페칭 및 재실행을 필요로 할 수 있다. 일부 양상들에서, 더 새로운 메모리 로드 명령들은 모든 이용가능한 자원들(예를 들어, 비제한적인 예들로서, 로드 큐 엔트리들(미도시) 또는 저장 큐 엔트리들(미도시))을 소모할 수 있어서, 더 오래된 메모리 명령들이 실행되는 것을 방지할 수 있어서, 모든 펜딩 메모리 명령들이 리페칭 및 재실행되도록 요구할 수 있다. 이러한 환경들 각각에서, 메모리 명령들의 리페칭 및 재실행은 프로세서 성능에 부정적으로 영향을 미칠 수 있고, 더 큰 전력 소비를 초래할 수 있다.
[0022] 이와 관련하여, 도 1의 명령 프로세싱 회로(102)는 메모리 명령 펀트들을 예측하기 위한 PAT(104)를 포함한다. 명령 프로세싱 회로(102)는 실행 파이프라인(116) 내에서 프로세싱되고 있는 명령 스트림(미도시)에서 메모리 명령(미도시)을 검출하도록 구성된다. 메모리 명령이 명령 프로세싱 회로(102)의 프론트-엔드 회로(118)에 의해 페칭될 때, 명령 프로세싱 회로(102)는 PAT(104)를 참조한다. PAT(104)는 하나 이상의 엔트리들(미도시)을 포함한다. PAT(104)의 각각의 엔트리는 이전에-검출된 메모리 명령의 어드레스를 포함할 수 있고, 이의 디스패치 및 실행은 위협 및 후속 메모리 명령 펀트를 초래한다.
[0023] 명령 프로세싱 회로(102)는, 페칭되고 있는 메모리 명령의 어드레스가 PAT(104)의 엔트리에 존재하는지 여부를 결정한다. 메모리 명령의 어드레스가 PAT(104)의 엔트리에서 발견되면(즉, "히트"), 메모리 명령의 이전의 비순차적 실행은 펀트를 초래하고, 다시 이를 행하기 쉬울 수 있는 것으로 결론지어 질 수 있다. 펀트의 가능성을 선점적으로 배제하기 위해, 명령 프로세싱 회로(102)는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지한다(즉, 비제한적인 예들로서 비순차적으로 디스패치되는 것 및/또는 데이터의 조기 리턴을 제공하는 것을 방지한다). 비제한적인 예들로서, 일부 양상들의 명령 프로세싱 회로(102)는 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령의 순차적 디스패치를 수행할 수 있거나, 또는 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령이 완료될 때까지 검출된 메모리 명령에 의한 데이터의 조기 리턴을 방지할 수 있다. 일부 양상들에서, 명령 프로세싱 회로(102)는 검출된 메모리 명령에 하나 이상의 속성들(미도시)을 추가함으로써 검출된 메모리 명령에 의한 데이터의 조기 리턴을 방지할 수 있다. 이러한 속성들은, 검출된 메모리 명령에 대한 데이터의 (예를 들어, 데이터 캐시(112)로부터의) 조기 리턴이 차단될 것 및 그 대신 검출된 메모리 명령이 모든 더 오래된 메모리 동작 위협들이 해결되기를 대기해야 하는 것을 표시할 수 있다.
[0024] 앞서 언급된 바와 같이, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 이전에 효과를 발생시키는 것을 방지하기 위한 상이한 동작들이, PAT(104)의 엔트리와 연관된 위협의 타입에 따라 메모리 명령들의 상이한 타입들에 적용될 수 있다. 비제한적인 예로서, 메모리 명령의 이전의 비순차적 실행이 RAW 위협을 초래했다면, 명령 프로세싱 회로(102)는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 저장 명령들 전에 효과를 발생시키는 것을 방지할 수 있다. RAR 위협이 메모리 명령의 이전의 비순차적 실행으로부터 초래되었다면, 명령 프로세싱 회로(102)는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 로드 명령들 전에 효과를 발생시키는 것을 방지할 수 있다. 위협이 자원 제약 위협인 양상들의 경우, 명령 프로세싱 회로(102)는, 검출된 메모리 명령이, 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 명령들 전에 효과를 발생시키는 것을 방지할 수 있다.
[0025] 본원에 개시된 일부 양상들에 따르면, 명령 프로세싱 회로(102)가 메모리 명령을 검출하지만, PAT(104)의 엔트리에서 메모리 명령의 어드레스를 발견하지 않으면, "미스"가 발생한다. 이러한 경우, 명령 프로세싱 회로(102)는 메모리 명령의 프로세싱을 계속할 수 있다. 메모리 명령보다 오래된 펜딩 메모리 명령의 실행 시에 검출된 메모리 명령과 연관된 위협이 후속적으로 발생하면, 메모리 명령의 어드레스를 포함하는 엔트리가 PAT(104)에서 생성될 수 있다. 그 다음, 메모리 명령 및 펜딩 메모리 명령은 리페칭 및 재실행될 수 있다.
[0026] 일부 양상들에서 도 1의 PAT(104)에 대응할 수 있는 예시적인 PAT(200)를 예시하기 위해, 도 2가 제공된다. 도 2를 설명할 때 명확성을 위해 도 1의 엘리먼트들이 참조된다. 도 2에서 보이는 바와 같이, PAT(200)는 다수의 엔트리들(202(0)-202(Y))을 포함하고, 이들 각각은 검출된 메모리 명령(미도시)과 연관된 데이터를 저장할 수 있다. 엔트리들(202(0)-202(Y)) 각각은 연관된 메모리 명령에 대한 어드레스, 예를 들어, 어드레스(206)를 저장하기 위한 어드레스 필드(204)를 포함한다. 엔트리(202(0))와 같은 엔트리는 어드레스(206)에 위치된 메모리 명령의 비순차적 실행으로부터 초래되는 위협의 발생에 대한 응답으로 명령 프로세싱 회로(102)에 의해 생성될 수 있다.
[0027] 일부 양상들에 따르면, PAT(200)의 각각의 엔트리(202(0)-202(Y))는 또한 위협 표시자(210)와 같은 위협 표시자를 저장하기 위한 선택적인 위협 표시자 필드(208)를 포함할 수 있다. 일부 양상들에서, 위협 표시자(210)는 일부 양상들에서, 연관된 메모리 명령에 대응하는 위협의 타입의 표시(예를 들어, 비제한적 예들로서, RAW 위협, RAR 위협 또는 자원 제약 위협)를 제공하는 하나 이상의 비트들을 포함할 수 있다. 명령 프로세싱 회로(102)는 메모리 명령 펀트를 선점하기 위해 적절한 동작을 결정할 때 위협 표시자(210)를 이용할 수 있다. 위협 표시자 필드(208)를 포함하지 않는 PAT(200)의 일부 양상들에서, PAT(200)는 단일 타입의 위협을 추적하는데 전용될 수 있다. 예를 들어, PAT(200)는 비제한적인 예로서, 오직 RAW 위협들을 추적하는데 전용될 수 있다. 일부 양상들은 다수의 PAT들(200)이 제공되는 것을 제공할 수 있고, 이들 각각은 상이한 위협 타입을 추적한다.
[0028] 일부 양상들은 또한, PAT(200)의 엔트리들(202(0)-202(Y)) 각각이, 바이어스 카운터 값(214)을 저장하는 바이어스 카운터 필드(212)를 더 포함하는 것을 제공할 수 있다. PAT(200)의 엔트리들(202(0)-202(Y))은 또한 바이어스 임계값(218)을 저장하는 바이어스 임계치 필드(216)를 포함할 수 있다. 바이어스 카운터 값(214) 및 바이어스 임계값(218)은, 연관된 메모리 명령의 비순차적 실행을 결과로서 발생하는 메모리 명령 펀트의 상대적 가능성을 판단하기 위해 명령 프로세싱 회로(102)에 의해 사용될 수 있다. 그 다음, 명령 프로세싱 회로(102)는 바이어스 카운터 값(214) 및 바이어스 임계값(218)에 기초하여, 메모리 명령 펀트를 선점할지 또는 메모리 명령의 종래의 프로세싱을 계속할지 여부를 결정할 수 있다. 예를 들어, 바이어스 카운터 값(214)은, 엔트리(202(0))에 대응하는 메모리 명령과 연관된 위협의 각각의 발생 시에 증분될 수 있다. 명령 스트림에서 메모리 명령이 다시 검출되면, 명령 프로세싱 회로(102)는, 바이어스 카운터 값(214)이 바이어스 임계값(218)을 초과하는 경우에만, 메모리 명령이, 메모리 명령보다 오래된 펜딩 메모리 명령들 전에 효과를 발생시키는 것을 방지할 수 있다. 일부 양상들은, 바이어스 임계치 필드(216)에 저장되는 것 대신에, 바이어스 임계값(218)은 PAT(200)와 별개의 위치, 예를 들어, 도 1의 레지스터들(124) 중 하나에 저장될 수 있거나, 또는 명령 프로세싱 회로(102)에 의해 하드코딩될 수 있다.
[0029] 일부 양상들은, PAT(200)의 엔트리들(202(0)-202(Y))이 도 2에 예시된 필드들(204, 208, 212 및 216)에 추가로 다른 필드들을 포함할 수 있는 것을 제공할 수 있음을 이해해야 한다. 일부 양상들에서 PAT(200)는 본 기술분야에 공지된 연대(associativity) 및 대체 정책들에 따라 구성된 캐시로서 구현될 수 있음을 추가로 이해해야 한다. 도 2의 예에서, PAT(200)는 단일 데이터 구조로서 예시된다. 그러나, 일부 양상들에서, PAT(200)는 또한 하나보다 많은 데이터 구조 또는 캐시를 포함할 수 있다.
[0030] 도 1의 명령 프로세싱 회로(102)와 로드/저장 유닛(110) 사이의 예시적인 통신 흐름들을 더 양호하게 예시하기 위해, 도 3a 내지 도 3c가 제공된다. 도 3a는 메모리 명령의 비순차적 실행에 대한 예시적인 통신 흐름들을 예시하는 한편, 도 3b는 PAT(104)에서 엔트리를 설정하기 위한 예시적인 통신 흐름들을 도시한다. 도 3c는 후속 메모리 명령 펀트의 예측 동안 예시적인 통신 흐름들을 예시한다.
[0031] 도 3a 내지 도 3c에 도시된 바와 같이, 명령 프로세싱 회로(102)는 3개의 명령들, 즉, 메모리 저장 명령(ST)(302(0)) 및 2개의 메모리 로드 명령들(LD)(302(1) 및 302(2))을 포함하는 명령 스트림(300)을 프로세싱한다. 메모리 저장 명령(302(0)) 및 메모리 로드 명령들(302(1), 302(2))은 또한 본원에서 총괄적으로 "메모리 명령들(302(0)-302(2))"로 지칭된다. 이러한 예에서, 메모리 저장 명령(302(0))은 메모리 위치 M(미도시)에 값을 저장하도록 OOO 컴퓨터 프로세서(100)에 지시하는 한편, 메모리 로드 명령들(302(1), 302(2)) 각각은 메모리 위치 M으로부터 값을 판독하도록 OOO 컴퓨터 프로세서(100)에 지시한다. 도 3a 내지 도 3c의 예에서, 메모리 저장 명령(302(0))은 프로그램 순서의 측면에서 가장 오래된 것인 한편, 메모리 로드 명령(302(1))은 두번째로 오래된 것이고, 메모리 로드 명령(302(2))은 가장 새로운 것이다. 메모리 로드 명령(302(2))은, 이 예에서 16진수 값 0x414인 어드레스(304)와 연관된다. 일부 양상들에서, 어드레스(304)는 예를 들어, 도 1의 프로그램 카운터(128)로부터 리트리브될 수 있음을 이해해야 한다.
[0032] 도 3a 내지 도 3c에 예시된 PAT(104)는 다수의 엔트리들(306(0)-306(X))을 포함한다. 메모리 명령 펀트들의 예측을 용이하게 하기 위해, PAT(104)의 각각의 엔트리(306(0)-306(X))는 도 2의 어드레스 필드(204)에 대응하는 어드레스 필드(308)를 포함한다. 앞서 논의된 바와 같이, 각각의 엔트리(306(0)-306(X))에 대한 어드레스 필드(308)는 명령 프로세싱 회로(102)에 의해 검출되는 메모리 로드 명령(302(2))의 어드레스(304)를 저장하기 위해 사용될 수 있다. 도 3a의 예에는 도시되지 않았지만, 일부 양상들에서, PAT(104)의 엔트리들(306(0)-306(X))은 또한 도 2의 위협 표시자 필드(208), 바이어스 카운터 필드(212) 및/또는 바이어스 임계치 필드(216)에 대응하는 필드들을 포함할 수 있다.
[0033] 이제 도 3a를 참조하면, 이러한 예에서, 명령 프로세싱 회로(102)는, 더 오래된 메모리 저장 명령(302(0)) 및 더 오래된 메모리 로드 명령(302(1))이 실행되기 전에 메모리 로드 명령(302(2))을 비순차적으로 실행하도록 선택한다. 화살표(310)로 표시된 바와 같이, 명령 프로세싱 회로(102)는 먼저, 메모리 로드 명령(302(2))의 어드레스(304)(즉, 16진수 값 0x414)가 엔트리들(306(0)-306(X)) 중 임의의 것에서 발견될 수 있는지 여부를 결정하기 위해 PAT(104)를 체크한다. 명령 프로세싱 회로(102)는 엔트리들(306(0)-306(X))에서 어드레스(304)를 발견하지 않고, 따라서, "미스"에 대한 응답으로, 메모리 로드 명령(302(2))의 종래의 프로세싱을 계속한다. 따라서, 메모리 로드 명령(302(2))은 데이터 캐시(112)를 판독하고, 화살표들(312 및 314)에 의해 표시된 바와 같이, 메모리 위치 M에 저장된 데이터를 리턴한다.
[0034] 도 3b에서, 다음으로, 명령 프로세싱 회로(102)는 화살표(316)에 의해 표시된 바와 같이, 메모리 저장 명령(302(0))을 실행하도록 선택한다. 앞서 언급된 바와 같이, 메모리 저장 명령(302(0))은 메모리 로드 명령(302(2))보다 오래된 것이고, 메모리 로드 명령(302(2))에 의해 판독되는 것과 동일한 메모리 위치 M에 값을 저장한다. 따라서, 메모리 저장 명령(302(0))을 실행하기 위한 명령 프로세싱 회로(102)에 의한 시도는 위협(318)(이 경우, RAW 위협)의 검출을 초래한다. 위협(318)을 검출하는 것에 대한 응답으로, 명령 프로세싱 회로(102)는 PAT(104)에서 엔트리(306(0))를 생성하고, 화살표(320)로 표시된 바와 같이, 엔트리(306(0))의 어드레스 필드(308)에 메모리 로드 명령(302(2))의 어드레스(304)를 저장한다. 그 다음, 명령 프로세싱 회로(102)는 메모리 저장 명령(302(0)) 및 메모리 로드 명령(302(2))가 리페칭 및 재실행(미도시)되게 하여, 메모리 명령 펀트를 초래하게 한다.
[0035] 도 3c를 참조하면, 메모리 저장 명령(302)(0) 및 메모리 로드 명령(302(2))을 리페칭할 때, 명령 프로세싱 회로(102)는, 더 오래된 메모리 저장 명령(302(0)) 및 메모리 로드 명령(302(1))이 실행되기 전에 메모리 로드 명령(302(2))을 비순차적으로 실행하도록 다시 선택한다. 화살표(322)로 표시된 바와 같이, 명령 프로세싱 회로(102)는, 메모리 로드 명령(302(2))의 어드레스(304)가 엔트리들(306(0)-306(X)) 중 임의의 것에서 발견되는지 여부를 결정하기 위해 PAT(104)를 체크하고, 이때, 엔트리(306(0))를 위치시킨다. 응답으로, 명령 프로세싱 회로(102)는, 메모리 로드 명령(302(2))이, 메모리 부하 명령(302(2))보다 오래된 펜딩 메모리 명령들(302(0)-302(1)) 중 하나 이상 전에 효과를 발생시키는 것을 방지한다. 이러한 예에서, 명확화를 위해, PAT(104)는 선택적인 위협 표시자 필드를 포함하지 않고, 따라서 PAT(104)는 오직 RAW 위협들을 추적하는 것과 연관되는 것으로 가정된다. 따라서, 명령 프로세싱 회로(102)는, 메모리 로드 명령(302(2))이, 펜딩 메모리 저장 명령(302(0)) 전에 효과를 발생시키는 것을 방지한다. 도 3c에서 보이는 바와 같이, 명령 프로세싱 회로(102)는, 화살표(324)에 의해 표시된 바와 같이, 메모리 로드 명령(302(2))이, 메모리 로드 명령(302(2)) 이전에 메모리 저장 명령(302(0))의 순차적 디스패치를 수행함으로써 펜딩 메모리 저장 명령(302(0)) 이전에 효과를 발생시키는 것을 방지한다. 일부 양상들은, 명령 프로세싱 회로(102)가, 메모리 로드 명령(302(2))에 의한 데이터의 조기 리턴을 방지함으로써 메모리 로드 명령(302(2))이 펜딩 메모리 저장 명령(302(0)) 전에 효과를 발생시키는 것을 방지할 수 있는 것을 제공할 수 있다.
[0036] 위협(318)이 RAR 위협인 일부 양상들에서, 명령 프로세싱 회로(102)는, 메모리 로드 명령(302(2))이, 펜딩 메모리 로드 명령(302(1)) 전에 효과를 발생시키는 것을 방지할 수 있음을 이해해야 한다. 위협(318)이 자원 제약 위협인 양상들에 따르면, 명령 프로세싱 회로(102)는, 메모리 로드 명령(302(2))이, 메모리 로드 명령(302(2))보다 오래된 펜딩 메모리 명령들(302(0)-302(1)) 중 임의의 것 이전에 효과를 발생시키는 것을 방지할 수 있다. 일부 양상들은, 위협(318)의 타입이 도 2의 위협 표시자(210)와 같은 위협 표시자에 기초하여 결정될 수 있는 것을 제공할 수 있다. 일부 양상들에서, 명령 프로세싱 회로(102)는, 메모리 로드 명령(302(2))이, 도 2의 바이어스 카운터 값(214)과 바이어스 임계치(216)를 비교하는 것과 같이, 바이어스 카운터 값에 기초하여, 펜딩 메모리 명령들(302(0)-302(1)) 전에 효과를 발생시키는 것을 방지할지 여부를 결정할 수 있다.
[0037] 도 1의 PAT(104)를 사용하여 메모리 명령 펀트들을 예측하기 위한 예시적인 동작들을 예시하기 위해, 도 4a 내지 도 4c가 제공된다. 명확화를 위해, 도 4a 내지 도 4c를 설명할 때 도 1, 도 2 및 도 3a 내지 도 3c의 엘리먼트들이 참조된다. 도 4a의 동작들은 도 1의 명령 프로세싱 회로(102)로 시작하여, 명령 스트림(300)에서, 메모리 로드 명령(302(2))과 같은 메모리 명령을 검출한다(블록(400)). 다음으로, 명령 프로세싱 회로(102)는, 검출된 메모리 명령(302(2))의 어드레스(304)가 PAT(104)의 엔트리(306(0))에 존재하는지 여부를 결정한다(블록(402)). 존재하지 않으면, 메모리 명령(302(2))은 이전 메모리 명령 펀트와 연관되지 않고, 따라서 명령 프로세싱 회로(102)는 명령 스트림(300)을 프로세싱하는 것을 계속한다(블록(404)). 그 다음, 프로세싱은 도 4c의 블록(418)에서 재개된다.
[0038] 결정 블록(402)에서, 검출된 메모리 명령(302(2))의 어드레스(304)가 존재하는 것으로 결정되면, 일부 양상들에서 명령 프로세싱 회로(102)는, PAT(104)의 엔트리(306(0))의 바이어스 카운터 필드(212)의 바이어스 카운터 값(214)이 바이어스 임계값(218)을 초과하는지 여부를 추가로 결정할 수 있다(블록(406)). 초과하지 않으면, 명령 프로세싱 회로(102)는, 메모리 명령 펀트의 가능성이 비교적 낮다고 결론지을 수 있다. 그 경우, 명령 프로세싱 회로(102)는 명령 스트림(300)의 종래의 프로세싱을 계속한다(블록(404)). 명령 프로세싱 회로(102)가 선택적인 바이어스 카운터 값(214)을 활용하지 않으면, 또는 선택적인 결정 블록(406)에서, 바이어스 카운터 값(214)이 바이어스 임계값(218)을 초과하는 것으로 명령 프로세싱 회로(102)가 결정하면, 프로세싱은 도 4b의 블록(408)에서 재개된다.
[0039] 이제 도 4b를 참조하면, 명령 프로세싱 회로(102)는, 메모리 명령 펀트를 선점하기 위해, 검출된 메모리 명령(302(2))이, 검출된 메모리 명령(302(2))보다 오래된 적어도 하나의 펜딩 메모리 명령(302(0)-302(1)) 이전에 효과를 발생시키는 것을 방지한다(블록(408)). 일부 양상들에서, 검출된 메모리 명령(302(2))이 적어도 하나의 펜딩 메모리 명령(302(0)-302(1)) 이전에 효과를 발생시키는 것을 방지하기 위한 블록(408)의 동작들은 검출된 메모리 명령(302(2))보다 오래된 적어도 하나의 펜딩 메모리 명령(302(0)-302(1))의 순차적 디스패치를 수행하는 것을 포함할 수 있다(블록(409)). 일부 양상들은, 검출된 메모리 명령(302(2))보다 오래된 적어도 하나의 펜딩 메모리 명령(302(0)-302(1))이 완료될 때까지, 검출된 메모리 명령(302(2))이 적어도 하나의 펜딩 메모리 명령(302(0)-302(1)) 이전에 효과를 발생시키는 것을 방지하기 위한 블록(408)의 동작들이 검출된 메모리 명령(302(2))에 의한 데이터의 조기 리턴을 방지하는 것을 포함할 수 있는 것(블록(410))을 제공할 수 있다.
[0040] 일부 양상들에서, 검출된 메모리 명령(302(2))이 적어도 하나의 펜딩 메모리 명령(302(0)-302(1)) 이전에 효과를 발생시키는 것을 방지하기 위한 블록(408)의 동작들은 PAT(104)의 엔트리(306(0))와 연관된 위협의 타입을 먼저 결정하는 명령 프로세싱 회로(102)에 의해 달성될 수 있다(블록(411)). 일부 양상들은, 위협의 타입이 도 2의 위협 표시자(210)와 같은 위협 표시자를 사용하여 확인될 수 있는 것을 제공할 수 있다. 일부 양상들에 따르면, 다수의 PAT들(104)이 제공될 수 있고, 이들 각각은 특정 위협 타입과 연관된다.
[0041] 결정 블록(411)에서, PAT(104)의 엔트리(306(0))가 RAW 위협과 연관된 것으로 결정되면, 명령 프로세싱 회로(102)는, 검출된 메모리 명령(302(2))이 검출된 메모리 명령(302(2))보다 오래된 임의의 펜딩 메모리 저장 명령들(302(0)) 이전에 효과를 발생시키는 것을 방지할 수 있다(블록(412)). 결정 블록(411)에서, PAT(104)의 엔트리(306(0))가 RAR 위협과 연관된 것으로 결정되면, 명령 프로세싱 회로(102)는, 검출된 메모리 명령(302(2))이 검출된 메모리 명령(302(2))보다 오래된 모든 펜딩 메모리 로드 명령들(302(1)) 이전에 효과를 발생시키는 것을 방지할 수 있다(블록(414)). PAT(104)의 엔트리(306(0))가 자원 제약 위협과 연관되면, 명령 프로세싱 회로(102)는, 검출된 메모리 명령(302(2))이 검출된 메모리 명령(302(2))보다 오래된 모든 펜딩 메모리 명령들(302(0)-302(1)) 이전에 효과를 발생시키는 것을 방지할 수 있다(블록(416)). 그 다음, 프로세싱은 도 4c의 블록(418)에서 재개된다.
[0042] 도 4c에서, 명령 프로세싱 회로(102)는 일부 양상들에서, 검출된 메모리 명령(302(2))보다 오래된 적어도 하나의 펜딩 메모리 명령(302(0)-302(1))의 펜딩 메모리 명령(302(0))의 실행 시에 검출된 메모리 명령(302(2))과 연관된 위협(318)이 발생했는지 여부를 추가로 결정할 수 있다(블록(418)). 그렇지 않으면, 명령 프로세싱 회로(102)는 명령 스트림(300)을 프로세싱하는 것을 계속한다(블록(420)). 그러나, 결정 블록(418)에서, 위협(318)이 발생한 것으로 결정되면, 명령 프로세싱 회로(102)는 선택적인 바이어스 카운터 값(214)이 이용되는 일부 양상들에 따라, 검출된 메모리 명령(302(2))의 어드레스(304)가 PAT(104)의 엔트리(306(0))에 존재하는지 여부를 결정할 수 있다(블록(422)). 존재한다면, 명령 프로세싱 회로(102)는 바이어스 카운터 값(214)을 증분시킬 수 있다(블록(424)). 그 다음, 명령 프로세싱(102)은 검출된 메모리 명령(302(2)) 및 적어도 하나의 펜딩 메모리 명령(302(0))을 재실행한다(블록(426)).
[0043] 결정 블록(422)에서, 어드레스(304)가 존재하지 않는 것으로 명령 프로세싱 회로(102)가 결정하면, 또는 명령 프로세싱 회로(102)가 선택적인 바이어스 카운터 값(214)을 사용하지 않으면, 명령 프로세싱 회로(102)는 PAT(104)에서 엔트리(306(0))를 생성할 수 있고, 엔트리(306(0))는 검출된 메모리 명령(302(2))의 어드레스(304)를 포함한다(블록(428)). 다음으로, 명령 프로세싱 회로(102)는 검출된 메모리 명령(302(2)) 및 적어도 하나의 펜딩 메모리 명령(302(0))을 재실행한다(블록(426)). 그 다음, 명령 프로세싱 회로(102)는 명령 스트림(300)을 프로세싱하는 것을 계속한다(블록(420)).
[0044] 본원에 개시된 양상들에 따른 PAT를 사용하여 메모리 명령 펀트들을 예측하는 것은 임의의 프로세서-기반 디바이스에서 제공되거나 그에 통합될 수 있다. 예들은, 제한 없이, 셋탑 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 이동 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크탑 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어 및 휴대용 디지털 비디오 플레이어를 포함한다.
[0045] 이와 관련하여, 도 5는 도 1에 예시된 명령 프로세싱 회로(102)를 이용할 수 있는 프로세서-기반 시스템(500)의 예를 예시한다. 이러한 예에서, 프로세서-기반 시스템(500)은 하나 이상의 CPU들(central processing units)(502)을 포함하고, 이들 각각은 하나 이상의 프로세서들(504)을 포함한다. 하나 이상의 프로세서들(504)은 도 1의 IPC(instruction processing circuit)(102)를 포함할 수 있고, 도 4a 내지 도 4c에 예시된 동작들을 수행할 수 있다. CPU(들)(502)은 마스터 디바이스일 수 있다. CPU(들)(502)은, 일시적으로 저장된 데이터로의 신속한 액세스를 위해 프로세서(들)(504)에 커플링되는 캐시 메모리(506)를 가질 수 있다. CPU(들)(502)는 시스템 버스(508)에 커플링되고, 프로세서-기반 시스템(500)에 포함된 마스터 및 슬레이브 디바이스들을 상호커플링시킬 수 있다. 주지된 바와 같이, CPU(들)(502)는 시스템 버스(508)를 통해 어드레스, 제어 및 데이터 정보를 교환함으로써 이러한 다른 디바이스들과 통신한다. 예를 들어, CPU(들)(502)는 슬레이브 디바이스의 일례로 메모리 제어기(510)에 버스 트랜잭션 요청들을 통신할 수 있다.
[0046] 다른 마스터 및 슬레이브 디바이스들은 시스템 버스(508)에 접속될 수 있다. 도 5에 예시된 바와 같이, 이러한 디바이스들은 메모리 시스템(512), 하나 이상의 입력 디바이스들(514), 하나 이상의 출력 디바이스들(516), 하나 이상의 네트워크 인터페이스 디바이스들(518) 및 하나 이상의 디스플레이 제어기들(520)을 예로 포함할 수 있다. 입력 디바이스(들)(514)는 입력 키들, 스위치들, 음성 프로세서들 등을 포함하는(그러나 이에 제한되는 것은 아님) 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(516)는, 오디오, 비디오, 다른 시각적 표시자들 등을 포함하는(그러나 이에 제한되는 것은 아님) 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들)(518)는 네트워크(522)로 및 네트워크(522)로부터의 데이터의 교환을 허용하도록 구성되는 임의의 디바이스들일 수 있다. 네트워크(522)는, 유선 또는 무선 네트워크, 사설 또는 공개 네트워크, LAN(local area network), WLAN(wide local area network) 및 인터넷을 포함하는(그러나 이에 제한되는 것은 아님) 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들)(518)는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다. 메모리 시스템(512)은 하나 이상의 메모리 유닛들(524(0-N))을 포함할 수 있다.
[0047] CPU(들)(502)는 또한, 하나 이상의 디스플레이들(526)에 전송되는 정보를 제어하기 위해 시스템 버스(508)를 통해 디스플레이 제어기(들)(520)에 액세스하도록 구성될 수 있다. 디스플레이 제어기(들)(520)는, 하나 이상의 비디오 프로세서들(528)을 통해 디스플레이될 정보를 디스플레이(들)(526)에 전송하고, 하나 이상의 비디오 프로세서들(528)은 디스플레이될 정보를 디스플레이(들)(526)에 적합한 포맷으로 프로세싱한다. 디스플레이(들)(526)은, CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이 등을 포함하는(그러나 이에 제한되는 것은 아님) 임의의 타입의 디스플레이를 포함할 수 있다.
[0048] 당업자들은, 본 명세서에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들 및 알고리즘들이 전자 하드웨어, 메모리 또는 다른 컴퓨터 판독가능 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스에 의해 실행되는 명령들, 또는 둘 모두의 조합들로 구현될 수 있음을 추가로 인식할 것이다. 예로서, 본 명세서에서 설명되는 마스터 디바이스들 및 슬레이브 디바이스들은 임의의 회로, 하드웨어 컴포넌트, 집적 회로(IC) 또는 IC 칩에서 구현될 수 있다. 본 명세서에 개시된 메모리는 임의의 타입 및 크기의 메모리일 수 있고, 원하는 임의의 타입의 정보를 저장하도록 구성될 수 있다. 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 이들의 기능적 관점에서 앞서 설명되었다. 이러한 기능이 어떻게 구현되는지는, 특정 애플리케이션, 설계 선택들, 및/또는 전체 시스템에 부과되는 설계 제약들에 좌우된다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 개시의 범주를 벗어나는 것으로 해석되어서는 안 된다.
[0049] 본 명세서에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들 및 회로들은, 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 다른 프로그래밍가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에 설명된 기능들을 수행하도록 설계되는 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수도 있지만, 대안으로 프로세서는 임의의 종래 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0050] 본 명세서에 개시된 양상들은, 하드웨어로 구현될 수 있고, 하드웨어에 저장되고, 예를 들어, RAM(Random Access Memory), 플래쉬 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM 또는 당업계에 공지된 임의의 다른 형태의 컴퓨터 판독가능 매체에 상주할 수 있는 명령들로 구현될 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC는 원격 스테이션에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격 스테이션, 기지국 또는 서버에 이산 컴포넌트들로서 상주할 수 있다.
[0051] 본 명세서의 예시적인 양상들 중 임의의 양상에서 설명된 동작 단계들은 예시들 및 논의를 제공하기 위해 설명된 것을 또한 주목한다. 설명된 동작들은, 예시된 순서들과는 다른 다수의 상이한 순서들로 수행될 수 있다. 게다가, 단일 동작 단계에서 설명된 동작들은, 실제로 다수의 상이한 단계들에서 수행될 수 있다. 추가적으로, 예시적인 양상들에서 논의된 하나 이상의 동작 단계들은 결합될 수 있다. 흐름도 도면들에서 예시된 동작 단계들은, 당업자에게 쉽게 자명할 바와 같이 다수의 상이한 변형들을 겪을 수 있음을 이해해야 한다. 정보 및 신호들은 다양한 다른 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있음을 당업자는 또한 이해할 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기 필드들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 결합으로 표현될 수 있다.
[0052] 본 개시의 상기의 설명은 임의의 당업자가 본 개시를 사용하거나 실시할 수 있게 하도록 제공된다. 본 개시에 대한 다양한 변형들이 해당 기술분야에서 통상의 지식을 가진 자들에게 쉽게 명백할 것이며, 본 명세서에 정의된 일반 원리들은 본 개시의 사상 또는 범위를 벗어나지 않으면서 다른 변형들에 적용될 수 있다. 그러므로 본 개시는 본 명세서에서 설명된 예시들 및 설계들로 한정되는 것으로 의도되는 것이 아니라, 본 명세서에 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위에 따르는 것이다.

Claims (20)

  1. OOO(out-of-order) 컴퓨터 프로세서의 명령 프로세싱 회로로서,
    상기 명령 프로세싱 회로는 실행 파이프라인의 프론트-엔드 회로에 통신가능하게 커플링되고, 복수의 엔트리들을 제공하는 PAT(punt avoidance table)를 포함하고;
    상기 명령 프로세싱 회로는,
    상기 PAT의 엔트리가 연관된 위협 타입을 결정하고;
    상기 PAT의 엔트리가 RAW(read-after-write) 위협과 연관된다고 결정하는 것에 대한 응답으로, 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 저장 명령들 전에 효과를 발생시키는 것을 방지하고;
    상기 PAT의 엔트리가 RAR(read-after-read) 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 로드 명령들 전에 효과를 발생시키는 것을 방지하고;
    상기 PAT의 엔트리가 자원 제약 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 명령들 전에 효과를 발생시키는 것을 방지하도록 구성됨으로써,
    검출된 메모리 명령의 어드레스가 상기 PAT의 복수의 엔트리들 중 일 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 메모리 명령 펀트를 선점하기 위해, 상기 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하도록 구성되는, 명령 프로세싱 회로.
  2. 제1 항에 있어서,
    상기 명령 프로세싱 회로는, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령의 순차적 디스패치를 수행하도록 구성됨으로써, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하도록 구성되는, 명령 프로세싱 회로.
  3. 제1 항에 있어서,
    상기 명령 프로세싱 회로는, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령이 완료될 때까지 상기 검출된 메모리 명령에 의한 데이터의 조기 리턴을 방지하도록 구성됨으로써, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하도록 구성되는, 명령 프로세싱 회로.
  4. 제1 항에 있어서,
    상기 PAT의 엔트리의 위협 표시자에 기초하여 상기 위협 타입을 결정하도록 추가로 구성되는, 명령 프로세싱 회로.
  5. 제1 항에 있어서,
    상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령의 펜딩 메모리 명령의 실행 시에, 상기 검출된 메모리 명령과 연관된 위협이 발생했는지 여부를 결정하고;
    상기 검출된 메모리 명령과 연관된 위협이 발생했다고 결정하는 것에 대한 응답으로,
    상기 PAT에서 상기 엔트리를 생성하고 ― 상기 엔트리는 상기 검출된 메모리 명령의 어드레스를 포함함 ―;
    상기 검출된 메모리 명령 및 상기 적어도 하나의 펜딩 메모리 명령을 재실행하도록 추가로 구성되는, 명령 프로세싱 회로.
  6. 제5 항에 있어서,
    상기 PAT에서 상기 엔트리를 생성하기 전에,
    상기 검출된 메모리 명령의 어드레스가 상기 PAT의 엔트리에 존재하는지 여부를 결정하고;
    상기 검출된 메모리 명령의 어드레스가 상기 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 상기 엔트리의 바이어스 카운터 필드의 바이어스 카운터 값을 증분시키고;
    상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하기 전에, 상기 PAT의 엔트리의 상기 바이어스 카운터 필드의 바이어스 카운터 값이 바이어스 임계값을 초과하는지 여부를 결정하도록 추가로 구성되고;
    상기 명령 프로세싱 회로는,
    상기 검출된 메모리 명령의 어드레스가 상기 PAT의 엔트리에 존재하지 않는다고 결정하는 것에 대한 응답으로, 상기 PAT에서 상기 엔트리를 생성하고;
    상기 바이어스 카운터 값이 상기 바이어스 임계값을 초과한다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하도록 구성되는, 명령 프로세싱 회로.
  7. 제1 항에 있어서,
    IC(integrated circuit)에 통합되는, 명령 프로세싱 회로.
  8. 제1 항에 있어서,
    셋탑 박스; 엔터테인먼트 유닛; 내비게이션 디바이스; 통신 디바이스; 고정 위치 데이터 유닛; 이동 위치 데이터 유닛; 모바일 폰; 셀룰러 폰; 컴퓨터; 휴대용 컴퓨터; 데스크탑 컴퓨터; PDA(personal digital assistant); 모니터; 컴퓨터 모니터; 텔레비전; 튜너; 라디오; 위성 라디오; 뮤직 플레이어; 디지털 뮤직 플레이어; 휴대용 뮤직 플레이어; 디지털 비디오 플레이어; 비디오 플레이어; DVD(digital video disc) 플레이어 및 휴대용 디지털 비디오 플레이어로 이루어진 그룹으로부터 선택된 디바이스에 통합되는, 명령 프로세싱 회로.
  9. OOO(out-of-order) 컴퓨터 프로세서의 명령 프로세싱 회로로서,
    PAT(punt avoidance table)에서 복수의 엔트리들을 제공하기 위한 수단; 및
    검출된 메모리 명령의 어드레스가 상기 PAT의 상기 복수의 엔트리들 중의 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 상기 PAT의 엔트리가 연관되는 위협 타입을 결정하고, 상기 PAT의 엔트리가 연관되는 위협 타입을 결정하기 위한 수단;
    상기 PAT의 엔트리가 RAW(read-after-write) 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 저장 명령들 전에 효과를 발생시키는 것을 방지하기 위한 수단;
    상기 PAT의 엔트리가 RAR(read-after-read) 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 로드 명령들 전에 효과를 발생시키는 것을 방지하기 위한 수단; 및
    상기 PAT의 엔트리가 자원 제약 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 메모리 명령들 전에 효과를 발생시키는 것을 방지하기 위한 수단을 포함하는, 명령 프로세싱 회로.
  10. 메모리 명령 펀트들을 예측하기 위한 방법으로서,
    명령 스트림에서 메모리 명령을 검출하는 단계;
    검출된 메모리 명령의 어드레스가 PAT(punt avoidance table)의 엔트리에 존재하는지 여부를 결정하는 단계; 및
    상기 PAT의 엔트리가 연관된 위협 타입을 결정하고;
    상기 PAT의 엔트리가 RAW(read-after-write) 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 저장 명령들 전에 효과를 발생시키는 것을 방지하고;
    상기 PAT의 엔트리가 RAR(read-after-read) 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 로드 명령들 전에 효과를 발생시키는 것을 방지하고;
    상기 PAT의 엔트리가 자원 제약 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 명령들 전에 효과를 발생시키는 것을 방지함으로써,
    상기 검출된 메모리 명령의 어드레스가 상기 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하는 단계를 포함하는, 메모리 명령 펀트들을 예측하기 위한 방법.
  11. 제10 항에 있어서,
    상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하는 것은, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령의 순차적 디스패치를 수행하는 것을 포함하는, 메모리 명령 펀트들을 예측하기 위한 방법.
  12. 제10 항에 있어서,
    상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하는 것은, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령이 완료될 때까지 상기 검출된 메모리 명령에 의한 데이터의 조기 리턴을 방지하는 것을 포함하는, 메모리 명령 펀트들을 예측하기 위한 방법.
  13. 제10 항에 있어서,
    상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하는 것은, 상기 PAT의 엔트리의 위협 표시자에 기초하는, 메모리 명령 펀트들을 예측하기 위한 방법.
  14. 제10 항에 있어서,
    상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령의 펜딩 메모리 명령의 디스패치 시에, 상기 검출된 메모리 명령과 연관된 위협이 발생했는지 여부를 결정하는 단계; 및
    상기 검출된 메모리 명령과 연관된 위협이 발생했다고 결정하는 것에 대한 응답으로,
    상기 PAT에서 상기 엔트리를 생성하는 단계 ― 상기 엔트리는 상기 검출된 메모리 명령의 어드레스를 포함함 ―; 및
    상기 검출된 메모리 명령 및 상기 적어도 하나의 펜딩 메모리 명령을 재실행하는 단계를 더 포함하는, 메모리 명령 펀트들을 예측하기 위한 방법.
  15. 제14 항에 있어서,
    상기 PAT에서 상기 엔트리를 생성하기 전에,
    상기 검출된 메모리 명령의 어드레스가 상기 PAT의 엔트리에 존재하는지 여부를 결정하는 단계; 및
    상기 검출된 메모리 명령의 어드레스가 상기 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 상기 엔트리의 바이어스 카운터 필드의 바이어스 카운터 값을 증분시키는 단계; 및
    상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하기 전에, 상기 PAT의 엔트리의 상기 바이어스 카운터 필드의 바이어스 카운터 값이 바이어스 임계값을 초과하는지 여부를 결정하는 단계를 더 포함하고;
    상기 PAT에서 상기 엔트리를 생성하는 단계는, 상기 검출된 메모리 명령의 어드레스가 상기 PAT의 엔트리에 존재하지 않는다고 결정하는 것에 대한 응답이고;
    상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하는 단계는, 상기 바이어스 카운터 값이 상기 바이어스 임계값을 초과한다고 결정하는 것에 대한 응답인, 메모리 명령 펀트들을 예측하기 위한 방법.
  16. 컴퓨터 실행가능 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    명령 스트림에서 메모리 명령을 검출하게 하고;
    검출된 메모리 명령의 어드레스가 PAT(punt avoidance table)의 엔트리에 존재하는지 여부를 결정하게 하고;
    상기 프로세서로 하여금,
    상기 PAT의 엔트리가 연관된 위협 타입을 결정하게 하고;
    상기 PAT의 엔트리가 RAW(read-after-write) 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 저장 명령들 전에 효과를 발생시키는 것을 방지하게 하고;
    상기 PAT의 엔트리가 RAR(read-after-read) 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 로드 명령들 전에 효과를 발생시키는 것을 방지하게 하고;
    상기 PAT의 엔트리가 자원 제약 위협과 연관된다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 임의의 펜딩 메모리 명령들 전에 효과를 발생시키는 것을 방지하게 함으로써,
    상기 검출된 메모리 명령의 어드레스가 상기 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 메모리 명령 펀트를 선점하기 위해, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제16 항에 있어서,
    컴퓨터 실행가능 명령들을 저장하고,
    상기 명령들은 상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금, 추가로, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령의 순차적 디스패치를 수행함으로써, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제16 항에 있어서,
    컴퓨터 실행가능 명령들을 저장하고,
    상기 명령들은 상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금, 추가로, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령이 완료될 때까지 상기 검출된 메모리 명령에 의한 데이터의 조기 리턴을 방지함으로써, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제16 항에 있어서,
    컴퓨터 실행가능 명령들을 저장하고,
    상기 명령들은 상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금, 추가로,
    상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령의 펜딩 메모리 명령의 실행 시에, 상기 검출된 메모리 명령과 연관된 위협이 발생했는지 여부를 결정하게 하고;
    상기 검출된 메모리 명령과 연관된 위협이 발생했다고 결정하는 것에 대한 응답으로,
    상기 PAT에서 상기 엔트리를 생성하게 하고 ― 상기 엔트리는 상기 검출된 메모리 명령의 어드레스를 포함함 ―;
    상기 검출된 메모리 명령 및 상기 적어도 하나의 펜딩 메모리 명령을 재실행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제19 항에 있어서,
    컴퓨터 실행가능 명령들을 저장하고,
    상기 명령들은 상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금, 추가로,
    상기 PAT에서 상기 엔트리를 생성하기 전에,
    상기 검출된 메모리 명령의 어드레스가 상기 PAT의 엔트리에 존재하는지 여부를 결정하게 하고;
    상기 검출된 메모리 명령의 어드레스가 상기 엔트리에 존재한다고 결정하는 것에 대한 응답으로, 상기 엔트리의 바이어스 카운터 필드의 바이어스 카운터 값을 증분시키게 하고;
    상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하기 전에, 상기 PAT의 엔트리의 상기 바이어스 카운터 필드의 바이어스 카운터 값이 바이어스 임계값을 초과하는지 여부를 결정하게 하고;
    상기 검출된 메모리 명령의 어드레스가 상기 PAT의 엔트리에 존재하지 않는다고 결정하는 것에 대한 응답으로, 상기 PAT에서 상기 엔트리를 생성하게 하고;
    상기 바이어스 카운터 값이 상기 바이어스 임계값을 초과한다고 결정하는 것에 대한 응답으로, 상기 검출된 메모리 명령이, 상기 검출된 메모리 명령보다 오래된 상기 적어도 하나의 펜딩 메모리 명령 전에 효과를 발생시키는 것을 방지하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020187004118A 2015-08-14 2016-07-14 Pat(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측 KR20180037980A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562205400P 2015-08-14 2015-08-14
US62/205,400 2015-08-14
US14/863,612 US20170046167A1 (en) 2015-08-14 2015-09-24 Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)
US14/863,612 2015-09-24
PCT/US2016/042234 WO2017030691A1 (en) 2015-08-14 2016-07-14 Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)

Publications (1)

Publication Number Publication Date
KR20180037980A true KR20180037980A (ko) 2018-04-13

Family

ID=57995472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187004118A KR20180037980A (ko) 2015-08-14 2016-07-14 Pat(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측

Country Status (6)

Country Link
US (1) US20170046167A1 (ko)
EP (1) EP3335111B1 (ko)
JP (1) JP2018523241A (ko)
KR (1) KR20180037980A (ko)
CN (1) CN107924310A (ko)
WO (1) WO2017030691A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10324727B2 (en) * 2016-08-17 2019-06-18 Arm Limited Memory dependence prediction
US10776125B2 (en) * 2018-12-05 2020-09-15 Apple Inc. Coprocessor memory ordering table

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958041A (en) * 1997-06-26 1999-09-28 Sun Microsystems, Inc. Latency prediction in a pipelined microarchitecture
US7127574B2 (en) * 2003-10-22 2006-10-24 Intel Corporatioon Method and apparatus for out of order memory scheduling
US8285947B2 (en) * 2009-02-06 2012-10-09 Apple Inc. Store hit load predictor
US8266409B2 (en) * 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
CN101620526B (zh) * 2009-07-03 2011-06-15 中国人民解放军国防科学技术大学 一种减少流处理器片上指令存储器资源消耗的方法
US8521992B2 (en) * 2009-12-22 2013-08-27 International Business Machines Corporation Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors
CN102012872B (zh) * 2010-11-24 2012-05-02 烽火通信科技股份有限公司 一种用于嵌入式系统的二级缓存控制方法及装置
US20130173886A1 (en) * 2012-01-04 2013-07-04 Qualcomm Incorporated Processor with Hazard Tracking Employing Register Range Compares
US8954678B2 (en) * 2012-06-15 2015-02-10 International Business Machines Corporation Automatic pattern-based operand prefetching
US9235521B2 (en) * 2013-07-22 2016-01-12 Avago Technologies General Ip (Singapore) Pte Ltd Cache system for managing various cache line conditions
US9880849B2 (en) * 2013-12-09 2018-01-30 Macom Connectivity Solutions, Llc Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US10209995B2 (en) * 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions
US9606805B1 (en) * 2015-10-19 2017-03-28 International Business Machines Corporation Accuracy of operand store compare prediction using confidence counter
US20170329607A1 (en) * 2016-05-16 2017-11-16 International Business Machines Corporation Hazard avoidance in a multi-slice processor

Also Published As

Publication number Publication date
EP3335111B1 (en) 2019-08-21
EP3335111A1 (en) 2018-06-20
WO2017030691A1 (en) 2017-02-23
CN107924310A (zh) 2018-04-17
JP2018523241A (ja) 2018-08-16
US20170046167A1 (en) 2017-02-16

Similar Documents

Publication Publication Date Title
EP3436930B1 (en) Providing load address predictions using address prediction tables based on load path history in processor-based systems
US9195466B2 (en) Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
EP2972787B1 (en) Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
US20180081686A1 (en) Providing memory dependence prediction in block-atomic dataflow architectures
EP3433728B1 (en) Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor
EP3221784B1 (en) Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media
KR20180037980A (ko) Pat(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측
US20160019060A1 (en) ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US20160077836A1 (en) Predicting literal load values using a literal load prediction table, and related circuits, methods, and computer-readable media
EP2856304B1 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
CN112789594B (zh) 提供预测指令调度节流以防止基于无序处理器(oop)的设备中的资源溢出
US20160291981A1 (en) Removing invalid literal load values, and related circuits, methods, and computer-readable media
US20160092219A1 (en) Accelerating constant value generation using a computed constants table, and related circuits, methods, and computer-readable media
US20130326195A1 (en) Preventing execution of parity-error-induced unpredictable instructions, and related processor systems, methods, and computer-readable media