KR100309566B1 - 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 - Google Patents

파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 Download PDF

Info

Publication number
KR100309566B1
KR100309566B1 KR1019930007075A KR930007075A KR100309566B1 KR 100309566 B1 KR100309566 B1 KR 100309566B1 KR 1019930007075 A KR1019930007075 A KR 1019930007075A KR 930007075 A KR930007075 A KR 930007075A KR 100309566 B1 KR100309566 B1 KR 100309566B1
Authority
KR
South Korea
Prior art keywords
instruction
floating point
instructions
integer
stage
Prior art date
Application number
KR1019930007075A
Other languages
English (en)
Other versions
KR930022193A (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 KR930022193A publication Critical patent/KR930022193A/ko
Application granted granted Critical
Publication of KR100309566B1 publication Critical patent/KR100309566B1/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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

파이프라인 프로세서에서, 명령어 큐 및 명령어 제어 유니트가 제공되어 실행을 위하여 클록 싸이클당 m 명령어를 무리짓고 동시에 발행한다. 클록 싸이클당 n1과 n2정수 및 부동점 결과를 생성시킬 수 있는 정수 및 부동점 기능 유니트 (n1과 n2가 클록 싸이클당 발행되는 m 명령어를 지지할 수 있을만큼 큰 경우) 가 또한 제공되어 명령어 큐 및 명령어 제어 유니트를 보완(complement)한다.
파이프라인 스테이지는 전(前)부동점 스테이지가 후(後)정수 파이프라인 스테이지와 중복되는 경우 정수 및 부동점 파이프라인 스테이지로 나뉜다.
명령어 큐는 명령어 캐시로부터 인출된 프로그램의 순차 명령어 및 프로그램의 분기 명령어의 목표 명령어를 기억한다.
명령어 제어 유니트는 명령어를 해독하고, 명령어로부터 명령어로의 오퍼랜드 종속을 검출하고, 다수의 배타규칙을 적용하여 명령어를 m 명령어의 명령어 그룹으로 무리짓고, 실행을 위하여 그룹화된 명령어를 정수 및/ 또는 부동점 유니트로 동시에 발행한다.
배타규칙은 파이프라인 프로세서의 특정 구현 및 자원 특성을 반영한다.
명령어 제어 유니트는 또한 명령어 그룹의 이력을 추적하고 명령어 그룹을 형성할때 배타규칙과 함께 이력을 사용한다.

Description

파이프라인 프로세서에서 다중 명령어를 무리짓고, 그룹화된 명령어를 동시에 발행하고, 그룹화된 명령어를 실행시키는 방법 및 장치
제1도는 본 발명의 교시를 구체화한 파이프라인 프로세서의 기능 블록 다이어그램을 도시한다.
제2도는 제1도의 파이프라인 프로세서의 정수 기능 유니트의 일실시예의 기능 블록 다이어그램을 도시한다.
제3도는 제1도의 파이프라인 프로세서내에 구체화된 본 발명의 명령어큐의 바람직한 실시예의 기능 블록 다이어그램을 도시한다.
제4도는 제1도의 파이프라인 프로세서내에 구체화된 본 발명의 명령어 제어기능 유니트의 바람직한 실시예의 기능 블록 다이어그램을 도시한다.
제5도는 제4도의 명령어 제어 유니트의 스케줄러의 바람직한 실시예의 기능 블록 다이어그램을 도시한다.
제6도는 제5도의 스케줄러의 종속 검출기의 바람직한 실시예의 기능 블록 다이어그램을 도시한다.
제7도는 제5도의 스케줄러의 그룹화 로직의 바람직한 실시예의 기능 블록 다이어그램을 도시한다.
제8도는 제1도의 파이프라인 프로세서의 파이프라인 스테이지의 바람직한 실시예를 도시한다.
제9도는 제8도의 파이프라인의 동작흐름을 도시하는 흐름선도이다.
제10a도 내지 제10b도는 제4도의 명령어 제어 기능 유니트에 의한 분기 명령어의 조작을 도시한다.
제11도는 제1도의 파이프라인 프로세서상에서 바람직한 응용 프로그램의 실행을 도시한다.
본 발명은 컴퓨터 시스템의 분야, 더 자세히는 파이프라인 프로세서를 가진 컴퓨터 시스템에 관련된다. 더 상세히는, 본 발명은 파이프라인 프로세서에서 다중 명령어를 무리짓고, 그들을 동시에 발행하고, 실행시키는 것에 관련된다.
소정 컴퓨터 프로그램에 필요한 실행시간은 3개의 인자 (프로그램의 동적 어셈블리 언어 명령어 계수, 명령어당 싸이클의 갯수, 및 프로세서의 기본클록속도) 의 결과이다. 제1 인자는 프로그램을 위한 전체 동적 명령어 계수를 감소시키는 컴파일러 기술에 의해 결정된다. 마지막 인자는 고속 트렌지스터 사이에 저(低)용량 상호접속을 만들어내는 집적회로 제조기술의 속도제한에 의해 결정된다.
2 번째 인자는 프로세서의 아키텍쳐, 더 자세히는 본 발명의 요지인 명령어 발행 및 실행에 관한 아키텍쳐에 의해 결정된다.
오늘날, 실행성능을 개선하기 위하여, 많은 컴퓨터 시스템이 파이프라인 프로세서를 제안한다. 파이프라이닝(pipelining)은 다중 명령어가 실행시 동시에 중복되는 프로세서 구현기술이다. 파이프라이닝은 프로세서 명령어 실행능력을 증가시킨다. 즉, 추가된 파이프라인 제어에 기인하여 개개의 명령어의 실행시간이 약간 증가함에도 불구하고, 파이프라인을 나가는 명령어의 속도를 증가시킨다.
파이프라인 프로세서는 실행되는 명령어의 일부분을 완성시키는 각각의 파이프 스테이지를 가진 다중 스테이지를 구비한 어셈블리 라인과 유사하다.
전형적으로, 파이프라인은 6개의 스테이지 (명령어 인출, 명령어 해독, 데이타 메모리 어드레스 생성, 프로세서 상주 오퍼랜드 인출, 명령어 실행, 및 결과기록) 로 나누어질수 있다.
다중 명령어는 겹치는 방식으로 파이프 스테이지를 통하여 이동된다.
전통적으로, 모든 파이프 스테이지는 동시에 준비되고 진행되어야 한다.
그 결과로서, 기계 싸이클 (명령어를 한단계 아래의 파이프라인으로 이동시키는데 필요한 시간) 및 파이프라인 프로세서의 처리능력은 가장 느린 파이프 스테이지에 의해 결정되고 제한된다. 그러므로, 보다 빠른 파이프 스테이지를 사용한 접근방식외에도 요즘의 많은 파이프라인 프로세서는 기능 유니트들이 자기만의 속도로 독립적으로 진행할 수 있도록 설계된다.
그러나, 기능 유니트들을 자기만의 속도로 독립적으로 진행할 수 있게 함으로써, 다양한 파이프라인 해저드(hazard)가 발생될 수 있다.
해저드에 직면했을 경우, 실행중인 명령어와 그 다음의 명령어들은 정지되어야만 한다. 다음과 같은 3등급의 파이프라인 해저드가 존재한다.
1. 명령어가 동시에 중복실행될때 프로세서가 명령어의 모든 가능한 조합을 지원할 만큼 충분히 파이프라인되어 있지 않은 경우 (예를들어, 단하나의 레지스터 파일 기록 포트만을 가진 파이프라인 프로세서상에 두개의 레지스터가 동시에 기록할 때) 자원 모순에 기인한 구조적 해저드,
2. 아직 사용가능하지 않은 앞의 명령어의 결과에 대한 명령어의 의존성 (예를들어, 아직 사용가능하지 않는 이전 "감산" 명령어의 결과에 따른 다음의 "가산" 명령어) 에 기인한 데이타 해저드,
3. 프로그램 계수기를 변경시키는 분기 및 다른 명령어의 파이프라이닝에 기인한 제어 해저드.
그러므로, 요즈음의 파이프라인 프로세서는 대개 파이프라인 해저드가 발생할 가능성을 감소시키기 위해 최적화된다. 추가로, 다양한 동기화 기술중 하나가 채용되어 파이프라인 해저드를 다룬다. 동기화 기술의 특정예는 다음과 같다:
1) 산술 논리 유니트(ALU) 의 결과가 항상 ALU 입력 래치로 다시 공급되는 단순한 하드웨어 기술인 포워딩(Forwarding) 또는 바이패싱(By-passing).
이전 ALU 연산이 현재의 ALU 연산을 위한 소스에 해당하는 레지스터에 기록되었으면, ALU 입력으로서 레지스터로부터 판독된 값 대신에 포워드된 결과가 선택된다.
2) 집중화된 정보가 데이타 해저드 주위의 동적 스케줄을 촉진하도록 유지되는 경우, 충분한 자원을 가지고 데이타에 의존하지 않고 명령어의 무작위 실행을 가능케 하는 좀더 복잡한 하드웨어 기술인 스코어보드.
전형적으로, 스코어보드는 발행 또는 계류중인 각각의 명령어의 현상태를 추적하는 명령어 상태표, 각 기능 유니트의 현상태를 추적하는 기능 유니트 상태표, 및 어느 기능 유니트가 레지스터에 기록하는지 추적하는 레지스터 결과 상태표를 포함한다.
3) 토마술로(Tomasulo) 알고리즘, 이것은 스코어보드 기술의 분산된 변형이지만, 두가지 점에서 다르다:
a. 디스패치된 명령어가 기능 유니트의 사용가능성 및 모든 의존성의 도출(resolution)을 보류하는 실행을 위하여 대기하는 경우 해저드 검출 및 실행제어는 기능 유니트의 예약 스테이션을 사용하여 기능 유니트로 분배된다:
b. 실행결과는 레지스터를 통하지 않고 기능 유니트로부터 직접 전달된다.
전통적으로, 명령어는 길이가 변할 수 있고 한번에 하나씩 파이프라인내로 인출 및 디스패치된다.
메모리가 비교적 고가이므로 메모리내의 명령어를 효율적으로 간결하게 하면 많은 잇점이 생기기 때문에 명령어는 길이가 변할 수 있게 만들어진다.
그 결과로서, 명령어 해독 스테이지는 많은 추론적인 하드웨어를 필요로 한다. 제1 명령어가 해독될 때까지 다음 명령어의 시작 바이트 위치를 결정할 수 없으므로 명령어들은 순차적으로 해독된다.
더욱이, 각각의 명령어는 다수의 클록 싸이클을 사용하여 해독된다.
그러나, 메모리의 가격은 점차 상대적으로 저렴하게 되었고, 요즘의 많은 파이프라인 프로세서 (특히 파이프라인 프로세서에 기초하여 명령어 세트가 감소된) 는 고정길이의 명령어를 제공한다. 그 결과로서, 명령어 해독 스테이지는 더이상 다수의 추론적 하드웨어를 필요로 하지는 않는다. 각각의 명령어의 시작위치가 결정될 수 있으므로, 다수의 명령어들이 동시에 해독될 수 있다. 더욱이 충분한 자원을 가지고, 다수의 명령어들이 일 클록 싸이클내에서 해독될 수 있다.
그러므로, 고정길이의 명령어는 실행속도를 증가시킬 수 있는 새로운 가능성을 제공하고, 그러므로 파이프라인 프로세서의 처리능력을 증가시킨다.
그러므로, 다수의 명령어들을 일 클록 싸이클내에서 독립된 기능 유니트로 인출, 해독 및 발행할 수 있는 것이 바람직하다. 더욱이, 다수의 명령어들이 집중 또는 분산된 동기화를 위하여 하드웨어를 거의 증가시키지 않고 발행된다면 특히 바람직하다.
하기에 개시되는 것으로부터 알 수 있지만, 본 발명의 목적 및 소망결과는 다수의 명령어들이 동시에 인출, 해독 및 발행되어 파이프라인 프로세서의 실행속도와 처리 능력을 증가시키는 새로운 기술을 제공하는 것이다.
파이프라이닝의 좀더 자세한 설명은, J.L 헤네시 및 D.A 패터슨이 쓴 컴퓨터 아키텍쳐 정량적 접근(모오간 카프맨 출판사 1990년) 을 참조하라.
파이프라인 프로세서에서 다수의 명령어들을 무리짓고, 동시에 발행하고, 그것들을 실행시키는 방법 및 장치가 개시된다. 본 바람직한 실시예하에서, 명령어 큐 및 명령어 제어 유니트가 파이프라인 프로세서에 제공되어 중복실행을 위하여 클록 싸이클당 m개의 명령어를 무리짓고 동시에 발행한다.
추가로, 파이프라인 프로세서에는 클록 싸이클당 n1과 n2정수 및 부동점 결과 (n1과 n2가 클록 싸이클당 발행되는 m개의 명령어를 지원할 수 있을만큼 충분히 큰 경우) 를 발생시켜 명령어 큐와 명령어 제어 유니트를 보완(complement)할 수 있는 정수 유니트와 부동점 유니트가 제공된다.
정수 유니트와 부동점 유니트에는 정수 및 부동점 레지스터 파일이 각각 제공된다. 또한 부동점 유니트에는 부동점 연산 큐 및 부동점 연산 제어 유니트가 제공된다. 더욱이, 프로세서의 파이프라인 스테이지는 정수 파이프라인 스테이지와 부동점 파이프라인 스테이지로 나누어져서, 이전 부동점 파이프라인 스테이지가 이후의 정수 파이프라인 스테이지와 겹치게 된다.
본 바람직한 형태에서, 명령어 큐는 명령어 캐시로부터 인출된 프로그램의 분기 명령어의 목표 명령어 및 프로그램의 순차 명령어를 각각 기억하는 목표 큐 및 순차 큐로 구성된다.
본 바람직한 형태에서, 명령어 제어 유니트는 사전인출 제어기와 스케줄러로 구성된다.
사전인출 제어기는 분기 경로 예측 및 도출을 포함하는 명령어 사전인출을 제어한다. 스케줄러는 연산코드 해독기, 종속 검출기, 그룹화조직 및 이전그룹 이력(履歷)으로 구성된다. 연산코드 해독기는 명령어를 해독한다.
종속 검출기는 명령어로부터 명령어로의 오퍼랜드의 종속을 검출한다.
이전그룹이력은 발행된 명령어 그룹을 추적한다.
그룹화 로직은 연산코드 해독기 및 종속 검출기로부터 수신된 입력, 이전그룹이력에 의해 유지되는 이력, 및 다수의 "후중단(Break After)" 및 "선중단(Break Before)" 배타규칙의 응용에 기초하여 명령어들을 m개의 명령어의 그룹으로 무리짓는다.
"후중단" 및 "선중단" 배타 규칙은 프로세서의 특정구현과 자원특성을 반영한다. 그룹화된 명령어들은 중복실행을 위하여 정수 및 부동 유니트로 동시에 발행된다.
일실시예에서, 정수 유니트는 서로 협조하여 n1논리가산기로서 기능하는 적어도 하나의 시프터 및 다수의 가산기로 구성된다. 가산기중 적어도 하나는 어드레스 가산기이고, 가산기중 적어도 2개는 부울 연산을 또한 수행한다.
정수 파이프라인 스테이지는 다수의 명령어 인출 스테이지, 다수의 명령어 해독 스테이지, 다수의 실행 스테이지 및 적어도 하나의 역기록 스테이지로 구성된다. 부동점 파이프라인 스테이지는 다수의 해독 스테이지, 다수의 실행 스테이지, 및 적어도 하나의 역기록 스테이지로 구성된다.
부동점 명령어 해독 스테이지는 마지막의 정수 실행 및 역기록 스테이지와 중복된다.
정수 명령어 인출 스테이지에서, 명령어는 명령어 제어 유니트의 사전인출 제어기의 제어하에서 명령어 캐시로부터 적절한 명령어 큐로 사전인출된다.
정수 명령어 해독 스테이지에서, 적절한 명령어들이 해독되어, m개의 명령어로된 명령어 그룹으로 무리지어지고, 명령어 제어 유니트의 스케줄러에 의해 중복실행을 위하여 동시에 발행된다. 더욱이, 정수 명령어 해독 스테이지에서, 데이타는 레지스터부터 판독되고, 목표 및 로드/ 기억 어드레스는 정수 유니트에 의해 산출된다.
정수 실행 스테이지에서, 데이타는 데이타 캐시로부터 판독되고, 정수 연산이 수행되고, 데이타는 정수 유니트에 의해 메모리로부터 로드된다. 더욱이, 정수 실행 스테이지에서, 명령어 제어 유니트에 의해 부동점 연산이 발행되고 예외가 도출된다.
정수 역기록 스테이지(들) 에서, 정수 결과는 정수 유니트에 의해 역기록된다.
부동점 명령어 해독 스테이지에서, 부동점 명령어는 부동점 연산 제어 유니트에 의해 해독되고 데이타는 부동점 유니트에 의해 레지스터로부터 판독된다.
부동점 실행 스테이지에서, 부동점 연산은 부동점 유니트에 의해 수행된다.
결국 부동점 역기록 스테이지 (들) 에서, 데이타는 부동점 유니트에 의해 역기록된다.
모든 분기 명령어들은 명령어 제어 유니트의 사전인출 제어기에 의해 취해진다고 예상된다. 각각의 경우에서, 분기 방향이 정수 유니트에 의해 결정되기전에 목표 명령어는 사전인출 제어기에 의해 사전인출된다. 다음 순차 명령어는 지연된 명령어와 함께 무리지어져서 명령어 제어 유니트의 스케줄러에 의해 추론적으로 발행된다.
실제로 분기 명령어가 취해진다면, 추론적으로 발행된 순차 명령어는 분기가 결정되었을때 정수 유니트에 의해 스쿼시(squash)된다.
분기가 취해지지 않으면, 분기가 도출되었을 때 사전인출된 목표 명령어는 무시되고 순차 명령어들이 해독되어 스케줄러에 의해 대신 발행된다.
독립된 기능 유니트를 가진 파이프라인 프로세서에서 다수의 명령어들을 무리짓고 실행시키기 위하여 동시에 발행하는 방법 및 장치가 공개된다. 다음의 설명에서, 본 발명의 철저한 이해를 제공하기 위하여 특정 숫자, 재료 및 구성이 공개된다. 그러나, 당업자는 본 발명이 특정 세부사항이 없이도 실행될 수 있다는 것을 이해할 것이다. 다른 경우에는 종래의 시스템들이 본 발명을 필요없이 모호하게 하지 않도록 다이어그램 형태로 도시된다.
이제 제 1도를 참조하면, 본 발명의 교시를 구체화한 바람직한 파이프라인 프로세서를 나타내는 기능 블럭 다이어그램이 도시된다.
도시된 바람직한 파이프라인 프로세서(10)는 프로그램 계수기(12), 다수의 명령어 큐(14), 및 명령어 제어 유니트(16)를 포함한다.
프로그램 계수기(12), 명령어 큐(14) 및 명령어 제어 유니트(16)는 상호접속되어 있다. 이 요소들은 서로 협조하여 클록 싸이클당 명령어를 3개까지 동시에 발행한다.
프로그램 계수기(12)는 명령어 제어 유니트(16)와 협력하는 방법만 제외하고는, 대부분의 파이프라인 프로세서에 존재하는 넓은 범위의 프로그램 계수기를 나타낸다. 그 기본적 기능 및 구성은 공지이므로 추가로 기술되지는 않는다.
명령어 큐(14), 명령어 제어 유니트(16) 및 이 요소들 상호간에 협조하는 방법, 및 프로그램 계수기(12)는 이후에 제3 ~ 9도를 참조하면서 상세히 기술될 것이다.
본 발명을 쉽게 이해하기 위하여, 본 발명이 프로그램 계수기(12), 명령어 큐(14) 및 명령어 제어 유니트(16)가 서로 협조하여 클록 싸이클당 명령어를 3개까지 동시에 발행하는 바람직한 프로세서(10)에 기초하여 기술되었지만, 모든 다른 상보형 설계 구성이 적당히 조정된다면, 이러한 요소들이 함께 협력하여 클록 싸이클당 m개의 명령어를 발행하도록 본 발명이 실행될 수 있다는 것을 이해할 수 있을 것이다. 또한 m의 선택(m이 비교적 작은 경우) 은 실행성능이득의 증가 대 명령어 그룹을 결정하는데 필요한 시간의 증가 및 구현의 복잡성 사이에서 타협될 수 있다. 그러나, 명령어 그룹을 결정하는데 필요한 시간, 및 구현의 복잡성은 m이 증가할 때 비-선형적인 방법으로 증가한다; 그리고 어떤 점에서는, 명령어 그룹을 결정하는데 필요한 시간 및/ 또는 구현의 복잡성은 명령어 실행시간이 절약되는 것보다 더 비중이 있다.
제 1도를 계속 참조하면, 파이프라인 프로세서(10)는 정수 유니트 레지스터 파일(18), 및 정수 기능 유니트(20)를 추가로 포함한다.
정수 유니트 레지스터 파일(18)은 명령어 제어 유니트(16), 및 명령어 제어 유니트(16)에 차례로 연결된 정수 기능 유니트(20)에 접속된다.
정수 유니트 레지스터 파일(18)과 정수 기능 유니트(20)는 서로 협력하여 클록 싸이클당 2개의 정수 결과를 생성시킨다.
정수 유니트 레지스터 파일(18)은 4개의 독립된 레지스터 포트를 포함한다. 4개의 독립된 레지스터 포트는 다중화되었을 경우, 2개의 어드레스 레지스터의 동시 판독, 또는 4개의 데이타 레지스터의 동시 판독 또는 임의의 2개의 레지스터의 동시 기록을 지원하기에 충분한 6 판독 및 2 기록 포트와 동등한 용량을 제공한다. 정수 유니트 레지스터 파일(18)의 판독/ 기록 대역폭, 및 정수 유니트 레지스터 파일(16)이 정수 기능 유니트(20)와 협력하는 방법을 제외하면, 정수 유니트 레지스터 파일(18)은 대부분의 파이프라인 프로세서에서 발견되는 넓은 범주의 레지스터 파일을 나타낼 것이다.
그 기본적 기능 및 구성은 공지이므로 추가로 기술되지는 않을 것이다.
정수 기능 유니트(20)의 일실시예, 및 정수 기능 유니트(20)가 명령어 제어 유니트(16) 및 정수 유니트 레지스터 파일(18)과 협력하는 방법은 이후로 제2, 8~ 9도를 참조하면서 좀더 상세히 기술될 것이다.
본 발명을 쉽게 이해하기 위하여, 본 발명이 정수 유니트 레지스터 파일(18)과 정수 기능 유니트(20)가 협력하여 클록 싸이클당 2개의 정수 결과를 생성시키는 바람직한 프로세서(10)에 관하여 아래의 설명에서 기술되지만, 모든 다른 상보형 설계 구성 (특히 정수 기능 유니트(20)) 이 적절히 조정된다면, 본 발명이 클록 싸이클당 n1개의 정수 결과를 생성시키도록 협력하는 이러한 요소들과 함께 실행될 수 있다는 것이 이해될 것이다.
계속 제 1도를 참조하면, 바람직한 파이프라인 프로세서(10)는 부동점 명령어 큐(24), 부동점 명령어 제어 유니트(26), 부동점 유니트 레지스터 파일(28), 부동점 기능 유니트(30), 및 멀티플렉서(32)를 추가로 포함한다.
부동점 명령어 큐(24)는 부동점 유니트 레지스터 파일(28)에 차례로 접속된 부동점 명령어 제어 유니트(26)와 명령어 제어 유니트(16)에 접속된다.
부동점 유니트 레지스터 파일(28)은 또한 부동점 기능 유니트(30), 및 멀티플렉서(32)에 또한 접속된다.
이 요소들은 서로 협력하여 클록 싸이클당 하나의 부동점 결과를 생성시킨다.
부동점 명령어 큐가 명령어 제어 유니트(16)와 협력하는 방법을 제외하면, 부동점 명령어 큐(24), 부동점 명령어 제어 유니트(26), 부동점 유니트 레지스터 파일(28), 부동점 유니트(30), 및 멀티플렉서(32)는 대부분의 파이프라인 프로세서에서 발견되는 넓은 범주의 요소들을 나타낸다.
그 기본적 기능과 구성은 공지이므로, 추가로 기술되지는 않는다.
부동점 명령어 큐(24)가 명령어 제어 유니트(16)와 협력하는 방법은 제 8,9도를 참조하면서 좀더 자세히 기술될 것이다.
본 발명을 쉽게 이해하기 위하여, 본 발명이 부동점 명령어 큐(24), 부동점 명령어 제어 유니트(26), 부동점 유니트 레지스터 파일(28), 부동점 기능 유니트(30) 및 멀티플렉서(32)가 서로 협력하여 클록 싸이클당 하나의 부동점 결과를 생성시키는 바람직한 프로세서(10)에 관하여 기술되겠지만, 모든 다른 상보형 설계 구성 (특히, 부동점 명령어 큐(24), 부동점 명령어 제어 유니트(26) 및 부동점 기능 유니트(30))이 적절히 조정된다면, 클록 싸이클당 n2개의 부동점 결과를 생성시키도록 협력하는 이러한 요소들을 가지고 본 발명이 실행될 수 있다는 것을 이해할 수 있다.
계속 제 1도를 참조하면, 바람직한 파이프라인 프로세서(10)는 명령어 캐시(34), 데이타 캐시(36), 공유 메모리 관리 유니트(38), 기록 버퍼(40), 및 캐시 코히어런트(coherent) 버스 인터페이스 유니트(42)를 추가로 포함한다. 명령어 캐시(34)는 프로그램 계수기(12), 명령어 큐(14), 명령어 제어 유니트(16), 공유메모리 관리 유니트(38), 및 캐시 코히어런트 버스 인터페이스 유니트(42)에 접속된다. 데이타 캐시(36)는 정수 기능 유니트(20), 부동점 유니트 레지스터 파일(28), 멀티플렉서(32), 공유 메모리 관리 유니트(38), 기록 버퍼(40), 및 캐시 코히어런트 버스 인터페이스 유니트(42)에 접속된다.
공유 메모리 관리 유니트(38)와 기록 버퍼(40)는 또한 차례로 캐시 코히어런트 버스 인터페이스 유니트(42)에 접속된다.
이 요소들은 서로 협력하여 명령어는 명령어 큐(14)에, 데이타는 정수/ 부동 기능 유니트( 20과 30 ) 및 레지스터 파일 ( 18과 28)에 제공한다.
명령어 캐시(34)가 명령어 큐(14), 명령어 제어 유니트(16)와 협력하는 방법, 및 데이타 캐시(36)가 정수 기능 유니트(20)와 협력하는 방법을 제외하면, 명령어 캐시(34), 데이타 캐시(36), 공유 메모리 관리 유니트(38), 기록 버퍼(40), 캐시 코히어런트 버스 인터페이스 유니트(42)는 대부분의 파이프라인 프로세서에서 발견되는 넓은 범주의 요소들로 표현된다.
그 기본적 기능과 구성은 공지이므로 추가로 기술되지는 않는다.
명령어 캐시(34)가 명령어 큐(14), 명령어 제어 유니트(16)와 협력하는 방법, 및 데이타 캐시(36)가 정수 기능 유니트(20)와 협력하는 방법은 제3, 8 및 9도를 참조하면서 좀더 자세히 기술될 것이다.
이제 제 2도를 참조하면, 제 1도의 바람직한 파이프라인 프로세서의 정수 기능 유니트의 일 실시예를 설명하는 기능 블록 다이어그램이 도시된다.
어드레스 가산기(22), 3 데이타 가산기(44, 46 및 48), 시프터(50), 및 3 멀티플렉서(52, 54 및 56)로 구성되는 정수 기능 유니트(20)가 도시된다.
그 요소들은 서로 협력하여 클록 싸이클당 2개의 정수 결과를 발생시킨다.
어드레스 가산기(22)는 제2 멀티플렉서(54), 데이타 캐시(36), 및 공유 메모리 관리 유니트(38)에 접속된다.
제2 멀티플렉서(54)는 정수 유니트 레지스터 파일(18)에 접속된다.
제1 및 제2 데이타 가산기(44 및 46), 및 시프터(50)는 제1 및 제2 멀티플렉서(52 및 54)에 접속되고 제1 멀티플렉서(52)는 정수 유니트 레지스터 파일(18)에 접속된다.
제3 데이타 가산기(48)는 제2 및 제3 멀티플렉서( 54와 56)에 접속되고 제3 멀티플렉서(56)는 데이타 캐시(36)에 접속된다.
추가로, 제1 및 제2 데이타 가산기( 44와 46)는 명령어 제어 유니트(16)에 접속된다.
어드레스 가산기(22)는 어드레스를 생성시킨다. 어드레스 가산기(22)는 제2 멀티플렉서(54)를 통하여 정수 유니트 레지스터 파일(18)로부터 어드레스를 수신하여, 데이타 캐시(36)와 공유 메모리 관리 유니트(38)로 어드레스를 출력한다.
3 데이타 가산기(44, 46 및 48), 및 시프터(50)는 함께 2 논리가산기 자원으로서 기능하여 정수 기능 유니트 결과를 산출한다.
제1 및 제2 가산기( 44와 46)는 또한 부울 연산을 수행할 수 있다.
제1 데이타 가산기(44)는 제1 멀티플렉서(52)를 통하여 정수 유니트 레지스터 파일(18)로부터 데이타를 수신하여, 프로그램 계수기(12) 또는 제2 멀티플렉서(54)로 데이타를 출력하고, 이 데이타는 제3 데이타 가산기(48) 및/ 또는 제3 멀티플렉서(56)로 선택적으로 제공된다.
제3 멀티플렉서(56)에 제공된 데이타는 데이타 캐시(36)로 선택적으로 제공되고 및/ 또는 다음 명령어를 위하여 포워드된다. 제2 데이타 가산기(46)와 시프터(50)는 정수 유니트 레지스터 파일(18)로부터 데이타를 수신하거나 또는 제1 멀티플렉서를 통하여 데이타 캐시(36)로부터 데이타 또는 포워드된 데이타를 수신하고, 명령어 제어 유니트(16) 또는 제2 멀티플렉서(54)로 데이타 또는 상태코드를 출력하여, 제3 데이타 가산기(48) 및/ 또는 제3 멀티플렉서(56)에 선택적으로 제공한다.
유사하게, 제3 멀티플렉서(56)에 제공된 데이타는 데이타 캐시(36)에 선택적으로 제공되고 및/ 또는 다음 명령어를 위하여 포워드된다.
가산기(22, 44 내지 48) 및 시프터(50)는 클록 싸이클당 2 어드레스 레지스터 및 4 데이타 레지스터 오퍼랜드를 수신할 수 있다. 시프터(50)뿐만아니라 각각의 가산기(22, 44 내지 48)는 연산을 완료하는데 단지 ½ 클록 싸이클만을 취한다.
쉽게 이해하기 위하여, 정수 기능 유니트(20)는 서로 협조하여 클록 싸이클당 2 정수 결과를 생성시키는 2개의 논리 가산기로 구성되는 상기 실시예에 관하여 기술되었지만, 상기 실시예는 n1이 2 보다 큰 경우, 서로 협력하여 클록 싸이클당 n1개의 정수 결과를 생성시키는 n1개의 논리 가산기로 구성되도록 확장가능하다는 것을 이해할 수 있을 것이다. 추가로, 정수 기능 유니트(20)가 상기 실시예에 관하여 기술되었지만, 본 발명이 클록 싸이클당 정수 결과의 충분한 보수를 발생시키는 다른 실시예와 함께 실행가능하다는 것을 이해할 수 있을 것이다.
이제 제 3도를 참조하면, 제 1도의 바람직한 파이프라인 프로세서의 명령어 큐를 설명하는 기능 블록 다이어그램이 도시된다. 도시된 명령어 큐(14)는 순차 큐(58), 분기 목표 큐(60), 및 2 멀티플렉서(62 및 64)를 포함한다. 그 요소들은 서로 협력하여 명령어 제어 유니트(16)에 클록 싸이클당 3 명령어를 제공한다.
순차 및 분기 목표 큐(58 및 60)는 명령어 캐시(34), 및 2 멀티플렉서( 62와 64)에 접속된다. 추가로, 순차 큐(58), 제1 멀티플렉서(62), 및 제2 멀티플렉서(64)는 또한 명령어 제어 유니트(16)에 접속된다.
순차 큐(58)는 프로그램 계수기(12)에 또한 접속된다.
순차 및 분기 목표 큐(58 및 60)는 명령어 제어 유니트(16)에 대한 후보 명령어를 생성시킨다.
순차 큐(58)는 명령어 캐시(34)로부터 명령어, 명령어 제어 유니트(16)로부터 마지막 싸이클에서 발행된 명령어의 갯수, 및 프로그램 계수기(12)로부터 입력으로서 분기 경로 선택신호를 수신하고, 명령어를 멀티플렉서( 62와 64) 모두에 출력한다.
유사하게, 분기 목표 큐(60)는 명령어 캐시(34)로부터 입력으로서 명령어를 수신하고, 멀티플렉서( 62와 64 ) 모두에 명령어를 출력한다. 제1 멀티플렉서(62)는 명령어 제어 유니트(16)의 제어하에, 분기가 취해졌는지 여부에 따라, 순차 큐(58) 또는 목표 큐(60)로부터 명령어 제어 유니트(16)로 명령어를 차례로 제공한다.
제2 멀티플렉서(64)는 명령어 제어 유니트(16)의 제어하에, 명령어가 실행을 위하여 발행되고 분기가 취해졌는지 여부에 따라, 순차 큐(58) 또는 목표 큐(60)로부터 순차 큐(58)로 명령어를 차례로 조건부로 제공한다. 명령어 캐시(34)로부터 수신된 명령어는 순차 또는 분기 목표 큐(58 및 60)의 끝에 덧붙여진다.
순차 큐(58) 및 분기 목표 큐(60)는 명령어 캐시(34)로부터 클록 싸이클당 명령어를 4개까지 수신할 수 있다. 순차 큐(58)는 한번에 명령어를 8개까지 유지할 수 있다. 분기 목표 큐(60)는 한번에 명령어를 4개까지 유지할 수 있다. 순차 및 분기 목표 큐( 58과 60)는 또한 제1 멀티플렉서(62)를 통하여 명령어 제어 유니트(16)에 대하여 클록 싸이클당 명령어를 3개까지 출력할 수 있다.
쉽게 이해하기 위하여, 명령어 큐(14)는 명령어 제어 유니트(16)로 클록 싸이클당 3 순차 및/ 또는 분기 목표 명령어를 제공할 수 있는 실시예에 관하여 기술되었지만, 입력 및 출력 대역폭과 큐의 용량이 적절히 조정된다면, 명령어 큐(14)는 명령어 제어 유니트(16)로 클록 싸이클당 m (m이 3 보다 큰 경우) 개의 명령어를 제공할 수 있도록 확장가능하다는 것을 이해할 수 있을 것이다.
이제 제 4도를 참조하면, 제 1도의 바람직한 파이프라인 프로세서의 명령어 제어 유니트를 설명하는 기능 블록 다이어그램이 도시된다.
도시된 명령어 제어 유니트(16)는 사전인출 제어기(66) 및 스케줄러(68)이다.
이 요소들은 서로 협력하여 정수 기능 유니트 및/ 또는 부동점 명령어 큐를 위하여 클록 싸이클당 명령어를 3개까지 발행한다.
사전인출 제어기(66)는 프로그램 계수기(12), 명령어 큐(14), 명령어 캐시(34), 스케줄러(68), 및 정수 유니트에 접속된다. 스케줄러(68)는 명령어 큐(14), 사전인출 제어기(66), 정수 유니트 레지스터 파일 및 부동점 명령어 큐에 접속된다.
사전인출 제어기(66)는 분기경로예상 및 선택을 수행하고, 명령어 사전인출을 제어한다. 사전인출 제어기(66)는 정수 유니트로부터 분기경로도출, 명령어 캐시(34)로부터 명령어 큐내의 비사용 용량 및 명령어 인출유효비트, 및 스케줄러로부터 입력으로서 명령어 선택결과를 수신하여, 프로그램 계수기(12)로 분기경로예상 및 도출을 출력하고 명령어 큐(14)로 제어신호를 출력한다. 스케줄러(68)는 입력으로서 명령어 큐(14)로 부터 명령어를 수신하고, 정수 유니트 레지스터 파일로 레지스터 선택 및 레지스터 오퍼랜드를, 및/ 또는 부동점 명령어 큐로 부동점 명령어를 출력하고, 사전인출 제어기(66)로 명령어 선택결과를 출력하고, 명령어 큐(14) 및 프로그램 계수기(12)로 마지막 싸이클에서 발행된 명령어의 갯수를 출력한다.
분기가 취해졌는지 여부에 기초하여 사전인출 제어기(66)는 명령어 큐(14)로 제어 신호를 제공하여, 명령어 큐(14)가 순차 또는 목표 큐의 헤드에서 스케줄러(68)로 클록 싸이클당 3 명령어를 제공하게 한다.
추가로, 사전인출 제어기(66) (명령어가 실행을 위하여 발행되었는지 여부에 기초하여)는 명령어 큐(14)로 제어신호를 조건부로 제공하여, 명령어 큐가 제공된 명령어의 전부 또는 일부를 순차 또는 목표 큐로부터 순차 큐로 재순환시키게 한다.
사전인출 제어기(66)가 분기경로를 예상하고 도출하는 방법은 제 10a 및 10b도를 참조하면서 좀더 자세히 기술될 것이다.
스케줄러(68)는 후보명령어가 현재의 명령어 그룹의 일부분으로서 발행되는지 여부를 결정한다. 스케줄러(68)는 순차 또는 목표 큐로부터 클록 싸이클당 명령어를 3개까지 수신할 수 있고, 정수 기능 유니트 및/ 또는 부동점 명령어 큐에 대하여 명령어를 3개까지 출력할 수 있다.
스케줄러(68)는 3 명령어중 이떤 것이 실행을 위하여 동시에 발행될 수 있는지 결정하기 위하여 일 클록 싸이클 이하를 취한다.
스케줄러(68)가 결정하는 방법은 제6 내지 7도를 참조하면서 좀더 자세히 기술될 것이다.
쉽게 이해하기 위하여, 명령어 제어 유니트(16)는 정수 기능 유니트 및/ 또는 부동점 명령어 큐로 클록 싸이클당 모두 명령어를 3개까지 제공할 수 있는 실시예에 관하여 기술되었지만, 입력 및 출력 대역폭과 스케줄러(68)가 적절히 조정된다면, 정수 기능 유니트 및/ 또는 부동점 명령어 큐로 클록 싸이클당 모두 m개까지 명령어(m이 3 보다 큰 경우) 를 제공하도록 확장가능하다는 것을 이해할 수 있을 것이다.
이제 제 5도를 참조하면, 제 4도의 명령어 제어 유니트의 스케줄러를 설명하는 기능 블록 다이어그램이 도시된다. 도시된 스케줄러(68)는 연산코드 해독기(70), 종속검출기(72), 그룹화 로직(74) 및 이전의 그룹화 이력(76)을 포함한다.
이 요소들은 서로 협력하여 실행을 위하여 정수 기능 유니트 및/ 또는 부동점 명령어 큐로 클록 싸이클당 명령어를 3개까지 무리짓고 발행한다.
연산코드 해독기(70)와 종속 검출기(72)는 명령어 큐 및 그룹화 로직(74)에 접속된다. 종속 검출기(72)는 또한 이전의 그룹화 이력(76)에 접속된다. 그룹화 로직(74)는 또한 명령어 큐, 사전인출 제어기, 이전의 그룹화 이력(76), 정수 유니트 레지스터 파일, 및 부동점 명령어 큐에 접속된다.
연산코드 해독기(70)는 후보 명령어의 연산코드를 해독한다.
연산코드 해독기(70)는 명령어 큐로부터 입력으로서 명령어 연산코드를 수신하고, 그룹화 로직(74)으로 각 명령어에 대한 명령어 유형정보를 출력한다.
종속 검출기(72)는 후보 명령어들 사이, 및 후보 및 선행자 명령어 사이의 데이타 의존성을 검출한다.
종속 검출기(72)는 명령어 큐로부터 소스 및 수신지 오퍼랜드 색인, 및 이전의 그룹화 이력(76)으로부터 입력으로서 최후에 달한 정수 결과 색인을 수신하고, 그룹화 로직(74)으로 상호-명령어 오퍼랜드 의존성 정보를 출력한다.
그룹화 로직(74)은 후보 명령어가 현재의 명령어 그룹의 일부분으로서 발행되는지 여부를 결정한다. 그룹화 로직(74)은 연산코드 해독기(70)와 종속 검출기(72)로부터 각각 입력으로서 명령어 유형과 상호-명령어 오퍼랜드 의존성 정보를 수신하고, 부동점 명령어 큐로 부동점 명령어 및 또는 정수 유니트 레지스터 파일에 대한 레지스터 선택 및 레지스터 오퍼랜드를 출력한다. 추가로, 그룹화 로직(74)은 명령어 그룹화 및 발행결과를 이전의 그룹화 이력(76), 사전인출 제어기 및 명령어 큐로 출력한다.
이전의 그룹화 이력은 발행된 명령어가 파이프라인을 빠져나갈 때까지 명령어 그룹화 및 발행결과를 누적하고 유지한다.
이전의 그룹화 이력(76)은 그룹화 로직(74)으로부터 입력으로서 그룹화 이력을 수신하고 그룹화 이력을 그룹화 로직(74) 및 종속 검출기(72)로 출력한다.
연산코드 해독기(70), 종속 검출기(72)및 그룹화 로직(74)은 클록 싸이클당 명령어를 3 개까지 수신, 분석 및 출력할 수 있다. 유사하게, 이전의 그룹화 이력(76)은 클록 싸이클당 3개까지의 명령어에 대한 명령어 그룹화 및 발행 결과를 수신할 수 있다.
연산코드 해독기(70)가 명령어 큐 및 그룹화 로직(74)과 협력하는 방법을 제외하면, 연산코드 해독기(70)는 대부분의 파이프라인 프로세서에서 발견되는 넓은 범주의 연산코드 해독기를 나타낼 것이다.
그 기본적 기능 및 구성은 공지이므로 추가로 기술되지는 않는다.
종속 검출기(72)와 그룹화 로직(74)은 제6 내지 7도를 참조하면서 좀더 자세히 기술될 것이다.
이전의 그룹화 이력(76)이 종속 검출기(72) 및 그룹화 로직(74)과 협력하는 방법을 제외하면, 이전의 그룹화 이력(76)은 대부분의 파이프라인 프로세서에서 발견되는 넓은 범주의 "스코어보드"를 나타낸다.
그 기본적 기능 및 구성은 공지이므로 추가로 기술되지는 않는다.
쉽게 이해하기 위하여, 스케줄러(68)는 정수 기능 유니트 및/ 또는 부동점 명령어 큐로 클록 싸이클당 명령어를 모두 3개까지 무리짓고 발행할 수 있는 실시예에 관하여 기술되었지만, 입력 및 출력 대역폭, 연산코드 해독기(70), 종속 검출기(72), 그룹화 로직(74) 및 이전의 그룹화 이력(76)이 적절히 조정된다면, 정수 기능 유니트 및/ 또는 부동점 명령어 큐로 모두 m개까지 명령어(m이 3 보다 큰 경우) 를 무리짓고 발행하도록 확장가능하다는 것을 이해할 수 있을 것이다.
이제 제 6도를 참조하면, 제 5도의 스케줄러의 종속 검출기를 나타내는 기능 블록 다이어그램이 도시된다.
도시된 종속 검출기(72)는 3 그룹의 동일한 검출기(78 ~ 82)를 포함한다.
그 요소들은 서로 협력하여 후보 명령어 사이, 및 후보 및 선행자 명령어 사이의 데이타 의존성을 결정한다.
동일한 각각의 검출기(84a, ..., 또는 84r)는 스케줄러의 그룹화 로직 및 명령어 큐에 접속된다. 추가로, 제3 그룹의 동일한 검출기(82)의 각각의 동일한 검출기 (84g,..., 또는 84r)는 또한 스케줄러의 이전의 그룹화 이력에 접속된다.
제1 그룹의 동일한 검출기(78)는 제2 및 제3 후보 명령어의 소스 오퍼랜드에 의해 제1 후보 명령어의 결과 오퍼랜드상의 데이타 의존성을 검출하는 동일한 4 검출기 (84a~84d)를 포함한다. 제1 그룹의 동일한 검출기(78)의 각각의 동일한 검출기(84a, 84b, 84c 또는 84d) 는 입력으로서 제1 후보 명령어의 결과 오퍼랜드 색인, 및 제2 와 제3 명령어의 4개의 소스 오퍼랜드 색인중 하나를 수신한다.
이에 응하여, 각각의 동일한 검출기(84a, 84b, 84c 또는 84d) 는 입력이 서로 동일한지 여부를 나타내는 지시자를 출력한다.
제2 그룹의 동이한 검출기(80)는 제3 후보 명령어의 소스 오퍼랜드에 의하여 제2 후보 명령어의 결과 오퍼랜드상의 데이타 의존성을 검출하는 2개의 동일한 검출기(84e~84f)를 포함한다. 제2 그룹의 동일한 검출기(80)의 각각의 동일한 검출기(84e 또는 84f)는 입력으로서 제2 후보 명령어의 결과 오퍼랜드 색인, 및 제3 후보 명령어의 소스 오퍼랜드 색인중 하나를 수신한다. 이에 응하여, 각각의 동일한 검출기( 84e 또는 84f)는 입력이 서로 동일한지 여부를 나타내는 지시자를 출력한다.
제3 그룹의 동일한 검출기(82)는 제1,제2 및 제3 후보 명령어의 소스 오퍼랜드에 의해 파이프라인의 실행 스테이지에서 최근에 계산된 2 정수 결과중 어느 하나의 결과상의 데이타 의존성을 검출하는 12개의 동일한 검출기(84g~84r)를 포함한다.
제3 그룹의 동일한 검출기(82)의 각각의 동일한 검출기( 84g 내지 84r )를 입력으로서 2 개의 이전 그룹의 정수 결과 색인중 하나, 및 3 후보 명령어의 6 소스 오퍼랜드 색인중 하나를 수신한다. 이에 응하여, 각각의 동일한 검출기( 84g 내지 84r )는 입력이 서로 동일한지 여부를 나타내는 지시자를 출력한다.
쉽게 이해하기 위하여 종속 검출기(72)는 클록 싸이클당 3 후보 명령어에 대한 데이타 의존성을 검출할 수 있는 실시예에 관하여 기술되었지만, 동일한 검출기의 갯수가 적절히 증가된다면, 클록 싸이클당 m 후보 명령어(m이 3 보다 큰 경우) 에 대한 데이타 의존성을 검출하도록 확장가능하다는 것을 이해할 수 있을 것이다.
이제 제 7도를 참조하면, 제 5의 스케줄러의 그룹화 로직을 설명하는 기능 블록 다이어그램이 도시된다. 도시된 그룹화 로직(74)은 3 배타 로직(86a~86c) 및 3 대응 AND 게이트(88a~88c)를 포함한다.
추가로, 그룹화 로직(74)은 인코더(90)와 다수의 래치(92)를 포함한다.
이 요소들은 서로 협력하여 3 후보 명령어로부터 일 클록 싸이클내에서 발행될 명령어를 3개까지 선택한다.
배타로직(86a~86c), 및 AND 게이트(88a~88c)는 서로 대응되게 접속된다.
배타로직(86a~86c)은 명령어 큐, 연산코드 해독기, 종속 검출기, 및 이전의 그룹 이력에 접속된다. AND 게이트(88a~88c)는 인코더(90) 및 래치(92)에 접속된다. 인코더(90)는 또한 프로그램 계수기 및 명령어 큐에 접속된다.
래치(92)는 또한 연산코드 해독기, 종속 검출기, 이전-그룹 이력, 사전인출 제어기, 정수 유니트 레지스터 파일 및 부동점 명령어 큐에 접속된다.
각각의 배타로직(86a,86b 또는 86c)은 후보 명령어가 현재의 명령어 그룹으로부터 제외되어야 하는지 여부를 결정하는 파이프라인 프로세서의 자원 특성을 반영하는 다수의 배타규칙을 구현하는 다수의 조합로직을 포함한다.
각각의 배타로직(86a,86b 또는 86c)은 입력으로서 명령어 큐로부터 후보 명령어 유효신호, 연산코드 해독기로부터 연산코드, 및 종속 검출기로부터 데이타 의존성 지시자를 수신한다. 이에 응하여, 각각의 배타로직(86a,86b 또는 86c)은 실행을 위하여 발행되는 명령어의 현재 그룹으로부터 후보 명령어가 제외되어야 하는지 여부를 지시하는 다수의 배타신호를 출력한다. 배타규칙은 이후에 좀더 자세히 기술될 것이다.
각각의 AND 게이트(88a,88b 또는 88c)는 후보 명령어가 현재의 명령어 그룹에 포함되어야 하는지 여부를 결정한다.
각각의 AND 게이트(88a,88b 또는 88c)는 대응하는 배타로직(86a,86b 또는 86c)으로부터 입력으로서 배타신호를 수신한다. 이에 응하여, 각각의 AND 게이트(88a,88b 또는 88c)는 후보 명령어가 실행을 위하여 발행되는 현재의 명령어 그룹내에 포함되어야 하는지 여부를 지시하는 후보 명령어를 위한 "take" 신호를 출력한다.
인코더(90)는 현재의 명령어 그룹을 위한 그룹 사이즈를 생성한다.
인코더(90)는 입력으로서 AND 게이트(88a~88c)로부터 "take" 신호를 수신한다.
이에 응하여 인코더는 프로그램 계수기 및 명령어 큐를 위한 현재 그룹의 사이즈를 출력한다.
래치(92)는 분기선택, 그룹 이력갱신, 레지스터 선택 및 오퍼랜드, 및 부동점 명령어를 생성한다. 래치(92)는 AND 게이트(88a~88c)로부터 "take" 신호, 연산코드 검출기로부터 연산코드, 및 종속검출기로부터 데이타 의존성을 입력으로서 수신한다.
이에 응하여, 래치(92)는 사전인출 제어기를 위한 분기 선택, 이전그룹이력을 위한 그룹이력갱신, 정수 유니트 레지스터 파일을 위한 레지스터 선택 및 오퍼랜드, 및 부동점 명령어 큐를 위한 부동점 명령어를 출력한다.
배타로직(86a~86c), 및 AND 게이트(88a~88c)는 명령어를 다음과 같이 무리짓고 발행한다:
3 명령어를 i0, i1 및 i2라 하고,
R0, R1,... Rn(배타규칙),
Excludei-Rj(명령어(i) 가 배타규칙(j) 하에서 제외되어야 함을 의미, i = 0,1,2이고 j = 0,1... n이다)
Groupi-Rj(명령어(i) 가 배타규칙(j) 에 기초하여 무리지어질 수 있다는 것을 의미) dGroupi(명령어(i) 는 그 명령어를 앞선 모든 명령어가 무리지어진 경우 여러 부분으로 무리지어질 수 있음을 의미)
!(도치를 위미) 및
&& (이진 결합을 의미) 이면,
명령어, 및 뒤따르는 임의의 명령어들을 실행을 위하여 무리짓고 발행하는 것으로 부터 제외시키기 위하여는 어떤 배타규칙도 유효하다는 것을 이해할 수 있을 것이다.
2개의 기본적 등급의 배타규칙("후중단" 배타규칙, 및 "선중단" 배타규칙) 이 존재한다. "후중단" 배타규칙은 명령어 뒤에서 명령어 그룹화를 종료하고, "선중단" 배타규칙은 명령어 앞에서 명령어 그룹화를 종료한다.
각 등급에서, 배타규칙은 분석되는 명령어에 기초한 배타규칙, 이전그룹에 기초한 배타규칙, 및 예외에 기초한 배타규칙으로 다시 나누어진다.
"후중단" 배타규칙은:
a) 제1 유효예외 뒤에서 중단.
이 배타규칙은 명령어 인출 스테이지 동안 명령어 액세스 예외를 허용하는 명령어 뒤에서 현제의 명령어 그룹을 종료한다.
b) 임의의 제어전송명령후 중단.
이 배타규칙은 임의의 분기 및 분기에 이어지는 다음 명령어 사이에서 현재의 명령어 그룹을 종료한다. 제 1도의 바람직한 파이프라인 프로세서에서는, 지연 명령어가 항상 분기 명령어에 이어진다.
c) 바로뒤에 이어지는 다중 스텝(MULSCC) 명령어내로 결과가 종속되지 않은 경우, MLUSCC 명령어 뒤에서 중단.
이 배타규칙은 제1 MULSCC 명령어의 수신지가 바로 뒤에 이어지는 제2 MULSCC 명령어내로 종속되지 않는 경우, 2개의 연속적인 MULSCC 명령어 사이에서 현재의 명령어 그룹을 종료한다.
바람직한 파이프라인 프로세서에서는, MULSCC 명령어가 연속적으로 32번 사용되어 2개의 32-비트 정수를 승산하여 64-비트 정수 결과를 만들어낸다.
각각의 MULSCC 실행은 정수상태코드의 현상태에 의존한다.
각각의 MULSCC 실행은 단일비트의 결과를 만들어내고, 새로운 정수상태코드를 생성한다.
d) 종속된 실행 스테이지에 세트된 상태코드뒤에서 중단.
이 배타규칙은 종속된 실행 스테이지내에 상태코드를 세트하는 명령어 바로뒤에서 현재의 명령어 그룹을 종료한다.
명령어는 현재의 명령어 그룹내의 이전 명령어에 의해 소스 인수중 하나가 생성될 때 종속된 실행 스테이지를 사용한다.
e) 무효 분기에 이어지는 첫번째 명령어 뒤에서 중단.
이 배타규칙은 이전 명령어 그룹 (파이프라인의 좀더 아래의) 이 무효분기를 포함할 때 첫번째 후보 명령의 바로 뒤에서 현재의 명령어 그룹을 종료한다.
이 배타규칙은 다수의 명령어가 무효로된 분기의 지연슬롯에서 실행되는 것을 방지한다. 바람직한 파이프라인 프로세서에서는, 2 유형의 분기 (지연된 분기, 및 조건부 무효를 가진 지연된 분기) 가 존재한다.
분기 목표를 계산하고 목표 어드레스에서 명령어 흐름을 인출하는 대기시간은 각각의 분기에 바로이어지는 명령어를 정상적으로 실행시킴으로써 경감된다.
이 다음 명령어는 분기지연명령어로 불리운다. 조건부 무효를 가진 지연된 분기는 조건부 분기가 취해지지 않은 경우 지연 명령어를 스쿼시(squash)한다.
분기 명령어의 이러한 조작은 제 10a~10b 도를 참조하면서 좀더 자세히 기술될 것이다.
f) 분기 결합의 제1 목표 어드레스에서의 제1 명령어뒤에서 중단.
이 배타규칙은 프로세서가 분기결합을 처리하는 도중에 분기의 목표에서의 제1 명령어 뒤에서 현재의 명령어 그룹을 종료한다.
이 배타규칙은 분기결합의 제1 목표 명령어가 발행중일 때 다수의 명령어가 실행되는 것을 방지한다. 바람직한 파이프라인 프로세서에 대하여, 분기결합은 분기의 지연 명령어가 다른 분기일 때 형성된다.
"선중단" 배타규칙은 다음과 같이 구성된다:
a) 무효 명령어 앞에서 중단.
이 배타규칙은 명령어 제어 유니트가 명령어 큐로부터의 명령어를 대기하고 있을 때 현재의 명령어 그룹을 종료한다.
명령어 큐가 3 유효 명령어보다 작은 수를 가지는 것이 가능하다.
바람직한 파이프라인 프로세서에서 명령어는 액세스 예외동안 인출된 짝수 명령어는 유효 명령어로 간주된다.
b) 정수 유니트 레지스터 파일 판독 포트의 소진전에 중단.
이 배타규칙은 모든 정수 유니트 레지스터 파일 판독 포트가 사용되기전에 현재의 명령어 그룹을 종료한다. 이 배타규칙은 그룹이 너무 많은 정수 유니트 레지스터 파일 판독 포트를 사용하지 못하게 막는다.
c) 두번째 데이타 메모리 참조전에 중단.
이 배타규칙은 메모리가 2번째로 다시 참조되기전에 현재의 명령어 그룹을 종료한다. 바람직한 파이프라인 프로세서에서는 메모리당 단하나의 포트만이 존재한다. 이 배타규칙은 단일포트가 다수의 명령어에 의해 동시에 사용되지 못하도록 막는다.
d) 제2 부동점 연산전에 중단.
이 배타규칙은 제2 부동점 연산이 부동점 명령어 큐로 디스패치되기전에 현재의 명령어 그룹을 종료한다. 바람직한 파이프라인 프로세서에서, 명령어 제어 유니트로부터 부동점 명령어 큐로 단하나의 포트만이 존재한다.
이 배타규칙은 단일포트가 다수의 명령어에 의해 동시에 사용되는 것을 방지한다.
e) 두번째 시프트전에 중단.
이 배타규칙은 시프터가 2번째로 다시 사용되기전에 현재의 명령어 그룹을 종료한다. 바람직한 파이프라인 프로세서에서는 단하나의 시프터만이 존재한다.
이 배타규칙은 시프터가 다수의 명령어에 의해 동시에 사용되는 것을 방지한다.
f) 제2 종속전에 중단.
이 배타규칙은 제2 오퍼랜드가 다음 명령어에 종속되기전에 현재의 명령어 그룹을 종료한다. 이 배타규칙은 한번에 하나이상의 오퍼랜드가 종속되는 것을 방지한다. 명령어들 사이의 종속은 2 명령어를 필요로 한다.
제2 종속은 소스 오퍼랜드 모두가 실행 스테이지의 제1 반부의 결과인 경우 3 명령어 또는 제2 명령어를 요구한다.
실행 스테이지는 제 8-9도를 참조하면서 좀더 자세히 기술될 것이다.
g) 시프트내로 종속되기전에 중단.
이 배타규칙은 오퍼랜드가 시프터의 사용을 요구하는 명령어내로 종속되기전에 현재의 명령어 그룹을 종료한다.
이 배타규칙은 시프터가 실행 스테이지의 제2 반부에서 요구되는 것을 방지한다. 바람직한 파이프라인 프로세서에서는 단하나의 시프터만이 존재하고, 실행 스테이지의 제1 반부에서 사용되어야만 한다.
h) 레지스터 관련 제어 전송 명령어(JMPL)내로 종속되기전에 중단.
이 배타규칙은 오퍼랜드가 JMPL 명령어내로 종속되기전에 현재의 명령어 그룹을 종료한다. 이 배타규칙은 JMPL 명령어가 JMPL 명령어의 소스 레지스터중 하나를 변경할 명령어 그룹내로 무리지어지는 것을 방지한다.
바람직한 파이프라인 프로세서에서는, 목표 어드레스가 정수 유니트 레지스터 파일 엔트리의 내용에 기초하여 계산되는 분기 명령어인 JMPL 명령어를 지원한다.
i) 로드 데이타의 종속사용전에 중단.
이 배타규칙은 현재의 명령어 그룹에 포함된 로드 명령어의 결과를 사용하는 명령어전에 현재의 명령어 그룹을 종료한다. 이 배타규칙은 로드 명령어의 결과가 동일한 명령어 그룹내의 다른 명령어내로 종속되는 것을 방지한다.
바람직한 파이프라인 프로세서에서는, 메모리로부터 데이타를 로드하는데 완전한 일클록 싸이클이 필요하다. 그러므로, 데이타는 다음 그룹의 명령어에만 사용가능하고 동일한 명령어 그룹내의 다른 명령어에 종속될 수는 없다.
j) 메모리 참조 어드레스내로 종속되기전에 중단.
이 배타규칙은 현재의 명령어 그룹에 포함된 다른 명령어에 의해 수정되는 중인 메모리 어드레스를 참조하는 명령어앞에서 현재의 명령어 그룹을 종료한다.
이 배타규칙은 메모리 참조의 어드레스가 동일한 명령어 그룹내의 선행 명령어로부터 종속된 결과에 의해 수정되는 것을 방지한다.
k) 메모리 참조내로 이전 그룹에 종속되기전에 중단.
이 배타규칙은 이전 명령어 그룹에 포함된 다른 로드 명령어의 결과를 사용하는 로드 명령어전에 현재의 명령어 그룹을 종료한다.
이 배타규칙은 2 로드 명령어가 2개의 연속적인 그룹에 포함되는 것을 방지한다. ("제2 로드전에 중단" 및 "로드사용전에 중단" 배타규칙은 2개의 연속적인 로드가 동일한 명령어 그룹에 포함되는 것을 방지한다).
바람직한 파이프라인 프로세서에서, 메모리내의 데이타는 실행 스테이지에서 참조된다. 메모리 참조를 위한 어드레스는 메모리 참조를 개시하기전에 메모리 어드레스 레지스터 포트의 반 싸이클을 판독함으로써 이전 싸이클에서 산출된다.
그 결과, 어드레스 레지스터는 실행 스테이지의 시작에 의해 로드 기억 어드레스를 생성하도록 바로 인접한 데이타에 추가된다.
산출된 주소가 로드 기억 어드레스 가산기로 포워드되도록 포워딩 경로가 제공된다.
1) 순차 명령어전에 중단.
이 배타규칙은 자신들 스스로만 실행될 수 있는 특수 명령어 그룹의 일부분인 명령어앞에서 현재의 명령어 그룹을 종료한다. 이 배타규칙은 이러한 특수 명령어들이 동일한 명령어 그룹내에서 무리지어지는 것을 방지한다.
바람직한 파이프라인 프로세서에서, 이러한 특수 명령어는 제어 레지스터를 액세스하는 명령어, 입/ 출력 포트를 액세스하는 명령어, 정수 승/ 제산을 수행하는 명령어, 부동점 분기 명령어, 시마포어(semaphore) 를 갱신하는데 사용되는 아토믹 메모리 레퍼런스, 파이프라인 플러시(flush) 및 캐시 무효 명령어, 및 현재의 레지스터 윈도우 포인터를 수정하는 임의의 명령어를 포함한다.
m) 이전그룹이 정수상태코드를 세트(SetCC) 한후 제어 레지스터 판독전에 중단.
이 배타규칙은 선행 명령어에 의해 수정되고 있는 처리과정에서 제어 레지스터를 판독하는 명령어를 포함하기전에 현재의 명령어 그룹을 종료한다.
이 배타규칙은 제어 레지스터가 동일한 명령어 그룹내의 선행 명령어에 의해 수정되고 있을 때 명령어에 의해 판독되지는 못하도록 방지한다.
바람직한 파이프라인 프로세서에서는, 정수상태코드는 정수 유니트에 의해 생성된다.
n) 2개의 인접한 MULSCC가 아니면 두번째 SetCC전에 중단.
이 배타규칙은 첫번째 2 후보 명령어가 MULSCC가 아니면 제2 SetCC 명령어 앞에서 현재의 명령어 그룹을 종료한다.
이 규칙은 또한 두번째 후보 명령어 뒤에서 MULSCC 쌍의 그룹을 종료시킨다.
이것은 정수 기능 유니트와 함께 세트된 상태코드에 대한 잠재적 소스를 제한해야 하는 복잡함을 경감시킨다. 바람직한 파이프라인 프로세서에서, MULSCC 명령어는 단일 명령어 그룹으로 실행되거나, 다른 MULSCC 명령어와 함께 2 명령어 그룹으로 실행된다.
o) 현재의 그룹이 SetCC인 경우 확장된 산술 명령어 앞에서 중단.
이 배타규칙은 정수상태코드를 세트하는 포함된 명령어에 이어지는 확장된 산술 명령어앞에서 현재의 명령어 그룹을 종료한다.
이 배타규칙은 확장된 산술 명령어의 정수상태코드가 수정되는 것을 방지한다.
바람직한 파이프라인 프로세서 명령어에서, 실행 스테이지동안 정수 유니트를 통하여 다수의 명령어가 통과된다.
첫번째 통과되는 것을 다음 반복을 위한 상태코드를 수정하는 종래의 산술 명령어이다. 그 다음으로 통과하는 것은 추가적인 소스인수로서 정수상태코드를 사용하는 "확장된" 산술 명령어를 사용한다.
p) 분기가 지연 명령어 자체가 아니면 지연 명령어 그룹내의 분기앞에서 중단.
이 배타규칙은 포함된 지연 명령어에 이어지는 분기명령앞에서 현재의 명령어 그룹을 종료한다. 이 배타규칙은 지연 명령어 자체가 분기가 아니면 추가적인 분기가 지연 명령어내에서 실행되는 것을 방지한다.
g) 분기가 레지스터 관련 분기가 아니면 JMPL 지연 슬롯내의 분기앞에서 중단.
이 배타규칙은 분기 명령어가 또한 레지스터 관련 분기가 아니면, 레지스터 관련 분기의 지연된 슬롯내의 분기 명령어앞에서 현재의 명령어 그룹을 종료한다.
이 배타규칙은 명령어 캐시에 대한 분기 목표 어드레스 선택에 관한 설계상의 복잡성을 경감시킨다.
r) 파이프라인이 정지되었을 때 첫번째 명령어앞에서 중단.
이 배타규칙은 파이프라인이 정지되었을 때 현재의 명령어 그룹을 종료한다.
이 배타규칙은 파이프라인이 정지되었을 때 파이프라인으로 명령어가 들어가는 것을 방지한다. 바람직한 파이프라인 프로세서에서, 파이프라인은 데이타 캐시 미스 및 부동점 큐 충만상태에 의해 정지된다.
이제 제 8도를 참조하면, 제 1도의 파이프라인 프로세서에서 구체화된 본 발명의 파이프라인 스테이지의 본 바람직한 실시예를 나타내는 블록 다이어그램이 도시된다. 도시된 본 발명의 파이프라인 스테이지의 본 바람직한 실시예(100) 는 다수의 정수 파이프라인 스테이지(102-116), 및 다수의 부동점 파이프라인 스테이지(118-126) 를 포함한다. 또한, 도시된 일련의 클록 펄스(128) 는 7 클록 싸이클로 구성된다.
정수 파이프라인 스테이지(102-116) 는 2 명령어 인출 스테이지(f0 및 f1; 102 및 104), 3 명령어 해독 스테이지(d0, d1 및 d2; 106-110), 2 실행 스테이지(e0 및 e1; 112 및 114), 및 1 역기록 스테이지(wb; 116) 를 포함한다. 부동점 파이프라인 스테이지(118-126) 는 2 명령어 해독 스테이지(fd 및 frf; 118 및 120), 2 실행 스테이지(fadd/fmul 및 fnorm/frnd; 122 및 124), 및 1 역기록 스테이지(126) 를 포함한다.
부동점 실행 스테이지(fadd/fmul 및 fnorm/frnd; 122 및 124) 를 제외하면, 각각의 파이프라인 스테이지(102, ...120 또는 126) 는 ½ 클록 싸이클을 취한다.
각각의 부동점 실행 스테이지(fadd/fmul 및 fnorm/frnd; 122 또는 124) 는 일 클록 사이클을 취한다.
본 발명이 이러한 배타규칙없이 또는 파이프라인 프로세서의 특정구현에 의존된 추가적인 배타규칙을 가지고 실행될 수 있다는 것을 이해할 수 있을 것이다.
이제 제 9도를 참조하면, 제 8도의 파이프라인의 다양한 파이프라인 스테이지에서의 동작흐름을 나타내는 블록 다이어그램이 도시된다. 스테이지(f0 및 f1)에서, 4 명령어가 스테이지당 2 명령어씩 명령어 캐시로부터 인출된다 (블록 132 및 134).
스테이지(d0)에서, 세개에 이르는 명령어가 실행을 위하여 정수 기능 유니트 및/ 또는 부동점 큐로 동시에 발행된다 (블록 136).
스테이지(d1)에서, 정수 유니트 레지스터 파일내의 2 어드레스 레지스터가 판독되고, 분기 명령어의 목표 어드레스가 산출된다 (블록 138).
스테이지(d2)에서, 정수 유니트 레지스터 파일내의 4 데이타 레지스터가 판독되고, 로드/ 기억 명령어의 로드/ 기억 어드레스가 산출된다 (블록 140).
스테이지(e0)에서, 데이타 캐시가 액세스되고, 부동점 연산이 발행되고, 정수 유니트 내의 제1 명령어가 실행된다 (블록 142).
스테이지(e1)에서, 정수 유니트내의 제2 명령어가 실행되고, 데이타는 데이타 캐시/메모리로부터 로드되고, 예외 상태가 도출된다 (블록 144).
스테이지(wb)에서, 2 정수 결과가 데이타 캐시/ 메모리 또는 정수 유니트 레지스터 파일로 기록된다 (블록 146).
스테이지(fd)에서, 부동점 명령어가 해독된다 (블록 148), 스테이지(frf) 에서, 부동점 레지스터 파일이 판독된다 (블록 150).
스테이지(fadd/fmul) 에서, 부동점 합계 또는 부동점 결과가 완료된다 (블록 152).
스테이지(fnorm/frnd)에서, 부동점 합계가 정규화되거나, 부동점 결과가 라운드(round) 된다 (블록 154).
스테이지(fwb) 에서, 부동점 결과는 부동점 레지스터 파일내로 역기록된다 (블록 156).
이제 제 10a 및 10b도를 참조하면, 제 9도의 파이프라인에 대한 분기 명령어의 조작을 설명하는 2 블록 다이어그램이 도시된다.
제 10a도는 분기가 취해진 경우를 나타낸다.
제 10b도는 분기가 취해지지 않은 경우를 나타낸다.
제 10a도에 도시된 것은 정수 파이프 라인을 통하여 이동하는 4개의 바람직한 명령어 그룹(162~168)이다. 시간(3) 에서, 명령어 제어 유니트는 실행을 위하여 비교 명령어(CMP) 및 비등가 명령어상의 분기(BNE) 로 구성되는 바람직한 첫번째 2 명령어 그룹을 정수 기능 유니트로 발행한다.
명령어 제어 유니트는 명령어 그룹을 형성하는 도중에 분기 명령어를 검출한다.
사전인출 제어기는 분기가 취해질 것으로 가정하고, 목표 명령어 흐름을 인출하기전에 순차 명령어 큐내에 지연 명령어가 존재할 때까지 대기한다.
시간(5) 에서, 명령어 제어 유니트는 실행을 위하여 다음 순차 명령어 및 인출된 지연 명령어로 구성되는 바람직한 두번째 2 명령어 그룹을 정수 기능 유니트로 발행한다. 동시에, 명령어 제어 유니트는 제1 및 제2 목표 명령어가 목표 명령어 큐내로 인출되게 한다.
시간(6) 에서, 분기를 적절히 갱신된 프로그램 계수기 및 취해진 분기를 가지고 정수 기능 유니트에 의해 도출된다.
그래서, 시간(7) 에서, 명령어 제어 유니트는 제1 순차 명령어를 스쿼시하고 사전인출 제어기는 목표 명령어 큐의 내용을 순차 명령어 큐로 이동시킨다.
명령어 제어 유니트는 프로그램 계수기를 적절히 갱신되게하는 예외를 발생시킴으로써 제1 순차 명령어를 스쿼시한다.
동시에, 명령어 제어 유니트는 명령어 해독 및 데이타 의존성 검출을 위하여 연산코드 해독기 및 종속 검출기로 제1 및 제2 목표 명령어로 구성되는 바람직한 세번째 2 명령어 그룹을 이동시킨다. 더욱이, 명령어 제어 유니트는 제3 및 제4 목표 명령어가 목표 명령어 큐내로 인출되게 한다.
제 10b도에 도시된 것은 정수 파이프 라인을 통하여 이동하는 바람직한 4 명령어 그룹(162' ~ 168')이다. 시간(3) 에서, 명령어 제어 유니트는 실행을 위하여 비교 명령어(CMP) 및 비등가 명령어상의 분기(BNE) 로 구성되는 바람직한 첫번째 2 명령어 그룹을 정수 기능 유니트로 발행한다.
명령어 제어 유니트는 명령어 그룹을 형성하는 도중에 분기 명령어를 검출한다.
명령어 제어 유니트는 분기가 취해질 것으로 가정하고, 목표 명령어 흐름을 인출하기 전에 순차 명령어 큐내에 지연 명령어가 존재할 때까지 대기한다.
시간(5) 에서, 명령어 제어 유니트 실행을 위하여 다음 순차 명령어 및 인출된 지연 명령어로 구성되는 바람직한 두번째 2 명령어 그룹을 정수 기능 유니트로 발행한다. 동시에, 명령어 제어 유니트는 제1 및 제2 목표 명령어가 목표 명령어 큐내로 인출되게 한다.
시간(6) 에서, 적절히 갱신된 프로그램 계수기 및 취해지지 않은 분기와 함께 정수기능 유니트에 의해 분기는 도출된다.
그래서, 시간(7) 에서, 명령어 제어 유니트는 제1 순차 명령어를 스쿼시하는 예외를 발생시키지 않음으로써 제1 순차 명령어가 제속해서 정수 파이프라인 아래로 내려가게 하고, 사전인출 제어기는 인출된 제1 및 제2 목표 명령어를 무시한다.
동시에, 명령어 제어 유니트는 명령어 해독 및 데이타 의존성 검출을 위하여 연산코드 해독기 및 종속 검출기로 제2 및 제3 순차 명령어로 구성되는 바람직한 세번째 2 명령어 그룹을 이동시킨다. 더욱이, 명령어 제어 유니트는 제4 및 제5 순차 명령어가 순차 명령어 큐내로 인출되게 한다.
예외조작이 다양한 종래의 방법으로 구현가능하다는 것을 이해할 수 있을 것이다. 바람직하게는, 정밀한 예외 메카니즘이 채택된다. 정밀 예외 매카니즘에 대한 자세한 설명은 미국 특허출원 (일 제출된 "수퍼-스칼라 컴퓨터를 위한 정밀 예외 메카니즘" 라는 제목으로 본 발명의 동일한 양수인인 캘리포니아 마운틴 뷔우에 소재한 선 마이크로시스템즈, 인코오퍼레이티드에 양도된) 을 참조하라.
이제 제11도를 참조하면, 제 1도의 바람직한 파이프라인 프로세서상의 바람직한 응용 프로그램의 실행을 설명하는 다이어그램이 도시된다.
도시된 것은 공식(A(i) = N x B(j) + C(k)을 가지고 4번 해제(unroll)된 LINPACK Daxpy-4 프로그램(170) 이다. 결과를 생성시키기 위하여는 모두 27 명령어가 실행되어야 한다. 바람직한 파이프라인 프로세서의 명령어 제어 유니트는 중복 실행을 위하여, 3개에 이르는 명령어로 구성되는 12 명령어 그룹(172~194; 각 그룹은 172, ... 또는 192인) 으로 27 명령어를 발행한다. 그 결과로서, 27 명령어는 싸이클당 2.25 명령어의 개선된 처리능력에 이르는 12 싸이클로 실행될 수 있다.
본 발명이 본 바람직한 실시예 및 다른 실시예에 관하여 기술되었지만, 당업자는 본 발명이 기술된 실시예에 제한되지 않는다는 것을 인식할 것이다.
본 발명의 방법 및 장치는 첨부된 청구범위의 범위 및 사상내에서 수정 및 변경되어 실행될 수 있다.
그러므로 설명은 본 발명을 제한하는 대신 예시적인 것으로 간주되어야 한다.

Claims (38)

  1. 명령어 제어 유니트를 포함하는 파이프라인 프로세서에서, 명령어 제어 유니트를 위해 명령어를 큐잉하는 방법은:
    a) 다수의 순차 명령어를 순차 명령어 큐에 큐잉하는 단계;
    b) 다수의 분기 목표 명령어를 분기 목표 명령어 큐에 큐잉하는 단계;
    c) 상기 순차 및 분기 목표 명령어중 선택된 명령어를 상기 순차 및 목표 명령어 큐로부터 상기 명령어 제어 유니트로 제공하는 단계; 및
    d) 상기 제공된 명령어가 상기 명령어 제어 유니트에 의해 실행을 위해 발행되지 않는 경우 상기 명령어 제어 유니트에 제공된 상기 명령어를 상기 순차 큐내로 다시 큐잉하는 단계로 구성되는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 순차 및 목표 명령어는 클록 싸이클당 4 명령어씩의 비율로 상기 순차 및 목표 큐내로 각각 큐잉되는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 명령어는 클록 싸이클당 3 명령어씩의 비율로 상기 순차 및 분기 목표 명령어 큐로부터 상기 명령어 제어 유니트로 제공되는 것을 특징으로 하는 방법.
  4. 정수 및 부동점 기능 유니트를 포함하는 파이프라인 프로세서에서, 다수의 명령어를 그룹화하고 실행을 위해 상기 정수 및 부동점 유니트에 동시에 발행하는 방법은:
    a) m 명령어를 명령어 큐로부터 수신하는 단계;
    b) 상기 m 명령어의 연산코드를 해독하는 단계;
    c) 한 명령어로부터 다른 하나의 명령어에 종속되는 다른 명령어들에 사용되는 오퍼랜드를 검출하는 단계;
    d) 상기 m 명령어의 각각이 다른 명령어와 함께 실행을 위하여 상기 정수 및 부동점 유니트로의 발행으로부터 제외되어야 하는지 여부를 결정하기 위해 각각의 상기 m 명령어에 다수의 배타규칙을 적용하는 단계;
    e) 제외되지 않는 상기 명령어들을 그룹화하고 실행을 위하여 상기 정수 및 부동점 유니트에 상기 명령어들을 동시에 발행하는 단계, 및
    f) 상기 발행된 명령어 그룹의 이력은 추적하는 단계로 추가로 구성되며, 상기 이력은 단계(c) 의 종속 오퍼랜드를 검출하여 상기 단계(d) 의 배타규칙을 적용할 때 사용되는 것을 특징으로 하는 방법.
  5. 제4항에 있어서, m은 3과 같고, 상기 3 명령어는 클록 싸이클당 3 명령어씩의 비율로 상기 명령어 큐로부터 수신되고, 상기 단계(b,c,d,e 및 f)는 일 클록 싸이클내에서 수행되는 것을 특징으로 하는 방법.
  6. 제4항에 있어서, 상기 배타규칙은 다수의 "후중단" 및 다수의 "선중단" 배타규칙으로 구성되며, 상기 "후중단" 배타규칙은 고려된 명령어 뒤에서 명령어 그룹을 종료하고, 상기 "선중단" 배타규칙은 고려된 명령어앞에서 명령어 그룹을 종료하는 것을 특징으로 하는 방법.
  7. 파이프라인 프로세서에서, 명령어 실행을 파이프라이닝하는 방법은:
    a) 다수의 순차 정수 파이프라인 스테이지를 통하여 n1정수 연산을 파이프라이닝하는 단계; 및
    b) 다수의 순차 부동점 파이프라인 스테이지를 통하여 n2부동점 연산을 파이프라이닝하는 단계로 구성되며, 상기 부동점 파이프라인 스테이지중의 전자가 상기 정수 파이프라인 스테이지중의 후자와 중복되는 것을 특징으로 하는 방법.
  8. 제7항에 있어서, 상기 정수 파이프라인 스테이지는:
    a.1) 명령어가 상기 파이프라인 프로세서의 명령어 캐시로부터 인출되고 명령어 큐내로 기억되는 다수의 명령어 인출 스테이지;
    a.2) m 명령어가 실행을 위하여 상기 파이프라인 프로세서의 정수 및 부동점 유니트중 선택된 유니트에 동시에 발행되는 다수의 명령어 해독 스테이지;
    a.3) 데이타가 상기 파이프라인 프로세서의 데이타 캐시로부터 검색되는 다수의 명령어 실행 스테이지; 및
    a.4) 상기 정수 유니트 레지스터 및 상기 데이타 캐시중 선택된 것에 다수의 정수 결과를 역기록하는 적어도 하나의 역기록 스테이지로 구성되며, 상기 명령어 해독 스테이지에서 상기 파이프라인 프로세서의 정수 유니트 어드레스 레지스터가 판독되고, 적어도 하나의 분기 목표 어드레스가 산출되고, 정수 유니트 데이타 레지스터가 판독되고, 로드 및 기억 어드레스중 적어도 하나의 선택된 것이 산출되며; 상기 명령어 실행 스테이지에서, 부동점 연산이 발행되고, 다수의 정수 연산이 수행되고, 메모리로부터 데이타가 로드되고 예외 사항이 해결되는 것을 특징으로 하는 방법.
  9. 제8항에 있어서, 약간의 상기 명령어 실행 스테이지 및 상기 적어도 하나의 역기록 스테이지는 상기 부동점 파이프라인 스테이지중 이전 스테이지와 중복되는 것을 특징으로 하는 방법.
  10. 제7항에 있어서, 상기 정수 파이프 라인 스테이지는:
    a.1) 각각 일 클록 싸이클을 취하는 각 스테이지에서 2 명령어가 상기 파이프라인 프로세서의 명령어 캐시로부터 인출되고 명령어 큐내로 기억되는 2 명령어 인출 스테이지;
    a.2) 3 명령어가 제1 스테이지에서 실행을 위하여 상기 파이프라인 프로세서의 정수 및 부동점 유니트중의 선택 유니트에 동시에 발행되고, 제2 스테이지에서 상기 파이프라인 프로세서의 2 정수 유니트 어드레스 레지스터가 판독되고 분기 목표 어드레스가 산출되고, 제3 스테이지에서 4 정수 유니트 데이타 레지스터가 판독되고 로드 및 기억 어드레스중 선택된 것이 산출되며, 각각의 상기 스테이지는 일 클록 싸이클을 취하는, 3 명령어 해독 스테이지;
    a.3) 제1 스테이지에서 데이타가 상기 파이프라인 프로세서의 데이타 캐시로부터 검색되고 부동점 연산이 발행되고 제1 정수 연산이 수행되며, 제2 스테이지에서 제2 정수 연산이 수행되고 메모리로부터 데이타가 로드되고 예외 사항이 해결되며, 각각의 상기 스테이지는 일 클록 싸이클을 취하는, 2 명령어 실행 스테이지; 및
    a.4) 상기 정수 유니트 레지스터 및 상기 데이타 캐시중 선택된 것에 2 정수 결과를 역기록하는 하나의 역기록 스테이지로 구성되며, 상기 제2 명령어 실행 및 역기록 스테이지는 상기 부동점 파이프라인 스테이지중 이전 스테이지와 중복되는 것을 특징으로 하는 방법.
  11. 제7항에 있어서, 상기 부동점 파이프라인 스테이지는:
    b.1) 적어도 하나의 부동점 명령어가 해독되고, 적어도 하나의 부동점 유니트 레지스터가 판독되는 다수의 부동점 명령어 해독 스테이지;
    b.2) 부동점 가산, 승산, 정규화 및 라운딩중 선택된 것이 수행되는 다수의 부동점 실행 스테이지; 및
    b.3) 적어도 하나의 부동점 결과가 상기 부동점 유니트 레지스터중 적어도 하나내로 역기록되는 적어도 하나의 부동점 역기록 스테이지로 구성되는 것을 특징으로 하는 방법.
  12. 제11항에 있어서, 상기 부동점 명령어 해독 스테이지는 상기 정수 파이프라인 스테이지중 후자와 중복되는 것을 특징으로 하는 방법.
  13. 제7항에 있어서, 상기 부동점 파이프라인 스테이지는:
    b.1) 제1 스테이지에서 부동점 명령어가 해독되고, 제2 스테이지에서 적어도 하나의 부동점 유니트 레지스터가 판독되며, 각각의 부동점 명령어 해독 스테이지는 일 클록 싸이클을 취하는, 2 부동점 명령어 해독 스테이지;
    b.2) 제1 스테이지에서 부동점 가산 및 승산중 선택된 것이 수행되고, 제2 스테이지에서 부동점 정규화 및 라운딩중 선택된 것이 수행되며, 각각의 부동점 실행 스테이지는 2 클록 싸이클을 취하는 2 부동점 실행 스테이지;
    b.3) 하나의 부동점 결과가 상기 부동점 유니트 레지스터중 하나내로 역기록되고, 2 클록 싸이클을 취하는 하나의 부동점 역기록 스테이지로 구성되며, 상기 부동점 명령어 해독 스테이지는 상기 정수 파이프라인 스테이지중 후( 後 )의 스테이지와 중복되는 것을 특징으로 하는 방법.
  14. 파이프라인 스테이지에서, 정수결과를 발생시키는 방법은:
    a)레지스터 및 포워드된 데이타를 선택적으로 다중화하고, 이에 응하여 상기 레지스터 및 포워드된 데이타를 출력하는 단계;
    b) 상기 레지스터 및 포워드된 데이타를 선택적으로 시프트하고, 시프트된 데이타를 출력하는 단계;
    c) 상기 레지스터 및 포워드된 데이타를 선택적으로 가산하고, 다수의 제1 가산된 데이타를 출력하는 단계;
    d) 어드레스, 상기 시프트된 데이타, 및 상기 제1 가산된 데이타를 선택적으로 다중화하고, 이에 응하여 상기 어드레스, 시프트된 데이타, 및 제1 가산된 데이타를 출력하는 단계;
    e) 상기 어드레스를 선택적으로 가산하고, 가산된 어드레스를 출력하는 단계;
    f) 상기 시프트된 데이타 및 제1 가산된 데이타를 선택적으로 가산하고, 제2 가산된 데이타를 출력하는 단계; 및
    g) 상기 시프트된 데이타, 제1 및 제2 가산된 데이타를 선택적으로 다중화하고, 이에 응하여 상기 시트프된 데이타, 제1 및 제2 가산된 데이타를 출력하는 단계로 구성되는 것을 특징으로 하는 방법.
  15. 제14항에 있어서, 상기 단계(b,c,e 및 f)는 ½ 클록 싸이클로 각각 수행되는 것을 특징으로 하는 방법.
  16. 명령어 제어 유니트를 포함하는 파이프라인 프로세서에서, 상기 명령어 제어 유니트를 위하여 명령어를 큐잉하는 장치는:
    a) 다수의 순차 명령어를 큐잉하는 제1 큐잉수단;
    b) 다수의 분기 목표 명령어를 큐잉하는 제2 큐잉수단;
    c) 상기 제1 및 제2 큐잉수단과 상기 명령어 제어 유니트에 접속되어, 상기 순차 및 분기 목표 명령어중 선택된 것을 상기 명령어 제어 유니트에 제공하는 제1 멀티플렉서 수단, 및
    d) 상기 제1 및 제2 큐잉수단과 상기 명령어 제어 유니트에 접속되어, 상기 제공된 명령어가 상기 명령어 제어 유니트에 의해 실행을 위하여 발행되지 않는다면 상기 명령어 제어 유니트에 제공된 상기 명령어를 상기 순차 큐내로 다시 큐잉하는 제2 멀티플렉서 수단으로 구성되는 것을 특징으로 하는 장치.
  17. 제16항에 있어서, 상기 제1 및 제2 큐잉수단은 클록 싸이클당 4 명령어씩의 비율로 상기 순차 및 목표 명령어를 각각 큐잉하는 것을 특징으로 하는 장치.
  18. 제16항에 있어서, 상기 제1 멀티플렉서 수단은 클록 싸이클당 3 명령어씩의 비율로 상기 명령어를 상기 명령어 제어 유니트에 제공하는 것을 특징으로 하는 장치.
  19. 정수 및 부동점 기능 유니트를 포함하는 파이프라인 프로세서에서, 다수의 명령어를 그룹화하고 실행을 위하여 상기 정수 및 부동점 유니트로 동시에 발행하는 장치는:
    a) 명령어 큐로부터 m 명령어를 수신하는 수신수단;
    b) 상기 수신수단에 접속되어 상기 m 명령어의 연산코드를 해독하는 해독수단;
    c) 상기 수신수단에 접속되어 한 명령어로부터 다른 하나의 명령어에 종속되는 다른 명령어들에 사용된 오퍼랜드를 검출하는 검출수단,
    d) 상기 해독 및 검출수단에 접속되어, 다수의 배타규칙을 각각의 상기 m 명령어 에 적용하여 상기 명령어가 다른 명령어와 함께 실행을 위하여 상기 정수 및 부동점 유니트로 발행되는 것으로부터 제외되어야 하는지 여부를 결정하고, 제외되지 않는 상기 명령어를 그룹화하고, 실행을 위하여 상기 정수 및 부동점 유니트로 상기 명령어를 동시에 발행하는 그룹화 수단; 및
    e) 상기 검출 및 그룹화 수단에 접속되어 상기 발행된 명령어 그룹의 이력을 추적하는 추적수단을 추가로 포함하고, 상기 이력은 상기 검출수단 및 상기 그룹화 수단에 의해 각각 종속 오퍼랜드를 검출하고 배타 규칙을 적용할 때 사용되는 것을 특징으로 하는 장치.
  20. 제19항에 있어서, m은 3과 같고; 상기 수신수단은 클록 싸이클당 3 명령어씩의 비율로 상기 명령어 큐로부터 상기 3 명령어를 수신하고; 상기 해독, 검출, 그룹화 및 추적수단은 자체 동작을 일 클록 싸이클내에서 수행하는 것을 특징으로 하는 장치.
  21. 제19항에 있어서, 상기 배타규칙은 다수의 "후중단" 및 다수의 "선중단" 배타규칙으로 구성되며, 상기 "후중단" 배타규칙은 고려된 명령어 뒤에서 명령어 그룹을 종료하고, 상기 "선중단" 배타규칙은 고려된 명령어 앞에서 명령어 그룹을 종료하는 것을 특징으로 하는 장치.
  22. 파이프라인 프로세서에서, 명령어 실행을 파이프라이닝하는 장치는:
    a) 다수의 순차 정수 파이프라인 스테이지를 통하여 n1정수연산을 파이프라이닝 하는 정수 파이프라이닝 수단; 및
    b) 상기 정수 파이프라이닝 수단에 접속되어, 다수의 순차 부동점 파이프라이닝 스테이지를 통하여 n1부동점 연산을 파이프라이닝하는 부동점 파이프라이닝 수단으로 구성되며, 상기 부동점 파이프라인 스테이지중 전자는 상기 정수 파이프라인 스테이지중 후자와 중복되는 것을 특징으로 하는 장치.
  23. 제22항에 있어서, 상기 정수 파이프라이닝 수단은:
    a.1) 명령어 캐시에 접속되어, 다수의 명령어 인출 스테이지에서 상기 파이프라인 프로세서의 명령어 캐시로부터 명령어를 인출하고 상기 인출된 명령어를 상기 명령어 큐내로 기억하는 다수의 명령어 큐를 포함하는 명령어 큐잉수단;
    a.2) 상기 명령어 큐잉 수단에 접속되며, 명령어 제어수단, 정수 유니트 레지스터 파일수단, 정수 기능 수단, 부동점 명령어 큐잉 및 제어수단; 및 부동점 기능 수단으로 구성되어 다수의 명령어 해독 스테이지에서 실행될 m 명령어를 동시에 발행하고, 정수 유니트 어드레스 레지스터를 판독하고, 분기목표를 산출하고, 정수 유니트 데이타 레지스터를 판독하고, 로드 및 기억 어드레스중 선택된 것을 산출하는 명령어 해독수단;
    a.3) 상기 정수 기능 수단과 상기 부동점 기능 수단으로 구성되어, 다수의 명령어 실행 스테이지에서 상기 파이프라인 프로세서의 데이타 캐시로부터 데이타를 검색하고, 부동점 연산을 발행하고, 다수의 정수연산을 수행하고, 메모리로부터 데이타를 로드하고 예외를 도출하는 정수연산실행수단; 및
    a.4) 상기 정수기능수단으로 구성되며, 적어도 하나의 역기록 스테이지에서, 상기 정수 유니트 레지스터 수단 및 상기 데이타 캐시중 선택된 것에 다수의 정수 결과를 역기록하는 정수결과 역기록 수단으로 구성되며, 상기 데이타 캐시 및 메모리는 상기 명령어 실행수단에 접속되는 것을 특징으로 하는 장치.
  24. 제23항에 있어서, 약간의 상기 명령어 실행 스테이지 및 상기 적어도 하나의 역기록 스테이지는 상기 부동점 파이프라인 스테이지중 전(前)스테이지와 중복되는 것을 특징으로 하는 장치.
  25. 제22항에 있어서, 상기 정수 파이프라이닝 수단은;
    a.1) 2 명령어 큐로 구성되며, 각각의 2 명령어 인출 스테이지에서 상기 파이프라인 프로세서의 명령어 캐시로부터 2 명령어를 인출하고 상기 인출된 명령어를 상기 명령어 큐내로 기억하는 명령어 큐잉수단;
    a.2) 상기 명령어 큐잉수단에 접속되고, 명령어 제어수단, 정수 유니트 레지스터 파일수단, 정수기능수단, 부동점 명령어 큐잉 및 제어수단, 및 부동점 기능수단으로 구성되며, 3 명령어 해독 스테이지에서, 실행될 3 명령어를 동시에 발행하고, 2 정수 유니트 어드레스 레지스터를 판독하고, 분기 목표를 산출하고, 4 정수 유니트 데이타 레지스터를 판독하고, 로드 및 기억 어드레스중 선택된 것을 산출하는 명령어 해독수단;
    a.3) 상기 정수기능수단 및 상기 부동점 기능수단으로 구성되며, 2 명령어 실행 스테이지에서, 상기 파이프라인 프로세서의 데이타 캐시로부터 데이타를 검색하고, 부동점 연산을 발행하고, 2 정수연산을 수행하고, 메모리로부터 데이타를 로드하고 예외를 도출하는 정수연산실행수단; 및
    a.4) 상기 정수기능수단으로 구성되며, 1 역기록 스테이지에서, 2 정수결과를 상기 정수 유니트 레지스터 수단 및 상기 데이타 캐시중 선택된 것에 역기록하는 정수결과 역기록 수단으로 구성되며, 각각의 상기 명령어 인출 스테이지, 각각의 상기 명령어 해독 스테이지, 각각의 상기 명령어 실행 스테이지, 및 상기 역기록 스테이지는 각각 일 클록 싸이클을 취하고, 상기 명령어 캐시는 상기 명령어 큐잉수단에 접속되고, 상기 데이타 캐시 및 메모리는 상기 명령어 실행수단에 접속되는 것을 특징으로 하는 장치.
  26. 제22항에 있어서, 상기 부동점 파이프라이닝 수단은;
    b.1) 부동점 명령어 큐잉수단, 부동점 명령어 제어수단, 부동점 유니트 레지스터 파일수단으로 구성되며, 다수의 부동점 명령어 해독 스테이지에서 적어도 하나의 부동점 명령어를 해독하고, 적어도 하나의 부동점 유니트 레지스터를 판독하는 명령어 해독수단;
    b.2) 상기 명령어 해독수단에 접속되고, 상기 부동점 유니트 레지스터 파일수단 및 부동점 기능수단으로 구성되며, 다수의 부동점 실행 스테이지에서, 부동점 합산, 승산, 정규화 및 라운딩중 선택된 것을 수행하는 부동점 연산실행수단; 및
    b.3) 상기 부동점 유니트 레지스터 파일수단으로 구성되며, 적어도 하나의 부동점 역기록 스테이지에서 적어도 하나의 부동점 결과를 상기 부동점 유니트 레지스터중 적어도 하나에 역기록하는 부동점 결과 역기록 수단으로 구성되는 것을 특징으로 하는 장치.
  27. 제26항에 있어서, 상기 부동점 명령어 해독 스테이지는 상기 정수 파이프라인스테이지중 후자와 중복되는 것을 특징으로 하는 장치.
  28. 제22항에 있어서, 상기 부동점 파이프라이닝 수단은;
    b.1) 부동점 명령어 큐잉수단, 부동점 명령어 제어수단, 부동점 유니트 레지스터 파일수단으로 구성되며, 2 부동점 명령어 해독 스테이지에서, 하나의 부동점 명령어를 해독하고 적어도 하나의 부동점 유니트 레지스터를 판독하는 명령어 해독수단;
    b.2) 상기 명령어 해독수단에 접속되고, 상기 부동점 유니트 레지스터 파일수단 및 부동점 기능수단으로 구성되며, 2 부동점 실행 싸이클에서, 부동점 합산, 승산, 정규화 및 라운딩중 선택된 것을 수행하는 부동점 연산실행수단; 및
    b.3) 상기 부동점 유니트 레지스터 파일수단으로 구성되며, 하나의 부동점 역 기록 스테이지에서 상기 부동점 유니트 레지스터중 하나에 하나의 부동점 결과를 역기록하는 부동점 결과 역기록 수단으로 구성되며, 각각의 상기 부동점 명령어 해독 스테이지, 및 상기 부동점 역기록 스테이지는 일 클록 싸이클을 취하고, 각각의 상기 부동점 실행 스테이지는 2 클록 싸이클을 취하는 것을 특징으로 하는 장치.
  29. 파이프라인 프로세서에서, 정수결과를 생성시키는 정수 기능 유니트는:
    a) 상기 파이프라인 프로세서의 정수 유니트 레지스터 파일 및 제2 멀티플렉서에 접속되어, 상기 정수 유니트 레지스터 파일 및 상기 제2 멀티플렉서로부터 데이타를 선택적으로 수신하고 상기 수신된 데이타를 출력하는 제1 멀티플렉서;
    b) 상기 제1 멀티플렉서에 접속되어, 상기 수신된 데이타를 선택적으로 시프트하고 시프트된 데이타를 출력하는 적어도 하나의 시프터;
    c) 상기 제1 멀티플렉서에 접속되어, 상기 수신된 데이타를 선택적으로 가산하고 제1 가산된 데이타를 출력하는 다수의 제1 가산기;
    d) 상기 정수 유니트 레지스터 파일, 및 상기 적어도 하나의 시프터, 및 상기 다수의 제1 가산기에 접속되어, 어드레스, 상기 시프트된 데이타 및 상기 가산된 데이타를 선택적으로 수신하고 상기 수신된 어드레스, 시프트된 데이타 및 가산된 데이타를 출력하는 제3 멀티플렉서;
    e) 상기 제3 멀티플렉서에 접속되어, 상기 수신된 어드레스를 가산하고 가산된 어드레스를 출력하는 적어도 하나의 어드레스 가산기;
    f) 상기 제2 멀티플렉서에 접속되어, 상기 시프트된 데이타와 제1 가산된 데이타를 선택적으로 가산하고 제2 가산된 데이타를 출력하는 적어도 하나의 제2 가산기; 및
    g) 상기 제3 멀티플렉서 및 상기 적어도 하나의 제2 가산기에 접속되어, 상기 시프트된 데이타, 제1 가산된 및 제2 가산된 데이타를 선택적으로 수신하고 상기 수신된 데이타를 상기 정수 유니트 레지스터 파일 및 상기 제1 멀티플렉서에 출력하는 상기 제2 멀티플렉서로 구성되는 정수 기능 유니트.
  30. 제29항에 있어서, 상기 시프팅, 상기 어드레스 가산 및 상기 데이타 가산은 각각 ½ 클록 싸이클로 수행되는 것을 특징으로 하는 정수 기능 유니트.
  31. 파이프라인 프로세서는:
    a) 순차 및 목표 명령어 큐로 구성되며, 다수의 명령어를 큐잉하는 명령어 큐잉 수단;
    b) 상기 명령어 큐잉수단에 접속되어, 클록 싸이클당 m 명령어씩을 그룹화하고 실행을 위하여 동시에 발행하는 명령어 제어수단;
    c) 상기 명령어 제어수단에 접속되어, 상기 명령어의 오퍼랜드를 기억하는 정수 유니트 레지스터 파일수단;
    d) 상기 정수 레지스터 파일수단에 접속되어, 클록 싸이클당 n1정수결과를 생성 시키는 정수기능수단;
    e) 상기 명령어 제어수단에 접속되어, 실행될 부동점 명령어를 큐잉하고 발행하는 부동점 명령어 큐잉 및 제어수단;
    f) 상기 부동점 명령어 큐잉 및 제어수단에 접속되어, 상기 부동점 명령어의 오퍼랜드를 기억하는 부동점 유니트 레지스터 파일수단; 및
    g) 상기 부동점 유니트 레지스터 파일수단에 접속되어, 클록 싸이클당 n2부동점 결과를 생성시키는 부동점 기능수단으로 구성되며, n1과 n2는 m을 지원할 만큼 충분히 큰 것을 특징으로 하는 파이프라인 프로세서.
  32. 제31항에 있어서, m은 3과 같고; n1은 2와 같고; n2는 1과 같은 것을 특징으로 하는 파이프라인 프로세서.
  33. 파이프라인 프로세서에서, 분기 명령어를 다루는 방법은:
    a) 상기 분기 명령어를 인출하는 단계;
    b) 상기 분기 명령어를 해독하는 단계;
    c) 다수의 순차 명령어를 인출하는 단계;
    d) 상기 분기 명령어를 발행 및 실행하는 단계;
    e) 상기 순차 명령어중 적어도 첫번째 명령어를 해독하는 단계; 및
    f) 다수의 목표 명령어를 인출하는 단계로 구성되며, 상기 순차 명령어는 상기 분기가 취해지지 않으면 상기 분기 명령어 다음에 실행되고, 상기 순차 명령어의 인출은 상기 분기 명령어의 해독과 동시에 수행되고, 상기 해독은 상기 분기 명령어의 상기 실행과 동시에 수행되고, 상기 다수의 목표 명령어는 상기 분기가 취해진다면 상기 분기 명령어 다음에 실행되고, 상기 목표 명령어의 인출은 상기 순차 명령어의 상기 적어도 첫번째 명령어의 상기 해독과 동시에 수행되는 것을 특징으로 하는 방법.
  34. 제33항에 있어서, 상기 방법은:
    g) 상기 순차 명령어중 상기 적어도 첫번째 명령어를 스쿼시하는 단계; 및
    h) 상기 목표 명령어중 적어도 첫번째 명령어를 해독하는 단계로 추가로 구성되며, 상기 분기는 상기 분기 명령어의 상기 실행의 결과로서 취해지고, 상기 해독은 상기 순차 명령어의 상기 적어도 첫번째 명령어를 스쿼시할 때 동시에 수행되는 것을 특징으로 하는 방법.
  35. 제34항에 있어서, 상기 방법은:
    g) 상기 순차 명령어의 상기 적어도 첫번째 명령어를 실행시키는 단계;
    h) 상기 순차 명령어중 적어도 두번째 명령어를 해독하는 단계를 더 포함하고 있으며, 상기 분기는 상기 분기 명령어의 상기 실행의 결과로서 취해지지 않고, 상기 해독은 상기 순차 명령어의 상기 적어도 첫번째 명령어의 상기 실행과 동시에 수행되고, 상기 다수의 인출된 목표 명령어는 무시되는 것을 특징으로 하는 방법.
  36. 파이프라인 프로세서에서, 분기 명령어를 다루는 장치는:
    a) 상기 분기 명령어, 및 다수의 순차 명령어를 큐잉하는 제1 명령어 큐잉수단;
    b) 상기 제1 큐잉수단에 접속되어, 상기 분기 명령어, 및 상기 순차 명령어중 적어도 첫번째 명령어를 해독하는 해독수단;
    c) 상기 해독수단에 접속되어, 상기 분기 명령어를 실행시키는 실행수단;
    d) 다수의 목표 명령어를 큐하는 제2 큐잉수단으로 구성되며, 상기 순차 명령어는 상기 분기가 취해지지 않으면 상기 분기 명령어 뒤에서 실행되고, 상기 분기 명령어의 상기 해독은 상기 순차 명령어를 큐할 때와 동시에 수행되고, 상기 분기 명령어의 실행은 상기 순차 명령어의 상기 적어도 첫본째 명령어의 해독과 동시에 수행되고, 상기 다수의 목표 명령어는 상기 분기가 취해지면 상기 분기 명령어 다음에 실행되고, 상기 큐잉은 상기 순차 명령어의 상기 적어도 첫번째 명령어의 상기 해독과 동시에 수행되는 것을 특징으로 하는 장치.
  37. 제36항에 있어서, 상기 해독수단은 상기 순차 명령의 적어도 상기 첫번째 명령어를 스쿼시하고, 상기 분기는 상기 분기 명령어의 상기 실행의 결과로서 취해지고, 상기 해독수단은 상기 목표 명령어의 적어도 첫번째 명령어를 해독하고, 상기 해독은 상기 순차 명령어의 상기 적어도 첫번째 명령어를 스쿼시할 때와 동시에 수행되는 것을 특징으로 하는 장치.
  38. 제37항에 있어서, 상기 실행수단은 상기 순차 명령어의 상기 적어도 첫번째 명령어를 실행시키고, 상기 분기는 상기 분기 명령어의 상기 실행의 결과로서 취해지지는 않고, 상기 해독수단은 상기 순차 명령어의 적어도 두번째 명령어를 해독하고, 상기 해독은 상기 순차 명령어의 상기 적어도 첫번째 명령어의 상기 실행과 동시에 수행되고, 상기 해독수단은 상기 다수의 큐잉된 목표 명령어를 무시하는 것을 특징으로 하는 장치.
KR1019930007075A 1992-04-29 1993-04-27 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 KR100309566B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US875,353 1978-03-20
US87535392A 1992-04-29 1992-04-29

Publications (2)

Publication Number Publication Date
KR930022193A KR930022193A (ko) 1993-11-23
KR100309566B1 true KR100309566B1 (ko) 2001-12-15

Family

ID=25365656

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930007075A KR100309566B1 (ko) 1992-04-29 1993-04-27 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치

Country Status (3)

Country Link
US (1) US5509130A (ko)
JP (1) JP3575617B2 (ko)
KR (1) KR100309566B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100480384B1 (ko) * 1997-11-22 2005-07-18 엘지산전 주식회사 피엘씨전용마이크로프로세서의프로그램제어방법
KR101562910B1 (ko) * 2014-02-13 2015-10-26 한국과학기술원 명령어 캐시의 구동 방법, 이를 이용하는 명령어 캐시 및 이를 포함하는 데이터 처리 장치

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835745A (en) * 1992-11-12 1998-11-10 Sager; David J. Hardware instruction scheduler for short execution unit latencies
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5848288A (en) * 1995-09-20 1998-12-08 Intel Corporation Method and apparatus for accommodating different issue width implementations of VLIW architectures
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5787026A (en) * 1995-12-20 1998-07-28 Intel Corporation Method and apparatus for providing memory access in a processor pipeline
US6115730A (en) * 1996-02-28 2000-09-05 Via-Cyrix, Inc. Reloadable floating point unit
US5619667A (en) * 1996-03-29 1997-04-08 Integrated Device Technology, Inc. Method and apparatus for fast fill of translator instruction queue
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
EP0810518B1 (en) * 1996-05-30 2004-03-17 Matsushita Electric Industrial Co., Ltd. Method and circuit for delayed branch control
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
US5784603A (en) * 1996-06-19 1998-07-21 Sun Microsystems, Inc. Fast handling of branch delay slots on mispredicted branches
US6006320A (en) * 1996-07-01 1999-12-21 Sun Microsystems, Inc. Processor architecture with independent OS resources
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US5754811A (en) * 1996-10-08 1998-05-19 Putrino; Michael Instruction dispatch queue for improved instruction cache to queue timing
US5805849A (en) * 1997-03-31 1998-09-08 International Business Machines Corporation Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5870582A (en) * 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US6047368A (en) * 1997-03-31 2000-04-04 Sun Microsystems, Inc. Processor architecture including grouping circuit
US5913047A (en) * 1997-10-29 1999-06-15 Advanced Micro Devices, Inc. Pairing floating point exchange instruction with another floating point instruction to reduce dispatch latency
US6216218B1 (en) * 1997-11-03 2001-04-10 Donald L. Sollars Processor having a datapath and control logic constituted with basis execution blocks
US6163821A (en) * 1998-12-18 2000-12-19 Compaq Computer Corporation Method and apparatus for balancing load vs. store access to a primary data cache
US6460130B1 (en) * 1999-02-19 2002-10-01 Advanced Micro Devices, Inc. Detecting full conditions in a queue
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
ATE475930T1 (de) 1999-09-01 2010-08-15 Intel Corp Verzweigungsbefehl für einen mehrfachverarbeitungsprozessor
US6711670B1 (en) * 1999-10-14 2004-03-23 Hewlett-Packard Development Company, L.P. System and method for detecting data hazards within an instruction group of a compiled computer program
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6609190B1 (en) * 2000-01-06 2003-08-19 International Business Machines Corporation Microprocessor with primary and secondary issue queue
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
US6708267B1 (en) * 2000-02-04 2004-03-16 International Business Machines Corporation System and method in a pipelined processor for generating a single cycle pipeline stall
US6735686B1 (en) * 2000-06-30 2004-05-11 Hitachi, Ltd. Data processing device including two instruction decoders for decoding branch instructions
US6757807B1 (en) * 2000-08-18 2004-06-29 Sun Microsystems, Inc. Explicitly clustered register file and execution unit architecture
US6728866B1 (en) * 2000-08-31 2004-04-27 International Business Machines Corporation Partitioned issue queue and allocation strategy
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6948054B2 (en) * 2000-11-29 2005-09-20 Lsi Logic Corporation Simple branch prediction and misprediction recovery method
US7437724B2 (en) 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7047397B2 (en) * 2002-09-13 2006-05-16 Intel Corporation Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
JP2004192021A (ja) * 2002-12-06 2004-07-08 Renesas Technology Corp マイクロプロセッサ
US20060174089A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US7269715B2 (en) * 2005-02-03 2007-09-11 International Business Machines Corporation Instruction grouping history on fetch-side dispatch group formation
US7475223B2 (en) * 2005-02-03 2009-01-06 International Business Machines Corporation Fetch-side instruction dispatch group formation
US7774582B2 (en) * 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor
US20060277425A1 (en) * 2005-06-07 2006-12-07 Renno Erik K System and method for power saving in pipelined microprocessors
US7634644B2 (en) * 2006-03-13 2009-12-15 Sun Microsystems, Inc. Effective elimination of delay slot handling from a front section of a processor pipeline
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
WO2010021119A1 (ja) * 2008-08-21 2010-02-25 パナソニック株式会社 命令制御装置
JP2010140398A (ja) * 2008-12-15 2010-06-24 Renesas Electronics Corp データ処理装置及びデータ処理方法
US8667476B1 (en) 2009-01-20 2014-03-04 Adaptmicrosys LLC Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system
JP5436033B2 (ja) * 2009-05-08 2014-03-05 パナソニック株式会社 プロセッサ
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
US9092236B1 (en) * 2011-06-05 2015-07-28 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
KR101703400B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
US8856769B2 (en) * 2012-10-23 2014-10-07 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US20160055001A1 (en) * 2014-08-19 2016-02-25 Oracle International Corporation Low power instruction buffer for high performance processors
US9710278B2 (en) 2014-09-30 2017-07-18 International Business Machines Corporation Optimizing grouping of instructions
US20160283243A1 (en) * 2015-03-28 2016-09-29 Yong-Kyu Jung Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system
GB2563589B (en) * 2017-06-16 2019-06-12 Imagination Tech Ltd Scheduling tasks
US11269650B2 (en) * 2018-12-29 2022-03-08 Texas Instruments Incorporated Pipeline protection for CPUs with save and restore of intermediate results
US10936321B2 (en) * 2019-02-01 2021-03-02 International Business Machines Corporation Instruction chaining
CN110647362B (zh) * 2019-09-11 2023-03-31 上海高性能集成电路设计中心 一种基于记分牌原理的两级缓置发射装置
US11544062B2 (en) * 2019-09-27 2023-01-03 Intel Corporation Apparatus and method for store pairing with reduced hardware requirements

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100480384B1 (ko) * 1997-11-22 2005-07-18 엘지산전 주식회사 피엘씨전용마이크로프로세서의프로그램제어방법
KR101562910B1 (ko) * 2014-02-13 2015-10-26 한국과학기술원 명령어 캐시의 구동 방법, 이를 이용하는 명령어 캐시 및 이를 포함하는 데이터 처리 장치

Also Published As

Publication number Publication date
JPH06318155A (ja) 1994-11-15
US5509130A (en) 1996-04-16
KR930022193A (ko) 1993-11-23
JP3575617B2 (ja) 2004-10-13

Similar Documents

Publication Publication Date Title
KR100309566B1 (ko) 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
US5710902A (en) Instruction dependency chain indentifier
US6163839A (en) Non-stalling circular counterflow pipeline processor with reorder buffer
US5764943A (en) Data path circuitry for processor having multiple instruction pipelines
US20170083320A1 (en) Predicated read instructions
US5619664A (en) Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
EP3314400A1 (en) Determination of target location for transfer of processor control
GB2524619A (en) Method and apparatus for implementing a dynamic out-of-order processor pipeline
CN101373427A (zh) 程序执行控制装置
EP3491514A1 (en) Transactional register file for a block-based processor
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
US6061367A (en) Processor with pipelining structure and method for high-speed calculation with pipelining processors
EP3491516A1 (en) Load-store ordering in a block-based processor
US11726912B2 (en) Coupling wide memory interface to wide write back paths
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JPH02227730A (ja) データ処理システム
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
US6237085B1 (en) Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation
KR100307980B1 (ko) 산술 또는 논리 연산의 수행과 동시에 조건 코드 비트를 발생하는 방법 및 시스템
JP2874351B2 (ja) 並列パイプライン命令処理装置
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
US6336182B1 (en) System and method for utilizing a conditional split for aligning internal operation (IOPs) for dispatch
JPWO2008155799A1 (ja) 命令実行制御装置及び命令実行制御方法
Rau et al. Instruction-level parallelism
Bindal et al. Central Processing Unit

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
LAPS Lapse due to unpaid annual fee