KR100500002B1 - 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 - Google Patents

복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 Download PDF

Info

Publication number
KR100500002B1
KR100500002B1 KR1019970041451A KR19970041451A KR100500002B1 KR 100500002 B1 KR100500002 B1 KR 100500002B1 KR 1019970041451 A KR1019970041451 A KR 1019970041451A KR 19970041451 A KR19970041451 A KR 19970041451A KR 100500002 B1 KR100500002 B1 KR 100500002B1
Authority
KR
South Korea
Prior art keywords
instruction
command
priority
flow
issued
Prior art date
Application number
KR1019970041451A
Other languages
English (en)
Other versions
KR19980019064A (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 KR19980019064A publication Critical patent/KR19980019064A/ko
Application granted granted Critical
Publication of KR100500002B1 publication Critical patent/KR100500002B1/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control 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 or look ahead
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

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

Abstract

본 발명의 멀티스레드 프로세서는 복수의 명령흐름을 실행하는 멀티스레드 프로세서에 있어서, 각각 명령을 실행하는 복수의 기능 유니트와, 명령흐름에 대응하여 설치되고, 각각 명령을 해독하여 당해 명령을 실행할 기능 유니트를 지정하는 동시에 당해 기능 유니트로 해독된 명령을 발행할 것을 요구하는 명령발행 요구를 작성하는 복수의 명령 해독수단과, 명령흐름 마다 명령흐름의 우선도를 유지하는 유지수단과, 2 이상의 명령발행 요구가 동시에 하나의 기능 유니트를 지정하고 있는 경우 유지수단에 유지된 우선도에 따라 당해 기능 유니트에 발행할 해독된 명령을 결정하는 제어수단을 구비한다. 이러한 구성에 의하면 복수의 명령흐름 사이에서 명령흐름의 처리성능을 유연하게 조정할 수 있고 또한 전체의 처리효율을 향상시킬 수 있게 된다.

Description

복수의 명령 흐름을 독립적으로 처리하고, 명령 흐름 단위로 처리 성능을 유연하게 제어하는 멀티스레드 프로세서{MULTITHREADED PROCESSOR FOR PROCESSING MULTIPLE INSTRUCTION STREAMS INDEPENDENTLY OF EACH OTHER BY FLEXIBLY CONTROLLING THROUGHPUT IN EACH INSTRUCTION STREAM}
본 발명은 복수의 명령 흐름으로부터 명령을 병렬로 발행함으로써 복수의 연산 유니트를 효율적으로 사용하는 정보 처리 장치에 관한 것이다.
종래예로서는 하나의 프로세서 내에서 복수의 명령 흐름을 동시에 처리하는 멀티스레드 프로세서가 있다. 멀티스레드 프로세서의 방식에 대해서는 A Multithread Processor Architecture with Simultaneous Instruction Issuing, In Proc. of ISS' 91 : International Symposium on Supercomputing, Fukuoka, Japan, pp. 87-96, November 1991에 상세히 기술되어 있다.
도 1은 이 종래예의 멀티스레드 프로세서의 구성을 도시한 블록도이다. 도 1에서 멀티스레드 프로세서는 명령 캐시(500), 3개의 명령 페치 유니트(501), 3개의 해독 유니트(502), 12개의 스탠바이 스테이션(503), 4개의 명령 스케줄링 유니트(504), 4개의 기능 유니트(505), 레지스터 세트(506)를 구비하고, 도 1에서의 명령 페치 유니트와 명령 해독 유니트의 세트에 대응하는 3개의 명령 흐름을 동시에 독립되게 실행하도록 구성된다. 여기에서 명령 흐름이란 명령 페치 유니트와 명령 해독 유니트의 세트에 의한 처리 흐름에 대응한다.
도 1에서 명령 페치 유니트(501)는 각각 다른 명령 흐름의 명령을 명령 캐시(500)로부터 판독한다.
해독 유니트(501)는 각각의 명령 흐름의 명령을 해독하고, 당해 명령을 처리 가능한 기능 유니트(505)에 접속되어 있는 스탠바이 스테이션(503)에 명령의 해독결과(이하 간단히 명령이라 함)를 저장한다.
명령 스케줄링 유니트(504)는 스탠바이 스테이션(503)으로부터 적당한 명령을 선택하여, 비어 있는 기능 유니트(505)로 송신한다. 하나의 기능 유니트에 대한 다른 명령 흐름의 명령 해독 결과가 스탠바이 스테이션(503)에 저장되어 있는 경우에는 고정적인 순서로 명령이 선택된다. 이로써 명령 흐름간의 공평이 도모된다.
기능 유니트(505)는 각각 명령을 실행하는 연산기이며, 스탠바이 스테이션(503)으로부터의 명령을 레지스터 세트(506)를 이용하여 실행한다. 각 기능 유니트는 같은 것이어도 되지만, 예를 들면 로드/스토어 유니트, 정수 연산 유니트, 부동 소수점 연산 유니트, 승제산 유니트 등의 연산 종류별로 구비하는 경우가 많다.
상기와 같이 구성된 멀티스레드 프로세서에 있어서 그 동작을 간단히 설명하기로 한다.
도 1의 멀티스레드 프로세서에서는 명령 페치 유니트(501)와 해독 유니트(502)가 3세트 구비되어 있으므로 3개의 명령 흐름을 병렬로 페치 해독할 수 있다. 3개의 명령 흐름과 명령 캐시(500)(또는 도면 외의 메인 메모리) 중의 프로그램의 대응관계에 대해서는 하나의 프로그램이 하나의 명령 흐름에 대응하는 경우(3개의 프로그램으로부터 3개의 명령 흐름이 생성된 경우)나 하나의 프로그램이 복수의 명령 흐름에 대응하는 경우(하나의 프로그램으로부터 3개의 명령 흐름이 생성되는 경우) 등이 있다. 후자는 예를 들어 하나의 화상 처리 프로그램을 다른 화상 데이터에 대하여 동시에 복수의 명령 흐름으로서 실행시키는 경우이다.
해독 유니트(502)로 해독된 명령은 스탠바이 스테이션(503), 명령 스케줄링 유니트(504)를 통하여 당해 명령에 대응하는 기능 유니트에 발행된다. 각 기능 유니트는 어느 명령 흐름으로부터의 명령이라도 발행된 명령을 실행한다.
이와 같이 멀티스레드 프로세서의 특징은 복수의 명령 흐름을 연산기를 공유하여 동시에 실행하는 것이다.
또, 멀티스레드 프로세서는 하나의 프로세서 내부에서 복수의 명령 흐름을 취급하지만 하나의 명령 흐름을 실행하는 단위를 논리 프로세서로 부르기로 한다.
논리 프로세서는 각각 독립적으로 명령 흐름을 취급하도록 해독 유니트나 명령의 시퀀스 제어기구나 레지스터 세트 등을 갖는다. 복수의 논리 프로세서에 의해 사용되는 기능 유니트나 캐시 메모리 등은 논리 프로세서 사이에서 공유된다.
한편, 논리 블록에 대하여 전체의 프로세서를 물리 프로세서라 부르기로 한다.
또, 멀티스레드 프로세서와 기존의 슈퍼 스칼라 방식의 프로세서를 비교하면 슈퍼 스칼라 프로세서는 기능 유니트만의 다중화(복수화)가 이루어져 있기 때문에 동시에 처리할 수 있는 명령 흐름은 하나이며 명령간의 의존 관계에 의해 파이프라인 인터록이 빈번하게 발생하여 그 결과 기능 유니트의 사용 효율은 올라가지 않고 성능 향상이 곤란하였다. 이에 대하여 상기 멀티스레드 프로세서는 복수의 명령 흐름의 명령을 병렬로 실행함으로써 각 기능 유니트의 사용 효율을 올리고 성능 향상을 실현할 수 있다.
그러나 상기 멀티스레드 프로세서의 구성에서는 하기의 문제점을 갖고 있었다.
첫째로, 복수의 논리 프로세서가 기능 유니트를 공유하고 있기 때문에 복수의 명령 흐름으로부터 발행되는 명령이 기능 유니트에서 경합하는 일이 있고, 이 때문에 어느 일정한 기간에 특정한 논리 프로세서의 명령 발행이 다른 논리 프로세서의 명령 발행에 비하여 매우 적어지는 경우가 있고, 그 특정한 논리 프로세서의 성능이 매우 저하한다는 문제가 있다. 또, 논리 프로세서 사이에서 부하가 크게 다른 경우에는 각 논리 프로세서에 같은 처리 내용의(동일한 프로그램에서 생성됨) 명령 흐름을 할당한 경우라도 특정한 명령 흐름만큼 처리가 지연되게 되어 처리 종료 시간이 불규칙하고, 전체적으로 속도가 상승되지 않는 경우도 발생한다.
둘째로, 논리 프로세서에 각각 다른 명령 흐름이 할당되고, 특정의 명령 흐름만 빠르게 실행하고 싶은 경우가 발생해도 특정 논리 프로세서의 처리 속도를 상대적으로 올리거나 명령 캐쉬 등의 공유 자원을 점유할 수 없기 때문에 전체의 성능이 저하된다. 예를 들면 긴급을 요하는 인터럽트 처리 등이 발생한 경우 등이 이에 해당한다.
본 발명은 상기 문제점을 감안하여 이루어진 것으로, 복수의 명령 흐름 사이에서 각 명령 흐름의 처리 성능을 유연하게 조정할 수 있고, 또 전체의 처리 효율을 향상시킨 멀티스레드 프로세서를 제공하는 것을 목적으로 한다.
상기 목적달성을 위한 본 발명의 멀티스레드 프로세서는, 각각 명령을 실행하는 복수의 기능 유니트와, 명령흐름에 대응하여 설치되고 각각 명령을 해독하여 당해 명령을 실행할 기능 유니트를 지정하는 동시에 당해 기능 유니트로 해독된 명령을 발행할 것을 요구하는 명령발행 요구를 작성하는 복수의 명령 해독수단과, 명령흐름 마다 명령흐름의 우선도를 유지하는 유지수단과, 2 이상의 명령발행 요구가 동시에 하나의 유니트를 지정하고 있는 경우 유지수단에 유지된 우선도에 따라 당해 기능 유니트에 발행할 해독된 명령을 결정하는 제어수단을 구비하여 구성된다.
이와 같은 구성에 의하면, 각 기능 유니트에 발행할 명령(명령의 해독결과)이 상기 우선도에 따라 결정되므로 복수의 명령흐름 사이에서 부하의 불균일을 우선도에 따라 유연하게 조정할 수 있고, 명령흐름 마다 필요로 하는 처리성능을 적절하게 실행하고, 또 전체의 처리효율을 향상시킬 수 있는 효과가 있다.
여기에서, 상기 유지수단은 명령에 의해 설정가능하고, 명령흐름 마다 명령흐름을 정지할 것인지 실행할 것인지를 나타내는 플래그 군을 유지하고, 상기 제어수단은, 상기 결정을 행하는 조정수단과, 정지를 나타내는 플래그가 설정되어 있는 경우에는 그 플래그에 대응하는 명령흐름의 명령 발행요구를 제외하여 상기 결정을 행함으로써 당해 명령흐름을 정지하는 정지수단을 구비하여도 좋다.
이 구성에 의하며, 명령흐름이 그 실행과정에서 유휴상태 또는 대기상태인 경우에는 그 명령흐름을 정지상태로 할 수 있다. 즉, 그 결과, 다른 명령흐름을 우선하여 실행시킬 수 있으므로 전체의 처리성능을 향상시킬 수 있다.
여기서, 상기 제어수단은 어떤 명령흐름에 대하여 긴급을 요하는 처리가 발생한 경우에, 당해 명령흐름에 속하는 명령이고 상기 제어수단에서 발행할 것이라고 결정된 명령에 대하여 기능 유니트의 명령발행을 일시적으로 금지하는 금지수단을 구비하여도 좋다.
이 구성에 의하면, 어느 명령흐름(논리 프로세서)에 대하여 긴급을 요구하는 처리가 발생한 경우에 금지수단에 의해 당해 논리 프로세서의 명령발행을 일시적으로 금지한다. 즉, 긴급을 요하는 처리로 이행까지 필요한 사이클수 만큼 일시적으로 명령발행을 금지한다. 또, 금지수단은 금지수단에 의해 발행할 명령이 결정된 후에 당해 명령의 발행을 금지할 수 있으므로, 긴급을 필요로 하는 처리의 발생 타이밍이 조정수단에 의해 결정된 후에 있어서도 유효하게 금지할 수 있다. 예컨대, 긴급을 요하는 처리의 발생 타이밍이 기기의 사이클 기간의 지연시점에서도 유효하게 금지할 수 있는 효과가 있다.
여기에서, 기능 유니트의 하나는 우선도의 변경을 지시하는 전용명령을 수신하고, 유지수단에 유지된 우선도 중에서 당해 전용명령이 속하는 명령흐름의 우선도를 변경하도록 구성되어도 좋다.
또, 상기 전용명령은 우선도를 상승 또는 하강시키는 것을 지시하는 오퍼레이션 코드만으로 이루어지며, 상기 기능 유니트의 하나는 전용명령의 해독결과가 발행된 경우 당해 전용명령을 발행한 명령 해독수단을 판별하여 판별된 명령 해독수단에 대응하는 명령흐름의 우선도를 상승 또는 하강하도록 구성하여도 좋다.
이러한 구성에 의하면, 상기 전용명령에서는 명령흐름의 ID 또는 명령흐름을 특정하기 위한 비트 위치를 나타내는 오퍼랜드를 필요로 하지 않으므로, 어떤 명령흐름에서도 동일한 명령에 의하여 자신의 명령흐름의 우선도를 간단히 변경할 수 있다.
또, 상기 하나의 기능 유니트에 의해 당해 명령이 속하는 명령흐름의 우선도를 변경하므로 다른 명령흐름의 우선도를 잘못 재기입하지 않게 되고, 오동작을 방지할 수 있다. 예컨대, RGB 컬러 화상의 색별 화상 데이터에 동일한 화상처리를 행하는 경우, 즉, 화상처리용의 하나의 프로그램을 3개의 명령흐름으로서 독립하여 또한 동시에 실행시키는 경우, 정보를 은폐(프로그램은 RGB의 어느 것인가를 구별할 필요가 없음)할 수 있고, 또, 명령흐름의 독립성을 보증할 수 있어, 그 결과 OS 또는 시스템의 전체의 신뢰성이 향상된다.
여기서, 상기 유지수단은 판독전용의 제 1필드를 갖는 제어 레지스터를 포함하고, 상기 기능 유니트의 하나는 제어 레지스터의 판독명령의 해독결과가 발행된 경우 당해 판독명령을 발행한 명령 해독수단을 판별하여, 당해 명령 해독수단에 대응하는 명령흐름의 ID를 제 1 필드의 판독 데이터로서 내부 버스상에 출력하도록 구성되어도 좋다.
이 구성에 의하면, 상기와 같은 하나의 프로그램을 3개의 명령흐름으로 하여 독립하여 또한 동시에 실행시키는 경우 실제는 하나의 프로그램이기는 하지만 3개의 가상적인 프로그램이 병렬 실행되는 것으로 된다. 각각의 가상적인 프로그램(또는 명령흐름)은 각각 제 1 필드를 판독하는 것에 의해 명령흐름 자신의 ID를 용이하게 알 수 있다.
여기에서, 상기 유지수단은 제어 레지스터를 구비하며, 상기 제어 레지스터는 명령흐름 고유의 데이터를 유지하기 위한 명령흐름 마다의 개별 필드와 판독전용의 제 2 필드를 구비하고, 상기 기능 유니트의 하나는 상기 제어 레지스터의 판독 명령의 실행에 즈음하여, 또 명령흐름 마다의 개별 필드를 판독하는 것과 동시에 당해 판독 명령을 발행한 명령 해독수단에 대응하는 명령흐름의 고유의 데이터를 제 2 필드의 판독 데이터로서 내부 버스상에 출력하도록 구성하여도 좋다.
이 구성에 의하면, 상기 가상적인 프로그램(또는 명령흐름)은 제 2 필드를 판독하는 것에 의해 자신의 우선도를 용이하게 알 수 있다.
여기에서, 상기 유지수단은 명령흐름 마다의 우선도를 유지하는 우선도 필드를 갖고, 상기 우선도 필드는 명령흐름의 실행모드별의 우선도를 나타내는 작은 필드로 이루어지며, 상기 기능 유니트의 하나는 전용명령의 해독결과가 발행된 경우 당해 전용명령을 발행한 명령 해독수단을 판별하여 판별된 명령 해독수단에 대응하는 명령흐름의 우선도 필드중 현재의 실행모드용의 작은 필드의 우선도를 상승 또는 하강시키도록 구성되어도 좋다.
이 구성에 의하면, 실행모드, 예컨대 유저모드와 슈퍼바이저 모드로 독립되어 우선도를 설정할 수 있고, 다른 모드로 이행한 후 복귀한 경우에 원래의 우선도를 그대로 보존할 수 있다.
여기에서, 멀티스레드 프로세서는, 기능 유니트에 하나의 특정명령을 실행개시한 것과, 당해 특정명령의 해독결과를 어느 명령 해독수단이 발행한 것인지를 검출하는 특정명령 검출수단과, 특정명령의 실행개시가 검출된 때, 그 특정명령을 발행한 명령 해독수단에 대응하는 명령흐름의 우선도를 예정된 기간 일시적으로 변경하고, 그 명령흐름의 우선도는 다른 명령흐름보다 높은 우선도로 변경하는 일시 변경수단을 구비하도록 구성하여도 좋다.
이 구성에 의하면, 일시변경 수단이 일시적으로 우선도를 변경하므로 명령흐름중의 특정명령을 선두로 하는 명령열을 연속한 사이클로 실행하는 것을 보증할 수 있다.
여기에서, 멀티스레드 프로세서는, 명령흐름에 다른 명령흐름을 배타적으로 정지상태로 할지의 여부를 나타내는 배타 정지 데이터를 유지하는 배타 정지 데이터 유지수단을 구비하고, 상기 정지수단은 상기 배타 정지 데이터에 의해 정지상태로 되어 있는 명령흐름에 대응하는 명령 해독부로부터 조정수단으로의 명령 발행요구의 통지를 정지하도록 구성되어도 좋다.
이 구성에 의하면, 어느 명령흐름이 다른 명령흐름의 처리를 강제적으로 정지시킬 수 있다. 따라서, 명령흐름간의 처리성능의 조정을 큰 범위로 할 수 있다.
또, 상기 목적달성을 위한 본 발명의 멀티스레드 프로세서는 복수의 명령흐름을 동시에 또는 독립하여 병렬 실행하는 멀티스레드 프로세서에 있어서, 상기 복수의 명령흐름의 명령을 일시 기억하는 명령 캐시와, 상기 복수의 명령흐름에 대응하여 설치되어 명령 캐시로부터 명령흐름의 명령을 페치하는 복수의 명령 페치수단과, 상기 복수의 명령흐름 마다 우선도를 지정하는 우선도 지정수단과, 2 이상의 명령 캐시수단으로부터 동시에 명령 페치요구가 출력되는 경우에는 상기 우선도 제어회로의 우선도에 따라서 명령 페치요구를 조정하는 명령페치 제어수단을 구비한다.
이 구성에 의하면, 명령 캐시에 대하여 복수의 명령 페치수단으로부터의 명령 페치요구가 경합하는 경우에 우선도에 따라 조정하므로, 멀티스레드 프로세서의 상류의 처리에서 명령흐름 마다의 처리성능을 동적으로 조정할 수 있는 효과를 얻을 수 있다.
또, 상기 목적달성을 위한 본 발명의 멀티스레드 프로세서는 명령을 실행하는 복수의 기능 유니트와, 명령캐시로부터 명령을 인출하여 해독하고 당해 명령을 실행할 기능 유니트를 지정하여 명령 발행요구를 출력하는 복수의 명령 해독부와, 명령 해독부와 같은 수의 레지스터 세트를 갖고, 명령 해독부와 같은 수의 복수의 명령흐름을 동시에 또 독립하여 실행하는 멀티스레드 프로세서에 있어서, 명령흐름중의 명령에 의해 명령흐름 마다 설정가능한 명령흐름의 우선도를 유지하는 유지수단과, 복수의 명령흐름에 의해 공유되는 자원에 대하여 2이상의 명령흐름이 동시에 경합한 경우에 상기 우선도에 따라 조정하는 제어수단을 구비하고, 상기 공유자원에 대한 경합은 하나의 기능 유니트에 대한 2이상의 명령 해독부로부터의 명령 발행요구의 경합, 명령캐시에 대한 2이상의 명령 해독부로부터의 명령 인출요구의 경합, 하나의 레지스터 세트에 대한 2이상의 기능 유니트로부터의 액세스 요구의 경합의 어느 것이도록 구성되어 있다.
이러한 구성에 의하면, 명령흐름에 의해 공유되는 자원에 대하여 복수의 명령흐름으로부터의 처리요구가 경합한 경우에 우선도에 따라 조정되므로, 명령흐름 마다의 처리성능을 유연하게 조정할 수 있는 효과가 있다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부 도면과 관련한 다음의 상세한 설명을 통해 보다 분명해 질 것이다.
[멀티스레드 프로세서의 구성]
도 2는 본 발명의 실시예에서의 멀티스레드 프로세서의 주요부의 구성을 도시한 블록도이다.
본 멀티스레드 프로세서는 명령 해독부(1∼3), 기능 유니트 A(20),기능 유니트 B(21), 기능 유니트 C(22), 기능 유니트 D(23), 명령 발행 판단부(30), 명령 발행 조정부(40), 명령 발행 금지부(50), 우선 순위 제어부(60), 명령 선택부(70)를 갖고, 논리 프로세서의 실행 상태, 명령 흐름의 우선도 및 외부 요인에 따라 각 기능 유니트로의 명령 발행을 조정하도록 구성되어 있다.
또, 본 멀티스레드 프로세서는 도 1에 도시한 명령 캐시, 명령 페치 유니트, 레지스터 파일 등을 당연히 구비하고 있으나, 종래예와 같으므로 도 2에서는 생략하고 있다. 마찬가지로 기능 유니트의 파이프라인 단수(段數) 등의 상세한 구성 등에 대해서도 본 발명과 관계없으므로 설명을 생략하기로 한다. 또, 설명을 알기 쉽게 하기 위해 본 실시예에서는 각 명령 해독부는 명령 흐름 1개당 1명령을 해독하고, 한번에 발행할 수 있는 명령도 1개로 한다.
도 2에서 명령 해독부(1∼3)는 각각 명령 흐름의 명령을 해독하고, 해독 결과로서 명령 발행 판단부(30)에 명령 발행 요구를, 명령 선택부(70)에 명령 내용(오퍼레이션 등)을 출력한다. 여기에서 명령 발행 요구는 명령 발행을 요구하는 플래그(이하, 요구 플래그라 함)와 당해 명령을 실행하기 위해 명령 유니트의 종류를 나타내는 정보(이하 기능 유니트 번호라 함)를 포함한다. 명령 해독부(1∼3)는 독립적으로 명령 흐름을 해독하므로 각각 상기 논리 프로세서에 대응한다. 본 실시예에서는 하나의 물리 프로세서에 3개의 논리 프로세서를 내장시키기 위해 명령 해독부가 3개 설치되어 있다. 이하, 명령 해독부1∼3에 대응하는 논리 프로세서를 논리 프로세서1∼3라 불러 구별한다. 마찬가지로 논리 프로세서1∼3에 대응하는 명령 흐름을 명령 흐름1∼3이라 부른다.
기능 유니트 A(20), B(21), C(22), D(23)(이하, 기능 유니트 A, B, C, D라 함)는 명령 해독부(1∼3)로부터 명령 선택부(70)를 통하여 발행된 명령(해독 결과)을 받아서 당해 명령 실행, 즉 데이터 액세스 처리나 연산 처리 등을 한다. 각 기능 유니트의 기능은 모두 같아도 되지만 이해를 쉽게 하기 위해 그 처리 내용을 예시한다.
즉, 기능 유니트 A는 메모리 액세스 명령을 처리하는 로드 스토어 유니트, 기능 유니트 B는 정수 연산을 처리하는 정수 연산 유니트, 기능 유니트 C는 부동 소수점의 가감산이나 정수와 부동 소수점 사이의 변환을 하는 부동 소수점 유니트, 기능 유니트 D는 부동 소수점의 승제산을 하는 부동 소수점 유니트이다. 또, 본 실시예에서는 기능 유니트 B는 정수 연산의 하나의 처리 내용으로서 우선도의 설정에 관한 명령을 처리하는 기능을 갖고 있다. 이들의 기능 유니트는 논리 프로세서 1∼3의 구성 요소이기는 하지만 논리 프로세서와 1대 1로 대응하는 것은 아니고 논리 프로세서 1∼3에 공용된다. 또, 각 기능 유니트는 명령을 처리중인지의 여부에 따라 명령을 받아들이는 상태(이하 간단하게 ready라 함)에 있거나 받아들여지지 않는 상태(이하 간단하게 not ready라 함)에 있는지를 명령 발행 판단부(30)에 통지한다.
명령 발행 판단부(30)는 명령 해독부(1∼3)로부터의 명령 발행 요구(상기 요구 플래그와 기능 유니트 번호)를 받아서 명령의 발행 장소로 할 기능 유니트를 판단하고, 또 각 기능 유니트로부터의 ready인지의 여부를 나타내는 통지와, 우선 순위 제어부(60)로부터의 각 논리 프로세서가 정지 상태에 있는지 실행 상태에 있는지를 나타내는 통지를 받아서 기능 유니트 A∼D마다 명령을 발행할 수 있는지의 여부를 판단한다.
명령 발행 조정부(40)는 하나의 기능 유니트에 대하여 발행 가능하다고 판단된 명령 발행 요구가 복수 경합하는 경우에는 우선 순위 제어부(60)로부터의 지정되는 논리 프로세서마다 우선도에 따라 복수의 명령 발행 요구를 조정하여 발행할 명령을 하나 결정한다.
명령 발행 금지부(50)는 명령 발행 조정부(40)의 조정 결과에 대하여 당해 명령을 발행할 것인지의 여부를 최종적으로 판단하고, 판단 결과, 발행할 명령을 명령 선택부(70)에 지시한다. 구체적으로는 논리 프로세서마다 긴급을 요하는 처리가 요구된 경우에는 당해 논리 프로세서의 명령 흐름의 명령에 대해서는 발행을 일시적으로 금지하고, 그렇지 않은 경우에는 발행을 명령 선택부(70)에 지시한다. 명령 발행 금지부(50)가 일시적으로 명령 발행을 금지하고 있는 것은 명령 발행 판단부(30) 및 명령 발행 조정부(40)에 의한 처리 후에 상기 긴급을 요하는 처리가 발생한 경우에 그것을 최우선하기 때문이다. 명령발행 금지부(50)는 명령발행 조정부(40)에 의해 발행할 명령이 결정된 후 당해 명령의 발행을 금지할 수 있으므로, 긴급을 요하는 처리의 발생 타이밍이 명령발행 조정부(40)에 의해 결정후이어도 유효하게 금지할 수 있다. 예컨대, 긴급을 요하는 처리의 발생 타이밍이 기기 사이클의 기간의 지연시점에서도 유효하게 금지할 수 있다.
우선 순위 제어부(60)는 논리 프로세서마다 우선도의 관리 및 논리 프로세서마다 실행 상태에 있는지 정지 상태에 있는지를 나타내는 정보를 관리하고, 명령 발행 조정부(40)에 대하여 상기 우선도를 통지하고, 명령 발행 판단부(30)에 대하여 상기 실행 상태인지의 여부를 통지한다. 또, 우선 순위 제어부(60)는 특정 명령 실행시에 당해 논리 프로세서를 소정수의 연속 사이클 동안 우선시키는 기능(이하, 연속 사이클 우선 기능이라 함)을 갖고 있다. 상기 우선도 및 실행 상태인지의 여부를 나타내는 정보의 관리를 위해 우선 순위 제어부(60)는 3개의 제어 레지스터, 즉 우선 순위 지정 레지스터, 내부 인터럽트 레지스터, 배타 정지 레지스터를 구비한다. 이들의 레지스터는 명령 흐름 중의 명령에 따라 그 값이 설정된다.
명령 선택부(70)는 명령 발행 금지부(50)로부터 발행원의 명령 해독부 및 발행 장소의 기능 유니트를 지시하는 명령 발행 지시에 따라 명령 해독부(1∼3)에 의해 해독된 명령(오퍼레이션 등)을 기능 유니트 A∼D에 발행한다.
[우선 순위 제어부(60) : 우선 순위 지정 레지스터]
도 3은 우선 순위 제어부(60)에 내장되는 우선 순위 지정 레지스터(이하 PRI 레지스터라 함)의 비트 구성을 도시한 설명도이다.
도 3과 같이 PRI 레지스터는 MYID, PRI3, PRI2, PRI1, MYPRI의 각 필드를 갖고, 논리 프로세서마다 우선 순위 및 정지 상태인지의 여부를 나타내는 정보를 유지하고 있다.
MYID 필드는 논리 프로세서에서 본 PRI 레지스터의 판독 명령이 실행되었을 때 당해 판독 명령을 실행한 논리 프로세서의 ID를 나타내는 필드이다. 예를 들면 논리 프로세서 3에서 당해 판독 명령이 실행된 경우에는 논리 프로세서 3을 나타내는 ID(예를 들면 100)가 판독된다.
PRI3 필드는 논리 프로세서 3의 우선 순위 및 정지 상태인지의 여부를 나타내는 필드이다.
PRI2, PRI1 필드는 각각 논리 프로세서 2, 1에 대하여 PRI3과 같다.
MYPRI 필드는 논리 프로세서에서 본 PRI 레지스터의 판독 명령이 실행되었을 때 당해 판독 명령을 실행한 논리 프로세서의 우선 순위를 나타내는 필드이다. 예를 들면 논리 프로세서 1에서 당해 판독 명령이 실행된 경우에는 PRI1 필드의 내용이 MYPRI 필드에 복사되어 판독된다.
도 4는 PRI 레지스터 중의 PRI3∼PRI1 필드 각각의 하위 2비트의 비트 할당을 도시한 설명도이다. 도 4에서는 PRI3∼1을 PRIx라 약기하고, 필드내의 비트 위치를〔 〕안에 부기하고 있다. 단 x는, 논리 프로세서 번호(또는 스레드 번호)를 나타낸다.
도 4와 같이 PRIx〔1:O〕는 저(lowest), 중(middle), 고(highest)의 3레벨의 우선 순위를 나타낸다. 2비트로 3레벨의 우선 순위를 나타내고 있는 것은 PRIx〔1〕을 슈퍼바이저 모드용, PRIx〔O〕을 사용자 모드용으로 하여 개별로 설정을 가능하게 하기 위해서이다. 이 우선 순위의 설정은 다음에 나타내는 전용 명령(니모닉 표기)에 따라 기능 유니트 B에 의해서 행하여진다.
「inc pri」; 이 명령은 우선 순위를 올린다, 즉 슈퍼바이저 모드에서는 PRIx〔1〕을 1로, 사용자 모드에서는 PRIx〔0〕을 1로 설정한다.
「dec pri」; 이 명령은 우선 순위를 내린다, 즉 슈퍼바이저 모드에서는 PRIx〔1〕을 O으로, 사용자 모드에서는 PRIx〔0〕을 O으로 설정한다.
이들 명령은 통상의 레지스터간의 데이터 전송 명령과는 달리 오퍼랜드를 필요로 하지 않고, 오퍼레이션 코드만으로 이루어지는 명령이기 때문에 어떤 명령흐름에서도 같은 명령을 이용할 수 있게 된다. 예컨대, 1개의 프로그램으로부터 복수의 명령 흐름을 생성하여 각 명령 흐름에 다른 데이터를 분담시켜 병렬로 처리하는 경우에 유용하다.
또, 상기 하나의 기능 유니트에 의하여 당해 명령이 속하는 명령흐름의 우선도를 변경하므로, 다른 명령흐름의 우선도를 잘못하여 재기입하는 것이 없고, 오동작을 방지할 수 있다. 예컨대, RGB가 컬러 화상의 색별 화상 데이터에 동일의 화상처리를 실시하는 경우, 즉, 화상처리용의 하나의 프로그램을 3개의 명령흐름으로 하여 독립하여 또한 동시에 실행하는 경우, 정보를 은폐(프로그램은 RGB의 어느 것인가를 구별할 필요가 없음)할 수 있고, 또 명령흐름의 독립성을 보증할 수 있어, 그 결과 OS 또는 시스템 전체의 신뢰성이 향상된다.
이들 명령 및 도 4의 비트 할당에 의하면, 예컨대 사용자 모드로부터 슈퍼바이저 모드로 이행하여 우선 순위를 변경한 경우라도, 사용자 모드로 복귀했을 때에 이전의 우선도가 보존된다. 예컨대, 사용자 모드에서 인터럽트가 발생하여, 슈퍼바이저 모드로 일시적으로 천이하더라도 인터럽트 처리로부터 사용자 모드로 되돌아가기 전에 PRIx〔1〕을 기초로 하여 복귀함으로써 사용자 모드에서의 우선 순위가 보존된다.
도 5는 우선 순위를 나타내는 필드 PRI 레지스터 중의 PRI3∼1 필드 각각의 상위 1 비트의 비트 할당을 도시한 설명도이다.
도 5와 같이 PRIx〔2〕는 논리 프로세서가 실행 상태인지 정지 상태인지를 나타낸다. 실행 상태로부터 정지 상태로의 설정은 다음에 나타내는 전용 명령(니모닉 표기)에 따라 기능 유니트 B에 의해서 행하여진다.
「halt」 ; 이 명령은 발행원의 논리 프로세서를 정지 상태로 한다. 요컨대, 당해 논리 프로세서의 PRlx〔2〕를 1로 설정한다. 또한, 이 명령에 의한 정지 상태를 다른 명령에 의한 정지 상태와 구별할 때는 자기 정지 상태라 부른다.
자기 정지 상태의 해제(실행 상태로의 복귀)는 명령에 의한 것은 아니고, 당해 논리 프로세서에 대한 인터럽트 입력에 의한다. 요컨대 멀티스레드 프로세서에서는 인터럽트 처리는 논리 프로세서 개별로 발생하기 때문에 자기 정지 상태에 있는 논리 프로세서에 대하여 인터럽트(외부 인터럽트, 내부 인터럽트 등)가 발생한 시점에서 해제된다.
[우선 순위 제어부(60) : 내부 인터럽트 레지스터]
도 6은 우선 순위 제어부(60)에 내장되는 내부 인터럽트 레지스터(이하, IR 레지스터라 함)의 비트 구성을 도시한 설명도이다. 여기서 말하는 내부 인터럽트란, 논리 프로세서간의 인터럽트, 요컨대 하나의 논리 프로세서로부터 다른 논리 프로세서로 거는 인터럽트를 말한다. 내부 인터럽트가 걸린 논리 프로세서는 자기 정지 상태에 있는 경우에 자기 정지 상태가 해제되기 때문에, 예컨대 논리 프로세서간에서 동기하여 처리하는 경우나 동기 통신하는 경우에 이용된다.
도 6에 도시된 바와 같이, IR 레지스터는 MYID 필드와 IR3∼IR1 비트를 갖고, 다른 논리 프로세서에 대하여 내부 인터럽트를 요구하기 위한 레지스터이다.
MYID 필드는 이미 설명한 도 5와 같으므로 생략하기로 한다.
IR3비트는 논리 프로세서(3)에 대하여 다른 논리 프로세서가 내부 인터럽트를 요구하는 비트이다. 이 비트가 ON이 되면, 그 인터럽트 요구를 받은 명령 해독부(3)의 제어에 의해 PR3[2]가 0으로 설정되는 동시에 IR3도 OFF로 복귀된다. 여기서 PR3〔2〕가 0으로 설정됨으로써 논리 프로세서(3)의 자기 정지 상태가 해제된다.
IR2, IR1 비트도, 각각 논리 프로세서(2, 1)에 대한 인터럽트 요구 비트이고, IR3 비트와 마찬가지이다.
IR3∼IR1 비트의 설정은 통상의 레지스터 전송 명령에 따라 행하여진다. 통상의 레지스터 전송 명령에서는 IR3∼IR1의 비트 위치에 직접 기입할 필요가 있으므로 각 명령 흐름은 자신의 논리 프로세서 ID와 인터럽트 장소의 논리 프로세서 ID를 구별해야 하지만, 상기 MYID 필드를 판독함으로써 각 명령 흐름에 있어서 논리 프로세서 ID의 조작을 가능하게 하고 있다.
[우선 순위 제어부(60) : 배타 정지 레지스터]
도 7은 우선 순위 제어부(60)에 내장되는 배타 정지 레지스터(이하 EXCL 레지스터라 함)의 비트 구성을 도시한 설명도이다. 여기서, 배타적 정지란 어느 하나의 프로세서 이외의 논리 프로세서를 정지시키는 것을 말한다. 단, 2개 이상의 논리 프로세서가 동시에 배타적 정지상태로 될 수는 없다.
도 7에 도시된 바와 같이 EXCL 레지스터는 MYID 필드와 EXCL3∼EXCL1의 각 비트를 갖고, 하나의 논리 프로세서만을 실행 상태로 하여, 다른 논리 프로세서를 정지 상태로 하는 것을 요구하기 위한 레지스터이다.
MYID 필드는 도 3 및 도 6과 같으므로 설명을 생략하기로 한다.
EXCL3 비트는 이 비트가 ON일 때 논리 프로세서 3이 배타적 정지를 실행하고 있는 것을 나타낸다. 이 경우 실행할 수 있는 것은 논리 프로세서 3 뿐이고, 논리 프로세서 2 및 논리 프로세서 1은 정지 상태가 된다.
EXCL2, EXCL1의 각 비트도 마찬가지이다.
이들의 EXCL3∼EXCL1의 각 비트는 다음에 나타내는 전용 명령(니모닉 표기)에 따라서 기능 유니트 B에 의해서 설정 및 해제가 이루어진다.
「excsv」 ; 이 명령은 발행원의 논리 프로세서에 대한 배타 정지의 설정, 요컨대 발행원 이외의 전체 논리 프로세서를 정지시키는 명령이다. 예컨대, 논리 프로세서 1이 이 명령을 실행한 경우, EXCL1이 ON으로, EXCL2 및 EXCL3이 OFF로 설정된다. 또한, 가령 복수의 논리 프로세서가 동시에 이 명령을 발행하였다고 해도, 전체 논리 프로세서가 동작을 정지하는 일은 없다. 왜냐하면, 이 명령은 기능 유니트 B에만 실행되기 때문에 실행 시점에서는 1개에 한정되기 때문이다.
「retex」 ; 이 명령은 발행원의 논리 프로세서에 대한 배타 정지의 해제, 요컨대 다른 전체 논리 프로세서를 원래의 상태로 복귀시키는 명령이다. 예컨대, 논리 프로세서 1이 이 명령을 실행한 경우, EXCL1가 0FF로 설정된다.
이들의 명령도 상기 incpr 명령, decpr 명령과 마찬가지로 오퍼랜드를 필요로 하지 않고, 어떤 명령 흐름에 있어서도 같은 명령을 이용할 수 있다.
상기 PRI 레지스터, IR 레지스터, EXCL 레지스터의 3가지 제어 레지스터는 물리적인 실체는 각각 하나씩이지만, 각 레지스터의 MYID 필드와 PRI 레지스터의 MYPRI 필드는 자논리(自論理) 프로세서 자신의 값을 표시하기 위해 각 논리 프로세서로부터는 논리 프로세서마다 다른 레지스터가 존재하는 것처럼 보인다. 또한, 이들 제어 레지스터의 어드레싱은 모든 논리 프로세서에서 같기 때문에 같은 명령을 실행해도 각각 자논리 프로세서 자신의 ID나 우선 순위를 볼 수 있다.
[명령 발행 판단부(30)]
도 8은 도 2의 명령 발행 판단부(30)의 보다 상세한 구성예를 도시한 블록도이다. 이 명령 발행 판단부(30)는 정지 판단부(310), 분배부(320), 발행 판단부(330)를 구비한다.
정지 판단부(310)는 명령 해독부(1∼3)의 각각에 대응하는 3세트의 NOR 회로와 AND 회로를 구비한다. NOR 회로와 AND 회로의 각 세트는 명령 해독부로부터 상술한 명령 발행 요구(요구 플래그와 기능 유니트 번호)를 받아, 각 논리 프로세서마다 자기 정지 상태(PRI 레지스터의 PRIx[2]가 ON) 또는 배타 정지에 의해 정지 상태로 되어 있는(EXCLx 비트가 ON) 경우에는, 요구 플래그 신호(이하 요구 유무 신호라 함)를 강제적으로 OFF로 하여, 실행 상태이고, 또한 배타 정지에 의해 정지되어 있지 않은 경우에는, 요구 유무 신호를 그대로 출력한다.
분배부(320)는 명령 해독부(1∼3)의 각각 대응하는 3개의 디멀티플렉서를 구비한다. 각 디멀티플렉서는 정지 판단부(310)를 통해 입력되는 요구 유무 신호를 기능 유니트 번호에 따라서 당해 명령을 실행해야 할 기능 유니트에 분배한다. 그 결과, 기능 유니트마다 각 명령 해독부로부터의 요구 유무 신호가 출력된다.
발행 판단부(330)는 기능 유니트(A∼D)의 각각에 대응하는 4세트의 AND 회로군을 구비한다. 각 AND 회로군은 분배부(320)에 의해 분배된 요구 유무 신호를 기능 유니트가 상술한 ready 상태인 경우에는 그대로 출력하고, not ready 상태인 경우에는 OFF로 하여 출력한다. 여기서, ready 상태인 것을 나타내는 ready_n 신호(n은 A, B, C 또는 D)는 대응하는 기능 유니트가 명령을 수신할 수 있는 상태에 있는 것을 나타내며, 논리 프로세서 1∼3에 대응하여 기능 유니트(x)로부터 출력되는 3 비트의 신호이다. 발행 판단부(330)로부터의 출력 신호(1A∼3A, 1B∼3B, 1C∼3C, 1D∼3D)에 대해서는 모두 논리 1일 때 유효(명령 발행 가능)하고, 예컨대, 출력 신호(1A)는 발행원이 명령 해독부(1)에서 발행 장소가 기능 유니트 A를, 출력 신호(3B)는 발행 장소가 명령 해독부(3)에서 발행 장소가 기능 유니트 B를 의미한다.
[명령 발행 조정부(40)]
도 9는 도 2의 명령 발행 조정부(40)의 보다 상세한 구성예를 도시한 블록도이다. 이 명령 발행 조정부(40)는 기능 유니트 A∼D의 각각 대응하는 조정부(40A∼40D)를 구비한다. 각 조정부는 같은 동작을 하므로 여기서는 조정부(40A)를 대표로서 설명하기로 한다. 조정부(40A)는 우선 순위 판정부(41A)와 판정보조부(42A)를 구비한다.
우선 순위 판정부(41A)는 발행 판단부(330)로부터 출력되는 신호(1A, 2A, 3A)와 각 논리 프로세서의 우선 순위 PRI1[1:0], PRI2[1:0], PRI3[1:0]을 받아, 유효한 요구 유무 신호 중 우선 순위가 가장 높은 것을 출력한다. 우선 순위 판정부(41A)에서, 이 기능을 실현하기 위한 제어 논리를 도 10의 (a)∼도 10의 (c)에 도시한다.
도 10의 (a)에서는 PRI 레지스터 중의 PRI1, PRI2, PRI3 필드에 지정된 논리 프로세서 1∼3의 우선 순위가 PRI1〉PRI2〉PRI3인 경우, 요컨대 우선 레벨에서는(PRI1, PRI2, PRI3)=(고, 중, 저)인 경우의 입력(1A, 2A, 3A)과, 출력(1A', 2A', 3A')을 나타낸다. 또한, 도시되어 있지는 않지만 우선 순위가 PR1〉PR3〉PR2인 경우, PR2〉PR1〉PR3인 경우, PR2〉PR3〉PR1인 경우, PR3〉PR1〉PR2인 경우, PR3〉PR2〉PR1인 경우에도, 어느 하나의 신호명을 바꾸어 판독하는 것만으로 완전히 같은 제어 논리가 되기 때문에 설명을 생략하기로 한다.
도 10의 (b)에서는 우선 순위가 PRI1= PRI2〉PRI3의 경우, 요컨대 우선 레벨에서는(PRI1, PRI2, PRI3)=(고, 고, 중), (고, 고, 저)또는(중, 중, 저)의 경우를 도시하고 있다. 도시되어 있지는 않지만, 우선 순위가 PR1 = PR3〉PR2의 경우, PP2 = PR1〉PR3의 경우, PR2 = PR3〉PR1의 경우, PR3 = PR1〉PR2의 경우, PR3 = PR2〉PR1의 경우에도, 어느 하나의 신호명을 바꾸어 판독하는 것만으로 완전히 같은 제어 논리가 되기 때문에 설명을 생략한다. 또한, 도면 중의 파선을 붙인 출력 신호와 같이, 입력 신호 중 우선 순위가 가장 높고, 또한 유효한 신호가 2개 이상 존재하는 경우에는 우선 순위 판정부(41A)는 그들을 일단 1 로서 출력한다.
도 10의 (c)에서는 우선 순위가 PRI1〉PRI2 = PRI3의 경우, 요컨대 (PRI1, PRI2,PRI)=(고, 중, 중), (고, 저, 저) 또는 (중, 저, 저)의 경우를 도시한다. 또한, 도시되어 있지는 않지만, 우선 순위가 PR1〉PR3 = PR2의 경우, PR2〉PR1= P R3의 경우, PR2〉PR3 = PR1의 경우, PR3〉PR1 = PR2의 경우, PR3〉PR2= PR1의 경우에도, 어느 하나의 신호명을 바꾸어 판독하는 것만으로 완전히 같은 제어 논리가 되기 때문에 설명을 생략한다.
또한, 우선 순위 판정부(41A)는 우선 순위가 PRI1 = PRI2 = PRI3의 경우에는, 유효한 입력신호가 2개 이상 있는 경우에는 유효한 신호를 모두 일단 1 로서 출력한다.
판정보조부(42A)는, PRI 레지스터에 있어서 우선 순위가 같이 설정되어 있는 논리 프로세서가 동시에 명령 발행 요구를 낸 경우, 요컨대, 우선 순위 판정부(41A)의 출력 (1A', 2A', 3A')에 있어서 1 이 2개 이상 있는 경우, 논리 프로세서간에서 명령 발행이 치우지 않도록 조정하기 위해서, 어느 것을 1로 할 것인지를 판정한다. 예를 들면 판정 보조부(42A)는, (1) 사이클(1 사이클 또는 수 사이클)마다 1로 하는 논리 프로세서를 변경한다. (2) 이전의 명령 발행을 할 수 없었던 논리 프로세서를 우선한다. (3) 고정적으로 무엇인지를 정하여 놓는다. 또한, 이들을 교체하도록 해도 된다.
[명령 발행 금지부(50)]
도 11은 도 2의 명령 발행 금지부(50)의 보다 상세한 구성예를 도시한 블록도이다. 이 명령 발행 금지부(50)는 기능 유니트 A∼D의 각각 대응하는 금지부(50 A∼50D)와, 발행 통지부(55)를 구비한다. 각 금지부는 같은 동작을 하기 때문에 여기서는 금지부(50A)를 대표로 설명한다.
금지부(50A)는 긴급을 요하는 처리로서, 외부 인터럽트 요구, 내부 인터럽트 요구, 캐시 오류나 메모리 액세스 에러 등의 액세스 예외, 트랩 명령 등이 발생한 경우에, 그 발생원의 논리 프로세서 ID를 검출하여, 당해 논리 프로세서에 대한 명령 발행을 1 사이클간 금지하도록 제어하는 금지 제어부(51A)와, 금지 제어부(51A)의 지시에 따라 조정부(40A)의 출력 신호(1AA∼3AA)를 게이트한 결과를 명령 선택부(70)에 대한 명령 발행 지시(1AAA∼3AAA)를 출력하는 3개의 AND 회로와, 기능 유니트 A에 대한 명령 발행을 통지하는 OR 회로로 이루어진다.
발행통지부(55)는 명령 해독부(1∼3)에 대응하는 3개의 OR 회로로 이루어지고, 금지부(51A∼51D)에서 각 논리 프로세서의 명령 발행 지시가 출력될 때마다 대응하는 명령 해독부에 다음 명령을 발행해도 되는 것을 통지하는 발행통지를 출력한다.
[기능 유니트 B]
기능 유니트 B는 정수 연산 명령을 실행하는 외에, 상술한 각종 전용 명령과, PRI 레지스터, EXCL 레지스터, IR 레지스터를 판독하는 명령을 실행하도록 구성되어 있다.
또, 상기 전용 명령 등에 있어서는 본 실시예에서는 기능 유니트 B가 실행하지만, 다른 기능 유니트가 실행하도록 구성해도 된다.
도 12에, 기능 유니트 B에 의한 상기 전용 명령 및 판독 명령의 실행 내용을 나타낸 설명도를 도시한다. 도 12에서 「x」는 당해 명령의 발행원의 논리 프로세서 번호를, 「y」는 당해 명령의 발행원 이외의 논리 프로세서 ID를 나타낸다. 이 논리 프로세서 번호는 금지부(5OB)에서 출력할 수 있는 신호(도 11의 1BBB∼3BBB)에 의해 기능 유니트 B에 통지된다.
도 12에 도시된 바와 같이 기능 유니트 B는, 「inc pri」명령에 대하여, 슈퍼바이저 모드에서는 PRI 레지스터의 PRIx〔1〕 비트를 1로, 사용자 모드에서는 PRIx〔O〕 비트를 1로 설정한다.
「dec pri」명령에 대해서는, 슈퍼바이저 모드에서는 PRIx〔1〕을 O으로, 사용자 모드에서는 PRIx〔O〕 비트를 O으로 설정한다.
「halt」명령에 대해서는 당해 논리 프로세서의 PRI 레지스터의 PRIx〔2〕 비트를 1로 설정한다.
「excsv」명령에 대해서는 EXCL 레지스터의 EXCLx 비트를 1로, EXCLy 비트를 0으로 설정한다. 예컨대, 논리 프로세서 2가 본 명령의 발행원인 경우, 기능 유니트 B는 EXCL2 비트를 1로, EXCL3 비트 및 EXCL1 비트를 O으로 설정한다.
「retex」명령에 대해서는 EXCLx 비트를 O으로 설정한다.
이와 같이 상기 전용 명령은 같은 명령이더라도 당해 명령 발행원의 논리 프로세서에 따라 레지스터중의 다른 비트가 조작된다.
또한, 도 12에 도시된 각 mov 명령에 있어서는, 기능 유니트 B는 아래와 같이 실행한다.
「mov PRI.RO」명령은 PRI 레지스터의 내용을 RO 레지스터로 전송하는 명령이다. 이 명령에 대하여 기능 유니트 B는 아래와 같이 명령을 실행한다.
PRI 레지스터 중의 MYID 필드(= PRI〔31:29〕)에 대해서는 그 명령의 발행원의 논리 프로세서 ID를 R0〔31:29〕의 각 비트에 기입한다.
PRI 레지스터 중의 PRI〔11:3〕(= PRI3, PRI2, PRI1 필드)의 각 비트에 대해서는 그 데이터를 판독하여 RO 레지스터 중의 〔11:3〕으로 전송한다.
PRI〔2:0〕 (= MYPRI 필드)에 대해서는 PRI3, PRI2, PRI1 필드 중 그 명령의 발행원의 논리 프로세서 ID에 대응하는 PRIx를 R0〔31:29〕의 각 비트에 기입한다.
「mov IR, R0」명령은, IR 레지스터의 내용을 RO 레지스터에 전송하는 명령이다. 이 명령에 대하여 기능 유니트 B는 IR 레지스터 중의 MYID 필드(= IR〔31:29〕)에 있어서는, 그 명령의 발행원의 논리 프로세서 ID를 RO〔31:29〕의 각 비트에 기입한다. IR〔2:0〕(IR3, IR2, IR1 비트)의 각 비트에 대해서는 그 값을 판독하여 RO〔2:0〕의 각 비트에 기입한다.
「mov EXCL. RO」명령은 EXCL 레지스터의 내용을 RO 레지스터로 전송하는 명령이다. 이 명령에 대한 기능 유니트 B의 실행 내용은 상기「mov IR,RO」에 비해 전송원이 IR 레지스터인 것 외에는 마찬가지이다.
상기 판독 명령을 실행함으로써 각 논리 프로세서는 판독된 MYID 필드로부터 자신의 논리 프로세서 ID의 값과, 다른 논리 프로세서의 상태(우선 순위, 자기 정지 상태, 배타 정지 상태 등)를 얻을 수 있다.
[우선 순위 제어부(60)의 상세 구성]
도 13은 우선 순위 제어부(60)의 상세한 구성을 도시한 블록도이다.
우선 순위 제어부(60)는 PRI 레지스터(61), IR 레지스터(62), EXCL 레지스터(63), 셀렉터(64), 연속 사이클 우선부(69)를 구비한다.
PRI 레지스터(61), IR 레지스터(62), EXCL 레지스터(63)는 도 3, 도 6, 도 7에 있어서 그 비트 구성을 이미 설명하였기 때문에 여기서는 그 하드웨어 구성을 설명한다.
이들 레지스터(61∼63)는 본 멀티스레드 프로세서의 내부 버스에 접속되어, 내부 버스를 통해 기능 유니트 B에 판독 기입이 이루어진다.
이들 레지스터의 상위 3비트(MYID 필드)는 데이터를 유지하는 기능을 갖지 않고, 레지스터의 판독 명령 실행시에 논리 프로세서 ID를 전송지역에 내부 버스로 출력한다. 이 때 논리 프로세서 ID의 값은 금지부(5OB)로부터 출력되는 신호(도 11의 1BBB∼3BBB)에 의해 통지된다.
또한 PRI 레지스터(62)의 하위 3비트는 PRI 레지스터의 판독 명령 실행시에 셀렉터(64)의 출력을 전송지역에 내부 버스로 출력한다.
셀렉터(64)는 PRI 레지스터의 판독 명령 실행시에 PRI 레지스터(62) 중의 PRI3, PRI2, PRI1 필드 중, 그 명령 발행원의 논리 프로세서 ID에 대응하는 것을 선택하여 IR 레지스터(62) 중의「MYPRI」 필드를 통해 내부 버스로 출력한다.
연속 사이클 우선부(69)는 특정 명령열이 실행되는 동안, 그 우선도를 일시적으로 높게 변경하는 기능을 갖는다. 여기서, 특정 명령열이란, 예컨대 다른 논리 프로세서와 공유하는 자원의 판독과 기입을 실행하는 경우 등, 연속 사이클로 실행될 필요가 있는 명령열을 말한다.
특정 명령열의 예를 이하에 나타낸다. 단, 명령은 니모닉 표기로 나타내고 있다. 또한, 다음은 명령 내용을 나타내는 코멘트이다.
LOOP :
레이블
aldst MEM〔1OO〕, RO
; 아토믹(Atomic LoaD STart) 명령이라고도 부른다.
; 메모리(100번지)의 데이터를 RO에 전송한다.
test R0
; R0 = 0이면 제로 플래그를 1로 세트한다.
beq LOOP
; 제로 플래그가 1이면 라벨 LOOP로 분기한다.
store R1, MEM〔100〕
; 레지스터 R1의 데이터를 메모리 100번지에 전송한다.
상기 특정 명령열은 메모리의 100번지를 판독하여, 만약 판독된 데이터가 0이라면 레지스터 R1의 데이터를 메모리의 100번지에 기입한다. 만약, 판독된 데이터가 0이 아니면, 0이 될 때까지 되풀이하여 판독하는 루프 처리를 나타내고 있다. 이 특정 명령열이 연속 사이클로 실행될 필요가 있는 것은, 예컨대 메모리 100번지가 복수의 논리 프로세서의 공유 자원으로서 사용하고 있는 경우이다. 요컨대, 어떤 논리 프로세서가 상기 특정 명령열의 실행중에는 다른 논리 프로세서가 메모리 100번지를 고쳐 써서는 안된다.
이러한 특정 명령열이 연속하는 사이클로 실행되는 것을 보증하기 위해 연속 사이클 우선부(69)는 하나의 기능 유니트로 상기 특정 명령열의 선두 명령의 실행 개시를 검출하였을 때, 그 명령의 실행 사이클로부터 연속하는 소정수의 사이클 동안 그 명령 발행원의 논리 프로세서(명령 흐름)의 우선 순위가 다른 논리 프로세서보다 높아지도록 우선 순위 제어부(60)의 우선 순위를 일시적으로 변경한다.
[연속 사이클 우선부(69)]
연속 사이클 우선부(69)는 도 13과 같이 특정 명령 검출부(65), 카운터(66), 컴퍼레이터(67), 셀렉터(68)를 구비한다.
도 13에 있어서 특정 명령 검출부(65)는, 특정 명령열의 선두 명령(이하 특정 명령이라고 함)의 실행이 시작된 것을 검출한다. 상기 특정 명령열의 예에서는 aldst 명령이 특정 명령으로서 검출된다. 보다 구체적으로는 특정 명령 검출부(65)는 명령 해독부(1∼3)로부터 특정 명령을 해독한 취지의 통지와, 특정 명령을 명령 발행 금지부(50)가 그 하나의 기능 유니트에 발행한 취지의 통지를 받아, 양 통지를 함께 받은 것을 갖고 특정 명령의 실행 개시를 검출한다.
카운터(66)는 특정 명령의 실행 개시가 검출되었을 때 특정 명령열의 실행에 요구되는 사이클수를 카운터한다. 상기 예에서는 카운터(66)는 aldst 명령에 계속되는 3명령의 실행에 요구되는 3사이클을 카운트하기 위해 특정 명령의 실행 개시가 검출되었을 때 초기값 3이 로드되어, 0까지 다운 카운트한다. 이에 따라 상기 store R1.MEM[10O]의 실행 사이클에서 O이 된다. 또한, 상기 특정 명령열이 루프 처리로 되어 있는 경우에는, 카운터(66)는 aldst 명령이 검출될 때마다 초기값 3으로부터 카운트하게 된다.
컴퍼레이터(67)는 카운터(66)의 카운트값이 0과 일치하는지의 여부를 판정한다. 요컨대 특정 명령열의 연속 사이클의 기간이 아닌지의 여부를 판정한다.
셀렉터(68)는 6비트 길이의 4입력 1출력의 셀렉터이고, 연속 사이클의 기간에 있어서 우선 순위를 일시적으로 변경하기 위해 사용하고 있다.
도 14에 셀렉터(68)에 입력되는 선택 신호와, 출력값의 관계를 나타낸 설명도를 도시한다. 셀렉터(68)의 입력값은 도 14에는 생략되어 있지만, 도 13에 도시된 바와 같이 「PRI〔11:3〕(=PRI3〔1:0〕, PRI2〔1:0〕, PRI1〔1:0〕」, 「110000」, 「OO11OO」, 「OOOO11」의 4개이다.
도 14에 의하면, 셀렉터(68)의 출력은 보통때, 요컨대 연속 사이클 기간이 아닌 경우(카운트값 = O에 일치할 때), PRI 레지스터 중의 PRI〔11:3〕(=PRI3, 2, 1필드에 지정되어 있는 우선 순위를 출력한다. 연속 사이클 기간인 경우(카운트값 = 0에 일치하지 않을 때), 셀렉터(68)는 그 특정 명령의 발행원이 논리 프로세서 3이면「110000」, 논리 프로세서 2이면 「001100」, 논리 프로세서 1이면 「000011」을, 「PRI〔11:3〕(= PRI3'〔1:0〕, PRI2'〔1:0〕, PRI1'〔1:0〕」으로서 출력한다.
이에 따라 연속 사이클 기간 중, 특정 명령 발행원의 논리 프로세서의 우선 순위가 가장 높아지도록 일시적으로 변경된다.
이상과 같이 구성된 본 실시예의 멀티스레드 프로세서에 대하여 그 동작을 설명하기로 한다.
[우선 순위, 자기 정지 상태, 배타 정지의 설정 동작]
본 실시예의 멀티스레드 프로세서에서는 명령 흐름(논리 프로세서)마다 우선 순위의 설정·변경용으로 incpr 명령 및 decpr명령, 자기 정지용으로 ha1t 명령, 배타 정지용으로 excsv 명령 및 retex 명령이라는 전용 명령이 준비되어 있다. 이들 전용 명령은 명령 흐름의 생성원의 프로그램 중에 미리 적절히 설정되어 있을 필요가 있다.
예를 들면, 프로그램 중의 우선 순위를 올려 처리해야 할 부분으로서는 당해 프로그램 부분의 직전에 incpr 명령을, 직후에 decpr 명령을 설정해 두면 된다. 이와 같이 설정된 incpr 명령 및 decpr 명령은 기능 유니트 B에 의해 다음과 같이 실행된다. 즉, 기능 유니트 B는 논리 프로세서 1∼3의 어느 것이 발행원인가에 따라 PRI 레지스터가 대응하는 PRx 필드에 대하여 사용자 모드일 때는 PRIx[0] 비트를 대상으로, 슈퍼바이저 모드일 때는 PRIx[1]을 대상으로 하여 1또는 0을 설정한다. 이에 따라 논리 프로세서마다 우선 순위를 필요에 따라 동적으로 변경시킬 수 있다.
또한, 다른 논리 프로세서를 정지시켜 자신의 논리 프로세서만을 동작시켜 처리해야 할 프로그램 부분으로서는, 당해 프로그램 부분의 직전에 excsv 명령을, 직후에 retex 명령을 설정해 두게 된다. 이들 명령도 기능 유니트 B에 의해 상기와 같이 실행된다.
반대로 다른 논리 프로세서를 우선시켜 자신의 논리 프로세서를 정지시키는 경우에는, halt 명령을 설정하게 된다. 이 명령도 기능 유니트 B에 의해서 실행된다. 단지, 정지 상태의 논리 프로세서는, 당해 논리 프로세서에 대한 인터럽트 요구에 따라 정지 상태가 해제되기 때문에, 인터럽트 요구가 적절히 입력될 필요가 있다. 예컨대 논리 프로세서간의 내부 인터럽트는, IR 레지스터에 의한다. 요컨대, 인터럽트를 거는 논리 프로세서는 사전에 통상의 레지스터 전송 명령에 의해 IR 레지스터, PRI 레지스터 또는 EXCL 레지스터를 판독하여 자신의 MYID를 판독하고, 또, 인터럽트 장소의 논리 프로세서에 대응하는 IRx 비트를 결정하고 나서, 통상의 전송 명령에 의해 IR 레지스터에 내부 인터럽트 요구를 세트하게 된다.
[전체 동작]
예컨대, 명령 해독부(1)의 해독 결과, 기능 유니트 B에 대한 명령 발행 요구(요구 플래그와 기능 유니트 B의 번호)를 출력한 경우, 논리 프로세서(1)가 자기 정지 상태 또는 다른 논리 프로세서의 배타 정지에 의한 정지 상태에 있는 경우에는, 명령 발행 판단부(30)내의 정지 판단부(310)에 의해 요구 플래그 자체가 무효로서 출력되지 않는다. 이에 따라 다른 논리 프로세서(2 및 3)가 기능 유니트를 사용할 수 있게 된다.
논리 프로세서(1)가 자기 정지 상태도 아니고 다른 논리 프로세서의 배타 정지에 의한 정지 상태도 아닌 경우에는, 명령 발행 판단부(30)내의 분배부(320)에 있어서 기능 유니트 B로 분배되고, 또 기능 유니트 B가 논리 프로세서(1)에 대하여 ready 상태라면 발행 판단부(330)에 의해 발행 가능하다고 판단되고, not ready 상태이면 발행불가라고 판단된다.
다음에, 명령 발행 조정부(40)는 명령 발행 판단부(30)로부터의 기능 유니트마다 명령 발행요구를 수신하여, 우선 순위 제어부(60)로부터의 논리 프로세서마다 우선 순위를 이용하여 기능 유니트에 발행할 수 있는 논리 프로세서를 결정한다. 예컨대, 기능 유니트 B에 대하여 명령 해독부(1)로부터의 명령 발행 요구만이 출력되는 경우(도 9의 1B∼3B 중 1B만 유효한 경우)에는 명령 발행 조정부(40)는 그 명령 발행 요구를 유효(도 9의 IBB∼3BB 중 IBB만 유효)로 한다.
예컨대, 명령 해독부(1)가 기능 유니트 A에 대한 명령을 해독하고, 명령 해독부(2)는 기능 유니트 B에 대한 명령을 해독하고, 명령 해독부(3)가 기능 유니트 C 에 대한 명령을 해독하며, 또한, 모든 기능 유니트가 명령을 ready 상태에 있는 경우에는 명령 발행 조정부(40)에 있어서 3개의 명령 발행 요구가 전부 효율적으로 된다.
한편, 명령 해독부(1)가 기능 유니트 A에 대한 명령을 해독하고 명령 해독부(2)도 기능 유니트 A에 대한 명령을 해독한 경우(도 9의 1A와 2A가 동시에 유효한 경우)에는 어느 하나의 명령밖에 발행할 수 없기 때문에, 우선 순위 판정부(41A)는 우선 순위 제어부(60) 내에 PRI 레지스터보다 우선 순위를 판단하고, 우선 순위가 높은 것으로부터 명령을 발행한다. 만약에 이 경우에 논리 프로세서(1)와 논리 프로세서(2)의 우선 순위가 동일하면, 판정 보조부(42A)에 의해 어느 하나의 명령 발행 요구만을 유효로 한다.
또한, 명령 발행 금지부(50)는 명령 발행 조정부(40)에서 발행되는 것이 결정된 명령에 대하여, 논리 프로세서 중 어느 하나이며 긴급을 요하는 처리가 발생한 경우에 당해 논리 프로세서의 명령 발행을 금지한다.
명령 발행 판단부(30)와 명령 발행 금지부(50)는 모두 명령 발행 요구를 명령 발행의 후보로부터 제외하는 기능을 갖고 있지만, 기능 분담하고 있는 것은 다음 이유에 의한다.
즉, 이른 단계에서 명령을 받아들일 수 없는 것을 알 수 있는 요인에 대해서는 명령 발행 판단부(30)에 있어서, 받아들일 수 없는 논리 프로세서의 명령을 발행불가라고 판단하고 명령 발행의 후보로부터 제외할 수 있지만, 만약에 느린 단계에서만 알 수 있는 요인에 관해서 까지, 명령 발행 판단부(30)에 있어서, 명령 발행의 후보로부터 제외하고자 하면, 명령 발행 가능 여부의 최종 판단이 지연되어 프로세서의 주파수 향상에 영향을 주기 때문이다.
예컨대, 명령 발행 판단으로부터 명령 발행 금지까지를 1 사이클로 한다고 한 경우에, 사이클의 마지막에서 명령 발행 불가 요인이 명령 발행 판단부(30)에 통지되면, 그 시점에서 명령 발행의 후보로부터 제외할 필요가 있다. 이 경우에는 사이클 길이를 충분히 길게 취할 필요가 있고, 클록 주파수의 향상을 저해하는 큰 요인이 된다. 그래서, 느린 단계에서만 알 수 있는 명령 발행 금지 요인에 있어서는 명령 발행 금지부(50)에 있어서 발행을 금지한다. 물론, 명령 발행 금지부(50)인 논리 프로세서의 명령 발행이 금지된 경우는, 그 이외의 논리 프로세서로부터의 명령을 발행할 수 있다고 해도, 그 명령을 대신 발행하는 일은 하지 않는다. 이미 각각의 기능 유니트 A∼D에 대하여, 발행해야 할 명령이 1개로 좁혀진 후이기 때문이다. 이 후, 명령 선택부(70)는 명령 해독부(1∼3)에 해독된 명령 내용이나 오퍼레이션을 명령 발행 금지부(5O)로부터의 명령 발행 지시(도 11의 1AAA∼3AAA, 1BBB ∼3BBB, 1CCC∼3CCC, 1DDD∼3DDD)에 따라 기능 유니트 A∼D에 발행한다.
또, 본 실시예에서는 논리 프로세서가 3개, 기능 유니트가 4개인 경우를 설명하였지만, 이들의 수는 임의로 변경할 수 있다.
또한, PRI 레지스터의 내용을 복수의 레지스터로 분담하는데 이용해도 된다. 예컨대, 자기 정지용의 각 PRIx〔2〕 비트와, 우선 순위용 각 PRlx〔1:0〕 필드는 별개의 레지스터로 해도 된다. 반대로, PRI 레지스터와 IR 레지스터와 EXCL 레지스터는 이들 전부의 조합 또는 일부의 조합을 1개의 레지스터로서 구성해도 된다.
또한, 특정 명령 검출부(65)는 특정 명령의 실행 개시의 검출을 그 명령의 실행을 시작한 기능 유니트로부터 그 취지의 통지를 받음으로써 행하여도 된다.
본 실시예에서는 복수의 논리 프로세서가 기능 유니트에 대하여 명령 발행이 경합하는 장면에 본 발명을 적용하는 예를 나타냈지만 기능 유니트이외에도 복수의 논리 프로세서가 공유하는 자원이라면 적용할 수 있다. 이것을 다른 실시예로서 설명한다.
[다른 실시예]
본 실시예로서는 복수의 논리 프로세서가 공유하는 자원에 액세스하는 경우의 조정에도 논리 프로세서간의 우선 순위를 이용하는 것이 가능하고, 그 예를 나타낸다.
도 15는 본 발명의 다른 실시예에 있어서의 멀티스레드 프로세서의 구성을 도시한 블록도이다.
본 멀티스레드 프로세서는 캐시 메모리(100), 명령 해독부(111∼113), 레지스터군(131∼133), 명령 페치 제어부(140), 명령 발행 제어부(150), 우선 순위 제어부(60), 기능 유니트(A20∼D23), 레지스터 제어부(170)를 구비하여 구성된다. 도 2와 같은 번호의 구성요소는 같기 때문에 설명을 생략하고, 다른 점을 중심으로 설명하기로 한다.
도 15에 있어서, 캐시 메모리(100)는 명령 흐름이 생성되는 원래의 프로그램용 캐시 메모리이다.
명령 해독부(111∼113)는 각각 도 2의 명령해독부(1∼3)와 같지만, 명령 페치 제어부(140)의 제어를 받는 점이 다르다.
레지스터군(131∼133)은 각각 복수 레지스터로 이루어지는 레지스터 파일이고 명령 해독부(111∼113)에 1대 1로 대응하여 설치된다. 따라서 논리 프로세서(1∼3)에도 1대 1로 대응하고 있다.
명령 페치 제어부(140)는 도 2에 도시된 명령 발행 조정부(40) 및 명령 발행 금지부(50)에 대하여, 명령 발행 요구가 아니라 명령 페치 요구의 경합을 조정 및 금지하는 점이 다른 점을 제외하고 같은 기능을 갖는다. 즉, 우선 순위 제어부(60)로부터의 논리 프로세서마다의 우선 순위의 지정 등을 입력으로 하여, 캐시 메모리(100)에 대하여 복수의 명령 해독부가 동시에 명령 페치 요구가 나온 경우에, 우선 순위에 따라 페치하는 순서를 결정하거나, 또한, 특정한 논리 프로세서의 실행을 정지하는 경우에는, 그 논리 프로세서의 명령 해독부로부터의 명령 페치를 정지한다.
명령 발행 제어부(150)는 도 2에 도시된 명령 발행 판단부(30),명령 발행 조정부(40), 명령 발행 금지부(50) 및 명령 선택부(70)를 1개의 구성요소로 기록하고 있고, 그들을 합한 기능과 동등하기 때문에 설명을 생략한다.
레지스터 제어부(170)는 도 2에 도시된 명령 발행 판단부(30) 및 명령 발행 조정부(40)에 대하여, 명령 발행 요구가 아니라 레지스터 액세스 요구의 경합을 정지 및 조정하는 점이 다른 점을 제외하고 같은 기능을 갖는다. 즉, 우선 순위 제어부(60)로부터의 논리 프로세서마다 우선 순위의 지정 등을 입력으로 하고, 동일한 레지스터군에 대하여 동시에 복수의 기능 유니트가 데이터를 기입하는 요구를 출력한 경우에, 우선 순위에 따라 기입하는 순서를 결정하는 명령 발행 제어부이다.
상기 구성에 의해 기능 유니트에 대한 논리 프로세서의 경합뿐만 아니라, 캐시 메모리로의 명령 페치 요구의 경합, 레지스터군으로의 데이터 액세스 요구의 경합 장면에서도 우선 순위에 따른 조정이나 정지를 실시할 수 있다.
또, 상기의 실시예에서는 복수의 명령 흐름 및 논리 프로세서의 수를 3,기능 유니트의 수를 4로 하였지만, 이 수는 얼마로 하더라도 상관없다.
또한, 우선 순위의 레벨은 2 비트 3 레벨로 하였지만, 실제로는 얼마라도 상관없다. 또, 제어 레지스터를 32 비트 폭으로 하였지만, 다른 비트 폭이라도 상관없다.
또한, 복수의 논리 프로세서로 동시에 분기가 발생한 경우에, 어드레스 계산을 위한 자원이나 캐시 등 공유하고 있는 것에 대해서도 다른 실시예와 같이 우선 순위에 의해 조정할 수 있다.
또, 상기 실시예에서는 PRI 레지스터에는 오로지 전용 명령에 의해 우선 순위를 변경하도록 구성되어 있으나, 전용 명령 이외에 하드웨어에 의해 설정·변경하도록 구성해도 된다. 이 경우, 각 명령 흐름의 우선 순위를 미리 정해진 타이밍에 의해, 또는 명령 흐름의 상태를 감시하여 그 상태에 의해, 하드웨어의 외부적 요인이나 내부적 요인을 트리거로 하여 우선 순위를 변경하도록 해도 된다.
또한, 상기 실시예로서는 도 9의 우선 순위 판정부(41A)에서, 2개 또는 3개의 우선 순위가 같은 경우에, 일단 그것들을 전부 효율적으로 하여 출력하도록 하고 있지만, 어느 하나를 효율적으로 하여 출력하도록 해도 된다. 그 경우, 판정 보조부(42A)를 삭제할 수 있다.
또, 도 9의 판정 보조부(42A)는 우선 순위 판정부(41A)의 후단에 설치되지만, 우선 순위 제어부(60)와 우선 순위 판정부(41A)의 사이에 설치하여, 같은 우선 순위가 복수 있는 경우에는 우선 순위를 동적으로 변경하도록 구성해도 된다.
또, 상기 실시예에 있어서 PRI 레지스터 중의 MYPRI 필드는, PRI 레지스터의 판독 명령을 발행원의 우선 순위를 출력하고 있으나, 이것과 마찬가지로 하여, 예컨대 MYDATA 필드를 설정하여, 논리 프로세서마다 상태를 나타내는 데이터(상태 데이터, 에러 정보 등)를 출력하도록 해도 된다.
금지부(50A)가 검출하고 있는 긴급을 요하는 처리는 외부 인터럽트 요구, 내부 인터럽트 요구, 캐시 오류나 메모리 액세스 에러 등의 액세스 예외, 트랩 명령 등 외에 캐시 에러 등의 각종 이벤트라도 된다.
상기한 바와 같은 본 발명의 구성에 의하면, 각 기능 유니트에 발행할 명령(명령의 해독결과)이 상기 우선도에 따라 결정되므로 복수의 명령흐름 사이에서 부하의 불균일을 우선도에 따라 유연하게 조정할 수 있고, 명령흐름 마다 필요로 하는 처리성능을 적절하게 실행하고, 또 전체의 처리효율을 향상시킬 수 있는 효과가 있다.
또한, 명령 캐시에 대하여 복수의 명령 페치수단으로부터의 명령 페치요구가 경합하는 경우에 우선도에 따라 조정하므로, 멀티스레드 프로세서의 상류의 처리에서 명령흐름 마다의 처리성능을 동적으로 조정할 수 있는 효과를 얻을 수 있다.
도 1은 종래의 멀티스레드 프로세서의 구성을 도시한 블록도
도 2는 본 발명의 실시예에서의 멀티스레드 프로세서의 구성을 도시한 블록도
도 3은 본 발명의 실시예에서의 명령 흐름 제어 장치의 우선 순위 지정 레지스터의 설명도
도 4는 동 실시예에서의 명령 흐름 제어 장치의 우선 순위 지정 레지스터의 하위 2비트의 설명도
도 5는 동 실시예에서의 명령 흐름 제어 장치의 우선 순위 지정 레지스터의 하위 1 비트의 설명도
도 6은 동 실시예에서의 명령 흐름 제어 장치의 내부 인터럽트 레지스터의 구성도
도 7은 동 실시예에서의 명령 흐름 제어 장치의 배타 정지 레지스터의 구성도
도 8은 동 실시예에서의 명령 발행 판단부의 보다 상세한 구성예를 도시한 블록도
도 9는 동 실시예에서의 명령 발행 조정부의 보다 상세한 구성예를 도시한 블록도
도 10의 (a) ∼ 도 10의 (c)는 동 실시예에서의 우선 순위 판정부의 제어 논리를 도시한 설명도
도 11은 동 실시예에서의 명령 발행 금지부의 보다 상세한 구성예를 도시한 블록도
도 12는 기능 유니트에 의한 전용 명령 및 제어 레지스터의 판독 명령의 실행 내용을 도시한 설명도
도 13은 우선 순위 제어부의 상세한 구성을 도시한 블록도
도 14는 연속 사이클 우선부 내의 셀렉터에 입력되는 선택 신호와 출력값의 관계를 나타낸 설명도
도 15는 본 발명의 다른 실시예에서의 멀티스레드 프로세서의 블록도
* 도면의 주요부분에 대한 부호의 설명 *
1, 2, 3 : 명령 해독부 20, 21, 22, 23 : 기능 유니트
30 : 명령발행 판단부 40 : 명령발행 조정부
50 : 명령발행 금지부 55 : 발행 통지부
60 : 우선순위 제어부 64, 68 : 셀렉터
65 : 특정명령 검출부 66 : 카운터
67 : 컴퍼레이터 69 : 연속 사이클 우선부
70 : 명령 선택부 100 : 캐시 메모리
111, 112, 113 : 명령 해독부 131, 132,133 : 레지스터 군
140 : 명령 페치 제어부 150 : 명령발행 제어부
170 : 레지스터 제어부 310 : 정지 판단부
320 : 분배부 330 : 발행 판단부

Claims (43)

  1. (정정) 복수의 명령흐름을 실행하는 멀티스레드 프로세서로서,
    각각 명령을 실행하는 복수의 기능 유니트와,
    상기 복수의 명령흐름에 1대1로 대응하는 복수의 명령 해독수단으로서, 각각 명령을 해독하며, 상기 해독된 명령이 상기 기능 유니트 중 어느 기능 유니트에 발행되어야 하는지를 지정하고, 상기 지정된 기능 유니트에 상기 해독된 명령을 발행할 것을 요구하는 명령발행 요구를 작성하는 상기 복수의 명령 해독수단과,
    상기 각 명령흐름의 우선도를 유지하는 유지수단과,
    동시에 2 이상의 명령발행 요구에 의해 지정된 기능 유니트에 어느 해독된 명령이 발행되어야 하는지를, 상기 유지수단에 유지된 우선도에 따라 결정하는 제어수단을 포함하며,
    상기 각 우선도는, 다른 우선도와 독립적이고, 특정명령에 의해 변경될 수 있으며,
    상기 기능 유니트들 중의 하나는, 상기 특정 명령을 수신하고, 상기 특정명령을 포함하는 명령흐름의 우선도만을 변경시키도록 배열되는 것을 특징으로 하는 멀티스레드 프로세서.
  2. (정정) 제 1 항에 있어서,
    상기 유지수단은, 명령에 의해 설정가능하고 각 명령흐름이 정지될 것인지 실행될 것인지를 나타내는 플래그들을 구비하고,
    상기 제어수단은,
    상기 결정을 행하는 조정수단과,
    상기 결정을 행할 때, 상기 플래그들에 대응하는 상기 명령흐름들의 명령 발행요구를 제외함으로써 정지를 나타내는 플래그에 대응하는 명령흐름을 정지시키는 정지수단을 포함하며,
    상기 기능 유니트들 중의 하나는, 하나의 명령흐름을 정지시키는 하나의 명령을 수신하고, 상기 명령흐름에 대하여 상기 유지수단 내의 상기 플래그들 중의 각각의 플래그를 변경시키도록 배열되는 것을 특징으로 하는 멀티스레드 프로세서.
  3. (정정) 제 2 항에 있어서,
    상기 제어수단은, 상기 명령이 속하는 어떤 명령흐름에 대하여 긴급을 요하는 처리가 발생한 경우, 상기 제어수단에 의해 발행되도록 결정된 명령이 상기 기능 유니트에 발행되는 것을 일시적으로 금지하는 금지수단을 추가로 포함하는 것을 특징으로 하는 멀티스레드 프로세서.
  4. (정정) 제 3 항에 있어서,
    상기 긴급을 요하는 처리는 인터럽트 요구 또는 캐시 오류의 발생 통지인 것을 특징으로 하는 멀티스레드 프로세서.
  5. (삭제)
  6. (정정) 제 1 항에 있어서,
    상기 특정명령은, 상기 각각의 우선도가 상승되는지 하강되는지를 나타내기 위한 오퍼레이션 코드만으로 구성되고,
    상기 기능 유니트들 중의 하나는, 상기 특정명령의 해독결과가 발행된 경우 상기 특정명령을 발행한 명령 해독수단을 검출하고, 상기 검출된 명령 해독수단에 대응하는 상기 명령흐름의 우선도를 상승 또는 하강시키는 것을 특징으로 하는 멀티스레드 프로세서.
  7. (정정) 제 6 항에 있어서,
    상기 유지수단은 판독전용의 제 1필드를 갖는 제어 레지스터를 포함하고,
    상기 기능 유니트들 중의 하나는, 상기 제어 레지스터의 판독명령의 해독결과가 발행된 경우 상기 판독명령을 발행한 명령 해독수단을 검출하고, 상기 검출된 명령 해독수단에 대응하는 명령흐름의 ID를 제 1 필드의 판독 데이터로서 내부 버스에 출력하는 것을 특징으로 하는 멀티스레드 프로세서.
  8. (정정) 제 7 항에 있어서,
    상기 제어 레지스터는 상기 각 명령흐름의 우선도를 유지하는 우선도 필드를 포함하며,
    상기 기능 유니트들 중의 하나는, 상기 제어 레지스터의 판독명령의 해독결과가 발행된 경우 각 우선도 필드를 판독하는 것을 특징으로 하는 멀티스레드 프로세서.
  9. (정정) 제 6 항에 있어서,
    상기 유지수단은 제어 레지스터를 구비하며,
    상기 제어 레지스터는, 상기 복수의 명령흐름의 고유의 우선도 데이터를 유지하기 위한 것으로서 상기 복수의 명령흐름에 1대1로 대응하는 개별 필드와, 판독전용의 제 2 필드를 구비하고,
    상기 기능 유니트들 중의 하나는, 상기 제어 레지스터의 판독 명령의 실행시, 상기 복수의 명령흐름의 각각의 상기 개별 필드를 판독하고, 상기 판독 명령을 발행한 상기 명령 해독수단에 대응하는 명령흐름의 고유의 우선도를 상기 제 2 필드의 판독 데이터로서 상기 내부 버스에 출력하는 것을 특징으로 하는 멀티스레드 프로세서.
  10. (삭제)
  11. (정정) 제 6 항에 있어서,
    상기 유지수단은 각 명령흐름의 우선도를 유지하는 우선도 필드를 포함하고,
    각 명령흐름의 상기 우선도 필드는, 각 실행모드에서 각 명령흐름의 우선도를 나타내는 작은 필드(minor field)로 이루어지며,
    상기 기능 유니트들 중의 하나는, 상기 특정명령의 해독결과가 발행된 경우 상기 특정명령을 발행한 명령 해독수단을 검출하고, 상기 검출된 명령 해독수단에 대응하는 명령흐름의 우선도 필드중 현재의 실행모드용의 각각의 작은 필드의 우선도를 상승 또는 하강시키는 것을 특징으로 하는 멀티스레드 프로세서.
  12. (정정) 제 1 항에 있어서,
    상기 기능 유니트들 중의 하나가 특정명령의 실행을 개시하는 것과, 상기 특정명령의 해독결과를 어느 명령 해독수단이 발행한 것인지를 검출하는 특정명령 검출수단과,
    상기 특정명령 검출수단이 특정명령의 실행개시를 검출한 경우, 상기 특정명령을 발행한 명령 해독수단에 대응하는 명령흐름의 우선도를 예정된 기간 동안 일시적으로 변경하는 일시적 변경수단을 추가로 포함하고, 상기 명령흐름의 우선도는 다른 명령흐름의 우선도보다 높게 되도록 변경되는 것을 특징으로 하는 멀티스레드 프로세서.
  13. (정정) 제 1 항에 있어서,
    상기 복수의 명령 해독수단은, 상기 지정된 기능부에 상기 해독명령을 발행할 것을 상기 각 기능부에 요청하고,
    상기 멀티스레드 프로세서는,
    각 명령흐름을 실행상태로 할 것인지 정지상태로 할 것인지를 나타내는 자기정지 데이터를 유지하는 자기정지 데이터 유지수단을 추가로 포함하고,
    상기 제어수단은,
    상기 복수의 명령 해독수단으로부터 송신된 명령 발행요구를 수신한 경우, 상기 결정을 수행하는 조정수단과,
    상기 자기정지 데이터에 의해 정지상태로 되어있는 명령흐름에 대응하는 명령 해독수단으로부터 상기 조정수단으로의 명령 발행요구의 통지를 정지시키는 정지수단을 포함하며, 상기 명령 발행요구는 상기 복수의 명령 해독수단으로부터 상기 조정수단에 송신되는 명령 발행 요구들 중의 하나이며,
    상기 기능 유니트들 중의 하나는, 하나의 명령 스트림을 정지시키는 명령을 수신하고, 상기 명령이 속한 명령 스트림의 상기 자기정지 데이터 유지수단에 유지된 자기정지 데이터를 변경시키도록 배열되는 것을 특징으로 하는 멀티스레드 프로세서.
  14. (정정) 제 13 항에 있어서,
    하나의 명령흐름이 실행상태에 있고 나머지 명령흐름이 정지상태에 있는 것을 나타내는 배타 정지 데이터를 각각의 명령흐름에 유지하는 배타 정지 데이터 유지수단을 추가로 구비하고,
    상기 정지수단은, 상기 배타 정지 데이터에 의해 정지상태로 되어 있는 명령흐름에 대응하는 상기 명령 해독수단으로부터 상기 조정수단으로의 명령 발행요구의 통지를 정지시키는 것을 특징으로 하는 멀티스레드 프로세서.
  15. (삭제)
  16. (정정) 제 13 항에 있어서,
    상기 특정명령은, 상기 각 우선도가 상승되는 것인지 하강되는 것인지를 나타내는 오퍼레이션 코드만으로 이루어지며,
    상기 기능 유니트들 중의 하나는, 상기 특정명령의 해독결과가 발행된 경우 상기 특정명령을 발행한 명령 해독수단을 검출하고, 상기 검출된 명령 해독수단에 대응하는 명령흐름의 우선도를 상승 또는 하강시키는 것을 특징으로 하는 멀티스레드 프로세서.
  17. (정정) 제 16 항에 있어서,
    상기 유지수단은 판독전용의 제 1필드를 갖는 제어 레지스터를 포함하고,
    상기 기능 유니트들 중의 하나는, 상기 제어 레지스터의 판독명령의 해독결과가 발행된 경우 상기 판독명령을 발행한 명령 해독수단을 검출하고, 상기 검출된 명령 해독흐름에 대응하는 명령흐름의 ID를 상기 제 1 필드의 판독 데이터로서 내부 버스에 출력하는 것을 특징으로 하는 멀티스레드 프로세서.
  18. (정정) 제 17 항에 있어서,
    상기 제어 레지스터는 상기 각 명령흐름의 우선도를 유지하는 우선도 필드를 포함하며,
    상기 기능 유니트들 중의 하나는, 상기 제어 레지스터의 판독명령의 해독결과가 발행된 경우 각 우선도 필드를 판독하는 것을 특징으로 하는 멀티스레드 프로세서.
  19. (정정) 제 13 항에 있어서,
    상기 유지수단은 제어 레지스터를 구비하며,
    상기 제어 레지스터는, 상기 복수의 명령흐름의 고유의 우선도를 유지하기 위한 것으로서 상기 복수의 명령흐름에 1대1로 대응하는 개별 필드와, 판독전용의 제 2 필드를 구비하고,
    상기 기능 유니트들 중의 하나는, 상기 제어 레지스터의 판독 명령의 실행시, 상기 복수의 명령흐름 각각의 상기 개별 필드를 판독하고, 상기 판독 명령을 발행한 상기 명령 해독수단에 대응하는 명령흐름의 고유의 우선도를 상기 제 2 필드의 판독 데이터로서 상기 내부 버스에 출력하는 것을 특징으로 하는 멀티스레드 프로세서.
  20. (삭제)
  21. (정정) 제 16 항에 있어서,
    상기 유지수단은 각 명령흐름의 우선도를 유지하는 우선도 필드를 포함하고,
    상기 각 명령흐름의 우선도 필드는 각 실행모드에서 각 명령흐름의 우선도를 나타내는 작은 필드로 이루어지며,
    상기 기능 유니트들 중의 하나는, 상기 특정명령의 해독결과가 발행된 경우 상기 특정명령을 발행한 명령 해독수단을 검출하고, 상기 검출된 명령 해독수단에 대응하는 명령흐름의 우선도 필드중 현재의 실행모드용의 각각의 작은 필드의 우선도를 상승 또는 하강시키는 것을 특징으로 하는 멀티스레드 프로세서.
  22. (정정) 제 13 항에 있어서,
    상기 기능 유니트들 중의 하나가 특정명령의 실행을 개시하는 것과, 상기 특정명령의 해독결과를 어느 명령 해독수단이 발행한 것인지를 검출하는 특정명령 검출수단과,
    상기 특정명령 검출수단이 특정명령의 실행개시를 검출한 경우, 상기 특정명령을 발행한 명령 해독수단에 대응하는 명령흐름의 우선도를 예정된 기간 동안 일시적으로 변경하는 일시적 변경수단을 추가로 포함하고, 상기 명령흐름의 우선도는 다른 명령흐름의 우선도보다 높게 되도록 변경되는 것을 특징으로 하는 멀티스레드 프로세서.
  23. (정정) 제 1 항에 있어서,
    복수의 명령흐름을 동시에 서로 독립적으로 실행하고,
    상기 복수의 기능 유니트는 동시에 서로 독립적으로 명령을 실행하고,
    상기 복수의 명령 해독수단은 각 명령흐름의 명령들을 각각 페치하며,
    상기 멀티스레드 프로세서는 상기 각 명령흐름의 우선도를 지정하는 우선도 지정수단를 추가로 포함하고,
    상기 제어수단은,
    상기 특정 기능 유니트가 명령을 수신할 준비가 되었는지의 여부에 따라, 상기 해독 명령이 상기 특정 기능 유니트에 발행될 수 있는지의 여부를 판단하는 명령발행 판단수단과,
    상기 우선도 지정수단에 의해 지정되는 우선도에 따라, 2이상의 명령 해독수단에 의해 특정된 기능 유니트에 발행되는 하나의 명령을 결정하도록 2이상의 명령을 조정하는 명령발행 조정수단을 포함하는 것을 특징으로 하는 멀티스레드 프로세서.
  24. (정정) 제 23 항에 있어서,
    어느 명령이 속하는 명령흐름에 대하여 긴급을 요하는 처리가 발생된 경우, 상기 제어수단에 의해 발행될 것이라고 결정된 명령이 상기 기능 유니트로 발행되는 것을 일시적으로 금지하는 명령발행 금지수단을 추가로 포함하는 것을 특징으로 하는 멀티스레드 프로세서.
  25. (정정) 제 24 항에 있어서,
    상기 긴급을 요하는 처리는, 인터럽트 요구 또는 캐시 오류 발생의 통지인 것인 것을 특징으로 하는 멀티스레드 프로세서.
  26. (정정) 제 24 항에 있어서,
    상기 우선도 지정수단은 각 명령흐름의 우선도를 유지하는 제어 레지스터를 포함하는 것을 특징으로 하는 멀티스레드 프로세서.
  27. (삭제)
  28. (정정) 제 26 항에 있어서,
    상기 명령발행 조정수단은, 미리 정해진 절차에 따라 하나의 기능 유니트에 발행되는 명령을 결정하고, 상기 기능 유니트는 2이상의 명령에 의해 설정가능하고, 상기 명령이 속하는 명령흐름은 동일한 우선도를 갖는 것을 특징으로 하는 멀티스레드 프로세서.
  29. 제 28 항에 있어서,
    상기 명령발행 조정수단은, 상기 미리 정해진 절차에 따라 발행되는 명령을 결정하는 보조 판정수단을 포함하며, 상기 미리 정해진 절차에서는 상이한 명령흐름이 주기적으로 선택되거나, 전회의 명령흐름과는 다른 명령흐름의 명령이 선택되거나, 또는 상기 명령흐름들 중의 하나의 명령흐름의 명령이 고정적으로 선택되는 것을 특징으로 하는 멀티스레드 프로세서.
  30. (2회 정정) 제 26 항에 있어서,
    상기 제어 레지스터는 각 실행모드에서 각 명령흐름에 대한 우선도 필드를 포함하고,
    상기 명령발행 조정수단은 실행모드에 대응하는 우선도 필드를 참조하여 상기 복수의 명령흐름을 조정하는 것을 특징으로 하는 멀티스레드 프로세서.
  31. (정정) 제 24 항에 있어서,
    상기 우선도 지정수단은 명령흐름 중의 특정명령에 의해 각 실행모드에서 각 명령흐름에 대해 설정가능한 우선도 필드를 갖는 제어 레지스터를 포함하고,
    상기 기능 유니트들 중의 하나는, 상기 특정명령을 발행한 상기 명령 해독수단에 대응하는 명령흐름과 그 실행모드를 검출하고, 상기 우선도를 상기 특정명령에 따라 상기 검출된 명령흐름과 실행모드에 대응하는 우선도 필드에 설정하는 것을 특징으로 하는 멀티스레드 프로세서.
  32. (정정) 제 31 항에 있어서,
    상기 특정명령은, 오퍼레이션 코드만으로 이루어지며, 각 우선도가 상승되는지 하강되는지를 나타내는 것을 특징으로 하는 멀티스레드 프로세서.
  33. (삭제)
  34. (삭제)
  35. (삭제)
  36. (삭제)
  37. (삭제)
  38. (삭제)
  39. (신설) 제 1 항에 있어서,
    상기 제어수단은 미리 정해진 절차에 따라 하나의 기능 유니트에 발행되는 명령을 결정하고, 상기 기능 유니트는 2이상의 명령에 의해 설정가능하고, 상기 명령이 속하는 명령흐름은 동일한 우선도를 갖는 것을 특징으로 하는 멀티스레드 프로세서.
  40. (신설) 제 39 항에 있어서,
    상기 미리 정해진 절차는, 상이한 명령흐름의 명령이 발행되도록 주기적으로 결정되는 절차, 전회에 발행된 명령의 명령흐름과는 다른 명령흐름의 명령이 명령흐름 실행의 이력에 따르는 절차, 및 명령흐름의 명령이 발행되도록 고정적으로 결정되는 절차 중의 어느 하나인 것을 특징으로 하는 멀티스레드 프로세서.
  41. (신설) 제 23 항에 있어서,
    상기 우선도 지정수단은, 각 명령흐름이 실행상태에 있는지 정지상태에 있는지를 추가로 지정할 수 있는 것을 특징으로 하는 멀티스레드 프로세서.
  42. (신설) 제 41 항에 있어서,
    상기 우선도 지정수단은,
    제 1의 명령에 의해 설정가능한 각 명령흐름의 우선도를 유지하는 제 1 레지스터와,
    제 2의 명령에 의해 설정되고, 각 명령흐름이 실행상태인지 정지상태인지를 나타내는 각 명령흐름의 상태 플래그를 유지하는 제 2 레지스터와,
    제 3의 명령에 의해 설정되고, 다른 명령흐름을 정지시킬 것을 지시하는 각 명령흐름의 배타적 정지 플래그를 유지하는 제 3 레지스터를 포함하고,
    상기 명령발행 판단수단은 상기 상태 플래그 및 상기 배타 정지 플래그에 따라 정지된 명령흐름의 명령이 발행될 수 없는 것으로 판단하는 것을 특징으로 하는 멀티스레드 프로세서.
  43. (신설) 제 42 항에 있어서,
    상기 제 1 명령은 상기 각 우선도가 상승되는지 하강되는지를 나타내는 오퍼레이션 코드만으로 이루어지고,
    상기 제 2 명령은 명령흐름이 정지상태에 있음을 나타내는 오퍼레이션 코드만으로 이루어지며,
    상기 제 3 명령은 다른 명령흐름이 정지되어 있음을 나타내는 오퍼레이션 코드만으로 이루어지고,
    상기 기능 유니트들 중의 하나는, 제 1, 제 2, 및 제 3의 명령을 발행하는 명령 해독수단에 대응하는 명령흐름을 검출하고, 상기 검출된 명령흐름에 대응하여 상기 우선도, 상기 상태 플래그 및 상기 배타 정지 플래그를 변경시키는 것을 특징으로 하는 멀티스레드 프로세서.
KR1019970041451A 1996-08-27 1997-08-27 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서 KR100500002B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP22472096 1996-08-27
JP96-224720 1996-08-27

Publications (2)

Publication Number Publication Date
KR19980019064A KR19980019064A (ko) 1998-06-05
KR100500002B1 true KR100500002B1 (ko) 2005-09-08

Family

ID=16818198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970041451A KR100500002B1 (ko) 1996-08-27 1997-08-27 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서

Country Status (5)

Country Link
US (1) US6105127A (ko)
EP (2) EP1291765B1 (ko)
KR (1) KR100500002B1 (ko)
CN (3) CN1280714C (ko)
DE (2) DE69739726D1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101107394B1 (ko) * 2008-10-16 2012-01-19 인터내셔널 비지네스 머신즈 코포레이션 명령어 차단 시퀀서 로직을 갖는 다중 실행 유닛 처리 유닛
KR101502421B1 (ko) 2013-07-31 2015-03-16 한국항공우주연구원 시험 및 운영 절차 동시 수행 방법 및 시스템

Families Citing this family (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
CN1199471C (zh) * 1997-11-28 2005-04-27 松下电器产业株式会社 提高了处理效率的图象声音处理装置
US6286027B1 (en) * 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US6389449B1 (en) 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6260133B1 (en) * 1999-02-08 2001-07-10 Kabushiki Kaisha Toshiba Processor having operating instruction which uses operation units in different pipelines simultaneously
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
EP1236097A4 (en) * 1999-09-01 2006-08-02 Intel Corp BRANCH COMMAND TO THE PROCESSOR
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
JP4160705B2 (ja) * 1999-10-15 2008-10-08 富士通株式会社 プロセッサ及びプロセッサシステム
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US6357016B1 (en) 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
DE10000960C1 (de) * 2000-01-12 2001-12-20 Infineon Technologies Ag Datenverarbeitungsvorrichtung
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6658551B1 (en) * 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
US7007153B1 (en) 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
DE60143896D1 (de) 2000-07-14 2011-03-03 Mips Tech Inc Anweisungsabruf und -absendung in einem multi-thread-system
WO2002046887A2 (en) * 2000-10-23 2002-06-13 Xyron Corporation Concurrent-multitasking processor
US7035998B1 (en) 2000-11-03 2006-04-25 Mips Technologies, Inc. Clustering stream and/or instruction queues for multi-streaming processors
US7139898B1 (en) 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US20030014474A1 (en) * 2001-05-30 2003-01-16 Mckaig Ray S. Alternate zero overhead task change circuit
US20020184290A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Run queue optimization with hardware multithreading for affinity
US20040172631A1 (en) * 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US6779065B2 (en) * 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US7676588B2 (en) * 2001-10-05 2010-03-09 International Business Machines Corporation Programmable network protocol handler architecture
US7072970B2 (en) * 2001-10-05 2006-07-04 International Business Machines Corporation Programmable network protocol handler architecture
KR20040064713A (ko) * 2001-11-26 2004-07-19 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7127561B2 (en) 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7213134B2 (en) * 2002-03-06 2007-05-01 Hewlett-Packard Development Company, L.P. Using thread urgency in determining switch events in a temporal multithreaded processor unit
US6895497B2 (en) * 2002-03-06 2005-05-17 Hewlett-Packard Development Company, L.P. Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
JP3769249B2 (ja) * 2002-06-27 2006-04-19 富士通株式会社 命令処理装置および命令処理方法
US7219241B2 (en) * 2002-11-30 2007-05-15 Intel Corporation Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode
US20060265571A1 (en) * 2003-03-05 2006-11-23 Thomas Bosch Processor with different types of control units for jointly used resources
US7013400B2 (en) * 2003-04-24 2006-03-14 International Business Machines Corporation Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US7213093B2 (en) 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US6987517B1 (en) 2004-01-06 2006-01-17 Nvidia Corporation Programmable graphics processor for generalized texturing
FR2867872A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
FR2867873A1 (fr) 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
JP2005301791A (ja) * 2004-04-14 2005-10-27 Nec Corp 移動通信端末および移動通信端末のアプリケーション起動制御方法
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US8095778B1 (en) * 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7290116B1 (en) 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7533248B1 (en) * 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7595629B2 (en) * 2004-07-09 2009-09-29 Formfactor, Inc. Method and apparatus for calibrating and/or deskewing communications channels
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US7673164B1 (en) * 2004-12-13 2010-03-02 Massachusetts Institute Of Technology Managing power in a parallel processing environment
US8719819B2 (en) * 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7490230B2 (en) * 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US20060229638A1 (en) * 2005-03-29 2006-10-12 Abrams Robert M Articulating retrieval device
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
JP2007109057A (ja) 2005-10-14 2007-04-26 Hitachi Ltd プロセッサ
US7386647B2 (en) * 2005-10-14 2008-06-10 Dell Products L.P. System and method for processing an interrupt in a processor supporting multithread execution
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US7734897B2 (en) * 2005-12-21 2010-06-08 Arm Limited Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
CN100362477C (zh) * 2006-03-10 2008-01-16 华为技术有限公司 一种协调面向用户功能执行顺序的方法和装置
GB2449106B (en) * 2007-05-10 2011-07-27 Advanced Risc Mach Ltd Issue policy control within a multi-threaded in-order superscalar processor
EP2159687B1 (en) * 2007-06-20 2012-12-05 Fujitsu Limited Arithmetic unit
JP4907487B2 (ja) * 2007-10-24 2012-03-28 株式会社リコー 画像処理装置、画像処理方法及び該方法を実行させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体
US7962690B2 (en) * 2008-01-04 2011-06-14 International Business Machines Corporation Apparatus and method to access data in a raid array
US20110138152A1 (en) * 2008-08-21 2011-06-09 Panasonic Corporation Instruction control device
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
CN101770357B (zh) * 2008-12-31 2014-10-22 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
US8788793B2 (en) 2009-05-18 2014-07-22 Panasonic Corporation Instruction issue to plural computing units from plural stream buffers based on priority in instruction order table
JP5548037B2 (ja) 2010-06-11 2014-07-16 パナソニック株式会社 命令発行制御装置及び方法
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9542193B2 (en) 2012-12-28 2017-01-10 Intel Corporation Memory address collision detection of ordered parallel threads with bloom filters
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) * 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
JP5803972B2 (ja) 2013-04-18 2015-11-04 株式会社デンソー マルチコアプロセッサ
EP2940575B1 (en) * 2014-05-02 2018-05-09 Nxp B.V. Controller circuits, data interface blocks, and methods for transferring data
US10467011B2 (en) 2014-07-21 2019-11-05 Intel Corporation Thread pause processors, methods, systems, and instructions
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
CN111079912B (zh) * 2018-10-19 2021-02-12 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111078293B (zh) * 2018-10-19 2021-03-16 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111079916B (zh) * 2018-10-19 2021-01-15 安徽寒武纪信息科技有限公司 运算方法、系统及相关产品
CN111079911B (zh) * 2018-10-19 2021-02-09 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
WO2020121416A1 (ja) 2018-12-11 2020-06-18 サンケン電気株式会社 プロセッサ及びパイプライン処理方法
JP7415345B2 (ja) * 2019-07-03 2024-01-17 オムロン株式会社 制御システム、サポート装置および設定プログラム
US11397612B2 (en) * 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
CN110979347B (zh) * 2019-12-10 2021-11-23 北京经纬恒润科技股份有限公司 一种自动驾驶汽车底盘域的指令仲裁方法及系统
CN113157631B (zh) * 2020-01-22 2024-06-21 瑞昱半导体股份有限公司 处理器电路以及数据处理方法
CN115629807B (zh) * 2022-10-31 2023-04-14 海光信息技术股份有限公司 多线程处理器的译码方法、处理器、芯片及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6019709B2 (ja) * 1977-07-19 1985-05-17 三菱電機株式会社 信号2値化装置
DE3532481A1 (de) * 1985-09-12 1987-03-19 Philips Patentverwaltung Datenverarbeitungsanordnung
CN1009399B (zh) * 1987-06-02 1990-08-29 德国Itt工业股份公司 中央处理器
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
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
WO1998002799A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A parallel and scalable instruction scanning unit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Int. Conf. on Computer Architecture(1992.05) *
Int. Conf. on Supercomputing(1996.05) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101107394B1 (ko) * 2008-10-16 2012-01-19 인터내셔널 비지네스 머신즈 코포레이션 명령어 차단 시퀀서 로직을 갖는 다중 실행 유닛 처리 유닛
KR101502421B1 (ko) 2013-07-31 2015-03-16 한국항공우주연구원 시험 및 운영 절차 동시 수행 방법 및 시스템

Also Published As

Publication number Publication date
EP1291765B1 (en) 2009-12-30
CN1177772A (zh) 1998-04-01
CN1147785C (zh) 2004-04-28
EP0827071B1 (en) 2002-11-27
CN1782989A (zh) 2006-06-07
EP0827071A2 (en) 1998-03-04
CN1280714C (zh) 2006-10-18
EP0827071A3 (en) 1999-01-20
EP1291765A2 (en) 2003-03-12
US6105127A (en) 2000-08-15
EP1291765A3 (en) 2006-10-25
CN1495605A (zh) 2004-05-12
DE69717369D1 (de) 2003-01-09
DE69717369T2 (de) 2003-09-11
DE69739726D1 (de) 2010-02-11
CN100373331C (zh) 2008-03-05
KR19980019064A (ko) 1998-06-05

Similar Documents

Publication Publication Date Title
KR100500002B1 (ko) 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서
JP3760035B2 (ja) 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US8195922B2 (en) System for dynamically allocating processing time to multiple threads
US6675191B1 (en) Method of starting execution of threads simultaneously at a plurality of processors and device therefor
KR100759280B1 (ko) 복수의 오퍼레이팅 시스템을 실행하는 계산기
EP1685486B1 (en) Interrupt handling in an embedded multi-threaded processor to avoid priority inversion and maintain real-time operation
US6971103B2 (en) Inter-thread communications using shared interrupt register
KR101100470B1 (ko) 멀티쓰레드 프로세서에서의 자동 저전력 모드 호출을 위한장치 및 방법
KR100436675B1 (ko) 멀티쓰레드 프로세서에서 공유 파이프라인 및 다른파이프라인 스테이지의 선택적인 플러쉬
US20070266387A1 (en) Multithreaded computer system and multithread execution control method
WO1998013759A1 (fr) Machine de traitement de donnees et systeme de traitement de donnees
JP4057911B2 (ja) 予め格納されるベクトルの割込処理システムおよび方法
JP2748822B2 (ja) 情報処理装置
US10732976B2 (en) Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
JPH09509515A (ja) データ処理システムの例外事態回復
KR100263013B1 (ko) 슈퍼 스칼라 컴퓨터 시스템의 리네임 레지스터 와 구조화된레지스터를 관리하는 방법 및 컴퓨터 시스템
JP4608100B2 (ja) 多重処理システムにおける改良結果処理方法
CA1304823C (en) Apparatus and method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions
GB2372348A (en) A multi-mode, multi-tasking processor with reduction in context preservation and restoration to save processing time
CN108701031B (zh) 寄存器访问控制
JPH044630B2 (ko)
JPH10240702A (ja) 並列処理プロセッサおよびその処理方法
JP2001134448A (ja) 情報処理装置及び割込み処理方法
JPS62226339A (ja) 命令先取り制御方式

Legal Events

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

Payment date: 20110526

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee