KR101049344B1 - 재정렬된 프로그램 명령들을 실행하기 위한 컴퓨터 시스템, 방법 및 컴퓨터 판독가능 저장 매체 - Google Patents

재정렬된 프로그램 명령들을 실행하기 위한 컴퓨터 시스템, 방법 및 컴퓨터 판독가능 저장 매체 Download PDF

Info

Publication number
KR101049344B1
KR101049344B1 KR1020087006023A KR20087006023A KR101049344B1 KR 101049344 B1 KR101049344 B1 KR 101049344B1 KR 1020087006023 A KR1020087006023 A KR 1020087006023A KR 20087006023 A KR20087006023 A KR 20087006023A KR 101049344 B1 KR101049344 B1 KR 101049344B1
Authority
KR
South Korea
Prior art keywords
value
memory address
area
table entry
instructions
Prior art date
Application number
KR1020087006023A
Other languages
English (en)
Other versions
KR20080041251A (ko
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 KR20080041251A publication Critical patent/KR20080041251A/ko
Application granted granted Critical
Publication of KR101049344B1 publication Critical patent/KR101049344B1/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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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

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)
  • Retry When Errors Occur (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

재정렬된 컴퓨터 명령들을 수행하는 시스템들 및 방법들이 기술된다. 컴퓨터 프로세서는 제 1 메모리 어드레스로부터 제 1값을 로드하며, 테이블 또는 큐(queue)에 제 1 값 및 제 2 값 둘다를 기록한다. 프로세서는 동일한 메모리 어드레스에 제 2값을 저장하며, 이전 테이블 엔트리를 퇴거하거나 또는 이전 테이블 엔트리에 제 2값을 추가한다. 퇴거된 테이블 엔트리 또는 불일치 제 2값을 검출할때, 프로세서는 제 1값의 예측 사용의 복원을 트리거링하는 예외를 발생시킨다.

Description

재정렬된 프로그램 명령들을 실행하기 위한 컴퓨터 시스템, 방법 및 컴퓨터 판독가능 저장 매체{COMPUTER SYSTEM, METHOD AND COMPUTER-READABLE STORAGE MEDIUM FOR EXECUTING RE-ORDERED PROGRAM INSTRUCTIONS}
본 발명은 일반적으로 컴퓨팅, 특히 프로세서들에서 전진 프리페치(prefetch) 동작들을 수행하는 기술에 관한 것이다.
컴퓨터 프로그램들은 실행시에 컴퓨터가 미리 결정된 방식으로 동작하도록 하는 명령들의 리스트들이다. 일반적으로, 프로그램은 변수들의 리스트와 이 변수들을 사용하여 무엇을 해야 하는지를 컴퓨터에 명령하는 상태 리스트를 포함할 수 있다. 프로그래머는 사람이 쉽게 이해하는 고급(high-level) 프로그래밍 언어로 컴퓨터 프로그램을 기록할 수 있다. 이러한 프로그램의 형태는 "소스 코드"로 지칭된다. 그러나, 컴퓨터상에서 프로그램을 실행하기 위하여, 소스 코드는 컴퓨터에 의하여 사용가능한 저급(low-level) 언어인 기계어로 변환되어야 한다.
이러한 번역 프로그램의 제 1 단계는 보통 소스 코드를 기계어에 가까운 형식으로 기계 번역하는 컴파일러로 지칭되는 유틸리티에 의하여 수행된다. 컴파일러는 이러한 기계번역 기능들외에 부가 기능들을 가질 수 있다. 예컨대, 컴파일러는 소스 코드를 검사할 수 있으며, 명령들의 일부를 재정렬하는 것 뿐만 아니라 다른 최적화 기능들을 수행할 수 있다. 컴파일러는 소스 코드를 "목적 코드"로 지칭된 형식으로 변환한다. 종종 목적 코드는 기계어와 동일하며; 종종 목적 코드는 컴퓨터에 의하여 실행되기전에 추가로 처리될 필요가 있다.
컴파일러들이 수행할 수 있는 하나의 최적화 방안은 소스 코드의 프로그래머 버전의 단순한 변환이 초래하는 것보다 더 효율적으로 동작하도록 컴퓨터 프로그램내의 명령들을 재정렬하는 것이다.
예컨대, 프로그램은 변수에 근거하여 동작할 수 있다. 일반적으로, 변수들은 메모리내에 위치하며, 이들이 이용가능하기전에 액세스되어야 한다. 한 프로세서에서 메모리의 이러한 액세스는 유한 시간량을 소비한다. 만일 프로그램이 변수를 사용하려할때 변수가 메모리로부터 획득되지 않으면, 변수가 메모리로 전송되는 동안 지연이 유발될 수 있다.
두 가지 공통 타입의 컴퓨터 명령들은 로드 명령들("로드들") 및 저장 명령들("저장들")이다. 로드 명령들은 프로그램에 의하여 요구되는 데이터를 페치하기 위하여 메모리에 액세스할 수 있다. 저장 명령들은 그들이 프로그램에 의하여 계속해서 요구되지 않는 최종 계산 결과와 같은 최종 데이터를 단순하게 메모리에 저장하기 때문에 종종 2차 명령으로 고려된다. 따라서, 프로그램 효율성은 저장 명령들보다 로드 명령들을 앞으로 전진시킴으로서 개선될 수 있다.
불행하게도, 이러한 기술은 "로드 명령/저장 명령 에일리어싱(aliasing)으로 지칭된 중요한 문제를 유발한다. 로드 명령/저장 명령 에일리어싱은 로드 명령이 판독한 것과 동일한 메모리 어드레스에 저장 명령이 데이터를 기록할 때 발생한다. 도 1은 이러한 상황의 예를 기술한다. 프로세서 레지스터(100)는 실행되는 컴퓨터 프로그램의 일련의 명령들을 포함할 수 있다. 프로그래머는 소스 코드의 "사용" 명령("사용")(104) 바로 전에 로드 명령(102A)을 포함시킬 수 있다. 사용 명령(104)은 로드 명령(102A)에 의하여 검색되는 데이터를 이용하는 계산일 수 있다. 앞서 설명된 바와 같이, 컴파일러는 화살표 108에 의하여 표시된 바와 같이 프로그래머가 로드 명령(102A)을 소스 코드내에 원래 배치한 것보다 로드 명령(102A)을 사용 명령(104)위로 더 높게 상승시킴으로서 실행시간에서 전체 프로그램 효율성을 개선시킬 수 있다. 한가지 이유는 때때로 컴퓨터의 메모리에 액세스하는 프로세스가 늦고, 만일 로드 명령(102A) 및 사용 명령(104)이 너무 근접하면, 컴퓨터가 사용 명령(104)을 만날 때 컴퓨터가 사용 명령(104)을 수행하는데 필요한 데이터를 검색하기 위한 로드 명령(102A)을 대기해야 한다는 점이다. 만일 컴파일러가 위치(102B)와 같이 로드 명령(102A)에 선행하여 배치할 수 있으면, 컴퓨터는 자신이 사용 명령(104)을 만날 때까지 시간만큼 검색된 데이터를 미리 가질 수 있을 것이다. 사용 명령들 위로 로드 명령들을 상승시킴으로써, 컴파일러는 대기 시간을 감소시키고 프로그램 효율성을 증가시킬 수 있다.
그러나, 만일 로드 명령(102)이 사용 명령(104) 위에서 너무 멀리 상승되면, 로드 명령(104)은 화살표 106에 의하여 지시된 바와 같이 중간(intervening) 저장 명령(110) 위로 상승될 수 있다. 만일 중간 저장 명령(110)이 로드 명령(102)에 의하여 액세스된 동일한 메모리 어드레스에 새로운 데이터를 기록하면, 로드/저장 에일리어싱이 발생한다. 동작시에, 로드 명령(102C)은 특정 메모리 어드레스로부터 데이터(예컨대, 값 "0")를 판독할 것이며, 그 다음에 중간 저장 명령(110)은 이 동일한 메모리 어드레스에 새로운 데이터(예컨대, 값 "1")를 저장할 것이다. 사용 명령(104)을 만나게 될때, 사용 명령(104)은 "0"이 로드 명령(102C)에 의하여 판독된 값이기 때문에 "1" 대신에 "0"을 수신할 것이다. 그러나, 프로그래머는 사용 명령(104)이 값 "1"을 수신하도록 의도할 수 있으며, 이는 프로그래머가 소스 코드를 기록할때 로드 명령(102A) 및 사용 명령(104) 전에 중간 저장 명령(110)(값 "1"을 저장한)을 배치한 이유이다. 중간 저장 명령(110)보다 높게 로드 명령(102A)을 이동시킴으로써, 컴파일러는 사용 명령(104)이 부정확한 데이터를 수신하도록 할 수 있다. 따라서, 비록 저장 명령들 위로 로드 명령들을 상승시키는 것이 장점을 가질 수 있을지라도, 대부분의 컴파일러들은 중간 저장 명령들에 의하여 제한된다. 이는 고성능 마이크로프로세서들 및 병렬 컴파일러들에 있어서 중요한 성능 문제들을 제공한다.
이러한 문제를 해결하기 위한 한 방법은 "데이터 예측(data speculation)"으로 지칭된다. "전진 로드(Advanced Load)"(LD.A)" 및 "전진 로드 검사"(CHK.A)"로 지칭된 특정 명령들은 데이터 예측에 의하여 사용된다. LD.A는 메모리 어드레스로부터 데이터를 검색할때 "전진 로드 어드레스 테이블("ALAT")이라 지칭된 테이블에 메모리 어드레스를 삽입하는 로드 명령이다. 로드된 데이터는 다른 프로그램 명령들에 의하여 예측적으로(speculatively) 사용된다. 한편, 모든 저장 명령들은 메모리 어드레스에 데이터를 저장할 때 ALAT에 등록된 어드레스들과 메모리 어드레스를 비교한다. 임의의 매칭 엔트리들(에일리어스들)은 ALAT로부터 퇴거(evict)된다. 값이 ALAT로부터 퇴거되었다는 것을 뒤이은 CHK.A가 검출하면, CHK.A는 예외(exception)를 발생시킬 수 있다.
예외는 프로그램 또는 마이크로프로세서가 다른 루틴으로 분기(branch)하도록 하는 조건이며, 보통 에러 조건을 지시한다. 이러한 경우에, ALAT 퇴거가 검출될때 발생된 예외는 LD.A에 의하여 이전에 검색된 데이터의 예측적 사용(speculative use)의 복원을 트리거링한다. 이 데이터는 부정확한 데이터(에일리어스에 의하여 유발된)인 것으로 판명되었으며, 그 결과 상기 데이터의 사용은 예외-트리거링 복원 프로세스에서 수정되어야 한다. 이러한 복원은 상당한 작업 및 처리 시간량을 필요로 하며, 성능을 현저하게 저하시킨다. 따라서, 예외들의 발생은 바람직하지 않으며, 초과 수의 예외들은 컴파일러가 제 1 위치에 명령들을 재정렬할때 달성되는 임의의 장점들을 현저하게 저하시킬 수 있다.
본 발명의 일 양상에 있어서, 재정렬된 프로그램 명령들을 실행하는 방법은 제 1 메모리 어드레스로부터 제 1 값을 로드하는 단계; 메모리 어드레스들 및 값들간의 연관 관계들(association)을 기록하도록 구성된 테이블에 상기 제 1 메모리 어드레스를 기록하는 단계; 상기 제 1값이 상기 제 1 메모리 어드레스와 연관되도록 상기 테이블에 상기 제 1 값을 기록하는 단계; 제 2 메모리 어드레스에 제 2값을 저장하는 단계; 및 상기 제 1 및 제 2 메모리 어드레스들이 동일한지를 결정하는 단계를 포함한다.
본 발명의 다른 양상에서는 재정렬된 프로그램 명령들을 실행하는 방법을 수행하기 위하여 컴퓨터에 의하여 실행가능한 명령들의 프로그램을 저장한 컴퓨터 판독가능 매체가 제공되는데, 상기 방법은, 제 1 메모리 어드레스로부터 제 1 값을 로드하는 단계; 메모리 어드레스들 및 값들간의 연관 관계들(association)을 기록하도록 구성된 테이블에 상기 제 1 메모리 어드레스를 기록하는 단계; 상기 제 1값이 상기 제 1 메모리 어드레스와 연관되도록 상기 테이블에 상기 제 1 값을 기록하는 단계; 제 2 메모리 어드레스에 제 2값을 저장하는 단계; 및 상기 제 1 및 제 2 메모리 어드레스들이 동일한지를 결정하는 단계를 포함한다.
본 발명의 또 다른 양상에서는 컴퓨터 시스템이 제공되는데, 상기 컴퓨터 시스템은 다른 어드레스들에 의하여 지시된 다수의 위치들에 데이터를 저장하도록 구성된 메모리; 및 상기 메모리에 접속된 프로세서를 포함하며, 상기 프로세서는, 상기 메모리 어드레스들중 제 1 메모리 어드레스로부터 제 1 값을 로드하며, 메모리 어드레스들 및 값들간의 연관 관계들(association)을 기록하도록 구성된 테이블에 상기 제 1 메모리 어드레스를 기록하며, 상기 제 1값이 상기 제 1 메모리 어드레스와 연관되도록 상기 테이블에 상기 제 1 값을 기록하며, 상기 메모리 어드레스들중 제 2 메모리 어드레스에 제 2값을 저장하며, 및 상기 제 1 및 제 2 메모리 어드레스들이 동일한지를 결정한다.
본 발명의 또 다른 양상에서는 컴퓨터 시스템이 제공되는데, 상기 컴퓨터 시스템은, 데이터를 저장하는 수단; 및 제 1 메모리 어드레스로부터 제 1 값을 로드하며, 메모리 어드레스들 및 값들간의 연관 관계들(association)을 기록하도록 구성된 테이블에 상기 제 1 메모리 어드레스를 기록하며, 상기 제 1값이 상기 제 1 메모리 어드레스와 연관되도록 상기 테이블에 상기 제 1 값을 기록하며, 제 2 메모리 어드레스에 제 2값을 저장하며, 및 상기 제 1 및 제 2 메모리 어드레스들이 동일한지를 결정하는 수단을 포함한다.
도 1은 로드/저장 에일리어싱의 예를 도시한 도면이다.
도 2는 무선 통신 시스템을 도시한 도면이다.
도 3은 전화 시스템의 컴포넌트들을 기술한 블록도이다.
도 4는 저장된 값들을 검사하는 단계를 포함하는 프로세스의 예를 기술한 도면이다.
도 5는 중간 저장명령 이후에 예외가 발생되어야 하는지의 여부를 결정하는 논리 시퀀스를 기술한 흐름도이다.
도 6은 저장된 값들을 검사하는 단계를 포함하는 대안 프로세스의 예를 기술한 도면이다.
도 7은 중간 저장명령 이후에 예외가 발생되어야 하는지의 여부를 결정하는 대안 논리 시퀀스를 기술한 흐름도이다.
도 2는 여기에 기술된 다양한 실시예들이 사용될 수 있는 무선 통신 시스템을 기술한다. 다양한 실시예들이 통신 시스템에 사용하는 것으로 제한되지 않고 대신에 많은 다른 예시적인 응용들을 가질 수 있으며 또한 무선 통신 시스템이 단지 예시적으로 사용된다는 것을 당업자는 인식되어야 한다. 무선 통신 시스템(200)은 역방향 링크를 통해 데이터를 기지국(206)에 전송함으로써 지상 기반 데이터 네트워크(204)와 통신하는 가입자국(202)을 포함할 수 있다. 기지국(206)은 데이터를 수신한후 이들을 기지국 제어기("BSC")(208)를 통해 지상 기반 네트워크(204)에 라우팅할 수 있다. 역으로, 가입자국(202)으로의 통신들은 지상 기반 네트워크(204)로부터 BSC(208)를 통해 기지국(206)으로 라우팅될 수 있으며 기지국(206)으로부터 순방향 링크를 통해 가입자 유닛(202)으로 전송될 수 있다. 당업자가 인식하는 바와 같이, 순방향 링크 전송은 기지국(206) 및 하나 이상의 가입자국들(202)(다른 것들은 도시안 됨)사이에서 이루어질 수 있다. 유사하게, 역방향 링크 전송은 하나의 가입자국(202) 및 하나 이상의 기지국들(206)(다른 것들은 도시안됨)사이에서 이루어질 수 있다.
도 3은 본 발명이 사용될 수 있는 전화 시스템의 일부분의 다양한 컴포넌트들을 기술한 블록도이다. 컴퓨터 시스템(300)은 프로세서(302), 메모리(304) 및 다른 회로(306)를 포함할 수 있다. 컴퓨터 시스템(300)은 예컨대 서버, 클라이언트, 퍼스널 컴퓨터, 기지국 또는 가입자국을 포함하는 임의의 타입의 컴퓨터 시스템일 수 있다. 당업자는 메모리에 접속된 프로세서를 포함하는 많은 다른 타입의 컴퓨터 시스템들에 본 발명을 적용할 수 있다는 것을 인식해야 한다. 프로세서(302)는 예컨대 EPIC 마이크로프로세서를 포함할 수 있다. 마이크로프로세서는 예컨대 INTEL ITANIUM 마이크로프로세서일 수 있다. 컴파일러들과 관련하여 명령들을 재정렬하고 중간 저장 명령들 위로 로드 명령들을 전진시킬 수 있는 다른 프로세서들에 여기에서 언급된 기술들을 동일하게 적용할 수 있다는 것이 당업자에게 인식될 것이다. 프로세서(302)는 컴퓨터 프로그램내의 명령들을 전진시키기 위한 레지스터를 포함하거나 또는 이 레지스터와 통신할 수 있다. 프로세서(302)는 컴퓨터 프로그램 명령들에 의하여 명령되는 데이터를 검색하고 저장하는 메모리(304)와 통신할 수 있다. 프로세서(302)는 컴파일러로 하여금 여기에서 설명된 기술들에 따라 컴퓨터 프로그램내의 컴퓨팅 명령들을 재정렬하게 하도록 구성될 수 있다.
앞서 기술된 바와 같이, 데이터 예측은 로드/저장 에일리어싱과 연관된 문제점들을 완화시키기 위하여 특정 LD.A 및 CHK.A 명령들을 이용하는 방법이다. 저장 명령이 ALAT에 이미 기록된 메모리 어드레스에 액세스할 때마다 데이터 예측이 ALAT의 엔트리들을 퇴거시키기 때문에, CHK.A 명령은 다수의 예외들을 야기할 것이다. 예외 후에 예측적 데이터 사용(speculative data use)으로부터 복원하는 비용 효율성 외에, 이러한 방식은 예외가 발생될 때 요구되는 루틴들의 분기 및 뒤이은 동기화 때문에 예측블가능하다. 따라서, 여기에서 설명된 기술들에 따르면, ALAT 엔트리들은 저장 명령이 ALAT에 이미 기록된 메모리 어드레스에 액세스할 때마다 제거되지는 않는다.
컴퓨터 프로그램이 실행될때, 어떤 값들은 일관되게 또는 적어도 빈번하게 특정 어드레스에 저장될 수 있다. 다시 말해서, 어느 값은 비록 저장 명령들이 개별적으로 그리고 독립적으로 실행될지라도 저장 명령의 다른 인스턴스들(instance)에 의하여 동일한 특정 어드레스에 빈번하게 저장될 수 있다. 제 1 저장명령이 임의의 어드레스에 제 1 값을 기록한후 제 2 저장명령이 동일한 어드레스에 제 2값을 기록할때, 만일 제 1 및 제 2 값이 동일하면 제 1 값의 예측 사용으로부터 복원하기 위하여 예외를 발생시키는 것이 불필요하다. 만일 중간 저장명령이 데이터 위에 동일한 데이터를 기록하면, 원 데이터를 이전에 사용한 임의의 명령은, 데이터의 값이 중간 저장 명령전에 올바르기 때문에 보정될 필요가 없다.
이들 기술들에 따르면, ALAT는 메모리 어드레스들 및 저장된 값들 둘다를 저장하도록 구성될 수 있다. 마찬가지로, CHK.A 루틴은 ALAT에 기록된 어드레스들과 저장명령 어드레스들을 비교하는 것외에 ALAT에 기록된 값들과 저장된 값들을 비교하도록 수정될 수 있다. 프로세서는 2가지 조건 둘다가 만족될 때만, 즉 저장 어드레스가 ALAT에 기록된 어드레스와 매칭되고 저장된 값이 기록된 어드레스와 연관되어 ALAT에 기록된 값과 동일하지 않을때만, ALAT의 엔트리를 퇴거시키도록 구성될 수 있다. 이러한 경우를 검사함으로써, 여기에 개시된 프로세서 구성은 불필요한 예외를 제거할 수 있으며 전체 프로그램 효율을 개선할 수 있다. 만일 저장 어드레스가 ALAT에 기록된 어드레스와 매칭되나 저장된 값이 기록된 어드레스와 연관되어 ALAT에 기록된 값과 동일하면, ALAT 엔트리는 ALAT에 유지됨으로써, 비퇴거(un-evicted) ALAT 엔트리를 탐색 및 검색하는 CHK.A에 의하여 예외가 나중에 생성되지 않을 것이다.
도 4는 저장된 값들을 검사하는 단계를 포함하는 프로세스의 예를 기술한다. 컴퓨터 프로세서의 레지스터(400)의 프로그램 명령들은 프로그램이 실행될때 여기에 개시된 프로세스에 따라 수행된다. 임의의 명령들이 수행될때, 전진 로드 어드레스 및 값 테이블("ALAVT")(402)은 액세스될 수 있다. ALAVT(402)는 예컨대 프로세서에 의하여 액세스 가능한 메모리에 저장될 수 있거나 또는 프로세서 그 자체에 유지될 수 있다. 프로그램 동작이 진행될때, LD.A 명령(404)을 만날 수 있다. 도 4에 기술된 바와 같이, 이는 LD.A[B], Y로서 표시될 수 있으며, 이는 프로세서가 메모리 어드레스 "B"로부터 값 "Y"를 로드하기 위한 명령을 수행할 것이라는 것을 지시한다. 이러한 값을 로드하는 것과 관련하여, 또는 로드가 발생하기 전 또는 후에, 프로세서는 ALAVT(402)에 액세스할 수 있으며 엔트리(406)의 값 "Y"과 관련하여 어드레스 "B"를 기록할 수 있다.
다음에, 프로세서는 ST[B], X 명령(408)을 포함하는 부가 명령들을 만날 수 있다. 이러한 명령에 따르면, 프로세서는 메모리 어드레스 "B"에 값 "X"를 저장할 수 있다. 프로세서는 방금 기록된 어드레스 "B"가 이전에 로드되었는지의 여부를 확인하기 위하여 ALAVT(402)에 액세스할 수 있다. ALAVT(402)를 검사할때, 프로세서는 어드레스 "B"가 이전에 기록된 엔트리(406)를 만날 것이다. 그 다음에, 프로세서는 새로이 저장된 값 "X"가 이전에 로드된 값 "Y"와 동일한지의 여부를 질의할 수 있다. 만일 그렇다면, 프로세서는 정상적인 프로그램 실행을 계속할 수 있다. 그러나, 만일 "X"가 "Y"와 동일하지 않다고 결정되면, 프로세서는 퇴거(410)에 의하여 지시된 바와 같이 엔트리(406)를 퇴거시킬 수 있다. ALAVT(402)로부터 엔트리를 퇴거시킴으로서, 프로세서는 중간 저장명령(408)으로 인하여 어드레스 "B"로부터 이전에 로드된 값 "Y"가 부적절하게 사용될 수 있다는 지시를 제공한다. 따라서, 프로세서가 CHK.A[B] 명령(414)을 만날때, 프로세서는 어드레스 "B"를 가진 엔트리에 대하여 ALAVT(402)를 검사할 것이다. 그러나, 이러한 엔트리가 퇴거되기 때문에, 프로세서는 도면부호 416에 지시된 바와 같이 이러한 엔트리를 만나지 않을 것이다. 어드레스 "B"가 없다는 검출 결과는 프로세서로 하여금 중간 저장명령(408)으로 인하여 부정확하게 될 수도 있는 로드 명령(404)에 의하여 로드된 값 "Y"의 이전 사용의 복원을 트리거링하는 예외를 발생하도록 할 수 있다.
도 5는 저장된 값들을 검사하는 단계를 포함하는 대안 프로세스의 예를 기술한다. 블록(500)에서, 전진 로드명령은 컴퓨터 프로세서의 레지스터에서 전진될 수 있다. 명령 LD.A [A,X]는 메모리 어드레스 "A"로부터 값 "X"를 로드하도록 프로세서에 명령한다. 값 "X"가 로드될때, 프로세서는 블록(502)에서 지시된 바와 같이 로드된 값 "X"와 관련하여 어드레스 "A"를 기록한 ALAVT에 액세스할 수 있다. 이후에, 프로세서는 저장 명령을 만날 수 있다(블록 504). 명령 ST [B,Y]는 값 "Y"을 메모리 어드레스 "B"에 저장하도록 프로세서에 명령한다. 저장 명령과 관련하여, 프로세서는 저장 명령 메모리 어드레스 "B"가 블록(500)에서 이전에 액세스된 로드 명령 메모리 어드레스 "A"와 동일한지의 여부를 결정 블록(506)에서 질의할 수 있다. 만일 그렇치 않으면, 프로세서는 블록(508)에서 지시된 바와 같이 정상적인 프로그램 실행을 계속할 수 있다. 그러나, 만일 어드레스들이 매칭되면, 프로세서는 어드레스로부터 이전에 로드된 값(블록(500)에서의 값 "X")이 방금 저장된 값(블록(504)에서의 값 "Y")과 동일한지의 여부를 결정 블록(510)에서 검사할 수 있다. 만일 값들이 동일하면, 프로세서는 블록(512)에서 지시된 바와 같이 정상적인 프로그램 동작을 계속할 수 있다. 그러나, 만일 값들이 동일하지 않으면, 프로세서는 다른 루틴을 따를 것이다.
만일 결정 블록(510)에서 검사된 값들이 동일하지 않으면, 프로세서는 ALAVT에서 값 "X"와 메모리 어드레스 "A"를 연관시킨 레코드(record)를 퇴거시킬 수 있다(블록 514). 다음으로, 프로세서가 블록(516)에서 전진 로드 명령을 만나면, 프로세서는 ALAVT에 액세스하고 기록된 메모리 어드레스 "A"를 가진 엔트리를 탐색할 수 있다. 이러한 엔트리가 블록(514)에서 퇴거되기 때문에, 프로세서는 ALAVT에 "A" 엔트리를 위치시키지 않으며, 이는 프로세서로 하여금 예외를 생성하도록 한다(블록 518). 예외는 값 "X"가 메모리 위치 "A"로부터 로드된 후에 다른 명령에 의하여 사용될 수 있는 값 "X"의 임의의 이전 사용을 복원하기 위하여 다른 루틴 또는 명령 세트로 분기하도록 프로세서를 트리거링할 수 있다. 이는 블록(520)에서 지시된다. 복원후에, 프로세서는 정상적인 프로그램 동작으로 다시 한번 리턴할 수 있다.
도 6은 예외가 중간 저장 명령후에 생성되어야 하는지의 여부를 결정하는 논리 시퀀스를 기술한 흐름도이다. 프로세서의 레지스터(600)의 명령들은 메모리의 ALAVT(602)의 액세스와 관련하여 수행될 수 있다. 초기에, 전진 로드 명령(604), LD.A[B], Y는 메모리 어드레스 "B"로부터 값 "Y"을 로드하도록 프로세서에 명령할 수 있다. 프로세서는 어드레스 "B"를 현재의 값 "Y"과 연관시킨 엔트리(606)를 생성함으로서 ALAVT(602)에 이러한 로드 명령을 기록할 수 있다. 다음으로, 저장 명령(608), ST[B], X는 메모리 어드레스 "B"에 값 "X"를 저장하도록 프로세서에 명령할 수 있다. 프로세서는 "Y"를 "X", 즉 새로이 저장된 현재 값으로 대체하고 "Y"를 이전 값 위치로 이동시킴으로써 상기의 동작을 기록할 수 있다. 이는 엔트리(610)에 표시된다. 그 다음에, 다른 저장 명령(612)은 값 "Y"를 메모리 어드레스 "B"에 저장하도록 프로세서에 명령할 수 있다. 이는, 엔트리(614)에 표시된 바와 같이, "Y"가 현재의 값이 되도록 하며 또한 "X"가 이전 값이 되도록 한다.
메모리 위치 "B"로부터 데이터를 요청하는 뒤이은 사용 명령(616)은 로드 명령(604)에 의하여 로드된 이전 로드 값 "Y"를 사용할 것이다. 비록 중간 저장 명령들(608, 612)이 존재할지라도, 어드레스 "B"에 저장된 데이터의 현재의 값이 "Y", 즉 로드된 동일한 값이기 때문에, 프로세서는 예외를 발생시키는 것을 거절할 수 있다. 이는 ALAVT(602)에 어드레스 "B"를 위치시키도록 프로세서에 명령하는 전진 검사 명령(618), CHK.A[B]에 의하여 결정될 수 있다. 어드레스는 연관된 현재의 값 "Y"와 함께 엔트리(620)에 배치될 수 있다. 프로세서는 로드 명령(604)에 의하여 이전에 로드된 값 "Y"와 현재의 값 "Y"를 비교하여 이들이 동일한지를 결정할 수 있다. 만일 비교된 값들이 동일하지 않으면 사용 명령(616)과 같은 중간 명령들에 의하여 값 "Y"의 예측 사용의 복원을 트리거링하기 위하여 프로세서가 예외를 발생시킬 수 있다는 것이 당업자에 의하여 이해될 것이다.
도 7은 중간 저장 명령후에 예외가 발생되어야 하는지의 여부를 결정하는 대안적인 논리 시퀀스를 기술한 흐름도이다. 값이 중간 저장 명령과 매칭되지 않는 ALAVT 엔트리를 퇴거시키는 대신에, 새로이 저장된 값이 ALAVT 엔트리에 추가된다. 값들이 매칭되는지의 여부를 결정하는 것은 전진 로드 명령에 의하여 이루어질 수 있다. 이러한 절차는 각각의 어드레스에 대하여 하나 이상의 값 엔트리를 포함하는 ALAVT에 적용된다. 이러한 예가 도 6의 ALAVT(602)와 같이 각각의 어드레스에 대하여 2개의 값 엔트리를 가진 ALAVT를 포함하는 반면에, 여기에 개시된 기술들은 각각의 어드레스에 대하여 임의의 수의 값 엔트리들을 가진 ALAVT에 적용가능하다.
블록(700)에서, 전진 로드 LD.A[A,X]는 메모리 어드레스 "A"로부터 값 "X"를 로드하도록 컴퓨터 프로세서에 명령할 수 있다. 로드 명령은 ALAVT에 어드레스 "A"와 연관된 값 "X"를 기록함으로서 기록된다(블록 702). 저장 명령은 블록(704)에서 실행될 수 있다. 명령 ST [B,Y]은 프로세서로 하여금 값 "Y"를 메모리 어드레스 "B"에 저장하도록 할 수 있다. 프로세서는 메모리 어드레스 "A"가 메모리 어드레스 "B"와 동일한지의 여부를 결정 블록(706)에서 검사할 수 있다. 만일 동일하지 않다면, 프로세서는 프로그램 동작을 진행할 수 있다(블록 707). 그러나, 만일 어드레스가 동일하다면, 프로세서는 블록(708)에서 ALAVT 엔트리에 추가할 수 있다. 프로세서는 이전에 로드된 값 "X"을 ALAVT 엔트리의 "이전 값" 위치로 이동시키고, 새로이 기록된 값 "Y"을 ALAVT 엔트리의 "현재 값" 위치에 기록할 수 있으며, 이들 값 둘다는 ALAVT 엔트리의 메모리 어드레스 "A"와 연관된다.
블록(710)에서, 전진 로드 체크, CHK.A[A]는 메모리 어드레스 "A"를 기록한 엔트리들에 대한 ALAVT를 검사하도록 프로세서에 명령할 수 있다. 본 예에서, 엔트리 "A, Y, X"는 프로세서에 의하여 배치될 것이며(블록 712), 여기서 X는 이전 값이며, "Y"는 현재 값이다. 결정 블록(714)에서, 프로세서는 현재의 값 "Y"가 블록(700)에서 로드된 이전 값 "X"과 동일한지의 여부를 검사할 수 있다. 만일 동일하면, 프로세서는 이전 값 "X"의 임의의 중간 사용이 새로이 로드되고 동일한 값 "Y"에 의하여 영향을 받지 않기 때문에 프로그램 동작을 진행할 수 있다(블록 716). 그러나, 만일 값들이 다른 것으로 결정되면, 블록(718)에서 프로세서는 예외를 발생할 수 있다. 블록(720)에서, 예외는 값 "X"의 이전 사용으로부터 복원하기 위하여 프로세서를 트리거링할 수 있는데, X는 "Y"로 변경되어 이전 사용들이 부정확하게 되도록 하였다.
따라서, 컴퓨팅 명령들을 재정렬하는 신규하고 개선된 방법 및 장치가 기술된다. 당업자는 전술한 상세한 설명 전반에 걸쳐 참조될 수 있는 데이터, 지시어, 명령어, 정보, 신호, 비트, 심볼 및 칩이 전압, 전류, 전자기 파, 자계 또는 자기입자, 광계 또는 광입자, 또는 이들의 임의의 결합에 의해 유리하게 표현될 수 있다는 것을 이해할 것이다. 당업자들은 여기에 기술된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 단계가 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 결합으로 구현될 수 있다는 것을 인식해야 한다. 다양한 예시적인 소자, 블록, 모듈, 회로, 및 단계는 그들의 기능들과 관련하여 앞서 기술되었다. 이러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지의 여부는 전체 시스템상에 부여된 특정 응용 및 설계 제약들에 따른다. 당업자는 이러한 환경들하에서 하드웨어 및 소프트웨어의 상호 교환성을 인식하고 또한 각각의 특정 응용에 대하여 기술된 기능을 최상으로 구현하는 방법을 인식할 것이다. 예로서, 여기에 기술된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록, 모듈, 및 회로는 범용 프로세서, 디지털 신호 처리기(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 논리 디바이스, 개별 게이트 또는 트랜지스터 논리장치, 개별 하드웨어 소자, 또는 여기에 기술된 기능들을 수행하도록 설계된 임의의 결합에 의해 구현 또는 수행될 수 있다. 범용 프로세서는 유리하게 마이크로 프로세서일 수 있으나, 대안적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모 리, EEPROM 메모리, 레지스터, 하드 디스크, 제거가능 디스크, CD-ROM, 또는 당업계에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적 저장 매체는 유리하게 프로세서에 접속되며, 프로세서는 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있다. 대안으로써, 저장 매체는 프로세서와 통합될 수 있다. 프로세서 및 저장 매체는 ASIC에 배치될 수 있다. ASIC는 전화 또는 다른 사용자 단말에 배치될 수 있다. 대안으로써, 프로세서 및 저장 매체는 전화 또는 사용자 단말에서 개별 소자로서 배치될 수 있다. 프로세서는 DSP 또는 마이크로프로세서의 조합으로서 또는 DSP 코어 등과 관련한 두개의 마이크로프로세서들로서 구현될 수 있다.
기술된 실시예들의 이전 설명은 당업자로 하여금 본 발명을 실시 및 이용할 수 있도록 하기 위하여 제공된다. 이들 실시예에 대한 다양한 수정들은 당업자들에게 자명할 것이고, 여기에서 한정된 일반적 원리들은 본 발명의 사상 또는 범위를 벗어나지 않으면서 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기에 기술된 실시예들에 제한되지 않으며 여기에 기술된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따를 것이다.

Claims (25)

  1. 재정렬된(re-ordered) 프로그램 명령들을 실행하기 위한 방법으로서,
    제 1 메모리 어드레스로부터 제 1 값을 로드하는 단계;
    메모리 어드레스들과 값들 사이의 연관 관계들(associations)을 기록하도록 구성되는 테이블의 제 1 테이블 엔트리의 어드레스 영역에 상기 제 1 메모리 어드레스를 기록하는 단계 ―여기서, 상기 테이블은 하나 이상의 테이블 엔트리들을 포함하며, 각각의 테이블 엔트리는 대응하는 어드레스 영역, 대응하는 제 1 값 영역, 및 대응하는 제 2 값 영역을 포함하며, 상기 대응하는 제 2 값 영역은 상기 대응하는 제 1 값 영역 및 상기 대응하는 어드레스 영역과 관련됨―;
    상기 제 1 테이블 엔트리의 상기 제 1 값 영역에 상기 제 1 값을 기록하는 단계;
    상기 제 1 값을 기록한 후, 제 2 값을 제 2 메모리 어드레스에 저장하는 단계;
    상기 제 1 메모리 어드레스와 상기 제 2 메모리 어드레스가 동일하다고 결정하는 단계; 및
    이전에 기록된 제 1 값을 상기 제 1 테이블 엔트리의 상기 제 2 값 영역으로 이동시키는 단계 및 뒤이어 저장된 제 2 값을 상기 제 1 테이블 엔트리의 상기 제 1 값 영역에 기록하는 단계를 포함하는,
    재정렬된 프로그램 명령들을 실행하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 어드레스와 상기 제 2 메모리 어드레스가 동일하다고 결정하는 단계는 상기 제 2 메모리 어드레스를 상기 제 1 테이블 엔트리에 기록된 상기 제 1 메모리 어드레스와 비교하는 단계를 포함하는, 재정렬된 프로그램 명령들을 실행하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 제 1 값 및 상기 제 2 값이 동일하다고 결정하는 단계, 및 예외(exception)를 발생시키지 않고 다음 프로그램 명령으로 진행하는 단계를 더 포함하는, 재정렬된 프로그램 명령들을 실행하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 제 1 값과 상기 제 2 값이 상이하다고 결정하는 단계를 더 포함하는, 재정렬된 프로그램 명령들을 실행하기 위한 방법.
  5. 제 4 항에 있어서,
    예외를 발생시키는 단계를 더 포함하며,
    상기 제 1 테이블 엔트리에 기록된 상기 제 1 값과 상기 제 1 테이블 엔트리에 기록된 상기 제 2 값을 비교함으로써, 상기 제 1 값 및 상기 제 2 값이 상이하다고 결정되는, 재정렬된 프로그램 명령들을 실행하기 위한 방법.
  6. 제 5 항에 있어서,
    상기 예외를 발생시키기 전에 상기 제 1 값을 사용하여 제 1 명령을 실행하는 단계를 더 포함하는, 재정렬된 프로그램 명령들을 실행하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 예외는 상기 제 1 값의 이전 사용의 복원을 트리거링하는, 재정렬된 프로그램 명령들을 실행하기 위한 방법.
  8. 하드웨어 프로세서에 의해 실행가능한 명령들로 구성된 프로그램을 포함하는 컴퓨터 판독가능 저장 매체로서, 상기 명령들은,
    제 1 메모리 어드레스로부터 제 1 값을 로딩하기 위한 명령;
    테이블의 제 1 테이블 엔트리의 어드레스 영역에 상기 제 1 메모리 어드레스를 기록하기 위한 명령 ―여기서, 상기 제 1 테이블 엔트리는 현재 값 영역 및 이전 값 영역을 추가로 포함함―;
    상기 제 1 테이블 엔트리의 상기 제 1 값 영역에 상기 제 1 값을 기록하기 위한 명령;
    상기 제 1 값을 기록한 후, 제 2 값을 제 2 메모리 어드레스에 저장하기 위한 명령;
    상기 제 1 메모리 어드레스와 상기 제 2 메모리 어드레스가 동일하다고 결정하기 위한 명령;
    상기 제 1 메모리 어드레스와 상기 제 2 메모리 어드레스가 동일하다고 결정한 후, 이전에 기록된 제 1 값을 상기 제 1 테이블 엔트리의 상기 제 2 값 영역으로 이동시키기 위한 명령; 및
    뒤이어 저장된 제 2 값을 상기 제 1 테이블 엔트리의 상기 현재 값 영역에 기록하기 위한 명령을 포함하는,
    컴퓨터 실행가능 저장 매체.
  9. 제 8 항에 있어서,
    상기 제 1 메모리 어드레스와 상기 제 2 메모리 어드레스가 동일하다고 결정하기 위한 명령은, 상기 제 1 테이블 엔트리의 어드레스 영역의 내용들과 상기 제 2 메모리 어드레스를 비교하기 위한 명령을 포함하는, 컴퓨터 실행가능 저장 매체.
  10. 제 8 항에 있어서,
    상기 제 1 값과 상기 제 2 값이 동일하다고 결정하고, 그리고
    예외를 발생시키지 않고 다음 프로그램 명령으로 진행하기 위한, 상기 하드웨어 프로세서에 의해 실행가능한 명령을 더 포함하는, 컴퓨터 실행가능 저장 매체.
  11. 제 8 항에 있어서,
    상기 제 1 테이블 엔트리의 상기 현재 값 영역에 상기 제 2 값을 기록한 후, 상기 제 1 값과 상기 제 2 값이 상이한 지를 결정하기 위한, 상기 하드웨어 프로세서에 의해 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능 저장 매체.
  12. 제 8 항에 있어서,
    예외를 발생시키기 위한, 상기 하드웨어 프로세서에 의해 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능 저장 매체.
  13. 제 12 항에 있어서,
    상기 제 2 값을 저장하기 전에 상기 로딩된 제 1 값을 이용하는 명령을 실행하기 위한, 상기 하드웨어 프로세서에 의해 실행가능한 명령을 더 포함하는, 컴퓨터 실행가능 저장 매체.
  14. 제 13 항에 있어서,
    상기 예외는 상기 실행된 명령의 복원을 트리거링하는, 컴퓨터 실행가능 저장 매체.
  15. 컴퓨터 시스템으로서,
    다수의 위치들에 데이터를 저장하도록 구성되는 메모리 ―여기서, 상기 각각의 위치는 대응하는 메모리 어드레스들을 가짐―; 및
    상기 메모리에 연결되는 하드웨어 프로세서를 포함하며, 상기 하드웨어 프로세서는,
    중간(intervening) 저장 명령 위로 로드 명령을 전진시키고,
    제 1 메모리 어드레스로부터 제 1 값을 로딩하고,
    테이블의 제 1 테이블 엔트리의 어드레스 영역에 상기 제 1 메모리 어드레스를 기록하고 ―여기서, 상기 테이블은 상기 메모리에 저장되고, 상기 테이블은 상기 제 1 테이블 엔트리를 포함하는 하나 이상의 테이블 엔트리들을 포함하며, 각각의 테이블 엔트리는 대응하는 어드레스 영역, 대응하는 제 1 값 영역 및 대응하는 제 2 값 영역을 포함하며, 상기 대응하는 제 1 값 영역 및 상기 대응하는 제 2 값 영역은 상기 대응하는 어드레스 영역에 관련됨―,
    상기 제 1 테이블 엔트리의 상기 제 1 값 영역에 상기 제 1 값을 기록하고,
    상기 제 1 값을 기록한 후, 제 2 값을 제 2 메모리 어드레스에 저장하고,
    상기 제 1 메모리 어드레스와 상기 제 2 메모리 어드레스가 동일하다고 결정하고,
    이전에 기록된 제 1 값을 상기 제 1 테이블 엔트리의 상기 제 2 값 영역으로 이동시키고, 뒤이어 저장된 제 2 값을 상기 테이블 엔트리의 상기 제 1 값 영역에 기록하고, 그리고
    상기 제 1 값과 상기 제 2 값을 비교함으로써 상기 제 1 값과 상기 제2 값이 상이하다고 결정될 때 예외를 발생시키도록 구성되는,
    컴퓨터 시스템.
  16. 제15항에서,
    상기 컴퓨터 시스템은 기지국을 포함하는, 컴퓨터 시스템.
  17. 컴퓨터 시스템으로서,
    데이터를 저장하기 위한 수단―여기서, 상기 데이터는 다수의 엔트리들을 갖는 테이블을 포함하며, 각각의 엔트리는 대응하는 어드레스 영역, 대응하는 현재 값 영역, 및 대응하는 이전 값 영역을 포함하며, 각각의 엔트리는 메모리 어드레스와 관련되는 적어도 두 개의 값들을 저장함―; 및
    하드웨어 프로세서를 포함하며, 상기 하드웨어 프로세서는,
    제 1 메모리 어드레스로부터 제 1 값을 로딩하고,
    상기 테이블의 제 1 엔트리에 상기 제 1 메모리 어드레스를 기록하고,
    상기 제 1 엔트리의 현재 값 영역에 상기 제 1 값을 기록하고,
    상기 제 1 값을 기록한 후, 제 2 값을 제 2 메모리 어드레스에 저장하고,
    상기 제 1 메모리 어드레스와 상기 제 2 메모리 어드레스가 동일하다고 결정하고,
    이전에 기록된 제 1 값을 상기 제 1 엔트리의 이전의 값 영역으로 이동시키고, 그리고
    뒤이어 저장된 제 2 값을 상기 제 1 엔트리의 현재 값 영역에 기록하도록 구성되는,
    컴퓨터 시스템.
  18. 제 17 항에 있어서,
    상기 컴퓨터 시스템은 기지국을 포함하는, 컴퓨터 시스템.
  19. 제 17 항에 있어서,
    상기 하드웨어 프로세서는 중간 저장 명령 위로 로드 명령을 전진시키기 위해 프로세싱 명령들을 재정렬하도록 적응되는, 컴퓨터 시스템.
  20. 제 17 항에 있어서,
    상기 하드웨어 프로세서는 컴파일러와 관련하여 실행될 명령들을 재정렬하도록 추가로 구성되는, 컴퓨터 시스템.
  21. 제 20 항에 있어서,
    상기 하드웨어 프로세서는 클록 사이클 동안 다수의 명령들을 동시에 실행하도록 추가로 구성되는, 컴퓨터 시스템.
  22. 제 1 항에 있어서,
    상기 이전에 기록된 제 1 값을 상기 제 1 테이블 엔트리의 상기 제 2 값 영역으로 이동시키는 단계 및 상기 뒤이어 저장된 제 2 값을 상기 제 1 테이블 엔트리의 상기 제 1 값 영역에 기록하는 단계는, 상기 제 1 테이블 엔트리의 상기 제 1 값 영역에서 상기 이전에 기록된 제 1 값을 상기 다음으로 기록된 제 2 값으로 대체하는 단계를 포함하는, 재정렬된 프로그램 명령들을 실행하기 위한 방법.
  23. 제 8 항에 있어서,
    상기 뒤이어 저장된 제 2 값을 상기 제 1 테이블 엔트리의 상기 현재 값 영역에 기록하기 위한 명령은, 상기 제 1 테이블 엔트리의 상기 현재 값 영역에서 상기 이전에 기록된 제 1 값을 상기 뒤이어 저장된 제 2 값으로 대체하기 위한 명령을 포함하는, 컴퓨터 실행가능 저장 매체.
  24. 제 15 항에 있어서,
    상기 이전에 기록된 제 1 값을 상기 제 1 테이블 엔트리의 상기 제 2 값 영역으로 이동시키고, 상기 뒤이어 저장된 제 2 값을 상기 테이블 엔트리의 상기 제 1 값 영역에 기록하는 것은, 상기 이전에 기록된 제 1 값을 상기 뒤이어 저장된 제 2 값으로 대체하는 것인, 컴퓨터 시스템.
  25. 제 17 항에 있어서,
    상기 뒤이어 저장된 제 2 값을 상기 제 1 엔트리의 상기 현재 값 영역에 기록하는 것은, 상기 제 1 엔트리의 상기 현재 값 영역에서 상기 이전에 기록된 제 1 값을 상기 뒤이어 저장된 제 2 값으로 대체하는 것인, 컴퓨터 시스템.
KR1020087006023A 2005-08-12 2006-08-09 재정렬된 프로그램 명령들을 실행하기 위한 컴퓨터 시스템, 방법 및 컴퓨터 판독가능 저장 매체 KR101049344B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/202,770 2005-08-12
US11/202,770 US7613906B2 (en) 2005-08-12 2005-08-12 Advanced load value check enhancement
PCT/US2006/031297 WO2007021887A2 (en) 2005-08-12 2006-08-09 Advanced load value check enhancement

Publications (2)

Publication Number Publication Date
KR20080041251A KR20080041251A (ko) 2008-05-09
KR101049344B1 true KR101049344B1 (ko) 2011-07-13

Family

ID=37564037

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087006023A KR101049344B1 (ko) 2005-08-12 2006-08-09 재정렬된 프로그램 명령들을 실행하기 위한 컴퓨터 시스템, 방법 및 컴퓨터 판독가능 저장 매체

Country Status (7)

Country Link
US (1) US7613906B2 (ko)
EP (1) EP1922612B1 (ko)
KR (1) KR101049344B1 (ko)
CN (2) CN103336682B (ko)
IL (1) IL189451A0 (ko)
MX (1) MX2008001997A (ko)
WO (1) WO2007021887A2 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937565B2 (en) * 2007-02-21 2011-05-03 Hewlett-Packard Development Company, L.P. Method and system for data speculation on multicore systems
US11098139B2 (en) 2018-02-28 2021-08-24 Chevron Phillips Chemical Company Lp Advanced quality control tools for manufacturing bimodal and multimodal polyethylene resins

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055516A1 (en) * 2003-09-10 2005-03-10 Menon Vijay S. Method and apparatus for hardware data speculation to support memory optimizations

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5682493A (en) * 1993-10-21 1997-10-28 Sun Microsystems, Inc. Scoreboard table for a counterflow pipeline processor with instruction packages and result packages
AU6393799A (en) 1998-10-30 2000-05-22 Intel Corporation A computer product, method, and apparatus for detecting conflicting stores on speculatively boosted load operations
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US6728867B1 (en) * 1999-05-21 2004-04-27 Intel Corporation Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point
US6408379B1 (en) * 1999-06-10 2002-06-18 Advanced Micro Devices, Inc. Apparatus and method for executing floating-point store instructions in a microprocessor
US6658559B1 (en) * 1999-12-31 2003-12-02 Intel Corporation Method and apparatus for advancing load operations
US6681317B1 (en) * 2000-09-29 2004-01-20 Intel Corporation Method and apparatus to provide advanced load ordering
US7062638B2 (en) * 2000-12-29 2006-06-13 Intel Corporation Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores
CN1142485C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 流水线控制相关延迟消除方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055516A1 (en) * 2003-09-10 2005-03-10 Menon Vijay S. Method and apparatus for hardware data speculation to support memory optimizations

Also Published As

Publication number Publication date
US20070035550A1 (en) 2007-02-15
MX2008001997A (es) 2008-04-16
CN103336682A (zh) 2013-10-02
WO2007021887A3 (en) 2007-05-18
EP1922612B1 (en) 2014-04-23
CN101283331A (zh) 2008-10-08
CN101283331B (zh) 2013-05-29
IL189451A0 (en) 2008-08-07
EP1922612A2 (en) 2008-05-21
KR20080041251A (ko) 2008-05-09
CN103336682B (zh) 2016-07-06
WO2007021887A2 (en) 2007-02-22
US7613906B2 (en) 2009-11-03

Similar Documents

Publication Publication Date Title
KR102538139B1 (ko) 공간적 메모리 스트리밍 신뢰 메커니즘
US9081563B2 (en) Method and apparatus for enhancing scheduling in an advanced microprocessor
US10884739B2 (en) Systems and methods for load canceling in a processor that is connected to an external interconnect fabric
US20030196046A1 (en) System and method for prefetching data into a cache based on miss distance
US7174428B2 (en) Method and system for transforming memory location references in instructions
US7100157B2 (en) Methods and apparatus to avoid dynamic micro-architectural penalties in an in-order processor
US9003171B2 (en) Page fault prediction for processing vector instructions
JP2001229022A (ja) コンピュータ処理システムにおけるスタック・リファレンスのリネーム方法およびそのプログラム記憶装置
JP2008530712A (ja) 復帰スタックを管理する方法および装置
US20040117606A1 (en) Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
KR101049344B1 (ko) 재정렬된 프로그램 명령들을 실행하기 위한 컴퓨터 시스템, 방법 및 컴퓨터 판독가능 저장 매체
JP4137735B2 (ja) 動的遅延演算情報を使用して制御投機ロードの即時遅延を制御する方法およびシステム
US20050149703A1 (en) Utilizing an advanced load address table for memory disambiguation in an out of order processor
US20030005422A1 (en) Technique for improving the prediction rate of dynamically unpredictable branches
WO2019202287A1 (en) An apparatus and method for prefetching data items
US11740906B2 (en) Methods and systems for nested stream prefetching for general purpose central processing units
US20050251795A1 (en) Method, system, and program for optimizing code
CN117472447B (zh) 寄存器重命名恢复方法、装置和设备
JP3608446B2 (ja) コンパイラ装置とプロセッサ
CN114217806A (zh) 基于cache写暗示机制的编译优化方法
KR20220154821A (ko) 프로세서 파이프라인에서 간접 점프의 페치 스테이지 처리
WO2000026771A1 (en) A computer product, method, and apparatus for detecting conflicting stores on speculatively boosted load operations

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee