JPH10124316A - Multithread processor independently processing plural instruction flows and flexibly controlling processing performance by the same instruction flows - Google Patents

Multithread processor independently processing plural instruction flows and flexibly controlling processing performance by the same instruction flows

Info

Publication number
JPH10124316A
JPH10124316A JP9230976A JP23097697A JPH10124316A JP H10124316 A JPH10124316 A JP H10124316A JP 9230976 A JP9230976 A JP 9230976A JP 23097697 A JP23097697 A JP 23097697A JP H10124316 A JPH10124316 A JP H10124316A
Authority
JP
Japan
Prior art keywords
instruction
priority
unit
issued
stream
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP9230976A
Other languages
Japanese (ja)
Other versions
JP3760035B2 (en
Inventor
Kozo Kimura
浩三 木村
Tokuzo Kiyohara
督三 清原
Kosuke Yoshioka
康介 吉岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP23097697A priority Critical patent/JP3760035B2/en
Publication of JPH10124316A publication Critical patent/JPH10124316A/en
Application granted granted Critical
Publication of JP3760035B2 publication Critical patent/JP3760035B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To provide a multithread processor which dynamically realizes the processing performance needed by instruction flows and to improves the total throughput. SOLUTION: This processor is equipped with instruction decoding parts 1 to 3 which decode instructions, specify function units to execute the instructions, and output instruction issue requests, a priority control part 60 which controls the priority levels of instruction flows that can be set by the instruction flows with instructions in the instruction flows, and an instruction issue arbitration part 40 which determines instructions to be issued to the function units according to the priority when more than one instruction decoding part output instruction issue requests to one function unit. Consequently, the processing performance needed by the instruction flows can dynamically and properly be actualized and the total throughput can be improved.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は複数の命令流から命
令を並列に発行することによって、複数の演算ユニット
を効率よく使用する情報処理装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an information processing apparatus for efficiently using a plurality of operation units by issuing instructions from a plurality of instruction streams in parallel.

【0002】[0002]

【従来の技術】従来例としては、一つのプロセッサ内で
複数の命令流を同時に処理するマルチスレッド・プロセ
ッサがある。マルチスレッド・プロセッサの方式につい
ては、"A Multithreaded Processor Architecture with
Simultaneous Instruction Issuing," In Proc. of IS
S'91:International Symposium on Supercomputing, Fu
kuoka, Japan, pp.87-96, November 1991 に詳細に述べ
られている。
2. Description of the Related Art As a conventional example, there is a multi-thread processor for simultaneously processing a plurality of instruction streams in one processor. For information on the multithreaded processor method, see "A Multithreaded Processor Architecture with
Simultaneous Instruction Issuing, "In Proc. Of IS
S'91: International Symposium on Supercomputing, Fu
kuoka, Japan, pp.87-96, November 1991.

【0003】図15は、この従来例のマルチスレッドプ
ロセッサの構成を示すブロック図である。同図におい
て、マルチスレッドプロセッサは、命令キャッシュ50
0、3個の命令フェッチユニット501、3個の解読ユ
ニット502、12個のスタンバイステーション50
3、4個の命令スケジューリングユニット504、4個
の機能ユニット505、レジスタセット506を備え、
同図における命令フェッチユニットと命令解読ユニット
との組みに対応する3つの命令流を同時に独立して実行
するよう構成されている。ここで命令流とは、命令フェ
ッチユニットと命令解読ユニットとの組みによる処理の
流れに対応する。
FIG. 15 is a block diagram showing the configuration of this conventional multithread processor. In the figure, a multi-thread processor includes an instruction cache 50
0, 3 instruction fetch units 501, 3 decoding units 502, 12 standby stations 50
Comprising three or four instruction scheduling units 504, four functional units 505, and a register set 506;
It is configured to simultaneously and independently execute three instruction streams corresponding to the combination of the instruction fetch unit and the instruction decoding unit in FIG. Here, the instruction flow corresponds to a processing flow by a combination of an instruction fetch unit and an instruction decoding unit.

【0004】同図において、命令フェッチユニット50
1は、それぞれ異なる命令流の命令を命令キャッシュ5
00から読み込む。解読ユニット501は、それぞれの
命令流の命令を解読し、当該命令を処理可能な機能ユニ
ット505に接続されているスタンバイステーション5
03に命令の解読結果(以下単に命令という)を格納す
る。
In FIG. 1, an instruction fetch unit 50 is provided.
1 is an instruction cache 5 which stores instructions of different instruction flows.
Read from 00. The decoding unit 501 decodes the instructions of the respective instruction streams, and the standby station 5 connected to the functional unit 505 capable of processing the instructions.
03 stores an instruction decoding result (hereinafter simply referred to as an instruction).

【0005】命令スケジューリングユニット504は、
スタンバイステーション503から適当な命令を選択
し、空いている機能ユニット505に送る。一の機能ユ
ニットに対する異なる命令流の命令解読結果がスタンバ
イステーション503に格納されている場合には、固定
的な順番で命令が選択される。これにより命令流間の公
平が図られている。
[0005] The instruction scheduling unit 504 includes:
An appropriate command is selected from the standby station 503 and sent to the free functional unit 505. When the instruction decoding results of different instruction streams for one functional unit are stored in the standby station 503, the instructions are selected in a fixed order. This ensures fairness between the command streams.

【0006】機能ユニット505は、それぞれ命令を実
行する演算器であり、スタンバイステーション503か
らの命令をレジスタセット506を用いて実行する。各
機能ユニットは同じものでよいが、例えばロード/スト
アユニット、整数演算ユニット、浮動小数点演算ユニッ
ト、乗除算ユニットなどの演算種類別に備える場合が多
い。
The functional units 505 are arithmetic units for executing instructions, respectively, and execute instructions from the standby station 503 using the register set 506. Each functional unit may be the same, but is often provided for each type of operation such as a load / store unit, an integer operation unit, a floating point operation unit, a multiplication / division unit, and the like.

【0007】上記のように構成されたマルチスレッド・
プロセッサにおいて、その動作を簡単に説明する。同図
のマルチスレッドプロセッサでは命令フェッチユニット
501と解読ユニット502とが三組み備えられている
ので、3つの命令流を並列にフェッチ・解読することが
できる。3つの命令流と命令キャッシュ500(又は図
外のメインメモリ)中のプログラムとの対応関係につい
ては、1つのプログラムが1つの命令流に対応する場合
(3つのプログラムから3つの命令流が生成される場
合)や、1つのプログラムが複数の命令流に対応する場
合(1つのプログラムから3つの命令流が生成される場
合)などがある。後者は、例えば1つの画像処理プログ
ラムを異なる画像データに対して同時に複数の命令流と
して実行させる場合である。
[0007] The multi-thread structured as described above
The operation of the processor will be briefly described. In the multi-thread processor shown in the figure, three instruction fetch units 501 and three decoding units 502 are provided, so that three instruction streams can be fetched and decoded in parallel. Regarding the correspondence between the three instruction streams and the programs in the instruction cache 500 (or the main memory (not shown)), one program corresponds to one instruction stream (three instruction streams are generated from three programs). Or one program corresponds to a plurality of instruction streams (three instruction streams are generated from one program). The latter is, for example, a case where one image processing program is simultaneously executed as a plurality of instruction streams for different image data.

【0008】解読ユニット502に解読された命令は、
スタンバイステーション503、命令スケジューリング
ユニット504を介して、当該命令に対応する機能ユニ
ットに発行される。各機能ユニットは、どの命令流から
の命令であっても発行された命令を実行する。このよう
に、マルチスレッド・プロセッサの特徴は、複数の命令
流を演算器を共有して同時に実行することである。
[0008] The instructions decoded by the decoding unit 502 are:
The instruction is issued to the functional unit corresponding to the instruction via the standby station 503 and the instruction scheduling unit 504. Each functional unit executes the issued instruction regardless of the instruction stream. As described above, a characteristic of the multi-thread processor is that a plurality of instruction streams are simultaneously executed by sharing a computing unit.

【0009】なお、マルチスレッド・プロセッサは一つ
のプロセッサ内部で複数の命令流を扱うが、一つの命令
流を実行する単位を論理プロセッサと呼ぶことにする。
論理プロセッサは各々独立に命令流を扱えるように解読
ユニットや命令のシーケンス制御機構やレジスタセット
などを有する。複数の論理プロセッサにより使用される
機能ユニットやキャッシュメモリなどは論理プロセッサ
間で共有される。
Although a multi-thread processor handles a plurality of instruction streams inside one processor, a unit for executing one instruction stream is called a logical processor.
Each of the logical processors has a decoding unit, an instruction sequence control mechanism, a register set, and the like so as to handle an instruction stream independently. Functional units and cache memories used by a plurality of logical processors are shared between the logical processors.

【0010】一方、論理プロセッサに対して全体のプロ
セッサを物理プロセッサと呼ぶことにする。また、マル
チスレッド・プロセッサと既存のスーパースカラ方式の
プロセッサとを比べると、スーパースカラ・プロセッサ
は、機能ユニットのみの多重化(複数化)がなされてい
るため、同時に処理可能な命令流は1つであり、命令間
の依存関係によりパイプラインインタロックが頻繁に発
生し、その結果機能ユニットの使用効率は上がらず性能
向上が困難であった。これに対して、上記のマルチスレ
ッドプロセッサは、複数の命令流の命令を並列に実行す
ることにより、各機能ユニットの使用効率を上げ、性能
向上を実現できる。
On the other hand, the whole processor will be called a physical processor with respect to a logical processor. When comparing a multithreaded processor with an existing superscalar processor, the superscalar processor is multiplexed (pluralized) with only functional units, so that only one instruction stream can be processed simultaneously. Therefore, pipeline interlock frequently occurs due to dependencies between instructions, and as a result, the use efficiency of the functional unit does not increase and it is difficult to improve the performance. On the other hand, the above-described multi-thread processor can increase the efficiency of use of each functional unit and improve performance by executing a plurality of instruction stream instructions in parallel.

【0011】[0011]

【発明が解決しようとする課題】しかしながら上記マル
チスレッドプロセッサの構成では、下記の問題点を有し
ていた。第1に、複数の論理プロセッサが機能ユニット
を共有しているため、複数の命令流から発行される命令
が機能ユニットにおいて競合することがあり、このた
め、ある一定の期間で、特定の論理プロセッサの命令発
行が他の論理プロセッサの命令発行に比べて極端に少な
くなる場合があり、その特定の論理プロセッサの性能が
極端に低下するという問題がある。また、論理プロセッ
サ間で負荷が大きく異なる場合には、各論理プロセッサ
に同じ処理内容の(同一プログラムから生成される)命
令流を割り付けた場合であっても、特定の命令流だけ処
理が遅れることになり、処理の終了時間がばらつき、全
体として速度が上がらない場合も起こる。
However, the configuration of the multi-thread processor has the following problems. First, because multiple logical processors share a functional unit, instructions issued from multiple instruction streams may compete in the functional unit, and thus, during a certain period of time, a particular logical processor In some cases, the number of instructions issued by another logical processor may be extremely small as compared with the number of instructions issued by other logical processors, and the performance of the specific logical processor is extremely reduced. Also, when the load between logical processors is significantly different, even if instruction flows having the same processing content (generated from the same program) are assigned to each logical processor, processing is delayed by a specific instruction flow. And the end time of the process varies, and the speed may not increase as a whole.

【0012】第2に、論理プロセッサにそれぞれ異なる
命令流が割り付けられ、特定の命令流だけ早く実行した
い場合が発生しても、特定の論理プロセッサの処理速度
を相対的に上げたり、命令キャッシュなどの共有資源を
占有してしまうことができないため、全体の性能が低下
してしまう。たとえば、緊急を要する割り込み処理など
が発生した場合などがこれに当たる。
Secondly, even if different instruction streams are assigned to the logical processors, and there is a case where it is desired to execute a specific instruction stream faster, even if the processing speed of the specific logical processor is relatively increased, an instruction cache or the like can be used. Since the shared resources cannot be occupied, the overall performance is reduced. For example, this is the case where an urgent interrupt process or the like occurs.

【0013】上記問題点に鑑み本発明の目的は、複数の
命令流間で各命令流の処理性能を柔軟に調整することが
でき、かつ全体の処理効率を向上させたマルチスレッド
・プロセッサを提供することを目的とする。
In view of the above problems, an object of the present invention is to provide a multi-thread processor capable of flexibly adjusting the processing performance of each instruction flow among a plurality of instruction flows and improving the overall processing efficiency. The purpose is to do.

【0014】[0014]

【課題を解決するための手段】上記目的を達成するマル
チスレッドプロセッサは、それぞれ命令を実行する複数
の機能ユニットと、命令流に対応して設けられ、それぞ
れ命令を解読して、当該命令を実行すべき機能ユニット
を指定するとともに当該機能ユニットに解読された命令
を発行すベきことを要求する命令発行要求を作成する複
数の命令解読手段と、命令流毎に命令流の優先度を保持
する保持手段と、2以上の命令発行要求が同時に一の機
能ユニットを指定している場合に、保持手段に保持され
た優先度に従って、当該機能ユニットに発行すべき解読
された命令を決定する制御手段とを備えて構成される。
A multi-thread processor that achieves the above object is provided in correspondence with a plurality of functional units each executing an instruction and an instruction stream, decodes each instruction, and executes the instruction. A plurality of instruction decoding means for designating a functional unit to be issued and generating an instruction issuance request for requesting that the decoded instruction be issued to the functional unit, and holding the priority of the instruction flow for each instruction flow Holding means, and control means for determining a decoded instruction to be issued to the functional unit according to the priority held by the holding means when two or more instruction issuance requests simultaneously designate one functional unit And is provided.

【0015】この構成によれば、各機能ユニットに発行
すべき命令(命令の解読結果)が前記優先度に従って決
定されるので、複数の命令流間で負荷のばらつきを優先
度に応じて柔軟に調整することができ、命令流毎に必要
とされる処理性能を適切に実現し、かつ全体の処理効率
を向上させることができるという効果がある。ここで前
記保持手段は、さらに、命令によって設定可能な、命令
流毎に命令流を停止すべきか実行すべきかを示すフラグ
群を保持し、前記制御手段は、前記決定を行う調停手段
と、停止を示すフラグが設定されている場合には、その
フラグに対応する命令流の命令発行要求を除外して前記
決定を行うことにより、当該命令流を停止する停止手段
とを備えてもよい。
According to this configuration, the instruction to be issued to each functional unit (the result of decoding the instruction) is determined according to the priority, so that the load variation among a plurality of instruction streams can be flexibly determined according to the priority. Adjustments can be made, and the processing performance required for each instruction stream can be appropriately realized, and the overall processing efficiency can be improved. Here, the holding unit further holds a flag group that can be set by the instruction and indicates whether the instruction flow should be stopped or executed for each instruction flow, and the control unit includes: an arbitration unit that makes the determination; If a flag indicating the instruction flow is set, a stop means for stopping the instruction flow by making the above-described determination excluding the instruction issue request of the instruction flow corresponding to the flag may be provided.

【0016】この構成によれば、さらに、命令流がその
実行過程においてアイドル状態や待ち状態にある場合に
は、その命令流を停止状態とすることができる。つまり
その結果、他の命令流を優先して実行させることができ
るので、さらに全体の処理性能を向上させることができ
る。
According to this configuration, when the instruction stream is in an idle state or a waiting state in its execution process, the instruction stream can be stopped. That is, as a result, other instruction streams can be executed with priority, and the overall processing performance can be further improved.

【0017】[0017]

【発明の実施の形態】BEST MODE FOR CARRYING OUT THE INVENTION

<マルチスレッド・プロセッサの構成>図1は、本発明
の実施形態におけるマルチスレッド・プロセッサの主要
部の構成を示すブロック図である。本マルチスレッド・
プロセッサは、命令解読部1〜3、機能ユニットA2
0、機能ユニットB21、機能ユニットC22、機能ユ
ニットD23、命令発行判断部30、命令発行調停部4
0、命令発行禁止部50、優先順位制御部60、命令選
択部70を有し、論理プロセッサの実行状態、命令流の
優先度及び外部要因に応じて各機能ユニットへの命令発
行を調停するように構成されている。
<Structure of Multithread Processor> FIG. 1 is a block diagram showing the structure of a main part of a multithread processor according to an embodiment of the present invention. This multi-thread
The processor includes instruction decoding units 1 to 3 and a functional unit A2.
0, functional unit B21, functional unit C22, functional unit D23, instruction issue determination unit 30, instruction issue arbitration unit 4
0, an instruction issuance prohibition unit 50, a priority control unit 60, and an instruction selection unit 70, and arbitrates instruction issuance to each functional unit according to the execution state of the logical processor, the priority of the instruction flow, and external factors. Is configured.

【0018】また、本マルチスレッド・プロセッサは、
図15に示した命令キャッシュ、命令フェッチユニッ
ト、レジスタファイルなどを当然に備えているが、従来
例と同じなので図1では省略している。同様に機能ユニ
ットのパイプライン段数などの詳細な構成等についても
本発明と関係しないので説明を省略する。また、説明を
わかりやすくするために本実施形態では、各命令解読部
は命令流1個につき1命令を解読し、一度に発行できる
命令も1個であるものとする。
Further, the present multi-thread processor includes:
Although the instruction cache, instruction fetch unit, register file, and the like shown in FIG. 15 are naturally provided, they are omitted from FIG. 1 because they are the same as the conventional example. Similarly, the detailed configuration of the functional unit such as the number of pipeline stages is not related to the present invention, and the description is omitted. In this embodiment, for the sake of simplicity, it is assumed that each instruction decoding unit decodes one instruction per instruction stream, and that only one instruction can be issued at a time.

【0019】図1において、命令解読部1〜3は、それ
ぞれ命令流の命令を解読し、解読結果として、命令発行
判断部30に命令発行要求を、命令選択部70に命令内
容(オペレーション等)を出力する。ここで、命令発行
要求は、命令発行を要求するフラグ(以下、要求フラグ
と呼ぶ)と、当該命令を実行すべき機能ユニットの種類
を示す情報(以下機能ユニット番号と呼ぶ)とを含む。
命令解読部1〜3は、独立に命令流を解読するので、そ
れぞれ上記の論理プロセッサに対応する。本実施形態で
は1つの物理プロセッサに3つの論理プロセッサを内蔵
させるために命令解読部が3つ設けられている。以降、
命令解読部1〜3に対応する論理プロセッサを論理プロ
セッサ1〜3と呼んで区別する。同様に論理プロセッサ
1〜3に対応する命令流を命令流1〜3と呼ぶ。
In FIG. 1, instruction decoding units 1 to 3 decode instructions in the instruction stream, respectively. As a result of the decoding, an instruction issuance request is sent to the instruction issuance determination unit 30 and instruction contents (operations and the like) are sent to the instruction selection unit 70. Is output. Here, the instruction issuance request includes a flag for requesting instruction issuance (hereinafter, referred to as a request flag) and information indicating a type of a functional unit in which the instruction is to be executed (hereinafter, referred to as a functional unit number).
The instruction decoding units 1 to 3 independently decode the instruction stream, and thus correspond to the above logical processors. In the present embodiment, three instruction decoding units are provided in order to incorporate three logical processors in one physical processor. Or later,
The logical processors corresponding to the instruction decoding units 1 to 3 are called logical processors 1 to 3 to distinguish them. Similarly, instruction streams corresponding to the logical processors 1 to 3 are referred to as instruction streams 1 to 3, respectively.

【0020】機能ユニットA20、B21、C22、D
23(以下、機能ユニットA、B、C、Dと呼ぶ)は、
命令解読部1〜3から命令選択部70を介して発行され
た命令(解読結果)を受けて、当該命令実行、すなわち
データアクセス処理や演算処理などを行う。各機能ユニ
ットの機能は、全て同じでよいが理解をし易いようにす
るためその処理内容を例示する。
Functional units A20, B21, C22, D
23 (hereinafter referred to as functional units A, B, C, and D)
In response to an instruction (decoding result) issued from the instruction decoding units 1 to 3 via the instruction selection unit 70, the instruction execution, that is, data access processing and arithmetic processing are performed. The functions of each functional unit may be all the same, but the processing contents will be exemplified for easy understanding.

【0021】すなわち、機能ユニットAはメモリアクセ
ス命令を処理するロードストアユニット、機能ユニット
Bは整数演算を処理する整数演算ユニット、機能ユニッ
トCは浮動小数点の加減算や整数と浮動小数点間の変換
を行なう浮動小数点ユニット、機能ユニットDは浮動小
数点の乗除算を行なう浮動小数点ユニットである。さら
に本実施形態では機能ユニットBは、整数演算の一処理
内容として、優先度の設定に関する命令を処理する機能
を有している。これらの機能ユニットは、論理プロセッ
サ1〜3の構成要素ではあるが論理プロセッサと1対1
に対応するわけではなく、論理プロセッサ1〜3に共用
される。また、各機能ユニットは、命令を処理中か否か
に応じて、命令を受け付けられる状態(以下、単にread
yと呼ぶ)にあるか受け付けられない状態(以下、単にn
ot readyと呼ぶ)にあるかを命令発行判断部30に通知
する。
That is, the functional unit A is a load store unit for processing a memory access instruction, the functional unit B is an integer operation unit for processing an integer operation, and the functional unit C is for performing addition and subtraction of floating point and conversion between integer and floating point. The floating-point unit and the functional unit D are floating-point units that perform multiplication and division of floating-point. Further, in the present embodiment, the functional unit B has a function of processing an instruction relating to the setting of the priority as one processing content of the integer operation. These functional units are components of the logical processors 1 to 3, but one-to-one with the logical processors.
, But is shared by the logical processors 1 to 3. Each functional unit is in a state in which an instruction can be received (hereinafter simply referred to as read) depending on whether or not the instruction is being processed.
y or not accepted (hereinafter simply n
ot ready) to the instruction issuance determination unit 30.

【0022】命令発行判断部30は、命令解読部1〜3
からの命令発行要求(上記要求フラグと機能ユニット番
号)を受けて、命令の発行先とすべき機能ユニットを判
断し、さらに、各機能ユニットからのreadyか否かを示
す通知と、優先順位制御部60からの各論理プロセッサ
が停止状態にあるか実行状態にあるかを示す通知とを受
けて、機能ユニットA〜D毎に、命令を発行可能か否か
を判断する。
The instruction issuance judging section 30 includes instruction decoding sections 1 to 3
From the instruction issuance request (the above-mentioned request flag and functional unit number), determine the functional unit to which the instruction is to be issued, further notify from each functional unit whether or not it is ready, and control the priority. Upon receiving a notification from the unit 60 indicating whether each logical processor is in a stopped state or in an executing state, it is determined whether or not an instruction can be issued for each of the functional units A to D.

【0023】命令発行調停部40は、1つの機能ユニッ
トに対して発行可能と判断された命令発行要求が複数あ
って競合する場合には、優先順位制御部60からの指定
される論理プロセッサ毎の優先度に応じて、複数の命令
発行要求を調停して、発行すべき命令を1つ決定する。
命令発行禁止部50は、命令発行調停部40の調停結果
に対して、当該命令を発行するか否かを最終的に判断
し、判断の結果、発行すべき命令を命令選択部70に指
示する。具体的には、論理プロセッサ毎に緊急を要する
処理が要求された場合には、当該論理プロセッサの命令
流の命令については発行を一時的に禁止し、そうでない
場合には、発行を命令選択部70に指示する。命令発行
禁止部50が一時的に命令発行を禁止しているのは、命
令発行判断部30及び命令発行調停部40による処理の
後に上記の緊急を要する処理が発生した場合に、それを
最優先するためである。命令発行禁止部50は、命令発
行調停部40により発行するべき命令が決定された後に
当該命令の発行を禁止することができるので、緊急を要
する処理の発生タイミングが命令発行調停部40による
決定後であっても、有効に禁止することができる。例え
ば、緊急を要する処理の発生タイミングが、マシンサイ
クルの期間の遅い時点であっても有効に禁止することが
できる。
The instruction issuance arbitration unit 40 is provided for each logical processor specified by the priority control unit 60 when there are a plurality of instruction issuance requests determined to be can be issued to one functional unit and there is a conflict. A plurality of instruction issuance requests are arbitrated according to the priority, and one instruction to be issued is determined.
The instruction issuance prohibition unit 50 finally determines whether or not to issue the instruction based on the arbitration result of the instruction issuance arbitration unit 40, and instructs the instruction selection unit 70 on the instruction to be issued as a result of the determination. . Specifically, when an urgent process is requested for each logical processor, the issuance of an instruction in the instruction stream of the logical processor is temporarily prohibited. Instruct 70. The instruction issuance prohibition unit 50 temporarily prohibits instruction issuance because the above-mentioned urgent processing occurs after the processing by the instruction issuance determination unit 30 and the instruction issuance arbitration unit 40, and the highest priority is given to this. To do that. The instruction issuance prohibition unit 50 can prohibit the issuance of the instruction after the instruction issuance arbitration unit 40 determines the instruction to be issued. Can be effectively prohibited. For example, even when the urgent process occurs late in the machine cycle period, it can be effectively prohibited.

【0024】優先順位制御部60は、論理プロセッサ毎
の優先度の管理、及び論理プロセッサ毎に実行状態にあ
るか停止状態にあるかを示す情報を管理し、命令発行調
停部40に対して上記優先度を通知し、命令発行判断部
30に対して上記実行状態か否かを通知する。さらに、
優先順位制御部60は、特定の命令実行時に、当該論理
プロセッサを所定数の連続サイクルの間優先させる機能
(以下、連続サイクル優先機能と呼ぶ)を有している。
上記優先度および実行状態か否か示す情報を管理するた
め、優先順位制御部60は、3本の制御レジスタすなわ
ち優先順位指定レジスタ、内部割込みレジスタ、排他停
止レジスタを備える。これらのレジスタは、命令流中の
命令に従ってその値が設定される。
The priority control unit 60 manages the priority of each logical processor, and manages information indicating whether the logical processor is in the execution state or the halt state. The priority is notified, and the instruction issuance determination unit 30 is notified as to whether or not the execution state is set. further,
The priority control unit 60 has a function of giving priority to the logical processor for a predetermined number of continuous cycles when a specific instruction is executed (hereinafter, referred to as a continuous cycle priority function).
In order to manage the priority and the information indicating whether or not the state is the execution state, the priority control unit 60 includes three control registers, that is, a priority specification register, an internal interrupt register, and an exclusive stop register. The values of these registers are set according to the instructions in the instruction stream.

【0025】命令選択部70は、命令発行禁止部50か
ら発行元の命令解読部及び発行先の機能ユニットを指示
する命令発行指示に従って、命令解読部1〜3により解
読された命令(オペレーション等)を機能ユニットA〜
Dに発行する。 <優先順位制御部60:優先順位指定レジスタ>図3
は、優先順位制御部60に内蔵される優先順位指定レジ
スタ(以下PRIレジスタと呼ぶ)のビット構成を示す説
明図である。
The instruction selecting unit 70 receives instructions (operations and the like) decoded by the instruction decoding units 1 to 3 in accordance with the instruction issuing unit designating the issuing unit's instruction decoding unit and the issuing destination functional unit from the instruction issuance inhibiting unit 50. To functional units A to
Issue to D. <Priority control unit 60: priority specification register> FIG.
4 is an explanatory diagram showing a bit configuration of a priority specification register (hereinafter referred to as a PRI register) incorporated in the priority control unit 60.

【0026】同図のように、PRIレジスタは、MYID、PRI
3、PRI2、PRI1、MYPRIの各フィールドを有し、論理プロ
セッサ毎の優先順位及び停止状態か否かを示す情報を保
持している。MYIDフィールドは、論理プロセッサにおい
て本PRIレジスタの読み出し命令が実行されたときに、
当該読み出し命令を実行した論理プロセッサのIDを示
すフィールドである。例えば、論理プロセッサ3におい
て当該読み出し命令が実行された場合には、論理プロセ
ッサ3を示すID(例えば100)が読み出される。
As shown in the figure, the PRI register stores MYID, PRI
3, each field of PRI2, PRI1, and MYPRI, and holds information indicating the priority of each logical processor and whether or not the logical processor is in a stopped state. The MYID field is set when a read instruction of this PRI register is executed in the logical processor.
This is a field indicating the ID of the logical processor that has executed the read instruction. For example, when the read instruction is executed in the logical processor 3, an ID (for example, 100) indicating the logical processor 3 is read.

【0027】PRI3フィールドは、論理プロセッサ3の優
先順位及び停止状態か否かを示すフィールドである。PR
I2、PRI1フィールドは、それぞれ論理プロセッサ2、1
についてPRI3と同様である。MYPRIフィールドは、論理
プロセッサにおいて本PRIレジスタの読み出し命令が実
行されたときに、当該読み出し命令を実行した論理プロ
セッサの優先順位を示すフィールドである。例えば、論
理プロセッサ1において当該読み出し命令が実行された
場合には、PRI1フィールドの内容がMYPRIフィールドに
コピーされて読み出される。
The PRI3 field is a field indicating the priority of the logical processor 3 and whether or not the logical processor 3 is in a stopped state. PR
I2 and PRI1 fields are logical processors 2 and 1 respectively.
Is similar to PRI3. The MYPRI field is a field indicating the priority of the logical processor executing the read instruction when the read instruction of the PRI register is executed in the logical processor. For example, when the read instruction is executed in the logical processor 1, the contents of the PRI1 field are copied to the MYPRI field and read.

【0028】図4は、PRIレジスタ中のPRI3〜PRI1フィ
ールドそれぞれの下位2ビットのビット割当てを示す説
明図である。同図ではPRI3〜1をPRIxと略し、フィール
ド内のビット位置を[ ]内に付記している。ただしx
は、論理プロセッサ番号(又はスレッド番号)を示す。
同図のようにPRIx[1:0]は、低(lowest)、中(middle)、
高(highest)の3レベルの優先順位を表す。2ビットで
3レベルの優先順位を表しているのは、PRIx[1]をスー
パーバイザモード用、PRIx[0]をユーザモード用として
個別に設定を可能にするためである。この優先順位の設
定は、次に示す専用命令(ニーモニック表記)に従って
機能ユニットBによって行われる。 「inc pri」;この命令は、優先順位を上げる、つまり
スーババイザモードではPRIx[1]を1に、ユーザモード
ではPRIx[0]を1に設定する。 「dec pri」;この命令は、優先順位を下げる、つまり
スーババイザモードではPRIx[1]を0に、ユーザモード
ではPRIx[0]を0に設定する。
FIG. 4 is an explanatory diagram showing the lower two bits of each of the PRI3 to PRI1 fields in the PRI register. In the figure, PRI3 to PRI1 are abbreviated as PRIx, and the bit positions in the field are added in []. Where x
Indicates a logical processor number (or thread number).
PRIx [1: 0] is low (lowest), middle (middle),
Represents three levels of highest priority. The reason why the two bits indicate the three levels of priority is that it is possible to individually set PRIx [1] for the supervisor mode and PRIx [0] for the user mode. The setting of the priority is performed by the functional unit B according to the following dedicated instruction (mnemonic notation). "Inc pri"; This instruction raises the priority, that is, sets PRIx [1] to 1 in the supervisor mode and sets PRIx [0] to 1 in the user mode. "Dec pri"; This instruction lowers the priority, that is, sets PRIx [1] to 0 in the supervisor mode and sets PRIx [0] to 0 in the user mode.

【0029】これらの命令は、通常のレジスタ間のデー
タ転送命令とは異なり、オペランドを必要とせず、オペ
レーションコードのみからなる命令なので、どの命令流
においても同じ命令を利用できることになる。例えば、
1つのプログラムから複数の命令流を生成し、各命令流
に異なるデータを分担させて並列に処理する場合に有用
である。
These instructions, unlike ordinary data transfer instructions between registers, do not require operands and are composed of only operation codes. Therefore, the same instruction can be used in any instruction stream. For example,
This is useful when a plurality of instruction streams are generated from one program, and different data are shared between the instruction streams so as to be processed in parallel.

【0030】また、前記一の機能ユニットによって当該
命令が属する命令流の優先度を変更するので、異なる命
令流の優先度を誤って書換えることもなくなり、誤動作
を防止することができる。例えば、RGBカラー画像の
色別画像データに同一の画像処理を施す場合、つまり、
画像処理用の1つのプログラムを3つの命令流として独
立かつ同時に実行させる場合、情報の隠蔽(プログラム
はRGBのどれかを区別する必要がない)することがで
き、かつ命令流の独立性を保証することができ、その結
果OSやシステム全体の信頼性が向上する。
Further, since the priority of the instruction stream to which the instruction belongs is changed by the one functional unit, it is possible to prevent the priority of a different instruction stream from being rewritten by mistake and to prevent malfunction. For example, when the same image processing is performed on image data for each color of an RGB color image,
When one image processing program is executed independently and simultaneously as three instruction streams, information can be hidden (the program need not distinguish any one of RGB) and the independence of the instruction stream is guaranteed. As a result, the reliability of the OS and the entire system is improved.

【0031】これらの命令及び同図のビット割当てによ
れば、例えば、ユーザモードからスーパーバイザモード
に移行して優先順位を変更した場合でも、ユーザモード
へ復帰したときに以前の優先度が保存されることにな
る。例えば、ユーザーモードで割り込みが発生し、スー
パーバイザーモードに一時的に遷移しても、割り込み処
理からユーザーモードに戻る前に、PRIx[1]を元に戻す
ことにより、ユーザーモードでの優先順位が保存される
ことになる。
According to these instructions and the bit assignments shown in the figure, even if, for example, the mode is changed from the user mode to the supervisor mode and the priority is changed, the previous priority is preserved when returning to the user mode. Will be. For example, even if an interrupt occurs in user mode and the system temporarily transitions to supervisor mode, PRIx [1] is restored before interrupt processing returns to user mode, so that the priority in user mode can be changed. Will be saved.

【0032】図5は、優先順位を示すフィールドPRIレ
ジスタ中のPRI3〜1フィールドそれぞれの上位1ビット
のビット割当てを示す説明図である。同図のようにPRIx
[2]は、論理プロセッサが実行状態か停止状態かを示し
ている。実行状態から停止状態への設定は、次に示す専
用命令(ニーモニック表記)に従って機能ユニットBに
よって行われる。 「halt」;この命令は、発行元の論理プロセッサを停止
状態にする。つまり、当該論理プロセッサのPRIx[2]を
1に設定する。また、この命令による停止状態を他の命
令による停止状態と区別するときは自己停止状態と呼
ぶ。
FIG. 5 is an explanatory diagram showing the bit allocation of the upper one bit of each of the PRI3 to PRI1 fields in the field PRI register indicating the priority order. As shown in the figure, PRIx
[2] indicates whether the logical processor is in an execution state or a stopped state. The setting from the execution state to the stop state is performed by the functional unit B according to the following dedicated instruction (mnemonic notation). "Halt"; This instruction puts the issuing logical processor in a halt state. That is, PRIx [2] of the logical processor is set to 1. When a stop state by this instruction is distinguished from a stop state by another instruction, it is called a self-stop state.

【0033】自己停止状態の解除(実行状態への復帰)
は、命令によるのではなく、当該論理プロセッサに対す
る割込み入力による。つまりマルチスレッドプロセッサ
では割込み処理は論理プロセッサ個別に発生するので自
己停止状態にある論理プロセッサに対して割込み(外部
割込み、内部割込み等)が発生した時点で解除される。 <優先順位制御部60:内部割込みレジスタ>図6は、
優先順位制御部60に内蔵される内部割込みレジスタ
(以下IRレジスタと呼ぶ)のビット構成を示す説明図で
ある。ここでいう内部割込みとは、論理プロセッサ間の
割込み、つまり一の論理プロセッサから他の論理プロセ
ッサへかける割込みをいう。内部割込みがかけられた論
理プロセッサは、自己停止状態にある場合に自己停止状
態が解除されるので、例えば論理プロセッサ間で同期し
て処理する場合や同期通信する場合に用いられる。
Release of self-stop state (return to execution state)
Is not due to instructions but to interrupt inputs to the logical processor. That is, in the multi-thread processor, the interrupt processing is generated for each logical processor, and is released when an interrupt (external interrupt, internal interrupt, etc.) occurs for the logical processor in the self-stop state. <Priority control unit 60: internal interrupt register> FIG.
FIG. 3 is an explanatory diagram showing a bit configuration of an internal interrupt register (hereinafter, referred to as an IR register) built in the priority control unit 60. The internal interrupt referred to here is an interrupt between logical processors, that is, an interrupt from one logical processor to another logical processor. The logical processor to which the internal interrupt has been applied is released from the self-stop state when in the self-stop state, and is used, for example, when processing is performed synchronously between the logical processors or when synchronous communication is performed.

【0034】同図に示すようにIRレジスタは、MYIDフィ
ールドとIR3〜IR1ビットとを有し、他の論理プロセッサ
に対して内部割込みを要求するためのレジスタである。
MYIDフィールドは、既に説明した図5と同様であるので
省略する。IR3ビットは、論理プロセッサ3に対して他
の論理プロセッサが内部割込みを要求するビットであ
る。このビットがONになると、その割込み要求を受け
た命令解読部3の制御によってPR3[2]が0に設定される
とともにIR3もOFFに戻される。ここでPR3[2]が0に
設定されることにより論理プロセッサ3の自己停止状態
が解除される。
As shown in the figure, the IR register has a MYID field and IR3 to IR1 bits and is a register for requesting an internal interrupt to another logical processor.
The MYID field is the same as that of FIG. The IR3 bit is a bit by which another logical processor requests the logical processor 3 for an internal interrupt. When this bit is turned ON, PR3 [2] is set to 0 and IR3 is returned to OFF under the control of the instruction decoding unit 3 which has received the interrupt request. Here, the self-stop state of the logical processor 3 is released by setting PR3 [2] to 0.

【0035】IR2、IR1ビットも、それぞれ論理プロセッ
サ2、1に対する割り込み要求ビットであり、IR3ビッ
トと同様である。IR3〜IR1ビットの設定は、通常のレジ
スタ転送命令に従って行われる。通常のレジスタ転送命
令命ではIR3〜IR1のビット位置に直接書き込む必要があ
るので、各命令流は自身の論理プロセッサIDと割込み
先の論理プロセッサIDとを区別する必要があるが、上
記のMYIDフィールドを読み出すことによって各命令流に
おいて論理プロセッサIDの操作を可能にしている。 <優先順位制御部60:排他停止レジスタ>図7は、優
先順位制御部60に内蔵される排他停止レジスタ(以下
EXCLレジスタと略す)のビット構成を示す説明図であ
る。ここで、排他的停止とはある1つのプロセッサ以外
の論理プロセッサを停止させることをいう。ただし、2
つ以上の論理プロセッサが同時に排他的停止状態にはな
ることはできない。
The IR2 and IR1 bits are also interrupt request bits for the logical processors 2 and 1, respectively, and are the same as the IR3 bit. The setting of the IR3 to IR1 bits is performed according to a normal register transfer instruction. In a normal register transfer instruction, it is necessary to write directly to the bit positions of IR3 to IR1, so each instruction stream needs to distinguish its own logical processor ID from the logical processor ID of the interrupt destination. , The operation of the logical processor ID is enabled in each instruction stream. <Priority Control Unit 60: Exclusion Stop Register> FIG.
FIG. 4 is an explanatory diagram showing a bit configuration of an EXCL register (abbreviated). Here, exclusive stopping means stopping a logical processor other than a certain processor. However, 2
No more than one logical processor can be in the exclusive halt state at the same time.

【0036】同図に示すようにEXCLレジスタは、MYIDフ
ィールドとEXCL3〜EXCL1の各ビットとを有し、1つの論
理プロセッサのみを実行状態にし、他の論理プロセッサ
を停止状態にすることを要求するためのレジスタであ
る。MYIDフィールドは、図3及び図6と同様なので説明
を省略する。EXCL3ビットは、このビットがONのとき
論理プロセッサ3が排他的停止を実行していることを示
す。この場合実行できるのは論理プロセッサ3のみで、
論理プロセッサ2および論理プロセッサ1は停止状態に
なる。
As shown in the figure, the EXCL register has a MYID field and each bit of EXCL3 to EXCL1, and requests that only one logical processor be put into an execution state and other logical processors be put into a stopped state. Register. The MYID field is the same as in FIGS. 3 and 6, and a description thereof will be omitted. The EXCL3 bit indicates that the logical processor 3 is performing an exclusive stop when this bit is ON. In this case, only the logical processor 3 can execute,
The logical processor 2 and the logical processor 1 are stopped.

【0037】EXCL2、EXCL1の各ビットも、同様である。
これらのEXCL3〜EXCL1の各ビットは、次に示す専用命令
(ニーモニック表記)に従って機能ユニットBによって
設定及び解除がなされる。 「excsv」;この命令は、発行元の論理プロセッサに対
する排他停止の設定つまり発行元以外の全論理プロセッ
サを停止させる命令である。例えば、論理プロセッサ1
がこの命令を実行した場合、EXCL1がONに、EXCL2及び
EXCL3がOFFに設定される。また、仮に複数の論理プ
ロセッサが同時にこの命令を発行したとしても、全論理
プロセッサが動作を停止することはない。なぜなら、こ
の命令は機能ユニットBにのみ実行されるので、実行時
点では1つに限定されるからである。 「retex」;この命令は、発行元の論理プロセッサに対
する排他停止の解除、つまり他の全論理プロセッサを元
の状態に復帰させる命令である。例えば、論理プロセッ
サ1がこの命令を実行した場合、EXCL1がOFFに設定
される。
The same applies to each bit of EXCL2 and EXCL1.
These bits EXCL3 to EXCL1 are set and released by the functional unit B in accordance with the following dedicated instruction (mnemonic notation). "Excsv": This instruction is an instruction to set exclusive suspension for the issuing logical processor, that is, to suspend all logical processors other than the issuing logical processor. For example, logical processor 1
Executes this instruction, EXCL1 turns ON, EXCL2 and EXCL2
EXCL3 is set to OFF. Even if a plurality of logical processors issue this instruction at the same time, all logical processors do not stop operating. This is because this instruction is executed only by the functional unit B, and is limited to one at the time of execution. "Retex": This instruction is an instruction to release the exclusive suspension of the issuing logical processor, that is, to return all other logical processors to the original state. For example, when the logical processor 1 executes this instruction, EXCL1 is set to OFF.

【0038】これらの命令も、上記incpr命令、decpr命
令と同様、オペランドを必要としない、どの命令流にお
いても同じ命令を利用できる。上記のPRIレジスタ、IR
レジスタ、EXCLレジスタの3つの制御レジスタは、物理
的な実体はそれぞれ1つずつであるが、各レジスタのMY
IDフィールドとPRIレジスタのMYPRIフィールドは、自論
理プロセッサ自身の値を表示するため、各論理プロセッ
サからは論理プロセッサごとに異なるレジスタが存在す
るかように見える。また、これらの制御レジスタのアド
レシングはすべての論理プロセッサから同じため、同じ
命令を実行してもそれぞれ自論理プロセッサ自身のID
や優先順位を見ることができる。 <命令発行判断部30>図8は、図1の命令発行判断部
30のより詳細な構成例を示すブロック図である。この
命令発行判断部30は、停止判断部310、分配部32
0、発行判断部330を備える。
Like these incpr instructions and decpr instructions, these instructions can use the same instruction in any instruction stream that does not require an operand. PRI register above, IR
The three control registers, the register and the EXCL register, each have one physical entity.
Since the ID field and the MYPRI field of the PRI register indicate the value of the own logical processor, it is seen from each logical processor that a different register exists for each logical processor. Also, since the addressing of these control registers is the same from all logical processors, even if the same instruction is executed, the IDs of the respective logical processors themselves are respectively determined.
And priorities. <Instruction Issue Determination Unit 30> FIG. 8 is a block diagram showing a more detailed configuration example of the instruction issue determination unit 30 of FIG. The instruction issuance determination unit 30 includes a stop determination unit 310, a distribution unit 32
0, an issue determination unit 330 is provided.

【0039】停止判断部310は、命令解読部1〜3の
それぞれに対応する3組のNOR回路とAND回路を備
える。NOR回路とAND回路との各組は、命令解読部
から上述した命令発行要求(要求フラグと機能ユニット
番号)を受けて、各論理プロセッサ毎に自己停止状態
(PRIレジスタのPRIx[2]がON)又は排他停止により停
止状態になっている(EXCLxビットがON)場合には、
要求フラグの信号(以下要求有無信号と呼ぶ)を強制的
にOFFにし、実行状態でかつ排他停止により停止され
ていない場合には、要求有無信号をそのまま出力する。
The stop judging section 310 includes three sets of NOR circuits and AND circuits corresponding to the instruction decoding sections 1 to 3, respectively. Each set of the NOR circuit and the AND circuit receives the above-mentioned instruction issue request (request flag and functional unit number) from the instruction decoding unit, and the self-stop state (PRIx [2] of the PRI register is ON for each logical processor) ) Or when stopped due to exclusive stop (EXCLx bit is ON),
The signal of the request flag (hereinafter, referred to as a request presence / absence signal) is forcibly turned off, and if it is in the execution state and has not been stopped by the exclusive stop, the request presence / absence signal is output as it is.

【0040】分配部320は、命令解読部1〜3のそれ
ぞれに対応する3つのデマルチプレクサを備える。各デ
マルチプレクサは、停止判断部310を介して入力され
る要求有無信号を、機能ユニット番号に従って当該命令
を実行すべき機能ユニットに分配する。その結果、機能
ユニット毎に各命令解読部からの要求有無信号が出力さ
れる。
The distribution unit 320 has three demultiplexers corresponding to the instruction decoding units 1 to 3, respectively. Each demultiplexer distributes the request presence / absence signal input via the stop determination unit 310 to the functional units that should execute the instruction according to the functional unit number. As a result, a request presence / absence signal is output from each instruction decoding unit for each functional unit.

【0041】発行判断部330は、機能ユニットA〜D
のそれぞれに対応する4組のAND回路群を備える。各
AND回路群は、分配部320により分配された要求有
無信号を、機能ユニットが上述したready状態である場
合には、そのまま出力し、notready状態である場合には
OFFにして出力する。ここで、ready状態で有ること
を示すready_n信号(nはA、B、C又はD)は、対応す
る機能ユニットが命令を受け付けられる状態にあること
を示し、論理プロセッサ1〜3に対応して機能ユニット
xから出力される3ビットの信号である。発行判断部3
30からの出力信号(1A〜3A、1B〜3B、1C〜3C、1D〜3
D)については、いずれも論理”1”のとき有効(命令
発行可能)であり、例えば、出力信号1Aは発行元が命令
解読部1で発行先が機能ユニットAを、出力信号3Bは発
行元が命令解読部3で発行先が機能ユニットBを意味す
る。 <命令発行調停部40>図9は、図1の命令発行調停部
40のより詳細な構成例を示すブロック図である。この
命令発行調停部40は、機能ユニットA〜Dのそれぞれ
対応する調停部40A〜40Dを備える。各調停部は同
じ動作をするので、ここでは調停部40Aを代表として
説明する。調停部40Aは、優先順位判定部41Aと判
定補助部42Aとを備える。
The issuance judging section 330 comprises functional units A to D
Are provided with four sets of AND circuit groups corresponding to the above. Each AND circuit group outputs the request presence / absence signal distributed by the distribution unit 320 as it is when the functional unit is in the above-described ready state, and outputs it as OFF when the functional unit is in the not-ready state. Here, a ready_n signal (n is A, B, C or D) indicating that the corresponding functional unit is in a ready state indicates that the corresponding functional unit is in a state capable of accepting an instruction. Functional unit
This is a 3-bit signal output from x. Issue determination unit 3
30 output signals (1A-3A, 1B-3B, 1C-3C, 1D-3
D) is valid (instruction can be issued) when both are logic "1". For example, the output signal 1A is issued by the instruction decoding unit 1 and the destination is the functional unit A, and the output signal 3B is issued by the issuer. Means the instruction decoding unit 3 and the issue destination is the functional unit B. <Instruction Issue Arbitration Unit 40> FIG. 9 is a block diagram showing a more detailed configuration example of the instruction issue arbitration unit 40 of FIG. The instruction arbitration unit 40 includes arbitration units 40A to 40D corresponding to the functional units A to D, respectively. Since each arbitration unit performs the same operation, the arbitration unit 40A will be described as a representative here. The arbitration unit 40A includes a priority order determination unit 41A and a determination assistance unit 42A.

【0042】優先順位判定部41Aは、発行判断部33
0からの出力される信号1A、2A、3Aと、各論理プロセッ
サの優先順位PRI1[1:0]、PRI2[1:0]、PRI3[1:0]を受け
て、有効な要求有無信号のうち優先順位が最も高いもの
を出力する。優先順位判定部41Aにおいて、この機能
を実現するための制御論理を図10に示す。図10
(a)では、PRIレジスタ中のPRI1、PRI2、PRI3フィー
ルドに指定された論理プロセッサ1〜3の優先順位がPR
I1>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の場合にも、いずれもの信号名
を読み換えるだけで全く同じ制御論理になるので、説明
を省略する。
The priority determining section 41A is provided with an issuing determining section 33.
In response to the signals 1A, 2A, and 3A output from 0 and the priority order PRI1 [1: 0], PRI2 [1: 0], and PRI3 [1: 0] of each logical processor, a valid request presence / absence signal is received. The one with the highest priority is output. FIG. 10 shows a control logic for realizing this function in the priority order determination unit 41A. FIG.
In (a), the priority order of the logical processors 1 to 3 specified in the PRI1, PRI2, and PRI3 fields in the PRI register is PR.
If I1>PRI2> PRI3, that is, at the priority level, (PRI1,
Inputs 1A, 2A, 3A when PRI2, PRI3) = (High, Medium, Low)
And outputs 1A ', 2A', and 3A '. Although not shown, if the priority is PR1>PR3> PR2, PR2>
If PR1> PR3, PR2>PR3> PR1, if PR3>PR1> PR2
In the case of, also in the case of PR3>PR2> PR1, the same control logic is obtained simply by replacing any of the signal names, so that the description is omitted.

【0043】図10(b)では、優先順位がPRI1=PRI2
>PRI3の場合、つまり優先レベルでは(PRI1、PRI2、PR
I3)=(高、高、中)、(高、高、低)又は(中、中、
低)の場合を示している。図示していないが、優先順位
がPR1=PR3>PR2の場合、PR2=PR1>PR3の場合、PR2=P
R3>PR1の場合、PR3=PR1>PR2の場合、PR3=PR2>PR1
の場合にも、いずれも信号名を読み換えるるだけで全く
同じ制御論理になるので、説明を省略する。また、図中
の波線を付した出力信号のように、入力信号のうち優先
順位が最も高く、かつ有効な信号が2つ以上存在する場
合には、優先順位判定部41Aはそれらを一応”1”と
して出力する。
In FIG. 10B, the priority order is PRI1 = PRI2
> PRI3, that is, at the priority level (PRI1, PRI2, PR
I3) = (high, high, medium), (high, high, low) or (medium, medium,
Low). Although not shown, when the priority is PR1 = PR3> PR2, when PR2 = PR1> PR3, PR2 = P
If R3> PR1, PR3 = PR1> PR2, then PR3 = PR2> PR1
In any case, the same control logic is obtained simply by replacing the signal names, so that the description is omitted. Also, when two or more valid signals have the highest priority among the input signals, such as an output signal with a dashed line in the drawing, the priority determination unit 41A temporarily determines that these signals are "1". "Is output.

【0044】図10(c)では、優先順位がPRI1>PRI2
=PRI3の場合、つまり(PRI1、PRI2、PRI3)=(高、
中、中)、(高、低、低)又は(中、低、低)の場合を
示している。また、図示していないが、優先順位がPR1
>PR3=PR2の場合、PR2>PR1=PR3の場合、PR2>PR3=P
R1の場合、PR3>PR1=PR2の場合、PR3>PR2=PR1の場合
にも、いずれもの信号名を読み換えるだけで全く同じ制
御論理になるので、説明を省略する。
In FIG. 10C, the priority order is PRI1> PRI2
= PRI3, ie (PRI1, PRI2, PRI3) = (high,
The case of (medium, middle), (high, low, low) or (medium, low, low) is shown. Although not shown, the priority order is PR1
> PR3 = PR2, PR2> PR1 = PR3, PR2> PR3 = P
In the case of R1, in the case of PR3> PR1 = PR2, and in the case of PR3> PR2 = PR1, the same control logic is obtained by simply rewriting any signal name, so that the description is omitted.

【0045】また、優先順位判定部41Aは、優先順位
がPRI1=PRI2=PRI3の場合には、有効な入力信号が2つ
以上ある場合には、有効な信号を全て一応”1”として
出力する。判定補助部42Aは、PRIレジスタにおいて
優先順位が同じに設定されている論理プロセッサが同時
に命令発行要求を出した場合、つまり、優先順位判定部
41Aの出力(1A´、2A´、3A´)において”1”が2
つ以上ある場合、論理プロセッサ間で命令発行が偏らな
いように調整するため、何れを”1”するか判定する。
例えば、判定補助部42Aは、(1)サイクル(1サイ
クル又は数サイクル)毎に”1”とする論理プロセッサ
を変更する(2)以前命令発行をできなかった論理プロ
セッサを優先する(3)固定的に何れかを決めておく。
また、これらを切り替えるようにしてもよい。 <命令発行禁止部50>図11は、図1の命令発行禁止
部50のより詳細な構成例を示すブロック図である。こ
の命令発行禁止部50は、機能ユニットA〜Dのそれぞ
れ対応する禁止部50A〜50Dと、発行通知部55と
を備える。各禁止部は同じ動作をするので、ここでは禁
止部50Aを代表として説明する。
When the priority order is PRI1 = PRI2 = PRI3, and there are two or more valid input signals, the priority order judging section 41A outputs all valid signals as "1" for the time being. . The determination assisting unit 42A determines that the logical processors having the same priority set in the PRI register issue an instruction issue request at the same time, that is, in the output (1A ', 2A', 3A ') of the priority determining unit 41A. "1" is 2
If there are more than one, it is determined which is to be set to "1" in order to adjust the instruction issuance among the logical processors.
For example, the determination assisting unit 42A (1) changes the logical processor that sets “1” every cycle (one cycle or several cycles) (2) gives priority to the logical processor that could not issue an instruction before (3) fixed One is decided beforehand.
Further, these may be switched. <Instruction Issuance Prohibition Unit 50> FIG. 11 is a block diagram showing a more detailed configuration example of the instruction issuance prohibition unit 50 of FIG. The instruction issuance prohibition unit 50 includes prohibition units 50A to 50D corresponding to the functional units A to D, respectively, and an issuance notification unit 55. Since each prohibition unit performs the same operation, the prohibition unit 50A will be described as a representative here.

【0046】禁止部50Aは、緊急を要する処理とし
て、外部割込み要求、内部割り込み要求、キャッシュミ
スやメモリアクセスエラー等のアクセス例外、トラップ
命令などが発生した場合に、その発生元の論理プロセッ
サIDを検出し、当該論理プロセッサに対する命令発行
を1サイクルの間の禁止するよう制御する禁止制御部5
1Aと、禁止制御部51Aの指示に従って調停部40A
の出力信号(1AA〜3AA)をゲートした結果を命令選択部
70に対する命令発行指示(1AAA〜3AAA)を出力する3
個のAND回路と、機能ユニットAに対して命令発行を
通知するOR回路とからなる。
The prohibition unit 50A, when an external interrupt request, an internal interrupt request, an access exception such as a cache miss or a memory access error, or a trap instruction occurs as an urgent process, identifies the logical processor ID of the source of the occurrence. A prohibition control unit 5 that detects and controls to prohibit instruction issuance to the logical processor for one cycle.
1A and the arbitration unit 40A according to the instruction of the prohibition control unit 51A.
To output an instruction issue instruction (1AAA to 3AAA) to the instruction selecting unit 70 based on the result of gating the output signals (1AA to 3AA)
And an OR circuit for notifying the functional unit A of the instruction issuance.

【0047】発行通知部55は、命令解読部1〜3に対
応する3個のOR回路からなり、禁止部51A〜51D
から各論理プロセッサの命令発行指示が出力される毎
に、対応する命令解読部に次の命令を発行してもよいこ
とを通知する発行通知を出力する。 <機能ユニットB>機能ユニットBは、整数演算命令を
実行するほか、上述した各種の専用命令と、PRIレジス
タ、EXCLレジスタ、IRレジスタを読み出す命令とを実行
するように構成されている。
The issuance notifying section 55 is composed of three OR circuits corresponding to the instruction decoding sections 1 to 3, and is provided with prohibiting sections 51A to 51D.
Each time an instruction issuance instruction is output from the logical processor, an issuance notification is output to notify the corresponding instruction decoding unit that the next instruction may be issued. <Functional Unit B> The functional unit B is configured to execute the above-described various dedicated instructions and instructions for reading the PRI register, the EXCL register, and the IR register, in addition to executing the integer operation instruction.

【0048】なお、上記専用命令等については、本実施
形態では機能ユニットBが実行するが、他の機能ユニッ
トが実行するように構成してもかまわない。図12に、
機能ユニットBによる上記専用命令及び読み出し命令の
実行内容を示す説明図を示す。同図において、「x」は
当該命令の発行元の論理プロセッサ番号を、「y」は当
該命令の発行元以外の論理プロセッサIDを示す。この
論理プロセッサ番号は、禁止部50Bから出力される信
号(図11の1BBB〜3BBB)により機能ユニットBに通知
される。
In the present embodiment, the above-mentioned dedicated instructions are executed by the functional unit B, but may be executed by other functional units. In FIG.
FIG. 4 is an explanatory diagram showing the contents of execution of the dedicated instruction and the read instruction by the functional unit B. In the figure, “x” indicates the logical processor number of the issue source of the instruction, and “y” indicates the ID of the logical processor other than the issue source of the instruction. This logical processor number is notified to the functional unit B by a signal (1BBB to 3BBB in FIG. 11) output from the prohibition unit 50B.

【0049】同図に示すように機能ユニットBは、「in
c pri」命令に対して、スーパバイザモードではPRIレジ
スタのPRIx[1]ビットを1に、ユーザモードではPRIx[0]
ビットを1を設定する。「dec pri」命令に対しては、
スーパバイザモードではPRIx[1]を0に、ユーザモード
ではPRIx[0]ビットを0に設定する。
As shown in the figure, the functional unit B has “in
For the "c pri" instruction, the PRIx [1] bit of the PRI register is set to 1 in the supervisor mode, and PRIx [0] in the user mode.
Set the bit to 1. For the "dec pri" instruction,
In the supervisor mode, PRIx [1] is set to 0, and in the user mode, the PRIx [0] bit is set to 0.

【0050】「halt」命令に対しては、当該論理プロセ
ッサのPRIレジスタのPRIx[2]ビットに1を設定する。
「excsv」命令に対しては、EXCLレジスタのEXCLxビット
を1に、EXCLyビットを0に設定する。例えば、論理プ
リセッサ2が本命令の発行元である場合、機能ユニット
Bは、EXCL2ビットを1に、EXCL3ビットおよびEXCL1ビ
ットを0に設定する。
For the "halt" instruction, 1 is set to the PRIx [2] bit of the PRI register of the logical processor.
For the “excsv” instruction, the EXCLx bit and the EXCLy bit of the EXCL register are set to 1 and 0, respectively. For example, when the logical processor 2 is a source of this instruction, the functional unit B sets the EXCL2 bit to 1, and sets the EXCL3 and EXCL1 bits to 0.

【0051】「retex」命令に対しては、EXCLxビットを
0に設定する。このように上記の専用命令は、同じ命令
であっても当該命令発行元の論理プロセッサに応じてレ
ジスタ中の異なるビットが操作される。また、図12に
示した各mov命令については、機能ユニットBは以下の
ように実行する。
For the "retex" instruction, the EXCLx bit is set to "0". As described above, different bits in the register are operated according to the logical processor that issued the instruction, even if the dedicated instruction is the same instruction. For each mov instruction shown in FIG. 12, the functional unit B executes as follows.

【0052】「mov PRI,R0」命令は、PRIレジスタの内
容をR0レジスタに転送する命令である。この命令に対し
て機能ユニットBは、以下のように命令を実行する。PR
Iレジスタ中のMYIDフィールド(=PRI[31:29])について
は、その命令の発行元の論理プロセッサIDをR0[31:2
9]の各ビットに書き込む。PRIレジスタ中のPRI[11:3](=
PRI3,PRI2,PRI1フィールド)の各ビットについては、そ
のデータを読み出してR0レジスタ中の[11:3]に転送す
る。
The "mov PRI, R0" instruction is an instruction for transferring the contents of the PRI register to the R0 register. In response to this instruction, the functional unit B executes the instruction as follows. PR
For the MYID field (= PRI [31:29]) in the I register, the logical processor ID of the issue source of the instruction is R0 [31: 2
Write to each bit of [9]. PRI [11: 3] (=
For each bit of the PRI3, PRI2, and PRI1 fields), the data is read out and transferred to [11: 3] in the R0 register.

【0053】PRI[2:0](=MYPRIフィールド)について
は、PRI3,PRI2,PRI1フィールドのうちその命令の発行元
の論理プロセッサIDに対応するPRIxをR0[31:29]の各
ビットに書き込む。「mov IR,R0」命令は、IRレジスタ
の内容をR0レジスタに転送する命令である。この命令に
対して機能ユニットBは、IRレジスタ中のMYIDフィール
ド(=IR[31:29])については、その命令の発行元の論理
プロセッサIDをR0[31:29]の各ビットに書き込む。IR
[2:0](=IR3,IR2,IR1ビット)の各ビットについては、
その値を読み出してR0[2:0]の各ビットに書き込む。
As for PRI [2: 0] (= MYPRI field), PRIx corresponding to the logical processor ID of the instruction issue source in the PRI3, PRI2, and PRI1 fields is written to each bit of R0 [31:29]. . The “mov IR, R0” instruction is an instruction to transfer the contents of the IR register to the R0 register. In response to this instruction, the functional unit B writes the logical processor ID of the issue source of the instruction into each bit of R0 [31:29] for the MYID field (= IR [31:29]) in the IR register. IR
For each bit of [2: 0] (= IR3, IR2, IR1 bits),
The value is read and written to each bit of R0 [2: 0].

【0054】「mov EXCL,R0」命令は、EXCLレジスタの
内容をR0レジスタに転送する命令である。この命令につ
いての機能ユニットBの実行内容は、上記「mov IR,R
0」に比べて、転送元がIRレジスタであること以外同
様である。上記の読み出し命令を実行することにより、
各論理プロセッサは、読み出されたMYIDフィールド
から自身の論理プロセッサIDの値と、他の論理プロセ
ッサの状態(優先順位、自己停止状態、排他停止状態な
ど)とを得ることができる。 <優先順位制御部60の詳細構成>図13は、優先順位
制御部60の詳細な構成を示すブロック図である。
The "mov EXCL, R0" instruction is an instruction for transferring the contents of the EXCL register to the R0 register. The execution contents of the functional unit B for this instruction are described in the above "mov IR, R
This is similar to “0” except that the transfer source is the IR register. By executing the above read instruction,
Each logical processor can obtain the value of its own logical processor ID and the state of other logical processors (priority, self-stop state, exclusive stop state, etc.) from the read MYID field. <Detailed Configuration of Priority Control Unit 60> FIG. 13 is a block diagram showing a detailed configuration of the priority control unit 60.

【0055】優先順位制御部60は、PRIレジスタ6
1、IRレジスタ62、EXCLレジスタ63、セレクタ6
4、連続サイクル優先部69を備える。PRIレジスタ6
1、IRレジスタ62、EXCLレジスタ63は、図3、図
6、図7においてそのビット構成を既に説明したので、
ここでは、そのハードウェア構成を説明する。
The priority control unit 60 controls the PRI register 6
1, IR register 62, EXCL register 63, selector 6
4. A continuous cycle priority unit 69 is provided. PRI register 6
1, the IR register 62 and the EXCL register 63 have already been described with reference to FIG. 3, FIG. 6 and FIG.
Here, the hardware configuration will be described.

【0056】これらのレジスタ61〜63は、本マルチ
スレッドプロセッサの内部バスに接続され、内部バスを
介して機能ユニットBに読み出し書き込みがなされる。
これらのレジスタの上位3ビット(MYIDフィールド)
は、データを保持する機能を有せず、レジスタの読み出
し命令実行時に、論理プロセッサIDをトランスパレン
トに内部バスに出力する。このとき論理プロセッサID
の値は、禁止部50Bから出力される信号(図11の1B
BB〜3BBB)により通知される。
These registers 61 to 63 are connected to the internal bus of the multi-thread processor, and read and write to the functional unit B via the internal bus.
Upper 3 bits of these registers (MYID field)
Does not have a function of holding data, and transparently outputs the logical processor ID to the internal bus when a register read instruction is executed. At this time, the logical processor ID
Is a signal output from the prohibition unit 50B (1B in FIG. 11).
BB to 3BBB).

【0057】またPRIレジスタ62の下位3ビットは、P
RIレジスタの読み出し命令実行時に、セレクタ64の出
力をトランスパレントに内部バスに出力する。セレクタ
64は、PRIレジスタの読み出し命令実行時に、PRIレジ
スタ62中のPRI3,PRI2,PRI1フィールドのうち、その命
令発行元の論理プロセッサIDに対応するものを選択し
て、IRレジスタ62中の「MYPRI」フィールドを介し
て内部バスに出力する。
The lower 3 bits of the PRI register 62 are P
When the read instruction of the RI register is executed, the output of the selector 64 is transparently output to the internal bus. The selector 64 selects the PRI3, PRI2, and PRI1 fields in the PRI register 62 corresponding to the logical processor ID of the instruction issuing source and executes “MYPRI” in the IR register 62 when executing the read instruction of the PRI register. Field to the internal bus.

【0058】連続サイクル優先部69は、特定の命令列
が実行される間、その優先度を一時的に高く変更する機
能を有する。ここで、特定の命令列とは、例えば他の論
理プロセッサと共有する資源の読み出しと書き込みを実
行する場合など、連続サイクルで実行される必要がある
命令列をいう。特定の命令列の一例を以下に示す。ただ
し命令はニーモニック表記で表している。また;以下は
命令内容を示すコメントである。 LOOP: ;ラベル aldst MEM[100],R0 ;アトミック(Atomic LoaD STart)命令とも呼ぶ。
The continuous cycle priority section 69 has a function of temporarily changing the priority to a higher level while a specific instruction sequence is executed. Here, the specific instruction sequence refers to an instruction sequence that needs to be executed in a continuous cycle, for example, when reading and writing a resource shared with another logical processor. An example of a specific instruction sequence is shown below. However, instructions are expressed in mnemonics. The following is a comment indicating the content of the instruction. LOOP:; Label aldst MEM [100], R0; Also called an atomic (Atomic LoaD STart) instruction.

【0059】;メモリ(100番地)のデータをROに
転送する test R0 ;R0=0ならばゼロフラグを1にセットする beq LOOP ;ゼロフラグが1ならラベルLOOPへ分岐する store R1,MEM[100] ;レジスタR1のデータをメモリ100番地に転送する 上記の特定命令列は、メモリの100番地を読み出し、
もし読み出したデータが0であれば、レジスタR1のデ
ータをメモリの100番地に書き込む。もし読み出した
データが0でなければ、0になるまで繰り返し読み出す
ループ処理を表している。この特定命令列が連続サイク
ルで実行される必要があるのは、例えばメモリ100番
地が複数の論理プロセッサの共有資源として用いられて
いる場合である。つまり、ある論理プロセッサが上記特
定命令列の実行中には、他の論理プロセッサがメモリ1
00番地を書き換えてはならない。
Transfer data in memory (address 100) to RO test R0; if R0 = 0, set zero flag to 1; beq LOOP; if zero flag is 1, branch to label LOOP store R1, MEM [100]; The specific instruction sequence for transferring the data of the register R1 to the memory 100 reads the address 100 of the memory,
If the read data is 0, the data in the register R1 is written to address 100 of the memory. If the read data is not 0, it indicates a loop process of repeatedly reading until the read data becomes 0. The specific instruction sequence needs to be executed in a continuous cycle when, for example, the memory 100 is used as a shared resource of a plurality of logical processors. In other words, while one logical processor is executing the specific instruction sequence, the other logical processor
Address 00 must not be rewritten.

【0060】このような特定命令列が連続するサイクル
で実行されることを保証するために、連続サイクル優先
部69は、一の機能ユニットで上記特定命令列の先頭命
令の実行開始を検出したとき、その命令の実行サイクル
から連続する所定数のサイクルの間、その命令発行元の
論理プロセッサ(命令流)の優先順位が他の論理プロセ
ッサよりも高くなるように優先順位制御部60の優先順
位を一時的に変更する。 <連続サイクル優先部69>連続サイクル優先部69
は、図13のように特定命令検出部65、カウンタ6
6、コンパレータ67、セレクタ68を備える。
In order to guarantee that such a specific instruction sequence is executed in a continuous cycle, the continuous cycle priority unit 69 detects the start of execution of the first instruction of the specific instruction sequence by one functional unit. During a predetermined number of consecutive cycles from the execution cycle of the instruction, the priority of the priority control unit 60 is set so that the priority of the logical processor (instruction stream) issuing the instruction is higher than the other logical processors. Change temporarily. <Continuous cycle priority section 69> Continuous cycle priority section 69
Corresponds to the specific instruction detecting unit 65 and the counter 6 as shown in FIG.
6, a comparator 67 and a selector 68.

【0061】同図において特定命令検出部65は、特定
命令列の先頭命令(以下特定命令と呼ぶ)の実行が開始
されたことを検出する。上記の特定命令列の例では、al
dst命令が特定命令として検出される。より具体的には
特定命令検出部65は、命令解読部1〜3から特定命令
を解読した旨の通知と、特定命令を命令発行禁止部50
がその一の機能ユニットに発行した旨の通知とを受け
て、両通知をともに受けたことをもって特定命令の実行
開始を検出する。
In the figure, a specific instruction detecting unit 65 detects that the execution of the first instruction of the specific instruction sequence (hereinafter referred to as a specific instruction) has been started. In the above specific instruction sequence example, al
The dst instruction is detected as a specific instruction. More specifically, the specific instruction detecting unit 65 notifies the instruction decoding units 1 to 3 that the specific instruction has been decoded, and outputs the specific instruction to the instruction issue prohibiting unit 50.
Receives the notification that the issuance has been issued to the one functional unit, and detects the start of execution of the specific instruction by receiving both the notifications.

【0062】カウンタ66は、特定命令の実行開始が検
出されたとき、特定命令列の実行に要するサイクル数を
カウントする。上記の例ではカウンタ66は、aldst命
令に続く3命令の実行に要する3サイクルをカウントす
るため、特定命令の実行開始が検出されたときに初期値
3がロードされ、0までダウンカウントする。これによ
り上記store R1,MEM[100]の実行サイクルで0になる。
また、上記特定命令列がループ処理になっている場合に
は、カウンタ66はaldst命令が検出される度に初期値
3からカウントすることになる。
The counter 66 counts the number of cycles required to execute the specific instruction sequence when the start of execution of the specific instruction is detected. In the above example, the counter 66 counts three cycles required to execute the three instructions following the aldst instruction. Therefore, when the start of execution of the specific instruction is detected, the initial value 3 is loaded and the counter 66 counts down to zero. Thereby, it becomes 0 in the execution cycle of the above store R1, MEM [100].
When the specific instruction sequence is in a loop process, the counter 66 starts counting from the initial value 3 every time an aldst instruction is detected.

【0063】コンパレータ67は、カウンタ66のカウ
ント値が0と一致するか否かを判定する。つまり特定命
令列の連続サイクルの期間でないかどうかを判定する。
セレクタ68は、6ビット長の4入力1出力のセレクタ
であり、連続サイクルの期間において優先順位を一時的
に変更するために用いられている。図14に、セレクタ
68に入力される選択信号と、出力値との関係を表した
説明図を示す。セレクタ68の入力値は、同図では省略
されているが、図13に示したように「PRI[11:3](=PRI
3[1:0],PRI2[1:0],PRI1[1:0]」、「110000」、「00110
0」、「000011」の4つである。
The comparator 67 determines whether or not the count value of the counter 66 matches 0. That is, it is determined whether or not the period is a continuous cycle of the specific instruction sequence.
The selector 68 is a 6-bit 4-input / 1-output selector, and is used to temporarily change the priority order during a continuous cycle. FIG. 14 is an explanatory diagram showing the relationship between the selection signal input to the selector 68 and the output value. Although the input value of the selector 68 is omitted in FIG. 13, “PRI [11: 3] (= PRI
3 [1: 0], PRI2 [1: 0], PRI1 [1: 0] "," 110000 "," 00110
0 ”and“ 000011 ”.

【0064】同図によれば、セレクタ68の出力は、通
常のとき、つまり連続サイクルの期間でない場合(カウ
ント値=0に一致するとき)、PRIレジスタ中のPRI[11:
3](=PRI3,2,1フィールド)に指定されている優先順位を
出力する。連続サイクルの期間である場合(カウント値
=0に一致しないとき)、セレクタ68は、その特定命
令の発行元が論理プロセッサ3であれば「110000」、論
理プロセッサ2であれば「001100」、論理プロセッサ1
であれば「000011」を、「PRI[11:3](=PRI3'[1:0],PRI
2'[1:0],PRI1'[1:0]」として出力する。
According to the figure, when the output of the selector 68 is normal, that is, not during a continuous cycle (when the count value = 0), the PRI [11:
3] (= PRI3,2,1 field) The priority specified is output. In the case of a continuous cycle period (when the count value does not match 0), the selector 68 determines “110000” if the issuing source of the specific instruction is the logical processor 3, “001100” if the issuing source of the logical processor 2 is Processor 1
If so, replace "000011" with "PRI [11: 3] (= PRI3 '[1: 0], PRI
2 '[1: 0], PRI1' [1: 0] ".

【0065】これにより連続サイクルの期間中、特定命
令の発行元の論理プロセッサの優先順位が最も高くなる
ように一時的に変更される。以上のように構成された本
実施形態のマルチスレッドプロセッサについて、その動
作を説明する。 <優先順位、自己停止状態、排他停止の設定動作>本実
施形態のマルチスレッドプロセッサでは、命令流(論理
プロセッサ)毎の優先順位の設定・変更用にincpr命令
及びdecpr命令、自己停止用にhalt命令、排他停止用にe
xcsv命令及びretex命令という専用命令が用意されてい
る。これらの専用命令は、命令流の生成元のプログラム
中に予め適宜設定されている必要がある。
Thus, during the continuous cycle, the priority is temporarily changed so that the priority of the logical processor that issues the specific instruction is the highest. The operation of the multi-thread processor configured as described above according to the present embodiment will be described. <Operation of Setting Priority, Self-Stop State, and Exclusive Stop> In the multi-thread processor of the present embodiment, the incpr instruction and the decpr instruction are used for setting and changing the priority for each instruction stream (logical processor), and the halt is used for the self-stop. Instruction, e for exclusive stop
Dedicated instructions called xcsv instruction and retex instruction are prepared. These dedicated instructions need to be appropriately set in advance in the program that generates the instruction stream.

【0066】たとえば、プログラム中の優先順位を上げ
て処理すべき部分では、当該プログラム部分の直前にin
cpr命令を、直後にdecpr命令を設定しておけばよい。こ
のように設定されたincpr命令及びdecpr命令は、機能ユ
ニットBによって次のように実行される。すなわち、機
能ユニットBは、論理プロセッサ1〜3の何れが発行元
であるかに応じて、PRIレジスタの対応するPRxフィール
ドに対してユーザモードのときはPRIx[0]ビットを対象
に、スーパーバイザモードのときはPRIx[1]を対象にし
て1又は0を設定する。これにより論理プロセッサ毎に
優先順位を必要に応じて動的に変更させることができ
る。
For example, in a part of a program to be processed with a higher priority, in
What is necessary is just to set a cpr instruction and a decpr instruction immediately after. The incpr instruction and the decpr instruction set as described above are executed by the functional unit B as follows. That is, depending on which of the logical processors 1 to 3 is the issuing source, the functional unit B targets the PRIx [0] bit in the user mode for the corresponding PRx field of the PRI register and sets the supervisor mode to the supervisor mode. In the case of, 1 or 0 is set for PRIx [1]. Thus, the priority can be dynamically changed for each logical processor as needed.

【0067】また、他の論理プロセッサを停止させて自
身の論理プロセッサのみを動作させて処理すべきプログ
ラム部分では、当該プログラム部分の直前にexcsv命令
を、直後にretex命令を設定しておくことになる。これ
らの命令も、機能ユニットBによって上記と同様に実行
される。逆に、他の論理プロセッサを優先させて自身の
論理プロセッサを停止させる場合には、halt命令を設定
することになる。この命令も機能ユニットBによって実
行される。但し、停止状態の論理プロセッサは、当該論
理プロセッサに対する割り込み要求によって停止状態が
解除されるので、割り込み要求が適宜入力される必要が
ある。例えば論理プロセッサ間の内部割込みは、IRレジ
スタによる。つまり、割込みをかける論理プロセッサ
は、事前に通常のレジスタ転送命令によりIRレジスタ、
PRIレジスタまたはEXCLレジスタを読み出して自身のMYI
Dを読み出して、さらに割込み先の論理プロセッサに対
応するIRxビットを決定してから、通常の転送命令によ
りIRレジスタに内部割り込み要求をセットすることにな
る。 <全体動作>例えば、命令解読部1の解読の結果、機能
ユニットBに対する命令発行要求(要求フラグと機能ユ
ニットBの番号)を出力した場合、論理プロセッサ1が
自己停止状態または他の論理プロセッサの排他停止によ
る停止状態にある場合には、命令発行判断部30内の停
止判断部310によって要求フラグ自体が無効として出
力されなくなる。これにより他の論理プロセッサ2及び
3が機能ユニットを使用できることになる。
In a program part to be processed by stopping other logical processors and operating only its own logical processor, an excsv instruction is set immediately before the program part and a retex instruction is set immediately after the program part. Become. These instructions are also executed by the functional unit B in the same manner as described above. Conversely, in order to give priority to another logical processor and stop its own logical processor, a halt instruction is set. This instruction is also executed by the functional unit B. However, the stopped state of the logical processor is released by an interrupt request to the logical processor, so that an interrupt request needs to be input as appropriate. For example, an internal interrupt between logical processors depends on the IR register. In other words, the logical processor that issues the interrupt registers the IR register and
Reads the PRI register or EXCL register and reads its own MYI
After reading D and further determining the IRx bit corresponding to the interrupt destination logical processor, an internal interrupt request is set in the IR register by a normal transfer instruction. <Overall Operation> For example, when an instruction issuance request (a request flag and a number of a functional unit B) is output to the functional unit B as a result of the decoding by the instruction decoding unit 1, the logical processor 1 is in a self-stop state or is in a state of another logical processor. In the stop state due to the exclusive stop, the stop determination unit 310 in the instruction issue determination unit 30 does not output the request flag itself as invalid. This allows the other logical processors 2 and 3 to use the functional unit.

【0068】論理プロセッサ1が自己停止状態でもなく
他の論理プロセッサの排他停止による停止状態でもない
場合には、命令発行判断部30内の分配部320におい
て機能ユニットBへ分配され、さらに、機能ユニットB
が論理プロセッサ1に対してready状態であれば発行判
断部330によって発行可能と判断され、not ready状
態であれば発行不可と判断される。
When the logical processor 1 is neither in the self-stop state nor in the stop state due to the exclusive stop of the other logical processors, it is distributed to the functional unit B in the distribution unit 320 in the instruction issue determination unit 30, and B
If is in the ready state with respect to the logical processor 1, the issuance determination unit 330 determines that issuance is possible.

【0069】次に、命令発行調停部40は、命令発行判
断部30からの機能ユニットごとの命令発行要求を受け
て、優先順位制御部60からの論理プロセッサごとの優
先順位を用いて、機能ユニットに発行できる論理プロセ
ッサを決定する。例えば、機能ユニットBに対して命令
解読部1からの命令発行要求のみが出力されている場合
(図9の1B〜3Bのうち1Bのみ有効な場合)には、命令発
行調停部40は、その命令発行要求を有効(図9の1BB
〜3BBのうち1BBのみ有効)とする。
Next, the instruction issuance arbitration unit 40 receives the instruction issuance request for each functional unit from the instruction issuance determination unit 30 and uses the priority order for each logical processor from the priority order control unit 60 to execute the function unit. Determine the logical processor that can be issued to. For example, when only the instruction issuance request from the instruction decoding unit 1 is output to the functional unit B (when only 1B among 1B to 3B in FIG. 9 is valid), the instruction issuance arbitration unit 40 Instruction issue request is valid (1BB in Fig. 9)
Only 3BB is valid for 1BB).

【0070】例えば、命令解読部1が機能ユニットAに
対する命令を解読し、命令解読部2は機能ユニットBに
対する命令を解読し、命令解読部3が機能ユニットCに
対する命令を解読し、かつ、すべての機能ユニットが命
令をready状態にある場合には、命令発行調停部40に
おいて3個の命令発行要求がすべて有効になる。一方、
命令解読部1が機能ユニットAに対する命令を解読し、
命令解読部2も機能ユニットAに対する命令を解読した
場合(図9の1Aと2Aとが同時に有効な場合)には、どち
らかの命令しか発行できないので、優先順位判定部41
Aは、優先順位制御部60内にPRIレジスタより優先
順位を判断し、優先順位の高いものから命令を発行す
る。もし、この場合に論理プロセッサ1と論理プロセッ
サ2の優先順位が同じであれば、判定補助部42Aによ
り何れかの命令発行要求のみを有効にする。
For example, the instruction decoding unit 1 decodes the instruction to the functional unit A, the instruction decoding unit 2 decodes the instruction to the functional unit B, the instruction decoding unit 3 decodes the instruction to the functional unit C, and When all the functional units are in the ready state, the instruction issue arbitration unit 40 makes all three instruction issue requests valid. on the other hand,
The instruction decoding unit 1 decodes an instruction for the functional unit A,
When the instruction decoding unit 2 also decodes the instruction for the functional unit A (when 1A and 2A in FIG. 9 are simultaneously effective), only one of the instructions can be issued, and therefore the priority determination unit 41
A determines the priority order from the PRI register in the priority order control unit 60, and issues an instruction from a higher priority order. If the priority of the logical processor 1 and the priority of the logical processor 2 are the same in this case, only one of the instruction issuance requests is validated by the determination assisting unit 42A.

【0071】さらに、命令発行禁止部50は、命令発行
調停部40で発行されることが決定した命令に対し、論
理プロセッサの何れかで緊急を要する処理が発生した場
合に当該論理プロセッサの命令発行を禁止する。命令発
行判断部30と命令発行禁止部50とは、何れも命令発
行要求を命令発行の候補から外す機能を有しているが、
機能分担しているのは次の理由による。
Further, the instruction issuance prohibiting unit 50 is adapted to issue an instruction to an instruction determined to be issued by the instruction issuance arbitration unit 40 when an urgent process occurs in any of the logical processors. Ban. The instruction issuance determination unit 30 and the instruction issuance prohibition unit 50 both have a function of excluding an instruction issuance request from candidates for instruction issuance.
Functions are shared for the following reasons.

【0072】すなわち、早い段階で命令の受け入れがで
きないことがわかる要因については、命令発行判断部3
0において、受け入れができない論理プロセッサの命令
を発行不可と判断し命令発行の候補から外すことができ
るが、もし、遅い段階でしかわからない要因についてま
で、命令発行判断部30において、命令発行の候補から
外そうとすると、命令発行可能か否かの最終判断が遅れ
てしまい、プロセッサの周波数向上に影響するからであ
る。
That is, the cause of the fact that the instruction cannot be accepted at an early stage is determined by the instruction issuance determination unit 3.
0, the instruction of the logical processor that cannot be accepted can be judged as being unissueable and excluded from the candidates for instruction issuance. However, if the cause is not known only at a late stage, the instruction If it is attempted to remove the instruction, the final decision as to whether or not the instruction can be issued is delayed, which affects the frequency of the processor.

【0073】例えば、命令発行判断から命令発行禁止ま
でを1サイクルで行なうとした場合に、サイクルの最後
の方で命令発行不可要因が命令発行判断部30に通知さ
れると、その時点から命令発行の候補から外す必要があ
る。この場合にはサイクル長を十分長く取る必要があ
り、クロック周波数の向上を阻害する大きな要因とな
る。そこで、遅い段階でしかわからない命令発行禁止の
要因については、命令発行禁止部50において、発行を
禁止する。もちろん、命令発行禁止部50である論理プ
ロセッサの命令発行が禁止された場合は、それ以外の論
理プロセッサからの命令を発行できるとしても、その命
令を代わりに発行することはしない。既にそれぞれの機
能ユニットA〜Dに対して、発行すべき命令が1つに絞
り込まれた後だからである。
For example, when it is assumed that the process from the instruction issue determination to the instruction issue prohibition is performed in one cycle, the instruction issue determination unit 30 is notified of the instruction issue disable factor at the end of the cycle. Must be removed from the list of candidates. In this case, it is necessary to take a sufficiently long cycle length, which is a major factor that hinders the improvement of the clock frequency. Therefore, the instruction issuance prohibition unit 50 prohibits the issue of the instruction issuance prohibition factor that is known only at a late stage. Of course, when the instruction issuance of the logical processor which is the instruction issuance prohibition unit 50 is prohibited, even if an instruction from another logical processor can be issued, the instruction is not issued instead. This is because instructions to be issued have already been narrowed down to one for each of the functional units A to D.

【0074】この後、命令選択部70は、命令解読部1
〜3に解読された命令内容やオペレーションを、命令発
行禁止部50からの命令発行指示(図11の1AAA〜3AA
A、1BBB〜3BBB、1CCC〜3CCC、1DDD〜3DDD)に従って機
能ユニットA〜Dに発行する。なお、本実施形態では論
理プロセッサが3つ、機能ユニットが4つの場合を説明
したが、これらの数は任意に変更すること当然可能であ
る。
Thereafter, the instruction selecting section 70 sets the instruction decoding section 1
The instruction contents and operations decoded by the instruction issue instruction are issued from the instruction issue prohibition unit 50 (1AAA to 3AA in FIG. 11).
A, 1BBB to 3BBB, 1CCC to 3CCC, 1DDD to 3DDD). In the present embodiment, a case has been described in which the number of logical processors is three and the number of functional units is four, but it is naturally possible to change these numbers arbitrarily.

【0075】また、PRIレジスタの内容を複数のレジ
スタで分担する用にしてもよい。例えば、自己停止用の
各PRIx[2]ビットと、優先順位用の各PRIx[1:0]フィール
ドとは別個のレジスタとしてもよい。逆に、PRIレジ
スタとIRレジスタとEXCLレジスタとは、これらの
全部の組み合わせ又は一部の組み合わせを1本のレジス
タとして構成してもよい。
Further, the contents of the PRI register may be shared by a plurality of registers. For example, each PRIx [2] bit for self-stop and each PRIx [1: 0] field for priority may be separate registers. Conversely, all or some of the PRI register, the IR register, and the EXCL register may be configured as one register.

【0076】また、特定命令検出部65は、特定命令の
実行開始を検出を、その命令の実行を開始した機能ユニ
ットからその旨の通知を受けることにより行ってもよ
い。本実施形態では複数の論理プロセッサが機能ユニッ
トに対して命令発行が競合する場面に本発明を適用する
例を示したが、機能ユニット以外であっても、複数の論
理プロセッサが共有する資源であれば適用することがで
きる。これを他の実施形態として説明する。 <他の実施形態>本実施形態では、複数の論理プロセッ
サが共有する資源にアクセスする場合の調停にも論理プ
ロセッサ間の優先順位を用いることが可能であり、その
一例を示す。
Further, the specific instruction detecting section 65 may detect the start of the execution of the specific instruction by receiving the notification from the functional unit which has started executing the instruction. In the present embodiment, an example in which the present invention is applied to a case where a plurality of logical processors compete for instruction issuance with respect to a functional unit has been described. If applicable. This will be described as another embodiment. <Other Embodiments> In this embodiment, priorities among logical processors can be used for arbitration when accessing resources shared by a plurality of logical processors. An example is shown below.

【0077】図2は、本発明の他の実施形態におけるマ
ルチスレッドプロセッサの構成を示すブロック図であ
る。本マルチスレッドプロセッサは、キャッシュメモリ
100、命令解読部111〜113、レジスタ群131
〜133、命令フェッチ制御部140、命令発行制御部
150、優先順位制御部60、機能ユニットA20〜D
23、レジスタ制御部170を備えて構成される。図1
と同じ番号の構成要素は、同じなので説明を省略して、
異なる点を中心に説明する。
FIG. 2 is a block diagram showing a configuration of a multi-thread processor according to another embodiment of the present invention. The multi-thread processor includes a cache memory 100, instruction decoding units 111 to 113, a register group 131
To 133, the instruction fetch control unit 140, the instruction issuance control unit 150, the priority control unit 60, and the functional units A20 to D
23, a register control unit 170 is provided. FIG.
The components with the same numbers as are omitted because they are the same.
The different points will be mainly described.

【0078】図2において、キャッシュメモリ100
は、命令流が生成される元のプログラム用のキャッシュ
メモリである。命令解読部111〜113は、それぞれ
図1の命令解読部1〜3と同等であるが、命令フェッチ
制御部140の制御を受ける点が異なっている。レジス
タ群131〜133は、それぞれ複数レジスタからなる
レジスタファイルであり、命令解読部111〜113に
1対1に対応して設けられている。従って論理プロセッ
サ1〜3にも1対1に対応している。
In FIG. 2, the cache memory 100
Is a cache memory for the program from which the instruction stream is generated. The instruction decoding units 111 to 113 are the same as the instruction decoding units 1 to 3 in FIG. 1, respectively, except that they are controlled by the instruction fetch control unit 140. The register groups 131 to 133 are register files each including a plurality of registers, and are provided in the instruction decoding units 111 to 113 in one-to-one correspondence. Accordingly, the logical processors 1 to 3 also correspond one-to-one.

【0079】命令フェッチ制御部140は、図1に示し
た命令発行調停部40及び命令発行禁止部50に対し
て、命令発行要求ではなく命令フェッチ要求の競合を調
停及び禁止する点が異なる点を除いて同様の機能を有す
る。すなわち、優先順位制御部60からの論理プロセッ
サごとの優先順位の指定などを入力とし、キャッシュメ
モリ100に対して複数の命令解読部が同時に命令フェ
ッチ要求が出された場合に、優先順位に応じてフェッチ
する順序を決定したり、また、特定の論理プロセッサの
実行を停止する場合には、その論理プロセッサの命令解
読部からの命令フェッチを停止する。
The instruction fetch control unit 140 differs from the instruction issuance arbitration unit 40 and the instruction issuance prohibition unit 50 shown in FIG. 1 in that arbitration and inhibition of contention of an instruction fetch request instead of an instruction issuance request are different. Except for the same function. That is, when the designation of the priority order for each logical processor is input from the priority order control unit 60, and a plurality of instruction decoding units simultaneously issue instruction fetch requests to the cache memory 100, the instruction fetch request is made according to the priority order. When determining the fetch order or stopping the execution of a specific logical processor, the instruction fetch from the instruction decoding unit of the logical processor is stopped.

【0080】命令発行制御部150は、図1に示した命
令発行判断部30、命令発行調停部40、命令発行禁止
部50および命令選択部70を1つの構成要素として記
しており、それらを併せた機能と同等であるので説明を
省略する。レジスタ制御部170は、図1に示した命令
発行判断部30および命令発行調停部40に対して、命
令発行要求ではなくレジスタアクセス要求の競合を停止
及び調停する点が異なる点を除いて同様の機能を有す
る。すなわち、優先順位制御部60からの論理プロセッ
サごとの優先順位の指定などを入力とし、同一のレジス
タ群に対して同時に複数の機能ユニットがデータを書き
込む要求を出力した場合に、優先順位に応じて書き込む
順序を決定する命令発行制御部である。
The instruction issuance control unit 150 describes the instruction issuance determination unit 30, the instruction issuance arbitration unit 40, the instruction issuance prohibition unit 50, and the instruction selection unit 70 shown in FIG. 1 as one constituent element. The description is omitted because it is equivalent to the function described above. The register control unit 170 is similar to the instruction issuance determination unit 30 and the instruction issuance arbitration unit 40 shown in FIG. 1 except that the contention of the register access request is stopped and arbitrated instead of the instruction issuance request. Has functions. That is, when the designation of the priority order for each logical processor or the like is input from the priority order control unit 60 and a plurality of functional units simultaneously output data write requests to the same register group, The instruction issuance control unit determines the writing order.

【0081】上記の構成により機能ユニットに対する論
理プロセッサの競合だけでなく、キャッシュメモリへの
命令フェッチ要求の競合、レジスタ群へのデータアクセ
ス要求の競合の場面でも、優先順位に応じた調停や停止
を実施することができる。なお、上記の実施形態では、
複数の命令流および論理プロセッサの数を3、機能ユニ
ットの数を4としたが、この数はいくらでもかまわな
い。
With the above configuration, arbitration and stop according to the priority order can be performed not only in the case of contention of the logical processor for the functional unit but also for the contention of the instruction fetch request to the cache memory and the contention of the data access request to the register group. Can be implemented. In the above embodiment,
Although the number of instruction streams and the number of logical processors are three and the number of functional units is four, any number may be used.

【0082】また、優先順位のレベルは2ビット3レベ
ルとしたが、実際には幾つでもよい。さらに、制御レジ
スタを32ビット幅にしたが、他のビット幅でもかまわ
ない。また、複数の論理プロセッサで同時に分岐が発生
した場合に、アドレス計算のための資源やキャッシュな
ど共有しているものについても、他の実施形態と同様に
優先順位によって調停することができる。
Although the priority level is 2 bits and 3 levels, any number of priorities may be used. Further, the control register has a 32-bit width, but may have another bit width. Also, when a branch occurs simultaneously in a plurality of logical processors, resources shared for address calculation and cache can be arbitrated according to the priority order as in the other embodiments.

【0083】さらに、上記実施形態では、PRIレジス
タには専ら専用命令により優先順位を変更するように構
成されているが、専用命令以外にハードウェアにより設
定・変更するように構成してもよい。この場合、各命令
流の優先順位を予め定められたタイミングにより、又は
命令流の状態を監視してその状態により、ハードウェア
の外部的要因や内部的要因をトリガーにして優先順位を
変更するようにしてもよい。
Further, in the above embodiment, the PRI register is configured to change the priority order exclusively by a dedicated instruction. However, the PRI register may be configured to be set and changed by hardware other than the dedicated instruction. In this case, the priority of each instruction stream is changed at a predetermined timing, or the state of the instruction stream is monitored and the external priority or internal factor of hardware is used as a trigger to change the priority. It may be.

【0084】また、上記実施形態では図9の優先順位判
定部41Aにおいて、2つ又は3つの優先順位が同じ場
合に、一応それらを全部有効にして出力するようにして
いるが、何れか1つを有効にして出力するようにしても
よい。その場合、判定補助部42Aを削除することがで
きる。また、図9の判定補助部42Aは優先順位判定部
41Aの後段に設けられているが、優先順位制御部60
と優先順位判定部41Aの間に設けて、同じ優先順位が
複数ある場合には、優先順位を動的に変更するように構
成してもよい。
In the above embodiment, when two or three priorities are the same in the priority order judging section 41A of FIG. 9, all of them are enabled and output once. May be output. In that case, the determination assisting unit 42A can be deleted. Although the determination assisting unit 42A of FIG. 9 is provided after the priority order determining unit 41A, the priority order controlling unit 60A
And a priority determining unit 41A, the priority may be dynamically changed when there are a plurality of the same priority.

【0085】さらに、上記実施形態においてPRIレジ
スタ中のMYPRIフィールドは、PRIレジスタの読
み出し命令を発行元の優先順位を出力しているが、これ
と同様にして例えばMYDATAフィールドを設けて、
論理プロセッサ毎に状態を示すデータ(ステータスデー
タ、エラー情報など)を出力するようにしてもよい。禁
止部50Aが検出している緊急を要する処理は、各種イ
ベントや各種例外処理であってもよい。ここで各種イベ
ントとは外部割込みや内部割込みなどである。各種例外
処理とはキャッシュミスやメモリアクセスエラーなどの
アクセス例外、トラップ命令、演算例外、演算実行エラ
ーなどである。
Further, in the above embodiment, the MYPRI field in the PRI register outputs the priority of the issuer of the read instruction of the PRI register. In the same manner, for example, the MYDATA field is provided.
Data indicating a state (status data, error information, etc.) may be output for each logical processor. The urgent process detected by the prohibition unit 50A may be various events or various exception processes. Here, the various events are an external interrupt, an internal interrupt, and the like. Various types of exception processing include access exceptions such as cache misses and memory access errors, trap instructions, operation exceptions, and operation execution errors.

【0086】また、上記実施形態では、各命令解読部は
命令流1個につき1命令を解読し、一度に発行できる命
令も1個であるものとしていた。これに限らず、命令解
読部が命令流1個につき複数の命令を解読し、同時に複
数の命令を発行する場合であってもよい。
In the above embodiment, each instruction decoding section decodes one instruction per instruction stream, and can issue only one instruction at a time. However, the present invention is not limited thereto, and the instruction decoding unit may decode a plurality of instructions for one instruction stream and issue a plurality of instructions at the same time.

【0087】[0087]

【発明の効果】本発明のマルチスレッドプロセッサは、
それぞれ命令を実行する複数の機能ユニットと、命令流
に対応して設けられ、それぞれ命令を解読して、当該命
令を実行すべき機能ユニットを指定するとともに当該機
能ユニットに解読された命令を発行すベきことを要求す
る命令発行要求を作成する複数の命令解読手段と、命令
流毎に命令流の優先度を保持する保持手段と、2以上の
命令発行要求が同時に一の機能ユニットを指定している
場合に、保持手段に保持された優先度に従って、当該機
能ユニットに発行すべき解読された命令を決定する制御
手段とを備えて構成される。
As described above, the multi-thread processor according to the present invention comprises:
A plurality of functional units each executing an instruction and a plurality of instruction units are provided corresponding to the instruction stream, each of which decodes an instruction, designates a functional unit to execute the instruction, and issues the decoded instruction to the functional unit. A plurality of instruction decoding means for creating an instruction issue request to be performed, a holding means for retaining the priority of the instruction stream for each instruction stream, and two or more instruction issue requests simultaneously specifying one functional unit. And a control means for determining a decoded instruction to be issued to the functional unit in accordance with the priority held in the holding means.

【0088】この構成によれば、各機能ユニットに発行
すべき命令(命令の解読結果)が前記優先度に従って決
定されるので、複数の命令流間で負荷のばらつきを優先
度に応じて柔軟に調整することができ、命令流毎に必要
とされる処理性能を適切に実現し、かつ全体の処理効率
を向上させることができるという効果がある。ここで前
記保持手段は、さらに、命令によって設定可能な、命令
流毎に命令流を停止すべきか実行すべきかを示すフラグ
群を保持し、前記制御手段は、前記決定を行う調停手段
と、停止を示すフラグが設定されている場合には、その
フラグに対応する命令流の命令発行要求を除外して前記
決定を行うことにより、当該命令流を停止する停止手段
とを備えてもよい。
According to this configuration, an instruction to be issued to each functional unit (instruction decoding result) is determined in accordance with the priority, so that a variation in load among a plurality of instruction streams can be flexibly determined according to the priority. Adjustments can be made, and the processing performance required for each instruction stream can be appropriately realized, and the overall processing efficiency can be improved. Here, the holding unit further holds a flag group that can be set by the instruction and indicates whether the instruction flow should be stopped or executed for each instruction flow, and the control unit includes: an arbitration unit that makes the determination; If a flag indicating the instruction flow is set, a stop means for stopping the instruction flow by making the above-described determination excluding the instruction issue request of the instruction flow corresponding to the flag may be provided.

【0089】この構成によれば、さらに、命令流がその
実行過程においてアイドル状態や待ち状態にある場合に
は、その命令流を停止状態とすることができる。つまり
その結果、他の命令流を優先して実行させることができ
るので、さらに全体の処理性能を向上させることができ
る。ここで前記制御手段は、さらに何れかの命令流に対
して緊急を要する処理が発生した場合に、当該命令流に
属する命令であって前記制御手段において発行すべきで
あると決定された命令について、機能ユニットへの命令
発行を一時的に禁止する禁止手段を備えてもよい。
According to this configuration, when the instruction stream is in an idle state or a waiting state during its execution, the instruction stream can be stopped. That is, as a result, other instruction streams can be executed with priority, and the overall processing performance can be further improved. Here, the control unit may further determine, when an urgent process occurs for any of the instruction streams, an instruction belonging to the instruction stream and determined to be issued by the control unit. And a prohibition unit for temporarily prohibiting the issuance of an instruction to a functional unit.

【0090】この構成によれば、ある命令流(論理プロ
セッサ)に対して緊急を要する処理が発生した場合に、
禁止手段により当該論理プロセッサの命令発行が一時的
に禁止する。つまり緊急を要する処理に移行するまで要
するサイクル数だけ一時的に命令発行を禁止する。これ
により、割込み処理への移行を高速化することができ
る。\uしかも、禁止手段は、調停手段により発行するべ
き命令が決定された後に当該命令の発行を禁止すること
ができるので、緊急を要する処理の発生タイミングが調
停手段による決定後であっても、有効に禁止することが
できる。例えば、緊急を要する処理の発生タイミング
が、マシンサイクルの期間の遅い時点であっても有効に
禁止することができるという効果がある。
According to this configuration, when an urgent process occurs for a certain instruction stream (logical processor),
The issuing means of the logical processor is temporarily prohibited by the prohibition means. In other words, instruction issuance is temporarily prohibited for the number of cycles required until the process shifts to urgent processing. This makes it possible to speed up the transition to the interrupt processing. \ u Moreover, the prohibition means can prohibit the issuance of the instruction after the instruction to be issued is determined by the arbitration means. Can be effectively prohibited. For example, there is an effect that even when an urgent process occurs late in a machine cycle, the process can be effectively prohibited.

【0091】ここで機能ユニットの1つは、優先度の変
更を指示する専用命令を受け、保持手段に保持された優
先度のうち、当該専用命令が属する命令流の優先度を変
更するように構成してもよい。ここで前記専用命令は、
優先度を上げる又は下げることを指示するオペレーショ
ンコードのみからなり、前記機能ユニットの1つは、専
用命令の解読結果が発行された場合、当該専用命令を発
行した命令解読手段を判別して、判別された命令解読手
段に対応する命令流の優先度を上げ又は下げるように構
成してもよい。
Here, one of the functional units receives the dedicated instruction for changing the priority, and changes the priority of the instruction stream to which the dedicated instruction belongs among the priorities held in the holding means. You may comprise. Here, the dedicated instruction is
It consists only of an operation code instructing to raise or lower the priority. One of the functional units, when a decoding result of the dedicated instruction is issued, determines the instruction decoding means that issued the dedicated instruction, and determines The priority of the instruction stream corresponding to the executed instruction decoding means may be increased or decreased.

【0092】この構成によれば、さらに、上記専用命令
では、命令流のIDや命令流を特定するためのビット位
置を示すオペランドを必要としないので、どの命令流に
おいても同一の命令により自身の命令流の優先度を簡単
に変更することができる。また、前記一の機能ユニット
によって当該命令が属する命令流の優先度を変更するの
で、異なる命令流の優先度を誤って書換えることもなく
なり、誤動作を防止することができる。例えば、RGB
カラー画像の色別画像データに同一の画像処理を施す場
合、つまり、画像処理用の1つのプログラムを3つの命
令流として独立かつ同時に実行させる場合、情報の隠蔽
(プログラムはRGBのどれかを区別する必要がない)
することができ、かつ命令流の独立性を保証することが
でき、その結果OSやシステム全体の信頼性が向上す
る。
According to this configuration, the dedicated instruction does not require the ID of the instruction stream or the operand indicating the bit position for specifying the instruction stream. The priority of the instruction stream can be easily changed. Further, since the priority of the instruction stream to which the instruction belongs is changed by the one functional unit, the priority of a different instruction stream is not erroneously rewritten, and a malfunction can be prevented. For example, RGB
When the same image processing is performed on the image data for each color of a color image, that is, when one image processing program is executed independently and simultaneously as three instruction streams, the information is concealed (the program discriminates any one of RGB). No need to do)
And the independence of the instruction flow can be guaranteed. As a result, the reliability of the OS and the entire system is improved.

【0093】ここで前記保持手段は、読み出し専用の第
1フィールドを有する制御レジスタを含み、前記機能ユ
ニットの1つは、制御レジスタの読み出し命令の解読結
果が発行された場合、当該読み出し命令を発行した命令
解読手段を判別して、当該命令解読手段に対応する命令
流のIDを第1フィールドの読み出しデータとして内部
バス上に出力するように構成してもよい。
Here, the holding means includes a control register having a read-only first field, and one of the functional units issues the read command when a decoding result of the control register read command is issued. It may be configured to determine the instruction decoding means that has performed the processing and output the ID of the instruction stream corresponding to the instruction decoding means to the internal bus as read data of the first field.

【0094】この構成によれば、さらに、上記のように
1つのプログラムを3つの命令流として独立かつ同時に
実行させる場合に、実際は1つのプログラムではあるが
3つの仮想的なプログラムが並列実行されていることに
なる。それぞれの仮想的なプログラム(または命令流)
は、それぞれ第1フィールドを読み出すことにより命令
流自身のIDを容易に知ることができる。
According to this configuration, when one program is executed independently and simultaneously as three instruction streams as described above, three virtual programs, which are actually one program, are executed in parallel. Will be. Each virtual program (or instruction stream)
Can easily know the ID of the instruction stream itself by reading the first field.

【0095】ここで前記保持手段は、制御レジスタを有
し、前記制御レジスタは、さらに、命令流固有のデータ
を保持するための命令流毎の個別フィールドと、読み出
し専用の第2フィールドとを有し、前記機能ユニットの
1つは、前記制御レジスタの読み出し命令の実行に際し
て、さらに、命令流毎の個別フィールドを読みだすとと
もに、当該読み出し命令を発行した命令解読手段に対応
する命令流の固有のデータを第2フィールドの読み出し
データとして内部バス上に出力するように構成してもよ
い。
Here, the holding means has a control register, and the control register further has an individual field for each instruction stream for holding data unique to the instruction stream, and a second field exclusively for reading. When executing the read instruction of the control register, one of the functional units further reads an individual field for each instruction stream, and reads a unique field of an instruction stream corresponding to an instruction decoding unit that has issued the read instruction. The data may be output to the internal bus as read data of the second field.

【0096】この構成によれば、上記の仮想的なプログ
ラム(または命令流)は、第2フィールドを読み出すこ
とにより自身の優先度を容易に知ることができる。ここ
で前記保持手段は、命令流毎の優先度を保持する優先度
フィールドを有し、前記優先度フィールドは、命令流の
実行モード別の優先度を示す小フィールドからなり、前
記機能ユニットの1つは、専用命令の解読結果が発行さ
れた場合、当該専用命令を発行した命令解読手段を判別
して、判別された命令解読手段に対応する命令流の優先
度フィールドのうち現在の実行モード用の小フィールド
の優先度を上げ又は下げるように構成してもよい。
According to this configuration, the virtual program (or instruction stream) can easily know its own priority by reading the second field. Here, the holding means has a priority field for holding a priority for each instruction stream, and the priority field is composed of a small field indicating a priority for each execution mode of the instruction stream. First, when the decoding result of the dedicated instruction is issued, the instruction decoding means that issued the dedicated instruction is determined, and the priority field of the instruction stream corresponding to the determined instruction decoding means is used for the current execution mode. May be configured to raise or lower the priority of the small field of.

【0097】この構成によれば、実行モード、例えばユ
ーザモードとスーパーバイザモードとで独立して優先度
を設定することができ、他のモードに移行してから復帰
した場合に元の優先度をそのまま保存することができ
る。ここでマルチスレッドプロセッサは、さらに機能ユ
ニットに1つが特定の命令を実行開始したことと、当該
特定命令の解読結果をどの命令解読手段が発行したかを
検出する特定命令検出手段と、特定命令の実行開始が検
出されたとき、その特定命令を発行した命令解読手段に
対応する命令流の優先度を予め定められた期間一時的に
変更する。その命令流の優先度は他の命令流よりも高い
優先度に変更される一時変更手段とを備えるように構成
してもよい。
According to this configuration, the priorities can be set independently in the execution mode, for example, the user mode and the supervisor mode, and when returning to another mode, the original priority remains unchanged. Can be saved. Here, the multi-thread processor further includes a specific instruction detecting means for detecting that one of the functional units has started executing the specific instruction, a specific instruction detecting means for issuing a result of decoding the specific instruction, and a specific instruction detecting means for detecting the specific instruction. When the start of execution is detected, the priority of the instruction stream corresponding to the instruction decoding means that has issued the specific instruction is temporarily changed for a predetermined period. A temporary change unit that changes the priority of the instruction stream to a higher priority than other instruction streams may be provided.

【0098】この構成によれば、一時変更手段が一時的
に優先度を変更するので、命令流中の特定命令を先頭と
する命令列を、連続したサイクルで実行することを保証
することができる。ここでマルチスレッドプロセッサ
は、さらに命令流毎に他の命令流を排他的に停止状態に
すべきか否かを示す排他停止データを保持する排他停止
データ保持手段とを備え、前記停止手段は、さらに前記
排他停止データにより停止状態とされている命令流に対
応する命令解読部から調停手段への命令発行要求の通知
を停止するように構成してもよい。
According to this configuration, since the temporary change means temporarily changes the priority, it is possible to guarantee that the instruction sequence starting with the specific instruction in the instruction stream is executed in a continuous cycle. . Here, the multi-thread processor further includes exclusive stop data holding means for holding exclusive stop data indicating whether or not another instruction stream should be exclusively stopped for each instruction stream, and the stop means further comprises: The instruction decoding unit corresponding to the instruction stream stopped by the exclusive stop data may stop notifying the arbitration unit of the instruction issuance request.

【0099】この構成によれば、ある命令流が他の命令
流の処理を強制的に停止させることができる。したがっ
て命令流間の処理性能の調整を大きな範囲でおこなうこ
とができる。また、上記目的を達成するマルチスレッド
プロセッサは、複数の命令流を同時かつ独立に並列実行
するマルチスレッドプロセッサであって、前記複数の命
令流の命令を一時記憶する命令キャッシュと、前記複数
の命令流に対応して設けられ、命令キャッシュから命令
流の命令をフェッチする複数の命令フェッチ手段と、前
記複数の命令流毎に優先度を指定する優先度指定手段
と、二以上の命令キャッシュ手段から同時に命令フェッ
チ要求が出された場合には、前記優先度制御回路の優先
度に従って、命令フェッチ要求を調停する命令フェッチ
制御手段とを備える。
According to this configuration, one instruction stream can forcibly stop processing another instruction stream. Therefore, it is possible to adjust the processing performance between instruction streams in a large range. Further, a multi-thread processor that achieves the above object is a multi-thread processor that simultaneously and independently executes a plurality of instruction streams in parallel, comprising: an instruction cache that temporarily stores instructions of the plurality of instruction streams; A plurality of instruction fetch means for fetching an instruction of the instruction stream from the instruction cache; a priority specifying means for specifying a priority for each of the plurality of instruction streams; and two or more instruction cache means. An instruction fetch control means for arbitrating the instruction fetch request according to the priority of the priority control circuit when the instruction fetch request is issued at the same time.

【0100】この構成によれば、命令キャッシュに対し
て複数の命令フェッチ手段からの命令フェッチ要求が競
合した場合に優先度に応じて調停するので、マルチスレ
ッドプロセッサの上流の処理において、命令流毎の処理
性能を動的に調整することができるという効果がある。
また、上記目的を達成するマルチスレッドプロセッサ
は、命令を実行する複数の機能ユニットと、命令キャッ
シュから命令を取り出して解読し当該命令を実行すべき
機能ユニットを指定して命令発行要求を出力する複数の
命令解読部と、命令解読部と同数のレジスタセットを有
し、命令解読部と同数の複数の命令流を同時かつ独立に
実行するマルチスレッドプロセッサであって、命令流中
の命令によって命令流毎に設定可能な、命令流の優先度
を保持する保持手段と、複数の命令流によって共有され
る資源に対して、二以上の命令流が同時に競合した場合
に、前記優先度に従って調停する制御手段とを備え、前
記共有資源に対する競合は、一の機能ユニットに対する
二以上の命令解読部からの命令発行要求の競合、命令キ
ャッシュに対する二以上の命令解読部からの命令取り出
し要求の競合、一のレジスタセットに対する二以上の機
能ユニットからのアクセス要求の競合の何れかであるよ
うに構成されている。
According to this configuration, when instruction fetch requests from a plurality of instruction fetch units compete with the instruction cache, arbitration is performed in accordance with the priority. There is an effect that the processing performance of the program can be dynamically adjusted.
In addition, a multi-thread processor that achieves the above object includes a plurality of functional units that execute an instruction and a plurality of functional units that fetch an instruction from an instruction cache, decode the instruction, specify a functional unit to execute the instruction, and output an instruction issue request. A multi-thread processor having the same number of register sets as the instruction decoding unit and the same number of instruction streams as the instruction decoding unit simultaneously and independently. Holding means for holding the priority of an instruction stream, which can be set for each, and control for arbitrating according to the priority when two or more instruction streams simultaneously compete for resources shared by a plurality of instruction streams Means for competing for the shared resource, competing for an instruction issue request from two or more instruction decoding units for one functional unit, Conflict instruction fetch request from the instruction decode unit of the above, and is configured to be any of the access request conflicts of two or more functional units for one of the register sets.

【0101】この構成によれば、命令流によって共有さ
れる資源に対して複数の命令流からの処理要求が競合し
た場合に、優先度に応じて調停するので、命令流毎の処
理性能を柔軟に調整することができるという効果があ
る。
According to this configuration, when processing requests from a plurality of instruction streams compete for resources shared by the instruction streams, arbitration is performed according to the priority, so that the processing performance for each instruction stream is flexibly improved. There is an effect that can be adjusted.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の実施形態におけるマルチスレッドプロ
セッサの構成を示すブロック図である。
FIG. 1 is a block diagram illustrating a configuration of a multi-thread processor according to an embodiment of the present invention.

【図2】本発明の他の実施形態におけるマルチスレッド
プロセッサのブロック図である。
FIG. 2 is a block diagram of a multi-thread processor according to another embodiment of the present invention.

【図3】本発明の実施形態における命令流制御装置の優
先順位指定レジスタの説明図である。
FIG. 3 is an explanatory diagram of a priority designation register of the instruction stream control device according to the embodiment of the present invention.

【図4】同実施形態における命令流制御装置の優先順位
指定レジスタの下位2ビットの説明図である。
FIG. 4 is an explanatory diagram of lower two bits of a priority specification register of the instruction flow control device according to the embodiment.

【図5】同実施形態における命令流制御装置の優先順位
指定レジスタの上位1ビットの説明図である。
FIG. 5 is an explanatory diagram of upper one bit of a priority designation register of the instruction flow control device in the embodiment.

【図6】同実施形態における命令流制御装置の内部割り
込みレジスタの構成図である。
FIG. 6 is a configuration diagram of an internal interrupt register of the instruction flow control device according to the first embodiment.

【図7】同実施形態における命令流制御装置の排他停止
レジスタの構成図である。
FIG. 7 is a configuration diagram of an exclusive stop register of the instruction flow control device in the embodiment.

【図8】同実施形態における命令発行判断部のより詳細
な構成例を示すブロック図である。
FIG. 8 is a block diagram showing a more detailed configuration example of an instruction issuance determination unit in the embodiment.

【図9】同実施形態における命令発行調停部のより詳細
な構成例を示すブロック図である。
FIG. 9 is a block diagram showing a more detailed configuration example of an instruction issuance arbitration unit in the embodiment.

【図10】同実施形態における優先順位判定部の制御論
理を示す説明図である。
FIG. 10 is an explanatory diagram showing control logic of a priority order determination unit in the embodiment.

【図11】同実施形態における命令発行禁止部のより詳
細な構成例を示すブロック図である。
FIG. 11 is a block diagram showing a more detailed configuration example of an instruction issuance prohibition unit in the embodiment.

【図12】機能ユニットによる専用命令及び制御レジス
タの読み出し命令の実行内容を示す説明図を示す。
FIG. 12 is an explanatory diagram illustrating execution contents of a dedicated instruction and a control register read instruction by a functional unit.

【図13】優先順位制御部の詳細な構成を示すブロック
図である。
FIG. 13 is a block diagram illustrating a detailed configuration of a priority control unit.

【図14】連続サイクル優先部内のセレクタに入力され
る選択信号と、出力値との関係を表した説明図を示す。
FIG. 14 is an explanatory diagram showing a relationship between a selection signal input to a selector in a continuous cycle priority section and an output value.

【図15】従来のマルチスレッドプロセッサの構成を示
すブロック図である。
FIG. 15 is a block diagram illustrating a configuration of a conventional multithread processor.

【符号の説明】[Explanation of symbols]

1 命令解読部 2 命令解読部 3 命令解読部 20 機能ユニットA 21 機能ユニットB 22 機能ユニットC 23 機能ユニットD 30 命令発行判断部 40 命令発行調停部 50 命令発行禁止部 60 優先順位制御部 70 命令選択部 DESCRIPTION OF SYMBOLS 1 Instruction decoding part 2 Instruction decoding part 3 Instruction decoding part 20 Function unit A 21 Function unit B 22 Function unit C 23 Function unit D 30 Instruction issue determination part 40 Instruction issue arbitration part 50 Instruction issue prohibition part 60 Priority control part 70 Instruction Selection section

Claims (38)

【特許請求の範囲】[Claims] 【請求項1】 複数の命令流を実行するマルチスレッド
プロセッサであって、 それぞれ命令を実行する複数の機能ユニットと、 命令流に対応して設けられ、それぞれ命令を解読して、
当該命令を実行すべき機能ユニットを指定するとともに
当該機能ユニットに解読された命令を発行すベきことを
要求する命令発行要求を作成する複数の命令解読手段
と、 命令流毎に命令流の優先度を保持する保持手段と、 2以上の命令発行要求が同時に一の機能ユニットを指定
している場合に、保持手段に保持された優先度に従っ
て、当該機能ユニットに発行すべき解読された命令を決
定する制御手段とを備えることを特徴とするマルチスレ
ッドプロセッサ。
1. A multi-thread processor for executing a plurality of instruction streams, comprising: a plurality of functional units each for executing an instruction; and a plurality of functional units provided corresponding to the instruction stream;
A plurality of instruction decoding means for designating a functional unit in which the instruction is to be executed and for generating an instruction issue request for requesting that the decoded instruction be issued to the functional unit; Holding means for holding the degree of execution, and when two or more instruction issuance requests specify one functional unit at the same time, decode instructions to be issued to the functional unit according to the priority held by the holding means. A multi-thread processor, comprising: a control unit for determining.
【請求項2】 前記保持手段は、さらに、命令によって
設定可能な、命令流毎に命令流を停止すべきか実行すべ
きかを示すフラグ群を保持し、 前記制御手段は、 前記決定を行う調停手段と、 停止を示すフラグが設定されている場合には、そのフラ
グに対応する命令流の命令発行要求を除外して前記決定
を行うことにより、当該命令流を停止する停止手段とを
備えることを特徴とする請求項1記載のマルチスレッド
プロセッサ。
2. The holding unit further holds a flag group that can be set by an instruction and indicates whether the instruction flow should be stopped or executed for each instruction flow, and the control unit performs the determination. And when the flag indicating the stop is set, a stop means for stopping the instruction flow by making the determination excluding the instruction issue request of the instruction flow corresponding to the flag. The multi-thread processor according to claim 1, wherein:
【請求項3】 前記制御手段は、さらに何れかの命令流
に対して緊急を要する処理が発生した場合に、当該命令
流に属する命令であって前記制御手段において発行すべ
きであると決定された命令について、機能ユニットへの
命令発行を一時的に禁止する禁止手段を備えることを特
徴とする請求項2記載のマルチスレッドプロセッサ。
3. The control means further determines that if an urgent process occurs for any of the instruction streams, the control means determines that the instruction belongs to the instruction stream and should be issued by the control means. 3. The multi-thread processor according to claim 2, further comprising a prohibition unit for temporarily prohibiting the issuance of the instruction to the functional unit.
【請求項4】 前記緊急を要する処理は、割込み要求、
キャッシュミス発生を知らせるイベントの何れかである
ことを特徴とする請求項3記載のマルチスレッドプロセ
ッサ。
4. The processing requiring urgency includes an interrupt request,
4. The multi-thread processor according to claim 3, wherein the event is any one of events notifying occurrence of a cache miss.
【請求項5】 機能ユニットの1つは、優先度の変更を
指示する専用命令を受け、保持手段に保持された優先度
のうち、当該専用命令が属する命令流の優先度を変更す
ることを特徴とする請求項1記載のマルチスレッドプロ
セッサ。
5. One of the functional units receives a dedicated instruction instructing a change of the priority, and changes the priority of the instruction stream to which the dedicated instruction belongs among the priorities held in the holding means. The multi-thread processor according to claim 1, wherein:
【請求項6】 前記専用命令は、優先度を上げ又は下げ
ることを指示するオペレーションコードのみからなり、 前記機能ユニットの1つは、専用命令の解読結果が発行
された場合、当該専用命令を発行した命令解読手段を判
別して、判別された命令解読手段に対応する命令流の優
先度を上げ又は下げることを特徴とする請求項5記載の
マルチスレッドプロセッサ。
6. The dedicated instruction comprises only an operation code instructing to raise or lower the priority, and one of the functional units issues the dedicated instruction when a decoding result of the dedicated instruction is issued. 6. The multi-thread processor according to claim 5, wherein said instruction decoding means is determined, and the priority of an instruction stream corresponding to said determined instruction decoding means is raised or lowered.
【請求項7】 前記保持手段は、読み出し専用の第1フ
ィールドを有する制御レジスタを含み、 前記機能ユニットの1つは、制御レジスタの読み出し命
令の解読結果が発行された場合、当該読み出し命令を発
行した命令解読手段を判別して、当該命令解読手段に対
応する命令流のIDを第1フィールドの読み出しデータ
として内部バス上に出力することを特徴とする請求項6
記載のマルチスレッドプロセッサ。
7. The holding unit includes a control register having a first field for reading only, and one of the functional units issues the reading instruction when a decoding result of the reading instruction of the control register is issued. 7. The method according to claim 6, wherein the instruction decoding means determines the instruction decoding means, and outputs an instruction stream ID corresponding to the instruction decoding means to the internal bus as read data of the first field.
The multithreaded processor as described.
【請求項8】 前記制御レジスタは、さらに前記優先度
を保持するための命令流毎の優先度フィールドを有し、 前記機能ユニットの1つは、制御レジスタの読み出し命
令の解読結果が発行された場合、さらに各優先度フィー
ルドを読み出すことを特徴とする請求項7記載のマルチ
スレッドプロセッサ。
8. The control register further has a priority field for each instruction stream for holding the priority, and one of the functional units has issued a decoding result of a control register read instruction. 8. The multi-thread processor according to claim 7, wherein, in the case, each priority field is read.
【請求項9】 前記保持手段は、制御レジスタを有し、 前記制御レジスタは、さらに、命令流固有のデータを保
持するための命令流毎の個別フィールドと、読み出し専
用の第2フィールドとを有し、 前記機能ユニットの1つは、前記制御レジスタの読み出
し命令の実行に際して、さらに、命令流毎の個別フィー
ルドを読みだすとともに、当該読み出し命令を発行した
命令解読手段に対応する命令流の固有のデータを第2フ
ィールドの読み出しデータとして内部バス上に出力する
ことを特徴とする請求項6記載のマルチスレッドプロセ
ッサ。
9. The holding means has a control register, and the control register further has an individual field for each instruction stream for holding data unique to the instruction stream, and a read-only second field. When one of the functional units executes a read instruction of the control register, the functional unit further reads an individual field for each instruction stream, and reads a unique field of an instruction stream corresponding to an instruction decoding unit that has issued the read instruction. 7. The multi-thread processor according to claim 6, wherein the data is output on the internal bus as read data of the second field.
【請求項10】 前記命令流固有のデータは、優先度で
あることを特徴とする請求項9記載のマルチスレッドプ
ロセッサ。
10. The multi-thread processor according to claim 9, wherein the data unique to the instruction stream is a priority.
【請求項11】 前記保持手段は、命令流毎の優先度を
保持する優先度フィールドを有し、 前記優先度フィールドは、命令流の実行モード別の優先
度を示す小フィールドからなり、 前記機能ユニットの1つは、専用命令の解読結果が発行
された場合、当該専用命令を発行した命令解読手段を判
別して、判別された命令解読手段に対応する命令流の優
先度フィールドのうち現在の実行モード用の小フィール
ドの優先度を上げ又は下げることを特徴とする請求項6
記載のマルチスレッドプロセッサ。
11. The holding means has a priority field for holding a priority for each instruction stream, wherein the priority field comprises a small field indicating the priority of each execution mode of the instruction stream. One of the units, when a decoding result of the dedicated instruction is issued, determines the instruction decoding unit that has issued the dedicated instruction and determines the current one of the priority fields of the instruction stream corresponding to the determined instruction decoding unit. 7. The method according to claim 6, wherein the priority of the small field for the execution mode is increased or decreased.
The multithreaded processor as described.
【請求項12】 機能ユニットに1つが特定の命令を実
行開始したことと、当該特定命令の解読結果をどの命令
解読手段が発行したかを検出する特定命令検出手段と、 特定命令の実行開始が検出されたとき、その特定命令を
発行した命令解読手段に対応する命令流の優先度を、他
の命令流よりも高い優先度に予め定められた期間一時的
に変更する一時変更手段とを備えることを特徴とする請
求項1記載のマルチスレッドプロセッサ。
12. A specific instruction detecting means for detecting that one of the functional units has started executing a specific instruction, detecting which instruction decoding means has issued a decoding result of the specific instruction, and starting execution of the specific instruction. Temporary detection means for temporarily changing the priority of an instruction stream corresponding to the instruction decoding means which has issued the specific instruction to a higher priority than other instruction streams for a predetermined period when detected. The multi-thread processor according to claim 1, wherein:
【請求項13】 複数の命令流を実行するマルチスレッ
ドプロセッサであって、 それぞれ命令を実行する複数の機能ユニットと、 命令流に対応して設けられ、それぞれ命令を解読して、
当該命令を実行すべき機能ユニットと、当該機能ユニッ
トに解読された命令を発行すベきことを要求する命令発
行要求を作成する複数の命令解読手段と、 命令流毎にその優先度を保持する優先度保持手段と、 命令流毎に命令流を実行状態にすべきか停止状態にすべ
きかを示す自己停止データを保持する自己停止データ保
持手段と、 複数の命令解読部から通知される命令発行要求を受け
て、2以上の命令発行要求が同時に一の機能ユニットを
指定している場合に、優先度保持手段に保持された優先
度に従って、当該機能ユニットに発行すべき解読された
命令を決定する調停手段と、 複数の命令解読部から前記調停手段に通知される命令発
行要求のうち、前記自己停止データにより停止状態とさ
れている命令流に対応する命令解読部から調停手段への
命令発行要求の通知を停止する停止手段とを備えること
を特徴とするマルチスレッドプロセッサ。
13. A multi-thread processor for executing a plurality of instruction streams, comprising: a plurality of functional units each for executing an instruction;
A functional unit to execute the instruction, a plurality of instruction decoding means for creating an instruction issue request for requesting the functional unit to issue the decoded instruction, and the priority of each instruction stream is maintained. Priority holding means, self-stop data holding means for holding self-stop data indicating whether the instruction stream should be executed or stopped for each instruction stream, and an instruction issuance request notified from a plurality of instruction decoding units In response, when two or more instruction issuance requests specify one functional unit at the same time, a decoded instruction to be issued to the functional unit is determined according to the priority held in the priority holding means. An arbitration unit; and an arbitration unit that receives, from the instruction issuance requests notified from the plurality of instruction decoding units to the arbitration unit, an instruction arbitration unit corresponding to an instruction stream stopped by the self-stop data. A stopping means for stopping notification of an instruction issue request to a stage.
【請求項14】 前記マルチスレッドプロセッサは、さ
らに命令流毎に他の命令流を排他的に停止状態にすべき
か否かを示す排他停止データを保持する排他停止データ
保持手段を備え、 前記停止手段は、さらに前記排他停止データにより停止
状態とされている命令流に対応する命令解読部から調停
手段への命令発行要求の通知を停止することを特徴とす
る請求項13記載のマルチスレッドプロセッサ。
14. The multi-thread processor further comprises exclusive stop data holding means for holding exclusive stop data indicating whether or not another instruction stream should be exclusively stopped for each instruction stream; 14. The multi-thread processor according to claim 13, further comprising: stopping notification of an instruction issuance request from the instruction decoding unit corresponding to the instruction stream stopped by the exclusive stop data to the arbitration unit.
【請求項15】 前記機能ユニットの1つは、優先度の
変更を指示する専用命令の解読結果が発行された場合、
当該命令に従って優先度を変更することを特徴とする請
求項13記載のマルチスレッドプロセッサ。
15. One of the functional units, when a decoding result of a dedicated instruction for instructing a change of a priority is issued,
14. The multi-thread processor according to claim 13, wherein the priority is changed according to the instruction.
【請求項16】 前記専用命令は、優先度を上げる又は
下げることを指示するオペレーションコードのみからな
り、 前記機能ユニットの1つは、専用命令の解読結果が発行
された場合、当該専用命令を発行した命令解読手段を判
別して、判別された命令解読手段に対応する命令流の優
先度を上げ又は下げることを特徴とする請求項15記載
のマルチスレッドプロセッサ。
16. The dedicated instruction comprises only an operation code instructing to raise or lower the priority, and one of the functional units issues the dedicated instruction when a decoding result of the dedicated instruction is issued. 16. The multi-thread processor according to claim 15, wherein the determined instruction decoding means is determined, and the priority of the instruction stream corresponding to the determined instruction decoding means is increased or decreased.
【請求項17】 前記保持手段は、読み出し専用の第1
フィールドを有する制御レジスタを含み、 前記機能ユニットの1つは、制御レジスタの読み出し命
令の解読結果が発行された場合、当該読み出し命令を発
行した命令解読手段を判別して、当該命令解読手段に対
応する命令流のIDを第1フィールドの読み出しデータ
として内部バス上に出力することを特徴とする請求項1
6記載のマルチスレッドプロセッサ。
17. The reading device according to claim 17, wherein the holding unit is a first read-only first unit.
A control register having a field, wherein one of the functional units, when a decoding result of a read instruction of the control register is issued, determines an instruction decoding unit that issued the read instruction, and responds to the instruction decoding unit. 2. An ID of an instruction stream to be output as read data of a first field on an internal bus.
7. The multi-thread processor according to 6.
【請求項18】 前記制御レジスタは、さらに前記優先
度を保持するための命令流毎の優先度フィールドを有
し、 前記機能ユニットの1つは、制御レジスタの読み出し命
令の解読結果が発行された場合、さらに各優先度フィー
ルドを読み出すことを特徴とする請求項17記載のマル
チスレッドプロセッサ。
18. The control register further has a priority field for each instruction stream for holding the priority, and one of the functional units has issued a decoding result of a control register read instruction. 18. The multi-thread processor according to claim 17, wherein in the case, each priority field is further read.
【請求項19】 前記保持手段は、制御レジスタを有
し、 前記制御レジスタは、さらに、命令流固有のデータを保
持するための命令流毎の個別フィールドと、読み出し専
用の第2フィールドとを有し、 前記機能ユニットの1つは、前記制御レジスタの読み出
し命令の実行に際して、さらに、命令流毎の個別フィー
ルドを読みだすとともに、当該読み出し命令を発行した
命令解読手段に対応する命令流の固有のデータを第2フ
ィールドの読み出しデータとして内部バス上に出力する
ことを特徴とする請求項16記載のマルチスレッドプロ
セッサ。
19. The holding means has a control register, and the control register further has an individual field for each instruction stream for holding data unique to the instruction stream, and a second field dedicated to reading. When one of the functional units executes a read instruction of the control register, the functional unit further reads an individual field for each instruction stream, and reads a unique field of an instruction stream corresponding to an instruction decoding unit that has issued the read instruction. 17. The multi-thread processor according to claim 16, wherein data is output as read data of a second field onto an internal bus.
【請求項20】 前記命令流固有のデータは、優先度で
あることを特徴とする請求項19記載のマルチスレッド
プロセッサ。
20. The multi-thread processor according to claim 19, wherein the data unique to the instruction stream is a priority.
【請求項21】 前記保持手段は、命令流毎の優先度を
保持する優先度フィールドを有し、 前記優先度フィールドは、命令流の実行モード別の優先
度を示す小フィールドからなり、 前記機能ユニットの1つは、専用命令の解読結果が発行
された場合、当該専用命令を発行した命令解読手段を判
別して、判別された命令解読手段に対応する命令流の優
先度フィールドのうち現在の実行モード用の小フィール
ドの優先度を上げ又は下げることを特徴とする請求項1
9記載のマルチスレッドプロセッサ。
21. The holding means has a priority field for holding a priority for each instruction stream, wherein the priority field comprises a small field indicating a priority for each execution mode of the instruction stream. One of the units, when a decoding result of the dedicated instruction is issued, determines the instruction decoding unit that has issued the dedicated instruction and determines the current one of the priority fields of the instruction stream corresponding to the determined instruction decoding unit. 2. The method according to claim 1, wherein the priority of the small field for the execution mode is increased or decreased.
9. The multi-thread processor according to item 9.
【請求項22】 機能ユニットに1つが特定の命令を実
行開始したことと、当該特定命令の解読結果をどの命令
解読手段が発行したかを検出する特定命令検出手段と、 特定命令の実行開始が検出されたとき、その特定命令を
発行した命令解読手段に対応する命令流の優先度を、他
の命令流よりも高い優先度に予め定められた期間一時的
に変更する一時変更手段とを備えることを特徴とする請
求項13記載のマルチスレッドプロセッサ。
22. A specific instruction detecting means for detecting that one of the functional units has started executing a specific instruction, detecting which instruction decoding means has issued a decoding result of the specific instruction, and starting the execution of the specific instruction. Temporary detection means for temporarily changing the priority of an instruction stream corresponding to the instruction decoding means which has issued the specific instruction to a higher priority than other instruction streams for a predetermined period when detected. 14. The multi-thread processor according to claim 13, wherein:
【請求項23】 複数の命令流を同時かつ独立に並列実
行するマルチスレッドプロセッサであって、 それぞれ同時かつ独立に命令を実行する複数の機能ユニ
ットと、 前記複数の命令流の対応して設けられる、それぞれは命
令流の命令を取り出して解読し、前記機能ユニットのう
ち発行先とすべき機能ユニットを特定する複数の命令解
読手段と、 前記複数の命令流毎の優先度を指定する優先度指定手段
と、 命令を受け入れ可能か否かを示す機能ユニット毎の状態
に基づいて、前記発行先とすべき機能ユニットに、解読
された命令を発行可能か否かを判断する命令発行判断手
段と、 一の機能ユニットに対して二以上の命令が発行可能と判
断された場合には、前記優先度指定手段に指定される優
先度に従って当該二以上の命令を調停して当該一の機能
ユニットに発行すべき一命令を決定する命令発行調停手
段とを備えることを特徴とするマルチスレッドプロセッ
サ。
23. A multi-thread processor for simultaneously and independently executing a plurality of instruction streams in parallel, wherein the plurality of functional units execute instructions simultaneously and independently, and a plurality of functional units are provided corresponding to the plurality of instruction streams. A plurality of instruction decoding means for extracting and decoding instructions in the instruction stream and identifying a functional unit to be issued to among the functional units, and a priority designation for designating a priority for each of the plurality of instruction streams Means for determining whether or not a decoded instruction can be issued to the functional unit to which the instruction is to be issued, based on a state of each functional unit indicating whether or not the instruction can be accepted; When it is determined that two or more instructions can be issued to one functional unit, the two or more instructions are arbitrated according to the priority specified by the priority specifying means, and the one or more instructions are arbitrated. Multi-thread processor, characterized in that it comprises an instruction issue arbitration means for determining an instruction to be issued to the ability unit.
【請求項24】 マルチスレッドプロセッサは、さらに
どれかの命令流に対して緊急を要する処理が発生した場
合に、当該命令流に属する命令であって前記命令発行調
停手段において既に発行すべきであると決定された命令
について、機能ユニットへの命令発行を一時的に禁止す
る命令発行禁止手段を備えることを特徴とする請求項2
3記載のマルチスレッドプロセッサ。
24. The multi-thread processor, when an urgent process occurs in any one of the instruction streams, should be issued by the instruction issuance arbitration means, the instruction belonging to the instruction stream. 3. An instruction issuance prohibiting unit for temporarily prohibiting instruction issuance to a functional unit with respect to an instruction determined as follows.
3. The multi-thread processor according to 3.
【請求項25】 前記緊急を要する処理は、割込み要
求、キャッシュミス発生を知らせるイベントの何れかで
あるを備えることを特徴とする請求項24記載のマルチ
スレッドプロセッサ。
25. The multi-thread processor according to claim 24, wherein the urgent processing includes one of an interrupt request and an event for notifying occurrence of a cache miss.
【請求項26】 前記優先度指定手段は、命令流毎に命
令流の優先度を保持する制御レジスタを備え、 前記優先度は、命令流中の命令によって設定されること
を特徴とする請求項24記載のマルチスレッドプロセッ
サ。
26. The system according to claim 26, wherein said priority designation means includes a control register for holding a priority of the instruction stream for each instruction stream, and wherein said priority is set by an instruction in the instruction stream. 25. The multi-thread processor according to 24.
【請求項27】 前記機能ユニットの1つは、優先度の
変更を指示する専用命令を受け、保持手段に保持された
優先度のうち、当該専用命令が属する命令流の優先度を
変更することを特徴とする請求項26記載のマルチスレ
ッドプロセッサ。
27. One of the functional units receives a dedicated instruction instructing a change of a priority, and changes a priority of an instruction stream to which the dedicated instruction belongs among the priorities held in the holding unit. The multi-thread processor according to claim 26, wherein:
【請求項28】 前記命令発行調停手段は、さらに一の
機能ユニットに対して二以上の命令が発行可能と判断さ
れ、かつ、当該二以上の命令が属する命令流が同順位の
優先度である場合には、当該一の機能ユニットに発行す
べき命令を所定の手順で決定することを特徴とする請求
項27記載のマルチスレッドプロセッサ。
28. The instruction issuance and arbitration unit further determines that two or more instructions can be issued to one functional unit, and the instruction streams to which the two or more instructions belong have the same priority. 28. The multi-thread processor according to claim 27, wherein in that case, an instruction to be issued to said one functional unit is determined by a predetermined procedure.
【請求項29】 前記命令発行調停手段は、前記所定の
手順として、周期的に異なる命令流が優先されるように
決定する手順と、命令流の実行の履歴より前回と異なる
命令流の命令を発行すべき命令と決定する手順と、固定
的に何れかの命令流の命令を決定する手順との何れかに
従って発行すべき命令を決定する補助判定手段を備える
ことを特徴とする請求項28記載のマルチスレッドプロ
セッサ。
29. The instruction issuance arbitration means, as the predetermined procedure, a procedure of periodically deciding that a different instruction stream has priority, and an instruction of an instruction stream different from the previous one based on the execution history of the instruction stream. 29. An apparatus according to claim 28, further comprising an auxiliary determination unit configured to determine an instruction to be issued in accordance with one of a procedure for determining an instruction to be issued and a procedure for fixedly determining an instruction in any instruction stream. Multi-threaded processor.
【請求項30】 前記制御レジスタは、命令流毎に実行
モード別の優先度フィールドを有し、 前記命令発行調停手段は、命令流の実行モードに応じた
優先度フィールドを参照して前記調停を行うことを特徴
とする請求項26記載のマルチスレッドプロセッサ。
30. The control register has a priority field for each execution mode for each instruction stream, and the instruction issue arbitration unit performs the arbitration by referring to a priority field corresponding to an execution mode of the instruction stream. 28. The multi-threaded processor according to claim 26, wherein the processing is performed.
【請求項31】 前記優先度指定手段は、 命令流中の専用命令によって命令流毎に実行モード別の
設定可能な優先度フィールドを有する制御レジスタを備
え、 機能ユニットの1つは、前記専用命令の発行元の命令解
読手段に対応する命令流及びその実行モードを検出し
て、検出された命令流及び実行モードに対応する優先度
フィールドに専用命令に従って優先度を設定することを
特徴とする請求項24記載のマルチスレッドプロセッ
サ。
31. The priority designation means includes a control register having a priority field which can be set for each execution mode by a dedicated instruction in the instruction stream for each execution mode. Detecting the instruction stream corresponding to the instruction decoding means of the issuer and the execution mode thereof, and setting the priority according to the dedicated instruction in the priority field corresponding to the detected instruction stream and execution mode. Item 25. The multi-thread processor according to item 24.
【請求項32】 前記専用命令は、オペレーションコー
ドのみからなり、優先度の上昇又は下降の何れかを指示
することを特徴とする請求項31記載のマルチスレッド
プロセッサ。
32. The multi-thread processor according to claim 31, wherein the dedicated instruction comprises only an operation code, and indicates one of an increase and a decrease in the priority.
【請求項33】 複数の命令流を同時かつ独立に並列実
行するマルチスレッドプロセッサであって、 同時かつ独立に命令を実行する複数の機能ユニットと、 前記複数の命令流の対応して設けられる、命令流の命令
を取り出して解読し、前記機能ユニットのうち発行先と
すべき機能ユニットを解読する複数の命令解読手段と、 前記複数の命令流毎の優先度と、命令流毎に実行状態に
あるか停止状態にあるかを指定する優先度指定手段と、 命令を受け入れ可能か否かを示す機能ユニット毎の状態
に基づいて、前記発行先とすべき機能ユニットに、解読
された命令を発行可能か否かを判断する命令発行判断手
段と、 一の機能ユニットに対して二以上の命令が発行可能と判
断された場合には、前記優先度指定手段に指定される優
先度に従って当該二以上の命令を調停して当該一の機能
ユニットに発行すべき一命令を決定する命令発行調停手
段とを備えることを特徴とするマルチスレッドプロセッ
サ。
33. A multi-thread processor for executing a plurality of instruction streams simultaneously and independently in parallel, comprising: a plurality of functional units for executing instructions simultaneously and independently; and a plurality of functional units provided corresponding to the plurality of instruction streams. A plurality of instruction decoding means for extracting and decoding the instructions in the instruction stream, and for decoding the functional unit to be issued among the functional units; a priority for each of the plurality of instruction streams; and an execution state for each instruction stream. Issue a decoded instruction to the functional unit to which the instruction is to be issued based on the priority specifying means for specifying whether the instruction is accepted or not, and the state of each functional unit indicating whether the instruction can be accepted or not. Instruction issuance determination means for determining whether or not two or more instructions can be issued to one functional unit; and if it is determined that two or more instructions can be issued to one functional unit, the instruction is determined in accordance with the priority specified by the priority specification means. Multi-thread processor, characterized in that arbitrates instruction with upper and a command issuing arbitration means for determining an instruction to be issued to the functional units of the one.
【請求項34】 前記優先度指定手段は、 第1の命令によって設定可能な命令流毎の優先度を保持
する第1レジスタと、 第2の命令によって設定可能な、命令流が実行状態か停
止状態かを示す命令流毎の状態フラグを保持する第2レ
ジスタと、 第3の命令によって設定可能な、他の全命令流を停止す
ることを示す命令流毎の排他停止フラグを保持する第3
レジスタとを備え、 前記命令発行判断手段は、前記状態フラグ及び排他停止
レジスタに従って停止中の命令流の命令を発行不可と判
断することを特徴とする請求項33記載のマルチスレッ
ドプロセッサ。
34. The priority specifying means, comprising: a first register for holding a priority for each instruction stream that can be set by a first instruction; a priority register that can be set by a second instruction; A second register for holding a state flag for each instruction stream indicating a state, and a third register for holding an exclusive stop flag for each instruction stream, which can be set by a third instruction and indicating that all other instruction streams are stopped.
34. The multi-thread processor according to claim 33, further comprising a register, wherein the instruction issuance determination unit determines that an instruction in a suspended instruction stream cannot be issued in accordance with the status flag and the exclusive suspension register.
【請求項35】 前記第1の命令は、優先度を上げる又
は下げることを指示するオペレーションコードのみから
なる命令であり、 前記第2の命令は、停止状態に入ることを指示するオペ
レーションコードのみからなる命令であり、 前記第3の命令は、他の命令流を停止させることを指示
するオペレーションコードのみからなる命令であり、 前記機能ユニットの1つは、第1、第2又は第3の命令
が発行されたとき、当該命令の発行元の命令解読手段に
対応する命令流を検出して、検出された命令流対応する
優先度、状態フラグ又は排他停止フラグを変更すること
を特徴とする請求項34記載のマルチスレッドプロセッ
サ。
35. The first instruction is an instruction consisting only of an operation code instructing to raise or lower the priority, and the second instruction is composed only of an operation code instructing to enter a stop state. The third instruction is an instruction consisting only of an operation code instructing to stop another instruction stream, and one of the functional units is a first, second, or third instruction. Is issued, an instruction flow corresponding to the instruction decoding means from which the instruction is issued is detected, and a priority, a state flag, or an exclusive stop flag corresponding to the detected instruction flow is changed. Item 34. The multi-thread processor according to Item 34.
【請求項36】 複数の命令流を同時かつ独立に並列実
行するマルチスレッドプロセッサであって、 前記複数の命令流の命令を一時記憶する命令キャッシュ
と、 前記複数の命令流に対応して設けられ、命令キャッシュ
から命令流の命令をフェッチする複数の命令フェッチ手
段と、 前記複数の命令流毎に優先度を指定する優先度指定手段
と、 二以上の命令キャッシュ手段から同時に命令フェッチ要
求が出された場合には、前記優先度制御回路の優先度に
従って、命令フェッチ要求を調停する命令フェッチ制御
手段とを備えることを特徴とするマルチスレッドプロセ
ッサ。
36. A multi-thread processor for simultaneously and independently executing a plurality of instruction streams in parallel, comprising: an instruction cache for temporarily storing instructions of the plurality of instruction streams; and an instruction cache provided corresponding to the plurality of instruction streams. A plurality of instruction fetch means for fetching an instruction of an instruction stream from the instruction cache; a priority designation means for designating a priority for each of the plurality of instruction streams; and an instruction fetch request issued simultaneously from two or more instruction cache means. An instruction fetch control means for arbitrating an instruction fetch request in accordance with the priority of the priority control circuit.
【請求項37】 命令を実行する複数の機能ユニット
と、命令キャッシュから命令を取り出して解読し当該命
令を実行すべき機能ユニットを指定して命令発行要求を
出力する複数の命令解読部と、命令解読部と同数のレジ
スタセットを有し、命令解読部と同数の複数の命令流を
同時かつ独立に実行するマルチスレッドプロセッサであ
って、 命令流中の命令によって命令流毎に設定可能な、命令流
の優先度を保持する保持手段と、 複数の命令流によって共有される資源に対して、二以上
の命令流が同時に競合した場合に、前記優先度に従って
調停する制御手段とを備え、 前記共有資源に対する競合は、一の機能ユニットに対す
る二以上の命令解読部からの命令発行要求の競合、命令
キャッシュに対する二以上の命令解読部からの命令取り
出し要求の競合、一のレジスタセットに対する二以上の
機能ユニットからのアクセス要求の競合の何れかである
ことを特徴とするマルチスレッドプロセッサ。
37. A plurality of functional units for executing an instruction, a plurality of instruction decoding units for extracting and decoding an instruction from an instruction cache, designating a functional unit to execute the instruction, and outputting an instruction issue request, A multi-thread processor having the same number of register sets as the decoding unit and simultaneously and independently executing a plurality of instruction streams of the same number as the instruction decoding unit, the instructions being settable for each instruction stream by the instructions in the instruction stream. Holding means for holding the priority of a flow, and control means for arbitrating according to the priority when two or more instruction flows simultaneously compete for a resource shared by a plurality of instruction flows, wherein the shared Contention for resources is caused by contention of instruction issue requests from two or more instruction decoding units for one functional unit, and instruction fetching from two or more instruction decoding units for the instruction cache. A multi-thread processor, which is one of a contention of a request and a contention of an access request from two or more functional units to one register set.
【請求項38】前記機能ユニットの1つは、優先度を上
げる又は下げることを指示する命令を受け、保持手段に
保持された優先度のうち当該命令が属する命令流の優先
度を変更することを特徴とする請求項36記載のマルチ
スレッドプロセッサ。
38. One of the functional units receives an instruction for increasing or decreasing the priority, and changes the priority of the instruction stream to which the instruction belongs among the priorities held in the holding means. The multi-thread processor according to claim 36, wherein:
JP23097697A 1996-08-27 1997-08-27 Multi-thread processor that processes multiple instruction streams independently and flexibly controls processing performance in units of instruction streams Expired - Fee Related JP3760035B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23097697A JP3760035B2 (en) 1996-08-27 1997-08-27 Multi-thread processor that processes multiple instruction streams independently and flexibly controls processing performance in units of instruction streams

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP22472096 1996-08-27
JP8-224720 1996-08-27
JP23097697A JP3760035B2 (en) 1996-08-27 1997-08-27 Multi-thread processor that processes multiple instruction streams independently and flexibly controls processing performance in units of instruction streams

Publications (2)

Publication Number Publication Date
JPH10124316A true JPH10124316A (en) 1998-05-15
JP3760035B2 JP3760035B2 (en) 2006-03-29

Family

ID=26526223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23097697A Expired - Fee Related JP3760035B2 (en) 1996-08-27 1997-08-27 Multi-thread processor that processes multiple instruction streams independently and flexibly controls processing performance in units of instruction streams

Country Status (1)

Country Link
JP (1) JP3760035B2 (en)

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284970A (en) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd Program converting device and processor
JP2002540505A (en) * 1999-03-22 2002-11-26 クリアウオーター・ネツトワークス・インコーポレイテツド Interstream control and communication for multi-streaming digital processors
JP2003516570A (en) * 1999-12-09 2003-05-13 インテル・コーポレーション Method and apparatus for entering and exiting multiple threads in a multithreaded processor
JP2005182791A (en) * 2003-12-12 2005-07-07 Sharp Corp General purpose embedded processor
US7020879B1 (en) 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital 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
US7103755B2 (en) 2002-06-27 2006-09-05 Fujitsu Limited Apparatus and method for realizing effective parallel execution of instructions in an information processor
JP2006236245A (en) * 2005-02-28 2006-09-07 Toshiba Corp Arithmetic processing unit
WO2006129767A1 (en) * 2005-06-02 2006-12-07 Keio University Multithread central processing device and simultaneous multithreading control method
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
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
US7360062B2 (en) 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
JP2008513894A (en) * 2004-09-23 2008-05-01 インテル・コーポレーション Thread live block unit
JP2008123045A (en) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd Processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7401208B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
JP2008191856A (en) * 2007-02-02 2008-08-21 Nec Computertechno Ltd Information processing system
US7447887B2 (en) 2005-10-14 2008-11-04 Hitachi, Ltd. Multithread processor
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
JP2010086131A (en) * 2008-09-30 2010-04-15 Nec Electronics Corp Multi-thread processor and its interrupt processing method
US7707391B2 (en) 1998-12-16 2010-04-27 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
WO2010134329A1 (en) 2009-05-18 2010-11-25 パナソニック株式会社 Processor
WO2011155097A1 (en) * 2010-06-11 2011-12-15 パナソニック株式会社 Instruction issue and control device and method
EP2423808A1 (en) 2007-06-20 2012-02-29 Fujitsu Limited Arithmetic device
JP2013191244A (en) * 2004-12-30 2013-09-26 Intel Corp Mechanism for scheduling thread on os isolated sequencer without interposition of operating system
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams
JP2014211743A (en) * 2013-04-18 2014-11-13 株式会社デンソー Multiple core processor
JP2015122063A (en) * 2013-12-20 2015-07-02 三星電子株式会社Samsung Electronics Co.,Ltd. Operational unit for supporting multithreading, processor including the same, and operating method of processor
WO2020121416A1 (en) * 2018-12-11 2020-06-18 サンケン電気株式会社 Processor and pipeline processing method
CN112000019A (en) * 2020-07-24 2020-11-27 青岛海尔空调器有限总公司 Method, device and equipment for sharing equipment instruction control
JP2022188077A (en) * 2019-07-27 2022-12-20 アナログ・ディヴァイシス・インターナショナル・アンリミテッド・カンパニー Autonomous job queuing system for hardware accelerator
CN112000019B (en) * 2020-07-24 2024-04-26 青岛海尔空调器有限总公司 Method, device and equipment for sharing equipment instruction control

Cited By (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US7707391B2 (en) 1998-12-16 2010-04-27 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7900207B2 (en) 1998-12-16 2011-03-01 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7650605B2 (en) 1998-12-16 2010-01-19 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
US7467385B2 (en) 1998-12-16 2008-12-16 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7765546B2 (en) 1998-12-16 2010-07-27 Mips Technologies, Inc. Interstream control and communications for multi-streaming digital processors
US7926062B2 (en) 1998-12-16 2011-04-12 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital 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
US7020879B1 (en) 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
JP2002540505A (en) * 1999-03-22 2002-11-26 クリアウオーター・ネツトワークス・インコーポレイテツド Interstream control and communication for multi-streaming digital processors
JP2000284970A (en) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd Program converting device and processor
JP2003516570A (en) * 1999-12-09 2003-05-13 インテル・コーポレーション Method and apparatus for entering and exiting multiple threads in a multithreaded processor
US7103755B2 (en) 2002-06-27 2006-09-05 Fujitsu Limited Apparatus and method for realizing effective parallel execution of instructions in an information processor
US7401208B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7827388B2 (en) 2003-04-25 2010-11-02 International Business Machines Corporation Apparatus for adjusting instruction thread priority in a multi-thread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US8145885B2 (en) 2003-04-25 2012-03-27 International Business Machines Corporation Apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7360062B2 (en) 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
JP2005182791A (en) * 2003-12-12 2005-07-07 Sharp Corp General purpose embedded processor
JP2008513894A (en) * 2004-09-23 2008-05-01 インテル・コーポレーション Thread live block unit
JP2013191244A (en) * 2004-12-30 2013-09-26 Intel Corp Mechanism for scheduling thread on os isolated sequencer without interposition of operating system
JP2006236245A (en) * 2005-02-28 2006-09-07 Toshiba Corp Arithmetic processing unit
WO2006129767A1 (en) * 2005-06-02 2006-12-07 Keio University Multithread central processing device and simultaneous multithreading control method
JP5145936B2 (en) * 2005-06-02 2013-02-20 学校法人慶應義塾 Multi-thread central processing unit and simultaneous multi-threading control method
US7447887B2 (en) 2005-10-14 2008-11-04 Hitachi, Ltd. Multithread processor
US8141088B2 (en) 2006-11-08 2012-03-20 Panasonic Corporation Multithreaded processor
JP2008123045A (en) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd Processor
JP2008191856A (en) * 2007-02-02 2008-08-21 Nec Computertechno Ltd Information processing system
EP2423808A1 (en) 2007-06-20 2012-02-29 Fujitsu Limited Arithmetic device
US8407714B2 (en) 2007-06-20 2013-03-26 Fujitsu Limited Arithmetic device for processing one or more threads
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams
JP2010086131A (en) * 2008-09-30 2010-04-15 Nec Electronics Corp Multi-thread processor and its interrupt processing method
US10545892B2 (en) 2008-09-30 2020-01-28 Renesas Electronics Corporation Multi-thread processor and its interrupt processing method
US8407387B2 (en) 2008-09-30 2013-03-26 Renesas Electronics Corporation Multi-thread processor and the multi-thread processor's interrupt processing method having interrupt processing that is processed by an associated hardware thread
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
WO2010134329A1 (en) 2009-05-18 2010-11-25 パナソニック株式会社 Processor
JP5330507B2 (en) * 2009-05-18 2013-10-30 パナソニック株式会社 Processor
JP2011258147A (en) * 2010-06-11 2011-12-22 Panasonic Corp Apparatus and method for instruction issue control
US9436464B2 (en) 2010-06-11 2016-09-06 Socionect Inc. Instruction-issuance controlling device and instruction-issuance controlling method
WO2011155097A1 (en) * 2010-06-11 2011-12-15 パナソニック株式会社 Instruction issue and control device and method
JP2014211743A (en) * 2013-04-18 2014-11-13 株式会社デンソー Multiple core processor
US9747132B2 (en) 2013-04-18 2017-08-29 Denso Corporation Multi-core processor using former-stage pipeline portions and latter-stage pipeline portions assigned based on decode results in former-stage pipeline portions
JP2015122063A (en) * 2013-12-20 2015-07-02 三星電子株式会社Samsung Electronics Co.,Ltd. Operational unit for supporting multithreading, processor including the same, and operating method of processor
WO2020121416A1 (en) * 2018-12-11 2020-06-18 サンケン電気株式会社 Processor and pipeline processing method
JPWO2020121416A1 (en) * 2018-12-11 2021-10-28 サンケン電気株式会社 Processor and pipeline processing method
US11586444B2 (en) 2018-12-11 2023-02-21 Sanken Electric Co., Ltd. Processor and pipeline processing method for processing multiple threads including wait instruction processing
JP2022188077A (en) * 2019-07-27 2022-12-20 アナログ・ディヴァイシス・インターナショナル・アンリミテッド・カンパニー Autonomous job queuing system for hardware accelerator
CN112000019A (en) * 2020-07-24 2020-11-27 青岛海尔空调器有限总公司 Method, device and equipment for sharing equipment instruction control
CN112000019B (en) * 2020-07-24 2024-04-26 青岛海尔空调器有限总公司 Method, device and equipment for sharing equipment instruction control

Also Published As

Publication number Publication date
JP3760035B2 (en) 2006-03-29

Similar Documents

Publication Publication Date Title
JP3760035B2 (en) Multi-thread processor that processes multiple instruction streams independently and flexibly controls processing performance in units of instruction streams
EP0827071B1 (en) Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
US7610473B2 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US8195922B2 (en) System for dynamically allocating processing time to multiple threads
EP1869536B1 (en) Multi-threaded processor comprising customisable bifurcated thread scheduler for automatic low power mode invocation
US7613904B2 (en) Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
US6012141A (en) Apparatus for detecting and executing traps in a superscalar processor
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US20060236135A1 (en) Apparatus and method for software specified power management performance using low power virtual threads
JP2000020326A (en) Device for inheriting registered contents is processor
JP2002508568A (en) System for ordering load and store instructions that perform out-of-order multithreaded execution
JP3689369B2 (en) Secondary reorder buffer microprocessor
WO2005022384A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
JPH10301778A (en) Method and device for managing name change of register
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
JPH0553806A (en) Parallel processing controller
US20080010426A1 (en) Processor system and processing method for operating system program in processor system
JP2000020310A (en) Processor
EP2843543B1 (en) Arithmetic processing device and control method of arithmetic processing device
Smith et al. Optimizing Instruction Execution in the PowerPC™ 603e Superscalar Microprocessor
JPH10240702A (en) Parallel processing processor and method therefor
JP2003241977A (en) Central processing unit and information processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090113

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100113

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120113

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130113

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130113

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees