KR19980024622A - 프로그램 실행 방법 및 그 방법을 이용한 장치 - Google Patents

프로그램 실행 방법 및 그 방법을 이용한 장치 Download PDF

Info

Publication number
KR19980024622A
KR19980024622A KR1019970047107A KR19970047107A KR19980024622A KR 19980024622 A KR19980024622 A KR 19980024622A KR 1019970047107 A KR1019970047107 A KR 1019970047107A KR 19970047107 A KR19970047107 A KR 19970047107A KR 19980024622 A KR19980024622 A KR 19980024622A
Authority
KR
South Korea
Prior art keywords
data
holding means
flag
zero
data holding
Prior art date
Application number
KR1019970047107A
Other languages
English (en)
Inventor
야스히꼬 고우무라
히로끼 미우라
겐시 마쯔모또
Original Assignee
다까노 야스아끼
상요 덴기 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 다까노 야스아끼, 상요 덴기 가부시끼가이샤 filed Critical 다까노 야스아끼
Publication of KR19980024622A publication Critical patent/KR19980024622A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure

Abstract

분기 지연을 사이클 단위로 감소시켜도, 분기 판정 회로에 크리티컬 버스가 생기기 때문에, 클럭 주파수를 높이기 어려웠다.
레지스터군(26)에는 복수의 범용 레지스터(R0, R1 …)가 있다. 이것들에는 각각 플래그가 병설되어 있다. 예를 들면 범용 레지스터(R0)에 기입해야 할 데이타가 제로인 경우, 그 데이타의 기입과 아울러 그 레지스터의 플래그를 세트한다. 이후, 조건 분기 명령으로 범용 레지스터(R0)의 데이타가 제로인지의 여부를 검사하고자 할 때, 데이타를 판독하여 연산하는 일 없이 플래그를 본다.

Description

프로그램 실행 방법 및 그 방법을 이용한 장치
본 발명은 프로그램 실행 방법 및 장치에 관한 것이다. 본 발명은 특히, 범용 레지스터를 기초로 하는 데이타 보유 수단을 이용하는 프로그램 실행 방법, 및 그 방법을 이용한 프로그램 실행 장치에 관한 것이다. 본 발명은, 일례로서 파이프라인 방식의 마이크로프로세서에 적용할 수 있다.
RISC(Reduced Instruction Set Computer)형의 싱글칩 마이크로프로세서는 각종 용도에 있어서 높은 처리 성능, 낮은 소비 전력 및 작은 실행 면적을 동시에 실현하는 디바이스이다. 이러한 마이크로프로세서는 내부 데이타 처리 방식으로서 파이프라인 방식을 채용하는 경우가 많다. 이 방식에서는 처리를 복수의 스테이지로 나누어, 복수 명령의 처리를 각각 상이한 스테이지에서 동시 진행함으로써, 처리의 고속화를 꾀할 수 있다. 따라서, 파이프라인 처리의 흐름을 흐트러뜨리는 분기 명령의 처리에 대한 배려는, 마이크로프로세서의 설계상, 중요 항목의 하나인 것이 인식되어 있다.
도 3은 종래 일반적인 마이크로프로세서의 파이프라인 처리의 형태를 나타내는 도면이다. 도 3에서 각 클럭에 대응하는 처리가 각각 상이한 스테이지이며, 본 예에서는 5종류의 스테이지를 거쳐 1개 명령의 처리가 완료한다. 여기에서 5종류의 스테이지를 IF, ID, EX, MEM, WB로 표기하고, 각각 명령 페치, 명령 해독(및 레지스터의 판독), 연산, 메모리 억세스, 레지스터군에 대한 필요 데이타의 재기입에 해당하는 것으로 한다.
지금 명령1이 분기 명령이고, 그 명령으로 참조되는 범용 레지스터의 데이타가 제로일 때 분기가 생기는 것으로 한다. 범용 레지스터의 데이타가 제로인지의 여부는 통상 EX 스테이지의 연산으로 판명한다. 이 때문에, 실제로 분기하는 경우, 분기선 어드레스의 명령 메모리에 대한 페치는 명령1의 EX 스테이지(도면 중 사선으로 표시된 부분)의 종료와 동시에 IF 스테이지(도면 중 사선으로 표시한 부분)가 시작되는 명령, 즉 명령4로 된다. 따라서 이 구성에서는 분기 지연이 2사이클이다. 분기 지연이란, 분기 명령을 처리하는 사이클로부터 실제로 분기선의 명령의 처리를 개시하는 사이클 사이에 포함되는 사이클(여기에서는 명령2, 3의 사이클)의 수를 말한다. 이 수가 클수록 분기에 따르는 페널티가 커져서, 고속 처리의 장애가 된다.
「컴퓨터 아키텍쳐 - 설계, 실현, 평가의 정량적 어프로치」(David A. Patterson, John L. Hennessy저, 日經 BP사 발행)의 262∼264페이지에는 상술한 분기 지연을 저감하는 기술이 제안되어 있다. 도 4는 동 문헌에서 논한 가상적인 마이크로프로세서 DLX의 분기 판정 회로를 나타낸다. DLX에서는 레지스터군(2)과 연산부(4) 사이에 레지스터의 데이타가 제로인지의 여부를 판정하는 제로 판정부(6)와, 그 판정 결과를 기초로 분기의 유무를 판정하는 분기 판정부(8)가 마련되어 있다. 분기의 유무는 IF 스테이지를 구성하는 회로에 전달되고, 이어서 페치해야 할 명령 어드레스가 확정된다.
이 구성에서, ID 스테이지에 있어서 레지스터로부터의 데이타 판독이 행해지고, 이 데이타에 대한 연산이 연산부(4)에 의해 EX 스테이지에서 실시된다. 여기까지는 종래와 마찬가지이다. 그러나, 레지스터의 데이타가 제로인지 여부의 판단을 연산부(4)에 맡기지 않고, 제로 판정부(6)에서 행한다. 제로 판정부(6)는 이것을 위한 전용 회로이고, 판정은 ID 스테이지 중에 완료한다. 따라서, EX 스테이지의 종료를 기다리지 않고, ID 스테이지의 종료와 동시에 분기선 어드레스로의 페치를 개시할 수 있다. 도 5는 DLX에서 프로그램이 분기할 때의 파이프라인 처리의 형태를 도시한 도면이고, 명령1의 ID 스테이지(도면 중 사선으로 표시한 부분)가 종료할 때에 IF 스테이지(도면 중 사선으로 표시한 부분)이 시작되는 명령3으로 분기선 어드레스에 대한 처리가 시작된다. 이 때문에, 분기 지연을 1사이클분 줄일 수 있다.
DLX의 분기 지연은 1사이클이고, 통상의 파이프라인 방식의 마이크로프로세서에 있어서, 이것은 최초의 숫자로 생각할 수 있다. 그러나, 분기 지연이 같더라도, 그 회로 구성에 있어서 어디까지 클럭 주파수를 높일 수 있는지는 별개의 과제이다. 분기 지연을 1사이클 단축하여도, 그로 인해 발생하는 크리티컬 버스 때문에 주파수를 10% 낮추어야 한다고 하면 종합 성능은 떨어진다. DLX의 경우, 도 4와 같이 제로 판정부(6)를 ID 스테이지에 마련하고 있지만, 이 회로는 32비트를 입력하여 그것들 모두가 제로인 것을 판정하기 때문에, 당연히 지연이 문제가 된다. ID 스테이지 중에 제로 판정 및 분기 판정을 완료하도록 하면, 최고 클럭 주파수는 낮추지 않을 수 없다.
본 발명은 이점을 감안하여 이루어진 것으로, 그 목적은 분기 지연을 최소로 한정할 뿐만 아니라, 클럭 주파수의 상한도 높일 수 있는 프로그램 실행 방법 및 장치를 제공하는 것이다.
이 목적을 달성하기 위하여, 본 발명의 프로그램 실행 방법은 데이타 보유 수단에 데이타를 저장할 때, 그 데이타가 소정치인지의 여부도 더불어 기록하여 둔다. 이후, 그 데이타 보유 수단에 저장되어 있는 데이타가 소정치인지 여부의 판정이 필요하게 되면, 데이타 보유 수단 대신에 상기 기록의 내용을 참조한다. 여기에서 「소정치」란 용도에 따라서 케이스 바이 케이스로 정해지는 것으로, 예를 들면 「-1과 1」이나 「자연수」와 같이, 복수의 값이라도 좋다.
상술한 바와 같이, 데이타 보유 수단에 저장되어 있는 데이타의 내용을 판정하는 지연이 문제가 된다. 이것을 해결하기 위하여, 데이타가 소정치인지의 여부를 데이타와 함께, 예를 들면 레지스터에 기록하여 둔다. 데이타가 소정치인지 여부의 판정시에, 일일이 데이타 보유 수단내의 데이타로 연산을 행하지 않고, 기록 내용을 참조한다. 이 태양(態樣)에 따르면 판정에 필요한 시간을 단축할 수 있다. 이 때문에, 예를 들면 분기 지연을 저감함과 동시에, 클럭 주파수의 향상이 용이하다.
한편, 본 발명의 프로그램 실행 장치는 데이타 보유 수단에 보유되어 있는 데이타가 소정치일 때에 그 취지를 표시하는 플래그가 그 데이타 보유 수단에 1대1 관계로 마련되어 있다. 이 플래그가 소위 제로 플래그인 경우, 많은 분기 판정에 이용할 수 있다. 데이타 보유 수단은, 예를 들면 범용 레지스터로 좋다. 이 구성에 따르면, 데이타 보유 수단에 저장되는 데이타가 소정치인지의 여부가 플래그의 확인만으로 가능하기 때문에, 처리 성능의 향상이 가능해 진다.
또, 종래의 마이크로프로세서 중에는 컨디션 코드 방식이라 불리는 것이 있고, 그 마이크로프로세서는 연산 결과를 반영하는 제로 플래그 등의 플래그를 갖는다. 그러나, 이 플래그는 직전의 연산 결과를 반영하고 있을 뿐이고, 레지스터와 1대1로 대응하지는 않는다. 그렇기 때문에, 예를 들면 잠시 전에 데이타의 기입이 행해진 레지스터에 대해서는, 그 데이타가 제로인지의 여부는 재차 그 레지스터의 데이타에 대한 연산을 실행하지 않으면 판명되지 않는다. 따라서, 고속 처리에 한계가 있다.
본 발명의 프로그램 실행 장치의 어떤 태양은, 데이타 보유 수단과, 그것에 1대1 관계로 마련된 플래그와, 데이타 보유 수단에 보유된 데이타에 대하여 연산을 실행하는 연산 수단과, 연산 결과 얻어진 데이타가 소정치인지의 여부를 판정하는 판정 수단과, 연산 결과 얻어진 데이타를 상기 데이타 보유 수단에 재기입하는 기입 수단과, 재기입되는 데이타가 소정치인지의 여부에 따라서 상기 플래그의 상태를 변경하는 플래그 변경 수단을 포함한다.
이 구성에 있어서, 연산 수단이 데이타 보유 수단에 보유된 데이타에 대하여 연산을 실행한다. 판정 수단은 연산 결과 얻어진 데이타가 소정치인지의 여부를 판정한다. 한편, 기입 수단은 연산 결과 얻어진 데이타를 필요에 따라서 데이타 보유 수단에 재기입한다. 플래그 변경 수단은 재기입되는 데이타가 소정치인지의 여부에 따라서 상기 플래그의 상태를 변경한다. 이 때문에, 어떤 데이타 보유 수단의 데이타가 소정치인지의 여부는, 그 데이타 보유 수단에 관련하는 플래그를 보면 알 수 있다. 컨디션 코드 방식과 같이 레지스터의 데이타에 대한 연산을 기다릴 필요가 없이, 예를 들면 분기 지연을 저감할 수 있다.
또한 이 구성에서는, 플래그의 변경 여부가 결정된 후 그것을 재생할 때까지의 경로가 크리티컬하지 않기 때문에, 판정 수단은 그다지 고속일 필요가 없다. 즉, 종래의 기술에서 설명한 DLX의 제로 판정부와 같은 크리티컬한 버스가 발생하지 않고, 클럭 주파수를 높일 수 있다.
도 1은 실시 형태에 관한 프로그램 실행 장치인 마이크로프로세서의 내부 구성도.
도 2는 실시 형태의 레지스터군(26)의 구성을 도시한 도면.
도 3은 종래의 일반적인 마이크로프로세서의 파이프라인 처리의 형태를 도시한 도면.
도 4는 가상적인 마이크로프로세서 DLX의 분기 판정 회로를 도시한 도면.
도 5는 DLX에서 프로그램이 분기할 때의 파이프라인 처리의 형태를 도시한 도면.
도면의 주요 부분에 대한 부호의 설명
10 : 명령 페치부
12 : 명령 메모리
14 : 프로그램 카운터
16 : 제1 가산부
18 : 제2 가산부
20 : 어드레스 셀렉터
22 : 명령 디코드부
24 : 분기 판정부
26 : 레지스터군
30 : 연산부
32 : 레지스터 제로 판정부
34 : 연산 결과 레지스터
40 : 메모리 억세스 제어부
42 : 메모리 제로 판정부
44 : 데이타 메모리
50 : 레지스터 기입부
본 발명의 바람직한 실시 형태를 적절히 도면을 참조하면서 설명한다.
[1] 장치의 전체 구성과 동작
도 1은 실시 형태에 관한 프로그램 실행 장치인 마이크로프로세서의 내부 구성도이다. 이 마이크로프로세서는 32비트 타입이고, 5종류의 스테이지 IF, ID, EX, MEM, WB에서 데이타를 처리하는 파이프라인 방식을 채용한다. 회로의 각부는 이들 5개의 스테이지 중 어느 하나에 관련되어 있다.
1. IF 스테이지 관련 회로
명령 페치부(10)는 명령 메모리(12)에 대하여 페치를 위한 어드레스를 제공함과 동시에, 그 판독을 제어한다. 제1 가산부(16)는 다음의 페치 어드레스를 산출하기 위하여 현재의 페치 어드레스에 대하여 명령 바이트 길이인 4를 가산한다. 제2 가산부(18)는 후술하는 프로그램 카운터(14)에 보유되어 있는 어드레스에 대해, 분기시의 오프셋 어드레스(60)를 가산한다. 오프셋 어드레스(60)는 후술하는 명령 디코드부(22)로부터 공급된다. 어드레스 셀렉터(20)는 분기가 없을 때에는 제1 가산부(16)의 출력을, 분기가 있을 때에는 제2 가산부(18)의 출력을 선택하여 출력한다. 분기의 유무는 후술하는 바와 같이 분기 판정부(24)에 의해 판정된다. 어드레스 셀렉터(20)에서 선택된 어드레스는 명령 페치부(10)로 전송되어, 다음의 페치 어드레스로서 이용된다.
2. ID 스테이지 관련 회로
명령 디코드부(22)는 명령 메모리로부터 판독된 명령을 해독한다. 프로그램 카운터(14)는 현재 해독중인 명령의 어드레스를 보유하고 있다. 해독 결과, 분기선 어드레스를 나타내기 위하여, 오프셋 어드레스(60)를 상술한 제2 가산부(18)로 보낸다. 억세스해야 할 레지스터 번호 64 등이 명령 디코드부(22)에서 레지스터군(26)으로 전송된다. 명령 디코드부(22)는 해독된 명령이 분기 명령인지의 여부를 나타내는 식별 신호 62를 분기 판정부(24)로 출력한다.
레지스터군(26)은 본 마이크로프로세서가 작업을 위하여 이용하는 복수의 범용 레지스터를 포함한다. 도 2는 레지스터군(26)의 구성을 도시한 도면이고, 여기에서는 통상의 32비트의 범용 레지스터(R0, R1, R2 …) 외에, 이들 범용 레지스터와 1대1 관계로 병설된 1비트의 플래그이다. 본 실시 형태에서는, 범용 레지스터로부터 데이타가 판독될 때, 대응하는 플래그도 판독된다. 후술하는 바와 같이 각 플래그는, 대응하는 범용 레지스터의 데이타가 제로일 때에 한하여 세트된다.
레지스터군(26)으로부터 판독된 데이타(66) 중, 플래그에 관한 1비트는 분기 판정부(24)로 전송되고, 그 이외의 32비트는 연산부(30) 및 메모리 억세스 제어부(40)로 전송된다. 분기 판정부(24)는 어드레스 셀렉터(20)에 의한 어드레스의 선택을 제어한다. 구체적으로, 분기 판정부(24)는 상기 식별 신호(62)가 분기 명령인 것을 나타내고, 또 상기 플래그가 그 분기 명령으로 분기해야 할 상태에 있을 때, 제2 가산부(18)의 출력이 선택되도록 어드레스 셀렉터(20)에 지시한다. 즉, 어떤 종류의 분기 명령은 플래그가 세트되어 있을 때에 분기를 지시하는 한편, 반대로 플래그가 리셋되어 있을 때에 분기를 지시하는 분기 명령도 있기 때문이다.
3. EX 스테이지 관련 회로
연산부(30)는 레지스터군(26)으로부터 전송된 데이타(66)를 기초로 소정의 연산을 행한다. 그것과 병행하여, 레지스터 제로 판정부(32)가, 연산 결과, 범용 레지스터의 데이타가 제로가 되었는지의 여부를 판정한다. 레지스터 제로 판정부(32)는 32 입력 NOR이거나, 그것과 동등한 논리를 실현하는 회로이다. 연산 결과와 레지스터 제로 판정부(32)의 판정 결과는 33비트 데이타로서 연산 결과 레지스터(34)에 저장된다. 연산 결과 레지스터(34)의 출력은 레지스터 기입부(50)로 전송된다.
레지스터 제로 판정부(32)의 판정 결과는 컨디션 코드 방식의 제로 플래그에 상당하지만, 본 실시 형태에서는 이 결과를 마지막으로, 실제로 데이타가 제로로 된 범용 레지스터의 플래그에 재기입하는 점에 특징이 있다.
4. MEM 스테이지 관련 회로
데이타 메모리(44)는 워크 에리어로서 이용된다. 이 메모리에 대한 억세스는 메모리 억세스 제어부(40)에서 제어된다. 메모리 억세스 제어부(40)에는 레지스터군(26)으로부터 데이타 메모리(44)에 저장해야 할 데이타(68)가 전송된다. 또한, 연산부(30)로부터는 메모리 어드레스(70)가 전송된다.
메모리 제로 판정부(42)는 데이타 메모리(44)로부터 판독된 데이타가 제로인지의 여부를 판정한다. 이 데이타가 범용 레지스터에 로드되는 경우에 플래그가 올바르게 갱신되기 위한 배려이다. 판독된 데이타 및 메모리 제로 판정부(42)의 판정 결과는 33비트 데이타로서 레지스터 기입부(50)로 전송된다.
5. WB 스테이지
레지스터 기입부(50)는 범용 레지스터에 대하여 필요한 데이타를 재기입한다. 그 때의 처리 내용에 따라, 연산 결과 레지스터(34)의 출력, 데이타 메모리(44)로부터의 어느 한쪽이 선택되고, 이것이 범용 레지스터에 재기입된다. 동시에, 그 범용 레지스터의 플래그도 갱신된다.
[2] 플래그와 관련하는 동작
본 실시 형태에 특징적인 플래그와 관련하는 동작을 설명한다.
1. 플래그의 준비
범용 레지스터 사이에서 연산이 행해졌을 때, 그 연산 결과, 범용 레지스터의 데이타가 제로가 되면 그 레지스터에 병설된 플래그가 세트된다. 예를 들면,
SUB R0, R1, R2
가, 「범용 레지스터 R0의 데이타에서 R1의 데이타를 감산하여, 결과를 R2에 저장한다」명령으로 하고, 연산 결과가 제로로 된 것으로 한다. 종래의 컨디션 코드 방식의 마이크로프로세서에서는 이 연산이 종료된 시점에서 제로 플래그가 세트되지만, 그 이후에 제로 플래그를 갱신하는 타입의 명령이 실행되면, 범용 레지스터(R2)의 데이타가 제로인 사실을 나타내는 흔적이 남지 않는다. 본 실시 형태의 경우, 레지스터 제로 판정부(32)에 의해 범용 레지스터(R2)에 저장해야 할 데이타가 제로라고 판정된다. 데이타 「0」 및 판정 결과의 합계 33비트는 레지스터 기입부(50)에서 레지스터군(26)으로 전송되고, 각각 범용 레지스터(R2)의 32비트 데이타 저장 부분과 플래그에 저장된다.
한편, 메모리와 범용 레지스터간의 데이타 전송의 경우는 플래그의 생성 경로가 다르다. 예를 들면,
LD R0, (R1)
이, 「메모리의 R1 번지의 데이타를 범용 레지스터 R0에 로드한다」명령으로 한다. 이 명령을 실행했을 때, 메모리 억세스 제어부(40)에 의해, 데이타 메모리(44)의 R1 번지의 32비트 데이타가 판독된다. 메모리 제로 판정부(42)는 판독된 데이타가 제로인지의 여부를 판정하고, 이것을 레지스터 기입부(50)로 보낸다. 레지스터 기입부(50)로부터 데이타 및 판정 결과가 레지스터군(26)으로 전송되고, 범용 레지스터(R0)의 32비트 데이타 저장 부분 및 그 플래그에 각각 기입된다.
2. 플래그의 참조
실제로 범용 레지스터(R2)의 데이타가 조건 분기 명령으로 참조되는 경우를 생각할 수 있다. 지금,
JPZ R2, (R3)
가 「범용 레지스터 R2의 데이타가 제로이면, 메모리의 R3 번지로 분기한다」 명령일 때, 종래의 일반적인 방법에서는 실제로 범용 레지스터(R2)의 데이타를 판독하고, 이것과 제로를 비교하는 연산이 필요해 진다. 본 실시 형태에서는, 범용 레지스터 R2의 데이타와 동시에 그 플래그가 판독되기 때문에, ID 스테이지의 대단히 빠른 시점에서 분기의 유무가 판명된다. 이 때, 도 4의 DLX의 제로 판정부(6)와 같은 회로는 불필요하며, 결과적으로 높은 클럭 주파수를 채용할 수 있게 된다.
또, 1.에서는 메모리로부터 판독된 데이타에 관한 플래그를 별도로 취급하였지만, 일단 어떤 범용 레지스터의 플래그로서 기입되면, 이후에 그 범용 레지스터의 데이타와 일체가 되어, 이미 출처가 메모리였던 것은 알 필요가 없다.
이상이 본 실시 형태의 내용이다. 본 실시 형태에 대해서는 이하와 같은 변형 기술을 생각할 수 있다.
(1) 본 실시 형태에서는 신설하는 플래그가 범용 레지스터 데이타의 「제로/비(非) 제로」를 나타내었지만, 당연히 다른 예를 생각할 수도 있다. 예를 들면, 데이타가 16비트로 기술 가능한지의 여부, 또는 어떤 특정한 값 A보다 큰지의 여부 등을 나타내도 좋다.
(2) 데이타의 포워딩은 파이프라인 스테이지간에 바이패스를 마련함으로써, 어떤 명령의 소정 스테이지의 결과를 다른 명령의 소정 스테이지에서 조기에 이용하는 기술이다. 본 실시 형태에서는 포워딩에 대하여 다루었지만, 당연히 이 기술을 내장할 수 있다. 예를 들면, 도 1의 A 스테이지∼R 스테이지의 레지스터군(26)의 출력측에 바이패스를 마련함으로써, 본래라면 W 스테이지에서 확정해야 할 플래그가 A 스테이지에서 확정되고, 이것을 직후의 명령의 R 스테이지에서 참조할 수 있다. 이 때문에, 어떤 범용 레지스터에 데이타를 기입하는 명령과, 그 범용 레지스터의 데이타가 소정치라면 분기를 일으키는 분기 명령이 계속될 때라도, 스톨(대기 클럭)없이 분기 명령을 실행할 수 있다.
이상 설명한 바와 같이, 본 발명의 프로그램 실행 방법 및 장치에 따르면, 분기 지연을 최소로 한정할 뿐만 아니라, 클럭 주파수의 상한도 높일 수 있는 프로그램 실행 방법 및 장치를 얻을 수 있다.

Claims (13)

  1. 프로그램을 실행할 때에 이용되는 데이타 보유 수단에 데이타를 저장할 때, 그 데이타가 소정치인지의 여부도 함께 기록하여 두고,
    그 데이타 보유 수단에 저장되어 있는 데이타가 상기 소정치인지 여부의 판정이 필요한 경우에는 그 데이타 보유 수단 대신에 상기 기록의 내용을 참조하는 것을 특징으로 하는 프로그램 실행 방법.
  2. 제1항에 있어서, 상기 소정치는 제로(zero)인 것을 특징으로 하는 프로그램 실행 방법.
  3. 제2항에 있어서, 상기 판정이 필요한 경우는 프로그램 분기의 유무를 판정하는 경우인 것을 특징으로 하는 프로그램 실행 방법.
  4. 제1항에 있어서, 상기 소정치는 제로이고, 상기 판정이 필요한 경우는 프로그램 분기의 유무를 판정하는 경우인 것을 특징으로 하는 프로그램 실행 방법.
  5. 프로그램을 실행할 때 데이타 보유 수단을 이용하는 장치에 있어서,
    그 데이타 보유 수단에 보유되어 있는 데이타가 소정치일 때 그 취지를 표시하는 플래그를 그 데이타 보유 수단에 대하여 1대1의 관계로 설정한 것을 특징으로 하는 프로그램 실행 장치.
  6. 데이타 보유 수단에 보유된 데이타를 참조하여 프로그램 분기의 유무를 판정하는 프로그램 실행 장치에 있어서,
    분기의 판정시에 참조해야 할 플래그를 상기 데이타 보유 수단에 대하여 1대1의 관계로 설정한 것을 특징으로 하는 프로그램 실행 장치.
  7. 프로그램의 실행에 필요한 데이타를 적절하게 보유하는 데이타 보유 수단과,
    그 데이타 보유 수단과 1대1의 관계로 설정된 플래그와,
    데이타 보유 수단에 보유된 데이타에 대하여 연산을 실행하는 연산 수단과,
    연산 결과 얻어진 데이타가 소정치인지의 여부를 판정하는 판정 수단과,
    연산 결과 얻어진 데이타를 상기 데이타 보유 수단에 재기입하는 기입 수단과,
    재기입되는 데이타가 소정치인지의 여부에 따라서 상기 플래그의 상태를 변경하는 플래그 변경 수단
    을 포함하는 것을 특징으로 하는 프로그램 실행 장치.
  8. 제5항에 있어서, 상기 플래그는 상기 데이타 보유 수단에 보유된 데이타가 제로일 때 그 취지를 표시하는 제로 플래그인 것을 특징으로 하는 프로그램 실행 장치.
  9. 제6항에 있어서, 상기 플래그는 상기 데이타 보유 수단에 보유된 데이타가 제로일 때 그 취지를 표시하는 제로 플래그인 것을 특징으로 하는 프로그램 실행 장치.
  10. 제7항에 있어서, 상기 플래그는 상기 데이타 보유 수단에 보유된 데이타가 제로일 때 그 취지를 표시하는 제로 플래그인 것을 특징으로 하는 프로그램 실행 장치.
  11. 제5항에 있어서, 상기 데이타 보유 수단은 상기 장치가 프로그램을 실행할 때 사용하는 범용 레지스터인 것을 특징으로 하는 프로그램 실행 장치.
  12. 제6항에 있어서, 상기 데이타 보유 수단은 상기 장치가 프로그램을 실행할 때 사용하는 범용 레지스터인 것을 특징으로 하는 프로그램 실행 장치.
  13. 제7항에 있어서, 상기 데이타 보유 수단은 상기 장치가 프로그램을 실행할 때 사용하는 범용 레지스터인 것을 특징으로 하는 프로그램 실행 장치.
KR1019970047107A 1996-09-13 1997-09-12 프로그램 실행 방법 및 그 방법을 이용한 장치 KR19980024622A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP96-243884 1996-09-13
JP8243884A JPH1091441A (ja) 1996-09-13 1996-09-13 プログラム実行方法およびその方法を利用した装置

Publications (1)

Publication Number Publication Date
KR19980024622A true KR19980024622A (ko) 1998-07-06

Family

ID=17110426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970047107A KR19980024622A (ko) 1996-09-13 1997-09-12 프로그램 실행 방법 및 그 방법을 이용한 장치

Country Status (7)

Country Link
US (1) US6243806B1 (ko)
JP (1) JPH1091441A (ko)
KR (1) KR19980024622A (ko)
CN (1) CN1144124C (ko)
HK (1) HK1009861A1 (ko)
SG (1) SG54563A1 (ko)
TW (1) TW355770B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005310056A (ja) * 2004-04-26 2005-11-04 Mitsubishi Electric Corp プログラム実行制御方式
US8806183B1 (en) * 2006-02-01 2014-08-12 Ixys Ch Gmbh Blank bit and processor instructions employing the blank bit
GB2447428A (en) * 2007-03-15 2008-09-17 Linear Algebra Technologies Lt Processor having a trivial operand register
JP6183251B2 (ja) * 2014-03-14 2017-08-23 株式会社デンソー 電子制御装置
JP6231041B2 (ja) * 2015-05-15 2017-11-15 株式会社藤商事 遊技機
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS522140A (en) * 1975-06-24 1977-01-08 Hitachi Ltd Information processing apparatus
JPS6476325A (en) * 1987-09-18 1989-03-22 Hitachi Ltd Data processor for executing instruction with guard
JPH0378832A (ja) * 1989-08-23 1991-04-04 Toshiba Corp デ―タ処理装置
US5321820A (en) * 1990-07-13 1994-06-14 Matsushita Electric Industrial Co., Ltd. Processor for executing a conditional branch instruction at a high speed by pre-reading a result flag
JPH06332697A (ja) * 1993-05-06 1994-12-02 Hewlett Packard Co <Hp> データ処理システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053986A (en) * 1990-02-21 1991-10-01 Stardent Computer, Inc. Circuit for preservation of sign information in operations for comparison of the absolute value of operands
JPH0772864B2 (ja) 1990-05-11 1995-08-02 パイオニア株式会社 ディジタル信号プロセッサ
US5440702A (en) * 1992-10-16 1995-08-08 Delco Electronics Corporation Data processing system with condition code architecture for executing single instruction range checking and limiting operations
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
JPH07191831A (ja) * 1993-12-27 1995-07-28 Fujitsu Ltd 演算装置
US5649174A (en) * 1994-12-09 1997-07-15 Vlsi Technology Inc. Microprocessor with instruction-cycle versus clock-frequency mode selection
US5638312A (en) * 1995-03-03 1997-06-10 Hal Computer Systems, Inc. Method and apparatus for generating a zero bit status flag in a microprocessor
US5692146A (en) * 1995-05-26 1997-11-25 National Semiconductor Corporation Method of implementing fast 486TM microprocessor compatible string operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS522140A (en) * 1975-06-24 1977-01-08 Hitachi Ltd Information processing apparatus
JPS6476325A (en) * 1987-09-18 1989-03-22 Hitachi Ltd Data processor for executing instruction with guard
JPH0378832A (ja) * 1989-08-23 1991-04-04 Toshiba Corp デ―タ処理装置
US5321820A (en) * 1990-07-13 1994-06-14 Matsushita Electric Industrial Co., Ltd. Processor for executing a conditional branch instruction at a high speed by pre-reading a result flag
JPH06332697A (ja) * 1993-05-06 1994-12-02 Hewlett Packard Co <Hp> データ処理システム

Also Published As

Publication number Publication date
JPH1091441A (ja) 1998-04-10
CN1144124C (zh) 2004-03-31
US6243806B1 (en) 2001-06-05
SG54563A1 (en) 1998-11-16
HK1009861A1 (en) 1999-06-11
TW355770B (en) 1999-04-11
CN1177137A (zh) 1998-03-25

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US5706459A (en) Processor having a variable number of stages in a pipeline
US7447871B2 (en) Data access program instruction encoding
KR100254008B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서
US4992932A (en) Data processing device with data buffer control
US6851033B2 (en) Memory access prediction in a data processing apparatus
US20040158694A1 (en) Method and apparatus for hazard detection and management in a pipelined digital processor
EP1770507A2 (en) Pipeline processing based on RISC architecture
CN112182999B (zh) 一种基于mips32指令系统的三级流水线cpu设计方法
KR19980024622A (ko) 프로그램 실행 방법 및 그 방법을 이용한 장치
US7631166B1 (en) Processing instruction without operand by inferring related operation and operand address from previous instruction for extended precision computation
US5875323A (en) Processor using implicit register addressing
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set
JP2861560B2 (ja) データ処理装置
JPH0222413B2 (ko)
US20050071830A1 (en) Method and system for processing a sequence of instructions
JP2666737B2 (ja) トレースメモリ内蔵マイクロプロセッサおよびトレース方法
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP2522564B2 (ja) プログラマブルコントロ―ラ
US20040019772A1 (en) Microprocessor
US7281121B2 (en) Pipeline processing device and interrupt processing method
JP2867798B2 (ja) 先行制御装置
JP2856703B2 (ja) プロセッサ
JPH0812601B2 (ja) データ処理装置
JPH05250156A (ja) Riscプロセッサ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application