JPH0752576B2 - スタックメモリ - Google Patents
スタックメモリInfo
- Publication number
- JPH0752576B2 JPH0752576B2 JP2189463A JP18946390A JPH0752576B2 JP H0752576 B2 JPH0752576 B2 JP H0752576B2 JP 2189463 A JP2189463 A JP 2189463A JP 18946390 A JP18946390 A JP 18946390A JP H0752576 B2 JPH0752576 B2 JP H0752576B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- data
- stack pointer
- bank
- stack
- 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 - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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)
Description
【発明の詳細な説明】 [発明の目的] (産業上の利用分野) この発明は、RAMを用いたスタックメモリに関する。
(従来の技術) 従来、Last In First Out型のメモリからなるスタック
メモリにあっては、随時呼出し型のメモリ(RAM)を用
いて構成されるものがある。
メモリにあっては、随時呼出し型のメモリ(RAM)を用
いて構成されるものがある。
このようなスタックメモリを機能させるためには、デー
タが入出力されるRAMと、このRAMにおけるデータの入出
力アドレスを指示するアップダウンカウンタからなるス
タックポインタとが必要になる。
タが入出力されるRAMと、このRAMにおけるデータの入出
力アドレスを指示するアップダウンカウンタからなるス
タックポインタとが必要になる。
このようなスタックメモリにおいてはRAMへの書込み動
作(PUSH)を行なうには、スタックポインタによって指
定されたアドレスに外部からデータを書込み、その後ス
タックポインタのアドレスを“1"だけインクリメントし
て更新する。一方、RAMからの読出し動作(POP)を行な
う場合には、スタックポインタのアドレスを“1"だけデ
クリメントし、その後デクリメントされたアドレスで指
定される位置からデータを読出す。
作(PUSH)を行なうには、スタックポインタによって指
定されたアドレスに外部からデータを書込み、その後ス
タックポインタのアドレスを“1"だけインクリメントし
て更新する。一方、RAMからの読出し動作(POP)を行な
う場合には、スタックポインタのアドレスを“1"だけデ
クリメントし、その後デクリメントされたアドレスで指
定される位置からデータを読出す。
このようにしてスタックメモリのPUSH及びPOPが行なわ
れるので、RAMのアクセスを開始する時には、読出し動
作(POP)を行なうのか、あるいは書込み動作(PUSH)
を行なうのかが確定している必要がある。すなわち、従
来のスタックメモリにあっては、PUSH/POPが確定した
後、RAMのアクセス動作が開始されていた。このため、
従来のスタックメモリを使用したシステムにあっては、
処理速度が低下する場合があった。
れるので、RAMのアクセスを開始する時には、読出し動
作(POP)を行なうのか、あるいは書込み動作(PUSH)
を行なうのかが確定している必要がある。すなわち、従
来のスタックメモリにあっては、PUSH/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)と書込
み動作(PUSH)を同時に開始して並行して行ない、読出
し動作あるいは書込み動作が確定した後、スタックポイ
ンタのアドレスを更新するようにしている。
み動作(PUSH)を同時に開始して並行して行ない、読出
し動作あるいは書込み動作が確定した後、スタックポイ
ンタのアドレスを更新するようにしている。
(実施例) 以下、図面を用いて発明の実施例を説明する。
第1図は請求項1記載の発明の一実施例に係わるスタッ
クメモリの構成を示すブロック図である。
クメモリの構成を示すブロック図である。
ここで、スタックメモリは、次に示す2つの特徴を有し
ている。
ている。
第1の特徴は低位のアドレスから、高位のアドレスへ順
にデータが格納保持されるタイプのスタックメモリにあ
っては、有効なデータは低位のアドレスからスタックポ
インタが指示するアドレスから“1"を引いたアドレスま
での領域に格納保持されており、スタックポインタが指
示するアドレス以上の領域の内容は無効データとなる。
にデータが格納保持されるタイプのスタックメモリにあ
っては、有効なデータは低位のアドレスからスタックポ
インタが指示するアドレスから“1"を引いたアドレスま
での領域に格納保持されており、スタックポインタが指
示するアドレス以上の領域の内容は無効データとなる。
この第1の特徴からは、もし仮に誤ってPUSHを行なって
しまっても、スタックポインタの値が更新されなけれ
ば、PUSHされたデータは無効となり、このPUSH動作は無
効なものとなる。
しまっても、スタックポインタの値が更新されなけれ
ば、PUSHされたデータは無効となり、このPUSH動作は無
効なものとなる。
一方、第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ポートのRAM1と
スタックポインタ2及びインクリメンタ/デクリメンタ
3を備えて構成されている。
スタックポインタ2及びインクリメンタ/デクリメンタ
3を備えて構成されている。
RAM1は、第1のポートをPUSH(書込み)専用のポートと
しており、PUSHするデータが第1のポートのD1に与えら
れ、与えられたデータがPUSHされるアドレスが第1のポ
ートのA1に与えられる。また、RAM1は、第2のポートを
POP(読出し)専用のポートとしており、POPするデータ
が第2のポートのD2から出力され、POPされるデータの
アドレスが第2のポートのA2に与えられる。
しており、PUSHするデータが第1のポートのD1に与えら
れ、与えられたデータがPUSHされるアドレスが第1のポ
ートのA1に与えられる。また、RAM1は、第2のポートを
POP(読出し)専用のポートとしており、POPするデータ
が第2のポートのD2から出力され、POPされるデータの
アドレスが第2のポートのA2に与えられる。
スタックポインタ2は、RAM1において次にデータがPUSH
されるアドレスを格納保持している。格納保持されたア
ドレスは、RAM1における第1のポートのA1に与えられ
る。さらに、格納保持されたアドレスはインクリメンタ
/デクリメンタ3に与えられる。
されるアドレスを格納保持している。格納保持されたア
ドレスは、RAM1における第1のポートのA1に与えられ
る。さらに、格納保持されたアドレスはインクリメンタ
/デクリメンタ3に与えられる。
インクリメンタ/デクリメンタ3は、スタックポインタ
2から与えられるアドレスを、“1"だけインクリメント
するか、あるいは“1"だけデクリメントする。インクリ
メンタ/デクリメンタ3は、インクリメントしたアドレ
スあるいはデクリメントしたアドレスをスタックポイン
タ2に与える。また、デクリメントされたアドレスは、
RAM1における第2のポートのA2に与えられる。
2から与えられるアドレスを、“1"だけインクリメント
するか、あるいは“1"だけデクリメントする。インクリ
メンタ/デクリメンタ3は、インクリメントしたアドレ
スあるいはデクリメントしたアドレスをスタックポイン
タ2に与える。また、デクリメントされたアドレスは、
RAM1における第2のポートのA2に与えられる。
このような構成においては、PUSH/POPが確定される前に
スタックメモリのアクセス動作が開始される。アクセス
動作が開始されると、スタックポインタ2からアドレス
(N)がRAM1のA1に与えられて、このアドレス(N)に
D1から与えられたデータがRAM1に書きこまれる。
スタックメモリのアクセス動作が開始される。アクセス
動作が開始されると、スタックポインタ2からアドレス
(N)がRAM1のA1に与えられて、このアドレス(N)に
D1から与えられたデータがRAM1に書きこまれる。
このようなPUSH動作と同時に、スタックポインタ2のア
ドレス(N)がインクリメンタ/デクリメンタ3に与え
れて、“1"だけデクリメントされ、デクリメントされた
アドレス(N−1)がRAM1のA2に与えられ、このアドレ
ス(N−1)に格納保持されていたデータがRAM1のD2か
らPOPデータとして読出される。
ドレス(N)がインクリメンタ/デクリメンタ3に与え
れて、“1"だけデクリメントされ、デクリメントされた
アドレス(N−1)がRAM1のA2に与えられ、このアドレ
ス(N−1)に格納保持されていたデータがRAM1のD2か
らPOPデータとして読出される。
このようにして、PUSHとPOPが同時に開始されて、PUSH
あるいあPOPが確定されると、スタックポインタ2のア
ドレス(N)が更新される。すなわち、PUSHの場合に
は、スタックポインタ2のアドレス(N)がインクリメ
ンタ3に与えられて、“1"だけインクリメントされ、イ
ンクリメントされたアドレス(N+1)がスタックポイ
ンタ2に与えられて、次のアクセス動作のアドレスとし
て格納保持される。これにより、アドレスNにデータを
書き込んだPUSH動作が有効となる。
あるいあPOPが確定されると、スタックポインタ2のア
ドレス(N)が更新される。すなわち、PUSHの場合に
は、スタックポインタ2のアドレス(N)がインクリメ
ンタ3に与えられて、“1"だけインクリメントされ、イ
ンクリメントされたアドレス(N+1)がスタックポイ
ンタ2に与えられて、次のアクセス動作のアドレスとし
て格納保持される。これにより、アドレスNにデータを
書き込んだPUSH動作が有効となる。
一方、POPの場合には、POPの際のアドレス(N−1)が
インクリメンタ/デクリメンタ3からスタックポインタ
2に与えられて、次のアクセス動作のアドレスとして格
納保持される。これにより、アドレスNにデータを書き
込んだPUSH動作は無効となり、アドレス(N−1)から
データを読み出したPOP動作が有効となる。
インクリメンタ/デクリメンタ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であり、入出力端子はそれぞれ
別々になっている。なお、入出力端子が共通であっても
かまわない。RAM5は、偶バンク10と奇バンク11とから構
成されており、それぞれのバンクには共通のPUSHするデ
ータが与えられ、それぞれのバンクからそれぞれ独立し
てデータが読出されるように構成されている。
別々になっている。なお、入出力端子が共通であっても
かまわない。RAM5は、偶バンク10と奇バンク11とから構
成されており、それぞれのバンクには共通のPUSHするデ
ータが与えられ、それぞれのバンクからそれぞれ独立し
てデータが読出されるように構成されている。
偶バンク10は、スタックメモリの全体としてのアドレス
のうち偶数アドレスが割付けられており、偶数アドレス
に対応したデータの入出力が行なわれる。
のうち偶数アドレスが割付けられており、偶数アドレス
に対応したデータの入出力が行なわれる。
一方、奇バンク11は、スタックメモリの全体としてのア
ドレスのうち奇数アドレスが割付けられており、奇数ア
ドレスに対応したデータの入出力が行なわれる。
ドレスのうち奇数アドレスが割付けられており、奇数ア
ドレスに対応したデータの入出力が行なわれる。
したがって、偶バンク10のアドレスpは、スタックメモ
リの全体としてのアドレス(2p)に対応し、奇バンク11
のアドレスqは、スタックメモリの全体としてのアドレ
ス(2q+1)に対応する。このような偶バンク10及び奇
バンク11は、スタックメモリ全体としてのアドレス、す
なわちスタックポインタ6の指示するアドレスが偶数の
場合は、偶バンク10がPOPされ、奇バンク11がPUSHされ
る。一方、スタックポインタ6の指示するアドレスが奇
数の場合には、偶バンク10がPUSHされ、奇バンク11がPO
Pされる。
リの全体としてのアドレス(2p)に対応し、奇バンク11
のアドレスqは、スタックメモリの全体としてのアドレ
ス(2q+1)に対応する。このような偶バンク10及び奇
バンク11は、スタックメモリ全体としてのアドレス、す
なわちスタックポインタ6の指示するアドレスが偶数の
場合は、偶バンク10がPOPされ、奇バンク11がPUSHされ
る。一方、スタックポインタ6の指示するアドレスが奇
数の場合には、偶バンク10がPUSHされ、奇バンク11がPO
Pされる。
スタックポインタ6は、スタックメモリ全体としてのア
ドレスを格納保持するものであり、POPするデータを指
示するアドレスを格納保持している。このため、PUSHす
るデータを指示するアドレスは、スタックポインタ6の
アドレスをSPとすると、(SP+1)となる。
ドレスを格納保持するものであり、POPするデータを指
示するアドレスを格納保持している。このため、PUSHす
るデータを指示するアドレスは、スタックポインタ6の
アドレスをSPとすると、(SP+1)となる。
スタックポインタ6は、そのアドレスが偶数(2r)であ
る場合は、POPされるデータは偶バンク10のr番地とな
り、PUSHされるデータは奇バンク11のr番地となる。一
方、スタックポインタ6は、そのアドレスが奇数(2r+
1)である場合には、POPされるデータは奇バンク11の
r番地となり、PUSHされるデータは偶バンクの(r+
1)番地となる。
る場合は、POPされるデータは偶バンク10のr番地とな
り、PUSHされるデータは奇バンク11のr番地となる。一
方、スタックポインタ6は、そのアドレスが奇数(2r+
1)である場合には、POPされるデータは奇バンク11の
r番地となり、PUSHされるデータは偶バンクの(r+
1)番地となる。
したがって、奇バンク11には、スタックポインタ6のア
ドレスが偶数(2r)あるいは奇数(2r+1)であって
も、上述したr番地のアドレスが与えられるようにすれ
ばよい。ここで、r番地はスタックポインタ6のアドレ
ス(SP)の1/2の値となる。これにより、スタックポイ
ンタ6のアドレスの全ビットのうち最下位ビット(S
PL)を除いたビット例のアドレス(SPM)は、全ビット
のアドレスの1/2となるので、スタックポインタ6のア
ドレスの最下位ビットを除いたアドレス(SPM)が奇バ
ンク11に与えられる。
ドレスが偶数(2r)あるいは奇数(2r+1)であって
も、上述したr番地のアドレスが与えられるようにすれ
ばよい。ここで、r番地はスタックポインタ6のアドレ
ス(SP)の1/2の値となる。これにより、スタックポイ
ンタ6のアドレスの全ビットのうち最下位ビット(S
PL)を除いたビット例のアドレス(SPM)は、全ビット
のアドレスの1/2となるので、スタックポインタ6のア
ドレスの最下位ビットを除いたアドレス(SPM)が奇バ
ンク11に与えられる。
一方、偶バンク10では、スタックポインタ6のアドレス
が偶数(2r)の場合はr番地のアドレス、奇数(2r+
1)の場合には(r+1)番地のアドレスが与えられる
ようにすればよい。これを実現するために、スタックポ
インタ6のアドレスから最下位ビット(SPL)を除いた
アドレス(SPM)に最下位ビット(SPL)を加算器8によ
って加え、その値をアドレスとして偶バンク10に与えれ
ばよい。
が偶数(2r)の場合はr番地のアドレス、奇数(2r+
1)の場合には(r+1)番地のアドレスが与えられる
ようにすればよい。これを実現するために、スタックポ
インタ6のアドレスから最下位ビット(SPL)を除いた
アドレス(SPM)に最下位ビット(SPL)を加算器8によ
って加え、その値をアドレスとして偶バンク10に与えれ
ばよい。
このような操作にあって、スタックポインタ6のアドレ
スが偶数(2r)の場合は、最下位ビット(SPL)は“0"
となるため、アドレス(SPM)と最下位ビット(SPL)の
加算結果(SPM+SPL)は“r"となり、この加算結果がア
ドレスのr番地として偶バンク10に与えられる。一方、
スタックポインタ6のアドレスが奇数(2r+1)の場合
には、最下位ビット(SPL)は“1"となるので、アドレ
ス(SPM)と最下位ビット(SPL)の加算結果(SPM+S
PL)は、“r+1"となり、この加算結果がアドレスの
(r+1)番地として偶バンク10に与えられる。
スが偶数(2r)の場合は、最下位ビット(SPL)は“0"
となるため、アドレス(SPM)と最下位ビット(SPL)の
加算結果(SPM+SPL)は“r"となり、この加算結果がア
ドレスのr番地として偶バンク10に与えられる。一方、
スタックポインタ6のアドレスが奇数(2r+1)の場合
には、最下位ビット(SPL)は“1"となるので、アドレ
ス(SPM)と最下位ビット(SPL)の加算結果(SPM+S
PL)は、“r+1"となり、この加算結果がアドレスの
(r+1)番地として偶バンク10に与えられる。
また、スタックポインタ6は、そのアドレスの最下位ビ
ット(SPL)が偶バンク10及びセレクタ9に、最下位ビ
ットを反転した反転最下位ビット(▲▼)が奇バ
ンク11に与えられる。偶バンク10、奇バンク11及びセレ
クタ9は、与えられる最下位ビット(SPL)の値に基づ
いて、スタックポインタ6のアドレスが偶数であるか奇
数であるかを判別して、判別結果に応じてそれぞれ対応
する動作が行なわれる。
ット(SPL)が偶バンク10及びセレクタ9に、最下位ビ
ットを反転した反転最下位ビット(▲▼)が奇バ
ンク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データとし
ている。セレクタ9は、スタックポインタ6のアドレス
が偶数で最下位ビット(SPL)の値が“0"の場合には、
偶バンク10から読出されたデータを選択し、スタックポ
インタ6のアドレスが奇数で最下位ビット(SPL)の値
が“1"の場合には、奇バンク11から読出されたデータを
選択する。
ンク11から読出されたデータを、スタックポインタ6か
ら与えられる最下位ビット(SPL)の値に基づいて選択
し、選択したデータをスタックメモリのPOPデータとし
ている。セレクタ9は、スタックポインタ6のアドレス
が偶数で最下位ビット(SPL)の値が“0"の場合には、
偶バンク10から読出されたデータを選択し、スタックポ
インタ6のアドレスが奇数で最下位ビット(SPL)の値
が“1"の場合には、奇バンク11から読出されたデータを
選択する。
このような構成において、スタックポインタ6のアドレ
スが偶数(2r)の場合は、アクセス動作のアドレスとし
て、偶バンク10には加算器8の出力としてアドレス(SP
M)のr番地が与えられ、奇バンク11にはスタックポイ
ンタ6のアドレスから最下位ビットを除いたアドレス
(SPM)のr番地が与えられる。SPL,▲▼即ち
“φ",“1"が偶奇それぞれのバンクにRW制御信号として
与えられ、偶バンクが読み出し、奇バンクが書き込みで
あることを指示する。
スが偶数(2r)の場合は、アクセス動作のアドレスとし
て、偶バンク10には加算器8の出力としてアドレス(SP
M)のr番地が与えられ、奇バンク11にはスタックポイ
ンタ6のアドレスから最下位ビットを除いたアドレス
(SPM)のr番地が与えられる。SPL,▲▼即ち
“φ",“1"が偶奇それぞれのバンクにRW制御信号として
与えられ、偶バンクが読み出し、奇バンクが書き込みで
あることを指示する。
これにより、偶バンク10では与えられたアドレス(r番
地)からデータが読出され、奇バンク11では与えられた
アドレス(r番地)に外部から与えられたPUSHデータが
書き込まれる。偶バンク10から読出されたデータはセレ
クタ9により選択され、スタックメモリのPOPデータと
して出力される。
地)からデータが読出され、奇バンク11では与えられた
アドレス(r番地)に外部から与えられたPUSHデータが
書き込まれる。偶バンク10から読出されたデータはセレ
クタ9により選択され、スタックメモリのPOPデータと
して出力される。
このような動作は、偶バンク10と奇バンク11を1つのRA
M5として見た場合に、スタックメモリ全体としてのアド
レス(2r)からデータをPOPして、スタックメモリ全体
としてのアドレス(2r+1)にデータをPUSHしたことと
等価となり、スタックポインタ6のアドレスで指示され
るデータのPOPと、そのアドレスに“1"を加えたアドレ
スへのデータのPUSHを同時に実行したことになる。
M5として見た場合に、スタックメモリ全体としてのアド
レス(2r)からデータをPOPして、スタックメモリ全体
としてのアドレス(2r+1)にデータをPUSHしたことと
等価となり、スタックポインタ6のアドレスで指示され
るデータのPOPと、そのアドレスに“1"を加えたアドレ
スへのデータのPUSHを同時に実行したことになる。
このようなアクセス動作が開始された後、PUSHあるいは
POPが確定すると、スタックポインタ6のアドレスが更
新される。すなわち、アクセス動作がPUSHの場合は、ス
タックポインタ6のアドレスはインクリメンタ/デクリ
メンタ7によって“1"だけインクリメントされて、イン
クリメントされたアドレスがスタックポインタ6に格納
保持され、PUSH動作が有効となる。一方、アクセス動作
がPOPの場合には、スタックポインタ6のアドレスはイ
ンクリメンタ/デクリメンタ7によって“1"だけデクリ
メントされて、デクリメントされたアドレスがスタック
ポインタ6に格納保持され、POP動作が有効となる。
POPが確定すると、スタックポインタ6のアドレスが更
新される。すなわち、アクセス動作がPUSHの場合は、ス
タックポインタ6のアドレスはインクリメンタ/デクリ
メンタ7によって“1"だけインクリメントされて、イン
クリメントされたアドレスがスタックポインタ6に格納
保持され、PUSH動作が有効となる。一方、アクセス動作
がPOPの場合には、スタックポインタ6のアドレスはイ
ンクリメンタ/デクリメンタ7によって“1"だけデクリ
メントされて、デクリメントされたアドレスがスタック
ポインタ6に格納保持され、POP動作が有効となる。
次に、スタックポインタ6のアドレスが奇数(2r+1)
の場合には、アクセス動作のアドレスとして、偶バンク
10には加算器8の出力としてアドレス(SPM+1)の
(r+1)番地が与えられ、奇バンク11にはスタックポ
インタ6のアドレスから最下位ビットを除いたアドレス
(SPM)のr番地が与えられる。SPL,▲▼即ち
“1",“φ”が偶奇それぞれのバンクにRW制御信号とし
て与えられ、偶バンクが書き込み、奇バンクが読み出し
であることを指示する。
の場合には、アクセス動作のアドレスとして、偶バンク
10には加算器8の出力としてアドレス(SPM+1)の
(r+1)番地が与えられ、奇バンク11にはスタックポ
インタ6のアドレスから最下位ビットを除いたアドレス
(SPM)のr番地が与えられる。SPL,▲▼即ち
“1",“φ”が偶奇それぞれのバンクにRW制御信号とし
て与えられ、偶バンクが書き込み、奇バンクが読み出し
であることを指示する。
これにより、偶バンク10では与えられたアドレス(r+
1番地)に外部から与えられたPUSHデータがPUSHされ、
奇バンク11では与えられたアドレス(r番地)からデー
タが読出される。奇バンク11から読出されたデータはセ
レクタ9によって選択され、スタックメモリのPOPデー
タとして出力される。
1番地)に外部から与えられたPUSHデータがPUSHされ、
奇バンク11では与えられたアドレス(r番地)からデー
タが読出される。奇バンク11から読出されたデータはセ
レクタ9によって選択され、スタックメモリのPOPデー
タとして出力される。
このような動作は、偶バンク10と奇バンク11を1つのRA
M5として見た場合に、スタックメモリ全体としてのアド
レス(2r+1)からデータをPOPして、スタックメモリ
全体としてのアドレス(2r+2)にデータをPUSHしたこ
とと等価となり、スタックポインタ6のアドレスで指示
されるデータのPOPと、そのアドレスに“1"を加えたア
ドレスへのデータのPUSHを同時に実行したことになる。
M5として見た場合に、スタックメモリ全体としてのアド
レス(2r+1)からデータをPOPして、スタックメモリ
全体としてのアドレス(2r+2)にデータをPUSHしたこ
とと等価となり、スタックポインタ6のアドレスで指示
されるデータのPOPと、そのアドレスに“1"を加えたア
ドレスへのデータのPUSHを同時に実行したことになる。
このようなアクセス動作が開始された後、PUSHあるいは
POPが確定すると、スタックポインタ6のアドレスが偶
数である場合と同様にしてスタックポインタ6のアドレ
スが更新される。
POPが確定すると、スタックポインタ6のアドレスが偶
数である場合と同様にしてスタックポインタ6のアドレ
スが更新される。
したがって、このような構成にあっても、PUSH動作とPO
P動作を同時に開始することが可能となり、両動作の確
定後に確定した動作を有効動作とすることができるよう
になる。
P動作を同時に開始することが可能となり、両動作の確
定後に確定した動作を有効動作とすることができるよう
になる。
次に、このようなスタックメモリを、システムに組み入
れ、再帰的なアルゴリズムを実行する場合について説明
する。
れ、再帰的なアルゴリズムを実行する場合について説明
する。
再帰的なアルゴリズムが例えば第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】読出し動作あるいは書込み動作が決定され
た後、決定された動作に応じて次に設定されるアドレス
が更新されるスタックポインタと、 データを指定するアドレスのうち偶数アドレスに対応す
るデータが入出力される偶数バンク及び奇数アドレスに
対応するデータが入出力される奇数バンクを備え、読出
し動作あるいは書込み動作決定前の前記スタックポイン
タのアドレスが偶数あるいは奇数かに応じて、前記偶数
バンクからデータを読出すと同時に前記奇数バンクにデ
ータを書込むか、あるいは、前記偶数バンクにデータを
書込むと同時に前記奇数バンクからデータを読出すRAM
と を有することを特徴とするスタックメモリ。
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 JPH0476884A (ja) | 1992-03-11 |
JPH0752576B2 true 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 |
Family Cites Families (3)
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 | メモリ制御装置 |
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
Also Published As
Publication number | Publication date |
---|---|
JPH0476884A (ja) | 1992-03-11 |
US5287309A (en) | 1994-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0752576B2 (ja) | スタックメモリ | |
US4435765A (en) | Bank interleaved vector processor having a fixed relationship between start timing signals | |
US5809274A (en) | Purge control for ON-chip cache memory | |
JPH0414385B2 (ja) | ||
JPS638952A (ja) | メモリのアドレス方法およびこの方法を用いたプロセッサ | |
EP0057096A2 (en) | Information processing unit | |
EP0426111B1 (en) | Memory control system | |
GB2274181A (en) | Summation unit. | |
US5247695A (en) | Vector processor with byte access of memory | |
US4561071A (en) | Storage system having buffer storage | |
JPS5814260A (ja) | デ−タ転送方式 | |
JP3042266B2 (ja) | メモリアクセス方法 | |
JP2874230B2 (ja) | マイクロコンピュータのメモリアドレッシング方式 | |
JPS6129031B2 (ja) | ||
JPH0218638A (ja) | データ制御システム | |
JPS60146362A (ja) | ベクトルレジスタの構成方式 | |
JPH0719221B2 (ja) | 記憶制御方式 | |
JPS63129438A (ja) | メモリ制御装置 | |
JPS6198467A (ja) | レジスタ構成方法 | |
JPS6054056A (ja) | ビットデ−タ書込メモリインタ−フェ−ス回路 | |
JP2591928B2 (ja) | キャッシュ記憶回路 | |
JPH031226A (ja) | データ処理装置 | |
JPH06318162A (ja) | メモリ装置 | |
JPH04255064A (ja) | 並列処理装置 | |
JPH0267654A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |