KR100225244B1 - 프로세서내에서 자원 할당을 추적하는 방법 및 장치,수퍼스칼라프로세서및데이타프로세싱시스템 - Google Patents
프로세서내에서 자원 할당을 추적하는 방법 및 장치,수퍼스칼라프로세서및데이타프로세싱시스템Info
- Publication number
- KR100225244B1 KR100225244B1 KR1019960021713A KR19960021713A KR100225244B1 KR 100225244 B1 KR100225244 B1 KR 100225244B1 KR 1019960021713 A KR1019960021713 A KR 1019960021713A KR 19960021713 A KR19960021713 A KR 19960021713A KR 100225244 B1 KR100225244 B1 KR 100225244B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- counter
- instructions
- execution
- processor
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000013468 resource allocation Methods 0.000 title claims abstract description 16
- 230000004044 response Effects 0.000 claims abstract description 25
- 239000000872 buffer Substances 0.000 claims description 76
- 238000012163 sequencing technique Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 6
- 238000011084 recovery Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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)
Abstract
Description
Claims (22)
- 인스트럭션의 추측 실행(speculative execution)을 지원하는 프로세서(a processor)내에서 자원 할당(allocation of resources)을 추적(track)하는 방법으로서, 상기 프로세서는 다수의 실행 유닛(a plurality of execution units), 제1카운터(a first counter) 및 제2카운터(a second counter)를 구비하는 자원 카운터(a resource counter), 및 다수의 자원(a plurality of resources)을 갖고, 상기 다수의 자원 중 하나 이상(one or more of said plurality of resources)은 실행을 위해 상기 다수의 실행 유닛으로 디스패치(dispatch)된 다수의 인스트럭션(a plurality of instructions)의 각각에 할당되는 상기 방법에 있어서, 상기 다수의 인스트럭션중 한 인스트럭션을, 실행을 위해 상기 다수의 실행 유닛중 한 실행 유닛으로 디스패칭하는 것에 응답하여; 상기 인스트럭션에 할당된 상기 다수의 자원의 각각에 대해 상기 제1카운터를 1회 증분 (incrementing)시키고; 상기 인스트럭션이 추측 실행 경로(a speculative execution path)내의, 제1인스트럭션(a first instruction)인 경우, 상기 제1카운터를 증분시키기 전에 상기 제1카운터의 값을 상기 제2카운터에 로딩(loading)하는 단계와; 상기 다수의 실행 유닛중 한 실행 유닛으로 디스패치된 상기 다수의 인스트럭션 중 특정 인스트럭션(a particular instruction)의 완료에 응답하여, 상기 특정 인스트럭션에 할당된 각 자원에 대해 상기 제1 및 제2카운터를 1회 감분(decrementing)시키는 단계와; 상기 추측 실행 경로의 반증(a refutation)에 응답하여, 상기 제2카운터의 값을 상기 제1카운터에 전달(transferring)하는 단계로서, 상기 자원 카운터는 상기 다수의 인스트럭션에 할당된 상기 다수의 자원중 다수(a number of said plurality of resources)를 추적하는 상기 단계를 포함하는 프로세서내에서 자원 할당을 추적하는 방법.
- 제1항에 있어서, 상기 프로세서는 각 사이클 동안 다수의 인스트럭션을 디스패치하고 완료할 수 있는 수퍼스칼라 프로세서(a superscalar processor)를 포함하고, 상기 제1카운터의 값을 상기 제2카운터에 로딩하는 상기 단계는, 추측 실행 경로내에서 제1 인스트럭션인 인스트럭션과 동시에 디스패치되는 상기 다수의 인스트럭션중 비추측 인스트럭션(nonspeculative instructions)에 할당된 상기 다수의 자원에 대해 상기 제2카운터를 1회 증분시키는 단계를 더 포함하는 프로세서내에서 자원 할당을 추적하는 방법.
- 제1항에 있어서, 상기 프로세서는 제2추측 실행 경로(a second speculative execution path)를 지원하고, 상기 제2자원 카운터는 제3카운터(a third counter)를 더 포함하되, 상기 다수의 인스트럭션중 선택된 인스트럭션(a selected instruction)을 실행을 위해 상기 다수의 실행 유닛중 한 실행 유닛으로 디스패칭하는 것에 응답하여, 상기 선택된 인스트럭션이 제2추측 실행 경로내의 제1 인스트럭션이고, 상기 제1카운터를 증분시키기 전에 상기 제1카운터의 값을 상기 제3카운터에 로딩하는 단계와; 상기 다수의 실행 유닛중 한 실행 유닛으로 디스패치된 상기 다수의 인스트럭션중 특정 인스트럭션의 완료에 응답하여, 상기 특정 인스트럭션에 할당된 각 자원에 대해 상기 제3카운터를 1회 감분시키는 단계와; 제1추측 실행 경로가 바르게 추측될 것이라는 결정 및 상기 제2추측 실행 경로의 반증에 응답하여, 상기 제3카운터의 값을 상기 제1카운터에 전달하는 단계로서, 상기 자원 카운터는 상기 다수의 인스트럭션에 할당된 상기 다수의 자원중 다수를 추적하는 상기 단계를 더 포함하는 프로세서내에서 자원 할당을 추적하는 방법.
- 제1항에 있어서, 상기 제1 및 제2카운터는, 제각기 제1 및 제2 쉬프트 레지스터 (first and second shift register)를 구비하고, 상기 제1 및 제2 쉬프트 레지스터의 각각은 상기 제1 및 제2 쉬프트 레지스터내의 세트 비트(a set bit)의 비트 위치(a bit position)에 의해 상기 다수의 자원중 다수의 할당된 자원을 표시하며, 상기 제1카운터를 증분시키는 상기 단계는 상기 인스트럭션에 할당된 상기 다수의 자원의 각각에 대해 상기 제1 쉬프트 레지스터내에서 제1방향(a first direction)으로 1비트 위치만큼 상기 세트 비트를 쉬프트하는 단계를 구비하고, 상기 제1 및 제2카운터를 감분시키는 상기 단계는 상기 특정 인스트럭션에 할당된 각 자원에 대해 상기 제1 및 제2 쉬프트 레지스터내에서 상기 제2방향(a second direction)으로 1비트 위치만큼 상기 세트 비트를 쉬프트하는 단계를 구비하는 프로세서내에서 자원 할당을 추적하는 방법.
- 인스트럭션의 추측 실행을 지원하는 프로세서내에서 자원 할당을 추적하는 장치로서, 상기 프로세서는 다수의 실행 유닛 및 다수의 자원을 구비하고, 상기 다수의 자원중 하나 이상은 실행을 위해 상기 다수의 실행 유닛으로 디스패치된 다수의 인스트럭션의 각각에 할당되는 상기 장치에 있어서, 제1카운터 및 제2카운터를 갖는 자원 카운터와; 상기 다수의 인스트럭션중 한 인스트럭션을 실행을 위해 상기 다수의 실행 유닛중한 실행 유닛으로 디스패칭하는 것에 응답하여 상기 인스트럭션에 할당된 상기 다수의 자원의 각각에 대해 상기 제1카운터를 1회 증분시키는 수단과; 상기 다수의 인스트럭션중 특정 인스트럭션을 실행을 위해 상기 다수의 실행 유닛중 한 실행 유닛으로 디스패치하는 것에 응답하여 상기 제1카운터를 증분시키기 전에 상기 제1카운터의 값을 상기 제2카운터에 로딩하는 수단으로서, 상기 특정 인스트럭션이 추측 실행 경로내의 제1 인스트럭션인 상기 수단과; 상기 인스트럭션의 완료에 응답하여 상기 다수의 실행 유닛으로 디스패치된 상기 다수의 인스트럭션중 한 인스트럭션에 할당된 각 자원에 대해 상기 제1 및 제2카운터를 1회 감분시키는 수단과; 상기 추측 실행 경로의 반증에 응답하여 상기 제2카운터의 값을 상기 제1카운터에 전달하는 수단으로서, 상기 자원 카운터는 상기 다수의 인스트럭션에 할당된 상기 다수의 자원중 다수를 추적하는 상기 수단을 포함하는 프로세서내에서 자원 할당을 추적하는 장치.
- 제5항에 있어서, 상기 프로세서는 각 사이클 동안 다수의 인스트럭션을 디스패치하고 완료할 수 있는 수퍼스칼라 프로세서를 포함하고, 상기 제1카운터의 값을 상기 제2카운터에 로딩하는 상기 수단은 추측 실행 경로내에서 제1 인스트럭션인 인스트럭션과 동시에 디스패치되는 상기 다수의 인스트럭션중 비추측 인스트럭션에 할당된 상기 다수의 자원의 각각에 대해 상기 제2카운터를 1회 증분시키는 수단을 더 포함하는 프로세서내에서 자원 할당을 추적하는 장치.
- 제5항에 있어서, 상기 프로세서는 제2추측 실행 경로를 지원하고, 상기 제2자원 카운터는 제3카운터를 더 포함하되, 상기 다수의 인스트럭션 중 선택된 인스트럭션을 실행을 위해 상기 다수의 실행 유닛중 한 실행 유닛으로 디스패칭하는 것에 응답하여, 상기 제1카운터를 증분시키기 전에 상기 제1카운터의 값을 상기 제3카운터에 로딩하는 수단으로서, 상기 선택될 인스트럭션은 제2추측 실행 경로내의 제1 인스트럭션인 상기 수단과; 상기 다수의 실행 유닛중 한 실행 유닛으로 디스패치된 상기 다수의 인스트럭션중 특정 인스트럭션의 완료에 응답하여, 상기 특정 인스트럭션에 할당된 각 자원에 대해 상기 제3카운터를 1회 감분시키는 수단과; 제1추측 실행 경로가 바르게 추측된 것이라는 결정 및 상기 제2추측 실행 경로의 반증에 응답하여, 상기 제3카운터의 값을 상기 제1카운터에 전달하는 수단으로서, 상기 자원 카운터는 상기 다수의 인스트럭션에 할당된 상기 다수의 자원중 다수를 추적하는 상기 수단을 더 포함하는 프로세서내에서 자원 할당을 추적하는 장치.
- 제5항에 있어서, 상기 제1 및 제2카운터는, 제각기 제1 및 제2 쉬프트 레지스터를 구비하고, 상기 제1 및 제2 쉬프트 레지스터의 각각은 상기 제1 및 제2 쉬프트 레지스터내의 세트 비트의 비트 위치에 의해 상기 다수의 자원중 다수의 할당된 자원을 표시하며, 상기 제1카운터를 증분시키는 상기 단계는 상기 인스트럭션에 할당된 상기 다수의 자원이 각각에 대해 상기 제1 쉬프트 레지스터내에서 제1방향으로 1비트 위치만큼 상기 세트 비트를 쉬프트하는 수단을 구비하고, 상기 제1 및 제2카운터를 감분시키는 단계는 상기 특정 인스트럭션에 할당된 상기 각각의 자원에 대해 상기 제1 및 제2 쉬프트 레지스터내에서 상기 제2방향으로 1비트 위치만큼 상기 세트 비트를 쉬프트하는 수단을 구비하는 프로세서내에서 자원 할당을 추적하는 장치.
- 제5항에 있어서, 상기 다수의 자원은, 완료 이전에 상기 다수의 인스트럭션에 연관된 데이타를 저장하도록 이용된 다수의 재명명 데이타 버퍼(a plurality of rename data buffers)를 포함하는 프로세서내에서 자원 할당을 추적하는 장치.
- 제5항에 있어서, 상기 프로세서는 상기 다수의 인스트럭션의 순서와 상관없는 (out-of-order) 실행을 지원하고 다수의 엔트리(a plurality of entries)를 갖는 인스트럭션 시퀀싱 표(an instruction sequencing table)를 구비하며, 상기 다수의 인스트럭션의 각각에는 상기 다수의 인스트럭션의 프로그램 순서(a program order)에 따라 순차적으로 상기 다수의 엔트리중 한 엔트리가 할당되어, 상기 다수의 인스트럭션이 상기 프로그램 순서에 따라 완료될 수 있도록 하고, 상기 다수의 자원은 상기 인스트럭션 시퀀싱 표내에 상기 다수의 엔트리를 구비하는 프로세서내에서 자원 할당을 추적하는 장치.
- 다수의 실행 유닛으로 디스패치된 인스트럭션이, 프로그램 순서와 상관없이 실행될 수 있는 상기 다수의 실행 유닛과; 다수의 사용자-액세스가능한 데이타 레지스터 (a plurality of user-accessible data registers)와; 다수의 재명명 버퍼와; 상기 다수의 실행 유닛으로 인스트럭션을 디스패치하는 수단과; 실행을 위해 상기 다수의 실행 유닛으로 디스패치된 다수의 인스트럭션의 각각에 인스트럭션 식별자(an instruction identifier)를 할당하는 수단으로서, 인스트럭션 식별자는 상기 다수의 인스트럭션의 프로그램 순서에 따라 상기 다수의 인스트럭션의 각각에 순차적으로 할당되는 상기 할당 수단과; 다수의 엔트리를 구비하는 표(a table)로서, 상기 다수의 엔트리중 각 엔트리는 인스트럭션 식별자에 연관되고, 상기 각 엔트리에 연관된 인스트럭션 식별자가 할당된 인스트럭션의 실행이 종료되었는지의 여부를 표시하는 종료 표시자(a finish indicator)를 포함하는 상기 표와; 상기 특정 엔트리에 연관된 인스트럭션 식별자가 할당된 인스트럭션의 실행 종료(termination of execution)에 응답하여 상기 표내의 상기 다수의 엔트리중 특정 엔트리내에서 종료 표시자를 세팅(setting)하는 수단과; 특정 프로세서 사이클(a particular processor cycle) 동안 완료되는 것이 가능한 상기 다수의 인스트럭션의 서브세트(a subset)에 할당된 인스트럭션 식별자에 연관된 상기 표내의 엔트리를 지정(point to)하는 하나 이상의 포인터(one or more pointers)로서, 상기 서브세트중 선택된 인스트럭션은 상기 선택된 인스트럭션에 연관된 데이타를 상기 다수의 재명명 버퍼중 연관된 재명명 버퍼로부터 상기 다수의 데이타 레지스터중 선택된 데이타 레지스터로 전송하는 상기 하나 이상의 포인터와; 상기 다수의 인스트럭션의 상기 서브세트내의 선택된 인스트럭션을 완료하는 수단으로서, 상기 선택된 인스트럭션에 의해 생성된 예외(exceptions)가 처리되고, 상기 선택된 인스트럭션에 선행하는 인스트럭션 식별자가 할당되는 상기 다수의 인스트럭션중의 인스트럭션은 이전 프로세서 사이클(a previous processor cycle) 동안 완료되었거나 동일한 프로세서 사이클 동안 완료되며, 상기 선택된 인스트럭션에 할당된 인스트럭션 식별자는 세트 종료 표시자(set finish indicators)를 갖는 엔트리에 연관되어, 상기 다수의 인스트럭션은 상기 프로그램 순서에 따라 완료되도록 하는 상기 완료 수단을 포함하는 수퍼스칼라 프로세서.
- 제11항에 있어서, 상기 표내의 각 엔트리는, 상기 각 엔트리에 연관된 인스트럭션 식별자가 할당되는 인스트럭션을 완료하는데 필요한 상기 다수의 데이타 레지스터중 다수를 지정(specify)하는 필드(a field)와; 상기 각 엔트리에 연관된 인스트럭션 식별자가 할당되는 인스트럭션의 예외 동안 발생하는 예외 조건(exception conditions)을 표시하는 필드를 더 포함하는 수퍼스칼라 프로세서.
- 제11항에 있어서, 상기 표는 M개의 엔트리를 갖고, 상기 수퍼스칼라 프로세서는 엔트리 카운터(an entry counter)를 더 구비하되, 상기 엔트리 카운터는 M+1개의 비트를 구비하며, 자신내의 세트 비트의 위치에 의해 상기 표내의 상기 다수의 엔트리중 할당된 엔트리의 제1숫자(a first number)를 표시하는 주 쉬프트 레지스터(a primary shift register)와; M+1개의 비트를 구비하며, 추측 실행 경로에 연관되고, 상기 추측 실행 경로내에 있지 않은 인스트럭션에 할당되는 상기 다수의 엔트리중 엔트리의 제2숫자(a second number)을 표시하는 백업 쉬프트 레지스터(a backup shift register)와; 상기 추측 실행 경로와 잘못예측된 것이라는 판정에 응답하여 상기 제2숫자를 상기 백업 쉬프트 레지스터로부터 상기 주 쉬프트 레지스터에 전송하는 수단을 더 구비하는 상기 엔트리 카운터를 더 포함하는 수퍼스칼라 프로세서.
- 제13항에 있어서, 상기 수퍼스칼라 프로세서는 N개의 추측 실행 경로를 지원하고, 상기 엔트리 카운터는 N개의 백업 쉬프트 레지스터를 더 포함하는 수퍼스칼라 프로세서.
- 제11항에 있어서, 상기 수퍼스칼라 프로세서는 M개의 재명명 버퍼를 갖고, 재명명 버퍼 카운터를 더 구비하되, 상기 재명명 버퍼 카운터는 M+1개의 비트를 구비하며, 자신내의 세트 비트의 위치에 의해 디스패치되고 완료되지 않은 인스트럭션에 할당된 상기 다수의 재명명 버퍼의 제1숫자를 표시하는 주 쉬프트 레지스터와; M+1개의 비트를 구비하며, 추측 실행 경로에 연관되고, 디스패치되고 완료되지 않았으며 상기 추측 실행 경로내에 있지 않은 인스트럭션에 할당된 상기 다수의 재명명 버퍼의 제2숫자를 표시하며 상기 제2숫자는 자신내의 세트 비트의 위치에 의해 표시되는 백업 쉬프트 레지스터와; 상기 추측 실행 경로가 잘못예측된 것이라는 판정에 응답하여 상기 제2숫자를 상기 백업 쉬프트 레지스터로부터 상기 주 쉬프트 레지스터에 전송하는 수단을 구비하는 상기 재명명 엔트리 카운터를 더 포함하는 수퍼스칼라 프로세서.
- 제15항에 있어서, 상기 수퍼스칼라 프로세서는 N개의 추측 실행 경로를 지원하고, 상기 데이타 버퍼 카운터는 N개의 백업 쉬프트 레지스터를 더 포함하는 수퍼스칼라 프로세서.
- 인스트럭션의 순서와 상관없는 실행(out-of-order execution)을 지원하는 데이타 프로세싱 시스템에 있어서, 상기 다수의 인스트럭션을 저장하는 메모리(a memory)와; 다수의 실행 유닛을 갖는 수퍼스칼라 프러세서로서, 상기 다수의 실행 유닛으로 디스패치된 다수의 인스트럭션이 프로그램 순서와 상관없이 실행될 수 있는 상기 수퍼스칼라 프로세서와; 상기 다수의 인스트럭션을 상기 메모리로부터 상기 다수의 실행 유닛으로 디스패칭하는 수단과; 다수의 사용자 -엑세스가능한 데이타 레지스터와; 다수의 재명명 버퍼와; 실행을 위해 상기 다수의 실행 유닛으로 디스패치된 다수의 인스트럭션의 각각에 인스트럭션 식별자를 할당하는 수단으로서, 인스트럭션 식별자는 상기 다수의 인스트럭션의 프로그램 순서에 따라 상기 다수의 인스트럭션의 각각에 순차적으로 할당되는 상기 할당 수단과; 다수의 엔트리를 구비하는 표로서, 상기 다수의 엔트리중 각 엔트리가 인스트럭션 식별자에 연관되고, 상기 각 엔트리에 연관된 인스트럭션 식별자가 할당된 인스트럭션의 실행이 종료되었는지의 여부를 표시하는 종료 표시자를 포함하는 상기 표와; 상기 특정 엔트리에 연관된 인스트럭션 식별자에 할당된 인스트럭션의 실행 종료에 응답하여 상기 표내의 상기 다수의 엔트리중 특정 엔트리내에서 종료 표시자를 세팅하는 수단과; 특정 프로세서 사이클 동안 완료되는 것이 가능한 상기 다수의 인스트럭션의 서브세트에 할당된 인스트럭션 식별자에 연관된 상기 표내의 엔트리를 지정하는 하나 이상의 완료 포인터(one or more completionpointers)로서, 상기 서브세트중 선택된 인스트럭션은 상기 선택된 인스트럭션에 연관된 데이타를 상기 다수의 재명명 버퍼중 연관된 재명명 버퍼로부터 상기 다수의 데이타 레지스터중 선택된 데이터 레지스터에 전송하는 상기 하나 이상의 완료 포인터와; 상기 다수의 인스트럭션의 상기 서브세트내의 선택된 인스트럭션을 완료하는 수단으로서, 상기 선택된 인스트럭션에 의해 생성된 예외가 처리되고, 상기 선택된 인스트럭션에 선행하는 인스트럭션 식별자에 할당되는 상기 다수의 인스트럭션중의 인스트럭션은 이전의 프로세서 사이클 동안 완료되었거나 동일한 프로세서 사이클 동안 완료되며, 상기 선택된 인스트럭션에 할당된 인스트럭션 식별자는 세트 종료표시자를 갖는 엔트리에 연관되어, 상기 다수의 인스트럭션이 상기 프로그램 순서에 따라 완료되도록 하는 상기 완료 수단을 포함하는 데이타 프로세싱 시스템.
- 제17항에 있어서, 상기 표내의 각 엔트리는, 상기 각 엔트리에 연관된 인스트럭션 식별자가 할당되는 인스트럭션을 완료하는데 필요한 상기 다수의 데이타 레지스터중 다수를 지정하는 필드와; 상기 각 엔트리에 연관된 인스트럭션 식별자가 할당되는 인스트럭션의 예외 동안 발생한 예외조건을 표시하는 필드를 더 포함하는 데이타 프로세싱 시스템.
- 제17항에 있어서, 상기 표는 M개의 엔트리를 가지며, 상기 프로세싱 시스템은 엔트리 카운터를 더 구비하되, 상기 엔트리 카운터는 M+1개의 비트를 구비하며, 자신내의 세트 비트의 위치에 의해 상기 표내의 상기 다수의 엔트리중 할당된 엔트리의 제1숫자를 표시하는 주 쉬프트 레지스터와; M+1개의 비트를 구비하며, 추측 실행 경로에 연관되고, 상기 추측 실행 경로내에 있지 않은 인스트럭션에 할당되는 상기 다수의 엔트리중의 엔트리의 제2숫자를 표시하는 백업 쉬프트 레지스터와; 상기 추측 실행 경로가 잘못예측된 것이라는 판정에 응답하여 상기 제2숫자를 상기 백업 쉬프트 레지스터로부터 상기 주 쉬프트 레지스터에 전송하는 수단을 더 구비하는 상기 엔트리 카운터를 더 포함하는 데이타 프로세싱 시스템.
- 제19항에 있어서, 상기 수퍼스칼라 프로세서는 N개의 추측 실행 경로를 지원하고, 상기 엔트리 카운터는 N개의 백업 쉬프트 레지스터를 더 포함하는 데이타 프로세싱 시스템.
- 제17항에 있어서, 상기 수퍼스칼라 프로세서는 M개의 재명명 버퍼를 갖고, 재명명 버퍼 카운터를 더 구비하되, M+1개의 비트를 구비하며, 자신내의 세트 비트의 위치에 의해 디스패치되고 완료되지 않은 인스트럭션에 할당된 상기 다수의 재명명 버퍼의 제1숫자를 표시하는 주 쉬프트 레지스터와; M+1개의 비트를 구비하며, 추측 실행 경로에 연관되고, 디스패치되고 완료되지 않았으며 상기 추측 실행 경로 내에 있지 않은 인스트럭션에 할당된 상기 다수의 재명명 버퍼중 제2숫자를 표시하며 상기 제2숫자는 자신내의 세트 비트의 위치에 의해 표시되는 백업 쉬프트 레지스터와; 상기 추측 실행 경로가 잘못예측된 것이라는 판정에 응답하여 상기 제2숫자를 상기 백업 쉬프트 레지스터로부터 상기 주 쉬프트 레지스터에 전송하는 수단을 구비하는 상기 재명명 버퍼 카운터를 더 포함하는 데이타 프로세싱 시스템.
- 제21항에 있어서, 상기 수퍼스칼라 프로세서는 N개의 추측 실행 경로를 지원하고, 상기 데이타 버퍼 카운터는 N개의 백업 쉬프트 레지스터를 더 포함하는 데이타 프로세싱 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/496,833 | 1995-06-29 | ||
US08/496,833 US5809268A (en) | 1995-06-29 | 1995-06-29 | Method and system for tracking resource allocation within a processor |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100225244B1 true KR100225244B1 (ko) | 1999-10-15 |
Family
ID=23974348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960021713A Expired - Fee Related KR100225244B1 (ko) | 1995-06-29 | 1996-06-15 | 프로세서내에서 자원 할당을 추적하는 방법 및 장치,수퍼스칼라프로세서및데이타프로세싱시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5809268A (ko) |
EP (1) | EP0751458B1 (ko) |
JP (1) | JP3093639B2 (ko) |
KR (1) | KR100225244B1 (ko) |
DE (1) | DE69615616D1 (ko) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860018A (en) * | 1997-06-25 | 1999-01-12 | Sun Microsystems, Inc. | Method for tracking pipeline resources in a superscalar processor |
US6324640B1 (en) * | 1998-06-30 | 2001-11-27 | International Business Machines Corporation | System and method for dispatching groups of instructions using pipelined register renaming |
US6338133B1 (en) | 1999-03-12 | 2002-01-08 | International Business Machines Corporation | Measured, allocation of speculative branch instructions to processor execution units |
US6810422B1 (en) | 2000-01-14 | 2004-10-26 | Lockheed Martin Tactical Defense Systems | System and method for probabilistic quality of communication service determination |
US6622236B1 (en) * | 2000-02-17 | 2003-09-16 | International Business Machines Corporation | Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions |
US7188232B1 (en) * | 2000-05-03 | 2007-03-06 | Choquette Jack H | Pipelined processing with commit speculation staging buffer and load/store centric exception handling |
US6675372B1 (en) * | 2000-10-31 | 2004-01-06 | Sun Microsystems, Inc. | Counting speculative and non-speculative events |
US20040186982A9 (en) * | 2002-02-06 | 2004-09-23 | Matthew Becker | Stalling Instructions in a pipelined microprocessor |
US7181737B2 (en) | 2002-03-18 | 2007-02-20 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using static procedure return addresses |
US6912633B2 (en) | 2002-03-18 | 2005-06-28 | Sun Microsystems, Inc. | Enhanced memory management for portable devices |
US6996802B2 (en) | 2002-03-18 | 2006-02-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using initialization order and calling order constraints |
US7010783B2 (en) | 2002-03-18 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation |
US7281237B2 (en) | 2003-01-16 | 2007-10-09 | Sun Microsystems, Inc. | Run-time verification of annotated software code |
US7657893B2 (en) * | 2003-04-23 | 2010-02-02 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
US7363620B2 (en) | 2003-09-25 | 2008-04-22 | Sun Microsystems, Inc. | Non-linear execution of application program instructions for application program obfuscation |
US7415618B2 (en) | 2003-09-25 | 2008-08-19 | Sun Microsystems, Inc. | Permutation of opcode values for application program obfuscation |
US7424620B2 (en) | 2003-09-25 | 2008-09-09 | Sun Microsystems, Inc. | Interleaved data and instruction streams for application program obfuscation |
US8220058B2 (en) | 2003-09-25 | 2012-07-10 | Oracle America, Inc. | Rendering and encryption engine for application program obfuscation |
US7353499B2 (en) | 2003-09-25 | 2008-04-01 | Sun Microsystems, Inc. | Multiple instruction dispatch tables for application program obfuscation |
US8190863B2 (en) * | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
US20060026388A1 (en) * | 2004-07-30 | 2006-02-02 | Karp Alan H | Computer executing instructions having embedded synchronization points |
JP4276201B2 (ja) * | 2005-03-31 | 2009-06-10 | 富士通株式会社 | Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム |
US8161493B2 (en) | 2008-07-15 | 2012-04-17 | International Business Machines Corporation | Weighted-region cycle accounting for multi-threaded processor cores |
US9690625B2 (en) * | 2009-06-16 | 2017-06-27 | Oracle America, Inc. | System and method for out-of-order resource allocation and deallocation in a threaded machine |
US8776061B2 (en) * | 2010-12-16 | 2014-07-08 | International Business Machines Corporation | Real-time distributed monitoring of local and global processor resource allocations and deallocations |
US9229791B1 (en) * | 2012-08-24 | 2016-01-05 | Qlogic, Corporation | System and method for high speed multiple buffer allocation |
US9448799B2 (en) * | 2013-03-14 | 2016-09-20 | Samsung Electronics Co., Ltd. | Reorder-buffer-based dynamic checkpointing for rename table rebuilding |
US11263047B2 (en) * | 2018-02-15 | 2022-03-01 | Sap Se | Metadata management for multi-core resource manager |
US10929139B2 (en) | 2018-09-27 | 2021-02-23 | Qualcomm Incorporated | Providing predictive instruction dispatch throttling to prevent resource overflows in out-of-order processor (OOP)-based devices |
US11086630B1 (en) | 2020-02-27 | 2021-08-10 | International Business Machines Corporation | Finish exception handling of an instruction completion table |
US12360768B2 (en) * | 2021-12-16 | 2025-07-15 | Intel Corporation | Throttling code fetch for speculative code paths |
US11829762B2 (en) | 2022-01-30 | 2023-11-28 | Simplex Micro, Inc. | Time-resource matrix for a microprocessor with time counter for statically dispatching instructions |
US11954491B2 (en) | 2022-01-30 | 2024-04-09 | Simplex Micro, Inc. | Multi-threading microprocessor with a time counter for statically dispatching instructions |
US12001848B2 (en) | 2022-01-30 | 2024-06-04 | Simplex Micro, Inc. | Microprocessor with time counter for statically dispatching instructions with phantom registers |
US11829187B2 (en) | 2022-01-30 | 2023-11-28 | Simplex Micro, Inc. | Microprocessor with time counter for statically dispatching instructions |
US11829767B2 (en) | 2022-01-30 | 2023-11-28 | Simplex Micro, Inc. | Register scoreboard for a microprocessor with a time counter for statically dispatching instructions |
US12190116B2 (en) * | 2022-04-05 | 2025-01-07 | Simplex Micro, Inc. | Microprocessor with time count based instruction execution and replay |
US12141580B2 (en) | 2022-04-20 | 2024-11-12 | Simplex Micro, Inc. | Microprocessor with non-cacheable memory load prediction |
US12169716B2 (en) | 2022-04-20 | 2024-12-17 | Simplex Micro, Inc. | Microprocessor with a time counter for statically dispatching extended instructions |
US12288065B2 (en) | 2022-04-29 | 2025-04-29 | Simplex Micro, Inc. | Microprocessor with odd and even register sets |
US12106114B2 (en) | 2022-04-29 | 2024-10-01 | Simplex Micro, Inc. | Microprocessor with shared read and write buses and instruction issuance to multiple register sets in accordance with a time counter |
US12112172B2 (en) | 2022-06-01 | 2024-10-08 | Simplex Micro, Inc. | Vector coprocessor with time counter for statically dispatching instructions |
US12282772B2 (en) | 2022-07-13 | 2025-04-22 | Simplex Micro, Inc. | Vector processor with vector data buffer |
US12124849B2 (en) | 2022-07-13 | 2024-10-22 | Simplex Micro, Inc. | Vector processor with extended vector registers |
US12147812B2 (en) | 2022-07-13 | 2024-11-19 | Simplex Micro, Inc. | Out-of-order execution of loop instructions in a microprocessor |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1304188A (ko) * | 1969-12-09 | 1973-01-24 | ||
US4145742A (en) * | 1974-09-30 | 1979-03-20 | Hewlett-Packard Company | Programmable calculator including user-definable keys |
US4056711A (en) * | 1975-10-24 | 1977-11-01 | William Paul Lamar | Method and apparatus for programming microprocessors |
US4241416A (en) * | 1977-07-01 | 1980-12-23 | Systron-Donner Corporation | Monitoring apparatus for processor controlled equipment |
US4270184A (en) * | 1978-03-16 | 1981-05-26 | Tokyo Shibaura Denki Kabushiki Kaisha | Microprocessor-based programmable logic controller |
US4371931A (en) * | 1979-06-27 | 1983-02-01 | Burroughs Corporation | Linear micro-sequencer for micro-processor system utilizing specialized instruction format |
US4575816A (en) * | 1980-12-19 | 1986-03-11 | International Business Machines Corporation | Interactive transactions processor using sequence table pointers to access function table statements controlling execution of specific interactive functions |
DE3239199C2 (de) * | 1982-10-22 | 1986-03-20 | Georg Neumann Gmbh, 1000 Berlin | Verfahren zum Schneiden einer mit Seiten- und Tiefenschrift modulierten, spiralförmigen Rille in einen ebenen, scheibenförmigen Aufzeichnungsträger, sowie Schaltungsanordnung zur Durchführung dieses Verfahrens |
US4722049A (en) * | 1985-10-11 | 1988-01-26 | Unisys Corporation | Apparatus for out-of-order program execution |
CA1286421C (en) * | 1987-10-14 | 1991-07-16 | Martin Claude Lefebvre | Message fifo buffer controller |
US5307464A (en) * | 1989-12-07 | 1994-04-26 | Hitachi, Ltd. | Microprocessor and method for setting up its peripheral functions |
US5289585A (en) * | 1990-03-26 | 1994-02-22 | Siemens Nixdorf Informationssysteme Ag | Multiprocessor system having a system bus for the coupling of several processing units with appertaining private cache memories and a common main memory |
US5581719A (en) * | 1992-11-12 | 1996-12-03 | Digital Equipment Corporation | Multiple block line prediction |
US5584037A (en) * | 1994-03-01 | 1996-12-10 | Intel Corporation | Entry allocation in a circular buffer |
US5586278A (en) * | 1994-03-01 | 1996-12-17 | Intel Corporation | Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor |
JPH07281893A (ja) * | 1994-04-15 | 1995-10-27 | Internatl Business Mach Corp <Ibm> | 処理システム及び演算方法 |
US5590352A (en) * | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
-
1995
- 1995-06-29 US US08/496,833 patent/US5809268A/en not_active Expired - Fee Related
-
1996
- 1996-05-31 DE DE69615616T patent/DE69615616D1/de not_active Expired - Lifetime
- 1996-05-31 EP EP96480077A patent/EP0751458B1/en not_active Expired - Lifetime
- 1996-06-15 KR KR1019960021713A patent/KR100225244B1/ko not_active Expired - Fee Related
- 1996-06-24 JP JP08162568A patent/JP3093639B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5809268A (en) | 1998-09-15 |
DE69615616D1 (de) | 2001-11-08 |
JPH09120359A (ja) | 1997-05-06 |
EP0751458B1 (en) | 2001-10-04 |
EP0751458A1 (en) | 1997-01-02 |
JP3093639B2 (ja) | 2000-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100225244B1 (ko) | 프로세서내에서 자원 할당을 추적하는 방법 및 장치,수퍼스칼라프로세서및데이타프로세싱시스템 | |
KR100270003B1 (ko) | 향상된 분기 예측 기법을 사용하는 프로세서 및그 실행 방법 | |
US5584037A (en) | Entry allocation in a circular buffer | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US6079014A (en) | Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state | |
US5889982A (en) | Method and apparatus for generating event handler vectors based on both operating mode and event type | |
US5809271A (en) | Method and apparatus for changing flow of control in a processor | |
US5687338A (en) | Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor | |
US6065115A (en) | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction | |
EP1145110B1 (en) | Circuit and method for tagging and invalidating speculatively executed instructions | |
US5901307A (en) | Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources | |
EP0605872A1 (en) | Method and system for supporting speculative execution of instructions | |
US5987600A (en) | Exception handling in a processor that performs speculative out-of-order instruction execution | |
KR100242403B1 (ko) | 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템 | |
US5644779A (en) | Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction | |
US20090132854A1 (en) | Method and apparatus to launch write queue read data in a microprocessor recovery unit | |
US6973563B1 (en) | Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction | |
KR980010787A (ko) | 인스트럭션 루프를 사변적으로 실행하는 프로세서및 그 방법 | |
US5898864A (en) | Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors | |
US5872949A (en) | Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source | |
JP3142813B2 (ja) | レジスタの名前変更を管理するための情報処理システムおよび方法 | |
US5524224A (en) | System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing | |
US5875325A (en) | Processor having reduced branch history table size through global branch history compression and method of branch prediction utilizing compressed global branch history | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
US6134645A (en) | Instruction completion logic distributed among execution units for improving completion efficiency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 19960615 |
|
PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 19960615 Comment text: Request for Examination of Application |
|
PG1501 | Laying open of application | ||
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 19990525 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 19990716 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 19990719 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
FPAY | Annual fee payment |
Payment date: 20020509 Year of fee payment: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20020509 Start annual number: 4 End annual number: 4 |
|
LAPS | Lapse due to unpaid annual fee | ||
PC1903 | Unpaid annual fee |
Termination category: Default of registration fee Termination date: 20040410 |