JP2000284966A - スタック・ポインタ管理 - Google Patents

スタック・ポインタ管理

Info

Publication number
JP2000284966A
JP2000284966A JP2000063229A JP2000063229A JP2000284966A JP 2000284966 A JP2000284966 A JP 2000284966A JP 2000063229 A JP2000063229 A JP 2000063229A JP 2000063229 A JP2000063229 A JP 2000063229A JP 2000284966 A JP2000284966 A JP 2000284966A
Authority
JP
Japan
Prior art keywords
instruction
stack
data
program counter
unit
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.)
Abandoned
Application number
JP2000063229A
Other languages
English (en)
Inventor
Gilbert Laurenti
ローランティ ジルベール
Walter A Jackson
エイ、ジャクソン ウォルター
Jack Rosenzweig
ロゼンズウェイグ ジャック
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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
Priority claimed from EP99400556A external-priority patent/EP0992897B1/en
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2000284966A publication Critical patent/JP2000284966A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Abstract

(57)【要約】 【課題】 無線電話用などのディジタル信号プロセッサ
(DSP)において、異なる世代のマイクロプロセッサ
の間でプログラムの互換性を保つために、スタックを用
いて変数をソフトウエア・ルーチンの間に渡す方法と装
置を提供する。 【解決手段】 このDSPは可変命令長でコード密度が
高く、プログラミングが容易であり、構造と命令集合は
DSPアルゴリズムを低い電力消費と高い効率で実行す
るよう最適化される。ユーザ・スタック領域910を用
いて変数をサブルーチンに渡し、プログラム・カウンタ
1000の第1の部分を表す値を保持する。システム・
スタック領域911を用いてプログラム・カウンタ10
01の残りの部分を表す値を保持し、また追加の文脈情
報を保持する。ユーザ・スタック領域とシステム・スタ
ック領域を独立に管理して、先行世代のプロセッサから
のソフトウエアがプロセッサ100上で走るように変換
する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本出願は、S.N.9940
0556.9、欧州において1999年3月8日出願
(TI−27760EU)、およびS.N.98402
455.4、欧州において1998年10月6日出願
(TI−28433EU)に対して先順位をクレームす
る。
【0002】本発明はプロセッサに関するもので、プロ
セッサ内で命令の実行中に変数を渡すスタックの管理に
関する。
【0003】
【従来の技術】マイクロプロセッサは汎用プロセッサで
あって、ソフトウエアを実行するために命令処理量が大
きいことが必要であり、使用するソフトウエア・アプリ
ケーションに従って広範囲の処理が必要になることがあ
る。変数をソフトウエア・ルーチンの間に次々に渡すた
めにスタックが用いられている。また、第1のソフトウ
エア・ルーチンが第2のソフトウエア・ルーチンをコー
ルするときにスタックを用いてプログラム・カウンタの
内容を保持しておけば、コールされた第2のルーチンが
完了した後でプログラム・フローを第1のソフトウエア
・ルーチンに復帰させることができる。第2のソフトウ
エア・ルーチン内のコールから更に第3のルーチンをコ
ールすることができる。
【0004】
【発明が解決しようとする課題】プロセッサには多くの
異なる種類があり、マイクロプロセッサはその1つに過
ぎない。例えば、ディジタル信号プロセッサ(DSP)
は、移動体処理などの特定のアプリケーションに広く用
いられている。一般にDSPは関係するアプリケーショ
ンの性能を最適にするように構成されており、このため
に専用の実行ユニットと命令集合を用いる。特に移動体
電気通信などのアプリケーションでは(これに限定され
るわけではないが)、電力消費をできるだけ小さく保ち
ながらDSPの性能を絶えず向上させることが望まれ
る。性能を改善する1つの方法は、大きな命令メモリを
用い、またプログラム・カウンタの長さを長くして、大
きな命令メモリに直接アドレスできるようにすることで
ある。しかしこの方法を用いると、異なる世代のマイク
ロプロセッサの間でプログラムの互換性がなくなる。
【0005】
【課題を解決するための手段】本発明の特定の好ましい
態様は添付の独立および従属クレームに示されている。
従属クレームの機能の組合せを独立クレームの機能に適
宜組み合わせて良く、必ずしもクレームに明示的に示し
てはいない。本発明は、プロセッサ(例えばディジタル
信号プロセッサ)の性能を向上させるためのものである
が、これに限定されるわけではない。
【0006】本発明の第1の態様では、高いコード密度
とプログラミングの容易さを兼ね備えたプログラマブル
・ディジタル信号プロセッサ(DSP)であるプロセッ
サを提供する。構成(アーキテクチャ)と命令集合は、
電力消費を低くし、また無線電話や専用の制御タスクの
ためのDSPアルゴリズムの実行の効率を高めるよう、
最適化されている。このプロセッサは、命令バッファ・
ユニットと、命令バッファ・ユニットが復号した命令を
実行するデータ計算ユニットを含む。プログラム・カウ
ンタは下位プログラム・カウンタ部と上位プログラム・
カウンタ部を有し、命令メモリに与える命令アドレスを
出す。第1のスタック・ポインタはデータ・メモリ内の
第1のスタック領域をアドレス指定して、マイクロプロ
セッサが実行する命令(例えばCALL命令)に応じて
下位プログラム・カウンタ値を保存する。第2のスタッ
ク・ポインタはデータ・メモリ内の第2のスタック領域
をアドレス指定して、CALL命令の実行に応じて上位
プログラム・カウンタ値を保存する。これにより、スタ
ックを介して変数を渡す先行世代のマイクロプロセッサ
とのソフトウエア・コードの互換性を保つ。
【0007】本発明の別の態様では、別の命令(例えば
PUSH命令)の実行に応じて、データ計算ユニットは
第1のスタック・ポインタに対するスタック・ポインタ
相対アドレスを用いて第1の変数値を下位プログラム・
カウンタ値に近い第1のスタック領域に記憶する。スタ
ック・ポインタ相対アドレスが第2のスタック領域内に
記憶されている上位プログラム・カウンタ値に影響され
ない点が優れている。
【0008】本発明の別の態様では、ディジタル装置を
操作する方法を提供する。プログラム・カウンタに応じ
てプロセッサ・コアに関連する命令メモリから取り出し
た複数の命令を、改善されたプロセッサ・コア内で実行
する。第1のスタック領域を形成して、第1のスタック
・ポインタを維持することによりプロセッサ・コアに関
連するデータ・メモリ内に複数のデータ値を保持する。
データ領域内の第1のスタック領域から離して第2のス
タック領域を形成して、第2のスタック・ポインタを維
持することにより第2の複数のデータ値を記憶する。デ
ータ計算ユニット内で実行する命令(例えばCALL)
に応じて、下位プログラム・カウンタ値を第1のスタッ
ク領域内に記憶する。CALL命令の実行に応じて、上
位プログラム・カウンタ値を第2のスタック領域内に記
憶する。命令(例えばPUSH命令)の実行に応じて、
第1のスタック・ポインタに対するスタック・ポインタ
相対アドレスを用いて第1の引数値を第1の下位プログ
ラム・カウンタ値に隣接して第1のスタック領域内に記
憶する。スタック・ポインタ相対アドレスは第2のスタ
ック領域内に記憶されている上位プログラム・カウンタ
値に影響されないので、先行世代のマイクロプロセッサ
のソフトウエア・コードを、改善されたマイクロプロセ
ッサに容易にポート(port)できる点が優れている。
【0009】本発明の別の形態では、PUSH命令の実
行に応じて、第2のスタック・ポインタに対するスタッ
ク・ポインタ相対アドレスを用いて文脈データ値を上位
プログラム・カウンタ値に隣接して記憶する。第1のス
タック領域内のスタック・ポインタ相対アドレスが第2
のスタック領域内に記憶されている文脈データ値に影響
されない点が優れている。このように、追加の文脈情報
を保存して機能を増やしながらソフトウエア・コードの
互換性を保つことができる。
【0010】
【発明の実施の形態】本発明は、例えば特殊用途向け集
積回路(ASIC)内に実現されるディジタル信号プロ
セッサ(DSP)に特に用いられるが、他の種類のプロ
セッサにも用いられる。
【0011】本発明によるプロセッサの一例の基本的構
成について以下に説明する。プロセッサ100は、可変
命令長(8ビットから48ビット)のプログラマブル固
定小数点DSPコアであって、コード密度が高くプログ
ラミングが容易である。構成および命令集合は、電力消
費を低くし、かつ、無線電話や専用の制御タスク用のよ
うなDSPアルゴリズムの実行の効率を高めるように、
最適化されている。プロセッサ100は、エミュレーシ
ョンおよびコード・デバッグの機能を含む。
【0012】図1は、本発明の一実施の形態によるディ
ジタル装置10の概略図である。ディジタル装置は、プ
ロセッサ100とプロセッサ・バックプレーン20とを
含む。本発明の特定の例では、ディジタル装置は、特殊
用途向け集積回路(ASIC)で実現されたディジタル
信号プロセッサ装置10である。簡単のために、図1
は、本発明の実施の形態を理解するのに必要なマイクロ
プロセッサ100のそれらの部分だけを示す。DSPの
一般的な構造の詳細は良く知られているので、別の文献
を参照していただきたい。例えば、Frederick Boutaud
らに発行された米国特許第5,072,418号はDS
Pについて詳細に説明しているので、ここに援用する。
Gary Swobodaらに発行された米国特許第5,329,4
71号はDSPを試験しエミュレートする方法について
詳細に説明しているので、ここに援用する。マイクロプ
ロセッサ技術の当業者が本発明を製作し使用することが
できるように、本発明の一実施の形態に関するマイクロ
プロセッサ100の一部の詳細について以下に説明す
る。
【0013】本発明の態様の恩恵を被ることのできるい
くつかの例示の装置は、ここに援用した米国特許第5,
072,418号に、特に米国特許第5,072,41
8号の図2から図18を参照して述べられている。性能
を向上させコストを削減する本発明の態様を組み込んだ
マイクロプロセッサを用いれば、米国特許第5,07
2,418号に述べられた装置を更に改善することがで
きる。かかる装置は、これらに限定されるわけではない
が、工業的プロセス制御,自動車システム,モータ制
御,ロボット制御装置,衛星通信システム,エコー消去
装置,モデム,ビデオ映像装置,音声認識装置,暗号化
されたボコーダ・モデム装置などを含む。図1のマイク
ロプロセッサの種々の構造の特徴の説明および命令の完
全な集合の説明は、本出願人に譲渡された出願番号第0
9/410,977号(TI−28433)に述べられ
ているので、これをここに援用する。
【0014】図1に示すように、プロセッサ100は、
プロセッサ・コア102と、プロセッサ・コア102を
プロセッサ・コア102の外部にあるメモリ・ユニット
とインターフェースするメモリ・インターフェース・ユ
ニット104とを有する中央処理装置(CPU)を形成
する。プロセッサ・バックプレーン20は、プロセッサ
のメモリ管理ユニット104が接続されたバックプレー
ン・バス22を含む。バックプレーン・バス22には、
命令キャッシュ・メモリ24,周辺装置26および外部
インターフェース28も接続されている。理解されるよ
うに、他の例では、異なる構成および/または異なる技
術を用いて本発明を実現することができる。例えば、プ
ロセッサ100は、プロセッサ・バックプレーン20を
そこから分離して、第1の集積回路を形成してもよい。
例えば、プロセッサ100は、バックプレーン・バス2
2と周辺および外部インターフェースとを支援するバッ
クプレーン20から離してその上に取り付けたDSPで
あってもよい。例えば、プロセッサ100は、DSPで
はなくマイクロプロセッサでもよいし、また、ASIC
技術以外の技術で実現してもよい。このプロセッサまた
はこのプロセッサを含むプロセッサを1つ以上の集積回
路に実現してもよい。
【0015】図2は、プロセッサ・コア102の一実施
の形態の基本構造を示す。図示するように、プロセッサ
・コア102のこの実施の形態は、4つの要素、すなわ
ち、命令バッファ・ユニット(Iユニット)106と3
つの実行ユニットとを含む。実行ユニットは、プログラ
ム・フロー・ユニット(Pユニット)108と、アドレ
ス・データ・フロー・ユニット(Aユニット)110
と、命令バッファ・ユニット(Iユニット)106から
復号された命令を実行するとともにプログラム・フロー
を制御し監視するデータ計算ユニット(Dユニット)1
12とである。
【0016】図3は、プロセッサ・コア102のPユニ
ット108,Aユニット110およびDユニット112
をもっと詳細に示す図であり、また、プロセッサ・コア
102の種々の要素を接続するバス構造を示す。Pユニ
ット108は、例えば、ループ制御回路と、GoTo/
分岐制御回路と、反復カウンタ・レジスタや割込みマス
ク,フラグまたはベクトル・レジスタのようなプログラ
ム・フローを制御し監視する種々のレジスタとを含む。
Pユニット108は、汎用データ書込みバス(EB,F
B)130,132と、データ読取りバス(CB,D
B)134,136と、アドレス定数バス(KAB)1
42とに結合されている。また、Pユニット108は、
CSR,ACBおよびRGDとラベルされた種々のバス
を介してAユニット110およびDユニット112内の
サブユニットに結合されている。
【0017】図3に示すように、この実施の形態では、
Aユニット110はレジスタ・ファイル30とデータ・
アドレス生成サブユニット(DAGEN)32と算術・
論理演算ユニット(ALU)34とを含む。Aユニット
・レジスタ・ファイル30は種々のレジスタを含む。例
えば、16ビット・ポインタ・レジスタ(AR0〜AR
7)と、データ・フローおよびアドレス生成にも用いら
れるデータ・レジスタ(DR0〜DR3)とである。ま
た、レジスタ・ファイルは、16ビット循環バッファ・
レジスタと7ビットのデータ・ページ・レジスタとを含
む。汎用バス(EB,FB,CB,DB)130,13
2,134,136の他に、データ定数バス140およ
びアドレス定数バス142もAユニット・レジスタ・フ
ァイル30に結合されている。Aユニット・レジスタ・
ファイル30は、それぞれ逆方向に動作する一方向バス
144,146を介してAユニットDAGENユニット
32に結合されている。DAGENユニット32は、例
えば処理エンジン100内のアドレス生成を制御し監視
する16ビット・X/Yレジスタと係数/スタック・ポ
インタ・レジスタとを含む。
【0018】Aユニット110は、加算,減算およびA
ND,OR,XOR論理演算子のようなALUに一般に
関連する機能とともにシフタ機能を含むALU34も含
む。ALU34は、汎用バス(EB,DB)130,1
36および命令定数データ・バス(KDB)140にも
結合されている。AユニットALUは、PDAバスを介
してPユニット108に結合されて、Pユニット108
レジスタ・ファイルからレジスタ定数を受ける。ALU
34は、バスRGA,RGBを介してAユニット・レジ
スタ・ファイル30にも結合されて、アドレスおよびデ
ータ・レジスタの内容を受けるとともに、バスRGDを
介してレジスタ・ファイル30のアドレスおよびデータ
・レジスタの内容を転送する。
【0019】本発明の例示の実施の形態によれば、Dユ
ニット112は、Dユニット・レジスタ・ファイル36
と、DユニットALU38と、Dユニット・シフタ40
と、2つの乗算および累算ユニット(MAC1,MAC
2)42,44とを含む。Dユニット・レジスタ・ファ
イル36とDユニットALU38とDユニット・シフタ
40とはバス(EB,FB,CB,DB,KDB)13
0,132,134,136,140に結合され、ま
た、MACユニット42,44はバス(CB,DB,K
DB)134,136,140とデータ読取りバス(B
B)144とに結合されている。Dユニット・レジスタ
・ファイル36は、40ビット累算器(AC0〜AC
3)と16ビット遷移レジスタとを含む。Dユニット1
12は、40ビット累算器の他に、発信元レジスタまた
は宛先レジスタとしてAユニット110の16ビット・
ポインタおよびデータ・レジスタも用いる。Dユニット
・レジスタ・ファイル36は、累積器書込みバス(AC
W0,ACW1)146,148を介してDユニットA
LU38とMAC1 42とMAC2 44とからデー
タを受け、また、累積器書込みバス(ACW1)148
を介してDユニット・シフタ40からデータを受ける。
データは、Dユニット・レジスタ・ファイル累積器から
累積器読取りバス(ACR0,ACR1)150,15
2を介してDユニットALU38,Dユニット・シフタ
40,MAC1 42およびMAC2 44に読み取ら
れる。DユニットALU38およびDユニット・シフタ
40は、EFC,DRB,DR2およびACBとラベル
された種々のバスを介してAユニット108のサブユニ
ットにも結合されている。
【0020】図4を参照すると、32語の命令バッファ
待ち行列(IBQ)502を含む本発明による命令バッ
ファ・ユニット106が示されている。IBQ502
は、8ビット・バイト506に論理的に分割された32
×16ビットのレジスタ504を含む。命令は、32ビ
ットのプログラム・バス(PB)122を介してIBQ
502に到着する。命令は、ローカル書込みプログラム
・カウンタ(LWPC)532によって指し示される位
置に32ビット・サイクルで取り出される。LWPC5
32は、Pユニット108にあるレジスタに含まれてい
る。Pユニット108も、ローカル読取りプログラム・
カウンタ(LRPC)536レジスタと、書込みプログ
ラム・カウンタ(WPC)530レジスタと、読取りプ
ログラム・カウンタ(RPC)534レジスタとを含
む。LRPC536は、命令デコーダ512,514に
ロードされるべき次の命令のIBQ502内の位置を指
し示す。すなわち、LRPC536は、デコーダ51
2,514に現在ディスパッチされている命令のIBQ
502内の位置を指し示す。WPCは、プログラム・メ
モリにおけるパイプライン用の次の4バイトの命令コー
ドの開始アドレスを指し示す。IBQに取り出す度に、
プログラム・メモリからの次の4バイトが命令境界に関
わらず取り出される。RPC534は、デコーダ512
/514に現在ディスパッチされている命令のプログラ
ム・メモリのアドレスを指し示す。
【0021】この実施の形態では、命令は、48ビット
語で形成され、マルチプレクサ520,521を介して
48ビットのバス516により命令デコーダ512,5
14にロードされる。当業者には明らかなように、命令
は48ビット以外で構成された語に形成されてもよく、
本発明は上述した特定の実施の形態に限定されるもので
はない。
【0022】現在好ましいとされる48ビット語サイズ
に対して、バス516は、任意の1命令サイクル中に最
大2命令(デコーダ当たり1命令)をロードすることが
できる。命令の組合せは、48ビットのバスに適合する
任意の書式(8,16,24,32,40および48ビ
ット)の組合せでよい。1サイクル中に1命令だけをロ
ードする場合は、デコーダ2 514よりデコーダ1
512の方を優先してロードする。次に、各命令が、そ
れらを実行するとともに、命令または操作が実行される
べきデータをアクセスするために、各機能ユニットに送
られる。命令デコーダに渡される前に、命令はバイト境
界上で整列される。整列は、その復号中に前の命令に対
して得られた書式に基づいて行われる。バイト境界との
命令の整列に関連する多重化はマルチプレクサ520,
521で行われる。
【0023】プロセッサ・コア102は7段階のパイプ
ラインにより命令を実行する。その各段階について、表
1と図5を参照して以下に説明する。どこ(Aユニット
かDユニット)で実行するかに関わらず、7段階のパイ
プラインによりプロセッサ命令を実行する。本発明の一
態様によれば、プログラム・コード・サイズを小さくす
るために、CコンパイラはAユニットでの実行のために
できるだけ多くの命令をディスパッチするので、Dユニ
ットは、電力を節約するために電源を切られてもよい。
このため、Aユニットは、メモリ・オペランドで実行さ
れる基本的動作を支援する必要がある。
【0024】
【表1】
【0025】パイプラインの第1段階は、事前取出し
(P0)段階202であり、この段階中では、メモリ・
インターフェース104のアドレス・バス(PAB)1
18上にアドレスを表明することによって、次のプログ
ラム・メモリ位置がアドレスされる。次の段階の取出し
(P1)段階204では、プログラム・メモリが読み取
られ、メモリ・インターフェース・ユニット104から
PBバス122を介してIユニット106が満たされ
る。事前取出しおよび取出し段階は、他のパイプライン
段階から切り離されており、事前取出しおよび取出し段
階中はパイプラインに割り込んで、連続したプログラム
・フローを中断するとともに、プログラム・メモリ内の
別の命令(例えば、分岐命令)を指し示すことができ
る。
【0026】次に、第3段階の復号(P2)段階206
では、命令バッファ内の次の命令がデコーダ512/5
14にディスパッチされ、命令が復号されるとともにそ
の命令を実行する実行ユニット(例えば、Pユニット1
08,Aユニット110またはDユニット112)にデ
ィスパッチされる。復号段階206は、命令の種類を示
す第1の部分と命令の書式を示す第2の部分と命令用の
アドレス指定モードを示す第3の部分とを含む命令の少
なくとも一部を復号することを含む。次の段階はアドレ
ス(P3)段階208であり、そこでは、命令で用いら
れるべきデータのアドレスが計算されるか、命令がプロ
グラムの分岐またはジャンプを必要とする場合は新しい
プログラム・アドレスが計算される。各計算はAユニッ
ト110またはPユニット108でそれぞれ行う。
【0027】アクセス(P4)段階210では、読取り
オペランドのアドレスが生成され、また、そのアドレス
がYmem間接アドレス指定モードでDAGEN Yオ
ペレータで生成されているメモリ・オペランドが、間接
的にアドレスされたYメモリ(Ymem)から読み取ら
れる。パイプラインの次の段階は、そのアドレスがXm
em間接アドレス指定モードでDAGEN X内でまた
は係数アドレス・モードでDAGEN Cオペレータで
生成されているメモリ・オペランドが読み取られる読取
り(P5)段階212である。命令の結果が書き込まれ
るべきメモリ位置のアドレスが生成される。
【0028】最後は、Aユニット110またはDユニッ
ト112のいずれかで命令が実行される実行(P6)段
階214である。次に、その結果がデータ・レジスタす
なわち累算器に記憶されるか、読取り/変更/書込み命
令用のメモリに書き込まれる。更に、シフト操作が、実
行段階中に累算器でデータについて行われる。プロセッ
サ100のパイプラインは保護されている。これによ
り、NOP命令が待ち時間の要求を満たすために挿入さ
れる必要がなくなるので、Cコンパイラ性能が大幅に向
上する。また、これにより、前の生成プロセッサから後
の生成プロセッサへのコード変換が非常に容易になる。
【0029】プロセッサ100で用いられるパイプライ
ン保護の基本的規則は、次の通りである。実行中の読取
りアクセスが終了する前に書込みアクセスが開始され、
かつ、両方のアクセスが同じ資源を共用する場合は、追
加のサイクルが挿入されて、書込みを完了させ、更新さ
れたオペランドで次の命令を実行することができるよう
にするが、エミュレーションについては、単一ステップ
・コード実行がフリーランニング・コード実行と全く同
様に行われなければならない。
【0030】パイプライン・プロセッサの動作の基本的
原理について、図5を参照して以下に説明する。図5か
ら分かるように、第1の命令302では、連続するパイ
プライン段階が時間T1〜T7の間に実行される。各時間
は、プロセッサ・マシン・クロックの1クロック・サイ
クルである。第2の命令304は、時間T2にパイプラ
インに入ることができる。なぜなら、前の命令はすでに
次のパイプライン段階に移っているからである。命令3
(306)では、事前取出し段階202が時間T3に起
こる。図5から分かるように、第7段階のパイプライン
では、7命令全部を同時に処理することができる。7つ
の命令302〜314全部に対して、図5は、時間T7
で処理中であるそれらすべてを示す。このような構造
は、命令の処理に並列形式を付加する。
【0031】図6に示すように、本発明のこの実施の形
態は、24ビットのアドレス・バス118および32ビ
ットの双方向データ・バス120を介して外部プログラ
ム記憶ユニット150に結合されているメモリ・インタ
ーフェース・ユニット104を含む。また、メモリ・イ
ンターフェース・ユニット104は、24ビットのアド
レス・バス114および双方向の16ビットのデータ・
バス116を介してデータ記憶ユニット151に結合さ
れている。メモリ・インターフェース・ユニット104
は、32ビットのプログラム読取りバス(PB)122
を介してマシン・プロセッサ・コア102のIユニット
106にも結合されている。Pユニット108,Aユニ
ット110およびDユニット112は、データ読取りお
よびデータ書込みバスとこれに対応するアドレスバスと
を介してメモリ・インターフェース・ユニット104に
結合されている。Pユニット108はプログラム・アド
レス・バス128に更に結合されている。
【0032】より詳しく述べると、Pユニット108
は、24ビットのプログラム・アドレス・バス128と
2つの16ビットのデータ書込みバス(EB,FB)1
30,132と2つの16ビットのデータ読取りバス
(CB,DB)134,136とを介してメモリ・イン
ターフェース・ユニット104に結合されている。Aユ
ニット110は、2つの24ビットのデータ書込みアド
レス・バス(EAB,FAB)160,162と2つの
16ビットのデータ書込みバス(EB,FB)130,
132と3つのデータ読取りアドレス・バス(BAB,
CAB,DAB)164,166,168と2つの16
ビットのデータ読取りバス(CB,DB)134,13
6とを介してメモリ・インターフェース・ユニット10
4に結合されている。Dユニット112は、2つのデー
タ書込みバス(EB,FB)130,132と3つのデ
ータ読取りバス(BB,CB,DB)144,134,
136とを介してメモリ・インターフェース・ユニット
104に結合されている。
【0033】図6は、124でIユニット106からP
ユニット108への命令の受け渡し、例えば分岐命令を
送ることを表す。また、図6は、126および128で
Iユニット106からAユニット110およびDユニッ
ト112へのデータの受け渡しを表す。
【0034】図7に示すように、プロセッサ100は統
一プログラム/データ空間の周りに組織化されている。
プログラム・ポインタは、内部では24ビットであっ
て、バイトアドレス指定機能を持つが、プログラムの取
出しが常に32ビット境界で行われるので22ビットの
アドレスだけがメモリに送られる。しかし、例えばソフ
トウエア開発のためのエミュレーション中は、ハードウ
エア区切り点を実現するために全24ビットのアドレス
が与えられる。データ・ポインタは7ビットの主データ
・ページで拡張された16ビットであり、語アドレス指
定機能を有する。
【0035】ソフトウエアは最大3主データ・ページを
次のように定義する。 ・MDP 直接アクセス 間接アクセス CDP ・MDP05 − 間接アクセス AR[0〜5] ・MDP67 − 間接アクセス AR[6〜7] スタックは、維持されて、主データ・ページ0に常駐す
る。CPUメモリ・マップ・レジスタは全てのページか
ら見える。プロセッサ100の種々の態様を表2に要約
する。
【0036】
【表2】
【0037】本発明の1つの態様は、マイクロプロセッ
サの先行バージョンとマイクロプロセッサの改善された
バージョンの間のソフトウエア・コードの互換性を保つ
ことである。従来のスタック構造は16ビットの先行の
ファミリー・プロセッサと共に用いられているが、マイ
クロプロセッサの改善されたバージョンは16ビットの
プログラム・カウンタではなく24ビットのプログラム
・カウンタを用いるので、プロセッサ・スタック・ポイ
ンタはコード変換過程の間に発散する。スタック・ポイ
ンタの同期を保つことは、スタックを通してパラメータ
を正しく渡すための重要な変換要件である。本発明の諸
態様では、上の要件を満たすために2つの独立のポイン
タを用いてプロセッサ・スタックを管理する。すなわ
ち、図9と図10に示すユーザ・スタック・ポインタS
Pとシステム・スタック・ポインタSSPである。ユー
ザはシステム・スタック・ポインタをマッピング以外の
ために用いてはならない。
【0038】図8Aは、先行の世代のマイクロプロセッ
サに用いられているメモリ空間800内のスタック領域
810を示す。図ではスタックは語アドレス100から
始まっているが、スタックは別のアドレスから始まって
もよい。スタック・ポインタ802は、スタック領域内
に最後に記憶したデータ位置を「指す」アドレス値を含
む。一般に1つ以上の変数をスタックにプッシュしてか
らサブルーチンをコールする。コール命令はプログラム
・カウンタの値をスタックにプッシュするので、サブル
ーチンから復帰した後、命令の実行はその点から再開す
る。プログラム・カウンタ値は16ビット以下なので、
スタック内の1つの16ビット語内に収まる。
【0039】サブルーチン内では、次のコード・シーケ
ンスに示すように、スタック・ポインタ相対アドレス指
定を用いて変数にアドレスする。 push(DAx);var1,データ・アドレス・レ
ジスタx push(DAy);var2,データ・アドレス・レ
ジスタy ... call func_a;PC1をスタックにプッシュ
する ... ... func_a ACy=ACx+*SP(offset
_var1);アキュミュレータy、アキュミュレータ
x ACy=*SP(offset_var2)*ACy
【0040】上のコード・シーケンスでは、項「*SP
(offset_var1)」はスタック・ポインタS
Pに対して(offset_var1)だけ離れている
メモリ位置にあるデータ値を取り出すことを示す。コン
パイラは、コンパイル過程で各変数の相対アドレスを計
算する。図8Aに戻ってスタック・ポインタは、「ca
ll func_a」命令の実行に応じてプログラム・
カウンタPC1の値をプッシュした後でアドレスFEを
指す。この場合は、プッシュされた変数VAR1のスタ
ック・ポインタ相対アドレスは2である。したがって、
コンパイラは「offset_var1」の代わりに
「2」を挿入する。または、プログラマはアセンブリ言
語プログラムを手書きして、「offset_var
1」および「offset_var2」の正しいリテラ
ル・オフセット値を挿入する。
【0041】更に図8Aを参照すると、プログラム・カ
ウンタ値PC2、PC3、PC4をプッシュする各コー
ルの前に、異なる数の変数をスタックにプッシュして良
いことが分かる。しかし各事例においてスタック・ポイ
ンタSPは事前減分されていて、スタックにプッシュさ
れた最後の項目(FA、F8、F7など)をそれぞれ指
す。
【0042】図8Bは、拡張されたプログラム・カウン
タを記憶するスタック領域の例を示す略図である。この
場合はプログラム・カウンタは24ビットに拡張されて
いる。ここでプログラム・カウンタの値をスタックにプ
ッシュするには、アドレスFEとFDのように2つの1
6ビット・スタック語位置が必要である。したがって、
それより上のコード・セグメントが図8Aに示すような
スタックを持つ従来のプロセッサ用にコンパイルまたは
手書きされていて、これを図8Bに示すスタックを持つ
改善されたプロセッサで実行する場合に、サブルーチン
がスタック・ポインタ相対アドレス指定を用いると、コ
ンパイラが与える元のオフセット値が今は正しくないの
で誤りが発生する。したがってプログラムをコンパイル
し直さなければならない。これは欠点である。手書きの
アセンブリ言語コードの場合も同じである。アセンブラ
はプログラマが与えたリテラル・オフセットを訂正する
ことができないので、アセンブリ言語プログラムを人手
で苦労して変換しなければならない。アセンブラがオフ
セット値を与える場合でもプログラムを再アセンブルし
なければならない。これは欠点である。
【0043】図9は、本発明の諸態様に係る拡張された
プログラム・カウンタを記憶するための二重スタック領
域910、911を示す略図である。2つの領域は、メ
モリ空間900aと900bを含む隣接するメモリ空間
内にある。またはメモリ空間900aと900bは隣接
しないメモリ、または別個のメモリ空間内にあっても良
い。ユーザ・スタック領域910を用いて、変数とプロ
グラム・カウンタの第1の部分とを記憶し、先行世代の
プロセッサからの全てのスタック・ポインタ相対アドレ
ス・オフセットがそのまま有効であるようにする。シス
テム・スタック領域911を用いてプログラム・カウン
タの残りの部分を記憶する。図9では、プログラム・カ
ウンタの第1の部分はビット0−15を含み、残りの部
分は24ビットのプログラム・カウンタのビット16−
23を含む。しかし、ユーザ・スタックの1語位置だけ
を用いてプログラム・カウンタの第1の部分を記憶する
のであれば、プログラム・カウンタの分割はこれとは異
なって良い。
【0044】更に図9において、例えばアドレス200
に記憶されているcontext1で示すように、文脈
値もシステム・スタック領域内に記憶することができ
る。文脈値は、プログラム・カウンタをスタックにプッ
シュしたときの、マイクロプロセッサ内の種々の機能性
回路に関する状態情報を与える。文脈値は、プログラム
・フロー変更命令(例えばCALL)を実行するときに
記憶する。同様に文脈値は、割込みが発生し、この割込
みに応じてプログラム・カウンタ値をスタックにプッシ
ュするときに記憶する。文脈値の書式については後で詳
細に説明する。または文脈値は、割込みだけに応じて、
またはプログラム・フロー変更命令だけに応じて記憶し
て良い。種々の実施の形態において、文脈値はプログラ
ム・カウンタの最上位部と同じ語内に、または別個の語
内に記憶して良い。
【0045】スタックは次の事象のときに操作する。 (1) データをシステムおよびユーザ・スタックにプ
ッシュする割込み、intr()、trap()、ca
ll()などの命令。要素をスタック内に記憶する前に
SPとSSPを事前減分する。 (2) データをユーザ・スタックだけにプッシュする
push()命令。要素をスタック内に記憶する前にS
Pを事前減分する。 (3) データをシステムおよびユーザ・スタックから
ポップするreturn()命令。スタック要素をロー
ドした後にSPとSSPを事後増分する。 (4) データをユーザ・スタックだけからポップする
pop()命令。スタック要素をロードした後にSPを
事後増分する。 ユーザ・スタック・ポインタ(SP)は、直接モードで
単一データ・メモリ・オペランドにアクセスするのにも
用いる。
【0046】図10は、本発明の別の態様に係る、図1
のマイクロプロセッサのユーザ・スタック領域910と
システム・スタック領域911を示す略図である。両ス
タック・ポインタはユーザ・スタックにプッシュされた
最後の要素のアドレスを含む。プロセッサ100はスタ
ックに32ビット経路で接続し、高速で文脈を保存する
ことができる。
【0047】プロセッサ100は2x16ビットのメモ
リ読取り/書込みバスとデュアル読取り/書込みアクセ
スを利用して高速で文脈を保存する。例えば、1つの3
2ビット累積器または2つの独立なレジスタを、2つの
16ビットのメモリ書込みのシーケンスとして保存す
る。文脈保存ルーチンはシングルおよびダブルpush
()/pop()命令を混合することができる。pus
h/pop命令ファミリーはバイト書式を支援しない。
プログラム・フローにより駆動される文脈保存(コー
ル、割込み)では、プログラム・カウンタをPC[2
3:16]とPC[15:0]という2つのフィールド
に分割し、デュアル書込みアクセスとして保存する。フ
ィールドPC[15:0]はユーザ・スタックの、SP
がEB/EBAバスを介して指す位置に保存される。フ
ィールドPC[23:16]はスタックの、SSPがF
B/FBAバスを介して指す位置に保存される。表3は
コールおよび復帰命令の概要を示す。
【表3】
【0048】更に図10において、前に述べたように、
プログラム・カウンタ1000の第1の部分をユーザ・
スタックに記憶し、プログラム・カウンタ1001の残
りの部分をシステム・スタックに記憶する。前に述べた
ように、メモリ900にはEバス1010とFバス10
11を介して同時にアクセスすることができる。したが
って、プログラム・カウンタ1000、1001の両部
分は二重スタックとの間で書込みまたは読取りを同時に
行うことができるので、16ビットのプログラム・カウ
ンタだけを持つ従来のマイクロプロセッサに比べて性能
のロスがない。文脈保存中に最高の性能を得るには、ス
タックを二重アクセス・メモリ装置(instances)にマ
ップしなければならない。この実施の形態では、スタッ
ク領域を主データ・ページ0(64K語)内に保持す
る。しかし他の実施の形態では、スタック領域を別のメ
モリ領域内に置いて良い。大きなスタックを必要とする
アプリケーションでは、EとFの要求の矛盾を除去する
ため、特殊のマッピングを持つ2つの単一アクセス・メ
モリ装置(奇遇バンク)でこれを実現することができ
る。
【0049】スタック命令の概要を表4に示す。
【表4】
【0050】従来の生成デバイス原始コードに従って、
トランスレータは「ファーコール(far calls)」(2
4ビット・アドレス)を処理する必要がある。プロセッ
サ100の命令集合は、デュアル読取り/二重書込み方
式に基づいて特有のクラスのコール/復帰命令を支援す
る。変換されたコードは、同じSP事後変更にするため
にコールに加えてSP=SP+K8命令を実行する。
【0051】変換過程を行うと余分なCPU資源が必要
である場合は限られている。このようなマクロ内で割込
みを行う場合は、また割込みルーチンが同様なマクロを
含む場合は、変換された文脈保存シーケンスは更にpu
sh()命令を必要とする。これは、以前のファミリー
・プロセッサと現在のプロセッサ・スタック・ポインタ
はISR実行ウインドウ中にはもはや同期しないことを
意味する。全ての文脈保存をISRの初めに行うとする
と、割込みタスクの中のスタックを通る任意のパラメー
タは保存される。割込みから復帰すると、以前のファミ
リー・プロセッサと現在のプロセッサ・スタック・ポイ
ンタは同期に戻る。
【0052】図11は、図1のマイクロプロセッサ内の
アドレス生成を示すブロック図である。レジスタ・ファ
イル30はマイクロプロセッサ100の種々のレジスタ
を保持する。これはユーザ・スタック・ポインタ902
とシステム・スタック・ポインタ904を含む。ポイン
タ事後変更回路1102はバス1110を介してレジス
タ・ファイルに接続し、選択されたレジスタを選択され
た量だけ増分または減分する。変更されたレジスタ値は
バス1111を介してオペランド・アドレス計算回路1
104に送られる。オペランド・アドレス計算回路11
04は、前に述べたように実行中の命令のアドレス指定
モード(例えば、スタック・ポインタ相対アドレスをス
タック・ポインタに加算する)に応じて、選択されたレ
ジスタの値を変更する。適宜変更されたアドレス値をア
ドレス・レジスタ回路1106に記憶し、またアドレス
・バス1108に与えてメモリにアクセスする。アドレ
ス・バス1108は、図6の任意のアドレスバス16
0、162、164、166、168を表す。Aユニッ
トは16ビットの演算と8ビットのロード/記憶を支援
する。アドレス計算の多くは強力な変更子を持つDAG
ENが行う。全てのポインタ・レジスタとこれに関連す
るオフセット・レジスタは16ビットのレジスタで実現
される。16ビットのアドレスを主データ・ページに連
結して、24ビットのメモリ・アドレスを生成する。
【0053】図12は、図11のアドレス回路の一部の
一層詳細なブロック図である。アドレス生成は、論理算
術演算(逆キャリー伝播(reverse carry propagatio
n)付きまたは付きでないマスク、加算、減算)を計算
することにより行う。オペランドの選択はレジスタ・フ
ァイルで行う。アドレス生成は2段階で行う。すなわ
ち、レジスタ変更は変更回路1102で行い、オフセッ
ト計算は計算回路1104で行う。直接および絶対アド
レス指定はレジスタ変更を用いない(これらの場合、レ
ジスタ変更の結果は無視される)。
【0054】レジスタ変更は表5に示す信号で制御し、
オフセット変更は表6に示す信号で制御する。
【表5】
【表6】 X、Yおよび係数経路は非常に似ている。しかし係数経
路は変更子の限られた集合(事前変更なし)による間接
アドレス指定を支援するだけなので、非常に簡単であ
る。
【0055】更に図12において、オペランド・アドレ
ス計算回路1104はレジスタ値の事前増分/減分のた
めの加算/減算ユニット1200を含む。MUX120
2は変更されたレジスタ値を、バス1111を介して加
算器1200の第1の入力に与える。またMUX120
2は命令からのオフセット値を加算器1200の第1の
入力に与える。マスカー1204は加算器1200の第
2の入力に接続して、レジスタ・ファイルからレジスタ
の1つを選択することができる。計算されたアドレスを
調べて検出回路1206内のMMRを指すかどうかを判
定し、バス1112を介してアドレス・レジスタに送
る。
【0056】更に図12において、変更回路1102は
レジスタ・ファイル30からバス11110を介してレ
ジスタ値を受ける。このレジスタ値を、加算器/減算器
1210で増分または減分するか、またはマスク回路1
212でマスクした後で加算器/減算器1214で増分
/減分する。マルチプレクサ1216および1218
は、レジスタ・ファイル30を更新するために、またア
ドレス計算回路1104に送るために、変更された値の
経路をバス1111に導く。
【0057】図13は本発明の或る態様に係る、デュア
ル読取りまたは書込みトランザクションのために2つの
データ・バスにスタック・ポインタとシステム・スタッ
ク・ポインタを同時に与える、変更回路1102と計算
回路1104を通る経路だけを示すブロック図を示す。
前に述べた事前増分/減分に加えて、事後変更回路11
02によりスタック・ポインタSPを増分または減分す
る。MUX1300はユーザ・スタック・ポインタSP
またはシステム・スタック・ポインタSSPを選択し
て、バス1310を介してアドレス・レジスタをCバス
またはEバスにロードする。同様に、MUX1301は
ユーザ・スタック・ポインタSPまたはシステム・スタ
ック・ポインタSSPを選択して、バス1311を介し
てアドレス・レジスタをDバスまたはFバスにロードす
る。
【0058】図14は、マイクロプロセッサ100のパ
イプライン内のシングルおよびデュアル読取りおよび書
込みトランザクションを示すタイミング図である。この
図は、読取り用のCバスおよびDバスまたは書込み用の
EバスおよびFバスを用いる種々のメモリ読取り/書込
みトランザクションを示す。前に説明したように、パイ
プラインは7段階を有するが、ここには段階P1−P6
だけを示す。タイムライン1400−1414はそれぞ
れパイプライン内の単一クロック・サイクルを表し、種
々のメモリ・トランザクションがいつ起こるかを示す。
タイムライン1400は、読取り段階P5でDバスを用
いて起こるシングル読取りサイクルを示す。読取り段階
P5では、メモリ読取りはサイクルの前半(タイム・ス
ロット1420で示す)に行う。タイムライン1401
は、実行段階P6にスロット1422で起こるシングル
書込みトランザクションを示す。
【0059】タイムライン1404は、上に述べたよう
にスタック・ポインタSPとシステム・スタック・ポイ
ンタSSPを用いた同じサイクルでのユーザ・スタック
とシステム・スタックの読取りを示す。アクセス段階P
4の後半のタイム・スロット1423に、Cバスを用い
てスタックの1つをデータ・メモリ151から読み取
る。読取り段階P5の前半のタイム・スロット1424
に、Dバスを用いて他のスタックをデータ・メモリ15
1から読み取る。図13を参照して説明したアドレス回
路を用いて、どちらかのスタックをどちらかのパイプラ
イン段階で読み取ることができる点が優れている。アド
レス回路を簡単な方法で実現することのできる別の実施
の形態があるが、この柔軟性はない。
【0060】タイムライン1407は、前に説明したよ
うにスタック・ポインタSPとシステム・スタック・ポ
インタSSPを用いた同じサイクルでのユーザ・スタッ
クとシステム・スタックの書込みを示す。実行段階P6
の後半のタイム・スロット1425に、Eバスを用いて
スタックの1つをデータ・メモリ151に書き込む。次
の実行段階P6の前半のタイム・スロット1426に、
Fバスを用いて他のスタックをデータ・メモリ151に
書き込む。図13を参照して説明したアドレス回路を用
いて、どちらかのスタックにどちらかのパイプライン段
階で書き込むことができる点が優れている。アドレス回
路を簡単な方法で実現することのできる別の実施の形態
があるが、この柔軟性はない。
【0061】タイムライン1402はシフトのあるシン
グル書込みを示す。タイムライン1403はデュアル読
取りトランザクションを示す。タイムライン1405は
ダブル読取りトランザクションを示す。タイムライン1
406はデュアル書込みトランザクションを示す。タイ
ムライン1408はダブル書込みトランザクションを示
す。タイムライン1409は読取り/変更/書込みトラ
ンザクションを示す。タイムライン1410はデュアル
読取りおよび係数読取りを示す。タイムライン1411
はダブル読取り/書込みトランザクションを示す。タイ
ムライン1412はデュアル読取り/書込みトランザク
ションを示す。タイムライン1413はシフトのあるデ
ュアル読取り/書込みを示す。タイムライン1414は
デュアルシフトのあるダブル書込みを示す。本発明の種
々の実施の形態は、例えばタイムライン1400−14
14で示すような種々の型のメモリ・トランザクション
を用いてスタック・アクセスを行うことができる。
【0062】図15は、システム・スタックに記憶する
文脈データを示すチャートである。ユーザ・スタックは
システム・スタック内に記憶されている情報に影響され
ないので、先行世代のプロセッサとソフトウエアとの互
換性を保ちながら追加の情報をシステム・スタック内に
記憶することができる点が優れている。表7に示す定義
はこの図のフィールドを説明する。
【表7】
【0063】図16は、プロセッサ100を内蔵する集
積回路の概要を示す。図示するように、集積回路は表面
取付け用の複数の接点を含む。しかし、集積回路は他の
形状でもよい。例えば、ゼロ・インサーション・フォー
ス・ソケットに取り付けるため回路の下面に複数のピン
を備えるものや、任意の他の適当な形状でよい。図17
は、統合キーボード12およびディスプレイ14を備え
た移動電話のような移動通信装置でかかる集積回路を実
現する例を示す。図17に示すように、プロセッサ10
0を備えるディジタル装置10は、必要に応じてキーボ
ード・アダプタ(不図示)を介してキーボード12に、
必要に応じてディスプレイ・アダプタ(不図示)を介し
てディスプレイ14に、また、無線周波数(RF)回路
16に接続されている。無線周波数(RF)回路16は
アンテナ18に接続されている。
【0064】データ処理デバイス100の製造は、種々
の量の不純物を半導体基板に注入するステップと不純物
を基板内の選択された深さに拡散させてトランジスタ・
デバイスを形成するステップとの多重ステップを含む。
マスクは、不純物の位置を制御するために形成される。
導電材料および絶縁材料の多重層が堆積されエッチング
されて種々のデバイスを相互に接続する。これらのステ
ップはクリーン・ルーム環境で行われる。
【0065】データ処理デバイスの製造コストのかなり
の部分は試験関係である。ウエハ状態で、個々のデバイ
スをある動作状態にバイアスして、基本的な動作機能性
を試験する。次に、ウエハを個々のダイに分割して、ダ
イのままでまたはパッケージ化して販売する。パッケー
ジ化した後、完成品を動作状態までバイアスして、動作
機能性を試験する。本発明の別の実施の形態は、組合せ
機能のゲート総数を削減するために、ここに開示された
回路を組み合わせた別の回路を含む。ゲート最小化のた
めの技術は当業者には既知であるので、かかる実施の形
態についてはここで説明しない。
【0066】本発明の別の実施の形態は、SPとSSP
を連続したアドレスにマップするメモリ・マップ・レジ
スタ・マッピングを有する。これにより、SPとSSP
を単一アトミック(atomic)転送として保存して、その
間に割込みが起こらないようにすることができる。本発
明の別の実施の形態では、ユーザ・ソフトウエアからS
PとSSPを初期化する前にマスク不可能割込み(NM
I)が起こらないようにする。このためには、まずハー
ドウエアによりSPとSSPを所定の「無意味なアドレ
ス」(例えば「05Fh」)に初期化する。NMIは、
ユーザ・プログラムがSPとSSPの内容を05Fhと
は異なるものに変更した後で初めて行う。
【0067】以上で、高いコード密度とプログラミング
の容易さを兼ね備えたプログラマブル・ディジタル信号
プロセッサ(DSP)であるプロセッサを説明した。構
成と命令集合は、電力消費を低くし、また無線電話や専
用の制御タスクのためのDSPアルゴリズムの実行の効
率を高めるよう、最適化されている。このプロセッサ
は、命令バッファ・ユニットと、命令バッファ・ユニッ
トが復号した命令を実行するデータ計算ユニットを含
む。プログラム・カウンタは下位プログラム・カウンタ
部と上位プログラム・カウンタ部を有し、命令メモリに
与える命令アドレスを出す。第1のスタック・ポインタ
はデータ・メモリ内の第1のスタック領域をアドレス指
定して、マイクロプロセッサが実行する命令(例えばC
ALL命令)に応じて下位プログラム・カウンタ値を保
存する。第2のスタック・ポインタはデータ・メモリ内
の第2のスタック領域をアドレス指定して、CALL命
令の実行に応じて上位プログラム・カウンタ値を保存す
る。これにより、スタックを介して変数を渡す先行世代
のマイクロプロセッサとのソフトウエア・コードの互換
性を保つ。
【0068】ここで用いた「印加する」・「接続する」
・「接続」という用語は電気的に接続することを意味
し、別の要素が電気接続経路内にあって良い。本発明に
ついて例示の実施の形態を参照して説明したが、この説
明を限定的に解釈してはならない。この説明を参照すれ
ば、本発明の他の種々の実施の形態は当業者に明らかで
ある。したがって添付の特許請求の範囲はここに述べた
実施の形態の任意の変更を、本発明の範囲と精神内に含
まれるものとしてカバーする。
【0069】以上の説明に関して更に以下の項を開示す
る。 (1) マイクロプロセッサを含むディジタル装置であ
って、前記マイクロプロセッサは命令メモリから取り出
した命令を復号する命令バッファ・ユニットと、前記命
令バッファ・ユニットが復号した命令を実行するデータ
計算ユニットと、第1のプログラム・カウンタ部と残り
のプログラム・カウンタ部を有し、前記命令メモリに与
える命令アドレスを出す、プログラム・カウンタ回路
と、データ・メモリ内の第1のスタック領域をアドレス
指定して、前記マイクロプロセッサが実行する第1の命
令に応じて前記第1のプログラム・カウンタ部を表す第
1の値を保存する、第1のスタック・ポインタと、前記
データ・メモリ内の第2のスタック領域をアドレス指定
して、前記第1の命令の実行に応じて残りのプログラム
・カウンタ部を表す第2の値を保存する、第2のスタッ
ク・ポインタと、を含む、マイクロプロセッサを含むデ
ィジタル装置。
【0070】(2) 前記データ計算ユニットは、第2
の命令の実行に応じて、前記第1のスタック・ポインタ
に対する第1のスタック・ポインタ相対アドレスを用い
て第1の変数値を前記第1のプログラム・カウンタ値に
隣接して前記第1のスタック領域内に記憶して、前記第
1のスタック・ポインタ相対アドレスが前記第2のスタ
ック領域内に記憶されている前記第2のプログラム・カ
ウンタ値に影響されないようにする、第1項に記載のマ
イクロプロセッサを含むディジタル装置。 (3) 前記命令バッファに接続して複数の命令を保持
する命令メモリと、前記データ計算ユニットに接続して
前記第1のスタック領域と第2のスタック領域を保持す
るデータ・メモリを更に含む、第2項に記載のマイクロ
プロセッサを含むディジタル装置。
【0071】(4) 前記ディジタル装置はセルラ電話
であり、キーボード・アダプタを介して前記プロセッサ
に接続する統合キーボード(12)と、ディスプレイ・
アダプタを介して前記プロセッサに接続するディスプレ
イ(14)と、前記プロセッサに接続する無線周波数
(RF)回路(16)と、前記RF回路に接続するアン
テナ(18)と、を更に含む、第1項に記載のマイクロ
プロセッサを含むディジタル装置。
【0072】(5) ディジタル装置を操作する方法で
あって、プログラム・カウンタに応じてプロセッサ・コ
アに関連する命令メモリから取り出した複数の命令を前
記プロセッサ・コア内で実行し、第1のスタック領域を
形成して、第1のスタック・ポインタを維持することに
より前記プロセッサ・コアに関連するデータ・メモリ内
に複数のデータを保持し、前記データ領域内の前記第1
のスタック領域から離して第2のスタック領域を形成し
て、第2のスタック・ポインタを維持することにより第
2の複数のデータ値を記憶し、前記データ計算ユニット
内で実行する第1の命令に応じて、プログラム・カウン
タの第1の部分を表す第1の値を前記第1のスタック領
域内に記憶し、前記第1の命令の実行に応じて、前記プ
ログラム・カウンタの残りの部分を表す第2の値を前記
第2のスタック領域内に記憶する、ステップを含む、デ
ィジタル装置を操作する方法。
【0073】(6) 第2の命令の実行に応じて、前記
第1のスタック・ポインタに対する第1のスタック・ポ
インタ相対アドレスを用いて第1の引数値を前記第1の
プログラム・カウンタ値に隣接して前記第1のスタック
領域内に記憶して、前記第1のスタック・ポインタ相対
アドレスが前記第2のスタック領域内に記憶されている
前記第2のプログラム・カウンタ値に影響されないよう
にする、第5項に記載のディジタル装置を操作する方
法。 (7) 前記第2の命令の実行に応じて、前記第2のス
タック・ポインタに対する第2のスタック・ポインタ相
対アドレスを用いて文脈データ値を前記第2のプログラ
ム・カウンタ値に隣接して記憶して、前記第1のスタッ
ク・ポインタに対するスタック・ポインタ相対アドレス
が前記第2のスタック領域内に記憶されている前記文脈
データ値に影響されないようにする、第5項に記載のデ
ィジタル装置を操作する方法。
【0074】(8) 割込みの実行に応じて、前記第2
のスタック・ポインタに対する第2のスタック・ポイン
タ相対アドレスを用いて文脈データ値を前記第2のプロ
グラム・カウンタ値に隣接して記憶して、前記第1のス
タック・ポインタに対するスタック・ポインタ相対アド
レスが前記第2のスタック領域内に記憶されている前記
文脈データ値に影響されないようにする、第5項に記載
のディジタル装置を操作する方法。 (9) 第2の命令の実行に応じて、前記第1のスタッ
ク・ポインタに対する第1のスタック・ポインタ相対ア
ドレスを用いて第1の引数値を前記第1のプログラム・
カウンタ値に隣接して前記第1のスタック領域内に記憶
して、前記第1のスタック・ポインタ相対アドレスが前
記第2のスタック領域内に記憶されている前記第2のプ
ログラム・カウンタ値に影響されないようにし、前記第
2の命令の実行に応じて、前記第2のスタック・ポイン
タに対する第2のスタック・ポインタ相対アドレスを用
いて文脈データ値を前記第2のプログラム・カウンタ値
に隣接して記憶して、前記第1のスタック・ポインタに
対するスタック・ポインタ相対アドレスが前記第2のス
タック領域内に記憶されている前記文脈データ値に影響
されないようにし、割込みの実行に応じて、前記第2の
スタック・ポインタに対する第2のスタック・ポインタ
相対アドレスを用いて文脈データ値を前記第2のプログ
ラム・カウンタ値に隣接して記憶して、前記第1のスタ
ック・ポインタに対するスタック・ポインタ相対アドレ
スが前記第2のスタック領域内に記憶されている前記文
脈データ値に影響されないようにする、第5項に記載の
ディジタル装置を操作する方法。 (10) 可変命令長で、コード密度が高く、且つプロ
グラミングが容易なプログラマブル・ディジタル信号プ
ロセッサ(DSP)であるプロセッサ100を提供す
る。構造と命令集合は、無線電話用や制御専用のDSP
アルゴリズムを低い電力消費と高い効率で実行するよう
最適化される。ユーザ・スタック領域910を用いて変
数をサブルーチンに渡し、プログラム・カウンタ100
0の第1の部分を表す値を保持する。システム・スタッ
ク領域911を用いて、プログラム・カウンタ1001
の残りの部分を表す値を保持し、また追加の文脈情報を
保持する。ユーザ・スタック領域とシステム・スタック
領域を独立に管理して、先行世代のプロセッサからのソ
フトウエアがプロセッサ100上で走るように変換す
る。
【図面の簡単な説明】
本発明にかかる特定の実施の形態について、単なる例と
して添付の図面を参照して説明する。同じ参照記号は同
じ部品を指し、別に指定のない限り、各図面は図1のプ
ロセッサに関係する。
【図1】本発明の或る実施の形態にかかる、マイクロプ
ロセッサを含むディジタル装置の略ブロック図。
【図2】図1のプロセッサ・コアの略図。
【図3】プロセッサ・コアの種々の実行ユニットの詳細
な略ブロック図。
【図4】プロセッサの命令バッファ待ち行列および命令
デコーダの略図。
【図5】プロセッサのパイプラインの動作を説明するた
めのプロセッサ・コアの表現。
【図6】メモリ管理ユニットを相互接続したメモリを示
すプロセッサのブロック図。
【図7】プロセッサのプログラム・メモリ空間とデータ
・メモリ空間の統一構造。
【図8】Aは先行世代のマイクロプロセッサに用いられ
るスタック領域の略図。Bは拡張されたプログラム・カ
ウンタを記憶するスタック領域の例を示す略図。
【図9】本発明の諸態様に係る、拡張されたプログラム
・カウンタを記憶する二重スタック領域の略図。
【図10】本発明の諸態様に係る、図1のマイクロプロ
セッサのユーザ・スタック領域とシステム・スタック領
域を示す略図。
【図11】マイクロプロセッサ内のアドレス生成を示す
ブロック図。
【図12】図11のアドレス生成回路の一部の詳細なブ
ロック図。
【図13】デュアル読取りまたは書込みトランザクショ
ンのためにスタック・ポインタとシステム・スタック・
ポインタを2つのデータ・バスに同時に与える回路を示
すブロック図。
【図14】マイクロプロセッサ内のシングルおよびデュ
アル読取りおよび書込みトランザクションを示すタイミ
ングず。
【図15】システム・スタック内に記憶された文脈デー
タを示すチャート。
【図16】プロセッサを組み込んだ集積回路の略図。
【図17】図1のプロセッサを組み込んだ電気通信装置
の略図。
【符号の説明】
100 プロセッサ 910 ユーザ・スタック 911 システム・スタック 1000 プログラム・カウンタ 1001 プログラム・カウンタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ウォルター エイ、ジャクソン アメリカ合衆国 ペンシルバニア、ピッツ バーグ、 ミラー ストリート 1006 (72)発明者 ジャック ロゼンズウェイグ アメリカ合衆国 ペンシルバニア、ピッツ バーグ、 マコン アベニュー 1210

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 マイクロプロセッサを含むディジタル装
    置であって、前記マイクロプロセッサは命令メモリから
    取り出した命令を復号する命令バッファ・ユニットと、 前記命令バッファ・ユニットが復号した命令を実行する
    データ計算ユニットと、 第1のプログラム・カウンタ部と残りのプログラム・カ
    ウンタ部を有し、前記命令メモリに与える命令アドレス
    を出す、プログラム・カウンタ回路と、 データ・メモリ内の第1のスタック領域をアドレス指定
    して、前記マイクロプロセッサが実行する第1の命令に
    応じて前記第1のプログラム・カウンタ部を表す第1の
    値を保存する、第1のスタック・ポインタと、 前記データ・メモリ内の第2のスタック領域をアドレス
    指定して、前記第1の命令の実行に応じて残りのプログ
    ラム・カウンタ部を表す第2の値を保存する、第2のス
    タック・ポインタと、を含む、マイクロプロセッサを含
    むディジタル装置。
  2. 【請求項2】 ディジタル装置を操作する方法であっ
    て、 プログラム・カウンタに応じてプロセッサ・コアに関連
    する命令メモリから取り出した複数の命令を前記プロセ
    ッサ・コア内で実行し、 第1のスタック領域を形成して、第1のスタック・ポイ
    ンタを維持することにより前記プロセッサ・コアに関連
    するデータ・メモリ内に複数のデータを保持し、 前記データ領域内の前記第1のスタック領域から離して
    第2のスタック領域を形成して、第2のスタック・ポイ
    ンタを維持することにより第2の複数のデータ値を記憶
    し、 前記データ計算ユニット内で実行する第1の命令に応じ
    て、プログラム・カウンタの第1の部分を表す第1の値
    を前記第1のスタック領域内に記憶し、 前記第1の命令の実行に応じて、前記プログラム・カウ
    ンタの残りの部分を表す第2の値を前記第2のスタック
    領域内に記憶する、ステップを含む、ディジタル装置を
    操作する方法。
JP2000063229A 1999-03-08 2000-03-08 スタック・ポインタ管理 Abandoned JP2000284966A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP99400556.9 1999-03-08
EP99400556A EP0992897B1 (en) 1998-10-06 1999-03-08 Stack pointer management

Publications (1)

Publication Number Publication Date
JP2000284966A true JP2000284966A (ja) 2000-10-13

Family

ID=8241908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000063229A Abandoned JP2000284966A (ja) 1999-03-08 2000-03-08 スタック・ポインタ管理

Country Status (1)

Country Link
JP (1) JP2000284966A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948000A (zh) * 2021-03-17 2021-06-11 星汉智能科技股份有限公司 栈空间统计方法、装置及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948000A (zh) * 2021-03-17 2021-06-11 星汉智能科技股份有限公司 栈空间统计方法、装置及介质
CN112948000B (zh) * 2021-03-17 2023-03-03 星汉智能科技股份有限公司 栈空间统计方法、装置及介质

Similar Documents

Publication Publication Date Title
US6516408B1 (en) Various length software breakpoint in a delay slot
US6810475B1 (en) Processor with pipeline conflict resolution using distributed arbitration and shadow registers
EP2241968B1 (en) System with wide operand architecture, and method
KR19980018072A (ko) 벡터 레지스터의 복수 뱅크를 사용한 단일 명령 복수 데이터 처리
EP1102163A2 (en) Microprocessor with improved instruction set architecture
US7487338B2 (en) Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
US6453405B1 (en) Microprocessor with non-aligned circular addressing
US6574724B1 (en) Microprocessor with non-aligned scaled and unscaled addressing
EP0992894A1 (en) Apparatus and method for loop execution
US6826679B1 (en) Processor with pointer tracking to eliminate redundant memory fetches
US10303399B2 (en) Data processing apparatus and method for controlling vector memory accesses
EP1053522B1 (en) Microprocessor including multiple register files occupying the same logical space
US6502152B1 (en) Dual interrupt vector mapping
US6598151B1 (en) Stack Pointer Management
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
JP2000259408A (ja) 遅延スロットにおけるソフトウェアブレークポイント
KR19980018065A (ko) 스칼라/벡터 연산이 조합된 단일 명령 복수 데이터 처리
US20190369995A1 (en) Vector generating instruction
US6499098B1 (en) Processor with instruction qualifiers to control MMU operation
US6681319B1 (en) Dual access instruction and compound memory access instruction with compatible address fields
JP4355410B2 (ja) 線形ベクトル計算
JP2000284966A (ja) スタック・ポインタ管理
JP3504355B2 (ja) プロセッサ
US20020087832A1 (en) Instruction fetch apparatus for wide issue processors and method of operation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070308

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20081210