KR100532743B1 - 하드웨어량을삭감한프로세서및명령의종류를삭감하는명령변환장치 - Google Patents
하드웨어량을삭감한프로세서및명령의종류를삭감하는명령변환장치 Download PDFInfo
- Publication number
- KR100532743B1 KR100532743B1 KR1019980035358A KR19980035358A KR100532743B1 KR 100532743 B1 KR100532743 B1 KR 100532743B1 KR 1019980035358 A KR1019980035358 A KR 1019980035358A KR 19980035358 A KR19980035358 A KR 19980035358A KR 100532743 B1 KR100532743 B1 KR 100532743B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- conditional
- condition
- command
- string
- Prior art date
Links
- 238000006243 chemical reaction Methods 0.000 title claims description 64
- 238000012546 transfer Methods 0.000 claims description 130
- 238000000034 method Methods 0.000 claims description 47
- 230000005540 biological transmission Effects 0.000 claims description 46
- 238000012545 processing Methods 0.000 claims description 34
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims 10
- 238000007792 addition Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 30
- 230000006870 function Effects 0.000 description 21
- 230000000593 degrading effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007306 functionalization reaction Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- 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/30058—Conditional branch instructions
-
- 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 or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
명령열을 해독하고 명령을 실행하는 프로세서에 있어서, 소정의 명령이 실행되었을 때에 그 실행결과의 하나의 상태를 보유하는 상태 보유수단과, 당해 프로세서의 명령세트에 할당된 명령에 대응하는 명령으로 구성된 명령열을 입수하는 입수수단을 구비하며, 상기 명령세트의 일부에는 1종류 이상의 조건부 명령이 할당되고, 조건부 명령은 상태조건과 연산코드를 포함하는 명령으로, 상태조건은 하나 이상의 상태를 특정하며, 동일 연산코드를 포함하는 조건부 명령에 있어서, 서로 배타의 관계에 있는 제 1 상태조건과 제 2 상태조건 중 제 1 상태조건을 포함하는 제 1 조건부 명령은 명령세트의 일부에 할당되고 있고, 제 2 상태조건을 포함하는 제 2 조건부 명령은 명령세트에 할당되어 있지 않고,
상기 명령세트에 할당된 명령을 해독가능하고, 상기 입수수단이 입수한 명령열을 1명령씩 해독하며, 제 1 조건부 명령의 해독에 즈음하여 그 제 1 조건부 명령이 포함하는 제 1 상태조건과 연산코드를 해독하는 해독수단과, 상기 상태 보유수단이 유지하는 상태가 상기 해독수단이 해독한 제 1 상태조건이 특정하는 상태에 포함되는지의 여부를 판정하는 판정수단과, 상기 판정수단이 포함된다고 판정된 경우에만 상기 해독수단이 해독한 연산코드가 나타내는 연산을 실행하는 실행수단을 구비한다.
Description
본 발명은 프로세서 및 명령 변환장치에 관한 것으로, 특히 조건부 명령을 설치하는 경우에 명령의 종류를 삭감하고, 하드웨어량을 삭감하는 기술에 관한 것이다.
최근 마이크로 프로세서 응용제품의 고기능화 및 고속화에 따라, 보다 처리능력이 높은 마이크로 프로세서(이하, 간단히 「프로세서」라 함)가 요구되고 있다.
프로세서를 고속화하기 위한 기본 기술의 하나로 파이프라인 처리가 있다.
파이프라인 처리는 하나의 명령의 처리 과정을 복수의 작은 처리단위(파이프라인·스테이지)로 분할하고, 각 스테이지를 동시 실행함으로써 처리속도를 향상시키는 기술이다.
이러한 파이프라인 처리에서는 분기시에 파이프라인의 혼란(파이프라인·스톨)이 발생하고, 파이프라인의 실행 성능이 이상적인 성능을 하회한다는 문제점이 있었다. 이 현상을 분기 해저드라 한다.
최근의 프로세서에서는 분기 해저드를 삭감하기 위해 분기명령 대신에 조건부 명령을 이용하여 처리능력을 향상시키고 있다. 조건부 명령에 대해서는, 예를 들면「The ARM RISC Chip A Programmer's Guide, Addison-Wesley Publishing Company Inc.의 p. 62∼63에 상세히 기재되어 있다.
도 30은 종래의 조건부 전송명령을 포함하는 명령열을 도시한 도면이다. 도 30 중에 도시된 「r0」, 「r1」, 「r2」는 각각 레지스터를 가리킨다. 명령 3001은 레지스터「r0」에 수치「1」을 전송하는 전송 명령이다. 명령 3002는 레지스터 「r1」과 레지스터 「r2」를 비교한 결과를 각종 플래그에 반영하는 비교 명령이다. 명령 3003은 조건부 전송명령이고, 각종 플래그를 참조하여 명령 3002에서 비교된 2개의 비교 대상이 같은 경우에 레지스터「r0」에 수치 「O」을 전송한다.
도 31은 종래의 조건부 전송명령의 일람을 도시한 도면이다. 이 조건부 전송명령 3101은 6종류이다. 조건 3102는 각각의 조건부 전송명령으로 지정되는 조건을 나타내는 기호이다. 조건은 비교명령으로 2개의 연산대상 a와 연산대상 b를 비교한 경우에 있어서, 「a와 b가 같다」, 「a와 b가 같지 않다」, 「a가 b보다 크다」, 「a가 b 이상」, 「a가 b 미만」및「a가 b 이하」이고, 각 조건부 전송명령은 각각의 조건이 성립된 경우에 전송 명령을 실행한다.
도 32는 종래의 비교명령(CMP 명령)과, 조건이 성립한 경우에 가산 명령을 실행하는 조건부 가산명령과, 조건이 성립한 경우에 전송명령을 실행하는 조건부 전송명령과, 조건이 성립한 경우에 분기하는 조건 분기명령을 도시한 도면이다. 여기에서 명령 니모닉의 연산코드의 마지막 2문자가 조건을 지정한다.
도 32에 도시된 각 조건 첨부명령과 조건 분기명령의 조건은 도 31에 도시된 조건에 부호첨부 데이터로서 비교하는 조건이 추가되어 있기 때문에 각 조건첨부 명령과 조건 분기명령이 10종류씩 존재한다.
따라서 비교명령과 2개의 연산의 조건부 명령과 조건 분기명령의 명령의 종류의 합계는 31종류이다. 여기에서 각 조건부 명령의 연산수를 A로 하면, 비교명령과 각 조건부 명령과 조건 분기명령의 명령의 종류의 합계는 11+(10×A)종류가 된다.
또한 명령의 종류를 삭감한 조건부 명령도 있다. 이러한 조건부 명령에 대해서는, 예를 들면 「히타치 싱글칩 RISC 마이크로 컴퓨터 SH7000/SH7600 시리즈 프로그래밍 매뉴얼 : (주)히타치 제작소 발행」의 p.57∼58, p.69∼70, p.75∼78에 상세히 기재되어 있다.
도 33은 명령의 종류를 삭감한 비교명령과 조건부 가산명령과 조건부 전송명령과 조건 분기명령을 도시한 도면이다.
도 33에 도시된 각 조건부 명령과 조건 분기명령의 조건은 조건 플래그가 세트되어 있거나 클리어되어 있는 2종류뿐이므로, 각 조건부 명령과 조건 분기명령이 2종류씩 존재하고, 또한 조건 플래그를 세트/리세트하는 비교명령이 5종류 존재한다.
따라서 비교명령과 2개의 연산의 조건부 명령과 조건 분기명령의 명령의 종류의 합계는 11종류이다. 여기에서 조건부 명령의 연산수를 A로 하면, 비교명령과 각 조건부 명령과 조건 분기명령의 명령의 종류의 합계는 7+(2×A)종류가 된다.
파이프라인 처리를 행하는 프로세서에 있어서, 분기 해저드를 보다 많이 삭감하기 위해서는 보다 많은 연산의 조건부 명령을 구비할 필요가 있다.
그러나 프로세서의 명령은 고정길이의 비트 패턴이므로 프로세서가 구비할 수 있는 명령의 종류는 유한하다.
따라서 프로세서가 구비할 수 있는 조건부 명령의 종류에도 한계가 있고, 또 명령의 종류가 증가하면 그 만큼 명령해독을 위한 하드웨어가 필요하게 되어 프로세서의 원가가 증가한다.
본 발명은 이러한 문제점을 감안하여 이루어진 것으로, 조건부 명령을 설치하는 경우에 명령의 종류를 삭감하는 명령 변환장치 및 하드웨어량을 삭감한 프로세서를 제공하는 것을 목적으로 한다.
(1) 상기 목적을 달성하기 위한 본 발명의 프로세서는, 명령열을 해독하여 명령을 실행하는 프로세서로서, 소정의 명령이 실행되었을 때 그 실행결과의 하나의 상태를 보유하는 상태 보유수단과; 당해 프로세서의 명령세트에 할당된 명령에 대응하는 명령으로 구성된 명령열을 입수하는 입수수단과; 상기 명령세트에 할당된 명령을 해독할 수 있고, 상기 입수수단이 입수한 명령열을 1명령씩 해독하며, 제 1 조건부 명령의 해독에 즈음하여 그 제 1 조건부 명령이 포함하는 제 1 상태조건과 연산코드를 해독하는 해독수단과; 상기 상태 보유수단이 보유하는 상태가 상기 해독수단이 해독한 제 l 상태조건이 특정하는 상태에 포함되는지의 여부를 판정하는 판정수단과; 상기 판정수단이 포함된다고 판정한 경우에만 상기 해독수단이 해독한 연산코드가 나타내는 연산을 실행하는 실행수단을 포함하며, 상기 명령세트의 일부에는 1종류 이상의 조건부 명령이 할당되고, 조건부 명령은 상태조건과 연산코드를 포함하는 명령이며, 상태조건은 하나 이상의 상태를 특정하고, 동일 연산코드를 포함하는 조건부 명령에 있어서, 서로 배타의 관계에 있는 제 1 상태조건과 제 2 상태조건 중, 제 1 상태조건을 포함하는 제 1 조건부 명령이 명령세트의 일부에 할당되어 있고, 제 2 상태조건을 포함하는 제 2 조건부 명령은 명령 세트에 할당되어 있지 않는 것을 특징으로 한다.
이에 의해 본 발명에 관한 프로세서는, 배타의 관계에 있는 2개의 조건 중 어느 한쪽의 조건을 지정하는 조건부 명령만을 명령 세트에 할당하고, 다른 쪽의 조건을 지정하는 조건부 명령을 명령 세트에 할당하지 않기 때문에 종래에 비해 조건부 명령의 종류가 적어진다.
따라서 명령 해독기의 하드웨어 양을 삭감할 수 있고, 또한 명령의 종류가 유한한 경우에 있어서는 보다 많은 연산의 조건부 명령을 구비할 수 있으므로, 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 보다 많이 삭감할 수 있다.
(2) 또한 상기 상태 보유수단은 1종류의 비교명령의 실행결과인 2개의 연산대상 a와 b의 대소관계를 보유하고 있으며, 동일 연산코드를 포함하는 제 1조건부 명령의 종류는, 비교명령이 실행된 후에 제 1 조건부 명령을 실행하는 경우에서 "a와 b가 같다" 및 "a와 b가 같지 않다"의 어느 한쪽과, "a와 b 이상" 및 "a가 b 미만"의 어느 한쪽과, "a가 b이하" 및 "a가 b보다 크다"의 어느 한쪽을 제 1 조건으로서 포함하는 3종류인 구성으로 해도 된다.
이에 의해 본 발명에 관한 프로세서는 연산마다 3종류씩 조건부 명령을 구비하기 때문에 종래의 6종류에 비해 조건부 명령의 종류가 1/2이 된다.
따라서 명령 해독기의 하드웨어량을 삭감할 수 있고, 또한 명령의 종류가 유한한 경우에 있어서는 종래의 2배의 연산의 조건부 명령을 구비할 수 있으므로 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 더욱 많이 삭감할 수 있다.
(3) 또한 조건부 명령이 포함하는 연산코드는 전송 및 연산의 어느 것 또는 양쪽인 구성으로 해도 된다.
이에 의해 본 발명에 관한 프로세서의 명령 세트의 일부에 할당된 조건부 명령이 지정하는 연산은 전송 및 연산의 어느 하나이거나 또는 양쪽이다.
따라서 전송명령 및 연산명령의 모두에 있어서 조건부 명령을 할당할 수 있어, 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 더욱 많이 삭감할 수 있다.
(4) 상기 목적을 달성하기 위해 본 발명에 관한 프로세서는, 명령열을 해독하여 실행하는 프로세서로서, 당해 프로세서의 명령세트에 할당된 명령으로 구성된 명령열을 입수하는 입수수단과, 여기에서 상기 명령세트의 일부에는 1종류 이상의 제 1 조건부 플래그 설정명령과 1종류 이상의 제 2 조건부 플래그 설정명령과, 1종류 이상의 조건 성립시 실행명령이 할당되며, 상기 제 1 조건부 플래그 설정명령은 서로 배타의 관계에 있는 제 1 조건과 제 2 조건 중 제 1 조건을 포함하며, 제 2 조건부 설정명령은 상기 제 2 조건을 포함하며, 상기 조건 성립시 실행명령은 연산코드를 포함하며, 동일 연산코드를 포함하는 조건 성립시 실행명령의 종류는 1종류이며, 상기 명령세트에 할당된 명령을 해독가능하고, 상기 입수수단이 입수한 명령열을 1명령씩 해독하고, 제 1 조건부 플래그 설정명령의 해독에 즈음해서는, 그 제 1 조건부 플래그 설정명령이 포함하는 제 1 조건을 해독하며, 제 2 조건부 플래그 설정명령의 해독에 즈음해서는, 그 제 2 조건부 플래그 설정명령이 포함하는 제 2 조건을 해독하며, 조건 성립시 실행명령의 해독에 즈음해서는, 각각의 조건 성립시 실행명령이 포함하는 연산코드를 해독하는 해독수단과, 소정의 조건이 성립되었는지의 여부의 판정결과를 보유하는 1개의 조건 플래그와, 상기 해독수단이 제 1 조건을 해독한 경우는, 그 제 1 조건이 성립하는지의 여부를 판정하고, 그 판정결과를 상기 1개의 조건 플래그에 보유시키고, 상기 해독수단이 제 2 조건을 해독한 경우는 그 제 2 조건이 성립하는지의 여부를 판정하고, 그 판정결과를 상기 1개의 조건 플래그에 보유시키는 판정수단과, 상기 해독수단이 조건 성립시 실행명령이 포함하는 연산코드를 해독한 경우는 상기 조건 플래그가 유지하는 판정결과가 성립하는 것을 나타낼 때 그 연산코드가 나타내는 연산을 실행하는 실행수단을 포함하는 구성으로 한다.
이에 의해 본 발명에 관한 프로세서는 조건부 플래그 설정명령과 조건 성립시 실행명령을 명령세트에 할당하여 조건 비성립시 실행명령을 명령세트에 할당하지 않기 때문에, 명령세트의 일부에 할당된 조건 성립시 실행명령은 연산마다 1종류씩이다.
이에 의해 종래의 조건부시 실행명령이 연산마다 10종류씩이며, 종래의 조건 성립시 실행명령이 연산마다 2종류씩인데 비하여, 조건 성립시 실행명령의 연산이 많으면 많을수록 조건 성립시 실행명령의 종류가 적어진다.
따라서 명령해독기의 하드웨어량을 삭감할 수 있고 저가격이 되며, 또한 명령의 종류가 유한한 경우에는 더욱 많은 연산의 조건부 명령을 구비할 수 있으므로 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 더 많이 삭감할 수 있다.
(5) 또한 제 1 조건부 플래그 설정명령 및 제 2 조건부 플래그 설정명령은 2개의 연산대상 a와 b를 지정하며, 상기 제 1 조건부 플래그 설정명령 및 제 2 조건부 플래그 설정명령의 종류의 합계는 "a와 b가 같다", "a와 b가 같지 않다", "a가 b 이상", "a가 b 미만", "a가 b 이하" 및 "a가 b 보다 크다"를 제 1 조건 및 제 2 조건으로서 포함하는 6종류인 구성으로 해도 된다.
이에 의해 본 발명에 관한 프로세서는 6종류의 조건부 플래그 설정명령을 구비하고, 이들 조건은 2개씩이 각각 배타의 관계에 있는 것으로, 조건 비성립시 실행명령을 명령세트에 할당하지 않아도 종래와 같은 처리를 할 수 있다.
따라서 기능을 낮추지 않고 명령의 종류를 삭감할 수 있다.
(6) 또한 상기 해독수단이 해독가능한, 제 1 조건부 플래그 설정명령 및 제 2 조건부 플래그 설정명령의 종류의 합계는, 또한 상기 2개의 연산대상 a와 b를 부호부로 비교한 경우에 있어서, "a가 b 이상", "a가 b 미만", "a가 b 이하" 및"a가 b보다 크다"를 제 1 조건 및 제 2 조건으로서 포함하는 합계 10종류인 구성으로 해도 된다.
이에 의해 본 발명에 관한 프로세서는 10종류의 조건부 플래그 설정명령을 구비하며, 이들 조건은 2개씩이 각각 배타의 관계에 있는 것으로, 조건 비성립시 실행명령을 명령세트에 할당하지 않아도 종래와 같은 처리를 할 수 있다.
따라서 기능을 낮추지 않고 명령의 종류를 삭감할 수 있다.
(7) 또한 조건 성립시 실행명령이 포함하는 연산코드는 전송, 연산, 및, 분기의 어느 하나 또는 전부인 구성으로 해도 된다.
이에 의해 본 발명에 관한 프로세서의 명령세트의 일부에 할당된 조건 성립시 실행명령이 지정하는 연산은 전송, 연산 및 분기의 어느 하나이거나 또는 전부이다.
따라서 전송명령, 연산명령 및 분기명령의 모두에 있어서 조건 성립시 실행명령을 할당할 수 있고, 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 더 많이 삭감할 수 있다.
(8) 상기 목적을 달성하기 위한 본 발명에 관한 명령 변환장치는 조건부 명령을 포함하지 않는 명령열을 조건부 명령을 포함하는 명령열로 변환하는 명령 변환장치로서, 조건부 명령을 포함하지 않는 명령열을 조건부 명령을 포함하는 명령열로 변환하는 명령 변환장치에 있어서, 상기 조건부 명령이란 조건과 연산코드를 포함하며, 프로세서에 이 조건이 성립하는 경우에만 연산코드가 나타내는 연산을 실행시키는 명령이며, 조건부 명령을 포함하지 않는 명령열을 입수하는 입수수단과, 상기 입수수단이 입수한 명령열로부터 소정의 하나의 조건이 성립하는지의 여부에 의해 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열검출수단과, 상기 변환대상 명령열이 나타내는 소정의 조건과, 같은 조건을 포함하는 조건부 명령이 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 판정수단과, 상기 판정수단이 할당되고 있다고 판정한 경우는, 상기 변환대상 명령열을 상기 소정의 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하고, 상기 판정수단이 할당되어 있지 않다고 판정한 경우는 상기 변환대상 명령열에 대하여 상기 다른 전송 대상을 서로 교체하고, 상기 소정의 조건과 배타의 관계에 있는 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하는 변환수단을 포함하는 구성으로 한다.
이 구성에 의하면 본 발명에 관한 명령 변환장치는 전용 프로세서에서 해독가능하지 않는 조건부 명령을 생성하지 않고, 대신에 전용 프로세서로 해독 가능한 조건부 명령을 생성한다.
이에 의해 조건부 명령의 변환수는 같은 채로 그 종류를 삭감할 수 있기때 문에 명령을 할당하기 위한 필드가 적어지게 되어 코드 크기를 삭감할 수 있고, 또한 기능의 저하를 수반하지 않고 전용 프로세서로 해독 가능한 조건부 명령의 종류를 삭감할 수 있다.
따라서 전용 프로세서에서의 명령 해독기의 하드웨어량을 삭감할 수 있고, 또한 명령의 종류가 유한한 경우에는 더욱 많은 연산의 조건부 명령을 구비할 수 있기 때문에, 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 더 많이 삭감할 수 있다.
(9) 또한 상기 판정수단이 할당되어 있지 않다고 판정하는 조건부 명령의 조건과, 배타의 관계에 있는 조건을 포함하는 조건부 명령은 상기 전용 프로세서의 명령세트에 할당되고 있고, 상기 전용 프로세서의 명령세트에 할당되어 있는 어떤 조건부 명령의 조건도 같은 연산을 지정하는 조건부 명령 사이에서 같은 연산을 지정하는 다른 어떤 조건부 명령의 조건과도 배타의 관계에 없는 구성으로 해도 된다.
이에 의해 본 발명에 관한 명령 변환장치는 판정수단이 배타의 관계에 있는 2개의 조건 중, 어느 한쪽의 조건을 지정하는 조건부 명령만이 전용 프로세서의 명령 세트에 할당되어 있다고 판정하기 때문에 다른 조건을 지정하는 조건부 명령을 생성하지 않는다.
(10) 또한 전용 프로세서의 명령세트에 할당되어 있는 동일 연산코드를 포함하는 조건부 명령의 종류는, 소정의 비교명령이 실행된 후에 조건부 명령을 실행하는 경우에서의 상기 소정의 비교명령의 실행결과인 2개의 연산대상 a와 b의 대소관계에 있어서, "a와 b가 같다", "a와 b가 같지 않다"의 어느 한쪽과, "a가 b 이상", "a가 b 미만"의 어느 한쪽과, "a가 b 이하" 및 "a가 b 보다 크다"의 어느 한쪽을 조건으로서 포함하는 3종류인 구성으로 해도 된다.
이에 의해 본 발명에 관한 명령 변환장치는 판정수단이 연산마다 3종류씩 조건부 명령을 전용 프로세서로 해독 가능한 것으로 판정하기 때문에 종래의 6종류에 비해 조건부 명령의 종류가 1/2로 된다.
(11) 또한 상기 전송대상은 수치 상기 기억대상과는 다른 기억대상이 나타내는 수치 및 이들 끼리의 연산결과 중 어느 하나인 구성으로 해도 된다.
이에 의해 조건부 명령이 지정하는 연산이 전송 및 연산의 어느 하나로 된다.
따라서 전송명령 및 연산명령의 모두에 있어서 조건부 명령을 할당할 수 있어, 파이프라인 처리를 행하는 전용 프로세서에 있어서 분기 해저드를 더욱 많이 삭감할 수 있다.
(12) 또한 상기 변환대상 명령열은 차례로 상기 소정의 조건이 성립하는 경우에 3개 후의 명령으로 분기하는 조건 분기명령, 상기 기억대상에 상기 전송 대상을 전송하는 전송명령, 2개 후의 명령으로 점프하는 무조건 분기명령 및 상기 소정의 기억대상으로 상기 소정의 전송대상과 다른 전송대상을 전송하는 전송명령으로 이루어지는 구성으로 해도 된다.
이에 의해 명령열 검출수단이 이러한 명령열을 검출할 수 있다.
(13) 상기 목적을 달성하기 위한 본 발명에 관한 명령 변환장치는 명령열에 포함되는 조건부 명령을 변환하는 명령 변환장치로서, 명령열에 포함되는 조건부 명령을 변환하는 명령 변환장치에 있어서, 상기 조건부 명령이란 조건과 연산코드를 포함하고, 프로세서에 이 조건이 성립하는 경우에만 연산코드가 나타내는 연산을 실행시키는 명령이며, 조건부 명령을 포함하는 명령열을 입수하는 입수수단과, 상기 입수수단이 입수한 명령열에 포함되는 조건부 명령을 검출하는 조건부 명령 검출수단과, 상기 조건부 명령 검출수단이 검출한 조건부 명령이 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 제 1 판정수단과, 상기 제 1 판정수단이 할당되어 있지 않다고 판정한 경우에, 상기 입수수단이 입수한 명령열이 상기 조건부 명령 검출수단이 검출한 조건부 명령이 포함하는 소정의 조건이 성립하는지의 여부에 의해 동일한 기억대상으로 다른 전송대상을 전송하는 변환대상 명령열을 포함하는지의 여부를 판단하는 제 2 판정수단과, 상기 제 2 판정수단이 변환대상 명령열을 포함한다고 판정한 경우는, 그 변환대상 명령열에 대하여 상기 다른 전송대상을 서로 교체하고, 상기 조건부 명령을 상기 소정의 조건과 배타 관계에 있는 조건을 포함하는 조건부 명령으로 변환하는 변환수단을 포함하는 구성으로 한다.
이 구성에 의하면 본 발명에 관한 명령 변환장치는 전용 프로세서로 해독가능하지 않은 조건부 명령을 전용 프로세서로 해독 가능한 조건부 명령에 변환할 수 있다.
이에 의해 종래대로의 수량의 조건부 명령으로 변환하면서 그 종류를 삭감할 수 있으므로, 명령을 할당하기 위한 필드가 적게 되어 코드 크기를 삭감할 수 있고, 또한 기능의 저하를 수반하지 않고 전용 프로세서로 해독 가능한 조건부 명령의 종류를 삭감할 수 있다.
따라서 전용 프로세서에서의 명령 해독기의 하드웨어량을 삭감할 수 있고, 또 명령의 종류가 유한한 경우에 있어서는 더욱 많은 연산의 조건부 명령을 구비할 수 있으므로, 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 더 많이 삭감할 수 있다.
(14) 또한 상기 제 1 판정수단이 할당되어 있지 않다고 판정하는 조건부 명령의 조건과, 배타의 관계에 있는 조건을 포함하는 조건부 명령은 상기 전용 프로세서의 명령세트에 할당되어 있고, 상기 전용 프로세서의 명령세트에 할당되고 있는 어떤 조건부 명령의 조건도 같은 연산을 지정하는 조건부 명령사이에서 같은 연산을 지정하는 다른 어떤 조건부 명령의 조건과도 배타의 관계에 없는 구성으로 해도 된다.
이에 의해 본 발명에 관한 명령 변환장치는 제 1 판정수단이 배타의 관계에 있는 2개의 조건 중 어느 한쪽의 조건을 지정하는 조건부 명령만이 전용 프로세서의 명령세트에 할당되어 있다고 판정하기 때문에 다른 조건을 지정하는 조건부 명령을 생성하지 않는다.
(15) 또한 상기 변환대상 명령열은 차례로 2개의 연산대상을 비교하는 비교명령, 소정의 기억대상으로 소정의 전송대상을 전송하는 전송명령 및 소정의 조건이 성립하는 경우에 상기 소정의 기억대상으로 상기 소정의 전송대상과 다른 전송대상을 전송하는 조건부 명령으로 이루어지는 구성으로 해도 된다.
이에 의해 명령열 검출수단이 이러한 명령열을 검출할 수 있다.
(16) 또한 상기 변환수단은 상기 제 2 판정수단이 변환대상 명령열을 포함하지 않는다고 판정한 경우는 상기 조건부 명령을 포함하는 명령열을 상기 조건부 명령을 포함하지 않는 명령열로 역변환하는 역변환수단을 포함하는 구성으로 해도 된다.
이에 의해 전용 프로세서에서 해독 가능하지 않은 조건부 명령으로서, 전용 프로세서로 해독 가능한 조건부 명령으로 변환할 수 없는 것이 있었다고 해도 원래의 명령열로 되돌릴 수 있다.
따라서 전용 프로세서로 실행가능한 명령열을 생성할 수 있다.
(17) 상기 목적을 달성하기 위한 본 발명에 관한 명령 변환장치는, 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않는 명령열을 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하는 명령열로 변환하는 명령 변환장치에 있어서, 상기 각 조건부 플래그 설정명령은 각각 1개의 조건을 포함하고, 전용 프로세서에 각각의 조건이 성립하는지의 여부를 판단시켜, 그 판단결과를 동일한 1개의 조건 플래그에 보유시키는 명령이며, 상기 각 조건 성립시 실행명령은 각각 연산코드를 포함하고, 전용 프로세서에 상기 조건 플래그가 성립하는 것을 나타내는 경우에만 각각의 연산코드가 나타내는 연산을 실행시키는 명령이며, 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않은 명령열을 입수하는 입수수단과, 상기 입수수단이 입수한 명령열에서 소정의 하나의 조건이 성립하는지의 여부에 의해서 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열 검출수단과, 상기 변환대상 명령열을 상기 소정의 조건을 포함하는 조건부 플래그 설정명령과, 상기 소정의 조건이 성립했을 때에 전송해야 할 전송대상을 상기 기억대상으로 전송하는 연산을 나타내는 연산코드를 포함하는 조건 성립시 실행명령을 포함하는 명령열로 변환하는 변환수단을 포함하는 구성으로 하고 있다.
이 구성에 의하면 본 발명에 관한 명령 변환장치는 전용 프로세서로 해독 가능한 조건부 플래그 설정명령과 조건 성립시 실행명령을 생성한다.
이에 의해 종래대로의 수량의 조건부 명령으로 변환하면서 그 종류를 삭감할 수 있으므로, 명령을 할당하기 위한 필드가 적게 되어 코드 크기를 삭감할 수 있고, 또한 기능의 저하를 수반하지 않고 전용 프로세서로 해독 가능한 조건부 명령의 종류를 삭감할 수 있다.
따라서 전용 프로세서에서의 명령 해독기의 하드웨어량을 삭감할 수 있고, 또한 명령의 종류가 유한한 경우에는 더욱 많은 연산의 조건 성립시 실행명령을 구비할 수 있으므로, 파이프라인 처리를 행하는 프로세서에 있어서 분기 해저드를 더 많이 삭감할 수 있다.
예를 들면 20개의 연산의 조건 성립시 실행 명령을 구비하는 경우는 조건부 플래그 설정명령 10종류, 조건 성립시 실행명령 20종류(각 조건 성립시 실행명령 1종류×20개의 연산)의 합계 30종류의 명령을 명령세트에 할당하는 것 만으로 된다.
(18) 또한 상기 변환수단이 변환하는 것이 허가된 각 조건부 플래그 설정명령의 조건은 상기 변환수단이 변환하는 것이 허가된 다른 어떤 조건부 플래그 설정명령의 조건과 배타의 관계에 있는 구성으로 해도 된다.
이에 의해 본 발명에 관한 명령 변환장치는 조건 비성립시 실행명령을 생성하는 것 같은 경우에 있어서는, 배타의 관계에 있는 조건을 지시하는 조건부 플래그 설정명령과 조건 성립시 실행명령을 생성하면 충분하기 때문에 조건 비성립시 실행명령을 명령세트에 할당할 필요가 없어진다.
따라서 기능을 낮추지 않고 조건 비성립시 실행명령을 삭제할 수 있다.
(19) 또한 상기 각 조건부 플래그 설정명령은 각각 2개의 연산대상 a와 b를 지정하고, 상기 각 조건부 플래그 설정명령의 종류는, "a와 b가 같다", "a와 b가 같지 않다", "a가 b 이상", "a가 b 미만", "a가 b 보다 크다"및"a가 b 이하"를 조건으로서 포함하는 6종류인 구성으로 해도 된다.
이에 의해 본 발명에 관한 명령 변환장치는 변환수단이 6종류의 조건부 플래그 설정명령을 생성하고, 이들의 조건은 2개씩 각각 배타의 관계에 있는 것으로, 조건 비성립시 실행명령을 명령세트에 할당하지 않아도 종래와 마찬가지의 처리를 할 수 있다.
따라서 기능을 낮추지 않고 명령의 종류를 삭감할 수 있다.
(20) 또한 상기 변환대상 명령열은 차례로 2개의 연산대상을 비교하는 비교명령, 소정의 조건이 성립하는 경우에 3개 후의 명령으로 분기하는 조건 분기명령, 소정의 기억대상으로 소정의 전송 대상을 전송하는 전송명령, 2개 후의 명령으로 점프하는 무조건 분기명령 및 상기 소정의 기억대상으로 상기 소정의 전송 대상과 다른 전송대상을 전송하는 전송명령으로 이루어지는 구성으로 해도 된다.
이에 의해 명령열 검출수단이 이러한 명령열을 검출할 수 있다.
(21) 또한 상기 변환대상 명령열은 차례로 2개의 연산대상을 비교하는 비교명령, 소정의 기억대상으로 소정의 전송대상을 전송하는 전송명령, 소정의 조건이 성립하는 경우에만 상기 소정의 기억대상으로 상기 소정의 전송대상과 다른 전송대상을 전송하는 조건부 명령으로 이루어지는 구성으로 해도 된다.
이에 의해 명령열 검출수단이 이러한 명령열을 검출할 수 있다.
(22) 또한 상기 변환대상 명령열은 차례로 2개의 연산대상을 비교하는 비교명령, 소정의 조건이 성립하지 않는 경우에만 소정의 기억대상으로 소정의 전송대상을 전송하는 조건부 명령, 상기 소정의 조건이 성립하는 경우에만 상기 소정의 기억대상으로 상기 소정의 전송대상과 다른 전송대상을 전송하는 조건부 명령으로 이루어지는 구성으로 해도 된다.
이에 의해 명령열 검출수단이 이러한 명령열을 검출할 수 있다.
(23) 상기 목적을 달성하기 위한 본 발명에 관한 기록매체는, 조건부 명령을 포함하지 않는 명령열을 조건부 명령을 포함하는 명령열로 변환하는 방법을 컴퓨터로 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체에 있어서, 상기 조건부 명령이란 조건과 연산코드를 포함하고, 프로세서에 이 조건이 성립하는 경우에만 이 연산코드가 나타내는 연산을 실행시키는 명령이며, 조건부 명령을 포함하지 않은 명령열을 입수하는 입수단계와, 상기 입수단계에서 입수한 명령열로부터, 소정의 하나의 조건이 성립하는지의 여부에 의해 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열 검출단계와, 상기 변환대상 명령열이 나타내는 소정의 조건과, 같은 조건을 포함하는 조건부 명령이 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 판정단계와, 상기 판정단계에서 할당되어 있다고 판정한 경우는, 상기 변환대상 명령열을 상기 소정의 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하고, 상기 판정단계에서 할당되어 있지 않다고 판정한 경우는, 상기 변환대상 명령열에 대하여 상기 다른 전송대상을 서로 교체하고, 상기 소정의 조건과 배타 관계에 있는 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하는 변환단계를 포함하는 명령변환 프로그램을 기록한 구성으로 하고 있다.
이에 의해 (8)과 동일한 효과를 얻을 수 있다.
(24) 상기 목적을 달성하기 위한 본 발명에 관한 기록매체는, 명령열에 포함되는 조건부 명령을 변환하는 방법을 컴퓨터로 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체에 있어서, 상기 조건부 명령이란 조건과 연산코드를 포함하고, 프로세서에 이 조건이 성립하는 경우에만 이 연산코드가 나타내는 연산을 실행시키는 명령이며, 조건부 명령을 포함하는 명령열을 입수하는 입수단계와, 상기 입수단계에서 입수한 명령열에 포함되는 조건부 명령을 검출하는 조건부 명령 검출단계와, 상기 조건부 명령 검출단계에서 검출한 조건부 명령이 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 제 1 판정단계와, 상기 제 1 판정단계에서 할당되고 있지 않다고 판정한 경우에, 상기 입수단계에서 입수한 명령열이 상기 조건부 명령 검출단계에서 검출한 조건부 명령이 포함하는 소정의 조건이 성립하는지의 여부에 따라 동일한 기억대상에 별개의 전송대상을 전송하는 변환대상 명령열을 포함하는지의 여부를 판단하는 제 2 판정단계와, 상기 제 2 판정단계에서 변환대상 명령열을 포함한다고 판정한 경우는, 그 변환대상 명령열에 대하여 상기 다른 전송대상을 서로 교체하여, 상기 조건부 명령을 상기 소정의 조건과 배타의 관계에 있는 조건을 포함하는 조건부 명령으로 변환하는 변환단계를 포함하는 명령변환 프로그램을 기록한 구성으로 한다.
이에 의해 (13)과 동일한 효과를 얻을 수 있다.
(25) 상기 목적을 달성하기 위한 본 발명에 관한 기록매체는, 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않은 명령열을 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하는 명령열로 변환하는 방법을 컴퓨터로 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체에 있어서, 상기 각 조건부플래그 설정명령은 각각 1개의 조건을 포함하며, 전용 프로세서에 각각의 조건이 성립하는지의 여부를 판단시켜, 그 판단결과를 동일한 1개의 조건 플래그에 보유시키는 명령이며, 상기 각 조건 성립시 실행명령은 각각 연산코드를 포함하고, 전용 프로세서에 상기 조건 플래그가 성립하는 것을 나타내는 경우에만 각각의 연산코드가 나타내는 연산을 실행시키는 명령이며, 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않는 명령열을 입수하는 입수단계와, 상기 입수단계에서 입수한 명령열에서, 소정의 하나의 조건이 성립하는지의 여부에 의해 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열 검출단계와, 상기 변환대상 명령열을 상기 소정의 조건을 포함하는 조건부 플래그 설정명령과, 상기소정의 조건이 성립했을 때에 전송해야 할 전송대상을 상기 기억대상으로 전송하는 연산을 나타내는 연산코드를 포함하는 조건 성립시 실행명령을 포함하는 명령열로 변환하는 변환단계를 포함하는 명령변환 프로그램을 기록한 구성으로 한다.
이에 의해 (17)과 동일한 효과를 얻을 수 있다.
이상과 같이 본 발명의 기술의 실용적 가치는 크다.
상술한 목적 및 기타의 목적과 본 발명의 특징 및 이점은 첨부 도면과 관련한 다음의 상세한 설명을 통해 보다 분명해 질 것이다.
( 실시예 )
도 1은 본 발명의 컴파일러로 생성하는 기계어 명령을 실행하는 본 발명의 프로세서의 구성도이다.
이 프로세서는 연산 플래그 보유수단(101), 명령 해독수단(102), 명령 실행수단(103) 및 명령실행 정지수단(104)을 구비한다.
연산 플래그 보유수단(101)은 명령실행의 상태를 나타내는 연산 플래그를 유지하고, 명령실행의 상태를 나타내는 연산 플래그 상태신호(111)를 출력한다.
명령 해독수단(102)은 기계어 명령을 해독하고, 명령 실행수단 제어신호(112)를 출력한다. 또한 조건부 명령을 해독하면 조건부 명령 지시신호(113)를 출력한다.
명령 실행수단(103)은 명령 해독수단(102)으로부터 출력되는 명령 실행수단 제어신호에 따라 명령을 실행한다.
명령실행 정지수단(104)은 연산 플래그 보유수단(101)이 출력하는 연산 플래그 상태신호(111)와, 명령 해독수단(102)이 출력하는 조건부 명령 지시신호(113)를 입력하고, 조건이 성립하지 않는 경우에는 명령 실행수단(103)에 대하여 명령실행 정지신호(113)를 출력하여 명령실행을 정지하도록 제어한다.
또 이 프로세서는 명령실행 정지수단(104)을 명령실행 수행수단으로 대체하여 명령실행 수행수단이 조건이 성립하고 있는 경우에 명령 실행수단(103)에 대하여 명령 수행신호를 출력하고, 명령을 실행하도록 제어하는 것이어도 되고, 또한 명령실행 정지수단(104)을 구비하는 프로세서와 명령실행 수행수단을 구비하는 프로세서와는 논리가 반전하고 있을 뿐이고 실질적인 동작은 같기 때문에 동등하다고 할 수 있다.
( 제 1 실시예 )
제 1 실시예의 프로세서는 도 31에 도시된 6종류의 조건부 전송명령(3101) 중, 배타의 관계에 있는 1쌍의 조건에 대하여 한쪽을 지정하는 조건부 명령만을 해독하여 실행하고, 다른쪽을 지정하는 조건부 명령은 해독도 실행도 하지 않는다.
구체적으로는 제 1 실시예의 프로세서는 비교명령으로 2개의 연산대상 a와 연산대상 b를 비교한 경우에 있어서, 「a와 b가 같다」및 「a와 b가 같지 않다」의 어느 한쪽을 지정하는 조건부 명령을 해독하여 실행한다.
마찬가지로 제 1 실시예의 프로세서는 「a가 b보다 크다」 및「a가 b 이하」의 어느 한쪽을 지정하는 조건부 명령을 해독하여 실행하고, 「a가 b 미만」 및 「a가 b 이상」의 어느 한쪽을 지정하는 조건부 명령을 해독하여 실행한다.
도 2는 제 1 실시예의 프로세서가 실행할 수 있는 조건부 전송명령의 일람 예시도이다. 이 조건부 전송명령(201)은 3종류이다. 조건(202)은 각각의 조건부 전송명령으로 지정되는 조건을 나타내는 기호이다. 조건은 비교명령으로 2개의 연산대상 a와 연산대상 b를 비교한 경우에 있어서, moveq(203)가「a와 b가 같다」, movgt(204)가「a가 b보다 크다」, movge(205)가「a가 b 이상」이고, 각 조건부 전송명령은 각각의 조건이 성립한 경우에 전송명령을 실행한다.
제 1 실시예에서의 컴파일러는 도 31 중에서 도 2에 도시되지 않는 조건부 전송명령은 생성하지 않고, 도 2에 도시된 조건부 전송명령만을 생성한다.
도 3은 제 1 실시예에서의 컴파일러의 동작을 기술한 흐름도이다.
도 4의 (a), (b)는 이 컴파일러에 입력되는 C언어로 기술된 C 소스 프로그램의 일례도이다.
도 4의 (a)의 C 소스 프로그램은 변수 a와 변수 b를 비교하여, 같으면 c에 1을 대입, 그렇지 않으면 c에 O을 대입하고, 함수 f를 호출하는 것이다.
도 4의 (b)의 C 소스 프로그램은 변수 a와 변수 b를 비교하여, 같지 않다면 c에 1을 대입, 그렇지 않으면 c에 O을 대입하고, 함수 f를 호출하는 것이다.
도 5의 (a), (b)는 각각 제 1 실시예에서의 컴파일러가 도 3에 도시된 흐름도의 단계 S301에서, 도 4의 (a), (b)에 도시된 C 소스 프로그램으로부터 생성한 조건부 전송명령을 포함하지 않은 중간 코드열을 도시한 도면이다. 또 도 5의 (a), (b)는 각각 종래의 컴파일러가 도 4의 (a), (b)에 도시된 C 소스 프로그램을 기계어 명령으로 변환하는 도중에서 생성하는 중간 코드열과 같다.
도 5의 (a)에서 중간코드(501)는 변수 a와 변수 b를 비교하여, 비교결과를 플래그에 반영시키는 코드이고, 중간코드(502)는 변수 a와 변수 b가 같은 경우에 레이블(507)「Lt」로 분기하는 코드이고, 중간코드(503)는 즉치(卽値) 0을 변수 c로 전송하는 코드이고, 중간코드(504)는 레이블(508)「L」로 분기하는 코드이고, 중간코드(505)는 즉치 1을 변수 c로 전송하는 코드이며, 중간코드(506)는 함수 f를 호출하는 코드이다.
도 5의 (b)에 있어서, 중간코드(511)는 변수 a와 변수 b를 비교하여, 비교결과를 플래그에 반영시키는 코드이고, 중간코드(512)는 변수 a와 변수 b가 같지 않은 경우에 레이블(517)「Lt」로 분기하는 코드이고, 중간코드(513)는 즉치 0을 변수 c로 전송하는 코드이고, 중간코드(514)는 레이블(518)「L」로 분기하는 코드이고, 중간코드(515)는 즉치 1을 변수 c로 전송하는 코드이며, 중간코드(516)는 함수 f를 호출하는 코드이다.
도 6의 (a), (b)는 각각 제 1 실시예에서의 컴파일러가 도 3에 도시된 흐름도의 단계 S302∼S118에 따라 도 5의 (a), (b)에 도시된 조건부 전송명령을 포함하지 않은 중간 코드열로부터 생성한 조건부 전송명령을 포함하는 중간 코드열을 도시한 도면이다.
도 6의 (a)에서 중간코드(601)는 변수 a와 변수 b를 비교하여 비교결과를 플래그에 반영시키는 코드이고, 중간코드(602)는 즉치 0을 변수 c로 전송하는 코드이고, 중간코드(603)는 변수 a와 변수 b가 같은 경우에 즉치 1을 변수 c로 전송하는 코드이며, 중간코드(604)는 함수 f를 호출하는 코드이다.
도 6의 (b)에서 중간코드(611)는 변수 a와 변수 b를 비교하여, 비교결과를 플래그에 반영시키는 코드이고, 중간코드(612)는 즉치 1을 변수 c로 전송하는 코드이고, 중간코드(613)는 변수 a와 변수 b가 같은 경우에 즉치 0을 변수 c로 전송하는 코드이며, 중간코드(614)는 함수 f를 호출하는 코드이다.
도 7의 (a), (b)는 각각 제 1 실시예에서의 컴파일러가 도 3에 도시된 흐름도의 단계 S319에서, 도 6의 (a), (b)에 도시된 조건부 전송명령을 포함하는 중간 코드열로부터 생성된 기계어 명령열을 도시한 도면이다. 또 도 7의 (a), (b)는 각각 종래의 컴파일러가 도 6의 (a), (b)에 도시된 바와 같은 조건부 전송명령을 포함하는 중간 코드열로부터 생성하는 기계어 명령열과 동일하다.
도 7의 (a)에서 기계어 명령(701)은 레지스터 r0와 레지스터 r1을 비교하여, 비교결과를 플래그에 반영시키는 명령이고, 기계어 명령(702)은 레지스터 r2에 즉치 0을 전송하는 명령이고, 기계어 명령(703)은 레지스터 r0와 레지스터 r1가 같은 경우에 레지스터 r2에 즉치 1을 전송하는 명령이며, 기계어 명령(704)은 함수 f를 호출하는 명령이다.
도 7의 (b)에서 기계어 명령(711)은 레지스터 r0와 레지스터 r1을 비교하여, 비교결과를 플래그에 반영시키는 명령이고, 기계어 명령(712)은 레지스터 r2에 즉치 1을 전송하는 명령이고, 기계어 명령(713)은 레지스터 r0와 레지스터 r1이 같은 경우에 레지스터 r2에 즉치 0을 전송하는 명령이며, 기계어 명령(714)은 함수 f를 호출하는 명령이다.
이하에, 도 4의 (a)에 도시된 C 소스 프로그램을 제 1 실시예에서의 컴파일러에 입력한 경우의 처리에 대하여 도 3을 이용하여 설명하기로 한다.
(la) 입력된 C 소스 프로그램을 조건부 전송명령을 포함하지 않은 중간 코드열로 변환하고, 변수 n에 초기값 1을 대입한다(단계 S30l). 여기에서는 도 4의 (a)에 도시된 C 소스 프로그램을 도 5의 (a)에 도시된 중간 코드열로 변환한다.
(2a) n번째의 중간코드가 조건 분기를 나타내는 중간코드이면서 분기장소가 n+3번째인지의 여부를 판정한다(단계 S302). 판정이 예(Yes)가 될 때까지 n을 1증가시키면서 반복한다(단계 S302 : 아니오(No), 단계 S314, 단계 S318 : 예). 여기에서는 도 5의 (a)의 중간코드(502)가 조건분기를 도시하는 코드이면서 분기장소가 n+3번째이기 때문에, n=2일 때에 단계 S302의 판정이 예로 되어 단계 S303의 판정으로 진행한다.
(3a) n+1번째의 중간코드가 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S303). 아니오이면 n을 1증가시켜 조건분기를 도시하는 중간코드를 찾아 단계 S302로 되돌아간다(단계 S303 : 아니오, 단계 S314, 단계 S318 : 예). 여기에서는 도 5의 (a)의 중간코드(503)가 전송을 나타내는 중간코드이므로, n+1=3일 때에 단계 S303의 판정이 예로 되어 단계 S304의 판정으로 진행한다.
(4a) n+2번째의 중간코드가 무조건 분기를 도시하는 중간코드이고, 또한 분기장소가 n+4번째인지의 여부를 판정한다(단계 S304). 아니오이면 n을 2증가시켜 조건분기를 나타내는 중간코드를 찾아 단계 S302에 되돌아간다(단계 S304 : 아니오, 단계 S315, 단계 S318 : 예). 여기에서는 도 5의 (a)의 중간코드(504)가 무조건 분기를 도시하는 중간코드이면서 분기장소가 n+4번째이므로, n+2=4일 때에 단계 S304의 판정이 예로 되어 단계 S304의 판정으로 진행한다.
(5a) n+3번째의 중간코드가 n+1번째의 중간코드와 같은 변수로의 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S305). 아니오이면 n을 3증가시켜 조건분기를 나타내는 중간코드를 찾아 단계 S302에 되돌아간다(단계 S305 : 아니오, 단계 S316, 단계 S318 : 예). 여기에서는 도 5의 (a)의 중간코드(505)가 중간코드(503)의 중간코드와 같은 변수로의 전송을 나타내는 중간코드이므로, n+3=5일 때에 단계 S305의 판정이 예로 되어 단계 S306의 판정으로 진행한다.
(6a) n번째의 조건분기를 나타내는 중간코드가 지정하는 조건과 같은 조건을 지정하는 조건부 전송명령을 제 1 실시예의 프로세서가 실행가능한지를 판단한다 (단계 S306). 여기에서는 도 5의 (a)의 중간코드(502)의 조건분기를 나타내는 중간코드가 지정하는 조건이「a와 b가 같다」이고, 이 조건을 지정하는 조건부 전송명령은 도 2에 도시된 바와 같이 제 1 실시예의 프로세서가 실행할 수 있기 때문에 예로 되어 단계 S307의 변환처리로 진행한다.
(7a) n번째의 조건분기를 나타내는 중간코드를 삭제한다(단계 S307).
(8a) n+2번째의 무조건 분기를 나타내는 중간코드를 삭제한다(단계 S308).
(9a) n+3번째의 전송을 나타내는 중간코드를 n번째의 조건분기를 나타내는 중간코드가 지정하는 조건과 같은 조건을 지정하는 조건부 전송명령으로 변경한다 (단계 S309).
(10a) n을 4증가시켜 처리해야 할 중간코드가 아직 남아 있는지의 여부를 판정한다(단계 S317, 단계 S318). 처리해야 할 중간코드가 아직 남아 있는 경우는 단계 S302∼단계 S318을 반복한다. 여기에서는 도 6의 (a)에 도시된 조건부 전송명령을 포함하는 중간 코드열이 생성된다.
(1la) 조건부 전송명령을 포함하는 중간 코드열을 기계어 명령열로 변환한다 (단계 S319). 여기에서는 도 6의 (a)에 도시된 중간 코드열을 도 7의 (a)에 도시된 기계어 명령열로 변환한다.
이하에 도 4의 (b)에 도시된 C 소스 프로그램을 제 1 실시예에서의 컴파일러에 입력한 경우의 처리에 대하여 설명한다.
(lb) 단계 S301에서는 도 4의 (b)에 도시된 C 소스 프로그램을 도 5의 (b) 에 도시된 중간 코드열로 변환한다.
(2b) 단계 S302에서는 도 5의 (b)의 중간코드(5l2)가 조건분기를 나타내는 코드이면서 분기장소가 n+3번째의 중간코드이므로, n=2일 때에 단계 S302의 판정이 예로 되어 단계 S303의 판정으로 진행한다.
(3b) 단계 S303에서는 도 5의 (b)의 중간코드(513)가 전송을 나타내는 중간코드이기 때문에, n+1=3일 때에 단계 S303의 판정이 예로 되어 단계 S304의 판정으로 진행한다.
(4b) 단계 S304에서는 도 5의 (b)의 중간코드(514)가 무조건 분기를 나타내는 중간코드이면서 분기장소가 n+4번째의 중간코드이므로, n+2=4일 때에 단계 S304의 판정이 예로 되어 단계 S304의 판정으로 진행한다.
(5b) 단계 S305에서는 도 5의 (b)의 중간코드(515)가 중간코드(513)의 중간코드와 같은 변수로의 전송을 나타내는 중간코드이므로, n+3=5일 때에 단계 S305의 판정이 예로 되어 단계 S306의 판정으로 진행한다.
(6b) 단계 S306에서는 도 5의 (b)의 중간코드(512)의 조건분기를 나타내는 중간코드가 지정하는 조건이「a와 b가 같지 않다」이고, 이 조건을 지정하는 조건부 전송명령은 도 2에 도시된 바와 같이, 제 1 실시예의 프로세서가 실행할 수 없기때문에 아니오로 되어 단계 S310의 변환처리로 진행한다.
(7b) (7a)와 같다(단계 S310).
(8b) (8a)와 같다(단계 S311).
(9b) n+1번째의 전송을 나타내는 중간코드를 n번째의 조건분기를 나타내는 중간코드가 지정하는 조건과 배타인 조건을 지정하는 조건부 전송명령으로 변경한다(단계 S312).
(10b) n+3번째와 n+1번째의 전송코드를 교체시킨다(단계 S313).
(1lb) (10a)와 같다(단계 S317, 단계 S318). 처리해야 할 중간코드가 아직 남아 있는 경우는 단계 S302∼단계 S318을 반복한다. 여기에서는 도 6의 (b)에 도시된 조건부 전송명령을 포함하는 중간 코드열이 생성된다.
(12b) 단계 S319에서는 도 6의 (b)에 도시된 중간 코드열을 도 7의 (b)에 도시된 기계어 명령열로 변환한다.
이상과 같이 제 1 실시예에서의 컴파일러는 제 1 실시예의 프로세서가 실행할 수 없는 조건부 전송명령은 생성하지 않고, 제 1 실시예의 프로세서가 실행할 수 있는 조건부 전송명령만을 생성한다(S1103).
( 제 2 실시예 )
도 8은 제 2 실시예에서의 컴파일러의 동작을 기술한 흐름도이다.
도 9는 제 2 실시예에서의 컴파일러가 도 8에 도시된 흐름도의 단계 S801이며, 도 4의 (b)에 도시된 C 소스 프로그램으로부터 생성한 조건부 전송명령을 포함하는 중간 코드열을 도시한 도면이다. 또 도 9는 종래의 조건부 전송명령을 생성하는 컴파일러가 도 4의 (b)에 도시된 C 소스 프로그램을 기계어 명령으로 변환하는 도중에서 생성하는 중간 코드열과 동일하다.
도 9에서 중간코드(901)는 변수 a와 변수 b를 비교하여, 비교 결과를 플래그에 반영시키는 코드이고, 중간코드(902)는 즉치 0을 변수 c로 전송하는 코드이고, 중간코드(903)은 변수 a와 변수 b가 같지 않은 경우에 즉치 1을 변수 c로 전송하는 코드이며, 중간코드(904)는 함수 f를 호출하는 코드이다.
여기에서 제 2 실시예의 프로세서가 실행할 수 있는 조건부 전송명령은 제 1 실시예의 프로세서와 마찬가지로 도 2에 도시된 것으로 한다.
이하에, 도 4의 (b)에 도시된 C 소스 프로그램을 제 2 실시예에서의 컴파일러에 입력한 경우의 처리에 대하여 도 8 등을 이용하여 설명한다.
또 도 8에 도시된 각 단계 중 도 3에 도시된 각 단계와 동일 번호로 도시한 것은 각각 같은 처리를 행한다.
(1) 입력된 C 소스 프로그램을 조건부 전송명령을 포함하는 중간 코드열로 변환하고, 변수 n에 초기값 1을 대입한다(단계 S801). 여기에서는 도 4의 (b)에 도시된 C 소스 프로그램을 도 9에 도시된 중간 코드열로 변환한다.
(2) n번째의 중간코드가 조건부 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S802). 판정이 예가 될 때까지 n을 1증가시키면서 반복한다(단계 S802 : 아니오, 단계 S807, 단계 S808 : 예). 여기에서는 도 9의 중간코드(903)가 조건부 전송을 나타내는 중간코드이므로, n=3일 때에 단계 S802의 판정이 예로 되어 단계 S803의 판정으로 진행한다.
(3) n번째의 조건부 전송을 제 2 실시예의 프로세서가 실행가능한지를 판단한다(단계 S803). 여기에서는 도 9의 중간코드(903)의 조건부 전송을 나타내는 중간코드가 지정하는 조건이「a와 b가 같지 않다」이고, 이 조건을 지정하는 조건 분기명령은 도 2에 도시된 바와 같이 제 2 실시예의 프로세서가 실행할 수 없기 때문에 아니오로 되어 단계 S804의 판정으로 진행한다.
(4) n-2번째의 중간코드가 비교를 나타내는 중간코드인지의 여부를 판정한다(단계 S804). 아니오이면 단계 S810의 역변환 처리로 진행하고, 예이면 단계 S805의 판정으로 진행한다. 여기에서는 도 9의 중간코드(901)가 비교를 나타내는 중간코드이므로, n-2=1일 때에 단계 S804의 판정이 예로 되어 단계 S805의 판정으로 진행한다.
(5) n-1번째의 중간코드가 n번째의 조건부 전송을 나타내는 중간코드와 같은 변수로의 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S805). 아니오이면 단계 S810의 조건부 전송의 삭제처리로 진행하고, 예이면 단계 S805의 변환처리로 진행한다. 여기에서는 도 9의 중간코드(902)가 중간코드이며 903의 조건부 전송을 나타내는 중간코드와 같은 변수로의 전송을 나타내는 중간코드이므로, n-1=3일 때에 단계 S805의 판정이 예로 되어 단계 S806의 변환처리로 진행한다.
(6) n번째의 조건부 전송을 나타내는 중간코드의 조건을 배타인 조건으로 변경하고, 또한 n-1번째와 n번째의 중간코드의 전송값을 교환한다(단계 S806). 여기에서는 도 9의 중간코드(903)의 조건부 전송을 나타내는 중간코드가 지정하는 조건「a와 b가 같지 않다(≠)」를 배타인 조건「같다(=)」로 변경한다. 즉 「c= : ne1」을 「c= : eq 1」로 변경한다.
(7) n을 1 증가시키고, 처리해야 할 중간코드가 아직 남아 있는지의 여부를 판정한다(단계 S807, 단계 S808). 처리해야 할 중간코드가 아직 남아 있는 경우는 단계 S802∼단계 S808을 반복한다. 여기에서는, 도 6의 (b)에 도시된 조건부 전송명령을 포함하는 중간 코드열이 생성된다.
(8) 단계 S319에서는 도 6의 (b)에 도시된 중간 코드열을 도 7의 (b)에 도시된 기계어 명령열로 변환한다.
(9) 제 2 실시예의 프로세서가 실행 불가능한 조건부 전송명령으로서, 단계 S806의 변환처리로 변환되지 않는 것은 역변환하여 원래의 중간코드로 되돌린다 (단계 S810). 여기에서는 이 처리는 행해지지 않는다.
이상과 같이 제 2 실시예에서의 컴파일러는 제 2 실시예의 프로세서가 실행할 수 없는 조건부 전송명령을 제 2 실시예의 프로세서가 실행할 수 있는 조건부 전송명령으로 변환한다.
( 제 3 실시예 )
제 3 실시예의 프로세서는 도 31에 도시된 6종류의 조건부 전송명령(3101)과 같은 조건을 지시하는 6종류의 조건 분기명령 중, 배타의 관계에 있는 1쌍의 조건에 대하여 한쪽을 지정하는 조건 분기명령만을 해독하여 실행하고, 다른쪽을 지정하는 조건 분기명령은 해독도 실행도 하지 않는다.
도 10은 제 3 실시예의 프로세서가 실행할 수 있는 조건 분기명령의 일람 예시도이다. 이 조건 분기명령(1001)은 3종류이다. 조건(1002)은 각각의 조건 분기명령으로 지정되는 조건을 나타내는 기호이다. 조건은 비교명령으로 2개의 연산대상 a와 연산대상 b를 비교한 경우에 있어서, beq(l003)가「a와 b가 같다」, bgt(l004)가「a가 b보다 크다」, bge(l005)가「a가 b 이상」이고, 각 조건 분기명령은 각각의 조건이 성립한 경우에 분기를 실행한다. 또한 여기에서는 제 3 실시예의 프로세서는 그 밖의 조건부 명령은 실행할 수 없는 것으로 한다.
도 11은 제 3 실시예에서의 컴파일러의 동작을 기술한 흐름도이다.
도 12는 제 3 실시예에서의 컴파일러가 도 11에 도시된 흐름도의 단계 S302∼S318에 따라 도 5의 (b)에 도시된 제 3 실시예의 프로세서를 해독할 수 없는 중간 코드열로부터 생성한 제 3 실시예의 프로세서가 해독할 수 있는 중간 코드열을 도시한 도면이다.
도 12에서 중간코드(1201)는 변수 a와 변수 b를 비교하여 비교결과를 플래그에 반영시키는 코드이고, 중간코드(1202)는 변수 a와 변수 b가 같은 경우에 레이블(1207)「Lt」로 분기하는 코드이고, 중간코드(1203)는 즉치 1을 변수 c로 전송하는 코드이고, 중간코드(1204)는 레이블(l208)「L」로 분기하는 코드이고, 중간코드(1205)는 즉치 0을 변수 c로 전송하는 코드이며, 중간코드(1206)는 함수 f를 호출하는 코드이다.
도 13은 제 3 실시예에서의 컴파일러가 도 11에 도시된 흐름도의 단계 S319에서, 도 12에 도시된 제 3 실시예의 프로세서를 해독할 수 있는 중간 코드열로부터 생성된 기계어 명령열을 도시한 도면이다. 또 도 13은 종래의 컴파일러가 도 12에 도시된 바와 같은 중간 코드열로부터 생성하는 기계어 명령과 동일하다.
도 13에서 기계어 명령(1301)은 레지스터 r0와 레지스터 r1을 비교하여 비교결과를 플래그에 반영시키는 명령이고, 기계어 명령(1302)은 변수 a와 변수 b가 같은 경우에 레이블(1307)「Lt」로 분기하는 코드이고, 기계어 명령(1303)은 레지스터 r2에 즉치 1을 전송하는 명령이고, 기계어 명령(1304)은 레이블(1308) 「L」로 분기하는 코드이고, 기계어 명령(1305)은 레지스터 r2에 즉치 0을 전송하는 명령이고, 기계어 명령(1306)은 함수 f를 호출하는 명령이다. 이하에 도 4의 (b)에 도시된 C 소스 프로그램을 제 3 실시예에서의 컴파일러에 입력한 경우의 처리에 대하여 도 1l을 이용하여 설명하기로 한다.
또 도 11에 도시된 각 단계 중, 도 3에 도시된 각 단계와 동일번호로 도시한 것은 각각 같은 처리를 한다.
(1)∼(5) 제 1 실시예의 (lb)∼(5b)와 마찬가지이다.
(6) n번째의 조건분기를 도시하는 중간코드가 지정하는 조건과 같은 조건을 지정하는 조건 분기명령을 제 3 실시예의 프로세서가 실행 가능한지를 판단한다. 예인 경우는 변환처리를 하지 않고, 아니오인 경우는 변환처리로 진행한다(단계 S1101). 여기에서는 도 5의 (b)의 중간코드(512)의 조건분기를 나타내는 중간코드가 지정하는 조건이「a와 b가 같지 않다」이고, 이 조건을 지정하는 조건 분기명령은 도 10에 도시된 바와 같이 제 3 실시예의 프로세서가 실행할 수 없으므로 아니오로 되어 단계 S1102의 변환처리로 진행한다.
(7) n번째의 조건분기를 나타내는 중간코드가 지정하는 조건을 배타인 조건으로 변경한다(단계 S1102). 여기에서는, 도 5의 (b)의 중간코드(512)의 조건분기를 나타내는 중간코드가 지정하는 조건「a와 b가 같지 않다(≠)」를 배타인 조건「같다(=)」으로 변경한다. 즉「bne」를 「beq」로 변경한다.
(8) n+3번째와 n+1번째의 전송코드를 교체시킨다(단계 S1103). 여기에서는 5번째의 전송코드「c=0」과 3번째의 전송코드「c=1」을 교체시킨다.
(9) 단계 S317, 단계 S318에서는 도 12에 도시된 제 3 실시예의 프로세서가 실행할 수 있는 중간 코드열이 생성된다.
(10) 단계 S319에서는 도 12에 도시된 중간 코드열을 도 13에 도시된 기계어명령열로 변환한다.
이상과 같이 제 3 실시예에서의 컴파일러는 제 3 실시예의 프로세서가 실행할 수 없는 조건 분기명령을 실행할 수 있는 조건 분기명령으로 변환한다.
( 제 4 실시예 )
도 14는 명령의 종류를 삭감한, 제 4 실시예의 비교명령과 조건부 가산명령과 조건부 전송명령 및 조건 분기명령을 도시한 도면이다.
도 14에 도시된 각 조건부 명령과 조건 분기명령의 조건은 조건 플래그가 세트되어 있는 것 1개뿐이기 때문에, 각 조건부 명령과 조건 분기명령이 1종류씩 존재하고, 또 조건 플래그를 세트/리세트하는 비교명령이 10종류 존재한다.
따라서 비교명령과 2종류의 조건부 명령 및 조건 분기명령의 명령의 종류의 합계는 13종류이다. 여기에서 조건부 명령의 연산수를 A로 하면 비교명령과 각 조건부 명령과 조건 분기명령의 명령의 종류의 합계는 11+A 종류로 된다.
여기에서 비교명령과 조건부 가산명령과 조건부 전송명령과 조건 분기명령의 명령 종류의 합계에 대하여 도 14, 도 32 및 도 33 사이에서 비교하면, 조건부 명령의 연산수 A가 0∼3인 경우의 명령 종류의 합계는 도 33이 가장 적지만, 조건부 명령의 연산수 A가 4인 경우의 명령 종류의 합계는 도 14와 도 33이 모두 15종류로 되고(이 경우, 도 32의 명령 종류의 합계는 51종류), 조건부 명령의 연산수 A가 5종류 이상인 경우의 명령 종류의 합계는 도 14가 가장 적어지고, 조건부 명령의 연산수 A가 증가할수록 이 차이는 넓어진다.
제 4 실시예의 프로세서는 도 14에 도시된 비교명령과 조건부 가산명령과 조건부 전송명령 및 조건 분기명령을 해독하여 실행한다.
도 15는 본 제 4 실시예의 컴파일러의 구성을 도시한 도면이다.
이 컴파일러는 중간코드 생성수단(1501), 대상코드 검출수단(1502), 조건부 명령 변환수단(1503), 중간코드 최적화수단(1504) 및 기계어명령 생성수단(1505)을 구비한다.
도 16은 이 컴파일러에 입력되는 C 언어로 기술된 C 소스 코드(15l1)의 일례를 도시한 도면이다. 도 16의 C 소스 프로그램은 도 4의 (a)와 동일하기 때문에 설명을 생략한다.
중간코드 생성수단(1501)은 C 소스 코드(1511)를 변환하여 제 1 중간코드(1512)를 생성한다. 이 변환은 종래의 컴파일러가 행하는 것과 같으므로 설명은 생략한다.
도 17은 제 1 중간코드(1512)를 도시한 도면이다. 도 17의 제 1 중간코드(1512)는 도 5의 (a)와 동일하기 때문에 설명을 생략하기로 한다.
여기에서는 도 16에 도시하는 C 소스 코드(1511)로부터 도 17에 도시된 제 1 중간코드(1512)를 생성한다.
대상코드 검출수단(1502)은 소정의 조건이 성립하는지의 여부에 의해 소정의 연산을 실행할 것인지의 여부를 결정하는 명령열을 검출한다.
조건부 명령 변환수단(1503)은 대상코드 검출수단(1502)이 검출한 명령열을 조건부 명령으로 변환하고, 제 1 중간코드(1512)로부터 제 2 중간코드(1513)를 생성한다. 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)의 상세한 설명은 후술한다.
도 18은 제 2 중간코드(1513)를 도시한 도면이다.
도 18에서 중간코드(1801) 「a cmpeq b」는 조건부 비교코드이고, 변수 a와 변수 b를 비교하여, 비교결과가 같으면 연산 플래그를 세트하고, 같지 않으면 연산 플래그를 클리어한다. 중간코드(1802)「c=O」은 즉치 0을 변수 c로 전송한다. 중간코드(1803)「c= : true 1」는 조건 성립시 실행코드로, 비교코드에 포함되는 조건이 성립하고 있는(플래그가 세트되어 있는) 경우에만 즉치 1을 변수 c로 전송한다. 중간코드(1804)「jsr f」는 「f」로 지정되는 함수를 호출한다.
여기에서는, 도 17에 도시된 제 1 중간코드(1512)로부터 도 18에 도시된 제 2 중간코드(1513)를 생성한다.
중간코드 최적화수단(1504)은 제 2 중간코드(1513)를 최적화하여 제 3 중간코드(1514)를 생성한다. 이 최적화는 종래의 컴파일러가 행하는 것과 같으므로 설명은 생략한다.
여기에서는, 중간코드 최적화수단(1504)은 도 18에 도시된 제 2 중간코드(1513)가 입력되면 최적화해야 할 코드가 없기 때문에 아무것도 하지 않는다. 따라서 제 3 중간코드(1514)는 도18에 도시된 제 2 중간코드(1513)와 동일하다.
기계어명령 생성수단(1505)은 제 3 중간코드(1514)를 변환하여 기계어명령(1515)을 생성한다. 이 변환은 종래의 컴파일러가 행하는 것과 마찬가지이므로 설명은 생략한다.
도 19는 기계어명령(1515)을 도시한 도면이다.
도 19에서 기계어명령(1901)「cmpeq rO, r1」은 조건부 비교명령이고, 레지스터 rO와 레지스터 r1의 내용을 비교하여, 비교결과가 같으면 연산 플래그를 세트하고, 같지 않으면 연산 플래그를 클리어한다. 기계어명령(1902) 「mov O, r2」는 전송명령으로, 레지스터 r2에 즉치 0을 전송한다. 기계어명령(1903)「movt l, r2」는 조건 성립시 실행명령으로, 비교명령으로 설정한 조건이 성립하고 있는(연산플래그가 세트되어 있는) 경우에만 레지스터 r2에 즉치 1을 전송한다. 중간코드(1904)「jsr f」는「f」로 지정되는 함수를 호출한다.
여기에서는, 도 18에 도시된 제 3 중간코드(1514)로부터 도 19에 도시된 기계어명령(1515)을 생성한다.
도 20은 제 4 실시예에서의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)의 동작을 기술한 흐름도이다.
이하에, 도 17에 도시된 제 1 중간코드(1512)를 제 4 실시예에서의 컴파일러의 대상코드 검출수단(l502)과 조건부 명령 변환수단(1503)에 입력한 경우의 처리에 대하여 도 17을 이용하여 설명하기로 한다.
(1) 제 1 중간코드가 대상코드 검출수단(1502) 및 조건부 명령 변환수단(1503)으로 입력된다. 변수 n에 초기값 1을 대입한다(단계 S2001). 여기에서는 도 17에 도시된 제 1 중간코드를 입수한다.
(2) n번째의 제 1 중간코드가 비교를 나타내는 중간코드인지의 여부를 판정한다(단계 S2002). 판정이 예가 될 때까지 n을 1증가시키면서 반복한다(단계 S2002 : 아니오, 단계 S2011, 단계 S2016 : 예). 여기에서는 도 17의 1번째의 제 1 중간코드가 비교를 나타내는 중간코드이므로, n=1일 때에 단계 S2002의 판정이 예로 되어 단계 S2003의 판정으로 진행한다.
(3) n+1번째의 제 1 중간코드가 조건분기를 도시하는 중간코드이면서 분기장소가 n+4번째인지의 여부를 판정한다(단계 S2003). 아니오이면 n을 1증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2002로 되돌아간다(단계 S2003 : 아니오, 단계 S2011, 단계 S2016 : 예). 여기에서는 도 17의 2번째의 제 1 중간코드가 조건분기를 나타내는 중간코드이면서 분기장소가 n+4번째이므로, n+1=2일 때에 단계 S2003의 판정이 예로 되어 단계 S2004의 판정으로 진행한다.
(4) n+2번째의 제 1 중간코드가 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S2004). 아니오이면 n을 2증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2002에 되돌아간다(단계 S2004 : 아니오, 단계 S2012, 단계 S2016 : 에). 여기에서는, 도 17의 3번째의 제 l 중간코드가 전송을 나타내는 중간코드이므로, n+2=3일 때에 단계 S2004의 판정이 예로 되어 단계 S2005의 판정으로 진행한다.
(5) n+3번째의 제 1 중간코드가 무조건 분기를 나타내는 중간코드이면서 분기장소가 n+5번째인지의 여부를 판정한다(단계 S2005). 아니오이면 n을 3증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2002로 되돌아간다(단계 S2405 : 아니오, 단계 S2013, 단계 S2016 : 예). 여기에서는, 도 l7의 4번째의 제 1 중간코드가 무조건 분기를 나타내는 중간코드이면서 분기장소가 n+5번째이므로, n+3=4일 때에 단계 S2005의 판정이 예로 되어 단계 S2006의 판정으로 진행한다.
(6) n+4번째의 제 1 중간코드가 n+2번째의 제 1 중간코드와 같은 변수로의 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S2006). 아니오이면 n을 4증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2002로 되돌아간다(단계 S2006 : 아니오, 단계 S2014, 단계 S2016 : 예). 여기에서는, 도 17의 5번째의 제 1 중간코드가 3번째의 제 1 중간코드와 같은 변수로의 전송을 나타내는 중간코드이므로, n+4=5일 때에 단계 S2005의 판정이 예로 되어 단계 S2006의 변환처리로 진행한다.
(7) n번째의 비교를 나타내는 중간코드를 n+1번째의 조건분기를 나타내는 중간코드의 조건과 같은 조건을 지정하는 조건부 비교코드로 변경한다(단계 S2007).
(8) n+1번째의 조건 분기를 나타내는 중간코드를 삭제한다(단계 S2008).
(9) n+3번째의 무조건 분기를 나타내는 중간코드를 삭제한다(단계 S2009).
(10) n+4번째의 전송을 나타내는 중간코드를 조건 성립시 실행코드로 변경한다(단계 S2010).
(11) n을 5 증가시켜, 처리해야 할 중간코드가 아직 남아 있는지의 여부를 판정한다(단계 S2015, 단계 S2016). 처리해야 할 중간코드가 아직 남아 있는 경우는 단계 S2002∼단계 S2016을 반복한다. 여기에서는, 도 18에 도시된 제 2 중간코드(1513)가 생성된다.
(12) 조건부 명령 변환수단(1503)이 제 2 중간코드를 출력한다(단계 S2017).
이상과 같이 제 4 실시예에서의 컴파일러는 제 4 실시예의 프로세서가 실행할 수 있는 조건부 비교코드와 조건 성립시 실행코드를 생성한다.
(제 5 실시예)
제 5 실시예의 프로세서는 제 4 실시예와 마찬가지로 도 14에 도시된 비교명령과 조건부 가산명령과 조건부 전송명령 및 조건 분기명령을 해독하여 실행한다.
본 제 5 실시예의 컴파일러는 제 4 실시예와 마찬가지로 도 15와 같은 구성이다.
제 5 실시예에서는 제 4 실시예와의 상위점만 설명하기로 한다.
도 21은 제 1 중간코드(1512)를 도시한 도면이다. 도 21의 제 1 중간코드(1512)는 도 6의 (a)와 동일하기 때문에 설명을 생략한다.
중간코드 생성수단(1501)은 도 16에 도시된 C 소스 코드(151l)로부터 도 21에 도시된 제 1 중간코드(1512)를 생성한다. 이 변환은 종래의 조건부 전송명령을 생성하는 컴파일러가 행하는 것과 같으므로 설명은 생략한다.
대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)은 도 21에 도시된 제 1 중간코드(1512)로부터 도 18에 도시된 제 2 중간코드(1513)를 생성한다.
도 22는 제 5 실시예에서의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)의 동작을 기술한 흐름도이다.
이하에 도 21에 도시된 제 1 중간코드(1512)를 제 5 실시예에서의 컴파일러의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)에 입력한 경우의 처리에 대하여 도 21을 이용하여 설명한다.
(1) 제 1 중간코드가 대상코드 검출수단(1502) 및 조건부 명령 변환수단(1503)으로 입력된다. 수 n에 초기값 1을 대입한다(단계 S2201). 여기에서는, 도 21에 도시된 제 1 중간코드를 입수한다.
(2) n번째의 제 1 중간코드가 비교를 나타내는 중간코드인지의 여부를 판정한다(단계 S2202). 판정이 예가 될 때까지 n을 1증가시키면서 반복한다(단계 S2202 : 아니오, 단계 S2207, 단계 S2210 : 예). 여기에서는, 도 21의 1번째의 제 1 중간코드가 비교를 나타내는 중간코드이므로, n=1일 때에 단계 S2202의 판정이 예로 되어 단계 S2203의 판정으로 진행한다.
(3) n+1번째의 제 1 중간코드가 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S2203). 아니오이면 n을 1증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2202로 되돌아간다(단계 S2203 : 아니오, 단계 S2207, 단계 S2210 : 예). 여기에서는, 도 21의 2번째의 제 1 중간코드가 전송을 나타내는 중간코드이므로, n+1=2일 때에 단계 S2203의 판정이 예로 되어 단계 S2204의 판정으로 진행한다.
(4) n+2번째의 제 1 중간코드가 n+1번째의 제 1 중간코드와 같은 변수로의 조건부 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S2204). 아니오이면 n을 2증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2202로 되돌아간다 (단계 S2204 : 아니오, 단계 S2208, 단계 S2210 : 예). 여기에서는 도 21의 3번째의 제 1 중간코드가 2번째의 제 l 중간코드와 같은 변수로의 조건부 전송을 나타내는 중간코드이므로, n+2=3일 때에 단계 S2204의 판정이 예로 되어 단계 S2205의 변환처리로 진행한다.
(5) n번째의 비교를 나타내는 중간코드를 n+2번째의 조건부 전송을 나타내는 중간코드의 조건과 배타인 조건을 지정하는 조건부 비교코드로 변경한다(단계 S2205).
(6) n+2번째의 조건부 전송을 나타내는 중간코드를 조건 성립시 실행코드로 변경한다(단계 S2206).
(7) n을 3증가시켜 처리해야 할 중간코드가 아직 남아 있는지의 여부를 판정한다(단계 S2209, 단계 S22l0). 처리해야 할 중간코드가 아직 남아 있는 경우는 단계 S2202∼단계 S2210을 반복한다. 여기에서는 도 18에 도시된 제 2 중간코드(1513)가 생성된다.
(8) 조건부 명령 변환수단(1503)이 제 2 중간코드를 출력한다(단계 S2211).
이상과 같이, 제 5 실시예에서의 컴파일러는 제 5 실시예의 프로세서가 실행할 수 있는 조건부 비교코드와 조건 성립시 실행코드를 생성한다.
(제 6 실시예)
제 6 실시예의 프로세서는 제 4, 제 5 실시예와 마찬가지로 도 14에 도시된 비교명령과 조건부 가산명령과 조건부 전송명령 및 조건 분기명령을 해독하여 실행한다.
본 제 6 실시예의 컴파일러는 제 4, 제 5 실시예와 마찬가지로 도 15와 같은 구성이다.
제 6 실시예에서는 제 4 실시예와의 상위점만 설명하기로 한다. 도 23은 제 1 중간코드(1512)를 도시한 도면이다.
도 23에서 중간코드(2301)는 변수 a와 변수 b를 비교하여, 비교결과를 플래그에 반영시키는 코드이고, 중간코드(2302)는 변수 a와 변수 b가 같지 않은 경우에 즉치 0을 변수 c로 전송하는 코드이고, 중간코드(2303)는 변수 a와 변수 b가 같은 경우에 즉치 1을 변수 c로 전송하는 코드이고, 중간코드(2304)는 함수 f를 호출하는 코드이다.
중간코드 생성수단(150l)은 도 16에 도시된 C 소스 코드(1511)로부터 도 23에 도시된 제 1 중간코드(1512)를 생성한다. 이 변환은 종래의 조건부 전송명령을 생성하는 컴파일러가 행하는 것과 같으므로 설명은 생략한다.
대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)은 도 23에 도시된 제 1 중간코드(15l2)로부터 도 18에 도시된 제 2 중간코드(1513)를 생성한다.
도 24는 제 6 실시예에서의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)의 동작을 기술한 흐름도이다.
이하에 도 23에 도시된 제 l 중간코드(1512)를 제 6 실시예에서의 컴파일러의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)에 입력한 경우의 처리에 대하여 도 21을 이용하여 설명한다.
(1) 제 1 중간코드가 대상코드 검출수단(1502) 및 조건부 명령 변환수단(1503)으로 입력된다. 변수 n에 초기값 1을 대입한다(단계 S2401). 여기에서는 도 23에 도시된 제 1 중간코드를 입수한다.
(2) n번째의 제 1 중간코드가 비교를 나타내는 중간코드인지의 여부를 판정한다(단계 S2402). 판정이 예가 될 때까지 n을 1증가시키면서 반복한다(단계 S2402 : 아니오, 단계 S2409, 단계 S2412 : 아니오). 여기에서는 도 23의 1번째의 제 1 중간코드가 비교를 나타내는 중간코드이므로, n=1일 때에 단계 S2402의 판정이 예로 되어 단계 S2403의 판정으로 진행한다.
(3) n+l번째의 제 1 중간코드가 조건부 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S2403). 아니오이면 n을 1증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2402로 되돌아간다(단계 S2403 : 아니오, 단계 S2409, 단계 S2412 : 예). 여기에서는 도 23의 2번째의 제 1 중간코드가 조건부 전송을 나타내는 중간코드이므로, n+1=2일 때에 단계 S2403의 판정이 예로 되어 단계 S2404의 판정으로 진행한다.
(4) n+2번째의 제 1 중간코드가 n+1번째의 제 1 중간코드와 같은 변수로의 조건부 전송을 나타내는 중간코드인지의 여부를 판정한다(단계 S2404). 아니오이면 n을 2증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2402에 되돌아간다 (단계 S2404 : 아니오, 단계 S2410, 단계 S2412 : 예). 여기에서는 도 23의 3번째의 제 1 중간코드가 2번째의 제 1 중간코드와 같은 변수로의 조건부 전송을 나타내는 중간코드이므로, n+2=3일 때에 단계 S2404의 판정이 예로 되어 단계 S2405의 변환처리로 진행한다.
(5) n+2번째의 조건부 전송을 나타내는 중간코드의 조건과, n+1번째의 조건부 전송을 나타내는 중간코드의 조건이 배타인 관계에 있는지의 여부를 판정한다 (단계 S2405). 아니오이면 n을 2증가시켜 비교를 나타내는 제 1 중간코드를 찾아 단계 S2402로 되돌아간다(단계 S2405 : 아니오, 단계 S24l0, 단계 S24l2 : 예). 여기에서는 도 23의 3번째의 조건부 전송을 나타내는 중간코드의 조건과, 2번째의 조건부 전송을 나타내는 중간코드의 조건이 배타인 관계에 있으므로, n+2=3일 때에 단계 S2405의 판정이 예로 되어 단계 S2406의 변환처리로 진행한다.
(6) n번째의 비교를 나타내는 중간코드를 n+2번째의 조건부 전송을 나타내는 중간코드의 조건과 같은 조건을 지정하는 조건부 비교코드로 변경한다(단계 S2406).
(7) n+1번째의 조건부 전송을 나타내는 중간코드를 전송코드로 변경한다(단계 S2407).
(8) n+2번째의 조건부 전송을 나타내는 중간코드를 조건 성립시 실행코드로 변경한다(단계 S2408).
(9) n을 3증가시켜 처리해야 할 중간코드가 아직 남아 있는지의 여부를 판정한다(단계 S2411, 단계 S2412). 처리해야 할 중간코드가 아직 남아 있는 경우는 단계 S2402∼단계 S2412를 반복한다. 여기에서는, 도 18에 도시된 제 2 중간코드(15l3)가 생성된다.
이상과 같이 제 6 실시예에서의 컴파일러는 제 6 실시예의 프로세서가 실행할 수 있는 조건부 비교코드와 조건 성립시 실행코드를 생성한다.
이상, 본 발명에 관한 프로세서 및 컴파일러에 대하여 각 실시예에서 설명하였지만, 본 발명은 이들의 실시예에 한정되지 않음은 물론 이다. 즉,
(l) 본 발명에 관한 컴파일러가 실행하는,
조건부 전송코드를 포함하지 않은 중간코드, 또는 본 발명에 관한 프로세서가 실행 불가능한 조건부 전송코드를 포함하는 중간코드를 본 발명에 관한 프로세서가 실행 가능한 조건부 전송코드를 포함하는 중간코드로 변환하는 처리는 조건부 전송명령을 포함하지 않은 기계어 명령열, 또는 본 발명에 관한 프로세서가 실행 불가능한 조건부 전송명령을 포함하는 기계어 명령열을, 본 발명에 관한 프로세서가 실행 가능한 조건부 전송명령을 포함하는 기계어 명령열로 변환하는 처리이어도 된다.
(2) 각 실시예에서는 전송명령으로 즉치를 전송하였지만, 레지스터나 메모리의 내용 등이어도 된다.
(3) 각 실시예에서는, 주로 전송명령으로부터 조건부 명령 및 조건 성립시 실행명령을 생성하였지만, 전송명령에 한하지 않고 산술연산 명령이나 논리연산 명령이어도 된다. 예를 들면, 제 1 실시예를 가산명령에 적용하여 조건부 가산명령을 포함하는 명령열을 생성하는 경우를 상정한다.
도 25는 제 1 실시예의 프로세서가 실행할 수 있는 조건부 가산명령의 일람 예를 도시한 도면이다. 이 조건부 가산명령(250l)은 3종류이다. 조건(2502)은 각각의 조건부 가산명령으로 지정되는 조건을 나타내는 기호이다. 조건은 비교명령으로 2개의 연산대상 a와 연산대상 b를 비교한 경우에 있어서, addeq(2503)가「a와 b가 같다」, addgt(2504)가「a가 b보다 크다」, addge(2505)가「a가 b 이상」이고, 각 조건부 가산명령은 각각의 조건이 성립한 경우에 가산명령을 실행한다.
도 26은 C 언어로 기술된 C 소스 프로그램의 일례를 도시한 도면이다.
도 27은 도 26에 도시된 C 소스 프로그램으로부터 생성한 조건부 가산명령을 포함하지 않은 중간 코드열을 도시한 도면이다.
도 28은 도 27에 도시된 조건부 가산명령을 포함하지 않은 중간 코드열로부터 생성된 조건부 가산명령을 포함하는 중간 코드열을 도시한 도면이다.
도 29는 각각 도 28에 도시된 조건부 가산명령을 포함하는 중간 코드열로부터 생성된 기계어 명령열을 도시한 도면이다.
제 1 실시예를 조건부 가산명령에 적용한 컴파일러에 의해서, 도 26에 도시된 프로그램은 도 27에 도시된 중간코드로 변환되고, 다음으로 도 28에 도시된 중간코드로 변환되며, 다음으로 도 29에 도시된 조건부 가산명령을 포함하는 명령열이 생성된다.
(4) 제 4 실시예∼제 6 실시예에서는 각 조건부 명령과 조건 분기명령의 조건은「조건 플래그가 세트되어 있다」였지만, 「조건 플래그가 클리어되어 있다」이어도 된다.
상술한 바와 같이 본 발명에 의하면, 조건부 명령을 설치하는 경우에 명령의 종류를 삭감하는 명령 변환장치 및 하드웨어량을 삭감한 프로세서를 얻을 수 있다.
상술한 본 발명의 바람직한 실시예들은 예시의 목적을 위해 개시된 것이며, 당업자라면 첨부된 특허청구의 범위에 개시된 본 발명의 사상과 범위를 통해 각종 수정, 변경, 대체 및 부가가 가능할 것이다.
도 1은 본 발명의 컴파일러에서 생성하는 기계어 명령을 실행하는 본 발명의 프로세서 구성도
도 2는 제 1 실시예의 프로세서가 실행할 수 있는 조건부 전송명령의 일람의 예시도
도 3은 제 1 실시예에서의 컴파일러의 동작을 기술한 흐름도
도 4의 (a), (b)는 C언어로 기술된 C 소스 프로그램의 일례도
도 5의 (a), (b)는 각각 도 4의 (a), (b)에 도시된 C 소스 프로그램으로부터 생성된 조건부 전송명령을 포함하지 않은 중간 코드열을 도시한 도면
도 6의 (a), (b)는 각각 도 5의 (a), (b)에 도시된 조건부 전송명령을 포함하지 않는 중간 코드열로부터 생성된 조건부 전송명령을 포함하는 중간 코드열을 도시한 도면
도 7의 (a), (b)는 각각 도 6의 (a), (b)에 도시된 조건부 전송명령을 포함하는 중간 코드열로부터 생성된 기계어 명령열을 도시한 도면
도 8은 제 2 실시예에서의 컴파일러의 동작을 기술한 흐름도
도 9는 도 4의 (b)에 도시된 C 소스 프로그램으로부터 생성된 조건부 전송명령을 포함하는 중간 코드열을 도시한 도면
도 10은 제 3 실시예의 프로세서가 실행할 수 있는 조건 분기명령의 일람의 예시도
도 11은 제 3 실시예에서의 컴파일러의 동작을 기술한 흐름도
도 12는 도 5의 (b)에 도시된 제 3 실시예의 프로세서를 해독할 수 없는 중간 코드열로부터 생성된 제 3 실시예의 프로세서를 해독할 수 있는 중간 코드열을 도시한 도면
도 13은 도 12에 도시된 제 3 실시예의 프로세서를 해독할 수 있는 중간 코드열로부터 생성된 기계어 명령열을 도시한 도면
도 14는 명령의 종류를 삭감한, 제 4 실시예의 비교명령과 조건부 가산명령과 조건부 전송명령 및 조건 분기명령을 도시한 도면
도 15는 본 제 4 실시예의 컴파일러의 구성도
도 16은 이 컴파일러에 입력되는 C언어로 기술된 C 소스 코드(1511)의 일례도
도 17은 제 1 중간코드(1512)를 도시한 도면
도 l8은 제 2 중간코드(1513)를 도시한 도면
도 19는 기계어 명령(1515)을 도시한 도면
도 20은 제 4 실시예에서의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)의 동작을 기술한 흐름도
도 21은 제 1 중간코드(1512)를 도시한 도면
도 22는 제 5 실시예에서의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)의 동작을 기술한 흐름도
도 23은 제 1 중간코드(1512)를 도시한 도면
도 24는 제 6 실시예에서의 대상코드 검출수단(1502)과 조건부 명령 변환수단(1503)의 동작을 기술한 흐름도
도 25는 제 1 실시예의 프로세서가 실행할 수 있는 조건부 가산명령의 일람의 예를 도시한 도면
도 26은 C언어로 기술된 C 소스 프로그램의 일례도
도 27은 도 26에 도시된 C 소스 프로그램으로부터 생성된 조건부 가산명령을 포함하지 않는 중간 코드열을 도시한 도면
도 28은 도 27에 도시된 조건부 가산명령을 포함하지 않는 중간 코드열로부터 생성된 조건부 가산명령을 포함하는 중간 코드열을 도시한 도면
도 29는 각각 도 28에 도시된 조건부 가산명령을 포함하는 중간 코드열로부터 생성된 기계어 명령열을 도시한 도면
도 30은 종래의 조건부 전송명령을 포함하는 명령열을 도시한 도면
도 31은 종래의 조건부 전송명령의 일람을 도시한 도면
도 32는 종래의 비교명령(CMP 명령)과, 조건이 성립한 경우에 가산명령을 실행하는 조건부 가산명령과, 조건이 성립한 경우에 전송명령을 실행하는 조건부 전송명령과, 조건이 성립한 경우에 분기하는 조건 분기명령을 도시한 도면
도 33은 명령의 종류를 삭감한, 비교명령과 조건부 가산명령과 조건부 전송명령 및 조건 분기명령을 도시한 도면
Claims (30)
- 명령열을 해독하여 명령을 실행하는 프로세서로서,소정의 명령이 실행되었을 때 그 실행결과의 하나의 상태를 보유하는 상태 보유수단과;당해 프로세서의 명령세트에 할당된 명령에 대응하는 명령으로 구성된 명령열을 입수하는 입수수단과;상기 명령세트에 할당된 명령을 해독할 수 있고, 상기 입수수단이 입수한 명령열을 1명령씩 해독하며, 제 1 조건부 명령의 해독에 즈음하여 그 제 1 조건부 명령이 포함하는 제 1 상태조건과 연산코드를 해독하는 해독수단과;상기 상태 보유수단이 보유하는 상태가 상기 해독수단이 해독한 제 l 상태조건이 특정하는 상태에 포함되는지의 여부를 판정하는 판정수단과;상기 판정수단이 포함된다고 판정한 경우에만 상기 해독수단이 해독한 연산코드가 나타내는 연산을 실행하는 실행수단을 포함하며,상기 명령세트의 일부에는 1종류 이상의 조건부 명령이 할당되고,조건부 명령은 상태조건과 연산코드를 포함하는 명령이며,상태조건은 하나 이상의 상태를 특정하고,동일 연산코드를 포함하는 조건부 명령에 있어서, 서로 배타의 관계에 있는 제 1 상태조건과 제 2 상태조건 중, 제 1 상태조건을 포함하는 제 1 조건부 명령이 명령세트의 일부에 할당되어 있고, 제 2 상태조건을 포함하는 제 2 조건부 명령은 명령 세트에 할당되어 있지 않는 것을 특징으로 하는 프로세서.
- (정정)제 1항에 있어서,상기 상태 보유수단은 1종류의 비교명령의 실행결과인 2개의 비교대상 a와 b의 대소 관계를 보유하고 있으며,동일 연산코드를 포함하는 제 1조건부 명령의 종류는,비교명령이 실행된 후에 제 1 조건부 명령을 실행하는 경우에서 "a와 b가 같다" 및 "a와 b가 같지 않다"의 어느 한쪽과, "a가 b 이상" 및 "a가 b 미만"의 어느 한쪽과, "a가 b이하" 및 "a가 b보다 크다"의 어느 한쪽을 제 1 조건으로서 포함하는 3종류인 것을 특징으로 하는 프로세서.
- 제 2항에 있어서,조건부 명령이 포함하는 연산코드는 전송 및 연산 중 어느 하나 또는 양쪽 모두인 것을 특징으로 하는 프로세서.
- (삭제)
- (삭제)
- (삭제)
- (삭제)
- 조건부 명령을 포함하지 않는 명령열을 조건부 명령을 포함하는 명령열로 변환하는 명령 변환장치로서,상기 조건부 명령은, 조건과 연산코드를 포함하며, 프로세서에 이 조건이 성립하는 경우에만 연산코드가 나타내는 연산을 실행시키는 명령이며,조건부 명령을 포함하지 않는 명령열을 입수하는 입수수단과;상기 입수수단이 입수한 명령열로부터 소정의 하나의 조건이 성립하는지의 여부에 의해 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열검출수단과;상기 변환대상 명령열이 나타내는 소정의 조건과, 같은 조건을 포함하는 조건부 명령이, 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 판정수단과;상기 판정수단이 할당되어 있다고 판정한 경우는, 상기 변환대상 명령열을, 상기 소정의 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하고, 상기 판정수단이 할당되어 있지 않다고 판정한 경우는, 상기 변환대상 명령열에 대하여 상기 다른 전송 대상을 서로 교체하여, 상기 소정의 조건과 배타의 관계에 있는 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하는 변환수단을 포함하는 것을 특징으로 하는 명령 변환장치.
- 제 8항에 있어서,상기 판정수단이 할당되어 있지 않다고 판정하는 조건부 명령의 조건과, 배타의 관계에 있는 조건을 포함하는 조건부 명령은, 상기 전용 프로세서의 명령세트에 할당되어 있고,상기 전용 프로세서의 명령세트에 할당되어 있는 어느 조건부 명령의 조건도, 같은 연산을 지정하는 조건부 명령 사이에서, 같은 연산을 지정하는 다른 어느 조건부 명령의 조건과도 배타의 관계에 있지 않는 것을 특징으로 하는 명령 변환장치.
- 제 9항에 있어서,전용 프로세서의 명령세트에 할당되어 있는 동일 연산코드를 포함하는 조건부 명령의 종류는,소정의 비교명령이 실행된 후에 조건부 명령을 실행하는 경우에서의 상기 소정의 비교명령의 실행결과인 2개의 연산대상 a와 b의 대소관계에 있어서, "a와 b가 같다", "a와 b가 같지 않다"의 어느 한쪽과, "a가 b 이상", "a가 b 미만"의 어느 한쪽과, "a가 b 이하" 및 "a가 b 보다 크다"의 어느 한쪽을 조건으로서 포함하는 3종류인 것을 특징으로 하는 명령 변환장치.
- (삭제)
- (삭제)
- 명령열에 포함되는 조건부 명령을 변환하는 명령 변환장치로서,상기 조건부 명령은, 조건과 연산코드를 포함하고, 프로세서에 이 조건이 성립하는 경우에만 연산코드가 나타내는 연산을 실행시키는 명령이며,조건부 명령을 포함하는 명령열을 입수하는 입수수단과;상기 입수수단이 입수한 명령열에 포함되는 조건부 명령을 검출하는 조건부 명령 검출수단과;상기 조건부 명령 검출수단이 검출한 조건부 명령이 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 제 1 판정수단과;상기 제 1 판정수단이 할당되어 있지 않다고 판정한 경우에, 상기 입수수단이 입수한 명령열이 상기 조건부 명령 검출수단이 검출한 조건부 명령이 포함하는 소정의 조건이 성립하는지의 여부에 의해, 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 포함하는지의 여부를 판단하는 제 2 판정수단과;상기 제 2 판정수단이 변환대상 명령열을 포함한다고 판정한 경우는, 그 변환대상 명령열에 대하여 상기 다른 전송대상을 서로 교체하고, 상기 조건부 명령을 상기 소정의 조건과 배타 관계에 있는 조건을 포함하는 조건부 명령으로 변환하는 변환수단을 포함하는 것을 특징으로 하는 명령 변환장치.
- 제 13항에 있어서,상기 제 1 판정수단이 할당되어 있지 않다고 판정하는 조건부 명령의 조건과, 배타의 관계에 있는 조건을 포함하는 조건부 명령은, 상기 전용 프로세서의 명령세트에 할당되어 있고,상기 전용 프로세서의 명령세트에 할당되어 있는 어느 조건부 명령의 조건도 같은 연산을 지정하는 조건부 명령사이에서 같은 연산을 지정하는 다른 어느 조건부 명령의 조건과도 배타의 관계에 있지 않는 것을 특징으로 하는 명령 변환장치.
- 제 14항에 있어서,전용 프로세서의 명령세트에 할당되어 있는 동일 연산코드를 포함하는 조건부 명령의 종류는,소정의 비교명령이 실행된 후에 조건부 명령을 실행하는 경우에서의 상기 소정의 비교명령의 실행결과인 2개의 연산대상 a와 b의 대소관계에 있어서, "a와 b가 같다", "a와 b가 같지 않다"의 어느 한쪽과, "a가 b 이상", "a가 b 미만"의 어느 한쪽과, "a가 b 이하" 및 "a가 b 보다 크다"의 어느 한쪽을 조건으로서 포함하는 3종류인 것을 특징으로 하는 명령 변환장치.
- (삭제)
- (삭제)
- 제 13항에 있어서,상기 변환수단은,상기 제 2 판정수단이 변환대상 명령열을 포함하지 않는다고 판정한 경우는 상기 조건부 명령을 포함하는 명령열을 상기 조건부 명령을 포함하지 않는 명령열로 역변환하는 역변환수단을 포함하는 것을 특징으로 하는 명령 변환장치.
- 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않는 명령열을 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하는 명령열로 변환하는 명령 변환장치로서,상기 각 조건부 플래그 설정명령은, 각각 1개의 조건을 포함하고, 전용 프로세서에 각각의 조건이 성립하는지의 여부를 판단시켜, 그 판단결과를 동일한 1개의 조건 플래그에 보유시키는 명령이고,상기 각 조건 성립시 실행명령은, 각각 연산코드를 포함하고, 전용 프로세서에 상기 조건 플래그가 성립하는 것을 나타내는 경우에만 각각의 연산코드가 나타내는 연산을 실행시키는 명령이며,조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않는 명령열을 입수하는 입수수단과;상기 입수수단이 입수한 명령열에서 소정의 하나의 조건이 성립하는지의 여부에 의해서 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열 검출수단과;상기 변환대상 명령열을, 상기 소정의 조건을 포함하는 조건부 플래그 설정명령과, 상기 소정의 조건이 성립했을 때에 전송해야 할 전송대상을 상기 기억대상으로 전송하는 연산을 나타내는 연산코드를 포함하는 조건 성립시 실행명령을 포함하는 명령열로 변환하는 변환수단을 포함하는 것을 특징으로 하는 명령 변환장치.
- (정정)제 19항에 있어서,상기 변환수단이 변환하는 것이 허가된 조건부 플래그 설정명령은, 그 종류가 우수이고, 2개의 종류로 이루어지는 쌍이 1쌍 이상 있으며, 당해 쌍의 각각은 배타의 관계에 있는 2개의 조건 중 각각 어느 하나를 포함하는 2종류의 조건부 플래그 설정명령으로 이루어지는 것을 특징으로 하는 명령 변환장치.
- 제 20항에 있어서,상기 각 조건부 플래그 설정명령은 각각 2개의 연산대상 a와 b를 지정하고,상기 각 조건부 플래그 설정명령의 종류는,"a와 b가 같다", "a와 b가 같지 않다", "a가 b 이상", "a가 b 미만", "a가 b 보다 크다" 및 "a가 b 이하"를 조건으로서 포함하는 6종류인 것을 특징으로 하는 명령 변환장치.
- (삭제)
- (삭제)
- (삭제)
- (삭제)
- 조건부 명령을 포함하지 않는 명령열을 조건부 명령을 포함하는 명령열로 변환하는 방법을 컴퓨터로 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체로서,상기 조건부 명령은, 조건과 연산코드를 포함하고, 프로세서에 이 조건이 성립하는 경우에만 이 연산코드가 나타내는 연산을 실행시키는 명령이며,조건부 명령을 포함하지 않은 명령열을 입수하는 입수단계와;상기 입수단계에서 입수한 명령열로부터, 소정의 하나의 조건이 성립하는지의 여부에 의해 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열 검출단계와;상기 변환대상 명령열이 나타내는 소정의 조건과, 같은 조건을 포함하는 조건부 명령이 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 판정단계와;상기 판정단계에서 할당되어 있다고 판정한 경우는, 상기 변환대상 명령열을 상기 소정의 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하고, 상기 판정단계에서 할당되어 있지 않다고 판정한 경우는, 상기 변환대상 명령열에 대하여 상기 다른 전송대상을 서로 교체하여, 상기 소정의 조건과 배타 관계에 있는 조건을 포함하는 조건부 명령을 포함하는 명령열로 변환하는 변환단계를 포함하는 명령변환 프로그램을 기록한 것을 특징으로 하는 기록매체.
- 명령열에 포함되는 조건부 명령을 변환하는 방법을 컴퓨터로 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체로서,상기 조건부 명령은, 조건과 연산코드를 포함하고, 프로세서에 이 조건이 성립하는 경우에만 이 연산코드가 나타내는 연산을 실행시키는 명령이며,조건부 명령을 포함하는 명령열을 입수하는 입수단계와;상기 입수단계에서 입수한 명령열에 포함되는 조건부 명령을 검출하는 조건부 명령 검출단계와;상기 조건부 명령 검출단계에서 검출한 조건부 명령이 전용 프로세서의 명령세트에 할당되어 있는지의 여부를 판정하는 제 1 판정단계와;상기 제 1 판정단계에서 할당되고 있지 않다고 판정한 경우에, 상기 입수단계에서 입수한 명령열이 상기 조건부 명령 검출단계에서 검출한 조건부 명령이 포함하는 소정의 조건이 성립하는지의 여부에 따라 동일한 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 포함하는지의 여부를 판단하는 제 2 판정단계와;상기 제 2 판정단계에서 변환대상 명령열을 포함한다고 판정한 경우는, 그 변환대상 명령열에 대하여 상기 다른 전송대상을 서로 교체하여, 상기 조건부 명령을 상기 소정의 조건과 배타의 관계에 있는 조건을 포함하는 조건부 명령으로 변환하는 변환단계를 포함하는 명령변환 프로그램을 기록한 것을 특징으로 하는 기록매체.
- 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않은 명령열을 조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하는 명령열로 변환하는 방법을 컴퓨터로 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체로서,상기 각 조건부 플래그 설정명령은, 각각 1개의 조건을 포함하며, 전용 프로세서에 각각의 조건이 성립하는지의 여부를 판단시켜, 그 판단결과를 동일한 1개의 조건 플래그에 보유시키는 명령이고,상기 각 조건 성립시 실행명령은, 각각 연산코드를 포함하고, 전용 프로세서에 상기 조건 플래그가 성립하는 것을 나타내는 경우에만 각각의 연산코드가 나타내는 연산을 실행시키는 명령이며,조건부 플래그 설정명령과 조건 성립시 실행명령을 포함하지 않는 명령열을 입수하는 입수단계와;상기 입수단계에서 입수한 명령열에서, 소정의 하나의 조건이 성립하는지의 여부에 의해 기억대상에 다른 전송대상을 전송하는 변환대상 명령열을 검출하는 명령열 검출단계와;상기 변환대상 명령열을, 상기 소정의 조건을 포함하는 조건부 플래그 설정명령과, 상기 소정의 조건이 성립했을 때에 전송해야 할 전송대상을 상기 기억대상으로 전송하는 연산을 나타내는 연산코드를 포함하는 조건 성립시 실행명령을 포함하는 명령열로 변환하는 변환단계를 포함하는 명령변환 프로그램을 기록한 것을 특징으로 하는 기록매체.
- (정정)제 1 조건을 갖는 제 1 조건문 및 상기 제 1 조건과 상호 배타적인 제 2 조건을 갖는 제 2 조건문을 이용하여, 고급 언어(high level language)로 기술된 컴퓨터 프로그램을 변환함으로써, 프로세서에 의한 실행을 위한 기계어 명령열을 생성하는 명령 변환장치로서,(i) 상기 컴퓨터 프로그램이 제 1 조건문을 포함하는 경우, 상기 제 1 조건이 충족되면, 상기 컴퓨터 프로그램을, 소정의 처리 동작을 수행하는 제 1 기계어 명령을 포함하는 기계어 명령열로 변환하고, (ii) 상기 컴퓨터 프로그램이 상기 제 2 조건문을 포함하는 경우, 상기 컴퓨터 프로그램을 상기 제 1 기계어 명령을 포함하는 기계어 명령열로 변환하며,상기 프로세서는, 소정의 복수의 기계어 명령만을 해독할 수 있는 해독 수단(102)과, 상기 소정의 처리동작을 실행하는 명령 실행수단(103)을 포함하고,제 1 기계어 명령 및 상기 제 2 조건이 충족되는 경우에 상기 소정의 처리동작을 수행하는 제 2 기계어 명령 중, 상기 제 1 기계어 명령만이 상기 소정의 복수의 명령에 포함되는 것을 특징으로 하는 명령 변환장치.
- (정정)제 1 조건을 갖는 제 1 조건문 및 상기 제 1 조건과 상호 배타적인 제 2 조건을 갖는 제 2 조건문을 이용하여, 고급 언어로 기술된 컴퓨터 프로그램을 프로세서에 의해 실행가능한 포맷으로 변환하는 명령 변환방법으로서,상기 컴퓨터 프로그램이 상기 제 1 조건문을 포함하는 경우, 상기 제 1 조건이 충족되면, 상기 컴퓨터 프로그램을, 소정의 처리 동작을 수행하는 제 1 명령을 포함하는 명령열로 변환하는 단계와;상기 컴퓨터 프로그램이 상기 제 2 조건문을 포함하는 경우, 상기 컴퓨터 프로그램을 상기 제 1 명령을 포함하는 명령열로 변환하는 단계를 포함하는 것을 특징으로 하는 명령 변환방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP???9-234354 | 1997-08-29 | ||
JP234354 | 1997-08-29 | ||
JP???10-95645 | 1998-04-08 | ||
JP09564598A JP3843594B2 (ja) | 1998-04-08 | 1998-04-08 | プロセッサ、コンパイラ及び命令列変換装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990024034A KR19990024034A (ko) | 1999-03-25 |
KR100532743B1 true KR100532743B1 (ko) | 2006-01-27 |
Family
ID=65899477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980035358A KR100532743B1 (ko) | 1997-08-29 | 1998-08-29 | 하드웨어량을삭감한프로세서및명령의종류를삭감하는명령변환장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100532743B1 (ko) |
-
1998
- 1998-08-29 KR KR1019980035358A patent/KR100532743B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19990024034A (ko) | 1999-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4435758A (en) | Method for conditional branch execution in SIMD vector processors | |
US5600810A (en) | Scaleable very long instruction word processor with parallelism matching | |
KR101738941B1 (ko) | 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법 | |
US20200042322A1 (en) | System and method for store instruction fusion in a microprocessor | |
JPH04229326A (ja) | スカラ命令の並列実行を得る方法およびシステム | |
JP2014142969A5 (ko) | ||
CA2037708A1 (en) | General purpose compound apparatus for instruction-level parallel processors | |
JP2005227942A (ja) | プロセッサ及びコンパイラ | |
FR2445555A1 (fr) | Unite centrale d'ordinateur comportant un registre d'extension de code d'operation | |
Ishiura et al. | Instruction code compression for application specific VLIW processors based on automatic field partitioning | |
EP0206276B1 (en) | Method and computer device for handling data conditionally | |
KR101603752B1 (ko) | 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법 | |
EP0899653B1 (en) | Processor with reduced number of conditional instructions | |
CN111061485A (zh) | 任务处理方法、编译器、调度服务器和介质 | |
KR100532743B1 (ko) | 하드웨어량을삭감한프로세서및명령의종류를삭감하는명령변환장치 | |
CN1318957C (zh) | 在程序控制流中实现改变的装置和方法 | |
JP2004062220A (ja) | 情報処理装置、情報処理方法、およびプログラム変換装置 | |
US20140082334A1 (en) | Encoding to Increase Instruction Set Density | |
KR101154077B1 (ko) | 시간 고정형 프로세서 및 그의 제어 방법 | |
KR20100094214A (ko) | Vliw 명령어 생성 장치 및 그 방법과 vliw 명령어를 처리하는 vliw 프로세서 및 그 방법 | |
JP2006520957A (ja) | マルチプロセッサシステムのタイプ変換ユニット | |
US6922773B2 (en) | System and method for encoding constant operands in a wide issue processor | |
JP3737573B2 (ja) | Vliwプロセッサ | |
JP2838939B2 (ja) | 並列命令実行方式 | |
JP2772100B2 (ja) | 並列命令フェッチ機構 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
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: 20111028 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |