KR100758367B1 - 향상된 마이크로프로세서에서의 스케줄링을 강화시키는 방법 및 장치 - Google Patents
향상된 마이크로프로세서에서의 스케줄링을 강화시키는 방법 및 장치 Download PDFInfo
- Publication number
- KR100758367B1 KR100758367B1 KR1020017016123A KR20017016123A KR100758367B1 KR 100758367 B1 KR100758367 B1 KR 100758367B1 KR 1020017016123 A KR1020017016123 A KR 1020017016123A KR 20017016123 A KR20017016123 A KR 20017016123A KR 100758367 B1 KR100758367 B1 KR 100758367B1
- Authority
- KR
- South Korea
- Prior art keywords
- command
- instruction
- load
- sequence
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000002708 enhancing effect Effects 0.000 title 1
- 230000015654 memory Effects 0.000 claims description 97
- 238000003860 storage Methods 0.000 claims description 18
- 230000008707 rearrangement Effects 0.000 description 25
- 239000000872 buffer Substances 0.000 description 13
- 230000002085 persistent effect Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000007774 longterm Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, 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)
- Executing Machine-Instructions (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
Description
예를 들면, 시퀀스들이 옳바른 결과들을 생성하기 위해서는, 인터럽션(interruption) 없이 수행되어야 하는 프로그램 내의 명령들의 시퀀스들이 있다. 스케줄러는 그러한 시퀀스들과 충돌할 때마다 생성된 결과들과 충돌하게 된다. 많은 프로세서들이 하드웨어 인터락(interlocks)을 제공하여 이러한 시퀀스들이 인터럽션 없이 수행되도록 한다. 명령들의 시퀀스를 보호할 필요성에 따라, 논의된 모프 호스트 프로세서와 같이 하드웨어 인터락이 없는 프로세서들에 대한 특수한 제약들이 나타나고 있다. 소프트웨어는 이러한 시퀀스들을 인식하여야 하고 상기 시퀀스들이 인터럽션 없이 실행되도록 할 수 있어야만 한다.
다른 제어 의존성들이, 저장에 관하여 로드(loads)의 재배열에 영향을 미친다. 예를 들면, 만약 갱신된 데이터가 메모리 어드레스에 저장되고 이어서 레지스터 동작에서 다루어진다면, 상기 어드레스의 데이터는 저장이 일어날 때 레지스터에 유지되어서는 아니된다. 그렇지 않으면 레지스터 내의 데이터는 쓸모없는 것이 될 수 있다.
Claims (21)
- 명령을 스케줄링 및 실행하는 방법으로서,a) 제 1 어드레스 범위에 관계하는(involve) 제 1 메모리 동작과, 상기 제 1 어드레스 범위의 적어도 일부에 관계하는 제 2 메모리 동작과 그리고 상기 제 1 및 제 2 메모리 동작에 개입(intervene)하는 제 3 메모리 동작의 명령들로 구성되는 명령 시퀀스를 액세스하는 단계와, 여기서 상기 제 3 메모리 동작이 상기 제 1 어드레스 범위 내의 어드레스에 관계하는지는 알려지지 않으며, 상기 제 1 내지 제 3 메모리 동작 중의 적어도 하나의 동작은 저장 동작을 포함하며;b) 상기 명령 시퀀스로부터 상기 제 2 메모리 동작을 제거하는 단계와;c) 상기 제 1 어드레스 범위를 판단할 수 있게 하는 정보를 상기 제 3 메모리 동작에 부가하는 단계와, 여기서 상기 정보는 복수의 레지스터 중 어떤 레지스터가 피보호 어드레스를 홀드하는지를 판단할 수 있게 하는 마스크를 포함하며;d) 상기 제 2 메모리 동작이 제거된 채로 상기 명령 시퀀스를 실행하는 단계와;e) 상기 명령 시퀀스의 실행중에, 상기 제 3 메모리 동작이 상기 제 1 어드레스 범위내의 어드레스에 관계하는지를 판단하여, 만약 관계한다면, 예외를 발생시켜 상기 제 2 메모리 동작을 포함한 채로 상기 명령 시퀀스를 재실행하는 단계를 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 1 항에 있어서,상기 단계 e)는 상기 단계 d)에서의 명령 시퀀스의 실행중에, 상기 제 3 메모리 동작이 상기 피보호 어드레스들중 임의의 어드레스 범위 내의 어드레스에 관계하는지를 판단하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 1항에 있어서,상기 제 1 어드레스 범위에 관련된 메모리 어드레스를, 상기 단계 d)에서의 명령 시퀀스의 실행전에, 상기 복수의 레지스터중 하나에 저장하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 1 항에 있어서,상기 제 1 어드레스 범위에 관련된 메모리 어드레스를, 상기 단계 d)에서의 명령 시퀀스의 실행전에 레지스터에 저장하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 4 항에 있어서,상기 명령 시퀀스는 상기 제 1 메모리 동작 후 상기 명령 시퀀스내에서의 제 4 메모리 동작을 포함하며,f) 상기 제 4 메모리 동작이 상기 제 1 어드레스 범위에 관계할지라도 예외를 발생함이 없이 상기 제 4 메모리 동작을 실행할 수 있게 하는 제 2 정보를 상기 제 4 메모리 동작에 부가하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 1 항에 있어서,상기 제 3 메모리 동작이 개입하지 않는 경우, 상기 제 1 및 제 2 메모리 동작은 단일 메모리 동작으로 안전하게 축소될 수 있는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 명령을 스케줄링 및 실행하는 방법으로서,a) 제 1 어드레스 범위로부터 로드하는 제 1 로드 명령과, 상기 제 1 어드레스 범위로부터 로드하는 제 2 로드 명령과, 상기 제 1 및 제 2 로드 명령에 개입하는 저장 명령 - 상기 저장 명령은 상기 제 1 어드레스 범위내의 어드레스에 저장을 행하는지는 알려지지 않으며 - 을 포함하는 명령 시퀀스를 액세스하는 단계와;b) 상기 명령 시퀀스로부터 상기 제 2 로드 명령을 제거하는 단계와;c) 상기 제 2 로드 명령 없이 상기 명령 시퀀스를 실행하고, 상기 제 1 어드레스 범위에 관련된 메모리 어드레스를 보호 레지스터에 저장하는 단계와;d) 상기 명령 시퀀스 실행중에, 상기 저장 명령이 상기 제 1 어드레스 범위내의 어드레스에 저장을 행하는지를 판단하여, 만약 저장을 행한다면, 예외를 발생시켜 상기 제 2 로드 명령을 포함한 채로 상기 명령 시퀀스를 재실행하는 단계를 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 7항에 있어서,상기 단계 b)는 상기 보호 레지스터를 표시하기 위한 플래그를 상기 저장 명령에 부가하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 7항에 있어서,상기 단계 b)는 상기 제 1 로드 명령을 로드 및 보호 명령으로 변경하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 명령을 스케줄링 및 실행하는 방법으로서,a) 제 1 어드레스 범위로의 제 1 저장 명령과, 상기 제 1 어드레스 범위로의 제 2 저장 명령과, 상기 제 1 및 제 2 저장 명령에 개입하는 로드 명령 - 상기 로드 명령이 상기 제 1 어드레스 범위내의 어드레스에 관계하는 지는 알려지지 않으며 - 을 포함하는 명령 시퀀스를 액세스하는 단계와;b) 상기 명령 시퀀스로부터 상기 제 2 저장 명령을 제거하고, 상기 로드 명령과 관련된 메모리 어드레스를 보호 레지스터에 저장하는 단계와;c) 상기 제 1 저장 명령이 제거된 채 상기 명령 시퀀스를 실행하는 단계와;d) 상기 명령 시퀀스 실행중에, 상기 로드 명령이 상기 제 1 어드레스 범위내의 어드레스에 관계하는지를 판단하여, 만약 관계한다면, 예외를 발생시켜 상기 제 1 저장 명령을 포함한 채로 상기 명령 시퀀스를 재실행하는 단계를 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 10항에 있어서,상기 단계 b)는 상기 보호 레지스터를 표시하기 위한 플래그를 상기 저장 명령에 부가하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 10항에 있어서,상기 단계 b)는 상기 로드 명령을 로드 및 보호 명령으로 변경하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 명령을 스케줄링 및 실행하는 방법으로서,a) 제 1 어드레스 범위에 저장을 행하는 제 1 저장 명령과, 상기 제 1 어드레스 범위로부터 로드를 행하는 로드 명령과, 상기 제 1 저장 명령과 상기 로드 명령에 개입하는 제 2 저장 명령 - 상기 제 2 저장 명령이 상기 제 1 어드레스 범위내의 임의의 어드레스에 저장을 행하는지는 알려지지 않으며 - 을 포함하는 명령 시퀀스를 액세스하는 단계와;b) 상기 명령 시퀀스로부터 상기 로드 명령을 제거함과 아울러 상기 제 1 어드레스 범위에 관련된 메모리 어드레스를 보호 레지스터에 저장하는 단계와;c) 상기 로드 명령 없이 상기 명령 시퀀스를 실행하는 단계와;d) 상기 명령 시퀀스 실행중에, 상기 제 2 저장 명령이 상기 제 1 어드레스 범위내의 어드레스에 저장을 행하는지를 판단하여, 만약 저장을 행한다면, 예외를 발생시켜 상기 로드 명령을 포함한 채로 상기 명령 시퀀스를 재실행하는 단계를 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 13항에 있어서,상기 단계 b)는 상기 보호 레지스터를 표시하기 위한 플래그를 상기 제 2 저장 명령에 부가하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 13항에 있어서,상기 단계 b)는 상기 제 1 저장 명령을 로드 및 보호 명령으로 변경하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 명령을 스케줄링 및 실행하는 방법으로서,a) 제 1 어드레스 범위로부터 로드하는 로드 명령과, 제 1 저장 명령 - 이 저장 명령이 상기 제 1 어드레스 범위내의 어드레스에 저장을 행하는지는 알려지지 않으며 - 과, 상기 제 1 어드레스 범위에 저장을 행하는 제 2 저장 명령 - 여기서 상기 제 1 저장 명령은 상기 로드 명령과 상기 제 2 저장 명령에 개입하며 - 을 포함하는 명령 시퀀스를 액세스하는 단계와;b) 상기 명령 시퀀스로부터 상기 제 2 저장 명령을 제거하고, 상기 제 1 어드레스 범위에 관련된 메모리 어드레스를 보호 레지스터에 저장하는 단계와;c) 상기 제 2 저장 명령 없이 상기 명령 시퀀스를 실행하는 단계와;d) 상기 명령 시퀀스 실행중에, 상기 제 1 저장 명령이 상기 제 1 어드레스 범위내의 어드레스에 저장을 행하는지를 판단하여, 만약 저장을 행한다면, 예외를 발생시켜 상기 제 2 저장 명령을 포함한 채로 상기 명령 시퀀스를 재실행하는 단계를 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 16항에 있어서,상기 단계 b)는 상기 보호 레지스터를 표시하기 위한 플래그를 상기 제 1 저장 명령에 부가하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 16항에 있어서,상기 단계 b)는 상기 로드 명령을 로드 및 보호 명령으로 변경하는 단계를 더 포함하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 제 16항에 있어서,상기 제 2 저장 명령은, 상기 로드 명령이 상기 제 1 어드레스 범위로부터 로드한 것과 동일한 값을 상기 제 1 어드레스 범위에 다시 저장하는 것을 특징으로 하는 명령 스케줄링 및 실행 방법.
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/332,338 | 1999-06-14 | ||
US09/332,338 US7089404B1 (en) | 1999-06-14 | 1999-06-14 | Method and apparatus for enhancing scheduling in an advanced microprocessor |
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 KR20020022068A (ko) | 2002-03-23 |
KR100758367B1 true 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) |
Families Citing this family (33)
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 |
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 |
US7386619B1 (en) * | 2003-01-06 | 2008-06-10 | Slt Logic, Llc | System and method for allocating communications to processors 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 |
KR100607987B1 (ko) * | 2004-06-24 | 2006-08-02 | 삼성전자주식회사 | 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법 |
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 |
US7478226B1 (en) | 2006-09-29 | 2009-01-13 | Transmeta Corporation | Processing bypass directory tracking system and method |
US7774583B1 (en) | 2006-09-29 | 2010-08-10 | Parag Gupta | Processing bypass register file system and method |
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 |
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 |
US20100229058A1 (en) * | 2009-03-04 | 2010-09-09 | Suresh Goyal | Method and apparatus for system testing using scan chain decomposition |
US8719649B2 (en) | 2009-03-04 | 2014-05-06 | Alcatel Lucent | Method and apparatus for deferred scheduling for JTAG systems |
US8775884B2 (en) | 2009-03-04 | 2014-07-08 | Alcatel Lucent | Method and apparatus for position-based scheduling for JTAG systems |
US8621301B2 (en) | 2009-03-04 | 2013-12-31 | Alcatel Lucent | Method and apparatus for virtual in-circuit emulation |
US8812796B2 (en) | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8402218B2 (en) * | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
US9092253B2 (en) | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted 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 |
US9417855B2 (en) | 2011-09-30 | 2016-08-16 | 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 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998028689A1 (en) * | 1996-12-23 | 1998-07-02 | Transmeta Corporation | A gated store buffer for an advanced 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 |
Family Cites Families (62)
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 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
WO1994008287A1 (en) | 1992-09-29 | 1994-04-14 | 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 |
WO1994016384A1 (en) * | 1992-12-31 | 1994-07-21 | Seiko Epson Corporation | System and method for register renaming |
US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
US6704861B1 (en) * | 1993-06-17 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Mechanism for executing computer instructions in parallel |
US5420990A (en) | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Mechanism for enforcing the correct order of instruction execution |
US5421022A (en) * | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Apparatus and method for speculatively executing instructions in a computer system |
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 |
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 |
TW260765B (ko) | 1994-03-31 | 1995-10-21 | Ibm | |
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 |
US5819056A (en) | 1995-10-06 | 1998-10-06 | Advanced Micro Devices, Inc. | Instruction buffer organization method and system |
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 |
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 |
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 |
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 |
-
1999
- 1999-06-14 US US09/332,338 patent/US7089404B1/en not_active Expired - Lifetime
-
2000
- 2000-06-12 KR KR1020017016123A patent/KR100758367B1/ko active IP Right Grant
- 2000-06-12 AT AT00944658T patent/ATE441147T1/de not_active IP Right Cessation
- 2000-06-12 WO PCT/US2000/016209 patent/WO2000077965A2/en not_active Application Discontinuation
- 2000-06-12 DE DE60042824T patent/DE60042824D1/de not_active Expired - Lifetime
- 2000-06-12 CA CA002377164A patent/CA2377164C/en not_active Expired - Fee Related
- 2000-06-12 CN CNB008088837A patent/CN1202480C/zh not_active Expired - Lifetime
- 2000-06-12 KR KR1020057023578A patent/KR20060002031A/ko not_active Application Discontinuation
- 2000-06-12 JP JP2001504103A patent/JP2003502754A/ja active Pending
- 2000-06-12 EP EP00944658A patent/EP1194855B1/en not_active Expired - Lifetime
-
2004
- 2004-02-20 US US10/783,473 patent/US8209517B1/en not_active Expired - Lifetime
-
2005
- 2005-11-18 JP JP2005334136A patent/JP3872809B2/ja not_active Expired - Lifetime
-
2012
- 2012-06-04 US US13/488,138 patent/US9081563B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
WO1998028689A1 (en) * | 1996-12-23 | 1998-07-02 | Transmeta Corporation | A gated store buffer for an advanced microprocessor |
Also Published As
Publication number | Publication date |
---|---|
CA2377164C (en) | 2007-09-25 |
CN1202480C (zh) | 2005-05-18 |
ATE441147T1 (de) | 2009-09-15 |
EP1194855A2 (en) | 2002-04-10 |
CN1355902A (zh) | 2002-06-26 |
CA2377164A1 (en) | 2000-12-21 |
WO2000077965A3 (en) | 2001-04-05 |
WO2000077965A2 (en) | 2000-12-21 |
KR20020022068A (ko) | 2002-03-23 |
DE60042824D1 (de) | 2009-10-08 |
EP1194855B1 (en) | 2009-08-26 |
JP3872809B2 (ja) | 2007-01-24 |
KR20060002031A (ko) | 2006-01-06 |
US7089404B1 (en) | 2006-08-08 |
US9081563B2 (en) | 2015-07-14 |
US8209517B1 (en) | 2012-06-26 |
EP1194855A4 (en) | 2004-11-03 |
US20120246453A1 (en) | 2012-09-27 |
JP2003502754A (ja) | 2003-01-21 |
JP2006099800A (ja) | 2006-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100758367B1 (ko) | 향상된 마이크로프로세서에서의 스케줄링을 강화시키는 방법 및 장치 | |
JP3753743B2 (ja) | 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置 | |
EP0747816B1 (en) | Method and system for high performance multithread operation in a data processing system | |
KR100334479B1 (ko) | 컴퓨터 처리 시스템에서 로드 동작의 순서 변경 방법 및 장치 | |
US4521851A (en) | Central processor | |
US7571304B2 (en) | Generation of multiple checkpoints in a processor that supports speculative execution | |
TWI263169B (en) | Method and data processing system having an external instruction set and an internal instruction set | |
US6694427B1 (en) | Method system and apparatus for instruction tracing with out of order processors | |
EP0394624B1 (en) | Multiple sequence processor system | |
US6345351B1 (en) | Maintenance of speculative state of parallel executed jobs in an information processing system | |
JP2001507151A (ja) | 先進のマイクロプロセッサのためのゲート格納バッファ | |
JP2001519956A (ja) | アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ | |
JP2001236266A (ja) | 高レベルキャッシュの効率改善方法 | |
JP2019503009A (ja) | ベクトルアトミックメモリ更新命令 | |
GB2562062A (en) | An apparatus and method for managing capability metadata | |
US6681321B1 (en) | Method system and apparatus for instruction execution tracing with out of order processors | |
JP3138259B2 (ja) | カウントによる高速レジスタ・リネームのためのシステムおよび方法 | |
JP2001519955A (ja) | 先進のプロセッサのための変換メモリ保護装置 | |
US5197133A (en) | Control store addressing from multiple sources | |
EP3935491B1 (en) | Instruction ordering | |
JP2783285B2 (ja) | 情報処理装置 | |
US8181002B1 (en) | Merging checkpoints in an execute-ahead processor | |
JP2001249806A (ja) | 予測情報管理方法 |
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 |