JP2001222426A - 命令コード変換装置、情報処理システム及び命令コード作成方法 - Google Patents

命令コード変換装置、情報処理システム及び命令コード作成方法

Info

Publication number
JP2001222426A
JP2001222426A JP2000030948A JP2000030948A JP2001222426A JP 2001222426 A JP2001222426 A JP 2001222426A JP 2000030948 A JP2000030948 A JP 2000030948A JP 2000030948 A JP2000030948 A JP 2000030948A JP 2001222426 A JP2001222426 A JP 2001222426A
Authority
JP
Japan
Prior art keywords
instruction code
address
instruction
compressed
memory
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.)
Granted
Application number
JP2000030948A
Other languages
English (en)
Other versions
JP3556556B2 (ja
Inventor
Moriyasu Tomono
守保 伴野
Tomoaki Shoda
智章 正田
Hiroshi Itaya
博史 板谷
Tomotaka Saito
智隆 斉藤
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000030948A priority Critical patent/JP3556556B2/ja
Priority to US09/778,069 priority patent/US6801996B2/en
Priority to EP01301062.4A priority patent/EP1124180B1/en
Publication of JP2001222426A publication Critical patent/JP2001222426A/ja
Application granted granted Critical
Publication of JP3556556B2 publication Critical patent/JP3556556B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions

Landscapes

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

Abstract

(57)【要約】 【課題】 この発明は、CPUを新規設計/改変するこ
となく、命令の追加を実現してコード効率を向上させ、
命令を格納するプログラムメモリの容量を削減すること
を課題とする。 【解決手段】 この発明は、外部から与えられるアドレ
スをシフト操作することにより、圧縮命令コードをアク
セスするアドレスを生成し、このアドレスにしたがって
アクセスされた圧縮命令コードを該圧縮命令コードに対
応した非圧縮命令コードに伸張変換するように構成され
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、圧縮命令を含む命
令コードを変換する命令コード変換装置、ならびにこの
命令コード変換装置に与える命令コードを生成する命令
コード生成方法、及び前記命令コード変換装置を含んで
情報処理を行う情報処理システムに関する。
【0002】
【従来の技術】CPU、特にRISCプロセッサの場合
に、多ビットの固定長命令コード(32ビット長が多
い)は、一般的に可変長命令コード(8〜32ビット長
が多い)のCISCプロセッサに比べてコード効率が低
く、プログラムメモリの使用量が増える。コストにセン
シビリティなパーソナル機器においては、より大容量な
メモリの使用やより多くのメモリチップの搭載が必要と
なるプロセッサの採用は困難であった。コード効率が悪
くなるのは、そのRISCプロセッサのアーキテクチャ
によって差違があるが、以下の2点が大きな要因であ
る。
【0003】(a)命令コードが32ビット長固定と長
いこと。
【0004】(b)命令の種類が少ないこと。
【0005】そこで、コード効率を改善するため、要因
(a)に対する施策としては、16ビット固定長のRI
SCプロセッサや16/32ビットの可変長のRISC
プロセッサが開発された。また、要因(b)に対する施
策としては、CISC並みの豊富な命令を持つRISC
プロセッサが開発された。16ビット固定長のプロセッ
サは、命令が16ビット長なので、命令数に制約がある
ことと、扱えるイミディエイト値に制約(例えば16ビ
ットデータは直接扱えない)があることの2点で要因
(b)が残り、コード効率は大きく改善されない。ま
た、必要命令数が増えるため、32ビット固定長のプロ
セッサに比べて周波数あたりの性能が低くなる。
【0006】そこで、16/32ビットの可変長のRI
SCプロセッサが登場した。高速処理は32ビット長命
令で実行し、コード効率優先の処理は16ビット長命令
又は16ビット/32ビット長命令の混在で実行させ
る。
【0007】既存のプロセッサに追加する命令セットと
しては、命令モード(元の32ビット長の命令を実行す
るモードと、追加された16ビット長又は16ビット/
32ビット長の命令を実行するモードとがある)を切り
換える命令や、元の32ビット長命令セットにはない独
自命令を追加しているため、CPUの改変が必要であ
る。例えば追加された圧縮命令セットを伸張する命令コ
ード伸張回路をCPU内に追加するとともに、元の32
ビット長命令セットにはない独自命令のための命令解読
回路が追加されている。さらに、パイプライン制御回路
などCPU内の回路の変更が行われている。命令モード
を示すレジスタは、プログラムカウンタの最下位ビット
に割り当て、このレジスタの値で命令コード伸張回路と
命令解読回路とを制御させる。
【0008】CISC風の複雑な命令を搭載したRIS
Cプロセッサでは、CPUの命令実行回路が複雑とな
り、RISC本来の思想である命令を単純化し、周波数
を上げて高速処理を行うことが困難である。したがっ
て、比較的低速(100MHz未満)のプロセッサしか
現在は開発されていない。
【0009】一方、コード効率を上げるには、下記に示
すような様々な手法が従来から提案されている。
【0010】第1の方法は、プログラムのコードを生成
するコンパイラ/アセンブラを改良して、よりステップ
数の少ない、あるいはコードの短い命令コード列を生成
させる方法である。ソースプログラムはC言語などの高
級言語で一般的に記述されている。ソースプログラムは
コンパイラによってアセンブリ言語で記述されたプログ
ラムに変換される。アセンブリ言語のプログラムはアセ
ンブラによってCPUが認識可能な命令コードで記述さ
れたオブジェクトプログラムに変換される。ステップ数
とは、命令コードの数を指し、同じソースプログラムか
らできるだけ少ない数の命令コードに変換されるように
これらのコンパイラ/アセンブラを改良する。一方、C
PUによっては、同一の機能を果たす命令コードを複数
持っている。アセンブラはその命令コードの中からより
短いコード長の命令コードに変換するようアセンブラを
改良する。このアセンブラの機能は最適化と呼ばれ、こ
の機能を改良することでコードを短くする。
【0011】第2の方法は、CPUに命令を追加して、
よりステップ数の少ないあるいはコードの短いコード列
を生成させる方法である。既存の命令では複数の命令で
表現せざるを得なかったものを、1つの命令で表現でき
るようにする場合と、既存の命令をより短いコードで表
現する場合とがある。
【0012】第3の方法は、第2の方法の変形で、追加
された命令を1命令単位に元からCPUが持っている命
令コードに伸張する方法で、追加命令として、既存の命
令コードより短い命令コードを用意する。
【0013】第4の方法は、CPUの命令を新規の命令
に変更し、よりステップ数の少ない、あるいはコードの
短いコード列を生成させる方法である。
【0014】第5の方法は、CPUが持つ命令のコード
で記述されたプログラムを、その全体あるいは一部をソ
フトウェアで圧縮し、実行前にソフトウェアまたはハー
ドウェアで伸張する方法である。この方法は、ファイル
の圧縮/解凍と同様、ZIP形式やLZH形式など様々
な手法に基づき、実行前のプログラムメモリ使用容量を
削減することができる。
【0015】第6の方法は、第5の方法の変形で、プロ
グラムを複数のブロックに分割し、そのブロック毎にソ
フトウェアで圧縮し、ブロック毎にハードウェアで伸張
しながら実行させる方法である。
【0016】上記第1の方法では、CPUの持つ命令コ
ードを最も有効に活用するところまでしかコード効率の
改善ができないので限界がある。さらなる改善が必要と
なった場合は第2〜6の方法を取る必要がある。第2お
よび第4の方法は、新しいCPUを開発することを意味
し、コンパイラ/アセンブラなどの言語ツール、ICE
/デバッガなどの検証ツール、OS,Co−simul
ationなどのCPUとプログラムやシステムの開発
支援ツールの開発には、膨大なリソースと開発期間とを
要する。特に汎用CPUの場合、ユーザによって開発環
境が異なるため、複数の開発支援ツールを揃える必要が
あり、その開発負担は極めて大きい。
【0017】第3の方法は、追加された命令が既存の命
令に比べてコード長が短くなるため、その追加命令をプ
ログラムメモリから読み出すためにプログラムメモリに
与えるアドレスが、CPUアドレスと一致するようCP
Uの改変が行われる。例えば図23に示すように、既存
の命令が32ビット固定長で、追加の命令が16ビット
長である場合は、32ビット長の命令コードは4バイト
のメモリを使用するため、命令が追加される前のCPU
アドレスは4の倍数であるが、16ビット長の命令コー
ドは2バイトのメモリを使用するため、追加後は2の倍
数でなければならない。そのため、CPUアドレスが2
の倍数となるようCPUの改造を行っている。また、追
加された命令セットと元の命令セットとを混在させるこ
とができるよう、どちらの命令セットであるかを選択す
るための命令も追加している。第3の方法は、上記第2
の方法に比べれば、CPUの改変、プログラム開発支援
ツールの開発にかかるリソース、期間は節約できるもの
の、開発は容易でない。
【0018】第5の方法では、データも含めて圧縮でき
るので、大きな圧縮効果が得られる可能性があるが(圧
縮効果はプログラムに依存する)、命令の伸張に時間が
かかり、また圧縮されたプログラム/データを格納した
メモリ以外に、伸張したプログラム/データを格納でき
るメモリが必要となり、その実施は限定された分野にな
る。特にソフトウェアで伸張する場合は、伸張そのもの
に大幅な時間を要し、伸張されるまで実行できない。ハ
ードウェアで伸張するにしても、圧縮されたプログラム
/データが格納されたメモリをすべて読み出すため、時
間がかかる。
【0019】第6の方法では、ブロック単位にプログラ
ムを分割して圧縮/伸張するため、その伸張に要する時
間はブロックのサイズにもよるが、第5の方法に比べて
大幅に改善される。また、圧縮後のプログラムはブロッ
ク毎にサイズが異なるため、伸張用にCPUアドレスと
メモリアドレスとの対応情報をプログラムメモリに格納
しておかなければならない。すなわち、CPUからのア
ドレスから圧縮された命令の格納アドレスを得るための
インデックステーブルをプログラムメモリに格納し、圧
縮された命令コードを伸張するには、メモリからインデ
ックステーブルを読み出し、その読み出した情報から生
成されたアドレスで再びプログラムメモリから圧縮され
た命令コードを読み出し、さらに圧縮の際に使った情報
を格納したデコードルックアップテーブルがプログラム
メモリ以外に用意され、そのデコードルックアップテー
ブルから読み出す必要があり、伸張作業に相当な時間が
かかり、さらにデコードルックアップテーブルによるチ
ップコストへの影響も多大である。
【0020】また、従来の情報処理システムにおいて、
プロセッサとプログラムメモリとのバス幅を多ビットに
すると、1回のバスサイクルで命令を取り込め、性能向
上に貢献する。しかしながら、バス幅が大きいと多ピン
パッケージ品が必要となり、バス本数に応じて基板面積
が増大し、複数のメモリチップが必要になるなど、コス
トやサイズに大きな影響を与えることになる。一方、バ
ス幅を減らすだけだと、1つの命令が1回のバスサイク
ルで読み込めず、性能を低下させてしまう。そこで、1
6ビット長の命令にすれば、16ビットバスで1回で読
み込めるため、コストサイズを抑え、かつ性能の低下を
ミニマイズできる。
【0021】
【発明が解決しようとする課題】以上説明したように、
従来の情報処理装置において、32ビット固定長のプロ
セッサに、16ビット固定長あるいは16/32ビット
可変長の命令を追加する場合には、CPUを新規に開発
あるいは新規に近いCPUの改変を行って、実現してい
た。このため、CPU改変やプログラムやシステムの開
発支援ツールの開発に多くの手間と時間がかかるといっ
た不具合を招いていた。また、CPUの改変等を行うこ
となくコード効率を改善するために命令の圧縮手法を採
用しているが、従来の圧縮手法にあっては、圧縮された
命令を元に戻す伸張作業に時間がかかり、伸張作業のた
めにシステムのサイズやコストに大きな影響を及ぼす構
成が必要になるといった不具合を招いていた。
【0022】そこで、この発明は、上記に鑑みてなされ
たものであり、その目的とするところは、CPUを新規
設計/改変することなく、命令の追加を実現してコード
効率を向上させ、命令を格納するプログラムメモリの容
量を削減できる命令コード変換装置、命令コード生成方
法ならびに情報処理システムを提供することにある。
【課題を解決するための手段】上記目的を達成するため
に、課題を解決する第1の手段は、外部から与えられる
第1のアドレスをシフト操作することにより、圧縮命令
コードをアクセスする第2のアドレスを生成するアドレ
ス生成回路と、前記第2のアドレスにしたがってアクセ
スされた前記圧縮命令コードを受けて、前記圧縮命令コ
ードを該圧縮命令コードに対応した非圧縮命令コードに
伸張変換する命令コード変換回路とを有することを特徴
とする。
【0023】第2の手段は、外部から与えられる第1の
アドレスでアクセスするアドレス空間が、圧縮命令格納
領域又は非圧縮命令格納領域であるかを識別する識別手
段と、前記識別手段の結果に基づいて、前記圧縮命令格
納領域又は前記非圧縮命令格納領域にアクセスする第2
のアドレスを生成するアドレス生成手段とを備えたアド
レス生成回路と、前記アドレス生成回路の結果に基づい
て、前記アドレス空間の命令コードを、前記圧縮命令格
納領域である場合には伸張変換し、あるいは前記非圧縮
命令格納領域である場合には無変換する命令コード変換
回路とを有することを特徴とする。
【0024】第3の手段は、前記第1又は第2の手段に
おいて、前記圧縮命令コードは、mビット固定長、又は
mビット/n(n≧m)ビット可変長とし、前記非圧縮
命令コードはnビット固定長とすることを特徴とする。
【0025】第4の手段は、前記第1,2又は3の手段
において、前記命令コード変換回路により伸張変換され
た非圧縮命令コードを格納するバッファメモリと、前記
第1のアドレス又は第2のアドレスを格納するブロック
アドレス記憶レジスタと、前記第1又は第2のアドレス
と、前記ブロックアドレス記憶レジスタに格納されたア
ドレスを比較する比較回路と、前記比較回路の結果に基
づいて、前記アドレスが一致の場合には前記バッファメ
モリに格納された非圧縮命令コードを選択し、あるいは
不一致の場合には前記命令コード変換回路の非圧縮命令
コードを直に又は前記バッファメモリを介して選択する
選択回路とを有することを特徴とする。第5の手段は、
前記第4の手段において、前記バッファメモリは、さら
に格納内容の有効/無効を示す有効ビットを有し、前記
選択回路は、前記有効ビットが無効の場合かつ前記比較
回路の結果が一致の場合は、前記命令コード変換回路の
非圧縮命令コードを直に又は前記バッファメモリを介し
て選択することを特徴とする。
【0026】第6の手段は、圧縮命令コード、又は前記
圧縮命令コード及び非圧縮命令コードを格納するメモリ
と、前記メモリとの間で、前記圧縮命令コード又は前記
非圧縮命令コードをアクセスするメモリインタフェース
と、前記第1,2,3,4又は5の手段の命令コード変
換装置と、前記圧縮命令コード又は前記非圧縮命令コー
ドをアクセスするアドレスを出力し、前記メモリからア
クセスされた非圧縮命令コード、又は前記命令コード変
換装置によって得られた非圧縮命令コードを受けて実行
するCPUとを有することを特徴とする。
【0027】第7の手段は、ソースプログラムからサブ
セットの非圧縮命令で表現されたアセンブラソースプロ
グラムを生成する第1のステップと、前記第1のステッ
プで生成されたアセンブラソースプログラムをリロケー
タブルオブジェクトに変換する第2のステップと、前記
第2のステップで生成されたリロケータブルオブジェク
トから非圧縮命令コードで記述されたアブソリュートオ
ブジェクトファイルを生成する第3のステップと、前記
第3のステップで生成されたアブソリュートオブジェク
トファイルを、プログラムメモリの格納アドレスだけを
シフト操作し、圧縮命令コードで記述されたアブソリュ
ートオブジェクトファイルに変換して圧縮する第4のス
テップと、前記第4のステップで圧縮されたファイル
を、プログラムメモリに格納可能なオブジェクトプログ
ラムに変換する第5のステップとを有することを特徴と
する。
【0028】
【発明の実施の形態】以下、図面を用いてこの発明の実
施形態を説明する。
【0029】図1は本発明の一実施形態に係る情報処理
システムの構成を示す図である。
【0030】図1において、情報処理システムは、プロ
グラムメモリ1と、メモリインタフェース2と、命令コ
ード変換装置3と、CPU4を備え、既存のCPU4を
改変することなくプログラムのコード効率を向上させ、
命令を格納するプログラムメモリ1の使用容量を削減す
るために、CPU4に実行させるプログラム(命令コー
ド列)を圧縮ソフトウェアによって圧縮し、生成された
オブジェクト(圧縮命令コード列)を、プログラムメモ
リ(CPUチップの外部に置かれたメモリあるいはCP
Uチップに内蔵されたメモリ、内蔵メモリの場合には、
当然メモりインタフェースも命令コード変換装置も内蔵
される)1に格納し、CPU4から出力される命令コー
ド読み出し(フェッチ)のためのアドレスとプログラム
メモリ1に入力されるアドレスとが単純な操作(シフ
ト)で得られるように関連付け、CPU4からの命令コ
ード読み出し要求で、CPUアドレスをプログラムメモ
リアドレスに変換し、そのアドレスでメモリインタフェ
ース2を介してプログラムメモリ1をアクセスして圧縮
命令コードを読み出し、CPU4とメモリインタフェー
ス2との間に設けられた命令コード変換装置3によって
圧縮命令コードをCPU4が実行できる命令コードに伸
張してCPU4に渡し、CPU4に伸張された命令コー
ドで実行する。伸張された命令コードはCPU4が元か
ら持っていた命令と同一である。
【0031】圧縮命令コードが格納されるプログラムメ
モリ1のアドレスとCPU4からのアドレスの関連付け
を図2に示すように単純化する。例えば、CPU4の命
令コードが32ビット固定長で、圧縮命令コードが16
ビット固定長である場合は、CPU4のアドレスは4の
倍数、プログラムメモリ1のアドレスは2の倍数となる
が(図2(a))、CPUアドレスを右(下位側)へ1
ビットシフトした値をプログラムメモリアドレスとすれ
ば(図2(b))、前述した従来の第3の方法にあるよ
うに、CPUを改変してCPUアドレスを2の倍数にす
る必要はなく、CPU4からのアドレス出力は4の倍数
のままでよい。プログラムメモリ1へ与えるアドレスは
命令コード変換装置3で2の倍数になるようにアドレス
変換する。
【0032】詳細に説明すると、32ビット固定長の命
令コードを実行するCPU4に、16ビット固定長の圧
縮命令コードを扱わせる場合では、CPU4は32ビッ
ト固定長の命令をフェッチしようとしてアドレスの下位
4ビットに0→4→8→C(16進数)を出力する。プ
ログラムメモリ1は、このCPU4からのアドレスを1
ビット右シフトした0→2→4→6番地に16ビット長
の圧縮命令を格納する。CPU4からの出力アドレスの
下位ビットが4のとき、プログラムメモリ1の2番地か
ら16ビット長の圧縮命令コードが読み出され、命令コ
ード変換装置3によりCPU4が実行可能な32ビット
長の命令コードに変換してCPU4に渡す。CPU4は
この32ビット長コードの命令を実行し、アドレス出力
の下位4ビットは4から8に切り換わる。
【0033】圧縮命令コードが16ビット固定長ではな
く、図3(a)に示すように16/32ビットの可変長
である場合について、図3を参照して説明する。
【0034】可変長の場合は、例えばプログラムメモリ
1の2番地と4番地に32ビット長の圧縮命令コード
(命令2)が入っている場合がありうる。この命令2を
フェッチする場合は、(図3(b))に示すようにCP
U4はまずアドレスの下位4ビットが4となるアドレス
を出力し、右に1ビットシフトした2番地のプログラム
メモリ1から圧縮命令コード(命令2)の上位16ビッ
トをまず読み出し、CPU4にはノーオペレーション命
令(NOP)の32ビットコードを渡す。CPU4はN
OPを実行し、アドレス出力の下位4ビットは4から8
に切り換わる。次に、8を右シフトした4番地のプログ
ラムメモリ1から圧縮命令コード(命令2)の下位16
ビットが読み出され、この32ビットの圧縮命令コード
に対応したCPU4が実行可能な32ビット長の命令コ
ード(命令2B’)に命令コード変換装置3が変換して
CPU4に渡す。CPU4はこの32ビット長コードの
命令2B’を実行し、アドレス出力の下位4ビットは8
からCに切り換わる。このようにして、NOPをCPU
4に実行させることで、CPUアドレスとプログラムメ
モリアドレスの関連付けの単純化を維持させる。
【0035】なお、圧縮命令コードによっては、NOP
ではなく他の32ビットコードの命令2A’に変換して
もよい。この場合には、CPU4の既存命令2つ(各3
2ビット長で合わせて64ビット)を1つの32ビット
長の圧縮命令コードで記述したことになり、図4に示す
ように圧縮効果が上がる。一方、NOPに変換された場
合は、その32ビット長の圧縮命令コードは2命令サイ
クルの実行時間が少なくともかかるので、実行時間より
もコード効率を優先する場合に、この命令コード変換を
使用するものとする。
【0036】また、このアドレスの関連付けの単純化
は、前述した従来の第6の方法で問題となるアドレス変
換のためのアドレス対応情報をプログラムメモリ1に格
納する必要がなくなるため、伸張にかかる時間はアドレ
ス対応情報を読み出す時間がなくなる分、大幅に削減さ
れる。さらに、前述した第6の方法では、アドレス対応
情報をプログラムメモリに置くので、その分コード効率
を低下させているが、本発明ではアドレス対応情報はプ
ログラムメモリ1に置く必要はなく、コード効率が上が
る。
【0037】一般的には、圧縮命令コードは、CPU4
の既存の命令コードに比べて表現できる情報が少なくな
るため、命令数が減る。そのため、コンパイラは圧縮を
かける対象となるプログラムに関しては、サブセットの
CPU命令しかないものとしてコンパイルしなければな
らない。場合によっては、圧縮命令コードで記述された
プログラムの方が、既存の命令コード(非圧縮命令コー
ド)で記述されたプログラムより大きくなることも有り
得るが、非圧縮命令コードには命令によって使用されな
いビットがあったり、扱うデータが小さい値が多く、命
令コード中のデータ領域の上位ビットがすべて“0”で
あったり“1”であったりなど、なくてもよい部分があ
る。例えばプログラムで扱うデータとしては、1〜8ビ
ット程度で表現できる数値が多い。しかしながら、CP
U4の既存命令の多くは命令コード中に16ビット程度
のデータフィールドを持つ。したがって、15〜8ビッ
ト程度の無駄がある場合が多々プログラムに存在する。
この部分を削除した命令コードを圧縮命令コードとして
用意することで、プログラムを圧縮する。
【0038】圧縮には上記のように1命令コード単位に
圧縮するだけでなく、複数の非圧縮命令コードをそれよ
り少ない圧縮命令コードに圧縮する方法も考えられる。
例えば、非圧縮命令コード2命令分を圧縮命令コード1
命令にすることで、さらなる圧縮を図ることができる。
図5に圧縮のための新命令とそれを伸張した既存命令の
それぞれの命令コードを示す。
【0039】このような圧縮は、図6に示すように以下
の手順で行われる。
【0040】まず、コンパイラは、コンパイラ言語(C
言語などの高級言語)で記述されたソースプログラムか
らサブセットの非圧縮命令で表現したアセンブラソース
プログラムを生成する。アセンブラは、アセンブラソー
スプログラムをリロケータブルオブジェクトに変換し、
さらにリンカによって非圧縮命令コードで記述されたア
ブソリュートオブジェクトファイルを生成する。このフ
ァイルは、さらにオブジェクトコンバータによってhe
xフォーマット等のオブジェクトに変換される。あるい
は、圧縮ソフトウェアによって、上記アブソリュートオ
ブジェクトファイルを圧縮命令コードで記述されたアブ
ソリュートオブジェクトファイルに変換して圧縮する。
圧縮されたファイルは、さらにオブジェクトコンバータ
によって、hexフォーマット等のオブジェクトに変換
される。これらのオブジェクトをプログラムメモリ1に
格納する。
【0041】圧縮命令コードとしては、すべて同一の長
さ(ビット長)である固定長、あるいは長さが異なる複
数のビット長を持つ可変長のいずれかが考えられる。可
変長の場合は、その命令コードとして、例えば図7
(a)に示したように、常に命令コードの最上位コード
でしかビット長を判別できないエンコード方式があり、
例えば32ビット長の命令コードの上位16ビットの一
部を判別に使用する。一方、どのコード位置でもビット
長を識別できるエンコード方式があり、例えば32ビッ
ト長の命令コードの上位16ビットの一部でも下位16
ビットの一部でも判別に使用可能な方式が考えられる
(図7(b))。一般的には、前者のエンコード方式が
オペコード(命令の種類を識別するための命令コード中
の特定のビットフィールド)が少ないため、コード効率
のよい命令コードとなる。
【0042】前者のエンコード方式の圧縮命令コードを
使う場合には、図8ならびに図9に示すように、1命令
ずつ命令コード変換するのではなく、あるサイズのブロ
ック単位で命令コード変換を行う必要がある。これは、
割り込みなどの例外が発生した場合に、例外からの復帰
で32ビット長の命令コード変換を正しく行うためであ
る。例えば、32ビット長の圧縮命令コード(命令2)
が命令コード変換装置3により、CPU4の元の命令2
A’と命令2B’に伸張され、命令2B’を実行途上で
例外が起きた場合に、例外復帰後32ビット長の圧縮命
令コードの下位16ビットが格納されているアドレス
(CPUアドレスの8番地)から再開するため、圧縮命
令コードの上位16ビットが再フェッチされないので、
命令コード変換を正しく行うことができない。これを防
ぐため、ブロックに分割し、ブロックの先頭は必ず16
ビット長の圧縮命令コード又は32ビット長の上位16
ビットの圧縮命令コードになるようにオブジェクトを生
成し、ブロックの先頭から伸張をすれば、常に正しい伸
張を行うことが可能となる。
【0043】このブロック単位の伸張には、上記制約す
なわちブロックをまたぐ32ビット長のコードは許され
ないこと以外に、ブロック内にデータを置くことはでき
ない。データと命令コードの区別ができないため、伸張
すべきか否かが決定できないからである。前述した圧縮
ソフトウェアによりブロックをまたぐ場合はNOPを挿
入してまたがないように調整を行うものとする。ブロッ
クのサイズを大きくすることで、またぐ可能性を減らす
ことが可能であるが、サイズが大きすぎると、コード変
換された命令を格納するバッファメモリの容量が大きく
なり、コストに影響を与える。また、サイズ分の命令読
み出し/変換作業時間が必要なので、実行時間に影響を
与える。これらのトレードオフを勘案してバッファサイ
ズが決められる。
【0044】次に、図10を参照して本発明をさらに詳
細に説明する。
【0045】CPU4は、例えば32ビット固定長の非
圧縮命令コードC1,C2,C3…を実行できるものと
する。コード効率が上がる圧縮命令コードとして、例え
ば16ビットあるいは32ビットの可変長の命令コード
A1,A2,A3…を用意し、前述したソフトウェアで
圧縮命令コードによるオブジェクトを生成する。プログ
ラムソースの一部は、圧縮をかけない場合を想定する。
これは、(a)圧縮命令コードだけでは命令数が不足し
プログラムのすべてを圧縮命令コードで実現できないこ
とがあり(非圧縮命令の数と圧縮命令コード長に左右さ
れるが、特定のCPUリソースを扱う命令コードを圧縮
命令コードで用意できなかった場合などが考えられ
る)、(b)圧縮命令コードは、命令数が非圧縮命令よ
りも通常少なくなるため、命令ステップ数が増え、圧縮
の効果が失われることがあり、(c)圧縮命令コードは
伸張してから実行されるため、非圧縮命令に比べて実行
時間が延びる場合があり、プログラムの実行時間に制約
がある部分が存在したりする。上記(a)〜(c)の場
合には圧縮をかけられない、あるいは圧縮をかけるべき
ではない。したがって、非圧縮命令コード(32ビット
固定長の命令コードB1,B2,B3…)によるオブジ
ェクトも生成される。圧縮命令コードと非圧縮命令コー
ドで表現されるオブジェクトがともにプログラムメモリ
(メモリは1つでも複数でもよい)1に格納される。
【0046】可変長の命令コードA1、A2、A3…
は、最上位コードにオペコードを置くエンコード方式と
する。この場合は、本発明では読み出された命令が何ビ
ットの命令コードであるかを認識するため、圧縮命令コ
ードを置くプログラムメモリは、あるサイズ、例えば1
6ビット長の命令で32命令分のブロックに分割する。
ブロックの先頭は必ず圧縮命令コードの最上位コードが
来るように、またブロック内にはデータが入らないよう
に、図11ならびに図12に示すように、前述したソフ
トウェアでオブジェクトを生成する。
【0047】プログラムメモリ1から命令コードA1,
A2,A3…(圧縮命令コード)およびB1,B2,B
3…(非圧縮命令コード)を読み出す際、圧縮命令コー
ドあるいは非圧縮命令コードを区別する手段として、C
PU4からのアドレスを使う。例えば、アドレスがある
範囲にある場合を圧縮命令コード領域とみなし、この範
囲外を非圧縮命令コード領域とする。アドレス範囲は固
定されていてもよいが、レジスタを設けて任意に設定で
きるようにした方がメモリの無駄な空きが少なくて済
み、よりコード効率を上げることができる。この例で
は、アドレス範囲を使う場合を説明する。
【0048】例えば、圧縮/非圧縮命令コードのプログ
ラム領域は、CPU4からのアドレスの上位8ビットを
使って区別する。上位8ビットが04〜7Fの範囲は圧
縮命令コードでプログラムをプログラムメモリ1に格納
し、これ以外の範囲には非圧縮命令コードで書かれたプ
ログラムをプログラムメモリ1に格納する。命令コード
変換装置3はCPU4からのアドレス上位8ビットを見
て、圧縮命令コードか否か判断し、圧縮されているとき
は伸張し、されていないときはそのままCPU4に命令
コードを渡す。
【0049】命令コードの一部を使う場合には、例えば
命令コードの上位何ビットかを圧縮命令コードと非圧縮
命令コードとで異なる値となるよう割り当てる。この場
合は、圧縮命令コードと非圧縮命令コードが1命令毎に
混在させることが可能で、より高いコード効率を得るこ
とができる場合もある。CPU4の外に、CPU4の命
令で値をセット可能なレジスタを設ける場合には、その
レジスタの値に応じて区別する。例えばそのレジスタを
ある分岐命令が実行されたことをCPU4の外部で検出
可能であれば、その検出結果でCPU4の外部のレジス
タの値を反転させる。
【0050】別の例を挙げると、MMU(メモリ・マネ
ージメント・ユニット)を使用する場合には、属性の1
つとしてレジスタを設けておき、CPU4から出力され
た仮想アドレスに対応してその属性レジスタの値を使っ
て区別する。属性レジスタはCPU4の命令で値がセッ
ト可能である。外部から入力される信号で区別する場合
には、例えばプログラムメモリ1毎に属性の1つとして
命令コードの区別を持たせ、そのプログラムメモリ1が
アクセスされた際、その属性を命令コード変換装置3に
入力する。
【0051】CPU4から命令をフェッチするために出
力される信号は、そのCPU4のアーキテクチャによっ
て異なる。非ハーバードアーキテクチャの場合は、CP
U4から命令フェッチであることを示す信号(この信号
はデータアクセスであるか命令フェッチであるかを区別
する)、読み出しを示す信号およびアドレス信号が出力
される。上記で命令フェッチ用の読み出し信号とデータ
アクセス用の読み出し信号が独立している場合には、前
記命令フェッチであることを示す信号はなくてもよい。
また、メモリがプログラム用とデータ用とに分かれてい
る場合には、アドレス信号をデコードすることで命令フ
ェッチであるか否かが判別できるので、命令フェッチで
あることを示す信号は必要ない。この例では、アドレス
範囲で命令フェッチか否か判別できる場合を説明する。
【0052】一方、ハーバードアーキテクチャの場合に
は、命令フェッチ用のアドレス信号はデータアクセス用
のアドレス信号と独立しているため、命令フェッチであ
ることを示す信号は必要ない。
【0053】CPU4から命令フェッチの要求がある
と、CPU4からのアドレス信号をデコードして、命令
フェッチであることを認識するとともに圧縮/非圧縮命
令コードのどちらのアクセスであるかも認識する。圧縮
命令のコードのフェッチ要求であった場合は、CPU4
からのアドレス信号からまずブロックの先頭アドレスを
算出する。この例では16ビット長命令×32命令分/
1ブロックなので、アドレス信号の下位7ビットを
“0”にマスクする。さらに、その先頭アドレスを右に
1ビットシフトする。シフトされたアドレスから1ブロ
ック分のプログラムメモリ1を順次読み出すようメモリ
インタフェース2に要求を出す。メモリインタフェース
2は、読み出し要求されたアドレスに従いプログラムメ
モリ1をアクセスし、圧縮命令コードを読み出し、命令
コード変換装置3へ返す。
【0054】まず、ブロックの先頭は必ず命令の最上位
コードとなることから、命令コードのオペコードをデコ
ードしてその命令に必要な圧縮命令コードをすべて読み
出し、その圧縮命令コードに対応する元の32ビットの
命令コードに伸張する。例えば、先頭の圧縮命令コード
が16ビット長の命令であった場合は、即32ビットの
命令コードに伸張される。先頭の圧縮命令コードが32
ビット長であった場合には、まず先頭のアドレスから圧
縮命令コードの上位16ビットを読み出し、32ビット
長であることを認識し、先頭に引き続く次のアドレス、
すなわち先頭アドレス+2のプログラムメモリ1から下
位16ビットを読み出し、対応する32ビットの命令コ
ード2個に伸張する。32ビットの圧縮命令コードが元
の命令の1個にしか機能的に対応できない場合には、2
個のうち一方はNOPの命令コードに伸張する。必ず2
個にするのは、CPUアドレスとプログラムメモリ1が
1対1に対応し、アドレス変換が右への1ビットシフト
という単純な関連付けとなるからである。
【0055】伸張された命令は、命令コード変換装置3
内に設けられたバッファメモリに格納される。バッファ
メモリのサイズは、この例では32ビット×32命令分
必要となる。先頭の圧縮命令コードの伸張が済むと、次
の圧縮命令コードの読み出しと伸張とバッファメモリへ
の格納を同様に行い、CPU4からの出力アドレスと一
致するアドレスまで伸張が済んだところでCPU4に伸
張された命令コードを返し、命令を実行させる。
【0056】命令コード変換装置3は、CPU4に伸張
した命令コードを返した後も圧縮命令コードの読み出し
/伸張および格納をブロックの最終アドレスまで続けて
行う。ただし、CPU4が分岐命令を実行あるいは割込
みなどの例外を検出して、出力アドレスがブロック外に
出た場合は、そのブロックでの伸張作業を中止し、直ち
に新しいブロックでの伸張作業を行う。これは、伸張に
おける実行時間が必要以上に延びることを防ぐためであ
る。なお、ブロックの境界をまたぐループ処理に伴う分
岐が頻繁に行われると、何度も同じブロックの伸張作業
が発生するため、バッファメモリは少なくとも2ブロッ
ク分用意することで、この問題を回避することができ
る。バッファメモリのサイズとループ処理における分岐
距離の分布次第では、バッファメモリをさらに用意すべ
きである。分岐距離の分布は、プログラムに依存する
が、CPU4の命令セットアーキテクチャが支配的であ
るので、CPU4に応じて最適なバッファメモリのサイ
ズと数を設定するようにすればよい。
【0057】非圧縮命令コードの命令フェッチ要求であ
った場合は、CPU4からのアドレスを変換せず、メモ
リインタフェース2に与え、プログラムメモリ1から非
圧縮命令コードを読み出す。読み出された非圧縮命令コ
ードは、そのままCPU4に渡される。一方、命令フェ
ッチでなく、データのアクセス(読み出しあるいは書き
込み)要求であった場合は、CPU4のアドレスを変換
せず、メモリインタフェース2に与え、プログラムメモ
リ1からデータを読み出し/プログラムメモリ1へデー
タの書き込みをを行う。
【0058】バッファメモリを再利用できるよう、すな
わち伸張された命令コードがバッファメモリに格納され
て、その命令コードが保持されている場合に、再度伸張
することなくバッファメモリの内容を利用することがで
きるよう、バッファメモリは、図13に示すように、伸
張された命令コード群を記憶するメモリ(レジスタでも
よい)の他に、以下の付加情報を記憶するレジスタとで
構成される。
【0059】(a)どのCPUアドレスに対応した伸張
命令コードが格納されているかを示すため、その上位ア
ドレスを記憶するレジスタ(以下、ブロックアドレス記
憶レジスタと呼ぶ)を1ブロック単位に1つ持つ。
(b)伸張された命令コードが格納済みか否かを示すレ
ジスタを持つ。各アドレスに1ビットの有効ビットを持
ってもよいし、先頭から順次格納するわけだから何番目
まで格納したかを示すレジスタ(以下、有効アドレス記
憶レジスタと呼ぶ)を1ブロック単位に1つ持ってもよ
い。
【0060】伸張途上のブロックを無効とする場合は、
上記(b)の付加情報は必須ではない。この場合には、
伸張が完了しているブロックか否かを示す少なくとも1
ビットのレジスタを代わりに持つ。なお、上記(b)の
レジスタは、リセット時、あるいは上記(a)の付加情
報が書き換えられたとき、すべてのバッファメモリの内
容が無効であることを示すよう初期化される必要があ
る。例えば、前者のアドレス毎の有効ビットの場合は、
有効ビットの内容が“1”のとき、そのアドレスのバッ
ファメモリに伸張された命令コードが格納済みで、有効
ビットの内容が“0”のとき未格納であるとすると、初
期化で全有効ビットを“0”にする。また、後者のブロ
ック毎の有効記憶レジスタの場合、バッファメモリに伸
張された命令コードがいっさい無い状態のとき、このレ
ジスタの内容が“0”になっており、アドレスの下位ビ
ット(この例では、下位7ビット)が“0”に伸張命令
コードが格納されると“2”に変化し、最終アドレスま
で格納されると40(16進数)となるものとすると、
初期化でこのレジスタは“0”に設定されればよい。
【0061】バッファメモリは、少なくとも2ブロック
分用意されているため、例外検出や分岐命令実行によ
り、現在伸張作業途上のブロックあるいはブロックの最
終アドレスに置かれた命令の実行により(例外検出や分
岐命令実行による場合を含む)、伸張作業の完了したブ
ロックの外へ飛び出した後、再びこのブロックに戻った
場合には、上述した付加情報を記憶したレジスタ群によ
って伸張が完了していることが判明した場合は、プログ
ラムメモリ1から読み出すのではなく、バッファメモリ
から読み出すことで命令フェッチの応答時間を短縮でき
る。
【0062】また、伸張作業がブロックの最終アドレス
まで完了していない場合は、バッファメモリからCPU
がフェッチした命令コードを返している間に残っている
圧縮命令コードの読み出し/伸張/バッファメモリへの
格納を実行させて、さらに命令フェッチの応答時間を短
縮すこともできる。
【0063】バッファメモリを少なくとも2ブロック分
用意しているので、上述した付加情報に加え、図13に
示すように、どのブロックのバッファメモリを次に使用
するかを示すレジスタ(以下、バッファメモリ使用指定
レジスタと呼ぶ)が必要となる。例えば、バッファメモ
リが2ブロック分用意されている場合には、このレジス
タは少なくとも1ビットで構成され、例えばこのレジス
タの内容が“0”の時は、バッファメモリ0が次に使用
され、“1”の時はバッファメモリ1が次に使用され
る。リセット時は、どちらを使用してもよいので、この
レジスタは必ずしも初期化しなくてもよい。一方のブロ
ックを使用して伸張した命令コードの格納が行われた場
合には、このレジスタは不使用のブロック番号を示すよ
うに変化する。一方、両方のブロックを使用すると、古
い方のブロック番号を示すようにこのレジスタの内容を
変化させる。
【0064】割り込み例外やオーバーフロー例外等の例
外が頻繁に起こるプログラムの場合は、バッファメモリ
は、メインルーチン格納用と例外ルーチン格納用と複数
持たせた方がさらにバッファメモリ再利用効率が上が
る。また、頻繁に使用されるサブルーチン、例えば割り
込みを一時的に禁止する処理などがある場合も、バッフ
ァメモリは、メインルーチン格納用とサブルーチン格納
用と複数持たせる方がよい。メインルーチンなのか否か
は、一般的にCPUからのアドレス出力を利用して、ア
ドレス空間でバッファメモリを使い分ける。図14にC
PUのアドレス空間の分割例とバッファメモリの対応例
を示す。
【0065】本発明は、上述した7つのキーワードの組
み合わせにより、図15に示すように多種多様な実施形
態が想定される。
【0066】キーワード1:圧縮命令が、固定長命令又
は可変長命令を扱う。可変長の場合は、さらに命令の長
さを判別するオペコードが特定のコードにのみ存在する
か、あるいはすべてのコードに存在するかに分かれる。
【0067】キーワード2:伸張後の命令が1命令か複
数の命令か。複数の命令の場合には、さらに可変長命令
で2語以上の長さのときだけその長さ分だけ複数になる
か、圧縮命令コードの長さにかかわらず複数になるかに
分かれる。
【0068】キーワード3:圧縮命令コードと非圧縮命
令コードを混在可能か、圧縮命令だけが使用可能か。混
在の場合は、さらに非圧縮命令か圧縮命令かを識別する
手段として、CPUからのアドレス、命令コードの一
部、レジスタの値、あるいは外部からの信号に細分化さ
れる。
【0069】キーワード4:CPUからのアクセスが命
令フェッチかデータアクセスかを識別する方法として、
上述した4つの方法が考えられる。 キーワード5:ブロック外にCPUのアドレスが命令フ
ェッチで変化した場合には、そのブロックの伸張作業を
継続するか中止するか。
【0070】キーワード6:バッファメモリの再利用の
ための付加情報として、伸張された命令コードが格納済
みであるか否かを示すレジスタとして、アドレス毎に有
効ビットを設けるか、どのバッファメモリ内アドレスま
で格納が完了しているかを示すレジスタをブロック毎に
設けるか、あるいはブロックの最終アドレスまで格納が
完了していることを示すレジスタをブロック毎に設ける
か。
【0071】キーワード7:伸張が最終アドレスまで完
了していない場合は、先行して伸張作業を開始するか、
要求があるまで放置するか。
【0072】上記キーワードは、命令コード変換装置3
をプログラムメモリ(外部メモリでも内蔵メモリでもよ
い)1をアクセスするメモリインタフェース2とCPU
4との間に置いたものであったが、他の変形例として、
命令コード変換装置3を命令キャッシュをアクセスする
命令キャッシュインタフェースとCPU4との間に置く
場合も実施できる。図1において、プログラムメモリ1
を命令キャッシュ、メモリインタフェース1を命令キャ
ッシュインタフェースと置き換えた場合である。
【0073】内蔵プログラムメモリや命令キャッシュメ
モリを対象とする場合は、そのメモリインタフェースは
バンド幅を上げる、すなわち一度に複数の圧縮命令コー
ドを読み出せるようにすることで伸張の際のメモリの読
み出しにかかる時間を短縮できるので、より伸張作業時
間を大きく削減できる。
【0074】外部プログラムメモリを対象とする場合に
おいて、命令キャッシュのリフィルサイズとバッファメ
モリのサイズを合わせると、ブロックの途中にある圧縮
命令コードの伸張の際に、必ずブロックの先頭アドレス
からCPUが命令フェッチ要求するので、伸張の際のメ
モリの読み出しペナルティが命令キャッシュのリフィル
で隠れる。
【0075】また、専用のバッファメモリではなく、二
次キャッシュあるいは一次キャッシュをバッファメモリ
の代わりに使用するようにすれば、コスト/命令フェッ
チ時間の点でさらに有利となる。
【0076】図10に示す構成では、16ビットの圧縮
命令コードあたり、1つの32ビットのCPU命令コー
ドに伸張する場合を説明した。コード効率をさらに上げ
るには、16ビットの圧縮命令コードあたり、1を越え
るCPU命令コードに伸張する。CPUアドレスとメモ
リアドレスの関連づけの単純化を維持して、1を越える
CPU命令コードに伸張するには、サブルーチンコール
を利用するのがよい。例えば32ビット長の1つの圧縮
命令コードから4つのCPU命令コードを伸張したい場
合は、サブルーチンコール命令とリターン命令を追加し
た6つのCPU命令コードに伸張する。サブルーチンは
ある限られたアドレス空間(命令コード変換装置が占有
する予約領域とする)を使用する。
【0077】具体的な例として、図16に示すように、
プログラムメモリ1のビットセット処理を行う圧縮命令
コードからサブルーチンコール命令+ロード命令+オア
命令+リターン命令+ストア命令の5つのCPU命令に
伸張する。最初の2つの命令(コール命令およびロード
命令)は32ビットの圧縮命令コードの置かれていたア
ドレスに相当するバッファメモリに格納し、残る3命令
はコールされたアドレスX番地から始まる3ワードのサ
ブルーチン用メモリ(ROM)にあらかじめ格納してお
く。このROMは命令コード変換装置3内に置かれる。
アドレスXは圧縮命令コードと1対1に対応させてお
く。1対1に対応させることで、サブルーチンが実行途
上に例外が検出された場合は、元の圧縮命令コードを読
み出さないで、ROMから再開するアドレスにある命令
コードを読み出してCPU4に返す。
【0078】サブルーチン用メモリはROMでなくRA
Mで構成されてもよい。サブルーチン用メモリの容量は
圧縮命令コードから展開される命令数分だけ最大必要と
なる。サブルーチン内で展開される命令が、単純な命令
コードならばROMでなくロジックで組んでもよい。例
えば前述のビットセット処理ならば、サブルーチンに置
かれる3つの命令コードは、(a)オア命令:セットし
たいビット位置にのみ1が立ち、残りが0となるイミデ
ィエイト(即値)を持つ命令コードとなり、この即値は
アドレスXと1対1に対応するから簡単なロジックで構
成できる。アドレスXのビット6〜4を即値と対応づけ
るとアドレスXのビット6〜4が000(2進数)の
時、即値は0000000000000001(2進
数)とする。即値以外の命令コードフィールドはオア命
令として固定の値となる。例えばある命令コードの場合
には、即値以外は0011010000100001
(2進数)となる。(b)ストア命令:セットしたいメ
モリのアドレスを指定するためのオフセット値とベース
レジスタ番号が上記(a)と同様、アドレスXに対応づ
けられていれば簡単なロジックで構成できる。図16に
示す例ではベースレジスタはr0に限定している。
(c)リターン命令:常に一定の命令コードなので、ア
ドレスXから単純に生成される簡単なロジックで構成さ
れる。
【0079】次に、この発明の実施形態をさらに詳細に
説明する。図17は図10に示す命令コード変換装置3
を具体的に構成したシステム全体の一実施形態を示す図
である。
【0080】図17において、この情報処理システム
は、複数の16ビット固定長の圧縮命令コードA1、A
2、A3…および32ビット固定長の非圧縮命令コード
B1、B2、B3…を格納したプログラムメモリ1(プ
ログラムメモリ1は1つでも複数でもよい)と、プログ
ラムメモリ1から命令コードを読み出すメモリインタフ
ェース2と、圧縮命令コードを非圧縮命令コードに変換
する命令コード変換装置3と、32ビット固定長の命令
コードを実行できるCPU4とを備え、命令コード変換
装置3は、CPU4から出力されるCPUアドレスCA
4をデコードして、圧縮命令コード領域か非圧縮命令コ
ード領域かを識別して領域判定信号S5を出力するアド
レスデコーダ5と、アドレスデコーダ5によってCPU
アドレスCA4が圧縮命令コード領域であると判定され
た場合は、CPUアドレスCA4を右へ1ビット(32
ビット÷16ビット÷2=1ビット)シフトし、非圧縮
命令コード領域であると判定された場合には、CPUア
ドレスCA4をそのままメモリインタフェース2に出力
するアドレスシフタ6と、メモリインタフェース2を介
してプログラムメモリ1から読み出された命令コードA
1、A2、A3…またはB1、B2、B3…をアドレス
デコーダ5のデコード結果(領域判定信号S5)に応じ
て圧縮命令コードである場合は、命令コードA1、A
2、A3…に対応する命令コードC1、C2、C3…に
変換して出力し、非圧縮命令コードである場合は、命令
コードB1、B2、B3…をそのまま出力する命令コー
ド変換回路7と、命令コード変換回路7で変換された命
令コードC1、C2、C3…を格納するバッファメモリ
8と、バッファメモリ8に格納される命令コードの変換
前の命令コードが置かれていたプログラムメモリ1のメ
モリアドレスの上位ビットを記憶するブロックアドレス
記憶レジスタ9と、バッファメモリ8の命令コード毎に
設けられた有効ビットと、アドレスシフタ6の出力アド
レスの上位ビットとブロックアドレス記憶レジスタ9に
記憶されたアドレスとを比較する比較回路10と、バッ
ファメモリ8からアドレスシフタ6の出力アドレスに対
応したアドレス(アドレスシフタ6の出力アドレスの下
位6ビット)から読み出された命令コードC1、C2、
C3…と命令コードB1、B2、B3…とをアドレスデ
コーダ5のデコード結果に応じて選択する選択回路11
と、アドレスシフタ6の出力アドレスの下位ビットに対
応した有効ビットの出力とアドレスデコーダ5のデコー
ド結果と比較回路10の比較結果(一致信号S10)と
CPU4からのリード要求信号S4とから、メモリイン
タフェース2に対するメモリリード要求信号S12を生
成するメモリリード要求制御回路12と、アドレスデコ
ーダ5のデコード結果である領域判定信号S5とメモリ
リード要求制御回路12の出力であるメモリリード要求
信号S12と比較回路10の出力である一致信号S10
の値に応じて前記有効ビットの初期化、及びブロックア
ドレス記憶レジスタ9の書き込みを行う書き込み信号S
13a、ならびにアドレスシフタ6の出力アドレスの下
位ビットに対応するバッファメモリ8の有効ビットの書
き込みを行う書き込み信号S13bを生成する制御回路
13とを備えて構成される。プログラムメモリ1には、
圧縮命令コードA1、A2、A3…が格納された領域と
非圧縮命令コードB1、B2、B3…が格納された領域
があり、CPU4からのCPUアドレスCA4の値で区
分されている。
【0081】次に、命令のフェッチから実行まてのシー
ケンスを、圧縮命令コード領域におけるアクセスのタイ
ミングチャートを示す図18、ならびに非圧縮命令コー
ド領域におけるアクセスのタイミングチャートを示す図
19を参照して説明する。
【0082】例えばCPU4から命令フェッチのための
CPUアドレスCA4は、32ビット出力され、そのア
ドレス範囲が00000000〜3FFFFFFF(1
6進数)のときは圧縮命令コードを使い、これ以外の範
囲のときは非圧縮命令コードを使うものとする。図17
に示すように、プログラムメモリ1の00000900
番地から圧縮命令コードA1、A2、A3、A4…が、
40000000番地から非圧縮命令コードB1、B
2、B3…が、それぞれあらかじめ格納されているもの
とする。CPU4から命令フェッチのためのCPUアド
レスCA4として、00001204が出力された場合
は、アドレスデコーダ5は、CPUアドレスCA4の値
が圧縮命令コード領域であることを判定し、アドレスシ
フタ6は、CPUアドレスCA4を1ビット右にシフト
し、シフトしたアドレス00000902をメモリイン
タフェース2に出力し、メモリインタフェース2はシフ
トされたアドレス00000902をプログラムメモリ
1に与える。プログラムメモリ1の00000902番
地から圧縮命令コードA2が読み出され、メモリインタ
フェース2が圧縮命令コードA2を取り込み、命令コー
ド変換回路7に渡す。CPUアドレスCA4の値が圧縮
命令コード領域であるとアドレスデコーダ5が判定して
いるので、命令コード変換回路7は、圧縮命令コードA
2に対応する32ビットの命令コードC2に変換する。
命令コードC2はCPU4に渡されて、CPU4は命令
コードC2を実行する。
【0083】CPU4が命令コードC2を実行すると、
CPUアドレスCA4を更新し、通常アドレス0000
1208が出力される。命令コードC2が分岐命令や例
外発生命令などプロクラムの流れを変える命令であった
場合は、その飛ひ先のアドレスが出力される。アドレス
00001204のときと同様なシーケンスで、000
01208に対応するアドレスから読み出された圧縮命
令コードA3は、命令コードC3に変換されて実行され
る。
【0084】次に、CPU4がCPUアドレスCA4と
して、アドレス40000000を出力した場合を説明
する。アドレスデコーダ5は、CPUアドレスCA4の
値が非圧縮命令コード領域であることを判定し、アドレ
スシフタ6は、CPUアドレスCA4をシフトせず、ア
ドレス40000000のままメモリインタフェース2
に出力し、メモリインタフェース2はアドレス4000
0000をプログラムメモリ1に与える。プログラムメ
モリ1のアドレス40000000番地から非圧縮命令
コードB1が読み出され、メモリインタフェース2が取
り込み、命令コード変換回路7に渡す。アドレス400
00000は、アドレスデコーダ5により非圧縮命令コ
ード領域と判定されているので、命令コード変換回路7
は、非圧縮命令コードB1を変換せず、そのままCPU
4に渡す。CPU4は命令コードB1を実行する。
【0085】命令コードB1が分岐命令などプログラム
の流れを変える命令でなけれは、CPU4はCPUアド
レスCA4をアドレス40000000から+4した4
0000004を出力する。アドレス40000000
のときと同様なシーケンスで非圧縮命令コードB2が読
み出され、CPU4に変換されずに渡されて実行され
る。このようにCPU4は、既存の命令セットてある命
令コードC1、C2、C3…あるいはB1、B2、B3
…しか受け取らないため、圧縮命令コードA1、A2、
A3の追加によって、CPU4を改変する必要は全くな
い。
【0086】ブロックアドレス記憶レジスタ9は、アド
レスシフタ6の出力であるメモリアドレスMA6の代わ
りにCPUアドレスCA4を記憶させてもよい。この場
合には、比較回路10は、ブロックアドレス記憶レジス
タ9の出力のブロックアドレスBA9とCPUアドレス
CA4の上位ビットとを比較するように変える。
【0087】選択回路11は、バッファメモリ8から読
み出された命令コードOC8と命令コード変換回路7か
ら出力される命令コードOC7とをアドレスデコーダ5
の出力の領域判定信号S5で選択するマルチプレクサで
構成してもよい。また、メモリリード要求制御回路12
の出力であるメモリリード要求信号S12に応じて図2
0に示すようにマルチプレクサで構成してもよい。
【0088】バッファメモリ8は、命令コード変換され
た命令コードが格納されている場合に、再度プログラム
メモリ1から圧縮命令コードA1、A2、A3…を読み
出さず、バッファメモリ8から読み出すことで、命令コ
ードC1、C2、C3…をCPU4に速やかに返すこと
を目的とする。バッファメモリ8にCPU4から要求さ
れた命令コードが格納済みであるかを判断するため、プ
ログラムメモリ1はあるサイズ(例えば16ビット長の
命令で32命令分)のブロックに分割され、そのブロッ
クのアドレスの上位ビット(この実施形態では32ビッ
ト−6ビット=26ビット)をブロックアドレス記憶レ
ジスタ9に格納する。格納するか否かは、まず格納前に
ブロックアドレス記憶レジスタ9の出力であるブロック
アドレスBA9とアドレスシフタ6の出力のメモリアド
レスMA6の上位ビットとを比較回路10で比較し、不
一致ならばブロックアドレス記憶レジスタ9にブロック
のアドレスの上位ビットを格納するとともに有効ビット
の内アドレスシフタ6の出力のメモリアドレスMA6の
下位ビット(この実施形態では6ビット)で指定される
ビットを“1”に、他のビットをすべて“0”に設定す
る。なお、ブロックアドレス記憶レジスタ9と有効ビッ
トの書き込みはメモリインタフェース2を介して命令コ
ードを読み出して変換を行い、バッファメモリ8へ書き
込む際に行う。一方、一致ならば、ブロックアドレス記
憶レジスタ9への格納は行っても行わなくともよいが、
有効ビットは以下のように処理する。有効ビットが既に
“1”になっている場合は、バッファメモリ8に変換後
の命令コードが格納されているからメモリインタフェー
ス2へはメモリリード要求を行わず、バッファメモリ8
からアドレスシフタ6の出力のメモリアドレスMA6の
下位ビットで指定されるアドレスから命令コードを読み
出し、CPU4に渡す。なお、処理時間の短縮を図るた
めに有効ビットのチェックと同時にバッファメモリ8の
読み出しを開始する。有効ビットが“0”ならばバッフ
ァメモリ8から読み出した命令コードは捨てる。一方、
有効ビットが“0”の場合には、メモリインタフェース
2に対してメモリリード要求を行い、メモリインタフェ
ース2を介して読み込まれた命令コードが変換され、バ
ッファメモリ8に書き込む際に、有効ビットを“1”に
書き換える。
【0089】上記実施形態において、コード効率をさら
に上げるため、命令コード変換装置3によって圧縮命令
コードを使用する領域をプログラマブルに設定てきる1
つ以上の領域設定用レジスタを追加して、非圧縮命令コ
ードで格納されるメモリ領域と圧縮命令コードで格納さ
れるメモリ領域を連続させるようにしてもよい。この場
合には、アドレスデコーダ5はアドレス0000000
0から3FFFFFFFの固定アドレス空間のデコード
ではなく、上記領域設定レジスタの内容とCPUアドレ
スCA4とを比較するデコードとなる。
【0090】なお、初期化プログラムが圧縮命令コード
を使えないようにするには、上記領域設定レジスタのデ
フォルト値を、リセットハンドラプログラム領域を含ま
ないようにするか、あるいは別の初期化用レジスタを追
加し、この初期化用レジスタの内容で圧縮命令コードの
許可/禁止を行い、かつ圧縮命令コード許可レジスタの
初期値を“禁止”に設定する。CPU4がデバツグモー
ドの際は、上記圧縮命令コード許可レジスタによって圧
縮命令コードの禁止を行い、かつプログラムメモリ1に
は圧縮前の命令コードを置くことで、デバッグ装置やデ
バッガは既存のものを流用することが可能となる。
【0091】プログラムメモリ1に圧縮命令コードを置
いてデバッグする際には、デバッガの負担を軽減するた
めに、圧縮前の命令コードをCPU4を使ってプログラ
ムメモリ1に書き込む際、命令コード変換装置3に圧縮
処理(すなわち、与えられた命令コードを命令コードを
圧縮命令コードに変換する)を行う命令コード逆変換回
路を付加してもよい。
【0092】次に、先の実施形態に対してさらにコード
効率を上げるため、図17に示す構成の命令コード変換
装置3の構成を変え、圧縮命令コードとして16ビット
固定長ではなく、16ビット/32ビットの可変長を導
入した実施形態を、新たな命令コード変換装置30の構
成を含むシステム全体の構成を示す図21及び図22を
参照して説明する。なお、図21に示す構成と図22に
示す構成は、※1、※2で示す箇所で連結されているも
のとする。
【0093】32ビット長の圧縮命令コードは、上位1
6ビットIH1、IH2、IH3、…と下位16ビット
IL1、IL2、IL3…から構成されているものとす
る。IH1とIL1がペアとなって1つの32ビット長
の命令コードとなる。また、32ビット長の圧縮命令コ
ードに対応するCPU4の命令コードペア(32ビット
×2命令)はDH1/DL1、DH2/DL2、DH3
/DL3…とする。16ビット長の圧縮命令コードA
1、A2、A3…に対応するCPU4の命令コードは、
前記実施形態と同様の命令コードC1、C2、C3…と
する。圧縮命令コードは、32ビット長の上位16ビッ
トのコードの上位6ビット、または16ビット長のコー
ドの上位6ビットを使ってビット長が識別できるものと
する。例えば上位6ビットが000000〜00001
1,010011(2進数)の場合は32ビット長、0
00100〜010010,011000の場合は16
ビット長とする。命令コード例は、前述した図5に示
す。
【0094】プログラムメモリ1の圧縮命令コード領域
は、例えば16ビット長で32命令単位のブロックに分
割され、32ビット長の圧縮命令コードがブロックをま
たがないよう、またデータがブロック内に置かれないよ
う前述した圧縮ソフトウエアによりオブジェクトが生成
され、プログラムメモリ1にあらかじめ格納されている
ものとする。この実施形態の命令コード変換装置30
は、前述した実施形態の命令コード変換装置3に比べ
て、1つのバッファメモリ8に代えて2つのバッファメ
モリ8a、8bとし、1つのブロックアドレス記憶レジ
スタ9に代えて2つのブロックアドレス記憶レジスタ9
a、9bとし、メモリインタフェース2に与えるアドレ
スMA14を生成するアドレスジェネレータ14と、上
位コード記憶レジスタ16a、16bの内容をバッファ
メモリ使用指定レジスタ27の出力S27で選択する選
択回路17、コード長記憶レジスタ19a、19bの内
容をバッファメモリ使用指定レジスタ27の出力S27
で選択する選択回路20、バッファメモリ8a、8bの
内容をバッファメモリ使用指定レジスタ27の出力S2
7で選択する選択回路22、上位コード記憶レジスタ1
6a、16bの書き込み信号S15a、S15bを生成
する制御回路15、選択回路11の選択信号S21を生
成する制御回路21、有効アドレス記憶レジスタ24
a、24bのリセット信号S23a、S23b、及びカ
ウントアップ信号S23c、S23dとアドレスジェネ
レータ14のカウントアップ信号S23eとを生成する
制御回路23、有効アドレス記憶レジスタ24a、24
bの内容SA24a、SA24bをバッファメモリ使用
指定レジスタ27の出力S27で選択する選択回路2
5、選択回路25の出力A25とアドレスシフタ6の出
力アドレスMA6の下位ビットとを大小比較する比較回
路26、ブロックアドレス記憶レジスタ9a、9bの内
容アドレスBA9a,BA9bとアドレスMA6の上位
ビットとが一致しているかをチェックする比較回路10
a、10b、メモリインタフェース2を介して読み込ま
れた命令コードOC2が32ビット長の圧縮命令コード
の上位16ビットであった場合にこれを記憶する上位コ
ード記憶レジスタ16a、16b、メモリインタフェー
ス2を介して読み込まれた命令コードOC2が16ビッ
ト長の圧縮命令コードか32ビット長の圧縮命令コード
かを検出するコード長検出回路18、メモリインタフェ
ース2を介して読み込まれた命令コードOC2が16ビ
ット長の圧縮命令コードか32ビット長の圧縮命令コー
ドかを記憶するコード長記憶レジスタ19a、19b、
バツファメモリ8a、8bのどこまでコード変換されて
格納されているかを示す有効アドレス記憶レジスタ24
a、24b、どのバッファメモリ8a、8bを次回使用
するかを記憶するバッファメモリ使用指定レジスタ27
を備えて構成される。
【0095】プログラムメモリ1の圧縮命令コード領域
は、16ビット×32命令=512ビット(64バイ
ト)単位のブロックに分割されているので、バッファメ
モリ8a、8bのサイズは、それぞれ32ビット×32
命令=1024ビット(128バイ卜)となる。有効ア
ドレス記憶レシスタ24a、24bは、例えばその値が
“0”のときはバッファメモリ8a、8bに有効な(コ
ード変換済み)の命令コードか格納されていないことを
示し、1命令コードがバッファメモリ8a、8bに格納
される毎に前記カウントアップ信号S23c、S23d
によって+2される。したがって、1ブロック分32命
令がすべて格納されると、32×2=64(10進数)
が有効アドレス記憶レシスタ24a、24bにセットさ
れる。バッファメモリ使用指定レジスタ27の内容が、
例えば“0”のときバッファメモリ8a、ブロックアド
レス記憶レシスタ9a、有効アドレス記憶レジスタ24
a、コード長記憶レジスタ19aが選択されるものとす
る。
【0096】次に、命令コードの読み出しからCPU4
による命令実行のシーケンスを説明する。
【0097】CPU4が圧縮命令コードを格納した領域
のプログラムメモリ1をアクセスしようとすると、CP
U4からのCPUアドレスCA4からアドレスデコーダ
5によって圧縮命令コード領域であると判定されると、
アドレスシフタ6によってCPUアドレスCA4を右に
1ビットシフトしたアドレスMA6を出力する。バッフ
ァメモリ8a、8bのサイズに対応したブロックの上位
アドレスとなる前記アドレスMA6の上位ビット(この
例では32ビット−6ビット=26ビット)が、各バッ
ファメモリ8a、8bに対応するブロックアドレス記憶
レジスタ9a、9bの内容と一致しているか否かがチェ
ックされる。一致していた場合は、一致した方のバッフ
ァメモリ側の有効アドレス記憶レジスタ24a、24b
の内容をチェックし、有効アドレス記憶レジスタ24
a、24bの内容が“0”の場合、あるいはブロツクア
ドレス記憶レジスタ9a、9bがともに不一致の場合
は、前記ブロックの先頭アドレスから圧縮命令コードを
読み出すべく、アドレスジェネレータ14の出力である
メモリアドレスMA14を前記ブロックの先頭アドレス
に設定し、メモリインタフェース2に前記ブロックの先
頭アドレスを与え、プログラムメモリ1から圧縮命令コ
ードIH1、IH2、IH3…、あるいは圧縮命令コー
ドA1、A2、A3…を読み込む。
【0098】バッファメモリ使用指定レジスタ27の内
容で選ばれたブロツクアドレス記憶レジスタ9a、9b
のいずれかに、前記ブロックの先頭アドレスを書き込む
とともに、バッファメモリ使用指定レジスタ27の内容
で選ばれた有効アドレス記憶レジスタ24a、24bの
いずれかを“0”にクリアする。読み込まれた圧縮命令
コードの上位6ビットをコード長検出回路18で16ビ
ット長か32ビット長かを判定し、バッファメモリ使用
指定レジスタ27の内容て選ばれたコード長記憶レジス
タ19a、19bに判定結果をセットする。判定結果
は、例えば16ビット長のときは00(2進数)、32
ビット長のときは10(2進数)とする。コード長記憶
レジスタ19a、19bは、16ビット長の命令コード
を処理中が“00”、32ビット長の命令コードの上位
16ビットを処理中が“10”、下位16ビットの処理
中が“11”となるものとする。
【0099】16ビット長の圧縮命令コード(A1、A
2、A3…)であった場合は、直ちに命令コード変換回
路7でコード変換され、バッファメモリ使用指定レジス
タ27の内容で選ばれたバッファメモリ8a、8bのい
ずれかに格納される。格納されると、バッファ使用レジ
スタ27て選ばれた有効アドレス記憶レジスタ24a、
24bのいずれかは+2される。32ビット長の圧縮命
令コード(IH1、IH2、IH3…)であった場合に
は、バッファメモリ使用指定レジスタ27の内容で選ば
れた上位コード記憶レジスタ16a、16bのいずれか
に上位コード(IH1、IH2、IH3…)を記憶し、
またバッファメモリ使用指定レジスタ27の内容で選ば
れたコード長記憶レシスタ19a、19bの内容を“0
0”から“10”に更新するとともに、下位16ビット
分の命令コードを読み出すために、ブロック先頭アドレ
スに+2したアドレスをアドレスジェネレータ14によ
って生成し、メモリインタフェース2を介してプログラ
ムメモリ1をアクセスする。プログラムメモリ1から下
位16ビットの圧縮命令コード(IL1、IL2、IL
3…)を読み出し、命令コード変換回路7に与える。
【0100】命令コード変換回路7は、先に読み出した
上位16ビットの命令コードと後で読み出した下位16
ビットの命令コードを連結した32ビットの圧縮命令コ
ードを、少なくとも2つの32ビット長のCPU命令コ
ード(命令コードペアDH1/DL1、DH2/DL
2、DH3/DL3…の中から選択される)に変換し、
バッファメモリ使用指定レジスタ27の内容で選ばれた
バッファメモリ8a、8bの2ワードに格納する。格納
とともにバッファ使用レジスタ27て選はれた有効アド
レス記憶レジスタ24a、24bのいずれかは+4され
る。
【0101】CPU4が命令フェッチのために要求した
アドレスを右に1ビットシフトしたアドレスの下位6ビ
ット値(バッファメモリ8a、8bのサイズが32命令
分であるため)と、バッファメモリ使用指定レジスタ2
7て選ばれた有効アドレス記憶レジスタ24a、24b
の内容との比較を比較回路26が行い、6ビット値がバ
ッファメモリ使用指定レジスタ27の内容で選ばれた有
効アドレス記憶レジスタ24a、24bの内容より小さ
くなるまで、アドレスジェネレータ14は生成アドレス
を+2づつ更新し、メモリインタフェース2を介してプ
ログラムメモリ1から圧縮命令コードの読み出し、命令
コード変換回路7による命令コードの変換、バッファメ
モリ8a、8bへの格納、有効アドレス記憶レジスタ2
4a、24bの更新を繰り返し行う。
【0102】上記6ビットの値が有効アドレス記憶レジ
スタ24a、24bの内容より小さくなると、CPU4
の要求した命令が読み込まれ、変換されてバッファメモ
リ8a、8bに格納されたこととなるので、直ちに変換
された命令コードを、命令コード変換回路7からCPU
4に渡し、実行させる。命令実行と並行して、1ブロッ
ク分の圧縮命令コードの読み出し、命令コード変換、バ
ッファメモリ8a、8bヘの格納を継続する。CPU4
が命令を実行すると、CPUアドレスCA4が更新され
る。CPUアドレスCA4が命令コード変換途上あるい
は変換完了のブロック内のアドレスであるか否かを、C
PUアドレスCA4を右に1ビットシフトするアドレス
シフタ6の出力の上位ビット(下位6ビット以外のビッ
ト)と、ブロックアドレス記憶レジスタ9a、9bとを
比較して判断し、一致していればブロック内と判断さ
れ、バッファメモリ使用指定レジスタ27の値を一致し
た方のバッファメモリ8a、8b側を示す値にセットす
る。不一致ならばブロック外に飛び出したこととなり、
最後に使用したバッファメモリ8a、8bでない方のバ
ッファメモリ8a、8b側を示す値として、バッファメ
モリ使用レシスタ27を更新する。通常は、CPU4が
実行する命令は、プログラムの流れが変わらないため、
CPU4の要求する命令は既にバッファメモリ8a、8
bに格納されているコードが多く、格納済みであるコー
ドを有効アドレス記憶レジスタ24a、24bから判定
して、メモリインタフェース2にアクセス要求を出さず
に、すなわちプログラムメモリ1から再び圧縮命令コー
ドを読み出さず、バッファメモリ8a、8bからCPU
4に伸張された命令コードを返す。CPU4が分岐命令
を実行したり、例外を検出すると、プロクラムの流れが
変わりブロック外に飛び出すことがある。ブロック外に
飛び出した場合には、飛び先の命令フェッチをすみやか
に始められるよう、変換途上のブロックの命令読み出し
/命令コード変換/バッファメモリ8a、8bへの格納
を直ちに中止させる。中止しても既に変換された命令コ
ードはバッファメモリ8a、8bがオーバーライトされ
ない限り残っているので、再びこのブロックに戻ってき
た場合の伸張作業は途中から再開できるので、伸張にか
かる時間を短縮できる。この短縮をより効果的にするた
めに、バッファメモリとして、サブルーチン用、例外ル
ーチン用を追加してもよい。本実施例ては、これらのバ
ッファモリは省略しているが、バッファメモリは少なく
とも6ブロック分あることが望ましい。
【0103】命令コード変換回路7は、32ビット長の
圧縮命令コードの変換に際し、一方をNOP命令コード
する場合、上位16ビットIH1、IH2、IH3…で
あることを、上位16ビットコードの一部ビットから認
識すると、命令コード変換回路7はNOP命令コードを
発生し、バッファメモリ8a、8bに格納する。後続の
32ビット長の圧縮命令コードの下位16ビットIL
1、IL2、IL3をプログラムメモリ1から読み出
し、命令コードDL1、DL2、DL3…にコード変換
し、バッファメモリ8a、8bに格納する。例えばプロ
グラムメモリ1の2番地、4番地に、32ビット長の圧
縮命令コードの上位16ビットIH1、下位16ビット
IL1が格納されていたとすると、バッファメモリ8
a、8bの4番地にNOP命令コードを、8番地に命令
コードDL1を格納する。
【0104】なお、NOP命令コードと命令コードDL
1とを逆にバッファメモリ8a、8bに格納してもよ
い。すなわちNOPから実行されてもよいし、NOPが
後で実行されてもよい。この選択はCPU4のアーキテ
クチャで決めればよい。また、前後の命令との関係で、
動的にNOP命令コードを先に実行するように変換した
り、後に実行するように変換してもよい。また、32ビ
ット長の圧縮命令コードによっては、一方をNOPに伸
張するのてはなく、2つの32ビット長のCPU命令コ
ードDH1、DL1に伸張することで、さらにコード効
率を上けることが可能となる。
【0105】上記実施形態では、32ビット長の命令コ
ードは、ブロック境界をまたがないようオブジェクト生
成の際に制約を持たせることを前提とした実施形態を説
明したが、この発明のさらに他の実施形態として、ブロ
ックに対応したプログラムメモリにブロックに格納され
ている命令が16ビット長なのか32ビット長なのか表
す情報をプログラムとは別に持たせてもよい。この場合
には、ブロック境界をまたぐことも可能である。例えば
16ビット長ならば“0”、32ビット長の上位16ビ
ットならば同じく“0”、下位16ビットならば“1”
とする32ビットの情報をプログラムメモリにおいて、
伸張に先立ち、この情報を読み出せば、ブロック境界で
32ビット長のコードがまたいでいる場合に、そのブロ
ックの先頭の情報が“1”となっているので認識でき
る。また、例外からの復帰で32ビット長のコードの下
位16ビットから再開しようとしていることも情報が
“1”となっていることから認識でき、直前のアドレス
から32ビット長の上位16ビットを読み出せばよいこ
とがわかり、ブロックの先頭から読み出すというペナル
ティはなくなる。ただし、32命令(16ビット×32
命令=64バイト)毎に32ビット(4バイト分)プロ
グラムメモリを消費する。すなわち、元々32ビット×
32命令=128バイトがワースト4バイト増えた13
2バイト、ベスト64バイト+4バイト=68バイトと
なる。
【0106】この情報ペナルティをさらに低減するた
め、16ビット長なら00又は01、32ビット長の上
位16ビットは10、下位16ビットは11と各2ビッ
ト化した情報とし、かつ16ビット長と32ビット長の
オペコードを同一のものを使うことができる(16ビッ
ト長か32ビット長かの区別は、この2ビットの情報で
行うことができるため)ことを利用して、16ビット長
の命令を増やし、ほとんど16ビット長の命令コードに
オブジェクトが生成できれば、プログラムはブロックあ
たり64バイト+8バイト=72バイトに近づく。した
がって、72/128=56.25%ピークのコード効
率が得られる。
【0107】前記命令コードのビット長を表す情報を命
令コードの一部ととらえると、前述の「どの位置でもビ
ット長を識別できるエンコード方式」(図7参照)に相
当する。
【0108】このように、上記実施形態においては、C
PUアドレスとプログラムメモリアドレスとの対応を単
純化することで、アドレス変換のためのインデックステ
ーブルなとを持つ必要はなく、単純に右へ1ビットシフ
トするだけてあるため、コスト/伸張時間の点において
優れている。また、シフト回路は、マルチプレクサで構
成可能で、そのアドレス変換は1ns未満となり、一方
従来のインデックステーブルの場合にはメモリの種類に
もよるが、数nsから数百nsかかることになる。
【0109】さらに、CPUが応用されるシステムによ
ってプログラムは異なるため、多用される命令コードも
異なり、本発明は、CPUの外部で命令コードを変換す
るので、応用システムに合わせて異なる圧縮命令セット
を用意することも、CPUを改変するよりはるかに容易
に、よりコード効率の高い命令セットをインプリメント
できる。
【0110】命令コード変換装置3、30の命令コード
変換装置7に、コード変換テーブルメモリを付加し、こ
のメモリに予め圧縮前の命令コードと圧縮後の命令コー
ドの対応情報を書き込んでおき(例えば、このメモリが
マスクROMであった場合は、マスクROMの製造工程
で書き込み、SRAMやフリップフロップなど書き換え
できる場合は、CPU4からデータとして書き込めるよ
うにしておき、圧縮命令コード実行に先立って書き込み
を行う)、伸張の際、一部又はすべての圧縮コードをこ
のメモリに書き込まれた対応情報に基づき命令コード変
換を行う。このような構成をとることで、プログラムに
応じて最も多用される命令コードをより短い圧縮命令コ
ードに割り当てることが可能となり、よりコード効率を
改善することが容易に実現できる。
【0111】また、実行時間よりもコード効率を上げて
プログラムメモリ容量を削減することができる。このよ
うな削減が要求される応用システムとして、例えばCP
Uチップの扱うことができるプログラムメモリ空間を越
える容量を必要とする応用システムに好適である。例え
ばCPUは32ビットのプログラムアドレスを持つがC
PUチップとしては28ビット分しか外部にアドレスを
出力しない場合に、28ビット分のアドレス空間を越え
たプログラムが必要な応用で、圧縮することで28ビッ
ト分のアドレス空間に収まる場合などである。
【0112】また、プログラムメモリにコストの高いメ
モリを使用する応用システムでは、メモリコストを削減
することによりシステム全体のコストを削減できる。コ
ード効率の向上により、プログラムメモリチップの個数
が削減され、応用システムのコストが低減でき、プログ
ラムメモリチップ自身のコストだけでなく、アセンブリ
/テスト/基板/配線などのコストも削減できる。さら
に、コード効率の向上により、プログラムメモリチップ
が減少し、応用システムの実装容積が削減できる。内蔵
プログラムメモリの場合には、CPUチップに内蔵プロ
グラムメモリ容量を越えることは回避され、内蔵プログ
ラムメモリ容量が低減され、チップサイズは縮小可能と
なり、パッケージの小型化も可能となる。また、チップ
サイズの縮小により信頼性/性能を向上させることもで
きる。
【0113】一方、プログラムメモリとのバス幅に制約
があるが、実行時間は上げたいというような応用システ
ムに好適である。例えば16ビットバスでプログラムメ
モリに接続されたシステムにおいて、非圧縮命令コード
が32ビット長である場合は、32ビットの命令コード
を読み出すのに2回のバスサイクルがかかる。圧縮命令
コードを16ビット長にすれば1回のバスサイクルで読
み出させるので、実行時間が短縮できる。
【0114】
【発明の効果】以上説明したように、この発明によれ
ば、CPUを新規設計/改変することなく、命令の追加
を実現してコード効率を向上させ、命令を格納するプロ
グラムメモリの容量を削減できる命令コード変換装置、
命令コード生成方法ならびに情報処理システムを提供す
ることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る情報処理システムの
構成を示す図である。
【図2】CPUアドレスとプログラムメモリとのアドレ
ス対応関係を示す図である。
【図3】CPUアドレスとプログラムメモリとのアドレ
ス対応関係を示す図である。
【図4】圧縮命令コードの例を示す図である。
【図5】命令コードの一例を示す図である。
【図6】命令コードの圧縮手順を示す図である。
【図7】命令コードのエンコード方式を示す図である。
【図8】プログラムメモリにおける例外復帰後の再開を
実行する際の格納例を示す図である。
【図9】ブロック概念の有無における、プログラムメモ
リにおける例外復帰後の再開を実行する際の格納例を示
す図である。
【図10】本発明の一実施形態に係る情報処理システム
の構成を示す図である。
【図11】プログラムメモリとバッファメモリとの対応
関係を示す図である。
【図12】図11におけるブロック境界の制約を示す図
である。
【図13】バッファメモリと付加情報レジスタ群との対
応関係を示す図である。
【図14】アドレス空間の分割とバッファメモリとの関
係を示す図である。
【図15】本発明のキーワードの組み合わせを示す図で
ある。
【図16】サブルーチン用メモリに展開される圧縮命令
コードの一例を示す図である。
【図17】本発明の一実施形態に係る情報処理システム
の構成を示す図である。
【図18】図17に示すシステムの一タイミングチャー
トを示す図である。
【図19】図17に示すシステムの他のタイミングチャ
ートを示す図である。
【図20】図17に示す選択回路11をマルチプレクサ
で構成した場合の選択例を示す図である。
【図21】本発明の他の実施形態に係る情報処理システ
ムの構成を示す図である。
【図22】本発明の他の実施形態に係る情報処理システ
ムの構成を示す図である。
【図23】従来のコード効率を上げる方法におけるアド
レスの対応関係を示す図である。
【符号の説明】
1 プログラムメモリ 2 メモリインタフェース 3 命令コード変換装置 4 CPU 5 アドレスデコーダ 6 アドレスシフタ 7 命令コード変換回路 8,8a,8b バッファメモリ 9,9a,9b ブロックアドレス記憶レジスタ 10,10a,10b,26 比較回路 11,17,20,22,25 選択回路 12 メモリリード要求制御回路 13,15,21,23 制御回路 14 アドレスジェネレータ 16a、16b 上位コード記憶レジスタ 18 コード長検出回路 19a、19b コード長記憶レジスタ 24a、24b 有効アドレス記憶レジスタ 27 バッファメモリ使用指定レジスタ
フロントページの続き (72)発明者 板谷 博史 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝マイクロエレクトロニクスセン ター内 (72)発明者 斉藤 智隆 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝マイクロエレクトロニクスセン ター内 Fターム(参考) 5B033 AA06 AA07 BB03 BE06 CA01 DC08

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 外部から与えられる第1のアドレスをシ
    フト操作することにより、圧縮命令コードをアクセスす
    る第2のアドレスを生成するアドレス生成回路と、 前記第2のアドレスにしたがってアクセスされた前記圧
    縮命令コードを受けて、前記圧縮命令コードを該圧縮命
    令コードに対応した非圧縮命令コードに伸張変換する命
    令コード変換回路とを有することを特徴とする命令コー
    ド変換装置。
  2. 【請求項2】 外部から与えられる第1のアドレスでア
    クセスするアドレス空間が、圧縮命令格納領域又は非圧
    縮命令格納領域であるかを識別する識別手段と、前記識
    別手段の結果に基づいて、前記圧縮命令格納領域又は前
    記非圧縮命令格納領域にアクセスする第2のアドレスを
    生成するアドレス生成手段とを備えたアドレス生成回路
    と、 前記アドレス生成回路の結果に基づいて、前記アドレス
    空間の命令コードを、前記圧縮命令格納領域である場合
    には伸張変換し、あるいは前記非圧縮命令格納領域であ
    る場合には無変換する命令コード変換回路とを有するこ
    とを特徴とする命令コード変換装置。
  3. 【請求項3】 前記圧縮命令コードは、mビット固定
    長、又はmビット/n(n≧m)ビット可変長とし、前
    記非圧縮命令コードはnビット固定長とすることを特徴
    とする請求項1又は2記載の命令コード変換装置。
  4. 【請求項4】 前記命令コード変換回路により伸張変換
    された非圧縮命令コードを格納するバッファメモリと、 前記第1のアドレス又は第2のアドレスを格納するブロ
    ックアドレス記憶レジスタと、 前記第1又は第2のアドレスと、前記ブロックアドレス
    記憶レジスタに格納されたアドレスを比較する比較回路
    と、 前記比較回路の結果に基づいて、前記アドレスが一致の
    場合には前記バッファメモリに格納された非圧縮命令コ
    ードを選択し、あるいは不一致の場合には前記命令コー
    ド変換回路の非圧縮命令コードを直に又は前記バッファ
    メモリを介して選択する選択回路とを有することを特徴
    とする請求項1,2又は3記載の命令コード変換装置。
  5. 【請求項5】 前記バッファメモリは、さらに格納内容
    の有効/無効を示す有効ビットを有し、 前記選択回路は、前記有効ビットが無効の場合かつ前記
    比較回路の結果が一致の場合は、前記命令コード変換回
    路の非圧縮命令コードを直に又は前記バッファメモリを
    介して選択することを特徴とする請求項4記載の命令コ
    ード変換装置。
  6. 【請求項6】 圧縮命令コード、又は前記圧縮命令コー
    ド及び非圧縮命令コードを格納するメモリと、 前記メモリとの間で、前記圧縮命令コード又は前記非圧
    縮命令コードをアクセスするメモリインタフェースと、 前記請求項1,2,3,4又は5記載の命令コード変換
    装置と、 前記圧縮命令コード又は前記非圧縮命令コードをアクセ
    スするアドレスを出力し、前記メモリからアクセスされ
    た非圧縮命令コード、又は前記命令コード変換装置によ
    って得られた非圧縮命令コードを受けて実行するCPU
    とを有することを特徴とする情報処理システム。
  7. 【請求項7】 ソースプログラムからサブセットの非圧
    縮命令で表現されたアセンブラソースプログラムを生成
    する第1のステップと、 前記第1のステップで生成されたアセンブラソースプロ
    グラムをリロケータブルオブジェクトに変換する第2の
    ステップと、 前記第2のステップで生成されたリロケータブルオブジ
    ェクトから非圧縮命令コードで記述されたアブソリュー
    トオブジェクトファイルを生成する第3のステップと、 前記第3のステップで生成されたアブソリュートオブジ
    ェクトファイルを、プログラムメモリの格納アドレスだ
    けをシフト操作し、圧縮命令コードで記述されたアブソ
    リュートオブジェクトファイルに変換して圧縮する第4
    のステップと、 前記第4のステップで圧縮されたファイルを、プログラ
    ムメモリに格納可能なオブジェクトプログラムに変換す
    る第5のステップとを有することを特徴とする命令コー
    ド作成方法。
JP2000030948A 2000-02-08 2000-02-08 命令コード変換装置及び情報処理システム Expired - Fee Related JP3556556B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2000030948A JP3556556B2 (ja) 2000-02-08 2000-02-08 命令コード変換装置及び情報処理システム
US09/778,069 US6801996B2 (en) 2000-02-08 2001-02-07 Instruction code conversion unit and information processing system and instruction code generation method
EP01301062.4A EP1124180B1 (en) 2000-02-08 2001-02-07 Information processing system with instruction code conversion unit, and instruction code generation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000030948A JP3556556B2 (ja) 2000-02-08 2000-02-08 命令コード変換装置及び情報処理システム

Publications (2)

Publication Number Publication Date
JP2001222426A true JP2001222426A (ja) 2001-08-17
JP3556556B2 JP3556556B2 (ja) 2004-08-18

Family

ID=18555890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000030948A Expired - Fee Related JP3556556B2 (ja) 2000-02-08 2000-02-08 命令コード変換装置及び情報処理システム

Country Status (3)

Country Link
US (1) US6801996B2 (ja)
EP (1) EP1124180B1 (ja)
JP (1) JP3556556B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108367A (ja) * 2001-09-27 2003-04-11 Yamaha Corp プログラムメモリ削減方法およびプログラムメモリ読出回路
US9189234B2 (en) 2013-09-04 2015-11-17 Globalfoundries Inc. Reducing overhead in loading constants

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7028286B2 (en) * 2001-04-13 2006-04-11 Pts Corporation Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
US6912649B2 (en) * 2002-03-13 2005-06-28 International Business Machines Corporation Scheme to encode predicted values into an instruction stream/cache without additional bits/area
US6907516B2 (en) * 2002-05-30 2005-06-14 Microsoft Corporation Compression of program instructions using advanced sequential correlation
US7398276B2 (en) * 2002-05-30 2008-07-08 Microsoft Corporation Parallel predictive compression and access of a sequential list of executable instructions
GB2400198B (en) * 2003-04-04 2006-04-05 Advanced Risc Mach Ltd Controlling execution of a block of program instructions within a computer processing system
GB2402763B (en) * 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
US20040252687A1 (en) * 2003-06-16 2004-12-16 Sridhar Lakshmanamurthy Method and process for scheduling data packet collection
TWI224281B (en) * 2003-07-16 2004-11-21 Sunplus Technology Co Ltd A processor executing script with different length and method thereof
EP1728171A2 (en) * 2004-03-26 2006-12-06 Atmel Corporation Dual-processor complex domain floating-point dsp system on chip
US7278122B2 (en) * 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
US7676799B1 (en) * 2005-06-10 2010-03-09 Sun Microsystems, Inc. Address simplification by binary transformation
US20070226724A1 (en) * 2006-03-24 2007-09-27 Mediatek Inc. Method and apparatus for firmware execution and provision
CN101398752B (zh) * 2007-09-29 2011-08-31 国际商业机器公司 重叠指令存取单元和重叠指令存取方法
US20100023733A1 (en) * 2008-04-15 2010-01-28 Vns Portfolio Llc Microprocessor Extended Instruction Set Precision Mode
WO2010116735A1 (ja) * 2009-04-10 2010-10-14 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路
US20110072238A1 (en) * 2009-09-20 2011-03-24 Mimar Tibet Method for variable length opcode mapping in a VLIW processor
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103209A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US10120692B2 (en) 2011-07-28 2018-11-06 Qualcomm Incorporated Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
US20140115304A1 (en) * 2012-10-18 2014-04-24 Synopsys, Inc. Compressed instruction code storage
TWI584197B (zh) * 2013-01-25 2017-05-21 凌通科技股份有限公司 程式碼之動態產生系統及其方法
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
WO2014151691A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
US9372696B2 (en) * 2013-10-18 2016-06-21 Via Technologies, Inc. Microprocessor with compressed and uncompressed microcode memories
KR102143521B1 (ko) 2014-04-21 2020-08-11 삼성전자 주식회사 불휘발성 메모리 시스템, 이를 포함하는 메모리 카드 및 불휘발성 메모리 시스템의 동작방법
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9928066B2 (en) * 2015-06-25 2018-03-27 Intel Corporation Instruction and logic for encoded word instruction compression
US10621353B2 (en) * 2016-12-28 2020-04-14 Intel Corporation Firmware loading for exploit resistance
CN107562442B (zh) * 2017-09-22 2020-03-17 广州酷狗计算机科技有限公司 一种读取数据的方法和装置
CN116466995B (zh) * 2023-06-16 2024-06-11 紫光同芯微电子有限公司 基于复合指令的指令及其操作数的优化方法及装置
CN117118570B (zh) * 2023-09-06 2024-04-02 上海交通大学 有限位数的最大码距遥控指令码生成系统及方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115500A (en) 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
JPH0520086A (ja) 1991-07-11 1993-01-29 Nec Corp 数値演算処理装置
AU2939892A (en) * 1991-12-06 1993-06-28 Richard S. Norman Massively-parallel direct output processor array
JPH06348490A (ja) 1993-06-08 1994-12-22 Hitachi Ltd 演算処理方法、及びマイクロコンピュータ
JPH0962504A (ja) 1995-08-23 1997-03-07 Oki Electric Ind Co Ltd 命令処理装置
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
KR100466722B1 (ko) 1996-01-24 2005-04-14 선 마이크로시스템즈 인코퍼레이티드 어레이경계검사방법및장치와,이를포함하는컴퓨터시스템
JP3201716B2 (ja) 1996-02-22 2001-08-27 シャープ株式会社 コンピュータ装置
US5881258A (en) 1997-03-31 1999-03-09 Sun Microsystems, Inc. Hardware compatibility circuit for a new processor architecture
JP4018158B2 (ja) * 1997-10-02 2007-12-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 可変命令セットコンピュータ
US6529635B1 (en) * 1997-12-15 2003-03-04 Intel Corporation Shape-based image compression/decompression using pattern matching
JPH11306015A (ja) 1998-04-22 1999-11-05 Matsushita Electric Ind Co Ltd 演算処理方法及びそれを用いたマイクロコンピュータ
US6141635A (en) * 1998-06-12 2000-10-31 Unisys Corporation Method of diagnosing faults in an emulated computer system via a heterogeneous diagnostic program
US6128094A (en) * 1998-07-08 2000-10-03 Hewlett-Packard Company Printer having processor with instruction cache and compressed program store
US6397324B1 (en) * 1999-06-18 2002-05-28 Bops, Inc. Accessing tables in memory banks using load and store address generators sharing store read port of compute register file separated from address register file
JP2001195250A (ja) 2000-01-13 2001-07-19 Mitsubishi Electric Corp 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108367A (ja) * 2001-09-27 2003-04-11 Yamaha Corp プログラムメモリ削減方法およびプログラムメモリ読出回路
US9189234B2 (en) 2013-09-04 2015-11-17 Globalfoundries Inc. Reducing overhead in loading constants

Also Published As

Publication number Publication date
EP1124180B1 (en) 2015-11-04
JP3556556B2 (ja) 2004-08-18
US20010013093A1 (en) 2001-08-09
EP1124180A3 (en) 2003-05-02
US6801996B2 (en) 2004-10-05
EP1124180A2 (en) 2001-08-16

Similar Documents

Publication Publication Date Title
JP3556556B2 (ja) 命令コード変換装置及び情報処理システム
KR100535852B1 (ko) 데이타처리장치
JP3499252B2 (ja) コンパイル装置及びデータ処理装置
JP2616182B2 (ja) データ処理装置
US20050198471A1 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
JP3598589B2 (ja) プロセッサ
JP3546980B2 (ja) データ処理装置
GB2366643A (en) Compressing instructions for processors
JP2003085000A (ja) トレース情報生成装置およびその方法
JP2001195250A (ja) 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置
JP2007234048A (ja) コード圧縮技術の高速プロトタイピングを可能にするプログラムのコード圧縮方法、プログラムのコード圧縮システム
US5249273A (en) Microprocessor having a variable length instruction format
JP2669158B2 (ja) データ処理装置
KR100867564B1 (ko) 프로그램 제어 흐름에서 변경들을 이루기 위한 장치 및 방법
CN108920188B (zh) 一种扩展寄存器堆的方法及装置
JP4502532B2 (ja) データ処理装置
JP2556182B2 (ja) デ−タ処理装置
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JPH04104350A (ja) マイクロプロセッサ
JP2002157115A (ja) データ処理装置
JP2001265651A (ja) データ処理装置
US20050216708A1 (en) Processor for performing context switching, a method for performing context switching, a computer program for perform context switching
US6684286B1 (en) High-speed block transfer circuit
JP2002318686A (ja) プロセッサ
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040329

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040420

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040512

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

Free format text: PAYMENT UNTIL: 20090521

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090521

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100521

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110521

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110521

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120521

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120521

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130521

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130521

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20140521

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees