JPH0520086A - 数値演算処理装置 - Google Patents
数値演算処理装置Info
- Publication number
- JPH0520086A JPH0520086A JP17080991A JP17080991A JPH0520086A JP H0520086 A JPH0520086 A JP H0520086A JP 17080991 A JP17080991 A JP 17080991A JP 17080991 A JP17080991 A JP 17080991A JP H0520086 A JPH0520086 A JP H0520086A
- Authority
- JP
- Japan
- Prior art keywords
- program
- memory
- value
- stored
- program 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 116
- 230000006837 decompression Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000000034 method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【構成】第1のプログラムメモリ10は圧縮されたプロ
グラム片12〜14を格納し、第2のプログラムメモリ
40は伸張されたプログラム片41〜43を格納する。
連想メモリ30は、アドレスデータ31,バリッドビッ
ト32,タグビット33を有し、プログラムカウンタ2
0の一部を入力する。マルチプレクサ50は連想メモリ
30の中のタグビット値に従って第2のプログラムメモ
リ40の中の複数ブロックからの出力値中の1つを選択
し、命令デコーダ60はマルチプレクサ50の出力値を
デコードする。連想メモリ30中のアドレスデータ中に
プトグラムカウンタ20と一致する値が存在しない場合
に例外を発生し、第2のプログラムメモリ40中の伸張
プログラムが第1のプログラムメモリ10の中に圧縮さ
れて格納されているプログラムを伸張して第2のプログ
ラムメモリ40に格納する。 【効果】ROM容量を増加させなくてもプログラム容量
を増大させることができ、例えば、32KのROM容量
に対して、32K〜64Kのプログラムサイズを得るこ
とが出来る。
グラム片12〜14を格納し、第2のプログラムメモリ
40は伸張されたプログラム片41〜43を格納する。
連想メモリ30は、アドレスデータ31,バリッドビッ
ト32,タグビット33を有し、プログラムカウンタ2
0の一部を入力する。マルチプレクサ50は連想メモリ
30の中のタグビット値に従って第2のプログラムメモ
リ40の中の複数ブロックからの出力値中の1つを選択
し、命令デコーダ60はマルチプレクサ50の出力値を
デコードする。連想メモリ30中のアドレスデータ中に
プトグラムカウンタ20と一致する値が存在しない場合
に例外を発生し、第2のプログラムメモリ40中の伸張
プログラムが第1のプログラムメモリ10の中に圧縮さ
れて格納されているプログラムを伸張して第2のプログ
ラムメモリ40に格納する。 【効果】ROM容量を増加させなくてもプログラム容量
を増大させることができ、例えば、32KのROM容量
に対して、32K〜64Kのプログラムサイズを得るこ
とが出来る。
Description
【0001】
【産業上の利用分野】本発明は、組込用途の数値演算処
理装置に関し、特に命令メモリが読出し専用メモリに格
納されたマイクロプロセッサやマイクロコントローラを
含む装置に関する。
理装置に関し、特に命令メモリが読出し専用メモリに格
納されたマイクロプロセッサやマイクロコントローラを
含む装置に関する。
【0002】
【従来の技術】LSIの高集積化は年々進歩し、近年に
おいては、100万トランジスタレベルの集積度を持つ
LSIも製品化されている。このLSI上に集積化され
る回路には、レジスタ、整数ALU、整数乗算器、整数
除算器、キャッシュメモリ、仮想記憶管理機構、浮動小
数点ALU、浮動小数点乗算器、豊富なメモリアドレッ
シングモードなど、数年前には複数のLSIで実現して
いた機能がすべて集積されている。
おいては、100万トランジスタレベルの集積度を持つ
LSIも製品化されている。このLSI上に集積化され
る回路には、レジスタ、整数ALU、整数乗算器、整数
除算器、キャッシュメモリ、仮想記憶管理機構、浮動小
数点ALU、浮動小数点乗算器、豊富なメモリアドレッ
シングモードなど、数年前には複数のLSIで実現して
いた機能がすべて集積されている。
【0003】従来、これらの各回路は、目的に応じて選
択的にLSI上に集積化されていた。例えば、レジス
タ、浮動小数点ALU、高速不同小数点乗算器を選択し
て集積化したものがDSP(Digital Sign
al Processor)である。これに対してMP
U(マイクロプロセッサ)は、高速浮動小数点乗算器の
代りに仮想記憶管理機構や豊富なメモリアドレッシング
モードを選択したり(この場合、各種の超越関数などを
実行する浮動小数点演算器を別のLSIに搭載する)、
あるいは仮想記憶管理機構の代りに高速ではないが各種
の超越関数なども実行可能な浮動小数点演算器を選択す
る(この場合、仮想記憶管理機構などは別のLSIに搭
載する)などしている。
択的にLSI上に集積化されていた。例えば、レジス
タ、浮動小数点ALU、高速不同小数点乗算器を選択し
て集積化したものがDSP(Digital Sign
al Processor)である。これに対してMP
U(マイクロプロセッサ)は、高速浮動小数点乗算器の
代りに仮想記憶管理機構や豊富なメモリアドレッシング
モードを選択したり(この場合、各種の超越関数などを
実行する浮動小数点演算器を別のLSIに搭載する)、
あるいは仮想記憶管理機構の代りに高速ではないが各種
の超越関数なども実行可能な浮動小数点演算器を選択す
る(この場合、仮想記憶管理機構などは別のLSIに搭
載する)などしている。
【0004】また、高速浮動小数点乗算器や仮想記憶管
理機構ではなくLSI中に搭載するメモリ容量を増加さ
せる選択もあり、この増大したメモリ容量はプログラム
容量を増加させるとか、あるいはプログラムの信頼性を
上げるために使用されている。
理機構ではなくLSI中に搭載するメモリ容量を増加さ
せる選択もあり、この増大したメモリ容量はプログラム
容量を増加させるとか、あるいはプログラムの信頼性を
上げるために使用されている。
【0005】後者の代表例は、自動車内部に搭載される
マイクロコントローラである。車載用マイクロコントロ
ーラのメモリは、激しい温度変化や振動に勘えなければ
ならないため、メモリに冗長度を設けて誤り検出ができ
るようにし始めている。また、激しい温度変化や振動な
どがない環境で使用されている場合では、限られたメモ
リ容量中をすべてプログラム領域として割当てることが
できるため、今までは付加できなかった機能もプログラ
ムできるようになった。
マイクロコントローラである。車載用マイクロコントロ
ーラのメモリは、激しい温度変化や振動に勘えなければ
ならないため、メモリに冗長度を設けて誤り検出ができ
るようにし始めている。また、激しい温度変化や振動な
どがない環境で使用されている場合では、限られたメモ
リ容量中をすべてプログラム領域として割当てることが
できるため、今までは付加できなかった機能もプログラ
ムできるようになった。
【0006】図5は従来例の数値演算処理装置のブロッ
ク図である。この装置は、プログラムカウンタ20によ
り、プログラムメモリ10bが駆動され、このプログラ
ムメモリ10bの出力が命令デコーダ60によりデコー
ドされて、処理が行われる。
ク図である。この装置は、プログラムカウンタ20によ
り、プログラムメモリ10bが駆動され、このプログラ
ムメモリ10bの出力が命令デコーダ60によりデコー
ドされて、処理が行われる。
【0007】
【発明が解決しようとする課題】上述した従来の数値演
算処理装置は、演算処理が多くなり、そのメモリ容量を
越えてしまった場合、ある機能を削減したり、計算精度
を落としたりしなけれなならなかった。他の方法とし
て、同じ様な処理部分をサブルーティン化することでプ
ログラムサイズを削減する方法もある。しかし、もとも
とサブルーティン化することを意識して作られていない
処理部分をサブルーティン化する場合、バグが入り込む
場合が多いためよほどの事がなければ利用されない。
算処理装置は、演算処理が多くなり、そのメモリ容量を
越えてしまった場合、ある機能を削減したり、計算精度
を落としたりしなけれなならなかった。他の方法とし
て、同じ様な処理部分をサブルーティン化することでプ
ログラムサイズを削減する方法もある。しかし、もとも
とサブルーティン化することを意識して作られていない
処理部分をサブルーティン化する場合、バグが入り込む
場合が多いためよほどの事がなければ利用されない。
【0008】従来の構成では、メモリ容量を増加させる
ことによってしか、プログラム容量を増加させる事が出
来ないという問題点があった。
ことによってしか、プログラム容量を増加させる事が出
来ないという問題点があった。
【0009】本発明の目的は、このような問題を解決
し、圧縮してプログラムメモリに格納されたプログラム
を、部分的に伸張しながら実行するための回路を付加す
ることにより、メモリを増加させなくとも、プログラム
容量を増大できる数値演算処理装置を提供することにあ
る。
し、圧縮してプログラムメモリに格納されたプログラム
を、部分的に伸張しながら実行するための回路を付加す
ることにより、メモリを増加させなくとも、プログラム
容量を増大できる数値演算処理装置を提供することにあ
る。
【0010】
【課題を解決するための手段】本発明の数値演算処理装
置の構成は、圧縮されたプログラムを格納する第1のプ
ログラムメモリと、プログラムカウンタと、伸張プログ
ラムが格納された複数ブロックから構成されかつ前記プ
ログラムカウンタ値の一部を入力とする第2のプログラ
ムメモリと、前記プログラムカウンタの一部と比較する
アドレスデータとこのアドレスデータが有効かどうかを
示すビッドビットと前記第2のプログラムメモリのどの
ブロックを選択するかを示すタグビットとを持ち前記プ
ログラムカウンタ値の一部を入力とする連想メモリと、
この連想メモリ中の前記タグビット値に従って前記第2
のプログラムメモリ中の複数ブロックからの出力値中の
1つを選択するマルチプレクサと、このマルチプレクサ
の出力値を入力とする命令デコーダと、前記第1および
第2のプログラムメモリの両方と接続されるバスとを備
え全ての命令が1語長である数値演算処理装置におい
て、前記連想メモリ中の前記アドレスデータ中に前記プ
ログラムカウンタと一致する値が存在しない場合に例外
を発生し、前記第2のプログラム中の前記伸張プログラ
ムが前記第1のプログラムメモリ中に圧縮されて格納さ
れているプログラムを伸張して前記第2のプログラムメ
モリに格納することを特徴とする。
置の構成は、圧縮されたプログラムを格納する第1のプ
ログラムメモリと、プログラムカウンタと、伸張プログ
ラムが格納された複数ブロックから構成されかつ前記プ
ログラムカウンタ値の一部を入力とする第2のプログラ
ムメモリと、前記プログラムカウンタの一部と比較する
アドレスデータとこのアドレスデータが有効かどうかを
示すビッドビットと前記第2のプログラムメモリのどの
ブロックを選択するかを示すタグビットとを持ち前記プ
ログラムカウンタ値の一部を入力とする連想メモリと、
この連想メモリ中の前記タグビット値に従って前記第2
のプログラムメモリ中の複数ブロックからの出力値中の
1つを選択するマルチプレクサと、このマルチプレクサ
の出力値を入力とする命令デコーダと、前記第1および
第2のプログラムメモリの両方と接続されるバスとを備
え全ての命令が1語長である数値演算処理装置におい
て、前記連想メモリ中の前記アドレスデータ中に前記プ
ログラムカウンタと一致する値が存在しない場合に例外
を発生し、前記第2のプログラム中の前記伸張プログラ
ムが前記第1のプログラムメモリ中に圧縮されて格納さ
れているプログラムを伸張して前記第2のプログラムメ
モリに格納することを特徴とする。
【0011】
【実施例】図1は本発明の一実施例のマイクロコントロ
ーラを含むブロック図、図2は図1のマイクロコントロ
ーラのメモリ空間図である。この場合、プログラムとデ
ータをそれぞれ独立の空間にマッピングするハーバード
アーキテクチャを持つマイクロコントローラを示す。本
実施例では、第1のプログラムメモリと第2のプログラ
ムメモリ、データメモリの別のメモリ空間にマッピング
されているとする。
ーラを含むブロック図、図2は図1のマイクロコントロ
ーラのメモリ空間図である。この場合、プログラムとデ
ータをそれぞれ独立の空間にマッピングするハーバード
アーキテクチャを持つマイクロコントローラを示す。本
実施例では、第1のプログラムメモリと第2のプログラ
ムメモリ、データメモリの別のメモリ空間にマッピング
されているとする。
【0012】図において、圧縮されたプログラム片を格
納する第1のプログラムメモリ10は、圧縮前のプログ
ラムアドレスの上位7ビットから、圧縮後のプログラム
アドレスを得るための変換テーブル11と、圧縮された
プログラム片12〜14とから構成される。この第1の
プログラムメモリ10はアドレスポインタ16により指
定される。連想メモリ30は、16ビットのプログラム
カウンタ20の上位7ビットと比較するための7ビット
のアドレスデータ31,31a〜31cと、アドレスデ
ータ31が有効の時1、無効の時0を保持する1ビット
のバリッドビット32,32a〜32cと、対応するア
ドレスデータ31がプログラムカウンタ20の上位7ビ
ットと一致した時マルチプレクサ50の入力値となる2
ビットのタグビット33,33a〜33cから構成され
る。
納する第1のプログラムメモリ10は、圧縮前のプログ
ラムアドレスの上位7ビットから、圧縮後のプログラム
アドレスを得るための変換テーブル11と、圧縮された
プログラム片12〜14とから構成される。この第1の
プログラムメモリ10はアドレスポインタ16により指
定される。連想メモリ30は、16ビットのプログラム
カウンタ20の上位7ビットと比較するための7ビット
のアドレスデータ31,31a〜31cと、アドレスデ
ータ31が有効の時1、無効の時0を保持する1ビット
のバリッドビット32,32a〜32cと、対応するア
ドレスデータ31がプログラムカウンタ20の上位7ビ
ットと一致した時マルチプレクサ50の入力値となる2
ビットのタグビット33,33a〜33cから構成され
る。
【0013】伸張されたプログラム片を格納する第2の
プログラムメモリ40は、伸張されたプログラム片が格
納されたブロック41〜43と、圧縮されたプログラム
片を伸張するためのプログラム(常駐)でアドレスFE
00hにマッピングされているブロック44から構成さ
れ、第2のプログラムメモリ40はアドレスポインタ4
5で指定される。マルチプレクサ50は、タグビット3
3の値に従ってブロック41〜44の内から1つを選択
して命令デコーダ60に出力する。また、スタックが形
成された読書き可能なデータメモリ80は、バス70に
接続され、スタックポインタ81により指定される。
プログラムメモリ40は、伸張されたプログラム片が格
納されたブロック41〜43と、圧縮されたプログラム
片を伸張するためのプログラム(常駐)でアドレスFE
00hにマッピングされているブロック44から構成さ
れ、第2のプログラムメモリ40はアドレスポインタ4
5で指定される。マルチプレクサ50は、タグビット3
3の値に従ってブロック41〜44の内から1つを選択
して命令デコーダ60に出力する。また、スタックが形
成された読書き可能なデータメモリ80は、バス70に
接続され、スタックポインタ81により指定される。
【0014】図2のハーバードアーキテクチャを採用し
ているマイクロコントローラのメモリマップにおいて、
各メモリは、独立にマッピングされている。第1のプロ
グラムメモリ10は、圧縮されたプログラムが格納され
ている。圧縮されたプログラムのプログラム片が伸張さ
れて、第2のプログラムメモリ40に格納されている。
ているマイクロコントローラのメモリマップにおいて、
各メモリは、独立にマッピングされている。第1のプロ
グラムメモリ10は、圧縮されたプログラムが格納され
ている。圧縮されたプログラムのプログラム片が伸張さ
れて、第2のプログラムメモリ40に格納されている。
【0015】図1のプログラムカウンタ20の値を10
00H(Hは16進数、Bは2進数を表す)とし、連想
メモリ30において、アドレスデータ31の値は000
1000B,バリッドビット32は1,タグビット33
は00B、アドレスデータ31a,31bの値は不定、
バリッドビット32a,32bは0,タグビット33a
は01B、タグビット33bは10B、アドレスデータ
31cの値は1111111B,バリッドビット32c
は1,タグビット33cは11Bとする。
00H(Hは16進数、Bは2進数を表す)とし、連想
メモリ30において、アドレスデータ31の値は000
1000B,バリッドビット32は1,タグビット33
は00B、アドレスデータ31a,31bの値は不定、
バリッドビット32a,32bは0,タグビット33a
は01B、タグビット33bは10B、アドレスデータ
31cの値は1111111B,バリッドビット32c
は1,タグビット33cは11Bとする。
【0016】まず、実行すべき命令が第2のプログラメ
モリ40に格納されている時、つまりヒットする時の動
作について説明を行なう。連想メモリ30が上述の値を
持つ時、プログラムカウンタ20がヒットする範囲は1
000H〜11FFHである。このプログラムカウンタ
20の上位7ビットが連想メモリ30に入力される。そ
の後、アドレスデータ31,31a〜31cと比較さ
れ、対応するバリッドビットが1に等しいアドレスデー
タがプログラムカウンタ20と一致した時、対応するタ
グビットの値がマルチプレクサ50に出力される。
モリ40に格納されている時、つまりヒットする時の動
作について説明を行なう。連想メモリ30が上述の値を
持つ時、プログラムカウンタ20がヒットする範囲は1
000H〜11FFHである。このプログラムカウンタ
20の上位7ビットが連想メモリ30に入力される。そ
の後、アドレスデータ31,31a〜31cと比較さ
れ、対応するバリッドビットが1に等しいアドレスデー
タがプログラムカウンタ20と一致した時、対応するタ
グビットの値がマルチプレクサ50に出力される。
【0017】本実施例においては、プログラムカウンタ
20の値が1000Hであるから上位7ビットとアドレ
スデータ31の内容0001000Bと一致し、かつバ
リッドビット32が1であるから、タグビット33の値
00Bがマルチプレクサ50に入力される。一方、プロ
グラムカウンタ20の下位9ビットは、第2のプログラ
ムメモリ40の中のそれぞれのブロックに入力され、各
ブロック41〜44での該当アドレスの内容をマルチプ
レクサ50に出力する。マルチプレクサ50では、タグ
ビット33の値00Bに従ってブロック41からの出力
値を命令デコーダ60に出力する。
20の値が1000Hであるから上位7ビットとアドレ
スデータ31の内容0001000Bと一致し、かつバ
リッドビット32が1であるから、タグビット33の値
00Bがマルチプレクサ50に入力される。一方、プロ
グラムカウンタ20の下位9ビットは、第2のプログラ
ムメモリ40の中のそれぞれのブロックに入力され、各
ブロック41〜44での該当アドレスの内容をマルチプ
レクサ50に出力する。マルチプレクサ50では、タグ
ビット33の値00Bに従ってブロック41からの出力
値を命令デコーダ60に出力する。
【0018】次に、実行すべき命令が第2のプログラム
メモリ400に格納されていない時、つまりミスヒット
時の説明を行なう。分岐命令の実行などでプログラムカ
ウンタ20が1800Hになった時、連想メモリ30に
おいて、値として1を持つバリッドビットに対応するア
ドレスデータはどれもプログラムカウンタ20の上位7
ビットと一致しない。この時、マイクロコントローラは
例外を発生する。
メモリ400に格納されていない時、つまりミスヒット
時の説明を行なう。分岐命令の実行などでプログラムカ
ウンタ20が1800Hになった時、連想メモリ30に
おいて、値として1を持つバリッドビットに対応するア
ドレスデータはどれもプログラムカウンタ20の上位7
ビットと一致しない。この時、マイクロコントローラは
例外を発生する。
【0019】例外が発生すると、例外を発生させたプロ
グラムカウンタ値をスタックポインタ81の保持するア
ドレス値に従ってデータメモリ80上に設けてあるスタ
ックに積み、割込みアドレスとしてFE00Hをプログ
ラムカウンタ20にセットする。プログラムカウンタ2
0がFE00Hとなるとき、連想メモリ30のアドレス
データ31cに格納された1111111Bと一致し、
バリッドビット32cが1であるため、マルチプレクサ
50にはタグビット33cの値11Bが入力される。ブ
ロック44には伸張用プログラムが常駐しているため、
伸張用プログラムの実行が始る。
グラムカウンタ値をスタックポインタ81の保持するア
ドレス値に従ってデータメモリ80上に設けてあるスタ
ックに積み、割込みアドレスとしてFE00Hをプログ
ラムカウンタ20にセットする。プログラムカウンタ2
0がFE00Hとなるとき、連想メモリ30のアドレス
データ31cに格納された1111111Bと一致し、
バリッドビット32cが1であるため、マルチプレクサ
50にはタグビット33cの値11Bが入力される。ブ
ロック44には伸張用プログラムが常駐しているため、
伸張用プログラムの実行が始る。
【0020】伸張プログラムはデータメモリ80上に設
けられたスタックから、例外発生原因となったプログラ
ムカウンタ値をバス70経由で取り出す。取り出したプ
ログラムカウンタ値の上位7ビットを1ビット左シフト
して変換テーブル11を引き、第1のプログラムメモリ
10に圧縮されて格納されたプログラム片12のスター
トアドレスを得る。こうして得られた、第1のプログラ
ムメモリ中のスタートアドレスから、圧縮されて格納さ
れているプログラム片12を伸張し、バス70を経由し
て第2のプログラムメモリ40のブロック43に格納す
る。格納後の連想メモリ30の内容は、アドレスデータ
31の値は0001000B,バリッドビット32は
1,タグビット33は00B、31aの値は不定、32
aは0,33aは01B、31bの値は0001100
B,32bは1,33bは10B、31cの値は111
1111B,32cは1,33cは11Bとなる。
けられたスタックから、例外発生原因となったプログラ
ムカウンタ値をバス70経由で取り出す。取り出したプ
ログラムカウンタ値の上位7ビットを1ビット左シフト
して変換テーブル11を引き、第1のプログラムメモリ
10に圧縮されて格納されたプログラム片12のスター
トアドレスを得る。こうして得られた、第1のプログラ
ムメモリ中のスタートアドレスから、圧縮されて格納さ
れているプログラム片12を伸張し、バス70を経由し
て第2のプログラムメモリ40のブロック43に格納す
る。格納後の連想メモリ30の内容は、アドレスデータ
31の値は0001000B,バリッドビット32は
1,タグビット33は00B、31aの値は不定、32
aは0,33aは01B、31bの値は0001100
B,32bは1,33bは10B、31cの値は111
1111B,32cは1,33cは11Bとなる。
【0021】この時、どのブロックを選択するかについ
てはLRU(Last Recently Use
d),FIFO(First In First Ou
t),Randomなどのアルゴリズムがあるが、本実
施例ではRandomアルゴリズムを用いている。格納
終了後、例外発生原因となったプログラムアドレスから
プログラムを再実行する。
てはLRU(Last Recently Use
d),FIFO(First In First Ou
t),Randomなどのアルゴリズムがあるが、本実
施例ではRandomアルゴリズムを用いている。格納
終了後、例外発生原因となったプログラムアドレスから
プログラムを再実行する。
【0022】図3,図4は本発明の第2の実施例のブロ
ック図およびそのメモリ空間の配置図である。本実施例
はハーバードアーキテクチャを採用していない、単一メ
モリ空間を持つマイクロプロセッサに適用した例であ
る。図1との相違点は、第1のプログラムメモリ10の
アドレスポインタ16と、第2のプログラムメモリ40
のアドレスポインタ45と、データメモリのアドレスポ
インタ81との代りに、第1と第2のプログラムメモリ
10,40およびデータメモリ90を兼用するアドレス
ポインタ16aとゲート17,46を追加した点にあ
る。ゲート17は、バス70と第1のプログラムメモリ
10との間に接続され、ゲート46は、バス70と第2
のプログラムメモリ40との間に接続されている。
ック図およびそのメモリ空間の配置図である。本実施例
はハーバードアーキテクチャを採用していない、単一メ
モリ空間を持つマイクロプロセッサに適用した例であ
る。図1との相違点は、第1のプログラムメモリ10の
アドレスポインタ16と、第2のプログラムメモリ40
のアドレスポインタ45と、データメモリのアドレスポ
インタ81との代りに、第1と第2のプログラムメモリ
10,40およびデータメモリ90を兼用するアドレス
ポインタ16aとゲート17,46を追加した点にあ
る。ゲート17は、バス70と第1のプログラムメモリ
10との間に接続され、ゲート46は、バス70と第2
のプログラムメモリ40との間に接続されている。
【0023】図4において、単一のメモリ空間を持つマ
イクロプロセッサのメモリマップである。それぞれのメ
モリは、単一空間のそれぞれ異なるアドレスにマッピン
グされている。図4において、第1のプログラムメモリ
10が配置されたアドレスには圧縮されたプログラムが
格納されている。圧縮されたプログラムのプログラム片
が伸張されて、第2のプログラムメモリ40が配置され
たアドレスに格納され、データメモリ80が配置された
アドレスにはスタックが形成されている。
イクロプロセッサのメモリマップである。それぞれのメ
モリは、単一空間のそれぞれ異なるアドレスにマッピン
グされている。図4において、第1のプログラムメモリ
10が配置されたアドレスには圧縮されたプログラムが
格納されている。圧縮されたプログラムのプログラム片
が伸張されて、第2のプログラムメモリ40が配置され
たアドレスに格納され、データメモリ80が配置された
アドレスにはスタックが形成されている。
【0024】本実施例の第1の実施例との違いは、複数
の独立した空間を持っていない点にある。本実施例の場
合、プログラム空間が単一であるために同空間をアクセ
スするためのポインタが1つである。そのため、アドレ
ス値の上位側をデコードしてプログラムメモリが第1の
プログラムメモリ10をアクセスすべきか、第2のプロ
グラムメモリ40をアクセスすべきか、データメモリ9
0をアクセスすべきかを判定するための回路が追加され
ている。
の独立した空間を持っていない点にある。本実施例の場
合、プログラム空間が単一であるために同空間をアクセ
スするためのポインタが1つである。そのため、アドレ
ス値の上位側をデコードしてプログラムメモリが第1の
プログラムメモリ10をアクセスすべきか、第2のプロ
グラムメモリ40をアクセスすべきか、データメモリ9
0をアクセスすべきかを判定するための回路が追加され
ている。
【0025】第1の実施例と異なるのは例外が発生した
時点からである。例外を発生させたプログラムカウンタ
値をデータメモリ90に退避するとき、このデータメモ
リ90上に設けられたスタックのアドレスをアドレスポ
インタ16aにセットし、アクセスする。アドレスポイ
ンタ16aの上位2ビットをデコードした結果、ゲート
17が開きプログラムカウンタ値がバス70経由でデー
タメモリ90上に設けられたスタックに積まれる。この
後、第1の実施例と同様にプログラムカウンタ20の値
がFE00Hとなり、プログラムメモリ40をアクセス
し、伸張用プログラムの実行が始る。
時点からである。例外を発生させたプログラムカウンタ
値をデータメモリ90に退避するとき、このデータメモ
リ90上に設けられたスタックのアドレスをアドレスポ
インタ16aにセットし、アクセスする。アドレスポイ
ンタ16aの上位2ビットをデコードした結果、ゲート
17が開きプログラムカウンタ値がバス70経由でデー
タメモリ90上に設けられたスタックに積まれる。この
後、第1の実施例と同様にプログラムカウンタ20の値
がFE00Hとなり、プログラムメモリ40をアクセス
し、伸張用プログラムの実行が始る。
【0026】伸張用プログラムは、プログラムカウンタ
値がデータメモリ90上のスタックに積まれた時と同様
の方法で、スタックから例外を起こしたプログラムカウ
ンタ値を取出し、取出したプログラムカウンタ値の上位
7ビットを1ビット左シフトして変換テーブル11をア
クセスする。
値がデータメモリ90上のスタックに積まれた時と同様
の方法で、スタックから例外を起こしたプログラムカウ
ンタ値を取出し、取出したプログラムカウンタ値の上位
7ビットを1ビット左シフトして変換テーブル11をア
クセスする。
【0027】この変換テーブル11をアクセスする時
も、アドレスポインタ16aの上位2ビットがデコード
され、ゲート17が開かれ、第1のプログラムメモリ1
0中に圧縮されているプログラム片13のスタートアド
レスを得る。この後、第1の実施例と同様に圧縮されて
格納されているプログラム片を伸張し、バス70を経由
して第2のプログラムメモリ40のブロック43に格納
する。この時第1の実施例と異なるのは、第1のプログ
ラムメモリ10をアクセスする時に、アドレスポインタ
16aの上位2ビットがデコードされ、ゲート17が開
かれるのは勿論、第2のプログラムメモリ40をアクセ
スする時にはアドレスポインタ16aの上位2ビットが
デコードされ、ゲート47が開かれる点にある。
も、アドレスポインタ16aの上位2ビットがデコード
され、ゲート17が開かれ、第1のプログラムメモリ1
0中に圧縮されているプログラム片13のスタートアド
レスを得る。この後、第1の実施例と同様に圧縮されて
格納されているプログラム片を伸張し、バス70を経由
して第2のプログラムメモリ40のブロック43に格納
する。この時第1の実施例と異なるのは、第1のプログ
ラムメモリ10をアクセスする時に、アドレスポインタ
16aの上位2ビットがデコードされ、ゲート17が開
かれるのは勿論、第2のプログラムメモリ40をアクセ
スする時にはアドレスポインタ16aの上位2ビットが
デコードされ、ゲート47が開かれる点にある。
【0028】
【発明の効果】以上説明した様に本発明は、単一メモリ
空間アーキテクチャを採用する数値演算処理装置であっ
ても、ハーバードアーキテクチャを採用する数値演算処
理装置であっても適用することができ、ROM容量を増
加させなくてもプログラム容量を増大させることができ
るという効果を有する。例えば、32KのROM容量に
対して、32K〜64Kのプログラムサイズを得ること
が出来る(プログラムの圧縮率に依存して64K以上に
も変化する)という効果がある。
空間アーキテクチャを採用する数値演算処理装置であっ
ても、ハーバードアーキテクチャを採用する数値演算処
理装置であっても適用することができ、ROM容量を増
加させなくてもプログラム容量を増大させることができ
るという効果を有する。例えば、32KのROM容量に
対して、32K〜64Kのプログラムサイズを得ること
が出来る(プログラムの圧縮率に依存して64K以上に
も変化する)という効果がある。
【図1】本発明の一実施例のブロック図。
【図2】図1のマイクロプロセッサのメモリ空間を説明
するメモリ配置図。
するメモリ配置図。
【図3】本発明の第2の実施例のブロック図。
【図4】図3のマイクロプロセッサのメモリ空間を説明
するメモリ配置図。
するメモリ配置図。
【図5】従来例の数値演算処理装置のブロック図。
10,10a,40 第1,第2のプログラムメモリ 11 変換テーブル 12〜14,41〜44 プログラム片の格納された
ブロック 16,16a,45 アドレスポインタ 17,46 ゲート 20 プログラムカウンタ 30 連想メモリ 31,31a〜31e アドレスデータ 32,32a〜32c バリッドビット 33,33a〜33c タグビット 50 マルチプレクサ 60 命令デコーダ 80 スタック 81 スタックポインタ 90 データメモリ
ブロック 16,16a,45 アドレスポインタ 17,46 ゲート 20 プログラムカウンタ 30 連想メモリ 31,31a〜31e アドレスデータ 32,32a〜32c バリッドビット 33,33a〜33c タグビット 50 マルチプレクサ 60 命令デコーダ 80 スタック 81 スタックポインタ 90 データメモリ
Claims (1)
- 【特許請求の範囲】 【請求項1】 圧縮されたプログラムを格納する第1の
プログラムメモリと、プログラムカウンタと、伸張プロ
グラムが格納された複数ブロックから構成されかつ前記
プログラムカウンタ値の一部を入力とする第2のプログ
ラムメモリと、前記プログラムカウンタの一部と比較す
るアドレスデータとこのアドレスデータが有効かどうか
を示すビッドビットと前記第2のプログラムメモリのど
のブロックを選択するかを示すタグビットとを持ち前記
プログラムカウンタ値の一部を入力とする連想メモリ
と、この連想メモリ中の前記タグビット値に従って前記
第2のプログラムメモリ中の複数ブロックからの出力値
中の1つを選択するマルチプレクサと、このマルチプレ
クサの出力値を入力とする命令デコーダと、前記第1お
よび第2のプログラムメモリの両方と接続されるバスと
を備え全ての命令が1語長である数値演算処理装置にお
いて、前記連想メモリ中の前記アドレスデータ中に前記
プログラムカウンタと一致する値が存在しない場合に例
外を発生し、前記第2のプログラム中の前記伸張プログ
ラムが前記第1のプログラムメモリ中に圧縮されて格納
されているプログラムを伸張して前記第2のプログラム
メモリに格納することを特徴とする数値演算処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17080991A JPH0520086A (ja) | 1991-07-11 | 1991-07-11 | 数値演算処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17080991A JPH0520086A (ja) | 1991-07-11 | 1991-07-11 | 数値演算処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0520086A true JPH0520086A (ja) | 1993-01-29 |
Family
ID=15911744
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP17080991A Pending JPH0520086A (ja) | 1991-07-11 | 1991-07-11 | 数値演算処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0520086A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6801996B2 (en) | 2000-02-08 | 2004-10-05 | Kabushiki Kaisha Toshiba | Instruction code conversion unit and information processing system and instruction code generation method |
| JPWO2005076481A1 (ja) * | 2004-02-10 | 2008-01-10 | 松下電器産業株式会社 | 符号化復号化装置 |
-
1991
- 1991-07-11 JP JP17080991A patent/JPH0520086A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6801996B2 (en) | 2000-02-08 | 2004-10-05 | Kabushiki Kaisha Toshiba | Instruction code conversion unit and information processing system and instruction code generation method |
| JPWO2005076481A1 (ja) * | 2004-02-10 | 2008-01-10 | 松下電器産業株式会社 | 符号化復号化装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0803091B1 (en) | Computer system | |
| US5991902A (en) | Memory apparatus and data processor using the same | |
| US5018061A (en) | Microprocessor with on-chip cache memory with lower power consumption | |
| US6986029B2 (en) | Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein | |
| US4937738A (en) | Data processing system which selectively bypasses a cache memory in fetching information based upon bit information of an instruction | |
| JPH11161547A (ja) | データ処理装置用記憶装置、および記憶場所にアクセスする方法 | |
| EP2946297B1 (en) | Overlap checking for a translation lookaside buffer (tlb) | |
| JP2773471B2 (ja) | 情報処理装置 | |
| EP0636986B1 (en) | Address decoder with small circuit scale and address area expansion capability | |
| US6158046A (en) | Computer device and method for processing data utilizing pseudoinstruction words | |
| US7853773B1 (en) | Program memory space expansion for particular processor instructions | |
| JP3030297B2 (ja) | コンピュ―タ・システム | |
| JPH0520086A (ja) | 数値演算処理装置 | |
| KR100463205B1 (ko) | 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법 | |
| US6427191B1 (en) | High performance fully dual-ported, pipelined cache design | |
| US20060143405A1 (en) | Data processing device | |
| US6425047B1 (en) | Process containing address decoders suited to improvements in clock speed | |
| JP3030298B2 (ja) | コンピュ―タ・システム | |
| US7360055B2 (en) | Two address map for transactions between an X-bit processor and a Y-bit wide memory | |
| JP3474384B2 (ja) | シフタ回路及びマイクロプロセッサ | |
| KR100196522B1 (ko) | 고속 및 고집적 마이크로프로세서를 위한 캐쉬 메모리 장치 | |
| JP2000285019A (ja) | キャッシュ制御回路 | |
| KR890004855Y1 (ko) | 직접 메모리 억세스 장치의 어드레스 확장회로 | |
| JP2000067026A (ja) | 半導体装置 | |
| JPS63276153A (ja) | アドレス応答制御回路 |