KR20070098688A - Processor apparatus and complex condition processing method - Google Patents
Processor apparatus and complex condition processing method Download PDFInfo
- Publication number
- KR20070098688A KR20070098688A KR1020070031101A KR20070031101A KR20070098688A KR 20070098688 A KR20070098688 A KR 20070098688A KR 1020070031101 A KR1020070031101 A KR 1020070031101A KR 20070031101 A KR20070031101 A KR 20070031101A KR 20070098688 A KR20070098688 A KR 20070098688A
- Authority
- KR
- South Korea
- Prior art keywords
- condition
- instruction
- branch
- register
- comparison
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 17
- 238000000034 method Methods 0.000 claims abstract description 38
- 150000001875 compounds Chemical class 0.000 claims description 132
- 229940126062 Compound A Drugs 0.000 claims 1
- NLDMNSXOCDLTTB-UHFFFAOYSA-N Heterophylliin A Natural products O1C2COC(=O)C3=CC(O)=C(O)C(O)=C3C3=C(O)C(O)=C(O)C=C3C(=O)OC2C(OC(=O)C=2C=C(O)C(O)=C(O)C=2)C(O)C1OC(=O)C1=CC(O)=C(O)C(O)=C1 NLDMNSXOCDLTTB-UHFFFAOYSA-N 0.000 claims 1
- 238000007796 conventional method Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000001343 mnemonic effect Effects 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000536 complexating effect Effects 0.000 description 1
- 238000013329 compounding Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
Abstract
Description
도 1 은 본 발명의 일 실시예의 구성을 나타내는 도면. 1 is a view showing the configuration of an embodiment of the present invention.
도 2 는 본 발명의 일 실시예의 조건 설정 비교부 및 그 관련 부위를 나타내는 도면. 2 is a view showing a condition setting comparison unit and related portions thereof according to an embodiment of the present invention.
도 3 은 본 발명의 일 실시예의 조건 설정 비교부 및 그 관련 부위를 나타내는 도면. 3 is a view showing a condition setting comparison unit and related portions thereof according to an embodiment of the present invention.
도 4 는 본 발명의 일 실시예의 조건 설정 비교부 및 그 관련 부위를 나타내는 도면. 4 is a view showing a condition setting comparison unit and its related portion in one embodiment of the present invention.
도 5 는 본 발명의 일 실시예의 복합 조건 분기 판정부 및 그 관련 부위를 나타내는 도면.Fig. 5 is a diagram showing a compound conditional branch judging section and its related portions in one embodiment of the present invention.
도 6 은 본 발명의 일 실시예에 있어서의 조건 설정 명령 및 복합 조건 분기 명령을 어셈블러 언어로 예시한 도면. 6 is a diagram illustrating a condition setting instruction and a compound condition branch instruction in an assembler language in one embodiment of the present invention.
도 7 은 본 발명의 일 실시예에 있어서의 조건 설정 명령의 동작을 나타내는 타이밍 차트. 7 is a timing chart showing the operation of the condition setting instruction in one embodiment of the present invention;
도 8 은 본 발명의 일 실시예에 있어서의 복합 조건 분기 명령의 동작을 나타내는 타이밍 차트. 8 is a timing chart showing the operation of a compound conditional branch instruction in one embodiment of the present invention;
도 9 (a), 도 9 (b) 는 본 발명의 일 실시예를 설명하기 위한 도면으로서, 복합 조건의 비교 연산 결과와 분기 조건의 비트의 대응을 나타내는 도면.9 (a) and 9 (b) are diagrams for explaining an embodiment of the present invention, and show a correspondence between a comparison operation result of a compound condition and a bit of a branch condition;
도 10 은, 특허 문헌 1 의 복합 조건 처리 방식에 루프 처리를 적용했을 때의 복합 조건 처리 동작을 나타내는 타이밍 차트. 10 is a timing chart showing a compound condition processing operation when loop processing is applied to the compound condition processing method of
부호의 설명Explanation of the sign
1 셀렉터 1 selector
1a 레지스터
1b 셀렉터 1b selector
2, 3, 4 조건 설정 비교부2, 3, 4 condition setting comparison unit
2a, 2b, 3a, 3b, 4a, 4b 디코더2a, 2b, 3a, 3b, 4a, 4b decoder
2c, 2d, 3c, 3d, 4c, 4d 레지스터 (어드레스 레지스터) 2c, 2d, 3c, 3d, 4c, 4d registers (address registers)
2e, 3e, 4e 레지스터 (즉치 레지스터) 2e, 3e, 4e registers (immediate registers)
2f, 3f, 4f 레지스터 (비교기 선택 레지스터) 2f, 3f, 4f registers (comparator select register)
2h, 3h, 4h 비교기 2h, 3h, 4h comparators
5 레지스터5 registers
5a, 5b, 5c 레지스터 5a, 5b, 5c registers
6 연산용 레지스터6 Operation register
7 복합 조건 분기 판정부7 compound condition branch judgment part
7a 레지스터 (분기 조건 값 레지스터) 7a register (branch condition value register)
7b 레지스터 (비교기 선택 레지스터) 7b Register (Comparator Selection Register)
7c 비교기 7c comparator
8 점프처 어드레스 레지스터 8 Jump destination address register
9 셀렉터9 selector
10 프로그램 카운터 10 programmable counters
11 명령 디코더11 command decoder
일본 공개특허공보 평5-274143호Japanese Patent Laid-Open No. 5-274143
본 발명은 명령을 페치, 디코드하여 실행하는 프로세서에 관한 것으로, 특히, 복합 조건 분기 처리의 방법과 장치에 관한 것이다.The present invention relates to a processor for fetching, decoding, and executing instructions, and more particularly, to a method and apparatus for complex conditional branching.
이런 종류의 복합 조건 처리 방식으로서, 예를 들어 특허 문헌 1 에는, 복수의 명령을 병렬 처리하는 구성으로서, 복수의 비교 명령의 실행 결과의 진위값에 따라 독립적으로 또한 병렬로 비트를 세트/리셋트 가능한 플래그 레지스터 수단, 이 플래그 레지스터 수단의 유지 내용과 조건 분기 명령에 의해 지정된 마스크 값의 비트 마다의 논리곱을 취하는 논리곱 수단, 및 논리곱 수단의 출력값이 제로인지 아닌지에 따라 상기 조건 분기 명령이 지정하는 분기처 어드레스 또는 동명령의 다음 명령 어드레스를 다음에 실행해야 할 명령 어드레스로서 선택하는 명령 페치 어드레스 선택 수단을 구비하고, 마스크 값으로 지정된 플래그 레지스터의 각 비트 위치의 비트 상태를 복합 조건으로서 분기를 실행하는지 여부를 결정하는 구성이 개시되어 있다. As this kind of complex condition processing method, for example,
특허 문헌 1 에 기재된 병렬 처리 장치에 있어서는, 비교 명령 디코더를 복수 갖음으로써, 동시에 복수의 비교 명령을 실행하고, 실행 결과를 플래그 레지스터에 저장해 두고, 플래그 레지스터의 상태에 따라 조건 분기한다. In the parallel processing apparatus described in
먼저, 특허 문헌 1 에 기재된 복합 조건 처리 방식에 대해 개략적으로 설명한다. 프로그램으로서, C 언어에 의한 프로그램,First, the composite condition processing method described in
if (X>1 && X<10 && X!=5) if (X > 1 && X <10 && X! = 5)
{복합 조건 성립시의 처리}{Process at the time of establishment of compound condition}
에 대응하는 어셈블러 명령 (컴파일 결과) 을 예로 설명한다. 또한 C 언어의 상기 프로그램은, 3 개의 조건 X>1 과 X<10 과 X!=5 가 모두 성립하고 있는 경우에는 (&& 는 AND 연산을 나타낸다), 다음의 명령, 즉 {복합 조건 성립시의 처리} 가 실행되고, 3 개의 조건 중 1 개라도 불성립할 때에, {복합 조건 성립시의 처리} 를 실행하지 않도록 분기된다. 특허 문헌 1 에 의하면, C 언어의 상기 프로그램의 컴파일 결과는 이하와 같이 된다. The assembler instruction (compile result) corresponding to is described as an example. In addition, in the C language program, if all three conditions X> 1 and X <10 and X! = 5 are satisfied (&& indicates AND operation), the following command, i.e. The processing} is executed, and when any one of the three conditions is not satisfied, the branching is performed so as not to execute the {process at the time of establishing the composite condition}. According to
SLE X, 1, 0 SGE X, 10, 1 SEQ X, 5, 2 SLE X, 1, 0 SGE X, 10, 1 SEQ X, 5, 2
BNZ 7, $1BNZ 7, $ 1
(복합 조건 성립시의 처리) (Process at the time of compound condition establishment)
$1 : (분기처의 처리) 1: (Treatment of branching)
첫번째의 비교 명령 SLE X, 1, 0, …에 있어서, 복합 조건의 비교 연산을 실 시하고 있다. SLE 비교 명령은 “SLE A, B, C”형식으로 되어 A 와 B 를 비교하고, A<=B 일 때에 플래그 레지스터의 비트 C (0 ∼ 3 비트 중 어느 것) 를 “1”로, 그렇지 않은 경우에“0”으로 세트하는 비교 명령이다. SGE 비교 명령은, “SGE A, B, C”형식으로 되어 A 와 B 를 비교하고, A>=B 일 때에 플래그 레지스터의 비트 C (0 ∼ 3 비트 중 어느 것) 를“1”로, 그렇지 않은 경우에 “0”으로 세트하는 비교 명령이다. SEQ 비교 명령은, “SEQ A, B, C”형식으로 되어 A 와 B 를 비교하고, A=B 일 때에 플래그 레지스터의 비트 C (0 ∼ 3 비트 중 어느 것) 를“1”로, 그렇지 않은 경우에“0”으로 세트하는 비교 명령이다. First comparison instruction SLE X, 1, 0,... In this case, the comparison operation of the compound condition is performed. The SLE comparison instruction is in the form of “SLE A, B, C” and compares A and B. When A <= B, bit C (any of 0 to 3 bits) of the flag register is set to “1”, otherwise In this case, a comparison instruction is set to "0". The SGE comparison instruction is in the form of "SGE A, B, C" and compares A and B. When A> = B, bit C (any of 0 to 3 bits) of the flag register is set to "1", otherwise. If not, it is a comparison command to set to “0”. The SEQ comparison instruction is in the form of "SEQ A, B, C" and compares A and B. When A = B, bit C (any of 0 to 3 bits) of the flag register is set to "1", and is not. In this case, a comparison instruction is set to "0".
두번째의 조건 분기 명령 BNZ 7, $1 에서는, 복합 조건의 비교 연산 결과와, 분기 조건 값 (마스크 값) “7”의 비트 연산을 실시하고, 조건이 불성립이면 어드레스 $1 로 점프한다. BNZ 조건 분기 명령은,“BNZ M, L”형식으로 되어 M (4 비트 마스크 값) 과 플래그 레지스터의 대응 비트의 논리곱을 취하고, 제로 판정 회로는, 논리곱 결과가 모두 “0”인지 여부를 판정하여 모두“0”인 경우에 “1”, 그렇지 않으면“0”을 출력하고, 제로 판정 회로의 출력 신호 (제로/비제로 판정 결과) 를 분기 성립/분기 불성립 신호로서 출력하고, 분기 성립시, L 이 지정하는 어드레스로 분기한다. 또한, BNZ 7, $1 에 있어서 마스크 값은 “0111”이며, 플래그 레지스터의 비트 0 ∼ 3 중 비트 0 ∼ 2 의 값에 따른 조건 분기를 실시한다. In the second condition
이와 같이, 비교 명령 SLE X, 1, 0, …과, 조건 분기 명령 BNZ 의 2 개의 명령을 사용하고 있다. Thus, the comparison instruction SLE X, 1, 0,... And two instructions of the conditional branch instruction BNZ.
이 프로그램 예에서는, 값 X (레지스터에 상당) 에 대한 3 개의 비교 조건 (X>1, X<10, X!=5) 중 1 개라도 불성립일 때에, 즉 어셈블러 코드에 의하면 3 개의 비교 조건 (X<=1, X>10, X=5) 중 어느 1 개라도 성립했을 때에,$1 로 점프하는 경우를 나타내고 있는데, 비교 결과의 반전을 실시함으로써 모두 0R 조건으로 할 수도 있다. In this program example, if any one of the three comparison conditions (X> 1, X <10, X! = 5) for the value X (equivalent to the register) is not established, that is, according to the assembler code, three comparison conditions ( When any one of X <= 1, X10, X = 5) is satisfied, the case of jumping to $ 1 is shown. However, by inverting the comparison result, all of them may be set to 0R condition.
특허 문헌 1 에 기재된 복합 조건 처리 방식은, 복합 조건을 1 회만 연산하는 경우에는 특별한 문제는 발생하지 않는다. 그러나, 동일한 조건을 반복 실행하는 루프 처리에 사용하려고 했을 경우에 이하와 같은 문제점을 갖고 있다.In the complex condition processing method described in
제 1 문제점은, 복합 조건의 비교 명령과 조건 분기 명령을 세트로 실행할 필요가 있기 때문에, 매회, 조건 분기 처리에 2 단계분의 실행 사이클이 필요해진다는 것이다. 이 점에 대하여 이하에 설명한다. The first problem is that it is necessary to execute the comparison instruction and the condition branch instruction of the compound condition in a set, so that each time execution condition for the condition branch processing requires two execution cycles. This point will be described below.
특허 문헌 1 에 기재된 복합 조건 처리 방식에서는, 도 10 (a) 에 나타내는 바와 같이 2 명령분의 사이클 수가 필요하다. 도 10 (a) 의 예에서는, 1 회당, 비교 명령 (SLE X, 1, 0, …) 과 조건 분기 명령 (BNZ) 의 2 명령분의 6 사이클 (F (명령 페치), D (디코드), EX (실행), F, D, EX) 을 필요로 한다 (도 10 의 10-1, 및 10-2 참조). 복합 조건의 비교 명령 (SLE X, 1, 0, …) 에서는, 복합 조건의 각 조건에 대응하는 비교 연산을 병렬 실행하고, 비교 연산 결과를 플래그 레지스터의 지정 비트에 설정하고, 조건 분기 명령 (BNZ) 에서는 플래그 레지스터의 값과 마스크 값의 논리 연산 결과에 기초하여 분기 판정을 한다. 이와 같이, 특 허 문헌 1 에 기재된 복합 조건 처리 방식에 있어서는, 명령이 비교 명령과 조건 분기 명령의 2 개로 나누어져 있기 때문에, 명령 페치와 명령 디코드의 사이클이 적어도 2 회 필요해지고, 사이클 수가 증가하고, 루프 처리에서의 사이클 수의 증대가 현저하게 되어 율속 (律速) 요인이 된다. In the complex condition processing method described in
제 2 문제점은, 특허 문헌 1 에 기재된 복합 조건 처리 방식에 있어서는, 비교 명령은 복합 조건을 모두 1 명령으로 병렬 실행하는 구성으로 되어 있고, 복수의 조건을 나타내기 위하여 명령 길이가 길어진다는 것이다. The second problem is that in the compound condition processing method described in
예를 들어, 비교 명령For example, compare command
SLE X, 1, 0 SGE X, 10, 1 SEQ X, 5, 2 SLE X, 1, 0 SGE X, 10, 1 SEQ X, 5, 2
에 있어서,To
·명령 코드를 8 비트 (256 종류까지의 명령을 갖는 프로세서로 가정), 8-bit instruction code (assuming a processor with up to 256 instructions),
·비교기의 종류는 6 종류이기 때문에, 비교기의 종류의 선택에 3 비트,Because there are six types of comparators, 3 bits for the selection of the types of comparators,
·오퍼랜드 X 는, 16 개의 레지스터로부터 1 개를 선택하는 것으로 하면, 레지스터 선택용으로 4 비트,If the operand 것으로 selects one from 16 registers, 4 bits,
·오퍼랜드의 조건 값 (예를 들어“SLE X, 1, 0”의 1 은, 비교 조건 X<=1 에 있어서의 우변의 1 에 대응한다) 을 0 ∼ 15 까지 지정할 수 있는 것으로서 4 비트,The operand value (for example, 1 in “SLE X, 1, 0” corresponds to 1 on the right side in the comparison condition X <= 1)) can be specified from 0 to 15, 4 bits,
·오퍼랜드의 플래그 레지스터 내의 비트 위치 지정 (비트 0 ∼ 3 중 어느 것) 을 2 비트로 하면, 합계로, If the bit position designation (any of
8+4+(3+4+2)×3=39 비트 필요해진다 (표 1 참조).8 + 4 + (3 + 4 + 2) × 3 = 39 bits are required (see Table 1).
이와 같이 명령 길이가 길어지는 것은, 특허 문헌 1 의 병렬 처리 장치에서는 복합 조건을 모두 1 명령으로 지정하고 있기 때문이다. The instruction length is thus long because the parallel processing apparatus of
과제를 해결하기 위한 수단Means to solve the problem
본원에서 개시되는 발명은, 상기 과제를 해결하기 위하여 개략 이하의 구성으로 된다. The invention disclosed in the present application has a schematic structure as follows in order to solve the above problems.
본 발명의 1 개의 애스펙트 (측면) 에 관련되는 장치는, 명령 세트에, 조건 성립의 유무에 따라 분기처로 분기/비분기하는 조건 분기 명령과, 상기 조건을 설정하는 조건 설정 명령을 포함하고, 상기 조건 설정 명령의 실행시에, 상기 조건 설정 명령으로 지정된 조건을 설정하는 회로를 구비하고, 상기 회로에서는 상기 조건에 대응하는 비교 연산은 실시하지 않고, 상기 조건 분기 명령의 실행시, 상기 조건 설정 명령에 의해 미리 설정된 상기 조건에 대응하는 비교 연산을 실시하고, 상기 비교 연산 결과에 기초하여 분기처로 분기하는지 여부를 판정하는 회로를 구비하고 있다. 본 발명에 있어서, 상기 조건 분기 명령이, 분기 판정용으로, 복수의 조건으로 이루어지는 복합 조건을 포함하는 복합 분기 조건 명령으로 이루어지고, 복수의 상기 조건 설정 명령을 실행함으로써 상기 복합 조건의 각 조건이 설정되고, 상기 복합 조건 분기 명령의 실행시, 상기 조건 분기 명령에 의해 미리 설 정된 복수의 조건의 각각에 대응하는 비교 연산이 병렬 실행되고, 비교 연산 결과에 기초하여 분기 판정을 실시하고, 상기 복합 조건에 의한 조건 분기 처리를 1 개의 복합 조건 분기 명령으로 실행할 수 있도록 하고 있다. An apparatus according to one aspect (side) of the present invention includes a condition branch instruction for branching / non-branching to a branch destination in accordance with the presence or absence of a condition, and a condition setting instruction for setting the condition in the instruction set. A circuit for setting a condition specified by the condition setting command when the condition setting command is executed, wherein the circuit does not perform a comparison operation corresponding to the condition; and when the condition branch instruction is executed, the condition setting command And a circuit for performing a comparison operation corresponding to the above condition set in advance and for branching to a branch destination based on the result of the comparison operation. In the present invention, the conditional branch instruction is a compound branching condition instruction including a compound condition consisting of a plurality of conditions for branch determination, and each condition of the compound condition is executed by executing the plurality of condition setting instructions. When the compound condition branch instruction is set, a comparison operation corresponding to each of a plurality of conditions preset by the condition branch instruction is executed in parallel, and branching is performed based on the result of the comparison operation. Conditional branching by condition can be executed in one compound conditional branch instruction.
본 발명의 다른 애스펙트 (측면) 에 관련되는 장치는, 명령 세트로서, 1 개 또는 복수의 조건의 각각에 대응하는 비교 연산을 실시하고, 상기 비교 연산의 결과와, 지정한 분기 조건 값 사이에서의 비교 연산에 기초하여 지정한 분기처로 분기하는 복합 조건 분기 명령과, 1 개의 상기 조건을 설정하는 조건 설정 명령을 포함하고, 상기 조건 설정 명령의 실행에 의해 선택되어 상기 조건 설정 명령으로 지정된 조건이 설정되고, 상기 복합 조건 분기 명령의 실행시에 상기 조건 설정 명령으로 설정된 조건에 대응하는 비교 연산을 각각 실행하는 복수의 조건 설정 비교부와, An apparatus according to another aspect (side) of the present invention, as an instruction set, performs a comparison operation corresponding to each of one or a plurality of conditions, and compares the result of the comparison operation with a specified branch condition value. A compound condition branch instruction for branching to a specified branch destination based on the operation, and a condition setting instruction for setting one of the above conditions, wherein a condition selected by execution of the condition setting instruction and designated by the condition setting instruction is set, A plurality of condition setting comparison sections each executing a comparison operation corresponding to a condition set by the condition setting command when the compound condition branch instruction is executed;
상기 복합 조건 분기 명령의 실행시에, 복수의 상기 조건 설정 비교부에서 각각 실시되는 비교 연산의 결과와, 상기 복합 조건 분기 명령으로 지정된 상기 분기 조건 값을 비교한 결과를 사용하여, 상기 분기처로 분기하는지 여부를 판정하는 복합 조건 분기 판정부를 구비하고 있다. At the time of execution of the compound condition branch instruction, branching to the branch destination is performed using a result of comparison operation performed in each of the plurality of condition setting comparison sections with the result of comparing the branch condition value specified by the compound condition branch instruction. It is provided with the compound condition branch determination part which determines whether or not.
본 발명에 있어서, 상기 조건 설정 명령은, 오퍼랜드에 상기 조건 설정 비교부의 지정과, 비교 연산의 종별과, 비교 대상의 연산용 레지스터의 2 개의 레지스터, 또는 상기 연산용 레지스터의 1 개의 레지스터와 즉치 데이터를 포함한다.In the present invention, the condition setting instruction includes an operand designation of the condition setting comparison section, a type of comparison operation, two registers of the calculation register to be compared, or one register and immediate data of the calculation register to be compared. It includes.
본 발명에 있어서, 상기 복합 조건 분기 명령은, 오퍼레이션 코드에 비교 연산의 종별을 포함하고, 오퍼랜드에 상기 분기 조건 값과, 상기 분기처를 포함한다.In the present invention, the compound condition branch instruction includes a type of comparison operation in an operation code, and includes the branch condition value and the branch destination in an operand.
본 발명에 있어서, 상기 조건 설정 비교부는, 비교 대상인 2 개의 연산용 레지스터의 어드레스 정보를 저장하는 제 1 및 제 2 어드레스 레지스터, 즉치 데이터를 저장하는 즉치 레지스터, 비교 연산의 종별을 저장하는 비교기 선택 레지스터, 및 비교기를 구비하고, 상기 조건 설정 명령의 실행에 의해, 상기 제 1 및 제 2 어드레스 레지스터, 또는 상기 제 1 어드레스 레지스터 및 상기 즉치 레지스터와, 상기 비교기 선택 레지스터의 각 레지스터의 값이 설정되고, 상기 복합 조건 분기 명령의 실행에 의해, 상기 제 1 및 제 2 어드레스 레지스터, 또는 상기 제 1 어드레스 레지스터의 지정으로 지정된 상기 연산용 레지스터가 판독되고, 상기 제 1 및 제 2 어드레스 레지스터에서 판독된 2 개의 상기 연산용 레지스터의 값, 또는 상기 제 1 어드레스 레지스터의 지정으로 판독된 상기 연산용 레지스터의 값 및 상기 즉치 데이터가, 상기 비교기에서 비교된다. In the present invention, the condition setting comparison section includes: first and second address registers for storing address information of two operation registers to be compared, an immediate register for storing immediate data, and a comparator selection register for storing types of comparison operations. And a comparator, and by executing the condition setting instruction, values of the first and second address registers, or the first address register and the immediate register, and each register of the comparator selection register are set; By the execution of the compound condition branch instruction, the arithmetic register designated by the designation of the first and second address registers or the first address register is read, and the two read registers are read from the first and second address registers. A value of the operation register or designation of the first address register The value of the operation register and the immediate data read as are compared in the comparator.
본 발명에 있어서, 상기 복수의 조건 설정 비교부의 비교 연산 결과를 각각 보존하는 복수의 레지스터를 구비하고 있다. In the present invention, a plurality of registers for storing the results of comparison operations of the plurality of condition setting comparison units are provided.
본 발명에 있어서, 상기 복합 조건 분기 판정부는, 상기 복합 조건 분기 명령을 디코드하는 명령 디코더로부터의 출력을 받아, 상기 복합 조건 분기 명령으로 지정된 상기 분기 조건 값을 기억하는 제 1 레지스터와, 비교 연산의 종류를 기억하는 제 2 레지스터와, 상기 복수의 조건 설정 비교부의 비교 연산 결과를 각각 보존하는 상기 복수의 레지스터의 출력과, 상기 제 1 레지스터에서 지정된 분기 조건 값에 관하여, 상기 제 2 레지스터에서 지정된 비교 연산을 실시하여 비교 결과를 출력하는 비교기를 구비하고 있다. In the present invention, the compound condition branch determination unit receives an output from an instruction decoder that decodes the compound condition branch instruction, and stores a first register configured to store the branch condition value designated by the compound condition branch instruction, and a comparison operation. A second register that stores a type, an output of the plurality of registers each storing a result of comparison operation of the plurality of condition setting comparison units, and a comparison specified in the second register with respect to branch condition values specified in the first register; A comparator for performing a calculation and outputting a comparison result is provided.
본 발명에 있어서, 명령 디코더에 의한 상기 조건 설정 명령의 디코드 결과에 기초하여, 상기 조건 설정 명령으로 지정된 상기 조건 설정 비교부를 선택하는 셀렉터를 구비하고 있다. In the present invention, a selector for selecting the condition setting comparison unit designated by the condition setting command is provided on the basis of the decoding result of the condition setting command by the command decoder.
상기 명령 디코더에서 디코드된 복합 조건 분기 명령으로 지정된 점프처 어드레스를 저장하는 점프처 어드레스 레지스터와, 상기 복합 조건 분기 판정부로부터 출력된 결과의 진위값을 받아, 진(眞)인 경우에는 점프처 어드레스를 선택하고, 위(僞)인 경우에는 프로그램 카운터의 값 + 1 의 어드레스를 선택하여 프로그램 카운터에 설정하는 셀렉터를 추가로 구비하고 있다. A jump destination address register for storing a jump destination address designated by a compound condition branch instruction decoded by the instruction decoder, and an authenticity value of the result output from the compound condition branch determination unit, and a jump destination address if the result is true; Is selected, and in the above case, a selector for selecting the address of the program counter value + 1 and setting the program counter is set.
본 발명의 다른 애스펙트에 관련되는 방법은, 프로세서에 있어서의 조건 분기의 처리 방법으로서, 명령 세트에 조건 성립의 유무에 따라 분기처로 분기/비분기하는 조건 분기 명령과, 상기 조건을 설정하는 조건 설정 명령을 포함하고,A method related to another aspect of the present invention is a method of processing a conditional branch in a processor, comprising: a conditional branching instruction branching / non-branching to a branching destination according to whether or not a condition is established in an instruction set, and a condition setting for setting the condition Contains instructions,
(a) 상기 조건 설정 명령의 실행시에, 상기 조건 설정 명령으로 지정된 조건을 설정하고, 상기 조건에 대응하는 비교 연산은 실시하지 않고,(a) At the time of execution of the condition setting command, sets a condition specified by the condition setting command and does not perform a comparison operation corresponding to the condition;
(b) 상기 조건 분기 명령의 실행시, 상기 조건 설정 명령에 의해 미리 설정된 상기 조건에 대응하는 비교 연산을 실시하고, 상기 비교 연산 결과에 기초하여 분기처로 분기하는지 여부를 판정하는 상기 각 단계를 갖는다. (b) each step of executing a comparison operation corresponding to the condition preset by the condition setting instruction when executing the conditional branch instruction, and determining whether to branch to a branch destination based on the result of the comparison operation. .
본 발명에 관련된 방법에 있어서, 상기 조건 분기 명령은 분기 판정용으로, 복수의 조건으로 이루어지는 복합 조건을 포함하는 복합 분기 조건 명령으로 이루어지고, 복수의 상기 조건 설정 명령을 실행함으로써 상기 복합 조건의 각 조건이 설정되고, 상기 복합 조건 분기 명령의 실행시, 상기 조건 분기 명령에 의해 미리 설정된 복수의 조건의 각각에 대응하는 비교 연산이 병렬로 실행되고, 비교 연산 결과에 기초하여 분기 판정을 실시하고, 상기 복합 조건에 의한 조건 분기 처리를 1 개의 복합 조건 분기 명령으로 실행할 수 있도록 하고 있다. In the method according to the present invention, the conditional branching instruction is made up of a compound branching conditional instruction including a compounding condition consisting of a plurality of conditions for branch determination, and executing each of the plurality of conditional setting instructions to execute each of the complexing conditionalities. When a condition is set and the compound condition branch instruction is executed, a comparison operation corresponding to each of a plurality of conditions preset by the condition branch instruction is executed in parallel, and branching is performed based on the result of the comparison operation, Conditional branching based on the compound condition can be executed by one compound conditional branch instruction.
발명을 실시하기To practice the invention 위한 최선의 형태 Best form for
상기한 본 발명에 대하여 더욱 상세하게 설명하기 위하여 첨부 도면을 참조하여 이하에 설명한다. The present invention described above will be described below with reference to the accompanying drawings in order to explain in more detail.
본 발명은 축차 실행형 컴퓨터에 적용되고, 분기 판정에서 사용되는 비교 조건을 설정하는 조건 설정 명령을 형성하고, 이 조건 설정 명령을 복합 조건 분기 명령에 앞서 실행함으로써 복합 조건을 구성하는 복수의 비교 조건을 사전에 설정한다. 복합 조건 분기 명령의 실행시, 이 설정된 복합 조건의 각 조건에 대응하는 비교 연산을 실시하고, 비교 연산한 결과와, 명령 코드로 지정한 분기 조건 값을 비교한 결과를 사용하여, 분기하는지 여부를 판정하는 수단을 구비하고 있다.The present invention is applied to a sequential execution type computer, forms a condition setting instruction for setting a comparison condition used in branch determination, and executes this condition setting instruction in advance of the compound condition branch instruction to form a plurality of comparison conditions. Set in advance. When executing the compound condition branch instruction, a comparison operation corresponding to each condition of the set compound condition is performed, and it is determined whether to branch using the result of the comparison operation and the result of comparing the branch condition value specified by the instruction code. It is provided with a means.
보다 상세하게는, 본 발명의 바람직한 형태의 처리 장치는, 명령 세트로서 분기 판정에 사용되는 비교 조건을 설정하는 조건 설정 명령 (오퍼레이션 코드 : SETCMP) 과, 상기 조건 설정 명령으로 설정된 비교 조건에 대응하는 비교 연산을 실행하고, 상기 비교 연산의 결과와, 지정한 분기 조건 값 사이에서의 비교 연산에 기초하여, 지정한 분기처로 분기하는지 여부를 판정하는 복합 조건 분기 명령 (오퍼레이션 코드 : XBEQ, XBNE, XBL, XBLE, XBG, XBGE) 을 포함한다. 본 발명은 조건 설정 명령의 실행에 의해 선택되고, 상기 조건 설정 명령으로 지정된 비교 조건 (비교 연산의 종별, 비교 대상의 레지스터, 혹은 레지스터와 즉치 데이터) 이 설정되고, 상기 복합 조건 분기 명령의 실행시에, 상기 조건 설정 명령으로 설정된 비교 조건에 대응하는 비교 연산을 각각 실행하는 복수의 조건 설정 비교부 (도 1 의 2, 3, 4 참조) 와, 상기 복합 조건 분기 명령의 실행시, 복수의 상기 조건 설정 비교부에서의 비교 연산 결과와, 상기 복합 조건 분기 명령으로 지정된 상기 분기 조건 값을 비교한 결과를 사용하여, 상기 분기처로 분기하는지 여부를 판정하는 복합 조건 분기 판정부 (도 1 의 7) 를 구비하고 있다. More specifically, the processing apparatus of a preferred embodiment of the present invention corresponds to a condition setting instruction (operation code: SETCMP) for setting a comparison condition used for branch determination as an instruction set, and a comparison condition set in the condition setting instruction. A compound condition branch instruction (operation code: XBEQ, XBNE, XBL, XBLE) that executes a comparison operation and determines whether to branch to a specified branch destination based on a comparison operation between the result of the comparison operation and the specified branch condition value. , XBG, XBGE). The present invention is selected by execution of a condition setting instruction, and a comparison condition (the type of comparison operation, a register to be compared, or a register and immediate data) designated by the condition setting instruction is set, and at the time of executing the compound condition branch instruction. And a plurality of condition setting comparison units (see 2, 3, and 4 of FIG. 1) each executing a comparison operation corresponding to the comparison condition set by the condition setting command, and a plurality of the above when executing the complex condition branch instruction. A compound condition branch determination unit (7 of FIG. 1) that determines whether to branch to the branch destination using the result of the comparison operation in the condition setting comparison unit and the result of comparing the branch condition value specified by the compound condition branch instruction. Equipped with.
본 발명에 있어서, 조건 설정 명령 (SETCMP) 은 오퍼랜드에, 상기 조건 설정 비교부의 지정과, 비교 연산의 종별과, 비교 대상의 연산용 레지스터의 2 개의 레지스터, 또는 상기 연산용 레지스터의 1 개의 레지스터와 즉치 데이터를 포함한다.In the present invention, the condition setting instruction (SETCMP) is operable to specify the condition setting comparison section, the type of the comparison operation, two registers of the calculation registers to be compared, or one register of the calculation registers; Contains immediate data.
본 발명에 있어서, 상기 복합 조건 분기 명령은, 오퍼레이션 코드에 비교 연산의 종별을 포함하고, 오퍼랜드에 상기 분기 조건 값과 상기 분기처를 포함한다. In the present invention, the compound condition branch instruction includes a type of comparison operation in an operation code, and includes the branch condition value and the branch destination in an operand.
본 발명에 있어서 각 조건 설정 비교부는, 도 2 를 참조하면, 연산용 레지스터 (6) 의 2 개의 레지스터의 어드레스 정보를 각각 저장하는 제 1 및 제 2 어드레스 레지스터 (2c, 2d), 제 1 및 제 2 어드레스 레지스터 (2c, 2d) 의 어드레스를 각각 디코드하는 제 1 및 제 2 디코더 (2a, 2b), 즉치 데이터를 저장하는 즉치 레지스터 (2e), 비교 연산의 종별을 저장하는 비교기 선택 레지스터 (2f), 및 비교기 (2h) 를 구비하고, 조건 설정 명령 (SETCMP) 의 실행에 의해, 제 1 및 제 2 어드레스 레지스터 (2c, 2d) 와, 즉치 레지스터 (2e) 와, 비교기 선택 레지스터 (2f) 의 각 레지스터의 값이 설정되고, 복합 조건 분기 명령의 실행에 의해, 제 1 및 제 2 어드레스 레지스터 (2c, 2d) 의 어드레스를 각각 디코드하는 제 1 및 제 2 디코더 (2a, 2b) 에 의해 선택된 연산용 레지스터 (6) 의 2 개의 레지스터가 판독되고, 판독된 이 2 개의 레지스터의 값이 비교기 (2h) 에서 비교되거나, 혹은 예를 들어 제 1 어드레스 레지스터 (2c) 의 어드레스를 디코드하는 제 1 디코더 (2a) 에 의해 선택된 연산용 레지스터 (6) 의 1 개의 레지스터가 판독되고, 판독된 이 1 개 레지스터의 값과, 즉치 데이터가 비교기 (2h) 에서 비교된다. In the present invention, each condition setting comparison section, referring to Fig. 2, includes first and second address registers 2c and 2d, first and second for storing address information of two registers of the
본 발명에 있어서, 복수의 조건 설정 비교부 (도 1 의 2, 3, 4) 의 비교 연산 결과를 각각 보존하는 복수의 레지스터 (도 1 의 5a, 5b, 5c) 를 구비하고 있다. In the present invention, a plurality of registers (5a, 5b, and 5c in Fig. 1) are provided to respectively store the results of comparison operations of the plurality of condition setting comparison units (2, 3, and 4 in Fig. 1).
본 발명에 있어서 복합 조건 분기 판정부 (도 1 의 7) 는, 도 5 를 참조하면, 복합 조건 분기 명령을 디코드하는 명령 디코더 (11) 로부터의 출력을 받고, 상기 복합 조건 분기 명령으로 지정된 상기 분기 조건 값을 기억하는 제 1 레지스터 (7a) 와, 비교 연산의 종류를 기억하는 제 2 레지스터 (7b) 와, 복수의 조건 설정 비교부 (2, 3, 4) 의 비교 연산 결과를 각각 기억하는 복수의 레지스터 (5a, 5b, 5c) 의 출력과, 제 1 레지스터 (7a) 에서 지정된 분기 조건 값에 관하여, 제 2 레지스터 (7b) 에서 지정된 비교 연산을 실시하여 비교 결과를 출력하는 비교기 (7c) 를 구비하고 있다. In the present invention, referring to FIG. 5, the compound condition branch determination unit (7 in FIG. 1) receives the output from the
본 발명에 있어서, 명령 디코더 (도 1 의 11) 에 의한 상기 조건 설정 명령의 디코드 결과에 기초하여, 상기 조건 설정 명령으로 지정된 조건 설정 비교부를 선택하는 셀렉터 (도 1 의 1) 를 구비하고 있다. 본 발명에 있어서는, 상기 명령 디코더에서 디코드된 복합 조건 분기 명령으로 지정된 점프처 어드레스를 저장 하는 점프처 어드레스 레지스터 (도 1 의 8) 와, 상기 복합 조건 분기 판정부 (도 1 의 7) 로부터 출력된 비교 결과를 받아, 비교 결과가 진인 경우에는 점프처 어드레스를 선택하고, 위인 경우에는 복합 조건 분기 명령의 다음 명령의 어드레스, 즉 현재의 프로그램 카운터의 값 + 1 의 어드레스를 선택하여, 프로그램 카운터 (도 1 의 10) 에 설정하는 셀렉터 (도 1 의 9) 를 구비하고 있다. In the present invention, a selector (1 in Fig. 1) is provided for selecting a condition setting comparison unit designated by the condition setting command based on the decoding result of the condition setting command by the command decoder (11 in Fig. 1). In the present invention, a jump destination address register (8 in FIG. 1) for storing a jump destination address designated by a compound condition branch instruction decoded by the instruction decoder and output from the compound condition branch determination unit (7 in FIG. 1). When the comparison result is received, if the comparison result is true, the jump destination address is selected. In the above case, the address of the next instruction of the compound condition branch instruction, that is, the address of the value + 1 of the current program counter, is selected. The selector (9 of FIG. 1) set to 10 of 1 is provided.
상기 특허 문헌 1 에 기재된 종래의 복합 조건 처리 방식에 있어서는, 비교 명령과, 조건 분기 명령의 2 개의 명령의 조합으로 실행하고 있던 조건 분기 처리를, 본 발명은 1 개의 복합 조건 분기 명령으로 실행할 수 있도록 하고 있다. 이 때문에, 동일 조건의 처리를 반복 실행하는 처리에 적용하는 경우에, 루프 처리의 직전에 복합 조건을 설정해 두고, 루프 처리 내에서는 복합 조건 분기 명령 1 개로 조건 분기할 수 있다. 즉, 본 발명에 의하면, 종래의 복합 조건 처리 방식과 같이 2 개의 명령으로 조건 분기하는 경우보다, 고속 처리를 실현할 수 있다.In the conventional compound condition processing method described in the
본 발명에 의하면, 동일 조건의 처리를 반복 실행하는 횟수가 많을수록 처리 성능의 향상 효과가 커진다. According to the present invention, the greater the number of times of repeating the processing under the same conditions, the greater the effect of improving the processing performance.
또 본 발명에 의하면, 조건 설정 명령은, 1 개의 명령에 대하여 1 개의 조건을 설정할 뿐이기 때문에, 종래의 복합 조건 처리 방식과 같이, 동시에 복수의 조건을 설정하는 경우와 비교하여 명령 길이를 줄일 수 있다. 이 때문에, 명령 메모리의 버스 폭이 비교적 좁은 시스템에 있어서도 적용이 용이한 것을 특징으로 한다. According to the present invention, since the condition setting command only sets one condition for one command, the instruction length can be shortened as compared with the case of setting a plurality of conditions at the same time as in the conventional compound condition processing method. have. Therefore, the present invention is characterized in that it is easy to apply even in a system with a relatively narrow bus width of the instruction memory.
이하, 본 발명과 특허 문헌 1 등의 종래의 복합 조건 처리 방식을 비교하여 설명한다. 종래 방식에서는, 1 회당 6 사이클 걸리는데 반해, 본 발명에 의하면, 1 명령으로 조건 분기할 수 있기 때문에 4 사이클로 된다. 반복 횟수가 2 ∼ 3 회인 경우, 본 발명에서는, 미리 조건 설정 명령의 실행 단계가 있는 만큼 실행 사이클 수는 많아지지만, 종래의 복합 조건 처리 방식과 같이, 동시에 복수의 조건 설정을 1 개의 명령으로 실행할 수 있는 병렬 시스템이면 1 명령으로 실현할 수도 있고, 이 경우에는 반복 실행이 없어도 종래의 복합 조건 처리 방식과 동일한 단계 수로 할 수 있게 된다.Hereinafter, it compares and demonstrates conventional complex condition processing methods, such as this invention and
또, 본 발명에 있어서는, 하나 하나의 조건마다에, 각각 특정한 레지스터나 즉치 데이터를 지정할 수 있다. 이 기능을 종래의 복합 조건 처리 방식에 적용하면, 레지스터를 지정하는 비트 수가 2 개분 증가하고, 레지스터의 지정을 4 비트로 하면 합계로 39+4×2=47 비트가 된다 (표 2 참조). In the present invention, specific registers and immediate data can be designated for each one condition. When this function is applied to the conventional compound condition processing method, the number of bits for designating a register is increased by two, and if the designation of registers is 4 bits, the total becomes 39 + 4 x 2 = 47 bits (see Table 2).
명령 메모리의 버스 폭이 예를 들어 32 비트인 경우, 표 3 과 같이 1 명령이, 명령 메모리의 어드레스가 2 개분에 걸쳐지기 때문에, 도 10 (b) 의 10b -1 에 나타낸 바와 같이, 2 회의 명령 페치가 필요해지고, 명령 페치 사이클이 증가하여, 복합 조건 비교 명령의 실행 속도가 그 만큼 저하된다. When the bus width of the instruction memory is 32 bits, for example, as shown in Table 3, since one instruction has two addresses in the instruction memory, as shown in 10b-1 of FIG. Instruction fetch is required, the instruction fetch cycle is increased, and the execution speed of the compound condition comparison instruction is reduced by that much.
이에 대하여, 본 발명에 의하면, 조건 설정 명령 및 복합 조건 분기 명령은 양쪽 모두, 종래 방식에 비하여 짧은 명령 길이로 실현할 수 있다. 구체적으로는, 이하와 같이 된다. In contrast, according to the present invention, both the condition setting instruction and the compound condition branch instruction can be realized with a shorter instruction length than the conventional method. Specifically, it becomes as follows.
본 발명에 있어서 명령 세트에 새로 도입된 조건 설정 명령 Condition setting instruction newly introduced in the instruction set in the present invention
SETCMP c0, r1, L, r11SETCMP c0, r1, L, r11
에서는, 조건 설정 비교부의 선택으로 2 비트, 2 개의 레지스터로 8 비트, 비교기의 종류로 3 비트가 되고, 합계로 8+2+4+4+3=21 비트가 된다 (표 4 참조).In the conditional setting comparison section, two bits, two registers, eight bits, three types of comparators, and a total of 8 + 2 + 4 + 4 + 3 = 21 bits (see Table 4).
또한, SETCMP c1, r2, GE, 10 도 즉치를 4 비트로 하면, 21 비트가 된다 (표 5 참조).In addition, if SETCMP c1, r2, GE, 10 degrees is made into 4 bits immediately, it becomes 21 bits (refer Table 5).
또, 본 발명에 있어서 명령 세트에 새로 도입된 복합 조건 분기 명령In addition, the compound condition branch instruction newly introduced in the instruction set in the present invention.
XBNE 0111b, L1
에서는, 명령 코드를 8 비트, 비교기의 종류는 3 비트, 분기 조건 값은 0 ∼ 7 까지 선택 가능하게 하면 3 비트, 점프처 어드레스 (L1) 는 명령 메모리의 어드레스 값으로 64K 워드 어드레스 공간이라고 하면 16 비트, 합계로 8+3+3+16=30비트가 되고, 명령 메모리의 버스 폭이 32 비트 이하이어도 되고, 명령 페치 사이클은 증가하지 않는다 (표 6 참조).In this case, if the instruction code is 8 bits, the type of comparator is 3 bits, and the branch condition value is selectable from 0 to 7, 3 bits and the jump destination address L1 is the address value of the instruction memory. The total number of bits is 8 + 3 + 3 + 16 = 30 bits, the bus width of the instruction memory may be 32 bits or less, and the instruction fetch cycle does not increase (see Table 6).
또한, 점프처 어드레스를 12 비트의 상대 어드레스로 했을 경우, 32-8-3-12=9 비트 만큼의 여유가 있다. 이하의 실시예에서는, 분기 조건 값을 3 비트로 나타내고 있는데, 보다 비트 수를 많이 하고, 보다 많은 복합 조건을 지정할 수도 있다. 이 경우, 조건 설정 비교부도 그 비트 수만큼의 개수가 필요해진다. 이하 구체적인 실시예에 입각하여 설명한다. When the jump destination address is a 12-bit relative address, there is a margin of 32-8-3-12 = 9 bits. In the following embodiments, the branch condition value is represented by 3 bits, but the number of bits can be increased and more complex conditions can be specified. In this case, the condition setting comparison section also needs the number of bits. It demonstrates based on a specific Example below.
실시예Example
도 1 은, 본 발명의 일 실시예의 프로세서의 주요부 구성을 나타내는 도면이다. 도 1 을 참조하면 본 실시예의 프로세서는, 셀렉터 (1), 복수의 조건 설정 비교부 (2, 3, 4), 레지스터 (5), 연산용 레지스터 (6), 복합 조건 분기 판정부 (7), 점프처 어드레스 레지스터 (8), 셀렉터 (9), 프로그램 카운터 (10), 및 명령 디코더 (11) 를 구비하고 있다. 복수의 조건 설정 비교부로서 3 개의 구성이 나타나 있는데, 본 발명에 있어서 조건 설정 비교부는 3 개로 제한되는 것이 아님은 물론이다. 1 is a diagram showing the configuration of main parts of a processor of an embodiment of the present invention. Referring to Fig. 1, the processor of the present embodiment includes a
셀렉터 (1) 는, 명령 디코더 (11) 에 있어서의 조건 설정 명령 (SETCMP) 의 디코드 결과를 받는 레지스터 (1a) (조건 설정 명령 (SETCMP) 에서의 조건 설정 비교부의 지정 정보에 대응하는 2 비트를 저장) 와, 레지스터 (1a) 의 값에 기초하여 조건 설정 비교부 (2, 3, 4) 를 선택하는 셀렉터 (1b) 를 구비하고 있다. The
조건 설정 비교부 (2, 3, 4) 는 셀렉터 (1) 에 의해 선택되고 (활성화되고), 각각 조건 설정 명령 (SETCMP) 으로 지정된 1 개의 조건을 설정하고, 이 조건에 대응하는 비교 연산을 실시한다. 또한 조건 설정 비교부 (2, 3, 4) 에서는, 조건 설정 명령 (SETCMP) 의 실행시에는 조건의 설정 (비교기의 종별, 비교 대상의 레지스터의 지정 등) 을 실시할 뿐이고, 조건 설정 비교부 (2, 3, 4) 에 있어서의 비교 연산의 실행은 복합 조건 분기 명령의 실행시에 이루어진다. 이러한 구성은, 본 발명의 주된 특징 중 하나를 이루고 있다. The condition setting
레지스터 (5) 는, 조건 설정 비교부 (2, 3, 4) 의 비교 연산 결과를 각각 보존하는 레지스터 (5a, 5b, 5c) 를 구비하고 있다. The
연산용 레지스터 (6) 는, 프로세서가 연산을 위해 사용하는 N 개의 레지스터 (레지스터 파일) (r1 ∼ rN) 이다. The
복합 조건 분기 판정부 (7) 는, 복합 조건 분기 명령을 디코드하는 명령 디코더 (11) 로부터의 출력을 받고, 이 복합 조건 분기 명령으로 지정된 비교용의 분기 조건 값을 기억하는 레지스터 (7a) (도 5 참조), 비교기의 종류를 기억하는 레지스터 (7b) (도 5 참조), 및 비교 연산을 실시하는 비교기 (7c) (도 5 참조) 를 구비하고 있다.The compound condition
점프처 어드레스 레지스터 (8) 는, 명령 디코더 (11) 에서 디코드된 복합 조건 분기 명령으로 지정된 점프처 어드레스를 저장한다. The jump destination address register 8 stores the jump destination address specified by the compound condition branch instruction decoded by the
프로그램 카운터 (PC) (10) 는 프로세서의 명령 실행 위치를 표시한다.Program counter (PC) 10 indicates an instruction execution position of a processor.
셀렉터 (9) 는, 점프처 어드레스 레지스터 (8) 의 어드레스와, 복합 조건 분기 명령의 다음 명령의 어드레스 (프로그램 카운터의 값 (PC) + 1) 를 입력으로 하고, 복합 조건 분기 판정부 (7) 로부터 출력된 결과의 진위값 (T/F) 을 선택 제어 신호로서 받아, 복합 조건 분기 판정부 (7) 로부터 출력된 결과가 진인 경우에는 점프처 어드레스 레지스터 (8) 의 어드레스를 선택하고, 위인 경우에는 복합 조건 분기 명령의 다음 명령의 어드레스 (프로그램 카운터의 값 (PC) + 1) 를 선택한다. 셀렉터 (9) 로부터의 출력은, 프로그램 카운터 (PC) (10) 에서 설정된다.The
이와 같이, 본 실시예에서는 명령 세트에 새로,Thus, in this embodiment, the instruction set is newly
·조건 설정 명령 (SETCMP),Condition setting command (SETCMP),
·복합 조건 분기 명령 (XBNE, XBEQ 등), Compound conditional branch instruction (XBNE, XBEQ, etc.)
의 2 개의 명령을 준비한다. Prepare two commands.
조건 설정 명령은, 복합 조건 분기 명령에서 사용되는 복합 판정의 각 조건을 설정하는 명령이다. 복합 조건 분기 명령은, 조건 설정 명령으로 설정된 각 조건에 대응하는 비교 연산을 실시하고, 비교 연산 결과와, 명령 코드로 지정한 분기 조건 값의 비교 연산을 실시하고, 비교 연산 결과에 기초하여 분기되는 명령이다.The condition setting instruction is an instruction for setting each condition of the compound judgment used in the compound condition branch instruction. The compound condition branch instruction performs a comparison operation corresponding to each condition set by the condition setting instruction, performs a comparison operation between the comparison operation result and the branch condition value specified by the instruction code, and branches based on the comparison operation result. to be.
먼저, 조건 설정 명령부터 설명한다. 본 실시예에서는, 어셈블러의 니모닉으로 나타내면 하기와 같이 표시된다. First, the condition setting command will be described. In the present embodiment, the mnemonic of the assembler is expressed as follows.
SETCMP c0, r1, L, r11SETCMP c0, r1, L, r11
“SETCMP”는, 조건 설정 명령의 이름 (오퍼레이션 코드) 을 표시하고 있다."SETCMP" indicates the name (operation code) of the condition setting command.
제 1 오퍼랜드의“c0”은 첫번째의 조건 설정을 의미하고, 조건 설정 비교부 (2) 를 표시하고 있다. "C0" of the first operand means setting of the first condition, and displays the condition setting
제 2 , 4 오퍼랜드의“r1”과“r11”은, 연산용 레지스터 (6) 내의 레지스터 어드레스 (1 과 11) 의 레지스터를 지정하고 있다. "R1" and "r11" of the second and fourth operands designate the registers of the register addresses (1 and 11) in the operation register (6).
제 3 오퍼랜드의“L”은, r1 과 r11 의 값을 비교하는 경우에 사용하는 비교 연산기의 종류를 표시하고 있다. 비교 연산기의 종류를, 의미, C 언어 표기, 선택 값과 함께, 표 7 에 일람으로 게재한다. "L" in the third operand indicates the type of comparison operator used when comparing the values of r1 and r11. The types of comparison operators are listed in Table 7, along with their meanings, C language notation, and optional values.
본 실시예의 구체적인 동작으로서, 도 6 의 3 개의 조건 설정 명령이 실행될 때의 동작을 도 6 을 사용하여 설명한다. 도 6 의 각 행의 문자열에 있어서, “//”이후 (우측) 의 문자열은 코멘트이다. 도 6 의 3 개의 조건 설정 명령 (SETCMP) 은, r1<r11, r2>=10, r3==r13 의 각각의 비교 조건의 설정을 실시하고 있다. 또한, 도 6 에 있어서, 3 개의 조건 설정 명령에 이어지는, 레이블 (L1) 이하에서는, 연산이 실시되고, r1 ∼ r3, r11, r13 의 각 레지스터가 갱신되고 (명령 코드는 도시되지 않는다), 다음의 복합 조건 분기 명령 (XBNE) 의 실행시에 조건 (C0 ∼ C2) 이 모두 성립되고 있지 않은 경우, 레이블 (L1) 로 분기한다. 레이블 (L1) 로부터 복합 조건 분기 명령 (XBNE) 까지가 루프 처리를 구성하고, 복합 조건 분기 명령 (XBNE) 은, 루프 처리 엑시트 판정을 실시한다.As a specific operation of the present embodiment, an operation when the three condition setting instructions in FIG. 6 are executed will be described using FIG. 6. In the character string of each line of FIG. 6, the character string after "//" (right side) is a comment. The three condition setting instructions SETCMP in FIG. 6 set the comparison conditions for each of r1 <r11, r2> = 10 and r3 == r13. In Fig. 6, under the label L1 following the three condition setting instructions, the calculation is performed, and each register of r1 to r3, r11 and r13 is updated (the instruction code is not shown). If none of the conditions C0 to C2 are satisfied at the time of execution of the compound condition branch instruction XBNE, the program branches to the label L1. From the label L1 to the compound condition branch instruction XBNE constitutes a loop process, the compound condition branch instruction XBNE performs a loop process exit determination.
첫번째의 조건 설정 명령First condition setting command
SETCMP c0, r1, L, r11SETCMP c0, r1, L, r11
이 실행될 때에, 도 7 의 7-1 에 있어서, 명령 페치 사이클 (F) 에서, 명령 디코더 (11) 로 명령 코드가 명령 메모리 (도시 생략) 로부터 판독된다.When this is executed, in 7-1 of Fig. 7, in the instruction fetch cycle F, the instruction code is read from the instruction memory (not shown) by the
다음의 명령 디코드 사이클 (D) 에서, 판독된 명령 코드는 도 2 의 명령 디코더 (11) 에 나타내는 바와 같이 해석된다. 도 2 에는, 조건 설정 명령In the next instruction decode cycle D, the read instruction code is interpreted as shown in the
SETCMP c0, r1, L, r11SETCMP c0, r1, L, r11
에 대하여, 도 1 의 명령 디코더 (11) 의 동작, 조건 설정 비교부 (2) 의 동작을 설명하는 구성이 모식적으로 나타나 있다.With respect to this, a configuration for explaining the operation of the
도 2 를 참조하면, 조건 설정 비교부 (2) 는, 연산용 레지스터 (6) 의 레지스터 어드레스를 저장하는 레지스터 (「어드레스 레지스터」라고도 한다) (2c, 2d), 레지스터 (2c, 2d) 로부터의 레지스터 어드레스를 받아 디코드하여 연산용 레지스터 (6) 의 레지스터를 선택하는 디코더 (2a, 2b), 즉치 데이터를 저장하는 즉치 레지스터 (2e), 비교기 선택 레지스터 (2f), 즉치 레지스터 (2e) 의 출력과 디코더 (2b) 의 출력 (선택된 연산용 레지스터 (6) 의 판독 값) 의 일방을 선택하여 출력하는 셀렉터 (2g), 및 디코더 (2a) 의 출력 (선택된 연산용 레지스터 (6) 의 판독 값) 과 셀렉터 (2g) 의 출력을 입력하고, 비교기 선택용 레지스터 (2f) 에서 선택된 비교 연산을 실시하는 비교기 (2h) 를 구비하고 있다. 또한, 도 1 의 조건 설정 비교부 (3, 4) 도 조건 설정 비교부 (2) 와 동일 구성으로 된다.Referring to Fig. 2, the condition setting
명령 디코더 (11) 에 있어서, 조건 설정 명령In the
SETCMP c0, r1, L, r11SETCMP c0, r1, L, r11
에 있어서의,In
“c0”은, “00b”(2 진수), “C0” means “00b” (binary),
“r1”은, “0001b”“R1” means “0001b”
“L”은,“010b”"L" means "010b"
“r11”은,“1011b”“R11” means “1011b”
로 디코드된다.Is decoded.
동시에, 셀렉터 (1) 의 레지스터 (1a) 에는, 명령 디코더 (11) 로부터, 조건 설정“c0”을 나타내는 값“00b”가 저장된다. At the same time, in the
또한, 다음의 명령 실행 사이클 (EX) 에서, 셀렉터 (1) 의 레지스터 (1a) 의 값“c0”이 셀렉터 (1) 의 셀렉터 (1b) 에 작용하고, 조건 설정 비교부 (2) 가 선택되고 (도 2 의 셀렉터 (1) 내의 Sa 가 활성화된다), 조건 설정 비교부 (2) 의 레지스터 (2c, 2d, 및 2f) 에, 각각 명령 디코더 (11) 로부터“0001b”“1011b”및“010b”가 저장된다. Further, in the next instruction execution cycle EX, the value "c0" of the
또한, 레지스터 (2c ∼ 2f) 의 값은, 조건 설정 명령 The values of the
SETCMP c0, r1, L, r11SETCMP c0, r1, L, r11
의 명령 실행 후에도 그대로 유지된다. 즉, 다음 조건 설정 비교부 (2) 에 작용하는 조건 설정 명령이 실행될 때까지, 조건 설정 비교부 (2) 내의 각 레지스터의 값은 재기록되지 않는다.It remains even after the command is executed. That is, the value of each register in the condition setting
도 2 는, 이 시점까지의 동작을 실행한 상태를 나타내고 있다. 2 has shown the state which performed the operation | movement to this time point.
조건 설정 비교부 (2) 의 레지스터 (2c) 에는, 연산용 레지스터 (r1) 를 나타내는 레지스터 어드레스“1” (“0001b”), In the
조건 설정 비교부 (2) 의 레지스터 (2d) 에는, 연산용 레지스터 (r11) 를 나타내는 레지스터 어드레스“11”(“1011b”), In the
조건 설정 비교부 (2) 의 레지스터 (2f) 에는, 비교기의 종류“L”를 나타내는 값 (표 7 에서는“2”(“010b”), 도 2 (a) 에서는“<”로 나타낸다) 이 각각 기억된다. In the
두번째의 조건 설정 명령Second condition setting command
SETCMP c1, r2, GE, 10SETCMP c1, r2, GE, 10
에서는, 4 번째의 파라미터 (제 4 오퍼랜드) 에, 연산용 레지스터가 아닌 즉치 (immediate value)“10”이 지정되어 있다. In the fourth parameter (fourth operand), an immediate value "10" is specified rather than an operation register.
도 7 의 7-2 에 나타내는 바와 같이, 동작적으로는, 즉치“10”을 조건 설정 비교부 (3) 의 레지스터 (3e) (도 3 참조) 로 기억시키는 것 이외에는, 첫번째의 조건 설정 명령시와 동일하게 처리된다. As shown in 7-2 of FIG. 7, the first condition setting instruction is executed except that the immediate value “10” is stored in the register 3e (see FIG. 3) of the condition setting
결과적으로, 조건 설정 비교부 (3) 에 있어서, 도 3 에 나타내는 바와 같이,As a result, in the condition setting
레지스터 (3c) 에는, 연산용 레지스터 (r2) 를 나타내는 레지스터 어드레스“2”(“0010b”), In the
레지스터 (3e) 에는, 즉치“10”을 나타내는 값“10”(“1010b”),In the register 3e, a value "10" ("1010b") indicating an immediate value "10",
레지스터 (3f) 에는, 비교기의 종류“GE”를 나타내는 값 (표 7 에서는“5” (“101b”), 도 2 (b) 에서는“≥”로 표시한다) In the
이 각각 기억된다. Each of these is remembered.
3 번째의 조건 설정 명령Third condition setting command
SETCMP c2, r3, EQ, r13SETCMP c2, r3, EQ, r13
에 대해서도, 조건 설정“c2”에 의해 조건 설정 비교부 (4) 가 선택되고, 첫번째의 명령 (SETCMP c0, r1, L, r11) 과 동일하게 처리되고, 도 7 의 7-3 과 같은 동작이 된다. Also, the condition setting
결과적으로, 조건 설정 비교부 (4) 에 있어서, 도 4 에 나타내는 바와 같이, As a result, in the condition setting
레지스터 (4c) 에는, 연산용 레지스터 (r3) 를 나타내는 레지스터 어드레스“3”(“0011b”), In the
레지스터 (4d) 에는, 연산용 레지스터 (r13) 를 나타내는 레지스터 어드레스“13” (“1101b”), In the
레지스터 (4f) 에는, 비교기의 종류“EQ”를 나타내는 값 (표 7 에서는“0” (“000b”), 도 2 (c) 에서는“==”로 나타낸다) In the
이 각각 기억된다. Each of these is remembered.
이와 같이 본 실시예에 있어서는, 복합 조건 분기 명령을 실행하기 전에, 복합 조건을 구성하는 복수의 조건을 조건 설정 명령을 사용하여 설정한다. As described above, in the present embodiment, before executing the compound condition branch instruction, a plurality of conditions constituting the compound condition are set using the condition setting instruction.
또한, 조건 설정 명령은 조건을 설정하는 것일 뿐, 실제의 비교 연산은 실시하지 않는다. 왜냐하면, 이 시점에서는 비교 연산의 대상이 되는 연산용 레지스터 (6) 에, 아직 값이 저장되어 있지 않기 때문이다. 복합 조건 분기 명령의 실행으로 비교 연산이 실시된다. Incidentally, the condition setting instruction merely sets the condition, and does not perform the actual comparison operation. This is because, at this point, no value has yet been stored in the
본 실시예에서 명령 세트에 도입된, 다른 1 개의 추가 명령인 복합 조건 분기 명령은, 조건 설정 명령으로 설정한 각 조건에 대응하는 비교 연산을 실시하고, 그 결과와 분기 조건 값의 비교 연산을 실시하는 명령이며, 어셈블러의 니모닉에서는, 도 6 에 나타내는 예의 경우, 이하와 같이 나타내어진다. The compound condition branch instruction, which is another additional instruction introduced in the instruction set in this embodiment, performs a comparison operation corresponding to each condition set by the condition setting instruction, and compares the result and the branch condition value. In the assembler mnemonic, the example shown in FIG. 6 is represented as follows.
XBNE 0111b, L1
“XBNE”는 명령의 이름으로서, “NE”의 부분은 비교 연산기의 종류 (표 7 참조) 를 나타내고 있다. “NE”이외에, “EQ”,“L”,“LE”,“G”,“GE”의 비교이어도 된다. "XBNE" is the name of the instruction, and the part of "NE" indicates the type of comparison operator (see Table 7). In addition to "NE", a comparison of "EQ", "L", "LE", "G", and "GE" may be used.
“0111b”는 분기 조건 값으로서, 각 조건에서의 비교 연산 결과와의 비교 (비트 비교) 를 실시하는 값을 2 진수로 표시하고 있다. "0111b" is a branch condition value, which represents a binary value indicating a value (bit comparison) to be compared with a comparison operation result in each condition.
“L1”은, 복합 조건의 분기의 판정 결과가 진이었을 경우에 분기하는, 프로그램의 점프처 어드레스를 표시하고 있다. "L1" indicates a jump destination address of the program which branches when the determination result of the branch of the compound condition is true.
본 실시예에 있어서의 복합 조건 분기 명령의 동작을 설명한다. The operation of the compound conditional branch instruction in this embodiment will be described.
도 8 의 8-1 에 있어서의 1 회째의 복합 조건 분기 명령 The first compound condition branch instruction in 8-1 of FIG. 8
XBNE 0111b, L1
에 있어서, 명령 페치 사이클 (F) 에서, 명령 디코더 (11) 로 명령 코드가 명령 메모리 (도시 생략) 로부터 판독된다. In the instruction fetch cycle F, the instruction code is read from the instruction memory (not shown) by the
다음의 명령 디코드 사이클 (D) 에서, 판독된 명령 코드는 도 5 의 명령 디코더 (11) 로, 도 5 에 나타내는 바와 같이 해석된다. 또한, 복합 조건 분기 판정부 (7) 는, 레지스터 (7a, 7b), 비교기 (7c) 를 구비하고 있다. In the next instruction decode cycle D, the read instruction code is interpreted by the
명령 디코더 (11) 에 있어서,In the
XBNE 의“NE”는“001b”,“NE” of XBNE is “001b”,
“0111b”는, 그대로“0111b”"0111b" is just "0111b"
“L1”은“XXXXXXXXb” (점프처 어드레스 (L1) 를 나타내는 값) 로 각각 디코드된다. "L1" is decoded into "XXXXXXXXb" (the value representing the jumper address L1), respectively.
동시에, 명령 디코더 (11) 로부터,At the same time, from the
복합 조건 분기 판정부 (7) 의 레지스터 (7a) 에는, “0111b”가 세트되고,"0111b" is set in the
복합 조건 분기 판정부 (7) 의 레지스터 (7b) 에는, 비교“NE”를 나타내는 값“001b”(표 7 에서는“1”, 도 5 에서는“NE”를“!=”로 표시하고 있다) 가 저장된다. In the
또 점프처 어드레스 레지스터 (8) 에는, 명령 디코더 (11) 로부터 점프처 어드레스“L1”가 저장된다. 각 레지스터의 값은, 도 8 에 있어서, 다음의 사이클 8-A (XBNE 의 명령 실행 사이클 (EX)) 로 반영된다. In addition, the jump destination address "L1" is stored in the jump destination address register 8 from the
이와 동시에, 조건 설정 비교부 (2) (도 2 참조) 에 있어서, 연산용 레지스터 (6) 의 레지스터를 지정하는 레지스터 (2c, 2d) 를 사용하고, 디코더 (2a, 2b) 가, 연산용 레지스터 (6) 중으로부터, 해당하는 연산용 레지스터 (6) (이 경우, r1, r11) 의 값을 판독한다. 판독된 r1, r11 의 값은, 비교기 (2h) 에 공급된다.At the same time, in the condition setting comparison section 2 (see Fig. 2), the
조건 설정 비교부 (3) 와 조건 설정 비교부 (4) 에 있어서도 동일하게 처리된다. 도 3 을 참조하면, 디코더 (3a) 에서 지정된 연산용 레지스터 (6) 의 값이 판독된다. 조건 설정 비교부 (3) 에서는, 레지스터 (3c) 에서 선택된 연산용 레지스터 (6) 의 레지스터 (r2) 가 판독되고, 레지스터 (r2) 의 값과, 셀렉터 (3g) 에서 선택된 즉치 레지스터 (3e) 의 값 10 이 비교기 (3h) 에 공급된다. The same applies to the condition setting
도 4 를 참조하면, 조건 설정 비교부 (4) 에 있어서, 연산용 레지스터 (6) 의 레지스터를 지정하는 어드레스 레지스터 (4c, 4d) 를 사용하고, 디코더 (4a, 4b) 가, 연산용 레지스터 (6) 중으로부터, 해당하는 연산용 레지스터 (6) (이 경우, r3, r13) 의 값을 판독한다. 판독된 연산용 레지스터 (6) 의 r3, r13 의 값은, 비교기 (4h) 에 공급된다.Referring to Fig. 4, in the condition setting
XBNE 의 명령 실행 사이클 (EX) (도 8 의 8-A) 에서는, 조건 설정 비교부 (2) (도 2 참조) 에 있어서, 디코더 (2a, 2b) 에 판독된 2 개의 연산용 레지스터의 값을 사용하고, 비교기 (2h) 는 비교기 선택 레지스터 (2f) 가 나타내는 비교기에서 비교 연산을 실행하고, 결과를 레지스터 (5a) (도 5 참조) 에 저장한다.In the XBNE instruction execution cycle (EX) (8-A in FIG. 8), in the condition setting comparison section 2 (see FIG. 2), the values of two operation registers read by the
여기서, 조건 설정 비교부 (3) 와 같이 비교 연산의 한쪽의 값이 즉치였을 경우에는, 즉치 레지스터 (3e) (도 3) 의 값을 셀렉터 (3g) (도 3) 에서 선택하고, 비교기 (3h) 에서 주고 받아 비교 연산한다. 조건 설정 비교부 (4) 에 있어서도 동일한 처리가 실시된다.Here, when one value of the comparison operation is instantaneous as in the condition setting
조건 설정 비교부 (2) 의 비교기 (2h), 조건 설정 비교부 (3) 의 비교기 (3h), 조건 설정 비교부 (4) 의 비교기 (4h) 의 각각의 연산 결과를 레지스터 (5a ∼ 5c) 에 저장한다.The calculation results of the
또한, 다음의 명령 실행 사이클 (EX) 에서 (도 8 의 8-B), 도 5 를 참조하면, 비교 연산 결과를 저장한 레지스터 (5a ∼ 5c) 와, 명령 코드로부터 얻어진 분기 조건 값 (레지스터 (7a) 의 값) 의 비교 연산을 비교기 (7c) 에서 실행한다. 또한, 복합 조건 분기 명령이 명령 페치 (F), 디코드 (D) 로 이어지고, 2 개의 명령 실행 사이클 (EX) (첫번째의 명령 실행 사이클 (EX) 은, 조건 설정 비교부 (2, 3, 4) 에서의 비교 연산의 실행과, 레지스터 (5) 에 대한 설정, 두번째의 명령 실행 사이클 (EX) 은 비교기 (7c) 에 의한 레지스터 (5) 의 값과 분기 조건 값의 비교에 의한 분기 판정) 을 포함한다.In addition, referring to FIG. 8 (8-B in FIG. 8) and FIG. 5 in the next instruction execution cycle EX, the
여기서 사용되는 비교기의 종류는, 레지스터 (7b) 에서 선택된 값“NE”(표 7 에서는“1”(“001b”), 도 3 에서는“!=”로 표시한다) 가 된다.The type of comparator used here is the value "NE" selected in the
여기서 레지스터 (5a, 5b, 5c) 는, 도 9 (a) 에서 나타내는 바와 같이, 레지스터 (7a) 의 분기 조건 값의 각각 비트 0, 1, 2 에 대응된다. 또한, 레지스터 (7a) 의 분기 조건 값이“0011b”인 경우에는, 도 9 (b) 와 같이 된다.Here, the
XBNE 의 다음의 명령 실행 사이클 (EX) (도 8 의 8-B) 에서는, 비교기 (7c) 의 연산 결과 출력 T/F 가“T”, 즉, 복합 조건의 각 조건이 모두 성립되어 있지 않았을 때를 표시하고 있고, 점프처 어드레스 레지스터 (8) 의 어드레스가 셀렉터 (9) 에 의해 선택되어 프로그램 카운터 (10) 에 대입된다.In the next instruction execution cycle (EX) of XBNE (8-B in Fig. 8), when the operation result output T / F of the
이 때, 명령 메모리 버스에 점프처 어드레스 레지스터 (8) 의 어드레스 값이 출력되고, 다음의 명령 페치 사이클에서 “L1”번지의 명령이 명령 메모리로부터 판독된다 (도 8 의 8-C).At this time, the address value of the jump
그 후, 다시 복합 조건 분기 명령 XBNE 0111b, L1 을 실행할 때에 (도 8 의 8-2), 상기와 동일하게 처리되는데, 이번에는 도 8 의 8-D (XBNE 의 명령 실행 사이클 (EX)) 에 나타내는 바와 같이 모든 조건이 성립했으므로, 비교기 (7c) (도 3 참조) 의 연산 결과 출력 T/F 가“F”가 되고, 다음 명령의 어드레스 (n+1) 가, 셀렉터 (9) 에 의해 선택되어 프로그램 카운터 (10) 에 대입된다.Thereafter, when executing the compound condition
이 때, 명령 메모리 버스에, 다음 명령의 어드레스 값이 출력되고, 다음의 명령 페치 사이클에서, 복합 조건 분기 명령 (XBNE 0111b, L1) 의 다음 명령이, 도시 생략된 명령 메모리로부터 판독된다 (도 8 의 8-F).At this time, the address value of the next instruction is output to the instruction memory bus, and the next instruction of the compound condition branch instruction (
이상과 같이, 미리 조건 설정 명령으로 복수의 조건을 설정해 두고, 복합 조건 분기 명령으로 복수의 조건의 비교 연산을 실시하고, 또한 그 결과와, 지정한 분기 조건 값의 비교에 의해 분기의 유무를 판정함으로써, 복수 조건의 조건 분기를 1 개의 명령으로 실시할 수 있다.As described above, a plurality of conditions are set in advance by a condition setting instruction, and a comparison operation of a plurality of conditions is performed by a compound condition branch instruction, and the presence or absence of a branch is determined by comparing the result with a specified branch condition value. A conditional branch of multiple conditions can be executed by one instruction.
이하, 본 실시예의 작용 효과에 대하여, 특허 문헌 1 에 기재된 종래 방식과의 비교 대비를 섞어 설명한다.Hereinafter, the effect of this Example is mixed and compared with the conventional system of
상기의 종래 방식에서는 반드시 비교 명령과 조건 분기 명령의 2 개의 명령을 조합하여 조건 분기했던 것에 반해, 본 실시예에서는 조건 분기에서 사용되는 조건을 미리 설정함으로써, 조건 분기 처리를 1 개의 조건 분기 명령으로 실행할 수 있다. 이 때문에, 보다 고속화에 대응할 수 있도록 하고 있다. 특히, 동일한 조건을 반복 실행하는 처리에 적용함으로써, 종래와 비교하여 고속성이 증가하는 효과가 있다. 또한, 복합 조건 분기 명령에 있어서, 복수의 조건에 대응하는 비교 처리는 병렬 실행되기 때문에, 고속화에 대응하고 있다.In the above conventional method, the conditional branching is always performed by combining the two instructions of the comparison instruction and the conditional branching instruction. In the present embodiment, the conditional branching process is changed to one conditional branching instruction by setting the condition used in the conditional branch in advance. You can run Therefore, it is possible to cope with higher speed. In particular, by applying the same condition to a process that is repeatedly executed, there is an effect that the speed is increased as compared with the conventional one. Further, in the compound condition branch instruction, the comparison processing corresponding to the plurality of conditions is executed in parallel, so that the speed is increased.
또, 종래 방식과 같이 모든 복합 조건을 1 개의 명령으로 표현했을 경우에, 오퍼랜드 부분이 많고 명령 길이가 길어진다. 명령 메모리의 버스 폭이 비교적 좁은 시스템에서는, 명령 페치에 추가 사이클이 필요해진다.In addition, when all compound conditions are expressed by one instruction as in the conventional method, there are many operand parts and the instruction length becomes long. In systems where the bus width of the instruction memory is relatively small, additional cycles are required for instruction fetch.
이에 대하여, 본 실시예에서는, 조건 분기 명령과는 다른 조건 설정 명령을 사용하여 조건을 설정할 수 있도록 함으로써, 조건 설정 명령 및 조건 분기 명령은, 통상의 비교 명령이나 조건 분기 명령과 거의 다르지 않은 명령 길이로 실현할 수 있다. 따라서, 명령 메모리폭이 비교적 좁은 시스템에서도, 명령 페치의 추가 사이클은 없어도 되도록 할 수 있는 경우가 많아진다. 이는, 복수의 조건을 미리 설정해 둘 수 있는 조건 설정 명령과, 설정된 복합 조건의 연산 결과와 분기 조건을 비교하고, 분기하는지 여부를 판정하는 복합 조건 분기 명령을 갖기 때문이다.In contrast, in the present embodiment, the condition setting instruction and the condition branch instruction can be set using a condition setting instruction different from the condition branch instruction, so that the condition length instruction and the condition branch instruction are almost the same as those of the normal comparison instruction or the condition branch instruction. Can be realized. Therefore, even in a system where the instruction memory width is relatively narrow, it is often possible to eliminate the additional cycle of instruction fetch. This is because it has a condition setting instruction capable of setting a plurality of conditions in advance, and a compound condition branch instruction that compares the result of the calculation of the set compound condition with the branch condition and determines whether to branch.
본 실시예에 있어서, 조건 분기 처리는, 1 개의 복합 조건 분기 명령만이 실행되고, 1 명령 만큼의 실행 사이클로 족하기 때문에, 종래의 2 개의 명령으로 조건 분기하는 것보다도 고속으로 조건 분기할 수 있기 때문이다. In the present embodiment, the conditional branching process can be conditionally branched at higher speed than conditional branching with two conventional instructions because only one compound conditional branch instruction is executed and one execution cycle is satisfied. Because.
또한, 본 실시예에서는, 조건 설정을 1 개씩 실시하기 위한 셀렉터 (1), 복합 조건을 기억해 두기 위한 레지스터 (2c ∼ 2f) 와, 연산용 레지스터 (6) 로부터 값을 취득하기 위한 디코더 (2a 및 2b) 를 구비하고, 이러한 구성에 의해, 복합 조건의 비교 연산을 복합 조건 분기 명령 중에서 실행할 수 있도록 하고 있다. In the present embodiment, the
이로써, 이하와 같은 작용 효과 (우위점) 를 나타낸다. Thereby, the following effect (advantage point) is exhibited.
종래 방식에서는, 복합 조건 비교 명령과, 조건 분기 명령의 2 개의 명령의 조합으로 되어 있기 때문에, 2 회분의 명령 페치와 명령 디코드의 사이클이 필요해진다. In the conventional method, since the combination is a combination of two instructions of a compound condition comparison instruction and a conditional branch instruction, two cycles of instruction fetch and instruction decode are required.
이에 대하여, 본 실시예에서는, 조건 분기 명령 1 개의 명령으로 동일한 결과가 얻어지고, 1 회분의 명령 페치와 명령 디코드로 족하기 때문에, 그 만큼 페치 사이클 수가 적어지고 보다 고속이다. 단, 미리 복수의 조건을 각각 조건 설정 명령으로 세트하고 있기 때문에, 그 만큼을 포함시키면, 1 회만의 조건 분기 처리에서는 종래 방식 쪽이 고속으로 보인다. 그러나, 동일한 복합 조건을 여러 차례 반복하는 처리에 적용했을 경우에는, 본 발명 쪽이 반복 횟수가 많을수록 고속으로 처리할 수 있다.On the other hand, in the present embodiment, the same result is obtained by one instruction of conditional branch instruction, and the instruction fetch and instruction decode are satisfied, so that the number of fetch cycles is smaller and faster. However, since a plurality of conditions are set in advance by the condition setting instruction, the conventional method is faster in the conditional branching process for only one time. However, when the same compound condition is applied to a process of repeating a number of times, the present invention can process at a higher speed as the number of repetitions increases.
종래 방식의 복합 조건 비교의 명령은, 복수의 조건을 모두 1 개의 명령으로 지정하고 있기 때문에, 명령의 오퍼랜드 부분이 길어진다. 이 때문에, 명령 메모리의 버스 폭이 그 명령 길이보다 좁으면 추가의 명령 페치 사이클이 필요해지고, 그 만큼 명령 실행 사이클 수가 증가한다.In a conventional compound condition comparison instruction, since a plurality of conditions are all designated by one instruction, the operand portion of the instruction becomes long. For this reason, if the bus width of the instruction memory is narrower than the instruction length, an additional instruction fetch cycle is required, which increases the number of instruction execution cycles.
한편, 본 실시예에서는 기본적으로는 1 개의 명령으로 1 개의 조건을 지정하고 있기 때문에, 다른 통상의 연산 명령 등과 동일한 정도의 명령 길이로 할 수 있다. 이 때문에, 추가의 명령 페치 사이클도 불필요하게 할 수 있을 가능성이 높기 때문에, 실행 사이클 수도 증가하지 않는다. On the other hand, in this embodiment, since one condition is basically specified by one instruction, the instruction length can be the same as other ordinary operation instructions. For this reason, since there is a high possibility that additional instruction fetch cycles can be made unnecessary, the number of execution cycles does not increase.
또한, 상기 실시예에서는 조건 분기 명령의 조건 (condition) 으로서, 수치의 대소를 비교하는 2 항 비교 연산을 예로 설명했는데, 본 발명은 이러한 2 항 비교 연산으로 제한되는 것은 아니고, 또 대소 비교 이외에도, 프로세서의 플래그 (제로 플래그, 캐리 플래그) 등의 판정에 의한 조건 분기에 대해서도 적용할 수 있음은 물론이다. 또, 조건의 비교 연산으로서, 논리 연산을 사용하도록 해도 됨은 물론이다. In the above embodiment, as a condition of the conditional branch instruction, a binary comparison operation for comparing the magnitude of an example is described as an example, but the present invention is not limited to such a binary comparison operation. It is, of course, also applicable to conditional branching by the determination of a processor flag (zero flag, carry flag) or the like. Moreover, of course, you may make it use a logical operation as a comparison operation of a condition.
이상, 본 발명을 상기 실시예에 입각하여 설명하였는데, 본 발명은 상기 실시예의 구성으로만 제한되는 것은 아니고, 본 발명의 범위 내에서 당업자라면 이룰 수 있을 각종 변형, 수정을 포함함은 물론이다. As mentioned above, although this invention was demonstrated based on the said Example, this invention is not limited only to the structure of the said Example, Of course, it includes the various deformation | transformation and correction which a person skilled in the art can make within the scope of this invention.
본 발명에 의하면, 종래의 복합 조건 처리 방식에 있어서 비교 명령과 조건 분기 명령의 2 개의 명령의 조합으로 실행되고 있던 조건 분기 처리를, 1 개의 복합 조건 분기 명령으로 실행할 수 있게 함으로써, 동일 조건의 처리를 반복 실행하는 루프 처리 등에 적용했을 경우에, 미리 루프 처리의 직전에 복합 조건을 설정하고, 루프 처리 내에서는 복합 조건 분기 명령 1 개로 조건 분기할 수 있다. 이 때문에, 본 발명에 의하면, 종래의 복합 조건 처리 방식과 같이 2 개의 명령으로 조건 분기하는 경우와 비교하여, 고속화를 실현할 수 있게 하고 있다.According to the present invention, in the conventional compound condition processing method, the conditional branching process performed by the combination of two instructions of the comparison instruction and the conditional branching instruction can be executed by one compound conditional branching instruction, thereby processing the same condition. Is applied to a loop process that repeatedly executes, the compound condition can be set in advance just before the loop process, and conditional branching can be performed by one compound condition branch instruction in the loop process. For this reason, according to this invention, compared with the case of conditional branching with two instructions like the conventional compound conditional processing system, it becomes possible to implement | achieve a high speed.
본 발명에 의하면, 동일 조건의 처리를 반복 실행하는 횟수가 많을수록, 처리 성능의 향상 효과가 커진다. According to the present invention, the greater the number of times of repeating the processing under the same conditions, the greater the effect of improving the processing performance.
또한, 본 발명에 의하면, 조건 설정 명령은 1 개의 명령에 대하여 1 개의 조건을 설정할 뿐이므로, 동시에 복수의 조건을 설정하는 경우와 비교하여 명령 길이를 짧게 할 수 있다.According to the present invention, since the condition setting command only sets one condition for one command, the command length can be shortened as compared with the case of setting a plurality of conditions at the same time.
Claims (13)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2006-00094589 | 2006-03-30 | ||
JP2006094589A JP2007272353A (en) | 2006-03-30 | 2006-03-30 | Processor device and compound condition processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070098688A true KR20070098688A (en) | 2007-10-05 |
KR100875401B1 KR100875401B1 (en) | 2008-12-23 |
Family
ID=38560846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070031101A KR100875401B1 (en) | 2006-03-30 | 2007-03-29 | Processor Units and How to Handle Complex Conditions |
Country Status (5)
Country | Link |
---|---|
US (1) | US20070234019A1 (en) |
JP (1) | JP2007272353A (en) |
KR (1) | KR100875401B1 (en) |
CN (1) | CN101046741B (en) |
TW (1) | TW200809621A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008048910A1 (en) | 2007-10-01 | 2009-05-14 | Lg Electronics Inc. | Steam home appliance and control method for this |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008305185A (en) * | 2007-06-07 | 2008-12-18 | Nec Electronics Corp | Processor device and compound condition processing method |
US20090198876A1 (en) * | 2008-01-31 | 2009-08-06 | Jimmy Kwok Lap Lai | Programmable Command Sequencer |
US8078849B2 (en) | 2008-12-23 | 2011-12-13 | Juniper Networks, Inc. | Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table |
US8880854B2 (en) * | 2009-02-11 | 2014-11-04 | Via Technologies, Inc. | Out-of-order execution microprocessor that speculatively executes dependent memory access instructions by predicting no value change by older instructions that load a segment register |
GB2480285A (en) | 2010-05-11 | 2011-11-16 | Advanced Risc Mach Ltd | Conditional compare instruction which sets a condition code when it is not executed |
US8832417B2 (en) | 2011-09-07 | 2014-09-09 | Qualcomm Incorporated | Program flow control for multiple divergent SIMD threads using a minimum resume counter |
US9256429B2 (en) | 2012-08-08 | 2016-02-09 | Qualcomm Incorporated | Selectively activating a resume check operation in a multi-threaded processing system |
US9229721B2 (en) | 2012-09-10 | 2016-01-05 | Qualcomm Incorporated | Executing subroutines in a multi-threaded processing system |
US10620952B2 (en) | 2015-06-24 | 2020-04-14 | International Business Machines Corporation | Conversion of boolean conditions |
US10705841B2 (en) | 2015-06-24 | 2020-07-07 | International Business Machines Corporation | Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation |
US10698688B2 (en) * | 2015-06-24 | 2020-06-30 | International Business Machines Corporation | Efficient quantization of compare results |
CN106775593B (en) * | 2016-12-30 | 2019-12-31 | 智车优行科技(北京)有限公司 | Method and device for removing condition judgment statements in circular processing flow and application unit |
CN113485748B (en) * | 2021-05-31 | 2022-08-12 | 上海卫星工程研究所 | Satellite condition instruction system and execution method thereof |
US11886883B2 (en) * | 2021-08-26 | 2024-01-30 | International Business Machines Corporation | Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5203002A (en) * | 1989-12-27 | 1993-04-13 | Wetzel Glen F | System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle |
CA2038264C (en) * | 1990-06-26 | 1995-06-27 | Richard James Eickemeyer | In-memory preprocessor for a scalable compound instruction set machine processor |
DE69129569T2 (en) * | 1990-09-05 | 1999-02-04 | Philips Electronics Nv | Machine with a very long command word for efficient execution of programs with conditional branches |
JPH1185506A (en) | 1997-09-11 | 1999-03-30 | Fujitsu Ltd | Data processor having plural condition code processing function |
-
2006
- 2006-03-30 JP JP2006094589A patent/JP2007272353A/en not_active Withdrawn
-
2007
- 2007-03-21 US US11/723,623 patent/US20070234019A1/en not_active Abandoned
- 2007-03-27 TW TW096110549A patent/TW200809621A/en unknown
- 2007-03-29 KR KR1020070031101A patent/KR100875401B1/en not_active IP Right Cessation
- 2007-03-30 CN CN2007100919567A patent/CN101046741B/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008048910A1 (en) | 2007-10-01 | 2009-05-14 | Lg Electronics Inc. | Steam home appliance and control method for this |
Also Published As
Publication number | Publication date |
---|---|
KR100875401B1 (en) | 2008-12-23 |
TW200809621A (en) | 2008-02-16 |
JP2007272353A (en) | 2007-10-18 |
CN101046741A (en) | 2007-10-03 |
US20070234019A1 (en) | 2007-10-04 |
CN101046741B (en) | 2010-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100875401B1 (en) | Processor Units and How to Handle Complex Conditions | |
JPS58114274A (en) | Data processor | |
KR20090076848A (en) | Processor apparatus and conditional branch processing method | |
KR100995269B1 (en) | Processor apparatus and complex condition processing method | |
US20190391812A1 (en) | Conditional execution specification of instructions using conditional extension slots in the same execute packet in a vliw processor | |
US11681532B2 (en) | Method for forming constant extensions in the same execute packet in a VLIW processor | |
US20150370561A1 (en) | Skip instruction to skip a number of instructions on a predicate | |
JPS6388636A (en) | Microcomputer | |
JP2009526300A (en) | Instruction set for microprocessors | |
JP2006053830A (en) | Branch estimation apparatus and branch estimation method | |
US6842852B1 (en) | System and method for controlling conditional branching utilizing a control instruction having a reduced word length | |
US20050015574A1 (en) | Processor and method capable of executing instruction sets with different lengths | |
JP2002082800A (en) | Device and method for executing program | |
GB2452151A (en) | Using the concatenate bits of an instruction to obtain the length of the instruction in multi-mode processors. | |
JP2001344100A (en) | Central processing unit equipped with plural flag registers | |
JPH04130924A (en) | Microprogram control system for sequencer | |
JP2007279983A (en) | Instruction processing device | |
US9519482B2 (en) | Efficient conditional instruction having companion load predicate bits instruction | |
JPH0619705A (en) | Pipeline control system | |
JPH03288228A (en) | Information processor | |
JPH0713758A (en) | Instruction decoding method | |
JP2001084130A (en) | Selecting circuit | |
JPH03263222A (en) | Microprogram branch processing system | |
US20050015575A1 (en) | Processor and method capable of automatically converting instruction mode to align word boundary of a multi-mode instruction set | |
JPH0895781A (en) | Arithmetic and logic unit of processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20111118 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20121121 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |