JP3199604B2 - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JP3199604B2
JP3199604B2 JP13407895A JP13407895A JP3199604B2 JP 3199604 B2 JP3199604 B2 JP 3199604B2 JP 13407895 A JP13407895 A JP 13407895A JP 13407895 A JP13407895 A JP 13407895A JP 3199604 B2 JP3199604 B2 JP 3199604B2
Authority
JP
Japan
Prior art keywords
instruction
memory
address
held
operand address
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
JP13407895A
Other languages
English (en)
Other versions
JPH08328853A (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 JP13407895A priority Critical patent/JP3199604B2/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 EP96303914A priority patent/EP0745932B1/en
Priority to EP01111215A priority patent/EP1143333B1/en
Priority to DE69630416T priority patent/DE69630416T2/de
Priority to CN96107762A priority patent/CN1114153C/zh
Priority to CNB021574936A priority patent/CN1286004C/zh
Publication of JPH08328853A publication Critical patent/JPH08328853A/ja
Priority to US09/226,791 priority patent/US6253305B1/en
Application granted granted Critical
Publication of JP3199604B2 publication Critical patent/JP3199604B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】組み込み用途等に用いられるプロ
セッサに関する。
【0002】
【従来の技術】近年、組み込み用途向けのプロセッサを
用いて、多種多様なニーズに応えるようにした情報機器
が盛んに開発されている。このような情報機器では、プ
ロセッサ、ROM、RAMを1チップ化することもあ
り、ハードウェア、ソフトウェアの両面において処理の
高速化やコストの低減の徹底が求められる。特にハード
ウェア面でROM容量を低減するには、ソフトウェア面で
プログラムサイズをできるだけ小さくしなければなら
ず、これを実現するために様々な技術が開発されてい
る。プログラムサイズの縮小のための技術の1つに、メ
モリの読み書きの効率化がある。メモリの読み書きの効
率化技術を図14(a)(b)の具体例を参照しながら
説明する。図14は、メモリの読み書きを行うためのプ
ログラム例である。
【0003】図14(a)及び図14(b)のプログラ
ム例は、何れも『メモリの保持値を読み出し、その保持
値を用いて演算を行い、その結果を元のメモリに格納す
る』といった単純なメモリの読み書きを表している。図
14(a)における命令a1は絶対アドレス(abs16)
でアドレスが指定されたメモリの保持値をレジスタD0
に読み出す読出命令であり、命令a2はレジスタD0と
レジスタD1との加算を行い、その結果をレジスタD0
に格納する加算命令である。命令a3はレジスタD0の
保持値を絶対アドレスで指定されたアドレスに格納する
格納命令である。これらの命令の基本語長は8ビット長
としている。また絶対アドレスを16ビット長としてい
る。そのため、図14(a)のプログラム例の総コード
サイズは7バイトになっている。即ち、メモリの読み書
きに7バイトのコードサイズが費やされることがわか
る。
【0004】この図14(a)のプログラム例では、1
6ビット長の絶対アドレスによってメモリアクセスを行
っていた。この2回の絶対アドレスでのメモリアクセス
をアドレスレジスタを用いて実現したのが図14(b)
のプログラム例による読み書きである。図14(b)の
プログラム例が図14(a)のプログラム例と異なるの
は、第1に図14(b)のプログラム例では、事前にア
ドレスレジスタに絶対アドレスを転送している点である
(命令b1)。また、第2に図14(b)のプログラム
例がアドレスレジスタを用いてアドレスを指定すること
でメモリからレジスタD0への転送を行う点である(命
令b2)。第3にアドレスレジスタを用いてアドレスを
指定することで計算結果をメモリに格納している点であ
る(命令b3)。
【0005】この図14(b)のプログラム例による読
み書きでは、アドレスレジスタへの転送といった転送命
令が必要になるものの、絶対アドレスを含む命令が1つ
になっているため(命令b1)、総バイト数が6バイト
になり、図14(a)のプログラム例より1バイト減少
していることがわかる。このようにメモリの読み書きの
コードサイズを小さくできれば、組み込み用途のソフト
ウェアにおいては、相当量のコードサイズを圧縮するこ
とができる。何故なら、組み込み用途のハードウェアで
は多数のI/Oポートがメモリにマッピングされている
ため、メモリの読み書きを効率的に行えれば、I/Oポ
ートの書き換えがより効率的になるからである。
【0006】
【発明が解決しようとする課題】しかしながら上記図1
4(b)に示した従来技術によれば、コードサイズを圧
縮するためにアドレスレジスタが占有されてしまうとい
った問題点があった。特にアドレスレジスタが少ないプ
ロセッサにおいては、常に上記図14(b)の手法を利
用できるとは限らない。また、組み込み用途においては
メモリの読み書きが頻繁であるので、上記図14(b)
でメモリの読み書きを行えば、アドレスレジスタを他の
用途に利用できなくなる。
【0007】本発明は上記問題点に鑑み、アドレスレジ
スタを占有することなく、コードサイズの縮小を図るこ
とができるプロセッサを提供することを目的とする。
【0008】
【課題を解決するための手段】上記目的を達成するため
に請求項1のプロセッサは、メモリに接続され、メモリ
アクセス先のアドレスを保持するオペランドアドレスバ
ッファと、命令を取り出す取り出し手段と、取り出され
た命令中、メモリアクセスを内容とする命令を検出する
命令検出手段と、検出された命令がオペランドアドレス
バッファに保持されているアドレスをアクセス先として
指定しているか否かを判定する判定手段と、指定されて
いると判定された場合、その命令がメモリへのデータの
書き込み命令及びメモリからのデータの読み出し命令の
いずれであるかに拘わらず、保持内容をメモリに出力す
るようオペランドアドレスバッファを制御する第1の制
御手段と、指定されていないと判定された場合、その命
令がメモリへのデータの書き込み命令及びメモリからの
データの読み出し命令のいずれであるかに拘わらず、
の命令のオペランドアドレスをオペランドアドレスバッ
ファに格納して、そのアドレスをメモリに出力するよう
オペランドアドレスバッファを制御する第2の制御手段
とを備えることを特徴としている。
【0009】また、請求項2のプロセッサにおいて前記
プロセッサは、割込み処理の発生及び終了を検出する割
込検出手段と、割込み処理の発生が検出されると、オペ
ランドアドレスバッファの保持値をスタックに退避する
退避手段と、割込み処理の終了が検出されると、スタッ
クからオペランドアドレスバッファに保持値を復帰する
復帰手段とを備えることを特徴としている。
【0010】また、請求項3のプロセッサにおいてメモ
リに接続され、直前からn回前までのメモリアクセスに
おけるn+1個のメモリアクセス先のアドレスを保持す
るn+1段のオペランドアドレスバッファを有するバッ
ファアレイと、命令を取り出す取出手段と、取り出され
た命令中、メモリアクセスを内容とする命令を検出する
命令検出手段と、検出された命令がバッファアレイ中の
何れかのオペランドアドレスバッファを指定する情報を
含んでいるか否かを判定する判定手段と、情報を含んで
いると判定された場合、その命令がメモリへのデータの
書き込み命令及びメモリからのデータの読み出し命令の
いずれであるかに拘わらず、その情報で指定されたオペ
ランドアドレスバッファの保持内容をメモリに出力する
よう、バッファアレイを制御する第1の制御手段と、情
報を含んでいないと判定された場合、その命令がメモリ
へのデータの書き込み命令及びメモリからのデータの読
み出し命令のいずれであるかに拘わらず、その命令のオ
ペランドアドレスを何れかのオペランドアドレスバッフ
ァに格納して、そのオペランドアドレスをメモリに出力
するよう、バッファアレイを制御する第2の制御手段
と、を備えることを特徴としている。
【0011】また、請求項4のプロセッサにおいて第2
の制御手段は、命令検出手段によってメモリアクセスを
内容とする命令が検出される度に、バッファアレイ内の
各オペランドアドレスバッファの保持値を順次次段に出
力するよう制御する第1の制御部と、保持値の出力後、
取り出し手段によって取り出された命令のオペランドア
ドレスを最前段のオペランドアドレスバッファに格納す
るよう制御する第2の制御部と、格納されたアドレスを
メモリに出力するようバッファアレイを制御する第3の
制御部とを備えることを特徴としている。
【0012】また、請求項5のプロセッサにおいて前記
プロセッサは、割込み処理の発生及び終了を検出する割
込検出手段と、割込み処理の発生が検出されると、n+
1段のオペランドアドレスバッファの保持値をスタック
に退避する退避手段と、割込み処理の終了が検出される
と、スタックからn+1段のオペランドアドレスバッフ
ァに保持値を復帰する復帰手段とを備えることを特徴と
している。
【0013】
【作用】請求項1のプロセッサによれば、オペランドア
ドレスバッファは、メモリに接続され、メモリアクセス
先のアドレスを保持している。メモリとは、ROM、R
AMといった記憶デバイスを意味するが、記憶デバイス
の他にもタイマ、シリアルポート等の各種I/Oデバイ
スは一般的にメモリアドレスが割り付けられるからメモ
リに含まれる(メモリマップドI/O)。そのため、オ
ペランドアドレスバッファはタイマ、シリアルポート等
の各種I/Oデバイスを接続し、メモリアクセス先とし
てこれらの各種I/Oデバイスのアドレスを保持してい
ることになる。
【0014】取り出し手段によって命令が取り出され、
取り出された命令中、メモリアクセスを内容とする命令
が命令検出手段によって検出される。ここでメモリアク
セスを内容とする命令とは、具体的には、読み出し命
令、格納命令、メモリの保持値を対象とした加算、減
算、シフト演算をいう。また、読み出し命令(LD(Lo
ad)命令)とは、メモリの保持値を読み出してレジスタ
に格納する命令をいい、更に格納命令(ST(STore)
命令)とは、レジスタに保持されている値をメモリに格
納する命令をいう。
【0015】このようにメモリアクセスを内容とする命
令が検出されると、検出された命令がオペランドアドレ
スバッファに保持されているアドレスをアクセス先とし
て指定しているか否かが判定手段によって判定される。
指定されていると判定された場合、オペランドアドレス
バッファは第1の制御手段によって、その保持内容をメ
モリに出力するよう制御される。
【0016】指定されていないと判定された場合、その
命令のオペランドアドレスが第2の制御手段によってオ
ペランドアドレスバッファに格納され、第2の制御手段
によってオペランドアドレスバッファがそのアドレスを
メモリに出力するよう制御される。このような一連の処
理によって、オペランドアドレスが一旦オペランドアド
レスバッファに格納されると、そのオペランドアドレス
バッファの保持内容を何度も再利用することができる。
換言すれば、第1及び第2の制御手段の処理によってオ
ペランドアドレスバッファに絶対アドレスを格納すると
いった処理を伴わず絶対アドレスの保持のためにアドレ
スを占有するといったこともないメモリアクセスが可能
となる。
【0017】従って、同一のアクセス先に対して何度も
アクセスを行う場合、I/Oポートが多数ありこれらに
対する読み書きを頻繁に行う場合等に非常に好適なメモ
リアクセスを実現できる。また、請求項2のプロセッサ
によれば、割込検出手段によって割込み処理の発生及び
終了が検出される。割込み処理の発生が検出されると、
退避手段によってオペランドアドレスバッファの保持値
がスタックに退避される。一方、割込検出手段によって
割込み処理の終了が検出されると、復帰手段によってス
タックからオペランドアドレスバッファに保持値が復帰
される。このような処理によってたとえ割込み処理が発
生しても、請求項2のプロセッサではオペランドアドレ
スバッファの保持内容が破壊されることはない。
【0018】また、請求項3のプロセッサによれば、メ
モリに接続され、直前からn回前までのメモリアクセス
におけるn+1個のメモリアクセス先のアドレスがn+
1段のオペランドアドレスバッファに保持されている。
取出手段によって命令が取り出されると、取り出された
命令中、メモリアクセスを内容とする命令が命令検出手
段によって検出される。メモリアクセスを内容とする命
令が検出されると、検出された命令がバッファアレイ中
の何れかのオペランドアドレスバッファを指定する情報
を含んでいるか否かが判定手段によって判定される。
【0019】判定手段によって情報を含んでいると判定
された場合、バッファアレイは第1の制御手段によって
その情報で指定されたオペランドアドレスバッファの保
持内容をメモリに出力するよう制御される。一方、判定
手段によって情報を含んでいないと判定された場合、第
2の制御手段によってその命令のオペランドアドレスが
何れかのオペランドアドレスバッファに格納され、その
オペランドアドレスをメモリに出力するよう、バッファ
アレイが制御される。
【0020】また、請求項4のプロセッサによれば、第
2の制御手段は、命令検出手段によってメモリアクセス
を内容とする命令が検出される度に、バッファアレイ内
の各オペランドアドレスバッファの保持値が順次次段に
出力するよう第1の制御部によって制御される。
【0021】保持値の出力後、取り出し手段によって取
り出された命令のオペランドアドレスを最前段のオペラ
ンドアドレスバッファに格納するよう第2の制御部によ
って制御される。このように格納されたアドレスをメモ
リに出力するよう第3の制御部によってバッファアレイ
が制御される。また、請求項5のプロセッサによれば、
前記プロセッサは、割込み処理の発生及び終了が割込検
出手段によって検出される。割込み処理の発生が検出さ
れると、n+1段のオペランドアドレスバッファの保持
値が退避手段によってスタックに退避される。
【0022】割込み処理の終了が検出されると、復帰手
段によってスタックからn+1段のオペランドアドレス
バッファに保持値が復帰される。
【0023】
【実施例】図1は、本発明の第1の実施例におけるプロ
セッサの構成を示すブロック図である。本プロセッサ
は、命令バッファ1、命令レジスタ2、ドライバ3、算
術論理演算部4、オペランドアドレスバッファ5、ロー
ドバッファ6、ストアバッファ7、ドライバ8、ドライ
バ9、命令アドレスバッファ10、命令フェッチバッフ
ァ11、デコーダ12、マイクロ命令レジスタ13、ス
テータスレジスタ14、プリフェッチカウンタ15、イ
ンクリメンタ16、デコードプログラムカウンタ17、
実行プログラムカウンタ18、レジスタ群19、プログ
ラムステータスワード20、割込み受付部21、セレク
タ23、セレクタ24、セレクタ25、内部バス30、
内部バス31、内部バス32、アドレスバス33、デー
タバス34、ROM35、RAM36、周辺回路37、
パス41、パス42、及びパス43、及びパス44で構
成される。
【0024】同図において、ROM35、RAM36
は、それぞれ命令、データを記憶する。また周辺回路3
7は、例えばタイマ、シリアルポート等の各種I/Oデ
バイスである。それぞれのI/Oデバイスはメモリアド
レスが割り付けられている(いわゆるメモリマップドI
/O)。命令バッファ1(図中では、IB1と略記してい
る。以降この略称を用いる。)は、命令の実行に先だっ
て先行的にROM35から取り出された命令が蓄えられ
る。
【0025】命令レジスタ2(図中では、IR2と略記し
ている。以降この略称を用いる。)は、デコーダ12に
よるデコード対象の命令を保持する。ドライバ3は、IB
1の内容をB2BUS32へ出力する3ステートドライバで
ある。この出力は、IB1に絶対アドレスやオペランドデ
ータが蓄積している場合にマイクロ命令レジスタ13に
よる制御によって行われる。
【0026】算術論理演算部4はデコーダ12の制御に
より、データ演算やアドレス計算を行う。アドレス計算
については、例えば、命令のオペランドでディスプレー
スメント付き間接アドレスが指定されている場合、算術
論理演算部4はレジスタ群19内のアドレスレジスタに
保持されている値とIB1に保持されているディスプレー
スメント(disp)とからメモリアクセス先のアドレスを
計算し、オペランドアドレスバッファ5に出力する。ま
た、命令のオペランドで絶対アドレスが指定されている
場合、算術論理演算部4は、IB1から入力される絶対ア
ドレスをそのままオペランドアドレスバッファ5に出力
する。
【0027】オペランドアドレスバッファ5(図中で
は、OAB5と略記している。以降この略称を用いる。)
は、メモリアクセス先のアドレスを保持する16ビット
幅のバッファである。ここでいうメモリアクセスは、周
辺回路37がメモリマップドI/OであることからRA
M36、ROM35へのアクセスだけでなく周辺回路3
7へのI/Oアクセスを含む。
【0028】ロードバッファ6(図中では、LDB6と略
記している。以降この略称を用いる。)は、16ビット
幅のバッファであり、OAB5に保持されたアドレスが示
すメモリアクセス先から読み出されたデータを保持す
る。ストアバッファ7(図中では、STB7と略記してい
る。以降この略称を用いる。)は、16ビット幅のバッ
ファであり、OAB5に保持されたアドレスが示すメモリ
アクセス先に書き込むべきデータを保持する。
【0029】ドライバ8は、3ステートドライバであ
り、デコーダ12及びMIR13の制御によって割込み処
理発生時の退避処理に際して、OAB5の保持内容をABUS
30に伝達する。ドライバ9は、3ステートドライバで
あり、デコーダ12及びマイクロ命令レジスタ13の制
御によってメモリアクセスに際してOAB5の保持値をア
ドレスバス33に出力する。即ち、ドライバ9により、
OAB5の保持値がメモリアドレスとしてROM35、R
AM36及び周辺回路37に与えられる。
【0030】命令アドレスバッファ10(図中では、IA
B10と略記している。以降この略称を用いる。)はフ
ェッチ先の16ビット長のアドレスを保持する。命令フ
ェッチバッファ11(図中では、IFB11と略記してい
る。以降この略称を用いる。)は、ROM35から取り
出された16ビット長の命令を保持するデコーダ12
は、IR2の命令及びステータスレジスタ14の内容を解
読して、その命令を実現するマイクロ命令を出力する。
【0031】マイクロ命令レジスタ13(図中では、MI
R13と略記している。以降この略称を用いる。)は、
デコーダ12からのマイクロ命令に従って命令を実現す
る制御を行う。ステータスレジスタ14(図中では、SR
14と略記している。以降この略称を用いる。)は、命
令の解読に必要な各種のステータスフラグを保持する。
【0032】プリフェッチカウンタ15(図中では、PF
C15と略記している。以降この略称を用いる。)、イ
ンクリメンタ16(図中では、INC16と略記してい
る。)からなる回路は、デコーダ12の制御により、フ
ェッチすべき命令のアドレスを順に生成するいわゆるプ
ログラムカウンタを構成する。デコードプログラムカウ
ンタ17(図中では、DECPC17と略記している。以降
この略称を用いる。)は、命令解読ステージにある命令
のアドレスを保持する。
【0033】実行プログラムカウンタ18(図中では、
EXPC18と略記している。以降この略称を用いる。)
は、命令実行ステージにある命令のアドレスを保持す
る。レジスタ群19は、複数のレジスタからなる。本実
施例では、四本のデータレジスタ(D0〜D3)と、四
本のアドレスレジスタ(A0〜A3)と、スタックポイ
ンタとを有し、本実施例ではそれぞれ16ビット長であ
るものとする。
【0034】プログラムステータスワード20(図中で
は、PSW20と略記している。以降この略称を用い
る。)は、プロセッサ内部状態を示す各種フラグを保持
する。割込み受付部21は、割込み信号(IPT0〜6)
を受け付けて、割込み信号のレベルに応じた割込みレベ
ル信号を出力する。割込み信号(IPT0〜6)とは、外
部の各種I/O装置からの割込み要求を通知する7種類
の信号である。また割込みレベル信号とは、IRQ0からI
RQ6の順に高い優先度をもち、デコーダ12に対してレ
ベルに対応する割込み処理を要求する信号である。また
割込み受付部21はノンマスカブル割込み信号を受け付
けた場合、デコーダ12にそのまま出力する。ノンマス
カブル割込み(以下、NMI割込み)は、上記割込み信号
(IPT0〜6)よりも優先順位が高く、マスクできない
(いつでも受け付けられる)割込みである。
【0035】セレクタ23は、内部バス30、内部バス
32、算術論理演算部4の何れかからのデータを選択的
に算術論理演算部4の一方の入力側に出力するセレクタ
24は、内部バス31と内部バス32の何れかからのデ
ータを選択的に算術論理演算部4の他方の入力側に出力
する内部バス30(図中では、ABUS30と略記してい
る。以降この略称を用いる。)、内部バス31(図中で
は、B1BUS31と略記している。以降この略称を用い
る。)、内部バス32(図中では、B2BUS32と略記し
ている。以降この略称を用いる。)は、プロセッサの内
部バスである。
【0036】{OAB5、LDB6、STB7、IAB10、IFB1
1についての対比説明}次にOAB5、LDB6、STB7、IAB
10、IFB11の各バッファのそれぞれの役割について
説明する。図2は、OAB5、LDB6、STB7、IAB10、IF
B11の役割を説明するための説明図である。本図にお
いてOAB5の保持値は、矢印j1に示すようにRAM3
6側のメモリアクセス先のアドレスになっている。また
LDB6の保持値は、矢印j3に示すように当該メモリア
クセス先のアドレスから読み出されたデータになってい
る。更にSTB7の保持値は、矢印j2に示すようにメモ
リアクセス先のアドレスに書き込むべきデータになって
いる。
【0037】一方IAB10の保持値は矢印j4に示すよ
うにROM35側のフェッチ先のアドレスであることが
わかる。またIFB11の保持値は矢印j5に示すように
当該フェッチ先のアドレスから取り出された命令になっ
ている。プログラムカウンタが更新されてゆくと、IAB
10の保持値は図の破線の四角形j6、j7で示すよう
に、順次更新されてゆくことがわかる。IAB10の保持
値の更新はプログラムカウンタの更新の度に行われる
が、これに対してOAB5の保持値の更新は図の破線の四
角形j8、j9で示すように、アドレス演算の実行時あ
るいは絶対アドレスの指定の度に行われる。換言すれ
ば、OAB5の保持値はアドレス計算あるいは絶対アドレ
ス指定が無い限り更新されることはない。
【0038】<PAアドレッシングについて>本プロセ
ッサの命令セットでは、オペランドアドレスバッファの
保持値をメモリアクセス先に指定する命令を有してい
る。このようにメモリアクセス先にオペランドアドレス
バッファの保持値を指定するアドレッシング法をPA
(PreviousAddress)アドレッシングと呼ぶ。
【0039】図3は、PAアドレッシングによる読み出
し命令、格納命令を説明するための説明図である。この
PAアドレッシングでのメモリアクセス先の指定は、ニ
ーモニックレベルでは、オペランドに(PA)といった
指定を行うことで実現される。PAアドレッシングを前
提にした読み出し命令、格納命令の命令フォーマットを
図3(a)に示す。図3(a)に示すように、PAアド
レッシングを前提にした読み出し命令、格納命令の命令
フォーマットには、読み出し命令、格納命令等の命令の
種別を示すフィールドd1と、機械語コード内のPAア
ドレッシングを指定用のフィールドd2(1bit長)と、
レジスタ群19内のデータレジスタD0〜D3のうち何
れかを指定するためのフィールドd3(2bit長)とがそ
れぞれ割り当てられている。
【0040】本図において命令種別用のフィールドd1
は、命令が読み出し命令であるか、格納命令であるか、
加算、減算、剰余算、シフト演算であるかを示し、また
これらの命令が8ビットデータを用いるか、16ビット
データを用いるか等を示す。PAアドレッシングを指定
用のフィールドd2は、”1”でPAアドレッシングを
指定する旨を示し、”0”でPAアドレッシングを指定
しない旨を示す。
【0041】データレジスタ指定用フィールドd3
は、”00”でオペランドにデータレジスタD0を指定
する旨を示し、”01”でオペランドにデータレジスタ
D1を指定する旨を示す。”10”でオペランドにデー
タレジスタD2を指定する旨を示し、”11”でオペラ
ンドにデータレジスタD3を指定する旨を示す。次にP
Aアドレッシングによる読み出し命令、格納命令につい
て説明を行う。図3(b)は、PAアドレッシングによ
る読み出し命令を説明するための説明図である。また図
3(c)は、PAアドレッシングによる格納命令を説明
するための説明図である。
【0042】図3(b)における『LD (PA),Dn』は、P
Aアドレッシングによる読み出し命令である。ここで読
み出し命令(LD(Load)命令)とは、メモリの保持値
を読み出してレジスタに格納する命令をいい、またPA
アドレッシングによる読み出し命令ではその読み出し先
をオペランドアドレスバッファに保持されているアドレ
スにしている。
【0043】図3(b)の一例ではオペランドアドレス
バッファに0043番地が保持されているので、読み出
し命令のオペランドで(PA)を指定することで実線の
矢印に示すように、メモリの0043番地が読み出し先
になり、この0043番地の格納値が破線の矢印に示す
ようにデータレジスタDnに読み出されている。図3
(c)における『ST Dn,(PA)』は、PAアドレッシング
による格納命令である。ここで格納命令(ST(STor
e)命令)とは、レジスタに保持されている値をメモリ
に格納する命令をいい、PAアドレッシングによる格納
命令ではこのメモリの格納先をオペランドアドレスバッ
ファに保持されているアドレスにしている。
【0044】図3(c)の一例ではオペランドアドレス
バッファに0043番地が保持されているので、格納命
令のオペランドで(PA)を指定することで、実線の矢
印に示すように、メモリの0043番地が格納先にな
り、データレジスタDnの保持値が破線の矢印に示すよ
うに0043番地に書き込まれている。PAアドレッシ
ングを用いたメモリの読み書きのプログラム例を図4
(a)に示す。図4は、PAアドレッシングを用いて記
述されたプログラムと、従来通りの記述で作成されたプ
ログラムとを比較するための説明図である。尚本図のプ
ログラム例は、図14(a)(b)に示したプログラム
例と同様、何れも『メモリの保持値を読み出し、その保
持値を用いて演算を行い、その結果を元のメモリに格納
する』といった単純なメモリの読み書きを表している。
【0045】本図において図4(a)は、PAアドレッ
シングでメモリの読み書きを行うプログラム例であり、
図4(b)は、2回の絶対アドレス指定でメモリの読み
書きを行うプログラム例である。また図4(c)は、ア
ドレスレジスタを用いてメモリの読み書きを行うプログ
ラム例である。本図の図4(b)のプログラム例は図1
4(a)における従来例のプログラム例と同一であり、
本図の図4(c)のプログラム例は図14(b)におけ
る従来例のプログラム例と同一である。
【0046】図4(a)のプログラムは、絶対アドレス
の指定によってメモリからレジスタへの読み出しを行っ
ている点は従来例で示した図4(b)と同じであるが
(命令a1、a2)、図4(b)がレジスタの値の格納
を絶対アドレスによるアドレス指定で行っているのに対
し(命令a3)、図4(a)では、PAアドレッシング
によるメモリアクセス先の指定で格納を行っている(命
令a4)。そのため、図4(a)の破線の四角形a5で
示しているように、PAアドレッシングによるコーディ
ングでは、絶対アドレスによるアドレス指定が不必要で
あることがわかる。
【0047】また、図4(a)のプログラム例を、図4
(c)のプログラム例と比較すれば、図4(c)では、
アドレスレジスタに絶対アドレスを転送するといった命
令(命令b1)、アドレスレジスタを用いた読み出し命
令(命令b2)、アドレスレジスタを用いた格納命令
(命令b4)を含んでいるのに対し、本図4(a)のプ
ログラム例は、アドレスレジスタへの転送命令や、読み
出し命令、格納命令を含んでいないことがわかる。
【0048】次にコードサイズについて比較する。PA
アドレッシングを用いれば、図4(a)に示すように読
み書きのプログラムが5バイトのコードサイズで実現で
きる。これを図4(b)のプログラム例のコードサイズ
と比較すればコードサイズが2バイト減少しているのが
わかる。また図4(c)のプログラム例のコードサイズ
と比較すればコードサイズが1バイト減少しているのが
わかる。従って、メモリの読み書きをPAアドレッシン
グで行えば多数のRAM36、周辺回路37のI/Oデ
バイスに対する読み書きをより小さなコードサイズで実
現できる。
【0049】<動作例>上記のように構成されたプロセ
ッサの動作を以下の〜の命令からなるプログラムを
対象として説明する。尚、このプログラムうち、〜
の命令は上記図4(a)のプログラム例が含む命令と同
一内容である。・・・ 『LD (d8,An),Dn』・・・ 『LD (abs16),Dn』・・・ 『ADD Dm,Dn』・・・ 『ST Dn,(PA)』 {『LD (d8,An),Dn』の実行及びOAB5の保持内容の遷移
}図5及び図6は図1に示した各構成の動作を説明す
るためのタイミングチャートである。本図において、時
間t1以前に命令『LD (An),Dn』が既に実行されている
とする。そのため時間t1におけるOAB5の保持内容は
『LD (An),Dn』のソース側オペランドのアドレス、即ち
アドレスレジスタの保持値である『An』になっている。
この時間t1においてIB1からIR2へと『LD (d8,An),D
n』のオペコードが転送され、このオペコードがデコー
ダ12によって解読される。このように解読されること
で、時間t2でMIR13はアドレス計算『adr.calc』の
制御を行う。このとき、MIR13はレジスタ群19内の
アドレスレジスタの保持値『An』をABUS30に出力する
(矢印y1)。またドライバ3を駆動し、IB1に保持さ
れているディスプレースメント(disp8)をB2BUS32に
出力する(矢印y2)。これらの時間t2での処理によ
って時間t3では、ABUS30にアドレスレジスタの保持
値『An』が表れ、B2BUS32に8ヒ゛ット長のディスプレース
メント(disp8)が表われる。また、時間t3で、MIR13
はセレクタ23、セレクタ24を切り換えて、算術論理
演算部4にアドレスレジスタの保持値と、8ヒ゛ット長のデ
ィスプレースメント(disp)とのadd演算を行わせる。
【0050】時間t4では、MIR13が転送制御『loa
d』を行い、算術論理演算部4の演算結果『An+disp8』
が、算術論理演算部4からOAB5へと転送される(矢印
y3)。時間t1から時間t4までの間は破線の矢印で
表されるように、OAB5には、以前のメモリアクセス先
のアドレスである『An』が保持されていたが、時間t5
での格納によってOAB5の保持内容は『An+disp8』に更
新される。
【0051】時間t6では、MIR13はドライバ9を駆
動し、OAB5の保持値『An+disp8』をアドレスバス33
に出力して、それと共にRAM36の読み出しを許可す
る(矢印y6)。これによってアドレスAn+disp8の保
持値がRAM36からデータバス34を介してLDB6に
読み出される。LDB6に読み出された保持値は、セレク
タ25を経由してレジスタ群19内のデータレジスタDn
に格納される(矢印y7)。
【0052】{『LD (abs16),Dn』の実行及びOAB5の保
持内容の遷移}時間t5では、IB1からIR2へと『LD
(abs16),Dn』のオペコードの転送が行われる。このオ
ペコードがデコーダ12によって解読され、時間t6に
おいてMIR13はアドレス計算『adr.calc』の制御を行
う。MIR13はドライバ3を駆動し、IB1に保持されて
いる16ヒ゛ット長の絶対アドレスabs16をB2BUS32に出力す
る(矢印y4)。この出力によってB2BUS32は、絶対
アドレス『abs16』が表れている状態になる。B2BUS32
上に表れた絶対アドレス『abs16』は、算術論理演算部
4を通過(through)してOAB5に転送される(矢印y
5)。
【0053】時間t5から時間t8までの間は、破線の
矢印で表されるように、OAB5の保持内容は、『LD (d8,
An),Dn』のメモリアクセス先のアドレスである『An+di
sp8』であったが、時間t9での格納によってOAB5の保
持内容は、『abs16』に更新される。時間t9では、MIR
13はドライバ9を駆動し、OAB5の保持値『abs16』を
アドレスバス33に出力して、それと共にRAM36の
読み出しを許可する(矢印y8)。これによってアドレ
スabs16の保持値がRAM36からデータバス34を介
してLDB6に読み出され、セレクタ25を経由してレジ
スタ群19内のデータレジスタDnに転送される(矢印y
9)。
【0054】{命令『ADD Dm,Dn』の実行及びOAB5の保
持内容の遷移}時間t9においてOAB5への格納が行
われている一方で、IB1からIR2へと『ADD Dm,Dn』の
オペコードの転送が行われる。デコーダ12によって
『ADD Dm,Dn』のオペコードが解読される。このデコー
ダ12はこのオペコードを解読し、MIR13にレジスタ
群19内のデータレジスタDnの保持値をABUS30及びB2
BUS32に出力させる。この出力によってABUS30及びB
2BUS32にはレジスタ群19内のデータレジスタの保持
値が表われ、これらを被演算子とする演算が算術論理演
算部4によって行われる。演算結果は、ABUS30に出力
され、ABUS30からレジスタ群19内のデータレジスタ
Dnへと転送される(図6の矢印y10、y11)。
【0055】尚、時間t9から時間t11にかけての
『ADD Dm,Dn』の実行では、メモリアクセスが行われな
かったので、OAB5は、『LD (abs16),Dn』でのメモリア
クセス先のアドレス『abs16』を格納したままになって
いる。 {命令『ST Dn,(PA)』の実行及びOAB5の保持内容の遷
移}時間t11において、IB1からIR2へと『ST Dn,
(PA)』のオペコードの転送が行われる。続いてIR2から
デコーダ12への転送が行われ、『ST Dn,(PA)』のオペ
コードがデコーダ12によって解読される。『ST Dn,(P
A)』は前記PAアドレッシングの指定ビットが”1”に
なっている。デコーダ12はこれを検出し、PAアドレ
ッシングでレジスタDnの保持値をメモリに格納するよう
MIR13を制御する。
【0056】時間t13において、MIR13はレジスタ
群19内のデータレジスタDnの保持値をABUS30に出力
させる。ABUS30に出力されたデータレジスタDnの保持
値はSTB7に格納される。それと共にMIR13はアドレス
計算制御を行うことなくドライバ9を駆動し、OAB5の
保持値abs16をアドレスバス33に出力する(矢印y1
2)。続いてMIR13はRAM36の書き込みを許可す
る。これらの1連の処理でSTB7の保持値が、OAB5に保
持されているアドレス、即ちアドレスabs16に対して書
き込まれる。
【0057】以上の説明により、PAアドレッシング
(Previous Address)の語義通り、直前のメモリアク
セス先のアドレスが再利用されていることがわかる。 <割込み処理>以上の動作例においては、OAB5の保持
内容が破壊されないことを前提にしていたがOAB5の保
持値は、割込み処理によって破壊される恐れがある。こ
のように割込み発生による保持値破壊に鑑みて、本実施
例では図7に示すように、OAB5の保持値の退避路を形
成している。
【0058】図7は、図1のOAB5周辺を拡大図示して
いる。図の破線で示すように、パス41と、パス42
と、パス43と、ABUS30と、パス44とは、OAB5の
保持値のメモリへの退避路を形成している。ここでドラ
イバ8を駆動すれば、この退避路に従って、OAB5の保
持値を図中の破線で示すメモリのスタック領域に退避で
きる。
【0059】このように設けられた退避路でデコーダ1
2及びMIR13がOAB5の保持値の退避を行う様子を図8
を参照しながら説明する。図8(a)は割込み処理前で
のスタックの内容を示す図であり、図8(b)は割込み
処理時でのスタックの内容を示す図である。 {NMI割込み発生時の処理}NMI割込みが割込み受付部2
1に入力された場合、デコーダ12は、MIR13にレジ
スタ群19内のスタックポインタの内容の更新を行わせ
る(SP−6→SP)。更新後、デコーダ12は、MIR13に
ドライバ8を駆動させて、OAB5の退避路を確保させ
る。そしてこの退避路でOAB5の保持値を転送し、当該
保持値をスタックポインタで指示されたスタックに蓄積
する(OAB5→(SP+4))。OAB5の保持値が退避されたの
で、続いてEXPC18の内容をスタックへ退避し(EXPC→
(SP+2))、続いてPSW20の内容をスタックを退避する
(PSW→(SP)) 以上の3段階の退避を終えると、スタックの格納状態
は、図8の(a)から(b)へと遷移する。
【0060】以上で割込みのための退避を終えたので、
NMI割込みの開始アドレスをIAB10及びPFC15に格納
する。次に復帰処理について説明する。復帰処理とは、
スタックに格納された保持値を元に戻す処理であり、以
下の手順からなる。スタックの1段目の格納値をPSW2
0に転送し((SP)→PSW)、続いてスタックの2段目の
格納値をプログラムカウンタ110に転送する((SP+2)
→EXPC)。続いて、ドライバ9を駆動させて、OAB5の
退避路を確保させて、ABUS30、算術論理演算部4を経
由してスタックの3段目の格納値をOAB5に転送する
((SP+4)→OAB5)。
【0061】{IRQn割込み発生時の処理}IRQn割込み発
生時の処理が、NMI割込み発生時の処理と異なるのは、I
RQn割込みではPSW20内のIMSKフィールドを受け付けた
割込みレベルに書き換える点、IRQnのレベルnに応じ
て飛び先アドレスを求める点である。尚、割込み処理
への移行及び復帰は、NMI割込みの場合と同様であるの
で、説明は省略する。
【0062】以上のように本実施例のプロセッサによれ
ば、PAアドレッシングでメモリアクセスを行うことで
絶対アドレス指定を行わず、またアドレスレジスタを利
用しなくてもメモリの読み書きを行うことができる。更
に、組み込み用途においてメモリマッピングされたI/
Oポートが多数ありこれらの読み書きを頻繁に行う場合
にも、これらの読み書きでアドレスレジスタが占有され
ないので、アドレスレジスタの利用効率が向上する。
【0063】(第2実施例)第2実施例では、オペラン
ドアドレスバッファを多段にしている。プロセッサにお
いて、この多段のオペランドアドレスバッファを有する
ブロックはOABアレイという。OABアレイの構成を図9に
示す。図9は、第2実施例に係るOABアレイの構成を示
す図である。図9に示すように、OABアレイは、OAB50
と、OAB51と、OAB52と、OAB53と、5入力セレク
タ60とから構成される。また本図において、OAB50
はOAB5と同一構成であり、その出力先にOAB50と同一
のバッファ(図中のOAB51〜OAB54)が4段接続され
て前回、1回前、2回前、3回前、4回前のメモリアク
セス先のアドレスを保持するようになっている。
【0064】また5入力セレクタ60は、後述するOABS
EL信号63の入力に基づいて、OAB50〜OAB54の保持
値を選択的に出力する。本図におけるOABSFT信号61
は、OABアレイの保持内容をシフトするための制御信号
である。この制御信号の出力によってOAB50〜OAB54
はシフトを行い、その保持内容はOAB51からOAB54へ
と順々に繰り下げられてゆく。このような繰り下げが行
われると、最後段(OAB54)の保持内容は廃棄され、O
AB51にはOAB50のそれまでの保持値が格納される。
尚このOABSFT信号61は、デコーダ12が読み出し命令
を解読した場合、また格納命令を解読した場合、MIR1
3によって出力される。従って、OABアレイ内の各OAB5
0〜OAB54のシフト動作は、デコーダ12によって読
み出し命令、格納命令が解読される度に行われる。
【0065】OABW信号62は、算術論理演算部4の出力
をOAB50に格納するための制御信号である。上記OABSF
T信号61の出力によってレジスタの保持値を繰り下げ
た後、このOABW信号62がOAB50に入力されること
で、OAB50は算術論理演算部4から出力されたメモリ
アクセス先のアドレスを保持することになる。OABSEL信
号63は、OAB50〜OAB54の何れかを指定する情報を
含み、5入力セレクタ60の出力をその指定通りに切り
換える。
【0066】以上のようにOAB50、OAB51〜OAB54
がOABアレイを形成しているため、第2実施例では、何
れのOAB5を指定するかがオペコードで指定できるよう
になっている。以降、第2実施例におけるPAアドレッ
シングについて、図10を参照しながら説明を行う。図
10(a)はPAアドレッシングでの命令フォーマット
を示す図であり、図10(b)はPAアドレッシングに
よる読み出し命令のニーモニックの図である。
【0067】第2実施例のPAアドレッシングのための
命令フォーマットは、図3(a)に示した命令の種別を
示すフィールドd1、機械語コード内のPAアドレッシ
ングを指定用のフィールドd2(1bit長)、データレジ
スタD0〜D3の指定用フィールドd3(2bit長)に加
えて、図10(a)に示すように”0”、”1”でOAB
50を指定するかあるいはOAB51〜OAB54を指定する
かを示すOAB50の指定用フィールドd4(1bit長)
と、OAB51〜OAB54の何れかを指定するOAB51〜OAB
54指定用フィールドd5(2bit長)とが割り当てられ
ている。
【0068】指定用フィールドd4は、”0”でOAB5
0を指定する旨を示し、”1”でOAB51〜OAB54を指
定する旨を示す。OAB51〜OAB54指定用フィールドd
5は、”00”でオペランドにOAB51を指定する旨を
示し、”01”でオペランドにOAB52を指定する旨を
示す。”10”でオペランドにOAB53を指定する旨を
示し、”11”でオペランドにOAB54を指定する旨を
示す。
【0069】またニーモニックレベルでは、図3(a)
に示した(PA)といったPAアドレッシングを行う旨
の指定の他に、図10(b)に示すように、OAB51の
保持値をメモリアクセス先に指定するなら(PA1)、
OAB52の保持値をメモリアクセス先に指定するなら
(PA2)、OAB53の保持値をメモリアクセス先に指
定するなら(PA3)、OAB54の保持値をメモリアク
セス先に指定するなら(PA4)というように、オペラ
ンドでOAB51からOAB54の何れかを指定できるように
なっている。
【0070】図11は、OABアレイ内のOAB50〜OAB5
4の指定を上記のPAアドレッシングを用いて記述した
プログラム例と、そのプログラムによってOABアレイが
如何に動作するかを示す説明図である。 {命令『LD (adr1),D0』}先ず『LD (adr1),D0』につ
いて説明を行う。IB1に『LD (adr1),D0』が格納されて
おり、IB1からIR2へと『LD (adr1),D0』のオペコード
が転送され、またこのオペコードはIR2からデコーダ1
2へと転送される。デコーダ12はこの『LD(adr1),D
0』のオペコードを解読する。『LD (adr1),D0』のオペ
コードは読み出し命令なので、デコーダ12はOABSFT信
号61を出力するようMIR13を制御する。OABSFT信号
61によってOABアレイの保持内容がシフトされ、この
シフトと共にMIR13は、『adr1』をOAB50に出力す
る。MIR13の制御によって命令『LD (adr1),D0』のソ
ース側オペランドの『adr1』が算術論理演算部4を通過
して、OAB50に格納される。『adr1』が格納される
と、MIR13はOABSEL信号63を出力し、これによって
アドレスadr1がアドレスバス33に出力される。続い
て、RAM36の読み出しを許可する。これによってア
ドレスadr1の保持値がRAM36からデータバス34を
介してLDB6に読み出される。LDB6に読み出された保持
値は、レジスタ群19内のデータレジスタDnに格納され
る。
【0071】{命令『ST D0,(adr2)』}次に『ST D0,
(adr2)』について説明を行う。IB1に『ST D0,(adr2)』
が格納されており、IB1からIR2へと『ST D0,(adr2)』
のオペコードが転送され、またこのオペコードはIR2か
らデコーダ12へと転送される。デコーダ12はこの
『STD0,(adr2)』のオペコードを解読する。『ST D0,(ad
r2)』のオペコードは格納命令なので、デコーダ12はO
ABSFT信号61を出力するようMIR13を制御する。
【0072】OABSFT信号61によってOABアレイの保持
内容がシフトされ、図に示すように、それまでOAB50
に保持されていたアドレスadr1がOAB51に格納され
る。また、算術論理演算部4を通過して命令『ST D0,(a
dr2)』のディストネーション側のアドレスである『adr
2』がOAB50に格納される。この命令のオペコードはP
Aアドレッシングを行う旨を含んでいないので、OABSEL
信号63によってOAB50の保持値である『adr2』がア
ドレスバス33に出力される。また『ST D0,(adr2)』は
格納命令であるので、レジスタ群19内のデータレジス
タDnの保持値をB2BUS32に出力し、その保持値をB2BUS
32からSTB7に転送する。STB7にレジスタの保持値が
格納されると、MIR13はRAM36に制御信号を発し
てRAM36の書き込みを許可する。これによってアド
レスadr2に、STB7の保持内容が書き込まれる。
【0073】{命令『LD (adr3),D0』}IB1に『LD
(adr3),D0』が格納されており、IB1からIR2へと『LD
(adr3),D0』のオペコードが転送され、またこのオペコ
ードがIR2からデコーダ12へと転送される。デコーダ
12はこの『LD (adr3),D0』のオペコードを解読する。
『LD(adr3),D0』は読み出し命令なので、デコーダ12
はOABSFT信号61を出力するようMIR13を制御する。
【0074】OABSFT信号61によってOABアレイの保持
内容がシフトされ、図に示すように、それまでOAB51
に保持されていたアドレスadr1がOAB52に格納され、
それまでOAB50に保持されていたアドレスadr2がOAB5
1に格納される。また、算術論理演算部4を通過して命
令『LD (adr3),D0』のソース側のアドレスである『adr
3』がOAB50に格納される。この命令のオペコードはP
Aアドレッシングを行う旨を含んでいないので、OABSEL
信号63によってOAB50の保持値である『adr3』がア
ドレスバス33に出力される。それと共にMIR13は制
御信号を発してRAM36の読み出しを許可する。これ
によってアドレスadr3の保持値がRAM36からデータ
バス34を介してLDB6に読み出される。LDB6に読み出
された保持値は、レジスタ群19内のデータレジスタDn
に格納される。
【0075】{命令『ADD D0,D1』}IB1に『ADD D
0,D1』が格納されており、IB1からIR2へと『ADD D0,
D1』のオペコードが転送され、またこのオペコードがIR
2からデコーダ12へと転送される。デコーダ12はこ
の『ADD D0,D1』のオペコードを解読する。『ADD D0,
D1』はadd演算なので、デコーダ12はOABSFT信号61
の出力を指示しない。
【0076】デコーダ12はレジスタD0に格納されたア
ドレスadr1の保持内容と、レジスタD1に格納されたアド
レスadr3の保持内容との演算を算術論理演算部4に行わ
せる。命令『ADD D0,D1』では、レジスタD1がディスト
ネーション側になっているから、デコーダ12はこの演
算結果を、レジスタD1に格納する。 {命令『ST D1,(PA2)』}IR2に命令『ST D1,(PA)』
のオペコードが格納され、当該オペコードがデコーダ1
2によって解読される。このオペコードは、PAアドレ
ッシングを行うといった旨を含んでおり、2ビット長の
情報でOABアレイの何かのうち、OAB52を指定してい
る。デコーダ12はこの指定通りに、出力先をOAB50
からOAB52に切り換える旨のOABSEL信号63を5入力
セレクタ60に対して発する。また『ST D1,(PA2)』は
格納命令であるので、レジスタ群19内のデータレジス
タD1の保持値をB2BUS32に出力し、その保持値をB2BUS
32からSTB7に転送する。STB7に保持値が格納される
と、MIR13はRAM36に制御信号を発してRAM3
6の書き込みを許可する。これによってOAB52(図中
では、網掛けを施している。)に保持されているアドレ
スadr2に、STB7の保持内容が書き込まれる(破線の矢
印参照)。
【0077】{割込み発生時のOABアレイの保持値の退
避}割込み発生時には、第1実施例と同様、OABアレイ
中のOAB50〜54の保持内容を全て退避する必要があ
る。この退避が如何に行われるかを図12を参照しなが
ら以下に説明する。図12(a)は、第2実施例におけ
る割込み前のスタックの格納内容を示す図であり図12
(b)は、第2実施例における割込み時のスタックの格
納内容を示す図である。
【0078】割込み受付部21がNMI割込みを受け付け
た場合にはデコーダ12は、スタックポインタの内容を
更新する(SP−14→SP)。続いてデコーダ12は、ドラ
イバ9を駆動して、OAB50の退避路を確保する。そし
て、OAB50を指定するOABSEL信号63を5入力セレク
タ60に発し、5入力セレクタ60にOAB50の保持値
を出力させる。OAB50の保持値はドライバ9、ABUS3
0を経由してSTB7に格納され、STB7からスタックに蓄
積される。
【0079】OAB50の出力後、OAB51を指定するOABS
FT信号61を5入力セレクタ60に発し、5入力セレク
タ60にOAB51の保持値を出力させる。OAB51の保持
値もOAB50と同様、ドライバ9−ABUS30−STB7から
なる退避路を経て、スタック領域に蓄積される。OAB5
0、OAB51と同様、OAB52、OAB53、OAB54を指定
する制御信号を順次5入力セレクタ60に向けて発し、
OAB52、OAB53、OAB54の保持値をスタックに蓄積
する。
【0080】以上のようにOABアレイの保持内容を退避
すると、EXPC18の内容の退避(EXPC→(SP+2))、PSW
20の内容の退避(PSW→(SP))、割込みの飛び先アド
レスへの移行を続けて行う。以上の一連の処理によって
スタックの格納内容は図12(a)に示した状態から図
12(b)に示す状態へと移行する。尚、IRQn割込み発
生時の処理については、IRQn割込みではPSW20内のIMS
Kフィールドを受け付けた割込みレベルに書き換える点
、IRQnのレベルnに応じて飛び先アドレスを求める点
が異なるのみなので説明は省略する。
【0081】また割込み処理からの復帰は処理について
は、割込み発生の場合と逆の手順を辿ればよいので説明
を省略する。以上のように本実施例によれば、過去のメ
モリアクセスの何れかを選択的に指定させることがで
き、メモリアクセスの拡張性を高めることができる。 (第2実施例の応用例)第2実施例では読み出し命令及
び格納命令の実行時にOABアレイをシフトしていた。但
し、同じ格納先に対して重複して格納を行うことは希な
ので、読み出し命令実行時のみOABアレイのシフト動作
を行うように構成した方がよい。そのための応用例を以
下に示す。図13はこの応用例を説明するための説明図
である。
【0082】上記の一例では、『ST D0,(adr2)』の実行
時でOABアレイのシフト動作を行ってアドレスadr1をOAB
51に格納していたが、『ST D0,(adr2)』の解読時には
OABSEL信号63を出力していない。即ち、『ST D0,(adr
2)』におけるOABアレイの保持内容は、OAB50にアドレ
スadr1が入ったままの状態になっている。『ST D0,(adr
2)』の実行時には、OAB50に『adr1』が入ったままの
状態であったため、『LD (adr3),D0』の実行時には、OA
BSFT信号61によってOAB5アレイの保持内容がシフト
され、図に示すように、それまでOAB50に保持されて
いたアドレスadr1がOAB51に格納され、OAB50にはア
ドレスadr3が格納された状態になっている。
【0083】の命令『ADD D0,D1』を実行した後、
の命令『ST D1,(PA1)』のオペコードが格納される。こ
のオペコードには、PAアドレッシングを行うといった
旨を含んでいるから、デコーダ12は、出力先をOAB5
0からOAB51に切り換える旨のOABSEL信号63を5入
力セレクタ60に対して発する。OAB51にはアドレスa
dr1が格納されているため、アドレスadr1がアドレスバ
ス33に出力される。MIR13は制御信号を発してRA
M36の読み出しを許可する。これによってOAB51で
指定されたアドレスの保持値がRAM36からデータバ
ス34を介してLDB6に読み出される。LDB6に読み出さ
れた保持値はレジスタ群19内のデータレジスタDnに格
納される。
【0084】本発明は、その要旨を逸脱しない範囲で変
更実施することができる。例えば、オペランドアドレス
バッファの保持値からの相対値が指定できるように命令
セットを設定してもよい。また、足し算、引き算、シフ
ト演算のオペランドに、オペランドアドレスバッファの
保持値を指定できるように命令セットを設定してもよ
い。
【0085】更に第2実施例では、OAB50〜OAB54を
直列に接続したが、これを並列に接続して構成してもよ
い。また、第2実施例における5段という段数は一例で
あり、2段、3段〜9段、10段というように、オペラ
ンドアドレスバッファの段数を増減させてよいことはい
うまでもない。
【0086】
【発明の効果】以上のように請求項1のプロセッサによ
れば、オペランドアドレスバッファに保持されているア
ドレスがメモリアクセス先に指定されている場合、保持
内容をメモリに出力するようオペランドアドレスバッフ
ァを制御するので、絶対アドレス指定を行わず、またア
ドレスレジスタを利用しなくてもメモリアクセスを行う
ことができる。更に組み込み用途においてメモリマッピ
ングされたI/Oポートが多数ありこれらの読み書きを
頻繁に行う場合にも、これらの読み書きでアドレスレジ
スタが占有されないので、アドレスレジスタの利用効率
が向上する。
【0087】また、同一I/Oポートを所定時間置きに
監視する場合等であって、同一I/Oポートの値を繰り
返して読み出す場合、あるいは、I/Oポートを介して
周辺機器を制御する場合等であって、同一I/Oポート
の値を所定時間置きに書き換える場合、上記の読み書き
の場合と同様、オペランドアドレスバッファの保持内容
をメモリアクセス先にすることでアドレスレジスタの利
用効率を向上させることができる。
【0088】このようにアドレスレジスタの利用効率を
向上させれば、アドレスレジスタに絶対アドレスを転送
する処理や、アドレスレジスタの保持内容を退避・復元
するといった処理が低頻度になり、またアドレスレジス
タを幅広い用途に多様に用いることができるので、ソフ
トウェア面でのコードサイズを大きく低減することがで
きる。
【0089】コードサイズの低減のみならず、請求項1
のプロセッサでは、オペランドアドレスバッファの保持
値をメモリアクセス先にする場合、その保持値をメモリ
に出力するようオペランドアドレスバッファを制御する
ので、アドレス計算を行う回数がより少なくなり、ま
た、アドレス計算を行うための論理演算部への転送処理
や計算されたアドレスをオペランドアドレスバッファに
転送する処理の回数もより少なくなるので、実行速度を
大きく向上させることができる。
【0090】また、請求項3記載のプロセッサによれ
ば、直前からn回前までのメモリアクセスにおけるn+
1個のメモリアクセス先のアドレスがn+1段のオペラ
ンドアドレスバッファに保持されており、これらのn+
1個のメモリアクセス先のアドレスを選択的に出力させ
ることができるので、直前からn回前までのメモリアク
セスにおけるメモリアクセス先を適宜選ぶことができ
る。また、このようにオペランドアドレスバッファに保
持されているアドレスを利用すれば、絶対アドレス指定
を行わず、またアドレスレジスタを利用しなくてもメモ
リアクセスを行うことができる。
【図面の簡単な説明】
【図1】本発明の第1の実施例におけるプロセッサの構
成を示すブロック図である。
【図2】OAB50、LDB6、STB7、IAB10、IFB11の
役割を説明するための説明図である。
【図3】(a)PAアドレッシングでの命令フォーマッ
トを示す図である。 (b)PAアドレッシングによる読み出し命令を説明す
るための説明図である。 (c)PAアドレッシングによる格納命令を説明するた
めの説明図である。
【図4】(a)PAアドレッシングを用いて記述された
プログラム例である。 (b)2回の絶対アドレス指定で記述されたプログラム
例である。 (c)アドレスレジスタを用いた読み出し命令、格納命
令で記述されたプログラムである。
【図5】図1に示した各構成の動作例を説明するための
タイミングチャートである。
【図6】図1に示した各構成の動作例を説明するための
タイミングチャートである。
【図7】図1のOAB50周辺の構成を拡大図示した図で
ある。
【図8】(a)割込み処理発生前でのスタックの内容を
示す図である。 (b)割込み処理時でのスタックの内容を示す図であ
る。
【図9】第2実施例に係るOABアレイの構成を示す図で
ある。
【図10】(a)PAアドレッシングでの命令フォーマ
ットを示す図である。 (b)PAアドレッシングによる読み出し命令のニーモ
ニックの図である。
【図11】OABアレイ内のOAB5の指定で記述したプログ
ラム例と、そのプログラムによってOABアレイが如何に
動作するかを示す説明図である。
【図12】(a)第2実施例における割込み前のスタッ
クの格納内容を示す図である。 (b)第2実施例における割込み時のスタックの格納内
容を示す図である。
【図13】第2実施例の応用例を説明するための説明図
である。
【図14】(a)2回の絶対アドレス指定で記述された
プログラム例である。 (b)アドレスレジスタを用いた読み出し命令、格納命
令で記述されたプログラムである。
【符号の説明】
1 命令バッファ 2 命令レジスタ 3 ドライバ 4 算術論理演算部 5 オペランドアドレスバッファ 6 ロードバッファ 7 ストアバッファ 8 ドライバ 9 ドライバ 10 命令アドレスバッファ 11 命令フェッチバッファ 12 解読器 13 マイクロ命令レジスタ 14 ステータスレジスタ 15 プリフェッチカウンタ 16 インクリメンタ 17 デコードプログラムカウンタ 18 実行プログラムカウンタ 19 レジスタ群 20 プロセッサステータスワード 21 割込み受付部 23 セレクタ 24 セレクタ 25 セレクタ 30 内部バス 31 内部バス 32 内部バス 35 ROM 36 RAM
フロントページの続き (72)発明者 松本 政彦 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 昭63−279323(JP,A) 特開 昭57−106960(JP,A) 特開 平6−202866(JP,A) 特開 平5−12008(JP,A) 特開 平4−81929(JP,A) 特開 平1−204146(JP,A) 特開 昭61−188627(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/355

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】メモリに接続され、メモリアクセス先のア
    ドレスを保持するオペランドアドレスバッファと、 命令を取り出す取り出し手段と、 取り出された命令中、メモリアクセスを内容とする命令
    を検出する命令検出手段と、 検出された命令がオペランドアドレスバッファに保持さ
    れているアドレスをアクセス先として指定しているか否
    かを判定する判定手段と、 指定されていると判定された場合、その命令がメモリへ
    のデータの書き込み命令及びメモリからのデータの読み
    出し命令のいずれであるかに拘わらず、保持内容をメモ
    リに出力するようオペランドアドレスバッファを制御す
    る第1の制御手段と、 指定されていないと判定された場合、その命令がメモリ
    へのデータの書き込み命令及びメモリからのデータの読
    み出し命令のいずれであるかに拘わらず、その命令のオ
    ペランドアドレスをオペランドアドレスバッファに格納
    して、そのアドレスをメモリに出力するようオペランド
    アドレスバッファを制御する第2の制御手段とを備える
    ことを特徴とするプロセッサ。
  2. 【請求項2】前記プロセッサは、 割込み処理の発生及び終了を検出する割込検出手段と、 割込み処理の発生が検出されると、オペランドアドレス
    バッファの保持値をスタックに退避する退避手段と、 割込み処理の終了が検出されると、スタックからオペラ
    ンドアドレスバッファに保持値を復帰する復帰手段とを
    備えることを特徴とする請求項1記載のプロセッサ。
  3. 【請求項3】メモリに接続され、直前からn回前までの
    メモリアクセスにおけるn+1個のメモリアクセス先の
    アドレスを保持するn+1段のオペランドアドレスバッ
    ファを有するバッファアレイと、 命令を取り出す取出手段と、 取り出された命令中、メモリアクセスを内容とする命令
    を検出する命令検出手段と、 検出された命令がバッファアレイ中の何れかのオペラン
    ドアドレスバッファを指定する情報を含んでいるか否か
    を判定する判定手段と、 情報を含んでいると判定された場合、その命令がメモリ
    へのデータの書き込み命令及びメモリからのデータの読
    み出し命令のいずれであるかに拘わらず、その情報で指
    定されたオペランドアドレスバッファの保持内容をメモ
    リに出力するよう、バッファアレイを制御する第1の制
    御手段と、 情報を含んでいないと判定された場合、その命令がメモ
    リへのデータの書き込み命令及びメモリからのデータの
    読み出し命令のいずれであるかに拘わらず、その命令の
    オペランドアドレスを何れかのオペランドアドレスバッ
    ファに格納して、そのオペランドアドレスをメモリに出
    力するよう、バッファアレイを制御する第2の制御手段
    と、 を備えることを特徴とするプロセッサ。
  4. 【請求項4】第2の制御手段は、 命令検出手段によってメモリアクセスを内容とする命令
    が検出される度に、バッファアレイ内の各オペランドア
    ドレスバッファの保持値を順次次段に出力するよう制御
    する第1の制御部と、 保持値の出力後、取り出し手段によって取り出された命
    令のオペランドアドレスを最前段のオペランドアドレス
    バッファに格納するよう制御する第2の制御部と、 格納されたアドレスをメモリに出力するようバッファア
    レイを制御する第3の制御部とを備えることを特徴とす
    る請求項3記載のプロセッサ。
  5. 【請求項5】前記プロセッサは、 割込み処理の発生及び終了を検出する割込検出手段と、 割込み処理の発生が検出されると、n+1段のオペラン
    ドアドレスバッファの保持値をスタックに退避する退避
    手段と、 割込み処理の終了が検出されると、スタックからn+1
    段のオペランドアドレスバッファに保持値を復帰する復
    帰手段とを備えることを特徴とする請求項3又は4記載
    のプロセッサ。
JP13407895A 1995-05-31 1995-05-31 プロセッサ Expired - Lifetime JP3199604B2 (ja)

Priority Applications (10)

Application Number Priority Date Filing Date Title
JP13407895A JP3199604B2 (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 프로그램의코드크기의축소화를지원하는마이크로프로세서
EP96303914A EP0745932B1 (en) 1995-05-31 1996-05-30 Microprocessor supporting variable length instruction execution
EP01111215A EP1143333B1 (en) 1995-05-31 1996-05-30 Microprocessor for supporting reduction of program codes in size
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
CN96107762A CN1114153C (zh) 1995-05-31 1996-05-31 支持程序编码长度减小的微处理器
CNB021574936A CN1286004C (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
JP13407895A JP3199604B2 (ja) 1995-05-31 1995-05-31 プロセッサ

Publications (2)

Publication Number Publication Date
JPH08328853A JPH08328853A (ja) 1996-12-13
JP3199604B2 true JP3199604B2 (ja) 2001-08-20

Family

ID=15119891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13407895A Expired - Lifetime JP3199604B2 (ja) 1995-05-31 1995-05-31 プロセッサ

Country Status (1)

Country Link
JP (1) JP3199604B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11023241B2 (en) * 2018-08-21 2021-06-01 Advanced Micro Devices, Inc. Systems and methods for selectively bypassing address-generation hardware in processor instruction pipelines

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100327776B1 (ko) 다중 명령세트를 사용하는 데이터 처리방법
KR0167005B1 (ko) 중앙처리장치
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
JP3837289B2 (ja) 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ
US6557093B2 (en) Stack oriented data processing device
JP2970821B2 (ja) データ処理装置
JP3605978B2 (ja) マイクロコンピュータ
US5966514A (en) Microprocessor for supporting reduction of program codes in size
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
JP2003044273A (ja) データ処理装置及びデータ処理方法
JPH0527971A (ja) 情報処理装置
US5077659A (en) Data processor employing the same microprograms for data having different bit lengths
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
JP2002229778A (ja) 高速ディスプレースメント付きpc相対分岐方式
JP3199604B2 (ja) プロセッサ
JPH08212075A (ja) 情報処理装置
US4853889A (en) Arrangement and method for speeding the operation of branch instructions
JP3504355B2 (ja) プロセッサ
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
US5649229A (en) Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage
EP0915416B1 (en) System for allowing a two word instruction to be executed in a single cycle and method therefor
JP2000112754A (ja) データ処理装置
JP3405106B2 (ja) プログラマブルコントローラ
EP0557077A1 (en) Method for switching between memory management modes
JPH05225122A (ja) Dmaにおけるバースト転送方式

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