KR100260353B1 - 2종류의 명령장 코드를 실행하는 프로세서 및 그명령 코드입력 장치 - Google Patents

2종류의 명령장 코드를 실행하는 프로세서 및 그명령 코드입력 장치 Download PDF

Info

Publication number
KR100260353B1
KR100260353B1 KR1019970000490A KR19970000490A KR100260353B1 KR 100260353 B1 KR100260353 B1 KR 100260353B1 KR 1019970000490 A KR1019970000490 A KR 1019970000490A KR 19970000490 A KR19970000490 A KR 19970000490A KR 100260353 B1 KR100260353 B1 KR 100260353B1
Authority
KR
South Korea
Prior art keywords
instruction
command
code
bit
processor
Prior art date
Application number
KR1019970000490A
Other languages
English (en)
Other versions
KR19980023918A (ko
Inventor
수가코 오타니
순이치 이와타
Original Assignee
다니구찌 이찌로오
미쓰비시덴키 가부시키가이샤
기타오카 다카시
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 다니구찌 이찌로오, 미쓰비시덴키 가부시키가이샤, 기타오카 다카시 filed Critical 다니구찌 이찌로오
Publication of KR19980023918A publication Critical patent/KR19980023918A/ko
Application granted granted Critical
Publication of KR100260353B1 publication Critical patent/KR100260353B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

2종류의 명령장코드를 구비한 프로세서에 있어서 코드사이즈의 축소화 및 H/W 량의 삭감화에 의한 고속화를 꾀한다.
2종류의 명령장(16비트, 32비트)의 명령코드를 구비한 프로세서에 있어서 명령 코드의 배치방법을 다음 2종류로 제한한다.
즉 (1) 2개의 16비트장명령코드를 32비트워드경계내로 격납하고, (2)단일의 32비트장명령코드는 그대로 32비트워드경계내에 격납한다.
또, 분기선의 어드레스를 32비트워드 경계에 제한하는 동시에 각 명령코드의 MSB에 1비트의 명령장식별자를 설치하고 명령코드의 실행순서의 제어를 한다.
이에 의해, 프로세서내의 명령훼치부에서 명령디코드부에의 전송경로는 2종류로된다.

Description

2 종류의 명령장 코드를 실행하는 프로세서 및 그 명령 코드입력 장치
본 발명은 복수의 명령코드의 연산을 실행하기 위한 데이터 처리장치에 관한 것이며 구체적으로는 프로세서에 있어서의 명령코드의 배치기술에 관한것이다.
통상 프로세서에 있어서는 명령은 프로세서와 데이터 버스를 통해 연결 되는 메모리에 명령코드로서 격납되어 있다.
이 경우 해당 메모리에 격납되어 있는 명령코드의 포맷에는
① 명령코드의 길이가 명령의 종류에의하지않고서 항상 일정하게 설정되어 있는 고정장포맷」과,
② 명령코드의 길이가 각각 명령의 종류에 의해서 달리하도록 설정되어 있는 가변장 명령포맷」이 있다.
명령코드에는 연산, 전송, 분기등의 명령의 기능을 지정하는 오퍼레이션 코드부분과, 명령의 실행 대상 데이터(오퍼랜드)를 지정하는 오퍼랜드 코드 부분이 있다.
오퍼랜드의 지정은 명령 코드중의 어드레싱 모드의 지정부에서 해당 오퍼랜드가 레지스터내에 격납되어 있는 것인가, 아니면 외부의 메모리내에 격납되어 있는 것인가 그렇치 않으면, 외부의 메모리내에 격납되어있는가를 지정하므로서 행해진다.
그리고 오퍼랜드가 메모리내에 있는 경우에는 또 어드레스정보를 명령코드중에 부가한다. 이하에 고정장포맷 및 가변장 포맷의 명령포맷을 각각 제 18도 및 제 19도에 모식적으로나타낸다.
양도면에 있어서 명령포맷100은 오퍼랜드가 없는 경우를 명령 포맷101은 오퍼랜드가 있는 경우를, 명령포맷102는 오퍼랜드가 없는 경우의 가변장포맷을, 명령포맷103은 오퍼랜드가 있는 경우의 가변장포맷을, 각각 표시하고 있다.
① 명령코드가 고정장 명령포맷의 경우
이 경우에는 명령코드의 디코드가 용이하다고하는 이점이 있다. 그러나, 이 명령포맷에서는 결정된 일정한 명령길이의 범위내에서 오퍼레이션 코드든지 어드레싱 모드의 지정부와 그위에 어드레스 정보등의 부가 정보를 기술하지 않으면 안된다고 하는 제약이 있다.
따라서 보다 많은 부가정보를 기술 하기 위해서는 명령길이를 크게 설정할 필요가 있다.
그 결과 명령길이를 크게한 고정장 명령포맷으로서는 명령비트 패턴에 용장 부분이 증가하여 코드 사이즈가 커진다고 하는 문제점이 생긴다.
한쪽에서는 코드 사이즈를 작게 하기 위해서 명령길이를 작게 설정하면 명령 기능에 대하는 제한이 커진다고 하는 문제점이 생긴다.
② 명령코드가 가변장명령포맷의 경우
이 경우에는 2종류 이상의 가변의 명령길이의 명령포맷이 사용되기 때문에 각각의 명령마다에 응해서 명령기능을 확장할 수 있다고 하는 이점이 있다.
또 오퍼랜드가 없는 명령의 명령길이를 짧게 설정할 수 있기 때문에 고정 길이 명령 포맷의 경우와 비교하여 코드 사이즈를 작게 할수있는 이점이 있다.
그 반면 메모리에서 판독한 데이터를 각 명령코드로서 추출하고 또 명령코드 자신의 각각을 디코드하는 작업이 복잡화하기 때문에 명령 디코드 방법이 복잡하게 된다 하는 문제점이 있다.
이 때문에 메모리의 내용으로부터 명령코드를 추출하여 명령 디코더에 보내기 위한 H/W(하드웨어)가 커진다.
예컨데, 도 20에 나타내는 것과같이 16/32비트 길이 명령포맷105,104를 가변 길이 명령 포맷으로서 도입할 때에는 도 21에 나타내는 것과같이 명령훼치부와 명령디코더의 사이에는 명령코드의 전송 때문에 4개의 경로를 준비할 필요가 있다.
이를 위하여 유효한 명령코드를 시프트하여 적절한 명령코드의 배치하에서 디코드가 실행되도록 복잡한 시프트기능을 명령 디코더에 구비시키지 않으면 안된다.
이상과 같이 ①의 고정장 명령 포맷 및 ②의 가변장명령포맷에는 각각 일장 일단이 있다. 그래서, ① 및②의 각각의 이점을 겸비한 프로세서의 실현이 요망되어 있는 것이다.
본 발명은 상기한 현안 사항을 실현하기 위해서 이루어진 것으로 구체적으로는,
(i) 고정장명령포맷에 비교하여 코드사이즈를 축소화하고, 또
(ii) 종래의 가변장명령포맷에 비교하여 프로세서의 H/W 량을 삭감하여 고속화를 꾀할 수있는 명령포맷을 구비한 프로세서 및 프로세서용의 입력장치를 실현하는 것이 그 주된 목적이다.
또 본 발명은 명령실행중에 발생하는 각 인터럽트(외부인터럽트, PC 브레이크 인터럽트)와 소프트웨어 인터럽트의 기능을 구비한 프로세서를 실현하는 것이 그 부차적목적이다.
또 본 발명은 그와 같은 명령코드를 디코드 하기 위한 프로세서의 구성을 구체화하는 것이 그 부차적목적이다.
제 1의 발명에 관한 2종류의 명령장코드를 실행하는 프로세서는 N(N는 1 이상의 정수)비트장명령을 주는 제 1명령 데이터 신호와 2N 비트장명령을 제공하는 제 2명령데이터신호만 으로 이루워지는 명령코드를 구비하며 상기 제 1 및 제 2 명령 데이터 신호의 명령코드는, (1) 2개의 상기 제 1명령 데이터 신호를 2N 비트장의 워드의 경계내에 격납하며,
(2) 상기 제 2명령 데이터 신호의 각각을 상기 2N 비트워드 경계내에 격납한다는 규칙하에 배치된 명령 코드 입력 수단과 상기 명령 코드 입력 수단을 훼치하여 상기 규칙하에 배치된 상기 명령코드를 유지하는 명령 훼치 수단을 구비하고 있다.
제 2의 발명에 관하는 2종류의 명령장코드를 실행하는 프로세서는 제 1의 발명의 2종류의 명령장코드를 실행하는 프로세서으로서 상기 명령 훼치수단 에서 전송되는 상기 명령코드를 주는 신호를 받아들여, 상기 명령코드에 대하여 분기선어드레스를 상기 2N 비트워드경계에 제한하므로 상기 명령코드를 디코드하는 명령 디코드수단을 더 구비하고 있다.
제 3의 발명에 관한 명령코드 입력장치는 프로세서에 대한 명령코드를 제공하는 명령코드입력장치로서 상기 명령코드는 N(N는 1 이상의 정수)비트장명령을 주는 제 1명령데이터신호와 2N 비트장명령을 주는 제 2명령데이터신호만으로 이루어져 상기 제 1 및 제 2명령 데이터신호의 명령코드를 (1) 2개의 상기 제 1명령데이터신호를 2N비트장의 워드의 경계내에 격납하고 (2) 상기 제 2 명령데이터 신호의 각각을 상기 2N 비트워드경계내에 격납한다는 규칙하에 배치하고 있다.
도 1은 데이터처리장치의 구성을 나타내는 블록도.
도 2는 명령코드의 배치방법을 모식적으로 나타내는 도면.
도 3은 명령코드의 배치방법을 모식적으로 나타내는 도면.
도 4는 명령훼치부와 명령디코드부와의 전송경로를 모식적으로 나타내는 도면.
도 5는 3종류의 명령코드의 배열을 나타내는 도면.
도 6은 명령큐부내의 명령 코드 데이터 신호의 포맷을 나타내는 도면.
도 7은 명령큐부와 명령디코드부와의 전송경로를 모식적으로 나타내는 도면.
도 8은 프로세서의 명령코드표를 나타내는 도면.
도 9는 프로세서의 명령코드표를 나타내는 도면.
도 10은 프로세서의 명령코드표를 나타내는 도면.
도 11은 명령코드의 실행 순서의 제어방법을 나타내는 도면.
도 12는 명령디코드부의 구성의 상세함을 나타내는 블록도.
도 13은 제 1∼제 3제어신호와 명령디코드 입력래치내의 유효코드배치와의 관계를 나타내는 도면.
도 14는 명령디코드부의 제어로직의 제 1∼제 3제어신호와 제 4∼제 6제어신호와의 관계를 나타내는 도면.
도 15는 PC부 및 어드레스 생성기의 구성의 상세함을 나타내는 블록도.
도 16은 인터럽트·트랩 발생시의 처리순서를 나타내는 도면.
도 17은 인터럽트·트랩을 검출하는 회로를 나타내는 블록도.
도 18은 종래의 고정장명령포맷을 나타내는 도면.
도 19는 종래의 가변장명령포맷을 나타내는 도면.
도 20은 종래의 가변장명령포맷의 구체예를 나타내는 도면.
도 21은 종래의 명령훼치부와 명령디코더부간의 전송경로를 나타내는 도면.
도 22는 PC가 하드웨어상에서 실현되어 있는 모양을 나타내는 도면.
도 23은 BPC가 하드웨어상에서 실현되어 있는 모양을 나타내는 도면.
<도면의 주요부분에 대한 부호의 설명>
1 : 연산부 2 : 레지스터
3 : PC부
3a : 프로그램 카운터·브레이크포인터3b : 비교기
3c : 프로그램 카운터부(비트0∼29)3d : 프로그램 카운터부(비트30)
3e : (+1/0)부 3f:백업·프로그램 카운터(비트0∼29)
3g : 백업·프로그램 카운터(비트30)4 : 어드레스생성기
5 : 명령큐부6 : 명령훼치부
7 : 명령디코드부7a : 명령디코드입력래치
7b : 제어로직 7c : 명령디코더
7d : 정수생성기8 : 제어부
10 : 프로세서11 : 주변회로
12 : 메모리13 : 버스인터페이스부
14 : 데이터셀렉터15 : 데이터버스
16 : 인터럽트·트랩검출회로17 : 인터럽트·트랩검출신호
18 : pc브레이크신호19 : 인터럽트요구신호
20 : TRAP요구신호21 : 워드경계검출신호
22 : 인버터23,24 : AND회로
25 : 출력신호
<발명의실시의형태>
실시의형태1
여기서는 N=16으로 한 경우의 일례에 관해서 도면에 근거하여 설명한다.
도 1은 본 발명에 관한 복수의 연산을 실행하는 데이터 처리장치의 구성을 나타내는 블럭도이다.
도 1에 표시하는 것과같이 동장치는 프로세서10를 중핵으로서 구성된다.
프로세서10은 연산부1, 레지스터2, 프로그램 카운터부(이하, PC 부라 칭함)3, 어드레스생성기4, 명령큐(q u e u e)부5, 명령훼치부6, 명령디코드부7 및 제어부8로 구성되어 있다. 이 중 제어부8은 명령디코드부7이 출력하는 디코드결과에 따라서 프로세서10내의 각부1∼7의 동작을 제어한다. 또한 도시의 간략화를 위해 동 도면중에는 제어부8로부터 출력되는 각 제어 신호의 도시화는 생략되어 있다.
또 연산부1은 ALU(산술논리연산기),시프터(shift), Load-Store 유닛 및 승산기(Mu1.)로 이루어진다.
또 레지스터2는 범용레지스터이며 32비트폭으로 16가닥의 신호선을 가져 연산 결과의 데이터 및 어드레스 데이터를 유지한다.
타의 구성성분의 상세한것은 후술한다.
한편 명령큐부5와 명령훼치부6를 총칭하여 명령훼치기능부」라고정의한다.
또 프로세서10과 외부의 주변회로11, 메모리12 및 데이터셀렉터14는 데이터버스15와 버스인터페이스부13에 의해 접속되어 있다.
한편 데이터버스15는 명령코드를 제공하는 명령코드데이터신호를 본프로세서10에 입력하는 입력수단」에 해당한다.
I. 명령코드의 배치방법(명령세트)
다음에 본 발명의 근간을 이루는 명령코드의 배치방법」에 관해서 설명한다.
전술한바와같이 ① 고정장명령포맷 및 ② 가변장명령포맷으로서는 각각 일장일단이 있었다.
특히, ②의 가변장명령포맷에 있어서 16비트장명령코드와 32비트장명령코드의 2종류의 명령코드를 사용하는 경우는 명령 훼치부(내지 명령큐부)와 명령디코드부사이에는 4개의 전송 경로가 필요하다.
이 중 특히 하드웨어의 복잡화라는 심각한 문제점을 야기시키는 요인으로 되어있는 것은32(2N)비트장명령이32(2N)비트경계를 참고 견뎌내어 버리는 것 같은 명령코드의 배치를 허용하고 있는 것에 있다고 생각된다.
이 점을 도 2에 모식적으로표시한다.
지금 명령훼치부가 외부의 메모리에서 동 도면의 상단측에 표시하는바와같은 순서로 배열된 4개의 명령코드106∼109를 훼치한 것으로 이들 중에서 32비트장의 명령코드107 및 108이 데이터 처리에 있어서 유효하다.
이러한 경우에는 동 도면의 하단측에 나타내는 것과같은 배치로서 유효명령코드107,108를 디코드할 필요가 있다.
따라서 동 도면에 표시하는 것과같은 교차한 2개의 경로110,111를 실현할 필요가 생기는 것이다.
이러한 경로가되는 명령코드의 배치를 여기서는 2N 비트명령이 2N비트경계를 넘는 배치」라고호칭하고 있다.
이 때문에에 명령디코더측의 하드웨어가 복잡화되는 것이다.
이러한 요인에 착안하면 그와 같은 명령코드의 배치를 금지할 필요가 있다.
그래서 본 발명으로서는 (i) N(N≥1)비트장의 명령(제 1명령 데이터 신호)와 2N비트장의 명령(제 2명령 데이터 신호)이라고하는 2종류의 명령길이만으로 이루어지는 복수의 명령코드(명령 코드 데이터 신호)를 실행하는 것으로 하고, (ii)명령코드의 배치방법,
즉 2N 비트장로 제공되는 「워드」내(이것을 2N비트장 워드 경계내라 칭함)에 각 명령을 어떻게 배치하느냐하는 점을 이하의 2종류에만 제한하는 것으로 하고 있다.
즉, (1) 2개의 N 비트장 명령을 2N비트 워드 경계내에 격납한다.
(2)단일한 2N비트장 명령을 2N비트 워드경계내에 격납한다.
본 실시예에서는 N=16의 경우를 취급하는 것으로 하고 있기 때문에 16비트장명령과 32비트장명령(최대비트장의 명령)의 2종류만 이루고 명령코드의 배치 방법은 도 3에 나타내는 것과 같다.
이러한 배치제한을 설치하는 것에따라 32비트장명령이 32비트경계를 타 넘는 것과 같은 명령코드의 배치가 완전히 금지되는 것으로되어 그 결과적으로서 제 1도의 명령훼치부6과 명령디코드부7과의 전송경로는 도4 에 나타내는 것과같이 3종류로 삭감된다.
이 3종류의 전송경로는 다음 모식적인 설명 도5 에 의해서 이해할수 있을 것이다.
동 도면에 표시하는 것과같이 명령큐부5내에 유지되어 있는 상태로서는 3종류의 명령코드의 배열이 있을 수 있다.
그 중 동 도면의 상단 및 중단에 표시되는 것은 각각 선행하는 16비트장명령코드 A1 및후행하는 16비트장명령코드 B2만이 유효가 되는 경우이며 어느것이나 상기 배열 방법(1)의 제한하에서 배열되어 있다.
이 중 동 도면의 상단의 경우에는 도4 에 나타내는 경로 RT1를 지나서, 명령코드 A1은 디코더로 전송된다.
또 도5 의 중단의 경우에는 도4 에 나타내는 교차경로 RT3를 지나며 명령코드 B2는 디코더에 전송된다.
한편,제 5도의 하단에 표시되는 32비트장의 명령코드 Cl은 상기 배치 방법(2)에 근거한 제약하에서 배열되어 있는 것이며 도4 에 나타내는 경로RT1, RT2를 지나서 디코더에 전송된다. 따라서 디코드화를 위해서는 3종류의 경로RT1∼RT3만으로서도 된다.
이와 같이 명령코드의 배치를 상기(1),(2)의 제약에 따르게 되어 있으므로 전송경로를 종래의 경우 보다도 1종류분만 삭감하는 것이 가능해지는 것이지만 상기 (1),(2)의 제약을 받아 배치된 명령코드를 제공하는 명령코드 데이터신호는 도1 의 데이터 버스15상의 입력데이터 신호로서 실현되어서 명령큐부5에 유지된다.
그 때문에는 여기서는 상기 제약룰(1),(2)에 근거한 프로그램 제어에 의해서 명령코드의 데이터를 메모리12내에 기록하고 있다.
따라서 상기 제약룰 (1),(2)에 근거한 배치로 기록된 명령코드 데이터신호를 기억하는 매모리12와 상기 배치순서에 따라서 해당 메모리12로부터 판독된 명령코드 데이터신호를 프로세서10내에 입력하는 수단인 데이터버스15」를 프로세서용명령코드입력장치」로서 총칭한다.
한편, 상기 명령코드 데이터신호중 상기 제약(1)에 근거하여 배치된 16비트(일반적으로는 N 비트)장명령코드를 주는 것을 제 1명령코드데이터신호」와, 상기 제약(2)에 근거하여 배치된 32비트(일반적으로는 2N비트)장명령코드를 제공하는 것을 제 2명령코드데이터신호」라고, 각각 호칭한다.
프로세서10의 명령큐부5내의 명령코드 데이터신호의 포맷을 도6 에 표시한다.
동 도면중의 기호 op1, op2는 오퍼랜드 코드를 기호 R1, R2는 레지스터를 기호C는 정수를 기호 cond는 분기조건의 지정을 나타낸다.
한편, 상기 제한 (1),(2)하에서 메모리12에 명령코드의 데이터를 기록하는 대신에 상기 제한과는 무관계하게 명령코드의 데이터를 메모리12내에 기록, 새롭게 데이터 버스15상에 메모리12에서 판독 명령코드 데이터신호를 상기 제한(1),(2)하에서 배치하는 기능부를 설치하여 이 기능부의 출력 데이터를 명령큐부5에 격납 하도록 해도 된다.
II. 분기선의 제어
또, 본 프로세서10에 있어서는 분기선의 어드레스를 32 비트 경계에만 지정 내지 제한한다. 이와 같이 명령코드의 32비트 경계에의 배치를 금지한 것에 덧붙여 분기앞 어드레스를 32 비트경계에만 제한하므로서, 명령 훼치부6과 명령디코더간의 전송경로는 2종류에까지 삭감된다.
이 점은 전술한 도5 로 되돌아 보면 용이하게 이해될 수 있을 것이다.
즉 분기선 어드레스를 32비트 경계에서만 지정할 수 있도록 제한하였다는 것은 도1 의 명령디코드부7로서는 명령 훼치부6에서 출력된 32비트장 워드 경계내에 배치된 명령코드 데이터신호를 받아들인 후는 해당 명령코드 데이터신호를 그 32비트(2N비트)경계에서 디코드를 개시하는 것을 의미한다.
따라서 32비트 워드경계내에 2개의 16비트장명령코드가 배치되어 있는 경우는 선행하는 명령A2을 디코드한 후에 동 도면의 중단의 명령코드 B2를 선행하는 명령코드 A2 가 있는 비트 위치로 시프트한 뒤에 디코드하면 된다.
따라서 명령큐부5로부터 명령디코드부7에의 명령코드데이터 신호의 전송경로는 도7 에 모식적으로 나타내는 것과같이 2종류만 되는 것이다.
즉, 전송경로는
(가)명령큐부: 상위16비트→ 명령디코드부: 상위16비트.
(나)명령큐부: 하위16비트→ 명령디코드부: 하위16비트.
분기 명령의 띄우는곳의 지정은 이하의 형식으로 행해진다. 그 점을 도8, 도9 및 도10 에 나타내는 본 프로세서10에 있어서의 명령코드표에 근거하여 설명한다.
한편 상기 명령코드표에 있어서, Format」속의 dest」는 결과 수납선의 레지스터의 번호를 나타내고 있으며 src」는 연산대상이며 여기서는 도6로 나타낸 레지스터 R1를 의미하며 해당 레지스터 R1 중의 수치가 메모리의 어드레스치로 되어있다.
또, pcdisp 8」은 즉치가 8비트로 제공되고 있는 것을 표시하고 있다.
상기 명령코드표에 있어서,
(a)JMP, JL명령은 명령코드내에서 지정한 레지스터의 값이 분기선 어드레스가된다. (단지, 레지스터의 하위2비트의 값″0″은 무시함).
(b)BRA, BL, BC, BNC 명령은 8비트 또는 24비트의 즉치를 지정한다.
(c)BEQ, BNE, BEQZ, BNEZ, BLTZ, BGEZ, BLEZ, BGTZ 명령은 16비트의 즉치를 지정한다.
상기 (b),(c)에 있어서의 분기선의 어드레스는 (분기명령의 PC 치)+(부호확장된 즉치를 왼쪽으로(최상위비트위치측으로)2비트시프트한 값)으로 한다.
단지, 가산을 할때는 PC 치의 하위2비트는 "00″ 으로 된다.
이상과같이 분기선을 32비트경계에만 지정한 것으로 분기선 어드레스의 하위2비트는 항상″00″ 으로 된다.
따라서 명령코드내에서 분기선 어드레스를 지정하는 경우에는 그 하위 2비트를 지정할 필요가 없어진다.
결과적으로 명령 코드내에서 직접 분기할 수 있는 범위는 22배, 따라서 4배가 된다.
본 실시예의 경우에는 상기 명령코드표에 표시되도록, 명령코드내의 어드레스 지정부는 최대로 24비트 이기 때문에 실행중의 명령의 어드레스로부터 ± 32 MByte의 범위로 직접 분기할 수 있다.
III. 명령의 디코드순서의 제어
또 본 프로세서10에 있어서는 명령코드내에 명령포맷식별자를 제공하는 정보를 소정의 비트수로서 여기서는 1비트로 설치하고 있다.
그리고 이 명령 포맷 식별자의 값 여하에 따라서 명령의 디코드 및 실행 순서를 제어하고 있다.
여기서는 각 명령코드의 MSB(Most Significant Bit)가 명령포맷 식별자에 해당한다.
상기 명령 포맷 식별자를 사용한 제어의 룰은 다음과 같이 설정된다.
즉 단일의 32비트장명령코드의 MSB는 항상 1로 설정되어 있다.
다른쪽 명령코드가 2개의 16비트장명령코드로 이루어지는 경우에는 상위 16비트측에 존재하는 명령코드의 MSB는 항상 0이 된다.
그것에 이어지는 하위16비트측의 명령코드에 대해서는 그 MSB의 값 여하에 따라서 다른 처리를 한다.
명령의 실행순서의 제어방법을 도11 을 사용하여 설명한다.
동 도면에 있어서 ① 명령B」의 MSB가 0의 경우는 명령A」와 명령B 」는 연속하여 실행된다.
그것에 대하여 ② 명령B」의 MSB가 1인 경우는 명령A」만이 실행된다.
명령B는 실행되지 않는다. 즉 32비트장명령의 명령코드 배치의 제약에 기초를 둔 워드얼라인먼트 조정을 위한 명령B로서 워드 얼라인먼트 조정용NOP 명령」을 삽입했을 때에는 어셈블러가 자동적으로 해당 NOP 명령」에 대응하는 명령코드의 MSB를 1로 하여 이에 따라 명령A」만의 실행이 행하여진다.
통상의 무효 연산r NOP 명령」은 ″0111000000000000″로서 제공 되지만, 얼라인먼트라는 상기 목적을 위하여에 NOP 명령」은 32비트 워드 경계내의 하위측16비트 위치에 삽입된 것이고 그것을 직접 실행할 필요도 없다.
따라서, 본프로세서10로서는 NOP 명령」은 ″1111000000000000″로서 제공되며 그 결과 NOP 명령」자체는 실행되지 않는다.
이러한 명령 실행 순서의 제어을 하는 것으로 코드 배치를 충족시키기 위해 삽입된 무효연산인 NOP 명령」의 실행 시간 패널티가 없어진다고 하는 이점를 얻을 수 있다.
V. 명령디코드방법과 그 제어부
이하로서는 명령의 디코드 제어 방법의 구체예를 도12 를 사용하여 설명한다.
(명령디코드부7의 구성)
명령디코드부7은 명령디코드입력 래치7a, 명령디코더7c, 정수 생성기7d 및 명령디코드부7의 제어 로직7b로 구성된다. 이들의 안에서 제어로직7b는 명령디코드부7의 각부의 제어를 주관한다.
또 명령디코더7c는 명령디코드입력 래치7a에 격납된 32비트의 비트 패턴중의 유효한 명령코드를 입력으로서 받아들이고 해당 명령디코더7c는 명령코드를 디코드한다.
한편, 명령디코드입력 래치7a내의 명령코드의 배치는 메모리12상에서의 명령코드의 배치와 동일하다.
디코드 결과는 프로세서10의 제어부8로 출력되고 제어부8은 그 디코드 결과에 근거하여 연산부1이나 프로세서10 전체를 제어한다.
각부에서 상세한 동작은, 다음과 같다.
(명령훼치부6)
우선 명령훼치부6은 데이터버스15(도1)를 통해 메모리12로부터 명령코드데 이터신호를 32비트장단위로 훼치하여 그것들을 명령큐부5에 받아들인다.
또 명령훼치부6은 후술하는 제 5제어신호CB에 따라서 명령큐부5에서 차례로 명령코드데이터신호를 판독하여 명령디코드부7로 전송한다.
그 결과 전송되어 온 명령코드 데이터신호는 32비트폭의 명령 디코드 입력 래치7a에 격납된다.
명령 디코드입력 래치7a에 격납된 명령코드 데이터 신호안에서 유효한 명령코드를 주는 신호의 디코드의 실행은 전술한 명령포맷 식별자에 근거하여 제어로직7b에 의해 다음과 같이 제어된다. 그 점을 이하에 상술한다.
(제어로직7b)
도12 의 제 1∼제 3제어신호 CT1∼CT3(입력신호라 칭함)와 명령디코드입력 래치7a내의 유효코드배치와의 관계를 도13 에 나타낸다.
도면중의 사선부는 명령포맷 식별자를 표시하며 도트(DOt)부는 유효한 코드를 나타낸다.
도12 에 도시한 바와 같이 제어로직7b는 명령디코드입력 래치7a에 격납된 32비트 패턴중의 명령장 식별자를 제공하는 제 1, 제 2제어신호CT1, CT2와 제어 로직7b 자신으로부터 출력되는 제 3제어신호CT3을 입력으로 한다.
즉 명령디코드입력 래치7a는 명령포맷 식별자로서 스스로 보유하는 32비트의 비트 패턴의 0비트째의 값과 16비트째의 값을 각각 제 1제어신호CT1 및 제 2제어신호CT2로서 제어로직7b로 출력한다.
제 3제어신호CT3는 제어로직7b 자신으로부터의 출력신호이며 그것은 명령디코더7c가 출력하는 디코드 종료 신호 ES에 따라서 상기 래치7a에 수납된 32비트의 비트 패턴중의 0비트째로부터 15비트째까지의 부분이 디코드되어 있는가(이 경우에는 ″0″), 아니면 16비트째로부터 31비트째까지의 부분이 현재 디코드되어 있는가(이 경우에는 ″1′,)를 나타낸다.
(α) 제 1제어신호CT1의 값이 ″1″인 때는 명령 디코드 입력 래치7a에 격납되어 있는 명령코드데이터신호는 32비트장명령을 주는 것이다.
(β) 제 1제어신호CT1이 ″0″인때는 명령 디코드입력 래치7a에는 2개의 16비트장명령으로 이루어지는 명령코드 데이터신호가 격납되어 있다.
이 때 또 제 2제어신호CT2가 ″0″또한 제 3제어신호CT3가 ″0″이면 유효한 명령코드는 상위16비트측에 있다.
이것에 대하여 제 2제어신호2가 ″0″또한 제 3제어신호CT3가 ″1″이면 유효한 명령코드는 하위16비트측에 있다.
(γ) 제 1제어신호 CT1이 ″0″로, 더구나 제 2제어신호CT2가 ″1″인 경우는 상위16비트의 명령코드만이 유효한 코드이며 하위16비트의 명령코드는 상술한 워드 얼라인먼트 조정용 NOP 명령」이며 실행되지 않는다.
제어로직7b는 이상의 입력신호CT1∼CT3의 값을 근거로 다음 코드의 디코드를 위해 다음 3종류의 제어신호CA,CB,CT3를 출력한다.
이 중, 제 4제어신호 CA는 명령디코드입력 래치7a 내에서 하위16비트의 명령코드를 상위16비트위치로 시프트하기 위한 제어신호 즉 시프터제어 신호이고 제 5제어신호 CB는 명령어드레스의 32비트 경계의 포인터이고 명령훼치부6에 대하여 명령디코드 입력래치7a에의 명령코드의 전송개시를 명령하는 신호이다.
제 3제어신호CT3는 전술한바와 같이 다음 유효코드가 32비트 워드 경계내의 상위16비트위치에 있는 것인가, 하위16비트 위치에 있는 것인가를 나타내는 신호이다.
또, 도12 에 도시한 바와 같이 제어로직7b는 제 6제어신호CC로서 명령디코더7c에서 디코드실행중의 명령코드의 어드레스가 32비트 워드 경계상에 있는 경우에는 ″1″을 워드경계상에 없는 경우에는 ″0″를 후술하는 PC의 비트30부(PC30 부)로 출력한다.
명령코드내의 즉치에 의해 분기선 어드레스를 지정하는 분기명령, 즉 상술한 (b)BRA 명령등과(c)BEQ 명령등을 디코드하는 경우는 명령디코드 입력 래치7a의 후반24비트(8비트째로부터 31비트째까지)위치에 접속된 정수 생성기7d로 동 래치7a는 즉치를 출력한다.
정수 생성기7d는 즉치를 부호확장하여 얻을수 있는 값을, 버스 S2에 출력한다.
명령실행시에 분기가 발생한 경우에는 제 1∼제 3제어신호(입력)CT1∼CT3의 값에 관계없이 명령디코드부7의 제 4제어신호CA, 제 5제어신호CB, 제 6제어신호CC 및 제 3제어신호CT3는 전부 초기화된다.
제어신호(입력)와 제어신호(출력)의 관계를 도14 에 나타낸다.
이상으로 명령디코드부7(제 1도,제 12도)에 있어서는 어느쪽의 경우에도 제 1회째에 디코드하는 명령코드는 반드시 명령디코드입력 래치7a의 선두로부터 시작된다.
따라서, 명령코드 입력래치7a의 내용이 그대로 명령디코더7c로 전송된다.
명령코드 데이터신호가 단일의 32비트장 명령코드의 경우에는 전송경로는 도12 에 나타내는 경로P2, P3 이다.
또, 상위의 16비트장명령코드의 전송경로는 경로P2 이다.
명령디코드입력 래치7a에서의 명령코드의 배치가 16비트장명령의 차례차례 실행하는 경우만 명령코드의 2회째의 명령디코더7c에의 출력전에 다음과같은 처리가 행하여진다.
이때 2회째의 명령디코더7c에의 출력전에 다음과 같은 처리가 행하여진다.
디코드대상이되는 명령코드, 즉 유효한 코드는 32비트워드 경계내의 하위측의 16비트위치에 있는 것으로, 명령디코드입력래치7a의 내용은 좌로(32비트의 비트 패턴의 0비트째방향으로)16비트분만 시프트되어 (경로P1),입력 래치7a로 들어 간다.
그 결과가 2회째의 명령 디코더7c에의 출력이된다. (경로P2).
이와 같이 경로P1를 경유하는 것은 유효코드가 명령디코드입력 래치7a의 하위16비트위치에 있는 경우에 한정되기 때문에 H/W 량을 삭감할 수 있고 고속화를 꾀할 수 있는 것이 가능해진다.
VI.. PC부3의 증분동작
도15 는 도1 중의 PC부3 및 어드레스 생성기4의 부분을 확대한 블럭도이다.
도15 를 사용하여 PC부3의 증분동작에 관해서 설명한다.
어드레스 생성기4는 시프터4a와 가산기4b로 구성되어 있고 분기명령의 어드레스를 어드레싱 모드에 따라서 계산한다.
PC부3은 프로그램 카운터(이후 PC라 칭함)를 중핵으로서 더욱 비교기3b, (+1/0)부3e, 백업·프로그램 카운터(이하, BPC라 칭함)3f, BPC30부 3g 및 프로그램 카운터·브레이크포인터(이하, PBP라 칭함)으로 구성된다.
이 중 PBP3a와 BPC3f는 제어레지스터이다.
상술한 프로그램 카운터는 32비트의 카운터이고 현재 실행중의 명령의 어드레스치를 유지한다.
명령코드의 배치방법을 상술과같이 한정되어 있기 때문에 본프로세서10(도1)의 명령은 짝수어드레스치에서만 시작된다.
따라서 프로그램 카운터의 31비트째의 값은 도22 에 예시하는바와같이 ″0″고정으로 된다. 따라서 하드웨어상에서는 PC의 31비트째의 값을 실현할 필요가 없기 때문에 PC는 도15 에 나타내는바와같이 0비트째로부터 29비트째까지의 값을 주는 PC(0:29)3c와, 30비트째의 값을 주는 PC30부 3d에 따라서 실현되어 있다. 이 중 PC30부 3d는 제 6제어신호CC의 값″0″또는″1″을 보유하는 레지스터이다.
또 상술한 BPC는 후술하는 인터럽트·트랩발생시에 PC3c가 유지하는 PC 치를 퇴피한다.
여기서 제 23도에 예시하는바와같이, BPC의 31비트째의 값은 항상″0″로 고정되어 있기 때문에 하드웨어 상에서는, BPC은, 0비트째로부터 29비트째까지의 값을 주는 BPC(0:29)3f와, 30비트째의 값을 주는 BPC30으로 실현되어 있다.
따라서 본 프로세서10(도1)은 후술하는 인터럽트·트랩의 발생을 검출하면 PC(0:29)3c의 값을 BPC(0:29)3f에 퇴피시킨다. 다른쪽, PBP3a는 후술하는 PC 브레이크 인터럽트를 제어하기 위한 32비트폭 제어 레지스터이고 PBP3a는 인터럽트를 기동하는 명령 실행의 어드레스치를 미리 보유하고 있어 제어부8(제 1도)로부터출력하는 버스 D1 상의 기록명령신호를 사용하여 상기 어드레스치를 기록하고 있다.
PC(0:29)3c의 갱신은 본 프로세서10(도1)에 있어서 분기 이외의 명령이 실행되었을 때에는는 이하에 도시한 바와 같이 행해진다.
한편 여기서는 4가닥의 버스 S1, S2, S3 및 D1을 사용하고 있으며 신호선D는 PC 3c에 접속되어 있다.
도12 의 명령디코드부7의 제어로직7b에서 출력되는 제 5제어신호CB(32비트워드경계의 어드레스를 가리키는 포인터)가 갱신되면 PC(0:29)3c가 유지하는 값은 (+1/0)부 3e에 의해서 ″+ 1″만 증가되고, 그 증가후의 값이 신호선D 상에 오른다.
이것에 대해 제 5제어신호CB가 갱신되지 않은 경우는 PC(0:29)3c의 값은, (+ 1/0)부3e에 의해서 증가되는 일없이 그대로 신호선D 상에 오른다.
신호선D상의 값은 PC(0:29)3c에 기록되고 이에 따라 PC(0:29)3c의 PC 치는 다음 명령의PC(0:29)3c의 값으로 재기록된다.
또 신호선D는 버스 S1에 결선되어 있기 때문에 이PC(0:29)3c의 갱신치를 버스 S1 상에 불러낼 수있다.
PC30부 3d에는 명령디코드부7내의 제어로직7b(도1)로부터 출력되는 제 6제어 신호CC의 값이 명령 실행시에 기록된다.
다른쪽 명령실행시에 분기가 발생한 경우에는 다음명령의 PC 치는 어드레스 생성기4를 사용하여 생성되며 그 생성치는 버스 S3를 경유하여 PC(0:29)3c에 기록된다.
또 띄울곳 어드레스지정을 즉치로 하는 분기명령(상술한 분기명령(b),(c))의 경우에는 명령디코드부7의 정수 생성기7d(도1)는 해당 명령코드로부터 추출한 즉치를 32비트로 확장하여 확장후의 즉치를 버스 S2를 통해 어드레스 생성기4로 출력한다.
그리고 부호확장된 즉치는 어드레스 생성기4 내의 시프터4a에 의해서 왼쪽으로(최상 위측으로)2비트만 시프트된다.
PC(0:29)3c의 갱신치는 신호선D에서 버스 S1를 통해 어드레스생성기4로 출력된다.
여기서, PC(0:29)3c의 갱신치는 분기명령의 PC 상위30비트에 대응한다.
가산기4b는 (PC(0:29)3c의 갱신치)+(부호확장된 즉치을 왼쪽으로 2비트 시프트한 값)을 계산하여 이에 따라 분기선 어드레스의 상위30비트를 얻을 수 있다.
이위에 정도30비트의 값은 버스 S3를 통해, PC(0:29)3c에 기록된다.
띄울곳 어드레스 지정을 레지스터2(도1)의 값으로 행하는 분기명령의`경우(상술한 분기명령(a))에는 명령코드에 의해 지정된 레지스터2로부터 버스 S1를 통해 레지스터에 유지되어 있는 값이 받아들여지고 그 정수치가 PC3c에 기록된다.
분기발생시는 명령디코드부7이 제 6제어신호CC를 ″0″에 초기화하므로 PC30부 3d에는 ″0″이 기록된다.
따라서 본프로세서10(도1)에서는 상술과 같이 분기선의 어드레스는 32비트 워드경계만 이된다.
VII. 인터럽트·트랩동작의 설명
프로세서10(도1)이 통상의 프로그램을 실행하고 있는 도중에서 어떤 사상(事象)이 발생하면, 그 프로그램의 실행을 중단하 별도의 프로그램을 실행할 필요가 생긴다.
이러한 사상으로서는 대별하여 인터럽트 및 트랩 동작이 있다.
(a)인터럽트(Interrupt)
상기 사상중 외부에서의 하드웨어 신호(이것을 인터럽트 요구신호라 칭함)에 의해,
또는 특정한 어드레스 실행시에 생기는 PC 브레이크 신호에 의해 발생하는 사상.
(b)트랩(Trap)
상기 사상중 명령에 의해 발행되는 사상.
본프로세서10(도1)은 또 외부 인터럽트(EI) 및 PC 브레이크 인터럽트(PBI)로 이루어지는 2종류의(a)인터럽트와 1종류의 트랩(Trap)을 실현하는 기능을 구비한다.
인터럽트·트랩발생시의 처리 순서를 도16을 사용하여 설명하면, 즉 개요는 다음과 같이된다.
인터럽트 요구 신호 또는 PC 브레이크 신호가 유효하게 될 경우에는 뒤에 상술하는바와같이 프로세서10은 32비트워드 경계에서의 만이 인터럽트명령을 접수한다.
또 트랩 명령은 그 명령 실행후 트랩의 처리를 개시한다.
이에 따라 프로세서10(도1)은 프로그램의 실행을 중단하여 인터럽트 또는 트랩의 처리를 한다.
그 때 동프로세서10은 후술하는바와같이 인터럽트 또는 트랩의 사상을 검출하여 도15의 PC3c의 PC 치를 BPC3f에 퇴피시키는 것으로 하고 있으며 그 후 각각의 인터럽트 또는 트랩에 대응한 처리프로그램인터럽트·트랩처리핸들러」에의 분기를 행한다.
인터럽트·트랩처리핸들러」에서의 처리가 완료하면 인터럽트·트랩 처리 핸들러」부터의 복귀명령을 실행하여 계속해서 PC3c의 PC치의 복귀을 하여 프로세서10은 해당 인터럽트·트랩처리로부터 복귀한다.
본프로세서10에 있어서의 인터럽트·트랩의 처리는 이상과 같이 하드웨어가 처리를 하는 부분과 프로그램이 처리를 하는 부분으로 이루어진다.
즉 본프로세서10로서는 상술한 처리중 (1)되돌아가는 곳인 PC 치의 BPC3f 에의 퇴피,
(2) 인터럽트·트랩처리핸들러」에의 분기,
(3)BPC 치의 PC3c 에의 기록을 하드웨어부분이 실행한다.
전술한 외부인터럽트(EI)는 외부에서의 하드웨어 신호(인터럽트 요구 신호)에 의해 발생한다. 인터럽트 요구신호에 의한 인터럽트의 요구는 32비트워드 경계상에서만 접수한다(이 기구는 후기의 검출회로의 구성에의함).
인터럽트 발생시에 도15의 BPC3f에 퇴피되는 값은 다음 명령의 PC 치이다.
다른한편, PC 브레이크 인터럽트(PBI)는 특정한 어드레스를 실행한 때에 발생한다.
본 프로세서10(도1)에 있어서는 지정하는 어드레스는 32비트 워드 경계만 이다.
각 사이클마다 도15의 비교기3b는 PBP3a가 유지하는 값과 PC3c의 값을 비교하여 양자의 값이 일치할 때에 PC 브레이크 신호18를 출력한다.
PC 브레이크 신호18은 후술하는 인터럽트·트랩 검출 회로를 통해 인터럽트·트랩 검출 신호로서 검출되여 그 신호는 도15 의 (+ 1/0)부 3e에 출력된다.
그 결과 프로세서10에 인터럽트가 발생하여 PC 치의 퇴피가 생긴다.
전술한 종류 PBP3a 에의 기록은 데이터버스 D1를 사용하여 행해진다.
또 인터럽트 발생시에 BPC3f에 퇴피되는 값은 다음 명령의 PC 치이다.
또 트랩이란 소프트 웨어로 제어하는 인터럽트의 것이고 트랩 명령의 실행에 의해 발생한다.
이 경우 트랩 명령이 32비트 워드 경계내의 상위 16비트측에 있거나, 아니면 하위16비트측에 있는가를 공급하는 정보를 BPC 비트30, 즉 BPC30 부3g에 격납한다.
트랩명령이 상위 16비트에 있는 경우는 BPC30 부3g의 값은 ″0″ 하위16비트인 경우는 BPC30 부3g의 값은 ″ 1″이다.
인터럽트 발생시에 BPC에 퇴피되는 값은 (트랩명령의 PC 치 b4)이다.
인터럽트·트랩을 검출하는 회로를 도17에 나타낸다.
동검출회로는, 제 1도의 제어부8의 일부를 구성하고 있어 인버터22, AND 회로23,24 및 인터럽트·트랩검출회로16보다 이루어진다.
본프로세서10은 해당 검출회로에 의해서 외부신호19에의한 인터럽트의 요구 및 PC 브레이크 신호18에의한 인터럽트의 요구를 동시에 32비트 워드 경계에서만 접수한다.
즉 32비트워드 경계에서는 제 6제어 신호 CC의 레벨은 ″0″이기 때문에 제 6제어 신호CC를 반전한 워드 경계 검출신호21(그 레벨은 1″)과 인터럽트 요구 신호19가 동시에 유효(″1″)로 되었을 때에 만 출력 신호VE가 유효(″1″)로된다.
또 워드 경계 검출 신호21과 PC 브레이크 신호18이 동시에 유효(″1″)로 됐을때만이 출력신호VF가 유효하게 된다.
이와 같이 32비트 워드경계에서의 보고 상기 인터럽트요구가 접수되고 인터럽트·트랩처리핸들러로 분기하여 해당 처리을 한후에 인터럽트·트랩처리핸들러」부터의 복귀명령의 실행에 의해서 인터럽트·트랩처리로부터 실행프로그램에의 복귀가 행하여진다.
다른한편 트랩 명령으로서는 트랩 명령에의한 인터럽트가 지령되면 트랩요구 신호20가 유효(″1″)하게 된다.
트랩요구신호20, 출력신호VE, 출력신호VF의 중 어느 1개가 유효(″1″)하게 되면 인터럽트·트랩검출회로16에 의해 인터럽트·트랩검출신호17이 출력된다.
인터럽트·트랩검출신호17이 출력되면 인터럽트·트랩처리핸들러로 분기되어 해당 처리을 한 후 복귀명령을 실행하여 해당 처리로부터 실행 프로그램으로 복귀한다.
전술과 같이 인터럽트·트랩발생시에는 PC3c(도15)의 값이 BPC3f에 퇴피된다.
인터럽트발생시 BPC3f에는 다음 명령의 PC 치가 기록된다.
예컨데 분기명령의 실행직후에 인터럽트가 발생한 경우에는 도15의 어드레스생성기4에서 생성된 분기선을 주는 PC 치는 제어부8의 제어의하,버스 S3를 경유하여 BPC3f에 기록된다. 이것에 대하여 분기 명령 이외의 명령의 실행 직후에 인터럽트가 발생한 경우 에는 (+ 1/0)부3e에 의해서PC(0:29)3c의 출력값에 ″+ 1″를 가해진것이 BPC(0:29)3f에 기록된다. BPC30 부3g에는 PC30 부3d의 값이 기록된다. 본프로세서10(도1)에 있어서는 전술한 종류, 인터럽트는 32비트 워드 경계에서만 접수되기 때문에 인터럽트 발생시에 BPC30 부3g에 퇴피되는 값은, 항상″0″이다.
트랩발생시에는 ((트랩명령의 PC)+4)의 값이 BPC3f에 기록된다.
즉 (+1/0)부3e에 의해서 PC(0:29)3c의 출력치에 ″+ 1″이 가해지는 것이 BPC(0:29)3f에 기록되며 BPC30부3g에는 P:C30부3d의 값이 기록된다.
즉 트랩을 발생시킨 트랩명령이 32비트 워드 경계의 상위 16비트에 있는 경우는 BPC30 부3f에는 ″0″가 32비트 워드 경계의 하위16비트에 있는 경우는 BPC30부3g에는 ″1″이 각각 기록된다.
인터럽트·트랩으로부터의 복귀는 전술과같이 리턴명령을 실행함으로써행한다.
리턴명령은 제어부8이 출력하는 신호25를 받아 BPC3f가 출력하는 신호가 주는 어드레스로 분기한다.
단지 본프로세서10에 있어서는 분기선의 어드레스는 항상 32비트 경계에만 설정되어 있기 때문에 BPC3f가 PC3c에 복귀할 때, PC의 하위2비트는 항상″00″ 로된다.
(정리)
이상의 구성을 채택하므로서 다음과같은 특징점를 얻을 수 있다.
본프로세서10은 N 비트장과 2N비트장이라는 2종류의 명령장으로 이루어지는 명령코드를 실행하므로서 고정장명령포맷에 비교하여 명령기능의 제한을 받는 일없이 코드사이즈를 축소할수있는 동시에 종래의 가변장명령포맷에 비교하여 명령디코드방법을 간략화할수있다.
특히 명령코드의 배치에 일정한 제한을 덧붙여 2N비트 경계를 넘는 명령의 배치를 금지하는 동시에 분기선 어드레스를 2N비트 워드 경계에만 지정하는 것으로 명령훼치부6 및 명령디코드부7간의 데이터 전송 경로를 각별히 삭감할 수 있다.
그 결과 명령디코드를 위한 H/W 량을 삭감할 수 있고 고속화를 꾀할수 있다.
더구나 본 프로세서10에 있어서는 분기선 어드레스를 2N비트 경계에 제약한 것에 의해, 분기선 어드레스의 하위2비트는 항상″00″ 로된다.
따라서 명령코드내에서 분기선 어드레스의 하위2비트를 지정할 필요가 없다.
그 결과로서 어드레스의 모든 비트를 지정하는 경우와 비교하여 22배 즉 4배의 광범위로 실행중의 명령의 어드레스로부터 직접분기할 수 있다.
그와 같은 기능을 구비한 본 프로세서10에 대하여 더 각종의 인터럽트든지 트랩 처리를 서포트할 수 있는 기능을 구비하는 것도 가능하다.
청구항1,2기재의 각발명에 의하면 명령코드입력수단에 의해 2개의 제 1명령데이터신호 및 제 2명령 데이터 신호는 동시에 2N비트워드 경계내에 격납되기 때문에,2N비트장명령의 데이터가 해당 2N비트경계를 넘어 버리고마는 명령코드의 배치가 금지되는 것이된다.
이 때문에 명령 훼치부에서 명령 디코드부에의 명령코드 데이터 신호의 전송 경로를 종래의 4종류로 부터 3종류로 삭감할 수 있다고 하는 효과가 있다.
특히 청구항2기재의 발명에 의하면 명령 디코더 수단이 분기선어 드레스를 2N비트워드경계내로 제한하기 때문에 명령코드데이터신호의 전송경로를 2종류까지 삭감할 수 있다고 하는 효과가 있다.
또, 청구항3기재의 발명에서는 명령코드 입력 장치가 2개의 제 1명령 데이터 신호 및 제 2명령데이터신호를동시에 2N비트 워드경계내에 격납한후에 그와 같이 각 명령코드의 배치가 제약된 2N비트장의 명령코드 데이터신호를 차례로 프로세서에 대하여 입력시킬 수있기 때문에 해당 명령코드 데이터 신호를 받는 프로세서의 측에 있어서는 명령 디코드화를 위한 전송경로를 종래의 4종류로부터 3종류로 삭감할 수 있다고 하는 효과를 프로세서에서도 얻는다 하는 효과가 있다.

Claims (3)

  1. N(N는 1 이상의 정수)비트 길이 명령을 주는 제 1명령 데이터 신호와 2N 비트 길이 명령을 주는 제 2명령 데이터 신호만 으로 이루어지는 명령 코드를 구비하며 상기 제 1 및 제 2명령데이터 신호의 명령코드는
    (1) 2개의 상기 제 1명령 데이터 신호를 2N비트 길이의 워드의 경계내에 격납하고,
    (2) 상기 제 2명령 데이터 신호의 각각을 상기 2 N 비트워드 경계내에 격납한다는 규칙하에 배치된 명령 코드입력수단과,
    상기 명령코드 입력수단을 훼치하여 상기 규칙하에 배치된 상기 명령코드를 유지하는 명령훼치수단을 구비한 2 종류의 명령장코드를 실행하는 프로세서.
  2. 제1항에 있어서,
    상기 명령훼치수단 에서 전송되는 상기 명령코드를 제공하는 신호를 받아 상기 명령코드에 대하여 분기선어드레스의 지정을 상기 2N 비트워드경계로 제한하므로 상기 명령코드를 디코드하는 명령디코드수단을 더 구비한 2종류의 명령길이 코드를 실행하는 프로세서.
  3. 프로세서에 대하여 명령코드를 주는 명령코드입력장치으로서,
    상기 명령코드는 N(N는 1 이상의 정수)비트장 명령을 제공하는 제 1명령 데이터 신호와 2N 비트장 명령을 제공하는 제 2명령 데이터 신호만 으로 이루어져 상기 제 1 및 제 2명령데이터신호의 명령코드를,
    (1) 2개의 상기 제 1명령 데이터신호를 2N 비트장의 워드의 경계내에 격납하고,
    (2) 상기 제 2명령 데이터 신호를 상기 2N 비트워드 경계내에 겨납한다는 규칙하에 배치하는 명령코드 입력장치.
KR1019970000490A 1996-09-13 1997-01-10 2종류의 명령장 코드를 실행하는 프로세서 및 그명령 코드입력 장치 KR100260353B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP243375 1990-09-13
JP24337596A JP3658101B2 (ja) 1996-09-13 1996-09-13 データ処理装置

Publications (2)

Publication Number Publication Date
KR19980023918A KR19980023918A (ko) 1998-07-06
KR100260353B1 true KR100260353B1 (ko) 2000-07-01

Family

ID=17102923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970000490A KR100260353B1 (ko) 1996-09-13 1997-01-10 2종류의 명령장 코드를 실행하는 프로세서 및 그명령 코드입력 장치

Country Status (5)

Country Link
US (2) US6463520B1 (ko)
JP (1) JP3658101B2 (ko)
KR (1) KR100260353B1 (ko)
CN (1) CN1095116C (ko)
TW (1) TW379305B (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3490007B2 (ja) * 1998-12-17 2004-01-26 富士通株式会社 命令制御装置
EP1050801B1 (en) * 1999-05-03 2006-12-13 STMicroelectronics S.A. An instruction supply mechanism
EP1050798A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Decoding instructions
US20020144235A1 (en) * 2001-03-30 2002-10-03 Charles Simmers Debugging embedded systems
DE10120522A1 (de) * 2001-04-26 2002-11-07 Infineon Technologies Ag Verfahren zum Erkennen einer korrekten Befehls-Einsprung-Adresse bei Verwendung unterschiedlich langer Befehlsworte
US7493470B1 (en) 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
EP1470476A4 (en) * 2002-01-31 2007-05-30 Arc Int CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE
DE10204038B4 (de) * 2002-02-01 2005-03-03 Infineon Technologies Ag Verfahren zum Erkennen einer korrekten Befehls-Einsprung-Adresse bei Verwendung unterschiedlich langer Befehlsworte
GB2393270B (en) 2002-09-19 2005-07-27 Advanced Risc Mach Ltd Executing variable length instructions stored within a plurality of discrete memory address regions
TWI230899B (en) * 2003-03-10 2005-04-11 Sunplus Technology Co Ltd Processor and method using parity check to proceed command mode switch
DE102004004561B4 (de) * 2004-01-29 2006-09-14 Infineon Technologies Ag Mikroprozessor mit einer energieeinsparenden Hol- und Dekodiereinheit zum Holen und Decodieren von komprimierten Programmbefehlen und mit einer Programmbefehlsfolgesteuerung
US8006071B2 (en) * 2004-03-31 2011-08-23 Altera Corporation Processors operable to allow flexible instruction alignment
US20060174089A1 (en) * 2005-02-01 2006-08-03 International Business Machines Corporation Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US7581082B2 (en) * 2005-05-13 2009-08-25 Texas Instruments Incorporated Software source transfer selects instruction word sizes
US8325768B2 (en) * 2005-08-24 2012-12-04 Intel Corporation Interleaving data packets in a packet-based communication system
CN100346291C (zh) * 2005-12-02 2007-10-31 浙江大学 多地址空间的块传输指令的控制方法及其装置
US7908463B2 (en) * 2007-06-26 2011-03-15 Globalfoundries Inc. Immediate and displacement extraction and decode mechanism
CN101344840B (zh) * 2007-07-10 2011-08-31 苏州简约纳电子有限公司 一种微处理器及在微处理器中执行指令的方法
TW200910195A (en) 2007-08-20 2009-03-01 Sunplus Technology Co Ltd A device of using serial bits to determine instruction length at a multi-mode processor and the method thereof
CN101377735B (zh) * 2007-08-28 2011-09-28 凌阳科技股份有限公司 于多模处理器中以串行位决定指令长度的装置及方法
CN101482809B (zh) * 2008-01-11 2011-10-26 凌阳科技股份有限公司 在多模处理器中用指令终止位决定指令长度的装置及方法
US7849243B2 (en) * 2008-01-23 2010-12-07 Intel Corporation Enabling flexibility of packet length in a communication protocol
CN101833437B (zh) * 2009-05-19 2013-06-26 威盛电子股份有限公司 适用于微处理器的装置及方法
US10055227B2 (en) * 2012-02-07 2018-08-21 Qualcomm Incorporated Using the least significant bits of a called function's address to switch processor modes
GB2501299A (en) * 2012-04-19 2013-10-23 Ibm Analysing computer program instructions to determine if an instruction can be replaced with a trap or break point.
US9223714B2 (en) 2013-03-15 2015-12-29 Intel Corporation Instruction boundary prediction for variable length instruction set
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator
US11775305B2 (en) * 2021-12-23 2023-10-03 Arm Limited Speculative usage of parallel decode units

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3678467A (en) * 1970-10-20 1972-07-18 Bell Telephone Labor Inc Multiprocessor with cooperative program execution
US4447878A (en) * 1978-05-30 1984-05-08 Intel Corporation Apparatus and method for providing byte and word compatible information transfers
US4250548A (en) * 1979-01-02 1981-02-10 Honeywell Information Systems Inc. Computer apparatus
US4408271A (en) * 1979-01-02 1983-10-04 Honeywell Information Systems Inc. Circuit for implementing a digital computer instruction
JPS5856164A (ja) * 1981-09-30 1983-04-02 Toshiba Corp デ−タ処理装置
JP2635057B2 (ja) 1987-11-04 1997-07-30 株式会社日立製作所 マイクロプロセッサ
JPH0415826A (ja) 1990-05-08 1992-01-21 Rohm Co Ltd ワンチップマイクロコンピュータ
US5452423A (en) 1991-06-13 1995-09-19 Chips And Technologies, Inc. Two-ROM multibyte microcode address selection method and apparatus
JPH05313894A (ja) 1992-05-11 1993-11-26 Fuji Xerox Co Ltd 情報処理装置
JPH06119253A (ja) * 1992-10-02 1994-04-28 Toshiba Corp 二重化メモリ制御装置

Also Published As

Publication number Publication date
CN1095116C (zh) 2002-11-27
US6463520B1 (en) 2002-10-08
JPH1091435A (ja) 1998-04-10
US6209079B1 (en) 2001-03-27
TW379305B (en) 2000-01-11
JP3658101B2 (ja) 2005-06-08
KR19980023918A (ko) 1998-07-06
CN1177140A (zh) 1998-03-25

Similar Documents

Publication Publication Date Title
KR100260353B1 (ko) 2종류의 명령장 코드를 실행하는 프로세서 및 그명령 코드입력 장치
US5522053A (en) Branch target and next instruction address calculation in a pipeline processor
US4454578A (en) Data processing unit with pipelined operands
EP0782071B1 (en) Data processor
US4648034A (en) Busy signal interface between master and slave processors in a computer system
US5206940A (en) Address control and generating system for digital signal-processor
US4868740A (en) System for processing data with multiple virtual address and data word lengths
EP0220684B1 (en) Data processing system
EP0551931A2 (en) Digital signal processor
EP0438961A2 (en) Hardware data string operation controller
US5091853A (en) Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction
KR100254008B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서
EP0489266A2 (en) Computer and method for performing immediate calculation by utilizing the computer
US6131158A (en) Data processing system capable of executing groups of instructions, including at least one arithmetic instruction, in parallel
US5193156A (en) Data processor with pipeline which disables exception processing for non-taken branches
JPH06332792A (ja) データ処理装置及びそのデータ読み出し制御回路,データ書き込み制御回路
USRE32493E (en) Data processing unit with pipelined operands
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
US5237667A (en) Digital signal processor system having host processor for writing instructions into internal processor memory
EP0163740A1 (en) Pipeline control system
US5617549A (en) System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
EP0725336B1 (en) Information processor
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
US5361338A (en) Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand

Legal Events

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

Payment date: 20070328

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee