KR100295081B1 - 명령어실행제어를위해명령어에태그를할당하는시스템및방법 - Google Patents

명령어실행제어를위해명령어에태그를할당하는시스템및방법 Download PDF

Info

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
Application number
KR1019950702704A
Other languages
English (en)
Other versions
KR960700475A (ko
Inventor
케빈알.이아도나토
트레버에이.디오사란
산지브가르그
Original Assignee
야스카와 히데아키
세이코 엡슨 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 야스카와 히데아키, 세이코 엡슨 가부시키가이샤 filed Critical 야스카와 히데아키
Publication of KR960700475A publication Critical patent/KR960700475A/ko
Application granted granted Critical
Publication of KR100295081B1 publication Critical patent/KR100295081B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent 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)

  1. 실행될 명령어를 저장하기 위한 메모리 유니트(102), 상기 메모리 유니트(102)로부터 검색되는 명령어를 디코딩하기 위한 명령어 페치 유니트(104), 및 다수의 판독 인에이블 포트(220) 및 대응하는 판독 출력 포트(224)를 갖고 있으며 디코드된 명령어 저장을 위한 레지스터 파일(202)을 포함하는 프로세서에서 명령어에 태그를 할당하기 위한 시스템에 있어서, 상기 시스템은, 상기 디코드된 명령어에 태깅하기 위해 사용되는 태그를 저장하기 위한 태그 큐(204) ; 및 제어 유니트(207)를 포함하고, 상기 제어 유니트(207)는, 상기 큐에 태그가 저장되는 순서대로 상기 디코드된 명령어에 상기 태그를 할당하기 위 한 수단; 명령어가 실행되는 때는 감시하기 위한 수단; 및 실행된 명령어의 완료시 상기 큐(204)에서 태그를 전진시키기 위한 수단을 포함하고, 상기 태그들은 그 명령어에 할당된 태그에 의해 어드레스되는 위치에 각각의 명령어를 저장하기 위해 상기 레지스터 파일(202)에 인가되고, 상기 태그들은 상기 판독 출력 포트(224)에서 상기 디코드된 명령어를 판독하기 위해 상기 태그 큐(204)에서 유지되는 순서대로 상기 판독 인에이블 포트(220)에 인가되는 태그 할당 시스템.
  2. 제1항에 있어서, 상기 태그 큐(204)는, 명령어가 회수될 때마다 상기 태그를 전진시키기 위한 수단; 및 상기 태그가 새로운 명령어로의 할당에 이용가능하게 되도록 만들기 위해 상기 태그 큐(204)에서 태그를 재순환시키기 위한 수단을 더 포함하는 태그 할당 시스템.
  3. 제1항 또는 제2항에 있어서, 상기 제어 유니트(207)는, 이전의 사이클에서 회수된 명령어의 수보다 작거나 같은 수의 명령어를 요구하기 위한 수단을 더 포함하는 태그 할당 시스템.
  4. 프로그램 순서를 벗어나 명령어를 실행할 수 있는 마이크로프로세서에서 프로그램 순서대로 명령어 데이터를 유지하는 방법에 있어서, 명령어가 발생될 때 각각의 명령어에 태그를 할당하는 단계; 각 명령어에 대한 실행 데이터(208)를 그 명령어에 활당된 상기 태그에 의해 표시되는 레지스터 파일(202)내의 위치에 저장하는 단계; 태그가 할당된 순서대로 순차 태그 파일(204)에서 상기 태그를 유지시키는 단계, 및 프로그램 순서대로 상기 실행 데이터(208)를 판독하기 위해 상기 태그 파일(204)내의 상기 태그를 상기 레지스터 파일(202)에 인가하는 단계를 포함하는 명령어 데이터 유지 방법.
  5. 제4항에 있어서, 명령어 페치 유니트(104)를 이용하여 명령어를 발생하는 단계를 더 포함하는 명령어 데이터 유지 방법.
  6. 제4항 또는 제5항에 있어서, 상기 태그를 유지시키는 단계는, 명령어가 회수될 때마다 상기 태그 파일(204)에서 상기 태그를 전진시키는 단계 ; 및 상기 태그를 새로운 명령어로의 할당에 이용가능하게 되도록 만들기 위해 상기 태그 파일(204)의 하부(210)에서 상기 태그 파일(204)의 상부(212)로 상기 태그를 재순환시키는 단계를 포함하는 명령어 데이터 유지 방법.
  7. 제4항에 있어서, 명령어를 요구하기 위해 명령어 페치 유니트로 요구 신호(238)를 전송하는 단계를 더 포함하는 명령어 데이터 유지 방법.
  8. 제4항에 있어서, 이전의 사이클에서 회수된 명령어의 수보다 작거나 같은 수의 명령어를 요구하는 단계를 더 포함하는 명령어 데이터 유지 방법.
KR1019950702704A 1992-12-31 1993-12-16 명령어실행제어를위해명령어에태그를할당하는시스템및방법 KR100295081B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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