[go: up one dir, main page]

JP3199603B2 - コードサイズ縮小化マイクロプロセッサ - Google Patents

コードサイズ縮小化マイクロプロセッサ

Info

Publication number
JP3199603B2
JP3199603B2 JP13328195A JP13328195A JP3199603B2 JP 3199603 B2 JP3199603 B2 JP 3199603B2 JP 13328195 A JP13328195 A JP 13328195A JP 13328195 A JP13328195 A JP 13328195A JP 3199603 B2 JP3199603 B2 JP 3199603B2
Authority
JP
Japan
Prior art keywords
code
register
word
instruction
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP13328195A
Other languages
English (en)
Other versions
JPH08328850A (ja
Inventor
敏道 松崎
雅士 出口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP13328195A priority Critical patent/JP3199603B2/ja
Priority to US08/643,947 priority patent/US5966514A/en
Priority to KR1019960015261A priority patent/KR100436015B1/ko
Priority to DE69632970T priority patent/DE69632970T2/de
Priority to EP01111215A priority patent/EP1143333B1/en
Priority to EP96303914A priority patent/EP0745932B1/en
Priority to DE69630416T priority patent/DE69630416T2/de
Priority to CNB021574936A priority patent/CN1286004C/zh
Priority to CN96107762A priority patent/CN1114153C/zh
Publication of JPH08328850A publication Critical patent/JPH08328850A/ja
Priority to US09/226,791 priority patent/US6253305B1/en
Application granted granted Critical
Publication of JP3199603B2 publication Critical patent/JP3199603B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムに従ってデ
ータ処理を実行するマイクロプロセッサに関し、特にプ
ログラムのコードサイズの縮小化を支援するマイクロプ
ロセッサに関する。
【0002】
【従来の技術】近年、マイクロプロセッサを用いた製品
は、ますます高機能化が求められ、それに伴ってプログ
ラムは大規模化してきている。ところが、マイクロプロ
セッサ組み込み型の製品においては、プログラムをRO
M化して実装する必要があるため、そのコードサイズの
増大は実装すべきROMの容量や個数の増大をもたら
し、低価格な製品の開発を阻害する。従って、このよう
な製品の開発においては、コードサイズを可能な限り圧
縮することが望まれる。
【0003】コードサイズを圧縮するための従来の技術
として、マイクロプロセッサが実行する個々の命令の語
長を縮小する方法がある(例えば、NEC社製V800
シリーズ、日立社製SH7000シリーズ)。これらの
マイクロプロセッサは、一度に扱うデータ長、即ちデー
タバスや内部の演算器、レジスタのビット幅(以下、
「演算幅」という。)よりも小さい語長からなる命令の
セットを備えている。具体的には、演算幅が32ビット
であるにも拘らず16ビットからなる命令を備えてい
る。
【0004】このような技術によって、必ずしも32ビ
ットも必要としない命令を16ビットで構成したり、使
用頻度の高い命令を16ビットで構成することが可能と
なり、命令を構成する無駄なビットが排除され、同一内
容のプログラムであっても全体のコードサイズは効率よ
く圧縮される。
【0005】
【発明が解決しようとする課題】しかしながら、上記の
ような従来の技術には次のような問題点があった。即
ち、演算幅よりも小さい語長からなる命令を備えていて
も、それらの語長は、マイクロプロセッサが有する命令
解読器のビット幅と同じかその整数倍である。例えば、
命令解読器のビット幅が8ビットであれば、命令の語長
は、8、16、24、32、、、のいずれかである。そ
のために、命令の語長を縮小化しても、8ビットよりも
小さい単位では縮小化することができず、例えば、8ビ
ットも必要としない数値を指定する場合であっても8ビ
ットを用いて指定せざる得ないために、依然としてコー
ドサイズの点において無駄が存在した。
【0006】図10は、従来のマイクロプロセッサにお
ける命令のビット構成を説明するための図である。
今、”レジスタd0に格納された値に即値4を加算す
る”という命令”add #4,d0”を考える。この
命令の語長は、オペコード”add#n,d0”を特定
する8ビットと、即値#nを指定する8ビット、即ち合
計16ビットである。ここでは、8ビットを用いて即
値”4”を指定しているが、例えば、−8から+7の範
囲の整数を指定するのであれば4ビットあれば足りる。
即ち、従来のマイクロプロセッサによれば、合計12ビ
ットあれば特定できる命令であっても、16ビットで構
成していたために、依然としてコードサイズの点におけ
る無駄があった。
【0007】そこで、本発明はかかる問題点に鑑みてな
されたものであり、マイクロプロセッサが有する命令解
読器のビット幅の整数倍に制限されることなく、効率よ
く語長が縮小化された命令セットを有するマイクロプロ
セッサを提供し、これによって、同一内容であってもコ
ードサイズが圧縮されたプログラムの作成を可能とする
ことを目的としている。
【0008】
【課題を解決するための手段】上記目的を達成するため
に請求項1記載のマイクロプロセッサは、コード化され
た命令を逐一に解読する解読器と、前記解読器による解
読結果に基づいてデータ処理を実行する実行手段とを備
えるマイクロプロセッサであって、前記命令の語長w
は、前記解読器が一度に解読するコードの語長をaと
し、aよりも小さい語長をbとした場合に、w=a+n
b (但し、nは0及び1を含む正の整数とする) で
表され、前記実行手段は、少なくとも語長がaである命
令と語長が(a+b)である命令を実行することを特徴
とする。
【0009】請求項2記載のマイクロプロセッサは、請
求項1記載のマイクロプロセッサにおいて、前記bは、
前記aを1ワードとした場合に、ハーフワードであるこ
とを特徴とする。請求項3のマイクロプロセッサは、請
求項2記載のマイクロプロセッサにおいてさらに、先読
みした命令を保持する命令バッファと、前記解読器で解
読する1ワードのコードをハーフワードずつ分割して保
持する上位側解読レジスタと下位側解読レジスタと、前
記解読器による解読結果に基づいて、次に新たに前記解
読レジスタに転送すべきコードの語長がハーフワードで
あるか1ワードであるかを判断する第1の判断手段と、
前記第1の判断手段においてハーフワードと判断された
場合、前記下位側解読レジスタに格納されたコードを前
記上位側解読レジスタに転送するともに、前記命令バッ
ファに格納された次に転送すべきハーフワードのコード
を前記下位側解読レジスタに転送する選択手段とを備え
ることを特徴とする。請求項記載のマイクロプロセッ
サは、請求項2記載のマイクロプロセッサにおいてさら
に、先読みした命令を保持する命令バッファと、前記命
令バッファにおける命令のハーフワード単位での格納状
態を記憶する記憶手段と、前記解読器による解読結果に
基づいて、次に解読すべきコードの語長がハーフワード
であるか1ワードであるかを判断する第1の判断手段
と、判断された語長と前記格納状態とに基づいて、前記
命令バッファに格納されたコードを前記解読器に取り込
むよう前記命令バッファを制御すると共に前記格納状態
を更新する制御手段とを備えることを特徴とする。
【0010】請求項5記載のマイクロプロセッサは、請
求項2記載のマイクロプロセッサにおいてさらに、先読
みした命令を保持する命令バッファと、前記命令バッフ
ァにおける命令のハーフワード単位での格納状態を記憶
する記憶手段と、前記解読器で解読する1ワードのコー
ドをハーフワードずつ分割して保持する上位側解読レジ
スタと下位側解読レジスタと、前記格納状態に基づい
て、前記命令バッファに格納されたコードを前記解読レ
ジスタに取り込むよう前記命令バッファを制御すると共
に前記格納状態を更新する制御手段と、前記解読器によ
る解読結果に基づいて、次に新たに前記解読レジスタに
転送すべきコードの語長がハーフワードであるか1ワー
ドであるかを判断する第1の判断手段と、前記第1の判
断手段においてハーフワードと判断された場合、前記下
位側解読レジスタに格納されたコードを前記上位側解読
レジスタに転送するともに、前記命令バッファに格納さ
れた次に転送すべきハーフワードのコードを前記下位側
解読レジスタに転送する選択手段とを備えることを特徴
とする。請求項記載のマイクロプロセッサは、請求項
記載のマイクロプロセッサにおいて、前記命令バッフ
ァは、最新にフェッチした1ワードのコードを保持する
第1レジスタと、その直前にフェッチした1ワードのコ
ードを保持する第2レジスタとからなり、前記第1のレ
ジスタは、1ワードのコードをハーフワードずつ分割し
て保持する上位側第1レジスタと下位側第1レジスタと
からなり、前記第2のレジスタは、1ワードのコードを
ハーフワードずつ分割して保持する上位側第2レジスタ
と下位側第2レジスタとからなり、前記選択手段は、少
なくとも前記上位側第2レジスタと前記下位側第2レジ
スタと前記下位側解読レジスタとから選択した1つのレ
ジスタに保持されているコードを前記上位側解読レジス
タに転送する上位側選択手段と、少なくとも前記下位側
第1レジスタと前記上位側第2レジスタと前記下位側第
2レジスタとから選択した1つのレジスタに保持されて
いるコードを前記下位側解読レジスタに転送する下位側
選択手段とからなり、前記記憶手段は、前記上位側第2
レジスタ及び前記下位側第2レジスタのいずれにもコー
ドが保持されていない第1の状態と、前記上位側第2レ
ジスタにはコードが保持されているが前記下位側第2レ
ジスタにはコードが保持されていない第2の状態と、前
記上位側第2レジスタ及び前記下位側第2レジスタにコ
ードが保持されている第3の状態のいずれかの格納状態
を記憶することを特徴とする。
【0011】請求項記載のマイクロプロセッサは、請
求項記載のマイクロプロセッサにおいて、前記制御手
段は、前記記憶手段に記憶されている状態が第2の状態
であり、かつ前記第1の判断手段により次に解読すべき
コードの語長が1ワードであると判断された場合には、
前記上位側選択手段が前記上位側第2レジスタに保持さ
れているコードを前記上位側解読レジスタに転送し、前
記下位側選択手段が前記下位側第1レジスタに保持され
ているコードを前記下位側解読レジスタに転送するよう
前記選択手段を制御することを特徴とする。
【0012】請求項記載のマイクロプロセッサは、請
求項記載のマイクロプロセッサにおいて、前記制御手
段は、前記記憶手段に記憶されている状態が第3の状態
であり、かつ前記第1の判断手段により次に解読すべき
コードの語長がハーフワードであると判断された場合に
は、前記上位側選択手段が前記下位側解読レジスタに保
持されているコードを前記上位側解読レジスタに転送
し、前記下位側選択手段が前記下位側第2レジスタに保
持されているコードを前記下位側解読レジスタに転送す
るよう前記選択手段を制御すると共に、前記記憶手段に
記憶する状態を第2の状態に更新することを特徴とす
る。
【0013】請求項記載のマイクロプロセッサは、請
求項記載のマイクロプロセッサにおいて、前記制御手
段は、前記記憶手段に記憶されている状態が第2の状態
であり、かつ前記第1の判断手段により次に解読すべき
コードの語長がハーフワードであると判断された場合に
は、前記上位側選択手段が前記下位側解読レジスタに保
持されているコードを前記上位側解読レジスタに転送
し、前記下位側選択手段が前記上位側第2レジスタに保
持されているコードを前記下位側解読レジスタに転送す
るよう前記選択手段を制御すると共に、前記記憶手段に
記憶する状態を第3の状態に更新することを特徴とす
る。
【0014】請求項10記載のマイクロプロセッサは、
請求項記載のマイクロプロセッサにおいてさらに、前
記記憶手段に記憶された格納状態と前記解読器での解読
結果とに基づいて、前記解読器によって解読された命令
がハーフワードで終了するメモリ上の位置に置かれてい
たサブルーチン分岐命令であるかどうかを判断する第2
の判断手段を備え、前記実行手段は、前記命令がハーフ
ワードで終了するメモリ上の位置に置かれていたサブル
ーチン分岐命令であると判断された場合には、その位置
に該当するメモリ番地にハーフワードのコードに相当す
る番地を加算したメモリ番地をサブルーチンからの戻り
番地とみなしてサブルーチンへの分岐処理を実行するこ
とを特徴とする。請求項11記載のマイクロプロセッサ
は、先読みした命令を保持する命令バッファと、コード
化された命令を1ワードずつ解読する解読器と、前記解
読器で解読する1ワードのコードをハーフワードずつ分
割して保持する上位側解読レジスタと下位側解読レジス
タと、前記解読器による解読結果に基づいて、次に新た
に前記解読レジスタに転送すべきコードの語長がハーフ
ワードであるか1ワードであるかを判断する第1の判断
手段と、前記第1の判断手段においてハーフワードと判
断された場合、前記下位側解読レジスタに格納されたコ
ードを前記上位側解読レジスタに転送するともに、前記
命令バッファに格納された次に転送すべきハーフワード
のコードを前記下位側解読レジスタに転送する選択手段
とを備えることを特徴とする。
【0015】
【作用】上記のように構成された請求項1及び2記載の
マイクロプロセッサによれば、解読器が解読する対象と
なる命令の語長は、解読器が一度に解読するコードの語
長aの整数倍に限定されない。従って、語長aよりも小
さい語長bを単位として、命令の語長を拡張して定義す
ることができる。
【0016】請求項記載のマイクロプロセッサによれ
ば、請求項記載のマイクロプロセッサにおいて、b=
a/2の関係となる。従って、命令の語長wは、a,
1.5a,2a,2.5a,3a,・・・のいずれかと
なる。即ち、命令の語長は、解読器が一度に解読するコ
ードの語長aの半分の語長を単位として最小語長aに付
加された値となる。これは、語長aを単位として拡張さ
れた命令の場合に比較し、コードを指定する際の情報量
は、語長aの上半分か下半分かを特定するためのビット
数、即ち、1ビット分の増加で済む。
【0017】請求項3、4及び11記載のマイクロプロ
セッサによれば、先読みされた命令は命令バッファに保
持され、命令バッファにおける命令のハーフワード単位
での格納状態が記記憶され更新される。さらに、次に解
読すべきコードの語長がハーフワードであるか1ワード
であるかが判断される。これによって、次に命令バッフ
ァから取り込んで解読すべきコードの位置と語長が判明
する。
【0018】請求項5及び6記載のマイクロプロセッサ
によれば、フェッチされた1ワードのコードは、ハーフ
ワード単位で分割して命令バッファに保持されると共
に、それらの中から選択されたコードは、ハーフワード
単位で独立して解読レジスタに転送される。また、記憶
手段には、解読レジスタに転送される直前の命令バッフ
ァでのコードの格納状態が記憶されている。これによっ
て、命令バッファに保持された必要なコードは、ハーフ
ワード単位で解読レジスタに転送されて解読される。
【0019】請求項記載のマイクロプロセッサによれ
ば、第1レジスタと第2レジスタに跨って保持された1
ワード長のコードが解読レジスタに転送されて実行され
る。請求項記載のマイクロプロセッサによれば、下位
側第2レジスタに保持されたハーフワードのコードだけ
が解読レジスタに転送され、既に解読されたハーフワー
ドのコードと共に解読され実行される。
【0020】請求項記載のマイクロプロセッサによれ
ば、上位側第2レジスタに保持されたハーフワードのコ
ードだけが解読レジスタに転送され、既に解読されたハ
ーフワードのコードと共に解読され実行される。請求項
10記載のマイクロプロセッサによれば、解読器によっ
て解読された命令がハーフワードで終了するメモリ上の
位置に置かれていたサブルーチン分岐命令であるかどう
かが判断され、該命令であると判断された場合には、そ
の位置に該当するメモリ番地にハーフワードのコードに
相当する番地を加算したメモリ番地をサブルーチンから
の戻り番地とみなしてサブルーチンへの分岐処理が実行
される。
【0021】
【実施例】以下、本発明の実施例について図面を用いて
詳細に説明する。 (マイクロプロセッサの構成)図1は、本発明の第1実
施例に係るマイクロプロセッサの構成を示すブロック図
である。本マイクロプロセッサは、大きく分けてデータ
パスブロック200及び命令解読ブロック100からな
り、16ビットの外部アドレスバス212と8ビットの
外部データバス213を有する。尚、実行の対象となる
命令が置かれている外部メモリは、図示されていない
が、これらのバスを通じて本マイクロプロセッサと接続
されている。
【0022】データパスブロック200は、データの転
送や演算を行うブロックであり、セレクタ(SEL)2
01、レジスタ群202、内部Aバス203、内部Bバ
ス204、解読用カウンタ(DECPC)205、プリ
フェッチカウンタ(PFC)206、インクリメンタ
(INC)207、演算器(ALU)208、アドレス
バッファ(ADB)209、ストアデータバッファ(S
TB)210及びロードデータバッファ(LDB)21
1からなり、それらの機能は通常のマイクロプロセッサ
と異なるところはない。
【0023】尚、スタックポインタ(SP)202a、
解読用カウンタ(DECPC)205、プリフェッチカ
ウンタ(PFC)206、インクリメンタ(INC)2
07及びアドレスバッファ(ADB)209は、アドレ
ス情報を保持する構成部であり、16ビット幅である。
一方、汎用レジスタ(REG)202b、ストアデータ
バッファ(STB)210及びロードデータバッファ
(LDB)211は、データ情報を保持する構成部であ
り、8ビット幅である。データパスブロック200と命
令解読ブロック100とは、内部Bバス204によって
接続されている。
【0024】図2は、命令解読ブロック100の詳細な
構成を示すブロック図である。命令解読ブロック100
は、外部メモリからフェッチした命令を解読するブロッ
クであり、命令フェッチバッファ(IFB)101、命
令バッファ(IB)102、命令セレクタ(SI)10
3、命令レジスタ(IR)104、解読部105、実行
部108、制御部109及び記憶部110から構成され
る。
【0025】IFB101は、外部メモリから外部デー
タバスを通じてフェッチした1ワードのコードを格納す
るレジスタである。ここで、ワードとは、命令を解読す
る際の単位をいい、本マイクロプロセッサにおいては8
ビット、即ち1バイトである。従って、本実施例では、
16ビットのアドレスバスによって特定される外部メモ
リの一つの番地には1ワード、即ち1バイト分のコード
が置かれている。
【0026】また、命令とは、本マイクロプロセッサに
対する論理的なひとまとまりの指示をいい、例えば、”
add #4,d0”等が該当する。一方、コードと
は、命令が符号化されたビット並びの全体又は部分をい
い、例えば、命令”add #4,d0”に対応するビ
ット並び”0c2(hex)”や、その部分である”0
c”等が該当する。
【0027】IFB101は、フェッチしたコードの上
位4ビット(以下、4ビットの単位を「ニブル」とい
う。)を格納する上位側命令フェッチバッファ(IFB
H)101aと下位の1ニブルを格納する下位側命令フ
ェッチバッファ(IFBL)101bからなる。尚、デ
ータパスブロック200のプリフェッチカウンタ(PF
C)206には、このIFB101にフェッチされてい
るコードが置かれていた外部メモリの番地が保持され
る。
【0028】IB102は、IFB101から出力され
たコードを格納するレジスタであり、IFB101と同
様に上位側命令バッファ(IBH)102aと下位側命
令バッファ(IBL)102bからなる。尚、IFB1
01とIB102に保持されたコードは、後述する実行
部108からの指示に従って図示されていないセレクタ
を介して内部Bバス204に出力されデータパスブロッ
ク200に転送される。
【0029】IR104は、解読する対象となる1バイ
トのコードを格納するレジスタであり、上位1ニブルの
コードを格納する上位側命令レジスタ(IRH)104
aと下位1ニブルのコードを格納する下位側命令レジス
タ(IRL)104bからなる。尚、データパスブロッ
ク200の解読用カウンタ(DECPC)205には、
このIR104にフェッチされているコードが置かれて
いた外部メモリの番地が保持される。
【0030】上記のIFB101、IB102及びIR
104によって、3段の命令パイプラインが形成され、
先読みされた2バイトのコードと解読されている1バイ
トのコードを併せた合計3バイトのコードがこの命令パ
イプラインに格納される。SI103は、後述する制御
部109からの指示に従って、IBH102a、IBL
102b及びIRL104bから選択した1つのレジス
タに格納されている1ニブルのコードをIRH104a
に転送する上位側命令セレクタ(SIH)103aと、
IFBL101b、IBH102a及びIBL102b
から選択した1つのレジスタに格納されている1ニブル
のコードをIRL104bに転送する下位側命令セレク
タ(SIL)103bとからなり、これらは独立して動
作する。
【0031】記憶部110は、IB102に格納されて
いるコードの格納状態を数値に対応させて記憶してい
る。具体的には、図3に示される3つの状態のいずれか
の状態を記憶している。ステートS0はIBH102a
とIBL102bにはコードが格納されていない状態を
示し、ステートS1はIBH102aにはコードが格納
されているがIBL102bにはコードが格納されてい
ない状態を示し、ステートS2はIBH102aとIB
L102bにコードが格納されている状態を示す。
【0032】解読部105は、記憶部110に記憶され
ている状態を参照すると共に、IR104に格納されて
いる1バイトのコードを解読し、その結果を実行部10
8及び制御部109に通知する。解読部105は、コー
ドを複号する一般的な機能を有する他に、特定の判断を
行うためのコードサイズ判断部107及びワードアライ
ン判断部106を有する。
【0033】コードサイズ判断部107は、次に解読す
べきコードの語長が1ニブルであるか1バイトであるか
を判断し、その結果を制御部109に通知する。制御部
109は、コードサイズ判断部107からの通知と記憶
部110に記憶されている状態に基づいて、SI103
を制御すると共に記憶部110に記憶させる状態を更新
する。
【0034】ワードアライン判断部106は、解読した
命令が外部メモリ上のハーフバイト境界に置かれていた
サブルーチン分岐命令であるかどうかを判断し、その結
果を実行部108に通知する。ここで、ハーフバイト境
界とは、バイト境界に対する用語であり、外部メモリ上
の1つの番地に対応する記憶領域、即ち1バイトの記憶
領域の中央の位置、即ち上位ニブルと下位ニブルとの境
界をいう。一方、バイト境界とは、外部メモリ上の1つ
の番地に対応する1バイトの記憶領域とその隣の番地に
対応する1バイトの記憶領域との境界をいう。
【0035】実行部108は、解読部105での解読結
果に従って、命令解読ブロック100やデータパスブロ
ック200の各構成部を制御し、データ転送や演算を行
う。尚、実行部108から出力される制御信号は各構成
部に送られるが、その接続は図1及び図2には示されて
いない。また、実行部108を含む全ての構成部は、図
示されていないクロック信号に同期して動作し、クロッ
クサイクルを単位として動作内容が変化する。 (命令フォーマット)次に、以上のように構成されたマ
イクロプロセッサの命令フォーマットについて説明す
る。図4は、その命令フォーマットを説明するためのビ
ットの構成図である。本マイクロプロセッサが解読して
実行できる全ての命令は、フォーマット1(図4
(a))又はフォーマット2(図4(b))のいずれか
に分類される。
【0036】フォーマット1に分類される命令は、1バ
イト長の基本命令語に1ニブル単位で拡張語が付加され
る可変長の構成となる。全ての命令は、基本命令語とそ
れに続く拡張語から構成されるが、拡張語を有しない場
合もある。ここで、基本命令語とは、命令の種類を特定
するオペレーションコードであり、解読部105が解読
する対象となるものをいう。拡張語とは、基本命令語に
よる演算等の操作の対象となるデータ(ディスプレース
メントや即値等)をいい、解読部105が解読する対象
とはならない。
【0037】例えば、”即値2をレジスタd0に格納さ
れた値に加算する”という命令”add #2,d0”
は、基本命令語”0c(hex)”と拡張語”2”から
なる”0c2(hex)”というコードで表現される。
基本命令語”0c”は、”続く1ニブルの拡張語の値を
レジスタd0の値に加算する”という演算操作を意味す
る。この例のように、本マイクロプロセッサによれば、
1ニブルで表現できる数値とレジスタの値との演算を指
示する命令であれば、合計3ニブル、即ち、12ビット
あれば足りる。ところが、1バイトを命令の拡張単位と
する従来のマイクロプロセッサであれば、上述と同一内
容の命令であっても、拡張語を”02”(hex)”と
せざるを得ないために、合計16ビットが必要とされ
る。
【0038】従って、フォーマット1に示される命令で
あれば、無駄な情報が排除されるので、同一内容の指示
をする命令であってもより少ないビット数で構成でき
る。一方、フォーマット2に分類される命令は、3ニブ
ル長の基本命令語に1ニブル単位で拡張語が付加される
可変長の構成となる。例えば、”即値ff(hex)と
レジスタd0に格納された値との排他的論理和をとる”
という命令”XOR#ff,d0”は、基本命令語”2
08(hex)”と拡張語”ff(hex)”からな
り、”208ff(hex)”というコードで表現され
る。基本命令語”208”は、”続く1バイトの拡張語
の値とレジスタd0の値との排他的論理和をとる”とい
う演算操作を意味する。この命令の場合には、基本命令
語の3ニブルが解読部105によって解読される。
【0039】尚、フォーマット2の基本命令語は、第1
ニブルのコードを”2”又は”3”に定義している。即
ち、基本命令語のコードが”2xx(hex)”又は”
3xx(hex)”となるよう定義している。これは、
第1ニブルの値のみによって、その命令が2種類の命令
フォーマットのいずれであるかを区別するためである。
【0040】以上の説明から明らかなように、本マイク
ロプロセッサの命令セットは、8、12、16、20、
24、、、というように、最小が8ビット長であり、こ
れに4ビット単位で拡張された語長になっている。即
ち、各命令の語長は、命令解読器のビット幅(8ビッ
ト)よりも小さいビット数(4ビット)を単位として拡
張された値に定義されている。従って、これらの命令セ
ットを用いることによって、命令解読器のビット幅(8
ビット)の単位で拡張された命令を用いる場合に比べ、
同一内容のプログラムであっても、無駄なコードを排除
することができるので、全体のコードサイズを圧縮する
ことができる。 (マイクロプロセッサの動作)次に、以上のように定義
された命令セットを備える本マイクロプロセッサの動作
について説明する。
【0041】尚、本マイクロプロセッサは、命令の語長
が、解読部105の入力の語長(8ビット)よりも小さ
い語長(4ビット)の単位で拡張されている点に特徴が
あるあるので、この点に起因する特徴的な動作について
説明し、8ビット単位で拡張された命令セットを備える
従来のマイクロプロセッサと異ならない動作についての
説明は省略する。データパスブロック200における動
作は、従来のマイクロプロセッサの場合と同様であるの
でその説明は省略し、命令解読ブロック100の動作を
中心に説明する。 (解読例1)先ず、命令が外部メモリのバイト境界に置
かれている場合における命令解読ブロック100の動作
について説明する。
【0042】図5は、5ニブル長の命令が本マイクロプ
ロセッサによって解読されて実行される場合の動作を説
明するための図である。図5(a)は、その命令のフォ
ーマットを示す図であり、3ニブルの基本命令語と2ニ
ブルの拡張語からなる。ここでは説明の便宜上、命令を
構成するコードをニブル単位で、A,B,C,D,Eと
表している。図5(b)は、この命令が外部メモリに置
かれている場合の各コードの配置を示す図である。尚、
基本命令語と拡張語では、外部メモリに置かれていると
きの各コードの配置順序が異なる。
【0043】図5(c)は、この命令が命令解読ブロッ
ク100に読み込まれた場合の、各クロックサイクルに
おける命令パイプライン、即ちIFB101、IB10
2、IR104に格納される各1バイト分のコードと記
憶部110に記憶される状態を示す表である。尚、図5
(c)の表に書かれている記号”−”は、この命令の実
行とは無関係であることを示している。
【0044】クロックサイクル1において、命令の最初
の1バイトのコード”BA”がIFB101にフェッチ
される。続いて、クロックサイクル2において、続く1
バイトのコード”EC”がIFB101にフェッチされ
ると共にIFB101に格納されていたコード”BA”
はIB102に転送される。尚、コードのフェッチや命
令パイプラインにおける転送は、クロックサイクルごと
に送られてくる実行部108からの指示に従って行われ
る。クロックサイクル2においては、この命令の直前の
命令の解読が終了しているので、状態はS2になってい
る。
【0045】クロックサイクル3が開始されると、先
ず、制御部109は、記憶部110に記憶されている状
態がS2であることを知ると共に、コードサイズ判断部
107から”次に解読すべきコードの語長は1バイトで
ある”旨の通知を受ける。その結果、制御部109は、
IB102に格納されている1バイト分のコードをIR
104に転送するようSI103に選択信号を出力する
と共に、状態S2を記憶部110に書き込む。その選択
信号に基づいて、SIH103aは、IBL102bに
格納されていたコード”A”をIRH104aに転送
し、SIL103bは、IBH102aに格納されてい
たコード”B”をIRL104bに転送する。
【0046】その結果、IR104に転送されたコー
ド”AB”は、解読部105によって解読される。コー
ドサイズ判断部107は、この命令の第1ニブルのコー
ド”A”を解読することによって、この命令はフォーマ
ット2、即ち基本命令語は3ニブル長であることを知
り、”次に解読すべきコードの語長は、残る基本命令語
の語長、即ち1ニブルである”と判断する。
【0047】クロックサイクル4においては、制御部1
09は、記憶部110に記憶されている状態がS2であ
ることを知ると共に、コードサイズ判断部107から”
次に解読すべきコードの語長は1ニブルである”旨の通
知を受ける。その結果、制御部109は、IBL102
bに格納されているコードをIRL104bに転送する
ようSI103に選択信号を出力すると共に、状態S1
を記憶部110に書き込む。その選択信号に基づいて、
SIH103aは、IRL104bに格納されていたコ
ード”B”をIRH104aに転送し、SIL103b
は、IBL102bに格納されていたコード”C”をI
RL104bに転送する。
【0048】その結果、IR104に転送されたコー
ド”BC”は、解読部105によって解読される。実行
部108は、解読部105での解読結果に基づいて、I
FB101及びIB102に格納されている拡張語”D
E”を内部Bバス204を介してデータパスブロック2
00に転送し、必要なデータ処理を行うことによってこ
の5ニブル長の命令の実行を終了する。
【0049】ここで、基本命令語の第1ニブル”A”
は、この命令が3ニブル長であるという情報だけを有
し、続く命令”BC”が、この命令の実質的な内容(例
えば、”レジスタの値と即値を加算する”等)を有する
ように定義されている。従って、実行部108は、コー
ド”BC”の解読結果に基づいて実行する際には、既に
行ったコード”AB”の解読結果を必要としない。
【0050】以上のようにして、3ニブル長の基本命令
語は、その語長が解読部105の入力語長の1.5倍で
あるにも拘らず、解読部105によって正しく解読され
実行される。 (解読例2)次に、命令が外部メモリのハーフバイト境
界に置かれている場合における命令解読ブロック100
の動作について説明する。
【0051】この命令のフォーマットは、図5(a)に
示された解読例1におけるフォーマットと同一とする。
図6(a)は、この命令が外部メモリに置かれている場
合の配置を、ニブル単位で示す図である。命令は、バイ
トの境界ではなく、ハーフバイト境界に置かれている点
が、図5(b)に示された解読例1の場合と異なる。以
下、解読例1と異なる点を中心に説明する。
【0052】図6(b)は、命令パイプラインの流れを
示す表であり、解読例1における図5(c)に対応す
る。クロックサイクル1において、第1ニブルのコー
ド”A”がIFB101にフェッチされ、続くクロック
サイクル2において、1バイトのコード”BC”がIF
B101にフェッチされる。このクロックサイクル2に
おいては、この命令の直前の命令の最終ニブルがハーフ
バイト境界に置かれていたので、状態はS1になってい
る。
【0053】クロックサイクル3が開始されると、先
ず、制御部109は、記憶部110に記憶されている状
態がS1であることを知ると共に、コードサイズ判断部
107から”次に解読すべきコードの語長は1バイトで
ある”旨の通知を受ける。その結果、制御部109は、
IFB101とIB102とに跨って格納されている1
バイトのコードをIR104に転送するようSI103
に選択信号を出力すると共に、状態S1を記憶部110
に書き込む。その選択信号に基づいて、SIH103a
は、IBH102aに格納されていたコード”A”をI
RH104aに転送し、SIL103bは、IFBL1
01bに格納されていたコード”B”をIRL104b
に転送する。
【0054】その結果、IR104に転送されたコー
ド”AB”は、解読部105によって解読される。コー
ドサイズ判断部107は、この命令の第1ニブルのコー
ド”A”を解読することによって、この命令はフォーマ
ット2、即ち基本命令語は3ニブル長であることを知
り、”次に解読すべきコードの語長は、残る基本命令語
の語長、即ち1ニブルである”と判断する。
【0055】クロックサイクル4においては、制御部1
09は、記憶部110に記憶されている状態がS1であ
ることを知ると共に、コードサイズ判断部107から”
次に解読すべきコードの語長は1ニブルである”旨の通
知を受ける。その結果、制御部109は、IBH102
aに格納されているコードをIRL104bに転送する
ようSI103に選択信号を出力すると共に、状態S2
を記憶部110に書き込む。その選択信号に基づいて、
SIH103aは、IRL104bに格納されていたコ
ード”B”をIRH104aに転送し、SIL103b
は、IBH102aに格納されていたコード”C”をI
RL104bに転送する。
【0056】その結果、IR104に転送されたコー
ド”BC”は、解読部105によって解読される。実行
部108は、解読部105での解読結果に基づいて、I
B102に格納されている拡張語”DE”を内部Bバス
204を介してデータパスブロック200に転送し、必
要なデータ処理を行うことによってこの5ニブル長の命
令の実行を終了する。
【0057】以上のようにして、外部メモリのハーフバ
イト境界に置かれている命令であっても、本マイクロプ
ロセッサによって正しく解読され実行される。 (分岐例1)次に、ハーフバイト境界から始まるプログ
ラムに分岐するための、分岐命令のフォーマット及び本
プロセッサの動作について説明する。
【0058】図7は、無条件分岐命令jmpのフォーマ
ットを示す。この命令は、8ビットの基本命令語と16
ビットの拡張語を併せた6ニブル長のコードからなる。
ところで、本マイクロプロセッサにおいては、命令が外
部メモリのハーフバイト境界から始まる位置に置かれる
場合があるので、分岐先のメモリ番地を特定するために
は16ビットでは足りない。即ち、16ビットで特定さ
れるメモリ番地であっても、その番地の上位ニブル又は
下位ニブルのいずれに置かれた命令に分岐すべきかを指
定する必要がある。そのために、無条件分岐命令である
ことを特定するための8ビットの基本命令語に、分岐先
番地を特定するための17ビット以上の拡張語を併せた
語長、即ち7ニブル長の命令とすることもできる。
【0059】しかし、7ニブル長のコードを用いてjm
p命令を定義したのでは、このコードの中に実質的に使
用されない3ビット分の無駄なコードが含まれることに
なり、コードサイズの縮小化が阻害される。そこで、図
7に示されるように、jmp命令の基本命令語の最下位
ビットを、分岐先の命令が外部メモリ上のハーフバイト
境界に置かれているか否かを示すための情報として定義
している。即ち、基本命令語の最下位1ビットと拡張語
の2バイトを併せた合計17ビットによって、分岐先の
メモリ番地が特定されるようjmp命令のコードを定義
している。これによって、無条件分岐命令jmpは、7
ニブル長ではなく6ニブル長のコードに圧縮して定義さ
れるので、無駄なコードの発生が回避される。
【0060】次に、このjmp命令が実行された場合
の、本マイクロプロセッサの動作を説明する。今、この
3バイト長のjmp命令が外部メモリからフェッチされ
て、IFB101、IB102及びIR104に保持さ
れているとする。解読部105は、IR104に格納さ
れている基本命令語の最下位ビットの情報だけを制御部
109に送る。制御部109は、送られてきた情報が”
1”である場合には状態S1を記憶部110に書き込
み、”0”である場合には状態S2を書き込む。
【0061】同時に、解読部105は、IR104に格
納されている基本命令語の上位7ビット分のコードを解
読することによって、この命令が無条件分岐命令である
ことを実行部108に通知する。この通知を受けた実行
部108は、IFB101及びIB102に格納されて
いる16ビット分の分岐先番地をデータパスブロック2
00に転送し、さらに外部アドレスバス212に出力さ
せる。その結果、外部アドレスバス212によって指定
されたメモリ番地から始まる外部メモリ上の命令が、1
バイト単位で命令解読ブロック100に取り込まれてい
く。
【0062】分岐先の先頭の1バイト分のコードがIB
102に転送されると、制御部109は、次のクロック
サイクルにおいて解読すべきコードを決定するために、
記憶部110に記憶されている状態に従ってSI103
を制御する。具体的には、記憶部110に状態S2が記
憶されていた場合には、制御部109は、IB102に
保持されている1バイト分のコードをIR104に転送
するようSI103を制御する。この制御は、上述の解
読例1のクロックサイクル3での制御と同様であり、外
部メモリ上に置かれていたバイト境界から始まる命令を
解読することに相当する。即ち、この場合は、バイト境
界への分岐処理に該当する。
【0063】一方、記憶部110に状態S1が記憶され
ていた場合には、制御部109は、IFB101とIB
102とに跨る1バイト分のコードをIR104に転送
するようSI103を制御する。この制御は、上述の解
読例2のクロックサイクル3での制御と同様であり、外
部メモリ上に置かれていたハーフバイト境界から始まる
命令を解読することに相当する。即ち、この場合は、ハ
ーフバイト境界への分岐処理に該当する。
【0064】以上の動作によって、3バイト長の無条件
分岐命令jmpによる、バイト境界又はハーフバイト境
界への分岐処理が終了する。 (分岐例2)次に、分岐後に戻るべきメモリ番地がハー
フバイト境界である場合における、サブルーチン分岐命
令(以下、「jsr命令」という。)を実行した本プロ
セッサの動作について説明する。
【0065】ここで、jsr命令とは、指定されたメモ
リ番地への分岐処理に先立ち、この命令が置かれている
メモリ番地の次の番地を戻り番地としてスタックポイン
タ(SP)202aが示す記憶領域(以下、単に「スタ
ック」という。)に退避しておく処理を伴うような分岐
命令をいう。この命令は、サブルーチンの終了を指示す
るリターン命令と対で用いられる。リターン命令が実行
されると、スタックに退避していた戻り番地を読み出
し、その番地に戻る処理が行われる。
【0066】ところで、外部メモリ上のハーフバイト境
界に戻る場合を考慮すると、分岐例1で説明したよう
に、戻り番地を指定するには17ビットが必要とされ
る。従って、スタックに退避する戻り番地のコードは、
2バイトでは足りず3バイトが必要とされる。即ち、j
sr命令やリターン命令を実行するたびに、スタックに
対して3回ずつアクセスする必要が生じる。
【0067】しかしながら、同一内容のプログラムであ
っても、スタックへのアクセスの頻度が多くなると、そ
の処理に要する時間だけマイクロプロセッサによるスル
ープットが低下する。特に、C言語で作成されたプログ
ラムにおいては、一般にスタックを使用する頻度が多い
ため、そのスループットは、スタックへのアクセス回数
の影響を強く受ける。
【0068】そこで、本マイクロプロセッサでは、戻り
番地がハーフバイト境界となる場合であっても、スタッ
クへの退避が2バイトで済むように工夫している。以下
に、その内容について説明する。jsr命令のフォーマ
ットは、図7に示された無条件分岐命令と同一である。
即ち、この命令は、1バイトの基本命令語に2バイトの
拡張語を付加した合計3バイトからなり、分岐先番地
は、基本命令語の最下位ビットと拡張語の16ビットを
併せた合計17ビットにより特定される。従って、分岐
先が外部メモリのバイト境界であってもハーフバイト境
界であっても分岐例1の場合と同様に実行される。
【0069】次に、jsr命令が実行された場合におけ
る、本マイクロプロセッサの動作について図8に示され
たフローチャートを用いて説明する。この命令の基本命
令語がIR104に格納されると、ワードアライン判断
部106は、この命令がjsr命令であることを認識す
ると同時に、記憶部110に記憶されている状態を参照
することにより、この命令が外部メモリ上のバイト境界
に置かれていたかハーフバイト境界に置かれていたかを
判断し、その結果を実行部108に通知する(ステップ
S81)。
【0070】この命令が外部メモリ上のバイト境界に置
かれていた旨の通知を受けた実行部108は、この命令
自体の語長は上述の定義通り6ニブルであると認識し
(ステップS82)、この命令の直後に置かれている命
令のメモリ番地、即ち、16ビットで表わされるバイト
境界を示すメモリ番地をスタックに退避する(ステップ
S84)。図9(a)は、外部メモリ上のバイト境界に
置かれているjsr命令と、戻り番地の関係を示す図で
ある。
【0071】一方、この命令が外部メモリ上のハーフバ
イト境界に置かれていた旨の通知を受けた実行部108
は、この命令自体の語長は6ニブルではなく7ニブルで
あるとみなし(ステップS83)、この7ニブル長の命
令の直後に置かれている命令のメモリ番地、即ち、16
ビットで表わされるバイト境界を示すメモリ番地をスタ
ックに退避する(ステップS84)。具体的には、実行
部108は、この命令が置かれていたメモリ番地を解読
用カウンタ(DECPC)205から読み出して演算器
(ALU)208に送り、この命令自体が7ニブル長で
あるとした場合の戻り番地を算出し、スタックに書き込
むよう各構成部を制御する。図9(b)は、外部メモリ
上のハーフバイト境界に置かれているjsr命令と、戻
り番地の関係を示す図である。
【0072】戻り番地をスタックに退避した後の動作は
分岐例1での動作と同様であり、実行部108は、この
命令の下位17ビットで特定されるサブルーチンの先頭
番地に分岐するための処理を行う(ステップS85)。
以上のようにして、このjsr命令が外部メモリ上のバ
イト境界又はハーフバイト境界のいずれの位置に配置さ
れている場合であっても、スタックに退避する戻り番地
は、2バイトで済む。
【0073】尚、サブルーチンの処理を終えて、リター
ン命令を実行した場合には、実行部108は、スタック
に退避されていた2バイトの戻り番地を読み出してアド
レスバッファ(ADB)209に格納し、その番地から
始まる命令を実行するよう各構成部を制御する。ところ
で、以上のようにjsr命令が実行される前提として、
jsr命令とその次の命令が、上述の動作と整合して外
部メモリ上に配置されている必要がある。即ち、jsr
命令を外部メモリ上のハーフバイト境界に配置した場合
には、その次の命令は、そのjsr命令が6ニブル長で
はなく7ニブル長の命令であるとみなして、外部メモリ
上に配置しておく必要があるのは言うまでもない。その
処理は、一般にリンカーと呼ばれるメモリ番地割付プロ
グラムによって実現されるものであり、本マイクロプロ
セッサの動作とは直接には関係しないので、その説明は
省略する。
【0074】以上の説明から明らかなように、本マイク
ロプロセッサにおいては、jsr命令が実行された場合
には、その命令が置かれているメモリ番地の境界に拘ら
ず、常に2バイトの戻り番地を退避するだけで済む。従
って、3バイトの戻り番地を退避する場合に比べ、プロ
グラムの処理時間が短縮される。以上、本発明に係るマ
イクロプロセッサについて、実施例に基づいて説明した
が、本発明はこれら実施例に限られないことは勿論であ
る。即ち、 (1)本実施例では、命令を解読する際の単位、即ち、
1ワードが8ビットであったが、このビット数に限定さ
れるものではない。例えば、1ワードが12ビットであ
ってもよい。その場合には、命令解読ブロック100及
びデータパスブロック200において、8ビットで構成
されている全ての構成部のビット幅を12ビットし、さ
らに、外部メモリに配置するコードを12ビット単位と
すればよい。 (2)本実施例では、IB102におけるコードの格納
状態が記憶部110に記憶されたが、IB102に限定
されるものではない。例えば、IFB101とIB10
2におけるコードの格納状態が記憶されてもよい。これ
によって、IB102だけでなく、IFB101でのコ
ードの有無による柔軟な制御が可能になる。 (3)本実施例における命令パイプラインは、IFB1
01、IB102及びSI103からなる3段である
が、この段数に限定されるものではない。
【0075】
【発明の効果】以上の説明から明らかなように、請求項
及び2記載のマイクロプロセッサによれば、命令の語
長は、1ワード、即ち解読器が一度に解読するコードの
語長の整数倍に限定されない。従って、命令を構成する
コードの中に、使用されない無駄なビットが含まれる割
合を低減することができる。
【0076】これによって、同一内容のプログラムであ
っても、コードサイズが縮小されたプログラムの作成が
可能になるという効果がある。請求項記載のマイクロ
プロセッサによれば、命令の語長は、ハーフワードを単
位として拡張された値となる。従って、ハーフワードを
単位としてきめ細かく命令を定義したり、データを指定
したりできる。
【0077】請求項記載のマイクロプロセッサによれ
ば、次に解読すべきコードが命令バッファにどのように
配置されているかを、ハーフワード単位で判断すること
ができる。請求項記載のマイクロプロセッサによれ
ば、命令バッファに保持されたコードを、ハーフワード
単位で独立して解読レジスタに転送し、解読することが
できる。
【0078】請求項記載のマイクロプロセッサによれ
ば、外部メモリ上の2つの番地に跨って置かれた1ワー
ド長のコードであっても正しく解読され実行される。請
求項記載のマイクロプロセッサによれば、外部メモリ
上の下位の位置に置かれたハーフワード長のコードであ
っても正しく解読され実行される。請求項記載のマイ
クロプロセッサによれば、外部メモリ上の上位の位置に
置かれたハーフワード長のコードであっても正しく解読
され実行される。
【0079】請求項記載のマイクロプロセッサによれ
ば、外部メモリ上のハーフワード境界に置かれたサブル
ーチン分岐命令を実行する場合であっても、その命令が
ワード境界に置かれていた場合と同じビット数からなる
戻り番地を退避するだけで済む。従って、スタックへの
アクセス頻度が減少すると共に、スタックの無駄な消費
を回避できる。
【0080】これによって、同一内容のプログラムを実
行した場合であっても、そのスループットを向上させる
ことができるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施例に係るマイクロプロセッサの構
成を示すブロック図である。
【図2】同実施例に係るマイクロプロセッサの命令解読
ブロック100の詳細な構成を示すブロック図である。
【図3】同実施例に係るマイクロプロセッサのIB10
2におけるコードの格納状態を示す図である。
【図4】同実施例に係るマイクロプロセッサが実行する
命令の2種類のフォーマットを示す図である。
【図5】図5(a)は、同実施例における5ニブル長の
命令のフォーマットを示す図である。図5(b)は、図
5(a)に示された命令が外部メモリ上のバイト境界に
置かれている場合の各コードの配置を示す図である。図
5(c)は、図5(a)に示された命令が命令解読ブロ
ック100に読み込まれた場合の、各クロックサイクル
における命令パイプラインの流れを示す図である。
【図6】図6(a)は、図5(a)に示された命令が外
部メモリ上のハーフバイト境界に置かれている場合の各
コードの配置を示す図である。図6(b)は、図5
(a)に示された命令が命令解読ブロック100に読み
込まれた場合の、各クロックサイクルにおける命令パイ
プラインの流れを示す図である。
【図7】同実施例における無条件分岐命令jmpのフォ
ーマットを示す図である。
【図8】同実施例において、jsr命令が実行された場
合における、本マイクロプロセッサの動作を示すフロー
チャートである。
【図9】図9(a)は、同実施例において、外部メモリ
上のバイト境界に置かれているjsr命令と戻り番地の
関係を示す図である。図9(b)は、同実施例におい
て、外部メモリ上のハーフバイト境界に置かれているj
sr命令と、戻り番地の関係を示す図である。
【図10】従来のマイクロプロセッサにおける命令のビ
ット構成を示す図である。
【符号の説明】
101a IFBH 101b IFBL 102a IBH 102b IBL 103a SIH 103b SIL 104a IRH 104b IRL 105 解読部 106 ワードアライン判断部 107 コードサイズ判断部 108 実行部 109 制御部 110 記憶部
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平3−97031(JP,A) 特開 昭54−122043(JP,A) 特開 平4−101230(JP,A) 特開 平3−33931(JP,A) 特開 昭61−33545(JP,A) 特開 昭63−244233(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/355 G06F 9/40 - 9/42

Claims (11)

    (57)【特許請求の範囲】
  1. 【請求項1】 コード化された命令を逐一に解読する解
    読器と、前記解読器による解読結果に基づいてデータ処
    理を実行する実行手段とを備えるマイクロプロセッサで
    あって、 前記命令の語長wは、前記解読器が一度に解読するコー
    ドの最小語長をaとし、aよりも小さい語長をbとした
    場合に、 w=a+nb (但し、nは0及び1を含む正の整数と
    する) で表され、 前記実行手段は、少なくとも語長がaである命令と語長
    が(a+b)である命令を実行することを特徴とするマ
    イクロプロセッサ。
  2. 【請求項2】 前記bは、前記aを1ワードとした場合
    に、ハーフワードであることを特徴とする請求項1記載
    のマイクロプロセッサ。
  3. 【請求項3】 前記マイクロプロセッサはさらに、 先読みした命令を保持する命令バッファと、 前記解読器で解読する1ワードのコードをハーフワード
    ずつ分割して保持する上位側解読レジスタと下位側解読
    レジスタと、 前記解読器による解読結果に基づいて、次に新たに前記
    解読レジスタに転送すべきコードの語長がハーフワード
    であるか1ワードであるかを判断する第1の判断手段
    と、 前記第1の判断手段においてハーフワードと判断された
    場合、前記下位側解読レジスタに格納されたコードを前
    記上位側解読レジスタに転送するともに、前記命令バッ
    ファに格納された次に転送すべきハーフワードのコード
    を前記下位側解読レジスタに転送する選択手段とを備え
    ることを特徴とする請求項2記載のマイクロプロセッ
    サ。
  4. 【請求項4】 前記マイクロプロセッサはさらに、 先読みした命令を保持する命令バッファと、 前記命令バッファにおける命令のハーフワード単位での
    格納状態を記憶する記憶手段と、 前記解読器による解読結果に基づいて、次に解読すべき
    コードの語長がハーフワードであるか1ワードであるか
    を判断する第1の判断手段と、 判断された語長と前記格納状態とに基づいて、前記命令
    バッファに格納されたコードを前記解読器に取り込むよ
    う前記命令バッファを制御すると共に前記格納状態を更
    新する制御手段とを備えることを特徴とする請求項2記
    載のマイクロプロセッサ。
  5. 【請求項5】 前記マイクロプロセッサはさらに、 先読みした命令を保持する命令バッファと、 前記命令バッファにおける命令のハーフワード単位での
    格納状態を記憶する記憶手段と、 前記解読器で解読する1ワードのコードをハーフワード
    ずつ分割して保持する上位側解読レジスタと下位側解読
    レジスタと、 前記格納状態に基づいて、前記命令バッファに格納され
    たコードを前記解読レジスタに取り込むよう前記命令バ
    ッファを制御すると共に前記格納状態を更新する制御手
    段と、 前記解読器による解読結果に基づいて、次に新たに前記
    解読レジスタに転送すべきコードの語長がハーフワード
    であるか1ワードであるかを判断する第1の判断手段
    と、 前記第1の判断手段においてハーフワードと判断された
    場合、前記下位側解読レジスタに格納されたコードを前
    記上位側解読レジスタに転送するともに、前記命令バッ
    ファに格納された次に転送すべきハーフワードのコード
    を前記下位側解読レジスタに転送する選択手段とを備え
    ることを特徴とする請求項2記載のマイクロプロセッ
    サ。
  6. 【請求項6】 前記命令バッファは、最新にフェッチし
    た1ワードのコードを保持する第1レジスタと、その直
    前にフェッチした1ワードのコードを保持する第2レジ
    スタとからなり、 前記第1のレジスタは、1ワードのコードをハーフワー
    ドずつ分割して保持する上位側第1レジスタと下位側第
    1レジスタとからなり、 前記第2のレジスタは、1ワードのコードをハーフワー
    ドずつ分割して保持する上位側第2レジスタと下位側第
    2レジスタとからなり、 前記選択手段は、少なくとも前記上位側第2レジスタと
    前記下位側第2レジスタと前記下位側解読レジスタとか
    ら選択した1つのレジスタに保持されているコードを前
    記上位側解読レジスタに転送する上位側選択手段と、少
    なくとも前記下位側第1レジスタと前記上位側第2レジ
    スタと前記下位側第2レジスタとから選択した1つのレ
    ジスタに保持されているコードを前記下位側解読レジス
    タに転送する下位側選択手段とからなり、 前記記憶手段は、前記上位側第2レジスタ及び前記下位
    側第2レジスタのいずれにもコードが保持されていない
    第1の状態と、前記上位側第2レジスタにはコードが保
    持されているが前記下位側第2レジスタにはコードが保
    持されていない第2の状態と、前記上位側第2レジスタ
    及び前記下位側第2レジスタにコードが保持されている
    第3の状態のいずれかの格納状態を記憶することを特徴
    とする請求項5記載のマイクロプロセッサ。
  7. 【請求項7】 前記制御手段は、前記記憶手段に記憶さ
    れている状態が第2の状態であり、かつ前記第1の判断
    手段により次に解読すべきコードの語長が1ワードであ
    ると判断された場合には、前記上位側選択手段が前記上
    位側第2レジスタに保持されているコードを前記上位側
    解読レジスタに転送し、前記下位側選択手段が前記下位
    側第1レジスタに保持されているコードを前記下位側解
    読レジスタに転送するよう前記選択手段を制御すること
    を特徴とする請求項6記載のマイクロプロセッサ。
  8. 【請求項8】 前記制御手段は、前記記憶手段に記憶さ
    れている状態が第3の状態であり、かつ前記第1の判断
    手段により次に解読すべきコードの語長がハーフワード
    であると判断された場合には、前記上位側選択手段が前
    記下位側解読レジスタに保持されているコードを前記上
    位側解読レジスタに転送し、前記下位側選択手段が前記
    下位側第2レジスタに保持されているコードを前記下位
    側解読レジスタに転送するよう前記選択手段を制御する
    と共に、前記記憶手段に記憶する状態を第2の状態に更
    新することを特徴とする請求項6記載のマイクロプロセ
    ッサ。
  9. 【請求項9】 前記制御手段は、前記記憶手段に記憶さ
    れている状態が第2の状態であり、かつ前記第1の判断
    手段により次に解読すべきコードの語長がハーフワード
    であると判断された場合には、前記上位側選択手段が前
    記下位側解読レジスタに保持されているコードを前記上
    位側解読レジスタに転送し、前記下位側選択手段が前記
    上位側第2レジスタに保持されているコードを前記下位
    側解読レジスタに転送するよう前記選択手段を制御する
    と共に、前記記憶手段に記憶する状態を第3の状態に更
    新することを特徴とする請求項6記載のマイクロプロセ
    ッサ。
  10. 【請求項10】 前記プロセッサはさらに、 前記記憶手段に記憶された格納状態と前記解読器での解
    読結果とに基づいて、前記解読器によって解読された命
    令がハーフワードで終了するメモリ上の位置に置かれて
    いたサブルーチン分岐命令であるかどうかを判断する第
    2の判断手段を備え、 前記実行手段は、前記命令がハーフワードで終了するメ
    モリ上の位置に置かれていたサブルーチン分岐命令であ
    ると判断された場合には、その位置に該当するメモリ番
    地にハーフワードのコードに相当する番地を加算したメ
    モリ番地をサブルーチンからの戻り番地とみなしてサブ
    ルーチンへの分岐処理を実行することを特徴とする請求
    項4記載のマイクロプロセッサ。
  11. 【請求項11】 先読みした命令を保持する命令バッフ
    ァと、 コード化された命令を1ワードずつ解読する解読器と、 前記解読器で解読する1ワードのコードをハーフワード
    ずつ分割して保持する上位側解読レジスタと下位側解読
    レジスタと、 前記解読器による解読結果に基づいて、次に新たに前記
    解読レジスタに転送すべきコードの語長がハーフワード
    であるか1ワードであるかを判断する第1の判断手段
    と、 前記第1の判断手段においてハーフワードと判断された
    場合、前記下位側解読レジスタに格納されたコードを前
    記上位側解読レジスタに転送するともに、前記命令バッ
    ファに格納された次に転送すべきハーフワードのコード
    を前記下位側解読レジスタに転送する選択手段とを備え
    ることを特徴とするマイクロプロセッサ。
JP13328195A 1995-05-31 1995-05-31 コードサイズ縮小化マイクロプロセッサ Expired - Lifetime JP3199603B2 (ja)

Priority Applications (10)

Application Number Priority Date Filing Date Title
JP13328195A JP3199603B2 (ja) 1995-05-31 1995-05-31 コードサイズ縮小化マイクロプロセッサ
US08/643,947 US5966514A (en) 1995-05-31 1996-05-07 Microprocessor for supporting reduction of program codes in size
KR1019960015261A KR100436015B1 (ko) 1995-05-31 1996-05-09 프로그램의코드크기의축소화를지원하는마이크로프로세서
EP01111215A EP1143333B1 (en) 1995-05-31 1996-05-30 Microprocessor for supporting reduction of program codes in size
EP96303914A EP0745932B1 (en) 1995-05-31 1996-05-30 Microprocessor supporting variable length instruction execution
DE69630416T DE69630416T2 (de) 1995-05-31 1996-05-30 Mikroprozessor zur Ausführung von Befehlen mit variablen Längen
DE69632970T DE69632970T2 (de) 1995-05-31 1996-05-30 Mikroprozessor mit reduzierten Programmcodes
CNB021574936A CN1286004C (zh) 1995-05-31 1996-05-31 支持程序编码长度减小的微处理器
CN96107762A CN1114153C (zh) 1995-05-31 1996-05-31 支持程序编码长度减小的微处理器
US09/226,791 US6253305B1 (en) 1995-05-31 1999-01-07 Microprocessor for supporting reduction of program codes in size

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13328195A JP3199603B2 (ja) 1995-05-31 1995-05-31 コードサイズ縮小化マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JPH08328850A JPH08328850A (ja) 1996-12-13
JP3199603B2 true JP3199603B2 (ja) 2001-08-20

Family

ID=15100980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13328195A Expired - Lifetime JP3199603B2 (ja) 1995-05-31 1995-05-31 コードサイズ縮小化マイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP3199603B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100379837B1 (ko) * 2000-06-30 2003-04-11 주식회사 에이디칩스 확장명령어 축약장치

Also Published As

Publication number Publication date
JPH08328850A (ja) 1996-12-13

Similar Documents

Publication Publication Date Title
US6405302B1 (en) Microcomputer
KR100327777B1 (ko) 다중명령 세트를 이용한 데이터 프로세싱 장치
US5809306A (en) Variable address length compiler and processor improved in address management
JP2816248B2 (ja) データプロセッサ
JP3203401B2 (ja) データ処理装置
US5966514A (en) Microprocessor for supporting reduction of program codes in size
US6631459B1 (en) Extended instruction word folding apparatus
JPH07120278B2 (ja) データ処理装置
JP2003044273A (ja) データ処理装置及びデータ処理方法
US20070101101A1 (en) Microprocessor
JP3030297B2 (ja) コンピュ―タ・システム
US20020116599A1 (en) Data processing apparatus
US6209080B1 (en) Constant reconstruction processor that supports reductions in code size and processing time
JPH08212075A (ja) 情報処理装置
JP3199603B2 (ja) コードサイズ縮小化マイクロプロセッサ
JP3504355B2 (ja) プロセッサ
JPH0769806B2 (ja) データ処理装置
JP3901670B2 (ja) データ処理装置
JP3030298B2 (ja) コンピュ―タ・システム
US5463747A (en) Microprogram data processor processing operand address calculation and instruction execution with common hardware
JP3472504B2 (ja) 命令解読方法、命令解読装置及びデータ処理装置
JP2004005738A5 (ja)
JP3199604B2 (ja) プロセッサ
US20060101248A1 (en) Method and programmable unit for bit field shifting
JPH117388A (ja) プロセッサ

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080615

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090615

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100615

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100615

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110615

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20120615

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20120615

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20130615

Year of fee payment: 12

EXPY Cancellation because of completion of term