KR100295081B1 - 명령어실행제어를위해명령어에태그를할당하는시스템및방법 - Google Patents
명령어실행제어를위해명령어에태그를할당하는시스템및방법 Download PDFInfo
- Publication number
- KR100295081B1 KR100295081B1 KR1019950702704A KR19950702704A KR100295081B1 KR 100295081 B1 KR100295081 B1 KR 100295081B1 KR 1019950702704 A KR1019950702704 A KR 1019950702704A KR 19950702704 A KR19950702704 A KR 19950702704A KR 100295081 B1 KR100295081 B1 KR 100295081B1
- Authority
- KR
- South Korea
- Prior art keywords
- tag
- instruction
- instructions
- queue
- register file
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 17
- 238000012544 monitoring process Methods 0.000 claims abstract description 13
- 238000004064 recycling Methods 0.000 claims 2
- 239000000872 buffer Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000000746 purification Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/30141—Implementation provisions of register files, e.g. ports
-
- 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, 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, 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Abstract
명령어에 태그를 할당하기 위한 태그 감시 시스템으로서, 메모리 유니트는 실행 유니트에 의해 실행될 명령어를 저장한다. 실행전에 명령어 페치 유니트는 명령어를 디코드한다. 레지스터 파일은 디코드된 명령어를 저장한다. 큐는 디코드된 명령어에 태깅하기 위해 사용되는 태그를 포함하는 다수의 슬롯을 갖고 있다. 제어유니트는 디코드된 명령어에 태그를 할당하고, 실행된 명령어의 완료를 감시하고, 실행된 명령어의 완료시 큐에서 태그를 전진시킨다. 레지스터는 주어진 디코드된 명령어를 그 명령어에 할당된 태그에 의해 정의되는 레지스터 파일내의 어드레스 위치에 저장한다. 레지스터 파일은 또한 다수의 판독 어드레스 인에이블 포트 및 그에 대응하는 판독 출력 포트를 포함한다. 큐로부터의 각각의 슬롯은 판독 어드레 TM 인에이블 포트 중 대응하는 포트에 결합된다. 그러므로, 디코드된 명령어는 그 디코드된 명령어에 할당된 태그에 의해 인에이블되는 판독 출력 포트로부터 프로그램 순서대로 출력된다.
[색인어]
명령어, 태그, 할당, 메모리, 실행, 레지스터, 감시, 순서, 재순환
Description
[발명의 명칭]
명령어 실행 제어를 위해 명령어에 태그를 할당하는 시스템 및 방법
[기술분야]
본 발명은 일반적으로 슈퍼스칼라 컴퓨터에 관한 것으로서, 특히 슈퍼스칼라 제한 명령어 컴퓨터(RISC)에서의 명령어 실행을 제어하기 위해 태그를 이용하는 시스템 및 방법에 관한 것이다.
[배경기술]
명령어 순서를 유지하는 한가지 기술은 의존도 정보(dependency information)를 올바른 순서로 유지하기 위해 리오더 버퍼(reorder buffer)를 사용하는 것이다. “Superscalar Microprocessor Design”(Prentice Hall, 1991)란 제목의 논문 48∼50 페이지와 139∼142 페이지에 Johnson에 의해 기재되어 있는 이 기술은 이 순서가 명령어 윈도우에서 유지될 필요가 없도록 리오더-버퍼에서 의존도 정보를 유지한다. 리오더 버퍼 엔트리는 FIFO의 상부(top)에 할당되며 그 결과가 레지스터 파일에 기록될 때 할당해제(deallocated)된다.
명령어가 디코드되면, 그 결과 값은 한 리오더-버퍼 위치로 할당되고, 그 수신지 레지스터가 이 위치로 재명명(renamed)된다. 이 결과를 확인하기 위한 태그가 생성되고, 이 태그는 할당된 리오더 - 버퍼 위치에 저장된다. 후속 명령어가 재명명된 수신지 레지스터에 조회할 때, 이 명령어는 리오더 버퍼에 저장된 값을 얻게 된다 한 명령어가 디코드되면, 그 소스 모퍼랜드(source operand)의 레지스터 넘버가 리오더 버퍼 및 레지스터 파일에 억세스하기 위해 이용된다. 리오더 버퍼는 내용-어드레스가능하며, 적절한 칼을 검색하기 위해 관련 조사표가 이용된다. 만일 리오더 버퍼가 정합하는 엔트리를 갖고 있으면, 이 엔트리내의 값이 소스 오퍼랜드로서 선택된다.
종래의 컴퓨터 시스템에 사용되는 프로세서는 통상적으로 프로그램 명령어를 한번에 하나씩 순차적인 순서로 실행한다. 단일 명령어를 실행하는 프로세스는 몇개의 순차적인 단계를 포함한다. 제1 단계는 일반적으로 메모리 장치로부터 명령어를 페치(fetch)하는 것을 포함한다. 제2 단계는 일반적으로 명령어를 디코딩하고, 오퍼랜드를 조립(assembling)하는 것을 포함한다. 제3 단계는 일반적으로 명령어를 실행하고 그 결과를 저장하는 것을 포함한다. 어떤 프로세서는 프로세서 클럭의 단일 사이클에서 각각의 단계를 수행하도록 설계되어 있다. 이와 달리 각 단계 당 프로세서 클럭 사이클의 수가 특정 명령어에 의존하도록 프로세서가 설계될 수도 있다.
현대의 컴퓨터는 일반적으로 성능을 향상시키기 위해 파이프라이닝(pipelining)으로서 알려진 기술을 이용한다. 파이프라이닝은 실행 프로세스의 순차적인 단계의 오버래핑을 포함한다. 예를 들어, 프로세서가 한 명령어에 대한 실행 단계를 수행하고 있는 동안, 동시에 제2 명령어에 대한 디코드 단계를 수행하고 제3 명령어의 페치를 수행할 수도 있다. 그러므로, 파이프라이닝은 일련의 명령어에 대한 실행 시간을 감소시킬 수 있다. 슈퍼파이프라인 방식의 프로세서는 전술한 3가지 순차적인 단계의 보조단계(sub-steps)를 오버래핑함으로써 성능을 더욱 향상시키기 위해 시도한다.
성능을 향상시키기 위한 다른 기술로는 하나 이상의 명령어를 병렬로 동시에 실행하는 기술이 있다. 이런 기술을 사용하는 프로세서는 일반적으로 슈퍼스칼라(superscalar) 프로세서로 언급된다. 2개 또는 그 이상의 명령어를 동시에 실행하기 위한 슈퍼스칼라 프로세서의 능력은 실행되고 있는 특정 명령어에 의존한다. 예를 들어, 동일한 제한된 프로세서 자원(부동소수점 유니트와 같은)의 이용을 둘 다필요로 하는 2개의 명령어는 동시에 실행될 수 없다. 이런 형태의 콘플릭트(conflict)는 자원 콘플릭트로서 알려져 있다. 또한, 이전의 명령어의 실행에 의해 발생된 결과에 의존하는 명령어는 그 이전의 명령어와 묶여질 수 없다. 이전의 명령어의 결과에 의존하는 명령어는 제1 명령어에 대한 데이터 의존도를 갖는다고 말한다. 이와 유사하게, 어떤 한 명령어는 이전의 명령어에 대해 절차적인 의존도를 가질 수도 있는데, 이것은 이들 두 명령어가 동시에 실행되는 것을 방해한다.
그러므로, 슈퍼스칼라 프로세서는 한번에 하나 이상의 명령어를 실행하기 위한 시도를 한다. 이를 위해서 프로세서는 실행 유니트(예, 부동소수점 유니트, 정수 유니트 등)로 불리는 복수의 명령어를 실행하기 위한 시스템을 포함해야 한다. 실행 유니트에는 가까운 미래에 실행하기 위한 명령어 그룹이 공급되어야 한다. 이 명령어 그룹은 통상적으로 소위 “명령어 윈도우”에 위치된다. 윈도우는 명령어 프로그램의 “스냅샷(snap-shot)”을 제공한다.
전술한 윈도우는 통상적으로 명령어 페치 유니트에 위치된다. 명령어 페치 유니트는 메모리로부터 명령어 그룹을 페치하고, 그 명령어를 디코드하여 슈퍼스칼라 유니트를 보낸다. 슈퍼스칼라(Super-Scalar) 유니트는 다양한 기능 유니트로 명령어를 발생한다. 슈퍼스칼라 유니트는 명령어가 이용하게 되는 마이크로프로세서의 자원(예, 적재/저장)을 나타내는 정보와, 명령어 입력이 나오게 되는 레지스터(예, 정수 유니트 레지스터 파일)와 그 출력이 진행하게 되는 레지스터(예, 부동소 숫점 유니트 레지스터 파일)의 이름에 관한 정보, 및 명령어가 수행하게 될 기능(예, 가산, 승산)을 나타내는 정보 등을 필요로 한다. 이런 정보를 알게됨으로써, 일단 명령어가 완료되면, 슈퍼스칼라 유니트는 그 명령어를 윈도우로부터 제거하고, 그 위치에 새로운 명령어를 부가하도록 명령어 페치 유니트에 통지한다.
현재의 설계는 선입선출방식 큐(First In First Out queue:FIFO)를 이용하는 명령어 윈도우를 채택하고 있다. FIFO 내의 데이터는 “일정한 양” 만큼만 전진될 수 있다. 예를 들어, 명령어 윈도우는 4개의 명령어(I0-I3)를 포함할 수도 있으며, 4개의 그룹으로 변화될 수도 있다. 이 경우에, 명령어 I0, I1, I2 및 I3가 실행된 후에, 이들 명령어는 윈도우로부터 제거되고 4개의 다른 명령어가 윈도우로 전진된다. 슈퍼스칼라 유니트는 윈도우를 통한 명령어의 진행을 쉽게 따라 갈 수 있는데, 그 이유는 한 그룹의 명령어가 완료될 때마다 윈도우가 일정한 양만큼 변화되기 때문이다.
고정 전진 윈도우(fixed advance windows)는 몇 가지 결점을 갖고 있다. 어떤 명령어는 그룹 명령어들이 윈도우로부터 제거되는 것을 지연시킬 수도 있다. 예를 들어, 만일 I0, I1, I2가 모두 한 사이클에서 실행되는 명령어이고 13가 실행을 위해 많은 사이클을 필요로 하는 명령어라면, I0, I1, I2는 그들 명령어가 완료된 후에도 I3가 실행을 완료할 때까지 FIFO로부터 방출되어 새로운 3개의 명령어에 의해 대치되는 대신에, 윈도우 내에 남아 있어야 한다. 이것은 명령어 스트림의 진행을 저지하고(즉, 병목현상), 성능을 제한하는 경향이 있다.
고정 전진 윈도우(FIFO)에 대한 한가지 해결책은 가변 양만큼 전진될 수 있는 명령어 윈도우이다. 이것은 명령어가 실행된 후 즉시 윈도우로부터 제거될 수 있도록 허용한다. 명령어 실행은 가변 전진 윈도우를 이용하면 보다 복잡해지는데, 그 이유는 한 명령어가 FIFO 내의 수 개의 위치에 위치될 수도 있기 때문이다. 예를 들어, I0가 회수(완료)되고 있는 것과 동일한 사이클 동안에 Il이 실행되는 경우에, 그 다음 사이클에서 I0는 FIFO로부터 방출되게 되고 Il이 FIFO내의 I0의 슬롯으로 이동하게 된다(여기서 I0와 I1은 명령어 프로그램 순서가 아러라 FIFO내의 슬롯 위치로 귀착된다). 슈퍼스칼자 유니트는 명령어가 실행될 때 그 명령어를 회수할 수 있도록 새로운 I0가 이전의 I1이었는지를 알아야 한다. 그리고 실행 유니트는 대응하는 결과를 기능 유니트의 올바른 레지스터 파일 어드레스로 기록할 수 있다.
비록 이것은 성능을 향상시키게 되지만, 이 시스템과 관련된 결점이 있다. 통상적으로, 명령어 페치 유니트로부터의 명령어를 포함하는 (통상적으로 슈퍼스칼라 유니트 내의) 대형 주 큐(large principal queue)를 사용해야할 필요가 있다. 또한, 몇 개의 다른 중앙에 위치된 큐가 주 큐(즉, 자원 큐, 수신지 레지스터 큐 등)에 위치된 각 명령어와 관련된 디코드된 정보를 포함할 필요가 있게 된다. 주 큐 및 디코드된 정보를 포함하는 큐는 모두 명령어를 추적(명령어가 보내지는 곳, 명령어가 실행되는 때, 등)하기 위해 병렬로 전진될 필요가 있다.
현재, 명령어를 포함시키기 위해 수 개의 큐를 이용하는 아이디어는 단점이 많은데, 그 이유로는 다수의 큐에 대해 많은 양의 칩 면적 자원이 전용으로 사용되고, 하나 이상의 큐를 갖는 시스템을 설계하는데 있어 많은 유연성이 없으며, 큐 내의 데이터를 관리하기 위한 제어 로직이 복잡하고 유연성이 없다는 것이다.
그러므로, 필요한 것은 명령어가 디코드된 이후에 그 명령어를 “추적” 또는 감시하기 위한 기술이다. 이 시스템은 칩 상의 작은 면적을 필요로 해야 하고, 유연성이 있고, “가변 전진 명령어 윈도우”를 통해 명령어가 전진될 때 명령어를 적절하게 감시할 수 있어야 한다.
[발명의 상세한 설명]
[발명의 요약]
본 발명은 복수 명령어에 태그를 할당하는 시스템에 의해 병렬로 복수 명령어의 명령어 실행을 감시(monitor)하는 기술과 관련되어 있다. 이 시스템은 명령어 페치 유니트(메모리 유니트로부터 명령어를 전송함)와 실행 유니트(명령어를 실행시킴) 사이에 결합되는 슈퍼스칼라 유니트의 구성요소이다. 슈퍼스칼라 유니트는 명령어를 실행 유니트 내의 여러 기능 유니트로 향하게 하고, 명령어가 실행되거나 더 이상 필요로 되지 않을 때(회수될 때) 명령어 페치 유니트가 추가적인 명령어를 실행 유니트로 전송할 수 있도록 명령어 페치 유니트에 통지하는 일을 담당한다. 본 발명은 슈퍼스칼라 유니트가 (프로그램 순서를 벗어나 실행될 수도 있는) 명령어를 감시하고 “명령어 윈도우” 내에서 가변 방식으로 명령어를 전진시키도록 하기위한 메카니즘을 제공한다.
본 발명은 슈퍼스칼라 유니트의 일부인 태그 감시 시스템(tag monitor system)을 사용한다. 태그 감시 시스템은 레지스터 파일과 선입선출 방식으로 동작하는 큐를 포함한다. 레지스터 파일은 명령어 페치 유니트에 결합되며, 디코드된 명령어(즉, 각 명령어의 자원 요건)를 저장하는데 이용된다. 큐는 레지스터 파일에 결합된다. 큐의 각 슬롯은 태그를 포함한다. 명령어가 명령어 페치 유니트로부터 전송되면, 레지스터 파일에 저장되어 있는 어떤 활성상태의 디코드된 명령어에도 현재 할당되지 않은 태그가 그 명령어에 할당된다. 이 명령에는 다음에 레지스터 파일내의 태그에 의해 표시되는 어드레스 위치에서 레지스터 파일에 저장된다.
명령어가 회수될 때마다 큐가 전진된다(advance)(큐는 명령어 프로그램 순서대로 전진된다). 통상적으로, 태그는 그 각각의 명령어가 회수될 때 큐의 하부로부터 밀려난다. 이 태그는 명령어 페치 유니트로부터 전송되는 새로운 명령어에 재할당될 수 있다. 따라서, 태그는 다음에 다시 큐의 상부로 보내진다(다시 말해, 재순환된다). 매 프로세서 사이클마다, 큐의 각 슬롯은 레지스터 파일의 판독 인에이블 포트로 출력되며, 이것은 레지스터 파일의 내용을 프로그램 순서대로 디스플레이한다. 큐는 통상적으로 이전의 실행 사이클로부터 회수되는 명령어의 수만큼 전진하게 된다.
레지스터 파일은 명령어가 명령어 페치 유니트로부터 수신되는 기록 포트를 갖고 있다. 레지스터 파일에 기록될 수 있는 최대 명령어 수는 큐에 의해 한번에 전진되는 최대 명령어(태그) 수에 의해 결정된다. 레지스터 파일의 출력 포트(판독 데이터 포트)는 레지스터 파일에 저장된 모든 명령어에 대해 하나의 포트를 갖고 있다(큐의 슬롯의 수에 대응함).
본 발명의 한 특징은 디코드된 명령어가 복수의 큐를 필요로 하지 않고 식별될 수 있다는 것이다. 이것은 설계를 단순하게 하고 연산의 유연성을 증가시킨다. 또한, 칩에서 요구되는 면적이 감소된다.
본 발명의 다른 특징 및 장점파 또한 본 발명의 여러 실시예의 구조 및 동작은 첨부 도면을 참조하여 상세하게 후술되게 된다.
[도면의 간단한 설명]
제1도는 슈퍼스칼라 환경(101)의 블록도.
제2도는 슈퍼스칼라 유니트(106)(점선으로 표시됨)의 일부에 위치된 태그 감시 시스템(222)의 블록도.
제3도는 태그 감시 시스템(222)의 동작을 설명하는 흐름도.
참조 번호의 가장 좌측의 숫자는 그 참조 번호가 처음 나타나는 도면을 의미한다.
[실시예]
[1.0 시스템 환경]
제1도는 슈퍼스칼라 환경(101)의 블록도이다. 슈퍼스칼라 환경(101)은 메모리 유니트(102), 명령어 페치 유니트(104), 슈퍼스칼라 유니트(106), 및 실행 유니트(108)를 포함한다.
슈퍼스칼라 유니트(106)는 실행 유니트(108)에서 이루어지는 명령어의 실행을 제어한다. 실행 유니트(108)는 부동소숫점 유니트(도시 안됨), 정수 유니트(도시 안됨), 적재/저장 유니트(도시 안됨)와 같은 기능 유니트와 원하는 응용예에 따라 프로세서에 의해 공통적으로 사용되는 다른 기능 유니트를 포함할 수도 있다.
명령어 페치 유니트(104)는 버스(103)를 통해 메모리(102)로부터 명령어 그룹을 페치하고, 그것을 디코드하여, 버스(105)를 통해 슈퍼스칼라 유니트(106)로 전송한다. 슈퍼스칼라 유니트(106)는 다음에 실행 유니트(108)로 명령어를 발생한다. 일반적으로, 슈퍼스칼라 유니트(106)는 실행 유니트(108)의 이용가능성을 감시하고, 명령어 사이의 의존도를 검사한다. 일단 명령어가 완료되면, 슈퍼스칼라 유니트(106)는 그 명령어를 회수한다. 이것은 슈퍼스칼라 유니트(106)내의 윈도우(후술됨)로부터 완료된 명령어를 제거함으로써 수행된다. 슈퍼스칼라 유니트(106)는 다음에 버스(105)상에 신호를 전송하여 명령어 페치 유니트(104)로 하여금 명령어를 더 전송하도록 지시할 수 있다. 이것은 슈퍼스칼라 유니트(106)로 하여긍 윈도우(제1도에 도시 안됨)를 새로운 명령어로 리프레시(refresh)할 수 있도록 한다.
바람직한 실시예에 있어서, 명령어는 32비트의 고정 길이를 갖는다. 제1도에 도시된 버스는 데이터 및 제어 신호를 나타낸다. 버스 및 명령어 크기는 응용예에 따라 변화 될 수 있다. 후술되는 논의는 슈퍼스칼라 유니트(106)에서 명령어를 추적하는 태그 감시 시스템에 집중된다.
[태그 감시 시스템의 동작 및 구조]
[A. 구조]
제2도는 슈퍼스칼라 유니트(106)(점선으로 도시됨)의 일부분에 위치된 태그 감시 시스템(222)의 블록도이다 태그 감시 시스템(222)은 레지스터 파일(202), 태그 FIFO(204) 및 제어 로직(207)을 포함한다.
태그 FIFO(204)는 슬롯(206)에 위치된 태그 0-7를 저장(또는 홀드)하는 큐이다. 태그는 명령어가 명령어 페치 유니트(104)로부터 전달되어 슈퍼스칼라 유니트(106)내의 레지스터 파일(202)에 저장될 때 명령어에 할당되는 고유의 레이블(2진수 0-7)이다.
일단 명령어에 태그가 할당되면, 태그는 그 명령어가 회수될 때까지 그 명령어에 남아 있게 된다. 명령어는 그 결과가 1)비교 또는 저장되었거나, 2)실행 유니트(108)에 의해 실행되었거나, 어떤 이유로든 더 이상 필요로 되지 않게 된 이후에 회수된다. 일단 명령어가 회수되면, 대응하는 태그가 태그 FIFO(204)의 하부(210)로부터 방출되어, 다시 태그 FIFO(204)의 상부(212)로 보내진다. 이제, 이 태그는 명령어 페치 유니트(104)로부터 보내지는 새로운 명령어에 재할당된다. 이런 방식으로 태그는 태그 FIFO(204)에서 재순환된다.
레지스터 파일(202)은 태그 FIFO(204)와 명령어 페치 유니트(104)에 결합된다. 이 레지스터 파일(202)은 명령어 페치 유니트(104)로 보내지는 명령어의 실행 데이터(실행 유니트(108)에서의 수신지 레지스터, 자원 요구조건, 연산 기능 등)을 저장한다. 레지스터 파일(202)은 기록 데이터 포트(214), 기록 어드레스 포트(216), 기록 인에이블 포트(218), 판독 어드레스 포트(220) 및 판독 데이터 포트(224)를 포함한다. 이 레지스터 파일(202)은 랜덤 억세스 메모리이다.
기록 데이터 포트(214)는 명령어 페치 유니트(104)로부터 명령어 실행 데이터를 수신한다. 명령어 실행 데이터는 버스(208)상에서 전송된다. 제2도에 도시된 바와 같이, W.D.A는 “기록 명령어 실행 데이터 A”를 나타내고, W.D.B는 “기록 명령어 실행 데이터 B”를 나타낸다. 문자는 프로그램 순서와의 혼동을 피하기 위해 명령어를 식별하기 위해 이용된다.
기록 어드레스 포트(216)는 명령어를 저장하기 위한 레지스터 파일(202)내의 태그 위치를 지정한다. 기록 어드레스 포트(216)는 제어 로직(207)에 결합된다.기록 인에이블 포트(218)도 역시 제어 로직(207)에 결합된다. 액티브 인에이블 신호(226)는 데이터가 레지스터 파일(202)로 기록될 수 있도록 허용한다.
판독 어드레스 포트(220)는 버스(출력)(230)를 통해 태그 FIFO(204)에 결합된다. 태그 FIFO(204)내의 각 슬롯(206)은 판독 어드레스 포트(R.A.7-R.A.0)에 출력 신호로서 결합된다. 따라서, 판독 어드레스 포트(220)는 레지스터 파일(202)의 내용이 태그 FIFO(204)에 의해 선택되어 판독 데이터 포트(224)로부터 판독될 수 있도록 인에이블시키게 된다. 태그 FIFO(204)의 출력은 레지스터 파일(202)이 그 내용을 순서적으로 디스플레이하도록 허용한다. 다시 말하면, 출력(230)은 디코드 된 명령어를 프로그램 순서대로 보여준다.
통상적으로, 레지스터 파일(202)은 명령어가 프로그램 순서대로 나타나도록 요구하는 슈퍼스칼라 유니트(106)내에 위치된 다른 구성요소(예, 발생기(issuer), 도시 안됨)에 접속된다.
반복하면, 디코드된 명령어는 태그에 의해 레지스터 파일(202)에 저장된다. 예를 들어, 만일 명령어 B에 태그 4가 할당되면, 그 디코드된 정보는 레지스터 파일(202)의 어드레스 4에 저장되게 된다.
제어 로직(207)은 로직 회로로 구성된다. 이 제어 로직(207)은 태그 FIFO(204)와 버스(234)를 통해 실행 유니트(108)를 감시한다. 제어 로직 (207)은 한 명령어가 회수되면, 명령어 페치 유니트(104)에 신호를 보내 새로운 명령어를 레지스터 파일(202)로 보내도록 한다. 제어 로직(207)은 또한 명령어 페치 유니트(104)가 얼마나 많은 새로운 명령어를 전송할 것인지를 표시한다. 바람직한 실시예에서, 한번에 전송될 수 있는 명령어의 최대 수는 4개이며, 이것은 레지스테 파일(202)내의 기록 포트에 대응한다 제어 로직(207)은 또한 신호(236)를 통해 요구된 바와 동일한 수의 명령어를 전진시키도록 태그 FIFO(204)를 동기화시키게 된다. 태그 FIFO는 한번에 1, 2, 3 또는 4단계를 전진할 수 있다. 제어 로직(207)의 회로 구현은 이 기술분야에 통상의 지식을 가진 사람에게는 쉽게 이해될 것이다. 예를 들어, 동작 설명(즉, Verilog 또는 V.H.D.L)을 실리콘 또는 칩 설계로 변환시키기 위해, 현재 잘 알련져 있는 상업상 이용가능한 로직 및 레이아웃 시스템이 사용될 수 있다.
[B. 동작]
제3도는 태그 감시 시스템(222)의 동작 설명을 위한 흐름도이다. 동작 단계(301-312)는 제1도 및 제2도의 하드웨어 구성요소를 참조하여 설명되게 된다.
단계(302)에서, 제어 로직(207)은 필요한 명령어의 수를 표시하는 요구 데이터 신호(238)를 명령어 페치 유니트(104)로 보낸다. 예를 들어, 만일 레지스터 파일(202)내의 갭(명령어 회수로 인한)을 채우기 위해 하나의 명령어가 필요로 되면, 제어 로직(207)은 실행을 위한 하나의 새로운 명령어를 요구하는 요구 데이터 신호(238)를 명령어 페치 유니트(104)로 보내게 된다.
단계(304)에서, 제어 로직(207)은 액티브 로직 신호(228, 226)를 기록 어드레스 포트(216)와 기록 인에이블 포트(218)로 각각 보낸다. 제어 로직(304)은 단지 새로 회수된 태그를 수신한 슬롯 A-D에 대응하는 기록 포트만을 활성화시키게 된다. 예를 들어, 태그 FIFO(204)가 이전에 단계(312)에서 1만큼 전진하였으면, 태크 0이 슬롯 I7에 나타나게 되는데, 이것은 명령어 어드레스 A에 대응한다. 따라서, 본 실시예에서는 기록 어드레스 신호(228A)와 기록 인에이블 신호(226A)만이 제어로직(207)에 의해 활성화된다. 그러므로, 오직 포트(216A)만이 인에이블된다.
단계(306)에서, 명령어(명령어 실행 데이터)는 명령어 페치 유니트(104)로부터 버스(208)를 통해 레지스터 파일(202)로 보내진다. 명령어 페치 유니트(104)로 부터 보내진 명령어는 이들 명령어에 할당된 태그 넘버에 의해 레지스터 파일에 저장된다. 다시 말하면, 명령어는 기록 어드레스 포트(216)로 보내지는 태그 FIFO(204)의 첫 번째 4개의 슬롯(A, B, C, D) 중 하나 또는 그 이상의 슬롯(얼마나 많은 명령어가 명령어 페치 유니트(104)로부터 보내졌는가에 의존함)으로부터 대응하는 태그 넘버에 의해 표시되는 어드레스 위치에서 레지스터 파일(202)로 기록된다. 예를 들어, 만일 한 명령어가 명령어 페치 유니트(104)로부터 레지스터 파일(202)로 보내지면, 그 명령어는 버스(208A)상으로 전달되게 된다. 이 명령어는 태크 FIFO(204)의 상부 슬롯(I7 위치)에 위치된 태그에 따라 어드레스 위치 “0”에 저장되는데, 이것은 버스(232A)를 통해 태그 FIFO로부터 판독되어, 제어 로직(207)을 통해 전달되며, 버스(228A)를 통해 기록 어드레스 포트(216A)로 보내지게 된다.
단계(308)에서는, 레지스터 파일 판독 데이터 포트(224)로부터 명령어가 판독된다. 레지스터 파일(202)은 그 내용을 프로그램 순서대로 디스플레이하게 된다. 태그 FIFO(204)이 각각의 슬롯(206)은 출력되어 버스(230)상에서 판독 어드레스 포트(220)로 전달된다. 판독 어드레스 포트(220)는 레지스터 파일로부터의 내용(데이터 출력(240))이 디스플레이되도록 인에이블시킨다. 태그 FIFO(204)의 출력(230)은 실제 프로그램 순서의 “스냅샷”을 나타내는데, 그 이유는 태그 FIFO(204)가 항상 명령어 회수 및 명령어 페치 유니트(104)로부터 보내지는 가변 전진 명령어와 동기화되어 있기 때문이다. 그러므로, 태그 FIFO(204)의 출력이 판독 어드레스 포트(220)와 결합된 결과로서, 레지스터 파일(202)의 데이터 출력(240)은 명령어의 실행 데이터를 프로그램 순서대로 나타내게 된다. 예를 들어, 판독 어드레스 포트 7(R.A.7)은 I7의 명령어 데이터(태그 0에 대응함)가 판독 데이터 포트 7(R.D.7)로 부터 판독되도록 인에이블시키게 되고, 태그 1은 I0의 실행 데이터를 판독하게 된다.
또한, 단계(308)에서는 판독된 디코드 명령어가 실행 유니트(108)로 발생되어 실행된다.
판단 단계(310)에서, 제어 로직(207)은 명령어가 회수되기를 대기한다. 만일 명령어 회수가 없으면, 판단 단계(310)의 “아니오” 경로로 표시된 바와 같이, 레지스터 파일(202)로부터 계속해서 데이터가 판독되게 된다. 만일 명령어가 회수되면, 제어 로직(207)은 단계(312)에 도시된 바와 같이, 액티브 회수 상태 신호(234)를 수신하게 된다. 회수 상태 신호(234)는 태그 FIFO(204)에 얼마나 많은 빈 슬롯이 채워질 필요가 있는지(얼마나 많은 슬롯이 태그 FIFO(204)에서 전진할 것인지)를 제어 로직(207)에 지시한다. 명령어 페치 유니트(104)로부터 보내지는 무효 명령어(캐쉬 에러, 브랜치 등)가 있는 경우에도 역시 태그 FIFO(204)에 빈 공간이 발생할 수 있다. 또한, 단계(312)에서, 제어 로직(207)은 태그 FIFO(204)에서 전진할 횟수(필요한 명령어의 수에 대응함)를 표시하는 전진 데이터 신호(236)를 태그 FIFO(204)로 전송한다. 제2도를 참조하면, 태그 1은 I7의 슬롯으로 이동하게 되고, 모든 다른 태그도 그에 따라 전진하게 된다 태그 2는 단계(312) 이후에 태그 FIFO(204)의 하부(210)에 위치되어야 한다. 이제, 전술한 동작 단계(302)로 복귀함으로써 감시 시스템(222)의 동작이 계속되게 된다.
지금까지 본 발명의 다양한 실시예가 설명되었지만, 이들 실시예는 예로써 제공된 것이며 제한하려는 의도는 아니라는 것을 이해해야 한다. 그러므로, 본 발명의 범위는 전술한 실시예에 의해 제한되지 않으며, 특허청구의 범위 및 그 등가물에 의해서만 정의되어야 한다.
Claims (8)
- 실행될 명령어를 저장하기 위한 메모리 유니트(102), 상기 메모리 유니트(102)로부터 검색되는 명령어를 디코딩하기 위한 명령어 페치 유니트(104), 및 다수의 판독 인에이블 포트(220) 및 대응하는 판독 출력 포트(224)를 갖고 있으며 디코드된 명령어 저장을 위한 레지스터 파일(202)을 포함하는 프로세서에서 명령어에 태그를 할당하기 위한 시스템에 있어서, 상기 시스템은, 상기 디코드된 명령어에 태깅하기 위해 사용되는 태그를 저장하기 위한 태그 큐(204) ; 및 제어 유니트(207)를 포함하고, 상기 제어 유니트(207)는, 상기 큐에 태그가 저장되는 순서대로 상기 디코드된 명령어에 상기 태그를 할당하기 위 한 수단; 명령어가 실행되는 때는 감시하기 위한 수단; 및 실행된 명령어의 완료시 상기 큐(204)에서 태그를 전진시키기 위한 수단을 포함하고, 상기 태그들은 그 명령어에 할당된 태그에 의해 어드레스되는 위치에 각각의 명령어를 저장하기 위해 상기 레지스터 파일(202)에 인가되고, 상기 태그들은 상기 판독 출력 포트(224)에서 상기 디코드된 명령어를 판독하기 위해 상기 태그 큐(204)에서 유지되는 순서대로 상기 판독 인에이블 포트(220)에 인가되는 태그 할당 시스템.
- 제1항에 있어서, 상기 태그 큐(204)는, 명령어가 회수될 때마다 상기 태그를 전진시키기 위한 수단; 및 상기 태그가 새로운 명령어로의 할당에 이용가능하게 되도록 만들기 위해 상기 태그 큐(204)에서 태그를 재순환시키기 위한 수단을 더 포함하는 태그 할당 시스템.
- 제1항 또는 제2항에 있어서, 상기 제어 유니트(207)는, 이전의 사이클에서 회수된 명령어의 수보다 작거나 같은 수의 명령어를 요구하기 위한 수단을 더 포함하는 태그 할당 시스템.
- 프로그램 순서를 벗어나 명령어를 실행할 수 있는 마이크로프로세서에서 프로그램 순서대로 명령어 데이터를 유지하는 방법에 있어서, 명령어가 발생될 때 각각의 명령어에 태그를 할당하는 단계; 각 명령어에 대한 실행 데이터(208)를 그 명령어에 활당된 상기 태그에 의해 표시되는 레지스터 파일(202)내의 위치에 저장하는 단계; 태그가 할당된 순서대로 순차 태그 파일(204)에서 상기 태그를 유지시키는 단계, 및 프로그램 순서대로 상기 실행 데이터(208)를 판독하기 위해 상기 태그 파일(204)내의 상기 태그를 상기 레지스터 파일(202)에 인가하는 단계를 포함하는 명령어 데이터 유지 방법.
- 제4항에 있어서, 명령어 페치 유니트(104)를 이용하여 명령어를 발생하는 단계를 더 포함하는 명령어 데이터 유지 방법.
- 제4항 또는 제5항에 있어서, 상기 태그를 유지시키는 단계는, 명령어가 회수될 때마다 상기 태그 파일(204)에서 상기 태그를 전진시키는 단계 ; 및 상기 태그를 새로운 명령어로의 할당에 이용가능하게 되도록 만들기 위해 상기 태그 파일(204)의 하부(210)에서 상기 태그 파일(204)의 상부(212)로 상기 태그를 재순환시키는 단계를 포함하는 명령어 데이터 유지 방법.
- 제4항에 있어서, 명령어를 요구하기 위해 명령어 페치 유니트로 요구 신호(238)를 전송하는 단계를 더 포함하는 명령어 데이터 유지 방법.
- 제4항에 있어서, 이전의 사이클에서 회수된 명령어의 수보다 작거나 같은 수의 명령어를 요구하는 단계를 더 포함하는 명령어 데이터 유지 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/999,648 | 1992-12-31 | ||
US07/999,648 US5604912A (en) | 1992-12-31 | 1992-12-31 | System and method for assigning tags to instructions to control instruction execution |
US07/999648 | 1992-12-31 | ||
PCT/US1993/012309 WO1994016385A1 (en) | 1992-12-31 | 1993-12-16 | System and method for assigning tags to instructions to control instruction execution |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960700475A KR960700475A (ko) | 1996-01-20 |
KR100295081B1 true KR100295081B1 (ko) | 2001-09-17 |
Family
ID=25546575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950702704A KR100295081B1 (ko) | 1992-12-31 | 1993-12-16 | 명령어실행제어를위해명령어에태그를할당하는시스템및방법 |
Country Status (6)
Country | Link |
---|---|
US (2) | US5604912A (ko) |
EP (1) | EP0677188B1 (ko) |
JP (1) | JP3531167B2 (ko) |
KR (1) | KR100295081B1 (ko) |
DE (1) | DE69305366T2 (ko) |
WO (1) | WO1994016385A1 (ko) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
EP0636256B1 (en) * | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Superscalar risc processor instruction scheduling |
WO1993022722A1 (en) * | 1992-05-01 | 1993-11-11 | Seiko Epson Corporation | A system and method for retiring instructions in a superscalar microprocessor |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US5604912A (en) * | 1992-12-31 | 1997-02-18 | Seiko Epson Corporation | System and method for assigning tags to instructions to control instruction execution |
EP0682789B1 (en) * | 1992-12-31 | 1998-09-09 | Seiko Epson Corporation | System and method for register renaming |
US5822575A (en) * | 1996-09-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction |
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
US5948098A (en) * | 1997-06-30 | 1999-09-07 | Sun Microsystems, Inc. | Execution unit and method for executing performance critical and non-performance critical arithmetic instructions in separate pipelines |
US6237083B1 (en) | 1998-02-13 | 2001-05-22 | Advanced Micro Devices, Inc. | Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence |
US6859874B2 (en) * | 2001-09-24 | 2005-02-22 | Broadcom Corporation | Method for identifying basic blocks with conditional delay slot instructions |
US6883090B2 (en) * | 2001-05-17 | 2005-04-19 | Broadcom Corporation | Method for cancelling conditional delay slot instructions |
US6785804B2 (en) | 2001-05-17 | 2004-08-31 | Broadcom Corporation | Use of tags to cancel a conditional branch delay slot instruction |
US20030041073A1 (en) * | 2001-08-21 | 2003-02-27 | Collier Josh D. | Method and apparatus for reordering received messages for improved processing performance |
US6813704B1 (en) * | 2001-12-20 | 2004-11-02 | Lsi Logic Corporation | Changing instruction order by reassigning only tags in order tag field in instruction queue |
US7398375B2 (en) * | 2002-04-04 | 2008-07-08 | The Regents Of The University Of Michigan | Technique for reduced-tag dynamic scheduling and reduced-tag prediction |
US7734901B2 (en) * | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) * | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US10229066B2 (en) * | 2016-09-30 | 2019-03-12 | Arm Limited | Queuing memory access requests |
US11567554B2 (en) * | 2017-12-11 | 2023-01-31 | Advanced Micro Devices, Inc. | Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics |
US11709681B2 (en) | 2017-12-11 | 2023-07-25 | Advanced Micro Devices, Inc. | Differential pipeline delays in a coprocessor |
US11263013B2 (en) * | 2020-04-07 | 2022-03-01 | Andes Technology Corporation | Processor having read shifter and controlling method using the same |
CN111966406B (zh) * | 2020-08-06 | 2021-03-23 | 北京微核芯科技有限公司 | 乱序处理器中乱序执行队列的调度方法和装置 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
US5255384A (en) * | 1985-02-22 | 1993-10-19 | Intergraph Corporation | Memory address translation system having modifiable and non-modifiable translation mechanisms |
JPH0762823B2 (ja) * | 1985-05-22 | 1995-07-05 | 株式会社日立製作所 | デ−タ処理装置 |
US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
JP2684362B2 (ja) * | 1986-06-18 | 1997-12-03 | 株式会社日立製作所 | 可変長データの記憶方式 |
US4811296A (en) * | 1987-05-15 | 1989-03-07 | Analog Devices, Inc. | Multi-port register file with flow-through of data |
US4992938A (en) * | 1987-07-01 | 1991-02-12 | International Business Machines Corporation | Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers |
JP2736092B2 (ja) * | 1989-01-10 | 1998-04-02 | 株式会社東芝 | バッファ装置 |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US5125083A (en) * | 1989-02-03 | 1992-06-23 | Digital Equipment Corporation | Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system |
US5109495A (en) * | 1989-02-03 | 1992-04-28 | Digital Equipment Corp. | Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor |
US5142633A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Preprocessing implied specifiers in a pipelined processor |
US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
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 |
US5251306A (en) * | 1990-01-16 | 1993-10-05 | Advanced Micro Devices, Inc. | Apparatus for controlling execution of a program in a computing device |
US5120083A (en) * | 1990-03-19 | 1992-06-09 | Henkels & Mccoy, Inc. | Expansion joint for conduit for cables |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
EP0468831B1 (en) * | 1990-06-29 | 1997-10-15 | Digital Equipment Corporation | Bus protocol for write-back cache processor |
US5655096A (en) * | 1990-10-12 | 1997-08-05 | Branigin; Michael H. | Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution |
JP2911278B2 (ja) * | 1990-11-30 | 1999-06-23 | 松下電器産業株式会社 | プロセッサ |
US5261071A (en) * | 1991-03-21 | 1993-11-09 | Control Data System, Inc. | Dual pipe cache memory with out-of-order issue capability |
US5355457A (en) * | 1991-05-21 | 1994-10-11 | Motorola, Inc. | Data processor for performing simultaneous instruction retirement and backtracking |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
JPH0621466Y2 (ja) * | 1991-11-11 | 1994-06-08 | キャピーインターナショナル株式会社 | 担 架 |
US5285527A (en) * | 1991-12-11 | 1994-02-08 | Northern Telecom Limited | Predictive historical cache memory |
US5398330A (en) * | 1992-03-05 | 1995-03-14 | Seiko Epson Corporation | Register file backup queue |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
US5604912A (en) * | 1992-12-31 | 1997-02-18 | Seiko Epson Corporation | System and method for assigning tags to instructions to control instruction execution |
-
1992
- 1992-12-31 US US07/999,648 patent/US5604912A/en not_active Expired - Lifetime
-
1993
- 1993-12-16 JP JP51601694A patent/JP3531167B2/ja not_active Expired - Lifetime
- 1993-12-16 WO PCT/US1993/012309 patent/WO1994016385A1/en active IP Right Grant
- 1993-12-16 KR KR1019950702704A patent/KR100295081B1/ko not_active IP Right Cessation
- 1993-12-16 DE DE69305366T patent/DE69305366T2/de not_active Expired - Lifetime
- 1993-12-16 EP EP94904480A patent/EP0677188B1/en not_active Expired - Lifetime
-
1997
- 1997-02-13 US US08/799,462 patent/US5892963A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69305366T2 (de) | 1997-02-20 |
JP3531167B2 (ja) | 2004-05-24 |
WO1994016385A1 (en) | 1994-07-21 |
US5892963A (en) | 1999-04-06 |
JPH08505725A (ja) | 1996-06-18 |
DE69305366D1 (de) | 1996-11-14 |
EP0677188B1 (en) | 1996-10-09 |
EP0677188A1 (en) | 1995-10-18 |
US5604912A (en) | 1997-02-18 |
KR960700475A (ko) | 1996-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100295081B1 (ko) | 명령어실행제어를위해명령어에태그를할당하는시스템및방법 | |
US5185868A (en) | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy | |
US5251306A (en) | Apparatus for controlling execution of a program in a computing device | |
JP3587256B2 (ja) | コンピュータ装置 | |
US5150470A (en) | Data processing system with instruction queue having tags indicating outstanding data status | |
EP0096575B1 (en) | Concurrent processing elements for using dependency free code | |
EP0021399B1 (en) | A method and a machine for multiple instruction execution | |
US4468736A (en) | Mechanism for creating dependency free code for multiple processing elements | |
US5553256A (en) | Apparatus for pipeline streamlining where resources are immediate or certainly retired | |
US5898882A (en) | Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage | |
US3611306A (en) | Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system | |
US6393550B1 (en) | Method and apparatus for pipeline streamlining where resources are immediate or certainly retired | |
US6108771A (en) | Register renaming with a pool of physical registers | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
CN115437691B (zh) | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 | |
US7080170B1 (en) | Circular buffer using age vectors | |
EP0079370A4 (en) | DIGITAL CALCULATOR FOR EXECUTING COMMANDS IN THREE PARTS IN TIME MULTIPLEX. | |
JPH11316681A (ja) | 命令バッファへのロ―ド方法、装置およびプロセッサ | |
US5363490A (en) | Apparatus for and method of conditionally aborting an instruction within a pipelined architecture | |
US4456958A (en) | System and method of renaming data items for dependency free code | |
EP0101718B1 (en) | Computer with automatic mapping of memory contents into machine registers | |
JPS6032220B2 (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120402 Year of fee payment: 12 |
|
LAPS | Lapse due to unpaid annual fee |