KR20010023914A - 데이터 및 어드레스 명령을 병렬로 디코딩 및 실행하기위한 데이터 처리기 - Google Patents

데이터 및 어드레스 명령을 병렬로 디코딩 및 실행하기위한 데이터 처리기 Download PDF

Info

Publication number
KR20010023914A
KR20010023914A KR1020007002605A KR20007002605A KR20010023914A KR 20010023914 A KR20010023914 A KR 20010023914A KR 1020007002605 A KR1020007002605 A KR 1020007002605A KR 20007002605 A KR20007002605 A KR 20007002605A KR 20010023914 A KR20010023914 A KR 20010023914A
Authority
KR
South Korea
Prior art keywords
pipeline
instruction
data
instructions
command
Prior art date
Application number
KR1020007002605A
Other languages
English (en)
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25456715&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20010023914(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 인피니언 테크놀로지스 노쓰 아메리카 코포레이션 filed Critical 인피니언 테크놀로지스 노쓰 아메리카 코포레이션
Publication of KR20010023914A publication Critical patent/KR20010023914A/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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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 or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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 or 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 or 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 데이터 명령을 디코딩 및 실행하는 제 1 파이프라인과; 어드레스 명령을 디코딩 및 실행하는 제 2 파이프라인과; 상기 파이프라인에 다중 명령을 송출하는 유니트와; 상기 제 1 파이프라인과 접속된 제 1 레지스터 세트와; 상기 제 2 파이프라인과 접속된 제 2 레지스터 세트를 포함하며,상기 제 1 및 제 2 파이프라인은 데이터를 병렬로 처리하는 것을 특징으로 하는 데이터 처리기에 관한 것이다.

Description

데이터 및 어드레스 명령을 병렬로 디코딩 및 실행하기 위한 데이터 처리기 {DATA PROCESSOR WITH PARALLEL DECODING AND EXECUTION OF DATA ADDRESS INSTRUCTIONS}
마이크로제어기는 매우 잘 알려져 있으며, 저목적 장치(예를들어, 4/8비트 제어기)에서부터 고목적 장치(예를들어, 32 비트 제어기)까지 다양한 제어기가 이용가능하다. 고목적 제어기는 레이저 프린터 및 하드 디스크와 같은 전자장치 또는 예를들어 자동차등에서의 다양한 처리를 제어하기 위한 임의의 종류의 전자장치에 거의 사용된다.
해결할 작업이 복잡해 질수록 속도가 빠른 고목적 제어기에 대한 요구가 증대된다. 특히, 이러한 장치는 실시간 어플리케이션을 제어하기 위하여 필요하다. 이러한 어플리케이션에서는 데이터를 고속으로 처리할 필요가 있다. 따라서, 다중-포트 레지스터 파일은 앞서 언급된 명세서의 도 1에 도시된 바와같이 다수의 유니트들에 접속된다. 각각의 유니트에 병렬로 송출되는 모든 명령을 정확하게 처리하기 위하여, 다수의 사전경고(precaution), 예컨대 종속 검사, 완료해석, 자원 검사 등이 취해져야 한다. VLIW 기계에서, 이들 사전경고는 소프트웨어 측면에서 대부분 시프트되며, 그들의 하드웨어 개념 때문에 여러 코드 크기를 발생시킨다.
고속 마이크로처리기 또는 마이크로제어기에 대한 다른 예는 스칼라 기계이다. 그들의 다중 파이프라인 설계는 병렬로 송출된 명령이 서로에 대해 종속하는지를 확인하기 위하여 예컨대 종속 해석을 필요로한다. 또한, 나머지 레지스터는 두 개의 명령이 동일한 레지스터로부터 판독되는 경우 필요할 수 있다. 최적의 성능을 얻기 위해서는 프로그램 순서를 위반하지 않고 검사되어야 하는 명령을 순서대로 실행시키는 것이 필요하다. 명령을 사전에 검사하고 다중 파이프라인을 통해 명령을 동시에 스케줄링하는데 필요한 내부 데이터를 전송하기 위하여, 소위 예약 국 및 재주문 버퍼가 필요하다. 이들 모든 사전경고 및 다른 사전경고는 추가 하드웨어를 포함하는 매우 복잡한 구조 또는 프로그램을 해석하고 각각 최적화된 어셈블러 코드를 송출할 수 있는 컴파일러중 하나를 요구한다. 이들 사전경고는 방해를 일으키며 마이크로제어기 및/또는 그것의 도구를 증가시킨다.
본 발명은 데이터 처리기, 특히 마이크로컴퓨터 또는 마이크로제어기와 같은 중앙처리장치(CPU)에 관한 것이다.
도 1은 본 발명에 따른 수퍼 스칼라 파이프라인 구조에 대한 기본적인 블록도.
도 2는 기본적인 명령워드를 나타낸 도면.
도 3은 도 1에 따른 파이프라인 구조의 기능 블록도.
도 4는 메모리 유니트 및 파이프라인 구조에 접속된 레지스터 파일의 기본적인 블록도.
도 5A 내지 도 5F는 도 4의 레지스터 파이프라인을 더 상세히 도시한 도면.
따라서, 본 발명의 목적은 전술한 필수적인 모든 사전경고없이 고속 실행능력을 가진 데이터 처리기를 제공하는데 있다.
이와같은 본원 발명의 목적은, 데이터 명령을 디코딩 및 실행하는 제 1파이프라인과, 어드레스 명령을 디코딩 및 실행하는 제 2파이프라인과, 다중 명령을 상기 파이프라인에 송출하는 유니트와, 상기 제 1 파이프라인과 접속된 제 1 레지스터 세트와, 상기 제 2 파이프라인과 접속된 제 2 레지스터 세트를 포함하며, 상기 제 1 및 제 2 파이프라인이 데이터를 병렬로 처리하는 데이터 처리기에 의해 달성된다.
본 발명의 다른 목적은 고속 실행능력을 가진 데이터 처리기를 사용하여 명령을 실행하는 방법을 제공하는데 있다.
이와같은 목적은, 데이터 명령을 디코딩 및 실행하는 제 1파이프라인, 어드레스 명령을 디코딩 및 실행하는 제 2 파이프라인, 다중 명령을 상기 파이프라인에 송출하는 유니트, 상기 제 1 파이프라인과 접속된 제 1 레지스터 세트, 및 상기 제 2 파이프라인과 접속된 제 2 레지스터 세트를 포함하는 데이터 처리기를 사용하여 다중 명령을 실행하기 위한 방법에 있어서, 상기 송출 유니트에 의해 명령 스트림을 해석하는 단계, 명령 스트림의 소정 순서가 제공되는 경우에만 상기 명령 스트림으로부터 연관된 명령을 각각 수신하는 각각의 파이프라인에 대해 하나의 명령을 송출하는 단계, 다른 각각의 파이프라인에 연산명령을 송출하지 않는 단계, 및 상기 파이프라인에 송출된 상기 명령을 병렬로 실행하는 단계를 포함하는 방법에 의해 달성된다.
다른 실시예에 있어서, 본 발명에 따른 데이터 처리기는 다른 두 개의 파이프라인 유니트와 병렬로 루프 명령을 실행할 수 있는 제 3 파이프라인을 포함한다.
다중 명령을 실행하기 위한 데이터 처리기 및 방법은 최소화된 종속 해석만을 필요로한다. 다른 레지스터는 필요하지 않다. 또한, 규칙에 벗어나는 실행은 제공되지 않는다. 최상위 비트에 의해 임의의 명령을 디코딩함으로써, 각각의 파이프라인으로 명령의 신속한 분배가 가능하다. 동기화된 파이프라인을 제공함으로써, 파이프라인을 제어하기 위한 하드웨어의 비용이 최소화된다. 따라서, 본 발명에 따른 장치는 디지털 신호 처리기로 매우 유용하다.
도 1은 수퍼-스칼라 32 비트 마이크로제어기의 바람직한 실시예에 따른 파이프라인 시스템의 기본적인 블록도이다. 3개의 파이프라인(10, 11, 12)이 제공된다. 기본적인 두 개의 파이프라인은 어드레스 명령을 조절하는 파이프라인(10) 및 데이터 명령을 조절하는 파이프라인(11)이다. 어드레스 명령은 주로 어드레스 레지스터 파일을 사용하며, 대부분의 명령은 로드/저장 명령이다. 데이터 명령은 주로 데이터레지스터 파일을 사용하며 대부분의 명령은 적분 명령이다. 임의의 명령이 데이터 또는 어드레스 레지스터를 사용하거나 예컨대 호출, 리턴 및 점프 명령에서는 데이터 또는 어드레스 레지스터를 전혀 사용하지 않기 때문에, 명령들은 어느 한 파이프라인 유니트에서 실행될 수 있다. 제 3 파이프라인(12)은 단지 한 종류의 로드/저장 명령, 즉 루프 명령을 조절한다. 파이프라인(10, 11)은 디코드 스테이지(10a, 11)를 각각 포함하며, 실행 스테이지(10b, 11b)를 각각 포함하며, 재기록 스테이지(10c, 11c)를 각각 포함한다. 제 3 파이프라인은 단지 실행 스테이지(12a) 및 재기록 스테이지(12c)만을 포함한다. 루프 파이프라인(12)은 물론 다른 파이프라인과 같이 3개의 스테이지를 포함할 수 있으나, 본 실시예에서는 이하에 설명되는 바와같이 추가 하드웨어를 필요로하지 않는다. 어드레스 레지스터 파일(200)은 로드/저장 파이프라인(10) 및 루프 파이프라인(12)에 접속되며, 데이터 레지스터 파일(300)은 적분 파이프라인(11)에 접속된다. 설명을 보다 간단하기 하기 위하여, 버퍼 레지스터 및 어드레스 레지스터 뿐만아니라 데이터 전송 레지스터 및 이들의 접속관계는 도 1에 도시하지 않았다. 이들은 이하에서 더 상세히 설명될 것이다. 명령 페치 유니트(7)는 각각의 명령을 파이프라인(10, 11, 12)에 제공한다.
도 2는 32비트의 비트 폭을 가진 명령 워드의 개요를 도시한다. 명령은 비트 0 내지 30를 포함하는 주 본체내에 포함되며, 부호 21로 표시되는 비트 31은 명령의 종류를 지시한다. 물론, 명령 워드의 32비트의 일부는 지시기로써 사용될 수 있다. 본 실시예에서, 두 개의 다른 종류의 명령은 두 개의 다른 파이프라인에서 실행될 수 있다. 즉, 로드/저장 명령은 파이프라인(10)에서 실행될 수 있으며 적분 명령은 파이프라인(11)에서 실행될 수 있다. 전치-디코더 및 명령 송출 유니트는 각 명령 워드의 최상위 비트 21을 평가함으로서 이들 명령들을 단순히 구별할 수 있다.
도 3은 도 1의 파이프라인 구조를 더 상세히 도시한다. 도 3은 파이프라인의 동작을 위해 필요한 제어 논리의 주요 부분을 도시한다. 설명을 보다 단순화하기 위하여, 도 3은 주요 유니트사이의 주요 접속만을 도시한다. 동일 부호는 동일 유니트를 지시한다. 바람직한 실시예에 있어서, 명령 페치 모듈(1)은 도 1에 따라 3개의 파이프라인 유니트(10, 11, 12)를 포함한다. 그러나, 마이크로프로세서는 다수의 부-파이프라인을 포함하는 단지 하나의 주요 파이프라인을 가질 수 있다. 또한, 본 발명은 임의의 수의 파이프라인 스테이지에 제한되지 않는다.
명령 공급/송출 유니트를 나타내는 명령 디멀티플렉서(7)는 다른 파이프라인 유니트(10, 11, 12)에 각각의 명령을 제공한다. 이 명령 디멀티플렉서(7)는 파이프라인 제어 유니트(14)에 접속된 송출 제어 유니트(9)에 의해 제어된다. 명령 디멀티플렉서(7)는 캐시 부시스템(13) 또는 루프 캐시 버퍼 유니트(3)중 하나로부터 명령을 전송하는 멀티플렉서(5)의 출력에 접속된다. 루프 캐시 버퍼 유니트(3)는 캐시 부시스템(13)에 접속된 프로그램 제어 갱신 및 제어 유니트(2)에 접속된다. 루프 파이프라인(12)의 일부분으로써, 루프 실행 유니트(4)는 프로그램 카운터 갱신 및 제어 유니트(2) 그리고 루프 캐시 버퍼(3)에 접속된다. 루프 캐시 버퍼(3)는 브랜치 목표 버퍼(BTB)를 포함할 수 있다. 멀티플렉서(5)의 출력은 명령 디멀티플렉서(7)에 접속되는 출력을 가진 전치-디코더(6)의 입력에 접속된다. 더욱이, 전치-디코더(6)는 프로그램 카운터 갱신 및 제어 유니트(2)에 접속된다. 보호 레지스터(8)는 프로그램 카운터 갱신 및 제어 유니트(2)에 그리고 3개의 파이프라인(10, 11, 12)에 접속된다. 이 유니트(1)는 다른 파이프라인(10, 11, 12)에 명령을 공급하기 위하여 사용된다. 이들 실시예의 주요 파이프라인(10 , 11)은 4개의 스테이지를 갖는다. 제 1 스테이지는 명령 디멀티플렉서(7), 전치-디코더(6) 및 파이프라인(10, 11, 12)을 캐시 부시스템(13)에 접속하는 논리회로에 의해 형성된다. 제 1 스테이지는 각각의 주요 파이프라인(10, 11)에 명령을 송출하는 페치 스테이지로써 언급된다. 제 2 스테이지는 유니트(10a, 11a)에 의해 묘사되며, 명령이 디코딩되는 디코더 스테이지로써 언급된다. 제 3 스테이지는 유니트(10b, 11b)에 의해 표시되며, 명령이 실행되는 실행 스테이지로써 언급된다. 다시말해서, 동작은 예를들어 로드/저장 명령의 어드레스를 계산하거나 또는 곱셈을 수행함으로써 실행된다. 제 4 스테이지는 유니트(10c, 11c)에 의해 도시되며, 각각의 동작의 결과가 레지스터 파일 또는 메모리 위치에 다시 기록되는 재기록 스테이지로써 언급된다.
설명을 보다 단순화하기 위하여, 도 3은 파이프라인과 메모리 부시스템의 레지스터 파일사이의 접속을 도시하지 않는다. 다음의 도 4 및 도 5A 내지 5F는 레지스터 파일이 파이프라인에 접속되는 방법을 도시한다.
도 4는 32비트 마이크로제어기의 범용 레지스터 파일에 대한 개요를 도시하며, 또한 메모리부시스템과 적분 및 로드/저장 파이프라인의 접속을 도시한다. 범용 레지스터 파일(100)은 소정의 비트폭을 가진 다수의 어드레스 및 데이터 레지스터(400, 700)를 포함하는 어드레스 레지스터 파일(200) 및 데이터 레지스터 파일(300)과, 버퍼(500, 600, 800, 900)를 포함한다. 이와같은 비트폭은 각각의 마이크로제어기, 마이크로처리기 또는 데이터 조절 유니트의 상세에 따라 임의의 비트 크기일 수 있다.
한편으로, 어드레스 레지스터(400)는 버스(130)를 통해 어드레스 전송 유니트(500)에 접속되며 다른 한편으로 어드레스 로드 및 저장 버퍼(600)에 접속된다. 더욱이, 데이터 레지스터 파일(100)은 다수의 데이터 레지스터(700), 예컨대 32비트의 비트폭을 가진 16개의 데이터 레지스터를 포함한다. 제 2 버스(140)는 한편으로 데이터 레지스터(700)를 데이터 로드 및 저장 버퍼(900)에 접속시키며, 다른 한편으로 데이터 레지스터(700)를 데이터 전송 유니트(800)에 접속시킨다. 범용 레지스터 파일(100)은 한편으로 제 3 버스(150)를 통해 데이터 메모리 유니트(180)에 접속되며 다른 한편으로 다른 버스(160, 170)에 접속된다. 버스(160)는 어드레스 순방향 버퍼(500)와 데이터 순방향 버퍼(800)의 일부분을 로드/저장 파이프라인 유니트(120)에 접속시키며, 로드/저장 파이프라인 유니트(120)는 예컨대 어드레스 산술 유니트 및 명령 페치 유니트(IFU)를 포함한다. 버스(170)는 예컨대 곱셈 누산기(MAC) 및 적분 실행 유니트를 포함하는 유니트(110)에 데이터 전송 버퍼(800)를 접속한다. 다른 버퍼(160A, 170A)는 어드레스 레지스터 파일을 버스(170)에 접속시키며, 적분 파이프라인 및 데이터 레지스터 파일을 버스(160) 및 로드/저장 파이프라인에 접속시킨다. 이들 버스(160A, 170A)는 어드레스 레지스터 파일(200)중 임의의 어드레스 레지스터에 데이터 레지스터의 내용 또는 적분 파이프라인의 결과를 전송하기 위하여 사용되거나 도는 데이터 레지스터 파일(300)의 데이터 레지스터중 어느 하나에 어드레스 레지스터의 내용 또는 로드/저장 파이프라인의 결과를 전송하기 위하여 사용될 수 있다(역도 성립함). 보통, 이들 버스중 하나, 예컨대 버스(170A)로도 충분하며 다른 버스는 생략될 수 있다.
도 5A 내지 도 5F는 엘리먼트를 더 상세한 도시하는 레지스터 파일(100)의 실시예를 도시한다. 각각의 레지스터(d0, ..., d15; a0, ..., a15)의 단지 한 비트만이 본 도면에 도시된다. 레지스터(d0, ..., d15; a0, ..., d15)의 다른 31 비트는 병열로 정렬된다.
도 5D는 어드레스 레지스터 파일의 레지스터들을 도시한다. 설명을 단순화하기 위하여, 레지스터(a2 내지 a15)는 도 5D에 도시하지 않았다. 어드레스 레지스터 파일(400)의 모든 어드레스 레지스터(a0, ..., a15)는 판독용의 두 개의 단방향 출력과 3개의 양방향 I/O포트를 가진다. 하나의 내부 버스라인(40)은 모든 어드레스 레지스터(a0, ..., a15)의 제 1 양방향 I/O 포트에 접속되며, 두 개의 라인(41, 42)은 모든 어드레스 레지스터(a0, ..., a15)의 각각의 두 출력에 접속된다. 더욱이, 두 개의 내부 버스라인(44, 46)은 모든 짝수 어드레스 레지스터(a0, a2, a4, ..., a14)의 각각의 I/O 포트에 접속된다. 다른 두 개의 라인(43, 45)은 모든 홀수 어드레스 레지스터(a1, a3, a5,..., a15)의 I/O 포트에 접속된다.
도 5A는 도 1의 어드레스 로드 및 저장 버퍼(600)를 더 상세히 도시한다. 버스라인(43 내지 46)은 저장 버퍼(101 내지 104)의 각 입력에 접속된다. 저장 버퍼(101 내지 104)의 출력은 드라이버(106 내지 109)를 통해 메모리 버스 라인(119, 121, 122, 123)에 접속된다. 모든 드라이버는 제어 유니트(도시안됨)에 의해 선택적으로 동작하기 위하여 제어 입력을 가지는 3상태 드라이버이다. 두 개의 블록(117, 105)은 한편으로 메모리 버스 라인(119, 121, 122, 123)에 접속되며 다른 한편으로 드라이버(118, 111, 112, 113)를 통해 내부 버스 라인(43 내지 46)에 접속되는 4개의 로드 버퍼를 나타낸다. 더욱이, 로드 버퍼(105)의 출력은 버퍼(115, 116)를 통해 내부 버스 라인(43, 44)에 접속된다.
도 5E는 도 4의 어드레스 전송 유니트(500)를 상세히 도시한다. 버스 라인(40, 41, 42)은 드라이버(527, 501, 502)를 통해 어드레스 전송 출력 버스 라인(524, 525, 526)에 각각 접속된다. 두 개의 메모리 버스 라인(121, 122)은 두 개의 드라이버(503, 504, 505; 506, 507, 508)에 각각 접속된다. 드라이버(503, 506)의 출력은 버스 라인(526)에 접속되며, 드라이버(504, 507)의 출력은 버스 라인(525)에 접속되며, 드라이버(505, 508)의 출력은 버스 라인(524)에 접속된다. 내부 버스라인(43, 44)은 두 개의 드라이버(518, 519)의 출력에 각각 접속된다. 드라이버(518, 519)의 입력은 재기록 버퍼(515)의 출력에 접속되며, 재기록 버퍼(515)의 입력은 어드레스 전송 버스 입력라인(523)에 접속된다. 두 개의 다른 드라이버(516, 517)의 출력은 내부 버스 라인(40)에 접속된다. 드라이버(516)가 입력은 버퍼(514)의 출력에 접속되며, 버퍼(514)의 입력은 어드레스 순방향 버스 입력라인(522)에 접속된다. 버스 라인(45, 46)은 양방향 드라이버(520, 521)를 통해 버스라인(522, 523)에 각각 접속된다. 버스 라인(523)상의 신호는 3개의 드라이버(509, 510, 511)의 입력에 공급되며, 3개의 드라이버(509, 510, 511)의 출력은 버스라인(524, 525)에 각각 접속된다. 다시, 모들 드라이버는 제어 유니트(도시안됨)에 의해 선택하기 위한 제어 입력을 가진 3상태 드라이버이다. 도 4에 따른 3개의 유니트(400, 500, 600)는 어드레스 레지스터 파일에 그리고 어드레스 레지스터 파일로부터의 어드레스 신호의 경로를 도시하며, 도 5A에 따른 버스라인(119, 122)은 메모리 유니트(180) 및 버스 라인(522 내지 524)을 어드레스 산술 파이프 및 명령 순방향 유니트(120)에 접속시킨다.
도 5C는 데이터 레지스터 파일의 데이터 레지스터들을 도시한다. 다시, 설명을 단순화하기 위하여, 레지스터(d1 내지 d13)는 도 5C에 도시하지 않았다. 데이터 레지스터 파일(500)의 모든 데이터 레지스터(d0, ..., d15)는 판독용의 3개의 단방향 출력과 두 개의 양방향 I/O-포트를 가진다. 두 개의 라인(72, 73)은 모든 데이터 레지스터(d0, ..., d15)의 제 1 두 출력에 각각 접속된다. 더욱이, 내부 버스 라인(71)은 모든 짝수 데이터 레지스터(d0, d2, d4, ..., d14)의 각 출력에 접속되며, 내부 버스 라인(70)은 모든 홀수 레지스터(d1, d3, ..., d15)의 각 출력에 접속된다. 두 개의 다른 라인(74, 76)은 모든 홀수 어드레스 레지스터(d1, d3, d5, ..., d15)의 I/O포트에 접속된다. 최종적으로, 두 개의 다른 라인(75, 77)은 모든 짝수 어드레스 레지스터(d0, d2, d4, ..., d140의 I/0 포트에 접속된다.
도 5B는 도 4의 데이터 로드 및 저장 버퍼(900)를 도시하다. 내부 버스 라인(74 내지 77)은 4개의 저장 버퍼(909 내지 912)의 입력에 각각 접속된다. 저장 버퍼(909)의 출력은 드라이버(916)를 통해 메모리 버스 라인(921)에 접속되며, 저장 버퍼(910)의 출력은 드라이버(917)를 통해 메모리 버스 라인(920)에 접속된다. 버퍼(911 내지 912)의 출력은 마스크 유니트(915)의 두 개의 입력단자에 접속된다. 마스크 유니트(915)는 두 개의 입력 및 두 개의 출력단자를 가진다. 마스크 유니트(915)의 두 개의 출력단자는 드라이버(918, 919)를 통해 두 개의 메모리 버스 라인(922, 923)에 접속된다. 두 개의 블록(908, 913)은 4개의 로드 버퍼를 나타낸다. 블록(913)은 두 개의 내부 버스라인(924, 901)에 각각 접속되고 정렬 블록(914)을 통해 메모리 버스 라인(922, 923)에 접속되는 두 개의 입력 단자를 가진다. 정렬 블록(914)은 마스크 유니트(915)의 입력과 저장 버퍼(913)의 출력에 각각 접속된다. 더욱이, 로드 버퍼(913)의 한 출력은 각각의 드라이버(904, 906)를 통해 내부 버스 라인(74, 76)에 접속된다. 로드 버퍼(913)의 다른 출력은 드라이버(905, 907)를 통해 내부 버스 라인(75, 77)에 접속된다. 제 2 로드 버퍼(908)는 입력측에서 메모리 버스 라인(920, 921)에 각각 접속되며, 출력측에서 드라이버(902, 921)를 통해 내부 버스 라인(74, 75)에 각각 접속된다. 다시, 모든 드라이버는 제어 유니트(도시안됨)에 의하여 선택하는 제어 입력을 가지는 3상태 드라이버이다.
도 5F는 도 4의 데이터 전송 유니트(800)를 도시한다. 내부 버스 라인(70 내지 73)은 드라이버(807 내지 810)를 통해 데이터 전송 버스 라인(802 내지 805)과 접속된다. 다른 데이터 전송 버스 라인(806)은 드라이버(827, 828)의 출력단자에 접속되며, 드라이버(827, 828)의 입력단자는 버스 라인(802, 803)에 각각 접속된다. 버스라인(806)은 어드레스 레지스터 파일(200) 및 데이터 레지스터 파일(300)사이를 결합하기 위하여 로드/저장 파이프라인(120)에 접속되는 도 4에 따른 버스(170A)의 일부분이다. 버스(160A)는 본 실시예에서는 실행되지 않는다. 버스 라인(924)은 3개의 드라이버(811, 812, 813)의 입력에 접속되며, 3개의 드라이버(811, 812, 813)의 출력은 버스라인(805, 804, 802)에 각각 접속된다. 버스라인(901)은 3개의 드라이버(814, 815, 816)의 입력에 접속되며, 3개의 드라이버(914, 815, 816)의 출력은 버스 라인(805, 804, 803)에 각각 접속된다. 두 개의 다른 데이터 전송 버스 라인(842, 801)은 두 개의 재기록 버퍼(829, 830)의 입력단자에 각각 접속된다. 버퍼(829, 830)의 출력단자는 드라이버(832, 834)를 통해 버스 라인(74, 75)에 각각 접속된다. 더욱이, 버퍼(830)의 출력은 드라이버(833)를 통해 버스 라인(74)에 접속된다. 버스 라인(842)은 드라이버(835)를 통해 버스라인(76)에 접속되며, 버스 라인(801)은 드라이버(836, 837)를 통해 버스 라인(76, 77)에 각각 접속된다. 또한, 버스 라인(806)은 드라이버(840, 841)를 통해 버스 라인(76, 77)에 각각 접속된다. 더욱이, 버스 라인(806)은 다른 재기록 버퍼(831)의 입력 단자에 접속되며, 다른 재기록 버퍼(831)의 출력은 드라이버(838, 839)를 통해 버스 라인(76, 77)에 각각 접속된다. 또한, 버스 라인(806)은 드라이버(817 내지 820)를 통해 버스 라인(802 내지 805)에 각각 접속된다. 최종적으로, 버스 라인(842)은 드라이버(821 내지 823)를 통해 버스 라인(805, 804, 802)에 각각 접속되며, 버스 라인(801)은 드라이버(824 내지 826)를 통해 버스 라인(803 내지 805)에 각각 접속된다. 다시, 모든 드라이버는 제어 유니트(도시안됨)에 의해 선택되는 제어 입력을 가지는 3상태 드라이버이다. 도 5A에 따른 메모리 버스 라인(119 내지 122)과 도 5B에 따른 메모리 버스 라인(920 내지 923)은 도 4의 메모리 버스(150)를 형성한다. 도 5E에 따른 버스 라인(522 내지 526)과 버스 라인(806)은 도 4의 버스(160)를 형성하며, 버스 라인(842 및 801 내지 805)은 도 4의 버스(170)를 형성한다.
바람직한 실시예의 32비트 마이크로 처리기는 두 개의 주요 파이프라인(10, 11)을 포함한다. 제 1 데이터 파이프라인(11)은 데이터 산술 명령, 곱셈 누산기 명령, 데이터 조건부 점프, 및 시스템 명령을 처리한다. 제 2어드레스 파이프라인(10)은 어드레스 산술 명령, 로드, 저장, 무조건부 점프, 어드레스 조건부 점프, 호출, 리턴, 및 루프를 처리한다. 코어는 사이클당 각각의 파이프라인(10, 11)의 디코드 스테이지(10a, 11a)에 하나의 명령을 송출할 수 있다. 그러나, 본 실시예에서, 코어는 두 개의 백-투-백 산술 명령이 개별 사이클에서 송출되고 로드 저장 파이프라인(10)에 송출되는 명령이 그 자체 또는 제 2쌍으로써 송출되는 자원의 한계에 의해 제한된다. 만일 단지 하나의 명령만이 송출된다면, 다른 파이프라인에 연산 명령이 송출되지 않는다. 이는 마이크로처리기의 코어의 구조를 매우 단순화하여 소프트 컴파일러는 단순한 방식으로 코드를 최적화할 수 있다. 다시 말해서, 단지 시스템 정보의 일부만이 하드웨어에서 적분되고, 다른 정보는 소프트웨어 컴파일러에 전송된다.
예를들어, 최적화하지 않은 명령 스트림은 다음과 같이 가정한다.
add ; 명령 i1
add ; 명령 i2
ld ; 명령 l1
ld ; 명령 l2
sub ; 명령 i3
여기서, "add"는 가산명령이며, "ld"는 로드 명령이며, "sub"는 감산 명령이다. 설명을 간략화하기 위하여, 명령 파라미터는 본 실시예에 기술하지 않았다. 이러한 명령 스트림은 이하의 표 1에 도시된 바와같이 실행될 수 있다.
표 1
이 표에서, '-'은 비동작 명령을 의미한다. 알수 있는 바와같이, 단지 명령(i2, l1)만이 양 파이프라인에 병렬로 송출될 수 있다. 왜냐하면, 이 시퀀스는 앞의 제한을 만족하기 때문이다. 모든 다른 명령은 적분 파이프라인(11) 또는 로드/저장 파이프라인(10)중 하나에 송출된다. 일반적으로, 전술한 하드웨어에서는 다중 명령이 송출되도록 적분 명령 다음에 로드/저장 명령이 송출되어야 한다.
본 발명에 따른 바람직한 실시예는 제로 오버헤드 루프를 조절하기 위하여 사용되는 로드/저장측면에 제 3 최소 파이프라인(12)을 제공한다. 이 파이프라인(12)은 루프 동작이 적분 및 로드/저장동작과 병렬로 수행되도록 하는 실행 흐름으로부터 루프를 회전시키기 위하여 사용된다. 루프 파이프라인(12)은 그와 연관된 전용 페치 스테이지를 가지지 않는다. 새로운 루프가 제 1시간에 맞날 때, 루프 명령은 페치되어 로드/저장 파이프라인에 송출된다. 제 1 시간동안, 루프 명령은 실행되며 루프 캐시 버퍼(3)는 바람직하게 루프 명령전에 실행되는 명령의 어드레스인 루프 검출 어드레스 및 루프 목표 어드레스로 설정된다. 이후의 반복시, 루프 검출 어드레스는 루프 캐시에 의해 유니트(2)의 현재 프로그램 카운터와 비교된다. 다른 루프 반복시, 루프 명령은 루프 캐시 버퍼(3)에 의해 검출되고 루프 파이프라인(12)의 실행 스테이지(12c)에 대한 루프 실행 유니트(4)에서 실행된다. 따라서, 루프를 실행하는 동안, 최대 3개의 명령이 동일한 시간에 실행될 수 있다.
본 실시예에서는 병렬실행을 효율적으로 실행할 수 있는 반면에, 앞서 기술된 실시예는 임의의 제약이 따른다. 파이프라인 기능정지, 데이터 종속 및 파이프라인 인터로킹은 모두 두 개의 주요 파이프라인(10, 11)의 디코드 스테이지에서 조절된다. 각각의 파이프라인(10, 11)은 현재의 디코드 사이클동안 다음과 같은 상태, 즉 (a) 정상, (b) 삭제, (c) 입력, (d) 삭제 및 재입력, (e) 재입력, (f) 삭제 및 입력 및 (g) 홀드중 한 상태에 있을 수 있다.
상기와 같은 상태 (a) 내지 (f)는 이하에서 설명될 것이다.
(a) 정상상태동안, 디코드시의 현재의 명령은 실행 스테이지로 송출되며 페치로부터의 다음 명령은 다음 사이클에서 디코드 스테이지로 전송된다.
(b) 삭제 상태동안, 디코드 스테이지에서의 명령은 중단되며 실행 스테이지에 연산명령이 송출되지 않는다.
(c) 입력 상태동안, 디코드 스테이지에서의 현재의 명령은 실행 스테이지로 송출되며 새로운 명령은 다음 사이클에서 디코드 스테이지에서 입력된다. 파이프라인에 입력되는 명령은 파이프라인에 종속된다. 일반적으로, 소위 인터럽트 의사명령 및 실행 의사명령없이 연산명령이 입력될 수 없다.
(d) 삭제 및 입력상태동안, 디코드 스테이지에서의 현재의 명령은 중단되며 실행 스테이지에 연산명령이 송출되지 않는다. 새로운 명령은 다음 사이클에서 디코드 스테이지내로 입력된다. 전술한 입력상태의 경우를 보라.
(e) 재입력 상태동안, 파이프라인은 다중 사이클 명령을 조절하기 위하여 명령 재입력 메커니즘을 사용한다. 이는 디코드 스테이지에서 검출된 다중 사이클 명령을 포함한다. 이 명령은 n사이클후 파이프라인의 디코드 스테이지내로 재입력되며, 여기서 n은 명령이 해석되는 사이클의 수에 따른다.
(f) 삭제 및 재입력 상태동안, 디코드 스테이지에서의 현재의 명령은 재사이클링되며 실행 스테이지에 연산명령이 송출되지 않는다. 이 실시예에서는 파이프라인 기능정지가 어떻게 실행되는지의 절차를 설명하고 있다.
(g) 홀드상태동안, 디코드시의 현재의 명령은 반복될 것이다.
파이프라인이 어느 상태에 있는지를 결정하는 조건은 파이프라인에 따른다. 다음의 설명 및 표는 파이프라인 기능정지를 조절하기 위하여 상기와 같은 메커니즘이 어떻게 적용되는지를 설명하는 실시예를 제공한다.
예컨대, 32비트 곱셈 명령과 같은 다중 사이클 적분 동작은 적분 파이프라인(11)의 디코드 스테이지(11a)에 요구된 수만큼 적분동작을 재입력시킴으로써 조절된다. 로드/저장 파이프라인(10)은 적분 파이프라인(11)이 디코드 스테이지(10a)에서의 명령을 효율적으로 정지시키는 재입력 상태에 있을 때 자동적으로 삭제 및 재입력 상태로 된다. 이러한 효과를 야기하는 명령 스트림은 예컨대 다음과 같다.
mul d0, d1, d2 ; 명령 M
ld.w d3, [a0]0 ; 명령 L
여기서, 'mul'은 곱셈 명령을 나타내며, 'ld.w'는 로드 워드 명령을 나타낸다. 이러한 명령 스트림은 다음과 같이 두 개의 주요 파이프라인(10, 11)의 스테이지를 충족시킨다.
표 2
여기서 'R1'은 재입력을 나타내며, 'C&R'은 삭제 및 재입력을 나타내며, 'N'은 정상을 나타낸다. 곱셈 명령 다음에 다른 적분명령이 뒤따르는 경우에, 명령 L 대신에 연산명령이 송출되지 않는다.
기록 해저드 이후의 판독은 곱셈 누산기 명령으로부터의 결과가 추가 사이클동안 다른 임의의 다른 산술연산에 이용할수 없을 때 적분 파이프라인(11)에서 발생한다. 이것은 실행 스테이지(11b)로부터의 곱셈 누산기 결과의 전송을 막는 누산함수를 실행하기 위하여 사용되는 재기록 스테이지(11c)에서의 가산 때문에 발생한다. 만일 해저드가 존재한다면, 적분 파이프라인(11)은 삭제 및 재입력 상태가 되고 그 다음에 로드 저장 파이프라인(10)이 삭제 및 재입력상태가 될 것이다. 예를들어 명령 스트림은 다음과 같다.
madd d0, d1, d2, d3 ; 명령 M
shr d0, d0, 2 ; 명령 S
ld.w d1, [a0] ; 명령 L
여기서, 'madd'는 d2 및 d3와 d1의 곱셈의 결과를 가산하고 그 결과를 d0에 저장하는 곱셈 및 누산명령을 나타내며 'shr'은 시프트 명령을 나타내며, 여기서 d0는 2만큼 오른쪽으로 시프트되고 그 결과가 d0에 저장된다는 것을 나타낸다. 'ld'는 로드 명령을 나타내며, 본 실시예에서 레지스터 a0에 의해 지시된 메모리의 내용은 레지스터 d1으로 로드된다. 이와같은 실시예는 표 3에 도시된 이하의 파이프라인 상태를 야기한다.
표 3
파이프라인(10, 11, 12)을 로킹하는 전술한 메커니즘은 다른 파이프라인 스테이지를 제어하고 파이프라인(10, 11, 12)을 동기시키는데 필요한 하드웨어를 용이하게 한다. 성능의 손실은 본 발명에 따른 파이프라인 구조를 실현할 때 장점에 비교하여 무의미하다.
어드레스 전송 유니트(500) 및 데이터 전송 유니트(800)는 파이프라인 동작의 중요한 특징이 고려될 때 성능을 보장하는데 필요하다. 이들 유니트(500, 800)는 소위 어드레스 및 데이터에 대한 전송 경로를 제공한다. 이들 순방향 경로는 한 명령의 결과가 기록을 위해 대기하지 않고 그리고 레지스터 파일(200, 300)로부터의 결과를 판독함이 없이 다음 명령의 입력에 전송되도록 한다. 명령 스트림에 따른 상기와 같은 순방향 경로없이, 파이프라인(10, 11)은 기능을 정지할 것이다. 예컨대, 만일 제 1 명령 다음의 제 2 명령이 제 1명령의 결과를 필요로한다면, 제 2 명령의 디코드 스테이지의 실행은 제 1명령의 실행 스테이지의 실행동안 기능을 정지할 것이다. 순방향 메커니즘에 있어서, 제 1 명령의 실행 스테이지는 제 2 명령의 실행 스테이지에 그것의 결과를 전송한다.
본 발명에 따른 데이터 처리기는 소위 디지털 신호 처리 관련 명령을 실행하는데 특히 유용하다. 전술한 3개의 파이프라인 유니트를 사용하면, 고속 푸리에 변환(FFT) 및 유한 임펄스 응답(FIR) 필터 연산을 계산하는 것이 가능하다. 이러한 계산은 반복 프로그램 본체에서 하나 이상의 곱셈 명령과 각각의 로드 명령을 종종 필요로 한다. 평균 프로그램에서, 본 발명에 따른 데이터 처리기에 대해서는 병렬로 실행되는 명령의 수가 대략 1.8인 반면에 전술한 필터 계산에 대해서는 병렬로 실행되는 명령의 수가 사이클당 2 내지 3 명령일 수 있다. 왜냐하면, 모든 파이프라인이 충족될 수 있기 때문이다.

Claims (12)

  1. 데이터 명령을 디코딩 및 실행하는 제 1 파이프라인과;
    어드레스 명령을 디코딩 및 실행하는 제 2 파이프라인과;
    상기 파이프라인에 다중 명령을 송출하는 유니트와;
    상기 제 1 파이프라인과 접속된 제 1 레지스터 세트와;
    상기 제 2 파이프라인과 접속된 제 2 레지스터 세트를 포함하며,
    상기 제 1 및 제 2 파이프라인은 데이터를 병렬로 처리하는 것을 특징으로 하는 데이터 처리기.
  2. 제 1항에 있어서, 상기 다중명령 송출수단은 명령 워드의 비트에 따라 데이터 명령 및 어드레스 명령을 디코딩하는 것을 특징으로 하는 데이터 처리기.
  3. 제 2항에 있어서, 상기 비트는 최상위 비트인 것을 특징으로 하는 데이터 처리기.
  4. 제 1항에 있어서, 상기 두 개의 파이프라인은 동기되는 것을 특징으로 하는 데이터 처리기.
  5. 제 1항에 있어서, 상기 제 1 및 제 2 파이프라인과 병렬로 루프 명령을 실행하는 루프 파이프라인을 더 포함하는 것을 특징으로 하는 데이터 처리기.
  6. 제 5항에 있어서, 상기 파이프 라인은 동기되는 것을 특징으로 하는 데이터 처리기.
  7. 제 1항에 있어서, 상기 제 1 레지스터 세트와 상기 제 1 파이프라인 유니트사이에 접속된 제 1 데이터 전송 유니트, 상기 제 2 레지스터 세트 및 상기 제 2 파이프라인 유니트사이에 접속된 제 2 데이터 전송 유니트, 및 상기 제 1 데이터 전송 유니트를 상기 제 2 데이터 전송 유니트에 접속하는 데이터 버스를 더 포함하는 것을 특징으로 하는 데이터 처리기.
  8. 데이터 명령을 디코딩 및 실행하는 제 1 파이프라인, 어드레스 명령을 디코딩 및 실행하는 제 2 파이프라인, 다중 명령을 상기 파이프라인에 송출하는 유니트, 상기 제 1 파이프라인과 접속된 제 2 레지스터 세트, 및 상기 제 2 파이프라인과 접속된 제 2 레지스터 세트를 포함하는 데이터 처리기를 사용하여 다중 명령을 실행하기 위한 방법에 있어서,
    상기 송출 유니트에 의해 명령 스트림을 해석하는 단계와;
    상기 명령 스트림의 소정의 순서가 제공되는 경우에만 각각의 파이프라인에 대해 하나의 명령을 송출하는 단계를 포함하는데, 상기 각각의 파이프라인은 상기 명령 스트림으로부터 연관된 명령을 수신하며;
    다른 각각의 파이프라인에는 연산명령을 송출하지 않는 단계와;
    상기 파이프라인에 송출된 상기 명령을 병렬로 실행하는 단계를 포함하는 것을 특징으로하는 방법.
  9. 제 8항에 있어서, 상기 각각의 명령워드의 제 1 비트는 상기 명령이 제 1 또는 제 2 파이프라인에 송출되는지의 여부를 지시하는 것을 특징으로하는 방법.
  10. 제 8항에 있어서, 상기 순서는 어드레스 명령이 다중 명령 송출을 위하여 데이터 명령에 뒤이어 전송되어야할때 한정되는 것을 특징으로하는 방법.
  11. 제 8항에 있어서, 상기 데이터 처리기는 루프 명령을 실행하는 루프 파이프라인을 더 포함하며, 상기 순서는 다중 명령 송출을 위하여 루프 명령이 어드레스 명령 또는 데이터 명령중 한 명령에 뒤이어 전송되고 어드레스 명령이 데이터 명령에 뒤이어 전송되어야 할 때 한정되는 것을 특징으로하는 방법.
  12. 제 8항에 있어서, 호출, 리턴, 또는 점프 명령은 상기 제 1 또는 제 2 파이프라인에 송출될 수 있는 것을 특징으로하는 방법.
KR1020007002605A 1997-09-12 1998-09-04 데이터 및 어드레스 명령을 병렬로 디코딩 및 실행하기위한 데이터 처리기 KR20010023914A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/928,766 1997-09-12
US08/928,766 US6076159A (en) 1997-09-12 1997-09-12 Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
PCT/US1998/018575 WO1999014666A2 (en) 1997-09-12 1998-09-04 Data processor with parallel decoding and execution of data and address instructions

Publications (1)

Publication Number Publication Date
KR20010023914A true KR20010023914A (ko) 2001-03-26

Family

ID=25456715

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007002605A KR20010023914A (ko) 1997-09-12 1998-09-04 데이터 및 어드레스 명령을 병렬로 디코딩 및 실행하기위한 데이터 처리기

Country Status (7)

Country Link
US (1) US6076159A (ko)
EP (3) EP1019806B9 (ko)
JP (1) JP2001516918A (ko)
KR (1) KR20010023914A (ko)
DE (1) DE69821957T2 (ko)
IL (1) IL134460A0 (ko)
WO (1) WO1999014666A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7411529B2 (en) 2005-11-18 2008-08-12 Samsung Electronics Co., Ltd. Method of decoding bin values using pipeline architecture and decoding device therefor

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US7114056B2 (en) * 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US6615338B1 (en) * 1998-12-03 2003-09-02 Sun Microsystems, Inc. Clustered architecture in a VLIW processor
US6260133B1 (en) * 1999-02-08 2001-07-10 Kabushiki Kaisha Toshiba Processor having operating instruction which uses operation units in different pipelines simultaneously
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
EP1050808B1 (en) * 1999-05-03 2008-04-30 STMicroelectronics S.A. Computer instruction scheduling
EP1050807A1 (en) * 1999-05-03 2000-11-08 Sgs Thomson Microelectronics Sa Memory access in a computer memory
EP1050809A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Computer instruction dependency
EP1050818A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Computer memory access
US6393551B1 (en) * 1999-05-26 2002-05-21 Infineon Technologies North America Corp. Reducing instruction transactions in a microprocessor
US7302557B1 (en) * 1999-12-27 2007-11-27 Impact Technologies, Inc. Method and apparatus for modulo scheduled loop execution in a processor architecture
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US6748523B1 (en) * 2000-11-02 2004-06-08 Intel Corporation Hardware loops
US7472259B2 (en) * 2000-12-06 2008-12-30 Analog Devices, Inc. Multi-cycle instructions
US7069545B2 (en) * 2000-12-29 2006-06-27 Intel Corporation Quantization and compression for computation reuse
GB2381602B (en) 2001-10-12 2004-04-14 Siroyan Ltd Early resolving instructions
US6948162B2 (en) * 2002-01-09 2005-09-20 Sun Microsystems, Inc. Enhanced parallelism in trace scheduling by using renaming
US20030154363A1 (en) * 2002-02-11 2003-08-14 Soltis Donald C. Stacked register aliasing in data hazard detection to reduce circuit
KR100491323B1 (ko) * 2002-03-13 2005-05-24 (주) 네오시스트 독립 파이프라인에 의한 저장 방식을 갖는 전자 계산기
AU2003263491A1 (en) * 2002-10-11 2004-05-04 Koninklijke Philips Electronics N.V. Vliw processor with instruction address modification
US7159103B2 (en) * 2003-03-24 2007-01-02 Infineon Technologies Ag Zero-overhead loop operation in microprocessor having instruction buffer
CN101221494B (zh) * 2005-08-31 2010-12-29 上海海尔集成电路有限公司 一种8位risc微控制器构架
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
US7496771B2 (en) * 2005-11-15 2009-02-24 Mips Technologies, Inc. Processor accessing a scratch pad on-demand to reduce power consumption
US7873820B2 (en) * 2005-11-15 2011-01-18 Mips Technologies, Inc. Processor utilizing a loop buffer to reduce power consumption
US7562191B2 (en) * 2005-11-15 2009-07-14 Mips Technologies, Inc. Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
US7721071B2 (en) * 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US20080016326A1 (en) 2006-07-14 2008-01-17 Mips Technologies, Inc. Latest producer tracking in an out-of-order processor, and applications thereof
US7370178B1 (en) 2006-07-14 2008-05-06 Mips Technologies, Inc. Method for latest producer tracking in an out-of-order processor, and applications thereof
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7650465B2 (en) 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US8032734B2 (en) * 2006-09-06 2011-10-04 Mips Technologies, Inc. Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US8078846B2 (en) 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7984272B2 (en) 2007-06-27 2011-07-19 International Business Machines Corporation Design structure for single hot forward interconnect scheme for delayed execution pipelines
US7769987B2 (en) 2007-06-27 2010-08-03 International Business Machines Corporation Single hot forward interconnect scheme for delayed execution pipelines
WO2009000624A1 (en) * 2007-06-27 2008-12-31 International Business Machines Corporation Forwarding data in a processor
US7822948B2 (en) * 2008-01-03 2010-10-26 International Business Machines Corporation Apparatus, system, and method for discontiguous multiple issue of instructions
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
US9170816B2 (en) * 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
GB2466984B (en) 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
JP5590849B2 (ja) * 2009-10-08 2014-09-17 キヤノン株式会社 複数の処理モジュールを有する並列処理回路を備えるデータ処理装置、その制御装置、およびその制御方法、プログラム
GB2485538B (en) * 2010-11-16 2013-12-25 Nds Ltd Obfuscated hardware multi-threading
US9158696B2 (en) * 2011-12-29 2015-10-13 Intel Corporation Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US10344615B2 (en) * 2017-06-22 2019-07-09 General Electric Company Method and system for schedule predictive lead compensation
GB2596872B (en) * 2020-07-10 2022-12-14 Graphcore Ltd Handling injected instructions in a processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63253433A (ja) * 1987-04-10 1988-10-20 Hitachi Ltd 演算処理装置
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
US5485629A (en) * 1993-01-22 1996-01-16 Intel Corporation Method and apparatus for executing control flow instructions in a control flow pipeline in parallel with arithmetic instructions being executed in arithmetic pipelines
EP1102166B1 (en) * 1993-11-05 2003-05-21 Intergraph Corporation Software scheduled superscalar computer architecture
JP2987311B2 (ja) * 1995-05-12 1999-12-06 松下電器産業株式会社 プロセッサ及び翻訳装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7411529B2 (en) 2005-11-18 2008-08-12 Samsung Electronics Co., Ltd. Method of decoding bin values using pipeline architecture and decoding device therefor

Also Published As

Publication number Publication date
US6076159A (en) 2000-06-13
EP1455271A2 (en) 2004-09-08
EP1455271A3 (en) 2005-03-09
EP1019806B9 (en) 2004-09-08
DE69821957D1 (de) 2004-04-01
WO1999014666A2 (en) 1999-03-25
EP1019806A2 (en) 2000-07-19
IL134460A0 (en) 2001-04-30
EP1406165A3 (en) 2004-12-01
EP1406165B1 (en) 2012-03-21
WO1999014666A3 (en) 1999-07-29
JP2001516918A (ja) 2001-10-02
EP1455271B1 (en) 2011-10-26
DE69821957T2 (de) 2004-12-09
EP1406165A2 (en) 2004-04-07
EP1019806B1 (en) 2004-02-25

Similar Documents

Publication Publication Date Title
KR20010023914A (ko) 데이터 및 어드레스 명령을 병렬로 디코딩 및 실행하기위한 데이터 처리기
US4755966A (en) Bidirectional branch prediction and optimization
US5978838A (en) Coordination and synchronization of an asymmetric, single-chip, dual multiprocessor
USH1291H (en) Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
US5752071A (en) Function coprocessor
KR20010030587A (ko) 데이터 처리장치
KR19990044957A (ko) 데이터 처리기에서의 후속 명령 처리에 영향을 미치는 방법 및장치
JPH11249897A (ja) Nウェイ分岐を有するスーパースカラまたは超長命令語コンピュータにおける次の命令を選択する方法および装置
US7779240B2 (en) System and method for reducing power consumption in a data processor having a clustered architecture
US6049860A (en) Pipelined floating point stores
JP3573506B2 (ja) 述語、及びブール式を解くためのコンピュータ・システム、及び方法
US6009515A (en) Digital data processing system including efficient arrangement to support branching within trap shadows
JP3790626B2 (ja) デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置
CN100507835C (zh) 用于改善按次序的处理器的性能的方法和系统
US5428811A (en) Interface between a register file which arbitrates between a number of single cycle and multiple cycle functional units
JPH10222367A (ja) ネスト可能な遅延分岐命令を有するマイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法
JP2001142701A (ja) プロセッサにおけるパイプライン制御用メカニズムおよび方法
JP2643087B2 (ja) プログラム処理方法及びコンピュータ・システム
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
JPH04238537A (ja) 並列パイプライン命令処理装置
EP1050805B1 (en) Transfer of guard values in a computer system
JP2003316598A (ja) 高信頼性モード動作併用長命令実行プロセッサ
CN112579168B (zh) 指令执行单元、处理器以及信号处理方法
JP3601758B2 (ja) 情報処理装置及びその処理方法
JP3743155B2 (ja) パイプライン制御型計算機

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid