KR20020022068A - 향상된 마이크로프로세서에서의 스케줄링을 향상시키는방법 및 장치 - Google Patents

향상된 마이크로프로세서에서의 스케줄링을 향상시키는방법 및 장치 Download PDF

Info

Publication number
KR20020022068A
KR20020022068A KR1020017016123A KR20017016123A KR20020022068A KR 20020022068 A KR20020022068 A KR 20020022068A KR 1020017016123 A KR1020017016123 A KR 1020017016123A KR 20017016123 A KR20017016123 A KR 20017016123A KR 20020022068 A KR20020022068 A KR 20020022068A
Authority
KR
South Korea
Prior art keywords
instructions
sequence
rearranged
exception
storing
Prior art date
Application number
KR1020017016123A
Other languages
English (en)
Other versions
KR100758367B1 (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 KR20020022068A publication Critical patent/KR20020022068A/ko
Application granted granted Critical
Publication of KR100758367B1 publication Critical patent/KR100758367B1/ko

Links

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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)

Abstract

본 발명은 스케줄러 소프트웨어로 하여금 코드를 생성하도록 하여, 스케줄링 동작들에 놓여진 정규 제한들의 일부를 무시하고, 가능한한 고속으로 작동하는 특정 명령들을 스케줄링하고, 만약 상기 스테줄링이 스케줄링 제한을 위반하면 예외를 생성하고, 명령들에 대한 예외가 생성되는 각 일련의 명령들을 정확하게 실행하도록 하는 조치가 취해지는지를 판단함으로써 보다 고속으로 실행하도록 하는 장치 및 방법에 관한 것이다.

Description

향상된 마이크로프로세서에서의 스케줄링을 향상시키는 방법 및 장치{METHOD AND APPARATUS FOR ENHANCING SCHEDULING IN AN ADVANCED MICROPROCESSOR}
최근, 모프(morph) 호스트 프로세서와는 다른 프로세서를 위해 고안된 응용 프로그램들을 상기 프로그램들이 고안된 프로세서(목적 프로세서)에 의해 획득될 수 없는 속도로 실행하기 위해 단순하나 매우 빠른 호스트 컴퓨터(일면 "모프 호스트)와 소프트웨어(일명 "코드 모핑 소프트웨어(code morphing software)")를 결합하는 새로운 마이크로프로세서가 발전되고 있다. 상기 모프 호스트 프로세서는 상기 응용 프로그램들을 원천 목적 소프트웨어(original target software)의 목적을 성취하는 모프 호스트 프로세서 명령으로 번역하기 위해 상기 코드 모핑 소프트웨어를 실행한다. 상기 목적 명령들이 번역된 때, 이들은 실행되고 추가적인 번역없이 접근될 수 있는 번역 버퍼에 저장된다. 비력 초기 번역과 프로그램의 실행이 느리더라도, 일단 번역되면, 하드웨어에서 프로그램을 실행하는데 일반적으로 요청되는 많은 단계들이 제거된다.
고속으로 다른 프로세서들을 위해 고안된 프로그램을 실행할 수 있게 하기위해, 상기 모프 호스트 프로세서는 다수의 하드웨어 개발품들을 구비한다. 상기 개발품 중의 하나는 상기 호스트 프로세서와 번역 버퍼 사이에 위치한 게이트 저장 버퍼(gated store buffer)이다. 두번째 개발품은 번역되는 목적 명령들의 시퀀스의 시작에서 상기 목적 머신(target machine)의 상태를 저장하는 일련의 호스트 레지스터들이다. 상기 목적 프로세스의 알려진 상태에 미치는 목적 명령들의 시퀀스들은 모프 호스트 명령들로 번역되고 실행을 대기하며 상기 번역 버퍼에 위치된다. 만약 상기 번역된 명령들이 예외(exception)을 증가시킴이 없이 실행하면, 명령의 시퀀스의 시작에서의 상기 목적 상태는 상기 시퀀스가 완료된 시점에서의 목적 상태로 갱신된다.
만약 번역되는 호스트 명령들의 시퀀스의 실행동안 예외가 발생하면, 상기 처리는 중단된다; 전체 동작은 상기 목적 머신의 알려진 상태가 존재하는 목적 명령들의 시퀀스의 시작으로 복귀하거나 되돌아간다. 이것으로 명령들을 동적으로 번역하고 실행하는 예외의 고속 및 정확한 처리가 가능하고 종래에 성취될 수 없었던 결과를 가능하게 한다.
상기 코드 모핑 소프트웨어의 부분인 스케줄러(scheduler)에 의해 새로운 마이크로프로세서를 동작시키는 속도가 획득된다. 명령들이 생(raw) 번역에 의해 생성된 무처리(naive) 배열(order)을 동일 결과를 생성하나 보다 빠른 실행을 가능하게 하는 배열로 번역됨으로써, 상기 스케줄러는 상기 명령들을 재배열하고 재스케줄한다. 스케줄러는 상기 재스케줄된 소프트웨어의 실행에 보다 적은 시간이 소요되도록 다른 명령들에 앞서 특정 명령들을 배치하거나 동시에 명령들을 실행하려고한다. 스케줄러들은 상기 재스케줄된 프로그램이 원본 프로그램과 동일한 최종 결과들을 생성하여야 하는 것과 같은 가장 기본을 다수의 제한을 가지고 수행한다. 예를 들면, 상기 시퀀스들이 올바른 결과들을 생성하기 위해 인터럽션(interruption) 없이 수행되어야 하는 프로그램 내의 명령들의 시퀀스들이 있다. 스케줄러는 생성된 결과들을 방해함이 없이 이러한 시퀀스들을 방해하지 않는다. 많은 프로세서들이 하드웨어 연동장치(interlocks)를 제공하여 이러한 시퀀스들이 인터럽션 없이 수행되도록 한다. 명령들의 시퀀스를 보호하는 필요성은 상술된 향상된 모프 호스트 프로세서와 같은 하드웨어 연동장치없이 프로세서들에 대한 특수한 제한들을 부여한다. 소프트웨어는 이러한 시퀀스들을 인식하여야 하고 상기 시퀀스들이 인터럽션 없이 수행되는 것을 확증시켜야 한다.
제어 종속성들은 저장에 관하여 로드들(loads)의 재배열에 영향을 미친다. 예를 들면, 만약 갱신된 데이터가 메모리 주소에 저장되어야 하고 레지스터 동작에서 조작되어야 한다면, 상기 주소의 데이터는 상기 저장이 발생한 때 레지스터에 유지되지 않거나 상기 레지스터 내의 데이터는 버려진다.
이러한 모든 제한들이 종래의 스케줄러로 하여금 매우 보존적으로 기능하게 하여 결과적으로 더 느린 코드를 생성하게 한다.
종래의 스케줄러는 재배열을 성취하기 위해 서로 의존하는 명령들을 판단하는데 최선을 다한다. 이러한 스케줄러는 일부 동작들이 다른 동작들에 어느 정도 의존하는지와 일부 동작들이 다른 동작들에 의존하지 않는지를 결정할 수 있으나, 다른 동작들에 관한 어떤 점도 결정할 수 없다. 이러한 스케줄러는 상기 동작들이유래된 일반적인 무처리 배열로 상기 명령들을 배열함으로써 다른 동작들을 보존적으로 의존하는 이러한 동작들을 처리한다. 이러한 스케줄러는 원하여지는 방법으로 다른 동작들에 의존하지 않는 동작들을 재배열시킨다. 결론적으로 상기 스케줄러는 비록 상기 동작들은 서로 의존하지만 종속성에 관한 판단을 할 수 없는 모든 동작들을 처리하고, 상기 동작들을 보존적이고 느리게 조작한다.
향상된 프로세서의 스케줄러가 보다 빠른 속도로 실행하는 코드를 생성하도록 하는 회로 및 소프트웨어를 제공하는 것이 바람직하다.
본 발명은 컴퓨터 시스템에 관한 것으로서, 특히 향상된 마이크로프로세서에서의 명령의 재배열(redordering)을 가속시키는 방법 및 장치에 관한 것이다.
도 1은 본 발명을 사용하는 새로운 마이크로프로세서을 나타내는 다이아그램이다.
도 2는 도 1의 상기 새로운 마이크로프로세서를 구현하는 하드웨어의 블록다이아그램이다.
도 3은 도 1의 상기 새로운 마이크로프로세서의 주요 처리 루프를 나타내는 순서도이다.
도 4는 상기 새로운 프로세서의 일부분을 나타내는 블록 다이아그램이다.
도 5는 상기 새로운 프로세서의 다른 일부분을 나타내는 블록 다이아그램이다.
도 6은 본 발명에 따라 설계된 스케줄러 소프트웨어의 동작을 나타내는 순서도이다.
도 7은 본 발명을 실행하기 위한 일실시예인 회로를 나타내는 블록 다이아그램이다.
본 발명은 가능한 빨리 작동하도록케줄링 동작들과 단순한 스케줄링 명령에 부여된 일반적인 제한들의 일부를 무시함으로써, 만약 상기 스케줄링이 스케줄링 제한을 위반하면 예외를 발생시킴으로써 또한 예외가 발생되는 각 일련의 명령들에게 취해지는 단계들을 결정함으로써 고속으로 실행하는 코드를 스케줄러로 하여금 생성하도록 하는 장치 및 방법에 의해 구현된다.
본 발명의 이러한 목적 및 특징들과 다른 목적 및 특징들은 하기의 도면과 함께 개시되는 상세한 설명에 의해 충분히 인식될 있을 것이고, 동일 구성요소들은 다수의 도면에서 동일한 참조번호로 나타나진다.
도 1은 종래의 마이크로프로세서의 상태보다 더 단단한 향상된 하드웨어처리 부분(일명, "모드 호스트")와 에뮬레이팅 소프트웨어 부분(일명, "코드 모핑 소프트웨어")를 결합하는 새로운 마이크로프로세서(10)를 도시한다. 상기 두 부분들은 향상된 마이크로프로세서에서 하드웨어만으로 일반적으로 성취된 동작들을 수행하기 위해 함께 동작한다. 상기 새로운 마이크로프로세서(10)는 종래의 마이크로프로세서들보다 더 빠르고 종래 마이크로프로세서들의 큰 용량의 부속들에 의해 수행된 모든 운영 시스템에 대한 모든 소프트웨어를 실행시킬 수 있고, 종래 마이크로프로세서보다 더 저렴하다.
상기 마이크로프로세서(10)는 다른 목적 프로세서를 위해 고안된 응용 프로그램을 실행하기 위해 코드 모핑 소프트웨어(12)를 실행하도록 된 모프 호스트 프로세서(11)를 구비한다. 상기 모프 호스트(11)는 상기 코드 모핑 소프트웨어(12)에 의해 제공된 가속 기술이 효과적으로 사용되도록 하는 하드웨어 부속품을 구비한다. 상기 모프 호스트 프로세스는 동작들을 가속시키고 예외나 오류가 발생한 때 측시 목적 컴퓨터의 상태를 제공하는 점을 돕는 하드웨어 부속품을 구비한다. 상기 코드 모핑 소프트웨어는 목적 프로그램의 명령들을 모프 호스트 명령들로 번역하고 호스트 명령들을 최적화하여, 필요하면 실행이 올바르다고 알려진 마지막 점으로 실행을 되돌림으로써, 또한 목적 코드의 올바른 재번역이 이루어지도록 상기 점에서 작동 상태(working state)와 올바른 목적 상태를 교환함으로써 예외들과 오류들에 응답하는 소프트웨어를 구비한다. 코드 모핑 소프트웨어는 처리의 속도를 향상시키기 위한 다양한 프로세스를 구비한다. 도 2의 블록 다이아그램은 상술된 특징들을 구현하는 모프 호스트(11)의 상세한 하드웨어의 실시예를 나타낸다.
도 3(상기 코드 모핑 소프트웨어(12)의 주요 루프의 동작을 개시함)의 다이아그램에 도시된 바와같이, 상기 향상된 모프 호스트와 결합된 상기 코드 모핑 소프트웨어는 목적 명령들을 온더플라이(on the fly)인 상기 모프 호스트를 위한 명령들으로 번역하고 메모리 데이터 구조(일명, "번역 버퍼")내에 상기 호스트 명령들을 캐시한다. 일단 목적 명령이 번역되면, 상기 번역 버퍼로부터 소생되고 종래 하드웨어 마이크로프로세서들에 의해 요청된 하기의 단계들의 필요없이 실행된다: 원시 명령들이 각 목적 명령을 구현하기 위해 요구되는가를 결정하는 단계와, 각 원시 명령을 어드레싱하는 단계와, 각 원시 명령을 인출하는 단계와, 원시 명령들의 시퀀스를 최적화하는 단계와, 각 원시 명령에 자원을 할당하는 단계와, 상기 원시 명령들을 재배열하는 단계와, 각 목적 명령이 실행되는 때마다 포함된 원시 명령들의 각 시퀀스의 각 단계를 실행하는 단계.
종래 에뮬레이션 기술의 주요 문제는 목적 프로그램의 실행 동안 생성된 예외들을 좋은 성능으로 처리할 수 없다는 점이다. 상기 목적 응용 프로그램의 실행에서 생성된 일부 예외들은 상기 목적 운영 시스템으로 인도되고, 올바른 목적 상태는 후속하는 예외와 명령들의 적절한 실행에 대한 이러한 예외의 때에 이용될 수 있어야 한다. 다른 예외들은 일부 특정 호스트 기능에 의해 교체되어지는 특정 목적 동작들을 검출하기 위해 상기 에뮬레이터에 의해 생성될 수 있다. 상기 목적 명령들로부터 유도된 호스트 명령들을 실행하는 호스트 프로세서는 예외들을 생성할 수 있다. 이러한 모든 예외들은 목적 명령들이 호스트 명령들로 상기 에뮬레이터에 의해 변경되는 동안, 또는 상기 에뮬레이팅 호스트 명령들이 상기 호스트 프로세서에 의해 실행되는 때 발생할 수 있다. 상기 목적 운영 시스템으로 인도된 예외들은 상기 목적 프로세서의 상태에 대한 인식을 요구하기 때문에 특히 차이가 있다.
이러한 예외들을 효율적으로 복구하기 위해, 상기 향상된 모프 호스트는 다수의 하드웨어 개발품을 구비한다. 이러한 개발품들은 게이트 저장 버퍼(도5를 참조)를 구비한다. 상기 게이트 저장 버퍼는 하드웨어 "게이트"의 "위임되지 않은(uncommitted)" 면에서의 작동 메모리 상태 변화들과, 상기 하드웨어 게이트의 "위임된(committed)" 면에서의 공식(official) 메모리 상태 변화들을 저장하고, 상기 위임된 저장들은 주 메모리로 "유출된다(drain)". "위임(commit)" 동작은 상기게이트의 위임되지 않은 면으로부터 메모리 저장들을 상기 게이트의 위임된 면으로 이동시킨다. 만약 예외가 발생하면, "롤백(rollback)" 동작은 상기 게이트 저장 버퍼 내의 위임되지 않은 저장들을 폐기한다.
상기 하드웨어 개발품은 다수의 추가적인 프로세서 레지스터들(도 4를 참조)을 포함한다. 레지스터 리네이밍(renaming)으로 하여금 동일한 하드웨어 자원을 사용하도록 하는 명령들의 문제를 감소시키는 것뿐만 아니라, 상기 추가적인 레지스터들은 상기 호스트 명령들을 처리하기 위한 일련의 호스트 또는 작동 레지스터들 및 일련의 목적 레지스터들의 관리로 하여금 상기 목적 응용 프로그램이 원래 생성된 상기 목적 프로세서의 공식 상태를 보유하도록 한다. 상기 목적 레지스터들은 전용 인터페이스를 통하여 자신들의 작동 레지스터 균등물들에 연결되고, 이때 상기 전용 인터페이스는 위임 동작으로 하여금 모든 작동 레지스터들의 내용물을 공식 목적 레지스터들로 이동시키도록 하고, "롤백"으로 불리는 동작으로 하여금 모든 공식 목적 레지스터들의 내용물을 자신들의 작동 레지스터 균등물들로 되돌리도록 한다.
일단 하나 또는 그룹의 목적 명령들이 번역되고 오류없이 수행되면, 상기 추가적인 공식 레지스터들과 게이트 저장 버퍼는 메모리의 상태와 상기 목적 레지스터들의 상태가 함께 갱신되도록 한다. 집적 목적 명령 경계들에서 발생하는 코드 모핑 소프트웨어에 의해 상기 갱신이 이루진다. 만약 일련의 목적 명령들의 번역에 의해 생성된 원시 호스트 명령들은 예외를 생성함이 없이 상기 호스트 프로세서에 의해 수행되면, 이때 상기 작동 메모리 저자들과 상기 명령들에 의해 생성된 작동레지스터 상태는 공식 메모리와 상기 공식 목적 레지스터들로 이동된다.
반면에 만약 목적 명령 경계가 아닌 점에서 상기 호스트 명령들을 처리하는 때 예외가 발생하면, 가장 최근 갱신(또는 위임)에서의 목적 레지스터들 내의 원본 상태는 상기 작동 레지스터들에 소생되고 상기 게이트 저장 버퍼 내의 수행되지 않은 메모리 저장들은 폐기된다. 이때, 만약 생성된 상기 예외가 목적 예외라면, 상기 목적 예외를 야기하는 목적 명령들은 한꺼번에 재번역되어, 목적 마이크로프로세서에 의해 수행되는 것과 같이 직렬 시퀀스로 수행된다. 각 목적 명령이 오류없이 정확하게 수행됨에 따라, 상기 목적 레지스터들의 상태는 갱신된다; 또한 메모리로 게이트된 저장 버퍼내의 데이터. 이때, 상기 예외가 상기 호스트 명령들을 수행하는 때 다시 발생하면, 상기 목적 프로세서의 정확한 상태는 상기 모프 호스트와 메모리의 목적 레지스터들에 의해 유지되고; 상기 동작은 지연없이 정확하게 처리된다. 이러한 정확한 번역에 의해 생성된 새로운 번역은 번역됨에 따라 미래의 사용을 위해 캐시되거나 만약 한번 또는 희박하게 발생하는 페이지 고장(page fault)에 의해 야기되다면 폐기될 것이다. 이러한 특징들은 상기 소프트웨어가 본래적으로 기록된 프로세서들보타 더 빨리 명령들을 수행하는 상기 코드 모핑 소프트웨어 및 모프 호스트의 조합의 야기되는 마이크로프로세서를 돕도록 조합된다.
또한, 상기 명령들을 단순하게 번역하는 것과, 상기 번역된 명령들을 캐시하는 것과 일련의 명령들이 수행될 필요가 있을 때마다 각 번역을 수행하는 것뿐만 아니라, 상기 코드 모핑 소프트웨어도 다른 번역들을 재배열하고 최적화하고 재스케줄한다. 취해진(taken) 가정 브랜치(probable branches)가 수행동안 명백하여짐에 따라, 하나의 최적화 프로세스는 번역된 호스트 명령들의 다양한 시퀀스들을 서로 링크한다. 결과적으로, 호스트 명령들 중의 브랜치 명령들에서의 주요 루프 레퍼런스들은 거의 완전하게 제거된다. 이러한 상태에 도달되는 때, 상기 목적 명령들을 인출하고, 목적 명령들을 디코드하고, 상기 목적 명령들을 구성하는 상기 원시 동작들을 최적화하고, 상기 원시 동작들을 재배열하고, 상기 원시 동작들은 상기 호스트 명령들을 수행하기 전에 재스케줄하는 것에 요구되는 시간은 제거된다. 따라서, 향상된 마이크로프로세서를 사용하여 일련의 목적 명령들을 수행하는데 요구되는 작업은 현전하게 감소된다.
상술된 바와 같이, 재배열의 동작은 정확하게 표시되나 무처리된 배열 명령들일 때, 수행되는 명령들을 위한 보다 나은 배열을 선택하도록 하는 스케줄러(scheduler)를 사용한다. 스케줄러의 문제점은 상기 스케줄러들이 수많은 제한을 가지고 기능한다는 점이다. 가장 기본적인 제한은 상기 프로그램이 상기 명령들의 원본 시퀀스가 생성하는 바와 같이, 수행하는 때, 동일한 최종 결과를 생성하여야 한다는 점이다. 이러한 모든 제한들은 종래의 스케줄러로 하여금 보다 보존적으로 기능하도록 하고, 결과적으로 서서히 수행하는 코드를 생성하도록 한다.
예를 들면, 정확한 결과가 생성되도록 하기 위해, 종래의 스케줄러는 종속성을 구비하지 않는 명령들과, 종속성들을 구비하는 명령들 및 종속성의 존재가 알려지지 않은 명령들을 선택하는 결정 기준을 근거로 하여 동작한다. 종속성을 구비하는 명령들과 종속성의 존재가 알려지지 않은 명령들은 비록 종속성이 존재할지라도 모두 처리되고 재배열되지 않는다. 종속성이 없는 것으로 알려진 명령들만이 재배열된다. 이러한 지침들을 따를 때, 스케줄러들은 서서히 동작하는 코드를 생성한다.
또 다른 제한은 상기 모프 호스트 프로세서의 특정 실시예에 관련된다. 상기 모프 호스트 프로세서의 일 실시예는 동작을 느리게하는 특정화된 회로를 제거함으로써 고속으로 동작하도록 된 프로세서이다. 상기 모프 호스트 프로세서의 상기 실시예는 하드웨어 록킹 메커니즘없는 것으로 고안된다. 하드웨어 록킹 메커니즘은 명령들의 특정 시퀀스에서의 모든 단계들이 인터럽트됨이 없이 수행되는 것을 확증하도록 된 회로이다. 록킹 메커니즘의 결핍은 이러한 스퀀스에서의 모든 단계들이 재배열없이 본래적인 번역 배열로 처리되도록 하기 위해 스케줄러가 보다 엄격하게 기능할 것을 요구하여, 그럼으로써 상기 프로세서는 상기 시퀀스로부터 정확한 결과를 생성할 것이다.
본 발명의 상기 스케줄러는 상기 코드 모핑 소프트웨어의 소트프웨어 부분이다. 종래의 하드웨어 스케줄러와 달리, 상기 소프트웨어 스케줄러는 명령들을 재배열할 때 추론적인 기술을 사용한다. 상기 스케줄러는 소정의 동작들에 있어서 가장 빠른 가능한 동작이 바람직한지를 추론하여 상기 결과를 성취하는 명령들을 재배열한다. 하드웨어는 만약 선택된 상기 추론이 부정확하면, 예외를 생성하기 위해 상기 모프 호스트에 제공된다. 대부분의 경우, 상기 추론이 정확하고, 그래서 전체 결과는 보다 더 빠른 동작이다. 그러나, 만약 상기 추론이 부정확하면, 상기 예외는 일반적으로 상기 소프트웨어로 하여금 상기 게이트 저장 버퍼를 사용하도록 하고 상기 목적 레지스터들로 하여금 정확한 상태가 알여진 상기 추론적인 시퀀스의시작으로 동작들을 복귀시키도록 한다.
종래 스케줄러에 의해 사용된 결정 방법과 대조적으로, 본 발명의 스케줄러는 재배열을 위해 명령들의 카테고리를 선택할 때 가정적인 지침을 사용한다. 상기 향상된 스케줄러는 일련의 목적 명령들로부터의 번역에 의해 생성된 명령들의 시퀀스로부터 명령들의 시퀀스들의 카테고리를 선택한다(도 6을 참조). 이러한 카테고리들은 종속성을 구비하지 않은 명령들의 시퀀스들과, 알려진 종속성을 구비한 명령들의 시쿼스와 종속성들을 아마 구비하지 않은 명령들의 시퀀스들 및 종속성을 아마 구비한 명령들의 시퀀스를 포함한다. 종래 기술에서, 종속성을 구비하지 않은 것으로 알려진 명령들의 시퀀스들은 상기 스케줄러에 의해 자유자재로 재배열된다; 알려진 종속성을 구비한 명령들의 시퀀스는 상기 번역기에 의해 제공된 시쿼스 배열로 처리된다.
그러나, 종속성을 아마 구비하지 않는 명령들은 비록 사실 종속성을 구비하지 않을 지라도 처리되고 가장 빠른 가능한 수행을 제공하는 방법으로 재배열된다. 하드웨어 수단은 부정확한 재배열을 검출하고 만약 종속성이 사실 존재하면 예외를 생성하도록 상기 모프 호스트에 제공된다. 상기 스케줄러는 상기 하드웨어 수단과 함께 동작들의 시퀀스가 부정확하게 실행하는 때 예외를 생성하도록 하기 위해, 부정확하게 실행하는 각 재배열된 명령들에 대한 점검을 가능하게 하도록 함께 협력한다. 이러한 예외는 상기 스케줄러로 하여금 상기 예외를 생성한 이전의 재배열을 무시하고 보존적으로 또는 다른 적절한 방법으로 상기 시퀀스를 처리하도록 한다.
반면에, 종속성을 아마 구비한 명령들은 공격적으로 또는 보존적으로 처리된다. 만약 공격적으로 처리되면, 상기 명령들은 종속성을 구비하지 않은 명령들과 같이 처리된다. 상기 명령들은 만약 부정확한 재배열이 이루어지면, 예를 를 검출하고 생성하기 위해, 가장 빠른 가능한 실행을 제공하고 상기 모프 호스트 내에서 제공된 상기 하드웨어 수단을 사용하는 방법으로 재배열된다. 만약 보존적으로 처리되면, 상기 명령들은 상기 번역기에 의해 제공된 시퀀스 배열로 처리된다. 일반적으로, 상기 보존 처리는 다수의 예외들의 발생이 실행 속도를 현저하게 저하시키기 때문에, 보다 빠른 처리 과정(processing)을 제공할 것이다.
본 발명의 일실시예에서, 도 7에 도시된 것과 같은 회로는 상기 호스트 프로세서에 부가된다. 상기 회로는 특수한 "로드 및 보호(load and protect)", 또는 "저장 및 보호(store and protect)"를 사용하는 스케줄러에 의해 재배열되는 명령에 의해 접근된 메모리 주소를 저장하는데 사용된다. 이러한 "로드 및 보호" 또는 "저장 및 보호" 동작은 명령이 재배열되는 때마다 사용되고, 또한 보호 레지스터로서 사용되어지는 상기 모프 호스트의 다수의 레지스터들(71) 중의 하나에 상기 재배열된 명령에 의해 접근된 메모리 주소를 위치시키는데 효과가 있다. 일실시예에서, 8개의 보호 레지스터(71)가 제공된다. 상기 "로드 및 보호" 또는 "저장 및 보호" 명령은 상기 동작을 위해 사용되어지는 특정 보호 레지스터를 지시한다.
비록 상기 용어 "메모리 주소"가 상기 로드 및 보호와, 저장 및 보호 명령을 설명하는 때, 본 명세서 전체를 통하여 사용되지만, 상기 용어는 보호되는 메모리 영역을 결정하기 위한 가능한 다수의 배철들에 대한 참조로서 사용된다. 상기 용어 메모리 주소는 보호되어지는 메모리 영역의 설명을 의미하는 것으로 사용된다. 예를 들면, 메모리가 주소 지정가능한 바이트인 시스템에서, 본 발명의 일실시예는 상기 바이트들의 각각의 보호 상태를 나타내기 위해 상기 주소 영역 내의 바이트들의 개수와 동일한 다수의 비트들과 시작 메모리 주소(starting memory address)를 사용한다. 유사한 주소 지정을 사용하는 다른 실시예는 개별 바이트 주소들과 각 바이트 주소에 대한 개별 비교기(comparator)를 사용한다.
예시적 동작에서 명령들의 시퀀스는 순서대로 제 1 저장 명령(STORE1)과, 제 2 저장 명령(STORE2) 및 로드 명령(LOAD1)을 포함한다. 스케줄러는 재배열은 아마 부정확한 동작을 야기하지 않을 것이라는 가정하에, 첫째로 상기 로드 명령을, 둘째로 상기 제 2 저장 명령을, 셋째로 상기 제 1 저장 명령을 상기 재배열된 시퀀스에 위치시키기 위해 상기 명령들을 재배열할 것을 결정한다. 이러한 것을 행하기 위해, 상기 스케줄러는 상기 범용 레지스터(72) 중의 하나에 상기 로드 데이터를 위치시키기 위해 상기 "로드 및 보호" 동작과, 상기 메모리 위치의 주소를 사용하고, 이때, 상기 로드 데이터가 상기 명령에 의해 지정된 상기 보호 레지스터(71) 내의 상기 메모리 위치로부터 유도된다. 상기 소프트웨어 스케줄러는 어느 명령이 상기 재배열이 오류를 야기하는지를 결정하기 위해 검사되어야 할 필요가 있는지를 인식하기 때문에, 상기 스케줄러는 상기 보호 메모리 주소를 보유하는 특정 보호 레지트서를 나타내는 상기 재배열(이 경우에, 상기 STORE1 과 STORE2가 상기 로드보타 앞서서 위치됨)에 의해 영향받는 차기 명령들에 표시(예를 들면, 비트마스크 내의 비트)를 위치시킨다. 특정 위치 내의 상기 표시의 현존(만약 8개의 보호 레지스터들이 트랩핑 기능을 위해 사용되면 8개 비트들 중의 하나)은 상기 명령의 실행이 각 저장이 상기 저장 명령에 의해 위치되어지는 주소가 상기 표시된 보호 레지스터(71)에 보유된 상기 메모리 주소와 중복하는지에 의존한다.
유사하게, 상기 스케줄러는 메모리 내의 상기 STORE2의 데이터를 저장하기 위하여, 또한 상기 데이터가 상기 저장 및 보호 명령에 의해 지정된 상기 보호 레지스터(71) 내에 저장되는 메모리 위치의 주소를 위치시키기 위해 "저장 및 보호" 동작을 사용한다. 상기 스케줄러는 상기 보호된 메모리 주소를 보유하는 상기 특정 보호 레지스터를 나타내는 상기 재배열(이경우, 상기 STORE1 명령만)에 의해 영향받는 상기 명령들 각각의 비트마스크 내에 표시를 위치시킨다. 결과적으로, 상기 스케줄러는 마지막 STORE1 명령을 위해 정규 저장 명령을 사용한다.
명령들의 시퀀스가 실행되는 때, 상기 호스트 하드웨어는 상기 명령의 메모리 주소가 상기 보호 레지스터(71) 중의 하나에 저장된 메모리 주소에서 상기 데이터의 일부와 중복하는지와, 만약 그렇다면 예외를 생성하는지를 상기 3개의 명령들 각각을 위해 결정하기 위해 비교기 회로(73)를 사용한다. 따라서, 상기 LOAD1 동작(로드 및 보호로 되는)은 자신의 메모리를 보호 레지스터(71)에 기록하나, 어느것도 설정된 표시기에 의해 지정되지 않았지 때문에 보호 레지스터를 검사하지 않는다. 상기 STROE2 동작(저장 및 보호로 되는)은 자신의 메모리 위치를 다른 보호 레지스터(71)에 기록하고, 상기 메모리 위치들 사이의 중복을 결정하기 위해 상기 LOAD1 명령에서 사용되는 상기 보호 레지스터(71)를 검사한다. 결과적으로, 상기 STORE1 동작(비록 상기 보호 레지스터 표시기에 의해 중가되지만, 단순한 저장으로 남아있는)은 자신의 메모리 주소와 상기 LOAD1과 STORE2 명령들의 메모리 주소 사이의 중복을 위해 상기 LOAD1 및 STOTRE2 명령들 각각에 대한 보호 레지스터를 검사한다. 상술된 제 1 및 제 3 실시예의 경우, 상기 비교는 보호가 상기 바이트 레벨에 정확하게 적용될 수 있도록 한다.
어느 예외는 상기 코드 모핑 소프트웨어로 하여금 상기 예외에 대한 응답으로 취해진 단계들을 결정하도록 한다. 전형적으로, 상기 코드 모핑 소프트웨어는 명령들의 재배열된 시퀀스가 폐기되도록 함으로써, 또한 상기 호스트가 명령들의 시퀀스의 개시에서 상기 목적 프로세서의 상태로 복귀하도록 함으로써 명령들의시퀀스는 보존적으로 재처리될 것이다. 만약 상기 주소들이 동일하지 않으면(상기 저장 명령이 상기 보호된 메모리 주소에 접근하지 않는 예를 지시함), 명령들의 재배열된 시퀀스의 실행은 상기 재배열에 의해 제공된 가속된 속도로 진행한다.
상기 호스트 프로세서와 스케줄러 사이의 통신을 구현하기 위해, 상기 모프 호스트에 의해 사용된 로드 및 저장 명령들은 변경된다. 일실시예에서, 이러한 명령들은 상기 "로드 및 보호" 및 "저장 및 보호"에 의해 완전하게 교체된다. 각 "로드 및 보호" 및 각 "저장 및 보호" 명령은 비트마스크(예를 들면, 8개 보호 레지스터들에 대응하는 8개의 비트들)을 포함하고, 상기 비트마스크의 비트들은 상기 재배열된 또는 에일리어스(aliased) 명령의 메모리 주소를 찾는 특정 보호 레지스터를 나타내는 플랙그(flags)로서 사용된다. 상기 비트들 각각은 상기 메모리 주소가 검사되는 하드웨어를 위해 저장되는 이용가능한 보호 레지스터들 중의 하나를 지정한다. 상기 비트마스크를 사용하여, 상기 명령이 재배열된 때, 상기 메모리 주소를 저장하도록 지정된 특정 보호 레지스터는 상기 재배열에 의해 영향받는 후속하는명령이 실행되지 전에, 검사된다. 상기 "로드 및 보호" 및 "저장 및 보호" 명령드은 상기 비트 마스크의 어느 비트들도 설정되지 않은 때 검사가 이루어지지 않기 때문에, 상기 정규 로드 및 저장 명령 대신에 각각 사용된다. 이러한 경우, "로드 및 보호" 및 "저장 및 보호" 동작들은 로드 및 저장 동작들과 동일하다. 보호 레지스터들과 메모리 데이터를 보유하는 특정 범용 레지스터들을 연관시키는 능력은 소수의 보호 레지스터들의 효율적인 사용을 가능하게 함이 인지되어야 한다.
본 발명의 호스트 프로세서는 재배열된 명령들과 관련된 유효 메모리 주소를 포함하는 보호 레지스터들의 위치들을 저장하기 위한 인에이블(enable) 보호 레지스터(74)로 불리는 추가적인 레지스터를 포함한다. 특정 보호 레지스터들을 나타내는 비트들은 상기 "로드 및 보호" 또는 "저장 및 보호" 명령들에 의해 제공되는 표시를 사용하여 상기 보호 레지스터들을 나타내도록 설정된다. 일실시예에서, 상기 인에이블 보호 레지스터의 비트들은 번역되고 재배열된 명령들의 시퀀스가 재배열 예외를 야기함이 없이 실행되는 것을 나타내면서 위임 명령이 생성되는 때마다, 삭제된다. 2개의 위임 포인트들에서 야기되는 명령들의 시퀀스들에서 재배열만이 발생하기 때문에, 상기 재배열 동작으로 하여금 명령들의 각 새롭게 번역된 시퀀스를 위한 재배열에 할당된 상기 보호 레지스터들의 전부를 사용할 수 있도록 한다.
새로운 본 발명의 추가적인 장점은 상기 "저장 및 보호" 동작은 서로서로에 대한 저장들의 재배열을 가능하게 한다. 본 발명을 통하여, 상기 재배열은 데이터를 메모리 위치에 저장함으로써 또한 보호 레지스터 내의 상기 메모리 위치의 주소를 보호함으로써 수행된다. 상기 재배열에 의해 영향받는 후속하는 저장이 야기되는 때, 상기 비트마스크는 예외가 야기되었는지 또는 저장들의 재배열이 정확하게 수행되었는지를 판단하는 메모리 주소를 위해, 상기 하드웨어가 검사하는 상기 보호 레지스터를 지시한다.
상기 새로운 마이크로프로세서의 일실시예에서, 동작의 실행에서 종종 사용되는 메모리 데이터로 하여금 상기 데이터를 메모리로부터 인출하거나 상기 데이터를 메모리에 저장하기 위해 요구되는 시간을 줄이기 위해 실행 유닛 레지스터에서 복제되도록( 또는 "에일리어스되는") 하는 회로 배치가 제공된다. 예를 들면, 만약 메모리 내의 데이터가 하나 이상의 코드 시퀀스들의 실행 동안 종종 재사용되면, 상기 데이터는 전형적으로 상기 메모리로부터 재검색되고 상기 데이터가 재사용되는 때마다 실행 유닛의 레지스터로 로드되어야 한다. 이러한 빈번한 메모리 접근에 소요되는 시간을 감소시키기 위해, 상기 데이터는 상기 메모리로부터 상기 코드 시퀀스가 연속하는 시간 동안 상기 메모리 공간 대신에 기능하도록 된 상기 레지스터로, 또한 상기 코드 시퀀스의 개시에서의 실행 유닛 레지스터로 로드된다. 일단 수행되면, 상기 메모리 주소로부터 레지스터로의 데이터 로딩을 일반적으로 포함하는 상기 로드 동작 각각은 보다 빠른 속도로 진행하는 레지스터-대-레지스터 복사 동작이 된다; 이러한 복사 동작들은 추가적인 최적화에 의해 종종 제거된다.
유사하게, 코드 시퀀스의 실행은 데이터가 코드 시퀀스의 실행 동안 메모리 주소로 종종 기록되는 것을 종종 요구한다. 동일 주소로의 이러한 빈번한 메모리 저장에 의해 요구되는 시간을 감소시키기 위해, 상기 데이터가 상기 메모리 주소에 기록되는 때마다, 상기 데이터는 상기 코드 시퀀스가 연속하는 기간 동안 상기 메모리 공간을 대신하여 기능하도록 지시된 실행 유닛 레지스터로 전송된다. 일단 실행 유닛 레지스터가 지시되면, 상기 데이터의 각 변화는 메모리 주소로의 저장보다 더 빠르게 진행하는 단순한 레지스터-대-레지스터 전송 동작을 요구한다.
상기 에일리어스 회로의 동작이 엠. 윙(M. Wing) 등미국 특허 출원번호 제08/721,698호, 1996년 9월 26일자로 출원된향상된 마이크로프로세서에서의 메모리 데이터를 에일리어스하는 방법 및 장치에 개시되고 본 발명의 양수인에게 양도되었다.
재배열된 동작들을 가속시키는 본 발명의 제 2 실시예는 특정의 추가적인 하드웨어를 사용하여 동일한 하드웨어가 상술된 특허 출원서에서 개시된 방법으로 메모리 주소들을 에일리어스하고 재배열하기 위해 사용되도록 한다. 실행 유닛 레지스터 내의 에일리어스 메모리 데이터가 전형적으로 보다 장기간 동안 유효한 반면에, 재배열 명령들은 전형적으로 인접한 위임 동작들 사이에서 간헐적으로 발생하는 것이 인식되어야 한다. 상기 제 2 실시예에서, 제 2 "지속(persistent)" 레지스터(76)가 장기간 또는 지속 보호가 상기 인에이블 보호 레지스터(74)에 의해 재배열을 위해 제공된 단기간 보호와 함께 사용될 수 있도록 하기 위해 부가된다. 상기 제 2 지속 레지스터(76)는 메모리 주소들이 인접한 위임 동작들보다 더 장기간 동안 보유되는 상기 보호레지스터들을 기록하는 점을 제외하고 상기 레지스터(74)와 동일한 방법으로 사용된다.
예를 들면, 만약 일부 장기간 동안(예를 들면, 한 루프 동안) 사용되도록 메모리 주소를 에일리어스하고 상기 데이터를 호스트 레지스터에 저장하는 것이 바람직하다면, 보호 레지스터가 장기간 에일리어스 동작의 주소를 보유하는 표시는 상기 명령으로부터 복사되어 상기 인에이블 보호 레지스터(74)와 상기 제 2 지속 레지스터(76)에 놓여진다. 재배열된 명령들의 시퀀스들이 예외를 야기함이 없이 실행되고 그럼으로써 제 1 위임 동작이 야기되도록 한다고 가정하면, 상기 인에이블 보호 레지스터는 제거된다. 이러한 방법으로, 검사될 재배열된 명령들의 주소들을 보유하는 상기 보호 레지스터를 나타내는 단기간 플랙그들은 각 위임마다 제거된다. 상기 인에이블 보호 레지스터가 상기 위임에서 제거된 후, 상기 제 2 지속 레지스터의 내용들이 상기 인에이블 보호 레지스터로 기록된다. 보호 레지스터들이 장기간 에일리어스를 위해 사용되고 있다는 점을 표시하는 상기 지속 레지스터 내의 상기 데이터가 상기 인에이블 보호 레지스터로 기록되기 때문에 장기간 에일리어스를 위해 사용되는 상기 보호 레지스터들의 표시들은 상기 위임 명령에 의해 영향을 받지 않는다. 상기 지속 레지스터의 내용을 상기 인에이블 보호 레지스터에 매 위임마다 기록함으로써, 명령들의 차기 시퀀스 동안에, 또한 궁극적으로 상기 데이터가 상기 에일리어스 동작을 위해 더 이상 요구되지 않을 대 상기 제 2 레지스터가 최종적으로 제거될 때까지,보호가 유효하게 지속된다.
상기 제 2 지속 레지스터(76)뿐만 아니라, 음영 레지스터(shadow register)(78)는 상기 지속 레지스터내에 유지되는 상기 정보를 저장하도록 유지된다. 상기 음영 레지스터는 위임 및 롤백 동작 동안 사용된다. 위임이 야기되는 때, 상기 지속 레지스터(76) 내의 상기 데이터는 상술된 방법으로 상기 인에이블 레지스터(74)에 복사된다. 동일한 데이터가 위임에서 상기 지속 레지스터를가리는(shadowing) 상기 레지스터(78)에 복사됨으로써, 상기 음영 레지스터는 재배열되는 명령들의 차기 시퀀스의 시작에서 상기 지속 레지스터를 위한 설정을 포함한다. 만약 예외가 명령들의 차기 시퀀스의 실행 동안 야기되고 롤백 동작이 필요하다면, 상기 음영 레지스터의 내용은 상기 인에이블 보호 레지스터와 지속 레지스터에 복사된다. 그럼으로써 명령들의 상기 시퀀스의 실행이 개시하기 전, 상기 레지스터 내에서와 같이, 상기 인에이블 보호 및 지속 레지스터들 내에 동일한 표시를 위치시키고, 그럼으로써 후속하는 보다 보존적인 실행을 위한 정확한 상태를 확증한다.
본 발명의 배치에 의해 추가적인 장점들이 제공된다. 상기 지속 레지스터(76)의 추가는 단기간 동안(위임 동안) 재배열하는 능력과, 실행 유닛 레지스터들에서의 장기간 동안 에일리어스 메모리 데이터를 보유하는 능력을 향상시키기 위해 동일한 하드웨어를 사용하게 함으로써, 메모리 접근 여분(accessing redundancies)을 제거하는 때, 상기 추가는 위임 동작들 사이에 야기되는 다른 형태의 여분도 제거하는데 사용될 수 있다. 예를 들면, 동일 메모리 주소로부터의 2개의 로드들이 명령 시퀀스 동안 야기하는 것이 가능하다. 만약 이것이 발생하고 상기 메모리 주소로의 저장을 방해함이 없다면, 상기 제 2 로드는 단순하게 무시된다; 상기 제 1 메모리 접근에 의해 레지스터에 위치된 상기 데이터는 상기 제 2 로드 동작 대신에 변화없이 사용된다. 그러나, 만약 저장이 상기 로드들 사이에서 방해하면, 상기 제 2 접근이 발생하는 메모리 주소에 야기된 저장이 있는지를 판단하는 것이 요구된다. 따라서, 종래의 최적화 기술은 만약 저장이 상기 로드들 사이에서 방해하면 상기 제 2 로드를 제거할 수 없다.
상기 동작을 단축하기 위해, 본 발명이 이용된다. 만약 상기 제 1 로드가 보호 레지스터 내에 저장된 메모리 주소를 사용하여 "로드 및 보호" 동작으로 변화되고, 상기 저장 명령이 검사될 특정 보호 레지스터를 표시하는 플랙그를 수신하면, 상기 제 2 로드는 제거되고, 상기 "로드 및 보호" 동작에 의해 저장된 데이터는 상기 제 2 로드를 위해 사용된다. 만약 상기 저장 명령이 상기 보호 메모리 주소에 접근하려하면, 검사될 상기 보호 레지스터를 나타내는 플랙그는 상기 저장 접근이 야기하지 전에 비교가 이루어지도록 할 것이다. 그럼으로써 예외를 생성할 것이고 정확한 목적 상태가 존재하는 마지막 위임 포인트로의 롤백이 야기될 것이다. 상기 스케줄러는 상기 제 2 로드 동작을 포함하는 적절한 명령 시퀀스를 제공하고 상기 시퀀스는 재실행될 것이다.
유사하게, 만약 2개의 위임 동작들 간의 명령들의 시퀀스가 동일 메모리 주소로의 2개의 저장을 포함하면, 상기 제 1 저장은 만약 상기 메모리 주소로부터의 로드가 상기 저장들 사이에서 야기하지 않으면 게거된다. 그러나, 만약 상기 메모리 주소로부터의 데이터가 상기 중간에 로드를 위해 사용되면, 상기 제 1 저장은 제거되지 않을 것이다. 본 발명을 사용하여, 상기 메모리 주소로의 제 1 저장은 만약 상기 로드 명령이 "로드 및 보호"를 위해 이루어지면, 제거될 것이다. 이때 상기 제 2 저장은 상기 접근의 메모리 주소를 검사할 상기 "로드 및 보호"로부터 상기 보호 레지스터 표시를 수신한다. 만약 상기 로드가 다른 주소로부터 온 것이면, 상기 제 2 저장은 정확하게 진행한다. 만약 상기 로드가 동일 주소로부터 온 것이면, 상기 제 2 저장에 대한 메모리로의 접근 시도가 마지막 위임 포인트로 상기 동작을 롤백시키는 예외를 생성할 것이다. 상기 포인트로부터 상기 스케줄러는 저장 동작들을 포함하고 상기 시퀀스를 재실행하는 명령들을 재스케줄할 것이다.
비록 본 발명은 바람직한 실시예를 통하여 개시되지만, 다양한 변형들과 변경들이 본 발명의 정신과 범위를 벗어남이 없이 종래 기술에 익숙한 사람에 의애 이루어지는 것은 명백하다. 예를 들면, 비록 본 발명이 특정 종류의 프로세서들로 기능하도록 개시되지만, 본 발명은 다른 프로세서 아키텍쳐를 위해 의도된 프로그램 뿐만 아니라 다른 프로그램들에도 적용될 수 있다. 본 발명은 하기의 청구범위에 의해 제한된다.

Claims (21)

  1. 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법에 있어서, 상기 방법은:
    비록 재배열된 시퀀스가 예외를 생성할지라도,가능한한 고속으로 작동하는 명령들의 시퀀스를 재배열하는 단계와,
    만약 명령들의 상기 재배열된 시퀀스가 스케줄링 제한을 위반하면 예외를 생성하는 단계 및,
    명령들에 대한 예외가 생성되는 각 일련의 명령들을 정확하게 실행하도록 하는 조치가 취해지는지를 결정하는 단계를 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  2. 제 1 항에 있어서, 만약 명령들의 상기 재배열된 시퀀스가 스케줄링 제한을 위반하면 예외를 생성하는 상기 단계는 상기 재배열된 시퀀스에서의 재배열된 명령들에 의해 야기된 예외들을 삭제하는 단계를 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  3. 제 2 항에 있어서, 상기 재배열된 시퀀스에서의 재배열된 명령들에 의해 야기된 예외들을 삭제하는 상기 단계는;
    상기 시퀀스에서 순서없이 놓여진 명령들을 기억하는 단계와,
    상기 시퀀스에 대하여 상기 기억된 명령이 부정확한 결과가 명령들의 상기 시퀀스에 의해 생성되는지를 결정하도록 재배열되는 상기 시퀀스 내의 명령들을 검사하는 단계를 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  4. 제 2 항에 있어서, 상기 시퀀스에서 순서없이 놓여진 명령들을 기억하는 상기 단계는 상기 명령에 의해 접근된 메모리 주소를 저장하는 단계를 포함하고, 상기 시퀀스에 대하여 상기 기억된 명령이 부정확한 결과가 명령들의 상기 시퀀스에 의해 생성되는지를 결정하도록 재배열되는 상기 시퀀스 내의 명령들을 검사하는 상기 단계는 상기 저장된 메모리 주소와, 검사되는 명령들에 의해 접근된 메모리 주호들과 비교하는 단계를 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  5. 제 4 항에 있어서, 상기 명령에 의해 접근된 데이터의 메모리 주소가 보호 레지스터에 저장되는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  6. 제 4 항에 있어서, 상기 방법은 모든 기억된 명령들이 보유되는 장소를 기억하는 단계를 추가적으로 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  7. 제 1 항에 있어서, 상기 재배열된 시퀀스가 예외를 아마 생성할 수 있는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  8. 제 7 항에 있어서, 만약 명령들의 상기 재배열된 시퀀스가 스케줄링 제한을 위반하면 예외를 생성하는 상기 단계는 상기 재배열된 시퀀스 내의 재배열된 명령들에 의해 야기된 예외들을 삭제하는 단계를 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  9. 제 8 항에 있어서, 상기 재배열된 시퀀스 내의 재배열된 명령들에 의해 야기된 예외들을 삭제하는 상기 단계는;
    상기 시퀀스에서 순서없이 놓여진 명령들을 기억하는 단계와,
    상기 시퀀스에 대하여 상기 기억된 명령이 부정확한 결과가 명령들의 상기 시퀀스에 의해 생성되는지를 결정하도록 재배열되는 상기 시퀀스 내의 명령들을 검사하는 단계를 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  10. 제 8 항에 있어서, 상기 시퀀스에서 순서없이 놓여진 명령들을 기억하는 상기 단계는 상기 명령에 의해 접근된 메모리 주소를 저장하는 단계를 포함하고, 상기 시퀀스에 대하여 상기 기억된 명령이 부정확한 결과가 명령들의 상기 시퀀스에 의해 생성되는지를 결정하도록 재배열되는 상기 시퀀스 내의 명령들을 검사하는 상기 단계는 상기 저장된 메모리 주소와, 검사되는 명령들에 의해 접근된 메모리 주호들과 비교하는 단계를 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  11. 제 10 항에 있어서, 상기 명령에 의해 접근된 메모리 주소가 보호 레지스터에 저장되는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  12. 제 10 항에 있어서, 상기 방법은 모든 명령들이 보유되는 장소를 기억하는 단계를 추가적으로 포함하는 것을 특징으로 하는 스케줄러 소프트웨어로 하여금 고속으로 실행하는 코드를 생성하도록 방법.
  13. 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템에 있어서, 상기 시스템은:
    비록 재배열된 시퀀스가 예외를 생성할지라도, 가능한한 고속으로 작동하는 명령들의 시퀀스를 재배열하는 수단과,
    만약 명령들의 상기 재배열된 시퀀스가 스케줄링 제한을 위반하면 예외를 생성하는 수단 및,
    명령들에 대한 예외가 생성되는 각 일련의 명령들을 정확하게 실행하도록 하는 조치가 취해지는지를 결정하는 수단을 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  14. 제 13 항에 있어서, 만약 명령들의 상기 재배열된 시퀀스가 스케줄링 제한을 위반하면 예외를 생성하는 상기 수단 상기 재배열된 시퀀스 내의 재배열된 명령들에 의해 야기된 예외들을 삭제하는 수단을 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  15. 제 14 항에 있어서, 상기 재배열된 시퀀스 내의 재배열된 명령들에 의해 야기된 예외를 삭제하는 수단은:
    상기 시퀀스 내에 순서없이 놓여진 명령을 식별하는 수단과,
    부정확한 결과가 명령들의 시퀀스에 의해 생성되는지를 판단하도록 상기 시퀀스에 대해 상기 식별된 명령이 재배열되는 상기 시퀀스 내의 명령들을 검사하는 수단을 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  16. 제 14 항에 있어서, 상기 시퀀스 내에 순서없이 놓여진 명령을 식별하는 상기 수단은 상기 명령에 의해 접근된 메모리 주소를 저장하는 수단을 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  17. 제 16 항에 있어서, 상기 명령에 의해 접근된 데이터의 메모리 주소를 저장하는 상기 수단은 보호 레지스터인 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  18. 제 16 항에 있어서, 상기 시스템은 상기 식별된 명령들에 의해 접근된 메모리 주소들을 위한 표시들을 저장하는 수단을 추가적으로 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  19. 제 16 항에 있어서, 상기 시스템은 명령들의 시퀀스 동안 존재하는 식별된 명령들에 의해 접근된 메모리 주소들을 위한 표시들을 저장하는 수단과,
    명령들의 시퀀스 이상으로 지속하는 식별된 명령들에 의해 접근된 주소를 위한 표시를 저장하는 수단을 추가적으로 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  20. 제 19 항에 있어서, 명령들의 시퀀스 동안 존재하는 식별된 명령들에 의해 접근된 메모리 주소들을 위한 표시들을 저장하는 상기 수단은 상기 식별된 명령들에 의해 접근된 유효한 메모리 주소들의 표시들을 저장하는 제 1 레지스터이고,
    명령들의 시퀀스 이상으로 지속하는 식별된 명령들에 의해 접근된 주소를 위한 표시를 저장하는 상기 수단은 상기 식별된 명령들에 의해 접근된 유효 메모리 주소들의 표시를 저장하는 제 2 레지스터이고;
    상기 시스템은 상기 식별된 명령들에 의해 접근된 메모리 주소들을 위한 표시를 저장하는 제 3 레지스터와,
    명령들의 시퀀스가 예외없이 실행되는 때, 상기 제 2 레지스터로부터 상기 제 1 및 제 3 레지스터들로 표시들을 전송하는 수단을 추가적으로 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
  21. 제 13 항에 있어서, 상기 시스템은 실행 유닛 레지스터 내의 메모리 데이터를 복사하는 수단을 추가적으로 구비하는 것을 특징으로 하는 고속으로 실행하는 코드를 생성하기 위해 명령들의 재배열을 제어하는 시스템.
KR1020017016123A 1999-06-14 2000-06-12 향상된 마이크로프로세서에서의 스케줄링을 강화시키는 방법 및 장치 KR100758367B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/332,338 US7089404B1 (en) 1999-06-14 1999-06-14 Method and apparatus for enhancing scheduling in an advanced microprocessor
US09/332,338 1999-06-14

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020057023578A Division KR20060002031A (ko) 1999-06-14 2000-06-12 명령들을 스케줄링 및 실행하는 방법

Publications (2)

Publication Number Publication Date
KR20020022068A true KR20020022068A (ko) 2002-03-23
KR100758367B1 KR100758367B1 (ko) 2007-09-14

Family

ID=23297783

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020017016123A KR100758367B1 (ko) 1999-06-14 2000-06-12 향상된 마이크로프로세서에서의 스케줄링을 강화시키는 방법 및 장치
KR1020057023578A KR20060002031A (ko) 1999-06-14 2000-06-12 명령들을 스케줄링 및 실행하는 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020057023578A KR20060002031A (ko) 1999-06-14 2000-06-12 명령들을 스케줄링 및 실행하는 방법

Country Status (9)

Country Link
US (3) US7089404B1 (ko)
EP (1) EP1194855B1 (ko)
JP (2) JP2003502754A (ko)
KR (2) KR100758367B1 (ko)
CN (1) CN1202480C (ko)
AT (1) ATE441147T1 (ko)
CA (1) CA2377164C (ko)
DE (1) DE60042824D1 (ko)
WO (1) WO2000077965A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100607987B1 (ko) * 2004-06-24 2006-08-02 삼성전자주식회사 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6981110B1 (en) 2001-10-23 2005-12-27 Stephen Waller Melvin Hardware enforced virtual sequentiality
US7386619B1 (en) * 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7316017B1 (en) * 2003-01-06 2008-01-01 Slt Logic, Llc System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US20060150188A1 (en) * 2004-12-21 2006-07-06 Manuel Roman Method and apparatus for supporting soft real-time behavior
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US9672019B2 (en) * 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9189233B2 (en) 2008-11-24 2015-11-17 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8719649B2 (en) 2009-03-04 2014-05-06 Alcatel Lucent Method and apparatus for deferred scheduling for JTAG systems
US8621301B2 (en) 2009-03-04 2013-12-31 Alcatel Lucent Method and apparatus for virtual in-circuit emulation
US8775884B2 (en) 2009-03-04 2014-07-08 Alcatel Lucent Method and apparatus for position-based scheduling for JTAG systems
US8677198B2 (en) * 2009-03-04 2014-03-18 Alcatel Lucent Method and apparatus for system testing using multiple processors
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US9405547B2 (en) * 2011-04-07 2016-08-02 Intel Corporation Register allocation for rotation based alias protection register
WO2013048379A1 (en) 2011-09-27 2013-04-04 Intel Corporation Expediting execution time memory aliasing checking
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9183105B2 (en) * 2013-02-04 2015-11-10 Alcatel Lucent Systems and methods for dynamic scan scheduling
US9880842B2 (en) 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
CN103761073A (zh) * 2014-01-08 2014-04-30 东南大学 一种面向ARMv7的基于推测的指令动态调度方法
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
US11080182B2 (en) * 2019-01-07 2021-08-03 International Business Machines Corporation Object load introspection using guarded storage

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US4817118A (en) 1987-06-29 1989-03-28 Step Engineering Mobile incident logger
US4903264A (en) 1988-04-18 1990-02-20 Motorola, Inc. Method and apparatus for handling out of order exceptions in a pipelined data unit
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5253349A (en) * 1991-01-30 1993-10-12 International Business Machines Corporation Decreasing processing time for type 1 dyadic instructions
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
US5274815A (en) 1991-11-01 1993-12-28 Motorola, Inc. Dynamic instruction modifying controller and operation method
US5349658A (en) 1991-11-01 1994-09-20 Rourke Thomas C O Graphical user interface
JP2786574B2 (ja) 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
EP0663083B1 (en) 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5450560A (en) 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
JP3531166B2 (ja) * 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5420990A (en) 1993-06-17 1995-05-30 Digital Equipment Corporation Mechanism for enforcing the correct order of instruction execution
US6704861B1 (en) * 1993-06-17 2004-03-09 Hewlett-Packard Development Company, L.P. Mechanism for executing computer instructions in parallel
US5454117A (en) 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5463745A (en) 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5588126A (en) * 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5537559A (en) 1994-02-08 1996-07-16 Meridian Semiconductor, Inc. Exception handling circuit and method
US5559976A (en) 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
TW260765B (ko) 1994-03-31 1995-10-21 Ibm
US5546599A (en) 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5689712A (en) 1994-07-27 1997-11-18 International Business Machines Corporation Profile-based optimizing postprocessors for data references
US5537620A (en) * 1994-09-16 1996-07-16 International Business Machines Corporation Redundant load elimination on optimizing compilers
JP3617686B2 (ja) 1994-09-26 2005-02-09 株式会社リコー 画像形成装置及び画像形成装置管理システム
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5694577A (en) * 1995-06-06 1997-12-02 Matsushita Electric Industrial Co., Ltd. Memory conflict buffer for achieving memory disambiguation in compile-time code schedule
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5809273A (en) 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5819056A (en) 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US6185668B1 (en) * 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5901308A (en) * 1996-03-18 1999-05-04 Digital Equipment Corporation Software mechanism for reducing exceptions generated by speculatively scheduled instructions
US5875340A (en) * 1996-05-31 1999-02-23 Hewlett-Packard Company Optimized storage system and method for a processor that executes instructions out of order
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5903749A (en) * 1996-07-02 1999-05-11 Institute For The Development Of Emerging Architecture, L.L.C. Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US6173366B1 (en) * 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US5864692A (en) 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US6011908A (en) 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US5918005A (en) * 1997-03-25 1999-06-29 International Business Machines Corporation Apparatus region-based detection of interference among reordered memory operations in a processor
US5931957A (en) * 1997-03-31 1999-08-03 International Business Machines Corporation Support for out-of-order execution of loads and stores in a processor
US5790625A (en) 1997-04-14 1998-08-04 International Business Machines Corporation Mechanism for enabling an array of numerous large high speed counters
US5996060A (en) * 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing
US6505296B2 (en) 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US6148394A (en) * 1998-02-10 2000-11-14 International Business Machines Corporation Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
US6202204B1 (en) * 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
US6609189B1 (en) * 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6192465B1 (en) * 1998-09-21 2001-02-20 Advanced Micro Devices, Inc. Using multiple decoders and a reorder queue to decode instructions out of order
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100607987B1 (ko) * 2004-06-24 2006-08-02 삼성전자주식회사 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법

Also Published As

Publication number Publication date
JP2006099800A (ja) 2006-04-13
EP1194855A4 (en) 2004-11-03
CA2377164A1 (en) 2000-12-21
EP1194855B1 (en) 2009-08-26
US8209517B1 (en) 2012-06-26
EP1194855A2 (en) 2002-04-10
KR20060002031A (ko) 2006-01-06
US7089404B1 (en) 2006-08-08
JP2003502754A (ja) 2003-01-21
ATE441147T1 (de) 2009-09-15
CA2377164C (en) 2007-09-25
KR100758367B1 (ko) 2007-09-14
JP3872809B2 (ja) 2007-01-24
CN1202480C (zh) 2005-05-18
WO2000077965A2 (en) 2000-12-21
US9081563B2 (en) 2015-07-14
US20120246453A1 (en) 2012-09-27
WO2000077965A3 (en) 2001-04-05
DE60042824D1 (de) 2009-10-08
CN1355902A (zh) 2002-06-26

Similar Documents

Publication Publication Date Title
KR20020022068A (ko) 향상된 마이크로프로세서에서의 스케줄링을 향상시키는방법 및 장치
JP3753743B2 (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
US7716452B1 (en) Translated memory protection apparatus for an advanced microprocessor
JP3615770B2 (ja) アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ
US6011908A (en) Gated store buffer for an advanced microprocessor
JP3776132B2 (ja) マイクロプロセッサの改良
KR100368166B1 (ko) 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법
US10877833B2 (en) Vector atomic memory update instruction
JP3621116B2 (ja) 先進のプロセッサのための変換メモリ保護装置
KR20010029545A (ko) 타겟 프로세서의 상태를 일시적으로 보유하기 위한 장치를구비하는 호스트 마이크로프로세서
US7496734B1 (en) System and method for handling register dependency in a stack-based pipelined processor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
AMND Amendment
E902 Notification of reason for refusal
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120830

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130830

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140828

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 13