KR100227276B1 - 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서 - Google Patents

단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서 Download PDF

Info

Publication number
KR100227276B1
KR100227276B1 KR1019970017466A KR19970017466A KR100227276B1 KR 100227276 B1 KR100227276 B1 KR 100227276B1 KR 1019970017466 A KR1019970017466 A KR 1019970017466A KR 19970017466 A KR19970017466 A KR 19970017466A KR 100227276 B1 KR100227276 B1 KR 100227276B1
Authority
KR
South Korea
Prior art keywords
instruction
micro
field
entry
operand
Prior art date
Application number
KR1019970017466A
Other languages
English (en)
Other versions
KR19980069764A (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 KR19980069764A publication Critical patent/KR19980069764A/ko
Application granted granted Critical
Publication of KR100227276B1 publication Critical patent/KR100227276B1/ko

Links

Images

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/22Microcontrol or microprogram arrangements
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

본 발명에 따른 프로세서의 명령 디코더는 글로벌 필드, 오퍼랜드 필드 및 일련의 마이크로 명령을 포함하는 디코드 버퍼 엔트리를 생성하여 명령을 디코딩한다. 각각의 마이크로 명령은 관련 실행 유닛이 단일 클럭 사이클로 실행할 수 있는 연산을 나타낸다. 스케줄러는 가능한 병렬 및 역차 실행을 위한 실행 유닛에 하나 이상의 엔트리로부터의 마이크로 명령을 발령한다. 각각의 실행 유닛은 일반적으로 단일 클럭 사이클로 연산을 완료하고, 파이프 라인을 봉쇄하거나 다중 스테이지에 대한 별도의 디코딩의 필요성이 없는 명령을 모니터하지 않는다. 글러벌 필드는 어떤 마이크로 명령이 최초로 실행되는지를 나타낸다. 또한, 마이크로 명령은 실행 순서를 나타내는 필드를 갖는다. 상기 스케줄러는 상기 글로벌 필드 및 마이크로 명령으로 표시되는 순서로 연산을 발령한다. 명령에 대한 최종 연산이 완료되면, 상기 명령은 상기 디코드 버퍼로부터 회수 및 제거된다.

Description

단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서
본 발명은 프로세서 및 명령의 실행을 스케줄링하고 제어하는 회로 및 그 방법에 관한 것이다.
일반적으로, 단일 명령 다중 데이타(SIMD) 프로세서에는 다중 데이타 엘리먼트의 병렬조작을 위한 단일 순차 프로그램 스레드(thread)가 이용된다. 상기 다중 데이타 엘리먼트는 함께 집단화될 시에는 단일 "벡터" 레지스터에 저장가능한 "벡터"를 형성한다. 벡터 레지스터는 SIMD 명령을 위한 오퍼랜드(operand)인 벡터를 수용하기 위해 넓은 데이타 폭을 갖는다. 벡터를 처리함으로써 각각의 벡터 오퍼랜드가 다중 병렬 계산, 예컨대 각 데이타 엘리먼트당 한번의 계산을 수행하기 때문에, 처리능력이 증가한다.
초스칼라(superscalar) 아키텍처는 프로세서의 처리능력을 증가시키기 위한 또다른 방법을 제공한다. 상기 초스칼라 프로세서는 순차 프로그램 스레드를 수행하지만, 독립 명령의 병렬 및 순서역행 실행을 허용한다. 상기 병렬 및 순서역행 실행은 처리회로가 아이들 상태가 되는 시간을 즐이므로써 보다 향상된 성능을 제공한다. 통상적으로, 초스칼라 프로세서는 병렬 동작가능한 스케줄러 및 다중 실행 유닛을 포함한다. 매 클럭 사이클마다. 상기 스케줄러는 상기 다중 실행 유닛에 발생하기 위한 프로그램 스레드 다중 명령으로부터 선택을 시도한다. 또한, 상기 스케줄러는 상기 실행 유닛의 유용성 및 오퍼랜드의 의존성을 체크하고, 필요한 실행 유닛 및 오퍼랜드가 이용가능할 경우에만 명령을 내린다.
상기 실행 유닛은 종종 명령에 따른 클럭 사이클의 수로 명령을 수행하기 위해 다수의 클럭 사이클을 필요로 한다. 통상, 실행 유닛은 다중 스테이지를 갖는 파이프 라인으로서 동작하고, 상기 스케줄러는 파이프 라인의 봉쇄로 인해 제 1 스테이지에서 이전에 발령된 명령이 유지되는 경우, 초기 스테이지에 명령을 내릴 수 없게 된다. 파이프 라인에 있어서, 상이한 데이타 및 자원이 상이한 스테이지에서 요구될 수도 있으며, 상기 데이타 및 자원의 추가 유용성으로 상기 스케줄러가 실행 유닛에 명령을 내리는 시기를 결정하는 것은 어렵다. 따라서, 스케줄러는 종종 필용한 자원 및 데이타가 이용될 수 있는지를 완전하게 평가하지 않고 명령을 내리는 수도 있다.
실행 파이프 라인은 여러가지 형태의 명령의 수행을 모니터하기 위해 복잡한 회로를 필요로 할 수도 있다. 상기 스케줄러가 실행 파이프 라인의 초기 스테이지에 명령을 내리는 경우, 상기 실행 유닛은 상기 스테이지에서의 적당한 작동을 결정하기 위해 각각의 스테이지에서 파라미터를 디코딩한다. 또한, 명령의 레이턴시(latency)(즉, 스테이지의 수)가 변화하여 실행 유닛의 복잡도가 증가하게 된다. 명령 세트, 심지어는 감소 명령세트 및 계산(RISC) 명령세트가 가장 단순한 명령으로서 동일한 시간에 실행될 수 없는 명령을 포함하기 때문에, 명령당 균일한 실행 사이클 수를 이용한다는 것은 실현 불가능하다는 문제점이 있었다.
따라서, 본 발명의 목적은 상기한 문제점들을 해결하기 위해 보다 단순한 구조의 프로세서 아키텍처 및 그 프로세서의 동작 방법을 제공하는데 있다.
제1도는 본 발명의 일 실시예에 따른 프로세서를 나타낸 블록도.
제2도는 제1도의 프로세서의 디코드 버퍼의 엔트리 내용을 나타낸 도면.
제3도는 제2도의 엔트리에 대한 마이크로 명령의 구문(syntax)을 나타낸 도면.
제4도는 본 발명의 일 실시예에 따른 프로세서의 데이타 패스(data path)를 나타낸 블록도.
제5(a)도, 제5(b)도, 제5(c)도, 제5(d)도, 제5(e)도, 제5(f)도, 제5(g)도, 제5(h)도, 제5(i)도, 및 제5(j)도는 본 발명의 일 실시예에 따른 명령의 실행을 위한 단일 스테이지 동작의 순서를 예시한 도면.
* 도면의 주요부분에 대한 부호의 설명
100 : 프로세서 110 : 명령 페치 유닛
120 : 명령 디코더 130 : 디코드 버퍼
142 : 오퍼랜드 종속 로직 144 : 명령 종속 로직
146 : 명령 내림 로직 150 : 데이타 패스
151 : 승산기 154 : 로드/저장 유닛
155 : 레지스터 파일 159 : 누산기
상기한 목적을 달성하기 위한 본 발명의 일면에 따라, 프로세서가 제공되고, 상기 프로세서는 단일 사이클 연산을 완료하기 위한 다수의 실행 유닛과; 마이크로 명령의 저장을 위한 다수의 마이크로 명령 필드를 각각 구비하는 다수의 엔트리로 분할되는 디코드 버퍼와; 명령을 디코딩하기 위한 디코더를 구비하고, 디코딩된 각각의 명령의 경우, 상기 디코더는 상기 명령과 관련한 엔트리의 상기 마이크로 명령 필드에, 프로세서에 의한 상기 명령의 실행중에 상기 실행 유닛들중 한 유닛에 의해 실행될 연산을 식별해주는 하나 이상의 마이크로 명령을 기입하는 것을 특징으로 한다.
본 발명의 상기 특성들에 따라, 상기 프로세서의 명령 디코더는 엔트리가 일련의 마이크로 명령을 포함하는 디코드 버퍼의 상기 엔트리를 생성함으로써 명령을 디코딩한다. 각각의 마이크로 명령은 관련 실행 유닛이 통상 단일 프로세서 사이클로 동작할 수 있는 단일 스테이지 동작을 나타낸다. 디코드 버퍼에 연결된 스케줄러는 가능한 병렬및 순서역행 실행을 위한 실행 유닛에 하나 이상의 엔트리로부터 상기 동작을 지령한다. 상기 실행 유닛은 각 실행 유닛이 단일 스테이지 동작을 완료하고, 다중 스테이지에 대한 분리된 디코딩 동작을 수행하거나 파이프 라인을 봉쇄할 수도 있는 명령을 모니터할 필요가 없기 때문에 비교적 크기가 작고 구조가 단순하다.
본 발명의 또다른 일면에 따라, 각각의 엔트리는 예컨대, 어떠한 동작이 가장 먼저 실행되어야 하는지를 나타내는 글로벌 필드(global Field)를 갖는다. 또한, 각각의 마이크로 명령은 그 다음번에는 어떠한 동작이 실행되는지를 나타낸 필드를 갖는다. 스케줄러는 상기 글로벌 필드 및 마이크로 명령에 의해 지시된 순서에 따라 동작을 지령한다. 명령에 대한 최종 동작이 완료되면, 그 명령은 철회되고 상기 디코드 버퍼로부터 제거된다.
이하, 첨부한 도면을 참조로 하여 본 발명의 바람직한 실시예를 상세히 설명하며, 도면 전체를 통하여 동일한 부분에는 동일한 도면부호를 사용하기로 한다.
제1도는 본 발명의 일 실시예에 따른 프로세서(100)의 내부 구성을 블록도로서 나타낸 것이다. 상기 프로세서(100)는 명령 페치 유닛(110)으로부터의 명령을 디코딩하고, 상기 디코딩된 엔트리를 디코드 버퍼(130)에 기입하는 명령 디코더(120)를 구비한다. 본 발명의 일 실시예에 따라, 각각의 엔트리는 마이크로 명령이 관련 명령을 완료하도록 실행되어야 하는 동작(거의 단일 사이클 동작)을 나타내는 일련의 마이크로 명령을 저장한다. 상기 각각의 마이크로 명령은 실행 유닛(151 내지 154)에 의한 동작 또는 레지스터 파일(155)의 억세스에 대응한다. 판독포트(156) 및 기입 포트(157)는 상기 레지스터 파일(155)에 억세스하는 판독 및 기입 동작을 수행한다
또한, 상기 프로세서(100)는 각 사이클이 상기 디코드 버퍼(130)로부터 다중마이크로 명령에 대한 선택 및 지령을 시도하는 스케줄러(140)를 구비한다. 상기 스케줄러(140)는 명령 발령 로직(146), 오퍼랜드 종속 로직(142) 및 명령 종속 로직(144)을 구비한다. 상기 명령 발령 로직(146)은 마이크로 명령을 선택하고 적절한 실행 유닛에 상기 마이크로 명령을 내리며, 순서 역행 및 병렬 실행을 허용하므로써 실행 유닛의 이용도를 증가시키고 프로세서의 성능을 향상시킨다. 상기 오퍼랜드 종속 로직(142)은 상기 디코드 버퍼(130)의 엔트리를 갖는 특수 명령이 오퍼랜드의 종속성을 갖거나, 그렇지 아니면, 상기 명령이 순서 역행으로 실행되지 않도록 선행 연산의 결과치에 의존하는지의 여부를 판정한다. 상기 명령 종속 로직(144)은 동일 엔트리의 마이크로 명령에 대한 원하는 상대적 순서를 유지하도록 특수 마이크로 명령이 내려지는 것을 못하게 하고, 실행 유닛 사용시 충돌을 피하기 위해 특수 엔트리로부터의 시작 마이크로 명령이 내려지는 것을 못하게 한다.
상기 프로세서(100)의 전형적인 실시예로서는 발명의 명칭이 "Single Instruction Multiple Data Processing in a Multimedia Single Processor"인 공동 권리 소유의 미국특허출원 제 08/699,677호(본 발명에서 참조로 인용됨)에 개시된 명령을 갖는 단일 명령 다중 데이타(SIMD) 프로세서를 들 수 있다. 부록 A에는 전형적인 실시예에 대한 명령 세트가 실려 있다.
제2도는 제1도의 전형적인 실시예의 디코드 버퍼(130)에 저장된 엔트리의 포맷을 나타낸 것이다. 상기 전형적인 실시예에 따른 각각의 엔트리는 글로벌 필드, 오퍼랜드 필드, 마이크로 명령 필드 MULT, ALU1, ALU2, LSU 및 WRITE 등을 포함하고 있다. 상기 필드 MULT, ALU1, ALU2, LSU 및 WRITE는 각각의 마이크로 명령 MULT_
Figure kpo00002
I, ALU1_
Figure kpo00003
I, ALU2_
Figure kpo00004
I, LSU_
Figure kpo00005
I 및 WRITE_
Figure kpo00006
I를 위한 것이다. 상기 마이크로 명령 MULT_
Figure kpo00007
I, ALU1_
Figure kpo00008
I, ALU2_
Figure kpo00009
I, LSU_
Figure kpo00010
I 및 WRITE_
Figure kpo00011
I의 전형적인 구문은 제3도에 예시되며, 이하에서 설명하기로 한다.
상기 글로벌 필드는 엔트리가 실행될 명령을 의미하는지의 여부를 나타내는 필드 VALID, 상기 명령이 프로그램 순서의 역순으로 실행될 수 있는지의 여부를 나타내는 필드 IN_ORDER, 및 상기 필드 MULT, ALU1, ALU2, LSU 및 WRITE들중 어느 필드가 최초로 실행될 마이크로 명령을 포함하고 있는지를 나타내는 필드 START로 구성된다. 상기 오퍼랜드 필드 A, B, C, 및 D는 명령에 대한 4개의 오퍼랜드까지 기술한다. 오퍼랜드 필드 A 및 B는 사용시 최초 마이크로 명령에 요구되는 소스 오퍼랜드를 나타낸다. 오퍼랜드 필드 D는 사용시 목적지 오퍼랜드를 나타내고, 오퍼랜드 필드 C는 사용시 명령에 따른 소스 또는 목적지 오퍼랜드를 나타낸다. 전형적인 실시예에 있어서, 상기 오퍼랜드 필드 C는 대부분의 경우 목적지 레지스터를 나타낸다. 예컨대, 셔플(shuffle) 및 언셔플(unshuffle)명령은 두개의 소스 벡터 오퍼랜드 A 및 B로부터의 데이타 엘리먼트들을 혼합하고, 그 결과를 두개의 목적지 오퍼랜드 C 및 D에 저장한다. 두배 크기의 결과를 복구 또는 발생시킨 명령은 두개의 목적지 오퍼랜드 C 및 D를 이용할 수도 있다. 또한, 일부 엘리먼트 이동 명령은 두개의 목적지 오퍼랜드를 갖는다. 저장 또는 승산 및 가산 명령에 대해, 오퍼랜드 C는 최초 마이크로 명령이 예컨대, 저장 오퍼랜드 또는 가수(加數)를 실행한 후에 요구되는 소스 오퍼랜드를 나타낸다.
각각의 오퍼랜드 필드 A, B, C, 및 D는 오퍼랜드를 확인하는 필드 SELECT 및 필드 REG_NUM을 포함한다. 오퍼랜드는 레지스터 파일(155)의 스칼라 또는 벡터 레지스터, 데이타 패스(150)의 누산기(159), 또는 상태 또는 제어 레지스터가 될 수도 있다. 또한, 소스 오퍼랜드는 실행 유닛에 의해 선택된 상수값 또는 명령의 즉석값일 수도 있다. 상기 필드 SELECT는 오퍼랜드의 클래스를 나타낸다. 클래스들은 레지스터 파일(155)의 입출력 오퍼랜드, 즉석 파일의 출력 오퍼랜드, 및 실행 유닛 또는 누산기(159)의 입출력 오퍼랜드를 포함한다. 상기 필드 REG_NUM은 오퍼랜드 클래스가 레지스터인 경우의 레지스터 번호이다. 전형적인 실시예에 있어서, 레지스터 번호는 우위 뱅크의 32 288비트 벡터 레지스터, 후위 뱅크의 32 288비트 벡터 레지스터, 32 32비트 스칼라 레지스터, 및 32 특수 레지스터를 포함하는 레지스터 파일(155)의 각각의 레지스터를 확인하는 7비트 값이다.
전형적인 실시예에 있어서, 누산기(159)는 고 벡터값 및 저 벡터값을 저장하는 두배 크기의 벡터 레지스터이다. 필드 ACC는 소스 또는 목적지 오퍼랜드로서 상기 누산기(159)로부터 고 벡터 및 저 벡터를 확인한다.
필드 IMMEDIATE는 3 가지의 서브-필드 IMM_VALID, LONG_IMM 및 IMM으로 구성된다. 상기 필드 IMM_VALID는 관련 명령이 즉석값을 갖는지의 여부를 나타낸다. 만약, 상기 명령이 즉석값을 갖고 있지 않다면, 상기 필드 LONG_IMM은 상기 즉석값의 길이를 나타내고, 상기 필드 IMM은 즉석값을 포함한다.
또한, 오퍼랜드 필드는 상기 전형적인 실시예로 인해 벡터 레지스터 폭의 두배를 갖고 두개이 클럭 사이클을 요구할 수도 있는 두배 크기의 오퍼랜드를 취할 수 있기 때문에, 판독 동작을 나타내고 추종하기 위한 판독 파라미터를 포함한다.
명령은 상기 스케줄러(140)가 관련 엔트리로부터 시작 마이크로 명령(들)을 내릴 때 발령된다. 상기 스케줄러(140)가 발령될 명령을 선택하는 클럭 사이클에 있어서, 상기 스케줄러(140)는 필요한 경우 소스 오퍼랜드 A 및 B를 취할 수 있다. 상기 스케줄러(140)는 명령 엔트리의 필드 IN_ORDER로 인해 역차(逆次) 실행 또는 명령의 소스 레지스터에 대한 완성되지 않은 구 명령의 기입이 금지되지 않는 경우에 역차 명령을 발령할 수 있다. 상기 오퍼랜드 종속 로직(142)은 유효 소스인 경우의 각 엔트리의 필드 A, B 및 C를 유효 목적지인 경우의 구 명령의 오퍼랜드 필드 C 및 D를 비교하고, 정합이 발견되는 경우 시작 마이크로 명령이 발령되는 것을 방지한다. 각 필드가 유효한 소스 또는 유효한 목적지인지의 여부는 엔트리의 유효한 마이크로 명령 또는 오퍼랜드로부터 결정될 수 있다.
본 발명의 전형적인 실시예에 있어서, 디코드 버퍼(130)는 엔트리 I0-I3를 갖는데, 여기서, I0는 가장 오래된 명령(즉, 프로그램 순서상 최초 명령)에 대응하고, I3는 가장 최신의 명령(즉, 프로그램 순서상 최종 명령)에 대응한다. 스케줄러(140)의 오퍼랜드 종속 로직(142)은 엔트리 I3의 소스 오퍼랜드를 엔트리 I0-I2의 목적지 오퍼랜드와 비교한다. 엔트리 I3의 소스 오퍼랜드들중 그 어느 것도 엔트리 I0-I2에서 표시된 그 어떤 목적지 오퍼랜드와 동일하지 않고 필드 IN_ORDER가 역차 실행을 허용하는 경우, 상기 엔트리 I3관련 명령은 발령하기에 적당하다. 이와 찬가지로, 오퍼랜드 종속 로직(142)은 엔트리 I2의 소스 오퍼랜드를 엔트리 I0 및 I1의 목적지 오퍼랜드와 비교하고, 엔트리 I1의 소스 오퍼랜드를 엔트리 I0의 목적지 오퍼랜드와 비교하여 엔트리 I2 및 I1에 대응하는 명령이 발령되기 적당한 것인지를 결정한다.
소스 오퍼랜드를 취한 후, 엔트리의 유효 마이크로 명령과 관련한 동작은 엔트리에 의해 표시된 순서로 실행된다. 일반적인 최종 동작은 결과치를 레지스터 파일(155)에 기입하는 동작이다. 일단, 상기 최종 동작이 완료되면, 명령은 디코드 버퍼(130)로부터의 관련 엔트리를 제거함으로써 회수된다. 본 발명의 전형적인 실시예에 있어서, 디코드 버퍼(130)는 어떤 명령이 회수될 수 있도록 접을 수 있고, 한 명령이 회수되면, 상기 디코드 버퍼(130)의 보다 새로운 엔트리가 이동하여 회수된 명령의 엔트리를 채우고 디코더(120)로부터의 가장 최신 엔트리를 위한 공간을 남겨 둔다. 이와는 달리, 상기 디코드 버퍼(130)는 모든 구 명령(즉, 프로그램 순서상에서 선행하는 명령)이 회수된 후에만, 명령이 회수되는 선입선출(FIFO)버퍼이다.
제4도는 제2도 및 제3도에 도시된 엔트리 구문에 적합한 데이타 패스(150)를 블록도로서 예시한 것이다. 상기 데이타 패스(150)는 승산기(151), 산술 논리유닛(152,153), 로드/저장 유닛(154), 레지스터 파일(155)을 구비한다. 상기 레지스터 파일(155)의 판독 포트(156)는 멀티플렉서(420,425)를 통해 승산기(151) 및 산술 논리유닛(154)에 연결되고, 멀티플렉서(460)를 통해 로드/저장 유닛(154)에 연결된다. 소스 오퍼랜드를 실행 유닛(151 내지 154) 또는 누산기(159)에 공급하는 멀티플렉서(420,425)는 상기 레지스터 파일(155)로부터 판독된 데이타중에서, 버퍼(130)로부터의 즉석값을, 상기 로드/저장 유닛(154)으로부터의 값을, 그리고 상기 멜티플렉서(450,425)를 통해 산술 논리유닛(152,153) 또는 누산기(159)로부터의 출력값을 선택한다. 상기 실행 유닛(151 내지 153)의 입력 값은 상기 멀티플렉서(420,425)로부터 출력된 값 또는 각각의 실행 유닛(151 내지 153)의 입력 포트에서 선택된 값이다. 상기 멀티플렉서(460)는 멀티플렉서(420,425)로부터의 출력 신호중에서, 레지스터 파일(155)로부터 판독된 값, 및 멀티플렉서(450,455)를 통해 산술 논리유닛(152) 또는 누산기(159)로부터 판독된 값을 선택한다. 메모리 억세스의 경우, 상기 로드/저장 유닛(154)은 어드레스로서 즉석값, 소스 오퍼랜드 또는 상기 산술 논리유닛(152)에 의해 계산된 유효 어드레스를 이용한다. 저장 동작에 있어서, 저장 오퍼랜드 B 및 C 또는 즉석값은 저장될 값을 나타낸다.
스케줄러(140)는 사용시 필요한 소스 오퍼랜드 A 및 B를 취함으로써 명령을 발령한다. 클럭 사이클 이후에 엔트리내의 글로벌 필드 START로 표시되는 시작 마이크로 명령이 실행된다. 오퍼랜드 C가 유효 소스 오퍼랜드인 경우, 상기 오퍼랜드 C는 마이크로 명령에 의해 요구될 때 취해진다. 상기 레지스터 파일(155)은 두개의 오퍼랜드가 클럭 사이클당 상기 레지스터 파일(155)로부터 취해질 수 있도록 두개의 판독 포트를 가지며, 상기 스케줄러(140)는 오퍼랜드 C를 필요로 하는 마이크로 명령이 발령되는 동일 사이클의 두개의 소스 오퍼랜드를 요구하는 명령을 발령할 수 없다.
상기 승산기(151), 산술 논리유닛(152,153), 로드/저장 유닛(154), 및 레지스터 파일(155)은 각각 마이크로 명령 MULT_
Figure kpo00012
I, ALU1_
Figure kpo00013
I, ALU2_
Figure kpo00014
I, LSU_
Figure kpo00015
I로 표시되는 연산들을 실행한다. 기입 포트(157), 누산기(159)용 기입 회로 및 특정 레지스터들은 마이크로 명령 WRITE_
Figure kpo00016
I로 표시되는 연산을 실행한다. 상기 마이크로 명령 MULT_
Figure kpo00017
I, ALU1_
Figure kpo00018
I, ALU2_
Figure kpo00019
I, LSU_
Figure kpo00020
I 및 WRITE_
Figure kpo00021
I의 구문은 상기 표시된 연산을 실행하는 실행 유닛의 능력에 맞게 작성된다. 제3도는 전형적인 실시예에 따른 마이크로 명령 MULT_
Figure kpo00022
I, ALU1_
Figure kpo00023
I, ALU2_
Figure kpo00024
I, LSU_
Figure kpo00025
I 및 WRITE_
Figure kpo00026
I의 구문을 예시한 것이고, 제4도에서 예시된 데이타 패스(150)와 연관시켜 기술된다. 마이크로 명령 MULT는 필드 MULT_NEXT, MULT_DTYPE, MULT_VALID로 구성된다. 상기 필드 MULT_VALID는 마이크로 명령이 실행되어야 하는지와 승산기(151)를 필요로 하는 승산 또는 승산-누산과 같은 명령을 위해 설정되어야 하는지의 여부를 나타낸다. 상기 필드 MULT_DTYPE는 상기 승산기(151)에 의해 처리되는 오퍼랜드의 데이타 엘리먼트의 데이타 형태를 나타낸다. 제4도의 실시예에 있어서, 상기 승산기(151)는 32-비트의 부동 소수점 데이타 형태 또는 8, 9, 16 또는 32-비트의 정수 데이타 형태를 갖는 데이타 엘리먼트들을 승산한다. 또한, 상기 승산기(151)는 8-비트 데이타 엘리먼트에 대해 병렬 32 승산연산을 실행한다. "Parallel Multiplier That Supports Multiple Numbers with Different Bit Lengths"라는 발명의 명칭으로 1996년 10월 21일자로 출원된 미국특허출원 제 08/734,277 호에는 적당한 승산기가 개시되어 있고, 상기 미국특허출원의 전체내용은 본 발명에서 참조로 인용된다.
단일 클럭 사이클에 있어서, 상기 승산기(151)는 정수 데이타 형태의 경우 소스 오퍼랜드의 데이타 폭의 약 두배를 갖는 부분 합 및 자리올림 신호의 형태로 된 곱 신호를 발생시킨다. 상기 부분 합 및 자리올립 신호는 상기 곱을 결정하기 위해서는 반드시 가산되어야 한다. 상기 필드 MULT_NEXT는 동일 엔트리의 마이크로 명령이 다음번 사이클에서 실행되어야 하는지의 여부를 나타낸다. 부동 소수점 데이타 형태의 경우, 상기 산술 로직 유닛(152)은 상기 마이크로 명령 ALU1_
Figure kpo00027
I을 실행하고, 가수부의 곱으로부터 발생된 합산 및 자리올림 신호의 최상위비트들을 가산한다. 정수 데이타 형태의 경우, 상기 산술 로직 유닛(152,153)은 상기 승산기(151)로부터 합산 및 자리올림을 하기 위해 마이크로 명령 ALU1_
Figure kpo00028
I 및 ALU2_
Figure kpo00029
I를 병렬로 실행한다. 또한, 상기 산술 로직 유닛(152)은 합산 및 자리올림 신호의 최하위 비트들을 가산하고, 산술 로직 유닛(153)은 합산 및 자리올림 신호의 최상위 비트들을 가산한다. 승산 및 가산 명령의 경우, 오퍼랜드 필드 C는 다음 번 사이클동안 상기 합산 및 자리올림 신호와의 조합을 위한 상기 마이크로 명령 MULT_
Figure kpo00030
I의 실행중에 판독된 값이다.
상기 마이크로 명령 ALU1_
Figure kpo00031
I는 필드 ALU1_OP, ALU1_NEXT, ALU1_D TYPE 및 ALU1_VALID로 구성된다. 이와 마찬가지로, 상기 마이크로 명령 ALU2_
Figure kpo00032
I는 필드 ALU2_OP, ALU2_NEXT, ALU2_DTYPE 및 ALU2_VALID로 구성된다. 상기 필드 ALU1_VALID 및 ALU2_VALID, ALU1_DTYPE 및 ALU2_DTYPE과, ALU1_NEXT 및 ALU2_NEXT는 각 마이크로 명령의 실행, 상기 오퍼랜드의 데이타 형태 및 상기 각 연산이후의 마이크로 명령을 요구하는지의 여부를 각각 나타낸다. 상기 필드 ALU1_OP, ALU2_OP는 각각의 산술 논리 유닛(152 및 153)이 실행하는 연산을 선택하는 연산 코드를 나타낸다.
전형적인 실시예에 있어서, 상기 산술 논리 유닛(152)은 가산기, 상기 산술논리유닛(153)에서의 가산 연산을 위해 부동 소수점 데이타 엘리먼트의 가수부를 정렬하는 얼라이너, 데이타 엘리먼트에 대한 좌우측 자리이동 논리연산을 위한 시프터, 및 NOT, AND 및 OR과 같은 논리연산을 수행하는 논리 클래스 명령을 실행하기 위한 회로를 포함한다. 또한, 상기 산술 논리 유닛(152)은 부록 A의 표 7에 열거된 명령의 내부-엘리먼트 이동 클래스를 실행하는 데이타 벡터내의 데이타 엘리먼트를 셔플링 또는 재배열하기 위한 회로를 포함할 수도 있다. 상기 산술 논리유닛(153)은 가산기와, 부동 소수점 데이타 에릴먼트의 정규화 및 라운딩 로직을 포함한다. "Execution Unit Data Paths a Vector Processor"라는 발명의 명칭으로 공동 출원된 미국특허출원 제 UNKNOWN1(attorney docket No. M-6479)에는 본 발명의 전형적인 실시예에 적합한 실행유닛이 개시되어 있고, 그 전체 내용이 본 명세서에 참고로 언급된다.
상기 LSU_
Figure kpo00033
I는 필드 LSU_OP, LSU_NEXT, LSU_DTYPE, LSU_VALID 및 POST_INC로 구성된다. 상기 필드 LSU_VALID는 명령이 실행을 요구하는지의 여부를 나타낸다. 필드 LSU_OP는 상기 로드/저장 유닛(154)의 연산 코드를 포함하고, 상기 로드/저장 유닛(154)이 로드, 저장 또는 상기 로드/저장 유닛(154)이 마이크로 명령 LSU-
Figure kpo00034
I를 실행할 때의 캐시 연산을 수행하는지의 여부를 나타낸다. 상기 로드/저장 유닛(154)은 부록 A의 표 9에 열거된 로드/저장 클래스 명령에 대해 요구되고, 레지스터가 유효 어드레스를 제공하고 상기 산술로직 유닛(152)이 상기 유효 어드레스를 계산하는 어드레싱 모드를 지원한다. 상기 필드 POST_INC는 상기 계산이후 어드레스 계산시 사용된 레지스터가 증분되어야 하는지의 여부를 나타낸다. 상기 필드 LSU_DTYPE은 데이타 엘리먼트의 데이타 형태를 나타낸다. 전형적인 실시예에 있어서, 상기 로드/저장 유닛(154)은 256비트 포맷의 데이타 벡터를 갖는 데이타 캐시에 연결되지만, 데이타 패스(150)는 32 9비트 데이타 엘리먼트를 수용하기 위한 288비트 벡터 레지스터를 갖는다. 로드 연산의 경우, 상기 로드/저장 유닛(154)은 판독 버퍼의 288비트 데이타 벡터를 생성하기 위해 상기 데이타 캐시로부터 256비트 데이타 값을 재구성한다. 이때, 상기 로드/저장 유닛(154)은 이전에 발령된 마이크로 명령 LSI_
Figure kpo00035
I로부터 초래된 로드가 데이타를 복귀시키고, 동일 엔트리의 마이크로 명령 WRITE_
Figure kpo00036
I가 현재 발령되기에 적당하여야 한다는 사실을 알린다. 저장 연산의 경우, 데이타 캐시 시스템은 256비트 형식으로된 288비트를 재구성한다.
"Load and Store Unit for a Vector Processor"라는 발명의 명칭으로 공동 출원된 미국특허출원 제 UNKNOWN2(attorney docket No. M-4680)에는 본 발명의 전형적인 실시예에 적합한 로드/저장 유닛이 개시되어 있고, 그 전체 내용이 본명세서에 참고로 언급된다. 승산기(151), 산술 논리유닛(152) 및 산술 논리유닛(153)과는 달리, 상기 로드/저장 유닛(154)은 단일 클럭 사이클 이후 항상 연산을 완료하거나 결과를 제공하는 것은 아니다. 로드 연산은 상기 캐시 시스템으로부터 데이타를 판독하거나 기입하는데 필요한 시간에 의존하는 레이턴시(latency)를 갖는다. 예컨대, 캐시 미스(cache miss)가 발생하면, 시간이 더 오래 걸린다. 상기 필드 LSU_NEXT는 마이크로 명령 LSI_
Figure kpo00037
I를 상기 로드/저장 유닛(154)에 발령한 후에는 스케줄러(140)가 무슨 동작을 해야하는지를 나타낸다. 대부분의 저장연산의 경우, 상기 필드 LSU_NEXT는 상기 로드/저장 유닛(154)이 연산을 완료한후 가능한한 명령이 완료 및 회수되도록 상기 마이크로 명령 LSI_
Figure kpo00038
I가 발령된후 상기 스케줄러(140)가 상기 로드/저장 연산을 완전한 것으로 취급해야 하는지를 나타낸다. 로드 연산의 경우, 상기 필드 LSU_NEXT는 상기 로드된 값을 그 목적지에 기입하기 위해 상기 마이크로 명령 WRITE_
Figure kpo00039
I를 발령하기 전에 상기 스케줄러(140)가 데이타를 복귀하기 위해 상기 로드/저장 유닛(154)을 대기해야 하는지의 여부를 나타낸다.
상기 마이크로 명령 WRITE_
Figure kpo00040
I는 기입 연산을 나타내며, 필드 WPORT_OP, WPORT_RD, WPORT2_RD, WPORT_ACC, WPORT_VALID 및 MISC로 구성된다. 상기 필드 WPORT_VALID는 수행될 기입 연산이 존재하는지의 여부를 나타낸다. 상기 필드 WPORT_OP는 상기 기입 연산을 위한 소스 및 목적지를 나타낸다. 전형적인 실시예에 있어서의 가능한한 소스들은 상기 산술 논리유닛(152), 상기 산술 논리유닛(153), 상기 산술 논리유닛(152 및 153), 누산기(159) 및 판독 포트(156)의 출력 포트를 구비한다. 상기 필드 WPORT_ACC는 누산기(159)의 데이타 엘리먼트중 어느 절반비트(최상위 또는 최하위 비트)가 기입될 값을 제공할 것인가를 선택한다. 상기 기입 연산의 가능한 목적지는 레지스터 파일(151) 및 특정 레지스터이다. 상기 레지스터 파일(151)은 두개의 288비트 벡터 값 또는두개의 32비트 스칼라 값의 동시 기입을 지원하는 두개의 기입 포트(157)를 구비한다. 상기 필드 WPORT_RD 및 WPORT2_RD는 기입될 제 1 값 및 선택가능한 제 2 값의 목적지의 레지스터의 수를 나타낸다. 상기 필드 MISC는 상기 데이타 엘리먼트가 LSU 154의 특정 변환을 요구하는 9비트 데이타 형태를 갖는지의 여부를 나타낸다.
상기 필드 WRITE는 상기 마이크로 명령 WRITE_
Figure kpo00041
I가 유효한 경우 명령을 완료하는데 필요한 최종 연산을 나타내기 때문에, 다음번 필드를 포함하지 않는다. 상기 마이크로 명령 LSU_
Figure kpo00042
I는 유효한 경우 상기 유효한 마이크로 명령 WRITE_
Figure kpo00043
I가 수반되면 항상 최종연산이 되거나 최종에서 두번째 연산이 된다. 일단 최종 마이크로 명령이 완료되면, 상기 명령은 회수되어 디코드 버퍼(130)의 또다른 명령을 위한 공간이 창출된다.
제5(a)도 내지 제5(j)도는 본 발명의 전형적인 실시예에서의 명령을 실행하는 연산의 순서를 예시한 것이다. 제5(a)도에 도시된 단일 마이크로 명령 WRITE_
Figure kpo00044
I는 즉석값 또는 소스 레지스터로부터의 값을 레지스터 파일(155), 누산기(159) 또는 특정 레지스터내의 목적지에 기입하는 레지스터 이동 클래스의 충분한 명령이다. 제5(b)도 및 제5(c)도는 저장 명령에 대한 마이크로 명령 순서를 예시한 것으로서, 제5(b)도는 단일 마이크로 명령 LSU_
Figure kpo00045
I가 즉석값 또는 소스 레지스터로 표시되는 어드레스의 메모리에 저장 오퍼랜드의 기입값을 초기화하는 명령을 예시한 것이다. 제5(c)도는 ALU1_
Figure kpo00046
I가 소스 오퍼랜드로부터 유효 어드레스를 계산하고 LSU_
Figure kpo00047
I가 상기 유효 어드레스의 메모리에 저장 오퍼랜드의 기입값을 초기화하는 보다 복잡한 어드레싱 모드를 갖는 저장 연산을 도시한 것이다. 로드 명령에 대한 마이크로 명령 순서가 제5(d)도 및 제5(e)도에 도시된다. 제5(d)도는 소스 오퍼랜드 또는 즉석값을 어드레스로서 사용하는 로드 명령을 예시한것으로서, 마이크로 명령 LSU_
Figure kpo00048
I는 상기 어드레스의 메모리로부터 판독된 값을 초기화하고, 마이크로 명령 WRITE_
Figure kpo00049
I는 로드/저장 유닛(154)으로부터의 결과치를 저장한다. 제5(e)도는 ALU1_
Figure kpo00050
I가 유효 어드레스를 계산하고 LSU_
Figure kpo00051
I가 상기 어드레스의 유효 메모리로부터 판독된 값을 초기화하고, 마이크로 명령 WRITE_
Figure kpo00052
I는 최종 결과치를 저장하는 보다 복잡한 어드레스 모드를 갖는 로드 명령을 예시한 것이다. 스케줄링의 경우, 각각의 마이크로 명령은 단일 사이클로 완료되지만, 마이크로 명령 WRITE_
Figure kpo00053
I는 로드 데이타를 복귀하기 위해 상기 로드/저장 유닛(154)에 요구되는 시간이 변화기 때문에, LSU_
Figure kpo00054
I를 즉시 추종하지는 않는다.
제5(f)도는 마이크로 명령 ALU1_
Figure kpo00055
I가 가산, 감산, 유효 어드레스 계산, 자리 이동, 논리 또는 소스 오퍼랜드에 대한 셔플 연산과 같은 연산을 수행하고, 마이크로 명령 WRITE_
Figure kpo00056
I가 레지스터 파일(155), 누산기(159) 또는 특정 레지스터에 한 값을 저장하는 마이크로 명령 순서를 예시한 것이다. 일반적으로, 저장된 값은 상기 산술 논리 유닛(152)으로부터의 결과치이다. 두배 크기의 오퍼랜드에 대한 연산의 경우, 마이크로 명령 ALU1_
Figure kpo00057
I 및 마이크로 명령 ALU2_
Figure kpo00058
I는 제5(g)도에 도시한 바와 같이, 병렬로 수행되고, 마이크로 명령 WRITE_
Figure kpo00059
I는 산술 논리 유닛(152 및 153)으로부터의 결과치를 저장한다. 제5(h)도는 마이크로 명령 ALU1_
Figure kpo00060
I가 가수부를 정렬하고, 마이크로 명령 ALU2_
Figure kpo00061
I가 상기 정렬된 값을 결합 및 사사오입하며, 마이크로 명령 WRITE_
Figure kpo00062
I가 그 결과치를 저장하는 부동 소수점 가산 및 감산과 같은 연산에 대한 마이크로 명령 순서를 예시한 것이다.
제5(i)도는 정수 승산 또는 승산 및 누산과 같은 연산에 대한 마이크로 명령 순서를 예시한 것이다. 상기 승산기(151)는 두배 크기의 합산 및 자리올림 값을 발생시키기 위해 소스 오퍼랜드를 승산하여 마이크로 명령 MULT_
Figure kpo00063
I를 실행하고, 상기 산술 논리 유닛(152 및 153)의 가산기들은 두배 크기의 값을 가산하기 위해 마이크로 명령 ALU1_
Figure kpo00064
I 및 마이크로 명령 ALU2_
Figure kpo00065
I를 병렬로 실행하며, 마이크로 명령 WRITE_
Figure kpo00066
I는 그 결과치를 저장한다. 제5(j)도는 승산기(151)가 소스 오퍼랜드의 가수부를 승산하고 합산 및 자리올림값을 발생시키기 위해 마이크로 명령 MULT_
Figure kpo00067
I를 실행하고, 상기 산술 논리 유닛(152)이 각각의 데이타 엘리먼트 곱에 대한 최종 합산 및 자리올림 신호의 최상위 비트를 가산하고 지수부를 가산하기 위해 마이크로 명령 ALU1_
Figure kpo00068
I를 실행하고, 상기 산술 논리 유닛(153)이 상기 산술 논리 유닛(152)으로부터의 결과를 정규화 및 사사오입하기 위해 마이크로 명령 ALU2_
Figure kpo00069
I를 실행하며, 마이크로 명령 WRITE_
Figure kpo00070
I가 상기 산술논리 유닛(153)으로부터의 결과를 저장하는 부동 소수점 승산과 같은 명령에 대한 마이크로 명령 순서를 예시한 것이다.
발령된 명령의 시작 마이크로 명령은 상기 발령 선택 프로세스의 일부로서 취해지는 소스 오퍼랜드를 이용하지만, 그 후속 마이크로 명령은 상기 선행 연산의 결과를 요구하고 선행 연산의 결과가 이용가능할 때 실행되어야 한다. 따라서, 마이크로 명령은 상호 종속관계에 있고, 한 명령속의 마이크로 명령은 상기 명령에 따라 특정 순서로 실행되어야 한다. 따라서, 한 엔트리내의 마이크로 명령은, 상기 마이크로 명령의 일부가 제5(a)도 내지 제5(j)도에서 에시된 바와 같은 적절한 순서로만 발령될 수 있기 때문에 모두 발령될 수 없다. 명령 종속 로직(144)은 마이크로 명령의 발령을 금지시키므로써 마이크로 명령의 순차 실행을 방해할 수도 있다.
요구된 마이크로 명령 순서를 유지하기 위해, 상기 명령 종속 로직(144)은 기능 유닛 엔트리의 마이크로 명령을 체크하고 특정 마이크로 명령의 발령을 금지시키는 디코드 버퍼(130)회로의 각 엔트리를 포함한다. 상기 회로는 이하에 기술 되는 상황하에서 마이크로 명령의 발령을 금지시키기 위해 디코드 버퍼(130)내의 마이크로 명령의 유효한 인접 필드에 연결되는 랜덤 로직으로 구형될 수 있다.
상기 승산기(151)용 마이크로 명령은, 마이크로 명령 MULT_
Figure kpo00071
I가 유효한 경우 항상 시작 마이크로 명령이기 때문에, 어떤 순서의 종속성을 갖지 않는다. 상기 산술 논리 유닛(152)의 경우, 명령 종속 로직(144)은 마이크로 명령ALU1_
Figure kpo00072
I와 동일한 엔트리의 마이크로 명령 MULT_
Figure kpo00073
I가 유효한지의 여부와, 상기 마이크로 명령 MULT_
Figure kpo00074
I의 발령이후까지 상기 마이크로 명령 ALU1_
Figure kpo00075
I의 발령을 금지시키는 지를 결정한다. 만약, 상기 마이크로 명령 MULT_
Figure kpo00076
I가 발령되면, 필드 MUT_VALID 소거되어 마이크로 명령 ALU1_
Figure kpo00077
I가 발령에 적합하게 된다.
상기 산술 논리유닛(153)의 경우, 명령 종속 로직(144)은 마이크로 명령 ALU2_
Figure kpo00078
I와 동일한 엔트리의 마이크로 명령 MULT_
Figure kpo00079
I 및 마이크로 명령 ALU1_
Figure kpo00080
I가 유효한지를 결정한다. 만약, 상기 마이크로 명령 MULT_
Figure kpo00081
I가 유효하면, 상기 명령 종속 로직(144)은 상기 마이크로 명령 MULT_
Figure kpo00082
I의 발령이후까지 상기 마이크로 명령 ALU2_
Figure kpo00083
I의 발령을 금지시킨다. 반면, 마이크로 명령 ALU1_
Figure kpo00084
I가 유효하고 필드 ALU2_NEXT가 상기 마이크로 명령 ALU2_
Figure kpo00085
I가 상기 마이크로 명령 ALU1_
Figure kpo00086
I를 추종한다는 것을 나타내면, 상기 명령 종속 로직(144)은 상기 마이크로 명령 ALU1_
Figure kpo00087
I가 발령되고 유효 비트 ALU1_VALID가 소거된 후까지 상기 마이크로 명령 ALU2_
Figure kpo00088
I의 발령을 금지시킨다.
전형적인 실시예에 있어서, 마이크로 명령 LSU_
Figure kpo00089
I는 제1마이크로 명령이거나 마이크로 명령 ALU1_
Figure kpo00090
I를 추종한다. 따라서, 로드/저장 유닛(154)의 경우, 상기 명령 종속 로직(144)은 상기 마이크로 명령 LSU_
Figure kpo00091
I와 동일한 엔트리의 유효한 마이크로 명령 ALU1_
Figure kpo00092
I가 존재하는 경우 상기 마이크로 명령 ALU1_
Figure kpo00093
I가 발령된 후까지 상기 마이크로 명령 LSU_
Figure kpo00094
I의 발령을 금지시킨다.
마이크로 명령 WRITE_
Figure kpo00095
I가 유효한 경우, 상기 WRITE_
Figure kpo00096
I는 항상 최종 발령되는 마이크로 명령이고, 상기 명령 종속 로직(144)은 동일 엔트리내의 모든 다른 유효한 마이크로 명령이 발령될 때까지, 마이크로 명령 WRITE_
Figure kpo00097
I의 발령을 금지시킨다. 또한, 마이크로 명령 LSU_
Figure kpo00098
I의 필드 LSU_NEXT가 상기 로드/저장 유닛(154)으로부터의 데이타 대기를 나타내는 경우, 상기 로드/저장 유닛(154)이 로드 데이타를 복귀시킬 때까지 상기 마이크로 명령 LSU_
Figure kpo00099
I의 발령이 금지된다. 상기 필드 LSU_NEXT는 상기 마이크로 명령 WRITE_
Figure kpo00100
I가 발령되도록 로드 데이타가 복귀될 때 리세트된다.
또한, 상기 명령 종속 로직(144)은 두개의 마이크로 명령 순서가 동시에 동일한 실행유닛을 요구할 경우에 발생할 수도 있는 충돌을 피하기 위해, 마이크로 명령의 발령을 금지시킨다. 발령될 마이크로 명령을 선택하기 위해서는, 상기 명령 종속 로직(144)은 발령되지 않은 명령의 시작 마이크로 명령 또는 발령된 명령의 다음번 마이크로 명령이 다음번 사이클동안에 발령된다는 것을 가정하는 실행을 위한 타임 슬롯과 각각의 유효한 마이크로 명령을 정합시킨다. 예컨대, 제5(a)도에 예시된 바와 같은 발령되지 않은 레지스터 이동 명령은 타임 슬롯 1의 마이크로 명령 WRITE_
Figure kpo00101
I를 갖는다. 제5(i)도의 마이크로 명령 순서를 요구하는 발령되지 않은 명령은 타임 슬롯 1의 마이크로 명령 MULT_
Figure kpo00102
I를 갖고, 타임 슬롯 2의 마이크로 명령 ALU1_
Figure kpo00103
I 및 ALU2_
Figure kpo00104
I를 가지며, 타임 슬롯 3의 마이크로 명령 WRITE_
Figure kpo00105
I를 갖는다. 만약, 제5(i)도의 순서이후의 명령을 위한 마이크로 명령 MULT_
Figure kpo00106
I가 실행되는 경우, 상기 명령은 타임 슬롯 1의 마이크로 명령 ALU1_
Figure kpo00107
I 및 ALU2_
Figure kpo00108
I를 가지며, 타임 슬롯 2의 마이크로 명령 WRITE_
Figure kpo00109
I를 갖는다. 다른 명령의 마이크로 명령은 제5(d)도 및 제5(e)도의 순서이후의 로드 명령을 위한 마이크로 명령 WRITE_
Figure kpo00110
I를 제외하고 유사한 방식으로 할당된다. 로드 명령을 위한 마이크로 명령 WRITE_
Figure kpo00111
I는 상기 로드/저장 유닛(154)이 로드 데이타가 준비중임을 나타내고, 상기 마이크로 명령 WRITE_
Figure kpo00112
I가 타임 슬롯 1에 존재할 때까지는 타임 슬롯으로 할당되지 않는다. 이하에 기술되는 이유 때문에, 상기 전형적인 실시예는 비록 제5(j)도의 순서를 갖는 발령되지 않은 명령이 완료시킬 4개의 사이클을 요구한다 하더라도, 단지 3회에 걸쳐 타임 슬롯을 이용한다.
각각의 타임 슬롯의 경우, 상기 명령 종속 로직(144)은 상기 타임 슬롯의 적격한 마이크로 명령이 상기 실행 유닛의 능력을 초과하는지의 여부를 결정한다. 각각의 타임 슬롯의 한계는 다음과 같다. 한개의 ALU1_
Figure kpo00113
I, 한개의 ALU2_
Figure kpo00114
I, 한개의 ALU2_
Figure kpo00115
I, 한개의 LSU_
Figure kpo00116
I, 및 한개 또는 두개의 WRITE_
Figure kpo00117
I로부터 발생될 수 있는 두개의 기입, 또한, 판독 포트(156)는 두개의 소스 오퍼랜드로 제한된다. 만약, 그 어느 제한범위가 초과되면, 적격하지만 발령되지 않은 명령중 일부 및/또는 발령된 로드 명령으로부터의 마이크로 명령 WRITE_
Figure kpo00118
I의 발령이 금지된다.
상기 마이크로 명령 MULT_
Figure kpo00119
I는 유효한 경우 항상 시작 명령이기 때문에, 타임 슬롯 1에서만 존재한다. 따라서, 상기 명령 종속 로직(144)은 타임 슬롯 1의 마이크로 명령 MULT_
Figure kpo00120
I를 체크하기 위한 로직만을 필요로 한다. 만약, 타임 슬롯 1이 하나 이상의 마이크로 명령 MULT_
Figure kpo00121
I를 갖는 경우, MULT_
Figure kpo00122
I를 필요로 하는 발령되지 않은 가장 오래된 명령의 발령은 금지되지 않지만, MULT_
Figure kpo00123
I를 필요로 하는 발령되지 않은 보다 새로운 모든 명령의 발령은 금지된다.
상기 마이크로 명령 ALU1_
Figure kpo00124
I는 타임 슬롯 3에 존재하지 않고, 타임 슬롯 1 또는 2에 존재할 수 있다. 만약, 타임 슬롯 1 또는 2가 하나 이상의 마이크로 명령 ALU1_
Figure kpo00125
I를 갖고, 발령된 명령이 타임 슬롯 1의 ALU1_
Figure kpo00126
I를 갖는다면, 상기 슬롯의 모든 ALU1_
Figure kpo00127
I를 갖는 모든 발령되지 않은 명령의 발령은 금지된다. 만약, 발령된 명령이 타임 슬롯내에 ALU1_
Figure kpo00128
I를 갖고 있지 않다면, 상기 슬롯의 ALU1_
Figure kpo00129
I를 갖는 발령되지 않은 가장 오래된 명령의 발령은 금지되지 않지만, ALU1_
Figure kpo00130
I를 필요로 하는 모든 새로운 명령들의 발령은 금지된다.
마이크로 명령 ALU2_
Figure kpo00131
I는 타임 슬롯 1, 2 또는 3에 존재할 수 있다. 그러나, ALU2_
Figure kpo00132
I는 제5(j)도의 순서를 추종하는 발령되지 않은 명령에 대해서만 타임슬롯 3에 존재한다. 만약 하나 이상의 ALU2_
Figure kpo00133
I가 타임 슬롯 3에 존재한다면, 하나 이상의 MULT_
Figure kpo00134
I는 타임 슬롯 1 에 존재할 것이고, 마이크로 명령 MULT_
Figure kpo00135
I에 대해 전술한 로직은 발령되지 않은 정확한 명령의 발령을 금지시킨다. 따라서, 상기 명령 종속 로직(144)은 타임 슬롯 3의 ALU2_
Figure kpo00136
I를 체크하기 위한 로직을 필요로 하지 않는다. 만약, 타임 슬롯 1 또는 2가 하나 이상의 ALU2_
Figure kpo00137
I를 갖고, 발령된 명령이 상기 슬롯의 ALU2_
Figure kpo00138
I를 갖는다면, 상기 슬롯의 ALU2_
Figure kpo00139
I를 갖는 모든 발령되지 않은 명령의 발령은 금지된다. 만약, 발령된 명령이 상기 슬롯의 ALU2_
Figure kpo00140
I를 갖지 않는다면, ALU2_
Figure kpo00141
I의 실행을 필요로 하는 가장 오래된 발령되지 않은 명령의 발령은 상기 로직에 의해 금지되지 않지만, 상기 타임 슬롯의 ALU2_
Figure kpo00142
I를 필요로 하는 모든 새로운 발령되지 않은 명령들의 발령은 금지된다.
마이크로 명령 WRITE_
Figure kpo00143
I는 3개의 클래스를 구비한다. 로드이외의 발령된 명령을 위한 WRITE_
Figure kpo00144
I는 클래스 A에 존재한다. 상기 로드/저장 유닛(154)이 로드 데이타를 복귀시킨 후, 로드 명령을 위한 WRITE_
Figure kpo00145
I는 클래스 B에 존재한다. 발령되지 않은 명령을 위한 WRITE_
Figure kpo00146
I는 클래스 C에 존재한다. 상기 클래스 A의 WRITE_
Figure kpo00147
I가 ALU1_
Figure kpo00148
I 또는 ALU2_
Figure kpo00149
I로부터의 결과를 저장하고, 산술 논리유닛(152 및 153)이 출력 버퍼를 구비하지 않기 때문에, 상기 클래스 A의 WRITE_
Figure kpo00150
I의 발령은 지연되지 않는다. 만약, 상기 클래스 A의 WRITE_
Figure kpo00151
I의 발령이 지연된다면, 상기 산술 논리 유닛(152 및 153)의 출력은 새로운 결과로 대체되거나 상실될 수도 있다. 그러나, 상기 로드/저장 유닛(154)은 클래스 B의 WRITE_
Figure kpo00152
I가 지연되는 동안 로드 데이타를 보유하는 판독 버퍼를 구비한다. 상기 로드/저장 유닛(154)은 상기 판독 버퍼가 거의 충전되어 있는 동안 로드 명령의 발령을 금지시킨다.
명령종속로직(144)은 각각의 슬롯 1, 2 및 3의 마이크로 명령 WRITE_
Figure kpo00153
I를 체크하기 위한 로직을 포함한다. 제5(j)도에 도시된 순서를 갖는 발령되지 않은 명령은 4개 사이크롤 마이크로 명령 WRITE_
Figure kpo00154
I를 실행하지만, 타임 슬롯 1의 MULT_
Figure kpo00155
I를 체크하여 이들 명령을 처리할 수 있기 때문에 슬롯 4를 체크할 필요가 없다. 만약, 한 슬롯의 클래스 A의 마이크로 명령 WRITE_
Figure kpo00156
I에 의해 요구되는 기입 회수가 2회라면, 상기 슬롯의 클래스 B 또는 클래스 C의 WRITE_
Figure kpo00157
I를 갖는 어떤 명령으로부터의 마이크로 명령의 발령은 금지된다. 만약 그렇지 않으면, 클래스 A의 마이크로 명령 WRITE_
Figure kpo00158
I에 의해 사용되지 않는 1 또는 2회의 기입이 클래스 A 또는 클래스 B의 WRITE_
Figure kpo00159
I를 갖는 가장 오래된 명령 또는 두개의 명령에 할당되지만, 어떤 새로운 명령은 클래스 A 또는 B를 포함한다.
발령되지 않은 명령의 발령은 판독 포트(156)의 이용도에 의해 다시 제한될 수도 있다. 어떤 발령된 명령이 소스 오퍼랜드 C를 요구하는 슬롯 1의 마이크로 명령을 갖는 경우, 두개의 소스 오퍼랜드 A 및 B를 필요로 하는 모든 발령되지 않은 명령의 발령이 금지된다. 만약, 발령된 명령으로부터의 마이크로 명령이 슬롯 1의 오퍼랜드 C를 요구하는 경우, 모든 발령되지 않은 명령의 발령은 금지된다. 전형적인 실시예에 있어서, ALU1_
Figure kpo00160
I 및 ALU2_
Figure kpo00161
I는 명령이 발령된후 소스 오퍼랜드를 요구할 수 있는 유일한 마이크로 명령이기 때문에, 소스 오퍼랜드를 요구하는 발령된 명령의 두개 이상의 마이크로 명령으로부터는 충돌이 발생될 수 없다. 명령 발령 로직(146)은 금지되지 않은 적격 엔트리로부터 마이크로 명령을 발령한다. 각각의 실행 유닛의 경우, 상기 명령 발령 로직(146)은 오퍼랜드 종속 유닛(142)이 명령 발령에 적격이고 명령 종속 유닛(144)의 동작이 금지되지 않았다는 것을 나타내는 가장 오래된 마이크로 명령의 위치선정을 시도한다. 상기 명령 발령 로직(145)은 발령된 마이크로 명령이 실행될 때 소스 오퍼랜드가 다음번 사이클의 개시부에서 이용되도록 명령 발령 선택중에 상기 소스 오퍼랜드를 가져온다.
마이크로 피시 부록에는 스케줄러(140)의 전형적인 구현을 나타내는 로직의 목록이 포함된다. 상기 부록의 로직을 구현하는데 잘 공지된 회로 설계기술이 이용될 수 있다.
전술한 바와 같이, 본 발명에 의하면, 실행 유닛의 복잡도가 감소하고, 보다 단순한 구조의 프로세서 아키텍처가 제공된다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 이하의 특허청구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다. 특히, 비록, 앞서 기술한 많은 부분들이 SIMD프로세서를 위한 특정 명령 세트에 관련된 것이지만, 본 발명의 대체 실시예가 전형적인 실시예 또는 SIMD 프로세서의 명령 세트에 한해서 제한적으로 기술되는 것은 아니다.
[부록 A]
이하의 표들은 제1도에 예시된 본 발명의 전형적인 실시예에 대한 명령 세트를 열거한 것이다. 상기 명령들은 데이타 엘리먼트가 8-비트, 9-비트, 16-비트 및 32-비트 정수(정수 8, 정수 9, 정수 16, 및 정수 32)를 포함하는 다수의 데이타 형태를 가질수 있는 스칼라 데이타 및 벡터 데이타에 대해 연산한다.
표 1a는 명령 페치 유닛(110)에서 거의 처리되는 흐름 제어 명령을 열거한 것이다. 흐름 제어 명령은 다른 레지스터에 영향을 미치고, 프로그램 카운터는 상기 명령 페치 유닛(110)에서 디코더(120)로 통과되고 디코드 버퍼(130)의 엔트리를 생성하도록 디코딩된다.
Figure kpo00162
표 2a는 오퍼랜드 A 및 B에 대한 논리 연산을 수행하고 레지스터 D에 그 결과를 저장하는 논리 클래스 명령을 열거한 것이다. 상기 논리 클래스 명령은 Boolean 데이타 형태를 지원하고, 엘리먼트 마스크에 의해 영향을 받는다.
Figure kpo00163
표 3a는 시프트/회전 클래스 연산을 열거한 것이다. 상기 시프트/회전 클래스 명령은 정수 8, 정수 9, 정수 16 및 정수 32 데이타 형태(부동 소수점 데이타가 아님)에 대해 연산하고, 엘리먼트 마스크에 의해 영향을 받는다.
Figure kpo00164
표 4a는 산술 클래스 명령을 열거한 것이다. 상기 산술 클래스 명령은 일반적으로 정수 8, 정수 9, 정수 16 및 정수 32를 지원하고, 부동 소수점 데이타 형태는 엘리먼트 마스크에 의해 영향을 받는다. 명령 VCMPV는 상기 엘리먼트 마스크에 대해 연산하고, 엘리먼트 마스크에 의해 영향을 받지 않는다.
Figure kpo00165
Figure kpo00166
표 5a는 수행된 연산이 특히, MPEG 비디오, 오디오 인코딩 및 디코딩에 유용하기 때문에 MPEG로 언급된 명령을 열거한 것이다. 상기 MPEG 클래스 명령은 정수 8, 정수 9, 정수 16 및 정수 32데이타 형태를 지원하고, 엘리먼트 마스크에 의해 영향을 받는다.
Figure kpo00167
표 6a는 데이타 형태 변환 명령의 열거한 것이다. 각각의 데이타 형태 변환 명령은 특정 데이타 형태를 지원하고, 아키텍처가 벡터 레지스터의 하나 이상의 데이타 형태를 지원하지 않기 때문에 엘리먼트 마스크에 의해 영향을 받지 않는다.
Figure kpo00168
표 7a는 동일 벡터 데이타를 갖는 엘리먼트의 산술 조합을 수행하는 엘리먼트간의 산술 클래스 명령을 열거한 것이다. 상기 엘리먼트간의 산술 클래스 명령은 정수 8, 정수 9, 정수 16 및 정수 32 및 부동 소수점 데이타 형태를 지원한다. 이하의 4개의 약칭 부호는 제1데이타 벡터로부터의 두개의 인접 데이타 엘리먼트 및 제2데이타 벡터의 동일 위치로부터의 두개의 데이타 엘리먼트를 구비하는 4개의 데이타 엘리먼트를 참고하기 위해 사용된다.
Figure kpo00169
표 8a는 엘리먼트를 벡터내로 이동시키는 엘리먼트간의 이동 클래스 명령을 열거한 것이다.
Figure kpo00170
표 9a는 메모리 및/또는 레지스터 파일(155)에 억세스하는 로드 및 저장 명령을 열거한 것이다. 상기 로드 및 저장 명령은 바이트이외에도, 하프 워드 및 워드 데이타 크기, 특정 바이트 9관련 데이타 크기 연산을 지원하고, 엘리먼트 마스크에 의해 영향을 받지 않는다.
Figure kpo00171
표 10a는 메모리에 억세스하지 않고 데이타를 이동시키는 레지스터 이동 명령을 열거한 것이다. 대부분의 레지스터 이동 명령은 정수 8, 정수 9, 정수 16 및 정수 32 및 부동 소수점 데이타 형태를 지원하고, 엘리먼트 마스크에 의해 영향을 받지 않는다. 명령 VCMOVM은 엘리먼트 마스크에 의해 영향을 받는다.
Figure kpo00172
Figure kpo00173
표 11a는 외부 메모리 및 온-칩 데이타 캐시 또는 스크래치 패드 메모리와 관련하여 데이타 전송을 야기시키는 캐시 연산을 열거한 것이다.
Figure kpo00174

Claims (14)

  1. 단일 사이클 연산을 완료하기 위한 다수의 실행 유닛과; 마이크로 명령의 저장을 위한 다수의 마이크로 명령 필드를 각각 구비하는 다수의 엔트리로 분할되는 디코드 버퍼와; 명령을 디코딩하기 위한 디코더를 구비하고, 디코딩된 각각의 명령의 경우, 상기 디코더는 상기 명령과 관련한 엔트리의 상기 마이크로 명령 필드에, 프로세서에 의한 상기 명령의 실행중에 상기 실행 유닛들중 한 유닛에 의해 실행될 연산을 식별해주는 하나 이상의 마이크로 명령을 기입하는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서, 상기 각각의 엔트리는 무슨 마이크로 명령이 최초로 실행되는지를 식별하기 위한 필드를 추가로 구비하는 것을 특징으로 하는 프로세서.
  3. 제2항에 있어서, 상기 제1마이크로 명령을 위한 마이크로 명령 필드의 제1필드는 상기 제1마이크로 명령이후에 실행될 제2마이크로 명령을 위한 마이크로 명령 필드의 제2필드를 식별해 주는 서브-필드를 구비하는 것을 특징으로 하는 프로세서.
  4. 제3항에 있어서, 상기 디코드 버퍼에 연결되는 스케줄러를 추가로 구비하고, 상기 스케줄러는 상기 실행 유닛에 대해 상기 디코드 버퍼로부터의 마이크로 명령의 발령을 시도하는 명령 발령 로직과; 상기 명령 발령 로직이 상기 제1 및 제2마이크로 명령의 순차 실행을 방해할 수도 있는 마이크로 명령을 발령하는 것을 방지해 주는 명령 종속 체크 로직을 포함하는 것을 특징으로 하는 프로세서.
  5. 제4항에 있어서, 상기 명령 종속 체킹 로직은 상기 명령 발령 로직이 엔트리로부터 마이크로 명령을 발령할 수 있는 상대적 순서를 제어하는 신호를 상기 마이크로 명령 필드에 저장된 상기 마이크로 명령으로부터 발생하는 마이크로 명령 필드에 연결되는 로직을 추가로 포함하는 것을 특징으로 하는 프로세서.
  6. 제1항에 있어서, 상기 각 엔트리는 상기 엔트리와 관련된 명령을 위한 소스 오퍼랜드를 식별하는 제1오퍼랜드 필드, 및 상기 관련 명령을 위한 목적지 오퍼랜드를 식별하는 제2오퍼랜드 필드를 추가로 포함하는 것을 특징으로 하는 프로세서.
  7. 제6항에 있어서, 상기 디코드 버퍼에 연결되는 스케줄러를 추가로 구비하고, 상기 스케줄러는 상기 실행 유닛에 대해 상기 디코드 버퍼로부터의 마이크로 명령의 발령을 시도하는 명령 발령 로직과; 상기 엔트리중 제1엔트리의 상기 제1오퍼랜드 필드를 상기 엔트리중 제2엔트리의 상기 제2오퍼랜드 필드와 비교하도록 연결되고, 상기 제1엔트리의 제1오퍼랜드 필드가 상기 제2엔트리의 상기 제2오퍼랜드 필드와 동일한 오퍼랜드를 식별한 경우, 상기 명령 발령 로직이 상기 제1엔트리로부터의 마이크로 명령을 발령하는 것을 방지해 주는 오퍼랜드 종속 로직을 포함하고, 상기 제1엔트리는 상기 제2엔트리와 관련된 명령보다 더 최신의 명령과 관련이 있는 것을 특징으로 하는 프로세서.
  8. 제1항에 있어서, 상기 디코드 버퍼에 연결되는 스케줄러를 추가로 구비하고, 상기 스케줄러는 상기 실행 유닛에 대해 상기 디코드 버퍼로부터의 마이크로 명령의 발령을 시도하는 명령 발령 로직과; 상기 명령 발령 로직이 엔트리로부터 마이크로 명령을 발령할 수 있는 상대적 순서를 제어하는 명령 종속 체킹 로직을 포함하는 것을 특징으로 하는 프로세서.
  9. 제1항에 있어서, 상기 각 마이크로 명령 필드는 상기 실행 유닛중 관련 유닛에 의해 사용되는 특징으로 하는 프로세서.
  10. 제9항에 있어서, 상기 각 마이크로 명령 필드는 상기 마이크로 명령 필드가 상기 마이크로 명령 필드와 관련한 실행 유닛에 의해 실행될 유효 마이크로 명령을 저장하고 있는지의 여부를 나타내는 값의 서브-필드를 포함하는 것을 특징으로 하는 프로세서.
  11. 프로그램 순서대로 명령을 순차적으로 디코딩하되, 각 마이크로 명령이 단일 사이클 연산을 식별하도록 하고 상기 단일 사이클 연산을 실행하기 위한 실행 유닛과 연관되도록 일련의 마이크로 명령속에 상기 명령을 삽입하는 단계와; 상기 마이크로 명령과 관련한 실행유닛의 이용도에 따라 실행하기 위한 상기 마이크로 명령들을 스케줄링하는 단계를 포함하는 것을 특징으로 하는 프로세서 동작방법.
  12. 제11항에 있어서, 상기 마이크로 명령들을 스케줄링함으로써 상기 명령에 대한 순서의 역차로 마이크로 명령의 실행을 허용하는 것을 특징으로 하는 프로세서 동작방법.
  13. 제12항에 있어서, 상기 마이크로 명령들을 스케줄링함으로써 상기 명령의 상대적 순서에 대해 동일 명령으로부터 모두 디코딩되는 마이크로 명령의 실행을 제한하는 것을 특징으로 하는 프로세서 동작방법.
  14. 제11항에 있어서, 상기 방법은 다수의 엔트리를 포함하는 버퍼에 상기 마이크로 명령을 저장하는 단계를 추가로 포함하고, 단일 명령으로부터 디코딩된 일련의 마이크로 명령은 상기 엔트리중 단일 엔트리에 저장되는 것을 프로세서 동작방법.
KR1019970017466A 1997-01-28 1997-05-07 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서 KR100227276B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/789,574 1997-01-28
US08/789,574 US5923862A (en) 1997-01-28 1997-01-28 Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions

Publications (2)

Publication Number Publication Date
KR19980069764A KR19980069764A (ko) 1998-10-26
KR100227276B1 true KR100227276B1 (ko) 1999-11-01

Family

ID=25148038

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970017466A KR100227276B1 (ko) 1997-01-28 1997-05-07 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서

Country Status (2)

Country Link
US (1) US5923862A (ko)
KR (1) KR100227276B1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6334182B2 (en) * 1998-08-18 2001-12-25 Intel Corp Scheduling operations using a dependency matrix
US6212622B1 (en) * 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
US6212623B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
US6351802B1 (en) * 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
US6557095B1 (en) 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
US6542984B1 (en) 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6564315B1 (en) 2000-01-03 2003-05-13 Advanced Micro Devices, Inc. Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction
US6622237B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Store to load forward predictor training using delta tag
US6622235B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Scheduler which retries load/store hit situations
US6651161B1 (en) 2000-01-03 2003-11-18 Advanced Micro Devices, Inc. Store load forward predictor untraining
US6694424B1 (en) 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
WO2002008893A1 (en) * 2000-07-21 2002-01-31 Antevista Gmbh A microprocessor having an instruction format containing explicit timing information
US7472259B2 (en) * 2000-12-06 2008-12-30 Analog Devices, Inc. Multi-cycle instructions
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US6922771B2 (en) * 2002-04-24 2005-07-26 Portalplayer, Inc. Vector floating point unit
JP3886870B2 (ja) * 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7302553B2 (en) * 2003-01-23 2007-11-27 International Business Machines Corporation Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
GB2399901B (en) * 2003-03-27 2005-12-28 Micron Technology Inc System and method for encoding processing element commands in an active memory device
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
US7302554B2 (en) * 2004-04-22 2007-11-27 Sony Computer Entertainment Inc. Methods and apparatus for multi-processor pipeline parallelism
WO2006085277A2 (en) * 2005-02-14 2006-08-17 Koninklijke Philips Electronics N.V. An electronic parallel processing circuit
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US8291431B2 (en) * 2006-08-29 2012-10-16 Qualcomm Incorporated Dependent instruction thread scheduling
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
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
US8650240B2 (en) * 2009-08-17 2014-02-11 International Business Machines Corporation Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8577950B2 (en) * 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US9600281B2 (en) 2010-07-12 2017-03-21 International Business Machines Corporation Matrix multiplication operations using pair-wise load and splat operations
US8683261B2 (en) 2011-07-20 2014-03-25 International Business Machines Corporation Out of order millicode control operation
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US9665280B2 (en) * 2014-09-30 2017-05-30 International Business Machines Corporation Cache coherency verification using ordered lists
US11061682B2 (en) * 2014-12-15 2021-07-13 Hyperion Core, Inc. Advanced processor architecture
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4415969A (en) * 1980-02-07 1983-11-15 Intel Corporation Macroinstruction translator unit for use in a microprocessor
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5504932A (en) * 1990-05-04 1996-04-02 International Business Machines Corporation System for executing scalar instructions in parallel based on control bits appended by compounding decoder
EP0459232B1 (en) * 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
JP2847974B2 (ja) * 1991-01-21 1999-01-20 三菱電機株式会社 データ処理装置
EP0498067A2 (en) * 1991-02-08 1992-08-12 International Business Machines Corporation Microcode generation for a scalable compound instruction set machine
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting

Also Published As

Publication number Publication date
KR19980069764A (ko) 1998-10-26
US5923862A (en) 1999-07-13

Similar Documents

Publication Publication Date Title
KR100227276B1 (ko) 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서
EP0996057B1 (en) Data processor with an instruction unit having a cache and a ROM
US8918627B2 (en) Multithreaded processor with multiple concurrent pipelines per thread
JP3547482B2 (ja) 情報処理装置
US5996057A (en) Data processing system and method of permutation with replication within a vector register file
US6334176B1 (en) Method and apparatus for generating an alignment control vector
US5958048A (en) Architectural support for software pipelining of nested loops
KR100505799B1 (ko) 코프로세서 데이터 액세스 제어
US8601239B2 (en) Extended register addressing using prefix instruction
US5655096A (en) Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US6161173A (en) Integration of multi-stage execution units with a scheduler for single-stage execution units
US5815698A (en) Microprocessor having delayed instructions
JP2008047145A (ja) デュアルスレッドプロセッサ
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
EP1483675B1 (en) Methods and apparatus for multi-processing execution of computer instructions
US5634136A (en) Data processor and method of controlling the same
KR100520807B1 (ko) 데이터 처리 조건 코드 플래그
US11269634B2 (en) Data structure relinquishing
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
JPH11353305A (ja) ベクトルレジスタのアドレス指定
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP3102399B2 (ja) データ処理装置及び方法
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ
KR20000048530A (ko) 데이터 처리장치 레지스터

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120801

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 15

LAPS Lapse due to unpaid annual fee