JPH0476884A - スタックメモリ - Google Patents
スタックメモリInfo
- Publication number
- JPH0476884A JPH0476884A JP2189463A JP18946390A JPH0476884A JP H0476884 A JPH0476884 A JP H0476884A JP 2189463 A JP2189463 A JP 2189463A JP 18946390 A JP18946390 A JP 18946390A JP H0476884 A JPH0476884 A JP H0476884A
- Authority
- JP
- Japan
- Prior art keywords
- address
- data
- stack pointer
- stack
- bank
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/78—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
- G06F7/785—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Static Random-Access Memory (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[発明の目的]
(産業上の利用分野)
この発明は、RAMを用いたスタックメモリに関する。
(従来の技術)
従来、La5t In First Out型のメモリ
からなるスタックメモリにあっては、随時呼出し型のメ
モリ(RAM)を用いて構成されるものがある。
からなるスタックメモリにあっては、随時呼出し型のメ
モリ(RAM)を用いて構成されるものがある。
このようなスタックメモリを機能させるためには、デー
タが入出力されるRAMと、このRAMにおけるデータ
の入出力アドレスを指示するアップダウンカウンタから
なるスタックポインタとが必要になる。
タが入出力されるRAMと、このRAMにおけるデータ
の入出力アドレスを指示するアップダウンカウンタから
なるスタックポインタとが必要になる。
このようなスタックメモリにおいてはRAMへの書込み
動作(PUSH)を行なうには、スタックポインタによ
って指定されたアドレスに外部からデータを書込み、そ
の後スタックポインタのアドレスを“1”だけインクリ
メントして更新する。
動作(PUSH)を行なうには、スタックポインタによ
って指定されたアドレスに外部からデータを書込み、そ
の後スタックポインタのアドレスを“1”だけインクリ
メントして更新する。
一方、RAMからの読出し動作(POP)を行なう場合
には、スタックポインタのアドレスを“1゛たけデクリ
メントし、その後デクリメントされたアドレスで指定さ
れる位置からデータを読出す。
には、スタックポインタのアドレスを“1゛たけデクリ
メントし、その後デクリメントされたアドレスで指定さ
れる位置からデータを読出す。
このようにしてスタックメモリのPUSH及びPOPが
行なわれるので、RAMのアクセスを開始する時には、
読出し動作(P OP)を行なうのか、あるいは書込み
動作(PUSH)を行なうのかが確定している必要があ
る。すなわち、従来のスタックメモリにあっては、PU
SH/POPが確定した後、RAMのアクセス動作が開
始されていた。このため、従来のスタックメモリを使用
したシステムにあっては、処理速度が低下する場合があ
った。
行なわれるので、RAMのアクセスを開始する時には、
読出し動作(P OP)を行なうのか、あるいは書込み
動作(PUSH)を行なうのかが確定している必要があ
る。すなわち、従来のスタックメモリにあっては、PU
SH/POPが確定した後、RAMのアクセス動作が開
始されていた。このため、従来のスタックメモリを使用
したシステムにあっては、処理速度が低下する場合があ
った。
例えば、・処理途中のデータを一時的にスタックメモリ
に保持しておき、保持されたデータを後に読出して使用
するといった動作を必要とする再帰的なアリゴリズムに
あっては、データ操作の結果を判定した後、判定結果に
したがって、途中のデータをスタックメモリにPUSH
するか、あるいはスタックメモリからデータをPOPす
るかのいずれかを行なう場合かある。
に保持しておき、保持されたデータを後に読出して使用
するといった動作を必要とする再帰的なアリゴリズムに
あっては、データ操作の結果を判定した後、判定結果に
したがって、途中のデータをスタックメモリにPUSH
するか、あるいはスタックメモリからデータをPOPす
るかのいずれかを行なう場合かある。
このような場合に、従来のスタックメモリを使用すると
、データ操作の判定結果か得られるまで、スタックメモ
リのアクセス動作を開始できないため、全体的な処理速
度かスタックメモリのアクセスによって遅くなっていた
。
、データ操作の判定結果か得られるまで、スタックメモ
リのアクセス動作を開始できないため、全体的な処理速
度かスタックメモリのアクセスによって遅くなっていた
。
(発明が解決しようとする課題)
以上説明したように、従来のスタックメモリにあって・
は、PUSHあるいはPOPが決定された後にアクセス
動作か開始されるようになっていた。このため、スタッ
クメモリを使用する動作を含む処理の処理速度が低下す
るといった不具合を招いていた。
は、PUSHあるいはPOPが決定された後にアクセス
動作か開始されるようになっていた。このため、スタッ
クメモリを使用する動作を含む処理の処理速度が低下す
るといった不具合を招いていた。
そこで、この発明は、上記に鑑みてなされたものであり
、その目的とするところは、PUSHあるいはPoPの
確定前にアクセス動作が可能なスタックメモリを提供し
、このスタックメモリを使用したシステムにおける処理
速度を向上させることにある。
、その目的とするところは、PUSHあるいはPoPの
確定前にアクセス動作が可能なスタックメモリを提供し
、このスタックメモリを使用したシステムにおける処理
速度を向上させることにある。
[発明の構成]
(課題を解決するための手段)
上記目的を達成するために、請求項1記載の発明は、読
出し動作あるいは書込み動作が決定された後、決定され
た動作に応じて次に設定されるアドレスが更新されるス
タックポインタと、読出し動作あるいは書込み動作決定
前の前記スタックポインタのアドレスにデータを書込む
と同時に読出し動作あるいは書込み動作決定前の前記ス
タックポインタのアドレスから1を引いたアドレスがら
データを読出す2ポートRAMとから構成される。
出し動作あるいは書込み動作が決定された後、決定され
た動作に応じて次に設定されるアドレスが更新されるス
タックポインタと、読出し動作あるいは書込み動作決定
前の前記スタックポインタのアドレスにデータを書込む
と同時に読出し動作あるいは書込み動作決定前の前記ス
タックポインタのアドレスから1を引いたアドレスがら
データを読出す2ポートRAMとから構成される。
一方、上記目的を達成するために、請求項2記載の発明
は、読出し動作あるいは書込み動作が決定された後、決
定された動作に応して次に設定されるアドレスか更新さ
れるスタックポインタと、データを指定するアドレスの
うち偶数アドレスに対応するデータか入出力される偶数
バンク及び奇数アドレスに対応するデータが人出力され
る奇数バンクを備え、読出し動作あるいは書込み動作決
定前の前記スタックポインタのアドレスか偶数あるいは
奇数かに応して、前記偶数ハングからブタを読出すと同
時に前記奇数バンクにデータを書込むか、あるいは、前
記偶数バンクにデータを書込むと同時に前記奇数バンク
からデータを読出すRAMとから構成される。
は、読出し動作あるいは書込み動作が決定された後、決
定された動作に応して次に設定されるアドレスか更新さ
れるスタックポインタと、データを指定するアドレスの
うち偶数アドレスに対応するデータか入出力される偶数
バンク及び奇数アドレスに対応するデータが人出力され
る奇数バンクを備え、読出し動作あるいは書込み動作決
定前の前記スタックポインタのアドレスか偶数あるいは
奇数かに応して、前記偶数ハングからブタを読出すと同
時に前記奇数バンクにデータを書込むか、あるいは、前
記偶数バンクにデータを書込むと同時に前記奇数バンク
からデータを読出すRAMとから構成される。
(作用)
上記構成において、発明は、読出し動作(POP)と書
込み動作(P U S H)を同時に開始して並行して
行ない、読出し動作あるいは書込み動作が確定した後、
スタックポインタのアドレスを更新するようにしている
。
込み動作(P U S H)を同時に開始して並行して
行ない、読出し動作あるいは書込み動作が確定した後、
スタックポインタのアドレスを更新するようにしている
。
(実施例)
以下、図面を用いて発明の、実施例を説明する。
第1図は請求項1記載の発明の一実施例に係わるスタッ
クメモリの構成を示すブロック図である。
クメモリの構成を示すブロック図である。
ここで、スタックメモリは、次に示す2つの特徴を有し
ている。
ている。
第1の特徴は低位のアドレスから、高位のアドレスへ順
にデータが格納保持されるタイプのスタックメモリにあ
っては、有効なデータは低位のアドレスからスタックポ
インタか指示するアドレスから“1′を引いたアドレス
までの領域に格納保持されており、スタックポインタか
指示するアドレス以上の領域の内容は無効データとなる
。
にデータが格納保持されるタイプのスタックメモリにあ
っては、有効なデータは低位のアドレスからスタックポ
インタか指示するアドレスから“1′を引いたアドレス
までの領域に格納保持されており、スタックポインタか
指示するアドレス以上の領域の内容は無効データとなる
。
この第1の特徴からは、もし仮に誤ってPUSHを行な
ってしまっても、スタックポインタの値が更新されなけ
れば、PUSHされたデータは無効となり、このPUS
H動作は無効なものとなる。
ってしまっても、スタックポインタの値が更新されなけ
れば、PUSHされたデータは無効となり、このPUS
H動作は無効なものとなる。
一方、第2の特徴は、PUSH/POPするデータのア
ドレスは、必ず異なるアドレスとなり、しかも常に“1
″だけ異なった偶数のアドレスと奇数のアドレスになる
。
ドレスは、必ず異なるアドレスとなり、しかも常に“1
″だけ異なった偶数のアドレスと奇数のアドレスになる
。
このような2つの特徴を利用して、この発明のスタック
メモリては、PUSH/POPか確定する前にPUSH
とPOPを同時に実行開始し、PUSH/POPか確定
した後、スタックポインタの値を更新するようにしてい
る。
メモリては、PUSH/POPか確定する前にPUSH
とPOPを同時に実行開始し、PUSH/POPか確定
した後、スタックポインタの値を更新するようにしてい
る。
このことを可能にするために、第1図に示す実施例では
、スタックメモリを構成するメモリに2ポートのRAM
を用いて、PUSHとPOPを同時に行なうようにして
いる。
、スタックメモリを構成するメモリに2ポートのRAM
を用いて、PUSHとPOPを同時に行なうようにして
いる。
第1図において、スタックメモリは、2ボートのRAM
Iとスタックポインタ2及びインクリメンタ/デクリメ
ンタ3を備えて構成されている。
Iとスタックポインタ2及びインクリメンタ/デクリメ
ンタ3を備えて構成されている。
RAMIは、第1のポートをPUSH(書込み)専用の
ポートとしており、PUSHするデータが第1のポート
のDlに与えられ、与えられたデータがPUSHされる
アドレスが第1のポートのA1に与えられる。また、R
AMIは、第2のポートをPOP (読出し)専用のポ
ルトとしており、POPするデータが第2のポートのD
2から出力され、POPされるデータのアドレスが第2
のポートのA2に与えられる。
ポートとしており、PUSHするデータが第1のポート
のDlに与えられ、与えられたデータがPUSHされる
アドレスが第1のポートのA1に与えられる。また、R
AMIは、第2のポートをPOP (読出し)専用のポ
ルトとしており、POPするデータが第2のポートのD
2から出力され、POPされるデータのアドレスが第2
のポートのA2に与えられる。
スタックポインタ2は、RAMIにおいて次にデータが
PUSHされるアドレスを格納保持している。格納保持
されたアドレスは、RAMIにおける第1のポートのA
1に与えられる。さらに、格納保持されたアドレスはイ
ンクリメンタ/デクリメンタ3に与えられる。
PUSHされるアドレスを格納保持している。格納保持
されたアドレスは、RAMIにおける第1のポートのA
1に与えられる。さらに、格納保持されたアドレスはイ
ンクリメンタ/デクリメンタ3に与えられる。
インクリメンタ/デクリメンタ3は、スタックポインタ
2から与えられるアドレスを、“1”だけインクリメン
トするか、あるいは“1”だけデクリメントする。イン
クリメンタ/デクリメンタ3は、インクリメントしたア
ドレスあるいはデクリメントしたアドレスをスタックポ
インタ2に与える。また、デクリメントされたアドレス
は、RAMIにおける第2のポートのA2に与えられる
。
2から与えられるアドレスを、“1”だけインクリメン
トするか、あるいは“1”だけデクリメントする。イン
クリメンタ/デクリメンタ3は、インクリメントしたア
ドレスあるいはデクリメントしたアドレスをスタックポ
インタ2に与える。また、デクリメントされたアドレス
は、RAMIにおける第2のポートのA2に与えられる
。
このような構成においては、PUSH/POPが確定さ
れる前にスタックメモリのアクセス動作が開始される。
れる前にスタックメモリのアクセス動作が開始される。
アクセス動作が開始されると、スタックポインタ2から
アドレス(N)がRAMIのA1に与えられて、このア
ドレス(N)にDlから与えられたデータがRAMIに
書きこまれる。
アドレス(N)がRAMIのA1に与えられて、このア
ドレス(N)にDlから与えられたデータがRAMIに
書きこまれる。
このようなPUSH動作と同時に、スタックポインタ2
のアドレス(N)がインクリメンタ/デクリメンタ3に
与えられて、“1”たけデクリメントされ、デクリメン
トされたアドレス(N −1,)75< RA M 1
のA2に与えられ、このアドレス(N−1)に格納保持
されていたデータがRAMIのD2からPOPデータと
して読出される。
のアドレス(N)がインクリメンタ/デクリメンタ3に
与えられて、“1”たけデクリメントされ、デクリメン
トされたアドレス(N −1,)75< RA M 1
のA2に与えられ、このアドレス(N−1)に格納保持
されていたデータがRAMIのD2からPOPデータと
して読出される。
このようにして、PUSHとPOPが同時に開始されて
、PUSHあるいはPOPが確定されると、スタックポ
インタ2のアドレス(N)が更新される。すなわち、P
USHの場合には、スタックポインタ2のアドレス(N
)がインクリメンタ3に与えられて、“1゛だけインク
リメントされ、インクリメントされたアドレス(N+1
ンがスタックポインタ2に与えられて、次のアクセス動
作のアドレスとして格納保持される。これにより、アド
レスNにデータを書き込んだPUSH動作が有効となる
。
、PUSHあるいはPOPが確定されると、スタックポ
インタ2のアドレス(N)が更新される。すなわち、P
USHの場合には、スタックポインタ2のアドレス(N
)がインクリメンタ3に与えられて、“1゛だけインク
リメントされ、インクリメントされたアドレス(N+1
ンがスタックポインタ2に与えられて、次のアクセス動
作のアドレスとして格納保持される。これにより、アド
レスNにデータを書き込んだPUSH動作が有効となる
。
一方、POPの場合には、POPの際のアドレス(N−
1)がインクリメンタ/デクリメンタ3からスタックポ
インタ2に与えられて、次のアクセス動作のアドレスと
して格納保持される。これにより、アドレスNにデータ
を書き込んたPUSH動作は無効となり、アドレス(N
−1)からデータを読み出したPOP動作が有効となる
。
1)がインクリメンタ/デクリメンタ3からスタックポ
インタ2に与えられて、次のアクセス動作のアドレスと
して格納保持される。これにより、アドレスNにデータ
を書き込んたPUSH動作は無効となり、アドレス(N
−1)からデータを読み出したPOP動作が有効となる
。
このように、スタックメモリに2ポ一トRAMを用いる
ことによって、PUSHあるいはPOPが確定する前に
スタックメモリのアクセス動作を開始することが可能と
なる。
ことによって、PUSHあるいはPOPが確定する前に
スタックメモリのアクセス動作を開始することが可能と
なる。
次に、請求項2記載の発明の一実施例を説明する。
第2図は請求項2記載の発明の一実施例に係わるスタッ
クメモリの構成を示す図である。同図に示す実施例は、
データが入出力されるRAMを2つのブロックに分割し
たバンク方式で構成し、前述したスタックメモリにおけ
る第2の特徴を特に利用して、PUSH及びPOPを同
時に開始実行することを可能にしたものである。
クメモリの構成を示す図である。同図に示す実施例は、
データが入出力されるRAMを2つのブロックに分割し
たバンク方式で構成し、前述したスタックメモリにおけ
る第2の特徴を特に利用して、PUSH及びPOPを同
時に開始実行することを可能にしたものである。
第2図において、スタックメモリは、RAM5、スタッ
クポインタ6、インクリメンタ/デクリメンタ7、加算
器8及びセレクタ9を備えて構成されている。
クポインタ6、インクリメンタ/デクリメンタ7、加算
器8及びセレクタ9を備えて構成されている。
RAM5は、1ポートのRAMであり、入出力端子はそ
れぞれ別々になっている。なお、入出力端子か共通であ
ってもかまわない。RA M 5は、偶バンク10と奇
バンク11とから構成されており、それぞれのバンクに
は共通にPUSHするデータが与えられ、それぞれのバ
ンクからそれぞれ独立してデータが読出されるように構
成されている。
れぞれ別々になっている。なお、入出力端子か共通であ
ってもかまわない。RA M 5は、偶バンク10と奇
バンク11とから構成されており、それぞれのバンクに
は共通にPUSHするデータが与えられ、それぞれのバ
ンクからそれぞれ独立してデータが読出されるように構
成されている。
偶バンク10は、スタックメモリの全体としてのアドレ
スのうち偶数アドレスが割付けられており、偶数アドレ
スに対応したデータの入出力が行なわれる。
スのうち偶数アドレスが割付けられており、偶数アドレ
スに対応したデータの入出力が行なわれる。
一方、奇バンク11は、スタックメモリの全体としての
アドレスのうち奇数アドレスか割付けられており、奇数
アドレスに対応したデータの入出力が行なわれる。
アドレスのうち奇数アドレスか割付けられており、奇数
アドレスに対応したデータの入出力が行なわれる。
したかって、偶バンク10のアドレスpは、スタックメ
モリの全体としてのアドレス(2p)に対応し、奇バン
ク11のアドレスqは、スタックメモリの全体としての
アドレス(2q+1)に対応する。このような偶バンク
10及び奇バンク11は、スタックメモリ全体としての
アドレス、すなわちスタックポインタ6の指示するアド
レスが偶数の場合は、偶バンク10がPOPされ、奇バ
ンク11がPUSHされる。一方、スタックポインタ6
の指示するアドレスが奇数の場合には、偶バンク10が
PUSHされ、奇バンク11がp。
モリの全体としてのアドレス(2p)に対応し、奇バン
ク11のアドレスqは、スタックメモリの全体としての
アドレス(2q+1)に対応する。このような偶バンク
10及び奇バンク11は、スタックメモリ全体としての
アドレス、すなわちスタックポインタ6の指示するアド
レスが偶数の場合は、偶バンク10がPOPされ、奇バ
ンク11がPUSHされる。一方、スタックポインタ6
の指示するアドレスが奇数の場合には、偶バンク10が
PUSHされ、奇バンク11がp。
Pされる。
スタックポインタ6は、スタックメモリ全体としてのア
ドレスを格納保持するものであり、P。
ドレスを格納保持するものであり、P。
Pするデータを指示するアドレスを格納保持している。
このため、PUSHするデータを指示するアドレスは、
スタックポインタ6のアドレスをSPとすると、(SP
+1)となる。
スタックポインタ6のアドレスをSPとすると、(SP
+1)となる。
スタックポインタ6は、そのアドレスが偶数(2「)で
ある場合は、POPされるデータは偶バンクlOのr番
地となり、PUSHされるデータは奇バンク11のr番
地となる。一方、スタックポインタ6は、そのアドレス
が奇数(2r+1)である場合には、POPされるデー
タは奇バンク11のr番地となり、PUSHされるデー
タは偶バンクの(r+1)番地となる。
ある場合は、POPされるデータは偶バンクlOのr番
地となり、PUSHされるデータは奇バンク11のr番
地となる。一方、スタックポインタ6は、そのアドレス
が奇数(2r+1)である場合には、POPされるデー
タは奇バンク11のr番地となり、PUSHされるデー
タは偶バンクの(r+1)番地となる。
したがって、奇バンク11には、スタックポインタ6の
アドレスが偶数(2「)あるいは奇数(2r+1)であ
っても、上述したr番地のアドレスが与えられるように
すればよい。ここで、r番地はスタックポインタ6のア
ドレス(S P)の1/2の値となる。これにより、ス
タックポインタ6のアドレスの全ビットのうち最下位ビ
ット(SPL)を除いたビット列のアドレス(SPM)
は、全ビットのアドレスの1/2となるので、スタック
ポインタ6のアドレスの最下位ビットを除いたアドレス
(SPM)が奇バンク11に与えられる。
アドレスが偶数(2「)あるいは奇数(2r+1)であ
っても、上述したr番地のアドレスが与えられるように
すればよい。ここで、r番地はスタックポインタ6のア
ドレス(S P)の1/2の値となる。これにより、ス
タックポインタ6のアドレスの全ビットのうち最下位ビ
ット(SPL)を除いたビット列のアドレス(SPM)
は、全ビットのアドレスの1/2となるので、スタック
ポインタ6のアドレスの最下位ビットを除いたアドレス
(SPM)が奇バンク11に与えられる。
一方、偶バンク10では、スタックポインタ6のアドレ
スが偶数(2r)の場合は1番目のアドレス、奇数(2
r + 1)の場合には(r+1)番地のアドレスか与
えられるようにすればよい。これを実現するために、ス
タックポインタ6のアドレスから最下位ビット(SPL
)を除いたアドレス(S PM)に最下位ビット(SP
L)を加算器8によって加え、その値をアドレスとして
偶バンク10に与えればよい。
スが偶数(2r)の場合は1番目のアドレス、奇数(2
r + 1)の場合には(r+1)番地のアドレスか与
えられるようにすればよい。これを実現するために、ス
タックポインタ6のアドレスから最下位ビット(SPL
)を除いたアドレス(S PM)に最下位ビット(SP
L)を加算器8によって加え、その値をアドレスとして
偶バンク10に与えればよい。
このような操作にあって、スタックポインタ6のアドレ
スが偶数(2r)の場合は、最下位ビット(SPL)は
“0”となるため、アドレス(SPM)と最下位ビット
(SPL)の加算結果(SP M+ S P L)は
r となり、この加算結果かアドレスのr番地として偶
バンク10に与えられる。一方、スタックポインタ6の
アドレスが奇数(2r+1)の場合には、最下位ビット
(SPL)は“1”となるので、アドレス(SPM)と
最下位ビット(SPL)の加算結果(SPM+SP、)
は、 r+1“となり、この加算結果がアドレスの(
r+1)番地として偶バンク10に与えられる。
スが偶数(2r)の場合は、最下位ビット(SPL)は
“0”となるため、アドレス(SPM)と最下位ビット
(SPL)の加算結果(SP M+ S P L)は
r となり、この加算結果かアドレスのr番地として偶
バンク10に与えられる。一方、スタックポインタ6の
アドレスが奇数(2r+1)の場合には、最下位ビット
(SPL)は“1”となるので、アドレス(SPM)と
最下位ビット(SPL)の加算結果(SPM+SP、)
は、 r+1“となり、この加算結果がアドレスの(
r+1)番地として偶バンク10に与えられる。
また、スタックポインタ6は、そのアドレスの最下位ビ
ット(SPL)か偶バンク10及びセレクタ9に、最下
位ビットを反転した反転最下位ビット(SPL)か奇バ
ンク11に与えられる。偶バンク10、奇バンク11及
びセレクタ9は、与えられる最下位ビット(SPL)の
値に基づいて、スタックポインタ6のアドレスが偶数で
あるか奇数であるかを判別して、判別結果に応してそれ
ぞれ対応する動作が行なわれる。
ット(SPL)か偶バンク10及びセレクタ9に、最下
位ビットを反転した反転最下位ビット(SPL)か奇バ
ンク11に与えられる。偶バンク10、奇バンク11及
びセレクタ9は、与えられる最下位ビット(SPL)の
値に基づいて、スタックポインタ6のアドレスが偶数で
あるか奇数であるかを判別して、判別結果に応してそれ
ぞれ対応する動作が行なわれる。
インクリメンタ/デクリメンタ7は、スタックポインタ
6のアドレスを“1″だけインクリメントするか、ある
いは“1”だけデクリメントして、インクリメントある
いはデクリメントしたアドレスをスタックポインタ6に
与える。これにより、インクリメンタ/デクリメンタ7
は、前述した実施例と同様に、スタックポインタ6とと
もにアップダウンカウンタを構成している。
6のアドレスを“1″だけインクリメントするか、ある
いは“1”だけデクリメントして、インクリメントある
いはデクリメントしたアドレスをスタックポインタ6に
与える。これにより、インクリメンタ/デクリメンタ7
は、前述した実施例と同様に、スタックポインタ6とと
もにアップダウンカウンタを構成している。
セレクタ9は、偶バンク10から読出されたデータと奇
バンク11から読出されたデータを、スタックポインタ
6から与えられる最下位ビット(SPL)の値に基づい
て選択し、選択したデータをスタックメモリのPOPデ
ータとしている。
バンク11から読出されたデータを、スタックポインタ
6から与えられる最下位ビット(SPL)の値に基づい
て選択し、選択したデータをスタックメモリのPOPデ
ータとしている。
セレクタ9は、スタックポインタ6のアドレスが偶数で
最下位ビット(SPt)の値が“0”の場合には、偶バ
ンク10から読出されたデータを選択し、スタックポイ
ンタ6のアドレスが奇数で最下位ビット(SPL)の値
が“1”の場合には、奇バンク11から読出されたデー
タを選択する。
最下位ビット(SPt)の値が“0”の場合には、偶バ
ンク10から読出されたデータを選択し、スタックポイ
ンタ6のアドレスが奇数で最下位ビット(SPL)の値
が“1”の場合には、奇バンク11から読出されたデー
タを選択する。
このような構成において、スタックポインタ6のアドレ
スが偶数(2「)の場合は、アクセス動作のアドレスと
して、偶バンク10には加算器8の出力としてアドレス
(SPM)のr番地が与えられ、奇バンク11にはスタ
ックポインタ6のアドレスから最下位ビットを除いたア
ドレス(SPM)のr番地が与えられる。spL、SP
L即ち“φ”、“1”が偶奇それぞれのバンクにRW制
御信号として与えられ、偶バンクが読み出し、奇バンク
が書き込みであることを指示する。
スが偶数(2「)の場合は、アクセス動作のアドレスと
して、偶バンク10には加算器8の出力としてアドレス
(SPM)のr番地が与えられ、奇バンク11にはスタ
ックポインタ6のアドレスから最下位ビットを除いたア
ドレス(SPM)のr番地が与えられる。spL、SP
L即ち“φ”、“1”が偶奇それぞれのバンクにRW制
御信号として与えられ、偶バンクが読み出し、奇バンク
が書き込みであることを指示する。
これにより、偶バンク10では与えられたアドレス(r
番地)からデータが読出され、奇バンク11では与えら
れたアドレス(r番地)に外部から与えられたPUSH
データが書き込まれる。偶バンク10から読出されたデ
ータはセレクタ9により選択され、スタックメモリのP
OPデータとして出力される。
番地)からデータが読出され、奇バンク11では与えら
れたアドレス(r番地)に外部から与えられたPUSH
データが書き込まれる。偶バンク10から読出されたデ
ータはセレクタ9により選択され、スタックメモリのP
OPデータとして出力される。
このような動作は、偶バンクlOと奇バンク11を1つ
のRAM5として見た場合に、スタックメモリ全体とし
てのアドレス(2r)からデータをpopt、て、スタ
ックメモリ全体としてのアドレス(2r+1)にデータ
をPUSHしたことと等価となり、スタックポインタ6
のアドレスで指示されるデータのPOPと、そのアドレ
スに“1”を加えたアドレスへのデータのPUSHを同
時に実行したことになる。
のRAM5として見た場合に、スタックメモリ全体とし
てのアドレス(2r)からデータをpopt、て、スタ
ックメモリ全体としてのアドレス(2r+1)にデータ
をPUSHしたことと等価となり、スタックポインタ6
のアドレスで指示されるデータのPOPと、そのアドレ
スに“1”を加えたアドレスへのデータのPUSHを同
時に実行したことになる。
このようなアクセス動作が開始された後、PUSHある
いはPOPが確定すると、スタックポインタ6のアドレ
スが更新される。すなわち、アクセス動作がPUSHの
場合は、スタックポインタ6のアドレスはインクリメン
タ/デクリメンタ7によって“l”だけインクリメント
されて、インクリメントされたアドレスがスタックポイ
ンタ6に格納保持され、PUSH動作か有効となる。
いはPOPが確定すると、スタックポインタ6のアドレ
スが更新される。すなわち、アクセス動作がPUSHの
場合は、スタックポインタ6のアドレスはインクリメン
タ/デクリメンタ7によって“l”だけインクリメント
されて、インクリメントされたアドレスがスタックポイ
ンタ6に格納保持され、PUSH動作か有効となる。
力、アクセス動作かPOPの場合には、スタ・ツクポイ
ンタ6のアドレスはインクリメンタ/デクリメンタ7に
よって1”だけデクリメントされて、デクリメントされ
たアドレスがスタックポインタ6に格納保持され、PO
P動作が有効となる。
ンタ6のアドレスはインクリメンタ/デクリメンタ7に
よって1”だけデクリメントされて、デクリメントされ
たアドレスがスタックポインタ6に格納保持され、PO
P動作が有効となる。
次に、スタックポインタ6のアドレスが奇数(2r+1
)の場合には、アクセス動作のアドレスとして、偶バン
ク10には加算器8の出力としてアドレス(SPM+1
)の(r+l)番地が与えられ、奇バンク11にはスタ
ックポインタ6のアドレスから最下位ビットを除いたア
ドレス(SPM)のr番地が与えられる。SPL、SP
L即ち“1“φ“が偶奇それぞれのバンクにRW制御信
号として与えられ、偶バンクが書き込み、奇バンクが読
み出しであることを指示する。
)の場合には、アクセス動作のアドレスとして、偶バン
ク10には加算器8の出力としてアドレス(SPM+1
)の(r+l)番地が与えられ、奇バンク11にはスタ
ックポインタ6のアドレスから最下位ビットを除いたア
ドレス(SPM)のr番地が与えられる。SPL、SP
L即ち“1“φ“が偶奇それぞれのバンクにRW制御信
号として与えられ、偶バンクが書き込み、奇バンクが読
み出しであることを指示する。
これにより、偶バンク10ては与えられたアドレス(r
+1番地)に外部から与えられたPUSHデータがPU
SHされ、奇バンク11ては与えられたアドレス(r番
地)からデータが読出される。奇バンク11から読出さ
れたデータはセレクタ9によって選択され、スタックメ
モリのPOPデータとして出力される。
+1番地)に外部から与えられたPUSHデータがPU
SHされ、奇バンク11ては与えられたアドレス(r番
地)からデータが読出される。奇バンク11から読出さ
れたデータはセレクタ9によって選択され、スタックメ
モリのPOPデータとして出力される。
このような動作は、偶バンク10と奇バンク]1を1つ
のRAM5として見た場合に、スタックメモリ全体とし
てのアドレス(2r+1)からデータをPOP して、
スタックメモリ全体としてのアドレス(2r+2)にデ
ータをPUSHしたことと等価となり、スタックポイン
タ6のアドレスで指示されるデータのPOPと、そのア
ドレスに1″を加えたアドレスへのデータのPUSHを
同時に実行したことになる。
のRAM5として見た場合に、スタックメモリ全体とし
てのアドレス(2r+1)からデータをPOP して、
スタックメモリ全体としてのアドレス(2r+2)にデ
ータをPUSHしたことと等価となり、スタックポイン
タ6のアドレスで指示されるデータのPOPと、そのア
ドレスに1″を加えたアドレスへのデータのPUSHを
同時に実行したことになる。
このようなアクセス動作が開始された後、PUSHある
いはPOPか確定すると、スタックポインタ6のアドレ
スが偶数である場合と同様にしてスタックポインタ6の
アドレスが更新される。
いはPOPか確定すると、スタックポインタ6のアドレ
スが偶数である場合と同様にしてスタックポインタ6の
アドレスが更新される。
したがって、このような構成にあっても、PUSH動作
とPOP動作を同時に開始することか可能となり、両動
作の確定後に確定した動作を有効動作とすることができ
るようになる。
とPOP動作を同時に開始することか可能となり、両動
作の確定後に確定した動作を有効動作とすることができ
るようになる。
次に、このようなスタックメモリを、システムに組み入
れ、再帰的なアルゴリズムを実行する場合について説明
する。
れ、再帰的なアルゴリズムを実行する場合について説明
する。
再帰的なアルゴリズムが例えば第3図に示すように、ス
タックメモリ12とデータ操作/判定装置13とて構成
された場合に、データ操作/判定装置13でデータの操
作と、スタックメモリ12の次の操作の決定が並行して
行なわれたとしても、従来のスタックメモリにあっては
、スタックメモリ12の操作が決定されるまでは、スタ
ックメモリ12のアクセス動作を開始することはできな
かった。このため、第4図のタイミングチャートに示す
ように、スタックメモリ操作の決定とスタックメモリの
実際の操作とがシリアルな処理となり、1回のスタック
メモリの操作にかかる時間は、両者に必要な時間の和と
なる。
タックメモリ12とデータ操作/判定装置13とて構成
された場合に、データ操作/判定装置13でデータの操
作と、スタックメモリ12の次の操作の決定が並行して
行なわれたとしても、従来のスタックメモリにあっては
、スタックメモリ12の操作が決定されるまでは、スタ
ックメモリ12のアクセス動作を開始することはできな
かった。このため、第4図のタイミングチャートに示す
ように、スタックメモリ操作の決定とスタックメモリの
実際の操作とがシリアルな処理となり、1回のスタック
メモリの操作にかかる時間は、両者に必要な時間の和と
なる。
これに対して、上述した発明における実施例にあっては
、データ操作の直後にスタックメモリの操作に入ること
が可能となり、PUSH/POPはスタックメモリの操
作が終了するまでに確定していればよい。このため、第
5図に示すように、データ操作及びスタックメモリ操作
判定と、スタックメモリの実際の操作とを同時に並行し
て行なうことが可能となり、1回のスタックメモリの操
作にかかる時間は、両者のうちの長い方の時間で済むこ
とになる。したかって、この発明によるスタックメモリ
を用いることによって、最大で2倍の処理速度の向上か
得られるようになる。
、データ操作の直後にスタックメモリの操作に入ること
が可能となり、PUSH/POPはスタックメモリの操
作が終了するまでに確定していればよい。このため、第
5図に示すように、データ操作及びスタックメモリ操作
判定と、スタックメモリの実際の操作とを同時に並行し
て行なうことが可能となり、1回のスタックメモリの操
作にかかる時間は、両者のうちの長い方の時間で済むこ
とになる。したかって、この発明によるスタックメモリ
を用いることによって、最大で2倍の処理速度の向上か
得られるようになる。
なお、この発明は、上記実施例に限定されることはなく
、例えばデータを高位のアドレスから低位のアドレスへ
と順次格納するようにしてもよい。
、例えばデータを高位のアドレスから低位のアドレスへ
と順次格納するようにしてもよい。
また、スタックメモリにおけるデータが人出力される領
域が、他のメモリにおける一部のアドレス領域であって
もよい。
域が、他のメモリにおける一部のアドレス領域であって
もよい。
[発明の効果]
以上説明したように、発明によれば、読出し動作(PO
P)と書込み動作(PUSH)を同時に開始して並行し
て行ない、読出し動作あるいは書込み動作が確定した後
、スタックポインタのアドレスを更新するようにしたの
で、読出し動作あるいは書込み動作か確定する前に読出
し動作と書込み動作をともに行なっても、両動作のうち
確定した動作を有効とすることかできる。この結果、読
出し動作あるいは書込み動作が確定する前にアクセス動
作が可能なスタックメモリを提供することができるよう
になり、このスタックメモリを使用したシステムの処理
速度を向上させることができるようになる。
P)と書込み動作(PUSH)を同時に開始して並行し
て行ない、読出し動作あるいは書込み動作が確定した後
、スタックポインタのアドレスを更新するようにしたの
で、読出し動作あるいは書込み動作か確定する前に読出
し動作と書込み動作をともに行なっても、両動作のうち
確定した動作を有効とすることかできる。この結果、読
出し動作あるいは書込み動作が確定する前にアクセス動
作が可能なスタックメモリを提供することができるよう
になり、このスタックメモリを使用したシステムの処理
速度を向上させることができるようになる。
第1図は請求項1記載の発明の一実施例に係わるスタッ
クメモリの構成を示す図、 第2図は請求項2記載の発明の一実施例に係わるスタッ
クメモリの構成を示す図、 第3図はスタックメモリを用いた再帰的アルゴリズムを
実現するための構成を示す図、第4図は従来のスタック
メモリを用いた処理のタイミングチャート、 第5図は発明のスタックメモリを用いた処理のタイミン
グチャートである。 1・・・2ポ一トRAM 2.6・・・スタックポインタ 3.7・・・ インクリメンタ/デクリメンタ5・・・
RAM 8・・・加算器 9・・・セレクタ 10・・・偶バンク 11・・・奇バンク
クメモリの構成を示す図、 第2図は請求項2記載の発明の一実施例に係わるスタッ
クメモリの構成を示す図、 第3図はスタックメモリを用いた再帰的アルゴリズムを
実現するための構成を示す図、第4図は従来のスタック
メモリを用いた処理のタイミングチャート、 第5図は発明のスタックメモリを用いた処理のタイミン
グチャートである。 1・・・2ポ一トRAM 2.6・・・スタックポインタ 3.7・・・ インクリメンタ/デクリメンタ5・・・
RAM 8・・・加算器 9・・・セレクタ 10・・・偶バンク 11・・・奇バンク
Claims (2)
- (1)読出し動作あるいは書込み動作が決定された後、
決定された動作に応じて次に設定されるアドレスが更新
されるスタックポインタと、 読出し動作あるいは書込み動作決定前の前記スタックポ
インタのアドレスにデータを書込むと同時に読出し動作
あるいは書込み動作決定前の前記スタックポインタのア
ドレスから1を引いたアドレスからデータを読出す2ポ
ートRAMと を有することを特徴とするスタックメモリ。 - (2)読出し動作あるいは書込み動作が決定された後、
決定された動作に応じて次に設定されるアドレスが更新
されるスタックポインタと、 データを指定するアドレスのうち偶数アドレスに対応す
るデータが入出力される偶数バンク及び奇数アドレスに
対応するデータが入出力される奇数バンクを備え、読出
し動作あるいは書込み動作決定前の前記スタックポイン
タのアドレスが偶数あるいは奇数かに応じて、前記偶数
バンクからデータを読出すと同時に前記奇数バンクにデ
ータを書込むか、あるいは、前記偶数バンクにデータを
書込むと同時に前記奇数バンクからデータを読出すRA
Mと を有することを特徴とするスタックメモリ。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2189463A JPH0752576B2 (ja) | 1990-07-19 | 1990-07-19 | スタックメモリ |
| US07/731,764 US5287309A (en) | 1990-07-19 | 1991-07-18 | High-speed stack memory |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2189463A JPH0752576B2 (ja) | 1990-07-19 | 1990-07-19 | スタックメモリ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0476884A true JPH0476884A (ja) | 1992-03-11 |
| JPH0752576B2 JPH0752576B2 (ja) | 1995-06-05 |
Family
ID=16241694
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2189463A Expired - Fee Related JPH0752576B2 (ja) | 1990-07-19 | 1990-07-19 | スタックメモリ |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5287309A (ja) |
| JP (1) | JPH0752576B2 (ja) |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5473271A (en) * | 1993-02-09 | 1995-12-05 | Dallas Semiconductor Corporation | Microprocessor output driver |
| US5958039A (en) * | 1997-10-28 | 1999-09-28 | Microchip Technology Incorporated | Master-slave latches and post increment/decrement operations |
| US6167047A (en) * | 1998-05-18 | 2000-12-26 | Solidum Systems Corp. | Packet classification state machine |
| US7028163B2 (en) * | 1998-06-22 | 2006-04-11 | Samsung Electronics, Co., Ltd. | Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors |
| US6058467A (en) * | 1998-08-07 | 2000-05-02 | Dallas Semiconductor Corporation | Standard cell, 4-cycle, 8-bit microcontroller |
| US6345353B2 (en) * | 1999-07-20 | 2002-02-05 | Microchip Technology Incorporated | Stack pointer with post increment/decrement allowing selection from parallel read/write address outputs |
| US6654871B1 (en) | 1999-11-09 | 2003-11-25 | Motorola, Inc. | Device and a method for performing stack operations in a processing system |
| FR2845784B1 (fr) * | 2002-10-11 | 2005-01-14 | St Microelectronics Sa | Dispositif de memorisation de donnees de type lifo incorporant deux memoires a acces aleatoire |
| CN100367402C (zh) * | 2003-02-13 | 2008-02-06 | 明基电通股份有限公司 | 一种堆栈的指针产生器与指针产生的方法 |
| US7020747B2 (en) * | 2003-03-31 | 2006-03-28 | Intel Corporation | Dual-stack memory architecture and compiling method |
| US8793284B2 (en) | 2011-05-26 | 2014-07-29 | Laurie Dean Perrin | Electronic device with reversing stack data container and related methods |
| US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
| US10867031B2 (en) | 2015-07-23 | 2020-12-15 | Apple Inc. | Marking valid return targets |
| US10394556B2 (en) * | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
| US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS576193A (en) * | 1980-06-09 | 1982-01-13 | Toshiba Corp | Very low temperature container |
| JPS63129438A (ja) * | 1986-11-19 | 1988-06-01 | Matsushita Graphic Commun Syst Inc | メモリ制御装置 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5042007A (en) * | 1990-02-26 | 1991-08-20 | Eastman Kodak Company | Apparatus for transposing digital data |
-
1990
- 1990-07-19 JP JP2189463A patent/JPH0752576B2/ja not_active Expired - Fee Related
-
1991
- 1991-07-18 US US07/731,764 patent/US5287309A/en not_active Expired - Lifetime
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS576193A (en) * | 1980-06-09 | 1982-01-13 | Toshiba Corp | Very low temperature container |
| JPS63129438A (ja) * | 1986-11-19 | 1988-06-01 | Matsushita Graphic Commun Syst Inc | メモリ制御装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0752576B2 (ja) | 1995-06-05 |
| US5287309A (en) | 1994-02-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0476884A (ja) | スタックメモリ | |
| KR970008186B1 (ko) | 신호프로세서용 어드레스 프로세서 | |
| JPS6041769B2 (ja) | アドレス指定方式 | |
| JPS6211736B2 (ja) | ||
| JP3540179B2 (ja) | フィルタ中の係数用の多重ポート・レジスタ・ファイル | |
| JPS619766A (ja) | デ−タ転送装置 | |
| JP2595992B2 (ja) | 電子楽器 | |
| JP2956390B2 (ja) | 描画プロセッサ | |
| JPS6054056A (ja) | ビットデ−タ書込メモリインタ−フェ−ス回路 | |
| JPS6129031B2 (ja) | ||
| JPH0156411B2 (ja) | ||
| JPH0474746B2 (ja) | ||
| JPH0683639A (ja) | レジスタ装置 | |
| JPH10312356A (ja) | データ転送装置 | |
| JPS619725A (ja) | マイクロプログラム制御回路 | |
| JP2002050172A (ja) | Fifo制御回路 | |
| JP3127492B2 (ja) | アドレッシング演算回路 | |
| JP3074897B2 (ja) | メモリ回路 | |
| JPH0113764B2 (ja) | ||
| JPH02131646A (ja) | 通信制御装置 | |
| JP2000322843A (ja) | Ramアクセス回路 | |
| JPH04255064A (ja) | 並列処理装置 | |
| JPS60218146A (ja) | 記憶装置アドレス制御方式 | |
| JPS60209873A (ja) | ベクトル処理装置 | |
| JPS5932813B2 (ja) | デ−タ転送方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |